claude-mpm 0.3.0__tar.gz → 1.0.0__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 (474) hide show
  1. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/CHANGELOG.md +39 -0
  2. {claude_mpm-0.3.0/src/claude_mpm.egg-info → claude_mpm-1.0.0}/PKG-INFO +1 -1
  3. claude_mpm-1.0.0/VERSION +1 -0
  4. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/examples/todo_prefix_hook_example.py +6 -6
  5. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/package.json +1 -1
  6. claude_mpm-1.0.0/scripts/debug_hook_behavior.py +62 -0
  7. claude_mpm-1.0.0/scripts/debug_hook_behavior2.py +66 -0
  8. claude_mpm-1.0.0/scripts/test_agent_name_consistency.py +282 -0
  9. claude_mpm-1.0.0/scripts/test_agent_name_formats.py +82 -0
  10. claude_mpm-1.0.0/scripts/test_todo_task_integration.py +160 -0
  11. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/INSTRUCTIONS.md +23 -0
  12. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/agent_name_normalizer.py +49 -0
  13. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/simple_runner.py +7 -0
  14. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/hooks/builtin/todo_agent_prefix_hook.py +8 -7
  15. claude_mpm-1.0.0/src/claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +115 -0
  16. {claude_mpm-0.3.0 → claude_mpm-1.0.0/src/claude_mpm.egg-info}/PKG-INFO +1 -1
  17. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm.egg-info/SOURCES.txt +5 -5
  18. claude_mpm-0.3.0/IMPLEMENTATION_SUMMARY.md +0 -101
  19. claude_mpm-0.3.0/TEST_CLEANUP_SUMMARY.md +0 -56
  20. claude_mpm-0.3.0/TEST_RESULTS_SUMMARY.md +0 -98
  21. claude_mpm-0.3.0/VERSION +0 -1
  22. claude_mpm-0.3.0/agent_modification_tracker_backup.tar.gz +0 -0
  23. claude_mpm-0.3.0/isolated-test/CLAUDE.md +0 -1
  24. claude_mpm-0.3.0/src/claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +0 -89
  25. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.ai-trackdown/config.yaml +0 -0
  26. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.ai-trackdown/project.yaml +0 -0
  27. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.aitrackdown/project.json +0 -0
  28. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.aitrackdown-config.yaml +0 -0
  29. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/.claude.json +0 -0
  30. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/.claude.json.backup +0 -0
  31. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/agents/data_engineer.md +0 -0
  32. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/agents/documentation.md +0 -0
  33. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/agents/engineer.md +0 -0
  34. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/agents/ops.md +0 -0
  35. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/agents/qa.md +0 -0
  36. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/agents/research.md +0 -0
  37. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/agents/security.md +0 -0
  38. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/agents/version_control.md +0 -0
  39. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753448752189-02zmkd.sh +0 -0
  40. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753448752717-t1o960.sh +0 -0
  41. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753448753258-cz40yi.sh +0 -0
  42. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753448753816-5cj75h.sh +0 -0
  43. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753449561020-uh844i.sh +0 -0
  44. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753449676191-16dqe8.sh +0 -0
  45. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753449766642-8sffyp.sh +0 -0
  46. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753449795813-bj9blv.sh +0 -0
  47. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753449953467-ru9ods.sh +0 -0
  48. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753449966919-eb4aoq.sh +0 -0
  49. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753450012330-ad1k3g.sh +0 -0
  50. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753450254970-pvrwgd.sh +0 -0
  51. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753450398246-etdteg.sh +0 -0
  52. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753450789791-z5ptuf.sh +0 -0
  53. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753450861209-w6so3e.sh +0 -0
  54. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753451302996-01ahjc.sh +0 -0
  55. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753451384857-mvpmcf.sh +0 -0
  56. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753451508182-v942iw.sh +0 -0
  57. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753451525128-q52z98.sh +0 -0
  58. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753452958143-rd4nut.sh +0 -0
  59. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753453029843-tyfjfo.sh +0 -0
  60. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753460195020-02l99b.sh +0 -0
  61. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753460396315-znuas3.sh +0 -0
  62. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753460428488-tcy6i5.sh +0 -0
  63. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753460542243-l181zr.sh +0 -0
  64. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753461397341-fdy0v7.sh +0 -0
  65. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753469116715-v6dpx9.sh +0 -0
  66. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753477538332-i5g2cr.sh +0 -0
  67. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753477560204-7vo17t.sh +0 -0
  68. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753477883629-hsjia3.sh +0 -0
  69. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753477961808-oiyqie.sh +0 -0
  70. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753478292112-5g3i0g.sh +0 -0
  71. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753478337101-xe1uid.sh +0 -0
  72. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753478342176-env102.sh +0 -0
  73. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753478361973-nr1cwq.sh +0 -0
  74. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753478372714-lamo9k.sh +0 -0
  75. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753478388184-yxkay7.sh +0 -0
  76. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753478392376-eygj04.sh +0 -0
  77. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/shell-snapshots/snapshot-zsh-1753482158558-cr2h0o.sh +0 -0
  78. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/0aaf869f-0009-4249-b955-1c3942ff239f-agent-0aaf869f-0009-4249-b955-1c3942ff239f.json +0 -0
  79. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/0c24ded8-9422-489d-8d18-f83cc0737181-agent-0c24ded8-9422-489d-8d18-f83cc0737181.json +0 -0
  80. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/0d9501e6-77b0-4e8f-b132-bae208ed740a-agent-0d9501e6-77b0-4e8f-b132-bae208ed740a.json +0 -0
  81. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-048a118d-f0ea-4dce-90d3-d851514aa36a.json +0 -0
  82. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-0600940d-65ff-4678-ac90-9e0d42a3e138.json +0 -0
  83. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5.json +0 -0
  84. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-1b8badbc-b05e-459e-b16c-a974f28673be.json +0 -0
  85. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-231626b2-0ce7-44fb-82e4-a9e72fdcecc4.json +0 -0
  86. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-2799acc0-b5e3-4086-940e-62bd2a5bbd7d.json +0 -0
  87. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-42b0c458-9d5f-4745-826e-7c618d3a7026.json +0 -0
  88. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-a324c872-b962-4438-b794-7966f5d7a7a9.json +0 -0
  89. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-ce91e7fd-64af-4f57-b691-1487c2db8d0b.json +0 -0
  90. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-dd250db2-edbb-43fc-a143-3eeafc0cd7fa.json +0 -0
  91. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-f0cbf9cd-0136-4bca-b0e0-c66aa58d3aeb.json +0 -0
  92. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/109c42c9-0afd-4a5b-a1b3-e515e31b6a2f-agent-109c42c9-0afd-4a5b-a1b3-e515e31b6a2f.json +0 -0
  93. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/1163a193-8464-4195-8281-6b875b5d987d-agent-1163a193-8464-4195-8281-6b875b5d987d.json +0 -0
  94. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/128d2198-5b02-422c-9531-f3396cbf0ce0-agent-128d2198-5b02-422c-9531-f3396cbf0ce0.json +0 -0
  95. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/16c51506-6afa-43aa-b199-da0c853f99a9-agent-16c51506-6afa-43aa-b199-da0c853f99a9.json +0 -0
  96. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/1736bdd7-71f4-49a0-934d-18e3aa5e0b43-agent-1736bdd7-71f4-49a0-934d-18e3aa5e0b43.json +0 -0
  97. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/1869eedc-69fc-4e81-a8ac-f57bd8e3946b-agent-1869eedc-69fc-4e81-a8ac-f57bd8e3946b.json +0 -0
  98. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/1a97dfda-12e5-4f13-8c8a-731373694a1c-agent-1a97dfda-12e5-4f13-8c8a-731373694a1c.json +0 -0
  99. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/283ac74b-5516-43f8-9548-24ded2b643b1-agent-283ac74b-5516-43f8-9548-24ded2b643b1.json +0 -0
  100. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/2ba08561-559e-4f64-9522-8d6c340e47da-agent-2ba08561-559e-4f64-9522-8d6c340e47da.json +0 -0
  101. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/31da8ed9-e1a5-40c8-91c8-8e9b51ca24a9-agent-31da8ed9-e1a5-40c8-91c8-8e9b51ca24a9.json +0 -0
  102. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/35194d51-6b8f-4ef5-b771-b0aa03f49a88-agent-35194d51-6b8f-4ef5-b771-b0aa03f49a88.json +0 -0
  103. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/3d1c0368-e607-4f47-b02d-7c0922cc0f25-agent-3d1c0368-e607-4f47-b02d-7c0922cc0f25.json +0 -0
  104. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/3d46c625-6377-4296-b9b3-22bc19341092-agent-3d46c625-6377-4296-b9b3-22bc19341092.json +0 -0
  105. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/40072791-2f2f-4743-b763-ec19321ccb0b-agent-40072791-2f2f-4743-b763-ec19321ccb0b.json +0 -0
  106. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/4157ab6d-5025-4862-82eb-5818c43c5a8c-agent-4157ab6d-5025-4862-82eb-5818c43c5a8c.json +0 -0
  107. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/458938f3-a317-46f3-8359-86f05ccacc7d-agent-458938f3-a317-46f3-8359-86f05ccacc7d.json +0 -0
  108. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/4dcf1510-e396-47bb-ac32-f62811ae9774-agent-4dcf1510-e396-47bb-ac32-f62811ae9774.json +0 -0
  109. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/4eb9a1c4-92b0-44ee-9322-6ba0442efd42-agent-4eb9a1c4-92b0-44ee-9322-6ba0442efd42.json +0 -0
  110. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/4f57fa86-e804-4c8e-a0ff-196835df5bc9-agent-4f57fa86-e804-4c8e-a0ff-196835df5bc9.json +0 -0
  111. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/518e2724-687e-4ae3-bde9-582c8718695a-agent-518e2724-687e-4ae3-bde9-582c8718695a.json +0 -0
  112. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/51abf2eb-4e5a-4731-bd23-76cffe656a40-agent-51abf2eb-4e5a-4731-bd23-76cffe656a40.json +0 -0
  113. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/53c4beda-27f3-4247-ada4-f904320995ad-agent-53c4beda-27f3-4247-ada4-f904320995ad.json +0 -0
  114. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/56581e8b-07b1-4174-bf81-c280a3dee6b4-agent-56581e8b-07b1-4174-bf81-c280a3dee6b4.json +0 -0
  115. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/58848224-56e6-49f6-a4e5-c08f8f70c426-agent-58848224-56e6-49f6-a4e5-c08f8f70c426.json +0 -0
  116. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/58cf2d09-fd22-4a2e-8c74-c247ece6c802-agent-58cf2d09-fd22-4a2e-8c74-c247ece6c802.json +0 -0
  117. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/5bcc2e07-617c-4659-b82f-6b630ea891ff-agent-5bcc2e07-617c-4659-b82f-6b630ea891ff.json +0 -0
  118. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/5bf326e7-b61a-4d82-b483-94d5d7085755-agent-5bf326e7-b61a-4d82-b483-94d5d7085755.json +0 -0
  119. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/5dee78ec-d9ed-4484-b101-5490217fe423-agent-5dee78ec-d9ed-4484-b101-5490217fe423.json +0 -0
  120. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/5f6c7624-6a25-4ed9-be09-03fa3a70c4d8-agent-5f6c7624-6a25-4ed9-be09-03fa3a70c4d8.json +0 -0
  121. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/606431c0-6b47-4fb8-b386-132918a3aa0b-agent-606431c0-6b47-4fb8-b386-132918a3aa0b.json +0 -0
  122. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/6078e96f-e9a4-435f-8d2f-cf70346ebafe-agent-6078e96f-e9a4-435f-8d2f-cf70346ebafe.json +0 -0
  123. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/69e5a32b-bf2c-4264-93cd-6ac84b44ca9f-agent-69e5a32b-bf2c-4264-93cd-6ac84b44ca9f.json +0 -0
  124. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/6b729248-47b8-4657-ad7f-7f09fff21151-agent-6b729248-47b8-4657-ad7f-7f09fff21151.json +0 -0
  125. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/6d6970e8-f95f-468b-a8b8-3eacca8f1220-agent-6d6970e8-f95f-468b-a8b8-3eacca8f1220.json +0 -0
  126. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/6ec6cfa4-f2fd-4515-9c95-3ea74fbc571b-agent-6ec6cfa4-f2fd-4515-9c95-3ea74fbc571b.json +0 -0
  127. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/713e1bda-caa2-4cb9-a5a2-b7c6fec5776f-agent-713e1bda-caa2-4cb9-a5a2-b7c6fec5776f.json +0 -0
  128. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/71e6da9f-0dcd-4abd-ae8f-a5af695d9624-agent-71e6da9f-0dcd-4abd-ae8f-a5af695d9624.json +0 -0
  129. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/7653f086-93df-4423-98ce-640305e10823-agent-7653f086-93df-4423-98ce-640305e10823.json +0 -0
  130. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/76656734-acd3-411c-b333-f274dabae19c-agent-76656734-acd3-411c-b333-f274dabae19c.json +0 -0
  131. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/78150f02-9204-437c-9e12-9e800f3f73b9-agent-78150f02-9204-437c-9e12-9e800f3f73b9.json +0 -0
  132. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/7dda0a32-2834-4a47-9734-9ae9ca5b1a31-agent-7dda0a32-2834-4a47-9734-9ae9ca5b1a31.json +0 -0
  133. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/84b4d3c7-5506-4e4e-87dd-9cc48b8bc2ec-agent-84b4d3c7-5506-4e4e-87dd-9cc48b8bc2ec.json +0 -0
  134. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/86ce0d12-f82e-49b2-b553-2cd8a7e188a3-agent-86ce0d12-f82e-49b2-b553-2cd8a7e188a3.json +0 -0
  135. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/87626114-6cb1-43ef-978a-bb35f612e4eb-agent-87626114-6cb1-43ef-978a-bb35f612e4eb.json +0 -0
  136. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/880d3ea5-649e-449e-88bc-664a291ec338-agent-880d3ea5-649e-449e-88bc-664a291ec338.json +0 -0
  137. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/8962e6d9-0fc0-4578-bb08-a5dfbc2dbe5e-agent-8962e6d9-0fc0-4578-bb08-a5dfbc2dbe5e.json +0 -0
  138. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/8f998b9e-5f18-4ade-bd69-74c95a210f6a-agent-8f998b9e-5f18-4ade-bd69-74c95a210f6a.json +0 -0
  139. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/929364bd-aa69-4831-850e-37f8ab63803d-agent-929364bd-aa69-4831-850e-37f8ab63803d.json +0 -0
  140. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/95479b6c-cfbf-4bb7-9e00-b95a0b385775-agent-95479b6c-cfbf-4bb7-9e00-b95a0b385775.json +0 -0
  141. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/9628cc3a-355a-48f0-ab54-c28ac2e05dfe-agent-9628cc3a-355a-48f0-ab54-c28ac2e05dfe.json +0 -0
  142. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/a9136d1b-6e01-4879-972f-5fcdde5e08d7-agent-a9136d1b-6e01-4879-972f-5fcdde5e08d7.json +0 -0
  143. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/b10ff15f-3c8c-46d7-93b4-a0d4d5ec4003-agent-b10ff15f-3c8c-46d7-93b4-a0d4d5ec4003.json +0 -0
  144. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/b1206d13-f0ec-4f53-a746-a845732fefd7-agent-b1206d13-f0ec-4f53-a746-a845732fefd7.json +0 -0
  145. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/b61be2e4-7de3-4e1b-b636-2232190ffc5c-agent-b61be2e4-7de3-4e1b-b636-2232190ffc5c.json +0 -0
  146. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/b80ad406-64d1-4a6c-b781-15496265fae0-agent-b80ad406-64d1-4a6c-b781-15496265fae0.json +0 -0
  147. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/babc6eac-d7d6-498a-8176-e09e00423a12-agent-babc6eac-d7d6-498a-8176-e09e00423a12.json +0 -0
  148. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/bf4b7700-9630-466e-afb0-8904fbddac42-agent-bf4b7700-9630-466e-afb0-8904fbddac42.json +0 -0
  149. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/c2189d0d-9c2b-400a-bf7c-3989ef6cd37d-agent-c2189d0d-9c2b-400a-bf7c-3989ef6cd37d.json +0 -0
  150. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/c35ee595-142f-454b-bb36-dc434d4a80a6-agent-c35ee595-142f-454b-bb36-dc434d4a80a6.json +0 -0
  151. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/c629949d-4641-45ff-81d3-d7c8f353da81-agent-c629949d-4641-45ff-81d3-d7c8f353da81.json +0 -0
  152. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/c8cecbec-a3bb-4507-98a4-c590a4e919b2-agent-c8cecbec-a3bb-4507-98a4-c590a4e919b2.json +0 -0
  153. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/cce78c00-7309-4bc4-802c-3bad75be09cc-agent-cce78c00-7309-4bc4-802c-3bad75be09cc.json +0 -0
  154. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/d55a3a18-0143-4401-ba56-ea630982c105-agent-d55a3a18-0143-4401-ba56-ea630982c105.json +0 -0
  155. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/d881887b-49bc-4fda-acda-c866681c8f13-agent-d881887b-49bc-4fda-acda-c866681c8f13.json +0 -0
  156. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/db3e76fb-7b9d-4f1c-8822-cce448fdf9e6-agent-db3e76fb-7b9d-4f1c-8822-cce448fdf9e6.json +0 -0
  157. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/dc7344a6-cd2e-4f20-a945-deb2e39f4fbc-agent-dc7344a6-cd2e-4f20-a945-deb2e39f4fbc.json +0 -0
  158. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/eb12ed58-94e3-490a-b8c8-b2912fa77fbe-agent-eb12ed58-94e3-490a-b8c8-b2912fa77fbe.json +0 -0
  159. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/ef4c285d-d79b-4c6e-a458-49cb26bf3c0a-agent-ef4c285d-d79b-4c6e-a458-49cb26bf3c0a.json +0 -0
  160. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/f295b25f-51d8-4fff-b71d-aa18d7028466-agent-f295b25f-51d8-4fff-b71d-aa18d7028466.json +0 -0
  161. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/f2a683d3-4d16-4c94-bf52-03efaf45f7f1-agent-f2a683d3-4d16-4c94-bf52-03efaf45f7f1.json +0 -0
  162. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/f536b1f5-879c-4236-9718-599337ffc815-agent-f536b1f5-879c-4236-9718-599337ffc815.json +0 -0
  163. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/fabcbe8a-6751-454b-a240-e9393391e2e9-agent-fabcbe8a-6751-454b-a240-e9393391e2e9.json +0 -0
  164. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude/todos/fe57db22-5ef9-4522-9423-5c20dd665ef6-agent-fe57db22-5ef9-4522-9423-5c20dd665ef6.json +0 -0
  165. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/.claude.json +0 -0
  166. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/.claude.json.backup +0 -0
  167. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/.gitignore +0 -0
  168. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/README.md +0 -0
  169. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/agents/README.md +0 -0
  170. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/agents/poc-engineer.md +0 -0
  171. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/agents/poc-qa.md +0 -0
  172. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/agents/poc-researcher.md +0 -0
  173. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/agents/test-agent.md +0 -0
  174. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/agents/test-agent.yaml +0 -0
  175. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/config/project.json +0 -0
  176. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/projects/-Users-masa-Projects-claude-mpm/1f2d5a1d-a2fd-4c26-a1b2-3822f3a5fbf5.jsonl +0 -0
  177. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/projects/-Users-masa-Projects-claude-mpm/9217ce88-3ece-41db-adc8-9fc8532c6314.jsonl +0 -0
  178. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/shell-snapshots/snapshot-zsh-1753447830017-dejufl.sh +0 -0
  179. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/shell-snapshots/snapshot-zsh-1753447830478-zr6tpi.sh +0 -0
  180. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/stats/README.md +0 -0
  181. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/statsig/statsig.cached.evaluations.85901da9f9 +0 -0
  182. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/statsig/statsig.last_modified_time.evaluations +0 -0
  183. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/statsig/statsig.session_id.2656274335 +0 -0
  184. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/statsig/statsig.stable_id.2656274335 +0 -0
  185. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/todos/1f2d5a1d-a2fd-4c26-a1b2-3822f3a5fbf5-agent-1f2d5a1d-a2fd-4c26-a1b2-3822f3a5fbf5.json +0 -0
  186. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-mpm/todos/9217ce88-3ece-41db-adc8-9fc8532c6314-agent-9217ce88-3ece-41db-adc8-9fc8532c6314.json +0 -0
  187. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.claude-pm/config/project.json +0 -0
  188. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.githooks/pre-commit +0 -0
  189. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.gitignore +0 -0
  190. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.npmignore +0 -0
  191. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/.trackdown.yaml +0 -0
  192. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/CLAUDE.md +0 -0
  193. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/INSTALL.md +0 -0
  194. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/MANIFEST.in +0 -0
  195. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/Makefile +0 -0
  196. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/README.md +0 -0
  197. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/README.npm.md +0 -0
  198. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/bin/claude-mpm +0 -0
  199. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/bin/claude-mpm-hooks +0 -0
  200. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/bin/ticket +0 -0
  201. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/claude-mpm +0 -0
  202. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/examples/dependency_injection_demo.py +0 -0
  203. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/examples/json_rpc_hooks_demo.py +0 -0
  204. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/examples/todo_prefix_hook_integration.py +0 -0
  205. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/framework/agent-roles/base_agent.md +0 -0
  206. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/install.sh +0 -0
  207. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/install_dev.sh +0 -0
  208. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/npm-bin/claude-mpm.js +0 -0
  209. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/pyproject.toml +0 -0
  210. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/requirements-dev.txt +0 -0
  211. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/requirements.txt +0 -0
  212. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/README.md +0 -0
  213. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/add_agent_versioning.py +0 -0
  214. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/analyze_framework_loaders.py +0 -0
  215. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/claude-mpm +0 -0
  216. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/cleanup_logs.py +0 -0
  217. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/consolidate_services.py +0 -0
  218. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/convert_agents_to_yaml.py +0 -0
  219. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/debug_subprocess.py +0 -0
  220. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/demo/subprocess_before_after.py +0 -0
  221. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/demo/subprocess_improvements_demo.py +0 -0
  222. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/fix_all_fallback_imports.py +0 -0
  223. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/fix_all_imports.py +0 -0
  224. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/fix_fallback_imports.py +0 -0
  225. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/launch_with_agents.py +0 -0
  226. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/manage_version.py +0 -0
  227. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/migrate_logging_imports.py +0 -0
  228. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/migrate_to_json_rpc_hooks.py +0 -0
  229. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/postinstall.js +0 -0
  230. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/publish.sh +0 -0
  231. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/remove_remaining_ticketing.py +0 -0
  232. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/remove_ticketing_references.py +0 -0
  233. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/run_all_tests.sh +0 -0
  234. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/run_e2e_tests.sh +0 -0
  235. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/run_mpm.py +0 -0
  236. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/standardize_imports.py +0 -0
  237. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/test_basic_functionality.py +0 -0
  238. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/test_hello_world.py +0 -0
  239. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/test_simple_runner_logging.py +0 -0
  240. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/test_subagent_demo.py +0 -0
  241. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/test_system_health.py +0 -0
  242. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/test_todo_hook.py +0 -0
  243. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/tests/run_tests.py +0 -0
  244. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/tests/run_tests_updated.py +0 -0
  245. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/tests/test_agent_integration.py +0 -0
  246. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/tests/test_claude_direct.py +0 -0
  247. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/tests/test_hello_world.py +0 -0
  248. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/tests/test_interactive.py +0 -0
  249. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/tests/test_logging.py +0 -0
  250. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/tests/test_orchestration.py +0 -0
  251. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/tests/test_pexpect.py +0 -0
  252. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/tests/test_pexpect_install.py +0 -0
  253. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/tests/test_subprocess.py +0 -0
  254. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/ticket +0 -0
  255. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/scripts/verify_imports.py +0 -0
  256. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/setup.cfg +0 -0
  257. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/setup.py +0 -0
  258. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/__init__.py +0 -0
  259. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/__main__.py +0 -0
  260. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/_version.py +0 -0
  261. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -0
  262. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/__init__.py +0 -0
  263. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/agent_loader.py +0 -0
  264. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/agent_loader_integration.py +0 -0
  265. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/agents_metadata.py +0 -0
  266. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/base_agent.json +0 -0
  267. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/base_agent_loader.py +0 -0
  268. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/schema/agent_schema.json +0 -0
  269. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/system_agent_config.py +0 -0
  270. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/templates/__init__.py +0 -0
  271. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/templates/data_engineer_agent.json +0 -0
  272. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/templates/documentation_agent.json +0 -0
  273. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/templates/engineer_agent.json +0 -0
  274. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/templates/ops_agent.json +0 -0
  275. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/templates/qa_agent.json +0 -0
  276. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/templates/research_agent.json +0 -0
  277. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/templates/security_agent.json +0 -0
  278. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/templates/update-optimized-specialized-agents.json +0 -0
  279. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/templates/version_control_agent.json +0 -0
  280. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/agents/test_fix_deployment/.claude-pm/config/project.json +0 -0
  281. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/cli.py +0 -0
  282. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/cli_main.py +0 -0
  283. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/cli_module/__init__.py +0 -0
  284. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/cli_module/args.py +0 -0
  285. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/cli_module/commands.py +0 -0
  286. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/cli_module/migration_example.py +0 -0
  287. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/cli_module/refactoring_guide.md +0 -0
  288. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/cli_old/__init__.py +0 -0
  289. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/cli_old/ticket_cli.py +0 -0
  290. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/config/__init__.py +0 -0
  291. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/config/hook_config.py +0 -0
  292. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/constants.py +0 -0
  293. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/__init__.py +0 -0
  294. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/agent_registry.py +0 -0
  295. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/agent_registry.py.bak +0 -0
  296. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/agent_session_manager.py +0 -0
  297. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/base_service.py +0 -0
  298. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/base_service.py.bak +0 -0
  299. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/config.py +0 -0
  300. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/config_aliases.py +0 -0
  301. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/container.py +0 -0
  302. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/factories.py +0 -0
  303. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/framework_loader.py +0 -0
  304. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/injectable_service.py +0 -0
  305. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/interfaces.py +0 -0
  306. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/logger.py +0 -0
  307. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/minimal_framework_loader.py +0 -0
  308. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/mixins.py +0 -0
  309. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/service_registry.py +0 -0
  310. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/session_manager.py +0 -0
  311. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/core/tool_access_control.py +0 -0
  312. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/hooks/README.md +0 -0
  313. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/hooks/__init__.py +0 -0
  314. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/hooks/base_hook.py +0 -0
  315. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/hooks/builtin/__init__.py +0 -0
  316. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/hooks/builtin/logging_hook_example.py +0 -0
  317. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/hooks/builtin/post_delegation_hook_example.py +0 -0
  318. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/hooks/builtin/pre_delegation_hook_example.py +0 -0
  319. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/hooks/builtin/submit_hook_example.py +0 -0
  320. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/hooks/builtin/ticket_extraction_hook_example.py +0 -0
  321. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/hooks/builtin/workflow_start_hook.py +0 -0
  322. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/hooks/hook_client.py +0 -0
  323. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/hooks/hook_runner.py +0 -0
  324. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/hooks/json_rpc_executor.py +0 -0
  325. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/hooks/json_rpc_hook_client.py +0 -0
  326. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/hooks/tool_call_interceptor.py +0 -0
  327. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/init.py +0 -0
  328. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/orchestration/SUBPROCESS_DESIGN.md +0 -0
  329. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/orchestration/__init__.py +0 -0
  330. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/orchestration/archive/direct_orchestrator.py +0 -0
  331. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/orchestration/archive/factory.py +0 -0
  332. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/orchestration/archive/hook_enabled_orchestrator.py +0 -0
  333. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/orchestration/archive/hook_integration_example.py +0 -0
  334. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/orchestration/archive/interactive_subprocess_orchestrator.py +0 -0
  335. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/orchestration/archive/orchestrator.py +0 -0
  336. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/orchestration/archive/pexpect_orchestrator.py +0 -0
  337. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/orchestration/archive/pty_orchestrator.py +0 -0
  338. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/orchestration/archive/simple_orchestrator.py +0 -0
  339. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/orchestration/archive/subprocess_orchestrator.py +0 -0
  340. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/orchestration/archive/system_prompt_orchestrator.py +0 -0
  341. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/orchestration/archive/wrapper_orchestrator.py +0 -0
  342. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/scripts/__init__.py +0 -0
  343. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/scripts/ticket.py +0 -0
  344. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/__init__.py +0 -0
  345. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/agent_deployment.py +0 -0
  346. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/agent_lifecycle_manager.py +0 -0
  347. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/agent_management_service.py +0 -0
  348. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/agent_modification_tracker.py +0 -0
  349. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/agent_profile_loader.py +0 -0
  350. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/agent_registry.py +0 -0
  351. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/base_agent_manager.py +0 -0
  352. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_agent_loader.py +0 -0
  353. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator/README.md +0 -0
  354. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator/__init__.py +0 -0
  355. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator/content_assembler.py +0 -0
  356. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator/content_validator.py +0 -0
  357. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator/deployment_manager.py +0 -0
  358. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +0 -0
  359. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +0 -0
  360. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +0 -0
  361. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +0 -0
  362. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +0 -0
  363. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +0 -0
  364. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +0 -0
  365. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator/section_generators/header.py +0 -0
  366. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +0 -0
  367. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +0 -0
  368. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +0 -0
  369. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +0 -0
  370. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator/section_manager.py +0 -0
  371. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator/version_manager.py +0 -0
  372. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/framework_claude_md_generator.py +0 -0
  373. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/hook_service.py +0 -0
  374. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/hook_service_manager.py +0 -0
  375. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/json_rpc_hook_manager.py +0 -0
  376. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/parent_directory_manager/README.md +0 -0
  377. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/parent_directory_manager/__init__.py +0 -0
  378. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/parent_directory_manager/backup_manager.py +0 -0
  379. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/parent_directory_manager/config_manager.py +0 -0
  380. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/parent_directory_manager/deduplication_manager.py +0 -0
  381. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/parent_directory_manager/framework_protector.py +0 -0
  382. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/parent_directory_manager/operations.py +0 -0
  383. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/parent_directory_manager/state_manager.py +0 -0
  384. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/parent_directory_manager/template_deployer.py +0 -0
  385. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/parent_directory_manager/validation_manager.py +0 -0
  386. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/parent_directory_manager/version_control_helper.py +0 -0
  387. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/parent_directory_manager/version_manager.py +0 -0
  388. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/shared_prompt_cache.py +0 -0
  389. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/ticket_manager.py +0 -0
  390. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/ticket_manager_di.py +0 -0
  391. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/ticketing_service_original.py +0 -0
  392. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/version_control/VERSION +0 -0
  393. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/version_control/__init__.py +0 -0
  394. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/version_control/branch_strategy.py +0 -0
  395. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/version_control/conflict_resolution.py +0 -0
  396. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/version_control/git_operations.py +0 -0
  397. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/services/version_control/semantic_versioning.py +0 -0
  398. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/ui/__init__.py +0 -0
  399. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/ui/rich_terminal_ui.py +0 -0
  400. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/ui/terminal_ui.py +0 -0
  401. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/utils/__init__.py +0 -0
  402. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/utils/config_manager.py +0 -0
  403. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/utils/import_migration_example.py +0 -0
  404. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/utils/imports.py +0 -0
  405. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/utils/path_operations.py +0 -0
  406. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm/utils/paths.py +0 -0
  407. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm.egg-info/dependency_links.txt +0 -0
  408. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm.egg-info/entry_points.txt +0 -0
  409. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm.egg-info/requires.txt +0 -0
  410. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/src/claude_mpm.egg-info/top_level.txt +0 -0
  411. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/ticket +0 -0
  412. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/epics/EP-0001.md +0 -0
  413. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/epics/EP-0002-subagent-pivot.md +0 -0
  414. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/epics/EP-0003.md +0 -0
  415. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/issues/CONVERSION_MAPPING.md +0 -0
  416. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/issues/ISS-0001.md +0 -0
  417. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/issues/ISS-0002.md +0 -0
  418. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/issues/ISS-0003.md +0 -0
  419. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/issues/ISS-0004.md +0 -0
  420. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/issues/ISS-0005.md +0 -0
  421. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/issues/ISS-0006.md +0 -0
  422. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/issues/ISS-0007.md +0 -0
  423. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/issues/ISS-0008.md +0 -0
  424. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/issues/ISS-0009.md +0 -0
  425. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/issues/ISS-0010.md +0 -0
  426. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0001.md +0 -0
  427. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0002.md +0 -0
  428. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0003.md +0 -0
  429. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0004.md +0 -0
  430. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0005.md +0 -0
  431. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0006.md +0 -0
  432. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0008.md +0 -0
  433. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0009.md +0 -0
  434. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0011.md +0 -0
  435. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0016.md +0 -0
  436. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0017.md +0 -0
  437. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0018.md +0 -0
  438. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0019.md +0 -0
  439. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0020.md +0 -0
  440. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0021.md +0 -0
  441. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0022.md +0 -0
  442. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0023.md +0 -0
  443. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0024.md +0 -0
  444. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0025.md +0 -0
  445. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0026.md +0 -0
  446. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0027.md +0 -0
  447. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0028.md +0 -0
  448. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0029.md +0 -0
  449. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0030.md +0 -0
  450. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0031.md +0 -0
  451. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0032.md +0 -0
  452. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0033.md +0 -0
  453. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0034.md +0 -0
  454. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0035.md +0 -0
  455. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0036.md +0 -0
  456. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0037.md +0 -0
  457. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0038.md +0 -0
  458. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0039.md +0 -0
  459. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0040.md +0 -0
  460. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0041.md +0 -0
  461. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0042.md +0 -0
  462. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0043.md +0 -0
  463. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0044.md +0 -0
  464. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0045.md +0 -0
  465. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/tickets/tasks/TSK-0046.md +0 -0
  466. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/uninstall.sh +0 -0
  467. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/~/.claude/agents/data_engineer.yml +0 -0
  468. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/~/.claude/agents/documentation.yml +0 -0
  469. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/~/.claude/agents/engineer.yml +0 -0
  470. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/~/.claude/agents/ops.yml +0 -0
  471. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/~/.claude/agents/qa.yml +0 -0
  472. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/~/.claude/agents/research.yml +0 -0
  473. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/~/.claude/agents/security.yml +0 -0
  474. {claude_mpm-0.3.0 → claude_mpm-1.0.0}/~/.claude/agents/version_control.yml +0 -0
