@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,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Candidate ranking and filtering for the completion tiers.
|
|
3
|
+
*
|
|
4
|
+
* Two disciplines, deliberately different:
|
|
5
|
+
* - {@link filterPrefix} for STRUCTURAL sets (nouns, verbs, flag names):
|
|
6
|
+
* case-sensitive `startsWith` + lexicographic sort, agreeing with what the
|
|
7
|
+
* static scripts' `compgen -W` would produce for the same table.
|
|
8
|
+
* - {@link rankCandidates} for VALUE sets (enum values, entity names):
|
|
9
|
+
* case-insensitive exact > prefix > substring, deduped, tie-broken
|
|
10
|
+
* lexicographically, capped — ported from the v1 `rankUriCompletions`.
|
|
11
|
+
*/
|
|
12
|
+
/** Maximum candidates a ranked (value-tier) resolution returns. */
|
|
13
|
+
export const MAX_CANDIDATES = 50;
|
|
14
|
+
/** Match strength of a partial against one candidate, higher is better. */
|
|
15
|
+
const NO_MATCH = 0;
|
|
16
|
+
const FUZZY_MATCH = 1;
|
|
17
|
+
const SUBSTRING_MATCH = 2;
|
|
18
|
+
const PREFIX_MATCH = 3;
|
|
19
|
+
const EXACT_MATCH = 4;
|
|
20
|
+
/** Whether every char of `needle` appears in `hay`, in order (subsequence). */
|
|
21
|
+
function isSubsequence(needle, hay) {
|
|
22
|
+
if (needle === "")
|
|
23
|
+
return true;
|
|
24
|
+
let i = 0;
|
|
25
|
+
for (const ch of hay) {
|
|
26
|
+
if (ch === needle[i] && ++i === needle.length)
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Score a folded candidate against a folded partial under a match strategy.
|
|
33
|
+
* `prefix` accepts only exact/prefix; `substring` (default) adds substring;
|
|
34
|
+
* `fuzzy` additionally accepts an in-order subsequence, ranked lowest.
|
|
35
|
+
*/
|
|
36
|
+
function score(candidate, partial, match) {
|
|
37
|
+
if (candidate === partial)
|
|
38
|
+
return EXACT_MATCH;
|
|
39
|
+
if (candidate.startsWith(partial))
|
|
40
|
+
return PREFIX_MATCH;
|
|
41
|
+
if (match === "prefix")
|
|
42
|
+
return NO_MATCH;
|
|
43
|
+
if (candidate.includes(partial))
|
|
44
|
+
return SUBSTRING_MATCH;
|
|
45
|
+
if (match === "fuzzy" && isSubsequence(partial, candidate))
|
|
46
|
+
return FUZZY_MATCH;
|
|
47
|
+
return NO_MATCH;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Rank value candidates for a partial word.
|
|
51
|
+
*
|
|
52
|
+
* Exact > prefix > substring > fuzzy; ties broken by the candidate text for
|
|
53
|
+
* determinism; duplicates dropped; capped at `limit`. Case-insensitive by
|
|
54
|
+
* default (canonical casing is preserved in the emitted candidate — `bu` →
|
|
55
|
+
* `Button`). An empty partial matches everything (as a prefix), so it lists the
|
|
56
|
+
* full set sorted.
|
|
57
|
+
*
|
|
58
|
+
* @param candidates - The candidate values.
|
|
59
|
+
* @param partial - The partial word being completed.
|
|
60
|
+
* @param limit - Maximum candidates to return.
|
|
61
|
+
* @param match - Match strategy (default `"substring"`).
|
|
62
|
+
* @param caseSensitive - Match case-sensitively (default `false`).
|
|
63
|
+
* @returns Ranked, deduped, capped candidates (original casing preserved).
|
|
64
|
+
*/
|
|
65
|
+
export function rankCandidates(candidates, partial, limit = MAX_CANDIDATES, match = "substring", caseSensitive = false) {
|
|
66
|
+
const fold = (value) => caseSensitive ? value : value.toLowerCase();
|
|
67
|
+
const needle = fold(partial);
|
|
68
|
+
const scored = [];
|
|
69
|
+
for (const candidate of candidates) {
|
|
70
|
+
const strength = score(fold(candidate), needle, match);
|
|
71
|
+
if (strength > NO_MATCH)
|
|
72
|
+
scored.push({ candidate, strength });
|
|
73
|
+
}
|
|
74
|
+
scored.sort((a, b) => b.strength !== a.strength
|
|
75
|
+
? b.strength - a.strength
|
|
76
|
+
: a.candidate.localeCompare(b.candidate));
|
|
77
|
+
const seen = new Set();
|
|
78
|
+
const ranked = [];
|
|
79
|
+
for (const { candidate } of scored) {
|
|
80
|
+
if (seen.has(candidate))
|
|
81
|
+
continue;
|
|
82
|
+
seen.add(candidate);
|
|
83
|
+
ranked.push(candidate);
|
|
84
|
+
if (ranked.length >= limit)
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
return ranked;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Filter a structural set by a case-sensitive prefix.
|
|
91
|
+
*
|
|
92
|
+
* @param candidates - The structural candidates (nouns, verbs, flag names).
|
|
93
|
+
* @param partial - The partial word being completed.
|
|
94
|
+
* @returns The matches, deduped and sorted lexicographically.
|
|
95
|
+
*/
|
|
96
|
+
export function filterPrefix(candidates, partial) {
|
|
97
|
+
return [...new Set(candidates)]
|
|
98
|
+
.filter((candidate) => candidate.startsWith(partial))
|
|
99
|
+
.sort((a, b) => a.localeCompare(b));
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=rank.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rank.js","sourceRoot":"","sources":["../../../../src/kernel/completion/rank.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve a classified completion request into candidates.
|
|
3
|
+
*
|
|
4
|
+
* Structural contexts (noun, verb, flag-name) filter their model-derived
|
|
5
|
+
* tables with the case-sensitive {@link filterPrefix} — the same offers the
|
|
6
|
+
* static scripts inline. Value contexts (flag-value, positional) go through
|
|
7
|
+
* the source table: enum values and entity names are ranked case-insensitively
|
|
8
|
+
* and capped; `files` returns nothing (the static scripts complete files
|
|
9
|
+
* natively — the resolver never lists the filesystem); `none` and unknown
|
|
10
|
+
* (reserved) kinds return nothing.
|
|
11
|
+
*
|
|
12
|
+
* Injection safety, runtime gate: every value-tier candidate must match the
|
|
13
|
+
* same {@link SAFE_TOKEN_RE} allowlist the emit-time gate enforces — hostile
|
|
14
|
+
* names from an index file are dropped before they can reach a shell buffer.
|
|
15
|
+
* Structural candidates were already asserted safe when the model was built.
|
|
16
|
+
*/
|
|
17
|
+
import { findNoun, SAFE_TOKEN_RE } from "./model.js";
|
|
18
|
+
import { filterPrefix, MAX_CANDIDATES, rankCandidates } from "./rank.js";
|
|
19
|
+
/**
|
|
20
|
+
* Write a completion debug line to stderr when `PRAGMA_COMPLETE_DEBUG=1`.
|
|
21
|
+
* Silent otherwise — stdout is reserved for candidates, and stderr must not
|
|
22
|
+
* leak into shell buffers during normal completion.
|
|
23
|
+
*
|
|
24
|
+
* @param message - The debug message (prefixed with `[complete]`).
|
|
25
|
+
* @note Impure — reads the environment, writes stderr.
|
|
26
|
+
*/
|
|
27
|
+
export function completionDebug(message) {
|
|
28
|
+
if (process.env.PRAGMA_COMPLETE_DEBUG === "1") {
|
|
29
|
+
process.stderr.write(`[complete] ${message}\n`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/** Drop candidates that fail the shell-safety allowlist (with a debug note). */
|
|
33
|
+
function sanitize(candidates) {
|
|
34
|
+
const safe = candidates.filter((candidate) => SAFE_TOKEN_RE.test(candidate));
|
|
35
|
+
if (safe.length !== candidates.length) {
|
|
36
|
+
completionDebug(`dropped ${candidates.length - safe.length} unsafe candidate(s)`);
|
|
37
|
+
}
|
|
38
|
+
return safe;
|
|
39
|
+
}
|
|
40
|
+
/** Resolve a value-tier source into ranked, sanitized candidates. */
|
|
41
|
+
async function resolveSource(source, partial, env) {
|
|
42
|
+
switch (source.kind) {
|
|
43
|
+
case "values":
|
|
44
|
+
return rankCandidates(sanitize(source.values), partial);
|
|
45
|
+
case "names": {
|
|
46
|
+
let names;
|
|
47
|
+
try {
|
|
48
|
+
names = await env.names(source.ref);
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
// The seam contract is never-throw; degrade anyway, never break TAB.
|
|
52
|
+
completionDebug(`name source read failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
return rankCandidates(sanitize(names), partial, MAX_CANDIDATES, source.match, source.caseSensitive);
|
|
56
|
+
}
|
|
57
|
+
case "files":
|
|
58
|
+
// Consumer rule: files are completed natively by the shell scripts
|
|
59
|
+
// (compgen -f / _files / fish -rF); the resolver offers nothing.
|
|
60
|
+
return [];
|
|
61
|
+
case "none":
|
|
62
|
+
return [];
|
|
63
|
+
default: {
|
|
64
|
+
// Reserved kinds ({kind:"query"} and future ones) are not in the union;
|
|
65
|
+
// if one arrives at runtime it resolves to nothing, with a reason.
|
|
66
|
+
const kind = source.kind;
|
|
67
|
+
completionDebug(`nothing: reserved completion kind "${kind}"`);
|
|
68
|
+
return [];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Resolve a parsed completion request against the model and environment.
|
|
74
|
+
*
|
|
75
|
+
* @param request - The classified context plus partial from `parseWords`.
|
|
76
|
+
* @param model - The completion model.
|
|
77
|
+
* @param env - The completion environment (the entity seam).
|
|
78
|
+
* @returns Matching candidates, ranked/filtered per tier; `[]` when there is
|
|
79
|
+
* nothing to offer.
|
|
80
|
+
*/
|
|
81
|
+
export async function resolveRequest(request, model, env) {
|
|
82
|
+
const { context, partial } = request;
|
|
83
|
+
switch (context.kind) {
|
|
84
|
+
case "noun":
|
|
85
|
+
return filterPrefix(model.nouns.map((entry) => entry.noun), partial);
|
|
86
|
+
case "verb": {
|
|
87
|
+
const noun = findNoun(model, context.noun);
|
|
88
|
+
return filterPrefix((noun?.verbs ?? []).map((verb) => verb.label), partial);
|
|
89
|
+
}
|
|
90
|
+
case "flag-name":
|
|
91
|
+
return filterPrefix(context.flags, partial);
|
|
92
|
+
case "flag-value":
|
|
93
|
+
case "positional":
|
|
94
|
+
return resolveSource(context.source, partial, env);
|
|
95
|
+
case "nothing":
|
|
96
|
+
completionDebug(`nothing: ${context.reason}`);
|
|
97
|
+
return [];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../../src/kernel/completion/resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
// biome-ignore-all lint/suspicious/noTemplateCurlyInString: bash parameter expansions, not JS templates
|
|
2
|
+
/**
|
|
3
|
+
* The bash completion script (static tier). Requires bash >= 4 for `mapfile`.
|
|
4
|
+
* That floor is NOT guaranteed by the platform any more: the package dropped
|
|
5
|
+
* its `os: ["linux"]` pin when it stopped shipping a linux-x64 executable, and
|
|
6
|
+
* macOS still ships bash 3.2, which has no `mapfile`. `setup completions`
|
|
7
|
+
* writes this script wherever it is asked to; on such a machine the user's
|
|
8
|
+
* remedy is a newer bash (zsh and fish are unaffected and are the platform
|
|
9
|
+
* defaults there).
|
|
10
|
+
*
|
|
11
|
+
* Structure — nouns, verbs, flag names, enum values — is inlined into
|
|
12
|
+
* generator-validated LITERAL `compgen -W` tables (never a variable, never
|
|
13
|
+
* anything `compgen -W` could evaluate). File params use native `compgen -f`.
|
|
14
|
+
* Only `{kind:"names"}` contexts exec the CLI: `mapfile` ingests
|
|
15
|
+
* `pragma __complete` output line-by-line, so candidates are never
|
|
16
|
+
* word-split or evaluated. That exec is gated by `minChars` (structure + enum
|
|
17
|
+
* values still complete on bare TAB with zero exec). No `eval`, no backticks,
|
|
18
|
+
* `--` guards throughout.
|
|
19
|
+
*/
|
|
20
|
+
import { globalFlagNames, globalValueFlags, hasOwnFlags, nounNames, offeredFlagNames, rootFlagNames, valueFlagNames, verbViews, wordList, } from "./shared.js";
|
|
21
|
+
/** A shell-safe function-name base for the bin (`pragma` -> `_pragma`). */
|
|
22
|
+
function fnBase(binName) {
|
|
23
|
+
return `_${binName.replace(/[^A-Za-z0-9_]/g, "_")}`;
|
|
24
|
+
}
|
|
25
|
+
/** The bash action completing a value source, or undefined for `none`. */
|
|
26
|
+
function sourceAction(source, fn) {
|
|
27
|
+
switch (source.kind) {
|
|
28
|
+
case "values":
|
|
29
|
+
return `COMPREPLY=($(compgen -W "${wordList(source.values, "bash values")}" -- "$cur"))`;
|
|
30
|
+
case "files":
|
|
31
|
+
return 'COMPREPLY=($(compgen -f -- "$cur"))';
|
|
32
|
+
case "names":
|
|
33
|
+
return `${fn}_dynamic`;
|
|
34
|
+
case "none":
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/** The `noun/verb/--flag` case arms answering flag-value contexts. */
|
|
39
|
+
function flagValueArms(model, fn) {
|
|
40
|
+
const arms = [];
|
|
41
|
+
for (const view of verbViews(model)) {
|
|
42
|
+
for (const flag of view.verb.flags) {
|
|
43
|
+
if (!flag.takesValue)
|
|
44
|
+
continue;
|
|
45
|
+
const action = sourceAction(flag.source, fn);
|
|
46
|
+
// A known value flag with nothing to offer still returns silently, so
|
|
47
|
+
// its value slot is never mistaken for a positional.
|
|
48
|
+
arms.push(` ${view.key}/${flag.flag}) ${action === undefined ? "return" : `${action}; return`} ;;`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return arms;
|
|
52
|
+
}
|
|
53
|
+
/** The global `--flag` case arms (e.g. --format, --detail values). */
|
|
54
|
+
function globalValueArms(model, fn) {
|
|
55
|
+
return globalValueFlags(model).flatMap((flag) => {
|
|
56
|
+
const action = sourceAction(flag.source, fn);
|
|
57
|
+
return action === undefined
|
|
58
|
+
? []
|
|
59
|
+
: [` ${flag.flag}) ${action}; return ;;`];
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/** The `noun/verb` case arms offering per-verb flag names. */
|
|
63
|
+
function flagNameArms(model) {
|
|
64
|
+
return verbViews(model)
|
|
65
|
+
.filter(hasOwnFlags)
|
|
66
|
+
.map((view) => ` ${view.key}) COMPREPLY=($(compgen -W "${wordList(offeredFlagNames(model, view), "bash flags")}" -- "$cur")); return ;;`);
|
|
67
|
+
}
|
|
68
|
+
/** The `noun` case arms offering sub-verb labels. */
|
|
69
|
+
function verbArms(model) {
|
|
70
|
+
return model.nouns
|
|
71
|
+
.filter((entry) => entry.verbs.length > 0)
|
|
72
|
+
.map((entry) => ` ${entry.noun}) COMPREPLY=($(compgen -W "${wordList(entry.verbs.map((verb) => verb.label), "bash verbs")}" -- "$cur")); return ;;`);
|
|
73
|
+
}
|
|
74
|
+
/** The positional case arm for one view, or undefined when it offers nothing. */
|
|
75
|
+
function positionalArm(model, view, fn) {
|
|
76
|
+
const slots = [];
|
|
77
|
+
view.verb.positionals.forEach((positional, index) => {
|
|
78
|
+
const action = sourceAction(positional.source, fn);
|
|
79
|
+
if (action === undefined)
|
|
80
|
+
return;
|
|
81
|
+
const last = index === view.verb.positionals.length - 1;
|
|
82
|
+
const pattern = positional.variadic && last ? "*" : String(index);
|
|
83
|
+
slots.push(` ${pattern}) ${action} ;;`);
|
|
84
|
+
});
|
|
85
|
+
if (slots.length === 0)
|
|
86
|
+
return undefined;
|
|
87
|
+
return [
|
|
88
|
+
` ${view.key})`,
|
|
89
|
+
` ${fn}_pos ${view.skipWords} "${wordList(valueFlagNames(model, view), "bash value flags")}"`,
|
|
90
|
+
' case "$POS" in',
|
|
91
|
+
...slots,
|
|
92
|
+
" esac",
|
|
93
|
+
" ;;",
|
|
94
|
+
].join("\n");
|
|
95
|
+
}
|
|
96
|
+
/** Wrap case arms in a `case` statement, or nothing when there are no arms. */
|
|
97
|
+
function caseBlock(subject, arms, indent) {
|
|
98
|
+
if (arms.length === 0)
|
|
99
|
+
return [];
|
|
100
|
+
return [`${indent}case ${subject} in`, ...arms, `${indent}esac`];
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Render the bash completion script.
|
|
104
|
+
*
|
|
105
|
+
* @param model - The completion model.
|
|
106
|
+
* @param binName - The binary to complete (function names derive from it).
|
|
107
|
+
* @param minChars - Minimum typed chars before a name source execs `__complete`.
|
|
108
|
+
* @returns The script text.
|
|
109
|
+
*/
|
|
110
|
+
export function bashScript(model, binName, minChars) {
|
|
111
|
+
const fn = fnBase(binName);
|
|
112
|
+
const positionalArms = verbViews(model).flatMap((view) => {
|
|
113
|
+
const arm = positionalArm(model, view, fn);
|
|
114
|
+
return arm === undefined ? [] : [arm];
|
|
115
|
+
});
|
|
116
|
+
const globalValueSkips = globalValueFlags(model)
|
|
117
|
+
.map((flag) => flag.flag)
|
|
118
|
+
.join("|");
|
|
119
|
+
// Emit the verb block only when there are arms (bash rejects an empty then).
|
|
120
|
+
const verbSection = verbArms(model).length === 0
|
|
121
|
+
? []
|
|
122
|
+
: [
|
|
123
|
+
"",
|
|
124
|
+
" # verbs",
|
|
125
|
+
' if [ -z "$verb" ]; then',
|
|
126
|
+
...caseBlock('"$noun"', verbArms(model), " "),
|
|
127
|
+
" fi",
|
|
128
|
+
];
|
|
129
|
+
const lines = [
|
|
130
|
+
`# ${binName} bash completion (static tier) — generated by \`${binName} setup completions\`. Do not edit.`,
|
|
131
|
+
"# Structure (nouns, verbs, flags, enum values) is inlined and never execs;",
|
|
132
|
+
`# entity arguments call \`${binName} __complete\` (storeless, never-throw);`,
|
|
133
|
+
"# file arguments use native completion. Requires bash >= 4 (mapfile).",
|
|
134
|
+
`${fn}_dynamic() {`,
|
|
135
|
+
...(minChars > 0 ? [` [ \${#cur} -ge ${minChars} ] || return 0`] : []),
|
|
136
|
+
` mapfile -t COMPREPLY < <("${binName}" __complete -- "\${COMP_WORDS[@]:1:COMP_CWORD-1}" "$cur" 2>/dev/null)`,
|
|
137
|
+
"}",
|
|
138
|
+
`${fn}_pos() {`,
|
|
139
|
+
' local skip="$1" vflags=" $2 " i w',
|
|
140
|
+
" POS=0",
|
|
141
|
+
" for ((i = 1; i < COMP_CWORD; i++)); do",
|
|
142
|
+
' w="${COMP_WORDS[i]}"',
|
|
143
|
+
' case "$w" in',
|
|
144
|
+
' -*) case "$vflags" in *" $w "*) ((i++)) ;; esac ;;',
|
|
145
|
+
' *) if [ "$skip" -gt 0 ]; then skip=$((skip - 1)); else POS=$((POS + 1)); fi ;;',
|
|
146
|
+
" esac",
|
|
147
|
+
" done",
|
|
148
|
+
"}",
|
|
149
|
+
`${fn}() {`,
|
|
150
|
+
" local cur prev noun verb i w POS",
|
|
151
|
+
' cur="${COMP_WORDS[COMP_CWORD]}"',
|
|
152
|
+
' prev="${COMP_WORDS[COMP_CWORD-1]}"',
|
|
153
|
+
" # Normalize the COMP_WORDBREAKS '=' split so a --flag=value context routes",
|
|
154
|
+
" # as a flag value (mirrors parse.ts). The default breaks split",
|
|
155
|
+
" # `--flag=val` into `--flag` `=` `val`; a custom COMP_WORDBREAKS may keep",
|
|
156
|
+
" # `--flag=val` whole. Either way, recover $prev=flag and $cur=value.",
|
|
157
|
+
' if [[ "$cur" == "=" ]]; then',
|
|
158
|
+
' cur=""',
|
|
159
|
+
' elif [[ "$prev" == "=" ]]; then',
|
|
160
|
+
' prev="${COMP_WORDS[COMP_CWORD-2]}"',
|
|
161
|
+
' elif [[ "$cur" == --*=* ]]; then',
|
|
162
|
+
' prev="${cur%%=*}"',
|
|
163
|
+
' cur="${cur#*=}"',
|
|
164
|
+
" fi",
|
|
165
|
+
' noun="" verb="" POS=0',
|
|
166
|
+
" for ((i = 1; i < COMP_CWORD; i++)); do",
|
|
167
|
+
' w="${COMP_WORDS[i]}"',
|
|
168
|
+
' case "$w" in',
|
|
169
|
+
` ${globalValueSkips}) ((i++)) ;;`,
|
|
170
|
+
" -*) ;;",
|
|
171
|
+
" *)",
|
|
172
|
+
' if [ -z "$noun" ]; then noun="$w"',
|
|
173
|
+
' elif [ -z "$verb" ]; then verb="$w"',
|
|
174
|
+
" fi",
|
|
175
|
+
" ;;",
|
|
176
|
+
" esac",
|
|
177
|
+
" done",
|
|
178
|
+
"",
|
|
179
|
+
" # flag values (verb-scoped, then global)",
|
|
180
|
+
...caseBlock('"$noun/$verb/$prev"', flagValueArms(model, fn), " "),
|
|
181
|
+
...caseBlock('"$prev"', globalValueArms(model, fn), " "),
|
|
182
|
+
"",
|
|
183
|
+
" # flag names",
|
|
184
|
+
' if [[ "$cur" == -* ]]; then',
|
|
185
|
+
...caseBlock('"$noun/$verb"', flagNameArms(model), " "),
|
|
186
|
+
' if [ -z "$noun" ]; then',
|
|
187
|
+
` COMPREPLY=($(compgen -W "${wordList(rootFlagNames(model), "bash root flags")}" -- "$cur"))`,
|
|
188
|
+
" else",
|
|
189
|
+
` COMPREPLY=($(compgen -W "${wordList(globalFlagNames(model), "bash global flags")}" -- "$cur"))`,
|
|
190
|
+
" fi",
|
|
191
|
+
" return",
|
|
192
|
+
" fi",
|
|
193
|
+
"",
|
|
194
|
+
" # nouns",
|
|
195
|
+
' if [ -z "$noun" ]; then',
|
|
196
|
+
` COMPREPLY=($(compgen -W "${wordList(nounNames(model), "bash nouns")}" -- "$cur"))`,
|
|
197
|
+
" return",
|
|
198
|
+
" fi",
|
|
199
|
+
...verbSection,
|
|
200
|
+
"",
|
|
201
|
+
" # positionals",
|
|
202
|
+
...caseBlock('"$noun/$verb"', positionalArms, " "),
|
|
203
|
+
"}",
|
|
204
|
+
`complete -F ${fn} ${binName}`,
|
|
205
|
+
"",
|
|
206
|
+
];
|
|
207
|
+
return lines.join("\n");
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=bash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../../../src/kernel/completion/templates/bash.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The fish completion script (static tier). Requires fish >= 3.
|
|
3
|
+
*
|
|
4
|
+
* Declarative: one `complete -c` rule per fact, gated by the
|
|
5
|
+
* `__<bin>_at <noun> [verb]` position probe. Default file completion is
|
|
6
|
+
* suppressed (`-f`); enum values are inlined literals; file params force
|
|
7
|
+
* native files back on (`-rF`); only `{kind:"names"}` contexts exec the CLI
|
|
8
|
+
* via a command substitution — fish treats substitution results as literal
|
|
9
|
+
* candidates (split on newlines, never evaluated). Each name rule ANDs a
|
|
10
|
+
* `__<bin>_minchars` guard into its condition, so the exec waits for `minChars`
|
|
11
|
+
* typed chars, and a name-source POSITIONAL also ANDs `__<bin>_notflag` — fish
|
|
12
|
+
* evaluates every matching rule rather than one exclusive branch, so without it
|
|
13
|
+
* a structural `--<TAB>` would spawn the delegate too. No `eval`, no backticks.
|
|
14
|
+
*
|
|
15
|
+
* Static-tier coarseness (the resolver is exact): positional value rules are
|
|
16
|
+
* not index-gated, and a mixed self-verb + sub-verb noun only offers its
|
|
17
|
+
* sub-verbs — `__complete` answers both cases precisely.
|
|
18
|
+
*/
|
|
19
|
+
import { globalValueFlags, nounNames, verbViews, wordList } from "./shared.js";
|
|
20
|
+
/** A shell-safe function-name base for the bin (`pragma` -> `__pragma`). */
|
|
21
|
+
function fnBase(binName) {
|
|
22
|
+
return `__${binName.replace(/[^A-Za-z0-9_]/g, "_")}`;
|
|
23
|
+
}
|
|
24
|
+
/** AND a guard into a rule's condition (or start one with it). */
|
|
25
|
+
function and(condition, guard) {
|
|
26
|
+
return condition ? `${condition}; and ${guard}` : guard;
|
|
27
|
+
}
|
|
28
|
+
/** AND a `minChars` guard into a name rule's condition (or start one). */
|
|
29
|
+
function withMinChars(fn, condition, minChars) {
|
|
30
|
+
if (minChars <= 0)
|
|
31
|
+
return condition;
|
|
32
|
+
return and(condition, `${fn}_minchars ${minChars}`);
|
|
33
|
+
}
|
|
34
|
+
/** The rule fragment completing one flag of a view (or a global flag). */
|
|
35
|
+
function flagRule(binName, fn, condition, flag, minChars) {
|
|
36
|
+
const name = flag.flag.replace(/^--/, "");
|
|
37
|
+
// A name-source value gates its exec on `minChars`; other rules keep the bare
|
|
38
|
+
// position condition (enum/file/none complete on bare TAB).
|
|
39
|
+
const cond = flag.takesValue && flag.source.kind === "names"
|
|
40
|
+
? withMinChars(fn, condition, minChars)
|
|
41
|
+
: condition;
|
|
42
|
+
const parts = [`complete -c ${binName}`];
|
|
43
|
+
if (cond)
|
|
44
|
+
parts.push(`-n "${cond}"`);
|
|
45
|
+
parts.push(`-l ${name}`);
|
|
46
|
+
if (flag.takesValue) {
|
|
47
|
+
switch (flag.source.kind) {
|
|
48
|
+
case "values":
|
|
49
|
+
parts.push(`-x -a "${wordList(flag.source.values, "fish values")}"`);
|
|
50
|
+
break;
|
|
51
|
+
case "files":
|
|
52
|
+
parts.push("-rF");
|
|
53
|
+
break;
|
|
54
|
+
case "names":
|
|
55
|
+
parts.push(`-x -a "(${binName} __complete -- (${fn}_words) 2>/dev/null)"`);
|
|
56
|
+
break;
|
|
57
|
+
case "none":
|
|
58
|
+
parts.push("-x");
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return parts.join(" ");
|
|
63
|
+
}
|
|
64
|
+
/** The positional value rule for a view, or undefined when it offers nothing. */
|
|
65
|
+
function positionalRule(binName, fn, condition, verb, minChars) {
|
|
66
|
+
// fish rules are not index-gated; offer the union of the verb's positional
|
|
67
|
+
// sources (a name source delegates to the resolver, which IS index-exact).
|
|
68
|
+
const values = new Set();
|
|
69
|
+
let names = false;
|
|
70
|
+
let files = false;
|
|
71
|
+
for (const positional of verb.positionals) {
|
|
72
|
+
if (positional.source.kind === "values") {
|
|
73
|
+
for (const value of positional.source.values)
|
|
74
|
+
values.add(value);
|
|
75
|
+
}
|
|
76
|
+
if (positional.source.kind === "names")
|
|
77
|
+
names = true;
|
|
78
|
+
if (positional.source.kind === "files")
|
|
79
|
+
files = true;
|
|
80
|
+
}
|
|
81
|
+
// A name source gates its exec on `minChars` AND on the current token not
|
|
82
|
+
// being a flag; a values/files positional keeps the bare position condition
|
|
83
|
+
// so it still completes on bare TAB.
|
|
84
|
+
//
|
|
85
|
+
// The `_notflag` half is what keeps a purely STRUCTURAL `--<TAB>` free of
|
|
86
|
+
// exec. fish evaluates every `complete` rule matching a position, so without
|
|
87
|
+
// it this positional rule fires alongside the flag-name rules the moment the
|
|
88
|
+
// token clears `minChars` — and `--` is two characters. That cost a process
|
|
89
|
+
// spawn per TAB on a flag name AND put the delegate's answer in the user's
|
|
90
|
+
// candidate list. bash and zsh route the same context through one exclusive
|
|
91
|
+
// `case` arm and exec nothing; this is how fish joins them.
|
|
92
|
+
const cond = names
|
|
93
|
+
? withMinChars(fn, and(condition, `${fn}_notflag`), minChars)
|
|
94
|
+
: condition;
|
|
95
|
+
const parts = [`complete -c ${binName} -n "${cond}"`];
|
|
96
|
+
if (names) {
|
|
97
|
+
parts.push(`-a "(${binName} __complete -- (${fn}_words) 2>/dev/null)"`);
|
|
98
|
+
}
|
|
99
|
+
else if (values.size > 0) {
|
|
100
|
+
parts.push(`-a "${wordList([...values].sort(), "fish positional values")}"`);
|
|
101
|
+
}
|
|
102
|
+
else if (files) {
|
|
103
|
+
parts.push("-F");
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
return parts.join(" ");
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Render the fish completion script.
|
|
112
|
+
*
|
|
113
|
+
* @param model - The completion model.
|
|
114
|
+
* @param binName - The binary to complete (function names derive from it).
|
|
115
|
+
* @param minChars - Minimum typed chars before a name source execs `__complete`.
|
|
116
|
+
* @returns The script text.
|
|
117
|
+
*/
|
|
118
|
+
export function fishScript(model, binName, minChars) {
|
|
119
|
+
const fn = fnBase(binName);
|
|
120
|
+
const globalValueSkips = wordList(globalValueFlags(model).map((flag) => flag.flag), "fish global value flags");
|
|
121
|
+
const lines = [
|
|
122
|
+
`# ${binName} fish completion (static tier) — generated by \`${binName} setup completions\`. Do not edit.`,
|
|
123
|
+
"# Structure (nouns, verbs, flags, enum values) is inlined and never execs;",
|
|
124
|
+
`# name arguments call \`${binName} __complete\` (storeless, never-throw) once`,
|
|
125
|
+
`# ${minChars} chars are typed; file arguments use native completion (-rF). Requires fish >= 3.`,
|
|
126
|
+
`function ${fn}_words`,
|
|
127
|
+
" set -l toks (commandline -opc)",
|
|
128
|
+
" set -l cur (commandline -ct)",
|
|
129
|
+
" printf '%s\\n' $toks[2..-1] $cur",
|
|
130
|
+
"end",
|
|
131
|
+
...(minChars > 0
|
|
132
|
+
? [
|
|
133
|
+
`function ${fn}_minchars`,
|
|
134
|
+
" test (string length -- (commandline -ct)) -ge $argv[1]",
|
|
135
|
+
"end",
|
|
136
|
+
]
|
|
137
|
+
: []),
|
|
138
|
+
// True when the token being completed is not a flag, so a name-source
|
|
139
|
+
// positional rule stays out of a structural `--<TAB>`.
|
|
140
|
+
`function ${fn}_notflag`,
|
|
141
|
+
" not string match -q -- '-*' (commandline -ct)",
|
|
142
|
+
"end",
|
|
143
|
+
`function ${fn}_at`,
|
|
144
|
+
" set -l cmd (commandline -opc)",
|
|
145
|
+
" set -l noun ''",
|
|
146
|
+
" set -l verb ''",
|
|
147
|
+
" set -l skip 0",
|
|
148
|
+
" for w in $cmd[2..-1]",
|
|
149
|
+
" if test $skip -eq 1",
|
|
150
|
+
" set skip 0",
|
|
151
|
+
" continue",
|
|
152
|
+
" end",
|
|
153
|
+
" switch $w",
|
|
154
|
+
` case ${globalValueSkips}`,
|
|
155
|
+
" set skip 1",
|
|
156
|
+
" case '-*'",
|
|
157
|
+
" case '*'",
|
|
158
|
+
' if test -z "$noun"',
|
|
159
|
+
" set noun $w",
|
|
160
|
+
' else if test -z "$verb"',
|
|
161
|
+
" set verb $w",
|
|
162
|
+
" end",
|
|
163
|
+
" end",
|
|
164
|
+
" end",
|
|
165
|
+
' test "$noun" = "$argv[1]"; and test "$verb" = "$argv[2]"',
|
|
166
|
+
"end",
|
|
167
|
+
`complete -c ${binName} -f`,
|
|
168
|
+
"",
|
|
169
|
+
"# nouns",
|
|
170
|
+
`complete -c ${binName} -n "${fn}_at ''" -a "${wordList(nounNames(model), "fish nouns")}"`,
|
|
171
|
+
"",
|
|
172
|
+
"# global flags",
|
|
173
|
+
...model.globalFlags.map((flag) => flagRule(binName, fn, flag.rootOnly === true ? `${fn}_at ''` : undefined, flag, minChars)),
|
|
174
|
+
];
|
|
175
|
+
for (const entry of model.nouns) {
|
|
176
|
+
if (entry.verbs.length > 0) {
|
|
177
|
+
lines.push("", `# ${entry.noun} verbs`, `complete -c ${binName} -n "${fn}_at ${entry.noun}" -a "${wordList(entry.verbs.map((verb) => verb.label), "fish verbs")}"`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
for (const view of verbViews(model)) {
|
|
181
|
+
// A mixed noun's self-verb state is not expressible with the probe; its
|
|
182
|
+
// sub-verbs own the second word and the resolver owns the rest.
|
|
183
|
+
if (view.self &&
|
|
184
|
+
view.verb.positionals.length === 0 &&
|
|
185
|
+
view.verb.flags.length === 0 &&
|
|
186
|
+
!view.verb.mutates) {
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
const nounEntry = model.nouns.find((entry) => entry.noun === view.noun);
|
|
190
|
+
if (view.self && (nounEntry?.verbs.length ?? 0) > 0)
|
|
191
|
+
continue;
|
|
192
|
+
const condition = view.self
|
|
193
|
+
? `${fn}_at ${view.noun}`
|
|
194
|
+
: `${fn}_at ${view.noun} ${view.verb.label}`;
|
|
195
|
+
const rules = [];
|
|
196
|
+
for (const flag of view.verb.flags) {
|
|
197
|
+
rules.push(flagRule(binName, fn, condition, flag, minChars));
|
|
198
|
+
}
|
|
199
|
+
if (view.verb.mutates) {
|
|
200
|
+
for (const flag of model.mutationFlags) {
|
|
201
|
+
rules.push(flagRule(binName, fn, condition, flag, minChars));
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
const positional = positionalRule(binName, fn, condition, view.verb, minChars);
|
|
205
|
+
if (positional)
|
|
206
|
+
rules.push(positional);
|
|
207
|
+
if (rules.length > 0) {
|
|
208
|
+
lines.push("", `# ${view.key}`, ...rules);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
lines.push("");
|
|
212
|
+
return lines.join("\n");
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=fish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fish.js","sourceRoot":"","sources":["../../../../../src/kernel/completion/templates/fish.ts"],"names":[],"mappings":"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"}
|