@pennyfarthing/core 11.2.1 → 11.3.1
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.
- package/README.md +102 -42
- package/package.json +1 -1
- package/packages/core/dist/cli/commands/doctor-legacy.test.js +2 -2
- package/packages/core/dist/cli/commands/doctor-legacy.test.js.map +1 -1
- package/packages/core/dist/cli/commands/doctor.d.ts +55 -0
- package/packages/core/dist/cli/commands/doctor.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/doctor.js +324 -50
- package/packages/core/dist/cli/commands/doctor.js.map +1 -1
- package/packages/core/dist/cli/commands/init.d.ts +12 -0
- package/packages/core/dist/cli/commands/init.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/init.js +45 -0
- package/packages/core/dist/cli/commands/init.js.map +1 -1
- package/packages/core/dist/cli/commands/pyproject-install.test.d.ts +19 -0
- package/packages/core/dist/cli/commands/pyproject-install.test.d.ts.map +1 -0
- package/packages/core/dist/cli/commands/pyproject-install.test.js +261 -0
- package/packages/core/dist/cli/commands/pyproject-install.test.js.map +1 -0
- package/packages/core/dist/cli/commands/stale-artifacts-cleanup.test.d.ts +17 -0
- package/packages/core/dist/cli/commands/stale-artifacts-cleanup.test.d.ts.map +1 -0
- package/packages/core/dist/cli/commands/stale-artifacts-cleanup.test.js +470 -0
- package/packages/core/dist/cli/commands/stale-artifacts-cleanup.test.js.map +1 -0
- package/packages/core/dist/cli/commands/update-consolidation.test.js +14 -6
- package/packages/core/dist/cli/commands/update-consolidation.test.js.map +1 -1
- package/packages/core/dist/cli/commands/update.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/update.js +31 -2
- package/packages/core/dist/cli/commands/update.js.map +1 -1
- package/packages/core/dist/cli/index.js +2 -0
- package/packages/core/dist/cli/index.js.map +1 -1
- package/packages/core/dist/cli/utils/python.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/python.js +11 -0
- package/packages/core/dist/cli/utils/python.js.map +1 -1
- package/packages/core/dist/cli/utils/settings-hook-migration.test.d.ts +17 -0
- package/packages/core/dist/cli/utils/settings-hook-migration.test.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/settings-hook-migration.test.js +382 -0
- package/packages/core/dist/cli/utils/settings-hook-migration.test.js.map +1 -0
- package/packages/core/dist/cli/utils/settings.d.ts +0 -4
- package/packages/core/dist/cli/utils/settings.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/settings.js +45 -27
- package/packages/core/dist/cli/utils/settings.js.map +1 -1
- package/packages/core/dist/cli/utils/stale-artifacts.d.ts +59 -0
- package/packages/core/dist/cli/utils/stale-artifacts.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/stale-artifacts.js +163 -0
- package/packages/core/dist/cli/utils/stale-artifacts.js.map +1 -0
- package/packages/core/dist/consultation/dialogue-manager.d.ts +1 -1
- package/packages/core/dist/consultation/dialogue-manager.d.ts.map +1 -1
- package/packages/core/dist/consultation/dialogue-manager.js +1 -1
- package/packages/core/dist/consultation/dialogue-manager.js.map +1 -1
- package/packages/core/dist/consultation/dialogue-manager.test.js.map +1 -1
- package/packages/core/dist/consultation/tandem-metrics.test.js.map +1 -1
- package/packages/core/dist/public/css/react.css +1 -1
- package/packages/core/dist/public/js/react/react.js +9 -9
- package/packages/core/dist/server/api/git.d.ts.map +1 -1
- package/packages/core/dist/server/api/git.js +0 -1
- package/packages/core/dist/server/api/git.js.map +1 -1
- package/packages/core/dist/server/api/index.d.ts +2 -0
- package/packages/core/dist/server/api/index.d.ts.map +1 -1
- package/packages/core/dist/server/api/index.js +2 -0
- package/packages/core/dist/server/api/index.js.map +1 -1
- package/packages/core/dist/server/api/project-info.d.ts +11 -0
- package/packages/core/dist/server/api/project-info.d.ts.map +1 -0
- package/packages/core/dist/server/api/project-info.js +18 -0
- package/packages/core/dist/server/api/project-info.js.map +1 -0
- package/packages/core/dist/server/otlp-receiver.d.ts.map +1 -1
- package/packages/core/dist/server/otlp-receiver.js +18 -1
- package/packages/core/dist/server/otlp-receiver.js.map +1 -1
- package/packages/core/dist/server/otlp-receiver.test.js +1 -1
- package/packages/core/dist/server/otlp-receiver.test.js.map +1 -1
- package/packages/core/dist/server/server.d.ts.map +1 -1
- package/packages/core/dist/server/server.js +3 -2
- package/packages/core/dist/server/server.js.map +1 -1
- package/packages/core/dist/server/server.test.d.ts +1 -1
- package/packages/core/dist/server/server.test.js +8 -8
- package/packages/core/dist/server/settings.d.ts +1 -0
- package/packages/core/dist/server/settings.d.ts.map +1 -1
- package/packages/core/dist/server/settings.js +18 -0
- package/packages/core/dist/server/settings.js.map +1 -1
- package/packages/core/dist/workflow/tandem-workflow-templates.test.js +7 -5
- package/packages/core/dist/workflow/tandem-workflow-templates.test.js.map +1 -1
- package/packages/core/dist/workflow/workflow-migration.test.js +6 -5
- package/packages/core/dist/workflow/workflow-migration.test.js.map +1 -1
- package/packages/core/dist/workflow/workflow-team-templates.test.d.ts +17 -0
- package/packages/core/dist/workflow/workflow-team-templates.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-team-templates.test.js +275 -0
- package/packages/core/dist/workflow/workflow-team-templates.test.js.map +1 -0
- package/pennyfarthing-dist/agents/dev.md +19 -4
- package/pennyfarthing-dist/agents/devops.md +2 -10
- package/pennyfarthing-dist/agents/reviewer-preflight.md +4 -5
- package/pennyfarthing-dist/agents/reviewer.md +17 -4
- package/pennyfarthing-dist/agents/sm-finish.md +1 -1
- package/pennyfarthing-dist/agents/sm-setup.md +7 -7
- package/pennyfarthing-dist/agents/sm.md +16 -29
- package/pennyfarthing-dist/agents/tea.md +2 -2
- package/pennyfarthing-dist/agents/testing-runner.md +1 -1
- package/pennyfarthing-dist/commands/pf-architect.md +1 -1
- package/pennyfarthing-dist/commands/pf-ba.md +1 -1
- package/pennyfarthing-dist/commands/pf-chore.md +2 -2
- package/pennyfarthing-dist/commands/pf-dev.md +1 -1
- package/pennyfarthing-dist/commands/pf-devops.md +1 -1
- package/pennyfarthing-dist/commands/pf-epic.md +6 -6
- package/pennyfarthing-dist/commands/pf-git.md +10 -10
- package/pennyfarthing-dist/commands/pf-health-check.md +31 -12
- package/pennyfarthing-dist/commands/pf-help.md +12 -12
- package/pennyfarthing-dist/commands/pf-orchestrator.md +1 -1
- package/pennyfarthing-dist/commands/pf-pm.md +1 -1
- package/pennyfarthing-dist/commands/pf-prime.md +8 -8
- package/pennyfarthing-dist/commands/pf-reviewer.md +1 -1
- package/pennyfarthing-dist/commands/pf-session.md +7 -7
- package/pennyfarthing-dist/commands/pf-sm.md +1 -1
- package/pennyfarthing-dist/commands/pf-sprint.md +7 -7
- package/pennyfarthing-dist/commands/pf-tea.md +1 -1
- package/pennyfarthing-dist/commands/pf-tech-writer.md +1 -1
- package/pennyfarthing-dist/commands/pf-theme.md +9 -9
- package/pennyfarthing-dist/commands/pf-ux-designer.md +1 -1
- package/pennyfarthing-dist/commands/pf-work.md +1 -1
- package/pennyfarthing-dist/gates/{confidence-sm.md → confidence.md} +16 -17
- package/pennyfarthing-dist/gates/dev-exit.md +75 -0
- package/pennyfarthing-dist/gates/merge-ready.md +49 -0
- package/pennyfarthing-dist/gates/release-ready.md +95 -0
- package/pennyfarthing-dist/gates/reviewer-preflight-check.md +90 -0
- package/pennyfarthing-dist/gates/sm-setup-exit.md +82 -0
- package/pennyfarthing-dist/guides/agent-behavior.md +129 -20
- package/pennyfarthing-dist/guides/agent-coordination.md +10 -10
- package/pennyfarthing-dist/guides/agent-tag-taxonomy.md +6 -6
- package/pennyfarthing-dist/guides/agent-template-tactical.md +1 -1
- package/pennyfarthing-dist/guides/bell-mode.md +1 -1
- package/pennyfarthing-dist/guides/bikerack.md +10 -10
- package/pennyfarthing-dist/guides/brownfield-tools.md +24 -24
- package/pennyfarthing-dist/guides/command-tag-taxonomy.md +1 -1
- package/pennyfarthing-dist/guides/gate-schema.md +2 -2
- package/pennyfarthing-dist/guides/gates.md +10 -5
- package/pennyfarthing-dist/guides/handoff-cli.md +8 -8
- package/pennyfarthing-dist/guides/hooks.md +27 -27
- package/pennyfarthing-dist/guides/prime.md +2 -2
- package/pennyfarthing-dist/guides/reflector.md +1 -1
- package/pennyfarthing-dist/guides/skill-schema.md +6 -6
- package/pennyfarthing-dist/guides/tandem-protocol.md +3 -3
- package/pennyfarthing-dist/guides/workflow-schema.md +1 -1
- package/pennyfarthing-dist/guides/worktree-mode.md +3 -3
- package/pennyfarthing-dist/guides/xml-tags.md +8 -8
- package/pennyfarthing-dist/scripts/README.md +4 -4
- package/pennyfarthing-dist/scripts/core/agent-session.sh +2 -5
- package/pennyfarthing-dist/scripts/core/check-context.sh +1 -1
- package/pennyfarthing-dist/scripts/core/pf.sh +5 -0
- package/pennyfarthing-dist/scripts/core/phase-check-start.sh +2 -5
- package/pennyfarthing-dist/scripts/core/prime.sh +2 -25
- package/pennyfarthing-dist/scripts/git/README.md +14 -14
- package/pennyfarthing-dist/scripts/git/create-feature-branches.sh +2 -3
- package/pennyfarthing-dist/scripts/git/git-status-all.sh +2 -3
- package/pennyfarthing-dist/scripts/git/install-git-hooks.sh +2 -3
- package/pennyfarthing-dist/scripts/git/worktree-manager.sh +2 -4
- package/pennyfarthing-dist/scripts/hooks/README.md +6 -6
- package/pennyfarthing-dist/scripts/hooks/bell-mode-hook.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/context-warning.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/cyclist-pretooluse-hook.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +5 -4
- package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +2 -1
- package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/question-reflector-check.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/schema-validation.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/session-start.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/session-stop.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/sprint-yaml-validation.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/welcome-hook.sh +3 -4
- package/pennyfarthing-dist/scripts/lib/env.sh +34 -0
- package/pennyfarthing-dist/scripts/lib/find-root.sh +5 -0
- package/pennyfarthing-dist/scripts/lib/run-pf.sh +43 -0
- package/pennyfarthing-dist/scripts/misc/README.md +1 -1
- package/pennyfarthing-dist/scripts/misc/statusline.sh +3 -3
- package/pennyfarthing-dist/scripts/sprint/README.md +21 -21
- package/pennyfarthing-dist/scripts/workflow/README.md +2 -2
- package/pennyfarthing-dist/scripts/workflow/finish-story.sh +2 -16
- package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +3 -3
- package/pennyfarthing-dist/scripts/workflow/get-workflow-type.sh +3 -3
- package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +3 -3
- package/pennyfarthing-dist/scripts/workflow/phase-owner.sh +3 -3
- package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +3 -3
- package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +3 -3
- package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +3 -3
- package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +3 -3
- package/pennyfarthing-dist/skills/pf-bc/examples.md +23 -23
- package/pennyfarthing-dist/skills/pf-bc/skill.md +17 -17
- package/pennyfarthing-dist/skills/pf-bc/usage.md +8 -8
- package/pennyfarthing-dist/skills/pf-jira/SKILL.md +15 -15
- package/pennyfarthing-dist/skills/pf-jira/examples.md +48 -48
- package/pennyfarthing-dist/skills/pf-jira/usage.md +15 -15
- package/pennyfarthing-dist/skills/pf-settings/skill.md +42 -0
- package/pennyfarthing-dist/skills/pf-sprint/examples.md +80 -80
- package/pennyfarthing-dist/skills/pf-sprint/skill.md +35 -35
- package/pennyfarthing-dist/skills/pf-sprint/usage.md +30 -30
- package/pennyfarthing-dist/skills/pf-theme/examples.md +15 -15
- package/pennyfarthing-dist/skills/pf-theme/skill.md +6 -6
- package/pennyfarthing-dist/skills/pf-theme/usage.md +5 -5
- package/pennyfarthing-dist/skills/pf-workflow/examples.md +27 -27
- package/pennyfarthing-dist/skills/pf-workflow/skill.md +11 -11
- package/pennyfarthing-dist/skills/pf-workflow/usage.md +11 -11
- package/pennyfarthing-dist/skills/skill-registry.yaml +34 -19
- package/pennyfarthing-dist/templates/pyproject.toml +27 -0
- package/pennyfarthing-dist/templates/settings.local.json.template +11 -11
- package/pennyfarthing-dist/workflows/bdd-tandem.yaml +7 -3
- package/pennyfarthing-dist/workflows/bdd-team.yaml +89 -0
- package/pennyfarthing-dist/workflows/bdd.yaml +7 -3
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-05-import-to-future.md +1 -1
- package/pennyfarthing-dist/workflows/git-cleanup/steps/step-01-analyze.md +1 -1
- package/pennyfarthing-dist/workflows/git-cleanup/steps/step-04-verify.md +1 -1
- package/pennyfarthing-dist/workflows/git-cleanup/steps/step-05-complete.md +1 -1
- package/pennyfarthing-dist/workflows/installation-check/steps/step-01-foundation.md +77 -0
- package/pennyfarthing-dist/workflows/installation-check/steps/step-02-commands.md +82 -0
- package/pennyfarthing-dist/workflows/installation-check/steps/step-03-hooks.md +121 -0
- package/pennyfarthing-dist/workflows/installation-check/steps/step-04-scripts.md +83 -0
- package/pennyfarthing-dist/workflows/installation-check/steps/step-05-layout.md +81 -0
- package/pennyfarthing-dist/workflows/installation-check/steps/step-06-legacy.md +94 -0
- package/pennyfarthing-dist/workflows/installation-check/steps/step-07-tools.md +80 -0
- package/pennyfarthing-dist/workflows/installation-check/steps/step-08-summary.md +99 -0
- package/pennyfarthing-dist/workflows/installation-check/workflow.yaml +47 -0
- package/pennyfarthing-dist/workflows/project-setup/steps/step-01-discover.md +47 -0
- package/pennyfarthing-dist/workflows/tdd-tandem.yaml +7 -3
- package/pennyfarthing-dist/workflows/tdd-team.yaml +80 -0
- package/pennyfarthing-dist/workflows/tdd.yaml +7 -3
- package/pennyfarthing-dist/workflows/trivial.yaml +7 -3
- package/pennyfarthing_scripts/__init__.py +1 -1
- package/pennyfarthing_scripts/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/context.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/context.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bc/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/bc/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/bc/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bc/__pycache__/focus.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/bc/__pycache__/focus.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bc/__pycache__/split.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bc/cli.py +23 -2
- package/pennyfarthing_scripts/bc/focus.py +1 -0
- package/pennyfarthing_scripts/bc/split.py +52 -0
- package/pennyfarthing_scripts/bellmode_hook.py +2 -5
- package/pennyfarthing_scripts/bikerack/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/audit_log_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/background_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/base_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/changed_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/context_meter_footer.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/debug_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/diffs_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/events.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/git_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/launcher.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/launcher.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/portrait_resolver.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/progress_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/sprint_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/story_detail_data.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/story_detail_screen.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/tui.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/ws_client.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/audit_log_panel.py +48 -6
- package/pennyfarthing_scripts/bikerack/context_meter_footer.py +53 -3
- package/pennyfarthing_scripts/bikerack/launcher.py +6 -6
- package/pennyfarthing_scripts/bikerack/progress_panel.py +0 -1
- package/pennyfarthing_scripts/bikerack/sprint_panel.py +1 -1
- package/pennyfarthing_scripts/bikerack/story_detail_data.py +4 -1
- package/pennyfarthing_scripts/bikerack/story_detail_screen.py +2 -1
- package/pennyfarthing_scripts/bikerack/tui.py +214 -10
- package/pennyfarthing_scripts/bikerack/ws_client.py +2 -2
- package/pennyfarthing_scripts/cli.py +5 -0
- package/pennyfarthing_scripts/common/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/config.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/config.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/output.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/pr_config.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/config.py +29 -2
- package/pennyfarthing_scripts/consultation/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/consultation/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/consultation/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/consultation/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/consultation/cli.py +3 -3
- package/pennyfarthing_scripts/context.py +3 -3
- package/pennyfarthing_scripts/deadcode/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/epic/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/epic/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/git/hooks_installer.py +2 -3
- package/pennyfarthing_scripts/git/status_all.py +1 -1
- package/pennyfarthing_scripts/git/worktree.py +2 -2
- package/pennyfarthing_scripts/git_group/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/git_group/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/git_group/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/complete_phase.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/marker.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/phase_check.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/resolve_gate.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/analyze.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/models.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__init__.py +8 -3
- package/pennyfarthing_scripts/hooks/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/bell_mode.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/bell_mode.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/context_breaker.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/context_breaker.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/context_warning.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/context_warning.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/cyclist_pretooluse.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/cyclist_pretooluse.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/pre_edit_check.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/pre_edit_check.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/reflector_check.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/reflector_check.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/schema_validation.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/schema_validation.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/session_start.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/session_start.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/session_stop.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/sprint_yaml_validation.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/sprint_yaml_validation.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/statusline.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/statusline.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/bell_mode.py +0 -1
- package/pennyfarthing_scripts/hooks/pre_edit_check.py +0 -1
- package/pennyfarthing_scripts/hooks/reflector_check.py +1 -2
- package/pennyfarthing_scripts/hooks/schema_validation.py +0 -1
- package/pennyfarthing_scripts/hooks/session_start.py +6 -8
- package/pennyfarthing_scripts/hooks/statusline.py +10 -1
- package/pennyfarthing_scripts/hotspots/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/analyze.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/models.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/bidirectional.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/claim.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/client.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/create.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/epic.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/operations.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/reconcile.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/story.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/sync.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/launch/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/launch/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/workflow.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/heatmap.py +3 -15
- package/pennyfarthing_scripts/session/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/session/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/settings/__init__.py +0 -0
- package/pennyfarthing_scripts/settings/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/settings/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/settings/__pycache__/settings.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/settings/cli.py +55 -0
- package/pennyfarthing_scripts/settings/settings.py +98 -0
- package/pennyfarthing_scripts/sprint/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/archive.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/epic_add.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/epic_update.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/status.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_add.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_finish.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_update.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_update.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/validate_cmd.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/validator.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/work.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/yaml_io.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/cli.py +121 -0
- package/pennyfarthing_scripts/sprint/loader.py +154 -3
- package/pennyfarthing_scripts/sprint/story_update.py +7 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_bikerack.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_tui_focus.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_tui_panel_persistence.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/test_bikerack.py +26 -26
- package/pennyfarthing_scripts/tests/test_confidence_sm_gate.py +17 -16
- package/pennyfarthing_scripts/tests/test_dialogue_manager.py +0 -1
- package/pennyfarthing_scripts/tests/test_resolve_gate_file_field.py +45 -47
- package/pennyfarthing_scripts/tests/test_workflow_list_team.py +143 -0
- package/pennyfarthing_scripts/theme/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/theme/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/validate/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/validate/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/validate/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/team_mode.py +323 -0
- package/pennyfarthing_scripts/workflow/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/helpers.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/scale.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/scale.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/state.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/state.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/workflow/cli.py +15 -14
- package/pennyfarthing_scripts/workflow/state.py +0 -1
- package/pennyfarthing_scripts/workflow/team_lifecycle.py +3 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
# Shim: delegates to Python CLI via uv run (dogfooding) or global pf (consumer).
|
|
3
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
4
|
+
exec_pf hooks bell-mode
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
# Shim: delegates to Python CLI via uv run (dogfooding) or global pf (consumer).
|
|
3
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
4
|
+
exec_pf hooks context-breaker
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
# Shim: delegates to Python CLI via uv run (dogfooding) or global pf (consumer).
|
|
3
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
4
|
+
exec_pf hooks context-warning
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
# Shim: delegates to Python CLI via uv run (dogfooding) or global pf (consumer).
|
|
3
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
4
|
+
exec_pf hooks cyclist-pretooluse
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
# otel-auto-config.sh - Auto-configure OTEL for Cyclist web mode (Story 20-1)
|
|
3
3
|
#
|
|
4
|
-
# This hook checks for a .
|
|
4
|
+
# This hook checks for a .bikerack-port file in the project directory.
|
|
5
5
|
# If found, it sets the OTEL environment variables to connect Claude Code
|
|
6
6
|
# telemetry to the running Cyclist server.
|
|
7
7
|
#
|
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
# source /path/to/otel-auto-config.sh
|
|
10
10
|
#
|
|
11
11
|
# Prerequisites:
|
|
12
|
-
# - Cyclist must be running in web mode (writes .
|
|
12
|
+
# - Cyclist must be running in web mode (writes .bikerack-port file)
|
|
13
13
|
# - CLAUDE_PROJECT_DIR must be set (standard in Claude Code environment)
|
|
14
14
|
|
|
15
15
|
# Determine project directory
|
|
16
16
|
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}"
|
|
17
17
|
|
|
18
|
-
# Read port from .
|
|
18
|
+
# Read port from .bikerack-port (used by both Cyclist and BikeRack)
|
|
19
19
|
PORT=""
|
|
20
|
-
PORT_FILE="$PROJECT_DIR/.
|
|
20
|
+
PORT_FILE="$PROJECT_DIR/.bikerack-port"
|
|
21
21
|
if [[ -f "$PORT_FILE" ]]; then
|
|
22
22
|
PORT=$(cat "$PORT_FILE" 2>/dev/null)
|
|
23
23
|
# Validate port is a number
|
|
@@ -28,6 +28,7 @@ fi
|
|
|
28
28
|
|
|
29
29
|
# Configure OTEL if a valid port was found
|
|
30
30
|
if [[ -n "$PORT" ]]; then
|
|
31
|
+
export CLAUDE_CODE_ENABLE_TELEMETRY=1
|
|
31
32
|
export OTEL_EXPORTER_OTLP_PROTOCOL="http/json"
|
|
32
33
|
export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:$PORT"
|
|
33
34
|
|
|
@@ -134,7 +134,8 @@ fi
|
|
|
134
134
|
SPRINT_YAML_FILES=$(git diff --cached --name-only -- 'sprint/*.yaml' 'sprint/archive/*.yaml' 2>/dev/null \
|
|
135
135
|
| grep -v 'sprint-template\.yaml$' \
|
|
136
136
|
| grep -v 'sprint/completed\.yaml$' \
|
|
137
|
-
| grep -v 'sprint/context/archived/'
|
|
137
|
+
| grep -v 'sprint/context/archived/' \
|
|
138
|
+
| grep -v 'sprints\.yaml$' || true)
|
|
138
139
|
|
|
139
140
|
if [[ -n "$SPRINT_YAML_FILES" ]]; then
|
|
140
141
|
echo "Sprint YAML files staged for commit:"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
# Shim: delegates to Python CLI via uv run (dogfooding) or global pf (consumer).
|
|
3
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
4
|
+
exec_pf hooks pre-edit-check
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
# Shim: delegates to Python CLI via uv run (dogfooding) or global pf (consumer).
|
|
3
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
4
|
+
exec_pf hooks reflector-check
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
# Shim: delegates to Python CLI via uv run (dogfooding) or global pf (consumer).
|
|
3
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
4
|
+
exec_pf hooks schema-validation
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
# Shim: delegates to Python CLI via uv run — no global pf install needed.
|
|
3
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
4
|
+
exec_pf hooks session-start
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
# Shim: delegates to Python CLI via uv run — no global pf install needed.
|
|
3
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
4
|
+
exec_pf hooks session-stop
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
# Shim: delegates to Python CLI via uv run — no global pf install needed.
|
|
3
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
4
|
+
exec_pf hooks sprint-yaml
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
exec pf hooks session-start
|
|
2
|
+
# Shim: delegates to Python CLI via uv run — no global pf install needed.
|
|
3
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
4
|
+
exec_pf hooks session-start
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Resolve CLAUDE_PROJECT_DIR in any context (hooks, Bash tool, subshells).
|
|
3
|
+
#
|
|
4
|
+
# Claude Code sets CLAUDE_PROJECT_DIR for hook execution but NOT for the
|
|
5
|
+
# Bash tool environment. This script fills the gap by walking up from PWD
|
|
6
|
+
# to find .pennyfarthing/, mirroring find-root.sh's fallback strategy.
|
|
7
|
+
#
|
|
8
|
+
# Usage:
|
|
9
|
+
# source .pennyfarthing/scripts/lib/env.sh # relative (Bash tool)
|
|
10
|
+
# source "$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/lib/env.sh" # hooks (already set)
|
|
11
|
+
#
|
|
12
|
+
# After sourcing, CLAUDE_PROJECT_DIR is exported and safe to use.
|
|
13
|
+
|
|
14
|
+
if [[ -z "${CLAUDE_PROJECT_DIR:-}" ]]; then
|
|
15
|
+
_d="$PWD"
|
|
16
|
+
while [[ ! -d "$_d/.pennyfarthing" ]] && [[ "$_d" != "/" ]]; do
|
|
17
|
+
_d="$(dirname "$_d")"
|
|
18
|
+
done
|
|
19
|
+
if [[ -d "$_d/.pennyfarthing" ]]; then
|
|
20
|
+
# Guard against nested .pennyfarthing (e.g., inlined child repo).
|
|
21
|
+
# If the found dir sits inside a parent that also has .pennyfarthing/,
|
|
22
|
+
# prefer the parent (outermost project root).
|
|
23
|
+
_parent="$(dirname "$_d")"
|
|
24
|
+
while [[ "$_parent" != "/" ]]; do
|
|
25
|
+
if [[ -d "$_parent/.pennyfarthing" ]]; then
|
|
26
|
+
_d="$_parent"
|
|
27
|
+
fi
|
|
28
|
+
_parent="$(dirname "$_parent")"
|
|
29
|
+
done
|
|
30
|
+
unset _parent
|
|
31
|
+
export CLAUDE_PROJECT_DIR="$_d"
|
|
32
|
+
fi
|
|
33
|
+
unset _d
|
|
34
|
+
fi
|
|
@@ -29,6 +29,11 @@ if [[ -n "$_caller_script" ]]; then
|
|
|
29
29
|
_pkg="${_pkg%/.pennyfarthing}"
|
|
30
30
|
if [[ "$_pkg" == */node_modules/* ]]; then
|
|
31
31
|
PROJECT_ROOT="${_pkg%/node_modules/*}"
|
|
32
|
+
elif [[ -d "$_pkg/.pennyfarthing" ]]; then
|
|
33
|
+
PROJECT_ROOT="$_pkg"
|
|
34
|
+
elif [[ -d "$_pkg/../.pennyfarthing" ]]; then
|
|
35
|
+
# Dogfooding: pennyfarthing/ inlined inside orchestrator
|
|
36
|
+
PROJECT_ROOT="$(cd "$_pkg/.." && pwd -P)"
|
|
32
37
|
else
|
|
33
38
|
PROJECT_ROOT="$_pkg"
|
|
34
39
|
fi
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Shared utility: Run the `pf` CLI via uv run — no global install needed.
|
|
3
|
+
#
|
|
4
|
+
# Resolution order for pyproject.toml:
|
|
5
|
+
# 1. Dogfooding: $PROJECT_ROOT/pennyfarthing/pyproject.toml (inlined repo)
|
|
6
|
+
# 2. Consumer: $PROJECT_ROOT/pyproject.toml (project declares dependency)
|
|
7
|
+
#
|
|
8
|
+
# Usage from hook shims:
|
|
9
|
+
# source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
10
|
+
# exec_pf hooks session-start
|
|
11
|
+
|
|
12
|
+
# Resolve PROJECT_ROOT if not already set
|
|
13
|
+
_lib_dir="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd -P)"
|
|
14
|
+
source "$_lib_dir/find-root.sh"
|
|
15
|
+
|
|
16
|
+
# Find the pyproject.toml that provides pennyfarthing-scripts
|
|
17
|
+
_pf_project=""
|
|
18
|
+
if [[ -f "$PROJECT_ROOT/pennyfarthing/pyproject.toml" ]]; then
|
|
19
|
+
# Dogfooding: inlined framework repo
|
|
20
|
+
_pf_project="$PROJECT_ROOT/pennyfarthing"
|
|
21
|
+
elif [[ -f "$PROJECT_ROOT/pyproject.toml" ]]; then
|
|
22
|
+
# Consumer: project-level pyproject.toml with pennyfarthing-scripts dep
|
|
23
|
+
_pf_project="$PROJECT_ROOT"
|
|
24
|
+
elif [[ -f "$PROJECT_ROOT/.pennyfarthing/pyproject.toml" ]]; then
|
|
25
|
+
# Consumer: auto-generated by pennyfarthing init
|
|
26
|
+
_pf_project="$PROJECT_ROOT/.pennyfarthing"
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
if [[ -z "$_pf_project" ]]; then
|
|
30
|
+
echo "Error: No pyproject.toml found for pennyfarthing-scripts" >&2
|
|
31
|
+
echo "Expected: $PROJECT_ROOT/pennyfarthing/pyproject.toml (dogfooding)" >&2
|
|
32
|
+
echo " or: $PROJECT_ROOT/pyproject.toml (consumer)" >&2
|
|
33
|
+
echo " or: $PROJECT_ROOT/.pennyfarthing/pyproject.toml (auto-generated)" >&2
|
|
34
|
+
exit 1
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
run_pf() {
|
|
38
|
+
uv run --project "$_pf_project" pf "$@"
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
exec_pf() {
|
|
42
|
+
exec uv run --project "$_pf_project" pf "$@"
|
|
43
|
+
}
|
|
@@ -9,7 +9,7 @@ Uncategorized utilities and one-off scripts.
|
|
|
9
9
|
| `deploy.sh` | Deployment script |
|
|
10
10
|
| `doctor-dogfood.sh` | Health check for framework/orchestrator development setup |
|
|
11
11
|
| `run-ci.sh` | Run CI locally |
|
|
12
|
-
| `pf hooks statusline` | Status line configuration |
|
|
12
|
+
| `pf.sh hooks statusline` | Status line configuration |
|
|
13
13
|
| `uninstall.sh` | Uninstall Pennyfarthing from project |
|
|
14
14
|
| `backlog.sh` | Backlog operations |
|
|
15
15
|
| `repo-utils.sh` | Multi-repo utilities |
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
# Shim: delegates to Python CLI via uv run — no global pf install needed.
|
|
3
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
4
|
+
exec_pf hooks statusline
|
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
# Sprint Scripts
|
|
2
2
|
|
|
3
|
-
Sprint management is handled by the Python CLI: `pf sprint [COMMAND]`.
|
|
3
|
+
Sprint management is handled by the Python CLI: `pf.sh sprint [COMMAND]`.
|
|
4
4
|
|
|
5
5
|
## Commands
|
|
6
6
|
|
|
7
7
|
| Command | Purpose |
|
|
8
8
|
|---------|---------|
|
|
9
|
-
| `pf sprint status` | Show current sprint status and metrics |
|
|
10
|
-
| `pf sprint backlog` | List available stories grouped by epic |
|
|
11
|
-
| `pf sprint info` | Sprint info as JSON (for Cyclist sidebar) |
|
|
12
|
-
| `pf sprint metrics` | Sprint velocity and progress metrics |
|
|
13
|
-
| `pf sprint check <id>` | Check story/epic availability (JSON) |
|
|
14
|
-
| `pf sprint future` | Show future initiatives and epics |
|
|
15
|
-
| `pf sprint new` | Initialize a new sprint |
|
|
16
|
-
| `pf sprint validate <file>` | Validate sprint YAML structure |
|
|
17
|
-
| `pf sprint archive <id>` | Archive a completed story |
|
|
18
|
-
| `pf sprint work <id>` | Start work on a story |
|
|
19
|
-
| `pf sprint story field <id> <field>` | Get a story field value |
|
|
20
|
-
| `pf sprint epic field <id> <field>` | Get an epic field value |
|
|
21
|
-
| `pf sprint epic promote <id>` | Move epic from future to current sprint |
|
|
22
|
-
| `pf sprint epic show <id>` | Show epic details |
|
|
23
|
-
| `pf sprint epic cancel <id>` | Cancel an epic |
|
|
24
|
-
| `pf sprint epic archive` | Archive completed epics |
|
|
9
|
+
| `pf.sh sprint status` | Show current sprint status and metrics |
|
|
10
|
+
| `pf.sh sprint backlog` | List available stories grouped by epic |
|
|
11
|
+
| `pf.sh sprint info` | Sprint info as JSON (for Cyclist sidebar) |
|
|
12
|
+
| `pf.sh sprint metrics` | Sprint velocity and progress metrics |
|
|
13
|
+
| `pf.sh sprint check <id>` | Check story/epic availability (JSON) |
|
|
14
|
+
| `pf.sh sprint future` | Show future initiatives and epics |
|
|
15
|
+
| `pf.sh sprint new` | Initialize a new sprint |
|
|
16
|
+
| `pf.sh sprint validate <file>` | Validate sprint YAML structure |
|
|
17
|
+
| `pf.sh sprint archive <id>` | Archive a completed story |
|
|
18
|
+
| `pf.sh sprint work <id>` | Start work on a story |
|
|
19
|
+
| `pf.sh sprint story field <id> <field>` | Get a story field value |
|
|
20
|
+
| `pf.sh sprint epic field <id> <field>` | Get an epic field value |
|
|
21
|
+
| `pf.sh sprint epic promote <id>` | Move epic from future to current sprint |
|
|
22
|
+
| `pf.sh sprint epic show <id>` | Show epic details |
|
|
23
|
+
| `pf.sh sprint epic cancel <id>` | Cancel an epic |
|
|
24
|
+
| `pf.sh sprint epic archive` | Archive completed epics |
|
|
25
25
|
|
|
26
26
|
## Usage
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
pf sprint status
|
|
30
|
-
pf sprint backlog
|
|
31
|
-
pf sprint future epic-55
|
|
32
|
-
pf sprint epic promote epic-41
|
|
29
|
+
pf.sh sprint status
|
|
30
|
+
pf.sh sprint backlog
|
|
31
|
+
pf.sh sprint future epic-55
|
|
32
|
+
pf.sh sprint epic promote epic-41
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
## Ownership
|
|
@@ -6,7 +6,7 @@ Scripts for workflow mechanics, phase transitions, and quality gates.
|
|
|
6
6
|
|
|
7
7
|
| Script | Purpose |
|
|
8
8
|
|--------|---------|
|
|
9
|
-
| `finish-story.sh` | **DEPRECATED** — forwards to `pf sprint story finish` |
|
|
9
|
+
| `finish-story.sh` | **DEPRECATED** — forwards to `pf.sh sprint story finish` |
|
|
10
10
|
| `fix-session-phase.sh` | Repair session file phase state |
|
|
11
11
|
| `check.sh` | Quality gates runner (lint, type check, tests) |
|
|
12
12
|
| `list-workflows.sh` | List available workflows |
|
|
@@ -18,7 +18,7 @@ Scripts for workflow mechanics, phase transitions, and quality gates.
|
|
|
18
18
|
## Usage
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
|
-
pf sprint story finish MSSCI-12345
|
|
21
|
+
pf.sh sprint story finish MSSCI-12345
|
|
22
22
|
.pennyfarthing/scripts/workflow/start-workflow.sh prd --mode create
|
|
23
23
|
```
|
|
24
24
|
|
|
@@ -1,20 +1,6 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
# DEPRECATED: Use `pf sprint story finish` instead.
|
|
3
|
-
#
|
|
4
|
-
# This shell script had a bug where yq paths targeted .epics[].stories[]
|
|
5
|
-
# but the sprint YAML uses sharded epic files with .stories[] at root.
|
|
6
|
-
# The Python implementation (pennyfarthing_scripts.sprint.story_finish)
|
|
7
|
-
# correctly handles sharded YAML via read_sprint/write_sprint.
|
|
8
|
-
#
|
|
9
|
-
# Usage: finish-story.sh <story-id> [--dry-run]
|
|
10
|
-
|
|
11
3
|
set -euo pipefail
|
|
12
|
-
|
|
13
4
|
echo "DEPRECATED: finish-story.sh is deprecated. Forwarding to 'pf sprint story finish'." >&2
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
for arg in "$@"; do
|
|
17
|
-
ARGS+=("$arg")
|
|
18
|
-
done
|
|
19
|
-
|
|
20
|
-
exec pf sprint story finish "${ARGS[@]}"
|
|
5
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
6
|
+
exec_pf sprint story finish "$@"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#!/bin/bash
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
2
|
# DEPRECATED: Use `pf workflow fix-phase` instead.
|
|
3
|
-
# This shim forwards to the Python CLI for backward compatibility.
|
|
4
3
|
echo "Warning: fix-session-phase.sh is deprecated. Use: pf workflow fix-phase $*" >&2
|
|
5
|
-
|
|
4
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
5
|
+
exec_pf workflow fix-phase "$@"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#!/bin/bash
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
2
|
# DEPRECATED: Use `pf workflow type` instead.
|
|
3
|
-
# This shim forwards to the Python CLI for backward compatibility.
|
|
4
3
|
echo "Warning: get-workflow-type.sh is deprecated. Use: pf workflow type $*" >&2
|
|
5
|
-
|
|
4
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
5
|
+
exec_pf workflow type "$@"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#!/bin/bash
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
2
|
# DEPRECATED: Use `pf workflow list` instead.
|
|
3
|
-
# This shim forwards to the Python CLI for backward compatibility.
|
|
4
3
|
echo "Warning: list-workflows.sh is deprecated. Use: pf workflow list" >&2
|
|
5
|
-
|
|
4
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
5
|
+
exec_pf workflow list "$@"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#!/bin/bash
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
2
|
# DEPRECATED: Use `pf workflow phase-check` instead.
|
|
3
|
-
# This shim forwards to the Python CLI for backward compatibility.
|
|
4
3
|
echo "Warning: phase-owner.sh is deprecated. Use: pf workflow phase-check $*" >&2
|
|
5
|
-
|
|
4
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
5
|
+
exec_pf workflow phase-check "$@"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#!/bin/bash
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
2
|
# DEPRECATED: Use `pf workflow resume` instead.
|
|
3
|
-
# This shim forwards to the Python CLI for backward compatibility.
|
|
4
3
|
echo "Warning: resume-workflow.sh is deprecated. Use: pf workflow resume $*" >&2
|
|
5
|
-
|
|
4
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
5
|
+
exec_pf workflow resume "$@"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#!/bin/bash
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
2
|
# DEPRECATED: Use `pf workflow show` instead.
|
|
3
|
-
# This shim forwards to the Python CLI for backward compatibility.
|
|
4
3
|
echo "Warning: show-workflow.sh is deprecated. Use: pf workflow show $*" >&2
|
|
5
|
-
|
|
4
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
5
|
+
exec_pf workflow show "$@"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#!/bin/bash
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
2
|
# DEPRECATED: Use `pf workflow start` instead.
|
|
3
|
-
# This shim forwards to the Python CLI for backward compatibility.
|
|
4
3
|
echo "Warning: start-workflow.sh is deprecated. Use: pf workflow start $*" >&2
|
|
5
|
-
|
|
4
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
5
|
+
exec_pf workflow start "$@"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#!/bin/bash
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
2
|
# DEPRECATED: Use `pf workflow status` instead.
|
|
3
|
-
# This shim forwards to the Python CLI for backward compatibility.
|
|
4
3
|
echo "Warning: workflow-status.sh is deprecated. Use: pf workflow status $*" >&2
|
|
5
|
-
|
|
4
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
5
|
+
exec_pf workflow status "$@"
|
|
@@ -4,80 +4,80 @@
|
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
6
|
# Focus on Sprint panel
|
|
7
|
-
pf bc sprint
|
|
7
|
+
pf.sh bc sprint
|
|
8
8
|
|
|
9
9
|
# Focus on Diffs panel
|
|
10
|
-
pf bc diffs
|
|
10
|
+
pf.sh bc diffs
|
|
11
11
|
|
|
12
12
|
# Focus on Acceptance Criteria
|
|
13
|
-
pf bc ac
|
|
13
|
+
pf.sh bc ac
|
|
14
14
|
|
|
15
15
|
# Focus on Git panel
|
|
16
|
-
pf bc git
|
|
16
|
+
pf.sh bc git
|
|
17
17
|
|
|
18
18
|
# Preview without changing
|
|
19
|
-
pf bc sprint --dry-run
|
|
19
|
+
pf.sh bc sprint --dry-run
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
## Clearing Focus
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
25
|
# Remove focus setting
|
|
26
|
-
pf bc reset
|
|
26
|
+
pf.sh bc reset
|
|
27
27
|
|
|
28
28
|
# Preview
|
|
29
|
-
pf bc reset --dry-run
|
|
29
|
+
pf.sh bc reset --dry-run
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
## Named Layouts
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
35
|
# Save current layout as "normal"
|
|
36
|
-
pf bc save normal
|
|
36
|
+
pf.sh bc save normal
|
|
37
37
|
|
|
38
38
|
# Save current layout as "review"
|
|
39
|
-
pf bc save review
|
|
39
|
+
pf.sh bc save review
|
|
40
40
|
|
|
41
41
|
# Save current layout as "debug"
|
|
42
|
-
pf bc save debug
|
|
42
|
+
pf.sh bc save debug
|
|
43
43
|
|
|
44
44
|
# List all saved layouts
|
|
45
|
-
pf bc list
|
|
45
|
+
pf.sh bc list
|
|
46
46
|
|
|
47
47
|
# Switch to review layout
|
|
48
|
-
pf bc load review
|
|
48
|
+
pf.sh bc load review
|
|
49
49
|
|
|
50
50
|
# Switch back to normal
|
|
51
|
-
pf bc load normal
|
|
51
|
+
pf.sh bc load normal
|
|
52
52
|
|
|
53
53
|
# Delete a specific layout
|
|
54
|
-
pf bc clear review
|
|
54
|
+
pf.sh bc clear review
|
|
55
55
|
|
|
56
56
|
# Delete all layouts
|
|
57
|
-
pf bc clear-all
|
|
57
|
+
pf.sh bc clear-all
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
## Common Workflows
|
|
61
61
|
|
|
62
62
|
### During code review
|
|
63
63
|
```bash
|
|
64
|
-
pf bc save normal # Save current layout first
|
|
65
|
-
pf bc diffs # Focus on diffs
|
|
64
|
+
pf.sh bc save normal # Save current layout first
|
|
65
|
+
pf.sh bc diffs # Focus on diffs
|
|
66
66
|
# ... do review ...
|
|
67
|
-
pf bc load normal # Restore normal layout
|
|
67
|
+
pf.sh bc load normal # Restore normal layout
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
### Debugging session
|
|
71
71
|
```bash
|
|
72
|
-
pf bc save normal
|
|
73
|
-
pf bc debug # Focus debug panel
|
|
72
|
+
pf.sh bc save normal
|
|
73
|
+
pf.sh bc debug # Focus debug panel
|
|
74
74
|
# ... debug ...
|
|
75
|
-
pf bc reset # Clear focus
|
|
75
|
+
pf.sh bc reset # Clear focus
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
### Sprint planning
|
|
79
79
|
```bash
|
|
80
|
-
pf bc sprint # Focus sprint panel
|
|
80
|
+
pf.sh bc sprint # Focus sprint panel
|
|
81
81
|
# ... review backlog ...
|
|
82
|
-
pf bc reset
|
|
82
|
+
pf.sh bc reset
|
|
83
83
|
```
|
|
@@ -16,28 +16,28 @@ Set or clear the focused panel in Cyclist/BikeRack. Save and restore named layou
|
|
|
16
16
|
|
|
17
17
|
| Command | CLI | Purpose |
|
|
18
18
|
|---------|-----|---------|
|
|
19
|
-
| `/bc sprint` | `pf bc sprint [--dry-run]` | Focus Sprint panel |
|
|
20
|
-
| `/bc git` | `pf bc git [--dry-run]` | Focus Git panel |
|
|
21
|
-
| `/bc diffs` | `pf bc diffs [--dry-run]` | Focus Diffs panel |
|
|
22
|
-
| `/bc todo` | `pf bc todo [--dry-run]` | Focus Todo panel |
|
|
23
|
-
| `/bc workflow` | `pf bc workflow [--dry-run]` | Focus Workflow panel |
|
|
24
|
-
| `/bc background` | `pf bc background [--dry-run]` | Focus Background panel |
|
|
25
|
-
| `/bc audit-log` | `pf bc audit-log [--dry-run]` | Focus Audit Log panel |
|
|
26
|
-
| `/bc changed` | `pf bc changed [--dry-run]` | Focus Changed panel |
|
|
27
|
-
| `/bc ac` | `pf bc ac [--dry-run]` | Focus Acceptance Criteria panel |
|
|
28
|
-
| `/bc debug` | `pf bc debug [--dry-run]` | Focus Debug panel |
|
|
29
|
-
| `/bc settings` | `pf bc settings [--dry-run]` | Focus Settings panel |
|
|
30
|
-
| `/bc reset` | `pf bc reset [--dry-run]` | Clear focus setting |
|
|
19
|
+
| `/bc sprint` | `pf.sh bc sprint [--dry-run]` | Focus Sprint panel |
|
|
20
|
+
| `/bc git` | `pf.sh bc git [--dry-run]` | Focus Git panel |
|
|
21
|
+
| `/bc diffs` | `pf.sh bc diffs [--dry-run]` | Focus Diffs panel |
|
|
22
|
+
| `/bc todo` | `pf.sh bc todo [--dry-run]` | Focus Todo panel |
|
|
23
|
+
| `/bc workflow` | `pf.sh bc workflow [--dry-run]` | Focus Workflow panel |
|
|
24
|
+
| `/bc background` | `pf.sh bc background [--dry-run]` | Focus Background panel |
|
|
25
|
+
| `/bc audit-log` | `pf.sh bc audit-log [--dry-run]` | Focus Audit Log panel |
|
|
26
|
+
| `/bc changed` | `pf.sh bc changed [--dry-run]` | Focus Changed panel |
|
|
27
|
+
| `/bc ac` | `pf.sh bc ac [--dry-run]` | Focus Acceptance Criteria panel |
|
|
28
|
+
| `/bc debug` | `pf.sh bc debug [--dry-run]` | Focus Debug panel |
|
|
29
|
+
| `/bc settings` | `pf.sh bc settings [--dry-run]` | Focus Settings panel |
|
|
30
|
+
| `/bc reset` | `pf.sh bc reset [--dry-run]` | Clear focus setting |
|
|
31
31
|
|
|
32
32
|
### Named Layouts
|
|
33
33
|
|
|
34
34
|
| Command | CLI | Purpose |
|
|
35
35
|
|---------|-----|---------|
|
|
36
|
-
| `/bc save <name>` | `pf bc save <name> [--dry-run]` | Save current layout from running server |
|
|
37
|
-
| `/bc load <name>` | `pf bc load <name> [--dry-run]` | Load a saved layout |
|
|
38
|
-
| `/bc list` | `pf bc list` | List all saved layouts |
|
|
39
|
-
| `/bc clear <name>` | `pf bc clear <name> [--dry-run]` | Delete a saved layout |
|
|
40
|
-
| `/bc clear-all` | `pf bc clear-all [--dry-run]` | Delete all saved layouts |
|
|
36
|
+
| `/bc save <name>` | `pf.sh bc save <name> [--dry-run]` | Save current layout from running server |
|
|
37
|
+
| `/bc load <name>` | `pf.sh bc load <name> [--dry-run]` | Load a saved layout |
|
|
38
|
+
| `/bc list` | `pf.sh bc list` | List all saved layouts |
|
|
39
|
+
| `/bc clear <name>` | `pf.sh bc clear <name> [--dry-run]` | Delete a saved layout |
|
|
40
|
+
| `/bc clear-all` | `pf.sh bc clear-all [--dry-run]` | Delete all saved layouts |
|
|
41
41
|
|
|
42
42
|
### Notes
|
|
43
43
|
|