@canonical/pragma-cli 0.33.0 → 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +153 -30
- package/dist/.build-ok +0 -0
- package/dist/package.json +83 -0
- package/dist/pragma.conf.js +814 -0
- package/dist/pragma.conf.js.map +1 -0
- package/dist/src/bin.js +356 -0
- package/dist/src/bin.js.map +1 -0
- package/dist/src/capabilities/capabilities/capabilities.render.js +70 -0
- package/dist/src/capabilities/capabilities/capabilities.render.js.map +1 -0
- package/dist/src/capabilities/capabilities/capabilities.verb.js +59 -0
- package/dist/src/capabilities/capabilities/capabilities.verb.js.map +1 -0
- package/dist/src/capabilities/capabilities/catalog.js +130 -0
- package/dist/src/capabilities/capabilities/catalog.js.map +1 -0
- package/dist/src/capabilities/capabilities/hints.js +195 -0
- package/dist/src/capabilities/capabilities/hints.js.map +1 -0
- package/dist/src/capabilities/capabilities/index.js +11 -0
- package/dist/src/capabilities/capabilities/index.js.map +1 -0
- package/dist/src/capabilities/capabilities/types.js +11 -0
- package/dist/src/capabilities/capabilities/types.js.map +1 -0
- package/dist/src/capabilities/colophon/collectColophon.js +83 -0
- package/dist/src/capabilities/colophon/collectColophon.js.map +1 -0
- package/dist/src/capabilities/colophon/colophon.render.js +59 -0
- package/dist/src/capabilities/colophon/colophon.render.js.map +1 -0
- package/dist/src/capabilities/colophon/colophon.verb.js +43 -0
- package/dist/src/capabilities/colophon/colophon.verb.js.map +1 -0
- package/dist/src/capabilities/colophon/index.js +5 -0
- package/dist/src/capabilities/colophon/index.js.map +1 -0
- package/dist/src/capabilities/colophon/markdownTerminal.js +90 -0
- package/dist/src/capabilities/colophon/markdownTerminal.js.map +1 -0
- package/dist/src/capabilities/colophon/types.js +10 -0
- package/dist/src/capabilities/colophon/types.js.map +1 -0
- package/dist/src/capabilities/config/collectConfigShow.js +59 -0
- package/dist/src/capabilities/config/collectConfigShow.js.map +1 -0
- package/dist/src/capabilities/config/field.render.js +22 -0
- package/dist/src/capabilities/config/field.render.js.map +1 -0
- package/dist/src/capabilities/config/fields.js +46 -0
- package/dist/src/capabilities/config/fields.js.map +1 -0
- package/dist/src/capabilities/config/get.verb.js +61 -0
- package/dist/src/capabilities/config/get.verb.js.map +1 -0
- package/dist/src/capabilities/config/index.js +5 -0
- package/dist/src/capabilities/config/index.js.map +1 -0
- package/dist/src/capabilities/config/runField.js +59 -0
- package/dist/src/capabilities/config/runField.js.map +1 -0
- package/dist/src/capabilities/config/runGet.js +28 -0
- package/dist/src/capabilities/config/runGet.js.map +1 -0
- package/dist/src/capabilities/config/runSet.js +53 -0
- package/dist/src/capabilities/config/runSet.js.map +1 -0
- package/dist/src/capabilities/config/set.verb.js +66 -0
- package/dist/src/capabilities/config/set.verb.js.map +1 -0
- package/dist/src/capabilities/config/show.render.js +84 -0
- package/dist/src/capabilities/config/show.render.js.map +1 -0
- package/dist/src/capabilities/config/show.verb.js +44 -0
- package/dist/src/capabilities/config/show.verb.js.map +1 -0
- package/dist/src/capabilities/config/types.js +5 -0
- package/dist/src/capabilities/config/types.js.map +1 -0
- package/dist/src/capabilities/config/unset.verb.js +49 -0
- package/dist/src/capabilities/config/unset.verb.js.map +1 -0
- package/dist/src/capabilities/create/cliProjection.js +195 -0
- package/dist/src/capabilities/create/cliProjection.js.map +1 -0
- package/dist/src/capabilities/create/constants.js +47 -0
- package/dist/src/capabilities/create/constants.js.map +1 -0
- package/dist/src/capabilities/create/create.render.js +100 -0
- package/dist/src/capabilities/create/create.render.js.map +1 -0
- package/dist/src/capabilities/create/create.verb.js +438 -0
- package/dist/src/capabilities/create/create.verb.js.map +1 -0
- package/dist/src/capabilities/create/createHelp.js +47 -0
- package/dist/src/capabilities/create/createHelp.js.map +1 -0
- package/dist/src/capabilities/create/createSurface.generated.js +394 -0
- package/dist/src/capabilities/create/createSurface.generated.js.map +1 -0
- package/dist/src/capabilities/create/generatorToVerbSpec.js +106 -0
- package/dist/src/capabilities/create/generatorToVerbSpec.js.map +1 -0
- package/dist/src/capabilities/create/index.js +18 -0
- package/dist/src/capabilities/create/index.js.map +1 -0
- package/dist/src/capabilities/create/messages.js +16 -0
- package/dist/src/capabilities/create/messages.js.map +1 -0
- package/dist/src/capabilities/create/mount.js +293 -0
- package/dist/src/capabilities/create/mount.js.map +1 -0
- package/dist/src/capabilities/create/pathJail.js +65 -0
- package/dist/src/capabilities/create/pathJail.js.map +1 -0
- package/dist/src/capabilities/create/pickGenerator.js +53 -0
- package/dist/src/capabilities/create/pickGenerator.js.map +1 -0
- package/dist/src/capabilities/create/types.js +2 -0
- package/dist/src/capabilities/create/types.js.map +1 -0
- package/dist/src/capabilities/distribution.js +40 -0
- package/dist/src/capabilities/distribution.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkKeStore.js +40 -0
- package/dist/src/capabilities/doctor/checks/checkKeStore.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkNodeVersion.js +21 -0
- package/dist/src/capabilities/doctor/checks/checkNodeVersion.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkPackageRefs.js +92 -0
- package/dist/src/capabilities/doctor/checks/checkPackageRefs.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkPragmaVersion.js +19 -0
- package/dist/src/capabilities/doctor/checks/checkPragmaVersion.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkShellCompletions.js +199 -0
- package/dist/src/capabilities/doctor/checks/checkShellCompletions.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/index.js +27 -0
- package/dist/src/capabilities/doctor/checks/index.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/mcpCommand.js +57 -0
- package/dist/src/capabilities/doctor/checks/mcpCommand.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/targetHealth.js +205 -0
- package/dist/src/capabilities/doctor/checks/targetHealth.js.map +1 -0
- package/dist/src/capabilities/doctor/doctor.render.js +185 -0
- package/dist/src/capabilities/doctor/doctor.render.js.map +1 -0
- package/dist/src/capabilities/doctor/doctor.verb.js +45 -0
- package/dist/src/capabilities/doctor/doctor.verb.js.map +1 -0
- package/dist/src/capabilities/doctor/index.js +5 -0
- package/dist/src/capabilities/doctor/index.js.map +1 -0
- package/dist/src/capabilities/doctor/runChecks.js +83 -0
- package/dist/src/capabilities/doctor/runChecks.js.map +1 -0
- package/dist/src/capabilities/doctor/types.js +5 -0
- package/dist/src/capabilities/doctor/types.js.map +1 -0
- package/dist/src/capabilities/graph/index.js +19 -0
- package/dist/src/capabilities/graph/index.js.map +1 -0
- package/dist/src/capabilities/graph/inspect.render.js +76 -0
- package/dist/src/capabilities/graph/inspect.render.js.map +1 -0
- package/dist/src/capabilities/graph/inspect.verb.js +53 -0
- package/dist/src/capabilities/graph/inspect.verb.js.map +1 -0
- package/dist/src/capabilities/graph/query.render.js +73 -0
- package/dist/src/capabilities/graph/query.render.js.map +1 -0
- package/dist/src/capabilities/graph/query.verb.js +49 -0
- package/dist/src/capabilities/graph/query.verb.js.map +1 -0
- package/dist/src/capabilities/graph/runQuery.js +41 -0
- package/dist/src/capabilities/graph/runQuery.js.map +1 -0
- package/dist/src/capabilities/index.js +56 -0
- package/dist/src/capabilities/index.js.map +1 -0
- package/dist/src/capabilities/info/collectInfo.js +66 -0
- package/dist/src/capabilities/info/collectInfo.js.map +1 -0
- package/dist/src/capabilities/info/index.js +5 -0
- package/dist/src/capabilities/info/index.js.map +1 -0
- package/dist/src/capabilities/info/info.render.js +53 -0
- package/dist/src/capabilities/info/info.render.js.map +1 -0
- package/dist/src/capabilities/info/info.verb.js +42 -0
- package/dist/src/capabilities/info/info.verb.js.map +1 -0
- package/dist/src/capabilities/info/types.js +5 -0
- package/dist/src/capabilities/info/types.js.map +1 -0
- package/dist/src/capabilities/meta/complete.verb.js +43 -0
- package/dist/src/capabilities/meta/complete.verb.js.map +1 -0
- package/dist/src/capabilities/meta/index.js +13 -0
- package/dist/src/capabilities/meta/index.js.map +1 -0
- package/dist/src/capabilities/meta/mcp.verb.js +34 -0
- package/dist/src/capabilities/meta/mcp.verb.js.map +1 -0
- package/dist/src/capabilities/ontology/index.js +21 -0
- package/dist/src/capabilities/ontology/index.js.map +1 -0
- package/dist/src/capabilities/ontology/queries.js +123 -0
- package/dist/src/capabilities/ontology/queries.js.map +1 -0
- package/dist/src/capabilities/ontology/render.js +66 -0
- package/dist/src/capabilities/ontology/render.js.map +1 -0
- package/dist/src/capabilities/ontology/verbs.js +181 -0
- package/dist/src/capabilities/ontology/verbs.js.map +1 -0
- package/dist/src/capabilities/prompt/index.js +16 -0
- package/dist/src/capabilities/prompt/index.js.map +1 -0
- package/dist/src/capabilities/prompt/prompt.render.js +78 -0
- package/dist/src/capabilities/prompt/prompt.render.js.map +1 -0
- package/dist/src/capabilities/prompt/types.js +10 -0
- package/dist/src/capabilities/prompt/types.js.map +1 -0
- package/dist/src/capabilities/prompt/verbs.js +93 -0
- package/dist/src/capabilities/prompt/verbs.js.map +1 -0
- package/dist/src/capabilities/resources/index.js +10 -0
- package/dist/src/capabilities/resources/index.js.map +1 -0
- package/dist/src/capabilities/resources/provider.js +423 -0
- package/dist/src/capabilities/resources/provider.js.map +1 -0
- package/dist/src/capabilities/setup/buildPlan.js +168 -0
- package/dist/src/capabilities/setup/buildPlan.js.map +1 -0
- package/dist/src/capabilities/setup/index.js +5 -0
- package/dist/src/capabilities/setup/index.js.map +1 -0
- package/dist/src/capabilities/setup/mode.js +53 -0
- package/dist/src/capabilities/setup/mode.js.map +1 -0
- package/dist/src/capabilities/setup/operations/index.js +39 -0
- package/dist/src/capabilities/setup/operations/index.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupCompletions.js +160 -0
- package/dist/src/capabilities/setup/operations/setupCompletions.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupConfig.js +101 -0
- package/dist/src/capabilities/setup/operations/setupConfig.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupGenerator.js +343 -0
- package/dist/src/capabilities/setup/operations/setupGenerator.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupLsp.js +277 -0
- package/dist/src/capabilities/setup/operations/setupLsp.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupMcp.js +207 -0
- package/dist/src/capabilities/setup/operations/setupMcp.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupSkills.js +316 -0
- package/dist/src/capabilities/setup/operations/setupSkills.js.map +1 -0
- package/dist/src/capabilities/setup/plan.js +128 -0
- package/dist/src/capabilities/setup/plan.js.map +1 -0
- package/dist/src/capabilities/setup/plan.render.js +193 -0
- package/dist/src/capabilities/setup/plan.render.js.map +1 -0
- package/dist/src/capabilities/setup/setup.render.js +54 -0
- package/dist/src/capabilities/setup/setup.render.js.map +1 -0
- package/dist/src/capabilities/setup/setup.verb.js +334 -0
- package/dist/src/capabilities/setup/setup.verb.js.map +1 -0
- package/dist/src/capabilities/setup/shell.js +196 -0
- package/dist/src/capabilities/setup/shell.js.map +1 -0
- package/dist/src/capabilities/setup/targets.js +263 -0
- package/dist/src/capabilities/setup/targets.js.map +1 -0
- package/dist/src/capabilities/setup/types.js +5 -0
- package/dist/src/capabilities/setup/types.js.map +1 -0
- package/dist/src/capabilities/shared/assertExecOk.js +137 -0
- package/dist/src/capabilities/shared/assertExecOk.js.map +1 -0
- package/dist/src/capabilities/shared/bands.js +16 -0
- package/dist/src/capabilities/shared/bands.js.map +1 -0
- package/dist/src/capabilities/shared/index.js +26 -0
- package/dist/src/capabilities/shared/index.js.map +1 -0
- package/dist/src/capabilities/shared/packageManager.js +103 -0
- package/dist/src/capabilities/shared/packageManager.js.map +1 -0
- package/dist/src/capabilities/shared/registry.js +55 -0
- package/dist/src/capabilities/shared/registry.js.map +1 -0
- package/dist/src/capabilities/skill/discover.js +195 -0
- package/dist/src/capabilities/skill/discover.js.map +1 -0
- package/dist/src/capabilities/skill/index.js +10 -0
- package/dist/src/capabilities/skill/index.js.map +1 -0
- package/dist/src/capabilities/skill/render.js +49 -0
- package/dist/src/capabilities/skill/render.js.map +1 -0
- package/dist/src/capabilities/skill/verbs.js +83 -0
- package/dist/src/capabilities/skill/verbs.js.map +1 -0
- package/dist/src/capabilities/sources/collectStatus.js +103 -0
- package/dist/src/capabilities/sources/collectStatus.js.map +1 -0
- package/dist/src/capabilities/sources/index.js +13 -0
- package/dist/src/capabilities/sources/index.js.map +1 -0
- package/dist/src/capabilities/sources/installSkills.js +167 -0
- package/dist/src/capabilities/sources/installSkills.js.map +1 -0
- package/dist/src/capabilities/sources/runUpdate.js +394 -0
- package/dist/src/capabilities/sources/runUpdate.js.map +1 -0
- package/dist/src/capabilities/sources/status.render.js +64 -0
- package/dist/src/capabilities/sources/status.render.js.map +1 -0
- package/dist/src/capabilities/sources/status.verb.js +40 -0
- package/dist/src/capabilities/sources/status.verb.js.map +1 -0
- package/dist/src/capabilities/sources/types.js +6 -0
- package/dist/src/capabilities/sources/types.js.map +1 -0
- package/dist/src/capabilities/sources/update.render.js +34 -0
- package/dist/src/capabilities/sources/update.render.js.map +1 -0
- package/dist/src/capabilities/sources/update.verb.js +55 -0
- package/dist/src/capabilities/sources/update.verb.js.map +1 -0
- package/dist/src/capabilities/upgrade/index.js +5 -0
- package/dist/src/capabilities/upgrade/index.js.map +1 -0
- package/dist/src/capabilities/upgrade/runUpgrade.js +99 -0
- package/dist/src/capabilities/upgrade/runUpgrade.js.map +1 -0
- package/dist/src/capabilities/upgrade/types.js +5 -0
- package/dist/src/capabilities/upgrade/types.js.map +1 -0
- package/dist/src/capabilities/upgrade/upgrade.render.js +44 -0
- package/dist/src/capabilities/upgrade/upgrade.render.js.map +1 -0
- package/dist/src/capabilities/upgrade/upgrade.verb.js +52 -0
- package/dist/src/capabilities/upgrade/upgrade.verb.js.map +1 -0
- package/dist/src/capabilities/version/index.js +10 -0
- package/dist/src/capabilities/version/index.js.map +1 -0
- package/dist/src/capabilities/version/version.verb.js +36 -0
- package/dist/src/capabilities/version/version.verb.js.map +1 -0
- package/dist/src/constants.js +82 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/index.js +12 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/kernel/completion/complete.js +66 -0
- package/dist/src/kernel/completion/complete.js.map +1 -0
- package/dist/src/kernel/completion/emitScripts.js +92 -0
- package/dist/src/kernel/completion/emitScripts.js.map +1 -0
- package/dist/src/kernel/completion/entitySource.js +285 -0
- package/dist/src/kernel/completion/entitySource.js.map +1 -0
- package/dist/src/kernel/completion/index.js +14 -0
- package/dist/src/kernel/completion/index.js.map +1 -0
- package/dist/src/kernel/completion/model.js +301 -0
- package/dist/src/kernel/completion/model.js.map +1 -0
- package/dist/src/kernel/completion/parse.js +253 -0
- package/dist/src/kernel/completion/parse.js.map +1 -0
- package/dist/src/kernel/completion/rank.js +101 -0
- package/dist/src/kernel/completion/rank.js.map +1 -0
- package/dist/src/kernel/completion/resolve.js +100 -0
- package/dist/src/kernel/completion/resolve.js.map +1 -0
- package/dist/src/kernel/completion/templates/bash.js +209 -0
- package/dist/src/kernel/completion/templates/bash.js.map +1 -0
- package/dist/src/kernel/completion/templates/fish.js +214 -0
- package/dist/src/kernel/completion/templates/fish.js.map +1 -0
- package/dist/src/kernel/completion/templates/index.js +23 -0
- package/dist/src/kernel/completion/templates/index.js.map +1 -0
- package/dist/src/kernel/completion/templates/shared.js +98 -0
- package/dist/src/kernel/completion/templates/shared.js.map +1 -0
- package/dist/src/kernel/completion/templates/zsh.js +201 -0
- package/dist/src/kernel/completion/templates/zsh.js.map +1 -0
- package/dist/src/kernel/completion/types.js +13 -0
- package/dist/src/kernel/completion/types.js.map +1 -0
- package/dist/src/kernel/config/defaults.js +17 -0
- package/dist/src/kernel/config/defaults.js.map +1 -0
- package/dist/src/kernel/config/evaluateProjectConfig.js +126 -0
- package/dist/src/kernel/config/evaluateProjectConfig.js.map +1 -0
- package/dist/src/kernel/config/findProjectConfig.js +43 -0
- package/dist/src/kernel/config/findProjectConfig.js.map +1 -0
- package/dist/src/kernel/config/firstRun.js +34 -0
- package/dist/src/kernel/config/firstRun.js.map +1 -0
- package/dist/src/kernel/config/globalConfig.js +79 -0
- package/dist/src/kernel/config/globalConfig.js.map +1 -0
- package/dist/src/kernel/config/index.js +16 -0
- package/dist/src/kernel/config/index.js.map +1 -0
- package/dist/src/kernel/config/paths.js +35 -0
- package/dist/src/kernel/config/paths.js.map +1 -0
- package/dist/src/kernel/config/readConfig.js +78 -0
- package/dist/src/kernel/config/readConfig.js.map +1 -0
- package/dist/src/kernel/config/schema.js +130 -0
- package/dist/src/kernel/config/schema.js.map +1 -0
- package/dist/src/kernel/config/types.js +19 -0
- package/dist/src/kernel/config/types.js.map +1 -0
- package/dist/src/kernel/config/writeConfigField.js +59 -0
- package/dist/src/kernel/config/writeConfigField.js.map +1 -0
- package/dist/src/kernel/copy.js +43 -0
- package/dist/src/kernel/copy.js.map +1 -0
- package/dist/src/kernel/error/PragmaError.js +149 -0
- package/dist/src/kernel/error/PragmaError.js.map +1 -0
- package/dist/src/kernel/error/constants.js +40 -0
- package/dist/src/kernel/error/constants.js.map +1 -0
- package/dist/src/kernel/error/fromTaskError.js +96 -0
- package/dist/src/kernel/error/fromTaskError.js.map +1 -0
- package/dist/src/kernel/error/index.js +13 -0
- package/dist/src/kernel/error/index.js.map +1 -0
- package/dist/src/kernel/error/recovery.js +52 -0
- package/dist/src/kernel/error/recovery.js.map +1 -0
- package/dist/src/kernel/error/renderError.js +115 -0
- package/dist/src/kernel/error/renderError.js.map +1 -0
- package/dist/src/kernel/error/serialize.js +25 -0
- package/dist/src/kernel/error/serialize.js.map +1 -0
- package/dist/src/kernel/error/types.js +9 -0
- package/dist/src/kernel/error/types.js.map +1 -0
- package/dist/src/kernel/index.js +25 -0
- package/dist/src/kernel/index.js.map +1 -0
- package/dist/src/kernel/packs/collect.js +187 -0
- package/dist/src/kernel/packs/collect.js.map +1 -0
- package/dist/src/kernel/packs/compile.js +304 -0
- package/dist/src/kernel/packs/compile.js.map +1 -0
- package/dist/src/kernel/packs/disclosure.js +76 -0
- package/dist/src/kernel/packs/disclosure.js.map +1 -0
- package/dist/src/kernel/packs/glob.js +38 -0
- package/dist/src/kernel/packs/glob.js.map +1 -0
- package/dist/src/kernel/packs/graphql/buildLookupDocument.js +258 -0
- package/dist/src/kernel/packs/graphql/buildLookupDocument.js.map +1 -0
- package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js +157 -0
- package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js.map +1 -0
- package/dist/src/kernel/packs/graphql/index.js +20 -0
- package/dist/src/kernel/packs/graphql/index.js.map +1 -0
- package/dist/src/kernel/packs/graphql/nameMap.js +63 -0
- package/dist/src/kernel/packs/graphql/nameMap.js.map +1 -0
- package/dist/src/kernel/packs/index.js +34 -0
- package/dist/src/kernel/packs/index.js.map +1 -0
- package/dist/src/kernel/packs/iri.js +110 -0
- package/dist/src/kernel/packs/iri.js.map +1 -0
- package/dist/src/kernel/packs/renderPack.js +129 -0
- package/dist/src/kernel/packs/renderPack.js.map +1 -0
- package/dist/src/kernel/packs/resolveEntity.js +223 -0
- package/dist/src/kernel/packs/resolveEntity.js.map +1 -0
- package/dist/src/kernel/packs/runBodies.js +87 -0
- package/dist/src/kernel/packs/runBodies.js.map +1 -0
- package/dist/src/kernel/packs/sample.js +56 -0
- package/dist/src/kernel/packs/sample.js.map +1 -0
- package/dist/src/kernel/packs/schema.js +369 -0
- package/dist/src/kernel/packs/schema.js.map +1 -0
- package/dist/src/kernel/packs/sparql/applyFilters.js +68 -0
- package/dist/src/kernel/packs/sparql/applyFilters.js.map +1 -0
- package/dist/src/kernel/packs/sparql/applySearch.js +25 -0
- package/dist/src/kernel/packs/sparql/applySearch.js.map +1 -0
- package/dist/src/kernel/packs/sparql/buildLookupQuery.js +217 -0
- package/dist/src/kernel/packs/sparql/buildLookupQuery.js.map +1 -0
- package/dist/src/kernel/packs/sparql/escape.js +21 -0
- package/dist/src/kernel/packs/sparql/escape.js.map +1 -0
- package/dist/src/kernel/packs/sparql/index.js +31 -0
- package/dist/src/kernel/packs/sparql/index.js.map +1 -0
- package/dist/src/kernel/packs/sparql/runSelect.js +101 -0
- package/dist/src/kernel/packs/sparql/runSelect.js.map +1 -0
- package/dist/src/kernel/packs/types.js +30 -0
- package/dist/src/kernel/packs/types.js.map +1 -0
- package/dist/src/kernel/packs/uniqueness.js +30 -0
- package/dist/src/kernel/packs/uniqueness.js.map +1 -0
- package/dist/src/kernel/project/cli/buildProgram.js +263 -0
- package/dist/src/kernel/project/cli/buildProgram.js.map +1 -0
- package/dist/src/kernel/project/cli/constants.js +27 -0
- package/dist/src/kernel/project/cli/constants.js.map +1 -0
- package/dist/src/kernel/project/cli/dispatch.js +420 -0
- package/dist/src/kernel/project/cli/dispatch.js.map +1 -0
- package/dist/src/kernel/project/cli/exitCodes.js +66 -0
- package/dist/src/kernel/project/cli/exitCodes.js.map +1 -0
- package/dist/src/kernel/project/cli/globalFlags.js +216 -0
- package/dist/src/kernel/project/cli/globalFlags.js.map +1 -0
- package/dist/src/kernel/project/cli/helpFormat.js +59 -0
- package/dist/src/kernel/project/cli/helpFormat.js.map +1 -0
- package/dist/src/kernel/project/cli/index.js +14 -0
- package/dist/src/kernel/project/cli/index.js.map +1 -0
- package/dist/src/kernel/project/cli/rootHelp.js +197 -0
- package/dist/src/kernel/project/cli/rootHelp.js.map +1 -0
- package/dist/src/kernel/project/cli/suggest.js +75 -0
- package/dist/src/kernel/project/cli/suggest.js.map +1 -0
- package/dist/src/kernel/project/cli/suggestNames.js +96 -0
- package/dist/src/kernel/project/cli/suggestNames.js.map +1 -0
- package/dist/src/kernel/project/cli/verbHelp.js +131 -0
- package/dist/src/kernel/project/cli/verbHelp.js.map +1 -0
- package/dist/src/kernel/project/mcp/buildServer.js +67 -0
- package/dist/src/kernel/project/mcp/buildServer.js.map +1 -0
- package/dist/src/kernel/project/mcp/envelope.js +37 -0
- package/dist/src/kernel/project/mcp/envelope.js.map +1 -0
- package/dist/src/kernel/project/mcp/index.js +8 -0
- package/dist/src/kernel/project/mcp/index.js.map +1 -0
- package/dist/src/kernel/project/mcp/instructions.js +44 -0
- package/dist/src/kernel/project/mcp/instructions.js.map +1 -0
- package/dist/src/kernel/project/mcp/mcpError.js +42 -0
- package/dist/src/kernel/project/mcp/mcpError.js.map +1 -0
- package/dist/src/kernel/project/mcp/prompts/index.js +36 -0
- package/dist/src/kernel/project/mcp/prompts/index.js.map +1 -0
- package/dist/src/kernel/project/mcp/prompts/provider.js +98 -0
- package/dist/src/kernel/project/mcp/prompts/provider.js.map +1 -0
- package/dist/src/kernel/project/mcp/prompts/source.js +154 -0
- package/dist/src/kernel/project/mcp/prompts/source.js.map +1 -0
- package/dist/src/kernel/project/mcp/registerVerb.js +300 -0
- package/dist/src/kernel/project/mcp/registerVerb.js.map +1 -0
- package/dist/src/kernel/project/mcp/serve.js +35 -0
- package/dist/src/kernel/project/mcp/serve.js.map +1 -0
- package/dist/src/kernel/render/compactUri.js +24 -0
- package/dist/src/kernel/render/compactUri.js.map +1 -0
- package/dist/src/kernel/render/contracts.js +10 -0
- package/dist/src/kernel/render/contracts.js.map +1 -0
- package/dist/src/kernel/render/disclosure.js +34 -0
- package/dist/src/kernel/render/disclosure.js.map +1 -0
- package/dist/src/kernel/render/envelope.js +30 -0
- package/dist/src/kernel/render/envelope.js.map +1 -0
- package/dist/src/kernel/render/formatters.js +27 -0
- package/dist/src/kernel/render/formatters.js.map +1 -0
- package/dist/src/kernel/render/index.js +15 -0
- package/dist/src/kernel/render/index.js.map +1 -0
- package/dist/src/kernel/render/prefixes.js +46 -0
- package/dist/src/kernel/render/prefixes.js.map +1 -0
- package/dist/src/kernel/render/renderers.js +468 -0
- package/dist/src/kernel/render/renderers.js.map +1 -0
- package/dist/src/kernel/render/style.js +85 -0
- package/dist/src/kernel/render/style.js.map +1 -0
- package/dist/src/kernel/render/turtle.js +194 -0
- package/dist/src/kernel/render/turtle.js.map +1 -0
- package/dist/src/kernel/render/writeStdout.js +43 -0
- package/dist/src/kernel/render/writeStdout.js.map +1 -0
- package/dist/src/kernel/runtime/boot.js +49 -0
- package/dist/src/kernel/runtime/boot.js.map +1 -0
- package/dist/src/kernel/runtime/facade.js +39 -0
- package/dist/src/kernel/runtime/facade.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/build.js +122 -0
- package/dist/src/kernel/runtime/graphpack/build.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/buildIndex.js +303 -0
- package/dist/src/kernel/runtime/graphpack/buildIndex.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js +6 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js +4 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.stories.generated.js +4 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.stories.generated.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded.js +82 -0
- package/dist/src/kernel/runtime/graphpack/embedded.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/hash.js +38 -0
- package/dist/src/kernel/runtime/graphpack/hash.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/index.js +11 -0
- package/dist/src/kernel/runtime/graphpack/index.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/manifest.js +145 -0
- package/dist/src/kernel/runtime/graphpack/manifest.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/read.js +92 -0
- package/dist/src/kernel/runtime/graphpack/read.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/schemas.js +70 -0
- package/dist/src/kernel/runtime/graphpack/schemas.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/stories.js +68 -0
- package/dist/src/kernel/runtime/graphpack/stories.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/types.js +55 -0
- package/dist/src/kernel/runtime/graphpack/types.js.map +1 -0
- package/dist/src/kernel/runtime/index.js +8 -0
- package/dist/src/kernel/runtime/index.js.map +1 -0
- package/dist/src/kernel/runtime/loadSession.js +34 -0
- package/dist/src/kernel/runtime/loadSession.js.map +1 -0
- package/dist/src/kernel/runtime/paths.js +78 -0
- package/dist/src/kernel/runtime/paths.js.map +1 -0
- package/dist/src/kernel/runtime/probe.js +37 -0
- package/dist/src/kernel/runtime/probe.js.map +1 -0
- package/dist/src/kernel/runtime/readEntity.js +363 -0
- package/dist/src/kernel/runtime/readEntity.js.map +1 -0
- package/dist/src/kernel/runtime/refs/gitOps.js +65 -0
- package/dist/src/kernel/runtime/refs/gitOps.js.map +1 -0
- package/dist/src/kernel/runtime/refs/index.js +29 -0
- package/dist/src/kernel/runtime/refs/index.js.map +1 -0
- package/dist/src/kernel/runtime/refs/parseRef.js +70 -0
- package/dist/src/kernel/runtime/refs/parseRef.js.map +1 -0
- package/dist/src/kernel/runtime/refs/resolve.js +332 -0
- package/dist/src/kernel/runtime/refs/resolve.js.map +1 -0
- package/dist/src/kernel/runtime/resolveSources.js +62 -0
- package/dist/src/kernel/runtime/resolveSources.js.map +1 -0
- package/dist/src/kernel/runtime/store.js +75 -0
- package/dist/src/kernel/runtime/store.js.map +1 -0
- package/dist/src/kernel/runtime/storeReadiness.js +51 -0
- package/dist/src/kernel/runtime/storeReadiness.js.map +1 -0
- package/dist/src/kernel/runtime/types.js +11 -0
- package/dist/src/kernel/runtime/types.js.map +1 -0
- package/dist/src/kernel/spec/asVerb.js +21 -0
- package/dist/src/kernel/spec/asVerb.js.map +1 -0
- package/dist/src/kernel/spec/emitReference.js +578 -0
- package/dist/src/kernel/spec/emitReference.js.map +1 -0
- package/dist/src/kernel/spec/emitSurface.js +202 -0
- package/dist/src/kernel/spec/emitSurface.js.map +1 -0
- package/dist/src/kernel/spec/index.js +11 -0
- package/dist/src/kernel/spec/index.js.map +1 -0
- package/dist/src/kernel/spec/surfaceConformance.js +103 -0
- package/dist/src/kernel/spec/surfaceConformance.js.map +1 -0
- package/dist/src/kernel/spec/types.js +14 -0
- package/dist/src/kernel/spec/types.js.map +1 -0
- package/dist/src/kernel/spec/validate.js +110 -0
- package/dist/src/kernel/spec/validate.js.map +1 -0
- package/dist/src/kernel/vocabulary.js +97 -0
- package/dist/src/kernel/vocabulary.js.map +1 -0
- package/dist/src/types.js +11 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +25 -24
- package/pragma.conf.ts +853 -0
- package/src/bin.ts +276 -82
- package/src/capabilities/block.parity.test.ts +253 -0
- package/src/capabilities/capabilities/capabilities.render.ts +4 -3
- package/src/capabilities/capabilities/capabilities.verb.ts +32 -14
- package/src/capabilities/capabilities/catalog.ts +20 -12
- package/src/capabilities/capabilities/hints.ts +43 -24
- package/src/capabilities/capabilities/index.ts +1 -1
- package/src/capabilities/colophon/collectColophon.ts +50 -24
- package/src/capabilities/colophon/colophon.render.ts +25 -1
- package/src/capabilities/colophon/colophon.test.ts +42 -21
- package/src/capabilities/colophon/colophon.verb.ts +9 -5
- package/src/capabilities/colophon/types.ts +16 -7
- package/src/capabilities/config/collectConfigShow.test.ts +58 -0
- package/src/capabilities/config/collectConfigShow.ts +43 -6
- package/src/capabilities/config/field.render.ts +4 -5
- package/src/capabilities/config/fields.ts +17 -37
- package/src/capabilities/config/get.verb.ts +70 -0
- package/src/capabilities/config/getUnset.test.ts +264 -0
- package/src/capabilities/config/index.ts +5 -1
- package/src/capabilities/config/runField.ts +40 -22
- package/src/capabilities/config/runGet.ts +34 -0
- package/src/capabilities/config/runSet.ts +35 -9
- package/src/capabilities/config/set.test.ts +48 -14
- package/src/capabilities/config/set.verb.ts +14 -9
- package/src/capabilities/config/show.render.test.ts +77 -5
- package/src/capabilities/config/show.render.ts +8 -13
- package/src/capabilities/config/show.verb.ts +13 -9
- package/src/capabilities/config/types.ts +26 -4
- package/src/capabilities/config/unset.verb.ts +58 -0
- package/src/capabilities/create/byteEquality.subprocess.test.ts +2 -3
- package/src/capabilities/create/byteEquality.test.ts +95 -103
- package/src/capabilities/create/cliProjection.ts +227 -0
- package/src/capabilities/create/constants.ts +50 -0
- package/src/capabilities/create/create.mcp.test.ts +91 -7
- package/src/capabilities/create/create.render.ts +71 -7
- package/src/capabilities/create/create.test.ts +523 -162
- package/src/capabilities/create/create.verb.ts +361 -321
- package/src/capabilities/create/createGrammar.test.ts +865 -0
- package/src/capabilities/create/createHelp.ts +71 -0
- package/src/capabilities/create/createSurface.generated.ts +400 -0
- package/src/capabilities/create/crossCli.subprocess.test.ts +745 -0
- package/src/capabilities/create/cwdJail.test.ts +24 -5
- package/src/capabilities/create/generatorToVerbSpec.test.ts +186 -0
- package/src/capabilities/create/generatorToVerbSpec.ts +13 -11
- package/src/capabilities/create/index.ts +9 -14
- package/src/capabilities/create/messages.ts +18 -0
- package/src/capabilities/create/mount.ts +391 -0
- package/src/capabilities/create/pathJail.test.ts +90 -0
- package/src/capabilities/create/pathJail.ts +8 -5
- package/src/capabilities/create/pickGenerator.ts +40 -46
- package/src/capabilities/create/shippedCreate.subprocess.test.ts +164 -0
- package/src/capabilities/create/types.ts +29 -5
- package/src/capabilities/{standard/parity.test.ts → distribution.parity.test.ts} +24 -14
- package/src/capabilities/distribution.test.ts +122 -0
- package/src/capabilities/distribution.ts +54 -0
- package/src/capabilities/doctor/checks/checkKeStore.ts +9 -7
- package/src/capabilities/doctor/checks/checkPackageRefs.ts +82 -46
- package/src/capabilities/doctor/checks/checkPragmaVersion.ts +5 -4
- package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +125 -30
- package/src/capabilities/doctor/checks/checkShellCompletions.ts +113 -27
- package/src/capabilities/doctor/checks/index.ts +27 -0
- package/src/capabilities/doctor/checks/mcpCommand.test.ts +100 -0
- package/src/capabilities/doctor/checks/mcpCommand.ts +69 -0
- package/src/capabilities/doctor/checks/targetHealth.ts +274 -0
- package/src/capabilities/doctor/doctor.render.test.ts +24 -13
- package/src/capabilities/doctor/doctor.render.ts +45 -20
- package/src/capabilities/doctor/doctor.test.ts +158 -40
- package/src/capabilities/doctor/doctor.verb.ts +9 -5
- package/src/capabilities/doctor/runChecks.ts +65 -66
- package/src/capabilities/doctor/types.ts +21 -5
- package/src/capabilities/emptyRecovery.test.ts +44 -22
- package/src/capabilities/graph/examples.exec.test.ts +107 -0
- package/src/capabilities/graph/index.ts +1 -1
- package/src/capabilities/graph/inspect.render.ts +70 -22
- package/src/capabilities/graph/inspect.test.ts +260 -5
- package/src/capabilities/graph/inspect.verb.ts +18 -5
- package/src/capabilities/graph/query.render.ts +15 -3
- package/src/capabilities/graph/query.verb.ts +5 -4
- package/src/capabilities/graph/runQuery.ts +9 -7
- package/src/capabilities/index.ts +25 -19
- package/src/capabilities/info/collectInfo.ts +15 -10
- package/src/capabilities/info/info.render.ts +4 -3
- package/src/capabilities/info/info.verb.ts +4 -3
- package/src/capabilities/lazy.test.ts +125 -2
- package/src/capabilities/meta/complete.verb.ts +1 -1
- package/src/capabilities/meta/index.ts +1 -1
- package/src/capabilities/meta/mcp.verb.ts +10 -8
- package/src/capabilities/ontology/index.ts +15 -11
- package/src/capabilities/ontology/ontology.test.ts +6 -55
- package/src/capabilities/ontology/queries.ts +2 -2
- package/src/capabilities/ontology/render.ts +3 -4
- package/src/capabilities/ontology/verbs.ts +42 -83
- package/src/capabilities/prompt/index.ts +2 -2
- package/src/capabilities/prompt/prompt.render.ts +6 -2
- package/src/capabilities/prompt/prompt.test.ts +12 -6
- package/src/capabilities/prompt/types.ts +1 -1
- package/src/capabilities/prompt/verbs.ts +26 -14
- package/src/capabilities/reference.test.ts +63 -0
- package/src/capabilities/resources/provider.ts +367 -91
- package/src/capabilities/resources/resources.test.ts +411 -59
- package/src/capabilities/setup/buildPlan.ts +236 -0
- package/src/capabilities/setup/index.ts +7 -7
- package/src/capabilities/setup/mode.ts +74 -0
- package/src/capabilities/setup/operations/index.ts +74 -0
- package/src/capabilities/setup/operations/setupCompletions.ts +97 -24
- package/src/capabilities/setup/operations/setupConfig.ts +124 -0
- package/src/capabilities/setup/operations/setupGenerator.ts +397 -320
- package/src/capabilities/setup/operations/setupLsp.ts +329 -68
- package/src/capabilities/setup/operations/setupMcp.ts +137 -97
- package/src/capabilities/setup/operations/setupSkills.ts +336 -108
- package/src/capabilities/setup/plan.render.ts +241 -0
- package/src/capabilities/setup/plan.ts +236 -0
- package/src/capabilities/setup/setup.mcp.correctness.test.ts +432 -0
- package/src/capabilities/setup/setup.render.test.ts +281 -73
- package/src/capabilities/setup/setup.render.ts +45 -77
- package/src/capabilities/setup/setup.test.ts +972 -209
- package/src/capabilities/setup/setup.verb.ts +233 -74
- package/src/capabilities/setup/shell.test.ts +86 -0
- package/src/capabilities/setup/shell.ts +166 -14
- package/src/capabilities/setup/targets.ts +367 -0
- package/src/capabilities/setup/types.ts +18 -57
- package/src/capabilities/shared/assertExecOk.ts +68 -10
- package/src/capabilities/shared/index.ts +32 -0
- package/src/capabilities/shared/packageManager.test.ts +55 -0
- package/src/capabilities/shared/packageManager.ts +62 -6
- package/src/capabilities/skill/discover.ts +47 -9
- package/src/capabilities/skill/index.ts +1 -1
- package/src/capabilities/skill/render.ts +14 -14
- package/src/capabilities/skill/skill.test.ts +7 -5
- package/src/capabilities/skill/verbs.ts +9 -10
- package/src/capabilities/sources/collectStatus.ts +61 -51
- package/src/capabilities/sources/index.ts +2 -2
- package/src/capabilities/sources/installSkills.ts +86 -9
- package/src/capabilities/sources/runUpdate.ts +164 -141
- package/src/capabilities/sources/sources.test.ts +265 -119
- package/src/capabilities/sources/status.render.test.ts +53 -24
- package/src/capabilities/sources/status.render.ts +25 -30
- package/src/capabilities/sources/status.verb.ts +16 -9
- package/src/capabilities/sources/types.ts +18 -25
- package/src/capabilities/sources/update.render.ts +10 -3
- package/src/capabilities/sources/update.verb.ts +13 -24
- package/src/capabilities/surface.test.ts +165 -25
- package/src/capabilities/tier.parity.test.ts +144 -0
- package/src/capabilities/upgrade/runUpgrade.ts +8 -8
- package/src/capabilities/upgrade/upgrade.render.ts +4 -5
- package/src/capabilities/upgrade/upgrade.test.ts +3 -3
- package/src/capabilities/upgrade/upgrade.verb.ts +8 -4
- package/src/capabilities/version/index.ts +12 -0
- package/src/capabilities/version/version.test.ts +66 -0
- package/src/capabilities/version/version.verb.ts +39 -0
- package/src/constants.test.ts +8 -6
- package/src/constants.ts +78 -22
- package/src/identity.test.ts +348 -0
- package/src/index.ts +2 -2
- package/src/kernel/completion/__snapshots__/emitScripts.test.ts.snap +20 -15
- package/src/kernel/completion/complete.test.ts +12 -2
- package/src/kernel/completion/complete.ts +1 -1
- package/src/kernel/completion/emitScripts.test.ts +1 -1
- package/src/kernel/completion/emitScripts.ts +5 -3
- package/src/kernel/completion/entitySource.test.ts +185 -41
- package/src/kernel/completion/entitySource.ts +133 -110
- package/src/kernel/completion/model.test.ts +165 -13
- package/src/kernel/completion/model.ts +105 -14
- package/src/kernel/completion/parse.test.ts +4 -7
- package/src/kernel/completion/parse.ts +15 -0
- package/src/kernel/completion/resolve.test.ts +0 -1
- package/src/kernel/completion/safety.test.ts +104 -50
- package/src/kernel/completion/shellDrive.test.ts +611 -0
- package/src/kernel/completion/templates/bash.ts +7 -2
- package/src/kernel/completion/templates/fish.ts +28 -6
- package/src/kernel/completion/templates/index.ts +23 -0
- package/src/kernel/completion/types.ts +10 -3
- package/src/kernel/config/defaults.test.ts +108 -0
- package/src/kernel/config/defaults.ts +13 -23
- package/src/kernel/config/evaluateProjectConfig.ts +33 -11
- package/src/kernel/config/findProjectConfig.ts +4 -3
- package/src/kernel/config/firstRun.test.ts +44 -38
- package/src/kernel/config/firstRun.ts +24 -81
- package/src/kernel/config/globalConfig.ts +2 -2
- package/src/kernel/config/index.ts +5 -6
- package/src/kernel/config/paths.ts +17 -17
- package/src/kernel/config/readConfig.test.ts +246 -7
- package/src/kernel/config/readConfig.ts +8 -8
- package/src/kernel/config/schema.test.ts +50 -0
- package/src/kernel/config/schema.ts +100 -11
- package/src/kernel/config/types.ts +75 -19
- package/src/kernel/copy.test.ts +483 -0
- package/src/kernel/copy.ts +54 -0
- package/src/kernel/error/PragmaError.test.ts +6 -3
- package/src/kernel/error/PragmaError.ts +4 -2
- package/src/kernel/error/constants.ts +7 -4
- package/src/kernel/error/fromTaskError.ts +28 -6
- package/src/kernel/error/index.ts +1 -1
- package/src/kernel/error/recovery.test.ts +22 -45
- package/src/kernel/error/recovery.ts +36 -27
- package/src/kernel/error/renderError.ts +42 -1
- package/src/kernel/error/types.ts +25 -4
- package/src/kernel/index.ts +26 -0
- package/src/kernel/packs/collect.test.ts +195 -11
- package/src/kernel/packs/collect.ts +212 -61
- package/src/kernel/packs/compile.test.ts +293 -8
- package/src/kernel/packs/compile.ts +108 -15
- package/src/kernel/packs/disclosure.test.ts +5 -2
- package/src/kernel/packs/disclosure.ts +2 -2
- package/src/kernel/packs/graphql/buildLookupDocument.ts +1 -1
- package/src/kernel/packs/graphql/fetchGraphqlLookup.ts +13 -13
- package/src/kernel/packs/graphql/index.ts +20 -0
- package/src/kernel/packs/graphqlSource.test.ts +6 -3
- package/src/kernel/packs/index.ts +40 -0
- package/src/kernel/packs/iri.test.ts +73 -0
- package/src/kernel/packs/iri.ts +70 -20
- package/src/kernel/packs/renderPack.ts +28 -7
- package/src/kernel/packs/resolveEntity.test.ts +213 -0
- package/src/kernel/packs/resolveEntity.ts +132 -34
- package/src/kernel/packs/runBodies.ts +16 -16
- package/src/kernel/packs/sample.ts +1 -1
- package/src/kernel/packs/schema.ts +114 -11
- package/src/kernel/packs/sparql/applyFilters.ts +16 -17
- package/src/kernel/packs/sparql/buildLookupQuery.ts +75 -3
- package/src/kernel/packs/sparql/index.ts +37 -0
- package/src/kernel/packs/sparql/runSelect.test.ts +104 -10
- package/src/kernel/packs/sparql/runSelect.ts +75 -37
- package/src/kernel/packs/toolDescription.test.ts +52 -5
- package/src/kernel/packs/types.ts +52 -4
- package/src/kernel/packs/uniqueness.ts +5 -5
- package/src/kernel/project/cli/buildProgram.test.ts +157 -17
- package/src/kernel/project/cli/buildProgram.ts +77 -18
- package/src/kernel/project/cli/constants.ts +34 -0
- package/src/kernel/project/cli/dispatch.test.ts +227 -3
- package/src/kernel/project/cli/dispatch.ts +250 -48
- package/src/kernel/project/cli/exitCodes.ts +1 -1
- package/src/kernel/project/cli/globalFlags.test.ts +117 -1
- package/src/kernel/project/cli/globalFlags.ts +130 -30
- package/src/kernel/project/cli/helpFormat.ts +14 -1
- package/src/kernel/project/cli/rootHelp.ts +140 -111
- package/src/kernel/project/cli/suggest.test.ts +33 -1
- package/src/kernel/project/cli/suggest.ts +25 -1
- package/src/kernel/project/cli/verbHelp.test.ts +30 -0
- package/src/kernel/project/cli/verbHelp.ts +23 -7
- package/src/kernel/project/mcp/buildServer.ts +18 -10
- package/src/kernel/project/mcp/envelope.ts +2 -2
- package/src/kernel/project/mcp/instructions.ts +12 -7
- package/src/kernel/project/mcp/mcpError.ts +1 -1
- package/src/kernel/project/mcp/parity.test.ts +42 -1
- package/src/kernel/project/mcp/prompts/index.ts +37 -0
- package/src/kernel/project/mcp/prompts/prompts.test.ts +120 -5
- package/src/kernel/project/mcp/prompts/provider.ts +22 -8
- package/src/kernel/project/mcp/prompts/source.ts +69 -68
- package/src/kernel/project/mcp/registerVerb.ts +56 -11
- package/src/kernel/project/mcp/serve.ts +13 -5
- package/src/kernel/project/mcp/toolDescriptions.test.ts +6 -2
- package/src/kernel/render/__snapshots__/renderers.test.ts.snap +7 -4
- package/src/kernel/render/contracts.ts +21 -0
- package/src/kernel/render/disclosure.ts +4 -2
- package/src/kernel/render/envelope.ts +2 -3
- package/src/kernel/render/formatters.ts +1 -1
- package/src/kernel/render/prefixes.test.ts +36 -0
- package/src/kernel/render/prefixes.ts +40 -13
- package/src/kernel/render/renderers.test.ts +244 -7
- package/src/kernel/render/renderers.ts +222 -20
- package/src/kernel/render/style.test.ts +75 -24
- package/src/kernel/render/style.ts +31 -1
- package/src/kernel/render/turtle.ts +222 -0
- package/src/kernel/runtime/graphpack/build.ts +29 -3
- package/src/kernel/runtime/graphpack/buildIndex.test.ts +46 -0
- package/src/kernel/runtime/graphpack/buildIndex.ts +53 -18
- package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +5 -5
- package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +3 -3
- package/src/kernel/runtime/graphpack/embedded/pack.stories.generated.ts +3 -0
- package/src/kernel/runtime/graphpack/embedded.ts +39 -13
- package/src/kernel/runtime/graphpack/graphpack.test.ts +205 -5
- package/src/kernel/runtime/graphpack/hash.ts +3 -2
- package/src/kernel/runtime/graphpack/index.ts +1 -1
- package/src/kernel/runtime/graphpack/manifest.ts +114 -12
- package/src/kernel/runtime/graphpack/read.ts +5 -11
- package/src/kernel/runtime/graphpack/schemas.ts +74 -0
- package/src/kernel/runtime/graphpack/stories.ts +84 -0
- package/src/kernel/runtime/graphpack/types.ts +61 -48
- package/src/kernel/runtime/loadSession.ts +1 -1
- package/src/kernel/runtime/paths.ts +64 -15
- package/src/kernel/runtime/probe.test.ts +8 -4
- package/src/kernel/runtime/probe.ts +6 -6
- package/src/kernel/runtime/readEntity.ts +477 -32
- package/src/kernel/runtime/refs/gitOps.ts +1 -19
- package/src/kernel/runtime/refs/index.ts +39 -0
- package/src/kernel/runtime/refs/parseRef.ts +8 -8
- package/src/kernel/runtime/refs/resolve.ts +82 -66
- package/src/kernel/runtime/resolveSources.test.ts +63 -24
- package/src/kernel/runtime/resolveSources.ts +36 -25
- package/src/kernel/runtime/storeReadiness.ts +10 -10
- package/src/kernel/runtime/storeless.test.ts +1 -1
- package/src/kernel/runtime/types.ts +15 -1
- package/src/kernel/runtime/wasmEmbed.test.ts +56 -55
- package/src/kernel/spec/emitReference.test.ts +3 -3
- package/src/kernel/spec/emitReference.ts +242 -34
- package/src/kernel/spec/emitSurface.ts +57 -11
- package/src/kernel/spec/surfaceConformance.test.ts +4 -2
- package/src/kernel/spec/surfaceConformance.ts +8 -0
- package/src/kernel/spec/types.ts +277 -13
- package/src/kernel/spec/validate.ts +2 -1
- package/src/kernel/vocabulary.test.ts +164 -0
- package/src/kernel/vocabulary.ts +146 -0
- package/src/testing/PARITY_GAPS.ts +8 -2
- package/src/testing/behavioral/README.md +3 -3
- package/src/testing/behavioral/completion.test.ts +19 -6
- package/src/testing/behavioral/docExamples.test.ts +14 -0
- package/src/testing/behavioral/errorMatrix.mcp.test.ts +6 -5
- package/src/testing/behavioral/errorMatrix.storeless.test.ts +1 -1
- package/src/testing/behavioral/exitCodes.e2e.test.ts +6 -5
- package/src/testing/behavioral/firstRun.e2e.test.ts +24 -24
- package/src/testing/behavioral/harness.foundation.test.ts +14 -5
- package/src/testing/behavioral/journeys.cli.test.ts +117 -76
- package/src/testing/behavioral/journeys.defaultPack.test.ts +88 -182
- package/src/testing/behavioral/journeys.firstInstall.test.ts +167 -0
- package/src/testing/behavioral/journeys.implementation.test.ts +206 -0
- package/src/testing/behavioral/journeys.interactiveTty.e2e.test.ts +2 -2
- package/src/testing/behavioral/journeys.mcpLifecycle.mcp.test.ts +9 -6
- package/src/testing/behavioral/journeys.packageStories.test.ts +188 -0
- package/src/testing/behavioral/liveReadSurface.ts +4 -3
- package/src/testing/behavioral/mcpServe.e2e.test.ts +57 -2
- package/src/testing/behavioral/mcpSurface.test.ts +10 -5
- package/src/testing/behavioral/rootCli.e2e.test.ts +26 -2
- package/src/testing/behavioral/staleCommands.test.ts +10 -0
- package/src/testing/eval/__snapshots__/eval.test.ts.snap +7 -7
- package/src/testing/eval/cases/assembly.ts +13 -6
- package/src/testing/eval/cases/effectful.ts +28 -15
- package/src/testing/eval/cases/readNouns.ts +22 -20
- package/src/testing/eval/cases/stable.ts +5 -1
- package/src/testing/eval/eval.test.ts +7 -1
- package/src/testing/fixtures/blockGraph.ts +79 -0
- package/src/testing/fixtures/fixtureCapability.ts +45 -1
- package/src/testing/fixtures/graph/canonical.ts +94 -5
- package/src/testing/fixtures/graph/defaultPack.ts +7 -6
- package/src/testing/fixtures/graph/owlExport.ts +7 -5
- package/src/testing/helpers/blankCanonicalRanges.ts +36 -0
- package/src/testing/helpers/fixtureGraph.ts +33 -16
- package/src/testing/helpers/packRuntime.ts +2 -3
- package/src/testing/helpers/projectCli.ts +2 -1
- package/src/testing/helpers/projectMcp.ts +38 -6
- package/src/testing/helpers/runCli.ts +35 -18
- package/src/testing/perf/budgets.test.ts +24 -9
- package/src/testing/perf/budgets.ts +76 -12
- package/src/testing/perf/codegen.test.ts +126 -0
- package/src/testing/perf/globalSetup.test.ts +286 -0
- package/src/testing/perf/globalSetup.ts +611 -14
- package/src/testing/perf/measure.test.ts +38 -0
- package/src/testing/perf/measure.ts +23 -4
- package/src/testing/setupXdgIsolation.ts +81 -21
- package/src/testing/tempRoot.globalSetup.ts +122 -0
- package/src/types.ts +2 -2
- package/dist/pragma +0 -0
- package/src/capabilities/block/blockList.test.ts +0 -79
- package/src/capabilities/block/blockList.verb.ts +0 -163
- package/src/capabilities/block/index.ts +0 -25
- package/src/capabilities/block/pack.ts +0 -166
- package/src/capabilities/block/parity.test.ts +0 -187
- package/src/capabilities/block/tierChain.ts +0 -78
- package/src/capabilities/colophon/pragmaColophon.ts +0 -66
- package/src/capabilities/create/compiledCreate.subprocess.test.ts +0 -152
- package/src/capabilities/create/templates.embedded.generated.ts +0 -53
- package/src/capabilities/doctor/checks/checkConfigFile.ts +0 -41
- package/src/capabilities/doctor/checks/checkMcpCommands.ts +0 -114
- package/src/capabilities/doctor/checks/checkMcpConfigured.ts +0 -67
- package/src/capabilities/doctor/checks/checkSkillsSymlinked.ts +0 -60
- package/src/capabilities/doctor/checks/deriveBand.test.ts +0 -42
- package/src/capabilities/doctor/checks/deriveBand.ts +0 -28
- package/src/capabilities/modifier/index.ts +0 -15
- package/src/capabilities/modifier/pack.ts +0 -64
- package/src/capabilities/standard/index.ts +0 -18
- package/src/capabilities/standard/pack.ts +0 -128
- package/src/capabilities/tier/index.ts +0 -19
- package/src/capabilities/tier/lookup.render.test.ts +0 -72
- package/src/capabilities/tier/lookup.render.ts +0 -59
- package/src/capabilities/tier/lookup.test.ts +0 -83
- package/src/capabilities/tier/lookup.verb.ts +0 -44
- package/src/capabilities/tier/pack.ts +0 -28
- package/src/capabilities/tier/runLookup.ts +0 -87
- package/src/capabilities/token/addConfig.render.ts +0 -27
- package/src/capabilities/token/addConfig.test.ts +0 -62
- package/src/capabilities/token/addConfig.verb.ts +0 -40
- package/src/capabilities/token/index.ts +0 -19
- package/src/capabilities/token/pack.ts +0 -58
- package/src/capabilities/token/runAddConfig.ts +0 -95
- package/src/kernel/completion/bashDrive.test.ts +0 -73
- package/src/kernel/config/__snapshots__/firstRun.test.ts.snap +0 -11
- package/src/kernel/runtime/graphpack/embedded/sample.ttl +0 -39
- package/src/kernel/runtime/lock.ts +0 -90
|
@@ -1,57 +1,47 @@
|
|
|
1
1
|
import { spawnSync } from "node:child_process";
|
|
2
|
-
import {
|
|
3
|
-
existsSync,
|
|
4
|
-
mkdirSync,
|
|
5
|
-
mkdtempSync,
|
|
6
|
-
rmSync,
|
|
7
|
-
writeFileSync,
|
|
8
|
-
} from "node:fs";
|
|
2
|
+
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
9
3
|
import { tmpdir } from "node:os";
|
|
10
4
|
import { join } from "node:path";
|
|
11
5
|
import { fileURLToPath } from "node:url";
|
|
12
6
|
import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
|
7
|
+
import { embeddedManifest } from "./graphpack/embedded.js";
|
|
13
8
|
|
|
14
9
|
/**
|
|
15
|
-
* The store-boot path
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
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.
|
|
21
25
|
*/
|
|
22
|
-
const packageRoot = fileURLToPath(new URL("../../../", import.meta.url));
|
|
23
|
-
|
|
24
26
|
let workdir: string;
|
|
25
|
-
|
|
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
|
+
);
|
|
26
32
|
|
|
27
33
|
beforeAll(() => {
|
|
28
34
|
workdir = mkdtempSync(join(tmpdir(), "pragma-wasm-smoke-"));
|
|
29
|
-
|
|
30
|
-
const build = spawnSync(
|
|
31
|
-
"bun",
|
|
32
|
-
[
|
|
33
|
-
"build",
|
|
34
|
-
"--compile",
|
|
35
|
-
"--target=bun-linux-x64",
|
|
36
|
-
"src/bin.ts",
|
|
37
|
-
"--outfile",
|
|
38
|
-
binary,
|
|
39
|
-
],
|
|
40
|
-
{ cwd: packageRoot, stdio: "pipe", encoding: "utf-8" },
|
|
41
|
-
);
|
|
42
|
-
if (build.status !== 0) {
|
|
43
|
-
throw new Error(`smoke build failed:\n${build.stderr}`);
|
|
44
|
-
}
|
|
45
|
-
}, 120_000);
|
|
35
|
+
});
|
|
46
36
|
|
|
47
37
|
afterAll(() => {
|
|
48
38
|
rmSync(workdir, { recursive: true, force: true });
|
|
49
39
|
});
|
|
50
40
|
|
|
51
|
-
/** Run the
|
|
52
|
-
*
|
|
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. */
|
|
53
43
|
const runBinary = (args: string[]) =>
|
|
54
|
-
spawnSync(
|
|
44
|
+
spawnSync(process.execPath, [shippedEntry, ...args], {
|
|
55
45
|
cwd: workdir,
|
|
56
46
|
stdio: "pipe",
|
|
57
47
|
encoding: "utf-8",
|
|
@@ -64,8 +54,8 @@ const runBinary = (args: string[]) =>
|
|
|
64
54
|
},
|
|
65
55
|
});
|
|
66
56
|
|
|
67
|
-
describe("oxigraph WASM + embedded pack
|
|
68
|
-
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)", () => {
|
|
69
59
|
const run = runBinary(["__store-probe"]);
|
|
70
60
|
expect(run.status, run.stderr).toBe(0);
|
|
71
61
|
const out = JSON.parse(run.stdout.trim()) as {
|
|
@@ -74,27 +64,32 @@ describe("oxigraph WASM + embedded pack embed in the compiled binary (PROTECTED)
|
|
|
74
64
|
triples: string;
|
|
75
65
|
};
|
|
76
66
|
expect(out.ok).toBe(true);
|
|
77
|
-
|
|
78
|
-
|
|
67
|
+
// Worth asserting only across the process boundary: the store booted from
|
|
68
|
+
// the inlined `data.nq` must hold exactly what the committed
|
|
69
|
+
// `manifest.json` claims was built into it.
|
|
70
|
+
expect(Number(out.triples)).toBe(embeddedManifest().tripleCount);
|
|
71
|
+
expect(out.entities).toBeGreaterThan(0);
|
|
79
72
|
});
|
|
80
73
|
|
|
81
|
-
it("
|
|
74
|
+
it("the shipped entry runs storeless sources status", () => {
|
|
82
75
|
const run = runBinary(["sources", "status", "--format", "json"]);
|
|
83
76
|
expect(run.status, run.stderr).toBe(0);
|
|
84
77
|
const envelope = JSON.parse(run.stdout.trim()) as {
|
|
85
78
|
ok: boolean;
|
|
86
|
-
data: {
|
|
79
|
+
data: { store: string };
|
|
87
80
|
};
|
|
88
81
|
expect(envelope.ok).toBe(true);
|
|
89
|
-
// A fresh install:
|
|
90
|
-
expect(envelope.data.
|
|
91
|
-
expect(envelope.data.cached).toBe(false);
|
|
82
|
+
// A fresh install: nothing built here, so the embedded pack answers reads.
|
|
83
|
+
expect(envelope.data.store).toBe("embedded");
|
|
92
84
|
});
|
|
93
85
|
|
|
94
|
-
// Regression guard: `sources update` walks a package's TTL directories
|
|
95
|
-
//
|
|
96
|
-
//
|
|
97
|
-
|
|
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)", () => {
|
|
98
93
|
const pkg = join(workdir, "pkg");
|
|
99
94
|
const proj = join(workdir, "proj");
|
|
100
95
|
mkdirSync(join(pkg, "definitions"), { recursive: true });
|
|
@@ -110,7 +105,7 @@ ex:one a ex:Widget ; rdfs:label "One" .
|
|
|
110
105
|
);
|
|
111
106
|
writeFileSync(
|
|
112
107
|
join(proj, "pragma.config.ts"),
|
|
113
|
-
`export default {
|
|
108
|
+
`export default { packs: [{ name: "pkg-a", source: "file://${pkg}" }] };\n`,
|
|
114
109
|
);
|
|
115
110
|
|
|
116
111
|
const env = {
|
|
@@ -120,7 +115,7 @@ ex:one a ex:Widget ; rdfs:label "One" .
|
|
|
120
115
|
XDG_CONFIG_HOME: join(workdir, "config"),
|
|
121
116
|
};
|
|
122
117
|
const inProj = (args: string[]) =>
|
|
123
|
-
spawnSync(
|
|
118
|
+
spawnSync(process.execPath, [shippedEntry, ...args], {
|
|
124
119
|
cwd: proj,
|
|
125
120
|
stdio: "pipe",
|
|
126
121
|
encoding: "utf-8",
|
|
@@ -129,14 +124,20 @@ ex:one a ex:Widget ; rdfs:label "One" .
|
|
|
129
124
|
|
|
130
125
|
const update = inProj(["sources", "update", "--yes", "--format", "json"]);
|
|
131
126
|
expect(update.status, update.stderr).toBe(0);
|
|
132
|
-
|
|
127
|
+
const built = (
|
|
128
|
+
JSON.parse(update.stdout.trim()) as {
|
|
129
|
+
data: { contentHash: string };
|
|
130
|
+
}
|
|
131
|
+
).data.contentHash;
|
|
132
|
+
expect(built).toMatch(/^[0-9a-f]{64}$/);
|
|
133
133
|
|
|
134
134
|
const status = inProj(["sources", "status", "--format", "json"]);
|
|
135
135
|
const envelope = JSON.parse(status.stdout.trim()) as {
|
|
136
|
-
data: {
|
|
136
|
+
data: { store: string; contentHash: string; entityCount: number };
|
|
137
137
|
};
|
|
138
|
-
|
|
139
|
-
expect(envelope.data.
|
|
138
|
+
// The project now reads its OWN pack — the one the update just built.
|
|
139
|
+
expect(envelope.data.store).toBe("built");
|
|
140
|
+
expect(envelope.data.contentHash).toBe(built);
|
|
140
141
|
// Distinct abox subjects: the one individual (ex:one). The ex:Widget class
|
|
141
142
|
// is tbox schema, not an entity — the raw entity count would double this (A1).
|
|
142
143
|
expect(envelope.data.entityCount).toBe(1);
|
|
@@ -6,8 +6,8 @@ import {
|
|
|
6
6
|
import { ERROR_CODES } from "../error/constants.js";
|
|
7
7
|
import { emitReference } from "./emitReference.js";
|
|
8
8
|
|
|
9
|
-
/** The
|
|
10
|
-
const PAGES = ["index.md", "commands.md", "tools.md", "errors.md"];
|
|
9
|
+
/** The five pages every reference doc set carries. */
|
|
10
|
+
const PAGES = ["index.md", "commands.md", "tools.md", "errors.md", "config.md"];
|
|
11
11
|
|
|
12
12
|
describe("emitReference", () => {
|
|
13
13
|
const docs = emitReference([fixtureReferenceModule]);
|
|
@@ -16,7 +16,7 @@ describe("emitReference", () => {
|
|
|
16
16
|
const tools = docs.get("tools.md") ?? "";
|
|
17
17
|
const errors = docs.get("errors.md") ?? "";
|
|
18
18
|
|
|
19
|
-
it("emits exactly the
|
|
19
|
+
it("emits exactly the five reference pages", () => {
|
|
20
20
|
expect([...docs.keys()].sort()).toEqual([...PAGES].sort());
|
|
21
21
|
});
|
|
22
22
|
|
|
@@ -15,7 +15,9 @@
|
|
|
15
15
|
* NOT imported — this is a kernel-layer emitter).
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import {
|
|
18
|
+
import { BIN_NAME, PROJECT_CONFIG_FILENAME } from "../../constants.js";
|
|
19
|
+
import type { RawConfig } from "../config/types.js";
|
|
20
|
+
import { ERROR_CODES } from "../error/index.js";
|
|
19
21
|
import {
|
|
20
22
|
FIXED_SURFACE,
|
|
21
23
|
kebabCase,
|
|
@@ -26,6 +28,7 @@ import type {
|
|
|
26
28
|
CapabilityModule,
|
|
27
29
|
Example,
|
|
28
30
|
ParamSpec,
|
|
31
|
+
ReferenceCliSyntax,
|
|
29
32
|
VerbSpec,
|
|
30
33
|
} from "./types.js";
|
|
31
34
|
|
|
@@ -47,9 +50,9 @@ const ERROR_CODE_DESCRIPTIONS: Record<(typeof ERROR_CODES)[number], string> = {
|
|
|
47
50
|
AMBIGUOUS_INPUT:
|
|
48
51
|
"A name resolved to several entities (reserved; not yet raised).",
|
|
49
52
|
UNKNOWN_VERB: "The command noun or verb is not recognized.",
|
|
50
|
-
STORE_UNAVAILABLE: "The local store
|
|
51
|
-
CONFIG_ERROR: "The layered configuration
|
|
52
|
-
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.",
|
|
53
56
|
UNSUPPORTED: "A capability is unavailable in this build or environment.",
|
|
54
57
|
};
|
|
55
58
|
|
|
@@ -86,12 +89,12 @@ function compareDocVerbs(a: VerbSpec, b: VerbSpec): number {
|
|
|
86
89
|
return labelA < labelB ? -1 : 1;
|
|
87
90
|
}
|
|
88
91
|
|
|
89
|
-
/** The full CLI invocation head for a verb (
|
|
92
|
+
/** The full CLI invocation head for a verb (`<bin> <noun>` or `<bin> <noun> <verb>`). */
|
|
90
93
|
function formatInvocation(verb: VerbSpec): string {
|
|
91
94
|
const sub = verb.path[1];
|
|
92
95
|
return sub === undefined
|
|
93
|
-
?
|
|
94
|
-
:
|
|
96
|
+
? `${BIN_NAME} ${verb.path[0]}`
|
|
97
|
+
: `${BIN_NAME} ${verb.path[0]} ${sub}`;
|
|
95
98
|
}
|
|
96
99
|
|
|
97
100
|
/** Format a positional param as its usage token (`<name>`/`[name]`, `...` when variadic). */
|
|
@@ -163,22 +166,39 @@ function formatUsage(verb: VerbSpec): string {
|
|
|
163
166
|
return segments.join(" ");
|
|
164
167
|
}
|
|
165
168
|
|
|
166
|
-
/**
|
|
167
|
-
|
|
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 {
|
|
168
180
|
const positionals = params.filter((p) => p.positional);
|
|
169
181
|
if (positionals.length === 0) return "";
|
|
170
182
|
const rows = ["| Argument | Required | Description |", "| --- | --- | --- |"];
|
|
171
183
|
for (const param of positionals) {
|
|
172
184
|
const required = param.required ? "yes" : "no";
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
);
|
|
185
|
+
const token =
|
|
186
|
+
positionalTokens?.[param.name] ?? formatPositionalToken(param);
|
|
187
|
+
rows.push(`| \`${token}\` | ${required} | ${describeParam(param)} |`);
|
|
176
188
|
}
|
|
177
189
|
return `**Arguments**\n\n${rows.join("\n")}`;
|
|
178
190
|
}
|
|
179
191
|
|
|
180
|
-
/**
|
|
181
|
-
|
|
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 {
|
|
182
202
|
const flags = params.filter((p) => !p.positional);
|
|
183
203
|
if (flags.length === 0) return "";
|
|
184
204
|
const rows = ["| Flag | Value | Description |", "| --- | --- | --- |"];
|
|
@@ -187,9 +207,8 @@ function formatFlagsTable(params: readonly ParamSpec[]): string {
|
|
|
187
207
|
// does not split the table column.
|
|
188
208
|
const value = formatFlagValue(param);
|
|
189
209
|
const valueCell = value === "" ? "—" : `\`${escapeCell(value)}\``;
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
);
|
|
210
|
+
const token = flagTokens?.[param.name] ?? `--${kebabCase(param.name)}`;
|
|
211
|
+
rows.push(`| \`${token}\` | ${valueCell} | ${describeParam(param)} |`);
|
|
193
212
|
}
|
|
194
213
|
return `**Flags**\n\n${rows.join("\n")}`;
|
|
195
214
|
}
|
|
@@ -211,7 +230,7 @@ function formatExamples(examples: readonly Example[] | undefined): string {
|
|
|
211
230
|
function formatVerbAttributes(verb: VerbSpec): string {
|
|
212
231
|
const bullets = [
|
|
213
232
|
verb.capability.needsStore
|
|
214
|
-
?
|
|
233
|
+
? `- Store: reads the local store (\`${BIN_NAME} sources update\` builds it).`
|
|
215
234
|
: "- Store: storeless.",
|
|
216
235
|
];
|
|
217
236
|
if (verb.capability.mutates) {
|
|
@@ -233,26 +252,39 @@ function assemblePage(blocks: readonly string[]): string {
|
|
|
233
252
|
}
|
|
234
253
|
|
|
235
254
|
/** Render one verb's `commands.md` section (heading through examples). */
|
|
236
|
-
function renderCommandSection(
|
|
255
|
+
function renderCommandSection(
|
|
256
|
+
verb: VerbSpec,
|
|
257
|
+
syntax?: ReferenceCliSyntax,
|
|
258
|
+
): string {
|
|
237
259
|
const blocks = [
|
|
238
260
|
`### ${formatInvocation(verb)}`,
|
|
239
261
|
verb.summary,
|
|
240
262
|
verb.doc ?? "",
|
|
241
|
-
`\`\`\`\n${formatUsage(verb)}\n\`\`\``,
|
|
242
|
-
formatArgsTable(verb.params),
|
|
243
|
-
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),
|
|
244
266
|
formatVerbAttributes(verb),
|
|
245
267
|
formatExamples(verb.examples),
|
|
246
268
|
];
|
|
247
269
|
return blocks.filter((block) => block.length > 0).join("\n\n");
|
|
248
270
|
}
|
|
249
271
|
|
|
250
|
-
/**
|
|
251
|
-
|
|
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 {
|
|
252
284
|
const blocks = [
|
|
253
285
|
"# CLI command reference",
|
|
254
|
-
|
|
255
|
-
"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>`.",
|
|
286
|
+
`Every \`${BIN_NAME}\` command, grouped by noun. Generated from the live capability grammar — do not edit by hand.`,
|
|
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>`.",
|
|
256
288
|
];
|
|
257
289
|
let currentNoun = "";
|
|
258
290
|
for (const verb of verbs) {
|
|
@@ -260,12 +292,45 @@ function renderCommandsPage(verbs: readonly VerbSpec[]): string {
|
|
|
260
292
|
if (noun !== currentNoun) {
|
|
261
293
|
currentNoun = noun;
|
|
262
294
|
blocks.push(`## ${noun}`);
|
|
295
|
+
const intro = nounIntros.get(noun);
|
|
296
|
+
if (intro) blocks.push(intro);
|
|
263
297
|
}
|
|
264
|
-
blocks.push(renderCommandSection(verb));
|
|
298
|
+
blocks.push(renderCommandSection(verb, verbSyntax.get(verb)));
|
|
265
299
|
}
|
|
266
300
|
return assemblePage(blocks);
|
|
267
301
|
}
|
|
268
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
|
+
|
|
269
334
|
/** One MCP tool input row: name, projected type, requiredness, description. */
|
|
270
335
|
interface ToolParamRow {
|
|
271
336
|
readonly name: string;
|
|
@@ -377,12 +442,12 @@ function renderNonToolSurface(modules: readonly CapabilityModule[]): string {
|
|
|
377
442
|
const bullets: string[] = [];
|
|
378
443
|
if (resources.length > 0) {
|
|
379
444
|
bullets.push(
|
|
380
|
-
`- **Resources**: ${resources.map((r) => `\`${r}\``).join(", ")} — entity reads addressed by URI (listing and autocomplete are storeless over the pack index).`,
|
|
445
|
+
`- **Resources**: ${resources.map((r) => `\`${r}\``).join(", ")} — entity reads addressed by URI (listing and autocomplete are storeless over the pack index). The template — its scheme and the \`_meta\` taxonomy keys its entries carry — is frozen protocol identity, served unchanged by every distribution: clients persist resource URIs, so the scheme never follows a fork's name.`,
|
|
381
446
|
);
|
|
382
447
|
}
|
|
383
448
|
if (prompts) {
|
|
384
449
|
bullets.push(
|
|
385
|
-
"- **Prompts**: the
|
|
450
|
+
"- **Prompts**: the workflow prompt templates the active graph declares are offered natively over `prompts/list` and `prompts/get`, and as the `prompt_list` / `prompt_lookup` content tools. A graph declaring none leaves both views empty.",
|
|
386
451
|
);
|
|
387
452
|
}
|
|
388
453
|
bullets.push(
|
|
@@ -399,7 +464,7 @@ function renderToolsPage(
|
|
|
399
464
|
const tools = verbs.filter((verb) => verb.capability.mcp.expose);
|
|
400
465
|
const blocks = [
|
|
401
466
|
"# MCP tool reference",
|
|
402
|
-
|
|
467
|
+
`Every tool the ${BIN_NAME} MCP server exposes, plus its non-tool surface. Generated from the live capability grammar — do not edit by hand. The server's \`serverInfo\` is a projection, not a constant: it introduces itself on the wire under the distribution's declared name at the package version, so a client should read \`serverInfo\` rather than assume a name.`,
|
|
403
468
|
"Mutating tools are plan-first: called without `confirm: true` they return the plan they WOULD apply; called with `confirm: true` they execute. A mutating tool also accepts an optional absolute `cwd`.",
|
|
404
469
|
];
|
|
405
470
|
for (const verb of tools) {
|
|
@@ -442,6 +507,140 @@ function renderErrorsPage(): string {
|
|
|
442
507
|
]);
|
|
443
508
|
}
|
|
444
509
|
|
|
510
|
+
/** One documented config field: the type label a user sees, and the prose. */
|
|
511
|
+
interface ConfigFieldDoc {
|
|
512
|
+
/** The type as a reader needs it, e.g. `string (optional)`. */
|
|
513
|
+
readonly type: string;
|
|
514
|
+
/** What the field does, and anything true about it a reader would not guess. */
|
|
515
|
+
readonly notes: string;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
/**
|
|
519
|
+
* Every field a config layer may declare. Typed as an exhaustive `Record` over
|
|
520
|
+
* `keyof RawConfig`, so a field added to the type without a row here — or a row
|
|
521
|
+
* left behind by a field that was removed — is a COMPILE error, exactly as
|
|
522
|
+
* {@link ERROR_CODE_DESCRIPTIONS} works for the error kernel. Colocated
|
|
523
|
+
* (single-use) rather than in a module of its own: only `renderConfigPage`
|
|
524
|
+
* reads it, and a third artifact for two consumers to keep in step is what this
|
|
525
|
+
* discipline exists to avoid.
|
|
526
|
+
*
|
|
527
|
+
* The `type` column is authored prose; the page says so. Its OPTIONALITY is
|
|
528
|
+
* checked against the zod validator by `kernel/config/schema.test.ts`.
|
|
529
|
+
*/
|
|
530
|
+
const CONFIG_FIELD_DOCS: Record<keyof RawConfig, ConfigFieldDoc> = {
|
|
531
|
+
name: {
|
|
532
|
+
type: "string (optional)",
|
|
533
|
+
notes:
|
|
534
|
+
"Distribution-only — see below. The program's own name, read from the distribution config at module load.",
|
|
535
|
+
},
|
|
536
|
+
help: {
|
|
537
|
+
type: "string (optional)",
|
|
538
|
+
notes:
|
|
539
|
+
"Distribution-only — see below. The one-line blurb on the front door and in the MCP handshake.",
|
|
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
|
+
},
|
|
546
|
+
colophon: {
|
|
547
|
+
type: "object (optional)",
|
|
548
|
+
notes:
|
|
549
|
+
"Distribution-only — see below. The toolchain's own story, rendered first by the `colophon` verb and titled with the distribution's name: `{ markdown, summary? }`, both Markdown bodies with no leading H1 (`summary` is the condensed `--format llm` form). Declared content, not code — a fork edits it to tell its own story.",
|
|
550
|
+
},
|
|
551
|
+
issuesUrl: {
|
|
552
|
+
type: "URL string (optional)",
|
|
553
|
+
notes:
|
|
554
|
+
"Distribution-only — see below. Where the first-run note asks users to report problems.",
|
|
555
|
+
},
|
|
556
|
+
tier: {
|
|
557
|
+
type: "string (optional)",
|
|
558
|
+
notes:
|
|
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.",
|
|
560
|
+
},
|
|
561
|
+
channel: {
|
|
562
|
+
type: "`normal` | `experimental` | `prerelease` (optional)",
|
|
563
|
+
notes:
|
|
564
|
+
"Selects the npm dist-tag `upgrade` and `info` check the registry with. It no longer scopes graph reads — no read filters by channel. Defaults to `normal`. Set it with `config set channel <name>`.",
|
|
565
|
+
},
|
|
566
|
+
detail: {
|
|
567
|
+
type: "`summary` | `standard` | `detailed` (optional)",
|
|
568
|
+
notes:
|
|
569
|
+
"Default progressive-disclosure level. A closed enum, like `channel`: any other value fails at load with a `CONFIG_ERROR` naming the file and the three levels. Set it with `config set detail <level>`.",
|
|
570
|
+
},
|
|
571
|
+
packs: {
|
|
572
|
+
type: "array (optional)",
|
|
573
|
+
notes:
|
|
574
|
+
"Semantic pack sources built by `sources update`. Each entry is a bare npm name or `{ name, source, stories? }`; `stories` are read stories the pack supplies, in the pack grammar.",
|
|
575
|
+
},
|
|
576
|
+
stories: {
|
|
577
|
+
type: "array (optional)",
|
|
578
|
+
notes:
|
|
579
|
+
"Read stories not attached to any pack, in the pack grammar. Compiled at dispatch, and they win over the same noun declared under `packs[].stories`.",
|
|
580
|
+
},
|
|
581
|
+
prefixes: {
|
|
582
|
+
type: "record (optional)",
|
|
583
|
+
notes:
|
|
584
|
+
"Namespace prefixes the pack is built with — they win every harvest, so this decides which IRI a prefix binds in the store and the index. Every surface uses the compiled-in display/expansion map to compact and expand prefixed names; only the DISTRIBUTION layer seeds it, because it is also read on the storeless fast path, before any config layer exists.",
|
|
585
|
+
},
|
|
586
|
+
completion: {
|
|
587
|
+
type: "object (optional)",
|
|
588
|
+
notes:
|
|
589
|
+
"Completion policy read when `setup completions` emits a script: `minChars` and a per-noun `families` opt-out. It is the one field `config show` carries with NO origin at all.",
|
|
590
|
+
},
|
|
591
|
+
};
|
|
592
|
+
|
|
593
|
+
/**
|
|
594
|
+
* The fields `config show` prints with the layer that supplied them, in the
|
|
595
|
+
* order it prints them. NOT every field: `prefixes` and `completion` reach only
|
|
596
|
+
* the JSON payload, `stories` reaches only its `origins` key, and the four
|
|
597
|
+
* distribution-only fields reach neither. The page said the opposite — that
|
|
598
|
+
* every field but `completion` was reported — which is the claim this whole
|
|
599
|
+
* reference exists to make true rather than plausible.
|
|
600
|
+
*
|
|
601
|
+
* A literal, because the kernel emitter may not import a capability renderer.
|
|
602
|
+
* `capabilities/config/show.render.test.ts` derives the same list from the real
|
|
603
|
+
* formatter and fails if this page and that renderer disagree.
|
|
604
|
+
*/
|
|
605
|
+
const REPORTED_FIELDS = ["tier", "channel", "detail", "packs"];
|
|
606
|
+
|
|
607
|
+
/** Render the layered-configuration reference: the layers, then the fields. */
|
|
608
|
+
function renderConfigPage(): string {
|
|
609
|
+
const rows = ["| Field | Type | Notes |", "| --- | --- | --- |"];
|
|
610
|
+
for (const [field, doc] of Object.entries(CONFIG_FIELD_DOCS)) {
|
|
611
|
+
rows.push(
|
|
612
|
+
`| \`${field}\` | ${escapeCell(doc.type)} | ${escapeCell(doc.notes)} |`,
|
|
613
|
+
);
|
|
614
|
+
}
|
|
615
|
+
return assemblePage([
|
|
616
|
+
"# Configuration reference",
|
|
617
|
+
`Every field a \`${BIN_NAME}\` config layer may declare. Generated from the config type — do not edit by hand. See [config-model.md](../config-model.md) for the authoring guide.`,
|
|
618
|
+
"## Layers",
|
|
619
|
+
"From lowest to highest precedence:",
|
|
620
|
+
[
|
|
621
|
+
`1. **Built-in defaults** — the distribution config shipped with the package.`,
|
|
622
|
+
`2. **Global config** — \`$XDG_CONFIG_HOME/${BIN_NAME}/config.json\`, written by \`${BIN_NAME} config set\`.`,
|
|
623
|
+
`3. **Project config** — the nearest \`${PROJECT_CONFIG_FILENAME}\` (or \`${BIN_NAME}.config.js\`, the JavaScript fallback), walking up from the working directory.`,
|
|
624
|
+
].join("\n"),
|
|
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.",
|
|
626
|
+
"## Fields",
|
|
627
|
+
"The `Type` column is prose; the field set and each field's optionality are checked against the validator.",
|
|
628
|
+
rows.join("\n"),
|
|
629
|
+
"## Distribution-only fields",
|
|
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.`,
|
|
631
|
+
"## What `config show` reports",
|
|
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.`,
|
|
633
|
+
"## Renamed: `packages` → `packs`",
|
|
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.",
|
|
635
|
+
"## Removed: `generators`",
|
|
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.",
|
|
637
|
+
"## Removed: `completion.caseSensitive`",
|
|
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.",
|
|
639
|
+
"## Reading and writing",
|
|
640
|
+
`\`${BIN_NAME} config show\` prints the resolved config and each field's layer. \`${BIN_NAME} config set <key> <value>\` writes to the **global** layer only — project configs are authored by hand. Both are documented in the [command reference](./commands.md).`,
|
|
641
|
+
]);
|
|
642
|
+
}
|
|
643
|
+
|
|
445
644
|
/** Render the reference index: overview, derived counts, and links. */
|
|
446
645
|
function renderIndexPage(
|
|
447
646
|
verbs: readonly VerbSpec[],
|
|
@@ -450,8 +649,8 @@ function renderIndexPage(
|
|
|
450
649
|
const nouns = new Set(verbs.map((verb) => verb.path[0]));
|
|
451
650
|
const toolCount = verbs.filter((verb) => verb.capability.mcp.expose).length;
|
|
452
651
|
return assemblePage([
|
|
453
|
-
|
|
454
|
-
|
|
652
|
+
`# ${BIN_NAME} reference`,
|
|
653
|
+
`Machine-generated reference for the \`${BIN_NAME}\` CLI and MCP server, projected from the live capability grammar. Every page here is regenerated by the build and pinned by a drift-guard test, so it can never fall out of step with the code.`,
|
|
455
654
|
"## At a glance",
|
|
456
655
|
[
|
|
457
656
|
`- **${nouns.size}** command nouns`,
|
|
@@ -461,9 +660,10 @@ function renderIndexPage(
|
|
|
461
660
|
].join("\n"),
|
|
462
661
|
"## Pages",
|
|
463
662
|
[
|
|
464
|
-
|
|
663
|
+
`- [CLI command reference](./commands.md) — every \`${BIN_NAME} <noun> <verb>\`, its arguments, flags, and examples.`,
|
|
465
664
|
"- [MCP tool reference](./tools.md) — every exposed tool, its input schema, and the non-tool surface.",
|
|
466
665
|
"- [Errors & exit codes](./errors.md) — the exit-code table, response envelope, and error catalog.",
|
|
666
|
+
"- [Configuration reference](./config.md) — every config field, the three layers, and how they combine.",
|
|
467
667
|
].join("\n"),
|
|
468
668
|
]);
|
|
469
669
|
}
|
|
@@ -484,8 +684,16 @@ export function emitReference(
|
|
|
484
684
|
const verbs = collectDocVerbs(modules);
|
|
485
685
|
return new Map<string, string>([
|
|
486
686
|
["index.md", renderIndexPage(verbs, modules)],
|
|
487
|
-
[
|
|
687
|
+
[
|
|
688
|
+
"commands.md",
|
|
689
|
+
renderCommandsPage(
|
|
690
|
+
verbs,
|
|
691
|
+
collectNounIntros(modules),
|
|
692
|
+
collectVerbSyntax(modules),
|
|
693
|
+
),
|
|
694
|
+
],
|
|
488
695
|
["tools.md", renderToolsPage(verbs, modules)],
|
|
489
696
|
["errors.md", renderErrorsPage()],
|
|
697
|
+
["config.md", renderConfigPage()],
|
|
490
698
|
]);
|
|
491
699
|
}
|