@pennyfarthing/core 7.9.5 → 8.0.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 (631) hide show
  1. package/LICENSE +14 -0
  2. package/README.md +209 -0
  3. package/package.json +32 -37
  4. package/{dist → packages/core/dist}/cli/utils/files.d.ts +6 -2
  5. package/{dist → packages/core/dist}/cli/utils/files.d.ts.map +1 -1
  6. package/{dist → packages/core/dist}/cli/utils/files.js +12 -4
  7. package/{dist → packages/core/dist}/cli/utils/files.js.map +1 -1
  8. package/{dist → packages/core/dist}/cli/workspace.test.js +3 -1
  9. package/{dist → packages/core/dist}/cli/workspace.test.js.map +1 -1
  10. package/pennyfarthing-dist/agents/README.md +12 -12
  11. package/pennyfarthing-dist/agents/architect.md +1 -1
  12. package/pennyfarthing-dist/agents/dev.md +2 -2
  13. package/pennyfarthing-dist/agents/devops.md +1 -1
  14. package/pennyfarthing-dist/agents/handoff.md +2 -2
  15. package/pennyfarthing-dist/agents/pm.md +1 -1
  16. package/pennyfarthing-dist/agents/reviewer.md +2 -2
  17. package/pennyfarthing-dist/agents/sm-setup.md +5 -5
  18. package/pennyfarthing-dist/agents/sm.md +6 -6
  19. package/pennyfarthing-dist/agents/tea.md +2 -2
  20. package/pennyfarthing-dist/agents/tech-writer.md +1 -1
  21. package/pennyfarthing-dist/agents/testing-runner.md +4 -4
  22. package/pennyfarthing-dist/agents/ux-designer.md +1 -1
  23. package/pennyfarthing-dist/agents/workflow-status-check.md +2 -2
  24. package/pennyfarthing-dist/commands/architect.md +1 -1
  25. package/pennyfarthing-dist/commands/create-branches-from-story.md +5 -5
  26. package/pennyfarthing-dist/commands/dev.md +1 -1
  27. package/pennyfarthing-dist/commands/devops.md +1 -1
  28. package/pennyfarthing-dist/commands/health-check.md +3 -3
  29. package/pennyfarthing-dist/commands/orchestrator.md +1 -1
  30. package/pennyfarthing-dist/commands/parallel-work.md +4 -4
  31. package/pennyfarthing-dist/commands/pm.md +1 -1
  32. package/pennyfarthing-dist/commands/release.md +1 -1
  33. package/pennyfarthing-dist/commands/repo-status.md +2 -2
  34. package/pennyfarthing-dist/commands/retro.md +2 -2
  35. package/pennyfarthing-dist/commands/reviewer.md +1 -1
  36. package/pennyfarthing-dist/commands/set-theme.md +1 -1
  37. package/pennyfarthing-dist/commands/sm.md +1 -1
  38. package/pennyfarthing-dist/commands/sprint.md +7 -7
  39. package/pennyfarthing-dist/commands/start-epic.md +3 -3
  40. package/pennyfarthing-dist/commands/sync-epic-to-jira.md +4 -4
  41. package/pennyfarthing-dist/commands/tea.md +1 -1
  42. package/pennyfarthing-dist/commands/tech-writer.md +1 -1
  43. package/pennyfarthing-dist/commands/ux-designer.md +1 -1
  44. package/pennyfarthing-dist/commands/work.md +1 -1
  45. package/pennyfarthing-dist/guides/agent-behavior.md +11 -11
  46. package/pennyfarthing-dist/guides/agent-tag-taxonomy.md +1 -1
  47. package/pennyfarthing-dist/guides/agent-template-strategic.md +1 -1
  48. package/pennyfarthing-dist/guides/agent-template-tactical.md +2 -2
  49. package/pennyfarthing-dist/guides/worktree-mode.md +3 -3
  50. package/pennyfarthing-dist/guides/xml-tags.md +1 -1
  51. package/pennyfarthing-dist/personas/themes/mash.yaml +2 -2
  52. package/pennyfarthing-dist/personas/themes/star-trek-tos.yaml +1 -1
  53. package/pennyfarthing-dist/scripts/README.md +6 -6
  54. package/pennyfarthing-dist/scripts/core/README.md +3 -4
  55. package/pennyfarthing-dist/scripts/core/phase-check-start.sh +12 -17
  56. package/pennyfarthing-dist/scripts/cyclist/is-cyclist.sh +1 -1
  57. package/pennyfarthing-dist/scripts/git/README.md +2 -2
  58. package/pennyfarthing-dist/scripts/git/install-git-hooks.sh +3 -15
  59. package/pennyfarthing-dist/scripts/git/release.sh +1 -1
  60. package/pennyfarthing-dist/scripts/health/drift-detection.sh +1 -1
  61. package/pennyfarthing-dist/scripts/hooks/README.md +1 -1
  62. package/pennyfarthing-dist/scripts/hooks/__pycache__/question_reflector_check.cpython-314.pyc +0 -0
  63. package/pennyfarthing-dist/scripts/hooks/post-merge.sh +3 -12
  64. package/pennyfarthing-dist/scripts/hooks/pre-push.sh +3 -15
  65. package/pennyfarthing-dist/scripts/jira/README.md +2 -2
  66. package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +1 -1
  67. package/pennyfarthing-dist/scripts/jira/create-jira-story.sh +1 -1
  68. package/pennyfarthing-dist/scripts/jira/jira-reconcile.sh +2 -2
  69. package/pennyfarthing-dist/scripts/lib/find-root.sh +45 -25
  70. package/pennyfarthing-dist/scripts/misc/README.md +2 -2
  71. package/pennyfarthing-dist/scripts/misc/backlog.sh +3 -17
  72. package/pennyfarthing-dist/scripts/misc/generate-skill-docs.sh +4 -30
  73. package/pennyfarthing-dist/scripts/misc/log-skill-usage.sh +1 -1
  74. package/pennyfarthing-dist/scripts/misc/run-ci.sh +3 -10
  75. package/pennyfarthing-dist/scripts/misc/skill-usage-report.sh +1 -1
  76. package/pennyfarthing-dist/scripts/misc/uninstall.sh +0 -1
  77. package/pennyfarthing-dist/scripts/portraits/generate-portraits.py +19 -2
  78. package/pennyfarthing-dist/scripts/sprint/README.md +2 -2
  79. package/pennyfarthing-dist/scripts/sprint/archive-story.sh +5 -5
  80. package/pennyfarthing-dist/scripts/sprint/available-stories.sh +2 -2
  81. package/pennyfarthing-dist/scripts/sprint/check-story.sh +1 -1
  82. package/pennyfarthing-dist/scripts/sprint/get-epic-field.sh +5 -5
  83. package/pennyfarthing-dist/scripts/sprint/get-story-field.sh +5 -5
  84. package/pennyfarthing-dist/scripts/sprint/list-future.sh +2 -2
  85. package/pennyfarthing-dist/scripts/sprint/new-sprint.sh +3 -3
  86. package/pennyfarthing-dist/scripts/sprint/promote-epic.sh +4 -4
  87. package/pennyfarthing-dist/scripts/sprint/sprint-common.sh +11 -17
  88. package/pennyfarthing-dist/scripts/sprint/sprint-info.sh +2 -2
  89. package/pennyfarthing-dist/scripts/sprint/sprint-metrics.sh +3 -14
  90. package/pennyfarthing-dist/scripts/sprint/sprint-status.sh +4 -4
  91. package/pennyfarthing-dist/scripts/story/README.md +2 -2
  92. package/pennyfarthing-dist/scripts/test/README.md +1 -1
  93. package/pennyfarthing-dist/scripts/theme/README.md +1 -1
  94. package/pennyfarthing-dist/scripts/workflow/README.md +2 -2
  95. package/pennyfarthing-dist/scripts/workflow/finish-story.sh +1 -1
  96. package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +1 -1
  97. package/pennyfarthing-dist/scripts/workflow/get-workflow-type.sh +1 -1
  98. package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +2 -2
  99. package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +2 -2
  100. package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +2 -2
  101. package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +2 -2
  102. package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +2 -2
  103. package/pennyfarthing-dist/skills/cyclist/SKILL.md +2 -2
  104. package/pennyfarthing-dist/skills/jira/SKILL.md +15 -15
  105. package/pennyfarthing-dist/skills/judge/SKILL.md +1 -1
  106. package/pennyfarthing-dist/skills/sprint/scripts/archive-story.sh +3 -3
  107. package/pennyfarthing-dist/skills/sprint/scripts/available-stories.sh +2 -2
  108. package/pennyfarthing-dist/skills/sprint/scripts/check-story.sh +2 -2
  109. package/pennyfarthing-dist/skills/sprint/scripts/create-jira-epic.sh +1 -1
  110. package/pennyfarthing-dist/skills/sprint/scripts/new-sprint.sh +3 -3
  111. package/pennyfarthing-dist/skills/sprint/scripts/promote-epic.sh +4 -4
  112. package/pennyfarthing-dist/skills/sprint/scripts/sprint-info.sh +2 -2
  113. package/pennyfarthing-dist/skills/sprint/scripts/sprint-status.sh +2 -2
  114. package/pennyfarthing-dist/skills/sprint/scripts/sync-epic-jira.sh +4 -4
  115. package/pennyfarthing-dist/skills/sprint/skill.md +30 -30
  116. package/pennyfarthing-dist/skills/story/skill.md +16 -16
  117. package/pennyfarthing-dist/skills/workflow/scripts/list-workflows.sh +2 -2
  118. package/pennyfarthing-dist/skills/workflow/scripts/resume-workflow.sh +2 -2
  119. package/pennyfarthing-dist/skills/workflow/scripts/show-workflow.sh +2 -2
  120. package/pennyfarthing-dist/skills/workflow/scripts/start-workflow.sh +2 -2
  121. package/pennyfarthing-dist/skills/workflow/scripts/workflow-status.sh +2 -2
  122. package/pennyfarthing-dist/skills/workflow/skill.md +14 -14
  123. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-05-import-to-future.md +2 -2
  124. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-01-analyze.md +2 -2
  125. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-04-verify.md +1 -1
  126. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-05-complete.md +1 -1
  127. package/pennyfarthing_scripts/README.md +66 -0
  128. package/pennyfarthing_scripts/__init__.py +17 -0
  129. package/pennyfarthing_scripts/__pycache__/__init__.cpython-311.pyc +0 -0
  130. package/pennyfarthing_scripts/__pycache__/__init__.cpython-314.pyc +0 -0
  131. package/pennyfarthing_scripts/__pycache__/config.cpython-314.pyc +0 -0
  132. package/pennyfarthing_scripts/__pycache__/jira.cpython-314.pyc +0 -0
  133. package/pennyfarthing_scripts/__pycache__/jira_epic_creation.cpython-314.pyc +0 -0
  134. package/pennyfarthing_scripts/__pycache__/jira_sync.cpython-314.pyc +0 -0
  135. package/pennyfarthing_scripts/__pycache__/jira_sync_story.cpython-314.pyc +0 -0
  136. package/pennyfarthing_scripts/__pycache__/sprint.cpython-314.pyc +0 -0
  137. package/pennyfarthing_scripts/__pycache__/workflow.cpython-311.pyc +0 -0
  138. package/pennyfarthing_scripts/__pycache__/workflow.cpython-314.pyc +0 -0
  139. package/pennyfarthing_scripts/bellmode_hook.py +154 -0
  140. package/pennyfarthing_scripts/brownfield/__init__.py +35 -0
  141. package/pennyfarthing_scripts/brownfield/__main__.py +7 -0
  142. package/pennyfarthing_scripts/brownfield/__pycache__/__init__.cpython-314.pyc +0 -0
  143. package/pennyfarthing_scripts/brownfield/__pycache__/__main__.cpython-314.pyc +0 -0
  144. package/pennyfarthing_scripts/brownfield/__pycache__/cli.cpython-314.pyc +0 -0
  145. package/pennyfarthing_scripts/brownfield/__pycache__/discover.cpython-314.pyc +0 -0
  146. package/pennyfarthing_scripts/brownfield/cli.py +131 -0
  147. package/pennyfarthing_scripts/brownfield/discover.py +753 -0
  148. package/pennyfarthing_scripts/common/__init__.py +49 -0
  149. package/pennyfarthing_scripts/common/__pycache__/__init__.cpython-314.pyc +0 -0
  150. package/pennyfarthing_scripts/common/__pycache__/config.cpython-314.pyc +0 -0
  151. package/pennyfarthing_scripts/common/__pycache__/output.cpython-314.pyc +0 -0
  152. package/pennyfarthing_scripts/common/config.py +91 -0
  153. package/pennyfarthing_scripts/common/output.py +180 -0
  154. package/pennyfarthing_scripts/config.py +21 -0
  155. package/pennyfarthing_scripts/git/__init__.py +29 -0
  156. package/pennyfarthing_scripts/git/__pycache__/__init__.cpython-314.pyc +0 -0
  157. package/pennyfarthing_scripts/git/__pycache__/create_branches.cpython-314.pyc +0 -0
  158. package/pennyfarthing_scripts/git/__pycache__/status_all.cpython-314.pyc +0 -0
  159. package/pennyfarthing_scripts/git/create_branches.py +439 -0
  160. package/pennyfarthing_scripts/git/status_all.py +310 -0
  161. package/pennyfarthing_scripts/hooks.py +455 -0
  162. package/pennyfarthing_scripts/jira/__init__.py +93 -0
  163. package/pennyfarthing_scripts/jira/__main__.py +10 -0
  164. package/pennyfarthing_scripts/jira/__pycache__/__init__.cpython-314.pyc +0 -0
  165. package/pennyfarthing_scripts/jira/__pycache__/__main__.cpython-314.pyc +0 -0
  166. package/pennyfarthing_scripts/jira/__pycache__/bidirectional.cpython-314.pyc +0 -0
  167. package/pennyfarthing_scripts/jira/__pycache__/claim.cpython-314.pyc +0 -0
  168. package/pennyfarthing_scripts/jira/__pycache__/cli.cpython-314.pyc +0 -0
  169. package/pennyfarthing_scripts/jira/__pycache__/client.cpython-314.pyc +0 -0
  170. package/pennyfarthing_scripts/jira/__pycache__/compat.cpython-314.pyc +0 -0
  171. package/pennyfarthing_scripts/jira/__pycache__/epic.cpython-314.pyc +0 -0
  172. package/pennyfarthing_scripts/jira/__pycache__/mappings.cpython-314.pyc +0 -0
  173. package/pennyfarthing_scripts/jira/__pycache__/models.cpython-314.pyc +0 -0
  174. package/pennyfarthing_scripts/jira/__pycache__/story.cpython-314.pyc +0 -0
  175. package/pennyfarthing_scripts/jira/__pycache__/sync.cpython-314.pyc +0 -0
  176. package/pennyfarthing_scripts/jira/bidirectional.py +561 -0
  177. package/pennyfarthing_scripts/jira/claim.py +211 -0
  178. package/pennyfarthing_scripts/jira/cli.py +150 -0
  179. package/pennyfarthing_scripts/jira/client.py +613 -0
  180. package/pennyfarthing_scripts/jira/epic.py +176 -0
  181. package/pennyfarthing_scripts/jira/story.py +219 -0
  182. package/pennyfarthing_scripts/jira/sync.py +350 -0
  183. package/pennyfarthing_scripts/jira_bidirectional_sync.py +37 -0
  184. package/pennyfarthing_scripts/jira_epic_creation.py +30 -0
  185. package/pennyfarthing_scripts/jira_sync.py +36 -0
  186. package/pennyfarthing_scripts/jira_sync_story.py +30 -0
  187. package/pennyfarthing_scripts/output.py +37 -0
  188. package/pennyfarthing_scripts/preflight/__init__.py +17 -0
  189. package/pennyfarthing_scripts/preflight/__main__.py +10 -0
  190. package/pennyfarthing_scripts/preflight/__pycache__/__init__.cpython-314.pyc +0 -0
  191. package/pennyfarthing_scripts/preflight/__pycache__/__main__.cpython-314.pyc +0 -0
  192. package/pennyfarthing_scripts/preflight/__pycache__/cli.cpython-314.pyc +0 -0
  193. package/pennyfarthing_scripts/preflight/__pycache__/finish.cpython-314.pyc +0 -0
  194. package/pennyfarthing_scripts/preflight/cli.py +141 -0
  195. package/pennyfarthing_scripts/preflight/finish.py +382 -0
  196. package/pennyfarthing_scripts/pretooluse_hook.py +142 -0
  197. package/pennyfarthing_scripts/prime/__init__.py +125 -0
  198. package/pennyfarthing_scripts/prime/__main__.py +8 -0
  199. package/pennyfarthing_scripts/prime/__pycache__/__init__.cpython-314.pyc +0 -0
  200. package/pennyfarthing_scripts/prime/__pycache__/__main__.cpython-314.pyc +0 -0
  201. package/pennyfarthing_scripts/prime/__pycache__/cli.cpython-314.pyc +0 -0
  202. package/pennyfarthing_scripts/prime/__pycache__/loader.cpython-314.pyc +0 -0
  203. package/pennyfarthing_scripts/prime/__pycache__/models.cpython-314.pyc +0 -0
  204. package/pennyfarthing_scripts/prime/__pycache__/persona.cpython-314.pyc +0 -0
  205. package/pennyfarthing_scripts/prime/__pycache__/session.cpython-314.pyc +0 -0
  206. package/pennyfarthing_scripts/prime/__pycache__/workflow.cpython-314.pyc +0 -0
  207. package/pennyfarthing_scripts/prime/cli.py +375 -0
  208. package/pennyfarthing_scripts/prime/loader.py +239 -0
  209. package/pennyfarthing_scripts/prime/models.py +169 -0
  210. package/pennyfarthing_scripts/prime/persona.py +288 -0
  211. package/pennyfarthing_scripts/prime/session.py +183 -0
  212. package/pennyfarthing_scripts/prime/workflow.py +275 -0
  213. package/pennyfarthing_scripts/sprint/__init__.py +66 -0
  214. package/pennyfarthing_scripts/sprint/__main__.py +10 -0
  215. package/pennyfarthing_scripts/sprint/__pycache__/__init__.cpython-314.pyc +0 -0
  216. package/pennyfarthing_scripts/sprint/__pycache__/__main__.cpython-314.pyc +0 -0
  217. package/pennyfarthing_scripts/sprint/__pycache__/archive.cpython-314.pyc +0 -0
  218. package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
  219. package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-314.pyc +0 -0
  220. package/pennyfarthing_scripts/sprint/__pycache__/status.cpython-314.pyc +0 -0
  221. package/pennyfarthing_scripts/sprint/__pycache__/validator.cpython-314.pyc +0 -0
  222. package/pennyfarthing_scripts/sprint/__pycache__/work.cpython-314.pyc +0 -0
  223. package/pennyfarthing_scripts/sprint/archive.py +108 -0
  224. package/pennyfarthing_scripts/sprint/cli.py +124 -0
  225. package/pennyfarthing_scripts/sprint/loader.py +193 -0
  226. package/pennyfarthing_scripts/sprint/status.py +122 -0
  227. package/pennyfarthing_scripts/sprint/validator.py +405 -0
  228. package/pennyfarthing_scripts/sprint/work.py +192 -0
  229. package/pennyfarthing_scripts/story/__init__.py +67 -0
  230. package/pennyfarthing_scripts/story/__main__.py +10 -0
  231. package/pennyfarthing_scripts/story/cli.py +105 -0
  232. package/pennyfarthing_scripts/story/create.py +167 -0
  233. package/pennyfarthing_scripts/story/size.py +113 -0
  234. package/pennyfarthing_scripts/story/template.py +151 -0
  235. package/pennyfarthing_scripts/swebench.py +216 -0
  236. package/pennyfarthing_scripts/tests/__init__.py +1 -0
  237. package/pennyfarthing_scripts/tests/__pycache__/__init__.cpython-314.pyc +0 -0
  238. package/pennyfarthing_scripts/tests/__pycache__/conftest.cpython-314-pytest-9.0.2.pyc +0 -0
  239. package/pennyfarthing_scripts/tests/__pycache__/test_brownfield.cpython-314-pytest-9.0.2.pyc +0 -0
  240. package/pennyfarthing_scripts/tests/__pycache__/test_git_utils.cpython-314-pytest-9.0.2.pyc +0 -0
  241. package/pennyfarthing_scripts/tests/__pycache__/test_prime.cpython-314-pytest-9.0.2.pyc +0 -0
  242. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_validator.cpython-314-pytest-9.0.2.pyc +0 -0
  243. package/pennyfarthing_scripts/tests/conftest.py +106 -0
  244. package/pennyfarthing_scripts/tests/test_brownfield.py +842 -0
  245. package/pennyfarthing_scripts/tests/test_cli_modules.py +245 -0
  246. package/pennyfarthing_scripts/tests/test_common.py +180 -0
  247. package/pennyfarthing_scripts/tests/test_git_utils.py +866 -0
  248. package/pennyfarthing_scripts/tests/test_jira_package.py +334 -0
  249. package/pennyfarthing_scripts/tests/test_package_structure.py +372 -0
  250. package/pennyfarthing_scripts/tests/test_prime.py +1050 -0
  251. package/pennyfarthing_scripts/tests/test_sprint_package.py +236 -0
  252. package/pennyfarthing_scripts/tests/test_sprint_validator.py +675 -0
  253. package/pennyfarthing_scripts/tests/test_story_package.py +156 -0
  254. package/pennyfarthing_scripts/welcome_hook.py +157 -0
  255. package/pennyfarthing_scripts/workflow.py +183 -0
  256. package/pennyfarthing-dist/personas/BENCHMARK-METHODOLOGY.md +0 -105
  257. package/pennyfarthing-dist/personas/OCEAN-BENCHMARKING.md +0 -210
  258. package/pennyfarthing-dist/personas/TRAIL-OCEAN-MAPPING.md +0 -168
  259. package/pennyfarthing-dist/personas/ZEITGEIST-ANALYSIS.md +0 -171
  260. package/pennyfarthing-dist/personas/attributes.yaml +0 -69
  261. package/pennyfarthing-dist/personas/scripts/add-zeitgeist-calibrated.py +0 -81
  262. package/pennyfarthing-dist/personas/scripts/add-zeitgeist-scores.sh +0 -56
  263. package/pennyfarthing-dist/personas/zeitgeist-scores.yaml +0 -1172
  264. package/pennyfarthing-dist/scripts/core/run.sh +0 -92
  265. /package/{bin → packages/core/bin}/pennyfarthing.js +0 -0
  266. /package/{dist → packages/core/dist}/bmad/context-reader.d.ts +0 -0
  267. /package/{dist → packages/core/dist}/bmad/context-reader.d.ts.map +0 -0
  268. /package/{dist → packages/core/dist}/bmad/context-reader.js +0 -0
  269. /package/{dist → packages/core/dist}/bmad/context-reader.js.map +0 -0
  270. /package/{dist → packages/core/dist}/bmad/context-reader.test.d.ts +0 -0
  271. /package/{dist → packages/core/dist}/bmad/context-reader.test.d.ts.map +0 -0
  272. /package/{dist → packages/core/dist}/bmad/context-reader.test.js +0 -0
  273. /package/{dist → packages/core/dist}/bmad/context-reader.test.js.map +0 -0
  274. /package/{dist → packages/core/dist}/bmad/epics-parser.d.ts +0 -0
  275. /package/{dist → packages/core/dist}/bmad/epics-parser.d.ts.map +0 -0
  276. /package/{dist → packages/core/dist}/bmad/epics-parser.js +0 -0
  277. /package/{dist → packages/core/dist}/bmad/epics-parser.js.map +0 -0
  278. /package/{dist → packages/core/dist}/bmad/epics-parser.test.d.ts +0 -0
  279. /package/{dist → packages/core/dist}/bmad/epics-parser.test.d.ts.map +0 -0
  280. /package/{dist → packages/core/dist}/bmad/epics-parser.test.js +0 -0
  281. /package/{dist → packages/core/dist}/bmad/epics-parser.test.js.map +0 -0
  282. /package/{dist → packages/core/dist}/bmad/index.d.ts +0 -0
  283. /package/{dist → packages/core/dist}/bmad/index.d.ts.map +0 -0
  284. /package/{dist → packages/core/dist}/bmad/index.js +0 -0
  285. /package/{dist → packages/core/dist}/bmad/index.js.map +0 -0
  286. /package/{dist → packages/core/dist}/bmad/status-sync.d.ts +0 -0
  287. /package/{dist → packages/core/dist}/bmad/status-sync.d.ts.map +0 -0
  288. /package/{dist → packages/core/dist}/bmad/status-sync.js +0 -0
  289. /package/{dist → packages/core/dist}/bmad/status-sync.js.map +0 -0
  290. /package/{dist → packages/core/dist}/bmad/status-sync.test.d.ts +0 -0
  291. /package/{dist → packages/core/dist}/bmad/status-sync.test.d.ts.map +0 -0
  292. /package/{dist → packages/core/dist}/bmad/status-sync.test.js +0 -0
  293. /package/{dist → packages/core/dist}/bmad/status-sync.test.js.map +0 -0
  294. /package/{dist → packages/core/dist}/bmad/story-exporter.d.ts +0 -0
  295. /package/{dist → packages/core/dist}/bmad/story-exporter.d.ts.map +0 -0
  296. /package/{dist → packages/core/dist}/bmad/story-exporter.js +0 -0
  297. /package/{dist → packages/core/dist}/bmad/story-exporter.js.map +0 -0
  298. /package/{dist → packages/core/dist}/bmad/story-exporter.test.d.ts +0 -0
  299. /package/{dist → packages/core/dist}/bmad/story-exporter.test.d.ts.map +0 -0
  300. /package/{dist → packages/core/dist}/bmad/story-exporter.test.js +0 -0
  301. /package/{dist → packages/core/dist}/bmad/story-exporter.test.js.map +0 -0
  302. /package/{dist → packages/core/dist}/bmad/story-parser.d.ts +0 -0
  303. /package/{dist → packages/core/dist}/bmad/story-parser.d.ts.map +0 -0
  304. /package/{dist → packages/core/dist}/bmad/story-parser.js +0 -0
  305. /package/{dist → packages/core/dist}/bmad/story-parser.js.map +0 -0
  306. /package/{dist → packages/core/dist}/bmad/story-parser.test.d.ts +0 -0
  307. /package/{dist → packages/core/dist}/bmad/story-parser.test.d.ts.map +0 -0
  308. /package/{dist → packages/core/dist}/bmad/story-parser.test.js +0 -0
  309. /package/{dist → packages/core/dist}/bmad/story-parser.test.js.map +0 -0
  310. /package/{dist → packages/core/dist}/cli/commands/command.d.ts +0 -0
  311. /package/{dist → packages/core/dist}/cli/commands/command.d.ts.map +0 -0
  312. /package/{dist → packages/core/dist}/cli/commands/command.js +0 -0
  313. /package/{dist → packages/core/dist}/cli/commands/command.js.map +0 -0
  314. /package/{dist → packages/core/dist}/cli/commands/cyclist.d.ts +0 -0
  315. /package/{dist → packages/core/dist}/cli/commands/cyclist.d.ts.map +0 -0
  316. /package/{dist → packages/core/dist}/cli/commands/cyclist.js +0 -0
  317. /package/{dist → packages/core/dist}/cli/commands/cyclist.js.map +0 -0
  318. /package/{dist → packages/core/dist}/cli/commands/cyclist.test.d.ts +0 -0
  319. /package/{dist → packages/core/dist}/cli/commands/cyclist.test.d.ts.map +0 -0
  320. /package/{dist → packages/core/dist}/cli/commands/cyclist.test.js +0 -0
  321. /package/{dist → packages/core/dist}/cli/commands/cyclist.test.js.map +0 -0
  322. /package/{dist → packages/core/dist}/cli/commands/doctor-legacy.test.d.ts +0 -0
  323. /package/{dist → packages/core/dist}/cli/commands/doctor-legacy.test.d.ts.map +0 -0
  324. /package/{dist → packages/core/dist}/cli/commands/doctor-legacy.test.js +0 -0
  325. /package/{dist → packages/core/dist}/cli/commands/doctor-legacy.test.js.map +0 -0
  326. /package/{dist → packages/core/dist}/cli/commands/doctor.d.ts +0 -0
  327. /package/{dist → packages/core/dist}/cli/commands/doctor.d.ts.map +0 -0
  328. /package/{dist → packages/core/dist}/cli/commands/doctor.js +0 -0
  329. /package/{dist → packages/core/dist}/cli/commands/doctor.js.map +0 -0
  330. /package/{dist → packages/core/dist}/cli/commands/init.d.ts +0 -0
  331. /package/{dist → packages/core/dist}/cli/commands/init.d.ts.map +0 -0
  332. /package/{dist → packages/core/dist}/cli/commands/init.js +0 -0
  333. /package/{dist → packages/core/dist}/cli/commands/init.js.map +0 -0
  334. /package/{dist → packages/core/dist}/cli/commands/skill.d.ts +0 -0
  335. /package/{dist → packages/core/dist}/cli/commands/skill.d.ts.map +0 -0
  336. /package/{dist → packages/core/dist}/cli/commands/skill.js +0 -0
  337. /package/{dist → packages/core/dist}/cli/commands/skill.js.map +0 -0
  338. /package/{dist → packages/core/dist}/cli/commands/theme.d.ts +0 -0
  339. /package/{dist → packages/core/dist}/cli/commands/theme.d.ts.map +0 -0
  340. /package/{dist → packages/core/dist}/cli/commands/theme.js +0 -0
  341. /package/{dist → packages/core/dist}/cli/commands/theme.js.map +0 -0
  342. /package/{dist → packages/core/dist}/cli/commands/uninstall.d.ts +0 -0
  343. /package/{dist → packages/core/dist}/cli/commands/uninstall.d.ts.map +0 -0
  344. /package/{dist → packages/core/dist}/cli/commands/uninstall.js +0 -0
  345. /package/{dist → packages/core/dist}/cli/commands/uninstall.js.map +0 -0
  346. /package/{dist → packages/core/dist}/cli/commands/update.d.ts +0 -0
  347. /package/{dist → packages/core/dist}/cli/commands/update.d.ts.map +0 -0
  348. /package/{dist → packages/core/dist}/cli/commands/update.js +0 -0
  349. /package/{dist → packages/core/dist}/cli/commands/update.js.map +0 -0
  350. /package/{dist → packages/core/dist}/cli/commands/version.d.ts +0 -0
  351. /package/{dist → packages/core/dist}/cli/commands/version.d.ts.map +0 -0
  352. /package/{dist → packages/core/dist}/cli/commands/version.js +0 -0
  353. /package/{dist → packages/core/dist}/cli/commands/version.js.map +0 -0
  354. /package/{dist → packages/core/dist}/cli/customization.test.d.ts +0 -0
  355. /package/{dist → packages/core/dist}/cli/customization.test.d.ts.map +0 -0
  356. /package/{dist → packages/core/dist}/cli/customization.test.js +0 -0
  357. /package/{dist → packages/core/dist}/cli/customization.test.js.map +0 -0
  358. /package/{dist → packages/core/dist}/cli/cyclist-migration.test.d.ts +0 -0
  359. /package/{dist → packages/core/dist}/cli/cyclist-migration.test.d.ts.map +0 -0
  360. /package/{dist → packages/core/dist}/cli/cyclist-migration.test.js +0 -0
  361. /package/{dist → packages/core/dist}/cli/cyclist-migration.test.js.map +0 -0
  362. /package/{dist → packages/core/dist}/cli/index.d.ts +0 -0
  363. /package/{dist → packages/core/dist}/cli/index.d.ts.map +0 -0
  364. /package/{dist → packages/core/dist}/cli/index.js +0 -0
  365. /package/{dist → packages/core/dist}/cli/index.js.map +0 -0
  366. /package/{dist → packages/core/dist}/cli/ocean-profiles.test.d.ts +0 -0
  367. /package/{dist → packages/core/dist}/cli/ocean-profiles.test.d.ts.map +0 -0
  368. /package/{dist → packages/core/dist}/cli/ocean-profiles.test.js +0 -0
  369. /package/{dist → packages/core/dist}/cli/ocean-profiles.test.js.map +0 -0
  370. /package/{dist → packages/core/dist}/cli/theme-maker.test.d.ts +0 -0
  371. /package/{dist → packages/core/dist}/cli/theme-maker.test.d.ts.map +0 -0
  372. /package/{dist → packages/core/dist}/cli/theme-maker.test.js +0 -0
  373. /package/{dist → packages/core/dist}/cli/theme-maker.test.js.map +0 -0
  374. /package/{dist → packages/core/dist}/cli/utils/constants.d.ts +0 -0
  375. /package/{dist → packages/core/dist}/cli/utils/constants.d.ts.map +0 -0
  376. /package/{dist → packages/core/dist}/cli/utils/constants.js +0 -0
  377. /package/{dist → packages/core/dist}/cli/utils/constants.js.map +0 -0
  378. /package/{dist → packages/core/dist}/cli/utils/logger.d.ts +0 -0
  379. /package/{dist → packages/core/dist}/cli/utils/logger.d.ts.map +0 -0
  380. /package/{dist → packages/core/dist}/cli/utils/logger.js +0 -0
  381. /package/{dist → packages/core/dist}/cli/utils/logger.js.map +0 -0
  382. /package/{dist → packages/core/dist}/cli/utils/manifest.d.ts +0 -0
  383. /package/{dist → packages/core/dist}/cli/utils/manifest.d.ts.map +0 -0
  384. /package/{dist → packages/core/dist}/cli/utils/manifest.js +0 -0
  385. /package/{dist → packages/core/dist}/cli/utils/manifest.js.map +0 -0
  386. /package/{dist → packages/core/dist}/cli/utils/node-modules.d.ts +0 -0
  387. /package/{dist → packages/core/dist}/cli/utils/node-modules.d.ts.map +0 -0
  388. /package/{dist → packages/core/dist}/cli/utils/node-modules.js +0 -0
  389. /package/{dist → packages/core/dist}/cli/utils/node-modules.js.map +0 -0
  390. /package/{dist → packages/core/dist}/cli/utils/prompts.d.ts +0 -0
  391. /package/{dist → packages/core/dist}/cli/utils/prompts.d.ts.map +0 -0
  392. /package/{dist → packages/core/dist}/cli/utils/prompts.js +0 -0
  393. /package/{dist → packages/core/dist}/cli/utils/prompts.js.map +0 -0
  394. /package/{dist → packages/core/dist}/cli/utils/symlinks.d.ts +0 -0
  395. /package/{dist → packages/core/dist}/cli/utils/symlinks.d.ts.map +0 -0
  396. /package/{dist → packages/core/dist}/cli/utils/symlinks.js +0 -0
  397. /package/{dist → packages/core/dist}/cli/utils/symlinks.js.map +0 -0
  398. /package/{dist → packages/core/dist}/cli/utils/themes.d.ts +0 -0
  399. /package/{dist → packages/core/dist}/cli/utils/themes.d.ts.map +0 -0
  400. /package/{dist → packages/core/dist}/cli/utils/themes.js +0 -0
  401. /package/{dist → packages/core/dist}/cli/utils/themes.js.map +0 -0
  402. /package/{dist → packages/core/dist}/cli/utils/themes.test.d.ts +0 -0
  403. /package/{dist → packages/core/dist}/cli/utils/themes.test.d.ts.map +0 -0
  404. /package/{dist → packages/core/dist}/cli/utils/themes.test.js +0 -0
  405. /package/{dist → packages/core/dist}/cli/utils/themes.test.js.map +0 -0
  406. /package/{dist → packages/core/dist}/cli/utils/version.d.ts +0 -0
  407. /package/{dist → packages/core/dist}/cli/utils/version.d.ts.map +0 -0
  408. /package/{dist → packages/core/dist}/cli/utils/version.js +0 -0
  409. /package/{dist → packages/core/dist}/cli/utils/version.js.map +0 -0
  410. /package/{dist → packages/core/dist}/cli/workspace.test.d.ts +0 -0
  411. /package/{dist → packages/core/dist}/cli/workspace.test.d.ts.map +0 -0
  412. /package/{dist → packages/core/dist}/index.d.ts +0 -0
  413. /package/{dist → packages/core/dist}/index.d.ts.map +0 -0
  414. /package/{dist → packages/core/dist}/index.js +0 -0
  415. /package/{dist → packages/core/dist}/index.js.map +0 -0
  416. /package/{dist → packages/core/dist}/jira/jira-epic-creation.d.ts +0 -0
  417. /package/{dist → packages/core/dist}/jira/jira-epic-creation.d.ts.map +0 -0
  418. /package/{dist → packages/core/dist}/jira/jira-epic-creation.js +0 -0
  419. /package/{dist → packages/core/dist}/jira/jira-epic-creation.js.map +0 -0
  420. /package/{dist → packages/core/dist}/jira/jira-epic-creation.test.d.ts +0 -0
  421. /package/{dist → packages/core/dist}/jira/jira-epic-creation.test.d.ts.map +0 -0
  422. /package/{dist → packages/core/dist}/jira/jira-epic-creation.test.js +0 -0
  423. /package/{dist → packages/core/dist}/jira/jira-epic-creation.test.js.map +0 -0
  424. /package/{dist → packages/core/dist}/jira/jira-sprint-sync.d.ts +0 -0
  425. /package/{dist → packages/core/dist}/jira/jira-sprint-sync.d.ts.map +0 -0
  426. /package/{dist → packages/core/dist}/jira/jira-sprint-sync.js +0 -0
  427. /package/{dist → packages/core/dist}/jira/jira-sprint-sync.js.map +0 -0
  428. /package/{dist → packages/core/dist}/jira/jira-sprint-sync.test.d.ts +0 -0
  429. /package/{dist → packages/core/dist}/jira/jira-sprint-sync.test.d.ts.map +0 -0
  430. /package/{dist → packages/core/dist}/jira/jira-sprint-sync.test.js +0 -0
  431. /package/{dist → packages/core/dist}/jira/jira-sprint-sync.test.js.map +0 -0
  432. /package/{dist → packages/core/dist}/permissions/index.d.ts +0 -0
  433. /package/{dist → packages/core/dist}/permissions/index.d.ts.map +0 -0
  434. /package/{dist → packages/core/dist}/permissions/index.js +0 -0
  435. /package/{dist → packages/core/dist}/permissions/index.js.map +0 -0
  436. /package/{dist → packages/core/dist}/permissions/permission-schema.d.ts +0 -0
  437. /package/{dist → packages/core/dist}/permissions/permission-schema.d.ts.map +0 -0
  438. /package/{dist → packages/core/dist}/permissions/permission-schema.js +0 -0
  439. /package/{dist → packages/core/dist}/permissions/permission-schema.js.map +0 -0
  440. /package/{dist → packages/core/dist}/permissions/permission-schema.test.d.ts +0 -0
  441. /package/{dist → packages/core/dist}/permissions/permission-schema.test.d.ts.map +0 -0
  442. /package/{dist → packages/core/dist}/permissions/permission-schema.test.js +0 -0
  443. /package/{dist → packages/core/dist}/permissions/permission-schema.test.js.map +0 -0
  444. /package/{dist → packages/core/dist}/scripts/add-ocean-profiles.d.ts +0 -0
  445. /package/{dist → packages/core/dist}/scripts/add-ocean-profiles.d.ts.map +0 -0
  446. /package/{dist → packages/core/dist}/scripts/add-ocean-profiles.js +0 -0
  447. /package/{dist → packages/core/dist}/scripts/add-ocean-profiles.js.map +0 -0
  448. /package/{dist → packages/core/dist}/scripts/benchmark-integration.d.ts +0 -0
  449. /package/{dist → packages/core/dist}/scripts/benchmark-integration.d.ts.map +0 -0
  450. /package/{dist → packages/core/dist}/scripts/benchmark-integration.js +0 -0
  451. /package/{dist → packages/core/dist}/scripts/benchmark-integration.js.map +0 -0
  452. /package/{dist → packages/core/dist}/scripts/benchmark-integration.test.d.ts +0 -0
  453. /package/{dist → packages/core/dist}/scripts/benchmark-integration.test.d.ts.map +0 -0
  454. /package/{dist → packages/core/dist}/scripts/benchmark-integration.test.js +0 -0
  455. /package/{dist → packages/core/dist}/scripts/benchmark-integration.test.js.map +0 -0
  456. /package/{dist → packages/core/dist}/scripts/debugging-scenarios.test.d.ts +0 -0
  457. /package/{dist → packages/core/dist}/scripts/debugging-scenarios.test.d.ts.map +0 -0
  458. /package/{dist → packages/core/dist}/scripts/debugging-scenarios.test.js +0 -0
  459. /package/{dist → packages/core/dist}/scripts/debugging-scenarios.test.js.map +0 -0
  460. /package/{dist → packages/core/dist}/scripts/generate-all-spiders.d.ts +0 -0
  461. /package/{dist → packages/core/dist}/scripts/generate-all-spiders.d.ts.map +0 -0
  462. /package/{dist → packages/core/dist}/scripts/generate-all-spiders.js +0 -0
  463. /package/{dist → packages/core/dist}/scripts/generate-all-spiders.js.map +0 -0
  464. /package/{dist → packages/core/dist}/scripts/generate-report.d.ts +0 -0
  465. /package/{dist → packages/core/dist}/scripts/generate-report.d.ts.map +0 -0
  466. /package/{dist → packages/core/dist}/scripts/generate-report.js +0 -0
  467. /package/{dist → packages/core/dist}/scripts/generate-report.js.map +0 -0
  468. /package/{dist → packages/core/dist}/scripts/generate-report.test.d.ts +0 -0
  469. /package/{dist → packages/core/dist}/scripts/generate-report.test.d.ts.map +0 -0
  470. /package/{dist → packages/core/dist}/scripts/generate-report.test.js +0 -0
  471. /package/{dist → packages/core/dist}/scripts/generate-report.test.js.map +0 -0
  472. /package/{dist → packages/core/dist}/scripts/generate-spider-report.d.ts +0 -0
  473. /package/{dist → packages/core/dist}/scripts/generate-spider-report.d.ts.map +0 -0
  474. /package/{dist → packages/core/dist}/scripts/generate-spider-report.js +0 -0
  475. /package/{dist → packages/core/dist}/scripts/generate-spider-report.js.map +0 -0
  476. /package/{dist → packages/core/dist}/scripts/generate-spider-report.test.d.ts +0 -0
  477. /package/{dist → packages/core/dist}/scripts/generate-spider-report.test.d.ts.map +0 -0
  478. /package/{dist → packages/core/dist}/scripts/generate-spider-report.test.js +0 -0
  479. /package/{dist → packages/core/dist}/scripts/generate-spider-report.test.js.map +0 -0
  480. /package/{dist → packages/core/dist}/scripts/generate-spider.d.ts +0 -0
  481. /package/{dist → packages/core/dist}/scripts/generate-spider.d.ts.map +0 -0
  482. /package/{dist → packages/core/dist}/scripts/generate-spider.js +0 -0
  483. /package/{dist → packages/core/dist}/scripts/generate-spider.js.map +0 -0
  484. /package/{dist → packages/core/dist}/scripts/generate-spider.test.d.ts +0 -0
  485. /package/{dist → packages/core/dist}/scripts/generate-spider.test.d.ts.map +0 -0
  486. /package/{dist → packages/core/dist}/scripts/generate-spider.test.js +0 -0
  487. /package/{dist → packages/core/dist}/scripts/generate-spider.test.js.map +0 -0
  488. /package/{dist → packages/core/dist}/scripts/job-fair-aggregator.d.ts +0 -0
  489. /package/{dist → packages/core/dist}/scripts/job-fair-aggregator.d.ts.map +0 -0
  490. /package/{dist → packages/core/dist}/scripts/job-fair-aggregator.js +0 -0
  491. /package/{dist → packages/core/dist}/scripts/job-fair-aggregator.js.map +0 -0
  492. /package/{dist → packages/core/dist}/scripts/job-fair-aggregator.test.d.ts +0 -0
  493. /package/{dist → packages/core/dist}/scripts/job-fair-aggregator.test.d.ts.map +0 -0
  494. /package/{dist → packages/core/dist}/scripts/job-fair-aggregator.test.js +0 -0
  495. /package/{dist → packages/core/dist}/scripts/job-fair-aggregator.test.js.map +0 -0
  496. /package/{dist → packages/core/dist}/scripts/run-ci.test.d.ts +0 -0
  497. /package/{dist → packages/core/dist}/scripts/run-ci.test.d.ts.map +0 -0
  498. /package/{dist → packages/core/dist}/scripts/run-ci.test.js +0 -0
  499. /package/{dist → packages/core/dist}/scripts/run-ci.test.js.map +0 -0
  500. /package/{dist → packages/core/dist}/scripts/theme-detail.test.d.ts +0 -0
  501. /package/{dist → packages/core/dist}/scripts/theme-detail.test.d.ts.map +0 -0
  502. /package/{dist → packages/core/dist}/scripts/theme-detail.test.js +0 -0
  503. /package/{dist → packages/core/dist}/scripts/theme-detail.test.js.map +0 -0
  504. /package/{dist → packages/core/dist}/scripts/validate-ocean-profiles.d.ts +0 -0
  505. /package/{dist → packages/core/dist}/scripts/validate-ocean-profiles.d.ts.map +0 -0
  506. /package/{dist → packages/core/dist}/scripts/validate-ocean-profiles.js +0 -0
  507. /package/{dist → packages/core/dist}/scripts/validate-ocean-profiles.js.map +0 -0
  508. /package/{dist → packages/core/dist}/workflow/gate-handler.d.ts +0 -0
  509. /package/{dist → packages/core/dist}/workflow/gate-handler.d.ts.map +0 -0
  510. /package/{dist → packages/core/dist}/workflow/gate-handler.js +0 -0
  511. /package/{dist → packages/core/dist}/workflow/gate-handler.js.map +0 -0
  512. /package/{dist → packages/core/dist}/workflow/gate-handler.test.d.ts +0 -0
  513. /package/{dist → packages/core/dist}/workflow/gate-handler.test.d.ts.map +0 -0
  514. /package/{dist → packages/core/dist}/workflow/gate-handler.test.js +0 -0
  515. /package/{dist → packages/core/dist}/workflow/gate-handler.test.js.map +0 -0
  516. /package/{dist → packages/core/dist}/workflow/generic-sm-finish.d.ts +0 -0
  517. /package/{dist → packages/core/dist}/workflow/generic-sm-finish.d.ts.map +0 -0
  518. /package/{dist → packages/core/dist}/workflow/generic-sm-finish.js +0 -0
  519. /package/{dist → packages/core/dist}/workflow/generic-sm-finish.js.map +0 -0
  520. /package/{dist → packages/core/dist}/workflow/generic-sm-setup.d.ts +0 -0
  521. /package/{dist → packages/core/dist}/workflow/generic-sm-setup.d.ts.map +0 -0
  522. /package/{dist → packages/core/dist}/workflow/generic-sm-setup.js +0 -0
  523. /package/{dist → packages/core/dist}/workflow/generic-sm-setup.js.map +0 -0
  524. /package/{dist → packages/core/dist}/workflow/handoff.d.ts +0 -0
  525. /package/{dist → packages/core/dist}/workflow/handoff.d.ts.map +0 -0
  526. /package/{dist → packages/core/dist}/workflow/handoff.js +0 -0
  527. /package/{dist → packages/core/dist}/workflow/handoff.js.map +0 -0
  528. /package/{dist → packages/core/dist}/workflow/handoff.test.d.ts +0 -0
  529. /package/{dist → packages/core/dist}/workflow/handoff.test.d.ts.map +0 -0
  530. /package/{dist → packages/core/dist}/workflow/handoff.test.js +0 -0
  531. /package/{dist → packages/core/dist}/workflow/handoff.test.js.map +0 -0
  532. /package/{dist → packages/core/dist}/workflow/index.d.ts +0 -0
  533. /package/{dist → packages/core/dist}/workflow/index.d.ts.map +0 -0
  534. /package/{dist → packages/core/dist}/workflow/index.js +0 -0
  535. /package/{dist → packages/core/dist}/workflow/index.js.map +0 -0
  536. /package/{dist → packages/core/dist}/workflow/session-state.d.ts +0 -0
  537. /package/{dist → packages/core/dist}/workflow/session-state.d.ts.map +0 -0
  538. /package/{dist → packages/core/dist}/workflow/session-state.js +0 -0
  539. /package/{dist → packages/core/dist}/workflow/session-state.js.map +0 -0
  540. /package/{dist → packages/core/dist}/workflow/session-state.test.d.ts +0 -0
  541. /package/{dist → packages/core/dist}/workflow/session-state.test.d.ts.map +0 -0
  542. /package/{dist → packages/core/dist}/workflow/session-state.test.js +0 -0
  543. /package/{dist → packages/core/dist}/workflow/session-state.test.js.map +0 -0
  544. /package/{dist → packages/core/dist}/workflow/sm-subagents.test.d.ts +0 -0
  545. /package/{dist → packages/core/dist}/workflow/sm-subagents.test.d.ts.map +0 -0
  546. /package/{dist → packages/core/dist}/workflow/sm-subagents.test.js +0 -0
  547. /package/{dist → packages/core/dist}/workflow/sm-subagents.test.js.map +0 -0
  548. /package/{dist → packages/core/dist}/workflow/step-parser.d.ts +0 -0
  549. /package/{dist → packages/core/dist}/workflow/step-parser.d.ts.map +0 -0
  550. /package/{dist → packages/core/dist}/workflow/step-parser.js +0 -0
  551. /package/{dist → packages/core/dist}/workflow/step-parser.js.map +0 -0
  552. /package/{dist → packages/core/dist}/workflow/step-parser.test.d.ts +0 -0
  553. /package/{dist → packages/core/dist}/workflow/step-parser.test.d.ts.map +0 -0
  554. /package/{dist → packages/core/dist}/workflow/step-parser.test.js +0 -0
  555. /package/{dist → packages/core/dist}/workflow/step-parser.test.js.map +0 -0
  556. /package/{dist → packages/core/dist}/workflow/story-workflow-routing.test.d.ts +0 -0
  557. /package/{dist → packages/core/dist}/workflow/story-workflow-routing.test.d.ts.map +0 -0
  558. /package/{dist → packages/core/dist}/workflow/story-workflow-routing.test.js +0 -0
  559. /package/{dist → packages/core/dist}/workflow/story-workflow-routing.test.js.map +0 -0
  560. /package/{dist → packages/core/dist}/workflow/test-cache.d.ts +0 -0
  561. /package/{dist → packages/core/dist}/workflow/test-cache.d.ts.map +0 -0
  562. /package/{dist → packages/core/dist}/workflow/test-cache.js +0 -0
  563. /package/{dist → packages/core/dist}/workflow/test-cache.js.map +0 -0
  564. /package/{dist → packages/core/dist}/workflow/test-cache.test.d.ts +0 -0
  565. /package/{dist → packages/core/dist}/workflow/test-cache.test.d.ts.map +0 -0
  566. /package/{dist → packages/core/dist}/workflow/test-cache.test.js +0 -0
  567. /package/{dist → packages/core/dist}/workflow/test-cache.test.js.map +0 -0
  568. /package/{dist → packages/core/dist}/workflow/trimodal.d.ts +0 -0
  569. /package/{dist → packages/core/dist}/workflow/trimodal.d.ts.map +0 -0
  570. /package/{dist → packages/core/dist}/workflow/trimodal.js +0 -0
  571. /package/{dist → packages/core/dist}/workflow/trimodal.js.map +0 -0
  572. /package/{dist → packages/core/dist}/workflow/trimodal.test.d.ts +0 -0
  573. /package/{dist → packages/core/dist}/workflow/trimodal.test.d.ts.map +0 -0
  574. /package/{dist → packages/core/dist}/workflow/trimodal.test.js +0 -0
  575. /package/{dist → packages/core/dist}/workflow/trimodal.test.js.map +0 -0
  576. /package/{dist → packages/core/dist}/workflow/variable-resolver.d.ts +0 -0
  577. /package/{dist → packages/core/dist}/workflow/variable-resolver.d.ts.map +0 -0
  578. /package/{dist → packages/core/dist}/workflow/variable-resolver.js +0 -0
  579. /package/{dist → packages/core/dist}/workflow/variable-resolver.js.map +0 -0
  580. /package/{dist → packages/core/dist}/workflow/variable-resolver.test.d.ts +0 -0
  581. /package/{dist → packages/core/dist}/workflow/variable-resolver.test.d.ts.map +0 -0
  582. /package/{dist → packages/core/dist}/workflow/variable-resolver.test.js +0 -0
  583. /package/{dist → packages/core/dist}/workflow/variable-resolver.test.js.map +0 -0
  584. /package/{dist → packages/core/dist}/workflow/workflow-executor.d.ts +0 -0
  585. /package/{dist → packages/core/dist}/workflow/workflow-executor.d.ts.map +0 -0
  586. /package/{dist → packages/core/dist}/workflow/workflow-executor.js +0 -0
  587. /package/{dist → packages/core/dist}/workflow/workflow-executor.js.map +0 -0
  588. /package/{dist → packages/core/dist}/workflow/workflow-executor.test.d.ts +0 -0
  589. /package/{dist → packages/core/dist}/workflow/workflow-executor.test.d.ts.map +0 -0
  590. /package/{dist → packages/core/dist}/workflow/workflow-executor.test.js +0 -0
  591. /package/{dist → packages/core/dist}/workflow/workflow-executor.test.js.map +0 -0
  592. /package/{dist → packages/core/dist}/workflow/workflow-loader.d.ts +0 -0
  593. /package/{dist → packages/core/dist}/workflow/workflow-loader.d.ts.map +0 -0
  594. /package/{dist → packages/core/dist}/workflow/workflow-loader.js +0 -0
  595. /package/{dist → packages/core/dist}/workflow/workflow-loader.js.map +0 -0
  596. /package/{dist → packages/core/dist}/workflow/workflow-loader.test.d.ts +0 -0
  597. /package/{dist → packages/core/dist}/workflow/workflow-loader.test.d.ts.map +0 -0
  598. /package/{dist → packages/core/dist}/workflow/workflow-loader.test.js +0 -0
  599. /package/{dist → packages/core/dist}/workflow/workflow-loader.test.js.map +0 -0
  600. /package/{dist → packages/core/dist}/workflow/workflow-migration.test.d.ts +0 -0
  601. /package/{dist → packages/core/dist}/workflow/workflow-migration.test.d.ts.map +0 -0
  602. /package/{dist → packages/core/dist}/workflow/workflow-migration.test.js +0 -0
  603. /package/{dist → packages/core/dist}/workflow/workflow-migration.test.js.map +0 -0
  604. /package/{dist → packages/core/dist}/workflow/workflow-permissions.d.ts +0 -0
  605. /package/{dist → packages/core/dist}/workflow/workflow-permissions.d.ts.map +0 -0
  606. /package/{dist → packages/core/dist}/workflow/workflow-permissions.js +0 -0
  607. /package/{dist → packages/core/dist}/workflow/workflow-permissions.js.map +0 -0
  608. /package/{dist → packages/core/dist}/workflow/workflow-permissions.test.d.ts +0 -0
  609. /package/{dist → packages/core/dist}/workflow/workflow-permissions.test.d.ts.map +0 -0
  610. /package/{dist → packages/core/dist}/workflow/workflow-permissions.test.js +0 -0
  611. /package/{dist → packages/core/dist}/workflow/workflow-permissions.test.js.map +0 -0
  612. /package/{dist → packages/core/dist}/workflow/workflow-router.d.ts +0 -0
  613. /package/{dist → packages/core/dist}/workflow/workflow-router.d.ts.map +0 -0
  614. /package/{dist → packages/core/dist}/workflow/workflow-router.js +0 -0
  615. /package/{dist → packages/core/dist}/workflow/workflow-router.js.map +0 -0
  616. /package/{dist → packages/core/dist}/workflow/workflow-router.test.d.ts +0 -0
  617. /package/{dist → packages/core/dist}/workflow/workflow-router.test.d.ts.map +0 -0
  618. /package/{dist → packages/core/dist}/workflow/workflow-router.test.js +0 -0
  619. /package/{dist → packages/core/dist}/workflow/workflow-router.test.js.map +0 -0
  620. /package/{dist → packages/core/dist}/workflow/workflow-schema.d.ts +0 -0
  621. /package/{dist → packages/core/dist}/workflow/workflow-schema.d.ts.map +0 -0
  622. /package/{dist → packages/core/dist}/workflow/workflow-schema.js +0 -0
  623. /package/{dist → packages/core/dist}/workflow/workflow-schema.js.map +0 -0
  624. /package/{dist → packages/core/dist}/workflow/workflow-schema.test.d.ts +0 -0
  625. /package/{dist → packages/core/dist}/workflow/workflow-schema.test.d.ts.map +0 -0
  626. /package/{dist → packages/core/dist}/workflow/workflow-schema.test.js +0 -0
  627. /package/{dist → packages/core/dist}/workflow/workflow-schema.test.js.map +0 -0
  628. /package/{dist → packages/core/dist}/workflow/workflow-stepped-schema.test.d.ts +0 -0
  629. /package/{dist → packages/core/dist}/workflow/workflow-stepped-schema.test.d.ts.map +0 -0
  630. /package/{dist → packages/core/dist}/workflow/workflow-stepped-schema.test.js +0 -0
  631. /package/{dist → packages/core/dist}/workflow/workflow-stepped-schema.test.js.map +0 -0
