@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
|
@@ -8,12 +8,14 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
|
11
|
+
import { RECOVERY_CLI_PREFIX } from "../../constants.js";
|
|
11
12
|
import { buildFixtureRuntime } from "../../testing/helpers/packRuntime.js";
|
|
12
13
|
import type { PragmaRuntime } from "../runtime/types.js";
|
|
13
|
-
import { compilePack } from "./compile.js";
|
|
14
|
+
import { compileListable, compilePack, compileStoryModule } from "./compile.js";
|
|
14
15
|
import type { LookupOutput } from "./resolveEntity.js";
|
|
15
16
|
import { parsePackDefinition } from "./schema.js";
|
|
16
17
|
import type { PackDefinition, PackRow } from "./types.js";
|
|
18
|
+
import { distributionSource } from "./types.js";
|
|
17
19
|
import { assertUniqueVerbs, verbKey } from "./uniqueness.js";
|
|
18
20
|
|
|
19
21
|
const PREFIXES = {
|
|
@@ -92,8 +94,33 @@ describe("pack compiler — round-trip + shape (PROTECTED, storeless)", () => {
|
|
|
92
94
|
expect(parsePackDefinition(raw, "test:widget")).toEqual(WIDGET_PACK);
|
|
93
95
|
});
|
|
94
96
|
|
|
97
|
+
it("round-trips a fixed-count sample — the field the no-argument samples declare", () => {
|
|
98
|
+
// `sample.fixedCount` is a documented grammar field (packs/types.ts) that
|
|
99
|
+
// three of the distribution's own stories use and the covenant freezes
|
|
100
|
+
// (`block sample` takes no argument). It was missing from the `.strict()`
|
|
101
|
+
// sample schema, so ANY config- or package-declared story using it died
|
|
102
|
+
// with a fatal CONFIG_ERROR before ever reaching the compiler.
|
|
103
|
+
const lookup = WIDGET_PACK.lookup as NonNullable<PackDefinition["lookup"]>;
|
|
104
|
+
const fixed: PackDefinition = {
|
|
105
|
+
...WIDGET_PACK,
|
|
106
|
+
lookup: { ...lookup, sample: { fixedCount: true } },
|
|
107
|
+
};
|
|
108
|
+
expect(parsePackDefinition(JSON.parse(JSON.stringify(fixed)), "t")).toEqual(
|
|
109
|
+
fixed,
|
|
110
|
+
);
|
|
111
|
+
// …and the compiler honours it: no `[count]` positional on the sample verb.
|
|
112
|
+
const sample = compilePack(fixed, distributionSource("t"), PREFIXES).find(
|
|
113
|
+
(v) => verbKey(v.path) === "widget sample",
|
|
114
|
+
);
|
|
115
|
+
expect(sample?.params).toEqual([]);
|
|
116
|
+
});
|
|
117
|
+
|
|
95
118
|
it("projects list, lookup, and sample verbs with unique keys", () => {
|
|
96
|
-
const verbs = compilePack(
|
|
119
|
+
const verbs = compilePack(
|
|
120
|
+
WIDGET_PACK,
|
|
121
|
+
distributionSource("bundled:widget"),
|
|
122
|
+
PREFIXES,
|
|
123
|
+
);
|
|
97
124
|
expect(verbs.map((v) => verbKey(v.path))).toEqual([
|
|
98
125
|
"widget list",
|
|
99
126
|
"widget lookup",
|
|
@@ -103,7 +130,11 @@ describe("pack compiler — round-trip + shape (PROTECTED, storeless)", () => {
|
|
|
103
130
|
});
|
|
104
131
|
|
|
105
132
|
it("projects list filters as params (enum) + a search flag", () => {
|
|
106
|
-
const [list] = compilePack(
|
|
133
|
+
const [list] = compilePack(
|
|
134
|
+
WIDGET_PACK,
|
|
135
|
+
distributionSource("bundled:widget"),
|
|
136
|
+
PREFIXES,
|
|
137
|
+
);
|
|
107
138
|
expect(list?.params.map((p) => p.name)).toEqual(["kind", "search"]);
|
|
108
139
|
const kind = list?.params.find((p) => p.name === "kind");
|
|
109
140
|
expect(kind?.kind).toBe("enum");
|
|
@@ -112,7 +143,11 @@ describe("pack compiler — round-trip + shape (PROTECTED, storeless)", () => {
|
|
|
112
143
|
});
|
|
113
144
|
|
|
114
145
|
it("projects the lookup as a variadic name-completing positional + disclosure", () => {
|
|
115
|
-
const verbs = compilePack(
|
|
146
|
+
const verbs = compilePack(
|
|
147
|
+
WIDGET_PACK,
|
|
148
|
+
distributionSource("bundled:widget"),
|
|
149
|
+
PREFIXES,
|
|
150
|
+
);
|
|
116
151
|
const lookup = verbs.find((v) => verbKey(v.path) === "widget lookup");
|
|
117
152
|
const name = lookup?.params.at(0);
|
|
118
153
|
expect(name?.kind).toBe("string[]");
|
|
@@ -132,7 +167,7 @@ describe("pack compiler — round-trip + shape (PROTECTED, storeless)", () => {
|
|
|
132
167
|
PackDefinition["lookup"]
|
|
133
168
|
>;
|
|
134
169
|
const nameParam = (def: PackDefinition) =>
|
|
135
|
-
compilePack(def, "bundled:widget", PREFIXES)
|
|
170
|
+
compilePack(def, distributionSource("bundled:widget"), PREFIXES)
|
|
136
171
|
.find((v) => verbKey(v.path) === "widget lookup")
|
|
137
172
|
?.params.at(0);
|
|
138
173
|
|
|
@@ -162,6 +197,125 @@ describe("pack compiler — round-trip + shape (PROTECTED, storeless)", () => {
|
|
|
162
197
|
});
|
|
163
198
|
});
|
|
164
199
|
|
|
200
|
+
describe("the grammar rejects what the compiler cannot build (PROTECTED)", () => {
|
|
201
|
+
// A definition that compiles to a duplicate `(noun, verb)` key or a duplicate
|
|
202
|
+
// CLI option is not merely odd — it throws out of `assembleEffectiveModules`
|
|
203
|
+
// or out of `buildProgram`, both of which run BEFORE the command tree exists.
|
|
204
|
+
// For a package-shipped story that means every command dies, `doctor` and
|
|
205
|
+
// `sources update` included. The collision is a property of the definition,
|
|
206
|
+
// so it is rejected here, where a package story degrades to a dropped file.
|
|
207
|
+
const listShape = {
|
|
208
|
+
query: "SELECT ?uri WHERE { ?uri a ex:Widget }",
|
|
209
|
+
columns: [{ field: "uri" }],
|
|
210
|
+
};
|
|
211
|
+
const parse = (def: unknown) => () =>
|
|
212
|
+
parsePackDefinition(def, "pkg/stories/widget.json");
|
|
213
|
+
|
|
214
|
+
it("rejects an extra verb that repeats list, lookup, sample, or itself", () => {
|
|
215
|
+
const lookup = { by: "ex:name", type: "ex:Widget", sample: true };
|
|
216
|
+
expect(
|
|
217
|
+
parse({
|
|
218
|
+
noun: "widget",
|
|
219
|
+
list: listShape,
|
|
220
|
+
verbs: [{ ...listShape, verb: "list" }],
|
|
221
|
+
}),
|
|
222
|
+
).toThrow(/verb "list" is already compiled/);
|
|
223
|
+
expect(
|
|
224
|
+
parse({
|
|
225
|
+
noun: "widget",
|
|
226
|
+
lookup,
|
|
227
|
+
verbs: [{ ...listShape, verb: "lookup" }],
|
|
228
|
+
}),
|
|
229
|
+
).toThrow(/verb "lookup" is already compiled/);
|
|
230
|
+
expect(
|
|
231
|
+
parse({
|
|
232
|
+
noun: "widget",
|
|
233
|
+
lookup,
|
|
234
|
+
verbs: [{ ...listShape, verb: "sample" }],
|
|
235
|
+
}),
|
|
236
|
+
).toThrow(/verb "sample" is already compiled/);
|
|
237
|
+
expect(
|
|
238
|
+
parse({
|
|
239
|
+
noun: "widget",
|
|
240
|
+
list: listShape,
|
|
241
|
+
verbs: [
|
|
242
|
+
{ ...listShape, verb: "categories" },
|
|
243
|
+
{ ...listShape, verb: "categories" },
|
|
244
|
+
],
|
|
245
|
+
}),
|
|
246
|
+
).toThrow(/verb "categories" is already compiled/);
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
it("rejects a filter param declared twice, on list or on an extra verb", () => {
|
|
250
|
+
const twice = [
|
|
251
|
+
{ param: "kind", variable: "uri" },
|
|
252
|
+
{ param: "kind", variable: "uri" },
|
|
253
|
+
];
|
|
254
|
+
expect(
|
|
255
|
+
parse({ noun: "widget", list: { ...listShape, filters: twice } }),
|
|
256
|
+
).toThrow(/filter param "kind" is declared twice/);
|
|
257
|
+
expect(
|
|
258
|
+
parse({
|
|
259
|
+
noun: "widget",
|
|
260
|
+
list: listShape,
|
|
261
|
+
verbs: [{ ...listShape, verb: "categories", filters: twice }],
|
|
262
|
+
}),
|
|
263
|
+
).toThrow(/filter param "kind" is declared twice/);
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
it("still accepts the distinct forms, and they compile to unique keys/params", () => {
|
|
267
|
+
const definition = parsePackDefinition(
|
|
268
|
+
{
|
|
269
|
+
noun: "widget",
|
|
270
|
+
list: {
|
|
271
|
+
...listShape,
|
|
272
|
+
filters: [
|
|
273
|
+
{ param: "kind", variable: "uri" },
|
|
274
|
+
{ param: "tier", variable: "uri" },
|
|
275
|
+
],
|
|
276
|
+
},
|
|
277
|
+
verbs: [{ ...listShape, verb: "categories" }],
|
|
278
|
+
lookup: { by: "ex:name", type: "ex:Widget", sample: true },
|
|
279
|
+
},
|
|
280
|
+
"pkg/stories/widget.json",
|
|
281
|
+
);
|
|
282
|
+
const verbs = compilePack(
|
|
283
|
+
definition,
|
|
284
|
+
{ label: "pkg/stories/widget.json", origin: "package" },
|
|
285
|
+
PREFIXES,
|
|
286
|
+
);
|
|
287
|
+
expect(verbs.map((v) => verbKey(v.path))).toEqual([
|
|
288
|
+
"widget list",
|
|
289
|
+
"widget categories",
|
|
290
|
+
"widget lookup",
|
|
291
|
+
"widget sample",
|
|
292
|
+
]);
|
|
293
|
+
expect(() => assertUniqueVerbs(verbs)).not.toThrow();
|
|
294
|
+
expect(verbs.at(0)?.params.map((p) => p.name)).toEqual(["kind", "tier"]);
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
it("names the shape a noun must have, not the regex", () => {
|
|
298
|
+
expect(parse({ noun: "Bad Noun", list: listShape })).toThrow(
|
|
299
|
+
/noun: must be lowercase kebab-case/,
|
|
300
|
+
);
|
|
301
|
+
});
|
|
302
|
+
|
|
303
|
+
it("rejects an emptyRecovery.cli that names a binary, and names the change", () => {
|
|
304
|
+
// The hint is rendered as `<consuming distribution> <cli>`, so a story
|
|
305
|
+
// carrying the old prefixed form would render `pragma pragma sources
|
|
306
|
+
// update`. Third-party packs are third-party DATA: they get an error that
|
|
307
|
+
// names the grammar change, not a silently doubled string.
|
|
308
|
+
const withCli = (cli: string) => ({
|
|
309
|
+
noun: "widget",
|
|
310
|
+
list: { ...listShape, emptyRecovery: { message: "None.", cli } },
|
|
311
|
+
});
|
|
312
|
+
expect(parse(withCli(`${RECOVERY_CLI_PREFIX}sources update`))).toThrow(
|
|
313
|
+
/WITHOUT the binary name/,
|
|
314
|
+
);
|
|
315
|
+
expect(parse(withCli("sources update"))).not.toThrow();
|
|
316
|
+
});
|
|
317
|
+
});
|
|
318
|
+
|
|
165
319
|
describe("pack compiler — SPARQL fetch path (PROTECTED)", () => {
|
|
166
320
|
let rt: PragmaRuntime;
|
|
167
321
|
|
|
@@ -178,9 +332,11 @@ describe("pack compiler — SPARQL fetch path (PROTECTED)", () => {
|
|
|
178
332
|
});
|
|
179
333
|
|
|
180
334
|
const run = <R>(verbLabel: string, params: Record<string, unknown>) => {
|
|
181
|
-
const verb = compilePack(
|
|
182
|
-
|
|
183
|
-
|
|
335
|
+
const verb = compilePack(
|
|
336
|
+
WIDGET_PACK,
|
|
337
|
+
distributionSource("bundled:widget"),
|
|
338
|
+
PREFIXES,
|
|
339
|
+
).find((v) => verbKey(v.path) === `widget ${verbLabel}`);
|
|
184
340
|
if (!verb) throw new Error(`no widget ${verbLabel}`);
|
|
185
341
|
return verb.run(params, rt) as Promise<R>;
|
|
186
342
|
};
|
|
@@ -227,3 +383,132 @@ describe("pack compiler — SPARQL fetch path (PROTECTED)", () => {
|
|
|
227
383
|
expect(data.totalCount).toBe(2);
|
|
228
384
|
});
|
|
229
385
|
});
|
|
386
|
+
|
|
387
|
+
/**
|
|
388
|
+
* The listing a story contributes to the MCP resource surface is DERIVED from
|
|
389
|
+
* the types its lookup already names — the story author writes the type set
|
|
390
|
+
* once, for the name resolve, and the resource listing reads that same
|
|
391
|
+
* declaration. Nothing to keep in sync because there is nothing written twice.
|
|
392
|
+
*/
|
|
393
|
+
describe("declared listing (derived from the lookup's types)", () => {
|
|
394
|
+
it("derives one collection per declared type, unweighted types at 1", () => {
|
|
395
|
+
expect(
|
|
396
|
+
compileListable({
|
|
397
|
+
noun: "gadget",
|
|
398
|
+
lookup: { by: "ex:name", types: ["ex:Widget", "ex:Part"] },
|
|
399
|
+
}),
|
|
400
|
+
).toEqual({
|
|
401
|
+
sources: [
|
|
402
|
+
{ type: "ex:Widget", as: "collection", weight: 1 },
|
|
403
|
+
{ type: "ex:Part", as: "collection", weight: 1 },
|
|
404
|
+
],
|
|
405
|
+
});
|
|
406
|
+
});
|
|
407
|
+
|
|
408
|
+
it("carries a declared weight onto the type it names", () => {
|
|
409
|
+
const listable = compileListable({
|
|
410
|
+
noun: "gadget",
|
|
411
|
+
lookup: {
|
|
412
|
+
by: "ex:name",
|
|
413
|
+
types: ["ex:Widget", "ex:Part"],
|
|
414
|
+
weights: { "ex:Part": 0.6 },
|
|
415
|
+
},
|
|
416
|
+
});
|
|
417
|
+
expect(listable?.sources.map((s) => s.weight)).toEqual([1, 0.6]);
|
|
418
|
+
});
|
|
419
|
+
|
|
420
|
+
it("declares nothing for a list-only noun (it addresses no class)", () => {
|
|
421
|
+
expect(
|
|
422
|
+
compileListable({ noun: "gadget", list: { query: "", columns: [] } }),
|
|
423
|
+
).toBeUndefined();
|
|
424
|
+
});
|
|
425
|
+
|
|
426
|
+
it("carries the listing onto the compiled module, beside its verbs", () => {
|
|
427
|
+
const module = compileStoryModule(
|
|
428
|
+
{ noun: "gadget", lookup: { by: "ex:name", type: "ex:Widget" } },
|
|
429
|
+
distributionSource("t"),
|
|
430
|
+
PREFIXES,
|
|
431
|
+
);
|
|
432
|
+
expect(module.story).toBe(true);
|
|
433
|
+
expect(module.mcpListable?.sources).toEqual([
|
|
434
|
+
{ type: "ex:Widget", as: "collection", weight: 1 },
|
|
435
|
+
]);
|
|
436
|
+
});
|
|
437
|
+
});
|
|
438
|
+
|
|
439
|
+
describe("weights validation (a weight that can never apply is rejected)", () => {
|
|
440
|
+
it("accepts a weight naming a type the lookup addresses", () => {
|
|
441
|
+
const definition = {
|
|
442
|
+
noun: "gadget",
|
|
443
|
+
lookup: {
|
|
444
|
+
by: "ex:name",
|
|
445
|
+
types: ["ex:Widget", "ex:Part"],
|
|
446
|
+
weights: { "ex:Part": 0.6 },
|
|
447
|
+
},
|
|
448
|
+
};
|
|
449
|
+
expect(parsePackDefinition(definition, "t")).toEqual(definition);
|
|
450
|
+
});
|
|
451
|
+
|
|
452
|
+
it("REJECTS a weight naming a type the lookup does not address", () => {
|
|
453
|
+
// A silent no-op is how a weight that never applied survives review: the
|
|
454
|
+
// type gets renamed, the weight stays pointed at the old name, and nothing
|
|
455
|
+
// says so — the ranking simply stops changing.
|
|
456
|
+
expect(() =>
|
|
457
|
+
parsePackDefinition(
|
|
458
|
+
{
|
|
459
|
+
noun: "gadget",
|
|
460
|
+
lookup: {
|
|
461
|
+
by: "ex:name",
|
|
462
|
+
types: ["ex:Widget"],
|
|
463
|
+
weights: { "ex:Gone": 0.6 },
|
|
464
|
+
},
|
|
465
|
+
},
|
|
466
|
+
"t",
|
|
467
|
+
),
|
|
468
|
+
).toThrow(/ex:Gone/);
|
|
469
|
+
});
|
|
470
|
+
|
|
471
|
+
it("REJECTS a weight outside 0–1", () => {
|
|
472
|
+
expect(() =>
|
|
473
|
+
parsePackDefinition(
|
|
474
|
+
{
|
|
475
|
+
noun: "gadget",
|
|
476
|
+
lookup: {
|
|
477
|
+
by: "ex:name",
|
|
478
|
+
type: "ex:Widget",
|
|
479
|
+
weights: { "ex:Widget": 2 },
|
|
480
|
+
},
|
|
481
|
+
},
|
|
482
|
+
"t",
|
|
483
|
+
),
|
|
484
|
+
).toThrow();
|
|
485
|
+
});
|
|
486
|
+
});
|
|
487
|
+
|
|
488
|
+
describe("compileListable — absolute IRIs reach the prefixed contract", () => {
|
|
489
|
+
it("compacts an absolute lookup type, and its weight key with it", () => {
|
|
490
|
+
// `PackLookup.type`/`types` accept a prefixed name OR an absolute IRI, but
|
|
491
|
+
// the listing is keyed on the index's prefixed types. Verbatim, such a story
|
|
492
|
+
// compiled clean and then matched no class and no weight.
|
|
493
|
+
const listable = compileListable({
|
|
494
|
+
noun: "widget",
|
|
495
|
+
lookup: {
|
|
496
|
+
by: "ds:name",
|
|
497
|
+
types: ["https://ds.canonical.com/Component", "ds:Pattern"],
|
|
498
|
+
weights: { "https://ds.canonical.com/Component": 0.4 },
|
|
499
|
+
},
|
|
500
|
+
} as PackDefinition);
|
|
501
|
+
|
|
502
|
+
expect(listable?.sources.map((s) => s.type)).toEqual([
|
|
503
|
+
"ds:Component",
|
|
504
|
+
"ds:Pattern",
|
|
505
|
+
]);
|
|
506
|
+
// The weight followed its type through the same compaction, so it still
|
|
507
|
+
// applies — keying it on the raw IRI would have silently dropped it.
|
|
508
|
+
const component = listable?.sources.find((s) => s.type === "ds:Component");
|
|
509
|
+
expect(component?.weight).toBe(0.4);
|
|
510
|
+
expect(listable?.sources.find((s) => s.type === "ds:Pattern")?.weight).toBe(
|
|
511
|
+
1,
|
|
512
|
+
);
|
|
513
|
+
});
|
|
514
|
+
});
|
|
@@ -7,15 +7,24 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Pure, storeless spec-generation: it builds paths, params, formatters, and run
|
|
9
9
|
* closures without touching the store or zod, so it runs on the
|
|
10
|
-
* `--help`/`__complete` fast path (the
|
|
11
|
-
* dynamic merge is
|
|
10
|
+
* `--help`/`__complete` fast path (the distribution's declared stories compile
|
|
11
|
+
* at import, in `capabilities/distribution.ts`; the dynamic merge is
|
|
12
|
+
* `collect.assembleEffectiveModules`/`loadEffectiveModules`).
|
|
12
13
|
* The heavy work is deferred into the run closures (behind the lazy runtime
|
|
13
14
|
* facade).
|
|
14
15
|
*/
|
|
15
16
|
|
|
16
|
-
import
|
|
17
|
+
import { BIN_NAME } from "../../constants.js";
|
|
18
|
+
import { compactUri, DEFAULT_PREFIX_MAP } from "../render/index.js";
|
|
19
|
+
import type { PragmaRuntime } from "../runtime/index.js";
|
|
17
20
|
import { asVerb } from "../spec/asVerb.js";
|
|
18
|
-
import type {
|
|
21
|
+
import type {
|
|
22
|
+
CapabilityModule,
|
|
23
|
+
DisclosureSpec,
|
|
24
|
+
McpListable,
|
|
25
|
+
ParamSpec,
|
|
26
|
+
VerbSpec,
|
|
27
|
+
} from "../spec/types.js";
|
|
19
28
|
import {
|
|
20
29
|
listFormatters,
|
|
21
30
|
lookupFormatters,
|
|
@@ -35,6 +44,7 @@ import type {
|
|
|
35
44
|
PackLookup,
|
|
36
45
|
PackRow,
|
|
37
46
|
PackSearch,
|
|
47
|
+
StorySource,
|
|
38
48
|
} from "./types.js";
|
|
39
49
|
|
|
40
50
|
// The run bodies pull the SPARQL/GraphQL fetch layer; they are dynamic-imported
|
|
@@ -62,7 +72,7 @@ const READ_CAPABILITY = {
|
|
|
62
72
|
*/
|
|
63
73
|
export function compilePack(
|
|
64
74
|
definition: PackDefinition,
|
|
65
|
-
source:
|
|
75
|
+
source: StorySource,
|
|
66
76
|
prefixes: Readonly<Record<string, string>>,
|
|
67
77
|
): VerbSpec[] {
|
|
68
78
|
const { noun } = definition;
|
|
@@ -104,6 +114,83 @@ export function compilePack(
|
|
|
104
114
|
return verbs;
|
|
105
115
|
}
|
|
106
116
|
|
|
117
|
+
/**
|
|
118
|
+
* Derive a story's MCP resource listing from the types its lookup addresses.
|
|
119
|
+
*
|
|
120
|
+
* ZERO new authoring: a read story ALREADY declares its type set
|
|
121
|
+
* (`lookup.type` / `lookup.types`) because that is what its name resolve is
|
|
122
|
+
* constrained by, so the slice of the index the noun contributes to the listing
|
|
123
|
+
* IS that declaration read a second time by a different reader — never written
|
|
124
|
+
* a second time by the author. Each type contributes ONE collection entry (its
|
|
125
|
+
* class entry, carrying the instance count); the individuals stay reachable
|
|
126
|
+
* through the `{+uri}` template and its autocomplete.
|
|
127
|
+
*
|
|
128
|
+
* Returns `undefined` for a story with no lookup (a list-only noun addresses no
|
|
129
|
+
* class, so it can name no slice).
|
|
130
|
+
*
|
|
131
|
+
* @param definition - A validated pack definition.
|
|
132
|
+
* @returns Its declared listing, or `undefined` when it declares no types.
|
|
133
|
+
*/
|
|
134
|
+
export function compileListable(
|
|
135
|
+
definition: PackDefinition,
|
|
136
|
+
): McpListable | undefined {
|
|
137
|
+
const lookup = definition.lookup;
|
|
138
|
+
if (!lookup) return undefined;
|
|
139
|
+
const types = lookup.types ?? (lookup.type ? [lookup.type] : []);
|
|
140
|
+
if (types.length === 0) return undefined;
|
|
141
|
+
// `PackLookup.type`/`types` accept a prefixed name OR an absolute IRI, but the
|
|
142
|
+
// listing is keyed on the index's PREFIXED types. Copied verbatim, a lookup
|
|
143
|
+
// legitimately constrained to `https://…/Widget` compiles clean and then
|
|
144
|
+
// matches no class and no weight — a story that is valid everywhere else and
|
|
145
|
+
// silently contributes nothing here. Compacted against the same map
|
|
146
|
+
// `resolveUri` expands with, so the two directions agree.
|
|
147
|
+
const compact = (type: string): string =>
|
|
148
|
+
compactUri(type, DEFAULT_PREFIX_MAP);
|
|
149
|
+
const weights = Object.fromEntries(
|
|
150
|
+
Object.entries(lookup.weights ?? {}).map(([type, weight]) => [
|
|
151
|
+
compact(type),
|
|
152
|
+
weight,
|
|
153
|
+
]),
|
|
154
|
+
);
|
|
155
|
+
return {
|
|
156
|
+
sources: types.map(compact).map((type) => ({
|
|
157
|
+
type,
|
|
158
|
+
as: "collection" as const,
|
|
159
|
+
// Unlisted types weigh 1 — the default is "as important as any other",
|
|
160
|
+
// so a story that declares no weights needs no weights.
|
|
161
|
+
weight: weights[type] ?? 1,
|
|
162
|
+
})),
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Compile a story into the capability module that carries it.
|
|
168
|
+
*
|
|
169
|
+
* The ONE place a {@link PackDefinition} becomes a {@link CapabilityModule} —
|
|
170
|
+
* the distribution's static stories and the dynamic (config/package) ones come
|
|
171
|
+
* through here alike, so a module-level projection derived from the story
|
|
172
|
+
* (today: {@link compileListable}) cannot reach one tier and miss the other.
|
|
173
|
+
*
|
|
174
|
+
* @param definition - A validated pack definition.
|
|
175
|
+
* @param source - Where the definition came from, for diagnostics.
|
|
176
|
+
* @param prefixes - The merged prefix map used for display compaction.
|
|
177
|
+
* @returns The module: the compiled verbs plus the story's module-level data.
|
|
178
|
+
*/
|
|
179
|
+
export function compileStoryModule(
|
|
180
|
+
definition: PackDefinition,
|
|
181
|
+
source: StorySource,
|
|
182
|
+
prefixes: Readonly<Record<string, string>>,
|
|
183
|
+
): CapabilityModule {
|
|
184
|
+
const listable = compileListable(definition);
|
|
185
|
+
return {
|
|
186
|
+
name: definition.noun,
|
|
187
|
+
story: true,
|
|
188
|
+
verbs: compilePack(definition, source, prefixes),
|
|
189
|
+
colophon: definition.colophon,
|
|
190
|
+
...(listable ? { mcpListable: listable } : {}),
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
|
|
107
194
|
/** Presentation facts for one compiled list-shaped verb. */
|
|
108
195
|
interface ListVerbMeta {
|
|
109
196
|
readonly noun: string;
|
|
@@ -111,7 +198,7 @@ interface ListVerbMeta {
|
|
|
111
198
|
readonly summary: string;
|
|
112
199
|
/** The authored MCP tool description (from `toolDescription`), if any. */
|
|
113
200
|
readonly doc?: string;
|
|
114
|
-
readonly source:
|
|
201
|
+
readonly source: StorySource;
|
|
115
202
|
readonly prefixes: Readonly<Record<string, string>>;
|
|
116
203
|
}
|
|
117
204
|
|
|
@@ -135,17 +222,17 @@ function compileListVerb(shape: PackList, meta: ListVerbMeta): VerbSpec {
|
|
|
135
222
|
}),
|
|
136
223
|
},
|
|
137
224
|
examples: [
|
|
138
|
-
{ cmd:
|
|
225
|
+
{ cmd: `${BIN_NAME} ${meta.noun} ${meta.verb}` },
|
|
139
226
|
...(filterExample
|
|
140
227
|
? [
|
|
141
228
|
{
|
|
142
|
-
cmd:
|
|
229
|
+
cmd: `${BIN_NAME} ${meta.noun} ${meta.verb} --${filterExample.param} ${quoteExample(
|
|
143
230
|
filterExample.values?.at(0) ?? "",
|
|
144
231
|
)}`,
|
|
145
232
|
},
|
|
146
233
|
]
|
|
147
234
|
: []),
|
|
148
|
-
{ cmd:
|
|
235
|
+
{ cmd: `${BIN_NAME} ${meta.noun} ${meta.verb} --format llm` },
|
|
149
236
|
],
|
|
150
237
|
capability: READ_CAPABILITY,
|
|
151
238
|
run: (params: Record<string, unknown>, rt: PragmaRuntime) =>
|
|
@@ -160,7 +247,7 @@ function compileListVerb(shape: PackList, meta: ListVerbMeta): VerbSpec {
|
|
|
160
247
|
function compileLookupVerb(
|
|
161
248
|
lookup: PackLookup,
|
|
162
249
|
noun: string,
|
|
163
|
-
source:
|
|
250
|
+
source: StorySource,
|
|
164
251
|
prefixes: Readonly<Record<string, string>>,
|
|
165
252
|
): VerbSpec {
|
|
166
253
|
// Derive-by-default: every lookup completes its `<name>` from the pack index
|
|
@@ -197,7 +284,7 @@ function compileLookupVerb(
|
|
|
197
284
|
...(lookup.toolDescription ? { doc: lookup.toolDescription } : {}),
|
|
198
285
|
params: [nameParam],
|
|
199
286
|
output: { formatters: lookupFormatters(lookup, prefixes) },
|
|
200
|
-
examples: [{ cmd:
|
|
287
|
+
examples: [{ cmd: `${BIN_NAME} ${noun} lookup <name>` }],
|
|
201
288
|
...(lookup.disclosure
|
|
202
289
|
? { disclosure: disclosureSpec(lookup.disclosure) }
|
|
203
290
|
: {}),
|
|
@@ -214,7 +301,7 @@ function compileLookupVerb(
|
|
|
214
301
|
function compileSampleVerb(
|
|
215
302
|
lookup: PackLookup,
|
|
216
303
|
noun: string,
|
|
217
|
-
source:
|
|
304
|
+
source: StorySource,
|
|
218
305
|
prefixes: Readonly<Record<string, string>>,
|
|
219
306
|
): VerbSpec {
|
|
220
307
|
const defaultCount = sampleDefaultCount(lookup);
|
|
@@ -241,8 +328,8 @@ function compileSampleVerb(
|
|
|
241
328
|
params: countParam,
|
|
242
329
|
output: { formatters: sampleFormatters(lookup, noun, prefixes) },
|
|
243
330
|
examples: [
|
|
244
|
-
{ cmd:
|
|
245
|
-
...(config?.fixedCount ? [] : [{ cmd:
|
|
331
|
+
{ cmd: `${BIN_NAME} ${noun} sample` },
|
|
332
|
+
...(config?.fixedCount ? [] : [{ cmd: `${BIN_NAME} ${noun} sample 3` }]),
|
|
246
333
|
],
|
|
247
334
|
capability: READ_CAPABILITY,
|
|
248
335
|
run: (params: Record<string, unknown>, rt: PragmaRuntime) =>
|
|
@@ -284,9 +371,15 @@ function projectFilters(
|
|
|
284
371
|
name: filter.param,
|
|
285
372
|
doc,
|
|
286
373
|
values: [...filter.values],
|
|
374
|
+
repeatable: true,
|
|
287
375
|
} satisfies ParamSpec;
|
|
288
376
|
}
|
|
289
|
-
return {
|
|
377
|
+
return {
|
|
378
|
+
kind: "string",
|
|
379
|
+
name: filter.param,
|
|
380
|
+
doc,
|
|
381
|
+
repeatable: true,
|
|
382
|
+
} satisfies ParamSpec;
|
|
290
383
|
});
|
|
291
384
|
}
|
|
292
385
|
|
|
@@ -66,13 +66,16 @@ const PACK: PackDefinition = {
|
|
|
66
66
|
};
|
|
67
67
|
|
|
68
68
|
const lookupVerb = () =>
|
|
69
|
-
compilePack(PACK, "test:widget", PREFIXES).find(
|
|
69
|
+
compilePack(PACK, { label: "test:widget", origin: "package" }, PREFIXES).find(
|
|
70
70
|
(v) => verbKey(v.path) === "widget lookup",
|
|
71
71
|
);
|
|
72
72
|
|
|
73
73
|
async function lookupAt(
|
|
74
74
|
detail?: "summary" | "standard" | "detailed",
|
|
75
|
-
config?: {
|
|
75
|
+
config?: {
|
|
76
|
+
configDetail: "summary" | "standard" | "detailed";
|
|
77
|
+
detailOrigin: "global" | "project";
|
|
78
|
+
},
|
|
76
79
|
): Promise<Record<string, unknown>> {
|
|
77
80
|
const { rt } = await buildFixtureRuntime({
|
|
78
81
|
ttl: TTL,
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
20
|
import { DETAIL_LEVELS } from "../../constants.js";
|
|
21
|
-
import { resolveDetail } from "../render/
|
|
22
|
-
import type { PragmaRuntime } from "../runtime/
|
|
21
|
+
import { resolveDetail } from "../render/index.js";
|
|
22
|
+
import type { PragmaRuntime } from "../runtime/index.js";
|
|
23
23
|
import type { PackDisclosure, PackExpand, PackField } from "./types.js";
|
|
24
24
|
|
|
25
25
|
/** The canonical level names, lowest → highest. */
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* stays off the storeless fast path).
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
|
-
import { PragmaError } from "../../error/
|
|
26
|
+
import { PragmaError } from "../../error/index.js";
|
|
27
27
|
import { activeExpands, activeFields } from "./../sparql/buildLookupQuery.js";
|
|
28
28
|
import type {
|
|
29
29
|
PackExpand,
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
* composed only from validated pack terms and compiled schema names.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import { PragmaError } from "../../error/
|
|
18
|
-
import type { PragmaRuntime } from "../../runtime/
|
|
17
|
+
import { cliRecovery, PragmaError } from "../../error/index.js";
|
|
18
|
+
import type { PragmaRuntime } from "../../runtime/index.js";
|
|
19
19
|
import type { PackChildRow, PackEntity, PackLookup } from "../types.js";
|
|
20
20
|
import {
|
|
21
21
|
buildLookupDocument,
|
|
@@ -55,12 +55,12 @@ export async function fetchGraphqlLookup(
|
|
|
55
55
|
.map((error) => error.message)
|
|
56
56
|
.join("; ");
|
|
57
57
|
throw PragmaError.storeUnavailable(`GraphQL lookup failed: ${messages}`, {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
58
|
+
// `graph inspect` needs a <uri>; `ontology list` is runnable as-is.
|
|
59
|
+
recovery: cliRecovery(
|
|
60
|
+
"ontology list",
|
|
61
|
+
"Check the loaded ontology and namespaces.",
|
|
62
|
+
{ tool: "ontology_list" },
|
|
63
|
+
),
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
66
|
|
|
@@ -71,11 +71,11 @@ export async function fetchGraphqlLookup(
|
|
|
71
71
|
// ontology). That is a runtime not-found, not an unavailable store (exit 3).
|
|
72
72
|
throw new PragmaError({
|
|
73
73
|
code: "ENTITY_NOT_FOUND",
|
|
74
|
-
message: `
|
|
75
|
-
recovery:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
74
|
+
message: `Cannot resolve <${entityUri}> — its rdf:type may be missing from the ontology.`,
|
|
75
|
+
recovery: cliRecovery(
|
|
76
|
+
`graph inspect ${entityUri}`,
|
|
77
|
+
"Inspect the entity's triples to check its rdf:type.",
|
|
78
|
+
),
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
81
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The GraphQL lookup path — what a `source: "graphql"` pack story executes
|
|
3
|
+
* once SPARQL has resolved its name to an entity IRI.
|
|
4
|
+
*
|
|
5
|
+
* The three files here are one function split for testability, not three
|
|
6
|
+
* services: the naming rules derive schema field names from the RDF properties
|
|
7
|
+
* a pack declares, the document generator turns a lookup declaration plus
|
|
8
|
+
* those names into the single query to run, and the fetcher executes it and
|
|
9
|
+
* unwraps the Relay envelope into the same flat entity shape the SPARQL path
|
|
10
|
+
* produces. Only the last of those is something a caller does.
|
|
11
|
+
*
|
|
12
|
+
* So the barrel is one export, and the narrowness is the point. The document
|
|
13
|
+
* generator's contract is that the entity IRI travels as a query VARIABLE and
|
|
14
|
+
* never as interpolated text, and that a document is composed only from
|
|
15
|
+
* validated pack terms and compiled schema names. Handing out the generator on
|
|
16
|
+
* its own would hand out a way to build a document and execute it by some
|
|
17
|
+
* other route; handing out the fetcher hands out the guarantee with it.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
export { fetchGraphqlLookup } from "./fetchGraphqlLookup.js";
|