@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
package/pragma.conf.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* stories those packs supply.
|
|
4
4
|
*
|
|
5
5
|
* Consumed three times: statically imported by `src/kernel/config/defaults.ts`
|
|
6
|
-
* as the lowest config layer (compiled
|
|
6
|
+
* as the lowest config layer (compiled with the source — no fs), by
|
|
7
7
|
* `src/capabilities/distribution.ts` (which compiles the declared stories into
|
|
8
8
|
* capability modules at module load), and at build time by the bundler. A
|
|
9
9
|
* NON-magic name on purpose: `findProjectConfig` only discovers
|
|
@@ -45,6 +45,12 @@ over GraphQL or raw SPARQL.
|
|
|
45
45
|
- **Tokens** — the themeable design values, resolved per theme.
|
|
46
46
|
- **Standards** — the do / don't coding guidance, categorized and linked to the
|
|
47
47
|
blocks they govern.
|
|
48
|
+
- **Concepts** — the long-form documentation that belongs to no single block:
|
|
49
|
+
foundations, decision guides, and how-to guides, each typed by a
|
|
50
|
+
\`ds:ConceptType\`.
|
|
51
|
+
- **Implementations** — which library implements which block, in which
|
|
52
|
+
framework, with a source link pinned to the release that shipped it: the
|
|
53
|
+
spec and the code realizing it are edges in one graph.
|
|
48
54
|
|
|
49
55
|
## How it fits together
|
|
50
56
|
|
|
@@ -57,8 +63,10 @@ over GraphQL or raw SPARQL.
|
|
|
57
63
|
## Why RDF
|
|
58
64
|
|
|
59
65
|
One graph makes every relationship first-class and queryable: \`block lookup\`
|
|
60
|
-
follows edges to modifiers and subcomponents, \`
|
|
61
|
-
|
|
66
|
+
follows edges to modifiers and subcomponents, \`concept lookup\` reads the
|
|
67
|
+
long-form documentation, \`graph query\` runs arbitrary SPARQL, and
|
|
68
|
+
\`ontology lookup\` reads the schema itself. Which React components implement
|
|
69
|
+
a global-tier block is one query, not an afternoon. The store is built once
|
|
62
70
|
by \`sources update\` and addressed by content hash, so the domain you query is
|
|
63
71
|
exactly the domain that was published.`;
|
|
64
72
|
|
|
@@ -89,8 +97,30 @@ const designSystemStories: readonly PackDefinition[] = [
|
|
|
89
97
|
// Base level mirrors the old summary view (name/tier/summary); the default is
|
|
90
98
|
// `detailed`, matching the old CLI which rendered anatomy and modifiers
|
|
91
99
|
// without a flag. A derived name that maps onto no schema field is omitted
|
|
92
|
-
// (OPTIONAL parity), so a graph
|
|
93
|
-
// gracefully.
|
|
100
|
+
// (OPTIONAL parity), so a graph missing one of these properties degrades
|
|
101
|
+
// gracefully rather than erroring.
|
|
102
|
+
//
|
|
103
|
+
// That graceful degradation is also how this story went silent: it used to
|
|
104
|
+
// read `ds:whenToUse`/`ds:whenNotToUse`, which the ontology RETIRED in favour
|
|
105
|
+
// of a single `ds:usage` — "Subsumes the former whenToUse/whenNotToUse" is
|
|
106
|
+
// that property's own skos:definition. The shipped pack asserts `ds:usage` on
|
|
107
|
+
// all 264 blocks and neither retired term on any of them, so every
|
|
108
|
+
// `block lookup` on every install rendered no usage narrative at all —
|
|
109
|
+
// silently, because a name that maps onto no schema field is exactly the case
|
|
110
|
+
// OPTIONAL parity swallows. The retired terms are NOT kept as a fallback:
|
|
111
|
+
// `ds:usage` subsumes them, so a pack carrying both would print the same
|
|
112
|
+
// guidance twice, and a declaration no shipped graph can satisfy is
|
|
113
|
+
// untestable by construction — which is what let the silence ship.
|
|
114
|
+
// `block.shipped.exec.test.ts` now holds every graph term declared here — the
|
|
115
|
+
// identity property, fields, sections, expand relations, and every term
|
|
116
|
+
// selected beneath them, walked recursively — to being DEFINED as a property
|
|
117
|
+
// by the SHIPPED ontology. Defined, not asserted, and the difference is the
|
|
118
|
+
// whole point: a term the ontology never defines is a story bug that can
|
|
119
|
+
// never render, on any block, on any install — this defect. A term it defines
|
|
120
|
+
// that no instance asserts yet (`ds:figmaLink` today) is a content gap
|
|
121
|
+
// upstream, which the OPTIONAL parity above degrades over gracefully and
|
|
122
|
+
// which this pack has no business failing on. `ds:usage` alone is ALSO held
|
|
123
|
+
// to being asserted, on every block, because its absence is what shipped.
|
|
94
124
|
//
|
|
95
125
|
// Disclosure declares the FULL canonical ladder `[summary, standard,
|
|
96
126
|
// detailed]` — the same set `standard` declares — so a config
|
|
@@ -113,14 +143,33 @@ const designSystemStories: readonly PackDefinition[] = [
|
|
|
113
143
|
" VALUES ?class { ds:Component ds:Pattern ds:Layout ds:Subcomponent }",
|
|
114
144
|
" ?uri a ?class .",
|
|
115
145
|
" OPTIONAL { ?uri ds:name ?dsName }",
|
|
116
|
-
" OPTIONAL { ?uri ds:tier ?tierUri }",
|
|
146
|
+
" OPTIONAL { ?uri ds:tier ?tierUri . OPTIONAL { ?tierUri ds:name ?tierName } }",
|
|
117
147
|
" OPTIONAL { ?uri ds:hasModifierFamily ?family . ?family ds:name ?modName }",
|
|
118
148
|
' BIND(COALESCE(?dsName, REPLACE(STR(?uri), "^.*[/#]", "")) AS ?name)',
|
|
119
149
|
' BIND(LCASE(REPLACE(STR(?class), "^.*[/#]", "")) AS ?type)',
|
|
120
150
|
' BIND(REPLACE(STR(?tierUri), "^.*[/#]", "") AS ?tier)',
|
|
151
|
+
// `ORDER BY ?name` alone is not a total order, and 25 names here are
|
|
152
|
+
// shared by two or three blocks. SPARQL says nothing about tied rows,
|
|
153
|
+
// so the store's scan decided: ONE run gave `Button` launchpad-first
|
|
154
|
+
// and `CheckboxInput` global-first. Tier depth, then `STR(?uri)`,
|
|
155
|
+
// makes it total — the shallower tier leads its name group, and equal
|
|
156
|
+
// depths fall back to a key that cannot tie.
|
|
157
|
+
//
|
|
158
|
+
// The depth is the same one `lookup` ranks by, spelled out because a
|
|
159
|
+
// list query is declared TEXT the kernel does not compose. Only the
|
|
160
|
+
// depth: a browse ordered by NAME is not the place to re-litigate which
|
|
161
|
+
// block the name MEANS (that is `lookup`'s ranking, which also weighs
|
|
162
|
+
// the block's type), and every row here already prints its own type.
|
|
163
|
+
//
|
|
164
|
+
// The depth-0 IF is the store's, not style: oxigraph raises on
|
|
165
|
+
// `0.2 * 0`, and a raising BIND leaves `?tierRank` unbound — which is
|
|
166
|
+
// exactly how a top-tier block silently sorted last (see
|
|
167
|
+
// `sparqlProduct` in kernel/packs/sparql/buildLookupQuery.ts).
|
|
168
|
+
' BIND(STRLEN(?tierName) - STRLEN(REPLACE(?tierName, "/", "")) AS ?tierDepth)',
|
|
169
|
+
" BIND(COALESCE(IF(?tierDepth = 0, 1, 1 - (0.2 * ?tierDepth)), 0) AS ?tierRank)",
|
|
121
170
|
"}",
|
|
122
|
-
"GROUP BY ?uri ?name ?type ?tier",
|
|
123
|
-
"ORDER BY ?name",
|
|
171
|
+
"GROUP BY ?uri ?name ?type ?tier ?tierRank",
|
|
172
|
+
"ORDER BY ?name DESC(?tierRank) STR(?uri)",
|
|
124
173
|
].join("\n"),
|
|
125
174
|
columns: [
|
|
126
175
|
{ field: "name", label: "Name" },
|
|
@@ -138,9 +187,48 @@ const designSystemStories: readonly PackDefinition[] = [
|
|
|
138
187
|
lookup: {
|
|
139
188
|
source: "graphql",
|
|
140
189
|
toolDescription:
|
|
141
|
-
'Get detailed information about one or more design system blocks including anatomy, modifiers, and properties. Use when you need the full spec of specific blocks by name — detail: "summary" trims to the base view. Example: block_lookup {
|
|
190
|
+
'Get detailed information about one or more design system blocks including anatomy, modifiers, and properties. Use when you need the full spec of specific blocks by name — detail: "summary" trims to the base view. Example: block_lookup { name: ["Button"] }.',
|
|
142
191
|
by: "ds:name",
|
|
143
192
|
types: ["ds:Component", "ds:Pattern", "ds:Layout", "ds:Subcomponent"],
|
|
193
|
+
// A subcomponent is a PART of a block, never the block someone means:
|
|
194
|
+
// for the query "button" the 86 `…-close_button` subcomponents used to
|
|
195
|
+
// outrank `ds:global.component.button` on the alphabet alone. Weighting
|
|
196
|
+
// them below 1 sinks every one of them under every component at equal
|
|
197
|
+
// match score, lowers their `annotations.priority` in the resource
|
|
198
|
+
// listing, and — since a name resolve now RANKS rather than picks — sorts
|
|
199
|
+
// them under every component a shared name also reaches.
|
|
200
|
+
weights: { "ds:Subcomponent": 0.6 },
|
|
201
|
+
// The other half of that judgement, and the reason it is a PRODUCT and
|
|
202
|
+
// not a tiebreak. 25 live block names are shared by two or three blocks
|
|
203
|
+
// across tiers, and `weights` alone cannot separate two components; the
|
|
204
|
+
// alphabet decided, so `Button` answered with Launchpad's and never
|
|
205
|
+
// mentioned the global one. A tier's DEPTH is what ranks it: `Global` is
|
|
206
|
+
// depth 1 and worth 1, `Apps/Launchpad` is depth 2 and worth 0.8, so
|
|
207
|
+
//
|
|
208
|
+
// Button global component 1 × 1 > launchpad component 1 × 0.8
|
|
209
|
+
// TextInput global SUBcomponent 0.6 × 1 < launchpad component 1 × 0.8
|
|
210
|
+
//
|
|
211
|
+
// — the global block wins where both are whole blocks, and the editorial
|
|
212
|
+
// rule that a whole component beats a part survives the addition. A pure
|
|
213
|
+
// tier tiebreak would have inverted the second case.
|
|
214
|
+
//
|
|
215
|
+
// DERIVED, never enumerated: the depth is the `/` count in the tier's
|
|
216
|
+
// OWN `ds:name` (`"Apps/Launchpad"`), not in its IRI (`ds:apps_launchpad`
|
|
217
|
+
// — the slash exists only in the name), so a tier added upstream tomorrow
|
|
218
|
+
// is ranked correctly without editing anything here.
|
|
219
|
+
//
|
|
220
|
+
// Declared as DATA beside `weights` for the same reason `weights` is:
|
|
221
|
+
// editorial judgement the ontology has not yet made belongs in the config
|
|
222
|
+
// layer, which "wins every harvest" when upstream is silent. `asserted`
|
|
223
|
+
// is the exit: the day `ds:tierRank` is asserted upstream it takes
|
|
224
|
+
// precedence over the derived depth (`COALESCE`), and this whole entry is
|
|
225
|
+
// deleted with no code change.
|
|
226
|
+
scopeWeight: {
|
|
227
|
+
via: "ds:tier",
|
|
228
|
+
by: "ds:name",
|
|
229
|
+
falloff: 0.2,
|
|
230
|
+
asserted: "ds:tierRank",
|
|
231
|
+
},
|
|
144
232
|
graphqlType: "UIBlock",
|
|
145
233
|
fields: [
|
|
146
234
|
{ name: "tier", property: "ds:tier", label: "Tier" },
|
|
@@ -153,16 +241,19 @@ const designSystemStories: readonly PackDefinition[] = [
|
|
|
153
241
|
],
|
|
154
242
|
sections: [
|
|
155
243
|
{ name: "summary", property: "ds:summary", label: "Summary" },
|
|
244
|
+
// ONE section, because `ds:usage` is ONE property: its literal is
|
|
245
|
+
// free-text Markdown carrying its own `### When to use` / `### When not
|
|
246
|
+
// to use` sub-sections (78 and 71 of the 126 non-empty ones do), so
|
|
247
|
+
// splitting it back into two headings here would mean parsing prose the
|
|
248
|
+
// graph deliberately keeps whole. The renderer demotes a body's own ATX
|
|
249
|
+
// headings below the section heading, so those sub-sections nest UNDER
|
|
250
|
+
// `### Usage` instead of colliding with it. Half the blocks assert an
|
|
251
|
+
// EMPTY `ds:usage` (138 of 264); the renderer skips empty sections, so
|
|
252
|
+
// those print no heading rather than an empty one.
|
|
156
253
|
{
|
|
157
|
-
name: "
|
|
158
|
-
property: "ds:
|
|
159
|
-
label: "
|
|
160
|
-
level: "detailed",
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
name: "whenNotToUse",
|
|
164
|
-
property: "ds:whenNotToUse",
|
|
165
|
-
label: "When not to use",
|
|
254
|
+
name: "usage",
|
|
255
|
+
property: "ds:usage",
|
|
256
|
+
label: "Usage",
|
|
166
257
|
level: "detailed",
|
|
167
258
|
},
|
|
168
259
|
{
|
|
@@ -231,7 +322,7 @@ const designSystemStories: readonly PackDefinition[] = [
|
|
|
231
322
|
sample: {
|
|
232
323
|
fixedCount: true,
|
|
233
324
|
toolDescription:
|
|
234
|
-
"Return randomly selected complete design-system blocks as exemplars. Use BEFORE writing queries to see actual data shapes, anatomy, and property names.",
|
|
325
|
+
"Return randomly selected complete design-system blocks as exemplars. Use BEFORE writing queries to see actual data shapes, anatomy, and property names. Example: block_sample {}.",
|
|
235
326
|
},
|
|
236
327
|
},
|
|
237
328
|
},
|
|
@@ -275,7 +366,7 @@ const designSystemStories: readonly PackDefinition[] = [
|
|
|
275
366
|
by: "ds:tokenId",
|
|
276
367
|
type: "ds:Token",
|
|
277
368
|
toolDescription:
|
|
278
|
-
'Get type and theme values for one or more design tokens by name. Use when resolving specific tokens\' light/dark values. Example: token_lookup {
|
|
369
|
+
'Get type and theme values for one or more design tokens by name. Use when resolving specific tokens\' light/dark values. Example: token_lookup { name: ["color.primary"] }.',
|
|
279
370
|
fields: [
|
|
280
371
|
{
|
|
281
372
|
name: "category",
|
|
@@ -288,7 +379,7 @@ const designSystemStories: readonly PackDefinition[] = [
|
|
|
288
379
|
sample: {
|
|
289
380
|
fixedCount: true,
|
|
290
381
|
toolDescription:
|
|
291
|
-
"Return randomly selected complete design tokens (with theme values) as exemplars. Use BEFORE writing queries to see actual data shapes.",
|
|
382
|
+
"Return randomly selected complete design tokens (with theme values) as exemplars. Use BEFORE writing queries to see actual data shapes. Example: token_sample {}.",
|
|
292
383
|
},
|
|
293
384
|
},
|
|
294
385
|
},
|
|
@@ -334,7 +425,7 @@ const designSystemStories: readonly PackDefinition[] = [
|
|
|
334
425
|
by: "ds:name",
|
|
335
426
|
type: "ds:ModifierFamily",
|
|
336
427
|
toolDescription:
|
|
337
|
-
'Get values and usage details for one or more modifier families by name. Use when you need the allowed values of specific families. Example: modifier_lookup {
|
|
428
|
+
'Get values and usage details for one or more modifier families by name. Use when you need the allowed values of specific families. Example: modifier_lookup { name: ["importance"] }.',
|
|
338
429
|
expand: [
|
|
339
430
|
{
|
|
340
431
|
name: "values",
|
|
@@ -346,7 +437,7 @@ const designSystemStories: readonly PackDefinition[] = [
|
|
|
346
437
|
sample: {
|
|
347
438
|
fixedCount: true,
|
|
348
439
|
toolDescription:
|
|
349
|
-
"Return randomly selected complete modifier families (with value lists) as exemplars. Use BEFORE writing queries to see actual data shapes.",
|
|
440
|
+
"Return randomly selected complete modifier families (with value lists) as exemplars. Use BEFORE writing queries to see actual data shapes. Example: modifier_sample {}.",
|
|
350
441
|
},
|
|
351
442
|
},
|
|
352
443
|
},
|
|
@@ -382,7 +473,7 @@ const designSystemStories: readonly PackDefinition[] = [
|
|
|
382
473
|
type: "ds:Tier",
|
|
383
474
|
description: "Show tiers by name, with the blocks scoped to each.",
|
|
384
475
|
toolDescription:
|
|
385
|
-
'Get one or more tiers by name, with the blocks scoped directly to each. Use when you need which blocks a specific tier carries. Example: tier_lookup {
|
|
476
|
+
'Get one or more tiers by name, with the blocks scoped directly to each. Use when you need which blocks a specific tier carries. Example: tier_lookup { name: ["apps/lxd"] }.',
|
|
386
477
|
expand: [
|
|
387
478
|
{
|
|
388
479
|
name: "blocks",
|
|
@@ -395,6 +486,234 @@ const designSystemStories: readonly PackDefinition[] = [
|
|
|
395
486
|
},
|
|
396
487
|
];
|
|
397
488
|
|
|
489
|
+
/**
|
|
490
|
+
* The `concept` story the design-system pack also supplies: long-form
|
|
491
|
+
* documentation not bound to a single UIBlock (foundations, how-to guides,
|
|
492
|
+
* decision guides) — ds:Concept entries ingested from Coda. The list stays
|
|
493
|
+
* terse (name/type/summary); the Markdown body is the lookup's payload,
|
|
494
|
+
* served at the `standard` level with knownEdgeCases behind `detailed`.
|
|
495
|
+
*/
|
|
496
|
+
const conceptStory: PackDefinition = {
|
|
497
|
+
noun: "concept",
|
|
498
|
+
description: "List design-system concepts.",
|
|
499
|
+
toolDescription:
|
|
500
|
+
'List design-system concepts — long-form foundations, how-to guides, and decision guides not bound to a single UI block. Optionally filter by type or search. Example: concept_list { type: "Explanation" }.',
|
|
501
|
+
list: {
|
|
502
|
+
query: [
|
|
503
|
+
"SELECT ?uri ?name ?type ?summary",
|
|
504
|
+
"WHERE {",
|
|
505
|
+
" ?uri a ds:Concept ;",
|
|
506
|
+
" ds:name ?name .",
|
|
507
|
+
" OPTIONAL { ?uri ds:conceptType/ds:name ?type . }",
|
|
508
|
+
" OPTIONAL { ?uri ds:summary ?summary . }",
|
|
509
|
+
"}",
|
|
510
|
+
"ORDER BY ?name",
|
|
511
|
+
].join("\n"),
|
|
512
|
+
columns: [
|
|
513
|
+
{ field: "uri", label: "IRI" },
|
|
514
|
+
{ field: "name", label: "Name" },
|
|
515
|
+
{ field: "type", label: "Type" },
|
|
516
|
+
{ field: "summary", label: "Summary" },
|
|
517
|
+
],
|
|
518
|
+
filters: [
|
|
519
|
+
{
|
|
520
|
+
param: "type",
|
|
521
|
+
variable: "type",
|
|
522
|
+
// `ds:ConceptType` is the vocabulary; the concepts are the population.
|
|
523
|
+
// The shipped graph declares six types and uses two, so validating
|
|
524
|
+
// against the rows rejected "Decision guide" — a type the ontology
|
|
525
|
+
// declares — as an invalid argument instead of answering with the
|
|
526
|
+
// empty list it actually has.
|
|
527
|
+
vocabulary: {
|
|
528
|
+
query: [
|
|
529
|
+
"SELECT DISTINCT ?name WHERE {",
|
|
530
|
+
" ?conceptType a ds:ConceptType ;",
|
|
531
|
+
" ds:name ?name .",
|
|
532
|
+
"}",
|
|
533
|
+
].join("\n"),
|
|
534
|
+
variable: "name",
|
|
535
|
+
},
|
|
536
|
+
description: "Filter by concept type (e.g. Explanation, How-to guide).",
|
|
537
|
+
},
|
|
538
|
+
],
|
|
539
|
+
search: {
|
|
540
|
+
variables: ["name", "summary"],
|
|
541
|
+
description: "Search in name and summary.",
|
|
542
|
+
},
|
|
543
|
+
emptyRecovery: {
|
|
544
|
+
message:
|
|
545
|
+
"No concepts in the store. The @canonical/design-system pack provides them; refresh the local store.",
|
|
546
|
+
cli: "sources update",
|
|
547
|
+
},
|
|
548
|
+
},
|
|
549
|
+
lookup: {
|
|
550
|
+
source: "sparql",
|
|
551
|
+
by: "ds:name",
|
|
552
|
+
type: "ds:Concept",
|
|
553
|
+
description:
|
|
554
|
+
"Look up a concept's full documentation by name, IRI, or glob.",
|
|
555
|
+
toolDescription:
|
|
556
|
+
'Get a design-system concept\'s full Markdown documentation. Address concepts by the name concept_list publishes, by prefixed name (ds:concept.…), by absolute IRI, or by a glob. Example: concept_lookup { name: ["Foundations: Grid"] }.',
|
|
557
|
+
fields: [
|
|
558
|
+
{ name: "type", property: "ds:conceptType/ds:name", label: "Type" },
|
|
559
|
+
{ name: "tier", property: "ds:tier", label: "Tier" },
|
|
560
|
+
{ name: "summary", property: "ds:summary", label: "Summary" },
|
|
561
|
+
],
|
|
562
|
+
sections: [
|
|
563
|
+
{
|
|
564
|
+
name: "content",
|
|
565
|
+
property: "ds:content",
|
|
566
|
+
label: "Content",
|
|
567
|
+
level: "standard",
|
|
568
|
+
},
|
|
569
|
+
{
|
|
570
|
+
name: "knownEdgeCases",
|
|
571
|
+
property: "ds:knownEdgeCases",
|
|
572
|
+
label: "Known edge cases",
|
|
573
|
+
level: "detailed",
|
|
574
|
+
},
|
|
575
|
+
],
|
|
576
|
+
disclosure: {
|
|
577
|
+
levels: ["summary", "standard", "detailed"],
|
|
578
|
+
default: "standard",
|
|
579
|
+
},
|
|
580
|
+
},
|
|
581
|
+
};
|
|
582
|
+
|
|
583
|
+
/**
|
|
584
|
+
* The read story the implementation-graph pack supplies — which library
|
|
585
|
+
* implements which block, collected from the `@implements` annotations in this
|
|
586
|
+
* monorepo's source.
|
|
587
|
+
*
|
|
588
|
+
* The join this noun exists for crosses two packs: `ds:implementsBlock` points
|
|
589
|
+
* from an implementation collected HERE at the IRI of a block declared in
|
|
590
|
+
* `@canonical/design-system`. Both land in one store under the pinned `ds:`
|
|
591
|
+
* namespace, so `implementation list` answers "which React components implement
|
|
592
|
+
* a global-tier block" as a query rather than an afternoon of grepping — which
|
|
593
|
+
* is what {@link DESIGN_SYSTEM_COLOPHON} promises.
|
|
594
|
+
*
|
|
595
|
+
* LIST-ONLY, deliberately. A `ds:ImplementationObject` carries no name literal
|
|
596
|
+
* — it IS the edge from a library to a block, plus the two source links — so
|
|
597
|
+
* there is nothing a `lookup` could disclose that the list row does not already
|
|
598
|
+
* hold. The grammar admits a story with only one half; a lookup keyed on a
|
|
599
|
+
* synthesised name would be a name nobody would ever type. The libraries
|
|
600
|
+
* themselves ARE named, and `implementation libraries` lists them through the
|
|
601
|
+
* same list machinery (as `standard categories` does).
|
|
602
|
+
*/
|
|
603
|
+
const implementationStory: PackDefinition = {
|
|
604
|
+
noun: "implementation",
|
|
605
|
+
description: "List which library implements which design-system block.",
|
|
606
|
+
toolDescription:
|
|
607
|
+
'List the implementations of design-system blocks — which library implements which block, on which platform, and the source file it lives in. Optionally filter by platform or library, or search. Example: implementation_list { platform: "react" }.',
|
|
608
|
+
list: {
|
|
609
|
+
// The library is the subject that carries the platform, so the row is
|
|
610
|
+
// assembled from BOTH ends of `ds:hasImplementation`. `?block` prefers the
|
|
611
|
+
// block's own `ds:name` and falls back to its IRI local name, so a row
|
|
612
|
+
// stays readable even when the design-system pack is absent from the store
|
|
613
|
+
// and only the bare `ds:implementsBlock` IRI is known.
|
|
614
|
+
query: [
|
|
615
|
+
"SELECT ?uri ?block ?library ?platform ?source",
|
|
616
|
+
"WHERE {",
|
|
617
|
+
" ?libUri a ds:ImplementationLibrary ;",
|
|
618
|
+
" ds:libraryName ?library ;",
|
|
619
|
+
" ds:hasImplementation ?uri .",
|
|
620
|
+
" ?uri a ds:ImplementationObject ;",
|
|
621
|
+
" ds:implementsBlock ?blockUri .",
|
|
622
|
+
" OPTIONAL { ?libUri ds:platform ?platform }",
|
|
623
|
+
" OPTIONAL { ?uri ds:headLink ?source }",
|
|
624
|
+
" OPTIONAL { ?blockUri ds:name ?dsName }",
|
|
625
|
+
' BIND(COALESCE(?dsName, REPLACE(STR(?blockUri), "^.*[/#]", "")) AS ?block)',
|
|
626
|
+
"}",
|
|
627
|
+
"ORDER BY ?block ?library",
|
|
628
|
+
].join("\n"),
|
|
629
|
+
columns: [
|
|
630
|
+
{ field: "block", label: "Block" },
|
|
631
|
+
{ field: "library", label: "Library" },
|
|
632
|
+
{ field: "platform", label: "Platform" },
|
|
633
|
+
{ field: "source", label: "Source" },
|
|
634
|
+
{ field: "uri", label: "IRI" },
|
|
635
|
+
],
|
|
636
|
+
filters: [
|
|
637
|
+
// Both vocabularies are read off `ds:ImplementationLibrary`, the subject
|
|
638
|
+
// that carries them — the same terms `implementation libraries`
|
|
639
|
+
// enumerates. A library that implements nothing yet still exists, and
|
|
640
|
+
// asking for it is an empty answer rather than a bad argument.
|
|
641
|
+
{
|
|
642
|
+
param: "platform",
|
|
643
|
+
variable: "platform",
|
|
644
|
+
vocabulary: {
|
|
645
|
+
query: [
|
|
646
|
+
"SELECT DISTINCT ?platform WHERE {",
|
|
647
|
+
" ?lib a ds:ImplementationLibrary ;",
|
|
648
|
+
" ds:platform ?platform .",
|
|
649
|
+
"}",
|
|
650
|
+
].join("\n"),
|
|
651
|
+
},
|
|
652
|
+
description: "Filter by platform (e.g. react, svelte, typescript).",
|
|
653
|
+
},
|
|
654
|
+
{
|
|
655
|
+
param: "library",
|
|
656
|
+
variable: "library",
|
|
657
|
+
vocabulary: {
|
|
658
|
+
query: [
|
|
659
|
+
"SELECT DISTINCT ?library WHERE {",
|
|
660
|
+
" ?lib a ds:ImplementationLibrary ;",
|
|
661
|
+
" ds:libraryName ?library .",
|
|
662
|
+
"}",
|
|
663
|
+
].join("\n"),
|
|
664
|
+
},
|
|
665
|
+
description: "Filter by implementation library name.",
|
|
666
|
+
},
|
|
667
|
+
],
|
|
668
|
+
search: {
|
|
669
|
+
variables: ["block", "library"],
|
|
670
|
+
description: "Search in block and library name.",
|
|
671
|
+
},
|
|
672
|
+
emptyRecovery: {
|
|
673
|
+
message:
|
|
674
|
+
"No implementations in the store. The @canonical/ds-implementations pack provides them; refresh the local store.",
|
|
675
|
+
cli: "sources update",
|
|
676
|
+
},
|
|
677
|
+
},
|
|
678
|
+
verbs: [
|
|
679
|
+
{
|
|
680
|
+
verb: "libraries",
|
|
681
|
+
description: "List the implementation libraries.",
|
|
682
|
+
toolDescription:
|
|
683
|
+
"List the design-system implementation libraries — platform, tier, released version, and how many blocks each one implements. Example: implementation_libraries {}.",
|
|
684
|
+
// `ds:implementationCount` is asserted by the aggregate index on the SAME
|
|
685
|
+
// subject the per-library file describes, so the two merge in the store
|
|
686
|
+
// and the count needs no aggregation here.
|
|
687
|
+
query: [
|
|
688
|
+
"SELECT ?uri ?name ?platform ?tier ?version ?count",
|
|
689
|
+
"WHERE {",
|
|
690
|
+
" ?uri a ds:ImplementationLibrary ;",
|
|
691
|
+
" ds:libraryName ?name .",
|
|
692
|
+
" OPTIONAL { ?uri ds:platform ?platform }",
|
|
693
|
+
" OPTIONAL { ?uri ds:libraryTier ?tierUri }",
|
|
694
|
+
" OPTIONAL { ?uri ds:version ?version }",
|
|
695
|
+
" OPTIONAL { ?uri ds:implementationCount ?count }",
|
|
696
|
+
' BIND(REPLACE(STR(?tierUri), "^.*[/#]", "") AS ?tier)',
|
|
697
|
+
"}",
|
|
698
|
+
"ORDER BY ?name",
|
|
699
|
+
].join("\n"),
|
|
700
|
+
columns: [
|
|
701
|
+
{ field: "name", label: "Library" },
|
|
702
|
+
{ field: "platform", label: "Platform" },
|
|
703
|
+
{ field: "tier", label: "Tier" },
|
|
704
|
+
{ field: "version", label: "Version" },
|
|
705
|
+
{ field: "count", label: "Blocks" },
|
|
706
|
+
{ field: "uri", label: "IRI" },
|
|
707
|
+
],
|
|
708
|
+
emptyRecovery: {
|
|
709
|
+
message:
|
|
710
|
+
"No implementation libraries in the store. The @canonical/ds-implementations pack provides them; refresh the local store.",
|
|
711
|
+
cli: "sources update",
|
|
712
|
+
},
|
|
713
|
+
},
|
|
714
|
+
],
|
|
715
|
+
};
|
|
716
|
+
|
|
398
717
|
/**
|
|
399
718
|
* The read story the code-standards pack supplies — `standard` as declared data.
|
|
400
719
|
*
|
|
@@ -409,20 +728,44 @@ const codeStandardsStories: readonly PackDefinition[] = [
|
|
|
409
728
|
noun: "standard",
|
|
410
729
|
description: "List all code standards.",
|
|
411
730
|
toolDescription:
|
|
412
|
-
|
|
731
|
+
'List code standards: one ROW per standard — its IRI, name, category and description — not the standards themselves. Take a row\'s `name` VERBATIM to standard_lookup for the dos and donts. Optionally filter by category slug (a parent slug answers for its whole branch; standard_categories lists them) or by search term. Example: standard_list { category: "react" }.',
|
|
413
732
|
list: {
|
|
414
733
|
query: [
|
|
734
|
+
// `?category` is the LEAF a standard is filed under — what a row
|
|
735
|
+
// displays. `?categories` is that leaf plus every ancestor, which is
|
|
736
|
+
// what `--category` matches against, so asking for a parent answers for
|
|
737
|
+
// the whole branch. The traversal is written ONCE, here, rather than
|
|
738
|
+
// repeated by each consumer.
|
|
415
739
|
"SELECT ?uri ?name ?category ?description",
|
|
740
|
+
' (GROUP_CONCAT(DISTINCT ?ancestorSlug; SEPARATOR=" ") AS ?categories)',
|
|
416
741
|
"WHERE {",
|
|
417
742
|
" ?uri a cs:CodeStandard ;",
|
|
418
743
|
" cs:description ?description .",
|
|
419
|
-
|
|
744
|
+
// `rdfs:label`, matching `lookup.by` below. Both COALESCE over the
|
|
745
|
+
// SAME property with the SAME IRI fallback, and that agreement IS the
|
|
746
|
+
// two-step grammar: a row's `name` goes VERBATIM to lookup. Keyed on
|
|
747
|
+
// different properties they diverge for exactly the entities carrying
|
|
748
|
+
// one and not the other — 16 standards in the shipped snapshot
|
|
749
|
+
// published `Turtle local-name casing` from `cs:name` while lookup,
|
|
750
|
+
// reading `rdfs:label`, bound the derived slug and answered
|
|
751
|
+
// ENTITY_NOT_FOUND. Change one, change both.
|
|
752
|
+
" OPTIONAL { ?uri rdfs:label ?n . }",
|
|
420
753
|
' BIND(COALESCE(?n, REPLACE(STRAFTER(STR(?uri), "#"), "\\\\.", "/")) AS ?name)',
|
|
421
754
|
" OPTIONAL {",
|
|
422
755
|
" ?uri cs:hasCategory ?cat .",
|
|
423
756
|
" ?cat cs:slug ?category .",
|
|
757
|
+
// `skos:broader` is deliberately NOT transitive, and this store
|
|
758
|
+
// (oxigraph) has no reasoner — so `skos:broaderTransitive` returns zero
|
|
759
|
+
// rows and hand-asserting it would be materialisation wearing a
|
|
760
|
+
// standards badge. `broader*` is the only thing that works.
|
|
761
|
+
// The `*` is REFLEXIVE and that is load-bearing: `+` would silently
|
|
762
|
+
// drop every standard filed DIRECTLY on the category being asked for
|
|
763
|
+
// (one of the 8 under `testing` today). Do not "correct" it.
|
|
764
|
+
" ?cat skos:broader* ?ancestor .",
|
|
765
|
+
" ?ancestor cs:slug ?ancestorSlug .",
|
|
424
766
|
" }",
|
|
425
767
|
"}",
|
|
768
|
+
"GROUP BY ?uri ?name ?category ?description",
|
|
426
769
|
"ORDER BY ?name",
|
|
427
770
|
].join("\n"),
|
|
428
771
|
columns: [
|
|
@@ -434,28 +777,64 @@ const codeStandardsStories: readonly PackDefinition[] = [
|
|
|
434
777
|
filters: [
|
|
435
778
|
{
|
|
436
779
|
param: "category",
|
|
437
|
-
variable: "
|
|
438
|
-
|
|
780
|
+
variable: "categories",
|
|
781
|
+
match: "set",
|
|
782
|
+
// The SAME terms `standard categories` enumerates (`cs:Category` /
|
|
783
|
+
// `cs:slug`), so the slugs that surface hands out are exactly the
|
|
784
|
+
// slugs this filter accepts. Read from the graph rather than the
|
|
785
|
+
// returned ROWS: a category the graph declares with no standards
|
|
786
|
+
// filed under it is reported by `standard categories` with count 0,
|
|
787
|
+
// and asking for it must be the documented calm empty list, not
|
|
788
|
+
// INVALID_INPUT.
|
|
789
|
+
vocabulary: {
|
|
790
|
+
query: [
|
|
791
|
+
"SELECT DISTINCT ?slug WHERE {",
|
|
792
|
+
" ?cat a cs:Category ;",
|
|
793
|
+
" cs:slug ?slug .",
|
|
794
|
+
"}",
|
|
795
|
+
].join("\n"),
|
|
796
|
+
variable: "slug",
|
|
797
|
+
},
|
|
798
|
+
description:
|
|
799
|
+
"Filter by category slug. A parent category answers for its whole branch.",
|
|
439
800
|
},
|
|
440
801
|
],
|
|
441
802
|
search: {
|
|
442
803
|
variables: ["name", "description"],
|
|
443
804
|
description: "Search in name and description.",
|
|
444
805
|
},
|
|
806
|
+
// Deliberately NOT `sources update`: the code standards ship in the
|
|
807
|
+
// embedded snapshot and answer with no update at all, so the generic
|
|
808
|
+
// build hint is actively wrong here. An empty result on this noun means
|
|
809
|
+
// the filter, and the vocabulary it must be drawn from lives in the graph
|
|
810
|
+
// — which is what `standard categories` reads out.
|
|
811
|
+
emptyRecovery: {
|
|
812
|
+
message:
|
|
813
|
+
"Category slugs come from the graph, and a parent slug answers for its whole branch — read them out rather than guessing.",
|
|
814
|
+
cli: "standard categories",
|
|
815
|
+
},
|
|
445
816
|
},
|
|
446
817
|
verbs: [
|
|
447
818
|
{
|
|
448
819
|
verb: "categories",
|
|
449
|
-
description:
|
|
450
|
-
|
|
820
|
+
description:
|
|
821
|
+
"List all standard categories with counts (a parent counts its whole branch).",
|
|
822
|
+
toolDescription:
|
|
823
|
+
"List all code standard categories with the number of standards each covers. Categories are a hierarchy: a parent's count includes every descendant, and `standard_list { category }` answers for the same set. Use this to pick a valid slug before filtering. Example: standard_categories {}.",
|
|
451
824
|
query: [
|
|
452
|
-
|
|
825
|
+
// The same reflexive roll-up `list` filters with — written the other
|
|
826
|
+
// way round (every category whose broader-chain reaches ?cat), so the
|
|
827
|
+
// count a category reports and the rows `--category` returns are the
|
|
828
|
+
// same set. `COUNT(DISTINCT ?standard)`: a standard reachable by two
|
|
829
|
+
// paths is still one standard.
|
|
830
|
+
"SELECT ?name (COUNT(DISTINCT ?standard) AS ?count)",
|
|
453
831
|
"WHERE {",
|
|
454
832
|
" ?cat a cs:Category ;",
|
|
455
833
|
" cs:slug ?name .",
|
|
456
834
|
" OPTIONAL {",
|
|
835
|
+
" ?descendant skos:broader* ?cat .",
|
|
457
836
|
" ?standard a cs:CodeStandard ;",
|
|
458
|
-
" cs:hasCategory ?
|
|
837
|
+
" cs:hasCategory ?descendant .",
|
|
459
838
|
" }",
|
|
460
839
|
"}",
|
|
461
840
|
"GROUP BY ?name",
|
|
@@ -465,16 +844,43 @@ const codeStandardsStories: readonly PackDefinition[] = [
|
|
|
465
844
|
{ field: "name", label: "Category" },
|
|
466
845
|
{ field: "count", label: "Standards" },
|
|
467
846
|
],
|
|
847
|
+
// Also not `sources update`. The categories ride the same embedded
|
|
848
|
+
// snapshot, so zero rows means the store did not load — a health
|
|
849
|
+
// question, not a staleness one.
|
|
850
|
+
emptyRecovery: {
|
|
851
|
+
message:
|
|
852
|
+
"The code standards ship with the CLI itself, so no categories at all means the store did not load — not that it is out of date.",
|
|
853
|
+
cli: "doctor",
|
|
854
|
+
},
|
|
468
855
|
},
|
|
469
856
|
],
|
|
470
857
|
lookup: {
|
|
471
858
|
source: "sparql",
|
|
472
|
-
|
|
859
|
+
// `rdfs:label`, not `cs:name`. The pack pin above moved to v0.1.5, which
|
|
860
|
+
// retired the bespoke `cs:name` for the standard property every RDF
|
|
861
|
+
// consumer already reads — measured against that tag: 0 standards carry
|
|
862
|
+
// `cs:name`, 148 of 148 carry exactly one `rdfs:label`. Left keyed on the
|
|
863
|
+
// retired property, this story would still ANSWER — every title would
|
|
864
|
+
// simply stop reaching a reader and each row would fall back to its
|
|
865
|
+
// IRI-derived name, with nothing raised. That is the same silent shape as
|
|
866
|
+
// reading a retired `ds:whenToUse`, one noun over.
|
|
867
|
+
by: "rdfs:label",
|
|
868
|
+
// The fallback stays, and is now near-inert rather than load-bearing: it
|
|
869
|
+
// covered the ~87% of standards that carried no display title at all, and
|
|
870
|
+
// v0.1.5 gives every one of them a curated label. It remains declared
|
|
871
|
+
// because a pack is data — a future release that drops a label should
|
|
872
|
+
// degrade to the IRI-derived name, not become unaddressable.
|
|
873
|
+
//
|
|
874
|
+
// Deliberately NOT declared on `block`/`token`/`tier`/`concept`: each of
|
|
875
|
+
// those lists REQUIRES its `by` property, so an entity without one is a
|
|
876
|
+
// row they never publish, and making it addressable (or sampleable) here
|
|
877
|
+
// would be the mirror of the defect this repairs.
|
|
878
|
+
nameFallback: "iri",
|
|
473
879
|
type: "cs:CodeStandard",
|
|
474
880
|
description:
|
|
475
|
-
"Look up
|
|
881
|
+
"Look up one or more standards by name, IRI, or glob. --detail standard adds the dos, --detail detailed adds the don'ts.",
|
|
476
882
|
toolDescription:
|
|
477
|
-
|
|
883
|
+
'Get one or more code standards in full, with dos and don\'ts as code examples. `detail` DEFAULTS to "summary", which returns neither: pass detail: "standard" for the dos and detail: "detailed" for dos AND don\'ts. Address a standard by the name standard_list publishes (`react/component/tsdoc`), by prefixed name (`cs:react.component.tsdoc`), by absolute IRI, or by a glob over any of those. Example: standard_lookup { name: ["react/component/tsdoc"], detail: "detailed" }.',
|
|
478
884
|
fields: [
|
|
479
885
|
{
|
|
480
886
|
name: "category",
|
|
@@ -520,7 +926,7 @@ const codeStandardsStories: readonly PackDefinition[] = [
|
|
|
520
926
|
description:
|
|
521
927
|
"Return randomly selected complete standard instances as exemplars for shape discovery.",
|
|
522
928
|
toolDescription:
|
|
523
|
-
"Return 1–5 randomly selected complete code standard instances as exemplars. Use BEFORE writing queries to see actual data shapes, property names, and value formats. Each call returns different instances.",
|
|
929
|
+
"Return 1–5 randomly selected complete code standard instances as exemplars. Use BEFORE writing queries to see actual data shapes, property names, and value formats. Each call returns different instances. Example: standard_sample { count: 2 }.",
|
|
524
930
|
},
|
|
525
931
|
},
|
|
526
932
|
},
|
|
@@ -529,6 +935,21 @@ const codeStandardsStories: readonly PackDefinition[] = [
|
|
|
529
935
|
export default {
|
|
530
936
|
name: "pragma",
|
|
531
937
|
help: "Explore the design system",
|
|
938
|
+
// The `--help` wordmark. Data, not code: `kernel/copy.test.ts` forbids any
|
|
939
|
+
// kernel string from naming the distribution, and a wordmark spells the name.
|
|
940
|
+
// Lines rather than one string — the art holds a backtick and backslashes.
|
|
941
|
+
logo: [
|
|
942
|
+
" _",
|
|
943
|
+
" /' `\\",
|
|
944
|
+
" /' )",
|
|
945
|
+
" /' (___,/'____ ____ ____ ,__________ ____",
|
|
946
|
+
" /' )' )--/' ) /' ) /' ) ) /' )",
|
|
947
|
+
" /' /' /' /' /' /' /' /' /' /' /'",
|
|
948
|
+
"(,/' /' (___,/(__(___,/(__/' /' /(__(___,/(__",
|
|
949
|
+
" /'",
|
|
950
|
+
" / /'",
|
|
951
|
+
" (___,/'",
|
|
952
|
+
],
|
|
532
953
|
// The toolchain's own colophon — CONTENT this distribution declares, not
|
|
533
954
|
// machinery: `pragma colophon` renders whatever stands here as its first
|
|
534
955
|
// section, titled with the distribution's name, before any active pack's
|
|
@@ -537,60 +958,16 @@ export default {
|
|
|
537
958
|
// form. Both are BODIES with no leading H1 (the renderer supplies the
|
|
538
959
|
// heading), grounded in this tree's real architecture.
|
|
539
960
|
colophon: {
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
interpreter, a \`--dry-run\` planner, or an \`--undo\` reverser. Describe-then-
|
|
548
|
-
interpret means dry-run and undo come for free, and the dispatcher tells the two
|
|
549
|
-
worlds apart on one bit: \`capability.mutates\`.
|
|
550
|
-
|
|
551
|
-
## One grammar, many projections
|
|
552
|
-
|
|
553
|
-
Every capability is a \`VerbSpec\` — a noun, its params, its effect profile, its
|
|
554
|
-
formatters. The CLI commands, the MCP tools, shell completion, and the
|
|
555
|
-
surface/docs are all *projections* of that one shape, so they cannot drift. The
|
|
556
|
-
projected surface is frozen in a covenant (\`surface/surface.v2.json\`): a single
|
|
557
|
-
source of truth a test asserts the live grammar still emits, tool for tool.
|
|
558
|
-
|
|
559
|
-
## LLM-optimized output
|
|
560
|
-
|
|
561
|
-
Each verb renders three ways — \`plain\` for a terminal, \`json\` for the machine
|
|
562
|
-
envelope, and \`llm\` for condensed Markdown. \`--format llm\` (or a non-interactive
|
|
563
|
-
stdout) selects the agent form: the same data, shaped for a model to read. This
|
|
564
|
-
colophon is itself a showcase of that render model.
|
|
565
|
-
|
|
566
|
-
## Modular, storeless by construction
|
|
567
|
-
|
|
568
|
-
Capabilities ship as **modules** — named bundles of verbs with optional
|
|
569
|
-
boot / resource / prompt hooks. A verb declares whether it \`needsStore\`, and
|
|
570
|
-
the dispatcher boots the triple store *only* for those; a storeless verb
|
|
571
|
-
(\`info\`, \`config\`, \`capabilities\`, \`colophon\`) never pays for the graph.
|
|
572
|
-
|
|
573
|
-
## Scaffolding
|
|
574
|
-
|
|
575
|
-
\`pragma create\` scaffolds components, packages, and applications through the
|
|
576
|
-
\`@canonical/summon-*\` generators, reusing summon's rich Ink wizard when it runs
|
|
577
|
-
interactively.
|
|
578
|
-
|
|
579
|
-
## The domain reads as data
|
|
580
|
-
|
|
581
|
-
A domain is a **pack**: a declarative \`PackDefinition\` (its list / lookup
|
|
582
|
-
queries) compiled into verbs, backed by a content-addressed graphpack that
|
|
583
|
-
\`sources update\` builds once. Swap the pack and the same pragma serves a
|
|
584
|
-
different domain — including the domain colophon printed below this one.
|
|
961
|
+
// The architecture handoff is a URL, not a repo path: `docs/` is outside
|
|
962
|
+
// the package's `files` allowlist and is not copied into `dist`, so an
|
|
963
|
+
// installed user has no `docs/architecture.md` to open.
|
|
964
|
+
markdown: `pragma is a **domain-based toolchain** — one CLI and one MCP server
|
|
965
|
+
projected from a single grammar. That machinery is documented at
|
|
966
|
+
https://github.com/canonical/pragma/blob/main/packages/cli/pragma/docs/architecture.md;
|
|
967
|
+
what follows is the domain it serves.
|
|
585
968
|
|
|
586
969
|
Made by the Canonical Webteam — https://canonical.com.`,
|
|
587
|
-
summary: `pragma is a domain-based toolchain: one CLI + MCP server projected from a single
|
|
588
|
-
|
|
589
|
-
- **Effect monad** (\`@canonical/task\`): reads are async; a mutation returns an interpreted \`Task\`, so \`--dry-run\` and \`--undo\` are free. The dispatcher branches on \`capability.mutates\`.
|
|
590
|
-
- **One grammar, many projections**: CLI, MCP tools, completion, and docs all project one \`VerbSpec\`; the emitted surface is frozen in a covenant so the projections never drift.
|
|
591
|
-
- **LLM-optimized output**: every verb renders \`plain\` / \`json\` / \`llm\`; \`--format llm\` (or a piped stdout) emits condensed Markdown for agents.
|
|
592
|
-
- **Modular + storeless**: capability modules; the triple store boots only for \`needsStore\` verbs.
|
|
593
|
-
- **Domain as data**: a pack is a declarative \`PackDefinition\` compiled to verbs over a content-addressed graph built by \`sources update\`.
|
|
970
|
+
summary: `pragma is a domain-based toolchain: one CLI + MCP server projected from a single grammar (https://github.com/canonical/pragma/blob/main/packages/cli/pragma/docs/architecture.md). The domain it serves follows.
|
|
594
971
|
|
|
595
972
|
Made by the Canonical Webteam — https://canonical.com.`,
|
|
596
973
|
},
|
|
@@ -599,17 +976,36 @@ Made by the Canonical Webteam — https://canonical.com.`,
|
|
|
599
976
|
{
|
|
600
977
|
name: "@canonical/design-system",
|
|
601
978
|
source: "git+https://github.com/canonical/design-system.git#main",
|
|
602
|
-
stories: designSystemStories,
|
|
979
|
+
stories: [...designSystemStories, conceptStory],
|
|
603
980
|
},
|
|
604
981
|
{
|
|
605
982
|
name: "@canonical/anatomy-dsl",
|
|
606
983
|
source: "git+https://github.com/canonical/anatomy-dsl.git#main",
|
|
607
984
|
},
|
|
985
|
+
// Pinned to a TAG, and the only source here that is. The standards are the
|
|
986
|
+
// pack an agent is most likely to quote back at a human as policy, so which
|
|
987
|
+
// revision answered a query has to be recoverable — a floating ref makes
|
|
988
|
+
// "the CLI told me this was the rule" unfalsifiable. The other three still
|
|
989
|
+
// float: they are read for shape and identity, where the newest answer is
|
|
990
|
+
// the right one.
|
|
991
|
+
//
|
|
992
|
+
// Bump this deliberately. `sources update` resolves the tag, so a new
|
|
993
|
+
// upstream release reaches users only when this line moves — which is the
|
|
994
|
+
// point, and the cost.
|
|
608
995
|
{
|
|
609
996
|
name: "@canonical/code-standards",
|
|
610
|
-
source: "git+https://github.com/canonical/web-code-standards.git#
|
|
997
|
+
source: "git+https://github.com/canonical/web-code-standards.git#v0.1.5",
|
|
611
998
|
stories: codeStandardsStories,
|
|
612
999
|
},
|
|
1000
|
+
// The implementation graph: ds:ImplementationLibrary / ds:ImplementationObject
|
|
1001
|
+
// nodes collected from `@implements` annotations across this monorepo
|
|
1002
|
+
// (regenerated each release into the root `data/` directory, which is what
|
|
1003
|
+
// a git ref scans — the npm distribution is `@canonical/ds-implementations`).
|
|
1004
|
+
{
|
|
1005
|
+
name: "@canonical/ds-implementations",
|
|
1006
|
+
source: "git+https://github.com/canonical/pragma.git#main",
|
|
1007
|
+
stories: [implementationStory],
|
|
1008
|
+
},
|
|
613
1009
|
],
|
|
614
1010
|
// This distribution's domain namespaces, declared once and read twice.
|
|
615
1011
|
//
|