@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
@@ -6,7 +6,7 @@ Scripts are organized into categorical subdirectories. **Full paths are required
6
6
 
7
7
  ```
8
8
  scripts/
9
- ├── core/ # Essential scripts (run.sh, agent-session.sh)
9
+ ├── core/ # Essential scripts (agent-session.sh)
10
10
  ├── workflow/ # Workflow mechanics (finish-story.sh, check.sh)
11
11
  ├── sprint/ # Sprint YAML operations (sprint-status.sh)
12
12
  ├── story/ # Story operations (create-story.sh)
@@ -22,14 +22,14 @@ scripts/
22
22
 
23
23
  ## Usage
24
24
 
25
- All scripts are invoked via `run.sh` with **full category paths**:
25
+ Scripts are invoked directly with **full category paths**:
26
26
 
27
27
  ```bash
28
28
  # From project root
29
- .pennyfarthing/scripts/core/run.sh core/agent-session.sh start sm
30
- .pennyfarthing/scripts/core/run.sh sprint/sprint-status.sh
31
- .pennyfarthing/scripts/core/run.sh jira/jira-claim-story.sh MSSCI-12345
32
- .pennyfarthing/scripts/core/run.sh workflow/finish-story.sh MSSCI-12345
29
+ .pennyfarthing/scripts/core/agent-session.sh start sm
30
+ .pennyfarthing/scripts/sprint/sprint-status.sh
31
+ .pennyfarthing/scripts/jira/jira-claim-story.sh MSSCI-12345
32
+ .pennyfarthing/scripts/workflow/finish-story.sh MSSCI-12345
33
33
  ```
34
34
 
35
35
  ## Distributed Scripts
@@ -6,18 +6,17 @@ Essential scripts required for all Pennyfarthing operations.
6
6
 
7
7
  | Script | Purpose |
8
8
  |--------|---------|
9
- | `run.sh` | Bootstrap script - finds PROJECT_ROOT and dispatches to other scripts |
10
9
  | `agent-session.sh` | Agent persona loading and session management |
11
10
  | `check-context.sh` | Context usage checker for monitoring token limits |
12
11
  | `prime.sh` | Context loading for agent activation |
13
12
 
14
13
  ## Usage
15
14
 
16
- These scripts are invoked via `run.sh`:
15
+ These scripts are invoked directly:
17
16
 
18
17
  ```bash
