@canonical/pragma-cli 0.34.0 → 0.36.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/bundled-skills/add-standard/SKILL.md +338 -0
- package/bundled-skills/adoption-a1-styles/SKILL.md +269 -0
- package/bundled-skills/adoption-a2-components/SKILL.md +291 -0
- package/bundled-skills/adoption-a3-forms/SKILL.md +260 -0
- package/bundled-skills/anatomy-author/ANATOMY_DSL_SPEC.md +406 -0
- package/bundled-skills/anatomy-author/SKILL.md +1226 -0
- package/bundled-skills/design-auditor/SKILL.md +455 -0
- package/bundled-skills/implement-component/SKILL.md +333 -0
- package/bundled-skills/specify-component/SKILL.md +331 -0
- package/bundled-skills/specify-pattern/SKILL.md +292 -0
- package/dist/.build-ok +0 -0
- package/dist/package.json +84 -0
- package/dist/pragma.conf.js +1016 -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 +294 -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 +148 -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/harnessInventory.js +195 -0
- package/dist/src/capabilities/doctor/checks/harnessInventory.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 +349 -0
- package/dist/src/capabilities/doctor/checks/targetHealth.js.map +1 -0
- package/dist/src/capabilities/doctor/doctor.render.js +164 -0
- package/dist/src/capabilities/doctor/doctor.render.js.map +1 -0
- package/dist/src/capabilities/doctor/doctor.verb.js +49 -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 +86 -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 +72 -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 +57 -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 +172 -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 +390 -0
- package/dist/src/capabilities/setup/operations/setupGenerator.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupLsp.js +329 -0
- package/dist/src/capabilities/setup/operations/setupLsp.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupMcp.js +253 -0
- package/dist/src/capabilities/setup/operations/setupMcp.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupSkills.js +594 -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 +271 -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 +387 -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 +328 -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/index.js +27 -0
- package/dist/src/capabilities/shared/index.js.map +1 -0
- package/dist/src/capabilities/shared/packageManager.js +349 -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 +281 -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 +309 -0
- package/dist/src/capabilities/sources/installSkills.js.map +1 -0
- package/dist/src/capabilities/sources/runUpdate.js +460 -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 +135 -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 +52 -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 +87 -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 +34 -0
- package/dist/src/kernel/index.js.map +1 -0
- package/dist/src/kernel/interactivity.js +68 -0
- package/dist/src/kernel/interactivity.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 +274 -0
- package/dist/src/kernel/packs/resolveEntity.js.map +1 -0
- package/dist/src/kernel/packs/runBodies.js +140 -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 +421 -0
- package/dist/src/kernel/packs/schema.js.map +1 -0
- package/dist/src/kernel/packs/sparql/applyFilters.js +167 -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 +480 -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 +219 -0
- package/dist/src/kernel/project/cli/globalFlags.js.map +1 -0
- package/dist/src/kernel/project/cli/helpFormat.js +58 -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 +227 -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 +315 -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 +105 -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/vocabulary.js +174 -0
- package/dist/src/kernel/render/vocabulary.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 +22 -23
- package/pragma.conf.ts +486 -90
- package/src/bin.ts +274 -82
- package/src/capabilities/block.parity.test.ts +29 -12
- package/src/capabilities/block.shipped.exec.test.ts +282 -0
- package/src/capabilities/block.tierRank.exec.test.ts +300 -0
- 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 +24 -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.parity.test.ts +4 -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 +75 -8
- package/src/capabilities/doctor/checks/checkPragmaVersion.ts +2 -2
- package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +76 -29
- package/src/capabilities/doctor/checks/checkShellCompletions.ts +63 -17
- package/src/capabilities/doctor/checks/harnessInventory.test.ts +219 -0
- package/src/capabilities/doctor/checks/harnessInventory.ts +298 -0
- 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 +444 -0
- package/src/capabilities/doctor/doctor.render.test.ts +125 -38
- package/src/capabilities/doctor/doctor.render.ts +74 -74
- package/src/capabilities/doctor/doctor.test.ts +338 -37
- package/src/capabilities/doctor/doctor.verb.ts +8 -3
- package/src/capabilities/doctor/runChecks.ts +65 -63
- package/src/capabilities/doctor/types.ts +22 -15
- package/src/capabilities/emptyRecovery.test.ts +21 -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 +13 -5
- package/src/capabilities/info/info.render.ts +7 -3
- package/src/capabilities/info/info.test.ts +37 -1
- package/src/capabilities/info/info.verb.ts +1 -1
- package/src/capabilities/info/types.ts +10 -2
- 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/renderVocabularySync.test.ts +82 -0
- package/src/capabilities/resources/provider.ts +342 -85
- package/src/capabilities/resources/resources.test.ts +355 -59
- package/src/capabilities/scopeTypeSync.test.ts +29 -15
- package/src/capabilities/setup/buildPlan.ts +240 -0
- package/src/capabilities/setup/index.ts +7 -7
- package/src/capabilities/setup/mode.ts +74 -0
- package/src/capabilities/setup/operations/index.ts +79 -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 +478 -334
- package/src/capabilities/setup/operations/setupLsp.ts +420 -67
- package/src/capabilities/setup/operations/setupMcp.ts +238 -127
- package/src/capabilities/setup/operations/setupSkills.ts +667 -105
- package/src/capabilities/setup/plan.render.ts +336 -0
- package/src/capabilities/setup/plan.ts +241 -0
- package/src/capabilities/setup/setup.mcp.correctness.test.ts +432 -0
- package/src/capabilities/setup/setup.render.test.ts +297 -75
- package/src/capabilities/setup/setup.render.ts +45 -77
- package/src/capabilities/setup/setup.test.ts +1819 -225
- package/src/capabilities/setup/setup.verb.ts +288 -78
- package/src/capabilities/setup/shell.test.ts +86 -0
- package/src/capabilities/setup/shell.ts +137 -11
- package/src/capabilities/setup/targets.ts +435 -0
- package/src/capabilities/setup/types.ts +23 -70
- package/src/capabilities/shared/assertExecOk.ts +68 -10
- package/src/capabilities/shared/index.ts +43 -0
- package/src/capabilities/shared/packageManager.test.ts +470 -0
- package/src/capabilities/shared/packageManager.ts +425 -34
- package/src/capabilities/skill/bundledSkills.test.ts +347 -0
- package/src/capabilities/skill/discover.ts +131 -10
- package/src/capabilities/skill/index.ts +1 -1
- package/src/capabilities/skill/render.ts +10 -9
- package/src/capabilities/skill/skill.test.ts +22 -7
- 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 +265 -10
- package/src/capabilities/sources/runUpdate.ts +131 -23
- package/src/capabilities/sources/sources.test.ts +382 -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 +4 -4
- package/src/capabilities/surface.test.ts +136 -19
- package/src/capabilities/upgrade/runUpgrade.ts +53 -14
- package/src/capabilities/upgrade/types.ts +10 -2
- package/src/capabilities/upgrade/upgrade.render.ts +13 -7
- package/src/capabilities/upgrade/upgrade.test.ts +75 -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 +36 -1
- package/src/identity.test.ts +57 -29
- 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 +16 -3
- 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 +50 -35
- 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 +27 -3
- 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 +35 -0
- package/src/kernel/interactivity.test.ts +76 -0
- package/src/kernel/interactivity.ts +69 -0
- package/src/kernel/packs/collect.ts +12 -16
- package/src/kernel/packs/compile.test.ts +222 -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 +25 -6
- package/src/kernel/packs/resolveEntity.test.ts +274 -0
- package/src/kernel/packs/resolveEntity.ts +200 -42
- package/src/kernel/packs/runBodies.ts +86 -22
- package/src/kernel/packs/sample.ts +1 -1
- package/src/kernel/packs/schema.ts +78 -5
- package/src/kernel/packs/sparql/applyFilters.ts +136 -16
- package/src/kernel/packs/sparql/buildLookupQuery.test.ts +290 -0
- package/src/kernel/packs/sparql/buildLookupQuery.ts +367 -17
- 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 +77 -4
- package/src/kernel/packs/types.ts +136 -0
- package/src/kernel/packs/uniqueness.ts +1 -1
- package/src/kernel/project/cli/buildProgram.test.ts +218 -12
- package/src/kernel/project/cli/buildProgram.ts +84 -18
- package/src/kernel/project/cli/constants.ts +34 -0
- package/src/kernel/project/cli/dispatch.test.ts +160 -2
- package/src/kernel/project/cli/dispatch.ts +226 -45
- 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 +134 -31
- package/src/kernel/project/cli/helpFormat.ts +14 -2
- package/src/kernel/project/cli/rootHelp.ts +74 -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 +55 -10
- 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 +59 -6
- package/src/kernel/render/turtle.ts +222 -0
- package/src/kernel/render/vocabulary.ts +276 -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 +277 -4
- package/src/testing/PARITY_GAPS.ts +9 -3
- package/src/testing/behavioral/docExamples.test.ts +16 -0
- package/src/testing/behavioral/errorMatrix.mcp.test.ts +112 -9
- 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.firstInstall.test.ts +7 -2
- 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 +10 -7
- 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/__snapshots__/eval.test.ts.snap +26 -1
- package/src/testing/eval/cases/effectful.ts +3 -2
- package/src/testing/eval/cases/readNouns.ts +245 -9
- package/src/testing/fixtures/blockGraph.ts +104 -10
- package/src/testing/fixtures/graph/canonical.ts +182 -13
- 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/capabilities/shared/bands.ts +0 -16
- package/src/kernel/config/__snapshots__/firstRun.test.ts.snap +0 -11
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE target table — the one list `setup` and `doctor` both read.
|
|
3
|
+
*
|
|
4
|
+
* Five rows, each with a scope 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 scopes 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, ownedLspEditors, } from "./operations/setupLsp.js";
|
|
30
|
+
import { composeMcp, composeMcpRemoval, detectMcp, mcpGroupState, ownedMcpGroups, selectedGroups, } from "./operations/setupMcp.js";
|
|
31
|
+
import { composeSkills, composeSkillsRemoval, detectSkills, ownedSkillLinks, skillsSkipReason, skillsSkipRemedy, staleSkillLinks, } 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
|
+
scopes: ["global"],
|
|
42
|
+
detect: () => detectConfigFile(),
|
|
43
|
+
plan: (d, _scope, 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, _scope, 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: `it holds your own settings, so ${path} stays`,
|
|
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
|
+
scopes: ["global"],
|
|
69
|
+
detect: (rt) => detectCompletions(rt.cwd),
|
|
70
|
+
plan: (d, _scope, 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
|
+
// A no-op row says what it FOUND, not just where it looked: `no change`
|
|
102
|
+
// beside a bare path leaves the reader to guess whether the script is
|
|
103
|
+
// there and current or missing and unreachable.
|
|
104
|
+
if (d.state === "installed") {
|
|
105
|
+
return { action: "none", detail: `${where} — already up to date` };
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
action: d.state === "stale" ? "update" : "install",
|
|
109
|
+
detail: where,
|
|
110
|
+
};
|
|
111
|
+
},
|
|
112
|
+
removalPlan: (d, _scope, roots) => {
|
|
113
|
+
if (d.path === null || d.state === "absent") {
|
|
114
|
+
return { action: "none", detail: "no script installed" };
|
|
115
|
+
}
|
|
116
|
+
return { action: "remove", detail: shortenPath(d.path, roots) };
|
|
117
|
+
},
|
|
118
|
+
compose: (d) => composeCompletions(d),
|
|
119
|
+
composeRemoval: (d) => composeCompletionsRemoval(d),
|
|
120
|
+
});
|
|
121
|
+
const lspTarget = defineTarget({
|
|
122
|
+
id: "lsp",
|
|
123
|
+
title: "Terrazzo LSP extension",
|
|
124
|
+
scopes: ["global"],
|
|
125
|
+
detect: (rt) => detectLsp(rt.cwd),
|
|
126
|
+
plan: (d) => {
|
|
127
|
+
if (d.state === "unknown") {
|
|
128
|
+
return {
|
|
129
|
+
action: "skip",
|
|
130
|
+
detail: lspSkipReason(d),
|
|
131
|
+
reason: lspSkipReason(d),
|
|
132
|
+
remedy: LSP_SKIP_REMEDY,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
// One child per detected editor, exactly like the mcp row's files: a
|
|
136
|
+
// machine with several VS Code forks on PATH should not have the extension
|
|
137
|
+
// pushed into all of them because they happen to be installed.
|
|
138
|
+
const children = d.editors.map((e) => ({
|
|
139
|
+
key: e.editor.cli,
|
|
140
|
+
label: `${e.editor.cli} — ${e.editor.name}`,
|
|
141
|
+
action: e.installed ? "unchanged" : "add",
|
|
142
|
+
}));
|
|
143
|
+
// The detail names WHAT is being placed and WHERE — never the row's own
|
|
144
|
+
// state, which the action column already carries. `installed (VSCodium)`
|
|
145
|
+
// beside a child row reading `codium — VSCodium (unchanged)` said the
|
|
146
|
+
// editor's name twice and "nothing happens here" twice.
|
|
147
|
+
if (d.state === "installed") {
|
|
148
|
+
return {
|
|
149
|
+
action: "none",
|
|
150
|
+
detail: `Terrazzo extension in ${lspEditorNames(d).join(", ")}`,
|
|
151
|
+
children,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
const pending = d.editors.filter((e) => !e.installed);
|
|
155
|
+
return {
|
|
156
|
+
action: "install",
|
|
157
|
+
detail: `Terrazzo extension → ${pending
|
|
158
|
+
.map((e) => e.editor.name)
|
|
159
|
+
.join(", ")}`,
|
|
160
|
+
children,
|
|
161
|
+
};
|
|
162
|
+
},
|
|
163
|
+
removalPlan: (d) => {
|
|
164
|
+
// No editor CLI on PATH is the SAME named skip the forward plan reports:
|
|
165
|
+
// there is nothing on this machine to run an uninstall with.
|
|
166
|
+
if (d.state === "unknown") {
|
|
167
|
+
return {
|
|
168
|
+
action: "skip",
|
|
169
|
+
detail: lspSkipReason(d),
|
|
170
|
+
reason: lspSkipReason(d),
|
|
171
|
+
remedy: LSP_SKIP_REMEDY,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
// Removal is composed from what detection says we OWN — a copy that is
|
|
175
|
+
// present, whatever its version. The forward plan's version gate would let
|
|
176
|
+
// a dead pre-0.8.3 copy this command installed survive its own `--undo`.
|
|
177
|
+
const owned = ownedLspEditors(d);
|
|
178
|
+
if (owned.length === 0) {
|
|
179
|
+
return { action: "none", detail: "no editor carries the extension" };
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
action: "remove",
|
|
183
|
+
detail: `Terrazzo extension from ${owned
|
|
184
|
+
.map((e) => e.editor.name)
|
|
185
|
+
.join(", ")}`,
|
|
186
|
+
children: owned.map((e) => ({
|
|
187
|
+
key: e.editor.cli,
|
|
188
|
+
label: `${e.editor.cli} — ${e.editor.name}`,
|
|
189
|
+
action: "update",
|
|
190
|
+
})),
|
|
191
|
+
};
|
|
192
|
+
},
|
|
193
|
+
compose: (d, chosen) => composeLsp(d, chosen),
|
|
194
|
+
composeRemoval: (d) => composeLspRemoval(d),
|
|
195
|
+
});
|
|
196
|
+
/**
|
|
197
|
+
* Why the `mcp` row has nothing to write in a scope — authored once, because
|
|
198
|
+
* `setup`'s row and `doctor`'s row are the same finding and must not word it
|
|
199
|
+
* differently. Neither sentence says "scope": the two scopes are `global` and
|
|
200
|
+
* `local project`, after the `--global` / `--local` flags that select them.
|
|
201
|
+
*/
|
|
202
|
+
export const MCP_NO_LOCATION = {
|
|
203
|
+
global: "no AI harness on this machine keeps a global config",
|
|
204
|
+
project: "no AI harness in this project keeps a per-project config",
|
|
205
|
+
};
|
|
206
|
+
/** One MCP file as a plan child: its path, the harnesses sharing it, its state. */
|
|
207
|
+
const mcpChild = (d, group, roots) => {
|
|
208
|
+
const state = mcpGroupState(d, group.path);
|
|
209
|
+
return {
|
|
210
|
+
key: group.path,
|
|
211
|
+
label: shortenPath(group.path, roots),
|
|
212
|
+
action: state === "registered"
|
|
213
|
+
? "unchanged"
|
|
214
|
+
: state === "drifted"
|
|
215
|
+
? "update"
|
|
216
|
+
: "add",
|
|
217
|
+
};
|
|
218
|
+
};
|
|
219
|
+
const mcpTarget = defineTarget({
|
|
220
|
+
id: "mcp",
|
|
221
|
+
title: "MCP server registration",
|
|
222
|
+
scopes: ["global", "project"],
|
|
223
|
+
detect: (rt, scope) => detectMcp(rt, scope),
|
|
224
|
+
plan: (d, scope, roots) => {
|
|
225
|
+
if (d.groups.length === 0) {
|
|
226
|
+
return {
|
|
227
|
+
action: "skip",
|
|
228
|
+
detail: MCP_NO_LOCATION[scope],
|
|
229
|
+
reason: MCP_NO_LOCATION[scope],
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
const children = d.groups.map((group) => mcpChild(d, group, roots));
|
|
233
|
+
const pending = children.filter((c) => c.action !== "unchanged");
|
|
234
|
+
return {
|
|
235
|
+
action: pending.length === 0 ? "none" : "update",
|
|
236
|
+
detail: `${d.groups.length} ${d.groups.length === 1 ? "config file" : "config files"}`,
|
|
237
|
+
children,
|
|
238
|
+
};
|
|
239
|
+
},
|
|
240
|
+
removalPlan: (d, _scope, roots) => {
|
|
241
|
+
const owned = ownedMcpGroups(d);
|
|
242
|
+
if (owned.length === 0) {
|
|
243
|
+
return { action: "none", detail: "no entry to remove" };
|
|
244
|
+
}
|
|
245
|
+
return {
|
|
246
|
+
action: "remove",
|
|
247
|
+
detail: `${owned.length} ${owned.length === 1 ? "config file" : "config files"}`,
|
|
248
|
+
children: owned.map((group) => ({
|
|
249
|
+
key: group.path,
|
|
250
|
+
label: shortenPath(group.path, roots),
|
|
251
|
+
action: "update",
|
|
252
|
+
})),
|
|
253
|
+
};
|
|
254
|
+
},
|
|
255
|
+
compose: (d, chosen) => composeMcp(d, chosen ? selectedGroups(d, chosen) : d.groups),
|
|
256
|
+
composeRemoval: (d) => composeMcpRemoval(d),
|
|
257
|
+
});
|
|
258
|
+
const skillsTarget = defineTarget({
|
|
259
|
+
id: "skills",
|
|
260
|
+
title: "Skill symlinks",
|
|
261
|
+
scopes: ["global", "project"],
|
|
262
|
+
detect: (rt, scope) => detectSkills(rt, scope),
|
|
263
|
+
plan: (d, scope, roots) => {
|
|
264
|
+
// A forward run RECONCILES: stale links this scope owns are its work too, so
|
|
265
|
+
// an orphan-only tree is actionable rather than a row that plans `none` and
|
|
266
|
+
// is then deselected into doing nothing. `staleSkillLinks` carries the
|
|
267
|
+
// absent-root safety gate, so a machine whose source root does not exist
|
|
268
|
+
// contributes no sweep and the row falls back to the honest skip.
|
|
269
|
+
const stale = staleSkillLinks(d);
|
|
270
|
+
if (!d.available && stale.length === 0) {
|
|
271
|
+
const short = shortenPath(d.sourceRoot, roots);
|
|
272
|
+
const reason = skillsSkipReason(short, scope, d.rootExists);
|
|
273
|
+
// A skip with no remedy is a dead end — this one names the command that
|
|
274
|
+
// fills the scope's source root, exactly as the completions and lsp skips
|
|
275
|
+
// beside it name theirs.
|
|
276
|
+
return {
|
|
277
|
+
action: "skip",
|
|
278
|
+
detail: reason,
|
|
279
|
+
reason,
|
|
280
|
+
remedy: skillsSkipRemedy(short, scope),
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
const dirs = d.targets.map((t) => shortenPath(t.dir, roots)).join(", ");
|
|
284
|
+
const where = `${d.skillCount} ${d.skillCount === 1 ? "skill" : "skills"} → ${d.targets.length} ${d.targets.length === 1 ? "folder" : "folders"} (${dirs})`;
|
|
285
|
+
const detail = stale.length === 0
|
|
286
|
+
? where
|
|
287
|
+
: `${where}, ${stale.length} stale ${stale.length === 1 ? "link" : "links"} to remove`;
|
|
288
|
+
const pending = d.actions.filter((a) => a.action !== "skipped");
|
|
289
|
+
if (pending.length > 0)
|
|
290
|
+
return { action: "link", detail };
|
|
291
|
+
// Nothing to link, but something to retire: `update` is the table's word
|
|
292
|
+
// for "this row has work that is not a fresh install".
|
|
293
|
+
if (stale.length > 0)
|
|
294
|
+
return { action: "update", detail };
|
|
295
|
+
return { action: "none", detail };
|
|
296
|
+
},
|
|
297
|
+
removalPlan: (d, _scope, roots) => {
|
|
298
|
+
const owned = ownedSkillLinks(d);
|
|
299
|
+
if (owned.length === 0) {
|
|
300
|
+
return { action: "none", detail: "no link to remove" };
|
|
301
|
+
}
|
|
302
|
+
const dirs = [...new Set(owned.map((a) => shortenPath(a.linkPath, roots)))];
|
|
303
|
+
return {
|
|
304
|
+
action: "remove",
|
|
305
|
+
detail: `${owned.length} ${owned.length === 1 ? "link" : "links"}`,
|
|
306
|
+
children: dirs.map((dir) => ({
|
|
307
|
+
key: dir,
|
|
308
|
+
label: dir,
|
|
309
|
+
action: "update",
|
|
310
|
+
})),
|
|
311
|
+
};
|
|
312
|
+
},
|
|
313
|
+
compose: (d) => composeSkills(d),
|
|
314
|
+
composeRemoval: (d) => composeSkillsRemoval(d),
|
|
315
|
+
});
|
|
316
|
+
/** THE table, in display order. */
|
|
317
|
+
export const TARGETS = [
|
|
318
|
+
configTarget,
|
|
319
|
+
completionsTarget,
|
|
320
|
+
lspTarget,
|
|
321
|
+
mcpTarget,
|
|
322
|
+
skillsTarget,
|
|
323
|
+
];
|
|
324
|
+
/** Look a row up by id. */
|
|
325
|
+
export const findTarget = (id) => TARGETS.find((target) => target.id === id);
|
|
326
|
+
/** Whether a target can be installed into a scope. */
|
|
327
|
+
export const supportsScope = (target, scope) => target.scopes.includes(scope);
|
|
328
|
+
//# 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,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The cross-capability shared surface — the few facts more than one capability
|
|
3
|
+
* needs and none of them owns.
|
|
4
|
+
*
|
|
5
|
+
* Everything here earned its place by being needed in two capabilities at
|
|
6
|
+
* once, and the cohesion principle is that shortness of the list. `shared/` is
|
|
7
|
+
* not a utility drawer: a helper used by exactly one capability belongs in
|
|
8
|
+
* that capability, and the moment something here has a single consumer again
|
|
9
|
+
* it should move back. What survives is the environment the CLI reports on but
|
|
10
|
+
* does not own — how it was installed, what the registry says about it,
|
|
11
|
+
* whether a subprocess it ran actually succeeded. (The scope labels that keep
|
|
12
|
+
* `setup` and `doctor` calling the two config scopes by the same names used
|
|
13
|
+
* to live here too; they are part of the rendering vocabulary now —
|
|
14
|
+
* `kernel/render/vocabulary.ts` — beside the statuses and glyphs they are
|
|
15
|
+
* printed with.)
|
|
16
|
+
*
|
|
17
|
+
* The exec guard is exported as the pair a caller needs together: `checkExecOk`
|
|
18
|
+
* to classify a result inside a Task and `assertExecOk` to throw on one
|
|
19
|
+
* outside, with `guardMissingBinary` wrapping the absent-binary case that
|
|
20
|
+
* neither should report as a pragma bug. The predicates they are built from
|
|
21
|
+
* stay internal — a caller reaching for the predicate instead of the guard is
|
|
22
|
+
* a caller about to reimplement the classification.
|
|
23
|
+
*/
|
|
24
|
+
export { assertExecOk, checkExecOk, guardMissingBinary, } from "./assertExecOk.js";
|
|
25
|
+
export { detectInstallSource, pmUpdateCommand, updateGuidance, } from "./packageManager.js";
|
|
26
|
+
export { checkRegistryVersion, PRAGMA_PACKAGE } from "./registry.js";
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/capabilities/shared/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EACL,YAAY,EACZ,WAAW,EACX,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|