@canonical/pragma-cli 0.34.0 → 0.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +153 -30
- package/bundled-skills/add-standard/SKILL.md +338 -0
- package/bundled-skills/adoption-a1-styles/SKILL.md +269 -0
- package/bundled-skills/adoption-a2-components/SKILL.md +291 -0
- package/bundled-skills/adoption-a3-forms/SKILL.md +260 -0
- package/bundled-skills/anatomy-author/ANATOMY_DSL_SPEC.md +406 -0
- package/bundled-skills/anatomy-author/SKILL.md +1226 -0
- package/bundled-skills/design-auditor/SKILL.md +455 -0
- package/bundled-skills/implement-component/SKILL.md +333 -0
- package/bundled-skills/specify-component/SKILL.md +331 -0
- package/bundled-skills/specify-pattern/SKILL.md +292 -0
- package/dist/.build-ok +0 -0
- package/dist/package.json +84 -0
- package/dist/pragma.conf.js +1016 -0
- package/dist/pragma.conf.js.map +1 -0
- package/dist/src/bin.js +356 -0
- package/dist/src/bin.js.map +1 -0
- package/dist/src/capabilities/capabilities/capabilities.render.js +70 -0
- package/dist/src/capabilities/capabilities/capabilities.render.js.map +1 -0
- package/dist/src/capabilities/capabilities/capabilities.verb.js +59 -0
- package/dist/src/capabilities/capabilities/capabilities.verb.js.map +1 -0
- package/dist/src/capabilities/capabilities/catalog.js +130 -0
- package/dist/src/capabilities/capabilities/catalog.js.map +1 -0
- package/dist/src/capabilities/capabilities/hints.js +195 -0
- package/dist/src/capabilities/capabilities/hints.js.map +1 -0
- package/dist/src/capabilities/capabilities/index.js +11 -0
- package/dist/src/capabilities/capabilities/index.js.map +1 -0
- package/dist/src/capabilities/capabilities/types.js +11 -0
- package/dist/src/capabilities/capabilities/types.js.map +1 -0
- package/dist/src/capabilities/colophon/collectColophon.js +83 -0
- package/dist/src/capabilities/colophon/collectColophon.js.map +1 -0
- package/dist/src/capabilities/colophon/colophon.render.js +59 -0
- package/dist/src/capabilities/colophon/colophon.render.js.map +1 -0
- package/dist/src/capabilities/colophon/colophon.verb.js +43 -0
- package/dist/src/capabilities/colophon/colophon.verb.js.map +1 -0
- package/dist/src/capabilities/colophon/index.js +5 -0
- package/dist/src/capabilities/colophon/index.js.map +1 -0
- package/dist/src/capabilities/colophon/markdownTerminal.js +90 -0
- package/dist/src/capabilities/colophon/markdownTerminal.js.map +1 -0
- package/dist/src/capabilities/colophon/types.js +10 -0
- package/dist/src/capabilities/colophon/types.js.map +1 -0
- package/dist/src/capabilities/config/collectConfigShow.js +59 -0
- package/dist/src/capabilities/config/collectConfigShow.js.map +1 -0
- package/dist/src/capabilities/config/field.render.js +22 -0
- package/dist/src/capabilities/config/field.render.js.map +1 -0
- package/dist/src/capabilities/config/fields.js +46 -0
- package/dist/src/capabilities/config/fields.js.map +1 -0
- package/dist/src/capabilities/config/get.verb.js +61 -0
- package/dist/src/capabilities/config/get.verb.js.map +1 -0
- package/dist/src/capabilities/config/index.js +5 -0
- package/dist/src/capabilities/config/index.js.map +1 -0
- package/dist/src/capabilities/config/runField.js +59 -0
- package/dist/src/capabilities/config/runField.js.map +1 -0
- package/dist/src/capabilities/config/runGet.js +28 -0
- package/dist/src/capabilities/config/runGet.js.map +1 -0
- package/dist/src/capabilities/config/runSet.js +53 -0
- package/dist/src/capabilities/config/runSet.js.map +1 -0
- package/dist/src/capabilities/config/set.verb.js +66 -0
- package/dist/src/capabilities/config/set.verb.js.map +1 -0
- package/dist/src/capabilities/config/show.render.js +84 -0
- package/dist/src/capabilities/config/show.render.js.map +1 -0
- package/dist/src/capabilities/config/show.verb.js +44 -0
- package/dist/src/capabilities/config/show.verb.js.map +1 -0
- package/dist/src/capabilities/config/types.js +5 -0
- package/dist/src/capabilities/config/types.js.map +1 -0
- package/dist/src/capabilities/config/unset.verb.js +49 -0
- package/dist/src/capabilities/config/unset.verb.js.map +1 -0
- package/dist/src/capabilities/create/cliProjection.js +195 -0
- package/dist/src/capabilities/create/cliProjection.js.map +1 -0
- package/dist/src/capabilities/create/constants.js +47 -0
- package/dist/src/capabilities/create/constants.js.map +1 -0
- package/dist/src/capabilities/create/create.render.js +100 -0
- package/dist/src/capabilities/create/create.render.js.map +1 -0
- package/dist/src/capabilities/create/create.verb.js +438 -0
- package/dist/src/capabilities/create/create.verb.js.map +1 -0
- package/dist/src/capabilities/create/createHelp.js +47 -0
- package/dist/src/capabilities/create/createHelp.js.map +1 -0
- package/dist/src/capabilities/create/createSurface.generated.js +394 -0
- package/dist/src/capabilities/create/createSurface.generated.js.map +1 -0
- package/dist/src/capabilities/create/generatorToVerbSpec.js +106 -0
- package/dist/src/capabilities/create/generatorToVerbSpec.js.map +1 -0
- package/dist/src/capabilities/create/index.js +18 -0
- package/dist/src/capabilities/create/index.js.map +1 -0
- package/dist/src/capabilities/create/messages.js +16 -0
- package/dist/src/capabilities/create/messages.js.map +1 -0
- package/dist/src/capabilities/create/mount.js +294 -0
- package/dist/src/capabilities/create/mount.js.map +1 -0
- package/dist/src/capabilities/create/pathJail.js +65 -0
- package/dist/src/capabilities/create/pathJail.js.map +1 -0
- package/dist/src/capabilities/create/pickGenerator.js +53 -0
- package/dist/src/capabilities/create/pickGenerator.js.map +1 -0
- package/dist/src/capabilities/create/types.js +2 -0
- package/dist/src/capabilities/create/types.js.map +1 -0
- package/dist/src/capabilities/distribution.js +40 -0
- package/dist/src/capabilities/distribution.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkKeStore.js +40 -0
- package/dist/src/capabilities/doctor/checks/checkKeStore.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkNodeVersion.js +21 -0
- package/dist/src/capabilities/doctor/checks/checkNodeVersion.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkPackageRefs.js +148 -0
- package/dist/src/capabilities/doctor/checks/checkPackageRefs.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkPragmaVersion.js +19 -0
- package/dist/src/capabilities/doctor/checks/checkPragmaVersion.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkShellCompletions.js +199 -0
- package/dist/src/capabilities/doctor/checks/checkShellCompletions.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/harnessInventory.js +195 -0
- package/dist/src/capabilities/doctor/checks/harnessInventory.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/index.js +27 -0
- package/dist/src/capabilities/doctor/checks/index.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/mcpCommand.js +57 -0
- package/dist/src/capabilities/doctor/checks/mcpCommand.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/targetHealth.js +349 -0
- package/dist/src/capabilities/doctor/checks/targetHealth.js.map +1 -0
- package/dist/src/capabilities/doctor/doctor.render.js +164 -0
- package/dist/src/capabilities/doctor/doctor.render.js.map +1 -0
- package/dist/src/capabilities/doctor/doctor.verb.js +49 -0
- package/dist/src/capabilities/doctor/doctor.verb.js.map +1 -0
- package/dist/src/capabilities/doctor/index.js +5 -0
- package/dist/src/capabilities/doctor/index.js.map +1 -0
- package/dist/src/capabilities/doctor/runChecks.js +86 -0
- package/dist/src/capabilities/doctor/runChecks.js.map +1 -0
- package/dist/src/capabilities/doctor/types.js +5 -0
- package/dist/src/capabilities/doctor/types.js.map +1 -0
- package/dist/src/capabilities/graph/index.js +19 -0
- package/dist/src/capabilities/graph/index.js.map +1 -0
- package/dist/src/capabilities/graph/inspect.render.js +76 -0
- package/dist/src/capabilities/graph/inspect.render.js.map +1 -0
- package/dist/src/capabilities/graph/inspect.verb.js +53 -0
- package/dist/src/capabilities/graph/inspect.verb.js.map +1 -0
- package/dist/src/capabilities/graph/query.render.js +73 -0
- package/dist/src/capabilities/graph/query.render.js.map +1 -0
- package/dist/src/capabilities/graph/query.verb.js +49 -0
- package/dist/src/capabilities/graph/query.verb.js.map +1 -0
- package/dist/src/capabilities/graph/runQuery.js +41 -0
- package/dist/src/capabilities/graph/runQuery.js.map +1 -0
- package/dist/src/capabilities/index.js +56 -0
- package/dist/src/capabilities/index.js.map +1 -0
- package/dist/src/capabilities/info/collectInfo.js +72 -0
- package/dist/src/capabilities/info/collectInfo.js.map +1 -0
- package/dist/src/capabilities/info/index.js +5 -0
- package/dist/src/capabilities/info/index.js.map +1 -0
- package/dist/src/capabilities/info/info.render.js +57 -0
- package/dist/src/capabilities/info/info.render.js.map +1 -0
- package/dist/src/capabilities/info/info.verb.js +42 -0
- package/dist/src/capabilities/info/info.verb.js.map +1 -0
- package/dist/src/capabilities/info/types.js +5 -0
- package/dist/src/capabilities/info/types.js.map +1 -0
- package/dist/src/capabilities/meta/complete.verb.js +43 -0
- package/dist/src/capabilities/meta/complete.verb.js.map +1 -0
- package/dist/src/capabilities/meta/index.js +13 -0
- package/dist/src/capabilities/meta/index.js.map +1 -0
- package/dist/src/capabilities/meta/mcp.verb.js +34 -0
- package/dist/src/capabilities/meta/mcp.verb.js.map +1 -0
- package/dist/src/capabilities/ontology/index.js +21 -0
- package/dist/src/capabilities/ontology/index.js.map +1 -0
- package/dist/src/capabilities/ontology/queries.js +123 -0
- package/dist/src/capabilities/ontology/queries.js.map +1 -0
- package/dist/src/capabilities/ontology/render.js +66 -0
- package/dist/src/capabilities/ontology/render.js.map +1 -0
- package/dist/src/capabilities/ontology/verbs.js +181 -0
- package/dist/src/capabilities/ontology/verbs.js.map +1 -0
- package/dist/src/capabilities/prompt/index.js +16 -0
- package/dist/src/capabilities/prompt/index.js.map +1 -0
- package/dist/src/capabilities/prompt/prompt.render.js +78 -0
- package/dist/src/capabilities/prompt/prompt.render.js.map +1 -0
- package/dist/src/capabilities/prompt/types.js +10 -0
- package/dist/src/capabilities/prompt/types.js.map +1 -0
- package/dist/src/capabilities/prompt/verbs.js +93 -0
- package/dist/src/capabilities/prompt/verbs.js.map +1 -0
- package/dist/src/capabilities/resources/index.js +10 -0
- package/dist/src/capabilities/resources/index.js.map +1 -0
- package/dist/src/capabilities/resources/provider.js +423 -0
- package/dist/src/capabilities/resources/provider.js.map +1 -0
- package/dist/src/capabilities/setup/buildPlan.js +172 -0
- package/dist/src/capabilities/setup/buildPlan.js.map +1 -0
- package/dist/src/capabilities/setup/index.js +5 -0
- package/dist/src/capabilities/setup/index.js.map +1 -0
- package/dist/src/capabilities/setup/mode.js +53 -0
- package/dist/src/capabilities/setup/mode.js.map +1 -0
- package/dist/src/capabilities/setup/operations/index.js +39 -0
- package/dist/src/capabilities/setup/operations/index.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupCompletions.js +160 -0
- package/dist/src/capabilities/setup/operations/setupCompletions.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupConfig.js +101 -0
- package/dist/src/capabilities/setup/operations/setupConfig.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupGenerator.js +390 -0
- package/dist/src/capabilities/setup/operations/setupGenerator.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupLsp.js +329 -0
- package/dist/src/capabilities/setup/operations/setupLsp.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupMcp.js +253 -0
- package/dist/src/capabilities/setup/operations/setupMcp.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupSkills.js +594 -0
- package/dist/src/capabilities/setup/operations/setupSkills.js.map +1 -0
- package/dist/src/capabilities/setup/plan.js +128 -0
- package/dist/src/capabilities/setup/plan.js.map +1 -0
- package/dist/src/capabilities/setup/plan.render.js +271 -0
- package/dist/src/capabilities/setup/plan.render.js.map +1 -0
- package/dist/src/capabilities/setup/setup.render.js +54 -0
- package/dist/src/capabilities/setup/setup.render.js.map +1 -0
- package/dist/src/capabilities/setup/setup.verb.js +387 -0
- package/dist/src/capabilities/setup/setup.verb.js.map +1 -0
- package/dist/src/capabilities/setup/shell.js +196 -0
- package/dist/src/capabilities/setup/shell.js.map +1 -0
- package/dist/src/capabilities/setup/targets.js +328 -0
- package/dist/src/capabilities/setup/targets.js.map +1 -0
- package/dist/src/capabilities/setup/types.js +5 -0
- package/dist/src/capabilities/setup/types.js.map +1 -0
- package/dist/src/capabilities/shared/assertExecOk.js +137 -0
- package/dist/src/capabilities/shared/assertExecOk.js.map +1 -0
- package/dist/src/capabilities/shared/index.js +27 -0
- package/dist/src/capabilities/shared/index.js.map +1 -0
- package/dist/src/capabilities/shared/packageManager.js +349 -0
- package/dist/src/capabilities/shared/packageManager.js.map +1 -0
- package/dist/src/capabilities/shared/registry.js +55 -0
- package/dist/src/capabilities/shared/registry.js.map +1 -0
- package/dist/src/capabilities/skill/discover.js +281 -0
- package/dist/src/capabilities/skill/discover.js.map +1 -0
- package/dist/src/capabilities/skill/index.js +10 -0
- package/dist/src/capabilities/skill/index.js.map +1 -0
- package/dist/src/capabilities/skill/render.js +49 -0
- package/dist/src/capabilities/skill/render.js.map +1 -0
- package/dist/src/capabilities/skill/verbs.js +83 -0
- package/dist/src/capabilities/skill/verbs.js.map +1 -0
- package/dist/src/capabilities/sources/collectStatus.js +103 -0
- package/dist/src/capabilities/sources/collectStatus.js.map +1 -0
- package/dist/src/capabilities/sources/index.js +13 -0
- package/dist/src/capabilities/sources/index.js.map +1 -0
- package/dist/src/capabilities/sources/installSkills.js +309 -0
- package/dist/src/capabilities/sources/installSkills.js.map +1 -0
- package/dist/src/capabilities/sources/runUpdate.js +460 -0
- package/dist/src/capabilities/sources/runUpdate.js.map +1 -0
- package/dist/src/capabilities/sources/status.render.js +64 -0
- package/dist/src/capabilities/sources/status.render.js.map +1 -0
- package/dist/src/capabilities/sources/status.verb.js +40 -0
- package/dist/src/capabilities/sources/status.verb.js.map +1 -0
- package/dist/src/capabilities/sources/types.js +6 -0
- package/dist/src/capabilities/sources/types.js.map +1 -0
- package/dist/src/capabilities/sources/update.render.js +34 -0
- package/dist/src/capabilities/sources/update.render.js.map +1 -0
- package/dist/src/capabilities/sources/update.verb.js +55 -0
- package/dist/src/capabilities/sources/update.verb.js.map +1 -0
- package/dist/src/capabilities/upgrade/index.js +5 -0
- package/dist/src/capabilities/upgrade/index.js.map +1 -0
- package/dist/src/capabilities/upgrade/runUpgrade.js +135 -0
- package/dist/src/capabilities/upgrade/runUpgrade.js.map +1 -0
- package/dist/src/capabilities/upgrade/types.js +5 -0
- package/dist/src/capabilities/upgrade/types.js.map +1 -0
- package/dist/src/capabilities/upgrade/upgrade.render.js +52 -0
- package/dist/src/capabilities/upgrade/upgrade.render.js.map +1 -0
- package/dist/src/capabilities/upgrade/upgrade.verb.js +52 -0
- package/dist/src/capabilities/upgrade/upgrade.verb.js.map +1 -0
- package/dist/src/capabilities/version/index.js +10 -0
- package/dist/src/capabilities/version/index.js.map +1 -0
- package/dist/src/capabilities/version/version.verb.js +36 -0
- package/dist/src/capabilities/version/version.verb.js.map +1 -0
- package/dist/src/constants.js +87 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/index.js +12 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/kernel/completion/complete.js +66 -0
- package/dist/src/kernel/completion/complete.js.map +1 -0
- package/dist/src/kernel/completion/emitScripts.js +92 -0
- package/dist/src/kernel/completion/emitScripts.js.map +1 -0
- package/dist/src/kernel/completion/entitySource.js +285 -0
- package/dist/src/kernel/completion/entitySource.js.map +1 -0
- package/dist/src/kernel/completion/index.js +14 -0
- package/dist/src/kernel/completion/index.js.map +1 -0
- package/dist/src/kernel/completion/model.js +301 -0
- package/dist/src/kernel/completion/model.js.map +1 -0
- package/dist/src/kernel/completion/parse.js +253 -0
- package/dist/src/kernel/completion/parse.js.map +1 -0
- package/dist/src/kernel/completion/rank.js +101 -0
- package/dist/src/kernel/completion/rank.js.map +1 -0
- package/dist/src/kernel/completion/resolve.js +100 -0
- package/dist/src/kernel/completion/resolve.js.map +1 -0
- package/dist/src/kernel/completion/templates/bash.js +209 -0
- package/dist/src/kernel/completion/templates/bash.js.map +1 -0
- package/dist/src/kernel/completion/templates/fish.js +214 -0
- package/dist/src/kernel/completion/templates/fish.js.map +1 -0
- package/dist/src/kernel/completion/templates/index.js +23 -0
- package/dist/src/kernel/completion/templates/index.js.map +1 -0
- package/dist/src/kernel/completion/templates/shared.js +98 -0
- package/dist/src/kernel/completion/templates/shared.js.map +1 -0
- package/dist/src/kernel/completion/templates/zsh.js +201 -0
- package/dist/src/kernel/completion/templates/zsh.js.map +1 -0
- package/dist/src/kernel/completion/types.js +13 -0
- package/dist/src/kernel/completion/types.js.map +1 -0
- package/dist/src/kernel/config/defaults.js +17 -0
- package/dist/src/kernel/config/defaults.js.map +1 -0
- package/dist/src/kernel/config/evaluateProjectConfig.js +126 -0
- package/dist/src/kernel/config/evaluateProjectConfig.js.map +1 -0
- package/dist/src/kernel/config/findProjectConfig.js +43 -0
- package/dist/src/kernel/config/findProjectConfig.js.map +1 -0
- package/dist/src/kernel/config/firstRun.js +34 -0
- package/dist/src/kernel/config/firstRun.js.map +1 -0
- package/dist/src/kernel/config/globalConfig.js +79 -0
- package/dist/src/kernel/config/globalConfig.js.map +1 -0
- package/dist/src/kernel/config/index.js +16 -0
- package/dist/src/kernel/config/index.js.map +1 -0
- package/dist/src/kernel/config/paths.js +35 -0
- package/dist/src/kernel/config/paths.js.map +1 -0
- package/dist/src/kernel/config/readConfig.js +78 -0
- package/dist/src/kernel/config/readConfig.js.map +1 -0
- package/dist/src/kernel/config/schema.js +130 -0
- package/dist/src/kernel/config/schema.js.map +1 -0
- package/dist/src/kernel/config/types.js +19 -0
- package/dist/src/kernel/config/types.js.map +1 -0
- package/dist/src/kernel/config/writeConfigField.js +59 -0
- package/dist/src/kernel/config/writeConfigField.js.map +1 -0
- package/dist/src/kernel/copy.js +43 -0
- package/dist/src/kernel/copy.js.map +1 -0
- package/dist/src/kernel/error/PragmaError.js +149 -0
- package/dist/src/kernel/error/PragmaError.js.map +1 -0
- package/dist/src/kernel/error/constants.js +40 -0
- package/dist/src/kernel/error/constants.js.map +1 -0
- package/dist/src/kernel/error/fromTaskError.js +96 -0
- package/dist/src/kernel/error/fromTaskError.js.map +1 -0
- package/dist/src/kernel/error/index.js +13 -0
- package/dist/src/kernel/error/index.js.map +1 -0
- package/dist/src/kernel/error/recovery.js +52 -0
- package/dist/src/kernel/error/recovery.js.map +1 -0
- package/dist/src/kernel/error/renderError.js +115 -0
- package/dist/src/kernel/error/renderError.js.map +1 -0
- package/dist/src/kernel/error/serialize.js +25 -0
- package/dist/src/kernel/error/serialize.js.map +1 -0
- package/dist/src/kernel/error/types.js +9 -0
- package/dist/src/kernel/error/types.js.map +1 -0
- package/dist/src/kernel/index.js +34 -0
- package/dist/src/kernel/index.js.map +1 -0
- package/dist/src/kernel/interactivity.js +68 -0
- package/dist/src/kernel/interactivity.js.map +1 -0
- package/dist/src/kernel/packs/collect.js +187 -0
- package/dist/src/kernel/packs/collect.js.map +1 -0
- package/dist/src/kernel/packs/compile.js +304 -0
- package/dist/src/kernel/packs/compile.js.map +1 -0
- package/dist/src/kernel/packs/disclosure.js +76 -0
- package/dist/src/kernel/packs/disclosure.js.map +1 -0
- package/dist/src/kernel/packs/glob.js +38 -0
- package/dist/src/kernel/packs/glob.js.map +1 -0
- package/dist/src/kernel/packs/graphql/buildLookupDocument.js +258 -0
- package/dist/src/kernel/packs/graphql/buildLookupDocument.js.map +1 -0
- package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js +157 -0
- package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js.map +1 -0
- package/dist/src/kernel/packs/graphql/index.js +20 -0
- package/dist/src/kernel/packs/graphql/index.js.map +1 -0
- package/dist/src/kernel/packs/graphql/nameMap.js +63 -0
- package/dist/src/kernel/packs/graphql/nameMap.js.map +1 -0
- package/dist/src/kernel/packs/index.js +34 -0
- package/dist/src/kernel/packs/index.js.map +1 -0
- package/dist/src/kernel/packs/iri.js +110 -0
- package/dist/src/kernel/packs/iri.js.map +1 -0
- package/dist/src/kernel/packs/renderPack.js +129 -0
- package/dist/src/kernel/packs/renderPack.js.map +1 -0
- package/dist/src/kernel/packs/resolveEntity.js +274 -0
- package/dist/src/kernel/packs/resolveEntity.js.map +1 -0
- package/dist/src/kernel/packs/runBodies.js +140 -0
- package/dist/src/kernel/packs/runBodies.js.map +1 -0
- package/dist/src/kernel/packs/sample.js +56 -0
- package/dist/src/kernel/packs/sample.js.map +1 -0
- package/dist/src/kernel/packs/schema.js +421 -0
- package/dist/src/kernel/packs/schema.js.map +1 -0
- package/dist/src/kernel/packs/sparql/applyFilters.js +167 -0
- package/dist/src/kernel/packs/sparql/applyFilters.js.map +1 -0
- package/dist/src/kernel/packs/sparql/applySearch.js +25 -0
- package/dist/src/kernel/packs/sparql/applySearch.js.map +1 -0
- package/dist/src/kernel/packs/sparql/buildLookupQuery.js +480 -0
- package/dist/src/kernel/packs/sparql/buildLookupQuery.js.map +1 -0
- package/dist/src/kernel/packs/sparql/escape.js +21 -0
- package/dist/src/kernel/packs/sparql/escape.js.map +1 -0
- package/dist/src/kernel/packs/sparql/index.js +31 -0
- package/dist/src/kernel/packs/sparql/index.js.map +1 -0
- package/dist/src/kernel/packs/sparql/runSelect.js +101 -0
- package/dist/src/kernel/packs/sparql/runSelect.js.map +1 -0
- package/dist/src/kernel/packs/types.js +30 -0
- package/dist/src/kernel/packs/types.js.map +1 -0
- package/dist/src/kernel/packs/uniqueness.js +30 -0
- package/dist/src/kernel/packs/uniqueness.js.map +1 -0
- package/dist/src/kernel/project/cli/buildProgram.js +263 -0
- package/dist/src/kernel/project/cli/buildProgram.js.map +1 -0
- package/dist/src/kernel/project/cli/constants.js +27 -0
- package/dist/src/kernel/project/cli/constants.js.map +1 -0
- package/dist/src/kernel/project/cli/dispatch.js +420 -0
- package/dist/src/kernel/project/cli/dispatch.js.map +1 -0
- package/dist/src/kernel/project/cli/exitCodes.js +66 -0
- package/dist/src/kernel/project/cli/exitCodes.js.map +1 -0
- package/dist/src/kernel/project/cli/globalFlags.js +219 -0
- package/dist/src/kernel/project/cli/globalFlags.js.map +1 -0
- package/dist/src/kernel/project/cli/helpFormat.js +58 -0
- package/dist/src/kernel/project/cli/helpFormat.js.map +1 -0
- package/dist/src/kernel/project/cli/index.js +14 -0
- package/dist/src/kernel/project/cli/index.js.map +1 -0
- package/dist/src/kernel/project/cli/rootHelp.js +227 -0
- package/dist/src/kernel/project/cli/rootHelp.js.map +1 -0
- package/dist/src/kernel/project/cli/suggest.js +75 -0
- package/dist/src/kernel/project/cli/suggest.js.map +1 -0
- package/dist/src/kernel/project/cli/suggestNames.js +96 -0
- package/dist/src/kernel/project/cli/suggestNames.js.map +1 -0
- package/dist/src/kernel/project/cli/verbHelp.js +131 -0
- package/dist/src/kernel/project/cli/verbHelp.js.map +1 -0
- package/dist/src/kernel/project/mcp/buildServer.js +67 -0
- package/dist/src/kernel/project/mcp/buildServer.js.map +1 -0
- package/dist/src/kernel/project/mcp/envelope.js +37 -0
- package/dist/src/kernel/project/mcp/envelope.js.map +1 -0
- package/dist/src/kernel/project/mcp/index.js +8 -0
- package/dist/src/kernel/project/mcp/index.js.map +1 -0
- package/dist/src/kernel/project/mcp/instructions.js +44 -0
- package/dist/src/kernel/project/mcp/instructions.js.map +1 -0
- package/dist/src/kernel/project/mcp/mcpError.js +42 -0
- package/dist/src/kernel/project/mcp/mcpError.js.map +1 -0
- package/dist/src/kernel/project/mcp/prompts/index.js +36 -0
- package/dist/src/kernel/project/mcp/prompts/index.js.map +1 -0
- package/dist/src/kernel/project/mcp/prompts/provider.js +98 -0
- package/dist/src/kernel/project/mcp/prompts/provider.js.map +1 -0
- package/dist/src/kernel/project/mcp/prompts/source.js +154 -0
- package/dist/src/kernel/project/mcp/prompts/source.js.map +1 -0
- package/dist/src/kernel/project/mcp/registerVerb.js +315 -0
- package/dist/src/kernel/project/mcp/registerVerb.js.map +1 -0
- package/dist/src/kernel/project/mcp/serve.js +35 -0
- package/dist/src/kernel/project/mcp/serve.js.map +1 -0
- package/dist/src/kernel/render/compactUri.js +24 -0
- package/dist/src/kernel/render/compactUri.js.map +1 -0
- package/dist/src/kernel/render/contracts.js +10 -0
- package/dist/src/kernel/render/contracts.js.map +1 -0
- package/dist/src/kernel/render/disclosure.js +34 -0
- package/dist/src/kernel/render/disclosure.js.map +1 -0
- package/dist/src/kernel/render/envelope.js +30 -0
- package/dist/src/kernel/render/envelope.js.map +1 -0
- package/dist/src/kernel/render/formatters.js +27 -0
- package/dist/src/kernel/render/formatters.js.map +1 -0
- package/dist/src/kernel/render/index.js +15 -0
- package/dist/src/kernel/render/index.js.map +1 -0
- package/dist/src/kernel/render/prefixes.js +46 -0
- package/dist/src/kernel/render/prefixes.js.map +1 -0
- package/dist/src/kernel/render/renderers.js +468 -0
- package/dist/src/kernel/render/renderers.js.map +1 -0
- package/dist/src/kernel/render/style.js +105 -0
- package/dist/src/kernel/render/style.js.map +1 -0
- package/dist/src/kernel/render/turtle.js +194 -0
- package/dist/src/kernel/render/turtle.js.map +1 -0
- package/dist/src/kernel/render/vocabulary.js +174 -0
- package/dist/src/kernel/render/vocabulary.js.map +1 -0
- package/dist/src/kernel/render/writeStdout.js +43 -0
- package/dist/src/kernel/render/writeStdout.js.map +1 -0
- package/dist/src/kernel/runtime/boot.js +49 -0
- package/dist/src/kernel/runtime/boot.js.map +1 -0
- package/dist/src/kernel/runtime/facade.js +39 -0
- package/dist/src/kernel/runtime/facade.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/build.js +122 -0
- package/dist/src/kernel/runtime/graphpack/build.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/buildIndex.js +303 -0
- package/dist/src/kernel/runtime/graphpack/buildIndex.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js +6 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js +4 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.stories.generated.js +4 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.stories.generated.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded.js +82 -0
- package/dist/src/kernel/runtime/graphpack/embedded.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/hash.js +38 -0
- package/dist/src/kernel/runtime/graphpack/hash.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/index.js +11 -0
- package/dist/src/kernel/runtime/graphpack/index.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/manifest.js +145 -0
- package/dist/src/kernel/runtime/graphpack/manifest.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/read.js +92 -0
- package/dist/src/kernel/runtime/graphpack/read.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/schemas.js +70 -0
- package/dist/src/kernel/runtime/graphpack/schemas.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/stories.js +68 -0
- package/dist/src/kernel/runtime/graphpack/stories.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/types.js +55 -0
- package/dist/src/kernel/runtime/graphpack/types.js.map +1 -0
- package/dist/src/kernel/runtime/index.js +8 -0
- package/dist/src/kernel/runtime/index.js.map +1 -0
- package/dist/src/kernel/runtime/loadSession.js +34 -0
- package/dist/src/kernel/runtime/loadSession.js.map +1 -0
- package/dist/src/kernel/runtime/paths.js +78 -0
- package/dist/src/kernel/runtime/paths.js.map +1 -0
- package/dist/src/kernel/runtime/probe.js +37 -0
- package/dist/src/kernel/runtime/probe.js.map +1 -0
- package/dist/src/kernel/runtime/readEntity.js +363 -0
- package/dist/src/kernel/runtime/readEntity.js.map +1 -0
- package/dist/src/kernel/runtime/refs/gitOps.js +65 -0
- package/dist/src/kernel/runtime/refs/gitOps.js.map +1 -0
- package/dist/src/kernel/runtime/refs/index.js +29 -0
- package/dist/src/kernel/runtime/refs/index.js.map +1 -0
- package/dist/src/kernel/runtime/refs/parseRef.js +70 -0
- package/dist/src/kernel/runtime/refs/parseRef.js.map +1 -0
- package/dist/src/kernel/runtime/refs/resolve.js +332 -0
- package/dist/src/kernel/runtime/refs/resolve.js.map +1 -0
- package/dist/src/kernel/runtime/resolveSources.js +62 -0
- package/dist/src/kernel/runtime/resolveSources.js.map +1 -0
- package/dist/src/kernel/runtime/store.js +75 -0
- package/dist/src/kernel/runtime/store.js.map +1 -0
- package/dist/src/kernel/runtime/storeReadiness.js +51 -0
- package/dist/src/kernel/runtime/storeReadiness.js.map +1 -0
- package/dist/src/kernel/runtime/types.js +11 -0
- package/dist/src/kernel/runtime/types.js.map +1 -0
- package/dist/src/kernel/spec/asVerb.js +21 -0
- package/dist/src/kernel/spec/asVerb.js.map +1 -0
- package/dist/src/kernel/spec/emitReference.js +578 -0
- package/dist/src/kernel/spec/emitReference.js.map +1 -0
- package/dist/src/kernel/spec/emitSurface.js +202 -0
- package/dist/src/kernel/spec/emitSurface.js.map +1 -0
- package/dist/src/kernel/spec/index.js +11 -0
- package/dist/src/kernel/spec/index.js.map +1 -0
- package/dist/src/kernel/spec/surfaceConformance.js +103 -0
- package/dist/src/kernel/spec/surfaceConformance.js.map +1 -0
- package/dist/src/kernel/spec/types.js +14 -0
- package/dist/src/kernel/spec/types.js.map +1 -0
- package/dist/src/kernel/spec/validate.js +110 -0
- package/dist/src/kernel/spec/validate.js.map +1 -0
- package/dist/src/kernel/vocabulary.js +97 -0
- package/dist/src/kernel/vocabulary.js.map +1 -0
- package/dist/src/types.js +11 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +22 -23
- package/pragma.conf.ts +486 -90
- package/src/bin.ts +274 -82
- package/src/capabilities/block.parity.test.ts +29 -12
- package/src/capabilities/block.shipped.exec.test.ts +282 -0
- package/src/capabilities/block.tierRank.exec.test.ts +300 -0
- package/src/capabilities/capabilities/capabilities.render.ts +1 -1
- package/src/capabilities/capabilities/capabilities.verb.ts +1 -1
- package/src/capabilities/capabilities/catalog.ts +3 -3
- package/src/capabilities/capabilities/hints.ts +32 -7
- package/src/capabilities/capabilities/index.ts +1 -1
- package/src/capabilities/colophon/collectColophon.ts +35 -24
- package/src/capabilities/colophon/colophon.render.ts +24 -1
- package/src/capabilities/colophon/colophon.test.ts +42 -21
- package/src/capabilities/colophon/colophon.verb.ts +4 -4
- package/src/capabilities/config/collectConfigShow.test.ts +1 -0
- package/src/capabilities/config/collectConfigShow.ts +3 -3
- package/src/capabilities/config/field.render.ts +4 -5
- package/src/capabilities/config/fields.ts +17 -10
- package/src/capabilities/config/get.verb.ts +70 -0
- package/src/capabilities/config/getUnset.test.ts +264 -0
- package/src/capabilities/config/index.ts +5 -1
- package/src/capabilities/config/runField.ts +40 -22
- package/src/capabilities/config/runGet.ts +34 -0
- package/src/capabilities/config/runSet.ts +35 -9
- package/src/capabilities/config/set.test.ts +48 -14
- package/src/capabilities/config/set.verb.ts +8 -7
- package/src/capabilities/config/show.render.ts +1 -1
- package/src/capabilities/config/show.verb.ts +9 -6
- package/src/capabilities/config/types.ts +18 -4
- package/src/capabilities/config/unset.verb.ts +58 -0
- package/src/capabilities/create/byteEquality.subprocess.test.ts +2 -3
- package/src/capabilities/create/byteEquality.test.ts +25 -11
- package/src/capabilities/create/cliProjection.ts +227 -0
- package/src/capabilities/create/constants.ts +36 -61
- package/src/capabilities/create/create.mcp.test.ts +89 -5
- package/src/capabilities/create/create.render.ts +71 -7
- package/src/capabilities/create/create.test.ts +433 -219
- package/src/capabilities/create/create.verb.ts +297 -328
- package/src/capabilities/create/createGrammar.test.ts +865 -0
- package/src/capabilities/create/createHelp.ts +71 -0
- package/src/capabilities/create/createSurface.generated.ts +400 -0
- package/src/capabilities/create/crossCli.subprocess.test.ts +745 -0
- package/src/capabilities/create/cwdJail.test.ts +24 -5
- package/src/capabilities/create/generatorToVerbSpec.test.ts +186 -0
- package/src/capabilities/create/generatorToVerbSpec.ts +13 -11
- package/src/capabilities/create/index.ts +7 -4
- package/src/capabilities/create/messages.ts +18 -0
- package/src/capabilities/create/mount.ts +391 -0
- package/src/capabilities/create/pathJail.test.ts +90 -0
- package/src/capabilities/create/pathJail.ts +8 -5
- package/src/capabilities/create/pickGenerator.ts +23 -35
- package/src/capabilities/create/shippedCreate.subprocess.test.ts +164 -0
- package/src/capabilities/create/types.ts +20 -0
- package/src/capabilities/distribution.parity.test.ts +4 -0
- package/src/capabilities/distribution.test.ts +3 -1
- package/src/capabilities/distribution.ts +10 -15
- package/src/capabilities/doctor/checks/checkKeStore.ts +7 -5
- package/src/capabilities/doctor/checks/checkPackageRefs.ts +75 -8
- package/src/capabilities/doctor/checks/checkPragmaVersion.ts +2 -2
- package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +76 -29
- package/src/capabilities/doctor/checks/checkShellCompletions.ts +63 -17
- package/src/capabilities/doctor/checks/harnessInventory.test.ts +219 -0
- package/src/capabilities/doctor/checks/harnessInventory.ts +298 -0
- package/src/capabilities/doctor/checks/index.ts +27 -0
- package/src/capabilities/doctor/checks/mcpCommand.test.ts +100 -0
- package/src/capabilities/doctor/checks/mcpCommand.ts +69 -0
- package/src/capabilities/doctor/checks/targetHealth.ts +444 -0
- package/src/capabilities/doctor/doctor.render.test.ts +125 -38
- package/src/capabilities/doctor/doctor.render.ts +74 -74
- package/src/capabilities/doctor/doctor.test.ts +338 -37
- package/src/capabilities/doctor/doctor.verb.ts +8 -3
- package/src/capabilities/doctor/runChecks.ts +65 -63
- package/src/capabilities/doctor/types.ts +22 -15
- package/src/capabilities/emptyRecovery.test.ts +21 -8
- package/src/capabilities/graph/examples.exec.test.ts +107 -0
- package/src/capabilities/graph/index.ts +1 -1
- package/src/capabilities/graph/inspect.render.ts +70 -22
- package/src/capabilities/graph/inspect.test.ts +260 -5
- package/src/capabilities/graph/inspect.verb.ts +18 -6
- package/src/capabilities/graph/query.render.ts +15 -3
- package/src/capabilities/graph/query.verb.ts +3 -3
- package/src/capabilities/graph/runQuery.ts +2 -3
- package/src/capabilities/index.ts +3 -1
- package/src/capabilities/info/collectInfo.ts +13 -5
- package/src/capabilities/info/info.render.ts +7 -3
- package/src/capabilities/info/info.test.ts +37 -1
- package/src/capabilities/info/info.verb.ts +1 -1
- package/src/capabilities/info/types.ts +10 -2
- package/src/capabilities/lazy.test.ts +32 -0
- package/src/capabilities/meta/complete.verb.ts +1 -1
- package/src/capabilities/meta/index.ts +1 -1
- package/src/capabilities/meta/mcp.verb.ts +10 -8
- package/src/capabilities/ontology/index.ts +15 -11
- package/src/capabilities/ontology/ontology.test.ts +6 -55
- package/src/capabilities/ontology/queries.ts +2 -2
- package/src/capabilities/ontology/render.ts +3 -4
- package/src/capabilities/ontology/verbs.ts +27 -68
- package/src/capabilities/prompt/index.ts +2 -2
- package/src/capabilities/prompt/prompt.render.ts +6 -2
- package/src/capabilities/prompt/types.ts +1 -1
- package/src/capabilities/prompt/verbs.ts +4 -5
- package/src/capabilities/reference.test.ts +63 -0
- package/src/capabilities/renderVocabularySync.test.ts +82 -0
- package/src/capabilities/resources/provider.ts +342 -85
- package/src/capabilities/resources/resources.test.ts +355 -59
- package/src/capabilities/scopeTypeSync.test.ts +29 -15
- package/src/capabilities/setup/buildPlan.ts +240 -0
- package/src/capabilities/setup/index.ts +7 -7
- package/src/capabilities/setup/mode.ts +74 -0
- package/src/capabilities/setup/operations/index.ts +79 -0
- package/src/capabilities/setup/operations/setupCompletions.ts +97 -24
- package/src/capabilities/setup/operations/setupConfig.ts +124 -0
- package/src/capabilities/setup/operations/setupGenerator.ts +478 -334
- package/src/capabilities/setup/operations/setupLsp.ts +420 -67
- package/src/capabilities/setup/operations/setupMcp.ts +238 -127
- package/src/capabilities/setup/operations/setupSkills.ts +667 -105
- package/src/capabilities/setup/plan.render.ts +336 -0
- package/src/capabilities/setup/plan.ts +241 -0
- package/src/capabilities/setup/setup.mcp.correctness.test.ts +432 -0
- package/src/capabilities/setup/setup.render.test.ts +297 -75
- package/src/capabilities/setup/setup.render.ts +45 -77
- package/src/capabilities/setup/setup.test.ts +1819 -225
- package/src/capabilities/setup/setup.verb.ts +288 -78
- package/src/capabilities/setup/shell.test.ts +86 -0
- package/src/capabilities/setup/shell.ts +137 -11
- package/src/capabilities/setup/targets.ts +435 -0
- package/src/capabilities/setup/types.ts +23 -70
- package/src/capabilities/shared/assertExecOk.ts +68 -10
- package/src/capabilities/shared/index.ts +43 -0
- package/src/capabilities/shared/packageManager.test.ts +470 -0
- package/src/capabilities/shared/packageManager.ts +425 -34
- package/src/capabilities/skill/bundledSkills.test.ts +347 -0
- package/src/capabilities/skill/discover.ts +131 -10
- package/src/capabilities/skill/index.ts +1 -1
- package/src/capabilities/skill/render.ts +10 -9
- package/src/capabilities/skill/skill.test.ts +22 -7
- package/src/capabilities/skill/verbs.ts +3 -4
- package/src/capabilities/sources/collectStatus.ts +7 -2
- package/src/capabilities/sources/index.ts +1 -1
- package/src/capabilities/sources/installSkills.ts +265 -10
- package/src/capabilities/sources/runUpdate.ts +131 -23
- package/src/capabilities/sources/sources.test.ts +382 -2
- package/src/capabilities/sources/status.render.ts +1 -1
- package/src/capabilities/sources/status.verb.ts +1 -1
- package/src/capabilities/sources/update.render.ts +1 -1
- package/src/capabilities/sources/update.verb.ts +4 -4
- package/src/capabilities/surface.test.ts +136 -19
- package/src/capabilities/upgrade/runUpgrade.ts +53 -14
- package/src/capabilities/upgrade/types.ts +10 -2
- package/src/capabilities/upgrade/upgrade.render.ts +13 -7
- package/src/capabilities/upgrade/upgrade.test.ts +75 -3
- package/src/capabilities/upgrade/upgrade.verb.ts +1 -1
- package/src/capabilities/version/index.ts +12 -0
- package/src/capabilities/version/version.test.ts +66 -0
- package/src/capabilities/version/version.verb.ts +39 -0
- package/src/constants.ts +36 -1
- package/src/identity.test.ts +57 -29
- package/src/kernel/completion/__snapshots__/emitScripts.test.ts.snap +15 -13
- package/src/kernel/completion/complete.test.ts +12 -2
- package/src/kernel/completion/complete.ts +1 -1
- package/src/kernel/completion/emitScripts.ts +1 -1
- package/src/kernel/completion/entitySource.test.ts +16 -3
- package/src/kernel/completion/entitySource.ts +21 -8
- package/src/kernel/completion/model.test.ts +164 -12
- package/src/kernel/completion/model.ts +94 -14
- package/src/kernel/completion/parse.test.ts +4 -7
- package/src/kernel/completion/parse.ts +15 -0
- package/src/kernel/completion/resolve.test.ts +0 -1
- package/src/kernel/completion/safety.test.ts +50 -35
- package/src/kernel/completion/shellDrive.test.ts +28 -9
- package/src/kernel/completion/templates/bash.ts +7 -2
- package/src/kernel/completion/templates/index.ts +23 -0
- package/src/kernel/completion/types.ts +7 -0
- package/src/kernel/config/defaults.test.ts +27 -3
- package/src/kernel/config/defaults.ts +4 -3
- package/src/kernel/config/evaluateProjectConfig.ts +31 -8
- package/src/kernel/config/firstRun.test.ts +44 -38
- package/src/kernel/config/firstRun.ts +24 -88
- package/src/kernel/config/index.ts +1 -1
- package/src/kernel/config/readConfig.test.ts +6 -3
- package/src/kernel/config/readConfig.ts +1 -1
- package/src/kernel/config/schema.ts +3 -1
- package/src/kernel/config/types.ts +3 -1
- package/src/kernel/copy.test.ts +34 -4
- package/src/kernel/copy.ts +54 -0
- package/src/kernel/error/PragmaError.test.ts +5 -2
- package/src/kernel/error/PragmaError.ts +4 -2
- package/src/kernel/error/constants.ts +7 -5
- package/src/kernel/error/fromTaskError.ts +28 -6
- package/src/kernel/error/recovery.ts +14 -0
- package/src/kernel/error/renderError.ts +42 -1
- package/src/kernel/error/types.ts +21 -1
- package/src/kernel/index.ts +35 -0
- package/src/kernel/interactivity.test.ts +76 -0
- package/src/kernel/interactivity.ts +69 -0
- package/src/kernel/packs/collect.ts +12 -16
- package/src/kernel/packs/compile.test.ts +222 -1
- package/src/kernel/packs/compile.ts +93 -3
- package/src/kernel/packs/disclosure.ts +2 -2
- package/src/kernel/packs/graphql/buildLookupDocument.ts +1 -1
- package/src/kernel/packs/graphql/fetchGraphqlLookup.ts +3 -4
- package/src/kernel/packs/graphql/index.ts +20 -0
- package/src/kernel/packs/index.ts +40 -0
- package/src/kernel/packs/iri.test.ts +73 -0
- package/src/kernel/packs/iri.ts +66 -14
- package/src/kernel/packs/renderPack.ts +25 -6
- package/src/kernel/packs/resolveEntity.test.ts +274 -0
- package/src/kernel/packs/resolveEntity.ts +200 -42
- package/src/kernel/packs/runBodies.ts +86 -22
- package/src/kernel/packs/sample.ts +1 -1
- package/src/kernel/packs/schema.ts +78 -5
- package/src/kernel/packs/sparql/applyFilters.ts +136 -16
- package/src/kernel/packs/sparql/buildLookupQuery.test.ts +290 -0
- package/src/kernel/packs/sparql/buildLookupQuery.ts +367 -17
- package/src/kernel/packs/sparql/index.ts +37 -0
- package/src/kernel/packs/sparql/runSelect.test.ts +1 -1
- package/src/kernel/packs/sparql/runSelect.ts +3 -4
- package/src/kernel/packs/toolDescription.test.ts +77 -4
- package/src/kernel/packs/types.ts +136 -0
- package/src/kernel/packs/uniqueness.ts +1 -1
- package/src/kernel/project/cli/buildProgram.test.ts +218 -12
- package/src/kernel/project/cli/buildProgram.ts +84 -18
- package/src/kernel/project/cli/constants.ts +34 -0
- package/src/kernel/project/cli/dispatch.test.ts +160 -2
- package/src/kernel/project/cli/dispatch.ts +226 -45
- package/src/kernel/project/cli/exitCodes.ts +1 -1
- package/src/kernel/project/cli/globalFlags.test.ts +117 -1
- package/src/kernel/project/cli/globalFlags.ts +134 -31
- package/src/kernel/project/cli/helpFormat.ts +14 -2
- package/src/kernel/project/cli/rootHelp.ts +74 -12
- package/src/kernel/project/cli/suggest.test.ts +33 -1
- package/src/kernel/project/cli/suggest.ts +25 -1
- package/src/kernel/project/cli/verbHelp.test.ts +30 -0
- package/src/kernel/project/cli/verbHelp.ts +23 -7
- package/src/kernel/project/mcp/buildServer.ts +7 -4
- package/src/kernel/project/mcp/envelope.ts +2 -2
- package/src/kernel/project/mcp/instructions.ts +2 -2
- package/src/kernel/project/mcp/mcpError.ts +1 -1
- package/src/kernel/project/mcp/parity.test.ts +5 -2
- package/src/kernel/project/mcp/prompts/index.ts +37 -0
- package/src/kernel/project/mcp/prompts/source.ts +2 -2
- package/src/kernel/project/mcp/registerVerb.ts +55 -10
- package/src/kernel/project/mcp/serve.ts +2 -2
- package/src/kernel/render/__snapshots__/renderers.test.ts.snap +7 -4
- package/src/kernel/render/contracts.ts +21 -0
- package/src/kernel/render/envelope.ts +2 -3
- package/src/kernel/render/formatters.ts +1 -1
- package/src/kernel/render/renderers.test.ts +243 -6
- package/src/kernel/render/renderers.ts +222 -20
- package/src/kernel/render/style.test.ts +75 -24
- package/src/kernel/render/style.ts +59 -6
- package/src/kernel/render/turtle.ts +222 -0
- package/src/kernel/render/vocabulary.ts +276 -0
- package/src/kernel/runtime/graphpack/buildIndex.ts +1 -1
- package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +3 -3
- package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +1 -1
- package/src/kernel/runtime/graphpack/embedded.ts +3 -3
- package/src/kernel/runtime/graphpack/manifest.ts +1 -1
- package/src/kernel/runtime/graphpack/read.ts +1 -2
- package/src/kernel/runtime/loadSession.ts +1 -1
- package/src/kernel/runtime/probe.ts +6 -6
- package/src/kernel/runtime/readEntity.ts +472 -28
- package/src/kernel/runtime/refs/index.ts +39 -0
- package/src/kernel/runtime/refs/parseRef.ts +2 -2
- package/src/kernel/runtime/refs/resolve.ts +4 -4
- package/src/kernel/runtime/storeReadiness.ts +1 -2
- package/src/kernel/runtime/types.ts +15 -1
- package/src/kernel/runtime/wasmEmbed.test.ts +37 -39
- package/src/kernel/spec/emitReference.ts +105 -30
- package/src/kernel/spec/emitSurface.ts +48 -6
- package/src/kernel/spec/surfaceConformance.test.ts +4 -2
- package/src/kernel/spec/types.ts +277 -4
- package/src/testing/PARITY_GAPS.ts +9 -3
- package/src/testing/behavioral/docExamples.test.ts +16 -0
- package/src/testing/behavioral/errorMatrix.mcp.test.ts +112 -9
- package/src/testing/behavioral/firstRun.e2e.test.ts +24 -24
- package/src/testing/behavioral/journeys.cli.test.ts +1 -1
- package/src/testing/behavioral/journeys.defaultPack.test.ts +7 -7
- package/src/testing/behavioral/journeys.firstInstall.test.ts +7 -2
- package/src/testing/behavioral/journeys.implementation.test.ts +206 -0
- package/src/testing/behavioral/journeys.interactiveTty.e2e.test.ts +2 -2
- package/src/testing/behavioral/journeys.packageStories.test.ts +10 -7
- package/src/testing/behavioral/mcpServe.e2e.test.ts +57 -2
- package/src/testing/behavioral/mcpSurface.test.ts +1 -1
- package/src/testing/behavioral/rootCli.e2e.test.ts +26 -2
- package/src/testing/eval/__snapshots__/eval.test.ts.snap +26 -1
- package/src/testing/eval/cases/effectful.ts +3 -2
- package/src/testing/eval/cases/readNouns.ts +245 -9
- package/src/testing/fixtures/blockGraph.ts +104 -10
- package/src/testing/fixtures/graph/canonical.ts +182 -13
- package/src/testing/fixtures/graph/defaultPack.ts +1 -1
- package/src/testing/helpers/blankCanonicalRanges.ts +36 -0
- package/src/testing/helpers/projectMcp.ts +32 -6
- package/src/testing/helpers/runCli.ts +35 -18
- package/src/testing/perf/budgets.test.ts +20 -9
- package/src/testing/perf/budgets.ts +58 -9
- package/src/testing/perf/codegen.test.ts +126 -0
- package/src/testing/perf/globalSetup.test.ts +286 -0
- package/src/testing/perf/globalSetup.ts +505 -23
- package/src/testing/perf/measure.test.ts +38 -0
- package/src/testing/perf/measure.ts +23 -4
- package/src/testing/setupXdgIsolation.ts +81 -21
- package/src/testing/tempRoot.globalSetup.ts +122 -0
- package/dist/pragma +0 -0
- package/src/capabilities/create/compiledCreate.subprocess.test.ts +0 -189
- package/src/capabilities/create/templates.embedded.generated.ts +0 -28
- package/src/capabilities/doctor/checks/checkConfigFile.ts +0 -42
- package/src/capabilities/doctor/checks/checkMcpCommands.ts +0 -114
- package/src/capabilities/doctor/checks/checkMcpConfigured.ts +0 -68
- package/src/capabilities/doctor/checks/checkSkillsSymlinked.ts +0 -61
- package/src/capabilities/doctor/checks/deriveBand.test.ts +0 -42
- package/src/capabilities/doctor/checks/deriveBand.ts +0 -28
- package/src/capabilities/shared/bands.ts +0 -16
- package/src/kernel/config/__snapshots__/firstRun.test.ts.snap +0 -11
|
@@ -31,7 +31,7 @@ import { storyModules } from "../../capabilities/distribution.js";
|
|
|
31
31
|
import { graphQueryVerb } from "../../capabilities/graph/query.verb.js";
|
|
32
32
|
import {
|
|
33
33
|
ontologyListVerb,
|
|
34
|
-
|
|
34
|
+
ontologyLookupVerb,
|
|
35
35
|
} from "../../capabilities/ontology/verbs.js";
|
|
36
36
|
import { updateVerb } from "../../capabilities/sources/update.verb.js";
|
|
37
37
|
import {
|
|
@@ -268,7 +268,7 @@ describe("default-pack journey — block list, populated and empty (E1)", () =>
|
|
|
268
268
|
});
|
|
269
269
|
|
|
270
270
|
it("an ontology-only pack with no blocks lists empty — a calm exit 0", async () => {
|
|
271
|
-
// D10-A, MEASURED at the dispatch seam the
|
|
271
|
+
// D10-A, MEASURED at the dispatch seam the CLI uses: the declared list
|
|
272
272
|
// body (`makeListRun`) returns `[]` and never throws on emptiness, so the
|
|
273
273
|
// process still exits 0 — no exit-code delta against the hand-written verb.
|
|
274
274
|
// Only the empty MESSAGE moved (the story's `emptyRecovery` replaces the
|
|
@@ -306,10 +306,10 @@ describe("default-pack journey — ontology list/show, populated and empty (E1)"
|
|
|
306
306
|
]);
|
|
307
307
|
});
|
|
308
308
|
|
|
309
|
-
it("ontology
|
|
309
|
+
it("ontology lookup ds surfaces the two block domain classes", async () => {
|
|
310
310
|
const fixture = await boot(DEFAULT_PACK_TTL, DEFAULT_PACK_CONFIG);
|
|
311
311
|
const envelope = await readVerb(
|
|
312
|
-
|
|
312
|
+
ontologyLookupVerb,
|
|
313
313
|
{ prefix: "ds" },
|
|
314
314
|
fixture.cwd,
|
|
315
315
|
);
|
|
@@ -326,11 +326,11 @@ describe("default-pack journey — ontology list/show, populated and empty (E1)"
|
|
|
326
326
|
expect(envelope.data).toEqual([]);
|
|
327
327
|
});
|
|
328
328
|
|
|
329
|
-
it("ontology
|
|
329
|
+
it("ontology lookup of an unknown prefix is NOT_FOUND, not a crash", async () => {
|
|
330
330
|
const fixture = await boot(DEFAULT_PACK_TTL, DEFAULT_PACK_CONFIG);
|
|
331
331
|
await expect(
|
|
332
332
|
executeVerb(
|
|
333
|
-
|
|
333
|
+
ontologyLookupVerb,
|
|
334
334
|
{ prefix: "nope" },
|
|
335
335
|
NO_MUTATION,
|
|
336
336
|
bootRuntime(JSON_FLAGS, fixture.cwd),
|
|
@@ -447,7 +447,7 @@ describe("default-pack journey — real-data shapes the clean fixture masked (E1
|
|
|
447
447
|
// `schema.json` currently surfaces UNCLASSIFIED. `packIsComplete` only checks
|
|
448
448
|
// size > 0, so torn-but-nonempty garbage bypasses the completeness guard and
|
|
449
449
|
// `compileFromExtraction` throws a raw `SyntaxError` (renders as INTERNAL
|
|
450
|
-
// "
|
|
450
|
+
// "report") instead of a classified error. It SHOULD degrade to
|
|
451
451
|
// STORE_UNAVAILABLE like the emptied case does — the fix belongs in
|
|
452
452
|
// `kernel/runtime/graphpack/read.ts` (guard the `schema.json` read/compile).
|
|
453
453
|
// No lane in this wave owns that, so rather than a false `it.fails` hand-off
|
|
@@ -158,10 +158,15 @@ describe("first install — the surfaces say where the answers come from", () =>
|
|
|
158
158
|
expect(status.entityCount).toBeGreaterThan(0);
|
|
159
159
|
});
|
|
160
160
|
|
|
161
|
-
it("doctor passes,
|
|
161
|
+
it("doctor passes, saying the packs came with the CLI rather than from the config", async () => {
|
|
162
162
|
const result = await checkPackageRefs(bootRuntime(JSON_FLAGS, emptyCwd()));
|
|
163
163
|
expect(result.status).toBe("pass");
|
|
164
|
-
|
|
164
|
+
// What is pinned is the DISTINCTION — a fresh install reads packs it
|
|
165
|
+
// shipped with, not packs this project configured — and that the row says
|
|
166
|
+
// how to change that. The wording is the reader's ("shipped with the CLI"),
|
|
167
|
+
// not the build's ("embedded snapshot"); the per-pack revisions moved to
|
|
168
|
+
// the row's sub-items when each pack got its own line.
|
|
169
|
+
expect(result.detail).toContain("shipped with the CLI");
|
|
165
170
|
expect(result.detail).toContain("pragma sources update");
|
|
166
171
|
});
|
|
167
172
|
});
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `implementation` story's SEMANTICS, in-process through the real CLI
|
|
3
|
+
* dispatch path (`executeVerb`), against the canonical fixture.
|
|
4
|
+
*
|
|
5
|
+
* The generic live-surface tests call `implementation_list` with empty
|
|
6
|
+
* parameters and check the envelope, so they stay green whether or not the
|
|
7
|
+
* story means anything: the block-name join could resolve to the wrong subject,
|
|
8
|
+
* the IRI fallback could never fire, and `--platform` / `--library` could
|
|
9
|
+
* filter nothing at all. Those are the four claims the noun actually makes, so
|
|
10
|
+
* they are pinned here rather than left to the envelope.
|
|
11
|
+
*
|
|
12
|
+
* The join is the reason this noun exists and the reason it is worth a
|
|
13
|
+
* fixture-backed test: `ds:implementsBlock` points from an implementation
|
|
14
|
+
* collected in THIS repository at a block declared by a DIFFERENT pack, and the
|
|
15
|
+
* row's `block` column is the design system's own `ds:name` reached across that
|
|
16
|
+
* edge — not a string this repository holds anywhere.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import { afterAll, describe, expect, it } from "vitest";
|
|
20
|
+
import { storyModules } from "../../capabilities/distribution.js";
|
|
21
|
+
import { verbKey } from "../../kernel/packs/uniqueness.js";
|
|
22
|
+
import { executeVerb } from "../../kernel/project/cli/dispatch.js";
|
|
23
|
+
import { bootRuntime } from "../../kernel/runtime/boot.js";
|
|
24
|
+
import type { VerbSpec } from "../../kernel/spec/types.js";
|
|
25
|
+
import {
|
|
26
|
+
CANONICAL_CONFIG,
|
|
27
|
+
CANONICAL_TTL,
|
|
28
|
+
} from "../fixtures/graph/canonical.js";
|
|
29
|
+
import {
|
|
30
|
+
bootFixtureRuntime,
|
|
31
|
+
type FixtureGraph,
|
|
32
|
+
} from "../helpers/fixtureGraph.js";
|
|
33
|
+
import { JSON_FLAGS, NO_MUTATION } from "../helpers/parity.js";
|
|
34
|
+
|
|
35
|
+
const implementationModule = storyModules.get("implementation");
|
|
36
|
+
if (!implementationModule) {
|
|
37
|
+
throw new Error('pragma.conf.ts declares no story for "implementation"');
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const verbOf = (key: string): VerbSpec =>
|
|
41
|
+
implementationModule.verbs.find((v) => verbKey(v.path) === key) as VerbSpec;
|
|
42
|
+
|
|
43
|
+
const listVerb = verbOf("implementation list");
|
|
44
|
+
const librariesVerb = verbOf("implementation libraries");
|
|
45
|
+
|
|
46
|
+
const fixtures: FixtureGraph[] = [];
|
|
47
|
+
afterAll(async () => {
|
|
48
|
+
await Promise.all(fixtures.map((f) => f.dispose()));
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
/** Boot one tracked canonical fixture, for auto-disposal. */
|
|
52
|
+
async function boot(): Promise<FixtureGraph> {
|
|
53
|
+
const fixture = await bootFixtureRuntime({
|
|
54
|
+
ttl: CANONICAL_TTL,
|
|
55
|
+
config: CANONICAL_CONFIG,
|
|
56
|
+
});
|
|
57
|
+
fixtures.push(fixture);
|
|
58
|
+
return fixture;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
type Row = Record<string, string>;
|
|
62
|
+
|
|
63
|
+
async function rows(
|
|
64
|
+
verb: VerbSpec,
|
|
65
|
+
params: Record<string, unknown> = {},
|
|
66
|
+
): Promise<Row[]> {
|
|
67
|
+
const fixture = await boot();
|
|
68
|
+
const out = await executeVerb(
|
|
69
|
+
verb,
|
|
70
|
+
params,
|
|
71
|
+
NO_MUTATION,
|
|
72
|
+
bootRuntime(JSON_FLAGS, fixture.cwd),
|
|
73
|
+
);
|
|
74
|
+
return JSON.parse(out.stdout as string).data as Row[];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* What the fixture's implementation graph says, as pairs: Button is
|
|
79
|
+
* implemented TWICE, on two platforms, and Modal once.
|
|
80
|
+
*/
|
|
81
|
+
const EVERY_PAIR = [
|
|
82
|
+
"Button|@canonical/react-ds-global",
|
|
83
|
+
"Button|@canonical/svelte-ds-global",
|
|
84
|
+
"Modal|@canonical/react-ds-global",
|
|
85
|
+
];
|
|
86
|
+
|
|
87
|
+
const pairs = (list: Row[]): string[] =>
|
|
88
|
+
list.map((r) => `${r.block}|${r.library}`).sort();
|
|
89
|
+
|
|
90
|
+
describe("implementation list — the cross-pack join", () => {
|
|
91
|
+
it("names each block by the design system's ds:name, not by its IRI", async () => {
|
|
92
|
+
// `ds:implementsBlock ds:button` carries no name; `Button` exists only on
|
|
93
|
+
// the block node BLOCK_TTL declares. A row reading `button` here would mean
|
|
94
|
+
// the join silently degraded to the IRI fallback and nobody noticed.
|
|
95
|
+
const list = await rows(listVerb);
|
|
96
|
+
expect(pairs(list)).toEqual(EVERY_PAIR);
|
|
97
|
+
expect(list.map((r) => r.block)).not.toContain("button");
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
it("one block implemented twice yields two rows, one per library", async () => {
|
|
101
|
+
// The row is the EDGE, not the block: collapsing the two Button rows into
|
|
102
|
+
// one would answer "is this implemented?" while losing "by whom", which is
|
|
103
|
+
// the question the noun exists for.
|
|
104
|
+
const list = await rows(listVerb);
|
|
105
|
+
expect(list.filter((r) => r.block === "Button")).toHaveLength(2);
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
it("carries the source link and the implementation's own IRI", async () => {
|
|
109
|
+
const list = await rows(listVerb);
|
|
110
|
+
const react = list.find(
|
|
111
|
+
(r) => r.block === "Button" && r.platform === "react",
|
|
112
|
+
);
|
|
113
|
+
expect(react?.source).toBe("https://example.test/react/Button.tsx");
|
|
114
|
+
expect(react?.uri).toBe(
|
|
115
|
+
"https://ds.canonical.com/implementation.react-ds-global.button",
|
|
116
|
+
);
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
it("falls back to the IRI local name for a block the store does not declare", async () => {
|
|
120
|
+
// The design-system pack can be absent while this one is present — a
|
|
121
|
+
// `sources` config carrying only the implementation graph. The row must
|
|
122
|
+
// stay readable, so the fallback is exercised against an edge whose target
|
|
123
|
+
// is a bare IRI with no `ds:name` anywhere in the store.
|
|
124
|
+
const fixture = await bootFixtureRuntime({
|
|
125
|
+
ttl: `${CANONICAL_TTL}
|
|
126
|
+
ds:implementation.library.orphan-lib a ds:ImplementationLibrary ;
|
|
127
|
+
ds:libraryName "@canonical/orphan-lib" ;
|
|
128
|
+
ds:platform "react" ;
|
|
129
|
+
ds:hasImplementation ds:implementation.orphan-lib.unnamed .
|
|
130
|
+
|
|
131
|
+
ds:implementation.orphan-lib.unnamed a ds:ImplementationObject ;
|
|
132
|
+
ds:implementsBlock ds:global.component.unnamed_block ;
|
|
133
|
+
ds:headLink "https://example.test/orphan/Unnamed.tsx" .
|
|
134
|
+
`,
|
|
135
|
+
config: CANONICAL_CONFIG,
|
|
136
|
+
});
|
|
137
|
+
fixtures.push(fixture);
|
|
138
|
+
const out = await executeVerb(
|
|
139
|
+
listVerb,
|
|
140
|
+
{},
|
|
141
|
+
NO_MUTATION,
|
|
142
|
+
bootRuntime(JSON_FLAGS, fixture.cwd),
|
|
143
|
+
);
|
|
144
|
+
const list = JSON.parse(out.stdout as string).data as Row[];
|
|
145
|
+
const orphan = list.find((r) => r.library === "@canonical/orphan-lib");
|
|
146
|
+
expect(orphan?.block).toBe("global.component.unnamed_block");
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
describe("implementation list — the declared filters", () => {
|
|
151
|
+
it("--platform keeps only that platform's rows", async () => {
|
|
152
|
+
expect(pairs(await rows(listVerb, { platform: "svelte" }))).toEqual([
|
|
153
|
+
"Button|@canonical/svelte-ds-global",
|
|
154
|
+
]);
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
it("--library keeps only that library's rows", async () => {
|
|
158
|
+
expect(
|
|
159
|
+
pairs(await rows(listVerb, { library: "@canonical/react-ds-global" })),
|
|
160
|
+
).toEqual([
|
|
161
|
+
"Button|@canonical/react-ds-global",
|
|
162
|
+
"Modal|@canonical/react-ds-global",
|
|
163
|
+
]);
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
it("--search matches the block name and the library name alike", async () => {
|
|
167
|
+
expect(pairs(await rows(listVerb, { search: "modal" }))).toEqual([
|
|
168
|
+
"Modal|@canonical/react-ds-global",
|
|
169
|
+
]);
|
|
170
|
+
expect(pairs(await rows(listVerb, { search: "svelte" }))).toEqual([
|
|
171
|
+
"Button|@canonical/svelte-ds-global",
|
|
172
|
+
]);
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
describe("implementation libraries — the library rows", () => {
|
|
177
|
+
it("lists every library with its platform, tier, version and block count", async () => {
|
|
178
|
+
const list = await rows(librariesVerb);
|
|
179
|
+
expect(list.map((r) => r.name).sort()).toEqual([
|
|
180
|
+
"@canonical/react-ds-global",
|
|
181
|
+
"@canonical/svelte-ds-global",
|
|
182
|
+
]);
|
|
183
|
+
const react = list.find((r) => r.name === "@canonical/react-ds-global");
|
|
184
|
+
expect(react).toMatchObject({
|
|
185
|
+
platform: "react",
|
|
186
|
+
tier: "global",
|
|
187
|
+
version: "0.34.0",
|
|
188
|
+
count: "2",
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
it("the counts agree with the rows `implementation list` returns", async () => {
|
|
193
|
+
// `ds:implementationCount` is asserted by the aggregate INDEX, on the same
|
|
194
|
+
// subject the per-library file describes. The two files can drift apart in
|
|
195
|
+
// the generator, and a count that disagrees with the edges is worse than no
|
|
196
|
+
// count at all — so the two halves are compared rather than each pinned.
|
|
197
|
+
const [libraries, list] = await Promise.all([
|
|
198
|
+
rows(librariesVerb),
|
|
199
|
+
rows(listVerb),
|
|
200
|
+
]);
|
|
201
|
+
for (const library of libraries) {
|
|
202
|
+
const actual = list.filter((r) => r.library === library.name).length;
|
|
203
|
+
expect(Number(library.count)).toBe(actual);
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
});
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
*
|
|
25
25
|
* TODO(AV-231/E4): when `node-pty` (or an equivalent PTY shim) is on the
|
|
26
26
|
* devDependency set, replace each `it.todo` with a PTY-driven `it` that spawns
|
|
27
|
-
* `
|
|
28
|
-
* code + "Cancelled." line. The
|
|
27
|
+
* the shipped `pragma create …` under a pty, writes the keystroke, and asserts the exit
|
|
28
|
+
* code + "Cancelled." line. The shipped entry is already provisioned for the
|
|
29
29
|
* spawn-e2e layer by `testing/perf/globalSetup.ts`.
|
|
30
30
|
*/
|
|
31
31
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The package tier, end to end: a noun the
|
|
2
|
+
* The package tier, end to end: a noun the distribution never shipped.
|
|
3
3
|
*
|
|
4
4
|
* A package that ships `stories/*.json` and is declared as a `file:` pack
|
|
5
5
|
* contributes a working command to a project that declares it — resolved by
|
|
6
6
|
* `sources update`, hashed into the pack, written into the pack directory, read
|
|
7
7
|
* back storelessly at dispatch, and answered from the fixture graph. Proven both
|
|
8
|
-
* in-process and through the
|
|
8
|
+
* in-process and through the SHIPPED entry in a real subprocess.
|
|
9
9
|
*
|
|
10
10
|
* The same package also ships a malformed story and a schema-invalid one. Those
|
|
11
11
|
* must be DROPPED, not fatal: package stories reach dispatch before the command
|
|
@@ -43,7 +43,7 @@ ex:soup a ex:Recipe ; ex:name "Soup" .
|
|
|
43
43
|
ex:stew a ex:Recipe ; ex:name "Stew" .
|
|
44
44
|
`;
|
|
45
45
|
|
|
46
|
-
/** A valid read story — the noun the
|
|
46
|
+
/** A valid read story — the noun the distribution never shipped. */
|
|
47
47
|
const RECIPE_STORY = JSON.stringify({
|
|
48
48
|
noun: "recipe",
|
|
49
49
|
description: "List recipes.",
|
|
@@ -138,16 +138,19 @@ describe("the two recoveries still run with bad stories in the pack", () => {
|
|
|
138
138
|
// The pack DOES answer reads, so the check passes…
|
|
139
139
|
expect(check?.status).toBe("pass");
|
|
140
140
|
expect(check?.detail).toContain("2 stories ignored");
|
|
141
|
-
// …with the unusable stories named underneath it.
|
|
142
|
-
|
|
141
|
+
// …with the unusable stories named underneath it. The items also carry
|
|
142
|
+
// one PASSING row per pack the answer was built from, so this pins the
|
|
143
|
+
// FAILING ones: what a story problem contributes is a failing item, and
|
|
144
|
+
// that claim must not break every time provenance gains a row.
|
|
145
|
+
const failing = (check?.items ?? []).filter((i) => i.status === "fail");
|
|
146
|
+
expect(failing.map((item) => item.label).sort()).toEqual([
|
|
143
147
|
"fixture/stories/broken.json",
|
|
144
148
|
"fixture/stories/invalid.json",
|
|
145
149
|
]);
|
|
146
|
-
for (const item of check?.items ?? []) expect(item.status).toBe("fail");
|
|
147
150
|
});
|
|
148
151
|
});
|
|
149
152
|
|
|
150
|
-
describe("the
|
|
153
|
+
describe("the shipped entry answers the package's noun (subprocess)", () => {
|
|
151
154
|
it("pragma recipe list --format json returns the package's rows", () => {
|
|
152
155
|
const result = runCli(["recipe", "list", "--format", "json"], {
|
|
153
156
|
cwd: graph.cwd,
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* A7 — `pragma mcp
|
|
2
|
+
* A7 — `pragma mcp serve` boot, observed through the real shipped entry.
|
|
3
3
|
*
|
|
4
4
|
* Replaces the old mocked-SIGINT unit test: `runCli` spawns with no `input`,
|
|
5
5
|
* which gives the child an immediately-EOF stdin (verified equivalent to
|
|
6
6
|
* `< /dev/null`) — the shape a host that closes the pipe on shutdown produces.
|
|
7
7
|
* The server must connect and exit cleanly, not hang or crash.
|
|
8
|
+
*
|
|
9
|
+
* The other half of the contract is the one the bin's narrow short-circuit
|
|
10
|
+
* exists to keep honest: only the exact serve invocation serves. `pragma mcp`,
|
|
11
|
+
* any help form, and any argv with a token after `serve` print text or an
|
|
12
|
+
* error and start NO server — which is only observable across the process
|
|
13
|
+
* boundary, because in-process dispatch never reaches the short-circuit at
|
|
14
|
+
* all.
|
|
8
15
|
*/
|
|
9
16
|
|
|
10
17
|
import { describe, expect, it } from "vitest";
|
|
@@ -12,10 +19,58 @@ import { runCli } from "../helpers/runCli.js";
|
|
|
12
19
|
|
|
13
20
|
describe("mcp serve — stdin close boots and exits cleanly (A7, e2e)", () => {
|
|
14
21
|
it("exits 0 with no output and no signal", () => {
|
|
15
|
-
const result = runCli(["mcp"]);
|
|
22
|
+
const result = runCli(["mcp", "serve"]);
|
|
16
23
|
expect(result.exitCode).toBe(0);
|
|
17
24
|
expect(result.signal).toBeNull();
|
|
18
25
|
expect(result.stdout).toBe("");
|
|
19
26
|
expect(result.stderr).toBe("");
|
|
20
27
|
});
|
|
21
28
|
});
|
|
29
|
+
|
|
30
|
+
describe("mcp — the noun is ordinary grammar (e2e)", () => {
|
|
31
|
+
it("bare `mcp` prints the noun help and exits 0, serving nothing", () => {
|
|
32
|
+
const result = runCli(["mcp"]);
|
|
33
|
+
expect(result.exitCode).toBe(0);
|
|
34
|
+
expect(result.stdout).toContain("Usage: pragma mcp");
|
|
35
|
+
expect(result.stdout).toContain("serve");
|
|
36
|
+
// A JSON-RPC handshake would have started with `{`; help never does.
|
|
37
|
+
expect(result.stdout.startsWith("{")).toBe(false);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it("`mcp --help` prints help rather than starting the server", () => {
|
|
41
|
+
const result = runCli(["mcp", "--help"]);
|
|
42
|
+
expect(result.exitCode).toBe(0);
|
|
43
|
+
expect(result.stdout).toContain("serve");
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it("`mcp serve --help` documents the verb rather than starting it", () => {
|
|
47
|
+
const result = runCli(["mcp", "serve", "--help"]);
|
|
48
|
+
expect(result.exitCode).toBe(0);
|
|
49
|
+
expect(result.stdout).toContain("Start the MCP server over stdio");
|
|
50
|
+
expect(result.stdout).toContain("Usage: pragma mcp serve");
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* The short-circuit matches argv EXACTLY. A prefix match would extend the
|
|
56
|
+
* stdio-purity budget — no flag parsing, no first-run, nothing on stdout but
|
|
57
|
+
* JSON-RPC — to argv the server was never asked to answer, so a suffixed line
|
|
58
|
+
* would serve instead of being parsed. These are the two suffixes that prove
|
|
59
|
+
* the fall-through: a global flag the program owns, and a stray operand.
|
|
60
|
+
*/
|
|
61
|
+
describe("mcp serve — anything suffixed falls through to the grammar (e2e)", () => {
|
|
62
|
+
it("`mcp serve --version` answers the global flag, serving nothing", () => {
|
|
63
|
+
const result = runCli(["mcp", "serve", "--version"]);
|
|
64
|
+
expect(result.exitCode).toBe(0);
|
|
65
|
+
expect(result.stdout.trim()).toMatch(/^\d+\.\d+\.\d+/);
|
|
66
|
+
// A JSON-RPC handshake would have started with `{`; a version never does.
|
|
67
|
+
expect(result.stdout.startsWith("{")).toBe(false);
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
it("`mcp serve extra` is parsed, so its bad global value is rejected", () => {
|
|
71
|
+
const result = runCli(["mcp", "serve", "extra", "--format", "bogus"]);
|
|
72
|
+
expect(result.exitCode).toBe(2);
|
|
73
|
+
expect(result.stderr).toContain('Invalid format "bogus"');
|
|
74
|
+
expect(result.stdout).toBe("");
|
|
75
|
+
});
|
|
76
|
+
});
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* Representative args are built structurally: a lookup/sample's positional
|
|
14
14
|
* resolves through its noun's OWN `list` (browse-then-address, same as B1); a
|
|
15
15
|
* `prefix`/`uri`-named positional (the grammar's TBox/entity-inspection
|
|
16
|
-
* convention, used today by `ontology
|
|
16
|
+
* convention, used today by `ontology lookup`/`graph inspect`) resolves from the
|
|
17
17
|
* pack index generically, not by noun name. A mutating tool is called WITHOUT
|
|
18
18
|
* `confirm` (a safe plan-only preview).
|
|
19
19
|
*/
|
|
@@ -22,8 +22,32 @@ describe("--version at every level (A2, e2e)", () => {
|
|
|
22
22
|
expect(VERSION).toMatch(/^\d+\.\d+\.\d+/);
|
|
23
23
|
});
|
|
24
24
|
|
|
25
|
-
it("-v is
|
|
26
|
-
|
|
25
|
+
it("-v is rejected — --version is the one spelling", () => {
|
|
26
|
+
const result = runCli(["-v"]);
|
|
27
|
+
expect(result.exitCode).toBe(2);
|
|
28
|
+
expect(result.stderr).toContain('Unknown option "-v"');
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
describe("global value flags reject bad values loudly (e2e)", () => {
|
|
33
|
+
it("--format text is not a format", () => {
|
|
34
|
+
const result = runCli(["config", "show", "--format", "text"]);
|
|
35
|
+
expect(result.exitCode).toBe(2);
|
|
36
|
+
expect(result.stderr).toContain('Invalid format "text"');
|
|
37
|
+
expect(result.stderr).toContain("plain, llm, json");
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it("--detail rejects an unrecognized level, naming the valid ones", () => {
|
|
41
|
+
const result = runCli(["config", "show", "--detail", "bogus"]);
|
|
42
|
+
expect(result.exitCode).toBe(2);
|
|
43
|
+
expect(result.stderr).toContain('Invalid detail "bogus"');
|
|
44
|
+
expect(result.stderr).toContain("summary, standard, detailed");
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it("--verbose=<x> is rejected — the flag takes no value", () => {
|
|
48
|
+
const result = runCli(["config", "show", "--verbose=true"]);
|
|
49
|
+
expect(result.exitCode).toBe(2);
|
|
50
|
+
expect(result.stderr).toContain("`--verbose` takes no value");
|
|
27
51
|
});
|
|
28
52
|
});
|
|
29
53
|
|
|
@@ -63,7 +63,12 @@ exports[`eval harness — seed gate > runs the full seed (stable + read-noun) ca
|
|
|
63
63
|
"passed": true,
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
|
-
"id": "content-standard-
|
|
66
|
+
"id": "content-standard-category-counts-match-filtered-list",
|
|
67
|
+
"kind": "content",
|
|
68
|
+
"passed": true,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"id": "content-standard-category-rollup-keeps-the-direct-member",
|
|
67
72
|
"kind": "content",
|
|
68
73
|
"passed": true,
|
|
69
74
|
},
|
|
@@ -172,6 +177,21 @@ exports[`eval harness — seed gate > runs the full seed (stable + read-noun) ca
|
|
|
172
177
|
"kind": "tool",
|
|
173
178
|
"passed": true,
|
|
174
179
|
},
|
|
180
|
+
{
|
|
181
|
+
"id": "tool-standard-list-empty-category-is-a-calm-empty-list",
|
|
182
|
+
"kind": "tool",
|
|
183
|
+
"passed": true,
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"id": "tool-standard-list-names-are-addressable-by-lookup",
|
|
187
|
+
"kind": "tool",
|
|
188
|
+
"passed": true,
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"id": "tool-standard-lookup-advertised-glob-matches",
|
|
192
|
+
"kind": "tool",
|
|
193
|
+
"passed": true,
|
|
194
|
+
},
|
|
175
195
|
{
|
|
176
196
|
"id": "tool-standard-lookup-has-dos-and-donts",
|
|
177
197
|
"kind": "tool",
|
|
@@ -182,6 +202,11 @@ exports[`eval harness — seed gate > runs the full seed (stable + read-noun) ca
|
|
|
182
202
|
"kind": "tool",
|
|
183
203
|
"passed": true,
|
|
184
204
|
},
|
|
205
|
+
{
|
|
206
|
+
"id": "tool-token-lookup-addresses-only-what-list-publishes",
|
|
207
|
+
"kind": "tool",
|
|
208
|
+
"passed": true,
|
|
209
|
+
},
|
|
185
210
|
{
|
|
186
211
|
"id": "tool-token-noun-is-read-only",
|
|
187
212
|
"kind": "tool",
|
|
@@ -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
|
},
|