@warpgogol/forge 1.2.2 → 2.1.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 (698) hide show
  1. package/AGENTS.md +1 -0
  2. package/README.md +33 -19
  3. package/README.uk.md +33 -19
  4. package/package.json +1 -1
  5. package/profiles/astro-typescript-turborepo.yaml +147 -0
  6. package/profiles/forge-shell.yaml +120 -1
  7. package/profiles/godot-csharp.yaml +280 -6
  8. package/profiles/phaser-turborepo.yaml +134 -0
  9. package/skills/_shared/fo-pipeline-conventions.md +55 -0
  10. package/skills/fo/fo-doc-audit/SKILL.md +2 -2
  11. package/skills/fo/fo-idea-i-just-want-to-see-the-plan/SKILL.md +2 -0
  12. package/skills/fo/fo-idea-i-just-want-to-see-the-result/SKILL.md +7 -3
  13. package/skills/fo/fo-idea-implement/SKILL.md +50 -46
  14. package/skills/fo/fo-session-retro/SKILL.md +2 -2
  15. package/dist/bin/cli.d.ts +0 -3
  16. package/dist/bin/cli.d.ts.map +0 -1
  17. package/dist/bin/cli.js +0 -292
  18. package/dist/bin/cli.js.map +0 -1
  19. package/dist/os/adr/adr.module.d.ts +0 -3
  20. package/dist/os/adr/adr.module.d.ts.map +0 -1
  21. package/dist/os/adr/adr.module.js +0 -145
  22. package/dist/os/adr/adr.module.js.map +0 -1
  23. package/dist/os/adr/frontmatter-io.d.ts +0 -12
  24. package/dist/os/adr/frontmatter-io.d.ts.map +0 -1
  25. package/dist/os/adr/frontmatter-io.js +0 -67
  26. package/dist/os/adr/frontmatter-io.js.map +0 -1
  27. package/dist/os/adr/handlers/archive.d.ts +0 -24
  28. package/dist/os/adr/handlers/archive.d.ts.map +0 -1
  29. package/dist/os/adr/handlers/archive.js +0 -194
  30. package/dist/os/adr/handlers/archive.js.map +0 -1
  31. package/dist/os/adr/handlers/implement-stamp.d.ts +0 -4
  32. package/dist/os/adr/handlers/implement-stamp.d.ts.map +0 -1
  33. package/dist/os/adr/handlers/implement-stamp.js +0 -258
  34. package/dist/os/adr/handlers/implement-stamp.js.map +0 -1
  35. package/dist/os/adr/handlers/list-create.d.ts +0 -5
  36. package/dist/os/adr/handlers/list-create.d.ts.map +0 -1
  37. package/dist/os/adr/handlers/list-create.js +0 -165
  38. package/dist/os/adr/handlers/list-create.js.map +0 -1
  39. package/dist/os/adr/handlers/validate.d.ts +0 -4
  40. package/dist/os/adr/handlers/validate.d.ts.map +0 -1
  41. package/dist/os/adr/handlers/validate.js +0 -265
  42. package/dist/os/adr/handlers/validate.js.map +0 -1
  43. package/dist/os/adr/index.d.ts +0 -8
  44. package/dist/os/adr/index.d.ts.map +0 -1
  45. package/dist/os/adr/index.js +0 -18
  46. package/dist/os/adr/index.js.map +0 -1
  47. package/dist/os/adr/types.d.ts +0 -75
  48. package/dist/os/adr/types.d.ts.map +0 -1
  49. package/dist/os/adr/types.js +0 -55
  50. package/dist/os/adr/types.js.map +0 -1
  51. package/dist/os/audit/audit.module.d.ts +0 -3
  52. package/dist/os/audit/audit.module.d.ts.map +0 -1
  53. package/dist/os/audit/audit.module.js +0 -44
  54. package/dist/os/audit/audit.module.js.map +0 -1
  55. package/dist/os/audit/frontmatter-io.d.ts +0 -12
  56. package/dist/os/audit/frontmatter-io.d.ts.map +0 -1
  57. package/dist/os/audit/frontmatter-io.js +0 -71
  58. package/dist/os/audit/frontmatter-io.js.map +0 -1
  59. package/dist/os/audit/handlers/archive.d.ts +0 -4
  60. package/dist/os/audit/handlers/archive.d.ts.map +0 -1
  61. package/dist/os/audit/handlers/archive.js +0 -207
  62. package/dist/os/audit/handlers/archive.js.map +0 -1
  63. package/dist/os/audit/index.d.ts +0 -6
  64. package/dist/os/audit/index.d.ts.map +0 -1
  65. package/dist/os/audit/index.js +0 -16
  66. package/dist/os/audit/index.js.map +0 -1
  67. package/dist/os/audit/types.d.ts +0 -12
  68. package/dist/os/audit/types.d.ts.map +0 -1
  69. package/dist/os/audit/types.js +0 -17
  70. package/dist/os/audit/types.js.map +0 -1
  71. package/dist/os/compass/compass.module.d.ts +0 -3
  72. package/dist/os/compass/compass.module.d.ts.map +0 -1
  73. package/dist/os/compass/compass.module.js +0 -166
  74. package/dist/os/compass/compass.module.js.map +0 -1
  75. package/dist/os/compass/handlers/compass-audit-handler.d.ts +0 -36
  76. package/dist/os/compass/handlers/compass-audit-handler.d.ts.map +0 -1
  77. package/dist/os/compass/handlers/compass-audit-handler.js +0 -238
  78. package/dist/os/compass/handlers/compass-audit-handler.js.map +0 -1
  79. package/dist/os/compass/handlers/compass-change-summary-handler.d.ts +0 -19
  80. package/dist/os/compass/handlers/compass-change-summary-handler.d.ts.map +0 -1
  81. package/dist/os/compass/handlers/compass-change-summary-handler.js +0 -205
  82. package/dist/os/compass/handlers/compass-change-summary-handler.js.map +0 -1
  83. package/dist/os/compass/handlers/compass-inventory-handler.d.ts +0 -28
  84. package/dist/os/compass/handlers/compass-inventory-handler.d.ts.map +0 -1
  85. package/dist/os/compass/handlers/compass-inventory-handler.js +0 -213
  86. package/dist/os/compass/handlers/compass-inventory-handler.js.map +0 -1
  87. package/dist/os/compass/handlers/compass-inventory.d.ts +0 -30
  88. package/dist/os/compass/handlers/compass-inventory.d.ts.map +0 -1
  89. package/dist/os/compass/handlers/compass-inventory.js +0 -418
  90. package/dist/os/compass/handlers/compass-inventory.js.map +0 -1
  91. package/dist/os/compass/handlers/git-revision.d.ts +0 -8
  92. package/dist/os/compass/handlers/git-revision.d.ts.map +0 -1
  93. package/dist/os/compass/handlers/git-revision.js +0 -99
  94. package/dist/os/compass/handlers/git-revision.js.map +0 -1
  95. package/dist/os/compass/handlers/resolve-scan-root.d.ts +0 -3
  96. package/dist/os/compass/handlers/resolve-scan-root.d.ts.map +0 -1
  97. package/dist/os/compass/handlers/resolve-scan-root.js +0 -57
  98. package/dist/os/compass/handlers/resolve-scan-root.js.map +0 -1
  99. package/dist/os/compass/index.d.ts +0 -8
  100. package/dist/os/compass/index.d.ts.map +0 -1
  101. package/dist/os/compass/index.js +0 -19
  102. package/dist/os/compass/index.js.map +0 -1
  103. package/dist/os/core/core.module.d.ts +0 -3
  104. package/dist/os/core/core.module.d.ts.map +0 -1
  105. package/dist/os/core/core.module.js +0 -758
  106. package/dist/os/core/core.module.js.map +0 -1
  107. package/dist/os/core/handlers/assets-check.d.ts +0 -19
  108. package/dist/os/core/handlers/assets-check.d.ts.map +0 -1
  109. package/dist/os/core/handlers/assets-check.js +0 -89
  110. package/dist/os/core/handlers/assets-check.js.map +0 -1
  111. package/dist/os/core/handlers/assets-helpers.d.ts +0 -28
  112. package/dist/os/core/handlers/assets-helpers.d.ts.map +0 -1
  113. package/dist/os/core/handlers/assets-helpers.js +0 -128
  114. package/dist/os/core/handlers/assets-helpers.js.map +0 -1
  115. package/dist/os/core/handlers/assets-list.d.ts +0 -9
  116. package/dist/os/core/handlers/assets-list.d.ts.map +0 -1
  117. package/dist/os/core/handlers/assets-list.js +0 -72
  118. package/dist/os/core/handlers/assets-list.js.map +0 -1
  119. package/dist/os/core/handlers/build.d.ts +0 -16
  120. package/dist/os/core/handlers/build.d.ts.map +0 -1
  121. package/dist/os/core/handlers/build.js +0 -123
  122. package/dist/os/core/handlers/build.js.map +0 -1
  123. package/dist/os/core/handlers/determinism-check.d.ts +0 -20
  124. package/dist/os/core/handlers/determinism-check.d.ts.map +0 -1
  125. package/dist/os/core/handlers/determinism-check.js +0 -289
  126. package/dist/os/core/handlers/determinism-check.js.map +0 -1
  127. package/dist/os/core/handlers/dev.d.ts +0 -10
  128. package/dist/os/core/handlers/dev.d.ts.map +0 -1
  129. package/dist/os/core/handlers/dev.js +0 -102
  130. package/dist/os/core/handlers/dev.js.map +0 -1
  131. package/dist/os/core/handlers/knowledge-compact.d.ts +0 -4
  132. package/dist/os/core/handlers/knowledge-compact.d.ts.map +0 -1
  133. package/dist/os/core/handlers/knowledge-compact.js +0 -198
  134. package/dist/os/core/handlers/knowledge-compact.js.map +0 -1
  135. package/dist/os/core/handlers/pinned-check.d.ts +0 -49
  136. package/dist/os/core/handlers/pinned-check.d.ts.map +0 -1
  137. package/dist/os/core/handlers/pinned-check.js +0 -159
  138. package/dist/os/core/handlers/pinned-check.js.map +0 -1
  139. package/dist/os/core/handlers/pinned-init.d.ts +0 -19
  140. package/dist/os/core/handlers/pinned-init.d.ts.map +0 -1
  141. package/dist/os/core/handlers/pinned-init.js +0 -283
  142. package/dist/os/core/handlers/pinned-init.js.map +0 -1
  143. package/dist/os/core/handlers/pinned-types.d.ts +0 -29
  144. package/dist/os/core/handlers/pinned-types.d.ts.map +0 -1
  145. package/dist/os/core/handlers/pinned-types.js +0 -16
  146. package/dist/os/core/handlers/pinned-types.js.map +0 -1
  147. package/dist/os/core/handlers/pinned-validate.d.ts +0 -4
  148. package/dist/os/core/handlers/pinned-validate.d.ts.map +0 -1
  149. package/dist/os/core/handlers/pinned-validate.js +0 -248
  150. package/dist/os/core/handlers/pinned-validate.js.map +0 -1
  151. package/dist/os/core/handlers/profile-resolve.d.ts +0 -13
  152. package/dist/os/core/handlers/profile-resolve.d.ts.map +0 -1
  153. package/dist/os/core/handlers/profile-resolve.js +0 -65
  154. package/dist/os/core/handlers/profile-resolve.js.map +0 -1
  155. package/dist/os/core/handlers/release-prepare.d.ts +0 -25
  156. package/dist/os/core/handlers/release-prepare.d.ts.map +0 -1
  157. package/dist/os/core/handlers/release-prepare.js +0 -228
  158. package/dist/os/core/handlers/release-prepare.js.map +0 -1
  159. package/dist/os/core/handlers/release-publish.d.ts +0 -13
  160. package/dist/os/core/handlers/release-publish.d.ts.map +0 -1
  161. package/dist/os/core/handlers/release-publish.js +0 -173
  162. package/dist/os/core/handlers/release-publish.js.map +0 -1
  163. package/dist/os/core/handlers/validate.d.ts +0 -26
  164. package/dist/os/core/handlers/validate.d.ts.map +0 -1
  165. package/dist/os/core/handlers/validate.js +0 -208
  166. package/dist/os/core/handlers/validate.js.map +0 -1
  167. package/dist/os/core/handlers/workspace-deps.d.ts +0 -12
  168. package/dist/os/core/handlers/workspace-deps.d.ts.map +0 -1
  169. package/dist/os/core/handlers/workspace-deps.js +0 -39
  170. package/dist/os/core/handlers/workspace-deps.js.map +0 -1
  171. package/dist/os/core/index.d.ts +0 -2
  172. package/dist/os/core/index.d.ts.map +0 -1
  173. package/dist/os/core/index.js +0 -13
  174. package/dist/os/core/index.js.map +0 -1
  175. package/dist/os/exploration/exploration.module.d.ts +0 -3
  176. package/dist/os/exploration/exploration.module.d.ts.map +0 -1
  177. package/dist/os/exploration/exploration.module.js +0 -82
  178. package/dist/os/exploration/exploration.module.js.map +0 -1
  179. package/dist/os/exploration/frontmatter-io.d.ts +0 -13
  180. package/dist/os/exploration/frontmatter-io.d.ts.map +0 -1
  181. package/dist/os/exploration/frontmatter-io.js +0 -61
  182. package/dist/os/exploration/frontmatter-io.js.map +0 -1
  183. package/dist/os/exploration/handlers/archive.d.ts +0 -4
  184. package/dist/os/exploration/handlers/archive.d.ts.map +0 -1
  185. package/dist/os/exploration/handlers/archive.js +0 -135
  186. package/dist/os/exploration/handlers/archive.js.map +0 -1
  187. package/dist/os/exploration/handlers/list.d.ts +0 -4
  188. package/dist/os/exploration/handlers/list.d.ts.map +0 -1
  189. package/dist/os/exploration/handlers/list.js +0 -56
  190. package/dist/os/exploration/handlers/list.js.map +0 -1
  191. package/dist/os/exploration/handlers/show.d.ts +0 -4
  192. package/dist/os/exploration/handlers/show.d.ts.map +0 -1
  193. package/dist/os/exploration/handlers/show.js +0 -91
  194. package/dist/os/exploration/handlers/show.js.map +0 -1
  195. package/dist/os/exploration/index.d.ts +0 -7
  196. package/dist/os/exploration/index.d.ts.map +0 -1
  197. package/dist/os/exploration/index.js +0 -17
  198. package/dist/os/exploration/index.js.map +0 -1
  199. package/dist/os/exploration/types.d.ts +0 -38
  200. package/dist/os/exploration/types.d.ts.map +0 -1
  201. package/dist/os/exploration/types.js +0 -23
  202. package/dist/os/exploration/types.js.map +0 -1
  203. package/dist/os/mission/handlers/archive.d.ts +0 -4
  204. package/dist/os/mission/handlers/archive.d.ts.map +0 -1
  205. package/dist/os/mission/handlers/archive.js +0 -356
  206. package/dist/os/mission/handlers/archive.js.map +0 -1
  207. package/dist/os/mission/index.d.ts +0 -2
  208. package/dist/os/mission/index.d.ts.map +0 -1
  209. package/dist/os/mission/index.js +0 -2
  210. package/dist/os/mission/index.js.map +0 -1
  211. package/dist/os/mission/mission.module.d.ts +0 -3
  212. package/dist/os/mission/mission.module.d.ts.map +0 -1
  213. package/dist/os/mission/mission.module.js +0 -44
  214. package/dist/os/mission/mission.module.js.map +0 -1
  215. package/dist/os/mission/types.d.ts +0 -23
  216. package/dist/os/mission/types.d.ts.map +0 -1
  217. package/dist/os/mission/types.js +0 -18
  218. package/dist/os/mission/types.js.map +0 -1
  219. package/dist/os/naming/index.d.ts +0 -3
  220. package/dist/os/naming/index.d.ts.map +0 -1
  221. package/dist/os/naming/index.js +0 -14
  222. package/dist/os/naming/index.js.map +0 -1
  223. package/dist/os/naming/naming-convention.d.ts +0 -25
  224. package/dist/os/naming/naming-convention.d.ts.map +0 -1
  225. package/dist/os/naming/naming-convention.js +0 -324
  226. package/dist/os/naming/naming-convention.js.map +0 -1
  227. package/dist/os/naming/naming.module.d.ts +0 -3
  228. package/dist/os/naming/naming.module.d.ts.map +0 -1
  229. package/dist/os/naming/naming.module.js +0 -33
  230. package/dist/os/naming/naming.module.js.map +0 -1
  231. package/dist/os/notes/index.d.ts +0 -2
  232. package/dist/os/notes/index.d.ts.map +0 -1
  233. package/dist/os/notes/index.js +0 -10
  234. package/dist/os/notes/index.js.map +0 -1
  235. package/dist/os/notes/notes.module.d.ts +0 -3
  236. package/dist/os/notes/notes.module.d.ts.map +0 -1
  237. package/dist/os/notes/notes.module.js +0 -83
  238. package/dist/os/notes/notes.module.js.map +0 -1
  239. package/dist/os/plan/frontmatter-io.d.ts +0 -12
  240. package/dist/os/plan/frontmatter-io.d.ts.map +0 -1
  241. package/dist/os/plan/frontmatter-io.js +0 -69
  242. package/dist/os/plan/frontmatter-io.js.map +0 -1
  243. package/dist/os/plan/handlers/archive.d.ts +0 -4
  244. package/dist/os/plan/handlers/archive.d.ts.map +0 -1
  245. package/dist/os/plan/handlers/archive.js +0 -206
  246. package/dist/os/plan/handlers/archive.js.map +0 -1
  247. package/dist/os/plan/index.d.ts +0 -6
  248. package/dist/os/plan/index.d.ts.map +0 -1
  249. package/dist/os/plan/index.js +0 -16
  250. package/dist/os/plan/index.js.map +0 -1
  251. package/dist/os/plan/plan.module.d.ts +0 -3
  252. package/dist/os/plan/plan.module.d.ts.map +0 -1
  253. package/dist/os/plan/plan.module.js +0 -44
  254. package/dist/os/plan/plan.module.js.map +0 -1
  255. package/dist/os/plan/types.d.ts +0 -12
  256. package/dist/os/plan/types.d.ts.map +0 -1
  257. package/dist/os/plan/types.js +0 -17
  258. package/dist/os/plan/types.js.map +0 -1
  259. package/dist/os/program/discovery.d.ts +0 -61
  260. package/dist/os/program/discovery.d.ts.map +0 -1
  261. package/dist/os/program/discovery.js +0 -236
  262. package/dist/os/program/discovery.js.map +0 -1
  263. package/dist/os/program/handlers/complete.d.ts +0 -12
  264. package/dist/os/program/handlers/complete.d.ts.map +0 -1
  265. package/dist/os/program/handlers/complete.js +0 -344
  266. package/dist/os/program/handlers/complete.js.map +0 -1
  267. package/dist/os/program/handlers/lease.d.ts +0 -13
  268. package/dist/os/program/handlers/lease.d.ts.map +0 -1
  269. package/dist/os/program/handlers/lease.js +0 -322
  270. package/dist/os/program/handlers/lease.js.map +0 -1
  271. package/dist/os/program/handlers/seal.d.ts +0 -12
  272. package/dist/os/program/handlers/seal.d.ts.map +0 -1
  273. package/dist/os/program/handlers/seal.js +0 -265
  274. package/dist/os/program/handlers/seal.js.map +0 -1
  275. package/dist/os/program/handlers/validate.d.ts +0 -14
  276. package/dist/os/program/handlers/validate.d.ts.map +0 -1
  277. package/dist/os/program/handlers/validate.js +0 -164
  278. package/dist/os/program/handlers/validate.js.map +0 -1
  279. package/dist/os/program/lease.d.ts +0 -39
  280. package/dist/os/program/lease.d.ts.map +0 -1
  281. package/dist/os/program/lease.js +0 -129
  282. package/dist/os/program/lease.js.map +0 -1
  283. package/dist/os/program/program.module.d.ts +0 -3
  284. package/dist/os/program/program.module.d.ts.map +0 -1
  285. package/dist/os/program/program.module.js +0 -201
  286. package/dist/os/program/program.module.js.map +0 -1
  287. package/dist/os/program/schemas.d.ts +0 -225
  288. package/dist/os/program/schemas.d.ts.map +0 -1
  289. package/dist/os/program/schemas.js +0 -174
  290. package/dist/os/program/schemas.js.map +0 -1
  291. package/dist/os/program/state.d.ts +0 -38
  292. package/dist/os/program/state.d.ts.map +0 -1
  293. package/dist/os/program/state.js +0 -189
  294. package/dist/os/program/state.js.map +0 -1
  295. package/dist/os/rfc/acceptance.d.ts +0 -15
  296. package/dist/os/rfc/acceptance.d.ts.map +0 -1
  297. package/dist/os/rfc/acceptance.js +0 -310
  298. package/dist/os/rfc/acceptance.js.map +0 -1
  299. package/dist/os/rfc/decision-log.d.ts +0 -6
  300. package/dist/os/rfc/decision-log.d.ts.map +0 -1
  301. package/dist/os/rfc/decision-log.js +0 -269
  302. package/dist/os/rfc/decision-log.js.map +0 -1
  303. package/dist/os/rfc/dna-trace.d.ts +0 -27
  304. package/dist/os/rfc/dna-trace.d.ts.map +0 -1
  305. package/dist/os/rfc/dna-trace.js +0 -214
  306. package/dist/os/rfc/dna-trace.js.map +0 -1
  307. package/dist/os/rfc/frontmatter-io.d.ts +0 -18
  308. package/dist/os/rfc/frontmatter-io.d.ts.map +0 -1
  309. package/dist/os/rfc/frontmatter-io.js +0 -110
  310. package/dist/os/rfc/frontmatter-io.js.map +0 -1
  311. package/dist/os/rfc/handlers/archive.d.ts +0 -25
  312. package/dist/os/rfc/handlers/archive.d.ts.map +0 -1
  313. package/dist/os/rfc/handlers/archive.js +0 -247
  314. package/dist/os/rfc/handlers/archive.js.map +0 -1
  315. package/dist/os/rfc/handlers/check.d.ts +0 -4
  316. package/dist/os/rfc/handlers/check.d.ts.map +0 -1
  317. package/dist/os/rfc/handlers/check.js +0 -195
  318. package/dist/os/rfc/handlers/check.js.map +0 -1
  319. package/dist/os/rfc/handlers/implement-stamp.d.ts +0 -4
  320. package/dist/os/rfc/handlers/implement-stamp.d.ts.map +0 -1
  321. package/dist/os/rfc/handlers/implement-stamp.js +0 -420
  322. package/dist/os/rfc/handlers/implement-stamp.js.map +0 -1
  323. package/dist/os/rfc/handlers/index-graph.d.ts +0 -13
  324. package/dist/os/rfc/handlers/index-graph.d.ts.map +0 -1
  325. package/dist/os/rfc/handlers/index-graph.js +0 -192
  326. package/dist/os/rfc/handlers/index-graph.js.map +0 -1
  327. package/dist/os/rfc/handlers/lifecycle.d.ts +0 -13
  328. package/dist/os/rfc/handlers/lifecycle.d.ts.map +0 -1
  329. package/dist/os/rfc/handlers/lifecycle.js +0 -155
  330. package/dist/os/rfc/handlers/lifecycle.js.map +0 -1
  331. package/dist/os/rfc/handlers/list-create.d.ts +0 -6
  332. package/dist/os/rfc/handlers/list-create.d.ts.map +0 -1
  333. package/dist/os/rfc/handlers/list-create.js +0 -240
  334. package/dist/os/rfc/handlers/list-create.js.map +0 -1
  335. package/dist/os/rfc/handlers/pipeline-status.d.ts +0 -26
  336. package/dist/os/rfc/handlers/pipeline-status.d.ts.map +0 -1
  337. package/dist/os/rfc/handlers/pipeline-status.js +0 -124
  338. package/dist/os/rfc/handlers/pipeline-status.js.map +0 -1
  339. package/dist/os/rfc/handlers/shared.d.ts +0 -22
  340. package/dist/os/rfc/handlers/shared.d.ts.map +0 -1
  341. package/dist/os/rfc/handlers/shared.js +0 -105
  342. package/dist/os/rfc/handlers/shared.js.map +0 -1
  343. package/dist/os/rfc/handlers/supersede-propose.d.ts +0 -4
  344. package/dist/os/rfc/handlers/supersede-propose.d.ts.map +0 -1
  345. package/dist/os/rfc/handlers/supersede-propose.js +0 -203
  346. package/dist/os/rfc/handlers/supersede-propose.js.map +0 -1
  347. package/dist/os/rfc/handlers/validate-rules.d.ts +0 -32
  348. package/dist/os/rfc/handlers/validate-rules.d.ts.map +0 -1
  349. package/dist/os/rfc/handlers/validate-rules.js +0 -590
  350. package/dist/os/rfc/handlers/validate-rules.js.map +0 -1
  351. package/dist/os/rfc/handlers/validate.d.ts +0 -4
  352. package/dist/os/rfc/handlers/validate.d.ts.map +0 -1
  353. package/dist/os/rfc/handlers/validate.js +0 -108
  354. package/dist/os/rfc/handlers/validate.js.map +0 -1
  355. package/dist/os/rfc/handlers.d.ts +0 -7
  356. package/dist/os/rfc/handlers.d.ts.map +0 -1
  357. package/dist/os/rfc/handlers.js +0 -19
  358. package/dist/os/rfc/handlers.js.map +0 -1
  359. package/dist/os/rfc/index.d.ts +0 -18
  360. package/dist/os/rfc/index.d.ts.map +0 -1
  361. package/dist/os/rfc/index.js +0 -24
  362. package/dist/os/rfc/index.js.map +0 -1
  363. package/dist/os/rfc/rfc.module.d.ts +0 -3
  364. package/dist/os/rfc/rfc.module.d.ts.map +0 -1
  365. package/dist/os/rfc/rfc.module.js +0 -366
  366. package/dist/os/rfc/rfc.module.js.map +0 -1
  367. package/dist/os/rfc/types.d.ts +0 -483
  368. package/dist/os/rfc/types.d.ts.map +0 -1
  369. package/dist/os/rfc/types.js +0 -100
  370. package/dist/os/rfc/types.js.map +0 -1
  371. package/dist/os/rfc/verification-evidence.d.ts +0 -8
  372. package/dist/os/rfc/verification-evidence.d.ts.map +0 -1
  373. package/dist/os/rfc/verification-evidence.js +0 -184
  374. package/dist/os/rfc/verification-evidence.js.map +0 -1
  375. package/dist/os/session/atif-parser.d.ts +0 -29
  376. package/dist/os/session/atif-parser.d.ts.map +0 -1
  377. package/dist/os/session/atif-parser.js +0 -140
  378. package/dist/os/session/atif-parser.js.map +0 -1
  379. package/dist/os/session/frontmatter-io.d.ts +0 -31
  380. package/dist/os/session/frontmatter-io.d.ts.map +0 -1
  381. package/dist/os/session/frontmatter-io.js +0 -146
  382. package/dist/os/session/frontmatter-io.js.map +0 -1
  383. package/dist/os/session/handlers/archive.d.ts +0 -4
  384. package/dist/os/session/handlers/archive.d.ts.map +0 -1
  385. package/dist/os/session/handlers/archive.js +0 -241
  386. package/dist/os/session/handlers/archive.js.map +0 -1
  387. package/dist/os/session/handlers/list.d.ts +0 -4
  388. package/dist/os/session/handlers/list.d.ts.map +0 -1
  389. package/dist/os/session/handlers/list.js +0 -147
  390. package/dist/os/session/handlers/list.js.map +0 -1
  391. package/dist/os/session/handlers/save.d.ts +0 -6
  392. package/dist/os/session/handlers/save.d.ts.map +0 -1
  393. package/dist/os/session/handlers/save.js +0 -297
  394. package/dist/os/session/handlers/save.js.map +0 -1
  395. package/dist/os/session/handlers/validate.d.ts +0 -4
  396. package/dist/os/session/handlers/validate.d.ts.map +0 -1
  397. package/dist/os/session/handlers/validate.js +0 -188
  398. package/dist/os/session/handlers/validate.js.map +0 -1
  399. package/dist/os/session/index.d.ts +0 -9
  400. package/dist/os/session/index.d.ts.map +0 -1
  401. package/dist/os/session/index.js +0 -20
  402. package/dist/os/session/index.js.map +0 -1
  403. package/dist/os/session/session.module.d.ts +0 -3
  404. package/dist/os/session/session.module.d.ts.map +0 -1
  405. package/dist/os/session/session.module.js +0 -115
  406. package/dist/os/session/session.module.js.map +0 -1
  407. package/dist/os/session/types.d.ts +0 -101
  408. package/dist/os/session/types.d.ts.map +0 -1
  409. package/dist/os/session/types.js +0 -52
  410. package/dist/os/session/types.js.map +0 -1
  411. package/dist/os/spec/live-spec-list.d.ts +0 -4
  412. package/dist/os/spec/live-spec-list.d.ts.map +0 -1
  413. package/dist/os/spec/live-spec-list.js +0 -64
  414. package/dist/os/spec/live-spec-list.js.map +0 -1
  415. package/dist/os/spec/live-spec-merge.d.ts +0 -4
  416. package/dist/os/spec/live-spec-merge.d.ts.map +0 -1
  417. package/dist/os/spec/live-spec-merge.js +0 -345
  418. package/dist/os/spec/live-spec-merge.js.map +0 -1
  419. package/dist/os/spec/live-spec-show.d.ts +0 -4
  420. package/dist/os/spec/live-spec-show.d.ts.map +0 -1
  421. package/dist/os/spec/live-spec-show.js +0 -99
  422. package/dist/os/spec/live-spec-show.js.map +0 -1
  423. package/dist/os/spec/live-spec-types.d.ts +0 -71
  424. package/dist/os/spec/live-spec-types.d.ts.map +0 -1
  425. package/dist/os/spec/live-spec-types.js +0 -14
  426. package/dist/os/spec/live-spec-types.js.map +0 -1
  427. package/dist/os/spec/live-spec-validate.d.ts +0 -4
  428. package/dist/os/spec/live-spec-validate.d.ts.map +0 -1
  429. package/dist/os/spec/live-spec-validate.js +0 -140
  430. package/dist/os/spec/live-spec-validate.js.map +0 -1
  431. package/dist/os/spec/spec-materialize.d.ts +0 -21
  432. package/dist/os/spec/spec-materialize.d.ts.map +0 -1
  433. package/dist/os/spec/spec-materialize.js +0 -336
  434. package/dist/os/spec/spec-materialize.js.map +0 -1
  435. package/dist/os/spec/spec-schema.d.ts +0 -126
  436. package/dist/os/spec/spec-schema.d.ts.map +0 -1
  437. package/dist/os/spec/spec-schema.js +0 -118
  438. package/dist/os/spec/spec-schema.js.map +0 -1
  439. package/dist/os/spec/spec-status.d.ts +0 -33
  440. package/dist/os/spec/spec-status.d.ts.map +0 -1
  441. package/dist/os/spec/spec-status.js +0 -222
  442. package/dist/os/spec/spec-status.js.map +0 -1
  443. package/dist/os/spec/spec-validate.d.ts +0 -4
  444. package/dist/os/spec/spec-validate.d.ts.map +0 -1
  445. package/dist/os/spec/spec-validate.js +0 -435
  446. package/dist/os/spec/spec-validate.js.map +0 -1
  447. package/dist/os/spec/spec.module.d.ts +0 -3
  448. package/dist/os/spec/spec.module.d.ts.map +0 -1
  449. package/dist/os/spec/spec.module.js +0 -119
  450. package/dist/os/spec/spec.module.js.map +0 -1
  451. package/dist/os/werkstatt/handlers/lock.d.ts +0 -10
  452. package/dist/os/werkstatt/handlers/lock.d.ts.map +0 -1
  453. package/dist/os/werkstatt/handlers/lock.js +0 -153
  454. package/dist/os/werkstatt/handlers/lock.js.map +0 -1
  455. package/dist/os/werkstatt/handlers/schema.d.ts +0 -33
  456. package/dist/os/werkstatt/handlers/schema.d.ts.map +0 -1
  457. package/dist/os/werkstatt/handlers/schema.js +0 -42
  458. package/dist/os/werkstatt/handlers/schema.js.map +0 -1
  459. package/dist/os/werkstatt/handlers/werkstatt-lock-recover.d.ts +0 -15
  460. package/dist/os/werkstatt/handlers/werkstatt-lock-recover.d.ts.map +0 -1
  461. package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js +0 -144
  462. package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js.map +0 -1
  463. package/dist/os/werkstatt/handlers/werkstatt-lock-status.d.ts +0 -18
  464. package/dist/os/werkstatt/handlers/werkstatt-lock-status.d.ts.map +0 -1
  465. package/dist/os/werkstatt/handlers/werkstatt-lock-status.js +0 -43
  466. package/dist/os/werkstatt/handlers/werkstatt-lock-status.js.map +0 -1
  467. package/dist/os/werkstatt/handlers/werkstatt-operation-validate.d.ts +0 -11
  468. package/dist/os/werkstatt/handlers/werkstatt-operation-validate.d.ts.map +0 -1
  469. package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js +0 -79
  470. package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js.map +0 -1
  471. package/dist/os/werkstatt/index.d.ts +0 -7
  472. package/dist/os/werkstatt/index.d.ts.map +0 -1
  473. package/dist/os/werkstatt/index.js +0 -18
  474. package/dist/os/werkstatt/index.js.map +0 -1
  475. package/dist/os/werkstatt/werkstatt.module.d.ts +0 -3
  476. package/dist/os/werkstatt/werkstatt.module.d.ts.map +0 -1
  477. package/dist/os/werkstatt/werkstatt.module.js +0 -58
  478. package/dist/os/werkstatt/werkstatt.module.js.map +0 -1
  479. package/dist/os/workflow/handlers.d.ts +0 -12
  480. package/dist/os/workflow/handlers.d.ts.map +0 -1
  481. package/dist/os/workflow/handlers.js +0 -254
  482. package/dist/os/workflow/handlers.js.map +0 -1
  483. package/dist/os/workflow/index.d.ts +0 -4
  484. package/dist/os/workflow/index.d.ts.map +0 -1
  485. package/dist/os/workflow/index.js +0 -18
  486. package/dist/os/workflow/index.js.map +0 -1
  487. package/dist/os/workflow/types.d.ts +0 -69
  488. package/dist/os/workflow/types.d.ts.map +0 -1
  489. package/dist/os/workflow/types.js +0 -23
  490. package/dist/os/workflow/types.js.map +0 -1
  491. package/dist/os/workflow/workflow.module.d.ts +0 -3
  492. package/dist/os/workflow/workflow.module.d.ts.map +0 -1
  493. package/dist/os/workflow/workflow.module.js +0 -48
  494. package/dist/os/workflow/workflow.module.js.map +0 -1
  495. package/dist/src/cli-output.d.ts +0 -5
  496. package/dist/src/cli-output.d.ts.map +0 -1
  497. package/dist/src/cli-output.js +0 -53
  498. package/dist/src/cli-output.js.map +0 -1
  499. package/dist/src/config/forge-config.d.ts +0 -242
  500. package/dist/src/config/forge-config.d.ts.map +0 -1
  501. package/dist/src/config/forge-config.js +0 -359
  502. package/dist/src/config/forge-config.js.map +0 -1
  503. package/dist/src/forge-module.d.ts +0 -16
  504. package/dist/src/forge-module.d.ts.map +0 -1
  505. package/dist/src/forge-module.js +0 -15
  506. package/dist/src/forge-module.js.map +0 -1
  507. package/dist/src/index.d.ts +0 -36
  508. package/dist/src/index.d.ts.map +0 -1
  509. package/dist/src/index.js +0 -56
  510. package/dist/src/index.js.map +0 -1
  511. package/dist/src/knowledge/budgets.d.ts +0 -38
  512. package/dist/src/knowledge/budgets.d.ts.map +0 -1
  513. package/dist/src/knowledge/budgets.js +0 -157
  514. package/dist/src/knowledge/budgets.js.map +0 -1
  515. package/dist/src/knowledge/compact.d.ts +0 -47
  516. package/dist/src/knowledge/compact.d.ts.map +0 -1
  517. package/dist/src/knowledge/compact.js +0 -320
  518. package/dist/src/knowledge/compact.js.map +0 -1
  519. package/dist/src/knowledge/index.d.ts +0 -7
  520. package/dist/src/knowledge/index.d.ts.map +0 -1
  521. package/dist/src/knowledge/index.js +0 -19
  522. package/dist/src/knowledge/index.js.map +0 -1
  523. package/dist/src/knowledge/parse.d.ts +0 -3
  524. package/dist/src/knowledge/parse.d.ts.map +0 -1
  525. package/dist/src/knowledge/parse.js +0 -205
  526. package/dist/src/knowledge/parse.js.map +0 -1
  527. package/dist/src/knowledge/promote.d.ts +0 -37
  528. package/dist/src/knowledge/promote.d.ts.map +0 -1
  529. package/dist/src/knowledge/promote.js +0 -120
  530. package/dist/src/knowledge/promote.js.map +0 -1
  531. package/dist/src/knowledge/schema.d.ts +0 -61
  532. package/dist/src/knowledge/schema.d.ts.map +0 -1
  533. package/dist/src/knowledge/schema.js +0 -64
  534. package/dist/src/knowledge/schema.js.map +0 -1
  535. package/dist/src/knowledge/serialize.d.ts +0 -3
  536. package/dist/src/knowledge/serialize.d.ts.map +0 -1
  537. package/dist/src/knowledge/serialize.js +0 -67
  538. package/dist/src/knowledge/serialize.js.map +0 -1
  539. package/dist/src/migration-adapters/git-utils.d.ts +0 -3
  540. package/dist/src/migration-adapters/git-utils.d.ts.map +0 -1
  541. package/dist/src/migration-adapters/git-utils.js +0 -56
  542. package/dist/src/migration-adapters/git-utils.js.map +0 -1
  543. package/dist/src/migration-adapters/ignored-files.d.ts +0 -12
  544. package/dist/src/migration-adapters/ignored-files.d.ts.map +0 -1
  545. package/dist/src/migration-adapters/ignored-files.js +0 -190
  546. package/dist/src/migration-adapters/ignored-files.js.map +0 -1
  547. package/dist/src/migration-adapters/index.d.ts +0 -8
  548. package/dist/src/migration-adapters/index.d.ts.map +0 -1
  549. package/dist/src/migration-adapters/index.js +0 -17
  550. package/dist/src/migration-adapters/index.js.map +0 -1
  551. package/dist/src/migration-adapters/node-typescript-pnpm/index.d.ts +0 -3
  552. package/dist/src/migration-adapters/node-typescript-pnpm/index.d.ts.map +0 -1
  553. package/dist/src/migration-adapters/node-typescript-pnpm/index.js +0 -141
  554. package/dist/src/migration-adapters/node-typescript-pnpm/index.js.map +0 -1
  555. package/dist/src/migration-adapters/phaser-pnpm/index.d.ts +0 -3
  556. package/dist/src/migration-adapters/phaser-pnpm/index.d.ts.map +0 -1
  557. package/dist/src/migration-adapters/phaser-pnpm/index.js +0 -142
  558. package/dist/src/migration-adapters/phaser-pnpm/index.js.map +0 -1
  559. package/dist/src/migration-adapters/registry.d.ts +0 -6
  560. package/dist/src/migration-adapters/registry.d.ts.map +0 -1
  561. package/dist/src/migration-adapters/registry.js +0 -55
  562. package/dist/src/migration-adapters/registry.js.map +0 -1
  563. package/dist/src/migration-adapters/types.d.ts +0 -35
  564. package/dist/src/migration-adapters/types.d.ts.map +0 -1
  565. package/dist/src/migration-adapters/types.js +0 -31
  566. package/dist/src/migration-adapters/types.js.map +0 -1
  567. package/dist/src/onboarding/agents-generate.d.ts +0 -30
  568. package/dist/src/onboarding/agents-generate.d.ts.map +0 -1
  569. package/dist/src/onboarding/agents-generate.js +0 -352
  570. package/dist/src/onboarding/agents-generate.js.map +0 -1
  571. package/dist/src/onboarding/create.d.ts +0 -12
  572. package/dist/src/onboarding/create.d.ts.map +0 -1
  573. package/dist/src/onboarding/create.js +0 -318
  574. package/dist/src/onboarding/create.js.map +0 -1
  575. package/dist/src/onboarding/doctor.d.ts +0 -45
  576. package/dist/src/onboarding/doctor.d.ts.map +0 -1
  577. package/dist/src/onboarding/doctor.js +0 -1108
  578. package/dist/src/onboarding/doctor.js.map +0 -1
  579. package/dist/src/onboarding/init.d.ts +0 -32
  580. package/dist/src/onboarding/init.d.ts.map +0 -1
  581. package/dist/src/onboarding/init.js +0 -291
  582. package/dist/src/onboarding/init.js.map +0 -1
  583. package/dist/src/onboarding/invariant-engine.d.ts +0 -17
  584. package/dist/src/onboarding/invariant-engine.d.ts.map +0 -1
  585. package/dist/src/onboarding/invariant-engine.js +0 -416
  586. package/dist/src/onboarding/invariant-engine.js.map +0 -1
  587. package/dist/src/onboarding/memory-scaffold.d.ts +0 -18
  588. package/dist/src/onboarding/memory-scaffold.d.ts.map +0 -1
  589. package/dist/src/onboarding/memory-scaffold.js +0 -151
  590. package/dist/src/onboarding/memory-scaffold.js.map +0 -1
  591. package/dist/src/onboarding/nested-agents-generate.d.ts +0 -18
  592. package/dist/src/onboarding/nested-agents-generate.d.ts.map +0 -1
  593. package/dist/src/onboarding/nested-agents-generate.js +0 -69
  594. package/dist/src/onboarding/nested-agents-generate.js.map +0 -1
  595. package/dist/src/onboarding/nested-agents-templates.d.ts +0 -26
  596. package/dist/src/onboarding/nested-agents-templates.d.ts.map +0 -1
  597. package/dist/src/onboarding/nested-agents-templates.js +0 -178
  598. package/dist/src/onboarding/nested-agents-templates.js.map +0 -1
  599. package/dist/src/onboarding/profile-validate.d.ts +0 -13
  600. package/dist/src/onboarding/profile-validate.d.ts.map +0 -1
  601. package/dist/src/onboarding/profile-validate.js +0 -109
  602. package/dist/src/onboarding/profile-validate.js.map +0 -1
  603. package/dist/src/onboarding/scaffold-project.d.ts +0 -12
  604. package/dist/src/onboarding/scaffold-project.d.ts.map +0 -1
  605. package/dist/src/onboarding/scaffold-project.js +0 -248
  606. package/dist/src/onboarding/scaffold-project.js.map +0 -1
  607. package/dist/src/onboarding/scaffold.d.ts +0 -15
  608. package/dist/src/onboarding/scaffold.d.ts.map +0 -1
  609. package/dist/src/onboarding/scaffold.js +0 -120
  610. package/dist/src/onboarding/scaffold.js.map +0 -1
  611. package/dist/src/onboarding/upgrade.d.ts +0 -25
  612. package/dist/src/onboarding/upgrade.d.ts.map +0 -1
  613. package/dist/src/onboarding/upgrade.js +0 -391
  614. package/dist/src/onboarding/upgrade.js.map +0 -1
  615. package/dist/src/onboarding/workspace-discovery.d.ts +0 -11
  616. package/dist/src/onboarding/workspace-discovery.d.ts.map +0 -1
  617. package/dist/src/onboarding/workspace-discovery.js +0 -138
  618. package/dist/src/onboarding/workspace-discovery.js.map +0 -1
  619. package/dist/src/profiles/profile-schema.d.ts +0 -351
  620. package/dist/src/profiles/profile-schema.d.ts.map +0 -1
  621. package/dist/src/profiles/profile-schema.js +0 -201
  622. package/dist/src/profiles/profile-schema.js.map +0 -1
  623. package/dist/src/profiles/stack-profile.d.ts +0 -168
  624. package/dist/src/profiles/stack-profile.d.ts.map +0 -1
  625. package/dist/src/profiles/stack-profile.js +0 -144
  626. package/dist/src/profiles/stack-profile.js.map +0 -1
  627. package/dist/src/profiles/terminology-utils.d.ts +0 -8
  628. package/dist/src/profiles/terminology-utils.d.ts.map +0 -1
  629. package/dist/src/profiles/terminology-utils.js +0 -31
  630. package/dist/src/profiles/terminology-utils.js.map +0 -1
  631. package/dist/src/registry.d.ts +0 -38
  632. package/dist/src/registry.d.ts.map +0 -1
  633. package/dist/src/registry.js +0 -135
  634. package/dist/src/registry.js.map +0 -1
  635. package/dist/src/skill-schema.d.ts +0 -30
  636. package/dist/src/skill-schema.d.ts.map +0 -1
  637. package/dist/src/skill-schema.js +0 -34
  638. package/dist/src/skill-schema.js.map +0 -1
  639. package/dist/src/types.d.ts +0 -152
  640. package/dist/src/types.d.ts.map +0 -1
  641. package/dist/src/types.js +0 -17
  642. package/dist/src/types.js.map +0 -1
  643. package/dist/src/utils/fs-atomic.d.ts +0 -7
  644. package/dist/src/utils/fs-atomic.d.ts.map +0 -1
  645. package/dist/src/utils/fs-atomic.js +0 -81
  646. package/dist/src/utils/fs-atomic.js.map +0 -1
  647. package/dist/src/utils/fs-idempotent.d.ts +0 -2
  648. package/dist/src/utils/fs-idempotent.d.ts.map +0 -1
  649. package/dist/src/utils/fs-idempotent.js +0 -39
  650. package/dist/src/utils/fs-idempotent.js.map +0 -1
  651. package/dist/src/utils/fs-trash-sync.d.ts +0 -2
  652. package/dist/src/utils/fs-trash-sync.d.ts.map +0 -1
  653. package/dist/src/utils/fs-trash-sync.js +0 -34
  654. package/dist/src/utils/fs-trash-sync.js.map +0 -1
  655. package/dist/src/utils/fs-trash.d.ts +0 -2
  656. package/dist/src/utils/fs-trash.d.ts.map +0 -1
  657. package/dist/src/utils/fs-trash.js +0 -24
  658. package/dist/src/utils/fs-trash.js.map +0 -1
  659. package/dist/src/utils/fs.d.ts +0 -8
  660. package/dist/src/utils/fs.d.ts.map +0 -1
  661. package/dist/src/utils/fs.js +0 -60
  662. package/dist/src/utils/fs.js.map +0 -1
  663. package/dist/src/utils/generated-marker.d.ts +0 -21
  664. package/dist/src/utils/generated-marker.d.ts.map +0 -1
  665. package/dist/src/utils/generated-marker.js +0 -128
  666. package/dist/src/utils/generated-marker.js.map +0 -1
  667. package/dist/src/utils/hash.d.ts +0 -2
  668. package/dist/src/utils/hash.d.ts.map +0 -1
  669. package/dist/src/utils/hash.js +0 -18
  670. package/dist/src/utils/hash.js.map +0 -1
  671. package/dist/src/utils/index.d.ts +0 -9
  672. package/dist/src/utils/index.d.ts.map +0 -1
  673. package/dist/src/utils/index.js +0 -21
  674. package/dist/src/utils/index.js.map +0 -1
  675. package/dist/src/utils/string-utils.d.ts +0 -2
  676. package/dist/src/utils/string-utils.d.ts.map +0 -1
  677. package/dist/src/utils/string-utils.js +0 -19
  678. package/dist/src/utils/string-utils.js.map +0 -1
  679. package/dist/src/validators/note-frontmatter-validate.d.ts +0 -20
  680. package/dist/src/validators/note-frontmatter-validate.d.ts.map +0 -1
  681. package/dist/src/validators/note-frontmatter-validate.js +0 -117
  682. package/dist/src/validators/note-frontmatter-validate.js.map +0 -1
  683. package/dist/src/validators/note-link-validate.d.ts +0 -21
  684. package/dist/src/validators/note-link-validate.d.ts.map +0 -1
  685. package/dist/src/validators/note-link-validate.js +0 -121
  686. package/dist/src/validators/note-link-validate.js.map +0 -1
  687. package/dist/src/validators/note-orphan-detect.d.ts +0 -19
  688. package/dist/src/validators/note-orphan-detect.d.ts.map +0 -1
  689. package/dist/src/validators/note-orphan-detect.js +0 -123
  690. package/dist/src/validators/note-orphan-detect.js.map +0 -1
  691. package/dist/src/validators/port-validate.d.ts +0 -12
  692. package/dist/src/validators/port-validate.d.ts.map +0 -1
  693. package/dist/src/validators/port-validate.js +0 -78
  694. package/dist/src/validators/port-validate.js.map +0 -1
  695. package/dist/src/validators/skill-validate.d.ts +0 -29
  696. package/dist/src/validators/skill-validate.d.ts.map +0 -1
  697. package/dist/src/validators/skill-validate.js +0 -689
  698. package/dist/src/validators/skill-validate.js.map +0 -1
