@pennyfarthing/core 11.0.0-alpha.0 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/README.md +4 -4
  2. package/package.json +1 -1
  3. package/packages/core/dist/cli/cyclist-migration.test.js +2 -1
  4. package/packages/core/dist/cli/cyclist-migration.test.js.map +1 -1
  5. package/packages/core/dist/cli/ocean-profiles.test.js +5 -4
  6. package/packages/core/dist/cli/ocean-profiles.test.js.map +1 -1
  7. package/packages/core/dist/cli/theme-maker.test.js +5 -4
  8. package/packages/core/dist/cli/theme-maker.test.js.map +1 -1
  9. package/packages/core/dist/public/js/react/react.js +30 -30
  10. package/packages/core/dist/scripts/generate-report.test.js +2 -2
  11. package/packages/core/dist/scripts/generate-spider-report.test.js +2 -2
  12. package/packages/core/dist/scripts/generate-spider.test.js +2 -1
  13. package/packages/core/dist/scripts/generate-spider.test.js.map +1 -1
  14. package/packages/core/dist/server/api/file-browser.d.ts.map +1 -1
  15. package/packages/core/dist/server/api/file-browser.js +19 -1
  16. package/packages/core/dist/server/api/file-browser.js.map +1 -1
  17. package/packages/core/dist/server/api/git-fetch-cooldown.test.d.ts +10 -0
  18. package/packages/core/dist/server/api/git-fetch-cooldown.test.d.ts.map +1 -0
  19. package/packages/core/dist/server/api/git-fetch-cooldown.test.js +30 -0
  20. package/packages/core/dist/server/api/git-fetch-cooldown.test.js.map +1 -0
  21. package/packages/core/dist/server/api/git.d.ts +8 -0
  22. package/packages/core/dist/server/api/git.d.ts.map +1 -1
  23. package/packages/core/dist/server/api/git.js +37 -10
  24. package/packages/core/dist/server/api/git.js.map +1 -1
  25. package/packages/core/dist/server/api/index.d.ts +1 -1
  26. package/packages/core/dist/server/api/index.d.ts.map +1 -1
  27. package/packages/core/dist/server/api/index.js +1 -1
  28. package/packages/core/dist/server/api/index.js.map +1 -1
  29. package/packages/core/dist/server/api/settings.d.ts.map +1 -1
  30. package/packages/core/dist/server/api/settings.js +10 -1
  31. package/packages/core/dist/server/api/settings.js.map +1 -1
  32. package/packages/core/dist/server/otlp-receiver.d.ts +35 -13
  33. package/packages/core/dist/server/otlp-receiver.d.ts.map +1 -1
  34. package/packages/core/dist/server/otlp-receiver.js +76 -16
  35. package/packages/core/dist/server/otlp-receiver.js.map +1 -1
  36. package/packages/core/dist/server/paths.d.ts.map +1 -1
  37. package/packages/core/dist/server/paths.js +11 -1
  38. package/packages/core/dist/server/paths.js.map +1 -1
  39. package/packages/core/dist/server/server.d.ts +3 -1
  40. package/packages/core/dist/server/server.d.ts.map +1 -1
  41. package/packages/core/dist/server/server.js +6 -4
  42. package/packages/core/dist/server/server.js.map +1 -1
  43. package/packages/core/dist/server/server.test.js.map +1 -1
  44. package/packages/core/dist/workflow/variable-resolver.test.js +1 -1
  45. package/packages/core/dist/workflow/variable-resolver.test.js.map +1 -1
  46. package/packages/core/dist/workflow/workflow-migration.test.js +4 -3
  47. package/packages/core/dist/workflow/workflow-migration.test.js.map +1 -1
  48. package/pennyfarthing-dist/agents/architect.md +0 -1
  49. package/pennyfarthing-dist/agents/dev.md +47 -1
  50. package/pennyfarthing-dist/agents/orchestrator.md +0 -1
  51. package/pennyfarthing-dist/agents/ux-designer.md +0 -1
  52. package/pennyfarthing-dist/guides/agent-behavior.md +1 -1
  53. package/pennyfarthing-dist/guides/agent-tag-taxonomy.md +0 -1
  54. package/pennyfarthing-dist/personas/themes/hogans-heroes.yaml +1 -1
  55. package/pennyfarthing-dist/personas/themes/stephen-king.yaml +1 -1
  56. package/pennyfarthing-dist/scripts/hooks/__pycache__/question_reflector_check.cpython-314.pyc +0 -0
  57. package/pennyfarthing-dist/skills/pf-systematic-debugging/SKILL.md +0 -1
  58. package/pennyfarthing-dist/skills/skill-registry.yaml +3 -21
  59. package/pennyfarthing_scripts/__pycache__/__init__.cpython-311.pyc +0 -0
  60. package/pennyfarthing_scripts/__pycache__/__init__.cpython-314.pyc +0 -0
  61. package/pennyfarthing_scripts/__pycache__/cli.cpython-314.pyc +0 -0
  62. package/pennyfarthing_scripts/__pycache__/config.cpython-314.pyc +0 -0
  63. package/pennyfarthing_scripts/__pycache__/hooks.cpython-314.pyc +0 -0
  64. package/pennyfarthing_scripts/__pycache__/jira.cpython-314.pyc +0 -0
  65. package/pennyfarthing_scripts/__pycache__/jira_bidirectional_sync.cpython-314.pyc +0 -0
  66. package/pennyfarthing_scripts/__pycache__/jira_epic_creation.cpython-314.pyc +0 -0
  67. package/pennyfarthing_scripts/__pycache__/jira_sync.cpython-314.pyc +0 -0
  68. package/pennyfarthing_scripts/__pycache__/jira_sync_story.cpython-314.pyc +0 -0
  69. package/pennyfarthing_scripts/__pycache__/output.cpython-314.pyc +0 -0
  70. package/pennyfarthing_scripts/__pycache__/patch_mode.cpython-314.pyc +0 -0
  71. package/pennyfarthing_scripts/__pycache__/pretooluse_hook.cpython-314.pyc +0 -0
  72. package/pennyfarthing_scripts/__pycache__/schema_validation_hook.cpython-314.pyc +0 -0
  73. package/pennyfarthing_scripts/__pycache__/session_start_hook.cpython-314.pyc +0 -0
  74. package/pennyfarthing_scripts/__pycache__/sprint.cpython-314.pyc +0 -0
  75. package/pennyfarthing_scripts/__pycache__/workflow.cpython-311.pyc +0 -0
  76. package/pennyfarthing_scripts/__pycache__/workflow.cpython-314.pyc +0 -0
  77. package/pennyfarthing_scripts/bc/__pycache__/__init__.cpython-314.pyc +0 -0
  78. package/pennyfarthing_scripts/bc/__pycache__/cli.cpython-314.pyc +0 -0
  79. package/pennyfarthing_scripts/bc/__pycache__/focus.cpython-314.pyc +0 -0
  80. package/pennyfarthing_scripts/bikerack/__pycache__/__init__.cpython-314.pyc +0 -0
  81. package/pennyfarthing_scripts/bikerack/__pycache__/__main__.cpython-314.pyc +0 -0
  82. package/pennyfarthing_scripts/bikerack/__pycache__/background_panel.cpython-314.pyc +0 -0
  83. package/pennyfarthing_scripts/bikerack/__pycache__/base_panel.cpython-314.pyc +0 -0
  84. package/pennyfarthing_scripts/bikerack/__pycache__/changed_panel.cpython-314.pyc +0 -0
  85. package/pennyfarthing_scripts/bikerack/__pycache__/cli.cpython-314.pyc +0 -0
  86. package/pennyfarthing_scripts/bikerack/__pycache__/diffs_panel.cpython-314.pyc +0 -0
  87. package/pennyfarthing_scripts/bikerack/__pycache__/git_panel.cpython-314.pyc +0 -0
  88. package/pennyfarthing_scripts/bikerack/__pycache__/launcher.cpython-314.pyc +0 -0
  89. package/pennyfarthing_scripts/bikerack/__pycache__/sprint_panel.cpython-314.pyc +0 -0
  90. package/pennyfarthing_scripts/bikerack/__pycache__/tui.cpython-314.pyc +0 -0
  91. package/pennyfarthing_scripts/bikerack/__pycache__/ws_client.cpython-314.pyc +0 -0
  92. package/pennyfarthing_scripts/bikerack/changed_panel.py +105 -0
  93. package/pennyfarthing_scripts/brownfield/__pycache__/__init__.cpython-314.pyc +0 -0
  94. package/pennyfarthing_scripts/brownfield/__pycache__/__main__.cpython-314.pyc +0 -0
  95. package/pennyfarthing_scripts/brownfield/__pycache__/cli.cpython-314.pyc +0 -0
  96. package/pennyfarthing_scripts/brownfield/__pycache__/discover.cpython-314.pyc +0 -0
  97. package/pennyfarthing_scripts/codemarkers/__pycache__/__init__.cpython-314.pyc +0 -0
  98. package/pennyfarthing_scripts/codemarkers/__pycache__/__main__.cpython-314.pyc +0 -0
  99. package/pennyfarthing_scripts/codemarkers/__pycache__/analyze.cpython-314.pyc +0 -0
  100. package/pennyfarthing_scripts/codemarkers/__pycache__/cli.cpython-314.pyc +0 -0
  101. package/pennyfarthing_scripts/codemarkers/__pycache__/formatters.cpython-314.pyc +0 -0
  102. package/pennyfarthing_scripts/codemarkers/__pycache__/models.cpython-314.pyc +0 -0
  103. package/pennyfarthing_scripts/common/__pycache__/__init__.cpython-314.pyc +0 -0
  104. package/pennyfarthing_scripts/common/__pycache__/config.cpython-314.pyc +0 -0
  105. package/pennyfarthing_scripts/common/__pycache__/output.cpython-314.pyc +0 -0
  106. package/pennyfarthing_scripts/common/__pycache__/themes.cpython-314.pyc +0 -0
  107. package/pennyfarthing_scripts/complexity/__pycache__/__init__.cpython-314.pyc +0 -0
  108. package/pennyfarthing_scripts/complexity/__pycache__/__main__.cpython-314.pyc +0 -0
  109. package/pennyfarthing_scripts/complexity/__pycache__/analyze.cpython-314.pyc +0 -0
  110. package/pennyfarthing_scripts/complexity/__pycache__/cli.cpython-314.pyc +0 -0
  111. package/pennyfarthing_scripts/complexity/__pycache__/formatters.cpython-314.pyc +0 -0
  112. package/pennyfarthing_scripts/complexity/__pycache__/models.cpython-314.pyc +0 -0
  113. package/pennyfarthing_scripts/deadcode/__pycache__/__init__.cpython-314.pyc +0 -0
  114. package/pennyfarthing_scripts/deadcode/__pycache__/__main__.cpython-314.pyc +0 -0
  115. package/pennyfarthing_scripts/deadcode/__pycache__/analyze.cpython-314.pyc +0 -0
  116. package/pennyfarthing_scripts/deadcode/__pycache__/cli.cpython-314.pyc +0 -0
  117. package/pennyfarthing_scripts/deadcode/__pycache__/formatters.cpython-314.pyc +0 -0
  118. package/pennyfarthing_scripts/deadcode/__pycache__/models.cpython-314.pyc +0 -0
  119. package/pennyfarthing_scripts/dependencies/__pycache__/__init__.cpython-314.pyc +0 -0
  120. package/pennyfarthing_scripts/dependencies/__pycache__/__main__.cpython-314.pyc +0 -0
  121. package/pennyfarthing_scripts/dependencies/__pycache__/analyze.cpython-314.pyc +0 -0
  122. package/pennyfarthing_scripts/dependencies/__pycache__/cli.cpython-314.pyc +0 -0
  123. package/pennyfarthing_scripts/dependencies/__pycache__/formatters.cpython-314.pyc +0 -0
  124. package/pennyfarthing_scripts/dependencies/__pycache__/models.cpython-314.pyc +0 -0
  125. package/pennyfarthing_scripts/git/__pycache__/__init__.cpython-314.pyc +0 -0
  126. package/pennyfarthing_scripts/git/__pycache__/create_branches.cpython-314.pyc +0 -0
  127. package/pennyfarthing_scripts/git/__pycache__/status_all.cpython-314.pyc +0 -0
  128. package/pennyfarthing_scripts/healthscore/__pycache__/__init__.cpython-314.pyc +0 -0
  129. package/pennyfarthing_scripts/healthscore/__pycache__/__main__.cpython-314.pyc +0 -0
  130. package/pennyfarthing_scripts/healthscore/__pycache__/analyze.cpython-314.pyc +0 -0
  131. package/pennyfarthing_scripts/healthscore/__pycache__/cli.cpython-314.pyc +0 -0
  132. package/pennyfarthing_scripts/healthscore/__pycache__/formatters.cpython-314.pyc +0 -0
  133. package/pennyfarthing_scripts/healthscore/__pycache__/models.cpython-314.pyc +0 -0
  134. package/pennyfarthing_scripts/hotspots/__pycache__/__init__.cpython-314.pyc +0 -0
  135. package/pennyfarthing_scripts/hotspots/__pycache__/__main__.cpython-314.pyc +0 -0
  136. package/pennyfarthing_scripts/hotspots/__pycache__/analyze.cpython-314.pyc +0 -0
  137. package/pennyfarthing_scripts/hotspots/__pycache__/cli.cpython-314.pyc +0 -0
  138. package/pennyfarthing_scripts/hotspots/__pycache__/formatters.cpython-314.pyc +0 -0
  139. package/pennyfarthing_scripts/hotspots/__pycache__/models.cpython-314.pyc +0 -0
  140. package/pennyfarthing_scripts/jira/__pycache__/__init__.cpython-314.pyc +0 -0
  141. package/pennyfarthing_scripts/jira/__pycache__/__main__.cpython-314.pyc +0 -0
  142. package/pennyfarthing_scripts/jira/__pycache__/bidirectional.cpython-314.pyc +0 -0
  143. package/pennyfarthing_scripts/jira/__pycache__/claim.cpython-314.pyc +0 -0
  144. package/pennyfarthing_scripts/jira/__pycache__/cli.cpython-314.pyc +0 -0
  145. package/pennyfarthing_scripts/jira/__pycache__/client.cpython-314.pyc +0 -0
  146. package/pennyfarthing_scripts/jira/__pycache__/compat.cpython-314.pyc +0 -0
  147. package/pennyfarthing_scripts/jira/__pycache__/create.cpython-314.pyc +0 -0
  148. package/pennyfarthing_scripts/jira/__pycache__/epic.cpython-314.pyc +0 -0
  149. package/pennyfarthing_scripts/jira/__pycache__/mappings.cpython-314.pyc +0 -0
  150. package/pennyfarthing_scripts/jira/__pycache__/models.cpython-314.pyc +0 -0
  151. package/pennyfarthing_scripts/jira/__pycache__/operations.cpython-314.pyc +0 -0
  152. package/pennyfarthing_scripts/jira/__pycache__/reconcile.cpython-314.pyc +0 -0
  153. package/pennyfarthing_scripts/jira/__pycache__/story.cpython-314.pyc +0 -0
  154. package/pennyfarthing_scripts/jira/__pycache__/sync.cpython-314.pyc +0 -0
  155. package/pennyfarthing_scripts/launch/__pycache__/__init__.cpython-314.pyc +0 -0
  156. package/pennyfarthing_scripts/launch/__pycache__/cli.cpython-314.pyc +0 -0
  157. package/pennyfarthing_scripts/migration/__pycache__/__init__.cpython-314.pyc +0 -0
  158. package/pennyfarthing_scripts/migration/__pycache__/__main__.cpython-314.pyc +0 -0
  159. package/pennyfarthing_scripts/migration/__pycache__/cli.cpython-314.pyc +0 -0
  160. package/pennyfarthing_scripts/migration/__pycache__/session.cpython-314.pyc +0 -0
  161. package/pennyfarthing_scripts/migration/__pycache__/skill.cpython-314.pyc +0 -0
  162. package/pennyfarthing_scripts/migration/__pycache__/step.cpython-314.pyc +0 -0
  163. package/pennyfarthing_scripts/migration/__pycache__/validate.cpython-314.pyc +0 -0
  164. package/pennyfarthing_scripts/preflight/__pycache__/__init__.cpython-314.pyc +0 -0
  165. package/pennyfarthing_scripts/preflight/__pycache__/__main__.cpython-314.pyc +0 -0
  166. package/pennyfarthing_scripts/preflight/__pycache__/cli.cpython-314.pyc +0 -0
  167. package/pennyfarthing_scripts/preflight/__pycache__/finish.cpython-314.pyc +0 -0
  168. package/pennyfarthing_scripts/prime/__pycache__/__init__.cpython-314.pyc +0 -0
  169. package/pennyfarthing_scripts/prime/__pycache__/__main__.cpython-314.pyc +0 -0
  170. package/pennyfarthing_scripts/prime/__pycache__/cli.cpython-314.pyc +0 -0
  171. package/pennyfarthing_scripts/prime/__pycache__/loader.cpython-314.pyc +0 -0
  172. package/pennyfarthing_scripts/prime/__pycache__/models.cpython-314.pyc +0 -0
  173. package/pennyfarthing_scripts/prime/__pycache__/persona.cpython-314.pyc +0 -0
  174. package/pennyfarthing_scripts/prime/__pycache__/session.cpython-314.pyc +0 -0
  175. package/pennyfarthing_scripts/prime/__pycache__/tiers.cpython-314.pyc +0 -0
  176. package/pennyfarthing_scripts/prime/__pycache__/version_sentinel.cpython-314.pyc +0 -0
  177. package/pennyfarthing_scripts/prime/__pycache__/workflow.cpython-314.pyc +0 -0
  178. package/pennyfarthing_scripts/session_start_hook.py +4 -4
  179. package/pennyfarthing_scripts/sprint/__pycache__/__init__.cpython-314.pyc +0 -0
  180. package/pennyfarthing_scripts/sprint/__pycache__/__main__.cpython-314.pyc +0 -0
  181. package/pennyfarthing_scripts/sprint/__pycache__/archive.cpython-314.pyc +0 -0
  182. package/pennyfarthing_scripts/sprint/__pycache__/archive_epic.cpython-314.pyc +0 -0
  183. package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
  184. package/pennyfarthing_scripts/sprint/__pycache__/epic_add.cpython-314.pyc +0 -0
  185. package/pennyfarthing_scripts/sprint/__pycache__/epic_update.cpython-314.pyc +0 -0
  186. package/pennyfarthing_scripts/sprint/__pycache__/import_epic.cpython-314.pyc +0 -0
  187. package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-314.pyc +0 -0
  188. package/pennyfarthing_scripts/sprint/__pycache__/status.cpython-314.pyc +0 -0
  189. package/pennyfarthing_scripts/sprint/__pycache__/story_add.cpython-314.pyc +0 -0
  190. package/pennyfarthing_scripts/sprint/__pycache__/story_finish.cpython-314.pyc +0 -0
  191. package/pennyfarthing_scripts/sprint/__pycache__/story_update.cpython-314.pyc +0 -0
  192. package/pennyfarthing_scripts/sprint/__pycache__/validate_cmd.cpython-314.pyc +0 -0
  193. package/pennyfarthing_scripts/sprint/__pycache__/validator.cpython-314.pyc +0 -0
  194. package/pennyfarthing_scripts/sprint/__pycache__/work.cpython-314.pyc +0 -0
  195. package/pennyfarthing_scripts/sprint/__pycache__/yaml_io.cpython-314.pyc +0 -0
  196. package/pennyfarthing_scripts/sprint/archive_epic.py +8 -0
  197. package/pennyfarthing_scripts/story/__pycache__/__init__.cpython-314.pyc +0 -0
  198. package/pennyfarthing_scripts/story/__pycache__/__main__.cpython-314.pyc +0 -0
  199. package/pennyfarthing_scripts/story/__pycache__/cli.cpython-314.pyc +0 -0
  200. package/pennyfarthing_scripts/story/__pycache__/create.cpython-314.pyc +0 -0
  201. package/pennyfarthing_scripts/story/__pycache__/size.cpython-314.pyc +0 -0
  202. package/pennyfarthing_scripts/story/__pycache__/template.cpython-314.pyc +0 -0
  203. package/pennyfarthing_scripts/tests/__pycache__/__init__.cpython-314.pyc +0 -0
  204. package/pennyfarthing_scripts/tests/__pycache__/conftest.cpython-314-pytest-9.0.2.pyc +0 -0
  205. package/pennyfarthing_scripts/tests/__pycache__/test_archive_epic.cpython-314-pytest-9.0.2.pyc +0 -0
  206. package/pennyfarthing_scripts/tests/__pycache__/test_bc.cpython-314-pytest-9.0.2.pyc +0 -0
  207. package/pennyfarthing_scripts/tests/__pycache__/test_bikerack.cpython-314-pytest-9.0.2.pyc +0 -0
  208. package/pennyfarthing_scripts/tests/__pycache__/test_brownfield.cpython-314-pytest-9.0.2.pyc +0 -0
  209. package/pennyfarthing_scripts/tests/__pycache__/test_cli_modules.cpython-314-pytest-9.0.2.pyc +0 -0
  210. package/pennyfarthing_scripts/tests/__pycache__/test_cli_normalization.cpython-314-pytest-9.0.2.pyc +0 -0
  211. package/pennyfarthing_scripts/tests/__pycache__/test_codemarkers.cpython-314-pytest-9.0.2.pyc +0 -0
  212. package/pennyfarthing_scripts/tests/__pycache__/test_common.cpython-314-pytest-9.0.2.pyc +0 -0
  213. package/pennyfarthing_scripts/tests/__pycache__/test_epic_shard_validation.cpython-314-pytest-9.0.2.pyc +0 -0
  214. package/pennyfarthing_scripts/tests/__pycache__/test_git_utils.cpython-314-pytest-9.0.2.pyc +0 -0
  215. package/pennyfarthing_scripts/tests/__pycache__/test_healthscore.cpython-314-pytest-9.0.2.pyc +0 -0
  216. package/pennyfarthing_scripts/tests/__pycache__/test_jira_package.cpython-314-pytest-9.0.2.pyc +0 -0
  217. package/pennyfarthing_scripts/tests/__pycache__/test_package_structure.cpython-314-pytest-9.0.2.pyc +0 -0
  218. package/pennyfarthing_scripts/tests/__pycache__/test_patch_mode.cpython-314-pytest-9.0.2.pyc +0 -0
  219. package/pennyfarthing_scripts/tests/__pycache__/test_prime.cpython-314-pytest-9.0.2.pyc +0 -0
  220. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_package.cpython-314-pytest-9.0.2.pyc +0 -0
  221. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_panel.cpython-314-pytest-9.0.2.pyc +0 -0
  222. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_validator.cpython-314-pytest-9.0.2.pyc +0 -0
  223. package/pennyfarthing_scripts/tests/__pycache__/test_story_add.cpython-314-pytest-9.0.2.pyc +0 -0
  224. package/pennyfarthing_scripts/tests/__pycache__/test_story_package.cpython-314-pytest-9.0.2.pyc +0 -0
  225. package/pennyfarthing_scripts/tests/__pycache__/test_story_update.cpython-314-pytest-9.0.2.pyc +0 -0
  226. package/pennyfarthing_scripts/tests/__pycache__/test_tiers.cpython-314-pytest-9.0.2.pyc +0 -0
  227. package/pennyfarthing_scripts/tests/__pycache__/test_token_counting.cpython-314-pytest-9.0.2.pyc +0 -0
  228. package/pennyfarthing_scripts/tests/__pycache__/test_topology_loader.cpython-314-pytest-9.0.2.pyc +0 -0
  229. package/pennyfarthing_scripts/tests/__pycache__/test_tui_focus.cpython-314-pytest-9.0.2.pyc +0 -0
  230. package/pennyfarthing_scripts/tests/__pycache__/test_tui_panel_persistence.cpython-314-pytest-9.0.2.pyc +0 -0
  231. package/pennyfarthing_scripts/tests/__pycache__/test_validate_cmd.cpython-314-pytest-9.0.2.pyc +0 -0
  232. package/pennyfarthing_scripts/tests/__pycache__/test_version_sentinel.cpython-314-pytest-9.0.2.pyc +0 -0
  233. package/pennyfarthing_scripts/tests/__pycache__/test_workflow_check.cpython-314-pytest-9.0.2.pyc +0 -0
  234. package/pennyfarthing_scripts/tests/__pycache__/test_workflow_cli.cpython-314-pytest-9.0.2.pyc +0 -0
  235. package/pennyfarthing_scripts/tests/__pycache__/test_yaml_io.cpython-314-pytest-9.0.2.pyc +0 -0
  236. package/pennyfarthing_scripts/tests/test_archive_epic.py +1 -2
  237. package/pennyfarthing_scripts/theme/__pycache__/__init__.cpython-314.pyc +0 -0
  238. package/pennyfarthing_scripts/theme/__pycache__/cli.cpython-314.pyc +0 -0
  239. package/pennyfarthing_scripts/validate/__pycache__/__init__.cpython-314.pyc +0 -0
  240. package/pennyfarthing_scripts/validate/__pycache__/cli.cpython-314.pyc +0 -0
  241. package/pennyfarthing_scripts/validate/adapters/__pycache__/__init__.cpython-314.pyc +0 -0
  242. package/pennyfarthing_scripts/validate/adapters/__pycache__/agent.cpython-314.pyc +0 -0
  243. package/pennyfarthing_scripts/validate/adapters/__pycache__/schema.cpython-314.pyc +0 -0
  244. package/pennyfarthing_scripts/validate/adapters/__pycache__/skill_command.cpython-314.pyc +0 -0
  245. package/pennyfarthing_scripts/validate/adapters/__pycache__/sprint.cpython-314.pyc +0 -0
  246. package/pennyfarthing_scripts/validate/adapters/__pycache__/workflow.cpython-314.pyc +0 -0
  247. package/packages/core/dist/benchmark/package-exports.test.d.ts.map +0 -1
  248. package/packages/core/dist/benchmark/package-exports.test.js.map +0 -1
  249. package/packages/core/dist/scripts/benchmark-integration.test.d.ts +0 -13
  250. package/packages/core/dist/scripts/benchmark-integration.test.d.ts.map +0 -1
  251. package/packages/core/dist/scripts/benchmark-integration.test.js +0 -680
  252. package/packages/core/dist/scripts/benchmark-integration.test.js.map +0 -1
  253. package/packages/core/dist/scripts/debugging-scenarios.test.d.ts +0 -18
  254. package/packages/core/dist/scripts/debugging-scenarios.test.d.ts.map +0 -1
  255. package/packages/core/dist/scripts/debugging-scenarios.test.js +0 -317
  256. package/packages/core/dist/scripts/debugging-scenarios.test.js.map +0 -1
  257. package/packages/core/dist/scripts/job-fair-aggregator.test.d.ts +0 -14
  258. package/packages/core/dist/scripts/job-fair-aggregator.test.d.ts.map +0 -1
  259. package/packages/core/dist/scripts/job-fair-aggregator.test.js +0 -616
  260. package/packages/core/dist/scripts/job-fair-aggregator.test.js.map +0 -1
  261. package/packages/core/dist/scripts/theme-detail.test.d.ts +0 -10
  262. package/packages/core/dist/scripts/theme-detail.test.js +0 -199
  263. package/pennyfarthing-dist/skills/pf-dev-patterns/SKILL.md +0 -461
  264. package/pennyfarthing_scripts/__pycache__/bellmode_hook.cpython-314.pyc +0 -0
