@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,18 +1,62 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Global-flag pre-parsing, ahead of Commander.
|
|
3
3
|
*
|
|
4
|
-
* `--format`, `--verbose`, and `--detail` may appear anywhere on the line, so
|
|
4
|
+
* `--format`, `--verbose`, `--no-headers`, and `--detail` may appear anywhere on the line, so
|
|
5
5
|
* they are scanned and stripped before Commander sees argv — otherwise
|
|
6
6
|
* `enablePositionalOptions()` scoping would reject a flag placed after a verb.
|
|
7
|
+
*
|
|
8
|
+
* ANYWHERE STOPS AT `--`. Everything after the option terminator is the user's
|
|
9
|
+
* data, not this program's flags: `block lookup -- --format` looks up a block
|
|
10
|
+
* literally named `--format`. Commander honours the terminator on its own, so
|
|
11
|
+
* a scan here that ignored it would parse — and strip — tokens Commander was
|
|
12
|
+
* about to hand through verbatim.
|
|
13
|
+
*
|
|
14
|
+
* A FLAG'S VALUE IS NEVER ANOTHER FLAG. `--detail --category css` supplies no
|
|
15
|
+
* detail; it is a valueless `--detail` followed by a separate flag. Reading the
|
|
16
|
+
* next token unconditionally would consume `--category` as the value and strip
|
|
17
|
+
* it, so the filter would vanish and the command would answer over the whole
|
|
18
|
+
* set instead — a wrong answer with no diagnostic.
|
|
7
19
|
* Ported from the v1 `parseGlobalFlags`, with two v2 changes: a new `--detail`
|
|
8
|
-
* flag and the `--format text` value
|
|
9
|
-
* {@link OutputFormat})
|
|
10
|
-
*
|
|
11
|
-
*
|
|
20
|
+
* flag and the `--format text` value replaced by `plain` (the kernel's
|
|
21
|
+
* {@link OutputFormat}) — `text` is not accepted; the bin rejects it with the
|
|
22
|
+
* valid list. The dedicated `--llm` flag was folded into `--format llm`,
|
|
23
|
+
* leaving auto-detection as the sole implicit trigger. Both the space
|
|
24
|
+
* (`--format json`) and equals (`--format=json`) forms are recognized.
|
|
12
25
|
*/
|
|
13
26
|
|
|
14
27
|
import { DETAIL_LEVELS, type DetailLevel } from "../../../constants.js";
|
|
15
|
-
import type { GlobalFlags } from "../../runtime/
|
|
28
|
+
import type { GlobalFlags } from "../../runtime/index.js";
|
|
29
|
+
|
|
30
|
+
/** The end-of-options separator: nothing after it is a flag of this program. */
|
|
31
|
+
const OPTION_TERMINATOR = "--";
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The span of argv this program's flags may occupy — everything before the
|
|
35
|
+
* option terminator, or all of argv when there is none. Exported for the
|
|
36
|
+
* bin's retired-flag detection: a retired spelling AFTER the terminator is
|
|
37
|
+
* an operand, not a flag, and must not trigger a migration message.
|
|
38
|
+
*
|
|
39
|
+
* @param argv - The user's arguments.
|
|
40
|
+
* @returns The scannable span; the same array when no terminator is present.
|
|
41
|
+
*/
|
|
42
|
+
export function selectScanSpan(argv: readonly string[]): readonly string[] {
|
|
43
|
+
const terminator = argv.indexOf(OPTION_TERMINATOR);
|
|
44
|
+
return terminator === -1 ? argv : argv.slice(0, terminator);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Whether a token can serve as a flag's value.
|
|
49
|
+
*
|
|
50
|
+
* A token starting with `-` is the next flag, not this one's value. Shared by
|
|
51
|
+
* every reader below so the space form cannot swallow a sibling flag at one
|
|
52
|
+
* call site while guarding against it at another.
|
|
53
|
+
*
|
|
54
|
+
* @param token - The token following a flag, if any.
|
|
55
|
+
* @returns True when the token is a value rather than another flag.
|
|
56
|
+
*/
|
|
57
|
+
function isFlagValue(token: string | undefined): token is string {
|
|
58
|
+
return token !== undefined && !token.startsWith("-");
|
|
59
|
+
}
|
|
16
60
|
|
|
17
61
|
/**
|
|
18
62
|
* Read a `--flag`'s value, accepting both `--flag value` and `--flag=value`.
|
|
@@ -25,35 +69,74 @@ function readFlagValue(
|
|
|
25
69
|
argv: readonly string[],
|
|
26
70
|
flag: string,
|
|
27
71
|
): string | undefined {
|
|
72
|
+
const span = selectScanSpan(argv);
|
|
28
73
|
const equalsPrefix = `${flag}=`;
|
|
29
|
-
const equalsArg =
|
|
74
|
+
const equalsArg = span.find((arg) => arg.startsWith(equalsPrefix));
|
|
30
75
|
if (equalsArg !== undefined) {
|
|
31
76
|
return equalsArg.slice(equalsPrefix.length);
|
|
32
77
|
}
|
|
33
|
-
const spaceIndex =
|
|
34
|
-
|
|
78
|
+
const spaceIndex = span.indexOf(flag);
|
|
79
|
+
if (spaceIndex === -1) return undefined;
|
|
80
|
+
const value = span.at(spaceIndex + 1);
|
|
81
|
+
return isFlagValue(value) ? value : undefined;
|
|
35
82
|
}
|
|
36
83
|
|
|
37
84
|
/**
|
|
38
|
-
* Read
|
|
85
|
+
* Read a value flag's raw value exactly as typed, for validation.
|
|
39
86
|
*
|
|
40
87
|
* Unlike {@link parseGlobalFlags} this does not normalize — the caller decides
|
|
41
|
-
* how to reject an unknown value. A bare
|
|
88
|
+
* how to reject an unknown value. A bare flag with no following value is
|
|
42
89
|
* reported as `""` (not `undefined`) so it is rejected rather than silently
|
|
43
|
-
* falling through.
|
|
90
|
+
* falling through. One reader for every validated global value flag, so a
|
|
91
|
+
* guard applied to one cannot silently miss its siblings.
|
|
44
92
|
*
|
|
45
93
|
* @param argv - Raw argv (the user's arguments).
|
|
46
|
-
* @
|
|
94
|
+
* @param flag - The flag including leading dashes (e.g. `--format`).
|
|
95
|
+
* @returns The raw value, `""` for a valueless flag, or `undefined`.
|
|
47
96
|
*/
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
97
|
+
function readRawFlag(
|
|
98
|
+
argv: readonly string[],
|
|
99
|
+
flag: string,
|
|
100
|
+
): string | undefined {
|
|
101
|
+
const span = selectScanSpan(argv);
|
|
102
|
+
const equalsPrefix = `${flag}=`;
|
|
103
|
+
const equalsArg = span.find((arg) => arg.startsWith(equalsPrefix));
|
|
104
|
+
if (equalsArg !== undefined) return equalsArg.slice(equalsPrefix.length);
|
|
51
105
|
|
|
52
|
-
const spaceIndex =
|
|
106
|
+
const spaceIndex = span.indexOf(flag);
|
|
53
107
|
if (spaceIndex === -1) return undefined;
|
|
54
108
|
|
|
55
|
-
|
|
56
|
-
|
|
109
|
+
// `""` rather than `undefined`: a valueless flag must be REJECTED by the
|
|
110
|
+
// caller, not fall through to the default.
|
|
111
|
+
const value = span.at(spaceIndex + 1);
|
|
112
|
+
return isFlagValue(value) ? value : "";
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/** The raw `--format` value as typed (see {@link readRawFlag}). */
|
|
116
|
+
export function readRawFormat(argv: readonly string[]): string | undefined {
|
|
117
|
+
return readRawFlag(argv, "--format");
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* The raw `--detail` value as typed (see {@link readRawFlag}). Validated by
|
|
122
|
+
* the bin exactly as `--format` is — an unrecognized level used to be
|
|
123
|
+
* dropped silently, which is the same defect class as a filter that
|
|
124
|
+
* evaporates: wrong output with no diagnostic.
|
|
125
|
+
*/
|
|
126
|
+
export function readRawDetail(argv: readonly string[]): string | undefined {
|
|
127
|
+
return readRawFlag(argv, "--detail");
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* The `--verbose=<x>` token, if present. `--verbose` takes no value — one
|
|
132
|
+
* flag, one spelling — and the program must not accept-and-ignore a second
|
|
133
|
+
* one: the bin rejects the token this finds.
|
|
134
|
+
*
|
|
135
|
+
* @param argv - Raw argv (the user's arguments).
|
|
136
|
+
* @returns The offending token, or `undefined`.
|
|
137
|
+
*/
|
|
138
|
+
export function findValuedVerbose(argv: readonly string[]): string | undefined {
|
|
139
|
+
return selectScanSpan(argv).find((arg) => arg.startsWith("--verbose="));
|
|
57
140
|
}
|
|
58
141
|
|
|
59
142
|
/**
|
|
@@ -108,11 +191,18 @@ export function parseGlobalFlags(
|
|
|
108
191
|
const formatRequested = rawFormat !== undefined;
|
|
109
192
|
const autoLlm = !formatRequested && !env.isTty && !env.noAutoLlm;
|
|
110
193
|
const detail = readDetail(argv);
|
|
194
|
+
const span = selectScanSpan(argv);
|
|
111
195
|
return {
|
|
112
196
|
llm: format === "llm" || autoLlm,
|
|
113
197
|
autoLlm,
|
|
114
198
|
format,
|
|
115
|
-
verbose:
|
|
199
|
+
verbose: span.includes("--verbose"),
|
|
200
|
+
// `--no-headers` suppresses the plain-table header row; it is global so
|
|
201
|
+
// every list-shaped verb honors one spelling.
|
|
202
|
+
...(span.includes("--no-headers") ? { noHeaders: true } : {}),
|
|
203
|
+
// `--quiet` silences success/progress (the report seam, interpreter logs,
|
|
204
|
+
// onboarding, calm notices) while error rendering stays untouched.
|
|
205
|
+
...(span.includes("--quiet") ? { quiet: true } : {}),
|
|
116
206
|
...(detail !== undefined ? { detail } : {}),
|
|
117
207
|
};
|
|
118
208
|
}
|
|
@@ -122,7 +212,8 @@ export function parseGlobalFlags(
|
|
|
122
212
|
*
|
|
123
213
|
* Since {@link parseGlobalFlags} pre-parses these, they are dropped so they do
|
|
124
214
|
* not collide with Commander's positional scoping, letting the user place them
|
|
125
|
-
* anywhere on the line
|
|
215
|
+
* anywhere on the line — anywhere before the option terminator, which this
|
|
216
|
+
* stops at and hands through whole.
|
|
126
217
|
*
|
|
127
218
|
* @param argv - The user's arguments.
|
|
128
219
|
* @returns A new array with global flags stripped.
|
|
@@ -130,20 +221,29 @@ export function parseGlobalFlags(
|
|
|
130
221
|
export function stripGlobalFlags(argv: readonly string[]): string[] {
|
|
131
222
|
const result: string[] = [];
|
|
132
223
|
for (let i = 0; i < argv.length; i++) {
|
|
133
|
-
const arg = argv
|
|
134
|
-
if (arg ===
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
224
|
+
const arg = argv.at(i);
|
|
225
|
+
if (arg === undefined) continue;
|
|
226
|
+
|
|
227
|
+
// Past the terminator nothing is ours: hand the remainder over untouched,
|
|
228
|
+
// terminator included, so Commander still sees where options end.
|
|
229
|
+
if (arg === OPTION_TERMINATOR) {
|
|
230
|
+
result.push(...argv.slice(i));
|
|
231
|
+
return result;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
if (arg === "--verbose" || arg === "--no-headers" || arg === "--quiet") {
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
if (arg.startsWith("--format=") || arg.startsWith("--detail=")) {
|
|
140
238
|
continue;
|
|
141
239
|
}
|
|
142
240
|
if (arg === "--format" || arg === "--detail") {
|
|
143
|
-
|
|
241
|
+
// Skip the value ONLY when the next token is one. A valueless flag before
|
|
242
|
+
// another flag must leave that flag standing.
|
|
243
|
+
if (isFlagValue(argv.at(i + 1))) i += 1;
|
|
144
244
|
continue;
|
|
145
245
|
}
|
|
146
|
-
result.push(arg
|
|
246
|
+
result.push(arg);
|
|
147
247
|
}
|
|
148
248
|
return result;
|
|
149
249
|
}
|
|
@@ -17,7 +17,7 @@ const INDENT = " ";
|
|
|
17
17
|
/** Two-space gap between a term column and its description. */
|
|
18
18
|
const GAP = " ";
|
|
19
19
|
|
|
20
|
-
/** A bold section header (`Flags`, `Verbs`, `
|
|
20
|
+
/** A bold section header (`Flags`, `Verbs`, `Set up & maintain`). */
|
|
21
21
|
export function helpHeading(text: string): string {
|
|
22
22
|
return chalk.bold(text);
|
|
23
23
|
}
|
|
@@ -32,6 +32,19 @@ export function helpTerm(text: string): string {
|
|
|
32
32
|
return chalk.cyan(text);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
/**
|
|
36
|
+
* The wordmark's colour.
|
|
37
|
+
*
|
|
38
|
+
* `yellow` is a PALETTE slot, not a fixed hue: the 16-colour ANSI palette has no
|
|
39
|
+
* orange, and this slot is the one terminal themes render as orange — Ubuntu's
|
|
40
|
+
* among them. Naming the slot rather than a 256-colour or truecolour orange is
|
|
41
|
+
* what lets the wordmark follow the user's own theme instead of fighting it, and
|
|
42
|
+
* keeps it legible on light backgrounds where a hardcoded orange would not be.
|
|
43
|
+
*/
|
|
44
|
+
export function helpLogo(text: string): string {
|
|
45
|
+
return chalk.yellow(text);
|
|
46
|
+
}
|
|
47
|
+
|
|
35
48
|
/** The `Usage:` line: a dim label followed by the given command shape. */
|
|
36
49
|
export function helpUsage(body: string): string {
|
|
37
50
|
return `${chalk.dim("Usage:")} ${body}`;
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* The curated root `--help` page.
|
|
3
3
|
*
|
|
4
|
-
* The
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* The kernel curates the nouns it ships — and only those. It names no domain:
|
|
5
|
+
* the nouns it does NOT curate lead the page untitled (the header one line up
|
|
6
|
+
* already carries the distribution's blurb) and describe themselves through
|
|
7
|
+
* their own verbs, so the front door follows the content instead of naming it.
|
|
8
|
+
* Every section is reconciled against the *live* nouns (from the registered
|
|
9
|
+
* verbs), so a noun that is not built yet is dropped and one the kernel has
|
|
10
|
+
* never heard of still surfaces.
|
|
10
11
|
*/
|
|
11
12
|
|
|
12
|
-
import
|
|
13
|
+
import { PROGRAM_LOGO } from "../../../constants.js";
|
|
14
|
+
import type { VerbSpec } from "../../spec/index.js";
|
|
13
15
|
import {
|
|
14
16
|
helpColumns,
|
|
15
17
|
helpDim,
|
|
16
18
|
helpHeading,
|
|
19
|
+
helpLogo,
|
|
17
20
|
helpTerm,
|
|
18
21
|
helpUsage,
|
|
19
22
|
} from "./helpFormat.js";
|
|
@@ -24,88 +27,89 @@ interface NounSummary {
|
|
|
24
27
|
}
|
|
25
28
|
|
|
26
29
|
interface HelpGroup {
|
|
27
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Absent for the leading uncurated group: its rows sit directly under the
|
|
32
|
+
* usage line, since repeating the header's blurb as a heading three lines
|
|
33
|
+
* below it says the same thing twice.
|
|
34
|
+
*/
|
|
35
|
+
readonly title?: string;
|
|
28
36
|
readonly nouns: readonly NounSummary[];
|
|
29
37
|
}
|
|
30
38
|
|
|
31
39
|
/**
|
|
32
|
-
*
|
|
33
|
-
* people reach for most
|
|
34
|
-
*
|
|
40
|
+
* The kernel's own nouns, grouped by task with curated summaries. Order is
|
|
41
|
+
* intentional: what people reach for most comes first; agent tooling comes last.
|
|
42
|
+
*
|
|
43
|
+
* @param programName - The CLI binary name (the distribution's `name`).
|
|
44
|
+
* @returns The task-oriented groups, in display order.
|
|
35
45
|
*/
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
noun: "
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
noun: "
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
noun: "
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
},
|
|
104
|
-
{ noun: "prompt", summary: "Browse reusable prompt templates" },
|
|
105
|
-
{ noun: "mcp", summary: "Start the MCP server over stdio" },
|
|
106
|
-
],
|
|
107
|
-
},
|
|
108
|
-
];
|
|
46
|
+
function buildKernelGroups(programName: string): readonly HelpGroup[] {
|
|
47
|
+
return [
|
|
48
|
+
{
|
|
49
|
+
title: "Generate code",
|
|
50
|
+
nouns: [
|
|
51
|
+
{ noun: "create", summary: "Scaffold components, packages, and apps" },
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
title: "Query & serve the graph",
|
|
56
|
+
nouns: [
|
|
57
|
+
{
|
|
58
|
+
noun: "graph",
|
|
59
|
+
summary: "Run SPARQL queries or inspect a URI directly",
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
noun: "ontology",
|
|
63
|
+
summary: "Explore the loaded ontologies (classes, properties)",
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
title: "Set up & maintain",
|
|
69
|
+
nouns: [
|
|
70
|
+
{ noun: "doctor", summary: "Check environment health" },
|
|
71
|
+
{
|
|
72
|
+
noun: "setup",
|
|
73
|
+
summary: "Configure MCP, skills, completions, and the LSP",
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
noun: "sources",
|
|
77
|
+
summary: "Build and refresh the local store from packs",
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
noun: "config",
|
|
81
|
+
summary: `Read and write ${programName} configuration`,
|
|
82
|
+
},
|
|
83
|
+
{ noun: "info", summary: "Show version, config, and update status" },
|
|
84
|
+
{ noun: "version", summary: "Print the CLI version" },
|
|
85
|
+
{
|
|
86
|
+
noun: "upgrade",
|
|
87
|
+
summary: `Upgrade the ${programName} CLI to the latest version`,
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
title: "For AI agents",
|
|
93
|
+
nouns: [
|
|
94
|
+
{
|
|
95
|
+
noun: "capabilities",
|
|
96
|
+
summary: "Discover conventions, tools, and the discovery sequence",
|
|
97
|
+
},
|
|
98
|
+
// A colophon is the note at the back of a book: the typeface, the
|
|
99
|
+
// press, the paper. Nothing depends on it, which is the point — so
|
|
100
|
+
// this line does not argue for it. Every other summary in this column
|
|
101
|
+
// promises work done; this one just invites you to look.
|
|
102
|
+
{ noun: "colophon", summary: "Read the credits" },
|
|
103
|
+
{ noun: "skill", summary: "Browse agent skills from the active packs" },
|
|
104
|
+
{ noun: "prompt", summary: "Browse reusable prompt templates" },
|
|
105
|
+
// Curated for PLACEMENT, not for existence: `mcp serve` is an
|
|
106
|
+
// ordinary verb like every other, and this group is where a reader
|
|
107
|
+
// looks for it.
|
|
108
|
+
{ noun: "mcp", summary: "Start the MCP server over stdio" },
|
|
109
|
+
],
|
|
110
|
+
},
|
|
111
|
+
];
|
|
112
|
+
}
|
|
109
113
|
|
|
110
114
|
/** All distinct, non-hidden top-level nouns present in the registered verbs. */
|
|
111
115
|
function nounsFrom(verbs: readonly VerbSpec[]): Set<string> {
|
|
@@ -117,50 +121,56 @@ function nounsFrom(verbs: readonly VerbSpec[]): Set<string> {
|
|
|
117
121
|
return nouns;
|
|
118
122
|
}
|
|
119
123
|
|
|
120
|
-
/**
|
|
121
|
-
|
|
124
|
+
/**
|
|
125
|
+
* Summarise an uncurated noun from its first live verb — which is the pack's own
|
|
126
|
+
* `description` whenever the pack ships a `list` (`compilePack` compiles that
|
|
127
|
+
* verb first). The terminal period a pack sentence carries is dropped so the
|
|
128
|
+
* column reads as one voice with the kernel's own fragments.
|
|
129
|
+
*/
|
|
130
|
+
function summarizeNoun(noun: string, verbs: readonly VerbSpec[]): string {
|
|
122
131
|
const first = verbs.find((v) => v.path[0] === noun && !v.hidden);
|
|
123
|
-
return first?.summary ?? `${noun} commands
|
|
132
|
+
return (first?.summary ?? `${noun} commands`).replace(/\.$/, "");
|
|
124
133
|
}
|
|
125
134
|
|
|
126
135
|
/**
|
|
127
136
|
* Build the curated root help string.
|
|
128
137
|
*
|
|
129
|
-
* @param programName - The CLI binary name (`
|
|
138
|
+
* @param programName - The CLI binary name (the distribution's `name`).
|
|
130
139
|
* @param description - The program description shown in the header.
|
|
131
140
|
* @param verbs - All registered verbs, used to derive the live noun set.
|
|
141
|
+
* @param issuesUrl - Where the preview notice sends feedback; the
|
|
142
|
+
* distribution's own, so a fork points at its own tracker.
|
|
143
|
+
* @param version - The version to stamp on the header. Passed in rather than
|
|
144
|
+
* read here so it is the SAME string `--version` prints: `buildProgram`
|
|
145
|
+
* resolves `options.version ?? VERSION`, and a host that overrides one must
|
|
146
|
+
* not be able to leave the other saying something else.
|
|
132
147
|
* @returns The formatted, colorized help text.
|
|
133
148
|
*/
|
|
134
149
|
export function formatRootHelp(
|
|
135
150
|
programName: string,
|
|
136
151
|
description: string,
|
|
137
152
|
verbs: readonly VerbSpec[],
|
|
153
|
+
version: string,
|
|
154
|
+
issuesUrl: string,
|
|
138
155
|
): string {
|
|
139
156
|
const present = nounsFrom(verbs);
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
present.add("mcp");
|
|
143
|
-
const catalogued = new Set(
|
|
144
|
-
HELP_GROUPS.flatMap((g) => g.nouns.map((n) => n.noun)),
|
|
145
|
-
);
|
|
157
|
+
const kernel = buildKernelGroups(programName);
|
|
158
|
+
const curated = new Set(kernel.flatMap((g) => g.nouns.map((n) => n.noun)));
|
|
146
159
|
|
|
147
|
-
const uncatalogued = [...present].filter((n) => !catalogued.has(n)).sort();
|
|
148
160
|
const groups: HelpGroup[] = [
|
|
149
|
-
|
|
161
|
+
// Everything the kernel's curated table does not claim — in the shipped
|
|
162
|
+
// binary the bundled domain packs, in a fork whatever it ships. Untitled
|
|
163
|
+
// and first, so the domain leads the page without the kernel naming it.
|
|
164
|
+
{
|
|
165
|
+
nouns: [...present]
|
|
166
|
+
.filter((n) => !curated.has(n))
|
|
167
|
+
.sort()
|
|
168
|
+
.map((noun) => ({ noun, summary: summarizeNoun(noun, verbs) })),
|
|
169
|
+
},
|
|
170
|
+
...kernel.map((g) => ({
|
|
150
171
|
...g,
|
|
151
172
|
nouns: g.nouns.filter((n) => present.has(n.noun)),
|
|
152
173
|
})),
|
|
153
|
-
...(uncatalogued.length > 0
|
|
154
|
-
? [
|
|
155
|
-
{
|
|
156
|
-
title: "Other",
|
|
157
|
-
nouns: uncatalogued.map((noun) => ({
|
|
158
|
-
noun,
|
|
159
|
-
summary: fallbackSummary(noun, verbs),
|
|
160
|
-
})),
|
|
161
|
-
},
|
|
162
|
-
]
|
|
163
|
-
: []),
|
|
164
174
|
].filter((g) => g.nouns.length > 0);
|
|
165
175
|
|
|
166
176
|
// One column width across ALL groups so the noun column aligns section to
|
|
@@ -171,7 +181,24 @@ export function formatRootHelp(
|
|
|
171
181
|
);
|
|
172
182
|
|
|
173
183
|
const lines: string[] = [
|
|
174
|
-
|
|
184
|
+
// The wordmark leads when the distribution declares one. A fork ships its
|
|
185
|
+
// own art or none, so its front door is never branded with someone else's.
|
|
186
|
+
...(PROGRAM_LOGO.length > 0 ? [...PROGRAM_LOGO.map(helpLogo), ""] : []),
|
|
187
|
+
// `<name> v<version> — <blurb>`, the spelling `info` and `capabilities`
|
|
188
|
+
// already use, so the front door names the build the same way every other
|
|
189
|
+
// surface does. Dimmed: it answers "which build am I on" for someone who
|
|
190
|
+
// is already here, and must not compete with the name.
|
|
191
|
+
`${helpHeading(programName)} ${helpDim(`v${version}`)} — ${description}`,
|
|
192
|
+
"",
|
|
193
|
+
// The preview notice. Dimmed and directly under the header, because it
|
|
194
|
+
// qualifies what the reader has just been told the tool IS — a version
|
|
195
|
+
// number alone does not say "expect this to move".
|
|
196
|
+
//
|
|
197
|
+
// The URL is the distribution's declared `issuesUrl`, never a literal:
|
|
198
|
+
// `kernel/copy.test.ts` forbids the kernel naming a distribution, and a
|
|
199
|
+
// fork inviting feedback to someone else's tracker would be worse than a
|
|
200
|
+
// missing line. It is passed in for the same reason `version` is.
|
|
201
|
+
helpDim(`This is a preview version. Issues and suggestions: ${issuesUrl}`),
|
|
175
202
|
"",
|
|
176
203
|
helpUsage(
|
|
177
204
|
`${programName} ${helpTerm("<command>")} ${helpDim("[subcommand] [flags]")}`,
|
|
@@ -180,7 +207,7 @@ export function formatRootHelp(
|
|
|
180
207
|
];
|
|
181
208
|
|
|
182
209
|
for (const group of groups) {
|
|
183
|
-
lines.push(helpHeading(group.title));
|
|
210
|
+
if (group.title) lines.push(helpHeading(group.title));
|
|
184
211
|
lines.push(
|
|
185
212
|
...helpColumns(
|
|
186
213
|
group.nouns.map((n) => [n.noun, n.summary] as const),
|
|
@@ -203,7 +230,9 @@ export function formatRootHelp(
|
|
|
203
230
|
"--detail <level>",
|
|
204
231
|
"Progressive-disclosure level (summary, standard, detailed)",
|
|
205
232
|
],
|
|
206
|
-
["--
|
|
233
|
+
["--no-headers", "Hide the table header row in plain output"],
|
|
234
|
+
["--quiet", "Suppress success and progress output (errors still print)"],
|
|
235
|
+
["--verbose", "Diagnostic output on stderr (sources update)"],
|
|
207
236
|
["--help", "Show help (works on any command)"],
|
|
208
237
|
["--version", "Show the CLI version"],
|
|
209
238
|
];
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { capabilities } from "../../../capabilities/index.js";
|
|
2
3
|
import { fixtureModule } from "../../../testing/fixtures/fixtureCapability.js";
|
|
3
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
curatedSuggestions,
|
|
6
|
+
nounVerbMap,
|
|
7
|
+
resolveUnknownCommand,
|
|
8
|
+
} from "./suggest.js";
|
|
4
9
|
import { suggestNames } from "./suggestNames.js";
|
|
5
10
|
|
|
6
11
|
const verbs = [...fixtureModule.verbs];
|
|
@@ -36,6 +41,33 @@ describe("resolveUnknownCommand", () => {
|
|
|
36
41
|
});
|
|
37
42
|
});
|
|
38
43
|
|
|
44
|
+
describe("curatedSuggestions", () => {
|
|
45
|
+
it("answers the conventional spelling with the commands that own the job", () => {
|
|
46
|
+
// `status` is nowhere near `info` or `doctor` textually, so edit distance
|
|
47
|
+
// can never offer them. The table is the answer for a token whose JOB
|
|
48
|
+
// exists here under other names — and it stays a suggestion: `status` is
|
|
49
|
+
// not a command, because `info` already is.
|
|
50
|
+
expect(curatedSuggestions("status")).toEqual(["info", "doctor"]);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it("has nothing to say about a plain typo — that is ranking's job", () => {
|
|
54
|
+
expect(curatedSuggestions("infoo")).toBeUndefined();
|
|
55
|
+
expect(curatedSuggestions("")).toBeUndefined();
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it("never names a command the program does not have", () => {
|
|
59
|
+
// A curated entry that outlived its target would send a confused user at
|
|
60
|
+
// nothing. Check every suggestion against the LIVE registry, so renaming
|
|
61
|
+
// `info` reddens here instead of shipping a dead hint.
|
|
62
|
+
const live = new Set(
|
|
63
|
+
capabilities.flatMap((m) => m.verbs.map((v) => v.path[0])),
|
|
64
|
+
);
|
|
65
|
+
for (const suggestion of curatedSuggestions("status") ?? []) {
|
|
66
|
+
expect(live.has(suggestion)).toBe(true);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
|
|
39
71
|
describe("suggestNames", () => {
|
|
40
72
|
it("ranks prefix matches ahead of edit-distance matches", () => {
|
|
41
73
|
expect(suggestNames("con", ["config", "connect", "block"])).toEqual([
|
|
@@ -10,7 +10,31 @@
|
|
|
10
10
|
* internals leak into the suggester.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
import type { VerbSpec } from "../../spec/
|
|
13
|
+
import type { VerbSpec } from "../../spec/index.js";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Curated suggestions for a token whose JOB exists under other names. Edit
|
|
17
|
+
* distance cannot rank these — `status` is nowhere near `info` textually —
|
|
18
|
+
* but a user typing the conventional spelling deserves the commands that own
|
|
19
|
+
* the job here, not the nearest-looking noun. Consulted before fuzzy ranking;
|
|
20
|
+
* adding a second spelling as a real command is the one thing this table must
|
|
21
|
+
* never become.
|
|
22
|
+
*/
|
|
23
|
+
const CURATED_SUGGESTIONS: Readonly<Record<string, readonly string[]>> = {
|
|
24
|
+
status: ["info", "doctor"],
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The curated suggestions for an unknown token, if any.
|
|
29
|
+
*
|
|
30
|
+
* @param token - The unresolved command token.
|
|
31
|
+
* @returns The commands that own the token's job, or `undefined`.
|
|
32
|
+
*/
|
|
33
|
+
export function curatedSuggestions(
|
|
34
|
+
token: string,
|
|
35
|
+
): readonly string[] | undefined {
|
|
36
|
+
return CURATED_SUGGESTIONS[token];
|
|
37
|
+
}
|
|
14
38
|
|
|
15
39
|
/** An unresolved token and the sibling names to rank it against. */
|
|
16
40
|
export interface UnknownCommand {
|