@canonical/pragma-cli 0.33.0 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (892) hide show
  1. package/README.md +153 -30
  2. package/dist/.build-ok +0 -0
  3. package/dist/package.json +83 -0
  4. package/dist/pragma.conf.js +814 -0
  5. package/dist/pragma.conf.js.map +1 -0
  6. package/dist/src/bin.js +356 -0
  7. package/dist/src/bin.js.map +1 -0
  8. package/dist/src/capabilities/capabilities/capabilities.render.js +70 -0
  9. package/dist/src/capabilities/capabilities/capabilities.render.js.map +1 -0
  10. package/dist/src/capabilities/capabilities/capabilities.verb.js +59 -0
  11. package/dist/src/capabilities/capabilities/capabilities.verb.js.map +1 -0
  12. package/dist/src/capabilities/capabilities/catalog.js +130 -0
  13. package/dist/src/capabilities/capabilities/catalog.js.map +1 -0
  14. package/dist/src/capabilities/capabilities/hints.js +195 -0
  15. package/dist/src/capabilities/capabilities/hints.js.map +1 -0
  16. package/dist/src/capabilities/capabilities/index.js +11 -0
  17. package/dist/src/capabilities/capabilities/index.js.map +1 -0
  18. package/dist/src/capabilities/capabilities/types.js +11 -0
  19. package/dist/src/capabilities/capabilities/types.js.map +1 -0
  20. package/dist/src/capabilities/colophon/collectColophon.js +83 -0
  21. package/dist/src/capabilities/colophon/collectColophon.js.map +1 -0
  22. package/dist/src/capabilities/colophon/colophon.render.js +59 -0
  23. package/dist/src/capabilities/colophon/colophon.render.js.map +1 -0
  24. package/dist/src/capabilities/colophon/colophon.verb.js +43 -0
  25. package/dist/src/capabilities/colophon/colophon.verb.js.map +1 -0
  26. package/dist/src/capabilities/colophon/index.js +5 -0
  27. package/dist/src/capabilities/colophon/index.js.map +1 -0
  28. package/dist/src/capabilities/colophon/markdownTerminal.js +90 -0
  29. package/dist/src/capabilities/colophon/markdownTerminal.js.map +1 -0
  30. package/dist/src/capabilities/colophon/types.js +10 -0
  31. package/dist/src/capabilities/colophon/types.js.map +1 -0
  32. package/dist/src/capabilities/config/collectConfigShow.js +59 -0
  33. package/dist/src/capabilities/config/collectConfigShow.js.map +1 -0
  34. package/dist/src/capabilities/config/field.render.js +22 -0
  35. package/dist/src/capabilities/config/field.render.js.map +1 -0
  36. package/dist/src/capabilities/config/fields.js +46 -0
  37. package/dist/src/capabilities/config/fields.js.map +1 -0
  38. package/dist/src/capabilities/config/get.verb.js +61 -0
  39. package/dist/src/capabilities/config/get.verb.js.map +1 -0
  40. package/dist/src/capabilities/config/index.js +5 -0
  41. package/dist/src/capabilities/config/index.js.map +1 -0
  42. package/dist/src/capabilities/config/runField.js +59 -0
  43. package/dist/src/capabilities/config/runField.js.map +1 -0
  44. package/dist/src/capabilities/config/runGet.js +28 -0
  45. package/dist/src/capabilities/config/runGet.js.map +1 -0
  46. package/dist/src/capabilities/config/runSet.js +53 -0
  47. package/dist/src/capabilities/config/runSet.js.map +1 -0
  48. package/dist/src/capabilities/config/set.verb.js +66 -0
  49. package/dist/src/capabilities/config/set.verb.js.map +1 -0
  50. package/dist/src/capabilities/config/show.render.js +84 -0
  51. package/dist/src/capabilities/config/show.render.js.map +1 -0
  52. package/dist/src/capabilities/config/show.verb.js +44 -0
  53. package/dist/src/capabilities/config/show.verb.js.map +1 -0
  54. package/dist/src/capabilities/config/types.js +5 -0
  55. package/dist/src/capabilities/config/types.js.map +1 -0
  56. package/dist/src/capabilities/config/unset.verb.js +49 -0
  57. package/dist/src/capabilities/config/unset.verb.js.map +1 -0
  58. package/dist/src/capabilities/create/cliProjection.js +195 -0
  59. package/dist/src/capabilities/create/cliProjection.js.map +1 -0
  60. package/dist/src/capabilities/create/constants.js +47 -0
  61. package/dist/src/capabilities/create/constants.js.map +1 -0
  62. package/dist/src/capabilities/create/create.render.js +100 -0
  63. package/dist/src/capabilities/create/create.render.js.map +1 -0
  64. package/dist/src/capabilities/create/create.verb.js +438 -0
  65. package/dist/src/capabilities/create/create.verb.js.map +1 -0
  66. package/dist/src/capabilities/create/createHelp.js +47 -0
  67. package/dist/src/capabilities/create/createHelp.js.map +1 -0
  68. package/dist/src/capabilities/create/createSurface.generated.js +394 -0
  69. package/dist/src/capabilities/create/createSurface.generated.js.map +1 -0
  70. package/dist/src/capabilities/create/generatorToVerbSpec.js +106 -0
  71. package/dist/src/capabilities/create/generatorToVerbSpec.js.map +1 -0
  72. package/dist/src/capabilities/create/index.js +18 -0
  73. package/dist/src/capabilities/create/index.js.map +1 -0
  74. package/dist/src/capabilities/create/messages.js +16 -0
  75. package/dist/src/capabilities/create/messages.js.map +1 -0
  76. package/dist/src/capabilities/create/mount.js +293 -0
  77. package/dist/src/capabilities/create/mount.js.map +1 -0
  78. package/dist/src/capabilities/create/pathJail.js +65 -0
  79. package/dist/src/capabilities/create/pathJail.js.map +1 -0
  80. package/dist/src/capabilities/create/pickGenerator.js +53 -0
  81. package/dist/src/capabilities/create/pickGenerator.js.map +1 -0
  82. package/dist/src/capabilities/create/types.js +2 -0
  83. package/dist/src/capabilities/create/types.js.map +1 -0
  84. package/dist/src/capabilities/distribution.js +40 -0
  85. package/dist/src/capabilities/distribution.js.map +1 -0
  86. package/dist/src/capabilities/doctor/checks/checkKeStore.js +40 -0
  87. package/dist/src/capabilities/doctor/checks/checkKeStore.js.map +1 -0
  88. package/dist/src/capabilities/doctor/checks/checkNodeVersion.js +21 -0
  89. package/dist/src/capabilities/doctor/checks/checkNodeVersion.js.map +1 -0
  90. package/dist/src/capabilities/doctor/checks/checkPackageRefs.js +92 -0
  91. package/dist/src/capabilities/doctor/checks/checkPackageRefs.js.map +1 -0
  92. package/dist/src/capabilities/doctor/checks/checkPragmaVersion.js +19 -0
  93. package/dist/src/capabilities/doctor/checks/checkPragmaVersion.js.map +1 -0
  94. package/dist/src/capabilities/doctor/checks/checkShellCompletions.js +199 -0
  95. package/dist/src/capabilities/doctor/checks/checkShellCompletions.js.map +1 -0
  96. package/dist/src/capabilities/doctor/checks/index.js +27 -0
  97. package/dist/src/capabilities/doctor/checks/index.js.map +1 -0
  98. package/dist/src/capabilities/doctor/checks/mcpCommand.js +57 -0
  99. package/dist/src/capabilities/doctor/checks/mcpCommand.js.map +1 -0
  100. package/dist/src/capabilities/doctor/checks/targetHealth.js +205 -0
  101. package/dist/src/capabilities/doctor/checks/targetHealth.js.map +1 -0
  102. package/dist/src/capabilities/doctor/doctor.render.js +185 -0
  103. package/dist/src/capabilities/doctor/doctor.render.js.map +1 -0
  104. package/dist/src/capabilities/doctor/doctor.verb.js +45 -0
  105. package/dist/src/capabilities/doctor/doctor.verb.js.map +1 -0
  106. package/dist/src/capabilities/doctor/index.js +5 -0
  107. package/dist/src/capabilities/doctor/index.js.map +1 -0
  108. package/dist/src/capabilities/doctor/runChecks.js +83 -0
  109. package/dist/src/capabilities/doctor/runChecks.js.map +1 -0
  110. package/dist/src/capabilities/doctor/types.js +5 -0
  111. package/dist/src/capabilities/doctor/types.js.map +1 -0
  112. package/dist/src/capabilities/graph/index.js +19 -0
  113. package/dist/src/capabilities/graph/index.js.map +1 -0
  114. package/dist/src/capabilities/graph/inspect.render.js +76 -0
  115. package/dist/src/capabilities/graph/inspect.render.js.map +1 -0
  116. package/dist/src/capabilities/graph/inspect.verb.js +53 -0
  117. package/dist/src/capabilities/graph/inspect.verb.js.map +1 -0
  118. package/dist/src/capabilities/graph/query.render.js +73 -0
  119. package/dist/src/capabilities/graph/query.render.js.map +1 -0
  120. package/dist/src/capabilities/graph/query.verb.js +49 -0
  121. package/dist/src/capabilities/graph/query.verb.js.map +1 -0
  122. package/dist/src/capabilities/graph/runQuery.js +41 -0
  123. package/dist/src/capabilities/graph/runQuery.js.map +1 -0
  124. package/dist/src/capabilities/index.js +56 -0
  125. package/dist/src/capabilities/index.js.map +1 -0
  126. package/dist/src/capabilities/info/collectInfo.js +66 -0
  127. package/dist/src/capabilities/info/collectInfo.js.map +1 -0
  128. package/dist/src/capabilities/info/index.js +5 -0
  129. package/dist/src/capabilities/info/index.js.map +1 -0
  130. package/dist/src/capabilities/info/info.render.js +53 -0
  131. package/dist/src/capabilities/info/info.render.js.map +1 -0
  132. package/dist/src/capabilities/info/info.verb.js +42 -0
  133. package/dist/src/capabilities/info/info.verb.js.map +1 -0
  134. package/dist/src/capabilities/info/types.js +5 -0
  135. package/dist/src/capabilities/info/types.js.map +1 -0
  136. package/dist/src/capabilities/meta/complete.verb.js +43 -0
  137. package/dist/src/capabilities/meta/complete.verb.js.map +1 -0
  138. package/dist/src/capabilities/meta/index.js +13 -0
  139. package/dist/src/capabilities/meta/index.js.map +1 -0
  140. package/dist/src/capabilities/meta/mcp.verb.js +34 -0
  141. package/dist/src/capabilities/meta/mcp.verb.js.map +1 -0
  142. package/dist/src/capabilities/ontology/index.js +21 -0
  143. package/dist/src/capabilities/ontology/index.js.map +1 -0
  144. package/dist/src/capabilities/ontology/queries.js +123 -0
  145. package/dist/src/capabilities/ontology/queries.js.map +1 -0
  146. package/dist/src/capabilities/ontology/render.js +66 -0
  147. package/dist/src/capabilities/ontology/render.js.map +1 -0
  148. package/dist/src/capabilities/ontology/verbs.js +181 -0
  149. package/dist/src/capabilities/ontology/verbs.js.map +1 -0
  150. package/dist/src/capabilities/prompt/index.js +16 -0
  151. package/dist/src/capabilities/prompt/index.js.map +1 -0
  152. package/dist/src/capabilities/prompt/prompt.render.js +78 -0
  153. package/dist/src/capabilities/prompt/prompt.render.js.map +1 -0
  154. package/dist/src/capabilities/prompt/types.js +10 -0
  155. package/dist/src/capabilities/prompt/types.js.map +1 -0
  156. package/dist/src/capabilities/prompt/verbs.js +93 -0
  157. package/dist/src/capabilities/prompt/verbs.js.map +1 -0
  158. package/dist/src/capabilities/resources/index.js +10 -0
  159. package/dist/src/capabilities/resources/index.js.map +1 -0
  160. package/dist/src/capabilities/resources/provider.js +423 -0
  161. package/dist/src/capabilities/resources/provider.js.map +1 -0
  162. package/dist/src/capabilities/setup/buildPlan.js +168 -0
  163. package/dist/src/capabilities/setup/buildPlan.js.map +1 -0
  164. package/dist/src/capabilities/setup/index.js +5 -0
  165. package/dist/src/capabilities/setup/index.js.map +1 -0
  166. package/dist/src/capabilities/setup/mode.js +53 -0
  167. package/dist/src/capabilities/setup/mode.js.map +1 -0
  168. package/dist/src/capabilities/setup/operations/index.js +39 -0
  169. package/dist/src/capabilities/setup/operations/index.js.map +1 -0
  170. package/dist/src/capabilities/setup/operations/setupCompletions.js +160 -0
  171. package/dist/src/capabilities/setup/operations/setupCompletions.js.map +1 -0
  172. package/dist/src/capabilities/setup/operations/setupConfig.js +101 -0
  173. package/dist/src/capabilities/setup/operations/setupConfig.js.map +1 -0
  174. package/dist/src/capabilities/setup/operations/setupGenerator.js +343 -0
  175. package/dist/src/capabilities/setup/operations/setupGenerator.js.map +1 -0
  176. package/dist/src/capabilities/setup/operations/setupLsp.js +277 -0
  177. package/dist/src/capabilities/setup/operations/setupLsp.js.map +1 -0
  178. package/dist/src/capabilities/setup/operations/setupMcp.js +207 -0
  179. package/dist/src/capabilities/setup/operations/setupMcp.js.map +1 -0
  180. package/dist/src/capabilities/setup/operations/setupSkills.js +316 -0
  181. package/dist/src/capabilities/setup/operations/setupSkills.js.map +1 -0
  182. package/dist/src/capabilities/setup/plan.js +128 -0
  183. package/dist/src/capabilities/setup/plan.js.map +1 -0
  184. package/dist/src/capabilities/setup/plan.render.js +193 -0
  185. package/dist/src/capabilities/setup/plan.render.js.map +1 -0
  186. package/dist/src/capabilities/setup/setup.render.js +54 -0
  187. package/dist/src/capabilities/setup/setup.render.js.map +1 -0
  188. package/dist/src/capabilities/setup/setup.verb.js +334 -0
  189. package/dist/src/capabilities/setup/setup.verb.js.map +1 -0
  190. package/dist/src/capabilities/setup/shell.js +196 -0
  191. package/dist/src/capabilities/setup/shell.js.map +1 -0
  192. package/dist/src/capabilities/setup/targets.js +263 -0
  193. package/dist/src/capabilities/setup/targets.js.map +1 -0
  194. package/dist/src/capabilities/setup/types.js +5 -0
  195. package/dist/src/capabilities/setup/types.js.map +1 -0
  196. package/dist/src/capabilities/shared/assertExecOk.js +137 -0
  197. package/dist/src/capabilities/shared/assertExecOk.js.map +1 -0
  198. package/dist/src/capabilities/shared/bands.js +16 -0
  199. package/dist/src/capabilities/shared/bands.js.map +1 -0
  200. package/dist/src/capabilities/shared/index.js +26 -0
  201. package/dist/src/capabilities/shared/index.js.map +1 -0
  202. package/dist/src/capabilities/shared/packageManager.js +103 -0
  203. package/dist/src/capabilities/shared/packageManager.js.map +1 -0
  204. package/dist/src/capabilities/shared/registry.js +55 -0
  205. package/dist/src/capabilities/shared/registry.js.map +1 -0
  206. package/dist/src/capabilities/skill/discover.js +195 -0
  207. package/dist/src/capabilities/skill/discover.js.map +1 -0
  208. package/dist/src/capabilities/skill/index.js +10 -0
  209. package/dist/src/capabilities/skill/index.js.map +1 -0
  210. package/dist/src/capabilities/skill/render.js +49 -0
  211. package/dist/src/capabilities/skill/render.js.map +1 -0
  212. package/dist/src/capabilities/skill/verbs.js +83 -0
  213. package/dist/src/capabilities/skill/verbs.js.map +1 -0
  214. package/dist/src/capabilities/sources/collectStatus.js +103 -0
  215. package/dist/src/capabilities/sources/collectStatus.js.map +1 -0
  216. package/dist/src/capabilities/sources/index.js +13 -0
  217. package/dist/src/capabilities/sources/index.js.map +1 -0
  218. package/dist/src/capabilities/sources/installSkills.js +167 -0
  219. package/dist/src/capabilities/sources/installSkills.js.map +1 -0
  220. package/dist/src/capabilities/sources/runUpdate.js +394 -0
  221. package/dist/src/capabilities/sources/runUpdate.js.map +1 -0
  222. package/dist/src/capabilities/sources/status.render.js +64 -0
  223. package/dist/src/capabilities/sources/status.render.js.map +1 -0
  224. package/dist/src/capabilities/sources/status.verb.js +40 -0
  225. package/dist/src/capabilities/sources/status.verb.js.map +1 -0
  226. package/dist/src/capabilities/sources/types.js +6 -0
  227. package/dist/src/capabilities/sources/types.js.map +1 -0
  228. package/dist/src/capabilities/sources/update.render.js +34 -0
  229. package/dist/src/capabilities/sources/update.render.js.map +1 -0
  230. package/dist/src/capabilities/sources/update.verb.js +55 -0
  231. package/dist/src/capabilities/sources/update.verb.js.map +1 -0
  232. package/dist/src/capabilities/upgrade/index.js +5 -0
  233. package/dist/src/capabilities/upgrade/index.js.map +1 -0
  234. package/dist/src/capabilities/upgrade/runUpgrade.js +99 -0
  235. package/dist/src/capabilities/upgrade/runUpgrade.js.map +1 -0
  236. package/dist/src/capabilities/upgrade/types.js +5 -0
  237. package/dist/src/capabilities/upgrade/types.js.map +1 -0
  238. package/dist/src/capabilities/upgrade/upgrade.render.js +44 -0
  239. package/dist/src/capabilities/upgrade/upgrade.render.js.map +1 -0
  240. package/dist/src/capabilities/upgrade/upgrade.verb.js +52 -0
  241. package/dist/src/capabilities/upgrade/upgrade.verb.js.map +1 -0
  242. package/dist/src/capabilities/version/index.js +10 -0
  243. package/dist/src/capabilities/version/index.js.map +1 -0
  244. package/dist/src/capabilities/version/version.verb.js +36 -0
  245. package/dist/src/capabilities/version/version.verb.js.map +1 -0
  246. package/dist/src/constants.js +82 -0
  247. package/dist/src/constants.js.map +1 -0
  248. package/dist/src/index.js +12 -0
  249. package/dist/src/index.js.map +1 -0
  250. package/dist/src/kernel/completion/complete.js +66 -0
  251. package/dist/src/kernel/completion/complete.js.map +1 -0
  252. package/dist/src/kernel/completion/emitScripts.js +92 -0
  253. package/dist/src/kernel/completion/emitScripts.js.map +1 -0
  254. package/dist/src/kernel/completion/entitySource.js +285 -0
  255. package/dist/src/kernel/completion/entitySource.js.map +1 -0
  256. package/dist/src/kernel/completion/index.js +14 -0
  257. package/dist/src/kernel/completion/index.js.map +1 -0
  258. package/dist/src/kernel/completion/model.js +301 -0
  259. package/dist/src/kernel/completion/model.js.map +1 -0
  260. package/dist/src/kernel/completion/parse.js +253 -0
  261. package/dist/src/kernel/completion/parse.js.map +1 -0
  262. package/dist/src/kernel/completion/rank.js +101 -0
  263. package/dist/src/kernel/completion/rank.js.map +1 -0
  264. package/dist/src/kernel/completion/resolve.js +100 -0
  265. package/dist/src/kernel/completion/resolve.js.map +1 -0
  266. package/dist/src/kernel/completion/templates/bash.js +209 -0
  267. package/dist/src/kernel/completion/templates/bash.js.map +1 -0
  268. package/dist/src/kernel/completion/templates/fish.js +214 -0
  269. package/dist/src/kernel/completion/templates/fish.js.map +1 -0
  270. package/dist/src/kernel/completion/templates/index.js +23 -0
  271. package/dist/src/kernel/completion/templates/index.js.map +1 -0
  272. package/dist/src/kernel/completion/templates/shared.js +98 -0
  273. package/dist/src/kernel/completion/templates/shared.js.map +1 -0
  274. package/dist/src/kernel/completion/templates/zsh.js +201 -0
  275. package/dist/src/kernel/completion/templates/zsh.js.map +1 -0
  276. package/dist/src/kernel/completion/types.js +13 -0
  277. package/dist/src/kernel/completion/types.js.map +1 -0
  278. package/dist/src/kernel/config/defaults.js +17 -0
  279. package/dist/src/kernel/config/defaults.js.map +1 -0
  280. package/dist/src/kernel/config/evaluateProjectConfig.js +126 -0
  281. package/dist/src/kernel/config/evaluateProjectConfig.js.map +1 -0
  282. package/dist/src/kernel/config/findProjectConfig.js +43 -0
  283. package/dist/src/kernel/config/findProjectConfig.js.map +1 -0
  284. package/dist/src/kernel/config/firstRun.js +34 -0
  285. package/dist/src/kernel/config/firstRun.js.map +1 -0
  286. package/dist/src/kernel/config/globalConfig.js +79 -0
  287. package/dist/src/kernel/config/globalConfig.js.map +1 -0
  288. package/dist/src/kernel/config/index.js +16 -0
  289. package/dist/src/kernel/config/index.js.map +1 -0
  290. package/dist/src/kernel/config/paths.js +35 -0
  291. package/dist/src/kernel/config/paths.js.map +1 -0
  292. package/dist/src/kernel/config/readConfig.js +78 -0
  293. package/dist/src/kernel/config/readConfig.js.map +1 -0
  294. package/dist/src/kernel/config/schema.js +130 -0
  295. package/dist/src/kernel/config/schema.js.map +1 -0
  296. package/dist/src/kernel/config/types.js +19 -0
  297. package/dist/src/kernel/config/types.js.map +1 -0
  298. package/dist/src/kernel/config/writeConfigField.js +59 -0
  299. package/dist/src/kernel/config/writeConfigField.js.map +1 -0
  300. package/dist/src/kernel/copy.js +43 -0
  301. package/dist/src/kernel/copy.js.map +1 -0
  302. package/dist/src/kernel/error/PragmaError.js +149 -0
  303. package/dist/src/kernel/error/PragmaError.js.map +1 -0
  304. package/dist/src/kernel/error/constants.js +40 -0
  305. package/dist/src/kernel/error/constants.js.map +1 -0
  306. package/dist/src/kernel/error/fromTaskError.js +96 -0
  307. package/dist/src/kernel/error/fromTaskError.js.map +1 -0
  308. package/dist/src/kernel/error/index.js +13 -0
  309. package/dist/src/kernel/error/index.js.map +1 -0
  310. package/dist/src/kernel/error/recovery.js +52 -0
  311. package/dist/src/kernel/error/recovery.js.map +1 -0
  312. package/dist/src/kernel/error/renderError.js +115 -0
  313. package/dist/src/kernel/error/renderError.js.map +1 -0
  314. package/dist/src/kernel/error/serialize.js +25 -0
  315. package/dist/src/kernel/error/serialize.js.map +1 -0
  316. package/dist/src/kernel/error/types.js +9 -0
  317. package/dist/src/kernel/error/types.js.map +1 -0
  318. package/dist/src/kernel/index.js +25 -0
  319. package/dist/src/kernel/index.js.map +1 -0
  320. package/dist/src/kernel/packs/collect.js +187 -0
  321. package/dist/src/kernel/packs/collect.js.map +1 -0
  322. package/dist/src/kernel/packs/compile.js +304 -0
  323. package/dist/src/kernel/packs/compile.js.map +1 -0
  324. package/dist/src/kernel/packs/disclosure.js +76 -0
  325. package/dist/src/kernel/packs/disclosure.js.map +1 -0
  326. package/dist/src/kernel/packs/glob.js +38 -0
  327. package/dist/src/kernel/packs/glob.js.map +1 -0
  328. package/dist/src/kernel/packs/graphql/buildLookupDocument.js +258 -0
  329. package/dist/src/kernel/packs/graphql/buildLookupDocument.js.map +1 -0
  330. package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js +157 -0
  331. package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js.map +1 -0
  332. package/dist/src/kernel/packs/graphql/index.js +20 -0
  333. package/dist/src/kernel/packs/graphql/index.js.map +1 -0
  334. package/dist/src/kernel/packs/graphql/nameMap.js +63 -0
  335. package/dist/src/kernel/packs/graphql/nameMap.js.map +1 -0
  336. package/dist/src/kernel/packs/index.js +34 -0
  337. package/dist/src/kernel/packs/index.js.map +1 -0
  338. package/dist/src/kernel/packs/iri.js +110 -0
  339. package/dist/src/kernel/packs/iri.js.map +1 -0
  340. package/dist/src/kernel/packs/renderPack.js +129 -0
  341. package/dist/src/kernel/packs/renderPack.js.map +1 -0
  342. package/dist/src/kernel/packs/resolveEntity.js +223 -0
  343. package/dist/src/kernel/packs/resolveEntity.js.map +1 -0
  344. package/dist/src/kernel/packs/runBodies.js +87 -0
  345. package/dist/src/kernel/packs/runBodies.js.map +1 -0
  346. package/dist/src/kernel/packs/sample.js +56 -0
  347. package/dist/src/kernel/packs/sample.js.map +1 -0
  348. package/dist/src/kernel/packs/schema.js +369 -0
  349. package/dist/src/kernel/packs/schema.js.map +1 -0
  350. package/dist/src/kernel/packs/sparql/applyFilters.js +68 -0
  351. package/dist/src/kernel/packs/sparql/applyFilters.js.map +1 -0
  352. package/dist/src/kernel/packs/sparql/applySearch.js +25 -0
  353. package/dist/src/kernel/packs/sparql/applySearch.js.map +1 -0
  354. package/dist/src/kernel/packs/sparql/buildLookupQuery.js +217 -0
  355. package/dist/src/kernel/packs/sparql/buildLookupQuery.js.map +1 -0
  356. package/dist/src/kernel/packs/sparql/escape.js +21 -0
  357. package/dist/src/kernel/packs/sparql/escape.js.map +1 -0
  358. package/dist/src/kernel/packs/sparql/index.js +31 -0
  359. package/dist/src/kernel/packs/sparql/index.js.map +1 -0
  360. package/dist/src/kernel/packs/sparql/runSelect.js +101 -0
  361. package/dist/src/kernel/packs/sparql/runSelect.js.map +1 -0
  362. package/dist/src/kernel/packs/types.js +30 -0
  363. package/dist/src/kernel/packs/types.js.map +1 -0
  364. package/dist/src/kernel/packs/uniqueness.js +30 -0
  365. package/dist/src/kernel/packs/uniqueness.js.map +1 -0
  366. package/dist/src/kernel/project/cli/buildProgram.js +263 -0
  367. package/dist/src/kernel/project/cli/buildProgram.js.map +1 -0
  368. package/dist/src/kernel/project/cli/constants.js +27 -0
  369. package/dist/src/kernel/project/cli/constants.js.map +1 -0
  370. package/dist/src/kernel/project/cli/dispatch.js +420 -0
  371. package/dist/src/kernel/project/cli/dispatch.js.map +1 -0
  372. package/dist/src/kernel/project/cli/exitCodes.js +66 -0
  373. package/dist/src/kernel/project/cli/exitCodes.js.map +1 -0
  374. package/dist/src/kernel/project/cli/globalFlags.js +216 -0
  375. package/dist/src/kernel/project/cli/globalFlags.js.map +1 -0
  376. package/dist/src/kernel/project/cli/helpFormat.js +59 -0
  377. package/dist/src/kernel/project/cli/helpFormat.js.map +1 -0
  378. package/dist/src/kernel/project/cli/index.js +14 -0
  379. package/dist/src/kernel/project/cli/index.js.map +1 -0
  380. package/dist/src/kernel/project/cli/rootHelp.js +197 -0
  381. package/dist/src/kernel/project/cli/rootHelp.js.map +1 -0
  382. package/dist/src/kernel/project/cli/suggest.js +75 -0
  383. package/dist/src/kernel/project/cli/suggest.js.map +1 -0
  384. package/dist/src/kernel/project/cli/suggestNames.js +96 -0
  385. package/dist/src/kernel/project/cli/suggestNames.js.map +1 -0
  386. package/dist/src/kernel/project/cli/verbHelp.js +131 -0
  387. package/dist/src/kernel/project/cli/verbHelp.js.map +1 -0
  388. package/dist/src/kernel/project/mcp/buildServer.js +67 -0
  389. package/dist/src/kernel/project/mcp/buildServer.js.map +1 -0
  390. package/dist/src/kernel/project/mcp/envelope.js +37 -0
  391. package/dist/src/kernel/project/mcp/envelope.js.map +1 -0
  392. package/dist/src/kernel/project/mcp/index.js +8 -0
  393. package/dist/src/kernel/project/mcp/index.js.map +1 -0
  394. package/dist/src/kernel/project/mcp/instructions.js +44 -0
  395. package/dist/src/kernel/project/mcp/instructions.js.map +1 -0
  396. package/dist/src/kernel/project/mcp/mcpError.js +42 -0
  397. package/dist/src/kernel/project/mcp/mcpError.js.map +1 -0
  398. package/dist/src/kernel/project/mcp/prompts/index.js +36 -0
  399. package/dist/src/kernel/project/mcp/prompts/index.js.map +1 -0
  400. package/dist/src/kernel/project/mcp/prompts/provider.js +98 -0
  401. package/dist/src/kernel/project/mcp/prompts/provider.js.map +1 -0
  402. package/dist/src/kernel/project/mcp/prompts/source.js +154 -0
  403. package/dist/src/kernel/project/mcp/prompts/source.js.map +1 -0
  404. package/dist/src/kernel/project/mcp/registerVerb.js +300 -0
  405. package/dist/src/kernel/project/mcp/registerVerb.js.map +1 -0
  406. package/dist/src/kernel/project/mcp/serve.js +35 -0
  407. package/dist/src/kernel/project/mcp/serve.js.map +1 -0
  408. package/dist/src/kernel/render/compactUri.js +24 -0
  409. package/dist/src/kernel/render/compactUri.js.map +1 -0
  410. package/dist/src/kernel/render/contracts.js +10 -0
  411. package/dist/src/kernel/render/contracts.js.map +1 -0
  412. package/dist/src/kernel/render/disclosure.js +34 -0
  413. package/dist/src/kernel/render/disclosure.js.map +1 -0
  414. package/dist/src/kernel/render/envelope.js +30 -0
  415. package/dist/src/kernel/render/envelope.js.map +1 -0
  416. package/dist/src/kernel/render/formatters.js +27 -0
  417. package/dist/src/kernel/render/formatters.js.map +1 -0
  418. package/dist/src/kernel/render/index.js +15 -0
  419. package/dist/src/kernel/render/index.js.map +1 -0
  420. package/dist/src/kernel/render/prefixes.js +46 -0
  421. package/dist/src/kernel/render/prefixes.js.map +1 -0
  422. package/dist/src/kernel/render/renderers.js +468 -0
  423. package/dist/src/kernel/render/renderers.js.map +1 -0
  424. package/dist/src/kernel/render/style.js +85 -0
  425. package/dist/src/kernel/render/style.js.map +1 -0
  426. package/dist/src/kernel/render/turtle.js +194 -0
  427. package/dist/src/kernel/render/turtle.js.map +1 -0
  428. package/dist/src/kernel/render/writeStdout.js +43 -0
  429. package/dist/src/kernel/render/writeStdout.js.map +1 -0
  430. package/dist/src/kernel/runtime/boot.js +49 -0
  431. package/dist/src/kernel/runtime/boot.js.map +1 -0
  432. package/dist/src/kernel/runtime/facade.js +39 -0
  433. package/dist/src/kernel/runtime/facade.js.map +1 -0
  434. package/dist/src/kernel/runtime/graphpack/build.js +122 -0
  435. package/dist/src/kernel/runtime/graphpack/build.js.map +1 -0
  436. package/dist/src/kernel/runtime/graphpack/buildIndex.js +303 -0
  437. package/dist/src/kernel/runtime/graphpack/buildIndex.js.map +1 -0
  438. package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js +6 -0
  439. package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js.map +1 -0
  440. package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js +4 -0
  441. package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js.map +1 -0
  442. package/dist/src/kernel/runtime/graphpack/embedded/pack.stories.generated.js +4 -0
  443. package/dist/src/kernel/runtime/graphpack/embedded/pack.stories.generated.js.map +1 -0
  444. package/dist/src/kernel/runtime/graphpack/embedded.js +82 -0
  445. package/dist/src/kernel/runtime/graphpack/embedded.js.map +1 -0
  446. package/dist/src/kernel/runtime/graphpack/hash.js +38 -0
  447. package/dist/src/kernel/runtime/graphpack/hash.js.map +1 -0
  448. package/dist/src/kernel/runtime/graphpack/index.js +11 -0
  449. package/dist/src/kernel/runtime/graphpack/index.js.map +1 -0
  450. package/dist/src/kernel/runtime/graphpack/manifest.js +145 -0
  451. package/dist/src/kernel/runtime/graphpack/manifest.js.map +1 -0
  452. package/dist/src/kernel/runtime/graphpack/read.js +92 -0
  453. package/dist/src/kernel/runtime/graphpack/read.js.map +1 -0
  454. package/dist/src/kernel/runtime/graphpack/schemas.js +70 -0
  455. package/dist/src/kernel/runtime/graphpack/schemas.js.map +1 -0
  456. package/dist/src/kernel/runtime/graphpack/stories.js +68 -0
  457. package/dist/src/kernel/runtime/graphpack/stories.js.map +1 -0
  458. package/dist/src/kernel/runtime/graphpack/types.js +55 -0
  459. package/dist/src/kernel/runtime/graphpack/types.js.map +1 -0
  460. package/dist/src/kernel/runtime/index.js +8 -0
  461. package/dist/src/kernel/runtime/index.js.map +1 -0
  462. package/dist/src/kernel/runtime/loadSession.js +34 -0
  463. package/dist/src/kernel/runtime/loadSession.js.map +1 -0
  464. package/dist/src/kernel/runtime/paths.js +78 -0
  465. package/dist/src/kernel/runtime/paths.js.map +1 -0
  466. package/dist/src/kernel/runtime/probe.js +37 -0
  467. package/dist/src/kernel/runtime/probe.js.map +1 -0
  468. package/dist/src/kernel/runtime/readEntity.js +363 -0
  469. package/dist/src/kernel/runtime/readEntity.js.map +1 -0
  470. package/dist/src/kernel/runtime/refs/gitOps.js +65 -0
  471. package/dist/src/kernel/runtime/refs/gitOps.js.map +1 -0
  472. package/dist/src/kernel/runtime/refs/index.js +29 -0
  473. package/dist/src/kernel/runtime/refs/index.js.map +1 -0
  474. package/dist/src/kernel/runtime/refs/parseRef.js +70 -0
  475. package/dist/src/kernel/runtime/refs/parseRef.js.map +1 -0
  476. package/dist/src/kernel/runtime/refs/resolve.js +332 -0
  477. package/dist/src/kernel/runtime/refs/resolve.js.map +1 -0
  478. package/dist/src/kernel/runtime/resolveSources.js +62 -0
  479. package/dist/src/kernel/runtime/resolveSources.js.map +1 -0
  480. package/dist/src/kernel/runtime/store.js +75 -0
  481. package/dist/src/kernel/runtime/store.js.map +1 -0
  482. package/dist/src/kernel/runtime/storeReadiness.js +51 -0
  483. package/dist/src/kernel/runtime/storeReadiness.js.map +1 -0
  484. package/dist/src/kernel/runtime/types.js +11 -0
  485. package/dist/src/kernel/runtime/types.js.map +1 -0
  486. package/dist/src/kernel/spec/asVerb.js +21 -0
  487. package/dist/src/kernel/spec/asVerb.js.map +1 -0
  488. package/dist/src/kernel/spec/emitReference.js +578 -0
  489. package/dist/src/kernel/spec/emitReference.js.map +1 -0
  490. package/dist/src/kernel/spec/emitSurface.js +202 -0
  491. package/dist/src/kernel/spec/emitSurface.js.map +1 -0
  492. package/dist/src/kernel/spec/index.js +11 -0
  493. package/dist/src/kernel/spec/index.js.map +1 -0
  494. package/dist/src/kernel/spec/surfaceConformance.js +103 -0
  495. package/dist/src/kernel/spec/surfaceConformance.js.map +1 -0
  496. package/dist/src/kernel/spec/types.js +14 -0
  497. package/dist/src/kernel/spec/types.js.map +1 -0
  498. package/dist/src/kernel/spec/validate.js +110 -0
  499. package/dist/src/kernel/spec/validate.js.map +1 -0
  500. package/dist/src/kernel/vocabulary.js +97 -0
  501. package/dist/src/kernel/vocabulary.js.map +1 -0
  502. package/dist/src/types.js +11 -0
  503. package/dist/src/types.js.map +1 -0
  504. package/package.json +25 -24
  505. package/pragma.conf.ts +853 -0
  506. package/src/bin.ts +276 -82
  507. package/src/capabilities/block.parity.test.ts +253 -0
  508. package/src/capabilities/capabilities/capabilities.render.ts +4 -3
  509. package/src/capabilities/capabilities/capabilities.verb.ts +32 -14
  510. package/src/capabilities/capabilities/catalog.ts +20 -12
  511. package/src/capabilities/capabilities/hints.ts +43 -24
  512. package/src/capabilities/capabilities/index.ts +1 -1
  513. package/src/capabilities/colophon/collectColophon.ts +50 -24
  514. package/src/capabilities/colophon/colophon.render.ts +25 -1
  515. package/src/capabilities/colophon/colophon.test.ts +42 -21
  516. package/src/capabilities/colophon/colophon.verb.ts +9 -5
  517. package/src/capabilities/colophon/types.ts +16 -7
  518. package/src/capabilities/config/collectConfigShow.test.ts +58 -0
  519. package/src/capabilities/config/collectConfigShow.ts +43 -6
  520. package/src/capabilities/config/field.render.ts +4 -5
  521. package/src/capabilities/config/fields.ts +17 -37
  522. package/src/capabilities/config/get.verb.ts +70 -0
  523. package/src/capabilities/config/getUnset.test.ts +264 -0
  524. package/src/capabilities/config/index.ts +5 -1
  525. package/src/capabilities/config/runField.ts +40 -22
  526. package/src/capabilities/config/runGet.ts +34 -0
  527. package/src/capabilities/config/runSet.ts +35 -9
  528. package/src/capabilities/config/set.test.ts +48 -14
  529. package/src/capabilities/config/set.verb.ts +14 -9
  530. package/src/capabilities/config/show.render.test.ts +77 -5
  531. package/src/capabilities/config/show.render.ts +8 -13
  532. package/src/capabilities/config/show.verb.ts +13 -9
  533. package/src/capabilities/config/types.ts +26 -4
  534. package/src/capabilities/config/unset.verb.ts +58 -0
  535. package/src/capabilities/create/byteEquality.subprocess.test.ts +2 -3
  536. package/src/capabilities/create/byteEquality.test.ts +95 -103
  537. package/src/capabilities/create/cliProjection.ts +227 -0
  538. package/src/capabilities/create/constants.ts +50 -0
  539. package/src/capabilities/create/create.mcp.test.ts +91 -7
  540. package/src/capabilities/create/create.render.ts +71 -7
  541. package/src/capabilities/create/create.test.ts +523 -162
  542. package/src/capabilities/create/create.verb.ts +361 -321
  543. package/src/capabilities/create/createGrammar.test.ts +865 -0
  544. package/src/capabilities/create/createHelp.ts +71 -0
  545. package/src/capabilities/create/createSurface.generated.ts +400 -0
  546. package/src/capabilities/create/crossCli.subprocess.test.ts +745 -0
  547. package/src/capabilities/create/cwdJail.test.ts +24 -5
  548. package/src/capabilities/create/generatorToVerbSpec.test.ts +186 -0
  549. package/src/capabilities/create/generatorToVerbSpec.ts +13 -11
  550. package/src/capabilities/create/index.ts +9 -14
  551. package/src/capabilities/create/messages.ts +18 -0
  552. package/src/capabilities/create/mount.ts +391 -0
  553. package/src/capabilities/create/pathJail.test.ts +90 -0
  554. package/src/capabilities/create/pathJail.ts +8 -5
  555. package/src/capabilities/create/pickGenerator.ts +40 -46
  556. package/src/capabilities/create/shippedCreate.subprocess.test.ts +164 -0
  557. package/src/capabilities/create/types.ts +29 -5
  558. package/src/capabilities/{standard/parity.test.ts → distribution.parity.test.ts} +24 -14
  559. package/src/capabilities/distribution.test.ts +122 -0
  560. package/src/capabilities/distribution.ts +54 -0
  561. package/src/capabilities/doctor/checks/checkKeStore.ts +9 -7
  562. package/src/capabilities/doctor/checks/checkPackageRefs.ts +82 -46
  563. package/src/capabilities/doctor/checks/checkPragmaVersion.ts +5 -4
  564. package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +125 -30
  565. package/src/capabilities/doctor/checks/checkShellCompletions.ts +113 -27
  566. package/src/capabilities/doctor/checks/index.ts +27 -0
  567. package/src/capabilities/doctor/checks/mcpCommand.test.ts +100 -0
  568. package/src/capabilities/doctor/checks/mcpCommand.ts +69 -0
  569. package/src/capabilities/doctor/checks/targetHealth.ts +274 -0
  570. package/src/capabilities/doctor/doctor.render.test.ts +24 -13
  571. package/src/capabilities/doctor/doctor.render.ts +45 -20
  572. package/src/capabilities/doctor/doctor.test.ts +158 -40
  573. package/src/capabilities/doctor/doctor.verb.ts +9 -5
  574. package/src/capabilities/doctor/runChecks.ts +65 -66
  575. package/src/capabilities/doctor/types.ts +21 -5
  576. package/src/capabilities/emptyRecovery.test.ts +44 -22
  577. package/src/capabilities/graph/examples.exec.test.ts +107 -0
  578. package/src/capabilities/graph/index.ts +1 -1
  579. package/src/capabilities/graph/inspect.render.ts +70 -22
  580. package/src/capabilities/graph/inspect.test.ts +260 -5
  581. package/src/capabilities/graph/inspect.verb.ts +18 -5
  582. package/src/capabilities/graph/query.render.ts +15 -3
  583. package/src/capabilities/graph/query.verb.ts +5 -4
  584. package/src/capabilities/graph/runQuery.ts +9 -7
  585. package/src/capabilities/index.ts +25 -19
  586. package/src/capabilities/info/collectInfo.ts +15 -10
  587. package/src/capabilities/info/info.render.ts +4 -3
  588. package/src/capabilities/info/info.verb.ts +4 -3
  589. package/src/capabilities/lazy.test.ts +125 -2
  590. package/src/capabilities/meta/complete.verb.ts +1 -1
  591. package/src/capabilities/meta/index.ts +1 -1
  592. package/src/capabilities/meta/mcp.verb.ts +10 -8
  593. package/src/capabilities/ontology/index.ts +15 -11
  594. package/src/capabilities/ontology/ontology.test.ts +6 -55
  595. package/src/capabilities/ontology/queries.ts +2 -2
  596. package/src/capabilities/ontology/render.ts +3 -4
  597. package/src/capabilities/ontology/verbs.ts +42 -83
  598. package/src/capabilities/prompt/index.ts +2 -2
  599. package/src/capabilities/prompt/prompt.render.ts +6 -2
  600. package/src/capabilities/prompt/prompt.test.ts +12 -6
  601. package/src/capabilities/prompt/types.ts +1 -1
  602. package/src/capabilities/prompt/verbs.ts +26 -14
  603. package/src/capabilities/reference.test.ts +63 -0
  604. package/src/capabilities/resources/provider.ts +367 -91
  605. package/src/capabilities/resources/resources.test.ts +411 -59
  606. package/src/capabilities/setup/buildPlan.ts +236 -0
  607. package/src/capabilities/setup/index.ts +7 -7
  608. package/src/capabilities/setup/mode.ts +74 -0
  609. package/src/capabilities/setup/operations/index.ts +74 -0
  610. package/src/capabilities/setup/operations/setupCompletions.ts +97 -24
  611. package/src/capabilities/setup/operations/setupConfig.ts +124 -0
  612. package/src/capabilities/setup/operations/setupGenerator.ts +397 -320
  613. package/src/capabilities/setup/operations/setupLsp.ts +329 -68
  614. package/src/capabilities/setup/operations/setupMcp.ts +137 -97
  615. package/src/capabilities/setup/operations/setupSkills.ts +336 -108
  616. package/src/capabilities/setup/plan.render.ts +241 -0
  617. package/src/capabilities/setup/plan.ts +236 -0
  618. package/src/capabilities/setup/setup.mcp.correctness.test.ts +432 -0
  619. package/src/capabilities/setup/setup.render.test.ts +281 -73
  620. package/src/capabilities/setup/setup.render.ts +45 -77
  621. package/src/capabilities/setup/setup.test.ts +972 -209
  622. package/src/capabilities/setup/setup.verb.ts +233 -74
  623. package/src/capabilities/setup/shell.test.ts +86 -0
  624. package/src/capabilities/setup/shell.ts +166 -14
  625. package/src/capabilities/setup/targets.ts +367 -0
  626. package/src/capabilities/setup/types.ts +18 -57
  627. package/src/capabilities/shared/assertExecOk.ts +68 -10
  628. package/src/capabilities/shared/index.ts +32 -0
  629. package/src/capabilities/shared/packageManager.test.ts +55 -0
  630. package/src/capabilities/shared/packageManager.ts +62 -6
  631. package/src/capabilities/skill/discover.ts +47 -9
  632. package/src/capabilities/skill/index.ts +1 -1
  633. package/src/capabilities/skill/render.ts +14 -14
  634. package/src/capabilities/skill/skill.test.ts +7 -5
  635. package/src/capabilities/skill/verbs.ts +9 -10
  636. package/src/capabilities/sources/collectStatus.ts +61 -51
  637. package/src/capabilities/sources/index.ts +2 -2
  638. package/src/capabilities/sources/installSkills.ts +86 -9
  639. package/src/capabilities/sources/runUpdate.ts +164 -141
  640. package/src/capabilities/sources/sources.test.ts +265 -119
  641. package/src/capabilities/sources/status.render.test.ts +53 -24
  642. package/src/capabilities/sources/status.render.ts +25 -30
  643. package/src/capabilities/sources/status.verb.ts +16 -9
  644. package/src/capabilities/sources/types.ts +18 -25
  645. package/src/capabilities/sources/update.render.ts +10 -3
  646. package/src/capabilities/sources/update.verb.ts +13 -24
  647. package/src/capabilities/surface.test.ts +165 -25
  648. package/src/capabilities/tier.parity.test.ts +144 -0
  649. package/src/capabilities/upgrade/runUpgrade.ts +8 -8
  650. package/src/capabilities/upgrade/upgrade.render.ts +4 -5
  651. package/src/capabilities/upgrade/upgrade.test.ts +3 -3
  652. package/src/capabilities/upgrade/upgrade.verb.ts +8 -4
  653. package/src/capabilities/version/index.ts +12 -0
  654. package/src/capabilities/version/version.test.ts +66 -0
  655. package/src/capabilities/version/version.verb.ts +39 -0
  656. package/src/constants.test.ts +8 -6
  657. package/src/constants.ts +78 -22
  658. package/src/identity.test.ts +348 -0
  659. package/src/index.ts +2 -2
  660. package/src/kernel/completion/__snapshots__/emitScripts.test.ts.snap +20 -15
  661. package/src/kernel/completion/complete.test.ts +12 -2
  662. package/src/kernel/completion/complete.ts +1 -1
  663. package/src/kernel/completion/emitScripts.test.ts +1 -1
  664. package/src/kernel/completion/emitScripts.ts +5 -3
  665. package/src/kernel/completion/entitySource.test.ts +185 -41
  666. package/src/kernel/completion/entitySource.ts +133 -110
  667. package/src/kernel/completion/model.test.ts +165 -13
  668. package/src/kernel/completion/model.ts +105 -14
  669. package/src/kernel/completion/parse.test.ts +4 -7
  670. package/src/kernel/completion/parse.ts +15 -0
  671. package/src/kernel/completion/resolve.test.ts +0 -1
  672. package/src/kernel/completion/safety.test.ts +104 -50
  673. package/src/kernel/completion/shellDrive.test.ts +611 -0
  674. package/src/kernel/completion/templates/bash.ts +7 -2
  675. package/src/kernel/completion/templates/fish.ts +28 -6
  676. package/src/kernel/completion/templates/index.ts +23 -0
  677. package/src/kernel/completion/types.ts +10 -3
  678. package/src/kernel/config/defaults.test.ts +108 -0
  679. package/src/kernel/config/defaults.ts +13 -23
  680. package/src/kernel/config/evaluateProjectConfig.ts +33 -11
  681. package/src/kernel/config/findProjectConfig.ts +4 -3
  682. package/src/kernel/config/firstRun.test.ts +44 -38
  683. package/src/kernel/config/firstRun.ts +24 -81
  684. package/src/kernel/config/globalConfig.ts +2 -2
  685. package/src/kernel/config/index.ts +5 -6
  686. package/src/kernel/config/paths.ts +17 -17
  687. package/src/kernel/config/readConfig.test.ts +246 -7
  688. package/src/kernel/config/readConfig.ts +8 -8
  689. package/src/kernel/config/schema.test.ts +50 -0
  690. package/src/kernel/config/schema.ts +100 -11
  691. package/src/kernel/config/types.ts +75 -19
  692. package/src/kernel/copy.test.ts +483 -0
  693. package/src/kernel/copy.ts +54 -0
  694. package/src/kernel/error/PragmaError.test.ts +6 -3
  695. package/src/kernel/error/PragmaError.ts +4 -2
  696. package/src/kernel/error/constants.ts +7 -4
  697. package/src/kernel/error/fromTaskError.ts +28 -6
  698. package/src/kernel/error/index.ts +1 -1
  699. package/src/kernel/error/recovery.test.ts +22 -45
  700. package/src/kernel/error/recovery.ts +36 -27
  701. package/src/kernel/error/renderError.ts +42 -1
  702. package/src/kernel/error/types.ts +25 -4
  703. package/src/kernel/index.ts +26 -0
  704. package/src/kernel/packs/collect.test.ts +195 -11
  705. package/src/kernel/packs/collect.ts +212 -61
  706. package/src/kernel/packs/compile.test.ts +293 -8
  707. package/src/kernel/packs/compile.ts +108 -15
  708. package/src/kernel/packs/disclosure.test.ts +5 -2
  709. package/src/kernel/packs/disclosure.ts +2 -2
  710. package/src/kernel/packs/graphql/buildLookupDocument.ts +1 -1
  711. package/src/kernel/packs/graphql/fetchGraphqlLookup.ts +13 -13
  712. package/src/kernel/packs/graphql/index.ts +20 -0
  713. package/src/kernel/packs/graphqlSource.test.ts +6 -3
  714. package/src/kernel/packs/index.ts +40 -0
  715. package/src/kernel/packs/iri.test.ts +73 -0
  716. package/src/kernel/packs/iri.ts +70 -20
  717. package/src/kernel/packs/renderPack.ts +28 -7
  718. package/src/kernel/packs/resolveEntity.test.ts +213 -0
  719. package/src/kernel/packs/resolveEntity.ts +132 -34
  720. package/src/kernel/packs/runBodies.ts +16 -16
  721. package/src/kernel/packs/sample.ts +1 -1
  722. package/src/kernel/packs/schema.ts +114 -11
  723. package/src/kernel/packs/sparql/applyFilters.ts +16 -17
  724. package/src/kernel/packs/sparql/buildLookupQuery.ts +75 -3
  725. package/src/kernel/packs/sparql/index.ts +37 -0
  726. package/src/kernel/packs/sparql/runSelect.test.ts +104 -10
  727. package/src/kernel/packs/sparql/runSelect.ts +75 -37
  728. package/src/kernel/packs/toolDescription.test.ts +52 -5
  729. package/src/kernel/packs/types.ts +52 -4
  730. package/src/kernel/packs/uniqueness.ts +5 -5
  731. package/src/kernel/project/cli/buildProgram.test.ts +157 -17
  732. package/src/kernel/project/cli/buildProgram.ts +77 -18
  733. package/src/kernel/project/cli/constants.ts +34 -0
  734. package/src/kernel/project/cli/dispatch.test.ts +227 -3
  735. package/src/kernel/project/cli/dispatch.ts +250 -48
  736. package/src/kernel/project/cli/exitCodes.ts +1 -1
  737. package/src/kernel/project/cli/globalFlags.test.ts +117 -1
  738. package/src/kernel/project/cli/globalFlags.ts +130 -30
  739. package/src/kernel/project/cli/helpFormat.ts +14 -1
  740. package/src/kernel/project/cli/rootHelp.ts +140 -111
  741. package/src/kernel/project/cli/suggest.test.ts +33 -1
  742. package/src/kernel/project/cli/suggest.ts +25 -1
  743. package/src/kernel/project/cli/verbHelp.test.ts +30 -0
  744. package/src/kernel/project/cli/verbHelp.ts +23 -7
  745. package/src/kernel/project/mcp/buildServer.ts +18 -10
  746. package/src/kernel/project/mcp/envelope.ts +2 -2
  747. package/src/kernel/project/mcp/instructions.ts +12 -7
  748. package/src/kernel/project/mcp/mcpError.ts +1 -1
  749. package/src/kernel/project/mcp/parity.test.ts +42 -1
  750. package/src/kernel/project/mcp/prompts/index.ts +37 -0
  751. package/src/kernel/project/mcp/prompts/prompts.test.ts +120 -5
  752. package/src/kernel/project/mcp/prompts/provider.ts +22 -8
  753. package/src/kernel/project/mcp/prompts/source.ts +69 -68
  754. package/src/kernel/project/mcp/registerVerb.ts +56 -11
  755. package/src/kernel/project/mcp/serve.ts +13 -5
  756. package/src/kernel/project/mcp/toolDescriptions.test.ts +6 -2
  757. package/src/kernel/render/__snapshots__/renderers.test.ts.snap +7 -4
  758. package/src/kernel/render/contracts.ts +21 -0
  759. package/src/kernel/render/disclosure.ts +4 -2
  760. package/src/kernel/render/envelope.ts +2 -3
  761. package/src/kernel/render/formatters.ts +1 -1
  762. package/src/kernel/render/prefixes.test.ts +36 -0
  763. package/src/kernel/render/prefixes.ts +40 -13
  764. package/src/kernel/render/renderers.test.ts +244 -7
  765. package/src/kernel/render/renderers.ts +222 -20
  766. package/src/kernel/render/style.test.ts +75 -24
  767. package/src/kernel/render/style.ts +31 -1
  768. package/src/kernel/render/turtle.ts +222 -0
  769. package/src/kernel/runtime/graphpack/build.ts +29 -3
  770. package/src/kernel/runtime/graphpack/buildIndex.test.ts +46 -0
  771. package/src/kernel/runtime/graphpack/buildIndex.ts +53 -18
  772. package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +5 -5
  773. package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +3 -3
  774. package/src/kernel/runtime/graphpack/embedded/pack.stories.generated.ts +3 -0
  775. package/src/kernel/runtime/graphpack/embedded.ts +39 -13
  776. package/src/kernel/runtime/graphpack/graphpack.test.ts +205 -5
  777. package/src/kernel/runtime/graphpack/hash.ts +3 -2
  778. package/src/kernel/runtime/graphpack/index.ts +1 -1
  779. package/src/kernel/runtime/graphpack/manifest.ts +114 -12
  780. package/src/kernel/runtime/graphpack/read.ts +5 -11
  781. package/src/kernel/runtime/graphpack/schemas.ts +74 -0
  782. package/src/kernel/runtime/graphpack/stories.ts +84 -0
  783. package/src/kernel/runtime/graphpack/types.ts +61 -48
  784. package/src/kernel/runtime/loadSession.ts +1 -1
  785. package/src/kernel/runtime/paths.ts +64 -15
  786. package/src/kernel/runtime/probe.test.ts +8 -4
  787. package/src/kernel/runtime/probe.ts +6 -6
  788. package/src/kernel/runtime/readEntity.ts +477 -32
  789. package/src/kernel/runtime/refs/gitOps.ts +1 -19
  790. package/src/kernel/runtime/refs/index.ts +39 -0
  791. package/src/kernel/runtime/refs/parseRef.ts +8 -8
  792. package/src/kernel/runtime/refs/resolve.ts +82 -66
  793. package/src/kernel/runtime/resolveSources.test.ts +63 -24
  794. package/src/kernel/runtime/resolveSources.ts +36 -25
  795. package/src/kernel/runtime/storeReadiness.ts +10 -10
  796. package/src/kernel/runtime/storeless.test.ts +1 -1
  797. package/src/kernel/runtime/types.ts +15 -1
  798. package/src/kernel/runtime/wasmEmbed.test.ts +56 -55
  799. package/src/kernel/spec/emitReference.test.ts +3 -3
  800. package/src/kernel/spec/emitReference.ts +242 -34
  801. package/src/kernel/spec/emitSurface.ts +57 -11
  802. package/src/kernel/spec/surfaceConformance.test.ts +4 -2
  803. package/src/kernel/spec/surfaceConformance.ts +8 -0
  804. package/src/kernel/spec/types.ts +277 -13
  805. package/src/kernel/spec/validate.ts +2 -1
  806. package/src/kernel/vocabulary.test.ts +164 -0
  807. package/src/kernel/vocabulary.ts +146 -0
  808. package/src/testing/PARITY_GAPS.ts +8 -2
  809. package/src/testing/behavioral/README.md +3 -3
  810. package/src/testing/behavioral/completion.test.ts +19 -6
  811. package/src/testing/behavioral/docExamples.test.ts +14 -0
  812. package/src/testing/behavioral/errorMatrix.mcp.test.ts +6 -5
  813. package/src/testing/behavioral/errorMatrix.storeless.test.ts +1 -1
  814. package/src/testing/behavioral/exitCodes.e2e.test.ts +6 -5
  815. package/src/testing/behavioral/firstRun.e2e.test.ts +24 -24
  816. package/src/testing/behavioral/harness.foundation.test.ts +14 -5
  817. package/src/testing/behavioral/journeys.cli.test.ts +117 -76
  818. package/src/testing/behavioral/journeys.defaultPack.test.ts +88 -182
  819. package/src/testing/behavioral/journeys.firstInstall.test.ts +167 -0
  820. package/src/testing/behavioral/journeys.implementation.test.ts +206 -0
  821. package/src/testing/behavioral/journeys.interactiveTty.e2e.test.ts +2 -2
  822. package/src/testing/behavioral/journeys.mcpLifecycle.mcp.test.ts +9 -6
  823. package/src/testing/behavioral/journeys.packageStories.test.ts +188 -0
  824. package/src/testing/behavioral/liveReadSurface.ts +4 -3
  825. package/src/testing/behavioral/mcpServe.e2e.test.ts +57 -2
  826. package/src/testing/behavioral/mcpSurface.test.ts +10 -5
  827. package/src/testing/behavioral/rootCli.e2e.test.ts +26 -2
  828. package/src/testing/behavioral/staleCommands.test.ts +10 -0
  829. package/src/testing/eval/__snapshots__/eval.test.ts.snap +7 -7
  830. package/src/testing/eval/cases/assembly.ts +13 -6
  831. package/src/testing/eval/cases/effectful.ts +28 -15
  832. package/src/testing/eval/cases/readNouns.ts +22 -20
  833. package/src/testing/eval/cases/stable.ts +5 -1
  834. package/src/testing/eval/eval.test.ts +7 -1
  835. package/src/testing/fixtures/blockGraph.ts +79 -0
  836. package/src/testing/fixtures/fixtureCapability.ts +45 -1
  837. package/src/testing/fixtures/graph/canonical.ts +94 -5
  838. package/src/testing/fixtures/graph/defaultPack.ts +7 -6
  839. package/src/testing/fixtures/graph/owlExport.ts +7 -5
  840. package/src/testing/helpers/blankCanonicalRanges.ts +36 -0
  841. package/src/testing/helpers/fixtureGraph.ts +33 -16
  842. package/src/testing/helpers/packRuntime.ts +2 -3
  843. package/src/testing/helpers/projectCli.ts +2 -1
  844. package/src/testing/helpers/projectMcp.ts +38 -6
  845. package/src/testing/helpers/runCli.ts +35 -18
  846. package/src/testing/perf/budgets.test.ts +24 -9
  847. package/src/testing/perf/budgets.ts +76 -12
  848. package/src/testing/perf/codegen.test.ts +126 -0
  849. package/src/testing/perf/globalSetup.test.ts +286 -0
  850. package/src/testing/perf/globalSetup.ts +611 -14
  851. package/src/testing/perf/measure.test.ts +38 -0
  852. package/src/testing/perf/measure.ts +23 -4
  853. package/src/testing/setupXdgIsolation.ts +81 -21
  854. package/src/testing/tempRoot.globalSetup.ts +122 -0
  855. package/src/types.ts +2 -2
  856. package/dist/pragma +0 -0
  857. package/src/capabilities/block/blockList.test.ts +0 -79
  858. package/src/capabilities/block/blockList.verb.ts +0 -163
  859. package/src/capabilities/block/index.ts +0 -25
  860. package/src/capabilities/block/pack.ts +0 -166
  861. package/src/capabilities/block/parity.test.ts +0 -187
  862. package/src/capabilities/block/tierChain.ts +0 -78
  863. package/src/capabilities/colophon/pragmaColophon.ts +0 -66
  864. package/src/capabilities/create/compiledCreate.subprocess.test.ts +0 -152
  865. package/src/capabilities/create/templates.embedded.generated.ts +0 -53
  866. package/src/capabilities/doctor/checks/checkConfigFile.ts +0 -41
  867. package/src/capabilities/doctor/checks/checkMcpCommands.ts +0 -114
  868. package/src/capabilities/doctor/checks/checkMcpConfigured.ts +0 -67
  869. package/src/capabilities/doctor/checks/checkSkillsSymlinked.ts +0 -60
  870. package/src/capabilities/doctor/checks/deriveBand.test.ts +0 -42
  871. package/src/capabilities/doctor/checks/deriveBand.ts +0 -28
  872. package/src/capabilities/modifier/index.ts +0 -15
  873. package/src/capabilities/modifier/pack.ts +0 -64
  874. package/src/capabilities/standard/index.ts +0 -18
  875. package/src/capabilities/standard/pack.ts +0 -128
  876. package/src/capabilities/tier/index.ts +0 -19
  877. package/src/capabilities/tier/lookup.render.test.ts +0 -72
  878. package/src/capabilities/tier/lookup.render.ts +0 -59
  879. package/src/capabilities/tier/lookup.test.ts +0 -83
  880. package/src/capabilities/tier/lookup.verb.ts +0 -44
  881. package/src/capabilities/tier/pack.ts +0 -28
  882. package/src/capabilities/tier/runLookup.ts +0 -87
  883. package/src/capabilities/token/addConfig.render.ts +0 -27
  884. package/src/capabilities/token/addConfig.test.ts +0 -62
  885. package/src/capabilities/token/addConfig.verb.ts +0 -40
  886. package/src/capabilities/token/index.ts +0 -19
  887. package/src/capabilities/token/pack.ts +0 -58
  888. package/src/capabilities/token/runAddConfig.ts +0 -95
  889. package/src/kernel/completion/bashDrive.test.ts +0 -73
  890. package/src/kernel/config/__snapshots__/firstRun.test.ts.snap +0 -11
  891. package/src/kernel/runtime/graphpack/embedded/sample.ttl +0 -39
  892. package/src/kernel/runtime/lock.ts +0 -90