@@ -17,6 +17,53 @@ The simplest code that passes the tests IS the right code. Every abstraction you
17
17
  **Shipping beats perfection. Wire it up, make it work, move on.**
18
18
  </minimalist-discipline>
19
19
 
20
+ <critical>
21
+ ## Pre-Edit Topology Check
22
+
23
+ **Before editing ANY file, verify against repos.yaml topology loaded in your prime context.**
24
+
25
+ ### Rules
26
+
27
+ 1. **Check `never_edit` zones.** If the target path matches a `never_edit` glob, STOP. These are symlinks, build output, or dependencies.
28
+ 2. **Check repo ownership.** Match the target path against each repo's `owns` globs to confirm you're editing in the correct repo. Orchestrator files stay in the orchestrator repo; framework files go through `pennyfarthing/`.
29
+ 3. **Trace symlinks.** If a path is in the `symlinks` map, edit the **source** (right side), not the symlink (left side). Edits to symlink targets silently write to the wrong git repo.
30
+
31
+ ### Worked Examples
32
+
33
+ **Mistake 1: Editing a symlinked `.pennyfarthing/` path**
34
+ ```
35
+ BAD: Edit .pennyfarthing/agents/dev.md
36
+ → This is a symlink to pennyfarthing/pennyfarthing-dist/agents/dev.md
37
+ → Your edit lands in the pennyfarthing repo but you think you're in the orchestrator
38
+ FIX: Edit pennyfarthing/pennyfarthing-dist/agents/dev.md directly
39
+ WHY: repos.yaml symlinks: { .pennyfarthing/agents: pennyfarthing/pennyfarthing-dist/agents }
40
+ ```
41
+
42
+ **Mistake 2: Editing inside `node_modules/`**
43
+ ```
44
+ BAD: Edit node_modules/@pennyfarthing/core/pennyfarthing-dist/scripts/core/find-root.sh
45
+ → This gets overwritten on next install
46
+ FIX: Edit pennyfarthing/pennyfarthing-dist/scripts/core/find-root.sh, then rebuild
47
+ WHY: repos.yaml never_edit: [node_modules/**] (both repos)
48
+ ```
49
+
50
+ **Mistake 3: Editing the wrong repo's files**
51
+ ```
52
+ BAD: From pennyfarthing repo, edit sprint/current-sprint.yaml
53
+ → sprint/** is owned by the orchestrator repo
54
+ FIX: Switch to the orchestrator repo root, then edit sprint/current-sprint.yaml
55
+ WHY: repos.yaml orchestrator.owns: [sprint/**], not pennyfarthing.owns
56
+ ```
57
+
58
+ **Mistake 4: Editing build output**
59
+ ```
60
+ BAD: Edit packages/cyclist/dist/index.js
61
+ → Build artifacts are regenerated and your changes are lost
62
+ FIX: Edit packages/cyclist/src/index.ts, then run pnpm build
63
+ WHY: repos.yaml never_edit: [packages/*/dist/**]
64
+ ```
65
+ </critical>
66
+
20
67
  <critical>
