pathly-adapters 2.3.0__tar.gz → 2.4.1__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.
Files changed (233) hide show
  1. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/PKG-INFO +1 -1
  2. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/README.md +1 -1
  3. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/pyproject.toml +1 -1
  4. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/install_cli/codex_plugin_config.py +170 -170
  5. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/install_cli/detect.py +21 -21
  6. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_adapters.egg-info/PKG-INFO +1 -1
  7. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_adapters.egg-info/SOURCES.txt +1 -0
  8. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/.claude-plugin/plugin.json +1 -1
  9. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/architect.yaml +5 -5
  10. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/director.yaml +4 -4
  11. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/pathly_skill.yaml +3 -3
  12. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/po.yaml +5 -5
  13. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/quick.yaml +4 -4
  14. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/reviewer.yaml +5 -5
  15. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/scout-path_skill.yaml +3 -3
  16. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/scout.yaml +4 -4
  17. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/team-build_skill.yaml +3 -3
  18. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/team-discover_skill.yaml +3 -3
  19. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/team-plan_skill.yaml +3 -3
  20. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/team-retro_skill.yaml +5 -5
  21. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/team-review_skill.yaml +3 -3
  22. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/team-test_skill.yaml +3 -3
  23. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/web-researcher.yaml +4 -4
  24. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/.codex-plugin/plugin.json +3 -3
  25. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/README.md +21 -21
  26. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/architect.yaml +4 -4
  27. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/director.yaml +3 -3
  28. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/pathly_skill.yaml +3 -3
  29. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/po.yaml +4 -4
  30. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/quick.yaml +3 -3
  31. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/reviewer.yaml +4 -4
  32. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/scout-path_skill.yaml +3 -3
  33. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/scout.yaml +3 -3
  34. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/team-build_skill.yaml +3 -3
  35. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/team-discover_skill.yaml +3 -3
  36. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/team-plan_skill.yaml +3 -3
  37. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/team-retro_skill.yaml +5 -5
  38. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/team-review_skill.yaml +3 -3
  39. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/team-test_skill.yaml +3 -3
  40. {pathly_adapters-2.3.0/src/pathly_data/adapters/copilot → pathly_adapters-2.4.1/src/pathly_data/adapters/codex}/_meta/team_skill.yaml +3 -3
  41. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/web-researcher.yaml +3 -3
  42. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/architect.yaml +4 -4
  43. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/builder.yaml +5 -5
  44. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/director.yaml +4 -4
  45. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/explorer.yaml +4 -4
  46. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/orchestrator.yaml +4 -4
  47. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/pathly_skill.yaml +3 -3
  48. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/planner.yaml +4 -4
  49. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/po.yaml +4 -4
  50. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/quick.yaml +4 -4
  51. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/reviewer.yaml +4 -4
  52. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/scout-path_skill.yaml +3 -3
  53. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/scout.yaml +4 -4
  54. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/team-build_skill.yaml +3 -3
  55. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/team-discover_skill.yaml +3 -3
  56. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/team-plan_skill.yaml +3 -3
  57. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/team-retro_skill.yaml +5 -5
  58. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/team-review_skill.yaml +3 -3
  59. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/team-test_skill.yaml +3 -3
  60. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/tester.yaml +4 -4
  61. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/web-researcher.yaml +4 -4
  62. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/SKILLS_OVERVIEW.md +883 -883
  63. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/agents/architect.md +7 -0
  64. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/agents/builder.md +7 -0
  65. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/agents/explorer.md +7 -0
  66. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/agents/orchestrator.md +159 -159
  67. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/agents/planner.md +7 -0
  68. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/agents/po.md +30 -30
  69. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/agents/reviewer.md +7 -0
  70. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/agents/tester.md +7 -0
  71. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/flows/debug.flow.yaml +37 -37
  72. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/flows/explore.flow.yaml +30 -30
  73. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/flows/team.flow.yaml +73 -73
  74. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/archive.md +83 -83
  75. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/debug.md +76 -76
  76. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/explore.md +114 -75
  77. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/meet.md +303 -303
  78. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/pathly.md +358 -358
  79. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/pause.md +43 -43
  80. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/po.md +146 -146
  81. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/prd-import.md +196 -196
  82. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/templates/plan/FEATURE_INDEX.template.md +61 -61
  83. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/schemas/pathly-meta.schema.json +139 -116
  84. pathly_adapters-2.4.1/src/pathly_data/schemas/state.schema.json +38 -0
  85. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_hooks/__init__.py +5 -5
  86. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_hooks/classify_feedback.py +73 -73
  87. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_hooks/inject_feedback_ttl.py +81 -81
  88. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_orchestrator/__init__.py +8 -8
  89. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_orchestrator/events.py +83 -83
  90. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_telemetry/__init__.py +1 -1
  91. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_telemetry/__main__.py +14 -14
  92. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_telemetry/report.py +80 -80
  93. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_telemetry/storage.py +28 -28
  94. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/tests/test_codex_plugin_config.py +122 -122
  95. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/tests/test_feedback_protocol.py +15 -15
  96. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/tests/test_hooks.py +40 -40
  97. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/tests/test_setup.py +23 -23
  98. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/setup.cfg +0 -0
  99. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/install_cli/__init__.py +0 -0
  100. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/install_cli/__main__.py +0 -0
  101. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/install_cli/materialize.py +0 -0
  102. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/install_cli/mcp_config.py +0 -0
  103. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/install_cli/resources.py +0 -0
  104. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/install_cli/setup_command.py +0 -0
  105. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/install_cli/stitch.py +0 -0
  106. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_adapters.egg-info/dependency_links.txt +0 -0
  107. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_adapters.egg-info/entry_points.txt +0 -0
  108. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_adapters.egg-info/requires.txt +0 -0
  109. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_adapters.egg-info/top_level.txt +0 -0
  110. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/__init__.py +0 -0
  111. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/.claude-plugin/marketplace.json +0 -0
  112. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/README.md +0 -0
  113. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/archive_skill.yaml +0 -0
  114. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/build_skill.yaml +0 -0
  115. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/builder.yaml +0 -0
  116. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/debug_skill.yaml +0 -0
  117. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/end_skill.yaml +0 -0
  118. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/explore_skill.yaml +0 -0
  119. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/explorer.yaml +0 -0
  120. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/go_skill.yaml +0 -0
  121. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/help_skill.yaml +0 -0
  122. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/install.yaml +0 -0
  123. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/lessons_skill.yaml +0 -0
  124. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/meet_skill.yaml +0 -0
  125. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/orchestrator.yaml +0 -0
  126. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/pause_skill.yaml +0 -0
  127. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/plan_skill.yaml +0 -0
  128. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/planner.yaml +0 -0
  129. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/po_skill.yaml +0 -0
  130. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/prd-import_skill.yaml +0 -0
  131. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/retro_skill.yaml +0 -0
  132. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/review_skill.yaml +0 -0
  133. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/start_skill.yaml +0 -0
  134. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/storm_skill.yaml +0 -0
  135. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/team_skill.yaml +0 -0
  136. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/test_skill.yaml +0 -0
  137. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/tester.yaml +0 -0
  138. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/claude/_meta/verify-state_skill.yaml +0 -0
  139. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/archive_skill.yaml +0 -0
  140. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/build_skill.yaml +0 -0
  141. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/builder.yaml +0 -0
  142. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/debug_skill.yaml +0 -0
  143. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/end_skill.yaml +0 -0
  144. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/explore_skill.yaml +0 -0
  145. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/explorer.yaml +0 -0
  146. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/go_skill.yaml +0 -0
  147. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/help_skill.yaml +0 -0
  148. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/install.yaml +0 -0
  149. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/lessons_skill.yaml +0 -0
  150. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/meet_skill.yaml +0 -0
  151. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/orchestrator.yaml +0 -0
  152. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/pause_skill.yaml +0 -0
  153. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/plan_skill.yaml +0 -0
  154. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/planner.yaml +0 -0
  155. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/po_skill.yaml +0 -0
  156. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/prd-import_skill.yaml +0 -0
  157. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/retro_skill.yaml +0 -0
  158. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/review_skill.yaml +0 -0
  159. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/start_skill.yaml +0 -0
  160. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/storm_skill.yaml +0 -0
  161. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/test_skill.yaml +0 -0
  162. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/tester.yaml +0 -0
  163. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/codex/_meta/verify-state_skill.yaml +0 -0
  164. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/README.md +0 -0
  165. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/archive_skill.yaml +0 -0
  166. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/build_skill.yaml +0 -0
  167. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/debug_skill.yaml +0 -0
  168. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/end_skill.yaml +0 -0
  169. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/explore_skill.yaml +0 -0
  170. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/go_skill.yaml +0 -0
  171. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/help_skill.yaml +0 -0
  172. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/install.yaml +0 -0
  173. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/lessons_skill.yaml +0 -0
  174. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/meet_skill.yaml +0 -0
  175. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/pause_skill.yaml +0 -0
  176. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/plan_skill.yaml +0 -0
  177. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/po_skill.yaml +0 -0
  178. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/prd-import_skill.yaml +0 -0
  179. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/retro_skill.yaml +0 -0
  180. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/review_skill.yaml +0 -0
  181. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/start_skill.yaml +0 -0
  182. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/storm_skill.yaml +0 -0
  183. {pathly_adapters-2.3.0/src/pathly_data/adapters/codex → pathly_adapters-2.4.1/src/pathly_data/adapters/copilot}/_meta/team_skill.yaml +0 -0
  184. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/test_skill.yaml +0 -0
  185. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/adapters/copilot/_meta/verify-state_skill.yaml +0 -0
  186. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/README.md +0 -0
  187. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/agents/README_routing.md +0 -0
  188. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/agents/director.md +0 -0
  189. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/agents/quick.md +0 -0
  190. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/agents/scout.md +0 -0
  191. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/agents/web-researcher.md +0 -0
  192. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/build.md +0 -0
  193. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/end.md +0 -0
  194. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/go.md +0 -0
  195. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/help.md +0 -0
  196. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/lessons.md +0 -0
  197. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/plan.md +0 -0
  198. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/retro.md +0 -0
  199. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/review.md +0 -0
  200. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/scout-path.md +0 -0
  201. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/start.md +0 -0
  202. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/storm.md +0 -0
  203. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/team/build.md +0 -0
  204. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/team/discover.md +0 -0
  205. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/team/plan.md +0 -0
  206. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/team/retro.md +0 -0
  207. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/team/review.md +0 -0
  208. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/team/test.md +0 -0
  209. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/team.md +0 -0
  210. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/test.md +0 -0
  211. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/skills/verify-state.md +0 -0
  212. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/templates/README.md +0 -0
  213. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/templates/pipeline-walkthrough/01-PIPELINE-FLOW.md +0 -0
  214. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/templates/pipeline-walkthrough/02-TOKEN-USAGE.md +0 -0
  215. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/templates/pipeline-walkthrough/03-ARTIFACT-MAP.md +0 -0
  216. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/templates/pipeline-walkthrough/README.md +0 -0
  217. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/templates/plan/ARCHITECTURE_PROPOSAL.template.md +0 -0
  218. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/templates/plan/CONVERSATION_PROMPTS.template.md +0 -0
  219. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/templates/plan/EDGE_CASES.template.md +0 -0
  220. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/templates/plan/FLOW_DIAGRAM.template.md +0 -0
  221. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/templates/plan/HAPPY_FLOW.template.md +0 -0
  222. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/templates/plan/IMPLEMENTATION_PLAN.template.md +0 -0
  223. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/templates/plan/MERMAID_DIAGRAM.template.md +0 -0
  224. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/templates/plan/PROGRESS.template.md +0 -0
  225. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_data/core/templates/plan/USER_STORIES.template.md +0 -0
  226. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_orchestrator/eventlog.py +0 -0
  227. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_orchestrator/state.py +0 -0
  228. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/src/pathly_telemetry/server.py +0 -0
  229. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/tests/test_materialize_hooks.py +0 -0
  230. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/tests/test_mcp_config.py +0 -0
  231. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/tests/test_orchestrator.py +0 -0
  232. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/tests/test_stitch.py +0 -0
  233. {pathly_adapters-2.3.0 → pathly_adapters-2.4.1}/tests/test_stitch_skill.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pathly-adapters