@@ -5,6 +5,44 @@ All notable changes to claude-mpm will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.0.0] - 2025-07-26
9
+
10
+ ### BREAKING CHANGES
11
+ - **Simplified architecture**: Replaced the entire orchestrator system with a simple runner
12
+ - Removed 16 orchestrator implementations and consolidated to `simple_runner.py`
13
+ - Deleted todo hijacking and subprocess runner features
14
+ - Removed agent modification tracker service
15
+ - Archived old orchestrators to `orchestration/archive/`
16
+
17
+ ### Added
18
+ - **TodoWrite Agent Prefix Hook system**: Automatic delegation of todo items to specialized agents
19
+ - `todo_agent_prefix_hook.py` for automatic todo list delegation
20
+ - `tool_call_interceptor.py` for intercepting TodoWrite tool calls
21
+ - Comprehensive documentation and example implementations
22
+ - Test script for validating todo hook functionality
23
+ - **Enhanced CLI with argument preprocessing**: Better command-line interaction
24
+ - Support for `@agent` syntax for direct agent specification
25
+ - Pass-through arguments to Claude with proper escaping
26
+ - Improved logging and error handling in CLI operations
27
+
28
+ ### Changed
29
+ - **Updated agent instructions**: Clearer guidelines for agent development
30
+ - **Simplified ticket manager**: Removed unnecessary complexity in ticket management
31
+ - **Streamlined test suite**: Removed 15 obsolete test files related to old orchestration patterns
32
+ - **Updated remaining tests**: Modified to work with simplified architecture
33
+ - **Improved framework loader**: Better clarity and maintainability
34
+
35
+ ### Removed
36
+ - Complex orchestrator system (moved to archive)
37
+ - Todo hijacking features
38
+ - Subprocess runner features
39
+ - Agent modification tracker service
40
+ - Obsolete tests for deprecated features
41
+
42
+ ### Fixed
43
+ - Test suite compatibility with new architecture
44
+ - Import paths and module references
45
+
8
46
  ## [0.5.0] - 2024-01-25
