@canonical/pragma-cli 0.33.0 → 0.35.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/dist/.build-ok +0 -0
- package/dist/package.json +83 -0
- package/dist/pragma.conf.js +814 -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 +293 -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 +92 -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/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 +205 -0
- package/dist/src/capabilities/doctor/checks/targetHealth.js.map +1 -0
- package/dist/src/capabilities/doctor/doctor.render.js +185 -0
- package/dist/src/capabilities/doctor/doctor.render.js.map +1 -0
- package/dist/src/capabilities/doctor/doctor.verb.js +45 -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 +83 -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 +66 -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 +53 -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 +168 -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 +343 -0
- package/dist/src/capabilities/setup/operations/setupGenerator.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupLsp.js +277 -0
- package/dist/src/capabilities/setup/operations/setupLsp.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupMcp.js +207 -0
- package/dist/src/capabilities/setup/operations/setupMcp.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupSkills.js +316 -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 +193 -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 +334 -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 +263 -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/bands.js +16 -0
- package/dist/src/capabilities/shared/bands.js.map +1 -0
- package/dist/src/capabilities/shared/index.js +26 -0
- package/dist/src/capabilities/shared/index.js.map +1 -0
- package/dist/src/capabilities/shared/packageManager.js +103 -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 +195 -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 +167 -0
- package/dist/src/capabilities/sources/installSkills.js.map +1 -0
- package/dist/src/capabilities/sources/runUpdate.js +394 -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 +99 -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 +44 -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 +82 -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 +25 -0
- package/dist/src/kernel/index.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 +223 -0
- package/dist/src/kernel/packs/resolveEntity.js.map +1 -0
- package/dist/src/kernel/packs/runBodies.js +87 -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 +369 -0
- package/dist/src/kernel/packs/schema.js.map +1 -0
- package/dist/src/kernel/packs/sparql/applyFilters.js +68 -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 +217 -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 +216 -0
- package/dist/src/kernel/project/cli/globalFlags.js.map +1 -0
- package/dist/src/kernel/project/cli/helpFormat.js +59 -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 +197 -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 +300 -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 +85 -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/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 +25 -24
- package/pragma.conf.ts +853 -0
- package/src/bin.ts +276 -82
- package/src/capabilities/block.parity.test.ts +253 -0
- package/src/capabilities/capabilities/capabilities.render.ts +4 -3
- package/src/capabilities/capabilities/capabilities.verb.ts +32 -14
- package/src/capabilities/capabilities/catalog.ts +20 -12
- package/src/capabilities/capabilities/hints.ts +43 -24
- package/src/capabilities/capabilities/index.ts +1 -1
- package/src/capabilities/colophon/collectColophon.ts +50 -24
- package/src/capabilities/colophon/colophon.render.ts +25 -1
- package/src/capabilities/colophon/colophon.test.ts +42 -21
- package/src/capabilities/colophon/colophon.verb.ts +9 -5
- package/src/capabilities/colophon/types.ts +16 -7
- package/src/capabilities/config/collectConfigShow.test.ts +58 -0
- package/src/capabilities/config/collectConfigShow.ts +43 -6
- package/src/capabilities/config/field.render.ts +4 -5
- package/src/capabilities/config/fields.ts +17 -37
- 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 +14 -9
- package/src/capabilities/config/show.render.test.ts +77 -5
- package/src/capabilities/config/show.render.ts +8 -13
- package/src/capabilities/config/show.verb.ts +13 -9
- package/src/capabilities/config/types.ts +26 -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 +95 -103
- package/src/capabilities/create/cliProjection.ts +227 -0
- package/src/capabilities/create/constants.ts +50 -0
- package/src/capabilities/create/create.mcp.test.ts +91 -7
- package/src/capabilities/create/create.render.ts +71 -7
- package/src/capabilities/create/create.test.ts +523 -162
- package/src/capabilities/create/create.verb.ts +361 -321
- 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 +9 -14
- 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 +40 -46
- package/src/capabilities/create/shippedCreate.subprocess.test.ts +164 -0
- package/src/capabilities/create/types.ts +29 -5
- package/src/capabilities/{standard/parity.test.ts → distribution.parity.test.ts} +24 -14
- package/src/capabilities/distribution.test.ts +122 -0
- package/src/capabilities/distribution.ts +54 -0
- package/src/capabilities/doctor/checks/checkKeStore.ts +9 -7
- package/src/capabilities/doctor/checks/checkPackageRefs.ts +82 -46
- package/src/capabilities/doctor/checks/checkPragmaVersion.ts +5 -4
- package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +125 -30
- package/src/capabilities/doctor/checks/checkShellCompletions.ts +113 -27
- 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 +274 -0
- package/src/capabilities/doctor/doctor.render.test.ts +24 -13
- package/src/capabilities/doctor/doctor.render.ts +45 -20
- package/src/capabilities/doctor/doctor.test.ts +158 -40
- package/src/capabilities/doctor/doctor.verb.ts +9 -5
- package/src/capabilities/doctor/runChecks.ts +65 -66
- package/src/capabilities/doctor/types.ts +21 -5
- package/src/capabilities/emptyRecovery.test.ts +44 -22
- 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 -5
- package/src/capabilities/graph/query.render.ts +15 -3
- package/src/capabilities/graph/query.verb.ts +5 -4
- package/src/capabilities/graph/runQuery.ts +9 -7
- package/src/capabilities/index.ts +25 -19
- package/src/capabilities/info/collectInfo.ts +15 -10
- package/src/capabilities/info/info.render.ts +4 -3
- package/src/capabilities/info/info.verb.ts +4 -3
- package/src/capabilities/lazy.test.ts +125 -2
- 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 +42 -83
- package/src/capabilities/prompt/index.ts +2 -2
- package/src/capabilities/prompt/prompt.render.ts +6 -2
- package/src/capabilities/prompt/prompt.test.ts +12 -6
- package/src/capabilities/prompt/types.ts +1 -1
- package/src/capabilities/prompt/verbs.ts +26 -14
- package/src/capabilities/reference.test.ts +63 -0
- package/src/capabilities/resources/provider.ts +367 -91
- package/src/capabilities/resources/resources.test.ts +411 -59
- package/src/capabilities/setup/buildPlan.ts +236 -0
- package/src/capabilities/setup/index.ts +7 -7
- package/src/capabilities/setup/mode.ts +74 -0
- package/src/capabilities/setup/operations/index.ts +74 -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 +397 -320
- package/src/capabilities/setup/operations/setupLsp.ts +329 -68
- package/src/capabilities/setup/operations/setupMcp.ts +137 -97
- package/src/capabilities/setup/operations/setupSkills.ts +336 -108
- package/src/capabilities/setup/plan.render.ts +241 -0
- package/src/capabilities/setup/plan.ts +236 -0
- package/src/capabilities/setup/setup.mcp.correctness.test.ts +432 -0
- package/src/capabilities/setup/setup.render.test.ts +281 -73
- package/src/capabilities/setup/setup.render.ts +45 -77
- package/src/capabilities/setup/setup.test.ts +972 -209
- package/src/capabilities/setup/setup.verb.ts +233 -74
- package/src/capabilities/setup/shell.test.ts +86 -0
- package/src/capabilities/setup/shell.ts +166 -14
- package/src/capabilities/setup/targets.ts +367 -0
- package/src/capabilities/setup/types.ts +18 -57
- package/src/capabilities/shared/assertExecOk.ts +68 -10
- package/src/capabilities/shared/index.ts +32 -0
- package/src/capabilities/shared/packageManager.test.ts +55 -0
- package/src/capabilities/shared/packageManager.ts +62 -6
- package/src/capabilities/skill/discover.ts +47 -9
- package/src/capabilities/skill/index.ts +1 -1
- package/src/capabilities/skill/render.ts +14 -14
- package/src/capabilities/skill/skill.test.ts +7 -5
- package/src/capabilities/skill/verbs.ts +9 -10
- package/src/capabilities/sources/collectStatus.ts +61 -51
- package/src/capabilities/sources/index.ts +2 -2
- package/src/capabilities/sources/installSkills.ts +86 -9
- package/src/capabilities/sources/runUpdate.ts +164 -141
- package/src/capabilities/sources/sources.test.ts +265 -119
- package/src/capabilities/sources/status.render.test.ts +53 -24
- package/src/capabilities/sources/status.render.ts +25 -30
- package/src/capabilities/sources/status.verb.ts +16 -9
- package/src/capabilities/sources/types.ts +18 -25
- package/src/capabilities/sources/update.render.ts +10 -3
- package/src/capabilities/sources/update.verb.ts +13 -24
- package/src/capabilities/surface.test.ts +165 -25
- package/src/capabilities/tier.parity.test.ts +144 -0
- package/src/capabilities/upgrade/runUpgrade.ts +8 -8
- package/src/capabilities/upgrade/upgrade.render.ts +4 -5
- package/src/capabilities/upgrade/upgrade.test.ts +3 -3
- package/src/capabilities/upgrade/upgrade.verb.ts +8 -4
- 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.test.ts +8 -6
- package/src/constants.ts +78 -22
- package/src/identity.test.ts +348 -0
- package/src/index.ts +2 -2
- package/src/kernel/completion/__snapshots__/emitScripts.test.ts.snap +20 -15
- package/src/kernel/completion/complete.test.ts +12 -2
- package/src/kernel/completion/complete.ts +1 -1
- package/src/kernel/completion/emitScripts.test.ts +1 -1
- package/src/kernel/completion/emitScripts.ts +5 -3
- package/src/kernel/completion/entitySource.test.ts +185 -41
- package/src/kernel/completion/entitySource.ts +133 -110
- package/src/kernel/completion/model.test.ts +165 -13
- package/src/kernel/completion/model.ts +105 -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 +104 -50
- package/src/kernel/completion/shellDrive.test.ts +611 -0
- package/src/kernel/completion/templates/bash.ts +7 -2
- package/src/kernel/completion/templates/fish.ts +28 -6
- package/src/kernel/completion/templates/index.ts +23 -0
- package/src/kernel/completion/types.ts +10 -3
- package/src/kernel/config/defaults.test.ts +108 -0
- package/src/kernel/config/defaults.ts +13 -23
- package/src/kernel/config/evaluateProjectConfig.ts +33 -11
- package/src/kernel/config/findProjectConfig.ts +4 -3
- package/src/kernel/config/firstRun.test.ts +44 -38
- package/src/kernel/config/firstRun.ts +24 -81
- package/src/kernel/config/globalConfig.ts +2 -2
- package/src/kernel/config/index.ts +5 -6
- package/src/kernel/config/paths.ts +17 -17
- package/src/kernel/config/readConfig.test.ts +246 -7
- package/src/kernel/config/readConfig.ts +8 -8
- package/src/kernel/config/schema.test.ts +50 -0
- package/src/kernel/config/schema.ts +100 -11
- package/src/kernel/config/types.ts +75 -19
- package/src/kernel/copy.test.ts +483 -0
- package/src/kernel/copy.ts +54 -0
- package/src/kernel/error/PragmaError.test.ts +6 -3
- package/src/kernel/error/PragmaError.ts +4 -2
- package/src/kernel/error/constants.ts +7 -4
- package/src/kernel/error/fromTaskError.ts +28 -6
- package/src/kernel/error/index.ts +1 -1
- package/src/kernel/error/recovery.test.ts +22 -45
- package/src/kernel/error/recovery.ts +36 -27
- package/src/kernel/error/renderError.ts +42 -1
- package/src/kernel/error/types.ts +25 -4
- package/src/kernel/index.ts +26 -0
- package/src/kernel/packs/collect.test.ts +195 -11
- package/src/kernel/packs/collect.ts +212 -61
- package/src/kernel/packs/compile.test.ts +293 -8
- package/src/kernel/packs/compile.ts +108 -15
- package/src/kernel/packs/disclosure.test.ts +5 -2
- package/src/kernel/packs/disclosure.ts +2 -2
- package/src/kernel/packs/graphql/buildLookupDocument.ts +1 -1
- package/src/kernel/packs/graphql/fetchGraphqlLookup.ts +13 -13
- package/src/kernel/packs/graphql/index.ts +20 -0
- package/src/kernel/packs/graphqlSource.test.ts +6 -3
- package/src/kernel/packs/index.ts +40 -0
- package/src/kernel/packs/iri.test.ts +73 -0
- package/src/kernel/packs/iri.ts +70 -20
- package/src/kernel/packs/renderPack.ts +28 -7
- package/src/kernel/packs/resolveEntity.test.ts +213 -0
- package/src/kernel/packs/resolveEntity.ts +132 -34
- package/src/kernel/packs/runBodies.ts +16 -16
- package/src/kernel/packs/sample.ts +1 -1
- package/src/kernel/packs/schema.ts +114 -11
- package/src/kernel/packs/sparql/applyFilters.ts +16 -17
- package/src/kernel/packs/sparql/buildLookupQuery.ts +75 -3
- package/src/kernel/packs/sparql/index.ts +37 -0
- package/src/kernel/packs/sparql/runSelect.test.ts +104 -10
- package/src/kernel/packs/sparql/runSelect.ts +75 -37
- package/src/kernel/packs/toolDescription.test.ts +52 -5
- package/src/kernel/packs/types.ts +52 -4
- package/src/kernel/packs/uniqueness.ts +5 -5
- package/src/kernel/project/cli/buildProgram.test.ts +157 -17
- package/src/kernel/project/cli/buildProgram.ts +77 -18
- package/src/kernel/project/cli/constants.ts +34 -0
- package/src/kernel/project/cli/dispatch.test.ts +227 -3
- package/src/kernel/project/cli/dispatch.ts +250 -48
- 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 +130 -30
- package/src/kernel/project/cli/helpFormat.ts +14 -1
- package/src/kernel/project/cli/rootHelp.ts +140 -111
- 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 +18 -10
- package/src/kernel/project/mcp/envelope.ts +2 -2
- package/src/kernel/project/mcp/instructions.ts +12 -7
- package/src/kernel/project/mcp/mcpError.ts +1 -1
- package/src/kernel/project/mcp/parity.test.ts +42 -1
- package/src/kernel/project/mcp/prompts/index.ts +37 -0
- package/src/kernel/project/mcp/prompts/prompts.test.ts +120 -5
- package/src/kernel/project/mcp/prompts/provider.ts +22 -8
- package/src/kernel/project/mcp/prompts/source.ts +69 -68
- package/src/kernel/project/mcp/registerVerb.ts +56 -11
- package/src/kernel/project/mcp/serve.ts +13 -5
- package/src/kernel/project/mcp/toolDescriptions.test.ts +6 -2
- package/src/kernel/render/__snapshots__/renderers.test.ts.snap +7 -4
- package/src/kernel/render/contracts.ts +21 -0
- package/src/kernel/render/disclosure.ts +4 -2
- package/src/kernel/render/envelope.ts +2 -3
- package/src/kernel/render/formatters.ts +1 -1
- package/src/kernel/render/prefixes.test.ts +36 -0
- package/src/kernel/render/prefixes.ts +40 -13
- package/src/kernel/render/renderers.test.ts +244 -7
- package/src/kernel/render/renderers.ts +222 -20
- package/src/kernel/render/style.test.ts +75 -24
- package/src/kernel/render/style.ts +31 -1
- package/src/kernel/render/turtle.ts +222 -0
- package/src/kernel/runtime/graphpack/build.ts +29 -3
- package/src/kernel/runtime/graphpack/buildIndex.test.ts +46 -0
- package/src/kernel/runtime/graphpack/buildIndex.ts +53 -18
- package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +5 -5
- package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +3 -3
- package/src/kernel/runtime/graphpack/embedded/pack.stories.generated.ts +3 -0
- package/src/kernel/runtime/graphpack/embedded.ts +39 -13
- package/src/kernel/runtime/graphpack/graphpack.test.ts +205 -5
- package/src/kernel/runtime/graphpack/hash.ts +3 -2
- package/src/kernel/runtime/graphpack/index.ts +1 -1
- package/src/kernel/runtime/graphpack/manifest.ts +114 -12
- package/src/kernel/runtime/graphpack/read.ts +5 -11
- package/src/kernel/runtime/graphpack/schemas.ts +74 -0
- package/src/kernel/runtime/graphpack/stories.ts +84 -0
- package/src/kernel/runtime/graphpack/types.ts +61 -48
- package/src/kernel/runtime/loadSession.ts +1 -1
- package/src/kernel/runtime/paths.ts +64 -15
- package/src/kernel/runtime/probe.test.ts +8 -4
- package/src/kernel/runtime/probe.ts +6 -6
- package/src/kernel/runtime/readEntity.ts +477 -32
- package/src/kernel/runtime/refs/gitOps.ts +1 -19
- package/src/kernel/runtime/refs/index.ts +39 -0
- package/src/kernel/runtime/refs/parseRef.ts +8 -8
- package/src/kernel/runtime/refs/resolve.ts +82 -66
- package/src/kernel/runtime/resolveSources.test.ts +63 -24
- package/src/kernel/runtime/resolveSources.ts +36 -25
- package/src/kernel/runtime/storeReadiness.ts +10 -10
- package/src/kernel/runtime/storeless.test.ts +1 -1
- package/src/kernel/runtime/types.ts +15 -1
- package/src/kernel/runtime/wasmEmbed.test.ts +56 -55
- package/src/kernel/spec/emitReference.test.ts +3 -3
- package/src/kernel/spec/emitReference.ts +242 -34
- package/src/kernel/spec/emitSurface.ts +57 -11
- package/src/kernel/spec/surfaceConformance.test.ts +4 -2
- package/src/kernel/spec/surfaceConformance.ts +8 -0
- package/src/kernel/spec/types.ts +277 -13
- package/src/kernel/spec/validate.ts +2 -1
- package/src/kernel/vocabulary.test.ts +164 -0
- package/src/kernel/vocabulary.ts +146 -0
- package/src/testing/PARITY_GAPS.ts +8 -2
- package/src/testing/behavioral/README.md +3 -3
- package/src/testing/behavioral/completion.test.ts +19 -6
- package/src/testing/behavioral/docExamples.test.ts +14 -0
- package/src/testing/behavioral/errorMatrix.mcp.test.ts +6 -5
- package/src/testing/behavioral/errorMatrix.storeless.test.ts +1 -1
- package/src/testing/behavioral/exitCodes.e2e.test.ts +6 -5
- package/src/testing/behavioral/firstRun.e2e.test.ts +24 -24
- package/src/testing/behavioral/harness.foundation.test.ts +14 -5
- package/src/testing/behavioral/journeys.cli.test.ts +117 -76
- package/src/testing/behavioral/journeys.defaultPack.test.ts +88 -182
- package/src/testing/behavioral/journeys.firstInstall.test.ts +167 -0
- 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.mcpLifecycle.mcp.test.ts +9 -6
- package/src/testing/behavioral/journeys.packageStories.test.ts +188 -0
- package/src/testing/behavioral/liveReadSurface.ts +4 -3
- package/src/testing/behavioral/mcpServe.e2e.test.ts +57 -2
- package/src/testing/behavioral/mcpSurface.test.ts +10 -5
- package/src/testing/behavioral/rootCli.e2e.test.ts +26 -2
- package/src/testing/behavioral/staleCommands.test.ts +10 -0
- package/src/testing/eval/__snapshots__/eval.test.ts.snap +7 -7
- package/src/testing/eval/cases/assembly.ts +13 -6
- package/src/testing/eval/cases/effectful.ts +28 -15
- package/src/testing/eval/cases/readNouns.ts +22 -20
- package/src/testing/eval/cases/stable.ts +5 -1
- package/src/testing/eval/eval.test.ts +7 -1
- package/src/testing/fixtures/blockGraph.ts +79 -0
- package/src/testing/fixtures/fixtureCapability.ts +45 -1
- package/src/testing/fixtures/graph/canonical.ts +94 -5
- package/src/testing/fixtures/graph/defaultPack.ts +7 -6
- package/src/testing/fixtures/graph/owlExport.ts +7 -5
- package/src/testing/helpers/blankCanonicalRanges.ts +36 -0
- package/src/testing/helpers/fixtureGraph.ts +33 -16
- package/src/testing/helpers/packRuntime.ts +2 -3
- package/src/testing/helpers/projectCli.ts +2 -1
- package/src/testing/helpers/projectMcp.ts +38 -6
- package/src/testing/helpers/runCli.ts +35 -18
- package/src/testing/perf/budgets.test.ts +24 -9
- package/src/testing/perf/budgets.ts +76 -12
- package/src/testing/perf/codegen.test.ts +126 -0
- package/src/testing/perf/globalSetup.test.ts +286 -0
- package/src/testing/perf/globalSetup.ts +611 -14
- 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/src/types.ts +2 -2
- package/dist/pragma +0 -0
- package/src/capabilities/block/blockList.test.ts +0 -79
- package/src/capabilities/block/blockList.verb.ts +0 -163
- package/src/capabilities/block/index.ts +0 -25
- package/src/capabilities/block/pack.ts +0 -166
- package/src/capabilities/block/parity.test.ts +0 -187
- package/src/capabilities/block/tierChain.ts +0 -78
- package/src/capabilities/colophon/pragmaColophon.ts +0 -66
- package/src/capabilities/create/compiledCreate.subprocess.test.ts +0 -152
- package/src/capabilities/create/templates.embedded.generated.ts +0 -53
- package/src/capabilities/doctor/checks/checkConfigFile.ts +0 -41
- package/src/capabilities/doctor/checks/checkMcpCommands.ts +0 -114
- package/src/capabilities/doctor/checks/checkMcpConfigured.ts +0 -67
- package/src/capabilities/doctor/checks/checkSkillsSymlinked.ts +0 -60
- package/src/capabilities/doctor/checks/deriveBand.test.ts +0 -42
- package/src/capabilities/doctor/checks/deriveBand.ts +0 -28
- package/src/capabilities/modifier/index.ts +0 -15
- package/src/capabilities/modifier/pack.ts +0 -64
- package/src/capabilities/standard/index.ts +0 -18
- package/src/capabilities/standard/pack.ts +0 -128
- package/src/capabilities/tier/index.ts +0 -19
- package/src/capabilities/tier/lookup.render.test.ts +0 -72
- package/src/capabilities/tier/lookup.render.ts +0 -59
- package/src/capabilities/tier/lookup.test.ts +0 -83
- package/src/capabilities/tier/lookup.verb.ts +0 -44
- package/src/capabilities/tier/pack.ts +0 -28
- package/src/capabilities/tier/runLookup.ts +0 -87
- package/src/capabilities/token/addConfig.render.ts +0 -27
- package/src/capabilities/token/addConfig.test.ts +0 -62
- package/src/capabilities/token/addConfig.verb.ts +0 -40
- package/src/capabilities/token/index.ts +0 -19
- package/src/capabilities/token/pack.ts +0 -58
- package/src/capabilities/token/runAddConfig.ts +0 -95
- package/src/kernel/completion/bashDrive.test.ts +0 -73
- package/src/kernel/config/__snapshots__/firstRun.test.ts.snap +0 -11
- package/src/kernel/runtime/graphpack/embedded/sample.ttl +0 -39
- package/src/kernel/runtime/lock.ts +0 -90
|
@@ -1,27 +1,44 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The ONE source of truth for prompt entities — read TWO ways from ONE KG type
|
|
3
|
-
*
|
|
4
|
-
* `
|
|
2
|
+
* The ONE source of truth for prompt entities — read TWO ways from ONE KG type,
|
|
3
|
+
* so the native MCP `prompts/*` surface and the covenant `prompt_list`/
|
|
4
|
+
* `prompt_lookup` content tools never diverge.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
6
|
+
* The type and its four properties are DECLARED by the distribution
|
|
7
|
+
* (`kernel/vocabulary.ts`), not named here — this module knows the shape of a
|
|
8
|
+
* prompt, not whose prompt it is. With `<type>`/`<body>`/`<argument>`/
|
|
9
|
+
* `<argName>`/`<argRequired>` standing for the declared terms, a prompt entity
|
|
10
|
+
* is authored as:
|
|
11
|
+
*
|
|
12
|
+
* ex:prompt.x a <type> ;
|
|
13
|
+
* rdfs:label "x" ; # the prompt NAME (indexed → storeless list)
|
|
14
|
+
* rdfs:comment "…" ; # the description (indexed)
|
|
15
|
+
* <body> "…" ; # the template body (store-backed)
|
|
16
|
+
* <argument> [ <argName> "a" ; rdfs:comment "…" ; <argRequired> true ] .
|
|
12
17
|
*
|
|
13
18
|
* Listing is STORELESS (over the pack index — `label`/`description` are indexed),
|
|
14
19
|
* so `prompts/list` and native discovery cost nothing until a `get`. A `get`
|
|
15
|
-
* (body + arguments) is STORE-BACKED through
|
|
16
|
-
*
|
|
17
|
-
*
|
|
20
|
+
* (body + arguments) is STORE-BACKED through `runSelect` — identical laziness to
|
|
21
|
+
* the resource browser (list storeless, read store-backed). An empty or missing
|
|
22
|
+
* index yields zero prompts (never a store boot on the list path).
|
|
23
|
+
*
|
|
24
|
+
* The store-backed reads route through `runSelect` and DO NOT catch. A cold
|
|
25
|
+
* store is already refused upstream — the tools are `needsStore`, and the native
|
|
26
|
+
* provider calls `guardStore()` first — so a swallowed failure here could only
|
|
27
|
+
* ever hide a real one, reporting a broken query as an empty graph. `runSelect`
|
|
28
|
+
* classifies an unbound prefix as STORE_UNAVAILABLE with its `sources update`
|
|
29
|
+
* recovery and lets everything else propagate.
|
|
18
30
|
*/
|
|
19
31
|
|
|
20
32
|
import { readPackIndex } from "../../../completion/entitySource.js";
|
|
21
|
-
import
|
|
33
|
+
import { runSelect } from "../../../packs/sparql/index.js";
|
|
34
|
+
import type { PackRow } from "../../../packs/types.js";
|
|
35
|
+
import { distributionSource } from "../../../packs/types.js";
|
|
36
|
+
import type { PragmaRuntime } from "../../../runtime/index.js";
|
|
37
|
+
import type { SourcesDecision } from "../../../runtime/resolveSources.js";
|
|
38
|
+
import { VOCABULARY } from "../../../vocabulary.js";
|
|
22
39
|
|
|
23
|
-
/** The
|
|
24
|
-
|
|
40
|
+
/** The declared prompt terms this module reads the graph with. */
|
|
41
|
+
const PROMPT = VOCABULARY.prompt;
|
|
25
42
|
|
|
26
43
|
/** One declared argument of a prompt template. */
|
|
27
44
|
export interface PromptArgument {
|
|
@@ -42,27 +59,29 @@ export interface PromptEntry extends PromptSummary {
|
|
|
42
59
|
readonly arguments: readonly PromptArgument[];
|
|
43
60
|
}
|
|
44
61
|
|
|
45
|
-
/** Whether an index entity
|
|
62
|
+
/** Whether an index entity carries the prompt type (primary type or any type). */
|
|
46
63
|
function isPromptEntity(entity: {
|
|
47
64
|
type: string;
|
|
48
65
|
types?: readonly string[];
|
|
49
66
|
}): boolean {
|
|
50
67
|
return (
|
|
51
|
-
entity.type ===
|
|
52
|
-
(Array.isArray(entity.types) && entity.types.includes(
|
|
68
|
+
entity.type === PROMPT.type ||
|
|
69
|
+
(Array.isArray(entity.types) && entity.types.includes(PROMPT.type))
|
|
53
70
|
);
|
|
54
71
|
}
|
|
55
72
|
|
|
56
73
|
/**
|
|
57
|
-
* List prompt summaries STORELESSLY from the
|
|
58
|
-
* when no index is reachable
|
|
59
|
-
* store.
|
|
74
|
+
* List prompt summaries STORELESSLY from the index of the pack the boot decision
|
|
75
|
+
* names. Returns `[]` when no index is reachable (including an unavailable
|
|
76
|
+
* store) or the index carries no prompts — never boots the store.
|
|
60
77
|
*
|
|
61
|
-
* @param
|
|
78
|
+
* @param decision - The boot decision from `resolveSources`.
|
|
62
79
|
* @returns Prompt summaries (name from the entity label, sorted by name).
|
|
63
80
|
*/
|
|
64
|
-
export function listPromptSummaries(
|
|
65
|
-
|
|
81
|
+
export function listPromptSummaries(
|
|
82
|
+
decision: SourcesDecision,
|
|
83
|
+
): PromptSummary[] {
|
|
84
|
+
const index = readPackIndex(decision);
|
|
66
85
|
if (!index || !Array.isArray(index.entities)) return [];
|
|
67
86
|
const summaries: PromptSummary[] = [];
|
|
68
87
|
for (const entity of index.entities) {
|
|
@@ -76,21 +95,6 @@ export function listPromptSummaries(rt: PragmaRuntime): PromptSummary[] {
|
|
|
76
95
|
return summaries.sort((a, b) => a.name.localeCompare(b.name));
|
|
77
96
|
}
|
|
78
97
|
|
|
79
|
-
/**
|
|
80
|
-
* Rows the prompt SELECT returns (one per argument; body repeats). The facade's
|
|
81
|
-
* SELECT bindings are keyed by variable name with PLAIN string values (an
|
|
82
|
-
* unbound OPTIONAL variable is simply absent) — the same shape `runSelect`
|
|
83
|
-
* consumes.
|
|
84
|
-
*/
|
|
85
|
-
interface PromptRow {
|
|
86
|
-
readonly name?: string;
|
|
87
|
-
readonly description?: string;
|
|
88
|
-
readonly body?: string;
|
|
89
|
-
readonly argName?: string;
|
|
90
|
-
readonly argDescription?: string;
|
|
91
|
-
readonly argRequired?: string;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
98
|
/** The SPARQL that materializes prompts (all, or one when `label` is bound). */
|
|
95
99
|
function promptQuery(labelFilter?: string): string {
|
|
96
100
|
const filter = labelFilter
|
|
@@ -98,24 +102,28 @@ function promptQuery(labelFilter?: string): string {
|
|
|
98
102
|
: "";
|
|
99
103
|
return [
|
|
100
104
|
"SELECT ?name ?description ?body ?argName ?argDescription ?argRequired WHERE {",
|
|
101
|
-
|
|
105
|
+
` ?prompt a ${PROMPT.type} ;`,
|
|
102
106
|
" rdfs:label ?name .",
|
|
103
107
|
filter,
|
|
104
108
|
" OPTIONAL { ?prompt rdfs:comment ?description }",
|
|
105
|
-
|
|
109
|
+
` OPTIONAL { ?prompt ${PROMPT.body} ?body }`,
|
|
106
110
|
" OPTIONAL {",
|
|
107
|
-
|
|
108
|
-
|
|
111
|
+
` ?prompt ${PROMPT.argument} ?arg .`,
|
|
112
|
+
` ?arg ${PROMPT.argName} ?argName .`,
|
|
109
113
|
" OPTIONAL { ?arg rdfs:comment ?argDescription }",
|
|
110
|
-
|
|
114
|
+
` OPTIONAL { ?arg ${PROMPT.argRequired} ?argRequired }`,
|
|
111
115
|
" }",
|
|
112
116
|
"}",
|
|
113
117
|
"ORDER BY ?name ?argName",
|
|
114
118
|
].join("\n");
|
|
115
119
|
}
|
|
116
120
|
|
|
117
|
-
/**
|
|
118
|
-
|
|
121
|
+
/**
|
|
122
|
+
* Fold SELECT rows (one per argument; the body repeats) into distinct
|
|
123
|
+
* {@link PromptEntry}s. Rows are keyed by SELECT variable name with plain string
|
|
124
|
+
* values, and an unbound OPTIONAL variable is simply absent.
|
|
125
|
+
*/
|
|
126
|
+
function foldPromptRows(rows: readonly PackRow[]): PromptEntry[] {
|
|
119
127
|
const byName = new Map<
|
|
120
128
|
string,
|
|
121
129
|
{ description?: string; body: string; args: Map<string, PromptArgument> }
|
|
@@ -151,27 +159,19 @@ function foldPromptRows(rows: readonly PromptRow[]): PromptEntry[] {
|
|
|
151
159
|
.sort((a, b) => a.name.localeCompare(b.name));
|
|
152
160
|
}
|
|
153
161
|
|
|
154
|
-
/** Extract the SELECT binding rows from a facade query result. */
|
|
155
|
-
function selectRows(result: unknown): PromptRow[] {
|
|
156
|
-
const typed = result as { type?: string; bindings?: unknown };
|
|
157
|
-
if (typed.type !== "select" || !Array.isArray(typed.bindings)) return [];
|
|
158
|
-
return typed.bindings as PromptRow[];
|
|
159
|
-
}
|
|
160
|
-
|
|
161
162
|
/**
|
|
162
|
-
* Read every prompt entity STORE-BACKED (body + arguments).
|
|
163
|
-
* the SPARQL facade; returns `[]` on any query failure (graceful degradation).
|
|
163
|
+
* Read every prompt entity STORE-BACKED (body + arguments).
|
|
164
164
|
*
|
|
165
165
|
* @param rt - The per-invocation runtime.
|
|
166
166
|
* @returns The materialized prompt entries, sorted by name.
|
|
167
|
+
* @throws PragmaError STORE_UNAVAILABLE when the store cannot answer; any other
|
|
168
|
+
* query failure propagates, so a broken read is never an empty graph.
|
|
169
|
+
* @note Impure — boots the store through `runSelect`.
|
|
167
170
|
*/
|
|
168
171
|
export async function readPrompts(rt: PragmaRuntime): Promise<PromptEntry[]> {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
} catch {
|
|
173
|
-
return [];
|
|
174
|
-
}
|
|
172
|
+
return foldPromptRows(
|
|
173
|
+
await runSelect(rt, promptQuery(), distributionSource("prompt")),
|
|
174
|
+
);
|
|
175
175
|
}
|
|
176
176
|
|
|
177
177
|
/**
|
|
@@ -179,16 +179,17 @@ export async function readPrompts(rt: PragmaRuntime): Promise<PromptEntry[]> {
|
|
|
179
179
|
*
|
|
180
180
|
* @param rt - The per-invocation runtime.
|
|
181
181
|
* @param name - The prompt name (its `rdfs:label`).
|
|
182
|
-
* @returns The materialized prompt, or `undefined` when
|
|
182
|
+
* @returns The materialized prompt, or `undefined` when the graph has no such
|
|
183
|
+
* prompt — a genuine miss, never a failed read.
|
|
184
|
+
* @throws PragmaError STORE_UNAVAILABLE when the store cannot answer; any other
|
|
185
|
+
* query failure propagates.
|
|
186
|
+
* @note Impure — boots the store through `runSelect`.
|
|
183
187
|
*/
|
|
184
188
|
export async function readPrompt(
|
|
185
189
|
rt: PragmaRuntime,
|
|
186
190
|
name: string,
|
|
187
191
|
): Promise<PromptEntry | undefined> {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
} catch {
|
|
192
|
-
return undefined;
|
|
193
|
-
}
|
|
192
|
+
return foldPromptRows(
|
|
193
|
+
await runSelect(rt, promptQuery(name), distributionSource("prompt")),
|
|
194
|
+
).at(0);
|
|
194
195
|
}
|
|
@@ -7,21 +7,23 @@
|
|
|
7
7
|
* capability, and a mutating verb gains the plan-first `confirm` flow: without
|
|
8
8
|
* `confirm`, the verb's `Task` is dry-run and a plan is returned
|
|
9
9
|
* (`{ planOnly: true, confirmRequired: true }`); with `confirm: true`, it runs
|
|
10
|
-
* for real.
|
|
10
|
+
* for real. That plan is rendered through the SAME shared effect formatter the
|
|
11
|
+
* CLI preview uses, so the agent-facing and human-facing surfaces describe one
|
|
12
|
+
* plan rather than two views of it.
|
|
11
13
|
*/
|
|
12
14
|
|
|
13
15
|
import { statSync } from "node:fs";
|
|
14
16
|
import { isAbsolute } from "node:path";
|
|
15
|
-
import { describeEffect,
|
|
16
|
-
import { runTask } from "@canonical/task/node";
|
|
17
|
+
import { describeEffect, type Task } from "@canonical/task";
|
|
18
|
+
import { runPreview, runTask } from "@canonical/task/node";
|
|
17
19
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
18
20
|
import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
19
21
|
import { z } from "zod";
|
|
20
22
|
import { asPragmaError } from "../../error/fromTaskError.js";
|
|
21
|
-
import { PragmaError } from "../../error/
|
|
23
|
+
import { PragmaError } from "../../error/index.js";
|
|
22
24
|
import type { InteractionRuntime, PragmaRuntime } from "../../runtime/types.js";
|
|
23
|
-
import {
|
|
24
|
-
import
|
|
25
|
+
import type { McpAnnotations, ParamSpec, VerbSpec } from "../../spec/index.js";
|
|
26
|
+
import { toolName } from "../../spec/index.js";
|
|
25
27
|
import { toolError, toolSuccess } from "./envelope.js";
|
|
26
28
|
|
|
27
29
|
/**
|
|
@@ -190,7 +192,7 @@ function mutateHandler(verb: VerbSpec, runtime: PragmaRuntime) {
|
|
|
190
192
|
const mutationRuntime: PragmaRuntime = {
|
|
191
193
|
...runtime,
|
|
192
194
|
cwd: effectiveCwd,
|
|
193
|
-
mutation: { preview },
|
|
195
|
+
mutation: { preview, undo: false },
|
|
194
196
|
interaction,
|
|
195
197
|
};
|
|
196
198
|
const task = await Promise.resolve(
|
|
@@ -199,10 +201,53 @@ function mutateHandler(verb: VerbSpec, runtime: PragmaRuntime) {
|
|
|
199
201
|
| Promise<Task<unknown>>,
|
|
200
202
|
);
|
|
201
203
|
if (preview) {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
204
|
+
// The HONEST preview (PR7), the same interpreter `--dry-run` uses:
|
|
205
|
+
// reads are real, writes are recorded and never executed. A tool call
|
|
206
|
+
// whose confirmed run would fail now returns that error instead of a
|
|
207
|
+
// confident plan, so plan-first predicts rather than reassures.
|
|
208
|
+
//
|
|
209
|
+
// NO `onLog`: a preview that PERFORMS an effect is not a preview of
|
|
210
|
+
// that effect, and the recorded `Log`s are already about to be listed.
|
|
211
|
+
// The interpreter prints nothing of its own when it is absent.
|
|
212
|
+
const previewExec = mutationRuntime.exec ?? {};
|
|
213
|
+
try {
|
|
214
|
+
const { effects } = await runPreview(task, {
|
|
215
|
+
cwd: previewExec.cwd,
|
|
216
|
+
onEffectStart: previewExec.onEffectStart,
|
|
217
|
+
});
|
|
218
|
+
// This payload is read by an LLM on a token budget, so it carries
|
|
219
|
+
// the plan a person is shown rather than the interpreter's
|
|
220
|
+
// transcript: the same `visiblePlanEffects` filter the CLI preview
|
|
221
|
+
// applies, from the same module. Without it every internal
|
|
222
|
+
// `Check exists:` and every repeat of the output directory spent
|
|
223
|
+
// tokens burying the real artifacts.
|
|
224
|
+
//
|
|
225
|
+
// The FILTER is what the surfaces share; the ROW FORMAT is not.
|
|
226
|
+
// These strings are structured data, so they stay `describeEffect` —
|
|
227
|
+
// the description `@canonical/task` gives its own effects, which
|
|
228
|
+
// carries byte counts, has no terminal chrome, and cannot embed an
|
|
229
|
+
// ANSI escape however the editor that spawned this server configured
|
|
230
|
+
// colour. That also lets the CLI's `--format json` plan and this one
|
|
231
|
+
// be compared string for string, which is the A6 invariant.
|
|
232
|
+
//
|
|
233
|
+
// Loaded lazily, and from the LIGHT `/format` subpath: the kernel
|
|
234
|
+
// keeps summon-core proper (and React) off its static import graph.
|
|
235
|
+
const { visiblePlanEffects } = await import(
|
|
236
|
+
"@canonical/summon-core/format"
|
|
237
|
+
);
|
|
238
|
+
const plan = visiblePlanEffects(
|
|
239
|
+
effects,
|
|
240
|
+
runtime.globalFlags.verbose === true,
|
|
241
|
+
).map(describeEffect);
|
|
242
|
+
return toolSuccess(
|
|
243
|
+
{ plan },
|
|
244
|
+
{ planOnly: true, confirmRequired: true },
|
|
245
|
+
);
|
|
246
|
+
} finally {
|
|
247
|
+
// No `store.invalidate()`: a preview cannot have changed disk. Only
|
|
248
|
+
// the verb's own teardown (e.g. an interactive session) runs here.
|
|
249
|
+
await previewExec.dispose?.();
|
|
250
|
+
}
|
|
206
251
|
}
|
|
207
252
|
// Real execution: spread the verb's runner options (prompt handler,
|
|
208
253
|
// stamping) into the interpreter; run teardown afterwards.
|
|
@@ -8,15 +8,16 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
11
|
-
import { loadEffectiveModules } from "../../packs/
|
|
12
|
-
import type { CapabilityModule } from "../../spec/
|
|
11
|
+
import { loadEffectiveModules } from "../../packs/index.js";
|
|
12
|
+
import type { CapabilityModule } from "../../spec/index.js";
|
|
13
13
|
import { buildServer } from "./buildServer.js";
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Build the MCP server and serve it over stdio until the transport closes.
|
|
17
17
|
*
|
|
18
|
-
* The server is a real invocation (not a fast path), so it merges
|
|
19
|
-
* story packs into the static capabilities before projecting
|
|
18
|
+
* The server is a real invocation (not a fast path), so it merges the package-
|
|
19
|
+
* and config-declared story packs into the static capabilities before projecting
|
|
20
|
+
* the tool surface.
|
|
20
21
|
*
|
|
21
22
|
* @param modules - The static capability modules to project.
|
|
22
23
|
* @param cwd - The working directory for the server's runtime.
|
|
@@ -28,7 +29,14 @@ export async function serveMcp(
|
|
|
28
29
|
): Promise<void> {
|
|
29
30
|
const dir = cwd ?? process.cwd();
|
|
30
31
|
const effective = await loadEffectiveModules(modules, dir);
|
|
31
|
-
|
|
32
|
+
// stderr only — the stdio transport owns stdout, so naming an unusable
|
|
33
|
+
// package story here is safe and reaches the host's server log.
|
|
34
|
+
for (const problem of effective.problems) {
|
|
35
|
+
process.stderr.write(
|
|
36
|
+
`Ignored story ${problem.source}: ${problem.message}\n`,
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
const server = await buildServer(effective.modules, dir);
|
|
32
40
|
const transport = new StdioServerTransport();
|
|
33
41
|
await server.connect(transport);
|
|
34
42
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* MCP tool descriptions carry NO CLI-syntax leaks (a PR8 doc→MCP residue).
|
|
3
3
|
*
|
|
4
4
|
* A verb's `doc` doubles as its MCP tool description (`registerVerb`), so a doc
|
|
5
|
-
* authored in CLI terms leaks flags an agent can't use — `--
|
|
5
|
+
* authored in CLI terms leaks flags an agent can't use — `--category`,
|
|
6
6
|
* `--dry-run`/`--yes`, or a `pragma …` shell command — into the agent-facing
|
|
7
7
|
* catalog. Tool descriptions are NOT frozen in the covenant, so this is the guard
|
|
8
8
|
* against the leak (and its recurrence). Storeless: listing tools never boots the
|
|
@@ -68,7 +68,11 @@ describe("MCP tool descriptions — no CLI-syntax leaks (doc→MCP residue)", ()
|
|
|
68
68
|
const byName = new Map(
|
|
69
69
|
descriptions.map((tool) => [tool.name, tool.description]),
|
|
70
70
|
);
|
|
71
|
-
|
|
71
|
+
// `block_list` was the original leak site (`--all-tiers`); L-OPEN-9 removed
|
|
72
|
+
// the flag AND made the description declared content (`toolDescription` in
|
|
73
|
+
// pragma.conf.ts), so the guard widens to "no CLI flag of any name" — the
|
|
74
|
+
// failure mode a re-authored story description could reintroduce.
|
|
75
|
+
expect(byName.get("block_list")).not.toMatch(/--[a-z]/);
|
|
72
76
|
expect(byName.get("graph_query")).not.toContain("pragma ontology list");
|
|
73
77
|
expect(byName.get("setup")).not.toMatch(/--dry-run|--yes/);
|
|
74
78
|
expect(byName.get("upgrade")).not.toContain("--dry-run");
|
|
@@ -47,8 +47,9 @@ exports[`render matrix (list/lookup/empty × plain/llm/json × detail) > renders
|
|
|
47
47
|
|
|
48
48
|
- \`ds:Button\` — **Button** component | Primary action
|
|
49
49
|
- \`ds:Card\` — **Card** pattern",
|
|
50
|
-
"plain": "
|
|
51
|
-
ds:
|
|
50
|
+
"plain": "URI NAME KIND NOTE
|
|
51
|
+
ds:Button Button component Primary action
|
|
52
|
+
ds:Card Card pattern -",
|
|
52
53
|
},
|
|
53
54
|
"lookup": {
|
|
54
55
|
"json": "{"uri":"https://ds.canonical.com/Button","name":"Button","kind":"component","note":"Primary action"}",
|
|
@@ -82,7 +83,8 @@ Note:
|
|
|
82
83
|
|
|
83
84
|
- **Button** component
|
|
84
85
|
- **Card** pattern",
|
|
85
|
-
"plain": "
|
|
86
|
+
"plain": "NAME KIND
|
|
87
|
+
Button component
|
|
86
88
|
Card pattern",
|
|
87
89
|
},
|
|
88
90
|
"lookup": {
|
|
@@ -109,7 +111,8 @@ Card pattern",
|
|
|
109
111
|
|
|
110
112
|
- **Button**
|
|
111
113
|
- **Card**",
|
|
112
|
-
"plain": "
|
|
114
|
+
"plain": "NAME
|
|
115
|
+
Button
|
|
113
116
|
Card",
|
|
114
117
|
},
|
|
115
118
|
"lookup": {
|
|
@@ -7,6 +7,27 @@
|
|
|
7
7
|
* option bags and hand them to {@link renderers}.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Presentation context the dispatcher threads into a verb's PLAIN formatter.
|
|
12
|
+
*
|
|
13
|
+
* Only list-shaped formatters read it: the header row is a plain-table
|
|
14
|
+
* concern (`llm` is the byte-frozen agent contract, `json` the envelope), so
|
|
15
|
+
* rather than a second formatter family the plain formatter takes this
|
|
16
|
+
* optional second argument. Absent context reads as an interactive terminal
|
|
17
|
+
* with headers on — the shape every pre-existing caller assumed.
|
|
18
|
+
*/
|
|
19
|
+
export interface RenderContext {
|
|
20
|
+
/** False when `--no-headers` suppressed the list header row. */
|
|
21
|
+
readonly headers: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Whether stdout is an interactive terminal. A piped plain EMPTY list
|
|
24
|
+
* prints its header row as a zero-record table so field-splitting
|
|
25
|
+
* consumers stay well-formed; a terminal prints nothing (the empty notice
|
|
26
|
+
* goes to stderr).
|
|
27
|
+
*/
|
|
28
|
+
readonly stdoutIsTty: boolean;
|
|
29
|
+
}
|
|
30
|
+
|
|
10
31
|
/** A single column in a list rendering. */
|
|
11
32
|
export interface ColumnDef<T> {
|
|
12
33
|
readonly key: keyof T & string;
|
|
@@ -4,8 +4,10 @@
|
|
|
4
4
|
* A verb renders at one of {@link DETAIL_LEVELS}. The effective level is chosen
|
|
5
5
|
* from four sources, most specific first: the `--detail` flag, the resolved
|
|
6
6
|
* config's `detail`, the verb's own `disclosure.default`, and finally the
|
|
7
|
-
* built-in `"standard"`.
|
|
8
|
-
* the
|
|
7
|
+
* built-in `"standard"`. Every source is validated upstream (the flag by
|
|
8
|
+
* `readDetail`, the config field by `z.enum` at load, a spec default by the
|
|
9
|
+
* pack grammar), so the fall-back here is a last belt against a source added
|
|
10
|
+
* later without validation — output never fails on disclosure.
|
|
9
11
|
*/
|
|
10
12
|
|
|
11
13
|
import {
|
|
@@ -8,9 +8,8 @@
|
|
|
8
8
|
* pair — is what makes CLI-JSON and MCP output provably identical.
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import type { PragmaError } from "../error/
|
|
12
|
-
import { serializeError } from "../error/
|
|
13
|
-
import type { ErrorPayload } from "../error/types.js";
|
|
11
|
+
import type { ErrorPayload, PragmaError } from "../error/index.js";
|
|
12
|
+
import { serializeError } from "../error/index.js";
|
|
14
13
|
|
|
15
14
|
/** The success envelope: an agent branches on `ok` before reading `data`. */
|
|
16
15
|
export interface SuccessEnvelope {
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { embeddedManifest } from "../runtime/graphpack/embedded.js";
|
|
3
|
+
import { DEFAULT_PREFIX_MAP } from "./prefixes.js";
|
|
4
|
+
|
|
5
|
+
describe("DEFAULT_PREFIX_MAP", () => {
|
|
6
|
+
it("is the standard RDF vocabulary plus the distribution's declared namespaces", () => {
|
|
7
|
+
// A literal pin, not a re-derivation: the point is that editing
|
|
8
|
+
// `pragma.conf.ts`'s `prefixes` is what moves this map, and that the
|
|
9
|
+
// standard half stays kernel-owned. A reviewer reads the values here.
|
|
10
|
+
expect(DEFAULT_PREFIX_MAP).toEqual({
|
|
11
|
+
rdfs: "http://www.w3.org/2000/01/rdf-schema#",
|
|
12
|
+
owl: "http://www.w3.org/2002/07/owl#",
|
|
13
|
+
skos: "http://www.w3.org/2004/02/skos/core#",
|
|
14
|
+
ds: "https://ds.canonical.com/",
|
|
15
|
+
cs: "http://pragma.canonical.com/codestandards#",
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it("binds every prefix to the same IRI the shipped pack does", () => {
|
|
20
|
+
// Two independently produced maps: this compiled-in constant, and the
|
|
21
|
+
// committed embedded artifact's harvested manifest. Neither derives the
|
|
22
|
+
// other, so agreement is a real claim.
|
|
23
|
+
//
|
|
24
|
+
// It is also the guard against a silent bundler skip. `scripts/bundle.ts`
|
|
25
|
+
// writes nothing when the content hash matches, and that hash covers pack
|
|
26
|
+
// SOURCES only — so declaring a namespace in `pragma.conf.ts` cannot, by
|
|
27
|
+
// itself, make the shipped pack bind it. Without this test that mismatch
|
|
28
|
+
// shows up as entities compacting to nothing; with it, it fails here.
|
|
29
|
+
const shipped = embeddedManifest().prefixes;
|
|
30
|
+
for (const [prefix, namespace] of Object.entries(DEFAULT_PREFIX_MAP)) {
|
|
31
|
+
expect(shipped[prefix], `pack binding for \`${prefix}:\``).toBe(
|
|
32
|
+
namespace,
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
});
|
|
@@ -1,21 +1,48 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
2
|
+
* The compiled-in prefix map — the CLI's prefixed↔full translation table.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* NOT only display compaction, despite the name this module used to carry.
|
|
5
|
+
* Three readers make it behavioural, and every one of them predates any store:
|
|
6
|
+
* - `render/compactUri.ts` shortens IRIs for output.
|
|
7
|
+
* - `packs/iri.ts#resolveUri` expands a user-typed prefixed name into the IRI a
|
|
8
|
+
* generated SPARQL read filters on, so a namespace missing here makes
|
|
9
|
+
* `<noun> lookup <prefix>:<local>` fail with "Invalid prefix".
|
|
10
|
+
* - `packs/graphql/fetchGraphqlLookup.ts#expandPrefixed` expands the prefixed
|
|
11
|
+
* values a GraphQL lookup returns, so a namespace missing here silently
|
|
12
|
+
* leaks the *unexpanded* token into a field documented as a full IRI.
|
|
13
|
+
*
|
|
14
|
+
* Two halves, one map. The W3C namespaces below are universal vocabulary, so
|
|
15
|
+
* the kernel names them. The DOMAIN namespaces are the distribution's, so they
|
|
16
|
+
* are read from `pragma.conf.ts`'s `prefixes` — the same declaration that pins
|
|
17
|
+
* what `sources update` builds the store with, so what the CLI compacts and
|
|
18
|
+
* what the graph is indexed under cannot drift apart. `render/prefixes.test.ts`
|
|
19
|
+
* pins that agreement against the shipped pack's own manifest.
|
|
20
|
+
*
|
|
21
|
+
* The asymmetry, stated plainly: a PROJECT layer's `prefixes` reach the pack it
|
|
22
|
+
* builds — hence that pack's store session and index — but never this map. This
|
|
23
|
+
* is a compiled-in presentation default, read on the storeless `--help`/
|
|
24
|
+
* `__complete` fast path where no config layer is reachable at all.
|
|
9
25
|
*/
|
|
10
26
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
export const DEFAULT_PREFIX_MAP: Readonly<Record<string, string>> = {
|
|
16
|
-
ds: "https://ds.canonical.com/",
|
|
17
|
-
cs: "http://pragma.canonical.com/codestandards#",
|
|
27
|
+
import conf from "../../../pragma.conf.js";
|
|
28
|
+
|
|
29
|
+
/** Standard RDF vocabulary — the same IRIs in every graph, domain or not. */
|
|
30
|
+
const STANDARD_PREFIXES: Readonly<Record<string, string>> = {
|
|
18
31
|
rdfs: "http://www.w3.org/2000/01/rdf-schema#",
|
|
19
32
|
owl: "http://www.w3.org/2002/07/owl#",
|
|
20
33
|
skos: "http://www.w3.org/2004/02/skos/core#",
|
|
21
34
|
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Namespaces compacted and expanded across the CLI. Keys are the prefixes shown
|
|
38
|
+
* to the user (`rdfs:label`); values are the absolute namespace IRIs matched.
|
|
39
|
+
*
|
|
40
|
+
* The standard half is spread LAST so it wins a collision: `rdfs` means the
|
|
41
|
+
* same thing in every graph, and the kernel hardcodes those IRIs elsewhere
|
|
42
|
+
* (`buildIndex`'s label predicates, the prompt SELECT), so letting a
|
|
43
|
+
* declaration rebind them here would split one prefix across two meanings.
|
|
44
|
+
*/
|
|
45
|
+
export const DEFAULT_PREFIX_MAP: Readonly<Record<string, string>> = {
|
|
46
|
+
...conf.prefixes,
|
|
47
|
+
...STANDARD_PREFIXES,
|
|
48
|
+
};
|