19
- .pennyfarthing/scripts/core/run.sh core/agent-session.sh start sm
20
- .pennyfarthing/scripts/core/run.sh core/check-context.sh --human
18
+ .pennyfarthing/scripts/core/agent-session.sh start sm
19
+ .pennyfarthing/scripts/core/check-context.sh --human
21
20
  ```
22
21
 
23
22
  ## Ownership
@@ -2,7 +2,7 @@
2
2
  # Start an agent with phase check
3
3
  # If the current story's phase belongs to a different agent, emit handoff marker instead
4
4
  #
5
- # Usage: phase-check-start.sh <agent>
5
+ # Usage: .pennyfarthing/scripts/core/phase-check-start.sh <agent>
6
6
  # Example: phase-check-start.sh dev
7
7
 
8
8
  set -euo pipefail
@@ -14,16 +14,11 @@ if [[ -z "$AGENT" ]]; then
14
14
  exit 1
15
15
  fi
16
16
 
17
- # Find project root
18
- if [[ -z "${PROJECT_ROOT:-}" ]]; then
19
- d="$PWD"
20
- while [[ ! -d "$d/.pennyfarthing" ]] && [[ "$d" != "/" ]]; do
21
- d="$(dirname "$d")"
22
- done
23
- PROJECT_ROOT="$d"
24
- fi
17
+ # Self-locate and set up PROJECT_ROOT
18
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
19
+ source "$SCRIPT_DIR/../lib/find-root.sh"
25
20
 
26
- SCRIPT_DIR="$PROJECT_ROOT/.pennyfarthing/scripts/core"
21
+ SCRIPTS_DIR="$SCRIPT_DIR/.."
27
22
  SESSION_DIR="$PROJECT_ROOT/.session"
28
23
 
29
24
  # Find active session file
@@ -31,7 +26,7 @@ SESSION_FILE=$(find "$SESSION_DIR" -maxdepth 1 -name "*-session.md" 2>/dev/null
31
26
 
32
27
  if [[ -z "$SESSION_FILE" || ! -f "$SESSION_FILE" ]]; then
33
28
  # No session - just start the agent normally
34
- exec "$SCRIPT_DIR/run.sh" core/agent-session.sh start "$AGENT"
29
+ exec "$SCRIPTS_DIR/core/agent-session.sh" start "$AGENT"
35
30
  fi
36
31
 
37
32
  # Extract workflow and phase from session (handles multiple formats)
@@ -42,7 +37,7 @@ PHASE=$(grep -E "\*\*Phase\*?\*?:" "$SESSION_FILE" 2>/dev/null | head -1 | sed '
42
37
 
43
38
  if [[ -z "$WORKFLOW" ]]; then
44
39
  # Can't determine workflow - start normally
45
- exec "$SCRIPT_DIR/run.sh" core/agent-session.sh start "$AGENT"
40
+ exec "$SCRIPTS_DIR/core/agent-session.sh" start "$AGENT"
46
41
  fi
47
42
 
48
43
  # If no Phase field, try to infer from status patterns
@@ -66,22 +61,22 @@ if [[ -z "$PHASE" ]]; then
66
61
  PHASE="green" # TEA done, Dev's turn
67
62
  else
68
63
  # Can't determine phase - start normally
69
- exec "$SCRIPT_DIR/run.sh" core/agent-session.sh start "$AGENT"
64
+ exec "$SCRIPTS_DIR/core/agent-session.sh" start "$AGENT"
70
65
  fi
71
66
  fi
72
67
 
73
68
  # Get the owner of this phase
74
- OWNER=$("$SCRIPT_DIR/run.sh" workflow/phase-owner.sh "$WORKFLOW" "$PHASE" 2>/dev/null || echo "")
69
+ OWNER=$("$SCRIPTS_DIR/workflow/phase-owner.sh" "$WORKFLOW" "$PHASE" 2>/dev/null || echo "")
75
70
 
76
71
  if [[ -z "$OWNER" ]]; then
77
72
  # Phase owner lookup failed - start normally
78
- exec "$SCRIPT_DIR/run.sh" core/agent-session.sh start "$AGENT"
73
+ exec "$SCRIPTS_DIR/core/agent-session.sh" start "$AGENT"
79
74
  fi
80
75
 
81
76
  # Check if this agent owns the phase
82
77
  if [[ "$OWNER" == "$AGENT" ]]; then
83
78
  # Correct agent - start normally
84
- exec "$SCRIPT_DIR/run.sh" core/agent-session.sh start "$AGENT"
79
+ exec "$SCRIPTS_DIR/core/agent-session.sh" start "$AGENT"
85
80
  fi
86
81
 
87
82
  # Wrong agent! Output the handoff marker and info
@@ -92,4 +87,4 @@ echo "Phase owner: $OWNER (you requested: $AGENT)"
92
87
  echo ""
93
88
 
94
89
  # Generate and output the handoff marker
95
- "$SCRIPT_DIR/handoff-marker.sh" "$OWNER"
90
+ "$SCRIPTS_DIR/core/handoff-marker.sh" "$OWNER"
@@ -1,6 +1,6 @@
1
1
  #!/bin/bash
2
2
  # Check if running inside Cyclist visual terminal
3
- # Usage: .pennyfarthing/scripts/core/run.sh cyclist/is-cyclist.sh
3
+ # Usage: .pennyfarthing/scripts/cyclist/is-cyclist.sh
4
4
  #
5
5
  # Exit codes:
6
6
  # 0 - Running in Cyclist
@@ -15,8 +15,8 @@ Scripts for Git operations, branching, and release management.
15
15
  ## Usage
16
16
 
17
17
  ```bash