21
68
  **HANDOFF REQUIRES MARKER OUTPUT.** After `handoff` subagent returns:
22
69
  Run `handoff-marker.sh {next_agent}` as ABSOLUTE LAST ACTION, output result, EXIT.
@@ -160,7 +207,6 @@ Write to session file BEFORE spawning handoff:
160
207
 
161
208
  <skills>
162
209
  - `/pf-testing` - Test commands and patterns
163
- - `/pf-dev-patterns` - Implementation patterns and gotchas
164
210
  - `/pf-code-review` - Self-review checklist
165
211
  </skills>
166
212
 
@@ -167,7 +167,6 @@ ASSESSMENT_SECTION: "Orchestrator Assessment"
167
167
 
168
168
  <skills>
169
169
  - `/pf-sprint` - Sprint status and project state
170
- - `/pf-dev-patterns` - Turn-efficient patterns reference
171
170
  - `/pf-workflow` - View and switch workflows
172
171
  </skills>
173
172
 
@@ -36,7 +36,6 @@ FILE_LIST: "{comma-separated UI component paths}"
36
36
 
37
37
 
38
38
  <skills>
39
- - `/pf-dev-patterns` - UI implementation patterns
40
39
  </skills>
41
40
 
42
41
  <critical>
@@ -29,7 +29,7 @@
29
29
  <info>
