@warpgogol/forge 2.9.13 → 2.9.25

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 (762) hide show
  1. package/dist/bin/cli.d.ts +3 -0
  2. package/dist/bin/cli.d.ts.map +1 -0
  3. package/dist/bin/cli.js +291 -0
  4. package/dist/bin/cli.js.map +1 -0
  5. package/dist/os/adr/adr.module.d.ts +3 -0
  6. package/dist/os/adr/adr.module.d.ts.map +1 -0
  7. package/dist/os/adr/adr.module.js +146 -0
  8. package/dist/os/adr/adr.module.js.map +1 -0
  9. package/dist/os/adr/frontmatter-io.d.ts +12 -0
  10. package/dist/os/adr/frontmatter-io.d.ts.map +1 -0
  11. package/dist/os/adr/frontmatter-io.js +67 -0
  12. package/dist/os/adr/frontmatter-io.js.map +1 -0
  13. package/dist/os/adr/handlers/archive.d.ts +24 -0
  14. package/dist/os/adr/handlers/archive.d.ts.map +1 -0
  15. package/dist/os/adr/handlers/archive.js +194 -0
  16. package/dist/os/adr/handlers/archive.js.map +1 -0
  17. package/dist/os/adr/handlers/implement-stamp.d.ts +4 -0
  18. package/dist/os/adr/handlers/implement-stamp.d.ts.map +1 -0
  19. package/dist/os/adr/handlers/implement-stamp.js +264 -0
  20. package/dist/os/adr/handlers/implement-stamp.js.map +1 -0
  21. package/dist/os/adr/handlers/list-create.d.ts +5 -0
  22. package/dist/os/adr/handlers/list-create.d.ts.map +1 -0
  23. package/dist/os/adr/handlers/list-create.js +201 -0
  24. package/dist/os/adr/handlers/list-create.js.map +1 -0
  25. package/dist/os/adr/handlers/validate.d.ts +4 -0
  26. package/dist/os/adr/handlers/validate.d.ts.map +1 -0
  27. package/dist/os/adr/handlers/validate.js +279 -0
  28. package/dist/os/adr/handlers/validate.js.map +1 -0
  29. package/dist/os/adr/index.d.ts +8 -0
  30. package/dist/os/adr/index.d.ts.map +1 -0
  31. package/dist/os/adr/index.js +18 -0
  32. package/dist/os/adr/index.js.map +1 -0
  33. package/dist/os/adr/types.d.ts +76 -0
  34. package/dist/os/adr/types.d.ts.map +1 -0
  35. package/dist/os/adr/types.js +56 -0
  36. package/dist/os/adr/types.js.map +1 -0
  37. package/dist/os/audit/audit.module.d.ts +3 -0
  38. package/dist/os/audit/audit.module.d.ts.map +1 -0
  39. package/dist/os/audit/audit.module.js +45 -0
  40. package/dist/os/audit/audit.module.js.map +1 -0
  41. package/dist/os/audit/frontmatter-io.d.ts +12 -0
  42. package/dist/os/audit/frontmatter-io.d.ts.map +1 -0
  43. package/dist/os/audit/frontmatter-io.js +71 -0
  44. package/dist/os/audit/frontmatter-io.js.map +1 -0
  45. package/dist/os/audit/handlers/archive.d.ts +4 -0
  46. package/dist/os/audit/handlers/archive.d.ts.map +1 -0
  47. package/dist/os/audit/handlers/archive.js +207 -0
  48. package/dist/os/audit/handlers/archive.js.map +1 -0
  49. package/dist/os/audit/index.d.ts +6 -0
  50. package/dist/os/audit/index.d.ts.map +1 -0
  51. package/dist/os/audit/index.js +16 -0
  52. package/dist/os/audit/index.js.map +1 -0
  53. package/dist/os/audit/types.d.ts +12 -0
  54. package/dist/os/audit/types.d.ts.map +1 -0
  55. package/dist/os/audit/types.js +17 -0
  56. package/dist/os/audit/types.js.map +1 -0
  57. package/dist/os/compass/compass.module.d.ts +3 -0
  58. package/dist/os/compass/compass.module.d.ts.map +1 -0
  59. package/dist/os/compass/compass.module.js +183 -0
  60. package/dist/os/compass/compass.module.js.map +1 -0
  61. package/dist/os/compass/handlers/compass-audit-handler.d.ts +36 -0
  62. package/dist/os/compass/handlers/compass-audit-handler.d.ts.map +1 -0
  63. package/dist/os/compass/handlers/compass-audit-handler.js +260 -0
  64. package/dist/os/compass/handlers/compass-audit-handler.js.map +1 -0
  65. package/dist/os/compass/handlers/compass-change-summary-handler.d.ts +19 -0
  66. package/dist/os/compass/handlers/compass-change-summary-handler.d.ts.map +1 -0
  67. package/dist/os/compass/handlers/compass-change-summary-handler.js +222 -0
  68. package/dist/os/compass/handlers/compass-change-summary-handler.js.map +1 -0
  69. package/dist/os/compass/handlers/compass-inventory-handler.d.ts +28 -0
  70. package/dist/os/compass/handlers/compass-inventory-handler.d.ts.map +1 -0
  71. package/dist/os/compass/handlers/compass-inventory-handler.js +377 -0
  72. package/dist/os/compass/handlers/compass-inventory-handler.js.map +1 -0
  73. package/dist/os/compass/handlers/compass-inventory.d.ts +30 -0
  74. package/dist/os/compass/handlers/compass-inventory.d.ts.map +1 -0
  75. package/dist/os/compass/handlers/compass-inventory.js +462 -0
  76. package/dist/os/compass/handlers/compass-inventory.js.map +1 -0
  77. package/dist/os/compass/handlers/git-revision.d.ts +8 -0
  78. package/dist/os/compass/handlers/git-revision.d.ts.map +1 -0
  79. package/dist/os/compass/handlers/git-revision.js +99 -0
  80. package/dist/os/compass/handlers/git-revision.js.map +1 -0
  81. package/dist/os/compass/handlers/resolve-scan-root.d.ts +3 -0
  82. package/dist/os/compass/handlers/resolve-scan-root.d.ts.map +1 -0
  83. package/dist/os/compass/handlers/resolve-scan-root.js +57 -0
  84. package/dist/os/compass/handlers/resolve-scan-root.js.map +1 -0
  85. package/dist/os/compass/index.d.ts +8 -0
  86. package/dist/os/compass/index.d.ts.map +1 -0
  87. package/dist/os/compass/index.js +19 -0
  88. package/dist/os/compass/index.js.map +1 -0
  89. package/dist/os/core/core.module.d.ts +3 -0
  90. package/dist/os/core/core.module.d.ts.map +1 -0
  91. package/dist/os/core/core.module.js +836 -0
  92. package/dist/os/core/core.module.js.map +1 -0
  93. package/dist/os/core/handlers/assets-check.d.ts +19 -0
  94. package/dist/os/core/handlers/assets-check.d.ts.map +1 -0
  95. package/dist/os/core/handlers/assets-check.js +89 -0
  96. package/dist/os/core/handlers/assets-check.js.map +1 -0
  97. package/dist/os/core/handlers/assets-helpers.d.ts +28 -0
  98. package/dist/os/core/handlers/assets-helpers.d.ts.map +1 -0
  99. package/dist/os/core/handlers/assets-helpers.js +128 -0
  100. package/dist/os/core/handlers/assets-helpers.js.map +1 -0
  101. package/dist/os/core/handlers/assets-list.d.ts +9 -0
  102. package/dist/os/core/handlers/assets-list.d.ts.map +1 -0
  103. package/dist/os/core/handlers/assets-list.js +72 -0
  104. package/dist/os/core/handlers/assets-list.js.map +1 -0
  105. package/dist/os/core/handlers/build.d.ts +16 -0
  106. package/dist/os/core/handlers/build.d.ts.map +1 -0
  107. package/dist/os/core/handlers/build.js +123 -0
  108. package/dist/os/core/handlers/build.js.map +1 -0
  109. package/dist/os/core/handlers/determinism-check.d.ts +20 -0
  110. package/dist/os/core/handlers/determinism-check.d.ts.map +1 -0
  111. package/dist/os/core/handlers/determinism-check.js +289 -0
  112. package/dist/os/core/handlers/determinism-check.js.map +1 -0
  113. package/dist/os/core/handlers/dev.d.ts +10 -0
  114. package/dist/os/core/handlers/dev.d.ts.map +1 -0
  115. package/dist/os/core/handlers/dev.js +102 -0
  116. package/dist/os/core/handlers/dev.js.map +1 -0
  117. package/dist/os/core/handlers/forge-autonomy-validate.d.ts +18 -0
  118. package/dist/os/core/handlers/forge-autonomy-validate.d.ts.map +1 -0
  119. package/dist/os/core/handlers/forge-autonomy-validate.js +115 -0
  120. package/dist/os/core/handlers/forge-autonomy-validate.js.map +1 -0
  121. package/dist/os/core/handlers/knowledge-compact.d.ts +4 -0
  122. package/dist/os/core/handlers/knowledge-compact.d.ts.map +1 -0
  123. package/dist/os/core/handlers/knowledge-compact.js +204 -0
  124. package/dist/os/core/handlers/knowledge-compact.js.map +1 -0
  125. package/dist/os/core/handlers/package-health.d.ts +17 -0
  126. package/dist/os/core/handlers/package-health.d.ts.map +1 -0
  127. package/dist/os/core/handlers/package-health.js +196 -0
  128. package/dist/os/core/handlers/package-health.js.map +1 -0
  129. package/dist/os/core/handlers/pinned-check.d.ts +49 -0
  130. package/dist/os/core/handlers/pinned-check.d.ts.map +1 -0
  131. package/dist/os/core/handlers/pinned-check.js +159 -0
  132. package/dist/os/core/handlers/pinned-check.js.map +1 -0
  133. package/dist/os/core/handlers/pinned-init.d.ts +19 -0
  134. package/dist/os/core/handlers/pinned-init.d.ts.map +1 -0
  135. package/dist/os/core/handlers/pinned-init.js +283 -0
  136. package/dist/os/core/handlers/pinned-init.js.map +1 -0
  137. package/dist/os/core/handlers/pinned-types.d.ts +29 -0
  138. package/dist/os/core/handlers/pinned-types.d.ts.map +1 -0
  139. package/dist/os/core/handlers/pinned-types.js +16 -0
  140. package/dist/os/core/handlers/pinned-types.js.map +1 -0
  141. package/dist/os/core/handlers/pinned-validate.d.ts +4 -0
  142. package/dist/os/core/handlers/pinned-validate.d.ts.map +1 -0
  143. package/dist/os/core/handlers/pinned-validate.js +248 -0
  144. package/dist/os/core/handlers/pinned-validate.js.map +1 -0
  145. package/dist/os/core/handlers/profile-resolve.d.ts +13 -0
  146. package/dist/os/core/handlers/profile-resolve.d.ts.map +1 -0
  147. package/dist/os/core/handlers/profile-resolve.js +65 -0
  148. package/dist/os/core/handlers/profile-resolve.js.map +1 -0
  149. package/dist/os/core/handlers/release-prepare.d.ts +25 -0
  150. package/dist/os/core/handlers/release-prepare.d.ts.map +1 -0
  151. package/dist/os/core/handlers/release-prepare.js +228 -0
  152. package/dist/os/core/handlers/release-prepare.js.map +1 -0
  153. package/dist/os/core/handlers/release-publish.d.ts +13 -0
  154. package/dist/os/core/handlers/release-publish.d.ts.map +1 -0
  155. package/dist/os/core/handlers/release-publish.js +173 -0
  156. package/dist/os/core/handlers/release-publish.js.map +1 -0
  157. package/dist/os/core/handlers/validate.d.ts +26 -0
  158. package/dist/os/core/handlers/validate.d.ts.map +1 -0
  159. package/dist/os/core/handlers/validate.js +208 -0
  160. package/dist/os/core/handlers/validate.js.map +1 -0
  161. package/dist/os/core/index.d.ts +2 -0
  162. package/dist/os/core/index.d.ts.map +1 -0
  163. package/dist/os/core/index.js +13 -0
  164. package/dist/os/core/index.js.map +1 -0
  165. package/dist/os/exploration/exploration.module.d.ts +3 -0
  166. package/dist/os/exploration/exploration.module.d.ts.map +1 -0
  167. package/dist/os/exploration/exploration.module.js +83 -0
  168. package/dist/os/exploration/exploration.module.js.map +1 -0
  169. package/dist/os/exploration/frontmatter-io.d.ts +13 -0
  170. package/dist/os/exploration/frontmatter-io.d.ts.map +1 -0
  171. package/dist/os/exploration/frontmatter-io.js +61 -0
  172. package/dist/os/exploration/frontmatter-io.js.map +1 -0
  173. package/dist/os/exploration/handlers/archive.d.ts +4 -0
  174. package/dist/os/exploration/handlers/archive.d.ts.map +1 -0
  175. package/dist/os/exploration/handlers/archive.js +141 -0
  176. package/dist/os/exploration/handlers/archive.js.map +1 -0
  177. package/dist/os/exploration/handlers/list.d.ts +4 -0
  178. package/dist/os/exploration/handlers/list.d.ts.map +1 -0
  179. package/dist/os/exploration/handlers/list.js +64 -0
  180. package/dist/os/exploration/handlers/list.js.map +1 -0
  181. package/dist/os/exploration/handlers/show.d.ts +4 -0
  182. package/dist/os/exploration/handlers/show.d.ts.map +1 -0
  183. package/dist/os/exploration/handlers/show.js +97 -0
  184. package/dist/os/exploration/handlers/show.js.map +1 -0
  185. package/dist/os/exploration/index.d.ts +7 -0
  186. package/dist/os/exploration/index.d.ts.map +1 -0
  187. package/dist/os/exploration/index.js +17 -0
  188. package/dist/os/exploration/index.js.map +1 -0
  189. package/dist/os/exploration/types.d.ts +38 -0
  190. package/dist/os/exploration/types.d.ts.map +1 -0
  191. package/dist/os/exploration/types.js +23 -0
  192. package/dist/os/exploration/types.js.map +1 -0
  193. package/dist/os/mission/handlers/archive.d.ts +4 -0
  194. package/dist/os/mission/handlers/archive.d.ts.map +1 -0
  195. package/dist/os/mission/handlers/archive.js +356 -0
  196. package/dist/os/mission/handlers/archive.js.map +1 -0
  197. package/dist/os/mission/index.d.ts +2 -0
  198. package/dist/os/mission/index.d.ts.map +1 -0
  199. package/dist/os/mission/index.js +2 -0
  200. package/dist/os/mission/index.js.map +1 -0
  201. package/dist/os/mission/mission.module.d.ts +3 -0
  202. package/dist/os/mission/mission.module.d.ts.map +1 -0
  203. package/dist/os/mission/mission.module.js +45 -0
  204. package/dist/os/mission/mission.module.js.map +1 -0
  205. package/dist/os/mission/types.d.ts +23 -0
  206. package/dist/os/mission/types.d.ts.map +1 -0
  207. package/dist/os/mission/types.js +18 -0
  208. package/dist/os/mission/types.js.map +1 -0
  209. package/dist/os/naming/index.d.ts +3 -0
  210. package/dist/os/naming/index.d.ts.map +1 -0
  211. package/dist/os/naming/index.js +14 -0
  212. package/dist/os/naming/index.js.map +1 -0
  213. package/dist/os/naming/naming-convention.d.ts +25 -0
  214. package/dist/os/naming/naming-convention.d.ts.map +1 -0
  215. package/dist/os/naming/naming-convention.js +324 -0
  216. package/dist/os/naming/naming-convention.js.map +1 -0
  217. package/dist/os/naming/naming.module.d.ts +3 -0
  218. package/dist/os/naming/naming.module.d.ts.map +1 -0
  219. package/dist/os/naming/naming.module.js +34 -0
  220. package/dist/os/naming/naming.module.js.map +1 -0
  221. package/dist/os/notes/index.d.ts +2 -0
  222. package/dist/os/notes/index.d.ts.map +1 -0
  223. package/dist/os/notes/index.js +10 -0
  224. package/dist/os/notes/index.js.map +1 -0
  225. package/dist/os/notes/notes.module.d.ts +3 -0
  226. package/dist/os/notes/notes.module.d.ts.map +1 -0
  227. package/dist/os/notes/notes.module.js +84 -0
  228. package/dist/os/notes/notes.module.js.map +1 -0
  229. package/dist/os/plan/frontmatter-io.d.ts +12 -0
  230. package/dist/os/plan/frontmatter-io.d.ts.map +1 -0
  231. package/dist/os/plan/frontmatter-io.js +69 -0
  232. package/dist/os/plan/frontmatter-io.js.map +1 -0
  233. package/dist/os/plan/handlers/archive.d.ts +4 -0
  234. package/dist/os/plan/handlers/archive.d.ts.map +1 -0
  235. package/dist/os/plan/handlers/archive.js +206 -0
  236. package/dist/os/plan/handlers/archive.js.map +1 -0
  237. package/dist/os/plan/index.d.ts +6 -0
  238. package/dist/os/plan/index.d.ts.map +1 -0
  239. package/dist/os/plan/index.js +16 -0
  240. package/dist/os/plan/index.js.map +1 -0
  241. package/dist/os/plan/plan.module.d.ts +3 -0
  242. package/dist/os/plan/plan.module.d.ts.map +1 -0
  243. package/dist/os/plan/plan.module.js +45 -0
  244. package/dist/os/plan/plan.module.js.map +1 -0
  245. package/dist/os/plan/types.d.ts +12 -0
  246. package/dist/os/plan/types.d.ts.map +1 -0
  247. package/dist/os/plan/types.js +17 -0
  248. package/dist/os/plan/types.js.map +1 -0
  249. package/dist/os/plugin/plugin.module.d.ts +25 -0
  250. package/dist/os/plugin/plugin.module.d.ts.map +1 -0
  251. package/dist/os/plugin/plugin.module.js +208 -0
  252. package/dist/os/plugin/plugin.module.js.map +1 -0
  253. package/dist/os/program/discovery.d.ts +61 -0
  254. package/dist/os/program/discovery.d.ts.map +1 -0
  255. package/dist/os/program/discovery.js +236 -0
  256. package/dist/os/program/discovery.js.map +1 -0
  257. package/dist/os/program/handlers/complete.d.ts +12 -0
  258. package/dist/os/program/handlers/complete.d.ts.map +1 -0
  259. package/dist/os/program/handlers/complete.js +362 -0
  260. package/dist/os/program/handlers/complete.js.map +1 -0
  261. package/dist/os/program/handlers/lease.d.ts +13 -0
  262. package/dist/os/program/handlers/lease.d.ts.map +1 -0
  263. package/dist/os/program/handlers/lease.js +328 -0
  264. package/dist/os/program/handlers/lease.js.map +1 -0
  265. package/dist/os/program/handlers/seal.d.ts +12 -0
  266. package/dist/os/program/handlers/seal.d.ts.map +1 -0
  267. package/dist/os/program/handlers/seal.js +277 -0
  268. package/dist/os/program/handlers/seal.js.map +1 -0
  269. package/dist/os/program/handlers/validate.d.ts +14 -0
  270. package/dist/os/program/handlers/validate.d.ts.map +1 -0
  271. package/dist/os/program/handlers/validate.js +170 -0
  272. package/dist/os/program/handlers/validate.js.map +1 -0
  273. package/dist/os/program/lease.d.ts +39 -0
  274. package/dist/os/program/lease.d.ts.map +1 -0
  275. package/dist/os/program/lease.js +129 -0
  276. package/dist/os/program/lease.js.map +1 -0
  277. package/dist/os/program/program.module.d.ts +3 -0
  278. package/dist/os/program/program.module.d.ts.map +1 -0
  279. package/dist/os/program/program.module.js +202 -0
  280. package/dist/os/program/program.module.js.map +1 -0
  281. package/dist/os/program/schemas.d.ts +225 -0
  282. package/dist/os/program/schemas.d.ts.map +1 -0
  283. package/dist/os/program/schemas.js +174 -0
  284. package/dist/os/program/schemas.js.map +1 -0
  285. package/dist/os/program/state.d.ts +38 -0
  286. package/dist/os/program/state.d.ts.map +1 -0
  287. package/dist/os/program/state.js +189 -0
  288. package/dist/os/program/state.js.map +1 -0
  289. package/dist/os/rfc/acceptance.d.ts +15 -0
  290. package/dist/os/rfc/acceptance.d.ts.map +1 -0
  291. package/dist/os/rfc/acceptance.js +318 -0
  292. package/dist/os/rfc/acceptance.js.map +1 -0
  293. package/dist/os/rfc/decision-log.d.ts +6 -0
  294. package/dist/os/rfc/decision-log.d.ts.map +1 -0
  295. package/dist/os/rfc/decision-log.js +269 -0
  296. package/dist/os/rfc/decision-log.js.map +1 -0
  297. package/dist/os/rfc/dna-trace.d.ts +27 -0
  298. package/dist/os/rfc/dna-trace.d.ts.map +1 -0
  299. package/dist/os/rfc/dna-trace.js +214 -0
  300. package/dist/os/rfc/dna-trace.js.map +1 -0
  301. package/dist/os/rfc/frontmatter-io.d.ts +18 -0
  302. package/dist/os/rfc/frontmatter-io.d.ts.map +1 -0
  303. package/dist/os/rfc/frontmatter-io.js +110 -0
  304. package/dist/os/rfc/frontmatter-io.js.map +1 -0
  305. package/dist/os/rfc/handlers/archive.d.ts +25 -0
  306. package/dist/os/rfc/handlers/archive.d.ts.map +1 -0
  307. package/dist/os/rfc/handlers/archive.js +247 -0
  308. package/dist/os/rfc/handlers/archive.js.map +1 -0
  309. package/dist/os/rfc/handlers/check.d.ts +4 -0
  310. package/dist/os/rfc/handlers/check.d.ts.map +1 -0
  311. package/dist/os/rfc/handlers/check.js +203 -0
  312. package/dist/os/rfc/handlers/check.js.map +1 -0
  313. package/dist/os/rfc/handlers/implement-stamp.d.ts +4 -0
  314. package/dist/os/rfc/handlers/implement-stamp.d.ts.map +1 -0
  315. package/dist/os/rfc/handlers/implement-stamp.js +426 -0
  316. package/dist/os/rfc/handlers/implement-stamp.js.map +1 -0
  317. package/dist/os/rfc/handlers/index-graph.d.ts +13 -0
  318. package/dist/os/rfc/handlers/index-graph.d.ts.map +1 -0
  319. package/dist/os/rfc/handlers/index-graph.js +192 -0
  320. package/dist/os/rfc/handlers/index-graph.js.map +1 -0
  321. package/dist/os/rfc/handlers/lifecycle.d.ts +13 -0
  322. package/dist/os/rfc/handlers/lifecycle.d.ts.map +1 -0
  323. package/dist/os/rfc/handlers/lifecycle.js +155 -0
  324. package/dist/os/rfc/handlers/lifecycle.js.map +1 -0
  325. package/dist/os/rfc/handlers/list-create.d.ts +6 -0
  326. package/dist/os/rfc/handlers/list-create.d.ts.map +1 -0
  327. package/dist/os/rfc/handlers/list-create.js +260 -0
  328. package/dist/os/rfc/handlers/list-create.js.map +1 -0
  329. package/dist/os/rfc/handlers/pipeline-status.d.ts +26 -0
  330. package/dist/os/rfc/handlers/pipeline-status.d.ts.map +1 -0
  331. package/dist/os/rfc/handlers/pipeline-status.js +124 -0
  332. package/dist/os/rfc/handlers/pipeline-status.js.map +1 -0
  333. package/dist/os/rfc/handlers/shared.d.ts +22 -0
  334. package/dist/os/rfc/handlers/shared.d.ts.map +1 -0
  335. package/dist/os/rfc/handlers/shared.js +105 -0
  336. package/dist/os/rfc/handlers/shared.js.map +1 -0
  337. package/dist/os/rfc/handlers/supersede-propose.d.ts +4 -0
  338. package/dist/os/rfc/handlers/supersede-propose.d.ts.map +1 -0
  339. package/dist/os/rfc/handlers/supersede-propose.js +203 -0
  340. package/dist/os/rfc/handlers/supersede-propose.js.map +1 -0
  341. package/dist/os/rfc/handlers/validate-rules.d.ts +32 -0
  342. package/dist/os/rfc/handlers/validate-rules.d.ts.map +1 -0
  343. package/dist/os/rfc/handlers/validate-rules.js +590 -0
  344. package/dist/os/rfc/handlers/validate-rules.js.map +1 -0
  345. package/dist/os/rfc/handlers/validate.d.ts +4 -0
  346. package/dist/os/rfc/handlers/validate.d.ts.map +1 -0
  347. package/dist/os/rfc/handlers/validate.js +122 -0
  348. package/dist/os/rfc/handlers/validate.js.map +1 -0
  349. package/dist/os/rfc/handlers.d.ts +7 -0
  350. package/dist/os/rfc/handlers.d.ts.map +1 -0
  351. package/dist/os/rfc/handlers.js +19 -0
  352. package/dist/os/rfc/handlers.js.map +1 -0
  353. package/dist/os/rfc/index.d.ts +18 -0
  354. package/dist/os/rfc/index.d.ts.map +1 -0
  355. package/dist/os/rfc/index.js +24 -0
  356. package/dist/os/rfc/index.js.map +1 -0
  357. package/dist/os/rfc/rfc.module.d.ts +3 -0
  358. package/dist/os/rfc/rfc.module.d.ts.map +1 -0
  359. package/dist/os/rfc/rfc.module.js +367 -0
  360. package/dist/os/rfc/rfc.module.js.map +1 -0
  361. package/dist/os/rfc/types.d.ts +483 -0
  362. package/dist/os/rfc/types.d.ts.map +1 -0
  363. package/dist/os/rfc/types.js +100 -0
  364. package/dist/os/rfc/types.js.map +1 -0
  365. package/dist/os/rfc/verification-evidence.d.ts +8 -0
  366. package/dist/os/rfc/verification-evidence.d.ts.map +1 -0
  367. package/dist/os/rfc/verification-evidence.js +184 -0
  368. package/dist/os/rfc/verification-evidence.js.map +1 -0
  369. package/dist/os/session/atif-parser.d.ts +29 -0
  370. package/dist/os/session/atif-parser.d.ts.map +1 -0
  371. package/dist/os/session/atif-parser.js +140 -0
  372. package/dist/os/session/atif-parser.js.map +1 -0
  373. package/dist/os/session/frontmatter-io.d.ts +31 -0
  374. package/dist/os/session/frontmatter-io.d.ts.map +1 -0
  375. package/dist/os/session/frontmatter-io.js +146 -0
  376. package/dist/os/session/frontmatter-io.js.map +1 -0
  377. package/dist/os/session/handlers/archive.d.ts +4 -0
  378. package/dist/os/session/handlers/archive.d.ts.map +1 -0
  379. package/dist/os/session/handlers/archive.js +241 -0
  380. package/dist/os/session/handlers/archive.js.map +1 -0
  381. package/dist/os/session/handlers/list.d.ts +4 -0
  382. package/dist/os/session/handlers/list.d.ts.map +1 -0
  383. package/dist/os/session/handlers/list.js +147 -0
  384. package/dist/os/session/handlers/list.js.map +1 -0
  385. package/dist/os/session/handlers/save.d.ts +6 -0
  386. package/dist/os/session/handlers/save.d.ts.map +1 -0
  387. package/dist/os/session/handlers/save.js +297 -0
  388. package/dist/os/session/handlers/save.js.map +1 -0
  389. package/dist/os/session/handlers/validate.d.ts +4 -0
  390. package/dist/os/session/handlers/validate.d.ts.map +1 -0
  391. package/dist/os/session/handlers/validate.js +224 -0
  392. package/dist/os/session/handlers/validate.js.map +1 -0
  393. package/dist/os/session/index.d.ts +9 -0
  394. package/dist/os/session/index.d.ts.map +1 -0
  395. package/dist/os/session/index.js +20 -0
  396. package/dist/os/session/index.js.map +1 -0
  397. package/dist/os/session/session.module.d.ts +3 -0
  398. package/dist/os/session/session.module.d.ts.map +1 -0
  399. package/dist/os/session/session.module.js +116 -0
  400. package/dist/os/session/session.module.js.map +1 -0
  401. package/dist/os/session/types.d.ts +131 -0
  402. package/dist/os/session/types.d.ts.map +1 -0
  403. package/dist/os/session/types.js +59 -0
  404. package/dist/os/session/types.js.map +1 -0
  405. package/dist/os/spec/live-spec-list.d.ts +4 -0
  406. package/dist/os/spec/live-spec-list.d.ts.map +1 -0
  407. package/dist/os/spec/live-spec-list.js +72 -0
  408. package/dist/os/spec/live-spec-list.js.map +1 -0
  409. package/dist/os/spec/live-spec-merge.d.ts +4 -0
  410. package/dist/os/spec/live-spec-merge.d.ts.map +1 -0
  411. package/dist/os/spec/live-spec-merge.js +345 -0
  412. package/dist/os/spec/live-spec-merge.js.map +1 -0
  413. package/dist/os/spec/live-spec-show.d.ts +4 -0
  414. package/dist/os/spec/live-spec-show.d.ts.map +1 -0
  415. package/dist/os/spec/live-spec-show.js +105 -0
  416. package/dist/os/spec/live-spec-show.js.map +1 -0
  417. package/dist/os/spec/live-spec-types.d.ts +71 -0
  418. package/dist/os/spec/live-spec-types.d.ts.map +1 -0
  419. package/dist/os/spec/live-spec-types.js +14 -0
  420. package/dist/os/spec/live-spec-types.js.map +1 -0
  421. package/dist/os/spec/live-spec-validate.d.ts +4 -0
  422. package/dist/os/spec/live-spec-validate.d.ts.map +1 -0
  423. package/dist/os/spec/live-spec-validate.js +140 -0
  424. package/dist/os/spec/live-spec-validate.js.map +1 -0
  425. package/dist/os/spec/spec-materialize.d.ts +21 -0
  426. package/dist/os/spec/spec-materialize.d.ts.map +1 -0
  427. package/dist/os/spec/spec-materialize.js +342 -0
  428. package/dist/os/spec/spec-materialize.js.map +1 -0
  429. package/dist/os/spec/spec-schema.d.ts +126 -0
  430. package/dist/os/spec/spec-schema.d.ts.map +1 -0
  431. package/dist/os/spec/spec-schema.js +118 -0
  432. package/dist/os/spec/spec-schema.js.map +1 -0
  433. package/dist/os/spec/spec-status.d.ts +33 -0
  434. package/dist/os/spec/spec-status.d.ts.map +1 -0
  435. package/dist/os/spec/spec-status.js +228 -0
  436. package/dist/os/spec/spec-status.js.map +1 -0
  437. package/dist/os/spec/spec-validate.d.ts +4 -0
  438. package/dist/os/spec/spec-validate.d.ts.map +1 -0
  439. package/dist/os/spec/spec-validate.js +435 -0
  440. package/dist/os/spec/spec-validate.js.map +1 -0
  441. package/dist/os/spec/spec.module.d.ts +3 -0
  442. package/dist/os/spec/spec.module.d.ts.map +1 -0
  443. package/dist/os/spec/spec.module.js +120 -0
  444. package/dist/os/spec/spec.module.js.map +1 -0
  445. package/dist/os/werkstatt/handlers/lock.d.ts +10 -0
  446. package/dist/os/werkstatt/handlers/lock.d.ts.map +1 -0
  447. package/dist/os/werkstatt/handlers/lock.js +153 -0
  448. package/dist/os/werkstatt/handlers/lock.js.map +1 -0
  449. package/dist/os/werkstatt/handlers/schema.d.ts +33 -0
  450. package/dist/os/werkstatt/handlers/schema.d.ts.map +1 -0
  451. package/dist/os/werkstatt/handlers/schema.js +42 -0
  452. package/dist/os/werkstatt/handlers/schema.js.map +1 -0
  453. package/dist/os/werkstatt/handlers/werkstatt-lock-recover.d.ts +15 -0
  454. package/dist/os/werkstatt/handlers/werkstatt-lock-recover.d.ts.map +1 -0
  455. package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js +152 -0
  456. package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js.map +1 -0
  457. package/dist/os/werkstatt/handlers/werkstatt-lock-status.d.ts +18 -0
  458. package/dist/os/werkstatt/handlers/werkstatt-lock-status.d.ts.map +1 -0
  459. package/dist/os/werkstatt/handlers/werkstatt-lock-status.js +51 -0
  460. package/dist/os/werkstatt/handlers/werkstatt-lock-status.js.map +1 -0
  461. package/dist/os/werkstatt/handlers/werkstatt-operation-validate.d.ts +11 -0
  462. package/dist/os/werkstatt/handlers/werkstatt-operation-validate.d.ts.map +1 -0
  463. package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js +79 -0
  464. package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js.map +1 -0
  465. package/dist/os/werkstatt/handlers/workspace-deps.d.ts +12 -0
  466. package/dist/os/werkstatt/handlers/workspace-deps.d.ts.map +1 -0
  467. package/dist/os/werkstatt/handlers/workspace-deps.js +42 -0
  468. package/dist/os/werkstatt/handlers/workspace-deps.js.map +1 -0
  469. package/dist/os/werkstatt/index.d.ts +7 -0
  470. package/dist/os/werkstatt/index.d.ts.map +1 -0
  471. package/dist/os/werkstatt/index.js +18 -0
  472. package/dist/os/werkstatt/index.js.map +1 -0
  473. package/dist/os/werkstatt/werkstatt.module.d.ts +3 -0
  474. package/dist/os/werkstatt/werkstatt.module.d.ts.map +1 -0
  475. package/dist/os/werkstatt/werkstatt.module.js +59 -0
  476. package/dist/os/werkstatt/werkstatt.module.js.map +1 -0
  477. package/dist/os/workflow/handlers.d.ts +12 -0
  478. package/dist/os/workflow/handlers.d.ts.map +1 -0
  479. package/dist/os/workflow/handlers.js +262 -0
  480. package/dist/os/workflow/handlers.js.map +1 -0
  481. package/dist/os/workflow/index.d.ts +4 -0
  482. package/dist/os/workflow/index.d.ts.map +1 -0
  483. package/dist/os/workflow/index.js +18 -0
  484. package/dist/os/workflow/index.js.map +1 -0
  485. package/dist/os/workflow/types.d.ts +69 -0
  486. package/dist/os/workflow/types.d.ts.map +1 -0
  487. package/dist/os/workflow/types.js +23 -0
  488. package/dist/os/workflow/types.js.map +1 -0
  489. package/dist/os/workflow/workflow.module.d.ts +3 -0
  490. package/dist/os/workflow/workflow.module.d.ts.map +1 -0
  491. package/dist/os/workflow/workflow.module.js +49 -0
  492. package/dist/os/workflow/workflow.module.js.map +1 -0
  493. package/dist/src/cli-output.d.ts +5 -0
  494. package/dist/src/cli-output.d.ts.map +1 -0
  495. package/dist/src/cli-output.js +53 -0
  496. package/dist/src/cli-output.js.map +1 -0
  497. package/dist/src/compass/contract-registry.d.ts +7 -0
  498. package/dist/src/compass/contract-registry.d.ts.map +1 -0
  499. package/dist/src/compass/contract-registry.js +93 -0
  500. package/dist/src/compass/contract-registry.js.map +1 -0
  501. package/dist/src/compass/types.d.ts +28 -0
  502. package/dist/src/compass/types.d.ts.map +1 -0
  503. package/dist/src/compass/types.js +14 -0
  504. package/dist/src/compass/types.js.map +1 -0
  505. package/dist/src/config/forge-config.d.ts +242 -0
  506. package/dist/src/config/forge-config.d.ts.map +1 -0
  507. package/dist/src/config/forge-config.js +363 -0
  508. package/dist/src/config/forge-config.js.map +1 -0
  509. package/dist/src/forge-module.d.ts +17 -0
  510. package/dist/src/forge-module.d.ts.map +1 -0
  511. package/dist/src/forge-module.js +16 -0
  512. package/dist/src/forge-module.js.map +1 -0
  513. package/dist/src/index.d.ts +39 -0
  514. package/dist/src/index.d.ts.map +1 -0
  515. package/dist/src/index.js +59 -0
  516. package/dist/src/index.js.map +1 -0
  517. package/dist/src/knowledge/budgets.d.ts +38 -0
  518. package/dist/src/knowledge/budgets.d.ts.map +1 -0
  519. package/dist/src/knowledge/budgets.js +157 -0
  520. package/dist/src/knowledge/budgets.js.map +1 -0
  521. package/dist/src/knowledge/compact.d.ts +47 -0
  522. package/dist/src/knowledge/compact.d.ts.map +1 -0
  523. package/dist/src/knowledge/compact.js +320 -0
  524. package/dist/src/knowledge/compact.js.map +1 -0
  525. package/dist/src/knowledge/index.d.ts +7 -0
  526. package/dist/src/knowledge/index.d.ts.map +1 -0
  527. package/dist/src/knowledge/index.js +19 -0
  528. package/dist/src/knowledge/index.js.map +1 -0
  529. package/dist/src/knowledge/parse.d.ts +3 -0
  530. package/dist/src/knowledge/parse.d.ts.map +1 -0
  531. package/dist/src/knowledge/parse.js +205 -0
  532. package/dist/src/knowledge/parse.js.map +1 -0
  533. package/dist/src/knowledge/promote.d.ts +37 -0
  534. package/dist/src/knowledge/promote.d.ts.map +1 -0
  535. package/dist/src/knowledge/promote.js +120 -0
  536. package/dist/src/knowledge/promote.js.map +1 -0
  537. package/dist/src/knowledge/schema.d.ts +61 -0
  538. package/dist/src/knowledge/schema.d.ts.map +1 -0
  539. package/dist/src/knowledge/schema.js +64 -0
  540. package/dist/src/knowledge/schema.js.map +1 -0
  541. package/dist/src/knowledge/serialize.d.ts +3 -0
  542. package/dist/src/knowledge/serialize.d.ts.map +1 -0
  543. package/dist/src/knowledge/serialize.js +67 -0
  544. package/dist/src/knowledge/serialize.js.map +1 -0
  545. package/dist/src/migration-adapters/git-utils.d.ts +3 -0
  546. package/dist/src/migration-adapters/git-utils.d.ts.map +1 -0
  547. package/dist/src/migration-adapters/git-utils.js +64 -0
  548. package/dist/src/migration-adapters/git-utils.js.map +1 -0
  549. package/dist/src/migration-adapters/ignored-files.d.ts +12 -0
  550. package/dist/src/migration-adapters/ignored-files.d.ts.map +1 -0
  551. package/dist/src/migration-adapters/ignored-files.js +190 -0
  552. package/dist/src/migration-adapters/ignored-files.js.map +1 -0
  553. package/dist/src/migration-adapters/index.d.ts +8 -0
  554. package/dist/src/migration-adapters/index.d.ts.map +1 -0
  555. package/dist/src/migration-adapters/index.js +17 -0
  556. package/dist/src/migration-adapters/index.js.map +1 -0
  557. package/dist/src/migration-adapters/node-typescript-pnpm/index.d.ts +3 -0
  558. package/dist/src/migration-adapters/node-typescript-pnpm/index.d.ts.map +1 -0
  559. package/dist/src/migration-adapters/node-typescript-pnpm/index.js +141 -0
  560. package/dist/src/migration-adapters/node-typescript-pnpm/index.js.map +1 -0
  561. package/dist/src/migration-adapters/phaser-pnpm/index.d.ts +3 -0
  562. package/dist/src/migration-adapters/phaser-pnpm/index.d.ts.map +1 -0
  563. package/dist/src/migration-adapters/phaser-pnpm/index.js +142 -0
  564. package/dist/src/migration-adapters/phaser-pnpm/index.js.map +1 -0
  565. package/dist/src/migration-adapters/registry.d.ts +6 -0
  566. package/dist/src/migration-adapters/registry.d.ts.map +1 -0
  567. package/dist/src/migration-adapters/registry.js +55 -0
  568. package/dist/src/migration-adapters/registry.js.map +1 -0
  569. package/dist/src/migration-adapters/types.d.ts +35 -0
  570. package/dist/src/migration-adapters/types.d.ts.map +1 -0
  571. package/dist/src/migration-adapters/types.js +31 -0
  572. package/dist/src/migration-adapters/types.js.map +1 -0
  573. package/dist/src/onboarding/agents-generate.d.ts +31 -0
  574. package/dist/src/onboarding/agents-generate.d.ts.map +1 -0
  575. package/dist/src/onboarding/agents-generate.js +372 -0
  576. package/dist/src/onboarding/agents-generate.js.map +1 -0
  577. package/dist/src/onboarding/create.d.ts +12 -0
  578. package/dist/src/onboarding/create.d.ts.map +1 -0
  579. package/dist/src/onboarding/create.js +389 -0
  580. package/dist/src/onboarding/create.js.map +1 -0
  581. package/dist/src/onboarding/doctor.d.ts +45 -0
  582. package/dist/src/onboarding/doctor.d.ts.map +1 -0
  583. package/dist/src/onboarding/doctor.js +1190 -0
  584. package/dist/src/onboarding/doctor.js.map +1 -0
  585. package/dist/src/onboarding/init.d.ts +36 -0
  586. package/dist/src/onboarding/init.d.ts.map +1 -0
  587. package/dist/src/onboarding/init.js +362 -0
  588. package/dist/src/onboarding/init.js.map +1 -0
  589. package/dist/src/onboarding/invariant-engine.d.ts +17 -0
  590. package/dist/src/onboarding/invariant-engine.d.ts.map +1 -0
  591. package/dist/src/onboarding/invariant-engine.js +416 -0
  592. package/dist/src/onboarding/invariant-engine.js.map +1 -0
  593. package/dist/src/onboarding/memory-scaffold.d.ts +18 -0
  594. package/dist/src/onboarding/memory-scaffold.d.ts.map +1 -0
  595. package/dist/src/onboarding/memory-scaffold.js +151 -0
  596. package/dist/src/onboarding/memory-scaffold.js.map +1 -0
  597. package/dist/src/onboarding/nested-agents-generate.d.ts +18 -0
  598. package/dist/src/onboarding/nested-agents-generate.d.ts.map +1 -0
  599. package/dist/src/onboarding/nested-agents-generate.js +69 -0
  600. package/dist/src/onboarding/nested-agents-generate.js.map +1 -0
  601. package/dist/src/onboarding/nested-agents-templates.d.ts +26 -0
  602. package/dist/src/onboarding/nested-agents-templates.d.ts.map +1 -0
  603. package/dist/src/onboarding/nested-agents-templates.js +178 -0
  604. package/dist/src/onboarding/nested-agents-templates.js.map +1 -0
  605. package/dist/src/onboarding/profile-validate.d.ts +13 -0
  606. package/dist/src/onboarding/profile-validate.d.ts.map +1 -0
  607. package/dist/src/onboarding/profile-validate.js +109 -0
  608. package/dist/src/onboarding/profile-validate.js.map +1 -0
  609. package/dist/src/onboarding/scaffold-project.d.ts +12 -0
  610. package/dist/src/onboarding/scaffold-project.d.ts.map +1 -0
  611. package/dist/src/onboarding/scaffold-project.js +264 -0
  612. package/dist/src/onboarding/scaffold-project.js.map +1 -0
  613. package/dist/src/onboarding/scaffold.d.ts +15 -0
  614. package/dist/src/onboarding/scaffold.d.ts.map +1 -0
  615. package/dist/src/onboarding/scaffold.js +121 -0
  616. package/dist/src/onboarding/scaffold.js.map +1 -0
  617. package/dist/src/onboarding/upgrade.d.ts +27 -0
  618. package/dist/src/onboarding/upgrade.d.ts.map +1 -0
  619. package/dist/src/onboarding/upgrade.js +453 -0
  620. package/dist/src/onboarding/upgrade.js.map +1 -0
  621. package/dist/src/onboarding/workspace-discovery.d.ts +11 -0
  622. package/dist/src/onboarding/workspace-discovery.d.ts.map +1 -0
  623. package/dist/src/onboarding/workspace-discovery.js +138 -0
  624. package/dist/src/onboarding/workspace-discovery.js.map +1 -0
  625. package/dist/src/plugin/ForgePluginManifest.d.ts +38 -0
  626. package/dist/src/plugin/ForgePluginManifest.d.ts.map +1 -0
  627. package/dist/src/plugin/ForgePluginManifest.js +52 -0
  628. package/dist/src/plugin/ForgePluginManifest.js.map +1 -0
  629. package/dist/src/profiles/profile-schema.d.ts +361 -0
  630. package/dist/src/profiles/profile-schema.d.ts.map +1 -0
  631. package/dist/src/profiles/profile-schema.js +208 -0
  632. package/dist/src/profiles/profile-schema.js.map +1 -0
  633. package/dist/src/profiles/stack-profile.d.ts +173 -0
  634. package/dist/src/profiles/stack-profile.d.ts.map +1 -0
  635. package/dist/src/profiles/stack-profile.js +148 -0
  636. package/dist/src/profiles/stack-profile.js.map +1 -0
  637. package/dist/src/profiles/terminology-utils.d.ts +8 -0
  638. package/dist/src/profiles/terminology-utils.d.ts.map +1 -0
  639. package/dist/src/profiles/terminology-utils.js +31 -0
  640. package/dist/src/profiles/terminology-utils.js.map +1 -0
  641. package/dist/src/registry.d.ts +38 -0
  642. package/dist/src/registry.d.ts.map +1 -0
  643. package/dist/src/registry.js +174 -0
  644. package/dist/src/registry.js.map +1 -0
  645. package/dist/src/skill-schema.d.ts +30 -0
  646. package/dist/src/skill-schema.d.ts.map +1 -0
  647. package/dist/src/skill-schema.js +34 -0
  648. package/dist/src/skill-schema.js.map +1 -0
  649. package/dist/src/types.d.ts +154 -0
  650. package/dist/src/types.d.ts.map +1 -0
  651. package/dist/src/types.js +17 -0
  652. package/dist/src/types.js.map +1 -0
  653. package/dist/src/utils/fs-atomic.d.ts +7 -0
  654. package/dist/src/utils/fs-atomic.d.ts.map +1 -0
  655. package/dist/src/utils/fs-atomic.js +81 -0
  656. package/dist/src/utils/fs-atomic.js.map +1 -0
  657. package/dist/src/utils/fs-idempotent.d.ts +2 -0
  658. package/dist/src/utils/fs-idempotent.d.ts.map +1 -0
  659. package/dist/src/utils/fs-idempotent.js +39 -0
  660. package/dist/src/utils/fs-idempotent.js.map +1 -0
  661. package/dist/src/utils/fs-trash-sync.d.ts +2 -0
  662. package/dist/src/utils/fs-trash-sync.d.ts.map +1 -0
  663. package/dist/src/utils/fs-trash-sync.js +34 -0
  664. package/dist/src/utils/fs-trash-sync.js.map +1 -0
  665. package/dist/src/utils/fs-trash.d.ts +2 -0
  666. package/dist/src/utils/fs-trash.d.ts.map +1 -0
  667. package/dist/src/utils/fs-trash.js +24 -0
  668. package/dist/src/utils/fs-trash.js.map +1 -0
  669. package/dist/src/utils/fs.d.ts +8 -0
  670. package/dist/src/utils/fs.d.ts.map +1 -0
  671. package/dist/src/utils/fs.js +60 -0
  672. package/dist/src/utils/fs.js.map +1 -0
  673. package/dist/src/utils/generated-marker.d.ts +21 -0
  674. package/dist/src/utils/generated-marker.d.ts.map +1 -0
  675. package/dist/src/utils/generated-marker.js +128 -0
  676. package/dist/src/utils/generated-marker.js.map +1 -0
  677. package/dist/src/utils/hash.d.ts +2 -0
  678. package/dist/src/utils/hash.d.ts.map +1 -0
  679. package/dist/src/utils/hash.js +18 -0
  680. package/dist/src/utils/hash.js.map +1 -0
  681. package/dist/src/utils/index.d.ts +9 -0
  682. package/dist/src/utils/index.d.ts.map +1 -0
  683. package/dist/src/utils/index.js +21 -0
  684. package/dist/src/utils/index.js.map +1 -0
  685. package/dist/src/utils/string-utils.d.ts +2 -0
  686. package/dist/src/utils/string-utils.d.ts.map +1 -0
  687. package/dist/src/utils/string-utils.js +19 -0
  688. package/dist/src/utils/string-utils.js.map +1 -0
  689. package/dist/src/validators/note-frontmatter-validate.d.ts +20 -0
  690. package/dist/src/validators/note-frontmatter-validate.d.ts.map +1 -0
  691. package/dist/src/validators/note-frontmatter-validate.js +117 -0
  692. package/dist/src/validators/note-frontmatter-validate.js.map +1 -0
  693. package/dist/src/validators/note-link-validate.d.ts +21 -0
  694. package/dist/src/validators/note-link-validate.d.ts.map +1 -0
  695. package/dist/src/validators/note-link-validate.js +121 -0
  696. package/dist/src/validators/note-link-validate.js.map +1 -0
  697. package/dist/src/validators/note-orphan-detect.d.ts +19 -0
  698. package/dist/src/validators/note-orphan-detect.d.ts.map +1 -0
  699. package/dist/src/validators/note-orphan-detect.js +123 -0
  700. package/dist/src/validators/note-orphan-detect.js.map +1 -0
  701. package/dist/src/validators/port-validate.d.ts +12 -0
  702. package/dist/src/validators/port-validate.d.ts.map +1 -0
  703. package/dist/src/validators/port-validate.js +78 -0
  704. package/dist/src/validators/port-validate.js.map +1 -0
  705. package/dist/src/validators/skill-validate.d.ts +29 -0
  706. package/dist/src/validators/skill-validate.d.ts.map +1 -0
  707. package/dist/src/validators/skill-validate.js +689 -0
  708. package/dist/src/validators/skill-validate.js.map +1 -0
  709. package/os/adr/adr.module.ts +1 -0
  710. package/os/audit/audit.module.ts +1 -0
  711. package/os/compass/compass.module.ts +1 -0
  712. package/os/compass/handlers/compass-inventory-handler.ts +107 -1
  713. package/os/core/core.module.ts +18 -0
  714. package/os/core/handlers/assets-helpers.ts +1 -1
  715. package/os/core/handlers/determinism-check.ts +1 -1
  716. package/os/core/handlers/forge-autonomy-validate.ts +161 -0
  717. package/os/core/handlers/knowledge-compact.ts +6 -1
  718. package/os/core/handlers/release-prepare.ts +1 -1
  719. package/os/exploration/exploration.module.ts +1 -0
  720. package/os/mission/mission.module.ts +1 -0
  721. package/os/naming/naming.module.ts +1 -0
  722. package/os/notes/notes.module.ts +1 -0
  723. package/os/plan/plan.module.ts +1 -0
  724. package/os/plugin/plugin.module.ts +261 -0
  725. package/os/program/program.module.ts +1 -0
  726. package/os/rfc/rfc.module.ts +1 -0
  727. package/os/session/session.module.ts +1 -0
  728. package/os/spec/spec.module.ts +1 -0
  729. package/os/{core → werkstatt}/handlers/workspace-deps.ts +4 -3
  730. package/os/werkstatt/werkstatt.module.ts +1 -0
  731. package/os/workflow/workflow.module.ts +1 -0
  732. package/package.json +11 -3
  733. package/profiles/forge-shell.yaml +1 -1
  734. package/profiles/godot-csharp.yaml +13 -13
  735. package/profiles/knowledge-typescript-turborepo.yaml +1 -1
  736. package/profiles/phaser-turborepo.yaml +13 -13
  737. package/skills/fo/fo-add-tests/SKILL.md +54 -0
  738. package/skills/fo/fo-compass-annotate/SKILL.md +1 -0
  739. package/skills/fo/fo-idea-implement/SKILL.md +80 -0
  740. package/src/compass/contract-registry.ts +114 -0
  741. package/src/compass/types.ts +45 -0
  742. package/src/forge-module.ts +3 -1
  743. package/src/index.ts +17 -0
  744. package/src/onboarding/doctor.ts +89 -7
  745. package/src/onboarding/init.ts +20 -1
  746. package/src/onboarding/scaffold.ts +1 -0
  747. package/src/onboarding/templates/behavioral-layer-core.md +9 -0
  748. package/src/onboarding/upgrade.ts +6 -1
  749. package/src/plugin/ForgePluginManifest.ts +76 -0
  750. package/src/registry.ts +36 -0
  751. package/src/tests/contract-registry.test.ts +248 -0
  752. package/src/tests/discover-pack-skills.test.ts +112 -0
  753. package/src/tests/doctor-autonomy.test.ts +3 -3
  754. package/src/tests/fixtures/agents-generate-business-before.txt +9 -0
  755. package/src/tests/forge-autonomy-validate.test.ts +157 -0
  756. package/src/tests/plugin-manifest.test.ts +226 -0
  757. package/src/tests/upgrade.test.ts +5 -0
  758. package/src/types/werkstatt-engine-shims.d.ts +1263 -0
  759. package/src/types/werkstatt-shared-shims.d.ts +5549 -0
  760. package/src/validators/port-validate.ts +3 -3
  761. package/AGENTS.md +0 -397
  762. package/os/core/handlers/lifecycle-handlers.test.ts +0 -524