18
- .pennyfarthing/scripts/core/run.sh git/create-feature-branches.sh feat/my-feature
19
- .pennyfarthing/scripts/core/run.sh git/release.sh
18
+ .pennyfarthing/scripts/git/create-feature-branches.sh feat/my-feature
19
+ .pennyfarthing/scripts/git/release.sh
20
20
  ```
21
21
 
22
22
  ## Ownership
@@ -8,21 +8,9 @@
8
8
 
9
9
  set -euo pipefail
10
10
 
11
- # Find project root
12
- find_project_root() {
13
- local dir="$PWD"
14
- while [[ ! -d "$dir/.pennyfarthing" ]] && [[ "$dir" != "/" ]]; do
15
- dir="$(dirname "$dir")"
16
- done
17
- if [[ -d "$dir/.pennyfarthing" ]]; then
18
- echo "$dir"
19
- else
20
- echo "Error: Not in a Pennyfarthing project" >&2
21
- exit 1
22
- fi
23
- }
24
-
25
- PROJECT_ROOT="$(find_project_root)"
11
+ # Self-locate and set up PROJECT_ROOT
12
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
13
+ source "$SCRIPT_DIR/../lib/find-root.sh"
26
14
  HOOKS_SOURCE="$PROJECT_ROOT/pennyfarthing-dist/scripts/hooks"
27
15
  HOOKS_DEST="$PROJECT_ROOT/.git/hooks"
28
16
 
@@ -19,7 +19,7 @@ set -e
19
19
 
20
20
  SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
21
21
 
22
- # Use exported PROJECT_ROOT from run.sh, or detect it
22
+ # Use exported PROJECT_ROOT from find-root.sh, or detect it
23
23
  if [[ -z "${PROJECT_ROOT:-}" ]]; then
24
24
  _dir="$PWD"
25
25
  while [[ ! -d "$_dir/.pennyfarthing" ]] && [[ "$_dir" != "/" ]]; do
@@ -1,6 +1,6 @@
1
1
  #!/bin/bash
2
2
  # Drift Detection - Analyze archived sessions for agent behavior drift
3
- # Usage: .pennyfarthing/scripts/core/run.sh health/drift-detection.sh [--verbose] [--path /additional/path]
3
+ # Usage: .pennyfarthing/scripts/health/drift-detection.sh [--verbose] [--path /additional/path]
4
4
  #
5
5
  # Checks:
6
6
  # 1. Reviewer: Substantive comments present (not just "LGTM")
@@ -21,7 +21,7 @@ Git hooks and Claude Code hooks.
21
21
  Git hooks are installed via:
22
22
 
23
23
  ```bash
