@pennyfarthing/core 11.1.1 → 11.2.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 +8 -8
- package/package.json +2 -1
- package/packages/core/dist/cli/commands/doctor.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/doctor.js +381 -66
- package/packages/core/dist/cli/commands/doctor.js.map +1 -1
- package/packages/core/dist/cli/commands/init.js +4 -4
- package/packages/core/dist/cli/commands/init.js.map +1 -1
- package/packages/core/dist/cli/commands/update.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/update.js +4 -5
- package/packages/core/dist/cli/commands/update.js.map +1 -1
- package/packages/core/dist/cli/utils/constants.d.ts +3 -8
- package/packages/core/dist/cli/utils/constants.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/constants.js +3 -4
- package/packages/core/dist/cli/utils/constants.js.map +1 -1
- package/packages/core/dist/cli/utils/settings.d.ts +11 -0
- package/packages/core/dist/cli/utils/settings.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/settings.js +65 -29
- package/packages/core/dist/cli/utils/settings.js.map +1 -1
- package/packages/core/dist/cli/utils/symlinks.js +16 -16
- package/packages/core/dist/cli/utils/symlinks.js.map +1 -1
- package/packages/core/dist/consultation/tandem-metrics.d.ts +91 -0
- package/packages/core/dist/consultation/tandem-metrics.d.ts.map +1 -0
- package/packages/core/dist/consultation/tandem-metrics.js +131 -0
- package/packages/core/dist/consultation/tandem-metrics.js.map +1 -0
- package/packages/core/dist/consultation/tandem-metrics.test.d.ts +18 -0
- package/packages/core/dist/consultation/tandem-metrics.test.d.ts.map +1 -0
- package/packages/core/dist/consultation/tandem-metrics.test.js +457 -0
- package/packages/core/dist/consultation/tandem-metrics.test.js.map +1 -0
- package/packages/core/dist/public/js/react/react.js +14 -14
- package/packages/core/dist/scripts/benchmark-integration.d.ts +182 -0
- package/packages/core/dist/scripts/benchmark-integration.d.ts.map +1 -0
- package/packages/core/dist/scripts/benchmark-integration.js +691 -0
- package/packages/core/dist/scripts/benchmark-integration.js.map +1 -0
- package/packages/core/dist/scripts/job-fair-aggregator.d.ts +150 -0
- package/packages/core/dist/scripts/job-fair-aggregator.d.ts.map +1 -0
- package/packages/core/dist/scripts/job-fair-aggregator.js +547 -0
- package/packages/core/dist/scripts/job-fair-aggregator.js.map +1 -0
- package/packages/core/dist/server/api/agent-load.js +1 -1
- package/packages/core/dist/server/api/agent-load.js.map +1 -1
- package/packages/core/dist/server/otlp-receiver.d.ts +16 -11
- package/packages/core/dist/server/otlp-receiver.d.ts.map +1 -1
- package/packages/core/dist/server/otlp-receiver.js +185 -24
- package/packages/core/dist/server/otlp-receiver.js.map +1 -1
- package/packages/core/dist/server/otlp-receiver.test.d.ts +21 -0
- package/packages/core/dist/server/otlp-receiver.test.d.ts.map +1 -0
- package/packages/core/dist/server/otlp-receiver.test.js +446 -0
- package/packages/core/dist/server/otlp-receiver.test.js.map +1 -0
- package/packages/core/dist/server/server.d.ts +0 -3
- package/packages/core/dist/server/server.d.ts.map +1 -1
- package/packages/core/dist/server/server.js +3 -37
- 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 +12 -23
- package/packages/core/dist/server/server.test.js.map +1 -1
- package/packages/core/dist/shared/capabilities.d.ts +88 -0
- package/packages/core/dist/shared/capabilities.d.ts.map +1 -0
- package/packages/core/dist/shared/capabilities.js +133 -0
- package/packages/core/dist/shared/capabilities.js.map +1 -0
- package/packages/core/dist/shared/capabilities.test.d.ts +2 -0
- package/packages/core/dist/shared/capabilities.test.d.ts.map +1 -0
- package/packages/core/dist/shared/capabilities.test.js +217 -0
- package/packages/core/dist/shared/capabilities.test.js.map +1 -0
- package/packages/core/dist/shared/portrait-resolver.d.ts +9 -0
- package/packages/core/dist/shared/portrait-resolver.d.ts.map +1 -1
- package/packages/core/dist/shared/portrait-resolver.js +27 -0
- package/packages/core/dist/shared/portrait-resolver.js.map +1 -1
- package/packages/core/dist/shared/portrait-resolver.test.js +47 -1
- package/packages/core/dist/shared/portrait-resolver.test.js.map +1 -1
- package/packages/core/dist/shared/spawn-prompt.d.ts +47 -0
- package/packages/core/dist/shared/spawn-prompt.d.ts.map +1 -0
- package/packages/core/dist/shared/spawn-prompt.js +82 -0
- package/packages/core/dist/shared/spawn-prompt.js.map +1 -0
- package/packages/core/dist/shared/spawn-prompt.test.d.ts +2 -0
- package/packages/core/dist/shared/spawn-prompt.test.d.ts.map +1 -0
- package/packages/core/dist/shared/spawn-prompt.test.js +251 -0
- package/packages/core/dist/shared/spawn-prompt.test.js.map +1 -0
- package/packages/core/dist/shared/tandem-portrait-inventory.test.d.ts +13 -0
- package/packages/core/dist/shared/tandem-portrait-inventory.test.d.ts.map +1 -0
- package/packages/core/dist/shared/tandem-portrait-inventory.test.js +126 -0
- package/packages/core/dist/shared/tandem-portrait-inventory.test.js.map +1 -0
- package/packages/core/dist/workflow/tandem-workflow-templates.test.d.ts +18 -0
- package/packages/core/dist/workflow/tandem-workflow-templates.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/tandem-workflow-templates.test.js +434 -0
- package/packages/core/dist/workflow/tandem-workflow-templates.test.js.map +1 -0
- package/packages/core/dist/workflow/workflow-schema.d.ts +32 -0
- package/packages/core/dist/workflow/workflow-schema.d.ts.map +1 -1
- package/packages/core/dist/workflow/workflow-schema.js +120 -0
- package/packages/core/dist/workflow/workflow-schema.js.map +1 -1
- package/packages/core/dist/workflow/workflow-schema.test.d.ts.map +1 -1
- package/packages/core/dist/workflow/workflow-schema.test.js +570 -1
- package/packages/core/dist/workflow/workflow-schema.test.js.map +1 -1
- package/pennyfarthing-dist/agents/dev.md +7 -11
- package/pennyfarthing-dist/agents/reviewer.md +9 -3
- package/pennyfarthing-dist/agents/sm-finish.md +18 -1
- package/pennyfarthing-dist/agents/sm-setup.md +1 -1
- package/pennyfarthing-dist/agents/sm.md +2 -2
- package/pennyfarthing-dist/agents/tea.md +1 -1
- package/pennyfarthing-dist/agents/testing-runner.md +2 -1
- package/pennyfarthing-dist/commands/pf-chore.md +2 -2
- package/pennyfarthing-dist/commands/pf-git.md +4 -2
- package/pennyfarthing-dist/commands/pf-standalone.md +7 -2
- package/pennyfarthing-dist/gates/approval.md +63 -0
- package/pennyfarthing-dist/gates/confidence-sm.md +71 -0
- package/pennyfarthing-dist/gates/context-ok.md +56 -0
- package/pennyfarthing-dist/gates/evaluations/confidence-sm.md +54 -0
- package/pennyfarthing-dist/gates/quality-pass.md +67 -0
- package/pennyfarthing-dist/gates/tests-fail.md +84 -0
- package/pennyfarthing-dist/gates/tests-pass.md +79 -0
- package/pennyfarthing-dist/guides/agent-behavior.md +23 -19
- package/pennyfarthing-dist/guides/agent-tag-taxonomy.md +1 -1
- package/pennyfarthing-dist/guides/bell-mode.md +1 -1
- package/pennyfarthing-dist/guides/bikerack.md +3 -3
- package/pennyfarthing-dist/guides/hooks.md +29 -29
- package/pennyfarthing-dist/guides/reflector.md +1 -1
- package/pennyfarthing-dist/guides/tandem-protocol.md +3 -3
- package/pennyfarthing-dist/guides/worktree-mode.md +3 -3
- package/pennyfarthing-dist/guides/xml-tags.md +2 -2
- package/pennyfarthing-dist/scripts/README.md +1 -1
- package/pennyfarthing-dist/scripts/core/check-context.sh +3 -1
- package/pennyfarthing-dist/scripts/core/phase-check-start.sh +5 -87
- package/pennyfarthing-dist/scripts/git/README.md +24 -14
- package/pennyfarthing-dist/scripts/git/create-feature-branches.sh +5 -266
- package/pennyfarthing-dist/scripts/git/git-status-all.sh +5 -151
- package/pennyfarthing-dist/scripts/git/install-git-hooks.sh +6 -144
- package/pennyfarthing-dist/scripts/git/worktree-manager.sh +5 -496
- package/pennyfarthing-dist/scripts/hooks/README.md +6 -6
- package/pennyfarthing-dist/scripts/hooks/__pycache__/question_reflector_check.cpython-314.pyc +0 -0
- package/pennyfarthing-dist/scripts/hooks/bell-mode-hook.sh +4 -183
- package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +4 -95
- package/pennyfarthing-dist/scripts/hooks/context-warning.sh +4 -65
- package/pennyfarthing-dist/scripts/hooks/cyclist-pretooluse-hook.sh +3 -31
- package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +9 -11
- package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +27 -33
- package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +4 -71
- package/pennyfarthing-dist/scripts/hooks/question-reflector-check.sh +3 -19
- package/pennyfarthing-dist/scripts/hooks/schema-validation.sh +4 -30
- package/pennyfarthing-dist/scripts/hooks/session-start.sh +3 -32
- package/pennyfarthing-dist/scripts/hooks/session-stop.sh +4 -65
- package/pennyfarthing-dist/scripts/hooks/sprint-yaml-validation.sh +4 -78
- package/pennyfarthing-dist/scripts/hooks/welcome-hook.sh +4 -93
- package/pennyfarthing-dist/scripts/misc/README.md +1 -1
- package/pennyfarthing-dist/scripts/misc/statusline.sh +4 -301
- package/pennyfarthing-dist/scripts/portraits/generate-tandem-portraits.sh +76 -0
- package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +4 -221
- package/pennyfarthing-dist/scripts/workflow/get-workflow-type.sh +5 -13
- package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +4 -123
- package/pennyfarthing-dist/scripts/workflow/phase-owner.sh +4 -33
- package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +4 -156
- package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +4 -131
- package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +4 -249
- package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +4 -160
- package/pennyfarthing-dist/skills/pf-bc/usage.md +1 -1
- package/pennyfarthing-dist/skills/pf-jira/examples.md +5 -2
- package/pennyfarthing-dist/skills/pf-workflow/examples.md +27 -16
- package/pennyfarthing-dist/skills/pf-workflow/skill.md +9 -12
- package/pennyfarthing-dist/skills/pf-workflow/usage.md +33 -8
- package/pennyfarthing-dist/templates/settings.local.json.template +19 -10
- package/pennyfarthing-dist/workflows/bdd-tandem.yaml +18 -6
- 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/review-tandem.yaml +65 -0
- package/pennyfarthing-dist/workflows/tdd-tandem.yaml +16 -8
- package/pennyfarthing-dist/workflows/tdd.yaml +11 -2
- package/pennyfarthing_scripts/CLAUDE.md +45 -14
- package/pennyfarthing_scripts/__pycache__/__init__.cpython-311.pyc +0 -0
- 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.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__/sprint.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/workflow.cpython-311.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/cli.py +3 -5
- package/pennyfarthing_scripts/bellmode_hook.py +12 -296
- 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_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 +119 -0
- package/pennyfarthing_scripts/bikerack/background_panel.py +86 -5
- package/pennyfarthing_scripts/bikerack/base_panel.py +87 -2
- package/pennyfarthing_scripts/bikerack/changed_panel.py +125 -29
- package/pennyfarthing_scripts/bikerack/context_meter_footer.py +88 -0
- package/pennyfarthing_scripts/bikerack/debug_panel.py +32 -2
- package/pennyfarthing_scripts/bikerack/diffs_panel.py +104 -17
- package/pennyfarthing_scripts/bikerack/events.py +28 -0
- package/pennyfarthing_scripts/bikerack/git_panel.py +103 -33
- package/pennyfarthing_scripts/bikerack/launcher.py +15 -15
- package/pennyfarthing_scripts/bikerack/portrait_resolver.py +139 -0
- package/pennyfarthing_scripts/bikerack/progress_panel.py +315 -0
- package/pennyfarthing_scripts/bikerack/sprint_panel.py +395 -32
- package/pennyfarthing_scripts/bikerack/story_detail_data.py +244 -0
- package/pennyfarthing_scripts/bikerack/story_detail_screen.py +176 -0
- package/pennyfarthing_scripts/bikerack/tui.py +575 -37
- 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/cli.py +42 -65
- 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/pr_config.py +38 -0
- 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/__init__.py +1 -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/__pycache__/dialogue_manager.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/consultation/cli.py +149 -0
- package/pennyfarthing_scripts/consultation/dialogue_manager.py +417 -0
- 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/git/__init__.py +12 -1
- 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__/status_all.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/git/create_branches.py +3 -4
- package/pennyfarthing_scripts/git/hooks_installer.py +152 -0
- package/pennyfarthing_scripts/git/repos.py +196 -0
- package/pennyfarthing_scripts/git/status_all.py +27 -11
- package/pennyfarthing_scripts/git/worktree.py +302 -0
- 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/git_group/cli.py +143 -40
- 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__/resolve_gate.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/handoff/cli.py +33 -1
- package/pennyfarthing_scripts/handoff/complete_phase.py +40 -0
- package/pennyfarthing_scripts/handoff/marker.py +15 -15
- package/pennyfarthing_scripts/handoff/phase_check.py +96 -0
- package/pennyfarthing_scripts/handoff/resolve_gate.py +18 -15
- 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 +437 -0
- 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 +215 -0
- package/pennyfarthing_scripts/hooks/cli.py +96 -0
- package/pennyfarthing_scripts/hooks/context_breaker.py +104 -0
- package/pennyfarthing_scripts/hooks/context_warning.py +66 -0
- package/pennyfarthing_scripts/hooks/cyclist_pretooluse.py +129 -0
- package/pennyfarthing_scripts/hooks/pre_edit_check.py +78 -0
- package/pennyfarthing_scripts/hooks/reflector_check.py +271 -0
- package/pennyfarthing_scripts/hooks/schema_validation.py +203 -0
- package/pennyfarthing_scripts/hooks/session_start.py +296 -0
- package/pennyfarthing_scripts/hooks/session_stop.py +111 -0
- package/pennyfarthing_scripts/hooks/sprint_yaml_validation.py +97 -0
- package/pennyfarthing_scripts/hooks/statusline.py +420 -0
- package/pennyfarthing_scripts/hooks.py +27 -446
- 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__/compat.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__/mappings.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/models.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__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/cli.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/pretooluse_hook.py +3 -185
- package/pennyfarthing_scripts/prime/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/cli.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 +655 -0
- package/pennyfarthing_scripts/prime/workflow.py +2 -1
- package/pennyfarthing_scripts/schema_validation_hook.py +3 -298
- 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/session_start_hook.py +4 -186
- 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/loader.py +15 -1
- package/pennyfarthing_scripts/sprint/story_update.py +19 -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_1_gate_migration.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_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_epic_shard_validation.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_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_cli.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 +51 -51
- package/pennyfarthing_scripts/tests/test_dialogue_manager.py +811 -0
- package/pennyfarthing_scripts/tests/test_handoff_cli.py +16 -11
- package/pennyfarthing_scripts/tests/test_sprint_panel.py +344 -265
- package/pennyfarthing_scripts/tests/test_workflow_check.py +2 -3
- 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__/workflow.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/tandem_awareness.py +254 -0
- package/pennyfarthing_scripts/validate/adapters/workflow.py +19 -0
- package/pennyfarthing_scripts/validate/cli.py +17 -5
- package/pennyfarthing_scripts/welcome_hook.py +3 -149
- package/pennyfarthing_scripts/workflow/__init__.py +40 -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/cli.py +1100 -0
- package/pennyfarthing_scripts/workflow/helpers.py +241 -0
- package/pennyfarthing_scripts/{workflow.py → workflow/scale.py} +0 -104
- package/pennyfarthing_scripts/workflow/state.py +112 -0
- package/pennyfarthing_scripts/workflow/team_lifecycle.py +257 -0
- package/packages/core/dist/scripts/theme-detail.test.d.ts +0 -10
- package/packages/core/dist/scripts/theme-detail.test.js +0 -199
- package/pennyfarthing-dist/skills/pf-workflow/scripts/list-workflows.sh +0 -91
- package/pennyfarthing-dist/skills/pf-workflow/scripts/resume-workflow.sh +0 -163
- package/pennyfarthing-dist/skills/pf-workflow/scripts/show-workflow.sh +0 -138
- package/pennyfarthing-dist/skills/pf-workflow/scripts/start-workflow.sh +0 -273
- package/pennyfarthing-dist/skills/pf-workflow/scripts/workflow-status.sh +0 -167
- 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/tests/__pycache__/test_108_2_remove_handoff_fallback.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_resolve_gate_file_field.cpython-314-pytest-9.0.2.pyc +0 -0
|
@@ -11,25 +11,22 @@ Pennyfarthing uses YAML-defined workflows to control agent sequences. The defaul
|
|
|
11
11
|
|
|
12
12
|
## Quick Reference
|
|
13
13
|
|
|
14
|
-
### Shell Script Commands
|
|
15
|
-
|
|
16
|
-
| Command | Script | Purpose |
|
|
17
|
-
|---------|--------|---------|
|
|
18
|
-
| `/pf-workflow` or `/pf-workflow list` | `.pennyfarthing/scripts/workflow/list-workflows.sh` | List all workflows |
|
|
19
|
-
| `/pf-workflow show [name]` | `.pennyfarthing/scripts/workflow/show-workflow.sh [name]` | Show workflow details |
|
|
20
|
-
| `/pf-workflow set <name>` | Edit session file `**Workflow:**` line | Switch workflow mid-session |
|
|
21
|
-
| `/pf-workflow start <name>` | `.pennyfarthing/scripts/workflow/start-workflow.sh <name> [--mode M]` | Start stepped workflow |
|
|
22
|
-
| `/pf-workflow resume [name]` | `.pennyfarthing/scripts/workflow/resume-workflow.sh [name]` | Resume interrupted workflow |
|
|
23
|
-
| `/pf-workflow status` | `.pennyfarthing/scripts/workflow/workflow-status.sh` | Show stepped workflow progress |
|
|
24
|
-
| `/pf-workflow fix-phase <id> <phase>` | `.pennyfarthing/scripts/workflow/fix-session-phase.sh <id> <phase> [--dry-run]` | Repair session phase |
|
|
25
|
-
|
|
26
14
|
### Python CLI Commands
|
|
27
15
|
|
|
28
16
|
| Command | CLI | Purpose |
|
|
29
17
|
|---------|-----|---------|
|
|
18
|
+
| `/pf-workflow` or `/pf-workflow list` | `pf workflow list` | List all workflows |
|
|
19
|
+
| `/pf-workflow show [name]` | `pf workflow show [name]` | Show workflow details |
|
|
20
|
+
| `/pf-workflow set <name>` | Edit session file `**Workflow:**` line | Switch workflow mid-session |
|
|
21
|
+
| `/pf-workflow start <name>` | `pf workflow start <name> [--mode M]` | Start stepped workflow |
|
|
22
|
+
| `/pf-workflow resume [name]` | `pf workflow resume [name]` | Resume interrupted workflow |
|
|
23
|
+
| `/pf-workflow status` | `pf workflow status` | Show stepped workflow progress |
|
|
24
|
+
| `/pf-workflow fix-phase <id> <phase>` | `pf workflow fix-phase <id> <phase> [--dry-run]` | Repair session phase |
|
|
30
25
|
| Check workflow state | `pf workflow check [--json]` | Current story, phase, state |
|
|
31
26
|
| Check phase owner | `pf workflow phase-check <workflow> <phase>` | Which agent owns a phase |
|
|
27
|
+
| Get workflow type | `pf workflow type <workflow>` | phased/stepped/procedural |
|
|
32
28
|
| Emit handoff marker | `pf workflow handoff <next-agent>` | CYCLIST handoff marker |
|
|
29
|
+
| Complete step | `pf workflow complete-step [name] [--step N]` | Advance stepped workflow |
|
|
33
30
|
|
|
34
31
|
### Built-in Workflows
|
|
35
32
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Workflow — Detailed Usage
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## Commands
|
|
4
4
|
|
|
5
5
|
### List Workflows
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
|
|
8
|
+
pf workflow list
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
No arguments. Returns table of workflows with type, phases/steps count, modes, default flag, description.
|
|
@@ -13,7 +13,7 @@ No arguments. Returns table of workflows with type, phases/steps count, modes, d
|
|
|
13
13
|
### Show Workflow
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
|
|
16
|
+
pf workflow show [NAME]
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
| Arg | Required | Description |
|
|
@@ -31,7 +31,7 @@ Warning: Only do this when story requirements have fundamentally changed. Switch
|
|
|
31
31
|
### Start Stepped Workflow
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
|
-
|
|
34
|
+
pf workflow start <NAME> [--mode <MODE>]
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
| Arg/Option | Required | Description |
|
|
@@ -44,7 +44,7 @@ Creates a new session and begins at step 1.
|
|
|
44
44
|
### Resume Stepped Workflow
|
|
45
45
|
|
|
46
46
|
```bash
|
|
47
|
-
|
|
47
|
+
pf workflow resume [NAME]
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
| Arg | Required | Description |
|
|
@@ -54,7 +54,7 @@ Creates a new session and begins at step 1.
|
|
|
54
54
|
### Workflow Status
|
|
55
55
|
|
|
56
56
|
```bash
|
|
57
|
-
|
|
57
|
+
pf workflow status
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
No arguments. Shows current step, progress percentage, mode.
|
|
@@ -62,7 +62,7 @@ No arguments. Shows current step, progress percentage, mode.
|
|
|
62
62
|
### Fix Session Phase
|
|
63
63
|
|
|
64
64
|
```bash
|
|
65
|
-
|
|
65
|
+
pf workflow fix-phase <STORY_ID> <TARGET_PHASE> [--dry-run]
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
| Arg/Option | Required | Description |
|
|
@@ -80,9 +80,22 @@ Valid phases by workflow:
|
|
|
80
80
|
|
|
81
81
|
Updates `**Phase:**` field, `**Phase Started:**` timestamp, and handoff history table.
|
|
82
82
|
|
|
83
|
+
### Complete Step
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
pf workflow complete-step [NAME] [--step N]
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
| Arg/Option | Required | Description |
|
|
90
|
+
|------------|----------|-------------|
|
|
91
|
+
| `NAME` | No | Workflow name (auto-detects from session) |
|
|
92
|
+
| `--step N` | No | Complete specific step number instead of current |
|
|
93
|
+
|
|
94
|
+
Advances session: increments step, updates completed list, recalculates percentage.
|
|
95
|
+
|
|
83
96
|
---
|
|
84
97
|
|
|
85
|
-
##
|
|
98
|
+
## State & Phase Commands
|
|
86
99
|
|
|
87
100
|
### Check Workflow State
|
|
88
101
|
|
|
@@ -109,6 +122,18 @@ pf workflow phase-check <WORKFLOW_NAME> <PHASE>
|
|
|
109
122
|
|
|
110
123
|
Returns the agent name that owns the phase.
|
|
111
124
|
|
|
125
|
+
### Get Workflow Type
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
pf workflow type <WORKFLOW_NAME>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
| Arg | Required | Description |
|
|
132
|
+
|-----|----------|-------------|
|
|
133
|
+
| `WORKFLOW_NAME` | Yes | Workflow name (e.g., `tdd`, `architecture`) |
|
|
134
|
+
|
|
135
|
+
Returns `phased`, `stepped`, or `procedural`.
|
|
136
|
+
|
|
112
137
|
### Emit Handoff Marker
|
|
113
138
|
|
|
114
139
|
```bash
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"hooks": [
|
|
41
41
|
{
|
|
42
42
|
"type": "command",
|
|
43
|
-
"command": "
|
|
43
|
+
"command": "pf hooks session-start"
|
|
44
44
|
}
|
|
45
45
|
]
|
|
46
46
|
},
|
|
@@ -68,7 +68,16 @@
|
|
|
68
68
|
"hooks": [
|
|
69
69
|
{
|
|
70
70
|
"type": "command",
|
|
71
|
-
"command": "
|
|
71
|
+
"command": "pf hooks reflector-check"
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"matcher": "",
|
|
77
|
+
"hooks": [
|
|
78
|
+
{
|
|
79
|
+
"type": "command",
|
|
80
|
+
"command": "pf hooks session-stop"
|
|
72
81
|
}
|
|
73
82
|
]
|
|
74
83
|
}
|
|
@@ -79,7 +88,7 @@
|
|
|
79
88
|
"hooks": [
|
|
80
89
|
{
|
|
81
90
|
"type": "command",
|
|
82
|
-
"command": "
|
|
91
|
+
"command": "pf hooks bell-mode"
|
|
83
92
|
}
|
|
84
93
|
]
|
|
85
94
|
},
|
|
@@ -88,7 +97,7 @@
|
|
|
88
97
|
"hooks": [
|
|
89
98
|
{
|
|
90
99
|
"type": "command",
|
|
91
|
-
"command": "
|
|
100
|
+
"command": "pf hooks sprint-yaml"
|
|
92
101
|
}
|
|
93
102
|
]
|
|
94
103
|
}
|
|
@@ -99,7 +108,7 @@
|
|
|
99
108
|
"hooks": [
|
|
100
109
|
{
|
|
101
110
|
"type": "command",
|
|
102
|
-
"command": "
|
|
111
|
+
"command": "pf hooks pre-edit-check"
|
|
103
112
|
}
|
|
104
113
|
]
|
|
105
114
|
},
|
|
@@ -108,7 +117,7 @@
|
|
|
108
117
|
"hooks": [
|
|
109
118
|
{
|
|
110
119
|
"type": "command",
|
|
111
|
-
"command": "
|
|
120
|
+
"command": "pf hooks schema-validation"
|
|
112
121
|
}
|
|
113
122
|
]
|
|
114
123
|
},
|
|
@@ -117,7 +126,7 @@
|
|
|
117
126
|
"hooks": [
|
|
118
127
|
{
|
|
119
128
|
"type": "command",
|
|
120
|
-
"command": "
|
|
129
|
+
"command": "pf hooks context-warning"
|
|
121
130
|
}
|
|
122
131
|
]
|
|
123
132
|
},
|
|
@@ -126,7 +135,7 @@
|
|
|
126
135
|
"hooks": [
|
|
127
136
|
{
|
|
128
137
|
"type": "command",
|
|
129
|
-
"command": "
|
|
138
|
+
"command": "pf hooks context-breaker"
|
|
130
139
|
}
|
|
131
140
|
]
|
|
132
141
|
},
|
|
@@ -134,7 +143,7 @@
|
|
|
134
143
|
"hooks": [
|
|
135
144
|
{
|
|
136
145
|
"type": "command",
|
|
137
|
-
"command": "
|
|
146
|
+
"command": "pf hooks cyclist-pretooluse"
|
|
138
147
|
}
|
|
139
148
|
]
|
|
140
149
|
}
|
|
@@ -142,6 +151,6 @@
|
|
|
142
151
|
},
|
|
143
152
|
"statusLine": {
|
|
144
153
|
"type": "command",
|
|
145
|
-
"command": "
|
|
154
|
+
"command": "pf hooks statusline"
|
|
146
155
|
}
|
|
147
156
|
}
|
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
# BDD Tandem Workflow - BDD with Full Tandem Chain
|
|
2
|
-
# Extends standard BDD with tandem observers:
|
|
3
|
-
# - Architect backseats UX-Designer during design
|
|
4
|
-
# - UX-Designer backseats Dev during implementation
|
|
5
|
-
# - PM backseats Reviewer during review
|
|
6
2
|
#
|
|
7
|
-
#
|
|
3
|
+
# When to use: Best for UI/UX-heavy stories where designer-architect pairing
|
|
4
|
+
# shapes implementation. Use this instead of base bdd when the story involves
|
|
5
|
+
# complex user flows, new component patterns, or cross-domain UI integration.
|
|
6
|
+
#
|
|
7
|
+
# Tandem pairings:
|
|
8
|
+
# - DESIGN phase: UX-Designer + Architect (file-watch) — Architect validates technical feasibility
|
|
9
|
+
# - RED phase: TEA + Dev (file-watch) — Dev provides implementation context for test strategy
|
|
10
|
+
# - GREEN phase: Dev + UX-Designer (file-watch) — UX-Designer ensures design fidelity
|
|
11
|
+
# - REVIEW phase: Reviewer + PM (file-watch) — PM validates business requirements
|
|
12
|
+
#
|
|
13
|
+
# Compared to base bdd: Adds tandem observers on every working phase.
|
|
14
|
+
# Designer-developer pairing ensures UX intent survives implementation.
|
|
15
|
+
#
|
|
16
|
+
# Flow: SM → UX-Designer (+Architect) → TEA (+Dev) → Dev (+UX-Designer) → Reviewer (+PM) → SM
|
|
8
17
|
|
|
9
18
|
workflow:
|
|
10
19
|
name: bdd-tandem
|
|
11
|
-
description: BDD with full tandem chain
|
|
20
|
+
description: BDD with full tandem chain — designer and architect consultation across phases
|
|
12
21
|
version: "1.0.0"
|
|
13
22
|
|
|
14
23
|
phases:
|
|
@@ -36,6 +45,9 @@ workflow:
|
|
|
36
45
|
file: gates/tests-fail
|
|
37
46
|
type: tests_fail
|
|
38
47
|
condition: Behavior scenarios have test coverage
|
|
48
|
+
tandem:
|
|
49
|
+
partner: dev
|
|
50
|
+
scope: file-watch
|
|
39
51
|
|
|
40
52
|
- name: green
|
|
41
53
|
agent: dev
|
|
@@ -32,7 +32,7 @@ Build a complete picture of uncommitted changes across ALL repos defined in `.cl
|
|
|
32
32
|
**CRITICAL: Use the multi-repo script, not plain `git status`.**
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
|
|
35
|
+
pf git status
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
This shows branch, staged/unstaged changes, and unpushed commits for **all repos** defined in the project configuration.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Review Tandem Workflow - TDD with Focused Architectural Review
|
|
2
|
+
#
|
|
3
|
+
# When to use: Best for stories that primarily need architectural review during
|
|
4
|
+
# the review phase. Use this for large refactors (10+ pts), cross-cutting
|
|
5
|
+
# infrastructure changes, or stories where an architect audit catches issues
|
|
6
|
+
# that a standard code review might miss.
|
|
7
|
+
#
|
|
8
|
+
# Tandem pairings:
|
|
9
|
+
# - REVIEW phase: Reviewer + Architect (file-watch) — Architect provides
|
|
10
|
+
# focused architectural audit alongside standard code review
|
|
11
|
+
#
|
|
12
|
+
# Compared to base tdd: Same phase flow, but adds architect consultation
|
|
13
|
+
# during review only. Lighter than tdd-tandem (no tandem on red/green phases).
|
|
14
|
+
#
|
|
15
|
+
# Flow: SM → TEA → Dev → Reviewer (+Architect) → SM
|
|
16
|
+
|
|
17
|
+
workflow:
|
|
18
|
+
name: review-tandem
|
|
19
|
+
description: TDD with tandem architect consultation on review phase
|
|
20
|
+
version: "1.0.0"
|
|
21
|
+
|
|
22
|
+
phases:
|
|
23
|
+
- name: setup
|
|
24
|
+
agent: sm
|
|
25
|
+
output: [session_file, branches, story_context]
|
|
26
|
+
|
|
27
|
+
- name: red
|
|
28
|
+
agent: tea
|
|
29
|
+
input: [session_file, story_context]
|
|
30
|
+
output: [failing_tests]
|
|
31
|
+
gate:
|
|
32
|
+
file: gates/tests-fail
|
|
33
|
+
type: tests_fail
|
|
34
|
+
condition: All acceptance criteria have test coverage
|
|
35
|
+
|
|
36
|
+
- name: green
|
|
37
|
+
agent: dev
|
|
38
|
+
input: [failing_tests, story_context]
|
|
39
|
+
output: [implementation, passing_tests]
|
|
40
|
+
gate:
|
|
41
|
+
file: gates/tests-pass
|
|
42
|
+
type: tests_pass
|
|
43
|
+
condition: All tests passing, no skipped tests
|
|
44
|
+
|
|
45
|
+
- name: review
|
|
46
|
+
agent: reviewer
|
|
47
|
+
input: [implementation, passing_tests]
|
|
48
|
+
output: [approval]
|
|
49
|
+
gate:
|
|
50
|
+
file: gates/approval
|
|
51
|
+
type: approval
|
|
52
|
+
condition: Code review approved, architecture validated
|
|
53
|
+
tandem:
|
|
54
|
+
partner: architect
|
|
55
|
+
scope: file-watch
|
|
56
|
+
|
|
57
|
+
- name: finish
|
|
58
|
+
agent: sm
|
|
59
|
+
input: [approval]
|
|
60
|
+
output: [archived_session, story_summary]
|
|
61
|
+
|
|
62
|
+
triggers:
|
|
63
|
+
tags: [review-tandem, tandem]
|
|
64
|
+
points:
|
|
65
|
+
min: 8
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
# TDD Tandem Workflow - TDD with Full Tandem Chain
|
|
2
|
-
# Extends standard TDD with tandem observers on every phase:
|
|
3
|
-
# - Architect backseats TEA during red phase
|
|
4
|
-
# - TEA backseats Dev during green phase
|
|
5
|
-
# - PM backseats Reviewer during review phase
|
|
6
2
|
#
|
|
7
|
-
#
|
|
3
|
+
# When to use: Best for 5+ point feature stories where architectural alignment
|
|
4
|
+
# during implementation provides high value. Use this instead of base tdd when
|
|
5
|
+
# the story involves cross-cutting concerns, new patterns, or complex integrations.
|
|
6
|
+
#
|
|
7
|
+
# Tandem pairings:
|
|
8
|
+
# - RED phase: TEA + Architect (file-watch) — Architect reviews test strategy
|
|
9
|
+
# - GREEN phase: Dev + Architect (file-watch) — Architect guides implementation patterns
|
|
10
|
+
# - REVIEW phase: Reviewer + PM (file-watch) — PM validates business requirements
|
|
11
|
+
#
|
|
12
|
+
# Compared to base tdd: Adds tandem observers on every working phase.
|
|
13
|
+
# The extra context from partner agents helps catch architectural drift early.
|
|
14
|
+
#
|
|
15
|
+
# Flow: SM → TEA (+Architect) → Dev (+Architect) → Reviewer (+PM) → SM
|
|
8
16
|
|
|
9
17
|
workflow:
|
|
10
18
|
name: tdd-tandem
|
|
11
|
-
description: TDD with full tandem chain across
|
|
19
|
+
description: TDD with full tandem chain — architect and PM consultation across phases
|
|
12
20
|
version: "2.0.0"
|
|
13
21
|
|
|
14
22
|
phases:
|
|
@@ -37,7 +45,7 @@ workflow:
|
|
|
37
45
|
type: tests_pass
|
|
38
46
|
condition: All tests passing, no skipped tests
|
|
39
47
|
tandem:
|
|
40
|
-
partner:
|
|
48
|
+
partner: architect
|
|
41
49
|
scope: file-watch
|
|
42
50
|
|
|
43
51
|
- name: review
|
|
@@ -60,5 +68,5 @@ workflow:
|
|
|
60
68
|
triggers:
|
|
61
69
|
tags: [tandem]
|
|
62
70
|
points:
|
|
63
|
-
min:
|
|
71
|
+
min: 5
|
|
64
72
|
default: false
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# TDD Workflow - Test-Driven Development
|
|
2
2
|
# Default workflow for feature development in Pennyfarthing
|
|
3
3
|
#
|
|
4
|
-
# Flow: SM → TEA → Dev → Reviewer → SM
|
|
4
|
+
# Flow: SM → TEA → Dev → TEA (verify) → Reviewer → SM
|
|
5
5
|
# Scale routing: 1-2 pts use 'trivial' workflow instead
|
|
6
6
|
|
|
7
7
|
workflow:
|
|
@@ -32,9 +32,18 @@ workflow:
|
|
|
32
32
|
type: tests_pass
|
|
33
33
|
condition: All tests passing, no skipped tests
|
|
34
34
|
|
|
35
|
+
- name: verify
|
|
36
|
+
agent: tea
|
|
37
|
+
input: [implementation, passing_tests]
|
|
38
|
+
output: [quality_verified]
|
|
39
|
+
gate:
|
|
40
|
+
file: gates/quality-pass
|
|
41
|
+
type: quality_pass
|
|
42
|
+
condition: Lint, typecheck, and all tests passing
|
|
43
|
+
|
|
35
44
|
- name: review
|
|
36
45
|
agent: reviewer
|
|
37
|
-
input: [implementation, passing_tests]
|
|
46
|
+
input: [implementation, passing_tests, quality_verified]
|
|
38
47
|
output: [approval]
|
|
39
48
|
gate:
|
|
40
49
|
file: gates/approval
|
|
@@ -12,8 +12,9 @@ Python Click CLI for Pennyfarthing. Entry point: `pennyfarthing_scripts/cli.py`.
|
|
|
12
12
|
| `pf bc` | Panel focus and layout management | `bc/cli.py` |
|
|
13
13
|
| `pf validate` | Project validators | `validate/cli.py` |
|
|
14
14
|
| `pf agent` | Agent session management | `cli.py` (inline) |
|
|
15
|
-
| `pf workflow` | Workflow state and phase management | `cli.py`
|
|
15
|
+
| `pf workflow` | Workflow state and phase management | `workflow/cli.py` |
|
|
16
16
|
| `pf bikerack` | BikeRack dashboard launcher | `bikerack/cli.py` |
|
|
17
|
+
| `pf git` | Repository operations (status, branches, worktree, hooks) | `git_group/cli.py` |
|
|
17
18
|
| `pf debug` | Analysis tools (hotspots, deadcode, healthscore) | `cli.py` (inline group) |
|
|
18
19
|
|
|
19
20
|
### Sugar Shortcuts
|
|
@@ -139,9 +140,17 @@ Options: `--session-id`, `--no-persona`, `--json`, `--minimal`, `--full`, `--qui
|
|
|
139
140
|
|
|
140
141
|
| Command | Description | Source |
|
|
141
142
|
|---------|-------------|--------|
|
|
142
|
-
| `pf workflow check` | Current workflow state | `workflow.py` |
|
|
143
|
-
| `pf workflow phase-check WORKFLOW PHASE` | Check phase owner | `workflow.py` |
|
|
144
|
-
| `pf workflow handoff AGENT` | Emit handoff marker | `cli.py`
|
|
143
|
+
| `pf workflow check [--json]` | Current workflow state | `workflow/cli.py` |
|
|
144
|
+
| `pf workflow phase-check WORKFLOW PHASE` | Check phase owner | `workflow/cli.py` |
|
|
145
|
+
| `pf workflow handoff AGENT` | Emit handoff marker | `workflow/cli.py` |
|
|
146
|
+
| `pf workflow type WORKFLOW` | Get workflow type (phased/stepped/procedural) | `workflow/cli.py` |
|
|
147
|
+
| `pf workflow list` | List all available workflows | `workflow/cli.py` |
|
|
148
|
+
| `pf workflow show [NAME]` | Show workflow details | `workflow/cli.py` |
|
|
149
|
+
| `pf workflow start NAME [--mode M]` | Start stepped workflow | `workflow/cli.py` |
|
|
150
|
+
| `pf workflow resume [NAME]` | Resume interrupted workflow | `workflow/cli.py` |
|
|
151
|
+
| `pf workflow status [NAME]` | Show stepped workflow progress | `workflow/cli.py` |
|
|
152
|
+
| `pf workflow fix-phase ID PHASE [--dry-run]` | Repair session phase | `workflow/cli.py` |
|
|
153
|
+
| `pf workflow complete-step [NAME] [--step N]` | Complete current step | `workflow/cli.py` |
|
|
145
154
|
|
|
146
155
|
## pf bikerack
|
|
147
156
|
|
|
@@ -151,6 +160,19 @@ Options: `--session-id`, `--no-persona`, `--json`, `--minimal`, `--full`, `--qui
|
|
|
151
160
|
| `pf bikerack stop` | Stop running instance | `bikerack/cli.py` |
|
|
152
161
|
| `pf bikerack status` | Show running state | `bikerack/cli.py` |
|
|
153
162
|
|
|
163
|
+
## pf git
|
|
164
|
+
|
|
165
|
+
| Command | Description | Source |
|
|
166
|
+
|---------|-------------|--------|
|
|
167
|
+
| `pf git status [--brief]` | Check git status of all repos | `git/status_all.py` |
|
|
168
|
+
| `pf git branches BRANCH [--repos all\|api\|ui]` | Create feature branches | `git/create_branches.py` |
|
|
169
|
+
| `pf git cleanup` | Start git-cleanup workflow | `git_group/cli.py` |
|
|
170
|
+
| `pf git worktree create NAME BRANCH` | Create worktree(s) | `git/worktree.py` |
|
|
171
|
+
| `pf git worktree remove NAME` | Remove worktree | `git/worktree.py` |
|
|
172
|
+
| `pf git worktree list` | List active worktrees | `git/worktree.py` |
|
|
173
|
+
| `pf git worktree status` | Show worktree status | `git/worktree.py` |
|
|
174
|
+
| `pf git install-hooks` | Install git hooks with .d/ dispatcher | `git/hooks_installer.py` |
|
|
175
|
+
|
|
154
176
|
## pf debug
|
|
155
177
|
|
|
156
178
|
| Command | Description | Source |
|
|
@@ -162,16 +184,25 @@ Options: `--session-id`, `--no-persona`, `--json`, `--minimal`, `--full`, `--qui
|
|
|
162
184
|
| `pf debug deadcode exports` | Unused TypeScript exports | `deadcode/cli.py` |
|
|
163
185
|
| `pf debug healthscore analyze` | Composite health score | `healthscore/cli.py` |
|
|
164
186
|
|
|
165
|
-
## Hooks (
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
|
170
|
-
|
|
171
|
-
| `
|
|
172
|
-
| `
|
|
173
|
-
| `
|
|
174
|
-
| `
|
|
187
|
+
## Hooks (`pf hooks`)
|
|
188
|
+
|
|
189
|
+
All hooks are in `hooks/` subpackage, invoked via `pf hooks <name>`.
|
|
190
|
+
|
|
191
|
+
| Command | Hook Type | Purpose |
|
|
192
|
+
|---------|-----------|---------|
|
|
193
|
+
| `pf hooks session-start` | SessionStart | Session setup, checkpoint, WheelHub, welcome |
|
|
194
|
+
| `pf hooks session-stop` | Stop | Save checkpoint for cross-session continuity |
|
|
195
|
+
| `pf hooks reflector-check` | Stop | Enforce CYCLIST reflector markers |
|
|
196
|
+
| `pf hooks pre-edit-check` | PreToolUse | Block edits to protected files |
|
|
197
|
+
| `pf hooks context-warning` | PreToolUse | Warn when context usage is high |
|
|
198
|
+
| `pf hooks context-breaker` | PreToolUse | Block tool execution at critical context |
|
|
199
|
+
| `pf hooks cyclist-pretooluse` | PreToolUse | Route approval through WheelHub |
|
|
200
|
+
| `pf hooks schema-validation` | PreToolUse:Write | Validate session/skill/step schema |
|
|
201
|
+
| `pf hooks bell-mode` | PostToolUse | Bell queue + tandem injection |
|
|
202
|
+
| `pf hooks sprint-yaml` | PostToolUse | Validate sprint YAML (YAML 1.2) |
|
|
203
|
+
| `pf hooks statusline` | statusLine | Render Claude Code status bar |
|
|
204
|
+
|
|
205
|
+
Legacy shims (`bellmode_hook.py`, `pretooluse_hook.py`, etc.) re-export from `hooks/` for backward compat.
|
|
175
206
|
|
|
176
207
|
## Architecture
|
|
177
208
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -34,8 +34,8 @@ from pennyfarthing_scripts.bc.focus import (
|
|
|
34
34
|
def _get_current_layout() -> dict | None:
|
|
35
35
|
"""Fetch the current layout from a running Cyclist or BikeRack server.
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
Reads .wheelhub-port (shared by both Cyclist and BikeRack) and fetches
|
|
38
|
+
the layout endpoint.
|
|
39
39
|
|
|
40
40
|
Returns:
|
|
41
41
|
Layout dict, or None if no server is running or fetch fails.
|
|
@@ -44,10 +44,8 @@ def _get_current_layout() -> dict | None:
|
|
|
44
44
|
|
|
45
45
|
root = _get_root()
|
|
46
46
|
|
|
47
|
-
# Try BikeRack first (bikerack-layout), then Cyclist (layout)
|
|
48
47
|
candidates = [
|
|
49
|
-
(root / ".
|
|
50
|
-
(root / ".cyclist-port", "/api/settings/bikerack-layout"),
|
|
48
|
+
(root / ".wheelhub-port", "/api/settings/bikerack-layout"),
|
|
51
49
|
]
|
|
52
50
|
|
|
53
51
|
for port_file, endpoint in candidates:
|