9
47
 
10
48
  ### Added
@@ -59,6 +97,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
59
97
  - Framework loader
60
98
  - Basic CLI structure
61
99
 
100
+ [1.0.0]: https://github.com/bobmatnyc/claude-mpm/compare/v0.5.0...v1.0.0
62
101
  [0.5.0]: https://github.com/bobmatnyc/claude-mpm/compare/v0.3.0...v0.5.0
63
102
  [0.3.0]: https://github.com/bobmatnyc/claude-mpm/compare/v0.2.0...v0.3.0
64
103
  [0.2.0]: https://github.com/bobmatnyc/claude-mpm/compare/v0.1.0...v0.2.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 0.3.0
3
+ Version: 1.0.0
4
4
  Summary: Claude Multi-agent Project Manager - Clean orchestration with ticket management
5
5
  Home-page: https://github.com/bobmatnyc/claude-mpm
6
6
  Author: Claude MPM Team
@@ -0,0 +1 @@
1
+ 1.0.1.dev0+g8dd1a55.d20250726
@@ -33,7 +33,7 @@ def demo_auto_prefix_enforcement():
33
33
  {'content': 'implement user authentication', 'status': 'pending', 'priority': 'high', 'id': '1'},
34
34
  {'content': 'write unit tests for auth module', 'status': 'pending', 'priority': 'medium', 'id': '2'},
