Skip to content

feat(codex): complete plugin manifest metadata contract - #350

Merged
ScriptedAlchemy merged 1 commit into
mainfrom
feat/188-s1-manifest
Sep 3, 2026
Merged

feat(codex): complete plugin manifest metadata contract#350
ScriptedAlchemy merged 1 commit into
mainfrom
feat/188-s1-manifest

Conversation

@ScriptedAlchemy

Copy link
Copy Markdown
Owner

Summary

Slice 1 (PR 1/2) of the #188 Codex parity pass: plugin manifest metadata contract.

  • Authored Codex host config (CodexHostConfig) now supports the documented publisher/discovery metadata in .codex-plugin/plugin.json: author (name required, optional email/url), homepage, repository, license, keywords — validated at plan time with codex.manifest.* dotted diagnostics (each with a recovery hint) and emitted with extension source provenance.
  • plugin.schema.json re-pinned to the full documented package contract: closed author object, HTTP(S)-only URL fields, and the documented component path forms — skills as a ./-relative path, mcpServers as path or inline object, hooks as path / path array / inline hook document / inline-document array, all with parent-segment escape rejection. skills is no longer required (MCP-only plugins are documented as valid). The retired const-locked component pointers and per-relocation validator machinery are recorded as a documented-contract re-pin in PROVENANCE (schemaTightenings), bytes/sha updated.
  • New manifestPackage capability block in codex-0.147.0.json: manifestMetadata supported, manifestPaths degraded (canonical emission, documented union admitted), optionalAssets and submissionPolicy unavailable (portal-owned distribution policy) — all with dated evidence.
  • Unified adapter: manifestMetadata/manifestPaths now intersect Claude + Codex with the Cursor-unavailable overlay.
  • First native Codex proofs (codex-cli 0.147.0, isolated CODEX_HOME): full lifecycle — codex plugin marketplace add on the emitted plugin, codex plugin add --json, codex plugin list --json confirming registration; honestly records that the CLI does not surface the new metadata fields in list output.

Revisions

  • codex adapterRevision 1.2.01.3.0; unified plugin 1.17.01.18.0.

Test plan

  • Scoped suites incl. native proofs (AGENT_BUNDLE_NATIVE_HOST_CONTRACTS=1): 428 tests, 0 failed, 0 skipped (re-run post-rebase over the zod 4.5.4 bump)
  • pnpm -w typecheck
  • pnpm -w lint

Part of #188.

@changeset-bot

changeset-bot Bot commented Sep 3, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 491da37

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
agent-bundle Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 3, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-03T01:16:49.083246Z 491da37 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@ScriptedAlchemy
ScriptedAlchemy merged commit 15a7854 into main Sep 3, 2026
7 of 8 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 491da37a37

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"$id": "https://agent-bundle.dev/schemas/codex/0.147.0/plugin.schema.json",
"$defs": {
"componentPath": {
"pattern": "^\\./(?!(?:.*\\/)?\\.\\.(?:\\/|$)).+",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Reject backslash-based parent traversal in component paths

When validating a manifest that may run on Windows, this pattern only recognizes / as a separator, so paths such as ./foo\..\outside.json pass even though the .. component can resolve outside the plugin root. Normalize backslashes before validation or reject them so the schema enforces its documented plugin-root containment invariant.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed on main in #364 (merge 305161a).

"properties": {
"email": { "format": "email", "type": "string" },
"name": { "minLength": 1, "type": "string" },
"url": { "format": "uri", "pattern": "^https?://", "type": "string" }

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Accept case-insensitive HTTP URL schemes

When authored metadata uses a valid uppercase or mixed-case scheme such as HTTPS://example.com, isAbsoluteUrl accepts it because URL normalizes the protocol, but this case-sensitive schema pattern rejects the emitted manifest and adds a plugin schema error. Make the HTTP(S) check case-insensitive or normalize the value before emission; the same pattern issue affects homepage and repository.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed on main in #364 (merge 305161a).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant