@pennyfarthing/core 11.2.1 → 11.2.2
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 +100 -40
- package/package.json +1 -1
- package/packages/core/dist/cli/commands/doctor.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/doctor.js +121 -28
- package/packages/core/dist/cli/commands/doctor.js.map +1 -1
- 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 +31 -26
- package/packages/core/dist/cli/utils/settings.js.map +1 -1
- 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 +13 -0
- package/packages/core/dist/server/settings.js.map +1 -1
- package/packages/core/dist/workflow/team-lifecycle.d.ts +169 -0
- package/packages/core/dist/workflow/team-lifecycle.d.ts.map +1 -0
- package/packages/core/dist/workflow/team-lifecycle.js +217 -0
- package/packages/core/dist/workflow/team-lifecycle.js.map +1 -0
- package/packages/core/dist/workflow/team-lifecycle.test.d.ts +20 -0
- package/packages/core/dist/workflow/team-lifecycle.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/team-lifecycle.test.js +966 -0
- package/packages/core/dist/workflow/team-lifecycle.test.js.map +1 -0
- 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 +15 -2
- 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 +12 -12
- 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 +1 -1
- 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/guides/agent-behavior.md +70 -19
- 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 +3 -3
- 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/run-pf.sh +39 -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-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 +19 -19
- package/pennyfarthing-dist/templates/settings.local.json.template +11 -11
- package/pennyfarthing-dist/workflows/bdd-team.yaml +89 -0
- 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/project-setup/steps/step-01-discover.md +47 -0
- package/pennyfarthing-dist/workflows/tdd-team.yaml +80 -0
- package/pennyfarthing_scripts/__init__.py +1 -1
- package/pennyfarthing_scripts/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/bellmode_hook.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/config.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/context.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/hooks.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/jira_bidirectional_sync.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/jira_epic_creation.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/jira_sync.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/jira_sync_story.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/output.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/patch_mode.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/pretooluse_hook.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/schema_validation_hook.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/session_start_hook.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/workflow.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bc/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bc/__pycache__/cli.cpython-314.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 +2 -2
- package/pennyfarthing_scripts/bellmode_hook.py +2 -5
- package/pennyfarthing_scripts/bikerack/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/__main__.cpython-314.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-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-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/portrait.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/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 +12 -2
- package/pennyfarthing_scripts/bikerack/ws_client.py +2 -2
- package/pennyfarthing_scripts/brownfield/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/brownfield/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/brownfield/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/brownfield/__pycache__/discover.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/config.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/output.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/themes.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/config.py +29 -2
- package/pennyfarthing_scripts/complexity/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/consultation/__pycache__/__init__.cpython-314.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-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/epic/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/epic/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/gate/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/gate/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/gate/__pycache__/validate.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/git/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/git/__pycache__/create_branches.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/git/__pycache__/hooks_installer.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/git/__pycache__/repos.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/git/__pycache__/status_all.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/git/__pycache__/worktree.cpython-314.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-314.pyc +0 -0
- package/pennyfarthing_scripts/git_group/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/__init__.cpython-314.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__/gate_file.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/gate_runner.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-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__init__.py +8 -3
- package/pennyfarthing_scripts/hooks/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/bell_mode.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/context_breaker.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/context_warning.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/cyclist_pretooluse.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/pre_edit_check.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/reflector_check.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/schema_validation.cpython-314.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-314.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-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/bidirectional.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/claim.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/client.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/create.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/epic.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/operations.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/reconcile.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/story.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/sync.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/launch/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/launch/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/session.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/skill.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/step.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/validate.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/preflight/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/preflight/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/preflight/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/preflight/__pycache__/finish.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/heatmap.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/loader.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/persona.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/session.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/tiers.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/version_sentinel.cpython-314.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-314.pyc +0 -0
- package/pennyfarthing_scripts/session/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/archive.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/archive_epic.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/epic_add.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/epic_update.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/import_epic.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/status.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_add.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_finish.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_update.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/validate_cmd.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/validator.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/work.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/yaml_io.cpython-314.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/story/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__pycache__/create.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__pycache__/size.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__pycache__/template.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/conftest.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_108_2_remove_handoff_fallback.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_archive_epic.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_bc.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_bikerack.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_brownfield.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_cli_modules.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_cli_normalization.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_codemarkers.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_common.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_epic_shard_validation.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_gate_file_resolution.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_gate_runner.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_git_utils.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_handoff_cli.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_handoff_e2e.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_healthscore.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_jira_package.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_package_structure.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_patch_mode.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_prime.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_resolve_gate_file_field.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_sprint_package.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_sprint_panel.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_sprint_validator.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_story_add.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_story_package.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_story_update.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_tiers.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_token_counting.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_topology_loader.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/__pycache__/test_validate_cmd.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_version_sentinel.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_workflow_check.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_workflow_list_team.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_yaml_io.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/test_bikerack.py +26 -26
- package/pennyfarthing_scripts/tests/test_dialogue_manager.py +0 -1
- package/pennyfarthing_scripts/tests/test_workflow_list_team.py +147 -0
- package/pennyfarthing_scripts/theme/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/theme/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/agent.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/schema.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/skill_command.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/sprint.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/tandem_awareness.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/team_mode.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/workflow.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/team_mode.py +323 -0
- package/pennyfarthing_scripts/workflow/__pycache__/__init__.cpython-314.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-314.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/state.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/team_lifecycle.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
- package/packages/core/dist/cli/cyclist-migration.test.d.ts +0 -16
- package/packages/core/dist/cli/cyclist-migration.test.d.ts.map +0 -1
- package/packages/core/dist/cli/cyclist-migration.test.js +0 -229
- package/packages/core/dist/cli/cyclist-migration.test.js.map +0 -1
- package/packages/core/dist/scripts/benchmark-integration.d.ts +0 -182
- package/packages/core/dist/scripts/benchmark-integration.d.ts.map +0 -1
- package/packages/core/dist/scripts/benchmark-integration.js +0 -691
- package/packages/core/dist/scripts/benchmark-integration.js.map +0 -1
- package/packages/core/dist/scripts/job-fair-aggregator.d.ts +0 -150
- package/packages/core/dist/scripts/job-fair-aggregator.d.ts.map +0 -1
- package/packages/core/dist/scripts/job-fair-aggregator.js +0 -547
- package/packages/core/dist/scripts/job-fair-aggregator.js.map +0 -1
- package/packages/core/dist/scripts/theme-detail.test.d.ts.map +0 -1
- package/packages/core/dist/scripts/theme-detail.test.js.map +0 -1
- package/pennyfarthing-dist/scripts/hooks/__pycache__/question_reflector_check.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/jira.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/sprint.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/workflow.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/consultation/__pycache__/dialogue_manager.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/compat.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/mappings.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_108_1_gate_migration.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_confidence_sm_evaluation.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_confidence_sm_gate.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_dialogue_manager.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_workflow_cli.cpython-314-pytest-9.0.2.pyc +0 -0
|
@@ -53,7 +53,7 @@ Prime selects a context tier based on session state to manage token overhead:
|
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
55
|
# From agent commands (via pf CLI)
|
|
56
|
-
pf agent start "<agent>" --quiet
|
|
56
|
+
pf.sh agent start "<agent>" --quiet
|
|
57
57
|
|
|
58
58
|
# TypeScript API (from Cyclist)
|
|
59
59
|
getPrimeContext(agentName, projectDir)
|
|
@@ -63,7 +63,7 @@ getPrimeContextJson(agentName, projectDir, tier) # JSON for Cyclist
|
|
|
63
63
|
|
|
64
64
|
## Integration Points
|
|
65
65
|
|
|
66
|
-
- **Agent commands** (`/sm`, `/dev`, `/tea`) invoke prime on activation
|
|
66
|
+
- **Agent commands** (`/pf-sm`, `/pf-dev`, `/pf-tea`) invoke prime on activation
|
|
67
67
|
- **TirePump** calls prime to reload agent context after clearing
|
|
68
68
|
- **Cyclist** uses JSON output for context display and token tracking
|
|
69
69
|
|
|
@@ -41,7 +41,7 @@ Marker pattern: /<!--\s*CYCLIST:(\w+)(?::([^>]+?))?\s*-->/gi
|
|
|
41
41
|
| `packages/cyclist/src/public/components/QuickActions.tsx` | Renders action buttons from detected markers |
|
|
42
42
|
| `packages/cyclist/src/public/hooks/useMarkerActions.ts` | Detects markers, builds action metadata |
|
|
43
43
|
| `pennyfarthing-dist/scripts/hooks/question_reflector_check.py` | Stop hook — enforces marker presence |
|
|
44
|
-
| `pf hooks reflector-check` | CLI entry point for stop hook |
|
|
44
|
+
| `pf.sh hooks reflector-check` | CLI entry point for stop hook |
|
|
45
45
|
|
|
46
46
|
## Enforcement Hook
|
|
47
47
|
|
|
@@ -146,7 +146,7 @@ args: "[arg1|arg2]" # Optional: argument summary
|
|
|
146
146
|
**Example:**
|
|
147
147
|
```xml
|
|
148
148
|
<run>
|
|
149
|
-
pf sprint status [filter]
|
|
149
|
+
pf.sh sprint status [filter]
|
|
150
150
|
</run>
|
|
151
151
|
```
|
|
152
152
|
|
|
@@ -195,7 +195,7 @@ pf sprint status [filter]
|
|
|
195
195
|
**Example:**
|
|
196
196
|
```xml
|
|
197
197
|
<example>
|
|
198
|
-
pf sprint check MSSCI-12038
|
|
198
|
+
pf.sh sprint check MSSCI-12038
|
|
199
199
|
# Returns: {"type": "story", "available": true, "title": "...", ...}
|
|
200
200
|
</example>
|
|
201
201
|
```
|
|
@@ -292,7 +292,7 @@ Never manually edit sprint YAML. Use the provided commands.
|
|
|
292
292
|
Add a new story to an epic.
|
|
293
293
|
|
|
294
294
|
<run>
|
|
295
|
-
pf sprint story add <epic-id> "<title>" <points>
|
|
295
|
+
pf.sh sprint story add <epic-id> "<title>" <points>
|
|
296
296
|
</run>
|
|
297
297
|
|
|
298
298
|
<args>
|
|
@@ -304,7 +304,7 @@ pf sprint story add <epic-id> "<title>" <points>
|
|
|
304
304
|
</args>
|
|
305
305
|
|
|
306
306
|
<example>
|
|
307
|
-
pf sprint story add epic-76 "Add user authentication" 3
|
|
307
|
+
pf.sh sprint story add epic-76 "Add user authentication" 3
|
|
308
308
|
</example>
|
|
309
309
|
|
|
310
310
|
<output>
|
|
@@ -322,7 +322,7 @@ After creating, use `/pf-sprint story size` for sizing guidelines.
|
|
|
322
322
|
Complete a story after PR merge.
|
|
323
323
|
|
|
324
324
|
<run>
|
|
325
|
-
pf sprint story finish <story-id>
|
|
325
|
+
pf.sh sprint story finish <story-id>
|
|
326
326
|
</run>
|
|
327
327
|
|
|
328
328
|
<args>
|
|
@@ -332,7 +332,7 @@ pf sprint story finish <story-id>
|
|
|
332
332
|
</args>
|
|
333
333
|
|
|
334
334
|
<example>
|
|
335
|
-
pf sprint story finish MSSCI-12052
|
|
335
|
+
pf.sh sprint story finish MSSCI-12052
|
|
336
336
|
# Archives story, updates Jira, cleans session files
|
|
337
337
|
</example>
|
|
338
338
|
|
|
@@ -13,7 +13,7 @@ Primary Agent (Opus) Backseat Agent (Haiku, background)
|
|
|
13
13
|
│ │ .session/{story}-tandem-{partner}.md
|
|
14
14
|
│ │
|
|
15
15
|
├── PostToolUse hook fires ────┤
|
|
16
|
-
│ pf hooks bell-mode detects │
|
|
16
|
+
│ pf.sh hooks bell-mode detects │
|
|
17
17
|
│ new observation, injects │
|
|
18
18
|
│ "[Tandem] Character: ..." │
|
|
19
19
|
│ │
|
|
@@ -163,8 +163,8 @@ For active, synchronous agent-to-agent questions (as opposed to passive observat
|
|
|
163
163
|
| `observation-writer.ts` | Built | TypeScript API for observation file I/O |
|
|
164
164
|
| `file-watch.ts` | Built | File system change detection |
|
|
165
165
|
| `tool-watch.ts` | Built | Tool call log monitoring |
|
|
166
|
-
| `pf hooks bell-mode` | Built | PostToolUse hook with tandem injection |
|
|
166
|
+
| `pf.sh hooks bell-mode` | Built | PostToolUse hook with tandem injection |
|
|
167
167
|
| `bellmode_hook.py` | Built | Python implementation of bell mode hook |
|
|
168
|
-
| `pf hooks statusline` | Built | CLI statusline with tandem indicator |
|
|
168
|
+
| `pf.sh hooks statusline` | Built | CLI statusline with tandem indicator |
|
|
169
169
|
| `tandem-backseat.md` | Built | Backseat agent prompt template |
|
|
170
170
|
| `agent-behavior.md` | Built | Shared agent behavior with tandem protocol |
|
|
@@ -253,5 +253,5 @@ Error: workflow.triggers.points min (10) cannot be greater than max (5)
|
|
|
253
253
|
|
|
254
254
|
- Story 31-2: Workflow loader and validator
|
|
255
255
|
- Story 31-3: Story-to-workflow routing engine
|
|
256
|
-
- Story 31-5: /workflow skill for listing and switching
|
|
256
|
+
- Story 31-5: /pf-workflow skill for listing and switching
|
|
257
257
|
- Story MSSCI-11710: Permission presets by workflow
|
|
@@ -86,8 +86,8 @@ Ports are stored in the session file and passed to agents.
|
|
|
86
86
|
| Command | Purpose |
|
|
87
87
|
|---------|---------|
|
|
88
88
|
| `/pf-session parallel` | Start a new parallel work session |
|
|
89
|
-
| `pf git worktree list` | Show active worktrees |
|
|
90
|
-
| `pf git worktree remove <name>` | Clean up a worktree |
|
|
89
|
+
| `pf.sh git worktree list` | Show active worktrees |
|
|
90
|
+
| `pf.sh git worktree remove <name>` | Clean up a worktree |
|
|
91
91
|
|
|
92
92
|
## TDD Flow in Worktrees
|
|
93
93
|
|
|
@@ -104,7 +104,7 @@ Agents use worktree paths from session file for all operations.
|
|
|
104
104
|
When story is complete, SM archives the session and the worktree can be removed:
|
|
105
105
|
|
|
106
106
|
```bash
|
|
107
|
-
pf git worktree remove wt-5-3a
|
|
107
|
+
pf.sh git worktree remove wt-5-3a
|
|
108
108
|
```
|
|
109
109
|
|
|
110
110
|
This removes:
|
|
@@ -124,7 +124,7 @@ Tags used by agents participating in the TDD workflow cycle (SM, TEA, Dev, Revie
|
|
|
124
124
|
|
|
125
125
|
**Purpose:** Verify agent owns the current workflow phase before proceeding. Prevents agents from acting on stories they shouldn't own.
|
|
126
126
|
|
|
127
|
-
**Usage:** SM, TEA, Dev, Reviewer - runs `pf workflow phase-check` on activation to determine correct owner.
|
|
127
|
+
**Usage:** SM, TEA, Dev, Reviewer - runs `pf.sh workflow phase-check` on activation to determine correct owner.
|
|
128
128
|
|
|
129
129
|
```markdown
|
|
130
130
|
<phase-check>
|
|
@@ -132,10 +132,10 @@ Tags used by agents participating in the TDD workflow cycle (SM, TEA, Dev, Revie
|
|
|
132
132
|
|
|
133
133
|
Read `**Workflow:**` and `**Phase:**` from session. Query:
|
|
134
134
|
```bash
|
|
135
|
-
OWNER=$(pf workflow phase-check {workflow} {phase})
|
|
135
|
+
OWNER=$("$CLAUDE_PROJECT_DIR"/.pennyfarthing/scripts/core/pf.sh workflow phase-check {workflow} {phase})
|
|
136
136
|
```
|
|
137
137
|
|
|
138
|
-
**If OWNER != "dev":** Run `pf handoff marker $OWNER`, output result, tell user.
|
|
138
|
+
**If OWNER != "dev":** Run `pf.sh handoff marker $OWNER`, output result, tell user.
|
|
139
139
|
</phase-check>
|
|
140
140
|
```
|
|
141
141
|
|
|
@@ -150,9 +150,9 @@ OWNER=$(pf workflow phase-check {workflow} {phase})
|
|
|
150
150
|
## MANDATORY: Complete Before Exiting
|
|
151
151
|
|
|
152
152
|
- [ ] Write Assessment to session file
|
|
153
|
-
- [ ] Run `pf handoff resolve-gate` — verify gate status
|
|
154
|
-
- [ ] Run `pf handoff complete-phase` — atomic session update
|
|
155
|
-
- [ ] Run `pf handoff marker {next_agent}` — emit marker and EXIT
|
|
153
|
+
- [ ] Run `pf.sh handoff resolve-gate` — verify gate status
|
|
154
|
+
- [ ] Run `pf.sh handoff complete-phase` — atomic session update
|
|
155
|
+
- [ ] Run `pf.sh handoff marker {next_agent}` — emit marker and EXIT
|
|
156
156
|
</handoff-gate>
|
|
157
157
|
```
|
|
158
158
|
|
|
@@ -448,7 +448,7 @@ Tags used in skill files (`skills/{name}/SKILL.md`) for command documentation.
|
|
|
448
448
|
|
|
449
449
|
```markdown
|
|
450
450
|
<run>
|
|
451
|
-
pf sprint status [filter]
|
|
451
|
+
pf.sh sprint status [filter]
|
|
452
452
|
</run>
|
|
453
453
|
```
|
|
454
454
|
|
|
@@ -474,7 +474,7 @@ pf sprint status [filter]
|
|
|
474
474
|
|
|
475
475
|
```markdown
|
|
476
476
|
<example>
|
|
477
|
-
pf sprint check MSSCI-12038
|
|
477
|
+
pf.sh sprint check MSSCI-12038
|
|
478
478
|
# Returns: {"type": "story", "available": true}
|
|
479
479
|
</example>
|
|
480
480
|
```
|
|
@@ -8,10 +8,10 @@ Scripts are organized into categorical subdirectories. **Full paths are required
|
|
|
8
8
|
scripts/
|
|
9
9
|
├── core/ # Essential scripts (agent-session.sh)
|
|
10
10
|
├── workflow/ # Workflow mechanics (finish-story.sh, check.sh)
|
|
11
|
-
├── sprint/ # Sprint YAML operations (migrated to pf sprint CLI)
|
|
11
|
+
├── sprint/ # Sprint YAML operations (migrated to pf.sh sprint CLI)
|
|
12
12
|
├── story/ # Story operations (create-story.sh)
|
|
13
13
|
├── jira/ # Jira integration (jira-claim-story.sh)
|
|
14
|
-
├── git/ # Git operations (deprecated shims → pf git CLI)
|
|
14
|
+
├── git/ # Git operations (deprecated shims → pf.sh git CLI)
|
|
15
15
|
├── theme/ # Theme operations (list-themes.sh)
|
|
16
16
|
├── test/ # Test infrastructure (test-setup.sh)
|
|
17
17
|
├── lib/ # Shared bash libraries (common.sh, logging.sh)
|
|
@@ -27,9 +27,9 @@ Scripts are invoked directly with **full category paths**:
|
|
|
27
27
|
```bash
|
|
28
28
|
# From project root
|
|
29
29
|
.pennyfarthing/scripts/core/agent-session.sh start sm
|
|
30
|
-
pf sprint status
|
|
30
|
+
pf.sh sprint status
|
|
31
31
|
.pennyfarthing/scripts/jira/jira-claim-story.sh MSSCI-12345
|
|
32
|
-
pf sprint story finish MSSCI-12345
|
|
32
|
+
pf.sh sprint story finish MSSCI-12345
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
## Distributed Scripts
|
|
@@ -232,11 +232,8 @@ case "$1" in
|
|
|
232
232
|
PRIME_ARGS+=(--no-persona)
|
|
233
233
|
fi
|
|
234
234
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
else
|
|
238
|
-
python3 -m pennyfarthing_scripts.prime "${PRIME_ARGS[@]}"
|
|
239
|
-
fi
|
|
235
|
+
source "$SCRIPT_DIR/../lib/run-pf.sh"
|
|
236
|
+
run_pf prime "${PRIME_ARGS[@]}"
|
|
240
237
|
;;
|
|
241
238
|
stop)
|
|
242
239
|
# Use provided session ID, fall back to SESSION_ID env var
|
|
@@ -156,7 +156,7 @@ if last_total:
|
|
|
156
156
|
status = 'HIGH' if usable_pct > $WARNING_THRESHOLD else 'OK'
|
|
157
157
|
relay = '$RELAY_MODE' == 'true'
|
|
158
158
|
tirepump = (relay or '$PERMISSION_MODE' == 'turbo') and usable_pct > $TIREPUMP_THRESHOLD
|
|
159
|
-
is_cyclist = os.environ.get('CYCLIST') == '1' or Path('$PROJECT_DIR/packages/cyclist/.
|
|
159
|
+
is_cyclist = os.environ.get('CYCLIST') == '1' or Path('$PROJECT_DIR/packages/cyclist/.bikerack-port').exists()
|
|
160
160
|
|
|
161
161
|
print(f'CONTEXT_TOKENS={last_total}')
|
|
162
162
|
print(f'CONTEXT_PERCENT={total_pct}')
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
# DEPRECATED: Use `pf handoff phase-check <agent>` instead.
|
|
3
|
-
# This shim delegates to the Python implementation.
|
|
4
|
-
#
|
|
5
|
-
# Usage: phase-check-start.sh <agent>
|
|
6
|
-
|
|
7
3
|
echo "DEPRECATED: phase-check-start.sh — use 'pf handoff phase-check $1' instead" >&2
|
|
8
|
-
|
|
4
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
5
|
+
exec_pf handoff phase-check "$@"
|
|
@@ -1,28 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# prime.sh - Load essential project context at agent activation
|
|
3
3
|
# Usage: prime.sh [--minimal] [--full] [--quiet] [--agent <name>]
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
# Falls back to python3 -m with PYTHONPATH if pf is not available.
|
|
7
|
-
|
|
8
|
-
# Prefer pf CLI if available
|
|
9
|
-
if command -v pf &>/dev/null; then
|
|
10
|
-
exec pf prime "$@"
|
|
11
|
-
fi
|
|
12
|
-
|
|
13
|
-
# Fallback: find pennyfarthing_scripts via PYTHONPATH
|
|
14
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"
|
|
15
|
-
PACKAGE_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd -P)"
|
|
16
|
-
|
|
17
|
-
if [[ ! -d "$PACKAGE_ROOT/pennyfarthing_scripts" ]]; then
|
|
18
|
-
PROJECT_ROOT="$PWD"
|
|
19
|
-
while [[ ! -d "$PROJECT_ROOT/.pennyfarthing" ]] && [[ "$PROJECT_ROOT" != "/" ]]; do
|
|
20
|
-
PROJECT_ROOT="$(dirname "$PROJECT_ROOT")"
|
|
21
|
-
done
|
|
22
|
-
if [[ -d "$PROJECT_ROOT/node_modules/@pennyfarthing/core/pennyfarthing_scripts" ]]; then
|
|
23
|
-
PACKAGE_ROOT="$PROJECT_ROOT/node_modules/@pennyfarthing/core"
|
|
24
|
-
fi
|
|
25
|
-
fi
|
|
26
|
-
|
|
27
|
-
export PYTHONPATH="${PACKAGE_ROOT}:${PYTHONPATH:-}"
|
|
28
|
-
exec python3 -m pennyfarthing_scripts.prime "$@"
|
|
4
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
5
|
+
exec_pf prime "$@"
|
|
@@ -4,29 +4,29 @@ Scripts for Git operations, branching, and worktree management.
|
|
|
4
4
|
|
|
5
5
|
## CLI Commands (preferred)
|
|
6
6
|
|
|
7
|
-
All git operations are available via the `pf git` CLI:
|
|
7
|
+
All git operations are available via the `pf.sh git` CLI:
|
|
8
8
|
|
|
9
9
|
| Command | Purpose |
|
|
10
10
|
|---------|---------|
|
|
11
|
-
| `pf git status [--brief]` | Show git status across all repos |
|
|
12
|
-
| `pf git branches <name> [--repos all\|api\|ui]` | Create feature branches in repos |
|
|
13
|
-
| `pf git worktree create <name> <branch>` | Create worktrees for parallel work |
|
|
14
|
-
| `pf git worktree remove <name>` | Remove worktree and clean up |
|
|
15
|
-
| `pf git worktree list` | List all active worktrees |
|
|
16
|
-
| `pf git worktree status` | Show detailed worktree status |
|
|
17
|
-
| `pf git install-hooks` | Install git hooks with .d/ dispatcher |
|
|
18
|
-
| `pf git cleanup` | Organize changes into commits/branches |
|
|
11
|
+
| `pf.sh git status [--brief]` | Show git status across all repos |
|
|
12
|
+
| `pf.sh git branches <name> [--repos all\|api\|ui]` | Create feature branches in repos |
|
|
13
|
+
| `pf.sh git worktree create <name> <branch>` | Create worktrees for parallel work |
|
|
14
|
+
| `pf.sh git worktree remove <name>` | Remove worktree and clean up |
|
|
15
|
+
| `pf.sh git worktree list` | List all active worktrees |
|
|
16
|
+
| `pf.sh git worktree status` | Show detailed worktree status |
|
|
17
|
+
| `pf.sh git install-hooks` | Install git hooks with .d/ dispatcher |
|
|
18
|
+
| `pf.sh git cleanup` | Organize changes into commits/branches |
|
|
19
19
|
|
|
20
20
|
## Legacy Scripts (deprecated shims)
|
|
21
21
|
|
|
22
|
-
These scripts now forward to `pf git` commands:
|
|
22
|
+
These scripts now forward to `pf.sh git` commands:
|
|
23
23
|
|
|
24
24
|
| Script | Forwards to |
|
|
25
25
|
|--------|-------------|
|
|
26
|
-
| `git-status-all.sh` | `pf git status` |
|
|
27
|
-
| `create-feature-branches.sh` | `pf git branches` |
|
|
28
|
-
| `worktree-manager.sh` | `pf git worktree` |
|
|
29
|
-
| `install-git-hooks.sh` | `pf git install-hooks` |
|
|
26
|
+
| `git-status-all.sh` | `pf.sh git status` |
|
|
27
|
+
| `create-feature-branches.sh` | `pf.sh git branches` |
|
|
28
|
+
| `worktree-manager.sh` | `pf.sh git worktree` |
|
|
29
|
+
| `install-git-hooks.sh` | `pf.sh git install-hooks` |
|
|
30
30
|
| `release.sh` | Release workflow (use `/pf-workflow start release`) |
|
|
31
31
|
|
|
32
32
|
## Ownership
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# DEPRECATED: Use `pf git branches` instead.
|
|
3
|
-
# This shim forwards to the Python CLI.
|
|
4
|
-
set -e
|
|
5
3
|
echo "DEPRECATED: create-feature-branches.sh — use 'pf git branches' instead" >&2
|
|
6
|
-
|
|
4
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
5
|
+
exec_pf git branches "$@"
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# DEPRECATED: Use `pf git status` instead.
|
|
3
|
-
# This shim forwards to the Python CLI.
|
|
4
|
-
set -e
|
|
5
3
|
echo "DEPRECATED: git-status-all.sh — use 'pf git status' instead" >&2
|
|
6
|
-
|
|
4
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
5
|
+
exec_pf git status "$@"
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# DEPRECATED: Use `pf git install-hooks` instead.
|
|
3
|
-
# This shim forwards to the Python CLI.
|
|
4
|
-
set -e
|
|
5
3
|
echo "DEPRECATED: install-git-hooks.sh — use 'pf git install-hooks' instead" >&2
|
|
6
|
-
|
|
4
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
5
|
+
exec_pf git install-hooks "$@"
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# DEPRECATED: Use `pf git worktree` instead.
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
echo "DEPRECATED: worktree-manager.sh — use 'pf git worktree' instead" >&2
|
|
6
|
-
exec pf git worktree "$@"
|
|
3
|
+
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/../lib/run-pf.sh"
|
|
4
|
+
exec_pf git worktree "$@"
|
|
@@ -6,22 +6,22 @@ Git hooks and Claude Code hooks.
|
|
|
6
6
|
|
|
7
7
|
| Script | Purpose |
|
|
8
8
|
|--------|---------|
|
|
9
|
-
| `pf hooks context-breaker` | Claude hook: halt at context limit |
|
|
10
|
-
| `pf hooks context-warning` | Claude hook: warn on high context |
|
|
9
|
+
| `pf.sh hooks context-breaker` | Claude hook: halt at context limit |
|
|
10
|
+
| `pf.sh hooks context-warning` | Claude hook: warn on high context |
|
|
11
11
|
| `otel-auto-config.sh` | Claude hook: configure OTEL |
|
|
12
12
|
| `post-merge.sh` | Git hook: post-merge actions |
|
|
13
13
|
| `pre-commit.sh` | Git hook: branch protection, agent validation, sprint YAML validation |
|
|
14
|
-
| `pf hooks pre-edit-check` | Claude hook: validate before edit |
|
|
14
|
+
| `pf.sh hooks pre-edit-check` | Claude hook: validate before edit |
|
|
15
15
|
| `pre-push.sh` | Git hook: pre-push validation |
|
|
16
|
-
| `pf hooks session-start` | Claude hook: session start |
|
|
17
|
-
| `pf hooks session-stop` | Claude hook: session stop |
|
|
16
|
+
| `pf.sh hooks session-start` | Claude hook: session start |
|
|
17
|
+
| `pf.sh hooks session-stop` | Claude hook: session stop |
|
|
18
18
|
|
|
19
19
|
## Installation
|
|
20
20
|
|
|
21
21
|
Git hooks are installed via:
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
pf git install-hooks
|
|
24
|
+
pf.sh git install-hooks
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
Claude hooks are configured in `.claude/settings.json`.
|
|
@@ -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
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
fi
|
|
25
|
+
|
|
26
|
+
if [[ -z "$_pf_project" ]]; then
|
|
27
|
+
echo "Error: No pyproject.toml found for pennyfarthing-scripts" >&2
|
|
28
|
+
echo "Expected: $PROJECT_ROOT/pennyfarthing/pyproject.toml (dogfooding)" >&2
|
|
29
|
+
echo " or: $PROJECT_ROOT/pyproject.toml (consumer)" >&2
|
|
30
|
+
exit 1
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
run_pf() {
|
|
34
|
+
uv run --project "$_pf_project" pf "$@"
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
exec_pf() {
|
|
38
|
+
exec uv run --project "$_pf_project" pf "$@"
|
|
39
|
+
}
|