@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
package/src/kernel/spec/types.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* other param is a kebab-cased flag.
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
-
import type { Task } from "@canonical/task";
|
|
14
|
+
import type { Effect, Task } from "@canonical/task";
|
|
15
15
|
import type { PragmaRuntime } from "../runtime/types.js";
|
|
16
16
|
|
|
17
17
|
/** MCP tool annotations mirrored onto exposed verbs. */
|
|
@@ -111,6 +111,14 @@ export type ParamSpec =
|
|
|
111
111
|
default?: unknown;
|
|
112
112
|
positional?: boolean;
|
|
113
113
|
complete?: ParamComplete;
|
|
114
|
+
/**
|
|
115
|
+
* A repeatable flag ACCUMULATES: `--category css --category git` is
|
|
116
|
+
* the union, never last-wins (repetition is the sanctioned multi-value
|
|
117
|
+
* form, and silently dropping all but the last value is data loss).
|
|
118
|
+
* CLI-side only: the MCP arg schema keeps its scalar shape, and the
|
|
119
|
+
* run body accepts one value or many.
|
|
120
|
+
*/
|
|
121
|
+
repeatable?: true;
|
|
114
122
|
}
|
|
115
123
|
| {
|
|
116
124
|
kind: "enum";
|
|
@@ -121,6 +129,8 @@ export type ParamSpec =
|
|
|
121
129
|
default?: string;
|
|
122
130
|
positional?: boolean;
|
|
123
131
|
complete?: ParamComplete;
|
|
132
|
+
/** See the string variant — repeated occurrences accumulate. */
|
|
133
|
+
repeatable?: true;
|
|
124
134
|
}
|
|
125
135
|
| {
|
|
126
136
|
kind: "string[]";
|
|
@@ -131,11 +141,28 @@ export type ParamSpec =
|
|
|
131
141
|
complete?: ParamComplete;
|
|
132
142
|
};
|
|
133
143
|
|
|
134
|
-
/**
|
|
144
|
+
/**
|
|
145
|
+
* The three output modes every verb must render.
|
|
146
|
+
*
|
|
147
|
+
* `plain` takes an optional {@link RenderContext} — the dispatcher's
|
|
148
|
+
* presentation facts (`--no-headers`, whether stdout is a terminal). Only
|
|
149
|
+
* list-shaped formatters read it; `llm` (the byte-frozen agent contract) and
|
|
150
|
+
* `json` (the envelope) never see it.
|
|
151
|
+
*
|
|
152
|
+
* `emptyNotice` is the empty-state seam: when the data amounts to zero
|
|
153
|
+
* records, return the calm notice — the dispatcher routes it to STDERR with
|
|
154
|
+
* exit 0, keeping the stdout data stream free of human sentences a pipe
|
|
155
|
+
* would read as records. Return `undefined` (or omit the member) for data
|
|
156
|
+
* that has content; only the plain mode routes it.
|
|
157
|
+
*/
|
|
135
158
|
export interface Formatters<T> {
|
|
136
|
-
readonly plain: (
|
|
159
|
+
readonly plain: (
|
|
160
|
+
d: T,
|
|
161
|
+
context?: import("../render/contracts.js").RenderContext,
|
|
162
|
+
) => string;
|
|
137
163
|
readonly llm: (d: T) => string;
|
|
138
164
|
readonly json: (d: T) => string;
|
|
165
|
+
readonly emptyNotice?: (d: T) => string | undefined;
|
|
139
166
|
}
|
|
140
167
|
|
|
141
168
|
/** A usage example shown in verb help. */
|
|
@@ -176,7 +203,38 @@ export interface VerbSpec<P = Record<string, unknown>, R = unknown> {
|
|
|
176
203
|
readonly summary: string;
|
|
177
204
|
readonly doc?: string;
|
|
178
205
|
readonly params: readonly ParamSpec[];
|
|
179
|
-
readonly output: {
|
|
206
|
+
readonly output: {
|
|
207
|
+
schema?: unknown;
|
|
208
|
+
formatters: Formatters<R>;
|
|
209
|
+
/**
|
|
210
|
+
* OPTIONAL dry-run seam. A `--dry-run` normally renders the raw effect
|
|
211
|
+
* dump — one `describeEffect` bullet per effect, absolute paths repeated
|
|
212
|
+
* per line, interpreter internals included — which is debug material, not a
|
|
213
|
+
* preview a user was meant to read. A verb that has stashed structured plan
|
|
214
|
+
* data on the runtime (`PragmaRuntime.planData`) can render that instead.
|
|
215
|
+
*
|
|
216
|
+
* ABSENT BY DEFAULT, and absent is exactly today's render: a verb that does
|
|
217
|
+
* not declare this is untouched. The honest preview still runs underneath
|
|
218
|
+
* either way, so a dry run still fails exactly when the run would.
|
|
219
|
+
*
|
|
220
|
+
* The previewed `effects` and the run's verbosity arrive BESIDE the stashed
|
|
221
|
+
* data, because a plan is not always known before the Task runs: `setup`
|
|
222
|
+
* computes its target table up front and renders that, while `create` has
|
|
223
|
+
* nothing to stash — its plan IS the effects the generator produced, which
|
|
224
|
+
* only exist once the preview interpreter has walked the Task. One seam
|
|
225
|
+
* serves both by handing the renderer everything the branch knows.
|
|
226
|
+
*
|
|
227
|
+
* MAY be async: a renderer whose formatting rules live in another package
|
|
228
|
+
* loads them behind a dynamic `import()` rather than putting them on the
|
|
229
|
+
* capabilities barrel's static graph, which every `--help` and
|
|
230
|
+
* `__complete` spawn pays for. The kernel awaits whatever it returns.
|
|
231
|
+
*/
|
|
232
|
+
formatPlan?: (
|
|
233
|
+
planData: unknown,
|
|
234
|
+
effects: readonly Effect[],
|
|
235
|
+
verbose: boolean,
|
|
236
|
+
) => string | Promise<string>;
|
|
237
|
+
};
|
|
180
238
|
readonly examples?: readonly Example[];
|
|
181
239
|
readonly disclosure?: DisclosureSpec;
|
|
182
240
|
readonly capability: Capability;
|
|
@@ -185,6 +243,52 @@ export interface VerbSpec<P = Record<string, unknown>, R = unknown> {
|
|
|
185
243
|
readonly hidden?: boolean;
|
|
186
244
|
}
|
|
187
245
|
|
|
246
|
+
/**
|
|
247
|
+
* One slice of the index a module contributes to the MCP resource listing.
|
|
248
|
+
*
|
|
249
|
+
* Deliberately the vocabulary of {@link CompletionSourceRef} — a listing and a
|
|
250
|
+
* completion address the same index by the same three facts (which type, which
|
|
251
|
+
* box, what to yield), and a second vocabulary for that would be a second
|
|
252
|
+
* writing of one decision. The only source a listing can read is the index, so
|
|
253
|
+
* `from` is implied and absent.
|
|
254
|
+
*/
|
|
255
|
+
export interface McpListableRef {
|
|
256
|
+
/** Prefixed type filter (e.g. `ds:Component`) — empty = any type. */
|
|
257
|
+
readonly type?: string;
|
|
258
|
+
/** Restrict to schema (`tbox`) or individuals (`abox`); empty = both. */
|
|
259
|
+
readonly box?: "tbox" | "abox";
|
|
260
|
+
/**
|
|
261
|
+
* What the slice yields: `"collection"` lists ONE entry — the class entry
|
|
262
|
+
* for {@link type}, carrying its instance count — while `"entities"` lists
|
|
263
|
+
* every matching entity. Default `"entities"`.
|
|
264
|
+
*/
|
|
265
|
+
readonly as?: "collection" | "entities";
|
|
266
|
+
/**
|
|
267
|
+
* Relative importance, 0–1 (default 1). Feeds MCP `annotations.priority` on
|
|
268
|
+
* the listed resource AND breaks ties in URI-completion ranking, so the two
|
|
269
|
+
* judgements about what matters most are ONE declaration rather than two
|
|
270
|
+
* constants in the kernel.
|
|
271
|
+
*/
|
|
272
|
+
readonly weight?: number;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* A module's declared contribution to the MCP resource listing.
|
|
277
|
+
*
|
|
278
|
+
* The listing is the UNION of every module's slices. It exists because
|
|
279
|
+
* `resources/list` has no working pagination in the SDK (the high-level
|
|
280
|
+
* `McpServer` list handler ignores `request.params.cursor` and never returns
|
|
281
|
+
* `nextCursor`), so the listing is curated rather than paged: every byte it
|
|
282
|
+
* spends on connect is context the agent cannot spend on the task.
|
|
283
|
+
*
|
|
284
|
+
* DERIVED wherever the module is compiled from a read story — a story already
|
|
285
|
+
* declares the type set it addresses (`PackLookup.type`/`types`), so its
|
|
286
|
+
* listing is read off that declaration, never authored a second time.
|
|
287
|
+
*/
|
|
288
|
+
export interface McpListable {
|
|
289
|
+
readonly sources: readonly McpListableRef[];
|
|
290
|
+
}
|
|
291
|
+
|
|
188
292
|
/**
|
|
189
293
|
* An MCP resource provider — the ONE non-tool projection a module may add.
|
|
190
294
|
*
|
|
@@ -192,11 +296,16 @@ export interface VerbSpec<P = Record<string, unknown>, R = unknown> {
|
|
|
192
296
|
* autocomplete are storeless over the pack index; a read is store-backed and
|
|
193
297
|
* shares the CLI's entity reader). Resources are NOT tools, so they never enter
|
|
194
298
|
* the emitted tool surface; the projector calls this per module that declares it.
|
|
299
|
+
*
|
|
300
|
+
* `register` receives the WHOLE effective module set, not just its own module:
|
|
301
|
+
* the listing a provider installs is the union of every module's
|
|
302
|
+
* {@link McpListable}, which no single module can see.
|
|
195
303
|
*/
|
|
196
304
|
export interface McpResourceProvider {
|
|
197
305
|
readonly register: (
|
|
198
306
|
server: import("@modelcontextprotocol/sdk/server/mcp.js").McpServer,
|
|
199
307
|
rt: PragmaRuntime,
|
|
308
|
+
modules: readonly CapabilityModule[],
|
|
200
309
|
) => void;
|
|
201
310
|
/**
|
|
202
311
|
* A static declaration of the resource template ids this provider installs
|
|
@@ -224,6 +333,132 @@ export interface McpPromptProvider {
|
|
|
224
333
|
) => Promise<void> | void;
|
|
225
334
|
}
|
|
226
335
|
|
|
336
|
+
/** A flag a mounted subcommand offers to completion (full `--token`). */
|
|
337
|
+
export interface CompletionChildFlag {
|
|
338
|
+
/** The full flag token (`--no-with-styles`). */
|
|
339
|
+
readonly flag: string;
|
|
340
|
+
/** Whether the flag consumes a value. */
|
|
341
|
+
readonly takesValue: boolean;
|
|
342
|
+
/** Closed value set for the flag's value, when one exists. */
|
|
343
|
+
readonly values?: readonly string[];
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/** A positional slot a mounted subcommand offers to completion. */
|
|
347
|
+
export interface CompletionChildPositional {
|
|
348
|
+
/** The slot name (diagnostics only). */
|
|
349
|
+
readonly name: string;
|
|
350
|
+
/** Whether the positional is required. */
|
|
351
|
+
readonly required: boolean;
|
|
352
|
+
/** Closed value set (e.g. tree segments), when one exists. */
|
|
353
|
+
readonly values?: readonly string[];
|
|
354
|
+
/** True when the slot completes file paths natively. */
|
|
355
|
+
readonly files?: boolean;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* The completion surface of one MOUNTED command node: its flags, its
|
|
360
|
+
* positional slots, and any deeper segment children — static data (it must
|
|
361
|
+
* pass the completion safety allowlist), never live module state.
|
|
362
|
+
*/
|
|
363
|
+
export interface CompletionChildSpec {
|
|
364
|
+
/** The command token at this node. */
|
|
365
|
+
readonly label: string;
|
|
366
|
+
/** Flags offered at this node. */
|
|
367
|
+
readonly flags: readonly CompletionChildFlag[];
|
|
368
|
+
/** Positional slots at this node, in order. */
|
|
369
|
+
readonly positionals: readonly CompletionChildPositional[];
|
|
370
|
+
/** Deeper segment children (each with its own flags/positionals/children). */
|
|
371
|
+
readonly children?: readonly CompletionChildSpec[];
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* The REGISTERED CLI spelling of one mounted verb — the single syntax seam
|
|
376
|
+
* every kernel emitter and gate consumes: the reference emitter (usage line
|
|
377
|
+
* + Args/Flags tables), `emitSurface` (the covenant's mounted-noun flag and
|
|
378
|
+
* positional tokens, L-CIS-2), and the `docExamples` gate's valid-token
|
|
379
|
+
* vocabulary. A mounted tree may register a different surface than the
|
|
380
|
+
* binding-level params suggest (tree segments as subcommands, a
|
|
381
|
+
* default-true boolean registered only as its `--no-` form), and all three
|
|
382
|
+
* surfaces must print what the CLI actually accepts — the module supplies
|
|
383
|
+
* it, the kernel renders it.
|
|
384
|
+
*/
|
|
385
|
+
export interface ReferenceCliSyntax {
|
|
386
|
+
/**
|
|
387
|
+
* The usage line after the bin name (e.g.
|
|
388
|
+
* `create application react [app-path] [options]`) — real tree segments,
|
|
389
|
+
* the registered positional token.
|
|
390
|
+
*/
|
|
391
|
+
readonly usage: string;
|
|
392
|
+
/**
|
|
393
|
+
* The registered flag token per binding-level param name (e.g.
|
|
394
|
+
* `withStyles` → `--no-with-styles`). A param absent here renders with the
|
|
395
|
+
* default `--<kebab-name>` derivation.
|
|
396
|
+
*/
|
|
397
|
+
readonly flagTokens: Readonly<Record<string, string>>;
|
|
398
|
+
/**
|
|
399
|
+
* The registered positional token per binding-level param name (e.g.
|
|
400
|
+
* `componentPath` → `[component-path]`) — the SAME token the usage line
|
|
401
|
+
* carries, so the Arguments table never contradicts its own synopsis. A
|
|
402
|
+
* param absent here renders with the default `<name>`/`[name]` derivation.
|
|
403
|
+
*/
|
|
404
|
+
readonly positionalTokens?: Readonly<Record<string, string>>;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
/** What the program hands a module mounting its own subtree. */
|
|
408
|
+
export interface CliMountHost {
|
|
409
|
+
/** Global flags for this invocation (closed over by mounted actions). */
|
|
410
|
+
readonly globalFlags: import("../runtime/types.js").GlobalFlags;
|
|
411
|
+
/** The binary name (for messages the mounted tree prints). */
|
|
412
|
+
readonly programName: string;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* A module-level CLI projection hook (precedented by `mcpResources`/
|
|
417
|
+
* `mcpPrompts`/`colophon` — module metadata, NOT a `VerbSpec` field, zero
|
|
418
|
+
* covenant impact): the module MOUNTS its noun's subtree onto the Commander
|
|
419
|
+
* parent itself, instead of the generic per-verb attachment. The module's
|
|
420
|
+
* verbs remain the binding-level grammar (surface, MCP, reference,
|
|
421
|
+
* completion labels); the mount owns everything beneath the noun.
|
|
422
|
+
*/
|
|
423
|
+
export interface CliProjection {
|
|
424
|
+
/**
|
|
425
|
+
* Load the mount's registration machinery, when it is deferred. The
|
|
426
|
+
* projection hook rides the capabilities barrel, which `--help` and
|
|
427
|
+
* `__complete` import on every spawn — so a mount whose registration needs
|
|
428
|
+
* heavy modules (a Commander adapter, shared decision logic) keeps them
|
|
429
|
+
* behind this async step instead of a static import, and only the one
|
|
430
|
+
* caller that actually builds the command tree (the bin, before
|
|
431
|
+
* `buildProgram`) awaits it. {@link mount} stays synchronous and throws
|
|
432
|
+
* when invoked unprepared, so a future caller cannot silently skip the
|
|
433
|
+
* step.
|
|
434
|
+
*/
|
|
435
|
+
readonly prepare?: () => Promise<void>;
|
|
436
|
+
/** Populate this module's noun parent with its subcommands. */
|
|
437
|
+
readonly mount: (
|
|
438
|
+
parent: import("commander").Command,
|
|
439
|
+
host: CliMountHost,
|
|
440
|
+
) => void;
|
|
441
|
+
/**
|
|
442
|
+
* The completion surface of the mounted tree, keyed by verb label —
|
|
443
|
+
* static data the completion model attaches as segment children.
|
|
444
|
+
*/
|
|
445
|
+
readonly completionChildren: () => Readonly<
|
|
446
|
+
Record<string, CompletionChildSpec>
|
|
447
|
+
>;
|
|
448
|
+
/** Markdown inserted under the noun's heading in the generated reference. */
|
|
449
|
+
readonly referenceIntro?: string;
|
|
450
|
+
/**
|
|
451
|
+
* The registered CLI syntax for one of the noun's binding verbs — the
|
|
452
|
+
* MOUNTED spelling the reference must print (usage line with tree
|
|
453
|
+
* segments, flag tokens the CLI actually registers) instead of deriving
|
|
454
|
+
* tokens from binding-level param names the mounted tree may not register.
|
|
455
|
+
* Return `undefined` to keep the default rendering for that verb.
|
|
456
|
+
*/
|
|
457
|
+
readonly referenceSyntax?: (
|
|
458
|
+
verbPath: VerbSpec["path"],
|
|
459
|
+
) => ReferenceCliSyntax | undefined;
|
|
460
|
+
}
|
|
461
|
+
|
|
227
462
|
/** A capability module: a named bundle of verbs with optional boot/resources/prompts hooks. */
|
|
228
463
|
export interface CapabilityModule {
|
|
229
464
|
readonly name: string;
|
|
@@ -248,6 +483,15 @@ export interface CapabilityModule {
|
|
|
248
483
|
readonly boot?: (rt: PragmaRuntime) => void;
|
|
249
484
|
/** An optional MCP resource surface (NOT a VerbSpec field — a module hook). */
|
|
250
485
|
readonly mcpResources?: McpResourceProvider;
|
|
486
|
+
/**
|
|
487
|
+
* The slices of the index this module contributes to the MCP resource
|
|
488
|
+
* listing (NOT a VerbSpec field — a module hook, like `mcpResources`). A
|
|
489
|
+
* story-compiled module gets it DERIVED from its lookup's declared types;
|
|
490
|
+
* only an authored module declares it by hand.
|
|
491
|
+
*/
|
|
492
|
+
readonly mcpListable?: McpListable;
|
|
251
493
|
/** An optional MCP prompt surface (NOT a VerbSpec field — a module hook). */
|
|
252
494
|
readonly mcpPrompts?: McpPromptProvider;
|
|
495
|
+
/** An optional CLI mount for the module's noun (NOT a VerbSpec field). */
|
|
496
|
+
readonly cliProjection?: CliProjection;
|
|
253
497
|
}
|
|
@@ -45,6 +45,8 @@ function readDoc(relPath: string): string {
|
|
|
45
45
|
const HAND_WRITTEN_DOCS = [
|
|
46
46
|
"../../../README.md",
|
|
47
47
|
"../../../docs/getting-started.md",
|
|
48
|
+
"../../../docs/design-system.md",
|
|
49
|
+
"../../../docs/setup.md",
|
|
48
50
|
"../../../docs/mcp-integration.md",
|
|
49
51
|
"../../../docs/config-model.md",
|
|
50
52
|
"../../../docs/architecture.md",
|
|
@@ -161,7 +163,19 @@ const READ_CASES: readonly ReadCase[] = [
|
|
|
161
163
|
params: { name: ["Button"] },
|
|
162
164
|
},
|
|
163
165
|
{ command: "pragma standard list", key: "standard list", params: {} },
|
|
166
|
+
{
|
|
167
|
+
command: "pragma standard list --category react",
|
|
168
|
+
key: "standard list",
|
|
169
|
+
params: { category: ["react"] },
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
command: "pragma standard categories",
|
|
173
|
+
key: "standard categories",
|
|
174
|
+
params: {},
|
|
175
|
+
},
|
|
176
|
+
{ command: "pragma modifier list", key: "modifier list", params: {} },
|
|
164
177
|
{ command: "pragma token list", key: "token list", params: {} },
|
|
178
|
+
{ command: "pragma prompt list", key: "prompt list", params: {} },
|
|
165
179
|
{ command: "pragma tier list", key: "tier list", params: {} },
|
|
166
180
|
{ command: "pragma ontology list", key: "ontology list", params: {} },
|
|
167
181
|
{ command: "pragma config show", key: "config show", params: {} },
|
|
@@ -110,9 +110,9 @@ describe("list — a narrowing filter to zero rows is a plain empty list (B3, ad
|
|
|
110
110
|
});
|
|
111
111
|
});
|
|
112
112
|
|
|
113
|
-
describe("
|
|
113
|
+
describe("ontology_lookup — an unknown prefix is INVALID_INPUT (B3)", () => {
|
|
114
114
|
it("fails with the enumerated valid prefixes", async () => {
|
|
115
|
-
const result = await mcp.callTool("
|
|
115
|
+
const result = await mcp.callTool("ontology_lookup", { prefix: "nope" });
|
|
116
116
|
expect(result.ok).toBe(false);
|
|
117
117
|
const error = result.error as { code: string; validOptions: string[] };
|
|
118
118
|
expect(error.code).toBe("INVALID_INPUT");
|
|
@@ -1,40 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* First-run onboarding, observed through the real shipped entry.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* The contract inverted: onboarding no longer WRITES. A read-only command must
|
|
5
|
+
* leave the config home empty, and the un-set-up hint belongs on the read-only
|
|
6
|
+
* front door — where the machine's state is discovered by looking, not by
|
|
7
|
+
* seeding a file and a marker ahead of any consent.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { existsSync
|
|
10
|
+
import { existsSync } from "node:fs";
|
|
11
11
|
import { join } from "node:path";
|
|
12
12
|
import { describe, expect, it } from "vitest";
|
|
13
13
|
import { freshXdgEnv, runCli } from "../helpers/runCli.js";
|
|
14
14
|
|
|
15
|
-
describe("first-run onboarding (
|
|
16
|
-
it("
|
|
15
|
+
describe("first-run onboarding (e2e)", () => {
|
|
16
|
+
it("hints on the front door and seeds nothing", () => {
|
|
17
17
|
const env = freshXdgEnv();
|
|
18
18
|
const configPath = join(env.XDG_CONFIG_HOME, "pragma", "config.json");
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
// A read-only command writes NO config and carries no banner: the greeting
|
|
21
|
+
// used to interleave itself into the output of unrelated runs.
|
|
22
|
+
const read = runCli(["info"], {
|
|
21
23
|
env: { ...env, PRAGMA_NO_AUTO_LLM: "1" },
|
|
22
24
|
});
|
|
23
|
-
expect(
|
|
24
|
-
expect(
|
|
25
|
-
expect(
|
|
26
|
-
expect(
|
|
27
|
-
// Command output stays on stdout, untouched by the greeting.
|
|
28
|
-
expect(first.stdout).not.toContain("Hello!");
|
|
29
|
-
expect(first.stdout).toContain("pragma v");
|
|
25
|
+
expect(read.exitCode).toBe(0);
|
|
26
|
+
expect(read.stdout).toContain("pragma v");
|
|
27
|
+
expect(read.stderr).not.toContain("pre-release");
|
|
28
|
+
expect(existsSync(configPath)).toBe(false);
|
|
30
29
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
expect(
|
|
38
|
-
|
|
30
|
+
// The front door is a read, so it is where the hint belongs — on stderr,
|
|
31
|
+
// leaving the front door's own output uncorrupted on stdout.
|
|
32
|
+
const door = runCli([], { env: { ...env, PRAGMA_NO_AUTO_LLM: "1" } });
|
|
33
|
+
expect(door.exitCode).toBe(0);
|
|
34
|
+
expect(door.stderr).toContain("pre-release");
|
|
35
|
+
expect(door.stderr).toContain("pragma setup");
|
|
36
|
+
expect(door.stdout).not.toContain("pre-release");
|
|
37
|
+
// Still nothing written: the hint is a probe, not a seed.
|
|
38
|
+
expect(existsSync(configPath)).toBe(false);
|
|
39
39
|
});
|
|
40
40
|
});
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* BACKING ADAPTATION: the plan lists this as "fixture + spawn"; the PR4 quality
|
|
5
5
|
* bar (R7 — keep the spawn-e2e layer to exactly A1-A4/A7) overrides that, so
|
|
6
6
|
* this drives `block list` through the REAL CLI dispatch path (`executeVerb`,
|
|
7
|
-
* the same function the
|
|
7
|
+
* the same function the shipped entry's `dispatch()` calls) IN-PROCESS
|
|
8
8
|
* against the fixture, rather than spawning. It still exercises the true CLI
|
|
9
9
|
* seam (typed params -> dispatch -> render), just without forking a process.
|
|
10
10
|
*
|
|
@@ -31,7 +31,7 @@ import { storyModules } from "../../capabilities/distribution.js";
|
|
|
31
31
|
import { graphQueryVerb } from "../../capabilities/graph/query.verb.js";
|
|
32
32
|
import {
|
|
33
33
|
ontologyListVerb,
|
|
34
|
-
|
|
34
|
+
ontologyLookupVerb,
|
|
35
35
|
} from "../../capabilities/ontology/verbs.js";
|
|
36
36
|
import { updateVerb } from "../../capabilities/sources/update.verb.js";
|
|
37
37
|
import {
|
|
@@ -268,7 +268,7 @@ describe("default-pack journey — block list, populated and empty (E1)", () =>
|
|
|
268
268
|
});
|
|
269
269
|
|
|
270
270
|
it("an ontology-only pack with no blocks lists empty — a calm exit 0", async () => {
|
|
271
|
-
// D10-A, MEASURED at the dispatch seam the
|
|
271
|
+
// D10-A, MEASURED at the dispatch seam the CLI uses: the declared list
|
|
272
272
|
// body (`makeListRun`) returns `[]` and never throws on emptiness, so the
|
|
273
273
|
// process still exits 0 — no exit-code delta against the hand-written verb.
|
|
274
274
|
// Only the empty MESSAGE moved (the story's `emptyRecovery` replaces the
|
|
@@ -306,10 +306,10 @@ describe("default-pack journey — ontology list/show, populated and empty (E1)"
|
|
|
306
306
|
]);
|
|
307
307
|
});
|
|
308
308
|
|
|
309
|
-
it("ontology
|
|
309
|
+
it("ontology lookup ds surfaces the two block domain classes", async () => {
|
|
310
310
|
const fixture = await boot(DEFAULT_PACK_TTL, DEFAULT_PACK_CONFIG);
|
|
311
311
|
const envelope = await readVerb(
|
|
312
|
-
|
|
312
|
+
ontologyLookupVerb,
|
|
313
313
|
{ prefix: "ds" },
|
|
314
314
|
fixture.cwd,
|
|
315
315
|
);
|
|
@@ -326,11 +326,11 @@ describe("default-pack journey — ontology list/show, populated and empty (E1)"
|
|
|
326
326
|
expect(envelope.data).toEqual([]);
|
|
327
327
|
});
|
|
328
328
|
|
|
329
|
-
it("ontology
|
|
329
|
+
it("ontology lookup of an unknown prefix is NOT_FOUND, not a crash", async () => {
|
|
330
330
|
const fixture = await boot(DEFAULT_PACK_TTL, DEFAULT_PACK_CONFIG);
|
|
331
331
|
await expect(
|
|
332
332
|
executeVerb(
|
|
333
|
-
|
|
333
|
+
ontologyLookupVerb,
|
|
334
334
|
{ prefix: "nope" },
|
|
335
335
|
NO_MUTATION,
|
|
336
336
|
bootRuntime(JSON_FLAGS, fixture.cwd),
|
|
@@ -447,7 +447,7 @@ describe("default-pack journey — real-data shapes the clean fixture masked (E1
|
|
|
447
447
|
// `schema.json` currently surfaces UNCLASSIFIED. `packIsComplete` only checks
|
|
448
448
|
// size > 0, so torn-but-nonempty garbage bypasses the completeness guard and
|
|
449
449
|
// `compileFromExtraction` throws a raw `SyntaxError` (renders as INTERNAL
|
|
450
|
-
// "
|
|
450
|
+
// "report") instead of a classified error. It SHOULD degrade to
|
|
451
451
|
// STORE_UNAVAILABLE like the emptied case does — the fix belongs in
|
|
452
452
|
// `kernel/runtime/graphpack/read.ts` (guard the `schema.json` read/compile).
|
|
453
453
|
// No lane in this wave owns that, so rather than a false `it.fails` hand-off
|