@pennyfarthing/core 7.4.1 → 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 (890) hide show
  1. package/{packages/core/dist → dist}/cli/utils/files.d.ts +0 -1
  2. package/dist/cli/utils/files.js +179 -0
  3. package/{packages/core/dist → dist}/cli/utils/manifest.d.ts +0 -1
  4. package/dist/cli/utils/manifest.js +93 -0
  5. package/{packages/core/dist → dist}/cli/utils/version.d.ts +0 -1
  6. package/dist/cli/utils/version.js +70 -0
  7. package/{packages/core/dist → dist}/index.d.ts +0 -1
  8. package/dist/index.js +48 -0
  9. package/{packages/core/dist → dist}/permissions/index.d.ts +0 -1
  10. package/dist/permissions/index.js +16 -0
  11. package/{packages/core/dist → dist}/permissions/permission-schema.d.ts +0 -1
  12. package/{packages/core/dist → dist}/permissions/permission-schema.js +13 -9
  13. package/{packages/core/dist → dist}/scripts/job-fair-aggregator.d.ts +0 -1
  14. package/dist/scripts/job-fair-aggregator.js +690 -0
  15. package/{packages/core/dist → dist}/workflow/index.d.ts +0 -1
  16. package/dist/workflow/index.js +31 -0
  17. package/{packages/core/dist → dist}/workflow/workflow-loader.d.ts +0 -1
  18. package/{packages/core/dist → dist}/workflow/workflow-loader.js +40 -34
  19. package/{packages/core/dist → dist}/workflow/workflow-permissions.d.ts +0 -1
  20. package/{packages/core/dist → dist}/workflow/workflow-permissions.js +14 -8
  21. package/{packages/core/dist → dist}/workflow/workflow-router.d.ts +0 -1
  22. package/{packages/core/dist → dist}/workflow/workflow-router.js +70 -51
  23. package/{packages/core/dist → dist}/workflow/workflow-schema.d.ts +0 -1
  24. package/{packages/core/dist → dist}/workflow/workflow-schema.js +62 -59
  25. package/package.json +36 -31
  26. package/LICENSE +0 -14
  27. package/README.md +0 -301
  28. package/packages/core/dist/bmad/context-reader.d.ts +0 -71
  29. package/packages/core/dist/bmad/context-reader.d.ts.map +0 -1
  30. package/packages/core/dist/bmad/context-reader.js +0 -369
  31. package/packages/core/dist/bmad/context-reader.js.map +0 -1
  32. package/packages/core/dist/bmad/context-reader.test.d.ts +0 -71
  33. package/packages/core/dist/bmad/context-reader.test.d.ts.map +0 -1
  34. package/packages/core/dist/bmad/context-reader.test.js +0 -878
  35. package/packages/core/dist/bmad/context-reader.test.js.map +0 -1
  36. package/packages/core/dist/bmad/epics-parser.d.ts +0 -61
  37. package/packages/core/dist/bmad/epics-parser.d.ts.map +0 -1
  38. package/packages/core/dist/bmad/epics-parser.js +0 -331
  39. package/packages/core/dist/bmad/epics-parser.js.map +0 -1
  40. package/packages/core/dist/bmad/epics-parser.test.d.ts +0 -7
  41. package/packages/core/dist/bmad/epics-parser.test.d.ts.map +0 -1
  42. package/packages/core/dist/bmad/epics-parser.test.js +0 -449
  43. package/packages/core/dist/bmad/epics-parser.test.js.map +0 -1
  44. package/packages/core/dist/bmad/index.d.ts +0 -11
  45. package/packages/core/dist/bmad/index.d.ts.map +0 -1
  46. package/packages/core/dist/bmad/index.js +0 -24
  47. package/packages/core/dist/bmad/index.js.map +0 -1
  48. package/packages/core/dist/bmad/status-sync.d.ts +0 -173
  49. package/packages/core/dist/bmad/status-sync.d.ts.map +0 -1
  50. package/packages/core/dist/bmad/status-sync.js +0 -463
  51. package/packages/core/dist/bmad/status-sync.js.map +0 -1
  52. package/packages/core/dist/bmad/status-sync.test.d.ts +0 -7
  53. package/packages/core/dist/bmad/status-sync.test.d.ts.map +0 -1
  54. package/packages/core/dist/bmad/status-sync.test.js +0 -702
  55. package/packages/core/dist/bmad/status-sync.test.js.map +0 -1
  56. package/packages/core/dist/bmad/story-exporter.d.ts +0 -55
  57. package/packages/core/dist/bmad/story-exporter.d.ts.map +0 -1
  58. package/packages/core/dist/bmad/story-exporter.js +0 -170
  59. package/packages/core/dist/bmad/story-exporter.js.map +0 -1
  60. package/packages/core/dist/bmad/story-exporter.test.d.ts +0 -51
  61. package/packages/core/dist/bmad/story-exporter.test.d.ts.map +0 -1
  62. package/packages/core/dist/bmad/story-exporter.test.js +0 -603
  63. package/packages/core/dist/bmad/story-exporter.test.js.map +0 -1
  64. package/packages/core/dist/bmad/story-parser.d.ts +0 -44
  65. package/packages/core/dist/bmad/story-parser.d.ts.map +0 -1
  66. package/packages/core/dist/bmad/story-parser.js +0 -307
  67. package/packages/core/dist/bmad/story-parser.js.map +0 -1
  68. package/packages/core/dist/bmad/story-parser.test.d.ts +0 -44
  69. package/packages/core/dist/bmad/story-parser.test.d.ts.map +0 -1
  70. package/packages/core/dist/bmad/story-parser.test.js +0 -693
  71. package/packages/core/dist/bmad/story-parser.test.js.map +0 -1
  72. package/packages/core/dist/cli/commands/command.d.ts +0 -28
  73. package/packages/core/dist/cli/commands/command.d.ts.map +0 -1
  74. package/packages/core/dist/cli/commands/command.js +0 -399
  75. package/packages/core/dist/cli/commands/command.js.map +0 -1
  76. package/packages/core/dist/cli/commands/cyclist.d.ts +0 -46
  77. package/packages/core/dist/cli/commands/cyclist.d.ts.map +0 -1
  78. package/packages/core/dist/cli/commands/cyclist.js +0 -196
  79. package/packages/core/dist/cli/commands/cyclist.js.map +0 -1
  80. package/packages/core/dist/cli/commands/cyclist.test.d.ts +0 -13
  81. package/packages/core/dist/cli/commands/cyclist.test.d.ts.map +0 -1
  82. package/packages/core/dist/cli/commands/cyclist.test.js +0 -245
  83. package/packages/core/dist/cli/commands/cyclist.test.js.map +0 -1
  84. package/packages/core/dist/cli/commands/doctor.d.ts +0 -9
  85. package/packages/core/dist/cli/commands/doctor.d.ts.map +0 -1
  86. package/packages/core/dist/cli/commands/doctor.js +0 -652
  87. package/packages/core/dist/cli/commands/doctor.js.map +0 -1
  88. package/packages/core/dist/cli/commands/init.d.ts +0 -8
  89. package/packages/core/dist/cli/commands/init.d.ts.map +0 -1
  90. package/packages/core/dist/cli/commands/init.js +0 -525
  91. package/packages/core/dist/cli/commands/init.js.map +0 -1
  92. package/packages/core/dist/cli/commands/skill.d.ts +0 -28
  93. package/packages/core/dist/cli/commands/skill.d.ts.map +0 -1
  94. package/packages/core/dist/cli/commands/skill.js +0 -416
  95. package/packages/core/dist/cli/commands/skill.js.map +0 -1
  96. package/packages/core/dist/cli/commands/theme.d.ts +0 -21
  97. package/packages/core/dist/cli/commands/theme.d.ts.map +0 -1
  98. package/packages/core/dist/cli/commands/theme.js +0 -201
  99. package/packages/core/dist/cli/commands/theme.js.map +0 -1
  100. package/packages/core/dist/cli/commands/uninstall.d.ts +0 -8
  101. package/packages/core/dist/cli/commands/uninstall.d.ts.map +0 -1
  102. package/packages/core/dist/cli/commands/uninstall.js +0 -237
  103. package/packages/core/dist/cli/commands/uninstall.js.map +0 -1
  104. package/packages/core/dist/cli/commands/update.d.ts +0 -9
  105. package/packages/core/dist/cli/commands/update.d.ts.map +0 -1
  106. package/packages/core/dist/cli/commands/update.js +0 -421
  107. package/packages/core/dist/cli/commands/update.js.map +0 -1
  108. package/packages/core/dist/cli/commands/version.d.ts +0 -2
  109. package/packages/core/dist/cli/commands/version.d.ts.map +0 -1
  110. package/packages/core/dist/cli/commands/version.js +0 -28
  111. package/packages/core/dist/cli/commands/version.js.map +0 -1
  112. package/packages/core/dist/cli/customization.test.d.ts +0 -12
  113. package/packages/core/dist/cli/customization.test.d.ts.map +0 -1
  114. package/packages/core/dist/cli/customization.test.js +0 -84
  115. package/packages/core/dist/cli/customization.test.js.map +0 -1
  116. package/packages/core/dist/cli/cyclist-migration.test.d.ts +0 -16
  117. package/packages/core/dist/cli/cyclist-migration.test.d.ts.map +0 -1
  118. package/packages/core/dist/cli/cyclist-migration.test.js +0 -225
  119. package/packages/core/dist/cli/cyclist-migration.test.js.map +0 -1
  120. package/packages/core/dist/cli/index.d.ts +0 -3
  121. package/packages/core/dist/cli/index.d.ts.map +0 -1
  122. package/packages/core/dist/cli/index.js +0 -174
  123. package/packages/core/dist/cli/index.js.map +0 -1
  124. package/packages/core/dist/cli/ocean-profiles.test.d.ts +0 -13
  125. package/packages/core/dist/cli/ocean-profiles.test.d.ts.map +0 -1
  126. package/packages/core/dist/cli/ocean-profiles.test.js +0 -134
  127. package/packages/core/dist/cli/ocean-profiles.test.js.map +0 -1
  128. package/packages/core/dist/cli/theme-maker.test.d.ts +0 -11
  129. package/packages/core/dist/cli/theme-maker.test.d.ts.map +0 -1
  130. package/packages/core/dist/cli/theme-maker.test.js +0 -356
  131. package/packages/core/dist/cli/theme-maker.test.js.map +0 -1
  132. package/packages/core/dist/cli/utils/constants.d.ts +0 -66
  133. package/packages/core/dist/cli/utils/constants.d.ts.map +0 -1
  134. package/packages/core/dist/cli/utils/constants.js +0 -54
  135. package/packages/core/dist/cli/utils/constants.js.map +0 -1
  136. package/packages/core/dist/cli/utils/files.d.ts.map +0 -1
  137. package/packages/core/dist/cli/utils/files.js +0 -162
  138. package/packages/core/dist/cli/utils/files.js.map +0 -1
  139. package/packages/core/dist/cli/utils/logger.d.ts +0 -26
  140. package/packages/core/dist/cli/utils/logger.d.ts.map +0 -1
  141. package/packages/core/dist/cli/utils/logger.js +0 -88
  142. package/packages/core/dist/cli/utils/logger.js.map +0 -1
  143. package/packages/core/dist/cli/utils/manifest.d.ts.map +0 -1
  144. package/packages/core/dist/cli/utils/manifest.js +0 -90
  145. package/packages/core/dist/cli/utils/manifest.js.map +0 -1
  146. package/packages/core/dist/cli/utils/node-modules.d.ts +0 -6
  147. package/packages/core/dist/cli/utils/node-modules.d.ts.map +0 -1
  148. package/packages/core/dist/cli/utils/node-modules.js +0 -32
  149. package/packages/core/dist/cli/utils/node-modules.js.map +0 -1
  150. package/packages/core/dist/cli/utils/prompts.d.ts +0 -34
  151. package/packages/core/dist/cli/utils/prompts.d.ts.map +0 -1
  152. package/packages/core/dist/cli/utils/prompts.js +0 -93
  153. package/packages/core/dist/cli/utils/prompts.js.map +0 -1
  154. package/packages/core/dist/cli/utils/symlinks.d.ts +0 -29
  155. package/packages/core/dist/cli/utils/symlinks.d.ts.map +0 -1
  156. package/packages/core/dist/cli/utils/symlinks.js +0 -181
  157. package/packages/core/dist/cli/utils/symlinks.js.map +0 -1
  158. package/packages/core/dist/cli/utils/themes.d.ts +0 -101
  159. package/packages/core/dist/cli/utils/themes.d.ts.map +0 -1
  160. package/packages/core/dist/cli/utils/themes.js +0 -373
  161. package/packages/core/dist/cli/utils/themes.js.map +0 -1
  162. package/packages/core/dist/cli/utils/themes.test.d.ts +0 -12
  163. package/packages/core/dist/cli/utils/themes.test.d.ts.map +0 -1
  164. package/packages/core/dist/cli/utils/themes.test.js +0 -147
  165. package/packages/core/dist/cli/utils/themes.test.js.map +0 -1
  166. package/packages/core/dist/cli/utils/version.d.ts.map +0 -1
  167. package/packages/core/dist/cli/utils/version.js +0 -64
  168. package/packages/core/dist/cli/utils/version.js.map +0 -1
  169. package/packages/core/dist/cli/workspace.test.d.ts +0 -8
  170. package/packages/core/dist/cli/workspace.test.d.ts.map +0 -1
  171. package/packages/core/dist/cli/workspace.test.js +0 -156
  172. package/packages/core/dist/cli/workspace.test.js.map +0 -1
  173. package/packages/core/dist/index.d.ts.map +0 -1
  174. package/packages/core/dist/index.js +0 -20
  175. package/packages/core/dist/index.js.map +0 -1
  176. package/packages/core/dist/jira/jira-epic-creation.d.ts +0 -109
  177. package/packages/core/dist/jira/jira-epic-creation.d.ts.map +0 -1
  178. package/packages/core/dist/jira/jira-epic-creation.js +0 -253
  179. package/packages/core/dist/jira/jira-epic-creation.js.map +0 -1
  180. package/packages/core/dist/jira/jira-epic-creation.test.d.ts +0 -16
  181. package/packages/core/dist/jira/jira-epic-creation.test.d.ts.map +0 -1
  182. package/packages/core/dist/jira/jira-epic-creation.test.js +0 -387
  183. package/packages/core/dist/jira/jira-epic-creation.test.js.map +0 -1
  184. package/packages/core/dist/jira/jira-sprint-sync.d.ts +0 -247
  185. package/packages/core/dist/jira/jira-sprint-sync.d.ts.map +0 -1
  186. package/packages/core/dist/jira/jira-sprint-sync.js +0 -670
  187. package/packages/core/dist/jira/jira-sprint-sync.js.map +0 -1
  188. package/packages/core/dist/jira/jira-sprint-sync.test.d.ts +0 -16
  189. package/packages/core/dist/jira/jira-sprint-sync.test.d.ts.map +0 -1
  190. package/packages/core/dist/jira/jira-sprint-sync.test.js +0 -845
  191. package/packages/core/dist/jira/jira-sprint-sync.test.js.map +0 -1
  192. package/packages/core/dist/permissions/index.d.ts.map +0 -1
  193. package/packages/core/dist/permissions/index.js +0 -13
  194. package/packages/core/dist/permissions/index.js.map +0 -1
  195. package/packages/core/dist/permissions/permission-schema.d.ts.map +0 -1
  196. package/packages/core/dist/permissions/permission-schema.js.map +0 -1
  197. package/packages/core/dist/permissions/permission-schema.test.d.ts +0 -40
  198. package/packages/core/dist/permissions/permission-schema.test.d.ts.map +0 -1
  199. package/packages/core/dist/permissions/permission-schema.test.js +0 -367
  200. package/packages/core/dist/permissions/permission-schema.test.js.map +0 -1
  201. package/packages/core/dist/scripts/add-ocean-profiles.d.ts +0 -9
  202. package/packages/core/dist/scripts/add-ocean-profiles.d.ts.map +0 -1
  203. package/packages/core/dist/scripts/add-ocean-profiles.js +0 -695
  204. package/packages/core/dist/scripts/add-ocean-profiles.js.map +0 -1
  205. package/packages/core/dist/scripts/benchmark-integration.d.ts +0 -182
  206. package/packages/core/dist/scripts/benchmark-integration.d.ts.map +0 -1
  207. package/packages/core/dist/scripts/benchmark-integration.js +0 -691
  208. package/packages/core/dist/scripts/benchmark-integration.js.map +0 -1
  209. package/packages/core/dist/scripts/benchmark-integration.test.d.ts +0 -13
  210. package/packages/core/dist/scripts/benchmark-integration.test.d.ts.map +0 -1
  211. package/packages/core/dist/scripts/benchmark-integration.test.js +0 -680
  212. package/packages/core/dist/scripts/benchmark-integration.test.js.map +0 -1
  213. package/packages/core/dist/scripts/debugging-scenarios.test.d.ts +0 -18
  214. package/packages/core/dist/scripts/debugging-scenarios.test.d.ts.map +0 -1
  215. package/packages/core/dist/scripts/debugging-scenarios.test.js +0 -317
  216. package/packages/core/dist/scripts/debugging-scenarios.test.js.map +0 -1
  217. package/packages/core/dist/scripts/generate-all-spiders.d.ts +0 -10
  218. package/packages/core/dist/scripts/generate-all-spiders.d.ts.map +0 -1
  219. package/packages/core/dist/scripts/generate-all-spiders.js +0 -306
  220. package/packages/core/dist/scripts/generate-all-spiders.js.map +0 -1
  221. package/packages/core/dist/scripts/generate-report.d.ts +0 -65
  222. package/packages/core/dist/scripts/generate-report.d.ts.map +0 -1
  223. package/packages/core/dist/scripts/generate-report.js +0 -378
  224. package/packages/core/dist/scripts/generate-report.js.map +0 -1
  225. package/packages/core/dist/scripts/generate-report.test.d.ts +0 -13
  226. package/packages/core/dist/scripts/generate-report.test.d.ts.map +0 -1
  227. package/packages/core/dist/scripts/generate-report.test.js +0 -363
  228. package/packages/core/dist/scripts/generate-report.test.js.map +0 -1
  229. package/packages/core/dist/scripts/generate-spider-report.d.ts +0 -65
  230. package/packages/core/dist/scripts/generate-spider-report.d.ts.map +0 -1
  231. package/packages/core/dist/scripts/generate-spider-report.js +0 -366
  232. package/packages/core/dist/scripts/generate-spider-report.js.map +0 -1
  233. package/packages/core/dist/scripts/generate-spider-report.test.d.ts +0 -13
  234. package/packages/core/dist/scripts/generate-spider-report.test.d.ts.map +0 -1
  235. package/packages/core/dist/scripts/generate-spider-report.test.js +0 -367
  236. package/packages/core/dist/scripts/generate-spider-report.test.js.map +0 -1
  237. package/packages/core/dist/scripts/generate-spider.d.ts +0 -47
  238. package/packages/core/dist/scripts/generate-spider.d.ts.map +0 -1
  239. package/packages/core/dist/scripts/generate-spider.js +0 -338
  240. package/packages/core/dist/scripts/generate-spider.js.map +0 -1
  241. package/packages/core/dist/scripts/generate-spider.test.d.ts +0 -14
  242. package/packages/core/dist/scripts/generate-spider.test.d.ts.map +0 -1
  243. package/packages/core/dist/scripts/generate-spider.test.js +0 -271
  244. package/packages/core/dist/scripts/generate-spider.test.js.map +0 -1
  245. package/packages/core/dist/scripts/job-fair-aggregator.d.ts.map +0 -1
  246. package/packages/core/dist/scripts/job-fair-aggregator.js +0 -547
  247. package/packages/core/dist/scripts/job-fair-aggregator.js.map +0 -1
  248. package/packages/core/dist/scripts/job-fair-aggregator.test.d.ts +0 -14
  249. package/packages/core/dist/scripts/job-fair-aggregator.test.d.ts.map +0 -1
  250. package/packages/core/dist/scripts/job-fair-aggregator.test.js +0 -616
  251. package/packages/core/dist/scripts/job-fair-aggregator.test.js.map +0 -1
  252. package/packages/core/dist/scripts/run-ci.test.d.ts +0 -20
  253. package/packages/core/dist/scripts/run-ci.test.d.ts.map +0 -1
  254. package/packages/core/dist/scripts/run-ci.test.js +0 -127
  255. package/packages/core/dist/scripts/run-ci.test.js.map +0 -1
  256. package/packages/core/dist/scripts/theme-detail.test.d.ts +0 -10
  257. package/packages/core/dist/scripts/theme-detail.test.d.ts.map +0 -1
  258. package/packages/core/dist/scripts/theme-detail.test.js +0 -199
  259. package/packages/core/dist/scripts/theme-detail.test.js.map +0 -1
  260. package/packages/core/dist/scripts/validate-ocean-profiles.d.ts +0 -9
  261. package/packages/core/dist/scripts/validate-ocean-profiles.d.ts.map +0 -1
  262. package/packages/core/dist/scripts/validate-ocean-profiles.js +0 -130
  263. package/packages/core/dist/scripts/validate-ocean-profiles.js.map +0 -1
  264. package/packages/core/dist/workflow/gate-handler.d.ts +0 -94
  265. package/packages/core/dist/workflow/gate-handler.d.ts.map +0 -1
  266. package/packages/core/dist/workflow/gate-handler.js +0 -189
  267. package/packages/core/dist/workflow/gate-handler.js.map +0 -1
  268. package/packages/core/dist/workflow/gate-handler.test.d.ts +0 -14
  269. package/packages/core/dist/workflow/gate-handler.test.d.ts.map +0 -1
  270. package/packages/core/dist/workflow/gate-handler.test.js +0 -543
  271. package/packages/core/dist/workflow/gate-handler.test.js.map +0 -1
  272. package/packages/core/dist/workflow/generic-handoff.d.ts +0 -281
  273. package/packages/core/dist/workflow/generic-handoff.d.ts.map +0 -1
  274. package/packages/core/dist/workflow/generic-handoff.js +0 -411
  275. package/packages/core/dist/workflow/generic-handoff.js.map +0 -1
  276. package/packages/core/dist/workflow/generic-handoff.test.d.ts +0 -21
  277. package/packages/core/dist/workflow/generic-handoff.test.d.ts.map +0 -1
  278. package/packages/core/dist/workflow/generic-handoff.test.js +0 -499
  279. package/packages/core/dist/workflow/generic-handoff.test.js.map +0 -1
  280. package/packages/core/dist/workflow/generic-sm-finish.d.ts +0 -89
  281. package/packages/core/dist/workflow/generic-sm-finish.d.ts.map +0 -1
  282. package/packages/core/dist/workflow/generic-sm-finish.js +0 -157
  283. package/packages/core/dist/workflow/generic-sm-finish.js.map +0 -1
  284. package/packages/core/dist/workflow/generic-sm-setup.d.ts +0 -138
  285. package/packages/core/dist/workflow/generic-sm-setup.d.ts.map +0 -1
  286. package/packages/core/dist/workflow/generic-sm-setup.js +0 -382
  287. package/packages/core/dist/workflow/generic-sm-setup.js.map +0 -1
  288. package/packages/core/dist/workflow/handoff.d.ts +0 -281
  289. package/packages/core/dist/workflow/handoff.d.ts.map +0 -1
  290. package/packages/core/dist/workflow/handoff.js +0 -411
  291. package/packages/core/dist/workflow/handoff.js.map +0 -1
  292. package/packages/core/dist/workflow/handoff.test.d.ts +0 -21
  293. package/packages/core/dist/workflow/handoff.test.d.ts.map +0 -1
  294. package/packages/core/dist/workflow/handoff.test.js +0 -499
  295. package/packages/core/dist/workflow/handoff.test.js.map +0 -1
  296. package/packages/core/dist/workflow/index.d.ts.map +0 -1
  297. package/packages/core/dist/workflow/index.js +0 -24
  298. package/packages/core/dist/workflow/index.js.map +0 -1
  299. package/packages/core/dist/workflow/session-state.d.ts +0 -92
  300. package/packages/core/dist/workflow/session-state.d.ts.map +0 -1
  301. package/packages/core/dist/workflow/session-state.js +0 -198
  302. package/packages/core/dist/workflow/session-state.js.map +0 -1
  303. package/packages/core/dist/workflow/session-state.test.d.ts +0 -8
  304. package/packages/core/dist/workflow/session-state.test.d.ts.map +0 -1
  305. package/packages/core/dist/workflow/session-state.test.js +0 -551
  306. package/packages/core/dist/workflow/session-state.test.js.map +0 -1
  307. package/packages/core/dist/workflow/sm-subagents.test.d.ts +0 -23
  308. package/packages/core/dist/workflow/sm-subagents.test.d.ts.map +0 -1
  309. package/packages/core/dist/workflow/sm-subagents.test.js +0 -727
  310. package/packages/core/dist/workflow/sm-subagents.test.js.map +0 -1
  311. package/packages/core/dist/workflow/step-parser.d.ts +0 -45
  312. package/packages/core/dist/workflow/step-parser.d.ts.map +0 -1
  313. package/packages/core/dist/workflow/step-parser.js +0 -147
  314. package/packages/core/dist/workflow/step-parser.js.map +0 -1
  315. package/packages/core/dist/workflow/step-parser.test.d.ts +0 -14
  316. package/packages/core/dist/workflow/step-parser.test.d.ts.map +0 -1
  317. package/packages/core/dist/workflow/step-parser.test.js +0 -470
  318. package/packages/core/dist/workflow/step-parser.test.js.map +0 -1
  319. package/packages/core/dist/workflow/story-workflow-routing.test.d.ts +0 -17
  320. package/packages/core/dist/workflow/story-workflow-routing.test.d.ts.map +0 -1
  321. package/packages/core/dist/workflow/story-workflow-routing.test.js +0 -559
  322. package/packages/core/dist/workflow/story-workflow-routing.test.js.map +0 -1
  323. package/packages/core/dist/workflow/test-cache.d.ts +0 -131
  324. package/packages/core/dist/workflow/test-cache.d.ts.map +0 -1
  325. package/packages/core/dist/workflow/test-cache.js +0 -226
  326. package/packages/core/dist/workflow/test-cache.js.map +0 -1
  327. package/packages/core/dist/workflow/test-cache.test.d.ts +0 -17
  328. package/packages/core/dist/workflow/test-cache.test.d.ts.map +0 -1
  329. package/packages/core/dist/workflow/test-cache.test.js +0 -438
  330. package/packages/core/dist/workflow/test-cache.test.js.map +0 -1
  331. package/packages/core/dist/workflow/trimodal.d.ts +0 -86
  332. package/packages/core/dist/workflow/trimodal.d.ts.map +0 -1
  333. package/packages/core/dist/workflow/trimodal.js +0 -118
  334. package/packages/core/dist/workflow/trimodal.js.map +0 -1
  335. package/packages/core/dist/workflow/trimodal.test.d.ts +0 -11
  336. package/packages/core/dist/workflow/trimodal.test.d.ts.map +0 -1
  337. package/packages/core/dist/workflow/trimodal.test.js +0 -395
  338. package/packages/core/dist/workflow/trimodal.test.js.map +0 -1
  339. package/packages/core/dist/workflow/variable-resolver.d.ts +0 -67
  340. package/packages/core/dist/workflow/variable-resolver.d.ts.map +0 -1
  341. package/packages/core/dist/workflow/variable-resolver.js +0 -156
  342. package/packages/core/dist/workflow/variable-resolver.js.map +0 -1
  343. package/packages/core/dist/workflow/variable-resolver.test.d.ts +0 -14
  344. package/packages/core/dist/workflow/variable-resolver.test.d.ts.map +0 -1
  345. package/packages/core/dist/workflow/variable-resolver.test.js +0 -400
  346. package/packages/core/dist/workflow/variable-resolver.test.js.map +0 -1
  347. package/packages/core/dist/workflow/workflow-executor.d.ts +0 -163
  348. package/packages/core/dist/workflow/workflow-executor.d.ts.map +0 -1
  349. package/packages/core/dist/workflow/workflow-executor.js +0 -197
  350. package/packages/core/dist/workflow/workflow-executor.js.map +0 -1
  351. package/packages/core/dist/workflow/workflow-executor.test.d.ts +0 -8
  352. package/packages/core/dist/workflow/workflow-executor.test.d.ts.map +0 -1
  353. package/packages/core/dist/workflow/workflow-executor.test.js +0 -444
  354. package/packages/core/dist/workflow/workflow-executor.test.js.map +0 -1
  355. package/packages/core/dist/workflow/workflow-loader.d.ts.map +0 -1
  356. package/packages/core/dist/workflow/workflow-loader.js.map +0 -1
  357. package/packages/core/dist/workflow/workflow-loader.test.d.ts +0 -15
  358. package/packages/core/dist/workflow/workflow-loader.test.d.ts.map +0 -1
  359. package/packages/core/dist/workflow/workflow-loader.test.js +0 -354
  360. package/packages/core/dist/workflow/workflow-loader.test.js.map +0 -1
  361. package/packages/core/dist/workflow/workflow-migration.test.d.ts +0 -17
  362. package/packages/core/dist/workflow/workflow-migration.test.d.ts.map +0 -1
  363. package/packages/core/dist/workflow/workflow-migration.test.js +0 -371
  364. package/packages/core/dist/workflow/workflow-migration.test.js.map +0 -1
  365. package/packages/core/dist/workflow/workflow-permissions.d.ts.map +0 -1
  366. package/packages/core/dist/workflow/workflow-permissions.js.map +0 -1
  367. package/packages/core/dist/workflow/workflow-permissions.test.d.ts +0 -15
  368. package/packages/core/dist/workflow/workflow-permissions.test.d.ts.map +0 -1
  369. package/packages/core/dist/workflow/workflow-permissions.test.js +0 -301
  370. package/packages/core/dist/workflow/workflow-permissions.test.js.map +0 -1
  371. package/packages/core/dist/workflow/workflow-router.d.ts.map +0 -1
  372. package/packages/core/dist/workflow/workflow-router.js.map +0 -1
  373. package/packages/core/dist/workflow/workflow-router.test.d.ts +0 -20
  374. package/packages/core/dist/workflow/workflow-router.test.d.ts.map +0 -1
  375. package/packages/core/dist/workflow/workflow-router.test.js +0 -607
  376. package/packages/core/dist/workflow/workflow-router.test.js.map +0 -1
  377. package/packages/core/dist/workflow/workflow-schema.d.ts.map +0 -1
  378. package/packages/core/dist/workflow/workflow-schema.js.map +0 -1
  379. package/packages/core/dist/workflow/workflow-schema.test.d.ts +0 -45
  380. package/packages/core/dist/workflow/workflow-schema.test.d.ts.map +0 -1
  381. package/packages/core/dist/workflow/workflow-schema.test.js +0 -512
  382. package/packages/core/dist/workflow/workflow-schema.test.js.map +0 -1
  383. package/packages/core/dist/workflow/workflow-stepped-schema.test.d.ts +0 -18
  384. package/packages/core/dist/workflow/workflow-stepped-schema.test.d.ts.map +0 -1
  385. package/packages/core/dist/workflow/workflow-stepped-schema.test.js +0 -608
  386. package/packages/core/dist/workflow/workflow-stepped-schema.test.js.map +0 -1
  387. package/pennyfarthing-dist/agents/README.md +0 -340
  388. package/pennyfarthing-dist/agents/architect.md +0 -193
  389. package/pennyfarthing-dist/agents/dev.md +0 -254
  390. package/pennyfarthing-dist/agents/devops.md +0 -206
  391. package/pennyfarthing-dist/agents/handoff.md +0 -289
  392. package/pennyfarthing-dist/agents/orchestrator.md +0 -355
  393. package/pennyfarthing-dist/agents/pm.md +0 -169
  394. package/pennyfarthing-dist/agents/reviewer-preflight.md +0 -96
  395. package/pennyfarthing-dist/agents/reviewer.md +0 -382
  396. package/pennyfarthing-dist/agents/sm-file-summary.md +0 -58
  397. package/pennyfarthing-dist/agents/sm-finish.md +0 -61
  398. package/pennyfarthing-dist/agents/sm-handoff.md +0 -145
  399. package/pennyfarthing-dist/agents/sm-setup.md +0 -174
  400. package/pennyfarthing-dist/agents/sm.md +0 -632
  401. package/pennyfarthing-dist/agents/tea.md +0 -213
  402. package/pennyfarthing-dist/agents/tech-writer.md +0 -216
  403. package/pennyfarthing-dist/agents/testing-runner.md +0 -141
  404. package/pennyfarthing-dist/agents/ux-designer.md +0 -231
  405. package/pennyfarthing-dist/agents/workflow-status-check.md +0 -68
  406. package/pennyfarthing-dist/commands/architect.md +0 -62
  407. package/pennyfarthing-dist/commands/benchmark-control.md +0 -69
  408. package/pennyfarthing-dist/commands/benchmark.md +0 -467
  409. package/pennyfarthing-dist/commands/brainstorming.md +0 -91
  410. package/pennyfarthing-dist/commands/check.md +0 -156
  411. package/pennyfarthing-dist/commands/chore.md +0 -178
  412. package/pennyfarthing-dist/commands/close-epic.md +0 -139
  413. package/pennyfarthing-dist/commands/continue-session.md +0 -184
  414. package/pennyfarthing-dist/commands/create-branches-from-story.md +0 -358
  415. package/pennyfarthing-dist/commands/create-theme.md +0 -29
  416. package/pennyfarthing-dist/commands/dev.md +0 -60
  417. package/pennyfarthing-dist/commands/devops.md +0 -59
  418. package/pennyfarthing-dist/commands/git-cleanup.md +0 -340
  419. package/pennyfarthing-dist/commands/health-check.md +0 -108
  420. package/pennyfarthing-dist/commands/help.md +0 -264
  421. package/pennyfarthing-dist/commands/job-fair.md +0 -102
  422. package/pennyfarthing-dist/commands/list-themes.md +0 -21
  423. package/pennyfarthing-dist/commands/orchestrator.md +0 -56
  424. package/pennyfarthing-dist/commands/parallel-work.md +0 -71
  425. package/pennyfarthing-dist/commands/party-mode.md +0 -67
  426. package/pennyfarthing-dist/commands/permissions.md +0 -193
  427. package/pennyfarthing-dist/commands/pm.md +0 -60
  428. package/pennyfarthing-dist/commands/prime.md +0 -140
  429. package/pennyfarthing-dist/commands/release.md +0 -58
  430. package/pennyfarthing-dist/commands/repo-status.md +0 -49
  431. package/pennyfarthing-dist/commands/retro.md +0 -200
  432. package/pennyfarthing-dist/commands/reviewer.md +0 -64
  433. package/pennyfarthing-dist/commands/run-ci.md +0 -116
  434. package/pennyfarthing-dist/commands/set-theme.md +0 -56
  435. package/pennyfarthing-dist/commands/show-theme.md +0 -21
  436. package/pennyfarthing-dist/commands/sm.md +0 -70
  437. package/pennyfarthing-dist/commands/solo.md +0 -411
  438. package/pennyfarthing-dist/commands/sprint-planning.md +0 -109
  439. package/pennyfarthing-dist/commands/start-epic.md +0 -168
  440. package/pennyfarthing-dist/commands/sync-epic-to-jira.md +0 -184
  441. package/pennyfarthing-dist/commands/sync-work-with-sprint.md +0 -373
  442. package/pennyfarthing-dist/commands/tea.md +0 -63
  443. package/pennyfarthing-dist/commands/tech-writer.md +0 -53
  444. package/pennyfarthing-dist/commands/theme-maker.md +0 -671
  445. package/pennyfarthing-dist/commands/update-domain-docs.md +0 -83
  446. package/pennyfarthing-dist/commands/ux-designer.md +0 -62
  447. package/pennyfarthing-dist/commands/work.md +0 -122
  448. package/pennyfarthing-dist/commands/workflow.md +0 -21
  449. package/pennyfarthing-dist/guides/AGENT-COORDINATION.md +0 -480
  450. package/pennyfarthing-dist/guides/HOOKS.md +0 -230
  451. package/pennyfarthing-dist/guides/PROMPT-PATTERNS.md +0 -338
  452. package/pennyfarthing-dist/guides/SESSION-ARTIFACTS.md +0 -193
  453. package/pennyfarthing-dist/guides/agent-behavior.md +0 -238
  454. package/pennyfarthing-dist/guides/agent-template-strategic.md +0 -148
  455. package/pennyfarthing-dist/guides/agent-template-tactical.md +0 -162
  456. package/pennyfarthing-dist/guides/patterns/approval-gates-pattern.md +0 -746
  457. package/pennyfarthing-dist/guides/patterns/fan-out-fan-in-pattern.md +0 -574
  458. package/pennyfarthing-dist/guides/patterns/helper-delegation-pattern.md +0 -488
  459. package/pennyfarthing-dist/guides/patterns/tdd-flow-pattern.md +0 -402
  460. package/pennyfarthing-dist/guides/permission-protocol.md +0 -188
  461. package/pennyfarthing-dist/guides/persona-loading.md +0 -46
  462. package/pennyfarthing-dist/guides/workflow-schema.md +0 -257
  463. package/pennyfarthing-dist/guides/worktree-mode.md +0 -113
  464. package/pennyfarthing-dist/output-styles/teaching.md +0 -33
  465. package/pennyfarthing-dist/output-styles/terse.md +0 -20
  466. package/pennyfarthing-dist/output-styles/verbose.md +0 -28
  467. package/pennyfarthing-dist/personas/themes/1984.yaml +0 -312
  468. package/pennyfarthing-dist/personas/themes/a-team.yaml +0 -207
  469. package/pennyfarthing-dist/personas/themes/agatha-christie.yaml +0 -300
  470. package/pennyfarthing-dist/personas/themes/alice-in-wonderland.yaml +0 -330
  471. package/pennyfarthing-dist/personas/themes/all-stars.yaml +0 -332
  472. package/pennyfarthing-dist/personas/themes/ancient-philosophers.yaml +0 -320
  473. package/pennyfarthing-dist/personas/themes/ancient-strategists.yaml +0 -306
  474. package/pennyfarthing-dist/personas/themes/arcane.yaml +0 -288
  475. package/pennyfarthing-dist/personas/themes/arthurian-mythos.yaml +0 -331
  476. package/pennyfarthing-dist/personas/themes/avatar-the-last-airbender.yaml +0 -288
  477. package/pennyfarthing-dist/personas/themes/babylon-5.yaml +0 -288
  478. package/pennyfarthing-dist/personas/themes/battlestar-galactica.yaml +0 -288
  479. package/pennyfarthing-dist/personas/themes/better-call-saul.yaml +0 -288
  480. package/pennyfarthing-dist/personas/themes/big-lebowski.yaml +0 -300
  481. package/pennyfarthing-dist/personas/themes/black-sails.yaml +0 -300
  482. package/pennyfarthing-dist/personas/themes/blade-runner.yaml +0 -295
  483. package/pennyfarthing-dist/personas/themes/bobiverse.yaml +0 -288
  484. package/pennyfarthing-dist/personas/themes/breaking-bad.yaml +0 -327
  485. package/pennyfarthing-dist/personas/themes/catch-22.yaml +0 -316
  486. package/pennyfarthing-dist/personas/themes/classical-composers.yaml +0 -310
  487. package/pennyfarthing-dist/personas/themes/control.yaml +0 -197
  488. package/pennyfarthing-dist/personas/themes/count-of-monte-cristo.yaml +0 -320
  489. package/pennyfarthing-dist/personas/themes/cowboy-bebop.yaml +0 -323
  490. package/pennyfarthing-dist/personas/themes/deadwood.yaml +0 -300
  491. package/pennyfarthing-dist/personas/themes/dickens.yaml +0 -320
  492. package/pennyfarthing-dist/personas/themes/discworld.yaml +0 -332
  493. package/pennyfarthing-dist/personas/themes/doctor-who.yaml +0 -290
  494. package/pennyfarthing-dist/personas/themes/don-quixote.yaml +0 -320
  495. package/pennyfarthing-dist/personas/themes/dune.yaml +0 -307
  496. package/pennyfarthing-dist/personas/themes/enlightenment-thinkers.yaml +0 -320
  497. package/pennyfarthing-dist/personas/themes/expeditionary-force.yaml +0 -288
  498. package/pennyfarthing-dist/personas/themes/fargo.yaml +0 -330
  499. package/pennyfarthing-dist/personas/themes/film-auteurs.yaml +0 -312
  500. package/pennyfarthing-dist/personas/themes/firefly.yaml +0 -328
  501. package/pennyfarthing-dist/personas/themes/foundation.yaml +0 -290
  502. package/pennyfarthing-dist/personas/themes/futurama.yaml +0 -321
  503. package/pennyfarthing-dist/personas/themes/game-of-thrones.yaml +0 -290
  504. package/pennyfarthing-dist/personas/themes/gilligans-island.yaml +0 -243
  505. package/pennyfarthing-dist/personas/themes/gothic-literature.yaml +0 -308
  506. package/pennyfarthing-dist/personas/themes/great-gatsby.yaml +0 -308
  507. package/pennyfarthing-dist/personas/themes/greek-mythology.yaml +0 -330
  508. package/pennyfarthing-dist/personas/themes/hannibal.yaml +0 -300
  509. package/pennyfarthing-dist/personas/themes/harry-potter.yaml +0 -324
  510. package/pennyfarthing-dist/personas/themes/his-dark-materials.yaml +0 -291
  511. package/pennyfarthing-dist/personas/themes/historical-figures.yaml +0 -288
  512. package/pennyfarthing-dist/personas/themes/hitchhikers-guide.yaml +0 -331
  513. package/pennyfarthing-dist/personas/themes/house-md.yaml +0 -321
  514. package/pennyfarthing-dist/personas/themes/imperial-radch.yaml +0 -289
  515. package/pennyfarthing-dist/personas/themes/inspector-morse.yaml +0 -300
  516. package/pennyfarthing-dist/personas/themes/jane-austen.yaml +0 -287
  517. package/pennyfarthing-dist/personas/themes/jazz-legends.yaml +0 -320
  518. package/pennyfarthing-dist/personas/themes/justified.yaml +0 -300
  519. package/pennyfarthing-dist/personas/themes/legion-of-doom.yaml +0 -219
  520. package/pennyfarthing-dist/personas/themes/les-miserables.yaml +0 -299
  521. package/pennyfarthing-dist/personas/themes/lord-of-the-rings.yaml +0 -334
  522. package/pennyfarthing-dist/personas/themes/lovecraft-mythos.yaml +0 -334
  523. package/pennyfarthing-dist/personas/themes/mad-max.yaml +0 -355
  524. package/pennyfarthing-dist/personas/themes/mad-men.yaml +0 -289
  525. package/pennyfarthing-dist/personas/themes/marvel-mcu.yaml +0 -300
  526. package/pennyfarthing-dist/personas/themes/mash.yaml +0 -337
  527. package/pennyfarthing-dist/personas/themes/mass-effect.yaml +0 -289
  528. package/pennyfarthing-dist/personas/themes/military-commanders.yaml +0 -306
  529. package/pennyfarthing-dist/personas/themes/moby-dick.yaml +0 -320
  530. package/pennyfarthing-dist/personas/themes/monty-python.yaml +0 -303
  531. package/pennyfarthing-dist/personas/themes/neuromancer.yaml +0 -300
  532. package/pennyfarthing-dist/personas/themes/norse-mythology.yaml +0 -329
  533. package/pennyfarthing-dist/personas/themes/parks-and-rec.yaml +0 -242
  534. package/pennyfarthing-dist/personas/themes/peaky-blinders.yaml +0 -298
  535. package/pennyfarthing-dist/personas/themes/princess-bride.yaml +0 -220
  536. package/pennyfarthing-dist/personas/themes/renaissance-masters.yaml +0 -320
  537. package/pennyfarthing-dist/personas/themes/rome.yaml +0 -300
  538. package/pennyfarthing-dist/personas/themes/russian-masters.yaml +0 -318
  539. package/pennyfarthing-dist/personas/themes/sandman.yaml +0 -288
  540. package/pennyfarthing-dist/personas/themes/scientific-revolutionaries.yaml +0 -320
  541. package/pennyfarthing-dist/personas/themes/shakespeare.yaml +0 -301
  542. package/pennyfarthing-dist/personas/themes/sherlock-holmes.yaml +0 -289
  543. package/pennyfarthing-dist/personas/themes/snow-crash.yaml +0 -288
  544. package/pennyfarthing-dist/personas/themes/software-pioneers.yaml +0 -300
  545. package/pennyfarthing-dist/personas/themes/star-trek-tng.yaml +0 -230
  546. package/pennyfarthing-dist/personas/themes/star-trek-tos.yaml +0 -210
  547. package/pennyfarthing-dist/personas/themes/star-wars.yaml +0 -303
  548. package/pennyfarthing-dist/personas/themes/succession.yaml +0 -300
  549. package/pennyfarthing-dist/personas/themes/superfriends.yaml +0 -208
  550. package/pennyfarthing-dist/personas/themes/ted-lasso.yaml +0 -236
  551. package/pennyfarthing-dist/personas/themes/the-americans.yaml +0 -300
  552. package/pennyfarthing-dist/personas/themes/the-crown.yaml +0 -300
  553. package/pennyfarthing-dist/personas/themes/the-expanse.yaml +0 -213
  554. package/pennyfarthing-dist/personas/themes/the-good-place.yaml +0 -322
  555. package/pennyfarthing-dist/personas/themes/the-matrix.yaml +0 -353
  556. package/pennyfarthing-dist/personas/themes/the-odyssey.yaml +0 -300
  557. package/pennyfarthing-dist/personas/themes/the-office.yaml +0 -330
  558. package/pennyfarthing-dist/personas/themes/the-simpsons.yaml +0 -308
  559. package/pennyfarthing-dist/personas/themes/the-sopranos.yaml +0 -300
  560. package/pennyfarthing-dist/personas/themes/the-wire.yaml +0 -311
  561. package/pennyfarthing-dist/personas/themes/the-witcher.yaml +0 -300
  562. package/pennyfarthing-dist/personas/themes/twin-peaks.yaml +0 -302
  563. package/pennyfarthing-dist/personas/themes/vorkosigan-saga.yaml +0 -300
  564. package/pennyfarthing-dist/personas/themes/watchmen.yaml +0 -291
  565. package/pennyfarthing-dist/personas/themes/west-wing.yaml +0 -291
  566. package/pennyfarthing-dist/personas/themes/world-explorers.yaml +0 -320
  567. package/pennyfarthing-dist/personas/themes/wwii-leaders.yaml +0 -307
  568. package/pennyfarthing-dist/personas/themes/x-files.yaml +0 -302
  569. package/pennyfarthing-dist/scripts/README.md +0 -68
  570. package/pennyfarthing-dist/scripts/core/README.md +0 -26
  571. package/pennyfarthing-dist/scripts/core/agent-session.sh +0 -378
  572. package/pennyfarthing-dist/scripts/core/check-context.sh +0 -243
  573. package/pennyfarthing-dist/scripts/core/handoff-marker.sh +0 -90
  574. package/pennyfarthing-dist/scripts/core/prime.sh +0 -136
  575. package/pennyfarthing-dist/scripts/core/run.sh +0 -75
  576. package/pennyfarthing-dist/scripts/cyclist/is-cyclist.sh +0 -21
  577. package/pennyfarthing-dist/scripts/git/README.md +0 -25
  578. package/pennyfarthing-dist/scripts/git/create-feature-branches.sh +0 -226
  579. package/pennyfarthing-dist/scripts/git/git-status-all.sh +0 -127
  580. package/pennyfarthing-dist/scripts/git/install-git-hooks.sh +0 -91
  581. package/pennyfarthing-dist/scripts/git/release.sh +0 -198
  582. package/pennyfarthing-dist/scripts/git/worktree-manager.sh +0 -494
  583. package/pennyfarthing-dist/scripts/hooks/README.md +0 -32
  584. package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +0 -60
  585. package/pennyfarthing-dist/scripts/hooks/context-warning.sh +0 -65
  586. package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +0 -35
  587. package/pennyfarthing-dist/scripts/hooks/post-merge.sh +0 -166
  588. package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +0 -50
  589. package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +0 -71
  590. package/pennyfarthing-dist/scripts/hooks/pre-push.sh +0 -54
  591. package/pennyfarthing-dist/scripts/hooks/session-start.sh +0 -97
  592. package/pennyfarthing-dist/scripts/hooks/session-stop.sh +0 -58
  593. package/pennyfarthing-dist/scripts/jira/README.md +0 -33
  594. package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +0 -101
  595. package/pennyfarthing-dist/scripts/jira/create-jira-story.sh +0 -97
  596. package/pennyfarthing-dist/scripts/jira/jira-bidirectional-sync.mjs +0 -327
  597. package/pennyfarthing-dist/scripts/jira/jira-bidirectional-sync.test.mjs +0 -503
  598. package/pennyfarthing-dist/scripts/jira/jira-claim-story.sh +0 -164
  599. package/pennyfarthing-dist/scripts/jira/jira-lib.mjs +0 -443
  600. package/pennyfarthing-dist/scripts/jira/jira-lib.sh +0 -464
  601. package/pennyfarthing-dist/scripts/jira/jira-reconcile.sh +0 -266
  602. package/pennyfarthing-dist/scripts/jira/jira-sync-story.mjs +0 -208
  603. package/pennyfarthing-dist/scripts/jira/jira-sync-story.sh +0 -8
  604. package/pennyfarthing-dist/scripts/jira/jira-sync.mjs +0 -198
  605. package/pennyfarthing-dist/scripts/jira/jira-sync.sh +0 -8
  606. package/pennyfarthing-dist/scripts/jira/sync-epic-jira.sh +0 -104
  607. package/pennyfarthing-dist/scripts/jira/sync-epic-to-jira.sh +0 -16
  608. package/pennyfarthing-dist/scripts/lib/README.md +0 -29
  609. package/pennyfarthing-dist/scripts/lib/background-tasks.sh +0 -177
  610. package/pennyfarthing-dist/scripts/lib/checkpoint.sh +0 -136
  611. package/pennyfarthing-dist/scripts/lib/common.sh +0 -157
  612. package/pennyfarthing-dist/scripts/lib/file-lock.sh +0 -269
  613. package/pennyfarthing-dist/scripts/lib/find-root.sh +0 -35
  614. package/pennyfarthing-dist/scripts/lib/logging.sh +0 -186
  615. package/pennyfarthing-dist/scripts/lib/retry.sh +0 -76
  616. package/pennyfarthing-dist/scripts/misc/README.md +0 -44
  617. package/pennyfarthing-dist/scripts/misc/add-short-names.mjs +0 -264
  618. package/pennyfarthing-dist/scripts/misc/backlog.sh +0 -91
  619. package/pennyfarthing-dist/scripts/misc/check-status.sh +0 -247
  620. package/pennyfarthing-dist/scripts/misc/deploy.sh +0 -284
  621. package/pennyfarthing-dist/scripts/misc/doctor-dogfood.sh +0 -392
  622. package/pennyfarthing-dist/scripts/misc/find-related-work.sh +0 -231
  623. package/pennyfarthing-dist/scripts/misc/generate-skill-docs.sh +0 -110
  624. package/pennyfarthing-dist/scripts/misc/log-skill-usage.sh +0 -74
  625. package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.mjs +0 -474
  626. package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.sh +0 -9
  627. package/pennyfarthing-dist/scripts/misc/repo-scan.sh +0 -141
  628. package/pennyfarthing-dist/scripts/misc/repo-utils.sh +0 -778
  629. package/pennyfarthing-dist/scripts/misc/run-ci.sh +0 -219
  630. package/pennyfarthing-dist/scripts/misc/run-timestamp.sh +0 -7
  631. package/pennyfarthing-dist/scripts/misc/session-cleanup.sh +0 -319
  632. package/pennyfarthing-dist/scripts/misc/skill-usage-report.sh +0 -193
  633. package/pennyfarthing-dist/scripts/misc/statusline.sh +0 -259
  634. package/pennyfarthing-dist/scripts/misc/uninstall.sh +0 -270
  635. package/pennyfarthing-dist/scripts/misc/validate-subagent-frontmatter.sh +0 -160
  636. package/pennyfarthing-dist/scripts/sprint/README.md +0 -29
  637. package/pennyfarthing-dist/scripts/sprint/archive-story.sh +0 -135
  638. package/pennyfarthing-dist/scripts/sprint/available-stories.sh +0 -97
  639. package/pennyfarthing-dist/scripts/sprint/check-story.sh +0 -164
  640. package/pennyfarthing-dist/scripts/sprint/get-epic-field.sh +0 -58
  641. package/pennyfarthing-dist/scripts/sprint/get-story-field.sh +0 -69
  642. package/pennyfarthing-dist/scripts/sprint/list-future.sh +0 -151
  643. package/pennyfarthing-dist/scripts/sprint/new-sprint.sh +0 -116
  644. package/pennyfarthing-dist/scripts/sprint/promote-epic.sh +0 -164
  645. package/pennyfarthing-dist/scripts/sprint/sprint-common.sh +0 -421
  646. package/pennyfarthing-dist/scripts/sprint/sprint-info.sh +0 -39
  647. package/pennyfarthing-dist/scripts/sprint/sprint-metrics.sh +0 -241
  648. package/pennyfarthing-dist/scripts/sprint/sprint-status.sh +0 -134
  649. package/pennyfarthing-dist/scripts/story/README.md +0 -23
  650. package/pennyfarthing-dist/scripts/story/create-story.sh +0 -159
  651. package/pennyfarthing-dist/scripts/story/size-story.sh +0 -198
  652. package/pennyfarthing-dist/scripts/story/story-template.sh +0 -162
  653. package/pennyfarthing-dist/scripts/test/README.md +0 -23
  654. package/pennyfarthing-dist/scripts/test/ground-truth-judge.py +0 -289
  655. package/pennyfarthing-dist/scripts/test/swebench-judge.py +0 -400
  656. package/pennyfarthing-dist/scripts/test/test-cache.sh +0 -165
  657. package/pennyfarthing-dist/scripts/test/test-setup.sh +0 -337
  658. package/pennyfarthing-dist/scripts/tests/check.test.sh +0 -582
  659. package/pennyfarthing-dist/scripts/tests/dev-story-workflow-import.test.sh +0 -515
  660. package/pennyfarthing-dist/scripts/tests/epics-and-stories-workflow-import.test.sh +0 -599
  661. package/pennyfarthing-dist/scripts/tests/handoff-phase-update.test.sh +0 -332
  662. package/pennyfarthing-dist/scripts/tests/implementation-readiness-workflow-import.test.sh +0 -573
  663. package/pennyfarthing-dist/scripts/tests/migrate-bmad-workflow.test.sh +0 -859
  664. package/pennyfarthing-dist/scripts/tests/prd-workflow-import.test.sh +0 -662
  665. package/pennyfarthing-dist/scripts/tests/project-context-workflow-import.test.sh +0 -589
  666. package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +0 -105
  667. package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +0 -597
  668. package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +0 -514
  669. package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +0 -517
  670. package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +0 -331
  671. package/pennyfarthing-dist/scripts/tests/ux-design-workflow-import.test.sh +0 -647
  672. package/pennyfarthing-dist/scripts/theme/README.md +0 -22
  673. package/pennyfarthing-dist/scripts/theme/compute-theme-tiers.sh +0 -203
  674. package/pennyfarthing-dist/scripts/theme/list-themes.sh +0 -73
  675. package/pennyfarthing-dist/scripts/theme/update-theme-tiers.sh +0 -97
  676. package/pennyfarthing-dist/scripts/workflow/README.md +0 -28
  677. package/pennyfarthing-dist/scripts/workflow/check.sh +0 -497
  678. package/pennyfarthing-dist/scripts/workflow/finish-story.sh +0 -159
  679. package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +0 -228
  680. package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +0 -91
  681. package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +0 -163
  682. package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +0 -138
  683. package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +0 -256
  684. package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +0 -167
  685. package/pennyfarthing-dist/skills/agentic-patterns/SKILL.md +0 -242
  686. package/pennyfarthing-dist/skills/changelog/SKILL.md +0 -367
  687. package/pennyfarthing-dist/skills/code-review/SKILL.md +0 -168
  688. package/pennyfarthing-dist/skills/context-engineering/SKILL.md +0 -274
  689. package/pennyfarthing-dist/skills/cyclist/SKILL.md +0 -88
  690. package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +0 -437
  691. package/pennyfarthing-dist/skills/finalize-run/SKILL.md +0 -258
  692. package/pennyfarthing-dist/skills/jira/SKILL.md +0 -484
  693. package/pennyfarthing-dist/skills/judge/SKILL.md +0 -579
  694. package/pennyfarthing-dist/skills/just/SKILL.md +0 -403
  695. package/pennyfarthing-dist/skills/mermaid/SKILL.md +0 -240
  696. package/pennyfarthing-dist/skills/otel/skill.md +0 -223
  697. package/pennyfarthing-dist/skills/permissions/skill.md +0 -172
  698. package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +0 -178
  699. package/pennyfarthing-dist/skills/skill-registry.schema.json +0 -107
  700. package/pennyfarthing-dist/skills/skill-registry.yaml +0 -357
  701. package/pennyfarthing-dist/skills/sprint/scripts/archive-story.sh +0 -101
  702. package/pennyfarthing-dist/skills/sprint/scripts/available-stories.sh +0 -97
  703. package/pennyfarthing-dist/skills/sprint/scripts/check-story.sh +0 -164
  704. package/pennyfarthing-dist/skills/sprint/scripts/create-jira-epic.sh +0 -101
  705. package/pennyfarthing-dist/skills/sprint/scripts/new-sprint.sh +0 -116
  706. package/pennyfarthing-dist/skills/sprint/scripts/promote-epic.sh +0 -164
  707. package/pennyfarthing-dist/skills/sprint/scripts/sprint-info.sh +0 -39
  708. package/pennyfarthing-dist/skills/sprint/scripts/sprint-status.sh +0 -147
  709. package/pennyfarthing-dist/skills/sprint/scripts/sync-epic-jira.sh +0 -104
  710. package/pennyfarthing-dist/skills/sprint/skill.md +0 -465
  711. package/pennyfarthing-dist/skills/story/scripts/create-story.sh +0 -159
  712. package/pennyfarthing-dist/skills/story/scripts/size-story.sh +0 -198
  713. package/pennyfarthing-dist/skills/story/scripts/story-template.sh +0 -162
  714. package/pennyfarthing-dist/skills/story/skill.md +0 -219
  715. package/pennyfarthing-dist/skills/systematic-debugging/SKILL.md +0 -390
  716. package/pennyfarthing-dist/skills/testing/SKILL.md +0 -99
  717. package/pennyfarthing-dist/skills/testing/references/troubleshooting.md +0 -124
  718. package/pennyfarthing-dist/skills/theme/skill.md +0 -129
  719. package/pennyfarthing-dist/skills/theme-creation/SKILL.md +0 -169
  720. package/pennyfarthing-dist/skills/workflow/scripts/list-workflows.sh +0 -91
  721. package/pennyfarthing-dist/skills/workflow/scripts/resume-workflow.sh +0 -163
  722. package/pennyfarthing-dist/skills/workflow/scripts/show-workflow.sh +0 -138
  723. package/pennyfarthing-dist/skills/workflow/scripts/start-workflow.sh +0 -273
  724. package/pennyfarthing-dist/skills/workflow/scripts/workflow-status.sh +0 -167
  725. package/pennyfarthing-dist/skills/workflow/skill.md +0 -337
  726. package/pennyfarthing-dist/skills/yq/SKILL.md +0 -264
  727. package/pennyfarthing-dist/templates/LEADERBOARD.schema.yaml +0 -187
  728. package/pennyfarthing-dist/templates/LEADERBOARD.template.md +0 -59
  729. package/pennyfarthing-dist/templates/agent-scopes.yaml.template +0 -276
  730. package/pennyfarthing-dist/templates/pennyfarthing-settings.yaml.template +0 -61
  731. package/pennyfarthing-dist/templates/persona-config.yaml.template +0 -22
  732. package/pennyfarthing-dist/templates/preferences.yaml.template +0 -15
  733. package/pennyfarthing-dist/templates/settings.local.json.template +0 -90
  734. package/pennyfarthing-dist/templates/setup-env.sh.template +0 -18
  735. package/pennyfarthing-dist/templates/shared-context.md.template +0 -70
  736. package/pennyfarthing-dist/templates/sidecar/decisions.md.template +0 -40
  737. package/pennyfarthing-dist/templates/sidecar/gotchas.md.template +0 -37
  738. package/pennyfarthing-dist/templates/sidecar/patterns.md.template +0 -34
  739. package/pennyfarthing-dist/workflows/agent-docs.yaml +0 -70
  740. package/pennyfarthing-dist/workflows/architecture/steps/step-01-initialize.md +0 -101
  741. package/pennyfarthing-dist/workflows/architecture/steps/step-01b-continue.md +0 -93
  742. package/pennyfarthing-dist/workflows/architecture/steps/step-02-context.md +0 -115
  743. package/pennyfarthing-dist/workflows/architecture/steps/step-03-patterns.md +0 -133
  744. package/pennyfarthing-dist/workflows/architecture/steps/step-04-components.md +0 -138
  745. package/pennyfarthing-dist/workflows/architecture/steps/step-05-interfaces.md +0 -133
  746. package/pennyfarthing-dist/workflows/architecture/steps/step-06-risks.md +0 -142
  747. package/pennyfarthing-dist/workflows/architecture/steps/step-07-document.md +0 -160
  748. package/pennyfarthing-dist/workflows/architecture/templates/architecture-decision.md +0 -102
  749. package/pennyfarthing-dist/workflows/architecture.yaml +0 -65
  750. package/pennyfarthing-dist/workflows/bdd.yaml +0 -60
  751. package/pennyfarthing-dist/workflows/brainstorming/brain-methods.csv +0 -62
  752. package/pennyfarthing-dist/workflows/brainstorming/checklist.md +0 -44
  753. package/pennyfarthing-dist/workflows/brainstorming/instructions.md +0 -736
  754. package/pennyfarthing-dist/workflows/brainstorming/workflow.yaml +0 -49
  755. package/pennyfarthing-dist/workflows/code-review/checklist.md +0 -23
  756. package/pennyfarthing-dist/workflows/code-review/instructions.md +0 -234
  757. package/pennyfarthing-dist/workflows/code-review/workflow.yaml +0 -51
  758. package/pennyfarthing-dist/workflows/dev-story/checklist.md +0 -80
  759. package/pennyfarthing-dist/workflows/dev-story/instructions.xml +0 -410
  760. package/pennyfarthing-dist/workflows/dev-story/workflow.yaml +0 -50
  761. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-01-validate-prerequisites.md +0 -256
  762. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-02-design-epics.md +0 -233
  763. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-03-create-stories.md +0 -272
  764. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-04-final-validation.md +0 -145
  765. package/pennyfarthing-dist/workflows/epics-and-stories/templates/epics-template.md +0 -57
  766. package/pennyfarthing-dist/workflows/epics-and-stories/workflow.yaml +0 -27
  767. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-01-document-discovery.md +0 -190
  768. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-02-prd-analysis.md +0 -178
  769. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-03-epic-coverage-validation.md +0 -179
  770. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-04-ux-alignment.md +0 -139
  771. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-05-epic-quality-review.md +0 -252
  772. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-06-final-assessment.md +0 -133
  773. package/pennyfarthing-dist/workflows/implementation-readiness/templates/readiness-report-template.md +0 -4
  774. package/pennyfarthing-dist/workflows/implementation-readiness/workflow.yaml +0 -40
  775. package/pennyfarthing-dist/workflows/prd/data/domain-complexity.csv +0 -13
  776. package/pennyfarthing-dist/workflows/prd/data/prd-purpose.md +0 -197
  777. package/pennyfarthing-dist/workflows/prd/data/project-types.csv +0 -11
  778. package/pennyfarthing-dist/workflows/prd/steps-c/step-01-init.md +0 -191
  779. package/pennyfarthing-dist/workflows/prd/steps-c/step-01b-continue.md +0 -153
  780. package/pennyfarthing-dist/workflows/prd/steps-c/step-02-discovery.md +0 -224
  781. package/pennyfarthing-dist/workflows/prd/steps-c/step-03-success.md +0 -226
  782. package/pennyfarthing-dist/workflows/prd/steps-c/step-04-journeys.md +0 -213
  783. package/pennyfarthing-dist/workflows/prd/steps-c/step-05-domain.md +0 -207
  784. package/pennyfarthing-dist/workflows/prd/steps-c/step-06-innovation.md +0 -226
  785. package/pennyfarthing-dist/workflows/prd/steps-c/step-07-project-type.md +0 -237
  786. package/pennyfarthing-dist/workflows/prd/steps-c/step-08-scoping.md +0 -228
  787. package/pennyfarthing-dist/workflows/prd/steps-c/step-09-functional.md +0 -231
  788. package/pennyfarthing-dist/workflows/prd/steps-c/step-10-nonfunctional.md +0 -242
  789. package/pennyfarthing-dist/workflows/prd/steps-c/step-11-polish.md +0 -217
  790. package/pennyfarthing-dist/workflows/prd/steps-c/step-12-complete.md +0 -180
  791. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01-discovery.md +0 -247
  792. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01b-legacy-conversion.md +0 -208
  793. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-02-review.md +0 -249
  794. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-03-edit.md +0 -253
  795. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-04-complete.md +0 -168
  796. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-01-discovery.md +0 -218
  797. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02-format-detection.md +0 -191
  798. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02b-parity-check.md +0 -209
  799. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-03-density-validation.md +0 -174
  800. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-04-brief-coverage-validation.md +0 -214
  801. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-05-measurability-validation.md +0 -228
  802. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-06-traceability-validation.md +0 -217
  803. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -205
  804. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-08-domain-compliance-validation.md +0 -243
  805. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-09-project-type-validation.md +0 -263
  806. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-10-smart-validation.md +0 -209
  807. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-11-holistic-quality-validation.md +0 -264
  808. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-12-completeness-validation.md +0 -242
  809. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-13-report-complete.md +0 -232
  810. package/pennyfarthing-dist/workflows/prd/templates/prd-template.md +0 -10
  811. package/pennyfarthing-dist/workflows/prd/workflow.yaml +0 -42
  812. package/pennyfarthing-dist/workflows/product-brief/steps/step-01-init.md +0 -177
  813. package/pennyfarthing-dist/workflows/product-brief/steps/step-01b-continue.md +0 -161
  814. package/pennyfarthing-dist/workflows/product-brief/steps/step-02-vision.md +0 -199
  815. package/pennyfarthing-dist/workflows/product-brief/steps/step-03-users.md +0 -202
  816. package/pennyfarthing-dist/workflows/product-brief/steps/step-04-metrics.md +0 -205
  817. package/pennyfarthing-dist/workflows/product-brief/steps/step-05-scope.md +0 -219
  818. package/pennyfarthing-dist/workflows/product-brief/steps/step-06-complete.md +0 -194
  819. package/pennyfarthing-dist/workflows/product-brief/templates/product-brief.template.md +0 -10
  820. package/pennyfarthing-dist/workflows/product-brief/workflow.yaml +0 -31
  821. package/pennyfarthing-dist/workflows/project-context/project-context-template.md +0 -21
  822. package/pennyfarthing-dist/workflows/project-context/steps/step-01-discover.md +0 -184
  823. package/pennyfarthing-dist/workflows/project-context/steps/step-02-generate.md +0 -318
  824. package/pennyfarthing-dist/workflows/project-context/steps/step-03-complete.md +0 -278
  825. package/pennyfarthing-dist/workflows/project-context/workflow.yaml +0 -27
  826. package/pennyfarthing-dist/workflows/quick-dev/steps/step-01-mode-detection.md +0 -156
  827. package/pennyfarthing-dist/workflows/quick-dev/steps/step-02-context-gathering.md +0 -120
  828. package/pennyfarthing-dist/workflows/quick-dev/steps/step-03-execute.md +0 -113
  829. package/pennyfarthing-dist/workflows/quick-dev/steps/step-04-self-check.md +0 -113
  830. package/pennyfarthing-dist/workflows/quick-dev/steps/step-05-adversarial-review.md +0 -106
  831. package/pennyfarthing-dist/workflows/quick-dev/steps/step-06-resolve-findings.md +0 -140
  832. package/pennyfarthing-dist/workflows/quick-dev/workflow.yaml +0 -27
  833. package/pennyfarthing-dist/workflows/quick-spec/steps/step-01-understand.md +0 -189
  834. package/pennyfarthing-dist/workflows/quick-spec/steps/step-02-investigate.md +0 -144
  835. package/pennyfarthing-dist/workflows/quick-spec/steps/step-03-generate.md +0 -128
  836. package/pennyfarthing-dist/workflows/quick-spec/steps/step-04-review.md +0 -191
  837. package/pennyfarthing-dist/workflows/quick-spec/tech-spec-template.md +0 -74
  838. package/pennyfarthing-dist/workflows/quick-spec/workflow.yaml +0 -27
  839. package/pennyfarthing-dist/workflows/research/steps-domain/step-01-init.md +0 -137
  840. package/pennyfarthing-dist/workflows/research/steps-domain/step-02-domain-analysis.md +0 -229
  841. package/pennyfarthing-dist/workflows/research/steps-domain/step-03-competitive-landscape.md +0 -238
  842. package/pennyfarthing-dist/workflows/research/steps-domain/step-04-regulatory-focus.md +0 -206
  843. package/pennyfarthing-dist/workflows/research/steps-domain/step-05-technical-trends.md +0 -234
  844. package/pennyfarthing-dist/workflows/research/steps-domain/step-06-research-synthesis.md +0 -443
  845. package/pennyfarthing-dist/workflows/research/steps-market/step-01-init.md +0 -182
  846. package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-behavior.md +0 -237
  847. package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-insights.md +0 -200
  848. package/pennyfarthing-dist/workflows/research/steps-market/step-03-customer-pain-points.md +0 -249
  849. package/pennyfarthing-dist/workflows/research/steps-market/step-04-customer-decisions.md +0 -259
  850. package/pennyfarthing-dist/workflows/research/steps-market/step-05-competitive-analysis.md +0 -177
  851. package/pennyfarthing-dist/workflows/research/steps-market/step-06-research-completion.md +0 -475
  852. package/pennyfarthing-dist/workflows/research/steps-technical/step-01-init.md +0 -137
  853. package/pennyfarthing-dist/workflows/research/steps-technical/step-02-technical-overview.md +0 -239
  854. package/pennyfarthing-dist/workflows/research/steps-technical/step-03-integration-patterns.md +0 -248
  855. package/pennyfarthing-dist/workflows/research/steps-technical/step-04-architectural-patterns.md +0 -202
  856. package/pennyfarthing-dist/workflows/research/steps-technical/step-05-implementation-research.md +0 -239
  857. package/pennyfarthing-dist/workflows/research/steps-technical/step-06-research-synthesis.md +0 -486
  858. package/pennyfarthing-dist/workflows/research/templates/research.template.md +0 -29
  859. package/pennyfarthing-dist/workflows/research/workflow.yaml +0 -45
  860. package/pennyfarthing-dist/workflows/retrospective/checklist.md +0 -31
  861. package/pennyfarthing-dist/workflows/retrospective/instructions.md +0 -1443
  862. package/pennyfarthing-dist/workflows/retrospective/workflow.yaml +0 -50
  863. package/pennyfarthing-dist/workflows/sprint-planning/checklist.md +0 -33
  864. package/pennyfarthing-dist/workflows/sprint-planning/sprint-status-template.yaml +0 -55
  865. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-01-parse-epic-files.md +0 -54
  866. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-02-build-sprint-status.md +0 -44
  867. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-03-status-detection.md +0 -64
  868. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-04-generate-status-file.md +0 -73
  869. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-05-validate-and-report.md +0 -56
  870. package/pennyfarthing-dist/workflows/sprint-planning/workflow.yaml +0 -34
  871. package/pennyfarthing-dist/workflows/tdd.yaml +0 -50
  872. package/pennyfarthing-dist/workflows/trivial.yaml +0 -40
  873. package/pennyfarthing-dist/workflows/ux-design/steps/step-01-init.md +0 -135
  874. package/pennyfarthing-dist/workflows/ux-design/steps/step-01b-continue.md +0 -127
  875. package/pennyfarthing-dist/workflows/ux-design/steps/step-02-discovery.md +0 -190
  876. package/pennyfarthing-dist/workflows/ux-design/steps/step-03-core-experience.md +0 -216
  877. package/pennyfarthing-dist/workflows/ux-design/steps/step-04-emotional-response.md +0 -219
  878. package/pennyfarthing-dist/workflows/ux-design/steps/step-05-inspiration.md +0 -234
  879. package/pennyfarthing-dist/workflows/ux-design/steps/step-06-design-system.md +0 -252
  880. package/pennyfarthing-dist/workflows/ux-design/steps/step-07-defining-experience.md +0 -254
  881. package/pennyfarthing-dist/workflows/ux-design/steps/step-08-visual-foundation.md +0 -224
  882. package/pennyfarthing-dist/workflows/ux-design/steps/step-09-design-directions.md +0 -224
  883. package/pennyfarthing-dist/workflows/ux-design/steps/step-10-user-journeys.md +0 -241
  884. package/pennyfarthing-dist/workflows/ux-design/steps/step-11-component-strategy.md +0 -248
  885. package/pennyfarthing-dist/workflows/ux-design/steps/step-12-ux-patterns.md +0 -237
  886. package/pennyfarthing-dist/workflows/ux-design/steps/step-13-responsive-accessibility.md +0 -264
  887. package/pennyfarthing-dist/workflows/ux-design/steps/step-14-complete.md +0 -228
  888. package/pennyfarthing-dist/workflows/ux-design/ux-design-template.md +0 -13
  889. package/pennyfarthing-dist/workflows/ux-design/workflow.yaml +0 -41
  890. /package/{packages/core/bin → bin}/pennyfarthing.js +0 -0