35
35
  {'content': 'research best practices for JWT', 'status': 'pending', 'priority': 'low', 'id': '3'},
36
- {'content': 'Engineer: fix login bug', 'status': 'pending', 'priority': 'high', 'id': '4'}, # Already has prefix
36
+ {'content': '[Engineer] fix login bug', 'status': 'pending', 'priority': 'high', 'id': '4'}, # Already has prefix
37
37
  ]
38
38
  }
39
39
  ]
@@ -74,9 +74,9 @@ def demo_validation_only():
74
74
  'name': 'Valid todos with proper prefixes',
75
75
  'params': {
76
76
  'todos': [
77
- {'content': 'Engineer: implement user authentication', 'status': 'pending', 'priority': 'high', 'id': '1'},
78
- {'content': 'QA: write unit tests for auth module', 'status': 'pending', 'priority': 'medium', 'id': '2'},
79
- {'content': 'Researcher: investigate OAuth2 best practices', 'status': 'pending', 'priority': 'low', 'id': '3'},
77
+ {'content': '[Engineer] implement user authentication', 'status': 'pending', 'priority': 'high', 'id': '1'},
78
+ {'content': '[QA] write unit tests for auth module', 'status': 'pending', 'priority': 'medium', 'id': '2'},
79
+ {'content': '[Research] investigate OAuth2 best practices', 'status': 'pending', 'priority': 'low', 'id': '3'},
80
80
  ]
81
81
  }
