@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/bin.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
#!/usr/bin/env
|
|
1
|
+
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
3
|
* CLI entry point for `pragma` (v2 kernel).
|
|
4
4
|
*
|
|
5
5
|
* The composition root. Ordered early exits keep the hot paths minimal and
|
|
6
|
-
* side-effect-free: `mcp` serves over stdio (D9); `__complete` resolves
|
|
6
|
+
* side-effect-free: `mcp serve` serves over stdio (D9); `__complete` resolves
|
|
7
7
|
* completions storelessly *before* first-run so the greeting never leaks into a
|
|
8
8
|
* shell buffer; `--version` prints and exits. Otherwise: parse global flags,
|
|
9
9
|
* reject a bad `--format`, run first-run onboarding, then build the Commander
|
|
@@ -14,13 +14,39 @@
|
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
import type { Command } from "commander";
|
|
17
|
-
import {
|
|
17
|
+
import {
|
|
18
|
+
BIN_NAME,
|
|
19
|
+
DETAIL_LEVELS,
|
|
20
|
+
ISSUES_URL,
|
|
21
|
+
PROGRAM_DESCRIPTION,
|
|
22
|
+
VERSION,
|
|
23
|
+
} from "./constants.js";
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The flags a bare invocation answers itself. `--version` returns earlier; the
|
|
27
|
+
* help form falls through to the front door, which IS its answer — so the
|
|
28
|
+
* unknown-flag guard must not mistake it for a typo. One spelling per flag:
|
|
29
|
+
* no `-h`/`-v` shorts exist anywhere on the surface.
|
|
30
|
+
*/
|
|
31
|
+
const ROOT_FLAGS = new Set(["--help", "--version"]);
|
|
18
32
|
|
|
19
33
|
async function main(): Promise<void> {
|
|
20
34
|
const argv = process.argv.slice(2);
|
|
21
35
|
|
|
22
|
-
// 1. MCP server entry (D9) — `pragma mcp` serves over stdio.
|
|
23
|
-
|
|
36
|
+
// 1. MCP server entry (D9) — `pragma mcp serve` serves over stdio.
|
|
37
|
+
// The exit is NARROW on purpose: argv must be EXACTLY those two tokens.
|
|
38
|
+
// The server's startup has to stay minimal and stdio-pure (no first-run
|
|
39
|
+
// banner, no config read, nothing on stdout but JSON-RPC), which is what
|
|
40
|
+
// this shortcut buys — but the noun itself is ordinary grammar, so
|
|
41
|
+
// `pragma mcp`, `pragma mcp --help` and `pragma mcp serve --help` fall
|
|
42
|
+
// through to the same help machinery every other noun uses, and root
|
|
43
|
+
// help's promise that `--help` works on any command becomes true.
|
|
44
|
+
// Matching on a PREFIX would extend that purity budget to malformed argv
|
|
45
|
+
// it was never bought for: `mcp serve extra` would serve instead of
|
|
46
|
+
// letting Commander reject the excess argument, and `mcp serve --version`
|
|
47
|
+
// would serve instead of answering the global flag. Anything suffixed
|
|
48
|
+
// falls through to the ordinary grammar, which owns both jobs.
|
|
49
|
+
if (argv.length === 2 && argv[0] === "mcp" && argv[1] === "serve") {
|
|
24
50
|
const [{ serveMcp }, { capabilities }] = await Promise.all([
|
|
25
51
|
import("./kernel/project/mcp/serve.js"),
|
|
26
52
|
import("./capabilities/index.js"),
|
|
@@ -29,7 +55,8 @@ async function main(): Promise<void> {
|
|
|
29
55
|
return;
|
|
30
56
|
}
|
|
31
57
|
|
|
32
|
-
// 2. Completion resolver — storeless,
|
|
58
|
+
// 2. Completion resolver — storeless, and reached before anything that could
|
|
59
|
+
// print, so a completion request is never polluted by a hint.
|
|
33
60
|
// Protocol: `pragma __complete -- <words…>`; the first `--` is framing
|
|
34
61
|
// (tolerated absent) and is stripped here so a later bare `--` stays the
|
|
35
62
|
// user's end-of-options. Candidates go to stdout newline-delimited (zero
|
|
@@ -60,72 +87,131 @@ async function main(): Promise<void> {
|
|
|
60
87
|
return;
|
|
61
88
|
}
|
|
62
89
|
|
|
63
|
-
const {
|
|
64
|
-
|
|
65
|
-
|
|
90
|
+
const {
|
|
91
|
+
findValuedVerbose,
|
|
92
|
+
parseGlobalFlags,
|
|
93
|
+
readRawDetail,
|
|
94
|
+
readRawFormat,
|
|
95
|
+
stripGlobalFlags,
|
|
96
|
+
} = await import("./kernel/project/cli/globalFlags.js");
|
|
66
97
|
const globalFlags = parseGlobalFlags(argv);
|
|
67
98
|
|
|
68
99
|
// 3. `--version` is global — print and exit wherever it appears.
|
|
69
|
-
if (argv.some((arg) => arg === "--version"
|
|
100
|
+
if (argv.some((arg) => arg === "--version")) {
|
|
70
101
|
process.stdout.write(`${VERSION}\n`);
|
|
71
102
|
return;
|
|
72
103
|
}
|
|
73
104
|
|
|
74
|
-
// 4. Reject
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
) {
|
|
82
|
-
const [
|
|
83
|
-
{ PragmaError },
|
|
84
|
-
{ renderErrorPlain, renderErrorJson },
|
|
85
|
-
{ mapExitCode },
|
|
86
|
-
] = await Promise.all([
|
|
87
|
-
import("./kernel/error/PragmaError.js"),
|
|
88
|
-
import("./kernel/error/renderError.js"),
|
|
89
|
-
import("./kernel/project/cli/exitCodes.js"),
|
|
90
|
-
]);
|
|
91
|
-
const error = PragmaError.invalidInput("format", rawFormat, {
|
|
92
|
-
validOptions: ["plain", "llm", "json"],
|
|
93
|
-
});
|
|
94
|
-
const rendered =
|
|
95
|
-
globalFlags.format === "json"
|
|
96
|
-
? renderErrorJson(error)
|
|
97
|
-
: renderErrorPlain(error);
|
|
98
|
-
process.stderr.write(`${rendered}\n`);
|
|
99
|
-
process.exitCode = mapExitCode(error.code);
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// 5. First-run onboarding (stderr-only, failure-tolerant). Skipped on the
|
|
104
|
-
// side-effect-free help path — `--help` here; `mcp`, `__complete`, and
|
|
105
|
-
// `--version` already returned above — so help never seeds state.
|
|
105
|
+
// 4. Reject a bad global-flag value early (help still prints regardless):
|
|
106
|
+
// an unknown `--format`, an unrecognized `--detail` level (which used to
|
|
107
|
+
// be dropped silently — the same defect class as a filter that
|
|
108
|
+
// evaporates), and a valued `--verbose=<x>` (the flag takes no value;
|
|
109
|
+
// accepting-and-ignoring one would be a silent no-op).
|
|
110
|
+
const explicitHelp = argv.some((arg) => arg === "--help");
|
|
111
|
+
const jsonMode = globalFlags.format === "json";
|
|
106
112
|
if (!explicitHelp) {
|
|
107
|
-
const
|
|
108
|
-
|
|
113
|
+
const rawFormat = readRawFormat(argv);
|
|
114
|
+
if (
|
|
115
|
+
rawFormat !== undefined &&
|
|
116
|
+
!["plain", "llm", "json"].includes(rawFormat)
|
|
117
|
+
) {
|
|
118
|
+
await rejectGlobalValue(
|
|
119
|
+
"format",
|
|
120
|
+
rawFormat,
|
|
121
|
+
["plain", "llm", "json"],
|
|
122
|
+
jsonMode,
|
|
123
|
+
);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const rawDetail = readRawDetail(argv);
|
|
127
|
+
if (
|
|
128
|
+
rawDetail !== undefined &&
|
|
129
|
+
!(DETAIL_LEVELS as readonly string[]).includes(rawDetail)
|
|
130
|
+
) {
|
|
131
|
+
await rejectGlobalValue(
|
|
132
|
+
"detail",
|
|
133
|
+
rawDetail,
|
|
134
|
+
[...DETAIL_LEVELS],
|
|
135
|
+
jsonMode,
|
|
136
|
+
);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const valuedVerbose = findValuedVerbose(argv);
|
|
140
|
+
if (valuedVerbose !== undefined) {
|
|
141
|
+
const { PragmaError } = await import("./kernel/error/PragmaError.js");
|
|
142
|
+
await renderStartupError(
|
|
143
|
+
new PragmaError({
|
|
144
|
+
code: "INVALID_INPUT",
|
|
145
|
+
message: `\`--verbose\` takes no value; \`${valuedVerbose}\` is not a flag of this program.`,
|
|
146
|
+
recovery: { message: "Use `--verbose` on its own." },
|
|
147
|
+
}),
|
|
148
|
+
jsonMode,
|
|
149
|
+
);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
109
152
|
}
|
|
110
153
|
|
|
111
|
-
//
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
154
|
+
// 5. Load the capability registry — the command tree's data. Commander and
|
|
155
|
+
// the program builder are NOT loaded yet: the bare-invocation branch
|
|
156
|
+
// below answers `--help` and the front door from the registry alone, so
|
|
157
|
+
// the help fast path never pays for the parser it will not run.
|
|
158
|
+
const { capabilities } = await import("./capabilities/index.js");
|
|
116
159
|
const args = stripGlobalFlags(argv);
|
|
117
160
|
|
|
118
|
-
//
|
|
161
|
+
// 6. A bare invocation (no command token — argv empty or only global flags)
|
|
119
162
|
// prints the curated front door instead of exiting silently. Uses the
|
|
120
163
|
// static capabilities — the front door never reads config or stories.
|
|
121
164
|
if (!args.some((arg) => !arg.startsWith("-"))) {
|
|
165
|
+
// `args` is argv with the global flags already stripped, so a token still
|
|
166
|
+
// starting with `-` here is a flag this program does not have — EXCEPT the
|
|
167
|
+
// two the front door itself answers, which reach this branch by design.
|
|
168
|
+
// Commander rejects unknown flags below the root; without this the ROOT
|
|
169
|
+
// answered a typo with the front door and exit 0, so `pragma --detial
|
|
170
|
+
// standard` read as success.
|
|
171
|
+
const unknownFlag = args.find(
|
|
172
|
+
(arg) => arg.startsWith("-") && !ROOT_FLAGS.has(arg),
|
|
173
|
+
);
|
|
174
|
+
if (unknownFlag !== undefined) {
|
|
175
|
+
const [
|
|
176
|
+
{ PragmaError },
|
|
177
|
+
{ renderErrorPlain, renderErrorJson },
|
|
178
|
+
{ mapExitCode },
|
|
179
|
+
] = await Promise.all([
|
|
180
|
+
import("./kernel/error/PragmaError.js"),
|
|
181
|
+
import("./kernel/error/renderError.js"),
|
|
182
|
+
import("./kernel/project/cli/exitCodes.js"),
|
|
183
|
+
]);
|
|
184
|
+
const error = new PragmaError({
|
|
185
|
+
code: "INVALID_INPUT",
|
|
186
|
+
message: `Unknown option "${unknownFlag}".`,
|
|
187
|
+
recovery: {
|
|
188
|
+
message: "Run with `--help` to see the available options.",
|
|
189
|
+
},
|
|
190
|
+
});
|
|
191
|
+
process.stderr.write(
|
|
192
|
+
`${
|
|
193
|
+
globalFlags.format === "json"
|
|
194
|
+
? renderErrorJson(error)
|
|
195
|
+
: renderErrorPlain(error)
|
|
196
|
+
}\n`,
|
|
197
|
+
);
|
|
198
|
+
process.exitCode = mapExitCode(error.code);
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
|
|
122
202
|
const { formatRootHelp } = await import("./kernel/project/cli/rootHelp.js");
|
|
123
203
|
const live = capabilities
|
|
124
204
|
.flatMap((module) => [...module.verbs])
|
|
125
205
|
.filter((verb) => !verb.hidden);
|
|
126
206
|
process.stdout.write(
|
|
127
|
-
`${formatRootHelp(BIN_NAME, PROGRAM_DESCRIPTION, live)}\n`,
|
|
207
|
+
`${formatRootHelp(BIN_NAME, PROGRAM_DESCRIPTION, live, VERSION, ISSUES_URL)}\n`,
|
|
128
208
|
);
|
|
209
|
+
// The front door is a read, so it is where the un-set-up hint belongs: the
|
|
210
|
+
// machine's state is the presence of the global config, and nothing is
|
|
211
|
+
// written to discover it.
|
|
212
|
+
const { setupHintLines } = await import("./kernel/config/firstRun.js");
|
|
213
|
+
const hint = setupHintLines();
|
|
214
|
+
if (hint.length > 0) process.stderr.write(`\n${hint.join("\n")}\n`);
|
|
129
215
|
return;
|
|
130
216
|
}
|
|
131
217
|
|
|
@@ -143,10 +229,12 @@ async function main(): Promise<void> {
|
|
|
143
229
|
);
|
|
144
230
|
const effective = await loadEffectiveModules(capabilities, process.cwd());
|
|
145
231
|
modules = effective.modules;
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
232
|
+
if (globalFlags.quiet !== true) {
|
|
233
|
+
for (const problem of effective.problems) {
|
|
234
|
+
process.stderr.write(
|
|
235
|
+
`Ignored story ${problem.source}: ${problem.message}\n`,
|
|
236
|
+
);
|
|
237
|
+
}
|
|
150
238
|
}
|
|
151
239
|
} catch (error) {
|
|
152
240
|
await renderStartupError(error, globalFlags.format === "json");
|
|
@@ -155,11 +243,31 @@ async function main(): Promise<void> {
|
|
|
155
243
|
}
|
|
156
244
|
const verbs = modules.flatMap((module) => [...module.verbs]);
|
|
157
245
|
|
|
246
|
+
// Module-owned noun mounts (CapabilityModule.cliProjection), keyed by the
|
|
247
|
+
// module's noun. A module's verbs all share their noun, so the module name
|
|
248
|
+
// is that noun for every module that declares a mount.
|
|
249
|
+
const mounts = new Map(
|
|
250
|
+
modules.flatMap((module) =>
|
|
251
|
+
module.cliProjection
|
|
252
|
+
? [[module.name, module.cliProjection] as const]
|
|
253
|
+
: [],
|
|
254
|
+
),
|
|
255
|
+
);
|
|
256
|
+
|
|
257
|
+
// A mount may defer its registration machinery behind `prepare()` (the
|
|
258
|
+
// fast paths import the projection hook without ever mounting) — resolve
|
|
259
|
+
// every deferred import before the tree is built, alongside the program
|
|
260
|
+
// builder's own deferred load.
|
|
261
|
+
const [{ buildProgram }] = await Promise.all([
|
|
262
|
+
import("./kernel/project/cli/buildProgram.js"),
|
|
263
|
+
...[...mounts.values()].map((projection) => projection.prepare?.()),
|
|
264
|
+
]);
|
|
158
265
|
const program = buildProgram(verbs, {
|
|
159
266
|
globalFlags,
|
|
160
267
|
programName: BIN_NAME,
|
|
161
268
|
description: PROGRAM_DESCRIPTION,
|
|
162
269
|
version: VERSION,
|
|
270
|
+
mounts,
|
|
163
271
|
});
|
|
164
272
|
// Silence Commander's default stderr writer on EVERY command, not just the
|
|
165
273
|
// root — otherwise a bad subcommand/option prints Commander's raw `error: …`
|
|
@@ -169,10 +277,30 @@ async function main(): Promise<void> {
|
|
|
169
277
|
try {
|
|
170
278
|
await program.parseAsync(args, { from: "user" });
|
|
171
279
|
} catch (error) {
|
|
172
|
-
await handleProgramError(error, argv, globalFlags.format
|
|
280
|
+
await handleProgramError(error, argv, globalFlags.format, verbs);
|
|
173
281
|
}
|
|
174
282
|
}
|
|
175
283
|
|
|
284
|
+
/**
|
|
285
|
+
* Reject an invalid global-flag value before dispatch: one renderer for the
|
|
286
|
+
* `--format`/`--detail` guards, so every validated global value flag fails
|
|
287
|
+
* with the same invalid-input shape and its valid list.
|
|
288
|
+
*/
|
|
289
|
+
async function rejectGlobalValue(
|
|
290
|
+
name: string,
|
|
291
|
+
value: string,
|
|
292
|
+
validOptions: readonly string[],
|
|
293
|
+
jsonMode: boolean,
|
|
294
|
+
): Promise<void> {
|
|
295
|
+
const { PragmaError } = await import("./kernel/error/PragmaError.js");
|
|
296
|
+
await renderStartupError(
|
|
297
|
+
PragmaError.invalidInput(name, value, {
|
|
298
|
+
validOptions: [...validOptions],
|
|
299
|
+
}),
|
|
300
|
+
jsonMode,
|
|
301
|
+
);
|
|
302
|
+
}
|
|
303
|
+
|
|
176
304
|
/**
|
|
177
305
|
* Render a startup error (e.g. an invalid config story pack) before the command
|
|
178
306
|
* tree is built, mapping it to stderr + an exit code — the same envelope
|
|
@@ -216,7 +344,7 @@ function silenceCommanderErrors(command: Command): void {
|
|
|
216
344
|
async function handleProgramError(
|
|
217
345
|
error: unknown,
|
|
218
346
|
argv: readonly string[],
|
|
219
|
-
|
|
347
|
+
format: import("./constants.js").OutputFormat,
|
|
220
348
|
verbs: import("./kernel/spec/types.js").VerbSpec[],
|
|
221
349
|
): Promise<void> {
|
|
222
350
|
const { CommanderError } = await import("commander");
|
|
@@ -224,16 +352,66 @@ async function handleProgramError(
|
|
|
224
352
|
if (error instanceof CommanderError) {
|
|
225
353
|
if (
|
|
226
354
|
error.code === "commander.helpDisplayed" ||
|
|
227
|
-
error.code === "commander.version"
|
|
228
|
-
error.code === "commander.help"
|
|
355
|
+
error.code === "commander.version"
|
|
229
356
|
) {
|
|
230
357
|
process.exitCode = 0;
|
|
231
358
|
return;
|
|
232
359
|
}
|
|
233
|
-
if (error.code === "commander.
|
|
234
|
-
|
|
235
|
-
|
|
360
|
+
if (error.code === "commander.help") {
|
|
361
|
+
// Respect the help error's OWN exit code: `help({ error: true })` — a
|
|
362
|
+
// bare namespace with children, help written to stderr — carries 1;
|
|
363
|
+
// a stdout help carries 0.
|
|
364
|
+
process.exitCode = error.exitCode;
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
// A parse failure whose argv still speaks a retired module grammar gets
|
|
369
|
+
// that module's designed migration error (the module authors the text;
|
|
370
|
+
// the kernel only routes). Currently: `create component --framework`
|
|
371
|
+
// (R1) — scoped to the ONE command that ever had the flag, so
|
|
372
|
+
// `create package --framework …` keeps its honest unknown-option error
|
|
373
|
+
// instead of a migration message about a grammar it never spoke — and
|
|
374
|
+
// scoped to the pre-terminator span: after `--` the spelling is an
|
|
375
|
+
// operand, not the retired flag, so the real parse error stands.
|
|
376
|
+
const { selectScanSpan, stripGlobalFlags } = await import(
|
|
377
|
+
"./kernel/project/cli/globalFlags.js"
|
|
378
|
+
);
|
|
379
|
+
const strippedArgs = stripGlobalFlags(argv);
|
|
380
|
+
const strippedPositionals = strippedArgs.filter(
|
|
381
|
+
(arg) => !arg.startsWith("-"),
|
|
382
|
+
);
|
|
383
|
+
if (
|
|
384
|
+
strippedPositionals[0] === "create" &&
|
|
385
|
+
strippedPositionals[1] === "component" &&
|
|
386
|
+
selectScanSpan(strippedArgs).some(
|
|
387
|
+
(arg) => arg === "--framework" || arg.startsWith("--framework="),
|
|
388
|
+
)
|
|
389
|
+
) {
|
|
390
|
+
const [
|
|
391
|
+
{ FRAMEWORK_FLAG_ERROR },
|
|
392
|
+
{ PragmaError },
|
|
393
|
+
{ renderErrorForFormat },
|
|
394
|
+
] = await Promise.all([
|
|
395
|
+
import("./capabilities/create/messages.js"),
|
|
396
|
+
import("./kernel/error/PragmaError.js"),
|
|
397
|
+
import("./kernel/error/renderError.js"),
|
|
398
|
+
]);
|
|
399
|
+
// Explicit --format json/llm envelope (the kernel's one gate+renderer
|
|
400
|
+
// decision); plain keeps the designed raw line.
|
|
401
|
+
const rendered = renderErrorForFormat(
|
|
402
|
+
new PragmaError({
|
|
403
|
+
code: "INVALID_INPUT",
|
|
404
|
+
message: FRAMEWORK_FLAG_ERROR.replace(/^error:\s*/i, ""),
|
|
405
|
+
}),
|
|
406
|
+
format,
|
|
236
407
|
);
|
|
408
|
+
process.stderr.write(`${rendered ?? FRAMEWORK_FLAG_ERROR}\n`);
|
|
409
|
+
process.exitCode = 2;
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
412
|
+
if (error.code === "commander.unknownCommand") {
|
|
413
|
+
const { curatedSuggestions, nounVerbMap, resolveUnknownCommand } =
|
|
414
|
+
await import("./kernel/project/cli/suggest.js");
|
|
237
415
|
const { stripGlobalFlags } = await import(
|
|
238
416
|
"./kernel/project/cli/globalFlags.js"
|
|
239
417
|
);
|
|
@@ -244,24 +422,28 @@ async function handleProgramError(
|
|
|
244
422
|
if (unknown) {
|
|
245
423
|
// Route through the same PragmaError + renderers as every other error,
|
|
246
424
|
// so the plain path gets the `Error:` prefix and the shared "Did you
|
|
247
|
-
// mean?" list instead of a second, inline rendering
|
|
425
|
+
// mean?" list instead of a second, inline rendering — and an explicit
|
|
426
|
+
// machine format gets the same envelope every other usage error
|
|
427
|
+
// emits (the kernel's one gate+renderer decision; plain and json
|
|
428
|
+
// bytes unchanged by construction).
|
|
248
429
|
const [
|
|
249
430
|
{ PragmaError },
|
|
250
|
-
{
|
|
431
|
+
{ renderErrorForFormat, renderErrorPlain },
|
|
251
432
|
{ suggestNames },
|
|
252
433
|
] = await Promise.all([
|
|
253
434
|
import("./kernel/error/PragmaError.js"),
|
|
254
435
|
import("./kernel/error/renderError.js"),
|
|
255
436
|
import("./kernel/project/cli/suggestNames.js"),
|
|
256
437
|
]);
|
|
257
|
-
const
|
|
258
|
-
|
|
259
|
-
|
|
438
|
+
const curated = curatedSuggestions(unknown.token);
|
|
439
|
+
const suggestions = curated
|
|
440
|
+
? [...curated]
|
|
441
|
+
: suggestNames(unknown.token, [...unknown.candidates]);
|
|
260
442
|
const unknownError = PragmaError.unknownVerb(unknown.token, {
|
|
261
443
|
suggestions,
|
|
262
444
|
});
|
|
263
445
|
process.stderr.write(
|
|
264
|
-
`${
|
|
446
|
+
`${renderErrorForFormat(unknownError, format) ?? renderErrorPlain(unknownError)}\n`,
|
|
265
447
|
);
|
|
266
448
|
}
|
|
267
449
|
process.exitCode = 2;
|
|
@@ -269,19 +451,22 @@ async function handleProgramError(
|
|
|
269
451
|
}
|
|
270
452
|
|
|
271
453
|
// Other usage errors (missing argument, unknown option, bad choice). Under
|
|
272
|
-
// --format json these route through the same error
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
454
|
+
// an explicit --format json/llm these route through the same error
|
|
455
|
+
// envelope agents parse (the kernel's one gate+renderer decision — the
|
|
456
|
+
// llm half used to split this one taxonomy class: an excess positional
|
|
457
|
+
// enveloped while an unknown option stayed raw prose).
|
|
458
|
+
const [{ PragmaError }, { renderErrorForFormat }] = await Promise.all([
|
|
459
|
+
import("./kernel/error/PragmaError.js"),
|
|
460
|
+
import("./kernel/error/renderError.js"),
|
|
461
|
+
]);
|
|
462
|
+
const rendered = renderErrorForFormat(
|
|
463
|
+
new PragmaError({
|
|
464
|
+
code: "INVALID_INPUT",
|
|
465
|
+
message: error.message.replace(/^error:\s*/i, ""),
|
|
466
|
+
}),
|
|
467
|
+
format,
|
|
468
|
+
);
|
|
469
|
+
process.stderr.write(`${rendered ?? error.message}\n`);
|
|
285
470
|
process.exitCode = 2;
|
|
286
471
|
return;
|
|
287
472
|
}
|
|
@@ -302,7 +487,7 @@ async function handleProgramError(
|
|
|
302
487
|
error instanceof Error ? error.message : String(error),
|
|
303
488
|
);
|
|
304
489
|
process.stderr.write(
|
|
305
|
-
`${
|
|
490
|
+
`${format === "json" ? renderErrorJson(pragmaError) : renderErrorPlain(pragmaError)}\n`,
|
|
306
491
|
);
|
|
307
492
|
process.exitCode = mapExitCode(pragmaError.code);
|
|
308
493
|
}
|
|
@@ -138,9 +138,12 @@ ds:Component a owl:Class .
|
|
|
138
138
|
try {
|
|
139
139
|
const rows = (await verb("list").run({}, emptyRt)) as PackRow[];
|
|
140
140
|
expect(rows).toEqual([]);
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
141
|
+
// The same semantics, on the empty-state seam: the calm message + its
|
|
142
|
+
// runnable hint now reach the user via stderr (`emptyNotice`), keeping
|
|
143
|
+
// plain stdout pure data.
|
|
144
|
+
const notice = verb("list").output.formatters.emptyNotice?.(rows);
|
|
145
|
+
expect(notice).toContain("No blocks in the store.");
|
|
146
|
+
expect(notice).toContain("pragma sources update");
|
|
144
147
|
} finally {
|
|
145
148
|
(await emptyRt.store.get()).store.dispose();
|
|
146
149
|
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import { BIN_NAME } from "../../constants.js";
|
|
10
|
-
import type { Formatters } from "../../kernel/spec/
|
|
10
|
+
import type { Formatters } from "../../kernel/spec/index.js";
|
|
11
11
|
import type { CapabilitiesData, ToolCategory } from "./types.js";
|
|
12
12
|
|
|
13
13
|
/** Category display order for grouped tool listings. */
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
import { BIN_NAME } from "../../constants.js";
|
|
25
25
|
import { asVerb } from "../../kernel/spec/asVerb.js";
|
|
26
|
-
import type { VerbSpec } from "../../kernel/spec/
|
|
26
|
+
import type { VerbSpec } from "../../kernel/spec/index.js";
|
|
27
27
|
import { capabilitiesFormatters } from "./capabilities.render.js";
|
|
28
28
|
import type { CapabilitiesData } from "./types.js";
|
|
29
29
|
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import { BIN_NAME, PROGRAM_DESCRIPTION, VERSION } from "../../constants.js";
|
|
18
|
-
import {
|
|
19
|
-
import
|
|
18
|
+
import type { CapabilityModule } from "../../kernel/spec/index.js";
|
|
19
|
+
import { emitSurface } from "../../kernel/spec/index.js";
|
|
20
20
|
import { TOOL_HINTS } from "./hints.js";
|
|
21
21
|
import type {
|
|
22
22
|
CapabilitiesData,
|
|
@@ -91,7 +91,7 @@ export function buildDiscoverySequence(
|
|
|
91
91
|
stage: 2,
|
|
92
92
|
tool: "sources_status",
|
|
93
93
|
purpose:
|
|
94
|
-
"See which pack is answering. A fresh install answers reads from the snapshot
|
|
94
|
+
"See which pack is answering. A fresh install answers reads from the snapshot shipped with the CLI and needs no build; only an `unavailable` status requires sources_update (confirm: true), which is a project that declared its own packs and has not built them.",
|
|
95
95
|
},
|
|
96
96
|
{
|
|
97
97
|
stage: 3,
|
|
@@ -58,7 +58,13 @@ export const TOOL_HINTS: Record<string, ToolHint> = {
|
|
|
58
58
|
},
|
|
59
59
|
colophon: {
|
|
60
60
|
category: "read",
|
|
61
|
-
use_when:
|
|
61
|
+
use_when:
|
|
62
|
+
"Understanding how the active domain is built — its declared colophon, for onboarding or a demo",
|
|
63
|
+
},
|
|
64
|
+
config_get: {
|
|
65
|
+
category: "read",
|
|
66
|
+
use_when:
|
|
67
|
+
"Reading ONE config field's effective value and the layer it came from — the single-value form of config_show",
|
|
62
68
|
},
|
|
63
69
|
config_show: {
|
|
64
70
|
category: "read",
|
|
@@ -99,11 +105,6 @@ export const TOOL_HINTS: Record<string, ToolHint> = {
|
|
|
99
105
|
use_when:
|
|
100
106
|
"Exploring the full schema of a namespace by name — classes, properties, and hierarchy",
|
|
101
107
|
},
|
|
102
|
-
ontology_show: {
|
|
103
|
-
category: "read",
|
|
104
|
-
use_when:
|
|
105
|
-
"Deprecated alias of ontology_lookup — exploring a namespace's schema (prefer ontology_lookup)",
|
|
106
|
-
},
|
|
107
108
|
prompt_list: {
|
|
108
109
|
category: "read",
|
|
109
110
|
use_when: "Browsing the workflow prompt templates the active graph offers",
|
|
@@ -115,7 +116,7 @@ export const TOOL_HINTS: Record<string, ToolHint> = {
|
|
|
115
116
|
},
|
|
116
117
|
skill_list: {
|
|
117
118
|
category: "read",
|
|
118
|
-
use_when: "Discovering agent skills provided by installed
|
|
119
|
+
use_when: "Discovering agent skills provided by installed packs",
|
|
119
120
|
},
|
|
120
121
|
skill_lookup: {
|
|
121
122
|
category: "read",
|
|
@@ -141,6 +142,25 @@ export const TOOL_HINTS: Record<string, ToolHint> = {
|
|
|
141
142
|
category: "read",
|
|
142
143
|
use_when: "Discovering which standard categories exist before filtering",
|
|
143
144
|
},
|
|
145
|
+
concept_list: {
|
|
146
|
+
category: "read",
|
|
147
|
+
use_when:
|
|
148
|
+
"Browsing long-form design-system concepts (foundations, how-to guides, decision guides)",
|
|
149
|
+
},
|
|
150
|
+
concept_lookup: {
|
|
151
|
+
category: "read",
|
|
152
|
+
use_when: "Reading a concept's full Markdown documentation by name or IRI",
|
|
153
|
+
},
|
|
154
|
+
implementation_list: {
|
|
155
|
+
category: "read",
|
|
156
|
+
use_when:
|
|
157
|
+
"Finding which library implements a block, on which platform, and where its source lives",
|
|
158
|
+
},
|
|
159
|
+
implementation_libraries: {
|
|
160
|
+
category: "read",
|
|
161
|
+
use_when:
|
|
162
|
+
"Discovering which implementation libraries exist, and how much of the design system each covers",
|
|
163
|
+
},
|
|
144
164
|
standard_sample: {
|
|
145
165
|
category: "read",
|
|
146
166
|
use_when:
|
|
@@ -176,6 +196,11 @@ export const TOOL_HINTS: Record<string, ToolHint> = {
|
|
|
176
196
|
use_when:
|
|
177
197
|
"Setting any config field by name — tier, channel, or detail (e.g. `config set tier apps/lxd`)",
|
|
178
198
|
},
|
|
199
|
+
config_unset: {
|
|
200
|
+
category: "write",
|
|
201
|
+
use_when:
|
|
202
|
+
'Clearing a config field so the built-in default applies again — no value means "remove", this tool does',
|
|
203
|
+
},
|
|
179
204
|
create_component: {
|
|
180
205
|
category: "write",
|
|
181
206
|
use_when: "Scaffolding a new component (React, Svelte, or Lit)",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* that replaces the retired `llm` tool.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type { CapabilityModule } from "../../kernel/spec/
|
|
6
|
+
import type { CapabilityModule } from "../../kernel/spec/index.js";
|
|
7
7
|
import { capabilitiesSelfVerb } from "./capabilities.verb.js";
|
|
8
8
|
|
|
9
9
|
/** The `capabilities` capability module (a single storeless self-verb). */
|