Add the capability discovery tool with semantic manifest search #27

Closed AtlantisPleb opened this 3d ago 1 comment

Outcome

The coder's standing prompt grows by exactly one tool: capability. Installed plugins are digest-pinned in a local catalog, indexed for semantic search over manifest descriptions, and cost zero prompt bytes until selected. Selection is semantic; invocation is by exact name from the catalog. A search that finds nothing is recorded as a capability gap (feeding the registry's gap loop).

Constraints

  • No keyword routing (workspace invariant); embedding match over typed manifests.
  • Approval keys to the digest and the declared capabilities: no mounts and no hosts can auto-run; read-only mounts ask once; hosts or writes ask every time.
  • Plugin slash commands work without model awareness.

Source

OpenAgentsInc/openagents.com docs 2026-08-24-triage-and-plugin-model-assessment.md section 4.4.

  1. AtlantisPleb opened this issue 3d ago
  2. A AtlantisPleb Author 3d ago

    Shipped on monorepo main in 1b07ec31de. The standing prompt grows by exactly one tool, capability, and installed plugins stay digest-pinned in the local catalog costing zero prompt bytes until a search selects one — pinned by a test that the declared tool set does not grow with catalog size.

    Approval keys to the digest and the declared capabilities rather than to a name: no mounts and no hosts auto-runs; read-only mounts ask once and the answer caches against the digest and the capabilities it was given for; hosts or writable mounts ask every time; and with no approver configured anything impure is refused rather than run. Each tier has a test. A search that finds nothing records a capability gap for the registry's gap loop.

    On selection the workspace invariant held: no keyword routing. No embedding path exists in this package, so the tool returns the typed catalog candidates and their descriptions and lets the model choose rather than dressing a substring match up as semantics — invocation stays exact-name. That is the one part of the contract not yet met as written ('embedding match over typed manifests'), and it needs an embedding path that does not exist here yet; the same gap is recorded on openagents.com#206's index. 810 CLI tests green.

  3. closed this as completed 3d ago
Sign in with GitHub to comment on this issue.