@canonical/pragma-cli 0.34.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 +20 -22
- package/pragma.conf.ts +249 -60
- package/src/bin.ts +267 -82
- package/src/capabilities/block.parity.test.ts +6 -3
- 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 +25 -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.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 +6 -4
- package/src/capabilities/doctor/checks/checkPragmaVersion.ts +2 -2
- package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +72 -27
- package/src/capabilities/doctor/checks/checkShellCompletions.ts +59 -13
- 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 +18 -7
- package/src/capabilities/doctor/doctor.render.ts +43 -19
- package/src/capabilities/doctor/doctor.test.ts +123 -34
- package/src/capabilities/doctor/doctor.verb.ts +3 -3
- package/src/capabilities/doctor/runChecks.ts +62 -63
- package/src/capabilities/doctor/types.ts +20 -4
- package/src/capabilities/emptyRecovery.test.ts +13 -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 +5 -4
- package/src/capabilities/info/info.render.ts +1 -1
- package/src/capabilities/info/info.verb.ts +1 -1
- 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/resources/provider.ts +342 -85
- package/src/capabilities/resources/resources.test.ts +355 -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 +396 -326
- 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 +223 -71
- package/src/capabilities/setup/shell.test.ts +86 -0
- package/src/capabilities/setup/shell.ts +137 -11
- 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 +37 -5
- package/src/capabilities/skill/index.ts +1 -1
- package/src/capabilities/skill/render.ts +10 -9
- package/src/capabilities/skill/skill.test.ts +7 -5
- 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 +84 -7
- package/src/capabilities/sources/runUpdate.ts +53 -21
- package/src/capabilities/sources/sources.test.ts +154 -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 +1 -1
- package/src/capabilities/surface.test.ts +134 -17
- 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 +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 +31 -1
- package/src/identity.test.ts +40 -25
- 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 +1 -1
- 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 +34 -26
- 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 +25 -2
- 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 +26 -0
- package/src/kernel/packs/collect.ts +12 -16
- package/src/kernel/packs/compile.test.ts +130 -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 +24 -5
- package/src/kernel/packs/resolveEntity.test.ts +213 -0
- package/src/kernel/packs/resolveEntity.ts +112 -18
- package/src/kernel/packs/runBodies.ts +2 -3
- package/src/kernel/packs/sample.ts +1 -1
- package/src/kernel/packs/schema.ts +18 -1
- 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 +1 -1
- package/src/kernel/packs/sparql/runSelect.ts +3 -4
- package/src/kernel/packs/toolDescription.test.ts +42 -3
- package/src/kernel/packs/types.ts +13 -0
- package/src/kernel/packs/uniqueness.ts +1 -1
- package/src/kernel/project/cli/buildProgram.test.ts +147 -12
- 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 +160 -3
- package/src/kernel/project/cli/dispatch.ts +222 -42
- 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 +13 -0
- package/src/kernel/project/cli/rootHelp.ts +41 -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 +35 -9
- 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 +31 -1
- package/src/kernel/render/turtle.ts +222 -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 +248 -4
- package/src/testing/behavioral/docExamples.test.ts +14 -0
- package/src/testing/behavioral/errorMatrix.mcp.test.ts +2 -2
- 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.implementation.test.ts +206 -0
- package/src/testing/behavioral/journeys.interactiveTty.e2e.test.ts +2 -2
- package/src/testing/behavioral/journeys.packageStories.test.ts +4 -4
- 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/cases/effectful.ts +3 -2
- package/src/testing/fixtures/blockGraph.ts +79 -0
- package/src/testing/fixtures/graph/canonical.ts +88 -2
- 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/kernel/config/__snapshots__/firstRun.test.ts.snap +0 -11
|
@@ -7,15 +7,15 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import chalk from "chalk";
|
|
10
|
-
import type { Formatters } from "../../kernel/spec/
|
|
11
|
-
import { PRAGMA_PACKAGE } from "../shared/
|
|
10
|
+
import type { Formatters } from "../../kernel/spec/index.js";
|
|
11
|
+
import { PRAGMA_PACKAGE } from "../shared/index.js";
|
|
12
12
|
import type { UpgradeData } from "./types.js";
|
|
13
13
|
|
|
14
14
|
export const upgradeFormatters: Formatters<UpgradeData> = {
|
|
15
15
|
plain(data) {
|
|
16
16
|
const lines = [`Installed via: ${data.pm}`];
|
|
17
17
|
if (data.offline) {
|
|
18
|
-
lines.push("
|
|
18
|
+
lines.push("Cannot reach the registry — try again later.");
|
|
19
19
|
return lines.join("\n");
|
|
20
20
|
}
|
|
21
21
|
if (data.alreadyLatest) {
|
|
@@ -40,8 +40,7 @@ export const upgradeFormatters: Formatters<UpgradeData> = {
|
|
|
40
40
|
},
|
|
41
41
|
|
|
42
42
|
llm(data) {
|
|
43
|
-
if (data.offline)
|
|
44
|
-
return "Upgrade check failed: could not reach the registry.";
|
|
43
|
+
if (data.offline) return "Upgrade check failed: cannot reach the registry.";
|
|
45
44
|
if (data.alreadyLatest) {
|
|
46
45
|
return `Already at the latest version (${data.current}).`;
|
|
47
46
|
}
|
|
@@ -199,10 +199,10 @@ describe("assertExecOk — the exec-exitCode guard", () => {
|
|
|
199
199
|
}
|
|
200
200
|
const err = asPragmaError(thrown);
|
|
201
201
|
// A denied `npm i -g` is user-fixable, NOT a bug — so it must not tell the
|
|
202
|
-
// user to "
|
|
202
|
+
// user to "report this issue" (that is INTERNAL_ERROR's recovery).
|
|
203
203
|
expect(err.code).toBe("UNSUPPORTED");
|
|
204
204
|
expect(err.recovery?.message).not.toContain("report this issue");
|
|
205
|
-
expect(err.recovery?.message).toMatch(/
|
|
205
|
+
expect(err.recovery?.message).toMatch(/elevated privileges/i);
|
|
206
206
|
// Surfaces the command + exit code + the captured stderr (trimmed).
|
|
207
207
|
expect(err.message).toContain("npm i -g @canonical/pragma-cli");
|
|
208
208
|
expect(err.message).toContain("code 13");
|
|
@@ -276,7 +276,7 @@ describe("upgrade — a failed exec maps to an actionable runtime error (exit 1)
|
|
|
276
276
|
|
|
277
277
|
it("a missing-binary spawn (ENOENT) at a guarded site is a named UNSUPPORTED, not INTERNAL_ERROR", async () => {
|
|
278
278
|
// The same wrapper `runUpgrade`/`setupLsp` apply: a spawn ENOENT REJECTS the
|
|
279
|
-
// exec, which used to collapse to INTERNAL_ERROR ("
|
|
279
|
+
// exec, which used to collapse to INTERNAL_ERROR ("report this issue").
|
|
280
280
|
// `guardMissingBinary` names it instead.
|
|
281
281
|
const thrown = await runToError(
|
|
282
282
|
failVerbWith((_p, rt) =>
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
import type { Task } from "@canonical/task";
|
|
17
17
|
import { BIN_NAME } from "../../constants.js";
|
|
18
18
|
import { asVerb } from "../../kernel/spec/asVerb.js";
|
|
19
|
-
import type { CapabilityModule, VerbSpec } from "../../kernel/spec/
|
|
19
|
+
import type { CapabilityModule, VerbSpec } from "../../kernel/spec/index.js";
|
|
20
20
|
import type { UpgradeData } from "./types.js";
|
|
21
21
|
import { upgradeFormatters } from "./upgrade.render.js";
|
|
22
22
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `version` capability barrel — the command form of `--version`.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { CapabilityModule } from "../../kernel/spec/index.js";
|
|
6
|
+
import { versionVerbSpec } from "./version.verb.js";
|
|
7
|
+
|
|
8
|
+
/** The `version` capability module. */
|
|
9
|
+
export const versionModule: CapabilityModule = {
|
|
10
|
+
name: "version",
|
|
11
|
+
verbs: [versionVerbSpec],
|
|
12
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `pragma version` — the command form of `--version`.
|
|
3
|
+
*
|
|
4
|
+
* The verb exists because users type it; the ONLY thing worth pinning is that
|
|
5
|
+
* it is not a second answer to the same question. The process-boundary cell
|
|
6
|
+
* compares the two spellings byte for byte through the shipped entry, so a
|
|
7
|
+
* change to either one that does not change the other reddens here. The rest
|
|
8
|
+
* pins the covenant slice and the storeless, tool-free shape.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { describe, expect, it } from "vitest";
|
|
12
|
+
import { VERSION } from "../../constants.js";
|
|
13
|
+
import { executeVerb } from "../../kernel/project/cli/dispatch.js";
|
|
14
|
+
import { bootRuntime } from "../../kernel/runtime/boot.js";
|
|
15
|
+
import type { GlobalFlags } from "../../kernel/runtime/types.js";
|
|
16
|
+
import { emitVerb } from "../../kernel/spec/emitSurface.js";
|
|
17
|
+
import { runCli } from "../../testing/helpers/runCli.js";
|
|
18
|
+
import { versionModule } from "./index.js";
|
|
19
|
+
|
|
20
|
+
const FLAGS: GlobalFlags = {
|
|
21
|
+
llm: false,
|
|
22
|
+
autoLlm: false,
|
|
23
|
+
format: "plain",
|
|
24
|
+
verbose: false,
|
|
25
|
+
};
|
|
26
|
+
const REAL = { dryRun: false, undo: false, yes: false };
|
|
27
|
+
const versionVerb = versionModule.verbs[0];
|
|
28
|
+
|
|
29
|
+
describe("version — covenant-exact emission (PROTECTED)", () => {
|
|
30
|
+
it("emits a no-argument self-verb with NO tool", () => {
|
|
31
|
+
// The version already rides `info` and the MCP handshake's serverInfo, so
|
|
32
|
+
// a tool here would be a third way to ask one question.
|
|
33
|
+
expect(emitVerb(versionVerb)).toEqual({ v: "version", mcp: false });
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
describe("version — one value, two spellings of the same read", () => {
|
|
38
|
+
it("prints the version and never boots the store", async () => {
|
|
39
|
+
const rt = bootRuntime(FLAGS, process.cwd());
|
|
40
|
+
const outcome = await executeVerb(versionVerb, {}, REAL, rt);
|
|
41
|
+
expect(outcome.stdout).toBe(`${VERSION}\n`);
|
|
42
|
+
expect(outcome.exitCode).toBe(0);
|
|
43
|
+
expect(rt.store.booted).toBe(false);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it("json carries the value under a named field, not a bare scalar", async () => {
|
|
47
|
+
const outcome = await executeVerb(
|
|
48
|
+
versionVerb,
|
|
49
|
+
{},
|
|
50
|
+
REAL,
|
|
51
|
+
bootRuntime({ ...FLAGS, format: "json" }, process.cwd()),
|
|
52
|
+
);
|
|
53
|
+
expect(JSON.parse(outcome.stdout ?? "").data).toEqual({
|
|
54
|
+
version: VERSION,
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it("the verb and the flag print the SAME bytes through the shipped entry", () => {
|
|
59
|
+
const fromVerb = runCli(["version"]);
|
|
60
|
+
const fromFlag = runCli(["--version"]);
|
|
61
|
+
expect(fromVerb.exitCode).toBe(0);
|
|
62
|
+
expect(fromFlag.exitCode).toBe(0);
|
|
63
|
+
expect(fromVerb.stdout).toBe(fromFlag.stdout);
|
|
64
|
+
expect(fromVerb.stdout).toBe(`${VERSION}\n`);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `pragma version` — the command form of `--version`.
|
|
3
|
+
*
|
|
4
|
+
* Users type it reflexively, so it exists and prints exactly the bytes the
|
|
5
|
+
* flag prints: the bare semver on stdout, storeless, no store or network
|
|
6
|
+
* touched. Withheld from MCP — the version already rides `info` and the
|
|
7
|
+
* server handshake's `serverInfo`.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { BIN_NAME, VERSION } from "../../constants.js";
|
|
11
|
+
import { asVerb } from "../../kernel/spec/asVerb.js";
|
|
12
|
+
import type { VerbSpec } from "../../kernel/spec/index.js";
|
|
13
|
+
|
|
14
|
+
const versionVerb: VerbSpec<Record<string, unknown>, string> = {
|
|
15
|
+
path: ["version"],
|
|
16
|
+
summary: "Print the CLI version.",
|
|
17
|
+
doc: "Prints the version `--version` prints — one value, two spellings of the same read.",
|
|
18
|
+
params: [],
|
|
19
|
+
output: {
|
|
20
|
+
formatters: {
|
|
21
|
+
plain: (version) => version,
|
|
22
|
+
llm: (version) => version,
|
|
23
|
+
json: (version) => JSON.stringify({ version }),
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
examples: [{ cmd: `${BIN_NAME} version` }],
|
|
27
|
+
capability: {
|
|
28
|
+
needsStore: false,
|
|
29
|
+
mutates: false,
|
|
30
|
+
mcp: {
|
|
31
|
+
expose: false,
|
|
32
|
+
reason: "the version rides `info` and the MCP handshake's serverInfo",
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
run: async () => VERSION,
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/** The `version` verb. */
|
|
39
|
+
export const versionVerbSpec = asVerb(versionVerb);
|
package/src/constants.ts
CHANGED
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
import pkg from "../package.json" with { type: "json" };
|
|
19
19
|
import identity from "../pragma.conf.js";
|
|
20
|
+
import type { RawConfig } from "./kernel/config/types.js";
|
|
20
21
|
import { DETAIL_LEVELS, type DetailLevel } from "./kernel/config/types.js";
|
|
21
22
|
|
|
22
23
|
/** CLI binary name — the distribution's `name`. */
|
|
@@ -64,12 +65,40 @@ const RECOVERY_CLI_PREFIX = `${identity.name} `;
|
|
|
64
65
|
/** The output formats the renderer selects between (`llm` = condensed Markdown). */
|
|
65
66
|
const OUTPUT_FORMATS = ["plain", "llm", "json"] as const;
|
|
66
67
|
|
|
67
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* A selected output format. The set is CLOSED — no alias normalises into it,
|
|
70
|
+
* so a `--format` value outside {@link OUTPUT_FORMATS} is rejected at the
|
|
71
|
+
* entry point rather than quietly becoming `plain`.
|
|
72
|
+
*/
|
|
68
73
|
type OutputFormat = (typeof OUTPUT_FORMATS)[number];
|
|
69
74
|
|
|
70
75
|
/** Default detail level when neither flag, config, nor spec pins one. */
|
|
71
76
|
const DEFAULT_DETAIL_LEVEL: DetailLevel = "standard";
|
|
72
77
|
|
|
78
|
+
/**
|
|
79
|
+
* The wordmark `--help` opens with, as raw ASCII-art lines.
|
|
80
|
+
*
|
|
81
|
+
* PROJECTED from the distribution config, exactly like {@link BIN_NAME} and
|
|
82
|
+
* {@link PROGRAM_DESCRIPTION} — a wordmark spells a name, so it is identity, and
|
|
83
|
+
* `kernel/copy.test.ts` forbids any kernel string from naming the distribution.
|
|
84
|
+
* Authoring the art here would have branded a fork's front door with someone
|
|
85
|
+
* else's logo; declaring it as data means a fork ships its own or none.
|
|
86
|
+
*
|
|
87
|
+
* Lines rather than one string because the art contains a backtick and
|
|
88
|
+
* backslashes: a template literal would need every one of them escaped, which is
|
|
89
|
+
* how a character gets lost the next time someone edits it.
|
|
90
|
+
*/
|
|
91
|
+
// Read through the DECLARED type, not the literal's inferred one. The
|
|
92
|
+
// distribution config is `satisfies RawConfig`, which narrows to exactly the
|
|
93
|
+
// keys that file writes — so `identity.logo` does not typecheck in a fork that
|
|
94
|
+
// omits the field, which is precisely the fork this feature promises a bare
|
|
95
|
+
// header. The assignment (not a cast) is what `satisfies` already guarantees,
|
|
96
|
+
// and it makes every OPTIONAL field readable here. The other constants keep
|
|
97
|
+
// reading `identity` directly, so their literal types are untouched.
|
|
98
|
+
const declared: RawConfig = identity;
|
|
99
|
+
|
|
100
|
+
const PROGRAM_LOGO: readonly string[] = declared.logo ?? [];
|
|
101
|
+
|
|
73
102
|
export type { DetailLevel, OutputFormat };
|
|
74
103
|
export {
|
|
75
104
|
BIN_NAME,
|
|
@@ -79,6 +108,7 @@ export {
|
|
|
79
108
|
MCP_SERVER_NAME,
|
|
80
109
|
OUTPUT_FORMATS,
|
|
81
110
|
PROGRAM_DESCRIPTION,
|
|
111
|
+
PROGRAM_LOGO,
|
|
82
112
|
PROJECT_CONFIG_FILENAME,
|
|
83
113
|
RECOVERY_CLI_PREFIX,
|
|
84
114
|
VERSION,
|
package/src/identity.test.ts
CHANGED
|
@@ -112,15 +112,24 @@ describe("identity projection — a fork changes values, not code (PROTECTED)",
|
|
|
112
112
|
const { upgradeModule } = await import("./capabilities/upgrade/index.js");
|
|
113
113
|
const { colophonModule } = await import("./capabilities/colophon/index.js");
|
|
114
114
|
|
|
115
|
-
const help = formatRootHelp(
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
115
|
+
const help = formatRootHelp(
|
|
116
|
+
BIN_NAME,
|
|
117
|
+
PROGRAM_DESCRIPTION,
|
|
118
|
+
[
|
|
119
|
+
dishList,
|
|
120
|
+
...configModule.verbs,
|
|
121
|
+
...upgradeModule.verbs,
|
|
122
|
+
...colophonModule.verbs,
|
|
123
|
+
],
|
|
124
|
+
"9.9.9",
|
|
125
|
+
"https://recipes.test/issues",
|
|
126
|
+
);
|
|
121
127
|
|
|
122
128
|
expect(help).not.toMatch(THIS_DISTRIBUTION);
|
|
123
|
-
|
|
129
|
+
// The fork's own name and its own version — the header stamps the build
|
|
130
|
+
// exactly as `--version` reports it, and neither half names this
|
|
131
|
+
// distribution.
|
|
132
|
+
expect(help).toMatch(/^recipes v9\.9\.9 — Explore the recipe graph$/m);
|
|
124
133
|
// The pack noun leads the page untitled, and the blurb is not repeated as
|
|
125
134
|
// a heading three lines under the header that already carries it.
|
|
126
135
|
expect(help).toMatch(/^Usage: recipes .*\n\n {2}dish\b/m);
|
|
@@ -151,29 +160,28 @@ describe("identity projection — a fork changes values, not code (PROTECTED)",
|
|
|
151
160
|
expect(text.startsWith("recipes — Explore the recipe graph (")).toBe(true);
|
|
152
161
|
});
|
|
153
162
|
|
|
154
|
-
it("
|
|
163
|
+
it("hints at a first-time user in the fork's own name", async () => {
|
|
155
164
|
process.env.XDG_CONFIG_HOME = mkdtempSync(join(tmpdir(), "identity-"));
|
|
156
|
-
const {
|
|
165
|
+
const { setupHintLines } = await import("./kernel/config/firstRun.js");
|
|
157
166
|
const { globalConfigPath } = await import("./kernel/config/paths.js");
|
|
158
167
|
|
|
159
|
-
const
|
|
160
|
-
await ensureFirstRun((line) => lines.push(line));
|
|
161
|
-
const greeting = lines.join("\n");
|
|
168
|
+
const hint = setupHintLines().join("\n");
|
|
162
169
|
|
|
163
|
-
//
|
|
164
|
-
//
|
|
165
|
-
expect(
|
|
166
|
-
expect(greeting).toContain(globalConfigPath());
|
|
170
|
+
// The hint names the fork's issues URL and its own setup command; the XDG
|
|
171
|
+
// namespace has to follow the fork's name too or the path assertion fails.
|
|
172
|
+
expect(hint).not.toMatch(THIS_DISTRIBUTION);
|
|
167
173
|
expect(globalConfigPath()).toContain("/recipes/");
|
|
168
|
-
expect(
|
|
169
|
-
expect(
|
|
174
|
+
expect(hint).toContain("https://example.invalid/recipes/issues");
|
|
175
|
+
expect(hint).toContain("recipes setup");
|
|
170
176
|
});
|
|
171
177
|
|
|
172
178
|
it("narrates the colophon the fork declares, titled with the fork's name", async () => {
|
|
173
179
|
// The toolchain colophon is DECLARED content (`pragma.conf.ts#colophon`),
|
|
174
180
|
// not authored code: the collector must render the fork's declaration
|
|
175
|
-
// under the fork's own name.
|
|
176
|
-
//
|
|
181
|
+
// under the fork's own name. This is also where the FALLBACK is pinned —
|
|
182
|
+
// the toolchain's own section prints when no pack tells a domain story,
|
|
183
|
+
// and a fork with no packs is the distribution that has none.
|
|
184
|
+
// `kind: "pragma"` is asserted AS the literal:
|
|
177
185
|
// it is the frozen JSON discriminant every distribution serves (wire
|
|
178
186
|
// compatibility, like the resource scheme), deliberately NOT derived.
|
|
179
187
|
process.env.XDG_CONFIG_HOME = mkdtempSync(join(tmpdir(), "identity-"));
|
|
@@ -246,11 +254,17 @@ describe("identity projection — a fork changes values, not code (PROTECTED)",
|
|
|
246
254
|
const { pragmaMcpEntry } = await import(
|
|
247
255
|
"./capabilities/setup/operations/setupMcp.js"
|
|
248
256
|
);
|
|
249
|
-
expect(pragmaMcpEntry("/work")).toEqual({
|
|
257
|
+
expect(pragmaMcpEntry("/work", "project")).toEqual({
|
|
250
258
|
command: "recipes",
|
|
251
|
-
args: ["mcp"],
|
|
259
|
+
args: ["mcp", "serve"],
|
|
252
260
|
cwd: "/work",
|
|
253
261
|
});
|
|
262
|
+
// The global band omits `cwd` (a per-user server is not project-pinned)
|
|
263
|
+
// but still runs the fork's own binary.
|
|
264
|
+
expect(pragmaMcpEntry("/work", "global")).toEqual({
|
|
265
|
+
command: "recipes",
|
|
266
|
+
args: ["mcp", "serve"],
|
|
267
|
+
});
|
|
254
268
|
});
|
|
255
269
|
|
|
256
270
|
it("generates a reference that never names this distribution", async () => {
|
|
@@ -263,9 +277,10 @@ describe("identity projection — a fork changes values, not code (PROTECTED)",
|
|
|
263
277
|
// ONE exemption, the same one the MCP orientation case above makes and for
|
|
264
278
|
// the same reason: the `pragma:` resource scheme is covenant-frozen PROTOCOL
|
|
265
279
|
// identity (`surface.v2.json`), inherited by a fork along with the
|
|
266
|
-
// `pragma/box` and `pragma/
|
|
267
|
-
// `tools.md` reports it truthfully. Masked from the
|
|
268
|
-
// a literal, so a leak the kernel authored itself
|
|
280
|
+
// `pragma/box`, `pragma/instanceCount` and `pragma/type` `_meta` keys it
|
|
281
|
+
// travels with, and `tools.md` reports it truthfully. Masked from the
|
|
282
|
+
// emitted surface, not by a literal, so a leak the kernel authored itself
|
|
283
|
+
// still fails here.
|
|
269
284
|
const { emitReference } = await import("./kernel/spec/emitReference.js");
|
|
270
285
|
const { emitSurface } = await import("./kernel/spec/emitSurface.js");
|
|
271
286
|
const { capabilities } = await import("./capabilities/index.js");
|
|
@@ -65,21 +65,21 @@ _pragma() {
|
|
|
65
65
|
# flag names
|
|
66
66
|
if [[ "$cur" == -* ]]; then
|
|
67
67
|
case "$noun/$verb" in
|
|
68
|
-
block/get) COMPREPLY=($(compgen -W "--view --out --with-meta --note --format --verbose --detail --help" -- "$cur")); return ;;
|
|
69
|
-
block/list) COMPREPLY=($(compgen -W "--tags --format --verbose --detail --help" -- "$cur")); return ;;
|
|
70
|
-
block/remove) COMPREPLY=($(compgen -W "--dry-run --undo --yes --format --verbose --detail --help" -- "$cur")); return ;;
|
|
68
|
+
block/get) COMPREPLY=($(compgen -W "--view --out --with-meta --note --format --verbose --detail --no-headers --quiet --help" -- "$cur")); return ;;
|
|
69
|
+
block/list) COMPREPLY=($(compgen -W "--tags --format --verbose --detail --no-headers --quiet --help" -- "$cur")); return ;;
|
|
70
|
+
block/remove) COMPREPLY=($(compgen -W "--dry-run --undo --yes --format --verbose --detail --no-headers --quiet --help" -- "$cur")); return ;;
|
|
71
71
|
esac
|
|
72
72
|
if [ -z "$noun" ]; then
|
|
73
|
-
COMPREPLY=($(compgen -W "--format --verbose --detail --help --version" -- "$cur"))
|
|
73
|
+
COMPREPLY=($(compgen -W "--format --verbose --detail --no-headers --quiet --help --version" -- "$cur"))
|
|
74
74
|
else
|
|
75
|
-
COMPREPLY=($(compgen -W "--format --verbose --detail --help" -- "$cur"))
|
|
75
|
+
COMPREPLY=($(compgen -W "--format --verbose --detail --no-headers --quiet --help" -- "$cur"))
|
|
76
76
|
fi
|
|
77
77
|
return
|
|
78
78
|
fi
|
|
79
79
|
|
|
80
80
|
# nouns
|
|
81
81
|
if [ -z "$noun" ]; then
|
|
82
|
-
COMPREPLY=($(compgen -W "block
|
|
82
|
+
COMPREPLY=($(compgen -W "block standard status" -- "$cur"))
|
|
83
83
|
return
|
|
84
84
|
fi
|
|
85
85
|
|
|
@@ -172,12 +172,14 @@ end
|
|
|
172
172
|
complete -c pragma -f
|
|
173
173
|
|
|
174
174
|
# nouns
|
|
175
|
-
complete -c pragma -n "__pragma_at ''" -a "block
|
|
175
|
+
complete -c pragma -n "__pragma_at ''" -a "block standard status"
|
|
176
176
|
|
|
177
177
|
# global flags
|
|
178
178
|
complete -c pragma -l format -x -a "plain llm json"
|
|
179
179
|
complete -c pragma -l verbose
|
|
180
180
|
complete -c pragma -l detail -x -a "summary standard detailed"
|
|
181
|
+
complete -c pragma -l no-headers
|
|
182
|
+
complete -c pragma -l quiet
|
|
181
183
|
complete -c pragma -l help
|
|
182
184
|
complete -c pragma -n "__pragma_at ''" -l version
|
|
183
185
|
|
|
@@ -277,21 +279,21 @@ _pragma() {
|
|
|
277
279
|
# flag names
|
|
278
280
|
if [[ "$cur" == -* ]]; then
|
|
279
281
|
case "$noun/$verb" in
|
|
280
|
-
block/get) compadd -- --view --out --with-meta --note --format --verbose --detail --help; return 0 ;;
|
|
281
|
-
block/list) compadd -- --tags --format --verbose --detail --help; return 0 ;;
|
|
282
|
-
block/remove) compadd -- --dry-run --undo --yes --format --verbose --detail --help; return 0 ;;
|
|
282
|
+
block/get) compadd -- --view --out --with-meta --note --format --verbose --detail --no-headers --quiet --help; return 0 ;;
|
|
283
|
+
block/list) compadd -- --tags --format --verbose --detail --no-headers --quiet --help; return 0 ;;
|
|
284
|
+
block/remove) compadd -- --dry-run --undo --yes --format --verbose --detail --no-headers --quiet --help; return 0 ;;
|
|
283
285
|
esac
|
|
284
286
|
if [[ -z "$noun" ]]; then
|
|
285
|
-
compadd -- --format --verbose --detail --help --version
|
|
287
|
+
compadd -- --format --verbose --detail --no-headers --quiet --help --version
|
|
286
288
|
else
|
|
287
|
-
compadd -- --format --verbose --detail --help
|
|
289
|
+
compadd -- --format --verbose --detail --no-headers --quiet --help
|
|
288
290
|
fi
|
|
289
291
|
return 0
|
|
290
292
|
fi
|
|
291
293
|
|
|
292
294
|
# nouns
|
|
293
295
|
if [[ -z "$noun" ]]; then
|
|
294
|
-
compadd -- block
|
|
296
|
+
compadd -- block standard status
|
|
295
297
|
return 0
|
|
296
298
|
fi
|
|
297
299
|
|
|
@@ -16,15 +16,24 @@ describe("runComplete — the __complete pipeline", () => {
|
|
|
16
16
|
it("resolves against the live capabilities (storeless static matches)", async () => {
|
|
17
17
|
await expect(runComplete(["co"], capabilities)).resolves.toEqual([
|
|
18
18
|
"colophon",
|
|
19
|
+
"concept",
|
|
19
20
|
"config",
|
|
20
21
|
]);
|
|
21
22
|
// The live `config` sub-verbs, prefix-filtered and sorted by the resolver.
|
|
22
|
-
// AV-228 B3 retired the per-field tier/channel/detail verbs
|
|
23
|
+
// AV-228 B3 retired the per-field tier/channel/detail verbs; the family is
|
|
24
|
+
// now the four jobs — read all, read one, write one, clear one.
|
|
23
25
|
await expect(runComplete(["config", ""], capabilities)).resolves.toEqual([
|
|
26
|
+
"get",
|
|
24
27
|
"set",
|
|
25
28
|
"show",
|
|
29
|
+
"unset",
|
|
26
30
|
]);
|
|
27
31
|
await expect(runComplete(["mc"], capabilities)).resolves.toEqual(["mcp"]);
|
|
32
|
+
// The server entry completes from its own spec — it used to be injected
|
|
33
|
+
// into the model because the bin served it without one.
|
|
34
|
+
await expect(runComplete(["mcp", ""], capabilities)).resolves.toEqual([
|
|
35
|
+
"serve",
|
|
36
|
+
]);
|
|
28
37
|
await expect(runComplete(["--d"], capabilities)).resolves.toEqual([
|
|
29
38
|
"--detail",
|
|
30
39
|
]);
|
|
@@ -38,6 +47,7 @@ describe("runComplete — the __complete pipeline", () => {
|
|
|
38
47
|
it("strips a leading bin name", async () => {
|
|
39
48
|
await expect(runComplete(["pragma", "co"], capabilities)).resolves.toEqual([
|
|
40
49
|
"colophon",
|
|
50
|
+
"concept",
|
|
41
51
|
"config",
|
|
42
52
|
]);
|
|
43
53
|
});
|
|
@@ -93,7 +103,7 @@ describe("runComplete — never-throw guard (PROTECTED)", () => {
|
|
|
93
103
|
await runComplete(["co"], capabilities);
|
|
94
104
|
const lines = write.mock.calls.map((call) => String(call[0]));
|
|
95
105
|
expect(lines.join("")).toMatch(
|
|
96
|
-
/\[complete\] context=noun partial="co" candidates=
|
|
106
|
+
/\[complete\] context=noun partial="co" candidates=3 in \d+(\.\d+)?ms/,
|
|
97
107
|
);
|
|
98
108
|
});
|
|
99
109
|
});
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
* whole grammar is testable through this one function.
|
|
31
31
|
*/
|
|
32
32
|
|
|
33
|
-
import type { CapabilityModule } from "../spec/
|
|
33
|
+
import type { CapabilityModule } from "../spec/index.js";
|
|
34
34
|
import { emptyNameSource } from "./entitySource.js";
|
|
35
35
|
import { buildCompletionModel } from "./model.js";
|
|
36
36
|
import { parseWords } from "./parse.js";
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
30
|
import { BIN_NAME } from "../../constants.js";
|
|
31
|
-
import type { CapabilityModule } from "../spec/
|
|
31
|
+
import type { CapabilityModule } from "../spec/index.js";
|
|
32
32
|
import { assertSafeToken, buildCompletionModel } from "./model.js";
|
|
33
33
|
import { bashScript } from "./templates/bash.js";
|
|
34
34
|
import { fishScript } from "./templates/fish.js";
|
|
@@ -313,7 +313,7 @@ describe("the storeless fast path implements the pointer half", () => {
|
|
|
313
313
|
// and would pass with the config file deleted. The read half refusing is
|
|
314
314
|
// what makes this directory a configured-but-unbuilt project rather than a
|
|
315
315
|
// fresh install. (`doctor` says so too, in the same words: verified against
|
|
316
|
-
//
|
|
316
|
+
// a cold install, where `block list` raises STORE_UNAVAILABLE while
|
|
317
317
|
// this same completion still answers.)
|
|
318
318
|
//
|
|
319
319
|
// If a later change gives the fast path a config-free way to see
|
|
@@ -33,11 +33,13 @@
|
|
|
33
33
|
* - The embedded fallback is read from `pack.index.generated` — its OWN
|
|
34
34
|
* generated module (only the index string) — so the storeless `__complete`
|
|
35
35
|
* path never EVALUATES the n-quads/schema/manifest strings that live in
|
|
36
|
-
* `pack.generated`.
|
|
37
|
-
*
|
|
38
|
-
* invocation (~+25 ms
|
|
39
|
-
*
|
|
40
|
-
*
|
|
36
|
+
* `pack.generated`. Under the compiled binary it did not avoid PARSING them
|
|
37
|
+
* either — one emitted script meant the whole embed was parsed at process
|
|
38
|
+
* start on every invocation (~+25 ms, measured on `--version`; BUDGETS.md
|
|
39
|
+
* records it), and the split bought only that a completion never allocated
|
|
40
|
+
* the 1.87 MB. Shipping per-module output changed that: `pack.generated` is
|
|
41
|
+
* a separate module the fast path never imports, so it is no longer parsed
|
|
42
|
+
* at all there. The split now buys both.
|
|
41
43
|
* - The active pack is resolved through `kernel/runtime/paths` — a LEAF module
|
|
42
44
|
* (node builtins only) that shares the pointer read with `resolveSources`.
|
|
43
45
|
* `resolveSources` itself is unreachable from here: it pulls the graphpack
|
|
@@ -62,7 +64,7 @@ import { discoverSkills } from "../../capabilities/skill/discover.js";
|
|
|
62
64
|
// Inlined embedded index — its OWN generated module (only the index string), so
|
|
63
65
|
// the storeless `__complete` path never pulls the n-quads/schema/manifest
|
|
64
66
|
// strings that live in `pack.generated.ts`.
|
|
65
|
-
import { DEFAULT_PREFIX_MAP } from "../render/
|
|
67
|
+
import { DEFAULT_PREFIX_MAP } from "../render/index.js";
|
|
66
68
|
import { indexJson as EMBEDDED_INDEX_JSON } from "../runtime/graphpack/embedded/pack.index.generated.js";
|
|
67
69
|
import type { PackIndex, PackIndexEntity } from "../runtime/graphpack/types.js";
|
|
68
70
|
import { packDir, readActivePack } from "../runtime/paths.js";
|
|
@@ -156,8 +158,19 @@ function loadActiveIndex(cwd: string): PackIndex | undefined {
|
|
|
156
158
|
: readIndexFile(packDir(contentHash));
|
|
157
159
|
}
|
|
158
160
|
|
|
159
|
-
/**
|
|
160
|
-
|
|
161
|
+
/**
|
|
162
|
+
* Whether an entity matches a prefixed type filter (primary type or any type).
|
|
163
|
+
*
|
|
164
|
+
* Exported because the MCP resource listing addresses the index by the SAME
|
|
165
|
+
* vocabulary a completion source does (`McpListableRef` reuses
|
|
166
|
+
* `CompletionSourceRef`'s fields), and "which entities is this type?" must be
|
|
167
|
+
* ONE rule — two would let a type list entities its completion refuses.
|
|
168
|
+
*
|
|
169
|
+
* @param entity - The indexed entity to test.
|
|
170
|
+
* @param type - A prefixed type filter; empty matches every entity.
|
|
171
|
+
* @returns Whether the entity carries that type.
|
|
172
|
+
*/
|
|
173
|
+
export function matchesType(entity: PackIndexEntity, type: string): boolean {
|
|
161
174
|
if (!type) return true;
|
|
162
175
|
if (entity.type === type) return true;
|
|
163
176
|
return Array.isArray(entity.types) && entity.types.includes(type);
|