@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
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
exports[`eval harness — seed gate > runs the full seed (stable + read-noun) cases clean 1`] = `
|
|
4
4
|
[
|
|
5
|
+
{
|
|
6
|
+
"id": "content-block-list-is-channel-independent",
|
|
7
|
+
"kind": "content",
|
|
8
|
+
"passed": true,
|
|
9
|
+
},
|
|
5
10
|
{
|
|
6
11
|
"id": "content-canonical-graph-has-4-components",
|
|
7
12
|
"kind": "content",
|
|
@@ -57,11 +62,6 @@ exports[`eval harness — seed gate > runs the full seed (stable + read-noun) ca
|
|
|
57
62
|
"kind": "content",
|
|
58
63
|
"passed": true,
|
|
59
64
|
},
|
|
60
|
-
{
|
|
61
|
-
"id": "content-normal-channel-drops-beta-only-block",
|
|
62
|
-
"kind": "content",
|
|
63
|
-
"passed": true,
|
|
64
|
-
},
|
|
65
65
|
{
|
|
66
66
|
"id": "content-standard-list-length-equals-category-count-sum",
|
|
67
67
|
"kind": "content",
|
|
@@ -113,7 +113,7 @@ exports[`eval harness — seed gate > runs the full seed (stable + read-noun) ca
|
|
|
113
113
|
"passed": true,
|
|
114
114
|
},
|
|
115
115
|
{
|
|
116
|
-
"id": "prompt-tokens-config-maps-to-
|
|
116
|
+
"id": "prompt-tokens-config-maps-to-nothing",
|
|
117
117
|
"kind": "prompt",
|
|
118
118
|
"passed": true,
|
|
119
119
|
},
|
|
@@ -183,7 +183,7 @@ exports[`eval harness — seed gate > runs the full seed (stable + read-noun) ca
|
|
|
183
183
|
"passed": true,
|
|
184
184
|
},
|
|
185
185
|
{
|
|
186
|
-
"id": "tool-token-
|
|
186
|
+
"id": "tool-token-noun-is-read-only",
|
|
187
187
|
"kind": "tool",
|
|
188
188
|
"passed": true,
|
|
189
189
|
},
|
|
@@ -171,15 +171,22 @@ export const assemblyEvalCases: readonly EvalCase[] = [
|
|
|
171
171
|
},
|
|
172
172
|
},
|
|
173
173
|
{
|
|
174
|
-
id: "prompt-tokens-config-maps-to-
|
|
174
|
+
id: "prompt-tokens-config-maps-to-nothing",
|
|
175
175
|
kind: "prompt",
|
|
176
176
|
input:
|
|
177
|
-
'"Generate a terrazzo tokens config"
|
|
177
|
+
'"Generate a terrazzo tokens config" maps to NO tool — `token_add-config` was removed in L-OPEN-9, and the token noun is read-only.',
|
|
178
178
|
async expect({ mcp }) {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
179
|
+
// The inverse of an intent-mapping case, and the point of the ruling: an
|
|
180
|
+
// agent asked to write a tokens config finds nothing in the catalog that
|
|
181
|
+
// claims to do it, rather than a verb the declared grammar cannot express.
|
|
182
|
+
const tools = await mcp.listTools();
|
|
183
|
+
assert.ok(
|
|
184
|
+
!tools.some(
|
|
185
|
+
(tool) =>
|
|
186
|
+
tool.name === "token_add-config" ||
|
|
187
|
+
/terrazzo|tokens\.config/i.test(String(tool.description ?? "")),
|
|
188
|
+
),
|
|
189
|
+
"no tool may still offer to write a tokens config",
|
|
183
190
|
);
|
|
184
191
|
},
|
|
185
192
|
},
|
|
@@ -88,7 +88,7 @@ export const effectfulEvalCases: readonly EvalCase[] = [
|
|
|
88
88
|
id: "tool-doctor-reports-check-tallies",
|
|
89
89
|
kind: "tool",
|
|
90
90
|
input:
|
|
91
|
-
"doctor returns a { checks, passed, failed, skipped } diagnostic report where the tallies sum to the checks.",
|
|
91
|
+
"doctor returns a { checks, passed, failed, available, skipped } diagnostic report where the tallies sum to the checks.",
|
|
92
92
|
async expect({ mcp }) {
|
|
93
93
|
const result = await mcp.callTool("doctor");
|
|
94
94
|
assert.equal(result.ok, true);
|
|
@@ -96,11 +96,12 @@ export const effectfulEvalCases: readonly EvalCase[] = [
|
|
|
96
96
|
checks: unknown[];
|
|
97
97
|
passed: number;
|
|
98
98
|
failed: number;
|
|
99
|
+
available: number;
|
|
99
100
|
skipped: number;
|
|
100
101
|
};
|
|
101
102
|
assert.ok(Array.isArray(data.checks), "expected a checks array");
|
|
102
103
|
assert.equal(
|
|
103
|
-
data.passed + data.failed + data.skipped,
|
|
104
|
+
data.passed + data.failed + data.available + data.skipped,
|
|
104
105
|
data.checks.length,
|
|
105
106
|
);
|
|
106
107
|
},
|
|
@@ -170,18 +171,23 @@ export const effectfulEvalCases: readonly EvalCase[] = [
|
|
|
170
171
|
},
|
|
171
172
|
},
|
|
172
173
|
{
|
|
173
|
-
id: "tool-token-
|
|
174
|
+
id: "tool-token-noun-is-read-only",
|
|
174
175
|
kind: "tool",
|
|
175
176
|
input:
|
|
176
|
-
"
|
|
177
|
+
"the `token` noun exposes only reads — `token_add-config` (the tokens.config.mjs writer) was REMOVED in L-OPEN-9, not ported.",
|
|
177
178
|
async expect() {
|
|
178
179
|
await withCanonicalFixture(CANONICAL_CONFIG, async (mcp) => {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
180
|
+
// This case used to pin `token_add-config`'s plan-first contract. The
|
|
181
|
+
// verb is gone, so it pins the ruling instead: the read surface is
|
|
182
|
+
// declared content and carries no mutation. (The plan-first MECHANIC is
|
|
183
|
+
// still covered by `tool-config-set-is-plan-first` and
|
|
184
|
+
// `tool-upgrade-is-plan-first`.)
|
|
185
|
+
const tools = (await mcp.listTools()).map((tool) => tool.name);
|
|
186
|
+
assert.ok(!tools.includes("token_add-config"));
|
|
187
|
+
assert.deepEqual(
|
|
188
|
+
tools.filter((name) => name.startsWith("token")).sort(),
|
|
189
|
+
["token_list", "token_lookup", "token_sample"],
|
|
190
|
+
);
|
|
185
191
|
});
|
|
186
192
|
},
|
|
187
193
|
},
|
|
@@ -189,14 +195,21 @@ export const effectfulEvalCases: readonly EvalCase[] = [
|
|
|
189
195
|
id: "tool-tier-lookup-lists-scoped-blocks",
|
|
190
196
|
kind: "tool",
|
|
191
197
|
input:
|
|
192
|
-
"tier_lookup {name:apps/lxd} resolves the tier and
|
|
198
|
+
"tier_lookup {name:[apps/lxd]} resolves the tier and expands the blocks scoped to it (LXD Panel).",
|
|
193
199
|
async expect() {
|
|
194
200
|
await withCanonicalFixture(ALL_VISIBLE_CONFIG, async (mcp) => {
|
|
195
|
-
|
|
201
|
+
// The declared pack lookup (L-OPEN-9): variadic names in, the uniform
|
|
202
|
+
// `{ results, errors }` lookup envelope out, blocks as an expand.
|
|
203
|
+
const result = await mcp.callTool("tier_lookup", {
|
|
204
|
+
name: ["apps/lxd"],
|
|
205
|
+
});
|
|
196
206
|
assert.equal(result.ok, true);
|
|
197
|
-
const data = result.data as {
|
|
198
|
-
|
|
199
|
-
|
|
207
|
+
const data = result.data as {
|
|
208
|
+
results: { name: string; blocks: { name: string }[] }[];
|
|
209
|
+
};
|
|
210
|
+
const tier = data.results[0];
|
|
211
|
+
assert.equal(tier?.name, "apps/lxd");
|
|
212
|
+
assert.ok(tier?.blocks.some((block) => block.name === "LXD Panel"));
|
|
200
213
|
});
|
|
201
214
|
},
|
|
202
215
|
},
|
|
@@ -90,15 +90,15 @@ export const readNounEvalCases: readonly EvalCase[] = [
|
|
|
90
90
|
id: "content-canonical-graph-has-4-components",
|
|
91
91
|
kind: "content",
|
|
92
92
|
input:
|
|
93
|
-
"the canonical fixture graph carries 4 ds:Component individuals (Button, Modal, LXD Panel, Beta Widget);
|
|
93
|
+
"the canonical fixture graph carries 4 ds:Component individuals (Button, Modal, LXD Panel, Beta Widget); block_list also surfaces the untiered Button Icon subcomponent (A2).",
|
|
94
94
|
async expect() {
|
|
95
95
|
await withCanonicalFixture(ALL_VISIBLE_CONFIG, async (mcp) => {
|
|
96
|
-
const result = await mcp.callTool("block_list"
|
|
96
|
+
const result = await mcp.callTool("block_list");
|
|
97
97
|
const names = (result.data as { name: string }[])
|
|
98
98
|
.map((r) => r.name)
|
|
99
99
|
.sort();
|
|
100
|
-
//
|
|
101
|
-
//
|
|
100
|
+
// The declared list takes no arguments and filters nothing: the 4 tiered
|
|
101
|
+
// components plus the untiered Button Icon subcomponent (A2).
|
|
102
102
|
assert.deepEqual(names, [
|
|
103
103
|
"Beta Widget",
|
|
104
104
|
"Button",
|
|
@@ -168,25 +168,27 @@ export const readNounEvalCases: readonly EvalCase[] = [
|
|
|
168
168
|
},
|
|
169
169
|
},
|
|
170
170
|
{
|
|
171
|
-
id: "content-
|
|
171
|
+
id: "content-block-list-is-channel-independent",
|
|
172
172
|
kind: "content",
|
|
173
173
|
input:
|
|
174
|
-
"the normal channel (CANONICAL_CONFIG)
|
|
174
|
+
"block_list returns the SAME rows on the normal channel (CANONICAL_CONFIG) and the prerelease one (ALL_VISIBLE_CONFIG) — including the beta-only block, which the normal channel used to hide (L-OPEN-9).",
|
|
175
175
|
async expect() {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
)
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
176
|
+
const namesUnder = async (
|
|
177
|
+
config: typeof CANONICAL_CONFIG | typeof ALL_VISIBLE_CONFIG,
|
|
178
|
+
): Promise<string[]> => {
|
|
179
|
+
let names: string[] = [];
|
|
180
|
+
await withCanonicalFixture(config, async (mcp) => {
|
|
181
|
+
const result = await mcp.callTool("block_list");
|
|
182
|
+
names = (result.data as { name: string }[]).map((r) => r.name).sort();
|
|
183
|
+
});
|
|
184
|
+
return names;
|
|
185
|
+
};
|
|
186
|
+
const normal = await namesUnder(CANONICAL_CONFIG);
|
|
187
|
+
const prerelease = await namesUnder(ALL_VISIBLE_CONFIG);
|
|
188
|
+
// The signed-off consequence: an experimental block is visible to
|
|
189
|
+
// everyone, on every channel, until filtering returns in declared form.
|
|
190
|
+
assert.ok(normal.includes("Beta Widget"));
|
|
191
|
+
assert.deepEqual(normal, prerelease);
|
|
190
192
|
},
|
|
191
193
|
},
|
|
192
194
|
{
|
|
@@ -110,7 +110,11 @@ export const stableEvalCases: readonly EvalCase[] = [
|
|
|
110
110
|
try {
|
|
111
111
|
const widgetModule: CapabilityModule = {
|
|
112
112
|
name: "widget",
|
|
113
|
-
verbs: compilePack(
|
|
113
|
+
verbs: compilePack(
|
|
114
|
+
WIDGET_PACK,
|
|
115
|
+
{ label: "test:widget", origin: "package" },
|
|
116
|
+
WIDGET_PREFIXES,
|
|
117
|
+
),
|
|
114
118
|
};
|
|
115
119
|
const mcp = await projectMcp([widgetModule], fixture.cwd);
|
|
116
120
|
try {
|
|
@@ -70,5 +70,11 @@ describe("eval harness — seed gate", () => {
|
|
|
70
70
|
expect(report.cases.length).toBeGreaterThanOrEqual(35);
|
|
71
71
|
expect(report.cases.length).toBeLessThanOrEqual(60);
|
|
72
72
|
expect(normalize(report.cases)).toMatchSnapshot();
|
|
73
|
-
|
|
73
|
+
// Explicit timeout, like the other suite-level gates: this drives every
|
|
74
|
+
// seed case through a real runtime AND a real MCP server, and since a
|
|
75
|
+
// preview now performs its reads for real rather than answering from a
|
|
76
|
+
// mock, the effectful cases pay genuine IO. Measured 3.7s before that
|
|
77
|
+
// change and 5.4s after, so the vitest 5s default fails it on cost the
|
|
78
|
+
// PR intends to pay — not on a defect. 60s leaves room for CI contention.
|
|
79
|
+
}, 60_000);
|
|
74
80
|
});
|
|
@@ -21,6 +21,18 @@ export const BLOCK_PREFIXES: Readonly<Record<string, string>> = {
|
|
|
21
21
|
xsd: "http://www.w3.org/2001/XMLSchema#",
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
+
/**
|
|
25
|
+
* A membership roster deep enough to cross the entity read's fan-in threshold,
|
|
26
|
+
* so the fixture exercises the SAMPLED branch and not only the listed one.
|
|
27
|
+
* Generated rather than written out: the count is the whole point of the case,
|
|
28
|
+
* and 22 hand-copied lines invite someone to "tidy" one away.
|
|
29
|
+
*/
|
|
30
|
+
const ROSTER_MEMBER_COUNT = 22;
|
|
31
|
+
const ROSTER_MEMBERS = Array.from(
|
|
32
|
+
{ length: ROSTER_MEMBER_COUNT },
|
|
33
|
+
(_, index) => `ds:probe.member${index} a ds:Probe ; ds:tier ds:rosterHub .`,
|
|
34
|
+
).join("\n");
|
|
35
|
+
|
|
24
36
|
/** The fixture ontology + individuals as Turtle. */
|
|
25
37
|
export const BLOCK_TTL = `
|
|
26
38
|
@prefix ds: <https://ds.canonical.com/> .
|
|
@@ -109,4 +121,71 @@ ds:mod.importance.secondary a ds:Modifier ; ds:name "secondary" ; ds:modifierFam
|
|
|
109
121
|
ds:mod.density.compact a ds:Modifier ; ds:name "compact" ; ds:modifierFamily ds:family.density .
|
|
110
122
|
ds:mod.size.small a ds:Modifier ; ds:name "small" ; ds:modifierFamily ds:family.size .
|
|
111
123
|
ds:mod.size.large a ds:Modifier ; ds:name "large" ; ds:modifierFamily ds:family.size .
|
|
124
|
+
|
|
125
|
+
# ---- Neighbourhood-read probes ----
|
|
126
|
+
# Typed \`ds:Probe\`, which is deliberately NOT declared as an owl:Class and is
|
|
127
|
+
# outside the block VALUES set, so these individuals reach the entity reader
|
|
128
|
+
# without entering any block list or the ontology class listing.
|
|
129
|
+
#
|
|
130
|
+
# literalTrap holds a STRING that begins with the ds: namespace. Read through
|
|
131
|
+
# the lossy string view it was indistinguishable from an IRI and got compacted
|
|
132
|
+
# into something that read back as one; the term view is what tells them apart.
|
|
133
|
+
ds:literalTrap a ds:Probe ;
|
|
134
|
+
ds:name "literal trap" ;
|
|
135
|
+
ds:figmaLink "https://ds.canonical.com/not-an-iri" .
|
|
136
|
+
|
|
137
|
+
# blankHolder carries blank-node objects — store-local handles that re-mint on
|
|
138
|
+
# every load — so the read must inline them as records AND order those records
|
|
139
|
+
# by content rather than by the label that grouped them.
|
|
140
|
+
ds:blankHolder a ds:Probe ;
|
|
141
|
+
ds:name "blank holder" ;
|
|
142
|
+
ds:changeLog [ a ds:ChangeLogEntry ; ds:changeType "decision" ; ds:change "Split the button." ] ;
|
|
143
|
+
ds:changeLog [ a ds:ChangeLogEntry ; ds:changeType "revision" ; ds:change "Renamed the slot." ] .
|
|
144
|
+
|
|
145
|
+
# One blank node reached by TWO predicates — keyed by node alone, the second
|
|
146
|
+
# edge silently vanished.
|
|
147
|
+
ds:doubleLinked a ds:Probe ;
|
|
148
|
+
ds:name "double linked" ;
|
|
149
|
+
ds:changeLog [ a ds:ChangeLogEntry ; ds:changeType "decision" ] ;
|
|
150
|
+
ds:usageNote [ a ds:ChangeLogEntry ; ds:changeType "note" ] .
|
|
151
|
+
|
|
152
|
+
# An RDF 1.2 directional literal — dropped, it reads as a plain @ar literal.
|
|
153
|
+
ds:directional a ds:Probe ;
|
|
154
|
+
ds:name "\u0645\u0631\u062D\u0628\u0627"@ar--rtl .
|
|
155
|
+
|
|
156
|
+
# The roster hub also carries ONE edge under a different predicate, so a read
|
|
157
|
+
# can prove that a 22-deep neighbour does not evict its quieter sibling.
|
|
158
|
+
ds:rosterHub a ds:Probe ; ds:name "roster hub" .
|
|
159
|
+
ds:probe.quiet a ds:Probe ; ds:hasSubcomponent ds:rosterHub .
|
|
160
|
+
${ROSTER_MEMBERS}
|
|
161
|
+
`;
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* An OPT-IN overlay for the lookup-addressing suite, appended to
|
|
165
|
+
* {@link BLOCK_TTL} by the tests that need it and by nothing else — the block
|
|
166
|
+
* parity, ontology and GraphQL-engine suites assert over the base graph and
|
|
167
|
+
* must keep seeing exactly two components.
|
|
168
|
+
*
|
|
169
|
+
* It models the three shapes the addressing path gets wrong: two components
|
|
170
|
+
* sharing one `ds:name` (declared zeta-first so the store's enumeration order
|
|
171
|
+
* and IRI order DISAGREE — an unordered `LIMIT 1` picks the zeta one), and a
|
|
172
|
+
* component carrying no `ds:name` at all (reachable only by IRI, the way 131 of
|
|
173
|
+
* the 144 live code standards are).
|
|
174
|
+
*/
|
|
175
|
+
export const AMBIGUOUS_TTL = `
|
|
176
|
+
ds:apps a ds:Tier ; ds:name "apps" .
|
|
177
|
+
|
|
178
|
+
ds:zeta.chip a ds:Component ;
|
|
179
|
+
ds:name "Chip" ;
|
|
180
|
+
ds:tier ds:global ;
|
|
181
|
+
ds:summary "The zeta chip — declared first, sorts last." .
|
|
182
|
+
|
|
183
|
+
ds:alpha.chip a ds:Component ;
|
|
184
|
+
ds:name "Chip" ;
|
|
185
|
+
ds:tier ds:apps ;
|
|
186
|
+
ds:summary "The alpha chip — declared last, sorts first." .
|
|
187
|
+
|
|
188
|
+
ds:nameless.widget a ds:Component ;
|
|
189
|
+
ds:tier ds:global ;
|
|
190
|
+
ds:summary "Carries no ds:name; addressable only by IRI." .
|
|
112
191
|
`;
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import { tmpdir } from "node:os";
|
|
9
9
|
import { join } from "node:path";
|
|
10
|
-
import { $, gen, succeed, writeFile } from "@canonical/task";
|
|
10
|
+
import { $, gen, readFile, succeed, writeFile } from "@canonical/task";
|
|
11
11
|
import type { CapabilityModule } from "../../kernel/spec/types.js";
|
|
12
12
|
|
|
13
13
|
/** A synthetic module: noun `widget`, three verbs (one hidden). */
|
|
@@ -174,6 +174,50 @@ export const fixtureEffectsModule: CapabilityModule = {
|
|
|
174
174
|
],
|
|
175
175
|
};
|
|
176
176
|
|
|
177
|
+
/**
|
|
178
|
+
* A synthetic module for the HONEST-preview guards (PR7). `probe graft` READS a
|
|
179
|
+
* file before writing beside it, so a run whose source is missing dies on its
|
|
180
|
+
* first effect. The mock previewer answered that read with a placeholder string
|
|
181
|
+
* and reported a confident plan with exit 0 — the structural false positive
|
|
182
|
+
* PRA-104 indicts. Under `runPreview` the read is real, so `--dry-run` (and the
|
|
183
|
+
* MCP plan-first twin) fail exactly where and how the run would. Test-only (D8)
|
|
184
|
+
* — never listed in `capabilities/index.ts`.
|
|
185
|
+
*/
|
|
186
|
+
export const fixturePreviewModule: CapabilityModule = {
|
|
187
|
+
name: "fixture-preview",
|
|
188
|
+
verbs: [
|
|
189
|
+
{
|
|
190
|
+
path: ["probe", "graft"],
|
|
191
|
+
summary: "Copy a file's content into a sibling.",
|
|
192
|
+
params: [
|
|
193
|
+
{
|
|
194
|
+
kind: "string",
|
|
195
|
+
name: "source",
|
|
196
|
+
doc: "The file to read.",
|
|
197
|
+
positional: true,
|
|
198
|
+
required: true,
|
|
199
|
+
},
|
|
200
|
+
],
|
|
201
|
+
output: { formatters: passthroughFormatters },
|
|
202
|
+
capability: {
|
|
203
|
+
needsStore: false,
|
|
204
|
+
mutates: true,
|
|
205
|
+
mcp: {
|
|
206
|
+
expose: true,
|
|
207
|
+
annotations: { readOnlyHint: false, openWorldHint: false },
|
|
208
|
+
},
|
|
209
|
+
},
|
|
210
|
+
run: (p) =>
|
|
211
|
+
gen(function* () {
|
|
212
|
+
const { source } = p as { source: string };
|
|
213
|
+
const content = yield* $(readFile(source));
|
|
214
|
+
yield* $(writeFile(`${source}.grafted`, content));
|
|
215
|
+
return { grafted: source };
|
|
216
|
+
}),
|
|
217
|
+
},
|
|
218
|
+
],
|
|
219
|
+
};
|
|
220
|
+
|
|
177
221
|
/**
|
|
178
222
|
* A synthetic module that exercises every RENDER path of `emitReference` (D8 —
|
|
179
223
|
* never listed in `src/capabilities/index.ts`). Distinct from `fixtureModule`,
|
|
@@ -6,9 +6,12 @@
|
|
|
6
6
|
* `block` content-parity + `ontology`/`graph inspect` tests are protected
|
|
7
7
|
* against) byte-for-byte and EXTENDS it with the entities the other bundled
|
|
8
8
|
* read nouns (`standard`, `modifier`, `token`, `tier`) need, plus two more
|
|
9
|
-
* blocks that exercise tier-chain inheritance and channel visibility
|
|
10
|
-
* hand-written `block list`, Risk5).
|
|
11
|
-
*
|
|
9
|
+
* blocks that used to exercise tier-chain inheritance and channel visibility
|
|
10
|
+
* (PR3's hand-written `block list`, Risk5). Those two now serve the opposite
|
|
11
|
+
* purpose: L-OPEN-9 removed the filtering, so a tier-scoped and a
|
|
12
|
+
* channel-gated block are what prove the declared list hides NEITHER. Because
|
|
13
|
+
* `BLOCK_TTL` is reused verbatim, Button/Modal content can never drift between
|
|
14
|
+
* PR3's fixture and this one.
|
|
12
15
|
*
|
|
13
16
|
* Composed as one Turtle document, so ONE store answers every read noun:
|
|
14
17
|
* `block`/`ontology`/`graph inspect` were already provable on `BLOCK_TTL`
|
|
@@ -157,11 +160,97 @@ ds:prompt.configure a ds:Prompt ;
|
|
|
157
160
|
ds:prompt.scaffold-component a ds:Prompt ;
|
|
158
161
|
rdfs:label "scaffold-component" ;
|
|
159
162
|
rdfs:comment "Scaffold a new component and align it to the standards." ;
|
|
160
|
-
ds:promptBody "Scaffold the {{componentName}} component in {{framework}}. Use create_component with
|
|
163
|
+
ds:promptBody "Scaffold the {{componentName}} component in {{framework}}. Use create_component with framework {{framework}} and the component path, then review the generated files against the react/component standards via standard_lookup." ;
|
|
161
164
|
ds:promptArgument [ ds:argName "componentName" ; rdfs:comment "Component name/path (e.g. Button)." ; ds:argRequired true ] ;
|
|
162
165
|
ds:promptArgument [ ds:argName "framework" ; rdfs:comment "react | svelte | lit." ; ds:argRequired false ] .
|
|
163
166
|
`;
|
|
164
167
|
|
|
168
|
+
/** The `ds:Concept` section — long-form documentation entries the `concept`
|
|
169
|
+
* story reads. Mirrors the real design-system data shape (canonical/design-system#64):
|
|
170
|
+
* `ds:name`/`ds:summary`/`ds:tier` base, the Markdown body in `ds:content`
|
|
171
|
+
* (standard disclosure), `ds:knownEdgeCases` (detailed), and `ds:conceptType`
|
|
172
|
+
* → a named `ds:ConceptType` individual carrying its own `ds:name`. */
|
|
173
|
+
const CONCEPT_TTL = `
|
|
174
|
+
ds:Concept a owl:Class .
|
|
175
|
+
ds:ConceptType a owl:Class .
|
|
176
|
+
ds:content a owl:DatatypeProperty ; rdfs:domain ds:Concept ; rdfs:range xsd:string .
|
|
177
|
+
ds:knownEdgeCases a owl:DatatypeProperty ; rdfs:domain ds:Concept ; rdfs:range xsd:string .
|
|
178
|
+
ds:conceptType a owl:ObjectProperty ; rdfs:domain ds:Concept ; rdfs:range ds:ConceptType .
|
|
179
|
+
|
|
180
|
+
ds:concepttype.Explanation a ds:ConceptType ;
|
|
181
|
+
ds:name "Explanation" ;
|
|
182
|
+
ds:summary "Concept documentation that deepens understanding of a topic." .
|
|
183
|
+
|
|
184
|
+
ds:concepttype.How-to-guide a ds:ConceptType ;
|
|
185
|
+
ds:name "How-to guide" ;
|
|
186
|
+
ds:summary "Concept documentation that walks through solving a problem." .
|
|
187
|
+
|
|
188
|
+
ds:concept.Foundations-Grid a ds:Concept ;
|
|
189
|
+
ds:name "Foundations: Grid" ;
|
|
190
|
+
ds:summary "How the grid system underpins every layout." ;
|
|
191
|
+
ds:tier ds:global ;
|
|
192
|
+
ds:conceptType ds:concepttype.Explanation ;
|
|
193
|
+
ds:content "The grid is the shared spatial contract every block lays out against." ;
|
|
194
|
+
ds:knownEdgeCases "Nested grids inherit the outer gutter unless re-declared." .
|
|
195
|
+
|
|
196
|
+
ds:concept.Question-mark-vs-information-icon a ds:Concept ;
|
|
197
|
+
ds:name "Question mark vs information icon" ;
|
|
198
|
+
ds:summary "Deciding between the information icon and the question mark icon." ;
|
|
199
|
+
ds:tier ds:global ;
|
|
200
|
+
ds:conceptType ds:concepttype.How-to-guide ;
|
|
201
|
+
ds:content "The information icon offers context proactively; the question mark answers a question the user already has." ;
|
|
202
|
+
ds:knownEdgeCases "Icon interpretation depends on the user's prior conventions." .
|
|
203
|
+
`;
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* The implementation graph: two libraries whose `ds:implementsBlock` edges point
|
|
207
|
+
* at `BLOCK_TTL`'s own Button/Modal IRIs, so a test can prove the cross-pack
|
|
208
|
+
* join (an implementation collected from source resolving to a block declared by
|
|
209
|
+
* the design system) rather than just the shape of a row. Button is implemented
|
|
210
|
+
* TWICE, on two platforms — the case `--platform` has to separate.
|
|
211
|
+
*/
|
|
212
|
+
const IMPLEMENTATION_TTL = `
|
|
213
|
+
ds:ImplementationLibrary a owl:Class .
|
|
214
|
+
ds:ImplementationObject a owl:Class .
|
|
215
|
+
ds:hasImplementation a owl:ObjectProperty ; rdfs:domain ds:ImplementationLibrary ; rdfs:range ds:ImplementationObject .
|
|
216
|
+
ds:implementsBlock a owl:ObjectProperty ; rdfs:domain ds:ImplementationObject ; rdfs:range ds:UIBlock .
|
|
217
|
+
ds:libraryName a owl:DatatypeProperty ; rdfs:domain ds:ImplementationLibrary ; rdfs:range xsd:string .
|
|
218
|
+
ds:platform a owl:DatatypeProperty ; rdfs:domain ds:ImplementationLibrary ; rdfs:range xsd:string .
|
|
219
|
+
ds:libraryTier a owl:ObjectProperty ; rdfs:domain ds:ImplementationLibrary ; rdfs:range ds:Tier .
|
|
220
|
+
ds:implementationCount a owl:DatatypeProperty ; rdfs:domain ds:ImplementationLibrary ; rdfs:range xsd:integer .
|
|
221
|
+
ds:headLink a owl:DatatypeProperty ; rdfs:domain ds:ImplementationObject ; rdfs:range xsd:string .
|
|
222
|
+
ds:versionedLink a owl:DatatypeProperty ; rdfs:domain ds:ImplementationObject ; rdfs:range xsd:string .
|
|
223
|
+
|
|
224
|
+
ds:implementation.library.react-ds-global a ds:ImplementationLibrary ;
|
|
225
|
+
ds:libraryName "@canonical/react-ds-global" ;
|
|
226
|
+
ds:platform "react" ;
|
|
227
|
+
ds:libraryTier ds:global ;
|
|
228
|
+
ds:version "0.34.0" ;
|
|
229
|
+
ds:implementationCount 2 ;
|
|
230
|
+
ds:hasImplementation ds:implementation.react-ds-global.button,
|
|
231
|
+
ds:implementation.react-ds-global.modal .
|
|
232
|
+
|
|
233
|
+
ds:implementation.react-ds-global.button a ds:ImplementationObject ;
|
|
234
|
+
ds:implementsBlock ds:button ;
|
|
235
|
+
ds:headLink "https://example.test/react/Button.tsx" .
|
|
236
|
+
|
|
237
|
+
ds:implementation.react-ds-global.modal a ds:ImplementationObject ;
|
|
238
|
+
ds:implementsBlock ds:modal ;
|
|
239
|
+
ds:headLink "https://example.test/react/Modal.tsx" .
|
|
240
|
+
|
|
241
|
+
ds:implementation.library.svelte-ds-global a ds:ImplementationLibrary ;
|
|
242
|
+
ds:libraryName "@canonical/svelte-ds-global" ;
|
|
243
|
+
ds:platform "svelte" ;
|
|
244
|
+
ds:libraryTier ds:global ;
|
|
245
|
+
ds:version "0.34.0" ;
|
|
246
|
+
ds:implementationCount 1 ;
|
|
247
|
+
ds:hasImplementation ds:implementation.svelte-ds-global.button .
|
|
248
|
+
|
|
249
|
+
ds:implementation.svelte-ds-global.button a ds:ImplementationObject ;
|
|
250
|
+
ds:implementsBlock ds:button ;
|
|
251
|
+
ds:headLink "https://example.test/svelte/Button.svelte" .
|
|
252
|
+
`;
|
|
253
|
+
|
|
165
254
|
/** The prefixes the canonical store is built and queried with. */
|
|
166
255
|
export const CANONICAL_PREFIXES: Readonly<Record<string, string>> = {
|
|
167
256
|
...BLOCK_PREFIXES,
|
|
@@ -169,7 +258,7 @@ export const CANONICAL_PREFIXES: Readonly<Record<string, string>> = {
|
|
|
169
258
|
};
|
|
170
259
|
|
|
171
260
|
/** The full canonical Turtle: PR3's `BLOCK_TTL` verbatim, plus the sections above. */
|
|
172
|
-
export const CANONICAL_TTL = `${BLOCK_TTL}\n${DS_EXTRA_TTL}\n${CS_TTL}\n${PROMPT_TTL}`;
|
|
261
|
+
export const CANONICAL_TTL = `${BLOCK_TTL}\n${DS_EXTRA_TTL}\n${CS_TTL}\n${PROMPT_TTL}\n${CONCEPT_TTL}\n${IMPLEMENTATION_TTL}`;
|
|
173
262
|
|
|
174
263
|
/** Default viewing config: no tier set, `normal` channel — drops the beta-only block. */
|
|
175
264
|
export const CANONICAL_CONFIG = { channel: "normal" as const };
|
|
@@ -19,17 +19,18 @@
|
|
|
19
19
|
* 2. Two+ domain classes (`ds:Component` and `ds:Pattern`) so a read that keys
|
|
20
20
|
* off the primary domain type is exercised across more than one class.
|
|
21
21
|
* 3. An UNTIERED block (`ds:orphanWidget` — a `ds:Component` with a `ds:name`
|
|
22
|
-
* but NO `ds:tier`). `block list`'s SELECT inner-
|
|
23
|
-
*
|
|
24
|
-
* `graph query`
|
|
22
|
+
* but NO `ds:tier`). `block list`'s SELECT once inner-joined `?c ds:tier ?t`,
|
|
23
|
+
* silently dropping an untiered block from every listing (A2) even though
|
|
24
|
+
* `graph query` found it; the declared story's OPTIONAL tier join is what
|
|
25
|
+
* the fixture now holds honest.
|
|
25
26
|
* 4. A multilingual `rdfs:label "Button"@en, "Bouton"@fr` — two same-predicate
|
|
26
27
|
* labels whose winner in the single-valued index is store-order-arbitrary
|
|
27
28
|
* (A7), a shape a bare-string fixture can never produce.
|
|
28
29
|
*
|
|
29
30
|
* The vocabulary is the live `ds:` design-system namespace (same as
|
|
30
31
|
* `blockGraph.ts`/`canonical.ts`), so `block list`, `ontology list/show`, and
|
|
31
|
-
* `graph query` all run against real terms — the
|
|
32
|
-
*
|
|
32
|
+
* `graph query` all run against real terms — the `block` story's declared SELECT
|
|
33
|
+
* names `ds:Component`/`ds:Pattern`/`ds:name`/`ds:tier` directly.
|
|
33
34
|
*
|
|
34
35
|
* Stable anchors this fixture guarantees (pinned by the journey suite):
|
|
35
36
|
* - Exactly 4 blocks in the graph: Button (`ds:Component`, global), Card
|
|
@@ -170,7 +171,7 @@ ex:beta ex:name "Beta" .
|
|
|
170
171
|
/**
|
|
171
172
|
* A malformed Turtle source — a subject/predicate with no object — drives the
|
|
172
173
|
* `sources update` data-error classification path (a NAMED `CONFIG_ERROR`, not
|
|
173
|
-
* an INTERNAL "
|
|
174
|
+
* an INTERNAL "report this issue").
|
|
174
175
|
*/
|
|
175
176
|
export const MALFORMED_TTL = `@prefix ex: <https://ex.test/#> .
|
|
176
177
|
ex:One a ex:Widget .
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* A realistic multi-typed OWL / Protégé-export fixture graph.
|
|
3
3
|
*
|
|
4
|
-
* The
|
|
5
|
-
* domain class, every block tiered, every
|
|
6
|
-
*
|
|
7
|
-
* deliberately carries the shapes that only
|
|
4
|
+
* The other fixture graphs (`canonical.ts`, `defaultPack.ts` — Button/Card/
|
|
5
|
+
* Dialog, each typed by exactly ONE domain class, every block tiered, every
|
|
6
|
+
* label untagged) are TOYS: they never exercise the counters/classifiers the way
|
|
7
|
+
* a real vocabulary does. This graph deliberately carries the shapes that only
|
|
8
|
+
* bite real packs (audit backlog A):
|
|
8
9
|
*
|
|
9
10
|
* - Protégé DUAL-typing: an individual asserted as its domain class AND
|
|
10
11
|
* `owl:NamedIndividual` — the multiset that made `entityTotal` run ~2× (A1).
|
|
11
12
|
* - A MULTI-DOMAIN individual (`ex:toggle`: two domain classes) — so the
|
|
12
13
|
* primary-type tie-break must be deterministic, not store-order (A3).
|
|
13
14
|
* - An UNTIERED block (`ds:datePicker`: a `ds:Component` with no `ds:tier`) —
|
|
14
|
-
* which `block list
|
|
15
|
+
* which `block list` must surface, not hide (A2; the tier join is OPTIONAL,
|
|
16
|
+
* and since L-OPEN-9 there is no tier filter at all).
|
|
15
17
|
* - A blank-node `rdf:type` (`ex:field`'s anonymous SHACL-style class) — which
|
|
16
18
|
* must NOT become a `type:"_:b0"` primary key (A6).
|
|
17
19
|
* - An OWL-PUNNED subject (`ex:Slider`: a class that is ALSO a metaclass
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Blank the @canonical/* dependency ranges inside a scaffolded application's
|
|
3
|
+
* `my-app/package.json` — identically on every snapshot — before a byte
|
|
4
|
+
* comparison. The application generator resolves its range through each
|
|
5
|
+
* producer's OWN `npm view` call (no timeout, no shared cache), so an
|
|
6
|
+
* asymmetric registry outcome (one producer reaches npm and another does
|
|
7
|
+
* not, or a @canonical/* release lands between the calls) would turn
|
|
8
|
+
* `^0.34.0` vs `^0.33.0` across all 11 ranges into a red that says nothing
|
|
9
|
+
* about the code under test. The networked cases prove the TEMPLATE surface;
|
|
10
|
+
* range truth belongs to the offline cells, where the outcome is forced
|
|
11
|
+
* (`capabilities/create/shippedCreate.subprocess.test.ts`).
|
|
12
|
+
*
|
|
13
|
+
* The regex preserves the dependency KEY (`$1`), so a key-set or
|
|
14
|
+
* non-@canonical divergence still fails; only the range value collapses.
|
|
15
|
+
* Deliberately import-free — a pure string transform no module-graph guard
|
|
16
|
+
* can ever see.
|
|
17
|
+
*
|
|
18
|
+
* @param tree - A tree snapshot (relative path → contents).
|
|
19
|
+
* @param manifestPath - The scaffolded manifest's path within the tree.
|
|
20
|
+
* @returns A NEW map with the manifest's @canonical/* ranges blanked; the
|
|
21
|
+
* input is untouched. A tree without the manifest comes back copied as-is.
|
|
22
|
+
*/
|
|
23
|
+
export function blankCanonicalRanges(
|
|
24
|
+
tree: ReadonlyMap<string, string>,
|
|
25
|
+
manifestPath = "my-app/package.json",
|
|
26
|
+
): Map<string, string> {
|
|
27
|
+
const out = new Map(tree);
|
|
28
|
+
const manifest = out.get(manifestPath);
|
|
29
|
+
if (manifest !== undefined) {
|
|
30
|
+
out.set(
|
|
31
|
+
manifestPath,
|
|
32
|
+
manifest.replaceAll(/("@canonical\/[^"]+": )"[^"]+"/g, '$1"<range>"'),
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
return out;
|
|
36
|
+
}
|