package/pragma.conf.ts ADDED
@@ -0,0 +1,853 @@
1
+ /**
2
+ * The pragma distribution config — identity, default packs, and the read
3
+ * stories those packs supply.
4
+ *
5
+ * Consumed three times: statically imported by `src/kernel/config/defaults.ts`
6
+ * as the lowest config layer (compiled with the source — no fs), by
7
+ * `src/capabilities/distribution.ts` (which compiles the declared stories into
8
+ * capability modules at module load), and at build time by the bundler. A
9
+ * NON-magic name on purpose: `findProjectConfig` only discovers
10
+ * `pragma.config.{ts,js}`, so this file is never mistaken for a project config.
11
+ * Validated by the same `parseRawConfig` as every layer.
12
+ *
13
+ * INERT DATA. It must never gain a value import: `src/constants.ts` statically
14
+ * imports it to project the program's identity, so anything that runs at this
15
+ * module's load runs on `--help`, `__complete` and `--version`. That also makes
16
+ * the reverse edge impossible — importing `constants.js` from here is a
17
+ * temporal-dead-zone cycle. It is also why no string below names the binary
18
+ * except `name` itself: an `emptyRecovery.cli` is the command WITHOUT the
19
+ * binary name, and the renderer prepends the consuming distribution's.
20
+ * `capabilities/lazy.test.ts` pins both halves of that.
21
+ */
22
+
23
+ import type { RawConfig } from "./src/kernel/config/types.js";
24
+ import type { PackDefinition } from "./src/kernel/packs/types.js";
25
+
26
+ /**
27
+ * The design-system domain colophon — the ontology + graph story, surfaced by
28
+ * `pragma colophon` after pragma's own. Declared on the flagship UI-block noun
29
+ * because `block` most embodies the design system; it narrates the DOMAIN (what
30
+ * the graph models), not the toolchain (pragma's built-in section).
31
+ */
32
+ const DESIGN_SYSTEM_COLOPHON = `The Canonical design system is a **knowledge graph**, not a component library.
33
+ Every block, token, modifier, standard, and tier is a node in an RDF store,
34
+ described by the \`ds:\` ontology and queried the same way whether you reach it
35
+ over GraphQL or raw SPARQL.
36
+
37
+ ## What the graph models
38
+
39
+ - **Blocks** — components, patterns, layouts, and subcomponents (the \`ds:UIBlock\`
40
+ family). A block carries its anatomy, guidelines, and \`when to use\` / \`when
41
+ not to use\` narrative as graph properties, not prose in a wiki.
42
+ - **Modifiers** — families of variant values (\`ds:hasModifierFamily\` →
43
+ \`ds:hasModifier\`) a block composes, so a variant is a relationship, not a
44
+ string.
45
+ - **Tokens** — the themeable design values, resolved per theme.
46
+ - **Standards** — the do / don't coding guidance, categorized and linked to the
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.
54
+
55
+ ## How it fits together
56
+
57
+ - **Tiers** are a hierarchy (\`global\` > \`apps\` > \`apps/lxd\`): a lower tier
58
+ inherits and overrides the blocks of its ancestors, so scoping a query to a
59
+ tier walks that chain.
60
+ - **Channels** (\`normal\`, \`experimental\`, \`prerelease\`) gate visibility, so an
61
+ in-progress block never leaks into a stable answer.
62
+
63
+ ## Why RDF
64
+
65
+ One graph makes every relationship first-class and queryable: \`block lookup\`
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
70
+ by \`sources update\` and addressed by content hash, so the domain you query is
71
+ exactly the domain that was published.`;
72
+
73
+ /**
74
+ * The read stories the design-system pack supplies — `block`, `token`,
75
+ * `modifier` and `tier` as declared data rather than code.
76
+ *
77
+ * The association with the pack is the point: when `@canonical/design-system`
78
+ * starts shipping its own `stories/*.json`, this block is deleted and the
79
+ * package tier takes over with no code change here or anywhere else. The local
80
+ * `readonly PackDefinition[]` annotation is what type-checks them —
81
+ * `PackSource.stories` is deliberately `readonly unknown[]`, because the config
82
+ * layer does not know the pack grammar (`parsePackDefinition` does).
83
+ */
84
+ const designSystemStories: readonly PackDefinition[] = [
85
+ // `block list` is declared content (L-OPEN-9): one unfiltered SELECT over
86
+ // the four UIBlock classes, listing ALL blocks — experimental and alpha ones
87
+ // included, for everyone — until filtering returns in declared form. The
88
+ // hand-written tier-chain/channel filtering (and its `--all-tiers` escape)
89
+ // is removed with the code, an owner-signed consequence. Display parity
90
+ // lives IN the query: `VALUES ?class` closes the type set, so the BINDs
91
+ // that derive `name` (declared name, else the IRI's local name), `type`
92
+ // (lowercased class local name), and `tier` (tier IRI's local name) operate
93
+ // over known shapes — the `standard` story's BIND/COALESCE precedent.
94
+ //
95
+ // `block lookup` is served over the GraphQL fetch path (ONE generated document
96
+ // over the `UIBlock` interface covering Component/Pattern/Layout/Subcomponent).
97
+ // Base level mirrors the old summary view (name/tier/summary); the default is
98
+ // `detailed`, matching the old CLI which rendered anatomy and modifiers
99
+ // without a flag. A derived name that maps onto no schema field is omitted
100
+ // (OPTIONAL parity), so a graph lacking whenToUse/whenNotToUse degrades
101
+ // gracefully.
102
+ //
103
+ // Disclosure declares the FULL canonical ladder `[summary, standard,
104
+ // detailed]` — the same set `standard` declares — so a config
105
+ // `detail=standard` names a level `block` advertises rather than one it
106
+ // silently accepts-then-degrades. Block carries no `standard`-tier content of
107
+ // its own; gating is by canonical index, so `standard` resolves to the base
108
+ // view. Only the level SET is aligned: the per-noun DEFAULT stays domain-tuned
109
+ // (`block` rich-by-default, `standard` terse-by-default).
110
+ {
111
+ noun: "block",
112
+ description: "List all design system blocks.",
113
+ toolDescription:
114
+ "List all design system blocks with their type, tier, and modifier families. Use when browsing which blocks exist. Example: block_list {}.",
115
+ colophon: DESIGN_SYSTEM_COLOPHON,
116
+ list: {
117
+ query: [
118
+ "SELECT ?uri ?name ?type ?tier",
119
+ ' (GROUP_CONCAT(DISTINCT ?modName; separator=", ") AS ?modifiers)',
120
+ "WHERE {",
121
+ " VALUES ?class { ds:Component ds:Pattern ds:Layout ds:Subcomponent }",
122
+ " ?uri a ?class .",
123
+ " OPTIONAL { ?uri ds:name ?dsName }",
124
+ " OPTIONAL { ?uri ds:tier ?tierUri }",
125
+ " OPTIONAL { ?uri ds:hasModifierFamily ?family . ?family ds:name ?modName }",
126
+ ' BIND(COALESCE(?dsName, REPLACE(STR(?uri), "^.*[/#]", "")) AS ?name)',
127
+ ' BIND(LCASE(REPLACE(STR(?class), "^.*[/#]", "")) AS ?type)',
128
+ ' BIND(REPLACE(STR(?tierUri), "^.*[/#]", "") AS ?tier)',
129
+ "}",
130
+ "GROUP BY ?uri ?name ?type ?tier",
131
+ "ORDER BY ?name",
132
+ ].join("\n"),
133
+ columns: [
134
+ { field: "name", label: "Name" },
135
+ { field: "type", label: "Type" },
136
+ { field: "tier", label: "Tier" },
137
+ { field: "modifiers", label: "Modifiers" },
138
+ { field: "uri", label: "IRI" },
139
+ ],
140
+ emptyRecovery: {
141
+ message:
142
+ "No blocks in the store. Build it from the configured design-system packs.",
143
+ cli: "sources update",
144
+ },
145
+ },
146
+ lookup: {
147
+ source: "graphql",
148
+ toolDescription:
149
+ '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"] }.',
150
+ by: "ds:name",
151
+ types: ["ds:Component", "ds:Pattern", "ds:Layout", "ds:Subcomponent"],
152
+ // A subcomponent is a PART of a block, never the block someone means:
153
+ // for the query "button" the 86 `…-close_button` subcomponents used to
154
+ // outrank `ds:global.component.button` on the alphabet alone. Weighting
155
+ // them below 1 sinks every one of them under every component at equal
156
+ // match score, and lowers their `annotations.priority` in the resource
157
+ // listing by the same declaration.
158
+ weights: { "ds:Subcomponent": 0.6 },
159
+ graphqlType: "UIBlock",
160
+ fields: [
161
+ { name: "tier", property: "ds:tier", label: "Tier" },
162
+ {
163
+ name: "figmaLink",
164
+ property: "ds:figmaLink",
165
+ label: "Figma",
166
+ level: "detailed",
167
+ },
168
+ ],
169
+ sections: [
170
+ { name: "summary", property: "ds:summary", label: "Summary" },
171
+ {
172
+ name: "whenToUse",
173
+ property: "ds:whenToUse",
174
+ label: "When to use",
175
+ level: "detailed",
176
+ },
177
+ {
178
+ name: "whenNotToUse",
179
+ property: "ds:whenNotToUse",
180
+ label: "When not to use",
181
+ level: "detailed",
182
+ },
183
+ {
184
+ name: "guidelines",
185
+ property: "ds:guidelines",
186
+ label: "Guidelines",
187
+ level: "detailed",
188
+ },
189
+ {
190
+ name: "anatomyDsl",
191
+ property: "ds:anatomyDsl",
192
+ label: "Anatomy (DSL)",
193
+ kind: "code",
194
+ level: "detailed",
195
+ },
196
+ {
197
+ name: "anatomyClassic",
198
+ property: "ds:anatomyClassic",
199
+ label: "Anatomy (classic)",
200
+ kind: "code",
201
+ level: "detailed",
202
+ },
203
+ ],
204
+ expand: [
205
+ {
206
+ name: "modifierFamilies",
207
+ heading: "Modifier Families",
208
+ relation: "ds:hasModifierFamily",
209
+ level: "detailed",
210
+ select: [
211
+ { name: "name", property: "ds:name" },
212
+ {
213
+ name: "values",
214
+ relation: "ds:hasModifier",
215
+ select: [{ name: "name", property: "ds:name" }],
216
+ },
217
+ ],
218
+ },
219
+ {
220
+ name: "properties",
221
+ heading: "Properties",
222
+ relation: "ds:hasProperty",
223
+ kind: "table",
224
+ level: "detailed",
225
+ select: [
226
+ { name: "name", property: "ds:name" },
227
+ { name: "type", property: "ds:propertyType" },
228
+ { name: "optional", property: "ds:optional" },
229
+ ],
230
+ },
231
+ {
232
+ name: "subcomponents",
233
+ heading: "Subcomponents",
234
+ relation: "ds:hasSubcomponent",
235
+ level: "detailed",
236
+ select: [
237
+ { name: "name", property: "ds:name" },
238
+ { name: "uri", property: "ds:name", graphqlField: "uri" },
239
+ ],
240
+ },
241
+ ],
242
+ disclosure: {
243
+ levels: ["summary", "standard", "detailed"],
244
+ default: "detailed",
245
+ },
246
+ sample: {
247
+ fixedCount: true,
248
+ toolDescription:
249
+ "Return randomly selected complete design-system blocks as exemplars. Use BEFORE writing queries to see actual data shapes, anatomy, and property names.",
250
+ },
251
+ },
252
+ },
253
+
254
+ // Design tokens: SPARQL-sourced on both verbs. There is no `ds:Token` GraphQL
255
+ // type to project against when the graph ships no tokens, and the lookup reads
256
+ // a property path (`ds:tokenType/rdfs:label`) only SPARQL can express. The
257
+ // `emptyRecovery` install hint is the story users see on an empty store. The
258
+ // noun is now purely declarative: `token add-config` wrote a starter file, and
259
+ // L-OPEN-9 removed it rather than growing the read grammar a mutation verb.
260
+ {
261
+ noun: "token",
262
+ description: "List all design tokens.",
263
+ toolDescription:
264
+ "List all design tokens with their type. Use when browsing which tokens exist under the active scope. Example: token_list {}.",
265
+ list: {
266
+ query: [
267
+ "SELECT ?uri ?name ?category WHERE {",
268
+ " ?uri a ds:Token ;",
269
+ " ds:tokenId ?name .",
270
+ " OPTIONAL {",
271
+ " ?uri ds:tokenType ?type .",
272
+ " ?type rdfs:label ?category .",
273
+ " }",
274
+ "}",
275
+ "ORDER BY ?name",
276
+ ].join("\n"),
277
+ columns: [
278
+ { field: "uri", label: "IRI" },
279
+ { field: "name", label: "Name" },
280
+ { field: "category", label: "Type" },
281
+ ],
282
+ emptyRecovery: {
283
+ message:
284
+ "No tokens in the store. Build it from the configured design-system packs.",
285
+ cli: "sources update",
286
+ },
287
+ },
288
+ lookup: {
289
+ source: "sparql",
290
+ by: "ds:tokenId",
291
+ type: "ds:Token",
292
+ toolDescription:
293
+ '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"] }.',
294
+ fields: [
295
+ {
296
+ name: "category",
297
+ property: "ds:tokenType/rdfs:label",
298
+ label: "Type",
299
+ },
300
+ { name: "valueLight", property: "ds:valueLight", label: "Light value" },
301
+ { name: "valueDark", property: "ds:valueDark", label: "Dark value" },
302
+ ],
303
+ sample: {
304
+ fixedCount: true,
305
+ toolDescription:
306
+ "Return randomly selected complete design tokens (with theme values) as exemplars. Use BEFORE writing queries to see actual data shapes.",
307
+ },
308
+ },
309
+ },
310
+
311
+ // Modifier families. `modifier list` is SPARQL (an alternation path collects
312
+ // values asserted in either direction); `modifier lookup` is GRAPHQL, where
313
+ // the compiled `ModifierFamily.modifiers` field is the declared-inverse union
314
+ // and resolves both directions in ONE generated document — exactly the case
315
+ // the GraphQL fetch path exists for.
316
+ {
317
+ noun: "modifier",
318
+ description: "List all modifier families.",
319
+ toolDescription:
320
+ "List all modifier families with their values. Use when browsing which modifier families exist and the values each allows. Example: modifier_list {}.",
321
+ list: {
322
+ query: [
323
+ "SELECT ?uri ?name",
324
+ ' (GROUP_CONCAT(DISTINCT ?valueName; separator=", ") AS ?values)',
325
+ "WHERE {",
326
+ " ?uri a ds:ModifierFamily ;",
327
+ " ds:name ?name .",
328
+ " OPTIONAL {",
329
+ " ?uri (ds:hasModifier|^ds:modifierFamily) ?value .",
330
+ " ?value ds:name ?valueName .",
331
+ " }",
332
+ "}",
333
+ "GROUP BY ?uri ?name",
334
+ "ORDER BY ?name",
335
+ ].join("\n"),
336
+ columns: [
337
+ { field: "uri", label: "IRI" },
338
+ { field: "name", label: "Name" },
339
+ { field: "values", label: "Values" },
340
+ ],
341
+ emptyRecovery: {
342
+ message:
343
+ "No modifier families in the store. Build it from the configured design-system packs.",
344
+ cli: "sources update",
345
+ },
346
+ },
347
+ lookup: {
348
+ source: "graphql",
349
+ by: "ds:name",
350
+ type: "ds:ModifierFamily",
351
+ toolDescription:
352
+ '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"] }.',
353
+ expand: [
354
+ {
355
+ name: "values",
356
+ heading: "Values",
357
+ relation: "ds:hasModifier",
358
+ select: [{ name: "name", property: "ds:name" }],
359
+ },
360
+ ],
361
+ sample: {
362
+ fixedCount: true,
363
+ toolDescription:
364
+ "Return randomly selected complete modifier families (with value lists) as exemplars. Use BEFORE writing queries to see actual data shapes.",
365
+ },
366
+ },
367
+ },
368
+
369
+ // Tiers. The hierarchy is encoded in the slash-separated path string
370
+ // (`apps/lxd`), not in graph edges, so `tier list` is a flat, name-ordered
371
+ // list. `tier lookup` resolves a tier by its declared name and expands the
372
+ // blocks scoped DIRECTLY to it through the inverse path `^ds:tier` — a
373
+ // single-hop expand the generated sub-SELECT emits as `<tier> ^ds:tier ?child`
374
+ // (property paths, inverse included, are in-contract for `PackExpand.relation`).
375
+ // Retiring the bespoke single-`<name>` lookup for this declared variadic one
376
+ // is an L-OPEN-9 covenant change, recorded in the covenant's $comment.
377
+ {
378
+ noun: "tier",
379
+ description: "List all tiers in the design system ontology.",
380
+ toolDescription:
381
+ "List all tiers in the design-system ontology. Use when understanding the tier hierarchy before setting a tier filter. Example: tier_list {}.",
382
+ list: {
383
+ query: [
384
+ "SELECT ?uri ?name WHERE {",
385
+ " ?uri a ds:Tier ;",
386
+ " ds:name ?name .",
387
+ "} ORDER BY ?name",
388
+ ].join("\n"),
389
+ columns: [
390
+ { field: "uri", label: "IRI" },
391
+ { field: "name", label: "Name" },
392
+ ],
393
+ },
394
+ lookup: {
395
+ source: "sparql",
396
+ by: "ds:name",
397
+ type: "ds:Tier",
398
+ description: "Show tiers by name, with the blocks scoped to each.",
399
+ toolDescription:
400
+ '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"] }.',
401
+ expand: [
402
+ {
403
+ name: "blocks",
404
+ heading: "Blocks",
405
+ relation: "^ds:tier",
406
+ select: [{ name: "name", property: "ds:name" }],
407
+ },
408
+ ],
409
+ },
410
+ },
411
+ ];
412
+
413
+ /**
414
+ * The `concept` story the design-system pack also supplies: long-form
415
+ * documentation not bound to a single UIBlock (foundations, how-to guides,
416
+ * decision guides) — ds:Concept entries ingested from Coda. The list stays
417
+ * terse (name/type/summary); the Markdown body is the lookup's payload,
418
+ * served at the `standard` level with knownEdgeCases behind `detailed`.
419
+ */
420
+ const conceptStory: PackDefinition = {
421
+ noun: "concept",
422
+ description: "List design-system concepts.",
423
+ toolDescription:
424
+ "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.",
425
+ list: {
426
+ query: [
427
+ "SELECT ?uri ?name ?type ?summary",
428
+ "WHERE {",
429
+ " ?uri a ds:Concept ;",
430
+ " ds:name ?name .",
431
+ " OPTIONAL { ?uri ds:conceptType/ds:name ?type . }",
432
+ " OPTIONAL { ?uri ds:summary ?summary . }",
433
+ "}",
434
+ "ORDER BY ?name",
435
+ ].join("\n"),
436
+ columns: [
437
+ { field: "uri", label: "IRI" },
438
+ { field: "name", label: "Name" },
439
+ { field: "type", label: "Type" },
440
+ { field: "summary", label: "Summary" },
441
+ ],
442
+ filters: [
443
+ {
444
+ param: "type",
445
+ variable: "type",
446
+ description: "Filter by concept type (e.g. Explanation, How-to guide).",
447
+ },
448
+ ],
449
+ search: {
450
+ variables: ["name", "summary"],
451
+ description: "Search in name and summary.",
452
+ },
453
+ emptyRecovery: {
454
+ message:
455
+ "No concepts in the store. The @canonical/design-system pack provides them; refresh the local store.",
456
+ cli: "sources update",
457
+ },
458
+ },
459
+ lookup: {
460
+ source: "sparql",
461
+ by: "ds:name",
462
+ type: "ds:Concept",
463
+ description:
464
+ "Look up a concept's full documentation by name, IRI, or glob.",
465
+ toolDescription:
466
+ "Get a design-system concept's full Markdown documentation. Address concepts by name, prefixed name (ds:concept.…), absolute IRI, or glob pattern.",
467
+ fields: [
468
+ { name: "type", property: "ds:conceptType/ds:name", label: "Type" },
469
+ { name: "tier", property: "ds:tier", label: "Tier" },
470
+ { name: "summary", property: "ds:summary", label: "Summary" },
471
+ ],
472
+ sections: [
473
+ {
474
+ name: "content",
475
+ property: "ds:content",
476
+ label: "Content",
477
+ level: "standard",
478
+ },
479
+ {
480
+ name: "knownEdgeCases",
481
+ property: "ds:knownEdgeCases",
482
+ label: "Known edge cases",
483
+ level: "detailed",
484
+ },
485
+ ],
486
+ disclosure: {
487
+ levels: ["summary", "standard", "detailed"],
488
+ default: "standard",
489
+ },
490
+ },
491
+ };
492
+
493
+ /**
494
+ * The read story the implementation-graph pack supplies — which library
495
+ * implements which block, collected from the `@implements` annotations in this
496
+ * monorepo's source.
497
+ *
498
+ * The join this noun exists for crosses two packs: `ds:implementsBlock` points
499
+ * from an implementation collected HERE at the IRI of a block declared in
500
+ * `@canonical/design-system`. Both land in one store under the pinned `ds:`
501
+ * namespace, so `implementation list` answers "which React components implement
502
+ * a global-tier block" as a query rather than an afternoon of grepping — which
503
+ * is what {@link DESIGN_SYSTEM_COLOPHON} promises.
504
+ *
505
+ * LIST-ONLY, deliberately. A `ds:ImplementationObject` carries no name literal
506
+ * — it IS the edge from a library to a block, plus the two source links — so
507
+ * there is nothing a `lookup` could disclose that the list row does not already
508
+ * hold. The grammar admits a story with only one half; a lookup keyed on a
509
+ * synthesised name would be a name nobody would ever type. The libraries
510
+ * themselves ARE named, and `implementation libraries` lists them through the
511
+ * same list machinery (as `standard categories` does).
512
+ */
513
+ const implementationStory: PackDefinition = {
514
+ noun: "implementation",
515
+ description: "List which library implements which design-system block.",
516
+ toolDescription:
517
+ '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" }.',
518
+ list: {
519
+ // The library is the subject that carries the platform, so the row is
520
+ // assembled from BOTH ends of `ds:hasImplementation`. `?block` prefers the
521
+ // block's own `ds:name` and falls back to its IRI local name, so a row
522
+ // stays readable even when the design-system pack is absent from the store
523
+ // and only the bare `ds:implementsBlock` IRI is known.
524
+ query: [
525
+ "SELECT ?uri ?block ?library ?platform ?source",
526
+ "WHERE {",
527
+ " ?libUri a ds:ImplementationLibrary ;",
528
+ " ds:libraryName ?library ;",
529
+ " ds:hasImplementation ?uri .",
530
+ " ?uri a ds:ImplementationObject ;",
531
+ " ds:implementsBlock ?blockUri .",
532
+ " OPTIONAL { ?libUri ds:platform ?platform }",
533
+ " OPTIONAL { ?uri ds:headLink ?source }",
534
+ " OPTIONAL { ?blockUri ds:name ?dsName }",
535
+ ' BIND(COALESCE(?dsName, REPLACE(STR(?blockUri), "^.*[/#]", "")) AS ?block)',
536
+ "}",
537
+ "ORDER BY ?block ?library",
538
+ ].join("\n"),
539
+ columns: [
540
+ { field: "block", label: "Block" },
541
+ { field: "library", label: "Library" },
542
+ { field: "platform", label: "Platform" },
543
+ { field: "source", label: "Source" },
544
+ { field: "uri", label: "IRI" },
545
+ ],
546
+ filters: [
547
+ {
548
+ param: "platform",
549
+ variable: "platform",
550
+ description: "Filter by platform (e.g. react, svelte, typescript).",
551
+ },
552
+ {
553
+ param: "library",
554
+ variable: "library",
555
+ description: "Filter by implementation library name.",
556
+ },
557
+ ],
558
+ search: {
559
+ variables: ["block", "library"],
560
+ description: "Search in block and library name.",
561
+ },
562
+ emptyRecovery: {
563
+ message:
564
+ "No implementations in the store. The @canonical/ds-implementations pack provides them; refresh the local store.",
565
+ cli: "sources update",
566
+ },
567
+ },
568
+ verbs: [
569
+ {
570
+ verb: "libraries",
571
+ description: "List the implementation libraries.",
572
+ toolDescription:
573
+ "List the design-system implementation libraries — platform, tier, released version, and how many blocks each one implements. Example: implementation_libraries {}.",
574
+ // `ds:implementationCount` is asserted by the aggregate index on the SAME
575
+ // subject the per-library file describes, so the two merge in the store
576
+ // and the count needs no aggregation here.
577
+ query: [
578
+ "SELECT ?uri ?name ?platform ?tier ?version ?count",
579
+ "WHERE {",
580
+ " ?uri a ds:ImplementationLibrary ;",
581
+ " ds:libraryName ?name .",
582
+ " OPTIONAL { ?uri ds:platform ?platform }",
583
+ " OPTIONAL { ?uri ds:libraryTier ?tierUri }",
584
+ " OPTIONAL { ?uri ds:version ?version }",
585
+ " OPTIONAL { ?uri ds:implementationCount ?count }",
586
+ ' BIND(REPLACE(STR(?tierUri), "^.*[/#]", "") AS ?tier)',
587
+ "}",
588
+ "ORDER BY ?name",
589
+ ].join("\n"),
590
+ columns: [
591
+ { field: "name", label: "Library" },
592
+ { field: "platform", label: "Platform" },
593
+ { field: "tier", label: "Tier" },
594
+ { field: "version", label: "Version" },
595
+ { field: "count", label: "Blocks" },
596
+ { field: "uri", label: "IRI" },
597
+ ],
598
+ emptyRecovery: {
599
+ message:
600
+ "No implementation libraries in the store. The @canonical/ds-implementations pack provides them; refresh the local store.",
601
+ cli: "sources update",
602
+ },
603
+ },
604
+ ],
605
+ };
606
+
607
+ /**
608
+ * The read story the code-standards pack supplies — `standard` as declared data.
609
+ *
610
+ * Normalized for the v2 grammar: the old `digest` level is the canonical
611
+ * `standard`, so disclosure gates by the canonical index. The default is
612
+ * `summary` (base fields by name), `--detail standard` adds the `dos` examples,
613
+ * `--detail detailed` adds `donts`. `cs:extends` stays the raw IRI in JSON
614
+ * (renderers compact it at display time).
615
+ */
616
+ const codeStandardsStories: readonly PackDefinition[] = [
617
+ {
618
+ noun: "standard",
619
+ description: "List all code standards.",
620
+ toolDescription:
621
+ "List code standards. Optionally filter by category or search term.",
622
+ list: {
623
+ query: [
624
+ "SELECT ?uri ?name ?category ?description",
625
+ "WHERE {",
626
+ " ?uri a cs:CodeStandard ;",
627
+ " cs:description ?description .",
628
+ " OPTIONAL { ?uri cs:name ?n . }",
629
+ ' BIND(COALESCE(?n, REPLACE(STRAFTER(STR(?uri), "#"), "\\\\.", "/")) AS ?name)',
630
+ " OPTIONAL {",
631
+ " ?uri cs:hasCategory ?cat .",
632
+ " ?cat cs:slug ?category .",
633
+ " }",
634
+ "}",
635
+ "ORDER BY ?name",
636
+ ].join("\n"),
637
+ columns: [
638
+ { field: "uri", label: "IRI" },
639
+ { field: "name", label: "Name" },
640
+ { field: "category", label: "Category" },
641
+ { field: "description", label: "Description" },
642
+ ],
643
+ filters: [
644
+ {
645
+ param: "category",
646
+ variable: "category",
647
+ description: "Filter by category name.",
648
+ },
649
+ ],
650
+ search: {
651
+ variables: ["name", "description"],
652
+ description: "Search in name and description.",
653
+ },
654
+ },
655
+ verbs: [
656
+ {
657
+ verb: "categories",
658
+ description: "List all standard categories with counts.",
659
+ toolDescription: "List all code standard categories.",
660
+ query: [
661
+ "SELECT ?name (COUNT(?standard) AS ?count)",
662
+ "WHERE {",
663
+ " ?cat a cs:Category ;",
664
+ " cs:slug ?name .",
665
+ " OPTIONAL {",
666
+ " ?standard a cs:CodeStandard ;",
667
+ " cs:hasCategory ?cat .",
668
+ " }",
669
+ "}",
670
+ "GROUP BY ?name",
671
+ "ORDER BY ?name",
672
+ ].join("\n"),
673
+ columns: [
674
+ { field: "name", label: "Category" },
675
+ { field: "count", label: "Standards" },
676
+ ],
677
+ },
678
+ ],
679
+ lookup: {
680
+ source: "sparql",
681
+ by: "cs:name",
682
+ type: "cs:CodeStandard",
683
+ description:
684
+ "Look up detailed information for a standard by name, IRI, or glob.",
685
+ toolDescription:
686
+ "Get detailed information about one or more code standards including dos and donts with code examples. Address standards by name, prefixed name (cs:…), absolute IRI, or glob pattern (react/component/*).",
687
+ fields: [
688
+ {
689
+ name: "category",
690
+ property: "cs:hasCategory/cs:slug",
691
+ label: "Category",
692
+ },
693
+ {
694
+ name: "description",
695
+ property: "cs:description",
696
+ label: "Description",
697
+ },
698
+ { name: "extends", property: "cs:extends", label: "Extends" },
699
+ ],
700
+ expand: [
701
+ {
702
+ name: "dos",
703
+ heading: "Do",
704
+ relation: "cs:do",
705
+ select: [
706
+ { name: "caption", property: "cs:description" },
707
+ { name: "language", property: "cs:language" },
708
+ { name: "code", property: "cs:code" },
709
+ ],
710
+ level: "standard",
711
+ },
712
+ {
713
+ name: "donts",
714
+ heading: "Don't",
715
+ relation: "cs:dont",
716
+ select: [
717
+ { name: "caption", property: "cs:description" },
718
+ { name: "language", property: "cs:language" },
719
+ { name: "code", property: "cs:code" },
720
+ ],
721
+ level: "detailed",
722
+ },
723
+ ],
724
+ disclosure: {
725
+ levels: ["summary", "standard", "detailed"],
726
+ default: "summary",
727
+ },
728
+ sample: {
729
+ description:
730
+ "Return randomly selected complete standard instances as exemplars for shape discovery.",
731
+ toolDescription:
732
+ "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.",
733
+ },
734
+ },
735
+ },
736
+ ];
737
+
738
+ export default {
739
+ name: "pragma",
740
+ help: "Explore the design system",
741
+ // The `--help` wordmark. Data, not code: `kernel/copy.test.ts` forbids any
742
+ // kernel string from naming the distribution, and a wordmark spells the name.
743
+ // Lines rather than one string — the art holds a backtick and backslashes.
744
+ logo: [
745
+ " _",
746
+ " /' `\\",
747
+ " /' )",
748
+ " /' (___,/'____ ____ ____ ,__________ ____",
749
+ " /' )' )--/' ) /' ) /' ) ) /' )",
750
+ " /' /' /' /' /' /' /' /' /' /' /'",
751
+ "(,/' /' (___,/(__(___,/(__/' /' /(__(___,/(__",
752
+ " /'",
753
+ " / /'",
754
+ " (___,/'",
755
+ ],
756
+ // The toolchain's own colophon — CONTENT this distribution declares, not
757
+ // machinery: `pragma colophon` renders whatever stands here as its first
758
+ // section, titled with the distribution's name, before any active pack's
759
+ // domain colophon. A fork tells its own story by editing this declaration.
760
+ // `markdown` is the full narrative; `summary` is the condensed `--format llm`
761
+ // form. Both are BODIES with no leading H1 (the renderer supplies the
762
+ // heading), grounded in this tree's real architecture.
763
+ colophon: {
764
+ // The architecture handoff is a URL, not a repo path: `docs/` is outside
765
+ // the package's `files` allowlist and is not copied into `dist`, so an
766
+ // installed user has no `docs/architecture.md` to open.
767
+ markdown: `pragma is a **domain-based toolchain** — one CLI and one MCP server
768
+ projected from a single grammar. That machinery is documented at
769
+ https://github.com/canonical/pragma/blob/main/packages/cli/pragma/docs/architecture.md;
770
+ what follows is the domain it serves.
771
+
772
+ Made by the Canonical Webteam — https://canonical.com.`,
773
+ 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.
774
+
775
+ Made by the Canonical Webteam — https://canonical.com.`,
776
+ },
777
+ issuesUrl: "https://github.com/canonical/pragma/issues",
778
+ packs: [
779
+ {
780
+ name: "@canonical/design-system",
781
+ source: "git+https://github.com/canonical/design-system.git#main",
782
+ stories: [...designSystemStories, conceptStory],
783
+ },
784
+ {
785
+ name: "@canonical/anatomy-dsl",
786
+ source: "git+https://github.com/canonical/anatomy-dsl.git#main",
787
+ },
788
+ {
789
+ name: "@canonical/code-standards",
790
+ source: "git+https://github.com/canonical/web-code-standards.git#main",
791
+ stories: codeStandardsStories,
792
+ },
793
+ // The implementation graph: ds:ImplementationLibrary / ds:ImplementationObject
794
+ // nodes collected from `@implements` annotations across this monorepo
795
+ // (regenerated each release into the root `data/` directory, which is what
796
+ // a git ref scans — the npm distribution is `@canonical/ds-implementations`).
797
+ {
798
+ name: "@canonical/ds-implementations",
799
+ source: "git+https://github.com/canonical/pragma.git#main",
800
+ stories: [implementationStory],
801
+ },
802
+ ],
803
+ // This distribution's domain namespaces, declared once and read twice.
804
+ //
805
+ // (1) They pin what `sources update` builds the store with. The design system
806
+ // declares `ds:` twice — `…/` in `definitions/` and `…/data/` in `data/` —
807
+ // and prefix harvesting is last-wins over a filename sort, so which one binds
808
+ // is an accident of file naming. The config layer wins every harvest: without
809
+ // this pin an added or renamed upstream file can silently compact every `ds:`
810
+ // entity to the wrong prefix, and `block list` stops resolving.
811
+ //
812
+ // (2) They are the domain half of the kernel's `DEFAULT_PREFIX_MAP`
813
+ // (`src/kernel/render/prefixes.ts`) — what the CLI compacts in output AND
814
+ // what it expands a user-typed `ds:Button` / `cs:rule` through before a
815
+ // lookup. Drop a namespace here and its lookups stop resolving; that is why
816
+ // `cs:` is listed even though nothing rebinds it upstream.
817
+ prefixes: {
818
+ ds: "https://ds.canonical.com/",
819
+ cs: "http://pragma.canonical.com/codestandards#",
820
+ },
821
+ channel: "normal",
822
+ detail: "standard",
823
+ } satisfies RawConfig;
824
+
825
+ /**
826
+ * The domain terms the kernel reads this distribution's graph with.
827
+ *
828
+ * A separate export because it is NOT a config layer field: it is compiled in
829
+ * and read at module load by `src/kernel/vocabulary.ts`, whose readers (the
830
+ * storeless completion fast path, the pack index builder) cannot reach a config
831
+ * layer at all. Layering it would let a project config set it and change
832
+ * nothing. A fork edits these values and rebuilds; `parseVocabulary` type-checks
833
+ * the shape and rejects a term that is not a prefixed name.
834
+ *
835
+ * Every prefix used here must be bound in `prefixes` above. `rdfs:label` and
836
+ * `rdfs:comment` are deliberately absent — the kernel treats standard
837
+ * vocabulary as universal.
838
+ *
839
+ * The `prompt` terms are a READ CONTRACT, not a claim about instances: this
840
+ * distribution's graph currently carries no `ds:Prompt` entities at all, so
841
+ * `prompt list` is honestly empty. Declaring the shape anyway is what makes an
842
+ * empty result mean "the graph has none" rather than "nothing was declared".
843
+ */
844
+ export const vocabulary = {
845
+ altName: "ds:name",
846
+ prompt: {
847
+ type: "ds:Prompt",
848
+ body: "ds:promptBody",
849
+ argument: "ds:promptArgument",
850
+ argName: "ds:argName",
851
+ argRequired: "ds:argRequired",
852
+ },
853
+ };