@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,338 +0,0 @@
1
- /**
2
- * OCEAN Spider Chart Generator
3
- *
4
- * Story 11-10: Build OCEAN spider chart generator (complement to Chernoff faces)
5
- *
6
- * Generates pentagon-shaped spider charts showing OCEAN personality profiles.
7
- * Charts are unfilled (stroke only) to enable clean stacking for comparisons.
8
- */
9
- import { readFileSync } from 'fs';
10
- import { join, dirname } from 'path';
11
- import { fileURLToPath } from 'url';
12
- import { parse as parseYaml } from 'yaml';
13
- import { findMonorepoRoot } from '../cli/utils/files.js';
14
- const __filename = fileURLToPath(import.meta.url);
15
- const __dirname = dirname(__filename);
16
- // Find monorepo root by walking up from current directory
17
- const projectRoot = findMonorepoRoot(__dirname);
18
- const themesDir = join(projectRoot, 'pennyfarthing-dist', 'personas', 'themes');
19
- /**
20
- * Load OCEAN scores for a specific theme and agent
21
- */
22
- export function loadThemeOcean(theme, agent) {
23
- const themePath = join(themesDir, `${theme}.yaml`);
24
- const content = readFileSync(themePath, 'utf-8');
25
- const data = parseYaml(content);
26
- const agents = data.agents;
27
- if (!agents || !agents[agent]) {
28
- return { O: 3, C: 3, E: 3, A: 3, N: 3 }; // Default neutral scores
29
- }
30
- const ocean = agents[agent].ocean;
31
- return ocean || { O: 3, C: 3, E: 3, A: 3, N: 3 };
32
- }
33
- // Chart configuration
34
- const VIEW_SIZE = 200;
35
- const CENTER_X = VIEW_SIZE / 2;
36
- const CENTER_Y = VIEW_SIZE / 2 + 8; // Shifted down to balance top/bottom margins
37
- const OUTER_RADIUS = 70; // Leaves room for labels
38
- const LABEL_RADIUS = OUTER_RADIUS + 18;
39
- // OCEAN dimension order (clockwise from top)
40
- const DIMENSIONS = ['O', 'C', 'E', 'A', 'N'];
41
- const DIMENSION_LABELS = {
42
- O: 'O',
43
- C: 'C',
44
- E: 'E',
45
- A: 'A',
46
- N: 'N',
47
- };
48
- // Role-specific colors (consistent across all charts for visual training)
49
- export const ROLE_COLORS = {
50
- orchestrator: '#f59e0b', // Amber
51
- sm: '#10b981', // Emerald
52
- tea: '#ef4444', // Red
53
- dev: '#3b82f6', // Blue
54
- reviewer: '#8b5cf6', // Purple
55
- architect: '#06b6d4', // Cyan
56
- pm: '#ec4899', // Pink
57
- 'tech-writer': '#84cc16', // Lime
58
- 'ux-designer': '#f97316', // Orange
59
- devops: '#6366f1', // Indigo
60
- };
61
- // Legacy overlay colors (for arbitrary comparisons)
62
- const OVERLAY_COLORS = [
63
- '#2563eb', // Blue
64
- '#dc2626', // Red
65
- '#16a34a', // Green
66
- '#9333ea', // Purple
67
- '#ea580c', // Orange
68
- ];
69
- // Background and styling (dark theme for consistent rendering)
70
- const BACKGROUND_COLOR = '#000000';
71
- const GRID_COLOR = '#374151';
72
- const AXIS_COLOR = '#4b5563';
73
- const LABEL_COLOR = '#e5e7eb';
74
- const DATA_STROKE_WIDTH = 2;
75
- const GRID_STROKE_WIDTH = 1;
76
- /**
77
- * Calculate point on pentagon for given dimension and score
78
- * @param dimensionIndex - Index 0-4 for O, C, E, A, N
79
- * @param score - Score 1-5
80
- * @param radius - Base radius to use
81
- */
82
- function getPoint(dimensionIndex, score, radius) {
83
- // Start from top (-90°), go clockwise
84
- // Each vertex is 72° apart (360° / 5)
85
- const angle = ((dimensionIndex * 72 - 90) * Math.PI) / 180;
86
- // Map score 1-5 to 20%-100% of radius
87
- const normalizedScore = 0.2 + ((score - 1) / 4) * 0.8;
88
- const r = radius * normalizedScore;
89
- return {
90
- x: CENTER_X + r * Math.cos(angle),
91
- y: CENTER_Y + r * Math.sin(angle),
92
- };
93
- }
94
- /**
95
- * Get vertex position (at full radius) for a dimension
96
- */
97
- function getVertex(dimensionIndex) {
98
- const angle = ((dimensionIndex * 72 - 90) * Math.PI) / 180;
99
- return {
100
- x: CENTER_X + OUTER_RADIUS * Math.cos(angle),
101
- y: CENTER_Y + OUTER_RADIUS * Math.sin(angle),
102
- };
103
- }
104
- /**
105
- * Get label position (outside the pentagon)
106
- */
107
- function getLabelPosition(dimensionIndex) {
108
- const angle = ((dimensionIndex * 72 - 90) * Math.PI) / 180;
109
- const x = CENTER_X + LABEL_RADIUS * Math.cos(angle);
110
- const y = CENTER_Y + LABEL_RADIUS * Math.sin(angle);
111
- // Text anchor depends on position
112
- let anchor = 'middle';
113
- if (dimensionIndex === 1 || dimensionIndex === 2)
114
- anchor = 'start'; // Right side
115
- if (dimensionIndex === 3 || dimensionIndex === 4)
116
- anchor = 'end'; // Left side
117
- return { x, y, anchor };
118
- }
119
- /**
120
- * Generate grid pentagon at a specific scale
121
- */
122
- function generateGridPolygon(scale) {
123
- const points = DIMENSIONS.map((_, i) => {
124
- const angle = ((i * 72 - 90) * Math.PI) / 180;
125
- const r = OUTER_RADIUS * scale;
126
- const x = CENTER_X + r * Math.cos(angle);
127
- const y = CENTER_Y + r * Math.sin(angle);
128
- return `${x.toFixed(1)},${y.toFixed(1)}`;
129
- }).join(' ');
130
- return `<polygon points="${points}" fill="none" stroke="${GRID_COLOR}" stroke-width="${GRID_STROKE_WIDTH}" />`;
131
- }
132
- /**
133
- * Generate axis line from center to vertex
134
- */
135
- function generateAxisLine(dimensionIndex) {
136
- const vertex = getVertex(dimensionIndex);
137
- return `<line x1="${CENTER_X}" y1="${CENTER_Y}" x2="${vertex.x.toFixed(1)}" y2="${vertex.y.toFixed(1)}" stroke="${AXIS_COLOR}" stroke-width="${GRID_STROKE_WIDTH}" />`;
138
- }
139
- /**
140
- * Generate dimension label
141
- */
142
- function generateLabel(dimensionIndex) {
143
- const pos = getLabelPosition(dimensionIndex);
144
- const label = DIMENSION_LABELS[DIMENSIONS[dimensionIndex]];
145
- // Adjust y for vertical centering
146
- const yOffset = dimensionIndex === 0 ? -4 : dimensionIndex === 2 || dimensionIndex === 3 ? 4 : 0;
147
- return `<text x="${pos.x.toFixed(1)}" y="${(pos.y + yOffset).toFixed(1)}" text-anchor="${pos.anchor}" font-family="sans-serif" font-size="12" font-weight="bold" fill="${LABEL_COLOR}">${label}</text>`;
148
- }
149
- /**
150
- * Generate data polygon from OCEAN scores
151
- */
152
- function generateDataPolygon(ocean, color = '#2563eb', strokeWidth = DATA_STROKE_WIDTH) {
153
- const points = DIMENSIONS.map((dim, i) => {
154
- const point = getPoint(i, ocean[dim], OUTER_RADIUS);
155
- return `${point.x.toFixed(1)},${point.y.toFixed(1)}`;
156
- }).join(' ');
157
- return `<polygon points="${points}" fill="none" stroke="${color}" stroke-width="${strokeWidth}" stroke-linejoin="round" />`;
158
- }
159
- /**
160
- * Generate SVG spider chart from OCEAN scores
161
- */
162
- export function generateSpiderFromOcean(ocean, color = '#2563eb') {
163
- // Grid pentagons at 20%, 40%, 60%, 80%, 100%
164
- const gridPolygons = [0.2, 0.4, 0.6, 0.8, 1.0]
165
- .map((scale) => generateGridPolygon(scale))
166
- .join('\n ');
167
- // Axis lines
168
- const axisLines = DIMENSIONS.map((_, i) => generateAxisLine(i)).join('\n ');
169
- // Dimension labels
170
- const labels = DIMENSIONS.map((_, i) => generateLabel(i)).join('\n ');
171
- // Data polygon
172
- const dataPolygon = generateDataPolygon(ocean, color);
173
- return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${VIEW_SIZE} ${VIEW_SIZE}">
174
- <!-- Background -->
175
- <rect width="${VIEW_SIZE}" height="${VIEW_SIZE}" fill="${BACKGROUND_COLOR}" />
176
-
177
- <!-- Grid -->
178
- ${gridPolygons}
179
-
180
- <!-- Axes -->
181
- ${axisLines}
182
-
183
- <!-- Data -->
184
- ${dataPolygon}
185
-
186
- <!-- Labels -->
187
- ${labels}
188
- </svg>`;
189
- }
190
- /**
191
- * Generate SVG spider chart from theme and agent
192
- * Uses role-specific color for consistent visual training
193
- */
194
- export function generateSpider(theme, agent) {
195
- const ocean = loadThemeOcean(theme, agent);
196
- const color = ROLE_COLORS[agent] || '#2563eb';
197
- return generateSpiderFromOcean(ocean, color);
198
- }
199
- /**
200
- * Format theme name for display
201
- */
202
- function formatThemeName(theme) {
203
- return theme
204
- .split('-')
205
- .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
206
- .join(' ');
207
- }
208
- /**
209
- * Generate legend item
210
- */
211
- function generateLegendItem(index, label, color, yOffset) {
212
- const x = 10;
213
- const y = VIEW_SIZE - 10 - yOffset;
214
- return `<rect x="${x}" y="${y - 8}" width="12" height="12" fill="none" stroke="${color}" stroke-width="2" />
215
- <text x="${x + 16}" y="${y}" font-family="sans-serif" font-size="10" fill="${LABEL_COLOR}">${label}</text>`;
216
- }
217
- /**
218
- * Generate overlay spider chart comparing multiple characters
219
- */
220
- export function generateOverlaySpider(characters) {
221
- // Grid pentagons
222
- const gridPolygons = [0.2, 0.4, 0.6, 0.8, 1.0]
223
- .map((scale) => generateGridPolygon(scale))
224
- .join('\n ');
225
- // Axis lines
226
- const axisLines = DIMENSIONS.map((_, i) => generateAxisLine(i)).join('\n ');
227
- // Dimension labels
228
- const labels = DIMENSIONS.map((_, i) => generateLabel(i)).join('\n ');
229
- // Data polygons for each character
230
- const dataPolygons = characters
231
- .map((char, index) => {
232
- const ocean = loadThemeOcean(char.theme, char.agent);
233
- const color = OVERLAY_COLORS[index % OVERLAY_COLORS.length];
234
- return generateDataPolygon(ocean, color);
235
- })
236
- .join('\n ');
237
- // Legend items
238
- const legendItems = characters
239
- .map((char, index) => {
240
- const color = OVERLAY_COLORS[index % OVERLAY_COLORS.length];
241
- const label = char.label || `${formatThemeName(char.theme)} (${char.agent})`;
242
- const yOffset = (characters.length - 1 - index) * 16;
243
- return generateLegendItem(index, label, color, yOffset);
244
- })
245
- .join('\n ');
246
- return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${VIEW_SIZE} ${VIEW_SIZE}">
247
- <!-- Background -->
248
- <rect width="${VIEW_SIZE}" height="${VIEW_SIZE}" fill="${BACKGROUND_COLOR}" />
249
-
250
- <!-- Grid -->
251
- ${gridPolygons}
252
-
253
- <!-- Axes -->
254
- ${axisLines}
255
-
256
- <!-- Data -->
257
- ${dataPolygons}
258
-
259
- <!-- Labels -->
260
- ${labels}
261
-
262
- <!-- Legend -->
263
- ${legendItems}
264
- </svg>`;
265
- }
266
- // Agent order for team overlay (matches AGENTS in generate-all-spiders.ts)
267
- const TEAM_AGENTS = [
268
- 'orchestrator',
269
- 'sm',
270
- 'tea',
271
- 'dev',
272
- 'reviewer',
273
- 'architect',
274
- 'pm',
275
- 'tech-writer',
276
- 'ux-designer',
277
- 'devops',
278
- ];
279
- // Human-readable agent names for legend (reserved for future use)
280
- const _AGENT_DISPLAY_NAMES = {
281
- orchestrator: 'Orch',
282
- sm: 'SM',
283
- tea: 'TEA',
284
- dev: 'Dev',
285
- reviewer: 'Rev',
286
- architect: 'Arch',
287
- pm: 'PM',
288
- 'tech-writer': 'TW',
289
- 'ux-designer': 'UX',
290
- devops: 'Ops',
291
- };
292
- // Tactical agents get emphasized (thicker stroke) in team overlays
293
- const TACTICAL_AGENTS = new Set(['sm', 'tea', 'dev', 'reviewer']);
294
- const TACTICAL_STROKE_WIDTH = 2.5;
295
- const STRATEGIC_STROKE_WIDTH = 1;
296
- /**
297
- * Generate team overlay spider chart showing all 10 agents for a theme
298
- * Uses role-specific colors for consistent visual training
299
- */
300
- export function generateTeamOverlay(theme) {
301
- // Grid pentagons
302
- const gridPolygons = [0.2, 0.4, 0.6, 0.8, 1.0]
303
- .map((scale) => generateGridPolygon(scale))
304
- .join('\n ');
305
- // Axis lines
306
- const axisLines = TEAM_AGENTS.slice(0, 5)
307
- .map((_, i) => generateAxisLine(i))
308
- .join('\n ');
309
- // Dimension labels
310
- const labels = DIMENSIONS.map((_, i) => generateLabel(i)).join('\n ');
311
- // Data polygons for each agent (using role colors)
312
- // Tactical agents (sm, tea, dev, reviewer) emphasized with thicker strokes
313
- // Strategic/support agents de-emphasized with thinner strokes
314
- const dataPolygons = TEAM_AGENTS.map((agent) => {
315
- const ocean = loadThemeOcean(theme, agent);
316
- const color = ROLE_COLORS[agent];
317
- const strokeWidth = TACTICAL_AGENTS.has(agent) ? TACTICAL_STROKE_WIDTH : STRATEGIC_STROKE_WIDTH;
318
- return generateDataPolygon(ocean, color, strokeWidth);
319
- }).join('\n ');
320
- // Legend removed - color key is in markdown header
321
- return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${VIEW_SIZE} ${VIEW_SIZE}">
322
- <!-- Background -->
323
- <rect width="${VIEW_SIZE}" height="${VIEW_SIZE}" fill="${BACKGROUND_COLOR}" />
324
-
325
- <!-- Grid -->
326
- ${gridPolygons}
327
-
328
- <!-- Axes -->
329
- ${axisLines}
330
-
331
- <!-- Data -->
332
- ${dataPolygons}
333
-
334
- <!-- Labels -->
335
- ${labels}
336
- </svg>`;
337
- }
338
- //# sourceMappingURL=generate-spider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-spider.js","sourceRoot":"","sources":["../../src/scripts/generate-spider.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Tests for Story 11-10: Build OCEAN Spider Chart Generator
3
- *
4
- * These tests verify:
5
- * AC1: scripts/generate-spider.ts functional (module exists and exports work)
6
- * AC2: Takes theme + agent as input, outputs SVG
7
- * AC3: Spider charts clearly show all 5 OCEAN dimensions
8
- * AC4: Overlay mode compares 2-3 characters on same chart
9
- * AC5: SVGs render correctly in browsers and markdown (valid SVG structure)
10
- *
11
- * Run with: npm test
12
- */
13
- export {};
14
- //# sourceMappingURL=generate-spider.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-spider.test.d.ts","sourceRoot":"","sources":["../../src/scripts/generate-spider.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
@@ -1,271 +0,0 @@
1
- /**
2
- * Tests for Story 11-10: Build OCEAN Spider Chart Generator
3
- *
4
- * These tests verify:
5
- * AC1: scripts/generate-spider.ts functional (module exists and exports work)
6
- * AC2: Takes theme + agent as input, outputs SVG
7
- * AC3: Spider charts clearly show all 5 OCEAN dimensions
8
- * AC4: Overlay mode compares 2-3 characters on same chart
9
- * AC5: SVGs render correctly in browsers and markdown (valid SVG structure)
10
- *
11
- * Run with: npm test
12
- */
13
- import { describe, it } from 'node:test';
14
- import assert from 'node:assert';
15
- // ============================================================================
16
- // AC1: scripts/generate-spider.ts functional
17
- // ============================================================================
18
- describe('AC1: Spider Chart Module Exists and Exports', () => {
19
- it('should export generateSpider function', async () => {
20
- const module = await import('./generate-spider.js');
21
- assert.ok(typeof module.generateSpider === 'function', 'generateSpider should be a function');
22
- });
23
- it('should export generateSpiderFromOcean function for direct OCEAN input', async () => {
24
- const module = await import('./generate-spider.js');
25
- assert.ok(typeof module.generateSpiderFromOcean === 'function', 'generateSpiderFromOcean should be a function');
26
- });
27
- it('should export generateOverlaySpider function for comparison mode', async () => {
28
- const module = await import('./generate-spider.js');
29
- assert.ok(typeof module.generateOverlaySpider === 'function', 'generateOverlaySpider should be a function');
30
- });
31
- });
32
- // ============================================================================
33
- // AC2: Takes theme + agent as input, outputs SVG
34
- // ============================================================================
35
- describe('AC2: Theme + Agent Input -> SVG Output', () => {
36
- it('should generate SVG string from theme and agent', async () => {
37
- const { generateSpider } = await import('./generate-spider.js');
38
- const svg = generateSpider('deadwood', 'sm');
39
- assert.ok(typeof svg === 'string', 'Should return string');
40
- assert.ok(svg.includes('<svg'), 'Should contain SVG opening tag');
41
- assert.ok(svg.includes('</svg>'), 'Should contain SVG closing tag');
42
- });
43
- it('should work for all 10 agent roles', async () => {
44
- const { generateSpider } = await import('./generate-spider.js');
45
- const roles = [
46
- 'orchestrator',
47
- 'sm',
48
- 'tea',
49
- 'dev',
50
- 'reviewer',
51
- 'architect',
52
- 'pm',
53
- 'tech-writer',
54
- 'ux-designer',
55
- 'devops',
56
- ];
57
- for (const role of roles) {
58
- const svg = generateSpider('deadwood', role);
59
- assert.ok(svg.includes('<svg'), `Should generate SVG for ${role}`);
60
- }
61
- });
62
- it('should throw ENOENT for non-existent theme', async () => {
63
- const { generateSpider } = await import('./generate-spider.js');
64
- assert.throws(() => generateSpider('nonexistent-theme', 'sm'), /ENOENT/, 'Should throw ENOENT for missing theme file');
65
- });
66
- it('should return default OCEAN scores for non-existent agent', async () => {
67
- const { generateSpider } = await import('./generate-spider.js');
68
- // Non-existent agents get default neutral scores (3,3,3,3,3) rather than error
69
- const svg = generateSpider('deadwood', 'nonexistent-agent');
70
- assert.ok(svg.includes('<svg'), 'Should generate SVG with default scores');
71
- });
72
- it('should accept OCEAN scores directly via generateSpiderFromOcean', async () => {
73
- const { generateSpiderFromOcean } = await import('./generate-spider.js');
74
- const svg = generateSpiderFromOcean({ O: 3, C: 4, E: 2, A: 5, N: 1 });
75
- assert.ok(typeof svg === 'string', 'Should return string');
76
- assert.ok(svg.includes('<svg'), 'Should contain SVG opening tag');
77
- });
78
- });
79
- // ============================================================================
80
- // AC3: Spider charts clearly show all 5 OCEAN dimensions
81
- // ============================================================================
82
- describe('AC3: Pentagon Structure with 5 OCEAN Dimensions', () => {
83
- it('should generate a polygon element for the data', async () => {
84
- const { generateSpider } = await import('./generate-spider.js');
85
- const svg = generateSpider('deadwood', 'sm');
86
- assert.ok(svg.includes('<polygon') || svg.includes('<path'), 'Should contain polygon or path element for data shape');
87
- });
88
- it('should label all 5 OCEAN dimensions', async () => {
89
- const { generateSpider } = await import('./generate-spider.js');
90
- const svg = generateSpider('deadwood', 'sm');
91
- // Check for dimension labels (as text elements or in comments)
92
- const hasO = svg.includes('>O<') || svg.includes('"O"') || svg.includes('Openness');
93
- const hasC = svg.includes('>C<') || svg.includes('"C"') || svg.includes('Conscientiousness');
94
- const hasE = svg.includes('>E<') || svg.includes('"E"') || svg.includes('Extraversion');
95
- const hasA = svg.includes('>A<') || svg.includes('"A"') || svg.includes('Agreeableness');
96
- const hasN = svg.includes('>N<') || svg.includes('"N"') || svg.includes('Neuroticism');
97
- assert.ok(hasO, 'Should label Openness dimension');
98
- assert.ok(hasC, 'Should label Conscientiousness dimension');
99
- assert.ok(hasE, 'Should label Extraversion dimension');
100
- assert.ok(hasA, 'Should label Agreeableness dimension');
101
- assert.ok(hasN, 'Should label Neuroticism dimension');
102
- });
103
- it('should include grid lines for reference (5 levels)', async () => {
104
- const { generateSpider } = await import('./generate-spider.js');
105
- const svg = generateSpider('deadwood', 'sm');
106
- // Grid lines create concentric pentagons
107
- // Count polygon/path elements - should have at least 5 for grid + 1 for data
108
- const polygonCount = (svg.match(/<polygon/g) || []).length;
109
- const pathCount = (svg.match(/<path/g) || []).length;
110
- // Grid could be polygons or paths - at minimum should have grid structure
111
- assert.ok(polygonCount >= 1 || pathCount >= 5, 'Should have grid lines (pentagons or paths for 5 levels)');
112
- });
113
- it('should have 5 axis lines from center to vertices', async () => {
114
- const { generateSpider } = await import('./generate-spider.js');
115
- const svg = generateSpider('deadwood', 'sm');
116
- // Axis lines are typically <line> elements
117
- const lineCount = (svg.match(/<line/g) || []).length;
118
- assert.ok(lineCount >= 5, `Should have at least 5 axis lines, found ${lineCount}`);
119
- });
120
- it('should use unfilled polygon (stroke only, no fill)', async () => {
121
- const { generateSpider } = await import('./generate-spider.js');
122
- const svg = generateSpider('deadwood', 'sm');
123
- // The data polygon should have fill="none" or no fill
124
- // Looking for the data polygon specifically (not grid lines)
125
- assert.ok(svg.includes('fill="none"') || !svg.includes('fill="'), 'Data polygon should be unfilled (stroke only)');
126
- });
127
- it('should map score 1 to 20% radius and score 5 to 100% radius', async () => {
128
- const { generateSpiderFromOcean } = await import('./generate-spider.js');
129
- // Generate with all 1s - polygon should be small (inner)
130
- const small = generateSpiderFromOcean({ O: 1, C: 1, E: 1, A: 1, N: 1 });
131
- // Generate with all 5s - polygon should be large (outer)
132
- const large = generateSpiderFromOcean({ O: 5, C: 5, E: 5, A: 5, N: 5 });
133
- // SVGs should be different (different polygon sizes)
134
- assert.notStrictEqual(small, large, 'Score 1-1-1-1-1 and 5-5-5-5-5 should produce different polygons');
135
- });
136
- });
137
- // ============================================================================
138
- // AC4: Overlay mode compares 2-3 characters on same chart
139
- // ============================================================================
140
- describe('AC4: Overlay Mode for Character Comparison', () => {
141
- it('should accept array of theme+agent pairs for overlay', async () => {
142
- const { generateOverlaySpider } = await import('./generate-spider.js');
143
- const svg = generateOverlaySpider([
144
- { theme: 'deadwood', agent: 'sm' },
145
- { theme: 'firefly', agent: 'sm' },
146
- ]);
147
- assert.ok(typeof svg === 'string', 'Should return string');
148
- assert.ok(svg.includes('<svg'), 'Should contain SVG');
149
- });
150
- it('should render 2 distinct polygons for 2 characters', async () => {
151
- const { generateOverlaySpider } = await import('./generate-spider.js');
152
- const svg = generateOverlaySpider([
153
- { theme: 'deadwood', agent: 'sm' },
154
- { theme: 'firefly', agent: 'sm' },
155
- ]);
156
- // Count data polygons (excluding grid)
157
- // Grid lines typically have a specific class or lighter stroke
158
- const polygonMatches = svg.match(/<polygon[^>]*>/g) || [];
159
- const pathMatches = svg.match(/<path[^>]*d="M[^"]*"[^>]*>/g) || [];
160
- // Should have at least 2 data shapes
161
- assert.ok(polygonMatches.length >= 2 || pathMatches.length >= 2, 'Should have at least 2 data polygons for comparison');
162
- });
163
- it('should render 3 distinct polygons for 3 characters', async () => {
164
- const { generateOverlaySpider } = await import('./generate-spider.js');
165
- const svg = generateOverlaySpider([
166
- { theme: 'deadwood', agent: 'sm' },
167
- { theme: 'firefly', agent: 'sm' },
168
- { theme: 'star-trek-tng', agent: 'sm' },
169
- ]);
170
- // Should have at least 3 data shapes
171
- const polygonMatches = svg.match(/<polygon[^>]*>/g) || [];
172
- const pathMatches = svg.match(/<path[^>]*d="M[^"]*"[^>]*>/g) || [];
173
- assert.ok(polygonMatches.length >= 3 || pathMatches.length >= 3, 'Should have at least 3 data polygons for comparison');
174
- });
175
- it('should use different stroke colors for each character', async () => {
176
- const { generateOverlaySpider } = await import('./generate-spider.js');
177
- const svg = generateOverlaySpider([
178
- { theme: 'deadwood', agent: 'sm' },
179
- { theme: 'firefly', agent: 'sm' },
180
- ]);
181
- // Extract stroke colors - should find at least 2 different colors
182
- const strokeColors = svg.match(/stroke="([^"]+)"/g) || [];
183
- const uniqueColors = new Set(strokeColors);
184
- assert.ok(uniqueColors.size >= 2, 'Should use different stroke colors for different characters');
185
- });
186
- it('should include legend identifying each character', async () => {
187
- const { generateOverlaySpider } = await import('./generate-spider.js');
188
- const svg = generateOverlaySpider([
189
- { theme: 'deadwood', agent: 'sm' },
190
- { theme: 'firefly', agent: 'sm' },
191
- ]);
192
- // Legend should include theme or character names
193
- assert.ok(svg.includes('deadwood') || svg.includes('Deadwood') ||
194
- svg.includes('firefly') || svg.includes('Firefly'), 'Should include legend with theme/character names');
195
- });
196
- it('should accept optional labels for overlay characters', async () => {
197
- const { generateOverlaySpider } = await import('./generate-spider.js');
198
- const svg = generateOverlaySpider([
199
- { theme: 'deadwood', agent: 'sm', label: 'Al Swearengen' },
200
- { theme: 'firefly', agent: 'sm', label: 'Mal Reynolds' },
201
- ]);
202
- assert.ok(svg.includes('Al Swearengen') || svg.includes('Mal Reynolds'), 'Should display custom labels when provided');
203
- });
204
- });
205
- // ============================================================================
206
- // AC5: SVGs render correctly in browsers and markdown
207
- // ============================================================================
208
- describe('AC5: Valid SVG Structure', () => {
209
- it('should include viewBox attribute for scaling', async () => {
210
- const { generateSpider } = await import('./generate-spider.js');
211
- const svg = generateSpider('deadwood', 'sm');
212
- assert.ok(svg.includes('viewBox='), 'Should have viewBox attribute for proper scaling');
213
- });
214
- it('should include xmlns attribute for browser compatibility', async () => {
215
- const { generateSpider } = await import('./generate-spider.js');
216
- const svg = generateSpider('deadwood', 'sm');
217
- assert.ok(svg.includes('xmlns="http://www.w3.org/2000/svg"'), 'Should have SVG xmlns for browser rendering');
218
- });
219
- it('should be well-formed XML', async () => {
220
- const { generateSpider } = await import('./generate-spider.js');
221
- const svg = generateSpider('deadwood', 'sm');
222
- assert.ok(svg.startsWith('<svg'), 'Should start with <svg');
223
- assert.ok(svg.endsWith('</svg>'), 'Should end with </svg>');
224
- });
225
- it('should use text elements for dimension labels', async () => {
226
- const { generateSpider } = await import('./generate-spider.js');
227
- const svg = generateSpider('deadwood', 'sm');
228
- const textCount = (svg.match(/<text/g) || []).length;
229
- assert.ok(textCount >= 5, `Should have at least 5 text elements for labels, found ${textCount}`);
230
- });
231
- it('should have consistent stroke styling', async () => {
232
- const { generateSpider } = await import('./generate-spider.js');
233
- const svg = generateSpider('deadwood', 'sm');
234
- assert.ok(svg.includes('stroke='), 'Should use stroke for lines');
235
- assert.ok(svg.includes('stroke-width'), 'Should specify stroke-width');
236
- });
237
- it('should use 200x200 viewBox like face generator', async () => {
238
- const { generateSpider } = await import('./generate-spider.js');
239
- const svg = generateSpider('deadwood', 'sm');
240
- assert.ok(svg.includes('viewBox="0 0 200 200"'), 'Should use 200x200 viewBox for consistency with face generator');
241
- });
242
- });
243
- // ============================================================================
244
- // Integration: Full Pipeline Test
245
- // ============================================================================
246
- describe('Integration: Spider Chart Generation Pipeline', () => {
247
- it('should generate valid SVG for multiple themes', async () => {
248
- const { generateSpider } = await import('./generate-spider.js');
249
- const themes = ['deadwood', 'firefly', 'star-trek-tng', 'discworld'];
250
- for (const theme of themes) {
251
- const svg = generateSpider(theme, 'sm');
252
- assert.ok(svg.includes('<svg') && svg.includes('</svg>'), `Should generate valid SVG for ${theme}`);
253
- }
254
- });
255
- it('should produce visually different charts for different OCEAN profiles', async () => {
256
- const { generateSpiderFromOcean } = await import('./generate-spider.js');
257
- const introvert = generateSpiderFromOcean({ O: 4, C: 3, E: 1, A: 3, N: 2 });
258
- const extravert = generateSpiderFromOcean({ O: 4, C: 3, E: 5, A: 3, N: 2 });
259
- assert.notStrictEqual(introvert, extravert, 'Different E scores should produce different charts');
260
- });
261
- it('should work with overlay of same agent across themes', async () => {
262
- const { generateOverlaySpider } = await import('./generate-spider.js');
263
- const svg = generateOverlaySpider([
264
- { theme: 'deadwood', agent: 'reviewer' },
265
- { theme: 'firefly', agent: 'reviewer' },
266
- { theme: 'star-trek-tng', agent: 'reviewer' },
267
- ]);
268
- assert.ok(svg.includes('<svg') && svg.includes('</svg>'), 'Should generate valid overlay SVG');
269
- });
270
- });
271
- //# sourceMappingURL=generate-spider.test.js.map