30
30
  **Workflow:** SM → TEA → Dev → Reviewer → SM. Trivial skips TEA.
31
31
 
32
- **Skills:** `/pf-sprint`, `/pf-testing`, `/pf-dev-patterns`, `/pf-jira`, `/pf-just`
32
+ **Skills:** `/pf-sprint`, `/pf-testing`, `/pf-jira`, `/pf-just`
33
33
 
34
34
  **Efficiency:** Parallelize reads, batch bash with `&&`, spawn independent subagents together.
35
35
 
@@ -188,7 +188,6 @@ Available slash commands for this agent.
188
188
  ```xml
189
189
  <skills>
190
190
  - `/pf-testing` - Test commands and patterns
191
- - `/pf-dev-patterns` - Implementation patterns and gotchas
192
191
  </skills>
193
192
  ```
194
193
 
@@ -15,7 +15,7 @@ agents:
15
15
  expertise: "Covert coordination, network operations, strategic intelligence distribution"
16
16
  role: "The resistance network itself — the system of systems that makes every mission possible without ever being seen"
17
17
  trait: "Omnipresent yet invisible, the meta-system that orchestrates all operations across occupied Europe"
18
- quote: "The network is in place. The message has been received. Proceed as planned."
18
+
19
19
  emoji: "\U0001F310"
