@warpgogol/forge 2.17.0 → 2.20.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 (718) hide show
  1. package/README.md +11 -0
  2. package/os/core/core.module.ts +1 -1
  3. package/os/spec/live-spec-merge.test.ts +76 -0
  4. package/os/spec/live-spec-merge.ts +14 -49
  5. package/package.json +1 -1
  6. package/profiles/godot-csharp.yaml +4 -4
  7. package/profiles/typescript-turborepo.yaml +222 -0
  8. package/src/tests/profile-schema.test.ts +1 -1
  9. package/src/types/werkstatt-engine-shims.d.ts +11 -0
  10. package/src/types/werkstatt-shared-shims.d.ts +71 -0
  11. package/dist/bin/cli.d.ts +0 -3
  12. package/dist/bin/cli.d.ts.map +0 -1
  13. package/dist/bin/cli.js +0 -291
  14. package/dist/bin/cli.js.map +0 -1
  15. package/dist/os/adr/adr.module.d.ts +0 -3
  16. package/dist/os/adr/adr.module.d.ts.map +0 -1
  17. package/dist/os/adr/adr.module.js +0 -146
  18. package/dist/os/adr/adr.module.js.map +0 -1
  19. package/dist/os/adr/frontmatter-io.d.ts +0 -12
  20. package/dist/os/adr/frontmatter-io.d.ts.map +0 -1
  21. package/dist/os/adr/frontmatter-io.js +0 -67
  22. package/dist/os/adr/frontmatter-io.js.map +0 -1
  23. package/dist/os/adr/handlers/archive.d.ts +0 -24
  24. package/dist/os/adr/handlers/archive.d.ts.map +0 -1
  25. package/dist/os/adr/handlers/archive.js +0 -194
  26. package/dist/os/adr/handlers/archive.js.map +0 -1
  27. package/dist/os/adr/handlers/implement-stamp.d.ts +0 -4
  28. package/dist/os/adr/handlers/implement-stamp.d.ts.map +0 -1
  29. package/dist/os/adr/handlers/implement-stamp.js +0 -264
  30. package/dist/os/adr/handlers/implement-stamp.js.map +0 -1
  31. package/dist/os/adr/handlers/list-create.d.ts +0 -5
  32. package/dist/os/adr/handlers/list-create.d.ts.map +0 -1
  33. package/dist/os/adr/handlers/list-create.js +0 -201
  34. package/dist/os/adr/handlers/list-create.js.map +0 -1
  35. package/dist/os/adr/handlers/validate.d.ts +0 -4
  36. package/dist/os/adr/handlers/validate.d.ts.map +0 -1
  37. package/dist/os/adr/handlers/validate.js +0 -279
  38. package/dist/os/adr/handlers/validate.js.map +0 -1
  39. package/dist/os/adr/index.d.ts +0 -8
  40. package/dist/os/adr/index.d.ts.map +0 -1
  41. package/dist/os/adr/index.js +0 -18
  42. package/dist/os/adr/index.js.map +0 -1
  43. package/dist/os/adr/types.d.ts +0 -76
  44. package/dist/os/adr/types.d.ts.map +0 -1
  45. package/dist/os/adr/types.js +0 -56
  46. package/dist/os/adr/types.js.map +0 -1
  47. package/dist/os/audit/audit.module.d.ts +0 -3
  48. package/dist/os/audit/audit.module.d.ts.map +0 -1
  49. package/dist/os/audit/audit.module.js +0 -45
  50. package/dist/os/audit/audit.module.js.map +0 -1
  51. package/dist/os/audit/frontmatter-io.d.ts +0 -12
  52. package/dist/os/audit/frontmatter-io.d.ts.map +0 -1
  53. package/dist/os/audit/frontmatter-io.js +0 -71
  54. package/dist/os/audit/frontmatter-io.js.map +0 -1
  55. package/dist/os/audit/handlers/archive.d.ts +0 -4
  56. package/dist/os/audit/handlers/archive.d.ts.map +0 -1
  57. package/dist/os/audit/handlers/archive.js +0 -207
  58. package/dist/os/audit/handlers/archive.js.map +0 -1
  59. package/dist/os/audit/index.d.ts +0 -6
  60. package/dist/os/audit/index.d.ts.map +0 -1
  61. package/dist/os/audit/index.js +0 -16
  62. package/dist/os/audit/index.js.map +0 -1
  63. package/dist/os/audit/types.d.ts +0 -12
  64. package/dist/os/audit/types.d.ts.map +0 -1
  65. package/dist/os/audit/types.js +0 -17
  66. package/dist/os/audit/types.js.map +0 -1
  67. package/dist/os/compass/compass.module.d.ts +0 -3
  68. package/dist/os/compass/compass.module.d.ts.map +0 -1
  69. package/dist/os/compass/compass.module.js +0 -183
  70. package/dist/os/compass/compass.module.js.map +0 -1
  71. package/dist/os/compass/handlers/compass-audit-handler.d.ts +0 -36
  72. package/dist/os/compass/handlers/compass-audit-handler.d.ts.map +0 -1
  73. package/dist/os/compass/handlers/compass-audit-handler.js +0 -260
  74. package/dist/os/compass/handlers/compass-audit-handler.js.map +0 -1
  75. package/dist/os/compass/handlers/compass-change-summary-handler.d.ts +0 -19
  76. package/dist/os/compass/handlers/compass-change-summary-handler.d.ts.map +0 -1
  77. package/dist/os/compass/handlers/compass-change-summary-handler.js +0 -222
  78. package/dist/os/compass/handlers/compass-change-summary-handler.js.map +0 -1
  79. package/dist/os/compass/handlers/compass-inventory-handler.d.ts +0 -28
  80. package/dist/os/compass/handlers/compass-inventory-handler.d.ts.map +0 -1
  81. package/dist/os/compass/handlers/compass-inventory-handler.js +0 -377
  82. package/dist/os/compass/handlers/compass-inventory-handler.js.map +0 -1
  83. package/dist/os/compass/handlers/compass-inventory.d.ts +0 -30
  84. package/dist/os/compass/handlers/compass-inventory.d.ts.map +0 -1
  85. package/dist/os/compass/handlers/compass-inventory.js +0 -462
  86. package/dist/os/compass/handlers/compass-inventory.js.map +0 -1
  87. package/dist/os/compass/handlers/git-revision.d.ts +0 -8
  88. package/dist/os/compass/handlers/git-revision.d.ts.map +0 -1
  89. package/dist/os/compass/handlers/git-revision.js +0 -99
  90. package/dist/os/compass/handlers/git-revision.js.map +0 -1
  91. package/dist/os/compass/handlers/resolve-scan-root.d.ts +0 -3
  92. package/dist/os/compass/handlers/resolve-scan-root.d.ts.map +0 -1
  93. package/dist/os/compass/handlers/resolve-scan-root.js +0 -57
  94. package/dist/os/compass/handlers/resolve-scan-root.js.map +0 -1
  95. package/dist/os/compass/index.d.ts +0 -8
  96. package/dist/os/compass/index.d.ts.map +0 -1
  97. package/dist/os/compass/index.js +0 -19
  98. package/dist/os/compass/index.js.map +0 -1
  99. package/dist/os/core/core.module.d.ts +0 -3
  100. package/dist/os/core/core.module.d.ts.map +0 -1
  101. package/dist/os/core/core.module.js +0 -836
  102. package/dist/os/core/core.module.js.map +0 -1
  103. package/dist/os/core/handlers/assets-check.d.ts +0 -19
  104. package/dist/os/core/handlers/assets-check.d.ts.map +0 -1
  105. package/dist/os/core/handlers/assets-check.js +0 -89
  106. package/dist/os/core/handlers/assets-check.js.map +0 -1
  107. package/dist/os/core/handlers/assets-helpers.d.ts +0 -28
  108. package/dist/os/core/handlers/assets-helpers.d.ts.map +0 -1
  109. package/dist/os/core/handlers/assets-helpers.js +0 -128
  110. package/dist/os/core/handlers/assets-helpers.js.map +0 -1
  111. package/dist/os/core/handlers/assets-list.d.ts +0 -9
  112. package/dist/os/core/handlers/assets-list.d.ts.map +0 -1
  113. package/dist/os/core/handlers/assets-list.js +0 -72
  114. package/dist/os/core/handlers/assets-list.js.map +0 -1
  115. package/dist/os/core/handlers/build.d.ts +0 -16
  116. package/dist/os/core/handlers/build.d.ts.map +0 -1
  117. package/dist/os/core/handlers/build.js +0 -123
  118. package/dist/os/core/handlers/build.js.map +0 -1
  119. package/dist/os/core/handlers/determinism-check.d.ts +0 -20
  120. package/dist/os/core/handlers/determinism-check.d.ts.map +0 -1
  121. package/dist/os/core/handlers/determinism-check.js +0 -289
  122. package/dist/os/core/handlers/determinism-check.js.map +0 -1
  123. package/dist/os/core/handlers/dev.d.ts +0 -10
  124. package/dist/os/core/handlers/dev.d.ts.map +0 -1
  125. package/dist/os/core/handlers/dev.js +0 -102
  126. package/dist/os/core/handlers/dev.js.map +0 -1
  127. package/dist/os/core/handlers/forge-autonomy-validate.d.ts +0 -18
  128. package/dist/os/core/handlers/forge-autonomy-validate.d.ts.map +0 -1
  129. package/dist/os/core/handlers/forge-autonomy-validate.js +0 -115
  130. package/dist/os/core/handlers/forge-autonomy-validate.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 -204
  134. package/dist/os/core/handlers/knowledge-compact.js.map +0 -1
  135. package/dist/os/core/handlers/package-health.d.ts +0 -17
  136. package/dist/os/core/handlers/package-health.d.ts.map +0 -1
  137. package/dist/os/core/handlers/package-health.js +0 -196
  138. package/dist/os/core/handlers/package-health.js.map +0 -1
  139. package/dist/os/core/handlers/pinned-check.d.ts +0 -49
  140. package/dist/os/core/handlers/pinned-check.d.ts.map +0 -1
  141. package/dist/os/core/handlers/pinned-check.js +0 -159
  142. package/dist/os/core/handlers/pinned-check.js.map +0 -1
  143. package/dist/os/core/handlers/pinned-init.d.ts +0 -19
  144. package/dist/os/core/handlers/pinned-init.d.ts.map +0 -1
  145. package/dist/os/core/handlers/pinned-init.js +0 -283
  146. package/dist/os/core/handlers/pinned-init.js.map +0 -1
  147. package/dist/os/core/handlers/pinned-types.d.ts +0 -29
  148. package/dist/os/core/handlers/pinned-types.d.ts.map +0 -1
  149. package/dist/os/core/handlers/pinned-types.js +0 -16
  150. package/dist/os/core/handlers/pinned-types.js.map +0 -1
  151. package/dist/os/core/handlers/pinned-validate.d.ts +0 -4
  152. package/dist/os/core/handlers/pinned-validate.d.ts.map +0 -1
  153. package/dist/os/core/handlers/pinned-validate.js +0 -248
  154. package/dist/os/core/handlers/pinned-validate.js.map +0 -1
  155. package/dist/os/core/handlers/profile-resolve.d.ts +0 -13
  156. package/dist/os/core/handlers/profile-resolve.d.ts.map +0 -1
  157. package/dist/os/core/handlers/profile-resolve.js +0 -65
  158. package/dist/os/core/handlers/profile-resolve.js.map +0 -1
  159. package/dist/os/core/handlers/release-prepare.d.ts +0 -25
  160. package/dist/os/core/handlers/release-prepare.d.ts.map +0 -1
  161. package/dist/os/core/handlers/release-prepare.js +0 -228
  162. package/dist/os/core/handlers/release-prepare.js.map +0 -1
  163. package/dist/os/core/handlers/release-publish.d.ts +0 -13
  164. package/dist/os/core/handlers/release-publish.d.ts.map +0 -1
  165. package/dist/os/core/handlers/release-publish.js +0 -173
  166. package/dist/os/core/handlers/release-publish.js.map +0 -1
  167. package/dist/os/core/handlers/validate.d.ts +0 -26
  168. package/dist/os/core/handlers/validate.d.ts.map +0 -1
  169. package/dist/os/core/handlers/validate.js +0 -208
  170. package/dist/os/core/handlers/validate.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 -83
  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 -141
  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 -64
  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 -97
  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 -45
  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 -34
  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 -84
  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 -45
  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/plugin/plugin.module.d.ts +0 -25
  260. package/dist/os/plugin/plugin.module.d.ts.map +0 -1
  261. package/dist/os/plugin/plugin.module.js +0 -208
  262. package/dist/os/plugin/plugin.module.js.map +0 -1
  263. package/dist/os/program/discovery.d.ts +0 -61
  264. package/dist/os/program/discovery.d.ts.map +0 -1
  265. package/dist/os/program/discovery.js +0 -236
  266. package/dist/os/program/discovery.js.map +0 -1
  267. package/dist/os/program/handlers/complete.d.ts +0 -12
  268. package/dist/os/program/handlers/complete.d.ts.map +0 -1
  269. package/dist/os/program/handlers/complete.js +0 -362
  270. package/dist/os/program/handlers/complete.js.map +0 -1
  271. package/dist/os/program/handlers/lease.d.ts +0 -13
  272. package/dist/os/program/handlers/lease.d.ts.map +0 -1
  273. package/dist/os/program/handlers/lease.js +0 -328
  274. package/dist/os/program/handlers/lease.js.map +0 -1
  275. package/dist/os/program/handlers/seal.d.ts +0 -12
  276. package/dist/os/program/handlers/seal.d.ts.map +0 -1
  277. package/dist/os/program/handlers/seal.js +0 -277
  278. package/dist/os/program/handlers/seal.js.map +0 -1
  279. package/dist/os/program/handlers/validate.d.ts +0 -14
  280. package/dist/os/program/handlers/validate.d.ts.map +0 -1
  281. package/dist/os/program/handlers/validate.js +0 -170
  282. package/dist/os/program/handlers/validate.js.map +0 -1
  283. package/dist/os/program/lease.d.ts +0 -39
  284. package/dist/os/program/lease.d.ts.map +0 -1
  285. package/dist/os/program/lease.js +0 -129
  286. package/dist/os/program/lease.js.map +0 -1
  287. package/dist/os/program/program.module.d.ts +0 -3
  288. package/dist/os/program/program.module.d.ts.map +0 -1
  289. package/dist/os/program/program.module.js +0 -202
  290. package/dist/os/program/program.module.js.map +0 -1
  291. package/dist/os/program/schemas.d.ts +0 -225
  292. package/dist/os/program/schemas.d.ts.map +0 -1
  293. package/dist/os/program/schemas.js +0 -174
  294. package/dist/os/program/schemas.js.map +0 -1
  295. package/dist/os/program/state.d.ts +0 -38
  296. package/dist/os/program/state.d.ts.map +0 -1
  297. package/dist/os/program/state.js +0 -189
  298. package/dist/os/program/state.js.map +0 -1
  299. package/dist/os/rfc/acceptance.d.ts +0 -15
  300. package/dist/os/rfc/acceptance.d.ts.map +0 -1
  301. package/dist/os/rfc/acceptance.js +0 -318
  302. package/dist/os/rfc/acceptance.js.map +0 -1
  303. package/dist/os/rfc/decision-log.d.ts +0 -6
  304. package/dist/os/rfc/decision-log.d.ts.map +0 -1
  305. package/dist/os/rfc/decision-log.js +0 -269
  306. package/dist/os/rfc/decision-log.js.map +0 -1
  307. package/dist/os/rfc/dna-trace.d.ts +0 -27
  308. package/dist/os/rfc/dna-trace.d.ts.map +0 -1
  309. package/dist/os/rfc/dna-trace.js +0 -214
  310. package/dist/os/rfc/dna-trace.js.map +0 -1
  311. package/dist/os/rfc/frontmatter-io.d.ts +0 -18
  312. package/dist/os/rfc/frontmatter-io.d.ts.map +0 -1
  313. package/dist/os/rfc/frontmatter-io.js +0 -110
  314. package/dist/os/rfc/frontmatter-io.js.map +0 -1
  315. package/dist/os/rfc/handlers/archive.d.ts +0 -25
  316. package/dist/os/rfc/handlers/archive.d.ts.map +0 -1
  317. package/dist/os/rfc/handlers/archive.js +0 -247
  318. package/dist/os/rfc/handlers/archive.js.map +0 -1
  319. package/dist/os/rfc/handlers/check.d.ts +0 -4
  320. package/dist/os/rfc/handlers/check.d.ts.map +0 -1
  321. package/dist/os/rfc/handlers/check.js +0 -203
  322. package/dist/os/rfc/handlers/check.js.map +0 -1
  323. package/dist/os/rfc/handlers/implement-stamp.d.ts +0 -4
  324. package/dist/os/rfc/handlers/implement-stamp.d.ts.map +0 -1
  325. package/dist/os/rfc/handlers/implement-stamp.js +0 -426
  326. package/dist/os/rfc/handlers/implement-stamp.js.map +0 -1
  327. package/dist/os/rfc/handlers/index-graph.d.ts +0 -13
  328. package/dist/os/rfc/handlers/index-graph.d.ts.map +0 -1
  329. package/dist/os/rfc/handlers/index-graph.js +0 -192
  330. package/dist/os/rfc/handlers/index-graph.js.map +0 -1
  331. package/dist/os/rfc/handlers/lifecycle.d.ts +0 -13
  332. package/dist/os/rfc/handlers/lifecycle.d.ts.map +0 -1
  333. package/dist/os/rfc/handlers/lifecycle.js +0 -155
  334. package/dist/os/rfc/handlers/lifecycle.js.map +0 -1
  335. package/dist/os/rfc/handlers/list-create.d.ts +0 -6
  336. package/dist/os/rfc/handlers/list-create.d.ts.map +0 -1
  337. package/dist/os/rfc/handlers/list-create.js +0 -260
  338. package/dist/os/rfc/handlers/list-create.js.map +0 -1
  339. package/dist/os/rfc/handlers/pipeline-status.d.ts +0 -26
  340. package/dist/os/rfc/handlers/pipeline-status.d.ts.map +0 -1
  341. package/dist/os/rfc/handlers/pipeline-status.js +0 -124
  342. package/dist/os/rfc/handlers/pipeline-status.js.map +0 -1
  343. package/dist/os/rfc/handlers/shared.d.ts +0 -22
  344. package/dist/os/rfc/handlers/shared.d.ts.map +0 -1
  345. package/dist/os/rfc/handlers/shared.js +0 -105
  346. package/dist/os/rfc/handlers/shared.js.map +0 -1
  347. package/dist/os/rfc/handlers/supersede-propose.d.ts +0 -4
  348. package/dist/os/rfc/handlers/supersede-propose.d.ts.map +0 -1
  349. package/dist/os/rfc/handlers/supersede-propose.js +0 -203
  350. package/dist/os/rfc/handlers/supersede-propose.js.map +0 -1
  351. package/dist/os/rfc/handlers/validate-rules.d.ts +0 -32
  352. package/dist/os/rfc/handlers/validate-rules.d.ts.map +0 -1
  353. package/dist/os/rfc/handlers/validate-rules.js +0 -590
  354. package/dist/os/rfc/handlers/validate-rules.js.map +0 -1
  355. package/dist/os/rfc/handlers/validate.d.ts +0 -4
  356. package/dist/os/rfc/handlers/validate.d.ts.map +0 -1
  357. package/dist/os/rfc/handlers/validate.js +0 -122
  358. package/dist/os/rfc/handlers/validate.js.map +0 -1
  359. package/dist/os/rfc/handlers.d.ts +0 -7
  360. package/dist/os/rfc/handlers.d.ts.map +0 -1
  361. package/dist/os/rfc/handlers.js +0 -19
  362. package/dist/os/rfc/handlers.js.map +0 -1
  363. package/dist/os/rfc/index.d.ts +0 -18
  364. package/dist/os/rfc/index.d.ts.map +0 -1
  365. package/dist/os/rfc/index.js +0 -24
  366. package/dist/os/rfc/index.js.map +0 -1
  367. package/dist/os/rfc/rfc.module.d.ts +0 -3
  368. package/dist/os/rfc/rfc.module.d.ts.map +0 -1
  369. package/dist/os/rfc/rfc.module.js +0 -367
  370. package/dist/os/rfc/rfc.module.js.map +0 -1
  371. package/dist/os/rfc/types.d.ts +0 -483
  372. package/dist/os/rfc/types.d.ts.map +0 -1
  373. package/dist/os/rfc/types.js +0 -100
  374. package/dist/os/rfc/types.js.map +0 -1
  375. package/dist/os/rfc/verification-evidence.d.ts +0 -8
  376. package/dist/os/rfc/verification-evidence.d.ts.map +0 -1
  377. package/dist/os/rfc/verification-evidence.js +0 -184
  378. package/dist/os/rfc/verification-evidence.js.map +0 -1
  379. package/dist/os/session/atif-parser.d.ts +0 -29
  380. package/dist/os/session/atif-parser.d.ts.map +0 -1
  381. package/dist/os/session/atif-parser.js +0 -140
  382. package/dist/os/session/atif-parser.js.map +0 -1
  383. package/dist/os/session/frontmatter-io.d.ts +0 -31
  384. package/dist/os/session/frontmatter-io.d.ts.map +0 -1
  385. package/dist/os/session/frontmatter-io.js +0 -146
  386. package/dist/os/session/frontmatter-io.js.map +0 -1
  387. package/dist/os/session/handlers/archive.d.ts +0 -4
  388. package/dist/os/session/handlers/archive.d.ts.map +0 -1
  389. package/dist/os/session/handlers/archive.js +0 -241
  390. package/dist/os/session/handlers/archive.js.map +0 -1
  391. package/dist/os/session/handlers/list.d.ts +0 -4
  392. package/dist/os/session/handlers/list.d.ts.map +0 -1
  393. package/dist/os/session/handlers/list.js +0 -147
  394. package/dist/os/session/handlers/list.js.map +0 -1
  395. package/dist/os/session/handlers/save.d.ts +0 -6
  396. package/dist/os/session/handlers/save.d.ts.map +0 -1
  397. package/dist/os/session/handlers/save.js +0 -297
  398. package/dist/os/session/handlers/save.js.map +0 -1
  399. package/dist/os/session/handlers/validate.d.ts +0 -4
  400. package/dist/os/session/handlers/validate.d.ts.map +0 -1
  401. package/dist/os/session/handlers/validate.js +0 -224
  402. package/dist/os/session/handlers/validate.js.map +0 -1
  403. package/dist/os/session/index.d.ts +0 -9
  404. package/dist/os/session/index.d.ts.map +0 -1
  405. package/dist/os/session/index.js +0 -20
  406. package/dist/os/session/index.js.map +0 -1
  407. package/dist/os/session/session.module.d.ts +0 -3
  408. package/dist/os/session/session.module.d.ts.map +0 -1
  409. package/dist/os/session/session.module.js +0 -116
  410. package/dist/os/session/session.module.js.map +0 -1
  411. package/dist/os/session/types.d.ts +0 -131
  412. package/dist/os/session/types.d.ts.map +0 -1
  413. package/dist/os/session/types.js +0 -59
  414. package/dist/os/session/types.js.map +0 -1
  415. package/dist/os/spec/live-spec-list.d.ts +0 -4
  416. package/dist/os/spec/live-spec-list.d.ts.map +0 -1
  417. package/dist/os/spec/live-spec-list.js +0 -72
  418. package/dist/os/spec/live-spec-list.js.map +0 -1
  419. package/dist/os/spec/live-spec-merge.d.ts +0 -4
  420. package/dist/os/spec/live-spec-merge.d.ts.map +0 -1
  421. package/dist/os/spec/live-spec-merge.js +0 -345
  422. package/dist/os/spec/live-spec-merge.js.map +0 -1
  423. package/dist/os/spec/live-spec-show.d.ts +0 -4
  424. package/dist/os/spec/live-spec-show.d.ts.map +0 -1
  425. package/dist/os/spec/live-spec-show.js +0 -105
  426. package/dist/os/spec/live-spec-show.js.map +0 -1
  427. package/dist/os/spec/live-spec-types.d.ts +0 -71
  428. package/dist/os/spec/live-spec-types.d.ts.map +0 -1
  429. package/dist/os/spec/live-spec-types.js +0 -14
  430. package/dist/os/spec/live-spec-types.js.map +0 -1
  431. package/dist/os/spec/live-spec-validate.d.ts +0 -4
  432. package/dist/os/spec/live-spec-validate.d.ts.map +0 -1
  433. package/dist/os/spec/live-spec-validate.js +0 -140
  434. package/dist/os/spec/live-spec-validate.js.map +0 -1
  435. package/dist/os/spec/spec-materialize.d.ts +0 -21
  436. package/dist/os/spec/spec-materialize.d.ts.map +0 -1
  437. package/dist/os/spec/spec-materialize.js +0 -342
  438. package/dist/os/spec/spec-materialize.js.map +0 -1
  439. package/dist/os/spec/spec-schema.d.ts +0 -126
  440. package/dist/os/spec/spec-schema.d.ts.map +0 -1
  441. package/dist/os/spec/spec-schema.js +0 -118
  442. package/dist/os/spec/spec-schema.js.map +0 -1
  443. package/dist/os/spec/spec-status.d.ts +0 -33
  444. package/dist/os/spec/spec-status.d.ts.map +0 -1
  445. package/dist/os/spec/spec-status.js +0 -228
  446. package/dist/os/spec/spec-status.js.map +0 -1
  447. package/dist/os/spec/spec-validate.d.ts +0 -4
  448. package/dist/os/spec/spec-validate.d.ts.map +0 -1
  449. package/dist/os/spec/spec-validate.js +0 -435
  450. package/dist/os/spec/spec-validate.js.map +0 -1
  451. package/dist/os/spec/spec.module.d.ts +0 -3
  452. package/dist/os/spec/spec.module.d.ts.map +0 -1
  453. package/dist/os/spec/spec.module.js +0 -120
  454. package/dist/os/spec/spec.module.js.map +0 -1
  455. package/dist/os/werkstatt/handlers/lock.d.ts +0 -10
  456. package/dist/os/werkstatt/handlers/lock.d.ts.map +0 -1
  457. package/dist/os/werkstatt/handlers/lock.js +0 -153
  458. package/dist/os/werkstatt/handlers/lock.js.map +0 -1
  459. package/dist/os/werkstatt/handlers/schema.d.ts +0 -33
  460. package/dist/os/werkstatt/handlers/schema.d.ts.map +0 -1
  461. package/dist/os/werkstatt/handlers/schema.js +0 -42
  462. package/dist/os/werkstatt/handlers/schema.js.map +0 -1
  463. package/dist/os/werkstatt/handlers/werkstatt-lock-recover.d.ts +0 -15
  464. package/dist/os/werkstatt/handlers/werkstatt-lock-recover.d.ts.map +0 -1
  465. package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js +0 -152
  466. package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js.map +0 -1
  467. package/dist/os/werkstatt/handlers/werkstatt-lock-status.d.ts +0 -18
  468. package/dist/os/werkstatt/handlers/werkstatt-lock-status.d.ts.map +0 -1
  469. package/dist/os/werkstatt/handlers/werkstatt-lock-status.js +0 -51
  470. package/dist/os/werkstatt/handlers/werkstatt-lock-status.js.map +0 -1
  471. package/dist/os/werkstatt/handlers/werkstatt-operation-validate.d.ts +0 -11
  472. package/dist/os/werkstatt/handlers/werkstatt-operation-validate.d.ts.map +0 -1
  473. package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js +0 -79
  474. package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js.map +0 -1
  475. package/dist/os/werkstatt/handlers/workspace-deps.d.ts +0 -12
  476. package/dist/os/werkstatt/handlers/workspace-deps.d.ts.map +0 -1
  477. package/dist/os/werkstatt/handlers/workspace-deps.js +0 -42
  478. package/dist/os/werkstatt/handlers/workspace-deps.js.map +0 -1
  479. package/dist/os/werkstatt/index.d.ts +0 -7
  480. package/dist/os/werkstatt/index.d.ts.map +0 -1
  481. package/dist/os/werkstatt/index.js +0 -18
  482. package/dist/os/werkstatt/index.js.map +0 -1
  483. package/dist/os/werkstatt/werkstatt.module.d.ts +0 -3
  484. package/dist/os/werkstatt/werkstatt.module.d.ts.map +0 -1
  485. package/dist/os/werkstatt/werkstatt.module.js +0 -59
  486. package/dist/os/werkstatt/werkstatt.module.js.map +0 -1
  487. package/dist/os/workflow/handlers.d.ts +0 -12
  488. package/dist/os/workflow/handlers.d.ts.map +0 -1
  489. package/dist/os/workflow/handlers.js +0 -262
  490. package/dist/os/workflow/handlers.js.map +0 -1
  491. package/dist/os/workflow/index.d.ts +0 -4
  492. package/dist/os/workflow/index.d.ts.map +0 -1
  493. package/dist/os/workflow/index.js +0 -18
  494. package/dist/os/workflow/index.js.map +0 -1
  495. package/dist/os/workflow/types.d.ts +0 -69
  496. package/dist/os/workflow/types.d.ts.map +0 -1
  497. package/dist/os/workflow/types.js +0 -23
  498. package/dist/os/workflow/types.js.map +0 -1
  499. package/dist/os/workflow/workflow.module.d.ts +0 -3
  500. package/dist/os/workflow/workflow.module.d.ts.map +0 -1
  501. package/dist/os/workflow/workflow.module.js +0 -49
  502. package/dist/os/workflow/workflow.module.js.map +0 -1
  503. package/dist/src/cli-output.d.ts +0 -5
  504. package/dist/src/cli-output.d.ts.map +0 -1
  505. package/dist/src/cli-output.js +0 -53
  506. package/dist/src/cli-output.js.map +0 -1
  507. package/dist/src/compass/contract-registry.d.ts +0 -7
  508. package/dist/src/compass/contract-registry.d.ts.map +0 -1
  509. package/dist/src/compass/contract-registry.js +0 -93
  510. package/dist/src/compass/contract-registry.js.map +0 -1
  511. package/dist/src/compass/types.d.ts +0 -28
  512. package/dist/src/compass/types.d.ts.map +0 -1
  513. package/dist/src/compass/types.js +0 -14
  514. package/dist/src/compass/types.js.map +0 -1
  515. package/dist/src/config/forge-config.d.ts +0 -242
  516. package/dist/src/config/forge-config.d.ts.map +0 -1
  517. package/dist/src/config/forge-config.js +0 -363
  518. package/dist/src/config/forge-config.js.map +0 -1
  519. package/dist/src/forge-module.d.ts +0 -17
  520. package/dist/src/forge-module.d.ts.map +0 -1
  521. package/dist/src/forge-module.js +0 -16
  522. package/dist/src/forge-module.js.map +0 -1
  523. package/dist/src/index.d.ts +0 -39
  524. package/dist/src/index.d.ts.map +0 -1
  525. package/dist/src/index.js +0 -59
  526. package/dist/src/index.js.map +0 -1
  527. package/dist/src/knowledge/budgets.d.ts +0 -38
  528. package/dist/src/knowledge/budgets.d.ts.map +0 -1
  529. package/dist/src/knowledge/budgets.js +0 -157
  530. package/dist/src/knowledge/budgets.js.map +0 -1
  531. package/dist/src/knowledge/compact.d.ts +0 -47
  532. package/dist/src/knowledge/compact.d.ts.map +0 -1
  533. package/dist/src/knowledge/compact.js +0 -320
  534. package/dist/src/knowledge/compact.js.map +0 -1
  535. package/dist/src/knowledge/index.d.ts +0 -7
  536. package/dist/src/knowledge/index.d.ts.map +0 -1
  537. package/dist/src/knowledge/index.js +0 -19
  538. package/dist/src/knowledge/index.js.map +0 -1
  539. package/dist/src/knowledge/parse.d.ts +0 -3
  540. package/dist/src/knowledge/parse.d.ts.map +0 -1
  541. package/dist/src/knowledge/parse.js +0 -205
  542. package/dist/src/knowledge/parse.js.map +0 -1
  543. package/dist/src/knowledge/promote.d.ts +0 -37
  544. package/dist/src/knowledge/promote.d.ts.map +0 -1
  545. package/dist/src/knowledge/promote.js +0 -120
  546. package/dist/src/knowledge/promote.js.map +0 -1
  547. package/dist/src/knowledge/schema.d.ts +0 -61
  548. package/dist/src/knowledge/schema.d.ts.map +0 -1
  549. package/dist/src/knowledge/schema.js +0 -64
  550. package/dist/src/knowledge/schema.js.map +0 -1
  551. package/dist/src/knowledge/serialize.d.ts +0 -3
  552. package/dist/src/knowledge/serialize.d.ts.map +0 -1
  553. package/dist/src/knowledge/serialize.js +0 -67
  554. package/dist/src/knowledge/serialize.js.map +0 -1
  555. package/dist/src/migration-adapters/git-utils.d.ts +0 -3
  556. package/dist/src/migration-adapters/git-utils.d.ts.map +0 -1
  557. package/dist/src/migration-adapters/git-utils.js +0 -64
  558. package/dist/src/migration-adapters/git-utils.js.map +0 -1
  559. package/dist/src/migration-adapters/ignored-files.d.ts +0 -12
  560. package/dist/src/migration-adapters/ignored-files.d.ts.map +0 -1
  561. package/dist/src/migration-adapters/ignored-files.js +0 -190
  562. package/dist/src/migration-adapters/ignored-files.js.map +0 -1
  563. package/dist/src/migration-adapters/index.d.ts +0 -8
  564. package/dist/src/migration-adapters/index.d.ts.map +0 -1
  565. package/dist/src/migration-adapters/index.js +0 -17
  566. package/dist/src/migration-adapters/index.js.map +0 -1
  567. package/dist/src/migration-adapters/node-typescript-pnpm/index.d.ts +0 -3
  568. package/dist/src/migration-adapters/node-typescript-pnpm/index.d.ts.map +0 -1
  569. package/dist/src/migration-adapters/node-typescript-pnpm/index.js +0 -141
  570. package/dist/src/migration-adapters/node-typescript-pnpm/index.js.map +0 -1
  571. package/dist/src/migration-adapters/phaser-pnpm/index.d.ts +0 -3
  572. package/dist/src/migration-adapters/phaser-pnpm/index.d.ts.map +0 -1
  573. package/dist/src/migration-adapters/phaser-pnpm/index.js +0 -142
  574. package/dist/src/migration-adapters/phaser-pnpm/index.js.map +0 -1
  575. package/dist/src/migration-adapters/registry.d.ts +0 -6
  576. package/dist/src/migration-adapters/registry.d.ts.map +0 -1
  577. package/dist/src/migration-adapters/registry.js +0 -55
  578. package/dist/src/migration-adapters/registry.js.map +0 -1
  579. package/dist/src/migration-adapters/types.d.ts +0 -35
  580. package/dist/src/migration-adapters/types.d.ts.map +0 -1
  581. package/dist/src/migration-adapters/types.js +0 -31
  582. package/dist/src/migration-adapters/types.js.map +0 -1
  583. package/dist/src/onboarding/agents-generate.d.ts +0 -31
  584. package/dist/src/onboarding/agents-generate.d.ts.map +0 -1
  585. package/dist/src/onboarding/agents-generate.js +0 -372
  586. package/dist/src/onboarding/agents-generate.js.map +0 -1
  587. package/dist/src/onboarding/create.d.ts +0 -12
  588. package/dist/src/onboarding/create.d.ts.map +0 -1
  589. package/dist/src/onboarding/create.js +0 -389
  590. package/dist/src/onboarding/create.js.map +0 -1
  591. package/dist/src/onboarding/doctor.d.ts +0 -45
  592. package/dist/src/onboarding/doctor.d.ts.map +0 -1
  593. package/dist/src/onboarding/doctor.js +0 -1190
  594. package/dist/src/onboarding/doctor.js.map +0 -1
  595. package/dist/src/onboarding/init.d.ts +0 -36
  596. package/dist/src/onboarding/init.d.ts.map +0 -1
  597. package/dist/src/onboarding/init.js +0 -362
  598. package/dist/src/onboarding/init.js.map +0 -1
  599. package/dist/src/onboarding/invariant-engine.d.ts +0 -17
  600. package/dist/src/onboarding/invariant-engine.d.ts.map +0 -1
  601. package/dist/src/onboarding/invariant-engine.js +0 -416
  602. package/dist/src/onboarding/invariant-engine.js.map +0 -1
  603. package/dist/src/onboarding/memory-scaffold.d.ts +0 -18
  604. package/dist/src/onboarding/memory-scaffold.d.ts.map +0 -1
  605. package/dist/src/onboarding/memory-scaffold.js +0 -151
  606. package/dist/src/onboarding/memory-scaffold.js.map +0 -1
  607. package/dist/src/onboarding/nested-agents-generate.d.ts +0 -18
  608. package/dist/src/onboarding/nested-agents-generate.d.ts.map +0 -1
  609. package/dist/src/onboarding/nested-agents-generate.js +0 -69
  610. package/dist/src/onboarding/nested-agents-generate.js.map +0 -1
  611. package/dist/src/onboarding/nested-agents-templates.d.ts +0 -26
  612. package/dist/src/onboarding/nested-agents-templates.d.ts.map +0 -1
  613. package/dist/src/onboarding/nested-agents-templates.js +0 -178
  614. package/dist/src/onboarding/nested-agents-templates.js.map +0 -1
  615. package/dist/src/onboarding/profile-validate.d.ts +0 -13
  616. package/dist/src/onboarding/profile-validate.d.ts.map +0 -1
  617. package/dist/src/onboarding/profile-validate.js +0 -109
  618. package/dist/src/onboarding/profile-validate.js.map +0 -1
  619. package/dist/src/onboarding/scaffold-project.d.ts +0 -12
  620. package/dist/src/onboarding/scaffold-project.d.ts.map +0 -1
  621. package/dist/src/onboarding/scaffold-project.js +0 -264
  622. package/dist/src/onboarding/scaffold-project.js.map +0 -1
  623. package/dist/src/onboarding/scaffold.d.ts +0 -15
  624. package/dist/src/onboarding/scaffold.d.ts.map +0 -1
  625. package/dist/src/onboarding/scaffold.js +0 -121
  626. package/dist/src/onboarding/scaffold.js.map +0 -1
  627. package/dist/src/onboarding/upgrade.d.ts +0 -27
  628. package/dist/src/onboarding/upgrade.d.ts.map +0 -1
  629. package/dist/src/onboarding/upgrade.js +0 -453
  630. package/dist/src/onboarding/upgrade.js.map +0 -1
  631. package/dist/src/onboarding/workspace-discovery.d.ts +0 -11
  632. package/dist/src/onboarding/workspace-discovery.d.ts.map +0 -1
  633. package/dist/src/onboarding/workspace-discovery.js +0 -138
  634. package/dist/src/onboarding/workspace-discovery.js.map +0 -1
  635. package/dist/src/plugin/ForgePluginManifest.d.ts +0 -38
  636. package/dist/src/plugin/ForgePluginManifest.d.ts.map +0 -1
  637. package/dist/src/plugin/ForgePluginManifest.js +0 -52
  638. package/dist/src/plugin/ForgePluginManifest.js.map +0 -1
  639. package/dist/src/profiles/profile-schema.d.ts +0 -361
  640. package/dist/src/profiles/profile-schema.d.ts.map +0 -1
  641. package/dist/src/profiles/profile-schema.js +0 -208
  642. package/dist/src/profiles/profile-schema.js.map +0 -1
  643. package/dist/src/profiles/stack-profile.d.ts +0 -173
  644. package/dist/src/profiles/stack-profile.d.ts.map +0 -1
  645. package/dist/src/profiles/stack-profile.js +0 -148
  646. package/dist/src/profiles/stack-profile.js.map +0 -1
  647. package/dist/src/profiles/terminology-utils.d.ts +0 -8
  648. package/dist/src/profiles/terminology-utils.d.ts.map +0 -1
  649. package/dist/src/profiles/terminology-utils.js +0 -31
  650. package/dist/src/profiles/terminology-utils.js.map +0 -1
  651. package/dist/src/registry.d.ts +0 -38
  652. package/dist/src/registry.d.ts.map +0 -1
  653. package/dist/src/registry.js +0 -174
  654. package/dist/src/registry.js.map +0 -1
  655. package/dist/src/skill-schema.d.ts +0 -30
  656. package/dist/src/skill-schema.d.ts.map +0 -1
  657. package/dist/src/skill-schema.js +0 -34
  658. package/dist/src/skill-schema.js.map +0 -1
  659. package/dist/src/types.d.ts +0 -154
  660. package/dist/src/types.d.ts.map +0 -1
  661. package/dist/src/types.js +0 -17
  662. package/dist/src/types.js.map +0 -1
  663. package/dist/src/utils/fs-atomic.d.ts +0 -7
  664. package/dist/src/utils/fs-atomic.d.ts.map +0 -1
  665. package/dist/src/utils/fs-atomic.js +0 -81
  666. package/dist/src/utils/fs-atomic.js.map +0 -1
  667. package/dist/src/utils/fs-idempotent.d.ts +0 -2
  668. package/dist/src/utils/fs-idempotent.d.ts.map +0 -1
  669. package/dist/src/utils/fs-idempotent.js +0 -39
  670. package/dist/src/utils/fs-idempotent.js.map +0 -1
  671. package/dist/src/utils/fs-trash-sync.d.ts +0 -2
  672. package/dist/src/utils/fs-trash-sync.d.ts.map +0 -1
  673. package/dist/src/utils/fs-trash-sync.js +0 -34
  674. package/dist/src/utils/fs-trash-sync.js.map +0 -1
  675. package/dist/src/utils/fs-trash.d.ts +0 -2
  676. package/dist/src/utils/fs-trash.d.ts.map +0 -1
  677. package/dist/src/utils/fs-trash.js +0 -24
  678. package/dist/src/utils/fs-trash.js.map +0 -1
  679. package/dist/src/utils/fs.d.ts +0 -8
  680. package/dist/src/utils/fs.d.ts.map +0 -1
  681. package/dist/src/utils/fs.js +0 -60
  682. package/dist/src/utils/fs.js.map +0 -1
  683. package/dist/src/utils/generated-marker.d.ts +0 -21
  684. package/dist/src/utils/generated-marker.d.ts.map +0 -1
  685. package/dist/src/utils/generated-marker.js +0 -128
  686. package/dist/src/utils/generated-marker.js.map +0 -1
  687. package/dist/src/utils/hash.d.ts +0 -2
  688. package/dist/src/utils/hash.d.ts.map +0 -1
  689. package/dist/src/utils/hash.js +0 -18
  690. package/dist/src/utils/hash.js.map +0 -1
  691. package/dist/src/utils/index.d.ts +0 -9
  692. package/dist/src/utils/index.d.ts.map +0 -1
  693. package/dist/src/utils/index.js +0 -21
  694. package/dist/src/utils/index.js.map +0 -1
  695. package/dist/src/utils/string-utils.d.ts +0 -2
  696. package/dist/src/utils/string-utils.d.ts.map +0 -1
  697. package/dist/src/utils/string-utils.js +0 -19
  698. package/dist/src/utils/string-utils.js.map +0 -1
  699. package/dist/src/validators/note-frontmatter-validate.d.ts +0 -20
  700. package/dist/src/validators/note-frontmatter-validate.d.ts.map +0 -1
  701. package/dist/src/validators/note-frontmatter-validate.js +0 -117
  702. package/dist/src/validators/note-frontmatter-validate.js.map +0 -1
  703. package/dist/src/validators/note-link-validate.d.ts +0 -21
  704. package/dist/src/validators/note-link-validate.d.ts.map +0 -1
  705. package/dist/src/validators/note-link-validate.js +0 -121
  706. package/dist/src/validators/note-link-validate.js.map +0 -1
  707. package/dist/src/validators/note-orphan-detect.d.ts +0 -19
  708. package/dist/src/validators/note-orphan-detect.d.ts.map +0 -1
  709. package/dist/src/validators/note-orphan-detect.js +0 -123
  710. package/dist/src/validators/note-orphan-detect.js.map +0 -1
  711. package/dist/src/validators/port-validate.d.ts +0 -12
  712. package/dist/src/validators/port-validate.d.ts.map +0 -1
  713. package/dist/src/validators/port-validate.js +0 -78
  714. package/dist/src/validators/port-validate.js.map +0 -1
  715. package/dist/src/validators/skill-validate.d.ts +0 -29
  716. package/dist/src/validators/skill-validate.d.ts.map +0 -1
  717. package/dist/src/validators/skill-validate.js +0 -689
  718. package/dist/src/validators/skill-validate.js.map +0 -1
