@pennyfarthing/core 7.4.0 → 7.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (369) hide show
  1. package/dist/cli/utils/files.d.ts +0 -1
  2. package/dist/cli/utils/files.js +73 -56
  3. package/dist/cli/utils/manifest.d.ts +0 -1
  4. package/dist/cli/utils/manifest.js +48 -45
  5. package/dist/cli/utils/version.d.ts +0 -1
  6. package/dist/cli/utils/version.js +38 -32
  7. package/dist/index.d.ts +0 -1
  8. package/dist/index.js +39 -11
  9. package/dist/permissions/index.d.ts +0 -1
  10. package/dist/permissions/index.js +7 -4
  11. package/dist/permissions/permission-schema.d.ts +0 -1
  12. package/dist/permissions/permission-schema.js +13 -9
  13. package/dist/scripts/job-fair-aggregator.d.ts +0 -1
  14. package/dist/scripts/job-fair-aggregator.js +484 -341
  15. package/dist/workflow/index.d.ts +0 -1
  16. package/dist/workflow/index.js +12 -5
  17. package/dist/workflow/workflow-loader.d.ts +0 -1
  18. package/dist/workflow/workflow-loader.js +40 -34
  19. package/dist/workflow/workflow-permissions.d.ts +0 -1
  20. package/dist/workflow/workflow-permissions.js +14 -8
  21. package/dist/workflow/workflow-router.d.ts +0 -1
  22. package/dist/workflow/workflow-router.js +70 -51
  23. package/dist/workflow/workflow-schema.d.ts +0 -1
  24. package/dist/workflow/workflow-schema.js +62 -59
  25. package/package.json +1 -1
  26. package/dist/bmad/context-reader.d.ts +0 -71
  27. package/dist/bmad/context-reader.d.ts.map +0 -1
  28. package/dist/bmad/context-reader.js +0 -369
  29. package/dist/bmad/context-reader.js.map +0 -1
  30. package/dist/bmad/context-reader.test.d.ts +0 -71
  31. package/dist/bmad/context-reader.test.d.ts.map +0 -1
  32. package/dist/bmad/context-reader.test.js +0 -878
  33. package/dist/bmad/context-reader.test.js.map +0 -1
  34. package/dist/bmad/epics-parser.d.ts +0 -61
  35. package/dist/bmad/epics-parser.d.ts.map +0 -1
  36. package/dist/bmad/epics-parser.js +0 -331
  37. package/dist/bmad/epics-parser.js.map +0 -1
  38. package/dist/bmad/epics-parser.test.d.ts +0 -7
  39. package/dist/bmad/epics-parser.test.d.ts.map +0 -1
  40. package/dist/bmad/epics-parser.test.js +0 -449
  41. package/dist/bmad/epics-parser.test.js.map +0 -1
  42. package/dist/bmad/index.d.ts +0 -11
  43. package/dist/bmad/index.d.ts.map +0 -1
  44. package/dist/bmad/index.js +0 -24
  45. package/dist/bmad/index.js.map +0 -1
  46. package/dist/bmad/status-sync.d.ts +0 -173
  47. package/dist/bmad/status-sync.d.ts.map +0 -1
  48. package/dist/bmad/status-sync.js +0 -463
  49. package/dist/bmad/status-sync.js.map +0 -1
  50. package/dist/bmad/status-sync.test.d.ts +0 -7
  51. package/dist/bmad/status-sync.test.d.ts.map +0 -1
  52. package/dist/bmad/status-sync.test.js +0 -702
  53. package/dist/bmad/status-sync.test.js.map +0 -1
  54. package/dist/bmad/story-exporter.d.ts +0 -55
  55. package/dist/bmad/story-exporter.d.ts.map +0 -1
  56. package/dist/bmad/story-exporter.js +0 -170
  57. package/dist/bmad/story-exporter.js.map +0 -1
  58. package/dist/bmad/story-exporter.test.d.ts +0 -51
  59. package/dist/bmad/story-exporter.test.d.ts.map +0 -1
  60. package/dist/bmad/story-exporter.test.js +0 -603
  61. package/dist/bmad/story-exporter.test.js.map +0 -1
  62. package/dist/bmad/story-parser.d.ts +0 -44
  63. package/dist/bmad/story-parser.d.ts.map +0 -1
  64. package/dist/bmad/story-parser.js +0 -307
  65. package/dist/bmad/story-parser.js.map +0 -1
  66. package/dist/bmad/story-parser.test.d.ts +0 -44
  67. package/dist/bmad/story-parser.test.d.ts.map +0 -1
  68. package/dist/bmad/story-parser.test.js +0 -693
  69. package/dist/bmad/story-parser.test.js.map +0 -1
  70. package/dist/cli/commands/command.d.ts +0 -28
  71. package/dist/cli/commands/command.d.ts.map +0 -1
  72. package/dist/cli/commands/command.js +0 -399
  73. package/dist/cli/commands/command.js.map +0 -1
  74. package/dist/cli/commands/cyclist.d.ts +0 -46
  75. package/dist/cli/commands/cyclist.d.ts.map +0 -1
  76. package/dist/cli/commands/cyclist.js +0 -196
  77. package/dist/cli/commands/cyclist.js.map +0 -1
  78. package/dist/cli/commands/cyclist.test.d.ts +0 -13
  79. package/dist/cli/commands/cyclist.test.d.ts.map +0 -1
  80. package/dist/cli/commands/cyclist.test.js +0 -245
  81. package/dist/cli/commands/cyclist.test.js.map +0 -1
  82. package/dist/cli/commands/doctor.d.ts +0 -9
  83. package/dist/cli/commands/doctor.d.ts.map +0 -1
  84. package/dist/cli/commands/doctor.js +0 -652
  85. package/dist/cli/commands/doctor.js.map +0 -1
  86. package/dist/cli/commands/init.d.ts +0 -8
  87. package/dist/cli/commands/init.d.ts.map +0 -1
  88. package/dist/cli/commands/init.js +0 -524
  89. package/dist/cli/commands/init.js.map +0 -1
  90. package/dist/cli/commands/skill.d.ts +0 -28
  91. package/dist/cli/commands/skill.d.ts.map +0 -1
  92. package/dist/cli/commands/skill.js +0 -416
  93. package/dist/cli/commands/skill.js.map +0 -1
  94. package/dist/cli/commands/theme.d.ts +0 -21
  95. package/dist/cli/commands/theme.d.ts.map +0 -1
  96. package/dist/cli/commands/theme.js +0 -201
  97. package/dist/cli/commands/theme.js.map +0 -1
  98. package/dist/cli/commands/uninstall.d.ts +0 -8
  99. package/dist/cli/commands/uninstall.d.ts.map +0 -1
  100. package/dist/cli/commands/uninstall.js +0 -237
  101. package/dist/cli/commands/uninstall.js.map +0 -1
  102. package/dist/cli/commands/update.d.ts +0 -9
  103. package/dist/cli/commands/update.d.ts.map +0 -1
  104. package/dist/cli/commands/update.js +0 -418
  105. package/dist/cli/commands/update.js.map +0 -1
  106. package/dist/cli/commands/version.d.ts +0 -2
  107. package/dist/cli/commands/version.d.ts.map +0 -1
  108. package/dist/cli/commands/version.js +0 -28
  109. package/dist/cli/commands/version.js.map +0 -1
  110. package/dist/cli/customization.test.d.ts +0 -12
  111. package/dist/cli/customization.test.d.ts.map +0 -1
  112. package/dist/cli/customization.test.js +0 -84
  113. package/dist/cli/customization.test.js.map +0 -1
  114. package/dist/cli/cyclist-migration.test.d.ts +0 -16
  115. package/dist/cli/cyclist-migration.test.d.ts.map +0 -1
  116. package/dist/cli/cyclist-migration.test.js +0 -225
  117. package/dist/cli/cyclist-migration.test.js.map +0 -1
  118. package/dist/cli/index.d.ts +0 -3
  119. package/dist/cli/index.d.ts.map +0 -1
  120. package/dist/cli/index.js +0 -174
  121. package/dist/cli/index.js.map +0 -1
  122. package/dist/cli/ocean-profiles.test.d.ts +0 -13
  123. package/dist/cli/ocean-profiles.test.d.ts.map +0 -1
  124. package/dist/cli/ocean-profiles.test.js +0 -134
  125. package/dist/cli/ocean-profiles.test.js.map +0 -1
  126. package/dist/cli/theme-maker.test.d.ts +0 -11
  127. package/dist/cli/theme-maker.test.d.ts.map +0 -1
  128. package/dist/cli/theme-maker.test.js +0 -356
  129. package/dist/cli/theme-maker.test.js.map +0 -1
  130. package/dist/cli/utils/constants.d.ts +0 -66
  131. package/dist/cli/utils/constants.d.ts.map +0 -1
  132. package/dist/cli/utils/constants.js +0 -54
  133. package/dist/cli/utils/constants.js.map +0 -1
  134. package/dist/cli/utils/files.d.ts.map +0 -1
  135. package/dist/cli/utils/files.js.map +0 -1
  136. package/dist/cli/utils/logger.d.ts +0 -26
  137. package/dist/cli/utils/logger.d.ts.map +0 -1
  138. package/dist/cli/utils/logger.js +0 -88
  139. package/dist/cli/utils/logger.js.map +0 -1
  140. package/dist/cli/utils/manifest.d.ts.map +0 -1
  141. package/dist/cli/utils/manifest.js.map +0 -1
  142. package/dist/cli/utils/node-modules.d.ts +0 -6
  143. package/dist/cli/utils/node-modules.d.ts.map +0 -1
  144. package/dist/cli/utils/node-modules.js +0 -31
  145. package/dist/cli/utils/node-modules.js.map +0 -1
  146. package/dist/cli/utils/prompts.d.ts +0 -34
  147. package/dist/cli/utils/prompts.d.ts.map +0 -1
  148. package/dist/cli/utils/prompts.js +0 -93
  149. package/dist/cli/utils/prompts.js.map +0 -1
  150. package/dist/cli/utils/symlinks.d.ts +0 -29
  151. package/dist/cli/utils/symlinks.d.ts.map +0 -1
  152. package/dist/cli/utils/symlinks.js +0 -181
  153. package/dist/cli/utils/symlinks.js.map +0 -1
  154. package/dist/cli/utils/themes.d.ts +0 -101
  155. package/dist/cli/utils/themes.d.ts.map +0 -1
  156. package/dist/cli/utils/themes.js +0 -373
  157. package/dist/cli/utils/themes.js.map +0 -1
  158. package/dist/cli/utils/themes.test.d.ts +0 -12
  159. package/dist/cli/utils/themes.test.d.ts.map +0 -1
  160. package/dist/cli/utils/themes.test.js +0 -147
  161. package/dist/cli/utils/themes.test.js.map +0 -1
  162. package/dist/cli/utils/version.d.ts.map +0 -1
  163. package/dist/cli/utils/version.js.map +0 -1
  164. package/dist/cli/workspace.test.d.ts +0 -8
  165. package/dist/cli/workspace.test.d.ts.map +0 -1
  166. package/dist/cli/workspace.test.js +0 -151
  167. package/dist/cli/workspace.test.js.map +0 -1
  168. package/dist/index.d.ts.map +0 -1
  169. package/dist/index.js.map +0 -1
  170. package/dist/jira/jira-epic-creation.d.ts +0 -109
  171. package/dist/jira/jira-epic-creation.d.ts.map +0 -1
  172. package/dist/jira/jira-epic-creation.js +0 -253
  173. package/dist/jira/jira-epic-creation.js.map +0 -1
  174. package/dist/jira/jira-epic-creation.test.d.ts +0 -16
  175. package/dist/jira/jira-epic-creation.test.d.ts.map +0 -1
  176. package/dist/jira/jira-epic-creation.test.js +0 -387
  177. package/dist/jira/jira-epic-creation.test.js.map +0 -1
  178. package/dist/jira/jira-sprint-sync.d.ts +0 -247
  179. package/dist/jira/jira-sprint-sync.d.ts.map +0 -1
  180. package/dist/jira/jira-sprint-sync.js +0 -670
  181. package/dist/jira/jira-sprint-sync.js.map +0 -1
  182. package/dist/jira/jira-sprint-sync.test.d.ts +0 -16
  183. package/dist/jira/jira-sprint-sync.test.d.ts.map +0 -1
  184. package/dist/jira/jira-sprint-sync.test.js +0 -845
  185. package/dist/jira/jira-sprint-sync.test.js.map +0 -1
  186. package/dist/permissions/index.d.ts.map +0 -1
  187. package/dist/permissions/index.js.map +0 -1
  188. package/dist/permissions/permission-schema.d.ts.map +0 -1
  189. package/dist/permissions/permission-schema.js.map +0 -1
  190. package/dist/permissions/permission-schema.test.d.ts +0 -40
  191. package/dist/permissions/permission-schema.test.d.ts.map +0 -1
  192. package/dist/permissions/permission-schema.test.js +0 -367
  193. package/dist/permissions/permission-schema.test.js.map +0 -1
  194. package/dist/scripts/add-ocean-profiles.d.ts +0 -9
  195. package/dist/scripts/add-ocean-profiles.d.ts.map +0 -1
  196. package/dist/scripts/add-ocean-profiles.js +0 -695
  197. package/dist/scripts/add-ocean-profiles.js.map +0 -1
  198. package/dist/scripts/benchmark-integration.d.ts +0 -182
  199. package/dist/scripts/benchmark-integration.d.ts.map +0 -1
  200. package/dist/scripts/benchmark-integration.js +0 -691
  201. package/dist/scripts/benchmark-integration.js.map +0 -1
  202. package/dist/scripts/benchmark-integration.test.d.ts +0 -13
  203. package/dist/scripts/benchmark-integration.test.d.ts.map +0 -1
  204. package/dist/scripts/benchmark-integration.test.js +0 -680
  205. package/dist/scripts/benchmark-integration.test.js.map +0 -1
  206. package/dist/scripts/debugging-scenarios.test.d.ts +0 -18
  207. package/dist/scripts/debugging-scenarios.test.d.ts.map +0 -1
  208. package/dist/scripts/debugging-scenarios.test.js +0 -317
  209. package/dist/scripts/debugging-scenarios.test.js.map +0 -1
  210. package/dist/scripts/generate-all-spiders.d.ts +0 -10
  211. package/dist/scripts/generate-all-spiders.d.ts.map +0 -1
  212. package/dist/scripts/generate-all-spiders.js +0 -306
  213. package/dist/scripts/generate-all-spiders.js.map +0 -1
  214. package/dist/scripts/generate-report.d.ts +0 -65
  215. package/dist/scripts/generate-report.d.ts.map +0 -1
  216. package/dist/scripts/generate-report.js +0 -378
  217. package/dist/scripts/generate-report.js.map +0 -1
  218. package/dist/scripts/generate-report.test.d.ts +0 -13
  219. package/dist/scripts/generate-report.test.d.ts.map +0 -1
  220. package/dist/scripts/generate-report.test.js +0 -363
  221. package/dist/scripts/generate-report.test.js.map +0 -1
  222. package/dist/scripts/generate-spider-report.d.ts +0 -65
  223. package/dist/scripts/generate-spider-report.d.ts.map +0 -1
  224. package/dist/scripts/generate-spider-report.js +0 -366
  225. package/dist/scripts/generate-spider-report.js.map +0 -1
  226. package/dist/scripts/generate-spider-report.test.d.ts +0 -13
  227. package/dist/scripts/generate-spider-report.test.d.ts.map +0 -1
  228. package/dist/scripts/generate-spider-report.test.js +0 -367
  229. package/dist/scripts/generate-spider-report.test.js.map +0 -1
  230. package/dist/scripts/generate-spider.d.ts +0 -47
  231. package/dist/scripts/generate-spider.d.ts.map +0 -1
  232. package/dist/scripts/generate-spider.js +0 -338
  233. package/dist/scripts/generate-spider.js.map +0 -1
  234. package/dist/scripts/generate-spider.test.d.ts +0 -14
  235. package/dist/scripts/generate-spider.test.d.ts.map +0 -1
  236. package/dist/scripts/generate-spider.test.js +0 -271
  237. package/dist/scripts/generate-spider.test.js.map +0 -1
  238. package/dist/scripts/job-fair-aggregator.d.ts.map +0 -1
  239. package/dist/scripts/job-fair-aggregator.js.map +0 -1
  240. package/dist/scripts/job-fair-aggregator.test.d.ts +0 -14
  241. package/dist/scripts/job-fair-aggregator.test.d.ts.map +0 -1
  242. package/dist/scripts/job-fair-aggregator.test.js +0 -616
  243. package/dist/scripts/job-fair-aggregator.test.js.map +0 -1
  244. package/dist/scripts/run-ci.test.d.ts +0 -20
  245. package/dist/scripts/run-ci.test.d.ts.map +0 -1
  246. package/dist/scripts/run-ci.test.js +0 -127
  247. package/dist/scripts/run-ci.test.js.map +0 -1
  248. package/dist/scripts/theme-detail.test.d.ts +0 -10
  249. package/dist/scripts/theme-detail.test.d.ts.map +0 -1
  250. package/dist/scripts/theme-detail.test.js +0 -199
  251. package/dist/scripts/theme-detail.test.js.map +0 -1
  252. package/dist/scripts/validate-ocean-profiles.d.ts +0 -9
  253. package/dist/scripts/validate-ocean-profiles.d.ts.map +0 -1
  254. package/dist/scripts/validate-ocean-profiles.js +0 -130
  255. package/dist/scripts/validate-ocean-profiles.js.map +0 -1
  256. package/dist/workflow/gate-handler.d.ts +0 -94
  257. package/dist/workflow/gate-handler.d.ts.map +0 -1
  258. package/dist/workflow/gate-handler.js +0 -189
  259. package/dist/workflow/gate-handler.js.map +0 -1
  260. package/dist/workflow/gate-handler.test.d.ts +0 -14
  261. package/dist/workflow/gate-handler.test.d.ts.map +0 -1
  262. package/dist/workflow/gate-handler.test.js +0 -543
  263. package/dist/workflow/gate-handler.test.js.map +0 -1
  264. package/dist/workflow/generic-handoff.d.ts +0 -281
  265. package/dist/workflow/generic-handoff.d.ts.map +0 -1
  266. package/dist/workflow/generic-handoff.js +0 -411
  267. package/dist/workflow/generic-handoff.js.map +0 -1
  268. package/dist/workflow/generic-handoff.test.d.ts +0 -21
  269. package/dist/workflow/generic-handoff.test.d.ts.map +0 -1
  270. package/dist/workflow/generic-handoff.test.js +0 -499
  271. package/dist/workflow/generic-handoff.test.js.map +0 -1
  272. package/dist/workflow/generic-sm-finish.d.ts +0 -89
  273. package/dist/workflow/generic-sm-finish.d.ts.map +0 -1
  274. package/dist/workflow/generic-sm-finish.js +0 -157
  275. package/dist/workflow/generic-sm-finish.js.map +0 -1
  276. package/dist/workflow/generic-sm-setup.d.ts +0 -138
  277. package/dist/workflow/generic-sm-setup.d.ts.map +0 -1
  278. package/dist/workflow/generic-sm-setup.js +0 -382
  279. package/dist/workflow/generic-sm-setup.js.map +0 -1
  280. package/dist/workflow/index.d.ts.map +0 -1
  281. package/dist/workflow/index.js.map +0 -1
  282. package/dist/workflow/session-state.d.ts +0 -92
  283. package/dist/workflow/session-state.d.ts.map +0 -1
  284. package/dist/workflow/session-state.js +0 -198
  285. package/dist/workflow/session-state.js.map +0 -1
  286. package/dist/workflow/session-state.test.d.ts +0 -8
  287. package/dist/workflow/session-state.test.d.ts.map +0 -1
  288. package/dist/workflow/session-state.test.js +0 -551
  289. package/dist/workflow/session-state.test.js.map +0 -1
  290. package/dist/workflow/sm-subagents.test.d.ts +0 -23
  291. package/dist/workflow/sm-subagents.test.d.ts.map +0 -1
  292. package/dist/workflow/sm-subagents.test.js +0 -727
  293. package/dist/workflow/sm-subagents.test.js.map +0 -1
  294. package/dist/workflow/step-parser.d.ts +0 -45
  295. package/dist/workflow/step-parser.d.ts.map +0 -1
  296. package/dist/workflow/step-parser.js +0 -147
  297. package/dist/workflow/step-parser.js.map +0 -1
  298. package/dist/workflow/step-parser.test.d.ts +0 -14
  299. package/dist/workflow/step-parser.test.d.ts.map +0 -1
  300. package/dist/workflow/step-parser.test.js +0 -470
  301. package/dist/workflow/step-parser.test.js.map +0 -1
  302. package/dist/workflow/story-workflow-routing.test.d.ts +0 -17
  303. package/dist/workflow/story-workflow-routing.test.d.ts.map +0 -1
  304. package/dist/workflow/story-workflow-routing.test.js +0 -559
  305. package/dist/workflow/story-workflow-routing.test.js.map +0 -1
  306. package/dist/workflow/test-cache.d.ts +0 -131
  307. package/dist/workflow/test-cache.d.ts.map +0 -1
  308. package/dist/workflow/test-cache.js +0 -226
  309. package/dist/workflow/test-cache.js.map +0 -1
  310. package/dist/workflow/test-cache.test.d.ts +0 -17
  311. package/dist/workflow/test-cache.test.d.ts.map +0 -1
  312. package/dist/workflow/test-cache.test.js +0 -438
  313. package/dist/workflow/test-cache.test.js.map +0 -1
  314. package/dist/workflow/trimodal.d.ts +0 -86
  315. package/dist/workflow/trimodal.d.ts.map +0 -1
  316. package/dist/workflow/trimodal.js +0 -118
  317. package/dist/workflow/trimodal.js.map +0 -1
  318. package/dist/workflow/trimodal.test.d.ts +0 -11
  319. package/dist/workflow/trimodal.test.d.ts.map +0 -1
  320. package/dist/workflow/trimodal.test.js +0 -395
  321. package/dist/workflow/trimodal.test.js.map +0 -1
  322. package/dist/workflow/variable-resolver.d.ts +0 -67
  323. package/dist/workflow/variable-resolver.d.ts.map +0 -1
  324. package/dist/workflow/variable-resolver.js +0 -156
  325. package/dist/workflow/variable-resolver.js.map +0 -1
  326. package/dist/workflow/variable-resolver.test.d.ts +0 -14
  327. package/dist/workflow/variable-resolver.test.d.ts.map +0 -1
  328. package/dist/workflow/variable-resolver.test.js +0 -400
  329. package/dist/workflow/variable-resolver.test.js.map +0 -1
  330. package/dist/workflow/workflow-executor.d.ts +0 -163
  331. package/dist/workflow/workflow-executor.d.ts.map +0 -1
  332. package/dist/workflow/workflow-executor.js +0 -197
  333. package/dist/workflow/workflow-executor.js.map +0 -1
  334. package/dist/workflow/workflow-executor.test.d.ts +0 -8
  335. package/dist/workflow/workflow-executor.test.d.ts.map +0 -1
  336. package/dist/workflow/workflow-executor.test.js +0 -444
  337. package/dist/workflow/workflow-executor.test.js.map +0 -1
  338. package/dist/workflow/workflow-loader.d.ts.map +0 -1
  339. package/dist/workflow/workflow-loader.js.map +0 -1
  340. package/dist/workflow/workflow-loader.test.d.ts +0 -15
  341. package/dist/workflow/workflow-loader.test.d.ts.map +0 -1
  342. package/dist/workflow/workflow-loader.test.js +0 -354
  343. package/dist/workflow/workflow-loader.test.js.map +0 -1
  344. package/dist/workflow/workflow-migration.test.d.ts +0 -17
  345. package/dist/workflow/workflow-migration.test.d.ts.map +0 -1
  346. package/dist/workflow/workflow-migration.test.js +0 -371
  347. package/dist/workflow/workflow-migration.test.js.map +0 -1
  348. package/dist/workflow/workflow-permissions.d.ts.map +0 -1
  349. package/dist/workflow/workflow-permissions.js.map +0 -1
  350. package/dist/workflow/workflow-permissions.test.d.ts +0 -15
  351. package/dist/workflow/workflow-permissions.test.d.ts.map +0 -1
  352. package/dist/workflow/workflow-permissions.test.js +0 -301
  353. package/dist/workflow/workflow-permissions.test.js.map +0 -1
  354. package/dist/workflow/workflow-router.d.ts.map +0 -1
  355. package/dist/workflow/workflow-router.js.map +0 -1
  356. package/dist/workflow/workflow-router.test.d.ts +0 -20
  357. package/dist/workflow/workflow-router.test.d.ts.map +0 -1
  358. package/dist/workflow/workflow-router.test.js +0 -607
  359. package/dist/workflow/workflow-router.test.js.map +0 -1
  360. package/dist/workflow/workflow-schema.d.ts.map +0 -1
  361. package/dist/workflow/workflow-schema.js.map +0 -1
  362. package/dist/workflow/workflow-schema.test.d.ts +0 -45
  363. package/dist/workflow/workflow-schema.test.d.ts.map +0 -1
  364. package/dist/workflow/workflow-schema.test.js +0 -512
  365. package/dist/workflow/workflow-schema.test.js.map +0 -1
  366. package/dist/workflow/workflow-stepped-schema.test.d.ts +0 -18
  367. package/dist/workflow/workflow-stepped-schema.test.d.ts.map +0 -1
  368. package/dist/workflow/workflow-stepped-schema.test.js +0 -608
  369. package/dist/workflow/workflow-stepped-schema.test.js.map +0 -1
