@canonical/pragma-cli 0.34.0 → 0.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +153 -30
- package/bundled-skills/add-standard/SKILL.md +338 -0
- package/bundled-skills/adoption-a1-styles/SKILL.md +269 -0
- package/bundled-skills/adoption-a2-components/SKILL.md +291 -0
- package/bundled-skills/adoption-a3-forms/SKILL.md +260 -0
- package/bundled-skills/anatomy-author/ANATOMY_DSL_SPEC.md +406 -0
- package/bundled-skills/anatomy-author/SKILL.md +1226 -0
- package/bundled-skills/design-auditor/SKILL.md +455 -0
- package/bundled-skills/implement-component/SKILL.md +333 -0
- package/bundled-skills/specify-component/SKILL.md +331 -0
- package/bundled-skills/specify-pattern/SKILL.md +292 -0
- package/dist/.build-ok +0 -0
- package/dist/package.json +84 -0
- package/dist/pragma.conf.js +1016 -0
- package/dist/pragma.conf.js.map +1 -0
- package/dist/src/bin.js +356 -0
- package/dist/src/bin.js.map +1 -0
- package/dist/src/capabilities/capabilities/capabilities.render.js +70 -0
- package/dist/src/capabilities/capabilities/capabilities.render.js.map +1 -0
- package/dist/src/capabilities/capabilities/capabilities.verb.js +59 -0
- package/dist/src/capabilities/capabilities/capabilities.verb.js.map +1 -0
- package/dist/src/capabilities/capabilities/catalog.js +130 -0
- package/dist/src/capabilities/capabilities/catalog.js.map +1 -0
- package/dist/src/capabilities/capabilities/hints.js +195 -0
- package/dist/src/capabilities/capabilities/hints.js.map +1 -0
- package/dist/src/capabilities/capabilities/index.js +11 -0
- package/dist/src/capabilities/capabilities/index.js.map +1 -0
- package/dist/src/capabilities/capabilities/types.js +11 -0
- package/dist/src/capabilities/capabilities/types.js.map +1 -0
- package/dist/src/capabilities/colophon/collectColophon.js +83 -0
- package/dist/src/capabilities/colophon/collectColophon.js.map +1 -0
- package/dist/src/capabilities/colophon/colophon.render.js +59 -0
- package/dist/src/capabilities/colophon/colophon.render.js.map +1 -0
- package/dist/src/capabilities/colophon/colophon.verb.js +43 -0
- package/dist/src/capabilities/colophon/colophon.verb.js.map +1 -0
- package/dist/src/capabilities/colophon/index.js +5 -0
- package/dist/src/capabilities/colophon/index.js.map +1 -0
- package/dist/src/capabilities/colophon/markdownTerminal.js +90 -0
- package/dist/src/capabilities/colophon/markdownTerminal.js.map +1 -0
- package/dist/src/capabilities/colophon/types.js +10 -0
- package/dist/src/capabilities/colophon/types.js.map +1 -0
- package/dist/src/capabilities/config/collectConfigShow.js +59 -0
- package/dist/src/capabilities/config/collectConfigShow.js.map +1 -0
- package/dist/src/capabilities/config/field.render.js +22 -0
- package/dist/src/capabilities/config/field.render.js.map +1 -0
- package/dist/src/capabilities/config/fields.js +46 -0
- package/dist/src/capabilities/config/fields.js.map +1 -0
- package/dist/src/capabilities/config/get.verb.js +61 -0
- package/dist/src/capabilities/config/get.verb.js.map +1 -0
- package/dist/src/capabilities/config/index.js +5 -0
- package/dist/src/capabilities/config/index.js.map +1 -0
- package/dist/src/capabilities/config/runField.js +59 -0
- package/dist/src/capabilities/config/runField.js.map +1 -0
- package/dist/src/capabilities/config/runGet.js +28 -0
- package/dist/src/capabilities/config/runGet.js.map +1 -0
- package/dist/src/capabilities/config/runSet.js +53 -0
- package/dist/src/capabilities/config/runSet.js.map +1 -0
- package/dist/src/capabilities/config/set.verb.js +66 -0
- package/dist/src/capabilities/config/set.verb.js.map +1 -0
- package/dist/src/capabilities/config/show.render.js +84 -0
- package/dist/src/capabilities/config/show.render.js.map +1 -0
- package/dist/src/capabilities/config/show.verb.js +44 -0
- package/dist/src/capabilities/config/show.verb.js.map +1 -0
- package/dist/src/capabilities/config/types.js +5 -0
- package/dist/src/capabilities/config/types.js.map +1 -0
- package/dist/src/capabilities/config/unset.verb.js +49 -0
- package/dist/src/capabilities/config/unset.verb.js.map +1 -0
- package/dist/src/capabilities/create/cliProjection.js +195 -0
- package/dist/src/capabilities/create/cliProjection.js.map +1 -0
- package/dist/src/capabilities/create/constants.js +47 -0
- package/dist/src/capabilities/create/constants.js.map +1 -0
- package/dist/src/capabilities/create/create.render.js +100 -0
- package/dist/src/capabilities/create/create.render.js.map +1 -0
- package/dist/src/capabilities/create/create.verb.js +438 -0
- package/dist/src/capabilities/create/create.verb.js.map +1 -0
- package/dist/src/capabilities/create/createHelp.js +47 -0
- package/dist/src/capabilities/create/createHelp.js.map +1 -0
- package/dist/src/capabilities/create/createSurface.generated.js +394 -0
- package/dist/src/capabilities/create/createSurface.generated.js.map +1 -0
- package/dist/src/capabilities/create/generatorToVerbSpec.js +106 -0
- package/dist/src/capabilities/create/generatorToVerbSpec.js.map +1 -0
- package/dist/src/capabilities/create/index.js +18 -0
- package/dist/src/capabilities/create/index.js.map +1 -0
- package/dist/src/capabilities/create/messages.js +16 -0
- package/dist/src/capabilities/create/messages.js.map +1 -0
- package/dist/src/capabilities/create/mount.js +294 -0
- package/dist/src/capabilities/create/mount.js.map +1 -0
- package/dist/src/capabilities/create/pathJail.js +65 -0
- package/dist/src/capabilities/create/pathJail.js.map +1 -0
- package/dist/src/capabilities/create/pickGenerator.js +53 -0
- package/dist/src/capabilities/create/pickGenerator.js.map +1 -0
- package/dist/src/capabilities/create/types.js +2 -0
- package/dist/src/capabilities/create/types.js.map +1 -0
- package/dist/src/capabilities/distribution.js +40 -0
- package/dist/src/capabilities/distribution.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkKeStore.js +40 -0
- package/dist/src/capabilities/doctor/checks/checkKeStore.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkNodeVersion.js +21 -0
- package/dist/src/capabilities/doctor/checks/checkNodeVersion.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkPackageRefs.js +148 -0
- package/dist/src/capabilities/doctor/checks/checkPackageRefs.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkPragmaVersion.js +19 -0
- package/dist/src/capabilities/doctor/checks/checkPragmaVersion.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkShellCompletions.js +199 -0
- package/dist/src/capabilities/doctor/checks/checkShellCompletions.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/harnessInventory.js +195 -0
- package/dist/src/capabilities/doctor/checks/harnessInventory.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/index.js +27 -0
- package/dist/src/capabilities/doctor/checks/index.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/mcpCommand.js +57 -0
- package/dist/src/capabilities/doctor/checks/mcpCommand.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/targetHealth.js +349 -0
- package/dist/src/capabilities/doctor/checks/targetHealth.js.map +1 -0
- package/dist/src/capabilities/doctor/doctor.render.js +164 -0
- package/dist/src/capabilities/doctor/doctor.render.js.map +1 -0
- package/dist/src/capabilities/doctor/doctor.verb.js +49 -0
- package/dist/src/capabilities/doctor/doctor.verb.js.map +1 -0
- package/dist/src/capabilities/doctor/index.js +5 -0
- package/dist/src/capabilities/doctor/index.js.map +1 -0
- package/dist/src/capabilities/doctor/runChecks.js +86 -0
- package/dist/src/capabilities/doctor/runChecks.js.map +1 -0
- package/dist/src/capabilities/doctor/types.js +5 -0
- package/dist/src/capabilities/doctor/types.js.map +1 -0
- package/dist/src/capabilities/graph/index.js +19 -0
- package/dist/src/capabilities/graph/index.js.map +1 -0
- package/dist/src/capabilities/graph/inspect.render.js +76 -0
- package/dist/src/capabilities/graph/inspect.render.js.map +1 -0
- package/dist/src/capabilities/graph/inspect.verb.js +53 -0
- package/dist/src/capabilities/graph/inspect.verb.js.map +1 -0
- package/dist/src/capabilities/graph/query.render.js +73 -0
- package/dist/src/capabilities/graph/query.render.js.map +1 -0
- package/dist/src/capabilities/graph/query.verb.js +49 -0
- package/dist/src/capabilities/graph/query.verb.js.map +1 -0
- package/dist/src/capabilities/graph/runQuery.js +41 -0
- package/dist/src/capabilities/graph/runQuery.js.map +1 -0
- package/dist/src/capabilities/index.js +56 -0
- package/dist/src/capabilities/index.js.map +1 -0
- package/dist/src/capabilities/info/collectInfo.js +72 -0
- package/dist/src/capabilities/info/collectInfo.js.map +1 -0
- package/dist/src/capabilities/info/index.js +5 -0
- package/dist/src/capabilities/info/index.js.map +1 -0
- package/dist/src/capabilities/info/info.render.js +57 -0
- package/dist/src/capabilities/info/info.render.js.map +1 -0
- package/dist/src/capabilities/info/info.verb.js +42 -0
- package/dist/src/capabilities/info/info.verb.js.map +1 -0
- package/dist/src/capabilities/info/types.js +5 -0
- package/dist/src/capabilities/info/types.js.map +1 -0
- package/dist/src/capabilities/meta/complete.verb.js +43 -0
- package/dist/src/capabilities/meta/complete.verb.js.map +1 -0
- package/dist/src/capabilities/meta/index.js +13 -0
- package/dist/src/capabilities/meta/index.js.map +1 -0
- package/dist/src/capabilities/meta/mcp.verb.js +34 -0
- package/dist/src/capabilities/meta/mcp.verb.js.map +1 -0
- package/dist/src/capabilities/ontology/index.js +21 -0
- package/dist/src/capabilities/ontology/index.js.map +1 -0
- package/dist/src/capabilities/ontology/queries.js +123 -0
- package/dist/src/capabilities/ontology/queries.js.map +1 -0
- package/dist/src/capabilities/ontology/render.js +66 -0
- package/dist/src/capabilities/ontology/render.js.map +1 -0
- package/dist/src/capabilities/ontology/verbs.js +181 -0
- package/dist/src/capabilities/ontology/verbs.js.map +1 -0
- package/dist/src/capabilities/prompt/index.js +16 -0
- package/dist/src/capabilities/prompt/index.js.map +1 -0
- package/dist/src/capabilities/prompt/prompt.render.js +78 -0
- package/dist/src/capabilities/prompt/prompt.render.js.map +1 -0
- package/dist/src/capabilities/prompt/types.js +10 -0
- package/dist/src/capabilities/prompt/types.js.map +1 -0
- package/dist/src/capabilities/prompt/verbs.js +93 -0
- package/dist/src/capabilities/prompt/verbs.js.map +1 -0
- package/dist/src/capabilities/resources/index.js +10 -0
- package/dist/src/capabilities/resources/index.js.map +1 -0
- package/dist/src/capabilities/resources/provider.js +423 -0
- package/dist/src/capabilities/resources/provider.js.map +1 -0
- package/dist/src/capabilities/setup/buildPlan.js +172 -0
- package/dist/src/capabilities/setup/buildPlan.js.map +1 -0
- package/dist/src/capabilities/setup/index.js +5 -0
- package/dist/src/capabilities/setup/index.js.map +1 -0
- package/dist/src/capabilities/setup/mode.js +53 -0
- package/dist/src/capabilities/setup/mode.js.map +1 -0
- package/dist/src/capabilities/setup/operations/index.js +39 -0
- package/dist/src/capabilities/setup/operations/index.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupCompletions.js +160 -0
- package/dist/src/capabilities/setup/operations/setupCompletions.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupConfig.js +101 -0
- package/dist/src/capabilities/setup/operations/setupConfig.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupGenerator.js +390 -0
- package/dist/src/capabilities/setup/operations/setupGenerator.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupLsp.js +329 -0
- package/dist/src/capabilities/setup/operations/setupLsp.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupMcp.js +253 -0
- package/dist/src/capabilities/setup/operations/setupMcp.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupSkills.js +594 -0
- package/dist/src/capabilities/setup/operations/setupSkills.js.map +1 -0
- package/dist/src/capabilities/setup/plan.js +128 -0
- package/dist/src/capabilities/setup/plan.js.map +1 -0
- package/dist/src/capabilities/setup/plan.render.js +271 -0
- package/dist/src/capabilities/setup/plan.render.js.map +1 -0
- package/dist/src/capabilities/setup/setup.render.js +54 -0
- package/dist/src/capabilities/setup/setup.render.js.map +1 -0
- package/dist/src/capabilities/setup/setup.verb.js +387 -0
- package/dist/src/capabilities/setup/setup.verb.js.map +1 -0
- package/dist/src/capabilities/setup/shell.js +196 -0
- package/dist/src/capabilities/setup/shell.js.map +1 -0
- package/dist/src/capabilities/setup/targets.js +328 -0
- package/dist/src/capabilities/setup/targets.js.map +1 -0
- package/dist/src/capabilities/setup/types.js +5 -0
- package/dist/src/capabilities/setup/types.js.map +1 -0
- package/dist/src/capabilities/shared/assertExecOk.js +137 -0
- package/dist/src/capabilities/shared/assertExecOk.js.map +1 -0
- package/dist/src/capabilities/shared/index.js +27 -0
- package/dist/src/capabilities/shared/index.js.map +1 -0
- package/dist/src/capabilities/shared/packageManager.js +349 -0
- package/dist/src/capabilities/shared/packageManager.js.map +1 -0
- package/dist/src/capabilities/shared/registry.js +55 -0
- package/dist/src/capabilities/shared/registry.js.map +1 -0
- package/dist/src/capabilities/skill/discover.js +281 -0
- package/dist/src/capabilities/skill/discover.js.map +1 -0
- package/dist/src/capabilities/skill/index.js +10 -0
- package/dist/src/capabilities/skill/index.js.map +1 -0
- package/dist/src/capabilities/skill/render.js +49 -0
- package/dist/src/capabilities/skill/render.js.map +1 -0
- package/dist/src/capabilities/skill/verbs.js +83 -0
- package/dist/src/capabilities/skill/verbs.js.map +1 -0
- package/dist/src/capabilities/sources/collectStatus.js +103 -0
- package/dist/src/capabilities/sources/collectStatus.js.map +1 -0
- package/dist/src/capabilities/sources/index.js +13 -0
- package/dist/src/capabilities/sources/index.js.map +1 -0
- package/dist/src/capabilities/sources/installSkills.js +309 -0
- package/dist/src/capabilities/sources/installSkills.js.map +1 -0
- package/dist/src/capabilities/sources/runUpdate.js +460 -0
- package/dist/src/capabilities/sources/runUpdate.js.map +1 -0
- package/dist/src/capabilities/sources/status.render.js +64 -0
- package/dist/src/capabilities/sources/status.render.js.map +1 -0
- package/dist/src/capabilities/sources/status.verb.js +40 -0
- package/dist/src/capabilities/sources/status.verb.js.map +1 -0
- package/dist/src/capabilities/sources/types.js +6 -0
- package/dist/src/capabilities/sources/types.js.map +1 -0
- package/dist/src/capabilities/sources/update.render.js +34 -0
- package/dist/src/capabilities/sources/update.render.js.map +1 -0
- package/dist/src/capabilities/sources/update.verb.js +55 -0
- package/dist/src/capabilities/sources/update.verb.js.map +1 -0
- package/dist/src/capabilities/upgrade/index.js +5 -0
- package/dist/src/capabilities/upgrade/index.js.map +1 -0
- package/dist/src/capabilities/upgrade/runUpgrade.js +135 -0
- package/dist/src/capabilities/upgrade/runUpgrade.js.map +1 -0
- package/dist/src/capabilities/upgrade/types.js +5 -0
- package/dist/src/capabilities/upgrade/types.js.map +1 -0
- package/dist/src/capabilities/upgrade/upgrade.render.js +52 -0
- package/dist/src/capabilities/upgrade/upgrade.render.js.map +1 -0
- package/dist/src/capabilities/upgrade/upgrade.verb.js +52 -0
- package/dist/src/capabilities/upgrade/upgrade.verb.js.map +1 -0
- package/dist/src/capabilities/version/index.js +10 -0
- package/dist/src/capabilities/version/index.js.map +1 -0
- package/dist/src/capabilities/version/version.verb.js +36 -0
- package/dist/src/capabilities/version/version.verb.js.map +1 -0
- package/dist/src/constants.js +87 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/index.js +12 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/kernel/completion/complete.js +66 -0
- package/dist/src/kernel/completion/complete.js.map +1 -0
- package/dist/src/kernel/completion/emitScripts.js +92 -0
- package/dist/src/kernel/completion/emitScripts.js.map +1 -0
- package/dist/src/kernel/completion/entitySource.js +285 -0
- package/dist/src/kernel/completion/entitySource.js.map +1 -0
- package/dist/src/kernel/completion/index.js +14 -0
- package/dist/src/kernel/completion/index.js.map +1 -0
- package/dist/src/kernel/completion/model.js +301 -0
- package/dist/src/kernel/completion/model.js.map +1 -0
- package/dist/src/kernel/completion/parse.js +253 -0
- package/dist/src/kernel/completion/parse.js.map +1 -0
- package/dist/src/kernel/completion/rank.js +101 -0
- package/dist/src/kernel/completion/rank.js.map +1 -0
- package/dist/src/kernel/completion/resolve.js +100 -0
- package/dist/src/kernel/completion/resolve.js.map +1 -0
- package/dist/src/kernel/completion/templates/bash.js +209 -0
- package/dist/src/kernel/completion/templates/bash.js.map +1 -0
- package/dist/src/kernel/completion/templates/fish.js +214 -0
- package/dist/src/kernel/completion/templates/fish.js.map +1 -0
- package/dist/src/kernel/completion/templates/index.js +23 -0
- package/dist/src/kernel/completion/templates/index.js.map +1 -0
- package/dist/src/kernel/completion/templates/shared.js +98 -0
- package/dist/src/kernel/completion/templates/shared.js.map +1 -0
- package/dist/src/kernel/completion/templates/zsh.js +201 -0
- package/dist/src/kernel/completion/templates/zsh.js.map +1 -0
- package/dist/src/kernel/completion/types.js +13 -0
- package/dist/src/kernel/completion/types.js.map +1 -0
- package/dist/src/kernel/config/defaults.js +17 -0
- package/dist/src/kernel/config/defaults.js.map +1 -0
- package/dist/src/kernel/config/evaluateProjectConfig.js +126 -0
- package/dist/src/kernel/config/evaluateProjectConfig.js.map +1 -0
- package/dist/src/kernel/config/findProjectConfig.js +43 -0
- package/dist/src/kernel/config/findProjectConfig.js.map +1 -0
- package/dist/src/kernel/config/firstRun.js +34 -0
- package/dist/src/kernel/config/firstRun.js.map +1 -0
- package/dist/src/kernel/config/globalConfig.js +79 -0
- package/dist/src/kernel/config/globalConfig.js.map +1 -0
- package/dist/src/kernel/config/index.js +16 -0
- package/dist/src/kernel/config/index.js.map +1 -0
- package/dist/src/kernel/config/paths.js +35 -0
- package/dist/src/kernel/config/paths.js.map +1 -0
- package/dist/src/kernel/config/readConfig.js +78 -0
- package/dist/src/kernel/config/readConfig.js.map +1 -0
- package/dist/src/kernel/config/schema.js +130 -0
- package/dist/src/kernel/config/schema.js.map +1 -0
- package/dist/src/kernel/config/types.js +19 -0
- package/dist/src/kernel/config/types.js.map +1 -0
- package/dist/src/kernel/config/writeConfigField.js +59 -0
- package/dist/src/kernel/config/writeConfigField.js.map +1 -0
- package/dist/src/kernel/copy.js +43 -0
- package/dist/src/kernel/copy.js.map +1 -0
- package/dist/src/kernel/error/PragmaError.js +149 -0
- package/dist/src/kernel/error/PragmaError.js.map +1 -0
- package/dist/src/kernel/error/constants.js +40 -0
- package/dist/src/kernel/error/constants.js.map +1 -0
- package/dist/src/kernel/error/fromTaskError.js +96 -0
- package/dist/src/kernel/error/fromTaskError.js.map +1 -0
- package/dist/src/kernel/error/index.js +13 -0
- package/dist/src/kernel/error/index.js.map +1 -0
- package/dist/src/kernel/error/recovery.js +52 -0
- package/dist/src/kernel/error/recovery.js.map +1 -0
- package/dist/src/kernel/error/renderError.js +115 -0
- package/dist/src/kernel/error/renderError.js.map +1 -0
- package/dist/src/kernel/error/serialize.js +25 -0
- package/dist/src/kernel/error/serialize.js.map +1 -0
- package/dist/src/kernel/error/types.js +9 -0
- package/dist/src/kernel/error/types.js.map +1 -0
- package/dist/src/kernel/index.js +34 -0
- package/dist/src/kernel/index.js.map +1 -0
- package/dist/src/kernel/interactivity.js +68 -0
- package/dist/src/kernel/interactivity.js.map +1 -0
- package/dist/src/kernel/packs/collect.js +187 -0
- package/dist/src/kernel/packs/collect.js.map +1 -0
- package/dist/src/kernel/packs/compile.js +304 -0
- package/dist/src/kernel/packs/compile.js.map +1 -0
- package/dist/src/kernel/packs/disclosure.js +76 -0
- package/dist/src/kernel/packs/disclosure.js.map +1 -0
- package/dist/src/kernel/packs/glob.js +38 -0
- package/dist/src/kernel/packs/glob.js.map +1 -0
- package/dist/src/kernel/packs/graphql/buildLookupDocument.js +258 -0
- package/dist/src/kernel/packs/graphql/buildLookupDocument.js.map +1 -0
- package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js +157 -0
- package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js.map +1 -0
- package/dist/src/kernel/packs/graphql/index.js +20 -0
- package/dist/src/kernel/packs/graphql/index.js.map +1 -0
- package/dist/src/kernel/packs/graphql/nameMap.js +63 -0
- package/dist/src/kernel/packs/graphql/nameMap.js.map +1 -0
- package/dist/src/kernel/packs/index.js +34 -0
- package/dist/src/kernel/packs/index.js.map +1 -0
- package/dist/src/kernel/packs/iri.js +110 -0
- package/dist/src/kernel/packs/iri.js.map +1 -0
- package/dist/src/kernel/packs/renderPack.js +129 -0
- package/dist/src/kernel/packs/renderPack.js.map +1 -0
- package/dist/src/kernel/packs/resolveEntity.js +274 -0
- package/dist/src/kernel/packs/resolveEntity.js.map +1 -0
- package/dist/src/kernel/packs/runBodies.js +140 -0
- package/dist/src/kernel/packs/runBodies.js.map +1 -0
- package/dist/src/kernel/packs/sample.js +56 -0
- package/dist/src/kernel/packs/sample.js.map +1 -0
- package/dist/src/kernel/packs/schema.js +421 -0
- package/dist/src/kernel/packs/schema.js.map +1 -0
- package/dist/src/kernel/packs/sparql/applyFilters.js +167 -0
- package/dist/src/kernel/packs/sparql/applyFilters.js.map +1 -0
- package/dist/src/kernel/packs/sparql/applySearch.js +25 -0
- package/dist/src/kernel/packs/sparql/applySearch.js.map +1 -0
- package/dist/src/kernel/packs/sparql/buildLookupQuery.js +480 -0
- package/dist/src/kernel/packs/sparql/buildLookupQuery.js.map +1 -0
- package/dist/src/kernel/packs/sparql/escape.js +21 -0
- package/dist/src/kernel/packs/sparql/escape.js.map +1 -0
- package/dist/src/kernel/packs/sparql/index.js +31 -0
- package/dist/src/kernel/packs/sparql/index.js.map +1 -0
- package/dist/src/kernel/packs/sparql/runSelect.js +101 -0
- package/dist/src/kernel/packs/sparql/runSelect.js.map +1 -0
- package/dist/src/kernel/packs/types.js +30 -0
- package/dist/src/kernel/packs/types.js.map +1 -0
- package/dist/src/kernel/packs/uniqueness.js +30 -0
- package/dist/src/kernel/packs/uniqueness.js.map +1 -0
- package/dist/src/kernel/project/cli/buildProgram.js +263 -0
- package/dist/src/kernel/project/cli/buildProgram.js.map +1 -0
- package/dist/src/kernel/project/cli/constants.js +27 -0
- package/dist/src/kernel/project/cli/constants.js.map +1 -0
- package/dist/src/kernel/project/cli/dispatch.js +420 -0
- package/dist/src/kernel/project/cli/dispatch.js.map +1 -0
- package/dist/src/kernel/project/cli/exitCodes.js +66 -0
- package/dist/src/kernel/project/cli/exitCodes.js.map +1 -0
- package/dist/src/kernel/project/cli/globalFlags.js +219 -0
- package/dist/src/kernel/project/cli/globalFlags.js.map +1 -0
- package/dist/src/kernel/project/cli/helpFormat.js +58 -0
- package/dist/src/kernel/project/cli/helpFormat.js.map +1 -0
- package/dist/src/kernel/project/cli/index.js +14 -0
- package/dist/src/kernel/project/cli/index.js.map +1 -0
- package/dist/src/kernel/project/cli/rootHelp.js +227 -0
- package/dist/src/kernel/project/cli/rootHelp.js.map +1 -0
- package/dist/src/kernel/project/cli/suggest.js +75 -0
- package/dist/src/kernel/project/cli/suggest.js.map +1 -0
- package/dist/src/kernel/project/cli/suggestNames.js +96 -0
- package/dist/src/kernel/project/cli/suggestNames.js.map +1 -0
- package/dist/src/kernel/project/cli/verbHelp.js +131 -0
- package/dist/src/kernel/project/cli/verbHelp.js.map +1 -0
- package/dist/src/kernel/project/mcp/buildServer.js +67 -0
- package/dist/src/kernel/project/mcp/buildServer.js.map +1 -0
- package/dist/src/kernel/project/mcp/envelope.js +37 -0
- package/dist/src/kernel/project/mcp/envelope.js.map +1 -0
- package/dist/src/kernel/project/mcp/index.js +8 -0
- package/dist/src/kernel/project/mcp/index.js.map +1 -0
- package/dist/src/kernel/project/mcp/instructions.js +44 -0
- package/dist/src/kernel/project/mcp/instructions.js.map +1 -0
- package/dist/src/kernel/project/mcp/mcpError.js +42 -0
- package/dist/src/kernel/project/mcp/mcpError.js.map +1 -0
- package/dist/src/kernel/project/mcp/prompts/index.js +36 -0
- package/dist/src/kernel/project/mcp/prompts/index.js.map +1 -0
- package/dist/src/kernel/project/mcp/prompts/provider.js +98 -0
- package/dist/src/kernel/project/mcp/prompts/provider.js.map +1 -0
- package/dist/src/kernel/project/mcp/prompts/source.js +154 -0
- package/dist/src/kernel/project/mcp/prompts/source.js.map +1 -0
- package/dist/src/kernel/project/mcp/registerVerb.js +315 -0
- package/dist/src/kernel/project/mcp/registerVerb.js.map +1 -0
- package/dist/src/kernel/project/mcp/serve.js +35 -0
- package/dist/src/kernel/project/mcp/serve.js.map +1 -0
- package/dist/src/kernel/render/compactUri.js +24 -0
- package/dist/src/kernel/render/compactUri.js.map +1 -0
- package/dist/src/kernel/render/contracts.js +10 -0
- package/dist/src/kernel/render/contracts.js.map +1 -0
- package/dist/src/kernel/render/disclosure.js +34 -0
- package/dist/src/kernel/render/disclosure.js.map +1 -0
- package/dist/src/kernel/render/envelope.js +30 -0
- package/dist/src/kernel/render/envelope.js.map +1 -0
- package/dist/src/kernel/render/formatters.js +27 -0
- package/dist/src/kernel/render/formatters.js.map +1 -0
- package/dist/src/kernel/render/index.js +15 -0
- package/dist/src/kernel/render/index.js.map +1 -0
- package/dist/src/kernel/render/prefixes.js +46 -0
- package/dist/src/kernel/render/prefixes.js.map +1 -0
- package/dist/src/kernel/render/renderers.js +468 -0
- package/dist/src/kernel/render/renderers.js.map +1 -0
- package/dist/src/kernel/render/style.js +105 -0
- package/dist/src/kernel/render/style.js.map +1 -0
- package/dist/src/kernel/render/turtle.js +194 -0
- package/dist/src/kernel/render/turtle.js.map +1 -0
- package/dist/src/kernel/render/vocabulary.js +174 -0
- package/dist/src/kernel/render/vocabulary.js.map +1 -0
- package/dist/src/kernel/render/writeStdout.js +43 -0
- package/dist/src/kernel/render/writeStdout.js.map +1 -0
- package/dist/src/kernel/runtime/boot.js +49 -0
- package/dist/src/kernel/runtime/boot.js.map +1 -0
- package/dist/src/kernel/runtime/facade.js +39 -0
- package/dist/src/kernel/runtime/facade.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/build.js +122 -0
- package/dist/src/kernel/runtime/graphpack/build.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/buildIndex.js +303 -0
- package/dist/src/kernel/runtime/graphpack/buildIndex.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js +6 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js +4 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.stories.generated.js +4 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.stories.generated.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded.js +82 -0
- package/dist/src/kernel/runtime/graphpack/embedded.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/hash.js +38 -0
- package/dist/src/kernel/runtime/graphpack/hash.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/index.js +11 -0
- package/dist/src/kernel/runtime/graphpack/index.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/manifest.js +145 -0
- package/dist/src/kernel/runtime/graphpack/manifest.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/read.js +92 -0
- package/dist/src/kernel/runtime/graphpack/read.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/schemas.js +70 -0
- package/dist/src/kernel/runtime/graphpack/schemas.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/stories.js +68 -0
- package/dist/src/kernel/runtime/graphpack/stories.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/types.js +55 -0
- package/dist/src/kernel/runtime/graphpack/types.js.map +1 -0
- package/dist/src/kernel/runtime/index.js +8 -0
- package/dist/src/kernel/runtime/index.js.map +1 -0
- package/dist/src/kernel/runtime/loadSession.js +34 -0
- package/dist/src/kernel/runtime/loadSession.js.map +1 -0
- package/dist/src/kernel/runtime/paths.js +78 -0
- package/dist/src/kernel/runtime/paths.js.map +1 -0
- package/dist/src/kernel/runtime/probe.js +37 -0
- package/dist/src/kernel/runtime/probe.js.map +1 -0
- package/dist/src/kernel/runtime/readEntity.js +363 -0
- package/dist/src/kernel/runtime/readEntity.js.map +1 -0
- package/dist/src/kernel/runtime/refs/gitOps.js +65 -0
- package/dist/src/kernel/runtime/refs/gitOps.js.map +1 -0
- package/dist/src/kernel/runtime/refs/index.js +29 -0
- package/dist/src/kernel/runtime/refs/index.js.map +1 -0
- package/dist/src/kernel/runtime/refs/parseRef.js +70 -0
- package/dist/src/kernel/runtime/refs/parseRef.js.map +1 -0
- package/dist/src/kernel/runtime/refs/resolve.js +332 -0
- package/dist/src/kernel/runtime/refs/resolve.js.map +1 -0
- package/dist/src/kernel/runtime/resolveSources.js +62 -0
- package/dist/src/kernel/runtime/resolveSources.js.map +1 -0
- package/dist/src/kernel/runtime/store.js +75 -0
- package/dist/src/kernel/runtime/store.js.map +1 -0
- package/dist/src/kernel/runtime/storeReadiness.js +51 -0
- package/dist/src/kernel/runtime/storeReadiness.js.map +1 -0
- package/dist/src/kernel/runtime/types.js +11 -0
- package/dist/src/kernel/runtime/types.js.map +1 -0
- package/dist/src/kernel/spec/asVerb.js +21 -0
- package/dist/src/kernel/spec/asVerb.js.map +1 -0
- package/dist/src/kernel/spec/emitReference.js +578 -0
- package/dist/src/kernel/spec/emitReference.js.map +1 -0
- package/dist/src/kernel/spec/emitSurface.js +202 -0
- package/dist/src/kernel/spec/emitSurface.js.map +1 -0
- package/dist/src/kernel/spec/index.js +11 -0
- package/dist/src/kernel/spec/index.js.map +1 -0
- package/dist/src/kernel/spec/surfaceConformance.js +103 -0
- package/dist/src/kernel/spec/surfaceConformance.js.map +1 -0
- package/dist/src/kernel/spec/types.js +14 -0
- package/dist/src/kernel/spec/types.js.map +1 -0
- package/dist/src/kernel/spec/validate.js +110 -0
- package/dist/src/kernel/spec/validate.js.map +1 -0
- package/dist/src/kernel/vocabulary.js +97 -0
- package/dist/src/kernel/vocabulary.js.map +1 -0
- package/dist/src/types.js +11 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +22 -23
- package/pragma.conf.ts +486 -90
- package/src/bin.ts +274 -82
- package/src/capabilities/block.parity.test.ts +29 -12
- package/src/capabilities/block.shipped.exec.test.ts +282 -0
- package/src/capabilities/block.tierRank.exec.test.ts +300 -0
- package/src/capabilities/capabilities/capabilities.render.ts +1 -1
- package/src/capabilities/capabilities/capabilities.verb.ts +1 -1
- package/src/capabilities/capabilities/catalog.ts +3 -3
- package/src/capabilities/capabilities/hints.ts +32 -7
- package/src/capabilities/capabilities/index.ts +1 -1
- package/src/capabilities/colophon/collectColophon.ts +35 -24
- package/src/capabilities/colophon/colophon.render.ts +24 -1
- package/src/capabilities/colophon/colophon.test.ts +42 -21
- package/src/capabilities/colophon/colophon.verb.ts +4 -4
- package/src/capabilities/config/collectConfigShow.test.ts +1 -0
- package/src/capabilities/config/collectConfigShow.ts +3 -3
- package/src/capabilities/config/field.render.ts +4 -5
- package/src/capabilities/config/fields.ts +17 -10
- package/src/capabilities/config/get.verb.ts +70 -0
- package/src/capabilities/config/getUnset.test.ts +264 -0
- package/src/capabilities/config/index.ts +5 -1
- package/src/capabilities/config/runField.ts +40 -22
- package/src/capabilities/config/runGet.ts +34 -0
- package/src/capabilities/config/runSet.ts +35 -9
- package/src/capabilities/config/set.test.ts +48 -14
- package/src/capabilities/config/set.verb.ts +8 -7
- package/src/capabilities/config/show.render.ts +1 -1
- package/src/capabilities/config/show.verb.ts +9 -6
- package/src/capabilities/config/types.ts +18 -4
- package/src/capabilities/config/unset.verb.ts +58 -0
- package/src/capabilities/create/byteEquality.subprocess.test.ts +2 -3
- package/src/capabilities/create/byteEquality.test.ts +25 -11
- package/src/capabilities/create/cliProjection.ts +227 -0
- package/src/capabilities/create/constants.ts +36 -61
- package/src/capabilities/create/create.mcp.test.ts +89 -5
- package/src/capabilities/create/create.render.ts +71 -7
- package/src/capabilities/create/create.test.ts +433 -219
- package/src/capabilities/create/create.verb.ts +297 -328
- package/src/capabilities/create/createGrammar.test.ts +865 -0
- package/src/capabilities/create/createHelp.ts +71 -0
- package/src/capabilities/create/createSurface.generated.ts +400 -0
- package/src/capabilities/create/crossCli.subprocess.test.ts +745 -0
- package/src/capabilities/create/cwdJail.test.ts +24 -5
- package/src/capabilities/create/generatorToVerbSpec.test.ts +186 -0
- package/src/capabilities/create/generatorToVerbSpec.ts +13 -11
- package/src/capabilities/create/index.ts +7 -4
- package/src/capabilities/create/messages.ts +18 -0
- package/src/capabilities/create/mount.ts +391 -0
- package/src/capabilities/create/pathJail.test.ts +90 -0
- package/src/capabilities/create/pathJail.ts +8 -5
- package/src/capabilities/create/pickGenerator.ts +23 -35
- package/src/capabilities/create/shippedCreate.subprocess.test.ts +164 -0
- package/src/capabilities/create/types.ts +20 -0
- package/src/capabilities/distribution.parity.test.ts +4 -0
- package/src/capabilities/distribution.test.ts +3 -1
- package/src/capabilities/distribution.ts +10 -15
- package/src/capabilities/doctor/checks/checkKeStore.ts +7 -5
- package/src/capabilities/doctor/checks/checkPackageRefs.ts +75 -8
- package/src/capabilities/doctor/checks/checkPragmaVersion.ts +2 -2
- package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +76 -29
- package/src/capabilities/doctor/checks/checkShellCompletions.ts +63 -17
- package/src/capabilities/doctor/checks/harnessInventory.test.ts +219 -0
- package/src/capabilities/doctor/checks/harnessInventory.ts +298 -0
- package/src/capabilities/doctor/checks/index.ts +27 -0
- package/src/capabilities/doctor/checks/mcpCommand.test.ts +100 -0
- package/src/capabilities/doctor/checks/mcpCommand.ts +69 -0
- package/src/capabilities/doctor/checks/targetHealth.ts +444 -0
- package/src/capabilities/doctor/doctor.render.test.ts +125 -38
- package/src/capabilities/doctor/doctor.render.ts +74 -74
- package/src/capabilities/doctor/doctor.test.ts +338 -37
- package/src/capabilities/doctor/doctor.verb.ts +8 -3
- package/src/capabilities/doctor/runChecks.ts +65 -63
- package/src/capabilities/doctor/types.ts +22 -15
- package/src/capabilities/emptyRecovery.test.ts +21 -8
- package/src/capabilities/graph/examples.exec.test.ts +107 -0
- package/src/capabilities/graph/index.ts +1 -1
- package/src/capabilities/graph/inspect.render.ts +70 -22
- package/src/capabilities/graph/inspect.test.ts +260 -5
- package/src/capabilities/graph/inspect.verb.ts +18 -6
- package/src/capabilities/graph/query.render.ts +15 -3
- package/src/capabilities/graph/query.verb.ts +3 -3
- package/src/capabilities/graph/runQuery.ts +2 -3
- package/src/capabilities/index.ts +3 -1
- package/src/capabilities/info/collectInfo.ts +13 -5
- package/src/capabilities/info/info.render.ts +7 -3
- package/src/capabilities/info/info.test.ts +37 -1
- package/src/capabilities/info/info.verb.ts +1 -1
- package/src/capabilities/info/types.ts +10 -2
- package/src/capabilities/lazy.test.ts +32 -0
- package/src/capabilities/meta/complete.verb.ts +1 -1
- package/src/capabilities/meta/index.ts +1 -1
- package/src/capabilities/meta/mcp.verb.ts +10 -8
- package/src/capabilities/ontology/index.ts +15 -11
- package/src/capabilities/ontology/ontology.test.ts +6 -55
- package/src/capabilities/ontology/queries.ts +2 -2
- package/src/capabilities/ontology/render.ts +3 -4
- package/src/capabilities/ontology/verbs.ts +27 -68
- package/src/capabilities/prompt/index.ts +2 -2
- package/src/capabilities/prompt/prompt.render.ts +6 -2
- package/src/capabilities/prompt/types.ts +1 -1
- package/src/capabilities/prompt/verbs.ts +4 -5
- package/src/capabilities/reference.test.ts +63 -0
- package/src/capabilities/renderVocabularySync.test.ts +82 -0
- package/src/capabilities/resources/provider.ts +342 -85
- package/src/capabilities/resources/resources.test.ts +355 -59
- package/src/capabilities/scopeTypeSync.test.ts +29 -15
- package/src/capabilities/setup/buildPlan.ts +240 -0
- package/src/capabilities/setup/index.ts +7 -7
- package/src/capabilities/setup/mode.ts +74 -0
- package/src/capabilities/setup/operations/index.ts +79 -0
- package/src/capabilities/setup/operations/setupCompletions.ts +97 -24
- package/src/capabilities/setup/operations/setupConfig.ts +124 -0
- package/src/capabilities/setup/operations/setupGenerator.ts +478 -334
- package/src/capabilities/setup/operations/setupLsp.ts +420 -67
- package/src/capabilities/setup/operations/setupMcp.ts +238 -127
- package/src/capabilities/setup/operations/setupSkills.ts +667 -105
- package/src/capabilities/setup/plan.render.ts +336 -0
- package/src/capabilities/setup/plan.ts +241 -0
- package/src/capabilities/setup/setup.mcp.correctness.test.ts +432 -0
- package/src/capabilities/setup/setup.render.test.ts +297 -75
- package/src/capabilities/setup/setup.render.ts +45 -77
- package/src/capabilities/setup/setup.test.ts +1819 -225
- package/src/capabilities/setup/setup.verb.ts +288 -78
- package/src/capabilities/setup/shell.test.ts +86 -0
- package/src/capabilities/setup/shell.ts +137 -11
- package/src/capabilities/setup/targets.ts +435 -0
- package/src/capabilities/setup/types.ts +23 -70
- package/src/capabilities/shared/assertExecOk.ts +68 -10
- package/src/capabilities/shared/index.ts +43 -0
- package/src/capabilities/shared/packageManager.test.ts +470 -0
- package/src/capabilities/shared/packageManager.ts +425 -34
- package/src/capabilities/skill/bundledSkills.test.ts +347 -0
- package/src/capabilities/skill/discover.ts +131 -10
- package/src/capabilities/skill/index.ts +1 -1
- package/src/capabilities/skill/render.ts +10 -9
- package/src/capabilities/skill/skill.test.ts +22 -7
- package/src/capabilities/skill/verbs.ts +3 -4
- package/src/capabilities/sources/collectStatus.ts +7 -2
- package/src/capabilities/sources/index.ts +1 -1
- package/src/capabilities/sources/installSkills.ts +265 -10
- package/src/capabilities/sources/runUpdate.ts +131 -23
- package/src/capabilities/sources/sources.test.ts +382 -2
- package/src/capabilities/sources/status.render.ts +1 -1
- package/src/capabilities/sources/status.verb.ts +1 -1
- package/src/capabilities/sources/update.render.ts +1 -1
- package/src/capabilities/sources/update.verb.ts +4 -4
- package/src/capabilities/surface.test.ts +136 -19
- package/src/capabilities/upgrade/runUpgrade.ts +53 -14
- package/src/capabilities/upgrade/types.ts +10 -2
- package/src/capabilities/upgrade/upgrade.render.ts +13 -7
- package/src/capabilities/upgrade/upgrade.test.ts +75 -3
- package/src/capabilities/upgrade/upgrade.verb.ts +1 -1
- package/src/capabilities/version/index.ts +12 -0
- package/src/capabilities/version/version.test.ts +66 -0
- package/src/capabilities/version/version.verb.ts +39 -0
- package/src/constants.ts +36 -1
- package/src/identity.test.ts +57 -29
- package/src/kernel/completion/__snapshots__/emitScripts.test.ts.snap +15 -13
- package/src/kernel/completion/complete.test.ts +12 -2
- package/src/kernel/completion/complete.ts +1 -1
- package/src/kernel/completion/emitScripts.ts +1 -1
- package/src/kernel/completion/entitySource.test.ts +16 -3
- package/src/kernel/completion/entitySource.ts +21 -8
- package/src/kernel/completion/model.test.ts +164 -12
- package/src/kernel/completion/model.ts +94 -14
- package/src/kernel/completion/parse.test.ts +4 -7
- package/src/kernel/completion/parse.ts +15 -0
- package/src/kernel/completion/resolve.test.ts +0 -1
- package/src/kernel/completion/safety.test.ts +50 -35
- package/src/kernel/completion/shellDrive.test.ts +28 -9
- package/src/kernel/completion/templates/bash.ts +7 -2
- package/src/kernel/completion/templates/index.ts +23 -0
- package/src/kernel/completion/types.ts +7 -0
- package/src/kernel/config/defaults.test.ts +27 -3
- package/src/kernel/config/defaults.ts +4 -3
- package/src/kernel/config/evaluateProjectConfig.ts +31 -8
- package/src/kernel/config/firstRun.test.ts +44 -38
- package/src/kernel/config/firstRun.ts +24 -88
- package/src/kernel/config/index.ts +1 -1
- package/src/kernel/config/readConfig.test.ts +6 -3
- package/src/kernel/config/readConfig.ts +1 -1
- package/src/kernel/config/schema.ts +3 -1
- package/src/kernel/config/types.ts +3 -1
- package/src/kernel/copy.test.ts +34 -4
- package/src/kernel/copy.ts +54 -0
- package/src/kernel/error/PragmaError.test.ts +5 -2
- package/src/kernel/error/PragmaError.ts +4 -2
- package/src/kernel/error/constants.ts +7 -5
- package/src/kernel/error/fromTaskError.ts +28 -6
- package/src/kernel/error/recovery.ts +14 -0
- package/src/kernel/error/renderError.ts +42 -1
- package/src/kernel/error/types.ts +21 -1
- package/src/kernel/index.ts +35 -0
- package/src/kernel/interactivity.test.ts +76 -0
- package/src/kernel/interactivity.ts +69 -0
- package/src/kernel/packs/collect.ts +12 -16
- package/src/kernel/packs/compile.test.ts +222 -1
- package/src/kernel/packs/compile.ts +93 -3
- package/src/kernel/packs/disclosure.ts +2 -2
- package/src/kernel/packs/graphql/buildLookupDocument.ts +1 -1
- package/src/kernel/packs/graphql/fetchGraphqlLookup.ts +3 -4
- package/src/kernel/packs/graphql/index.ts +20 -0
- package/src/kernel/packs/index.ts +40 -0
- package/src/kernel/packs/iri.test.ts +73 -0
- package/src/kernel/packs/iri.ts +66 -14
- package/src/kernel/packs/renderPack.ts +25 -6
- package/src/kernel/packs/resolveEntity.test.ts +274 -0
- package/src/kernel/packs/resolveEntity.ts +200 -42
- package/src/kernel/packs/runBodies.ts +86 -22
- package/src/kernel/packs/sample.ts +1 -1
- package/src/kernel/packs/schema.ts +78 -5
- package/src/kernel/packs/sparql/applyFilters.ts +136 -16
- package/src/kernel/packs/sparql/buildLookupQuery.test.ts +290 -0
- package/src/kernel/packs/sparql/buildLookupQuery.ts +367 -17
- package/src/kernel/packs/sparql/index.ts +37 -0
- package/src/kernel/packs/sparql/runSelect.test.ts +1 -1
- package/src/kernel/packs/sparql/runSelect.ts +3 -4
- package/src/kernel/packs/toolDescription.test.ts +77 -4
- package/src/kernel/packs/types.ts +136 -0
- package/src/kernel/packs/uniqueness.ts +1 -1
- package/src/kernel/project/cli/buildProgram.test.ts +218 -12
- package/src/kernel/project/cli/buildProgram.ts +84 -18
- package/src/kernel/project/cli/constants.ts +34 -0
- package/src/kernel/project/cli/dispatch.test.ts +160 -2
- package/src/kernel/project/cli/dispatch.ts +226 -45
- package/src/kernel/project/cli/exitCodes.ts +1 -1
- package/src/kernel/project/cli/globalFlags.test.ts +117 -1
- package/src/kernel/project/cli/globalFlags.ts +134 -31
- package/src/kernel/project/cli/helpFormat.ts +14 -2
- package/src/kernel/project/cli/rootHelp.ts +74 -12
- package/src/kernel/project/cli/suggest.test.ts +33 -1
- package/src/kernel/project/cli/suggest.ts +25 -1
- package/src/kernel/project/cli/verbHelp.test.ts +30 -0
- package/src/kernel/project/cli/verbHelp.ts +23 -7
- package/src/kernel/project/mcp/buildServer.ts +7 -4
- package/src/kernel/project/mcp/envelope.ts +2 -2
- package/src/kernel/project/mcp/instructions.ts +2 -2
- package/src/kernel/project/mcp/mcpError.ts +1 -1
- package/src/kernel/project/mcp/parity.test.ts +5 -2
- package/src/kernel/project/mcp/prompts/index.ts +37 -0
- package/src/kernel/project/mcp/prompts/source.ts +2 -2
- package/src/kernel/project/mcp/registerVerb.ts +55 -10
- package/src/kernel/project/mcp/serve.ts +2 -2
- package/src/kernel/render/__snapshots__/renderers.test.ts.snap +7 -4
- package/src/kernel/render/contracts.ts +21 -0
- package/src/kernel/render/envelope.ts +2 -3
- package/src/kernel/render/formatters.ts +1 -1
- package/src/kernel/render/renderers.test.ts +243 -6
- package/src/kernel/render/renderers.ts +222 -20
- package/src/kernel/render/style.test.ts +75 -24
- package/src/kernel/render/style.ts +59 -6
- package/src/kernel/render/turtle.ts +222 -0
- package/src/kernel/render/vocabulary.ts +276 -0
- package/src/kernel/runtime/graphpack/buildIndex.ts +1 -1
- package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +3 -3
- package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +1 -1
- package/src/kernel/runtime/graphpack/embedded.ts +3 -3
- package/src/kernel/runtime/graphpack/manifest.ts +1 -1
- package/src/kernel/runtime/graphpack/read.ts +1 -2
- package/src/kernel/runtime/loadSession.ts +1 -1
- package/src/kernel/runtime/probe.ts +6 -6
- package/src/kernel/runtime/readEntity.ts +472 -28
- package/src/kernel/runtime/refs/index.ts +39 -0
- package/src/kernel/runtime/refs/parseRef.ts +2 -2
- package/src/kernel/runtime/refs/resolve.ts +4 -4
- package/src/kernel/runtime/storeReadiness.ts +1 -2
- package/src/kernel/runtime/types.ts +15 -1
- package/src/kernel/runtime/wasmEmbed.test.ts +37 -39
- package/src/kernel/spec/emitReference.ts +105 -30
- package/src/kernel/spec/emitSurface.ts +48 -6
- package/src/kernel/spec/surfaceConformance.test.ts +4 -2
- package/src/kernel/spec/types.ts +277 -4
- package/src/testing/PARITY_GAPS.ts +9 -3
- package/src/testing/behavioral/docExamples.test.ts +16 -0
- package/src/testing/behavioral/errorMatrix.mcp.test.ts +112 -9
- package/src/testing/behavioral/firstRun.e2e.test.ts +24 -24
- package/src/testing/behavioral/journeys.cli.test.ts +1 -1
- package/src/testing/behavioral/journeys.defaultPack.test.ts +7 -7
- package/src/testing/behavioral/journeys.firstInstall.test.ts +7 -2
- package/src/testing/behavioral/journeys.implementation.test.ts +206 -0
- package/src/testing/behavioral/journeys.interactiveTty.e2e.test.ts +2 -2
- package/src/testing/behavioral/journeys.packageStories.test.ts +10 -7
- package/src/testing/behavioral/mcpServe.e2e.test.ts +57 -2
- package/src/testing/behavioral/mcpSurface.test.ts +1 -1
- package/src/testing/behavioral/rootCli.e2e.test.ts +26 -2
- package/src/testing/eval/__snapshots__/eval.test.ts.snap +26 -1
- package/src/testing/eval/cases/effectful.ts +3 -2
- package/src/testing/eval/cases/readNouns.ts +245 -9
- package/src/testing/fixtures/blockGraph.ts +104 -10
- package/src/testing/fixtures/graph/canonical.ts +182 -13
- package/src/testing/fixtures/graph/defaultPack.ts +1 -1
- package/src/testing/helpers/blankCanonicalRanges.ts +36 -0
- package/src/testing/helpers/projectMcp.ts +32 -6
- package/src/testing/helpers/runCli.ts +35 -18
- package/src/testing/perf/budgets.test.ts +20 -9
- package/src/testing/perf/budgets.ts +58 -9
- package/src/testing/perf/codegen.test.ts +126 -0
- package/src/testing/perf/globalSetup.test.ts +286 -0
- package/src/testing/perf/globalSetup.ts +505 -23
- package/src/testing/perf/measure.test.ts +38 -0
- package/src/testing/perf/measure.ts +23 -4
- package/src/testing/setupXdgIsolation.ts +81 -21
- package/src/testing/tempRoot.globalSetup.ts +122 -0
- package/dist/pragma +0 -0
- package/src/capabilities/create/compiledCreate.subprocess.test.ts +0 -189
- package/src/capabilities/create/templates.embedded.generated.ts +0 -28
- package/src/capabilities/doctor/checks/checkConfigFile.ts +0 -42
- package/src/capabilities/doctor/checks/checkMcpCommands.ts +0 -114
- package/src/capabilities/doctor/checks/checkMcpConfigured.ts +0 -68
- package/src/capabilities/doctor/checks/checkSkillsSymlinked.ts +0 -61
- package/src/capabilities/doctor/checks/deriveBand.test.ts +0 -42
- package/src/capabilities/doctor/checks/deriveBand.ts +0 -28
- package/src/capabilities/shared/bands.ts +0 -16
- package/src/kernel/config/__snapshots__/firstRun.test.ts.snap +0 -11
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rank candidate names by similarity to a failed token.
|
|
3
|
+
*
|
|
4
|
+
* Ported near-verbatim from the v1 suggester: prefix matches first, then
|
|
5
|
+
* Damerau-Levenshtein edit-distance matches under a normalized threshold. Used
|
|
6
|
+
* by the unknown-command suggester to turn a typo into "Did you mean: …?".
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Return up to {@link maxResults} candidates most similar to `query`.
|
|
10
|
+
*
|
|
11
|
+
* Exact matches are excluded — a match means the caller should have resolved it
|
|
12
|
+
* and never reached here.
|
|
13
|
+
*
|
|
14
|
+
* @param query - The token that failed to resolve.
|
|
15
|
+
* @param candidates - All known names to rank against.
|
|
16
|
+
* @param opts.maxResults - Max suggestions to return (default 5).
|
|
17
|
+
* @param opts.threshold - Max normalized edit distance (default 0.4).
|
|
18
|
+
* @returns Ranked suggestions, original casing preserved.
|
|
19
|
+
*/
|
|
20
|
+
export function suggestNames(query, candidates, opts) {
|
|
21
|
+
if (query === "")
|
|
22
|
+
return [];
|
|
23
|
+
const maxResults = opts?.maxResults ?? 5;
|
|
24
|
+
const threshold = opts?.threshold ?? 0.4;
|
|
25
|
+
const queryLower = query.toLowerCase();
|
|
26
|
+
const scored = [];
|
|
27
|
+
for (const candidate of candidates) {
|
|
28
|
+
const candidateLower = candidate.toLowerCase();
|
|
29
|
+
if (candidateLower === queryLower)
|
|
30
|
+
continue;
|
|
31
|
+
if (candidateLower.startsWith(queryLower)) {
|
|
32
|
+
scored.push({ name: candidate, score: 0 });
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const distance = damerauLevenshtein(queryLower, candidateLower);
|
|
36
|
+
const maxLen = Math.max(queryLower.length, candidateLower.length);
|
|
37
|
+
const normalized = maxLen === 0 ? 0 : distance / maxLen;
|
|
38
|
+
if (normalized <= threshold) {
|
|
39
|
+
scored.push({ name: candidate, score: normalized });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
scored.sort((a, b) => a.score - b.score);
|
|
43
|
+
return scored.slice(0, maxResults).map((s) => s.name);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Damerau-Levenshtein distance: insertions, deletions, substitutions, and
|
|
47
|
+
* adjacent transpositions.
|
|
48
|
+
*/
|
|
49
|
+
function damerauLevenshtein(a, b) {
|
|
50
|
+
const lenA = a.length;
|
|
51
|
+
const lenB = b.length;
|
|
52
|
+
if (lenA === 0)
|
|
53
|
+
return lenB;
|
|
54
|
+
if (lenB === 0)
|
|
55
|
+
return lenA;
|
|
56
|
+
const matrix = Array.from({ length: lenA + 1 }, () => Array.from({ length: lenB + 1 }).fill(0));
|
|
57
|
+
for (let i = 0; i <= lenA; i++) {
|
|
58
|
+
getRow(matrix, i)[0] = i;
|
|
59
|
+
}
|
|
60
|
+
const firstRow = getRow(matrix, 0);
|
|
61
|
+
for (let j = 0; j <= lenB; j++) {
|
|
62
|
+
firstRow[j] = j;
|
|
63
|
+
}
|
|
64
|
+
for (let i = 1; i <= lenA; i++) {
|
|
65
|
+
const prevRow = getRow(matrix, i - 1);
|
|
66
|
+
const row = getRow(matrix, i);
|
|
67
|
+
for (let j = 1; j <= lenB; j++) {
|
|
68
|
+
const cost = a[i - 1] === b[j - 1] ? 0 : 1;
|
|
69
|
+
row[j] = Math.min(getCell(prevRow, j) + 1, // deletion
|
|
70
|
+
getCell(row, j - 1) + 1, // insertion
|
|
71
|
+
getCell(prevRow, j - 1) + cost);
|
|
72
|
+
if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {
|
|
73
|
+
const prevPrevRow = getRow(matrix, i - 2);
|
|
74
|
+
row[j] = Math.min(getCell(row, j), getCell(prevPrevRow, j - 2) + cost);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return getCell(getRow(matrix, lenA), lenB);
|
|
79
|
+
}
|
|
80
|
+
/** Read a matrix row that is structurally guaranteed to exist. */
|
|
81
|
+
function getRow(matrix, index) {
|
|
82
|
+
const row = matrix.at(index);
|
|
83
|
+
if (row === undefined) {
|
|
84
|
+
throw new Error(`matrix row ${index} is out of bounds`);
|
|
85
|
+
}
|
|
86
|
+
return row;
|
|
87
|
+
}
|
|
88
|
+
/** Read a matrix cell that is structurally guaranteed to exist. */
|
|
89
|
+
function getCell(row, index) {
|
|
90
|
+
const cell = row.at(index);
|
|
91
|
+
if (cell === undefined) {
|
|
92
|
+
throw new Error(`matrix cell ${index} is out of bounds`);
|
|
93
|
+
}
|
|
94
|
+
return cell;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=suggestNames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suggestNames.js","sourceRoot":"","sources":["../../../../../src/kernel/project/cli/suggestNames.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verb-level help, rendered from a {@link VerbSpec}.
|
|
3
|
+
*
|
|
4
|
+
* Help is designed, not auto-generated: a usage line with positional tokens,
|
|
5
|
+
* the summary and optional extended doc, a flags block, and the verb's own
|
|
6
|
+
* authored examples. Reads only the spec's declarative fields — never the run
|
|
7
|
+
* body — so it stays on the fast `--help` path. Ported from the v1 cli-core
|
|
8
|
+
* `formatVerbHelp`, retargeted at the grammar.
|
|
9
|
+
*/
|
|
10
|
+
import { kebabCase } from "../../spec/index.js";
|
|
11
|
+
import { MUTATION_FLAG_DOCS, negationFlagDoc } from "./constants.js";
|
|
12
|
+
import { helpColumns, helpDim, helpHeading, helpTerm, helpUsage, } from "./helpFormat.js";
|
|
13
|
+
/**
|
|
14
|
+
* A verb's `doc` doubles as its MCP tool description, so a pack's authored
|
|
15
|
+
* `toolDescription` may end with an MCP tool-call example — `Example:
|
|
16
|
+
* token_lookup { names: ["…"] }`. That `noun_verb {…}` syntax is MCP-transport
|
|
17
|
+
* shape, meaningless on the CLI, so the CLI projector drops the trailing example
|
|
18
|
+
* sentence; the MCP projector keeps the authored text whole. Hand-written docs
|
|
19
|
+
* carry no such example and pass through untouched.
|
|
20
|
+
*/
|
|
21
|
+
function stripToolCallExample(doc) {
|
|
22
|
+
return doc.replace(/\s*Example:\s+[a-z][a-z0-9_]*\s*\{[^{}]*\}\.?\s*$/, "");
|
|
23
|
+
}
|
|
24
|
+
/** The positional usage token for a param (`<name>` / `[name]`, `...` variadic). */
|
|
25
|
+
function positionalToken(param) {
|
|
26
|
+
const variadic = param.kind === "string[]" ? "..." : "";
|
|
27
|
+
return param.required
|
|
28
|
+
? `<${param.name}${variadic}>`
|
|
29
|
+
: `[${param.name}${variadic}]`;
|
|
30
|
+
}
|
|
31
|
+
/** The flag display for a non-positional param (`--kebab` or `--kebab <value>`). */
|
|
32
|
+
function flagDisplay(param) {
|
|
33
|
+
const flag = `--${kebabCase(param.name)}`;
|
|
34
|
+
if (param.kind === "boolean")
|
|
35
|
+
return flag;
|
|
36
|
+
if (param.kind === "string[]")
|
|
37
|
+
return `${flag} <values...>`;
|
|
38
|
+
return `${flag} <value>`;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Render the full verb help block.
|
|
42
|
+
*
|
|
43
|
+
* @param programName - The CLI binary name shown in the usage line.
|
|
44
|
+
* @param verb - The verb whose interface is documented.
|
|
45
|
+
* @returns The formatted help text.
|
|
46
|
+
*/
|
|
47
|
+
export function formatVerbHelp(programName, verb) {
|
|
48
|
+
const commandPath = verb.path
|
|
49
|
+
.filter((s) => Boolean(s))
|
|
50
|
+
.join(" ");
|
|
51
|
+
const positionals = verb.params.filter((p) => p.positional);
|
|
52
|
+
const flags = verb.params.filter((p) => !p.positional);
|
|
53
|
+
const positionalStr = positionals.map(positionalToken).join(" ");
|
|
54
|
+
const usageSuffix = positionalStr ? ` ${positionalStr}` : "";
|
|
55
|
+
const lines = [
|
|
56
|
+
helpUsage(`${programName} ${commandPath}${usageSuffix} [flags]`),
|
|
57
|
+
"",
|
|
58
|
+
verb.summary,
|
|
59
|
+
];
|
|
60
|
+
if (verb.doc) {
|
|
61
|
+
const cliDoc = stripToolCallExample(verb.doc);
|
|
62
|
+
if (cliDoc)
|
|
63
|
+
lines.push("", cliDoc);
|
|
64
|
+
}
|
|
65
|
+
// Every flag the command PARSES is rendered, from the same spec facts
|
|
66
|
+
// registration reads: the declared params, each default-true boolean's
|
|
67
|
+
// `--no-` negation, and — on a mutating verb — the auto-injected mutation
|
|
68
|
+
// flags. Help denying a working flag is the drift this derivation removes.
|
|
69
|
+
const flagRows = flags.flatMap((flag) => {
|
|
70
|
+
const rows = [
|
|
71
|
+
[flagDisplay(flag), flag.doc],
|
|
72
|
+
];
|
|
73
|
+
if (flag.kind === "boolean" && flag.default === true) {
|
|
74
|
+
const kebab = kebabCase(flag.name);
|
|
75
|
+
rows.push([`--no-${kebab}`, negationFlagDoc(kebab)]);
|
|
76
|
+
}
|
|
77
|
+
return rows;
|
|
78
|
+
});
|
|
79
|
+
if (verb.capability.mutates) {
|
|
80
|
+
flagRows.push(...MUTATION_FLAG_DOCS.map(({ flag, doc }) => [flag, doc]));
|
|
81
|
+
}
|
|
82
|
+
if (flagRows.length > 0) {
|
|
83
|
+
lines.push("", helpHeading("Flags"), ...helpColumns(flagRows));
|
|
84
|
+
}
|
|
85
|
+
if (verb.examples && verb.examples.length > 0) {
|
|
86
|
+
lines.push("", helpHeading("Examples"));
|
|
87
|
+
for (const example of verb.examples) {
|
|
88
|
+
lines.push(` ${helpTerm(example.cmd)}`);
|
|
89
|
+
if (example.note)
|
|
90
|
+
lines.push(` ${helpDim(example.note)}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
lines.push("", verbHelpFooter(programName, verb));
|
|
94
|
+
return lines.join("\n");
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* The footer pointing at the next help level: a sub-verb points UP to its noun
|
|
98
|
+
* page (`pragma block --help`), a self-verb points to the root (`pragma
|
|
99
|
+
* --help`). Uniform across every verb page — the leaf pages used to have none.
|
|
100
|
+
*/
|
|
101
|
+
function verbHelpFooter(programName, verb) {
|
|
102
|
+
if (verb.path.length > 1) {
|
|
103
|
+
const noun = verb.path[0];
|
|
104
|
+
return helpDim(`Run \`${programName} ${noun} --help\` to see all ${noun} commands.`);
|
|
105
|
+
}
|
|
106
|
+
return helpDim(`Run \`${programName} --help\` to see all commands.`);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Render noun-level help — the list of verbs under a noun parent
|
|
110
|
+
* (`pragma config --help`).
|
|
111
|
+
*
|
|
112
|
+
* @param programName - The CLI binary name shown in the usage line.
|
|
113
|
+
* @param noun - The noun whose verbs are listed.
|
|
114
|
+
* @param verbs - All registered verbs (filtered to this noun's sub-verbs).
|
|
115
|
+
* @returns The formatted help text.
|
|
116
|
+
*/
|
|
117
|
+
export function formatNounHelp(programName, noun, verbs) {
|
|
118
|
+
const nounVerbs = verbs.filter((v) => v.path[0] === noun && v.path[1] && !v.hidden);
|
|
119
|
+
if (nounVerbs.length === 0)
|
|
120
|
+
return `No commands found for "${noun}".`;
|
|
121
|
+
const lines = [
|
|
122
|
+
helpUsage(`${programName} ${noun} <verb> [flags]`),
|
|
123
|
+
"",
|
|
124
|
+
helpHeading("Verbs"),
|
|
125
|
+
...helpColumns(nounVerbs.map((verb) => [verb.path[1], verb.summary])),
|
|
126
|
+
"",
|
|
127
|
+
helpDim(`Run \`${programName} ${noun} <verb> --help\` for details on a verb.`),
|
|
128
|
+
];
|
|
129
|
+
return lines.join("\n");
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=verbHelp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verbHelp.js","sourceRoot":"","sources":["../../../../../src/kernel/project/cli/verbHelp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build the MCP server from the grammar.
|
|
3
|
+
*
|
|
4
|
+
* Constructs an {@link McpServer} whose wire identity PROJECTS from the
|
|
5
|
+
* distribution: `serverInfo.name` is the declared distribution name (the same
|
|
6
|
+
* projection that names the CLI bin, so existing agent wiring resolves it) and
|
|
7
|
+
* `serverInfo.version` the package version — a fork's server introduces itself
|
|
8
|
+
* under the fork's own name with no code change. The covenant records the rule
|
|
9
|
+
* (`surface.v2.json` `mcpSurface.serverInfo`) and `identity.test.ts` pins it on
|
|
10
|
+
* the wire from a fork's config. Then registers every exposed verb as a tool
|
|
11
|
+
* and each module's optional `mcpResources` surface (the graph resource
|
|
12
|
+
* browser, wired below via `module.mcpResources?.register`). One runtime is
|
|
13
|
+
* booted for the server's lifetime and shared by every tool; the store stays
|
|
14
|
+
* lazy, booting only when a resource read needs it.
|
|
15
|
+
*/
|
|
16
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
17
|
+
import { MCP_SERVER_NAME, VERSION } from "../../../constants.js";
|
|
18
|
+
import { bootRuntime } from "../../runtime/index.js";
|
|
19
|
+
import { buildInstructions } from "./instructions.js";
|
|
20
|
+
import { registerVerb } from "./registerVerb.js";
|
|
21
|
+
/**
|
|
22
|
+
* Neutral flags for the MCP runtime. Output shaping is the projector's job
|
|
23
|
+
* (every tool returns the machine envelope), so these only seed `run` bodies
|
|
24
|
+
* that read `globalFlags` — none do in PR1.
|
|
25
|
+
*/
|
|
26
|
+
const MCP_FLAGS = {
|
|
27
|
+
llm: true,
|
|
28
|
+
autoLlm: false,
|
|
29
|
+
format: "json",
|
|
30
|
+
verbose: false,
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Assemble the MCP server, registering all exposed verbs as tools and any
|
|
34
|
+
* module resource surfaces.
|
|
35
|
+
*
|
|
36
|
+
* Async because a module's `mcpResources.register` dynamic-imports the SDK's
|
|
37
|
+
* `ResourceTemplate` (so the resource browser never lands on the storeless
|
|
38
|
+
* `--help`/`__complete` fast path).
|
|
39
|
+
*
|
|
40
|
+
* @param modules - The capability modules to project.
|
|
41
|
+
* @param cwd - The working directory for the server's runtime.
|
|
42
|
+
* @returns The configured MCP server, ready to `connect` to a transport.
|
|
43
|
+
* @note Impure by default — reads `process.cwd()` unless `cwd` is provided.
|
|
44
|
+
*/
|
|
45
|
+
export async function buildServer(modules, cwd = process.cwd()) {
|
|
46
|
+
const server = new McpServer({ name: MCP_SERVER_NAME, version: VERSION },
|
|
47
|
+
// Handshake orientation (sent once at initialize), derived from the SAME
|
|
48
|
+
// conventions/discovery as the `capabilities` tool so the two never diverge.
|
|
49
|
+
{ instructions: buildInstructions(modules) });
|
|
50
|
+
const runtime = bootRuntime(MCP_FLAGS, cwd);
|
|
51
|
+
for (const module of modules) {
|
|
52
|
+
for (const verb of module.verbs) {
|
|
53
|
+
if (verb.capability.mcp.expose) {
|
|
54
|
+
registerVerb(server, verb, runtime);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// A module's optional resource surface (NOT a tool) — the `{+uri}` template.
|
|
58
|
+
// The WHOLE module set goes with it: the listing the provider installs is
|
|
59
|
+
// the union of every module's declared `mcpListable` slices, which the
|
|
60
|
+
// declaring module cannot see from where it sits.
|
|
61
|
+
await module.mcpResources?.register(server, runtime, modules);
|
|
62
|
+
// A module's optional native prompt surface (NOT a tool) — `prompts/*`.
|
|
63
|
+
await module.mcpPrompts?.register(server, runtime);
|
|
64
|
+
}
|
|
65
|
+
return server;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=buildServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildServer.js","sourceRoot":"","sources":["../../../../../src/kernel/project/mcp/buildServer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,SAAS,GAAgB;IAC7B,GAAG,EAAE,IAAI;IACT,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,KAAK;CACf,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAoC,EACpC,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE;IAC3C,yEAAyE;IACzE,6EAA6E;IAC7E,EAAE,YAAY,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAC7C,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAE5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC/B,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QACD,6EAA6E;QAC7E,0EAA0E;QAC1E,uEAAuE;QACvE,kDAAkD;QAClD,MAAM,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9D,wEAAwE;QACxE,MAAM,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP transport wrapping of the shared machine envelope.
|
|
3
|
+
*
|
|
4
|
+
* The MCP projector returns the *same* `{ ok, data, meta }` / `{ ok, error }`
|
|
5
|
+
* envelope the CLI emits under `--format json` — built by the shared
|
|
6
|
+
* `successEnvelope` / `errorEnvelope` — serialized into a single text content
|
|
7
|
+
* block (D4). Reusing the shared builders is what guarantees CLI-JSON and MCP
|
|
8
|
+
* output are byte-identical.
|
|
9
|
+
*/
|
|
10
|
+
import { errorEnvelope, successEnvelope } from "../../render/index.js";
|
|
11
|
+
/**
|
|
12
|
+
* Wrap success data as an MCP tool result.
|
|
13
|
+
*
|
|
14
|
+
* @param data - The JSON-safe data projection.
|
|
15
|
+
* @param meta - Envelope metadata (e.g. plan-first flags); defaults to `{}`.
|
|
16
|
+
* @returns The tool result carrying the success envelope.
|
|
17
|
+
*/
|
|
18
|
+
export function toolSuccess(data, meta = {}) {
|
|
19
|
+
return {
|
|
20
|
+
content: [
|
|
21
|
+
{ type: "text", text: JSON.stringify(successEnvelope(data, meta)) },
|
|
22
|
+
],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Wrap a {@link PragmaError} as an MCP tool result flagged `isError`.
|
|
27
|
+
*
|
|
28
|
+
* @param error - The structured error to serialize.
|
|
29
|
+
* @returns The tool result carrying the failure envelope.
|
|
30
|
+
*/
|
|
31
|
+
export function toolError(error) {
|
|
32
|
+
return {
|
|
33
|
+
content: [{ type: "text", text: JSON.stringify(errorEnvelope(error)) }],
|
|
34
|
+
isError: true,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=envelope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../../../../src/kernel/project/mcp/envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,IAAa,EACb,OAAgC,EAAE;IAElC,OAAO;QACL,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE;SACpE;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,KAAkB;IAC1C,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACvE,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP projector barrel — the server builder and the verb→tool adapter.
|
|
3
|
+
*/
|
|
4
|
+
export { buildServer } from "./buildServer.js";
|
|
5
|
+
export { toolError, toolSuccess } from "./envelope.js";
|
|
6
|
+
export { buildZodSchema, registerVerb } from "./registerVerb.js";
|
|
7
|
+
export { serveMcp } from "./serve.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/kernel/project/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The MCP server `instructions` string — orientation sent ONCE in the
|
|
3
|
+
* initialize handshake (not per tool call), so agents arrive oriented.
|
|
4
|
+
*
|
|
5
|
+
* It carries the same content the retired `llm` tool front-loaded: the
|
|
6
|
+
* conventions + the discovery sequence. To guarantee it never diverges from the
|
|
7
|
+
* `capabilities` tool, the WHOLE orientation — the opening line included —
|
|
8
|
+
* derives from the SAME source: `CONVENTIONS` and
|
|
9
|
+
* `buildDiscoverySequence` in `capabilities/capabilities/catalog.ts`. Live
|
|
10
|
+
* numbers (tier/channel/entity counts) are deliberately DROPPED (they would need
|
|
11
|
+
* a store boot at handshake); agents fetch those via `info`/`config show`/
|
|
12
|
+
* `sources status`. Kept short (a hard length ceiling is asserted in the test),
|
|
13
|
+
* since it counts against every session's context.
|
|
14
|
+
*/
|
|
15
|
+
import { buildDiscoverySequence, CONVENTIONS, } from "../../../capabilities/capabilities/catalog.js";
|
|
16
|
+
import { emitSurface } from "../../spec/index.js";
|
|
17
|
+
/** Hard ceiling on the instructions length (asserted by the protected test). */
|
|
18
|
+
export const INSTRUCTIONS_MAX_CHARS = 1500;
|
|
19
|
+
/**
|
|
20
|
+
* Build the handshake orientation string from the live capability modules.
|
|
21
|
+
*
|
|
22
|
+
* @param modules - The capability modules (for the live discovery-sample list).
|
|
23
|
+
* @returns A short, single-source orientation string (≤ {@link INSTRUCTIONS_MAX_CHARS}).
|
|
24
|
+
*/
|
|
25
|
+
export function buildInstructions(modules) {
|
|
26
|
+
// Tools AND resource templates come from the one emitted surface: the
|
|
27
|
+
// `<scheme>:{+uri}` template is declared by the module that serves it and
|
|
28
|
+
// frozen in the covenant, so quoting it here rather than deriving it would be
|
|
29
|
+
// a second copy of a string the kernel does not own.
|
|
30
|
+
const { tools, resources } = emitSurface(modules).mcpSurface;
|
|
31
|
+
const steps = buildDiscoverySequence(tools)
|
|
32
|
+
.map((stage) => `${stage.stage}. ${stage.tool} — ${stage.purpose}`)
|
|
33
|
+
.join("\n");
|
|
34
|
+
const templates = resources.map((template) => `\`${template}\``).join(", ");
|
|
35
|
+
return [
|
|
36
|
+
`${CONVENTIONS.system} ${CONVENTIONS.model} ${CONVENTIONS.querying} ${CONVENTIONS.mutations}`,
|
|
37
|
+
"",
|
|
38
|
+
"Discovery sequence:",
|
|
39
|
+
steps,
|
|
40
|
+
"",
|
|
41
|
+
`Call the \`capabilities\` tool for the full annotated tool catalog; read ${templates} resources (or \`graph_inspect\`) for entity detail.`,
|
|
42
|
+
].join("\n");
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=instructions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../../../../src/kernel/project/mcp/instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,sBAAsB,EACtB,WAAW,GACZ,MAAM,+CAA+C,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,gFAAgF;AAChF,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAoC;IAEpC,sEAAsE;IACtE,0EAA0E;IAC1E,8EAA8E;IAC9E,qDAAqD;IACrD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;IAC7D,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC;SACxC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;SAClE,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE5E,OAAO;QACL,GAAG,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,SAAS,EAAE;QAC7F,EAAE;QACF,qBAAqB;QACrB,KAAK;QACL,EAAE;QACF,4EAA4E,SAAS,sDAAsD;KAC5I,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project a {@link PragmaError} into an SDK `McpError` for the NATIVE MCP
|
|
3
|
+
* surfaces (the `prompts/*` provider, the `pragma:{+uri}` resource browser),
|
|
4
|
+
* which signal failure by throwing a JSON-RPC error rather than by returning the
|
|
5
|
+
* `{ ok, error }` tool envelope.
|
|
6
|
+
*
|
|
7
|
+
* A native read must not swallow a failure into plain-text "success" content: it
|
|
8
|
+
* carries the machine `code` AND the structured `recovery` into the JSON-RPC
|
|
9
|
+
* `data`, so an agent that hits a cold store over `prompts/list` or a resource
|
|
10
|
+
* read sees the SAME `STORE_UNAVAILABLE` + `sources_update` recovery the tool
|
|
11
|
+
* envelope carries — never a bare string with the recovery dropped.
|
|
12
|
+
*
|
|
13
|
+
* The SDK's `McpError`/`ErrorCode` are PASSED IN by the caller (which already
|
|
14
|
+
* dynamic-imported them in its `register`), so this module — reachable on the
|
|
15
|
+
* capabilities import graph — never statically pulls the SDK onto the
|
|
16
|
+
* `--help`/`__complete` fast path.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Build an `McpError` from a {@link PragmaError}, mapping the machine code to a
|
|
20
|
+
* JSON-RPC code and preserving `code`/`recovery`/`suggestions`/`validOptions` in
|
|
21
|
+
* `data`.
|
|
22
|
+
*
|
|
23
|
+
* @param error - The structured pragma error to project.
|
|
24
|
+
* @param primitives - The SDK `McpError`/`ErrorCode` the caller imported.
|
|
25
|
+
* @returns An `McpError` carrying the diagnostic + recovery in its `data`.
|
|
26
|
+
*/
|
|
27
|
+
export function mcpErrorFrom(error, { McpError: McpErrorCtor, ErrorCode: ErrorCodeEnum }) {
|
|
28
|
+
// A bad/missing entity or rejected input is the caller's fault (InvalidParams);
|
|
29
|
+
// an unreachable store or internal fault is the server's (InternalError).
|
|
30
|
+
const jsonRpcCode = error.code === "ENTITY_NOT_FOUND" || error.code === "INVALID_INPUT"
|
|
31
|
+
? ErrorCodeEnum.InvalidParams
|
|
32
|
+
: ErrorCodeEnum.InternalError;
|
|
33
|
+
const data = { code: error.code };
|
|
34
|
+
if (error.recovery)
|
|
35
|
+
data.recovery = error.recovery;
|
|
36
|
+
if (error.suggestions.length > 0)
|
|
37
|
+
data.suggestions = error.suggestions;
|
|
38
|
+
if (error.validOptions)
|
|
39
|
+
data.validOptions = error.validOptions;
|
|
40
|
+
return new McpErrorCtor(jsonRpcCode, error.message, data);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=mcpError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpError.js","sourceRoot":"","sources":["../../../../../src/kernel/project/mcp/mcpError.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAWH;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAkB,EAClB,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAsB;IAExE,gFAAgF;IAChF,0EAA0E;IAC1E,MAAM,WAAW,GACf,KAAK,CAAC,IAAI,KAAK,kBAAkB,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe;QACjE,CAAC,CAAC,aAAa,CAAC,aAAa;QAC7B,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC;IAClC,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3D,IAAI,KAAK,CAAC,QAAQ;QAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACnD,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IACvE,IAAI,KAAK,CAAC,YAAY;QAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IAC/D,OAAO,IAAI,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt entities, read two ways from one graph type.
|
|
3
|
+
*
|
|
4
|
+
* A prompt lives in the graph as an entity the distribution's vocabulary
|
|
5
|
+
* declares, and two surfaces offer it: the native MCP `prompts/list` +
|
|
6
|
+
* `prompts/get` handlers, and the `prompt list` / `prompt lookup` verbs behind
|
|
7
|
+
* the covenant tools. The pair is the cohesion principle — the reader here is
|
|
8
|
+
* the ONE place either surface learns what a prompt is, so the two can never
|
|
9
|
+
* report a different set of prompts or a different template body for one.
|
|
10
|
+
*
|
|
11
|
+
* The barrel carries both halves, and they READ DIFFERENTLY — the distinction
|
|
12
|
+
* matters to anyone rerouting imports through here, so it is stated rather
|
|
13
|
+
* than implied.
|
|
14
|
+
*
|
|
15
|
+
* `promptProvider` is the MCP module hook. Its `prompts/list` is STORELESS:
|
|
16
|
+
* it projects the pack index through `listPromptSummaries`, returning `[]`
|
|
17
|
+
* when no index is reachable and never booting the store. Its `prompts/get`
|
|
18
|
+
* is store-backed. The provider is imported STATICALLY by the prompt
|
|
19
|
+
* capability (`capabilities/prompt/index.ts`) — what it defers is the MCP SDK
|
|
20
|
+
* itself, whose request schemas it reaches through a dynamic import so the SDK
|
|
21
|
+
* stays off the `--help`/`__complete` fast path.
|
|
22
|
+
*
|
|
23
|
+
* `readPrompts` and `readPrompt` are the reads the CLI verbs take, and BOTH
|
|
24
|
+
* are store-backed: they query through `runSelect` directly, not through the
|
|
25
|
+
* index projection. A caller that expects a listing here to be as cheap as the
|
|
26
|
+
* MCP one is mistaken, and a reroute that makes either reachable statically
|
|
27
|
+
* from the capability graph puts a store boot on the fast path.
|
|
28
|
+
*
|
|
29
|
+
* `listPromptSummaries` stays internal. It is the MCP list path's projection,
|
|
30
|
+
* not a shared foundation under the two exported reads, and a caller choosing
|
|
31
|
+
* it directly is choosing a partial prompt without the store-backed body that
|
|
32
|
+
* makes it usable.
|
|
33
|
+
*/
|
|
34
|
+
export { promptProvider } from "./provider.js";
|
|
35
|
+
export { readPrompt, readPrompts } from "./source.js";
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/kernel/project/mcp/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The native MCP `prompts/*` provider — the `mcpPrompts` module hook, mirroring
|
|
3
|
+
* the resource provider exactly.
|
|
4
|
+
*
|
|
5
|
+
* `register` wires the low-level `prompts/list` + `prompts/get` request handlers
|
|
6
|
+
* and advertises the `prompts` capability (so the server declares it even with
|
|
7
|
+
* zero prompts — an empty list is a valid, honest surface). Listing is STORELESS
|
|
8
|
+
* (index-backed via {@link listPromptSummaries}); a get is STORE-BACKED (SPARQL
|
|
9
|
+
* via {@link readPrompt}), then the template body is filled with the call's
|
|
10
|
+
* arguments. The SDK request schemas are dynamic-imported inside `register`, so
|
|
11
|
+
* this module — reachable on the capabilities import graph through the prompt
|
|
12
|
+
* module — never pulls the SDK types onto the `--help`/`__complete` fast path.
|
|
13
|
+
*
|
|
14
|
+
* Both handlers open with a STORELESS cold-store pre-check ({@link
|
|
15
|
+
* checkStoreAvailable}), and the store-backed `get` projects any read failure
|
|
16
|
+
* through {@link mcpErrorFrom}, so the native surface converges with the
|
|
17
|
+
* store-backed `prompt_list` tool: a cold store — or a store that cannot answer
|
|
18
|
+
* the prompt query — surfaces the SAME machine code and recovery here as the
|
|
19
|
+
* tool envelope carries, rather than a silent `[]` (list) or a bogus "not found"
|
|
20
|
+
* (get) that masks it. When the store is available (including the embedded
|
|
21
|
+
* fallback) both handlers behave exactly as before.
|
|
22
|
+
*/
|
|
23
|
+
import { asPragmaError } from "../../../error/fromTaskError.js";
|
|
24
|
+
import { resolveSources } from "../../../runtime/resolveSources.js";
|
|
25
|
+
import { checkStoreAvailable } from "../../../runtime/storeReadiness.js";
|
|
26
|
+
import { mcpErrorFrom } from "../mcpError.js";
|
|
27
|
+
import { listPromptSummaries, readPrompt } from "./source.js";
|
|
28
|
+
/** Substitute `{{arg}}` placeholders in a template body with provided values. */
|
|
29
|
+
export function fillTemplate(body, args) {
|
|
30
|
+
if (!args)
|
|
31
|
+
return body;
|
|
32
|
+
return body.replace(/\{\{\s*(\w+)\s*\}\}/g, (whole, key) => {
|
|
33
|
+
const value = args[key];
|
|
34
|
+
return value === undefined || value === null ? whole : String(value);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/** The native prompt provider (registered by buildServer via `mcpPrompts`). */
|
|
38
|
+
export const promptProvider = {
|
|
39
|
+
async register(server, runtime) {
|
|
40
|
+
const { ListPromptsRequestSchema, GetPromptRequestSchema, McpError, ErrorCode, } = await import("@modelcontextprotocol/sdk/types.js");
|
|
41
|
+
// Advertise the capability even when empty — the surface exists regardless
|
|
42
|
+
// of whether the active graph ships prompt entities.
|
|
43
|
+
server.server.registerCapabilities({ prompts: { listChanged: false } });
|
|
44
|
+
// A STORELESS cold-store pre-check, shared with the store-backed `prompt_list`
|
|
45
|
+
// tool (whose `needsStore` guard throws) and the resource browser: a cold
|
|
46
|
+
// store must present the SAME STORE_UNAVAILABLE + `sources_update` recovery on
|
|
47
|
+
// native `prompts/*` as on the tool surface, not silently list from a stale
|
|
48
|
+
// index (or `[]`) here while the tool errors. Available (incl. the embedded
|
|
49
|
+
// fallback) → the native list stays storeless and the get stays store-backed.
|
|
50
|
+
const guardStore = async () => {
|
|
51
|
+
const unavailable = checkStoreAvailable(await runtime.loadConfig(), runtime.cwd);
|
|
52
|
+
if (unavailable)
|
|
53
|
+
throw mcpErrorFrom(unavailable, { McpError, ErrorCode });
|
|
54
|
+
};
|
|
55
|
+
server.server.setRequestHandler(ListPromptsRequestSchema, async () => {
|
|
56
|
+
await guardStore();
|
|
57
|
+
return {
|
|
58
|
+
prompts: listPromptSummaries(resolveSources(await runtime.loadConfig(), runtime.cwd)).map((prompt) => ({
|
|
59
|
+
name: prompt.name,
|
|
60
|
+
...(prompt.description ? { description: prompt.description } : {}),
|
|
61
|
+
})),
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
server.server.setRequestHandler(GetPromptRequestSchema, async (request) => {
|
|
65
|
+
await guardStore();
|
|
66
|
+
const { name, arguments: args } = request.params;
|
|
67
|
+
// The read can fail (a store that cannot answer the prompt query), and a
|
|
68
|
+
// native surface signals that by THROWING — so project it the way the
|
|
69
|
+
// resource browser does, carrying the machine code and the recovery into
|
|
70
|
+
// the JSON-RPC `data` instead of letting a bare Error reach the agent.
|
|
71
|
+
let entry;
|
|
72
|
+
try {
|
|
73
|
+
entry = await readPrompt(runtime, name);
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
throw mcpErrorFrom(asPragmaError(error), { McpError, ErrorCode });
|
|
77
|
+
}
|
|
78
|
+
if (!entry) {
|
|
79
|
+
// Reached only when the store IS available — a genuine miss, not a cold
|
|
80
|
+
// store (which `guardStore` already surfaced as STORE_UNAVAILABLE).
|
|
81
|
+
throw new McpError(ErrorCode.InvalidParams, `Prompt "${name}" not found`);
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
...(entry.description ? { description: entry.description } : {}),
|
|
85
|
+
messages: [
|
|
86
|
+
{
|
|
87
|
+
role: "user",
|
|
88
|
+
content: {
|
|
89
|
+
type: "text",
|
|
90
|
+
text: fillTemplate(entry.body, args),
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../../../src/kernel/project/mcp/prompts/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9D,iFAAiF;AACjF,MAAM,UAAU,YAAY,CAC1B,IAAY,EACZ,IAAyC;IAEzC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE;QACjE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,MAAM,cAAc,GAAsB;IAC/C,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO;QAC5B,MAAM,EACJ,wBAAwB,EACxB,sBAAsB,EACtB,QAAQ,EACR,SAAS,GACV,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAC;QAEvD,2EAA2E;QAC3E,qDAAqD;QACrD,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAExE,+EAA+E;QAC/E,0EAA0E;QAC1E,+EAA+E;QAC/E,4EAA4E;QAC5E,4EAA4E;QAC5E,8EAA8E;QAC9E,MAAM,UAAU,GAAG,KAAK,IAAmB,EAAE;YAC3C,MAAM,WAAW,GAAG,mBAAmB,CACrC,MAAM,OAAO,CAAC,UAAU,EAAE,EAC1B,OAAO,CAAC,GAAG,CACZ,CAAC;YACF,IAAI,WAAW;gBAAE,MAAM,YAAY,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5E,CAAC,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,UAAU,EAAE,CAAC;YACnB,OAAO;gBACL,OAAO,EAAE,mBAAmB,CAC1B,cAAc,CAAC,MAAM,OAAO,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CACxD,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACnE,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACxE,MAAM,UAAU,EAAE,CAAC;YACnB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YACjD,yEAAyE;YACzE,sEAAsE;YACtE,yEAAyE;YACzE,uEAAuE;YACvE,IAAI,KAA6C,CAAC;YAClD,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;YACpE,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,wEAAwE;gBACxE,oEAAoE;gBACpE,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,aAAa,EACvB,WAAW,IAAI,aAAa,CAC7B,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAe;wBACrB,OAAO,EAAE;4BACP,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;yBACrC;qBACF;iBACF;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
|