pathly-adapters 2.9.0__tar.gz → 2.9.2__tar.gz
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.
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/PKG-INFO +12 -13
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/README.md +153 -153
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/pyproject.toml +48 -48
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/setup.cfg +4 -4
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/install_cli/__main__.py +4 -4
- pathly_adapters-2.9.2/src/install_cli/materialize.py +160 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/install_cli/resources.py +42 -42
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/install_cli/setup_command.py +440 -563
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/install_cli/stitch.py +90 -90
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_adapters.egg-info/PKG-INFO +12 -13
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_adapters.egg-info/SOURCES.txt +52 -54
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_adapters.egg-info/requires.txt +0 -1
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/.claude-plugin/marketplace.json +29 -29
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/.claude-plugin/plugin.json +7 -7
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/README.md +42 -42
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/archive_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/build_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/builder.yaml +5 -5
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/debug_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/end_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/explore_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/explorer.yaml +5 -5
- pathly_adapters-2.9.2/src/pathly_data/adapters/claude/_meta/fsm-call_skill.yaml +3 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/go_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/help_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/install.yaml +10 -15
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/lessons_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/meet_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/orchestrator.yaml +13 -13
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/pause_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/plan_skill.yaml +5 -5
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/planner.yaml +5 -5
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/po_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/prd-import_skill.yaml +5 -5
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/retro_skill.yaml +5 -5
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/review_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/start_skill.yaml +3 -3
- {pathly_adapters-2.9.0/src/pathly_data/adapters/copilot → pathly_adapters-2.9.2/src/pathly_data/adapters/claude}/_meta/storm_skill.yaml +3 -3
- pathly_adapters-2.9.2/src/pathly_data/adapters/claude/_meta/team-http_skill.yaml +3 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/team_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/test_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/tester.yaml +5 -5
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/verify-state_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/.codex-plugin/plugin.json +36 -36
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/README.md +73 -73
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/archive_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/build_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/builder.yaml +4 -4
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/debug_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/end_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/explore_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/explorer.yaml +4 -4
- pathly_adapters-2.9.2/src/pathly_data/adapters/codex/_meta/fsm-call_skill.yaml +3 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/go_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/help_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/install.yaml +11 -20
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/lessons_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/meet_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/orchestrator.yaml +11 -11
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/pause_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/plan_skill.yaml +5 -5
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/planner.yaml +4 -4
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/po_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/prd-import_skill.yaml +5 -5
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/retro_skill.yaml +5 -5
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/review_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/start_skill.yaml +3 -3
- {pathly_adapters-2.9.0/src/pathly_data/adapters/claude → pathly_adapters-2.9.2/src/pathly_data/adapters/codex}/_meta/storm_skill.yaml +3 -3
- pathly_adapters-2.9.2/src/pathly_data/adapters/codex/_meta/team-http_skill.yaml +3 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/team_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/test_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/tester.yaml +4 -4
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/verify-state_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/README.md +26 -26
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/archive_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/build_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/debug_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/end_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/explore_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/go_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/help_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/install.yaml +14 -14
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/lessons_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/meet_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/pause_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/plan_skill.yaml +5 -5
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/po_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/prd-import_skill.yaml +5 -5
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/retro_skill.yaml +5 -5
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/review_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/start_skill.yaml +3 -3
- {pathly_adapters-2.9.0/src/pathly_data/adapters/codex → pathly_adapters-2.9.2/src/pathly_data/adapters/copilot}/_meta/storm_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/team_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/test_skill.yaml +4 -4
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/verify-state_skill.yaml +3 -3
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/README.md +45 -45
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/SKILLS_OVERVIEW.md +1157 -1158
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/agents/README_routing.md +153 -153
- {pathly_adapters-2.9.0/src/pathly_data/core/agents → pathly_adapters-2.9.2/src/pathly_data/core/agents/building}/builder.md +114 -111
- {pathly_adapters-2.9.0/src/pathly_data/core/agents → pathly_adapters-2.9.2/src/pathly_data/core/agents/planning}/architect.md +93 -93
- {pathly_adapters-2.9.0/src/pathly_data/core/agents → pathly_adapters-2.9.2/src/pathly_data/core/agents/planning}/po.md +113 -113
- {pathly_adapters-2.9.0/src/pathly_data/core/agents → pathly_adapters-2.9.2/src/pathly_data/core/agents/quality}/reviewer.md +129 -129
- {pathly_adapters-2.9.0/src/pathly_data/core/agents → pathly_adapters-2.9.2/src/pathly_data/core/agents/quality}/tester.md +106 -106
- {pathly_adapters-2.9.0/src/pathly_data/core/agents → pathly_adapters-2.9.2/src/pathly_data/core/agents/research}/explorer.md +137 -137
- {pathly_adapters-2.9.0/src/pathly_data/core/agents → pathly_adapters-2.9.2/src/pathly_data/core/agents/research}/scout.md +50 -50
- {pathly_adapters-2.9.0/src/pathly_data/core/agents → pathly_adapters-2.9.2/src/pathly_data/core/agents/research}/web-researcher.md +44 -44
- {pathly_adapters-2.9.0/src/pathly_data/core/agents → pathly_adapters-2.9.2/src/pathly_data/core/agents/support}/human.md +30 -30
- {pathly_adapters-2.9.0/src/pathly_data/core/agents → pathly_adapters-2.9.2/src/pathly_data/core/agents/support}/orchestrator.md +6 -5
- {pathly_adapters-2.9.0/src/pathly_data/core/agents → pathly_adapters-2.9.2/src/pathly_data/core/agents/support}/quick.md +32 -32
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/app-interface.csv +30 -30
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/charts.csv +26 -26
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/colors.csv +161 -161
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/design.csv +1775 -1775
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/draft.csv +1778 -1778
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/google-fonts.csv +1924 -1924
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/icons.csv +105 -105
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/landing.csv +35 -35
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/products.csv +162 -162
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/react-performance.csv +45 -45
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/stacks/angular.csv +51 -51
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/stacks/astro.csv +54 -54
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/stacks/flutter.csv +53 -53
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/stacks/html-tailwind.csv +56 -56
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/stacks/jetpack-compose.csv +53 -53
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/stacks/laravel.csv +51 -51
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/stacks/nextjs.csv +53 -53
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/stacks/nuxt-ui.csv +51 -51
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/stacks/nuxtjs.csv +59 -59
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/stacks/react-native.csv +52 -52
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/stacks/react.csv +54 -54
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/stacks/shadcn.csv +61 -61
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/stacks/svelte.csv +54 -54
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/stacks/swiftui.csv +51 -51
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/stacks/threejs.csv +54 -54
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/stacks/vue.csv +50 -50
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/styles.csv +68 -68
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/typography.csv +74 -74
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/ui-reasoning.csv +162 -162
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/data/ux-guidelines.csv +99 -99
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/scripts/core.py +262 -262
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/scripts/design_system.py +1148 -1148
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/scripts/search.py +114 -114
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/flows/debug.flow.yaml +38 -44
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/flows/explore.flow.yaml +36 -36
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/flows/team.flow.yaml +72 -84
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/development}/build.md +155 -155
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/development}/debug.md +100 -100
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/development}/explore.md +141 -141
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/development}/fix.md +141 -141
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/development}/review.md +82 -82
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/development}/test.md +139 -139
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/flow}/end.md +59 -59
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/flow}/go.md +227 -227
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/flow}/start.md +87 -87
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/planning}/plan.md +267 -267
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/planning}/retro.md +184 -184
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/planning}/storm.md +169 -169
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/skills/team/build.md +128 -128
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/skills/team/discover.md +193 -193
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/skills/team/plan.md +249 -249
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/skills/team/retro.md +66 -66
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/skills/team/review.md +166 -166
- pathly_adapters-2.9.0/src/pathly_data/core/skills/team-mcp.md → pathly_adapters-2.9.2/src/pathly_data/core/skills/team/team-http.md +157 -156
- pathly_adapters-2.9.2/src/pathly_data/core/skills/team/team.md +281 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/skills/team/test.md +128 -128
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/utilities}/help.md +377 -377
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/utilities}/lessons.md +93 -93
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/utilities}/scout-path.md +85 -85
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/utilities}/verify-state.md +151 -151
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/templates/README.md +15 -15
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/templates/pipeline-walkthrough/01-PIPELINE-FLOW.md +70 -70
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/templates/pipeline-walkthrough/02-TOKEN-USAGE.md +46 -46
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/templates/pipeline-walkthrough/03-ARTIFACT-MAP.md +60 -60
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/templates/pipeline-walkthrough/README.md +43 -43
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/templates/plan/ARCHITECTURE_PROPOSAL.template.md +42 -42
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/templates/plan/CONVERSATION_PROMPTS.template.md +44 -44
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/templates/plan/EDGE_CASES.template.md +15 -15
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/templates/plan/FLOW_DIAGRAM.template.md +33 -33
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/templates/plan/HAPPY_FLOW.template.md +21 -21
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/templates/plan/IMPLEMENTATION_PLAN.template.md +35 -35
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/templates/plan/MERMAID_DIAGRAM.template.md +32 -32
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/templates/plan/PROGRESS.template.md +33 -33
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/templates/plan/USER_STORIES.template.md +20 -20
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_orchestrator/eventlog.py +263 -263
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_orchestrator/ff_cli.py +4 -4
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_orchestrator/fsm.py +365 -365
- pathly_adapters-2.9.0/src/pathly_orchestrator/mcp_server.py → pathly_adapters-2.9.2/src/pathly_orchestrator/fsm_ops.py +4 -113
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_orchestrator/http_server.py +308 -232
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_orchestrator/runner.py +4 -4
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_orchestrator/state.py +167 -167
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/tests/test_feedback_protocol.py +77 -77
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/tests/test_fsm.py +445 -445
- pathly_adapters-2.9.0/tests/test_mcp_server.py → pathly_adapters-2.9.2/tests/test_fsm_ops.py +195 -195
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/tests/test_hooks.py +149 -149
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/tests/test_orchestrator.py +205 -205
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/tests/test_runner.py +2 -2
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/tests/test_setup.py +199 -201
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/tests/test_stitch.py +113 -113
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/tests/test_stitch_skill.py +122 -122
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/tests/test_transition_actions.py +127 -127
- pathly_adapters-2.9.0/src/install_cli/materialize.py +0 -409
- pathly_adapters-2.9.0/src/pathly_data/core/design/__pycache__/__init__.cpython-313.pyc +0 -0
- pathly_adapters-2.9.0/src/pathly_data/core/design/__pycache__/cli.cpython-313.pyc +0 -0
- pathly_adapters-2.9.0/src/pathly_data/core/design/scripts/__pycache__/core.cpython-313.pyc +0 -0
- pathly_adapters-2.9.0/src/pathly_data/core/design/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
- pathly_adapters-2.9.0/src/pathly_data/core/skills/team.md +0 -138
- pathly_adapters-2.9.0/tests/test_materialize_hooks.py +0 -116
- pathly_adapters-2.9.0/tests/test_mcp_config.py +0 -239
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/install_cli/__init__.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/install_cli/codex_plugin_config.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/install_cli/detect.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_adapters.egg-info/dependency_links.txt +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_adapters.egg-info/entry_points.txt +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_adapters.egg-info/top_level.txt +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/__init__.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/architect.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/archive-artifacts_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/back_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/commit_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/design_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/designer.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/director.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/ff_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/fix_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/log_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/pathly_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/po.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/quick.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/reviewer.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/scout-path_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/scout.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/status_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/team-build.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/team-build_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/team-design.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/team-discover.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/team-discover_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/team-plan.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/team-plan_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/team-retro.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/team-retro_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/team-review.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/team-review_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/team-test.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/team-test_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/claude/_meta/web-researcher.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/architect.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/back_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/design_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/designer.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/director.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/ff_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/fix_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/log_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/pathly_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/po.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/quick.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/reviewer.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/scout-path_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/scout.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/status_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/team-build.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/team-build_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/team-design.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/team-design_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/team-discover.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/team-discover_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/team-plan.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/team-plan_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/team-retro.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/team-retro_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/team-review.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/team-review_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/team-test.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/team-test_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/codex/_meta/web-researcher.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/architect.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/back_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/builder.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/design_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/designer.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/director.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/explorer.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/ff_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/fix_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/log_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/orchestrator.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/pathly_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/planner.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/po.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/quick.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/reviewer.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/scout-path_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/scout.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/status_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/team-build_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/team-design_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/team-discover_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/team-plan_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/team-retro_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/team-review_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/team-test_skill.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/tester.yaml +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/adapters/copilot/_meta/web-researcher.yaml +0 -0
- {pathly_adapters-2.9.0/src/pathly_data/core/agents → pathly_adapters-2.9.2/src/pathly_data/core/agents/building}/designer.md +0 -0
- {pathly_adapters-2.9.0/src/pathly_data/core/agents → pathly_adapters-2.9.2/src/pathly_data/core/agents/planning}/director.md +0 -0
- {pathly_adapters-2.9.0/src/pathly_data/core/agents → pathly_adapters-2.9.2/src/pathly_data/core/agents/planning}/planner.md +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/__init__.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/cli.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/design/scripts/__init__.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/flows/test.flow.yaml +0 -0
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/development}/commit.md +0 -0
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/development}/design.md +0 -0
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/flow}/back.md +0 -0
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/flow}/ff.md +0 -0
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/flow}/pathly.md +0 -0
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/flow}/pause.md +0 -0
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/flow}/status.md +0 -0
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/planning}/po.md +0 -0
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/planning}/prd-import.md +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/skills/team/design.md +0 -0
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/utilities}/archive-artifacts.md +0 -0
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/utilities}/archive.md +0 -0
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/utilities}/fsm-call.md +0 -0
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/utilities}/log.md +0 -0
- {pathly_adapters-2.9.0/src/pathly_data/core/skills → pathly_adapters-2.9.2/src/pathly_data/core/skills/utilities}/meet.md +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/core/templates/plan/FEATURE_INDEX.template.md +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/schemas/pathly-meta.schema.json +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_data/schemas/state.schema.json +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_hooks/__init__.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_hooks/classify_feedback.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_hooks/inject_feedback_ttl.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_orchestrator/__init__.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_orchestrator/back_cli.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_orchestrator/events.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_orchestrator/log_cli.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_orchestrator/status_cli.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_studio_cli/__init__.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_studio_cli/install.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_telemetry/__init__.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_telemetry/__main__.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_telemetry/report.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_telemetry/server.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/src/pathly_telemetry/storage.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/tests/test_codex_plugin_config.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/tests/test_manifests.py +0 -0
- {pathly_adapters-2.9.0 → pathly_adapters-2.9.2}/tests/test_rollback.py +0 -0
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: pathly-adapters
|
|
3
|
-
Version: 2.9.
|
|
4
|
-
Summary: Pathly adapter installer — stitches and deploys agent files to AI host tools.
|
|
5
|
-
Requires-Python: >=3.11
|
|
6
|
-
Requires-Dist: pyyaml>=6.0
|
|
7
|
-
Requires-Dist: flask>=2.3
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
Requires-Dist:
|
|
11
|
-
Requires-Dist:
|
|
12
|
-
Requires-Dist:
|
|
13
|
-
Requires-Dist: jsonschema>=4; extra == "dev"
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pathly-adapters
|
|
3
|
+
Version: 2.9.2
|
|
4
|
+
Summary: Pathly adapter installer — stitches and deploys agent files to AI host tools.
|
|
5
|
+
Requires-Python: >=3.11
|
|
6
|
+
Requires-Dist: pyyaml>=6.0
|
|
7
|
+
Requires-Dist: flask>=2.3
|
|
8
|
+
Provides-Extra: dev
|
|
9
|
+
Requires-Dist: pytest>=8; extra == "dev"
|
|
10
|
+
Requires-Dist: build; extra == "dev"
|
|
11
|
+
Requires-Dist: twine; extra == "dev"
|
|
12
|
+
Requires-Dist: jsonschema>=4; extra == "dev"
|
|
@@ -1,153 +1,153 @@
|
|
|
1
|
-
# pathly-adapters
|
|
2
|
-
|
|
3
|
-
Stitches Pathly agent files and installs them into AI host tools (Claude Code, Codex, Copilot).
|
|
4
|
-
|
|
5
|
-
## Install (end users)
|
|
6
|
-
|
|
7
|
-
Requires Python 3.11+. Install [pipx](https://pipx.pypa.io) if you don't have it:
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
pip install pipx
|
|
11
|
-
pipx ensurepath
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
Then install Pathly:
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
pipx install pathly-adapters
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
`pipx` keeps the package in its own isolated environment and puts `pathly-setup` on your PATH automatically — no virtual environment to manage, no activation step.
|
|
21
|
-
|
|
22
|
-
## Quick start
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
pathly-setup --dry-run # preview what will be installed
|
|
26
|
-
pathly-setup --apply # install into all detected hosts
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
That's it. Pathly detects Claude Code, Codex, and Copilot automatically.
|
|
30
|
-
|
|
31
|
-
Then open Claude Code in your project directory and start:
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
/pathly start ← welcome screen + pick what to do
|
|
35
|
-
/pathly go ← describe what you want; director routes it
|
|
36
|
-
/pathly build ← implement next conversation
|
|
37
|
-
/pathly end ← retro + archive
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
All commands go through `/pathly`. See [docs/FLOW_DIAGRAM.md](docs/FLOW_DIAGRAM.md) for the full command reference.
|
|
41
|
-
|
|
42
|
-
> **Tip:** `/start` and `/pathly start` are equivalent. `/pathly` dispatches to the same skill; direct invocation skips the dispatcher.
|
|
43
|
-
|
|
44
|
-
## All commands
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
pathly-setup # detect hosts; launch interactive menu
|
|
48
|
-
pathly-setup --dry-run # preview what would be written
|
|
49
|
-
pathly-setup --apply # install into all detected hosts
|
|
50
|
-
pathly-setup claude --apply # install for Claude Code only
|
|
51
|
-
pathly-setup codex --apply # install for Codex only
|
|
52
|
-
pathly-setup copilot --apply # install for Copilot / VS Code only
|
|
53
|
-
pathly-setup --repair # overwrite Pathly-owned files
|
|
54
|
-
pathly-setup --force # overwrite all files, even non-Pathly-owned
|
|
55
|
-
pathly-setup --uninstall # remove all Pathly-owned files
|
|
56
|
-
pathly-events summary <feature> # print token/cost table for a pipeline run
|
|
57
|
-
pathly-state <feature> # print current FSM state for a feature
|
|
58
|
-
pathly-tokens # print token/cost summary across all pipeline runs
|
|
59
|
-
pathly-validate-flow <flow.yaml> # validate a flow YAML against the FSM schema
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
`--dry-run` never writes. `--apply` is required for any writes.
|
|
63
|
-
|
|
64
|
-
## Supported Hosts
|
|
65
|
-
|
|
66
|
-
| Host | Detected by | Installed locations |
|
|
67
|
-
|------|-------------|---------------------|
|
|
68
|
-
| `claude` | `~/.claude/` directory exists | `~/.claude/agents/` (behavioral contracts)<br>`~/.claude/skills/` (skill folders) |
|
|
69
|
-
| `codex` | Codex config directory exists | `~/.codex/agents/` + `~/.codex/skills/` + local plugin marketplace |
|
|
70
|
-
| `copilot` | VS Code + Copilot detected | `~/.vscode/extensions/pathly/agents/`<br>`~/.vscode/extensions/pathly/skills/` |
|
|
71
|
-
|
|
72
|
-
## How It Works
|
|
73
|
-
|
|
74
|
-
1. **Detect** — scans for installed hosts on the current machine.
|
|
75
|
-
2. **Stitch** — combines `core/agents/` and `core/skills/` content with adapter-specific `_meta/<name>.yaml` to produce deployable agent and skill files (frontmatter + body + spawn section).
|
|
76
|
-
3. **Materialize** — writes stitched files to the host config location. A manifest tracks Pathly-owned files; `--repair` overwrites owned files, `--force` overwrites everything. Install is atomic — if anything fails, already-written files are rolled back.
|
|
77
|
-
4. **Register Codex plugin** - for Codex installs, writes `~/.codex/pathly-marketplace`, enables `pathly@pathly-local`, and refreshes the marketplace through the Codex CLI when available.
|
|
78
|
-
|
|
79
|
-
## FSM HTTP Server
|
|
80
|
-
|
|
81
|
-
Pathly skills communicate with the Python FSM engine over HTTP, not MCP. The server runs locally on port 8765 and is auto-started by the `fsm-call` skill when needed — no manual setup required.
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
POST http://127.0.0.1:8765/next_action ← get current state + agent instructions
|
|
85
|
-
POST http://127.0.0.1:8765/complete_stage ← advance FSM to next state
|
|
86
|
-
POST http://127.0.0.1:8765/record_activity ← write telemetry to ~/.pathly/activity.jsonl
|
|
87
|
-
GET http://127.0.0.1:8765/events/stream ← SSE stream of EVENTS.jsonl (used by Studio)
|
|
88
|
-
GET http://127.0.0.1:8765/health ← liveness check
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
Start it manually if needed:
|
|
92
|
-
```bash
|
|
93
|
-
pathly-fsm-http
|
|
94
|
-
# or: python -m pathly_orchestrator.http_server
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
The `fsm-call` skill (shared by all FSM-using skills) handles health-check, auto-start, and the HTTP POST — skills never call the server directly.
|
|
98
|
-
|
|
99
|
-
## Development setup
|
|
100
|
-
|
|
101
|
-
```bash
|
|
102
|
-
git clone <repo>
|
|
103
|
-
cd pathly-adapters
|
|
104
|
-
python -m venv .venv
|
|
105
|
-
.venv\Scripts\activate # Windows
|
|
106
|
-
# source .venv/bin/activate # macOS/Linux
|
|
107
|
-
pip install -e ".[dev]"
|
|
108
|
-
pytest
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
To build and publish a new release:
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
python -m build
|
|
115
|
-
twine upload dist/*
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
## Docs
|
|
119
|
-
|
|
120
|
-
| Doc | What's in it |
|
|
121
|
-
|---|---|
|
|
122
|
-
| [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) | Adapter surfaces per host (Claude, Codex, Copilot), deployment structure, how skills/agents are materialized, host detection, installed manifests |
|
|
123
|
-
| [docs/FLOW_DIAGRAM.md](docs/FLOW_DIAGRAM.md) | How a user invokes Pathly from each host, install flow, what files get deployed where, host-specific entry points |
|
|
124
|
-
| [docs/PATHLY_ARCHITECTURE.md](docs/PATHLY_ARCHITECTURE.md) | install_cli packages, pathly_data layout, stitch pipeline, resource loading, host adapter structure, pyproject entry points |
|
|
125
|
-
| [docs/INSTALLER_DESIGN.md](docs/INSTALLER_DESIGN.md) | Design goals, implementation phases, subagent policy, user stories, main risks |
|
|
126
|
-
| [docs/MULTI_TOOL_DESIGN.md](docs/MULTI_TOOL_DESIGN.md) | Current adapter structure, source-of-truth rules, current adapters, installed manifests, future adapter work |
|
|
127
|
-
| [docs/PRODUCTION_READINESS.md](docs/PRODUCTION_READINESS.md) | Adapter release criteria: install checks for each host, pathly-setup flags, package build/publish, marketplace manifests |
|
|
128
|
-
| [docs/SECURITY.md](docs/SECURITY.md) | Hook injection risks, subprocess calls in installer, file write safety, trust boundaries, marketplace manifest integrity |
|
|
129
|
-
| [docs/SYSTEM_REVIEW.md](docs/SYSTEM_REVIEW.md) | Adapter strengths, risks, design decisions, hardening recommendations |
|
|
130
|
-
| [src/pathly_data/core/SKILLS_OVERVIEW.md](src/pathly_data/core/SKILLS_OVERVIEW.md) | Full reference for all 29 user-facing Pathly skills with ASCII flow diagrams |
|
|
131
|
-
|
|
132
|
-
For engine-specific docs (FSM, orchestrator, state machine, team-flow driver):
|
|
133
|
-
see [github.com/hamilton-sky/pathly](https://github.com/hamilton-sky/pathly) — `pathly-engine/docs/` folder.
|
|
134
|
-
|
|
135
|
-
## Release Status
|
|
136
|
-
|
|
137
|
-
Stable (2.9.0). Core install path (`--dry-run`, `--apply`, `--uninstall`) is verified with full rollback on failure. Copilot destination paths follow the VS Code Copilot agent spec and may require `--repair` after a VS Code update.
|
|
138
|
-
|
|
139
|
-
**2.9.0 changes:** FSM and telemetry transport moved from MCP to HTTP. All skills now use the shared `fsm-call` skill which auto-starts the HTTP server. `mcp_config.py` removed; no MCP servers are registered during install.
|
|
140
|
-
|
|
141
|
-
## Known Limitations
|
|
142
|
-
|
|
143
|
-
- **Windows: broken stub if you previously ran `pip install pathly-adapters` directly** — a bare `pip install` (outside pipx) leaves a `pathly-setup.exe` stub in the global Python Scripts directory that shadows the pipx version and throws `ModuleNotFoundError: No module named 'install_cli'`. Fix: delete the stub at `%LOCALAPPDATA%\Programs\Python\Python3XX\Scripts\pathly-setup.exe` and its matching `~athly_adapters-*.dist-info` folder in `site-packages`, then open a fresh terminal. Always use `pipx install pathly-adapters` as documented.
|
|
144
|
-
|
|
145
|
-
- **Codex install unverified on a clean machine** — the Codex adapter is committed and `pathly-setup codex --apply` runs without error, but a full clean-machine smoke test has not been completed. Use Codex support at your own risk until this is confirmed.
|
|
146
|
-
|
|
147
|
-
- **Copilot paths may need `--repair` after a VS Code update** — Pathly installs agent files to the VS Code Copilot agent spec path, which may change between VS Code versions. Run `pathly-setup --repair` after a VS Code update if Copilot agents stop appearing.
|
|
148
|
-
|
|
149
|
-
- **Hook path validation requires Python 3.9+** — hook scripts use `Path.is_relative_to()`, introduced in Python 3.9. The project already requires Python 3.11+, so this is always satisfied.
|
|
150
|
-
|
|
151
|
-
- **Hooks require `PATHLY_PROJECT_ROOT`** — hook scripts (`classify_feedback.py`, `inject_feedback_ttl.py`) read the `PATHLY_PROJECT_ROOT` environment variable to locate the active project's `plans/` directory. If this variable is not set, hooks exit immediately without performing any action.
|
|
152
|
-
|
|
153
|
-
- **Hook parity gap** — Pathly hooks run automatically only under Claude Code. Codex and Copilot VS Code require manual install; see [Hook surface coverage](docs/SECURITY.md#hook-surface-coverage).
|
|
1
|
+
# pathly-adapters
|
|
2
|
+
|
|
3
|
+
Stitches Pathly agent files and installs them into AI host tools (Claude Code, Codex, Copilot).
|
|
4
|
+
|
|
5
|
+
## Install (end users)
|
|
6
|
+
|
|
7
|
+
Requires Python 3.11+. Install [pipx](https://pipx.pypa.io) if you don't have it:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pip install pipx
|
|
11
|
+
pipx ensurepath
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Then install Pathly:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
pipx install pathly-adapters
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
`pipx` keeps the package in its own isolated environment and puts `pathly-setup` on your PATH automatically — no virtual environment to manage, no activation step.
|
|
21
|
+
|
|
22
|
+
## Quick start
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
pathly-setup --dry-run # preview what will be installed
|
|
26
|
+
pathly-setup --apply # install into all detected hosts
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
That's it. Pathly detects Claude Code, Codex, and Copilot automatically.
|
|
30
|
+
|
|
31
|
+
Then open Claude Code in your project directory and start:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
/pathly start ← welcome screen + pick what to do
|
|
35
|
+
/pathly go ← describe what you want; director routes it
|
|
36
|
+
/pathly build ← implement next conversation
|
|
37
|
+
/pathly end ← retro + archive
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
All commands go through `/pathly`. See [docs/FLOW_DIAGRAM.md](docs/FLOW_DIAGRAM.md) for the full command reference.
|
|
41
|
+
|
|
42
|
+
> **Tip:** `/start` and `/pathly start` are equivalent. `/pathly` dispatches to the same skill; direct invocation skips the dispatcher.
|
|
43
|
+
|
|
44
|
+
## All commands
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
pathly-setup # detect hosts; launch interactive menu
|
|
48
|
+
pathly-setup --dry-run # preview what would be written
|
|
49
|
+
pathly-setup --apply # install into all detected hosts
|
|
50
|
+
pathly-setup claude --apply # install for Claude Code only
|
|
51
|
+
pathly-setup codex --apply # install for Codex only
|
|
52
|
+
pathly-setup copilot --apply # install for Copilot / VS Code only
|
|
53
|
+
pathly-setup --repair # overwrite Pathly-owned files
|
|
54
|
+
pathly-setup --force # overwrite all files, even non-Pathly-owned
|
|
55
|
+
pathly-setup --uninstall # remove all Pathly-owned files
|
|
56
|
+
pathly-events summary <feature> # print token/cost table for a pipeline run
|
|
57
|
+
pathly-state <feature> # print current FSM state for a feature
|
|
58
|
+
pathly-tokens # print token/cost summary across all pipeline runs
|
|
59
|
+
pathly-validate-flow <flow.yaml> # validate a flow YAML against the FSM schema
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
`--dry-run` never writes. `--apply` is required for any writes.
|
|
63
|
+
|
|
64
|
+
## Supported Hosts
|
|
65
|
+
|
|
66
|
+
| Host | Detected by | Installed locations |
|
|
67
|
+
|------|-------------|---------------------|
|
|
68
|
+
| `claude` | `~/.claude/` directory exists | `~/.claude/agents/` (behavioral contracts)<br>`~/.claude/skills/` (skill folders) |
|
|
69
|
+
| `codex` | Codex config directory exists | `~/.codex/agents/` + `~/.codex/skills/` + local plugin marketplace |
|
|
70
|
+
| `copilot` | VS Code + Copilot detected | `~/.vscode/extensions/pathly/agents/`<br>`~/.vscode/extensions/pathly/skills/` |
|
|
71
|
+
|
|
72
|
+
## How It Works
|
|
73
|
+
|
|
74
|
+
1. **Detect** — scans for installed hosts on the current machine.
|
|
75
|
+
2. **Stitch** — combines `core/agents/` and `core/skills/` content with adapter-specific `_meta/<name>.yaml` to produce deployable agent and skill files (frontmatter + body + spawn section).
|
|
76
|
+
3. **Materialize** — writes stitched files to the host config location. A manifest tracks Pathly-owned files; `--repair` overwrites owned files, `--force` overwrites everything. Install is atomic — if anything fails, already-written files are rolled back.
|
|
77
|
+
4. **Register Codex plugin** - for Codex installs, writes `~/.codex/pathly-marketplace`, enables `pathly@pathly-local`, and refreshes the marketplace through the Codex CLI when available.
|
|
78
|
+
|
|
79
|
+
## FSM HTTP Server
|
|
80
|
+
|
|
81
|
+
Pathly skills communicate with the Python FSM engine over HTTP, not MCP. The server runs locally on port 8765 and is auto-started by the `fsm-call` skill when needed — no manual setup required.
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
POST http://127.0.0.1:8765/next_action ← get current state + agent instructions
|
|
85
|
+
POST http://127.0.0.1:8765/complete_stage ← advance FSM to next state
|
|
86
|
+
POST http://127.0.0.1:8765/record_activity ← write telemetry to ~/.pathly/activity.jsonl
|
|
87
|
+
GET http://127.0.0.1:8765/events/stream ← SSE stream of EVENTS.jsonl (used by Studio)
|
|
88
|
+
GET http://127.0.0.1:8765/health ← liveness check
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Start it manually if needed:
|
|
92
|
+
```bash
|
|
93
|
+
pathly-fsm-http
|
|
94
|
+
# or: python -m pathly_orchestrator.http_server
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
The `fsm-call` skill (shared by all FSM-using skills) handles health-check, auto-start, and the HTTP POST — skills never call the server directly.
|
|
98
|
+
|
|
99
|
+
## Development setup
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
git clone <repo>
|
|
103
|
+
cd pathly-adapters
|
|
104
|
+
python -m venv .venv
|
|
105
|
+
.venv\Scripts\activate # Windows
|
|
106
|
+
# source .venv/bin/activate # macOS/Linux
|
|
107
|
+
pip install -e ".[dev]"
|
|
108
|
+
pytest
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
To build and publish a new release:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
python -m build
|
|
115
|
+
twine upload dist/*
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Docs
|
|
119
|
+
|
|
120
|
+
| Doc | What's in it |
|
|
121
|
+
|---|---|
|
|
122
|
+
| [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) | Adapter surfaces per host (Claude, Codex, Copilot), deployment structure, how skills/agents are materialized, host detection, installed manifests |
|
|
123
|
+
| [docs/FLOW_DIAGRAM.md](docs/FLOW_DIAGRAM.md) | How a user invokes Pathly from each host, install flow, what files get deployed where, host-specific entry points |
|
|
124
|
+
| [docs/PATHLY_ARCHITECTURE.md](docs/PATHLY_ARCHITECTURE.md) | install_cli packages, pathly_data layout, stitch pipeline, resource loading, host adapter structure, pyproject entry points |
|
|
125
|
+
| [docs/INSTALLER_DESIGN.md](docs/INSTALLER_DESIGN.md) | Design goals, implementation phases, subagent policy, user stories, main risks |
|
|
126
|
+
| [docs/MULTI_TOOL_DESIGN.md](docs/MULTI_TOOL_DESIGN.md) | Current adapter structure, source-of-truth rules, current adapters, installed manifests, future adapter work |
|
|
127
|
+
| [docs/PRODUCTION_READINESS.md](docs/PRODUCTION_READINESS.md) | Adapter release criteria: install checks for each host, pathly-setup flags, package build/publish, marketplace manifests |
|
|
128
|
+
| [docs/SECURITY.md](docs/SECURITY.md) | Hook injection risks, subprocess calls in installer, file write safety, trust boundaries, marketplace manifest integrity |
|
|
129
|
+
| [docs/SYSTEM_REVIEW.md](docs/SYSTEM_REVIEW.md) | Adapter strengths, risks, design decisions, hardening recommendations |
|
|
130
|
+
| [src/pathly_data/core/SKILLS_OVERVIEW.md](src/pathly_data/core/SKILLS_OVERVIEW.md) | Full reference for all 29 user-facing Pathly skills with ASCII flow diagrams |
|
|
131
|
+
|
|
132
|
+
For engine-specific docs (FSM, orchestrator, state machine, team-flow driver):
|
|
133
|
+
see [github.com/hamilton-sky/pathly](https://github.com/hamilton-sky/pathly) — `pathly-engine/docs/` folder.
|
|
134
|
+
|
|
135
|
+
## Release Status
|
|
136
|
+
|
|
137
|
+
Stable (2.9.0). Core install path (`--dry-run`, `--apply`, `--uninstall`) is verified with full rollback on failure. Copilot destination paths follow the VS Code Copilot agent spec and may require `--repair` after a VS Code update.
|
|
138
|
+
|
|
139
|
+
**2.9.0 changes:** FSM and telemetry transport moved from MCP to HTTP. All skills now use the shared `fsm-call` skill which auto-starts the HTTP server. `mcp_config.py` removed; no MCP servers are registered during install.
|
|
140
|
+
|
|
141
|
+
## Known Limitations
|
|
142
|
+
|
|
143
|
+
- **Windows: broken stub if you previously ran `pip install pathly-adapters` directly** — a bare `pip install` (outside pipx) leaves a `pathly-setup.exe` stub in the global Python Scripts directory that shadows the pipx version and throws `ModuleNotFoundError: No module named 'install_cli'`. Fix: delete the stub at `%LOCALAPPDATA%\Programs\Python\Python3XX\Scripts\pathly-setup.exe` and its matching `~athly_adapters-*.dist-info` folder in `site-packages`, then open a fresh terminal. Always use `pipx install pathly-adapters` as documented.
|
|
144
|
+
|
|
145
|
+
- **Codex install unverified on a clean machine** — the Codex adapter is committed and `pathly-setup codex --apply` runs without error, but a full clean-machine smoke test has not been completed. Use Codex support at your own risk until this is confirmed.
|
|
146
|
+
|
|
147
|
+
- **Copilot paths may need `--repair` after a VS Code update** — Pathly installs agent files to the VS Code Copilot agent spec path, which may change between VS Code versions. Run `pathly-setup --repair` after a VS Code update if Copilot agents stop appearing.
|
|
148
|
+
|
|
149
|
+
- **Hook path validation requires Python 3.9+** — hook scripts use `Path.is_relative_to()`, introduced in Python 3.9. The project already requires Python 3.11+, so this is always satisfied.
|
|
150
|
+
|
|
151
|
+
- **Hooks require `PATHLY_PROJECT_ROOT`** — hook scripts (`classify_feedback.py`, `inject_feedback_ttl.py`) read the `PATHLY_PROJECT_ROOT` environment variable to locate the active project's `plans/` directory. If this variable is not set, hooks exit immediately without performing any action.
|
|
152
|
+
|
|
153
|
+
- **Hook parity gap** — Pathly hooks run automatically only under Claude Code. Codex and Copilot VS Code require manual install; see [Hook surface coverage](docs/SECURITY.md#hook-surface-coverage).
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
[build-system]
|
|
2
|
-
requires = ["setuptools>=68", "wheel"]
|
|
3
|
-
build-backend = "setuptools.build_meta"
|
|
4
|
-
|
|
5
|
-
[project]
|
|
6
|
-
name = "pathly-adapters"
|
|
7
|
-
version = "2.9.
|
|
8
|
-
description = "Pathly adapter installer — stitches and deploys agent files to AI host tools."
|
|
9
|
-
requires-python = ">=3.11"
|
|
10
|
-
dependencies = ["pyyaml>=6.0", "flask>=2.3"
|
|
11
|
-
|
|
12
|
-
[project.optional-dependencies]
|
|
13
|
-
dev = ["pytest>=8", "build", "twine", "jsonschema>=4"]
|
|
14
|
-
|
|
15
|
-
[project.scripts]
|
|
16
|
-
pathly-setup = "install_cli.__main__:main"
|
|
17
|
-
pathly-tokens = "pathly_telemetry.report:main"
|
|
18
|
-
pathly-events = "pathly_orchestrator.eventlog:_cli"
|
|
19
|
-
pathly-state = "pathly_orchestrator.eventlog:_state_cli"
|
|
20
|
-
pathly-fsm-http = "pathly_orchestrator.http_server:main"
|
|
21
|
-
pathly-validate-flow = "pathly_orchestrator.state:validate_flow_cli"
|
|
22
|
-
pathly-run = "pathly_orchestrator.runner:main"
|
|
23
|
-
pathly-status = "pathly_orchestrator.status_cli:main"
|
|
24
|
-
pathly-log = "pathly_orchestrator.log_cli:main"
|
|
25
|
-
pathly-back = "pathly_orchestrator.back_cli:main"
|
|
26
|
-
pathly-ff = "pathly_orchestrator.ff_cli:main"
|
|
27
|
-
pathly-studio = "pathly_studio_cli.install:main"
|
|
28
|
-
pathly-design = "pathly_data.core.design.cli:main"
|
|
29
|
-
|
|
30
|
-
[tool.pytest.ini_options]
|
|
31
|
-
testpaths = ["tests"]
|
|
32
|
-
pythonpath = ["src"]
|
|
33
|
-
addopts = ["-p", "no:cacheprovider"]
|
|
34
|
-
|
|
35
|
-
[tool.setuptools.packages.find]
|
|
36
|
-
where = ["src"]
|
|
37
|
-
include = ["install_cli*", "pathly_telemetry*", "pathly_data*", "pathly_orchestrator*", "pathly_hooks*", "pathly_studio_cli*"]
|
|
38
|
-
|
|
39
|
-
[tool.setuptools.package-data]
|
|
40
|
-
"pathly_data" = [
|
|
41
|
-
"core/**/*",
|
|
42
|
-
"core/design/data/**/*",
|
|
43
|
-
"core/design/scripts/**/*",
|
|
44
|
-
"adapters/**/*",
|
|
45
|
-
"adapters/claude/.claude-plugin/*",
|
|
46
|
-
"adapters/codex/.codex-plugin/*",
|
|
47
|
-
"schemas/*.json",
|
|
48
|
-
]
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "pathly-adapters"
|
|
7
|
+
version = "2.9.2"
|
|
8
|
+
description = "Pathly adapter installer — stitches and deploys agent files to AI host tools."
|
|
9
|
+
requires-python = ">=3.11"
|
|
10
|
+
dependencies = ["pyyaml>=6.0", "flask>=2.3"]
|
|
11
|
+
|
|
12
|
+
[project.optional-dependencies]
|
|
13
|
+
dev = ["pytest>=8", "build", "twine", "jsonschema>=4"]
|
|
14
|
+
|
|
15
|
+
[project.scripts]
|
|
16
|
+
pathly-setup = "install_cli.__main__:main"
|
|
17
|
+
pathly-tokens = "pathly_telemetry.report:main"
|
|
18
|
+
pathly-events = "pathly_orchestrator.eventlog:_cli"
|
|
19
|
+
pathly-state = "pathly_orchestrator.eventlog:_state_cli"
|
|
20
|
+
pathly-fsm-http = "pathly_orchestrator.http_server:main"
|
|
21
|
+
pathly-validate-flow = "pathly_orchestrator.state:validate_flow_cli"
|
|
22
|
+
pathly-run = "pathly_orchestrator.runner:main"
|
|
23
|
+
pathly-status = "pathly_orchestrator.status_cli:main"
|
|
24
|
+
pathly-log = "pathly_orchestrator.log_cli:main"
|
|
25
|
+
pathly-back = "pathly_orchestrator.back_cli:main"
|
|
26
|
+
pathly-ff = "pathly_orchestrator.ff_cli:main"
|
|
27
|
+
pathly-studio = "pathly_studio_cli.install:main"
|
|
28
|
+
pathly-design = "pathly_data.core.design.cli:main"
|
|
29
|
+
|
|
30
|
+
[tool.pytest.ini_options]
|
|
31
|
+
testpaths = ["tests"]
|
|
32
|
+
pythonpath = ["src"]
|
|
33
|
+
addopts = ["-p", "no:cacheprovider"]
|
|
34
|
+
|
|
35
|
+
[tool.setuptools.packages.find]
|
|
36
|
+
where = ["src"]
|
|
37
|
+
include = ["install_cli*", "pathly_telemetry*", "pathly_data*", "pathly_orchestrator*", "pathly_hooks*", "pathly_studio_cli*"]
|
|
38
|
+
|
|
39
|
+
[tool.setuptools.package-data]
|
|
40
|
+
"pathly_data" = [
|
|
41
|
+
"core/**/*",
|
|
42
|
+
"core/design/data/**/*",
|
|
43
|
+
"core/design/scripts/**/*",
|
|
44
|
+
"adapters/**/*",
|
|
45
|
+
"adapters/claude/.claude-plugin/*",
|
|
46
|
+
"adapters/codex/.codex-plugin/*",
|
|
47
|
+
"schemas/*.json",
|
|
48
|
+
]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[egg_info]
|
|
2
|
-
tag_build =
|
|
3
|
-
tag_date = 0
|
|
4
|
-
|
|
1
|
+
[egg_info]
|
|
2
|
+
tag_build =
|
|
3
|
+
tag_date = 0
|
|
4
|
+
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from .setup_command import main
|
|
2
|
-
|
|
3
|
-
if __name__ == "__main__":
|
|
4
|
-
main()
|
|
1
|
+
from .setup_command import main
|
|
2
|
+
|
|
3
|
+
if __name__ == "__main__":
|
|
4
|
+
main()
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import hashlib
|
|
2
|
+
import json
|
|
3
|
+
import sys
|
|
4
|
+
from datetime import datetime, timezone
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
MANIFEST_NAME = ".pathly-manifest.json"
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def _hash_files_dict(files: dict) -> str:
|
|
11
|
+
return hashlib.sha256(json.dumps(files, sort_keys=True, separators=(",", ":")).encode()).hexdigest()
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _load_manifest(dest: Path) -> dict:
|
|
15
|
+
manifest_path = dest / MANIFEST_NAME
|
|
16
|
+
if manifest_path.exists():
|
|
17
|
+
try:
|
|
18
|
+
data = json.loads(manifest_path.read_text(encoding="utf-8"))
|
|
19
|
+
if "_manifest_version" not in data:
|
|
20
|
+
raise ValueError("Manifest missing _manifest_version field")
|
|
21
|
+
files = data.get("files", {})
|
|
22
|
+
if data.get("_manifest_hash", "") != _hash_files_dict(files):
|
|
23
|
+
raise ValueError("Manifest hash mismatch — file may be corrupted or tampered")
|
|
24
|
+
return data
|
|
25
|
+
except (json.JSONDecodeError, OSError):
|
|
26
|
+
return {"files": {}}
|
|
27
|
+
return {"files": {}}
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _save_manifest(dest: Path, manifest: dict) -> None:
|
|
31
|
+
dest.mkdir(parents=True, exist_ok=True)
|
|
32
|
+
manifest["_manifest_version"] = "1"
|
|
33
|
+
manifest["_manifest_hash"] = _hash_files_dict(manifest["files"])
|
|
34
|
+
(dest / MANIFEST_NAME).write_text(
|
|
35
|
+
json.dumps(manifest, indent=2), encoding="utf-8"
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def materialize(
|
|
40
|
+
files: dict[str, str],
|
|
41
|
+
dest: Path,
|
|
42
|
+
*,
|
|
43
|
+
repair: bool = False,
|
|
44
|
+
force: bool = False,
|
|
45
|
+
dry_run: bool = False,
|
|
46
|
+
) -> list[str]:
|
|
47
|
+
"""Copy stitched agent files to dest. Returns list of filenames written (or would-write)."""
|
|
48
|
+
manifest = _load_manifest(dest)
|
|
49
|
+
owned = set(manifest["files"].keys())
|
|
50
|
+
written: list[str] = []
|
|
51
|
+
|
|
52
|
+
for name, content in files.items():
|
|
53
|
+
target = dest / name
|
|
54
|
+
# Guard against path traversal (e.g. name = "../../etc/passwd")
|
|
55
|
+
if not target.resolve().is_relative_to(dest.resolve()):
|
|
56
|
+
raise ValueError(
|
|
57
|
+
f"Path traversal detected: {name!r} escapes destination {dest}"
|
|
58
|
+
)
|
|
59
|
+
if target.exists():
|
|
60
|
+
if name in owned and not repair:
|
|
61
|
+
continue
|
|
62
|
+
if name not in owned and not force:
|
|
63
|
+
continue
|
|
64
|
+
|
|
65
|
+
written.append(name)
|
|
66
|
+
if not dry_run:
|
|
67
|
+
target.parent.mkdir(parents=True, exist_ok=True)
|
|
68
|
+
target.write_text(content, encoding="utf-8")
|
|
69
|
+
manifest["files"][name] = datetime.now(timezone.utc).isoformat()
|
|
70
|
+
|
|
71
|
+
if not dry_run and written:
|
|
72
|
+
_save_manifest(dest, manifest)
|
|
73
|
+
|
|
74
|
+
return written
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def materialize_flows(
|
|
78
|
+
dest: Path,
|
|
79
|
+
*,
|
|
80
|
+
repair: bool = False,
|
|
81
|
+
force: bool = False,
|
|
82
|
+
dry_run: bool = False,
|
|
83
|
+
) -> list[str]:
|
|
84
|
+
"""Copy *.flow.yaml files from the installed package to dest. Returns list of filenames written.
|
|
85
|
+
|
|
86
|
+
Flow YAMLs are always authoritative — repair=True is forced so that
|
|
87
|
+
re-running the installer keeps installed flows in sync with the source
|
|
88
|
+
without requiring an explicit --repair flag.
|
|
89
|
+
"""
|
|
90
|
+
from .resources import core_flows_path
|
|
91
|
+
|
|
92
|
+
flows_src = core_flows_path()
|
|
93
|
+
files: dict[str, str] = {
|
|
94
|
+
f.name: f.read_text(encoding="utf-8")
|
|
95
|
+
for f in sorted(flows_src.glob("*.flow.yaml"))
|
|
96
|
+
}
|
|
97
|
+
return materialize(files, dest, repair=True, force=force, dry_run=dry_run)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def uninstall(dest: Path, *, dry_run: bool = False, confirm_manifest: bool = False) -> list[str]:
|
|
101
|
+
"""Remove all Pathly-owned files from dest using the manifest.
|
|
102
|
+
|
|
103
|
+
Returns list of filenames removed (or would-remove in dry_run).
|
|
104
|
+
If manifest entries are missing from disk and confirm_manifest is False,
|
|
105
|
+
prints a warning to stderr and aborts without deleting anything.
|
|
106
|
+
If confirm_manifest is True, missing entries are skipped and deletion proceeds.
|
|
107
|
+
"""
|
|
108
|
+
manifest_path = dest / MANIFEST_NAME
|
|
109
|
+
if not manifest_path.exists():
|
|
110
|
+
print(f" [warn] No manifest at {manifest_path} — nothing to uninstall.", file=sys.stderr)
|
|
111
|
+
return []
|
|
112
|
+
|
|
113
|
+
manifest = _load_manifest(dest)
|
|
114
|
+
removed: list[str] = []
|
|
115
|
+
missing: list[str] = []
|
|
116
|
+
|
|
117
|
+
# Pass 1: validate all entries before touching the filesystem.
|
|
118
|
+
# This prevents partial deletion when a manifest is tampered.
|
|
119
|
+
for name in list(manifest["files"]):
|
|
120
|
+
target = dest / name
|
|
121
|
+
if not target.resolve().is_relative_to(dest.resolve()):
|
|
122
|
+
raise ValueError(
|
|
123
|
+
f"Path traversal detected in manifest: {name!r} escapes destination {dest}"
|
|
124
|
+
)
|
|
125
|
+
if not target.exists():
|
|
126
|
+
missing.append(name)
|
|
127
|
+
|
|
128
|
+
if missing and not confirm_manifest:
|
|
129
|
+
print(
|
|
130
|
+
f" [warn] Aborting uninstall — the following manifest entries are not found on disk:\n"
|
|
131
|
+
+ "\n".join(f" {name}" for name in missing),
|
|
132
|
+
file=sys.stderr,
|
|
133
|
+
)
|
|
134
|
+
return []
|
|
135
|
+
|
|
136
|
+
# Pass 2: all entries are clean — perform deletions.
|
|
137
|
+
missing_set = set(missing)
|
|
138
|
+
for name in list(manifest["files"]):
|
|
139
|
+
if name in missing_set:
|
|
140
|
+
continue
|
|
141
|
+
target = dest / name
|
|
142
|
+
removed.append(name)
|
|
143
|
+
if not dry_run:
|
|
144
|
+
try:
|
|
145
|
+
target.unlink()
|
|
146
|
+
except FileNotFoundError:
|
|
147
|
+
pass
|
|
148
|
+
# Remove empty parent directories (nested skill dirs)
|
|
149
|
+
try:
|
|
150
|
+
target.parent.rmdir()
|
|
151
|
+
except OSError:
|
|
152
|
+
pass
|
|
153
|
+
|
|
154
|
+
if not dry_run:
|
|
155
|
+
try:
|
|
156
|
+
manifest_path.unlink()
|
|
157
|
+
except FileNotFoundError:
|
|
158
|
+
pass
|
|
159
|
+
|
|
160
|
+
return removed
|