Skip to content

feat(intelligence): capability-delivery manifest — composeCertifiedProfile + resolver + ladder#298

Merged
drewstone merged 1 commit into
mainfrom
feat/capability-delivery-manifest
Jun 14, 2026
Merged

feat(intelligence): capability-delivery manifest — composeCertifiedProfile + resolver + ladder#298
drewstone merged 1 commit into
mainfrom
feat/capability-delivery-manifest

Conversation

@drewstone

Copy link
Copy Markdown
Contributor

What

The unified, future-proof delivery structure for the intelligence plane: one certified unit of agent power = { interface, binding }.

  • Interfaces are CLOSED (tool / mcp / context / retrieval / hook / subagent) — they map slot-for-slot onto AgentProfile + RouterToolsSeam.
  • Bindings are OPEN (inline / file / http / sandbox-code / mcp-stdio / mcp-remote / process-on-infra / rag-index / memory-store / wasm / a2a) — the extension point.
  • A single resolver lowers any binding into one uniform ResolvedSurface, consumed identically by the host seam (in-process ToolSpec + executeToolCall) and the sandbox seam (AgentProfile).

This upgrades delivery from prompt-only (composeCertifiedPrompt folds only prompt-surface+skill into the system prompt) to the entire profile.

Changes

  • src/intelligence/capability.ts — manifest types + CapabilityNotAdmittedError + manifestFromProfile (lowers today's CertifiedProfile wire into capabilities[], so the spine ships value before the plane changes).
  • src/intelligence/resolver.tscomposeCertifiedProfile: resolves inline/file (byte-identical to composeCertifiedPrompt — the regression lock), mcp-stdio/mcp-remote (strict union widens to the SDK's flat AgentProfileMcpServer, an always-valid lowering), http tools (host seam). Ladder rungs that need infra (sandbox-code, process-on-infra) are injected providers; rag-index/memory-store/wasm/a2a throw CapabilityNotAdmittedError (memory gated on the E3 admission bar). Fail-closed: null manifest → base surface; per-capability failure → drop; post-resolve drift drops any tool/mcp whose live names diverge.
  • src/mcp/delegation-profile.tscomposeProductionAgentProfile now also merges tool box-flags, hooks, subagents, and injects mcpConnections (the sandbox-seam mapping).
  • composeCertifiedPrompt is kept unchanged (export gate + migration window); composeCertifiedProfile is additive.
  • exports + verify-package-exports.mjs gate + docs/capability-delivery-manifest.md.

Tests / gates

src/intelligence/capability.test.ts (byte-stable fold, mcp lowering, http exec, drift-drop, fail-closed, manifestFromProfile round-trip, ladder throw-gating). CI is the verification gate on this PR.

Release coupling

Merging this is step 1 of the e2e: publish 0.53.0, then the agent-dev-container plane (feat/capability-manifest-delivery) and the agent-app consumer repin and consume the new surface.

…ofile + resolver + ladder

Add the unified, future-proof delivery structure: one certified unit of agent
power = { interface, binding }. Interfaces are CLOSED (tool / mcp / context /
retrieval / hook / subagent); bindings are OPEN (inline / file / http /
sandbox-code / mcp-stdio / mcp-remote / process-on-infra / rag-index /
memory-store / wasm / a2a). A single resolver lowers any binding into one uniform
ResolvedSurface consumed identically by the host seam (RouterToolsSeam tools +
executeToolCall) and the sandbox seam (AgentProfile).

- src/intelligence/capability.ts: the manifest types + CapabilityNotAdmittedError
  + manifestFromProfile (lowers today's CertifiedProfile wire into capabilities[]
  with best-effort binding inference, so the spine delivers value before the
  plane changes).
- src/intelligence/resolver.ts: composeCertifiedProfile — the spine resolves
  inline/file (byte-identical to composeCertifiedPrompt, the regression lock),
  mcp-stdio/mcp-remote (strict union widens to the SDK's flat
  AgentProfileMcpServer — an always-valid lowering), and http tools (the host
  seam). Ladder rungs that need infra (sandbox-code, process-on-infra) are
  injected ResolveCtx providers; rag-index/memory-store/wasm/a2a throw
  CapabilityNotAdmittedError (memory gated on the E3 admission bar). Fail-closed:
  null manifest -> base surface, per-capability failure -> drop (diagnostic via
  onDrop), post-resolve drift drops any tool/mcp whose live names diverge.
- src/mcp/delegation-profile.ts: composeProductionAgentProfile now also merges
  tools box-flags, hooks, subagents, and injects ResolvedSurface.mcpConnections
  into AgentProfile.mcp (the sandbox-seam mapping).
- exports + export gate + the two spec corrections (mcp lowers via always-valid
  widening; tools lower two ways since AgentProfile.tools is box flags).

@tangletools tangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

✅ Auto-approved PR — f8d91370

Blanket team auto-approval is enabled for this reviewer service.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

tangletools · auto-approval · reason: blanket_auto_approve · 2026-06-14T15:18:58Z

@drewstone drewstone merged commit ac91f4c into main Jun 14, 2026
1 check passed
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.

2 participants