20
20
  helper:
21
21
  name: Underground Courier
@@ -15,7 +15,7 @@ agents:
15
15
  expertise: "Cosmic orchestration, multi-world coordination, pattern manipulation across timelines"
16
16
  role: "The eternal adversary who orchestrates chaos across all of King's worlds — from The Stand to The Dark Tower, always pulling strings"
17
17
  trait: "Ancient, amused, and terrifyingly competent — treats the destruction of worlds like a game of chess he's played a thousand times"
18
- quote: "My life for you. My process for you. The systems turn because I will it."
18
+
19
19
  emoji: "\U0001F319"
20
20
  helper:
21
21
  name: The Walkin' Dude's Emissary
@@ -437,7 +437,6 @@ See: `/pf-workflow interactive-debug` for full workflow.
437
437
  | Skill | How It Complements |
438
438
  |-------|-------------------|
439
439
  | `/pf-testing` | Run tests to verify fixes |
440
- | `/pf-dev-patterns` | Avoid common pitfalls |
441
440
  | `/pf-agentic-patterns` | ReAct pattern for systematic investigation |
442
441
  | `/pf-workflow interactive-debug` | UI debugging with Playwright MCP |
443
442
 
@@ -55,7 +55,7 @@ skills:
55
55
  anti_patterns:
