@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
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
* exactly what the config declared.
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import type { PackDeclaration } from "../../config/
|
|
12
|
-
import { PragmaError } from "../../error/
|
|
11
|
+
import type { PackDeclaration } from "../../config/index.js";
|
|
12
|
+
import { PragmaError } from "../../error/index.js";
|
|
13
13
|
|
|
14
14
|
/** A parsed, validated package reference — discriminated by `kind`. */
|
|
15
15
|
export type PackageRef =
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
14
14
|
import { createRequire } from "node:module";
|
|
15
15
|
import { dirname, join, relative } from "node:path";
|
|
16
|
-
import { PragmaError } from "../../error/
|
|
16
|
+
import { PragmaError } from "../../error/index.js";
|
|
17
17
|
import { refsCacheDir } from "../paths.js";
|
|
18
18
|
import { cloneRef, fetchRef, headCommit } from "./gitOps.js";
|
|
19
19
|
import { type PackageRef, redactUrl } from "./parseRef.js";
|
|
@@ -75,7 +75,7 @@ function errorDetail(error: unknown): string {
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
/** Recursively collect `*.ttl` files under a directory (a manual walk — the
|
|
78
|
-
*
|
|
78
|
+
* node:fs globSync has mishandled `**` under a shipped runtime, so we avoid it). */
|
|
79
79
|
function walkTtl(
|
|
80
80
|
dir: string,
|
|
81
81
|
base: string,
|
|
@@ -95,7 +95,7 @@ function walkTtl(
|
|
|
95
95
|
// symlinked `.ttl` was silently skipped (L6). Follow the link to recover a
|
|
96
96
|
// symlinked FILE, but NEVER recurse into a symlinked DIRECTORY: a symlink
|
|
97
97
|
// cycle (a link to an ancestor dir) would recurse without bound — a
|
|
98
|
-
// stack-overflow RangeError surfacing as an INTERNAL "
|
|
98
|
+
// stack-overflow RangeError surfacing as an INTERNAL "report" — and a
|
|
99
99
|
// linked directory could pull `.ttl` from OUTSIDE the package root. Linking
|
|
100
100
|
// individual source files (all L6 needs) stays supported; a dangling link is
|
|
101
101
|
// skipped, not fatal.
|
|
@@ -343,7 +343,7 @@ export async function resolvePackage(
|
|
|
343
343
|
"0.0.0";
|
|
344
344
|
} catch (error) {
|
|
345
345
|
// A malformed `package.json` for an otherwise-installed package: name it
|
|
346
|
-
// as a data error, not an INTERNAL_ERROR "
|
|
346
|
+
// as a data error, not an INTERNAL_ERROR "report this issue".
|
|
347
347
|
throw PragmaError.configError(
|
|
348
348
|
`Package "${ref.pkg}" has an invalid package.json (${pkgJsonPath}): ${errorDetail(error)}`,
|
|
349
349
|
);
|
|
@@ -18,8 +18,7 @@
|
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
20
|
import type { ConfigLayers } from "../config/types.js";
|
|
21
|
-
import { PragmaError } from "../error/
|
|
22
|
-
import { cliRecovery } from "../error/recovery.js";
|
|
21
|
+
import { cliRecovery, PragmaError } from "../error/index.js";
|
|
23
22
|
import { resolveSources } from "./resolveSources.js";
|
|
24
23
|
|
|
25
24
|
/**
|
|
@@ -21,10 +21,14 @@ export interface GlobalFlags {
|
|
|
21
21
|
readonly llm: boolean;
|
|
22
22
|
/** True when `llm` was inferred from a non-interactive stdout, not requested. */
|
|
23
23
|
readonly autoLlm?: boolean;
|
|
24
|
-
/** Selected output format
|
|
24
|
+
/** Selected output format (`plain`, `llm`, or `json` — the full set). */
|
|
25
25
|
readonly format: OutputFormat;
|
|
26
26
|
/** Diagnostic output to stderr. */
|
|
27
27
|
readonly verbose: boolean;
|
|
28
|
+
/** True when `--no-headers` suppressed the plain-table header row. */
|
|
29
|
+
readonly noHeaders?: boolean;
|
|
30
|
+
/** True when `--quiet` suppresses success/progress output (errors keep printing). */
|
|
31
|
+
readonly quiet?: boolean;
|
|
28
32
|
/** Explicit progressive-disclosure level from `--detail`, if any. */
|
|
29
33
|
readonly detail?: DetailLevel;
|
|
30
34
|
}
|
|
@@ -94,6 +98,8 @@ export interface QueryFacade {
|
|
|
94
98
|
export interface MutationRuntime {
|
|
95
99
|
/** True for a plan-only preview; false for a real execution. */
|
|
96
100
|
readonly preview: boolean;
|
|
101
|
+
/** True when this invocation reverses a previous run (`--undo`). */
|
|
102
|
+
readonly undo?: boolean;
|
|
97
103
|
}
|
|
98
104
|
|
|
99
105
|
/**
|
|
@@ -207,4 +213,12 @@ export interface PragmaRuntime {
|
|
|
207
213
|
* returning the Task, and the projector reads it back on the real-run branch.
|
|
208
214
|
*/
|
|
209
215
|
exec?: RunnerOptions;
|
|
216
|
+
/**
|
|
217
|
+
* Structured plan data a mutating verb stashes for the `--dry-run` branch to
|
|
218
|
+
* render through its `output.formatPlan` seam, and to carry verbatim in the
|
|
219
|
+
* JSON dry-run envelope. NOT readonly, and set the same way `exec` is: the
|
|
220
|
+
* verb writes it before returning its Task. Unset on every verb that has no
|
|
221
|
+
* plan of its own, which is what keeps the raw-effect render the default.
|
|
222
|
+
*/
|
|
223
|
+
planData?: unknown;
|
|
210
224
|
}
|
|
@@ -7,46 +7,41 @@ import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
|
|
7
7
|
import { embeddedManifest } from "./graphpack/embedded.js";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
* The store-boot path
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
10
|
+
* The store-boot path at the PROCESS BOUNDARY: whether oxigraph's WASM and the
|
|
11
|
+
* embedded pack actually load from the shipped artifact. vitest's in-process
|
|
12
|
+
* suite cannot catch this — it imports the source tree directly, so a break in
|
|
13
|
+
* how the emit resolves the WASM or the inlined pack would leave it green while
|
|
14
|
+
* every store-backed command failed for a consumer.
|
|
15
|
+
*
|
|
16
|
+
* It used to compile a `bun build --compile` binary and spawn that, because the
|
|
17
|
+
* shipped artifact WAS that binary and the question was whether the WASM
|
|
18
|
+
* survived embedding. The package now ships emitted JavaScript, so the same
|
|
19
|
+
* guard points at the same place it always did — what a consumer runs — which is
|
|
20
|
+
* `node dist/src/bin.js`. Compiling a binary here would test an artifact nobody
|
|
21
|
+
* receives.
|
|
22
|
+
*
|
|
23
|
+
* Every spawn runs in a scratch cwd with `HOME` and all three XDG roots inside
|
|
24
|
+
* it, so anything the CLI answers it answered from its own shipped state.
|
|
16
25
|
*/
|
|
17
|
-
const packageRoot = fileURLToPath(new URL("../../../", import.meta.url));
|
|
18
|
-
|
|
19
26
|
let workdir: string;
|
|
20
|
-
|
|
27
|
+
|
|
28
|
+
/** The shipped entry, provisioned by `testing/perf/globalSetup.ts`. */
|
|
29
|
+
const shippedEntry = fileURLToPath(
|
|
30
|
+
new URL("../../../dist/src/bin.js", import.meta.url),
|
|
31
|
+
);
|
|
21
32
|
|
|
22
33
|
beforeAll(() => {
|
|
23
34
|
workdir = mkdtempSync(join(tmpdir(), "pragma-wasm-smoke-"));
|
|
24
|
-
|
|
25
|
-
const build = spawnSync(
|
|
26
|
-
"bun",
|
|
27
|
-
[
|
|
28
|
-
"build",
|
|
29
|
-
"--compile",
|
|
30
|
-
"--target=bun-linux-x64",
|
|
31
|
-
"src/bin.ts",
|
|
32
|
-
"--outfile",
|
|
33
|
-
binary,
|
|
34
|
-
],
|
|
35
|
-
{ cwd: packageRoot, stdio: "pipe", encoding: "utf-8" },
|
|
36
|
-
);
|
|
37
|
-
if (build.status !== 0) {
|
|
38
|
-
throw new Error(`smoke build failed:\n${build.stderr}`);
|
|
39
|
-
}
|
|
40
|
-
}, 120_000);
|
|
35
|
+
});
|
|
41
36
|
|
|
42
37
|
afterAll(() => {
|
|
43
38
|
rmSync(workdir, { recursive: true, force: true });
|
|
44
39
|
});
|
|
45
40
|
|
|
46
|
-
/** Run the
|
|
47
|
-
*
|
|
41
|
+
/** Run the shipped entry in a scratch cwd with isolated XDG dirs (no real
|
|
42
|
+
* config, cache or state) — anything it answers, it answered from itself. */
|
|
48
43
|
const runBinary = (args: string[]) =>
|
|
49
|
-
spawnSync(
|
|
44
|
+
spawnSync(process.execPath, [shippedEntry, ...args], {
|
|
50
45
|
cwd: workdir,
|
|
51
46
|
stdio: "pipe",
|
|
52
47
|
encoding: "utf-8",
|
|
@@ -59,8 +54,8 @@ const runBinary = (args: string[]) =>
|
|
|
59
54
|
},
|
|
60
55
|
});
|
|
61
56
|
|
|
62
|
-
describe("oxigraph WASM + embedded pack
|
|
63
|
-
it("
|
|
57
|
+
describe("oxigraph WASM + embedded pack load from the shipped entry (PROTECTED)", () => {
|
|
58
|
+
it("the shipped entry boots the embedded store via __store-probe (needsStore path)", () => {
|
|
64
59
|
const run = runBinary(["__store-probe"]);
|
|
65
60
|
expect(run.status, run.stderr).toBe(0);
|
|
66
61
|
const out = JSON.parse(run.stdout.trim()) as {
|
|
@@ -69,14 +64,14 @@ describe("oxigraph WASM + embedded pack embed in the compiled binary (PROTECTED)
|
|
|
69
64
|
triples: string;
|
|
70
65
|
};
|
|
71
66
|
expect(out.ok).toBe(true);
|
|
72
|
-
//
|
|
73
|
-
//
|
|
67
|
+
// Worth asserting only across the process boundary: the store booted from
|
|
68
|
+
// the inlined `data.nq` must hold exactly what the committed
|
|
74
69
|
// `manifest.json` claims was built into it.
|
|
75
70
|
expect(Number(out.triples)).toBe(embeddedManifest().tripleCount);
|
|
76
71
|
expect(out.entities).toBeGreaterThan(0);
|
|
77
72
|
});
|
|
78
73
|
|
|
79
|
-
it("
|
|
74
|
+
it("the shipped entry runs storeless sources status", () => {
|
|
80
75
|
const run = runBinary(["sources", "status", "--format", "json"]);
|
|
81
76
|
expect(run.status, run.stderr).toBe(0);
|
|
82
77
|
const envelope = JSON.parse(run.stdout.trim()) as {
|
|
@@ -88,10 +83,13 @@ describe("oxigraph WASM + embedded pack embed in the compiled binary (PROTECTED)
|
|
|
88
83
|
expect(envelope.data.store).toBe("embedded");
|
|
89
84
|
});
|
|
90
85
|
|
|
91
|
-
// Regression guard: `sources update` walks a package's TTL directories
|
|
92
|
-
//
|
|
93
|
-
//
|
|
94
|
-
|
|
86
|
+
// Regression guard: `sources update` walks a package's TTL directories with
|
|
87
|
+
// `node:fs` globSync, whose `**` handling has broken under a shipped runtime
|
|
88
|
+
// before (returning bogus paths) where the in-process suite stayed green — so
|
|
89
|
+
// exercise it through the real entry. This case also writes a real
|
|
90
|
+
// `pragma.config.ts`, which the shipped entry loads through node's TypeScript
|
|
91
|
+
// type stripping: the one test that exercises that path end-to-end.
|
|
92
|
+
it("the shipped entry runs sources update end-to-end (build + point + status)", () => {
|
|
95
93
|
const pkg = join(workdir, "pkg");
|
|
96
94
|
const proj = join(workdir, "proj");
|
|
97
95
|
mkdirSync(join(pkg, "definitions"), { recursive: true });
|
|
@@ -117,7 +115,7 @@ ex:one a ex:Widget ; rdfs:label "One" .
|
|
|
117
115
|
XDG_CONFIG_HOME: join(workdir, "config"),
|
|
118
116
|
};
|
|
119
117
|
const inProj = (args: string[]) =>
|
|
120
|
-
spawnSync(
|
|
118
|
+
spawnSync(process.execPath, [shippedEntry, ...args], {
|
|
121
119
|
cwd: proj,
|
|
122
120
|
stdio: "pipe",
|
|
123
121
|
encoding: "utf-8",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
import { BIN_NAME, PROJECT_CONFIG_FILENAME } from "../../constants.js";
|
|
19
19
|
import type { RawConfig } from "../config/types.js";
|
|
20
|
-
import { ERROR_CODES } from "../error/
|
|
20
|
+
import { ERROR_CODES } from "../error/index.js";
|
|
21
21
|
import {
|
|
22
22
|
FIXED_SURFACE,
|
|
23
23
|
kebabCase,
|
|
@@ -28,6 +28,7 @@ import type {
|
|
|
28
28
|
CapabilityModule,
|
|
29
29
|
Example,
|
|
30
30
|
ParamSpec,
|
|
31
|
+
ReferenceCliSyntax,
|
|
31
32
|
VerbSpec,
|
|
32
33
|
} from "./types.js";
|
|
33
34
|
|
|
@@ -49,9 +50,9 @@ const ERROR_CODE_DESCRIPTIONS: Record<(typeof ERROR_CODES)[number], string> = {
|
|
|
49
50
|
AMBIGUOUS_INPUT:
|
|
50
51
|
"A name resolved to several entities (reserved; not yet raised).",
|
|
51
52
|
UNKNOWN_VERB: "The command noun or verb is not recognized.",
|
|
52
|
-
STORE_UNAVAILABLE: "The local store
|
|
53
|
-
CONFIG_ERROR: "The layered configuration
|
|
54
|
-
INTERNAL_ERROR: "An unexpected failure —
|
|
53
|
+
STORE_UNAVAILABLE: "The local store cannot be reached or is not built.",
|
|
54
|
+
CONFIG_ERROR: "The layered configuration cannot be resolved.",
|
|
55
|
+
INTERNAL_ERROR: "An unexpected failure — report it as a bug.",
|
|
55
56
|
UNSUPPORTED: "A capability is unavailable in this build or environment.",
|
|
56
57
|
};
|
|
57
58
|
|
|
@@ -165,22 +166,39 @@ function formatUsage(verb: VerbSpec): string {
|
|
|
165
166
|
return segments.join(" ");
|
|
166
167
|
}
|
|
167
168
|
|
|
168
|
-
/**
|
|
169
|
-
|
|
169
|
+
/**
|
|
170
|
+
* The Args table for a verb's positionals, or `""` when it has none. A
|
|
171
|
+
* mounted verb's {@link ReferenceCliSyntax.positionalTokens} supplies the
|
|
172
|
+
* REGISTERED token per param — the one its usage line prints — so the
|
|
173
|
+
* Argument column and the synopsis agree on the same spelling; without one,
|
|
174
|
+
* the token derives from the param name.
|
|
175
|
+
*/
|
|
176
|
+
function formatArgsTable(
|
|
177
|
+
params: readonly ParamSpec[],
|
|
178
|
+
positionalTokens?: Readonly<Record<string, string>>,
|
|
179
|
+
): string {
|
|
170
180
|
const positionals = params.filter((p) => p.positional);
|
|
171
181
|
if (positionals.length === 0) return "";
|
|
172
182
|
const rows = ["| Argument | Required | Description |", "| --- | --- | --- |"];
|
|
173
183
|
for (const param of positionals) {
|
|
174
184
|
const required = param.required ? "yes" : "no";
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
);
|
|
185
|
+
const token =
|
|
186
|
+
positionalTokens?.[param.name] ?? formatPositionalToken(param);
|
|
187
|
+
rows.push(`| \`${token}\` | ${required} | ${describeParam(param)} |`);
|
|
178
188
|
}
|
|
179
189
|
return `**Arguments**\n\n${rows.join("\n")}`;
|
|
180
190
|
}
|
|
181
191
|
|
|
182
|
-
/**
|
|
183
|
-
|
|
192
|
+
/**
|
|
193
|
+
* The Flags table for a verb's non-positional params, or `""` when it has
|
|
194
|
+
* none. A mounted verb's {@link ReferenceCliSyntax.flagTokens} supplies the
|
|
195
|
+
* REGISTERED token per param (e.g. a default-true boolean's `--no-` form);
|
|
196
|
+
* without one, the token derives from the param name.
|
|
197
|
+
*/
|
|
198
|
+
function formatFlagsTable(
|
|
199
|
+
params: readonly ParamSpec[],
|
|
200
|
+
flagTokens?: Readonly<Record<string, string>>,
|
|
201
|
+
): string {
|
|
184
202
|
const flags = params.filter((p) => !p.positional);
|
|
185
203
|
if (flags.length === 0) return "";
|
|
186
204
|
const rows = ["| Flag | Value | Description |", "| --- | --- | --- |"];
|
|
@@ -189,9 +207,8 @@ function formatFlagsTable(params: readonly ParamSpec[]): string {
|
|
|
189
207
|
// does not split the table column.
|
|
190
208
|
const value = formatFlagValue(param);
|
|
191
209
|
const valueCell = value === "" ? "—" : `\`${escapeCell(value)}\``;
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
);
|
|
210
|
+
const token = flagTokens?.[param.name] ?? `--${kebabCase(param.name)}`;
|
|
211
|
+
rows.push(`| \`${token}\` | ${valueCell} | ${describeParam(param)} |`);
|
|
195
212
|
}
|
|
196
213
|
return `**Flags**\n\n${rows.join("\n")}`;
|
|
197
214
|
}
|
|
@@ -235,26 +252,39 @@ function assemblePage(blocks: readonly string[]): string {
|
|
|
235
252
|
}
|
|
236
253
|
|
|
237
254
|
/** Render one verb's `commands.md` section (heading through examples). */
|
|
238
|
-
function renderCommandSection(
|
|
255
|
+
function renderCommandSection(
|
|
256
|
+
verb: VerbSpec,
|
|
257
|
+
syntax?: ReferenceCliSyntax,
|
|
258
|
+
): string {
|
|
239
259
|
const blocks = [
|
|
240
260
|
`### ${formatInvocation(verb)}`,
|
|
241
261
|
verb.summary,
|
|
242
262
|
verb.doc ?? "",
|
|
243
|
-
`\`\`\`\n${formatUsage(verb)}\n\`\`\``,
|
|
244
|
-
formatArgsTable(verb.params),
|
|
245
|
-
formatFlagsTable(verb.params),
|
|
263
|
+
`\`\`\`\n${syntax ? `${BIN_NAME} ${syntax.usage}` : formatUsage(verb)}\n\`\`\``,
|
|
264
|
+
formatArgsTable(verb.params, syntax?.positionalTokens),
|
|
265
|
+
formatFlagsTable(verb.params, syntax?.flagTokens),
|
|
246
266
|
formatVerbAttributes(verb),
|
|
247
267
|
formatExamples(verb.examples),
|
|
248
268
|
];
|
|
249
269
|
return blocks.filter((block) => block.length > 0).join("\n\n");
|
|
250
270
|
}
|
|
251
271
|
|
|
252
|
-
/**
|
|
253
|
-
|
|
272
|
+
/**
|
|
273
|
+
* Render the CLI command reference, grouped by noun. A noun whose module
|
|
274
|
+
* declares a `cliProjection.referenceIntro` gets that Markdown inserted
|
|
275
|
+
* directly under its heading, and a verb its module supplies a
|
|
276
|
+
* `cliProjection.referenceSyntax` for renders the MOUNTED usage/flag
|
|
277
|
+
* spelling (generic module fields — the kernel renders, the module authors).
|
|
278
|
+
*/
|
|
279
|
+
function renderCommandsPage(
|
|
280
|
+
verbs: readonly VerbSpec[],
|
|
281
|
+
nounIntros: ReadonlyMap<string, string>,
|
|
282
|
+
verbSyntax: ReadonlyMap<VerbSpec, ReferenceCliSyntax>,
|
|
283
|
+
): string {
|
|
254
284
|
const blocks = [
|
|
255
285
|
"# CLI command reference",
|
|
256
286
|
`Every \`${BIN_NAME}\` command, grouped by noun. Generated from the live capability grammar — do not edit by hand.`,
|
|
257
|
-
"Global flags apply to every command: `--format <plain|llm|json>` (auto-detected — the llm/condensed-Markdown form turns on when output is piped), `--verbose`, and `--detail <summary|standard|detailed>`.",
|
|
287
|
+
"Global flags apply to every command: `--format <plain|llm|json>` (auto-detected — the llm/condensed-Markdown form turns on when output is piped), `--verbose`, `--no-headers`, `--quiet`, and `--detail <summary|standard|detailed>`.",
|
|
258
288
|
];
|
|
259
289
|
let currentNoun = "";
|
|
260
290
|
for (const verb of verbs) {
|
|
@@ -262,12 +292,45 @@ function renderCommandsPage(verbs: readonly VerbSpec[]): string {
|
|
|
262
292
|
if (noun !== currentNoun) {
|
|
263
293
|
currentNoun = noun;
|
|
264
294
|
blocks.push(`## ${noun}`);
|
|
295
|
+
const intro = nounIntros.get(noun);
|
|
296
|
+
if (intro) blocks.push(intro);
|
|
265
297
|
}
|
|
266
|
-
blocks.push(renderCommandSection(verb));
|
|
298
|
+
blocks.push(renderCommandSection(verb, verbSyntax.get(verb)));
|
|
267
299
|
}
|
|
268
300
|
return assemblePage(blocks);
|
|
269
301
|
}
|
|
270
302
|
|
|
303
|
+
/** Collect each noun's declared reference intro from its module's mount. */
|
|
304
|
+
function collectNounIntros(
|
|
305
|
+
modules: readonly CapabilityModule[],
|
|
306
|
+
): Map<string, string> {
|
|
307
|
+
const intros = new Map<string, string>();
|
|
308
|
+
for (const module of modules) {
|
|
309
|
+
const intro = module.cliProjection?.referenceIntro;
|
|
310
|
+
if (!intro) continue;
|
|
311
|
+
for (const verb of module.verbs) {
|
|
312
|
+
intros.set(verb.path[0], intro);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
return intros;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/** Collect each mounted verb's registered CLI syntax from its module. */
|
|
319
|
+
function collectVerbSyntax(
|
|
320
|
+
modules: readonly CapabilityModule[],
|
|
321
|
+
): Map<VerbSpec, ReferenceCliSyntax> {
|
|
322
|
+
const syntax = new Map<VerbSpec, ReferenceCliSyntax>();
|
|
323
|
+
for (const module of modules) {
|
|
324
|
+
const provider = module.cliProjection?.referenceSyntax;
|
|
325
|
+
if (!provider) continue;
|
|
326
|
+
for (const verb of module.verbs) {
|
|
327
|
+
const entry = provider(verb.path);
|
|
328
|
+
if (entry) syntax.set(verb, entry);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
return syntax;
|
|
332
|
+
}
|
|
333
|
+
|
|
271
334
|
/** One MCP tool input row: name, projected type, requiredness, description. */
|
|
272
335
|
interface ToolParamRow {
|
|
273
336
|
readonly name: string;
|
|
@@ -468,13 +531,18 @@ const CONFIG_FIELD_DOCS: Record<keyof RawConfig, ConfigFieldDoc> = {
|
|
|
468
531
|
name: {
|
|
469
532
|
type: "string (optional)",
|
|
470
533
|
notes:
|
|
471
|
-
"Distribution-only — see below. The
|
|
534
|
+
"Distribution-only — see below. The program's own name, read from the distribution config at module load.",
|
|
472
535
|
},
|
|
473
536
|
help: {
|
|
474
537
|
type: "string (optional)",
|
|
475
538
|
notes:
|
|
476
539
|
"Distribution-only — see below. The one-line blurb on the front door and in the MCP handshake.",
|
|
477
540
|
},
|
|
541
|
+
logo: {
|
|
542
|
+
type: "string[] (optional)",
|
|
543
|
+
notes:
|
|
544
|
+
"Distribution-only — see below. ASCII-art wordmark lines shown above the header on root `--help`, tinted with the terminal palette's orange slot. Declared content, not code: a wordmark spells the distribution's name, so a fork ships its own art or omits the field and gets no wordmark. Omit or leave empty for a bare header.",
|
|
545
|
+
},
|
|
478
546
|
colophon: {
|
|
479
547
|
type: "object (optional)",
|
|
480
548
|
notes:
|
|
@@ -488,7 +556,7 @@ const CONFIG_FIELD_DOCS: Record<keyof RawConfig, ConfigFieldDoc> = {
|
|
|
488
556
|
tier: {
|
|
489
557
|
type: "string (optional)",
|
|
490
558
|
notes:
|
|
491
|
-
"Accepted by the validator and SCOPES NOTHING: since the block list became declared content, no read filters by tier — the value is only reported by `config show` and `info`. Set it with `config set tier <path
|
|
559
|
+
"Accepted by the validator and SCOPES NOTHING: since the block list became declared content, no read filters by tier — the value is only reported by `config show` and `info`. Set it with `config set tier <path>` and clear it with `config unset tier`; `none`, `default` and `-` are refused as values, so no string doubles as a remove-marker.",
|
|
492
560
|
},
|
|
493
561
|
channel: {
|
|
494
562
|
type: "`normal` | `experimental` | `prerelease` (optional)",
|
|
@@ -550,22 +618,22 @@ function renderConfigPage(): string {
|
|
|
550
618
|
"## Layers",
|
|
551
619
|
"From lowest to highest precedence:",
|
|
552
620
|
[
|
|
553
|
-
`1. **Built-in defaults** — the distribution config
|
|
621
|
+
`1. **Built-in defaults** — the distribution config shipped with the package.`,
|
|
554
622
|
`2. **Global config** — \`$XDG_CONFIG_HOME/${BIN_NAME}/config.json\`, written by \`${BIN_NAME} config set\`.`,
|
|
555
|
-
`3. **Project config** — the nearest \`${PROJECT_CONFIG_FILENAME}\` (or \`${BIN_NAME}.config.js\`, the
|
|
623
|
+
`3. **Project config** — the nearest \`${PROJECT_CONFIG_FILENAME}\` (or \`${BIN_NAME}.config.js\`, the JavaScript fallback), walking up from the working directory.`,
|
|
556
624
|
].join("\n"),
|
|
557
625
|
"A higher layer REPLACES a lower one field by field. No field is deep-merged — not `packs`, not `prefixes`, not `completion`. A project declaring one prefix therefore replaces the distribution's whole prefix map, including the namespaces its own packs are built with; declare every prefix you need, not only the new one.",
|
|
558
626
|
"## Fields",
|
|
559
627
|
"The `Type` column is prose; the field set and each field's optionality are checked against the validator.",
|
|
560
628
|
rows.join("\n"),
|
|
561
629
|
"## Distribution-only fields",
|
|
562
|
-
`\`name\`, \`help\` and \`issuesUrl\` are read from the distribution config when the program loads, because the surfaces that need them — \`--help\`, shell completion, the MCP handshake, the first-run note — run before or without the config layer. \`colophon\` is read from the same file at render time: the \`colophon\` verb narrates whatever the distribution declares there. The validator ACCEPTS all
|
|
630
|
+
`\`name\`, \`help\`, \`logo\` and \`issuesUrl\` are read from the distribution config when the program loads, because the surfaces that need them — \`--help\`, shell completion, the MCP handshake, the first-run note — run before or without the config layer. \`colophon\` is read from the same file at render time: the \`colophon\` verb narrates whatever the distribution declares there. The validator ACCEPTS all five in a global or project layer, and they have **no effect there and are not reported** by \`config show\`. Changing them means forking: edit the distribution config and rebuild the package. The distribution config's \`vocabulary\` export is not a config field at all — no layer may declare it, and a fork changes it in the same file it changes \`name\` in.`,
|
|
563
631
|
"## What `config show` reports",
|
|
564
|
-
`\`${BIN_NAME} config show\` prints ${REPORTED_FIELDS.map((field) => `\`${field}\``).join(", ")} — those and only those — each with the layer that supplied it. The rest resolve without being reported that way: \`prefixes\` and \`completion\` appear only in the \`--format json\` payload, \`prefixes\` with an origin and \`completion\` with none; \`stories\` carries an origin whose value the payload leaves out; and the
|
|
632
|
+
`\`${BIN_NAME} config show\` prints ${REPORTED_FIELDS.map((field) => `\`${field}\``).join(", ")} — those and only those — each with the layer that supplied it. The rest resolve without being reported that way: \`prefixes\` and \`completion\` appear only in the \`--format json\` payload, \`prefixes\` with an origin and \`completion\` with none; \`stories\` carries an origin whose value the payload leaves out; and the five distribution-only fields above carry neither. The plain and llm forms print those rows and nothing else; \`--format json\` returns the resolved config and the origin map whole.`,
|
|
565
633
|
"## Renamed: `packages` → `packs`",
|
|
566
634
|
"The `packages` field was renamed to `packs`. A layer that still declares `packages:` fails loudly: the rename is detected before the schema's unknown-key stripping could hide it, and the error names it. Rename the key — the entry shape is unchanged.",
|
|
567
635
|
"## Removed: `generators`",
|
|
568
|
-
"The `generators` field was removed: it was accepted by the validator, layered, and read by nothing — the `create` verbs resolve their generators statically (
|
|
636
|
+
"The `generators` field was removed: it was accepted by the validator, layered, and read by nothing — the `create` verbs resolve their generators statically (they are imported by name, not looked up at run time), so declaring it changed only what `config show` printed. A layer that still declares it fails loudly at load with an error naming the removed field; delete it. Declared generators may return as a working feature in a later program.",
|
|
569
637
|
"## Removed: `completion.caseSensitive`",
|
|
570
638
|
"The `completion.caseSensitive` field was removed: it was accepted by the validator and read by nothing — completion matching is declared per parameter by the capability grammar, never configured. A layer that still sets it fails loudly at load with an error naming the removed field; delete the key. `completion.minChars` and `completion.families` are unchanged.",
|
|
571
639
|
"## Reading and writing",
|
|
@@ -616,7 +684,14 @@ export function emitReference(
|
|
|
616
684
|
const verbs = collectDocVerbs(modules);
|
|
617
685
|
return new Map<string, string>([
|
|
618
686
|
["index.md", renderIndexPage(verbs, modules)],
|
|
619
|
-
[
|
|
687
|
+
[
|
|
688
|
+
"commands.md",
|
|
689
|
+
renderCommandsPage(
|
|
690
|
+
verbs,
|
|
691
|
+
collectNounIntros(modules),
|
|
692
|
+
collectVerbSyntax(modules),
|
|
693
|
+
),
|
|
694
|
+
],
|
|
620
695
|
["tools.md", renderToolsPage(verbs, modules)],
|
|
621
696
|
["errors.md", renderErrorsPage()],
|
|
622
697
|
["config.md", renderConfigPage()],
|
|
@@ -82,11 +82,19 @@ export const FIXED_SURFACE = {
|
|
|
82
82
|
flag: "--format <plain|llm|json>",
|
|
83
83
|
doc: "Select output format (llm = condensed Markdown for agents)",
|
|
84
84
|
},
|
|
85
|
-
{ flag: "--verbose", doc: "Diagnostic output on stderr" },
|
|
85
|
+
{ flag: "--verbose", doc: "Diagnostic output on stderr (sources update)" },
|
|
86
86
|
{
|
|
87
87
|
flag: "--detail <level>",
|
|
88
88
|
doc: "Progressive-disclosure level (summary, standard, detailed)",
|
|
89
89
|
},
|
|
90
|
+
{
|
|
91
|
+
flag: "--no-headers",
|
|
92
|
+
doc: "Hide the table header row in plain output",
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
flag: "--quiet",
|
|
96
|
+
doc: "Suppress success and progress output (errors still print)",
|
|
97
|
+
},
|
|
90
98
|
],
|
|
91
99
|
detailLevels: ["summary", "standard", "detailed"],
|
|
92
100
|
envelope: {
|
|
@@ -151,8 +159,30 @@ function positionalToken(param: ParamSpec): string {
|
|
|
151
159
|
: `[${param.name}${variadic}]`;
|
|
152
160
|
}
|
|
153
161
|
|
|
154
|
-
/**
|
|
155
|
-
|
|
162
|
+
/**
|
|
163
|
+
* Project one verb into its surface entry, omitting default/falsy fields.
|
|
164
|
+
*
|
|
165
|
+
* `flagTokens` is a MOUNTED verb's registered spelling per param name — the
|
|
166
|
+
* same `ReferenceCliSyntax.flagTokens` seam the reference emitter consumes,
|
|
167
|
+
* supplied by the module's `cliProjection` and derived there from
|
|
168
|
+
* `buildOptionInfo` (the single flag-shape authority both binaries register
|
|
169
|
+
* from; a default-`true` confirm registers ONLY its `--no-<kebab>` form).
|
|
170
|
+
* Without it the token derives from the param name — the kernel convention,
|
|
171
|
+
* sound for kernel-registered verbs where B9 ADDS the `--no-` negation
|
|
172
|
+
* beside the positive form; false for a mounted noun, where kebab-casing
|
|
173
|
+
* wrote seven covenant tokens the CLI rejects (`--with-styles`, `--ssr`, …).
|
|
174
|
+
*
|
|
175
|
+
* `positionalTokens` is the same seam's registered POSITIONAL spelling per
|
|
176
|
+
* param name (`componentPath` → `[component-path]` — the token the usage
|
|
177
|
+
* line and the Args tables print), preferred for `args` exactly as
|
|
178
|
+
* `flagTokens` is for `flags`; a param absent there keeps the kernel
|
|
179
|
+
* `<name>`/`[name]` derivation.
|
|
180
|
+
*/
|
|
181
|
+
export function emitVerb(
|
|
182
|
+
verb: VerbSpec,
|
|
183
|
+
flagTokens?: Readonly<Record<string, string>>,
|
|
184
|
+
positionalTokens?: Readonly<Record<string, string>>,
|
|
185
|
+
): EmittedVerb {
|
|
156
186
|
const positionals = verb.params.filter((p) => p.positional);
|
|
157
187
|
const flags = verb.params.filter((p) => !p.positional);
|
|
158
188
|
|
|
@@ -165,9 +195,14 @@ export function emitVerb(verb: VerbSpec): EmittedVerb {
|
|
|
165
195
|
mcp?: string | false;
|
|
166
196
|
} = { v: verbLabel(verb.path) };
|
|
167
197
|
|
|
168
|
-
if (positionals.length > 0)
|
|
198
|
+
if (positionals.length > 0)
|
|
199
|
+
entry.args = positionals.map(
|
|
200
|
+
(p) => positionalTokens?.[p.name] ?? positionalToken(p),
|
|
201
|
+
);
|
|
169
202
|
if (flags.length > 0)
|
|
170
|
-
entry.flags = flags.map(
|
|
203
|
+
entry.flags = flags.map(
|
|
204
|
+
(p) => flagTokens?.[p.name] ?? `--${kebabCase(p.name)}`,
|
|
205
|
+
);
|
|
171
206
|
if (verb.capability.mutates) entry.mutates = true;
|
|
172
207
|
if (verb.capability.needsStore) entry.needsStore = true;
|
|
173
208
|
entry.mcp = verb.capability.mcp.expose ? toolName(verb.path) : false;
|
|
@@ -195,7 +230,14 @@ export function emitSurface(
|
|
|
195
230
|
const noun = verb.path[0];
|
|
196
231
|
const bucket = nouns[noun] ?? { verbs: [] };
|
|
197
232
|
nouns[noun] = bucket;
|
|
198
|
-
|
|
233
|
+
// A mounted verb's covenant flags AND args are its REGISTERED
|
|
234
|
+
// spellings, from the module's own syntax seam (see emitVerb) — the
|
|
235
|
+
// covenant must name tokens the CLI parses (`--no-with-styles`,
|
|
236
|
+
// `[component-path]`), not camelCase param names its help never prints.
|
|
237
|
+
const syntax = module.cliProjection?.referenceSyntax?.(verb.path);
|
|
238
|
+
bucket.verbs.push(
|
|
239
|
+
emitVerb(verb, syntax?.flagTokens, syntax?.positionalTokens),
|
|
240
|
+
);
|
|
199
241
|
if (verb.capability.mcp.expose) tools.push(toolName(verb.path));
|
|
200
242
|
}
|
|
201
243
|
// Non-tool MCP surfaces (module hooks, NOT verbs): the resource template ids
|
|
@@ -84,11 +84,13 @@ describe("surface conformance (PROTECTED)", () => {
|
|
|
84
84
|
);
|
|
85
85
|
});
|
|
86
86
|
|
|
87
|
-
it("freezes exactly
|
|
88
|
-
expect(golden.mcpSurface.tools).toHaveLength(
|
|
87
|
+
it("freezes exactly 42 designed MCP tools including info, the config family, colophon", () => {
|
|
88
|
+
expect(golden.mcpSurface.tools).toHaveLength(42);
|
|
89
89
|
expect(golden.mcpSurface.tools).toContain("info");
|
|
90
90
|
expect(golden.mcpSurface.tools).toContain("config_show");
|
|
91
|
+
expect(golden.mcpSurface.tools).toContain("config_get");
|
|
91
92
|
expect(golden.mcpSurface.tools).toContain("config_set");
|
|
93
|
+
expect(golden.mcpSurface.tools).toContain("config_unset");
|
|
92
94
|
expect(golden.mcpSurface.tools).toContain("colophon");
|
|
93
95
|
});
|
|
94
96
|
});
|