Skip to content

Host support: Amp — native plugin factory, explicit skill registration, and skill-scoped MCP #711

Description

@ScriptedAlchemy

Current disposition — native adapter still required

P2 feature expansion. Reconciled against main b5cf7575e0bcfa6da23e12d2c5628146bdbe5cb1 after #721, #723 and #727. Those PRs deliver portable-client compatibility records, not an Amp adapter. #723 deliberately removed Amp from that table because the owner scoped this issue to a native implementation. Do not add a none-tier Amp record and mark this delivered.

The original research was documentation-only. Subsequent non-account CLI/type validation is recorded in the pinned-contract evidence. It used @ampcode/cli@0.0.1788739286-gf348fe and @ampcode/plugin@0.0.0-20260907001852-gf348fed. This reconciliation reviewed code, discussion and official documentation; it did not rerun those probes.

Owner's verification decision: no Amp account is available. Authenticated model/session execution remains unverified, not unsupported and not a mandatory prerequisite to delivering the documented/type-checked adapter. Do not invent authentication success, a standalone plugin validator, or a completed native tool journey.

Authoritative references

Keep the exact native package versions/revisions associated with each assertion. Live documentation is a source to verify, not an unversioned compatibility guarantee.

Already established; do not repeat as pending research

  • Directory plugins expose index.js/index.ts with a default factory receiving PluginAPI; optional description is a bounded static string. Helpers must not become additional public entries.
  • Project and user plugin locations and project/system/personal/workspace precedence are documented. User paths must honor the configured XDG location, not only a hard-coded home path.
  • Each bundled skill requires explicit registerSkill with a plugin-relative directory and matching frontmatter/directory name. A standalone skills installation is a different, smaller distribution path.
  • Skill MCP uses a flat server map, not an mcpServers wrapper. Frontmatter wins over a sibling mcp.json; direct/CLI configuration can override a same-named skill server.
  • Pinned type validation covered native callback result unions. The recorded Symbol.observable declaration/skipLibCheck caveat and named-handler inference constraint must remain visible in the test evidence.

Correction to the later discussion

The later shorthand that servers load only while a skill is active is too strong. The official skills documentation, rechecked during reconciliation, says MCP connections are established during skill discovery; activation controls visibility of skill-only tools. Do not promise lazy server-process creation from hidden tools. Preserve the original research's distinction and test actual process lifetime when an authenticated environment is available.

Likewise, a data-only registration entry may be emitted without bundling native Amp packages, but that does not exempt authored executable handlers or shared runtime code from the existing compiler/evidence policy. @ampcode/plugin is a types-only dependency in the recorded factory shape; the host supplies the API argument. Do not weaken standalone self-containment or build a second compiler.

Remaining implementation

  • Add the scoped native adapter/capability record and registry wiring using existing application/projection/artifact contracts.
  • Emit one exact native entry with explicit registration for each selected skill. Keep shared authored content once in the composite where the host contract permits it.
  • Define the actual emitted package root and native placement consistently; do not leave an unexplained nested amp-plugin/ copy or derive paths from the caller's cwd.
  • Lower canonical events to supported native callbacks/results. Preserve the distinction between observation, permission, input transformation, synthesized output and requesting another agent turn. A framework no-op must not become automatic permission or continuation.
  • Emit only intentionally bound skill-scoped MCP servers with the native flat shape and documented precedence. Do not register every application server on every skill implicitly.
  • Preserve native trust, disabled state, existing settings and owned-file replacement/removal. No automatic publication of personal/workspace repositories.
  • Distinguish unsupported native events from unverified live execution; do not invent session.end semantics or treat process shutdown as a native event.
  • Keep standalone content-only usage free of unnecessary workers, Flight/state machinery and fake MCP services.

Acceptance and closure

Use the pinned real PluginAPI for generated-entry type tests, the existing compiler/manifest/evidence tests, and deterministic contract fixtures for callback outputs, registered paths, precedence, cancellation and cleanup. An unrelated helper entry must not run; each intended registration occurs once. Test relocation and selected/unselected components without broadening AB4106 globally.

Report separately: documentation evidence, type/fixture proof, non-account CLI operations actually executed, and authenticated cases not executed. Honor the accepted no-account limitation; do not leave the implementation indefinitely blocked on credentials or call a fake-host test native execution.

Update English/Chinese setup and reference output from the existing shared metadata paths. Reuse #651/#652 conformance rather than another client catalog. Local CLI, hosted settings and Orbs have different authorities; do not claim uniform filesystem access.

Non-goals

No agent loop, provider/model management, cloud deployment service, domain database, account provisioning, automatic approval, broad self-containment exception, or reimplementation of the already-landed portable-client records.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions