@pennyfarthing/core 9.2.0 → 9.4.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 (1043) hide show
  1. package/dist/workflow/complete-step-integration.test.d.ts +13 -0
  2. package/dist/workflow/complete-step-integration.test.d.ts.map +1 -0
  3. package/dist/workflow/complete-step-integration.test.js +163 -0
  4. package/dist/workflow/complete-step-integration.test.js.map +1 -0
  5. package/{packages/core/dist → dist}/workflow/handoff.test.js +2 -2
  6. package/{packages/core/dist → dist}/workflow/handoff.test.js.map +1 -1
  7. package/{packages/core/dist → dist}/workflow/index.d.ts +2 -0
  8. package/{packages/core/dist → dist}/workflow/index.d.ts.map +1 -1
  9. package/{packages/core/dist → dist}/workflow/index.js +6 -0
  10. package/{packages/core/dist → dist}/workflow/index.js.map +1 -1
  11. package/{packages/core/dist → dist}/workflow/workflow-stepped-schema.test.js +1 -1
  12. package/{packages/core/dist → dist}/workflow/workflow-stepped-schema.test.js.map +1 -1
  13. package/package.json +36 -32
  14. package/LICENSE +0 -14
  15. package/README.md +0 -218
  16. package/pennyfarthing-dist/agents/README.md +0 -348
  17. package/pennyfarthing-dist/agents/architect.md +0 -180
  18. package/pennyfarthing-dist/agents/dev.md +0 -169
  19. package/pennyfarthing-dist/agents/devops.md +0 -203
  20. package/pennyfarthing-dist/agents/handoff.md +0 -235
  21. package/pennyfarthing-dist/agents/orchestrator.md +0 -182
  22. package/pennyfarthing-dist/agents/pm.md +0 -152
  23. package/pennyfarthing-dist/agents/reviewer-preflight.md +0 -129
  24. package/pennyfarthing-dist/agents/reviewer.md +0 -197
  25. package/pennyfarthing-dist/agents/sm-file-summary.md +0 -79
  26. package/pennyfarthing-dist/agents/sm-finish.md +0 -82
  27. package/pennyfarthing-dist/agents/sm-handoff.md +0 -129
  28. package/pennyfarthing-dist/agents/sm-setup.md +0 -251
  29. package/pennyfarthing-dist/agents/sm.md +0 -294
  30. package/pennyfarthing-dist/agents/tea.md +0 -161
  31. package/pennyfarthing-dist/agents/tech-writer.md +0 -226
  32. package/pennyfarthing-dist/agents/testing-runner.md +0 -184
  33. package/pennyfarthing-dist/agents/ux-designer.md +0 -236
  34. package/pennyfarthing-dist/agents/workflow-status-check.md +0 -96
  35. package/pennyfarthing-dist/commands/architect.md +0 -9
  36. package/pennyfarthing-dist/commands/benchmark-control.md +0 -69
  37. package/pennyfarthing-dist/commands/benchmark.md +0 -485
  38. package/pennyfarthing-dist/commands/brainstorming.md +0 -91
  39. package/pennyfarthing-dist/commands/check.md +0 -156
  40. package/pennyfarthing-dist/commands/chore.md +0 -218
  41. package/pennyfarthing-dist/commands/close-epic.md +0 -139
  42. package/pennyfarthing-dist/commands/continue-session.md +0 -218
  43. package/pennyfarthing-dist/commands/create-branches-from-story.md +0 -358
  44. package/pennyfarthing-dist/commands/create-theme.md +0 -29
  45. package/pennyfarthing-dist/commands/dev.md +0 -9
  46. package/pennyfarthing-dist/commands/devops.md +0 -9
  47. package/pennyfarthing-dist/commands/fix-blocker.md +0 -22
  48. package/pennyfarthing-dist/commands/git-cleanup.md +0 -57
  49. package/pennyfarthing-dist/commands/health-check.md +0 -143
  50. package/pennyfarthing-dist/commands/help.md +0 -264
  51. package/pennyfarthing-dist/commands/job-fair.md +0 -102
  52. package/pennyfarthing-dist/commands/list-themes.md +0 -21
  53. package/pennyfarthing-dist/commands/new-work.md +0 -23
  54. package/pennyfarthing-dist/commands/orchestrator.md +0 -9
  55. package/pennyfarthing-dist/commands/parallel-work.md +0 -73
  56. package/pennyfarthing-dist/commands/party-mode.md +0 -77
  57. package/pennyfarthing-dist/commands/patch.md +0 -210
  58. package/pennyfarthing-dist/commands/permissions.md +0 -193
  59. package/pennyfarthing-dist/commands/pm.md +0 -9
  60. package/pennyfarthing-dist/commands/prime.md +0 -136
  61. package/pennyfarthing-dist/commands/release.md +0 -58
  62. package/pennyfarthing-dist/commands/repo-status.md +0 -49
  63. package/pennyfarthing-dist/commands/retro.md +0 -200
  64. package/pennyfarthing-dist/commands/reviewer.md +0 -9
  65. package/pennyfarthing-dist/commands/run-ci.md +0 -116
  66. package/pennyfarthing-dist/commands/set-theme.md +0 -56
  67. package/pennyfarthing-dist/commands/setup.md +0 -65
  68. package/pennyfarthing-dist/commands/show-theme.md +0 -21
  69. package/pennyfarthing-dist/commands/sm.md +0 -9
  70. package/pennyfarthing-dist/commands/solo.md +0 -447
  71. package/pennyfarthing-dist/commands/sprint-planning.md +0 -109
  72. package/pennyfarthing-dist/commands/sprint.md +0 -142
  73. package/pennyfarthing-dist/commands/standalone.md +0 -194
  74. package/pennyfarthing-dist/commands/start-epic.md +0 -168
  75. package/pennyfarthing-dist/commands/sync-epic-to-jira.md +0 -184
  76. package/pennyfarthing-dist/commands/sync-work-with-sprint.md +0 -373
  77. package/pennyfarthing-dist/commands/tea.md +0 -9
  78. package/pennyfarthing-dist/commands/tech-writer.md +0 -9
  79. package/pennyfarthing-dist/commands/theme-maker.md +0 -676
  80. package/pennyfarthing-dist/commands/update-domain-docs.md +0 -83
  81. package/pennyfarthing-dist/commands/ux-designer.md +0 -9
  82. package/pennyfarthing-dist/commands/work.md +0 -25
  83. package/pennyfarthing-dist/commands/workflow.md +0 -21
  84. package/pennyfarthing-dist/guides/agent-behavior.md +0 -90
  85. package/pennyfarthing-dist/guides/agent-coordination.md +0 -480
  86. package/pennyfarthing-dist/guides/agent-tag-taxonomy.md +0 -432
  87. package/pennyfarthing-dist/guides/agent-template-strategic.md +0 -148
  88. package/pennyfarthing-dist/guides/agent-template-tactical.md +0 -162
  89. package/pennyfarthing-dist/guides/hooks.md +0 -230
  90. package/pennyfarthing-dist/guides/measurement-framework.md +0 -210
  91. package/pennyfarthing-dist/guides/patterns/approval-gates-pattern.md +0 -766
  92. package/pennyfarthing-dist/guides/patterns/fan-out-fan-in-pattern.md +0 -574
  93. package/pennyfarthing-dist/guides/patterns/helper-delegation-pattern.md +0 -488
  94. package/pennyfarthing-dist/guides/patterns/tdd-flow-pattern.md +0 -402
  95. package/pennyfarthing-dist/guides/permission-protocol.md +0 -188
  96. package/pennyfarthing-dist/guides/persona-loading.md +0 -46
  97. package/pennyfarthing-dist/guides/prompt-patterns.md +0 -338
  98. package/pennyfarthing-dist/guides/scale-levels.md +0 -114
  99. package/pennyfarthing-dist/guides/session-artifacts.md +0 -193
  100. package/pennyfarthing-dist/guides/session-schema.md +0 -346
  101. package/pennyfarthing-dist/guides/skill-schema.md +0 -412
  102. package/pennyfarthing-dist/guides/workflow-schema.md +0 -257
  103. package/pennyfarthing-dist/guides/workflow-step-schema.md +0 -512
  104. package/pennyfarthing-dist/guides/worktree-mode.md +0 -113
  105. package/pennyfarthing-dist/guides/xml-tags.md +0 -627
  106. package/pennyfarthing-dist/output-styles/teaching.md +0 -33
  107. package/pennyfarthing-dist/output-styles/terse.md +0 -20
  108. package/pennyfarthing-dist/output-styles/verbose.md +0 -28
  109. package/pennyfarthing-dist/personas/themes/a-team.yaml +0 -331
  110. package/pennyfarthing-dist/personas/themes/alice-in-wonderland.yaml +0 -324
  111. package/pennyfarthing-dist/personas/themes/battlestar-galactica.yaml +0 -282
  112. package/pennyfarthing-dist/personas/themes/blade-runner.yaml +0 -289
  113. package/pennyfarthing-dist/personas/themes/catch-22.yaml +0 -304
  114. package/pennyfarthing-dist/personas/themes/control.yaml +0 -201
  115. package/pennyfarthing-dist/personas/themes/cowboy-bebop.yaml +0 -315
  116. package/pennyfarthing-dist/personas/themes/discworld.yaml +0 -334
  117. package/pennyfarthing-dist/personas/themes/doctor-who.yaml +0 -284
  118. package/pennyfarthing-dist/personas/themes/dune.yaml +0 -301
  119. package/pennyfarthing-dist/personas/themes/firefly.yaml +0 -320
  120. package/pennyfarthing-dist/personas/themes/game-of-thrones.yaml +0 -284
  121. package/pennyfarthing-dist/personas/themes/harry-potter.yaml +0 -316
  122. package/pennyfarthing-dist/personas/themes/hitchhikers-guide.yaml +0 -323
  123. package/pennyfarthing-dist/personas/themes/lord-of-the-rings.yaml +0 -326
  124. package/pennyfarthing-dist/personas/themes/mad-max.yaml +0 -349
  125. package/pennyfarthing-dist/personas/themes/mash.yaml +0 -329
  126. package/pennyfarthing-dist/personas/themes/princess-bride.yaml +0 -344
  127. package/pennyfarthing-dist/personas/themes/sandman.yaml +0 -282
  128. package/pennyfarthing-dist/personas/themes/star-trek-tng.yaml +0 -358
  129. package/pennyfarthing-dist/personas/themes/star-wars.yaml +0 -297
  130. package/pennyfarthing-dist/personas/themes/the-expanse.yaml +0 -337
  131. package/pennyfarthing-dist/personas/themes/the-matrix.yaml +0 -342
  132. package/pennyfarthing-dist/personas/themes/watchmen.yaml +0 -285
  133. package/pennyfarthing-dist/personas/themes/west-wing.yaml +0 -285
  134. package/pennyfarthing-dist/personas/themes/x-files.yaml +0 -296
  135. package/pennyfarthing-dist/scripts/README.md +0 -87
  136. package/pennyfarthing-dist/scripts/core/README.md +0 -25
  137. package/pennyfarthing-dist/scripts/core/agent-session.sh +0 -390
  138. package/pennyfarthing-dist/scripts/core/check-context.sh +0 -194
  139. package/pennyfarthing-dist/scripts/core/handoff-marker.sh +0 -112
  140. package/pennyfarthing-dist/scripts/core/phase-check-start.sh +0 -90
  141. package/pennyfarthing-dist/scripts/core/prime.sh +0 -30
  142. package/pennyfarthing-dist/scripts/cyclist/is-cyclist.sh +0 -21
  143. package/pennyfarthing-dist/scripts/git/README.md +0 -25
  144. package/pennyfarthing-dist/scripts/git/create-feature-branches.sh +0 -267
  145. package/pennyfarthing-dist/scripts/git/git-status-all.sh +0 -152
  146. package/pennyfarthing-dist/scripts/git/install-git-hooks.sh +0 -79
  147. package/pennyfarthing-dist/scripts/git/release.sh +0 -246
  148. package/pennyfarthing-dist/scripts/git/worktree-manager.sh +0 -497
  149. package/pennyfarthing-dist/scripts/health/drift-detection.sh +0 -156
  150. package/pennyfarthing-dist/scripts/hooks/README.md +0 -32
  151. package/pennyfarthing-dist/scripts/hooks/__pycache__/question_reflector_check.cpython-314.pyc +0 -0
  152. package/pennyfarthing-dist/scripts/hooks/bell-mode-hook.sh +0 -106
  153. package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +0 -95
  154. package/pennyfarthing-dist/scripts/hooks/context-warning.sh +0 -65
  155. package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +0 -35
  156. package/pennyfarthing-dist/scripts/hooks/post-merge.sh +0 -150
  157. package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +0 -102
  158. package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +0 -71
  159. package/pennyfarthing-dist/scripts/hooks/pre-push.sh +0 -42
  160. package/pennyfarthing-dist/scripts/hooks/question-reflector-check.sh +0 -20
  161. package/pennyfarthing-dist/scripts/hooks/question_reflector_check.py +0 -499
  162. package/pennyfarthing-dist/scripts/hooks/schema-validation.sh +0 -30
  163. package/pennyfarthing-dist/scripts/hooks/session-start.sh +0 -97
  164. package/pennyfarthing-dist/scripts/hooks/session-stop.sh +0 -65
  165. package/pennyfarthing-dist/scripts/hooks/sprint-yaml-validation.sh +0 -78
  166. package/pennyfarthing-dist/scripts/hooks/welcome-hook.sh +0 -94
  167. package/pennyfarthing-dist/scripts/jira/README.md +0 -36
  168. package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +0 -95
  169. package/pennyfarthing-dist/scripts/jira/create-jira-story.sh +0 -91
  170. package/pennyfarthing-dist/scripts/jira/jira-claim-story.sh +0 -22
  171. package/pennyfarthing-dist/scripts/jira/jira-lib.sh +0 -464
  172. package/pennyfarthing-dist/scripts/jira/jira-reconcile.sh +0 -260
  173. package/pennyfarthing-dist/scripts/jira/jira-sync-story.sh +0 -18
  174. package/pennyfarthing-dist/scripts/jira/jira-sync.sh +0 -16
  175. package/pennyfarthing-dist/scripts/jira/sync-epic-jira.sh +0 -16
  176. package/pennyfarthing-dist/scripts/jira/sync-epic-to-jira.sh +0 -16
  177. package/pennyfarthing-dist/scripts/lib/README.md +0 -29
  178. package/pennyfarthing-dist/scripts/lib/background-tasks.sh +0 -177
  179. package/pennyfarthing-dist/scripts/lib/checkpoint.sh +0 -136
  180. package/pennyfarthing-dist/scripts/lib/common.sh +0 -212
  181. package/pennyfarthing-dist/scripts/lib/file-lock.sh +0 -269
  182. package/pennyfarthing-dist/scripts/lib/find-root.sh +0 -58
  183. package/pennyfarthing-dist/scripts/lib/logging.sh +0 -186
  184. package/pennyfarthing-dist/scripts/lib/retry.sh +0 -76
  185. package/pennyfarthing-dist/scripts/maintenance/migrate-theme-schema.mjs +0 -102
  186. package/pennyfarthing-dist/scripts/maintenance/sidecar-health.sh +0 -91
  187. package/pennyfarthing-dist/scripts/misc/README.md +0 -44
  188. package/pennyfarthing-dist/scripts/misc/add-short-names.sh +0 -13
  189. package/pennyfarthing-dist/scripts/misc/add_short_names.py +0 -226
  190. package/pennyfarthing-dist/scripts/misc/backlog.sh +0 -77
  191. package/pennyfarthing-dist/scripts/misc/check-status.sh +0 -247
  192. package/pennyfarthing-dist/scripts/misc/find-related-work.sh +0 -231
  193. package/pennyfarthing-dist/scripts/misc/generate-skill-docs.sh +0 -107
  194. package/pennyfarthing-dist/scripts/misc/log-skill-usage.sh +0 -74
  195. package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.sh +0 -10
  196. package/pennyfarthing-dist/scripts/misc/migrate_bmad_workflow.py +0 -319
  197. package/pennyfarthing-dist/scripts/misc/repo-scan.sh +0 -141
  198. package/pennyfarthing-dist/scripts/misc/repo-utils.sh +0 -778
  199. package/pennyfarthing-dist/scripts/misc/run-ci.sh +0 -212
  200. package/pennyfarthing-dist/scripts/misc/run-timestamp.sh +0 -7
  201. package/pennyfarthing-dist/scripts/misc/session-cleanup.sh +0 -319
  202. package/pennyfarthing-dist/scripts/misc/skill-usage-report.sh +0 -193
  203. package/pennyfarthing-dist/scripts/misc/statusline.sh +0 -259
  204. package/pennyfarthing-dist/scripts/misc/uninstall.sh +0 -275
  205. package/pennyfarthing-dist/scripts/misc/validate-subagent-frontmatter.sh +0 -160
  206. package/pennyfarthing-dist/scripts/portraits/generate-portraits.py +0 -417
  207. package/pennyfarthing-dist/scripts/portraits/generate-portraits.sh +0 -54
  208. package/pennyfarthing-dist/scripts/sprint/README.md +0 -29
  209. package/pennyfarthing-dist/scripts/sprint/archive-story.sh +0 -133
  210. package/pennyfarthing-dist/scripts/sprint/available-stories.sh +0 -91
  211. package/pennyfarthing-dist/scripts/sprint/check-story.sh +0 -158
  212. package/pennyfarthing-dist/scripts/sprint/get-epic-field.sh +0 -52
  213. package/pennyfarthing-dist/scripts/sprint/get-story-field.sh +0 -63
  214. package/pennyfarthing-dist/scripts/sprint/list-future.sh +0 -145
  215. package/pennyfarthing-dist/scripts/sprint/new-sprint.sh +0 -110
  216. package/pennyfarthing-dist/scripts/sprint/promote-epic.sh +0 -148
  217. package/pennyfarthing-dist/scripts/sprint/sprint-common.sh +0 -415
  218. package/pennyfarthing-dist/scripts/sprint/sprint-info.sh +0 -33
  219. package/pennyfarthing-dist/scripts/sprint/sprint-metrics.sh +0 -230
  220. package/pennyfarthing-dist/scripts/sprint/sprint-status.sh +0 -134
  221. package/pennyfarthing-dist/scripts/sprint/validate-sprint-yaml.sh +0 -139
  222. package/pennyfarthing-dist/scripts/story/README.md +0 -23
  223. package/pennyfarthing-dist/scripts/story/create-story.sh +0 -19
  224. package/pennyfarthing-dist/scripts/story/size-story.sh +0 -18
  225. package/pennyfarthing-dist/scripts/story/story-template.sh +0 -18
  226. package/pennyfarthing-dist/scripts/test/README.md +0 -23
  227. package/pennyfarthing-dist/scripts/test/ensure-swebench-data.sh +0 -59
  228. package/pennyfarthing-dist/scripts/test/ground-truth-judge.py +0 -220
  229. package/pennyfarthing-dist/scripts/test/swebench-judge.py +0 -374
  230. package/pennyfarthing-dist/scripts/test/test-cache.sh +0 -165
  231. package/pennyfarthing-dist/scripts/test/test-setup.sh +0 -337
  232. package/pennyfarthing-dist/scripts/tests/check.test.sh +0 -582
  233. package/pennyfarthing-dist/scripts/tests/dev-story-workflow-import.test.sh +0 -515
  234. package/pennyfarthing-dist/scripts/tests/epics-and-stories-workflow-import.test.sh +0 -599
  235. package/pennyfarthing-dist/scripts/tests/handoff-phase-update.test.sh +0 -332
  236. package/pennyfarthing-dist/scripts/tests/implementation-readiness-workflow-import.test.sh +0 -573
  237. package/pennyfarthing-dist/scripts/tests/migrate-bmad-workflow.test.sh +0 -859
  238. package/pennyfarthing-dist/scripts/tests/prd-workflow-import.test.sh +0 -662
  239. package/pennyfarthing-dist/scripts/tests/project-context-workflow-import.test.sh +0 -589
  240. package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +0 -106
  241. package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +0 -597
  242. package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +0 -514
  243. package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +0 -517
  244. package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +0 -331
  245. package/pennyfarthing-dist/scripts/tests/ux-design-workflow-import.test.sh +0 -647
  246. package/pennyfarthing-dist/scripts/theme/README.md +0 -22
  247. package/pennyfarthing-dist/scripts/theme/compute-theme-tiers.sh +0 -13
  248. package/pennyfarthing-dist/scripts/theme/compute_theme_tiers.py +0 -402
  249. package/pennyfarthing-dist/scripts/theme/list-themes.sh +0 -30
  250. package/pennyfarthing-dist/scripts/theme/update-theme-tiers.sh +0 -97
  251. package/pennyfarthing-dist/scripts/validation/validate-agent-schema.sh +0 -576
  252. package/pennyfarthing-dist/scripts/workflow/README.md +0 -28
  253. package/pennyfarthing-dist/scripts/workflow/check.py +0 -502
  254. package/pennyfarthing-dist/scripts/workflow/check.sh +0 -24
  255. package/pennyfarthing-dist/scripts/workflow/finish-story.sh +0 -154
  256. package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +0 -222
  257. package/pennyfarthing-dist/scripts/workflow/get-workflow-type.py +0 -61
  258. package/pennyfarthing-dist/scripts/workflow/get-workflow-type.sh +0 -13
  259. package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +0 -124
  260. package/pennyfarthing-dist/scripts/workflow/phase-owner.sh +0 -34
  261. package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +0 -157
  262. package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +0 -132
  263. package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +0 -250
  264. package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +0 -161
  265. package/pennyfarthing-dist/skills/agentic-patterns/SKILL.md +0 -246
  266. package/pennyfarthing-dist/skills/changelog/SKILL.md +0 -385
  267. package/pennyfarthing-dist/skills/code-review/SKILL.md +0 -172
  268. package/pennyfarthing-dist/skills/context-engineering/SKILL.md +0 -277
  269. package/pennyfarthing-dist/skills/cyclist/SKILL.md +0 -88
  270. package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +0 -461
  271. package/pennyfarthing-dist/skills/finalize-run/SKILL.md +0 -261
  272. package/pennyfarthing-dist/skills/jira/SKILL.md +0 -508
  273. package/pennyfarthing-dist/skills/judge/SKILL.md +0 -644
  274. package/pennyfarthing-dist/skills/just/SKILL.md +0 -414
  275. package/pennyfarthing-dist/skills/mermaid/SKILL.md +0 -256
  276. package/pennyfarthing-dist/skills/otel/skill.md +0 -227
  277. package/pennyfarthing-dist/skills/permissions/skill.md +0 -175
  278. package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +0 -187
  279. package/pennyfarthing-dist/skills/skill-registry.schema.json +0 -107
  280. package/pennyfarthing-dist/skills/skill-registry.yaml +0 -393
  281. package/pennyfarthing-dist/skills/sprint/scripts/archive-story.sh +0 -101
  282. package/pennyfarthing-dist/skills/sprint/scripts/available-stories.sh +0 -97
  283. package/pennyfarthing-dist/skills/sprint/scripts/check-story.sh +0 -164
  284. package/pennyfarthing-dist/skills/sprint/scripts/create-jira-epic.sh +0 -101
  285. package/pennyfarthing-dist/skills/sprint/scripts/new-sprint.sh +0 -116
  286. package/pennyfarthing-dist/skills/sprint/scripts/promote-epic.sh +0 -164
  287. package/pennyfarthing-dist/skills/sprint/scripts/sprint-info.sh +0 -39
  288. package/pennyfarthing-dist/skills/sprint/scripts/sprint-status.sh +0 -147
  289. package/pennyfarthing-dist/skills/sprint/scripts/sync-epic-jira.sh +0 -93
  290. package/pennyfarthing-dist/skills/sprint/skill.md +0 -465
  291. package/pennyfarthing-dist/skills/story/scripts/create-story.sh +0 -159
  292. package/pennyfarthing-dist/skills/story/scripts/size-story.sh +0 -198
  293. package/pennyfarthing-dist/skills/story/scripts/story-template.sh +0 -162
  294. package/pennyfarthing-dist/skills/story/skill.md +0 -219
  295. package/pennyfarthing-dist/skills/systematic-debugging/SKILL.md +0 -446
  296. package/pennyfarthing-dist/skills/testing/SKILL.md +0 -121
  297. package/pennyfarthing-dist/skills/testing/references/troubleshooting.md +0 -124
  298. package/pennyfarthing-dist/skills/theme/skill.md +0 -141
  299. package/pennyfarthing-dist/skills/theme-creation/SKILL.md +0 -178
  300. package/pennyfarthing-dist/skills/workflow/scripts/list-workflows.sh +0 -91
  301. package/pennyfarthing-dist/skills/workflow/scripts/resume-workflow.sh +0 -163
  302. package/pennyfarthing-dist/skills/workflow/scripts/show-workflow.sh +0 -138
  303. package/pennyfarthing-dist/skills/workflow/scripts/start-workflow.sh +0 -273
  304. package/pennyfarthing-dist/skills/workflow/scripts/workflow-status.sh +0 -167
  305. package/pennyfarthing-dist/skills/workflow/skill.md +0 -345
  306. package/pennyfarthing-dist/skills/yq/SKILL.md +0 -272
  307. package/pennyfarthing-dist/templates/LEADERBOARD.schema.yaml +0 -187
  308. package/pennyfarthing-dist/templates/LEADERBOARD.template.md +0 -59
  309. package/pennyfarthing-dist/templates/agent-scopes.yaml.template +0 -276
  310. package/pennyfarthing-dist/templates/pennyfarthing-settings.yaml.template +0 -61
  311. package/pennyfarthing-dist/templates/persona-config.yaml.template +0 -22
  312. package/pennyfarthing-dist/templates/preferences.yaml.template +0 -15
  313. package/pennyfarthing-dist/templates/settings.local.json.template +0 -110
  314. package/pennyfarthing-dist/templates/setup-env.sh.template +0 -18
  315. package/pennyfarthing-dist/templates/shared-context.md.template +0 -70
  316. package/pennyfarthing-dist/templates/sidecar/decisions.md.template +0 -40
  317. package/pennyfarthing-dist/templates/sidecar/gotchas.md.template +0 -37
  318. package/pennyfarthing-dist/templates/sidecar/patterns.md.template +0 -34
  319. package/pennyfarthing-dist/workflows/agent-docs.yaml +0 -70
  320. package/pennyfarthing-dist/workflows/architecture/steps/step-01-initialize.md +0 -113
  321. package/pennyfarthing-dist/workflows/architecture/steps/step-01b-continue.md +0 -105
  322. package/pennyfarthing-dist/workflows/architecture/steps/step-02-context.md +0 -127
  323. package/pennyfarthing-dist/workflows/architecture/steps/step-03-patterns.md +0 -145
  324. package/pennyfarthing-dist/workflows/architecture/steps/step-04-components.md +0 -150
  325. package/pennyfarthing-dist/workflows/architecture/steps/step-05-interfaces.md +0 -145
  326. package/pennyfarthing-dist/workflows/architecture/steps/step-06-risks.md +0 -154
  327. package/pennyfarthing-dist/workflows/architecture/steps/step-07-document.md +0 -172
  328. package/pennyfarthing-dist/workflows/architecture/templates/architecture-decision.md +0 -102
  329. package/pennyfarthing-dist/workflows/architecture.yaml +0 -65
  330. package/pennyfarthing-dist/workflows/bdd.yaml +0 -60
  331. package/pennyfarthing-dist/workflows/brainstorming/brain-methods.csv +0 -62
  332. package/pennyfarthing-dist/workflows/brainstorming/checklist.md +0 -44
  333. package/pennyfarthing-dist/workflows/brainstorming/instructions.md +0 -736
  334. package/pennyfarthing-dist/workflows/brainstorming/workflow.yaml +0 -49
  335. package/pennyfarthing-dist/workflows/code-review/checklist.md +0 -23
  336. package/pennyfarthing-dist/workflows/code-review/instructions.md +0 -234
  337. package/pennyfarthing-dist/workflows/code-review/workflow.yaml +0 -51
  338. package/pennyfarthing-dist/workflows/dev-story/checklist.md +0 -80
  339. package/pennyfarthing-dist/workflows/dev-story/instructions.xml +0 -410
  340. package/pennyfarthing-dist/workflows/dev-story/workflow.yaml +0 -50
  341. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-01-validate-prerequisites.md +0 -281
  342. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-02-design-epics.md +0 -256
  343. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-03-create-stories.md +0 -298
  344. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-04-final-validation.md +0 -177
  345. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-05-import-to-future.md +0 -145
  346. package/pennyfarthing-dist/workflows/epics-and-stories/templates/epics-template.md +0 -57
  347. package/pennyfarthing-dist/workflows/epics-and-stories/workflow.yaml +0 -28
  348. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-01-analyze.md +0 -103
  349. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-02-categorize.md +0 -147
  350. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-03-execute.md +0 -215
  351. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-04-verify.md +0 -97
  352. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-05-complete.md +0 -78
  353. package/pennyfarthing-dist/workflows/git-cleanup.yaml +0 -59
  354. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-01-document-discovery.md +0 -211
  355. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-02-prd-analysis.md +0 -199
  356. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-03-epic-coverage-validation.md +0 -202
  357. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-04-ux-alignment.md +0 -162
  358. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-05-epic-quality-review.md +0 -280
  359. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-06-final-assessment.md +0 -158
  360. package/pennyfarthing-dist/workflows/implementation-readiness/templates/readiness-report-template.md +0 -4
  361. package/pennyfarthing-dist/workflows/implementation-readiness/workflow.yaml +0 -40
  362. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-01-connect.md +0 -257
  363. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-02-explore.md +0 -107
  364. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-03-fix.md +0 -127
  365. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-04-commit.md +0 -122
  366. package/pennyfarthing-dist/workflows/interactive-debug/workflow.yaml +0 -51
  367. package/pennyfarthing-dist/workflows/patch.yaml +0 -67
  368. package/pennyfarthing-dist/workflows/prd/data/domain-complexity.csv +0 -13
  369. package/pennyfarthing-dist/workflows/prd/data/prd-purpose.md +0 -197
  370. package/pennyfarthing-dist/workflows/prd/data/project-types.csv +0 -11
  371. package/pennyfarthing-dist/workflows/prd/steps-c/step-01-init.md +0 -197
  372. package/pennyfarthing-dist/workflows/prd/steps-c/step-01b-continue.md +0 -159
  373. package/pennyfarthing-dist/workflows/prd/steps-c/step-02-discovery.md +0 -230
  374. package/pennyfarthing-dist/workflows/prd/steps-c/step-03-success.md +0 -232
  375. package/pennyfarthing-dist/workflows/prd/steps-c/step-04-journeys.md +0 -219
  376. package/pennyfarthing-dist/workflows/prd/steps-c/step-05-domain.md +0 -213
  377. package/pennyfarthing-dist/workflows/prd/steps-c/step-06-innovation.md +0 -232
  378. package/pennyfarthing-dist/workflows/prd/steps-c/step-07-project-type.md +0 -243
  379. package/pennyfarthing-dist/workflows/prd/steps-c/step-08-scoping.md +0 -234
  380. package/pennyfarthing-dist/workflows/prd/steps-c/step-09-functional.md +0 -237
  381. package/pennyfarthing-dist/workflows/prd/steps-c/step-10-nonfunctional.md +0 -248
  382. package/pennyfarthing-dist/workflows/prd/steps-c/step-11-polish.md +0 -223
  383. package/pennyfarthing-dist/workflows/prd/steps-c/step-12-complete.md +0 -186
  384. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01-discovery.md +0 -253
  385. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01b-legacy-conversion.md +0 -214
  386. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-02-review.md +0 -255
  387. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-03-edit.md +0 -259
  388. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-04-complete.md +0 -174
  389. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-01-discovery.md +0 -224
  390. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02-format-detection.md +0 -197
  391. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02b-parity-check.md +0 -215
  392. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-03-density-validation.md +0 -180
  393. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-04-brief-coverage-validation.md +0 -220
  394. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-05-measurability-validation.md +0 -234
  395. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-06-traceability-validation.md +0 -223
  396. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -211
  397. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-08-domain-compliance-validation.md +0 -249
  398. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-09-project-type-validation.md +0 -269
  399. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-10-smart-validation.md +0 -215
  400. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-11-holistic-quality-validation.md +0 -270
  401. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-12-completeness-validation.md +0 -248
  402. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-13-report-complete.md +0 -238
  403. package/pennyfarthing-dist/workflows/prd/templates/prd-template.md +0 -10
  404. package/pennyfarthing-dist/workflows/prd/workflow.yaml +0 -42
  405. package/pennyfarthing-dist/workflows/product-brief/steps/step-01-init.md +0 -195
  406. package/pennyfarthing-dist/workflows/product-brief/steps/step-01b-continue.md +0 -180
  407. package/pennyfarthing-dist/workflows/product-brief/steps/step-02-vision.md +0 -221
  408. package/pennyfarthing-dist/workflows/product-brief/steps/step-03-users.md +0 -224
  409. package/pennyfarthing-dist/workflows/product-brief/steps/step-04-metrics.md +0 -228
  410. package/pennyfarthing-dist/workflows/product-brief/steps/step-05-scope.md +0 -243
  411. package/pennyfarthing-dist/workflows/product-brief/steps/step-06-complete.md +0 -216
  412. package/pennyfarthing-dist/workflows/product-brief/templates/product-brief.template.md +0 -10
  413. package/pennyfarthing-dist/workflows/product-brief/workflow.yaml +0 -31
  414. package/pennyfarthing-dist/workflows/project-context/project-context-template.md +0 -21
  415. package/pennyfarthing-dist/workflows/project-context/steps/step-01-discover.md +0 -206
  416. package/pennyfarthing-dist/workflows/project-context/steps/step-02-generate.md +0 -349
  417. package/pennyfarthing-dist/workflows/project-context/steps/step-03-complete.md +0 -306
  418. package/pennyfarthing-dist/workflows/project-context/workflow.yaml +0 -27
  419. package/pennyfarthing-dist/workflows/project-setup/steps/step-01-discover.md +0 -157
  420. package/pennyfarthing-dist/workflows/project-setup/steps/step-02-clone-repos.md +0 -217
  421. package/pennyfarthing-dist/workflows/project-setup/steps/step-03-repos-yaml.md +0 -159
  422. package/pennyfarthing-dist/workflows/project-setup/steps/step-04-claude-md.md +0 -186
  423. package/pennyfarthing-dist/workflows/project-setup/steps/step-05-shared-context.md +0 -185
  424. package/pennyfarthing-dist/workflows/project-setup/steps/step-06-task-runner.md +0 -279
  425. package/pennyfarthing-dist/workflows/project-setup/steps/step-07-theme.md +0 -200
  426. package/pennyfarthing-dist/workflows/project-setup/steps/step-08-theme-packs.md +0 -142
  427. package/pennyfarthing-dist/workflows/project-setup/steps/step-09-cyclist.md +0 -245
  428. package/pennyfarthing-dist/workflows/project-setup/steps/step-10-complete.md +0 -204
  429. package/pennyfarthing-dist/workflows/project-setup/workflow.yaml +0 -41
  430. package/pennyfarthing-dist/workflows/quick-dev/steps/step-01-mode-detection.md +0 -177
  431. package/pennyfarthing-dist/workflows/quick-dev/steps/step-02-context-gathering.md +0 -143
  432. package/pennyfarthing-dist/workflows/quick-dev/steps/step-03-execute.md +0 -138
  433. package/pennyfarthing-dist/workflows/quick-dev/steps/step-04-self-check.md +0 -135
  434. package/pennyfarthing-dist/workflows/quick-dev/steps/step-05-adversarial-review.md +0 -129
  435. package/pennyfarthing-dist/workflows/quick-dev/steps/step-06-resolve-findings.md +0 -163
  436. package/pennyfarthing-dist/workflows/quick-dev/workflow.yaml +0 -27
  437. package/pennyfarthing-dist/workflows/quick-spec/steps/step-01-understand.md +0 -201
  438. package/pennyfarthing-dist/workflows/quick-spec/steps/step-02-investigate.md +0 -156
  439. package/pennyfarthing-dist/workflows/quick-spec/steps/step-03-generate.md +0 -140
  440. package/pennyfarthing-dist/workflows/quick-spec/steps/step-04-review.md +0 -203
  441. package/pennyfarthing-dist/workflows/quick-spec/tech-spec-template.md +0 -74
  442. package/pennyfarthing-dist/workflows/quick-spec/workflow.yaml +0 -27
  443. package/pennyfarthing-dist/workflows/research/steps-domain/step-01-init.md +0 -159
  444. package/pennyfarthing-dist/workflows/research/steps-domain/step-02-domain-analysis.md +0 -253
  445. package/pennyfarthing-dist/workflows/research/steps-domain/step-03-competitive-landscape.md +0 -263
  446. package/pennyfarthing-dist/workflows/research/steps-domain/step-04-regulatory-focus.md +0 -232
  447. package/pennyfarthing-dist/workflows/research/steps-domain/step-05-technical-trends.md +0 -260
  448. package/pennyfarthing-dist/workflows/research/steps-domain/step-06-research-synthesis.md +0 -477
  449. package/pennyfarthing-dist/workflows/research/steps-market/step-01-init.md +0 -205
  450. package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-behavior.md +0 -262
  451. package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-insights.md +0 -227
  452. package/pennyfarthing-dist/workflows/research/steps-market/step-03-customer-pain-points.md +0 -275
  453. package/pennyfarthing-dist/workflows/research/steps-market/step-04-customer-decisions.md +0 -286
  454. package/pennyfarthing-dist/workflows/research/steps-market/step-05-competitive-analysis.md +0 -203
  455. package/pennyfarthing-dist/workflows/research/steps-market/step-06-research-completion.md +0 -510
  456. package/pennyfarthing-dist/workflows/research/steps-technical/step-01-init.md +0 -159
  457. package/pennyfarthing-dist/workflows/research/steps-technical/step-02-technical-overview.md +0 -264
  458. package/pennyfarthing-dist/workflows/research/steps-technical/step-03-integration-patterns.md +0 -274
  459. package/pennyfarthing-dist/workflows/research/steps-technical/step-04-architectural-patterns.md +0 -228
  460. package/pennyfarthing-dist/workflows/research/steps-technical/step-05-implementation-research.md +0 -267
  461. package/pennyfarthing-dist/workflows/research/steps-technical/step-06-research-synthesis.md +0 -522
  462. package/pennyfarthing-dist/workflows/research/templates/research.template.md +0 -29
  463. package/pennyfarthing-dist/workflows/research/workflow.yaml +0 -45
  464. package/pennyfarthing-dist/workflows/retrospective/checklist.md +0 -31
  465. package/pennyfarthing-dist/workflows/retrospective/instructions.md +0 -1443
  466. package/pennyfarthing-dist/workflows/retrospective/workflow.yaml +0 -50
  467. package/pennyfarthing-dist/workflows/sprint-planning/checklist.md +0 -33
  468. package/pennyfarthing-dist/workflows/sprint-planning/sprint-status-template.yaml +0 -55
  469. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-01-parse-epic-files.md +0 -69
  470. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-02-build-sprint-status.md +0 -61
  471. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-03-status-detection.md +0 -80
  472. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-04-generate-status-file.md +0 -90
  473. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-05-validate-and-report.md +0 -78
  474. package/pennyfarthing-dist/workflows/sprint-planning/workflow.yaml +0 -34
  475. package/pennyfarthing-dist/workflows/tdd.yaml +0 -50
  476. package/pennyfarthing-dist/workflows/trivial.yaml +0 -40
  477. package/pennyfarthing-dist/workflows/ux-design/steps/step-01-init.md +0 -141
  478. package/pennyfarthing-dist/workflows/ux-design/steps/step-01b-continue.md +0 -133
  479. package/pennyfarthing-dist/workflows/ux-design/steps/step-02-discovery.md +0 -196
  480. package/pennyfarthing-dist/workflows/ux-design/steps/step-03-core-experience.md +0 -222
  481. package/pennyfarthing-dist/workflows/ux-design/steps/step-04-emotional-response.md +0 -225
  482. package/pennyfarthing-dist/workflows/ux-design/steps/step-05-inspiration.md +0 -240
  483. package/pennyfarthing-dist/workflows/ux-design/steps/step-06-design-system.md +0 -258
  484. package/pennyfarthing-dist/workflows/ux-design/steps/step-07-defining-experience.md +0 -260
  485. package/pennyfarthing-dist/workflows/ux-design/steps/step-08-visual-foundation.md +0 -230
  486. package/pennyfarthing-dist/workflows/ux-design/steps/step-09-design-directions.md +0 -230
  487. package/pennyfarthing-dist/workflows/ux-design/steps/step-10-user-journeys.md +0 -247
  488. package/pennyfarthing-dist/workflows/ux-design/steps/step-11-component-strategy.md +0 -254
  489. package/pennyfarthing-dist/workflows/ux-design/steps/step-12-ux-patterns.md +0 -243
  490. package/pennyfarthing-dist/workflows/ux-design/steps/step-13-responsive-accessibility.md +0 -270
  491. package/pennyfarthing-dist/workflows/ux-design/steps/step-14-complete.md +0 -234
  492. package/pennyfarthing-dist/workflows/ux-design/ux-design-template.md +0 -13
  493. package/pennyfarthing-dist/workflows/ux-design/workflow.yaml +0 -41
  494. package/pennyfarthing_scripts/README.md +0 -66
  495. package/pennyfarthing_scripts/__init__.py +0 -17
  496. package/pennyfarthing_scripts/__pycache__/__init__.cpython-311.pyc +0 -0
  497. package/pennyfarthing_scripts/__pycache__/__init__.cpython-314.pyc +0 -0
  498. package/pennyfarthing_scripts/__pycache__/cli.cpython-314.pyc +0 -0
  499. package/pennyfarthing_scripts/__pycache__/config.cpython-314.pyc +0 -0
  500. package/pennyfarthing_scripts/__pycache__/hooks.cpython-314.pyc +0 -0
  501. package/pennyfarthing_scripts/__pycache__/jira.cpython-314.pyc +0 -0
  502. package/pennyfarthing_scripts/__pycache__/jira_bidirectional_sync.cpython-314.pyc +0 -0
  503. package/pennyfarthing_scripts/__pycache__/jira_epic_creation.cpython-314.pyc +0 -0
  504. package/pennyfarthing_scripts/__pycache__/jira_sync.cpython-314.pyc +0 -0
  505. package/pennyfarthing_scripts/__pycache__/jira_sync_story.cpython-314.pyc +0 -0
  506. package/pennyfarthing_scripts/__pycache__/output.cpython-314.pyc +0 -0
  507. package/pennyfarthing_scripts/__pycache__/patch_mode.cpython-314.pyc +0 -0
  508. package/pennyfarthing_scripts/__pycache__/schema_validation_hook.cpython-314.pyc +0 -0
  509. package/pennyfarthing_scripts/__pycache__/sprint.cpython-314.pyc +0 -0
  510. package/pennyfarthing_scripts/__pycache__/workflow.cpython-311.pyc +0 -0
  511. package/pennyfarthing_scripts/__pycache__/workflow.cpython-314.pyc +0 -0
  512. package/pennyfarthing_scripts/bellmode_hook.py +0 -154
  513. package/pennyfarthing_scripts/brownfield/__init__.py +0 -35
  514. package/pennyfarthing_scripts/brownfield/__main__.py +0 -7
  515. package/pennyfarthing_scripts/brownfield/__pycache__/__init__.cpython-314.pyc +0 -0
  516. package/pennyfarthing_scripts/brownfield/__pycache__/__main__.cpython-314.pyc +0 -0
  517. package/pennyfarthing_scripts/brownfield/__pycache__/cli.cpython-314.pyc +0 -0
  518. package/pennyfarthing_scripts/brownfield/__pycache__/discover.cpython-314.pyc +0 -0
  519. package/pennyfarthing_scripts/brownfield/cli.py +0 -131
  520. package/pennyfarthing_scripts/brownfield/discover.py +0 -753
  521. package/pennyfarthing_scripts/cli.py +0 -174
  522. package/pennyfarthing_scripts/common/__init__.py +0 -49
  523. package/pennyfarthing_scripts/common/__pycache__/__init__.cpython-314.pyc +0 -0
  524. package/pennyfarthing_scripts/common/__pycache__/config.cpython-314.pyc +0 -0
  525. package/pennyfarthing_scripts/common/__pycache__/output.cpython-314.pyc +0 -0
  526. package/pennyfarthing_scripts/common/__pycache__/themes.cpython-314.pyc +0 -0
  527. package/pennyfarthing_scripts/common/config.py +0 -91
  528. package/pennyfarthing_scripts/common/output.py +0 -180
  529. package/pennyfarthing_scripts/common/themes.py +0 -253
  530. package/pennyfarthing_scripts/config.py +0 -21
  531. package/pennyfarthing_scripts/context.py +0 -414
  532. package/pennyfarthing_scripts/git/__init__.py +0 -29
  533. package/pennyfarthing_scripts/git/__pycache__/__init__.cpython-314.pyc +0 -0
  534. package/pennyfarthing_scripts/git/__pycache__/create_branches.cpython-314.pyc +0 -0
  535. package/pennyfarthing_scripts/git/__pycache__/status_all.cpython-314.pyc +0 -0
  536. package/pennyfarthing_scripts/git/create_branches.py +0 -439
  537. package/pennyfarthing_scripts/git/status_all.py +0 -310
  538. package/pennyfarthing_scripts/hooks.py +0 -455
  539. package/pennyfarthing_scripts/jira/__init__.py +0 -93
  540. package/pennyfarthing_scripts/jira/__main__.py +0 -10
  541. package/pennyfarthing_scripts/jira/__pycache__/__init__.cpython-314.pyc +0 -0
  542. package/pennyfarthing_scripts/jira/__pycache__/__main__.cpython-314.pyc +0 -0
  543. package/pennyfarthing_scripts/jira/__pycache__/bidirectional.cpython-314.pyc +0 -0
  544. package/pennyfarthing_scripts/jira/__pycache__/claim.cpython-314.pyc +0 -0
  545. package/pennyfarthing_scripts/jira/__pycache__/cli.cpython-314.pyc +0 -0
  546. package/pennyfarthing_scripts/jira/__pycache__/client.cpython-314.pyc +0 -0
  547. package/pennyfarthing_scripts/jira/__pycache__/compat.cpython-314.pyc +0 -0
  548. package/pennyfarthing_scripts/jira/__pycache__/epic.cpython-314.pyc +0 -0
  549. package/pennyfarthing_scripts/jira/__pycache__/mappings.cpython-314.pyc +0 -0
  550. package/pennyfarthing_scripts/jira/__pycache__/models.cpython-314.pyc +0 -0
  551. package/pennyfarthing_scripts/jira/__pycache__/story.cpython-314.pyc +0 -0
  552. package/pennyfarthing_scripts/jira/__pycache__/sync.cpython-314.pyc +0 -0
  553. package/pennyfarthing_scripts/jira/bidirectional.py +0 -561
  554. package/pennyfarthing_scripts/jira/claim.py +0 -211
  555. package/pennyfarthing_scripts/jira/cli.py +0 -150
  556. package/pennyfarthing_scripts/jira/client.py +0 -613
  557. package/pennyfarthing_scripts/jira/epic.py +0 -176
  558. package/pennyfarthing_scripts/jira/story.py +0 -219
  559. package/pennyfarthing_scripts/jira/sync.py +0 -350
  560. package/pennyfarthing_scripts/jira_bidirectional_sync.py +0 -37
  561. package/pennyfarthing_scripts/jira_epic_creation.py +0 -30
  562. package/pennyfarthing_scripts/jira_sync.py +0 -36
  563. package/pennyfarthing_scripts/jira_sync_story.py +0 -30
  564. package/pennyfarthing_scripts/migration/__init__.py +0 -39
  565. package/pennyfarthing_scripts/migration/__main__.py +0 -10
  566. package/pennyfarthing_scripts/migration/__pycache__/__init__.cpython-314.pyc +0 -0
  567. package/pennyfarthing_scripts/migration/__pycache__/__main__.cpython-314.pyc +0 -0
  568. package/pennyfarthing_scripts/migration/__pycache__/cli.cpython-314.pyc +0 -0
  569. package/pennyfarthing_scripts/migration/__pycache__/session.cpython-314.pyc +0 -0
  570. package/pennyfarthing_scripts/migration/__pycache__/skill.cpython-314.pyc +0 -0
  571. package/pennyfarthing_scripts/migration/__pycache__/step.cpython-314.pyc +0 -0
  572. package/pennyfarthing_scripts/migration/__pycache__/validate.cpython-314.pyc +0 -0
  573. package/pennyfarthing_scripts/migration/cli.py +0 -304
  574. package/pennyfarthing_scripts/migration/session.py +0 -384
  575. package/pennyfarthing_scripts/migration/skill.py +0 -188
  576. package/pennyfarthing_scripts/migration/step.py +0 -229
  577. package/pennyfarthing_scripts/migration/validate.py +0 -282
  578. package/pennyfarthing_scripts/output.py +0 -37
  579. package/pennyfarthing_scripts/patch_mode.py +0 -449
  580. package/pennyfarthing_scripts/preflight/__init__.py +0 -17
  581. package/pennyfarthing_scripts/preflight/__main__.py +0 -10
  582. package/pennyfarthing_scripts/preflight/__pycache__/__init__.cpython-314.pyc +0 -0
  583. package/pennyfarthing_scripts/preflight/__pycache__/__main__.cpython-314.pyc +0 -0
  584. package/pennyfarthing_scripts/preflight/__pycache__/cli.cpython-314.pyc +0 -0
  585. package/pennyfarthing_scripts/preflight/__pycache__/finish.cpython-314.pyc +0 -0
  586. package/pennyfarthing_scripts/preflight/cli.py +0 -141
  587. package/pennyfarthing_scripts/preflight/finish.py +0 -382
  588. package/pennyfarthing_scripts/pretooluse_hook.py +0 -142
  589. package/pennyfarthing_scripts/prime/__init__.py +0 -125
  590. package/pennyfarthing_scripts/prime/__main__.py +0 -8
  591. package/pennyfarthing_scripts/prime/__pycache__/__init__.cpython-314.pyc +0 -0
  592. package/pennyfarthing_scripts/prime/__pycache__/__main__.cpython-314.pyc +0 -0
  593. package/pennyfarthing_scripts/prime/__pycache__/cli.cpython-314.pyc +0 -0
  594. package/pennyfarthing_scripts/prime/__pycache__/loader.cpython-314.pyc +0 -0
  595. package/pennyfarthing_scripts/prime/__pycache__/models.cpython-314.pyc +0 -0
  596. package/pennyfarthing_scripts/prime/__pycache__/persona.cpython-314.pyc +0 -0
  597. package/pennyfarthing_scripts/prime/__pycache__/session.cpython-314.pyc +0 -0
  598. package/pennyfarthing_scripts/prime/__pycache__/tiers.cpython-314.pyc +0 -0
  599. package/pennyfarthing_scripts/prime/__pycache__/workflow.cpython-314.pyc +0 -0
  600. package/pennyfarthing_scripts/prime/cli.py +0 -645
  601. package/pennyfarthing_scripts/prime/loader.py +0 -239
  602. package/pennyfarthing_scripts/prime/models.py +0 -206
  603. package/pennyfarthing_scripts/prime/persona.py +0 -308
  604. package/pennyfarthing_scripts/prime/session.py +0 -183
  605. package/pennyfarthing_scripts/prime/tiers.py +0 -201
  606. package/pennyfarthing_scripts/prime/workflow.py +0 -275
  607. package/pennyfarthing_scripts/schema_validation_hook.py +0 -306
  608. package/pennyfarthing_scripts/sprint/__init__.py +0 -66
  609. package/pennyfarthing_scripts/sprint/__main__.py +0 -10
  610. package/pennyfarthing_scripts/sprint/__pycache__/__init__.cpython-314.pyc +0 -0
  611. package/pennyfarthing_scripts/sprint/__pycache__/__main__.cpython-314.pyc +0 -0
  612. package/pennyfarthing_scripts/sprint/__pycache__/archive.cpython-314.pyc +0 -0
  613. package/pennyfarthing_scripts/sprint/__pycache__/archive_epic.cpython-314.pyc +0 -0
  614. package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
  615. package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-314.pyc +0 -0
  616. package/pennyfarthing_scripts/sprint/__pycache__/status.cpython-314.pyc +0 -0
  617. package/pennyfarthing_scripts/sprint/__pycache__/validator.cpython-314.pyc +0 -0
  618. package/pennyfarthing_scripts/sprint/__pycache__/work.cpython-314.pyc +0 -0
  619. package/pennyfarthing_scripts/sprint/archive.py +0 -108
  620. package/pennyfarthing_scripts/sprint/archive_epic.py +0 -399
  621. package/pennyfarthing_scripts/sprint/cli.py +0 -284
  622. package/pennyfarthing_scripts/sprint/import_epic.py +0 -431
  623. package/pennyfarthing_scripts/sprint/loader.py +0 -193
  624. package/pennyfarthing_scripts/sprint/status.py +0 -122
  625. package/pennyfarthing_scripts/sprint/validator.py +0 -405
  626. package/pennyfarthing_scripts/sprint/work.py +0 -192
  627. package/pennyfarthing_scripts/story/__init__.py +0 -67
  628. package/pennyfarthing_scripts/story/__main__.py +0 -10
  629. package/pennyfarthing_scripts/story/__pycache__/__init__.cpython-314.pyc +0 -0
  630. package/pennyfarthing_scripts/story/__pycache__/__main__.cpython-314.pyc +0 -0
  631. package/pennyfarthing_scripts/story/__pycache__/cli.cpython-314.pyc +0 -0
  632. package/pennyfarthing_scripts/story/__pycache__/create.cpython-314.pyc +0 -0
  633. package/pennyfarthing_scripts/story/__pycache__/size.cpython-314.pyc +0 -0
  634. package/pennyfarthing_scripts/story/__pycache__/template.cpython-314.pyc +0 -0
  635. package/pennyfarthing_scripts/story/cli.py +0 -105
  636. package/pennyfarthing_scripts/story/create.py +0 -167
  637. package/pennyfarthing_scripts/story/size.py +0 -113
  638. package/pennyfarthing_scripts/story/template.py +0 -151
  639. package/pennyfarthing_scripts/swebench.py +0 -216
  640. package/pennyfarthing_scripts/tests/__init__.py +0 -1
  641. package/pennyfarthing_scripts/tests/__pycache__/__init__.cpython-314.pyc +0 -0
  642. package/pennyfarthing_scripts/tests/__pycache__/conftest.cpython-314-pytest-9.0.2.pyc +0 -0
  643. package/pennyfarthing_scripts/tests/__pycache__/test_brownfield.cpython-314-pytest-9.0.2.pyc +0 -0
  644. package/pennyfarthing_scripts/tests/__pycache__/test_cli_modules.cpython-314-pytest-9.0.2.pyc +0 -0
  645. package/pennyfarthing_scripts/tests/__pycache__/test_common.cpython-314-pytest-9.0.2.pyc +0 -0
  646. package/pennyfarthing_scripts/tests/__pycache__/test_git_utils.cpython-314-pytest-9.0.2.pyc +0 -0
  647. package/pennyfarthing_scripts/tests/__pycache__/test_jira_package.cpython-314-pytest-9.0.2.pyc +0 -0
  648. package/pennyfarthing_scripts/tests/__pycache__/test_package_structure.cpython-314-pytest-9.0.2.pyc +0 -0
  649. package/pennyfarthing_scripts/tests/__pycache__/test_patch_mode.cpython-314-pytest-9.0.2.pyc +0 -0
  650. package/pennyfarthing_scripts/tests/__pycache__/test_prime.cpython-314-pytest-9.0.2.pyc +0 -0
  651. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_package.cpython-314-pytest-9.0.2.pyc +0 -0
  652. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_validator.cpython-314-pytest-9.0.2.pyc +0 -0
  653. package/pennyfarthing_scripts/tests/__pycache__/test_story_package.cpython-314-pytest-9.0.2.pyc +0 -0
  654. package/pennyfarthing_scripts/tests/__pycache__/test_tiers.cpython-314-pytest-9.0.2.pyc +0 -0
  655. package/pennyfarthing_scripts/tests/__pycache__/test_token_counting.cpython-314-pytest-9.0.2.pyc +0 -0
  656. package/pennyfarthing_scripts/tests/__pycache__/test_workflow_check.cpython-314-pytest-9.0.2.pyc +0 -0
  657. package/pennyfarthing_scripts/tests/__pycache__/test_workflow_cli.cpython-314-pytest-9.0.2.pyc +0 -0
  658. package/pennyfarthing_scripts/tests/conftest.py +0 -106
  659. package/pennyfarthing_scripts/tests/test_brownfield.py +0 -842
  660. package/pennyfarthing_scripts/tests/test_cli_modules.py +0 -245
  661. package/pennyfarthing_scripts/tests/test_common.py +0 -180
  662. package/pennyfarthing_scripts/tests/test_git_utils.py +0 -866
  663. package/pennyfarthing_scripts/tests/test_jira_package.py +0 -334
  664. package/pennyfarthing_scripts/tests/test_package_structure.py +0 -372
  665. package/pennyfarthing_scripts/tests/test_patch_mode.py +0 -830
  666. package/pennyfarthing_scripts/tests/test_prime.py +0 -1050
  667. package/pennyfarthing_scripts/tests/test_sprint_package.py +0 -236
  668. package/pennyfarthing_scripts/tests/test_sprint_validator.py +0 -675
  669. package/pennyfarthing_scripts/tests/test_story_package.py +0 -156
  670. package/pennyfarthing_scripts/tests/test_tiers.py +0 -1090
  671. package/pennyfarthing_scripts/tests/test_token_counting.py +0 -559
  672. package/pennyfarthing_scripts/tests/test_workflow_check.py +0 -341
  673. package/pennyfarthing_scripts/welcome_hook.py +0 -157
  674. package/pennyfarthing_scripts/workflow.py +0 -287
  675. /package/{packages/core/bin → bin}/pennyfarthing.js +0 -0
  676. /package/{packages/core/dist → dist}/bmad/context-reader.d.ts +0 -0
  677. /package/{packages/core/dist → dist}/bmad/context-reader.d.ts.map +0 -0
  678. /package/{packages/core/dist → dist}/bmad/context-reader.js +0 -0
  679. /package/{packages/core/dist → dist}/bmad/context-reader.js.map +0 -0
  680. /package/{packages/core/dist → dist}/bmad/context-reader.test.d.ts +0 -0
  681. /package/{packages/core/dist → dist}/bmad/context-reader.test.d.ts.map +0 -0
  682. /package/{packages/core/dist → dist}/bmad/context-reader.test.js +0 -0
  683. /package/{packages/core/dist → dist}/bmad/context-reader.test.js.map +0 -0
  684. /package/{packages/core/dist → dist}/bmad/epics-parser.d.ts +0 -0
  685. /package/{packages/core/dist → dist}/bmad/epics-parser.d.ts.map +0 -0
  686. /package/{packages/core/dist → dist}/bmad/epics-parser.js +0 -0
  687. /package/{packages/core/dist → dist}/bmad/epics-parser.js.map +0 -0
  688. /package/{packages/core/dist → dist}/bmad/epics-parser.test.d.ts +0 -0
  689. /package/{packages/core/dist → dist}/bmad/epics-parser.test.d.ts.map +0 -0
  690. /package/{packages/core/dist → dist}/bmad/epics-parser.test.js +0 -0
  691. /package/{packages/core/dist → dist}/bmad/epics-parser.test.js.map +0 -0
  692. /package/{packages/core/dist → dist}/bmad/index.d.ts +0 -0
  693. /package/{packages/core/dist → dist}/bmad/index.d.ts.map +0 -0
  694. /package/{packages/core/dist → dist}/bmad/index.js +0 -0
  695. /package/{packages/core/dist → dist}/bmad/index.js.map +0 -0
  696. /package/{packages/core/dist → dist}/bmad/status-sync.d.ts +0 -0
  697. /package/{packages/core/dist → dist}/bmad/status-sync.d.ts.map +0 -0
  698. /package/{packages/core/dist → dist}/bmad/status-sync.js +0 -0
  699. /package/{packages/core/dist → dist}/bmad/status-sync.js.map +0 -0
  700. /package/{packages/core/dist → dist}/bmad/status-sync.test.d.ts +0 -0
  701. /package/{packages/core/dist → dist}/bmad/status-sync.test.d.ts.map +0 -0
  702. /package/{packages/core/dist → dist}/bmad/status-sync.test.js +0 -0
  703. /package/{packages/core/dist → dist}/bmad/status-sync.test.js.map +0 -0
  704. /package/{packages/core/dist → dist}/bmad/story-exporter.d.ts +0 -0
  705. /package/{packages/core/dist → dist}/bmad/story-exporter.d.ts.map +0 -0
  706. /package/{packages/core/dist → dist}/bmad/story-exporter.js +0 -0
  707. /package/{packages/core/dist → dist}/bmad/story-exporter.js.map +0 -0
  708. /package/{packages/core/dist → dist}/bmad/story-exporter.test.d.ts +0 -0
  709. /package/{packages/core/dist → dist}/bmad/story-exporter.test.d.ts.map +0 -0
  710. /package/{packages/core/dist → dist}/bmad/story-exporter.test.js +0 -0
  711. /package/{packages/core/dist → dist}/bmad/story-exporter.test.js.map +0 -0
  712. /package/{packages/core/dist → dist}/bmad/story-parser.d.ts +0 -0
  713. /package/{packages/core/dist → dist}/bmad/story-parser.d.ts.map +0 -0
  714. /package/{packages/core/dist → dist}/bmad/story-parser.js +0 -0
  715. /package/{packages/core/dist → dist}/bmad/story-parser.js.map +0 -0
  716. /package/{packages/core/dist → dist}/bmad/story-parser.test.d.ts +0 -0
  717. /package/{packages/core/dist → dist}/bmad/story-parser.test.d.ts.map +0 -0
  718. /package/{packages/core/dist → dist}/bmad/story-parser.test.js +0 -0
  719. /package/{packages/core/dist → dist}/bmad/story-parser.test.js.map +0 -0
  720. /package/{packages/core/dist → dist}/cli/commands/command.d.ts +0 -0
  721. /package/{packages/core/dist → dist}/cli/commands/command.d.ts.map +0 -0
  722. /package/{packages/core/dist → dist}/cli/commands/command.js +0 -0
  723. /package/{packages/core/dist → dist}/cli/commands/command.js.map +0 -0
  724. /package/{packages/core/dist → dist}/cli/commands/cyclist.d.ts +0 -0
  725. /package/{packages/core/dist → dist}/cli/commands/cyclist.d.ts.map +0 -0
  726. /package/{packages/core/dist → dist}/cli/commands/cyclist.js +0 -0
  727. /package/{packages/core/dist → dist}/cli/commands/cyclist.js.map +0 -0
  728. /package/{packages/core/dist → dist}/cli/commands/cyclist.test.d.ts +0 -0
  729. /package/{packages/core/dist → dist}/cli/commands/cyclist.test.d.ts.map +0 -0
  730. /package/{packages/core/dist → dist}/cli/commands/cyclist.test.js +0 -0
  731. /package/{packages/core/dist → dist}/cli/commands/cyclist.test.js.map +0 -0
  732. /package/{packages/core/dist → dist}/cli/commands/doctor-legacy.test.d.ts +0 -0
  733. /package/{packages/core/dist → dist}/cli/commands/doctor-legacy.test.d.ts.map +0 -0
  734. /package/{packages/core/dist → dist}/cli/commands/doctor-legacy.test.js +0 -0
  735. /package/{packages/core/dist → dist}/cli/commands/doctor-legacy.test.js.map +0 -0
  736. /package/{packages/core/dist → dist}/cli/commands/doctor.d.ts +0 -0
  737. /package/{packages/core/dist → dist}/cli/commands/doctor.d.ts.map +0 -0
  738. /package/{packages/core/dist → dist}/cli/commands/doctor.js +0 -0
  739. /package/{packages/core/dist → dist}/cli/commands/doctor.js.map +0 -0
  740. /package/{packages/core/dist → dist}/cli/commands/init.d.ts +0 -0
  741. /package/{packages/core/dist → dist}/cli/commands/init.d.ts.map +0 -0
  742. /package/{packages/core/dist → dist}/cli/commands/init.js +0 -0
  743. /package/{packages/core/dist → dist}/cli/commands/init.js.map +0 -0
  744. /package/{packages/core/dist → dist}/cli/commands/skill.d.ts +0 -0
  745. /package/{packages/core/dist → dist}/cli/commands/skill.d.ts.map +0 -0
  746. /package/{packages/core/dist → dist}/cli/commands/skill.js +0 -0
  747. /package/{packages/core/dist → dist}/cli/commands/skill.js.map +0 -0
  748. /package/{packages/core/dist → dist}/cli/commands/theme.d.ts +0 -0
  749. /package/{packages/core/dist → dist}/cli/commands/theme.d.ts.map +0 -0
  750. /package/{packages/core/dist → dist}/cli/commands/theme.js +0 -0
  751. /package/{packages/core/dist → dist}/cli/commands/theme.js.map +0 -0
  752. /package/{packages/core/dist → dist}/cli/commands/uninstall.d.ts +0 -0
  753. /package/{packages/core/dist → dist}/cli/commands/uninstall.d.ts.map +0 -0
  754. /package/{packages/core/dist → dist}/cli/commands/uninstall.js +0 -0
  755. /package/{packages/core/dist → dist}/cli/commands/uninstall.js.map +0 -0
  756. /package/{packages/core/dist → dist}/cli/commands/update.d.ts +0 -0
  757. /package/{packages/core/dist → dist}/cli/commands/update.d.ts.map +0 -0
  758. /package/{packages/core/dist → dist}/cli/commands/update.js +0 -0
  759. /package/{packages/core/dist → dist}/cli/commands/update.js.map +0 -0
  760. /package/{packages/core/dist → dist}/cli/commands/version.d.ts +0 -0
  761. /package/{packages/core/dist → dist}/cli/commands/version.d.ts.map +0 -0
  762. /package/{packages/core/dist → dist}/cli/commands/version.js +0 -0
  763. /package/{packages/core/dist → dist}/cli/commands/version.js.map +0 -0
  764. /package/{packages/core/dist → dist}/cli/customization.test.d.ts +0 -0
  765. /package/{packages/core/dist → dist}/cli/customization.test.d.ts.map +0 -0
  766. /package/{packages/core/dist → dist}/cli/customization.test.js +0 -0
  767. /package/{packages/core/dist → dist}/cli/customization.test.js.map +0 -0
  768. /package/{packages/core/dist → dist}/cli/cyclist-migration.test.d.ts +0 -0
  769. /package/{packages/core/dist → dist}/cli/cyclist-migration.test.d.ts.map +0 -0
  770. /package/{packages/core/dist → dist}/cli/cyclist-migration.test.js +0 -0
  771. /package/{packages/core/dist → dist}/cli/cyclist-migration.test.js.map +0 -0
  772. /package/{packages/core/dist → dist}/cli/index.d.ts +0 -0
  773. /package/{packages/core/dist → dist}/cli/index.d.ts.map +0 -0
  774. /package/{packages/core/dist → dist}/cli/index.js +0 -0
  775. /package/{packages/core/dist → dist}/cli/index.js.map +0 -0
  776. /package/{packages/core/dist → dist}/cli/ocean-profiles.test.d.ts +0 -0
  777. /package/{packages/core/dist → dist}/cli/ocean-profiles.test.d.ts.map +0 -0
  778. /package/{packages/core/dist → dist}/cli/ocean-profiles.test.js +0 -0
  779. /package/{packages/core/dist → dist}/cli/ocean-profiles.test.js.map +0 -0
  780. /package/{packages/core/dist → dist}/cli/theme-maker.test.d.ts +0 -0
  781. /package/{packages/core/dist → dist}/cli/theme-maker.test.d.ts.map +0 -0
  782. /package/{packages/core/dist → dist}/cli/theme-maker.test.js +0 -0
  783. /package/{packages/core/dist → dist}/cli/theme-maker.test.js.map +0 -0
  784. /package/{packages/core/dist → dist}/cli/utils/constants.d.ts +0 -0
  785. /package/{packages/core/dist → dist}/cli/utils/constants.d.ts.map +0 -0
  786. /package/{packages/core/dist → dist}/cli/utils/constants.js +0 -0
  787. /package/{packages/core/dist → dist}/cli/utils/constants.js.map +0 -0
  788. /package/{packages/core/dist → dist}/cli/utils/files.d.ts +0 -0
  789. /package/{packages/core/dist → dist}/cli/utils/files.d.ts.map +0 -0
  790. /package/{packages/core/dist → dist}/cli/utils/files.js +0 -0
  791. /package/{packages/core/dist → dist}/cli/utils/files.js.map +0 -0
  792. /package/{packages/core/dist → dist}/cli/utils/logger.d.ts +0 -0
  793. /package/{packages/core/dist → dist}/cli/utils/logger.d.ts.map +0 -0
  794. /package/{packages/core/dist → dist}/cli/utils/logger.js +0 -0
  795. /package/{packages/core/dist → dist}/cli/utils/logger.js.map +0 -0
  796. /package/{packages/core/dist → dist}/cli/utils/manifest.d.ts +0 -0
  797. /package/{packages/core/dist → dist}/cli/utils/manifest.d.ts.map +0 -0
  798. /package/{packages/core/dist → dist}/cli/utils/manifest.js +0 -0
  799. /package/{packages/core/dist → dist}/cli/utils/manifest.js.map +0 -0
  800. /package/{packages/core/dist → dist}/cli/utils/node-modules.d.ts +0 -0
  801. /package/{packages/core/dist → dist}/cli/utils/node-modules.d.ts.map +0 -0
  802. /package/{packages/core/dist → dist}/cli/utils/node-modules.js +0 -0
  803. /package/{packages/core/dist → dist}/cli/utils/node-modules.js.map +0 -0
  804. /package/{packages/core/dist → dist}/cli/utils/prompts.d.ts +0 -0
  805. /package/{packages/core/dist → dist}/cli/utils/prompts.d.ts.map +0 -0
  806. /package/{packages/core/dist → dist}/cli/utils/prompts.js +0 -0
  807. /package/{packages/core/dist → dist}/cli/utils/prompts.js.map +0 -0
  808. /package/{packages/core/dist → dist}/cli/utils/settings.d.ts +0 -0
  809. /package/{packages/core/dist → dist}/cli/utils/settings.d.ts.map +0 -0
  810. /package/{packages/core/dist → dist}/cli/utils/settings.js +0 -0
  811. /package/{packages/core/dist → dist}/cli/utils/settings.js.map +0 -0
  812. /package/{packages/core/dist → dist}/cli/utils/symlinks.d.ts +0 -0
  813. /package/{packages/core/dist → dist}/cli/utils/symlinks.d.ts.map +0 -0
  814. /package/{packages/core/dist → dist}/cli/utils/symlinks.js +0 -0
  815. /package/{packages/core/dist → dist}/cli/utils/symlinks.js.map +0 -0
  816. /package/{packages/core/dist → dist}/cli/utils/themes.d.ts +0 -0
  817. /package/{packages/core/dist → dist}/cli/utils/themes.d.ts.map +0 -0
  818. /package/{packages/core/dist → dist}/cli/utils/themes.js +0 -0
  819. /package/{packages/core/dist → dist}/cli/utils/themes.js.map +0 -0
  820. /package/{packages/core/dist → dist}/cli/utils/themes.test.d.ts +0 -0
  821. /package/{packages/core/dist → dist}/cli/utils/themes.test.d.ts.map +0 -0
  822. /package/{packages/core/dist → dist}/cli/utils/themes.test.js +0 -0
  823. /package/{packages/core/dist → dist}/cli/utils/themes.test.js.map +0 -0
  824. /package/{packages/core/dist → dist}/cli/utils/version.d.ts +0 -0
  825. /package/{packages/core/dist → dist}/cli/utils/version.d.ts.map +0 -0
  826. /package/{packages/core/dist → dist}/cli/utils/version.js +0 -0
  827. /package/{packages/core/dist → dist}/cli/utils/version.js.map +0 -0
  828. /package/{packages/core/dist → dist}/cli/workspace.test.d.ts +0 -0
  829. /package/{packages/core/dist → dist}/cli/workspace.test.d.ts.map +0 -0
  830. /package/{packages/core/dist → dist}/cli/workspace.test.js +0 -0
  831. /package/{packages/core/dist → dist}/cli/workspace.test.js.map +0 -0
  832. /package/{packages/core/dist → dist}/index.d.ts +0 -0
  833. /package/{packages/core/dist → dist}/index.d.ts.map +0 -0
  834. /package/{packages/core/dist → dist}/index.js +0 -0
  835. /package/{packages/core/dist → dist}/index.js.map +0 -0
  836. /package/{packages/core/dist → dist}/jira/jira-epic-creation.d.ts +0 -0
  837. /package/{packages/core/dist → dist}/jira/jira-epic-creation.d.ts.map +0 -0
  838. /package/{packages/core/dist → dist}/jira/jira-epic-creation.js +0 -0
  839. /package/{packages/core/dist → dist}/jira/jira-epic-creation.js.map +0 -0
  840. /package/{packages/core/dist → dist}/jira/jira-epic-creation.test.d.ts +0 -0
  841. /package/{packages/core/dist → dist}/jira/jira-epic-creation.test.d.ts.map +0 -0
  842. /package/{packages/core/dist → dist}/jira/jira-epic-creation.test.js +0 -0
  843. /package/{packages/core/dist → dist}/jira/jira-epic-creation.test.js.map +0 -0
  844. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.d.ts +0 -0
  845. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.d.ts.map +0 -0
  846. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.js +0 -0
  847. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.js.map +0 -0
  848. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.test.d.ts +0 -0
  849. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.test.d.ts.map +0 -0
  850. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.test.js +0 -0
  851. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.test.js.map +0 -0
  852. /package/{packages/core/dist → dist}/permissions/index.d.ts +0 -0
  853. /package/{packages/core/dist → dist}/permissions/index.d.ts.map +0 -0
  854. /package/{packages/core/dist → dist}/permissions/index.js +0 -0
  855. /package/{packages/core/dist → dist}/permissions/index.js.map +0 -0
  856. /package/{packages/core/dist → dist}/permissions/permission-schema.d.ts +0 -0
  857. /package/{packages/core/dist → dist}/permissions/permission-schema.d.ts.map +0 -0
  858. /package/{packages/core/dist → dist}/permissions/permission-schema.js +0 -0
  859. /package/{packages/core/dist → dist}/permissions/permission-schema.js.map +0 -0
  860. /package/{packages/core/dist → dist}/permissions/permission-schema.test.d.ts +0 -0
  861. /package/{packages/core/dist → dist}/permissions/permission-schema.test.d.ts.map +0 -0
  862. /package/{packages/core/dist → dist}/permissions/permission-schema.test.js +0 -0
  863. /package/{packages/core/dist → dist}/permissions/permission-schema.test.js.map +0 -0
  864. /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.d.ts +0 -0
  865. /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.d.ts.map +0 -0
  866. /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.js +0 -0
  867. /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.js.map +0 -0
  868. /package/{packages/core/dist → dist}/scripts/benchmark-integration.d.ts +0 -0
  869. /package/{packages/core/dist → dist}/scripts/benchmark-integration.d.ts.map +0 -0
  870. /package/{packages/core/dist → dist}/scripts/benchmark-integration.js +0 -0
  871. /package/{packages/core/dist → dist}/scripts/benchmark-integration.js.map +0 -0
  872. /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.d.ts +0 -0
  873. /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.d.ts.map +0 -0
  874. /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.js +0 -0
  875. /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.js.map +0 -0
  876. /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.d.ts +0 -0
  877. /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.d.ts.map +0 -0
  878. /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.js +0 -0
  879. /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.js.map +0 -0
  880. /package/{packages/core/dist → dist}/scripts/generate-all-spiders.d.ts +0 -0
  881. /package/{packages/core/dist → dist}/scripts/generate-all-spiders.d.ts.map +0 -0
  882. /package/{packages/core/dist → dist}/scripts/generate-all-spiders.js +0 -0
  883. /package/{packages/core/dist → dist}/scripts/generate-all-spiders.js.map +0 -0
  884. /package/{packages/core/dist → dist}/scripts/generate-report.d.ts +0 -0
  885. /package/{packages/core/dist → dist}/scripts/generate-report.d.ts.map +0 -0
  886. /package/{packages/core/dist → dist}/scripts/generate-report.js +0 -0
  887. /package/{packages/core/dist → dist}/scripts/generate-report.js.map +0 -0
  888. /package/{packages/core/dist → dist}/scripts/generate-report.test.d.ts +0 -0
  889. /package/{packages/core/dist → dist}/scripts/generate-report.test.d.ts.map +0 -0
  890. /package/{packages/core/dist → dist}/scripts/generate-report.test.js +0 -0
  891. /package/{packages/core/dist → dist}/scripts/generate-report.test.js.map +0 -0
  892. /package/{packages/core/dist → dist}/scripts/generate-spider-report.d.ts +0 -0
  893. /package/{packages/core/dist → dist}/scripts/generate-spider-report.d.ts.map +0 -0
  894. /package/{packages/core/dist → dist}/scripts/generate-spider-report.js +0 -0
  895. /package/{packages/core/dist → dist}/scripts/generate-spider-report.js.map +0 -0
  896. /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.d.ts +0 -0
  897. /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.d.ts.map +0 -0
  898. /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.js +0 -0
  899. /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.js.map +0 -0
  900. /package/{packages/core/dist → dist}/scripts/generate-spider.d.ts +0 -0
  901. /package/{packages/core/dist → dist}/scripts/generate-spider.d.ts.map +0 -0
  902. /package/{packages/core/dist → dist}/scripts/generate-spider.js +0 -0
  903. /package/{packages/core/dist → dist}/scripts/generate-spider.js.map +0 -0
  904. /package/{packages/core/dist → dist}/scripts/generate-spider.test.d.ts +0 -0
  905. /package/{packages/core/dist → dist}/scripts/generate-spider.test.d.ts.map +0 -0
  906. /package/{packages/core/dist → dist}/scripts/generate-spider.test.js +0 -0
  907. /package/{packages/core/dist → dist}/scripts/generate-spider.test.js.map +0 -0
  908. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.d.ts +0 -0
  909. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.d.ts.map +0 -0
  910. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.js +0 -0
  911. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.js.map +0 -0
  912. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.d.ts +0 -0
  913. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.d.ts.map +0 -0
  914. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.js +0 -0
  915. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.js.map +0 -0
  916. /package/{packages/core/dist → dist}/scripts/run-ci.test.d.ts +0 -0
  917. /package/{packages/core/dist → dist}/scripts/run-ci.test.d.ts.map +0 -0
  918. /package/{packages/core/dist → dist}/scripts/run-ci.test.js +0 -0
  919. /package/{packages/core/dist → dist}/scripts/run-ci.test.js.map +0 -0
  920. /package/{packages/core/dist → dist}/scripts/theme-detail.test.d.ts +0 -0
  921. /package/{packages/core/dist → dist}/scripts/theme-detail.test.d.ts.map +0 -0
  922. /package/{packages/core/dist → dist}/scripts/theme-detail.test.js +0 -0
  923. /package/{packages/core/dist → dist}/scripts/theme-detail.test.js.map +0 -0
  924. /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.d.ts +0 -0
  925. /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.d.ts.map +0 -0
  926. /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.js +0 -0
  927. /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.js.map +0 -0
  928. /package/{packages/core/dist → dist}/workflow/gate-handler.d.ts +0 -0
  929. /package/{packages/core/dist → dist}/workflow/gate-handler.d.ts.map +0 -0
  930. /package/{packages/core/dist → dist}/workflow/gate-handler.js +0 -0
  931. /package/{packages/core/dist → dist}/workflow/gate-handler.js.map +0 -0
  932. /package/{packages/core/dist → dist}/workflow/gate-handler.test.d.ts +0 -0
  933. /package/{packages/core/dist → dist}/workflow/gate-handler.test.d.ts.map +0 -0
  934. /package/{packages/core/dist → dist}/workflow/gate-handler.test.js +0 -0
  935. /package/{packages/core/dist → dist}/workflow/gate-handler.test.js.map +0 -0
  936. /package/{packages/core/dist → dist}/workflow/generic-sm-finish.d.ts +0 -0
  937. /package/{packages/core/dist → dist}/workflow/generic-sm-finish.d.ts.map +0 -0
  938. /package/{packages/core/dist → dist}/workflow/generic-sm-finish.js +0 -0
  939. /package/{packages/core/dist → dist}/workflow/generic-sm-finish.js.map +0 -0
  940. /package/{packages/core/dist → dist}/workflow/generic-sm-setup.d.ts +0 -0
  941. /package/{packages/core/dist → dist}/workflow/generic-sm-setup.d.ts.map +0 -0
  942. /package/{packages/core/dist → dist}/workflow/generic-sm-setup.js +0 -0
  943. /package/{packages/core/dist → dist}/workflow/generic-sm-setup.js.map +0 -0
  944. /package/{packages/core/dist → dist}/workflow/handoff.d.ts +0 -0
  945. /package/{packages/core/dist → dist}/workflow/handoff.d.ts.map +0 -0
  946. /package/{packages/core/dist → dist}/workflow/handoff.js +0 -0
  947. /package/{packages/core/dist → dist}/workflow/handoff.js.map +0 -0
  948. /package/{packages/core/dist → dist}/workflow/handoff.test.d.ts +0 -0
  949. /package/{packages/core/dist → dist}/workflow/handoff.test.d.ts.map +0 -0
  950. /package/{packages/core/dist → dist}/workflow/session-state.d.ts +0 -0
  951. /package/{packages/core/dist → dist}/workflow/session-state.d.ts.map +0 -0
  952. /package/{packages/core/dist → dist}/workflow/session-state.js +0 -0
  953. /package/{packages/core/dist → dist}/workflow/session-state.js.map +0 -0
  954. /package/{packages/core/dist → dist}/workflow/session-state.test.d.ts +0 -0
  955. /package/{packages/core/dist → dist}/workflow/session-state.test.d.ts.map +0 -0
  956. /package/{packages/core/dist → dist}/workflow/session-state.test.js +0 -0
  957. /package/{packages/core/dist → dist}/workflow/session-state.test.js.map +0 -0
  958. /package/{packages/core/dist → dist}/workflow/sm-subagents.test.d.ts +0 -0
  959. /package/{packages/core/dist → dist}/workflow/sm-subagents.test.d.ts.map +0 -0
  960. /package/{packages/core/dist → dist}/workflow/sm-subagents.test.js +0 -0
  961. /package/{packages/core/dist → dist}/workflow/sm-subagents.test.js.map +0 -0
  962. /package/{packages/core/dist → dist}/workflow/step-parser.d.ts +0 -0
  963. /package/{packages/core/dist → dist}/workflow/step-parser.d.ts.map +0 -0
  964. /package/{packages/core/dist → dist}/workflow/step-parser.js +0 -0
  965. /package/{packages/core/dist → dist}/workflow/step-parser.js.map +0 -0
  966. /package/{packages/core/dist → dist}/workflow/step-parser.test.d.ts +0 -0
  967. /package/{packages/core/dist → dist}/workflow/step-parser.test.d.ts.map +0 -0
  968. /package/{packages/core/dist → dist}/workflow/step-parser.test.js +0 -0
  969. /package/{packages/core/dist → dist}/workflow/step-parser.test.js.map +0 -0
  970. /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.d.ts +0 -0
  971. /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.d.ts.map +0 -0
  972. /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.js +0 -0
  973. /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.js.map +0 -0
  974. /package/{packages/core/dist → dist}/workflow/test-cache.d.ts +0 -0
  975. /package/{packages/core/dist → dist}/workflow/test-cache.d.ts.map +0 -0
  976. /package/{packages/core/dist → dist}/workflow/test-cache.js +0 -0
  977. /package/{packages/core/dist → dist}/workflow/test-cache.js.map +0 -0
  978. /package/{packages/core/dist → dist}/workflow/test-cache.test.d.ts +0 -0
  979. /package/{packages/core/dist → dist}/workflow/test-cache.test.d.ts.map +0 -0
  980. /package/{packages/core/dist → dist}/workflow/test-cache.test.js +0 -0
  981. /package/{packages/core/dist → dist}/workflow/test-cache.test.js.map +0 -0
  982. /package/{packages/core/dist → dist}/workflow/trimodal.d.ts +0 -0
  983. /package/{packages/core/dist → dist}/workflow/trimodal.d.ts.map +0 -0
  984. /package/{packages/core/dist → dist}/workflow/trimodal.js +0 -0
  985. /package/{packages/core/dist → dist}/workflow/trimodal.js.map +0 -0
  986. /package/{packages/core/dist → dist}/workflow/trimodal.test.d.ts +0 -0
  987. /package/{packages/core/dist → dist}/workflow/trimodal.test.d.ts.map +0 -0
  988. /package/{packages/core/dist → dist}/workflow/trimodal.test.js +0 -0
  989. /package/{packages/core/dist → dist}/workflow/trimodal.test.js.map +0 -0
  990. /package/{packages/core/dist → dist}/workflow/variable-resolver.d.ts +0 -0
  991. /package/{packages/core/dist → dist}/workflow/variable-resolver.d.ts.map +0 -0
  992. /package/{packages/core/dist → dist}/workflow/variable-resolver.js +0 -0
  993. /package/{packages/core/dist → dist}/workflow/variable-resolver.js.map +0 -0
  994. /package/{packages/core/dist → dist}/workflow/variable-resolver.test.d.ts +0 -0
  995. /package/{packages/core/dist → dist}/workflow/variable-resolver.test.d.ts.map +0 -0
  996. /package/{packages/core/dist → dist}/workflow/variable-resolver.test.js +0 -0
  997. /package/{packages/core/dist → dist}/workflow/variable-resolver.test.js.map +0 -0
  998. /package/{packages/core/dist → dist}/workflow/workflow-executor.d.ts +0 -0
  999. /package/{packages/core/dist → dist}/workflow/workflow-executor.d.ts.map +0 -0
  1000. /package/{packages/core/dist → dist}/workflow/workflow-executor.js +0 -0
  1001. /package/{packages/core/dist → dist}/workflow/workflow-executor.js.map +0 -0
  1002. /package/{packages/core/dist → dist}/workflow/workflow-executor.test.d.ts +0 -0
  1003. /package/{packages/core/dist → dist}/workflow/workflow-executor.test.d.ts.map +0 -0
  1004. /package/{packages/core/dist → dist}/workflow/workflow-executor.test.js +0 -0
  1005. /package/{packages/core/dist → dist}/workflow/workflow-executor.test.js.map +0 -0
  1006. /package/{packages/core/dist → dist}/workflow/workflow-loader.d.ts +0 -0
  1007. /package/{packages/core/dist → dist}/workflow/workflow-loader.d.ts.map +0 -0
  1008. /package/{packages/core/dist → dist}/workflow/workflow-loader.js +0 -0
  1009. /package/{packages/core/dist → dist}/workflow/workflow-loader.js.map +0 -0
  1010. /package/{packages/core/dist → dist}/workflow/workflow-loader.test.d.ts +0 -0
  1011. /package/{packages/core/dist → dist}/workflow/workflow-loader.test.d.ts.map +0 -0
  1012. /package/{packages/core/dist → dist}/workflow/workflow-loader.test.js +0 -0
  1013. /package/{packages/core/dist → dist}/workflow/workflow-loader.test.js.map +0 -0
  1014. /package/{packages/core/dist → dist}/workflow/workflow-migration.test.d.ts +0 -0
  1015. /package/{packages/core/dist → dist}/workflow/workflow-migration.test.d.ts.map +0 -0
  1016. /package/{packages/core/dist → dist}/workflow/workflow-migration.test.js +0 -0
  1017. /package/{packages/core/dist → dist}/workflow/workflow-migration.test.js.map +0 -0
  1018. /package/{packages/core/dist → dist}/workflow/workflow-permissions.d.ts +0 -0
  1019. /package/{packages/core/dist → dist}/workflow/workflow-permissions.d.ts.map +0 -0
  1020. /package/{packages/core/dist → dist}/workflow/workflow-permissions.js +0 -0
  1021. /package/{packages/core/dist → dist}/workflow/workflow-permissions.js.map +0 -0
  1022. /package/{packages/core/dist → dist}/workflow/workflow-permissions.test.d.ts +0 -0
  1023. /package/{packages/core/dist → dist}/workflow/workflow-permissions.test.d.ts.map +0 -0
  1024. /package/{packages/core/dist → dist}/workflow/workflow-permissions.test.js +0 -0
  1025. /package/{packages/core/dist → dist}/workflow/workflow-permissions.test.js.map +0 -0
  1026. /package/{packages/core/dist → dist}/workflow/workflow-router.d.ts +0 -0
  1027. /package/{packages/core/dist → dist}/workflow/workflow-router.d.ts.map +0 -0
  1028. /package/{packages/core/dist → dist}/workflow/workflow-router.js +0 -0
  1029. /package/{packages/core/dist → dist}/workflow/workflow-router.js.map +0 -0
  1030. /package/{packages/core/dist → dist}/workflow/workflow-router.test.d.ts +0 -0
  1031. /package/{packages/core/dist → dist}/workflow/workflow-router.test.d.ts.map +0 -0
  1032. /package/{packages/core/dist → dist}/workflow/workflow-router.test.js +0 -0
  1033. /package/{packages/core/dist → dist}/workflow/workflow-router.test.js.map +0 -0
  1034. /package/{packages/core/dist → dist}/workflow/workflow-schema.d.ts +0 -0
  1035. /package/{packages/core/dist → dist}/workflow/workflow-schema.d.ts.map +0 -0
  1036. /package/{packages/core/dist → dist}/workflow/workflow-schema.js +0 -0
  1037. /package/{packages/core/dist → dist}/workflow/workflow-schema.js.map +0 -0
  1038. /package/{packages/core/dist → dist}/workflow/workflow-schema.test.d.ts +0 -0
  1039. /package/{packages/core/dist → dist}/workflow/workflow-schema.test.d.ts.map +0 -0
  1040. /package/{packages/core/dist → dist}/workflow/workflow-schema.test.js +0 -0
  1041. /package/{packages/core/dist → dist}/workflow/workflow-schema.test.js.map +0 -0
  1042. /package/{packages/core/dist → dist}/workflow/workflow-stepped-schema.test.d.ts +0 -0
  1043. /package/{packages/core/dist → dist}/workflow/workflow-stepped-schema.test.d.ts.map +0 -0