@@ -1,9 +1,12 @@
1
+ "use strict";
1
2
  /**
2
3
  * Workflow Schema Validation
3
4
  *
4
5
  * Defines types and validation for workflow definitions.
5
6
  * See pennyfarthing-dist/guides/workflow-schema.md for spec.
6
7
  */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.validateWorkflow = validateWorkflow;
7
10
  /**
8
11
  * Validates a workflow definition object
9
12
  *
@@ -23,8 +26,8 @@
23
26
  * }
24
27
  * ```
25
28
  */
26
- export function validateWorkflow(input) {
27
- const errors = [];
29
+ function validateWorkflow(input) {
30
+ var errors = [];
28
31
  // Check input is an object
29
32
  if (!input || typeof input !== 'object') {
30
33
  return {
@@ -32,7 +35,7 @@ export function validateWorkflow(input) {
32
35
  errors: [{ field: 'workflow', message: 'Input must be an object' }]
33
36
  };
34
37
  }
35
- const inputObj = input;
38
+ var inputObj = input;
36
39
  // Check for root 'workflow' key
37
40
  if (!('workflow' in inputObj) || !inputObj.workflow || typeof inputObj.workflow !== 'object') {
38
41
  return {
@@ -40,7 +43,7 @@ export function validateWorkflow(input) {
40
43
  errors: [{ field: 'workflow', message: 'Missing required root "workflow" key' }]
41
44
  };
42
45
  }
43
- const workflowObj = inputObj.workflow;
46
+ var workflowObj = inputObj.workflow;
44
47
  // Validate workflow.name (required, string)
45
48
  if (!('name' in workflowObj) || workflowObj.name === undefined || workflowObj.name === null) {
46
49
  errors.push({ field: 'workflow.name', message: 'Name is required' });
@@ -49,7 +52,7 @@ export function validateWorkflow(input) {
49
52
  errors.push({ field: 'workflow.name', message: 'Name must be a string' });
50
53
  }
51
54
  // Determine workflow type (default to 'phased' for backward compatibility)
52
- const workflowType = ('type' in workflowObj && workflowObj.type !== undefined)
55
+ var workflowType = ('type' in workflowObj && workflowObj.type !== undefined)
53
56
  ? workflowObj.type
54
57
  : 'phased';
55
58
  // Validate type field if present
@@ -58,9 +61,9 @@ export function validateWorkflow(input) {
58
61
  errors.push({ field: 'workflow.type', message: 'Type must be "phased" or "stepped"' });
59
62
  }
60
63
  }
61
- const isStepped = workflowType === 'stepped';
62
- const hasPhases = 'phases' in workflowObj && workflowObj.phases !== undefined;
63
- const hasSteps = 'steps' in workflowObj && workflowObj.steps !== undefined;
64
+ var isStepped = workflowType === 'stepped';
65
+ var hasPhases = 'phases' in workflowObj && workflowObj.phases !== undefined;
66
+ var hasSteps = 'steps' in workflowObj && workflowObj.steps !== undefined;
64
67
  // Validate mutual exclusivity: stepped workflows cannot have phases
65
68
  if (isStepped && hasPhases) {
66
69
  errors.push({ field: 'workflow.phases', message: 'Stepped workflows cannot have phases (mutually exclusive)' });
@@ -73,7 +76,7 @@ export function validateWorkflow(input) {
73
76
  }
74
77
  else {
75
78
  // Validate steps object
76
- const stepsObj = workflowObj.steps;
79
+ var stepsObj = workflowObj.steps;
77
80
  if (!stepsObj || typeof stepsObj !== 'object') {
78
81
  errors.push({ field: 'workflow.steps', message: 'Steps must be an object' });
79
82
  }
@@ -102,7 +105,7 @@ export function validateWorkflow(input) {
102
105
  }
103
106
  // Validate modes (optional, but only valid for stepped)
104
107
  if ('modes' in workflowObj && workflowObj.modes !== undefined) {
105
- const modesObj = workflowObj.modes;
108
+ var modesObj = workflowObj.modes;
106
109
  if (!modesObj || typeof modesObj !== 'object') {
107
110
  errors.push({ field: 'workflow.modes', message: 'Modes must be an object' });
108
111
  }
@@ -114,16 +117,17 @@ export function validateWorkflow(input) {
114
117
  }
115
118
  }
116
119
  // Mode paths must be strings if present
117
- for (const mode of ['create', 'validate', 'edit']) {
120
+ for (var _i = 0, _a = ['create', 'validate', 'edit']; _i < _a.length; _i++) {
121
+ var mode = _a[_i];
118
122
  if (mode in modesObj && modesObj[mode] !== undefined && typeof modesObj[mode] !== 'string') {
119
- errors.push({ field: `workflow.modes.${mode}`, message: `Modes ${mode} must be a string` });
123
+ errors.push({ field: "workflow.modes.".concat(mode), message: "Modes ".concat(mode, " must be a string") });
120
124
  }
121
125
  }
122
126
  }
123
127
  }
124
128
  // Validate stepped gates (optional)
125
129
  if ('gates' in workflowObj && workflowObj.gates !== undefined) {
126
- const gatesObj = workflowObj.gates;
130
+ var gatesObj = workflowObj.gates;
127
131
  if (!gatesObj || typeof gatesObj !== 'object') {
128
132
  errors.push({ field: 'workflow.gates', message: 'Gates must be an object' });
129
133
  }
@@ -134,10 +138,10 @@ export function validateWorkflow(input) {
134
138
  errors.push({ field: 'workflow.gates.after_steps', message: 'Gates after_steps must be an array' });
135
139
  }
136
140
  else {
137
- const afterSteps = gatesObj.after_steps;
138
- afterSteps.forEach((step, index) => {
141
+ var afterSteps = gatesObj.after_steps;
142
+ afterSteps.forEach(function (step, index) {
139
143
  if (typeof step !== 'number') {
140
- errors.push({ field: `workflow.gates.after_steps[${index}]`, message: 'Gates after_steps values must be numbers' });
144
+ errors.push({ field: "workflow.gates.after_steps[".concat(index, "]"), message: 'Gates after_steps values must be numbers' });
141
145
  }
142
146
  });
143
147
  }
@@ -179,52 +183,52 @@ export function validateWorkflow(input) {
179
183
  }
180
184
  else {
181
185
  // Validate each phase
182
- const phases = workflowObj.phases;
183
- phases.forEach((phase, index) => {
186
+ var phases = workflowObj.phases;
187
+ phases.forEach(function (phase, index) {
184
188
  if (!phase || typeof phase !== 'object') {
185
- errors.push({ field: `workflow.phases[${index}]`, message: 'Phase must be an object' });
189
+ errors.push({ field: "workflow.phases[".concat(index, "]"), message: 'Phase must be an object' });
186
190
  return;
187
191
  }
188
- const phaseObj = phase;
192
+ var phaseObj = phase;
189
193
  // Phase name (required)
190
194
  if (!('name' in phaseObj) || phaseObj.name === undefined || phaseObj.name === null) {
191
- errors.push({ field: `workflow.phases[${index}].name`, message: 'Phase name is required' });
195
+ errors.push({ field: "workflow.phases[".concat(index, "].name"), message: 'Phase name is required' });
192
196
  }
193
197
  else if (typeof phaseObj.name !== 'string') {
194
- errors.push({ field: `workflow.phases[${index}].name`, message: 'Phase name must be a string' });
198
+ errors.push({ field: "workflow.phases[".concat(index, "].name"), message: 'Phase name must be a string' });
195
199
  }
196
200
  // Phase agent (required)
197
201
  if (!('agent' in phaseObj) || phaseObj.agent === undefined || phaseObj.agent === null) {
198
- errors.push({ field: `workflow.phases[${index}].agent`, message: 'Phase agent is required' });
202
+ errors.push({ field: "workflow.phases[".concat(index, "].agent"), message: 'Phase agent is required' });
199
203
  }
200
204
  else if (typeof phaseObj.agent !== 'string') {
201
- errors.push({ field: `workflow.phases[${index}].agent`, message: 'Phase agent must be a string' });
205
+ errors.push({ field: "workflow.phases[".concat(index, "].agent"), message: 'Phase agent must be a string' });
202
206
  }
203
207
  // Phase gate (optional, but if present must have type)
204
208
  if ('gate' in phaseObj && phaseObj.gate !== undefined) {
205
209
  if (!phaseObj.gate || typeof phaseObj.gate !== 'object') {
206
- errors.push({ field: `workflow.phases[${index}].gate`, message: 'Gate must be an object' });
210
+ errors.push({ field: "workflow.phases[".concat(index, "].gate"), message: 'Gate must be an object' });
207
211
  }
208
212
  else {
209
- const gateObj = phaseObj.gate;
213
+ var gateObj = phaseObj.gate;
210
214
  if (!('type' in gateObj) || gateObj.type === undefined || gateObj.type === null) {
211
- errors.push({ field: `workflow.phases[${index}].gate.type`, message: 'Gate type is required' });
215
+ errors.push({ field: "workflow.phases[".concat(index, "].gate.type"), message: 'Gate type is required' });
212
216
  }
213
217
  else if (typeof gateObj.type !== 'string') {
214
- errors.push({ field: `workflow.phases[${index}].gate.type`, message: 'Gate type must be a string' });
218
+ errors.push({ field: "workflow.phases[".concat(index, "].gate.type"), message: 'Gate type must be a string' });
215
219
  }
216
220
  }
217
221
  }
218
222
  // Phase input (optional, array of strings)
219
223
  if ('input' in phaseObj && phaseObj.input !== undefined) {
220
224
  if (!Array.isArray(phaseObj.input)) {
221
- errors.push({ field: `workflow.phases[${index}].input`, message: 'Input must be an array' });
225
+ errors.push({ field: "workflow.phases[".concat(index, "].input"), message: 'Input must be an array' });
222
226
  }
223
227
  }
224
228
  // Phase output (optional, array of strings)
225
229
  if ('output' in phaseObj && phaseObj.output !== undefined) {
226
230
  if (!Array.isArray(phaseObj.output)) {
227
- errors.push({ field: `workflow.phases[${index}].output`, message: 'Output must be an array' });
231
+ errors.push({ field: "workflow.phases[".concat(index, "].output"), message: 'Output must be an array' });
228
232
  }
229
233
  }
230
234
  });
@@ -236,7 +240,7 @@ export function validateWorkflow(input) {
236
240
  errors.push({ field: 'workflow.triggers', message: 'Triggers must be an object' });
237
241
  }
238
242
  else {
239
- const triggersObj = workflowObj.triggers;
243
+ var triggersObj = workflowObj.triggers;
240
244
  // tags (optional, array)
241
245
  if ('tags' in triggersObj && triggersObj.tags !== undefined) {
242
246
  if (!Array.isArray(triggersObj.tags)) {
@@ -255,7 +259,7 @@ export function validateWorkflow(input) {
255
259
  errors.push({ field: 'workflow.triggers.points', message: 'Points must be an object' });
256
260
  }
257
261
  else {
258
- const pointsObj = triggersObj.points;
262
+ var pointsObj = triggersObj.points;
259
263
  // min (optional, number)
260
264
  if ('min' in pointsObj && pointsObj.min !== undefined) {
261
265
  if (typeof pointsObj.min !== 'number') {
@@ -290,43 +294,43 @@ export function validateWorkflow(input) {
290
294
  errors.push({ field: 'workflow.permissions', message: 'Permissions must be an array' });
291
295
  }
292
296
  else {
293
- const permissions = workflowObj.permissions;
294
- permissions.forEach((permission, index) => {
297
+ var permissions = workflowObj.permissions;
298
+ permissions.forEach(function (permission, index) {
295
299
  if (!permission || typeof permission !== 'object') {
296
- errors.push({ field: `workflow.permissions[${index}]`, message: 'Permission must be an object' });
300
+ errors.push({ field: "workflow.permissions[".concat(index, "]"), message: 'Permission must be an object' });
297
301
  return;
298
302
  }
299
- const permObj = permission;
303
+ var permObj = permission;
300
304
  // tool (required, string)
301
305
  if (!('tool' in permObj) || permObj.tool === undefined || permObj.tool === null) {
302
- errors.push({ field: `workflow.permissions[${index}].tool`, message: 'Permission tool is required' });
306
+ errors.push({ field: "workflow.permissions[".concat(index, "].tool"), message: 'Permission tool is required' });
303
307
  }
304
308
  else if (typeof permObj.tool !== 'string') {
305
- errors.push({ field: `workflow.permissions[${index}].tool`, message: 'Permission tool must be a string' });
309
+ errors.push({ field: "workflow.permissions[".concat(index, "].tool"), message: 'Permission tool must be a string' });
306
310
  }
307
311
  // scope (required, string)
308
312
  if (!('scope' in permObj) || permObj.scope === undefined || permObj.scope === null) {
309
- errors.push({ field: `workflow.permissions[${index}].scope`, message: 'Permission scope is required' });
313
+ errors.push({ field: "workflow.permissions[".concat(index, "].scope"), message: 'Permission scope is required' });
310
314
  }
311
315
  else if (typeof permObj.scope !== 'string') {
312
- errors.push({ field: `workflow.permissions[${index}].scope`, message: 'Permission scope must be a string' });
316
+ errors.push({ field: "workflow.permissions[".concat(index, "].scope"), message: 'Permission scope must be a string' });
313
317
  }
314
318
  // reason (required, string)
315
319
  if (!('reason' in permObj) || permObj.reason === undefined || permObj.reason === null) {
316
- errors.push({ field: `workflow.permissions[${index}].reason`, message: 'Permission reason is required' });
320
+ errors.push({ field: "workflow.permissions[".concat(index, "].reason"), message: 'Permission reason is required' });
317
321
  }
318
322
  else if (typeof permObj.reason !== 'string') {
319
- errors.push({ field: `workflow.permissions[${index}].reason`, message: 'Permission reason must be a string' });
323
+ errors.push({ field: "workflow.permissions[".concat(index, "].reason"), message: 'Permission reason must be a string' });
320
324
  }
321
325
  });
322
326
  }
323
327
  }
324
328
  // If there are errors, return invalid result
325
329
  if (errors.length > 0) {
326
- return { valid: false, errors };
330
+ return { valid: false, errors: errors };
327
331
  }
328
332
  // Build the validated workflow object
329
- const workflow = {
333
+ var workflow = {
330
334
  name: workflowObj.name
331
335
  };
332
336
  // Set type (default to phased for backward compatibility)
@@ -334,11 +338,11 @@ export function validateWorkflow(input) {
334
338
  workflow.type = workflowObj.type;
335
339
  }
336
340
  // Determine if stepped for conditional field handling
337
- const isSteppedWorkflow = workflow.type === 'stepped';
341
+ var isSteppedWorkflow = workflow.type === 'stepped';
338
342
  // Build phases array for phased workflows
339
343
  if (!isSteppedWorkflow && workflowObj.phases !== undefined) {
340
- workflow.phases = workflowObj.phases.map((phase) => {
341
- const result = {
344
+ workflow.phases = workflowObj.phases.map(function (phase) {
345
+ var result = {
342
346
  name: phase.name,
343
347
  agent: phase.agent
344
348
  };
@@ -349,7 +353,7 @@ export function validateWorkflow(input) {
349
353
  result.output = phase.output;
350
354
  }
351
355
  if (phase.gate !== undefined) {
352
- const gateObj = phase.gate;
356
+ var gateObj = phase.gate;
353
357
  result.gate = {
354
358
  type: gateObj.type
355
359
  };
@@ -368,7 +372,7 @@ export function validateWorkflow(input) {
368
372
  }
369
373
  // steps (required for stepped, already validated)
370
374
  if (workflowObj.steps !== undefined) {
371
- const stepsObj = workflowObj.steps;
375
+ var stepsObj = workflowObj.steps;
372
376
  workflow.steps = {
373
377
  path: stepsObj.path,
374
378
  pattern: stepsObj.pattern
@@ -376,7 +380,7 @@ export function validateWorkflow(input) {
376
380
  }
377
381
  // modes (optional)
378
382
  if (workflowObj.modes !== undefined) {
379
- const modesObj = workflowObj.modes;
383
+ var modesObj = workflowObj.modes;
380
384
  workflow.modes = {
381
385
  default: modesObj.default
382
386
  };
@@ -396,7 +400,7 @@ export function validateWorkflow(input) {
396
400
  }
397
401
  // gates (optional, stepped workflow gates)
398
402
  if (workflowObj.gates !== undefined) {
399
- const gatesObj = workflowObj.gates;
403
+ var gatesObj = workflowObj.gates;
400
404
  workflow.gates = {};
401
405
  if (gatesObj.after_steps !== undefined) {
402
406
  workflow.gates.after_steps = gatesObj.after_steps;
@@ -417,8 +421,8 @@ export function validateWorkflow(input) {
417
421
  workflow.version = workflowObj.version;
418
422
  }
419
423
  if (workflowObj.triggers !== undefined) {
420
- const triggersObj = workflowObj.triggers;
421
- const triggers = {};
424
+ var triggersObj = workflowObj.triggers;
425
+ var triggers = {};
422
426
  if (triggersObj.tags !== undefined) {
423
427
  triggers.tags = triggersObj.tags;
424
428
  }
@@ -426,7 +430,7 @@ export function validateWorkflow(input) {
426
430
  triggers.types = triggersObj.types;
427
431
  }
428
432
  if (triggersObj.points !== undefined) {
429
- const pointsObj = triggersObj.points;
433
+ var pointsObj = triggersObj.points;
430
434
  triggers.points = {};
431
435
  if (pointsObj.min !== undefined) {
432
436
  triggers.points.min = pointsObj.min;
@@ -442,13 +446,12 @@ export function validateWorkflow(input) {
442
446
  }
443
447
  // Build permissions array if present
444
448
  if (workflowObj.permissions !== undefined) {
445
- const permissionsArr = workflowObj.permissions;
446
- workflow.permissions = permissionsArr.map((perm) => ({
449
+ var permissionsArr = workflowObj.permissions;
450
+ workflow.permissions = permissionsArr.map(function (perm) { return ({
447
451
  tool: perm.tool,
448
452
  scope: perm.scope,
449
453
  reason: perm.reason,
450
- }));
454
+ }); });
451
455
  }
452
- return { valid: true, workflow };
456
+ return { valid: true, workflow: workflow };
453
457
  }
454
- //# sourceMappingURL=workflow-schema.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pennyfarthing/core",
3
- "version": "7.4.0",
3
+ "version": "7.5.0",
4
4
  "description": "Claude Code agent framework with TDD workflow and persona system",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -1,71 +0,0 @@
1
- /**
2
- * BMAD Project Context Reader - Story 32-4
3
- *
4
- * Parses BMAD project-context.md files and extracts technology stack,
5
- * implementation rules, and AI agent guidance for Pennyfarthing integration.
6
- */
7
- export interface TechnologyStack {
8
- frontend?: {
9
- framework?: string;
10
- language?: string;
11
- stateManagement?: string;
12
- styling?: string;
13
- buildTool?: string;
14
- };
15
- backend?: {
16
- language?: string;
17
- framework?: string;
18
- database?: string;
19
- cache?: string;
20
- apiStyle?: string;
21
- };
22
- infrastructure?: {
23
- cloudProvider?: string;
24
- containerRuntime?: string;
25
- orchestration?: string;
26
- ciCd?: string;
27
- };
28
- }
29
- export interface ImplementationRule {
30
- number: number;
31
- title: string;
32
- description: string;
33
- }
34
- export interface AiAgentGuidance {
35
- do?: string[];
36
- dont?: string[];
37
- contextLoading?: string;
38
- }
39
- export interface ExternalDependency {
40
- name: string;
41
- purpose: string;
42
- documentation: string;
43
- }
44
- export interface BmadProjectContext {
45
- overview: string;
46
- technologyStack: TechnologyStack;
47
- implementationRules: ImplementationRule[];
48
- projectStructure?: string;
49
- codingStandards?: string;
50
- aiAgentGuidance?: AiAgentGuidance;
51
- externalDependencies?: ExternalDependency[];
52
- environmentSetup?: string;
53
- }
54
- export interface ContextParseError {
55
- section: string;
56
- message: string;
57
- line?: number;
58
- }
59
- export interface ContextParseResult {
60
- success: boolean;
61
- context?: BmadProjectContext;
62
- errors?: ContextParseError[];
63
- }
64
- /**
65
- * Parse a BMAD project-context.md file and extract structured context.
66
- *
67
- * @param content - Raw markdown content of project-context.md
68
- * @returns ContextParseResult with success status and either context or errors
69
- */
70
- export declare function parseBmadContext(content: string): ContextParseResult;
71
- //# sourceMappingURL=context-reader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-reader.d.ts","sourceRoot":"","sources":["../../src/bmad/context-reader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,cAAc,CAAC,EAAE;QACf,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,eAAe,CAAC;IACjC,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,oBAAoB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAkUD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAmGpE"}