@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
@@ -2,27 +2,26 @@
2
2
  * Resolve a {@link PackageRef} to its pinned revision and RDF source contents.
3
3
  *
4
4
  * `file` reads the local path in place; `npm` resolves the installed package
5
- * from the project's `node_modules`; `git` clones/fetches into the ref cache
6
- * (or, under `--frozen`, checks out exactly the lock's pinned commit and never
7
- * advances). Each package contributes its `definitions/**` and `data/**` TTL
8
- * files, labelled by a stable `pkg/relative-path` so the pack's content hash is
9
- * machine-independent. Reached only from the `sources update` Task body.
5
+ * from the project's `node_modules`; `git` clones/fetches into the ref cache.
6
+ * A ref that is already a commit SHA resolves to exactly that commit, which is
7
+ * how a project pins a revision. Each package contributes its `definitions/**`
8
+ * and `data/**` TTL files plus any `stories/*.json` it ships, labelled by a
9
+ * stable `pkg/relative-path` so the pack's content hash is machine-independent.
10
+ * Reached only from the `sources update` Task body.
10
11
  */
11
12
 
12
13
  import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
13
14
  import { createRequire } from "node:module";
14
15
  import { dirname, join, relative } from "node:path";
15
- import { RECOVERY_CLI_PREFIX } from "../../../constants.js";
16
- import { PragmaError } from "../../error/PragmaError.js";
17
- import { cliRecovery } from "../../error/recovery.js";
16
+ import { PragmaError } from "../../error/index.js";
18
17
  import { refsCacheDir } from "../paths.js";
19
- import { checkoutCommit, cloneRef, fetchRef, headCommit } from "./gitOps.js";
18
+ import { cloneRef, fetchRef, headCommit } from "./gitOps.js";
20
19
  import { type PackageRef, redactUrl } from "./parseRef.js";
21
20
 
22
21
  /** A resolved package: its pinned revision and labelled RDF sources. */