@@ -0,0 +1,439 @@
1
+ """
2
+ Create feature branches across repos - async parallel execution.
3
+
4
+ Story: MSSCI-12402 - Port git utility scripts to Python
5
+
6
+ Replaces: pennyfarthing-dist/scripts/git/create-feature-branches.sh
7
+
8
+ Features:
9
+ - asyncio.gather for true parallel git operations
10
+ - Idempotent: checks out existing or creates new branches
11
+ - Branches from develop
12
+ - Worktree-aware detection
13
+ - Cross-platform compatible
14
+ """
15
+
16
+ import asyncio
17
+ from dataclasses import dataclass
18
+ from enum import Enum
19
+ from pathlib import Path
20
+ from typing import Literal, Sequence
21
+
22
+
23
+ class BranchAction(Enum):
24
+ """Action taken when creating/checking out a branch."""
25
+
26
+ CREATED = "created" # New branch created from develop
27
+ CHECKED_OUT_LOCAL = "checked_out_local" # Existing local branch checked out
28
+ CHECKED_OUT_REMOTE = "checked_out_remote" # Remote branch checked out and tracked
29
+ SKIPPED = "skipped" # Repo skipped (not found)
30
+ ERROR = "error" # Error occurred
31
+
32
+
33
+ @dataclass
34
+ class BranchResult:
35
+ """Result of branch creation/checkout for a single repo."""
36
+
37
+ name: str
38
+ path: Path
39
+ branch: str
40
+ action: BranchAction
41
+ current_branch: str | None = None # Actual branch after operation
42
+ commit_info: str | None = None # Latest commit hash and message
43
+ tracking: str | None = None # Remote tracking branch if any
44
+ error: str | None = None # Error message if action is ERROR
45
+
46
+
47
+ async def _run_git_command(args: list[str], cwd: Path) -> tuple[str, str, int]:
48
+ """Run a git command asynchronously.
49
+
50
+ Args:
51
+ args: Git command arguments (without 'git')
52
+ cwd: Working directory for the command
53
+
54
+ Returns:
55
+ Tuple of (stdout, stderr, return_code)
56
+ """
57
+ proc = await asyncio.create_subprocess_exec(
58
+ "git",
59
+ *args,
60
+ cwd=cwd,
61
+ stdout=asyncio.subprocess.PIPE,
62
+ stderr=asyncio.subprocess.PIPE,
63
+ )
64
+ stdout, stderr = await proc.communicate()
65
+ return (
66
+ stdout.decode("utf-8", errors="replace").strip(),
67
+ stderr.decode("utf-8", errors="replace").strip(),
68
+ proc.returncode or 0,
69
+ )
70
+
71
+
72
+ async def create_or_checkout_branch(
73
+ name: str,
74
+ path: Path,
75
+ branch_name: str,
76
+ ) -> BranchResult:
77
+ """Create or checkout a feature branch in a single repo.
78
+
79
+ Behavior:
80
+ - If branch exists locally, check it out
81
+ - If branch exists on remote, check it out and track
82
+ - Otherwise, create new branch from develop
83
+
84
+ Args:
85
+ name: Display name for the repo
86
+ path: Path to the repository
87
+ branch_name: Name of the branch to create/checkout
88
+
89
+ Returns:
90
+ BranchResult with action taken and current state
91
+ """
92
+ # Check if path exists
93
+ if not path.exists():
94
+ return BranchResult(
95
+ name=name,
96
+ path=path,
97
+ branch=branch_name,
98
+ action=BranchAction.SKIPPED,
99
+ error=f"Directory not found: {path}",
100
+ )
101
+
102
+ # Check if it's a git repo
103
+ git_dir = path / ".git"
104
+ if not git_dir.exists():
105
+ try:
106
+ _, _, rc = await _run_git_command(["rev-parse", "--git-dir"], path)
107
+ if rc != 0:
108
+ return BranchResult(
109
+ name=name,
110
+ path=path,
111
+ branch=branch_name,
112
+ action=BranchAction.SKIPPED,
113
+ error=f"Not a git repository: {path}",
114
+ )
115
+ except Exception as e:
116
+ return BranchResult(
117
+ name=name,
118
+ path=path,
119
+ branch=branch_name,
120
+ action=BranchAction.ERROR,
121
+ error=f"Git command failed: {e}",
122
+ )
123
+
124
+ try:
125
+ # Fetch from origin first
126
+ await _run_git_command(["fetch", "origin", "--quiet"], path)
127
+
128
+ # Check if branch exists locally
129
+ local_ref, _, local_rc = await _run_git_command(
130
+ ["show-ref", "--verify", "--quiet", f"refs/heads/{branch_name}"], path
131
+ )
132
+
133
+ if local_rc == 0:
134
+ # Branch exists locally, check it out
135
+ _, _, checkout_rc = await _run_git_command(
136
+ ["checkout", branch_name], path
137
+ )
138
+ if checkout_rc != 0:
139
+ return BranchResult(
140
+ name=name,
141
+ path=path,
142
+ branch=branch_name,
143
+ action=BranchAction.ERROR,
144
+ error=f"Failed to checkout local branch {branch_name}",
145
+ )
146
+ action = BranchAction.CHECKED_OUT_LOCAL
147
+ else:
148
+ # Check if branch exists on remote
149
+ remote_ref, _, remote_rc = await _run_git_command(
150
+ ["show-ref", "--verify", "--quiet", f"refs/remotes/origin/{branch_name}"],
151
+ path,
152
+ )
153
+
154
+ if remote_rc == 0:
155
+ # Branch exists on remote, checkout and track
156
+ _, _, checkout_rc = await _run_git_command(
157
+ ["checkout", "-b", branch_name, f"origin/{branch_name}"], path
158
+ )
159
+ if checkout_rc != 0:
160
+ return BranchResult(
161
+ name=name,
162
+ path=path,
163
+ branch=branch_name,
164
+ action=BranchAction.ERROR,
165
+ error=f"Failed to checkout remote branch {branch_name}",
166
+ )
167
+ action = BranchAction.CHECKED_OUT_REMOTE
168
+ else:
169
+ # Branch doesn't exist, create from develop
170
+ # First ensure we have develop
171
+ await _run_git_command(
172
+ ["fetch", "origin", "develop:develop", "--quiet"], path
173
+ )
174
+
175
+ # Checkout develop
176
+ await _run_git_command(["checkout", "develop", "--quiet"], path)
177
+ await _run_git_command(["pull", "origin", "develop", "--quiet"], path)
178
+
179
+ # Create new branch
180
+ _, _, create_rc = await _run_git_command(
181
+ ["checkout", "-b", branch_name], path
182
+ )
183
+ if create_rc != 0:
184
+ return BranchResult(
185
+ name=name,
186
+ path=path,
187
+ branch=branch_name,
188
+ action=BranchAction.ERROR,
189
+ error=f"Failed to create branch {branch_name}",
190
+ )
191
+ action = BranchAction.CREATED
192
+
193
+ # Get current branch for verification
194
+ current_branch, _, _ = await _run_git_command(
195
+ ["branch", "--show-current"], path
196
+ )
197
+
198
+ # Get latest commit info
199
+ commit_info, _, _ = await _run_git_command(
200
+ ["log", "-1", "--format=%h - %s"], path
201
+ )
202
+
203
+ # Get tracking info
204
+ tracking, _, tracking_rc = await _run_git_command(
205
+ ["rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"], path
206
+ )
207
+ if tracking_rc != 0:
208
+ tracking = None
209
+
210
+ return BranchResult(
211
+ name=name,
212
+ path=path,
213
+ branch=branch_name,
214
+ action=action,
215
+ current_branch=current_branch,
216
+ commit_info=commit_info,
217
+ tracking=tracking,
218
+ )
219
+
220
+ except Exception as e:
221
+ return BranchResult(
222
+ name=name,
223
+ path=path,
224
+ branch=branch_name,
225
+ action=BranchAction.ERROR,
226
+ error=f"Error: {e}",
227
+ )
228
+
229
+
230
+ async def create_feature_branches(
231
+ repos: Sequence[tuple[str, Path]],
232
+ branch_name: str,
233
+ ) -> list[BranchResult]:
234
+ """Create feature branches across all repos in parallel using asyncio.gather.
235
+
236
+ Args:
237
+ repos: Sequence of (name, path) tuples for each repo
238
+ branch_name: Name of the branch to create/checkout
239
+
240
+ Returns:
241
+ List of BranchResult objects in same order as input
242
+ """
243
+ if not repos:
244
+ return []
245
+
246
+ tasks = [create_or_checkout_branch(name, path, branch_name) for name, path in repos]
247
+ results = await asyncio.gather(*tasks, return_exceptions=False)
248
+ return list(results)
249
+
250
+
251
+ def detect_worktree(current_dir: Path | None = None) -> tuple[bool, str | None, Path]:
252
+ """Detect if running in a git worktree.
253
+
254
+ Args:
255
+ current_dir: Directory to check (defaults to cwd)
256
+
257
+ Returns:
258
+ Tuple of (is_worktree, worktree_name, base_path)
259
+ - is_worktree: True if in a worktree
260
+ - worktree_name: Name of worktree if in one, else None
261
+ - base_path: Base path to use for repo operations
262
+ """
263
+ if current_dir is None:
264
+ current_dir = Path.cwd()
265
+
266
+ current_str = str(current_dir.resolve())
267
+
268
+ # Check if path contains /worktrees/
269
+ if "/worktrees/" in current_str:
270
+ # Extract worktree name from path
271
+ parts = current_str.split("/worktrees/")
272
+ if len(parts) >= 2:
273
+ worktree_name = parts[1].split("/")[0]
274
+ # Base path is up to and including worktrees/worktree_name
275
+ base_path = Path(parts[0]) / "worktrees" / worktree_name
276
+ return (True, worktree_name, base_path)
277
+
278
+ # Not in a worktree
279
+ try:
280
+ from pennyfarthing_scripts.common.config import get_project_root
281
+ base_path = get_project_root(current_dir)
282
+ except FileNotFoundError:
283
+ base_path = current_dir
284
+
285
+ return (False, None, base_path)
286
+
287
+
288
+ def format_results(results: Sequence[BranchResult], branch_name: str) -> str:
289
+ """Format branch creation results for display.
290
+
291
+ Args:
292
+ results: Sequence of BranchResult objects
293
+ branch_name: The target branch name
294
+
295
+ Returns:
296
+ Multi-line formatted string with results and verification
297
+ """
298
+ lines = []
299
+ lines.append(f"🌿 Creating/checking out feature branches...")
300
+ lines.append(f" Branch: {branch_name}")
301
+ lines.append("")
302
+
303
+ # Individual results
304
+ for result in results:
305
+ lines.append(f"📦 {result.name}")
306
+ lines.append(f" Path: {result.path}")
307
+
308
+ action_icons = {
309
+ BranchAction.CREATED: "🌿 Created",
310
+ BranchAction.CHECKED_OUT_LOCAL: "✅ Checked out (local)",
311
+ BranchAction.CHECKED_OUT_REMOTE: "✅ Checked out (remote)",
312
+ BranchAction.SKIPPED: "⏭️ Skipped",
313
+ BranchAction.ERROR: "❌ Error",
314
+ }
315
+ lines.append(f" Action: {action_icons.get(result.action, str(result.action))}")
316
+
317
+ if result.current_branch:
318
+ lines.append(f" Branch: {result.current_branch}")
319
+ if result.commit_info:
320
+ lines.append(f" Commit: {result.commit_info}")
321
+ if result.tracking:
322
+ lines.append(f" Remote: {result.tracking}")
323
+ if result.error:
324
+ lines.append(f" Error: {result.error}")
325
+ lines.append("")
326
+
327
+ # Verification summary
328
+ lines.append("━" * 50)
329
+ lines.append("🔍 Verification Summary")
330
+ lines.append("━" * 50)
331
+
332
+ success_count = sum(
333
+ 1 for r in results if r.action in (
334
+ BranchAction.CREATED,
335
+ BranchAction.CHECKED_OUT_LOCAL,
336
+ BranchAction.CHECKED_OUT_REMOTE,
337
+ )
338
+ )
339
+ error_count = sum(1 for r in results if r.action == BranchAction.ERROR)
340
+ skipped_count = sum(1 for r in results if r.action == BranchAction.SKIPPED)
341
+
342
+ lines.append(f" Success: {success_count}")
343
+ if skipped_count > 0:
344
+ lines.append(f" Skipped: {skipped_count}")
345
+ if error_count > 0:
346
+ lines.append(f" Errors: {error_count}")
347
+
348
+ lines.append("")
349
+ if error_count > 0:
350
+ lines.append("⚠️ Done with errors. Check output above.")
351
+ else:
352
+ lines.append("✅ Done! All branches verified and ready.")
353
+
354
+ return "\n".join(lines)
355
+
356
+
357
+ RepoFilter = Literal["all", "api", "ui"]
358
+
359
+
360
+ def filter_repos(
361
+ repos: Sequence[tuple[str, Path]],
362
+ filter_type: RepoFilter,
363
+ ) -> list[tuple[str, Path]]:
364
+ """Filter repos by type.
365
+
366
+ Args:
367
+ repos: Full list of (name, path) tuples
368
+ filter_type: "all", "api", or "ui"
369
+
370
+ Returns:
371
+ Filtered list of repos matching the filter
372
+ """
373
+ if filter_type == "all":
374
+ return list(repos)
375
+
376
+ result = []
377
+ for name, path in repos:
378
+ name_lower = name.lower()
379
+ if filter_type == "api" and ("api" in name_lower or name_lower.endswith("-api")):
380
+ result.append((name, path))
381
+ elif filter_type == "ui" and ("ui" in name_lower or name_lower.endswith("-ui")):
382
+ result.append((name, path))
383
+
384
+ return result
385
+
386
+
387
+ async def main(branch_name: str, repos_filter: RepoFilter = "all") -> int:
388
+ """CLI entry point for create-feature-branches.
389
+
390
+ Args:
391
+ branch_name: Name of the branch to create/checkout
392
+ repos_filter: Which repos to target ("all", "api", "ui")
393
+
394
+ Returns:
395
+ 0 if all repos succeeded, 1 if any had errors
396
+ """
397
+ from pennyfarthing_scripts.common.config import get_project_root
398
+
399
+ # Detect worktree
400
+ is_worktree, worktree_name, base_path = detect_worktree()
401
+
402
+ if is_worktree:
403
+ print(f"📂 Detected worktree: {worktree_name}")
404
+ else:
405
+ print("📂 Using main checkout")
406
+
407
+ # For now, just use the current project
408
+ project_root = get_project_root()
409
+ repos = [("pennyfarthing", project_root)]
410
+
411
+ # Apply filter
412
+ filtered_repos = filter_repos(repos, repos_filter)
413
+
414
+ if not filtered_repos:
415
+ print(f"No repos match filter: {repos_filter}")
416
+ return 1
417
+
418
+ results = await create_feature_branches(filtered_repos, branch_name)
419
+ print(format_results(results, branch_name))
420
+
421
+ # Return 1 if any errors
422
+ has_errors = any(r.action == BranchAction.ERROR for r in results)
423
+ return 1 if has_errors else 0
424
+
425
+
426
+ if __name__ == "__main__":
427
+ import sys
428
+
429
+ if len(sys.argv) < 2 or sys.argv[1] in ("-h", "--help"):
430
+ print("Usage: python -m pennyfarthing_scripts.git.create_branches <branch-name> [repos]")
431
+ print(" repos: all (default), api, ui")
432
+ sys.exit(0)
433
+
434
+ branch = sys.argv[1]
435
+ repos_filter: RepoFilter = "all"
436
+ if len(sys.argv) >= 3 and sys.argv[2] in ("all", "api", "ui"):
437
+ repos_filter = sys.argv[2] # type: ignore
438
+
439
+ sys.exit(asyncio.run(main(branch, repos_filter)))