24
- .pennyfarthing/scripts/core/run.sh git/install-git-hooks.sh
24
+ .pennyfarthing/scripts/git/install-git-hooks.sh
25
25
  ```
26
26
 
27
27
  Claude hooks are configured in `.claude/settings.json`.
@@ -14,18 +14,9 @@
14
14
 
15
15
  set -uo pipefail
16
16
 
17
- # Find project root by looking for .claude/ marker
18
- find_project_root() {
19
- local dir="$PWD"
20
- while [[ ! -d "$dir/.pennyfarthing" ]] && [[ "$dir" != "/" ]]; do
21
- dir="$(dirname "$dir")"
22
- done
23
- if [[ -d "$dir/.pennyfarthing" ]]; then
24
- echo "$dir"
25
- else
26
- return 1
27
- fi
28
- }
17
+ # Self-locate and set up PROJECT_ROOT
18
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd -P)"
19
+ source "$SCRIPT_DIR/../lib/find-root.sh"
29
20
 
30
21
  # Initialize paths
31
22
  PROJECT_ROOT="$(find_project_root 2>/dev/null || echo "")"
@@ -9,21 +9,9 @@
9
9
 
10
10
  set -uo pipefail
11
11
 
12
- # Find project root
13
- find_project_root() {
14
- local dir="$PWD"
15
- while [[ ! -d "$dir/.pennyfarthing" ]] && [[ "$dir" != "/" ]]; do
16
- dir="$(dirname "$dir")"
17
- done
18
- if [[ -d "$dir/.pennyfarthing" ]]; then
19
- echo "$dir"
20
- else
21
- return 1
22
- fi
23
- }
24
-
25
- PROJECT_ROOT="$(find_project_root 2>/dev/null || echo "")"
26
- if [[ -z "$PROJECT_ROOT" ]]; then
12
+ # Self-locate and set up PROJECT_ROOT
13
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd -P)"
14
+ if ! source "$SCRIPT_DIR/../lib/find-root.sh" 2>/dev/null; then
27
15
  exit 0
28
16
  fi
29
17
 
@@ -26,8 +26,8 @@ Core logic lives in `pennyfarthing_scripts/jira/`:
26
26
  ## Usage
27
27
 
28
28
  ```bash
