@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
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { dataNq } from "./runtime/graphpack/embedded/pack.generated.js";
|
|
3
|
+
import { embeddedManifest } from "./runtime/graphpack/embedded.js";
|
|
4
|
+
import type { DeclaredVocabulary } from "./vocabulary.js";
|
|
5
|
+
import { parseVocabulary, VOCABULARY } from "./vocabulary.js";
|
|
6
|
+
|
|
7
|
+
/** A valid declaration, cloned per case so one field can be made hostile. */
|
|
8
|
+
const createValidDeclaration = (): DeclaredVocabulary => ({
|
|
9
|
+
altName: "ex:name",
|
|
10
|
+
prompt: {
|
|
11
|
+
type: "ex:Prompt",
|
|
12
|
+
body: "ex:body",
|
|
13
|
+
argument: "ex:argument",
|
|
14
|
+
argName: "ex:argName",
|
|
15
|
+
argRequired: "ex:argRequired",
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
/** The bindings `createValidDeclaration`'s terms resolve against. */
|
|
20
|
+
const BOUND = { ex: "https://ex.test/" };
|
|
21
|
+
|
|
22
|
+
describe("parseVocabulary", () => {
|
|
23
|
+
it("returns the same declaration when every term is readable", () => {
|
|
24
|
+
const declaration = createValidDeclaration();
|
|
25
|
+
expect(parseVocabulary(declaration, BOUND, "x.conf.ts")).toBe(declaration);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it("rejects an absolute IRI, naming the field and the file", () => {
|
|
29
|
+
// The defect this validator exists for. An absolute IRI written bare is a
|
|
30
|
+
// SPARQL parse error; caught at the read site it becomes "this graph has no
|
|
31
|
+
// prompts", indistinguishable from an empty graph. Here it is a startup
|
|
32
|
+
// CONFIG_ERROR that says which term is wrong and where.
|
|
33
|
+
let caught: unknown;
|
|
34
|
+
try {
|
|
35
|
+
parseVocabulary(
|
|
36
|
+
{ ...createValidDeclaration(), altName: "https://ex.test/name" },
|
|
37
|
+
BOUND,
|
|
38
|
+
"x.conf.ts",
|
|
39
|
+
);
|
|
40
|
+
} catch (error) {
|
|
41
|
+
caught = error;
|
|
42
|
+
}
|
|
43
|
+
expect(caught).toMatchObject({ code: "CONFIG_ERROR" });
|
|
44
|
+
const { message } = caught as { message: string };
|
|
45
|
+
expect(message).toContain("altName");
|
|
46
|
+
expect(message).toContain("x.conf.ts");
|
|
47
|
+
expect(message).toContain("https://ex.test/name");
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it("rejects a term whose prefix nothing binds, naming that prefix", () => {
|
|
51
|
+
// The likelier malformation, and the one the shape check alone lets past.
|
|
52
|
+
// A one-character typo passes `prefix:local` and then makes every read of
|
|
53
|
+
// that term fail — the index silently loses `altNames`, and the prompt
|
|
54
|
+
// SELECT fails in a way a caller cannot tell from an empty graph. So the
|
|
55
|
+
// binding is checked here, where the file that declares both is one place.
|
|
56
|
+
let caught: unknown;
|
|
57
|
+
try {
|
|
58
|
+
parseVocabulary(
|
|
59
|
+
{ ...createValidDeclaration(), altName: "exx:name" },
|
|
60
|
+
BOUND,
|
|
61
|
+
"x.conf.ts",
|
|
62
|
+
);
|
|
63
|
+
} catch (error) {
|
|
64
|
+
caught = error;
|
|
65
|
+
}
|
|
66
|
+
expect(caught).toMatchObject({ code: "CONFIG_ERROR" });
|
|
67
|
+
const { message, recovery } = caught as {
|
|
68
|
+
message: string;
|
|
69
|
+
recovery?: { message: string };
|
|
70
|
+
};
|
|
71
|
+
expect(message).toContain("altName");
|
|
72
|
+
expect(message).toContain("exx:");
|
|
73
|
+
expect(recovery?.message).toContain("exx");
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it("rejects a nested prompt term whose prefix nothing binds", () => {
|
|
77
|
+
const declaration = createValidDeclaration();
|
|
78
|
+
expect(() =>
|
|
79
|
+
parseVocabulary(
|
|
80
|
+
{
|
|
81
|
+
...declaration,
|
|
82
|
+
prompt: { ...declaration.prompt, type: "other:Prompt" },
|
|
83
|
+
},
|
|
84
|
+
BOUND,
|
|
85
|
+
"x.conf.ts",
|
|
86
|
+
),
|
|
87
|
+
).toThrow(/prompt\.type/);
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
it("rejects a term naming an inherited Object property as its prefix", () => {
|
|
91
|
+
// `prefixes` is a plain record, so an unbound prefix must be UNBOUND, not
|
|
92
|
+
// whatever the prototype chain answers. Without an own-key check
|
|
93
|
+
// `constructor:name` passes and expands to a stringified function.
|
|
94
|
+
expect(() =>
|
|
95
|
+
parseVocabulary(
|
|
96
|
+
{ ...createValidDeclaration(), altName: "constructor:name" },
|
|
97
|
+
BOUND,
|
|
98
|
+
"x.conf.ts",
|
|
99
|
+
),
|
|
100
|
+
).toThrow(/constructor:/);
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
it("rejects a nested prompt term, naming its path", () => {
|
|
104
|
+
const declaration = createValidDeclaration();
|
|
105
|
+
expect(() =>
|
|
106
|
+
parseVocabulary(
|
|
107
|
+
{
|
|
108
|
+
...declaration,
|
|
109
|
+
prompt: { ...declaration.prompt, body: "<ex:body>" },
|
|
110
|
+
},
|
|
111
|
+
BOUND,
|
|
112
|
+
"x.conf.ts",
|
|
113
|
+
),
|
|
114
|
+
).toThrow(/prompt\.body/);
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
it("rejects an empty, unprefixed, whitespace-bearing or malformed term", () => {
|
|
118
|
+
for (const term of ["", "name", "ex:", ":name", "ex: name", "ex:na me"]) {
|
|
119
|
+
expect(() =>
|
|
120
|
+
parseVocabulary(
|
|
121
|
+
{ ...createValidDeclaration(), altName: term },
|
|
122
|
+
BOUND,
|
|
123
|
+
"x.conf.ts",
|
|
124
|
+
),
|
|
125
|
+
).toThrow(/altName/);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
describe("the shipped declaration", () => {
|
|
131
|
+
it("declares the name property entities are addressed by", () => {
|
|
132
|
+
expect(VOCABULARY.altName).toBe("ds:name");
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
it("names a property the shipped pack actually carries", () => {
|
|
136
|
+
// The declaration and the committed pack are produced independently, and
|
|
137
|
+
// NOTHING makes the pack follow the declaration: `contentHash` covers pack
|
|
138
|
+
// sources only, and `buildPack` reuses any complete cache directory, so
|
|
139
|
+
// editing `altName` here re-mints no index and `sources update` cannot
|
|
140
|
+
// repair the mismatch. Left silent, the CLI would offer the old property's
|
|
141
|
+
// tokens from the index and match the new one in every lookup.
|
|
142
|
+
//
|
|
143
|
+
// So expand the declared term through the pack's OWN manifest and look for
|
|
144
|
+
// it as a predicate in the pack's data. The prompt terms get no such check
|
|
145
|
+
// — they are a read contract, and this graph carries no prompt entities.
|
|
146
|
+
const [prefix, local] = VOCABULARY.altName.split(":");
|
|
147
|
+
const namespace = embeddedManifest().prefixes[prefix ?? ""];
|
|
148
|
+
expect(namespace, `pack binding for \`${prefix}:\``).toBeDefined();
|
|
149
|
+
expect(
|
|
150
|
+
dataNq.includes(` <${namespace}${local}> `),
|
|
151
|
+
`\`${VOCABULARY.altName}\` used as a predicate in the shipped pack`,
|
|
152
|
+
).toBe(true);
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
it("declares the prompt entity shape, value for value", () => {
|
|
156
|
+
expect(VOCABULARY.prompt).toEqual({
|
|
157
|
+
type: "ds:Prompt",
|
|
158
|
+
body: "ds:promptBody",
|
|
159
|
+
argument: "ds:promptArgument",
|
|
160
|
+
argName: "ds:argName",
|
|
161
|
+
argRequired: "ds:argRequired",
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
});
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The domain vocabulary this distribution declares, validated once at load.
|
|
3
|
+
*
|
|
4
|
+
* The kernel reads a graph whose vocabulary it must not name. Two of its reads
|
|
5
|
+
* need domain terms: the pack index projects an alternative-name property into
|
|
6
|
+
* `altNames` (what a family is addressed by, hence what completes and what a
|
|
7
|
+
* lookup resolves), and the MCP prompt surface materializes prompt entities
|
|
8
|
+
* with a generated SELECT. Both take their terms from here, and the bundled
|
|
9
|
+
* capability packs that query the same terms read the same declaration — so
|
|
10
|
+
* complete and resolve cannot drift apart.
|
|
11
|
+
*
|
|
12
|
+
* A DISTRIBUTION DECLARATION, not a config layer field, and deliberately so.
|
|
13
|
+
* Both readers sit where the config layer is unreachable: the storeless
|
|
14
|
+
* `__complete` fast path builds a completion ref at module load, and the index
|
|
15
|
+
* is built inside the pack builder. Made layerable, a user setting it in their
|
|
16
|
+
* project config would change nothing anywhere — silence, which is the exact
|
|
17
|
+
* failure a dead config field is. A fork ships its own binary: it edits the
|
|
18
|
+
* declaration and rebuilds.
|
|
19
|
+
*
|
|
20
|
+
* Terms must be PREFIXED NAMES whose prefix the distribution BINDS, and
|
|
21
|
+
* {@link parseVocabulary} rejects anything else by name. They are interpolated
|
|
22
|
+
* into SPARQL, where an absolute IRI written bare is a parse error and an
|
|
23
|
+
* unbound prefix is either a parse error or a silently empty result — and a
|
|
24
|
+
* failed read is indistinguishable from an empty graph, which is how a
|
|
25
|
+
* malformed declaration would otherwise surface as "this distribution has no
|
|
26
|
+
* prompts". Both halves matter: rejecting the shape alone still lets a
|
|
27
|
+
* one-character typo (`ds:name` → `dss:name`) pass startup and then drop every
|
|
28
|
+
* `altNames` from the index while reporting a built store as unbuilt. Failing
|
|
29
|
+
* at module load is correct for a compiled-in build defect: the distribution
|
|
30
|
+
* config's own layer validation (`config/defaults.ts`) already throws the same
|
|
31
|
+
* way.
|
|
32
|
+
*
|
|
33
|
+
* Standard vocabulary (`rdfs:label`, `rdfs:comment`) is deliberately absent —
|
|
34
|
+
* it is the same in every graph, and the index already treats it as universal.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
import conf, { vocabulary } from "../../pragma.conf.js";
|
|
38
|
+
import { PragmaError } from "./error/PragmaError.js";
|
|
39
|
+
|
|
40
|
+
/** The domain terms the kernel reads a distribution's graph with. */
|
|
41
|
+
export interface DeclaredVocabulary {
|
|
42
|
+
/**
|
|
43
|
+
* The property an entity family is addressed by, beside `rdfs:label` — the
|
|
44
|
+
* tokens the index offers as candidates and a bespoke lookup matches on.
|
|
45
|
+
*/
|
|
46
|
+
readonly altName: string;
|
|
47
|
+
/** The prompt entity shape the MCP prompt surface reads. */
|
|
48
|
+
readonly prompt: {
|
|
49
|
+
/** The class every prompt entity carries. */
|
|
50
|
+
readonly type: string;
|
|
51
|
+
/** The template body, with `{{arg}}` placeholders. */
|
|
52
|
+
readonly body: string;
|
|
53
|
+
/** Links a prompt to one of its declared arguments. */
|
|
54
|
+
readonly argument: string;
|
|
55
|
+
/** An argument's name. */
|
|
56
|
+
readonly argName: string;
|
|
57
|
+
/** Whether an argument is required. */
|
|
58
|
+
readonly argRequired: string;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** A prefixed name — `prefix:local`, the only form a generated query can read. */
|
|
63
|
+
const PREFIXED_NAME = /^[A-Za-z][A-Za-z0-9_-]*:[A-Za-z_][A-Za-z0-9_.-]*$/;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* The distribution config file, quoted in the diagnostics.
|
|
67
|
+
*
|
|
68
|
+
* The literal, not `${BIN_NAME}.conf.ts`: the import above names this file, and
|
|
69
|
+
* so do four other modules, so a fork CANNOT rename it — deriving the name from
|
|
70
|
+
* the fork's would send its maintainer to a path that is not on disk.
|
|
71
|
+
* `config/defaults.ts` names the same file for the same reason.
|
|
72
|
+
*/
|
|
73
|
+
const CONF_FILE = "pragma.conf.ts";
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Hold one declared term to a form a generated query can actually read: the
|
|
77
|
+
* `prefix:local` shape, AND a prefix the distribution binds.
|
|
78
|
+
*
|
|
79
|
+
* @param field - The term's path in the declaration, for the message.
|
|
80
|
+
* @param term - The declared value.
|
|
81
|
+
* @param prefixes - The distribution's declared namespace bindings.
|
|
82
|
+
* @param source - The file the declaration was read from.
|
|
83
|
+
* @throws PragmaError CONFIG_ERROR when the term is not `prefix:local`, or
|
|
84
|
+
* names a prefix `prefixes` does not bind.
|
|
85
|
+
*/
|
|
86
|
+
function assertReadableTerm(
|
|
87
|
+
field: string,
|
|
88
|
+
term: string,
|
|
89
|
+
prefixes: Readonly<Record<string, string>>,
|
|
90
|
+
source: string,
|
|
91
|
+
): void {
|
|
92
|
+
const reject = (problem: string, fix: string): never => {
|
|
93
|
+
throw PragmaError.configError(
|
|
94
|
+
`Invalid vocabulary in ${source}: \`${field}\` ${problem}, not ${JSON.stringify(term)}.`,
|
|
95
|
+
{ recovery: { message: `In ${source}, ${fix}` } },
|
|
96
|
+
);
|
|
97
|
+
};
|
|
98
|
+
if (!PREFIXED_NAME.test(term)) {
|
|
99
|
+
reject(
|
|
100
|
+
"must be a prefixed name like `ex:thing`",
|
|
101
|
+
`write \`${field}\` as \`<prefix>:<local>\`. These terms are interpolated into queries, which cannot read an absolute IRI here.`,
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
const prefix = term.slice(0, term.indexOf(":"));
|
|
105
|
+
if (!Object.hasOwn(prefixes, prefix)) {
|
|
106
|
+
reject(
|
|
107
|
+
`must use a prefix \`prefixes\` binds, and nothing binds \`${prefix}:\``,
|
|
108
|
+
`either bind \`${prefix}\` under \`prefixes\` or write \`${field}\` with a prefix that is bound. An unbound prefix makes the generated query fail, which a read cannot tell apart from an empty graph.`,
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Validate a declared vocabulary.
|
|
115
|
+
*
|
|
116
|
+
* @param raw - A distribution's `vocabulary` export.
|
|
117
|
+
* @param prefixes - That distribution's `prefixes`, which must bind every
|
|
118
|
+
* prefix the terms use.
|
|
119
|
+
* @param source - The file it was declared in, quoted in errors.
|
|
120
|
+
* @returns The same declaration, once every term is readable.
|
|
121
|
+
* @throws PragmaError CONFIG_ERROR naming the offending field and its value.
|
|
122
|
+
*/
|
|
123
|
+
export function parseVocabulary(
|
|
124
|
+
raw: DeclaredVocabulary,
|
|
125
|
+
prefixes: Readonly<Record<string, string>>,
|
|
126
|
+
source: string,
|
|
127
|
+
): DeclaredVocabulary {
|
|
128
|
+
assertReadableTerm("altName", raw.altName, prefixes, source);
|
|
129
|
+
for (const [term, value] of Object.entries(raw.prompt)) {
|
|
130
|
+
assertReadableTerm(`prompt.${term}`, value, prefixes, source);
|
|
131
|
+
}
|
|
132
|
+
return raw;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* This distribution's validated vocabulary.
|
|
137
|
+
*
|
|
138
|
+
* The declaration is type-checked at this call — a fork that drops or mistypes
|
|
139
|
+
* a term fails `tsc`, and one that writes an unreadable term fails here at
|
|
140
|
+
* startup rather than at the read that would have swallowed it.
|
|
141
|
+
*/
|
|
142
|
+
export const VOCABULARY = parseVocabulary(
|
|
143
|
+
vocabulary,
|
|
144
|
+
conf.prefixes ?? {},
|
|
145
|
+
CONF_FILE,
|
|
146
|
+
);
|
|
@@ -78,13 +78,19 @@ export const PARITY_GAPS: readonly ParityGapEntry[] = [
|
|
|
78
78
|
id: "generic-renderers-not-bespoke-templates",
|
|
79
79
|
area: "render",
|
|
80
80
|
description:
|
|
81
|
-
"Every noun's plain/llm output
|
|
81
|
+
"Every noun's plain/llm output renders through the SAME generic list/lookup renderer (`kernel/render/renderers.ts`), driven by declarative column/field/section metadata. There are no per-noun hand-authored render templates left to keep in parity (the last hand-written verb, `block list`, became declared content in L-OPEN-9).",
|
|
82
82
|
},
|
|
83
83
|
{
|
|
84
84
|
id: "block-lookup-not-tier-scoped",
|
|
85
85
|
area: "block",
|
|
86
86
|
description:
|
|
87
|
-
"`block lookup` resolves by `ds:name` GLOBALLY, with no tier or channel filtering
|
|
87
|
+
"`block lookup` resolves by `ds:name` GLOBALLY, with no tier or channel filtering. A same-named block declared at two tiers cannot be disambiguated by plain name (the old shell's tier-scoped lookup disambiguation has no v2 equivalent) — address it by prefixed IRI instead. Since L-OPEN-9 NOTHING is tier/channel-aware: the hand-written, tier-chain-filtered `block list` was removed with its `tierChain.ts`.",
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
id: "block-list-unfiltered",
|
|
91
|
+
area: "block",
|
|
92
|
+
description:
|
|
93
|
+
"L-OPEN-9 (owner-signed): `block list` is the block story's compiled, UNFILTERED list — it shows every block, including experimental/alpha ones, for everyone, until filtering returns in declared form. The old tier-chain inheritance, channel visibility, and `--all-tiers` escape were hand-written filtering the pack grammar has no term for, and the ruling removed them rather than growing the grammar to keep them. `config.tier` consequently scopes nothing (reported by `config show`/`info` only); `config.channel` keeps only its npm dist-tag role for `upgrade`/`info`.",
|
|
88
94
|
},
|
|
89
95
|
{
|
|
90
96
|
id: "graph-query-deferred",
|
|
@@ -40,7 +40,7 @@ the emitted set legitimately grows PR-by-PR.
|
|
|
40
40
|
| `agentSession.mcp.test.ts` | A multi-step agent MCP session (list → pick → lookup) + the SPARQL escape hatch. |
|
|
41
41
|
| `mcpSurface.test.ts` | Every MCP tool the live catalog exposes is callable and well-formed — the "surface ⊆ covenant, exercised" proof. |
|
|
42
42
|
| `disclosure.test.ts` | The cross-noun disclosure sweep (mechanism itself is PR3's/kernel's protected unit test — this only sweeps the noun SET). |
|
|
43
|
-
| `journeys.cli.test.ts` | The `block list` tier
|
|
43
|
+
| `journeys.cli.test.ts` | The `block list` journey — since L-OPEN-9 it pins that the declared list is UNFILTERED: four tier/channel configs, one answer. |
|
|
44
44
|
| `completion.test.ts` | The THIN main-line `__complete` candidate contract (§6 — see "Completion" below). |
|
|
45
45
|
|
|
46
46
|
Plus `testing/eval/` (the eval harness + seed cases) and `testing/PARITY_GAPS.ts`
|
|
@@ -71,7 +71,7 @@ import { CANONICAL_TTL, CANONICAL_CONFIG } from "../fixtures/graph/canonical.js"
|
|
|
71
71
|
|
|
72
72
|
const fixture = await bootFixtureRuntime({ ttl: CANONICAL_TTL, config: CANONICAL_CONFIG });
|
|
73
73
|
try {
|
|
74
|
-
// fixture.cwd
|
|
74
|
+
// fixture.cwd is pointed at a REAL built pack — bootRuntime(flags, fixture.cwd),
|
|
75
75
|
// executeVerb(...), projectMcp(modules, fixture.cwd), and (if you must)
|
|
76
76
|
// runCli(args, { cwd: fixture.cwd }) all resolve the SAME cached pack.
|
|
77
77
|
} finally {
|
|
@@ -80,7 +80,7 @@ try {
|
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
Use `packRuntime.ts#buildFixtureRuntime` (PR3's helper) instead when you only
|
|
83
|
-
need ONE surface (a direct `verb.run()` call) — it's cheaper (no
|
|
83
|
+
need ONE surface (a direct `verb.run()` call) — it's cheaper (no real build).
|
|
84
84
|
Reach for `bootFixtureRuntime` specifically when you need CLI and MCP (or a
|
|
85
85
|
spawn) to agree on the same store.
|
|
86
86
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* The full completion engine (`kernel/completion`: parse → resolve → rank, the
|
|
5
5
|
* spec-derived model, the entity seam) owns the unit-level guarantees; this
|
|
6
6
|
* pins the behaviour end-to-end against the LIVE capabilities and — for the
|
|
7
|
-
* entity tier — against a REAL built pack index on disk (the
|
|
7
|
+
* entity tier — against a REAL built pack index on disk (the built-pack branch
|
|
8
8
|
* of the storeless reader, which the engine's own tests exercise only via the
|
|
9
9
|
* embedded fallback). Parameterized over the live read surface so noun/verb
|
|
10
10
|
* renames never churn it.
|
|
@@ -89,21 +89,34 @@ describe("flags are kebab-cased at emission (the live, testable guarantee)", ()
|
|
|
89
89
|
});
|
|
90
90
|
});
|
|
91
91
|
|
|
92
|
-
describe("entity params resolve from
|
|
93
|
-
it("a lookup's entity positional
|
|
92
|
+
describe("entity params resolve from the project's built pack, not the embedded snapshot (B10)", () => {
|
|
93
|
+
it("a lookup's entity positional offers the built pack's subjects and none of the snapshot's", async () => {
|
|
94
94
|
const fixture = await bootFixtureRuntime({
|
|
95
95
|
ttl: CANONICAL_TTL,
|
|
96
96
|
config: ALL_VISIBLE_CONFIG,
|
|
97
97
|
});
|
|
98
98
|
try {
|
|
99
|
-
// The
|
|
99
|
+
// The built-pack branch of the storeless reader: a real index.json on
|
|
100
100
|
// disk under the fixture cwd, read without booting the store.
|
|
101
101
|
const all = await runComplete(
|
|
102
102
|
["block", "lookup", ""],
|
|
103
103
|
capabilities,
|
|
104
104
|
indexCompletionEnv(fixture.cwd),
|
|
105
105
|
);
|
|
106
|
-
|
|
106
|
+
// The four `ds:Component` subjects the canonical fixture declares
|
|
107
|
+
// (`blockGraph.ts`'s Button/Modal plus `canonical.ts`'s LXD Panel and
|
|
108
|
+
// Beta Widget) — the fixture's own data, not a recomputation. Stating
|
|
109
|
+
// the SET is what makes the distribution's own snapshot names provably
|
|
110
|
+
// absent: a pointer read that regressed to the embedded fallback would
|
|
111
|
+
// complete another graph's names while every read answered correctly,
|
|
112
|
+
// and the old `narrowed.length < all.length` heuristic only noticed by
|
|
113
|
+
// the accident that no snapshot name contains `ds:b`.
|
|
114
|
+
expect([...all].sort()).toEqual([
|
|
115
|
+
"ds:betaWidget",
|
|
116
|
+
"ds:button",
|
|
117
|
+
"ds:lxdPanel",
|
|
118
|
+
"ds:modal",
|
|
119
|
+
]);
|
|
107
120
|
|
|
108
121
|
const narrowed = await runComplete(
|
|
109
122
|
["block", "lookup", "ds:b"],
|
|
@@ -111,7 +124,7 @@ describe("entity params resolve from a real built pack index (B10)", () => {
|
|
|
111
124
|
indexCompletionEnv(fixture.cwd),
|
|
112
125
|
);
|
|
113
126
|
// Every ranked candidate carries the partial (case-insensitive), and the
|
|
114
|
-
// filter is strictly narrowing — the
|
|
127
|
+
// filter is strictly narrowing — the ranker really ran over this index.
|
|
115
128
|
expect(
|
|
116
129
|
narrowed.every((name) => name.toLowerCase().includes("ds:b")),
|
|
117
130
|
).toBe(true);
|
|
@@ -45,6 +45,8 @@ function readDoc(relPath: string): string {
|
|
|
45
45
|
const HAND_WRITTEN_DOCS = [
|
|
46
46
|
"../../../README.md",
|
|
47
47
|
"../../../docs/getting-started.md",
|
|
48
|
+
"../../../docs/design-system.md",
|
|
49
|
+
"../../../docs/setup.md",
|
|
48
50
|
"../../../docs/mcp-integration.md",
|
|
49
51
|
"../../../docs/config-model.md",
|
|
50
52
|
"../../../docs/architecture.md",
|
|
@@ -161,7 +163,19 @@ const READ_CASES: readonly ReadCase[] = [
|
|
|
161
163
|
params: { name: ["Button"] },
|
|
162
164
|
},
|
|
163
165
|
{ command: "pragma standard list", key: "standard list", params: {} },
|
|
166
|
+
{
|
|
167
|
+
command: "pragma standard list --category react",
|
|
168
|
+
key: "standard list",
|
|
169
|
+
params: { category: ["react"] },
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
command: "pragma standard categories",
|
|
173
|
+
key: "standard categories",
|
|
174
|
+
params: {},
|
|
175
|
+
},
|
|
176
|
+
{ command: "pragma modifier list", key: "modifier list", params: {} },
|
|
164
177
|
{ command: "pragma token list", key: "token list", params: {} },
|
|
178
|
+
{ command: "pragma prompt list", key: "prompt list", params: {} },
|
|
165
179
|
{ command: "pragma tier list", key: "tier list", params: {} },
|
|
166
180
|
{ command: "pragma ontology list", key: "ontology list", params: {} },
|
|
167
181
|
{ command: "pragma config show", key: "config show", params: {} },
|
|
@@ -32,9 +32,10 @@ import { listVerbs, lookupVerbs } from "./liveReadSurface.js";
|
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
34
|
* List verbs with a STRING or ENUM (narrowable, non-boolean) flag — e.g.
|
|
35
|
-
* `standard_list --category`.
|
|
36
|
-
*
|
|
37
|
-
*
|
|
35
|
+
* `standard_list --category`. Boolean flags are excluded: they reject a string
|
|
36
|
+
* value at the schema layer rather than narrowing to an empty result. (`block
|
|
37
|
+
* list --all-tiers` used to be the example; it retired with the hand-written
|
|
38
|
+
* filtering in L-OPEN-9.)
|
|
38
39
|
*/
|
|
39
40
|
const filteredListVerbs = listVerbs
|
|
40
41
|
.map((v) => {
|
|
@@ -109,9 +110,9 @@ describe("list — a narrowing filter to zero rows is a plain empty list (B3, ad
|
|
|
109
110
|
});
|
|
110
111
|
});
|
|
111
112
|
|
|
112
|
-
describe("
|
|
113
|
+
describe("ontology_lookup — an unknown prefix is INVALID_INPUT (B3)", () => {
|
|
113
114
|
it("fails with the enumerated valid prefixes", async () => {
|
|
114
|
-
const result = await mcp.callTool("
|
|
115
|
+
const result = await mcp.callTool("ontology_lookup", { prefix: "nope" });
|
|
115
116
|
expect(result.ok).toBe(false);
|
|
116
117
|
const error = result.error as { code: string; validOptions: string[] };
|
|
117
118
|
expect(error.code).toBe("INVALID_INPUT");
|
|
@@ -61,7 +61,7 @@ const MATRIX: readonly {
|
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
label: "recovery (mcp-only, no cli)",
|
|
64
|
-
error: PragmaError.storeUnavailable("
|
|
64
|
+
error: PragmaError.storeUnavailable("the store has not been built", {
|
|
65
65
|
recovery: { message: "Please report this issue." },
|
|
66
66
|
}),
|
|
67
67
|
},
|
|
@@ -37,14 +37,15 @@ describe("exit-code covenant, spawn-observed (A4, e2e)", () => {
|
|
|
37
37
|
expect(result.stderr).toContain('Invalid format "yaml"');
|
|
38
38
|
});
|
|
39
39
|
|
|
40
|
-
it("3 — store unavailable (configured
|
|
40
|
+
it("3 — store unavailable (configured packs, never built)", () => {
|
|
41
41
|
const cwd = mkdtempSync(join(tmpdir(), "pragma-exit3-"));
|
|
42
|
-
// A pragma.config.ts with custom `
|
|
43
|
-
// "project" — with
|
|
44
|
-
// (no network probing) rather than
|
|
42
|
+
// A pragma.config.ts with custom `packs` flips `origins.packs` to
|
|
43
|
+
// "project" — with nothing built for this project, resolveSources refuses
|
|
44
|
+
// to boot (no network probing) rather than serve the embedded pack, which
|
|
45
|
+
// is a DIFFERENT graph from the one this project asked for.
|
|
45
46
|
writeFileSync(
|
|
46
47
|
join(cwd, "pragma.config.ts"),
|
|
47
|
-
'export default {
|
|
48
|
+
'export default { packs: [{ name: "never-built", source: "file:///nonexistent" }] };\n',
|
|
48
49
|
);
|
|
49
50
|
const result = runCli(["block", "list"], { cwd });
|
|
50
51
|
expect(result.exitCode).toBe(3);
|
|
@@ -1,40 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* First-run onboarding, observed through the real shipped entry.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* The contract inverted: onboarding no longer WRITES. A read-only command must
|
|
5
|
+
* leave the config home empty, and the un-set-up hint belongs on the read-only
|
|
6
|
+
* front door — where the machine's state is discovered by looking, not by
|
|
7
|
+
* seeding a file and a marker ahead of any consent.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { existsSync
|
|
10
|
+
import { existsSync } from "node:fs";
|
|
11
11
|
import { join } from "node:path";
|
|
12
12
|
import { describe, expect, it } from "vitest";
|
|
13
13
|
import { freshXdgEnv, runCli } from "../helpers/runCli.js";
|
|
14
14
|
|
|
15
|
-
describe("first-run onboarding (
|
|
16
|
-
it("
|
|
15
|
+
describe("first-run onboarding (e2e)", () => {
|
|
16
|
+
it("hints on the front door and seeds nothing", () => {
|
|
17
17
|
const env = freshXdgEnv();
|
|
18
18
|
const configPath = join(env.XDG_CONFIG_HOME, "pragma", "config.json");
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
// A read-only command writes NO config and carries no banner: the greeting
|
|
21
|
+
// used to interleave itself into the output of unrelated runs.
|
|
22
|
+
const read = runCli(["info"], {
|
|
21
23
|
env: { ...env, PRAGMA_NO_AUTO_LLM: "1" },
|
|
22
24
|
});
|
|
23
|
-
expect(
|
|
24
|
-
expect(
|
|
25
|
-
expect(
|
|
26
|
-
expect(
|
|
27
|
-
// Command output stays on stdout, untouched by the greeting.
|
|
28
|
-
expect(first.stdout).not.toContain("Hello!");
|
|
29
|
-
expect(first.stdout).toContain("pragma v");
|
|
25
|
+
expect(read.exitCode).toBe(0);
|
|
26
|
+
expect(read.stdout).toContain("pragma v");
|
|
27
|
+
expect(read.stderr).not.toContain("pre-release");
|
|
28
|
+
expect(existsSync(configPath)).toBe(false);
|
|
30
29
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
expect(
|
|
38
|
-
|
|
30
|
+
// The front door is a read, so it is where the hint belongs — on stderr,
|
|
31
|
+
// leaving the front door's own output uncorrupted on stdout.
|
|
32
|
+
const door = runCli([], { env: { ...env, PRAGMA_NO_AUTO_LLM: "1" } });
|
|
33
|
+
expect(door.exitCode).toBe(0);
|
|
34
|
+
expect(door.stderr).toContain("pre-release");
|
|
35
|
+
expect(door.stderr).toContain("pragma setup");
|
|
36
|
+
expect(door.stdout).not.toContain("pre-release");
|
|
37
|
+
// Still nothing written: the hint is a probe, not a seed.
|
|
38
|
+
expect(existsSync(configPath)).toBe(false);
|
|
39
39
|
});
|
|
40
40
|
});
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Harness-foundation smoke tests (commit 1).
|
|
3
3
|
*
|
|
4
4
|
* Validates the framework pieces PR4 adds — NOT per-noun behavior (that's
|
|
5
|
-
* commits 2/4's job). Proves: (1) `bootFixtureRuntime` boots a real,
|
|
6
|
-
*
|
|
5
|
+
* commits 2/4's job). Proves: (1) `bootFixtureRuntime` boots a real, built-pack
|
|
6
|
+
* store that BOTH the CLI and MCP surfaces resolve identically
|
|
7
7
|
* (via the shared canonical graph, one real lookup); (2) the compiler/runtime
|
|
8
8
|
* is ontology-agnostic — a pack over the foreign `ex:` recipe namespace
|
|
9
9
|
* registers its 2 tools and resolves on both surfaces; (3) `runCli` can spawn
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
import { homedir, tmpdir } from "node:os";
|
|
14
14
|
import { describe, expect, it } from "vitest";
|
|
15
|
-
import {
|
|
15
|
+
import { storyModules } from "../../capabilities/distribution.js";
|
|
16
16
|
import { VERSION } from "../../constants.js";
|
|
17
17
|
import { compilePack } from "../../kernel/packs/compile.js";
|
|
18
18
|
import { verbKey } from "../../kernel/packs/uniqueness.js";
|
|
@@ -31,8 +31,13 @@ import { plain } from "../helpers/golden.js";
|
|
|
31
31
|
import { assertCliMcpParity } from "../helpers/parity.js";
|
|
32
32
|
import { runCli } from "../helpers/runCli.js";
|
|
33
33
|
|
|
34
|
+
const blockModule = storyModules.get("block");
|
|
35
|
+
if (!blockModule) {
|
|
36
|
+
throw new Error('pragma.conf.ts declares no story for "block"');
|
|
37
|
+
}
|
|
38
|
+
|
|
34
39
|
describe("bootFixtureRuntime — the shared canonical graph (commit-1 smoke)", () => {
|
|
35
|
-
it("boots a
|
|
40
|
+
it("boots a built-pack store both CLI and MCP resolve identically", async () => {
|
|
36
41
|
const fixture = await bootFixtureRuntime({
|
|
37
42
|
ttl: CANONICAL_TTL,
|
|
38
43
|
config: CANONICAL_CONFIG,
|
|
@@ -68,7 +73,11 @@ describe("foreign-namespace generic-pack proof (compiler is DS-agnostic)", () =>
|
|
|
68
73
|
try {
|
|
69
74
|
const recipeModule: CapabilityModule = {
|
|
70
75
|
name: "recipe",
|
|
71
|
-
verbs: compilePack(
|
|
76
|
+
verbs: compilePack(
|
|
77
|
+
recipePack,
|
|
78
|
+
{ label: "test:recipe", origin: "package" },
|
|
79
|
+
RECIPE_PREFIXES,
|
|
80
|
+
),
|
|
72
81
|
};
|
|
73
82
|
expect(recipeModule.verbs.map((v) => verbKey(v.path)).sort()).toEqual([
|
|
74
83
|
"recipe list",
|