@@ -1,878 +0,0 @@
1
- /**
2
- * Tests for Story 32-4: BMAD Project Context Reader
3
- *
4
- * These tests define the contract for parsing BMAD project-context.md files.
5
- * Dev will implement parseBmadContext() to pass these tests.
6
- *
7
- * BMAD project-context format:
8
- * - Required: ## Overview, ## Technology Stack, ## Critical Implementation Rules
9
- * - Optional: ## Project Structure, ## Coding Standards, ## AI Agent Guidance,
10
- * ## External Dependencies, ## Environment Setup
11
- *
12
- * Run with: npm test
13
- */
14
- import { describe, it } from 'node:test';
15
- import assert from 'node:assert';
16
- // Import the parser function that Dev will implement
17
- // This import will fail until the module is implemented
18
- import { parseBmadContext, } from './context-reader.js';
19
- // =============================================================================
20
- // TEST DATA: Valid BMAD project-context examples
21
- // =============================================================================
22
- const MINIMAL_VALID_CONTEXT = `# Project Context
23
-
24
- ## Overview
25
- A simple test project for validating the context parser.
26
-
27
- ## Technology Stack
28
-
29
- ### Frontend
30
- - **Framework:** React
31
- - **Language:** TypeScript
32
-
33
- ### Backend
34
- - **Language:** Node.js
35
- - **Framework:** Express
36
-
37
- ## Critical Implementation Rules
38
-
39
- 1. **Test First:** Always write tests before implementation.
40
- `;
41
- const COMPLETE_CONTEXT = `# Project Context
42
-
43
- ## Overview
44
- TaskFlow is a collaborative task management application designed for small teams.
45
- It enables real-time task tracking, team collaboration, and progress visualization.
46
- The application serves 5,000+ daily active users and processes 50,000+ task updates per day.
47
-
48
- ## Technology Stack
49
-
50
- ### Frontend
51
- - **Framework:** React 18 with hooks
52
- - **Language:** TypeScript 5.0+
53
- - **State Management:** Zustand for global state, React Query for server state
54
- - **Styling:** Tailwind CSS with custom design tokens
55
- - **Build Tool:** Vite 5
56
-
57
- ### Backend
58
- - **Language:** Go 1.21+
59
- - **Framework:** Gin with custom middleware
60
- - **Database:** PostgreSQL 15 with pgx driver
61
- - **Cache:** Redis 7 for sessions and real-time updates
62
- - **API Style:** REST with OpenAPI 3.0 documentation
63
-
64
- ### Infrastructure
65
- - **Cloud Provider:** AWS (us-east-1 primary, us-west-2 DR)
66
- - **Container Runtime:** Docker with multi-stage builds
67
- - **Orchestration:** ECS Fargate
68
- - **CI/CD:** GitHub Actions with environment-based deployments
69
-
70
- ## Project Structure
71
-
72
- \`\`\`
73
- taskflow/
74
- ├── api/ # Go backend
75
- │ ├── cmd/server/ # Application entrypoint
76
- │ └── internal/ # Internal packages
77
- ├── web/ # React frontend
78
- └── docs/ # Documentation
79
- \`\`\`
80
-
81
- ## Critical Implementation Rules
82
-
83
- 1. **No Raw SQL:** Always use parameterized queries via repository layer. SQL injection is a critical vulnerability.
84
-
85
- 2. **Auth Required by Default:** All API endpoints require authentication unless explicitly marked public. Use the \`@public\` decorator for exceptions.
86
-
87
- 3. **Soft Deletes Only:** Never hard-delete user data. Use \`deleted_at\` timestamp for all deletions. Required for audit compliance.
88
-
89
- 4. **Rate Limiting:** All public endpoints must have rate limiting. Default: 100 req/min per IP.
90
-
91
- 5. **Error Codes:** All API errors must use standard error codes from \`pkg/errors/codes.go\`. Never expose internal error messages to clients.
92
-
93
- ## Coding Standards
94
-
95
- ### Naming Conventions
96
- - Go: Follow effective Go (MixedCaps for exports, mixedCaps for internal)
97
- - React: PascalCase for components, camelCase for hooks (useXxx)
98
- - Database: snake_case for all columns and tables
99
- - API: camelCase for JSON fields
100
-
101
- ### Error Handling
102
- - Go: Wrap errors with context using \`fmt.Errorf("operation: %w", err)\`
103
- - React: Use error boundaries for component failures
104
- - API: Return structured error responses with code, message, and details
105
-
106
- ### Testing Requirements
107
- - Unit test coverage: minimum 80% for services layer
108
- - Integration tests required for all API endpoints
109
- - E2E tests for critical user journeys (login, task CRUD)
110
-
111
- ## AI Agent Guidance
112
-
113
- ### Do
114
- - Read existing code patterns before implementing new features
115
- - Follow the existing project structure - don't create new top-level directories
116
- - Use existing utilities from \`pkg/\` before creating new ones
117
- - Write tests alongside implementation, not after
118
- - Check \`docs/adr/\` for architectural decision records before major changes
119
-
120
- ### Don't
121
- - Don't add new dependencies without checking for existing alternatives
122
- - Don't modify database schema without creating a migration
123
- - Don't bypass the repository layer for database access
124
- - Don't use \`any\` type in TypeScript - always define proper types
125
-
126
- ### Context Loading
127
- For additional context, check:
128
- - \`docs/adr/\` - Architectural decisions
129
- - \`docs/api/\` - API specifications
130
- - \`.github/CONTRIBUTING.md\` - Contribution guidelines
131
-
132
- ## External Dependencies
133
-
134
- | Dependency | Purpose | Documentation |
135
- |------------|---------|---------------|
136
- | Zustand | Frontend state management | https://zustand-demo.pmnd.rs/ |
137
- | React Query | Server state & caching | https://tanstack.com/query |
138
- | Gin | HTTP router & middleware | https://gin-gonic.com/docs/ |
139
- | pgx | PostgreSQL driver | https://github.com/jackc/pgx |
140
- | Zap | Structured logging | https://pkg.go.dev/go.uber.org/zap |
141
-
142
- ## Environment Setup
143
-
144
- 1. Install dependencies:
145
- \`\`\`bash
146
- cd api && go mod download
147
- cd web && npm install
148
- \`\`\`
149
-
150
- 2. Set up local database:
151
- \`\`\`bash
152
- docker-compose up -d postgres redis
153
- make migrate
154
- \`\`\`
155
- `;
156
- const CONTEXT_WITHOUT_INFRASTRUCTURE = `# Project Context
157
-
158
- ## Overview
159
- A frontend-only project with no backend.
160
-
161
- ## Technology Stack
162
-
163
- ### Frontend
164
- - **Framework:** Vue 3
165
- - **Language:** TypeScript
166
- - **Build Tool:** Vite
167
-
168
- ## Critical Implementation Rules
169
-
170
- 1. **Component Isolation:** Each component should be self-contained.
171
- `;
172
- const CONTEXT_WITH_MULTILINE_RULES = `# Project Context
173
-
174
- ## Overview
175
- Project with multi-line rule descriptions.
176
-
177
- ## Technology Stack
178
-
179
- ### Backend
180
- - **Language:** Python
181
- - **Framework:** FastAPI
182
-
183
- ## Critical Implementation Rules
184
-
185
- 1. **Database Access:** All database queries must go through the ORM layer.
186
- Never write raw SQL. This ensures we maintain proper query logging
187
- and can easily switch databases if needed.
188
-
189
- 2. **Error Handling:** Always catch exceptions at the controller layer.
190
- Log the full stack trace but return sanitized error messages to clients.
191
- Use error codes from the errors module.
192
-
193
- 3. **Simple Rule:** Keep it simple.
194
- `;
195
- // =============================================================================
196
- // AC1: Detects project-context.md in project
197
- // =============================================================================
198
- describe('BMAD Context Reader (32-4)', () => {
199
- describe('AC1: File detection and basic parsing', () => {
200
- it('should parse a minimal valid context file', () => {
201
- const result = parseBmadContext(MINIMAL_VALID_CONTEXT);
202
- assert.strictEqual(result.success, true, 'Should successfully parse minimal context');
203
- assert.ok(result.context, 'Should return context object');
204
- });
205
- it('should parse a complete context file with all sections', () => {
206
- const result = parseBmadContext(COMPLETE_CONTEXT);
207
- assert.strictEqual(result.success, true, 'Should successfully parse complete context');
208
- assert.ok(result.context, 'Should return context object');
209
- });
210
- it('should extract overview section', () => {
211
- const result = parseBmadContext(MINIMAL_VALID_CONTEXT);
212
- assert.strictEqual(result.success, true);
213
- assert.ok(result.context?.overview);
214
- assert.ok(result.context?.overview.includes('simple test project'));
215
- });
216
- it('should preserve multi-line overview content', () => {
217
- const result = parseBmadContext(COMPLETE_CONTEXT);
218
- assert.strictEqual(result.success, true);
219
- assert.ok(result.context?.overview.includes('TaskFlow'));
220
- assert.ok(result.context?.overview.includes('5,000+ daily active users'));
221
- });
222
- it('should return errors for empty content', () => {
223
- const result = parseBmadContext('');
224
- assert.strictEqual(result.success, false);
225
- assert.ok(result.errors && result.errors.length > 0);
226
- });
227
- it('should return errors for whitespace-only content', () => {
228
- const result = parseBmadContext(' \n\n \t ');
229
- assert.strictEqual(result.success, false);
230
- });
231
- });
232
- // ===========================================================================
233
- // AC2: Parses technology stack section
234
- // ===========================================================================
235
- describe('AC2: Technology Stack parsing', () => {
236
- describe('Frontend subsection', () => {
237
- it('should extract frontend framework', () => {
238
- const result = parseBmadContext(MINIMAL_VALID_CONTEXT);
239
- assert.strictEqual(result.success, true);
240
- assert.strictEqual(result.context?.technologyStack.frontend?.framework, 'React');
241
- });
242
- it('should extract frontend language', () => {
243
- const result = parseBmadContext(MINIMAL_VALID_CONTEXT);
244
- assert.strictEqual(result.success, true);
245
- assert.strictEqual(result.context?.technologyStack.frontend?.language, 'TypeScript');
246
- });
247
- it('should extract all frontend fields when present', () => {
248
- const result = parseBmadContext(COMPLETE_CONTEXT);
249
- assert.strictEqual(result.success, true);
250
- const frontend = result.context?.technologyStack.frontend;
251
- assert.strictEqual(frontend?.framework, 'React 18 with hooks');
252
- assert.strictEqual(frontend?.language, 'TypeScript 5.0+');
253
- assert.strictEqual(frontend?.stateManagement, 'Zustand for global state, React Query for server state');
254
- assert.strictEqual(frontend?.styling, 'Tailwind CSS with custom design tokens');
255
- assert.strictEqual(frontend?.buildTool, 'Vite 5');
256
- });
257
- it('should return undefined for missing frontend section', () => {
258
- const context = `# Project Context
259
-
260
- ## Overview
261
- Backend only project.
262
-
263
- ## Technology Stack
264
-
265
- ### Backend
266
- - **Language:** Go
267
- - **Framework:** Gin
268
-
269
- ## Critical Implementation Rules
270
-
271
- 1. **Rule:** Description.
272
- `;
273
- const result = parseBmadContext(context);
274
- assert.strictEqual(result.success, true);
275
- assert.strictEqual(result.context?.technologyStack.frontend, undefined);
276
- });
277
- });
278
- describe('Backend subsection', () => {
279
- it('should extract backend language', () => {
280
- const result = parseBmadContext(MINIMAL_VALID_CONTEXT);
281
- assert.strictEqual(result.success, true);
282
- assert.strictEqual(result.context?.technologyStack.backend?.language, 'Node.js');
283
- });
284
- it('should extract backend framework', () => {
285
- const result = parseBmadContext(MINIMAL_VALID_CONTEXT);
286
- assert.strictEqual(result.success, true);
287
- assert.strictEqual(result.context?.technologyStack.backend?.framework, 'Express');
288
- });
289
- it('should extract all backend fields when present', () => {
290
- const result = parseBmadContext(COMPLETE_CONTEXT);
291
- assert.strictEqual(result.success, true);
292
- const backend = result.context?.technologyStack.backend;
293
- assert.strictEqual(backend?.language, 'Go 1.21+');
294
- assert.strictEqual(backend?.framework, 'Gin with custom middleware');
295
- assert.strictEqual(backend?.database, 'PostgreSQL 15 with pgx driver');
296
- assert.strictEqual(backend?.cache, 'Redis 7 for sessions and real-time updates');
297
- assert.strictEqual(backend?.apiStyle, 'REST with OpenAPI 3.0 documentation');
298
- });
299
- it('should return undefined for missing backend section', () => {
300
- const result = parseBmadContext(CONTEXT_WITHOUT_INFRASTRUCTURE);
301
- assert.strictEqual(result.success, true);
302
- assert.strictEqual(result.context?.technologyStack.backend, undefined);
303
- });
304
- });
305
- describe('Infrastructure subsection', () => {
306
- it('should extract all infrastructure fields when present', () => {
307
- const result = parseBmadContext(COMPLETE_CONTEXT);
308
- assert.strictEqual(result.success, true);
309
- const infra = result.context?.technologyStack.infrastructure;
310
- assert.strictEqual(infra?.cloudProvider, 'AWS (us-east-1 primary, us-west-2 DR)');
311
- assert.strictEqual(infra?.containerRuntime, 'Docker with multi-stage builds');
312
- assert.strictEqual(infra?.orchestration, 'ECS Fargate');
313
- assert.strictEqual(infra?.ciCd, 'GitHub Actions with environment-based deployments');
314
- });
315
- it('should return undefined for missing infrastructure section', () => {
316
- const result = parseBmadContext(CONTEXT_WITHOUT_INFRASTRUCTURE);
317
- assert.strictEqual(result.success, true);
318
- assert.strictEqual(result.context?.technologyStack.infrastructure, undefined);
319
- });
320
- });
321
- describe('Technology Stack edge cases', () => {
322
- it('should handle technology stack with only one subsection', () => {
323
- const context = `# Project Context
324
-
325
- ## Overview
326
- Minimal stack project.
327
-
328
- ## Technology Stack
329
-
330
- ### Backend
331
- - **Language:** Rust
332
-
333
- ## Critical Implementation Rules
334
-
335
- 1. **Rule:** Description.
336
- `;
337
- const result = parseBmadContext(context);
338
- assert.strictEqual(result.success, true);
339
- assert.strictEqual(result.context?.technologyStack.backend?.language, 'Rust');
340
- assert.strictEqual(result.context?.technologyStack.frontend, undefined);
341
- assert.strictEqual(result.context?.technologyStack.infrastructure, undefined);
342
- });
343
- it('should handle fields with extra whitespace', () => {
344
- const context = `# Project Context
345
-
346
- ## Overview
347
- Test project.
348
-
349
- ## Technology Stack
350
-
351
- ### Frontend
352
- - **Framework:** React
353
- - **Language:** TypeScript
354
-
355
- ## Critical Implementation Rules
356
-
357
- 1. **Rule:** Description.
358
- `;
359
- const result = parseBmadContext(context);
360
- assert.strictEqual(result.success, true);
361
- assert.strictEqual(result.context?.technologyStack.frontend?.framework, 'React');
362
- assert.strictEqual(result.context?.technologyStack.frontend?.language, 'TypeScript');
363
- });
364
- it('should handle fields without bold markers', () => {
365
- const context = `# Project Context
366
-
367
- ## Overview
368
- Test project without bold.
369
-
370
- ## Technology Stack
371
-
372
- ### Frontend
373
- - Framework: React
374
- - Language: TypeScript
375
-
376
- ## Critical Implementation Rules
377
-
378
- 1. **Rule:** Description.
379
- `;
380
- const result = parseBmadContext(context);
381
- assert.strictEqual(result.success, true);
382
- // Should still parse even without bold markers
383
- assert.strictEqual(result.context?.technologyStack.frontend?.framework, 'React');
384
- assert.strictEqual(result.context?.technologyStack.frontend?.language, 'TypeScript');
385
- });
386
- });
387
- });
388
- // ===========================================================================
389
- // AC3: Extracts implementation rules
390
- // ===========================================================================
391
- describe('AC3: Critical Implementation Rules parsing', () => {
392
- it('should extract single rule', () => {
393
- const result = parseBmadContext(MINIMAL_VALID_CONTEXT);
394
- assert.strictEqual(result.success, true);
395
- assert.strictEqual(result.context?.implementationRules.length, 1);
396
- const rule = result.context?.implementationRules[0];
397
- assert.strictEqual(rule?.number, 1);
398
- assert.strictEqual(rule?.title, 'Test First');
399
- assert.strictEqual(rule?.description, 'Always write tests before implementation.');
400
- });
401
- it('should extract multiple rules', () => {
402
- const result = parseBmadContext(COMPLETE_CONTEXT);
403
- assert.strictEqual(result.success, true);
404
- assert.strictEqual(result.context?.implementationRules.length, 5);
405
- });
406
- it('should extract rule numbers correctly', () => {
407
- const result = parseBmadContext(COMPLETE_CONTEXT);
408
- assert.strictEqual(result.success, true);
409
- assert.strictEqual(result.context?.implementationRules[0]?.number, 1);
410
- assert.strictEqual(result.context?.implementationRules[1]?.number, 2);
411
- assert.strictEqual(result.context?.implementationRules[4]?.number, 5);
412
- });
413
- it('should extract rule titles correctly', () => {
414
- const result = parseBmadContext(COMPLETE_CONTEXT);
415
- assert.strictEqual(result.success, true);
416
- assert.strictEqual(result.context?.implementationRules[0]?.title, 'No Raw SQL');
417
- assert.strictEqual(result.context?.implementationRules[1]?.title, 'Auth Required by Default');
418
- assert.strictEqual(result.context?.implementationRules[2]?.title, 'Soft Deletes Only');
419
- });
420
- it('should extract rule descriptions correctly', () => {
421
- const result = parseBmadContext(COMPLETE_CONTEXT);
422
- assert.strictEqual(result.success, true);
423
- const rule = result.context?.implementationRules[0];
424
- assert.ok(rule?.description.includes('parameterized queries'));
425
- assert.ok(rule?.description.includes('SQL injection'));
426
- });
427
- it('should handle multi-line rule descriptions', () => {
428
- const result = parseBmadContext(CONTEXT_WITH_MULTILINE_RULES);
429
- assert.strictEqual(result.success, true);
430
- assert.strictEqual(result.context?.implementationRules.length, 3);
431
- const rule1 = result.context?.implementationRules[0];
432
- assert.strictEqual(rule1?.title, 'Database Access');
433
- assert.ok(rule1?.description.includes('ORM layer'));
434
- assert.ok(rule1?.description.includes('easily switch databases'));
435
- const rule2 = result.context?.implementationRules[1];
436
- assert.strictEqual(rule2?.title, 'Error Handling');
437
- assert.ok(rule2?.description.includes('controller layer'));
438
- assert.ok(rule2?.description.includes('sanitized error messages'));
439
- });
440
- it('should preserve inline code in rule descriptions', () => {
441
- const result = parseBmadContext(COMPLETE_CONTEXT);
442
- assert.strictEqual(result.success, true);
443
- const rule2 = result.context?.implementationRules[1];
444
- assert.ok(rule2?.description.includes('`@public`'));
445
- });
446
- it('should return empty array when rules section is missing', () => {
447
- const context = `# Project Context
448
-
449
- ## Overview
450
- No rules project.
451
-
452
- ## Technology Stack
453
-
454
- ### Frontend
455
- - **Framework:** React
456
- `;
457
- const result = parseBmadContext(context);
458
- // Missing Critical Implementation Rules should cause error (it's required)
459
- assert.strictEqual(result.success, false);
460
- assert.ok(result.errors?.some((e) => e.section === 'Critical Implementation Rules'));
461
- });
462
- it('should handle rules with special characters in title', () => {
463
- const context = `# Project Context
464
-
465
- ## Overview
466
- Test project.
467
-
468
- ## Technology Stack
469
-
470
- ### Frontend
471
- - **Framework:** React
472
-
473
- ## Critical Implementation Rules
474
-
475
- 1. **API Versioning (v1/v2):** Support multiple API versions.
476
- `;
477
- const result = parseBmadContext(context);
478
- assert.strictEqual(result.success, true);
479
- assert.strictEqual(result.context?.implementationRules[0]?.title, 'API Versioning (v1/v2)');
480
- });
481
- });
482
- // ===========================================================================
483
- // AC4: Integrates with agent context loading - proper types and structure
484
- // ===========================================================================
485
- describe('AC4: Type structure and integration', () => {
486
- it('should return success: true for valid context', () => {
487
- const result = parseBmadContext(COMPLETE_CONTEXT);
488
- assert.strictEqual(result.success, true);
489
- assert.ok(result.context);
490
- assert.strictEqual(result.errors, undefined);
491
- });
492
- it('should return success: false with errors for invalid context', () => {
493
- const context = `# Project Context
494
-
495
- ## Overview
496
- Missing required sections.
497
- `;
498
- const result = parseBmadContext(context);
499
- assert.strictEqual(result.success, false);
500
- assert.strictEqual(result.context, undefined);
501
- assert.ok(result.errors && result.errors.length > 0);
502
- });
503
- it('should populate all BmadProjectContext fields', () => {
504
- const result = parseBmadContext(COMPLETE_CONTEXT);
505
- assert.strictEqual(result.success, true);
506
- const context = result.context;
507
- // Required fields
508
- assert.strictEqual(typeof context.overview, 'string');
509
- assert.ok(typeof context.technologyStack === 'object');
510
- assert.ok(Array.isArray(context.implementationRules));
511
- // Optional fields should be present when in content
512
- assert.ok(context.projectStructure === undefined || typeof context.projectStructure === 'string');
513
- assert.ok(context.codingStandards === undefined || typeof context.codingStandards === 'string');
514
- assert.ok(context.aiAgentGuidance === undefined || typeof context.aiAgentGuidance === 'object');
515
- });
516
- it('should have correct TechnologyStack structure', () => {
517
- const result = parseBmadContext(COMPLETE_CONTEXT);
518
- assert.strictEqual(result.success, true);
519
- const stack = result.context?.technologyStack;
520
- // Frontend fields
521
- if (stack.frontend) {
522
- assert.ok(stack.frontend.framework === undefined || typeof stack.frontend.framework === 'string');
523
- assert.ok(stack.frontend.language === undefined || typeof stack.frontend.language === 'string');
524
- assert.ok(stack.frontend.stateManagement === undefined || typeof stack.frontend.stateManagement === 'string');
525
- assert.ok(stack.frontend.styling === undefined || typeof stack.frontend.styling === 'string');
526
- assert.ok(stack.frontend.buildTool === undefined || typeof stack.frontend.buildTool === 'string');
527
- }
528
- // Backend fields
529
- if (stack.backend) {
530
- assert.ok(stack.backend.language === undefined || typeof stack.backend.language === 'string');
531
- assert.ok(stack.backend.framework === undefined || typeof stack.backend.framework === 'string');
532
- assert.ok(stack.backend.database === undefined || typeof stack.backend.database === 'string');
533
- assert.ok(stack.backend.cache === undefined || typeof stack.backend.cache === 'string');
534
- assert.ok(stack.backend.apiStyle === undefined || typeof stack.backend.apiStyle === 'string');
535
- }
536
- // Infrastructure fields
537
- if (stack.infrastructure) {
538
- assert.ok(stack.infrastructure.cloudProvider === undefined || typeof stack.infrastructure.cloudProvider === 'string');
539
- assert.ok(stack.infrastructure.containerRuntime === undefined || typeof stack.infrastructure.containerRuntime === 'string');
540
- assert.ok(stack.infrastructure.orchestration === undefined || typeof stack.infrastructure.orchestration === 'string');
541
- assert.ok(stack.infrastructure.ciCd === undefined || typeof stack.infrastructure.ciCd === 'string');
542
- }
543
- });
544
- it('should have correct ImplementationRule structure', () => {
545
- const result = parseBmadContext(COMPLETE_CONTEXT);
546
- assert.strictEqual(result.success, true);
547
- const rule = result.context?.implementationRules[0];
548
- assert.strictEqual(typeof rule.number, 'number');
549
- assert.strictEqual(typeof rule.title, 'string');
550
- assert.strictEqual(typeof rule.description, 'string');
551
- });
552
- it('should include error details with section name', () => {
553
- const context = `# Project Context
554
-
555
- ## Overview
556
- Missing tech stack and rules.
557
- `;
558
- const result = parseBmadContext(context);
559
- assert.strictEqual(result.success, false);
560
- assert.ok(result.errors?.some((e) => e.section === 'Technology Stack'));
561
- assert.ok(result.errors?.some((e) => e.section === 'Critical Implementation Rules'));
562
- });
563
- it('should accumulate multiple errors', () => {
564
- const context = `# Project Context
565
- `;
566
- // Missing: Overview, Technology Stack, Critical Implementation Rules
567
- const result = parseBmadContext(context);
568
- assert.strictEqual(result.success, false);
569
- assert.ok(result.errors && result.errors.length >= 3, 'Should report multiple errors');
570
- });
571
- });
572
- // ===========================================================================
573
- // AC5: Works alongside CLAUDE.md - optional sections and compatibility
574
- // ===========================================================================
575
- describe('AC5: Optional sections and CLAUDE.md compatibility', () => {
576
- describe('Project Structure section', () => {
577
- it('should extract project structure when present', () => {
578
- const result = parseBmadContext(COMPLETE_CONTEXT);
579
- assert.strictEqual(result.success, true);
580
- assert.ok(result.context?.projectStructure);
581
- assert.ok(result.context?.projectStructure?.includes('taskflow/'));
582
- assert.ok(result.context?.projectStructure?.includes('api/'));
583
- });
584
- it('should return undefined when project structure missing', () => {
585
- const result = parseBmadContext(MINIMAL_VALID_CONTEXT);
586
- assert.strictEqual(result.success, true);
587
- assert.strictEqual(result.context?.projectStructure, undefined);
588
- });
589
- });
590
- describe('Coding Standards section', () => {
591
- it('should extract coding standards when present', () => {
592
- const result = parseBmadContext(COMPLETE_CONTEXT);
593
- assert.strictEqual(result.success, true);
594
- assert.ok(result.context?.codingStandards);
595
- assert.ok(result.context?.codingStandards?.includes('Naming Conventions'));
596
- assert.ok(result.context?.codingStandards?.includes('Error Handling'));
597
- });
598
- it('should return undefined when coding standards missing', () => {
599
- const result = parseBmadContext(MINIMAL_VALID_CONTEXT);
600
- assert.strictEqual(result.success, true);
601
- assert.strictEqual(result.context?.codingStandards, undefined);
602
- });
603
- });
604
- describe('AI Agent Guidance section', () => {
605
- it('should extract AI agent guidance when present', () => {
606
- const result = parseBmadContext(COMPLETE_CONTEXT);
607
- assert.strictEqual(result.success, true);
608
- assert.ok(result.context?.aiAgentGuidance);
609
- });
610
- it('should parse Do subsection', () => {
611
- const result = parseBmadContext(COMPLETE_CONTEXT);
612
- assert.strictEqual(result.success, true);
613
- const guidance = result.context?.aiAgentGuidance;
614
- assert.ok(guidance?.do);
615
- assert.ok(Array.isArray(guidance?.do));
616
- assert.ok(guidance?.do?.some((item) => item.includes('existing code patterns')));
617
- });
618
- it('should parse Don\'t subsection', () => {
619
- const result = parseBmadContext(COMPLETE_CONTEXT);
620
- assert.strictEqual(result.success, true);
621
- const guidance = result.context?.aiAgentGuidance;
622
- assert.ok(guidance?.dont);
623
- assert.ok(Array.isArray(guidance?.dont));
624
- assert.ok(guidance?.dont?.some((item) => item.includes('new dependencies')));
625
- });
626
- it('should parse Context Loading subsection', () => {
627
- const result = parseBmadContext(COMPLETE_CONTEXT);
628
- assert.strictEqual(result.success, true);
629
- const guidance = result.context?.aiAgentGuidance;
630
- assert.ok(guidance?.contextLoading);
631
- assert.ok(guidance?.contextLoading?.includes('docs/adr/'));
632
- });
633
- it('should return undefined when AI guidance missing', () => {
634
- const result = parseBmadContext(MINIMAL_VALID_CONTEXT);
635
- assert.strictEqual(result.success, true);
636
- assert.strictEqual(result.context?.aiAgentGuidance, undefined);
637
- });
638
- });
639
- describe('External Dependencies section', () => {
640
- it('should extract external dependencies when present', () => {
641
- const result = parseBmadContext(COMPLETE_CONTEXT);
642
- assert.strictEqual(result.success, true);
643
- assert.ok(result.context?.externalDependencies);
644
- assert.ok(Array.isArray(result.context?.externalDependencies));
645
- });
646
- it('should parse dependency table rows', () => {
647
- const result = parseBmadContext(COMPLETE_CONTEXT);
648
- assert.strictEqual(result.success, true);
649
- const deps = result.context?.externalDependencies;
650
- assert.ok(deps && deps.length >= 5);
651
- const zustand = deps?.find((d) => d.name === 'Zustand');
652
- assert.ok(zustand);
653
- assert.strictEqual(zustand?.purpose, 'Frontend state management');
654
- assert.strictEqual(zustand?.documentation, 'https://zustand-demo.pmnd.rs/');
655
- });
656
- it('should return undefined when dependencies missing', () => {
657
- const result = parseBmadContext(MINIMAL_VALID_CONTEXT);
658
- assert.strictEqual(result.success, true);
659
- assert.strictEqual(result.context?.externalDependencies, undefined);
660
- });
661
- });
662
- describe('Environment Setup section', () => {
663
- it('should extract environment setup when present', () => {
664
- const result = parseBmadContext(COMPLETE_CONTEXT);
665
- assert.strictEqual(result.success, true);
666
- assert.ok(result.context?.environmentSetup);
667
- assert.ok(result.context?.environmentSetup?.includes('Install dependencies'));
668
- assert.ok(result.context?.environmentSetup?.includes('docker-compose'));
669
- });
670
- it('should return undefined when environment setup missing', () => {
671
- const result = parseBmadContext(MINIMAL_VALID_CONTEXT);
672
- assert.strictEqual(result.success, true);
673
- assert.strictEqual(result.context?.environmentSetup, undefined);
674
- });
675
- });
676
- describe('CLAUDE.md compatibility', () => {
677
- it('should not conflict with CLAUDE.md section names', () => {
678
- // CLAUDE.md uses sections like "## Build Commands", "## Architecture"
679
- // Our context reader should ignore these and focus on BMAD sections
680
- const context = `# Project Context
681
-
682
- ## Overview
683
- Test project.
684
-
685
- ## Build Commands
686
- This section should be ignored - it's CLAUDE.md format.
687
-
688
- ## Technology Stack
689
-
690
- ### Frontend
691
- - **Framework:** React
692
-
693
- ## Critical Implementation Rules
694
-
695
- 1. **Rule:** Description.
696
- `;
697
- const result = parseBmadContext(context);
698
- assert.strictEqual(result.success, true);
699
- // Should not have "Build Commands" as a recognized section
700
- assert.ok(result.context);
701
- });
702
- it('should parse context independently of CLAUDE.md', () => {
703
- // The parser should work on project-context.md content alone
704
- // without requiring CLAUDE.md to be present
705
- const result = parseBmadContext(MINIMAL_VALID_CONTEXT);
706
- assert.strictEqual(result.success, true);
707
- assert.ok(result.context);
708
- });
709
- });
710
- });
711
- // ===========================================================================
712
- // Edge cases and error handling
713
- // ===========================================================================
714
- describe('Edge cases and error handling', () => {
715
- it('should handle Windows line endings (CRLF)', () => {
716
- const context = '# Project Context\r\n\r\n## Overview\r\nTest project.\r\n\r\n## Technology Stack\r\n\r\n### Frontend\r\n- **Framework:** React\r\n\r\n## Critical Implementation Rules\r\n\r\n1. **Rule:** Description.\r\n';
717
- const result = parseBmadContext(context);
718
- assert.strictEqual(result.success, true);
719
- assert.strictEqual(result.context?.technologyStack.frontend?.framework, 'React');
720
- });
721
- it('should handle extra blank lines between sections', () => {
722
- const context = `# Project Context
723
-
724
-
725
-
726
- ## Overview
727
-
728
- Test project.
729
-
730
-
731
-
732
- ## Technology Stack
733
-
734
-
735
- ### Frontend
736
- - **Framework:** React
737
-
738
-
739
-
740
- ## Critical Implementation Rules
741
-
742
-
743
- 1. **Rule:** Description.
744
-
745
- `;
746
- const result = parseBmadContext(context);
747
- assert.strictEqual(result.success, true);
748
- });
749
- it('should handle section headers with extra spaces', () => {
750
- const context = `# Project Context
751
-
752
- ## Overview
753
- Test project.
754
-
755
- ## Technology Stack
756
-
757
- ### Frontend
758
- - **Framework:** React
759
-
760
- ## Critical Implementation Rules
761
-
762
- 1. **Rule:** Description.
763
- `;
764
- const result = parseBmadContext(context);
765
- assert.strictEqual(result.success, true);
766
- });
767
- it('should handle missing H1 header gracefully', () => {
768
- const context = `## Overview
769
- Test project without H1.
770
-
771
- ## Technology Stack
772
-
773
- ### Frontend
774
- - **Framework:** React
775
-
776
- ## Critical Implementation Rules
777
-
778
- 1. **Rule:** Description.
779
- `;
780
- const result = parseBmadContext(context);
781
- // Should still parse - H1 is just a title
782
- assert.strictEqual(result.success, true);
783
- });
784
- it('should handle technology fields with colons in values', () => {
785
- const context = `# Project Context
786
-
787
- ## Overview
788
- Test project.
789
-
790
- ## Technology Stack
791
-
792
- ### Frontend
793
- - **Framework:** React: The Modern Way
794
- - **Language:** TypeScript: Strict Mode
795
-
796
- ## Critical Implementation Rules
797
-
798
- 1. **Rule:** Description.
799
- `;
800
- const result = parseBmadContext(context);
801
- assert.strictEqual(result.success, true);
802
- assert.strictEqual(result.context?.technologyStack.frontend?.framework, 'React: The Modern Way');
803
- });
804
- it('should handle empty Technology Stack section', () => {
805
- const context = `# Project Context
806
-
807
- ## Overview
808
- Test project.
809
-
810
- ## Technology Stack
811
-
812
- ## Critical Implementation Rules
813
-
814
- 1. **Rule:** Description.
815
- `;
816
- const result = parseBmadContext(context);
817
- // Empty Technology Stack should result in empty object, not error
818
- assert.strictEqual(result.success, true);
819
- assert.ok(result.context?.technologyStack);
820
- });
821
- it('should handle rules without bold title format', () => {
822
- const context = `# Project Context
823
-
824
- ## Overview
825
- Test project.
826
-
827
- ## Technology Stack
828
-
829
- ### Frontend
830
- - **Framework:** React
831
-
832
- ## Critical Implementation Rules
833
-
834
- 1. Simple Rule: This rule has no bold formatting.
835
- 2. Another Rule: Also without bold.
836
- `;
837
- const result = parseBmadContext(context);
838
- assert.strictEqual(result.success, true);
839
- // Should still parse rules even without bold
840
- assert.ok(result.context && result.context.implementationRules.length >= 2);
841
- });
842
- it('should handle markdown code blocks in content', () => {
843
- const context = `# Project Context
844
-
845
- ## Overview
846
- Test project with code.
847
-
848
- ## Technology Stack
849
-
850
- ### Frontend
851
- - **Framework:** React
852
-
853
- ## Critical Implementation Rules
854
-
855
- 1. **Code Rule:** Use this pattern:
856
- \`\`\`typescript
857
- const x = 1;
858
- \`\`\`
859
- `;
860
- const result = parseBmadContext(context);
861
- assert.strictEqual(result.success, true);
862
- assert.ok(result.context?.implementationRules[0]?.description.includes('pattern'));
863
- });
864
- it('should handle content with no matching sections', () => {
865
- const context = `# Random Document
866
-
867
- This is not a BMAD project context file.
868
-
869
- ## Some Random Section
870
- Content here.
871
- `;
872
- const result = parseBmadContext(context);
873
- assert.strictEqual(result.success, false);
874
- assert.ok(result.errors && result.errors.length > 0);
875
- });
876
- });
877
- });
878
- //# sourceMappingURL=context-reader.test.js.map