@warpgogol/forge 5.2.4 → 5.3.1

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 (590) hide show
  1. package/README.md +1 -1
  2. package/README.uk.md +8 -8
  3. package/bin/cli.ts +25 -33
  4. package/dist/bin/cli.js +21 -32
  5. package/dist/bin/cli.js.map +1 -1
  6. package/dist/os/adr/adr.module.d.ts.map +1 -1
  7. package/dist/os/adr/adr.module.js +8 -3
  8. package/dist/os/adr/adr.module.js.map +1 -1
  9. package/dist/os/adr/frontmatter-io.js +5 -5
  10. package/dist/os/adr/frontmatter-io.js.map +1 -1
  11. package/dist/os/adr/handlers/archive.d.ts.map +1 -1
  12. package/dist/os/adr/handlers/archive.js +10 -4
  13. package/dist/os/adr/handlers/archive.js.map +1 -1
  14. package/dist/os/adr/handlers/implement-stamp.d.ts.map +1 -1
  15. package/dist/os/adr/handlers/implement-stamp.js +10 -10
  16. package/dist/os/adr/handlers/implement-stamp.js.map +1 -1
  17. package/dist/os/adr/handlers/list-create.js +5 -5
  18. package/dist/os/adr/handlers/list-create.js.map +1 -1
  19. package/dist/os/adr/handlers/validate.js +1 -1
  20. package/dist/os/adr/handlers/validate.js.map +1 -1
  21. package/dist/os/audit/audit.module.js +3 -3
  22. package/dist/os/audit/audit.module.js.map +1 -1
  23. package/dist/os/audit/frontmatter-io.js +5 -5
  24. package/dist/os/audit/frontmatter-io.js.map +1 -1
  25. package/dist/os/audit/handlers/archive.d.ts.map +1 -1
  26. package/dist/os/audit/handlers/archive.js +10 -4
  27. package/dist/os/audit/handlers/archive.js.map +1 -1
  28. package/dist/os/compass/compass.module.d.ts.map +1 -1
  29. package/dist/os/compass/compass.module.js +17 -1
  30. package/dist/os/compass/compass.module.js.map +1 -1
  31. package/dist/os/compass/handlers/compass-audit-handler.d.ts.map +1 -1
  32. package/dist/os/compass/handlers/compass-audit-handler.js +12 -5
  33. package/dist/os/compass/handlers/compass-audit-handler.js.map +1 -1
  34. package/dist/os/compass/handlers/compass-change-summary-handler.d.ts.map +1 -1
  35. package/dist/os/compass/handlers/compass-change-summary-handler.js +3 -2
  36. package/dist/os/compass/handlers/compass-change-summary-handler.js.map +1 -1
  37. package/dist/os/compass/handlers/compass-inventory-handler.d.ts.map +1 -1
  38. package/dist/os/compass/handlers/compass-inventory-handler.js +6 -4
  39. package/dist/os/compass/handlers/compass-inventory-handler.js.map +1 -1
  40. package/dist/os/compass/handlers/compass-inventory.d.ts.map +1 -1
  41. package/dist/os/compass/handlers/compass-inventory.js +10 -8
  42. package/dist/os/compass/handlers/compass-inventory.js.map +1 -1
  43. package/dist/os/compass/handlers/compass-migrate-handler.js +1 -1
  44. package/dist/os/compass/handlers/compass-migrate-handler.js.map +1 -1
  45. package/dist/os/compass/handlers/compass-migrate.d.ts.map +1 -1
  46. package/dist/os/compass/handlers/compass-migrate.js +6 -3
  47. package/dist/os/compass/handlers/compass-migrate.js.map +1 -1
  48. package/dist/os/compass/handlers/git-revision.d.ts.map +1 -1
  49. package/dist/os/compass/handlers/git-revision.js +9 -6
  50. package/dist/os/compass/handlers/git-revision.js.map +1 -1
  51. package/dist/os/compass/handlers/resolve-scan-root.js +1 -1
  52. package/dist/os/compass/handlers/resolve-scan-root.js.map +1 -1
  53. package/dist/os/compass/handlers/summary-record.d.ts.map +1 -1
  54. package/dist/os/compass/handlers/summary-record.js +8 -4
  55. package/dist/os/compass/handlers/summary-record.js.map +1 -1
  56. package/dist/os/core/core.module.d.ts.map +1 -1
  57. package/dist/os/core/core.module.js +43 -4
  58. package/dist/os/core/core.module.js.map +1 -1
  59. package/dist/os/core/handlers/assets-helpers.d.ts.map +1 -1
  60. package/dist/os/core/handlers/assets-helpers.js +6 -3
  61. package/dist/os/core/handlers/assets-helpers.js.map +1 -1
  62. package/dist/os/core/handlers/build.js +1 -1
  63. package/dist/os/core/handlers/build.js.map +1 -1
  64. package/dist/os/core/handlers/determinism-check.d.ts.map +1 -1
  65. package/dist/os/core/handlers/determinism-check.js +10 -6
  66. package/dist/os/core/handlers/determinism-check.js.map +1 -1
  67. package/dist/os/core/handlers/dev.js +1 -1
  68. package/dist/os/core/handlers/dev.js.map +1 -1
  69. package/dist/os/core/handlers/file-size-lint.d.ts.map +1 -1
  70. package/dist/os/core/handlers/file-size-lint.js +11 -7
  71. package/dist/os/core/handlers/file-size-lint.js.map +1 -1
  72. package/dist/os/core/handlers/forge-autonomy-validate.d.ts.map +1 -1
  73. package/dist/os/core/handlers/forge-autonomy-validate.js +9 -5
  74. package/dist/os/core/handlers/forge-autonomy-validate.js.map +1 -1
  75. package/dist/os/core/handlers/knowledge-compact.js +1 -1
  76. package/dist/os/core/handlers/knowledge-compact.js.map +1 -1
  77. package/dist/os/core/handlers/package-health.js +1 -1
  78. package/dist/os/core/handlers/package-health.js.map +1 -1
  79. package/dist/os/core/handlers/pinned-check.js +2 -2
  80. package/dist/os/core/handlers/pinned-check.js.map +1 -1
  81. package/dist/os/core/handlers/pinned-init.d.ts.map +1 -1
  82. package/dist/os/core/handlers/pinned-init.js +9 -8
  83. package/dist/os/core/handlers/pinned-init.js.map +1 -1
  84. package/dist/os/core/handlers/pinned-validate.js +3 -3
  85. package/dist/os/core/handlers/pinned-validate.js.map +1 -1
  86. package/dist/os/core/handlers/profile-resolve.js +1 -1
  87. package/dist/os/core/handlers/profile-resolve.js.map +1 -1
  88. package/dist/os/core/handlers/public-surface.js +1 -1
  89. package/dist/os/core/handlers/public-surface.js.map +1 -1
  90. package/dist/os/core/handlers/release-prepare.d.ts.map +1 -1
  91. package/dist/os/core/handlers/release-prepare.js +10 -6
  92. package/dist/os/core/handlers/release-prepare.js.map +1 -1
  93. package/dist/os/core/handlers/release-publish.js +6 -6
  94. package/dist/os/core/handlers/release-publish.js.map +1 -1
  95. package/dist/os/core/handlers/validate.js +1 -1
  96. package/dist/os/core/handlers/validate.js.map +1 -1
  97. package/dist/os/exploration/exploration.module.d.ts.map +1 -1
  98. package/dist/os/exploration/exploration.module.js +1 -0
  99. package/dist/os/exploration/exploration.module.js.map +1 -1
  100. package/dist/os/exploration/frontmatter-io.js +4 -4
  101. package/dist/os/exploration/frontmatter-io.js.map +1 -1
  102. package/dist/os/exploration/handlers/archive.js +3 -3
  103. package/dist/os/exploration/handlers/archive.js.map +1 -1
  104. package/dist/os/mission/handlers/archive.d.ts.map +1 -1
  105. package/dist/os/mission/handlers/archive.js +44 -23
  106. package/dist/os/mission/handlers/archive.js.map +1 -1
  107. package/dist/os/mission/mission.module.js +3 -3
  108. package/dist/os/mission/mission.module.js.map +1 -1
  109. package/dist/os/naming/naming-convention.d.ts.map +1 -1
  110. package/dist/os/naming/naming-convention.js +7 -3
  111. package/dist/os/naming/naming-convention.js.map +1 -1
  112. package/dist/os/naming/naming.module.d.ts.map +1 -1
  113. package/dist/os/naming/naming.module.js +4 -3
  114. package/dist/os/naming/naming.module.js.map +1 -1
  115. package/dist/os/notes/notes.module.d.ts.map +1 -1
  116. package/dist/os/notes/notes.module.js +6 -3
  117. package/dist/os/notes/notes.module.js.map +1 -1
  118. package/dist/os/plan/frontmatter-io.js +5 -5
  119. package/dist/os/plan/frontmatter-io.js.map +1 -1
  120. package/dist/os/plan/handlers/archive.d.ts.map +1 -1
  121. package/dist/os/plan/handlers/archive.js +10 -4
  122. package/dist/os/plan/handlers/archive.js.map +1 -1
  123. package/dist/os/plan/plan.module.js +3 -3
  124. package/dist/os/plan/plan.module.js.map +1 -1
  125. package/dist/os/plugin/plugin.module.d.ts.map +1 -1
  126. package/dist/os/plugin/plugin.module.js +6 -3
  127. package/dist/os/plugin/plugin.module.js.map +1 -1
  128. package/dist/os/program/discovery.js +2 -2
  129. package/dist/os/program/discovery.js.map +1 -1
  130. package/dist/os/program/handlers/complete.js +1 -1
  131. package/dist/os/program/handlers/complete.js.map +1 -1
  132. package/dist/os/program/handlers/lease.js +1 -1
  133. package/dist/os/program/handlers/lease.js.map +1 -1
  134. package/dist/os/program/handlers/seal.js +1 -1
  135. package/dist/os/program/handlers/seal.js.map +1 -1
  136. package/dist/os/program/lease.js +1 -1
  137. package/dist/os/program/lease.js.map +1 -1
  138. package/dist/os/program/program.module.d.ts.map +1 -1
  139. package/dist/os/program/program.module.js +9 -3
  140. package/dist/os/program/program.module.js.map +1 -1
  141. package/dist/os/queue/index.js +1 -1
  142. package/dist/os/queue/manifest.d.ts.map +1 -1
  143. package/dist/os/queue/manifest.js +4 -8
  144. package/dist/os/queue/manifest.js.map +1 -1
  145. package/dist/os/rfc/acceptance.d.ts.map +1 -1
  146. package/dist/os/rfc/acceptance.js +10 -6
  147. package/dist/os/rfc/acceptance.js.map +1 -1
  148. package/dist/os/rfc/decision-log.d.ts.map +1 -1
  149. package/dist/os/rfc/decision-log.js +4 -3
  150. package/dist/os/rfc/decision-log.js.map +1 -1
  151. package/dist/os/rfc/dna-trace.d.ts.map +1 -1
  152. package/dist/os/rfc/dna-trace.js +7 -2
  153. package/dist/os/rfc/dna-trace.js.map +1 -1
  154. package/dist/os/rfc/frontmatter-io.js +5 -5
  155. package/dist/os/rfc/frontmatter-io.js.map +1 -1
  156. package/dist/os/rfc/handlers/archive.d.ts.map +1 -1
  157. package/dist/os/rfc/handlers/archive.js +11 -5
  158. package/dist/os/rfc/handlers/archive.js.map +1 -1
  159. package/dist/os/rfc/handlers/check.d.ts.map +1 -1
  160. package/dist/os/rfc/handlers/check.js +6 -3
  161. package/dist/os/rfc/handlers/check.js.map +1 -1
  162. package/dist/os/rfc/handlers/implement-stamp.d.ts.map +1 -1
  163. package/dist/os/rfc/handlers/implement-stamp.js +11 -10
  164. package/dist/os/rfc/handlers/implement-stamp.js.map +1 -1
  165. package/dist/os/rfc/handlers/index-graph.js +3 -3
  166. package/dist/os/rfc/handlers/index-graph.js.map +1 -1
  167. package/dist/os/rfc/handlers/lifecycle.d.ts.map +1 -1
  168. package/dist/os/rfc/handlers/lifecycle.js +6 -2
  169. package/dist/os/rfc/handlers/lifecycle.js.map +1 -1
  170. package/dist/os/rfc/handlers/list-create.d.ts.map +1 -1
  171. package/dist/os/rfc/handlers/list-create.js +7 -6
  172. package/dist/os/rfc/handlers/list-create.js.map +1 -1
  173. package/dist/os/rfc/handlers/shared.js +3 -3
  174. package/dist/os/rfc/handlers/shared.js.map +1 -1
  175. package/dist/os/rfc/handlers/supersede-propose.d.ts.map +1 -1
  176. package/dist/os/rfc/handlers/supersede-propose.js +7 -3
  177. package/dist/os/rfc/handlers/supersede-propose.js.map +1 -1
  178. package/dist/os/rfc/handlers/validate-rules.d.ts.map +1 -1
  179. package/dist/os/rfc/handlers/validate-rules.js +8 -5
  180. package/dist/os/rfc/handlers/validate-rules.js.map +1 -1
  181. package/dist/os/rfc/handlers/validate.d.ts.map +1 -1
  182. package/dist/os/rfc/handlers/validate.js +6 -1
  183. package/dist/os/rfc/handlers/validate.js.map +1 -1
  184. package/dist/os/rfc/rfc.module.d.ts.map +1 -1
  185. package/dist/os/rfc/rfc.module.js +44 -4
  186. package/dist/os/rfc/rfc.module.js.map +1 -1
  187. package/dist/os/rfc/verification-evidence.d.ts.map +1 -1
  188. package/dist/os/rfc/verification-evidence.js +9 -5
  189. package/dist/os/rfc/verification-evidence.js.map +1 -1
  190. package/dist/os/rfc/verification-refresh.d.ts.map +1 -1
  191. package/dist/os/rfc/verification-refresh.js +4 -3
  192. package/dist/os/rfc/verification-refresh.js.map +1 -1
  193. package/dist/os/session/frontmatter-io.js +12 -12
  194. package/dist/os/session/frontmatter-io.js.map +1 -1
  195. package/dist/os/session/handlers/archive.d.ts.map +1 -1
  196. package/dist/os/session/handlers/archive.js +10 -4
  197. package/dist/os/session/handlers/archive.js.map +1 -1
  198. package/dist/os/session/handlers/metrics-aggregate.d.ts.map +1 -1
  199. package/dist/os/session/handlers/metrics-aggregate.js +9 -5
  200. package/dist/os/session/handlers/metrics-aggregate.js.map +1 -1
  201. package/dist/os/session/handlers/metrics-rfc.d.ts.map +1 -1
  202. package/dist/os/session/handlers/metrics-rfc.js +11 -8
  203. package/dist/os/session/handlers/metrics-rfc.js.map +1 -1
  204. package/dist/os/session/handlers/metrics-session.d.ts.map +1 -1
  205. package/dist/os/session/handlers/metrics-session.js +6 -3
  206. package/dist/os/session/handlers/metrics-session.js.map +1 -1
  207. package/dist/os/session/handlers/save.d.ts.map +1 -1
  208. package/dist/os/session/handlers/save.js +14 -8
  209. package/dist/os/session/handlers/save.js.map +1 -1
  210. package/dist/os/session/session.module.d.ts.map +1 -1
  211. package/dist/os/session/session.module.js +6 -0
  212. package/dist/os/session/session.module.js.map +1 -1
  213. package/dist/os/spec/live-spec-list.js +4 -4
  214. package/dist/os/spec/live-spec-list.js.map +1 -1
  215. package/dist/os/spec/live-spec-merge.js +5 -5
  216. package/dist/os/spec/live-spec-merge.js.map +1 -1
  217. package/dist/os/spec/live-spec-show.js +3 -3
  218. package/dist/os/spec/live-spec-show.js.map +1 -1
  219. package/dist/os/spec/live-spec-validate.js +4 -4
  220. package/dist/os/spec/live-spec-validate.js.map +1 -1
  221. package/dist/os/spec/spec-materialize.js +9 -9
  222. package/dist/os/spec/spec-materialize.js.map +1 -1
  223. package/dist/os/spec/spec-status.js +9 -9
  224. package/dist/os/spec/spec-status.js.map +1 -1
  225. package/dist/os/spec/spec-validate.js +7 -7
  226. package/dist/os/spec/spec-validate.js.map +1 -1
  227. package/dist/os/spec/spec.module.d.ts.map +1 -1
  228. package/dist/os/spec/spec.module.js +8 -0
  229. package/dist/os/spec/spec.module.js.map +1 -1
  230. package/dist/os/werkstatt/handlers/lock.js +16 -16
  231. package/dist/os/werkstatt/handlers/lock.js.map +1 -1
  232. package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js +3 -3
  233. package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js.map +1 -1
  234. package/dist/os/werkstatt/handlers/werkstatt-operation-validate.d.ts.map +1 -1
  235. package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js +3 -2
  236. package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js.map +1 -1
  237. package/dist/os/werkstatt/handlers/workspace-deps.d.ts.map +1 -1
  238. package/dist/os/werkstatt/handlers/workspace-deps.js +0 -1
  239. package/dist/os/werkstatt/handlers/workspace-deps.js.map +1 -1
  240. package/dist/os/werkstatt/werkstatt.module.d.ts.map +1 -1
  241. package/dist/os/werkstatt/werkstatt.module.js +6 -2
  242. package/dist/os/werkstatt/werkstatt.module.js.map +1 -1
  243. package/dist/os/workflow/handlers.d.ts.map +1 -1
  244. package/dist/os/workflow/handlers.js +8 -5
  245. package/dist/os/workflow/handlers.js.map +1 -1
  246. package/dist/os/workflow/workflow.module.d.ts.map +1 -1
  247. package/dist/os/workflow/workflow.module.js +6 -3
  248. package/dist/os/workflow/workflow.module.js.map +1 -1
  249. package/dist/src/cli-flags.d.ts +28 -0
  250. package/dist/src/cli-flags.d.ts.map +1 -0
  251. package/dist/src/cli-flags.js +232 -0
  252. package/dist/src/cli-flags.js.map +1 -0
  253. package/dist/src/compass/contract-registry.js +1 -1
  254. package/dist/src/compass/contract-registry.js.map +1 -1
  255. package/dist/src/config/forge-config.d.ts +1 -1
  256. package/dist/src/config/forge-config.js +1 -1
  257. package/dist/src/config/forge-config.js.map +1 -1
  258. package/dist/src/knowledge/budgets.js +1 -1
  259. package/dist/src/knowledge/budgets.js.map +1 -1
  260. package/dist/src/knowledge/compact.js +1 -1
  261. package/dist/src/knowledge/compact.js.map +1 -1
  262. package/dist/src/knowledge/parse.js +1 -1
  263. package/dist/src/knowledge/parse.js.map +1 -1
  264. package/dist/src/knowledge/sync.d.ts.map +1 -1
  265. package/dist/src/knowledge/sync.js +3 -5
  266. package/dist/src/knowledge/sync.js.map +1 -1
  267. package/dist/src/migration-adapters/git-utils.js +2 -2
  268. package/dist/src/migration-adapters/git-utils.js.map +1 -1
  269. package/dist/src/migration-adapters/ignored-files.js +2 -2
  270. package/dist/src/migration-adapters/ignored-files.js.map +1 -1
  271. package/dist/src/migration-adapters/node-typescript-pnpm/index.js +1 -1
  272. package/dist/src/migration-adapters/node-typescript-pnpm/index.js.map +1 -1
  273. package/dist/src/migration-adapters/phaser-pnpm/index.js +1 -1
  274. package/dist/src/migration-adapters/phaser-pnpm/index.js.map +1 -1
  275. package/dist/src/onboarding/agents-generate.d.ts.map +1 -1
  276. package/dist/src/onboarding/agents-generate.js +76 -34
  277. package/dist/src/onboarding/agents-generate.js.map +1 -1
  278. package/dist/src/onboarding/create.d.ts.map +1 -1
  279. package/dist/src/onboarding/create.js +10 -10
  280. package/dist/src/onboarding/create.js.map +1 -1
  281. package/dist/src/onboarding/doctor.d.ts.map +1 -1
  282. package/dist/src/onboarding/doctor.js +68 -59
  283. package/dist/src/onboarding/doctor.js.map +1 -1
  284. package/dist/src/onboarding/init.d.ts.map +1 -1
  285. package/dist/src/onboarding/init.js +30 -1
  286. package/dist/src/onboarding/init.js.map +1 -1
  287. package/dist/src/onboarding/invariant-engine.js +1 -1
  288. package/dist/src/onboarding/invariant-engine.js.map +1 -1
  289. package/dist/src/onboarding/memory-compact.d.ts.map +1 -1
  290. package/dist/src/onboarding/memory-compact.js +5 -4
  291. package/dist/src/onboarding/memory-compact.js.map +1 -1
  292. package/dist/src/onboarding/memory-scaffold.js +1 -1
  293. package/dist/src/onboarding/memory-scaffold.js.map +1 -1
  294. package/dist/src/onboarding/nested-agents-generate.d.ts +4 -1
  295. package/dist/src/onboarding/nested-agents-generate.d.ts.map +1 -1
  296. package/dist/src/onboarding/nested-agents-generate.js +34 -5
  297. package/dist/src/onboarding/nested-agents-generate.js.map +1 -1
  298. package/dist/src/onboarding/nested-agents-templates.d.ts.map +1 -1
  299. package/dist/src/onboarding/nested-agents-templates.js +8 -12
  300. package/dist/src/onboarding/nested-agents-templates.js.map +1 -1
  301. package/dist/src/onboarding/npm-token-check.js +2 -2
  302. package/dist/src/onboarding/npm-token-check.js.map +1 -1
  303. package/dist/src/onboarding/prettierignore.d.ts +29 -0
  304. package/dist/src/onboarding/prettierignore.d.ts.map +1 -0
  305. package/dist/src/onboarding/prettierignore.js +231 -0
  306. package/dist/src/onboarding/prettierignore.js.map +1 -0
  307. package/dist/src/onboarding/profile-validate.d.ts.map +1 -1
  308. package/dist/src/onboarding/profile-validate.js +5 -4
  309. package/dist/src/onboarding/profile-validate.js.map +1 -1
  310. package/dist/src/onboarding/scaffold-project.d.ts.map +1 -1
  311. package/dist/src/onboarding/scaffold-project.js +35 -27
  312. package/dist/src/onboarding/scaffold-project.js.map +1 -1
  313. package/dist/src/onboarding/scaffold.js +1 -1
  314. package/dist/src/onboarding/scaffold.js.map +1 -1
  315. package/dist/src/onboarding/skill-markers.d.ts +27 -0
  316. package/dist/src/onboarding/skill-markers.d.ts.map +1 -0
  317. package/dist/src/onboarding/skill-markers.js +131 -0
  318. package/dist/src/onboarding/skill-markers.js.map +1 -0
  319. package/dist/src/onboarding/upgrade.d.ts +10 -0
  320. package/dist/src/onboarding/upgrade.d.ts.map +1 -1
  321. package/dist/src/onboarding/upgrade.js +215 -74
  322. package/dist/src/onboarding/upgrade.js.map +1 -1
  323. package/dist/src/onboarding/workspace-discovery.js +1 -1
  324. package/dist/src/onboarding/workspace-discovery.js.map +1 -1
  325. package/dist/src/pipeline-status.d.ts +6 -5
  326. package/dist/src/pipeline-status.d.ts.map +1 -1
  327. package/dist/src/pipeline-status.js +24 -19
  328. package/dist/src/pipeline-status.js.map +1 -1
  329. package/dist/src/profiles/stack-profile.js +1 -1
  330. package/dist/src/profiles/stack-profile.js.map +1 -1
  331. package/dist/src/registry.d.ts +1 -1
  332. package/dist/src/registry.d.ts.map +1 -1
  333. package/dist/src/registry.js +3 -3
  334. package/dist/src/registry.js.map +1 -1
  335. package/dist/src/skill-schema.d.ts +1 -1
  336. package/dist/src/skill-schema.d.ts.map +1 -1
  337. package/dist/src/skill-schema.js +4 -1
  338. package/dist/src/skill-schema.js.map +1 -1
  339. package/dist/src/types.d.ts +116 -0
  340. package/dist/src/types.d.ts.map +1 -1
  341. package/dist/src/utils/editable-region.d.ts +46 -0
  342. package/dist/src/utils/editable-region.d.ts.map +1 -0
  343. package/dist/src/utils/editable-region.js +125 -0
  344. package/dist/src/utils/editable-region.js.map +1 -0
  345. package/dist/src/utils/fs-idempotent.d.ts +2 -1
  346. package/dist/src/utils/fs-idempotent.d.ts.map +1 -1
  347. package/dist/src/utils/fs-idempotent.js +11 -7
  348. package/dist/src/utils/fs-idempotent.js.map +1 -1
  349. package/dist/src/utils/generated-marker.d.ts +17 -0
  350. package/dist/src/utils/generated-marker.d.ts.map +1 -1
  351. package/dist/src/utils/generated-marker.js +29 -1
  352. package/dist/src/utils/generated-marker.js.map +1 -1
  353. package/dist/src/utils/index.d.ts +3 -1
  354. package/dist/src/utils/index.d.ts.map +1 -1
  355. package/dist/src/utils/index.js +3 -1
  356. package/dist/src/utils/index.js.map +1 -1
  357. package/dist/src/utils/io.d.ts +9 -0
  358. package/dist/src/utils/io.d.ts.map +1 -0
  359. package/dist/src/utils/io.js +130 -0
  360. package/dist/src/utils/io.js.map +1 -0
  361. package/dist/src/utils/markdown-table.d.ts +21 -0
  362. package/dist/src/utils/markdown-table.d.ts.map +1 -0
  363. package/dist/src/utils/markdown-table.js +116 -0
  364. package/dist/src/utils/markdown-table.js.map +1 -0
  365. package/dist/src/utils/sync-fs.d.ts +5 -0
  366. package/dist/src/utils/sync-fs.d.ts.map +1 -0
  367. package/dist/src/utils/sync-fs.js +26 -0
  368. package/dist/src/utils/sync-fs.js.map +1 -0
  369. package/dist/src/validators/note-frontmatter-validate.js +1 -1
  370. package/dist/src/validators/note-frontmatter-validate.js.map +1 -1
  371. package/dist/src/validators/note-link-validate.js +1 -1
  372. package/dist/src/validators/note-link-validate.js.map +1 -1
  373. package/dist/src/validators/note-orphan-detect.js +1 -1
  374. package/dist/src/validators/note-orphan-detect.js.map +1 -1
  375. package/dist/src/validators/port-validate.js +1 -1
  376. package/dist/src/validators/port-validate.js.map +1 -1
  377. package/dist/src/validators/skill-validate.d.ts.map +1 -1
  378. package/dist/src/validators/skill-validate.js +34 -13
  379. package/dist/src/validators/skill-validate.js.map +1 -1
  380. package/os/adr/adr.module.ts +136 -132
  381. package/os/adr/frontmatter-io.ts +5 -5
  382. package/os/adr/handlers/archive.ts +8 -4
  383. package/os/adr/handlers/implement-stamp.ts +14 -10
  384. package/os/adr/handlers/list-create.ts +5 -5
  385. package/os/adr/handlers/validate.ts +1 -1
  386. package/os/audit/audit.module.ts +33 -34
  387. package/os/audit/frontmatter-io.ts +5 -5
  388. package/os/audit/handlers/archive.ts +8 -4
  389. package/os/compass/compass.module.ts +17 -1
  390. package/os/compass/handlers/compass-audit-handler.ts +13 -5
  391. package/os/compass/handlers/compass-change-summary-handler.ts +4 -2
  392. package/os/compass/handlers/compass-inventory-handler.ts +7 -4
  393. package/os/compass/handlers/compass-inventory.ts +11 -8
  394. package/os/compass/handlers/compass-migrate-handler.ts +1 -1
  395. package/os/compass/handlers/compass-migrate.ts +7 -3
  396. package/os/compass/handlers/git-revision.ts +11 -6
  397. package/os/compass/handlers/resolve-scan-root.ts +1 -1
  398. package/os/compass/handlers/summary-record.ts +10 -4
  399. package/os/compass/handlers/tests/compass-audit-plan.test.ts +2 -1
  400. package/os/core/core.module.ts +43 -4
  401. package/os/core/handlers/assets-helpers.ts +7 -3
  402. package/os/core/handlers/build.ts +1 -1
  403. package/os/core/handlers/determinism-check.ts +12 -6
  404. package/os/core/handlers/dev.ts +1 -1
  405. package/os/core/handlers/file-size-lint.ts +16 -9
  406. package/os/core/handlers/forge-autonomy-validate.ts +10 -5
  407. package/os/core/handlers/knowledge-compact.ts +1 -1
  408. package/os/core/handlers/package-health.ts +1 -1
  409. package/os/core/handlers/pinned-check.ts +2 -2
  410. package/os/core/handlers/pinned-init.ts +9 -8
  411. package/os/core/handlers/pinned-validate.ts +3 -3
  412. package/os/core/handlers/profile-resolve.ts +1 -1
  413. package/os/core/handlers/public-surface.ts +1 -1
  414. package/os/core/handlers/release-prepare.ts +11 -6
  415. package/os/core/handlers/release-publish.ts +6 -6
  416. package/os/core/handlers/validate.ts +1 -1
  417. package/os/exploration/exploration.module.ts +1 -0
  418. package/os/exploration/frontmatter-io.ts +4 -4
  419. package/os/exploration/handlers/archive.ts +3 -3
  420. package/os/mission/handlers/archive.test.ts +38 -1
  421. package/os/mission/handlers/archive.ts +54 -23
  422. package/os/mission/mission.module.ts +38 -39
  423. package/os/naming/naming-convention.ts +9 -3
  424. package/os/naming/naming.module.ts +25 -25
  425. package/os/notes/notes.module.ts +87 -85
  426. package/os/plan/frontmatter-io.ts +5 -5
  427. package/os/plan/handlers/archive.ts +8 -4
  428. package/os/plan/plan.module.ts +33 -34
  429. package/os/plugin/plugin.module.ts +8 -6
  430. package/os/program/discovery.ts +2 -2
  431. package/os/program/handlers/complete.ts +1 -1
  432. package/os/program/handlers/lease.ts +1 -1
  433. package/os/program/handlers/seal.ts +1 -1
  434. package/os/program/lease.ts +1 -1
  435. package/os/program/program.module.ts +198 -193
  436. package/os/queue/index.ts +1 -1
  437. package/os/queue/manifest.ts +10 -9
  438. package/os/queue/queue-validate.test.ts +6 -15
  439. package/os/rfc/acceptance.ts +12 -6
  440. package/os/rfc/decision-log.ts +4 -3
  441. package/os/rfc/dna-trace.ts +8 -2
  442. package/os/rfc/frontmatter-io.ts +5 -5
  443. package/os/rfc/handlers/archive.ts +9 -5
  444. package/os/rfc/handlers/check.ts +5 -3
  445. package/os/rfc/handlers/implement-stamp.ts +15 -10
  446. package/os/rfc/handlers/index-graph.ts +3 -3
  447. package/os/rfc/handlers/lifecycle.ts +7 -2
  448. package/os/rfc/handlers/list-create.ts +7 -6
  449. package/os/rfc/handlers/shared.ts +3 -3
  450. package/os/rfc/handlers/supersede-propose.ts +8 -3
  451. package/os/rfc/handlers/validate-rules-rfc1006.test.ts +18 -6
  452. package/os/rfc/handlers/validate-rules.ts +10 -5
  453. package/os/rfc/handlers/validate.test.ts +71 -0
  454. package/os/rfc/handlers/validate.ts +6 -1
  455. package/os/rfc/rfc-create-concurrent.test.ts +11 -3
  456. package/os/rfc/rfc.module.ts +413 -374
  457. package/os/rfc/verification-evidence.ts +11 -5
  458. package/os/rfc/verification-refresh.ts +4 -3
  459. package/os/session/frontmatter-io.ts +14 -14
  460. package/os/session/handlers/archive.ts +8 -4
  461. package/os/session/handlers/metrics-aggregate.ts +34 -13
  462. package/os/session/handlers/metrics-rfc.ts +13 -8
  463. package/os/session/handlers/metrics-session.ts +7 -3
  464. package/os/session/handlers/save.ts +12 -8
  465. package/os/session/session.module.ts +6 -0
  466. package/os/spec/live-spec-list.ts +4 -4
  467. package/os/spec/live-spec-merge.ts +5 -5
  468. package/os/spec/live-spec-show.ts +3 -3
  469. package/os/spec/live-spec-validate.ts +4 -4
  470. package/os/spec/spec-materialize.ts +9 -9
  471. package/os/spec/spec-status.ts +9 -9
  472. package/os/spec/spec-validate.ts +7 -7
  473. package/os/spec/spec.module.ts +8 -0
  474. package/os/werkstatt/handlers/lock.ts +16 -16
  475. package/os/werkstatt/handlers/werkstatt-lock-recover.ts +3 -3
  476. package/os/werkstatt/handlers/werkstatt-operation-validate.ts +4 -2
  477. package/os/werkstatt/handlers/workspace-deps.ts +0 -1
  478. package/os/werkstatt/werkstatt.module.ts +8 -5
  479. package/os/workflow/handlers.ts +7 -5
  480. package/os/workflow/workflow.module.ts +45 -44
  481. package/package.json +1 -1
  482. package/profiles/forge-shell.yaml +1 -1
  483. package/profiles/godot-game.yaml +1 -1
  484. package/profiles/knowledge.yaml +1 -1
  485. package/profiles/phaser-game.yaml +1 -1
  486. package/profiles/site-workshop.yaml +1 -1
  487. package/profiles/typescript.yaml +1 -1
  488. package/skills/fo/fo-add-tests/SKILL.md +2 -2
  489. package/skills/fo/fo-architecture/SKILL.md +2 -2
  490. package/skills/fo/fo-compass-annotate/SKILL.md +2 -2
  491. package/skills/fo/fo-design-summit/SKILL.md +2 -2
  492. package/skills/fo/fo-doc-audit/SKILL.md +2 -2
  493. package/skills/fo/fo-explore/SKILL.md +2 -2
  494. package/skills/fo/fo-extract-dna/SKILL.md +2 -2
  495. package/skills/fo/fo-fix/SKILL.md +2 -2
  496. package/skills/fo/fo-handoff/SKILL.md +2 -2
  497. package/skills/fo/fo-harvest/SKILL.md +2 -2
  498. package/skills/fo/fo-idea/SKILL.md +2 -2
  499. package/skills/fo/fo-idea-audit/SKILL.md +2 -2
  500. package/skills/fo/fo-idea-create-adr/SKILL.md +3 -3
  501. package/skills/fo/fo-idea-create-rfc/SKILL.md +3 -3
  502. package/skills/fo/fo-idea-enhance/SKILL.md +2 -2
  503. package/skills/fo/fo-idea-i-just-want-to-see-the-plan/SKILL.md +2 -2
  504. package/skills/fo/fo-idea-i-just-want-to-see-the-result/SKILL.md +1 -1
  505. package/skills/fo/fo-idea-implement/SKILL.md +2 -2
  506. package/skills/fo/fo-idea-plan/SKILL.md +2 -2
  507. package/skills/fo/fo-idea-status/SKILL.md +2 -2
  508. package/skills/fo/fo-knowledge-distill/SKILL.md +2 -2
  509. package/skills/fo/fo-memory-sync/SKILL.md +2 -2
  510. package/skills/fo/fo-qa/SKILL.md +2 -2
  511. package/skills/fo/fo-review/SKILL.md +2 -2
  512. package/skills/fo/fo-session-retro/SKILL.md +2 -2
  513. package/skills/fo/fo-session-save/SKILL.md +2 -2
  514. package/skills/fo/fo-spec-ingest/SKILL.md +2 -2
  515. package/skills/fo/fo-step-commit/SKILL.md +1 -1
  516. package/skills/fo/fo-triage/SKILL.md +2 -2
  517. package/skills/meta/forge-bootstrap/SKILL.md +1 -1
  518. package/skills/meta/port-to-forge/SKILL.md +1 -1
  519. package/skills/meta/skill-create/SKILL.md +1 -1
  520. package/skills/shared/grilling/SKILL.md +1 -1
  521. package/skills/shared/grilling/learned-principles.archive.md +17 -0
  522. package/skills/shared/grilling/learned-principles.md +0 -1
  523. package/skills/shared/knowledge/learned-principles.md +6 -0
  524. package/skills/shared/my-preferences/SKILL.md +1 -1
  525. package/skills/shared/windows-ai-tooling/SKILL.md +1 -1
  526. package/skills/shared/writing-great-skills/SKILL.md +1 -1
  527. package/src/cli-flags.ts +285 -0
  528. package/src/compass/contract-registry.ts +1 -1
  529. package/src/config/forge-config.ts +1 -1
  530. package/src/knowledge/__tests__/sync.test.ts +2 -7
  531. package/src/knowledge/budgets.ts +1 -1
  532. package/src/knowledge/compact.ts +1 -1
  533. package/src/knowledge/parse.ts +1 -1
  534. package/src/knowledge/sync.ts +3 -5
  535. package/src/migration-adapters/git-utils.ts +2 -2
  536. package/src/migration-adapters/ignored-files.ts +2 -2
  537. package/src/migration-adapters/node-typescript-pnpm/index.ts +1 -1
  538. package/src/migration-adapters/phaser-pnpm/index.ts +1 -1
  539. package/src/onboarding/agents-generate.ts +92 -36
  540. package/src/onboarding/create.ts +10 -10
  541. package/src/onboarding/doctor.ts +70 -55
  542. package/src/onboarding/init.ts +38 -1
  543. package/src/onboarding/invariant-engine.ts +1 -1
  544. package/src/onboarding/memory-compact.ts +5 -4
  545. package/src/onboarding/memory-scaffold.ts +1 -1
  546. package/src/onboarding/nested-agents-generate.ts +45 -4
  547. package/src/onboarding/nested-agents-templates.ts +19 -13
  548. package/src/onboarding/npm-token-check.ts +2 -2
  549. package/src/onboarding/prettierignore.ts +263 -0
  550. package/src/onboarding/profile-validate.ts +5 -4
  551. package/src/onboarding/scaffold-project.ts +38 -27
  552. package/src/onboarding/scaffold.ts +1 -1
  553. package/src/onboarding/skill-markers.ts +162 -0
  554. package/src/onboarding/templates/behavioral-layer-core.md +2 -4
  555. package/src/onboarding/upgrade.ts +285 -89
  556. package/src/onboarding/workspace-discovery.ts +1 -1
  557. package/src/pipeline-status.test.ts +1 -4
  558. package/src/pipeline-status.ts +30 -13
  559. package/src/profiles/stack-profile.ts +1 -1
  560. package/src/registry.ts +4 -4
  561. package/src/skill-schema.ts +4 -1
  562. package/src/tests/acceptance-probe-kinds.test.ts +5 -15
  563. package/src/tests/agents-generate.test.ts +28 -5
  564. package/src/tests/cli-flags.test.ts +169 -0
  565. package/src/tests/contract-registry.test.ts +12 -6
  566. package/src/tests/doctor-fix.test.ts +1 -4
  567. package/src/tests/doctor-nested-agents.test.ts +53 -1
  568. package/src/tests/editable-generated-region.test.ts +231 -0
  569. package/src/tests/file-size-lint.test.ts +8 -12
  570. package/src/tests/fixtures/agents-generate-business-before.txt +85 -56
  571. package/src/tests/markdown-table.test.ts +107 -0
  572. package/src/tests/prettierignore-manage.test.ts +134 -0
  573. package/src/tests/skill-agents-sync.test.ts +168 -0
  574. package/src/tests/skill-sync-marker.test.ts +134 -0
  575. package/src/tests/skill-validate.test.ts +12 -5
  576. package/src/tests/upgrade.test.ts +87 -41
  577. package/src/types.ts +123 -0
  578. package/src/utils/editable-region.ts +156 -0
  579. package/src/utils/fs-idempotent.ts +12 -6
  580. package/src/utils/generated-marker.ts +36 -2
  581. package/src/utils/index.ts +17 -0
  582. package/src/utils/io.ts +143 -0
  583. package/src/utils/markdown-table.ts +121 -0
  584. package/src/utils/sync-fs.ts +43 -0
  585. package/src/validators/note-frontmatter-validate.ts +1 -1
  586. package/src/validators/note-link-validate.ts +1 -1
  587. package/src/validators/note-orphan-detect.ts +1 -1
  588. package/src/validators/port-validate.ts +1 -1
  589. package/src/validators/skill-validate.ts +38 -13
  590. package/AGENTS.md +0 -502