56
56
  - Don't skip security considerations in review
57
57
  - Don't approve without running tests
58
- related_skills: [pf-testing, pf-dev-patterns]
58
+ related_skills: [pf-testing]
59
59
  keywords: [pr, pull-request, quality, linting, security]
60
60
 
61
61
  pf-context-engineering:
@@ -94,24 +94,6 @@ skills:
94
94
  related_skills: []
95
95
  keywords: [tui, terminal, visualization, dashboard]
96
96
 
97
- pf-dev-patterns:
98
- name: pf-dev-patterns
99
- description: Common development patterns, fixes, and gotchas
100
- category: development
101
- tags: [patterns, debugging, implementation]
102
- version: "1.0.0"
103
- prerequisites: []
104
- examples:
105
- - context: Implementing features
106
- invocation: /dev-patterns
107
- - context: Avoiding known pitfalls
108
- invocation: /dev-patterns gotchas
109
- anti_patterns:
110
- - Don't apply patterns from other frameworks blindly
111
- related_skills: [pf-code-review, pf-testing]
112
- keywords: [implementation, debugging, fixes, best-practices]
113
- allowed_tools: [Read, Glob, Grep, Task] # Reference material - read-only
114
-
115
97
  pf-finalize-run:
116
98
  name: pf-finalize-run