@@ -1,15 +0,0 @@
1
- import type { ForgeCommandInput, ForgeCommandResult, ForgeRuntimeContext, CommandRegistry } from "../../src/types.ts";
2
- import type { AcceptanceProbe, ProbeResult, RfcAcceptanceRunResult } from "./types.ts";
3
- export interface AcceptanceShapeIssue {
4
- index: number;
5
- message: string;
6
- }
7
- /**
8
- * Pure shape validator for a raw `acceptance:` frontmatter value. Returns an
9
- * empty array when the value is absent (acceptance is optional) or well-formed.
10
- */
11
- export declare function validateAcceptanceShape(value: unknown): AcceptanceShapeIssue[];
12
- /** Executes a single probe. Pure aside from its declared filesystem/process/registry effects. */
13
- export declare function runProbe(probe: AcceptanceProbe, workspaceRoot: string, commandRegistry?: CommandRegistry): Promise<ProbeResult>;
14
- export declare function runRfcAcceptanceRun(input: ForgeCommandInput, context: ForgeRuntimeContext): Promise<ForgeCommandResult<RfcAcceptanceRunResult>>;
15
- //# sourceMappingURL=acceptance.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acceptance.d.ts","sourceRoot":"","sources":["../../../os/rfc/acceptance.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAEV,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAkBvF,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,EAAE,CA4F9E;AA0CD,iGAAiG;AACjG,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,eAAe,EACtB,aAAa,EAAE,MAAM,EACrB,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC,WAAW,CAAC,CAsDtB;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAC,CAwFrD"}
@@ -1,310 +0,0 @@
1
- /*
2
- <MODULE_CONTRACT>
3
- <purpose>
4
- RFC-0268: makes RFC acceptance criteria machine-checkable. RFCs may declare a
5
- typed `acceptance:` list of probes in frontmatter; rfc.acceptance.run executes
6
- them and reports pass/fail per probe, so an implementation claim is
7
- reproducible by anyone with one command instead of trusting the implementer's
8
- prose checklist.
9
- </purpose>
10
- <non-goals>
11
- <item>Do not run automatically inside rfc.validate — probes may run builds; on-demand only.</item>
12
- <item>Do not allow arbitrary shell in `run` probes — the command string must start with "werkstatt ".</item>
13
- </non-goals>
14
- </MODULE_CONTRACT>
15
- <CHANGE_SUMMARY>
16
- <item>RFC-0268: initial implementation.</item>
17
- </CHANGE_SUMMARY>
18
- */
19
- import { spawn } from "node:child_process";
20
- import { stat, readFile } from "node:fs/promises";
21
- import path from "node:path";
22
- import { parse as yamlParse } from "yaml";
23
- import { RFC_DIR } from "./types.js";
24
- import { listRfcFiles, readAndParseRfc } from "./frontmatter-io.js";
25
- const RUN_PROBE_ALLOWED_PREFIX = "werkstatt ";
26
- async function loadManifestCommandNames(workspaceRoot) {
27
- const manifestPath = path.join(workspaceRoot, "docs", "command-manifest.generated.yaml");
28
- try {
29
- const raw = await readFile(manifestPath, "utf-8");
30
- const manifest = yamlParse(raw);
31
- return new Set((manifest.commands ?? []).map((c) => c.name));
32
- }
33
- catch {
34
- return new Set();
35
- }
36
- }
37
- const RUN_PROBE_TIMEOUT_MS = 120_000;
38
- /**
39
- * Pure shape validator for a raw `acceptance:` frontmatter value. Returns an
40
- * empty array when the value is absent (acceptance is optional) or well-formed.
41
- */
42
- export function validateAcceptanceShape(value) {
43
- if (value === undefined)
44
- return [];
45
- if (!Array.isArray(value)) {
46
- return [{ index: -1, message: "acceptance must be a list of probe objects" }];
47
- }
48
- const issues = [];
49
- value.forEach((entry, index) => {
50
- if (!entry || typeof entry !== "object") {
51
- issues.push({ index, message: "probe entry must be an object" });
52
- return;
53
- }
54
- const probe = entry["probe"];
55
- switch (probe) {
56
- case "run": {
57
- const command = entry["command"];
58
- const expect = entry["expect"];
59
- if (typeof command !== "string" || !command.startsWith(RUN_PROBE_ALLOWED_PREFIX)) {
60
- issues.push({
61
- index,
62
- message: `probe "run" command must be a string starting with "${RUN_PROBE_ALLOWED_PREFIX}"`,
63
- });
64
- }
65
- if (!expect ||
66
- typeof expect !== "object" ||
67
- typeof expect["exitCode"] !== "number") {
68
- issues.push({ index, message: 'probe "run" requires expect: { exitCode: <number> }' });
69
- }
70
- break;
71
- }
72
- case "file-exists": {
73
- if (typeof entry["path"] !== "string") {
74
- issues.push({ index, message: 'probe "file-exists" requires a string "path"' });
75
- }
76
- break;
77
- }
78
- case "file-contains": {
79
- const p = entry["path"];
80
- const pattern = entry["pattern"];
81
- if (typeof p !== "string")
82
- issues.push({ index, message: 'probe "file-contains" requires a string "path"' });
83
- if (typeof pattern !== "string") {
84
- issues.push({ index, message: 'probe "file-contains" requires a string "pattern"' });
85
- }
86
- break;
87
- }
88
- case "command-registered": {
89
- if (typeof entry["name"] !== "string") {
90
- issues.push({ index, message: 'probe "command-registered" requires a string "name"' });
91
- }
92
- break;
93
- }
94
- case "page": {
95
- const p = entry["path"];
96
- if (typeof p !== "string" || !p.startsWith("/")) {
97
- issues.push({
98
- index,
99
- message: 'probe "page" requires a string "path" starting with "/"',
100
- });
101
- }
102
- const expectStatus = entry["expectStatus"];
103
- if (expectStatus !== undefined && typeof expectStatus !== "number") {
104
- issues.push({ index, message: 'probe "page" expectStatus must be a number if present' });
105
- }
106
- const selector = entry["selector"];
107
- if (selector !== undefined && typeof selector !== "string") {
108
- issues.push({ index, message: 'probe "page" selector must be a string if present' });
109
- }
110
- const textPattern = entry["textPattern"];
111
- if (textPattern !== undefined && typeof textPattern !== "string") {
112
- issues.push({ index, message: 'probe "page" textPattern must be a string if present' });
113
- }
114
- const allowConsoleErrors = entry["allowConsoleErrors"];
115
- if (allowConsoleErrors !== undefined && typeof allowConsoleErrors !== "boolean") {
116
- issues.push({
117
- index,
118
- message: 'probe "page" allowConsoleErrors must be a boolean if present',
119
- });
120
- }
121
- break;
122
- }
123
- default:
124
- issues.push({
125
- index,
126
- message: `unknown probe kind "${String(probe)}" — expected one of: run, file-exists, file-contains, command-registered, page`,
127
- });
128
- }
129
- });
130
- return issues;
131
- }
132
- async function spawnSiteKernel(workspaceRoot, commandLine) {
133
- const args = commandLine
134
- .slice(RUN_PROBE_ALLOWED_PREFIX.length)
135
- .trim()
136
- .split(/\s+/)
137
- .filter(Boolean);
138
- const binPath = path.join(workspaceRoot, "packages", "werkstatt", "bin", "werkstatt.mjs");
139
- return new Promise((resolve) => {
140
- const child = spawn(process.execPath, [binPath, ...args], {
141
- cwd: workspaceRoot,
142
- stdio: "ignore",
143
- });
144
- let settled = false;
145
- const timer = setTimeout(() => {
146
- if (settled)
147
- return;
148
- settled = true;
149
- child.kill();
150
- resolve({ exitCode: null, timedOut: true });
151
- }, RUN_PROBE_TIMEOUT_MS);
152
- timer.unref?.();
153
- child.on("close", (code) => {
154
- if (settled)
155
- return;
156
- settled = true;
157
- clearTimeout(timer);
158
- resolve({ exitCode: code, timedOut: false });
159
- });
160
- child.on("error", () => {
161
- if (settled)
162
- return;
163
- settled = true;
164
- clearTimeout(timer);
165
- resolve({ exitCode: null, timedOut: false });
166
- });
167
- });
168
- }
169
- /** Executes a single probe. Pure aside from its declared filesystem/process/registry effects. */
170
- export async function runProbe(probe, workspaceRoot, commandRegistry) {
171
- switch (probe.probe) {
172
- case "run": {
173
- if (!probe.command.startsWith(RUN_PROBE_ALLOWED_PREFIX)) {
174
- return {
175
- probe,
176
- ok: false,
177
- detail: `rejected: command must start with "${RUN_PROBE_ALLOWED_PREFIX}"`,
178
- };
179
- }
180
- const { exitCode, timedOut } = await spawnSiteKernel(workspaceRoot, probe.command);
181
- if (timedOut) {
182
- return { probe, ok: false, detail: `timed out after ${RUN_PROBE_TIMEOUT_MS}ms` };
183
- }
184
- const ok = exitCode === probe.expect.exitCode;
185
- return { probe, ok, detail: `exitCode=${exitCode} (expected ${probe.expect.exitCode})` };
186
- }
187
- case "file-exists": {
188
- try {
189
- await stat(path.join(workspaceRoot, probe.path));
190
- return { probe, ok: true, detail: "exists" };
191
- }
192
- catch {
193
- return { probe, ok: false, detail: "does not exist" };
194
- }
195
- }
196
- case "file-contains": {
197
- try {
198
- const content = await readFile(path.join(workspaceRoot, probe.path), "utf8");
199
- const re = new RegExp(probe.pattern, "m");
200
- const ok = re.test(content);
201
- return { probe, ok, detail: ok ? "pattern found" : "pattern not found" };
202
- }
203
- catch {
204
- return { probe, ok: false, detail: "file could not be read" };
205
- }
206
- }
207
- case "command-registered": {
208
- const registryNames = new Set((commandRegistry?.listCommands() ?? []).map((c) => c.name));
209
- if (!registryNames.has(probe.name)) {
210
- const manifestNames = await loadManifestCommandNames(workspaceRoot);
211
- for (const name of manifestNames) {
212
- registryNames.add(name);
213
- }
214
- }
215
- const ok = registryNames.has(probe.name);
216
- return { probe, ok, detail: ok ? "registered" : "not registered" };
217
- }
218
- case "page": {
219
- return {
220
- probe,
221
- ok: true,
222
- detail: "page probe skipped — run qa.independent.run against a built dist",
223
- };
224
- }
225
- }
226
- }
227
- export async function runRfcAcceptanceRun(input, context) {
228
- const { workspaceRoot } = context;
229
- const rfcDirPath = path.join(workspaceRoot, RFC_DIR);
230
- const targetId = input.flags["id"];
231
- const targetStatus = input.flags["status"];
232
- if (!targetId && !targetStatus) {
233
- return {
234
- data: { command: "rfc.acceptance.run", status: "pass", diagnostics: [], results: [] },
235
- exitCode: 0,
236
- summary: "rfc.acceptance.run: pass --id <rfc-id> or --status <status> to select target RFC(s)",
237
- };
238
- }
239
- const allFiles = await listRfcFiles(rfcDirPath);
240
- const results = [];
241
- const diagnostics = [];
242
- for (const fileName of allFiles) {
243
- const parsedFile = await readAndParseRfc(rfcDirPath, fileName);
244
- if (!parsedFile)
245
- continue;
246
- if ("error" in parsedFile)
247
- continue;
248
- const fm = parsedFile.parsed.frontmatter;
249
- const rfcId = String(fm["id"] ?? "");
250
- if (targetId && rfcId.toLowerCase() !== targetId.toLowerCase())
251
- continue;
252
- if (targetStatus && String(fm["status"] ?? "") !== targetStatus)
253
- continue;
254
- const acceptance = fm["acceptance"];
255
- const relFile = path.join(RFC_DIR, fileName);
256
- const status = String(fm["status"] ?? "");
257
- if (!Array.isArray(acceptance) || acceptance.length === 0) {
258
- if (status === "accepted" || status === "implemented") {
259
- diagnostics.push({
260
- ruleId: "RFC-ACC-02",
261
- severity: "info",
262
- file: relFile,
263
- message: `${rfcId} (${status}) declares no acceptance probes.`,
264
- });
265
- }
266
- results.push({ rfcId, probeResults: [] });
267
- continue;
268
- }
269
- const probeResults = [];
270
- let pageProbeCount = 0;
271
- for (const raw of acceptance) {
272
- if (raw.probe === "page") {
273
- pageProbeCount++;
274
- probeResults.push({
275
- probe: raw,
276
- ok: true,
277
- detail: "page probe skipped — run qa.independent.run against a built dist",
278
- });
279
- continue;
280
- }
281
- const result = await runProbe(raw, workspaceRoot, context.commandRegistry);
282
- probeResults.push(result);
283
- if (!result.ok) {
284
- diagnostics.push({
285
- ruleId: "RFC-ACC-01",
286
- severity: "error",
287
- file: relFile,
288
- message: `${rfcId}: probe "${raw.probe}" failed — ${result.detail}.`,
289
- });
290
- }
291
- }
292
- if (pageProbeCount > 0) {
293
- diagnostics.push({
294
- ruleId: "RFC-ACC-03",
295
- severity: "info",
296
- file: relFile,
297
- message: `${pageProbeCount} page probe(s) skipped — run \`qa.independent.run --site <app>\` against a built dist.`,
298
- });
299
- }
300
- results.push({ rfcId, probeResults });
301
- }
302
- const failedCount = diagnostics.filter((d) => d.severity === "error").length;
303
- const status = failedCount > 0 ? "fail" : "pass";
304
- return {
305
- data: { command: "rfc.acceptance.run", status, diagnostics, results },
306
- exitCode: failedCount > 0 ? 1 : 0,
307
- summary: `rfc.acceptance.run: ${results.length} RFC(s), ${failedCount} failed probe(s)`,
308
- };
309
- }
310
- //# sourceMappingURL=acceptance.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acceptance.js","sourceRoot":"","sources":["../../../os/rfc/acceptance.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import type { DecisionLogEntry, DecisionLogResult, ConsultedDecision } from "./types.ts";
2
- import type { ForgeCommandInput, ForgeCommandResult, ForgeRuntimeContext } from "../../src/types.ts";
3
- export declare function collectDecisionLog(rfcDirPath: string): Promise<DecisionLogEntry[]>;
4
- export declare function scoreDecisions(title: string, entries: DecisionLogEntry[], limit?: number): ConsultedDecision[];
5
- export declare function runRfcDecisionLogGenerate(input: ForgeCommandInput, context: ForgeRuntimeContext): Promise<ForgeCommandResult<DecisionLogResult>>;
6
- //# sourceMappingURL=decision-log.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decision-log.d.ts","sourceRoot":"","sources":["../../../os/rfc/decision-log.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EACV,gBAAgB,EAEhB,iBAAiB,EACjB,iBAAiB,EAElB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAEV,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AA4B5B,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA2DxF;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,gBAAgB,EAAE,EAC3B,KAAK,SAAI,GACR,iBAAiB,EAAE,CAgCrB;AA6CD,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC,CAmGhD"}
@@ -1,269 +0,0 @@
1
- /*
2
- <MODULE_CONTRACT>
3
- <purpose>
4
- RFC-0329: collect decision log entries from all RFCs, score against
5
- keywords for rfc.create consultation, and generate/validate projections.
6
- </purpose>
7
- <non-goals>
8
- <item>Do not use LLM/embeddings for matching — keyword scoring only.</item>
9
- <item>Do not block rfc.create when matches are found — consultation is informative.</item>
10
- <item>Do not wire generation into build pipelines — on-demand only.</item>
11
- </non-goals>
12
- </MODULE_CONTRACT>
13
- <CHANGE_SUMMARY>
14
- <item>RFC-0329: initial implementation.</item>
15
- </CHANGE_SUMMARY>
16
- */
17
- import { readFile } from "node:fs/promises";
18
- import { join } from "node:path";
19
- import { writeFileAtomic } from "../../src/utils/fs-atomic.js";
20
- import { buildGeneratedHeader } from "../../src/utils/generated-marker.js";
21
- import { stringify as yamlStringify } from "yaml";
22
- import { listRfcFiles, readAndParseRfc } from "./frontmatter-io.js";
23
- import { RFC_DIR } from "./types.js";
24
- const STOPWORDS = new Set(["the", "and", "for", "add", "into", "with", "from", "that"]);
25
- function tokenize(text) {
26
- return text
27
- .toLowerCase()
28
- .split(/[^a-z0-9]+/)
29
- .filter((t) => t.length >= 3 && !STOPWORDS.has(t));
30
- }
31
- function extractSection(body, heading) {
32
- const re = new RegExp(`^##\\s+${heading}\\s*$`, "im");
33
- const match = re.exec(body);
34
- if (!match)
35
- return null;
36
- const start = match.index + match[0].length;
37
- const nextHeading = body.indexOf("\n## ", start);
38
- const sectionText = nextHeading === -1 ? body.slice(start).trim() : body.slice(start, nextHeading).trim();
39
- return sectionText || null;
40
- }
41
- function firstParagraph(text) {
42
- const trimmed = text.trim();
43
- const firstBreak = trimmed.indexOf("\n\n");
44
- return firstBreak === -1 ? trimmed : trimmed.slice(0, firstBreak).trim();
45
- }
46
- export async function collectDecisionLog(rfcDirPath) {
47
- const files = await listRfcFiles(rfcDirPath);
48
- const entries = [];
49
- for (const fileName of files) {
50
- const result = await readAndParseRfc(rfcDirPath, fileName);
51
- if (!result || "error" in result)
52
- continue;
53
- const fm = result.parsed.frontmatter;
54
- const body = result.parsed.body;
55
- const rfcId = String(fm["id"] ?? "");
56
- const title = String(fm["title"] ?? "");
57
- const status = String(fm["status"] ?? "");
58
- const file = join(RFC_DIR, fileName);
59
- if (status === "rejected") {
60
- const decisionSection = extractSection(body, "Decision");
61
- entries.push({
62
- kind: "rejected-rfc",
63
- rfcId,
64
- title,
65
- status,
66
- closedAt: String(fm["closedAt"] ?? "") || undefined,
67
- decisionSummary: decisionSection ? firstParagraph(decisionSection) : undefined,
68
- alternativesText: extractSection(body, "Alternatives considered") ?? undefined,
69
- file,
70
- });
71
- }
72
- else if (status === "superseded") {
73
- const decisionSection = extractSection(body, "Decision");
74
- const supersededBy = fm["supersededBy"];
75
- entries.push({
76
- kind: "superseded-rfc",
77
- rfcId,
78
- title,
79
- status,
80
- closedAt: String(fm["closedAt"] ?? "") || undefined,
81
- supersededBy: Array.isArray(supersededBy) && supersededBy.length > 0
82
- ? String(supersededBy[0])
83
- : undefined,
84
- decisionSummary: decisionSection ? firstParagraph(decisionSection) : undefined,
85
- file,
86
- });
87
- }
88
- const alternativesText = extractSection(body, "Alternatives considered");
89
- if (alternativesText) {
90
- entries.push({
91
- kind: "rejected-alternative",
92
- rfcId,
93
- title,
94
- status,
95
- alternativesText,
96
- file,
97
- });
98
- }
99
- }
100
- entries.sort((a, b) => a.rfcId.localeCompare(b.rfcId));
101
- return entries;
102
- }
103
- export function scoreDecisions(title, entries, limit = 5) {
104
- const titleTokens = tokenize(title);
105
- if (titleTokens.length === 0)
106
- return [];
107
- const scored = [];
108
- for (const entry of entries) {
109
- const entryTitleTokens = tokenize(entry.title);
110
- const entryTextTokens = new Set([
111
- ...entryTitleTokens,
112
- ...tokenize(entry.decisionSummary ?? ""),
113
- ...tokenize(entry.alternativesText ?? ""),
114
- ]);
115
- let score = 0;
116
- for (const token of titleTokens) {
117
- if (entryTitleTokens.includes(token))
118
- score += 3;
119
- if (entryTextTokens.has(token))
120
- score += 1;
121
- }
122
- if (score > 0) {
123
- scored.push({
124
- rfcId: entry.rfcId,
125
- kind: entry.kind,
126
- title: entry.title,
127
- score,
128
- file: entry.file,
129
- });
130
- }
131
- }
132
- scored.sort((a, b) => b.score - a.score || a.rfcId.localeCompare(b.rfcId));
133
- return scored.slice(0, limit);
134
- }
135
- function renderMarkdown(entries) {
136
- const lines = [
137
- buildGeneratedHeader({
138
- ownerCommand: "rfc.decision-log.generate",
139
- filePath: "docs/rfcs/decision-log.generated.md",
140
- }).trimEnd(),
141
- "",
142
- ];
143
- const groups = {
144
- "rejected-rfc": [],
145
- "superseded-rfc": [],
146
- "rejected-alternative": [],
147
- };
148
- for (const e of entries)
149
- groups[e.kind].push(e);
150
- lines.push("# RFC Decision Log", "");
151
- lines.push(`> Generated projection of all rejected/superseded RFCs and rejected alternatives.`);
152
- lines.push(`> Do not edit — run \`site-kernel run rfc.decision-log.generate\` to regenerate.`, "");
153
- for (const kind of Object.keys(groups)) {
154
- const groupEntries = groups[kind];
155
- if (groupEntries.length === 0)
156
- continue;
157
- lines.push(`## ${kind} (${groupEntries.length})`, "");
158
- for (const e of groupEntries) {
159
- lines.push(`### ${e.rfcId}: ${e.title}`, "");
160
- lines.push(`- **Status:** ${e.status}`);
161
- if (e.closedAt)
162
- lines.push(`- **Closed:** ${e.closedAt}`);
163
- if (e.supersededBy)
164
- lines.push(`- **Superseded by:** ${e.supersededBy}`);
165
- if (e.decisionSummary)
166
- lines.push(`- **Decision:** ${e.decisionSummary}`);
167
- if (e.alternativesText) {
168
- lines.push("- **Alternatives considered:**", "");
169
- lines.push(e.alternativesText);
170
- }
171
- lines.push("");
172
- }
173
- }
174
- return `${lines.join("\n")}\n`;
175
- }
176
- export async function runRfcDecisionLogGenerate(input, context) {
177
- const { workspaceRoot, logger, outputFormat } = context;
178
- const checkMode = Boolean(input.flags["check"]);
179
- const rfcDirPath = join(workspaceRoot, RFC_DIR);
180
- const entries = await collectDecisionLog(rfcDirPath);
181
- const jsonRelPath = join(RFC_DIR, "decision-log.generated.yaml");
182
- const mdRelPath = join(RFC_DIR, "decision-log.generated.md");
183
- if (checkMode) {
184
- const diagnostics = [];
185
- let drift = false;
186
- try {
187
- const existingJson = await readFile(join(workspaceRoot, jsonRelPath), "utf-8");
188
- const expectedJson = `${buildGeneratedHeader({ filePath: jsonRelPath, ownerCommand: "rfc.decision-log.generate" })}${yamlStringify({ command: "rfc.decision-log.generate", status: "ok", count: entries.length, entries })}\n`;
189
- if (existingJson !== expectedJson) {
190
- drift = true;
191
- diagnostics.push({
192
- ruleId: "DECISION-LOG-DRIFT",
193
- severity: "error",
194
- file: jsonRelPath,
195
- message: "JSON projection drifts from recomputed content.",
196
- });
197
- }
198
- }
199
- catch {
200
- drift = true;
201
- diagnostics.push({
202
- ruleId: "DECISION-LOG-MISSING",
203
- severity: "error",
204
- file: jsonRelPath,
205
- message: `${jsonRelPath} does not exist — run without --check first.`,
206
- });
207
- }
208
- try {
209
- const existingMd = await readFile(join(workspaceRoot, mdRelPath), "utf-8");
210
- const expectedMd = renderMarkdown(entries);
211
- if (existingMd !== expectedMd) {
212
- drift = true;
213
- diagnostics.push({
214
- ruleId: "DECISION-LOG-DRIFT",
215
- severity: "error",
216
- file: mdRelPath,
217
- message: "Markdown projection drifts from recomputed content.",
218
- });
219
- }
220
- }
221
- catch {
222
- drift = true;
223
- diagnostics.push({
224
- ruleId: "DECISION-LOG-MISSING",
225
- severity: "error",
226
- file: mdRelPath,
227
- message: `${mdRelPath} does not exist — run without --check first.`,
228
- });
229
- }
230
- if (outputFormat === "pretty") {
231
- if (drift) {
232
- for (const d of diagnostics)
233
- logger.error(`[${d.ruleId}] ${d.message}`);
234
- }
235
- else {
236
- logger.success("Decision log projections are up to date.");
237
- }
238
- }
239
- return {
240
- data: {
241
- command: "rfc.decision-log.generate",
242
- status: drift ? "drift" : "ok",
243
- count: entries.length,
244
- entries,
245
- },
246
- exitCode: drift ? 1 : 0,
247
- summary: `rfc.decision-log.generate --check: ${drift ? "drift detected" : "up to date"} (${entries.length} entries)`,
248
- };
249
- }
250
- const jsonContent = `${buildGeneratedHeader({ filePath: jsonRelPath, ownerCommand: "rfc.decision-log.generate" })}${yamlStringify({ command: "rfc.decision-log.generate", status: "ok", count: entries.length, entries })}\n`;
251
- const mdContent = renderMarkdown(entries);
252
- await writeFileAtomic(join(workspaceRoot, jsonRelPath), jsonContent);
253
- await writeFileAtomic(join(workspaceRoot, mdRelPath), mdContent);
254
- if (outputFormat === "pretty") {
255
- logger.success(`Wrote ${jsonRelPath} and ${mdRelPath} (${entries.length} entries)`);
256
- }
257
- return {
258
- data: {
259
- command: "rfc.decision-log.generate",
260
- status: "ok",
261
- count: entries.length,
262
- entries,
263
- written: [jsonRelPath, mdRelPath],
264
- },
265
- exitCode: 0,
266
- summary: `rfc.decision-log.generate: wrote ${entries.length} entries to JSON + Markdown`,
267
- };
268
- }
269
- //# sourceMappingURL=decision-log.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decision-log.js","sourceRoot":"","sources":["../../../os/rfc/decision-log.ts"],"names":[],"mappings":"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"}