29
- .pennyfarthing/scripts/core/run.sh jira/jira-claim-story.sh MSSCI-12345
30
- .pennyfarthing/scripts/core/run.sh jira/jira-reconcile.sh
29
+ .pennyfarthing/scripts/jira/jira-claim-story.sh MSSCI-12345
30
+ .pennyfarthing/scripts/jira/jira-reconcile.sh
31
31
  ```
32
32
 
33
33
  ## Ownership
@@ -1,6 +1,6 @@
1
1
  #!/bin/bash
2
2
  # Create a Jira epic and its child stories from sprint YAML
3
- # Usage: .pennyfarthing/scripts/core/run.sh create-jira-epic.sh <epic-id> [--dry-run]
3
+ # Usage: .pennyfarthing/scripts/jira/create-jira-epic.sh <epic-id> [--dry-run]
4
4
 
5
5
  set -euo pipefail
6
6
 
@@ -14,7 +14,7 @@ if [[ -z "$EPIC_JIRA_KEY" || -z "$STORY_ID" ]]; then
14
14
  exit 1
15
15
  fi
16
16
 
17
- # PROJECT_ROOT should be set by run.sh, but find it if not
17
+ # PROJECT_ROOT should be set by find-root.sh, but find it if not
18
18
  if [[ -z "${PROJECT_ROOT:-}" ]]; then
19
19
  d="$PWD"
20
20
  while [[ ! -d "$d/.pennyfarthing" ]] && [[ "$d" != "/" ]]; do
@@ -1,6 +1,6 @@
1
1
  #!/bin/bash
2
2
  # Jira vs YAML Reconciliation Report
3
- # Usage: .pennyfarthing/scripts/core/run.sh jira/jira-reconcile.sh [--fix]
3
+ # Usage: .pennyfarthing/scripts/jira/jira-reconcile.sh [--fix]
4
4
  #
5
5
  # Compares sprint YAML against Jira to find:
6
6
  # - Status mismatches
@@ -13,7 +13,7 @@
13
13
 
14
14
  set -euo pipefail
15
15
 
16
- # PROJECT_ROOT should be set by run.sh, but find it if not
16
+ # PROJECT_ROOT should be set by find-root.sh, but find it if not
17
17
  if [[ -z "${PROJECT_ROOT:-}" ]]; then
18
18
  d="$PWD"
19
19
  while [[ ! -d "$d/.pennyfarthing" ]] && [[ "$d" != "/" ]]; do
@@ -1,35 +1,55 @@
1
- #!/usr/bin/env zsh
2
- # Shared utility: Find project root by .pennyfarthing/ marker
1
+ #!/usr/bin/env bash
2
+ # Shared utility: Find project root via BASH_SOURCE self-location
3
3
  #
4
- # DEPRECATED: Scripts invoked via run.sh already have PROJECT_ROOT set.
5
- # This file is kept for backwards compatibility with scripts that may be
6
- # run directly (not via run.sh).
4
+ # Core principle: Scripts derive paths from their own location, not from $PWD.
5
+ # A script in pennyfarthing-dist/scripts/<category>/ is always 3 levels below
6
+ # the package root. This works regardless of where the user invoked it from.
7
7
  #
8
- # When run.sh executes a script, it sets PROJECT_ROOT before exec'ing,
9
- # so sourcing this file is a no-op (line 12 skips if already set).
10
- #
11
- # For new scripts: Just assume PROJECT_ROOT is set by the caller (run.sh).
8
+ # Usage:
9
+ # SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
10
+ # source "$SCRIPT_DIR/../lib/find-root.sh"
11
+ # # PROJECT_ROOT is now set
12
12
 
13
- # Skip if PROJECT_ROOT is already set (e.g., by run.sh or CLAUDE_PROJECT_DIR)
14
- if [ -z "${PROJECT_ROOT:-}" ]; then
15
- # Prefer SCRIPT_DIR (stable, set by caller) over PWD (may not be in project)
16
- if [ -n "${SCRIPT_DIR:-}" ]; then
17
- _find_root_dir="$SCRIPT_DIR"
18
- else
19
- _find_root_dir="$PWD"
20
- fi
13
+ # Require SCRIPT_DIR to be set by caller
14
+ if [[ -z "${SCRIPT_DIR:-}" ]]; then
15
+ echo "Error: SCRIPT_DIR must be set before sourcing find-root.sh" >&2
16
+ echo "Add this before sourcing:" >&2
17
+ echo ' SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"' >&2
18
+ exit 1
19
+ fi
20
+
21
+ # Allow explicit override via PENNYFARTHING_ROOT (avoids conflict with orchestrator's PROJECT_ROOT)
22
+ if [[ -n "${PENNYFARTHING_ROOT:-}" ]]; then
23
+ PROJECT_ROOT="$PENNYFARTHING_ROOT"
24
+ export PROJECT_ROOT
25
+ return 0 2>/dev/null || exit 0
26
+ fi
27
+
28
+ # Resolve SCRIPT_DIR (follow symlinks to real location)
29
+ _real_script_dir="$(cd "$SCRIPT_DIR" && pwd -P)"
21
30
 
22
- while [[ ! -d "$_find_root_dir/.pennyfarthing" ]] && [[ "$_find_root_dir" != "/" ]]; do
23
- _find_root_dir="$(dirname "$_find_root_dir")"
24
- done
31
+ # Derive package root from script location
32
+ # Scripts in pennyfarthing-dist/scripts/lib/ are 3 levels deep
33
+ # Scripts in pennyfarthing-dist/scripts/<category>/ are also 3 levels deep
34
+ if [[ "$_real_script_dir" == */pennyfarthing-dist/scripts/* ]]; then
35
+ # Extract everything before /pennyfarthing-dist/scripts/
36
+ _pkg_root="${_real_script_dir%/pennyfarthing-dist/scripts/*}"
25
37
 
26
- if [[ -d "$_find_root_dir/.pennyfarthing" ]]; then
27
- PROJECT_ROOT="$_find_root_dir"
38
+ # Determine context: framework dev or consumer?
39
+ if [[ -d "$_pkg_root/pennyfarthing-dist" && ! -L "$_pkg_root/pennyfarthing-dist" ]]; then
40
+ # Framework context: package root IS project root
41
+ PROJECT_ROOT="$_pkg_root"
42
+ elif [[ "$_pkg_root" == */node_modules/* ]]; then
43
+ # Consumer context: walk up from node_modules to project
44
+ PROJECT_ROOT="${_pkg_root%/node_modules/*}"
28
45
  else
29
- echo "Error: Could not find project root (no .pennyfarthing/ directory found)" >&2
30
- exit 1
46
+ PROJECT_ROOT="$_pkg_root"
31
47
  fi
32
- unset _find_root_dir
48
+ else
49
+ echo "Error: Script not in expected location (pennyfarthing-dist/scripts/...)" >&2
50
+ echo "SCRIPT_DIR=$_real_script_dir" >&2
51
+ exit 1
33
52
  fi
34
53
 
54
+ unset _real_script_dir _pkg_root
35
55
  export PROJECT_ROOT
@@ -29,8 +29,8 @@ Uncategorized utilities and one-off scripts.
29
29
  ## Usage
30
30
 
31
31
  ```bash
