@pennyfarthing/core 11.3.3 → 11.3.5
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 +1 -1
- package/package.json +3 -2
- package/packages/core/dist/workflow/__test_context_watch__/.session/.tandem-turn-counter +1 -0
- package/packages/core/dist/workflow/__test_context_watch__/.session/95-6-session.md +3 -0
- package/packages/core/dist/workflow/__test_context_watch__/.session/95-6-tandem-architect.md +6 -0
- package/packages/core/dist/workflow/__test_file_watch__/.session/95-4-tandem-architect.md +6 -0
- package/packages/core/dist/workflow/__test_file_watch__/workdir/trigger.ts +1 -0
- package/packages/core/dist/workflow/__test_tool_watch__/.session/95-5-tandem-architect.md +6 -0
- package/packages/core/dist/workflow/__test_tool_watch__/.session/95-5-tandem-toolcalls.jsonl +1 -0
- package/packages/core/dist/workflow/cross-entity-validation.d.ts +117 -0
- package/packages/core/dist/workflow/cross-entity-validation.d.ts.map +1 -0
- package/packages/core/dist/workflow/cross-entity-validation.js +148 -0
- package/packages/core/dist/workflow/cross-entity-validation.js.map +1 -0
- package/packages/core/dist/workflow/cross-entity-validation.test.d.ts +10 -0
- package/packages/core/dist/workflow/cross-entity-validation.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/cross-entity-validation.test.js +512 -0
- package/packages/core/dist/workflow/cross-entity-validation.test.js.map +1 -0
- package/pennyfarthing-dist/agents/sm-finish.md +2 -2
- package/pennyfarthing-dist/agents/testing-runner.md +1 -1
- package/pennyfarthing-dist/commands/pf-prime.md +1 -1
- package/pennyfarthing-dist/guides/agent-behavior.md +1 -1
- package/pennyfarthing-dist/guides/bikerack.md +1 -1
- package/pennyfarthing-dist/guides/brownfield-tools.md +7 -7
- package/pennyfarthing-dist/guides/gates.md +3 -3
- package/pennyfarthing-dist/guides/handoff-cli.md +6 -6
- package/pennyfarthing-dist/guides/prime.md +6 -6
- package/pennyfarthing-dist/guides/scale-levels.md +1 -1
- package/pennyfarthing-dist/personas/themes/firefly.yaml +4 -4
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/CLAUDE.md +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/README.md +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/__pycache__/context.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bc/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bc/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bc/__pycache__/focus.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bc/__pycache__/split.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bc/cli.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bc/focus.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bc/split.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bellmode_hook.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/__init__.py +1 -1
- package/pennyfarthing-dist/pf/bikerack/__main__.py +5 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/__pycache__/launcher.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/audit_log_panel.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/background_panel.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/changed_panel.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/cli.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/context_meter_footer.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/debug_panel.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/diffs_panel.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/git_panel.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/launcher.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/portrait_resolver.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/progress_panel.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/sprint_panel.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/story_detail_data.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/story_detail_screen.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/tui.py +17 -17
- package/pennyfarthing-dist/pf/bmad/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bmad/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bmad/cli.py +7 -7
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bmad/importer.py +4 -4
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bmad/sync.py +9 -9
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bmad/test_parser.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bmad/test_sync.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/brownfield/__init__.py +1 -1
- package/pennyfarthing-dist/pf/brownfield/__main__.py +8 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/brownfield/cli.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/cli.py +24 -24
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/codemarkers/__init__.py +2 -2
- package/pennyfarthing-dist/pf/codemarkers/__main__.py +6 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/codemarkers/analyze.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/codemarkers/cli.py +8 -8
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/codemarkers/formatters.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/common/__init__.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/common/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/common/__pycache__/config.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/common/__pycache__/output.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/common/pr_config.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/common/themes.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/complexity/__init__.py +2 -2
- package/pennyfarthing-dist/pf/complexity/__main__.py +6 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/complexity/analyze.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/complexity/cli.py +4 -4
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/complexity/formatters.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/config.py +2 -2
- package/pennyfarthing-dist/pf/consultation/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/consultation/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/consultation/cli.py +5 -5
- package/pennyfarthing-dist/pf/deadcode/__main__.py +6 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/deadcode/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/deadcode/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/deadcode/analyze.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/deadcode/cli.py +8 -8
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/deadcode/formatters.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/dependencies/__init__.py +2 -2
- package/pennyfarthing-dist/pf/dependencies/__main__.py +5 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/dependencies/analyze.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/dependencies/cli.py +4 -4
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/dependencies/formatters.py +1 -1
- package/pennyfarthing-dist/pf/epic/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/epic/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/gate/cli.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/git/__init__.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/git/create_branches.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/git/hooks_installer.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/git/repos.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/git/status_all.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/git/worktree.py +3 -3
- package/pennyfarthing-dist/pf/git_group/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/git_group/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/git_group/cli.py +10 -10
- package/pennyfarthing-dist/pf/handoff/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/handoff/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/handoff/cli.py +5 -5
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/handoff/marker.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/handoff/phase_check.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/healthscore/__init__.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/healthscore/__main__.py +2 -2
- package/pennyfarthing-dist/pf/healthscore/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/healthscore/__pycache__/analyze.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/healthscore/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/healthscore/__pycache__/models.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/healthscore/analyze.py +8 -8
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/healthscore/cli.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/healthscore/formatters.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__pycache__/bell_mode.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__pycache__/context_breaker.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__pycache__/context_warning.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__pycache__/cyclist_pretooluse.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__pycache__/statusline.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/bell_mode.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/cli.py +11 -11
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/context_breaker.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/context_warning.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/cyclist_pretooluse.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/schema_validation.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/session_start.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/sprint_yaml_validation.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/statusline.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hotspots/__init__.py +2 -2
- package/pennyfarthing-dist/pf/hotspots/__main__.py +6 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hotspots/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hotspots/__pycache__/analyze.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hotspots/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hotspots/__pycache__/models.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hotspots/analyze.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hotspots/cli.py +5 -5
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hotspots/formatters.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__init__.py +5 -5
- package/pennyfarthing-dist/pf/jira/__main__.py +10 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/bidirectional.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/claim.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/client.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/create.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/epic.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/operations.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/reconcile.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/story.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/__pycache__/sync.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/bidirectional.py +9 -9
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/claim.py +4 -4
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/cli.py +15 -15
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/client.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/create.py +5 -5
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/epic.py +6 -6
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/operations.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/reconcile.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/story.py +6 -6
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira/sync.py +5 -5
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira_bidirectional_sync.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira_epic_creation.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira_sync.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/jira_sync_story.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/launch/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/launch/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/launch/cli.py +7 -7
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/migration/__init__.py +5 -5
- package/pennyfarthing-dist/pf/migration/__main__.py +10 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/migration/cli.py +6 -6
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/migration/validate.py +7 -7
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/output.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/patch_mode.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/preflight/__init__.py +1 -1
- package/pennyfarthing-dist/pf/preflight/__main__.py +10 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/preflight/cli.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/pretooluse_hook.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/__init__.py +7 -7
- package/pennyfarthing-dist/pf/prime/__main__.py +8 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/cli.py +9 -9
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/heatmap.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/loader.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/persona.py +4 -4
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/session.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/tiers.py +4 -4
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/workflow.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/schema_validation_hook.py +1 -1
- package/pennyfarthing-dist/pf/session/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/session/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/session/cli.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/session_start_hook.py +1 -1
- package/pennyfarthing-dist/pf/settings/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/settings/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/settings/cli.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/settings/settings.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__init__.py +5 -5
- package/pennyfarthing-dist/pf/sprint/__main__.py +10 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/archive.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/epic_add.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/epic_update.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/loader.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/status.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/story_add.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/story_update.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/validate_cmd.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/validator.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/work.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/__pycache__/yaml_io.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/archive.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/archive_epic.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/cli.py +41 -41
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/epic_add.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/epic_update.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/import_epic.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/loader.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/status.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/story_add.py +5 -5
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/story_finish.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/story_update.py +4 -4
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/validate_cmd.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/validator.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/work.py +4 -4
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/story/__init__.py +7 -7
- package/pennyfarthing-dist/pf/story/__main__.py +10 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/story/cli.py +4 -4
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/story/create.py +2 -2
- package/pennyfarthing-dist/pf/tests/__init__.py +1 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/conftest.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_108_1_gate_migration.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_108_2_remove_handoff_fallback.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_archive_epic.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_bc.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_bikerack.py +39 -39
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_brownfield.py +6 -6
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_cli_modules.py +20 -20
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_cli_normalization.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_codemarkers.py +60 -60
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_common.py +17 -17
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_confidence_sm_evaluation.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_confidence_sm_gate.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_dialogue_manager.py +11 -11
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_epic_shard_validation.py +15 -15
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_gate_file_resolution.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_gate_runner.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_git_utils.py +8 -8
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_handoff_cli.py +12 -12
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_handoff_e2e.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_healthscore.py +20 -20
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_jira_package.py +29 -29
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_package_structure.py +42 -42
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_patch_mode.py +22 -22
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_prime.py +41 -41
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_resolve_gate_file_field.py +1 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_sprint_package.py +30 -30
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_sprint_panel.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_sprint_validator.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_story_add.py +11 -11
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_story_package.py +12 -12
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_story_update.py +16 -16
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_tiers.py +72 -72
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_token_counting.py +28 -28
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_topology_loader.py +37 -37
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_tui_focus.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_tui_panel_persistence.py +10 -10
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_validate_cmd.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_version_sentinel.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_workflow_check.py +7 -7
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_workflow_list_team.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/tests/test_yaml_io.py +1 -1
- package/pennyfarthing-dist/pf/theme/__main__.py +6 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/theme/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/theme/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/theme/cli.py +6 -6
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/adapters/agent.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/adapters/schema.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/adapters/skill_command.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/adapters/sprint.py +2 -2
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/adapters/tandem_awareness.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/adapters/team_mode.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/adapters/workflow.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/cli.py +9 -9
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/welcome_hook.py +1 -1
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/__init__.py +3 -3
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/__pycache__/__init__.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/__pycache__/cli.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/__pycache__/scale.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/__pycache__/state.cpython-314.pyc +0 -0
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/cli.py +18 -18
- package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/helpers.py +1 -1
- package/pennyfarthing-dist/pyproject.toml +18 -0
- package/pennyfarthing-dist/scripts/core/agent-session.sh +3 -3
- package/pennyfarthing-dist/scripts/core/check-context.sh +8 -8
- package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +3 -3
- package/pennyfarthing-dist/scripts/jira/README.md +1 -1
- package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +1 -1
- package/pennyfarthing-dist/scripts/jira/create-jira-story.sh +1 -1
- package/pennyfarthing-dist/scripts/jira/jira-claim-story.sh +1 -1
- package/pennyfarthing-dist/scripts/jira/jira-reconcile.sh +1 -1
- package/pennyfarthing-dist/scripts/jira/jira-sync-story.sh +1 -1
- package/pennyfarthing-dist/scripts/jira/sync-epic-jira.sh +1 -1
- package/pennyfarthing-dist/scripts/lib/common.sh +3 -3
- package/pennyfarthing-dist/scripts/lib/run-pf.sh +11 -13
- package/pennyfarthing-dist/scripts/sprint/README.md +1 -1
- package/pennyfarthing-dist/scripts/story/create-story.sh +1 -1
- package/pennyfarthing-dist/scripts/story/size-story.sh +1 -1
- package/pennyfarthing-dist/scripts/story/story-template.sh +1 -1
- package/pennyfarthing-dist/scripts/theme/list-themes.sh +3 -3
- package/pennyfarthing-dist/templates/pyproject.toml +3 -3
- package/pennyfarthing_scripts/__pycache__/bellmode_hook.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/config.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/bikerack/__main__.py +0 -5
- 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__/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__/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/bmad/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bmad/__pycache__/parser.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bmad/__pycache__/sync.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bmad/__pycache__/test_parser.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/bmad/__pycache__/test_sync.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/brownfield/__main__.py +0 -8
- 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/__main__.py +0 -6
- 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__/themes.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__main__.py +0 -6
- 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/deadcode/__main__.py +0 -6
- 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__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__main__.py +0 -5
- 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/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_group/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/__init__.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__/formatters.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/hotspots/__main__.py +0 -6
- package/pennyfarthing_scripts/hotspots/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__main__.py +0 -10
- package/pennyfarthing_scripts/jira/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__main__.py +0 -10
- 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/__main__.py +0 -10
- 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/__main__.py +0 -8
- 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/session/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/settings/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/settings/__pycache__/settings.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__main__.py +0 -10
- package/pennyfarthing_scripts/sprint/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/archive_epic.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/import_epic.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_finish.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__main__.py +0 -10
- 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/__init__.py +0 -1
- 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_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_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_workflow_list_team.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_yaml_io.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/theme/__main__.py +0 -6
- 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/workflow/__pycache__/helpers.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/team_lifecycle.cpython-314.pyc +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/__init__.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bc/__init__.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/base_panel.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/events.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bikerack/ws_client.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bmad/__init__.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/bmad/parser.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/brownfield/discover.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/codemarkers/models.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/common/config.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/common/output.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/complexity/models.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/consultation/__init__.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/consultation/dialogue_manager.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/context.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/deadcode/__init__.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/deadcode/models.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/dependencies/models.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/epic/__init__.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/epic/cli.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/gate/__init__.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/gate/validate.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/git_group/__init__.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/handoff/__init__.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/handoff/complete_phase.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/handoff/gate_file.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/handoff/gate_runner.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/handoff/resolve_gate.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/healthscore/models.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__init__.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/cyclist-pretooluse-hook.sh +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/pre_edit_check.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/reflector_check.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/session_stop.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hotspots/models.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/launch/__init__.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/migration/session.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/migration/skill.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/migration/step.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/preflight/finish.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/models.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/prime/version_sentinel.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/session/__init__.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/settings/__init__.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/sprint/yaml_io.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/story/size.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/story/template.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/swebench.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/theme/__init__.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/__init__.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/validate/adapters/__init__.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/scale.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/state.py +0 -0
- /package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/workflow/team_lifecycle.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Bidirectional sync between BMAD markdown and PF sprint YAML.
|
|
3
3
|
|
|
4
|
-
Modeled on
|
|
4
|
+
Modeled on pf/jira/bidirectional.py — same
|
|
5
5
|
SyncPlan/SyncChange/SyncResult pattern, adapted for BMAD's flat
|
|
6
6
|
markdown header format instead of a REST API.
|
|
7
7
|
"""
|
|
@@ -13,13 +13,13 @@ from dataclasses import dataclass, field
|
|
|
13
13
|
from pathlib import Path
|
|
14
14
|
from typing import Any, Literal
|
|
15
15
|
|
|
16
|
-
from
|
|
16
|
+
from pf.bmad.parser import (
|
|
17
17
|
discover_bmad_stories,
|
|
18
18
|
map_bmad_to_pf,
|
|
19
19
|
map_pf_to_bmad,
|
|
20
20
|
)
|
|
21
|
-
from
|
|
22
|
-
from
|
|
21
|
+
from pf.common.config import get_project_root, load_pennyfarthing_config
|
|
22
|
+
from pf.common.output import error, info, success, warn
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
# =============================================================================
|
|
@@ -71,7 +71,7 @@ class BmadSyncResult:
|
|
|
71
71
|
|
|
72
72
|
def _collect_pf_stories(sprint_path: Path) -> list[dict[str, Any]]:
|
|
73
73
|
"""Load all PF stories that have a bmad_key field."""
|
|
74
|
-
from
|
|
74
|
+
from pf.sprint.yaml_io import read_sprint
|
|
75
75
|
|
|
76
76
|
data = read_sprint(sprint_path)
|
|
77
77
|
stories: list[dict[str, Any]] = []
|
|
@@ -264,7 +264,7 @@ def execute_sync_plan(
|
|
|
264
264
|
# Apply PF updates (YAML)
|
|
265
265
|
pf_updates = [c for c in plan.changes if c.action == "update-pf"]
|
|
266
266
|
if pf_updates and sprint_path:
|
|
267
|
-
from
|
|
267
|
+
from pf.sprint.story_update import update_story
|
|
268
268
|
|
|
269
269
|
for change in pf_updates:
|
|
270
270
|
update_result = update_story(
|
|
@@ -290,7 +290,7 @@ def execute_sync_plan(
|
|
|
290
290
|
config = load_pennyfarthing_config()
|
|
291
291
|
bmad_config = config.get("bmad", {})
|
|
292
292
|
story_subdir = bmad_config.get("story_dir", "implementation-artifacts")
|
|
293
|
-
from
|
|
293
|
+
from pf.bmad.parser import discover_bmad_stories as _discover
|
|
294
294
|
|
|
295
295
|
all_bmad = _discover(bmad_root, story_dir=story_subdir)
|
|
296
296
|
bmad_paths = {s["bmad_key"]: s["bmad_path"] for s in all_bmad}
|
|
@@ -326,8 +326,8 @@ def _import_new_stories(
|
|
|
326
326
|
|
|
327
327
|
Returns count of successfully imported stories.
|
|
328
328
|
"""
|
|
329
|
-
from
|
|
330
|
-
from
|
|
329
|
+
from pf.bmad.parser import discover_bmad_stories as _discover
|
|
330
|
+
from pf.sprint.yaml_io import read_sprint, write_sprint
|
|
331
331
|
|
|
332
332
|
config = load_pennyfarthing_config()
|
|
333
333
|
bmad_config = config.get("bmad", {})
|
|
@@ -7,7 +7,7 @@ from pathlib import Path
|
|
|
7
7
|
|
|
8
8
|
import pytest
|
|
9
9
|
|
|
10
|
-
from
|
|
10
|
+
from pf.bmad.parser import (
|
|
11
11
|
BMAD_TO_PF_STATUS,
|
|
12
12
|
PF_TO_BMAD_STATUS,
|
|
13
13
|
discover_bmad_stories,
|
|
@@ -244,7 +244,7 @@ class TestDiscovery:
|
|
|
244
244
|
(epics_dir / "epic-02-ingestion.md").write_text(SAMPLE_EPIC)
|
|
245
245
|
(epics_dir / "index.md").write_text("# Index\n")
|
|
246
246
|
|
|
247
|
-
from
|
|
247
|
+
from pf.bmad.parser import discover_bmad_epics
|
|
248
248
|
|
|
249
249
|
epics = discover_bmad_epics(tmp_path)
|
|
250
250
|
|
|
@@ -6,7 +6,7 @@ from pathlib import Path
|
|
|
6
6
|
|
|
7
7
|
import pytest
|
|
8
8
|
|
|
9
|
-
from
|
|
9
|
+
from pf.bmad.sync import (
|
|
10
10
|
BmadSyncChange,
|
|
11
11
|
BmadSyncPlan,
|
|
12
12
|
_update_bmad_file_status,
|
|
@@ -31,7 +31,7 @@ def _pf_story(story_id: str, bmad_key: str, status: str = "ready") -> dict:
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
def _bmad_story(bmad_key: str, bmad_status: str = "ready-for-dev") -> dict:
|
|
34
|
-
from
|
|
34
|
+
from pf.bmad.parser import map_bmad_to_pf
|
|
35
35
|
|
|
36
36
|
parts = bmad_key.split("-", 2)
|
|
37
37
|
return {
|
|
@@ -4,7 +4,7 @@ Brownfield discovery module for Pennyfarthing.
|
|
|
4
4
|
Analyzes existing codebases and generates AI-ready documentation.
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
|
-
from
|
|
7
|
+
from pf.brownfield.discover import (
|
|
8
8
|
DepthLevel,
|
|
9
9
|
DiscoveryResult,
|
|
10
10
|
ProjectType,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Brownfield CLI - Analyze existing codebases.
|
|
3
3
|
|
|
4
4
|
Usage:
|
|
5
|
-
python -m
|
|
5
|
+
python -m pf.brownfield <subcommand> [args]
|
|
6
6
|
|
|
7
7
|
Subcommands:
|
|
8
8
|
scan Scan codebase and generate documentation
|
|
@@ -13,7 +13,7 @@ import asyncio
|
|
|
13
13
|
import sys
|
|
14
14
|
from pathlib import Path
|
|
15
15
|
|
|
16
|
-
from
|
|
16
|
+
from pf.brownfield.discover import (
|
|
17
17
|
DepthLevel,
|
|
18
18
|
discover,
|
|
19
19
|
)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Pennyfarthing CLI - Command line interface for agent orchestration.
|
|
3
3
|
|
|
4
4
|
Usage:
|
|
5
|
-
python -m
|
|
5
|
+
python -m pf.cli [OPTIONS] COMMAND [ARGS]...
|
|
6
6
|
pf [OPTIONS] COMMAND [ARGS]...
|
|
7
7
|
|
|
8
8
|
This module uses lazy loading to keep startup time under 200ms.
|
|
@@ -12,7 +12,7 @@ Heavy imports (httpx, workflow modules) are deferred until needed.
|
|
|
12
12
|
import click
|
|
13
13
|
|
|
14
14
|
# Get version from package - this is a fast import
|
|
15
|
-
from
|
|
15
|
+
from pf import __version__
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
@click.group()
|
|
@@ -44,7 +44,7 @@ def cli():
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
# Import and register sprint group (lazy registration preserves startup time)
|
|
47
|
-
from
|
|
47
|
+
from pf.sprint.cli import sprint # noqa: E402
|
|
48
48
|
|
|
49
49
|
cli.add_command(sprint)
|
|
50
50
|
|
|
@@ -55,9 +55,9 @@ cli.add_command(sprint.commands["work"], "work")
|
|
|
55
55
|
cli.add_command(sprint.commands["story"], "story")
|
|
56
56
|
|
|
57
57
|
# Import analysis groups
|
|
58
|
-
from
|
|
59
|
-
from
|
|
60
|
-
from
|
|
58
|
+
from pf.deadcode.cli import deadcode # noqa: E402
|
|
59
|
+
from pf.healthscore.cli import healthscore # noqa: E402
|
|
60
|
+
from pf.hotspots.cli import hotspots # noqa: E402
|
|
61
61
|
|
|
62
62
|
|
|
63
63
|
@cli.group()
|
|
@@ -86,74 +86,74 @@ cli.add_command(healthscore, "healthscore")
|
|
|
86
86
|
cli.commands["healthscore"].hidden = True
|
|
87
87
|
|
|
88
88
|
# Import and register jira group
|
|
89
|
-
from
|
|
89
|
+
from pf.jira.cli import jira # noqa: E402
|
|
90
90
|
|
|
91
91
|
cli.add_command(jira)
|
|
92
92
|
|
|
93
93
|
# Import and register bmad group
|
|
94
|
-
from
|
|
94
|
+
from pf.bmad.cli import bmad # noqa: E402
|
|
95
95
|
|
|
96
96
|
cli.add_command(bmad)
|
|
97
97
|
|
|
98
98
|
# Import and register theme group
|
|
99
|
-
from
|
|
99
|
+
from pf.theme.cli import theme # noqa: E402
|
|
100
100
|
|
|
101
101
|
cli.add_command(theme)
|
|
102
102
|
|
|
103
103
|
# Import and register validate group
|
|
104
|
-
from
|
|
104
|
+
from pf.validate.cli import validate # noqa: E402
|
|
105
105
|
|
|
106
106
|
cli.add_command(validate)
|
|
107
107
|
|
|
108
108
|
# Import and register bikerack group
|
|
109
|
-
from
|
|
109
|
+
from pf.bikerack.cli import bikerack # noqa: E402
|
|
110
110
|
|
|
111
111
|
cli.add_command(bikerack)
|
|
112
112
|
|
|
113
113
|
# Import and register launch group + top-level sugar aliases
|
|
114
|
-
from
|
|
114
|
+
from pf.launch.cli import launch # noqa: E402
|
|
115
115
|
|
|
116
116
|
cli.add_command(launch)
|
|
117
117
|
cli.add_command(launch.commands["gui"], "gui")
|
|
118
118
|
cli.add_command(launch.commands["tui"], "tui")
|
|
119
119
|
|
|
120
120
|
# Import and register bc group
|
|
121
|
-
from
|
|
121
|
+
from pf.bc.cli import bc # noqa: E402
|
|
122
122
|
|
|
123
123
|
cli.add_command(bc)
|
|
124
124
|
|
|
125
125
|
# Import and register handoff group
|
|
126
|
-
from
|
|
126
|
+
from pf.handoff.cli import handoff # noqa: E402
|
|
127
127
|
|
|
128
128
|
cli.add_command(handoff)
|
|
129
129
|
|
|
130
130
|
# Import and register git group
|
|
131
|
-
from
|
|
131
|
+
from pf.git_group.cli import git # noqa: E402
|
|
132
132
|
|
|
133
133
|
cli.add_command(git)
|
|
134
134
|
|
|
135
135
|
# Import and register session group
|
|
136
|
-
from
|
|
136
|
+
from pf.session.cli import session # noqa: E402
|
|
137
137
|
|
|
138
138
|
cli.add_command(session)
|
|
139
139
|
|
|
140
140
|
# Import and register epic group
|
|
141
|
-
from
|
|
141
|
+
from pf.epic.cli import epic # noqa: E402
|
|
142
142
|
|
|
143
143
|
cli.add_command(epic)
|
|
144
144
|
|
|
145
145
|
# Import and register consultation group
|
|
146
|
-
from
|
|
146
|
+
from pf.consultation.cli import consultation # noqa: E402
|
|
147
147
|
|
|
148
148
|
cli.add_command(consultation)
|
|
149
149
|
|
|
150
150
|
# Import and register hooks group
|
|
151
|
-
from
|
|
151
|
+
from pf.hooks.cli import hooks # noqa: E402
|
|
152
152
|
|
|
153
153
|
cli.add_command(hooks)
|
|
154
154
|
|
|
155
155
|
# Import and register settings group
|
|
156
|
-
from
|
|
156
|
+
from pf.settings.cli import settings # noqa: E402
|
|
157
157
|
|
|
158
158
|
cli.add_command(settings)
|
|
159
159
|
|
|
@@ -199,7 +199,7 @@ def agent_start(
|
|
|
199
199
|
NAME - Agent name (sm, tea, dev, reviewer, etc.)
|
|
200
200
|
"""
|
|
201
201
|
# Lazy import - only load when command is actually invoked
|
|
202
|
-
from
|
|
202
|
+
from pf.prime import prime
|
|
203
203
|
|
|
204
204
|
exit_code = prime(
|
|
205
205
|
agent_name=name,
|
|
@@ -237,7 +237,7 @@ def agent_heatmap(
|
|
|
237
237
|
pf agent heatmap --all # Summary across all agents
|
|
238
238
|
pf agent heatmap dev --json # JSON output for tooling
|
|
239
239
|
"""
|
|
240
|
-
from
|
|
240
|
+
from pf.prime.heatmap import run_heatmap
|
|
241
241
|
|
|
242
242
|
exit_code = run_heatmap(
|
|
243
243
|
agent_name=name,
|
|
@@ -249,7 +249,7 @@ def agent_heatmap(
|
|
|
249
249
|
|
|
250
250
|
|
|
251
251
|
# Import and register workflow group
|
|
252
|
-
from
|
|
252
|
+
from pf.workflow.cli import workflow # noqa: E402
|
|
253
253
|
|
|
254
254
|
cli.add_command(workflow)
|
|
255
255
|
|
|
@@ -266,7 +266,7 @@ def help_cmd(group: str | None):
|
|
|
266
266
|
|
|
267
267
|
import yaml
|
|
268
268
|
|
|
269
|
-
from
|
|
269
|
+
from pf.common.config import get_project_root
|
|
270
270
|
|
|
271
271
|
root = get_project_root()
|
|
272
272
|
registry_path = root / "pennyfarthing-dist" / "command-registry.yaml"
|
|
@@ -5,8 +5,8 @@ Story 80-1: Python codemarkers module.
|
|
|
5
5
|
Story 80-2: @deprecated detection and caller cross-reference.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
from
|
|
9
|
-
from
|
|
8
|
+
from pf.codemarkers.analyze import analyze_deprecations, analyze_repo
|
|
9
|
+
from pf.codemarkers.models import (
|
|
10
10
|
CodeMarker,
|
|
11
11
|
CodeMarkersResult,
|
|
12
12
|
DeprecationMarker,
|
|
@@ -15,7 +15,7 @@ from collections import defaultdict
|
|
|
15
15
|
from datetime import UTC, datetime
|
|
16
16
|
from pathlib import Path
|
|
17
17
|
|
|
18
|
-
from
|
|
18
|
+
from pf.codemarkers.models import (
|
|
19
19
|
CodeMarker,
|
|
20
20
|
CodeMarkersResult,
|
|
21
21
|
DeprecationMarker,
|
|
@@ -42,8 +42,8 @@ def _common_options(fn):
|
|
|
42
42
|
|
|
43
43
|
def _run_analysis(repo: str | None, repo_path: str | None, days: int, exclude: tuple):
|
|
44
44
|
"""Run analysis and return result."""
|
|
45
|
-
from
|
|
46
|
-
from
|
|
45
|
+
from pf.codemarkers.analyze import analyze_repo
|
|
46
|
+
from pf.common.config import get_project_root
|
|
47
47
|
|
|
48
48
|
excludes = list(exclude) if exclude else None
|
|
49
49
|
|
|
@@ -52,7 +52,7 @@ def _run_analysis(repo: str | None, repo_path: str | None, days: int, exclude: t
|
|
|
52
52
|
return asyncio.run(analyze_repo(p.name, p, days, excludes))
|
|
53
53
|
elif repo:
|
|
54
54
|
project_root = get_project_root()
|
|
55
|
-
from
|
|
55
|
+
from pf.common.config import load_yaml_config
|
|
56
56
|
repos_yaml = load_yaml_config(project_root / ".pennyfarthing" / "repos.yaml")
|
|
57
57
|
if repos_yaml and repo in repos_yaml:
|
|
58
58
|
cfg = repos_yaml[repo]
|
|
@@ -74,7 +74,7 @@ def _run_analysis(repo: str | None, repo_path: str | None, days: int, exclude: t
|
|
|
74
74
|
|
|
75
75
|
def _output_result(result, fmt: str, output_file: str | None, top: int, mode: str):
|
|
76
76
|
"""Format and output the analysis result."""
|
|
77
|
-
from
|
|
77
|
+
from pf.codemarkers.formatters import (
|
|
78
78
|
export_csv,
|
|
79
79
|
export_json,
|
|
80
80
|
format_marker_table,
|
|
@@ -122,22 +122,22 @@ def summary(repo, repo_path, days, top, fmt, output_file, exclude):
|
|
|
122
122
|
"""Summary counts by marker type."""
|
|
123
123
|
result = _run_analysis(repo, repo_path, days, exclude)
|
|
124
124
|
if fmt == "json":
|
|
125
|
-
from
|
|
125
|
+
from pf.codemarkers.formatters import export_json
|
|
126
126
|
click.echo(export_json(result))
|
|
127
127
|
else:
|
|
128
|
-
from
|
|
128
|
+
from pf.codemarkers.formatters import format_summary
|
|
129
129
|
format_summary(result, file=click.get_text_stream("stdout"))
|
|
130
130
|
|
|
131
131
|
|
|
132
132
|
def _run_deprecation_analysis(repo_path, exclude):
|
|
133
133
|
"""Run deprecation analysis and return result dict."""
|
|
134
|
-
from
|
|
134
|
+
from pf.codemarkers.analyze import analyze_deprecations
|
|
135
135
|
|
|
136
136
|
excludes = list(exclude) if exclude else None
|
|
137
137
|
if repo_path:
|
|
138
138
|
p = Path(repo_path).resolve()
|
|
139
139
|
else:
|
|
140
|
-
from
|
|
140
|
+
from pf.common.config import get_project_root
|
|
141
141
|
p = get_project_root()
|
|
142
142
|
|
|
143
143
|
return asyncio.run(analyze_deprecations(p, excludes))
|
|
@@ -13,7 +13,7 @@ import sys
|
|
|
13
13
|
from dataclasses import asdict
|
|
14
14
|
from typing import TextIO
|
|
15
15
|
|
|
16
|
-
from
|
|
16
|
+
from pf.codemarkers.models import (
|
|
17
17
|
CodeMarker,
|
|
18
18
|
CodeMarkersResult,
|
|
19
19
|
)
|
|
@@ -43,7 +43,7 @@ def format_marker_table(markers: list[CodeMarker], top_n: int = 20) -> str:
|
|
|
43
43
|
|
|
44
44
|
def format_summary(result: CodeMarkersResult, file: TextIO = sys.stderr) -> None:
|
|
45
45
|
"""Print a summary header for a single repo result."""
|
|
46
|
-
from
|
|
46
|
+
from pf.common.output import header, info
|
|
47
47
|
|
|
48
48
|
header(f" Code Markers: {result.repo_name}", char="=", width=60, file=file)
|
|
49
49
|
info(f"Path: {result.repo_path}", file=file)
|
|
@@ -5,13 +5,13 @@ This package provides shared utilities used across all CLI tools:
|
|
|
5
5
|
- config: Project configuration loading
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
from
|
|
8
|
+
from pf.common.config import (
|
|
9
9
|
find_project_root,
|
|
10
10
|
get_project_root,
|
|
11
11
|
load_pennyfarthing_config,
|
|
12
12
|
load_yaml_config,
|
|
13
13
|
)
|
|
14
|
-
from
|
|
14
|
+
from pf.common.output import (
|
|
15
15
|
Colors,
|
|
16
16
|
_colorize,
|
|
17
17
|
_supports_color,
|
package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/common/__pycache__/__init__.cpython-314.pyc
RENAMED
|
Binary file
|
package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/common/__pycache__/config.cpython-314.pyc
RENAMED
|
Binary file
|
package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/common/__pycache__/output.cpython-314.pyc
RENAMED
|
Binary file
|
|
@@ -7,7 +7,7 @@ Values: draft | ready | none (default: draft)
|
|
|
7
7
|
|
|
8
8
|
from __future__ import annotations
|
|
9
9
|
|
|
10
|
-
from
|
|
10
|
+
from pf.common.config import load_pennyfarthing_config
|
|
11
11
|
|
|
12
12
|
VALID_PR_MODES = {"draft", "ready", "none"}
|
|
13
13
|
DEFAULT_PR_MODE = "draft"
|
|
@@ -20,7 +20,7 @@ from typing import Any
|
|
|
20
20
|
|
|
21
21
|
import yaml
|
|
22
22
|
|
|
23
|
-
from
|
|
23
|
+
from pf.common.config import get_project_root, load_yaml_config
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
def discover_all_theme_dirs(project_root: Path | None = None) -> list[Path]:
|
|
@@ -5,8 +5,8 @@ Wraps eslint with complexity rules to extract per-file metrics:
|
|
|
5
5
|
cyclomatic complexity, function length, nesting depth, and line counts.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
from
|
|
9
|
-
from
|
|
8
|
+
from pf.complexity.analyze import analyze_complexity
|
|
9
|
+
from pf.complexity.models import ComplexityResult, FileComplexity
|
|
10
10
|
|
|
11
11
|
__all__ = [
|
|
12
12
|
"FileComplexity",
|
|
@@ -13,7 +13,7 @@ import json
|
|
|
13
13
|
import re
|
|
14
14
|
from pathlib import Path
|
|
15
15
|
|
|
16
|
-
from
|
|
16
|
+
from pf.complexity.models import ComplexityResult, FileComplexity
|
|
17
17
|
|
|
18
18
|
# Regex patterns for extracting numeric values from ESLint messages
|
|
19
19
|
COMPLEXITY_RE = re.compile(r"complexity of (\d+)")
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
CLI commands for complexity analysis.
|
|
3
3
|
|
|
4
4
|
Usage:
|
|
5
|
-
python -m
|
|
5
|
+
python -m pf.complexity analyze [OPTIONS]
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
8
|
from __future__ import annotations
|
|
@@ -14,7 +14,7 @@ from typing import TYPE_CHECKING
|
|
|
14
14
|
import click
|
|
15
15
|
|
|
16
16
|
if TYPE_CHECKING:
|
|
17
|
-
from
|
|
17
|
+
from pf.complexity.models import ComplexityResult
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
@click.group()
|
|
@@ -45,7 +45,7 @@ def _common_options(fn):
|
|
|
45
45
|
|
|
46
46
|
def _run_analysis(target_path: str | None, exclude: tuple) -> ComplexityResult:
|
|
47
47
|
"""Run analysis and return result."""
|
|
48
|
-
from
|
|
48
|
+
from pf.complexity.analyze import analyze_complexity
|
|
49
49
|
|
|
50
50
|
excludes = list(exclude) if exclude else None
|
|
51
51
|
p = Path(target_path).resolve() if target_path else Path(".").resolve()
|
|
@@ -54,7 +54,7 @@ def _run_analysis(target_path: str | None, exclude: tuple) -> ComplexityResult:
|
|
|
54
54
|
|
|
55
55
|
def _output_result(result, fmt: str, output_file: str | None, top: int):
|
|
56
56
|
"""Format and output the analysis result."""
|
|
57
|
-
from
|
|
57
|
+
from pf.complexity.formatters import (
|
|
58
58
|
export_csv,
|
|
59
59
|
export_json,
|
|
60
60
|
format_file_table,
|
|
@@ -11,7 +11,7 @@ import io
|
|
|
11
11
|
import json
|
|
12
12
|
from dataclasses import asdict
|
|
13
13
|
|
|
14
|
-
from
|
|
14
|
+
from pf.complexity.models import ComplexityResult, FileComplexity
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
def format_file_table(files: list[FileComplexity], top_n: int = 20) -> str:
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Configuration loading utilities for Pennyfarthing scripts.
|
|
3
3
|
|
|
4
|
-
This module re-exports from
|
|
4
|
+
This module re-exports from pf.common.config for
|
|
5
5
|
backwards compatibility. New code should import from common.config directly.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
8
|
# Re-export everything from the new location
|
|
9
|
-
from
|
|
9
|
+
from pf.common.config import (
|
|
10
10
|
find_project_root,
|
|
11
11
|
get_project_root,
|
|
12
12
|
load_pennyfarthing_config,
|
package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/consultation/__pycache__/cli.cpython-314.pyc
RENAMED
|
Binary file
|
|
@@ -34,7 +34,7 @@ def consultation():
|
|
|
34
34
|
@click.argument("partner")
|
|
35
35
|
def init(story_id: str, workflow: str, leader: str, partner: str) -> None:
|
|
36
36
|
"""Create a new dialogue file."""
|
|
37
|
-
from
|
|
37
|
+
from pf.consultation.dialogue_manager import (
|
|
38
38
|
DialogueHeader,
|
|
39
39
|
create_dialogue_content,
|
|
40
40
|
)
|
|
@@ -63,7 +63,7 @@ def init(story_id: str, workflow: str, leader: str, partner: str) -> None:
|
|
|
63
63
|
@click.argument("confidence")
|
|
64
64
|
def append(story_id: str, question: str, recommendation: str, confidence: str) -> None:
|
|
65
65
|
"""Append an exchange to a dialogue file."""
|
|
66
|
-
from
|
|
66
|
+
from pf.consultation.dialogue_manager import (
|
|
67
67
|
DialogueExchange,
|
|
68
68
|
append_exchange_to_file,
|
|
69
69
|
parse_dialogue_exchanges,
|
|
@@ -103,7 +103,7 @@ def append(story_id: str, question: str, recommendation: str, confidence: str) -
|
|
|
103
103
|
@click.option("--note", default=None, help="Outcome note")
|
|
104
104
|
def outcome(story_id: str, exchange_num: int, outcome_value: str, note: str | None) -> None:
|
|
105
105
|
"""Update outcome of an exchange."""
|
|
106
|
-
from
|
|
106
|
+
from pf.consultation.dialogue_manager import (
|
|
107
107
|
update_outcome_in_file,
|
|
108
108
|
)
|
|
109
109
|
|
|
@@ -120,7 +120,7 @@ def outcome(story_id: str, exchange_num: int, outcome_value: str, note: str | No
|
|
|
120
120
|
@click.argument("story_id")
|
|
121
121
|
def summarize(story_id: str) -> None:
|
|
122
122
|
"""Refresh dialogue summary."""
|
|
123
|
-
from
|
|
123
|
+
from pf.consultation.dialogue_manager import refresh_summary
|
|
124
124
|
|
|
125
125
|
dialogue_path = Path(".session") / f"{story_id}-dialogue.md"
|
|
126
126
|
result = refresh_summary(dialogue_path)
|
|
@@ -137,7 +137,7 @@ def summarize(story_id: str) -> None:
|
|
|
137
137
|
@click.option("--jira-key", default=None, help="Jira key for archive filename")
|
|
138
138
|
def archive(story_id: str, jira_key: str | None) -> None:
|
|
139
139
|
"""Archive dialogue file."""
|
|
140
|
-
from
|
|
140
|
+
from pf.consultation.dialogue_manager import archive_dialogue
|
|
141
141
|
|
|
142
142
|
dialogue_path = Path(".session") / f"{story_id}-dialogue.md"
|
|
143
143
|
archive_dir = Path(".session") / "archive"
|
|
Binary file
|
package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/deadcode/__pycache__/cli.cpython-314.pyc
RENAMED
|
Binary file
|