@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
package/src/bin.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
#!/usr/bin/env
|
|
1
|
+
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
3
|
* CLI entry point for `pragma` (v2 kernel).
|
|
4
4
|
*
|
|
5
5
|
* The composition root. Ordered early exits keep the hot paths minimal and
|
|
6
|
-
* side-effect-free: `mcp` serves over stdio (D9); `__complete` resolves
|
|
6
|
+
* side-effect-free: `mcp serve` serves over stdio (D9); `__complete` resolves
|
|
7
7
|
* completions storelessly *before* first-run so the greeting never leaks into a
|
|
8
8
|
* shell buffer; `--version` prints and exits. Otherwise: parse global flags,
|
|
9
9
|
* reject a bad `--format`, run first-run onboarding, then build the Commander
|
|
@@ -14,13 +14,39 @@
|
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
import type { Command } from "commander";
|
|
17
|
-
import {
|
|
17
|
+
import {
|
|
18
|
+
BIN_NAME,
|
|
19
|
+
DETAIL_LEVELS,
|
|
20
|
+
ISSUES_URL,
|
|
21
|
+
PROGRAM_DESCRIPTION,
|
|
22
|
+
VERSION,
|
|
23
|
+
} from "./constants.js";
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The flags a bare invocation answers itself. `--version` returns earlier; the
|
|
27
|
+
* help form falls through to the front door, which IS its answer — so the
|
|
28
|
+
* unknown-flag guard must not mistake it for a typo. One spelling per flag:
|
|
29
|
+
* no `-h`/`-v` shorts exist anywhere on the surface.
|
|
30
|
+
*/
|
|
31
|
+
const ROOT_FLAGS = new Set(["--help", "--version"]);
|
|
18
32
|
|
|
19
33
|
async function main(): Promise<void> {
|
|
20
34
|
const argv = process.argv.slice(2);
|
|
21
35
|
|
|
22
|
-
// 1. MCP server entry (D9) — `pragma mcp` serves over stdio.
|
|
23
|
-
|
|
36
|
+
// 1. MCP server entry (D9) — `pragma mcp serve` serves over stdio.
|
|
37
|
+
// The exit is NARROW on purpose: argv must be EXACTLY those two tokens.
|
|
38
|
+
// The server's startup has to stay minimal and stdio-pure (no first-run
|
|
39
|
+
// banner, no config read, nothing on stdout but JSON-RPC), which is what
|
|
40
|
+
// this shortcut buys — but the noun itself is ordinary grammar, so
|
|
41
|
+
// `pragma mcp`, `pragma mcp --help` and `pragma mcp serve --help` fall
|
|
42
|
+
// through to the same help machinery every other noun uses, and root
|
|
43
|
+
// help's promise that `--help` works on any command becomes true.
|
|
44
|
+
// Matching on a PREFIX would extend that purity budget to malformed argv
|
|
45
|
+
// it was never bought for: `mcp serve extra` would serve instead of
|
|
46
|
+
// letting Commander reject the excess argument, and `mcp serve --version`
|
|
47
|
+
// would serve instead of answering the global flag. Anything suffixed
|
|
48
|
+
// falls through to the ordinary grammar, which owns both jobs.
|
|
49
|
+
if (argv.length === 2 && argv[0] === "mcp" && argv[1] === "serve") {
|
|
24
50
|
const [{ serveMcp }, { capabilities }] = await Promise.all([
|
|
25
51
|
import("./kernel/project/mcp/serve.js"),
|
|
26
52
|
import("./capabilities/index.js"),
|
|
@@ -29,7 +55,8 @@ async function main(): Promise<void> {
|
|
|
29
55
|
return;
|
|
30
56
|
}
|
|
31
57
|
|
|
32
|
-
// 2. Completion resolver — storeless,
|
|
58
|
+
// 2. Completion resolver — storeless, and reached before anything that could
|
|
59
|
+
// print, so a completion request is never polluted by a hint.
|
|
33
60
|
// Protocol: `pragma __complete -- <words…>`; the first `--` is framing
|
|
34
61
|
// (tolerated absent) and is stripped here so a later bare `--` stays the
|
|
35
62
|
// user's end-of-options. Candidates go to stdout newline-delimited (zero
|
|
@@ -60,72 +87,138 @@ async function main(): Promise<void> {
|
|
|
60
87
|
return;
|
|
61
88
|
}
|
|
62
89
|
|
|
63
|
-
const {
|
|
64
|
-
|
|
65
|
-
|
|
90
|
+
const {
|
|
91
|
+
findValuedVerbose,
|
|
92
|
+
parseGlobalFlags,
|
|
93
|
+
readRawDetail,
|
|
94
|
+
readRawFormat,
|
|
95
|
+
stripGlobalFlags,
|
|
96
|
+
} = await import("./kernel/project/cli/globalFlags.js");
|
|
66
97
|
const globalFlags = parseGlobalFlags(argv);
|
|
67
98
|
|
|
68
99
|
// 3. `--version` is global — print and exit wherever it appears.
|
|
69
|
-
if (argv.some((arg) => arg === "--version"
|
|
100
|
+
if (argv.some((arg) => arg === "--version")) {
|
|
70
101
|
process.stdout.write(`${VERSION}\n`);
|
|
71
102
|
return;
|
|
72
103
|
}
|
|
73
104
|
|
|
74
|
-
// 4. Reject
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
) {
|
|
82
|
-
const [
|
|
83
|
-
{ PragmaError },
|
|
84
|
-
{ renderErrorPlain, renderErrorJson },
|
|
85
|
-
{ mapExitCode },
|
|
86
|
-
] = await Promise.all([
|
|
87
|
-
import("./kernel/error/PragmaError.js"),
|
|
88
|
-
import("./kernel/error/renderError.js"),
|
|
89
|
-
import("./kernel/project/cli/exitCodes.js"),
|
|
90
|
-
]);
|
|
91
|
-
const error = PragmaError.invalidInput("format", rawFormat, {
|
|
92
|
-
validOptions: ["plain", "llm", "json"],
|
|
93
|
-
});
|
|
94
|
-
const rendered =
|
|
95
|
-
globalFlags.format === "json"
|
|
96
|
-
? renderErrorJson(error)
|
|
97
|
-
: renderErrorPlain(error);
|
|
98
|
-
process.stderr.write(`${rendered}\n`);
|
|
99
|
-
process.exitCode = mapExitCode(error.code);
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// 5. First-run onboarding (stderr-only, failure-tolerant). Skipped on the
|
|
104
|
-
// side-effect-free help path — `--help` here; `mcp`, `__complete`, and
|
|
105
|
-
// `--version` already returned above — so help never seeds state.
|
|
105
|
+
// 4. Reject a bad global-flag value early (help still prints regardless):
|
|
106
|
+
// an unknown `--format`, an unrecognized `--detail` level (which used to
|
|
107
|
+
// be dropped silently — the same defect class as a filter that
|
|
108
|
+
// evaporates), and a valued `--verbose=<x>` (the flag takes no value;
|
|
109
|
+
// accepting-and-ignoring one would be a silent no-op).
|
|
110
|
+
const explicitHelp = argv.some((arg) => arg === "--help");
|
|
111
|
+
const jsonMode = globalFlags.format === "json";
|
|
106
112
|
if (!explicitHelp) {
|
|
107
|
-
const
|
|
108
|
-
|
|
113
|
+
const rawFormat = readRawFormat(argv);
|
|
114
|
+
if (
|
|
115
|
+
rawFormat !== undefined &&
|
|
116
|
+
!["plain", "llm", "json"].includes(rawFormat)
|
|
117
|
+
) {
|
|
118
|
+
await rejectGlobalValue(
|
|
119
|
+
"format",
|
|
120
|
+
rawFormat,
|
|
121
|
+
["plain", "llm", "json"],
|
|
122
|
+
jsonMode,
|
|
123
|
+
);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const rawDetail = readRawDetail(argv);
|
|
127
|
+
if (
|
|
128
|
+
rawDetail !== undefined &&
|
|
129
|
+
!(DETAIL_LEVELS as readonly string[]).includes(rawDetail)
|
|
130
|
+
) {
|
|
131
|
+
await rejectGlobalValue(
|
|
132
|
+
"detail",
|
|
133
|
+
rawDetail,
|
|
134
|
+
[...DETAIL_LEVELS],
|
|
135
|
+
jsonMode,
|
|
136
|
+
);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const valuedVerbose = findValuedVerbose(argv);
|
|
140
|
+
if (valuedVerbose !== undefined) {
|
|
141
|
+
const { PragmaError } = await import("./kernel/error/PragmaError.js");
|
|
142
|
+
await renderStartupError(
|
|
143
|
+
new PragmaError({
|
|
144
|
+
code: "INVALID_INPUT",
|
|
145
|
+
message: `\`--verbose\` takes no value; \`${valuedVerbose}\` is not a flag of this program.`,
|
|
146
|
+
recovery: { message: "Use `--verbose` on its own." },
|
|
147
|
+
}),
|
|
148
|
+
jsonMode,
|
|
149
|
+
);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
109
152
|
}
|
|
110
153
|
|
|
111
|
-
//
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
154
|
+
// 5. Load the capability registry — the command tree's data. Commander and
|
|
155
|
+
// the program builder are NOT loaded yet: the bare-invocation branch
|
|
156
|
+
// below answers `--help` and the front door from the registry alone, so
|
|
157
|
+
// the help fast path never pays for the parser it will not run.
|
|
158
|
+
const { capabilities } = await import("./capabilities/index.js");
|
|
116
159
|
const args = stripGlobalFlags(argv);
|
|
117
160
|
|
|
118
|
-
//
|
|
161
|
+
// 6. A bare invocation (no command token — argv empty or only global flags)
|
|
119
162
|
// prints the curated front door instead of exiting silently. Uses the
|
|
120
163
|
// static capabilities — the front door never reads config or stories.
|
|
121
164
|
if (!args.some((arg) => !arg.startsWith("-"))) {
|
|
165
|
+
// `args` is argv with the global flags already stripped, so a token still
|
|
166
|
+
// starting with `-` here is a flag this program does not have — EXCEPT the
|
|
167
|
+
// two the front door itself answers, which reach this branch by design.
|
|
168
|
+
// Commander rejects unknown flags below the root; without this the ROOT
|
|
169
|
+
// answered a typo with the front door and exit 0, so `pragma --detial
|
|
170
|
+
// standard` read as success.
|
|
171
|
+
const unknownFlag = args.find(
|
|
172
|
+
(arg) => arg.startsWith("-") && !ROOT_FLAGS.has(arg),
|
|
173
|
+
);
|
|
174
|
+
if (unknownFlag !== undefined) {
|
|
175
|
+
const [
|
|
176
|
+
{ PragmaError },
|
|
177
|
+
{ renderErrorPlain, renderErrorJson },
|
|
178
|
+
{ mapExitCode },
|
|
179
|
+
] = await Promise.all([
|
|
180
|
+
import("./kernel/error/PragmaError.js"),
|
|
181
|
+
import("./kernel/error/renderError.js"),
|
|
182
|
+
import("./kernel/project/cli/exitCodes.js"),
|
|
183
|
+
]);
|
|
184
|
+
const error = new PragmaError({
|
|
185
|
+
code: "INVALID_INPUT",
|
|
186
|
+
message: `Unknown option "${unknownFlag}".`,
|
|
187
|
+
recovery: {
|
|
188
|
+
message: "Run with `--help` to see the available options.",
|
|
189
|
+
},
|
|
190
|
+
});
|
|
191
|
+
process.stderr.write(
|
|
192
|
+
`${
|
|
193
|
+
globalFlags.format === "json"
|
|
194
|
+
? renderErrorJson(error)
|
|
195
|
+
: renderErrorPlain(error)
|
|
196
|
+
}\n`,
|
|
197
|
+
);
|
|
198
|
+
process.exitCode = mapExitCode(error.code);
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
|
|
122
202
|
const { formatRootHelp } = await import("./kernel/project/cli/rootHelp.js");
|
|
123
203
|
const live = capabilities
|
|
124
204
|
.flatMap((module) => [...module.verbs])
|
|
125
205
|
.filter((verb) => !verb.hidden);
|
|
126
206
|
process.stdout.write(
|
|
127
|
-
`${formatRootHelp(
|
|
207
|
+
`${formatRootHelp(
|
|
208
|
+
BIN_NAME,
|
|
209
|
+
PROGRAM_DESCRIPTION,
|
|
210
|
+
live,
|
|
211
|
+
VERSION,
|
|
212
|
+
ISSUES_URL,
|
|
213
|
+
globalFlags,
|
|
214
|
+
)}\n`,
|
|
128
215
|
);
|
|
216
|
+
// The front door is a read, so it is where the un-set-up hint belongs: the
|
|
217
|
+
// machine's state is the presence of the global config, and nothing is
|
|
218
|
+
// written to discover it.
|
|
219
|
+
const { setupHintLines } = await import("./kernel/config/firstRun.js");
|
|
220
|
+
const hint = setupHintLines();
|
|
221
|
+
if (hint.length > 0) process.stderr.write(`\n${hint.join("\n")}\n`);
|
|
129
222
|
return;
|
|
130
223
|
}
|
|
131
224
|
|
|
@@ -143,10 +236,12 @@ async function main(): Promise<void> {
|
|
|
143
236
|
);
|
|
144
237
|
const effective = await loadEffectiveModules(capabilities, process.cwd());
|
|
145
238
|
modules = effective.modules;
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
239
|
+
if (globalFlags.quiet !== true) {
|
|
240
|
+
for (const problem of effective.problems) {
|
|
241
|
+
process.stderr.write(
|
|
242
|
+
`Ignored story ${problem.source}: ${problem.message}\n`,
|
|
243
|
+
);
|
|
244
|
+
}
|
|
150
245
|
}
|
|
151
246
|
} catch (error) {
|
|
152
247
|
await renderStartupError(error, globalFlags.format === "json");
|
|
@@ -155,11 +250,31 @@ async function main(): Promise<void> {
|
|
|
155
250
|
}
|
|
156
251
|
const verbs = modules.flatMap((module) => [...module.verbs]);
|
|
157
252
|
|
|
253
|
+
// Module-owned noun mounts (CapabilityModule.cliProjection), keyed by the
|
|
254
|
+
// module's noun. A module's verbs all share their noun, so the module name
|
|
255
|
+
// is that noun for every module that declares a mount.
|
|
256
|
+
const mounts = new Map(
|
|
257
|
+
modules.flatMap((module) =>
|
|
258
|
+
module.cliProjection
|
|
259
|
+
? [[module.name, module.cliProjection] as const]
|
|
260
|
+
: [],
|
|
261
|
+
),
|
|
262
|
+
);
|
|
263
|
+
|
|
264
|
+
// A mount may defer its registration machinery behind `prepare()` (the
|
|
265
|
+
// fast paths import the projection hook without ever mounting) — resolve
|
|
266
|
+
// every deferred import before the tree is built, alongside the program
|
|
267
|
+
// builder's own deferred load.
|
|
268
|
+
const [{ buildProgram }] = await Promise.all([
|
|
269
|
+
import("./kernel/project/cli/buildProgram.js"),
|
|
270
|
+
...[...mounts.values()].map((projection) => projection.prepare?.()),
|
|
271
|
+
]);
|
|
158
272
|
const program = buildProgram(verbs, {
|
|
159
273
|
globalFlags,
|
|
160
274
|
programName: BIN_NAME,
|
|
161
275
|
description: PROGRAM_DESCRIPTION,
|
|
162
276
|
version: VERSION,
|
|
277
|
+
mounts,
|
|
163
278
|
});
|
|
164
279
|
// Silence Commander's default stderr writer on EVERY command, not just the
|
|
165
280
|
// root — otherwise a bad subcommand/option prints Commander's raw `error: …`
|
|
@@ -169,10 +284,30 @@ async function main(): Promise<void> {
|
|
|
169
284
|
try {
|
|
170
285
|
await program.parseAsync(args, { from: "user" });
|
|
171
286
|
} catch (error) {
|
|
172
|
-
await handleProgramError(error, argv, globalFlags.format
|
|
287
|
+
await handleProgramError(error, argv, globalFlags.format, verbs);
|
|
173
288
|
}
|
|
174
289
|
}
|
|
175
290
|
|
|
291
|
+
/**
|
|
292
|
+
* Reject an invalid global-flag value before dispatch: one renderer for the
|
|
293
|
+
* `--format`/`--detail` guards, so every validated global value flag fails
|
|
294
|
+
* with the same invalid-input shape and its valid list.
|
|
295
|
+
*/
|
|
296
|
+
async function rejectGlobalValue(
|
|
297
|
+
name: string,
|
|
298
|
+
value: string,
|
|
299
|
+
validOptions: readonly string[],
|
|
300
|
+
jsonMode: boolean,
|
|
301
|
+
): Promise<void> {
|
|
302
|
+
const { PragmaError } = await import("./kernel/error/PragmaError.js");
|
|
303
|
+
await renderStartupError(
|
|
304
|
+
PragmaError.invalidInput(name, value, {
|
|
305
|
+
validOptions: [...validOptions],
|
|
306
|
+
}),
|
|
307
|
+
jsonMode,
|
|
308
|
+
);
|
|
309
|
+
}
|
|
310
|
+
|
|
176
311
|
/**
|
|
177
312
|
* Render a startup error (e.g. an invalid config story pack) before the command
|
|
178
313
|
* tree is built, mapping it to stderr + an exit code — the same envelope
|
|
@@ -216,7 +351,7 @@ function silenceCommanderErrors(command: Command): void {
|
|
|
216
351
|
async function handleProgramError(
|
|
217
352
|
error: unknown,
|
|
218
353
|
argv: readonly string[],
|
|
219
|
-
|
|
354
|
+
format: import("./constants.js").OutputFormat,
|
|
220
355
|
verbs: import("./kernel/spec/types.js").VerbSpec[],
|
|
221
356
|
): Promise<void> {
|
|
222
357
|
const { CommanderError } = await import("commander");
|
|
@@ -224,16 +359,66 @@ async function handleProgramError(
|
|
|
224
359
|
if (error instanceof CommanderError) {
|
|
225
360
|
if (
|
|
226
361
|
error.code === "commander.helpDisplayed" ||
|
|
227
|
-
error.code === "commander.version"
|
|
228
|
-
error.code === "commander.help"
|
|
362
|
+
error.code === "commander.version"
|
|
229
363
|
) {
|
|
230
364
|
process.exitCode = 0;
|
|
231
365
|
return;
|
|
232
366
|
}
|
|
233
|
-
if (error.code === "commander.
|
|
234
|
-
|
|
235
|
-
|
|
367
|
+
if (error.code === "commander.help") {
|
|
368
|
+
// Respect the help error's OWN exit code: `help({ error: true })` — a
|
|
369
|
+
// bare namespace with children, help written to stderr — carries 1;
|
|
370
|
+
// a stdout help carries 0.
|
|
371
|
+
process.exitCode = error.exitCode;
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
// A parse failure whose argv still speaks a retired module grammar gets
|
|
376
|
+
// that module's designed migration error (the module authors the text;
|
|
377
|
+
// the kernel only routes). Currently: `create component --framework`
|
|
378
|
+
// (R1) — scoped to the ONE command that ever had the flag, so
|
|
379
|
+
// `create package --framework …` keeps its honest unknown-option error
|
|
380
|
+
// instead of a migration message about a grammar it never spoke — and
|
|
381
|
+
// scoped to the pre-terminator span: after `--` the spelling is an
|
|
382
|
+
// operand, not the retired flag, so the real parse error stands.
|
|
383
|
+
const { selectScanSpan, stripGlobalFlags } = await import(
|
|
384
|
+
"./kernel/project/cli/globalFlags.js"
|
|
385
|
+
);
|
|
386
|
+
const strippedArgs = stripGlobalFlags(argv);
|
|
387
|
+
const strippedPositionals = strippedArgs.filter(
|
|
388
|
+
(arg) => !arg.startsWith("-"),
|
|
389
|
+
);
|
|
390
|
+
if (
|
|
391
|
+
strippedPositionals[0] === "create" &&
|
|
392
|
+
strippedPositionals[1] === "component" &&
|
|
393
|
+
selectScanSpan(strippedArgs).some(
|
|
394
|
+
(arg) => arg === "--framework" || arg.startsWith("--framework="),
|
|
395
|
+
)
|
|
396
|
+
) {
|
|
397
|
+
const [
|
|
398
|
+
{ FRAMEWORK_FLAG_ERROR },
|
|
399
|
+
{ PragmaError },
|
|
400
|
+
{ renderErrorForFormat },
|
|
401
|
+
] = await Promise.all([
|
|
402
|
+
import("./capabilities/create/messages.js"),
|
|
403
|
+
import("./kernel/error/PragmaError.js"),
|
|
404
|
+
import("./kernel/error/renderError.js"),
|
|
405
|
+
]);
|
|
406
|
+
// Explicit --format json/llm envelope (the kernel's one gate+renderer
|
|
407
|
+
// decision); plain keeps the designed raw line.
|
|
408
|
+
const rendered = renderErrorForFormat(
|
|
409
|
+
new PragmaError({
|
|
410
|
+
code: "INVALID_INPUT",
|
|
411
|
+
message: FRAMEWORK_FLAG_ERROR.replace(/^error:\s*/i, ""),
|
|
412
|
+
}),
|
|
413
|
+
format,
|
|
236
414
|
);
|
|
415
|
+
process.stderr.write(`${rendered ?? FRAMEWORK_FLAG_ERROR}\n`);
|
|
416
|
+
process.exitCode = 2;
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
419
|
+
if (error.code === "commander.unknownCommand") {
|
|
420
|
+
const { curatedSuggestions, nounVerbMap, resolveUnknownCommand } =
|
|
421
|
+
await import("./kernel/project/cli/suggest.js");
|
|
237
422
|
const { stripGlobalFlags } = await import(
|
|
238
423
|
"./kernel/project/cli/globalFlags.js"
|
|
239
424
|
);
|
|
@@ -244,24 +429,28 @@ async function handleProgramError(
|
|
|
244
429
|
if (unknown) {
|
|
245
430
|
// Route through the same PragmaError + renderers as every other error,
|
|
246
431
|
// so the plain path gets the `Error:` prefix and the shared "Did you
|
|
247
|
-
// mean?" list instead of a second, inline rendering
|
|
432
|
+
// mean?" list instead of a second, inline rendering — and an explicit
|
|
433
|
+
// machine format gets the same envelope every other usage error
|
|
434
|
+
// emits (the kernel's one gate+renderer decision; plain and json
|
|
435
|
+
// bytes unchanged by construction).
|
|
248
436
|
const [
|
|
249
437
|
{ PragmaError },
|
|
250
|
-
{
|
|
438
|
+
{ renderErrorForFormat, renderErrorPlain },
|
|
251
439
|
{ suggestNames },
|
|
252
440
|
] = await Promise.all([
|
|
253
441
|
import("./kernel/error/PragmaError.js"),
|
|
254
442
|
import("./kernel/error/renderError.js"),
|
|
255
443
|
import("./kernel/project/cli/suggestNames.js"),
|
|
256
444
|
]);
|
|
257
|
-
const
|
|
258
|
-
|
|
259
|
-
|
|
445
|
+
const curated = curatedSuggestions(unknown.token);
|
|
446
|
+
const suggestions = curated
|
|
447
|
+
? [...curated]
|
|
448
|
+
: suggestNames(unknown.token, [...unknown.candidates]);
|
|
260
449
|
const unknownError = PragmaError.unknownVerb(unknown.token, {
|
|
261
450
|
suggestions,
|
|
262
451
|
});
|
|
263
452
|
process.stderr.write(
|
|
264
|
-
`${
|
|
453
|
+
`${renderErrorForFormat(unknownError, format) ?? renderErrorPlain(unknownError)}\n`,
|
|
265
454
|
);
|
|
266
455
|
}
|
|
267
456
|
process.exitCode = 2;
|
|
@@ -269,19 +458,22 @@ async function handleProgramError(
|
|
|
269
458
|
}
|
|
270
459
|
|
|
271
460
|
// Other usage errors (missing argument, unknown option, bad choice). Under
|
|
272
|
-
// --format json these route through the same error
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
461
|
+
// an explicit --format json/llm these route through the same error
|
|
462
|
+
// envelope agents parse (the kernel's one gate+renderer decision — the
|
|
463
|
+
// llm half used to split this one taxonomy class: an excess positional
|
|
464
|
+
// enveloped while an unknown option stayed raw prose).
|
|
465
|
+
const [{ PragmaError }, { renderErrorForFormat }] = await Promise.all([
|
|
466
|
+
import("./kernel/error/PragmaError.js"),
|
|
467
|
+
import("./kernel/error/renderError.js"),
|
|
468
|
+
]);
|
|
469
|
+
const rendered = renderErrorForFormat(
|
|
470
|
+
new PragmaError({
|
|
471
|
+
code: "INVALID_INPUT",
|
|
472
|
+
message: error.message.replace(/^error:\s*/i, ""),
|
|
473
|
+
}),
|
|
474
|
+
format,
|
|
475
|
+
);
|
|
476
|
+
process.stderr.write(`${rendered ?? error.message}\n`);
|
|
285
477
|
process.exitCode = 2;
|
|
286
478
|
return;
|
|
287
479
|
}
|
|
@@ -302,7 +494,7 @@ async function handleProgramError(
|
|
|
302
494
|
error instanceof Error ? error.message : String(error),
|
|
303
495
|
);
|
|
304
496
|
process.stderr.write(
|
|
305
|
-
`${
|
|
497
|
+
`${format === "json" ? renderErrorJson(pragmaError) : renderErrorPlain(pragmaError)}\n`,
|
|
306
498
|
);
|
|
307
499
|
process.exitCode = mapExitCode(pragmaError.code);
|
|
308
500
|
}
|
|
@@ -17,8 +17,11 @@
|
|
|
17
17
|
* deleted `capabilities/block/parity.test.ts`. Button and Modal resolve with
|
|
18
18
|
* the same content a direct SPARQL oracle returns (summary, guidance,
|
|
19
19
|
* anatomy, tier, modifier families with values, properties, subcomponents).
|
|
20
|
-
* The fixture
|
|
21
|
-
*
|
|
20
|
+
* The fixture declares the usage narrative the way the live graph does — one
|
|
21
|
+
* `ds:usage` literal — so what is exercised here is the path a real install
|
|
22
|
+
* takes. It formerly declared the retired whenToUse/whenNotToUse pair, and
|
|
23
|
+
* that divergence is exactly why this suite could assert a "### When to use"
|
|
24
|
+
* heading no install had rendered in months.
|
|
22
25
|
*/
|
|
23
26
|
|
|
24
27
|
import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
|
@@ -138,9 +141,12 @@ ds:Component a owl:Class .
|
|
|
138
141
|
try {
|
|
139
142
|
const rows = (await verb("list").run({}, emptyRt)) as PackRow[];
|
|
140
143
|
expect(rows).toEqual([]);
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
+
// The same semantics, on the empty-state seam: the calm message + its
|
|
145
|
+
// runnable hint now reach the user via stderr (`notice`), keeping
|
|
146
|
+
// plain stdout pure data.
|
|
147
|
+
const notice = verb("list").output.formatters.notice?.(rows);
|
|
148
|
+
expect(notice).toContain("No blocks in the store.");
|
|
149
|
+
expect(notice).toContain("pragma sources update");
|
|
144
150
|
} finally {
|
|
145
151
|
(await emptyRt.store.get()).store.dispose();
|
|
146
152
|
}
|
|
@@ -156,10 +162,7 @@ describe("block lookup — Button content parity (GraphQL, detailed)", () => {
|
|
|
156
162
|
|
|
157
163
|
// Guidance + anatomy sections — each cross-checked against the graph.
|
|
158
164
|
expect(button.summary).toBe(await oracle(`${DS}button`, "ds:summary"));
|
|
159
|
-
expect(button.
|
|
160
|
-
expect(button.whenNotToUse).toBe(
|
|
161
|
-
await oracle(`${DS}button`, "ds:whenNotToUse"),
|
|
162
|
-
);
|
|
165
|
+
expect(button.usage).toBe(await oracle(`${DS}button`, "ds:usage"));
|
|
163
166
|
expect(button.guidelines).toBe(
|
|
164
167
|
await oracle(`${DS}button`, "ds:guidelines"),
|
|
165
168
|
);
|
|
@@ -197,7 +200,13 @@ describe("block lookup — Button content parity (GraphQL, detailed)", () => {
|
|
|
197
200
|
const out = (await verb("lookup").run({ name: ["Button"] }, rt)) as never;
|
|
198
201
|
const llm = verb("lookup").output.formatters.llm(out);
|
|
199
202
|
expect(llm).toContain("## Button");
|
|
200
|
-
expect(llm).toContain("###
|
|
203
|
+
expect(llm).toContain("### Usage");
|
|
204
|
+
// The usage literal's OWN headings are demoted below the section heading
|
|
205
|
+
// they now live under, so `### When to use` renders as a CHILD of Usage
|
|
206
|
+
// rather than a sibling that reads as an empty section.
|
|
207
|
+
expect(llm).toContain("#### When to use");
|
|
208
|
+
expect(llm).toContain("#### When not to use");
|
|
209
|
+
expect(llm).not.toContain("\n### When to use\n");
|
|
201
210
|
expect(llm).toContain("### Anatomy (DSL)");
|
|
202
211
|
expect(llm).toContain("### Modifier Families");
|
|
203
212
|
expect(llm).toContain("primary");
|
|
@@ -210,7 +219,15 @@ describe("block lookup — Modal content parity (GraphQL, detailed)", () => {
|
|
|
210
219
|
expect(modal.uri).toBe(`${DS}modal`);
|
|
211
220
|
expect(modal.name).toBe("Modal");
|
|
212
221
|
expect(modal.summary).toBe(await oracle(`${DS}modal`, "ds:summary"));
|
|
213
|
-
|
|
222
|
+
// Modal asserts an EMPTY `ds:usage` — the shape 138 of the 264 live blocks
|
|
223
|
+
// have. It resolves (parity with the oracle) and renders NOTHING: an empty
|
|
224
|
+
// literal must not print a bare "### Usage" heading with no body under it.
|
|
225
|
+
expect(modal.usage).toBe(await oracle(`${DS}modal`, "ds:usage"));
|
|
226
|
+
expect(modal.usage).toBe("");
|
|
227
|
+
const modalLlm = verb("lookup").output.formatters.llm(
|
|
228
|
+
(await verb("lookup").run({ name: ["Modal"] }, rt)) as never,
|
|
229
|
+
);
|
|
230
|
+
expect(modalLlm).not.toContain("### Usage");
|
|
214
231
|
const families = modal.modifierFamilies as {
|
|
215
232
|
name: string;
|
|
216
233
|
values?: string[];
|
|
@@ -234,7 +251,7 @@ describe("block lookup — disclosure trims to the base view at summary", () =>
|
|
|
234
251
|
const button = out.results.at(0) as Record<string, unknown>;
|
|
235
252
|
expect(button.name).toBe("Button");
|
|
236
253
|
expect(button.summary).toBeDefined();
|
|
237
|
-
expect(button.
|
|
254
|
+
expect(button.usage).toBeUndefined();
|
|
238
255
|
expect(button.anatomyDsl).toBeUndefined();
|
|
239
256
|
expect(button.modifierFamilies).toBeUndefined();
|
|
240
257
|
expect(button.figmaLink).toBeUndefined();
|