@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
|
@@ -58,7 +58,13 @@ export const TOOL_HINTS: Record<string, ToolHint> = {
|
|
|
58
58
|
},
|
|
59
59
|
colophon: {
|
|
60
60
|
category: "read",
|
|
61
|
-
use_when:
|
|
61
|
+
use_when:
|
|
62
|
+
"Understanding how the active domain is built — its declared colophon, for onboarding or a demo",
|
|
63
|
+
},
|
|
64
|
+
config_get: {
|
|
65
|
+
category: "read",
|
|
66
|
+
use_when:
|
|
67
|
+
"Reading ONE config field's effective value and the layer it came from — the single-value form of config_show",
|
|
62
68
|
},
|
|
63
69
|
config_show: {
|
|
64
70
|
category: "read",
|
|
@@ -99,11 +105,6 @@ export const TOOL_HINTS: Record<string, ToolHint> = {
|
|
|
99
105
|
use_when:
|
|
100
106
|
"Exploring the full schema of a namespace by name — classes, properties, and hierarchy",
|
|
101
107
|
},
|
|
102
|
-
ontology_show: {
|
|
103
|
-
category: "read",
|
|
104
|
-
use_when:
|
|
105
|
-
"Deprecated alias of ontology_lookup — exploring a namespace's schema (prefer ontology_lookup)",
|
|
106
|
-
},
|
|
107
108
|
prompt_list: {
|
|
108
109
|
category: "read",
|
|
109
110
|
use_when: "Browsing the workflow prompt templates the active graph offers",
|
|
@@ -115,7 +116,7 @@ export const TOOL_HINTS: Record<string, ToolHint> = {
|
|
|
115
116
|
},
|
|
116
117
|
skill_list: {
|
|
117
118
|
category: "read",
|
|
118
|
-
use_when: "Discovering agent skills provided by installed
|
|
119
|
+
use_when: "Discovering agent skills provided by installed packs",
|
|
119
120
|
},
|
|
120
121
|
skill_lookup: {
|
|
121
122
|
category: "read",
|
|
@@ -141,6 +142,25 @@ export const TOOL_HINTS: Record<string, ToolHint> = {
|
|
|
141
142
|
category: "read",
|
|
142
143
|
use_when: "Discovering which standard categories exist before filtering",
|
|
143
144
|
},
|
|
145
|
+
concept_list: {
|
|
146
|
+
category: "read",
|
|
147
|
+
use_when:
|
|
148
|
+
"Browsing long-form design-system concepts (foundations, how-to guides, decision guides)",
|
|
149
|
+
},
|
|
150
|
+
concept_lookup: {
|
|
151
|
+
category: "read",
|
|
152
|
+
use_when: "Reading a concept's full Markdown documentation by name or IRI",
|
|
153
|
+
},
|
|
154
|
+
implementation_list: {
|
|
155
|
+
category: "read",
|
|
156
|
+
use_when:
|
|
157
|
+
"Finding which library implements a block, on which platform, and where its source lives",
|
|
158
|
+
},
|
|
159
|
+
implementation_libraries: {
|
|
160
|
+
category: "read",
|
|
161
|
+
use_when:
|
|
162
|
+
"Discovering which implementation libraries exist, and how much of the design system each covers",
|
|
163
|
+
},
|
|
144
164
|
standard_sample: {
|
|
145
165
|
category: "read",
|
|
146
166
|
use_when:
|
|
@@ -176,6 +196,11 @@ export const TOOL_HINTS: Record<string, ToolHint> = {
|
|
|
176
196
|
use_when:
|
|
177
197
|
"Setting any config field by name — tier, channel, or detail (e.g. `config set tier apps/lxd`)",
|
|
178
198
|
},
|
|
199
|
+
config_unset: {
|
|
200
|
+
category: "write",
|
|
201
|
+
use_when:
|
|
202
|
+
'Clearing a config field so the built-in default applies again — no value means "remove", this tool does',
|
|
203
|
+
},
|
|
179
204
|
create_component: {
|
|
180
205
|
category: "write",
|
|
181
206
|
use_when: "Scaffolding a new component (React, Svelte, or Lit)",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* that replaces the retired `llm` tool.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type { CapabilityModule } from "../../kernel/spec/
|
|
6
|
+
import type { CapabilityModule } from "../../kernel/spec/index.js";
|
|
7
7
|
import { capabilitiesSelfVerb } from "./capabilities.verb.js";
|
|
8
8
|
|
|
9
9
|
/** The `capabilities` capability module (a single storeless self-verb). */
|
|
@@ -18,42 +18,40 @@
|
|
|
18
18
|
|
|
19
19
|
import { BIN_NAME } from "../../constants.js";
|
|
20
20
|
import distribution from "../../kernel/config/defaults.js";
|
|
21
|
-
import type { PragmaRuntime } from "../../kernel/runtime/
|
|
22
|
-
import type { CapabilityModule } from "../../kernel/spec/
|
|
21
|
+
import type { PragmaRuntime } from "../../kernel/runtime/index.js";
|
|
22
|
+
import type { CapabilityModule } from "../../kernel/spec/index.js";
|
|
23
23
|
import type { ColophonData, ColophonSection } from "./types.js";
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* Assemble the colophon data for the current runtime.
|
|
27
27
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
28
|
+
* THE DOMAIN'S STORY WINS. A colophon answers "what am I working with", and
|
|
29
|
+
* once a domain is configured the answer is the domain — so the domain
|
|
30
|
+
* sections are the whole output, and the toolchain's own section does not
|
|
31
|
+
* ride in front of them. The toolchain section is the answer only when no
|
|
32
|
+
* domain has one: a fresh install, or a distribution that ships no story.
|
|
33
|
+
* Reading it the other way round put a paragraph about this program's
|
|
34
|
+
* architecture above the thing the user actually asked about, every time.
|
|
35
|
+
*
|
|
36
|
+
* Neither section is authored here. The toolchain half is the distribution
|
|
37
|
+
* config's `colophon` field (narrative plus condensed summary), rendered under
|
|
38
|
+
* the distribution's own name — a fork edits its config, never this module —
|
|
39
|
+
* and the domain half is each active pack's declared `colophon`. The
|
|
40
|
+
* `kind: "pragma"` value is a frozen JSON discriminant (wire compatibility),
|
|
41
|
+
* not the distribution's name.
|
|
42
|
+
*
|
|
43
|
+
* With neither declared, the payload is empty and the formatter's empty state
|
|
44
|
+
* says so, rather than the command printing nothing and leaving the reader to
|
|
45
|
+
* guess whether that is an answer or a failure.
|
|
35
46
|
*
|
|
36
47
|
* @param runtime - The per-invocation runtime.
|
|
37
|
-
* @returns The storeless colophon payload:
|
|
38
|
-
*
|
|
48
|
+
* @returns The storeless colophon payload: every active pack/domain that
|
|
49
|
+
* declares a `colophon`, or the distribution's own section when none does.
|
|
39
50
|
* @note Impure — reads the config layers (never boots the store).
|
|
40
51
|
*/
|
|
41
52
|
export async function collectColophon(
|
|
42
53
|
runtime: PragmaRuntime,
|
|
43
54
|
): Promise<ColophonData> {
|
|
44
|
-
const sections: ColophonSection[] = [];
|
|
45
|
-
if (distribution.colophon) {
|
|
46
|
-
sections.push({
|
|
47
|
-
kind: "pragma",
|
|
48
|
-
title: BIN_NAME,
|
|
49
|
-
markdown: distribution.colophon.markdown,
|
|
50
|
-
...(distribution.colophon.summary === undefined
|
|
51
|
-
? {}
|
|
52
|
-
: { summary: distribution.colophon.summary }),
|
|
53
|
-
source: "built-in",
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
|
|
57
55
|
const { loadEffectiveModules } = await import(
|
|
58
56
|
"../../kernel/packs/collect.js"
|
|
59
57
|
);
|
|
@@ -68,6 +66,7 @@ export async function collectColophon(
|
|
|
68
66
|
// story never throws — it is dropped and reported by doctor.)
|
|
69
67
|
}
|
|
70
68
|
|
|
69
|
+
const sections: ColophonSection[] = [];
|
|
71
70
|
for (const module of modules) {
|
|
72
71
|
if (module.colophon) {
|
|
73
72
|
sections.push({
|
|
@@ -79,5 +78,17 @@ export async function collectColophon(
|
|
|
79
78
|
}
|
|
80
79
|
}
|
|
81
80
|
|
|
81
|
+
if (sections.length === 0 && distribution.colophon) {
|
|
82
|
+
sections.push({
|
|
83
|
+
kind: "pragma",
|
|
84
|
+
title: BIN_NAME,
|
|
85
|
+
markdown: distribution.colophon.markdown,
|
|
86
|
+
...(distribution.colophon.summary === undefined
|
|
87
|
+
? {}
|
|
88
|
+
: { summary: distribution.colophon.summary }),
|
|
89
|
+
source: "built-in",
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
|
|
82
93
|
return { sections };
|
|
83
94
|
}
|
|
@@ -7,13 +7,28 @@
|
|
|
7
7
|
* The section title is composed as an H1 (`# <title>`) and fed through the ONE
|
|
8
8
|
* styler, so all heading styling lives in a single place and the authored body
|
|
9
9
|
* (which carries no leading H1) is never double-titled.
|
|
10
|
+
*
|
|
11
|
+
* The formatters render whatever sections the collector hands them and decide
|
|
12
|
+
* nothing about which sections exist — that choice (the domain's story, or the
|
|
13
|
+
* toolchain's when no domain tells one) belongs to the collector, and keeping
|
|
14
|
+
* it there is what lets these stay pure.
|
|
10
15
|
*/
|
|
11
16
|
|
|
17
|
+
import { BIN_NAME } from "../../constants.js";
|
|
12
18
|
import { defaultStyle, type RenderStyle } from "../../kernel/render/style.js";
|
|
13
|
-
import type { Formatters } from "../../kernel/spec/
|
|
19
|
+
import type { Formatters } from "../../kernel/spec/index.js";
|
|
14
20
|
import { renderMarkdownToTerminal } from "./markdownTerminal.js";
|
|
15
21
|
import type { ColophonData, ColophonSection } from "./types.js";
|
|
16
22
|
|
|
23
|
+
/**
|
|
24
|
+
* The zero-section empty state: nothing declares a colophon — no active pack,
|
|
25
|
+
* and no story from the distribution itself. Blank output would read as a
|
|
26
|
+
* broken command, so say what is missing and name the command that fixes it.
|
|
27
|
+
* Like every empty state it goes to stderr with exit 0 (a calm success), so a
|
|
28
|
+
* script reading stdout still reads nothing.
|
|
29
|
+
*/
|
|
30
|
+
const EMPTY_NOTICE = `No colophon declared. A colophon comes from an active pack — build the store with \`${BIN_NAME} sources update\`.`;
|
|
31
|
+
|
|
17
32
|
/** Render one section (title as H1 + body) as styled terminal Markdown. */
|
|
18
33
|
function plainSection(section: ColophonSection, style: RenderStyle): string {
|
|
19
34
|
return renderMarkdownToTerminal(
|
|
@@ -38,10 +53,18 @@ export const colophonFormatters: Formatters<ColophonData> = {
|
|
|
38
53
|
},
|
|
39
54
|
|
|
40
55
|
llm(data) {
|
|
56
|
+
// llm returns before the dispatcher's empty-state routing, so the
|
|
57
|
+
// condensed form carries its own zero-section line (the same shape the
|
|
58
|
+
// other empty states use) rather than handing an agent zero bytes.
|
|
59
|
+
if (data.sections.length === 0) return `_${EMPTY_NOTICE}_`;
|
|
41
60
|
return data.sections.map(llmSection).join("\n\n");
|
|
42
61
|
},
|
|
43
62
|
|
|
44
63
|
json(data) {
|
|
45
64
|
return JSON.stringify(data);
|
|
46
65
|
},
|
|
66
|
+
|
|
67
|
+
// Zero sections: the dispatcher routes this to stderr (exit 0) so plain
|
|
68
|
+
// stdout stays empty; llm/json keep their own empty shapes.
|
|
69
|
+
notice: (data) => (data.sections.length === 0 ? EMPTY_NOTICE : undefined),
|
|
47
70
|
};
|
|
@@ -2,11 +2,14 @@
|
|
|
2
2
|
* `pragma colophon` — the storeless, pack-extensible toolchain colophon (PR10).
|
|
3
3
|
*
|
|
4
4
|
* Pins the covenant-exact emitted slice (`{ v:"colophon", mcp:"colophon" }`),
|
|
5
|
-
* proves the collector is storeless and
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
5
|
+
* proves the collector is storeless and prints the ACTIVE DOMAIN's colophon
|
|
6
|
+
* (the bundled `block` design-system story) with no toolchain section in front
|
|
7
|
+
* of it, pins the empty state for a distribution and packs that declare none,
|
|
8
|
+
* exercises the three formatter modes + `--format` precedence, holds CLI-json
|
|
9
|
+
* ≡ MCP parity, and checks the pack-grammar accepts a `colophon` field
|
|
10
|
+
* (rejecting a non-string). The fallback — the toolchain's own section when no
|
|
11
|
+
* pack tells a story — is pinned where a story-less distribution exists:
|
|
12
|
+
* `identity.test.ts`'s fork.
|
|
10
13
|
*/
|
|
11
14
|
|
|
12
15
|
import { mkdtempSync, readFileSync, rmSync } from "node:fs";
|
|
@@ -116,24 +119,42 @@ describe("colophon — storeless collector (PROTECTED)", () => {
|
|
|
116
119
|
});
|
|
117
120
|
});
|
|
118
121
|
|
|
119
|
-
describe("colophon —
|
|
120
|
-
it("
|
|
121
|
-
const data = await collectColophon(bootRuntime(FLAGS, tmpCwd()));
|
|
122
|
-
const first = data.sections[0];
|
|
123
|
-
expect(first?.kind).toBe("pragma");
|
|
124
|
-
expect(first?.title).toBe("pragma");
|
|
125
|
-
expect(first?.source).toBe("built-in");
|
|
126
|
-
expect(first?.markdown.length).toBeGreaterThan(0);
|
|
127
|
-
expect(first?.summary?.length).toBeGreaterThan(0);
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
it("appends the bundled design-system (block) domain section", async () => {
|
|
122
|
+
describe("colophon — the configured domain's story, and only that", () => {
|
|
123
|
+
it("prints the bundled design-system (block) domain section", async () => {
|
|
131
124
|
const data = await collectColophon(bootRuntime(FLAGS, tmpCwd()));
|
|
132
125
|
const block = data.sections.find((section) => section.title === "block");
|
|
133
126
|
expect(block?.kind).toBe("pack");
|
|
134
127
|
expect(block?.source).toBe("pack:block");
|
|
135
128
|
expect(block?.markdown).toContain("knowledge graph");
|
|
136
129
|
});
|
|
130
|
+
|
|
131
|
+
it("does NOT prepend the toolchain's own section when a domain has one", async () => {
|
|
132
|
+
// A configured reader asked about the domain. The paragraph about how this
|
|
133
|
+
// program is built is not an answer to that, and it used to arrive first.
|
|
134
|
+
const data = await collectColophon(bootRuntime(FLAGS, tmpCwd()));
|
|
135
|
+
// Guard the vacuous pass: `every` over nothing is true, and "no sections"
|
|
136
|
+
// is a different outcome than "only domain sections".
|
|
137
|
+
expect(data.sections.length).toBeGreaterThan(0);
|
|
138
|
+
expect(data.sections.every((section) => section.kind === "pack")).toBe(
|
|
139
|
+
true,
|
|
140
|
+
);
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
it("says so, on stderr, when nothing declares a colophon", () => {
|
|
144
|
+
// The collector can only reach this with neither a pack story nor a
|
|
145
|
+
// distribution one; the formatter is where the state is expressible, so
|
|
146
|
+
// the empty state is pinned here — bare stdout, guidance on stderr.
|
|
147
|
+
const empty: ColophonData = { sections: [] };
|
|
148
|
+
expect(colophonFormatters.plain(empty)).toBe("");
|
|
149
|
+
const notice = colophonFormatters.notice?.(empty);
|
|
150
|
+
expect(notice).toContain("No colophon declared");
|
|
151
|
+
expect(notice).toContain("sources update");
|
|
152
|
+
// llm returns before the dispatcher's stderr routing, so it says the same
|
|
153
|
+
// thing in its own body rather than emitting nothing.
|
|
154
|
+
expect(colophonFormatters.llm(empty)).toContain("No colophon declared");
|
|
155
|
+
// A populated payload has nothing to be calm about.
|
|
156
|
+
expect(colophonFormatters.notice?.(FIXTURE)).toBeUndefined();
|
|
157
|
+
});
|
|
137
158
|
});
|
|
138
159
|
|
|
139
160
|
describe("colophon — formatter modes", () => {
|
|
@@ -167,7 +188,7 @@ describe("colophon — formatter modes", () => {
|
|
|
167
188
|
);
|
|
168
189
|
const envelope = JSON.parse(outcome.stdout as string);
|
|
169
190
|
expect(envelope.ok).toBe(true);
|
|
170
|
-
expect((envelope.data as ColophonData).sections[0]?.kind).toBe("
|
|
191
|
+
expect((envelope.data as ColophonData).sections[0]?.kind).toBe("pack");
|
|
171
192
|
});
|
|
172
193
|
|
|
173
194
|
it("--format llm selects the condensed Markdown form", async () => {
|
|
@@ -177,12 +198,12 @@ describe("colophon — formatter modes", () => {
|
|
|
177
198
|
NO_MUT,
|
|
178
199
|
bootRuntime(FLAGS_LLM, tmpCwd()),
|
|
179
200
|
);
|
|
180
|
-
expect(outcome.stdout).toContain("##
|
|
201
|
+
expect(outcome.stdout).toContain("## block");
|
|
181
202
|
});
|
|
182
203
|
});
|
|
183
204
|
|
|
184
205
|
describe("colophon — MCP parity", () => {
|
|
185
|
-
it("projects a read-only `colophon` tool that returns the
|
|
206
|
+
it("projects a read-only `colophon` tool that returns the domain section", async () => {
|
|
186
207
|
const cwd = tmpCwd();
|
|
187
208
|
const mcp = await projectMcp([colophonModule], cwd);
|
|
188
209
|
const tool = (await mcp.listTools()).find((t) => t.name === "colophon");
|
|
@@ -195,7 +216,7 @@ describe("colophon — MCP parity", () => {
|
|
|
195
216
|
openWorldHint: false,
|
|
196
217
|
});
|
|
197
218
|
expect(envelope.ok).toBe(true);
|
|
198
|
-
expect((envelope.data as ColophonData).sections[0]?.kind).toBe("
|
|
219
|
+
expect((envelope.data as ColophonData).sections[0]?.kind).toBe("pack");
|
|
199
220
|
});
|
|
200
221
|
|
|
201
222
|
it("CLI --format json ≡ MCP colophon (same envelope)", async () => {
|
|
@@ -9,20 +9,20 @@
|
|
|
9
9
|
|
|
10
10
|
import { BIN_NAME } from "../../constants.js";
|
|
11
11
|
import { asVerb } from "../../kernel/spec/asVerb.js";
|
|
12
|
-
import type { CapabilityModule, VerbSpec } from "../../kernel/spec/
|
|
12
|
+
import type { CapabilityModule, VerbSpec } from "../../kernel/spec/index.js";
|
|
13
13
|
import { colophonFormatters } from "./colophon.render.js";
|
|
14
14
|
import type { ColophonData } from "./types.js";
|
|
15
15
|
|
|
16
16
|
const colophonVerb: VerbSpec<Record<string, unknown>, ColophonData> = {
|
|
17
17
|
path: ["colophon"],
|
|
18
|
-
summary:
|
|
19
|
-
doc: `Storeless —
|
|
18
|
+
summary: "Narrate how the active domain is made.",
|
|
19
|
+
doc: `Storeless — the colophon each active pack declares for its domain. With no pack telling a story, it prints the one ${BIN_NAME} declares for itself instead; with neither, it says so. Also available as a condensed Markdown narration for agents, or as a structured JSON projection of the sections.`,
|
|
20
20
|
params: [],
|
|
21
21
|
output: { formatters: colophonFormatters },
|
|
22
22
|
examples: [
|
|
23
23
|
{
|
|
24
24
|
cmd: `${BIN_NAME} colophon`,
|
|
25
|
-
note: "the
|
|
25
|
+
note: "the active domain's story",
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
cmd: `${BIN_NAME} colophon --format llm`,
|
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
* zod) onto the fast path.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { readConfig } from "../../kernel/config/readConfig.js";
|
|
11
10
|
import type {
|
|
12
11
|
PackDeclaration,
|
|
13
12
|
PragmaConfig,
|
|
14
|
-
} from "../../kernel/config/
|
|
15
|
-
import
|
|
13
|
+
} from "../../kernel/config/index.js";
|
|
14
|
+
import { readConfig } from "../../kernel/config/index.js";
|
|
15
|
+
import type { PragmaRuntime } from "../../kernel/runtime/index.js";
|
|
16
16
|
import type { ConfigShowData } from "./types.js";
|
|
17
17
|
|
|
18
18
|
/** A pack declaration with any declared story bodies dropped. */
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Formatters for
|
|
2
|
+
* Formatters for the config writers (`set` and `unset`) — plain, llm, json.
|
|
3
3
|
*
|
|
4
|
-
* One shared formatter
|
|
5
|
-
*
|
|
6
|
-
* field.
|
|
4
|
+
* One shared formatter (the field-table pattern): a set reports the value and
|
|
5
|
+
* the file it landed in; an unset reports the removed field.
|
|
7
6
|
*/
|
|
8
7
|
|
|
9
|
-
import type { Formatters } from "../../kernel/spec/
|
|
8
|
+
import type { Formatters } from "../../kernel/spec/index.js";
|
|
10
9
|
import type { ConfigFieldResult } from "./types.js";
|
|
11
10
|
|
|
12
11
|
export const configFieldFormatters: Formatters<ConfigFieldResult> = {
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* The config field table — one declarative row per writable field. Since AV-228
|
|
3
3
|
* B3 retired the per-field `config tier`/`channel`/`detail` verbs, this table no
|
|
4
4
|
* longer emits verbs of its own: it is the shared source of truth that drives
|
|
5
|
-
* `config set <key> <value>`
|
|
6
|
-
* `<key>` enum,
|
|
5
|
+
* `config set <key> <value>` and `config get`/`config unset` (via `runSet` →
|
|
6
|
+
* `runField`), giving each its `<key>` enum, enum validation, and positional
|
|
7
7
|
* shaping for free.
|
|
8
8
|
*/
|
|
9
9
|
|
|
@@ -21,23 +21,30 @@ export interface ConfigFieldSpec {
|
|
|
21
21
|
readonly kind: "string" | "enum";
|
|
22
22
|
/** The allowed values for an enum field. */
|
|
23
23
|
readonly values?: readonly string[];
|
|
24
|
-
/** Reserved values that REMOVE the field instead of setting it. */
|
|
25
|
-
readonly resetSentinel?: readonly string[];
|
|
26
24
|
}
|
|
27
25
|
|
|
28
26
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
27
|
+
* Values `config set` refuses for a FREE-STRING field: clearing a field is a
|
|
28
|
+
* command (`config unset <key>`), not a magic value — a value spelled `none`
|
|
29
|
+
* conflated "remove the field" with "set it to the string none". They stay
|
|
30
|
+
* reserved (rather than becoming writable) so the strings cannot silently
|
|
31
|
+
* change meaning; the rejection names `unset` as the owner of the job.
|
|
32
|
+
*/
|
|
33
|
+
export const RESERVED_CLEAR_VALUES: readonly string[] = [
|
|
34
|
+
"none",
|
|
35
|
+
"default",
|
|
36
|
+
"-",
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The three writable fields. `channel`/`detail` are fixed enums;
|
|
41
|
+
* `tier` is a free string, cleared with `config unset tier`.
|
|
34
42
|
*/
|
|
35
43
|
export const CONFIG_FIELDS: readonly ConfigFieldSpec[] = [
|
|
36
44
|
{
|
|
37
45
|
field: "tier",
|
|
38
46
|
positional: "path",
|
|
39
47
|
kind: "string",
|
|
40
|
-
resetSentinel: ["none", "default", "-"],
|
|
41
48
|
},
|
|
42
49
|
{
|
|
43
50
|
field: "channel",
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `config get <key>` — read ONE resolved config value, scriptably.
|
|
3
|
+
*
|
|
4
|
+
* `config show` dumps everything with provenance; scripting one value out of
|
|
5
|
+
* it needed `--format json` plus a JSON tool. `get` prints the bare resolved
|
|
6
|
+
* value on stdout (an unset field prints nothing, exit 0), so shell
|
|
7
|
+
* substitution works directly; the json form carries the field, the value,
|
|
8
|
+
* and the layer that supplied it.
|
|
9
|
+
*
|
|
10
|
+
* The plain and llm forms are the SAME bare value, which is the one place in
|
|
11
|
+
* the grammar where those two forms may not differ: `TIER=$(… config get
|
|
12
|
+
* tier)` pipes stdout, and a pipe auto-selects llm, so a decorated llm line
|
|
13
|
+
* would put backticks and a provenance clause into the variable the command
|
|
14
|
+
* exists to fill. Provenance has a home already — `--format json` here, and
|
|
15
|
+
* `config show` for the whole picture.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { BIN_NAME } from "../../constants.js";
|
|
19
|
+
import { asVerb } from "../../kernel/spec/asVerb.js";
|
|
20
|
+
import type { Formatters, VerbSpec } from "../../kernel/spec/index.js";
|
|
21
|
+
import { CONFIG_FIELDS } from "./fields.js";
|
|
22
|
+
import type { ConfigGetData } from "./types.js";
|
|
23
|
+
|
|
24
|
+
/** The readable field names — the `<key>` enum, in covenant order. */
|
|
25
|
+
const CONFIG_KEYS = CONFIG_FIELDS.map((field) => field.field);
|
|
26
|
+
|
|
27
|
+
/** The bare value, or nothing at all when the field is unset. */
|
|
28
|
+
const bareValue = (data: ConfigGetData): string =>
|
|
29
|
+
data.value === undefined ? "" : String(data.value);
|
|
30
|
+
|
|
31
|
+
const configGetFormatters: Formatters<ConfigGetData> = {
|
|
32
|
+
// The bare value IS the contract: `TIER=$(pragma config get tier)`.
|
|
33
|
+
plain: bareValue,
|
|
34
|
+
llm: bareValue,
|
|
35
|
+
json: (data) => JSON.stringify(data),
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const getVerb: VerbSpec<Record<string, unknown>, ConfigGetData> = {
|
|
39
|
+
path: ["config", "get"],
|
|
40
|
+
summary: "Print one resolved config value.",
|
|
41
|
+
doc: "Reads the effective value of a single field after layering — built-in defaults, the global config, and the nearest project config. Prints the bare value (nothing when the field is unset), so the output substitutes directly into a shell.",
|
|
42
|
+
params: [
|
|
43
|
+
{
|
|
44
|
+
kind: "enum",
|
|
45
|
+
name: "key",
|
|
46
|
+
doc: "The config field to read.",
|
|
47
|
+
values: CONFIG_KEYS,
|
|
48
|
+
required: true,
|
|
49
|
+
positional: true,
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
output: { formatters: configGetFormatters },
|
|
53
|
+
examples: [
|
|
54
|
+
{ cmd: `${BIN_NAME} config get tier` },
|
|
55
|
+
{ cmd: `${BIN_NAME} config get channel --format json` },
|
|
56
|
+
],
|
|
57
|
+
capability: {
|
|
58
|
+
needsStore: false,
|
|
59
|
+
mutates: false,
|
|
60
|
+
mcp: {
|
|
61
|
+
expose: true,
|
|
62
|
+
annotations: { readOnlyHint: true, openWorldHint: false },
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
run: (params, runtime) =>
|
|
66
|
+
import("./runGet.js").then((m) => m.runGet(params, runtime)),
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
/** The `config get` verb. */
|
|
70
|
+
export const configGetVerb = asVerb(getVerb);
|