32
- .pennyfarthing/scripts/core/run.sh misc/doctor-dogfood.sh
33
- .pennyfarthing/scripts/core/run.sh misc/run-ci.sh
32
+ .pennyfarthing/scripts/misc/doctor-dogfood.sh
33
+ .pennyfarthing/scripts/misc/run-ci.sh
34
34
  ```
35
35
 
36
36
  ## Ownership
@@ -5,23 +5,9 @@
5
5
 
6
6
  set -euo pipefail
7
7
 
8
- SCRIPT_DIR="${0:A:h}"
9
- PROJECT_ROOT="${SCRIPT_DIR}/../.."
10
-
11
- # Find project root by looking for .pennyfarthing directory
12
- find_project_root() {
13
- local dir="$PWD"
14
- while [[ "$dir" != "/" ]]; do
15
- if [[ -d "$dir/.pennyfarthing" ]]; then
16
- echo "$dir"
17
- return 0
18
- fi
19
- dir="$(dirname "$dir")"
20
- done
21
- echo "$PWD"
22
- }
23
-
24
- PROJECT_ROOT="$(find_project_root)"
8
+ # Self-locate and set up PROJECT_ROOT
9
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd -P)"
10
+ source "$SCRIPT_DIR/../lib/find-root.sh"
25
11
  SPRINT_FILE="$PROJECT_ROOT/sprint/current-sprint.yaml"
26
12
 
27
13
  if [[ ! -f "$SPRINT_FILE" ]]; then
@@ -17,36 +17,10 @@
17
17
 
18
18
  set -euo pipefail
19
19
 
20
- # Find project root
21
- # Priority 1: .pennyfarthing/ (orchestrator/consumer repos)
22
- # Priority 2: pennyfarthing-dist/ (framework repo itself)
23
- find_project_root() {
24
- local dir="$PWD"
25
- # First try .pennyfarthing/
26
- while [[ ! -d "$dir/.pennyfarthing" ]] && [[ "$dir" != "/" ]]; do
27
- dir="$(dirname "$dir")"
28
- done
29
- if [[ -d "$dir/.pennyfarthing" ]]; then
30
- echo "$dir"
31
- return
32
- fi
33
- # Fall back to pennyfarthing-dist/ for framework repo
34
- dir="$PWD"
35
- while [[ ! -d "$dir/pennyfarthing-dist" ]] && [[ "$dir" != "/" ]]; do
36
- dir="$(dirname "$dir")"
37
- done
38
- if [[ -d "$dir/pennyfarthing-dist" ]]; then
39
- echo "$dir"
40
- return
41
- fi
42
- echo ""
43
- }
44
-
45
- PROJECT_ROOT="$(find_project_root)"
46
- if [[ -z "$PROJECT_ROOT" ]]; then
47
- echo "Error: Cannot find project root (no .pennyfarthing or pennyfarthing-dist directory found)" >&2
48
- exit 1
49
- fi
20
+ # Self-locate: derive PROJECT_ROOT from this script's position
21
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
22
+ source "$SCRIPT_DIR/../lib/find-root.sh"
23
+ # PROJECT_ROOT is now set
50
24
 
51
25
  # Default paths
52
26
  REGISTRY_PATH="${PROJECT_ROOT}/pennyfarthing-dist/skills/skill-registry.yaml"
@@ -6,7 +6,7 @@
6
6
  # {"ts":"2026-01-11T10:30:45Z","skill":"testing","agent":"dev","session":"abc123"}
7
7
  #
8
8
  # Environment:
9
- # PROJECT_ROOT - Set by run.sh bootstrap (required)
9
+ # PROJECT_ROOT - Set by find-root.sh (required)
10
10
 
11
11
  set -euo pipefail
12
12
 
@@ -84,16 +84,9 @@ else
84
84
  NC=''
85
85
  fi
86
86
 
87
- # Find project root
88
- find_project_root() {
89
- local dir="$PWD"
90
- while [[ ! -d "$dir/.pennyfarthing" ]] && [[ "$dir" != "/" ]]; do
91
- dir="$(dirname "$dir")"
92
- done
93
- echo "$dir"
94
- }
95
-
96
- PROJECT_ROOT="$(find_project_root)"
87
+ # Self-locate and set up PROJECT_ROOT
88
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
89
+ source "$SCRIPT_DIR/../lib/find-root.sh"
97
90
  cd "$PROJECT_ROOT" || exit 1
98
91
 
99
92
  # Detection functions
@@ -9,7 +9,7 @@
9
9
  # - Weekly breakdown (optional)
10
10
  #
11
11
  # Environment:
12
- # PROJECT_ROOT - Set by run.sh bootstrap (required)
12
+ # PROJECT_ROOT - Set by find-root.sh (required)
13
13
 
14
14
  set -uo pipefail
15
15
 
@@ -100,7 +100,6 @@ MANAGED_PATHS=(
100
100
  "scripts/hooks"
101
101
  "scripts/lib"
102
102
  "scripts/misc"
103
- "scripts/run.sh"
104
103
  )
105
104
 
106
105
  # Project paths that can be removed with --all (but preserve archives)
@@ -56,8 +56,25 @@ except Exception:
56
56
 
57
57
 
58
58
  # Configuration
59
- SCRIPT_DIR = Path(__file__).parent
60
- PROJECT_ROOT = SCRIPT_DIR.parent
59
+ SCRIPT_DIR = Path(__file__).parent.resolve()
60
+
61
+ # Find PROJECT_ROOT by walking up until we find pennyfarthing-dist at the expected level
62
+ # Script lives at: {PROJECT_ROOT}/pennyfarthing-dist/scripts/portraits/generate-portraits.py
63
+ def _find_project_root() -> Path:
64
+ """Find project root by looking for pennyfarthing-dist or .git marker."""
65
+ current = SCRIPT_DIR
66
+ # Walk up from portraits/ -> scripts/ -> pennyfarthing-dist/ -> PROJECT_ROOT
67
+ for _ in range(5): # Safety limit
68
+ # Check if this looks like the project root
69
+ if (current / "pennyfarthing-dist" / "personas" / "themes").exists():
70
+ return current
71
+ if (current / ".git").exists() and (current / "pennyfarthing-dist").exists():
72
+ return current
73
+ current = current.parent
74
+ # Fallback: assume old structure (script in {root}/scripts/portraits/)
75
+ return SCRIPT_DIR.parent.parent
76
+
77
+ PROJECT_ROOT = _find_project_root()
61
78
  BUILTIN_THEMES_DIR = PROJECT_ROOT / "pennyfarthing-dist" / "personas" / "themes"
62
79
  CUSTOM_THEMES_DIR = PROJECT_ROOT / ".claude" / "pennyfarthing" / "themes"
63
80
  OUTPUT_DIR = PROJECT_ROOT / "pennyfarthing-dist" / "personas" / "portraits"
@@ -19,8 +19,8 @@ Scripts for sprint YAML operations and sprint management.
19
19
  ## Usage
20
20
 
21
21
  ```bash
