Skip to content

Read connector declarations from executor plugins - #29852

Merged
jif-oai merged 7 commits into
mainfrom
jif/executor-plugin-connectors
Jun 24, 2026
Merged

Read connector declarations from executor plugins#29852
jif-oai merged 7 commits into
mainfrom
jif/executor-plugin-connectors

Conversation

@jif-oai

@jif-oai jif-oai commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Why

Selected capability roots can live on a different executor and operating system from app-server. Their connector declarations must therefore be read through the executor that owns the package, without converting executor URIs into host paths.

This PR adds that authority-bound reader without activating connectors or changing thread startup.

What changed

  • Add a small codex-connectors-extension crate for executor-owned connector I/O.
  • Read only the app configuration explicitly declared by the resolved plugin manifest.
  • Read through the ExecutorFileSystem retained by ResolvedExecutorPlugin; there is no host-filesystem fallback or default-file probe.
  • Keep PathUri values intact so Windows, Unix, and remote executor paths work from any orchestrator OS.
  • Return full AppDeclaration values so the caller retains declaration names and categories for routing.
  • Preserve the selected plugin ID and exact executor URI in read and parse errors.

The contract is intentionally narrow: selected packages are trusted, valid packages and packages that provide connectors explicitly declare their app configuration.

Stack scope

This PR is stacked on #29851. It only provides the executor-backed reader. #29856 resolves selected roots at thread start, freezes their connector snapshot, and contains the remote-capable end-to-end authority test for the complete path.

@jif-oai
jif-oai force-pushed the jif/executor-plugin-connectors branch from b3fba7f to 5dd62a5 Compare June 24, 2026 13:33
@jif-oai
jif-oai force-pushed the jif/executor-plugin-connectors branch from 5dd62a5 to d0547f0 Compare June 24, 2026 15:02
jif-oai added a commit that referenced this pull request Jun 24, 2026
## Why

Connector declarations currently enter Codex through broad plugin
capability summaries, then MCP setup, turn tooling, and `app/list` each
reconstruct the same information. That makes executor-selected
connectors difficult to add without coupling connector behavior to the
host plugin loader.

This PR introduces a small connector-owned value that later stack layers
can populate before thread startup.

## What changed

- Move the pure app-declaration parser into `codex-connectors`,
preserving declaration order and category cleanup while leaving
host-side validation and deduplication unchanged.
- Add an immutable `ConnectorSnapshot` with ordered connector IDs and
plugin display-name provenance.
- Adapt the existing local-plugin capability summaries into that
snapshot at current consumer boundaries.
- Use the snapshot for MCP tool provenance, turn connector inventory,
and `app/list`.
- Keep the crate API narrow: no test-only snapshot accessors are
exposed.

The externally visible behavior is unchanged. Connector tools still come
from the orchestrator-owned `/ps/mcp` server, and local plugin
enablement remains owned by the existing plugin loader.

## Stack scope

This is the foundation only. It does not read selected executor packages
or change thread startup. #29852 adds the executor-backed declaration
reader, and #29856 composes selected declarations into a thread
snapshot.
Base automatically changed from jif/connector-service-foundation to main June 24, 2026 22:24
@jif-oai
jif-oai requested a review from a team as a code owner June 24, 2026 22:24
@jif-oai
jif-oai merged commit 9ff8068 into main Jun 24, 2026
45 checks passed
@jif-oai
jif-oai deleted the jif/executor-plugin-connectors branch June 24, 2026 22:56
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 24, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants