@canonical/pragma-cli 0.34.0 → 0.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +153 -30
- package/bundled-skills/add-standard/SKILL.md +338 -0
- package/bundled-skills/adoption-a1-styles/SKILL.md +269 -0
- package/bundled-skills/adoption-a2-components/SKILL.md +291 -0
- package/bundled-skills/adoption-a3-forms/SKILL.md +260 -0
- package/bundled-skills/anatomy-author/ANATOMY_DSL_SPEC.md +406 -0
- package/bundled-skills/anatomy-author/SKILL.md +1226 -0
- package/bundled-skills/design-auditor/SKILL.md +455 -0
- package/bundled-skills/implement-component/SKILL.md +333 -0
- package/bundled-skills/specify-component/SKILL.md +331 -0
- package/bundled-skills/specify-pattern/SKILL.md +292 -0
- package/dist/.build-ok +0 -0
- package/dist/package.json +84 -0
- package/dist/pragma.conf.js +1016 -0
- package/dist/pragma.conf.js.map +1 -0
- package/dist/src/bin.js +356 -0
- package/dist/src/bin.js.map +1 -0
- package/dist/src/capabilities/capabilities/capabilities.render.js +70 -0
- package/dist/src/capabilities/capabilities/capabilities.render.js.map +1 -0
- package/dist/src/capabilities/capabilities/capabilities.verb.js +59 -0
- package/dist/src/capabilities/capabilities/capabilities.verb.js.map +1 -0
- package/dist/src/capabilities/capabilities/catalog.js +130 -0
- package/dist/src/capabilities/capabilities/catalog.js.map +1 -0
- package/dist/src/capabilities/capabilities/hints.js +195 -0
- package/dist/src/capabilities/capabilities/hints.js.map +1 -0
- package/dist/src/capabilities/capabilities/index.js +11 -0
- package/dist/src/capabilities/capabilities/index.js.map +1 -0
- package/dist/src/capabilities/capabilities/types.js +11 -0
- package/dist/src/capabilities/capabilities/types.js.map +1 -0
- package/dist/src/capabilities/colophon/collectColophon.js +83 -0
- package/dist/src/capabilities/colophon/collectColophon.js.map +1 -0
- package/dist/src/capabilities/colophon/colophon.render.js +59 -0
- package/dist/src/capabilities/colophon/colophon.render.js.map +1 -0
- package/dist/src/capabilities/colophon/colophon.verb.js +43 -0
- package/dist/src/capabilities/colophon/colophon.verb.js.map +1 -0
- package/dist/src/capabilities/colophon/index.js +5 -0
- package/dist/src/capabilities/colophon/index.js.map +1 -0
- package/dist/src/capabilities/colophon/markdownTerminal.js +90 -0
- package/dist/src/capabilities/colophon/markdownTerminal.js.map +1 -0
- package/dist/src/capabilities/colophon/types.js +10 -0
- package/dist/src/capabilities/colophon/types.js.map +1 -0
- package/dist/src/capabilities/config/collectConfigShow.js +59 -0
- package/dist/src/capabilities/config/collectConfigShow.js.map +1 -0
- package/dist/src/capabilities/config/field.render.js +22 -0
- package/dist/src/capabilities/config/field.render.js.map +1 -0
- package/dist/src/capabilities/config/fields.js +46 -0
- package/dist/src/capabilities/config/fields.js.map +1 -0
- package/dist/src/capabilities/config/get.verb.js +61 -0
- package/dist/src/capabilities/config/get.verb.js.map +1 -0
- package/dist/src/capabilities/config/index.js +5 -0
- package/dist/src/capabilities/config/index.js.map +1 -0
- package/dist/src/capabilities/config/runField.js +59 -0
- package/dist/src/capabilities/config/runField.js.map +1 -0
- package/dist/src/capabilities/config/runGet.js +28 -0
- package/dist/src/capabilities/config/runGet.js.map +1 -0
- package/dist/src/capabilities/config/runSet.js +53 -0
- package/dist/src/capabilities/config/runSet.js.map +1 -0
- package/dist/src/capabilities/config/set.verb.js +66 -0
- package/dist/src/capabilities/config/set.verb.js.map +1 -0
- package/dist/src/capabilities/config/show.render.js +84 -0
- package/dist/src/capabilities/config/show.render.js.map +1 -0
- package/dist/src/capabilities/config/show.verb.js +44 -0
- package/dist/src/capabilities/config/show.verb.js.map +1 -0
- package/dist/src/capabilities/config/types.js +5 -0
- package/dist/src/capabilities/config/types.js.map +1 -0
- package/dist/src/capabilities/config/unset.verb.js +49 -0
- package/dist/src/capabilities/config/unset.verb.js.map +1 -0
- package/dist/src/capabilities/create/cliProjection.js +195 -0
- package/dist/src/capabilities/create/cliProjection.js.map +1 -0
- package/dist/src/capabilities/create/constants.js +47 -0
- package/dist/src/capabilities/create/constants.js.map +1 -0
- package/dist/src/capabilities/create/create.render.js +100 -0
- package/dist/src/capabilities/create/create.render.js.map +1 -0
- package/dist/src/capabilities/create/create.verb.js +438 -0
- package/dist/src/capabilities/create/create.verb.js.map +1 -0
- package/dist/src/capabilities/create/createHelp.js +47 -0
- package/dist/src/capabilities/create/createHelp.js.map +1 -0
- package/dist/src/capabilities/create/createSurface.generated.js +394 -0
- package/dist/src/capabilities/create/createSurface.generated.js.map +1 -0
- package/dist/src/capabilities/create/generatorToVerbSpec.js +106 -0
- package/dist/src/capabilities/create/generatorToVerbSpec.js.map +1 -0
- package/dist/src/capabilities/create/index.js +18 -0
- package/dist/src/capabilities/create/index.js.map +1 -0
- package/dist/src/capabilities/create/messages.js +16 -0
- package/dist/src/capabilities/create/messages.js.map +1 -0
- package/dist/src/capabilities/create/mount.js +294 -0
- package/dist/src/capabilities/create/mount.js.map +1 -0
- package/dist/src/capabilities/create/pathJail.js +65 -0
- package/dist/src/capabilities/create/pathJail.js.map +1 -0
- package/dist/src/capabilities/create/pickGenerator.js +53 -0
- package/dist/src/capabilities/create/pickGenerator.js.map +1 -0
- package/dist/src/capabilities/create/types.js +2 -0
- package/dist/src/capabilities/create/types.js.map +1 -0
- package/dist/src/capabilities/distribution.js +40 -0
- package/dist/src/capabilities/distribution.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkKeStore.js +40 -0
- package/dist/src/capabilities/doctor/checks/checkKeStore.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkNodeVersion.js +21 -0
- package/dist/src/capabilities/doctor/checks/checkNodeVersion.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkPackageRefs.js +148 -0
- package/dist/src/capabilities/doctor/checks/checkPackageRefs.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkPragmaVersion.js +19 -0
- package/dist/src/capabilities/doctor/checks/checkPragmaVersion.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkShellCompletions.js +199 -0
- package/dist/src/capabilities/doctor/checks/checkShellCompletions.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/harnessInventory.js +195 -0
- package/dist/src/capabilities/doctor/checks/harnessInventory.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/index.js +27 -0
- package/dist/src/capabilities/doctor/checks/index.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/mcpCommand.js +57 -0
- package/dist/src/capabilities/doctor/checks/mcpCommand.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/targetHealth.js +349 -0
- package/dist/src/capabilities/doctor/checks/targetHealth.js.map +1 -0
- package/dist/src/capabilities/doctor/doctor.render.js +164 -0
- package/dist/src/capabilities/doctor/doctor.render.js.map +1 -0
- package/dist/src/capabilities/doctor/doctor.verb.js +49 -0
- package/dist/src/capabilities/doctor/doctor.verb.js.map +1 -0
- package/dist/src/capabilities/doctor/index.js +5 -0
- package/dist/src/capabilities/doctor/index.js.map +1 -0
- package/dist/src/capabilities/doctor/runChecks.js +86 -0
- package/dist/src/capabilities/doctor/runChecks.js.map +1 -0
- package/dist/src/capabilities/doctor/types.js +5 -0
- package/dist/src/capabilities/doctor/types.js.map +1 -0
- package/dist/src/capabilities/graph/index.js +19 -0
- package/dist/src/capabilities/graph/index.js.map +1 -0
- package/dist/src/capabilities/graph/inspect.render.js +76 -0
- package/dist/src/capabilities/graph/inspect.render.js.map +1 -0
- package/dist/src/capabilities/graph/inspect.verb.js +53 -0
- package/dist/src/capabilities/graph/inspect.verb.js.map +1 -0
- package/dist/src/capabilities/graph/query.render.js +73 -0
- package/dist/src/capabilities/graph/query.render.js.map +1 -0
- package/dist/src/capabilities/graph/query.verb.js +49 -0
- package/dist/src/capabilities/graph/query.verb.js.map +1 -0
- package/dist/src/capabilities/graph/runQuery.js +41 -0
- package/dist/src/capabilities/graph/runQuery.js.map +1 -0
- package/dist/src/capabilities/index.js +56 -0
- package/dist/src/capabilities/index.js.map +1 -0
- package/dist/src/capabilities/info/collectInfo.js +72 -0
- package/dist/src/capabilities/info/collectInfo.js.map +1 -0
- package/dist/src/capabilities/info/index.js +5 -0
- package/dist/src/capabilities/info/index.js.map +1 -0
- package/dist/src/capabilities/info/info.render.js +57 -0
- package/dist/src/capabilities/info/info.render.js.map +1 -0
- package/dist/src/capabilities/info/info.verb.js +42 -0
- package/dist/src/capabilities/info/info.verb.js.map +1 -0
- package/dist/src/capabilities/info/types.js +5 -0
- package/dist/src/capabilities/info/types.js.map +1 -0
- package/dist/src/capabilities/meta/complete.verb.js +43 -0
- package/dist/src/capabilities/meta/complete.verb.js.map +1 -0
- package/dist/src/capabilities/meta/index.js +13 -0
- package/dist/src/capabilities/meta/index.js.map +1 -0
- package/dist/src/capabilities/meta/mcp.verb.js +34 -0
- package/dist/src/capabilities/meta/mcp.verb.js.map +1 -0
- package/dist/src/capabilities/ontology/index.js +21 -0
- package/dist/src/capabilities/ontology/index.js.map +1 -0
- package/dist/src/capabilities/ontology/queries.js +123 -0
- package/dist/src/capabilities/ontology/queries.js.map +1 -0
- package/dist/src/capabilities/ontology/render.js +66 -0
- package/dist/src/capabilities/ontology/render.js.map +1 -0
- package/dist/src/capabilities/ontology/verbs.js +181 -0
- package/dist/src/capabilities/ontology/verbs.js.map +1 -0
- package/dist/src/capabilities/prompt/index.js +16 -0
- package/dist/src/capabilities/prompt/index.js.map +1 -0
- package/dist/src/capabilities/prompt/prompt.render.js +78 -0
- package/dist/src/capabilities/prompt/prompt.render.js.map +1 -0
- package/dist/src/capabilities/prompt/types.js +10 -0
- package/dist/src/capabilities/prompt/types.js.map +1 -0
- package/dist/src/capabilities/prompt/verbs.js +93 -0
- package/dist/src/capabilities/prompt/verbs.js.map +1 -0
- package/dist/src/capabilities/resources/index.js +10 -0
- package/dist/src/capabilities/resources/index.js.map +1 -0
- package/dist/src/capabilities/resources/provider.js +423 -0
- package/dist/src/capabilities/resources/provider.js.map +1 -0
- package/dist/src/capabilities/setup/buildPlan.js +172 -0
- package/dist/src/capabilities/setup/buildPlan.js.map +1 -0
- package/dist/src/capabilities/setup/index.js +5 -0
- package/dist/src/capabilities/setup/index.js.map +1 -0
- package/dist/src/capabilities/setup/mode.js +53 -0
- package/dist/src/capabilities/setup/mode.js.map +1 -0
- package/dist/src/capabilities/setup/operations/index.js +39 -0
- package/dist/src/capabilities/setup/operations/index.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupCompletions.js +160 -0
- package/dist/src/capabilities/setup/operations/setupCompletions.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupConfig.js +101 -0
- package/dist/src/capabilities/setup/operations/setupConfig.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupGenerator.js +390 -0
- package/dist/src/capabilities/setup/operations/setupGenerator.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupLsp.js +329 -0
- package/dist/src/capabilities/setup/operations/setupLsp.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupMcp.js +253 -0
- package/dist/src/capabilities/setup/operations/setupMcp.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupSkills.js +594 -0
- package/dist/src/capabilities/setup/operations/setupSkills.js.map +1 -0
- package/dist/src/capabilities/setup/plan.js +128 -0
- package/dist/src/capabilities/setup/plan.js.map +1 -0
- package/dist/src/capabilities/setup/plan.render.js +271 -0
- package/dist/src/capabilities/setup/plan.render.js.map +1 -0
- package/dist/src/capabilities/setup/setup.render.js +54 -0
- package/dist/src/capabilities/setup/setup.render.js.map +1 -0
- package/dist/src/capabilities/setup/setup.verb.js +387 -0
- package/dist/src/capabilities/setup/setup.verb.js.map +1 -0
- package/dist/src/capabilities/setup/shell.js +196 -0
- package/dist/src/capabilities/setup/shell.js.map +1 -0
- package/dist/src/capabilities/setup/targets.js +328 -0
- package/dist/src/capabilities/setup/targets.js.map +1 -0
- package/dist/src/capabilities/setup/types.js +5 -0
- package/dist/src/capabilities/setup/types.js.map +1 -0
- package/dist/src/capabilities/shared/assertExecOk.js +137 -0
- package/dist/src/capabilities/shared/assertExecOk.js.map +1 -0
- package/dist/src/capabilities/shared/index.js +27 -0
- package/dist/src/capabilities/shared/index.js.map +1 -0
- package/dist/src/capabilities/shared/packageManager.js +349 -0
- package/dist/src/capabilities/shared/packageManager.js.map +1 -0
- package/dist/src/capabilities/shared/registry.js +55 -0
- package/dist/src/capabilities/shared/registry.js.map +1 -0
- package/dist/src/capabilities/skill/discover.js +281 -0
- package/dist/src/capabilities/skill/discover.js.map +1 -0
- package/dist/src/capabilities/skill/index.js +10 -0
- package/dist/src/capabilities/skill/index.js.map +1 -0
- package/dist/src/capabilities/skill/render.js +49 -0
- package/dist/src/capabilities/skill/render.js.map +1 -0
- package/dist/src/capabilities/skill/verbs.js +83 -0
- package/dist/src/capabilities/skill/verbs.js.map +1 -0
- package/dist/src/capabilities/sources/collectStatus.js +103 -0
- package/dist/src/capabilities/sources/collectStatus.js.map +1 -0
- package/dist/src/capabilities/sources/index.js +13 -0
- package/dist/src/capabilities/sources/index.js.map +1 -0
- package/dist/src/capabilities/sources/installSkills.js +309 -0
- package/dist/src/capabilities/sources/installSkills.js.map +1 -0
- package/dist/src/capabilities/sources/runUpdate.js +460 -0
- package/dist/src/capabilities/sources/runUpdate.js.map +1 -0
- package/dist/src/capabilities/sources/status.render.js +64 -0
- package/dist/src/capabilities/sources/status.render.js.map +1 -0
- package/dist/src/capabilities/sources/status.verb.js +40 -0
- package/dist/src/capabilities/sources/status.verb.js.map +1 -0
- package/dist/src/capabilities/sources/types.js +6 -0
- package/dist/src/capabilities/sources/types.js.map +1 -0
- package/dist/src/capabilities/sources/update.render.js +34 -0
- package/dist/src/capabilities/sources/update.render.js.map +1 -0
- package/dist/src/capabilities/sources/update.verb.js +55 -0
- package/dist/src/capabilities/sources/update.verb.js.map +1 -0
- package/dist/src/capabilities/upgrade/index.js +5 -0
- package/dist/src/capabilities/upgrade/index.js.map +1 -0
- package/dist/src/capabilities/upgrade/runUpgrade.js +135 -0
- package/dist/src/capabilities/upgrade/runUpgrade.js.map +1 -0
- package/dist/src/capabilities/upgrade/types.js +5 -0
- package/dist/src/capabilities/upgrade/types.js.map +1 -0
- package/dist/src/capabilities/upgrade/upgrade.render.js +52 -0
- package/dist/src/capabilities/upgrade/upgrade.render.js.map +1 -0
- package/dist/src/capabilities/upgrade/upgrade.verb.js +52 -0
- package/dist/src/capabilities/upgrade/upgrade.verb.js.map +1 -0
- package/dist/src/capabilities/version/index.js +10 -0
- package/dist/src/capabilities/version/index.js.map +1 -0
- package/dist/src/capabilities/version/version.verb.js +36 -0
- package/dist/src/capabilities/version/version.verb.js.map +1 -0
- package/dist/src/constants.js +87 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/index.js +12 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/kernel/completion/complete.js +66 -0
- package/dist/src/kernel/completion/complete.js.map +1 -0
- package/dist/src/kernel/completion/emitScripts.js +92 -0
- package/dist/src/kernel/completion/emitScripts.js.map +1 -0
- package/dist/src/kernel/completion/entitySource.js +285 -0
- package/dist/src/kernel/completion/entitySource.js.map +1 -0
- package/dist/src/kernel/completion/index.js +14 -0
- package/dist/src/kernel/completion/index.js.map +1 -0
- package/dist/src/kernel/completion/model.js +301 -0
- package/dist/src/kernel/completion/model.js.map +1 -0
- package/dist/src/kernel/completion/parse.js +253 -0
- package/dist/src/kernel/completion/parse.js.map +1 -0
- package/dist/src/kernel/completion/rank.js +101 -0
- package/dist/src/kernel/completion/rank.js.map +1 -0
- package/dist/src/kernel/completion/resolve.js +100 -0
- package/dist/src/kernel/completion/resolve.js.map +1 -0
- package/dist/src/kernel/completion/templates/bash.js +209 -0
- package/dist/src/kernel/completion/templates/bash.js.map +1 -0
- package/dist/src/kernel/completion/templates/fish.js +214 -0
- package/dist/src/kernel/completion/templates/fish.js.map +1 -0
- package/dist/src/kernel/completion/templates/index.js +23 -0
- package/dist/src/kernel/completion/templates/index.js.map +1 -0
- package/dist/src/kernel/completion/templates/shared.js +98 -0
- package/dist/src/kernel/completion/templates/shared.js.map +1 -0
- package/dist/src/kernel/completion/templates/zsh.js +201 -0
- package/dist/src/kernel/completion/templates/zsh.js.map +1 -0
- package/dist/src/kernel/completion/types.js +13 -0
- package/dist/src/kernel/completion/types.js.map +1 -0
- package/dist/src/kernel/config/defaults.js +17 -0
- package/dist/src/kernel/config/defaults.js.map +1 -0
- package/dist/src/kernel/config/evaluateProjectConfig.js +126 -0
- package/dist/src/kernel/config/evaluateProjectConfig.js.map +1 -0
- package/dist/src/kernel/config/findProjectConfig.js +43 -0
- package/dist/src/kernel/config/findProjectConfig.js.map +1 -0
- package/dist/src/kernel/config/firstRun.js +34 -0
- package/dist/src/kernel/config/firstRun.js.map +1 -0
- package/dist/src/kernel/config/globalConfig.js +79 -0
- package/dist/src/kernel/config/globalConfig.js.map +1 -0
- package/dist/src/kernel/config/index.js +16 -0
- package/dist/src/kernel/config/index.js.map +1 -0
- package/dist/src/kernel/config/paths.js +35 -0
- package/dist/src/kernel/config/paths.js.map +1 -0
- package/dist/src/kernel/config/readConfig.js +78 -0
- package/dist/src/kernel/config/readConfig.js.map +1 -0
- package/dist/src/kernel/config/schema.js +130 -0
- package/dist/src/kernel/config/schema.js.map +1 -0
- package/dist/src/kernel/config/types.js +19 -0
- package/dist/src/kernel/config/types.js.map +1 -0
- package/dist/src/kernel/config/writeConfigField.js +59 -0
- package/dist/src/kernel/config/writeConfigField.js.map +1 -0
- package/dist/src/kernel/copy.js +43 -0
- package/dist/src/kernel/copy.js.map +1 -0
- package/dist/src/kernel/error/PragmaError.js +149 -0
- package/dist/src/kernel/error/PragmaError.js.map +1 -0
- package/dist/src/kernel/error/constants.js +40 -0
- package/dist/src/kernel/error/constants.js.map +1 -0
- package/dist/src/kernel/error/fromTaskError.js +96 -0
- package/dist/src/kernel/error/fromTaskError.js.map +1 -0
- package/dist/src/kernel/error/index.js +13 -0
- package/dist/src/kernel/error/index.js.map +1 -0
- package/dist/src/kernel/error/recovery.js +52 -0
- package/dist/src/kernel/error/recovery.js.map +1 -0
- package/dist/src/kernel/error/renderError.js +115 -0
- package/dist/src/kernel/error/renderError.js.map +1 -0
- package/dist/src/kernel/error/serialize.js +25 -0
- package/dist/src/kernel/error/serialize.js.map +1 -0
- package/dist/src/kernel/error/types.js +9 -0
- package/dist/src/kernel/error/types.js.map +1 -0
- package/dist/src/kernel/index.js +34 -0
- package/dist/src/kernel/index.js.map +1 -0
- package/dist/src/kernel/interactivity.js +68 -0
- package/dist/src/kernel/interactivity.js.map +1 -0
- package/dist/src/kernel/packs/collect.js +187 -0
- package/dist/src/kernel/packs/collect.js.map +1 -0
- package/dist/src/kernel/packs/compile.js +304 -0
- package/dist/src/kernel/packs/compile.js.map +1 -0
- package/dist/src/kernel/packs/disclosure.js +76 -0
- package/dist/src/kernel/packs/disclosure.js.map +1 -0
- package/dist/src/kernel/packs/glob.js +38 -0
- package/dist/src/kernel/packs/glob.js.map +1 -0
- package/dist/src/kernel/packs/graphql/buildLookupDocument.js +258 -0
- package/dist/src/kernel/packs/graphql/buildLookupDocument.js.map +1 -0
- package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js +157 -0
- package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js.map +1 -0
- package/dist/src/kernel/packs/graphql/index.js +20 -0
- package/dist/src/kernel/packs/graphql/index.js.map +1 -0
- package/dist/src/kernel/packs/graphql/nameMap.js +63 -0
- package/dist/src/kernel/packs/graphql/nameMap.js.map +1 -0
- package/dist/src/kernel/packs/index.js +34 -0
- package/dist/src/kernel/packs/index.js.map +1 -0
- package/dist/src/kernel/packs/iri.js +110 -0
- package/dist/src/kernel/packs/iri.js.map +1 -0
- package/dist/src/kernel/packs/renderPack.js +129 -0
- package/dist/src/kernel/packs/renderPack.js.map +1 -0
- package/dist/src/kernel/packs/resolveEntity.js +274 -0
- package/dist/src/kernel/packs/resolveEntity.js.map +1 -0
- package/dist/src/kernel/packs/runBodies.js +140 -0
- package/dist/src/kernel/packs/runBodies.js.map +1 -0
- package/dist/src/kernel/packs/sample.js +56 -0
- package/dist/src/kernel/packs/sample.js.map +1 -0
- package/dist/src/kernel/packs/schema.js +421 -0
- package/dist/src/kernel/packs/schema.js.map +1 -0
- package/dist/src/kernel/packs/sparql/applyFilters.js +167 -0
- package/dist/src/kernel/packs/sparql/applyFilters.js.map +1 -0
- package/dist/src/kernel/packs/sparql/applySearch.js +25 -0
- package/dist/src/kernel/packs/sparql/applySearch.js.map +1 -0
- package/dist/src/kernel/packs/sparql/buildLookupQuery.js +480 -0
- package/dist/src/kernel/packs/sparql/buildLookupQuery.js.map +1 -0
- package/dist/src/kernel/packs/sparql/escape.js +21 -0
- package/dist/src/kernel/packs/sparql/escape.js.map +1 -0
- package/dist/src/kernel/packs/sparql/index.js +31 -0
- package/dist/src/kernel/packs/sparql/index.js.map +1 -0
- package/dist/src/kernel/packs/sparql/runSelect.js +101 -0
- package/dist/src/kernel/packs/sparql/runSelect.js.map +1 -0
- package/dist/src/kernel/packs/types.js +30 -0
- package/dist/src/kernel/packs/types.js.map +1 -0
- package/dist/src/kernel/packs/uniqueness.js +30 -0
- package/dist/src/kernel/packs/uniqueness.js.map +1 -0
- package/dist/src/kernel/project/cli/buildProgram.js +263 -0
- package/dist/src/kernel/project/cli/buildProgram.js.map +1 -0
- package/dist/src/kernel/project/cli/constants.js +27 -0
- package/dist/src/kernel/project/cli/constants.js.map +1 -0
- package/dist/src/kernel/project/cli/dispatch.js +420 -0
- package/dist/src/kernel/project/cli/dispatch.js.map +1 -0
- package/dist/src/kernel/project/cli/exitCodes.js +66 -0
- package/dist/src/kernel/project/cli/exitCodes.js.map +1 -0
- package/dist/src/kernel/project/cli/globalFlags.js +219 -0
- package/dist/src/kernel/project/cli/globalFlags.js.map +1 -0
- package/dist/src/kernel/project/cli/helpFormat.js +58 -0
- package/dist/src/kernel/project/cli/helpFormat.js.map +1 -0
- package/dist/src/kernel/project/cli/index.js +14 -0
- package/dist/src/kernel/project/cli/index.js.map +1 -0
- package/dist/src/kernel/project/cli/rootHelp.js +227 -0
- package/dist/src/kernel/project/cli/rootHelp.js.map +1 -0
- package/dist/src/kernel/project/cli/suggest.js +75 -0
- package/dist/src/kernel/project/cli/suggest.js.map +1 -0
- package/dist/src/kernel/project/cli/suggestNames.js +96 -0
- package/dist/src/kernel/project/cli/suggestNames.js.map +1 -0
- package/dist/src/kernel/project/cli/verbHelp.js +131 -0
- package/dist/src/kernel/project/cli/verbHelp.js.map +1 -0
- package/dist/src/kernel/project/mcp/buildServer.js +67 -0
- package/dist/src/kernel/project/mcp/buildServer.js.map +1 -0
- package/dist/src/kernel/project/mcp/envelope.js +37 -0
- package/dist/src/kernel/project/mcp/envelope.js.map +1 -0
- package/dist/src/kernel/project/mcp/index.js +8 -0
- package/dist/src/kernel/project/mcp/index.js.map +1 -0
- package/dist/src/kernel/project/mcp/instructions.js +44 -0
- package/dist/src/kernel/project/mcp/instructions.js.map +1 -0
- package/dist/src/kernel/project/mcp/mcpError.js +42 -0
- package/dist/src/kernel/project/mcp/mcpError.js.map +1 -0
- package/dist/src/kernel/project/mcp/prompts/index.js +36 -0
- package/dist/src/kernel/project/mcp/prompts/index.js.map +1 -0
- package/dist/src/kernel/project/mcp/prompts/provider.js +98 -0
- package/dist/src/kernel/project/mcp/prompts/provider.js.map +1 -0
- package/dist/src/kernel/project/mcp/prompts/source.js +154 -0
- package/dist/src/kernel/project/mcp/prompts/source.js.map +1 -0
- package/dist/src/kernel/project/mcp/registerVerb.js +315 -0
- package/dist/src/kernel/project/mcp/registerVerb.js.map +1 -0
- package/dist/src/kernel/project/mcp/serve.js +35 -0
- package/dist/src/kernel/project/mcp/serve.js.map +1 -0
- package/dist/src/kernel/render/compactUri.js +24 -0
- package/dist/src/kernel/render/compactUri.js.map +1 -0
- package/dist/src/kernel/render/contracts.js +10 -0
- package/dist/src/kernel/render/contracts.js.map +1 -0
- package/dist/src/kernel/render/disclosure.js +34 -0
- package/dist/src/kernel/render/disclosure.js.map +1 -0
- package/dist/src/kernel/render/envelope.js +30 -0
- package/dist/src/kernel/render/envelope.js.map +1 -0
- package/dist/src/kernel/render/formatters.js +27 -0
- package/dist/src/kernel/render/formatters.js.map +1 -0
- package/dist/src/kernel/render/index.js +15 -0
- package/dist/src/kernel/render/index.js.map +1 -0
- package/dist/src/kernel/render/prefixes.js +46 -0
- package/dist/src/kernel/render/prefixes.js.map +1 -0
- package/dist/src/kernel/render/renderers.js +468 -0
- package/dist/src/kernel/render/renderers.js.map +1 -0
- package/dist/src/kernel/render/style.js +105 -0
- package/dist/src/kernel/render/style.js.map +1 -0
- package/dist/src/kernel/render/turtle.js +194 -0
- package/dist/src/kernel/render/turtle.js.map +1 -0
- package/dist/src/kernel/render/vocabulary.js +174 -0
- package/dist/src/kernel/render/vocabulary.js.map +1 -0
- package/dist/src/kernel/render/writeStdout.js +43 -0
- package/dist/src/kernel/render/writeStdout.js.map +1 -0
- package/dist/src/kernel/runtime/boot.js +49 -0
- package/dist/src/kernel/runtime/boot.js.map +1 -0
- package/dist/src/kernel/runtime/facade.js +39 -0
- package/dist/src/kernel/runtime/facade.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/build.js +122 -0
- package/dist/src/kernel/runtime/graphpack/build.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/buildIndex.js +303 -0
- package/dist/src/kernel/runtime/graphpack/buildIndex.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js +6 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js +4 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.stories.generated.js +4 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.stories.generated.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded.js +82 -0
- package/dist/src/kernel/runtime/graphpack/embedded.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/hash.js +38 -0
- package/dist/src/kernel/runtime/graphpack/hash.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/index.js +11 -0
- package/dist/src/kernel/runtime/graphpack/index.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/manifest.js +145 -0
- package/dist/src/kernel/runtime/graphpack/manifest.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/read.js +92 -0
- package/dist/src/kernel/runtime/graphpack/read.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/schemas.js +70 -0
- package/dist/src/kernel/runtime/graphpack/schemas.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/stories.js +68 -0
- package/dist/src/kernel/runtime/graphpack/stories.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/types.js +55 -0
- package/dist/src/kernel/runtime/graphpack/types.js.map +1 -0
- package/dist/src/kernel/runtime/index.js +8 -0
- package/dist/src/kernel/runtime/index.js.map +1 -0
- package/dist/src/kernel/runtime/loadSession.js +34 -0
- package/dist/src/kernel/runtime/loadSession.js.map +1 -0
- package/dist/src/kernel/runtime/paths.js +78 -0
- package/dist/src/kernel/runtime/paths.js.map +1 -0
- package/dist/src/kernel/runtime/probe.js +37 -0
- package/dist/src/kernel/runtime/probe.js.map +1 -0
- package/dist/src/kernel/runtime/readEntity.js +363 -0
- package/dist/src/kernel/runtime/readEntity.js.map +1 -0
- package/dist/src/kernel/runtime/refs/gitOps.js +65 -0
- package/dist/src/kernel/runtime/refs/gitOps.js.map +1 -0
- package/dist/src/kernel/runtime/refs/index.js +29 -0
- package/dist/src/kernel/runtime/refs/index.js.map +1 -0
- package/dist/src/kernel/runtime/refs/parseRef.js +70 -0
- package/dist/src/kernel/runtime/refs/parseRef.js.map +1 -0
- package/dist/src/kernel/runtime/refs/resolve.js +332 -0
- package/dist/src/kernel/runtime/refs/resolve.js.map +1 -0
- package/dist/src/kernel/runtime/resolveSources.js +62 -0
- package/dist/src/kernel/runtime/resolveSources.js.map +1 -0
- package/dist/src/kernel/runtime/store.js +75 -0
- package/dist/src/kernel/runtime/store.js.map +1 -0
- package/dist/src/kernel/runtime/storeReadiness.js +51 -0
- package/dist/src/kernel/runtime/storeReadiness.js.map +1 -0
- package/dist/src/kernel/runtime/types.js +11 -0
- package/dist/src/kernel/runtime/types.js.map +1 -0
- package/dist/src/kernel/spec/asVerb.js +21 -0
- package/dist/src/kernel/spec/asVerb.js.map +1 -0
- package/dist/src/kernel/spec/emitReference.js +578 -0
- package/dist/src/kernel/spec/emitReference.js.map +1 -0
- package/dist/src/kernel/spec/emitSurface.js +202 -0
- package/dist/src/kernel/spec/emitSurface.js.map +1 -0
- package/dist/src/kernel/spec/index.js +11 -0
- package/dist/src/kernel/spec/index.js.map +1 -0
- package/dist/src/kernel/spec/surfaceConformance.js +103 -0
- package/dist/src/kernel/spec/surfaceConformance.js.map +1 -0
- package/dist/src/kernel/spec/types.js +14 -0
- package/dist/src/kernel/spec/types.js.map +1 -0
- package/dist/src/kernel/spec/validate.js +110 -0
- package/dist/src/kernel/spec/validate.js.map +1 -0
- package/dist/src/kernel/vocabulary.js +97 -0
- package/dist/src/kernel/vocabulary.js.map +1 -0
- package/dist/src/types.js +11 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +22 -23
- package/pragma.conf.ts +486 -90
- package/src/bin.ts +274 -82
- package/src/capabilities/block.parity.test.ts +29 -12
- package/src/capabilities/block.shipped.exec.test.ts +282 -0
- package/src/capabilities/block.tierRank.exec.test.ts +300 -0
- package/src/capabilities/capabilities/capabilities.render.ts +1 -1
- package/src/capabilities/capabilities/capabilities.verb.ts +1 -1
- package/src/capabilities/capabilities/catalog.ts +3 -3
- package/src/capabilities/capabilities/hints.ts +32 -7
- package/src/capabilities/capabilities/index.ts +1 -1
- package/src/capabilities/colophon/collectColophon.ts +35 -24
- package/src/capabilities/colophon/colophon.render.ts +24 -1
- package/src/capabilities/colophon/colophon.test.ts +42 -21
- package/src/capabilities/colophon/colophon.verb.ts +4 -4
- package/src/capabilities/config/collectConfigShow.test.ts +1 -0
- package/src/capabilities/config/collectConfigShow.ts +3 -3
- package/src/capabilities/config/field.render.ts +4 -5
- package/src/capabilities/config/fields.ts +17 -10
- package/src/capabilities/config/get.verb.ts +70 -0
- package/src/capabilities/config/getUnset.test.ts +264 -0
- package/src/capabilities/config/index.ts +5 -1
- package/src/capabilities/config/runField.ts +40 -22
- package/src/capabilities/config/runGet.ts +34 -0
- package/src/capabilities/config/runSet.ts +35 -9
- package/src/capabilities/config/set.test.ts +48 -14
- package/src/capabilities/config/set.verb.ts +8 -7
- package/src/capabilities/config/show.render.ts +1 -1
- package/src/capabilities/config/show.verb.ts +9 -6
- package/src/capabilities/config/types.ts +18 -4
- package/src/capabilities/config/unset.verb.ts +58 -0
- package/src/capabilities/create/byteEquality.subprocess.test.ts +2 -3
- package/src/capabilities/create/byteEquality.test.ts +25 -11
- package/src/capabilities/create/cliProjection.ts +227 -0
- package/src/capabilities/create/constants.ts +36 -61
- package/src/capabilities/create/create.mcp.test.ts +89 -5
- package/src/capabilities/create/create.render.ts +71 -7
- package/src/capabilities/create/create.test.ts +433 -219
- package/src/capabilities/create/create.verb.ts +297 -328
- package/src/capabilities/create/createGrammar.test.ts +865 -0
- package/src/capabilities/create/createHelp.ts +71 -0
- package/src/capabilities/create/createSurface.generated.ts +400 -0
- package/src/capabilities/create/crossCli.subprocess.test.ts +745 -0
- package/src/capabilities/create/cwdJail.test.ts +24 -5
- package/src/capabilities/create/generatorToVerbSpec.test.ts +186 -0
- package/src/capabilities/create/generatorToVerbSpec.ts +13 -11
- package/src/capabilities/create/index.ts +7 -4
- package/src/capabilities/create/messages.ts +18 -0
- package/src/capabilities/create/mount.ts +391 -0
- package/src/capabilities/create/pathJail.test.ts +90 -0
- package/src/capabilities/create/pathJail.ts +8 -5
- package/src/capabilities/create/pickGenerator.ts +23 -35
- package/src/capabilities/create/shippedCreate.subprocess.test.ts +164 -0
- package/src/capabilities/create/types.ts +20 -0
- package/src/capabilities/distribution.parity.test.ts +4 -0
- package/src/capabilities/distribution.test.ts +3 -1
- package/src/capabilities/distribution.ts +10 -15
- package/src/capabilities/doctor/checks/checkKeStore.ts +7 -5
- package/src/capabilities/doctor/checks/checkPackageRefs.ts +75 -8
- package/src/capabilities/doctor/checks/checkPragmaVersion.ts +2 -2
- package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +76 -29
- package/src/capabilities/doctor/checks/checkShellCompletions.ts +63 -17
- package/src/capabilities/doctor/checks/harnessInventory.test.ts +219 -0
- package/src/capabilities/doctor/checks/harnessInventory.ts +298 -0
- package/src/capabilities/doctor/checks/index.ts +27 -0
- package/src/capabilities/doctor/checks/mcpCommand.test.ts +100 -0
- package/src/capabilities/doctor/checks/mcpCommand.ts +69 -0
- package/src/capabilities/doctor/checks/targetHealth.ts +444 -0
- package/src/capabilities/doctor/doctor.render.test.ts +125 -38
- package/src/capabilities/doctor/doctor.render.ts +74 -74
- package/src/capabilities/doctor/doctor.test.ts +338 -37
- package/src/capabilities/doctor/doctor.verb.ts +8 -3
- package/src/capabilities/doctor/runChecks.ts +65 -63
- package/src/capabilities/doctor/types.ts +22 -15
- package/src/capabilities/emptyRecovery.test.ts +21 -8
- package/src/capabilities/graph/examples.exec.test.ts +107 -0
- package/src/capabilities/graph/index.ts +1 -1
- package/src/capabilities/graph/inspect.render.ts +70 -22
- package/src/capabilities/graph/inspect.test.ts +260 -5
- package/src/capabilities/graph/inspect.verb.ts +18 -6
- package/src/capabilities/graph/query.render.ts +15 -3
- package/src/capabilities/graph/query.verb.ts +3 -3
- package/src/capabilities/graph/runQuery.ts +2 -3
- package/src/capabilities/index.ts +3 -1
- package/src/capabilities/info/collectInfo.ts +13 -5
- package/src/capabilities/info/info.render.ts +7 -3
- package/src/capabilities/info/info.test.ts +37 -1
- package/src/capabilities/info/info.verb.ts +1 -1
- package/src/capabilities/info/types.ts +10 -2
- package/src/capabilities/lazy.test.ts +32 -0
- package/src/capabilities/meta/complete.verb.ts +1 -1
- package/src/capabilities/meta/index.ts +1 -1
- package/src/capabilities/meta/mcp.verb.ts +10 -8
- package/src/capabilities/ontology/index.ts +15 -11
- package/src/capabilities/ontology/ontology.test.ts +6 -55
- package/src/capabilities/ontology/queries.ts +2 -2
- package/src/capabilities/ontology/render.ts +3 -4
- package/src/capabilities/ontology/verbs.ts +27 -68
- package/src/capabilities/prompt/index.ts +2 -2
- package/src/capabilities/prompt/prompt.render.ts +6 -2
- package/src/capabilities/prompt/types.ts +1 -1
- package/src/capabilities/prompt/verbs.ts +4 -5
- package/src/capabilities/reference.test.ts +63 -0
- package/src/capabilities/renderVocabularySync.test.ts +82 -0
- package/src/capabilities/resources/provider.ts +342 -85
- package/src/capabilities/resources/resources.test.ts +355 -59
- package/src/capabilities/scopeTypeSync.test.ts +29 -15
- package/src/capabilities/setup/buildPlan.ts +240 -0
- package/src/capabilities/setup/index.ts +7 -7
- package/src/capabilities/setup/mode.ts +74 -0
- package/src/capabilities/setup/operations/index.ts +79 -0
- package/src/capabilities/setup/operations/setupCompletions.ts +97 -24
- package/src/capabilities/setup/operations/setupConfig.ts +124 -0
- package/src/capabilities/setup/operations/setupGenerator.ts +478 -334
- package/src/capabilities/setup/operations/setupLsp.ts +420 -67
- package/src/capabilities/setup/operations/setupMcp.ts +238 -127
- package/src/capabilities/setup/operations/setupSkills.ts +667 -105
- package/src/capabilities/setup/plan.render.ts +336 -0
- package/src/capabilities/setup/plan.ts +241 -0
- package/src/capabilities/setup/setup.mcp.correctness.test.ts +432 -0
- package/src/capabilities/setup/setup.render.test.ts +297 -75
- package/src/capabilities/setup/setup.render.ts +45 -77
- package/src/capabilities/setup/setup.test.ts +1819 -225
- package/src/capabilities/setup/setup.verb.ts +288 -78
- package/src/capabilities/setup/shell.test.ts +86 -0
- package/src/capabilities/setup/shell.ts +137 -11
- package/src/capabilities/setup/targets.ts +435 -0
- package/src/capabilities/setup/types.ts +23 -70
- package/src/capabilities/shared/assertExecOk.ts +68 -10
- package/src/capabilities/shared/index.ts +43 -0
- package/src/capabilities/shared/packageManager.test.ts +470 -0
- package/src/capabilities/shared/packageManager.ts +425 -34
- package/src/capabilities/skill/bundledSkills.test.ts +347 -0
- package/src/capabilities/skill/discover.ts +131 -10
- package/src/capabilities/skill/index.ts +1 -1
- package/src/capabilities/skill/render.ts +10 -9
- package/src/capabilities/skill/skill.test.ts +22 -7
- package/src/capabilities/skill/verbs.ts +3 -4
- package/src/capabilities/sources/collectStatus.ts +7 -2
- package/src/capabilities/sources/index.ts +1 -1
- package/src/capabilities/sources/installSkills.ts +265 -10
- package/src/capabilities/sources/runUpdate.ts +131 -23
- package/src/capabilities/sources/sources.test.ts +382 -2
- package/src/capabilities/sources/status.render.ts +1 -1
- package/src/capabilities/sources/status.verb.ts +1 -1
- package/src/capabilities/sources/update.render.ts +1 -1
- package/src/capabilities/sources/update.verb.ts +4 -4
- package/src/capabilities/surface.test.ts +136 -19
- package/src/capabilities/upgrade/runUpgrade.ts +53 -14
- package/src/capabilities/upgrade/types.ts +10 -2
- package/src/capabilities/upgrade/upgrade.render.ts +13 -7
- package/src/capabilities/upgrade/upgrade.test.ts +75 -3
- package/src/capabilities/upgrade/upgrade.verb.ts +1 -1
- package/src/capabilities/version/index.ts +12 -0
- package/src/capabilities/version/version.test.ts +66 -0
- package/src/capabilities/version/version.verb.ts +39 -0
- package/src/constants.ts +36 -1
- package/src/identity.test.ts +57 -29
- package/src/kernel/completion/__snapshots__/emitScripts.test.ts.snap +15 -13
- package/src/kernel/completion/complete.test.ts +12 -2
- package/src/kernel/completion/complete.ts +1 -1
- package/src/kernel/completion/emitScripts.ts +1 -1
- package/src/kernel/completion/entitySource.test.ts +16 -3
- package/src/kernel/completion/entitySource.ts +21 -8
- package/src/kernel/completion/model.test.ts +164 -12
- package/src/kernel/completion/model.ts +94 -14
- package/src/kernel/completion/parse.test.ts +4 -7
- package/src/kernel/completion/parse.ts +15 -0
- package/src/kernel/completion/resolve.test.ts +0 -1
- package/src/kernel/completion/safety.test.ts +50 -35
- package/src/kernel/completion/shellDrive.test.ts +28 -9
- package/src/kernel/completion/templates/bash.ts +7 -2
- package/src/kernel/completion/templates/index.ts +23 -0
- package/src/kernel/completion/types.ts +7 -0
- package/src/kernel/config/defaults.test.ts +27 -3
- package/src/kernel/config/defaults.ts +4 -3
- package/src/kernel/config/evaluateProjectConfig.ts +31 -8
- package/src/kernel/config/firstRun.test.ts +44 -38
- package/src/kernel/config/firstRun.ts +24 -88
- package/src/kernel/config/index.ts +1 -1
- package/src/kernel/config/readConfig.test.ts +6 -3
- package/src/kernel/config/readConfig.ts +1 -1
- package/src/kernel/config/schema.ts +3 -1
- package/src/kernel/config/types.ts +3 -1
- package/src/kernel/copy.test.ts +34 -4
- package/src/kernel/copy.ts +54 -0
- package/src/kernel/error/PragmaError.test.ts +5 -2
- package/src/kernel/error/PragmaError.ts +4 -2
- package/src/kernel/error/constants.ts +7 -5
- package/src/kernel/error/fromTaskError.ts +28 -6
- package/src/kernel/error/recovery.ts +14 -0
- package/src/kernel/error/renderError.ts +42 -1
- package/src/kernel/error/types.ts +21 -1
- package/src/kernel/index.ts +35 -0
- package/src/kernel/interactivity.test.ts +76 -0
- package/src/kernel/interactivity.ts +69 -0
- package/src/kernel/packs/collect.ts +12 -16
- package/src/kernel/packs/compile.test.ts +222 -1
- package/src/kernel/packs/compile.ts +93 -3
- package/src/kernel/packs/disclosure.ts +2 -2
- package/src/kernel/packs/graphql/buildLookupDocument.ts +1 -1
- package/src/kernel/packs/graphql/fetchGraphqlLookup.ts +3 -4
- package/src/kernel/packs/graphql/index.ts +20 -0
- package/src/kernel/packs/index.ts +40 -0
- package/src/kernel/packs/iri.test.ts +73 -0
- package/src/kernel/packs/iri.ts +66 -14
- package/src/kernel/packs/renderPack.ts +25 -6
- package/src/kernel/packs/resolveEntity.test.ts +274 -0
- package/src/kernel/packs/resolveEntity.ts +200 -42
- package/src/kernel/packs/runBodies.ts +86 -22
- package/src/kernel/packs/sample.ts +1 -1
- package/src/kernel/packs/schema.ts +78 -5
- package/src/kernel/packs/sparql/applyFilters.ts +136 -16
- package/src/kernel/packs/sparql/buildLookupQuery.test.ts +290 -0
- package/src/kernel/packs/sparql/buildLookupQuery.ts +367 -17
- package/src/kernel/packs/sparql/index.ts +37 -0
- package/src/kernel/packs/sparql/runSelect.test.ts +1 -1
- package/src/kernel/packs/sparql/runSelect.ts +3 -4
- package/src/kernel/packs/toolDescription.test.ts +77 -4
- package/src/kernel/packs/types.ts +136 -0
- package/src/kernel/packs/uniqueness.ts +1 -1
- package/src/kernel/project/cli/buildProgram.test.ts +218 -12
- package/src/kernel/project/cli/buildProgram.ts +84 -18
- package/src/kernel/project/cli/constants.ts +34 -0
- package/src/kernel/project/cli/dispatch.test.ts +160 -2
- package/src/kernel/project/cli/dispatch.ts +226 -45
- package/src/kernel/project/cli/exitCodes.ts +1 -1
- package/src/kernel/project/cli/globalFlags.test.ts +117 -1
- package/src/kernel/project/cli/globalFlags.ts +134 -31
- package/src/kernel/project/cli/helpFormat.ts +14 -2
- package/src/kernel/project/cli/rootHelp.ts +74 -12
- package/src/kernel/project/cli/suggest.test.ts +33 -1
- package/src/kernel/project/cli/suggest.ts +25 -1
- package/src/kernel/project/cli/verbHelp.test.ts +30 -0
- package/src/kernel/project/cli/verbHelp.ts +23 -7
- package/src/kernel/project/mcp/buildServer.ts +7 -4
- package/src/kernel/project/mcp/envelope.ts +2 -2
- package/src/kernel/project/mcp/instructions.ts +2 -2
- package/src/kernel/project/mcp/mcpError.ts +1 -1
- package/src/kernel/project/mcp/parity.test.ts +5 -2
- package/src/kernel/project/mcp/prompts/index.ts +37 -0
- package/src/kernel/project/mcp/prompts/source.ts +2 -2
- package/src/kernel/project/mcp/registerVerb.ts +55 -10
- package/src/kernel/project/mcp/serve.ts +2 -2
- package/src/kernel/render/__snapshots__/renderers.test.ts.snap +7 -4
- package/src/kernel/render/contracts.ts +21 -0
- package/src/kernel/render/envelope.ts +2 -3
- package/src/kernel/render/formatters.ts +1 -1
- package/src/kernel/render/renderers.test.ts +243 -6
- package/src/kernel/render/renderers.ts +222 -20
- package/src/kernel/render/style.test.ts +75 -24
- package/src/kernel/render/style.ts +59 -6
- package/src/kernel/render/turtle.ts +222 -0
- package/src/kernel/render/vocabulary.ts +276 -0
- package/src/kernel/runtime/graphpack/buildIndex.ts +1 -1
- package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +3 -3
- package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +1 -1
- package/src/kernel/runtime/graphpack/embedded.ts +3 -3
- package/src/kernel/runtime/graphpack/manifest.ts +1 -1
- package/src/kernel/runtime/graphpack/read.ts +1 -2
- package/src/kernel/runtime/loadSession.ts +1 -1
- package/src/kernel/runtime/probe.ts +6 -6
- package/src/kernel/runtime/readEntity.ts +472 -28
- package/src/kernel/runtime/refs/index.ts +39 -0
- package/src/kernel/runtime/refs/parseRef.ts +2 -2
- package/src/kernel/runtime/refs/resolve.ts +4 -4
- package/src/kernel/runtime/storeReadiness.ts +1 -2
- package/src/kernel/runtime/types.ts +15 -1
- package/src/kernel/runtime/wasmEmbed.test.ts +37 -39
- package/src/kernel/spec/emitReference.ts +105 -30
- package/src/kernel/spec/emitSurface.ts +48 -6
- package/src/kernel/spec/surfaceConformance.test.ts +4 -2
- package/src/kernel/spec/types.ts +277 -4
- package/src/testing/PARITY_GAPS.ts +9 -3
- package/src/testing/behavioral/docExamples.test.ts +16 -0
- package/src/testing/behavioral/errorMatrix.mcp.test.ts +112 -9
- package/src/testing/behavioral/firstRun.e2e.test.ts +24 -24
- package/src/testing/behavioral/journeys.cli.test.ts +1 -1
- package/src/testing/behavioral/journeys.defaultPack.test.ts +7 -7
- package/src/testing/behavioral/journeys.firstInstall.test.ts +7 -2
- package/src/testing/behavioral/journeys.implementation.test.ts +206 -0
- package/src/testing/behavioral/journeys.interactiveTty.e2e.test.ts +2 -2
- package/src/testing/behavioral/journeys.packageStories.test.ts +10 -7
- package/src/testing/behavioral/mcpServe.e2e.test.ts +57 -2
- package/src/testing/behavioral/mcpSurface.test.ts +1 -1
- package/src/testing/behavioral/rootCli.e2e.test.ts +26 -2
- package/src/testing/eval/__snapshots__/eval.test.ts.snap +26 -1
- package/src/testing/eval/cases/effectful.ts +3 -2
- package/src/testing/eval/cases/readNouns.ts +245 -9
- package/src/testing/fixtures/blockGraph.ts +104 -10
- package/src/testing/fixtures/graph/canonical.ts +182 -13
- package/src/testing/fixtures/graph/defaultPack.ts +1 -1
- package/src/testing/helpers/blankCanonicalRanges.ts +36 -0
- package/src/testing/helpers/projectMcp.ts +32 -6
- package/src/testing/helpers/runCli.ts +35 -18
- package/src/testing/perf/budgets.test.ts +20 -9
- package/src/testing/perf/budgets.ts +58 -9
- package/src/testing/perf/codegen.test.ts +126 -0
- package/src/testing/perf/globalSetup.test.ts +286 -0
- package/src/testing/perf/globalSetup.ts +505 -23
- package/src/testing/perf/measure.test.ts +38 -0
- package/src/testing/perf/measure.ts +23 -4
- package/src/testing/setupXdgIsolation.ts +81 -21
- package/src/testing/tempRoot.globalSetup.ts +122 -0
- package/dist/pragma +0 -0
- package/src/capabilities/create/compiledCreate.subprocess.test.ts +0 -189
- package/src/capabilities/create/templates.embedded.generated.ts +0 -28
- package/src/capabilities/doctor/checks/checkConfigFile.ts +0 -42
- package/src/capabilities/doctor/checks/checkMcpCommands.ts +0 -114
- package/src/capabilities/doctor/checks/checkMcpConfigured.ts +0 -68
- package/src/capabilities/doctor/checks/checkSkillsSymlinked.ts +0 -61
- package/src/capabilities/doctor/checks/deriveBand.test.ts +0 -42
- package/src/capabilities/doctor/checks/deriveBand.ts +0 -28
- package/src/capabilities/shared/bands.ts +0 -16
- package/src/kernel/config/__snapshots__/firstRun.test.ts.snap +0 -11
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `create` verbs — `component` / `package` / `application`, the THREE
|
|
3
|
+
* binding-level VerbSpecs (the MCP/covenant/reference grammar). Their params
|
|
4
|
+
* DERIVE mechanically from the generators' own prompts, projected at build
|
|
5
|
+
* time into `createSurface.generated.ts` — no hand mirrors, no flag aliases:
|
|
6
|
+
* the prompt names ARE the param/MCP-arg names, the FLAG tokens are
|
|
7
|
+
* `buildOptionInfo`'s registered forms (a default-true confirm registers
|
|
8
|
+
* ONLY `--no-<kebab>` — the covenant and the doc gate speak that vocabulary
|
|
9
|
+
* through the mount's registered-syntax seam, L-CIS-2), and `component`'s
|
|
10
|
+
* params are the FRAMEWORK UNION of its three declared leaves plus a
|
|
11
|
+
* required, positional `framework` enum derived from the tree segments
|
|
12
|
+
* (L-CIS). The CLI mounts the
|
|
13
|
+
* generator TREE itself (`create component react [component-path]` — see
|
|
14
|
+
* `mount.ts`); these specs are what MCP tools and the emitted surface read.
|
|
15
|
+
*
|
|
16
|
+
* LAZY DISPATCH (R9 + lazy-React): NOTHING of summon-core is imported
|
|
17
|
+
* statically — not even the UI-free projection subpath: this module sits on
|
|
18
|
+
* the capabilities barrel, so `--help` and `__complete` pay its import cost
|
|
19
|
+
* on every spawn, and the projection helpers it needs (`decideInteraction`,
|
|
20
|
+
* `refusalMessage`, `toKebabCase`, …) are only ever called inside `run`.
|
|
21
|
+
* `run` lazily `import()`s `pickGenerator` + summon-core + the projection, so
|
|
22
|
+
* `buildProgram` / `--help` / `__complete` / reads never load summon-core or
|
|
23
|
+
* the generators — and `create --yes` never loads React. The lazy-graph
|
|
24
|
+
* guard in `lazy.test.ts` pins the boundary.
|
|
25
|
+
*/
|
|
26
|
+
import { isAbsolute } from "node:path";
|
|
27
|
+
import { BIN_NAME } from "../../constants.js";
|
|
28
|
+
import { PragmaError } from "../../kernel/error/index.js";
|
|
29
|
+
import { COMPONENT_FRAMEWORKS, CREATE_GENERATORS } from "./constants.js";
|
|
30
|
+
import { createFormatters, formatCreatePlan } from "./create.render.js";
|
|
31
|
+
import { CREATE_SURFACE } from "./createSurface.generated.js";
|
|
32
|
+
import { generatorToParams, promptToParam } from "./generatorToVerbSpec.js";
|
|
33
|
+
import { assertInsideWorkspace } from "./pathJail.js";
|
|
34
|
+
// =============================================================================
|
|
35
|
+
// Params, derived from the projected surface (createSurface.generated.ts)
|
|
36
|
+
// =============================================================================
|
|
37
|
+
/**
|
|
38
|
+
* `framework` — the component tree segments as a REQUIRED positional enum
|
|
39
|
+
* (`create component <framework>`), values derived from the declared paths.
|
|
40
|
+
* Deliberately NO default: summon has no default framework, and neither does
|
|
41
|
+
* the projection of it.
|
|
42
|
+
*/
|
|
43
|
+
const FRAMEWORK_PARAM = {
|
|
44
|
+
kind: "enum",
|
|
45
|
+
name: "framework",
|
|
46
|
+
doc: "Component framework — the tree segment (`create component <framework>`).",
|
|
47
|
+
values: COMPONENT_FRAMEWORKS,
|
|
48
|
+
required: true,
|
|
49
|
+
positional: true,
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* The FRAMEWORK UNION of the component leaves' prompts (A4): first-seen order
|
|
53
|
+
* over the declared framework order; a prompt identical across all declaring
|
|
54
|
+
* frameworks keeps its default; a prompt whose default DIFFERS across
|
|
55
|
+
* frameworks omits it (`required: false` — the selected framework's own
|
|
56
|
+
* prompt default applies at run time); a prompt not present on every
|
|
57
|
+
* framework gets its doc suffixed with the declaring frameworks.
|
|
58
|
+
*/
|
|
59
|
+
function unionComponentParams() {
|
|
60
|
+
const paths = CREATE_GENERATORS.component.paths;
|
|
61
|
+
const byName = new Map();
|
|
62
|
+
const order = [];
|
|
63
|
+
for (const commandPath of paths) {
|
|
64
|
+
const framework = commandPath.split("/")[1];
|
|
65
|
+
for (const prompt of surfaceFor(commandPath).prompts) {
|
|
66
|
+
let entry = byName.get(prompt.name);
|
|
67
|
+
if (!entry) {
|
|
68
|
+
entry = { prompt, frameworks: [], defaults: [] };
|
|
69
|
+
byName.set(prompt.name, entry);
|
|
70
|
+
order.push(prompt.name);
|
|
71
|
+
}
|
|
72
|
+
entry.frameworks.push(framework);
|
|
73
|
+
entry.defaults.push(prompt.default);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return order.map((name) => {
|
|
77
|
+
const entry = byName.get(name);
|
|
78
|
+
const universal = entry.frameworks.length === paths.length;
|
|
79
|
+
const agreed = entry.defaults.every((value) => Object.is(value, entry.defaults[0]));
|
|
80
|
+
const param = promptToParam(agreed ? entry.prompt : { ...entry.prompt, default: undefined });
|
|
81
|
+
return {
|
|
82
|
+
...param,
|
|
83
|
+
...(universal
|
|
84
|
+
? {}
|
|
85
|
+
: { doc: `${param.doc} (frameworks: ${entry.frameworks.join(", ")})` }),
|
|
86
|
+
...(agreed ? {} : { required: false }),
|
|
87
|
+
};
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/** The projected surface for a declared path (fails loud on a stale build). */
|
|
91
|
+
function surfaceFor(commandPath) {
|
|
92
|
+
const surface = CREATE_SURFACE[commandPath];
|
|
93
|
+
if (!surface) {
|
|
94
|
+
throw new Error(`createSurface.generated.ts carries no entry for declared path "${commandPath}" — rerun the build`);
|
|
95
|
+
}
|
|
96
|
+
return surface;
|
|
97
|
+
}
|
|
98
|
+
const componentParams = [
|
|
99
|
+
FRAMEWORK_PARAM,
|
|
100
|
+
...unionComponentParams(),
|
|
101
|
+
];
|
|
102
|
+
const packageParams = generatorToParams(surfaceFor("package").prompts);
|
|
103
|
+
const applicationParams = generatorToParams(surfaceFor("application/react").prompts);
|
|
104
|
+
/** The path param each noun jails (package writes into a name-derived subdir). */
|
|
105
|
+
const PATH_PARAM = {
|
|
106
|
+
component: "componentPath",
|
|
107
|
+
package: undefined,
|
|
108
|
+
application: "appPath",
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* The two value classes the shared prompt validators reject as workspace
|
|
112
|
+
* ESCAPES — absolute, and any `..` segment: exactly the jail's own
|
|
113
|
+
* non-symlink classes, which the round-9 reorder moved onto the validator
|
|
114
|
+
* tier. Used to keep the jail-tier `recovery` hint on those rejections.
|
|
115
|
+
*/
|
|
116
|
+
const isEscapeValue = (value) => typeof value === "string" &&
|
|
117
|
+
(isAbsolute(value) || value.split(/[/\\]/).includes(".."));
|
|
118
|
+
// =============================================================================
|
|
119
|
+
// The lazy run — the one-line summon↔pragma seam per invocation
|
|
120
|
+
// =============================================================================
|
|
121
|
+
/**
|
|
122
|
+
* True when a dynamic import failed because the module could not be RESOLVED.
|
|
123
|
+
* summon-core + the generators are now bundled into the binary, so this should
|
|
124
|
+
* not arise; {@link loadCreateRuntime} keeps it as a defensive backstop that
|
|
125
|
+
* turns a resolution failure into a clean gate rather than a raw "internal bug"
|
|
126
|
+
* report. Matched structurally across bun (`ResolveMessage`) and node
|
|
127
|
+
* (`ERR_MODULE_NOT_FOUND`) so a genuine runtime error still propagates.
|
|
128
|
+
*/
|
|
129
|
+
export function isModuleNotFound(cause) {
|
|
130
|
+
if (!cause || typeof cause !== "object")
|
|
131
|
+
return false;
|
|
132
|
+
const { code, name, message } = cause;
|
|
133
|
+
return (code === "ERR_MODULE_NOT_FOUND" ||
|
|
134
|
+
code === "MODULE_NOT_FOUND" ||
|
|
135
|
+
name === "ResolveMessage" ||
|
|
136
|
+
(typeof message === "string" &&
|
|
137
|
+
/cannot find (module|package)/i.test(message)));
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Load the create runtime — the generator selector and summon-core.
|
|
141
|
+
*
|
|
142
|
+
* Lazy, and the specifiers stay STATIC so they remain analysable: importing
|
|
143
|
+
* these pulls summon-core and with it React, which must stay off `--help`,
|
|
144
|
+
* completion and every read. The generators load their own templates from their
|
|
145
|
+
* own packages on first `generate()`.
|
|
146
|
+
*
|
|
147
|
+
* A resolution failure means a broken or pruned install, and
|
|
148
|
+
* {@link isModuleNotFound} turns it into a clean refusal rather than an
|
|
149
|
+
* internal-bug report.
|
|
150
|
+
*/
|
|
151
|
+
async function loadCreateRuntime() {
|
|
152
|
+
try {
|
|
153
|
+
const [summon, projection, pick] = await Promise.all([
|
|
154
|
+
import("@canonical/summon-core"),
|
|
155
|
+
import("@canonical/summon-core/projection"),
|
|
156
|
+
import("./pickGenerator.js"),
|
|
157
|
+
]);
|
|
158
|
+
return { pickGenerator: pick.pickGenerator, summon, projection };
|
|
159
|
+
}
|
|
160
|
+
catch (cause) {
|
|
161
|
+
if (isModuleNotFound(cause)) {
|
|
162
|
+
throw new PragmaError({
|
|
163
|
+
code: "UNSUPPORTED",
|
|
164
|
+
message: "`create` cannot load its generator runtime — the `@canonical/summon-*` packages it depends on are missing from this install.",
|
|
165
|
+
recovery: {
|
|
166
|
+
message: `Reinstall ${BIN_NAME} to restore its generator dependencies.`,
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
throw cause;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/** The create noun that declares a command path. */
|
|
174
|
+
function kindOf(commandPath) {
|
|
175
|
+
for (const [kind, binding] of Object.entries(CREATE_GENERATORS)) {
|
|
176
|
+
if (binding.paths.includes(commandPath)) {
|
|
177
|
+
return kind;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
throw PragmaError.internalError(`undeclared command path ${commandPath}`);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Build the `create` Task for one invocation of a declared COMMAND PATH: pick
|
|
184
|
+
* the generator, pre-validate the provided answers (the shared validator
|
|
185
|
+
* tier), jail its output path (the host backstop, after validation),
|
|
186
|
+
* decide the interaction mode (the ONE shared decision — same function, same
|
|
187
|
+
* inputs as the summon bin), and return `execute` wired to the strategy the
|
|
188
|
+
* mode names.
|
|
189
|
+
*
|
|
190
|
+
* `params` are the EXPLICIT answers only (CLI flags/positional; MCP args
|
|
191
|
+
* carry schema defaults, which is that transport's contract). MCP keeps its
|
|
192
|
+
* plan-first/confirm path untouched — `decideInteraction` is CLI-only.
|
|
193
|
+
*
|
|
194
|
+
* @param commandPath - The declared command path (`component/react`, …).
|
|
195
|
+
* @param params - The provided answers for this invocation.
|
|
196
|
+
* @param rt - The pragma runtime.
|
|
197
|
+
* @returns A `Promise<Task<GeneratorResult>>` (the union's third arm) the
|
|
198
|
+
* dispatcher/MCP handler awaits into a Task before interpreting.
|
|
199
|
+
*/
|
|
200
|
+
export async function runCreate(commandPath, params, rt) {
|
|
201
|
+
// Lazy: importing these pulls summon-core (and with it React) — kept off every
|
|
202
|
+
// non-create path. The specifiers stay static so they remain analysable; the
|
|
203
|
+
// embedded `.ejs` manifest is injected here as the disk read's fallback.
|
|
204
|
+
const { pickGenerator, summon, projection } = await loadCreateRuntime();
|
|
205
|
+
const generator = pickGenerator(commandPath);
|
|
206
|
+
const kind = kindOf(commandPath);
|
|
207
|
+
// The tree segment is not an answer: drop a stray `framework` key so the
|
|
208
|
+
// generators (whose prompts never include it) see only their own answers.
|
|
209
|
+
const answers = { ...params };
|
|
210
|
+
delete answers.framework;
|
|
211
|
+
// Reject a flag/arg-provided answer that fails its prompt's own constraint,
|
|
212
|
+
// with a clean INVALID_INPUT (execute re-validates as a backstop). Runs
|
|
213
|
+
// BEFORE the jail: the path prompts' own validators reject absolute/`..`
|
|
214
|
+
// escapes, so an escaping output path fails the SHARED validator line in
|
|
215
|
+
// both hosts (the cross-CLI matrix) and the jail below stays the backstop
|
|
216
|
+
// its docblock claims.
|
|
217
|
+
const pathParam = PATH_PARAM[kind];
|
|
218
|
+
const invalid = summon.validateAnswers(generator.prompts, answers);
|
|
219
|
+
if (invalid !== null) {
|
|
220
|
+
// A rejection of the JAILED path param's escape classes (absolute /
|
|
221
|
+
// `..` — the two the round-9 reorder moved off the jail) attaches ONE
|
|
222
|
+
// workspace hint to BOTH classes — the jail's `..`-branch message —
|
|
223
|
+
// deliberately NOT reproducing the jail's per-branch hints (its
|
|
224
|
+
// absolute branch says "Use a path relative to the current
|
|
225
|
+
// directory."; those stay the jail's own, pinned in pathJail.test.ts).
|
|
226
|
+
// The message stays the validator's — the shared cross-host line. A
|
|
227
|
+
// non-escape rejection of the same param (e.g. casing) never carried
|
|
228
|
+
// recovery and still does not.
|
|
229
|
+
const escaped = pathParam !== undefined &&
|
|
230
|
+
invalid.startsWith(`Invalid --${projection.toKebabCase(pathParam)} `) &&
|
|
231
|
+
isEscapeValue(answers[pathParam]);
|
|
232
|
+
throw new PragmaError({
|
|
233
|
+
code: "INVALID_INPUT",
|
|
234
|
+
message: invalid,
|
|
235
|
+
...(escaped
|
|
236
|
+
? { recovery: { message: "The path must stay inside the workspace." } }
|
|
237
|
+
: {}),
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
// SEC-2: reject a path escaping the workspace BEFORE any effect runs — the
|
|
241
|
+
// host-level backstop behind the validators, and the only tier that catches
|
|
242
|
+
// a symlink RESOLVING outside the workspace.
|
|
243
|
+
if (pathParam)
|
|
244
|
+
assertInsideWorkspace(pathParam, answers[pathParam], rt.cwd);
|
|
245
|
+
// An ABSENT interaction context defaults to `yes: false` — nothing may
|
|
246
|
+
// silently auto-apply just because a caller forgot to say how it is driven.
|
|
247
|
+
const { isTTY, transport, yes, signal, abort } = rt.interaction ?? {
|
|
248
|
+
isTTY: false,
|
|
249
|
+
transport: "cli",
|
|
250
|
+
yes: false,
|
|
251
|
+
};
|
|
252
|
+
const stamp = summon.createGeneratorStamp(generator);
|
|
253
|
+
// MCP: params-or-error, plan-first/confirm — untouched by the decision
|
|
254
|
+
// table (an MCP call is never a terminal session).
|
|
255
|
+
if (transport === "mcp") {
|
|
256
|
+
const prompt = summon.mcpPrompt(answers);
|
|
257
|
+
rt.exec = {
|
|
258
|
+
cwd: rt.cwd,
|
|
259
|
+
promptHandler: prompt,
|
|
260
|
+
onEffectStart: summon.createStampOnEffectStart(stamp),
|
|
261
|
+
onLog: (_level, message) => process.stderr.write(`${message}\n`),
|
|
262
|
+
signal,
|
|
263
|
+
};
|
|
264
|
+
return summon.execute(generator, { prompt, params: answers, signal });
|
|
265
|
+
}
|
|
266
|
+
// The ONE interaction decision (R2) — the same function, over the same five
|
|
267
|
+
// inputs, as the summon bin. The mount refuses before ever loading this
|
|
268
|
+
// runtime; re-deriving here keeps direct kernel callers honest too.
|
|
269
|
+
const { mode } = projection.decideInteraction({
|
|
270
|
+
dryRun: rt.mutation?.preview === true,
|
|
271
|
+
undo: rt.mutation?.undo === true,
|
|
272
|
+
yes: yes === true,
|
|
273
|
+
isTTY: isTTY === true,
|
|
274
|
+
explicitComplete: projection.explicitAnswersComplete(generator.prompts, answers),
|
|
275
|
+
});
|
|
276
|
+
if (mode === "refuse") {
|
|
277
|
+
throw new PragmaError({
|
|
278
|
+
code: "INVALID_INPUT",
|
|
279
|
+
message: projection.refusalMessage(projection.missingExplicitFlags(generator.prompts, answers)),
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
// Wizard: ask exactly the pending prompts — the provided answers are
|
|
283
|
+
// explicit and pre-seeded; `collectAnswers` skips them and evaluates each
|
|
284
|
+
// conditional against the answers as they land (wizard-script parity).
|
|
285
|
+
if (mode === "wizard") {
|
|
286
|
+
// `onCancel` (H2): an in-Ink Ctrl-C during execution aborts the run so the
|
|
287
|
+
// interpreter stops writing — raw mode swallows the SIGINT, so the wizard
|
|
288
|
+
// drives the abort. Shared with setup by construction.
|
|
289
|
+
// `cwd` also reaches the wizard: its confirm-gate preview reads the same
|
|
290
|
+
// jail-checked write root the interpreter resolves effect paths against.
|
|
291
|
+
const session = summon.inkPrompt(generator, {
|
|
292
|
+
signal,
|
|
293
|
+
onCancel: abort,
|
|
294
|
+
cwd: rt.cwd,
|
|
295
|
+
// Flag-provided answers reach the wizard too: without the seed the
|
|
296
|
+
// confirm gate previews with them missing (undefined paths, wrong plan).
|
|
297
|
+
initialAnswers: answers,
|
|
298
|
+
});
|
|
299
|
+
// Thread the per-call write root: the interpreter resolves the generator's
|
|
300
|
+
// relative output paths against `rt.cwd` — the SAME dir the SEC-2 jail
|
|
301
|
+
// validated above — so the write can never escape the checked directory.
|
|
302
|
+
rt.exec = {
|
|
303
|
+
cwd: rt.cwd,
|
|
304
|
+
promptHandler: session.promptHandler,
|
|
305
|
+
onEffectStart: summon.createStampOnEffectStart(stamp, session.onEffectStart),
|
|
306
|
+
onEffectComplete: session.onEffectComplete,
|
|
307
|
+
onLog: session.onLog,
|
|
308
|
+
dispose: session.dispose,
|
|
309
|
+
signal,
|
|
310
|
+
};
|
|
311
|
+
return summon.execute(generator, {
|
|
312
|
+
prompt: session.promptHandler,
|
|
313
|
+
params: answers,
|
|
314
|
+
signal,
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
// run / batch-dry-run / batch-undo: flags + defaults, never a wizard —
|
|
318
|
+
// `autoPrompt` resolves each unprovided prompt to its default or fails
|
|
319
|
+
// loudly on a missing required answer. Same per-call write root as the
|
|
320
|
+
// wizard branch: `rt.cwd` feeds both the SEC-2 jail and the interpreter's
|
|
321
|
+
// effect-path base, atomically.
|
|
322
|
+
const prompt = summon.autoPrompt(answers);
|
|
323
|
+
rt.exec = {
|
|
324
|
+
cwd: rt.cwd,
|
|
325
|
+
promptHandler: prompt,
|
|
326
|
+
onEffectStart: summon.createStampOnEffectStart(stamp),
|
|
327
|
+
onLog: (_level, message) => process.stderr.write(`${message}\n`),
|
|
328
|
+
signal,
|
|
329
|
+
};
|
|
330
|
+
return summon.execute(generator, { prompt, params: answers, signal });
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* The shared capability: storeless, mutating, interactive, MCP-exposed.
|
|
334
|
+
*
|
|
335
|
+
* `destructive: false` is load-bearing (D4): create only WRITES NEW files, so it
|
|
336
|
+
* is explicitly non-destructive. Without it `annotationsFor` emits no
|
|
337
|
+
* `destructiveHint`, and MCP clients default an unset hint on a non-read-only
|
|
338
|
+
* tool to `true` — advertising create as destructive, the opposite of intent.
|
|
339
|
+
*/
|
|
340
|
+
export const CREATE_CAPABILITY = {
|
|
341
|
+
needsStore: false,
|
|
342
|
+
mutates: true,
|
|
343
|
+
destructive: false,
|
|
344
|
+
interactive: true,
|
|
345
|
+
mcp: {
|
|
346
|
+
expose: true,
|
|
347
|
+
annotations: { readOnlyHint: false, openWorldHint: false },
|
|
348
|
+
},
|
|
349
|
+
};
|
|
350
|
+
/**
|
|
351
|
+
* The shared output spec: the outcome formatters plus the dry-run seam.
|
|
352
|
+
*
|
|
353
|
+
* ONE constant because there are TWO specs per leaf — the binding-level verbs
|
|
354
|
+
* below (what MCP and the emitted surface read) and the per-leaf spec the
|
|
355
|
+
* mount synthesizes for `create component react …` (what a user actually
|
|
356
|
+
* runs). They describe the same generation, so a preview that reached only one
|
|
357
|
+
* of them would be a preview the CLI never showed.
|
|
358
|
+
*
|
|
359
|
+
* `formatPlan` renders through summon's own effect formatter instead of the
|
|
360
|
+
* kernel's raw dump, so the two bins describe the identical tree they write
|
|
361
|
+
* identically. `planData` stays unset — the effects the preview records ARE
|
|
362
|
+
* the plan — which is what leaves the `--format json` dry-run body exactly as
|
|
363
|
+
* it was.
|
|
364
|
+
*
|
|
365
|
+
* It resolves a PROMISE because {@link formatCreatePlan} loads that formatter
|
|
366
|
+
* behind a dynamic `import()`: this constant is reachable from the
|
|
367
|
+
* capabilities barrel, and the whole point of the lazy-dispatch boundary above
|
|
368
|
+
* is that nothing on that graph pays for summon-core on a `--help` spawn.
|
|
369
|
+
*/
|
|
370
|
+
export const CREATE_OUTPUT = {
|
|
371
|
+
formatters: createFormatters,
|
|
372
|
+
formatPlan: (_planData, effects, verbose) => formatCreatePlan(effects, verbose),
|
|
373
|
+
};
|
|
374
|
+
/**
|
|
375
|
+
* Build a create verb. `run` presents `Promise<Task<R>>` through the `Task<R>`
|
|
376
|
+
* arm by an honest cast at this one site (mirroring `sources update`): a literal
|
|
377
|
+
* `Promise<Task<R>>` arm in the union would poison async read-verb inference.
|
|
378
|
+
*
|
|
379
|
+
* The binding-level `run` maps its kind (+ `framework` for component) onto
|
|
380
|
+
* the declared command path — the MCP transport's view of the tree.
|
|
381
|
+
*/
|
|
382
|
+
function createVerb(kind, summary, params, examples) {
|
|
383
|
+
return {
|
|
384
|
+
path: ["create", kind],
|
|
385
|
+
summary,
|
|
386
|
+
params,
|
|
387
|
+
output: CREATE_OUTPUT,
|
|
388
|
+
examples,
|
|
389
|
+
capability: CREATE_CAPABILITY,
|
|
390
|
+
run: (params_, rt) => {
|
|
391
|
+
let commandPath;
|
|
392
|
+
if (kind === "component") {
|
|
393
|
+
const framework = String(params_.framework ?? "");
|
|
394
|
+
if (!COMPONENT_FRAMEWORKS.includes(framework)) {
|
|
395
|
+
throw PragmaError.invalidInput("framework", framework, {
|
|
396
|
+
validOptions: [...COMPONENT_FRAMEWORKS],
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
commandPath = `component/${framework}`;
|
|
400
|
+
}
|
|
401
|
+
else {
|
|
402
|
+
commandPath = CREATE_GENERATORS[kind].paths[0];
|
|
403
|
+
}
|
|
404
|
+
return runCreate(commandPath, params_, rt);
|
|
405
|
+
},
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* The `create` verbs, one per declared generator binding — so adding a binding
|
|
410
|
+
* to {@link CREATE_GENERATORS} without surfacing it is a type error rather than
|
|
411
|
+
* a silent no-op. Key order is authoring order, which `index.ts` preserves into
|
|
412
|
+
* the command tree, `--help` and the emitted surface.
|
|
413
|
+
*/
|
|
414
|
+
export const createVerbs = {
|
|
415
|
+
component: createVerb("component", "Scaffold a React, Svelte, or Lit component.", componentParams, [
|
|
416
|
+
{
|
|
417
|
+
cmd: `${BIN_NAME} create component react src/components/Button`,
|
|
418
|
+
note: "React component with tests, stories, and styles",
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
cmd: `${BIN_NAME} create component svelte src/lib/Card --dry-run`,
|
|
422
|
+
note: "preview the files without writing",
|
|
423
|
+
},
|
|
424
|
+
]),
|
|
425
|
+
package: createVerb("package", "Scaffold a new npm package for the monorepo.", packageParams, [
|
|
426
|
+
{
|
|
427
|
+
cmd: `${BIN_NAME} create package --name @canonical/my-lib --type library`,
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
cmd: `${BIN_NAME} create package --name @canonical/my-tool --no-run-install`,
|
|
431
|
+
},
|
|
432
|
+
]),
|
|
433
|
+
application: createVerb("application", "Scaffold a full React application with SSR and routing.", applicationParams, [
|
|
434
|
+
{ cmd: `${BIN_NAME} create application react my-app` },
|
|
435
|
+
{ cmd: `${BIN_NAME} create application react my-app --relay` },
|
|
436
|
+
]),
|
|
437
|
+
};
|
|
438
|
+
//# sourceMappingURL=create.verb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.verb.js","sourceRoot":"","sources":["../../../../src/capabilities/create/create.verb.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAIvC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG1D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGtD,gFAAgF;AAChF,0EAA0E;AAC1E,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,eAAe,GAAc;IACjC,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,WAAW;IACjB,GAAG,EAAE,0EAA0E;IAC/E,MAAM,EAAE,oBAAoB;IAC5B,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,IAAI;CACjB,CAAC;AAEF;;;;;;;GAOG;AACH,SAAS,oBAAoB;IAC3B,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,GAAG,EAGnB,CAAC;IACJ,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,WAAW,IAAI,KAAK,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAW,CAAC;QACtD,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;YACrD,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;gBACjD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YACD,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAE5B,CAAC;QACF,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;QAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAC5C,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CACpC,CAAC;QACF,MAAM,KAAK,GAAG,aAAa,CACzB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAChE,CAAC;QACF,OAAO;YACL,GAAG,KAAK;YACR,GAAG,CAAC,SAAS;gBACX,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,iBAAiB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACzE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;SAC1B,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,SAAS,UAAU,CAAC,WAAmB;IACrC,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,kEAAkE,WAAW,qBAAqB,CACnG,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,eAAe,GAAgB;IACnC,eAAe;IACf,GAAG,oBAAoB,EAAE;CAC1B,CAAC;AACF,MAAM,aAAa,GAAgB,iBAAiB,CAClD,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,CAC9B,CAAC;AACF,MAAM,iBAAiB,GAAgB,iBAAiB,CACtD,UAAU,CAAC,mBAAmB,CAAC,CAAC,OAAO,CACxC,CAAC;AAEF,kFAAkF;AAClF,MAAM,UAAU,GAA2C;IACzD,SAAS,EAAE,eAAe;IAC1B,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,SAAS;CACvB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,aAAa,GAAG,CAAC,KAAc,EAAW,EAAE,CAChD,OAAO,KAAK,KAAK,QAAQ;IACzB,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAE7D,gFAAgF;AAChF,gEAAgE;AAChE,gFAAgF;AAEhF;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAI/B,CAAC;IACF,OAAO,CACL,IAAI,KAAK,sBAAsB;QAC/B,IAAI,KAAK,kBAAkB;QAC3B,IAAI,KAAK,gBAAgB;QACzB,CAAC,OAAO,OAAO,KAAK,QAAQ;YAC1B,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CACjD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,iBAAiB;IAC9B,IAAI,CAAC;QACH,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACnD,MAAM,CAAC,wBAAwB,CAAC;YAChC,MAAM,CAAC,mCAAmC,CAAC;YAC3C,MAAM,CAAC,oBAAoB,CAAC;SAC7B,CAAC,CAAC;QACH,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IACnE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,WAAW,CAAC;gBACpB,IAAI,EAAE,aAAa;gBACnB,OAAO,EACL,8HAA8H;gBAChI,QAAQ,EAAE;oBACR,OAAO,EAAE,aAAa,QAAQ,yCAAyC;iBACxE;aACF,CAAC,CAAC;QACL,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,oDAAoD;AACpD,SAAS,MAAM,CAAC,WAAmB;IACjC,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAChE,IAAK,OAAO,CAAC,KAA2B,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/D,OAAO,IAAkB,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,MAAM,WAAW,CAAC,aAAa,CAAC,2BAA2B,WAAW,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,WAAmB,EACnB,MAA+B,EAC/B,EAAiB;IAEjB,+EAA+E;IAC/E,6EAA6E;IAC7E,yEAAyE;IACzE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAExE,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAEjC,yEAAyE;IACzE,0EAA0E;IAC1E,MAAM,OAAO,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;IACvD,OAAO,OAAO,CAAC,SAAS,CAAC;IAEzB,4EAA4E;IAC5E,wEAAwE;IACxE,yEAAyE;IACzE,yEAAyE;IACzE,0EAA0E;IAC1E,uBAAuB;IACvB,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,oEAAoE;QACpE,sEAAsE;QACtE,oEAAoE;QACpE,gEAAgE;QAChE,2DAA2D;QAC3D,uEAAuE;QACvE,oEAAoE;QACpE,qEAAqE;QACrE,+BAA+B;QAC/B,MAAM,OAAO,GACX,SAAS,KAAK,SAAS;YACvB,OAAO,CAAC,UAAU,CAAC,aAAa,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC;YACrE,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACpC,MAAM,IAAI,WAAW,CAAC;YACpB,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,OAAO;YAChB,GAAG,CAAC,OAAO;gBACT,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,0CAA0C,EAAE,EAAE;gBACvE,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,4EAA4E;IAC5E,6CAA6C;IAC7C,IAAI,SAAS;QAAE,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAE5E,uEAAuE;IACvE,4EAA4E;IAC5E,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,WAAW,IAAI;QACjE,KAAK,EAAE,KAAK;QACZ,SAAS,EAAE,KAAc;QACzB,GAAG,EAAE,KAAK;KACX,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAErD,uEAAuE;IACvE,mDAAmD;IACnD,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACzC,EAAE,CAAC,IAAI,GAAG;YACR,GAAG,EAAE,EAAE,CAAC,GAAG;YACX,aAAa,EAAE,MAAM;YACrB,aAAa,EAAE,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC;YACrD,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC;YAChE,MAAM;SACP,CAAC;QACF,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,4EAA4E;IAC5E,wEAAwE;IACxE,oEAAoE;IACpE,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC;QAC5C,MAAM,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI;QACrC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI;QAChC,GAAG,EAAE,GAAG,KAAK,IAAI;QACjB,KAAK,EAAE,KAAK,KAAK,IAAI;QACrB,gBAAgB,EAAE,UAAU,CAAC,uBAAuB,CAClD,SAAS,CAAC,OAAO,EACjB,OAAO,CACR;KACF,CAAC,CAAC;IAEH,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,MAAM,IAAI,WAAW,CAAC;YACpB,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,UAAU,CAAC,cAAc,CAChC,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAC5D;SACF,CAAC,CAAC;IACL,CAAC;IAED,qEAAqE;IACrE,0EAA0E;IAC1E,uEAAuE;IACvE,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,2EAA2E;QAC3E,0EAA0E;QAC1E,uDAAuD;QACvD,yEAAyE;QACzE,yEAAyE;QACzE,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;YAC1C,MAAM;YACN,QAAQ,EAAE,KAAK;YACf,GAAG,EAAE,EAAE,CAAC,GAAG;YACX,mEAAmE;YACnE,yEAAyE;YACzE,cAAc,EAAE,OAAO;SACxB,CAAC,CAAC;QACH,2EAA2E;QAC3E,uEAAuE;QACvE,yEAAyE;QACzE,EAAE,CAAC,IAAI,GAAG;YACR,GAAG,EAAE,EAAE,CAAC,GAAG;YACX,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,aAAa,EAAE,MAAM,CAAC,wBAAwB,CAC5C,KAAK,EACL,OAAO,CAAC,aAAa,CACtB;YACD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM;SACP,CAAC;QACF,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE;YAC/B,MAAM,EAAE,OAAO,CAAC,aAAa;YAC7B,MAAM,EAAE,OAAO;YACf,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,uEAAuE;IACvE,uEAAuE;IACvE,uEAAuE;IACvE,0EAA0E;IAC1E,gCAAgC;IAChC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC1C,EAAE,CAAC,IAAI,GAAG;QACR,GAAG,EAAE,EAAE,CAAC,GAAG;QACX,aAAa,EAAE,MAAM;QACrB,aAAa,EAAE,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC;QACrD,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC;QAChE,MAAM;KACP,CAAC;IACF,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,UAAU,EAAE,KAAK;IACjB,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,KAAK;IAClB,WAAW,EAAE,IAAI;IACjB,GAAG,EAAE;QACH,MAAM,EAAE,IAAa;QACrB,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;KAC3D;CACF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,aAAa,GAGZ;IACZ,UAAU,EAAE,gBAAgB;IAC5B,UAAU,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAC1C,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC;CACrC,CAAC;AAEF;;;;;;;GAOG;AACH,SAAS,UAAU,CACjB,IAAgB,EAChB,OAAe,EACf,MAAmB,EACnB,QAA8B;IAE9B,OAAO;QACL,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;QACtB,OAAO;QACP,MAAM;QACN,MAAM,EAAE,aAAa;QACrB,QAAQ;QACR,UAAU,EAAE,iBAAiB;QAC7B,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE;YACnB,IAAI,WAAmB,CAAC;YACxB,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;gBACzB,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;gBAClD,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC9C,MAAM,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,EAAE;wBACrD,YAAY,EAAE,CAAC,GAAG,oBAAoB,CAAC;qBACxC,CAAC,CAAC;gBACL,CAAC;gBACD,WAAW,GAAG,aAAa,SAAS,EAAE,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,SAAS,CACd,WAAW,EACX,OAAO,EACP,EAAE,CACiC,CAAC;QACxC,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAGpB;IACF,SAAS,EAAE,UAAU,CACnB,WAAW,EACX,6CAA6C,EAC7C,eAAe,EACf;QACE;YACE,GAAG,EAAE,GAAG,QAAQ,+CAA+C;YAC/D,IAAI,EAAE,iDAAiD;SACxD;QACD;YACE,GAAG,EAAE,GAAG,QAAQ,iDAAiD;YACjE,IAAI,EAAE,mCAAmC;SAC1C;KACF,CACF;IACD,OAAO,EAAE,UAAU,CACjB,SAAS,EACT,8CAA8C,EAC9C,aAAa,EACb;QACE;YACE,GAAG,EAAE,GAAG,QAAQ,yDAAyD;SAC1E;QACD;YACE,GAAG,EAAE,GAAG,QAAQ,4DAA4D;SAC7E;KACF,CACF;IACD,WAAW,EAAE,UAAU,CACrB,aAAa,EACb,yDAAyD,EACzD,iBAAiB,EACjB;QACE,EAAE,GAAG,EAAE,GAAG,QAAQ,kCAAkC,EAAE;QACtD,EAAE,GAAG,EAAE,GAAG,QAAQ,0CAA0C,EAAE;KAC/D,CACF;CACF,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pragma's presentation of a `create` leaf's grouped help — the host half of
|
|
3
|
+
* the summon-core help seam (`CommanderHost.renderHelp`): the projection
|
|
4
|
+
* decides the STRUCTURE (usage, description, the option groups, the host's
|
|
5
|
+
* flag rows), this module effects pragma's house style over it, composed from
|
|
6
|
+
* the same kernel primitives every other help page uses
|
|
7
|
+
* (`kernel/project/cli/helpFormat.ts`) — a dim `Usage:` label, bold headings,
|
|
8
|
+
* cyan-term/dim-description columns. Colour therefore rides the kernel's one
|
|
9
|
+
* gate (chalk's TTY detection plus the style seam's `NO_COLOR` zeroing), so
|
|
10
|
+
* piped output — the cross-CLI structural-parity surface — stays plain bytes.
|
|
11
|
+
*/
|
|
12
|
+
import { helpColumns, helpHeading, helpUsage, } from "../../kernel/project/cli/helpFormat.js";
|
|
13
|
+
/**
|
|
14
|
+
* A row's description with the shared renderer's default-value suffix — the
|
|
15
|
+
* same bytes `renderGroupedHelp` appends, so the structural-parity cells
|
|
16
|
+
* compare the fact, not two spellings of it.
|
|
17
|
+
*/
|
|
18
|
+
function describeOption(description, defaultValue) {
|
|
19
|
+
return defaultValue
|
|
20
|
+
? `${description} (default: ${JSON.stringify(defaultValue)})`
|
|
21
|
+
: description;
|
|
22
|
+
}
|
|
23
|
+
/** Render a `create` leaf's grouped help in pragma's house style. */
|
|
24
|
+
export const renderCreateHelp = (usage, description, groups, hostFlags) => {
|
|
25
|
+
const sections = [
|
|
26
|
+
["Global Options", hostFlags.map((flag) => [flag.flags, flag.description])],
|
|
27
|
+
...[...groups].map(([groupName, options]) => [
|
|
28
|
+
groupName,
|
|
29
|
+
options.map((opt) => [
|
|
30
|
+
opt.flags,
|
|
31
|
+
describeOption(opt.description, opt.defaultValue),
|
|
32
|
+
]),
|
|
33
|
+
]),
|
|
34
|
+
];
|
|
35
|
+
// One column width across ALL sections so the flag column aligns section to
|
|
36
|
+
// section (the root help does the same for its noun column).
|
|
37
|
+
const width = Math.max(...sections.flatMap(([, rows]) => rows.map(([term]) => term.length)), 0);
|
|
38
|
+
const lines = [helpUsage(usage)];
|
|
39
|
+
if (description)
|
|
40
|
+
lines.push("", description);
|
|
41
|
+
for (const [heading, rows] of sections) {
|
|
42
|
+
lines.push("", helpHeading(heading), ...helpColumns(rows, width));
|
|
43
|
+
}
|
|
44
|
+
// Commander prints `formatHelp`'s return verbatim — terminate the page.
|
|
45
|
+
return `${lines.join("\n")}\n`;
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=createHelp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createHelp.js","sourceRoot":"","sources":["../../../../src/capabilities/create/createHelp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,WAAW,EACX,WAAW,EACX,SAAS,GACV,MAAM,wCAAwC,CAAC;AAQhD;;;;GAIG;AACH,SAAS,cAAc,CAAC,WAAmB,EAAE,YAAqB;IAChE,OAAO,YAAY;QACjB,CAAC,CAAC,GAAG,WAAW,cAAc,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG;QAC7D,CAAC,CAAC,WAAW,CAAC;AAClB,CAAC;AAED,qEAAqE;AACrE,MAAM,CAAC,MAAM,gBAAgB,GAA6B,CACxD,KAAK,EACL,WAAW,EACX,MAAM,EACN,SAAS,EACT,EAAE;IACF,MAAM,QAAQ,GAAkB;QAC9B,CAAC,gBAAgB,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3E,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAChB,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,EAAe,EAAE,CAAC;YACrC,SAAS;YACT,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;gBACnB,GAAG,CAAC,KAAK;gBACT,cAAc,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,YAAY,CAAC;aAClD,CAAC;SACH,CACF;KACF,CAAC;IAEF,4EAA4E;IAC5E,6DAA6D;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EACpE,CAAC,CACF,CAAC;IAEF,MAAM,KAAK,GAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,IAAI,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAC7C,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,wEAAwE;IACxE,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC,CAAC"}
|