Skip to content

Materialize immutable runtime plugin sources for native tasks #1767

Description

@chubes4

Problem

WP Codebox v0.12.7 reaches native Docs Agent execution but the Playground contains only WP Codebox. The canonical Agents API importer is unavailable, and no OpenAI provider or PHP AI Client overlay is mounted.

Evidence: https://github.com/Automattic/build-with-wordpress/actions/runs/29299109269

WP Codebox already supports local component_contracts, provider plugin paths, and runtime overlays. The reusable workflow cannot currently materialize those dependencies from immutable public repositories.

Required generic contract

  • Add trusted runtime_sources descriptors for immutable public repository sources.
  • Support lowering sources into existing component contract, provider plugin, and bundled-library overlay primitives.
  • Require full commit SHAs, trusted repository/path policy, checkout SHA verification, path containment, and optional content digests.
  • Materialize outside the target workspace and expose dependencies only through declared read-only runtime mounts.
  • Keep secret names separate from source descriptors and never persist values.

Docs Agent runtime closure

  • Automattic/agents-api v0.5.1 commit 59d1e6b473f22498e40e279130bbb4f9bcde3b73 as an MU plugin.
  • WordPress/ai-provider-for-openai 1.0.3 commit a400c158707e3d0b6fcd0f1502f6aa1085b01b9b as an activated provider plugin.
  • WordPress/php-ai-client 1.3.1 commit 631704201d15ffeff7091ad3bc7156db74054956 as a wordpress-scoped bundled-library overlay.
  • OPENAI_API_KEY remains a secret name only.

Acceptance criteria

  • Playground integration proves wp_agent_import_runtime_bundles() exists.
  • OpenAI is registered in the PHP AI Client provider registry.
  • A standalone native agent package imports and selects its exact slug.
  • Source branches/tags, unauthorized repositories/paths, traversal, and digest mismatch fail closed.
  • Target workspace cannot mutate runtime sources.
  • No source or credential values leak into artifacts.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions