@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.
Files changed (832) hide show
  1. package/README.md +153 -30
  2. package/bundled-skills/add-standard/SKILL.md +338 -0
  3. package/bundled-skills/adoption-a1-styles/SKILL.md +269 -0
  4. package/bundled-skills/adoption-a2-components/SKILL.md +291 -0
  5. package/bundled-skills/adoption-a3-forms/SKILL.md +260 -0
  6. package/bundled-skills/anatomy-author/ANATOMY_DSL_SPEC.md +406 -0
  7. package/bundled-skills/anatomy-author/SKILL.md +1226 -0
  8. package/bundled-skills/design-auditor/SKILL.md +455 -0
  9. package/bundled-skills/implement-component/SKILL.md +333 -0
  10. package/bundled-skills/specify-component/SKILL.md +331 -0
  11. package/bundled-skills/specify-pattern/SKILL.md +292 -0
  12. package/dist/.build-ok +0 -0
  13. package/dist/package.json +84 -0
  14. package/dist/pragma.conf.js +1016 -0
  15. package/dist/pragma.conf.js.map +1 -0
  16. package/dist/src/bin.js +356 -0
  17. package/dist/src/bin.js.map +1 -0
  18. package/dist/src/capabilities/capabilities/capabilities.render.js +70 -0
  19. package/dist/src/capabilities/capabilities/capabilities.render.js.map +1 -0
  20. package/dist/src/capabilities/capabilities/capabilities.verb.js +59 -0
  21. package/dist/src/capabilities/capabilities/capabilities.verb.js.map +1 -0
  22. package/dist/src/capabilities/capabilities/catalog.js +130 -0
  23. package/dist/src/capabilities/capabilities/catalog.js.map +1 -0
  24. package/dist/src/capabilities/capabilities/hints.js +195 -0
  25. package/dist/src/capabilities/capabilities/hints.js.map +1 -0
  26. package/dist/src/capabilities/capabilities/index.js +11 -0
  27. package/dist/src/capabilities/capabilities/index.js.map +1 -0
  28. package/dist/src/capabilities/capabilities/types.js +11 -0
  29. package/dist/src/capabilities/capabilities/types.js.map +1 -0
  30. package/dist/src/capabilities/colophon/collectColophon.js +83 -0
  31. package/dist/src/capabilities/colophon/collectColophon.js.map +1 -0
  32. package/dist/src/capabilities/colophon/colophon.render.js +59 -0
  33. package/dist/src/capabilities/colophon/colophon.render.js.map +1 -0
  34. package/dist/src/capabilities/colophon/colophon.verb.js +43 -0
  35. package/dist/src/capabilities/colophon/colophon.verb.js.map +1 -0
  36. package/dist/src/capabilities/colophon/index.js +5 -0
  37. package/dist/src/capabilities/colophon/index.js.map +1 -0
  38. package/dist/src/capabilities/colophon/markdownTerminal.js +90 -0
  39. package/dist/src/capabilities/colophon/markdownTerminal.js.map +1 -0
  40. package/dist/src/capabilities/colophon/types.js +10 -0
  41. package/dist/src/capabilities/colophon/types.js.map +1 -0
  42. package/dist/src/capabilities/config/collectConfigShow.js +59 -0
  43. package/dist/src/capabilities/config/collectConfigShow.js.map +1 -0
  44. package/dist/src/capabilities/config/field.render.js +22 -0
  45. package/dist/src/capabilities/config/field.render.js.map +1 -0
  46. package/dist/src/capabilities/config/fields.js +46 -0
  47. package/dist/src/capabilities/config/fields.js.map +1 -0
  48. package/dist/src/capabilities/config/get.verb.js +61 -0
  49. package/dist/src/capabilities/config/get.verb.js.map +1 -0
  50. package/dist/src/capabilities/config/index.js +5 -0
  51. package/dist/src/capabilities/config/index.js.map +1 -0
  52. package/dist/src/capabilities/config/runField.js +59 -0
  53. package/dist/src/capabilities/config/runField.js.map +1 -0
  54. package/dist/src/capabilities/config/runGet.js +28 -0
  55. package/dist/src/capabilities/config/runGet.js.map +1 -0
  56. package/dist/src/capabilities/config/runSet.js +53 -0
  57. package/dist/src/capabilities/config/runSet.js.map +1 -0
  58. package/dist/src/capabilities/config/set.verb.js +66 -0
  59. package/dist/src/capabilities/config/set.verb.js.map +1 -0
  60. package/dist/src/capabilities/config/show.render.js +84 -0
  61. package/dist/src/capabilities/config/show.render.js.map +1 -0
  62. package/dist/src/capabilities/config/show.verb.js +44 -0
  63. package/dist/src/capabilities/config/show.verb.js.map +1 -0
  64. package/dist/src/capabilities/config/types.js +5 -0
  65. package/dist/src/capabilities/config/types.js.map +1 -0
  66. package/dist/src/capabilities/config/unset.verb.js +49 -0
  67. package/dist/src/capabilities/config/unset.verb.js.map +1 -0
  68. package/dist/src/capabilities/create/cliProjection.js +195 -0
  69. package/dist/src/capabilities/create/cliProjection.js.map +1 -0
  70. package/dist/src/capabilities/create/constants.js +47 -0
  71. package/dist/src/capabilities/create/constants.js.map +1 -0
  72. package/dist/src/capabilities/create/create.render.js +100 -0
  73. package/dist/src/capabilities/create/create.render.js.map +1 -0
  74. package/dist/src/capabilities/create/create.verb.js +438 -0
  75. package/dist/src/capabilities/create/create.verb.js.map +1 -0
  76. package/dist/src/capabilities/create/createHelp.js +47 -0
  77. package/dist/src/capabilities/create/createHelp.js.map +1 -0
  78. package/dist/src/capabilities/create/createSurface.generated.js +394 -0
  79. package/dist/src/capabilities/create/createSurface.generated.js.map +1 -0
  80. package/dist/src/capabilities/create/generatorToVerbSpec.js +106 -0
  81. package/dist/src/capabilities/create/generatorToVerbSpec.js.map +1 -0
  82. package/dist/src/capabilities/create/index.js +18 -0
  83. package/dist/src/capabilities/create/index.js.map +1 -0
  84. package/dist/src/capabilities/create/messages.js +16 -0
  85. package/dist/src/capabilities/create/messages.js.map +1 -0
  86. package/dist/src/capabilities/create/mount.js +294 -0
  87. package/dist/src/capabilities/create/mount.js.map +1 -0
  88. package/dist/src/capabilities/create/pathJail.js +65 -0
  89. package/dist/src/capabilities/create/pathJail.js.map +1 -0
  90. package/dist/src/capabilities/create/pickGenerator.js +53 -0
  91. package/dist/src/capabilities/create/pickGenerator.js.map +1 -0
  92. package/dist/src/capabilities/create/types.js +2 -0
  93. package/dist/src/capabilities/create/types.js.map +1 -0
  94. package/dist/src/capabilities/distribution.js +40 -0
  95. package/dist/src/capabilities/distribution.js.map +1 -0
  96. package/dist/src/capabilities/doctor/checks/checkKeStore.js +40 -0
  97. package/dist/src/capabilities/doctor/checks/checkKeStore.js.map +1 -0
  98. package/dist/src/capabilities/doctor/checks/checkNodeVersion.js +21 -0
  99. package/dist/src/capabilities/doctor/checks/checkNodeVersion.js.map +1 -0
  100. package/dist/src/capabilities/doctor/checks/checkPackageRefs.js +148 -0
  101. package/dist/src/capabilities/doctor/checks/checkPackageRefs.js.map +1 -0
  102. package/dist/src/capabilities/doctor/checks/checkPragmaVersion.js +19 -0
  103. package/dist/src/capabilities/doctor/checks/checkPragmaVersion.js.map +1 -0
  104. package/dist/src/capabilities/doctor/checks/checkShellCompletions.js +199 -0
  105. package/dist/src/capabilities/doctor/checks/checkShellCompletions.js.map +1 -0
  106. package/dist/src/capabilities/doctor/checks/harnessInventory.js +195 -0
  107. package/dist/src/capabilities/doctor/checks/harnessInventory.js.map +1 -0
  108. package/dist/src/capabilities/doctor/checks/index.js +27 -0
  109. package/dist/src/capabilities/doctor/checks/index.js.map +1 -0
  110. package/dist/src/capabilities/doctor/checks/mcpCommand.js +57 -0
  111. package/dist/src/capabilities/doctor/checks/mcpCommand.js.map +1 -0
  112. package/dist/src/capabilities/doctor/checks/targetHealth.js +349 -0
  113. package/dist/src/capabilities/doctor/checks/targetHealth.js.map +1 -0
  114. package/dist/src/capabilities/doctor/doctor.render.js +164 -0
  115. package/dist/src/capabilities/doctor/doctor.render.js.map +1 -0
  116. package/dist/src/capabilities/doctor/doctor.verb.js +49 -0
  117. package/dist/src/capabilities/doctor/doctor.verb.js.map +1 -0
  118. package/dist/src/capabilities/doctor/index.js +5 -0
  119. package/dist/src/capabilities/doctor/index.js.map +1 -0
  120. package/dist/src/capabilities/doctor/runChecks.js +86 -0
  121. package/dist/src/capabilities/doctor/runChecks.js.map +1 -0
  122. package/dist/src/capabilities/doctor/types.js +5 -0
  123. package/dist/src/capabilities/doctor/types.js.map +1 -0
  124. package/dist/src/capabilities/graph/index.js +19 -0
  125. package/dist/src/capabilities/graph/index.js.map +1 -0
  126. package/dist/src/capabilities/graph/inspect.render.js +76 -0
  127. package/dist/src/capabilities/graph/inspect.render.js.map +1 -0
  128. package/dist/src/capabilities/graph/inspect.verb.js +53 -0
  129. package/dist/src/capabilities/graph/inspect.verb.js.map +1 -0
  130. package/dist/src/capabilities/graph/query.render.js +73 -0
  131. package/dist/src/capabilities/graph/query.render.js.map +1 -0
  132. package/dist/src/capabilities/graph/query.verb.js +49 -0
  133. package/dist/src/capabilities/graph/query.verb.js.map +1 -0
  134. package/dist/src/capabilities/graph/runQuery.js +41 -0
  135. package/dist/src/capabilities/graph/runQuery.js.map +1 -0
  136. package/dist/src/capabilities/index.js +56 -0
  137. package/dist/src/capabilities/index.js.map +1 -0
  138. package/dist/src/capabilities/info/collectInfo.js +72 -0
  139. package/dist/src/capabilities/info/collectInfo.js.map +1 -0
  140. package/dist/src/capabilities/info/index.js +5 -0
  141. package/dist/src/capabilities/info/index.js.map +1 -0
  142. package/dist/src/capabilities/info/info.render.js +57 -0
  143. package/dist/src/capabilities/info/info.render.js.map +1 -0
  144. package/dist/src/capabilities/info/info.verb.js +42 -0
  145. package/dist/src/capabilities/info/info.verb.js.map +1 -0
  146. package/dist/src/capabilities/info/types.js +5 -0
  147. package/dist/src/capabilities/info/types.js.map +1 -0
  148. package/dist/src/capabilities/meta/complete.verb.js +43 -0
  149. package/dist/src/capabilities/meta/complete.verb.js.map +1 -0
  150. package/dist/src/capabilities/meta/index.js +13 -0
  151. package/dist/src/capabilities/meta/index.js.map +1 -0
  152. package/dist/src/capabilities/meta/mcp.verb.js +34 -0
  153. package/dist/src/capabilities/meta/mcp.verb.js.map +1 -0
  154. package/dist/src/capabilities/ontology/index.js +21 -0
  155. package/dist/src/capabilities/ontology/index.js.map +1 -0
  156. package/dist/src/capabilities/ontology/queries.js +123 -0
  157. package/dist/src/capabilities/ontology/queries.js.map +1 -0
  158. package/dist/src/capabilities/ontology/render.js +66 -0
  159. package/dist/src/capabilities/ontology/render.js.map +1 -0
  160. package/dist/src/capabilities/ontology/verbs.js +181 -0
  161. package/dist/src/capabilities/ontology/verbs.js.map +1 -0
  162. package/dist/src/capabilities/prompt/index.js +16 -0
  163. package/dist/src/capabilities/prompt/index.js.map +1 -0
  164. package/dist/src/capabilities/prompt/prompt.render.js +78 -0
  165. package/dist/src/capabilities/prompt/prompt.render.js.map +1 -0
  166. package/dist/src/capabilities/prompt/types.js +10 -0
  167. package/dist/src/capabilities/prompt/types.js.map +1 -0
  168. package/dist/src/capabilities/prompt/verbs.js +93 -0
  169. package/dist/src/capabilities/prompt/verbs.js.map +1 -0
  170. package/dist/src/capabilities/resources/index.js +10 -0
  171. package/dist/src/capabilities/resources/index.js.map +1 -0
  172. package/dist/src/capabilities/resources/provider.js +423 -0
  173. package/dist/src/capabilities/resources/provider.js.map +1 -0
  174. package/dist/src/capabilities/setup/buildPlan.js +172 -0
  175. package/dist/src/capabilities/setup/buildPlan.js.map +1 -0
  176. package/dist/src/capabilities/setup/index.js +5 -0
  177. package/dist/src/capabilities/setup/index.js.map +1 -0
  178. package/dist/src/capabilities/setup/mode.js +53 -0
  179. package/dist/src/capabilities/setup/mode.js.map +1 -0
  180. package/dist/src/capabilities/setup/operations/index.js +39 -0
  181. package/dist/src/capabilities/setup/operations/index.js.map +1 -0
  182. package/dist/src/capabilities/setup/operations/setupCompletions.js +160 -0
  183. package/dist/src/capabilities/setup/operations/setupCompletions.js.map +1 -0
  184. package/dist/src/capabilities/setup/operations/setupConfig.js +101 -0
  185. package/dist/src/capabilities/setup/operations/setupConfig.js.map +1 -0
  186. package/dist/src/capabilities/setup/operations/setupGenerator.js +390 -0
  187. package/dist/src/capabilities/setup/operations/setupGenerator.js.map +1 -0
  188. package/dist/src/capabilities/setup/operations/setupLsp.js +329 -0
  189. package/dist/src/capabilities/setup/operations/setupLsp.js.map +1 -0
  190. package/dist/src/capabilities/setup/operations/setupMcp.js +253 -0
  191. package/dist/src/capabilities/setup/operations/setupMcp.js.map +1 -0
  192. package/dist/src/capabilities/setup/operations/setupSkills.js +594 -0
  193. package/dist/src/capabilities/setup/operations/setupSkills.js.map +1 -0
  194. package/dist/src/capabilities/setup/plan.js +128 -0
  195. package/dist/src/capabilities/setup/plan.js.map +1 -0
  196. package/dist/src/capabilities/setup/plan.render.js +271 -0
  197. package/dist/src/capabilities/setup/plan.render.js.map +1 -0
  198. package/dist/src/capabilities/setup/setup.render.js +54 -0
  199. package/dist/src/capabilities/setup/setup.render.js.map +1 -0
  200. package/dist/src/capabilities/setup/setup.verb.js +387 -0
  201. package/dist/src/capabilities/setup/setup.verb.js.map +1 -0
  202. package/dist/src/capabilities/setup/shell.js +196 -0
  203. package/dist/src/capabilities/setup/shell.js.map +1 -0
  204. package/dist/src/capabilities/setup/targets.js +328 -0
  205. package/dist/src/capabilities/setup/targets.js.map +1 -0
  206. package/dist/src/capabilities/setup/types.js +5 -0
  207. package/dist/src/capabilities/setup/types.js.map +1 -0
  208. package/dist/src/capabilities/shared/assertExecOk.js +137 -0
  209. package/dist/src/capabilities/shared/assertExecOk.js.map +1 -0
  210. package/dist/src/capabilities/shared/index.js +27 -0
  211. package/dist/src/capabilities/shared/index.js.map +1 -0
  212. package/dist/src/capabilities/shared/packageManager.js +349 -0
  213. package/dist/src/capabilities/shared/packageManager.js.map +1 -0
  214. package/dist/src/capabilities/shared/registry.js +55 -0
  215. package/dist/src/capabilities/shared/registry.js.map +1 -0
  216. package/dist/src/capabilities/skill/discover.js +281 -0
  217. package/dist/src/capabilities/skill/discover.js.map +1 -0
  218. package/dist/src/capabilities/skill/index.js +10 -0
  219. package/dist/src/capabilities/skill/index.js.map +1 -0
  220. package/dist/src/capabilities/skill/render.js +49 -0
  221. package/dist/src/capabilities/skill/render.js.map +1 -0
  222. package/dist/src/capabilities/skill/verbs.js +83 -0
  223. package/dist/src/capabilities/skill/verbs.js.map +1 -0
  224. package/dist/src/capabilities/sources/collectStatus.js +103 -0
  225. package/dist/src/capabilities/sources/collectStatus.js.map +1 -0
  226. package/dist/src/capabilities/sources/index.js +13 -0
  227. package/dist/src/capabilities/sources/index.js.map +1 -0
  228. package/dist/src/capabilities/sources/installSkills.js +309 -0
  229. package/dist/src/capabilities/sources/installSkills.js.map +1 -0
  230. package/dist/src/capabilities/sources/runUpdate.js +460 -0
  231. package/dist/src/capabilities/sources/runUpdate.js.map +1 -0
  232. package/dist/src/capabilities/sources/status.render.js +64 -0
  233. package/dist/src/capabilities/sources/status.render.js.map +1 -0
  234. package/dist/src/capabilities/sources/status.verb.js +40 -0
  235. package/dist/src/capabilities/sources/status.verb.js.map +1 -0
  236. package/dist/src/capabilities/sources/types.js +6 -0
  237. package/dist/src/capabilities/sources/types.js.map +1 -0
  238. package/dist/src/capabilities/sources/update.render.js +34 -0
  239. package/dist/src/capabilities/sources/update.render.js.map +1 -0
  240. package/dist/src/capabilities/sources/update.verb.js +55 -0
  241. package/dist/src/capabilities/sources/update.verb.js.map +1 -0
  242. package/dist/src/capabilities/upgrade/index.js +5 -0
  243. package/dist/src/capabilities/upgrade/index.js.map +1 -0
  244. package/dist/src/capabilities/upgrade/runUpgrade.js +135 -0
  245. package/dist/src/capabilities/upgrade/runUpgrade.js.map +1 -0
  246. package/dist/src/capabilities/upgrade/types.js +5 -0
  247. package/dist/src/capabilities/upgrade/types.js.map +1 -0
  248. package/dist/src/capabilities/upgrade/upgrade.render.js +52 -0
  249. package/dist/src/capabilities/upgrade/upgrade.render.js.map +1 -0
  250. package/dist/src/capabilities/upgrade/upgrade.verb.js +52 -0
  251. package/dist/src/capabilities/upgrade/upgrade.verb.js.map +1 -0
  252. package/dist/src/capabilities/version/index.js +10 -0
  253. package/dist/src/capabilities/version/index.js.map +1 -0
  254. package/dist/src/capabilities/version/version.verb.js +36 -0
  255. package/dist/src/capabilities/version/version.verb.js.map +1 -0
  256. package/dist/src/constants.js +87 -0
  257. package/dist/src/constants.js.map +1 -0
  258. package/dist/src/index.js +12 -0
  259. package/dist/src/index.js.map +1 -0
  260. package/dist/src/kernel/completion/complete.js +66 -0
  261. package/dist/src/kernel/completion/complete.js.map +1 -0
  262. package/dist/src/kernel/completion/emitScripts.js +92 -0
  263. package/dist/src/kernel/completion/emitScripts.js.map +1 -0
  264. package/dist/src/kernel/completion/entitySource.js +285 -0
  265. package/dist/src/kernel/completion/entitySource.js.map +1 -0
  266. package/dist/src/kernel/completion/index.js +14 -0
  267. package/dist/src/kernel/completion/index.js.map +1 -0
  268. package/dist/src/kernel/completion/model.js +301 -0
  269. package/dist/src/kernel/completion/model.js.map +1 -0
  270. package/dist/src/kernel/completion/parse.js +253 -0
  271. package/dist/src/kernel/completion/parse.js.map +1 -0
  272. package/dist/src/kernel/completion/rank.js +101 -0
  273. package/dist/src/kernel/completion/rank.js.map +1 -0
  274. package/dist/src/kernel/completion/resolve.js +100 -0
  275. package/dist/src/kernel/completion/resolve.js.map +1 -0
  276. package/dist/src/kernel/completion/templates/bash.js +209 -0
  277. package/dist/src/kernel/completion/templates/bash.js.map +1 -0
  278. package/dist/src/kernel/completion/templates/fish.js +214 -0
  279. package/dist/src/kernel/completion/templates/fish.js.map +1 -0
  280. package/dist/src/kernel/completion/templates/index.js +23 -0
  281. package/dist/src/kernel/completion/templates/index.js.map +1 -0
  282. package/dist/src/kernel/completion/templates/shared.js +98 -0
  283. package/dist/src/kernel/completion/templates/shared.js.map +1 -0
  284. package/dist/src/kernel/completion/templates/zsh.js +201 -0
  285. package/dist/src/kernel/completion/templates/zsh.js.map +1 -0
  286. package/dist/src/kernel/completion/types.js +13 -0
  287. package/dist/src/kernel/completion/types.js.map +1 -0
  288. package/dist/src/kernel/config/defaults.js +17 -0
  289. package/dist/src/kernel/config/defaults.js.map +1 -0
  290. package/dist/src/kernel/config/evaluateProjectConfig.js +126 -0
  291. package/dist/src/kernel/config/evaluateProjectConfig.js.map +1 -0
  292. package/dist/src/kernel/config/findProjectConfig.js +43 -0
  293. package/dist/src/kernel/config/findProjectConfig.js.map +1 -0
  294. package/dist/src/kernel/config/firstRun.js +34 -0
  295. package/dist/src/kernel/config/firstRun.js.map +1 -0
  296. package/dist/src/kernel/config/globalConfig.js +79 -0
  297. package/dist/src/kernel/config/globalConfig.js.map +1 -0
  298. package/dist/src/kernel/config/index.js +16 -0
  299. package/dist/src/kernel/config/index.js.map +1 -0
  300. package/dist/src/kernel/config/paths.js +35 -0
  301. package/dist/src/kernel/config/paths.js.map +1 -0
  302. package/dist/src/kernel/config/readConfig.js +78 -0
  303. package/dist/src/kernel/config/readConfig.js.map +1 -0
  304. package/dist/src/kernel/config/schema.js +130 -0
  305. package/dist/src/kernel/config/schema.js.map +1 -0
  306. package/dist/src/kernel/config/types.js +19 -0
  307. package/dist/src/kernel/config/types.js.map +1 -0
  308. package/dist/src/kernel/config/writeConfigField.js +59 -0
  309. package/dist/src/kernel/config/writeConfigField.js.map +1 -0
  310. package/dist/src/kernel/copy.js +43 -0
  311. package/dist/src/kernel/copy.js.map +1 -0
  312. package/dist/src/kernel/error/PragmaError.js +149 -0
  313. package/dist/src/kernel/error/PragmaError.js.map +1 -0
  314. package/dist/src/kernel/error/constants.js +40 -0
  315. package/dist/src/kernel/error/constants.js.map +1 -0
  316. package/dist/src/kernel/error/fromTaskError.js +96 -0
  317. package/dist/src/kernel/error/fromTaskError.js.map +1 -0
  318. package/dist/src/kernel/error/index.js +13 -0
  319. package/dist/src/kernel/error/index.js.map +1 -0
  320. package/dist/src/kernel/error/recovery.js +52 -0
  321. package/dist/src/kernel/error/recovery.js.map +1 -0
  322. package/dist/src/kernel/error/renderError.js +115 -0
  323. package/dist/src/kernel/error/renderError.js.map +1 -0
  324. package/dist/src/kernel/error/serialize.js +25 -0
  325. package/dist/src/kernel/error/serialize.js.map +1 -0
  326. package/dist/src/kernel/error/types.js +9 -0
  327. package/dist/src/kernel/error/types.js.map +1 -0
  328. package/dist/src/kernel/index.js +34 -0
  329. package/dist/src/kernel/index.js.map +1 -0
  330. package/dist/src/kernel/interactivity.js +68 -0
  331. package/dist/src/kernel/interactivity.js.map +1 -0
  332. package/dist/src/kernel/packs/collect.js +187 -0
  333. package/dist/src/kernel/packs/collect.js.map +1 -0
  334. package/dist/src/kernel/packs/compile.js +304 -0
  335. package/dist/src/kernel/packs/compile.js.map +1 -0
  336. package/dist/src/kernel/packs/disclosure.js +76 -0
  337. package/dist/src/kernel/packs/disclosure.js.map +1 -0
  338. package/dist/src/kernel/packs/glob.js +38 -0
  339. package/dist/src/kernel/packs/glob.js.map +1 -0
  340. package/dist/src/kernel/packs/graphql/buildLookupDocument.js +258 -0
  341. package/dist/src/kernel/packs/graphql/buildLookupDocument.js.map +1 -0
  342. package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js +157 -0
  343. package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js.map +1 -0
  344. package/dist/src/kernel/packs/graphql/index.js +20 -0
  345. package/dist/src/kernel/packs/graphql/index.js.map +1 -0
  346. package/dist/src/kernel/packs/graphql/nameMap.js +63 -0
  347. package/dist/src/kernel/packs/graphql/nameMap.js.map +1 -0
  348. package/dist/src/kernel/packs/index.js +34 -0
  349. package/dist/src/kernel/packs/index.js.map +1 -0
  350. package/dist/src/kernel/packs/iri.js +110 -0
  351. package/dist/src/kernel/packs/iri.js.map +1 -0
  352. package/dist/src/kernel/packs/renderPack.js +129 -0
  353. package/dist/src/kernel/packs/renderPack.js.map +1 -0
  354. package/dist/src/kernel/packs/resolveEntity.js +274 -0
  355. package/dist/src/kernel/packs/resolveEntity.js.map +1 -0
  356. package/dist/src/kernel/packs/runBodies.js +140 -0
  357. package/dist/src/kernel/packs/runBodies.js.map +1 -0
  358. package/dist/src/kernel/packs/sample.js +56 -0
  359. package/dist/src/kernel/packs/sample.js.map +1 -0
  360. package/dist/src/kernel/packs/schema.js +421 -0
  361. package/dist/src/kernel/packs/schema.js.map +1 -0
  362. package/dist/src/kernel/packs/sparql/applyFilters.js +167 -0
  363. package/dist/src/kernel/packs/sparql/applyFilters.js.map +1 -0
  364. package/dist/src/kernel/packs/sparql/applySearch.js +25 -0
  365. package/dist/src/kernel/packs/sparql/applySearch.js.map +1 -0
  366. package/dist/src/kernel/packs/sparql/buildLookupQuery.js +480 -0
  367. package/dist/src/kernel/packs/sparql/buildLookupQuery.js.map +1 -0
  368. package/dist/src/kernel/packs/sparql/escape.js +21 -0
  369. package/dist/src/kernel/packs/sparql/escape.js.map +1 -0
  370. package/dist/src/kernel/packs/sparql/index.js +31 -0
  371. package/dist/src/kernel/packs/sparql/index.js.map +1 -0
  372. package/dist/src/kernel/packs/sparql/runSelect.js +101 -0
  373. package/dist/src/kernel/packs/sparql/runSelect.js.map +1 -0
  374. package/dist/src/kernel/packs/types.js +30 -0
  375. package/dist/src/kernel/packs/types.js.map +1 -0
  376. package/dist/src/kernel/packs/uniqueness.js +30 -0
  377. package/dist/src/kernel/packs/uniqueness.js.map +1 -0
  378. package/dist/src/kernel/project/cli/buildProgram.js +263 -0
  379. package/dist/src/kernel/project/cli/buildProgram.js.map +1 -0
  380. package/dist/src/kernel/project/cli/constants.js +27 -0
  381. package/dist/src/kernel/project/cli/constants.js.map +1 -0
  382. package/dist/src/kernel/project/cli/dispatch.js +420 -0
  383. package/dist/src/kernel/project/cli/dispatch.js.map +1 -0
  384. package/dist/src/kernel/project/cli/exitCodes.js +66 -0
  385. package/dist/src/kernel/project/cli/exitCodes.js.map +1 -0
  386. package/dist/src/kernel/project/cli/globalFlags.js +219 -0
  387. package/dist/src/kernel/project/cli/globalFlags.js.map +1 -0
  388. package/dist/src/kernel/project/cli/helpFormat.js +58 -0
  389. package/dist/src/kernel/project/cli/helpFormat.js.map +1 -0
  390. package/dist/src/kernel/project/cli/index.js +14 -0
  391. package/dist/src/kernel/project/cli/index.js.map +1 -0
  392. package/dist/src/kernel/project/cli/rootHelp.js +227 -0
  393. package/dist/src/kernel/project/cli/rootHelp.js.map +1 -0
  394. package/dist/src/kernel/project/cli/suggest.js +75 -0
  395. package/dist/src/kernel/project/cli/suggest.js.map +1 -0
  396. package/dist/src/kernel/project/cli/suggestNames.js +96 -0
  397. package/dist/src/kernel/project/cli/suggestNames.js.map +1 -0
  398. package/dist/src/kernel/project/cli/verbHelp.js +131 -0
  399. package/dist/src/kernel/project/cli/verbHelp.js.map +1 -0
  400. package/dist/src/kernel/project/mcp/buildServer.js +67 -0
  401. package/dist/src/kernel/project/mcp/buildServer.js.map +1 -0
  402. package/dist/src/kernel/project/mcp/envelope.js +37 -0
  403. package/dist/src/kernel/project/mcp/envelope.js.map +1 -0
  404. package/dist/src/kernel/project/mcp/index.js +8 -0
  405. package/dist/src/kernel/project/mcp/index.js.map +1 -0
  406. package/dist/src/kernel/project/mcp/instructions.js +44 -0
  407. package/dist/src/kernel/project/mcp/instructions.js.map +1 -0
  408. package/dist/src/kernel/project/mcp/mcpError.js +42 -0
  409. package/dist/src/kernel/project/mcp/mcpError.js.map +1 -0
  410. package/dist/src/kernel/project/mcp/prompts/index.js +36 -0
  411. package/dist/src/kernel/project/mcp/prompts/index.js.map +1 -0
  412. package/dist/src/kernel/project/mcp/prompts/provider.js +98 -0
  413. package/dist/src/kernel/project/mcp/prompts/provider.js.map +1 -0
  414. package/dist/src/kernel/project/mcp/prompts/source.js +154 -0
  415. package/dist/src/kernel/project/mcp/prompts/source.js.map +1 -0
  416. package/dist/src/kernel/project/mcp/registerVerb.js +315 -0
  417. package/dist/src/kernel/project/mcp/registerVerb.js.map +1 -0
  418. package/dist/src/kernel/project/mcp/serve.js +35 -0
  419. package/dist/src/kernel/project/mcp/serve.js.map +1 -0
  420. package/dist/src/kernel/render/compactUri.js +24 -0
  421. package/dist/src/kernel/render/compactUri.js.map +1 -0
  422. package/dist/src/kernel/render/contracts.js +10 -0
  423. package/dist/src/kernel/render/contracts.js.map +1 -0
  424. package/dist/src/kernel/render/disclosure.js +34 -0
  425. package/dist/src/kernel/render/disclosure.js.map +1 -0
  426. package/dist/src/kernel/render/envelope.js +30 -0
  427. package/dist/src/kernel/render/envelope.js.map +1 -0
  428. package/dist/src/kernel/render/formatters.js +27 -0
  429. package/dist/src/kernel/render/formatters.js.map +1 -0
  430. package/dist/src/kernel/render/index.js +15 -0
  431. package/dist/src/kernel/render/index.js.map +1 -0
  432. package/dist/src/kernel/render/prefixes.js +46 -0
  433. package/dist/src/kernel/render/prefixes.js.map +1 -0
  434. package/dist/src/kernel/render/renderers.js +468 -0
  435. package/dist/src/kernel/render/renderers.js.map +1 -0
  436. package/dist/src/kernel/render/style.js +105 -0
  437. package/dist/src/kernel/render/style.js.map +1 -0
  438. package/dist/src/kernel/render/turtle.js +194 -0
  439. package/dist/src/kernel/render/turtle.js.map +1 -0
  440. package/dist/src/kernel/render/vocabulary.js +174 -0
  441. package/dist/src/kernel/render/vocabulary.js.map +1 -0
  442. package/dist/src/kernel/render/writeStdout.js +43 -0
  443. package/dist/src/kernel/render/writeStdout.js.map +1 -0
  444. package/dist/src/kernel/runtime/boot.js +49 -0
  445. package/dist/src/kernel/runtime/boot.js.map +1 -0
  446. package/dist/src/kernel/runtime/facade.js +39 -0
  447. package/dist/src/kernel/runtime/facade.js.map +1 -0
  448. package/dist/src/kernel/runtime/graphpack/build.js +122 -0
  449. package/dist/src/kernel/runtime/graphpack/build.js.map +1 -0
  450. package/dist/src/kernel/runtime/graphpack/buildIndex.js +303 -0
  451. package/dist/src/kernel/runtime/graphpack/buildIndex.js.map +1 -0
  452. package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js +6 -0
  453. package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js.map +1 -0
  454. package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js +4 -0
  455. package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js.map +1 -0
  456. package/dist/src/kernel/runtime/graphpack/embedded/pack.stories.generated.js +4 -0
  457. package/dist/src/kernel/runtime/graphpack/embedded/pack.stories.generated.js.map +1 -0
  458. package/dist/src/kernel/runtime/graphpack/embedded.js +82 -0
  459. package/dist/src/kernel/runtime/graphpack/embedded.js.map +1 -0
  460. package/dist/src/kernel/runtime/graphpack/hash.js +38 -0
  461. package/dist/src/kernel/runtime/graphpack/hash.js.map +1 -0
  462. package/dist/src/kernel/runtime/graphpack/index.js +11 -0
  463. package/dist/src/kernel/runtime/graphpack/index.js.map +1 -0
  464. package/dist/src/kernel/runtime/graphpack/manifest.js +145 -0
  465. package/dist/src/kernel/runtime/graphpack/manifest.js.map +1 -0
  466. package/dist/src/kernel/runtime/graphpack/read.js +92 -0
  467. package/dist/src/kernel/runtime/graphpack/read.js.map +1 -0
  468. package/dist/src/kernel/runtime/graphpack/schemas.js +70 -0
  469. package/dist/src/kernel/runtime/graphpack/schemas.js.map +1 -0
  470. package/dist/src/kernel/runtime/graphpack/stories.js +68 -0
  471. package/dist/src/kernel/runtime/graphpack/stories.js.map +1 -0
  472. package/dist/src/kernel/runtime/graphpack/types.js +55 -0
  473. package/dist/src/kernel/runtime/graphpack/types.js.map +1 -0
  474. package/dist/src/kernel/runtime/index.js +8 -0
  475. package/dist/src/kernel/runtime/index.js.map +1 -0
  476. package/dist/src/kernel/runtime/loadSession.js +34 -0
  477. package/dist/src/kernel/runtime/loadSession.js.map +1 -0
  478. package/dist/src/kernel/runtime/paths.js +78 -0
  479. package/dist/src/kernel/runtime/paths.js.map +1 -0
  480. package/dist/src/kernel/runtime/probe.js +37 -0
  481. package/dist/src/kernel/runtime/probe.js.map +1 -0
  482. package/dist/src/kernel/runtime/readEntity.js +363 -0
  483. package/dist/src/kernel/runtime/readEntity.js.map +1 -0
  484. package/dist/src/kernel/runtime/refs/gitOps.js +65 -0
  485. package/dist/src/kernel/runtime/refs/gitOps.js.map +1 -0
  486. package/dist/src/kernel/runtime/refs/index.js +29 -0
  487. package/dist/src/kernel/runtime/refs/index.js.map +1 -0
  488. package/dist/src/kernel/runtime/refs/parseRef.js +70 -0
  489. package/dist/src/kernel/runtime/refs/parseRef.js.map +1 -0
  490. package/dist/src/kernel/runtime/refs/resolve.js +332 -0
  491. package/dist/src/kernel/runtime/refs/resolve.js.map +1 -0
  492. package/dist/src/kernel/runtime/resolveSources.js +62 -0
  493. package/dist/src/kernel/runtime/resolveSources.js.map +1 -0
  494. package/dist/src/kernel/runtime/store.js +75 -0
  495. package/dist/src/kernel/runtime/store.js.map +1 -0
  496. package/dist/src/kernel/runtime/storeReadiness.js +51 -0
  497. package/dist/src/kernel/runtime/storeReadiness.js.map +1 -0
  498. package/dist/src/kernel/runtime/types.js +11 -0
  499. package/dist/src/kernel/runtime/types.js.map +1 -0
  500. package/dist/src/kernel/spec/asVerb.js +21 -0
  501. package/dist/src/kernel/spec/asVerb.js.map +1 -0
  502. package/dist/src/kernel/spec/emitReference.js +578 -0
  503. package/dist/src/kernel/spec/emitReference.js.map +1 -0
  504. package/dist/src/kernel/spec/emitSurface.js +202 -0
  505. package/dist/src/kernel/spec/emitSurface.js.map +1 -0
  506. package/dist/src/kernel/spec/index.js +11 -0
  507. package/dist/src/kernel/spec/index.js.map +1 -0
  508. package/dist/src/kernel/spec/surfaceConformance.js +103 -0
  509. package/dist/src/kernel/spec/surfaceConformance.js.map +1 -0
  510. package/dist/src/kernel/spec/types.js +14 -0
  511. package/dist/src/kernel/spec/types.js.map +1 -0
  512. package/dist/src/kernel/spec/validate.js +110 -0
  513. package/dist/src/kernel/spec/validate.js.map +1 -0
  514. package/dist/src/kernel/vocabulary.js +97 -0
  515. package/dist/src/kernel/vocabulary.js.map +1 -0
  516. package/dist/src/types.js +11 -0
  517. package/dist/src/types.js.map +1 -0
  518. package/package.json +22 -23
  519. package/pragma.conf.ts +486 -90
  520. package/src/bin.ts +274 -82
  521. package/src/capabilities/block.parity.test.ts +29 -12
  522. package/src/capabilities/block.shipped.exec.test.ts +282 -0
  523. package/src/capabilities/block.tierRank.exec.test.ts +300 -0
  524. package/src/capabilities/capabilities/capabilities.render.ts +1 -1
  525. package/src/capabilities/capabilities/capabilities.verb.ts +1 -1
  526. package/src/capabilities/capabilities/catalog.ts +3 -3
  527. package/src/capabilities/capabilities/hints.ts +32 -7
  528. package/src/capabilities/capabilities/index.ts +1 -1
  529. package/src/capabilities/colophon/collectColophon.ts +35 -24
  530. package/src/capabilities/colophon/colophon.render.ts +24 -1
  531. package/src/capabilities/colophon/colophon.test.ts +42 -21
  532. package/src/capabilities/colophon/colophon.verb.ts +4 -4
  533. package/src/capabilities/config/collectConfigShow.test.ts +1 -0
  534. package/src/capabilities/config/collectConfigShow.ts +3 -3
  535. package/src/capabilities/config/field.render.ts +4 -5
  536. package/src/capabilities/config/fields.ts +17 -10
  537. package/src/capabilities/config/get.verb.ts +70 -0
  538. package/src/capabilities/config/getUnset.test.ts +264 -0
  539. package/src/capabilities/config/index.ts +5 -1
  540. package/src/capabilities/config/runField.ts +40 -22
  541. package/src/capabilities/config/runGet.ts +34 -0
  542. package/src/capabilities/config/runSet.ts +35 -9
  543. package/src/capabilities/config/set.test.ts +48 -14
  544. package/src/capabilities/config/set.verb.ts +8 -7
  545. package/src/capabilities/config/show.render.ts +1 -1
  546. package/src/capabilities/config/show.verb.ts +9 -6
  547. package/src/capabilities/config/types.ts +18 -4
  548. package/src/capabilities/config/unset.verb.ts +58 -0
  549. package/src/capabilities/create/byteEquality.subprocess.test.ts +2 -3
  550. package/src/capabilities/create/byteEquality.test.ts +25 -11
  551. package/src/capabilities/create/cliProjection.ts +227 -0
  552. package/src/capabilities/create/constants.ts +36 -61
  553. package/src/capabilities/create/create.mcp.test.ts +89 -5
  554. package/src/capabilities/create/create.render.ts +71 -7
  555. package/src/capabilities/create/create.test.ts +433 -219
  556. package/src/capabilities/create/create.verb.ts +297 -328
  557. package/src/capabilities/create/createGrammar.test.ts +865 -0
  558. package/src/capabilities/create/createHelp.ts +71 -0
  559. package/src/capabilities/create/createSurface.generated.ts +400 -0
  560. package/src/capabilities/create/crossCli.subprocess.test.ts +745 -0
  561. package/src/capabilities/create/cwdJail.test.ts +24 -5
  562. package/src/capabilities/create/generatorToVerbSpec.test.ts +186 -0
  563. package/src/capabilities/create/generatorToVerbSpec.ts +13 -11
  564. package/src/capabilities/create/index.ts +7 -4
  565. package/src/capabilities/create/messages.ts +18 -0
  566. package/src/capabilities/create/mount.ts +391 -0
  567. package/src/capabilities/create/pathJail.test.ts +90 -0
  568. package/src/capabilities/create/pathJail.ts +8 -5
  569. package/src/capabilities/create/pickGenerator.ts +23 -35
  570. package/src/capabilities/create/shippedCreate.subprocess.test.ts +164 -0
  571. package/src/capabilities/create/types.ts +20 -0
  572. package/src/capabilities/distribution.parity.test.ts +4 -0
  573. package/src/capabilities/distribution.test.ts +3 -1
  574. package/src/capabilities/distribution.ts +10 -15
  575. package/src/capabilities/doctor/checks/checkKeStore.ts +7 -5
  576. package/src/capabilities/doctor/checks/checkPackageRefs.ts +75 -8
  577. package/src/capabilities/doctor/checks/checkPragmaVersion.ts +2 -2
  578. package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +76 -29
  579. package/src/capabilities/doctor/checks/checkShellCompletions.ts +63 -17
  580. package/src/capabilities/doctor/checks/harnessInventory.test.ts +219 -0
  581. package/src/capabilities/doctor/checks/harnessInventory.ts +298 -0
  582. package/src/capabilities/doctor/checks/index.ts +27 -0
  583. package/src/capabilities/doctor/checks/mcpCommand.test.ts +100 -0
  584. package/src/capabilities/doctor/checks/mcpCommand.ts +69 -0
  585. package/src/capabilities/doctor/checks/targetHealth.ts +444 -0
  586. package/src/capabilities/doctor/doctor.render.test.ts +125 -38
  587. package/src/capabilities/doctor/doctor.render.ts +74 -74
  588. package/src/capabilities/doctor/doctor.test.ts +338 -37
  589. package/src/capabilities/doctor/doctor.verb.ts +8 -3
  590. package/src/capabilities/doctor/runChecks.ts +65 -63
  591. package/src/capabilities/doctor/types.ts +22 -15
  592. package/src/capabilities/emptyRecovery.test.ts +21 -8
  593. package/src/capabilities/graph/examples.exec.test.ts +107 -0
  594. package/src/capabilities/graph/index.ts +1 -1
  595. package/src/capabilities/graph/inspect.render.ts +70 -22
  596. package/src/capabilities/graph/inspect.test.ts +260 -5
  597. package/src/capabilities/graph/inspect.verb.ts +18 -6
  598. package/src/capabilities/graph/query.render.ts +15 -3
  599. package/src/capabilities/graph/query.verb.ts +3 -3
  600. package/src/capabilities/graph/runQuery.ts +2 -3
  601. package/src/capabilities/index.ts +3 -1
  602. package/src/capabilities/info/collectInfo.ts +13 -5
  603. package/src/capabilities/info/info.render.ts +7 -3
  604. package/src/capabilities/info/info.test.ts +37 -1
  605. package/src/capabilities/info/info.verb.ts +1 -1
  606. package/src/capabilities/info/types.ts +10 -2
  607. package/src/capabilities/lazy.test.ts +32 -0
  608. package/src/capabilities/meta/complete.verb.ts +1 -1
  609. package/src/capabilities/meta/index.ts +1 -1
  610. package/src/capabilities/meta/mcp.verb.ts +10 -8
  611. package/src/capabilities/ontology/index.ts +15 -11
  612. package/src/capabilities/ontology/ontology.test.ts +6 -55
  613. package/src/capabilities/ontology/queries.ts +2 -2
  614. package/src/capabilities/ontology/render.ts +3 -4
  615. package/src/capabilities/ontology/verbs.ts +27 -68
  616. package/src/capabilities/prompt/index.ts +2 -2
  617. package/src/capabilities/prompt/prompt.render.ts +6 -2
  618. package/src/capabilities/prompt/types.ts +1 -1
  619. package/src/capabilities/prompt/verbs.ts +4 -5
  620. package/src/capabilities/reference.test.ts +63 -0
  621. package/src/capabilities/renderVocabularySync.test.ts +82 -0
  622. package/src/capabilities/resources/provider.ts +342 -85
  623. package/src/capabilities/resources/resources.test.ts +355 -59
  624. package/src/capabilities/scopeTypeSync.test.ts +29 -15
  625. package/src/capabilities/setup/buildPlan.ts +240 -0
  626. package/src/capabilities/setup/index.ts +7 -7
  627. package/src/capabilities/setup/mode.ts +74 -0
  628. package/src/capabilities/setup/operations/index.ts +79 -0
  629. package/src/capabilities/setup/operations/setupCompletions.ts +97 -24
  630. package/src/capabilities/setup/operations/setupConfig.ts +124 -0
  631. package/src/capabilities/setup/operations/setupGenerator.ts +478 -334
  632. package/src/capabilities/setup/operations/setupLsp.ts +420 -67
  633. package/src/capabilities/setup/operations/setupMcp.ts +238 -127
  634. package/src/capabilities/setup/operations/setupSkills.ts +667 -105
  635. package/src/capabilities/setup/plan.render.ts +336 -0
  636. package/src/capabilities/setup/plan.ts +241 -0
  637. package/src/capabilities/setup/setup.mcp.correctness.test.ts +432 -0
  638. package/src/capabilities/setup/setup.render.test.ts +297 -75
  639. package/src/capabilities/setup/setup.render.ts +45 -77
  640. package/src/capabilities/setup/setup.test.ts +1819 -225
  641. package/src/capabilities/setup/setup.verb.ts +288 -78
  642. package/src/capabilities/setup/shell.test.ts +86 -0
  643. package/src/capabilities/setup/shell.ts +137 -11
  644. package/src/capabilities/setup/targets.ts +435 -0
  645. package/src/capabilities/setup/types.ts +23 -70
  646. package/src/capabilities/shared/assertExecOk.ts +68 -10
  647. package/src/capabilities/shared/index.ts +43 -0
  648. package/src/capabilities/shared/packageManager.test.ts +470 -0
  649. package/src/capabilities/shared/packageManager.ts +425 -34
  650. package/src/capabilities/skill/bundledSkills.test.ts +347 -0
  651. package/src/capabilities/skill/discover.ts +131 -10
  652. package/src/capabilities/skill/index.ts +1 -1
  653. package/src/capabilities/skill/render.ts +10 -9
  654. package/src/capabilities/skill/skill.test.ts +22 -7
  655. package/src/capabilities/skill/verbs.ts +3 -4
  656. package/src/capabilities/sources/collectStatus.ts +7 -2
  657. package/src/capabilities/sources/index.ts +1 -1
  658. package/src/capabilities/sources/installSkills.ts +265 -10
  659. package/src/capabilities/sources/runUpdate.ts +131 -23
  660. package/src/capabilities/sources/sources.test.ts +382 -2
  661. package/src/capabilities/sources/status.render.ts +1 -1
  662. package/src/capabilities/sources/status.verb.ts +1 -1
  663. package/src/capabilities/sources/update.render.ts +1 -1
  664. package/src/capabilities/sources/update.verb.ts +4 -4
  665. package/src/capabilities/surface.test.ts +136 -19
  666. package/src/capabilities/upgrade/runUpgrade.ts +53 -14
  667. package/src/capabilities/upgrade/types.ts +10 -2
  668. package/src/capabilities/upgrade/upgrade.render.ts +13 -7
  669. package/src/capabilities/upgrade/upgrade.test.ts +75 -3
  670. package/src/capabilities/upgrade/upgrade.verb.ts +1 -1
  671. package/src/capabilities/version/index.ts +12 -0
  672. package/src/capabilities/version/version.test.ts +66 -0
  673. package/src/capabilities/version/version.verb.ts +39 -0
  674. package/src/constants.ts +36 -1
  675. package/src/identity.test.ts +57 -29
  676. package/src/kernel/completion/__snapshots__/emitScripts.test.ts.snap +15 -13
  677. package/src/kernel/completion/complete.test.ts +12 -2
  678. package/src/kernel/completion/complete.ts +1 -1
  679. package/src/kernel/completion/emitScripts.ts +1 -1
  680. package/src/kernel/completion/entitySource.test.ts +16 -3
  681. package/src/kernel/completion/entitySource.ts +21 -8
  682. package/src/kernel/completion/model.test.ts +164 -12
  683. package/src/kernel/completion/model.ts +94 -14
  684. package/src/kernel/completion/parse.test.ts +4 -7
  685. package/src/kernel/completion/parse.ts +15 -0
  686. package/src/kernel/completion/resolve.test.ts +0 -1
  687. package/src/kernel/completion/safety.test.ts +50 -35
  688. package/src/kernel/completion/shellDrive.test.ts +28 -9
  689. package/src/kernel/completion/templates/bash.ts +7 -2
  690. package/src/kernel/completion/templates/index.ts +23 -0
  691. package/src/kernel/completion/types.ts +7 -0
  692. package/src/kernel/config/defaults.test.ts +27 -3
  693. package/src/kernel/config/defaults.ts +4 -3
  694. package/src/kernel/config/evaluateProjectConfig.ts +31 -8
  695. package/src/kernel/config/firstRun.test.ts +44 -38
  696. package/src/kernel/config/firstRun.ts +24 -88
  697. package/src/kernel/config/index.ts +1 -1
  698. package/src/kernel/config/readConfig.test.ts +6 -3
  699. package/src/kernel/config/readConfig.ts +1 -1
  700. package/src/kernel/config/schema.ts +3 -1
  701. package/src/kernel/config/types.ts +3 -1
  702. package/src/kernel/copy.test.ts +34 -4
  703. package/src/kernel/copy.ts +54 -0
  704. package/src/kernel/error/PragmaError.test.ts +5 -2
  705. package/src/kernel/error/PragmaError.ts +4 -2
  706. package/src/kernel/error/constants.ts +7 -5
  707. package/src/kernel/error/fromTaskError.ts +28 -6
  708. package/src/kernel/error/recovery.ts +14 -0
  709. package/src/kernel/error/renderError.ts +42 -1
  710. package/src/kernel/error/types.ts +21 -1
  711. package/src/kernel/index.ts +35 -0
  712. package/src/kernel/interactivity.test.ts +76 -0
  713. package/src/kernel/interactivity.ts +69 -0
  714. package/src/kernel/packs/collect.ts +12 -16
  715. package/src/kernel/packs/compile.test.ts +222 -1
  716. package/src/kernel/packs/compile.ts +93 -3
  717. package/src/kernel/packs/disclosure.ts +2 -2
  718. package/src/kernel/packs/graphql/buildLookupDocument.ts +1 -1
  719. package/src/kernel/packs/graphql/fetchGraphqlLookup.ts +3 -4
  720. package/src/kernel/packs/graphql/index.ts +20 -0
  721. package/src/kernel/packs/index.ts +40 -0
  722. package/src/kernel/packs/iri.test.ts +73 -0
  723. package/src/kernel/packs/iri.ts +66 -14
  724. package/src/kernel/packs/renderPack.ts +25 -6
  725. package/src/kernel/packs/resolveEntity.test.ts +274 -0
  726. package/src/kernel/packs/resolveEntity.ts +200 -42
  727. package/src/kernel/packs/runBodies.ts +86 -22
  728. package/src/kernel/packs/sample.ts +1 -1
  729. package/src/kernel/packs/schema.ts +78 -5
  730. package/src/kernel/packs/sparql/applyFilters.ts +136 -16
  731. package/src/kernel/packs/sparql/buildLookupQuery.test.ts +290 -0
  732. package/src/kernel/packs/sparql/buildLookupQuery.ts +367 -17
  733. package/src/kernel/packs/sparql/index.ts +37 -0
  734. package/src/kernel/packs/sparql/runSelect.test.ts +1 -1
  735. package/src/kernel/packs/sparql/runSelect.ts +3 -4
  736. package/src/kernel/packs/toolDescription.test.ts +77 -4
  737. package/src/kernel/packs/types.ts +136 -0
  738. package/src/kernel/packs/uniqueness.ts +1 -1
  739. package/src/kernel/project/cli/buildProgram.test.ts +218 -12
  740. package/src/kernel/project/cli/buildProgram.ts +84 -18
  741. package/src/kernel/project/cli/constants.ts +34 -0
  742. package/src/kernel/project/cli/dispatch.test.ts +160 -2
  743. package/src/kernel/project/cli/dispatch.ts +226 -45
  744. package/src/kernel/project/cli/exitCodes.ts +1 -1
  745. package/src/kernel/project/cli/globalFlags.test.ts +117 -1
  746. package/src/kernel/project/cli/globalFlags.ts +134 -31
  747. package/src/kernel/project/cli/helpFormat.ts +14 -2
  748. package/src/kernel/project/cli/rootHelp.ts +74 -12
  749. package/src/kernel/project/cli/suggest.test.ts +33 -1
  750. package/src/kernel/project/cli/suggest.ts +25 -1
  751. package/src/kernel/project/cli/verbHelp.test.ts +30 -0
  752. package/src/kernel/project/cli/verbHelp.ts +23 -7
  753. package/src/kernel/project/mcp/buildServer.ts +7 -4
  754. package/src/kernel/project/mcp/envelope.ts +2 -2
  755. package/src/kernel/project/mcp/instructions.ts +2 -2
  756. package/src/kernel/project/mcp/mcpError.ts +1 -1
  757. package/src/kernel/project/mcp/parity.test.ts +5 -2
  758. package/src/kernel/project/mcp/prompts/index.ts +37 -0
  759. package/src/kernel/project/mcp/prompts/source.ts +2 -2
  760. package/src/kernel/project/mcp/registerVerb.ts +55 -10
  761. package/src/kernel/project/mcp/serve.ts +2 -2
  762. package/src/kernel/render/__snapshots__/renderers.test.ts.snap +7 -4
  763. package/src/kernel/render/contracts.ts +21 -0
  764. package/src/kernel/render/envelope.ts +2 -3
  765. package/src/kernel/render/formatters.ts +1 -1
  766. package/src/kernel/render/renderers.test.ts +243 -6
  767. package/src/kernel/render/renderers.ts +222 -20
  768. package/src/kernel/render/style.test.ts +75 -24
  769. package/src/kernel/render/style.ts +59 -6
  770. package/src/kernel/render/turtle.ts +222 -0
  771. package/src/kernel/render/vocabulary.ts +276 -0
  772. package/src/kernel/runtime/graphpack/buildIndex.ts +1 -1
  773. package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +3 -3
  774. package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +1 -1
  775. package/src/kernel/runtime/graphpack/embedded.ts +3 -3
  776. package/src/kernel/runtime/graphpack/manifest.ts +1 -1
  777. package/src/kernel/runtime/graphpack/read.ts +1 -2
  778. package/src/kernel/runtime/loadSession.ts +1 -1
  779. package/src/kernel/runtime/probe.ts +6 -6
  780. package/src/kernel/runtime/readEntity.ts +472 -28
  781. package/src/kernel/runtime/refs/index.ts +39 -0
  782. package/src/kernel/runtime/refs/parseRef.ts +2 -2
  783. package/src/kernel/runtime/refs/resolve.ts +4 -4
  784. package/src/kernel/runtime/storeReadiness.ts +1 -2
  785. package/src/kernel/runtime/types.ts +15 -1
  786. package/src/kernel/runtime/wasmEmbed.test.ts +37 -39
  787. package/src/kernel/spec/emitReference.ts +105 -30
  788. package/src/kernel/spec/emitSurface.ts +48 -6
  789. package/src/kernel/spec/surfaceConformance.test.ts +4 -2
  790. package/src/kernel/spec/types.ts +277 -4
  791. package/src/testing/PARITY_GAPS.ts +9 -3
  792. package/src/testing/behavioral/docExamples.test.ts +16 -0
  793. package/src/testing/behavioral/errorMatrix.mcp.test.ts +112 -9
  794. package/src/testing/behavioral/firstRun.e2e.test.ts +24 -24
  795. package/src/testing/behavioral/journeys.cli.test.ts +1 -1
  796. package/src/testing/behavioral/journeys.defaultPack.test.ts +7 -7
  797. package/src/testing/behavioral/journeys.firstInstall.test.ts +7 -2
  798. package/src/testing/behavioral/journeys.implementation.test.ts +206 -0
  799. package/src/testing/behavioral/journeys.interactiveTty.e2e.test.ts +2 -2
  800. package/src/testing/behavioral/journeys.packageStories.test.ts +10 -7
  801. package/src/testing/behavioral/mcpServe.e2e.test.ts +57 -2
  802. package/src/testing/behavioral/mcpSurface.test.ts +1 -1
  803. package/src/testing/behavioral/rootCli.e2e.test.ts +26 -2
  804. package/src/testing/eval/__snapshots__/eval.test.ts.snap +26 -1
  805. package/src/testing/eval/cases/effectful.ts +3 -2
  806. package/src/testing/eval/cases/readNouns.ts +245 -9
  807. package/src/testing/fixtures/blockGraph.ts +104 -10
  808. package/src/testing/fixtures/graph/canonical.ts +182 -13
  809. package/src/testing/fixtures/graph/defaultPack.ts +1 -1
  810. package/src/testing/helpers/blankCanonicalRanges.ts +36 -0
  811. package/src/testing/helpers/projectMcp.ts +32 -6
  812. package/src/testing/helpers/runCli.ts +35 -18
  813. package/src/testing/perf/budgets.test.ts +20 -9
  814. package/src/testing/perf/budgets.ts +58 -9
  815. package/src/testing/perf/codegen.test.ts +126 -0
  816. package/src/testing/perf/globalSetup.test.ts +286 -0
  817. package/src/testing/perf/globalSetup.ts +505 -23
  818. package/src/testing/perf/measure.test.ts +38 -0
  819. package/src/testing/perf/measure.ts +23 -4
  820. package/src/testing/setupXdgIsolation.ts +81 -21
  821. package/src/testing/tempRoot.globalSetup.ts +122 -0
  822. package/dist/pragma +0 -0
  823. package/src/capabilities/create/compiledCreate.subprocess.test.ts +0 -189
  824. package/src/capabilities/create/templates.embedded.generated.ts +0 -28
  825. package/src/capabilities/doctor/checks/checkConfigFile.ts +0 -42
  826. package/src/capabilities/doctor/checks/checkMcpCommands.ts +0 -114
  827. package/src/capabilities/doctor/checks/checkMcpConfigured.ts +0 -68
  828. package/src/capabilities/doctor/checks/checkSkillsSymlinked.ts +0 -61
  829. package/src/capabilities/doctor/checks/deriveBand.test.ts +0 -42
  830. package/src/capabilities/doctor/checks/deriveBand.ts +0 -28
  831. package/src/capabilities/shared/bands.ts +0 -16
  832. package/src/kernel/config/__snapshots__/firstRun.test.ts.snap +0 -11