117
99
  description: Validate and save benchmark run results - single exit point for all runs
@@ -288,7 +270,7 @@ skills:
288
270
  anti_patterns:
289
271
  - Don't jump to solutions without reproducing the issue first
290
272
  - Don't fix symptoms instead of root causes
291
- related_skills: [pf-testing, pf-dev-patterns, pf-agentic-patterns]
273
+ related_skills: [pf-testing, pf-agentic-patterns]
292
274
  keywords: [debugging, bisect, reproduce, isolate, root-cause, regression]
293
275
 
294
276
  pf-story:
@@ -326,7 +308,7 @@ skills:
326
308
  anti_patterns:
327
309
  - Don't run tests directly - use testing-runner subagent
328
310
  - Don't skip RED phase in TDD workflow
329
- related_skills: [pf-dev-patterns, pf-code-review]
311
+ related_skills: [pf-code-review]
330
312
  keywords: [jest, vitest, pytest, unit-test, integration, tdd, red-green]
331
313
 
332
314
  pf-theme:
@@ -0,0 +1,105 @@
1
+ """ChangedPanel — Changed file list with status for BikeRack TUI.
2
+
3
+ Story 103-14: Subscribes to /ws/git, extracts dirtyFiles from all repos,
4
+ renders Rich table with file path, change type icon, and status.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ from typing import Any
10
+
11
+ from rich.table import Table
12
+ from rich.text import Text
13
+
14
+ from pennyfarthing_scripts.bikerack.base_panel import PANEL_ICONS, BasePanel
15
+
16
+ # Status code → (icon, label, style)
17
+ _STATUS_MAP: dict[str, tuple[str, str, str]] = {
18
+ "M": ("~", "Modified", "yellow"),
19
+ "A": ("+", "Added", "green"),
20
+ "D": ("-", "Deleted", "red"),
21
+ "?": ("?", "Untracked", "dim"),
22
+ "R": ("→", "Renamed", "cyan"),
23
+ }
24
+
25
+ _DEFAULT_STATUS: tuple[str, str, str] = ("·", "Changed", "yellow")
26
+
27
+
28
+ def _parse_status(status: str) -> tuple[str, str, str]:
29
+ """Parse 2-char git status code into (icon, label, style).
30
+
31
+ First char = index (staging area), second char = working tree.
32
+ Uses the most significant non-space character.
33
+ """
34
+ if len(status) < 2:
35
+ return _STATUS_MAP.get(status[:1], _DEFAULT_STATUS)
36
+
37
+ idx, wt = status[0], status[1]
38
+
39
+ # Untracked: both chars are '?'
40
+ if idx == "?" and wt == "?":
41
+ return _STATUS_MAP["?"]
42
+
43
+ # Index change takes priority if present
44
+ if idx not in (" ", "?"):
45
+ return _STATUS_MAP.get(idx, _DEFAULT_STATUS)
46
+
47
+ # Working tree change
48
+ if wt not in (" ", "?"):
49
+ return _STATUS_MAP.get(wt, _DEFAULT_STATUS)
50
+
51
+ return _DEFAULT_STATUS
52
+
53
+
54
+ class ChangedPanel(BasePanel):
55
+ """Changed file list panel.
56
+
57
+ Subscribes to the ``git`` WebSocket channel and renders
58
+ dirty files from all repos as a Rich table with file path,
59
+ change type icon, and status.
60
+ """
61
+
62
+ channel: str = "git"
63
+ panel_name: str = "Changed"
64
+ icon: str = PANEL_ICONS["changed"][0]
65
+
66
+ def render_panel(self, payload: dict[str, Any]) -> Any:
67
+ """Render changed file data from WebSocket payload."""
68
+ repos = payload.get("repos", [])
69
+ if not isinstance(repos, list):
70
+ return Text("No changed files", style="dim italic")
71
+
72
+ files: list[tuple[str, dict[str, Any]]] = []
73
+ for repo in repos:
74
+ if not isinstance(repo, dict):
75
+ continue
76
+ repo_name = repo.get("name", "")
77
+ dirty_files = repo.get("dirtyFiles", [])
78
+ if not isinstance(dirty_files, list):
79
+ continue
80
+ for f in dirty_files:
81
+ if not isinstance(f, dict):
82
+ continue
83
+ files.append((repo_name, f))
84
+
85
+ if not files:
86
+ return Text("No changed files", style="dim italic")
87
+
88
+ table = Table()
89
+ table.add_column("", width=2)
90
+ table.add_column("File", style="cyan")
91
+ table.add_column("Status")
92
+ table.add_column("Repo", style="dim")
93
+
94
+ for repo_name, f in files:
95
+ status_code = f.get("status", " ")
96
+ path = f.get("path", "")
97
+ icon, label, style = _parse_status(status_code)
98
+ table.add_row(
99
+ Text(icon, style=f"bold {style}"),
100
+ path,
101
+ Text(label, style=style),
102
+ repo_name,
103
+ )
104
+
105
+ return table