@pennyfarthing/core 7.4.0 → 7.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (369) hide show
  1. package/dist/cli/utils/files.d.ts +0 -1
  2. package/dist/cli/utils/files.js +73 -56
  3. package/dist/cli/utils/manifest.d.ts +0 -1
  4. package/dist/cli/utils/manifest.js +48 -45
  5. package/dist/cli/utils/version.d.ts +0 -1
  6. package/dist/cli/utils/version.js +38 -32
  7. package/dist/index.d.ts +0 -1
  8. package/dist/index.js +39 -11
  9. package/dist/permissions/index.d.ts +0 -1
  10. package/dist/permissions/index.js +7 -4
  11. package/dist/permissions/permission-schema.d.ts +0 -1
  12. package/dist/permissions/permission-schema.js +13 -9
  13. package/dist/scripts/job-fair-aggregator.d.ts +0 -1
  14. package/dist/scripts/job-fair-aggregator.js +484 -341
  15. package/dist/workflow/index.d.ts +0 -1
  16. package/dist/workflow/index.js +12 -5
  17. package/dist/workflow/workflow-loader.d.ts +0 -1
  18. package/dist/workflow/workflow-loader.js +40 -34
  19. package/dist/workflow/workflow-permissions.d.ts +0 -1
  20. package/dist/workflow/workflow-permissions.js +14 -8
  21. package/dist/workflow/workflow-router.d.ts +0 -1
  22. package/dist/workflow/workflow-router.js +70 -51
  23. package/dist/workflow/workflow-schema.d.ts +0 -1
  24. package/dist/workflow/workflow-schema.js +62 -59
  25. package/package.json +1 -1
  26. package/dist/bmad/context-reader.d.ts +0 -71
  27. package/dist/bmad/context-reader.d.ts.map +0 -1
  28. package/dist/bmad/context-reader.js +0 -369
  29. package/dist/bmad/context-reader.js.map +0 -1
  30. package/dist/bmad/context-reader.test.d.ts +0 -71
  31. package/dist/bmad/context-reader.test.d.ts.map +0 -1
  32. package/dist/bmad/context-reader.test.js +0 -878
  33. package/dist/bmad/context-reader.test.js.map +0 -1
  34. package/dist/bmad/epics-parser.d.ts +0 -61
  35. package/dist/bmad/epics-parser.d.ts.map +0 -1
  36. package/dist/bmad/epics-parser.js +0 -331
  37. package/dist/bmad/epics-parser.js.map +0 -1
  38. package/dist/bmad/epics-parser.test.d.ts +0 -7
  39. package/dist/bmad/epics-parser.test.d.ts.map +0 -1
  40. package/dist/bmad/epics-parser.test.js +0 -449
  41. package/dist/bmad/epics-parser.test.js.map +0 -1
  42. package/dist/bmad/index.d.ts +0 -11
  43. package/dist/bmad/index.d.ts.map +0 -1
  44. package/dist/bmad/index.js +0 -24
  45. package/dist/bmad/index.js.map +0 -1
  46. package/dist/bmad/status-sync.d.ts +0 -173
  47. package/dist/bmad/status-sync.d.ts.map +0 -1
  48. package/dist/bmad/status-sync.js +0 -463
  49. package/dist/bmad/status-sync.js.map +0 -1
  50. package/dist/bmad/status-sync.test.d.ts +0 -7
  51. package/dist/bmad/status-sync.test.d.ts.map +0 -1
  52. package/dist/bmad/status-sync.test.js +0 -702
  53. package/dist/bmad/status-sync.test.js.map +0 -1
  54. package/dist/bmad/story-exporter.d.ts +0 -55
  55. package/dist/bmad/story-exporter.d.ts.map +0 -1
  56. package/dist/bmad/story-exporter.js +0 -170
  57. package/dist/bmad/story-exporter.js.map +0 -1
  58. package/dist/bmad/story-exporter.test.d.ts +0 -51
  59. package/dist/bmad/story-exporter.test.d.ts.map +0 -1
  60. package/dist/bmad/story-exporter.test.js +0 -603
  61. package/dist/bmad/story-exporter.test.js.map +0 -1
  62. package/dist/bmad/story-parser.d.ts +0 -44
  63. package/dist/bmad/story-parser.d.ts.map +0 -1
  64. package/dist/bmad/story-parser.js +0 -307
  65. package/dist/bmad/story-parser.js.map +0 -1
  66. package/dist/bmad/story-parser.test.d.ts +0 -44
  67. package/dist/bmad/story-parser.test.d.ts.map +0 -1
  68. package/dist/bmad/story-parser.test.js +0 -693
  69. package/dist/bmad/story-parser.test.js.map +0 -1
  70. package/dist/cli/commands/command.d.ts +0 -28
  71. package/dist/cli/commands/command.d.ts.map +0 -1
  72. package/dist/cli/commands/command.js +0 -399
  73. package/dist/cli/commands/command.js.map +0 -1
  74. package/dist/cli/commands/cyclist.d.ts +0 -46
  75. package/dist/cli/commands/cyclist.d.ts.map +0 -1
  76. package/dist/cli/commands/cyclist.js +0 -196
  77. package/dist/cli/commands/cyclist.js.map +0 -1
  78. package/dist/cli/commands/cyclist.test.d.ts +0 -13
  79. package/dist/cli/commands/cyclist.test.d.ts.map +0 -1
  80. package/dist/cli/commands/cyclist.test.js +0 -245
  81. package/dist/cli/commands/cyclist.test.js.map +0 -1
  82. package/dist/cli/commands/doctor.d.ts +0 -9
  83. package/dist/cli/commands/doctor.d.ts.map +0 -1
  84. package/dist/cli/commands/doctor.js +0 -652
  85. package/dist/cli/commands/doctor.js.map +0 -1
  86. package/dist/cli/commands/init.d.ts +0 -8
  87. package/dist/cli/commands/init.d.ts.map +0 -1
  88. package/dist/cli/commands/init.js +0 -524
  89. package/dist/cli/commands/init.js.map +0 -1
  90. package/dist/cli/commands/skill.d.ts +0 -28
  91. package/dist/cli/commands/skill.d.ts.map +0 -1
  92. package/dist/cli/commands/skill.js +0 -416
  93. package/dist/cli/commands/skill.js.map +0 -1
  94. package/dist/cli/commands/theme.d.ts +0 -21
  95. package/dist/cli/commands/theme.d.ts.map +0 -1
  96. package/dist/cli/commands/theme.js +0 -201
  97. package/dist/cli/commands/theme.js.map +0 -1
  98. package/dist/cli/commands/uninstall.d.ts +0 -8
  99. package/dist/cli/commands/uninstall.d.ts.map +0 -1
  100. package/dist/cli/commands/uninstall.js +0 -237
  101. package/dist/cli/commands/uninstall.js.map +0 -1
  102. package/dist/cli/commands/update.d.ts +0 -9
  103. package/dist/cli/commands/update.d.ts.map +0 -1
  104. package/dist/cli/commands/update.js +0 -418
  105. package/dist/cli/commands/update.js.map +0 -1
  106. package/dist/cli/commands/version.d.ts +0 -2
  107. package/dist/cli/commands/version.d.ts.map +0 -1
  108. package/dist/cli/commands/version.js +0 -28
  109. package/dist/cli/commands/version.js.map +0 -1
  110. package/dist/cli/customization.test.d.ts +0 -12
  111. package/dist/cli/customization.test.d.ts.map +0 -1
  112. package/dist/cli/customization.test.js +0 -84
  113. package/dist/cli/customization.test.js.map +0 -1
  114. package/dist/cli/cyclist-migration.test.d.ts +0 -16
  115. package/dist/cli/cyclist-migration.test.d.ts.map +0 -1
  116. package/dist/cli/cyclist-migration.test.js +0 -225
  117. package/dist/cli/cyclist-migration.test.js.map +0 -1
  118. package/dist/cli/index.d.ts +0 -3
  119. package/dist/cli/index.d.ts.map +0 -1
  120. package/dist/cli/index.js +0 -174
  121. package/dist/cli/index.js.map +0 -1
  122. package/dist/cli/ocean-profiles.test.d.ts +0 -13
  123. package/dist/cli/ocean-profiles.test.d.ts.map +0 -1
  124. package/dist/cli/ocean-profiles.test.js +0 -134
  125. package/dist/cli/ocean-profiles.test.js.map +0 -1
  126. package/dist/cli/theme-maker.test.d.ts +0 -11
  127. package/dist/cli/theme-maker.test.d.ts.map +0 -1
  128. package/dist/cli/theme-maker.test.js +0 -356
  129. package/dist/cli/theme-maker.test.js.map +0 -1
  130. package/dist/cli/utils/constants.d.ts +0 -66
  131. package/dist/cli/utils/constants.d.ts.map +0 -1
  132. package/dist/cli/utils/constants.js +0 -54
  133. package/dist/cli/utils/constants.js.map +0 -1
  134. package/dist/cli/utils/files.d.ts.map +0 -1
  135. package/dist/cli/utils/files.js.map +0 -1
  136. package/dist/cli/utils/logger.d.ts +0 -26
  137. package/dist/cli/utils/logger.d.ts.map +0 -1
  138. package/dist/cli/utils/logger.js +0 -88
  139. package/dist/cli/utils/logger.js.map +0 -1
  140. package/dist/cli/utils/manifest.d.ts.map +0 -1
  141. package/dist/cli/utils/manifest.js.map +0 -1
  142. package/dist/cli/utils/node-modules.d.ts +0 -6
  143. package/dist/cli/utils/node-modules.d.ts.map +0 -1
  144. package/dist/cli/utils/node-modules.js +0 -31
  145. package/dist/cli/utils/node-modules.js.map +0 -1
  146. package/dist/cli/utils/prompts.d.ts +0 -34
  147. package/dist/cli/utils/prompts.d.ts.map +0 -1
  148. package/dist/cli/utils/prompts.js +0 -93
  149. package/dist/cli/utils/prompts.js.map +0 -1
  150. package/dist/cli/utils/symlinks.d.ts +0 -29
  151. package/dist/cli/utils/symlinks.d.ts.map +0 -1
  152. package/dist/cli/utils/symlinks.js +0 -181
  153. package/dist/cli/utils/symlinks.js.map +0 -1
  154. package/dist/cli/utils/themes.d.ts +0 -101
  155. package/dist/cli/utils/themes.d.ts.map +0 -1
  156. package/dist/cli/utils/themes.js +0 -373
  157. package/dist/cli/utils/themes.js.map +0 -1
  158. package/dist/cli/utils/themes.test.d.ts +0 -12
  159. package/dist/cli/utils/themes.test.d.ts.map +0 -1
  160. package/dist/cli/utils/themes.test.js +0 -147
  161. package/dist/cli/utils/themes.test.js.map +0 -1
  162. package/dist/cli/utils/version.d.ts.map +0 -1
  163. package/dist/cli/utils/version.js.map +0 -1
  164. package/dist/cli/workspace.test.d.ts +0 -8
  165. package/dist/cli/workspace.test.d.ts.map +0 -1
  166. package/dist/cli/workspace.test.js +0 -151
  167. package/dist/cli/workspace.test.js.map +0 -1
  168. package/dist/index.d.ts.map +0 -1
  169. package/dist/index.js.map +0 -1
  170. package/dist/jira/jira-epic-creation.d.ts +0 -109
  171. package/dist/jira/jira-epic-creation.d.ts.map +0 -1
  172. package/dist/jira/jira-epic-creation.js +0 -253
  173. package/dist/jira/jira-epic-creation.js.map +0 -1
  174. package/dist/jira/jira-epic-creation.test.d.ts +0 -16
  175. package/dist/jira/jira-epic-creation.test.d.ts.map +0 -1
  176. package/dist/jira/jira-epic-creation.test.js +0 -387
  177. package/dist/jira/jira-epic-creation.test.js.map +0 -1
  178. package/dist/jira/jira-sprint-sync.d.ts +0 -247
  179. package/dist/jira/jira-sprint-sync.d.ts.map +0 -1
  180. package/dist/jira/jira-sprint-sync.js +0 -670
  181. package/dist/jira/jira-sprint-sync.js.map +0 -1
  182. package/dist/jira/jira-sprint-sync.test.d.ts +0 -16
  183. package/dist/jira/jira-sprint-sync.test.d.ts.map +0 -1
  184. package/dist/jira/jira-sprint-sync.test.js +0 -845
  185. package/dist/jira/jira-sprint-sync.test.js.map +0 -1
  186. package/dist/permissions/index.d.ts.map +0 -1
  187. package/dist/permissions/index.js.map +0 -1
  188. package/dist/permissions/permission-schema.d.ts.map +0 -1
  189. package/dist/permissions/permission-schema.js.map +0 -1
  190. package/dist/permissions/permission-schema.test.d.ts +0 -40
  191. package/dist/permissions/permission-schema.test.d.ts.map +0 -1
  192. package/dist/permissions/permission-schema.test.js +0 -367
  193. package/dist/permissions/permission-schema.test.js.map +0 -1
  194. package/dist/scripts/add-ocean-profiles.d.ts +0 -9
  195. package/dist/scripts/add-ocean-profiles.d.ts.map +0 -1
  196. package/dist/scripts/add-ocean-profiles.js +0 -695
  197. package/dist/scripts/add-ocean-profiles.js.map +0 -1
  198. package/dist/scripts/benchmark-integration.d.ts +0 -182
  199. package/dist/scripts/benchmark-integration.d.ts.map +0 -1
  200. package/dist/scripts/benchmark-integration.js +0 -691
  201. package/dist/scripts/benchmark-integration.js.map +0 -1
  202. package/dist/scripts/benchmark-integration.test.d.ts +0 -13
  203. package/dist/scripts/benchmark-integration.test.d.ts.map +0 -1
  204. package/dist/scripts/benchmark-integration.test.js +0 -680
  205. package/dist/scripts/benchmark-integration.test.js.map +0 -1
  206. package/dist/scripts/debugging-scenarios.test.d.ts +0 -18
  207. package/dist/scripts/debugging-scenarios.test.d.ts.map +0 -1
  208. package/dist/scripts/debugging-scenarios.test.js +0 -317
  209. package/dist/scripts/debugging-scenarios.test.js.map +0 -1
  210. package/dist/scripts/generate-all-spiders.d.ts +0 -10
  211. package/dist/scripts/generate-all-spiders.d.ts.map +0 -1
  212. package/dist/scripts/generate-all-spiders.js +0 -306
  213. package/dist/scripts/generate-all-spiders.js.map +0 -1
  214. package/dist/scripts/generate-report.d.ts +0 -65
  215. package/dist/scripts/generate-report.d.ts.map +0 -1
  216. package/dist/scripts/generate-report.js +0 -378
  217. package/dist/scripts/generate-report.js.map +0 -1
  218. package/dist/scripts/generate-report.test.d.ts +0 -13
  219. package/dist/scripts/generate-report.test.d.ts.map +0 -1
  220. package/dist/scripts/generate-report.test.js +0 -363
  221. package/dist/scripts/generate-report.test.js.map +0 -1
  222. package/dist/scripts/generate-spider-report.d.ts +0 -65
  223. package/dist/scripts/generate-spider-report.d.ts.map +0 -1
  224. package/dist/scripts/generate-spider-report.js +0 -366
  225. package/dist/scripts/generate-spider-report.js.map +0 -1
  226. package/dist/scripts/generate-spider-report.test.d.ts +0 -13
  227. package/dist/scripts/generate-spider-report.test.d.ts.map +0 -1
  228. package/dist/scripts/generate-spider-report.test.js +0 -367
  229. package/dist/scripts/generate-spider-report.test.js.map +0 -1
  230. package/dist/scripts/generate-spider.d.ts +0 -47
  231. package/dist/scripts/generate-spider.d.ts.map +0 -1
  232. package/dist/scripts/generate-spider.js +0 -338
  233. package/dist/scripts/generate-spider.js.map +0 -1
  234. package/dist/scripts/generate-spider.test.d.ts +0 -14
  235. package/dist/scripts/generate-spider.test.d.ts.map +0 -1
  236. package/dist/scripts/generate-spider.test.js +0 -271
  237. package/dist/scripts/generate-spider.test.js.map +0 -1
  238. package/dist/scripts/job-fair-aggregator.d.ts.map +0 -1
  239. package/dist/scripts/job-fair-aggregator.js.map +0 -1
  240. package/dist/scripts/job-fair-aggregator.test.d.ts +0 -14
  241. package/dist/scripts/job-fair-aggregator.test.d.ts.map +0 -1
  242. package/dist/scripts/job-fair-aggregator.test.js +0 -616
  243. package/dist/scripts/job-fair-aggregator.test.js.map +0 -1
  244. package/dist/scripts/run-ci.test.d.ts +0 -20
  245. package/dist/scripts/run-ci.test.d.ts.map +0 -1
  246. package/dist/scripts/run-ci.test.js +0 -127
  247. package/dist/scripts/run-ci.test.js.map +0 -1
  248. package/dist/scripts/theme-detail.test.d.ts +0 -10
  249. package/dist/scripts/theme-detail.test.d.ts.map +0 -1
  250. package/dist/scripts/theme-detail.test.js +0 -199
  251. package/dist/scripts/theme-detail.test.js.map +0 -1
  252. package/dist/scripts/validate-ocean-profiles.d.ts +0 -9
  253. package/dist/scripts/validate-ocean-profiles.d.ts.map +0 -1
  254. package/dist/scripts/validate-ocean-profiles.js +0 -130
  255. package/dist/scripts/validate-ocean-profiles.js.map +0 -1
  256. package/dist/workflow/gate-handler.d.ts +0 -94
  257. package/dist/workflow/gate-handler.d.ts.map +0 -1
  258. package/dist/workflow/gate-handler.js +0 -189
  259. package/dist/workflow/gate-handler.js.map +0 -1
  260. package/dist/workflow/gate-handler.test.d.ts +0 -14
  261. package/dist/workflow/gate-handler.test.d.ts.map +0 -1
  262. package/dist/workflow/gate-handler.test.js +0 -543
  263. package/dist/workflow/gate-handler.test.js.map +0 -1
  264. package/dist/workflow/generic-handoff.d.ts +0 -281
  265. package/dist/workflow/generic-handoff.d.ts.map +0 -1
  266. package/dist/workflow/generic-handoff.js +0 -411
  267. package/dist/workflow/generic-handoff.js.map +0 -1
  268. package/dist/workflow/generic-handoff.test.d.ts +0 -21
  269. package/dist/workflow/generic-handoff.test.d.ts.map +0 -1
  270. package/dist/workflow/generic-handoff.test.js +0 -499
  271. package/dist/workflow/generic-handoff.test.js.map +0 -1
  272. package/dist/workflow/generic-sm-finish.d.ts +0 -89
  273. package/dist/workflow/generic-sm-finish.d.ts.map +0 -1
  274. package/dist/workflow/generic-sm-finish.js +0 -157
  275. package/dist/workflow/generic-sm-finish.js.map +0 -1
  276. package/dist/workflow/generic-sm-setup.d.ts +0 -138
  277. package/dist/workflow/generic-sm-setup.d.ts.map +0 -1
  278. package/dist/workflow/generic-sm-setup.js +0 -382
  279. package/dist/workflow/generic-sm-setup.js.map +0 -1
  280. package/dist/workflow/index.d.ts.map +0 -1
  281. package/dist/workflow/index.js.map +0 -1
  282. package/dist/workflow/session-state.d.ts +0 -92
  283. package/dist/workflow/session-state.d.ts.map +0 -1
  284. package/dist/workflow/session-state.js +0 -198
  285. package/dist/workflow/session-state.js.map +0 -1
  286. package/dist/workflow/session-state.test.d.ts +0 -8
  287. package/dist/workflow/session-state.test.d.ts.map +0 -1
  288. package/dist/workflow/session-state.test.js +0 -551
  289. package/dist/workflow/session-state.test.js.map +0 -1
  290. package/dist/workflow/sm-subagents.test.d.ts +0 -23
  291. package/dist/workflow/sm-subagents.test.d.ts.map +0 -1
  292. package/dist/workflow/sm-subagents.test.js +0 -727
  293. package/dist/workflow/sm-subagents.test.js.map +0 -1
  294. package/dist/workflow/step-parser.d.ts +0 -45
  295. package/dist/workflow/step-parser.d.ts.map +0 -1
  296. package/dist/workflow/step-parser.js +0 -147
  297. package/dist/workflow/step-parser.js.map +0 -1
  298. package/dist/workflow/step-parser.test.d.ts +0 -14
  299. package/dist/workflow/step-parser.test.d.ts.map +0 -1
  300. package/dist/workflow/step-parser.test.js +0 -470
  301. package/dist/workflow/step-parser.test.js.map +0 -1
  302. package/dist/workflow/story-workflow-routing.test.d.ts +0 -17
  303. package/dist/workflow/story-workflow-routing.test.d.ts.map +0 -1
  304. package/dist/workflow/story-workflow-routing.test.js +0 -559
  305. package/dist/workflow/story-workflow-routing.test.js.map +0 -1
  306. package/dist/workflow/test-cache.d.ts +0 -131
  307. package/dist/workflow/test-cache.d.ts.map +0 -1
  308. package/dist/workflow/test-cache.js +0 -226
  309. package/dist/workflow/test-cache.js.map +0 -1
  310. package/dist/workflow/test-cache.test.d.ts +0 -17
  311. package/dist/workflow/test-cache.test.d.ts.map +0 -1
  312. package/dist/workflow/test-cache.test.js +0 -438
  313. package/dist/workflow/test-cache.test.js.map +0 -1
  314. package/dist/workflow/trimodal.d.ts +0 -86
  315. package/dist/workflow/trimodal.d.ts.map +0 -1
  316. package/dist/workflow/trimodal.js +0 -118
  317. package/dist/workflow/trimodal.js.map +0 -1
  318. package/dist/workflow/trimodal.test.d.ts +0 -11
  319. package/dist/workflow/trimodal.test.d.ts.map +0 -1
  320. package/dist/workflow/trimodal.test.js +0 -395
  321. package/dist/workflow/trimodal.test.js.map +0 -1
  322. package/dist/workflow/variable-resolver.d.ts +0 -67
  323. package/dist/workflow/variable-resolver.d.ts.map +0 -1
  324. package/dist/workflow/variable-resolver.js +0 -156
  325. package/dist/workflow/variable-resolver.js.map +0 -1
  326. package/dist/workflow/variable-resolver.test.d.ts +0 -14
  327. package/dist/workflow/variable-resolver.test.d.ts.map +0 -1
  328. package/dist/workflow/variable-resolver.test.js +0 -400
  329. package/dist/workflow/variable-resolver.test.js.map +0 -1
  330. package/dist/workflow/workflow-executor.d.ts +0 -163
  331. package/dist/workflow/workflow-executor.d.ts.map +0 -1
  332. package/dist/workflow/workflow-executor.js +0 -197
  333. package/dist/workflow/workflow-executor.js.map +0 -1
  334. package/dist/workflow/workflow-executor.test.d.ts +0 -8
  335. package/dist/workflow/workflow-executor.test.d.ts.map +0 -1
  336. package/dist/workflow/workflow-executor.test.js +0 -444
  337. package/dist/workflow/workflow-executor.test.js.map +0 -1
  338. package/dist/workflow/workflow-loader.d.ts.map +0 -1
  339. package/dist/workflow/workflow-loader.js.map +0 -1
  340. package/dist/workflow/workflow-loader.test.d.ts +0 -15
  341. package/dist/workflow/workflow-loader.test.d.ts.map +0 -1
  342. package/dist/workflow/workflow-loader.test.js +0 -354
  343. package/dist/workflow/workflow-loader.test.js.map +0 -1
  344. package/dist/workflow/workflow-migration.test.d.ts +0 -17
  345. package/dist/workflow/workflow-migration.test.d.ts.map +0 -1
  346. package/dist/workflow/workflow-migration.test.js +0 -371
  347. package/dist/workflow/workflow-migration.test.js.map +0 -1
  348. package/dist/workflow/workflow-permissions.d.ts.map +0 -1
  349. package/dist/workflow/workflow-permissions.js.map +0 -1
  350. package/dist/workflow/workflow-permissions.test.d.ts +0 -15
  351. package/dist/workflow/workflow-permissions.test.d.ts.map +0 -1
  352. package/dist/workflow/workflow-permissions.test.js +0 -301
  353. package/dist/workflow/workflow-permissions.test.js.map +0 -1
  354. package/dist/workflow/workflow-router.d.ts.map +0 -1
  355. package/dist/workflow/workflow-router.js.map +0 -1
  356. package/dist/workflow/workflow-router.test.d.ts +0 -20
  357. package/dist/workflow/workflow-router.test.d.ts.map +0 -1
  358. package/dist/workflow/workflow-router.test.js +0 -607
  359. package/dist/workflow/workflow-router.test.js.map +0 -1
  360. package/dist/workflow/workflow-schema.d.ts.map +0 -1
  361. package/dist/workflow/workflow-schema.js.map +0 -1
  362. package/dist/workflow/workflow-schema.test.d.ts +0 -45
  363. package/dist/workflow/workflow-schema.test.d.ts.map +0 -1
  364. package/dist/workflow/workflow-schema.test.js +0 -512
  365. package/dist/workflow/workflow-schema.test.js.map +0 -1
  366. package/dist/workflow/workflow-stepped-schema.test.d.ts +0 -18
  367. package/dist/workflow/workflow-stepped-schema.test.d.ts.map +0 -1
  368. package/dist/workflow/workflow-stepped-schema.test.js +0 -608
  369. package/dist/workflow/workflow-stepped-schema.test.js.map +0 -1