@@ -0,0 +1,294 @@
1
+ /**
2
+ * The `create` CLI mount: the summon generator TREE, mounted under the
3
+ * `create` noun through the SAME registration path the summon bin uses
4
+ * (`registerGeneratorCommands` from
5
+ * `@canonical/summon-core/projection/commander`), fed
6
+ * by the build-time projection (`createSurface.generated.ts`) — so `pragma
7
+ * create component react [component-path]` and `summon component react
8
+ * [component-path]` are one grammar, derived once.
9
+ *
10
+ * The mount owns everything beneath the noun: tree segments as subcommands,
11
+ * prompt-derived flags (a default-true confirm registers only its `--no-`
12
+ * form), grouped help, the excess-positional guard, and the leaf action —
13
+ * which extracts the EXPLICIT answers, makes the ONE interaction decision
14
+ * (refusing before the create runtime ever loads), and hands the kernel's
15
+ * `dispatchPrepared` a synthesized per-leaf VerbSpec so dry-run/undo/real-run
16
+ * rendering, exit codes, SIGINT and the SEC-2 jail reuse the existing
17
+ * machinery byte-for-byte.
18
+ *
19
+ * This is the HEAVY half of the create projection, reached ONLY through the
20
+ * dynamic import in `cliProjection.ts` — the light half the capabilities
21
+ * barrel carries. The split exists for the fast paths: `--help` and
22
+ * `__complete` import the barrel on every spawn and register nothing, so the
23
+ * registration machinery this module needs (summon-core's projection helpers
24
+ * and Commander adapter, Commander itself, the kernel dispatcher) must load
25
+ * only when an invocation actually enters the `create` subtree. The
26
+ * lazy-graph guard in `lazy.test.ts` pins that boundary.
27
+ */
28
+ import { decideInteraction, explicitAnswersComplete, extractAnswers, missingExplicitFlags, refusalMessage, } from "@canonical/summon-core/projection";
29
+ import { emitToProcess, registerGeneratorCommands, } from "@canonical/summon-core/projection/commander";
30
+ import { CommanderError } from "commander";
31
+ import { PragmaError } from "../../kernel/error/index.js";
32
+ import { renderErrorForFormat } from "../../kernel/error/renderError.js";
33
+ import { canPrompt } from "../../kernel/interactivity.js";
34
+ import { MUTATION_FLAG_DOCS } from "../../kernel/project/cli/constants.js";
35
+ import { dispatchPrepared, } from "../../kernel/project/cli/dispatch.js";
36
+ import { helpColumns, helpDim, helpHeading, helpUsage, } from "../../kernel/project/cli/helpFormat.js";
37
+ import { CREATE_GENERATORS } from "./constants.js";
38
+ import { CREATE_CAPABILITY, CREATE_OUTPUT, runCreate } from "./create.verb.js";
39
+ import { renderCreateHelp } from "./createHelp.js";
40
+ import { CREATE_SURFACE } from "./createSurface.generated.js";
41
+ /** The mount's standard-flag rows for the grouped-help Global Options block. */
42
+ const MOUNT_FLAG_HELP = [
43
+ // The kernel's own mutation-flag rows (one authoring point with
44
+ // registration and verb help), then its `--help` row (rootHelp.ts), not
45
+ // Commander's phrasing — one voice across every help page, and `--help`
46
+ // is the only spelling (the subtree inherits the root's long-only help
47
+ // option).
48
+ ...MUTATION_FLAG_DOCS.map(({ flag, doc }) => ({
49
+ flags: flag,
50
+ description: doc,
51
+ })),
52
+ { flags: "--help", description: "Show help (works on any command)" },
53
+ ];
54
+ /** The declared tree, flattened to registration entries (parents first). */
55
+ function surfaceBarrel() {
56
+ const entries = [];
57
+ const namespaces = new Set();
58
+ for (const binding of Object.values(CREATE_GENERATORS)) {
59
+ for (const commandPath of binding.paths) {
60
+ const segments = commandPath.split("/");
61
+ if (segments.length > 1)
62
+ namespaces.add(segments[0]);
63
+ }
64
+ }
65
+ for (const namespace of namespaces) {
66
+ entries.push({ path: [namespace], description: `${namespace} generators` });
67
+ }
68
+ for (const binding of Object.values(CREATE_GENERATORS)) {
69
+ for (const commandPath of binding.paths) {
70
+ const surface = CREATE_SURFACE[commandPath];
71
+ if (!surface) {
72
+ throw new Error(`createSurface.generated.ts carries no entry for "${commandPath}" — rerun the build`);
73
+ }
74
+ entries.push({
75
+ path: commandPath.split("/"),
76
+ generator: {
77
+ commandPath,
78
+ meta: { description: surface.description },
79
+ prompts: surface.prompts,
80
+ },
81
+ });
82
+ }
83
+ }
84
+ return entries.sort((a, b) => a.path.length - b.path.length);
85
+ }
86
+ /** The create noun that declares a command path. */
87
+ function kindOf(commandPath) {
88
+ for (const [kind, binding] of Object.entries(CREATE_GENERATORS)) {
89
+ if (binding.paths.includes(commandPath)) {
90
+ return kind;
91
+ }
92
+ }
93
+ throw new Error(`undeclared command path ${commandPath}`);
94
+ }
95
+ /**
96
+ * Synthesize the per-leaf VerbSpec `dispatchPrepared` runs: params are EMPTY
97
+ * (the mount already extracted the explicit answers — leaf commands carry no
98
+ * Commander defaults, so explicit stays distinguishable from default), and
99
+ * `run` is `runCreate` over the full command path.
100
+ *
101
+ * The output spec is the SHARED `CREATE_OUTPUT`, not a local rebuild: this is
102
+ * the spec a real `create component react …` runs against, so a dry-run
103
+ * renderer declared only on the binding-level verbs would be a renderer the
104
+ * CLI never reached.
105
+ */
106
+ export function leafVerb(commandPath) {
107
+ const surface = CREATE_SURFACE[commandPath];
108
+ return {
109
+ path: ["create", kindOf(commandPath)],
110
+ summary: surface?.description ?? commandPath,
111
+ params: [],
112
+ output: CREATE_OUTPUT,
113
+ capability: CREATE_CAPABILITY,
114
+ run: (params, rt) => runCreate(commandPath, params, rt),
115
+ };
116
+ }
117
+ /**
118
+ * The explicit answers of one leaf invocation: flag-extracted (explicit-only,
119
+ * confirm equality-vs-default) plus the positional when given. Exported for
120
+ * the grammar tests — this is the exact bag the wizard is seeded with.
121
+ */
122
+ export function explicitLeafAnswers(prompts, positionalValue, options) {
123
+ const explicit = extractAnswers(options, prompts);
124
+ const positionalPrompt = prompts.find((prompt) => prompt.positional);
125
+ if (positionalPrompt && positionalValue !== undefined) {
126
+ explicit[positionalPrompt.name] = positionalValue;
127
+ }
128
+ return explicit;
129
+ }
130
+ /**
131
+ * The mount's mode resolution — `decideInteraction` over the leaf's five
132
+ * inputs, with the TTY fact INJECTED so the resolution is testable with
133
+ * `tty: true` (no suite can drive a real TTY through a subprocess). The
134
+ * action calls it with {@link canPrompt} — the same exported H3 gate the
135
+ * kernel's interaction context reads — so the mount and `runCreate` can
136
+ * never disagree about interactivity.
137
+ */
138
+ export function resolveCreateMode(prompts, explicit, mutation, tty) {
139
+ return decideInteraction({
140
+ dryRun: mutation.dryRun,
141
+ undo: mutation.undo,
142
+ yes: mutation.yes,
143
+ isTTY: tty,
144
+ explicitComplete: explicitAnswersComplete(prompts, explicit),
145
+ }).mode;
146
+ }
147
+ /**
148
+ * Write the refusal and set exit 2. The refusal is the cross-CLI parity
149
+ * surface (contract §3): its default bytes are the shared message verbatim,
150
+ * no envelope prefix — the summon bin's full stderr, byte for byte — and
151
+ * ONLY an explicitly requested machine format reframes it, through the
152
+ * kernel's ONE gate+renderer decision (`renderErrorForFormat`): `--format
153
+ * json` emits the D3 `{ ok:false, error }` envelope, `--format llm` the
154
+ * condensed Markdown error form, both as `INVALID_INPUT` through the same
155
+ * renderers every other pragma error uses. Implicit auto-LLM detection (a
156
+ * piped run without `--format`) is excluded by the helper's construction —
157
+ * an inferred output mode must never break refusal byte-parity with summon.
158
+ */
159
+ function writeRefusal(message, flags) {
160
+ const rendered = renderErrorForFormat(new PragmaError({ code: "INVALID_INPUT", message }), flags.format);
161
+ process.stderr.write(`${rendered ?? message}\n`);
162
+ process.exitCode = 2;
163
+ }
164
+ /**
165
+ * Mount the generator tree onto the `create` parent command.
166
+ *
167
+ * The registration entry `cliProjection.ts` dynamically imports — see this
168
+ * module's header for why it must not be reached statically.
169
+ */
170
+ export function mountCreateTree(parent, host) {
171
+ // The parent's own face: the topic tree (paths + descriptions), on bare
172
+ // `create` AND on `create --help` alike, exit 0.
173
+ parent.configureHelp({ formatHelp: () => "" });
174
+ parent.addHelpText("beforeAll", (ctx) => ctx.command === parent ? `${topicTree(host.programName)}\n` : "");
175
+ parent.allowExcessArguments(true);
176
+ parent.action(async () => {
177
+ const stray = parent.args[0];
178
+ if (stray !== undefined) {
179
+ // An unrecognized topic keeps the bin's "Did you mean?" flow (the bin
180
+ // re-derives the token from argv; this message is cosmetic).
181
+ throw new CommanderError(2, "commander.unknownCommand", `error: unknown command '${stray}'`);
182
+ }
183
+ process.stdout.write(`${topicTree(host.programName)}\n`);
184
+ });
185
+ const cliHost = {
186
+ registerFlags: (cmd) => {
187
+ // Reset the designed-help suppression a Commander child inherits from
188
+ // the root program; grouped help re-configures the leaves right after.
189
+ cmd.configureHelp({});
190
+ for (const { flag, doc } of MUTATION_FLAG_DOCS) {
191
+ cmd.option(flag, doc);
192
+ }
193
+ },
194
+ helpFlags: MOUNT_FLAG_HELP,
195
+ // The seam's presentation half: the projection's structure, pragma's
196
+ // house style (see createHelp.ts).
197
+ renderHelp: renderCreateHelp,
198
+ action: async (entry, positionalValue, options) => {
199
+ const generator = entry.generator;
200
+ const explicit = explicitLeafAnswers(generator.prompts, positionalValue, options);
201
+ const mutation = {
202
+ dryRun: options.dryRun === true,
203
+ undo: options.undo === true,
204
+ yes: options.yes === true,
205
+ };
206
+ // The ONE interaction decision — made BEFORE the create runtime loads,
207
+ // so a refusal never touches summon-core. (`runCreate` re-derives the
208
+ // same mode from the same inputs to pick its prompt strategy.)
209
+ const mode = resolveCreateMode(generator.prompts, explicit, mutation, canPrompt());
210
+ if (mode === "refuse") {
211
+ writeRefusal(refusalMessage(missingExplicitFlags(generator.prompts, explicit)), host.globalFlags);
212
+ return;
213
+ }
214
+ await dispatchPrepared(leafVerb(generator.commandPath), explicit, mutation, host.globalFlags);
215
+ },
216
+ onNamespace: (cmd) => {
217
+ // Reset the designed-help suppression a Commander child inherits from
218
+ // the root program. The namespace BEHAVIOR (the shared did-you-mean on
219
+ // a stray segment, help-on-stderr exit 1 when bare) is the
220
+ // projection's, not the mount's — both hosts emit the same lines.
221
+ cmd.configureHelp({});
222
+ },
223
+ // The projection's usage errors reframe ONLY under an explicitly
224
+ // requested machine format — the kernel's ONE gate+renderer decision
225
+ // (`renderErrorForFormat`, shared with `writeRefusal` and bin.ts's
226
+ // usage-error sites), autoLlm excluded by its construction, so the
227
+ // default piped bytes stay the cross-CLI parity surface. Codes mirror
228
+ // bin.ts's classification: unknown command → UNKNOWN_VERB, every other
229
+ // usage error → INVALID_INPUT. The match is serialized PER KIND: an
230
+ // unknown SEGMENT is a fuzzy match, so its bare candidate rides in
231
+ // `suggestions` (substitutable for the token the headline names); an
232
+ // excess positional's match is NOT substitutable — it may BE the stray
233
+ // — so that kind instead carries the correction in the covenant's
234
+ // `recovery.cli` (`[...chain, suggestion].join(" ")`), and ONLY when
235
+ // that command is a DECLARED RUNNABLE LEAF: `chain` is `[<bin>,
236
+ // "create", ...segments]`, so everything past the mount point joined
237
+ // with the suggestion is the CREATE_SURFACE key, and a namespace match
238
+ // (exit-1 help page, can never scaffold) ships NO recovery.
239
+ emit: (outcome) => {
240
+ if (outcome.kind === "namespace-help")
241
+ return emitToProcess(outcome);
242
+ const { error } = outcome;
243
+ const rendered = renderErrorForFormat(new PragmaError({
244
+ code: error.kind === "unknown-segment" ? "UNKNOWN_VERB" : "INVALID_INPUT",
245
+ message: error.headline,
246
+ ...(error.kind === "unknown-segment" && error.suggestion !== undefined
247
+ ? { suggestions: [error.suggestion] }
248
+ : {}),
249
+ ...(error.kind === "excess-positional" &&
250
+ error.suggestion !== undefined &&
251
+ CREATE_SURFACE[[...error.chain.slice(2), error.suggestion].join("/")] !== undefined
252
+ ? {
253
+ recovery: {
254
+ message: "Run the corrected invocation.",
255
+ cli: [...error.chain, error.suggestion].join(" "),
256
+ },
257
+ }
258
+ : {}),
259
+ }), host.globalFlags.format);
260
+ // No machine format requested: the default piped bytes are the parity
261
+ // surface.
262
+ if (rendered === undefined)
263
+ return emitToProcess(outcome);
264
+ process.stderr.write(`${rendered}\n`);
265
+ process.exitCode = outcome.exitCode;
266
+ },
267
+ };
268
+ registerGeneratorCommands(parent, surfaceBarrel(), cliHost);
269
+ }
270
+ /**
271
+ * The pragma-styled topic tree (paths + descriptions from the manifest):
272
+ * one row per INVOCABLE command path (`component react`, `package`, …), so
273
+ * every row is copy-pasteable after `pragma create ` — the same kernel
274
+ * primitives, and the same shape, as every other noun's verb listing
275
+ * (`formatNounHelp`).
276
+ */
277
+ export function topicTree(programName) {
278
+ const rows = Object.values(CREATE_GENERATORS).flatMap((binding) => binding.paths.map((commandPath) => [
279
+ commandPath.split("/").join(" "),
280
+ CREATE_SURFACE[commandPath]?.description ?? "",
281
+ ]));
282
+ return [
283
+ helpUsage(`${programName} create <path...> [options]`),
284
+ "",
285
+ "Scaffold from the summon generator tree.",
286
+ "",
287
+ helpHeading("Generators"),
288
+ ...helpColumns(rows),
289
+ "",
290
+ helpDim(`Run \`${programName} create <path...> --help\` for a generator's flags.`),
291
+ helpDim(`The tree mirrors the summon CLI: \`${programName} create <path...>\` ≡ \`summon <path...>\`.`),
292
+ ].join("\n");
293
+ }
294
+ //# sourceMappingURL=mount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mount.js","sourceRoot":"","sources":["../../../../src/capabilities/create/mount.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * SEC-2 path jail: an independent guard that a `create` output path stays inside
3
+ * the workspace, run BEFORE any effect. It rejects an absolute path, a `..`
4
+ * escape, and — via `realpath` on the nearest existing ancestor — a symlink that
5
+ * points out of the tree. This is defence in depth: the generators' own prompt
6
+ * validators (`validateComponentPath`, `validateAppPath`) reject absolute/`..`
7
+ * uniformly across the declared path prompts — in BOTH hosts, upstream of this
8
+ * jail — so the jail is pragma's host-level backstop, and its symlink check is
9
+ * the one tier the shared validators do not have (summon relies on the
10
+ * validator tier; hoisting the realpath check into the shared layer is a named
11
+ * follow-up).
12
+ */
13
+ import { existsSync, realpathSync } from "node:fs";
14
+ import * as path from "node:path";
15
+ import { PragmaError } from "../../kernel/error/index.js";
16
+ /** Walk up from `p` to the nearest ancestor that exists on disk. */
17
+ function nearestExisting(p) {
18
+ let current = p;
19
+ while (!existsSync(current)) {
20
+ const parent = path.dirname(current);
21
+ if (parent === current)
22
+ return current; // filesystem root
23
+ current = parent;
24
+ }
25
+ return current;
26
+ }
27
+ /** Whether `rel` (a `path.relative` result) points at or above its base. */
28
+ const escapes = (rel) => rel === ".." || rel.startsWith(`..${path.sep}`) || path.isAbsolute(rel);
29
+ /**
30
+ * Reject a create output path that would escape the workspace root (`cwd`).
31
+ *
32
+ * @param field - The param name being jailed (for the error message).
33
+ * @param value - The path value (skipped when absent — the generator's own safe
34
+ * default is used instead).
35
+ * @param cwd - The workspace root the path must stay within.
36
+ * @throws PragmaError INVALID_INPUT when the path escapes the workspace.
37
+ * @note Impure — reads the filesystem (`existsSync`/`realpathSync`).
38
+ */
39
+ export function assertInsideWorkspace(field, value, cwd) {
40
+ if (typeof value !== "string" || value === "")
41
+ return;
42
+ if (path.isAbsolute(value)) {
43
+ throw PragmaError.invalidInput(field, value, {
44
+ recovery: { message: "Use a path relative to the current directory." },
45
+ });
46
+ }
47
+ const root = path.resolve(cwd);
48
+ const resolved = path.resolve(root, value);
49
+ if (escapes(path.relative(root, resolved))) {
50
+ throw PragmaError.invalidInput(field, value, {
51
+ recovery: { message: "The path must stay inside the workspace." },
52
+ });
53
+ }
54
+ // Symlink escape: the nearest existing ancestor, resolved through symlinks,
55
+ // must still sit within the resolved workspace root.
56
+ const realRoot = realpathSync(root);
57
+ const realAncestor = realpathSync(nearestExisting(resolved));
58
+ if (realAncestor !== realRoot &&
59
+ escapes(path.relative(realRoot, realAncestor))) {
60
+ throw PragmaError.invalidInput(field, value, {
61
+ recovery: { message: "The path resolves outside the workspace." },
62
+ });
63
+ }
64
+ }
65
+ //# sourceMappingURL=pathJail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathJail.js","sourceRoot":"","sources":["../../../../src/capabilities/create/pathJail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,oEAAoE;AACpE,SAAS,eAAe,CAAC,CAAS;IAChC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO,OAAO,CAAC,CAAC,kBAAkB;QAC1D,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,4EAA4E;AAC5E,MAAM,OAAO,GAAG,CAAC,GAAW,EAAW,EAAE,CACvC,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAE1E;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAa,EACb,KAAc,EACd,GAAW;IAEX,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO;IAEtD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE;YAC3C,QAAQ,EAAE,EAAE,OAAO,EAAE,+CAA+C,EAAE;SACvE,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3C,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE;YAC3C,QAAQ,EAAE,EAAE,OAAO,EAAE,0CAA0C,EAAE;SAClE,CAAC,CAAC;IACL,CAAC;IAED,4EAA4E;IAC5E,qDAAqD;IACrD,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,IACE,YAAY,KAAK,QAAQ;QACzB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,EAC9C,CAAC;QACD,MAAM,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE;YAC3C,QAAQ,EAAE,EAAE,OAAO,EAAE,0CAA0C,EAAE;SAClE,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { generators as applicationGenerators } from "@canonical/summon-application";
2
+ import { generators as componentGenerators } from "@canonical/summon-component";
3
+ import { generators as packageGenerators } from "@canonical/summon-package";
4
+ import { PragmaError } from "../../kernel/error/index.js";
5
+ import { CREATE_GENERATORS } from "./constants.js";
6
+ /**
7
+ * The declared packages' generator maps, bound by noun. The STATIC imports above
8
+ * are load-bearing: a computed `import(CREATE_GENERATORS[kind].name)` is opaque
9
+ * to every bundler and analyser, and the historical cost was measured — under
10
+ * `bun build --compile` it left the generators out of the artifact entirely
11
+ * (`Cannot find module '@canonical/summon-component'`). The declaration decides
12
+ * WHICH generator runs; it cannot decide which module is reachable.
13
+ *
14
+ * The maps' `generate` is invariant in its (specific) answer type, so they are
15
+ * erased to the base definition via `unknown` — runtime-safe because `execute`
16
+ * calls `generate(answers)` with the resolved answers, which carry the fields
17
+ * the specific generator reads.
18
+ */
19
+ const GENERATOR_MAPS = {
20
+ component: componentGenerators,
21
+ package: packageGenerators,
22
+ application: applicationGenerators,
23
+ };
24
+ /**
25
+ * Pick the generator for one FULL COMMAND PATH (`component/react`,
26
+ * `package`, `application/react`) — a straight lookup over the declared
27
+ * bindings, no framework axis: the path IS the identity, exactly as summon's
28
+ * tree keys it. Callers with a kind+framework surface (MCP) map to a path
29
+ * first.
30
+ *
31
+ * The module this lives in statically imports the summon generator packages'
32
+ * `generators` maps — and importing them pulls summon-core. So it MUST stay
33
+ * behind `create`'s lazy `import()` (R9): the fast paths (`buildProgram` /
34
+ * `__complete` / `--help` / reads) never load it, and `create --yes` never
35
+ * loads React either (summon-core's Ink UI is dynamic-only).
36
+ *
37
+ * @param commandPath - The declared command path to run.
38
+ * @returns The selected generator definition.
39
+ * @throws PragmaError INTERNAL for an undeclared path (callers validate
40
+ * user-facing inputs before mapping to a path).
41
+ */
42
+ export function pickGenerator(commandPath) {
43
+ for (const [kind, binding] of Object.entries(CREATE_GENERATORS)) {
44
+ if (binding.paths.includes(commandPath)) {
45
+ const generator = GENERATOR_MAPS[kind][commandPath];
46
+ if (generator)
47
+ return generator;
48
+ break;
49
+ }
50
+ }
51
+ throw PragmaError.internalError(`missing generator for ${commandPath}`);
52
+ }
53
+ //# sourceMappingURL=pickGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pickGenerator.js","sourceRoot":"","sources":["../../../../src/capabilities/create/pickGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACpF,OAAO,EAAE,UAAU,IAAI,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEhF,OAAO,EAAE,UAAU,IAAI,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKnD;;;;;;;;;;;;GAYG;AACH,MAAM,cAAc,GAAqC;IACvD,SAAS,EAAE,mBAA8C;IACzD,OAAO,EAAE,iBAA4C;IACrD,WAAW,EAAE,qBAAgD;CAC9D,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAChE,IAAK,OAAO,CAAC,KAA2B,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/D,MAAM,SAAS,GAAG,cAAc,CAAC,IAAkB,CAAC,CAAC,WAAW,CAAC,CAAC;YAClE,IAAI,SAAS;gBAAE,OAAO,SAAS,CAAC;YAChC,MAAM;QACR,CAAC;IACH,CAAC;IACD,MAAM,WAAW,CAAC,aAAa,CAAC,yBAAyB,WAAW,EAAE,CAAC,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/capabilities/create/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * The distribution's own read stories, compiled at module load.
3
+ *
4
+ * `pragma.conf.ts` declares them on the packs that supply them; this is the ONE
5
+ * place those declarations become capabilities. They come through the SAME door
6
+ * a third-party story does — {@link compileStoryModule} — so the mechanism the CLI
7
+ * offers forks is the mechanism the CLI itself runs on.
8
+ *
9
+ * They are compiled STATICALLY rather than merged at dispatch on purpose: the
10
+ * `--help` / `__complete` fast paths read the static capability set, and
11
+ * `surface/surface.v2.json` freezes the emitted surface, so a noun that only
12
+ * arrived at dispatch would vanish from help and completion on a fresh install.
13
+ * That is affordable because this module is zod-free and pure — `pragma.conf.ts`
14
+ * is inert data and the compiler builds specs without touching the store.
15
+ *
16
+ * Config- and package-declared stories still OVERRIDE these at dispatch; the
17
+ * `story` marker on each module is what tells `assembleEffectiveModules` which
18
+ * modules may be replaced.
19
+ */
20
+ import conf from "../../pragma.conf.js";
21
+ import { compileStoryModule } from "../kernel/packs/compile.js";
22
+ import { distributionSource, } from "../kernel/packs/types.js";
23
+ import { DEFAULT_PREFIX_MAP } from "../kernel/render/index.js";
24
+ /** The read stories `pragma.conf.ts` declares on its packs, by noun. */
25
+ export const declaredStories = new Map(conf.packs
26
+ .flatMap((pack) => pack.stories ?? [])
27
+ .map((story) => [story.noun, story]));
28
+ /**
29
+ * Those stories compiled to capability modules, by noun.
30
+ *
31
+ * `capabilities/index.ts` appends every module no authored one claims — and
32
+ * since L-OPEN-9 that is every one of them: no data noun is authored, so a
33
+ * declared story IS the whole noun. `distribution.test.ts` holds that shut by
34
+ * asserting each registered module's verbs deep-equal its compiled story's.
35
+ */
36
+ export const storyModules = new Map([...declaredStories].map(([noun, story]) => [
37
+ noun,
38
+ compileStoryModule(story, distributionSource("pragma.conf.ts"), DEFAULT_PREFIX_MAP),
39
+ ]));
40
+ //# sourceMappingURL=distribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distribution.js","sourceRoot":"","sources":["../../../src/capabilities/distribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,IAAI,MAAM,sBAAsB,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EACL,kBAAkB,GAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D,wEAAwE;AACxE,MAAM,CAAC,MAAM,eAAe,GAAwC,IAAI,GAAG,CACzE,IAAI,CAAC,KAAK;KACP,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;KACrC,GAAG,CAAC,CAAC,KAAK,EAAqC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAC1E,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAA0C,IAAI,GAAG,CACxE,CAAC,GAAG,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;IAC1C,IAAI;IACJ,kBAAkB,CAChB,KAAK,EACL,kBAAkB,CAAC,gBAAgB,CAAC,EACpC,kBAAkB,CACnB;CACF,CAAC,CACH,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { BIN_NAME } from "../../../constants.js";
2
+ import { entityTotal } from "../../../kernel/completion/entitySource.js";
3
+ /**
4
+ * Check that the local store boots, reporting the entity total and boot time.
5
+ * The check is NAMED "store" in the report — the same word every other surface
6
+ * uses for it; the ke library it boots through is an implementation detail.
7
+ *
8
+ * This is the ONE check that touches the store — it boots the shared lazy store
9
+ * inside a try/catch, so doctor stays storeless-by-default at the dispatch level
10
+ * (the verb declares `needsStore: false`; only this check pays the boot, only
11
+ * when reached). On success it reads the entity total from the session's
12
+ * storeless index rather than a fresh triple COUNT — cheaper, and the store is
13
+ * already booted.
14
+ *
15
+ * @param rt - The per-invocation runtime.
16
+ * @returns A CheckResult: pass with the entity total, or fail with a remedy.
17
+ * @note Impure — boots the store.
18
+ */
19
+ export async function checkKeStore(rt) {
20
+ const start = performance.now();
21
+ try {
22
+ const session = await rt.store.get();
23
+ const total = entityTotal(session.index);
24
+ const elapsed = Math.round(performance.now() - start);
25
+ return {
26
+ name: "store",
27
+ status: "pass",
28
+ detail: `${total.toLocaleString()} entities in ${elapsed}ms`,
29
+ };
30
+ }
31
+ catch {
32
+ return {
33
+ name: "store",
34
+ status: "fail",
35
+ detail: "cannot boot",
36
+ remedy: `Ensure design-system packs are configured and run \`${BIN_NAME} sources update\`.`,
37
+ };
38
+ }
39
+ }
40
+ //# sourceMappingURL=checkKeStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkKeStore.js","sourceRoot":"","sources":["../../../../../src/capabilities/doctor/checks/checkKeStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAIzE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAiB;IAClD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;QACtD,OAAO;YACL,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,gBAAgB,OAAO,IAAI;SAC7D,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,uDAAuD,QAAQ,oBAAoB;SAC5F,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ const MIN_NODE_MAJOR = 20;
2
+ /**
3
+ * Check that the Node.js major version is at least {@link MIN_NODE_MAJOR}.
4
+ *
5
+ * @returns A CheckResult with the current version and pass/fail status.
6
+ * @note Impure — reads `process.versions`.
7
+ */
8
+ export async function checkNodeVersion() {
9
+ const version = process.versions.node;
10
+ const major = Number.parseInt(version.split(".")[0] ?? "0", 10);
11
+ if (major >= MIN_NODE_MAJOR) {
12
+ return { name: "Node version", status: "pass", detail: `v${version}` };
13
+ }
14
+ return {
15
+ name: "Node version",
16
+ status: "fail",
17
+ detail: `v${version} (requires >= ${MIN_NODE_MAJOR})`,
18
+ remedy: `Install Node.js >= ${MIN_NODE_MAJOR}`,
19
+ };
20
+ }
21
+ //# sourceMappingURL=checkNodeVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkNodeVersion.js","sourceRoot":"","sources":["../../../../../src/capabilities/doctor/checks/checkNodeVersion.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAEhE,IAAI,KAAK,IAAI,cAAc,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,OAAO,EAAE,EAAE,CAAC;IACzE,CAAC;IAED,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,IAAI,OAAO,iBAAiB,cAAc,GAAG;QACrD,MAAM,EAAE,sBAAsB,cAAc,EAAE;KAC/C,CAAC;AACJ,CAAC"}