3
- Version: 2.3.0
3
+ Version: 2.4.1
4
4
  Summary: Pathly adapter installer — stitches and deploys agent files to AI host tools.
5
5
  Requires-Python: >=3.11
6
6
  Requires-Dist: pyyaml>=6.0
@@ -111,7 +111,7 @@ see [github.com/hamilton-sky/pathly](https://github.com/hamilton-sky/pathly) —
111
111
 
112
112
  ## Release Status
113
113
 
114
- Stable (1.0.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.
114
+ Stable (2.3.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.
115
115
 
116
116
  ## Known Limitations
117
117
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pathly-adapters"
7
- version = "2.3.0"
7
+ version = "2.4.1"
8
8
  description = "Pathly adapter installer — stitches and deploys agent files to AI host tools."
9
9
  requires-python = ">=3.11"
10
10
  dependencies = ["pyyaml>=6.0"]
@@ -1,170 +1,170 @@
1
- """Install/remove Pathly's Codex local marketplace registration."""
2
- from __future__ import annotations
3
-
4
- import json
5
- import re
6
- import shutil
7
- import subprocess
8
- import sys
9
- from pathlib import Path
10
-
11
- MARKETPLACE_NAME = "pathly-local"
12
- PLUGIN_NAME = "pathly"
13
-
14
- _CODEX_CONFIG = Path.home() / ".codex" / "config.toml"
15
- _MARKETPLACE_ROOT = Path.home() / ".codex" / "pathly-marketplace"
16
-
17
-
18
- def install_codex_plugin(
19
- plugin_files: dict[str, str],
20
- *,
21
- dry_run: bool = False,
22
- config_path: Path | None = None,
23
- marketplace_root: Path | None = None,
24
- codex_command: str | None = None,
25
- ) -> None:
26
- """Create a real local marketplace and enable the Pathly plugin."""
27
- config_path = config_path or _CODEX_CONFIG
28
- marketplace_root = marketplace_root or _MARKETPLACE_ROOT
29
-
30
- if dry_run:
31
- print(f" [dry-run] Would write Codex marketplace to {marketplace_root}")
32
- print(f" [dry-run] Would enable plugin '{PLUGIN_NAME}@{MARKETPLACE_NAME}' in {config_path}")
33
- print(" [dry-run] Would refresh Codex local marketplace registration if the codex CLI is available")
34
- return
35
-
36
- using_default_paths = config_path == _CODEX_CONFIG and marketplace_root == _MARKETPLACE_ROOT
37
- plugin_root = marketplace_root / "plugins" / PLUGIN_NAME
38
- if plugin_root.exists():
39
- shutil.rmtree(plugin_root)
40
- plugin_root.mkdir(parents=True, exist_ok=True)
41
-
42
- for name, content in sorted(plugin_files.items()):
43
- target = plugin_root / name
44
- if not target.resolve().is_relative_to(plugin_root.resolve()):
45
- raise ValueError(f"Path traversal detected in plugin file: {name!r}")
46
- target.parent.mkdir(parents=True, exist_ok=True)
47
- target.write_text(content, encoding="utf-8")
48
-
49
- _write_marketplace_json(marketplace_root)
50
- refreshed = _refresh_codex_marketplace(
51
- marketplace_root,
52
- codex_command=codex_command,
53
- discover_cli=using_default_paths,
54
- )
55
- if not refreshed:
56
- _enable_in_codex_config(config_path, marketplace_root)
57
- print(f"[codex] Registered local plugin marketplace at {marketplace_root}")
58
- print('[codex] Restart Codex and start a new thread. Try: "Use Pathly help"')
59
-
60
-
61
- def uninstall_codex_plugin(
62
- *,
63
- dry_run: bool = False,
64
- config_path: Path | None = None,
65
- marketplace_root: Path | None = None,
66
- ) -> None:
67
- config_path = config_path or _CODEX_CONFIG
68
- marketplace_root = marketplace_root or _MARKETPLACE_ROOT
69
-
70
- if dry_run:
71
- print(f" [dry-run] Would remove plugin '{PLUGIN_NAME}@{MARKETPLACE_NAME}' from {config_path}")
72
- print(f" [dry-run] Would remove Codex marketplace at {marketplace_root}")
73
- return
74
-
75
- _disable_in_codex_config(config_path)
76
- if marketplace_root.exists():
77
- shutil.rmtree(marketplace_root)
78
- print(f"[codex] Removed local plugin marketplace at {marketplace_root}")
79
-
80
-
81
- def _write_marketplace_json(root: Path) -> None:
82
- path = root / ".agents" / "plugins" / "marketplace.json"
83
- path.parent.mkdir(parents=True, exist_ok=True)
84
- data = {
85
- "name": MARKETPLACE_NAME,
86
- "interface": {"displayName": "Pathly Local"},
87
- "plugins": [
88
- {
89
- "name": PLUGIN_NAME,
90
- "source": {"source": "local", "path": f"./plugins/{PLUGIN_NAME}"},
91
- "policy": {"installation": "AVAILABLE", "authentication": "ON_INSTALL"},
92
- "category": "Developer Tools",
93
- }
94
- ],
95
- }
96
- path.write_text(json.dumps(data, indent=2), encoding="utf-8")
97
-
98
-
99
- def _refresh_codex_marketplace(
100
- marketplace_root: Path,
101
- *,
102
- codex_command: str | None = None,
103
- discover_cli: bool = True,
104
- ) -> bool:
105
- command = codex_command
106
- if command is None and discover_cli:
107
- command = shutil.which("codex")
108
- if command is None:
109
- print("[codex] Codex CLI not found; config.toml was updated directly.")
110
- return False
111
-
112
- remove = subprocess.run(
113
- [command, "plugin", "marketplace", "remove", MARKETPLACE_NAME],
114
- capture_output=True,
115
- text=True,
116
- timeout=60,
117
- )
118
- if remove.returncode != 0:
119
- print(f"[codex] Marketplace remove skipped: {remove.stderr.strip() or remove.stdout.strip()}")
120
-
121
- add = subprocess.run(
122
- [command, "plugin", "marketplace", "add", str(marketplace_root)],
123
- capture_output=True,
124
- text=True,
125
- timeout=60,
126
- )
127
- if add.returncode != 0:
128
- print(f"[codex] Codex CLI marketplace refresh failed: {add.stderr.strip() or add.stdout.strip()}", file=sys.stderr)
129
- print("[codex] Falling back to direct config.toml registration.", file=sys.stderr)
130
- return False
131
-
132
- print("[codex] Refreshed Codex local marketplace registration via codex CLI.")
133
- return True
134
-
135
-
136
- def _enable_in_codex_config(path: Path, marketplace_root: Path) -> None:
137
- content = _read_config(path)
138
- content = _remove_pathly_blocks(content)
139
- block = (
140
- f"\n[marketplaces.{MARKETPLACE_NAME}]\n"
141
- 'last_updated = "1970-01-01T00:00:00Z"\n'
142
- 'source_type = "local"\n'
143
- f"source = '{marketplace_root}'\n"
144
- f'[plugins."{PLUGIN_NAME}@{MARKETPLACE_NAME}"]\n'
145
- "enabled = true\n"
146
- )
147
- path.parent.mkdir(parents=True, exist_ok=True)
148
- path.write_text(content.rstrip() + "\n" + block, encoding="utf-8")
149
-
150
-
151
- def _disable_in_codex_config(path: Path) -> None:
152
- content = _read_config(path)
153
- cleaned = _remove_pathly_blocks(content)
154
- if cleaned != content:
155
- path.write_text(cleaned.rstrip() + "\n", encoding="utf-8")
156
-
157
-
158
- def _read_config(path: Path) -> str:
159
- if not path.exists():
160
- print(f" [warn] Codex config not found at {path}; creating it.", file=sys.stderr)
161
- return ""
162
- return path.read_text(encoding="utf-8")
163
-
164
-
165
- def _remove_pathly_blocks(content: str) -> str:
166
- marketplace = rf"\n?\[marketplaces\.{re.escape(MARKETPLACE_NAME)}\].*?(?=\n\[|\Z)"
167
- plugin = rf"\n?\[plugins\.\"{re.escape(PLUGIN_NAME)}@{re.escape(MARKETPLACE_NAME)}\"\].*?(?=\n\[|\Z)"
168
- content = re.sub(marketplace, "", content, flags=re.DOTALL)
169
- content = re.sub(plugin, "", content, flags=re.DOTALL)
170
- return content
1
+ """Install/remove Pathly's Codex local marketplace registration."""
2
+ from __future__ import annotations
3
+
4
+ import json
5
+ import re
6
+ import shutil
7
+ import subprocess
8
+ import sys
9
+ from pathlib import Path
10
+
11
+ MARKETPLACE_NAME = "pathly-local"
12
+ PLUGIN_NAME = "pathly"
13
+
14
+ _CODEX_CONFIG = Path.home() / ".codex" / "config.toml"
15
+ _MARKETPLACE_ROOT = Path.home() / ".codex" / "pathly-marketplace"
16
+
17
+
18
+ def install_codex_plugin(
19
+ plugin_files: dict[str, str],
20
+ *,
21
+ dry_run: bool = False,
22
+ config_path: Path | None = None,
23
+ marketplace_root: Path | None = None,
24
+ codex_command: str | None = None,
25
+ ) -> None:
26
+ """Create a real local marketplace and enable the Pathly plugin."""
27
+ config_path = config_path or _CODEX_CONFIG
28
+ marketplace_root = marketplace_root or _MARKETPLACE_ROOT
29
+
30
+ if dry_run:
31
+ print(f" [dry-run] Would write Codex marketplace to {marketplace_root}")
32
+ print(f" [dry-run] Would enable plugin '{PLUGIN_NAME}@{MARKETPLACE_NAME}' in {config_path}")
33
+ print(" [dry-run] Would refresh Codex local marketplace registration if the codex CLI is available")
34
+ return
35
+
36
+ using_default_paths = config_path == _CODEX_CONFIG and marketplace_root == _MARKETPLACE_ROOT
37
+ plugin_root = marketplace_root / "plugins" / PLUGIN_NAME
38
+ if plugin_root.exists():
39
+ shutil.rmtree(plugin_root)
40
+ plugin_root.mkdir(parents=True, exist_ok=True)
41
+
42
+ for name, content in sorted(plugin_files.items()):
43
+ target = plugin_root / name
44
+ if not target.resolve().is_relative_to(plugin_root.resolve()):
45
+ raise ValueError(f"Path traversal detected in plugin file: {name!r}")
46
+ target.parent.mkdir(parents=True, exist_ok=True)
47
+ target.write_text(content, encoding="utf-8")
48
+
49
+ _write_marketplace_json(marketplace_root)
50
+ refreshed = _refresh_codex_marketplace(
51
+ marketplace_root,
52
+ codex_command=codex_command,
53
+ discover_cli=using_default_paths,
54
+ )
55
+ if not refreshed:
56
+ _enable_in_codex_config(config_path, marketplace_root)
57
+ print(f"[codex] Registered local plugin marketplace at {marketplace_root}")
58
+ print('[codex] Restart Codex and start a new thread. Try: "Use Pathly help"')
59
+
60
+
61
+ def uninstall_codex_plugin(
62
+ *,
63
+ dry_run: bool = False,
64
+ config_path: Path | None = None,
65
+ marketplace_root: Path | None = None,
66
+ ) -> None:
67
+ config_path = config_path or _CODEX_CONFIG
68
+ marketplace_root = marketplace_root or _MARKETPLACE_ROOT
69
+
70
+ if dry_run:
71
+ print(f" [dry-run] Would remove plugin '{PLUGIN_NAME}@{MARKETPLACE_NAME}' from {config_path}")
72
+ print(f" [dry-run] Would remove Codex marketplace at {marketplace_root}")
73
+ return
74
+
75
+ _disable_in_codex_config(config_path)
76
+ if marketplace_root.exists():
77
+ shutil.rmtree(marketplace_root)
78
+ print(f"[codex] Removed local plugin marketplace at {marketplace_root}")
79
+
80
+
81
+ def _write_marketplace_json(root: Path) -> None:
82
+ path = root / ".agents" / "plugins" / "marketplace.json"
83
+ path.parent.mkdir(parents=True, exist_ok=True)
84
+ data = {
85
+ "name": MARKETPLACE_NAME,
86
+ "interface": {"displayName": "Pathly Local"},
87
+ "plugins": [
88
+ {
89
+ "name": PLUGIN_NAME,
90
+ "source": {"source": "local", "path": f"./plugins/{PLUGIN_NAME}"},
91
+ "policy": {"installation": "AVAILABLE", "authentication": "ON_INSTALL"},
92
+ "category": "Developer Tools",
93
+ }
94
+ ],
95
+ }
96
+ path.write_text(json.dumps(data, indent=2), encoding="utf-8")
97
+
98
+
99
+ def _refresh_codex_marketplace(
100
+ marketplace_root: Path,
101
+ *,
102
+ codex_command: str | None = None,
103
+ discover_cli: bool = True,
104
+ ) -> bool:
105
+ command = codex_command
106
+ if command is None and discover_cli:
107
+ command = shutil.which("codex")
108
+ if command is None:
109
+ print("[codex] Codex CLI not found; config.toml was updated directly.")
110
+ return False
111
+
112
+ remove = subprocess.run(
113
+ [command, "plugin", "marketplace", "remove", MARKETPLACE_NAME],
114
+ capture_output=True,
115
+ text=True,
116
+ timeout=60,
117
+ )
118
+ if remove.returncode != 0:
119
+ print(f"[codex] Marketplace remove skipped: {remove.stderr.strip() or remove.stdout.strip()}")
120
+
121
+ add = subprocess.run(
122
+ [command, "plugin", "marketplace", "add", str(marketplace_root)],
123
+ capture_output=True,
124
+ text=True,
125
+ timeout=60,
126
+ )
127
+ if add.returncode != 0:
128
+ print(f"[codex] Codex CLI marketplace refresh failed: {add.stderr.strip() or add.stdout.strip()}", file=sys.stderr)
129
+ print("[codex] Falling back to direct config.toml registration.", file=sys.stderr)
130
+ return False
131
+
132
+ print("[codex] Refreshed Codex local marketplace registration via codex CLI.")
133
+ return True
134
+
135
+
136
+ def _enable_in_codex_config(path: Path, marketplace_root: Path) -> None:
137
+ content = _read_config(path)
138
+ content = _remove_pathly_blocks(content)
139
+ block = (
140
+ f"\n[marketplaces.{MARKETPLACE_NAME}]\n"
141
+ 'last_updated = "1970-01-01T00:00:00Z"\n'
142
+ 'source_type = "local"\n'
143
+ f"source = '{marketplace_root}'\n"
144
+ f'[plugins."{PLUGIN_NAME}@{MARKETPLACE_NAME}"]\n'
145
+ "enabled = true\n"
146
+ )
147
+ path.parent.mkdir(parents=True, exist_ok=True)
148
+ path.write_text(content.rstrip() + "\n" + block, encoding="utf-8")
149
+
150
+
151
+ def _disable_in_codex_config(path: Path) -> None:
152
+ content = _read_config(path)
153
+ cleaned = _remove_pathly_blocks(content)
154
+ if cleaned != content:
155
+ path.write_text(cleaned.rstrip() + "\n", encoding="utf-8")
156
+
157
+
158
+ def _read_config(path: Path) -> str:
159
+ if not path.exists():
160
+ print(f" [warn] Codex config not found at {path}; creating it.", file=sys.stderr)
161
+ return ""
162
+ return path.read_text(encoding="utf-8")
163
+
164
+
165
+ def _remove_pathly_blocks(content: str) -> str:
166
+ marketplace = rf"\n?\[marketplaces\.{re.escape(MARKETPLACE_NAME)}\].*?(?=\n\[|\Z)"
167
+ plugin = rf"\n?\[plugins\.\"{re.escape(PLUGIN_NAME)}@{re.escape(MARKETPLACE_NAME)}\"\].*?(?=\n\[|\Z)"
168
+ content = re.sub(marketplace, "", content, flags=re.DOTALL)
169
+ content = re.sub(plugin, "", content, flags=re.DOTALL)
170
+ return content
@@ -1,21 +1,21 @@
1
- from pathlib import Path
2
-
3
- _HOST_MARKERS: dict[str, list[Path]] = {
4
- "claude": [
5
- Path.home() / ".claude",
6
- ],
7
- "codex": [
8
- Path.home() / ".codex",
9
- Path.home() / ".openai-codex",
10
- ],
11
- "copilot": [
12
- Path.home() / "AppData" / "Roaming" / "Code", # Windows
13
- Path.home() / ".config" / "Code", # Linux
14
- Path.home() / "Library" / "Application Support" / "Code", # macOS
15
- Path.home() / ".vscode",
16
- ],
17
- }
18
-
19
-
20
- def detect_hosts() -> list[str]:
21
- return [host for host, paths in _HOST_MARKERS.items() if any(p.exists() for p in paths)]
1
+ from pathlib import Path
2
+
3
+ _HOST_MARKERS: dict[str, list[Path]] = {
4
+ "claude": [
5
+ Path.home() / ".claude",
6
+ ],
7
+ "codex": [
8
+ Path.home() / ".codex",
9
+ Path.home() / ".openai-codex",
10
+ ],
11
+ "copilot": [
12
+ Path.home() / "AppData" / "Roaming" / "Code", # Windows
13
+ Path.home() / ".config" / "Code", # Linux
14
+ Path.home() / "Library" / "Application Support" / "Code", # macOS
15
+ Path.home() / ".vscode",
16
+ ],
17
+ }
18
+
19
+
20
+ def detect_hosts() -> list[str]:
21
+ return [host for host, paths in _HOST_MARKERS.items() if any(p.exists() for p in paths)]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pathly-adapters
3
- Version: 2.3.0
3
+ Version: 2.4.1
4
4
  Summary: Pathly adapter installer — stitches and deploys agent files to AI host tools.
5
5
  Requires-Python: >=3.11
6
6
  Requires-Dist: pyyaml>=6.0
@@ -207,6 +207,7 @@ src/pathly_data/core/templates/plan/MERMAID_DIAGRAM.template.md
207
207
  src/pathly_data/core/templates/plan/PROGRESS.template.md
208
208
  src/pathly_data/core/templates/plan/USER_STORIES.template.md
209
209
  src/pathly_data/schemas/pathly-meta.schema.json
210
+ src/pathly_data/schemas/state.schema.json
210
211
  src/pathly_hooks/__init__.py
211
212
  src/pathly_hooks/classify_feedback.py
212
213
  src/pathly_hooks/inject_feedback_ttl.py
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pathly",
3
- "version": "2.0.3",
3
+ "version": "2.0.3",
4
4
  "description": "Guided agent workflows for real software development. Tell Pathly what you want; it chooses the path through planning, building, review, debug, test, and retro.",
5
5
  "author": "hamilton",
6
6
  "skills": "core/skills/",
@@ -1,5 +1,5 @@
1
- name: architect
2
- description: Technical architecture design, layer decisions, system design, trade-off analysis, and deep design sessions. Use when the HOW needs to be figured out — layer structure, dependency direction, technology choices, design patterns.
3
- model: opus
4
- tools: [Read, Glob, Grep, Write, Edit]
5
- can_spawn: [quick, scout, web-researcher]
1
+ name: architect
2
+ description: Technical architecture design, layer decisions, system design, trade-off analysis, and deep design sessions. Use when the HOW needs to be figured out — layer structure, dependency direction, technology choices, design patterns.
3
+ model: opus
4
+ tools: [Read, Glob, Grep, Write, Edit]
5
+ can_spawn: [quick, scout, web-researcher]
@@ -1,4 +1,4 @@
1
- name: director
2
- description: Natural-language front door for the framework. Classifies user intent, chooses the lightest safe workflow, and invokes the pipeline behind the scenes.
3
- model: sonnet
4
- tools: [Read, Glob, Grep]
1
+ name: director
2
+ description: Natural-language front door for the framework. Classifies user intent, chooses the lightest safe workflow, and invokes the pipeline behind the scenes.
3
+ model: sonnet
4
+ tools: [Read, Glob, Grep]
@@ -1,3 +1,3 @@
1
- skill: pathly
2
- invocation: /pathly
3
- natural_language: "pathly, /pathly, start pathly, pathly help, pathly go"
1
+ skill: pathly
2
+ invocation: /pathly
3
+ natural_language: "pathly, /pathly, start pathly, pathly help, pathly go"
@@ -1,5 +1,5 @@
1
- name: po
2
- description: Product Owner advisor — interactive requirements discussion. Probes what to build, who needs it, MVP scope, and edge cases through back-and-forth conversation. Challenges assumptions and surfaces gaps before architecture begins.
3
- model: opus
4
- tools: [Read, Write]
5
- can_spawn: [web-researcher]
1
+ name: po
2
+ description: Product Owner advisor — interactive requirements discussion. Probes what to build, who needs it, MVP scope, and edge cases through back-and-forth conversation. Challenges assumptions and surfaces gaps before architecture begins.
3
+ model: opus
4
+ tools: [Read, Write]
5
+ can_spawn: [web-researcher]
@@ -1,4 +1,4 @@
1
- name: quick
2
- description: Simple lookups, quick questions, single-file reads, short summaries, and small focused tasks that need one or two tool calls. Use when the task is narrow and well-defined.
3
- model: haiku
4
- tools: [Read, Glob, Grep]
1
+ name: quick
2
+ description: Simple lookups, quick questions, single-file reads, short summaries, and small focused tasks that need one or two tool calls. Use when the task is narrow and well-defined.
3
+ model: haiku
4
+ tools: [Read, Glob, Grep]
@@ -1,5 +1,5 @@
1
- name: reviewer
2
- description: Adversarial reviewer — finds contract violations and reports them without fixing. Checks dependency direction, structural rules, and security concerns. Can write feedback files, but cannot edit source or run Bash.
3
- model: sonnet
4
- tools: [Read, Glob, Grep, Write]
5
- can_spawn: [quick, scout]
1
+ name: reviewer
2
+ description: Adversarial reviewer — finds contract violations and reports them without fixing. Checks dependency direction, structural rules, and security concerns. Can write feedback files, but cannot edit source or run Bash.
3
+ model: sonnet
4
+ tools: [Read, Glob, Grep, Write]
5
+ can_spawn: [quick, scout]
@@ -1,3 +1,3 @@
1
- skill: scout-path
2
- filename: pathly-scout-path/SKILL.md
3
- natural_language: "scout-path"
1
+ skill: scout-path
2
+ filename: pathly-scout-path/SKILL.md
3
+ natural_language: "scout-path"
@@ -1,4 +1,4 @@
1
- name: scout
2
- description: Codebase pattern investigator — reads across multiple files and directories to answer a structural question. Use when builder needs 3+ file reads before making implementation decisions. Returns Structured Findings, never writes.
3
- model: haiku
4
- tools: [Read, Glob, Grep]
1
+ name: scout
2
+ description: Codebase pattern investigator — reads across multiple files and directories to answer a structural question. Use when builder needs 3+ file reads before making implementation decisions. Returns Structured Findings, never writes.
3
+ model: haiku
4
+ tools: [Read, Glob, Grep]
@@ -1,3 +1,3 @@
1
- skill: team/build
2
- filename: pathly-team/build/SKILL.md
3
- natural_language: "/pathly team build, team build phase"
1
+ skill: team/build
2
+ filename: pathly-team/build/SKILL.md
3
+ natural_language: "/pathly team build, team build phase"
@@ -1,3 +1,3 @@
1
- skill: team/discover
2
- filename: pathly-team/discover/SKILL.md
3
- natural_language: "/pathly team discover"
1
+ skill: team/discover
2
+ filename: pathly-team/discover/SKILL.md
3
+ natural_language: "/pathly team discover"
@@ -1,3 +1,3 @@
1
- skill: team/plan
2
- filename: pathly-team/plan/SKILL.md
3
- natural_language: "/pathly team plan"
1
+ skill: team/plan
2
+ filename: pathly-team/plan/SKILL.md
3
+ natural_language: "/pathly team plan"
@@ -1,5 +1,5 @@
1
- skill: team/retro
2
- filename: pathly-team/retro/SKILL.md
3
- natural_language: "/pathly team retro"
4
- variables:
5
- TEMPLATES_DIR: ~/.claude/plugins/pathly/templates
1
+ skill: team/retro
2
+ filename: pathly-team/retro/SKILL.md
3
+ natural_language: "/pathly team retro"
4
+ variables:
5
+ TEMPLATES_DIR: ~/.claude/plugins/pathly/templates
@@ -1,3 +1,3 @@
1
- skill: team/review
2
- filename: pathly-team/review/SKILL.md
3
- natural_language: "/pathly team review"
1
+ skill: team/review
2
+ filename: pathly-team/review/SKILL.md
3
+ natural_language: "/pathly team review"
@@ -1,3 +1,3 @@
1
- skill: team/test
2
- filename: pathly-team/test/SKILL.md
3
- natural_language: "/pathly team test"
1
+ skill: team/test
2
+ filename: pathly-team/test/SKILL.md
3
+ natural_language: "/pathly team test"
@@ -1,4 +1,4 @@
1
- name: web-researcher
2
- description: External knowledge gatherer — searches the web for design patterns, library docs, best practices, and domain knowledge. Use when architect or planner needs external context before making design decisions. Returns cited findings, never writes.
3
- model: sonnet
4
- tools: [WebSearch, WebFetch]
1
+ name: web-researcher
2
+ description: External knowledge gatherer — searches the web for design patterns, library docs, best practices, and domain knowledge. Use when architect or planner needs external context before making design decisions. Returns cited findings, never writes.
3
+ model: sonnet
4
+ tools: [WebSearch, WebFetch]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pathly",
3
- "version": "2.0.3",
3
+ "version": "2.0.3",
4
4
  "description": "Guided agent workflows for planning, building, reviewing, debugging, testing, and learning from software changes.",
5
5
  "author": {
6
6
  "name": "hamilton",
@@ -16,8 +16,8 @@
16
16
  "software-development",
17
17
  "planning"
18
18
  ],
19
- "skills": "./skills/",
20
- "agents": "./agents/",
19
+ "skills": "./skills/",
20
+ "agents": "./agents/",
21
21
  "interface": {
22
22
  "displayName": "Pathly",
23
23
  "shortDescription": "Tell it what you want. Pathly chooses the path.",