82
82
  },
@@ -93,9 +93,9 @@ def demo_validation_only():
93
93
  'name': 'Mixed valid and invalid',
94
94
  'params': {
95
95
  'todos': [
96
- {'content': 'Security: audit authentication system', 'status': 'pending', 'priority': 'high', 'id': '1'},
96
+ {'content': '[Security] audit authentication system', 'status': 'pending', 'priority': 'high', 'id': '1'},
97
97
  {'content': 'update documentation', 'status': 'pending', 'priority': 'low', 'id': '2'}, # Missing prefix
98
- {'content': 'Ops: configure CI/CD pipeline', 'status': 'pending', 'priority': 'medium', 'id': '3'},
98
+ {'content': '[Ops] configure CI/CD pipeline', 'status': 'pending', 'priority': 'medium', 'id': '3'},
99
99
  ]
100
100
  }
101
101
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bobmatnyc/claude-mpm",
3
- "version": "0.3.1",
3
+ "version": "1.0.0",
4
4
  "description": "Claude Multi-Agent Project Manager - Orchestrate Claude with agent delegation and ticket tracking",
5
5
  "keywords": [
6
6
  "claude",
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/env python3
2
+ """Debug script to understand hook behavior."""
3
+
4
+ import sys
5
+ import os
6
+ sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
7
+
8
+ from datetime import datetime
9
+ from claude_mpm.hooks.builtin.todo_agent_prefix_hook import TodoAgentPrefixHook
10
+ from claude_mpm.hooks.base_hook import HookContext, HookType
11
+
12
+ # Create hook instance
13
+ hook = TodoAgentPrefixHook()
14
+
15
+ # Test case
16
+ test_todo = "Research best practices for testing"
17
+ context = HookContext(
18
+ hook_type=HookType.CUSTOM,
19
+ data={
20
+ 'tool_name': 'TodoWrite',
21
+ 'parameters': {
22
+ 'todos': [{'content': test_todo}]
23
+ }
24
+ },
25
+ metadata={},
26
+ timestamp=datetime.now()
27
+ )
28
+
29
+ print(f"Testing todo: '{test_todo}'")
30
+ print(f"Hook validation: {hook.validate(context)}")
31
+
32
+ # Execute hook
33
+ result = hook.execute(context)
34
+
35
+ print(f"\nResult:")
36
+ print(f" Success: {result.success}")
37
+ print(f" Modified: {result.modified}")
38
+ print(f" Error: {result.error}")
39
+
40
+ if result.success and result.modified:
41
+ updated_todos = result.data['parameters']['todos']
42
+ print(f" Updated content: '{updated_todos[0]['content']}'")
43
+
44
+ # Test with a todo that already has a prefix
45
+ prefixed_todo = "[Research] Analyze patterns"
46
+ context2 = HookContext(
47
+ hook_type=HookType.CUSTOM,
48
+ data={
49
+ 'tool_name': 'TodoWrite',
50
+ 'parameters': {
51
+ 'todos': [{'content': prefixed_todo}]
52
+ }
53
+ },
54
+ metadata={},
55
+ timestamp=datetime.now()
56
+ )
57
+
58
+ print(f"\n\nTesting prefixed todo: '{prefixed_todo}'")
59
+ result2 = hook.execute(context2)
60
+ print(f"Result:")
61
+ print(f" Success: {result2.success}")
62
+ print(f" Modified: {result2.modified}")
@@ -0,0 +1,66 @@
1
+ #!/usr/bin/env python3
2
+ """Debug script to understand hook behavior in detail."""
3
+
4
+ import sys
5
+ import os
6
+ sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
7
+
8
+ from datetime import datetime
9
+ from claude_mpm.hooks.builtin.todo_agent_prefix_hook import TodoAgentPrefixHook
10
+ from claude_mpm.hooks.base_hook import HookContext, HookType
11
+ from claude_mpm.core.agent_name_normalizer import agent_name_normalizer
12
+
13
+ # Create hook instance
14
+ hook = TodoAgentPrefixHook()
15
+
16
+ # Test cases from the failing test
17
+ test_cases = [
18
+ ("Research best practices for testing", "[Research]"),
19
+ ("Implement new feature", "[Engineer]"),
20
+ ("Test the implementation", "[QA]"),
21
+ ("Document the API", "[Documentation]"),
22
+ ("Check security vulnerabilities", "[Security]"),
23
+ ("Deploy to production", "[Ops]"),
24
+ ("Create data pipeline", "[Data Engineer]"),
25
+ ("Create new git branch", "[Version Control]"),
26
+ ]
27
+
28
+ for content, expected_prefix in test_cases:
29
+ print(f"\nTesting: '{content}'")
30
+ print(f"Expected prefix: {expected_prefix}")
31
+
32
+ # Check if it already has a prefix
33
+ has_prefix = hook._has_agent_prefix(content)
34
+ print(f"Has prefix: {has_prefix}")
35
+
36
+ # Check what agent it suggests
37
+ suggested = hook._suggest_agent(content)
38
+ print(f"Suggested agent: {suggested}")
39
+
40
+ if suggested:
41
+ prefix = agent_name_normalizer.to_todo_prefix(suggested)
42
+ print(f"Generated prefix: {prefix}")
43
+
44
+ # Create context and execute
45
+ context = HookContext(
46
+ hook_type=HookType.CUSTOM,
47
+ data={
48
+ 'tool_name': 'TodoWrite',
49
+ 'parameters': {
50
+ 'todos': [{'content': content}]
51
+ }
52
+ },
53
+ metadata={},
54
+ timestamp=datetime.now()
55
+ )
56
+
57
+ result = hook.execute(context)
58
+ print(f"Result - Success: {result.success}, Modified: {result.modified}")
59
+
60
+ if result.modified and result.data:
61
+ updated_content = result.data['parameters']['todos'][0]['content']
62
+ print(f"Updated content: '{updated_content}'")
63
+ elif result.error:
64
+ print(f"Error: {result.error}")
65
+
66
+ print("-" * 50)
@@ -0,0 +1,282 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Demonstration script showing agent name consistency between TodoWrite and Task tools.
4
+
5
+ This script demonstrates:
6
+ 1. TodoWrite accepting bracketed agent names like [Research], [Version Control]
7
+ 2. Task tool accepting both capitalized and lowercase formats
8
+ 3. Proper conversion between formats
9
+ 4. Error handling for invalid agent names
10
+ """
11
+
12
+ import sys
13
+ import os
14
+ sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
15
+
16
+ from datetime import datetime
17
+ from claude_mpm.core.agent_name_normalizer import AgentNameNormalizer, agent_name_normalizer
18
+ from claude_mpm.hooks.builtin.todo_agent_prefix_hook import (
19
+ TodoAgentPrefixHook,
20
+ TodoAgentPrefixValidatorHook
21
+ )
22
+ from claude_mpm.hooks.base_hook import HookContext, HookType
23
+
24
+
25
+ def print_section(title):
26
+ """Print a formatted section header."""
27
+ print(f"\n{'='*60}")
28
+ print(f" {title}")
29
+ print('='*60)
30
+
31
+
32
+ def demonstrate_agent_normalization():
33
+ """Demonstrate the agent name normalization functionality."""
34
+ print_section("Agent Name Normalization")
35
+
36
+ # Show all supported agents
37
+ print("\nSupported agent types:")
38
+ for key, canonical in AgentNameNormalizer.CANONICAL_NAMES.items():
39
+ print(f" {key:20} -> {canonical}")
40
+
41
+ # Demonstrate normalization
42
+ print("\nNormalization examples:")
43
+ test_inputs = [
44
+ "research", "Research", "RESEARCH", "researcher",
45
+ "version_control", "version-control", "Version Control", "git",
46
+ "data_engineer", "data-engineer", "Data Engineer", "data",
47
+ "qa", "QA", "testing", "test",
48
+ ]
49
+
50
+ for input_name in test_inputs:
51
+ normalized = AgentNameNormalizer.normalize(input_name)
52
+ print(f" '{input_name:20}' -> '{normalized}'")
53
+
54
+
55
+ def demonstrate_todo_format():
56
+ """Demonstrate TodoWrite format handling."""
57
+ print_section("TodoWrite Format")
58
+
59
+ # Show TODO prefix generation
60
+ print("\nTODO prefix generation:")
61
+ agents = ["Research", "Engineer", "Version Control", "Data Engineer", "QA"]
62
+ for agent in agents:
63
+ prefix = AgentNameNormalizer.to_todo_prefix(agent)
64
+ print(f" {agent:20} -> {prefix}")
65
+
66
+ # Show extraction from TODOs
67
+ print("\nExtracting agents from TODO text:")
68
+ todos = [
69
+ "[Research] Analyze user behavior patterns",
70
+ "[Version Control] Create release branch v2.0",
71
+ "[Data Engineer] Build data pipeline for analytics",
72
+ "[QA] Run integration test suite",
73
+ "[Security] Perform security audit",
74
+ ]
75
+
76
+ for todo in todos:
77
+ agent = AgentNameNormalizer.extract_from_todo(todo)
78
+ print(f" '{todo[:50]}...' -> Agent: {agent}")
79
+
80
+ # Show validation
81
+ print("\nTODO format validation:")
82
+ test_todos = [
83
+ "[Research] Valid todo",
84
+ "[Invalid Agent] This won't work",
85
+ "Missing prefix todo",
86
+ "[Version Control] Another valid todo",
87
+ ]
88
+
89
+ for todo in test_todos:
90
+ is_valid, error = AgentNameNormalizer.validate_todo_format(todo)
91
+ status = "✓ Valid" if is_valid else f"✗ Invalid: {error[:50]}..."
92
+ print(f" '{todo[:30]:30}' -> {status}")
93
+
94
+
95
+ def demonstrate_task_format_conversion():
96
+ """Demonstrate conversion between TodoWrite and Task formats."""
97
+ print_section("TodoWrite <-> Task Format Conversion")
98
+
99
+ # TodoWrite to Task format
100
+ print("\nTodoWrite format -> Task format:")
101
+ todo_formats = [
102
+ "Research", "Engineer", "QA", "Security",
103
+ "Documentation", "Ops", "Version Control",
104
+ "Data Engineer", "Architect", "PM"
105
+ ]
106
+
107
+ for todo_format in todo_formats:
108
+ task_format = AgentNameNormalizer.to_task_format(todo_format)
109
+ print(f" {todo_format:20} -> {task_format}")
110
+
111
+ # Task to TodoWrite format
112
+ print("\nTask format -> TodoWrite format:")
113
+ task_formats = [
114
+ "research", "engineer", "qa", "security",
115
+ "documentation", "ops", "version-control",
116
+ "data-engineer", "architect", "pm"
117
+ ]
118
+
119
+ for task_format in task_formats:
120
+ todo_format = AgentNameNormalizer.from_task_format(task_format)
121
+ print(f" {task_format:20} -> {todo_format}")
122
+
123
+
124
+ def demonstrate_hook_behavior():
125
+ """Demonstrate the TodoAgentPrefixHook behavior."""
126
+ print_section("TodoAgentPrefixHook Behavior")
127
+
128
+ hook = TodoAgentPrefixHook()
129
+
130
+ # Test auto-prefix addition
131
+ print("\nAuto-prefix addition:")
132
+ test_todos = [
133
+ "Research best practices for microservices",
134
+ "Implement user authentication feature",
135
+ "Test the new API endpoints",
136
+ "Document the deployment process",
137
+ "Deploy to production environment",
138
+ "Create data pipeline for analytics",
139
+ "Create git branch for hotfix",
140
+ ]
141
+
142
+ for todo_content in test_todos:
143
+ context = HookContext(
144
+ hook_type=HookType.CUSTOM,
145
+ data={
146
+ 'tool_name': 'TodoWrite',
147
+ 'parameters': {
148
+ 'todos': [{'content': todo_content}]
149
+ }
150
+ },
151
+ metadata={},
152
+ timestamp=datetime.now()
153
+ )
154
+
155
+ result = hook.execute(context)
156
+
157
+ if result.success and result.modified:
158
+ new_content = result.data['parameters']['todos'][0]['content']
159
+ print(f" '{todo_content[:40]:40}' -> '{new_content}'")
160
+ else:
161
+ print(f" '{todo_content[:40]:40}' -> Error: {result.error[:30]}...")
162
+
163
+ # Test preservation of existing prefixes
164
+ print("\nPreservation of existing prefixes:")
165
+ prefixed_todos = [
166
+ "[Research] Analyze patterns",
167
+ "[Version Control] Create release",
168
+ "[Data Engineer] Build pipeline",
169
+ ]
170
+
171
+ for todo_content in prefixed_todos:
172
+ context = HookContext(
173
+ hook_type=HookType.CUSTOM,
174
+ data={
175
+ 'tool_name': 'TodoWrite',
176
+ 'parameters': {
177
+ 'todos': [{'content': todo_content}]
178
+ }
179
+ },
180
+ metadata={},
181
+ timestamp=datetime.now()
182
+ )
183
+
184
+ result = hook.execute(context)
185
+
186
+ status = "Not modified" if not result.modified else "Modified"
187
+ print(f" '{todo_content}' -> {status}")
188
+
189
+
190
+ def demonstrate_color_coding():
191
+ """Demonstrate agent color coding."""
192
+ print_section("Agent Color Coding")
193
+
194
+ print("\nColorized agent names:")
195
+ agents = ["Research", "Engineer", "QA", "Security", "Documentation",
196
+ "Ops", "Version Control", "Data Engineer", "Architect", "PM"]
197
+
198
+ for agent in agents:
199
+ colorized = AgentNameNormalizer.colorize(agent)
200
+ print(f" {colorized}")
201
+
202
+ print("\nColorized with custom text:")
203
+ colorized = AgentNameNormalizer.colorize("research", "[Research] Analyze patterns")
204
+ print(f" {colorized}")
205
+
206
+
207
+ def demonstrate_error_cases():
208
+ """Demonstrate error handling."""
209
+ print_section("Error Handling")
210
+
211
+ # Unknown agents
212
+ print("\nHandling unknown agents:")
213
+ unknown = ["unknown_agent", "random", "xyz", ""]
214
+ for agent in unknown:
215
+ normalized = AgentNameNormalizer.normalize(agent)
216
+ print(f" '{agent:20}' -> '{normalized}' (fallback)")
217
+
218
+ # Invalid TODO formats
219
+ validator = TodoAgentPrefixValidatorHook()
220
+
221
+ print("\nValidating invalid TODO formats:")
222
+ invalid_todos = [
223
+ "No prefix here",
224
+ "[Unknown] Invalid agent",
225
+ "[] Empty brackets",
226
+ "[Research] [Engineer] Multiple prefixes?",
227
+ ]
228
+
229
+ for todo_content in invalid_todos:
230
+ context = HookContext(
231
+ hook_type=HookType.CUSTOM,
232
+ data={
233
+ 'tool_name': 'TodoWrite',
234
+ 'parameters': {
235
+ 'todos': [{'content': todo_content}]
236
+ }
237
+ },
238
+ metadata={},
239
+ timestamp=datetime.now()
240
+ )
241
+
242
+ result = validator.execute(context)
243
+
244
+ if not result.success:
245
+ print(f" '{todo_content[:30]:30}' -> Error detected")
246
+
247
+
248
+ def main():
249
+ """Run all demonstrations."""
250
+ print("\n" + "="*60)
251
+ print(" Agent Name Consistency Demonstration")
252
+ print(" TodoWrite and Task Tool Integration")
253
+ print("="*60)
254
+
255
+ demonstrate_agent_normalization()
256
+ demonstrate_todo_format()
257
+ demonstrate_task_format_conversion()
258
+ demonstrate_hook_behavior()
259
+ demonstrate_color_coding()
260
+ demonstrate_error_cases()
261
+
262
+ print_section("Summary")
263
+ print("""
264
+ This demonstration shows that:
265
+
266
+ 1. ✓ TodoWrite accepts bracketed agent names like [Research], [Version Control]
267
+ 2. ✓ Task tool can accept both formats:
268
+ - Capitalized: "Research", "Version Control"
269
+ - Lowercase with hyphens: "research", "version-control"
270
+ 3. ✓ Proper conversion between formats is supported
271
+ 4. ✓ Invalid agent names are handled with appropriate errors
272
+ 5. ✓ All agent types have consistent naming across the system
273
+
274
+ The agent name normalization ensures consistency between:
275
+ - TodoWrite prefixes: [Research], [Version Control], [Data Engineer]
276
+ - Task tool formats: research, version-control, data-engineer
277
+ - Display names: Research, Version Control, Data Engineer
278
+ """)
279
+
280
+
281
+ if __name__ == "__main__":
282
+ main()
@@ -0,0 +1,82 @@
1
+ #!/usr/bin/env python3
2
+ """Test script to verify agent name normalization functionality."""
3
+
4
+ import sys
5
+ import os
6
+ sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'src'))
7
+
8
+ from claude_mpm.core.agent_name_normalizer import AgentNameNormalizer
9
+
10
+ def test_agent_name_formats():
11
+ """Test various agent name format conversions."""
12
+ normalizer = AgentNameNormalizer()
13
+
14
+ print("Testing Agent Name Format Conversions")
15
+ print("=" * 50)
16
+
17
+ # Test cases mapping TodoWrite format to Task format
18
+ test_cases = [
19
+ ("Research", "research"),
20
+ ("Engineer", "engineer"),
21
+ ("QA", "qa"),
22
+ ("Documentation", "documentation"),
23
+ ("Security", "security"),
24
+ ("Ops", "ops"),
25
+ ("Version Control", "version-control"),
26
+ ("Data Engineer", "data-engineer"),
27
+ # Also test lowercase inputs
28
+ ("research", "research"),
29
+ ("version-control", "version-control"),
30
+ ("data-engineer", "data-engineer"),
31
+ ]
32
+
33
+ print("\nTodoWrite Format → Task Format:")
34
+ print("-" * 50)
35
+
36
+ all_passed = True
37
+ for todo_format, expected_task_format in test_cases:
38
+ actual = normalizer.to_task_format(todo_format)
39
+ status = "✓" if actual == expected_task_format else "✗"
40
+
41
+ if actual != expected_task_format:
42
+ all_passed = False
43
+
44
+ print(f"{status} '{todo_format}' → '{actual}' (expected: '{expected_task_format}')")
45
+
46
+ print("\n" + "-" * 50)
47
+
48
+ # Test reverse conversion
49
+ print("\nTask Format → TodoWrite Format:")
50
+ print("-" * 50)
51
+
52
+ reverse_test_cases = [
53
+ ("research", "Research"),
54
+ ("engineer", "Engineer"),
55
+ ("qa", "QA"),
56
+ ("documentation", "Documentation"),
57
+ ("security", "Security"),
58
+ ("ops", "Ops"),
59
+ ("version-control", "Version Control"),
60
+ ("data-engineer", "Data Engineer"),
61
+ ]
62
+
63
+ for task_format, expected_todo_format in reverse_test_cases:
64
+ actual = normalizer.from_task_format(task_format)
65
+ status = "✓" if actual == expected_todo_format else "✗"
66
+
67
+ if actual != expected_todo_format:
68
+ all_passed = False
69
+
70
+ print(f"{status} '{task_format}' → '{actual}' (expected: '{expected_todo_format}')")
71
+
72
+ print("\n" + "=" * 50)
73
+
74
+ if all_passed:
75
+ print("✅ All tests passed!")
76
+ return 0
77
+ else:
78
+ print("❌ Some tests failed!")
79
+ return 1
80
+
81
+ if __name__ == "__main__":
82
+ sys.exit(test_agent_name_formats())