@@ -1,204 +0,0 @@
1
- /*
2
- <MODULE_CONTRACT>
3
- <purpose>Command handler for forge.skill.knowledge.compact — wraps pure compaction functions in the kernel command contract (RFC-0662).</purpose>
4
- <non-goals>
5
- <item>Do not implement planning logic — that lives in src/knowledge/compact.ts.</item>
6
- <item>Do not import from @warpgogol/* — os/core may use dynamic imports but this handler stays forge-internal.</item>
7
- </non-goals>
8
- </MODULE_CONTRACT>
9
- <CHANGE_SUMMARY>
10
- <item>RFC-0662: initial knowledge compaction command handler.</item>
11
- </CHANGE_SUMMARY>
12
- */
13
- import fs from "node:fs";
14
- import path from "node:path";
15
- import { FORGE_SKILLS, discoverPackSkills } from "../../../src/registry.js";
16
- import { loadForgeConfig } from "../../../src/config/forge-config.js";
17
- import { resolveForgeRoot } from "../../../src/config/forge-config.js";
18
- import { planCompaction, executeCompaction, resolveRetentionDays, resolveStaleDays, } from "../../../src/knowledge/compact.js";
19
- import { parseKnowledgeFile } from "../../../src/knowledge/parse.js";
20
- function discoverSkillKnowledgeFiles(workspaceRoot, skillName, all) {
21
- const result = [];
22
- const config = loadForgeConfig(workspaceRoot);
23
- // Resolve forge root
24
- let forgeRoot;
25
- try {
26
- forgeRoot = resolveForgeRoot(workspaceRoot);
27
- }
28
- catch {
29
- return result;
30
- }
31
- // Collect forge skills. skill.path is relative to forgeRoot and already
32
- // includes the "skills/" prefix (see init.ts / skill-validate.ts).
33
- for (const skill of FORGE_SKILLS) {
34
- if (skillName && skill.name !== skillName)
35
- continue;
36
- if (!skill.knowledge || skill.knowledge.length === 0)
37
- continue;
38
- const skillDir = path.dirname(path.join(forgeRoot, skill.path));
39
- const files = skill.knowledge
40
- .map((f) => path.join(skillDir, f))
41
- .filter((f) => {
42
- try {
43
- return fs.existsSync(f);
44
- }
45
- catch {
46
- return false;
47
- }
48
- });
49
- if (files.length > 0) {
50
- result.push({ skill: skill.name, files });
51
- }
52
- }
53
- // Collect pack skills if --all or if --skill matches a pack skill
54
- if (all || (skillName && !result.some((r) => r.skill === skillName))) {
55
- let packSkills = [];
56
- try {
57
- packSkills = discoverPackSkills(workspaceRoot, config);
58
- }
59
- catch {
60
- // Manifest missing or invalid — skip pack skills
61
- }
62
- for (const skill of packSkills) {
63
- if (skillName && skill.name !== skillName)
64
- continue;
65
- if (!skill.knowledge || skill.knowledge.length === 0)
66
- continue;
67
- const packDir = path.resolve(workspaceRoot, skill.dir);
68
- const skillDir = path.dirname(path.join(packDir, skill.path));
69
- const files = skill.knowledge
70
- .map((f) => path.join(skillDir, f))
71
- .filter((f) => {
72
- try {
73
- return fs.existsSync(f);
74
- }
75
- catch {
76
- return false;
77
- }
78
- });
79
- if (files.length > 0) {
80
- result.push({ skill: skill.name, files });
81
- }
82
- }
83
- }
84
- return result;
85
- }
86
- export async function runKnowledgeCompact(input, context) {
87
- const { flags } = input;
88
- const skillName = typeof flags["skill"] === "string" ? flags["skill"] : undefined;
89
- // --all is consumed by the site-kernel CLI (consumeCommonFlags) before the
90
- // command runs, so the command-level switch is --all-skills.
91
- const all = flags["all-skills"] === true;
92
- const dryRun = context.dryRun || flags["dry-run"] === true;
93
- const json = flags["json"] === true;
94
- // Validate exactly one of --skill / --all
95
- if (!skillName && !all) {
96
- return {
97
- data: {
98
- command: "forge.skill.knowledge.compact",
99
- status: "fail",
100
- dryRun,
101
- files: [],
102
- totals: { archived: 0, markedStale: 0, legacyFiles: 0 },
103
- errors: ["Exactly one of --skill <name> or --all-skills is required."],
104
- },
105
- exitCode: 1,
106
- summary: "Error: --skill or --all-skills is required.",
107
- };
108
- }
109
- if (skillName && all) {
110
- return {
111
- data: {
112
- command: "forge.skill.knowledge.compact",
113
- status: "fail",
114
- dryRun,
115
- files: [],
116
- totals: { archived: 0, markedStale: 0, legacyFiles: 0 },
117
- errors: ["--skill and --all-skills are mutually exclusive."],
118
- },
119
- exitCode: 1,
120
- summary: "Error: --skill and --all-skills are mutually exclusive.",
121
- };
122
- }
123
- // Resolve retention and stale days
124
- const flagRetention = typeof flags["retention-days"] === "string" ? Number(flags["retention-days"]) : undefined;
125
- const flagStale = typeof flags["stale-days"] === "string" ? Number(flags["stale-days"]) : undefined;
126
- const retentionDays = flagRetention !== undefined && flagRetention > 0 && Number.isInteger(flagRetention)
127
- ? flagRetention
128
- : resolveRetentionDays(context.workspaceRoot);
129
- const staleDays = flagStale !== undefined && flagStale > 0 && Number.isInteger(flagStale)
130
- ? flagStale
131
- : resolveStaleDays(context.workspaceRoot);
132
- // Discover target skills and their knowledge files
133
- const skillFiles = discoverSkillKnowledgeFiles(context.workspaceRoot, skillName, all);
134
- if (skillFiles.length === 0) {
135
- const summary = skillName
136
- ? `Skill "${skillName}" has no knowledge files to compact.`
137
- : "No skills with knowledge files found.";
138
- return {
139
- data: {
140
- command: "forge.skill.knowledge.compact",
141
- status: "pass",
142
- dryRun,
143
- files: [],
144
- totals: { archived: 0, markedStale: 0, legacyFiles: 0 },
145
- },
146
- exitCode: 0,
147
- summary,
148
- };
149
- }
150
- // Parse all knowledge files
151
- const today = new Date().toISOString().slice(0, 10);
152
- const allParsed = [];
153
- const fileToSkill = new Map();
154
- for (const { skill, files } of skillFiles) {
155
- for (const file of files) {
156
- const parsed = parseKnowledgeFile(file);
157
- allParsed.push(parsed);
158
- fileToSkill.set(file, skill);
159
- }
160
- }
161
- // Plan compaction
162
- const plans = planCompaction(allParsed, { retentionDays, staleDays, today });
163
- // Execute compaction
164
- const report = executeCompaction(plans, dryRun);
165
- // Group by skill for output
166
- const skillsOutput = skillFiles.map(({ skill, files }) => {
167
- const skillFileResults = report.files.filter((r) => files.includes(r.file));
168
- return {
169
- skill,
170
- files: skillFileResults.map((r) => ({
171
- file: path.basename(r.file),
172
- actions: r.actions,
173
- legacySectionCount: r.legacySectionCount,
174
- })),
175
- };
176
- });
177
- const groupedReport = {
178
- ...report,
179
- skills: skillsOutput,
180
- };
181
- const exitCode = report.status === "pass" ? 0 : 1;
182
- const summary = dryRun
183
- ? `[dry-run] forge.skill.knowledge.compact: ${report.totals.archived} would archive, ${report.totals.markedStale} would mark stale, ${report.totals.legacyFiles} legacy file(s)`
184
- : `forge.skill.knowledge.compact: ${report.totals.archived} archived, ${report.totals.markedStale} marked stale, ${report.totals.legacyFiles} legacy file(s)`;
185
- if (context.outputFormat === "pretty" && !json) {
186
- context.logger.section("Knowledge Compaction");
187
- for (const skill of skillsOutput) {
188
- context.logger.info(`Skill: ${skill.skill}`);
189
- for (const file of skill.files) {
190
- context.logger.info(` ${file.file}: ${file.actions.length} action(s), ${file.legacySectionCount} legacy section(s)`);
191
- for (const action of file.actions) {
192
- context.logger.info(` ${action.kind}: ${action.entryId} — ${action.reason}`);
193
- }
194
- }
195
- }
196
- context.logger.info(`Totals: ${report.totals.archived} archived, ${report.totals.markedStale} marked stale, ${report.totals.legacyFiles} legacy file(s)`);
197
- }
198
- return {
199
- data: groupedReport,
200
- exitCode,
201
- summary,
202
- };
203
- }
204
- //# sourceMappingURL=knowledge-compact.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"knowledge-compact.js","sourceRoot":"","sources":["../../../../os/core/handlers/knowledge-compact.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import type { ForgeCommandInput, ForgeCommandResult, ForgeRuntimeContext } from "../../../src/types.ts";
2
- export interface PackageHealthViolation {
3
- ruleId: string;
4
- packageName: string;
5
- severity: "error" | "warning";
6
- message: string;
7
- file?: string;
8
- fixHint?: string;
9
- }
10
- export interface PackageHealthResult {
11
- command: "forge.package.health";
12
- packagesChecked: number;
13
- violations: PackageHealthViolation[];
14
- passed: boolean;
15
- }
16
- export declare function runPackageHealth(_input: ForgeCommandInput, context: ForgeRuntimeContext): Promise<ForgeCommandResult<PackageHealthResult>>;
17
- //# sourceMappingURL=package-health.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-health.d.ts","sourceRoot":"","sources":["../../../../os/core/handlers/package-health.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,sBAAsB,CAAC;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,sBAAsB,EAAE,CAAC;IACrC,MAAM,EAAE,OAAO,CAAC;CACjB;AAiCD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,CAmKlD"}
@@ -1,196 +0,0 @@
1
- /*
2
- <MODULE_CONTRACT>
3
- <purpose>forge.package.health — validate all published packages (private: false) for standalone extraction readiness. Checks engines.node, embedded CI workflow, extract.config.yaml, and devDependencies completeness (no hoisted tool deps).</purpose>
4
- <non-goals>
5
- <item>Do not import from @warpgogol/* — this module is portable.</item>
6
- <item>Do not modify files — read-only validation.</item>
7
- </non-goals>
8
- </MODULE_CONTRACT>
9
- <CHANGE_SUMMARY>
10
- <item>Initial: forge.package.health validator — engines, CI workflow, extract config, devDeps completeness.</item>
11
- </CHANGE_SUMMARY>
12
- */
13
- import fs from "node:fs";
14
- import path from "node:path";
15
- const KNOWN_SCRIPT_TOOLS = {
16
- eslint: "eslint",
17
- prettier: "prettier",
18
- vitest: "vitest",
19
- tsc: "typescript",
20
- tsx: "tsx",
21
- turbo: "turbo",
22
- biome: "@biomejs/biome",
23
- };
24
- function extractToolNames(scripts) {
25
- const tools = new Set();
26
- for (const scriptValue of Object.values(scripts)) {
27
- for (const [toolName, depName] of Object.entries(KNOWN_SCRIPT_TOOLS)) {
28
- if (scriptValue.includes(toolName) || scriptValue.includes(`pnpm exec ${toolName}`)) {
29
- tools.add(depName);
30
- }
31
- }
32
- }
33
- return tools;
34
- }
35
- function readJsonFile(filePath) {
36
- try {
37
- const raw = fs.readFileSync(filePath, "utf8");
38
- return JSON.parse(raw);
39
- }
40
- catch {
41
- return null;
42
- }
43
- }
44
- export async function runPackageHealth(_input, context) {
45
- const { workspaceRoot, logger } = context;
46
- const packagesDir = path.join(workspaceRoot, "packages");
47
- if (!fs.existsSync(packagesDir)) {
48
- return {
49
- data: {
50
- command: "forge.package.health",
51
- packagesChecked: 0,
52
- violations: [],
53
- passed: true,
54
- },
55
- exitCode: 0,
56
- summary: "No packages/ directory found — nothing to check.",
57
- };
58
- }
59
- const rootPkg = readJsonFile(path.join(workspaceRoot, "package.json"));
60
- const rootEngines = rootPkg?.["engines"];
61
- const rootNodeRange = rootEngines?.["node"];
62
- const violations = [];
63
- let packagesChecked = 0;
64
- const entries = fs.readdirSync(packagesDir, { withFileTypes: true });
65
- for (const entry of entries) {
66
- if (!entry.isDirectory())
67
- continue;
68
- if (entry.name.startsWith("."))
69
- continue;
70
- const pkgDir = path.join(packagesDir, entry.name);
71
- const pkgJsonPath = path.join(pkgDir, "package.json");
72
- const pkg = readJsonFile(pkgJsonPath);
73
- if (!pkg)
74
- continue;
75
- const isPrivate = pkg["private"] === true;
76
- if (isPrivate)
77
- continue;
78
- packagesChecked++;
79
- const packageName = String(pkg["name"] ?? entry.name);
80
- // CHECK 1: engines.node exists and matches root
81
- const pkgEngines = pkg["engines"];
82
- const pkgNodeRange = pkgEngines?.["node"];
83
- if (!pkgNodeRange) {
84
- violations.push({
85
- ruleId: "PKG-HEALTH-01",
86
- packageName,
87
- severity: "error",
88
- message: `Missing engines.node in package.json. Root requires "${rootNodeRange ?? ">=24 <25"}".`,
89
- file: pkgJsonPath,
90
- fixHint: `Add "engines": { "node": "${rootNodeRange ?? ">=24 <25"}" } to package.json.`,
91
- });
92
- }
93
- else if (rootNodeRange && pkgNodeRange !== rootNodeRange) {
94
- violations.push({
95
- ruleId: "PKG-HEALTH-01",
96
- packageName,
97
- severity: "warning",
98
- message: `engines.node is "${pkgNodeRange}" but root is "${rootNodeRange}".`,
99
- file: pkgJsonPath,
100
- fixHint: `Align engines.node with root: "${rootNodeRange}".`,
101
- });
102
- }
103
- // CHECK 2: .github/workflows/ci.yml exists inside package
104
- const ciWorkflowPath = path.join(pkgDir, ".github", "workflows", "ci.yml");
105
- if (!fs.existsSync(ciWorkflowPath)) {
106
- violations.push({
107
- ruleId: "PKG-HEALTH-02",
108
- packageName,
109
- severity: "error",
110
- message: "Missing .github/workflows/ci.yml — standalone extraction repo will have no CI.",
111
- file: pkgDir,
112
- fixHint: "Create .github/workflows/ci.yml inside the package directory with Node 24 setup.",
113
- });
114
- }
115
- // CHECK 3: extract.config.yaml exists
116
- const extractConfigPath = path.join(pkgDir, "extract.config.yaml");
117
- if (!fs.existsSync(extractConfigPath)) {
118
- violations.push({
119
- ruleId: "PKG-HEALTH-03",
120
- packageName,
121
- severity: "warning",
122
- message: "Missing extract.config.yaml — package cannot be extracted via repo-extract.",
123
- file: pkgDir,
124
- fixHint: "Create extract.config.yaml with git remote and extraction settings.",
125
- });
126
- }
127
- // CHECK 4: devDependencies completeness — tools used in scripts must be declared
128
- const scripts = (pkg["scripts"] ?? {});
129
- const devDeps = (pkg["devDependencies"] ?? {});
130
- const deps = (pkg["dependencies"] ?? {});
131
- const allDeclared = { ...devDeps, ...deps };
132
- const usedTools = extractToolNames(scripts);
133
- for (const toolDep of usedTools) {
134
- if (!(toolDep in allDeclared)) {
135
- violations.push({
136
- ruleId: "PKG-HEALTH-04",
137
- packageName,
138
- severity: "error",
139
- message: `Script uses "${toolDep}" but it is not in devDependencies or dependencies. It relies on monorepo hoisting and will fail standalone.`,
140
- file: pkgJsonPath,
141
- fixHint: `Add "${toolDep}" to devDependencies in package.json.`,
142
- });
143
- }
144
- }
145
- }
146
- const errors = violations.filter((v) => v.severity === "error");
147
- const warnings = violations.filter((v) => v.severity === "warning");
148
- const passed = errors.length === 0;
149
- if (context.outputFormat === "pretty") {
150
- if (packagesChecked === 0) {
151
- logger.info("forge.package.health: no published packages found.");
152
- }
153
- else {
154
- for (const v of violations) {
155
- if (v.severity === "error") {
156
- logger.error(` [${v.ruleId}] ${v.packageName}: ${v.message}`);
157
- }
158
- else {
159
- logger.warn(` [${v.ruleId}] ${v.packageName}: ${v.message}`);
160
- }
161
- }
162
- if (passed && warnings.length === 0) {
163
- logger.success(`forge.package.health: all ${packagesChecked} published package(s) healthy.`);
164
- }
165
- else if (passed) {
166
- logger.warn(`forge.package.health: ${packagesChecked} package(s) checked, ${warnings.length} warning${warnings.length === 1 ? "" : "s"}.`);
167
- }
168
- else {
169
- const parts = [];
170
- parts.push(`${errors.length} error${errors.length === 1 ? "" : "s"}`);
171
- if (warnings.length > 0)
172
- parts.push(`${warnings.length} warning${warnings.length === 1 ? "" : "s"}`);
173
- logger.error(`forge.package.health: ${parts.join(", ")} across ${packagesChecked} package(s).`);
174
- }
175
- }
176
- }
177
- return {
178
- data: {
179
- command: "forge.package.health",
180
- packagesChecked,
181
- violations,
182
- passed,
183
- },
184
- exitCode: passed ? 0 : 1,
185
- summary: passed
186
- ? warnings.length > 0
187
- ? `All ${packagesChecked} package(s) passed with ${warnings.length} warning${warnings.length === 1 ? "" : "s"}.`
188
- : `All ${packagesChecked} package(s) healthy.`
189
- : `${errors.length} error${errors.length === 1 ? "" : "s"} found across ${packagesChecked} package(s).`,
190
- nextSteps: errors.map((e) => ({
191
- action: e.fixHint ?? e.message,
192
- kind: "required",
193
- })),
194
- };
195
- }
196
- //# sourceMappingURL=package-health.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-health.js","sourceRoot":"","sources":["../../../../os/core/handlers/package-health.ts"],"names":[],"mappings":"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"}
@@ -1,49 +0,0 @@
1
- import type { PinnedEntry, PinnedManifest, PinnedViolation } from "./pinned-types.ts";
2
- /**
3
- * Path to the pinned manifest relative to the repository root.
4
- */
5
- export declare const PINNED_MANIFEST_PATH: string;
6
- /**
7
- * Error thrown when the manifest exists but is malformed (invalid YAML or missing required fields).
8
- */
9
- export declare class PinnedManifestMalformedError extends Error {
10
- constructor(message: string);
11
- }
12
- /**
13
- * Load and parse the pinned manifest from .forge/pinned.yaml.
14
- * Returns null if the file does not exist (protection is opt-in).
15
- * Throws PinnedManifestMalformedError if the file exists but is not valid YAML
16
- * or does not contain a `pinned` array.
17
- */
18
- export declare function loadPinnedManifest(repoRoot: string): Promise<PinnedManifest | null>;
19
- /**
20
- * Check if a relative file path matches a pinned entry.
21
- *
22
- * Path matching rules:
23
- * - Exact match: if the entry path equals the file path, it matches.
24
- * - Directory match: if the entry path ends with `/`, it matches any file
25
- * that starts with the directory prefix (recursive).
26
- *
27
- * Returns the matching PinnedEntry or null if no match.
28
- */
29
- export declare function isPinned(manifest: PinnedManifest, relPath: string): PinnedEntry | null;
30
- /**
31
- * Check if a move from sourceRel to destRel stays within the same pinned directory.
32
- * This exempts intra-directory moves (e.g. rfc.archive moves
33
- * docs/rfcs/rfc-0076.md → docs/rfcs/archive/implemented/rfc-0076.md)
34
- * from the pinned pre-check, since the file hasn't left the protected directory.
35
- *
36
- * Only applies to directory-pinned entries (path ends with `/`).
37
- * Returns true if the same pinned directory entry matches both source and dest.
38
- */
39
- export declare function isIntraDirMove(manifest: PinnedManifest, sourceRel: string, destRel: string): boolean;
40
- /**
41
- * Batch-check multiple file paths against the manifest.
42
- * Returns violations for files that match a pinned entry.
43
- * The operation type is determined by the caller (delete, move, or modify).
44
- */
45
- export declare function checkFilesForPinned(manifest: PinnedManifest, files: Array<{
46
- relPath: string;
47
- operation: PinnedViolation["operation"];
48
- }>): PinnedViolation[];
49
- //# sourceMappingURL=pinned-check.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pinned-check.d.ts","sourceRoot":"","sources":["../../../../os/core/handlers/pinned-check.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAc,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKlG;;GAEG;AACH,eAAO,MAAM,oBAAoB,QAAqC,CAAC;AAEvE;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,KAAK;gBACzC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAkEzF;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAgBtF;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAiBT;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,eAAe,CAAC,WAAW,CAAC,CAAA;CAAE,CAAC,GACzE,eAAe,EAAE,CAgBnB"}
@@ -1,159 +0,0 @@
1
- /*
2
- <MODULE_CONTRACT>
3
- <purpose>Shared pre-check utility for the forge pinned-files protection system (RFC-0733).
4
- Loads the pinned manifest from .forge/pinned.yaml and provides an isPinned lookup
5
- that all archive handlers call before moving files. Manifest loading is cached
6
- per invocation — loadPinnedManifest is called once and the result is reused.</purpose>
7
- <non-goals>
8
- <item>Does not implement validation logic (git diff parsing, violation detection) — use pinned-validate.ts.</item>
9
- <item>Does not implement manifest creation — use pinned-init.ts.</item>
10
- <item>Does not enforce overrides or audit logging — that is pinned-validate.ts responsibility.</item>
11
- </non-goals>
12
- </MODULE_CONTRACT>
13
- <CHANGE_SUMMARY>
14
- <item>RFC-0733: initial pinned-check utility — loadPinnedManifest, isPinned, checkFilesForPinned.</item>
15
- <item>Gap fix: add isIntraDirMove to exempt moves within the same pinned directory (e.g. rfc.archive moves docs/rfcs/x.md → docs/rfcs/archive/implemented/x.md).</item>
16
- </CHANGE_SUMMARY>
17
- */
18
- import fs from "node:fs/promises";
19
- import path from "node:path";
20
- import { parse as parseYaml } from "yaml";
21
- const PINNED_DIR = ".forge";
22
- const PINNED_FILE = "pinned.yaml";
23
- /**
24
- * Path to the pinned manifest relative to the repository root.
25
- */
26
- export const PINNED_MANIFEST_PATH = path.join(PINNED_DIR, PINNED_FILE);
27
- /**
28
- * Error thrown when the manifest exists but is malformed (invalid YAML or missing required fields).
29
- */
30
- export class PinnedManifestMalformedError extends Error {
31
- constructor(message) {
32
- super(message);
33
- this.name = "PinnedManifestMalformedError";
34
- }
35
- }
36
- /**
37
- * Load and parse the pinned manifest from .forge/pinned.yaml.
38
- * Returns null if the file does not exist (protection is opt-in).
39
- * Throws PinnedManifestMalformedError if the file exists but is not valid YAML
40
- * or does not contain a `pinned` array.
41
- */
42
- export async function loadPinnedManifest(repoRoot) {
43
- const manifestPath = path.join(repoRoot, PINNED_MANIFEST_PATH);
44
- let content;
45
- try {
46
- content = await fs.readFile(manifestPath, "utf8");
47
- }
48
- catch {
49
- return null;
50
- }
51
- let parsed;
52
- try {
53
- parsed = parseYaml(content);
54
- }
55
- catch (err) {
56
- throw new PinnedManifestMalformedError(`pinned.yaml is not valid YAML: ${String(err.message)}`);
57
- }
58
- if (!parsed || typeof parsed !== "object") {
59
- throw new PinnedManifestMalformedError("pinned.yaml must contain a top-level object with a `pinned` array");
60
- }
61
- const obj = parsed;
62
- if (!Array.isArray(obj["pinned"])) {
63
- throw new PinnedManifestMalformedError("pinned.yaml is missing required `pinned` array field");
64
- }
65
- const entries = [];
66
- for (const raw of obj["pinned"]) {
67
- if (!raw || typeof raw !== "object") {
68
- throw new PinnedManifestMalformedError("pinned.yaml: each entry must be an object with path, mode, and reason");
69
- }
70
- const entry = raw;
71
- const entryPath = entry["path"];
72
- const entryMode = entry["mode"];
73
- const entryReason = entry["reason"];
74
- if (typeof entryPath !== "string" || !entryPath) {
75
- throw new PinnedManifestMalformedError("pinned.yaml: each entry must have a non-empty `path` string");
76
- }
77
- if (entryMode !== "protect" && entryMode !== "freeze") {
78
- throw new PinnedManifestMalformedError(`pinned.yaml: entry "${entryPath}" has invalid mode "${String(entryMode)}" — must be "protect" or "freeze"`);
79
- }
80
- if (typeof entryReason !== "string" || !entryReason) {
81
- throw new PinnedManifestMalformedError(`pinned.yaml: entry "${entryPath}" must have a non-empty reason string`);
82
- }
83
- entries.push({
84
- path: entryPath,
85
- mode: entryMode,
86
- reason: entryReason,
87
- });
88
- }
89
- return { pinned: entries };
90
- }
91
- /**
92
- * Check if a relative file path matches a pinned entry.
93
- *
94
- * Path matching rules:
95
- * - Exact match: if the entry path equals the file path, it matches.
96
- * - Directory match: if the entry path ends with `/`, it matches any file
97
- * that starts with the directory prefix (recursive).
98
- *
99
- * Returns the matching PinnedEntry or null if no match.
100
- */
101
- export function isPinned(manifest, relPath) {
102
- const normalizedRelPath = relPath.replace(/\\/g, "/");
103
- for (const entry of manifest.pinned) {
104
- const normalizedEntryPath = entry.path.replace(/\\/g, "/");
105
- if (normalizedEntryPath.endsWith("/")) {
106
- if (normalizedRelPath.startsWith(normalizedEntryPath)) {
107
- return entry;
108
- }
109
- }
110
- else if (normalizedRelPath === normalizedEntryPath) {
111
- return entry;
112
- }
113
- }
114
- return null;
115
- }
116
- /**
117
- * Check if a move from sourceRel to destRel stays within the same pinned directory.
118
- * This exempts intra-directory moves (e.g. rfc.archive moves
119
- * docs/rfcs/rfc-0076.md → docs/rfcs/archive/implemented/rfc-0076.md)
120
- * from the pinned pre-check, since the file hasn't left the protected directory.
121
- *
122
- * Only applies to directory-pinned entries (path ends with `/`).
123
- * Returns true if the same pinned directory entry matches both source and dest.
124
- */
125
- export function isIntraDirMove(manifest, sourceRel, destRel) {
126
- const normalizedSource = sourceRel.replace(/\\/g, "/");
127
- const normalizedDest = destRel.replace(/\\/g, "/");
128
- for (const entry of manifest.pinned) {
129
- const normalizedEntryPath = entry.path.replace(/\\/g, "/");
130
- if (normalizedEntryPath.endsWith("/")) {
131
- if (normalizedSource.startsWith(normalizedEntryPath) &&
132
- normalizedDest.startsWith(normalizedEntryPath)) {
133
- return true;
134
- }
135
- }
136
- }
137
- return false;
138
- }
139
- /**
140
- * Batch-check multiple file paths against the manifest.
141
- * Returns violations for files that match a pinned entry.
142
- * The operation type is determined by the caller (delete, move, or modify).
143
- */
144
- export function checkFilesForPinned(manifest, files) {
145
- const violations = [];
146
- for (const { relPath, operation } of files) {
147
- const entry = isPinned(manifest, relPath);
148
- if (entry) {
149
- violations.push({
150
- path: relPath,
151
- mode: entry.mode,
152
- operation,
153
- reason: entry.reason,
154
- });
155
- }
156
- }
157
- return violations;
158
- }
159
- //# sourceMappingURL=pinned-check.js.map