@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
|
@@ -41,8 +41,8 @@ def _common_options(fn):
|
|
|
41
41
|
|
|
42
42
|
def _run_analysis(repo: str | None, repo_path: str | None, days: int, exclude: tuple, branch: str):
|
|
43
43
|
"""Run analysis and return result."""
|
|
44
|
-
from
|
|
45
|
-
from
|
|
44
|
+
from pf.common.config import get_project_root
|
|
45
|
+
from pf.deadcode.analyze import analyze_repo
|
|
46
46
|
|
|
47
47
|
excludes = list(exclude) if exclude else None
|
|
48
48
|
|
|
@@ -51,7 +51,7 @@ def _run_analysis(repo: str | None, repo_path: str | None, days: int, exclude: t
|
|
|
51
51
|
return asyncio.run(analyze_repo(p.name, p, days, excludes, branch))
|
|
52
52
|
elif repo:
|
|
53
53
|
project_root = get_project_root()
|
|
54
|
-
from
|
|
54
|
+
from pf.common.config import load_yaml_config
|
|
55
55
|
repos_yaml = load_yaml_config(project_root / ".pennyfarthing" / "repos.yaml")
|
|
56
56
|
if repos_yaml and repo in repos_yaml:
|
|
57
57
|
cfg = repos_yaml[repo]
|
|
@@ -69,7 +69,7 @@ def _run_analysis(repo: str | None, repo_path: str | None, days: int, exclude: t
|
|
|
69
69
|
|
|
70
70
|
def _output_result(result, fmt: str, output_file: str | None, top: int):
|
|
71
71
|
"""Format and output the analysis result."""
|
|
72
|
-
from
|
|
72
|
+
from pf.deadcode.formatters import (
|
|
73
73
|
export_csv,
|
|
74
74
|
export_json,
|
|
75
75
|
format_table,
|
|
@@ -109,15 +109,15 @@ def _exports_options(fn):
|
|
|
109
109
|
|
|
110
110
|
def _run_exports_analysis(repo: str | None, repo_path: str | None):
|
|
111
111
|
"""Run unused export analysis and return result."""
|
|
112
|
-
from
|
|
113
|
-
from
|
|
112
|
+
from pf.common.config import get_project_root
|
|
113
|
+
from pf.deadcode.analyze import find_unused_exports
|
|
114
114
|
|
|
115
115
|
if repo_path:
|
|
116
116
|
p = Path(repo_path).resolve()
|
|
117
117
|
return asyncio.run(find_unused_exports(p))
|
|
118
118
|
elif repo:
|
|
119
119
|
project_root = get_project_root()
|
|
120
|
-
from
|
|
120
|
+
from pf.common.config import load_yaml_config
|
|
121
121
|
repos_yaml = load_yaml_config(project_root / ".pennyfarthing" / "repos.yaml")
|
|
122
122
|
if repos_yaml and repo in repos_yaml:
|
|
123
123
|
cfg = repos_yaml[repo]
|
|
@@ -135,7 +135,7 @@ def _run_exports_analysis(repo: str | None, repo_path: str | None):
|
|
|
135
135
|
|
|
136
136
|
def _output_exports_result(result, fmt: str, output_file: str | None, top: int):
|
|
137
137
|
"""Format and output the exports analysis result."""
|
|
138
|
-
from
|
|
138
|
+
from pf.deadcode.formatters import (
|
|
139
139
|
export_exports_csv,
|
|
140
140
|
export_exports_json,
|
|
141
141
|
format_exports_table,
|
|
@@ -5,8 +5,8 @@ Wraps npm outdated and npm audit to detect outdated packages
|
|
|
5
5
|
and security vulnerabilities.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
from
|
|
9
|
-
from
|
|
8
|
+
from pf.dependencies.analyze import analyze_dependencies
|
|
9
|
+
from pf.dependencies.models import (
|
|
10
10
|
DependenciesResult,
|
|
11
11
|
OutdatedPackage,
|
|
12
12
|
SecurityAdvisory,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
CLI commands for dependency analysis.
|
|
3
3
|
|
|
4
4
|
Usage:
|
|
5
|
-
python -m
|
|
5
|
+
python -m pf.dependencies 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.dependencies.models import DependenciesResult
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
@click.group()
|
|
@@ -30,7 +30,7 @@ def dependencies():
|
|
|
30
30
|
|
|
31
31
|
def _run_analysis(target_path: str | None) -> DependenciesResult:
|
|
32
32
|
"""Run analysis and return result."""
|
|
33
|
-
from
|
|
33
|
+
from pf.dependencies.analyze import analyze_dependencies
|
|
34
34
|
|
|
35
35
|
p = Path(target_path).resolve() if target_path else Path(".").resolve()
|
|
36
36
|
return asyncio.run(analyze_dependencies(p))
|
|
@@ -38,7 +38,7 @@ def _run_analysis(target_path: str | None) -> DependenciesResult:
|
|
|
38
38
|
|
|
39
39
|
def _output_result(result, fmt: str, output_file: str | None):
|
|
40
40
|
"""Format and output the analysis result."""
|
|
41
|
-
from
|
|
41
|
+
from pf.dependencies.formatters import (
|
|
42
42
|
export_csv,
|
|
43
43
|
export_json,
|
|
44
44
|
format_audit_table,
|
|
Binary file
|
package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/epic/__pycache__/cli.cpython-314.pyc
RENAMED
|
Binary file
|
|
@@ -8,7 +8,7 @@ from __future__ import annotations
|
|
|
8
8
|
|
|
9
9
|
import click
|
|
10
10
|
|
|
11
|
-
from
|
|
11
|
+
from pf.common.output import error, info, success
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
@click.group()
|
|
@@ -35,7 +35,7 @@ def gate_validate(file: str):
|
|
|
35
35
|
|
|
36
36
|
Reports ALL errors at once. On success, prints a structure summary.
|
|
37
37
|
"""
|
|
38
|
-
from
|
|
38
|
+
from pf.gate.validate import validate_gate_file
|
|
39
39
|
|
|
40
40
|
result = validate_gate_file(file)
|
|
41
41
|
|
|
@@ -11,16 +11,16 @@ This package provides async git operations for multi-repo management:
|
|
|
11
11
|
- hooks_installer: Git hooks installation with .d/ dispatcher pattern
|
|
12
12
|
"""
|
|
13
13
|
|
|
14
|
-
from
|
|
14
|
+
from pf.git.create_branches import (
|
|
15
15
|
BranchResult,
|
|
16
16
|
create_feature_branches,
|
|
17
17
|
)
|
|
18
|
-
from
|
|
18
|
+
from pf.git.repos import (
|
|
19
19
|
RepoConfig,
|
|
20
20
|
get_repo_paths,
|
|
21
21
|
load_repos_config,
|
|
22
22
|
)
|
|
23
|
-
from
|
|
23
|
+
from pf.git.status_all import (
|
|
24
24
|
RepoStatus,
|
|
25
25
|
format_status_brief,
|
|
26
26
|
format_status_full,
|
|
@@ -278,7 +278,7 @@ def detect_worktree(current_dir: Path | None = None) -> tuple[bool, str | None,
|
|
|
278
278
|
|
|
279
279
|
# Not in a worktree
|
|
280
280
|
try:
|
|
281
|
-
from
|
|
281
|
+
from pf.common.config import get_project_root
|
|
282
282
|
base_path = get_project_root(current_dir)
|
|
283
283
|
except FileNotFoundError:
|
|
284
284
|
base_path = current_dir
|
|
@@ -395,7 +395,7 @@ async def main(branch_name: str, repos_filter: RepoFilter = "all") -> int:
|
|
|
395
395
|
Returns:
|
|
396
396
|
0 if all repos succeeded, 1 if any had errors
|
|
397
397
|
"""
|
|
398
|
-
from
|
|
398
|
+
from pf.git.repos import get_repo_paths
|
|
399
399
|
|
|
400
400
|
# Detect worktree
|
|
401
401
|
is_worktree, worktree_name, base_path = detect_worktree()
|
|
@@ -427,7 +427,7 @@ if __name__ == "__main__":
|
|
|
427
427
|
import sys
|
|
428
428
|
|
|
429
429
|
if len(sys.argv) < 2 or sys.argv[1] in ("-h", "--help"):
|
|
430
|
-
print("Usage: python -m
|
|
430
|
+
print("Usage: python -m pf.git.create_branches <branch-name> [repos]")
|
|
431
431
|
print(" repos: all (default), api, ui")
|
|
432
432
|
sys.exit(0)
|
|
433
433
|
|
|
@@ -5,7 +5,7 @@ Reads .pennyfarthing/repos.yaml and provides structured access to repo
|
|
|
5
5
|
configuration: paths, types, branches, build/test commands, dependencies.
|
|
6
6
|
|
|
7
7
|
Usage:
|
|
8
|
-
from
|
|
8
|
+
from pf.git.repos import load_repos_config, get_repo_paths
|
|
9
9
|
|
|
10
10
|
config = load_repos_config()
|
|
11
11
|
for name, repo in config.items():
|
|
@@ -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
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
@dataclass
|
|
@@ -291,7 +291,7 @@ async def main(brief: bool = False) -> int:
|
|
|
291
291
|
Returns:
|
|
292
292
|
0 if all repos clean, 1 if any have changes/unpushed
|
|
293
293
|
"""
|
|
294
|
-
from
|
|
294
|
+
from pf.git.repos import get_repo_paths, load_repos_config
|
|
295
295
|
|
|
296
296
|
repos_with_upstream: list[tuple[str, Path, str]] = []
|
|
297
297
|
repo_paths = get_repo_paths()
|
|
@@ -16,8 +16,8 @@ import os
|
|
|
16
16
|
import subprocess
|
|
17
17
|
from pathlib import Path
|
|
18
18
|
|
|
19
|
-
from
|
|
20
|
-
from
|
|
19
|
+
from pf.common.config import get_project_root
|
|
20
|
+
from pf.git.repos import load_repos_config
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
def _git(args: list[str], cwd: Path) -> tuple[str, int]:
|
|
@@ -49,7 +49,7 @@ def _filter_repos(
|
|
|
49
49
|
repos: dict[str, object], filter_str: str
|
|
50
50
|
) -> list[str]:
|
|
51
51
|
"""Filter repo names by type or comma-separated list."""
|
|
52
|
-
from
|
|
52
|
+
from pf.git.repos import RepoConfig
|
|
53
53
|
|
|
54
54
|
if filter_str in ("all", "both"):
|
|
55
55
|
return list(repos.keys())
|
package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/git_group/__pycache__/cli.cpython-314.pyc
RENAMED
|
Binary file
|
|
@@ -39,8 +39,8 @@ def status(brief: bool):
|
|
|
39
39
|
|
|
40
40
|
Shows branch, uncommitted changes, and ahead/behind status for each repo.
|
|
41
41
|
"""
|
|
42
|
-
from
|
|
43
|
-
from
|
|
42
|
+
from pf.git.repos import get_repo_paths, load_repos_config
|
|
43
|
+
from pf.git.status_all import (
|
|
44
44
|
format_status_brief,
|
|
45
45
|
format_status_full,
|
|
46
46
|
format_summary,
|
|
@@ -100,13 +100,13 @@ def branches(branch_name: str, repos: str):
|
|
|
100
100
|
Arguments:
|
|
101
101
|
BRANCH_NAME - The branch name to create (e.g., feat/86-3-file-upload)
|
|
102
102
|
"""
|
|
103
|
-
from
|
|
103
|
+
from pf.git.create_branches import (
|
|
104
104
|
create_feature_branches,
|
|
105
105
|
detect_worktree,
|
|
106
106
|
filter_repos,
|
|
107
107
|
format_results,
|
|
108
108
|
)
|
|
109
|
-
from
|
|
109
|
+
from pf.git.repos import get_repo_paths
|
|
110
110
|
|
|
111
111
|
is_worktree, worktree_name, _ = detect_worktree()
|
|
112
112
|
if is_worktree:
|
|
@@ -124,7 +124,7 @@ def branches(branch_name: str, repos: str):
|
|
|
124
124
|
results = asyncio.run(create_feature_branches(filtered, branch_name))
|
|
125
125
|
click.echo(format_results(results, branch_name))
|
|
126
126
|
|
|
127
|
-
from
|
|
127
|
+
from pf.git.create_branches import BranchAction
|
|
128
128
|
|
|
129
129
|
has_errors = any(r.action == BranchAction.ERROR for r in results)
|
|
130
130
|
raise SystemExit(1 if has_errors else 0)
|
|
@@ -161,7 +161,7 @@ def worktree_create(name: str, branch: str, repos: str):
|
|
|
161
161
|
NAME - Worktree name (e.g., wt-5-3a)
|
|
162
162
|
BRANCH - Branch name (e.g., feat/5-3a-file-upload)
|
|
163
163
|
"""
|
|
164
|
-
from
|
|
164
|
+
from pf.git.worktree import create_worktree
|
|
165
165
|
|
|
166
166
|
raise SystemExit(create_worktree(name, branch, repos))
|
|
167
167
|
|
|
@@ -170,7 +170,7 @@ def worktree_create(name: str, branch: str, repos: str):
|
|
|
170
170
|
@click.argument("name")
|
|
171
171
|
def worktree_remove(name: str):
|
|
172
172
|
"""Remove worktree and clean up."""
|
|
173
|
-
from
|
|
173
|
+
from pf.git.worktree import remove_worktree
|
|
174
174
|
|
|
175
175
|
raise SystemExit(remove_worktree(name))
|
|
176
176
|
|
|
@@ -178,7 +178,7 @@ def worktree_remove(name: str):
|
|
|
178
178
|
@worktree.command("list")
|
|
179
179
|
def worktree_list():
|
|
180
180
|
"""List all active worktrees."""
|
|
181
|
-
from
|
|
181
|
+
from pf.git.worktree import list_worktrees
|
|
182
182
|
|
|
183
183
|
raise SystemExit(list_worktrees())
|
|
184
184
|
|
|
@@ -186,7 +186,7 @@ def worktree_list():
|
|
|
186
186
|
@worktree.command("status")
|
|
187
187
|
def worktree_status():
|
|
188
188
|
"""Show detailed worktree status."""
|
|
189
|
-
from
|
|
189
|
+
from pf.git.worktree import show_worktree_status
|
|
190
190
|
|
|
191
191
|
raise SystemExit(show_worktree_status())
|
|
192
192
|
|
|
@@ -198,6 +198,6 @@ def install_hooks():
|
|
|
198
198
|
Creates .d/ directories, symlinks pennyfarthing hooks, and
|
|
199
199
|
migrates existing user hooks.
|
|
200
200
|
"""
|
|
201
|
-
from
|
|
201
|
+
from pf.git.hooks_installer import install_git_hooks
|
|
202
202
|
|
|
203
203
|
raise SystemExit(install_git_hooks())
|
package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/handoff/__pycache__/cli.cpython-314.pyc
RENAMED
|
Binary file
|
|
@@ -43,7 +43,7 @@ def resolve_gate_cmd(story_id: str, workflow: str, phase: str):
|
|
|
43
43
|
WORKFLOW - Workflow name (e.g., tdd, trivial, patch)
|
|
44
44
|
PHASE - Current phase name (e.g., green, implement, fix)
|
|
45
45
|
"""
|
|
46
|
-
from
|
|
46
|
+
from pf.handoff.resolve_gate import resolve_gate
|
|
47
47
|
|
|
48
48
|
result = resolve_gate(story_id, workflow, phase)
|
|
49
49
|
|
|
@@ -80,7 +80,7 @@ def complete_phase_cmd(
|
|
|
80
80
|
TO_PHASE - Phase being entered (e.g., review)
|
|
81
81
|
GATE_TYPE - Gate type that was passed (e.g., tests_pass)
|
|
82
82
|
"""
|
|
83
|
-
from
|
|
83
|
+
from pf.handoff.complete_phase import complete_phase
|
|
84
84
|
|
|
85
85
|
result = complete_phase(story_id, workflow, from_phase, to_phase, gate_type)
|
|
86
86
|
|
|
@@ -109,7 +109,7 @@ def marker_cmd(next_agent: str | None, error_msg: str | None):
|
|
|
109
109
|
Options:
|
|
110
110
|
--error MSG - Generate an error marker instead of a handoff
|
|
111
111
|
"""
|
|
112
|
-
from
|
|
112
|
+
from pf.handoff.marker import generate_marker
|
|
113
113
|
|
|
114
114
|
if not next_agent and not error_msg:
|
|
115
115
|
raise click.UsageError(
|
|
@@ -137,7 +137,7 @@ def phase_check_cmd(agent: str):
|
|
|
137
137
|
Arguments:
|
|
138
138
|
AGENT - Agent to check (e.g., dev, tea, reviewer, sm)
|
|
139
139
|
"""
|
|
140
|
-
from
|
|
140
|
+
from pf.handoff.phase_check import phase_check_start
|
|
141
141
|
|
|
142
142
|
result = phase_check_start(agent)
|
|
143
143
|
|
|
@@ -147,6 +147,6 @@ def phase_check_cmd(agent: str):
|
|
|
147
147
|
|
|
148
148
|
if result["action"] == "redirect":
|
|
149
149
|
click.echo("")
|
|
150
|
-
from
|
|
150
|
+
from pf.handoff.marker import generate_marker
|
|
151
151
|
|
|
152
152
|
click.echo(generate_marker(result["agent"]))
|
|
@@ -10,8 +10,8 @@ from __future__ import annotations
|
|
|
10
10
|
|
|
11
11
|
from pathlib import Path
|
|
12
12
|
|
|
13
|
-
from
|
|
14
|
-
from
|
|
13
|
+
from pf.common.config import get_project_root
|
|
14
|
+
from pf.prime.workflow import (
|
|
15
15
|
check_redirect,
|
|
16
16
|
detect_workflow_state,
|
|
17
17
|
find_active_session,
|
|
@@ -6,8 +6,8 @@ churn, TODO density, complexity, test gaps, dead code,
|
|
|
6
6
|
deprecation debt, dependency freshness, agent context efficiency.
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
-
from
|
|
10
|
-
from
|
|
9
|
+
from pf.healthscore.analyze import analyze_healthscore
|
|
10
|
+
from pf.healthscore.models import (
|
|
11
11
|
DEFAULT_WEIGHTS,
|
|
12
12
|
DimensionScore,
|
|
13
13
|
HealthscoreResult,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
"""Allow running as: python -m
|
|
1
|
+
"""Allow running as: python -m pf.healthscore"""
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
4
|
import sys
|
|
5
5
|
|
|
6
|
-
from
|
|
6
|
+
from pf.healthscore.cli import healthscore
|
|
7
7
|
|
|
8
8
|
if __name__ == "__main__":
|
|
9
9
|
logging.basicConfig(
|
|
Binary file
|
package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/healthscore/__pycache__/cli.cpython-314.pyc
RENAMED
|
Binary file
|
|
Binary file
|
|
@@ -15,7 +15,7 @@ import time
|
|
|
15
15
|
from datetime import UTC
|
|
16
16
|
from pathlib import Path
|
|
17
17
|
|
|
18
|
-
from
|
|
18
|
+
from pf.healthscore.models import (
|
|
19
19
|
DEFAULT_WEIGHTS,
|
|
20
20
|
DimensionScore,
|
|
21
21
|
HealthscoreResult,
|
|
@@ -219,7 +219,7 @@ async def _probe_churn_pydriller(target_path: Path) -> float | None:
|
|
|
219
219
|
|
|
220
220
|
async def _probe_churn_fallback(target_path: Path) -> float | None:
|
|
221
221
|
"""Fallback churn probe using existing hotspots analyzer."""
|
|
222
|
-
from
|
|
222
|
+
from pf.hotspots.analyze import analyze_repo
|
|
223
223
|
|
|
224
224
|
result = await analyze_repo("project", target_path, days=90)
|
|
225
225
|
if not result.success or not result.file_hotspots:
|
|
@@ -235,7 +235,7 @@ async def _probe_churn_fallback(target_path: Path) -> float | None:
|
|
|
235
235
|
|
|
236
236
|
async def _probe_todo_density(target_path: Path) -> float | None:
|
|
237
237
|
"""Score based on TODO/FIXME marker count."""
|
|
238
|
-
from
|
|
238
|
+
from pf.codemarkers.analyze import analyze_repo
|
|
239
239
|
|
|
240
240
|
result = await analyze_repo("project", target_path)
|
|
241
241
|
if not result.success or not result.summary:
|
|
@@ -259,7 +259,7 @@ async def _probe_todo_density(target_path: Path) -> float | None:
|
|
|
259
259
|
|
|
260
260
|
async def _probe_complexity(target_path: Path) -> float | None:
|
|
261
261
|
"""Score based on average cyclomatic complexity."""
|
|
262
|
-
from
|
|
262
|
+
from pf.complexity.analyze import analyze_complexity
|
|
263
263
|
|
|
264
264
|
result = await analyze_complexity(target_path)
|
|
265
265
|
if not result.success or not result.files:
|
|
@@ -284,7 +284,7 @@ async def _probe_complexity(target_path: Path) -> float | None:
|
|
|
284
284
|
|
|
285
285
|
async def _probe_dead_code(target_path: Path) -> float | None:
|
|
286
286
|
"""Score based on unused export count."""
|
|
287
|
-
from
|
|
287
|
+
from pf.deadcode.analyze import find_unused_exports
|
|
288
288
|
|
|
289
289
|
result = await find_unused_exports(target_path)
|
|
290
290
|
if not result.success:
|
|
@@ -298,7 +298,7 @@ async def _probe_dead_code(target_path: Path) -> float | None:
|
|
|
298
298
|
|
|
299
299
|
async def _probe_dependency_freshness(target_path: Path) -> float | None:
|
|
300
300
|
"""Score based on outdated dependency count."""
|
|
301
|
-
from
|
|
301
|
+
from pf.dependencies.analyze import analyze_dependencies
|
|
302
302
|
|
|
303
303
|
result = await analyze_dependencies(target_path)
|
|
304
304
|
if not result.success:
|
|
@@ -314,7 +314,7 @@ async def _probe_dependency_freshness(target_path: Path) -> float | None:
|
|
|
314
314
|
|
|
315
315
|
async def _probe_deprecation_debt(target_path: Path) -> float | None:
|
|
316
316
|
"""Score based on @deprecated symbol count and active callers."""
|
|
317
|
-
from
|
|
317
|
+
from pf.codemarkers.analyze import analyze_deprecations
|
|
318
318
|
|
|
319
319
|
result = await analyze_deprecations(target_path)
|
|
320
320
|
if not result.get("success"):
|
|
@@ -487,7 +487,7 @@ async def _probe_agent_context_efficiency(target_path: Path) -> float | None:
|
|
|
487
487
|
and scores based on how well agents stay within token budget.
|
|
488
488
|
Target: ~4000 tokens per agent for FULL tier.
|
|
489
489
|
"""
|
|
490
|
-
from
|
|
490
|
+
from pf.prime.tiers import ContextTier, load_tier_components
|
|
491
491
|
|
|
492
492
|
agents = ["sm", "tea", "dev", "reviewer", "architect",
|
|
493
493
|
"pm", "tech-writer", "ux-designer", "devops", "orchestrator",
|
|
@@ -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.healthscore.models import HealthscoreResult
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
@click.group()
|
|
@@ -43,7 +43,7 @@ def _common_options(fn):
|
|
|
43
43
|
|
|
44
44
|
def _run_analysis(target_path: str | None, no_cache: bool) -> HealthscoreResult:
|
|
45
45
|
"""Run analysis and return result."""
|
|
46
|
-
from
|
|
46
|
+
from pf.healthscore.analyze import analyze_healthscore
|
|
47
47
|
|
|
48
48
|
p = Path(target_path).resolve() if target_path else Path(".").resolve()
|
|
49
49
|
cache_ttl = 0 if no_cache else 300
|
|
@@ -52,7 +52,7 @@ def _run_analysis(target_path: str | None, no_cache: bool) -> HealthscoreResult:
|
|
|
52
52
|
|
|
53
53
|
def _output_result(result, fmt: str, output_file: str | None):
|
|
54
54
|
"""Format and output the analysis result."""
|
|
55
|
-
from
|
|
55
|
+
from pf.healthscore.formatters import (
|
|
56
56
|
export_csv,
|
|
57
57
|
export_json,
|
|
58
58
|
format_table,
|
package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__pycache__/__init__.cpython-314.pyc
RENAMED
|
Binary file
|
package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__pycache__/bell_mode.cpython-314.pyc
RENAMED
|
Binary file
|
package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__pycache__/cli.cpython-314.pyc
RENAMED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/{pennyfarthing_scripts → pennyfarthing-dist/pf}/hooks/__pycache__/statusline.cpython-314.pyc
RENAMED
|
Binary file
|