@canonical/pragma-cli 0.34.0 → 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +153 -30
- package/dist/.build-ok +0 -0
- package/dist/package.json +83 -0
- package/dist/pragma.conf.js +814 -0
- package/dist/pragma.conf.js.map +1 -0
- package/dist/src/bin.js +356 -0
- package/dist/src/bin.js.map +1 -0
- package/dist/src/capabilities/capabilities/capabilities.render.js +70 -0
- package/dist/src/capabilities/capabilities/capabilities.render.js.map +1 -0
- package/dist/src/capabilities/capabilities/capabilities.verb.js +59 -0
- package/dist/src/capabilities/capabilities/capabilities.verb.js.map +1 -0
- package/dist/src/capabilities/capabilities/catalog.js +130 -0
- package/dist/src/capabilities/capabilities/catalog.js.map +1 -0
- package/dist/src/capabilities/capabilities/hints.js +195 -0
- package/dist/src/capabilities/capabilities/hints.js.map +1 -0
- package/dist/src/capabilities/capabilities/index.js +11 -0
- package/dist/src/capabilities/capabilities/index.js.map +1 -0
- package/dist/src/capabilities/capabilities/types.js +11 -0
- package/dist/src/capabilities/capabilities/types.js.map +1 -0
- package/dist/src/capabilities/colophon/collectColophon.js +83 -0
- package/dist/src/capabilities/colophon/collectColophon.js.map +1 -0
- package/dist/src/capabilities/colophon/colophon.render.js +59 -0
- package/dist/src/capabilities/colophon/colophon.render.js.map +1 -0
- package/dist/src/capabilities/colophon/colophon.verb.js +43 -0
- package/dist/src/capabilities/colophon/colophon.verb.js.map +1 -0
- package/dist/src/capabilities/colophon/index.js +5 -0
- package/dist/src/capabilities/colophon/index.js.map +1 -0
- package/dist/src/capabilities/colophon/markdownTerminal.js +90 -0
- package/dist/src/capabilities/colophon/markdownTerminal.js.map +1 -0
- package/dist/src/capabilities/colophon/types.js +10 -0
- package/dist/src/capabilities/colophon/types.js.map +1 -0
- package/dist/src/capabilities/config/collectConfigShow.js +59 -0
- package/dist/src/capabilities/config/collectConfigShow.js.map +1 -0
- package/dist/src/capabilities/config/field.render.js +22 -0
- package/dist/src/capabilities/config/field.render.js.map +1 -0
- package/dist/src/capabilities/config/fields.js +46 -0
- package/dist/src/capabilities/config/fields.js.map +1 -0
- package/dist/src/capabilities/config/get.verb.js +61 -0
- package/dist/src/capabilities/config/get.verb.js.map +1 -0
- package/dist/src/capabilities/config/index.js +5 -0
- package/dist/src/capabilities/config/index.js.map +1 -0
- package/dist/src/capabilities/config/runField.js +59 -0
- package/dist/src/capabilities/config/runField.js.map +1 -0
- package/dist/src/capabilities/config/runGet.js +28 -0
- package/dist/src/capabilities/config/runGet.js.map +1 -0
- package/dist/src/capabilities/config/runSet.js +53 -0
- package/dist/src/capabilities/config/runSet.js.map +1 -0
- package/dist/src/capabilities/config/set.verb.js +66 -0
- package/dist/src/capabilities/config/set.verb.js.map +1 -0
- package/dist/src/capabilities/config/show.render.js +84 -0
- package/dist/src/capabilities/config/show.render.js.map +1 -0
- package/dist/src/capabilities/config/show.verb.js +44 -0
- package/dist/src/capabilities/config/show.verb.js.map +1 -0
- package/dist/src/capabilities/config/types.js +5 -0
- package/dist/src/capabilities/config/types.js.map +1 -0
- package/dist/src/capabilities/config/unset.verb.js +49 -0
- package/dist/src/capabilities/config/unset.verb.js.map +1 -0
- package/dist/src/capabilities/create/cliProjection.js +195 -0
- package/dist/src/capabilities/create/cliProjection.js.map +1 -0
- package/dist/src/capabilities/create/constants.js +47 -0
- package/dist/src/capabilities/create/constants.js.map +1 -0
- package/dist/src/capabilities/create/create.render.js +100 -0
- package/dist/src/capabilities/create/create.render.js.map +1 -0
- package/dist/src/capabilities/create/create.verb.js +438 -0
- package/dist/src/capabilities/create/create.verb.js.map +1 -0
- package/dist/src/capabilities/create/createHelp.js +47 -0
- package/dist/src/capabilities/create/createHelp.js.map +1 -0
- package/dist/src/capabilities/create/createSurface.generated.js +394 -0
- package/dist/src/capabilities/create/createSurface.generated.js.map +1 -0
- package/dist/src/capabilities/create/generatorToVerbSpec.js +106 -0
- package/dist/src/capabilities/create/generatorToVerbSpec.js.map +1 -0
- package/dist/src/capabilities/create/index.js +18 -0
- package/dist/src/capabilities/create/index.js.map +1 -0
- package/dist/src/capabilities/create/messages.js +16 -0
- package/dist/src/capabilities/create/messages.js.map +1 -0
- package/dist/src/capabilities/create/mount.js +293 -0
- package/dist/src/capabilities/create/mount.js.map +1 -0
- package/dist/src/capabilities/create/pathJail.js +65 -0
- package/dist/src/capabilities/create/pathJail.js.map +1 -0
- package/dist/src/capabilities/create/pickGenerator.js +53 -0
- package/dist/src/capabilities/create/pickGenerator.js.map +1 -0
- package/dist/src/capabilities/create/types.js +2 -0
- package/dist/src/capabilities/create/types.js.map +1 -0
- package/dist/src/capabilities/distribution.js +40 -0
- package/dist/src/capabilities/distribution.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkKeStore.js +40 -0
- package/dist/src/capabilities/doctor/checks/checkKeStore.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkNodeVersion.js +21 -0
- package/dist/src/capabilities/doctor/checks/checkNodeVersion.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkPackageRefs.js +92 -0
- package/dist/src/capabilities/doctor/checks/checkPackageRefs.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkPragmaVersion.js +19 -0
- package/dist/src/capabilities/doctor/checks/checkPragmaVersion.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkShellCompletions.js +199 -0
- package/dist/src/capabilities/doctor/checks/checkShellCompletions.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/index.js +27 -0
- package/dist/src/capabilities/doctor/checks/index.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/mcpCommand.js +57 -0
- package/dist/src/capabilities/doctor/checks/mcpCommand.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/targetHealth.js +205 -0
- package/dist/src/capabilities/doctor/checks/targetHealth.js.map +1 -0
- package/dist/src/capabilities/doctor/doctor.render.js +185 -0
- package/dist/src/capabilities/doctor/doctor.render.js.map +1 -0
- package/dist/src/capabilities/doctor/doctor.verb.js +45 -0
- package/dist/src/capabilities/doctor/doctor.verb.js.map +1 -0
- package/dist/src/capabilities/doctor/index.js +5 -0
- package/dist/src/capabilities/doctor/index.js.map +1 -0
- package/dist/src/capabilities/doctor/runChecks.js +83 -0
- package/dist/src/capabilities/doctor/runChecks.js.map +1 -0
- package/dist/src/capabilities/doctor/types.js +5 -0
- package/dist/src/capabilities/doctor/types.js.map +1 -0
- package/dist/src/capabilities/graph/index.js +19 -0
- package/dist/src/capabilities/graph/index.js.map +1 -0
- package/dist/src/capabilities/graph/inspect.render.js +76 -0
- package/dist/src/capabilities/graph/inspect.render.js.map +1 -0
- package/dist/src/capabilities/graph/inspect.verb.js +53 -0
- package/dist/src/capabilities/graph/inspect.verb.js.map +1 -0
- package/dist/src/capabilities/graph/query.render.js +73 -0
- package/dist/src/capabilities/graph/query.render.js.map +1 -0
- package/dist/src/capabilities/graph/query.verb.js +49 -0
- package/dist/src/capabilities/graph/query.verb.js.map +1 -0
- package/dist/src/capabilities/graph/runQuery.js +41 -0
- package/dist/src/capabilities/graph/runQuery.js.map +1 -0
- package/dist/src/capabilities/index.js +56 -0
- package/dist/src/capabilities/index.js.map +1 -0
- package/dist/src/capabilities/info/collectInfo.js +66 -0
- package/dist/src/capabilities/info/collectInfo.js.map +1 -0
- package/dist/src/capabilities/info/index.js +5 -0
- package/dist/src/capabilities/info/index.js.map +1 -0
- package/dist/src/capabilities/info/info.render.js +53 -0
- package/dist/src/capabilities/info/info.render.js.map +1 -0
- package/dist/src/capabilities/info/info.verb.js +42 -0
- package/dist/src/capabilities/info/info.verb.js.map +1 -0
- package/dist/src/capabilities/info/types.js +5 -0
- package/dist/src/capabilities/info/types.js.map +1 -0
- package/dist/src/capabilities/meta/complete.verb.js +43 -0
- package/dist/src/capabilities/meta/complete.verb.js.map +1 -0
- package/dist/src/capabilities/meta/index.js +13 -0
- package/dist/src/capabilities/meta/index.js.map +1 -0
- package/dist/src/capabilities/meta/mcp.verb.js +34 -0
- package/dist/src/capabilities/meta/mcp.verb.js.map +1 -0
- package/dist/src/capabilities/ontology/index.js +21 -0
- package/dist/src/capabilities/ontology/index.js.map +1 -0
- package/dist/src/capabilities/ontology/queries.js +123 -0
- package/dist/src/capabilities/ontology/queries.js.map +1 -0
- package/dist/src/capabilities/ontology/render.js +66 -0
- package/dist/src/capabilities/ontology/render.js.map +1 -0
- package/dist/src/capabilities/ontology/verbs.js +181 -0
- package/dist/src/capabilities/ontology/verbs.js.map +1 -0
- package/dist/src/capabilities/prompt/index.js +16 -0
- package/dist/src/capabilities/prompt/index.js.map +1 -0
- package/dist/src/capabilities/prompt/prompt.render.js +78 -0
- package/dist/src/capabilities/prompt/prompt.render.js.map +1 -0
- package/dist/src/capabilities/prompt/types.js +10 -0
- package/dist/src/capabilities/prompt/types.js.map +1 -0
- package/dist/src/capabilities/prompt/verbs.js +93 -0
- package/dist/src/capabilities/prompt/verbs.js.map +1 -0
- package/dist/src/capabilities/resources/index.js +10 -0
- package/dist/src/capabilities/resources/index.js.map +1 -0
- package/dist/src/capabilities/resources/provider.js +423 -0
- package/dist/src/capabilities/resources/provider.js.map +1 -0
- package/dist/src/capabilities/setup/buildPlan.js +168 -0
- package/dist/src/capabilities/setup/buildPlan.js.map +1 -0
- package/dist/src/capabilities/setup/index.js +5 -0
- package/dist/src/capabilities/setup/index.js.map +1 -0
- package/dist/src/capabilities/setup/mode.js +53 -0
- package/dist/src/capabilities/setup/mode.js.map +1 -0
- package/dist/src/capabilities/setup/operations/index.js +39 -0
- package/dist/src/capabilities/setup/operations/index.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupCompletions.js +160 -0
- package/dist/src/capabilities/setup/operations/setupCompletions.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupConfig.js +101 -0
- package/dist/src/capabilities/setup/operations/setupConfig.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupGenerator.js +343 -0
- package/dist/src/capabilities/setup/operations/setupGenerator.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupLsp.js +277 -0
- package/dist/src/capabilities/setup/operations/setupLsp.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupMcp.js +207 -0
- package/dist/src/capabilities/setup/operations/setupMcp.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupSkills.js +316 -0
- package/dist/src/capabilities/setup/operations/setupSkills.js.map +1 -0
- package/dist/src/capabilities/setup/plan.js +128 -0
- package/dist/src/capabilities/setup/plan.js.map +1 -0
- package/dist/src/capabilities/setup/plan.render.js +193 -0
- package/dist/src/capabilities/setup/plan.render.js.map +1 -0
- package/dist/src/capabilities/setup/setup.render.js +54 -0
- package/dist/src/capabilities/setup/setup.render.js.map +1 -0
- package/dist/src/capabilities/setup/setup.verb.js +334 -0
- package/dist/src/capabilities/setup/setup.verb.js.map +1 -0
- package/dist/src/capabilities/setup/shell.js +196 -0
- package/dist/src/capabilities/setup/shell.js.map +1 -0
- package/dist/src/capabilities/setup/targets.js +263 -0
- package/dist/src/capabilities/setup/targets.js.map +1 -0
- package/dist/src/capabilities/setup/types.js +5 -0
- package/dist/src/capabilities/setup/types.js.map +1 -0
- package/dist/src/capabilities/shared/assertExecOk.js +137 -0
- package/dist/src/capabilities/shared/assertExecOk.js.map +1 -0
- package/dist/src/capabilities/shared/bands.js +16 -0
- package/dist/src/capabilities/shared/bands.js.map +1 -0
- package/dist/src/capabilities/shared/index.js +26 -0
- package/dist/src/capabilities/shared/index.js.map +1 -0
- package/dist/src/capabilities/shared/packageManager.js +103 -0
- package/dist/src/capabilities/shared/packageManager.js.map +1 -0
- package/dist/src/capabilities/shared/registry.js +55 -0
- package/dist/src/capabilities/shared/registry.js.map +1 -0
- package/dist/src/capabilities/skill/discover.js +195 -0
- package/dist/src/capabilities/skill/discover.js.map +1 -0
- package/dist/src/capabilities/skill/index.js +10 -0
- package/dist/src/capabilities/skill/index.js.map +1 -0
- package/dist/src/capabilities/skill/render.js +49 -0
- package/dist/src/capabilities/skill/render.js.map +1 -0
- package/dist/src/capabilities/skill/verbs.js +83 -0
- package/dist/src/capabilities/skill/verbs.js.map +1 -0
- package/dist/src/capabilities/sources/collectStatus.js +103 -0
- package/dist/src/capabilities/sources/collectStatus.js.map +1 -0
- package/dist/src/capabilities/sources/index.js +13 -0
- package/dist/src/capabilities/sources/index.js.map +1 -0
- package/dist/src/capabilities/sources/installSkills.js +167 -0
- package/dist/src/capabilities/sources/installSkills.js.map +1 -0
- package/dist/src/capabilities/sources/runUpdate.js +394 -0
- package/dist/src/capabilities/sources/runUpdate.js.map +1 -0
- package/dist/src/capabilities/sources/status.render.js +64 -0
- package/dist/src/capabilities/sources/status.render.js.map +1 -0
- package/dist/src/capabilities/sources/status.verb.js +40 -0
- package/dist/src/capabilities/sources/status.verb.js.map +1 -0
- package/dist/src/capabilities/sources/types.js +6 -0
- package/dist/src/capabilities/sources/types.js.map +1 -0
- package/dist/src/capabilities/sources/update.render.js +34 -0
- package/dist/src/capabilities/sources/update.render.js.map +1 -0
- package/dist/src/capabilities/sources/update.verb.js +55 -0
- package/dist/src/capabilities/sources/update.verb.js.map +1 -0
- package/dist/src/capabilities/upgrade/index.js +5 -0
- package/dist/src/capabilities/upgrade/index.js.map +1 -0
- package/dist/src/capabilities/upgrade/runUpgrade.js +99 -0
- package/dist/src/capabilities/upgrade/runUpgrade.js.map +1 -0
- package/dist/src/capabilities/upgrade/types.js +5 -0
- package/dist/src/capabilities/upgrade/types.js.map +1 -0
- package/dist/src/capabilities/upgrade/upgrade.render.js +44 -0
- package/dist/src/capabilities/upgrade/upgrade.render.js.map +1 -0
- package/dist/src/capabilities/upgrade/upgrade.verb.js +52 -0
- package/dist/src/capabilities/upgrade/upgrade.verb.js.map +1 -0
- package/dist/src/capabilities/version/index.js +10 -0
- package/dist/src/capabilities/version/index.js.map +1 -0
- package/dist/src/capabilities/version/version.verb.js +36 -0
- package/dist/src/capabilities/version/version.verb.js.map +1 -0
- package/dist/src/constants.js +82 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/index.js +12 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/kernel/completion/complete.js +66 -0
- package/dist/src/kernel/completion/complete.js.map +1 -0
- package/dist/src/kernel/completion/emitScripts.js +92 -0
- package/dist/src/kernel/completion/emitScripts.js.map +1 -0
- package/dist/src/kernel/completion/entitySource.js +285 -0
- package/dist/src/kernel/completion/entitySource.js.map +1 -0
- package/dist/src/kernel/completion/index.js +14 -0
- package/dist/src/kernel/completion/index.js.map +1 -0
- package/dist/src/kernel/completion/model.js +301 -0
- package/dist/src/kernel/completion/model.js.map +1 -0
- package/dist/src/kernel/completion/parse.js +253 -0
- package/dist/src/kernel/completion/parse.js.map +1 -0
- package/dist/src/kernel/completion/rank.js +101 -0
- package/dist/src/kernel/completion/rank.js.map +1 -0
- package/dist/src/kernel/completion/resolve.js +100 -0
- package/dist/src/kernel/completion/resolve.js.map +1 -0
- package/dist/src/kernel/completion/templates/bash.js +209 -0
- package/dist/src/kernel/completion/templates/bash.js.map +1 -0
- package/dist/src/kernel/completion/templates/fish.js +214 -0
- package/dist/src/kernel/completion/templates/fish.js.map +1 -0
- package/dist/src/kernel/completion/templates/index.js +23 -0
- package/dist/src/kernel/completion/templates/index.js.map +1 -0
- package/dist/src/kernel/completion/templates/shared.js +98 -0
- package/dist/src/kernel/completion/templates/shared.js.map +1 -0
- package/dist/src/kernel/completion/templates/zsh.js +201 -0
- package/dist/src/kernel/completion/templates/zsh.js.map +1 -0
- package/dist/src/kernel/completion/types.js +13 -0
- package/dist/src/kernel/completion/types.js.map +1 -0
- package/dist/src/kernel/config/defaults.js +17 -0
- package/dist/src/kernel/config/defaults.js.map +1 -0
- package/dist/src/kernel/config/evaluateProjectConfig.js +126 -0
- package/dist/src/kernel/config/evaluateProjectConfig.js.map +1 -0
- package/dist/src/kernel/config/findProjectConfig.js +43 -0
- package/dist/src/kernel/config/findProjectConfig.js.map +1 -0
- package/dist/src/kernel/config/firstRun.js +34 -0
- package/dist/src/kernel/config/firstRun.js.map +1 -0
- package/dist/src/kernel/config/globalConfig.js +79 -0
- package/dist/src/kernel/config/globalConfig.js.map +1 -0
- package/dist/src/kernel/config/index.js +16 -0
- package/dist/src/kernel/config/index.js.map +1 -0
- package/dist/src/kernel/config/paths.js +35 -0
- package/dist/src/kernel/config/paths.js.map +1 -0
- package/dist/src/kernel/config/readConfig.js +78 -0
- package/dist/src/kernel/config/readConfig.js.map +1 -0
- package/dist/src/kernel/config/schema.js +130 -0
- package/dist/src/kernel/config/schema.js.map +1 -0
- package/dist/src/kernel/config/types.js +19 -0
- package/dist/src/kernel/config/types.js.map +1 -0
- package/dist/src/kernel/config/writeConfigField.js +59 -0
- package/dist/src/kernel/config/writeConfigField.js.map +1 -0
- package/dist/src/kernel/copy.js +43 -0
- package/dist/src/kernel/copy.js.map +1 -0
- package/dist/src/kernel/error/PragmaError.js +149 -0
- package/dist/src/kernel/error/PragmaError.js.map +1 -0
- package/dist/src/kernel/error/constants.js +40 -0
- package/dist/src/kernel/error/constants.js.map +1 -0
- package/dist/src/kernel/error/fromTaskError.js +96 -0
- package/dist/src/kernel/error/fromTaskError.js.map +1 -0
- package/dist/src/kernel/error/index.js +13 -0
- package/dist/src/kernel/error/index.js.map +1 -0
- package/dist/src/kernel/error/recovery.js +52 -0
- package/dist/src/kernel/error/recovery.js.map +1 -0
- package/dist/src/kernel/error/renderError.js +115 -0
- package/dist/src/kernel/error/renderError.js.map +1 -0
- package/dist/src/kernel/error/serialize.js +25 -0
- package/dist/src/kernel/error/serialize.js.map +1 -0
- package/dist/src/kernel/error/types.js +9 -0
- package/dist/src/kernel/error/types.js.map +1 -0
- package/dist/src/kernel/index.js +25 -0
- package/dist/src/kernel/index.js.map +1 -0
- package/dist/src/kernel/packs/collect.js +187 -0
- package/dist/src/kernel/packs/collect.js.map +1 -0
- package/dist/src/kernel/packs/compile.js +304 -0
- package/dist/src/kernel/packs/compile.js.map +1 -0
- package/dist/src/kernel/packs/disclosure.js +76 -0
- package/dist/src/kernel/packs/disclosure.js.map +1 -0
- package/dist/src/kernel/packs/glob.js +38 -0
- package/dist/src/kernel/packs/glob.js.map +1 -0
- package/dist/src/kernel/packs/graphql/buildLookupDocument.js +258 -0
- package/dist/src/kernel/packs/graphql/buildLookupDocument.js.map +1 -0
- package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js +157 -0
- package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js.map +1 -0
- package/dist/src/kernel/packs/graphql/index.js +20 -0
- package/dist/src/kernel/packs/graphql/index.js.map +1 -0
- package/dist/src/kernel/packs/graphql/nameMap.js +63 -0
- package/dist/src/kernel/packs/graphql/nameMap.js.map +1 -0
- package/dist/src/kernel/packs/index.js +34 -0
- package/dist/src/kernel/packs/index.js.map +1 -0
- package/dist/src/kernel/packs/iri.js +110 -0
- package/dist/src/kernel/packs/iri.js.map +1 -0
- package/dist/src/kernel/packs/renderPack.js +129 -0
- package/dist/src/kernel/packs/renderPack.js.map +1 -0
- package/dist/src/kernel/packs/resolveEntity.js +223 -0
- package/dist/src/kernel/packs/resolveEntity.js.map +1 -0
- package/dist/src/kernel/packs/runBodies.js +87 -0
- package/dist/src/kernel/packs/runBodies.js.map +1 -0
- package/dist/src/kernel/packs/sample.js +56 -0
- package/dist/src/kernel/packs/sample.js.map +1 -0
- package/dist/src/kernel/packs/schema.js +369 -0
- package/dist/src/kernel/packs/schema.js.map +1 -0
- package/dist/src/kernel/packs/sparql/applyFilters.js +68 -0
- package/dist/src/kernel/packs/sparql/applyFilters.js.map +1 -0
- package/dist/src/kernel/packs/sparql/applySearch.js +25 -0
- package/dist/src/kernel/packs/sparql/applySearch.js.map +1 -0
- package/dist/src/kernel/packs/sparql/buildLookupQuery.js +217 -0
- package/dist/src/kernel/packs/sparql/buildLookupQuery.js.map +1 -0
- package/dist/src/kernel/packs/sparql/escape.js +21 -0
- package/dist/src/kernel/packs/sparql/escape.js.map +1 -0
- package/dist/src/kernel/packs/sparql/index.js +31 -0
- package/dist/src/kernel/packs/sparql/index.js.map +1 -0
- package/dist/src/kernel/packs/sparql/runSelect.js +101 -0
- package/dist/src/kernel/packs/sparql/runSelect.js.map +1 -0
- package/dist/src/kernel/packs/types.js +30 -0
- package/dist/src/kernel/packs/types.js.map +1 -0
- package/dist/src/kernel/packs/uniqueness.js +30 -0
- package/dist/src/kernel/packs/uniqueness.js.map +1 -0
- package/dist/src/kernel/project/cli/buildProgram.js +263 -0
- package/dist/src/kernel/project/cli/buildProgram.js.map +1 -0
- package/dist/src/kernel/project/cli/constants.js +27 -0
- package/dist/src/kernel/project/cli/constants.js.map +1 -0
- package/dist/src/kernel/project/cli/dispatch.js +420 -0
- package/dist/src/kernel/project/cli/dispatch.js.map +1 -0
- package/dist/src/kernel/project/cli/exitCodes.js +66 -0
- package/dist/src/kernel/project/cli/exitCodes.js.map +1 -0
- package/dist/src/kernel/project/cli/globalFlags.js +216 -0
- package/dist/src/kernel/project/cli/globalFlags.js.map +1 -0
- package/dist/src/kernel/project/cli/helpFormat.js +59 -0
- package/dist/src/kernel/project/cli/helpFormat.js.map +1 -0
- package/dist/src/kernel/project/cli/index.js +14 -0
- package/dist/src/kernel/project/cli/index.js.map +1 -0
- package/dist/src/kernel/project/cli/rootHelp.js +197 -0
- package/dist/src/kernel/project/cli/rootHelp.js.map +1 -0
- package/dist/src/kernel/project/cli/suggest.js +75 -0
- package/dist/src/kernel/project/cli/suggest.js.map +1 -0
- package/dist/src/kernel/project/cli/suggestNames.js +96 -0
- package/dist/src/kernel/project/cli/suggestNames.js.map +1 -0
- package/dist/src/kernel/project/cli/verbHelp.js +131 -0
- package/dist/src/kernel/project/cli/verbHelp.js.map +1 -0
- package/dist/src/kernel/project/mcp/buildServer.js +67 -0
- package/dist/src/kernel/project/mcp/buildServer.js.map +1 -0
- package/dist/src/kernel/project/mcp/envelope.js +37 -0
- package/dist/src/kernel/project/mcp/envelope.js.map +1 -0
- package/dist/src/kernel/project/mcp/index.js +8 -0
- package/dist/src/kernel/project/mcp/index.js.map +1 -0
- package/dist/src/kernel/project/mcp/instructions.js +44 -0
- package/dist/src/kernel/project/mcp/instructions.js.map +1 -0
- package/dist/src/kernel/project/mcp/mcpError.js +42 -0
- package/dist/src/kernel/project/mcp/mcpError.js.map +1 -0
- package/dist/src/kernel/project/mcp/prompts/index.js +36 -0
- package/dist/src/kernel/project/mcp/prompts/index.js.map +1 -0
- package/dist/src/kernel/project/mcp/prompts/provider.js +98 -0
- package/dist/src/kernel/project/mcp/prompts/provider.js.map +1 -0
- package/dist/src/kernel/project/mcp/prompts/source.js +154 -0
- package/dist/src/kernel/project/mcp/prompts/source.js.map +1 -0
- package/dist/src/kernel/project/mcp/registerVerb.js +300 -0
- package/dist/src/kernel/project/mcp/registerVerb.js.map +1 -0
- package/dist/src/kernel/project/mcp/serve.js +35 -0
- package/dist/src/kernel/project/mcp/serve.js.map +1 -0
- package/dist/src/kernel/render/compactUri.js +24 -0
- package/dist/src/kernel/render/compactUri.js.map +1 -0
- package/dist/src/kernel/render/contracts.js +10 -0
- package/dist/src/kernel/render/contracts.js.map +1 -0
- package/dist/src/kernel/render/disclosure.js +34 -0
- package/dist/src/kernel/render/disclosure.js.map +1 -0
- package/dist/src/kernel/render/envelope.js +30 -0
- package/dist/src/kernel/render/envelope.js.map +1 -0
- package/dist/src/kernel/render/formatters.js +27 -0
- package/dist/src/kernel/render/formatters.js.map +1 -0
- package/dist/src/kernel/render/index.js +15 -0
- package/dist/src/kernel/render/index.js.map +1 -0
- package/dist/src/kernel/render/prefixes.js +46 -0
- package/dist/src/kernel/render/prefixes.js.map +1 -0
- package/dist/src/kernel/render/renderers.js +468 -0
- package/dist/src/kernel/render/renderers.js.map +1 -0
- package/dist/src/kernel/render/style.js +85 -0
- package/dist/src/kernel/render/style.js.map +1 -0
- package/dist/src/kernel/render/turtle.js +194 -0
- package/dist/src/kernel/render/turtle.js.map +1 -0
- package/dist/src/kernel/render/writeStdout.js +43 -0
- package/dist/src/kernel/render/writeStdout.js.map +1 -0
- package/dist/src/kernel/runtime/boot.js +49 -0
- package/dist/src/kernel/runtime/boot.js.map +1 -0
- package/dist/src/kernel/runtime/facade.js +39 -0
- package/dist/src/kernel/runtime/facade.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/build.js +122 -0
- package/dist/src/kernel/runtime/graphpack/build.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/buildIndex.js +303 -0
- package/dist/src/kernel/runtime/graphpack/buildIndex.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js +6 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js +4 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.stories.generated.js +4 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.stories.generated.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded.js +82 -0
- package/dist/src/kernel/runtime/graphpack/embedded.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/hash.js +38 -0
- package/dist/src/kernel/runtime/graphpack/hash.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/index.js +11 -0
- package/dist/src/kernel/runtime/graphpack/index.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/manifest.js +145 -0
- package/dist/src/kernel/runtime/graphpack/manifest.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/read.js +92 -0
- package/dist/src/kernel/runtime/graphpack/read.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/schemas.js +70 -0
- package/dist/src/kernel/runtime/graphpack/schemas.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/stories.js +68 -0
- package/dist/src/kernel/runtime/graphpack/stories.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/types.js +55 -0
- package/dist/src/kernel/runtime/graphpack/types.js.map +1 -0
- package/dist/src/kernel/runtime/index.js +8 -0
- package/dist/src/kernel/runtime/index.js.map +1 -0
- package/dist/src/kernel/runtime/loadSession.js +34 -0
- package/dist/src/kernel/runtime/loadSession.js.map +1 -0
- package/dist/src/kernel/runtime/paths.js +78 -0
- package/dist/src/kernel/runtime/paths.js.map +1 -0
- package/dist/src/kernel/runtime/probe.js +37 -0
- package/dist/src/kernel/runtime/probe.js.map +1 -0
- package/dist/src/kernel/runtime/readEntity.js +363 -0
- package/dist/src/kernel/runtime/readEntity.js.map +1 -0
- package/dist/src/kernel/runtime/refs/gitOps.js +65 -0
- package/dist/src/kernel/runtime/refs/gitOps.js.map +1 -0
- package/dist/src/kernel/runtime/refs/index.js +29 -0
- package/dist/src/kernel/runtime/refs/index.js.map +1 -0
- package/dist/src/kernel/runtime/refs/parseRef.js +70 -0
- package/dist/src/kernel/runtime/refs/parseRef.js.map +1 -0
- package/dist/src/kernel/runtime/refs/resolve.js +332 -0
- package/dist/src/kernel/runtime/refs/resolve.js.map +1 -0
- package/dist/src/kernel/runtime/resolveSources.js +62 -0
- package/dist/src/kernel/runtime/resolveSources.js.map +1 -0
- package/dist/src/kernel/runtime/store.js +75 -0
- package/dist/src/kernel/runtime/store.js.map +1 -0
- package/dist/src/kernel/runtime/storeReadiness.js +51 -0
- package/dist/src/kernel/runtime/storeReadiness.js.map +1 -0
- package/dist/src/kernel/runtime/types.js +11 -0
- package/dist/src/kernel/runtime/types.js.map +1 -0
- package/dist/src/kernel/spec/asVerb.js +21 -0
- package/dist/src/kernel/spec/asVerb.js.map +1 -0
- package/dist/src/kernel/spec/emitReference.js +578 -0
- package/dist/src/kernel/spec/emitReference.js.map +1 -0
- package/dist/src/kernel/spec/emitSurface.js +202 -0
- package/dist/src/kernel/spec/emitSurface.js.map +1 -0
- package/dist/src/kernel/spec/index.js +11 -0
- package/dist/src/kernel/spec/index.js.map +1 -0
- package/dist/src/kernel/spec/surfaceConformance.js +103 -0
- package/dist/src/kernel/spec/surfaceConformance.js.map +1 -0
- package/dist/src/kernel/spec/types.js +14 -0
- package/dist/src/kernel/spec/types.js.map +1 -0
- package/dist/src/kernel/spec/validate.js +110 -0
- package/dist/src/kernel/spec/validate.js.map +1 -0
- package/dist/src/kernel/vocabulary.js +97 -0
- package/dist/src/kernel/vocabulary.js.map +1 -0
- package/dist/src/types.js +11 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +20 -22
- package/pragma.conf.ts +249 -60
- package/src/bin.ts +267 -82
- package/src/capabilities/block.parity.test.ts +6 -3
- package/src/capabilities/capabilities/capabilities.render.ts +1 -1
- package/src/capabilities/capabilities/capabilities.verb.ts +1 -1
- package/src/capabilities/capabilities/catalog.ts +3 -3
- package/src/capabilities/capabilities/hints.ts +32 -7
- package/src/capabilities/capabilities/index.ts +1 -1
- package/src/capabilities/colophon/collectColophon.ts +35 -24
- package/src/capabilities/colophon/colophon.render.ts +25 -1
- package/src/capabilities/colophon/colophon.test.ts +42 -21
- package/src/capabilities/colophon/colophon.verb.ts +4 -4
- package/src/capabilities/config/collectConfigShow.test.ts +1 -0
- package/src/capabilities/config/collectConfigShow.ts +3 -3
- package/src/capabilities/config/field.render.ts +4 -5
- package/src/capabilities/config/fields.ts +17 -10
- package/src/capabilities/config/get.verb.ts +70 -0
- package/src/capabilities/config/getUnset.test.ts +264 -0
- package/src/capabilities/config/index.ts +5 -1
- package/src/capabilities/config/runField.ts +40 -22
- package/src/capabilities/config/runGet.ts +34 -0
- package/src/capabilities/config/runSet.ts +35 -9
- package/src/capabilities/config/set.test.ts +48 -14
- package/src/capabilities/config/set.verb.ts +8 -7
- package/src/capabilities/config/show.render.ts +1 -1
- package/src/capabilities/config/show.verb.ts +9 -6
- package/src/capabilities/config/types.ts +18 -4
- package/src/capabilities/config/unset.verb.ts +58 -0
- package/src/capabilities/create/byteEquality.subprocess.test.ts +2 -3
- package/src/capabilities/create/byteEquality.test.ts +25 -11
- package/src/capabilities/create/cliProjection.ts +227 -0
- package/src/capabilities/create/constants.ts +36 -61
- package/src/capabilities/create/create.mcp.test.ts +89 -5
- package/src/capabilities/create/create.render.ts +71 -7
- package/src/capabilities/create/create.test.ts +433 -219
- package/src/capabilities/create/create.verb.ts +297 -328
- package/src/capabilities/create/createGrammar.test.ts +865 -0
- package/src/capabilities/create/createHelp.ts +71 -0
- package/src/capabilities/create/createSurface.generated.ts +400 -0
- package/src/capabilities/create/crossCli.subprocess.test.ts +745 -0
- package/src/capabilities/create/cwdJail.test.ts +24 -5
- package/src/capabilities/create/generatorToVerbSpec.test.ts +186 -0
- package/src/capabilities/create/generatorToVerbSpec.ts +13 -11
- package/src/capabilities/create/index.ts +7 -4
- package/src/capabilities/create/messages.ts +18 -0
- package/src/capabilities/create/mount.ts +391 -0
- package/src/capabilities/create/pathJail.test.ts +90 -0
- package/src/capabilities/create/pathJail.ts +8 -5
- package/src/capabilities/create/pickGenerator.ts +23 -35
- package/src/capabilities/create/shippedCreate.subprocess.test.ts +164 -0
- package/src/capabilities/create/types.ts +20 -0
- package/src/capabilities/distribution.test.ts +3 -1
- package/src/capabilities/distribution.ts +10 -15
- package/src/capabilities/doctor/checks/checkKeStore.ts +7 -5
- package/src/capabilities/doctor/checks/checkPackageRefs.ts +6 -4
- package/src/capabilities/doctor/checks/checkPragmaVersion.ts +2 -2
- package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +72 -27
- package/src/capabilities/doctor/checks/checkShellCompletions.ts +59 -13
- package/src/capabilities/doctor/checks/index.ts +27 -0
- package/src/capabilities/doctor/checks/mcpCommand.test.ts +100 -0
- package/src/capabilities/doctor/checks/mcpCommand.ts +69 -0
- package/src/capabilities/doctor/checks/targetHealth.ts +274 -0
- package/src/capabilities/doctor/doctor.render.test.ts +18 -7
- package/src/capabilities/doctor/doctor.render.ts +43 -19
- package/src/capabilities/doctor/doctor.test.ts +123 -34
- package/src/capabilities/doctor/doctor.verb.ts +3 -3
- package/src/capabilities/doctor/runChecks.ts +62 -63
- package/src/capabilities/doctor/types.ts +20 -4
- package/src/capabilities/emptyRecovery.test.ts +13 -8
- package/src/capabilities/graph/examples.exec.test.ts +107 -0
- package/src/capabilities/graph/index.ts +1 -1
- package/src/capabilities/graph/inspect.render.ts +70 -22
- package/src/capabilities/graph/inspect.test.ts +260 -5
- package/src/capabilities/graph/inspect.verb.ts +18 -6
- package/src/capabilities/graph/query.render.ts +15 -3
- package/src/capabilities/graph/query.verb.ts +3 -3
- package/src/capabilities/graph/runQuery.ts +2 -3
- package/src/capabilities/index.ts +3 -1
- package/src/capabilities/info/collectInfo.ts +5 -4
- package/src/capabilities/info/info.render.ts +1 -1
- package/src/capabilities/info/info.verb.ts +1 -1
- package/src/capabilities/lazy.test.ts +32 -0
- package/src/capabilities/meta/complete.verb.ts +1 -1
- package/src/capabilities/meta/index.ts +1 -1
- package/src/capabilities/meta/mcp.verb.ts +10 -8
- package/src/capabilities/ontology/index.ts +15 -11
- package/src/capabilities/ontology/ontology.test.ts +6 -55
- package/src/capabilities/ontology/queries.ts +2 -2
- package/src/capabilities/ontology/render.ts +3 -4
- package/src/capabilities/ontology/verbs.ts +27 -68
- package/src/capabilities/prompt/index.ts +2 -2
- package/src/capabilities/prompt/prompt.render.ts +6 -2
- package/src/capabilities/prompt/types.ts +1 -1
- package/src/capabilities/prompt/verbs.ts +4 -5
- package/src/capabilities/reference.test.ts +63 -0
- package/src/capabilities/resources/provider.ts +342 -85
- package/src/capabilities/resources/resources.test.ts +355 -59
- package/src/capabilities/setup/buildPlan.ts +236 -0
- package/src/capabilities/setup/index.ts +7 -7
- package/src/capabilities/setup/mode.ts +74 -0
- package/src/capabilities/setup/operations/index.ts +74 -0
- package/src/capabilities/setup/operations/setupCompletions.ts +97 -24
- package/src/capabilities/setup/operations/setupConfig.ts +124 -0
- package/src/capabilities/setup/operations/setupGenerator.ts +396 -326
- package/src/capabilities/setup/operations/setupLsp.ts +329 -68
- package/src/capabilities/setup/operations/setupMcp.ts +137 -97
- package/src/capabilities/setup/operations/setupSkills.ts +336 -108
- package/src/capabilities/setup/plan.render.ts +241 -0
- package/src/capabilities/setup/plan.ts +236 -0
- package/src/capabilities/setup/setup.mcp.correctness.test.ts +432 -0
- package/src/capabilities/setup/setup.render.test.ts +281 -73
- package/src/capabilities/setup/setup.render.ts +45 -77
- package/src/capabilities/setup/setup.test.ts +972 -209
- package/src/capabilities/setup/setup.verb.ts +223 -71
- package/src/capabilities/setup/shell.test.ts +86 -0
- package/src/capabilities/setup/shell.ts +137 -11
- package/src/capabilities/setup/targets.ts +367 -0
- package/src/capabilities/setup/types.ts +18 -57
- package/src/capabilities/shared/assertExecOk.ts +68 -10
- package/src/capabilities/shared/index.ts +32 -0
- package/src/capabilities/shared/packageManager.test.ts +55 -0
- package/src/capabilities/shared/packageManager.ts +62 -6
- package/src/capabilities/skill/discover.ts +37 -5
- package/src/capabilities/skill/index.ts +1 -1
- package/src/capabilities/skill/render.ts +10 -9
- package/src/capabilities/skill/skill.test.ts +7 -5
- package/src/capabilities/skill/verbs.ts +3 -4
- package/src/capabilities/sources/collectStatus.ts +7 -2
- package/src/capabilities/sources/index.ts +1 -1
- package/src/capabilities/sources/installSkills.ts +84 -7
- package/src/capabilities/sources/runUpdate.ts +53 -21
- package/src/capabilities/sources/sources.test.ts +154 -2
- package/src/capabilities/sources/status.render.ts +1 -1
- package/src/capabilities/sources/status.verb.ts +1 -1
- package/src/capabilities/sources/update.render.ts +1 -1
- package/src/capabilities/sources/update.verb.ts +1 -1
- package/src/capabilities/surface.test.ts +134 -17
- package/src/capabilities/upgrade/runUpgrade.ts +8 -8
- package/src/capabilities/upgrade/upgrade.render.ts +4 -5
- package/src/capabilities/upgrade/upgrade.test.ts +3 -3
- package/src/capabilities/upgrade/upgrade.verb.ts +1 -1
- package/src/capabilities/version/index.ts +12 -0
- package/src/capabilities/version/version.test.ts +66 -0
- package/src/capabilities/version/version.verb.ts +39 -0
- package/src/constants.ts +31 -1
- package/src/identity.test.ts +40 -25
- package/src/kernel/completion/__snapshots__/emitScripts.test.ts.snap +15 -13
- package/src/kernel/completion/complete.test.ts +12 -2
- package/src/kernel/completion/complete.ts +1 -1
- package/src/kernel/completion/emitScripts.ts +1 -1
- package/src/kernel/completion/entitySource.test.ts +1 -1
- package/src/kernel/completion/entitySource.ts +21 -8
- package/src/kernel/completion/model.test.ts +164 -12
- package/src/kernel/completion/model.ts +94 -14
- package/src/kernel/completion/parse.test.ts +4 -7
- package/src/kernel/completion/parse.ts +15 -0
- package/src/kernel/completion/resolve.test.ts +0 -1
- package/src/kernel/completion/safety.test.ts +34 -26
- package/src/kernel/completion/shellDrive.test.ts +28 -9
- package/src/kernel/completion/templates/bash.ts +7 -2
- package/src/kernel/completion/templates/index.ts +23 -0
- package/src/kernel/completion/types.ts +7 -0
- package/src/kernel/config/defaults.test.ts +25 -2
- package/src/kernel/config/defaults.ts +4 -3
- package/src/kernel/config/evaluateProjectConfig.ts +31 -8
- package/src/kernel/config/firstRun.test.ts +44 -38
- package/src/kernel/config/firstRun.ts +24 -88
- package/src/kernel/config/index.ts +1 -1
- package/src/kernel/config/readConfig.test.ts +6 -3
- package/src/kernel/config/readConfig.ts +1 -1
- package/src/kernel/config/schema.ts +3 -1
- package/src/kernel/config/types.ts +3 -1
- package/src/kernel/copy.test.ts +34 -4
- package/src/kernel/copy.ts +54 -0
- package/src/kernel/error/PragmaError.test.ts +5 -2
- package/src/kernel/error/PragmaError.ts +4 -2
- package/src/kernel/error/constants.ts +7 -5
- package/src/kernel/error/fromTaskError.ts +28 -6
- package/src/kernel/error/recovery.ts +14 -0
- package/src/kernel/error/renderError.ts +42 -1
- package/src/kernel/error/types.ts +21 -1
- package/src/kernel/index.ts +26 -0
- package/src/kernel/packs/collect.ts +12 -16
- package/src/kernel/packs/compile.test.ts +130 -1
- package/src/kernel/packs/compile.ts +93 -3
- package/src/kernel/packs/disclosure.ts +2 -2
- package/src/kernel/packs/graphql/buildLookupDocument.ts +1 -1
- package/src/kernel/packs/graphql/fetchGraphqlLookup.ts +3 -4
- package/src/kernel/packs/graphql/index.ts +20 -0
- package/src/kernel/packs/index.ts +40 -0
- package/src/kernel/packs/iri.test.ts +73 -0
- package/src/kernel/packs/iri.ts +66 -14
- package/src/kernel/packs/renderPack.ts +24 -5
- package/src/kernel/packs/resolveEntity.test.ts +213 -0
- package/src/kernel/packs/resolveEntity.ts +112 -18
- package/src/kernel/packs/runBodies.ts +2 -3
- package/src/kernel/packs/sample.ts +1 -1
- package/src/kernel/packs/schema.ts +18 -1
- package/src/kernel/packs/sparql/applyFilters.ts +16 -17
- package/src/kernel/packs/sparql/buildLookupQuery.ts +75 -3
- package/src/kernel/packs/sparql/index.ts +37 -0
- package/src/kernel/packs/sparql/runSelect.test.ts +1 -1
- package/src/kernel/packs/sparql/runSelect.ts +3 -4
- package/src/kernel/packs/toolDescription.test.ts +42 -3
- package/src/kernel/packs/types.ts +13 -0
- package/src/kernel/packs/uniqueness.ts +1 -1
- package/src/kernel/project/cli/buildProgram.test.ts +147 -12
- package/src/kernel/project/cli/buildProgram.ts +77 -18
- package/src/kernel/project/cli/constants.ts +34 -0
- package/src/kernel/project/cli/dispatch.test.ts +160 -3
- package/src/kernel/project/cli/dispatch.ts +222 -42
- package/src/kernel/project/cli/exitCodes.ts +1 -1
- package/src/kernel/project/cli/globalFlags.test.ts +117 -1
- package/src/kernel/project/cli/globalFlags.ts +130 -30
- package/src/kernel/project/cli/helpFormat.ts +13 -0
- package/src/kernel/project/cli/rootHelp.ts +41 -12
- package/src/kernel/project/cli/suggest.test.ts +33 -1
- package/src/kernel/project/cli/suggest.ts +25 -1
- package/src/kernel/project/cli/verbHelp.test.ts +30 -0
- package/src/kernel/project/cli/verbHelp.ts +23 -7
- package/src/kernel/project/mcp/buildServer.ts +7 -4
- package/src/kernel/project/mcp/envelope.ts +2 -2
- package/src/kernel/project/mcp/instructions.ts +2 -2
- package/src/kernel/project/mcp/mcpError.ts +1 -1
- package/src/kernel/project/mcp/parity.test.ts +5 -2
- package/src/kernel/project/mcp/prompts/index.ts +37 -0
- package/src/kernel/project/mcp/prompts/source.ts +2 -2
- package/src/kernel/project/mcp/registerVerb.ts +35 -9
- package/src/kernel/project/mcp/serve.ts +2 -2
- package/src/kernel/render/__snapshots__/renderers.test.ts.snap +7 -4
- package/src/kernel/render/contracts.ts +21 -0
- package/src/kernel/render/envelope.ts +2 -3
- package/src/kernel/render/formatters.ts +1 -1
- package/src/kernel/render/renderers.test.ts +243 -6
- package/src/kernel/render/renderers.ts +222 -20
- package/src/kernel/render/style.test.ts +75 -24
- package/src/kernel/render/style.ts +31 -1
- package/src/kernel/render/turtle.ts +222 -0
- package/src/kernel/runtime/graphpack/buildIndex.ts +1 -1
- package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +3 -3
- package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +1 -1
- package/src/kernel/runtime/graphpack/embedded.ts +3 -3
- package/src/kernel/runtime/graphpack/manifest.ts +1 -1
- package/src/kernel/runtime/graphpack/read.ts +1 -2
- package/src/kernel/runtime/loadSession.ts +1 -1
- package/src/kernel/runtime/probe.ts +6 -6
- package/src/kernel/runtime/readEntity.ts +472 -28
- package/src/kernel/runtime/refs/index.ts +39 -0
- package/src/kernel/runtime/refs/parseRef.ts +2 -2
- package/src/kernel/runtime/refs/resolve.ts +4 -4
- package/src/kernel/runtime/storeReadiness.ts +1 -2
- package/src/kernel/runtime/types.ts +15 -1
- package/src/kernel/runtime/wasmEmbed.test.ts +37 -39
- package/src/kernel/spec/emitReference.ts +105 -30
- package/src/kernel/spec/emitSurface.ts +48 -6
- package/src/kernel/spec/surfaceConformance.test.ts +4 -2
- package/src/kernel/spec/types.ts +248 -4
- package/src/testing/behavioral/docExamples.test.ts +14 -0
- package/src/testing/behavioral/errorMatrix.mcp.test.ts +2 -2
- package/src/testing/behavioral/firstRun.e2e.test.ts +24 -24
- package/src/testing/behavioral/journeys.cli.test.ts +1 -1
- package/src/testing/behavioral/journeys.defaultPack.test.ts +7 -7
- package/src/testing/behavioral/journeys.implementation.test.ts +206 -0
- package/src/testing/behavioral/journeys.interactiveTty.e2e.test.ts +2 -2
- package/src/testing/behavioral/journeys.packageStories.test.ts +4 -4
- package/src/testing/behavioral/mcpServe.e2e.test.ts +57 -2
- package/src/testing/behavioral/mcpSurface.test.ts +1 -1
- package/src/testing/behavioral/rootCli.e2e.test.ts +26 -2
- package/src/testing/eval/cases/effectful.ts +3 -2
- package/src/testing/fixtures/blockGraph.ts +79 -0
- package/src/testing/fixtures/graph/canonical.ts +88 -2
- package/src/testing/fixtures/graph/defaultPack.ts +1 -1
- package/src/testing/helpers/blankCanonicalRanges.ts +36 -0
- package/src/testing/helpers/projectMcp.ts +32 -6
- package/src/testing/helpers/runCli.ts +35 -18
- package/src/testing/perf/budgets.test.ts +20 -9
- package/src/testing/perf/budgets.ts +58 -9
- package/src/testing/perf/codegen.test.ts +126 -0
- package/src/testing/perf/globalSetup.test.ts +286 -0
- package/src/testing/perf/globalSetup.ts +505 -23
- package/src/testing/perf/measure.test.ts +38 -0
- package/src/testing/perf/measure.ts +23 -4
- package/src/testing/setupXdgIsolation.ts +81 -21
- package/src/testing/tempRoot.globalSetup.ts +122 -0
- package/dist/pragma +0 -0
- package/src/capabilities/create/compiledCreate.subprocess.test.ts +0 -189
- package/src/capabilities/create/templates.embedded.generated.ts +0 -28
- package/src/capabilities/doctor/checks/checkConfigFile.ts +0 -42
- package/src/capabilities/doctor/checks/checkMcpCommands.ts +0 -114
- package/src/capabilities/doctor/checks/checkMcpConfigured.ts +0 -68
- package/src/capabilities/doctor/checks/checkSkillsSymlinked.ts +0 -61
- package/src/capabilities/doctor/checks/deriveBand.test.ts +0 -42
- package/src/capabilities/doctor/checks/deriveBand.ts +0 -28
- package/src/kernel/config/__snapshots__/firstRun.test.ts.snap +0 -11
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell detection + completion-script install paths.
|
|
3
|
+
*
|
|
4
|
+
* Shell selection is detection-only, and detection means the shell the user is
|
|
5
|
+
* RUNNING — read from the process tree — not the login shell `$SHELL` records.
|
|
6
|
+
* The two differ constantly and the difference is invisible until TAB fails.
|
|
7
|
+
* `$HOME` is read at call time so tests can isolate it.
|
|
8
|
+
*/
|
|
9
|
+
import { execFileSync } from "node:child_process";
|
|
10
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
11
|
+
import { homedir } from "node:os";
|
|
12
|
+
import { join } from "node:path";
|
|
13
|
+
import { BIN_NAME } from "../../constants.js";
|
|
14
|
+
const SHELL_MAP = {
|
|
15
|
+
zsh: "zsh",
|
|
16
|
+
bash: "bash",
|
|
17
|
+
fish: "fish",
|
|
18
|
+
};
|
|
19
|
+
/** How far up the process tree to look before giving up. */
|
|
20
|
+
const MAX_ANCESTRY = 8;
|
|
21
|
+
/**
|
|
22
|
+
* The command name and parent of a pid, read from `/proc` (Linux).
|
|
23
|
+
*
|
|
24
|
+
* `/proc/<pid>/stat` is `pid (comm) state ppid …`, and `comm` may itself
|
|
25
|
+
* contain spaces and parentheses — so the fields are taken after the LAST
|
|
26
|
+
* `)`, never by splitting the whole line.
|
|
27
|
+
*
|
|
28
|
+
* @param pid - The process to inspect.
|
|
29
|
+
* @returns Its command name and parent pid, or undefined when unreadable.
|
|
30
|
+
* @note Impure — reads /proc.
|
|
31
|
+
*/
|
|
32
|
+
function procEntry(pid) {
|
|
33
|
+
try {
|
|
34
|
+
const stat = readFileSync(`/proc/${pid}/stat`, "utf8");
|
|
35
|
+
const close = stat.lastIndexOf(")");
|
|
36
|
+
const open = stat.indexOf("(");
|
|
37
|
+
if (close < 0 || open < 0)
|
|
38
|
+
return undefined;
|
|
39
|
+
const name = stat.slice(open + 1, close);
|
|
40
|
+
const rest = stat.slice(close + 2).split(" ");
|
|
41
|
+
const ppid = Number.parseInt(rest[1] ?? "", 10);
|
|
42
|
+
return Number.isFinite(ppid) ? { name, ppid } : undefined;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The same lookup for platforms without `/proc`, via one `ps` call.
|
|
50
|
+
*
|
|
51
|
+
* @param pid - The process to inspect.
|
|
52
|
+
* @returns Its command name and parent pid, or undefined.
|
|
53
|
+
* @note Impure — spawns `ps`.
|
|
54
|
+
*/
|
|
55
|
+
function psEntry(pid) {
|
|
56
|
+
try {
|
|
57
|
+
const out = execFileSync("ps", ["-o", "ppid=,comm=", "-p", String(pid)], {
|
|
58
|
+
encoding: "utf8",
|
|
59
|
+
timeout: 2000,
|
|
60
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
61
|
+
}).trim();
|
|
62
|
+
const match = /^(\d+)\s+(.*)$/.exec(out);
|
|
63
|
+
if (match === null)
|
|
64
|
+
return undefined;
|
|
65
|
+
return { name: match[2] ?? "", ppid: Number.parseInt(match[1] ?? "", 10) };
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** Normalize a process name to a shell id: `-zsh`, `/bin/bash`, `zsh` all map. */
|
|
72
|
+
function asShell(name) {
|
|
73
|
+
const base = (name.split("/").pop() ?? "").replace(/^-/, "");
|
|
74
|
+
return SHELL_MAP[base];
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Walk the process ancestry looking for the shell this invocation is running
|
|
78
|
+
* inside.
|
|
79
|
+
*
|
|
80
|
+
* The walk matters: a CLI reached through `npm run`, `bunx`, or a wrapper
|
|
81
|
+
* script has `node` or `sh` as its immediate parent, and the user's actual
|
|
82
|
+
* shell is a level or two further up.
|
|
83
|
+
*
|
|
84
|
+
* @returns The shell found, or undefined.
|
|
85
|
+
* @note Impure — reads the process table.
|
|
86
|
+
*/
|
|
87
|
+
function runningShell(read) {
|
|
88
|
+
const entryOf = read ?? (existsSync("/proc") ? procEntry : psEntry);
|
|
89
|
+
let pid = process.ppid;
|
|
90
|
+
for (let step = 0; step < MAX_ANCESTRY && pid > 1; step += 1) {
|
|
91
|
+
const entry = entryOf(pid);
|
|
92
|
+
if (entry === undefined)
|
|
93
|
+
return undefined;
|
|
94
|
+
const shell = asShell(entry.name);
|
|
95
|
+
if (shell !== undefined)
|
|
96
|
+
return shell;
|
|
97
|
+
pid = entry.ppid;
|
|
98
|
+
}
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Detect the shell the user is actually running in.
|
|
103
|
+
*
|
|
104
|
+
* This reads the PROCESS TREE, not `$SHELL`. `$SHELL` is the login shell
|
|
105
|
+
* recorded in `/etc/passwd`; it is not changed by starting a different shell,
|
|
106
|
+
* so a user whose account says `bash` but who lives in `zsh` was silently
|
|
107
|
+
* given a bash script — and `doctor` then reported `✓ Shell completions: bash
|
|
108
|
+
* up to date and resolving`, a green check for a shell they never open, while
|
|
109
|
+
* the shell they do use had nothing.
|
|
110
|
+
*
|
|
111
|
+
* `$SHELL` survives only as a CONTRADICTION detector. When the process tree
|
|
112
|
+
* gives no answer (a CI runner, an editor task, a daemon), a `$SHELL` value is
|
|
113
|
+
* a guess about a session that may not exist, so the answer is `ambiguous` and
|
|
114
|
+
* the caller is expected to say so rather than pick.
|
|
115
|
+
*
|
|
116
|
+
* @param read - Injected process-table reader; defaults to the real one.
|
|
117
|
+
* @returns What could be established about the running shell.
|
|
118
|
+
* @note Impure — reads the process table and `$SHELL`.
|
|
119
|
+
*/
|
|
120
|
+
export function detectShell(read) {
|
|
121
|
+
const running = runningShell(read);
|
|
122
|
+
if (running !== undefined)
|
|
123
|
+
return { kind: "detected", shell: running };
|
|
124
|
+
const login = SHELL_MAP[(process.env.SHELL ?? "").split("/").pop() ?? ""];
|
|
125
|
+
return login === undefined
|
|
126
|
+
? { kind: "unknown" }
|
|
127
|
+
: { kind: "ambiguous", login };
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* The standard install path for a shell's completion script.
|
|
131
|
+
*
|
|
132
|
+
* The BASENAME is {@link BIN_NAME}, never a literal, because `emitScripts`
|
|
133
|
+
* derives the script's own `#compdef` / `complete -F` / `complete -c` from that
|
|
134
|
+
* same name, and for two of the three shells the basename decides whether the
|
|
135
|
+
* file is ever loaded. Measured against real shells with the distribution
|
|
136
|
+
* renamed to `widget9`:
|
|
137
|
+
*
|
|
138
|
+
* - **fish** autoloads `completions/<cmd>.fish` BY NAME. A correct `widget9`
|
|
139
|
+
* script in a file called `pragma.fish` is never loaded — TAB silently falls
|
|
140
|
+
* back to filenames. Verified: renaming that one file is the entire
|
|
141
|
+
* difference between candidates and no candidates.
|
|
142
|
+
* - **bash-completion** looks up `completions/<cmd>` by the command name the
|
|
143
|
+
* same way. Verified against bash-completion 2.11's `__load_completion`:
|
|
144
|
+
* with the file named `widget9`, `complete -p widget9` reports
|
|
145
|
+
* `complete -F _widget9 widget9`; with the identical file named `pragma`,
|
|
146
|
+
* `_widget9` is never defined and bash falls back to `_minimal`.
|
|
147
|
+
* - **zsh** does NOT work that way: `compinit` binds by the `#compdef` tag
|
|
148
|
+
* inside the file, so `~/.zfunc/_pragma` holding `#compdef widget9` does
|
|
149
|
+
* complete `widget9` (verified — `_comps[widget9]` resolves to `_pragma`).
|
|
150
|
+
* The basename still matters, for a different reason: it names the function
|
|
151
|
+
* zsh autoloads, and two distributions both writing `_pragma` would silently
|
|
152
|
+
* overwrite each other's completions.
|
|
153
|
+
*
|
|
154
|
+
* Either way `setup completions` and `doctor` report success, so nothing else
|
|
155
|
+
* would tell the user.
|
|
156
|
+
*
|
|
157
|
+
* @param shell - The target shell.
|
|
158
|
+
* @returns The absolute path the completion script is written to.
|
|
159
|
+
* @note Impure — reads the home directory.
|
|
160
|
+
*/
|
|
161
|
+
export function completionScriptPath(shell) {
|
|
162
|
+
const home = homedir();
|
|
163
|
+
switch (shell) {
|
|
164
|
+
case "zsh":
|
|
165
|
+
return join(home, ".zfunc", `_${BIN_NAME}`);
|
|
166
|
+
case "bash":
|
|
167
|
+
return join(home, ".local", "share", "bash-completion", "completions", BIN_NAME);
|
|
168
|
+
case "fish":
|
|
169
|
+
return join(home, ".config", "fish", "completions", `${BIN_NAME}.fish`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* The post-install activation hint for a shell.
|
|
174
|
+
*
|
|
175
|
+
* bash and fish install into directories their completion systems auto-load, so
|
|
176
|
+
* the only step left is a fresh shell. zsh's `~/.zfunc` is NOT auto-loaded: the
|
|
177
|
+
* script never loads unless `~/.zfunc` is on `$fpath` BEFORE `compinit` runs —
|
|
178
|
+
* the single trap every zsh user hits, so we spell out the exact `.zshrc` lines.
|
|
179
|
+
*
|
|
180
|
+
* @param shell - The shell the script was installed for.
|
|
181
|
+
* @returns A one-or-more-line activation instruction.
|
|
182
|
+
*/
|
|
183
|
+
export function activationHint(shell) {
|
|
184
|
+
switch (shell) {
|
|
185
|
+
case "zsh":
|
|
186
|
+
return ("To activate, ensure ~/.zfunc is on your fpath BEFORE compinit. Add to ~/.zshrc:\n" +
|
|
187
|
+
" fpath=(~/.zfunc $fpath)\n" +
|
|
188
|
+
" autoload -Uz compinit && compinit\n" +
|
|
189
|
+
"Then restart your shell (or run `exec zsh`).");
|
|
190
|
+
case "bash":
|
|
191
|
+
return "To activate, restart your shell (bash-completion auto-loads the script).";
|
|
192
|
+
case "fish":
|
|
193
|
+
return "To activate, restart your shell (fish auto-loads the script).";
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../../src/capabilities/setup/shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE target table — the one list `setup` and `doctor` both read.
|
|
3
|
+
*
|
|
4
|
+
* Five rows, each with a band column. This table drives the `setup <target>`
|
|
5
|
+
* sub-verbs, the wizard's choices, the `--dry-run` plan, the progress lines, the
|
|
6
|
+
* recap, the doctor rows, and each doctor row's `fix:` line. Adding a sixth
|
|
7
|
+
* target is one row here — not a new sub-verb, a new check, a new recap branch
|
|
8
|
+
* and a new fix string that four separate files have to agree about.
|
|
9
|
+
*
|
|
10
|
+
* A row owns: its identity (`id` is BOTH the sub-verb argument and the doctor
|
|
11
|
+
* row name, so `mcp` and `setup mcp` visibly share a token), which bands it can
|
|
12
|
+
* be installed into, how to DETECT its current state, how to PLAN a run from
|
|
13
|
+
* that detection, and how to COMPOSE the forward and removal effects. Detection
|
|
14
|
+
* runs once per invocation and feeds every reader, so setup and doctor cannot
|
|
15
|
+
* disagree about what they looked at.
|
|
16
|
+
*
|
|
17
|
+
* What a row does NOT own is diagnosis. `doctor/runChecks.ts` maps a row's
|
|
18
|
+
* detection onto a check result itself: the completions check needs helpers that
|
|
19
|
+
* live under `doctor/`, and importing them here would make the two directories
|
|
20
|
+
* import each other. The bijection is unaffected — doctor enumerates THIS table
|
|
21
|
+
* and derives every row name and `fix:` line from it.
|
|
22
|
+
*
|
|
23
|
+
* This module is reached only through the verb's lazy dynamic import (and
|
|
24
|
+
* doctor's), so nothing here lands on the `--help`/`__complete` fast path.
|
|
25
|
+
*/
|
|
26
|
+
import { BIN_NAME } from "../../constants.js";
|
|
27
|
+
import { composeCompletions, composeCompletionsRemoval, detectCompletions, } from "./operations/setupCompletions.js";
|
|
28
|
+
import { composeConfigFile, composeConfigRemoval, detectConfigFile, } from "./operations/setupConfig.js";
|
|
29
|
+
import { composeLsp, composeLspRemoval, detectLsp, LSP_SKIP_REMEDY, lspEditorNames, lspSkipReason, lspUninstallRemedy, } from "./operations/setupLsp.js";
|
|
30
|
+
import { composeMcp, composeMcpRemoval, detectMcp, mcpGroupState, ownedMcpGroups, selectedGroups, } from "./operations/setupMcp.js";
|
|
31
|
+
import { composeSkills, composeSkillsRemoval, detectSkills, ownedSkillLinks, skillsSkipReason, } from "./operations/setupSkills.js";
|
|
32
|
+
import { shortenPath, } from "./plan.js";
|
|
33
|
+
/** Erase a row's detection type so the five rows can share one array. */
|
|
34
|
+
const defineTarget = (target) => target;
|
|
35
|
+
// =============================================================================
|
|
36
|
+
// The rows
|
|
37
|
+
// =============================================================================
|
|
38
|
+
const configTarget = defineTarget({
|
|
39
|
+
id: "config",
|
|
40
|
+
title: "Global configuration",
|
|
41
|
+
bands: ["global"],
|
|
42
|
+
detect: () => detectConfigFile(),
|
|
43
|
+
plan: (d, _band, roots) => {
|
|
44
|
+
const path = shortenPath(d.path, roots);
|
|
45
|
+
if (!d.exists)
|
|
46
|
+
return { action: "install", detail: path };
|
|
47
|
+
return { action: "none", detail: `${path} — present` };
|
|
48
|
+
},
|
|
49
|
+
removalPlan: (d, _band, roots) => {
|
|
50
|
+
const path = shortenPath(d.path, roots);
|
|
51
|
+
if (!d.exists)
|
|
52
|
+
return { action: "none", detail: `${path} — absent` };
|
|
53
|
+
if (!d.isSeed) {
|
|
54
|
+
return {
|
|
55
|
+
action: "skip",
|
|
56
|
+
detail: path,
|
|
57
|
+
reason: "kept — it holds your settings",
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
return { action: "remove", detail: path };
|
|
61
|
+
},
|
|
62
|
+
compose: (d) => composeConfigFile(d),
|
|
63
|
+
composeRemoval: (d) => composeConfigRemoval(d),
|
|
64
|
+
});
|
|
65
|
+
const completionsTarget = defineTarget({
|
|
66
|
+
id: "completions",
|
|
67
|
+
title: "Shell completions",
|
|
68
|
+
bands: ["global"],
|
|
69
|
+
detect: (rt) => detectCompletions(rt.cwd),
|
|
70
|
+
plan: (d, _band, roots) => {
|
|
71
|
+
// Never guess a shell. Installing for the wrong one is invisible until the
|
|
72
|
+
// user presses TAB and nothing happens, so an unresolved shell is a named
|
|
73
|
+
// skip whose remedy is the one action that DOES settle it.
|
|
74
|
+
if (d.detection.kind === "ambiguous") {
|
|
75
|
+
return {
|
|
76
|
+
action: "skip",
|
|
77
|
+
detail: "the running shell cannot be identified",
|
|
78
|
+
reason: `the running shell cannot be identified — SHELL names ${d.detection.login}, which is the login shell, not necessarily the one in use`,
|
|
79
|
+
remedy: `run \`${BIN_NAME} setup completions\` from the shell you want completions in`,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
if (d.detection.kind === "unknown" || d.shell === null || d.path === null) {
|
|
83
|
+
return {
|
|
84
|
+
action: "skip",
|
|
85
|
+
detail: "no supported shell detected",
|
|
86
|
+
reason: "no bash, zsh, or fish was found in this process tree",
|
|
87
|
+
remedy: `run \`${BIN_NAME} setup completions\` from bash, zsh, or fish`,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
// The script spawns the binary for every name context. Installing one that
|
|
91
|
+
// cannot reach it writes a file that silently does nothing.
|
|
92
|
+
if (!d.binOnPath) {
|
|
93
|
+
return {
|
|
94
|
+
action: "skip",
|
|
95
|
+
detail: `${BIN_NAME} is not on PATH`,
|
|
96
|
+
reason: `the completion script runs \`${BIN_NAME}\`, which this shell cannot find on PATH`,
|
|
97
|
+
remedy: `put \`${BIN_NAME}\` on your PATH, then run this again`,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
const where = `${d.shell} → ${shortenPath(d.path, roots)}`;
|
|
101
|
+
if (d.state === "installed")
|
|
102
|
+
return { action: "none", detail: where };
|
|
103
|
+
return {
|
|
104
|
+
action: d.state === "stale" ? "update" : "install",
|
|
105
|
+
detail: where,
|
|
106
|
+
};
|
|
107
|
+
},
|
|
108
|
+
removalPlan: (d, _band, roots) => {
|
|
109
|
+
if (d.path === null || d.state === "absent") {
|
|
110
|
+
return { action: "none", detail: "no script installed" };
|
|
111
|
+
}
|
|
112
|
+
return { action: "remove", detail: shortenPath(d.path, roots) };
|
|
113
|
+
},
|
|
114
|
+
compose: (d) => composeCompletions(d),
|
|
115
|
+
composeRemoval: (d) => composeCompletionsRemoval(d),
|
|
116
|
+
});
|
|
117
|
+
const lspTarget = defineTarget({
|
|
118
|
+
id: "lsp",
|
|
119
|
+
title: "Terrazzo LSP extension",
|
|
120
|
+
bands: ["global"],
|
|
121
|
+
detect: (rt) => detectLsp(rt.cwd),
|
|
122
|
+
plan: (d) => {
|
|
123
|
+
if (d.state === "unknown") {
|
|
124
|
+
return {
|
|
125
|
+
action: "skip",
|
|
126
|
+
detail: lspSkipReason(d),
|
|
127
|
+
reason: lspSkipReason(d),
|
|
128
|
+
remedy: LSP_SKIP_REMEDY,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
// One child per detected editor, exactly like the mcp row's files: a
|
|
132
|
+
// machine with several VS Code forks on PATH should not have the extension
|
|
133
|
+
// pushed into all of them because they happen to be installed.
|
|
134
|
+
const children = d.editors.map((e) => ({
|
|
135
|
+
key: e.editor.cli,
|
|
136
|
+
label: `${e.editor.cli} — ${e.editor.name}`,
|
|
137
|
+
action: e.installed ? "unchanged" : "add",
|
|
138
|
+
}));
|
|
139
|
+
if (d.state === "installed") {
|
|
140
|
+
return {
|
|
141
|
+
action: "none",
|
|
142
|
+
detail: `installed (${lspEditorNames(d).join(", ")})`,
|
|
143
|
+
children,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
const pending = d.editors.filter((e) => !e.installed);
|
|
147
|
+
return {
|
|
148
|
+
action: "install",
|
|
149
|
+
detail: `${pending.length} ${pending.length === 1 ? "editor" : "editors"}`,
|
|
150
|
+
children,
|
|
151
|
+
};
|
|
152
|
+
},
|
|
153
|
+
removalPlan: (d) => ({
|
|
154
|
+
action: "skip",
|
|
155
|
+
detail: "not removed",
|
|
156
|
+
reason: "an extension install cannot be reversed from here",
|
|
157
|
+
remedy: lspUninstallRemedy(d) ??
|
|
158
|
+
"no editor CLI is on PATH — uninstall it from your editor",
|
|
159
|
+
}),
|
|
160
|
+
compose: (d, chosen) => composeLsp(d, chosen),
|
|
161
|
+
composeRemoval: (d) => composeLspRemoval(d),
|
|
162
|
+
});
|
|
163
|
+
/** One MCP file as a plan child: its path, the harnesses sharing it, its state. */
|
|
164
|
+
const mcpChild = (d, group, roots) => {
|
|
165
|
+
const state = mcpGroupState(d, group.path);
|
|
166
|
+
return {
|
|
167
|
+
key: group.path,
|
|
168
|
+
label: shortenPath(group.path, roots),
|
|
169
|
+
action: state === "configured"
|
|
170
|
+
? "unchanged"
|
|
171
|
+
: state === "drifted"
|
|
172
|
+
? "update"
|
|
173
|
+
: "add",
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
const mcpTarget = defineTarget({
|
|
177
|
+
id: "mcp",
|
|
178
|
+
title: "MCP server registration",
|
|
179
|
+
bands: ["global", "project"],
|
|
180
|
+
detect: (rt, band) => detectMcp(rt, band),
|
|
181
|
+
plan: (d, band, roots) => {
|
|
182
|
+
if (d.groups.length === 0) {
|
|
183
|
+
return {
|
|
184
|
+
action: "skip",
|
|
185
|
+
detail: "no harness config location in this band",
|
|
186
|
+
reason: band === "project"
|
|
187
|
+
? "no AI harness in this project writes a per-repository config"
|
|
188
|
+
: "no detected AI harness declares a user-level config location",
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
const children = d.groups.map((group) => mcpChild(d, group, roots));
|
|
192
|
+
const pending = children.filter((c) => c.action !== "unchanged");
|
|
193
|
+
return {
|
|
194
|
+
action: pending.length === 0 ? "none" : "update",
|
|
195
|
+
detail: `${d.groups.length} ${d.groups.length === 1 ? "file" : "files"}`,
|
|
196
|
+
children,
|
|
197
|
+
};
|
|
198
|
+
},
|
|
199
|
+
removalPlan: (d, _band, roots) => {
|
|
200
|
+
const owned = ownedMcpGroups(d);
|
|
201
|
+
if (owned.length === 0) {
|
|
202
|
+
return { action: "none", detail: "no entry to remove" };
|
|
203
|
+
}
|
|
204
|
+
return {
|
|
205
|
+
action: "remove",
|
|
206
|
+
detail: `${owned.length} ${owned.length === 1 ? "file" : "files"}`,
|
|
207
|
+
children: owned.map((group) => ({
|
|
208
|
+
key: group.path,
|
|
209
|
+
label: shortenPath(group.path, roots),
|
|
210
|
+
action: "update",
|
|
211
|
+
})),
|
|
212
|
+
};
|
|
213
|
+
},
|
|
214
|
+
compose: (d, chosen) => composeMcp(d, chosen ? selectedGroups(d, chosen) : d.groups),
|
|
215
|
+
composeRemoval: (d) => composeMcpRemoval(d),
|
|
216
|
+
});
|
|
217
|
+
const skillsTarget = defineTarget({
|
|
218
|
+
id: "skills",
|
|
219
|
+
title: "Skill symlinks",
|
|
220
|
+
bands: ["global", "project"],
|
|
221
|
+
detect: (rt, band) => detectSkills(rt, band),
|
|
222
|
+
plan: (d, band, roots) => {
|
|
223
|
+
if (!d.available) {
|
|
224
|
+
const reason = skillsSkipReason(shortenPath(d.sourceRoot, roots), band);
|
|
225
|
+
return { action: "skip", detail: reason, reason };
|
|
226
|
+
}
|
|
227
|
+
const dirs = d.targets.map((t) => shortenPath(t.dir, roots)).join(", ");
|
|
228
|
+
const where = `${d.skillCount} ${d.skillCount === 1 ? "skill" : "skills"} → ${d.targets.length} ${d.targets.length === 1 ? "dir" : "dirs"} (${dirs})`;
|
|
229
|
+
const pending = d.actions.filter((a) => a.action !== "skipped");
|
|
230
|
+
return { action: pending.length === 0 ? "none" : "link", detail: where };
|
|
231
|
+
},
|
|
232
|
+
removalPlan: (d, _band, roots) => {
|
|
233
|
+
const owned = ownedSkillLinks(d);
|
|
234
|
+
if (owned.length === 0) {
|
|
235
|
+
return { action: "none", detail: "no link to remove" };
|
|
236
|
+
}
|
|
237
|
+
const dirs = [...new Set(owned.map((a) => shortenPath(a.linkPath, roots)))];
|
|
238
|
+
return {
|
|
239
|
+
action: "remove",
|
|
240
|
+
detail: `${owned.length} ${owned.length === 1 ? "link" : "links"}`,
|
|
241
|
+
children: dirs.map((dir) => ({
|
|
242
|
+
key: dir,
|
|
243
|
+
label: dir,
|
|
244
|
+
action: "update",
|
|
245
|
+
})),
|
|
246
|
+
};
|
|
247
|
+
},
|
|
248
|
+
compose: (d) => composeSkills(d),
|
|
249
|
+
composeRemoval: (d) => composeSkillsRemoval(d),
|
|
250
|
+
});
|
|
251
|
+
/** THE table, in display order. */
|
|
252
|
+
export const TARGETS = [
|
|
253
|
+
configTarget,
|
|
254
|
+
completionsTarget,
|
|
255
|
+
lspTarget,
|
|
256
|
+
mcpTarget,
|
|
257
|
+
skillsTarget,
|
|
258
|
+
];
|
|
259
|
+
/** Look a row up by id. */
|
|
260
|
+
export const findTarget = (id) => TARGETS.find((target) => target.id === id);
|
|
261
|
+
/** Whether a target can be installed into a band. */
|
|
262
|
+
export const supportsBand = (target, band) => target.bands.includes(band);
|
|
263
|
+
//# sourceMappingURL=targets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"targets.js","sourceRoot":"","sources":["../../../../src/capabilities/setup/targets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/capabilities/setup/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guard an `exec`-composing Task against a silently-swallowed nonzero exit.
|
|
3
|
+
*
|
|
4
|
+
* The `@canonical/task` interpreter RESOLVES the `exec` effect on a nonzero exit
|
|
5
|
+
* code — it only REJECTS on a spawn error (e.g. ENOENT). A consumer that yields
|
|
6
|
+
* `exec` and ignores `ExecResult.exitCode` therefore reports a failed command
|
|
7
|
+
* (the common case being an EACCES-denied global `npm i -g`) as a silent
|
|
8
|
+
* success, discarding the subprocess's own stderr. Every `exec` consumer in
|
|
9
|
+
* `next/src` (`upgrade`, `setup lsp`) calls this immediately after its `exec`
|
|
10
|
+
* yield, so a failed subprocess surfaces as UNSUPPORTED (exit 1) carrying the
|
|
11
|
+
* command and the captured stderr instead of being reported as done.
|
|
12
|
+
*
|
|
13
|
+
* A denied `npm i -g` (EACCES), a registry/network failure, or any other
|
|
14
|
+
* nonzero exit is a fixable ENVIRONMENT condition — NOT a pragma bug — so it is
|
|
15
|
+
* classified UNSUPPORTED with an actionable recovery, never INTERNAL_ERROR's
|
|
16
|
+
* "report this issue". (A spawn error like ENOENT REJECTS the effect
|
|
17
|
+
* instead of resolving, so it never reaches here.)
|
|
18
|
+
*/
|
|
19
|
+
import { fail, pure, recover, } from "@canonical/task";
|
|
20
|
+
import { PragmaError } from "../../kernel/error/index.js";
|
|
21
|
+
/**
|
|
22
|
+
* Route a {@link PragmaError} through the Task FAILURE CHANNEL (a `Fail` node
|
|
23
|
+
* carrying the error as `cause`) instead of a synchronous throw.
|
|
24
|
+
*
|
|
25
|
+
* The distinction is load-bearing: a synchronous throw from a bind/recover
|
|
26
|
+
* continuation ESCAPES the interpreter's trampoline entirely — no enclosing
|
|
27
|
+
* `recover` can see it — whereas a `Fail` node unwinds to the nearest recovery
|
|
28
|
+
* frame. Setup's run-all isolates each step with `recover` so one failed step
|
|
29
|
+
* cannot abort the rest (S1-1); that only works if step failures travel the
|
|
30
|
+
* failure channel. The boundary (`asPragmaError`) unwraps the carried cause,
|
|
31
|
+
* so a failure that escapes un-recovered still renders with its own code,
|
|
32
|
+
* message, and recovery — never the INTERNAL_ERROR catch-all.
|
|
33
|
+
*/
|
|
34
|
+
export function failPragma(error) {
|
|
35
|
+
return fail({ code: error.code, message: error.message, cause: error });
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The failure-channel sibling of {@link assertExecOk}: yield `pure(undefined)`
|
|
39
|
+
* on exit 0, otherwise fail with an UNSUPPORTED {@link PragmaError} carrying
|
|
40
|
+
* the command, exit code, trimmed stderr, and the CALLER'S recovery — the
|
|
41
|
+
* recovery must name an action that works on this machine now, not the generic
|
|
42
|
+
* "permissions or network" guess.
|
|
43
|
+
*
|
|
44
|
+
* @param command - Human-readable command, surfaced in the error message.
|
|
45
|
+
* @param result - The {@link ExecResult} the `exec` effect yielded.
|
|
46
|
+
* @param recovery - The actionable, site-specific recovery.
|
|
47
|
+
* @returns A Task that succeeds on exit 0 and fails (recoverably) otherwise.
|
|
48
|
+
*/
|
|
49
|
+
export function checkExecOk(command, result, recovery) {
|
|
50
|
+
if (result.exitCode === 0)
|
|
51
|
+
return pure(undefined);
|
|
52
|
+
const stderr = result.stderr.trim();
|
|
53
|
+
return failPragma(new PragmaError({
|
|
54
|
+
code: "UNSUPPORTED",
|
|
55
|
+
message: `\`${command}\` exited with code ${result.exitCode}.${stderr ? `\n${stderr}` : ""}`,
|
|
56
|
+
recovery,
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Raise UNSUPPORTED when an `exec` result carries a nonzero exit code.
|
|
61
|
+
*
|
|
62
|
+
* @param command - Human-readable command, surfaced in the error message.
|
|
63
|
+
* @param result - The {@link ExecResult} the `exec` effect yielded.
|
|
64
|
+
* @throws PragmaError UNSUPPORTED (exit 1) when `result.exitCode !== 0`,
|
|
65
|
+
* including the trimmed stderr when the subprocess emitted any, plus an
|
|
66
|
+
* actionable recovery (a permissions/network failure the user can retry).
|
|
67
|
+
*/
|
|
68
|
+
export function assertExecOk(command, result) {
|
|
69
|
+
if (result.exitCode === 0)
|
|
70
|
+
return;
|
|
71
|
+
const stderr = result.stderr.trim();
|
|
72
|
+
throw new PragmaError({
|
|
73
|
+
code: "UNSUPPORTED",
|
|
74
|
+
message: `\`${command}\` exited with code ${result.exitCode}.${stderr ? `\n${stderr}` : ""}`,
|
|
75
|
+
recovery: {
|
|
76
|
+
message: "Check the command's output above; a global install may need elevated privileges.",
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* True when a rejected/normalised `exec` error is a missing-binary spawn failure.
|
|
82
|
+
*
|
|
83
|
+
* A spawn `ENOENT` (the command is absent from PATH) REJECTS the `exec` effect —
|
|
84
|
+
* unlike a nonzero exit, which RESOLVES it (see {@link assertExecOk}). The task
|
|
85
|
+
* interpreter normalises that reject into a `FILE_NOT_FOUND` TaskError carrying
|
|
86
|
+
* the raw spawn error as `.cause`, so this unwraps one level to recognise both
|
|
87
|
+
* the raw and normalised shapes.
|
|
88
|
+
*
|
|
89
|
+
* @param error - The thrown/rejected value (raw spawn error or its TaskError).
|
|
90
|
+
* @returns Whether it denotes a binary missing from PATH.
|
|
91
|
+
*/
|
|
92
|
+
export function isMissingBinaryError(error) {
|
|
93
|
+
const codeOf = (value) => value && typeof value === "object" && "code" in value
|
|
94
|
+
? value.code
|
|
95
|
+
: undefined;
|
|
96
|
+
if (codeOf(error) === "ENOENT")
|
|
97
|
+
return true;
|
|
98
|
+
const cause = error?.cause;
|
|
99
|
+
return codeOf(cause) === "ENOENT";
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Wrap an `exec`-composing Task so a missing-binary spawn (ENOENT) surfaces as a
|
|
103
|
+
* named UNSUPPORTED "`<bin>` not found on PATH" error with actionable recovery,
|
|
104
|
+
* rather than the interpreter's raw reject collapsing to INTERNAL_ERROR ("please
|
|
105
|
+
* report this issue") at the CLI/MCP boundary. Every spawn site that may hit an
|
|
106
|
+
* absent binary (`upgrade`'s package manager, `setup lsp`'s `bunx`) wraps its
|
|
107
|
+
* Task with this so they never reach the catch-all.
|
|
108
|
+
*
|
|
109
|
+
* Only real execution can trip it: a dry-run/plan mocks `exec` (exit 0, no
|
|
110
|
+
* spawn), so the guard is transparent to the preview. A nonzero exit RESOLVES
|
|
111
|
+
* the effect and is still {@link assertExecOk}'s job (its throw is a synchronous
|
|
112
|
+
* generator-body throw, not an effect failure, so it bypasses this handler); any
|
|
113
|
+
* other effect failure re-raises unchanged.
|
|
114
|
+
*
|
|
115
|
+
* @param bin - The binary name surfaced in the error message.
|
|
116
|
+
* @param recovery - The install/PATH recovery hint.
|
|
117
|
+
* @param task - The Task whose `exec` effect may reject with ENOENT.
|
|
118
|
+
* @returns The Task, guarded against a missing-binary spawn.
|
|
119
|
+
*/
|
|
120
|
+
export function guardMissingBinary(bin, recovery, task) {
|
|
121
|
+
return recover(task, (error) => {
|
|
122
|
+
if (isMissingBinaryError(error)) {
|
|
123
|
+
// Failure CHANNEL, not a synchronous throw: an enclosing recover (the
|
|
124
|
+
// run-all's per-step isolation, S1-1) must be able to catch this, and
|
|
125
|
+
// the boundary unwraps the carried PragmaError when nothing does.
|
|
126
|
+
return failPragma(new PragmaError({
|
|
127
|
+
code: "UNSUPPORTED",
|
|
128
|
+
message: `\`${bin}\` was not found on your PATH.`,
|
|
129
|
+
recovery,
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
132
|
+
// Not a missing binary — re-raise unchanged (the interpreter rethrows it as
|
|
133
|
+
// a TaskExecutionError, exactly as it would with no guard installed).
|
|
134
|
+
return fail(error);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=assertExecOk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertExecOk.js","sourceRoot":"","sources":["../../../../src/capabilities/shared/assertExecOk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAEL,IAAI,EACJ,IAAI,EACJ,OAAO,GAER,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAC,KAAkB;IAC3C,OAAO,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CACzB,OAAe,EACf,MAAkB,EAClB,QAAkB;IAElB,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACpC,OAAO,UAAU,CACf,IAAI,WAAW,CAAC;QACd,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,KAAK,OAAO,uBAAuB,MAAM,CAAC,QAAQ,IACzD,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAC3B,EAAE;QACF,QAAQ;KACT,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,MAAkB;IAC9D,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACpC,MAAM,IAAI,WAAW,CAAC;QACpB,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,KAAK,OAAO,uBAAuB,MAAM,CAAC,QAAQ,IACzD,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAC3B,EAAE;QACF,QAAQ,EAAE;YACR,OAAO,EACL,kFAAkF;SACrF;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,MAAM,MAAM,GAAG,CAAC,KAAc,EAAW,EAAE,CACzC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK;QACnD,CAAC,CAAE,KAA2B,CAAC,IAAI;QACnC,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,KAAK,GAAI,KAAgD,EAAE,KAAK,CAAC;IACvE,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC;AACpC,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,kBAAkB,CAChC,GAAW,EACX,QAAkB,EAClB,IAAa;IAEb,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;QAC7B,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,sEAAsE;YACtE,sEAAsE;YACtE,kEAAkE;YAClE,OAAO,UAAU,CACf,IAAI,WAAW,CAAC;gBACd,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,KAAK,GAAG,gCAAgC;gBACjD,QAAQ;aACT,CAAC,CACH,CAAC;QACJ,CAAC;QACD,4EAA4E;QAC5E,sEAAsE;QACtE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User-facing labels for the two config bands, shared by the setup recap
|
|
3
|
+
* ({@link ../setup/setup.render}) and the doctor report
|
|
4
|
+
* ({@link ../doctor/doctor.render}) so ONE consistent vocabulary appears across
|
|
5
|
+
* both. The pair matches the CLI grammar users already meet elsewhere: the
|
|
6
|
+
* `--global`/`--local` flags, the `--scope project|global|both` enum, config
|
|
7
|
+
* show's `[global]`/`[project]` origin markers, and the `setup` manifest's
|
|
8
|
+
* `[global]`/`[project]` lines. (Earlier these two surfaces said MACHINE/PROJECT
|
|
9
|
+
* — a third term for the same bands; this is the single source that unifies it.)
|
|
10
|
+
*/
|
|
11
|
+
/** The user-facing display label for each of the two config bands. */
|
|
12
|
+
export const BAND_LABELS = {
|
|
13
|
+
global: "Global",
|
|
14
|
+
project: "Project",
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=bands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bands.js","sourceRoot":"","sources":["../../../../src/capabilities/shared/bands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,sEAAsE;AACtE,MAAM,CAAC,MAAM,WAAW,GAAyC;IAC/D,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;CACnB,CAAC"}
|