@@ -7,39 +7,39 @@
7
7
  </MODULE_CONTRACT>
8
8
  <CHANGE_SUMMARY>
9
9
  <item>RFC-0374: initial forgeNamingModule registering naming.convention.lint.</item>
10
+ <item>RFC-1173: declare mutatesState on all kernel commands — collectDeclarationDiagnostics emits error-severity MUTATES-STATE-DECLARED, command.manifest.validate is the blocking consumer in packages.check, sweep declares the flag on every command definition (factories hardcode false for read-only check specs)</item>
10
11
  </CHANGE_SUMMARY>
11
12
  */
12
13
 
13
14
  import type { ForgeModule } from "../../src/forge-module.ts";
14
15
 
15
16
  export async function createForgeNamingModule(): Promise<ForgeModule> {
16
- const { runNamingConventionLint } = await import("./naming-convention.ts");
17
+ const { runNamingConventionLint } = await import("./naming-convention.ts");
17
18
  return {
18
- name: "forge-naming",
19
- version: "0.1.0",
20
- runtime: "autonomous",
19
+ name: "forge-naming",
20
+ version: "0.1.0",
21
+ runtime: "autonomous",
21
22
  declarations: [],
22
- commands: [
23
- {
24
- name: "naming.convention.lint",
25
- contract: "naming",
26
- rules: [],
27
- description:
28
- "Validate all filenames use kebab-case (no underscores) across registered workspace roots.",
29
- scope: "workspace",
30
- supportsAllSites: true,
31
- flags: {
32
- "include-ignored": {
33
- kind: "boolean",
34
- description: "Also scan files ignored by .gitignore or .windsurfignore.",
23
+ commands: [
24
+ {
25
+ name: "naming.convention.lint",
26
+ mutatesState: false,
27
+ contract: "naming",
28
+ rules: [],
29
+ description:
30
+ "Validate all filenames use kebab-case (no underscores) across registered workspace roots.",
31
+ scope: "workspace",
32
+ supportsAllSites: true,
33
+ flags: {
34
+ "include-ignored": {
35
+ kind: "boolean",
36
+ description: "Also scan files ignored by .gitignore or .windsurfignore.",
37
+ },
35
38
  },
39
+ reads: ["packages/**/*.{ts,tsx}", "apps/**/*.{ts,tsx}", "services/**/*.{ts,tsx}"],
40
+ execute: runNamingConventionLint,
36
41
  },
37
- reads: ["packages/**/*.{ts,tsx}", "apps/**/*.{ts,tsx}", "services/**/*.{ts,tsx}"],
38
- execute: runNamingConventionLint,
39
- }
40
- ],
41
- pipelines: [
42
-
43
- ]};
42
+ ],
43
+ pipelines: [],
44
+ };
44
45
  }
45
- ;
@@ -7,6 +7,7 @@
7
7
  </MODULE_CONTRACT>
8
8
  <CHANGE_SUMMARY>
9
9
  <item>RFC-0808: initial forgeNotesModule registering 3 note validation commands.</item>
10
+ <item>RFC-1173: declare mutatesState on all kernel commands — collectDeclarationDiagnostics emits error-severity MUTATES-STATE-DECLARED, command.manifest.validate is the blocking consumer in packages.check, sweep declares the flag on every command definition (factories hardcode false for read-only check specs)</item>
10
11
  </CHANGE_SUMMARY>
11
12
  */
12
13
 
@@ -18,100 +19,101 @@ import type {
18
19
  } from "../../src/types.ts";
19
20
 
20
21
  export async function createForgeNotesModule(): Promise<ForgeModule> {
21
- const { runNoteLinkValidate } = await import("../../src/validators/note-link-validate.ts");
22
- const { runNoteFrontmatterValidate } =
23
- await import("../../src/validators/note-frontmatter-validate.ts");
24
- const { runNoteOrphanDetect } = await import("../../src/validators/note-orphan-detect.ts");
22
+ const { runNoteLinkValidate } = await import("../../src/validators/note-link-validate.ts");
23
+ const { runNoteFrontmatterValidate } =
24
+ await import("../../src/validators/note-frontmatter-validate.ts");
25
+ const { runNoteOrphanDetect } = await import("../../src/validators/note-orphan-detect.ts");
25
26
 
26
- const noteLinkValidateWrapper = async (
27
- input: ForgeCommandInput,
28
- context: ForgeRuntimeContext,
29
- ): Promise<ForgeCommandResult> => {
30
- return runNoteLinkValidate(input, context);
31
- };
27
+ const noteLinkValidateWrapper = async (
28
+ input: ForgeCommandInput,
29
+ context: ForgeRuntimeContext,
30
+ ): Promise<ForgeCommandResult> => {
31
+ return runNoteLinkValidate(input, context);
32
+ };
32
33
 
33
- const noteFrontmatterValidateWrapper = async (
34
- input: ForgeCommandInput,
35
- context: ForgeRuntimeContext,
36
- ): Promise<ForgeCommandResult> => {
37
- return runNoteFrontmatterValidate(input, context);
38
- };
34
+ const noteFrontmatterValidateWrapper = async (
35
+ input: ForgeCommandInput,
36
+ context: ForgeRuntimeContext,
37
+ ): Promise<ForgeCommandResult> => {
38
+ return runNoteFrontmatterValidate(input, context);
39
+ };
39
40
 
40
- const noteOrphanDetectWrapper = async (
41
- input: ForgeCommandInput,
42
- context: ForgeRuntimeContext,
43
- ): Promise<ForgeCommandResult> => {
44
- return runNoteOrphanDetect(input, context);
45
- };
41
+ const noteOrphanDetectWrapper = async (
42
+ input: ForgeCommandInput,
43
+ context: ForgeRuntimeContext,
44
+ ): Promise<ForgeCommandResult> => {
45
+ return runNoteOrphanDetect(input, context);
46
+ };
46
47
  return {
47
- name: "forge-notes",
48
- version: "0.1.0",
49
- runtime: "autonomous",
48
+ name: "forge-notes",
49
+ version: "0.1.0",
50
+ runtime: "autonomous",
50
51
  declarations: [],
51
- commands: [
52
- {
53
- name: "note.link.validate",
54
- contract: "note",
55
- rules: [],
56
- description:
57
- "Validate wikilink integrity across a markdown note vault. Scans [[wikilinks]] and resolves each against the note graph.",
58
- scope: "workspace",
59
- supportsAllSites: false,
60
- flags: {
61
- "vault-dir": {
62
- kind: "string",
63
- description: "Vault directory relative to workspace root (default: vault).",
64
- },
65
- path: {
66
- kind: "string",
67
- description: "Subdirectory within the vault to scope the scan to.",
52
+ commands: [
53
+ {
54
+ name: "note.link.validate",
55
+ mutatesState: false,
56
+ contract: "note",
57
+ rules: [],
58
+ description:
59
+ "Validate wikilink integrity across a markdown note vault. Scans [[wikilinks]] and resolves each against the note graph.",
60
+ scope: "workspace",
61
+ supportsAllSites: false,
62
+ flags: {
63
+ "vault-dir": {
64
+ kind: "string",
65
+ description: "Vault directory relative to workspace root (default: vault).",
66
+ },
67
+ path: {
68
+ kind: "string",
69
+ description: "Subdirectory within the vault to scope the scan to.",
70
+ },
68
71
  },
72
+ reads: ["vault/**/*.md"],
73
+ cacheable: false,
74
+ execute: noteLinkValidateWrapper,
69
75
  },
70
- reads: ["vault/**/*.md"],
71
- cacheable: false,
72
- execute: noteLinkValidateWrapper,
73
- },
74
- {
75
- name: "note.frontmatter.validate",
76
- contract: "note",
77
- rules: [],
78
- description:
79
- "Validate frontmatter consistency across a markdown note vault. Checks for required fields in YAML frontmatter.",
80
- scope: "workspace",
81
- supportsAllSites: false,
82
- flags: {
83
- "vault-dir": {
84
- kind: "string",
85
- description: "Vault directory relative to workspace root (default: vault).",
86
- },
87
- fields: {
88
- kind: "string",
89
- description: "Comma-separated list of required fields (default: title).",
76
+ {
77
+ name: "note.frontmatter.validate",
78
+ mutatesState: false,
79
+ contract: "note",
80
+ rules: [],
81
+ description:
82
+ "Validate frontmatter consistency across a markdown note vault. Checks for required fields in YAML frontmatter.",
83
+ scope: "workspace",
84
+ supportsAllSites: false,
85
+ flags: {
86
+ "vault-dir": {
87
+ kind: "string",
88
+ description: "Vault directory relative to workspace root (default: vault).",
89
+ },
90
+ fields: {
91
+ kind: "string",
92
+ description: "Comma-separated list of required fields (default: title).",
93
+ },
90
94
  },
95
+ reads: ["vault/**/*.md"],
96
+ cacheable: false,
97
+ execute: noteFrontmatterValidateWrapper,
91
98
  },
92
- reads: ["vault/**/*.md"],
93
- cacheable: false,
94
- execute: noteFrontmatterValidateWrapper,
95
- },
96
- {
97
- name: "note.orphan.detect",
98
- description:
99
- "Detect orphan notes in a markdown note vault — notes with zero inbound wikilinks. Always exits zero (warnings, not errors).",
100
- scope: "workspace",
101
- supportsAllSites: false,
102
- flags: {
103
- "vault-dir": {
104
- kind: "string",
105
- description: "Vault directory relative to workspace root (default: vault).",
99
+ {
100
+ name: "note.orphan.detect",
101
+ mutatesState: false,
102
+ description:
103
+ "Detect orphan notes in a markdown note vault — notes with zero inbound wikilinks. Always exits zero (warnings, not errors).",
104
+ scope: "workspace",
105
+ supportsAllSites: false,
106
+ flags: {
107
+ "vault-dir": {
108
+ kind: "string",
109
+ description: "Vault directory relative to workspace root (default: vault).",
110
+ },
106
111
  },
112
+ reads: ["vault/**/*.md"],
113
+ cacheable: false,
114
+ execute: noteOrphanDetectWrapper,
107
115
  },
108
- reads: ["vault/**/*.md"],
109
- cacheable: false,
110
- execute: noteOrphanDetectWrapper,
111
- }
112
- ],
113
- pipelines: [
114
-
115
- ]};
116
+ ],
117
+ pipelines: [],
118
+ };
116
119
  }
117
- ;
@@ -13,7 +13,7 @@ parsing for plan files under docs/plans/.
13
13
  </CHANGE_SUMMARY>
14
14
  */
15
15
 
16
- import fs from "node:fs/promises";
16
+ import { ambientIo as fs } from "../../src/utils/io.ts";
17
17
  import path from "node:path";
18
18
  import YAML from "yaml";
19
19
  import { PLAN_FILE_PATTERN } from "./types.ts";
@@ -39,13 +39,13 @@ export async function listPlanFiles(planDirPath: string): Promise<string[]> {
39
39
 
40
40
  async function scanDir(dirPath: string, relativePrefix: string): Promise<void> {
41
41
  try {
42
- const entries = await fs.readdir(dirPath, { withFileTypes: true });
42
+ const entries = await fs.readdir(dirPath);
43
43
  for (const entry of entries) {
44
44
  const relativePath = relativePrefix ? `${relativePrefix}/${entry.name}` : entry.name;
45
- if (entry.isDirectory()) {
45
+ if (entry.isDirectory) {
46
46
  await scanDir(path.join(dirPath, entry.name), relativePath);
47
47
  } else if (
48
- entry.isFile() &&
48
+ entry.isFile &&
49
49
  entry.name.endsWith(".md") &&
50
50
  !entry.name.startsWith("plan-0000") &&
51
51
  entry.name !== "README.md" &&
@@ -69,7 +69,7 @@ export async function readAndParsePlan(
69
69
  ): Promise<{ fileName: string; parsed: ParsedPlan } | undefined> {
70
70
  try {
71
71
  const filePath = path.join(planDirPath, fileName);
72
- const content = await fs.readFile(filePath, "utf-8");
72
+ const content = await fs.readFile(filePath);
73
73
  return { fileName, parsed: parsePlanFile(content) };
74
74
  } catch {
75
75
  return undefined;
@@ -16,7 +16,7 @@ non-terminal files found in subdirectories back to the root.
16
16
  </CHANGE_SUMMARY>
17
17
  */
18
18
 
19
- import fs from "node:fs/promises";
19
+ import { ambientIo as fs } from "../../../src/utils/io.ts";
20
20
  import path from "node:path";
21
21
  import { listPlanFiles, extractRfcIdFromPlanFile } from "../frontmatter-io.ts";
22
22
  import { loadRfcStatusMap } from "../../rfc/frontmatter-io.ts";
@@ -115,7 +115,9 @@ export async function runPlanArchive(
115
115
  }
116
116
 
117
117
  try {
118
- await fs.access(targetPath);
118
+ await fs.exists(targetPath).then((ok) => {
119
+ if (!ok) throw Object.assign(new Error("ENOENT"), { code: "ENOENT" });
120
+ });
119
121
  skipped.push({ id: rfcId, file: relFile, reason: "destination exists" });
120
122
  continue;
121
123
  } catch {
@@ -123,7 +125,7 @@ export async function runPlanArchive(
123
125
  }
124
126
 
125
127
  if (!dryRun) {
126
- await fs.mkdir(targetDir, { recursive: true });
128
+ await fs.mkdir(targetDir);
127
129
  try {
128
130
  await fs.rename(path.join(planDirPath, fileName), targetPath);
129
131
  } catch (err) {
@@ -166,7 +168,9 @@ export async function runPlanArchive(
166
168
  }
167
169
 
168
170
  try {
169
- await fs.access(targetPath);
171
+ await fs.exists(targetPath).then((ok) => {
172
+ if (!ok) throw Object.assign(new Error("ENOENT"), { code: "ENOENT" });
173
+ });
170
174
  skipped.push({ id: rfcId, file: relFile, reason: "destination exists" });
171
175
  continue;
172
176
  } catch {
@@ -13,42 +13,41 @@
13
13
  import type { ForgeModule } from "../../src/forge-module.ts";
14
14
 
15
15
  export async function createForgePlanModule(): Promise<ForgeModule> {
16
- const { runPlanArchive } = await import("./handlers/archive.ts");
16
+ const { runPlanArchive } = await import("./handlers/archive.ts");
17
17
  return {
18
- name: "forge-plan",
19
- version: "0.1.0",
20
- runtime: "autonomous",
18
+ name: "forge-plan",
19
+ version: "0.1.0",
20
+ runtime: "autonomous",
21
21
  declarations: [],
22
- commands: [
23
- {
24
- name: "plan.archive",
25
- description:
26
- "Move plan files whose parent RFC has terminal status " +
27
- "(implemented, rejected, superseded) into docs/plans/archive/<status>/ " +
28
- "subdirectories. Bidirectional: moves non-terminal files found in " +
29
- "subdirectories back to root. Use --dry-run to preview. " +
30
- "Use --status to filter to a single terminal status. " +
31
- "Prefer the docs.archive umbrella command unless you need to archive only plans.",
32
- scope: "workspace",
33
- mutatesState: true,
34
- writes: ["docs/plans/*.md", "docs/plans/archive/**"],
35
- reads: ["docs/plans/**/*.md", "docs/rfcs/**/*.md"],
36
- cacheable: false,
37
- flags: {
38
- "dry-run": {
39
- kind: "boolean",
40
- description: "Preview what would be moved without touching the filesystem.",
41
- },
42
- status: {
43
- kind: "string",
44
- description: "Filter to a single terminal status (implemented, rejected, superseded).",
22
+ commands: [
23
+ {
24
+ name: "plan.archive",
25
+ description:
26
+ "Move plan files whose parent RFC has terminal status " +
27
+ "(implemented, rejected, superseded) into docs/plans/archive/<status>/ " +
28
+ "subdirectories. Bidirectional: moves non-terminal files found in " +
29
+ "subdirectories back to root. Use --dry-run to preview. " +
30
+ "Use --status to filter to a single terminal status. " +
31
+ "Prefer the docs.archive umbrella command unless you need to archive only plans.",
32
+ scope: "workspace",
33
+ mutatesState: true,
34
+ writes: ["docs/plans/*.md", "docs/plans/archive/**"],
35
+ generates: [],
36
+ reads: ["docs/plans/**/*.md", "docs/rfcs/**/*.md"],
37
+ cacheable: false,
38
+ flags: {
39
+ "dry-run": {
40
+ kind: "boolean",
41
+ description: "Preview what would be moved without touching the filesystem.",
42
+ },
43
+ status: {
44
+ kind: "string",
45
+ description: "Filter to a single terminal status (implemented, rejected, superseded).",
46
+ },
45
47
  },
48
+ execute: runPlanArchive,
46
49
  },
47
- execute: runPlanArchive,
48
- }
49
- ],
50
- pipelines: [
51
-
52
- ]};
50
+ ],
51
+ pipelines: [],
52
+ };
53
53
  }
54
- ;
@@ -8,11 +8,12 @@
8
8
  </MODULE_CONTRACT>
9
9
  <CHANGE_SUMMARY>
10
10
  <item>RFC-0941: initial forgePluginModule with forge.plugin.validate and forge.plugin.discover commands.</item>
11
+ <item>RFC-1173: declare mutatesState on all kernel commands — collectDeclarationDiagnostics emits error-severity MUTATES-STATE-DECLARED, command.manifest.validate is the blocking consumer in packages.check, sweep declares the flag on every command definition (factories hardcode false for read-only check specs)</item>
11
12
  </CHANGE_SUMMARY>
12
13
  */
13
14
 
14
15
  import path from "node:path";
15
- import fs from "node:fs";
16
+ import * as fs from "../../src/utils/sync-fs.ts";
16
17
  import { parse as parseYaml } from "yaml";
17
18
  import type { ForgeModule } from "../../src/forge-module.ts";
18
19
  import type {
@@ -233,10 +234,11 @@ export const forgePluginModule: ForgeModule = {
233
234
  name: "forge-plugin",
234
235
  version: "0.1.0",
235
236
  runtime: "autonomous",
236
- declarations: [],
237
+ declarations: [],
237
238
  commands: [
238
239
  {
239
240
  name: "forge.plugin.validate",
241
+ mutatesState: false,
240
242
  contract: "forge",
241
243
  rules: [],
242
244
  description:
@@ -250,6 +252,7 @@ export const forgePluginModule: ForgeModule = {
250
252
  },
251
253
  {
252
254
  name: "forge.plugin.discover",
255
+ mutatesState: false,
253
256
  description:
254
257
  "Enumerate all project-declared skill packs with valid forge.plugin.yaml manifests (RFC-0941). Returns pack id, version, prefix, and directory.",
255
258
  scope: "workspace",
@@ -258,8 +261,7 @@ export const forgePluginModule: ForgeModule = {
258
261
  reads: ["forge.yaml", "**/forge.plugin.yaml"],
259
262
  cacheable: false,
260
263
  execute: runPluginDiscover,
261
- }
264
+ },
262
265
  ],
263
- pipelines: [
264
-
265
- ]};
266
+ pipelines: [],
267
+ };
@@ -13,10 +13,10 @@ against schemas, and computes normative source hashes.</purpose>
13
13
  </CHANGE_SUMMARY>
14
14
  */
15
15
 
16
- import fs from "node:fs";
16
+ import * as fs from "../../src/utils/sync-fs.ts";
17
17
  import path from "node:path";
18
18
  import { createHash } from "node:crypto";
19
- import { execSync } from "node:child_process";
19
+ import { execSync } from "../../src/utils/sync-fs.ts";
20
20
  import { parse as parseYaml } from "yaml";
21
21
  import {
22
22
  programManifestSchema,
@@ -13,7 +13,7 @@ manifest. Supports --bootstrap for packet 000 (RFC-0856).</purpose>
13
13
  </CHANGE_SUMMARY>
14
14
  */
15
15
 
16
- import fs from "node:fs";
16
+ import * as fs from "../../../src/utils/sync-fs.ts";
17
17
  import path from "node:path";
18
18
  import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
19
19
  import type {
@@ -14,7 +14,7 @@ and recover actions (RFC-0856).</purpose>
14
14
  </CHANGE_SUMMARY>
15
15
  */
16
16
 
17
- import fs from "node:fs";
17
+ import * as fs from "../../../src/utils/sync-fs.ts";
18
18
  import path from "node:path";
19
19
  import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
20
20
  import type {
@@ -14,7 +14,7 @@ to sealed, and records the seal in the program manifest (RFC-0856).</purpose>
14
14
  </CHANGE_SUMMARY>
15
15
  */
16
16
 
17
- import fs from "node:fs";
17
+ import * as fs from "../../../src/utils/sync-fs.ts";
18
18
  import path from "node:path";
19
19
  import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
20
20
  import type {
@@ -13,7 +13,7 @@ Raw tokens are never persisted to disk.</purpose>
13
13
  </CHANGE_SUMMARY>
14
14
  */
15
15
 
16
- import fs from "node:fs";
16
+ import * as fs from "../../src/utils/sync-fs.ts";
17
17
  import path from "node:path";
18
18
  import { createHash, randomBytes } from "node:crypto";
19
19
  import { programPacketLeaseSchema, type ProgramPacketLease } from "./schemas.ts";