@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,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `pragma version` — the command form of `--version`.
|
|
3
|
+
*
|
|
4
|
+
* Users type it reflexively, so it exists and prints exactly the bytes the
|
|
5
|
+
* flag prints: the bare semver on stdout, storeless, no store or network
|
|
6
|
+
* touched. Withheld from MCP — the version already rides `info` and the
|
|
7
|
+
* server handshake's `serverInfo`.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { BIN_NAME, VERSION } from "../../constants.js";
|
|
11
|
+
import { asVerb } from "../../kernel/spec/asVerb.js";
|
|
12
|
+
import type { VerbSpec } from "../../kernel/spec/index.js";
|
|
13
|
+
|
|
14
|
+
const versionVerb: VerbSpec<Record<string, unknown>, string> = {
|
|
15
|
+
path: ["version"],
|
|
16
|
+
summary: "Print the CLI version.",
|
|
17
|
+
doc: "Prints the version `--version` prints — one value, two spellings of the same read.",
|
|
18
|
+
params: [],
|
|
19
|
+
output: {
|
|
20
|
+
formatters: {
|
|
21
|
+
plain: (version) => version,
|
|
22
|
+
llm: (version) => version,
|
|
23
|
+
json: (version) => JSON.stringify({ version }),
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
examples: [{ cmd: `${BIN_NAME} version` }],
|
|
27
|
+
capability: {
|
|
28
|
+
needsStore: false,
|
|
29
|
+
mutates: false,
|
|
30
|
+
mcp: {
|
|
31
|
+
expose: false,
|
|
32
|
+
reason: "the version rides `info` and the MCP handshake's serverInfo",
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
run: async () => VERSION,
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/** The `version` verb. */
|
|
39
|
+
export const versionVerbSpec = asVerb(versionVerb);
|
package/src/constants.ts
CHANGED
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
import pkg from "../package.json" with { type: "json" };
|
|
19
19
|
import identity from "../pragma.conf.js";
|
|
20
|
+
import type { RawConfig } from "./kernel/config/types.js";
|
|
20
21
|
import { DETAIL_LEVELS, type DetailLevel } from "./kernel/config/types.js";
|
|
21
22
|
|
|
22
23
|
/** CLI binary name — the distribution's `name`. */
|
|
@@ -64,12 +65,45 @@ const RECOVERY_CLI_PREFIX = `${identity.name} `;
|
|
|
64
65
|
/** The output formats the renderer selects between (`llm` = condensed Markdown). */
|
|
65
66
|
const OUTPUT_FORMATS = ["plain", "llm", "json"] as const;
|
|
66
67
|
|
|
67
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* A selected output format. The set is CLOSED — no alias normalises into it,
|
|
70
|
+
* so a `--format` value outside {@link OUTPUT_FORMATS} is rejected at the
|
|
71
|
+
* entry point rather than quietly becoming `plain`.
|
|
72
|
+
*/
|
|
68
73
|
type OutputFormat = (typeof OUTPUT_FORMATS)[number];
|
|
69
74
|
|
|
70
75
|
/** Default detail level when neither flag, config, nor spec pins one. */
|
|
71
76
|
const DEFAULT_DETAIL_LEVEL: DetailLevel = "standard";
|
|
72
77
|
|
|
78
|
+
/**
|
|
79
|
+
* The wordmark `--help` opens with FOR A HUMAN READER, as raw ASCII-art lines.
|
|
80
|
+
*
|
|
81
|
+
* Whether it prints is decided at the one emit site (`rootHelp.ts`) from the
|
|
82
|
+
* invocation's global flags: a captured run (`--format llm`/`json`, including
|
|
83
|
+
* the `llm` a non-interactive stdout infers) gets the bare header instead. This
|
|
84
|
+
* constant is the ART, not the policy.
|
|
85
|
+
*
|
|
86
|
+
* PROJECTED from the distribution config, exactly like {@link BIN_NAME} and
|
|
87
|
+
* {@link PROGRAM_DESCRIPTION} — a wordmark spells a name, so it is identity, and
|
|
88
|
+
* `kernel/copy.test.ts` forbids any kernel string from naming the distribution.
|
|
89
|
+
* Authoring the art here would have branded a fork's front door with someone
|
|
90
|
+
* else's logo; declaring it as data means a fork ships its own or none.
|
|
91
|
+
*
|
|
92
|
+
* Lines rather than one string because the art contains a backtick and
|
|
93
|
+
* backslashes: a template literal would need every one of them escaped, which is
|
|
94
|
+
* how a character gets lost the next time someone edits it.
|
|
95
|
+
*/
|
|
96
|
+
// Read through the DECLARED type, not the literal's inferred one. The
|
|
97
|
+
// distribution config is `satisfies RawConfig`, which narrows to exactly the
|
|
98
|
+
// keys that file writes — so `identity.logo` does not typecheck in a fork that
|
|
99
|
+
// omits the field, which is precisely the fork this feature promises a bare
|
|
100
|
+
// header. The assignment (not a cast) is what `satisfies` already guarantees,
|
|
101
|
+
// and it makes every OPTIONAL field readable here. The other constants keep
|
|
102
|
+
// reading `identity` directly, so their literal types are untouched.
|
|
103
|
+
const declared: RawConfig = identity;
|
|
104
|
+
|
|
105
|
+
const PROGRAM_LOGO: readonly string[] = declared.logo ?? [];
|
|
106
|
+
|
|
73
107
|
export type { DetailLevel, OutputFormat };
|
|
74
108
|
export {
|
|
75
109
|
BIN_NAME,
|
|
@@ -79,6 +113,7 @@ export {
|
|
|
79
113
|
MCP_SERVER_NAME,
|
|
80
114
|
OUTPUT_FORMATS,
|
|
81
115
|
PROGRAM_DESCRIPTION,
|
|
116
|
+
PROGRAM_LOGO,
|
|
82
117
|
PROJECT_CONFIG_FILENAME,
|
|
83
118
|
RECOVERY_CLI_PREFIX,
|
|
84
119
|
VERSION,
|
package/src/identity.test.ts
CHANGED
|
@@ -112,15 +112,27 @@ describe("identity projection — a fork changes values, not code (PROTECTED)",
|
|
|
112
112
|
const { upgradeModule } = await import("./capabilities/upgrade/index.js");
|
|
113
113
|
const { colophonModule } = await import("./capabilities/colophon/index.js");
|
|
114
114
|
|
|
115
|
-
const help = formatRootHelp(
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
115
|
+
const help = formatRootHelp(
|
|
116
|
+
BIN_NAME,
|
|
117
|
+
PROGRAM_DESCRIPTION,
|
|
118
|
+
[
|
|
119
|
+
dishList,
|
|
120
|
+
...configModule.verbs,
|
|
121
|
+
...upgradeModule.verbs,
|
|
122
|
+
...colophonModule.verbs,
|
|
123
|
+
],
|
|
124
|
+
"9.9.9",
|
|
125
|
+
"https://recipes.test/issues",
|
|
126
|
+
// A human at a terminal: the fork's own art (it declares none) would
|
|
127
|
+
// print here, so the assertions below see the widest page.
|
|
128
|
+
{ llm: false, format: "plain", verbose: false },
|
|
129
|
+
);
|
|
121
130
|
|
|
122
131
|
expect(help).not.toMatch(THIS_DISTRIBUTION);
|
|
123
|
-
|
|
132
|
+
// The fork's own name and its own version — the header stamps the build
|
|
133
|
+
// exactly as `--version` reports it, and neither half names this
|
|
134
|
+
// distribution.
|
|
135
|
+
expect(help).toMatch(/^recipes v9\.9\.9 — Explore the recipe graph$/m);
|
|
124
136
|
// The pack noun leads the page untitled, and the blurb is not repeated as
|
|
125
137
|
// a heading three lines under the header that already carries it.
|
|
126
138
|
expect(help).toMatch(/^Usage: recipes .*\n\n {2}dish\b/m);
|
|
@@ -151,29 +163,28 @@ describe("identity projection — a fork changes values, not code (PROTECTED)",
|
|
|
151
163
|
expect(text.startsWith("recipes — Explore the recipe graph (")).toBe(true);
|
|
152
164
|
});
|
|
153
165
|
|
|
154
|
-
it("
|
|
166
|
+
it("hints at a first-time user in the fork's own name", async () => {
|
|
155
167
|
process.env.XDG_CONFIG_HOME = mkdtempSync(join(tmpdir(), "identity-"));
|
|
156
|
-
const {
|
|
168
|
+
const { setupHintLines } = await import("./kernel/config/firstRun.js");
|
|
157
169
|
const { globalConfigPath } = await import("./kernel/config/paths.js");
|
|
158
170
|
|
|
159
|
-
const
|
|
160
|
-
await ensureFirstRun((line) => lines.push(line));
|
|
161
|
-
const greeting = lines.join("\n");
|
|
171
|
+
const hint = setupHintLines().join("\n");
|
|
162
172
|
|
|
163
|
-
//
|
|
164
|
-
//
|
|
165
|
-
expect(
|
|
166
|
-
expect(greeting).toContain(globalConfigPath());
|
|
173
|
+
// The hint names the fork's issues URL and its own setup command; the XDG
|
|
174
|
+
// namespace has to follow the fork's name too or the path assertion fails.
|
|
175
|
+
expect(hint).not.toMatch(THIS_DISTRIBUTION);
|
|
167
176
|
expect(globalConfigPath()).toContain("/recipes/");
|
|
168
|
-
expect(
|
|
169
|
-
expect(
|
|
177
|
+
expect(hint).toContain("https://example.invalid/recipes/issues");
|
|
178
|
+
expect(hint).toContain("recipes setup");
|
|
170
179
|
});
|
|
171
180
|
|
|
172
181
|
it("narrates the colophon the fork declares, titled with the fork's name", async () => {
|
|
173
182
|
// The toolchain colophon is DECLARED content (`pragma.conf.ts#colophon`),
|
|
174
183
|
// not authored code: the collector must render the fork's declaration
|
|
175
|
-
// under the fork's own name.
|
|
176
|
-
//
|
|
184
|
+
// under the fork's own name. This is also where the FALLBACK is pinned —
|
|
185
|
+
// the toolchain's own section prints when no pack tells a domain story,
|
|
186
|
+
// and a fork with no packs is the distribution that has none.
|
|
187
|
+
// `kind: "pragma"` is asserted AS the literal:
|
|
177
188
|
// it is the frozen JSON discriminant every distribution serves (wire
|
|
178
189
|
// compatibility, like the resource scheme), deliberately NOT derived.
|
|
179
190
|
process.env.XDG_CONFIG_HOME = mkdtempSync(join(tmpdir(), "identity-"));
|
|
@@ -206,15 +217,25 @@ describe("identity projection — a fork changes values, not code (PROTECTED)",
|
|
|
206
217
|
// `$XDG_DATA_HOME/pragma/skills` and one `<cwd>/.pragma/skills`, so a fork
|
|
207
218
|
// read the other's skills and could not install its own without collision.
|
|
208
219
|
process.env.XDG_DATA_HOME = join(tmpdir(), "identity-data");
|
|
209
|
-
const { skillRoots, installedSkillsDir } = await import(
|
|
220
|
+
const { skillRoots, installedSkillsDir, bundledSkillsDir } = await import(
|
|
210
221
|
"./capabilities/skill/discover.js"
|
|
211
222
|
);
|
|
212
223
|
expect(installedSkillsDir().endsWith(join("recipes", "skills"))).toBe(true);
|
|
213
|
-
|
|
224
|
+
// The two roots that live on SHARED ground — the user's data home and the
|
|
225
|
+
// user's repository — are the ones a fork must namespace.
|
|
226
|
+
const namespaced = [
|
|
214
227
|
join("/work", ".recipes", "skills"),
|
|
215
228
|
installedSkillsDir(),
|
|
216
|
-
]
|
|
217
|
-
|
|
229
|
+
];
|
|
230
|
+
// The bundled snapshot is the third, and it is deliberately NOT namespaced
|
|
231
|
+
// by the bin name: it is the distribution's OWN package directory, which is
|
|
232
|
+
// already private to the install. A fork is a different package and ships
|
|
233
|
+
// its own `bundled-skills/`, so there is no shared ground to collide on —
|
|
234
|
+
// and it is exempt from the check below for exactly that reason, since the
|
|
235
|
+
// path this repository's package sits at necessarily says "pragma".
|
|
236
|
+
expect(bundledSkillsDir()).toBeDefined();
|
|
237
|
+
expect(skillRoots("/work")).toEqual([...namespaced, bundledSkillsDir()]);
|
|
238
|
+
for (const root of namespaced) {
|
|
218
239
|
expect(root).not.toMatch(THIS_DISTRIBUTION);
|
|
219
240
|
}
|
|
220
241
|
});
|
|
@@ -246,11 +267,17 @@ describe("identity projection — a fork changes values, not code (PROTECTED)",
|
|
|
246
267
|
const { pragmaMcpEntry } = await import(
|
|
247
268
|
"./capabilities/setup/operations/setupMcp.js"
|
|
248
269
|
);
|
|
249
|
-
expect(pragmaMcpEntry("/work")).toEqual({
|
|
270
|
+
expect(pragmaMcpEntry("/work", "project")).toEqual({
|
|
250
271
|
command: "recipes",
|
|
251
|
-
args: ["mcp"],
|
|
272
|
+
args: ["mcp", "serve"],
|
|
252
273
|
cwd: "/work",
|
|
253
274
|
});
|
|
275
|
+
// The global scope omits `cwd` (a per-user server is not project-pinned)
|
|
276
|
+
// but still runs the fork's own binary.
|
|
277
|
+
expect(pragmaMcpEntry("/work", "global")).toEqual({
|
|
278
|
+
command: "recipes",
|
|
279
|
+
args: ["mcp", "serve"],
|
|
280
|
+
});
|
|
254
281
|
});
|
|
255
282
|
|
|
256
283
|
it("generates a reference that never names this distribution", async () => {
|
|
@@ -263,9 +290,10 @@ describe("identity projection — a fork changes values, not code (PROTECTED)",
|
|
|
263
290
|
// ONE exemption, the same one the MCP orientation case above makes and for
|
|
264
291
|
// the same reason: the `pragma:` resource scheme is covenant-frozen PROTOCOL
|
|
265
292
|
// identity (`surface.v2.json`), inherited by a fork along with the
|
|
266
|
-
// `pragma/box` and `pragma/
|
|
267
|
-
// `tools.md` reports it truthfully. Masked from the
|
|
268
|
-
// a literal, so a leak the kernel authored itself
|
|
293
|
+
// `pragma/box`, `pragma/instanceCount` and `pragma/type` `_meta` keys it
|
|
294
|
+
// travels with, and `tools.md` reports it truthfully. Masked from the
|
|
295
|
+
// emitted surface, not by a literal, so a leak the kernel authored itself
|
|
296
|
+
// still fails here.
|
|
269
297
|
const { emitReference } = await import("./kernel/spec/emitReference.js");
|
|
270
298
|
const { emitSurface } = await import("./kernel/spec/emitSurface.js");
|
|
271
299
|
const { capabilities } = await import("./capabilities/index.js");
|
|
@@ -65,21 +65,21 @@ _pragma() {
|
|
|
65
65
|
# flag names
|
|
66
66
|
if [[ "$cur" == -* ]]; then
|
|
67
67
|
case "$noun/$verb" in
|
|
68
|
-
block/get) COMPREPLY=($(compgen -W "--view --out --with-meta --note --format --verbose --detail --help" -- "$cur")); return ;;
|
|
69
|
-
block/list) COMPREPLY=($(compgen -W "--tags --format --verbose --detail --help" -- "$cur")); return ;;
|
|
70
|
-
block/remove) COMPREPLY=($(compgen -W "--dry-run --undo --yes --format --verbose --detail --help" -- "$cur")); return ;;
|
|
68
|
+
block/get) COMPREPLY=($(compgen -W "--view --out --with-meta --note --format --verbose --detail --no-headers --quiet --help" -- "$cur")); return ;;
|
|
69
|
+
block/list) COMPREPLY=($(compgen -W "--tags --format --verbose --detail --no-headers --quiet --help" -- "$cur")); return ;;
|
|
70
|
+
block/remove) COMPREPLY=($(compgen -W "--dry-run --undo --yes --format --verbose --detail --no-headers --quiet --help" -- "$cur")); return ;;
|
|
71
71
|
esac
|
|
72
72
|
if [ -z "$noun" ]; then
|
|
73
|
-
COMPREPLY=($(compgen -W "--format --verbose --detail --help --version" -- "$cur"))
|
|
73
|
+
COMPREPLY=($(compgen -W "--format --verbose --detail --no-headers --quiet --help --version" -- "$cur"))
|
|
74
74
|
else
|
|
75
|
-
COMPREPLY=($(compgen -W "--format --verbose --detail --help" -- "$cur"))
|
|
75
|
+
COMPREPLY=($(compgen -W "--format --verbose --detail --no-headers --quiet --help" -- "$cur"))
|
|
76
76
|
fi
|
|
77
77
|
return
|
|
78
78
|
fi
|
|
79
79
|
|
|
80
80
|
# nouns
|
|
81
81
|
if [ -z "$noun" ]; then
|
|
82
|
-
COMPREPLY=($(compgen -W "block
|
|
82
|
+
COMPREPLY=($(compgen -W "block standard status" -- "$cur"))
|
|
83
83
|
return
|
|
84
84
|
fi
|
|
85
85
|
|
|
@@ -172,12 +172,14 @@ end
|
|
|
172
172
|
complete -c pragma -f
|
|
173
173
|
|
|
174
174
|
# nouns
|
|
175
|
-
complete -c pragma -n "__pragma_at ''" -a "block
|
|
175
|
+
complete -c pragma -n "__pragma_at ''" -a "block standard status"
|
|
176
176
|
|
|
177
177
|
# global flags
|
|
178
178
|
complete -c pragma -l format -x -a "plain llm json"
|
|
179
179
|
complete -c pragma -l verbose
|
|
180
180
|
complete -c pragma -l detail -x -a "summary standard detailed"
|
|
181
|
+
complete -c pragma -l no-headers
|
|
182
|
+
complete -c pragma -l quiet
|
|
181
183
|
complete -c pragma -l help
|
|
182
184
|
complete -c pragma -n "__pragma_at ''" -l version
|
|
183
185
|
|
|
@@ -277,21 +279,21 @@ _pragma() {
|
|
|
277
279
|
# flag names
|
|
278
280
|
if [[ "$cur" == -* ]]; then
|
|
279
281
|
case "$noun/$verb" in
|
|
280
|
-
block/get) compadd -- --view --out --with-meta --note --format --verbose --detail --help; return 0 ;;
|
|
281
|
-
block/list) compadd -- --tags --format --verbose --detail --help; return 0 ;;
|
|
282
|
-
block/remove) compadd -- --dry-run --undo --yes --format --verbose --detail --help; return 0 ;;
|
|
282
|
+
block/get) compadd -- --view --out --with-meta --note --format --verbose --detail --no-headers --quiet --help; return 0 ;;
|
|
283
|
+
block/list) compadd -- --tags --format --verbose --detail --no-headers --quiet --help; return 0 ;;
|
|
284
|
+
block/remove) compadd -- --dry-run --undo --yes --format --verbose --detail --no-headers --quiet --help; return 0 ;;
|
|
283
285
|
esac
|
|
284
286
|
if [[ -z "$noun" ]]; then
|
|
285
|
-
compadd -- --format --verbose --detail --help --version
|
|
287
|
+
compadd -- --format --verbose --detail --no-headers --quiet --help --version
|
|
286
288
|
else
|
|
287
|
-
compadd -- --format --verbose --detail --help
|
|
289
|
+
compadd -- --format --verbose --detail --no-headers --quiet --help
|
|
288
290
|
fi
|
|
289
291
|
return 0
|
|
290
292
|
fi
|
|
291
293
|
|
|
292
294
|
# nouns
|
|
293
295
|
if [[ -z "$noun" ]]; then
|
|
294
|
-
compadd -- block
|
|
296
|
+
compadd -- block standard status
|
|
295
297
|
return 0
|
|
296
298
|
fi
|
|
297
299
|
|
|
@@ -16,15 +16,24 @@ describe("runComplete — the __complete pipeline", () => {
|
|
|
16
16
|
it("resolves against the live capabilities (storeless static matches)", async () => {
|
|
17
17
|
await expect(runComplete(["co"], capabilities)).resolves.toEqual([
|
|
18
18
|
"colophon",
|
|
19
|
+
"concept",
|
|
19
20
|
"config",
|
|
20
21
|
]);
|
|
21
22
|
// The live `config` sub-verbs, prefix-filtered and sorted by the resolver.
|
|
22
|
-
// AV-228 B3 retired the per-field tier/channel/detail verbs
|
|
23
|
+
// AV-228 B3 retired the per-field tier/channel/detail verbs; the family is
|
|
24
|
+
// now the four jobs — read all, read one, write one, clear one.
|
|
23
25
|
await expect(runComplete(["config", ""], capabilities)).resolves.toEqual([
|
|
26
|
+
"get",
|
|
24
27
|
"set",
|
|
25
28
|
"show",
|
|
29
|
+
"unset",
|
|
26
30
|
]);
|
|
27
31
|
await expect(runComplete(["mc"], capabilities)).resolves.toEqual(["mcp"]);
|
|
32
|
+
// The server entry completes from its own spec — it used to be injected
|
|
33
|
+
// into the model because the bin served it without one.
|
|
34
|
+
await expect(runComplete(["mcp", ""], capabilities)).resolves.toEqual([
|
|
35
|
+
"serve",
|
|
36
|
+
]);
|
|
28
37
|
await expect(runComplete(["--d"], capabilities)).resolves.toEqual([
|
|
29
38
|
"--detail",
|
|
30
39
|
]);
|
|
@@ -38,6 +47,7 @@ describe("runComplete — the __complete pipeline", () => {
|
|
|
38
47
|
it("strips a leading bin name", async () => {
|
|
39
48
|
await expect(runComplete(["pragma", "co"], capabilities)).resolves.toEqual([
|
|
40
49
|
"colophon",
|
|
50
|
+
"concept",
|
|
41
51
|
"config",
|
|
42
52
|
]);
|
|
43
53
|
});
|
|
@@ -93,7 +103,7 @@ describe("runComplete — never-throw guard (PROTECTED)", () => {
|
|
|
93
103
|
await runComplete(["co"], capabilities);
|
|
94
104
|
const lines = write.mock.calls.map((call) => String(call[0]));
|
|
95
105
|
expect(lines.join("")).toMatch(
|
|
96
|
-
/\[complete\] context=noun partial="co" candidates=
|
|
106
|
+
/\[complete\] context=noun partial="co" candidates=3 in \d+(\.\d+)?ms/,
|
|
97
107
|
);
|
|
98
108
|
});
|
|
99
109
|
});
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
* whole grammar is testable through this one function.
|
|
31
31
|
*/
|
|
32
32
|
|
|
33
|
-
import type { CapabilityModule } from "../spec/
|
|
33
|
+
import type { CapabilityModule } from "../spec/index.js";
|
|
34
34
|
import { emptyNameSource } from "./entitySource.js";
|
|
35
35
|
import { buildCompletionModel } from "./model.js";
|
|
36
36
|
import { parseWords } from "./parse.js";
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
30
|
import { BIN_NAME } from "../../constants.js";
|
|
31
|
-
import type { CapabilityModule } from "../spec/
|
|
31
|
+
import type { CapabilityModule } from "../spec/index.js";
|
|
32
32
|
import { assertSafeToken, buildCompletionModel } from "./model.js";
|
|
33
33
|
import { bashScript } from "./templates/bash.js";
|
|
34
34
|
import { fishScript } from "./templates/fish.js";
|
|
@@ -2,6 +2,10 @@ import { mkdirSync, mkdtempSync, writeFileSync } from "node:fs";
|
|
|
2
2
|
import { tmpdir } from "node:os";
|
|
3
3
|
import { dirname, join } from "node:path";
|
|
4
4
|
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
5
|
+
import {
|
|
6
|
+
bundledSkillsDir,
|
|
7
|
+
discoverSkillsFrom,
|
|
8
|
+
} from "../../capabilities/skill/discover.js";
|
|
5
9
|
import { readConfig } from "../config/readConfig.js";
|
|
6
10
|
import { embeddedManifest } from "../runtime/graphpack/embedded.js";
|
|
7
11
|
import { activePackPath, packDir } from "../runtime/paths.js";
|
|
@@ -121,10 +125,19 @@ describe("indexCompletionEnv — multi-source names(ref)", () => {
|
|
|
121
125
|
join(skillDir, "SKILL.md"),
|
|
122
126
|
"---\nname: docx\ndescription: Word docs.\n---\n",
|
|
123
127
|
);
|
|
128
|
+
// The BUNDLED snapshot ships inside the package, so it is a discovery root
|
|
129
|
+
// on every machine — including this one. The project root's skill is what
|
|
130
|
+
// this cell is about; the expectation is derived from the shipped artifact
|
|
131
|
+
// rather than pinned to a list, so a release that changes which skills the
|
|
132
|
+
// packs provide does not rewrite this test.
|
|
133
|
+
const bundled = discoverSkillsFrom([bundledSkillsDir() as string]).map(
|
|
134
|
+
(skill) => skill.name,
|
|
135
|
+
);
|
|
136
|
+
const expected = [...new Set(["docx", ...bundled])].sort();
|
|
124
137
|
const env = indexCompletionEnv(cwd);
|
|
125
|
-
expect(await env.names({ from: "skills" })).toEqual(
|
|
138
|
+
expect(await env.names({ from: "skills" })).toEqual(expected);
|
|
126
139
|
// A second read returns the same list (one filesystem walk per env).
|
|
127
|
-
expect(await env.names({ from: "skills" })).toEqual(
|
|
140
|
+
expect(await env.names({ from: "skills" })).toEqual(expected);
|
|
128
141
|
});
|
|
129
142
|
|
|
130
143
|
it("a type nothing matches yields [] (prefixes still list the default map)", async () => {
|
|
@@ -313,7 +326,7 @@ describe("the storeless fast path implements the pointer half", () => {
|
|
|
313
326
|
// and would pass with the config file deleted. The read half refusing is
|
|
314
327
|
// what makes this directory a configured-but-unbuilt project rather than a
|
|
315
328
|
// fresh install. (`doctor` says so too, in the same words: verified against
|
|
316
|
-
//
|
|
329
|
+
// a cold install, where `block list` raises STORE_UNAVAILABLE while
|
|
317
330
|
// this same completion still answers.)
|
|
318
331
|
//
|
|
319
332
|
// If a later change gives the fast path a config-free way to see
|
|
@@ -33,11 +33,13 @@
|
|
|
33
33
|
* - The embedded fallback is read from `pack.index.generated` — its OWN
|
|
34
34
|
* generated module (only the index string) — so the storeless `__complete`
|
|
35
35
|
* path never EVALUATES the n-quads/schema/manifest strings that live in
|
|
36
|
-
* `pack.generated`.
|
|
37
|
-
*
|
|
38
|
-
* invocation (~+25 ms
|
|
39
|
-
*
|
|
40
|
-
*
|
|
36
|
+
* `pack.generated`. Under the compiled binary it did not avoid PARSING them
|
|
37
|
+
* either — one emitted script meant the whole embed was parsed at process
|
|
38
|
+
* start on every invocation (~+25 ms, measured on `--version`; BUDGETS.md
|
|
39
|
+
* records it), and the split bought only that a completion never allocated
|
|
40
|
+
* the 1.87 MB. Shipping per-module output changed that: `pack.generated` is
|
|
41
|
+
* a separate module the fast path never imports, so it is no longer parsed
|
|
42
|
+
* at all there. The split now buys both.
|
|
41
43
|
* - The active pack is resolved through `kernel/runtime/paths` — a LEAF module
|
|
42
44
|
* (node builtins only) that shares the pointer read with `resolveSources`.
|
|
43
45
|
* `resolveSources` itself is unreachable from here: it pulls the graphpack
|
|
@@ -62,7 +64,7 @@ import { discoverSkills } from "../../capabilities/skill/discover.js";
|
|
|
62
64
|
// Inlined embedded index — its OWN generated module (only the index string), so
|
|
63
65
|
// the storeless `__complete` path never pulls the n-quads/schema/manifest
|
|
64
66
|
// strings that live in `pack.generated.ts`.
|
|
65
|
-
import { DEFAULT_PREFIX_MAP } from "../render/
|
|
67
|
+
import { DEFAULT_PREFIX_MAP } from "../render/index.js";
|
|
66
68
|
import { indexJson as EMBEDDED_INDEX_JSON } from "../runtime/graphpack/embedded/pack.index.generated.js";
|
|
67
69
|
import type { PackIndex, PackIndexEntity } from "../runtime/graphpack/types.js";
|
|
68
70
|
import { packDir, readActivePack } from "../runtime/paths.js";
|
|
@@ -156,8 +158,19 @@ function loadActiveIndex(cwd: string): PackIndex | undefined {
|
|
|
156
158
|
: readIndexFile(packDir(contentHash));
|
|
157
159
|
}
|
|
158
160
|
|
|
159
|
-
/**
|
|
160
|
-
|
|
161
|
+
/**
|
|
162
|
+
* Whether an entity matches a prefixed type filter (primary type or any type).
|
|
163
|
+
*
|
|
164
|
+
* Exported because the MCP resource listing addresses the index by the SAME
|
|
165
|
+
* vocabulary a completion source does (`McpListableRef` reuses
|
|
166
|
+
* `CompletionSourceRef`'s fields), and "which entities is this type?" must be
|
|
167
|
+
* ONE rule — two would let a type list entities its completion refuses.
|
|
168
|
+
*
|
|
169
|
+
* @param entity - The indexed entity to test.
|
|
170
|
+
* @param type - A prefixed type filter; empty matches every entity.
|
|
171
|
+
* @returns Whether the entity carries that type.
|
|
172
|
+
*/
|
|
173
|
+
export function matchesType(entity: PackIndexEntity, type: string): boolean {
|
|
161
174
|
if (!type) return true;
|
|
162
175
|
if (entity.type === type) return true;
|
|
163
176
|
return Array.isArray(entity.types) && entity.types.includes(type);
|