@@ -1,543 +0,0 @@
1
- /**
2
- * Tests for Story MSSCI-12085: Gate detection and approval flow
3
- *
4
- * Tests the unified gate detection system that combines three sources:
5
- * 1. Workflow YAML: gates.after_steps array
6
- * 2. Step-meta: gate: true field
7
- * 3. Content marker: <!-- GATE --> in step content
8
- *
9
- * Also tests gate prompt extraction and decision recording in session files.
10
- *
11
- * Run with: npm test
12
- */
13
- import { describe, it } from 'node:test';
14
- import assert from 'node:assert';
15
- // These imports will fail until implementation exists - confirms RED state
16
- import { detectGate, extractGatePrompt, recordGateDecision, parseGateDecisions, formatGateDecisions, } from './gate-handler.js';
17
- // =============================================================================
18
- // AC1: Gates detected from all three sources
19
- // =============================================================================
20
- describe('MSSCI-12085: Gate Detection and Approval Flow', () => {
21
- describe('AC1: Gates detected from all three sources', () => {
22
- describe('Workflow YAML gates.after_steps', () => {
23
- it('should detect gate when step number is in after_steps array', () => {
24
- const result = detectGate({
25
- stepNumber: 3,
26
- afterSteps: [1, 3, 7],
27
- stepMeta: { gate: false },
28
- stepContent: 'No marker here.',
29
- });
30
- assert.strictEqual(result.isGate, true);
31
- assert.strictEqual(result.source, 'workflow');
32
- assert.strictEqual(result.stepNumber, 3);
33
- });
34
- it('should not detect gate when step number is not in after_steps', () => {
35
- const result = detectGate({
36
- stepNumber: 2,
37
- afterSteps: [1, 3, 7],
38
- stepMeta: { gate: false },
39
- stepContent: 'No marker here.',
40
- });
41
- assert.strictEqual(result.isGate, false);
42
- assert.strictEqual(result.source, null);
43
- });
44
- it('should handle empty after_steps array', () => {
45
- const result = detectGate({
46
- stepNumber: 1,
47
- afterSteps: [],
48
- stepMeta: {},
49
- stepContent: 'Content.',
50
- });
51
- assert.strictEqual(result.isGate, false);
52
- });
53
- it('should handle undefined after_steps', () => {
54
- const result = detectGate({
55
- stepNumber: 1,
56
- afterSteps: undefined,
57
- stepMeta: {},
58
- stepContent: 'Content.',
59
- });
60
- assert.strictEqual(result.isGate, false);
61
- });
62
- });
63
- describe('Step-meta gate: true', () => {
64
- it('should detect gate from step-meta gate: true', () => {
65
- const result = detectGate({
66
- stepNumber: 2,
67
- afterSteps: [],
68
- stepMeta: { gate: true },
69
- stepContent: 'No marker.',
70
- });
71
- assert.strictEqual(result.isGate, true);
72
- assert.strictEqual(result.source, 'step-meta');
73
- });
74
- it('should not detect gate when step-meta gate: false', () => {
75
- const result = detectGate({
76
- stepNumber: 2,
77
- afterSteps: [],
78
- stepMeta: { gate: false },
79
- stepContent: 'No marker.',
80
- });
81
- assert.strictEqual(result.isGate, false);
82
- });
83
- it('should handle missing gate field in step-meta', () => {
84
- const result = detectGate({
85
- stepNumber: 2,
86
- afterSteps: [],
87
- stepMeta: { name: 'some-step' },
88
- stepContent: 'No marker.',
89
- });
90
- assert.strictEqual(result.isGate, false);
91
- });
92
- it('should handle undefined step-meta', () => {
93
- const result = detectGate({
94
- stepNumber: 2,
95
- afterSteps: [],
96
- stepMeta: undefined,
97
- stepContent: 'No marker.',
98
- });
99
- assert.strictEqual(result.isGate, false);
100
- });
101
- });
102
- describe('Content marker <!-- GATE -->', () => {
103
- it('should detect gate from <!-- GATE --> marker in content', () => {
104
- const result = detectGate({
105
- stepNumber: 4,
106
- afterSteps: [],
107
- stepMeta: {},
108
- stepContent: `## Instructions
109
- Do the thing.
110
-
111
- <!-- GATE -->
112
- - [C] Continue
113
- - [R] Revise
114
- `,
115
- });
116
- assert.strictEqual(result.isGate, true);
117
- assert.strictEqual(result.source, 'marker');
118
- });
119
- it('should detect gate from marker at start of content', () => {
120
- const result = detectGate({
121
- stepNumber: 1,
122
- afterSteps: [],
123
- stepMeta: {},
124
- stepContent: `<!-- GATE -->
125
- First line after marker.
126
- `,
127
- });
128
- assert.strictEqual(result.isGate, true);
129
- assert.strictEqual(result.source, 'marker');
130
- });
131
- it('should detect gate from marker at end of content', () => {
132
- const result = detectGate({
133
- stepNumber: 1,
134
- afterSteps: [],
135
- stepMeta: {},
136
- stepContent: `Content here.
137
- <!-- GATE -->`,
138
- });
139
- assert.strictEqual(result.isGate, true);
140
- });
141
- it('should detect gate from marker with surrounding whitespace', () => {
142
- const result = detectGate({
143
- stepNumber: 1,
144
- afterSteps: [],
145
- stepMeta: {},
146
- stepContent: `Content.
147
-
148
- <!-- GATE -->
149
-
150
- More content.
151
- `,
152
- });
153
- assert.strictEqual(result.isGate, true);
154
- });
155
- it('should not detect gate from similar but incorrect markers', () => {
156
- const result = detectGate({
157
- stepNumber: 1,
158
- afterSteps: [],
159
- stepMeta: {},
160
- stepContent: `<!-- NOT A GATE -->
161
- <!-- GATES -->
162
- <!-- gate -->
163
- <!--GATE-->
164
- `,
165
- });
166
- assert.strictEqual(result.isGate, false);
167
- });
168
- });
169
- describe('Combined sources (OR logic)', () => {
170
- it('should detect gate when workflow AND step-meta indicate gate', () => {
171
- const result = detectGate({
172
- stepNumber: 3,
173
- afterSteps: [3],
174
- stepMeta: { gate: true },
175
- stepContent: 'No marker.',
176
- });
177
- assert.strictEqual(result.isGate, true);
178
- // Should report first detected source (workflow takes priority)
179
- assert.strictEqual(result.source, 'workflow');
180
- });
181
- it('should detect gate when step-meta AND marker indicate gate', () => {
182
- const result = detectGate({
183
- stepNumber: 5,
184
- afterSteps: [],
185
- stepMeta: { gate: true },
186
- stepContent: '<!-- GATE -->',
187
- });
188
- assert.strictEqual(result.isGate, true);
189
- // step-meta takes priority over marker
190
- assert.strictEqual(result.source, 'step-meta');
191
- });
192
- it('should detect gate when all three sources indicate gate', () => {
193
- const result = detectGate({
194
- stepNumber: 7,
195
- afterSteps: [7],
196
- stepMeta: { gate: true },
197
- stepContent: '<!-- GATE -->',
198
- });
199
- assert.strictEqual(result.isGate, true);
200
- // Workflow has highest priority
201
- assert.strictEqual(result.source, 'workflow');
202
- });
203
- it('should not detect gate when no sources indicate gate', () => {
204
- const result = detectGate({
205
- stepNumber: 2,
206
- afterSteps: [1, 3],
207
- stepMeta: { gate: false },
208
- stepContent: 'Plain content.',
209
- });
210
- assert.strictEqual(result.isGate, false);
211
- assert.strictEqual(result.source, null);
212
- });
213
- });
214
- });
215
- // =============================================================================
216
- // AC2: Gate prompt displayed to user
217
- // =============================================================================
218
- describe('AC2: Gate prompt displayed to user', () => {
219
- it('should extract gate prompt from ## Gate Prompt section', () => {
220
- const content = `# Step 3: Review
221
-
222
- ## Instructions
223
- Do the review.
224
-
225
- ## Gate Prompt
226
- Please verify the architecture design is complete and aligns with requirements.
227
-
228
- ## Next Steps
229
- Continue to implementation.
230
- `;
231
- const prompt = extractGatePrompt(content);
232
- assert.strictEqual(prompt, 'Please verify the architecture design is complete and aligns with requirements.');
233
- });
234
- it('should extract gate prompt from step-meta gate_prompt field', () => {
235
- const content = 'Some content without a Gate Prompt section.';
236
- const meta = {
237
- number: 3,
238
- name: 'review',
239
- gate: true,
240
- gate_prompt: 'Confirm the design is ready for implementation.',
241
- };
242
- const prompt = extractGatePrompt(content, meta);
243
- assert.strictEqual(prompt, 'Confirm the design is ready for implementation.');
244
- });
245
- it('should prefer ## Gate Prompt section over meta gate_prompt', () => {
246
- const content = `## Gate Prompt
247
- Section prompt takes priority.
248
- `;
249
- const meta = {
250
- gate_prompt: 'Meta prompt should be ignored.',
251
- };
252
- const prompt = extractGatePrompt(content, meta);
253
- assert.strictEqual(prompt, 'Section prompt takes priority.');
254
- });
255
- it('should return default prompt when neither source present', () => {
256
- const content = 'Content with no gate prompt section.';
257
- const meta = { gate: true };
258
- const prompt = extractGatePrompt(content, meta);
259
- assert.strictEqual(prompt, 'Review the output above. Continue to next step or revise?');
260
- });
261
- it('should handle multi-line gate prompt section', () => {
262
- const content = `## Gate Prompt
263
- This is a multi-line prompt.
264
- It spans several lines.
265
- All should be included.
266
-
267
- ## Next Section
268
- `;
269
- const prompt = extractGatePrompt(content);
270
- assert.ok(prompt.includes('This is a multi-line prompt.'));
271
- assert.ok(prompt.includes('It spans several lines.'));
272
- assert.ok(prompt.includes('All should be included.'));
273
- // Should not include the next section
274
- assert.ok(!prompt.includes('Next Section'));
275
- });
276
- it('should trim whitespace from extracted prompt', () => {
277
- const content = `## Gate Prompt
278
-
279
- Prompt with extra whitespace.
280
-
281
- ## Next Section
282
- `;
283
- const prompt = extractGatePrompt(content);
284
- assert.strictEqual(prompt, 'Prompt with extra whitespace.');
285
- });
286
- it('should handle empty Gate Prompt section', () => {
287
- const content = `## Gate Prompt
288
-
289
- ## Next Section
290
- `;
291
- const prompt = extractGatePrompt(content);
292
- // Should return default since section is empty
293
- assert.strictEqual(prompt, 'Review the output above. Continue to next step or revise?');
294
- });
295
- });
296
- // =============================================================================
297
- // AC3: User choice recorded in session
298
- // =============================================================================
299
- describe('AC3: User choice recorded in session', () => {
300
- it('should record continue decision to session content', () => {
301
- const sessionContent = `# Story Test
302
-
303
- ## Story Overview
304
- - **Epic:** Test
305
-
306
- ## Workflow State
307
- - **Current Step:** 3
308
-
309
- ## Acceptance Criteria
310
- - [ ] AC1
311
- `;
312
- const decision = {
313
- step: 3,
314
- choice: 'continue',
315
- timestamp: '2026-01-21T10:30:00.000Z',
316
- };
317
- const result = recordGateDecision(sessionContent, decision);
318
- assert.ok(result.includes('## Gate Decisions'));
319
- assert.ok(result.includes('| 3 | continue |'));
320
- assert.ok(result.includes('2026-01-21T10:30:00.000Z'));
321
- });
322
- it('should record revise decision with notes', () => {
323
- const sessionContent = `# Story Test
324
-
325
- ## Workflow State
326
- - **Current Step:** 5
327
- `;
328
- const decision = {
329
- step: 5,
330
- choice: 'revise',
331
- timestamp: '2026-01-21T11:45:00.000Z',
332
- notes: 'Architecture needs rework',
333
- };
334
- const result = recordGateDecision(sessionContent, decision);
335
- assert.ok(result.includes('| 5 | revise |'));
336
- assert.ok(result.includes('Architecture needs rework'));
337
- });
338
- it('should append to existing Gate Decisions section', () => {
339
- const sessionContent = `# Story Test
340
-
341
- ## Gate Decisions
342
- | Step | Choice | Time | Notes |
343
- |------|--------|------|-------|
344
- | 3 | continue | 2026-01-21T10:30:00.000Z | - |
345
-
346
- ## Workflow State
347
- `;
348
- const decision = {
349
- step: 7,
350
- choice: 'continue',
351
- timestamp: '2026-01-21T14:00:00.000Z',
352
- };
353
- const result = recordGateDecision(sessionContent, decision);
354
- // Should have both decisions
355
- assert.ok(result.includes('| 3 | continue |'));
356
- assert.ok(result.includes('| 7 | continue |'));
357
- });
358
- it('should create Gate Decisions section if missing', () => {
359
- const sessionContent = `# Story Test
360
-
361
- ## Workflow State
362
- - **Current Step:** 1
363
- `;
364
- const decision = {
365
- step: 1,
366
- choice: 'continue',
367
- timestamp: '2026-01-21T09:00:00.000Z',
368
- };
369
- const result = recordGateDecision(sessionContent, decision);
370
- assert.ok(result.includes('## Gate Decisions'));
371
- assert.ok(result.includes('| Step | Choice | Time | Notes |'));
372
- assert.ok(result.includes('| 1 | continue |'));
373
- });
374
- it('should parse existing gate decisions from session', () => {
375
- const sessionContent = `# Story Test
376
-
377
- ## Gate Decisions
378
- | Step | Choice | Time | Notes |
379
- |------|--------|------|-------|
380
- | 3 | continue | 2026-01-21T10:30:00.000Z | Reviewed and approved |
381
- | 7 | revise | 2026-01-21T11:45:00.000Z | Needs changes |
382
-
383
- ## Next Section
384
- `;
385
- const decisions = parseGateDecisions(sessionContent);
386
- assert.strictEqual(decisions.length, 2);
387
- assert.strictEqual(decisions[0].step, 3);
388
- assert.strictEqual(decisions[0].choice, 'continue');
389
- assert.strictEqual(decisions[0].notes, 'Reviewed and approved');
390
- assert.strictEqual(decisions[1].step, 7);
391
- assert.strictEqual(decisions[1].choice, 'revise');
392
- });
393
- it('should return empty array when no Gate Decisions section', () => {
394
- const sessionContent = `# Story Test
395
-
396
- ## Workflow State
397
- - **Current Step:** 1
398
- `;
399
- const decisions = parseGateDecisions(sessionContent);
400
- assert.deepStrictEqual(decisions, []);
401
- });
402
- it('should handle notes with pipe characters', () => {
403
- const decision = {
404
- step: 2,
405
- choice: 'continue',
406
- timestamp: '2026-01-21T10:00:00.000Z',
407
- notes: 'Option A | Option B were considered',
408
- };
409
- const formatted = formatGateDecisions([decision]);
410
- // Pipe in notes should be escaped or handled
411
- assert.ok(formatted.includes('| 2 | continue |'));
412
- // The implementation should handle this gracefully
413
- });
414
- });
415
- // =============================================================================
416
- // AC4: Continue proceeds to next step normally
417
- // =============================================================================
418
- describe('AC4: Continue proceeds to next step normally', () => {
419
- it('should return isGate: false when step has no gate', () => {
420
- const result = detectGate({
421
- stepNumber: 2,
422
- afterSteps: [1, 5],
423
- stepMeta: { gate: false },
424
- stepContent: 'No marker.',
425
- });
426
- assert.strictEqual(result.isGate, false);
427
- // No gate means continue normally
428
- });
429
- it('should include stepNumber in GateInfo for workflow tracking', () => {
430
- const result = detectGate({
431
- stepNumber: 4,
432
- afterSteps: [4],
433
- stepMeta: {},
434
- stepContent: '',
435
- });
436
- assert.strictEqual(result.stepNumber, 4);
437
- });
438
- it('should include prompt in GateInfo when gate detected', () => {
439
- const result = detectGate({
440
- stepNumber: 3,
441
- afterSteps: [3],
442
- stepMeta: { gate_prompt: 'Custom prompt here.' },
443
- stepContent: '',
444
- });
445
- assert.strictEqual(result.isGate, true);
446
- assert.strictEqual(result.prompt, 'Custom prompt here.');
447
- });
448
- it('should include default prompt when no custom prompt provided', () => {
449
- const result = detectGate({
450
- stepNumber: 3,
451
- afterSteps: [3],
452
- stepMeta: {},
453
- stepContent: 'No gate prompt section.',
454
- });
455
- assert.strictEqual(result.isGate, true);
456
- assert.strictEqual(result.prompt, 'Review the output above. Continue to next step or revise?');
457
- });
458
- });
459
- // =============================================================================
460
- // Edge Cases
461
- // =============================================================================
462
- describe('Edge Cases', () => {
463
- it('should handle step number 0', () => {
464
- const result = detectGate({
465
- stepNumber: 0,
466
- afterSteps: [0],
467
- stepMeta: {},
468
- stepContent: '',
469
- });
470
- assert.strictEqual(result.isGate, true);
471
- assert.strictEqual(result.stepNumber, 0);
472
- });
473
- it('should handle large step numbers', () => {
474
- const result = detectGate({
475
- stepNumber: 999,
476
- afterSteps: [999],
477
- stepMeta: {},
478
- stepContent: '',
479
- });
480
- assert.strictEqual(result.isGate, true);
481
- assert.strictEqual(result.stepNumber, 999);
482
- });
483
- it('should handle empty step content', () => {
484
- const result = detectGate({
485
- stepNumber: 1,
486
- afterSteps: [],
487
- stepMeta: {},
488
- stepContent: '',
489
- });
490
- assert.strictEqual(result.isGate, false);
491
- });
492
- it('should handle null/undefined in meta gracefully', () => {
493
- const result = detectGate({
494
- stepNumber: 1,
495
- afterSteps: [],
496
- // @ts-expect-error - testing runtime null handling
497
- stepMeta: null,
498
- stepContent: 'Content.',
499
- });
500
- assert.strictEqual(result.isGate, false);
501
- });
502
- it('should handle very long gate prompt', () => {
503
- const longPrompt = 'A'.repeat(10000);
504
- const content = `## Gate Prompt
505
- ${longPrompt}
506
-
507
- ## Next
508
- `;
509
- const prompt = extractGatePrompt(content);
510
- assert.strictEqual(prompt.length, 10000);
511
- });
512
- it('should handle unicode in gate decisions', () => {
513
- const decision = {
514
- step: 1,
515
- choice: 'continue',
516
- timestamp: '2026-01-21T10:00:00.000Z',
517
- notes: '確認完了 ✓',
518
- };
519
- const formatted = formatGateDecisions([decision]);
520
- assert.ok(formatted.includes('確認完了'));
521
- assert.ok(formatted.includes('✓'));
522
- });
523
- it('should handle session content with Windows line endings', () => {
524
- const sessionContent = `# Story Test\r\n\r\n## Gate Decisions\r\n| Step | Choice | Time | Notes |\r\n|------|--------|------|-------|\r\n| 1 | continue | 2026-01-21T10:00:00.000Z | - |\r\n`;
525
- const decisions = parseGateDecisions(sessionContent);
526
- assert.strictEqual(decisions.length, 1);
527
- assert.strictEqual(decisions[0].step, 1);
528
- });
529
- it('should handle multiple Gate Prompt sections (use first)', () => {
530
- const content = `## Gate Prompt
531
- First prompt.
532
-
533
- ## Some Section
534
-
535
- ## Gate Prompt
536
- Second prompt should be ignored.
537
- `;
538
- const prompt = extractGatePrompt(content);
539
- assert.strictEqual(prompt, 'First prompt.');
540
- });
541
- });
542
- });
543
- //# sourceMappingURL=gate-handler.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gate-handler.test.js","sourceRoot":"","sources":["../../src/workflow/gate-handler.test.ts"],"names":[],"mappings":"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"}