23
22
  export interface ResolvedPackage {
24
23
  readonly name: string;
25
- /** The config `packages` source ref, verbatim. */
24
+ /** The config `packs` source ref, verbatim. */
26
25
  readonly source: string;
27
26
  /** The resolved commit / version / absolute path. */
28
27
  readonly resolved: string;
@@ -34,19 +33,26 @@ export interface ResolvedPackage {
34
33
  readonly root: string;
35
34
  /** The labelled RDF sources (path label + content). */
36
35
  readonly sources: { readonly path: string; readonly content: string }[];
36
+ /**
37
+ * The package's `stories/*.json` files, as RAW TEXT — never parsed here. The
38
+ * pack carries the package's bytes verbatim so every interpretation failure
39
+ * (malformed JSON and schema-invalid JSON alike) is caught behind one guard
40
+ * at dispatch instead of two half-guards at two layers.
41
+ */
42
+ readonly stories: { readonly path: string; readonly content: string }[];
37
43
  }
38
44
 
39
- /** Options for a resolution: whether to honour a pinned commit (`--frozen`). */
45
+ /** Options for a resolution — the project directory an `npm` ref resolves from. */
40
46
  export interface ResolveOptions {
41
47
  readonly cwd: string;
42
- readonly frozen: boolean;
43
- /** The lock's pinned revision for this package (used under `--frozen`). */
44
- readonly pinned?: string;
45
48
  }
46
49
 
47
50
  /** The package subdirectories scanned for `.ttl` sources. */
48
51
  const TTL_DIRS = ["definitions", "data"];
49
52
 
53
+ /** The package subdirectory whose immediate `*.json` children are read stories. */
54
+ const STORIES_DIR = "stories";
55
+
50
56
  /** Sanitize a ref for use as a cache path segment. */
51
57
  const sanitize = (value: string): string => value.replace(/[/\\:*?"<>|]/g, "_");
52
58
 
@@ -69,7 +75,7 @@ function errorDetail(error: unknown): string {
69
75
  }
70
76
 
71
77
  /** Recursively collect `*.ttl` files under a directory (a manual walk — the
72
- * compiled binary's node:fs globSync mishandles `**`, so we avoid it). */
78
+ * node:fs globSync has mishandled `**` under a shipped runtime, so we avoid it). */
73
79
  function walkTtl(
74
80
  dir: string,
75
81
  base: string,
@@ -89,7 +95,7 @@ function walkTtl(
89
95
  // symlinked `.ttl` was silently skipped (L6). Follow the link to recover a
90
96
  // symlinked FILE, but NEVER recurse into a symlinked DIRECTORY: a symlink
91
97
  // cycle (a link to an ancestor dir) would recurse without bound — a
92
- // stack-overflow RangeError surfacing as an INTERNAL "please report" — and a
98
+ // stack-overflow RangeError surfacing as an INTERNAL "report" — and a
93
99
  // linked directory could pull `.ttl` from OUTSIDE the package root. Linking
94
100
  // individual source files (all L6 needs) stays supported; a dangling link is
95
101
  // skipped, not fatal.
@@ -127,6 +133,47 @@ function readTtlSources(
127
133
  return sources;
128
134
  }
129
135
 
136
+ /**
137
+ * Read a package's `stories/*.json` as raw text, with stable labels.
138
+ *
139
+ * IMMEDIATE children only — the same discipline `skills/` uses, and recursion
140
+ * buys nothing. Hidden entries are skipped and a symlinked FILE is followed but
141
+ * a symlinked DIRECTORY is never recursed into, exactly as {@link walkTtl}
142
+ * argues. Sorted so the pack's content hash does not depend on readdir order.
143
+ *
144
+ * @param rootDir - The package root.
145
+ * @param label - The package name, used as the label prefix.
146
+ * @returns The labelled story files (`pkg/stories/name.json` + raw content).
147
+ * @note Impure — reads from disk.
148
+ */
149
+ function readStorySources(
150
+ rootDir: string,
151
+ label: string,
152
+ ): { path: string; content: string }[] {
153
+ const dir = join(rootDir, STORIES_DIR);
154
+ if (!existsSync(dir)) return [];
155
+ const stories: { path: string; content: string }[] = [];
156
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
157
+ if (entry.name.startsWith(".") || !entry.name.endsWith(".json")) continue;
158
+ const full = join(dir, entry.name);
159
+ let isFile = entry.isFile();
160
+ if (entry.isSymbolicLink()) {
161
+ try {
162
+ isFile = statSync(full).isFile();
163
+ } catch {
164
+ continue;
165
+ }
166
+ }
167
+ if (!isFile) continue;
168
+ stories.push({
169
+ path: `${label}/${STORIES_DIR}/${entry.name}`,
170
+ content: readFileSync(full, "utf-8"),
171
+ });
172
+ }
173
+ stories.sort((a, b) => (a.path < b.path ? -1 : a.path > b.path ? 1 : 0));
174
+ return stories;
175
+ }
176
+
130
177
  /**
131
178
  * A Turtle/SPARQL prefix prologue declaration: `@prefix ex: <iri> .` or the
132
179
  * keyword-form `PREFIX ex: <iri>`. Both are legal in Turtle 1.1; the keyword is
@@ -254,31 +301,15 @@ export function resolvePackageJson(
254
301
  * Resolve a package reference to its revision and RDF sources.
255
302
  *
256
303
  * @param ref - The parsed package reference.
257
- * @param options - The cwd, frozen flag, and any pinned revision.
304
+ * @param options - The project directory an `npm` ref resolves from.
258
305
  * @returns The resolved package.
259
306
  * @throws PragmaError on a missing file path or unresolvable npm package.
260
- * @throws PragmaError under `--frozen` when the package has no lock entry.
261
307
  * @note Impure — may clone/fetch git, reads TTL from disk.
262
308
  */
263
309
  export async function resolvePackage(
264
310
  ref: PackageRef,
265
311
  options: ResolveOptions,
266
312
  ): Promise<ResolvedPackage> {
267
- // `--frozen` means "reproduce the locked state exactly". A configured package
268
- // with no lock entry has nothing to reproduce, so refuse rather than silently
269
- // resolving it fresh (which would advance the very state the lock pins).
270
- if (options.frozen && options.pinned === undefined) {
271
- throw PragmaError.configError(
272
- `Cannot resolve "${ref.pkg}" under --frozen: it has no entry in the lock.`,
273
- {
274
- recovery: cliRecovery(
275
- `${RECOVERY_CLI_PREFIX}sources update`,
276
- "Update the lock without --frozen, then commit it.",
277
- ),
278
- },
279
- );
280
- }
281
-
282
313
  switch (ref.kind) {
283
314
  case "file": {
284
315
  if (!existsSync(ref.path)) {
@@ -292,6 +323,7 @@ export async function resolvePackage(
292
323
  resolved: ref.path,
293
324
  root: ref.path,
294
325
  sources: readTtlSources(ref.path, ref.pkg),
326
+ stories: readStorySources(ref.path, ref.pkg),
295
327
  };
296
328
  }
297
329
 
@@ -311,7 +343,7 @@ export async function resolvePackage(
311
343
  "0.0.0";
312
344
  } catch (error) {
313
345
  // A malformed `package.json` for an otherwise-installed package: name it
314
- // as a data error, not an INTERNAL_ERROR "please report this issue".
346
+ // as a data error, not an INTERNAL_ERROR "report this issue".
315
347
  throw PragmaError.configError(
316
348
  `Package "${ref.pkg}" has an invalid package.json (${pkgJsonPath}): ${errorDetail(error)}`,
317
349
  );
@@ -322,22 +354,15 @@ export async function resolvePackage(
322
354
  resolved: version,
323
355
  root: dir,
324
356
  sources: readTtlSources(dir, ref.pkg),
357
+ stories: readStorySources(dir, ref.pkg),
325
358
  };
326
359
  }
327
360
 
328
361
  case "git": {
329
- const useCommit = options.frozen && options.pinned;
330
- const dir = join(
331
- refsCacheDir(),
332
- sanitize(ref.pkg),
333
- sanitize(useCommit ? (options.pinned as string) : ref.ref),
334
- );
362
+ const dir = join(refsCacheDir(), sanitize(ref.pkg), sanitize(ref.ref));
335
363
  let resolved: string;
336
364
  try {
337
- if (useCommit) {
338
- checkoutCommit(ref.url, options.pinned as string, dir);
339
- resolved = options.pinned as string;
340
- } else if (existsSync(dir)) {
365
+ if (existsSync(dir)) {
341
366
  resolved = fetchRef(ref.url, ref.ref, dir);
342
367
  } else {
343
368
  cloneRef(ref.url, ref.ref, dir);
@@ -345,28 +370,18 @@ export async function resolvePackage(
345
370
  }
346
371
  } catch (error) {
347
372
  // A git clone/fetch/checkout failed — an unreachable remote, a moved or
348
- // deleted ref, an auth/credential problem, or (under --frozen) a pinned
349
- // commit that is gone. Name the package + ref with git's own reason so
350
- // it reads as a fixable data/reproducibility error, not INTERNAL_ERROR.
351
- throw useCommit
352
- ? PragmaError.configError(
353
- `Cannot reproduce "${ref.pkg}" under --frozen: commit ${options.pinned} could not be checked out from ${redactUrl(ref.url)}. ${errorDetail(error)}`,
354
- {
355
- recovery: {
356
- message:
357
- "The pinned commit may have been force-pushed away or the remote is unreachable. Restore access to it, or re-run `pragma sources update` without --frozen to re-pin.",
358
- },
359
- },
360
- )
361
- : PragmaError.configError(
362
- `Cannot resolve "${ref.pkg}" from ${redactUrl(ref.url)}#${ref.ref}: ${errorDetail(error)}`,
363
- {
364
- recovery: {
365
- message:
366
- "Check the git URL and ref, your network, and your git credentials, then re-run the update.",
367
- },
368
- },
369
- );
373
+ // deleted ref, an auth/credential problem, or a pinned SHA that has been
374
+ // force-pushed away. Name the package + ref with git's own reason so it
375
+ // reads as a fixable data error, not INTERNAL_ERROR.
376
+ throw PragmaError.configError(
377
+ `Cannot resolve "${ref.pkg}" from ${redactUrl(ref.url)}#${ref.ref}: ${errorDetail(error)}`,
378
+ {
379
+ recovery: {
380
+ message:
381
+ "Check the git URL and ref, your network, and your git credentials, then re-run the update.",
382
+ },
383
+ },
384
+ );
370
385
  }
371
386
  return {
372
387
  name: ref.pkg,
@@ -374,6 +389,7 @@ export async function resolvePackage(
374
389
  resolved,
375
390
  root: dir,
376
391
  sources: readTtlSources(dir, ref.pkg),
392
+ stories: readStorySources(dir, ref.pkg),
377
393
  };
378
394
  }
379
395
  }
@@ -1,11 +1,10 @@
1
1
  import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
2
2
  import { tmpdir } from "node:os";
3
- import { join } from "node:path";
3
+ import { dirname, join } from "node:path";
4
4
  import { afterEach, beforeEach, describe, expect, it } from "vitest";
5
5
  import type { ConfigLayers } from "../config/types.js";
6
6
  import { loadStoreSession } from "./loadSession.js";
7
- import { writeLock } from "./lock.js";
8
- import { packDir } from "./paths.js";
7
+ import { activePackPath, packDir } from "./paths.js";
9
8
  import { resolveSources } from "./resolveSources.js";
10
9
 
11
10
  /**
@@ -21,24 +20,21 @@ const tmp = (): string => {
21
20
  return dir;
22
21
  };
23
22
 
24
- /** Config layers whose only relevant knob is the `packages` origin. */
25
- function layersWith(packagesOrigin: "default" | "project"): ConfigLayers {
23
+ /** Config layers whose only relevant knob is the `packs` origin. */
24
+ function layersWith(packsOrigin: "default" | "project"): ConfigLayers {
26
25
  return {
27
26
  config: {
28
27
  channel: "normal",
29
- packages:
30
- packagesOrigin === "project"
31
- ? [{ name: "x", source: "file:///x" }]
32
- : [],
28
+ packs:
29
+ packsOrigin === "project" ? [{ name: "x", source: "file:///x" }] : [],
33
30
  },
34
31
  origins: {
35
32
  tier: "default",
36
33
  channel: "default",
37
34
  detail: "default",
38
- packages: packagesOrigin,
35
+ packs: packsOrigin,
39
36
  stories: "default",
40
37
  prefixes: "default",
41
- prompts: "default",
42
38
  },
43
39
  global: { path: "/nonexistent", exists: false },
44
40
  project: { exists: false },
@@ -67,10 +63,18 @@ function writeCompletePack(hash: string): string {
67
63
  writeFileSync(join(dir, "data.nq"), "<urn:s> <urn:p> <urn:o> .\n");
68
64
  writeFileSync(join(dir, "schema.json"), "{}");
69
65
  writeFileSync(join(dir, "index.json"), "{}");
66
+ writeFileSync(join(dir, "stories.json"), "[]");
70
67
  writeManifest(dir, hash);
71
68
  return dir;
72
69
  }
73
70
 
71
+ /** Plant the active-pack pointer a `sources update` would have written. */
72
+ function writePointer(cwd: string, content: string): void {
73
+ const path = activePackPath(cwd);
74
+ mkdirSync(dirname(path), { recursive: true });
75
+ writeFileSync(path, content);
76
+ }
77
+
74
78
  beforeEach(() => {
75
79
  roots = [];
76
80
  });
@@ -79,11 +83,11 @@ afterEach(() => {
79
83
  });
80
84
 
81
85
  describe("resolveSources decision table", () => {
82
- it("lock present + pack cached → load the locked pack", () => {
86
+ it("pointer present + pack cached → load the built pack", () => {
83
87
  const cwd = tmp();
84
88
  const hash = "a".repeat(64);
85
89
  const dir = writeCompletePack(hash);
86
- writeLock(cwd, { version: 1, contentHash: hash, packs: [] });
90
+ writePointer(cwd, hash);
87
91
 
88
92
  expect(resolveSources(layersWith("default"), cwd)).toEqual({
89
93
  kind: "pack",
@@ -92,46 +96,81 @@ describe("resolveSources decision table", () => {
92
96
  });
93
97
  });
94
98
 
95
- it("lock present + pack evicted → STORE_UNAVAILABLE", () => {
99
+ it("pointer present + pack evicted → STORE_UNAVAILABLE", () => {
96
100
  const cwd = tmp();
97
- // A lock whose content-addressed pack is absent from the cache.
98
- writeLock(cwd, { version: 1, contentHash: "b".repeat(64), packs: [] });
101
+ // A pointer whose content-addressed pack is absent from the cache.
102
+ writePointer(cwd, "b".repeat(64));
99
103
 
100
104
  expect(resolveSources(layersWith("default"), cwd)).toEqual({
101
105
  kind: "unavailable",
102
- reason: "the locked pack is missing from the cache",
106
+ reason: "the built pack is missing from the cache",
103
107
  });
104
108
  });
105
109
 
106
- it("lock present + pack with a torn schema/index → STORE_UNAVAILABLE", () => {
110
+ it("pointer present + pack with a torn schema/index → STORE_UNAVAILABLE", () => {
107
111
  const cwd = tmp();
108
112
  const hash = "c".repeat(64);
109
113
  // manifest + non-empty dump present, but the extracted schema/index are
110
114
  // missing (a torn or partially-evicted pack). This used to slip through
111
115
  // `packIsComplete` and then crash at read time as an INTERNAL error; it must
112
- // now be treated as not-built so the boot surfaces STORE_UNAVAILABLE.
116
+ // now be treated as not-built so the boot surfaces STORE_UNAVAILABLE — and
117
+ // say INCOMPLETE, not "missing", because the directory is right there. This
118
+ // is also the shape every pack built before `stories.json` now takes.
113
119
  const dir = packDir(hash);
114
120
  mkdirSync(dir, { recursive: true });
115
121
  writeFileSync(join(dir, "data.nq"), "<urn:s> <urn:p> <urn:o> .\n");
116
122
  writeManifest(dir, hash);
117
- writeLock(cwd, { version: 1, contentHash: hash, packs: [] });
123
+ writePointer(cwd, hash);
124
+
125
+ expect(resolveSources(layersWith("default"), cwd)).toEqual({
126
+ kind: "unavailable",
127
+ reason: "the built pack is incomplete — an older or torn build",
128
+ });
129
+ });
130
+
131
+ it("pointer present + a pack whose stories.json is not an array → STORE_UNAVAILABLE", () => {
132
+ const cwd = tmp();
133
+ const hash = "d".repeat(64);
134
+ const dir = writeCompletePack(hash);
135
+ // Every file present and non-empty, but `stories.json` holds an object.
136
+ // Gated on size alone this passed, so `buildPack` REUSED the directory and
137
+ // every package-declared noun disappeared while `sources update` reported
138
+ // success. It is a torn build like any other, and says so.
139
+ writeFileSync(join(dir, "stories.json"), '{"noun":"recipe"}');
140
+ writePointer(cwd, hash);
118
141
 
119
142
  expect(resolveSources(layersWith("default"), cwd)).toEqual({
120
143
  kind: "unavailable",
121
- reason: "the locked pack is missing from the cache",
144
+ reason: "the built pack is incomplete — an older or torn build",
145
+ });
146
+ });
147
+
148
+ it("a malformed pointer is treated as absent, not as a pack name", () => {
149
+ // A truncated/garbage pointer must never name a cache directory. With
150
+ // default packs it falls through to the embedded row, exactly as no
151
+ // pointer at all would.
152
+ const cwd = tmp();
153
+ writePointer(cwd, "not-a-content-hash\n");
154
+
155
+ expect(resolveSources(layersWith("default"), cwd)).toEqual({
156
+ kind: "embedded",
157
+ });
158
+ expect(resolveSources(layersWith("project"), cwd)).toEqual({
159
+ kind: "unavailable",
160
+ reason: "packs are configured but the store has not been built",
122
161
  });
123
162
  });
124
163
 
125
- it("no lock + default packages → embedded fallback", () => {
164
+ it("no pointer + default packs → embedded fallback", () => {
126
165
  expect(resolveSources(layersWith("default"), tmp())).toEqual({
127
166
  kind: "embedded",
128
167
  });
129
168
  });
130
169
 
131
- it("no lock + packages configured → STORE_UNAVAILABLE", () => {
170
+ it("no pointer + packs configured → STORE_UNAVAILABLE", () => {
132
171
  expect(resolveSources(layersWith("project"), tmp())).toEqual({
133
172
  kind: "unavailable",
134
- reason: "packages are configured but the store has not been built",
173
+ reason: "packs are configured but the store has not been built",
135
174
  });
136
175
  });
137
176
  });
@@ -1,26 +1,33 @@
1
1
  /**
2
2
  * The store-boot decision table — storeless, and the single place the boot
3
- * strategy is decided.
3
+ * strategy is decided. No other module re-derives it: `sources status`, `info`,
4
+ * `doctor`, and the native MCP prompt/resource surfaces all switch on what this
5
+ * returns (`readPackIndex` takes the decision rather than resolving a pack of
6
+ * its own). The one module that cannot is the shell-completion fast path, which
7
+ * is denied the config evaluator and so implements the pointer half only — it
8
+ * says so, and it answers with completion candidates, never content.
4
9
  *
5
- * Boot never touches the network. From the lock and the resolved config:
10
+ * Boot never touches the network. From the project's active-pack pointer (the
11
+ * content hash `sources update` last built here) and the resolved config:
6
12
  *
7
- * | lock present | pack cached | packages origin | → decision |
8
- * |--------------|-------------|-----------------|-----------------------|
9
- * | yes | yes | — | load the locked pack |
10
- * | yes | no | — | STORE_UNAVAILABLE |
11
- * | no | — | default | embedded fallback |
12
- * | no | — | configured | STORE_UNAVAILABLE |
13
+ * | pointer | pack complete | packs origin | → decision |
14
+ * |---------|---------------|--------------|-----------------------|
15
+ * | yes | yes | — | load the built pack |
16
+ * | yes | no | — | STORE_UNAVAILABLE |
17
+ * | no | — | default | embedded fallback |
18
+ * | no | — | configured | STORE_UNAVAILABLE |
13
19
  *
14
- * A configured-but-unbuilt store (or a lock whose pack the cache lost)
20
+ * A configured-but-unbuilt store (or a pointer whose pack the cache lost)
15
21
  * surfaces STORE_UNAVAILABLE with a single recovery: `pragma sources update`.
16
- * "packages origin default" means the user has not pinned their own packages —
17
- * a fresh install — so the embedded fallback answers reads offline.
22
+ * "packs origin default" means the user has not pinned their own packs —
23
+ * a fresh install — so the embedded pack answers reads offline. A project that
24
+ * DID configure its own packs is never quietly served the distribution's graph.
18
25
  */
19
26
 
27
+ import { existsSync } from "node:fs";
20
28
  import type { ConfigLayers } from "../config/types.js";
21
29
  import { packIsComplete } from "./graphpack/manifest.js";
22
- import { readLock } from "./lock.js";
23
- import { packDir } from "./paths.js";
30
+ import { packDir, readActivePack } from "./paths.js";
24
31
 
25
32
  /** The resolved boot strategy. */
26
33
  export type SourcesDecision =
@@ -35,32 +42,36 @@ export type SourcesDecision =
35
42
  /**
36
43
  * Decide how (or whether) to boot the store — without any network or store I/O.
37
44
  *
38
- * @param layers - The resolved config layers (for the `packages` origin).
39
- * @param cwd - The project directory (for the lock).
45
+ * @param layers - The resolved config layers (for the `packs` origin).
46
+ * @param cwd - The project directory (for the active-pack pointer).
40
47
  * @returns The boot decision.
41
- * @note Impure — reads the lock and probes the pack cache.
48
+ * @note Impure — reads the pointer and probes the pack cache.
42
49
  */
43
50
  export function resolveSources(
44
51
  layers: ConfigLayers,
45
52
  cwd: string,
46
53
  ): SourcesDecision {
47
- const lock = readLock(cwd);
48
- if (lock) {
49
- const dir = packDir(lock.contentHash);
50
- if (packIsComplete(dir)) {
51
- return { kind: "pack", dir, contentHash: lock.contentHash };
52
- }
54
+ const contentHash = readActivePack(cwd);
55
+ if (contentHash !== undefined) {
56
+ const dir = packDir(contentHash);
57
+ if (packIsComplete(dir)) return { kind: "pack", dir, contentHash };
58
+ // Two different things, and the recovery text is the only thing a user has
59
+ // to go on: the cache evicted the pack, or the directory is there but does
60
+ // not hold a whole pack — the state EVERY install upgraded past the
61
+ // four-file pack lands in, where "missing" is plainly contradicted by `ls`.
53
62
  return {
54
63
  kind: "unavailable",
55
- reason: "the locked pack is missing from the cache",
64
+ reason: existsSync(dir)
65
+ ? "the built pack is incomplete — an older or torn build"
66
+ : "the built pack is missing from the cache",
56
67
  };
57
68
  }
58
69
 
59
- if (layers.origins.packages === "default") {
70
+ if (layers.origins.packs === "default") {
60
71
  return { kind: "embedded" };
61
72
  }
62
73
  return {
63
74
  kind: "unavailable",
64
- reason: "packages are configured but the store has not been built",
75
+ reason: "packs are configured but the store has not been built",
65
76
  };
66
77
  }
@@ -12,15 +12,13 @@
12
12
  * and one silently-empty list. Centralizing the construction here is what keeps
13
13
  * those surfaces from drifting apart.
14
14
  *
15
- * It reaches only {@link resolveSources} (a lock + config probe — no store, no
16
- * ke), so a caller on the storeless fast path can pre-check availability without
17
- * ever booting the store.
15
+ * It reaches only {@link resolveSources} (a pointer + config probe — no store,
16
+ * no ke), so a caller on the storeless fast path can pre-check availability
17
+ * without ever booting the store.
18
18
  */
19
19
 
20
- import { RECOVERY_CLI_PREFIX } from "../../constants.js";
21
20
  import type { ConfigLayers } from "../config/types.js";
22
- import { PragmaError } from "../error/PragmaError.js";
23
- import { cliRecovery } from "../error/recovery.js";
21
+ import { cliRecovery, PragmaError } from "../error/index.js";
24
22
  import { resolveSources } from "./resolveSources.js";
25
23
 
26
24
  /**
@@ -28,14 +26,15 @@ import { resolveSources } from "./resolveSources.js";
28
26
  * single `pragma sources update` recovery that also names the `sources_update`
29
27
  * tool an agent calls (then retries — PR9's C1 cold-store retry succeeds).
30
28
  *
31
- * @param reason - The boot decision's reason (e.g. "the locked pack is missing").
29
+ * @param reason - The boot decision's reason (e.g. "the built pack is missing
30
+ * from the cache").
32
31
  * @returns The structured STORE_UNAVAILABLE error.
33
32
  */
34
33
  export function storeUnavailable(reason: string): PragmaError {
35
34
  return PragmaError.storeUnavailable(`${reason}.`, {
36
35
  recovery: cliRecovery(
37
- `${RECOVERY_CLI_PREFIX}sources update`,
38
- "Build the local store from the configured packages.",
36
+ "sources update",
37
+ "Build the local store from the configured packs.",
39
38
  { tool: "sources_update" },
40
39
  ),
41
40
  });
@@ -43,7 +42,8 @@ export function storeUnavailable(reason: string): PragmaError {
43
42
 
44
43
  /**
45
44
  * The STORE_UNAVAILABLE error to surface when the store cannot boot from the
46
- * current config/lock, or `undefined` when a store read may proceed. STORELESS —
45
+ * current config and active-pack pointer, or `undefined` when a store read may
46
+ * proceed. STORELESS —
47
47
  * probes the decision table only, never constructs the store.
48
48
  *
49
49
  * @param layers - The resolved config layers.
@@ -58,7 +58,7 @@ describe("storeless guarantee — the store never boots for storeless verbs (PRO
58
58
  expect(runtime.store.booted).toBe(false);
59
59
  });
60
60
 
61
- it("sources status does not construct the store (reports a cold store)", async () => {
61
+ it("sources status does not construct the store", async () => {
62
62
  const runtime = bootRuntime(FLAGS, freshCwd());
63
63
  const outcome = await executeVerb(sourcesStatusVerb, {}, NO_MUT, runtime);
64
64
  expect(outcome.exitCode).toBe(0);
@@ -21,10 +21,14 @@ export interface GlobalFlags {
21
21
  readonly llm: boolean;
22
22
  /** True when `llm` was inferred from a non-interactive stdout, not requested. */
23
23
  readonly autoLlm?: boolean;
24
- /** Selected output format; `--format text` is normalised to `plain`. */
24
+ /** Selected output format (`plain`, `llm`, or `json` — the full set). */
25
25
  readonly format: OutputFormat;
26
26
  /** Diagnostic output to stderr. */
27
27
  readonly verbose: boolean;
28
+ /** True when `--no-headers` suppressed the plain-table header row. */
29
+ readonly noHeaders?: boolean;
30
+ /** True when `--quiet` suppresses success/progress output (errors keep printing). */
31
+ readonly quiet?: boolean;
28
32
  /** Explicit progressive-disclosure level from `--detail`, if any. */
29
33
  readonly detail?: DetailLevel;
30
34
  }
@@ -94,6 +98,8 @@ export interface QueryFacade {
94
98
  export interface MutationRuntime {
95
99
  /** True for a plan-only preview; false for a real execution. */
96
100
  readonly preview: boolean;
101
+ /** True when this invocation reverses a previous run (`--undo`). */
102
+ readonly undo?: boolean;
97
103
  }
98
104
 
99
105
  /**
@@ -207,4 +213,12 @@ export interface PragmaRuntime {
207
213
  * returning the Task, and the projector reads it back on the real-run branch.
208
214
  */
209
215
  exec?: RunnerOptions;
216
+ /**
217
+ * Structured plan data a mutating verb stashes for the `--dry-run` branch to
218
+ * render through its `output.formatPlan` seam, and to carry verbatim in the
219
+ * JSON dry-run envelope. NOT readonly, and set the same way `exec` is: the
220
+ * verb writes it before returning its Task. Unset on every verb that has no
221
+ * plan of its own, which is what keeps the raw-effect render the default.
222
+ */
223
+ planData?: unknown;
210
224
  }