@canonical/pragma-cli 0.33.0 → 0.35.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/dist/.build-ok +0 -0
- package/dist/package.json +83 -0
- package/dist/pragma.conf.js +814 -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 +293 -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 +92 -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/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 +205 -0
- package/dist/src/capabilities/doctor/checks/targetHealth.js.map +1 -0
- package/dist/src/capabilities/doctor/doctor.render.js +185 -0
- package/dist/src/capabilities/doctor/doctor.render.js.map +1 -0
- package/dist/src/capabilities/doctor/doctor.verb.js +45 -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 +83 -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 +66 -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 +53 -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 +168 -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 +343 -0
- package/dist/src/capabilities/setup/operations/setupGenerator.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupLsp.js +277 -0
- package/dist/src/capabilities/setup/operations/setupLsp.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupMcp.js +207 -0
- package/dist/src/capabilities/setup/operations/setupMcp.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupSkills.js +316 -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 +193 -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 +334 -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 +263 -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/bands.js +16 -0
- package/dist/src/capabilities/shared/bands.js.map +1 -0
- package/dist/src/capabilities/shared/index.js +26 -0
- package/dist/src/capabilities/shared/index.js.map +1 -0
- package/dist/src/capabilities/shared/packageManager.js +103 -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 +195 -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 +167 -0
- package/dist/src/capabilities/sources/installSkills.js.map +1 -0
- package/dist/src/capabilities/sources/runUpdate.js +394 -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 +99 -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 +44 -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 +82 -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 +25 -0
- package/dist/src/kernel/index.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 +223 -0
- package/dist/src/kernel/packs/resolveEntity.js.map +1 -0
- package/dist/src/kernel/packs/runBodies.js +87 -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 +369 -0
- package/dist/src/kernel/packs/schema.js.map +1 -0
- package/dist/src/kernel/packs/sparql/applyFilters.js +68 -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 +217 -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 +216 -0
- package/dist/src/kernel/project/cli/globalFlags.js.map +1 -0
- package/dist/src/kernel/project/cli/helpFormat.js +59 -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 +197 -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 +300 -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 +85 -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/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 +25 -24
- package/pragma.conf.ts +853 -0
- package/src/bin.ts +276 -82
- package/src/capabilities/block.parity.test.ts +253 -0
- package/src/capabilities/capabilities/capabilities.render.ts +4 -3
- package/src/capabilities/capabilities/capabilities.verb.ts +32 -14
- package/src/capabilities/capabilities/catalog.ts +20 -12
- package/src/capabilities/capabilities/hints.ts +43 -24
- package/src/capabilities/capabilities/index.ts +1 -1
- package/src/capabilities/colophon/collectColophon.ts +50 -24
- package/src/capabilities/colophon/colophon.render.ts +25 -1
- package/src/capabilities/colophon/colophon.test.ts +42 -21
- package/src/capabilities/colophon/colophon.verb.ts +9 -5
- package/src/capabilities/colophon/types.ts +16 -7
- package/src/capabilities/config/collectConfigShow.test.ts +58 -0
- package/src/capabilities/config/collectConfigShow.ts +43 -6
- package/src/capabilities/config/field.render.ts +4 -5
- package/src/capabilities/config/fields.ts +17 -37
- 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 +14 -9
- package/src/capabilities/config/show.render.test.ts +77 -5
- package/src/capabilities/config/show.render.ts +8 -13
- package/src/capabilities/config/show.verb.ts +13 -9
- package/src/capabilities/config/types.ts +26 -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 +95 -103
- package/src/capabilities/create/cliProjection.ts +227 -0
- package/src/capabilities/create/constants.ts +50 -0
- package/src/capabilities/create/create.mcp.test.ts +91 -7
- package/src/capabilities/create/create.render.ts +71 -7
- package/src/capabilities/create/create.test.ts +523 -162
- package/src/capabilities/create/create.verb.ts +361 -321
- 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 +9 -14
- 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 +40 -46
- package/src/capabilities/create/shippedCreate.subprocess.test.ts +164 -0
- package/src/capabilities/create/types.ts +29 -5
- package/src/capabilities/{standard/parity.test.ts → distribution.parity.test.ts} +24 -14
- package/src/capabilities/distribution.test.ts +122 -0
- package/src/capabilities/distribution.ts +54 -0
- package/src/capabilities/doctor/checks/checkKeStore.ts +9 -7
- package/src/capabilities/doctor/checks/checkPackageRefs.ts +82 -46
- package/src/capabilities/doctor/checks/checkPragmaVersion.ts +5 -4
- package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +125 -30
- package/src/capabilities/doctor/checks/checkShellCompletions.ts +113 -27
- 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 +274 -0
- package/src/capabilities/doctor/doctor.render.test.ts +24 -13
- package/src/capabilities/doctor/doctor.render.ts +45 -20
- package/src/capabilities/doctor/doctor.test.ts +158 -40
- package/src/capabilities/doctor/doctor.verb.ts +9 -5
- package/src/capabilities/doctor/runChecks.ts +65 -66
- package/src/capabilities/doctor/types.ts +21 -5
- package/src/capabilities/emptyRecovery.test.ts +44 -22
- 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 -5
- package/src/capabilities/graph/query.render.ts +15 -3
- package/src/capabilities/graph/query.verb.ts +5 -4
- package/src/capabilities/graph/runQuery.ts +9 -7
- package/src/capabilities/index.ts +25 -19
- package/src/capabilities/info/collectInfo.ts +15 -10
- package/src/capabilities/info/info.render.ts +4 -3
- package/src/capabilities/info/info.verb.ts +4 -3
- package/src/capabilities/lazy.test.ts +125 -2
- 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 +42 -83
- package/src/capabilities/prompt/index.ts +2 -2
- package/src/capabilities/prompt/prompt.render.ts +6 -2
- package/src/capabilities/prompt/prompt.test.ts +12 -6
- package/src/capabilities/prompt/types.ts +1 -1
- package/src/capabilities/prompt/verbs.ts +26 -14
- package/src/capabilities/reference.test.ts +63 -0
- package/src/capabilities/resources/provider.ts +367 -91
- package/src/capabilities/resources/resources.test.ts +411 -59
- package/src/capabilities/setup/buildPlan.ts +236 -0
- package/src/capabilities/setup/index.ts +7 -7
- package/src/capabilities/setup/mode.ts +74 -0
- package/src/capabilities/setup/operations/index.ts +74 -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 +397 -320
- package/src/capabilities/setup/operations/setupLsp.ts +329 -68
- package/src/capabilities/setup/operations/setupMcp.ts +137 -97
- package/src/capabilities/setup/operations/setupSkills.ts +336 -108
- package/src/capabilities/setup/plan.render.ts +241 -0
- package/src/capabilities/setup/plan.ts +236 -0
- package/src/capabilities/setup/setup.mcp.correctness.test.ts +432 -0
- package/src/capabilities/setup/setup.render.test.ts +281 -73
- package/src/capabilities/setup/setup.render.ts +45 -77
- package/src/capabilities/setup/setup.test.ts +972 -209
- package/src/capabilities/setup/setup.verb.ts +233 -74
- package/src/capabilities/setup/shell.test.ts +86 -0
- package/src/capabilities/setup/shell.ts +166 -14
- package/src/capabilities/setup/targets.ts +367 -0
- package/src/capabilities/setup/types.ts +18 -57
- package/src/capabilities/shared/assertExecOk.ts +68 -10
- package/src/capabilities/shared/index.ts +32 -0
- package/src/capabilities/shared/packageManager.test.ts +55 -0
- package/src/capabilities/shared/packageManager.ts +62 -6
- package/src/capabilities/skill/discover.ts +47 -9
- package/src/capabilities/skill/index.ts +1 -1
- package/src/capabilities/skill/render.ts +14 -14
- package/src/capabilities/skill/skill.test.ts +7 -5
- package/src/capabilities/skill/verbs.ts +9 -10
- package/src/capabilities/sources/collectStatus.ts +61 -51
- package/src/capabilities/sources/index.ts +2 -2
- package/src/capabilities/sources/installSkills.ts +86 -9
- package/src/capabilities/sources/runUpdate.ts +164 -141
- package/src/capabilities/sources/sources.test.ts +265 -119
- package/src/capabilities/sources/status.render.test.ts +53 -24
- package/src/capabilities/sources/status.render.ts +25 -30
- package/src/capabilities/sources/status.verb.ts +16 -9
- package/src/capabilities/sources/types.ts +18 -25
- package/src/capabilities/sources/update.render.ts +10 -3
- package/src/capabilities/sources/update.verb.ts +13 -24
- package/src/capabilities/surface.test.ts +165 -25
- package/src/capabilities/tier.parity.test.ts +144 -0
- package/src/capabilities/upgrade/runUpgrade.ts +8 -8
- package/src/capabilities/upgrade/upgrade.render.ts +4 -5
- package/src/capabilities/upgrade/upgrade.test.ts +3 -3
- package/src/capabilities/upgrade/upgrade.verb.ts +8 -4
- 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.test.ts +8 -6
- package/src/constants.ts +78 -22
- package/src/identity.test.ts +348 -0
- package/src/index.ts +2 -2
- package/src/kernel/completion/__snapshots__/emitScripts.test.ts.snap +20 -15
- package/src/kernel/completion/complete.test.ts +12 -2
- package/src/kernel/completion/complete.ts +1 -1
- package/src/kernel/completion/emitScripts.test.ts +1 -1
- package/src/kernel/completion/emitScripts.ts +5 -3
- package/src/kernel/completion/entitySource.test.ts +185 -41
- package/src/kernel/completion/entitySource.ts +133 -110
- package/src/kernel/completion/model.test.ts +165 -13
- package/src/kernel/completion/model.ts +105 -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 +104 -50
- package/src/kernel/completion/shellDrive.test.ts +611 -0
- package/src/kernel/completion/templates/bash.ts +7 -2
- package/src/kernel/completion/templates/fish.ts +28 -6
- package/src/kernel/completion/templates/index.ts +23 -0
- package/src/kernel/completion/types.ts +10 -3
- package/src/kernel/config/defaults.test.ts +108 -0
- package/src/kernel/config/defaults.ts +13 -23
- package/src/kernel/config/evaluateProjectConfig.ts +33 -11
- package/src/kernel/config/findProjectConfig.ts +4 -3
- package/src/kernel/config/firstRun.test.ts +44 -38
- package/src/kernel/config/firstRun.ts +24 -81
- package/src/kernel/config/globalConfig.ts +2 -2
- package/src/kernel/config/index.ts +5 -6
- package/src/kernel/config/paths.ts +17 -17
- package/src/kernel/config/readConfig.test.ts +246 -7
- package/src/kernel/config/readConfig.ts +8 -8
- package/src/kernel/config/schema.test.ts +50 -0
- package/src/kernel/config/schema.ts +100 -11
- package/src/kernel/config/types.ts +75 -19
- package/src/kernel/copy.test.ts +483 -0
- package/src/kernel/copy.ts +54 -0
- package/src/kernel/error/PragmaError.test.ts +6 -3
- package/src/kernel/error/PragmaError.ts +4 -2
- package/src/kernel/error/constants.ts +7 -4
- package/src/kernel/error/fromTaskError.ts +28 -6
- package/src/kernel/error/index.ts +1 -1
- package/src/kernel/error/recovery.test.ts +22 -45
- package/src/kernel/error/recovery.ts +36 -27
- package/src/kernel/error/renderError.ts +42 -1
- package/src/kernel/error/types.ts +25 -4
- package/src/kernel/index.ts +26 -0
- package/src/kernel/packs/collect.test.ts +195 -11
- package/src/kernel/packs/collect.ts +212 -61
- package/src/kernel/packs/compile.test.ts +293 -8
- package/src/kernel/packs/compile.ts +108 -15
- package/src/kernel/packs/disclosure.test.ts +5 -2
- package/src/kernel/packs/disclosure.ts +2 -2
- package/src/kernel/packs/graphql/buildLookupDocument.ts +1 -1
- package/src/kernel/packs/graphql/fetchGraphqlLookup.ts +13 -13
- package/src/kernel/packs/graphql/index.ts +20 -0
- package/src/kernel/packs/graphqlSource.test.ts +6 -3
- package/src/kernel/packs/index.ts +40 -0
- package/src/kernel/packs/iri.test.ts +73 -0
- package/src/kernel/packs/iri.ts +70 -20
- package/src/kernel/packs/renderPack.ts +28 -7
- package/src/kernel/packs/resolveEntity.test.ts +213 -0
- package/src/kernel/packs/resolveEntity.ts +132 -34
- package/src/kernel/packs/runBodies.ts +16 -16
- package/src/kernel/packs/sample.ts +1 -1
- package/src/kernel/packs/schema.ts +114 -11
- package/src/kernel/packs/sparql/applyFilters.ts +16 -17
- package/src/kernel/packs/sparql/buildLookupQuery.ts +75 -3
- package/src/kernel/packs/sparql/index.ts +37 -0
- package/src/kernel/packs/sparql/runSelect.test.ts +104 -10
- package/src/kernel/packs/sparql/runSelect.ts +75 -37
- package/src/kernel/packs/toolDescription.test.ts +52 -5
- package/src/kernel/packs/types.ts +52 -4
- package/src/kernel/packs/uniqueness.ts +5 -5
- package/src/kernel/project/cli/buildProgram.test.ts +157 -17
- package/src/kernel/project/cli/buildProgram.ts +77 -18
- package/src/kernel/project/cli/constants.ts +34 -0
- package/src/kernel/project/cli/dispatch.test.ts +227 -3
- package/src/kernel/project/cli/dispatch.ts +250 -48
- 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 +130 -30
- package/src/kernel/project/cli/helpFormat.ts +14 -1
- package/src/kernel/project/cli/rootHelp.ts +140 -111
- 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 +18 -10
- package/src/kernel/project/mcp/envelope.ts +2 -2
- package/src/kernel/project/mcp/instructions.ts +12 -7
- package/src/kernel/project/mcp/mcpError.ts +1 -1
- package/src/kernel/project/mcp/parity.test.ts +42 -1
- package/src/kernel/project/mcp/prompts/index.ts +37 -0
- package/src/kernel/project/mcp/prompts/prompts.test.ts +120 -5
- package/src/kernel/project/mcp/prompts/provider.ts +22 -8
- package/src/kernel/project/mcp/prompts/source.ts +69 -68
- package/src/kernel/project/mcp/registerVerb.ts +56 -11
- package/src/kernel/project/mcp/serve.ts +13 -5
- package/src/kernel/project/mcp/toolDescriptions.test.ts +6 -2
- package/src/kernel/render/__snapshots__/renderers.test.ts.snap +7 -4
- package/src/kernel/render/contracts.ts +21 -0
- package/src/kernel/render/disclosure.ts +4 -2
- package/src/kernel/render/envelope.ts +2 -3
- package/src/kernel/render/formatters.ts +1 -1
- package/src/kernel/render/prefixes.test.ts +36 -0
- package/src/kernel/render/prefixes.ts +40 -13
- package/src/kernel/render/renderers.test.ts +244 -7
- package/src/kernel/render/renderers.ts +222 -20
- package/src/kernel/render/style.test.ts +75 -24
- package/src/kernel/render/style.ts +31 -1
- package/src/kernel/render/turtle.ts +222 -0
- package/src/kernel/runtime/graphpack/build.ts +29 -3
- package/src/kernel/runtime/graphpack/buildIndex.test.ts +46 -0
- package/src/kernel/runtime/graphpack/buildIndex.ts +53 -18
- package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +5 -5
- package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +3 -3
- package/src/kernel/runtime/graphpack/embedded/pack.stories.generated.ts +3 -0
- package/src/kernel/runtime/graphpack/embedded.ts +39 -13
- package/src/kernel/runtime/graphpack/graphpack.test.ts +205 -5
- package/src/kernel/runtime/graphpack/hash.ts +3 -2
- package/src/kernel/runtime/graphpack/index.ts +1 -1
- package/src/kernel/runtime/graphpack/manifest.ts +114 -12
- package/src/kernel/runtime/graphpack/read.ts +5 -11
- package/src/kernel/runtime/graphpack/schemas.ts +74 -0
- package/src/kernel/runtime/graphpack/stories.ts +84 -0
- package/src/kernel/runtime/graphpack/types.ts +61 -48
- package/src/kernel/runtime/loadSession.ts +1 -1
- package/src/kernel/runtime/paths.ts +64 -15
- package/src/kernel/runtime/probe.test.ts +8 -4
- package/src/kernel/runtime/probe.ts +6 -6
- package/src/kernel/runtime/readEntity.ts +477 -32
- package/src/kernel/runtime/refs/gitOps.ts +1 -19
- package/src/kernel/runtime/refs/index.ts +39 -0
- package/src/kernel/runtime/refs/parseRef.ts +8 -8
- package/src/kernel/runtime/refs/resolve.ts +82 -66
- package/src/kernel/runtime/resolveSources.test.ts +63 -24
- package/src/kernel/runtime/resolveSources.ts +36 -25
- package/src/kernel/runtime/storeReadiness.ts +10 -10
- package/src/kernel/runtime/storeless.test.ts +1 -1
- package/src/kernel/runtime/types.ts +15 -1
- package/src/kernel/runtime/wasmEmbed.test.ts +56 -55
- package/src/kernel/spec/emitReference.test.ts +3 -3
- package/src/kernel/spec/emitReference.ts +242 -34
- package/src/kernel/spec/emitSurface.ts +57 -11
- package/src/kernel/spec/surfaceConformance.test.ts +4 -2
- package/src/kernel/spec/surfaceConformance.ts +8 -0
- package/src/kernel/spec/types.ts +277 -13
- package/src/kernel/spec/validate.ts +2 -1
- package/src/kernel/vocabulary.test.ts +164 -0
- package/src/kernel/vocabulary.ts +146 -0
- package/src/testing/PARITY_GAPS.ts +8 -2
- package/src/testing/behavioral/README.md +3 -3
- package/src/testing/behavioral/completion.test.ts +19 -6
- package/src/testing/behavioral/docExamples.test.ts +14 -0
- package/src/testing/behavioral/errorMatrix.mcp.test.ts +6 -5
- package/src/testing/behavioral/errorMatrix.storeless.test.ts +1 -1
- package/src/testing/behavioral/exitCodes.e2e.test.ts +6 -5
- package/src/testing/behavioral/firstRun.e2e.test.ts +24 -24
- package/src/testing/behavioral/harness.foundation.test.ts +14 -5
- package/src/testing/behavioral/journeys.cli.test.ts +117 -76
- package/src/testing/behavioral/journeys.defaultPack.test.ts +88 -182
- package/src/testing/behavioral/journeys.firstInstall.test.ts +167 -0
- 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.mcpLifecycle.mcp.test.ts +9 -6
- package/src/testing/behavioral/journeys.packageStories.test.ts +188 -0
- package/src/testing/behavioral/liveReadSurface.ts +4 -3
- package/src/testing/behavioral/mcpServe.e2e.test.ts +57 -2
- package/src/testing/behavioral/mcpSurface.test.ts +10 -5
- package/src/testing/behavioral/rootCli.e2e.test.ts +26 -2
- package/src/testing/behavioral/staleCommands.test.ts +10 -0
- package/src/testing/eval/__snapshots__/eval.test.ts.snap +7 -7
- package/src/testing/eval/cases/assembly.ts +13 -6
- package/src/testing/eval/cases/effectful.ts +28 -15
- package/src/testing/eval/cases/readNouns.ts +22 -20
- package/src/testing/eval/cases/stable.ts +5 -1
- package/src/testing/eval/eval.test.ts +7 -1
- package/src/testing/fixtures/blockGraph.ts +79 -0
- package/src/testing/fixtures/fixtureCapability.ts +45 -1
- package/src/testing/fixtures/graph/canonical.ts +94 -5
- package/src/testing/fixtures/graph/defaultPack.ts +7 -6
- package/src/testing/fixtures/graph/owlExport.ts +7 -5
- package/src/testing/helpers/blankCanonicalRanges.ts +36 -0
- package/src/testing/helpers/fixtureGraph.ts +33 -16
- package/src/testing/helpers/packRuntime.ts +2 -3
- package/src/testing/helpers/projectCli.ts +2 -1
- package/src/testing/helpers/projectMcp.ts +38 -6
- package/src/testing/helpers/runCli.ts +35 -18
- package/src/testing/perf/budgets.test.ts +24 -9
- package/src/testing/perf/budgets.ts +76 -12
- package/src/testing/perf/codegen.test.ts +126 -0
- package/src/testing/perf/globalSetup.test.ts +286 -0
- package/src/testing/perf/globalSetup.ts +611 -14
- 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/src/types.ts +2 -2
- package/dist/pragma +0 -0
- package/src/capabilities/block/blockList.test.ts +0 -79
- package/src/capabilities/block/blockList.verb.ts +0 -163
- package/src/capabilities/block/index.ts +0 -25
- package/src/capabilities/block/pack.ts +0 -166
- package/src/capabilities/block/parity.test.ts +0 -187
- package/src/capabilities/block/tierChain.ts +0 -78
- package/src/capabilities/colophon/pragmaColophon.ts +0 -66
- package/src/capabilities/create/compiledCreate.subprocess.test.ts +0 -152
- package/src/capabilities/create/templates.embedded.generated.ts +0 -53
- package/src/capabilities/doctor/checks/checkConfigFile.ts +0 -41
- package/src/capabilities/doctor/checks/checkMcpCommands.ts +0 -114
- package/src/capabilities/doctor/checks/checkMcpConfigured.ts +0 -67
- package/src/capabilities/doctor/checks/checkSkillsSymlinked.ts +0 -60
- package/src/capabilities/doctor/checks/deriveBand.test.ts +0 -42
- package/src/capabilities/doctor/checks/deriveBand.ts +0 -28
- package/src/capabilities/modifier/index.ts +0 -15
- package/src/capabilities/modifier/pack.ts +0 -64
- package/src/capabilities/standard/index.ts +0 -18
- package/src/capabilities/standard/pack.ts +0 -128
- package/src/capabilities/tier/index.ts +0 -19
- package/src/capabilities/tier/lookup.render.test.ts +0 -72
- package/src/capabilities/tier/lookup.render.ts +0 -59
- package/src/capabilities/tier/lookup.test.ts +0 -83
- package/src/capabilities/tier/lookup.verb.ts +0 -44
- package/src/capabilities/tier/pack.ts +0 -28
- package/src/capabilities/tier/runLookup.ts +0 -87
- package/src/capabilities/token/addConfig.render.ts +0 -27
- package/src/capabilities/token/addConfig.test.ts +0 -62
- package/src/capabilities/token/addConfig.verb.ts +0 -40
- package/src/capabilities/token/index.ts +0 -19
- package/src/capabilities/token/pack.ts +0 -58
- package/src/capabilities/token/runAddConfig.ts +0 -95
- package/src/kernel/completion/bashDrive.test.ts +0 -73
- package/src/kernel/config/__snapshots__/firstRun.test.ts.snap +0 -11
- package/src/kernel/runtime/graphpack/embedded/sample.ttl +0 -39
- package/src/kernel/runtime/lock.ts +0 -90
|
@@ -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
|
|
|
@@ -142,6 +142,9 @@ end
|
|
|
142
142
|
function __pragma_minchars
|
|
143
143
|
test (string length -- (commandline -ct)) -ge $argv[1]
|
|
144
144
|
end
|
|
145
|
+
function __pragma_notflag
|
|
146
|
+
not string match -q -- '-*' (commandline -ct)
|
|
147
|
+
end
|
|
145
148
|
function __pragma_at
|
|
146
149
|
set -l cmd (commandline -opc)
|
|
147
150
|
set -l noun ''
|
|
@@ -169,12 +172,14 @@ end
|
|
|
169
172
|
complete -c pragma -f
|
|
170
173
|
|
|
171
174
|
# nouns
|
|
172
|
-
complete -c pragma -n "__pragma_at ''" -a "block
|
|
175
|
+
complete -c pragma -n "__pragma_at ''" -a "block standard status"
|
|
173
176
|
|
|
174
177
|
# global flags
|
|
175
178
|
complete -c pragma -l format -x -a "plain llm json"
|
|
176
179
|
complete -c pragma -l verbose
|
|
177
180
|
complete -c pragma -l detail -x -a "summary standard detailed"
|
|
181
|
+
complete -c pragma -l no-headers
|
|
182
|
+
complete -c pragma -l quiet
|
|
178
183
|
complete -c pragma -l help
|
|
179
184
|
complete -c pragma -n "__pragma_at ''" -l version
|
|
180
185
|
|
|
@@ -185,14 +190,14 @@ complete -c pragma -n "__pragma_at block" -a "diff get list remove"
|
|
|
185
190
|
complete -c pragma -n "__pragma_at standard" -a "list"
|
|
186
191
|
|
|
187
192
|
# block/diff
|
|
188
|
-
complete -c pragma -n "__pragma_at block diff; and __pragma_minchars 2" -a "(pragma __complete -- (__pragma_words) 2>/dev/null)"
|
|
193
|
+
complete -c pragma -n "__pragma_at block diff; and __pragma_notflag; and __pragma_minchars 2" -a "(pragma __complete -- (__pragma_words) 2>/dev/null)"
|
|
189
194
|
|
|
190
195
|
# block/get
|
|
191
196
|
complete -c pragma -n "__pragma_at block get" -l view -x -a "anatomy full summary"
|
|
192
197
|
complete -c pragma -n "__pragma_at block get" -l out -rF
|
|
193
198
|
complete -c pragma -n "__pragma_at block get" -l with-meta
|
|
194
199
|
complete -c pragma -n "__pragma_at block get" -l note -x
|
|
195
|
-
complete -c pragma -n "__pragma_at block get; and __pragma_minchars 2" -a "(pragma __complete -- (__pragma_words) 2>/dev/null)"
|
|
200
|
+
complete -c pragma -n "__pragma_at block get; and __pragma_notflag; and __pragma_minchars 2" -a "(pragma __complete -- (__pragma_words) 2>/dev/null)"
|
|
196
201
|
|
|
197
202
|
# block/list
|
|
198
203
|
complete -c pragma -n "__pragma_at block list" -l tags -x
|
|
@@ -274,21 +279,21 @@ _pragma() {
|
|
|
274
279
|
# flag names
|
|
275
280
|
if [[ "$cur" == -* ]]; then
|
|
276
281
|
case "$noun/$verb" in
|
|
277
|
-
block/get) compadd -- --view --out --with-meta --note --format --verbose --detail --help; return 0 ;;
|
|
278
|
-
block/list) compadd -- --tags --format --verbose --detail --help; return 0 ;;
|
|
279
|
-
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 ;;
|
|
280
285
|
esac
|
|
281
286
|
if [[ -z "$noun" ]]; then
|
|
282
|
-
compadd -- --format --verbose --detail --help --version
|
|
287
|
+
compadd -- --format --verbose --detail --no-headers --quiet --help --version
|
|
283
288
|
else
|
|
284
|
-
compadd -- --format --verbose --detail --help
|
|
289
|
+
compadd -- --format --verbose --detail --no-headers --quiet --help
|
|
285
290
|
fi
|
|
286
291
|
return 0
|
|
287
292
|
fi
|
|
288
293
|
|
|
289
294
|
# nouns
|
|
290
295
|
if [[ -z "$noun" ]]; then
|
|
291
|
-
compadd -- block
|
|
296
|
+
compadd -- block standard status
|
|
292
297
|
return 0
|
|
293
298
|
fi
|
|
294
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";
|
|
@@ -108,7 +108,7 @@ describe("emitScripts — minChars gate + family opt-out", () => {
|
|
|
108
108
|
});
|
|
109
109
|
});
|
|
110
110
|
|
|
111
|
-
describe("emitScripts — binName parameterization
|
|
111
|
+
describe("emitScripts — binName parameterization", () => {
|
|
112
112
|
it("defaults to pragma", () => {
|
|
113
113
|
expect(scripts.bash).toContain("complete -F _pragma pragma");
|
|
114
114
|
expect(scripts.zsh.startsWith("#compdef pragma")).toBe(true);
|
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
* derivation the `__complete` resolver uses — the tiers cannot disagree) and
|
|
6
6
|
* renders one script per supported shell. The static tier answers STRUCTURE
|
|
7
7
|
* with zero exec: nouns, verbs, flag names, enum values, mutation + global
|
|
8
|
-
* flags, native file completion. Only `{kind:"
|
|
8
|
+
* flags, native file completion. Only `{kind:"names"}` value contexts shell
|
|
9
9
|
* out to `<bin> __complete`.
|
|
10
10
|
*
|
|
11
11
|
* PR6 boundary (`setup completions`): this module exports pure CONTENT only
|
|
12
12
|
* — shell detection, install paths, mkdir/write effects, and hints all
|
|
13
|
-
* belong to setup. `binName` is parameterized so
|
|
13
|
+
* belong to setup. `binName` is parameterized so a fork's rename reaches the
|
|
14
|
+
* script body (`completionScriptPath` derives the file NAME from the same
|
|
15
|
+
* constant, and the two must agree or the shell never loads the file);
|
|
14
16
|
* `minChars` and `disabledFamilies` are read from `completion` config by setup.
|
|
15
17
|
*
|
|
16
18
|
* `minChars` (default {@link DEFAULT_MIN_CHARS}) is baked into the scripts to
|
|
@@ -26,7 +28,7 @@
|
|
|
26
28
|
*/
|
|
27
29
|
|
|
28
30
|
import { BIN_NAME } from "../../constants.js";
|
|
29
|
-
import type { CapabilityModule } from "../spec/
|
|
31
|
+
import type { CapabilityModule } from "../spec/index.js";
|
|
30
32
|
import { assertSafeToken, buildCompletionModel } from "./model.js";
|
|
31
33
|
import { bashScript } from "./templates/bash.js";
|
|
32
34
|
import { fishScript } from "./templates/fish.js";
|
|
@@ -1,45 +1,68 @@
|
|
|
1
1
|
import { mkdirSync, mkdtempSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { tmpdir } from "node:os";
|
|
3
|
-
import { join } from "node:path";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
4
|
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
5
|
+
import { readConfig } from "../config/readConfig.js";
|
|
6
|
+
import { embeddedManifest } from "../runtime/graphpack/embedded.js";
|
|
7
|
+
import { activePackPath, packDir } from "../runtime/paths.js";
|
|
8
|
+
import { resolveSources } from "../runtime/resolveSources.js";
|
|
5
9
|
import type { CapabilityModule, VerbSpec } from "../spec/types.js";
|
|
6
10
|
import { runComplete } from "./complete.js";
|
|
7
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
createIndexEntityReader,
|
|
13
|
+
indexCompletionEnv,
|
|
14
|
+
readPackIndex,
|
|
15
|
+
} from "./entitySource.js";
|
|
8
16
|
|
|
9
|
-
/** A fresh cwd with no
|
|
17
|
+
/** A fresh cwd with no pointer → the reader falls back to the embedded pack. */
|
|
10
18
|
const freshCwd = (): string => mkdtempSync(join(tmpdir(), "pragma-entity-"));
|
|
11
19
|
|
|
12
|
-
/**
|
|
20
|
+
/** The 64-hex content hash the crafted pack is filed under. */
|
|
21
|
+
const CRAFTED_HASH = "1".repeat(64);
|
|
22
|
+
|
|
23
|
+
/** A project pointed at a crafted index.json in a temp pack cache. */
|
|
13
24
|
function projectWithIndex(index: unknown): string {
|
|
14
25
|
const cwd = mkdtempSync(join(tmpdir(), "pragma-idx-cwd-"));
|
|
15
26
|
const cache = mkdtempSync(join(tmpdir(), "pragma-idx-cache-"));
|
|
16
27
|
vi.stubEnv("XDG_CACHE_HOME", cache);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
);
|
|
21
|
-
const packDir = join(cache, "pragma", "packs", "testhash");
|
|
28
|
+
const pointer = activePackPath(cwd);
|
|
29
|
+
mkdirSync(dirname(pointer), { recursive: true });
|
|
30
|
+
writeFileSync(pointer, CRAFTED_HASH);
|
|
31
|
+
const packDir = join(cache, "pragma", "packs", CRAFTED_HASH);
|
|
22
32
|
mkdirSync(packDir, { recursive: true });
|
|
23
33
|
writeFileSync(join(packDir, "index.json"), JSON.stringify(index));
|
|
24
34
|
return cwd;
|
|
25
35
|
}
|
|
26
36
|
|
|
27
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* A crafted index exercising the index / prefixes sources. Deliberately in a
|
|
39
|
+
* NEUTRAL namespace: the reader knows no entity families any more, so a test
|
|
40
|
+
* proving it reads `label` or `altNames` must not need this distribution's
|
|
41
|
+
* vocabulary to say so. Since L-OPEN-9 no live verb declares the `altNames`
|
|
42
|
+
* field (the tier lookup completes entity names like every declared lookup),
|
|
43
|
+
* so this crafted index is where the field's read contract is held.
|
|
44
|
+
*
|
|
45
|
+
* Real-vocabulary coverage lives in two places, and neither is here: the
|
|
46
|
+
* PROTECTED contract describe below reads the shipped index for plain entity
|
|
47
|
+
* NAMES, and `safety.test.ts`'s "every declared name source resolves without
|
|
48
|
+
* constructing the store" drives the live grammar over the shipped index for
|
|
49
|
+
* entity names (`tier lookup ap` → `ds:apps`) and for `prefixes`.
|
|
50
|
+
*/
|
|
28
51
|
const CRAFTED_INDEX = {
|
|
29
52
|
version: 2,
|
|
30
|
-
contentHash:
|
|
31
|
-
prefixes: { ex: "https://example.com/"
|
|
53
|
+
contentHash: CRAFTED_HASH,
|
|
54
|
+
prefixes: { ex: "https://example.com/" },
|
|
32
55
|
instanceCountByType: {},
|
|
33
56
|
entities: [
|
|
34
57
|
{ name: "ex:Button", type: "ex:Component" },
|
|
35
|
-
{ name: "
|
|
58
|
+
{ name: "ex:prompt.build", type: "ex:Prompt", label: "build-a-block" },
|
|
36
59
|
{
|
|
37
|
-
name: "
|
|
38
|
-
type: "
|
|
60
|
+
name: "ex:tier.lxd",
|
|
61
|
+
type: "ex:Tier",
|
|
39
62
|
label: "LXD",
|
|
40
63
|
altNames: ["apps/lxd"],
|
|
41
64
|
},
|
|
42
|
-
{ name: "
|
|
65
|
+
{ name: "ex:tier.core", type: "ex:Tier", label: "core" },
|
|
43
66
|
],
|
|
44
67
|
};
|
|
45
68
|
|
|
@@ -55,15 +78,27 @@ describe("indexCompletionEnv — multi-source names(ref)", () => {
|
|
|
55
78
|
]);
|
|
56
79
|
});
|
|
57
80
|
|
|
58
|
-
it("
|
|
81
|
+
it("index + field label: emits the label, and nothing for an entity without one", async () => {
|
|
59
82
|
const env = indexCompletionEnv(projectWithIndex(CRAFTED_INDEX));
|
|
60
|
-
expect(
|
|
83
|
+
expect(
|
|
84
|
+
await env.names({ from: "index", type: "ex:Prompt", field: "label" }),
|
|
85
|
+
).toEqual(["build-a-block"]);
|
|
86
|
+
// `ex:Button` carries no label. The lookup that declared this field matches
|
|
87
|
+
// on the label, so standing the name in would offer a token that lookup
|
|
88
|
+
// cannot resolve.
|
|
89
|
+
expect(
|
|
90
|
+
await env.names({ from: "index", type: "ex:Component", field: "label" }),
|
|
91
|
+
).toEqual([]);
|
|
61
92
|
});
|
|
62
93
|
|
|
63
|
-
it("
|
|
94
|
+
it("index + field altNames: emits only the alt names, never a label in their place", async () => {
|
|
64
95
|
const env = indexCompletionEnv(projectWithIndex(CRAFTED_INDEX));
|
|
65
|
-
// apps/lxd
|
|
66
|
-
|
|
96
|
+
// `ex:tier.lxd` carries `apps/lxd`; `ex:tier.core` carries none, so its
|
|
97
|
+
// label `core` is NOT offered — a bespoke tier lookup filters on the
|
|
98
|
+
// declared alt-name property and would refuse it.
|
|
99
|
+
expect(
|
|
100
|
+
await env.names({ from: "index", type: "ex:Tier", field: "altNames" }),
|
|
101
|
+
).toEqual(["apps/lxd"]);
|
|
67
102
|
});
|
|
68
103
|
|
|
69
104
|
it("prefixes: the index's prefixes ∪ the default display map", async () => {
|
|
@@ -92,18 +127,23 @@ describe("indexCompletionEnv — multi-source names(ref)", () => {
|
|
|
92
127
|
expect(await env.names({ from: "skills" })).toEqual(["docx"]);
|
|
93
128
|
});
|
|
94
129
|
|
|
95
|
-
it("
|
|
130
|
+
it("a type nothing matches yields [] (prefixes still list the default map)", async () => {
|
|
96
131
|
const env = indexCompletionEnv(
|
|
97
132
|
projectWithIndex({
|
|
98
133
|
version: 2,
|
|
99
|
-
contentHash:
|
|
134
|
+
contentHash: CRAFTED_HASH,
|
|
100
135
|
prefixes: {},
|
|
101
136
|
instanceCountByType: {},
|
|
102
137
|
entities: [{ name: "ex:Button", type: "ex:Component" }],
|
|
103
138
|
}),
|
|
104
139
|
);
|
|
105
|
-
expect(
|
|
106
|
-
|
|
140
|
+
expect(
|
|
141
|
+
await env.names({ from: "index", type: "ex:Prompt", field: "label" }),
|
|
142
|
+
).toEqual([]);
|
|
143
|
+
expect(
|
|
144
|
+
await env.names({ from: "index", type: "ex:Tier", field: "altNames" }),
|
|
145
|
+
).toEqual([]);
|
|
146
|
+
// The display map is compiled in, so it answers with no index at all.
|
|
107
147
|
expect(await env.names({ from: "prefixes" })).toContain("ds");
|
|
108
148
|
});
|
|
109
149
|
});
|
|
@@ -112,16 +152,18 @@ describe("entity source contract (PROTECTED)", () => {
|
|
|
112
152
|
it("reads the embedded index storelessly, filtering by type + partial", () => {
|
|
113
153
|
const read = createIndexEntityReader(freshCwd());
|
|
114
154
|
|
|
115
|
-
//
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
"ex:Dialog",
|
|
120
|
-
]);
|
|
155
|
+
// An abox individual of ds:Component. Membership, not the full 100+ list:
|
|
156
|
+
// the roster moves whenever the design system does, but a design system
|
|
157
|
+
// without a button is a change a human should look at.
|
|
158
|
+
expect(read("ds:Component", "")).toContain("ds:global.component.button");
|
|
121
159
|
// Tbox class.
|
|
122
|
-
expect(read("owl:Class", "")).
|
|
123
|
-
// Partial-prefix filter.
|
|
124
|
-
|
|
160
|
+
expect(read("owl:Class", "")).toContain("ds:Component");
|
|
161
|
+
// Partial-prefix filter: every candidate starts with what was typed.
|
|
162
|
+
const partial = read("ds:Component", "ds:global.component.but");
|
|
163
|
+
expect(partial).toContain("ds:global.component.button");
|
|
164
|
+
for (const name of partial) {
|
|
165
|
+
expect(name.startsWith("ds:global.component.but")).toBe(true);
|
|
166
|
+
}
|
|
125
167
|
// Unknown type → no matches (never throws).
|
|
126
168
|
expect(read("ds:Nope", "")).toEqual([]);
|
|
127
169
|
});
|
|
@@ -129,16 +171,16 @@ describe("entity source contract (PROTECTED)", () => {
|
|
|
129
171
|
it("relies only on the frozen { name, type } minimum", () => {
|
|
130
172
|
const read = createIndexEntityReader(freshCwd());
|
|
131
173
|
// Every result is a bare name token (string), usable with no other field.
|
|
132
|
-
for (const name of read("
|
|
174
|
+
for (const name of read("ds:Component", "")) {
|
|
133
175
|
expect(typeof name).toBe("string");
|
|
134
|
-
expect(name.startsWith("
|
|
176
|
+
expect(name.startsWith("ds:")).toBe(true);
|
|
135
177
|
}
|
|
136
178
|
});
|
|
137
179
|
|
|
138
180
|
it("is fast (well under the 50ms storeless budget)", () => {
|
|
139
181
|
const read = createIndexEntityReader(freshCwd());
|
|
140
182
|
const start = performance.now();
|
|
141
|
-
read("
|
|
183
|
+
read("ds:Component", "");
|
|
142
184
|
expect(performance.now() - start).toBeLessThan(50);
|
|
143
185
|
});
|
|
144
186
|
});
|
|
@@ -159,7 +201,7 @@ describe("__complete entity tier wiring", () => {
|
|
|
159
201
|
required: true,
|
|
160
202
|
complete: {
|
|
161
203
|
kind: "names",
|
|
162
|
-
source: { from: "index", type: "
|
|
204
|
+
source: { from: "index", type: "ds:Component" },
|
|
163
205
|
},
|
|
164
206
|
},
|
|
165
207
|
],
|
|
@@ -185,14 +227,116 @@ describe("__complete entity tier wiring", () => {
|
|
|
185
227
|
// index-backed reader over cwd, adapted to the resolver's EntityNameReader.
|
|
186
228
|
await expect(
|
|
187
229
|
runComplete(
|
|
188
|
-
["block", "lookup", "
|
|
230
|
+
["block", "lookup", "ds:global.component.but"],
|
|
189
231
|
[lookupModule],
|
|
190
232
|
indexCompletionEnv(freshCwd()),
|
|
191
233
|
),
|
|
192
|
-
).resolves.
|
|
234
|
+
).resolves.toContain("ds:global.component.button");
|
|
193
235
|
// Without the env, the entity tier yields nothing (grammar-only).
|
|
194
236
|
await expect(
|
|
195
|
-
runComplete(
|
|
237
|
+
runComplete(
|
|
238
|
+
["block", "lookup", "ds:global.component.but"],
|
|
239
|
+
[lookupModule],
|
|
240
|
+
),
|
|
196
241
|
).resolves.toEqual([]);
|
|
197
242
|
});
|
|
198
243
|
});
|
|
244
|
+
|
|
245
|
+
describe("readPackIndex answers the boot decision, never around it", () => {
|
|
246
|
+
afterEach(() => {
|
|
247
|
+
vi.unstubAllEnvs();
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
// `info`, `doctor`, the MCP resource browser and native `prompts/list` all
|
|
251
|
+
// read through this. It takes the decision rather than re-deriving one, so it
|
|
252
|
+
// covers all three arms — including the one a re-derivation gets wrong.
|
|
253
|
+
it("reads the pack the decision names", () => {
|
|
254
|
+
projectWithIndex(CRAFTED_INDEX); // plants the pack under a stubbed cache
|
|
255
|
+
const index = readPackIndex({
|
|
256
|
+
kind: "pack",
|
|
257
|
+
dir: packDir(CRAFTED_HASH),
|
|
258
|
+
contentHash: CRAFTED_HASH,
|
|
259
|
+
});
|
|
260
|
+
expect(index?.contentHash).toBe(CRAFTED_HASH);
|
|
261
|
+
expect(index?.entities.map((entity) => entity.name)).toContain("ex:Button");
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
it("reads the embedded snapshot on the embedded arm", () => {
|
|
265
|
+
const index = readPackIndex({ kind: "embedded" });
|
|
266
|
+
expect(index?.contentHash).toBe(embeddedManifest().contentHash);
|
|
267
|
+
});
|
|
268
|
+
|
|
269
|
+
it("reads NOTHING when the store is unavailable", () => {
|
|
270
|
+
// The row that matters: a project that declared its own packs and never
|
|
271
|
+
// built them must not be listed the distribution's graph while every read
|
|
272
|
+
// of it fails STORE_UNAVAILABLE.
|
|
273
|
+
expect(readPackIndex({ kind: "unavailable", reason: "not built" })).toBe(
|
|
274
|
+
undefined,
|
|
275
|
+
);
|
|
276
|
+
});
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
describe("the storeless fast path implements the pointer half", () => {
|
|
280
|
+
afterEach(() => {
|
|
281
|
+
vi.unstubAllEnvs();
|
|
282
|
+
});
|
|
283
|
+
|
|
284
|
+
// `__complete` cannot see `origins.packs` (the config evaluator is banned on
|
|
285
|
+
// this graph), so it cannot distinguish a fresh install from a configured-but-
|
|
286
|
+
// unbuilt project. It CAN see the pointer, and must not prefer the snapshot
|
|
287
|
+
// over a pointer whose pack the cache lost — that is the decision table's
|
|
288
|
+
// second row, where the two readers used to disagree.
|
|
289
|
+
it("offers no candidates when the pointed-at pack is gone", async () => {
|
|
290
|
+
const cwd = mkdtempSync(join(tmpdir(), "pragma-idx-cwd-"));
|
|
291
|
+
const cache = mkdtempSync(join(tmpdir(), "pragma-idx-cache-"));
|
|
292
|
+
vi.stubEnv("XDG_CACHE_HOME", cache);
|
|
293
|
+
const pointer = activePackPath(cwd);
|
|
294
|
+
mkdirSync(dirname(pointer), { recursive: true });
|
|
295
|
+
writeFileSync(pointer, CRAFTED_HASH); // …but no pack directory for it.
|
|
296
|
+
|
|
297
|
+
expect(createIndexEntityReader(cwd)("ds:Component", "")).toEqual([]);
|
|
298
|
+
expect(
|
|
299
|
+
await indexCompletionEnv(cwd).names({ from: "index", type: "" }),
|
|
300
|
+
).toEqual([]);
|
|
301
|
+
});
|
|
302
|
+
|
|
303
|
+
it("still offers the snapshot's names in a configured-but-unbuilt project (the documented price)", async () => {
|
|
304
|
+
// The bounded exception `entitySource.ts` documents, pinned as it IS and
|
|
305
|
+
// not as it should be. The fast path is deliberately denied the config
|
|
306
|
+
// layer, so a `pragma.config.ts` declaring packs is invisible to it: with
|
|
307
|
+
// no pointer it cannot tell this project from a fresh install, and it
|
|
308
|
+
// answers from the embedded snapshot.
|
|
309
|
+
//
|
|
310
|
+
// Both halves are asserted against the SAME cwd, because the ASYMMETRY is
|
|
311
|
+
// the whole claim — asserting only that the snapshot answers would restate
|
|
312
|
+
// the fresh-install case the PROTECTED contract describe already covers,
|
|
313
|
+
// and would pass with the config file deleted. The read half refusing is
|
|
314
|
+
// what makes this directory a configured-but-unbuilt project rather than a
|
|
315
|
+
// fresh install. (`doctor` says so too, in the same words: verified against
|
|
316
|
+
// a cold install, where `block list` raises STORE_UNAVAILABLE while
|
|
317
|
+
// this same completion still answers.)
|
|
318
|
+
//
|
|
319
|
+
// If a later change gives the fast path a config-free way to see
|
|
320
|
+
// `origins.packs`, THIS is the test that must move, deliberately.
|
|
321
|
+
const cwd = mkdtempSync(join(tmpdir(), "pragma-unbuilt-cwd-"));
|
|
322
|
+
vi.stubEnv(
|
|
323
|
+
"XDG_CACHE_HOME",
|
|
324
|
+
mkdtempSync(join(tmpdir(), "pragma-unbuilt-")),
|
|
325
|
+
);
|
|
326
|
+
writeFileSync(
|
|
327
|
+
join(cwd, "pragma.config.ts"),
|
|
328
|
+
'export default { packs: [{ name: "unbuilt", source: "file:///pragma-never-built" }] };\n',
|
|
329
|
+
);
|
|
330
|
+
|
|
331
|
+
const decision = resolveSources(await readConfig(cwd), cwd);
|
|
332
|
+
expect(decision).toEqual({
|
|
333
|
+
kind: "unavailable",
|
|
334
|
+
reason: "packs are configured but the store has not been built",
|
|
335
|
+
});
|
|
336
|
+
expect(readPackIndex(decision)).toBeUndefined();
|
|
337
|
+
|
|
338
|
+
expect(createIndexEntityReader(cwd)("ds:Component", "")).toContain(
|
|
339
|
+
"ds:global.component.button",
|
|
340
|
+
);
|
|
341
|
+
});
|
|
342
|
+
});
|