@@ -1,524 +0,0 @@
1
- /*
2
- <MODULE_CONTRACT>
3
- <purpose>Unit tests for RFC-0674/RFC-0677/RFC-0678/RFC-0679 lifecycle handlers — profile resolution, dry-run, build execution, validate with --artifact and violation parsing, determinism check, asset management.</purpose>
4
- </MODULE_CONTRACT>
5
- <CHANGE_SUMMARY>
6
- <item>RFC-0674: initial lifecycle handler tests — profile resolution, dry-run, build execution.</item>
7
- <item>RFC-0677: added tests for --artifact filtering, violation parsing (json/plain), allPassed, empty-state.</item>
8
- <item>RFC-0678: added tests for determinism check — dry-run, --artifact, no-hashable, cache hit, non-deterministic detection.</item>
9
- <item>RFC-0679: added tests for asset list/check — dry-run, --type, missing, orphaned, --strict.</item>
10
- <item>RFC-0680: added tests for release prepare/publish — dry-run, manifest generation, publish dry-run, no-release-config.</item>
11
- </CHANGE_SUMMARY>
12
- */
13
-
14
- import { test, expect, beforeEach, afterEach } from "vitest";
15
- import { join } from "node:path";
16
- import { writeFileSync, mkdirSync, rmSync } from "node:fs";
17
- import { tmpdir } from "node:os";
18
- import type { ForgeCommandInput, ForgeRuntimeContext } from "../../../src/types.ts";
19
- import { resolveActiveProfile } from "./profile-resolve.ts";
20
- import { runBuild } from "./build.ts";
21
- import { runValidate, parseViolations } from "./validate.ts";
22
- import { runDeterminismCheck } from "./determinism-check.ts";
23
- import { runAssetsList } from "./assets-list.ts";
24
- import { runAssetsCheck } from "./assets-check.ts";
25
- import { runReleasePrepare } from "./release-prepare.ts";
26
- import { runReleasePublish } from "./release-publish.ts";
27
- import { runDev } from "./dev.ts";
28
-
29
- const FORGE_ROOT = join(import.meta.dirname, "..", "..", "..");
30
-
31
- function makeTempWorkspace(profileYaml?: string): string {
32
- const dir = join(
33
- tmpdir(),
34
- `forge-lifecycle-test-${Date.now()}-${Math.random().toString(36).slice(2)}`,
35
- );
36
- mkdirSync(dir, { recursive: true });
37
-
38
- if (profileYaml) {
39
- writeFileSync(join(dir, "forge.yaml"), profileYaml);
40
- }
41
-
42
- return dir;
43
- }
44
-
45
- function makeContext(workspaceRoot: string): ForgeRuntimeContext {
46
- return {
47
- workspaceRoot,
48
- logger: {
49
- section: () => {},
50
- info: () => {},
51
- warn: () => {},
52
- error: () => {},
53
- success: () => {},
54
- },
55
- dryRun: false,
56
- outputFormat: "pretty",
57
- forgeRoot: FORGE_ROOT,
58
- };
59
- }
60
-
61
- const input = (flags: Record<string, unknown> = {}): ForgeCommandInput => ({
62
- argv: [],
63
- flags: flags as Record<string, boolean | string | string[]>,
64
- });
65
-
66
- const godotYaml = `profile: godot-csharp\n`;
67
-
68
- let tmpDir: string;
69
-
70
- beforeEach(() => {
71
- tmpDir = makeTempWorkspace(godotYaml);
72
- });
73
-
74
- afterEach(() => {
75
- rmSync(tmpDir, { recursive: true, force: true });
76
- });
77
-
78
- // ── resolveActiveProfile ──────────────────────────────────────────────────
79
-
80
- test("resolveActiveProfile returns the godot-csharp profile when forge.yaml declares it", () => {
81
- const resolved = resolveActiveProfile(tmpDir, FORGE_ROOT);
82
- expect(resolved).not.toBeNull();
83
- expect(resolved!.profile.id).toBe("godot-csharp");
84
- });
85
-
86
- test("resolveActiveProfile returns null when forge.yaml has no profile field", () => {
87
- const dir = makeTempWorkspace(`project:\n name: test\n`);
88
- const resolved = resolveActiveProfile(dir, FORGE_ROOT);
89
- expect(resolved).toBeNull();
90
- rmSync(dir, { recursive: true, force: true });
91
- });
92
-
93
- test("resolveActiveProfile returns null when forge.yaml is missing", () => {
94
- const dir = makeTempWorkspace();
95
- const resolved = resolveActiveProfile(dir, FORGE_ROOT);
96
- expect(resolved).toBeNull();
97
- });
98
-
99
- test("resolveActiveProfile uses profileIdOverride when provided", () => {
100
- const resolved = resolveActiveProfile(tmpDir, FORGE_ROOT, "godot-csharp");
101
- expect(resolved).not.toBeNull();
102
- expect(resolved!.profile.id).toBe("godot-csharp");
103
- });
104
-
105
- // ── runBuild ───────────────────────────────────────────────────────────────
106
-
107
- test("runBuild --dry-run does not execute child process and prints resolved commands", async () => {
108
- const result = await runBuild(input({ "dry-run": true }), makeContext(tmpDir));
109
- expect(result.exitCode).toBeUndefined();
110
- expect(result.data?.profileId).toBe("godot-csharp");
111
- expect(result.data?.artifacts.length).toBeGreaterThan(0);
112
- const game = result.data?.artifacts.find((a) => a.id === "game");
113
- expect(game).toBeDefined();
114
- });
115
-
116
- test("runBuild returns exit 1 when no active profile found", async () => {
117
- const dir = makeTempWorkspace();
118
- const result = await runBuild(input({}), makeContext(dir));
119
- expect(result.exitCode).toBe(1);
120
- rmSync(dir, { recursive: true, force: true });
121
- });
122
-
123
- test("runBuild --dry-run resolves commands without execution", async () => {
124
- const result = await runBuild(input({ "dry-run": true }), makeContext(tmpDir));
125
- expect(result.data?.artifacts.length).toBeGreaterThan(0);
126
- expect(result.summary).toContain("[dry-run]");
127
- });
128
-
129
- // ── runValidate ─────────────────────────────────────────────────────────────
130
-
131
- test("runValidate --dry-run does not execute child process and prints resolved commands", async () => {
132
- const result = await runValidate(input({ "dry-run": true }), makeContext(tmpDir));
133
- expect(result.data?.profileId).toBe("godot-csharp");
134
- expect(result.data?.artifacts.length).toBeGreaterThan(0);
135
- const game = result.data?.artifacts.find((a) => a.id === "game");
136
- expect(game).toBeDefined();
137
- expect(game!.command).toBe("godot --path . --headless --quit");
138
- });
139
-
140
- test("runValidate returns exit 1 when no active profile found", async () => {
141
- const dir = makeTempWorkspace();
142
- const result = await runValidate(input({}), makeContext(dir));
143
- expect(result.exitCode).toBe(1);
144
- rmSync(dir, { recursive: true, force: true });
145
- });
146
-
147
- // ── runValidate RFC-0677: --artifact, violation parsing, allPassed ─────────
148
-
149
- test("runValidate --artifact game filters to a single artifact in dry-run", async () => {
150
- const result = await runValidate(
151
- input({ "dry-run": true, artifact: "game" }),
152
- makeContext(tmpDir),
153
- );
154
- expect(result.data?.artifacts.length).toBe(1);
155
- expect(result.data?.artifacts[0].id).toBe("game");
156
- });
157
-
158
- test("runValidate --artifact unknown returns exit 1 with not-declared message", async () => {
159
- const result = await runValidate(
160
- input({ "dry-run": true, artifact: "nonexistent" }),
161
- makeContext(tmpDir),
162
- );
163
- expect(result.exitCode).toBe(1);
164
- expect(result.summary).toContain("not declared");
165
- });
166
-
167
- test("runValidate --dry-run includes passed and violations fields", async () => {
168
- const result = await runValidate(input({ "dry-run": true }), makeContext(tmpDir));
169
- expect(result.data?.allPassed).toBe(true);
170
- const game = result.data?.artifacts.find((a) => a.id === "game");
171
- expect(game?.passed).toBe(true);
172
- expect(game?.violations).toEqual([]);
173
- });
174
-
175
- test("parseViolations extracts structured violations from JSON output", () => {
176
- const jsonOutput = JSON.stringify([
177
- { file: "Main.tscn", line: 12, severity: "error", message: "missing script" },
178
- { file: "Player.cs", line: 5, severity: "warning", message: "deprecated method" },
179
- ]);
180
- const violations = parseViolations(jsonOutput, "json", undefined);
181
- expect(violations.length).toBe(2);
182
- expect(violations[0].file).toBe("Main.tscn");
183
- expect(violations[0].line).toBe(12);
184
- expect(violations[0].severity).toBe("error");
185
- expect(violations[1].severity).toBe("warning");
186
- });
187
-
188
- test("parseViolations extracts structured violations from plain text with regex", () => {
189
- const plainOutput = [
190
- "Scenes/Main.tscn:12: error: scene missing script attribute",
191
- "Scripts/Player.cs:5: warning: deprecated method call",
192
- ].join("\n");
193
- const pattern =
194
- "^(?<file>[^:]+):(?<line>\\d+):\\s*(?<severity>error|warning):\\s*(?<message>.+)$";
195
- const violations = parseViolations(plainOutput, "plain", pattern);
196
- expect(violations.length).toBe(2);
197
- expect(violations[0].file).toBe("Scenes/Main.tscn");
198
- expect(violations[0].line).toBe(12);
199
- expect(violations[0].severity).toBe("error");
200
- expect(violations[0].message).toContain("missing script");
201
- expect(violations[1].severity).toBe("warning");
202
- });
203
-
204
- test("parseViolations returns empty array when outputFormat is not set", () => {
205
- const violations = parseViolations("some output", undefined, undefined);
206
- expect(violations).toEqual([]);
207
- });
208
-
209
- test("parseViolations returns empty array on malformed JSON", () => {
210
- const violations = parseViolations("not json", "json", undefined);
211
- expect(violations).toEqual([]);
212
- });
213
-
214
- test("parseViolations returns empty array on malformed regex pattern", () => {
215
- const violations = parseViolations("some output", "plain", "[invalid(");
216
- expect(violations).toEqual([]);
217
- });
218
-
219
- // ── runDev ──────────────────────────────────────────────────────────────────
220
-
221
- test("runDev --dry-run does not spawn child process and prints resolved command", async () => {
222
- const result = await runDev(input({ "dry-run": true }), makeContext(tmpDir));
223
- expect(result.data?.profileId).toBe("godot-csharp");
224
- expect(result.data?.devServerCommand).toBe("godot --path . --editor");
225
- expect(result.data?.port).toBe(6005);
226
- expect(result.data?.exitCode).toBe(0);
227
- });
228
-
229
- test("runDev returns exit 1 when profile has no devServer", async () => {
230
- // forge-shell profile has no devServer
231
- const dir = makeTempWorkspace(`profile: forge-shell\n`);
232
- const result = await runDev(input({}), makeContext(dir));
233
- expect(result.exitCode).toBe(1);
234
- expect(result.summary).toContain("does not declare a devServer");
235
- rmSync(dir, { recursive: true, force: true });
236
- });
237
-
238
- test("runDev returns exit 1 when no active profile found", async () => {
239
- const dir = makeTempWorkspace();
240
- const result = await runDev(input({}), makeContext(dir));
241
- expect(result.exitCode).toBe(1);
242
- rmSync(dir, { recursive: true, force: true });
243
- });
244
-
245
- // ── runDeterminismCheck RFC-0678 ─────────────────────────────────────────────
246
-
247
- test("runDeterminismCheck --dry-run prints resolved inputs without executing builds", async () => {
248
- const result = await runDeterminismCheck(input({ "dry-run": true }), makeContext(tmpDir));
249
- expect(result.data?.profileId).toBe("godot-csharp");
250
- expect(result.data?.artifacts.length).toBe(1);
251
- expect(result.data?.artifacts[0].artifactId).toBe("game");
252
- expect(result.data?.artifacts[0].inputs).toContain("Scenes/**/*.tscn");
253
- expect(result.data?.artifacts[0].inputs).toContain("project.godot");
254
- expect(result.summary).toContain("[dry-run]");
255
- });
256
-
257
- test("runDeterminismCheck --artifact game filters to a single artifact", async () => {
258
- const result = await runDeterminismCheck(
259
- input({ "dry-run": true, artifact: "game" }),
260
- makeContext(tmpDir),
261
- );
262
- expect(result.data?.artifacts.length).toBe(1);
263
- expect(result.data?.artifacts[0].artifactId).toBe("game");
264
- });
265
-
266
- test("runDeterminismCheck --artifact unknown returns exit 1", async () => {
267
- const result = await runDeterminismCheck(
268
- input({ "dry-run": true, artifact: "nonexistent" }),
269
- makeContext(tmpDir),
270
- );
271
- expect(result.exitCode).toBe(1);
272
- expect(result.summary).toContain("not declared");
273
- });
274
-
275
- test("runDeterminismCheck returns exit 1 when no active profile found", async () => {
276
- const dir = makeTempWorkspace();
277
- const result = await runDeterminismCheck(input({}), makeContext(dir));
278
- expect(result.exitCode).toBe(1);
279
- rmSync(dir, { recursive: true, force: true });
280
- });
281
-
282
- test("runDeterminismCheck returns exit 0 when profile has no hashable artifacts", async () => {
283
- // Create a custom profile with an artifact that has no determinism field
284
- // We can't easily do this without modifying forge profiles, so instead
285
- // test with a profile that has no artifacts at all — the handler returns
286
- // exit 1 for "no artifacts" and exit 0 for "no hashable artifacts".
287
- // Since forge-shell has no artifacts, we test the no-artifacts path.
288
- const dir = makeTempWorkspace(`profile: forge-shell\n`);
289
- const result = await runDeterminismCheck(input({}), makeContext(dir));
290
- expect(result.exitCode).toBe(1);
291
- expect(result.summary).toContain("does not declare any artifacts");
292
- rmSync(dir, { recursive: true, force: true });
293
- });
294
-
295
- test("runDeterminismCheck cache hit skips double-build", async () => {
296
- // Create input files matching the glob patterns
297
- mkdirSync(join(tmpDir, "Scenes"), { recursive: true });
298
- writeFileSync(join(tmpDir, "Scenes", "Main.tscn"), "[gd_scene]");
299
- mkdirSync(join(tmpDir, "Scripts"), { recursive: true });
300
- writeFileSync(join(tmpDir, "Scripts", "Main.cs"), "using Godot;");
301
- writeFileSync(join(tmpDir, "project.godot"), "[application]\n");
302
-
303
- // Create the output file that the produce command would create
304
- mkdirSync(join(tmpDir, "bin"), { recursive: true });
305
- writeFileSync(join(tmpDir, "bin", "Debug"), "fake-build-content");
306
-
307
- // First run: the produce command "dotnet build" will fail, but the input hash
308
- // is computed before the build. We can read it from the result.
309
- const result1 = await runDeterminismCheck(input({}), makeContext(tmpDir));
310
- expect(result1.exitCode).toBe(1); // build fails
311
- const inputHash = result1.data?.artifacts[0].inputHash;
312
- expect(inputHash).toBeTruthy();
313
-
314
- // Write a cache entry with the correct input hash
315
- const cachePath = join(tmpDir, "dist", ".determinism-cache.json");
316
- mkdirSync(join(tmpDir, "dist"), { recursive: true });
317
- const cache = {
318
- entries: {
319
- [`game:${inputHash}:dotnet build`]: {
320
- inputHash,
321
- produceCommand: "dotnet build",
322
- outputHash: "sha256:cached-hash",
323
- deterministic: true,
324
- },
325
- },
326
- };
327
- writeFileSync(cachePath, JSON.stringify(cache, null, 2) + "\n");
328
-
329
- // Second run: should hit the cache and skip the build
330
- const result2 = await runDeterminismCheck(input({}), makeContext(tmpDir));
331
- expect(result2.exitCode).toBe(0); // cached as deterministic
332
- expect(result2.data?.artifacts[0].cached).toBe(true);
333
- expect(result2.data?.artifacts[0].deterministic).toBe(true);
334
- expect(result2.data?.artifacts[0].firstBuildHash).toBe("sha256:cached-hash");
335
- }, 15000);
336
-
337
- // ── runAssetsList RFC-0679 ───────────────────────────────────────────────────
338
-
339
- test("runAssetsList --dry-run lists assets without hashing", async () => {
340
- // Create asset files
341
- mkdirSync(join(tmpDir, "Assets", "images"), { recursive: true });
342
- writeFileSync(join(tmpDir, "Assets", "images", "bg.png"), "fake-png");
343
- mkdirSync(join(tmpDir, "Assets", "audio"), { recursive: true });
344
- writeFileSync(join(tmpDir, "Assets", "audio", "narration.wav"), "fake-wav");
345
-
346
- const result = await runAssetsList(input({ "dry-run": true }), makeContext(tmpDir));
347
- expect(result.data?.profileId).toBe("godot-csharp");
348
- expect(result.data?.assets.length).toBe(2);
349
- const image = result.data?.assets.find((a) => a.type === "image");
350
- expect(image).toBeDefined();
351
- expect(image!.path).toBe("Assets/images/bg.png");
352
- expect(image!.hash).toBe(""); // dry-run skips hashing
353
- expect(image!.size).toBe(0);
354
- });
355
-
356
- test("runAssetsList --type image filters by type", async () => {
357
- mkdirSync(join(tmpDir, "Assets", "images"), { recursive: true });
358
- writeFileSync(join(tmpDir, "Assets", "images", "bg.png"), "fake-png");
359
- mkdirSync(join(tmpDir, "Assets", "audio"), { recursive: true });
360
- writeFileSync(join(tmpDir, "Assets", "audio", "narration.wav"), "fake-wav");
361
-
362
- const result = await runAssetsList(
363
- input({ "dry-run": true, type: "image" }),
364
- makeContext(tmpDir),
365
- );
366
- expect(result.data?.assets.length).toBe(1);
367
- expect(result.data?.assets[0].type).toBe("image");
368
- });
369
-
370
- test("runAssetsList returns exit 1 when no active profile found", async () => {
371
- const dir = makeTempWorkspace();
372
- const result = await runAssetsList(input({}), makeContext(dir));
373
- expect(result.exitCode).toBe(1);
374
- rmSync(dir, { recursive: true, force: true });
375
- });
376
-
377
- test("runAssetsList returns exit 0 when profile has no assets declaration", async () => {
378
- const dir = makeTempWorkspace(`profile: forge-shell\n`);
379
- const result = await runAssetsList(input({}), makeContext(dir));
380
- expect(result.exitCode).toBe(0);
381
- expect(result.summary).toContain("does not declare assets");
382
- rmSync(dir, { recursive: true, force: true });
383
- });
384
-
385
- // ── runAssetsCheck RFC-0679 ──────────────────────────────────────────────────
386
-
387
- test("runAssetsCheck detects missing assets referenced by scenes", async () => {
388
- // Create a scene that references a non-existent asset
389
- mkdirSync(join(tmpDir, "Scenes"), { recursive: true });
390
- writeFileSync(join(tmpDir, "Scenes", "Main.tscn"), '"res://Assets/images/missing.png"');
391
-
392
- const result = await runAssetsCheck(input({ "dry-run": true }), makeContext(tmpDir));
393
- expect(result.exitCode).toBe(1);
394
- expect(result.data?.check.missing.length).toBeGreaterThan(0);
395
- const missing = result.data?.check.missing.find((m) => m.path.includes("missing.png"));
396
- expect(missing).toBeDefined();
397
- expect(missing!.referencedBy).toContain("Scenes/Main.tscn");
398
- });
399
-
400
- test("runAssetsCheck detects orphaned assets not referenced by any scene", async () => {
401
- // Create an asset with no scene referencing it
402
- mkdirSync(join(tmpDir, "Assets", "audio"), { recursive: true });
403
- writeFileSync(join(tmpDir, "Assets", "audio", "unused.wav"), "fake-wav");
404
-
405
- const result = await runAssetsCheck(input({ "dry-run": true }), makeContext(tmpDir));
406
- // Without --strict, orphaned assets are warnings (exit 0)
407
- expect(result.data?.check.orphaned.length).toBeGreaterThan(0);
408
- const orphaned = result.data?.check.orphaned.find((o) => o.path.includes("unused.wav"));
409
- expect(orphaned).toBeDefined();
410
- expect(orphaned!.type).toBe("audio");
411
- });
412
-
413
- test("runAssetsCheck --strict exits non-zero when orphaned assets are found", async () => {
414
- mkdirSync(join(tmpDir, "Assets", "audio"), { recursive: true });
415
- writeFileSync(join(tmpDir, "Assets", "audio", "unused.wav"), "fake-wav");
416
-
417
- const result = await runAssetsCheck(
418
- input({ "dry-run": true, strict: true }),
419
- makeContext(tmpDir),
420
- );
421
- expect(result.exitCode).toBe(1);
422
- expect(result.data?.check.orphaned.length).toBeGreaterThan(0);
423
- });
424
-
425
- test("runAssetsCheck --dry-run only checks file existence", async () => {
426
- mkdirSync(join(tmpDir, "Assets", "images"), { recursive: true });
427
- writeFileSync(join(tmpDir, "Assets", "images", "bg.png"), "fake-png");
428
- mkdirSync(join(tmpDir, "Scenes"), { recursive: true });
429
- writeFileSync(join(tmpDir, "Scenes", "Main.tscn"), '"Assets/images/bg.png"');
430
-
431
- const result = await runAssetsCheck(input({ "dry-run": true }), makeContext(tmpDir));
432
- expect(result.exitCode).toBe(0);
433
- expect(result.data?.check.missing).toEqual([]);
434
- expect(result.data?.check.orphaned).toEqual([]);
435
- expect(result.data?.allOk).toBe(true);
436
- });
437
-
438
- test("runAssetsCheck returns exit 1 when no active profile found", async () => {
439
- const dir = makeTempWorkspace();
440
- const result = await runAssetsCheck(input({}), makeContext(dir));
441
- expect(result.exitCode).toBe(1);
442
- rmSync(dir, { recursive: true, force: true });
443
- });
444
-
445
- // ── runReleasePrepare RFC-0680 ───────────────────────────────────────────────
446
-
447
- test("runReleasePrepare --dry-run prints resolved release steps", async () => {
448
- // Create a built artifact at the produce.output path
449
- mkdirSync(join(tmpDir, "bin"), { recursive: true });
450
- writeFileSync(join(tmpDir, "bin", "Debug"), "fake-build-content");
451
-
452
- const result = await runReleasePrepare(input({ "dry-run": true }), makeContext(tmpDir));
453
- expect(result.data?.profileId).toBe("godot-csharp");
454
- expect(result.data?.manifest.schemaVersion).toBe("1");
455
- expect(result.data?.manifest.artifacts.length).toBeGreaterThan(0);
456
- expect(result.data?.manifest.artifacts[0].artifactId).toBe("game");
457
- expect(result.data?.manifest.determinismChecked).toBe(false);
458
- expect(result.data?.manifest.validationPassed).toBe(true);
459
- });
460
-
461
- test("runReleasePrepare generates manifest with artifact hashes", async () => {
462
- mkdirSync(join(tmpDir, "bin"), { recursive: true });
463
- writeFileSync(join(tmpDir, "bin", "Debug"), "fake-build-content");
464
-
465
- const result = await runReleasePrepare(input({}), makeContext(tmpDir));
466
- expect(result.exitCode ?? 0).toBe(0);
467
- expect(result.data?.manifest.artifacts.length).toBeGreaterThan(0);
468
- expect(result.data?.manifest.artifacts[0].hash).toBeTruthy();
469
- expect(result.data?.manifest.artifacts[0].size).toBeGreaterThan(0);
470
- expect(result.data?.manifest.releaseId).toContain("godot-csharp-");
471
- expect(result.data?.manifest.schemaVersion).toBe("1");
472
- });
473
-
474
- test("runReleasePrepare returns exit 1 when no release config", async () => {
475
- const dir = makeTempWorkspace(`profile: forge-shell\n`);
476
- const result = await runReleasePrepare(input({}), makeContext(dir));
477
- expect(result.exitCode).toBe(1);
478
- expect(result.summary).toContain("does not declare a release");
479
- rmSync(dir, { recursive: true, force: true });
480
- });
481
-
482
- test("runReleasePrepare returns exit 1 when no active profile", async () => {
483
- const dir = makeTempWorkspace();
484
- const result = await runReleasePrepare(input({}), makeContext(dir));
485
- expect(result.exitCode).toBe(1);
486
- rmSync(dir, { recursive: true, force: true });
487
- });
488
-
489
- test("runReleasePrepare returns exit 1 when build output not found", async () => {
490
- // No build/ directory created
491
- const result = await runReleasePrepare(input({}), makeContext(tmpDir));
492
- expect(result.exitCode).toBe(1);
493
- expect(result.summary).toContain("no built output");
494
- });
495
-
496
- // ── runReleasePublish RFC-0680 ───────────────────────────────────────────────
497
-
498
- test("runReleasePublish --dry-run does not upload anything", async () => {
499
- // Prepare a release first
500
- mkdirSync(join(tmpDir, "bin"), { recursive: true });
501
- writeFileSync(join(tmpDir, "bin", "Debug"), "fake-build-content");
502
- await runReleasePrepare(input({}), makeContext(tmpDir));
503
-
504
- const result = await runReleasePublish(input({ "dry-run": true }), makeContext(tmpDir));
505
- expect(result.exitCode ?? 0).toBe(0);
506
- expect(result.data?.target).toBe("local");
507
- expect(result.data?.publishedFiles.length).toBeGreaterThan(0);
508
- // Should not have created a published/ directory
509
- expect(result.summary).toContain("[dry-run]");
510
- });
511
-
512
- test("runReleasePublish returns exit 1 when no manifest found", async () => {
513
- // No release prepared — release dir doesn't exist
514
- const result = await runReleasePublish(input({}), makeContext(tmpDir));
515
- expect(result.exitCode).toBe(1);
516
- expect(result.summary).toContain("No release manifest found");
517
- });
518
-
519
- test("runReleasePublish returns exit 1 when no active profile", async () => {
520
- const dir = makeTempWorkspace();
521
- const result = await runReleasePublish(input({}), makeContext(dir));
522
- expect(result.exitCode).toBe(1);
523
- rmSync(dir, { recursive: true, force: true });
524
- });