@@ -1,260 +0,0 @@
1
- #!/bin/bash
2
- # Jira vs YAML Reconciliation Report
3
- # Usage: .pennyfarthing/scripts/jira/jira-reconcile.sh [--fix]
4
- #
5
- # Compares sprint YAML against Jira to find:
6
- # - Status mismatches
7
- # - Missing Jira keys
8
- # - Orphan issues (in Jira but not YAML)
9
- # - Sprint membership discrepancies
10
- #
11
- # Options:
12
- # --fix Apply recommended fixes automatically (where safe)
13
-
14
- set -euo pipefail
15
-
16
- # Find project root
17
- source "$(dirname "${BASH_SOURCE[0]}")/../lib/find-root.sh"
18
-
19
- SPRINT_FILE="$PROJECT_ROOT/sprint/current-sprint.yaml"
20
- FIX_MODE="${1:-}"
21
-
22
- # Colors for output
23
- RED='\033[0;31m'
24
- GREEN='\033[0;32m'
25
- YELLOW='\033[1;33m'
26
- NC='\033[0m' # No Color
27
-
28
- # Check dependencies
29
- if ! command -v yq &> /dev/null; then
30
- echo "Error: yq is required but not installed"
31
- echo "Install with: brew install yq"
32
- exit 1
33
- fi
34
-
35
- if ! command -v jira &> /dev/null; then
36
- echo "Error: jira CLI is required but not installed"
37
- echo "Install with: brew install ankitpokhrel/jira/jira"
38
- exit 1
39
- fi
40
-
41
- if [[ ! -f "$SPRINT_FILE" ]]; then
42
- echo "Error: Sprint file not found at $SPRINT_FILE"
43
- exit 1
44
- fi
45
-
46
- # Get sprint info
47
- SPRINT_NAME=$(yq eval '.sprint.name' "$SPRINT_FILE")
48
- SPRINT_ID=$(yq eval '.sprint.jira_sprint_id' "$SPRINT_FILE")
49
-
50
- echo "# Jira vs YAML Reconciliation Report"
51
- echo ""
52
- echo "**Sprint:** $SPRINT_NAME (Jira Sprint ID: $SPRINT_ID)"
53
- echo "**Generated:** $(date '+%Y-%m-%d %H:%M')"
54
- echo ""
55
-
56
- # Track issues
57
- STATUS_MISMATCHES=()
58
- MISSING_JIRA=()
59
- ORPHAN_ISSUES=()
60
- NOT_IN_SPRINT=()
61
-
62
- echo "## Checking YAML Stories Against Jira..."
63
- echo ""
64
-
65
- # Extract all stories from YAML and check against Jira
66
- while IFS=$'\t' read -r yaml_id jira_key yaml_status title; do
67
- # Skip if no jira key
68
- if [[ "$jira_key" == "null" ]] || [[ -z "$jira_key" ]]; then
69
- MISSING_JIRA+=("$yaml_id|$title|$yaml_status")
70
- continue
71
- fi
72
-
73
- # Get Jira status - use sed to remove the key prefix
74
- jira_status=$(jira issue list --jql "project=MSSCI AND key=$jira_key" --plain --columns key,status --no-headers 2>/dev/null | sed "s/^$jira_key[[:space:]]*//" | xargs || echo "NOT_FOUND")
75
-
76
- if [[ "$jira_status" == "NOT_FOUND" ]] || [[ -z "$jira_status" ]]; then
77
- echo -e "${RED}[!]${NC} $jira_key not found in Jira"
78
- continue
79
- fi
80
-
81
- # Normalize statuses for comparison
82
- jira_norm=$(echo "$jira_status" | tr '[:upper:]' '[:lower:]' | tr ' ' '_')
83
-
84
- # Check for mismatches
85
- mismatch=false
86
- case "$yaml_status" in
87
- done)
88
- [[ "$jira_norm" != "done" ]] && mismatch=true
89
- ;;
90
- ready|backlog)
91
- [[ "$jira_norm" != "to_do" ]] && mismatch=true
92
- ;;
93
- in_progress)
94
- [[ "$jira_norm" != "in_progress" ]] && mismatch=true
95
- ;;
96
- esac
97
-
98
- if [[ "$mismatch" == "true" ]]; then
99
- STATUS_MISMATCHES+=("$jira_key|$yaml_status|$jira_status")
100
- fi
101
- done < <(yq -r '.epics[].stories[]? | [.id, .jira, .status, .title] | @tsv' "$SPRINT_FILE" 2>/dev/null)
102
-
103
- echo ""
104
- echo "## Checking Jira Sprint Against YAML..."
105
- echo ""
106
-
107
- # Get all issues in the Jira sprint and check if they're in YAML
108
- # Skip canceled issues - they're not relevant
109
- while read -r jira_key; do
110
- # Check if in YAML (by id or jira field)
111
- in_yaml=$(yq -r ".epics[].stories[]? | select(.id == \"$jira_key\" or .jira == \"$jira_key\") | .id" "$SPRINT_FILE" 2>/dev/null | head -1)
112
-
113
- if [[ -z "$in_yaml" ]]; then
114
- # Get more info about the orphan
115
- status=$(jira issue list --jql "project=MSSCI AND key=$jira_key" --plain --columns key,status --no-headers 2>/dev/null | sed "s/^$jira_key[[:space:]]*//" | xargs || echo "Unknown")
116
-
117
- # Skip canceled issues
118
- if [[ "$status" == "Canceled" ]]; then
119
- continue
120
- fi
121
-
122
- summary=$(jira issue list --jql "project=MSSCI AND key=$jira_key" --plain --columns key,summary --no-headers 2>/dev/null | sed "s/^$jira_key[[:space:]]*//" | xargs || echo "Unknown")
123
- ORPHAN_ISSUES+=("$jira_key|$status|$summary")
124
- fi
125
- done < <(jira issue list --jql "project=MSSCI AND labels=pennyfarthing AND sprint=$SPRINT_ID AND status != Canceled" --plain --columns key --no-headers 2>/dev/null)
126
-
127
- echo ""
128
- echo "## Checking for Issues Not in Sprint..."
129
- echo ""
130
-
131
- # Get done issues not in sprint
132
- while read -r jira_key; do
133
- # Check if it should be in current sprint (exists in YAML)
134
- in_yaml=$(yq -r ".epics[].stories[]? | select(.id == \"$jira_key\" or .jira == \"$jira_key\") | .id" "$SPRINT_FILE" 2>/dev/null | head -1)
135
-
136
- if [[ -n "$in_yaml" ]]; then
137
- summary=$(jira issue list --jql "project=MSSCI AND key=$jira_key" --plain --columns summary --no-headers 2>/dev/null | xargs || echo "Unknown")
138
- NOT_IN_SPRINT+=("$jira_key|$summary")
139
- fi
140
- done < <(jira issue list --jql "project=MSSCI AND labels=pennyfarthing AND sprint is EMPTY AND status != Canceled" --plain --columns key --no-headers 2>/dev/null)
141
-
142
- # Output Report
143
- echo ""
144
- echo "---"
145
- echo ""
146
- echo "# Summary"
147
- echo ""
148
-
149
- # Status Mismatches
150
- echo "## Status Mismatches (${#STATUS_MISMATCHES[@]})"
151
- echo ""
152
- if [[ ${#STATUS_MISMATCHES[@]} -eq 0 ]]; then
153
- echo -e "${GREEN}No status mismatches found.${NC}"
154
- else
155
- echo "| Jira Key | YAML Status | Jira Status | Action |"
156
- echo "|----------|-------------|-------------|--------|"
157
- for item in "${STATUS_MISMATCHES[@]}"; do
158
- IFS='|' read -r key yaml jira <<< "$item"
159
- echo "| $key | $yaml | $jira | Update YAML or Jira |"
160
- done
161
- fi
162
- echo ""
163
-
164
- # Missing Jira Keys
165
- echo "## YAML Stories Missing Jira Key (${#MISSING_JIRA[@]})"
166
- echo ""
167
- if [[ ${#MISSING_JIRA[@]} -eq 0 ]]; then
168
- echo -e "${GREEN}All YAML stories have Jira keys.${NC}"
169
- else
170
- echo "| YAML ID | Title | Status | Action |"
171
- echo "|---------|-------|--------|--------|"
172
- for item in "${MISSING_JIRA[@]}"; do
173
- IFS='|' read -r id title status <<< "$item"
174
- echo "| $id | ${title:0:40} | $status | Create Jira issue |"
175
- done
176
- fi
177
- echo ""
178
-
179
- # Orphan Issues
180
- echo "## Jira Issues Not in YAML (${#ORPHAN_ISSUES[@]})"
181
- echo ""
182
- if [[ ${#ORPHAN_ISSUES[@]} -eq 0 ]]; then
183
- echo -e "${GREEN}All sprint issues are tracked in YAML.${NC}"
184
- else
185
- echo "| Jira Key | Status | Summary | Action |"
186
- echo "|----------|--------|---------|--------|"
187
- for item in "${ORPHAN_ISSUES[@]}"; do
188
- IFS='|' read -r key status summary <<< "$item"
189
- if [[ "$status" == "Done" ]]; then
190
- echo "| $key | $status | ${summary:0:40} | Info: Completed (not in current YAML) |"
191
- else
192
- echo "| $key | $status | ${summary:0:40} | Add to YAML or remove from sprint |"
193
- fi
194
- done
195
- echo ""
196
- echo "*Note: Done issues not in YAML are historical - they count toward sprint velocity but aren't actively tracked.*"
197
- fi
198
- echo ""
199
-
200
- # Not in Sprint
201
- echo "## YAML Stories Not in Jira Sprint (${#NOT_IN_SPRINT[@]})"
202
- echo ""
203
- if [[ ${#NOT_IN_SPRINT[@]} -eq 0 ]]; then
204
- echo -e "${GREEN}All YAML stories are in Jira sprint.${NC}"
205
- else
206
- echo "| Jira Key | Summary | Action |"
207
- echo "|----------|---------|--------|"
208
- for item in "${NOT_IN_SPRINT[@]}"; do
209
- IFS='|' read -r key summary <<< "$item"
210
- echo "| $key | ${summary:0:50} | Add to sprint $SPRINT_ID |"
211
- done
212
- fi
213
- echo ""
214
-
215
- # Epic check
216
- echo "## Epic Sync Check"
217
- echo ""
218
- echo "| YAML Epic ID | Jira Field | Status |"
219
- echo "|--------------|------------|--------|"
220
- while IFS=$'\t' read -r epic_id jira_key title; do
221
- if [[ "$jira_key" == "null" ]] || [[ -z "$jira_key" ]]; then
222
- echo -e "| $epic_id | ${RED}MISSING${NC} | $title |"
223
- else
224
- echo "| $epic_id | $jira_key | $title |"
225
- fi
226
- done < <(yq -r '.epics[] | [.id, .jira, .title] | @tsv' "$SPRINT_FILE" 2>/dev/null)
227
- echo ""
228
-
229
- # Total counts
230
- total_issues=$((${#STATUS_MISMATCHES[@]} + ${#MISSING_JIRA[@]} + ${#ORPHAN_ISSUES[@]} + ${#NOT_IN_SPRINT[@]}))
231
-
232
- echo "---"
233
- echo ""
234
- if [[ $total_issues -eq 0 ]]; then
235
- echo -e "${GREEN}Sync Status: CLEAN${NC} - No discrepancies found!"
236
- else
237
- echo -e "${YELLOW}Sync Status: $total_issues issue(s) found${NC}"
238
- echo ""
239
- echo "Run with --fix to apply automatic fixes where possible."
240
- fi
241
-
242
- # Fix mode
243
- if [[ "$FIX_MODE" == "--fix" ]]; then
244
- echo ""
245
- echo "## Applying Fixes..."
246
- echo ""
247
-
248
- # Add stories to sprint
249
- for item in "${NOT_IN_SPRINT[@]}"; do
250
- IFS='|' read -r key summary <<< "$item"
251
- echo "Adding $key to sprint $SPRINT_ID..."
252
- jira sprint add "$SPRINT_ID" "$key" 2>/dev/null && echo " Done" || echo " Failed"
253
- done
254
-
255
- echo ""
256
- echo "Fix mode completed. Manual review still needed for:"
257
- echo "- Status mismatches (requires decision on which source is correct)"
258
- echo "- Missing Jira keys (requires creating new issues)"
259
- echo "- Orphan issues (requires adding to YAML or removing from sprint)"
260
- fi
@@ -1,18 +0,0 @@
1
- #!/usr/bin/env zsh
2
- # Sync a single story between sprint YAML and Jira
3
- # Usage: jira-sync-story.sh <story_key> [--transition] [--points] [--comment "message"]
4
- #
5
- # Thin wrapper that delegates to Python CLI:
6
- # python -m pennyfarthing_scripts.jira create story <story_key> [options]
7
- #
8
- # Note: The subcommand is 'create story' but it handles sync, not creation.
9
-
10
- set -e
11
-
12
- # Source common functions for Python discovery
13
- SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
14
- PARENT_DIR="$(dirname "$SCRIPT_DIR")"
15
- source "${PARENT_DIR}/lib/common.sh"
16
-
17
- # Delegate to Python CLI
18
- run_python_module jira create story "$@"
@@ -1,16 +0,0 @@
1
- #!/usr/bin/env zsh
2
- # Sync an epic and its stories to Jira
3
- # Usage: jira-sync.sh <epic_number> [--dry-run] [--transition] [--points]
4
- #
5
- # Thin wrapper that delegates to Python CLI:
6
- # python -m pennyfarthing_scripts.jira sync <epic_number> [options]
7
-
8
- set -e
9
-
10
- # Source common functions for Python discovery
11
- SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
12
- PARENT_DIR="$(dirname "$SCRIPT_DIR")"
13
- source "${PARENT_DIR}/lib/common.sh"
14
-
15
- # Delegate to Python CLI
16
- run_python_module jira sync "$@"
@@ -1,16 +0,0 @@
1
- #!/usr/bin/env zsh
2
- # Sync an epic and its stories to Jira
3
- # Usage: sync-epic-jira.sh <epic-id> [--dry-run] [--transition] [--points] [--all]
4
- #
5
- # Thin wrapper that delegates to Python CLI:
6
- # python -m pennyfarthing_scripts.jira sync <epic-id> [options]
7
-
8
- set -e
9
-
10
- # Source common functions for Python discovery
11
- SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
12
- PARENT_DIR="$(dirname "$SCRIPT_DIR")"
13
- source "${PARENT_DIR}/lib/common.sh"
14
-
15
- # Delegate to Python CLI
16
- run_python_module jira sync "$@"
@@ -1,16 +0,0 @@
1
- #!/usr/bin/env zsh
2
- # Sync Pennyfarthing Epic to Jira MSSCI Project using jira
3
- # Usage: ./scripts/sync-epic-to-jira.sh <epic_number> [--dry-run] [--with-comments]
4
- #
5
- # Prerequisites:
6
- # - jira installed: brew install ankitpokhrel/jira/jira
7
- # - jira configured: jira init
8
- # - JIRA_API_TOKEN environment variable set
9
- #
10
- # Options:
11
- # --dry-run Show what would be done without making changes
12
- # --with-comments (Deprecated - kept for compatibility)
13
-
14
- # Delegate to jira-sync.sh which implements the actual sync logic
15
- SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
16
- exec "${SCRIPT_DIR}/jira-sync.sh" "$@"
@@ -1,29 +0,0 @@
1
- # Library Scripts
2
-
3
- Shared bash libraries sourced by other scripts.
4
-
5
- ## Libraries
6
-
7
- | Script | Purpose |
8
- |--------|---------|
9
- | `common.sh` | Common utilities (colors, logging basics) |
10
- | `logging.sh` | Structured logging functions |
11
- | `retry.sh` | Retry logic with exponential backoff |
12
- | `checkpoint.sh` | Checkpointing for long-running operations |
13
- | `file-lock.sh` | File locking utilities |
14
- | `background-tasks.sh` | Background task management |
15
- | `find-root.sh` | Project root finder |
16
-
17
- ## Usage
18
-
19
- These are sourced by other scripts, not run directly:
20
-
21
- ```bash
22
- source "$SCRIPTS_DIR/lib/common.sh"
23
- source "$SCRIPTS_DIR/lib/logging.sh"
24
- ```
25
-
26
- ## Ownership
27
-
28
- - **Primary users:** All scripts
29
- - **Maintained by:** Core Pennyfarthing team
@@ -1,177 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Background task tracking utilities for session files
3
- #
4
- # Usage:
5
- # source $CLAUDE_PROJECT_DIR/scripts/lib/background-tasks.sh
6
- #
7
- # Functions:
8
- # bg_task_add <session_file> <task_id> <subagent_type> <description>
9
- # bg_task_update <session_file> <task_id> <status>
10
- # bg_task_cleanup <session_file>
11
- # bg_task_list <session_file>
12
- # bg_task_check <session_file>
13
- #
14
- # Example:
15
- # # After spawning background task
16
- # bg_task_add "$SESSION_FILE" "abc123" "testing-runner" "Background test run"
17
- #
18
- # # After TaskOutput returns
19
- # bg_task_update "$SESSION_FILE" "abc123" "completed"
20
- # bg_task_cleanup "$SESSION_FILE"
21
-
22
- set -euo pipefail
23
-
24
- # Helper: count pattern matches in file (returns 0 if no matches)
25
- # grep -c outputs "0" AND exits 1 when no matches, so we capture and fallback separately
26
- _count_matches() {
27
- local count
28
- count=$(grep -c "$1" "$2" 2>/dev/null) || count=0
29
- echo "$count"
30
- }
31
-
32
- # Add a background task to session file
33
- # Creates the Background Tasks section if it doesn't exist
34
- bg_task_add() {
35
- local session_file="$1"
36
- local task_id="$2"
37
- local subagent_type="$3"
38
- local description="${4:-}"
39
- local timestamp
40
- timestamp=$(date +"%H:%M")
41
-
42
- if [[ ! -f "$session_file" ]]; then
43
- echo "ERROR: Session file not found: $session_file" >&2
44
- return 1
45
- fi
46
-
47
- # Check if Background Tasks section exists
48
- if ! grep -q "^## Background Tasks" "$session_file" 2>/dev/null; then
49
- # Add section before Workflow Tracking if present, otherwise at end
50
- if grep -q "^## Workflow Tracking" "$session_file"; then
51
- # Insert before Workflow Tracking using awk
52
- awk '/^## Workflow Tracking/ {
53
- print "## Background Tasks\n"
54
- print "| Task ID | Type | Started | Status | Description |"
55
- print "|---------|------|---------|--------|-------------|"
56
- print ""
57
- } {print}' "$session_file" > "${session_file}.tmp" && mv "${session_file}.tmp" "$session_file"
58
- else
59
- # Append to end
60
- cat >> "$session_file" << EOF
61
-
62
- ## Background Tasks
63
-
64
- | Task ID | Type | Started | Status | Description |
65
- |---------|------|---------|--------|-------------|
66
- EOF
67
- fi
68
- fi
69
-
70
- # Add task row after the table header
71
- awk -v tid="$task_id" -v stype="$subagent_type" -v ts="$timestamp" -v desc="$description" '
72
- /^\|[-]+\|/ && in_section {
73
- print
74
- print "| " tid " | " stype " | " ts " | running | " desc " |"
75
- next
76
- }
77
- /^## Background Tasks/ { in_section=1 }
78
- /^## / && !/^## Background Tasks/ { in_section=0 }
79
- { print }
80
- ' "$session_file" > "${session_file}.tmp" && mv "${session_file}.tmp" "$session_file"
81
-
82
- echo "Added background task: $task_id ($subagent_type)"
83
- }
84
-
85
- # Update background task status
86
- # Status: running, completed, error
87
- bg_task_update() {
88
- local session_file="$1"
89
- local task_id="$2"
90
- local new_status="$3"
91
-
92
- if [[ ! -f "$session_file" ]]; then
93
- echo "ERROR: Session file not found: $session_file" >&2
94
- return 1
95
- fi
96
-
97
- if ! grep -q "| $task_id |" "$session_file" 2>/dev/null; then
98
- echo "WARNING: Task $task_id not found in session file" >&2
99
- return 0
100
- fi
101
-
102
- # Update the status column for this task
103
- sed -i '' "s/| $task_id |\\([^|]*\\)|\\([^|]*\\)| running |/| $task_id |\\1|\\2| $new_status |/" "$session_file"
104
- echo "Updated task $task_id: $new_status"
105
- }
106
-
107
- # Remove completed and error tasks from session file
108
- bg_task_cleanup() {
109
- local session_file="$1"
110
-
111
- if [[ ! -f "$session_file" ]]; then
112
- echo "ERROR: Session file not found: $session_file" >&2
113
- return 1
114
- fi
115
-
116
- # Count tasks to remove
117
- local completed_count
118
- completed_count=$(_count_matches "| completed |" "$session_file")
119
- local error_count
120
- error_count=$(_count_matches "| error |" "$session_file")
121
-
122
- if [[ "$completed_count" -gt 0 ]] || [[ "$error_count" -gt 0 ]]; then
123
- sed -i '' '/| completed |/d' "$session_file"
124
- sed -i '' '/| error |/d' "$session_file"
125
- echo "Cleaned up $completed_count completed, $error_count errored tasks"
126
- fi
127
- }
128
-
129
- # List active (running) background tasks
130
- bg_task_list() {
131
- local session_file="$1"
132
-
133
- if [[ ! -f "$session_file" ]]; then
134
- echo "No session file"
135
- return 0
136
- fi
137
-
138
- local running_tasks
139
- running_tasks=$(grep "| running |" "$session_file" 2>/dev/null || true)
140
-
141
- if [[ -n "$running_tasks" ]]; then
142
- echo "$running_tasks"
143
- else
144
- echo "No active background tasks"
145
- fi
146
- }
147
-
148
- # Check for active background tasks (returns 0 if tasks exist, 1 if none)
149
- # Useful for conditional logic in scripts
150
- bg_task_check() {
151
- local session_file="$1"
152
-
153
- if [[ ! -f "$session_file" ]]; then
154
- return 1
155
- fi
156
-
157
- grep -q "| running |" "$session_file" 2>/dev/null
158
- }
159
-
160
- # Print summary of all background tasks
161
- bg_task_summary() {
162
- local session_file="$1"
163
-
164
- if [[ ! -f "$session_file" ]]; then
165
- echo "No session file"
166
- return 0
167
- fi
168
-
169
- local running
170
- running=$(_count_matches "| running |" "$session_file")
171
- local completed
172
- completed=$(_count_matches "| completed |" "$session_file")
173
- local errored
174
- errored=$(_count_matches "| error |" "$session_file")
175
-
176
- echo "Background tasks: $running running, $completed completed, $errored errored"
177
- }
@@ -1,136 +0,0 @@
1
- #!/usr/bin/env zsh
2
- # Session checkpointing utilities
3
- # Dev: Fanny Price - "I was quiet, but I was not blind."
4
-
5
- # Source file locking utilities
6
- SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
7
- # shellcheck source=file-lock.sh
8
- source "${SCRIPT_DIR}/file-lock.sh" 2>/dev/null || true
9
-
10
- # Checkpoint file location (evaluated dynamically)
11
- _get_checkpoint_file() {
12
- echo "${PROJECT_ROOT:-.}/.session/checkpoints.log"
13
- }
14
-
15
- # checkpoint_save LABEL DATA
16
- # Save a checkpoint with timestamp
17
- #
18
- # Arguments:
19
- # LABEL - Identifier for this checkpoint
20
- # DATA - Data to save (string)
21
- #
22
- # Format: ISO_TIMESTAMP|LABEL|DATA
23
- #
24
- # Example:
25
- # checkpoint_save "story_phase" "dev"
26
- # checkpoint_save "last_file" "src/main.go:42"
27
- #
28
- checkpoint_save() {
29
- local label="$1"
30
- local data="$2"
31
- local timestamp
32
- local checkpoint_file
33
- timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
34
- checkpoint_file=$(_get_checkpoint_file)
35
-
36
- # Ensure directory exists
37
- mkdir -p "$(dirname "$checkpoint_file")"
38
-
39
- # Acquire exclusive lock, append checkpoint, release lock
40
- if lock_acquire "$checkpoint_file" "exclusive" 5 2>/dev/null; then
41
- echo "${timestamp}|${label}|${data}" >> "$checkpoint_file"
42
- lock_release "$checkpoint_file"
43
- else
44
- # Fallback: append without lock (better than failing)
45
- echo "${timestamp}|${label}|${data}" >> "$checkpoint_file"
46
- fi
47
- }
48
-
49
- # checkpoint_restore LABEL
50
- # Restore the most recent checkpoint with given label
51
- #
52
- # Arguments:
53
- # LABEL - Identifier to look up
54
- #
55
- # Returns:
56
- # Outputs the data portion of the most recent matching checkpoint
57
- # Empty if no match found
58
- #
59
- # Example:
60
- # phase=$(checkpoint_restore "story_phase")
61
- #
62
- checkpoint_restore() {
63
- local label="$1"
64
- local checkpoint_file
65
- checkpoint_file=$(_get_checkpoint_file)
66
-
67
- if [[ ! -f "$checkpoint_file" ]]; then
68
- return 0
69
- fi
70
-
71
- # Find entries with matching label, take the last one, extract data field
72
- # Use || true to handle case where grep finds no matches
73
- grep "|${label}|" "$checkpoint_file" 2>/dev/null | tail -1 | cut -d'|' -f3- || true
74
- }
75
-
76
- # checkpoint_list
77
- # List recent checkpoints (last 20)
78
- #
79
- # Example:
80
- # checkpoint_list
81
- #
82
- checkpoint_list() {
83
- local checkpoint_file
84
- checkpoint_file=$(_get_checkpoint_file)
85
-
86
- if [[ -f "$checkpoint_file" ]]; then
87
- tail -20 "$checkpoint_file"
88
- fi
89
- }
90
-
91
- # checkpoint_clear
92
- # Remove all checkpoints
93
- #
94
- # Example:
95
- # checkpoint_clear
96
- #
97
- checkpoint_clear() {
98
- local checkpoint_file
99
- checkpoint_file=$(_get_checkpoint_file)
100
- rm -f "$checkpoint_file"
101
- }
102
-
103
- # checkpoint_rotate MAX_LINES
104
- # Rotate checkpoint file to prevent unbounded growth
105
- #
106
- # Arguments:
107
- # MAX_LINES - Maximum lines to keep (default: 1000)
108
- #
109
- # Example:
110
- # checkpoint_rotate 500
111
- #
112
- checkpoint_rotate() {
113
- local max_lines=${1:-1000}
114
- local checkpoint_file
115
- checkpoint_file=$(_get_checkpoint_file)
116
-
117
- if [[ ! -f "$checkpoint_file" ]]; then
118
- return 0
119
- fi
120
-
121
- # Acquire exclusive lock for rotation
122
- if lock_acquire "$checkpoint_file" "exclusive" 5 2>/dev/null; then
123
- local current_lines
124
- current_lines=$(wc -l < "$checkpoint_file")
125
-
126
- if ((current_lines > max_lines)); then
127
- local temp_file
128
- temp_file=$(mktemp)
129
- tail -n "$max_lines" "$checkpoint_file" > "$temp_file"
130
- mv "$temp_file" "$checkpoint_file"
131
- fi
132
- lock_release "$checkpoint_file"
133
- fi
134
- }
135
-
136
- # Functions available when sourced