22
- .pennyfarthing/scripts/core/run.sh sprint/sprint-status.sh
23
- .pennyfarthing/scripts/core/run.sh sprint/available-stories.sh
22
+ .pennyfarthing/scripts/sprint/sprint-status.sh
23
+ .pennyfarthing/scripts/sprint/available-stories.sh
24
24
  ```
25
25
 
26
26
  ## Ownership
@@ -1,9 +1,9 @@
1
1
  #!/bin/bash
2
2
  # Archive a completed story from current-sprint.yaml to the sprint archive
3
- # Usage: .pennyfarthing/scripts/core/run.sh sprint/archive-story.sh <story-id> [pr-number] [--apply]
3
+ # Usage: .pennyfarthing/scripts/sprint/archive-story.sh <story-id> [pr-number] [--apply]
4
4
  #
5
- # Example: .pennyfarthing/scripts/core/run.sh sprint/archive-story.sh MSSCI-11945 368
6
- # .pennyfarthing/scripts/core/run.sh sprint/archive-story.sh MSSCI-11945 368 --apply
5
+ # Example: .pennyfarthing/scripts/sprint/archive-story.sh MSSCI-11945 368
6
+ # .pennyfarthing/scripts/sprint/archive-story.sh MSSCI-11945 368 --apply
7
7
  #
8
8
  # Options:
9
9
  # --apply Also remove story from current-sprint.yaml (atomic operation)
@@ -40,7 +40,7 @@ if [[ -z "$STORY_ID" ]]; then
40
40
  exit 1
41
41
  fi
42
42
 
43
- # PROJECT_ROOT should be set by run.sh, but find it if not
43
+ # PROJECT_ROOT should be set by find-root.sh, but find it if not
44
44
  if [[ -z "${PROJECT_ROOT:-}" ]]; then
45
45
  d="$PWD"
46
46
  while [[ ! -d "$d/.pennyfarthing" ]] && [[ "$d" != "/" ]]; do
@@ -133,7 +133,7 @@ if $APPLY_FLAG; then
133
133
  else
134
134
  echo ""
135
135
  echo "To also remove from $SPRINT_FILE, re-run with --apply:"
136
- echo " .pennyfarthing/scripts/core/run.sh sprint/archive-story.sh $STORY_ID ${PR_NUMBER:-<pr>} --apply"
136
+ echo " .pennyfarthing/scripts/sprint/archive-story.sh $STORY_ID ${PR_NUMBER:-<pr>} --apply"
137
137
  echo ""
138
138
  echo "Or manually: yq eval -i 'del(.epics[].stories[] | select(.id == \"$STORY_ID\"))' $SPRINT_FILE"
139
139
  fi
@@ -1,12 +1,12 @@
1
1
  #!/bin/bash
2
2
  # Display available stories grouped by epic with Jira context
3
- # Usage: .pennyfarthing/scripts/core/run.sh sprint/available-stories.sh
3
+ # Usage: .pennyfarthing/scripts/sprint/available-stories.sh
4
4
  #
5
5
  # Shows backlog stories with epic context, points, and workflow
6
6
 
7
7
  set -euo pipefail
8
8
 
9
- # PROJECT_ROOT should be set by run.sh, but find it if not
9
+ # PROJECT_ROOT should be set by find-root.sh, but find it if not
10
10
  if [[ -z "${PROJECT_ROOT:-}" ]]; then
11
11
  d="$PWD"
12
12
  while [[ ! -d "$d/.pennyfarthing" ]] && [[ "$d" != "/" ]]; do
@@ -18,7 +18,7 @@ if [[ -z "$ID" ]]; then
18
18
  exit 1
19
19
  fi
20
20
 
21
- # PROJECT_ROOT should be set by run.sh
21
+ # PROJECT_ROOT should be set by find-root.sh
22
22
  if [[ -z "${PROJECT_ROOT:-}" ]]; then
23
23
  d="$PWD"
24
24
  while [[ ! -d "$d/.pennyfarthing" ]] && [[ "$d" != "/" ]]; do