Skip to content

feat(extensions): MCP Client、Plugin 包与受限生命周期 Hooks - #114

Merged
Qiyuanqiii merged 4 commits into
mainfrom
codex/issue-104-extension-runtime
Aug 20, 2026
Merged

Qiyuanqiii merged 4 commits into
mainfrom
codex/issue-104-extension-runtime

Conversation

@Qiyuanqiii

@Qiyuanqiii Qiyuanqiii commented Aug 20, 2026 •

Copy link
Copy Markdown
Member

Closes #104

Summary

  • add a real Go MCP Client for approved stdio and pinned HTTPS Streamable HTTP servers, with discovery, health, reconnect, timeout/cancellation, capability-drift quarantine, and model-visible tool schemas
  • route MCP calls through the existing Tool Gateway, Policy, approval, budget, Run/Surface/Phase/Role checks, untrusted-output sanitization, and durable Supervisor recovery ledger
  • add signed plugin.v1 packages with inert staging, two-stage capability review, pinned HTTPS/Git imports, publisher trust, upgrade/rollback/revoke, audit, and Desktop/CLI/HTTP controls
  • add bounded declarative lifecycle Hooks (deny, narrow, annotate, record) across tool, Run, Session, compaction, Specialist, and checkpoint boundaries
  • add schema v120-v121 extension persistence alongside schema v119 UI Evidence, restart/concurrency fencing, bilingual extension documentation, OpenAPI/TypeScript contracts, and a glass-styled Desktop extension panel

Security boundaries

  • Cyber Surface is excluded.
  • Remote bearer credentials are resolved from the OS credential store and are never persisted or returned by HTTP/Desktop projections.
  • Discovered schemas reject external/dynamic references; remote strings and results are recursively sanitized.
  • Plugin Skills remain inert resources and are never auto-installed, auto-selected, or injected.
  • stdio MCP is an explicit operator-approved Code/Deliver/root + full_access host capability. Its process has a minimal environment and bounded lifecycle, but it is not Docker/OS filesystem isolation.

Conflict reconciliation

  • merge current main at 4fa37c5 without rewriting the PR branch history
  • retain UI Evidence as schema v119, move the MCP client runtime to v120, and move Plugin/Hooks persistence to v121
  • compose Extension and UI Evidence controllers, capabilities, OpenAPI contracts, TypeScript clients, documentation, and downgrade fixtures in the same runtime
  • conflict-resolution merge commit: 8887138

Verification

  • go test -count=1 -timeout 30m ./internal/store (866.350s locally)
  • go test -race -count=1 ./internal/mcp ./internal/plugins ./internal/hooks ./internal/uievidence
  • affected application, toolgateway, domain, store migration, HTTP, Desktop, browser-runtime, and Skill tests
  • go vet ./...
  • go mod tidy -diff
  • npm test (62 files / 269 tests)
  • npm run typecheck
  • npm run build
  • npm audit --audit-level=high (0 vulnerabilities)
  • npm run check:api

CI follow-up

  • use an OS-native absolute stdio fixture path so the credential-argument regression test is portable across Windows and Linux
  • retain the complete uncached go test ./... suite while raising its per-package deadline from 20 to 30 minutes; the migration-heavy Store suite took 988 seconds in one hosted run and exceeded 1,200 seconds in another
  • reconciled head 8887138 passed CI run 32341250820 and Desktop release run 32341250829

@Qiyuanqiii
Qiyuanqiii marked this pull request as ready for review August 20, 2026 06:07
@Qiyuanqiii
Qiyuanqiii merged commit be5e481 into main Aug 20, 2026
9 checks passed
@Qiyuanqiii
Qiyuanqiii deleted the codex/issue-104-extension-runtime branch August 20, 2026 07:15
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.

feat(extensions): MCP Client、Plugin 包与受限生命周期 Hooks

1 participant