@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/capabilities/upgrade/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Build the `upgrade` Task (lazily imported, off the fast path).
3
+ *
4
+ * Async-setup then compose: read the channel, detect the install source, and
5
+ * check the registry (a preview-safe READ — no side effect), then return a Task
6
+ * shaped by the outcome. The `exec` effect is the SOLE mutation, so the effect
7
+ * seam does the rest for free:
8
+ *
9
+ * - `--dry-run` (dispatcher `dryRun`) MOCKS the exec and describes the plan —
10
+ * both the `Log` version-delta line AND the `Execute: <command>` line show,
11
+ * and nothing runs.
12
+ * - `--yes` / MCP `confirm` runs the exec for real; a nonzero exit is surfaced
13
+ * by `assertExecOk` as an actionable UNSUPPORTED (exit 1) — the interpreter
14
+ * RESOLVES on a nonzero exit, so the check is the consumer's job.
15
+ * - offline / already-latest carry NO exec — a real run just returns the status.
16
+ *
17
+ * The whole registry read is preview-safe, so no `mutation.preview` gating is
18
+ * needed here (unlike `sources update`, whose heavy resolve must be gated).
19
+ * `run` returns `Promise<Task<R>>`, presented through the `Task<R>` arm by the
20
+ * honest cast at the verb (the `update.verb.ts` precedent).
21
+ */
22
+ import { $, exec, gen, info, warn } from "@canonical/task";
23
+ import { assertExecOk, checkRegistryVersion, detectInstallSource, guardMissingBinary, PRAGMA_PACKAGE, pmUpdateCommand, } from "../shared/index.js";
24
+ /**
25
+ * Resolve the upgrade state and compose the corresponding Task.
26
+ *
27
+ * @param rt - The per-invocation runtime.
28
+ * @returns A Task yielding the upgrade outcome (its exec runs only on a real,
29
+ * update-needed execution).
30
+ * @note Impure — reads the config + the registry (the exec is the only mutation,
31
+ * and it runs only under a real, update-needed execution).
32
+ */
33
+ export async function runUpgrade(rt) {
34
+ const { channel } = (await rt.loadConfig()).config;
35
+ const install = detectInstallSource();
36
+ const command = pmUpdateCommand(install.pm, PRAGMA_PACKAGE);
37
+ const pm = install.label;
38
+ const current = rt.version;
39
+ const registry = await checkRegistryVersion(PRAGMA_PACKAGE, channel);
40
+ if (registry === undefined) {
41
+ const data = {
42
+ pm,
43
+ current,
44
+ latest: undefined,
45
+ command,
46
+ offline: true,
47
+ alreadyLatest: false,
48
+ executed: false,
49
+ };
50
+ return gen(function* () {
51
+ yield* $(warn("Cannot reach the registry — skipped the update check."));
52
+ return data;
53
+ });
54
+ }
55
+ if (registry.latest === current) {
56
+ const data = {
57
+ pm,
58
+ current,
59
+ latest: registry.latest,
60
+ command,
61
+ offline: false,
62
+ alreadyLatest: true,
63
+ executed: false,
64
+ };
65
+ return gen(function* () {
66
+ yield* $(info(`Already at the latest version (${current}).`));
67
+ return data;
68
+ });
69
+ }
70
+ const data = {
71
+ pm,
72
+ current,
73
+ latest: registry.latest,
74
+ command,
75
+ offline: false,
76
+ alreadyLatest: false,
77
+ executed: true,
78
+ };
79
+ const parts = command.split(" ");
80
+ const bin = parts[0] ?? "npm";
81
+ const args = parts.slice(1);
82
+ // Guard the spawn: an absent package manager (`bin` not on PATH) REJECTS the
83
+ // exec with ENOENT, which would collapse to INTERNAL_ERROR ("report
84
+ // this issue"). Surface it as a named "`<pm>` not found on PATH" instead.
85
+ return guardMissingBinary(bin, {
86
+ message: `Install ${pm} (or your package manager) and ensure it is on your PATH, then try again.`,
87
+ }, gen(function* () {
88
+ // The version-delta rides a Log effect, so `--dry-run` describes it too.
89
+ yield* $(info(`${current} → ${registry.latest}`));
90
+ // The one mutation — mocked under dry-run, run for real under --yes/confirm.
91
+ // The interpreter RESOLVES on a nonzero exit (only a spawn error rejects),
92
+ // so inspect the result: a failed install (e.g. EACCES on a global
93
+ // `npm i -g`) must fail loudly, not report a silent success.
94
+ const result = yield* $(exec(bin, args, rt.cwd));
95
+ assertExecOk(command, result);
96
+ return data;
97
+ }));
98
+ }
99
+ //# sourceMappingURL=runUpgrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runUpgrade.js","sourceRoot":"","sources":["../../../../src/capabilities/upgrade/runUpgrade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAa,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAG5B;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,EAAiB;IAEjB,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;IACnD,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IAC5D,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;IACzB,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IAE3B,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAErE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAgB;YACxB,EAAE;YACF,OAAO;YACP,MAAM,EAAE,SAAS;YACjB,OAAO;YACP,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,KAAK;YACpB,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,OAAO,GAAG,CAAC,QAAQ,CAAC;YAClB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAChC,MAAM,IAAI,GAAgB;YACxB,EAAE;YACF,OAAO;YACP,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,OAAO;YACP,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,IAAI;YACnB,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,OAAO,GAAG,CAAC,QAAQ,CAAC;YAClB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kCAAkC,OAAO,IAAI,CAAC,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAgB;QACxB,EAAE;QACF,OAAO;QACP,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,OAAO;QACP,OAAO,EAAE,KAAK;QACd,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,6EAA6E;IAC7E,oEAAoE;IACpE,0EAA0E;IAC1E,OAAO,kBAAkB,CACvB,GAAG,EACH;QACE,OAAO,EAAE,WAAW,EAAE,2EAA2E;KAClG,EACD,GAAG,CAAC,QAAQ,CAAC;QACX,yEAAyE;QACzE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAClD,6EAA6E;QAC7E,2EAA2E;QAC3E,mEAAmE;QACnE,6DAA6D;QAC7D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACjD,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Data shape for `pragma upgrade`.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/capabilities/upgrade/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Formatters for `pragma upgrade` — plain (chalk), llm, json.
3
+ *
4
+ * Renders the REAL-run outcome (the `--dry-run` plan is rendered by the
5
+ * dispatcher's plan renderer, not here), so there is no "would run" branch: a
6
+ * needed run always carries `executed: true`.
7
+ */
8
+ import chalk from "chalk";
9
+ import { PRAGMA_PACKAGE } from "../shared/index.js";
10
+ export const upgradeFormatters = {
11
+ plain(data) {
12
+ const lines = [`Installed via: ${data.pm}`];
13
+ if (data.offline) {
14
+ lines.push("Cannot reach the registry — try again later.");
15
+ return lines.join("\n");
16
+ }
17
+ if (data.alreadyLatest) {
18
+ lines.push(`Already at the latest version (${data.current}).`);
19
+ return lines.join("\n");
20
+ }
21
+ lines.push("", `${PRAGMA_PACKAGE} ${data.current} → ${chalk.green(String(data.latest))}`, "");
22
+ if (data.executed) {
23
+ lines.push(`Ran: ${chalk.cyan(data.command)}`, "", `Updated to ${data.latest}.`);
24
+ }
25
+ else {
26
+ lines.push(`Run: ${chalk.cyan(data.command)}`);
27
+ }
28
+ return lines.join("\n");
29
+ },
30
+ llm(data) {
31
+ if (data.offline)
32
+ return "Upgrade check failed: cannot reach the registry.";
33
+ if (data.alreadyLatest) {
34
+ return `Already at the latest version (${data.current}).`;
35
+ }
36
+ if (data.executed)
37
+ return `Upgraded: ${data.current} → ${data.latest}`;
38
+ return `Update available: ${data.current} → ${data.latest} (\`${data.command}\`)`;
39
+ },
40
+ json(data) {
41
+ return JSON.stringify(data);
42
+ },
43
+ };
44
+ //# sourceMappingURL=upgrade.render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.render.js","sourceRoot":"","sources":["../../../../src/capabilities/upgrade/upgrade.render.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,MAAM,CAAC,MAAM,iBAAiB,GAA4B;IACxD,KAAK,CAAC,IAAI;QACR,MAAM,KAAK,GAAG,CAAC,kBAAkB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;YAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,kCAAkC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;YAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,KAAK,CAAC,IAAI,CACR,EAAE,EACF,GAAG,cAAc,KAAK,IAAI,CAAC,OAAO,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAC1E,EAAE,CACH,CAAC;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CACR,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAClC,EAAE,EACF,cAAc,IAAI,CAAC,MAAM,GAAG,CAC7B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,GAAG,CAAC,IAAI;QACN,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,kDAAkD,CAAC;QAC5E,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,kCAAkC,IAAI,CAAC,OAAO,IAAI,CAAC;QAC5D,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,aAAa,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACvE,OAAO,qBAAqB,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,MAAM,OAAO,IAAI,CAAC,OAAO,KAAK,CAAC;IACpF,CAAC;IAED,IAAI,CAAC,IAAI;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * The `upgrade` verb spec (noun `upgrade`, self-verb).
3
+ *
4
+ * A storeless, network-touching mutation: check the registry, then run the
5
+ * package-manager update. `destructive: false` is load-bearing (D4) — upgrading
6
+ * replaces the binary, it destroys no user data — so `annotationsFor` emits
7
+ * `destructiveHint: false` rather than letting MCP clients default an unset hint
8
+ * on a non-read-only tool to `true`.
9
+ *
10
+ * `run` returns `Promise<Task<UpgradeData>>` (async registry read before the
11
+ * effects are known) presented through the `Task<R>` arm by the honest cast —
12
+ * the `update.verb.ts` precedent; a literal `Promise<Task>` union arm would
13
+ * poison async read-verb inference.
14
+ */
15
+ import { BIN_NAME } from "../../constants.js";
16
+ import { asVerb } from "../../kernel/spec/asVerb.js";
17
+ import { upgradeFormatters } from "./upgrade.render.js";
18
+ const upgradeVerb = {
19
+ path: ["upgrade"],
20
+ summary: `Upgrade the ${BIN_NAME} CLI to the latest version.`,
21
+ doc: "Checks the registry for the active channel's latest release and runs your package manager's global-update command. Preview the update before applying it.",
22
+ params: [],
23
+ output: { formatters: upgradeFormatters },
24
+ examples: [
25
+ { cmd: `${BIN_NAME} upgrade` },
26
+ {
27
+ cmd: `${BIN_NAME} upgrade --dry-run`,
28
+ note: "show the delta and the command",
29
+ },
30
+ ],
31
+ capability: {
32
+ needsStore: false,
33
+ mutates: true,
34
+ destructive: false,
35
+ needsNetwork: true,
36
+ mcp: {
37
+ expose: true,
38
+ annotations: {
39
+ readOnlyHint: false,
40
+ destructiveHint: false,
41
+ openWorldHint: false,
42
+ },
43
+ },
44
+ },
45
+ run: (_params, runtime) => import("./runUpgrade.js").then((m) => m.runUpgrade(runtime)),
46
+ };
47
+ /** The `upgrade` capability module. */
48
+ export const upgradeModule = {
49
+ name: "upgrade",
50
+ verbs: [asVerb(upgradeVerb)],
51
+ };
52
+ //# sourceMappingURL=upgrade.verb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.verb.js","sourceRoot":"","sources":["../../../../src/capabilities/upgrade/upgrade.verb.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAGrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,GAAmD;IAClE,IAAI,EAAE,CAAC,SAAS,CAAC;IACjB,OAAO,EAAE,eAAe,QAAQ,6BAA6B;IAC7D,GAAG,EAAE,2JAA2J;IAChK,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE;IACzC,QAAQ,EAAE;QACR,EAAE,GAAG,EAAE,GAAG,QAAQ,UAAU,EAAE;QAC9B;YACE,GAAG,EAAE,GAAG,QAAQ,oBAAoB;YACpC,IAAI,EAAE,gCAAgC;SACvC;KACF;IACD,UAAU,EAAE;QACV,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,IAAI;QAClB,GAAG,EAAE;YACH,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE;gBACX,YAAY,EAAE,KAAK;gBACnB,eAAe,EAAE,KAAK;gBACtB,aAAa,EAAE,KAAK;aACrB;SACF;KACF;IACD,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CACxB,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACnC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CACU;CACpC,CAAC;AAEF,uCAAuC;AACvC,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;CAC7B,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The `version` capability barrel — the command form of `--version`.
3
+ */
4
+ import { versionVerbSpec } from "./version.verb.js";
5
+ /** The `version` capability module. */
6
+ export const versionModule = {
7
+ name: "version",
8
+ verbs: [versionVerbSpec],
9
+ };
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/capabilities/version/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,uCAAuC;AACvC,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,CAAC,eAAe,CAAC;CACzB,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * `pragma version` — the command form of `--version`.
3
+ *
4
+ * Users type it reflexively, so it exists and prints exactly the bytes the
5
+ * flag prints: the bare semver on stdout, storeless, no store or network
6
+ * touched. Withheld from MCP — the version already rides `info` and the
7
+ * server handshake's `serverInfo`.
8
+ */
9
+ import { BIN_NAME, VERSION } from "../../constants.js";
10
+ import { asVerb } from "../../kernel/spec/asVerb.js";
11
+ const versionVerb = {
12
+ path: ["version"],
13
+ summary: "Print the CLI version.",
14
+ doc: "Prints the version `--version` prints — one value, two spellings of the same read.",
15
+ params: [],
16
+ output: {
17
+ formatters: {
18
+ plain: (version) => version,
19
+ llm: (version) => version,
20
+ json: (version) => JSON.stringify({ version }),
21
+ },
22
+ },
23
+ examples: [{ cmd: `${BIN_NAME} version` }],
24
+ capability: {
25
+ needsStore: false,
26
+ mutates: false,
27
+ mcp: {
28
+ expose: false,
29
+ reason: "the version rides `info` and the MCP handshake's serverInfo",
30
+ },
31
+ },
32
+ run: async () => VERSION,
33
+ };
34
+ /** The `version` verb. */
35
+ export const versionVerbSpec = asVerb(versionVerb);
36
+ //# sourceMappingURL=version.verb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.verb.js","sourceRoot":"","sources":["../../../../src/capabilities/version/version.verb.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAGrD,MAAM,WAAW,GAA8C;IAC7D,IAAI,EAAE,CAAC,SAAS,CAAC;IACjB,OAAO,EAAE,wBAAwB;IACjC,GAAG,EAAE,oFAAoF;IACzF,MAAM,EAAE,EAAE;IACV,MAAM,EAAE;QACN,UAAU,EAAE;YACV,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO;YAC3B,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO;YACzB,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;SAC/C;KACF;IACD,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,QAAQ,UAAU,EAAE,CAAC;IAC1C,UAAU,EAAE;QACV,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,KAAK;QACd,GAAG,EAAE;YACH,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,6DAA6D;SACtE;KACF;IACD,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO;CACzB,CAAC;AAEF,0BAA0B;AAC1B,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Package-level constants — the distribution's identity, projected.
3
+ *
4
+ * The bin name, MCP server name, description and issues URL are NOT authored
5
+ * here: they are read from the distribution config (`pragma.conf.ts`), so a fork
6
+ * changes values, not code. The import is static because the surfaces that need
7
+ * identity — `--help`, `__complete`, first-run onboarding, the MCP handshake —
8
+ * all run before or without the config layer. That is safe precisely because
9
+ * `pragma.conf.ts` is inert data: a plain object literal whose only import is a
10
+ * type. It reaches no zod schema, no fs, no evaluator. `capabilities/lazy.test.ts`
11
+ * pins that boundary, and `src/identity.test.ts` proves the projection.
12
+ *
13
+ * Also holds the stable cross-cutting enums: output formats here, and the
14
+ * detail levels re-exported from `kernel/config/types.ts`, where the config
15
+ * validator closes the `detail` field over them.
16
+ */
17
+ import pkg from "../package.json" with { type: "json" };
18
+ import identity from "../pragma.conf.js";
19
+ import { DETAIL_LEVELS } from "./kernel/config/types.js";
20
+ /** CLI binary name — the distribution's `name`. */
21
+ const BIN_NAME = identity.name;
22
+ /**
23
+ * MCP server identity — the same name as the CLI bin, so agents already pointed
24
+ * at the server resolve it unchanged. Also the `serverInfo.name` the server
25
+ * introduces itself with on the wire (paired with {@link VERSION} by
26
+ * `buildServer`), so a peer reads the distribution's declared name, never a
27
+ * hardcoded one.
28
+ */
29
+ const MCP_SERVER_NAME = identity.name;
30
+ /** One-line program description for help and server metadata. */
31
+ const PROGRAM_DESCRIPTION = identity.help;
32
+ /** Where the distribution asks users to file issues and feedback. */
33
+ const ISSUES_URL = identity.issuesUrl;
34
+ /** Semver version string read from package.json. */
35
+ const VERSION = pkg.version;
36
+ /**
37
+ * The project config filename the walker looks for and every surface that
38
+ * quotes it — diagnostics, the onboarding note, the generated reference, the
39
+ * surface covenant — names. It lives HERE rather than beside the walker so the
40
+ * quoting surfaces do not have to import `kernel/config/**`: the storeless
41
+ * `--help`/`__complete` graph is asserted to reach no config module, and
42
+ * `completion/safety.test.ts` fails the moment one arrives.
43
+ */
44
+ const PROJECT_CONFIG_FILENAME = `${identity.name}.config.ts`;
45
+ /**
46
+ * The distribution's name plus a space: the prefix a `recovery.cli` hint carries
47
+ * so it quotes a command the installed binary answers to (D5). Kernel hints are
48
+ * authored through `cliRecovery`, which prepends it; `packs/schema.ts` REJECTS
49
+ * it in a user-authored pack's `emptyRecovery.cli`, because the CONSUMING
50
+ * distribution's renderer supplies its own. Use {@link BIN_NAME} for prose —
51
+ * this constant's trailing space belongs to the recovery invariant, not to
52
+ * sentences.
53
+ */
54
+ const RECOVERY_CLI_PREFIX = `${identity.name} `;
55
+ /** The output formats the renderer selects between (`llm` = condensed Markdown). */
56
+ const OUTPUT_FORMATS = ["plain", "llm", "json"];
57
+ /** Default detail level when neither flag, config, nor spec pins one. */
58
+ const DEFAULT_DETAIL_LEVEL = "standard";
59
+ /**
60
+ * The wordmark `--help` opens with, as raw ASCII-art lines.
61
+ *
62
+ * PROJECTED from the distribution config, exactly like {@link BIN_NAME} and
63
+ * {@link PROGRAM_DESCRIPTION} — a wordmark spells a name, so it is identity, and
64
+ * `kernel/copy.test.ts` forbids any kernel string from naming the distribution.
65
+ * Authoring the art here would have branded a fork's front door with someone
66
+ * else's logo; declaring it as data means a fork ships its own or none.
67
+ *
68
+ * Lines rather than one string because the art contains a backtick and
69
+ * backslashes: a template literal would need every one of them escaped, which is
70
+ * how a character gets lost the next time someone edits it.
71
+ */
72
+ // Read through the DECLARED type, not the literal's inferred one. The
73
+ // distribution config is `satisfies RawConfig`, which narrows to exactly the
74
+ // keys that file writes — so `identity.logo` does not typecheck in a fork that
75
+ // omits the field, which is precisely the fork this feature promises a bare
76
+ // header. The assignment (not a cast) is what `satisfies` already guarantees,
77
+ // and it makes every OPTIONAL field readable here. The other constants keep
78
+ // reading `identity` directly, so their literal types are untouched.
79
+ const declared = identity;
80
+ const PROGRAM_LOGO = declared.logo ?? [];
81
+ export { BIN_NAME, DEFAULT_DETAIL_LEVEL, DETAIL_LEVELS, ISSUES_URL, MCP_SERVER_NAME, OUTPUT_FORMATS, PROGRAM_DESCRIPTION, PROGRAM_LOGO, PROJECT_CONFIG_FILENAME, RECOVERY_CLI_PREFIX, VERSION, };
82
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACxD,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAoB,MAAM,0BAA0B,CAAC;AAE3E,mDAAmD;AACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;AAE/B;;;;;;GAMG;AACH,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC;AAEtC,iEAAiE;AACjE,MAAM,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC;AAE1C,qEAAqE;AACrE,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;AAEtC,oDAAoD;AACpD,MAAM,OAAO,GAAW,GAAG,CAAC,OAAO,CAAC;AAEpC;;;;;;;GAOG;AACH,MAAM,uBAAuB,GAAG,GAAG,QAAQ,CAAC,IAAI,YAAY,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,mBAAmB,GAAG,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC;AAEhD,oFAAoF;AACpF,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;AASzD,yEAAyE;AACzE,MAAM,oBAAoB,GAAgB,UAAU,CAAC;AAErD;;;;;;;;;;;;GAYG;AACH,sEAAsE;AACtE,6EAA6E;AAC7E,+EAA+E;AAC/E,4EAA4E;AAC5E,8EAA8E;AAC9E,4EAA4E;AAC5E,qEAAqE;AACrE,MAAM,QAAQ,GAAc,QAAQ,CAAC;AAErC,MAAM,YAAY,GAAsB,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;AAG5D,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,EACnB,OAAO,GACR,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Public, types-only API surface for `@canonical/pragma-cli`.
3
+ *
4
+ * Per the tool-ts convention this barrel exports types only — no runtime
5
+ * values cross the package boundary. Consumers (and the surface emitter's
6
+ * golden) depend on the grammar and cross-cutting shapes, never on internal
7
+ * command builders, projectors, or infrastructure.
8
+ *
9
+ * @module
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * `runComplete` — the `__complete` resolver entry point. THE PROTOCOL:
3
+ *
4
+ * Invocation: `pragma __complete -- <word1> … <current>`
5
+ * - The bin fast-paths `argv[0] === "__complete"` literally, BEFORE
6
+ * global-flag parsing, Commander, config reads, or first-run — the resolver
7
+ * is storeless and config-free by construction. The first `--` after
8
+ * `__complete` is protocol framing and is stripped by the bin (tolerated
9
+ * absent). A later bare `--` belongs to the user's command line and is
10
+ * honoured as end-of-options by the state machine.
11
+ * - Words are the raw argv after the program name, up to and INCLUDING the
12
+ * word being completed — the LAST word is the partial (possibly empty).
13
+ * Words after the cursor are never sent. A leading word equal to the bin
14
+ * name is stripped (some shells include it).
15
+ * - Output: matching candidates, newline-delimited, on stdout. Zero
16
+ * candidates → zero bytes. Nothing else is ever written to stdout.
17
+ * - Exit code: ALWAYS 0. `runComplete` never throws — any internal error
18
+ * degrades to zero candidates so TAB never breaks a shell.
19
+ * - stderr is silent unless `PRAGMA_COMPLETE_DEBUG=1`, which logs the
20
+ * classified context, "nothing" reasons (unknown noun/verb, exhausted
21
+ * positionals, reserved completion kinds), dropped unsafe candidates, and
22
+ * timing.
23
+ * - Shell floors: bash ≥ 4 (mapfile), zsh ≥ 5, fish ≥ 3. bash splits words at
24
+ * `=` (COMP_WORDBREAKS), so the state machine treats `=` tokens around a
25
+ * value-taking flag as transparent.
26
+ *
27
+ * The static scripts (see `emitScripts`) answer structure without exec and
28
+ * invoke `__complete` only for `{kind:"names"}` value contexts; the resolver
29
+ * is nevertheless a complete standalone answer for EVERY context, so the
30
+ * whole grammar is testable through this one function.
31
+ */
32
+ import { emptyNameSource } from "./entitySource.js";
33
+ import { buildCompletionModel } from "./model.js";
34
+ import { parseWords } from "./parse.js";
35
+ import { completionDebug, resolveRequest } from "./resolve.js";
36
+ /** The default environment: no name sources (callers wire `indexCompletionEnv`). */
37
+ const DEFAULT_ENV = { names: emptyNameSource };
38
+ /**
39
+ * Resolve completions for the given words against the capability modules.
40
+ *
41
+ * Builds the model, parses the words, resolves the request — wrapped in a
42
+ * never-throw guard: on ANY internal error the answer is zero candidates and
43
+ * (under `PRAGMA_COMPLETE_DEBUG=1`) a stderr note, never an exception.
44
+ *
45
+ * @param words - The command words after the program name; the last is the
46
+ * partial being completed (possibly empty).
47
+ * @param modules - The capability modules to derive the model from.
48
+ * @param env - The completion environment; defaults to the empty entity seam.
49
+ * @returns The matching candidates, in offer order.
50
+ */
51
+ export async function runComplete(words, modules, env = DEFAULT_ENV) {
52
+ const started = performance.now();
53
+ try {
54
+ const model = buildCompletionModel(modules);
55
+ const request = parseWords(words, model);
56
+ const candidates = await resolveRequest(request, model, env);
57
+ completionDebug(`context=${request.context.kind} partial=${JSON.stringify(request.partial)} ` +
58
+ `candidates=${candidates.length} in ${(performance.now() - started).toFixed(1)}ms`);
59
+ return candidates;
60
+ }
61
+ catch (error) {
62
+ completionDebug(`error: ${error instanceof Error ? error.message : String(error)}`);
63
+ return [];
64
+ }
65
+ }
66
+ //# sourceMappingURL=complete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complete.js","sourceRoot":"","sources":["../../../../src/kernel/completion/complete.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG/D,oFAAoF;AACpF,MAAM,WAAW,GAAkB,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;AAE9D;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAwB,EACxB,OAAoC,EACpC,MAAqB,WAAW;IAEhC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC7D,eAAe,CACb,WAAW,OAAO,CAAC,OAAO,CAAC,IAAI,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG;YAC3E,cAAc,UAAU,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACrF,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAe,CACb,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACnE,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Emit the static shell-completion scripts from the grammar.
3
+ *
4
+ * Builds the completion model from the capability modules (the same
5
+ * derivation the `__complete` resolver uses — the tiers cannot disagree) and
6
+ * renders one script per supported shell. The static tier answers STRUCTURE
7
+ * with zero exec: nouns, verbs, flag names, enum values, mutation + global
8
+ * flags, native file completion. Only `{kind:"names"}` value contexts shell
9
+ * out to `<bin> __complete`.
10
+ *
11
+ * PR6 boundary (`setup completions`): this module exports pure CONTENT only
12
+ * — shell detection, install paths, mkdir/write effects, and hints all
13
+ * belong to setup. `binName` is parameterized so a fork's rename reaches the
14
+ * script body (`completionScriptPath` derives the file NAME from the same
15
+ * constant, and the two must agree or the shell never loads the file);
16
+ * `minChars` and `disabledFamilies` are read from `completion` config by setup.
17
+ *
18
+ * `minChars` (default {@link DEFAULT_MIN_CHARS}) is baked into the scripts to
19
+ * gate the `__complete` exec for NAME contexts only — structure and enum values
20
+ * stay inlined and complete on bare TAB with zero exec. `disabledFamilies`
21
+ * scrubs a noun's name sources to `none` (the config-level opt-out), so its
22
+ * name arms drop out of every script; the pack-grammar opt-out (`enabled:false`)
23
+ * lands earlier, in the model.
24
+ *
25
+ * @throws Emitting THROWS on any name outside the safety allowlist (the
26
+ * model build asserts, and every template re-asserts what it inlines) —
27
+ * `setup completions` fails loudly rather than installing a hostile token.
28
+ */
29
+ import { BIN_NAME } from "../../constants.js";
30
+ import { assertSafeToken, buildCompletionModel } from "./model.js";
31
+ import { bashScript } from "./templates/bash.js";
32
+ import { fishScript } from "./templates/fish.js";
33
+ import { zshScript } from "./templates/zsh.js";
34
+ /** The default `minChars` gate baked into the generated scripts. */
35
+ export const DEFAULT_MIN_CHARS = 2;
36
+ /** Replace a name source with `none` (the family-level opt-out). */
37
+ function scrubSource(source) {
38
+ return source.kind === "names" ? { kind: "none" } : source;
39
+ }
40
+ /** Scrub every name source of a verb entry to `none`. */
41
+ function scrubVerb(verb) {
42
+ return {
43
+ ...verb,
44
+ flags: verb.flags.map((flag) => ({
45
+ ...flag,
46
+ source: scrubSource(flag.source),
47
+ })),
48
+ positionals: verb.positionals.map((positional) => ({
49
+ ...positional,
50
+ source: scrubSource(positional.source),
51
+ })),
52
+ };
53
+ }
54
+ /**
55
+ * Drop name completion for the disabled noun families (config opt-out): every
56
+ * name source under a disabled noun becomes `none`, so no template emits its
57
+ * exec. A pure structural transform on the model — the templates stay unaware.
58
+ */
59
+ function applyDisabledFamilies(model, disabled) {
60
+ if (disabled.size === 0)
61
+ return model;
62
+ return {
63
+ ...model,
64
+ nouns: model.nouns.map((noun) => disabled.has(noun.noun)
65
+ ? {
66
+ ...noun,
67
+ ...(noun.selfVerb ? { selfVerb: scrubVerb(noun.selfVerb) } : {}),
68
+ verbs: noun.verbs.map(scrubVerb),
69
+ }
70
+ : noun),
71
+ };
72
+ }
73
+ /**
74
+ * Emit the completion scripts for every supported shell.
75
+ *
76
+ * @param modules - The capability modules to derive completions from.
77
+ * @param options - Bin name, `minChars` gate, and disabled name families.
78
+ * @returns A map of shell to its completion script.
79
+ * @throws Error when any inlinable token fails the safety allowlist.
80
+ */
81
+ export function emitScripts(modules, options = {}) {
82
+ const binName = options.binName ?? BIN_NAME;
83
+ assertSafeToken(binName, "bin name");
84
+ const minChars = options.minChars ?? DEFAULT_MIN_CHARS;
85
+ const model = applyDisabledFamilies(buildCompletionModel(modules), new Set(options.disabledFamilies ?? []));
86
+ return {
87
+ bash: bashScript(model, binName, minChars),
88
+ zsh: zshScript(model, binName, minChars),
89
+ fish: fishScript(model, binName, minChars),
90
+ };
91
+ }
92
+ //# sourceMappingURL=emitScripts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitScripts.js","sourceRoot":"","sources":["../../../../src/kernel/completion/emitScripts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAQ/C,oEAAoE;AACpE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAYnC,oEAAoE;AACpE,SAAS,WAAW,CAAC,MAAwB;IAC3C,OAAO,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7D,CAAC;AAED,yDAAyD;AACzD,SAAS,SAAS,CAAC,IAAe;IAChC,OAAO;QACL,GAAG,IAAI;QACP,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC/B,GAAG,IAAI;YACP,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;SACjC,CAAC,CAAC;QACH,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACjD,GAAG,UAAU;YACb,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;SACvC,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAC5B,KAAsB,EACtB,QAA6B;IAE7B,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO;QACL,GAAG,KAAK;QACR,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC9B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACrB,CAAC,CAAC;gBACE,GAAG,IAAI;gBACP,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;aACjC;YACH,CAAC,CAAC,IAAI,CACT;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CACzB,OAAoC,EACpC,UAA8B,EAAE;IAEhC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC;IAC5C,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,iBAAiB,CAAC;IACvD,MAAM,KAAK,GAAG,qBAAqB,CACjC,oBAAoB,CAAC,OAAO,CAAC,EAC7B,IAAI,GAAG,CAAC,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC,CACxC,CAAC;IACF,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC;QAC1C,GAAG,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC;QACxC,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC;KAC3C,CAAC;AACJ,CAAC"}