claude-mpm 3.7.1__tar.gz → 3.7.8__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.
- {claude_mpm-3.7.1/src/claude_mpm.egg-info → claude_mpm-3.7.8}/PKG-INFO +17 -21
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/README.md +6 -4
- claude_mpm-3.7.8/VERSION +1 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/pyproject.toml +3 -2
- claude_mpm-3.7.8/src/claude_mpm/VERSION +1 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/INSTRUCTIONS.md +18 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/frontmatter_validator.py +116 -17
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/schema/agent_schema.json +1 -1
- {claude_mpm-3.7.1/src/claude_mpm/dashboard → claude_mpm-3.7.8/src/claude_mpm/agents}/templates/.claude-mpm/memories/engineer_agent.md +1 -1
- claude_mpm-3.7.1/src/claude_mpm/dashboard/templates/.claude-mpm/memories/version_control_agent.md → claude_mpm-3.7.8/src/claude_mpm/agents/templates/.claude-mpm/memories/qa_agent.md +2 -2
- claude_mpm-3.7.8/src/claude_mpm/agents/templates/.claude-mpm/memories/research_agent.md +39 -0
- claude_mpm-3.7.8/src/claude_mpm/agents/templates/code_analyzer.json +103 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/templates/data_engineer.json +5 -8
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/templates/documentation.json +2 -2
- claude_mpm-3.7.8/src/claude_mpm/agents/templates/engineer.json +129 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/templates/ops.json +3 -8
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/templates/qa.json +2 -3
- claude_mpm-3.7.8/src/claude_mpm/agents/templates/research.json +85 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/templates/security.json +4 -7
- claude_mpm-3.7.8/src/claude_mpm/agents/templates/ticketing.json +161 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/templates/version_control.json +3 -3
- claude_mpm-3.7.8/src/claude_mpm/agents/templates/web_qa.json +214 -0
- claude_mpm-3.7.8/src/claude_mpm/agents/templates/web_ui.json +176 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/cli/commands/agents.py +118 -1
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/cli/parser.py +11 -0
- claude_mpm-3.7.8/src/claude_mpm/cli/ticket_cli.py +31 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/framework_loader.py +102 -49
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/static/js/components/file-tool-tracker.js +46 -2
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/templates/index.html +5 -5
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/deployment/agent_deployment.py +9 -1
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/deployment/async_agent_deployment.py +174 -13
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/management/agent_capabilities_generator.py +21 -11
- claude_mpm-3.7.8/src/claude_mpm/services/ticket_manager.py +376 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/utils/agent_dependency_loader.py +66 -15
- claude_mpm-3.7.8/src/claude_mpm/utils/robust_installer.py +587 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8/src/claude_mpm.egg-info}/PKG-INFO +17 -21
- claude_mpm-3.7.8/src/claude_mpm.egg-info/SOURCES.txt +235 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm.egg-info/requires.txt +10 -16
- claude_mpm-3.7.1/.ai-trackdown/config.yaml +0 -28
- claude_mpm-3.7.1/.ai-trackdown/project.yaml +0 -8
- claude_mpm-3.7.1/.aitrackdown/project.json +0 -1
- claude_mpm-3.7.1/.aitrackdown-config.yaml +0 -10
- claude_mpm-3.7.1/.claude/.claude.json +0 -35
- claude_mpm-3.7.1/.claude/.claude.json.backup +0 -35
- claude_mpm-3.7.1/.claude/agents/data_engineer.md +0 -274
- claude_mpm-3.7.1/.claude/agents/documentation.md +0 -209
- claude_mpm-3.7.1/.claude/agents/engineer.md +0 -335
- claude_mpm-3.7.1/.claude/agents/ops.md +0 -246
- claude_mpm-3.7.1/.claude/agents/qa.md +0 -191
- claude_mpm-3.7.1/.claude/agents/research.md +0 -309
- claude_mpm-3.7.1/.claude/agents/security.md +0 -215
- claude_mpm-3.7.1/.claude/agents/test_integration.md +0 -227
- claude_mpm-3.7.1/.claude/agents/version_control.md +0 -202
- claude_mpm-3.7.1/.claude/commands/README.md +0 -36
- claude_mpm-3.7.1/.claude/commands/mpm.md +0 -5
- claude_mpm-3.7.1/.claude/hooks.json +0 -32
- claude_mpm-3.7.1/.claude/scripts/command_router.py +0 -197
- claude_mpm-3.7.1/.claude/settings.json +0 -37
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753448752189-02zmkd.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753448752717-t1o960.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753448753258-cz40yi.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753448753816-5cj75h.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753449561020-uh844i.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753449676191-16dqe8.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753449766642-8sffyp.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753449795813-bj9blv.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753449953467-ru9ods.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753449966919-eb4aoq.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753450012330-ad1k3g.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753450254970-pvrwgd.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753450398246-etdteg.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753450789791-z5ptuf.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753450861209-w6so3e.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753451302996-01ahjc.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753451384857-mvpmcf.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753451508182-v942iw.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753451525128-q52z98.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753452958143-rd4nut.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753453029843-tyfjfo.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753460195020-02l99b.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753460396315-znuas3.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753460428488-tcy6i5.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753460542243-l181zr.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753461397341-fdy0v7.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753469116715-v6dpx9.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753477538332-i5g2cr.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753477560204-7vo17t.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753477883629-hsjia3.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753477961808-oiyqie.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753478292112-5g3i0g.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753478337101-xe1uid.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753478342176-env102.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753478361973-nr1cwq.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753478372714-lamo9k.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753478388184-yxkay7.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753478392376-eygj04.sh +0 -4511
- claude_mpm-3.7.1/.claude/shell-snapshots/snapshot-zsh-1753482158558-cr2h0o.sh +0 -4511
- claude_mpm-3.7.1/.claude/todos/0aaf869f-0009-4249-b955-1c3942ff239f-agent-0aaf869f-0009-4249-b955-1c3942ff239f.json +0 -20
- claude_mpm-3.7.1/.claude/todos/0c24ded8-9422-489d-8d18-f83cc0737181-agent-0c24ded8-9422-489d-8d18-f83cc0737181.json +0 -1
- claude_mpm-3.7.1/.claude/todos/0d9501e6-77b0-4e8f-b132-bae208ed740a-agent-0d9501e6-77b0-4e8f-b132-bae208ed740a.json +0 -1
- claude_mpm-3.7.1/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-048a118d-f0ea-4dce-90d3-d851514aa36a.json +0 -50
- claude_mpm-3.7.1/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-0600940d-65ff-4678-ac90-9e0d42a3e138.json +0 -50
- claude_mpm-3.7.1/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5.json +0 -8
- claude_mpm-3.7.1/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-1b8badbc-b05e-459e-b16c-a974f28673be.json +0 -38
- claude_mpm-3.7.1/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-231626b2-0ce7-44fb-82e4-a9e72fdcecc4.json +0 -38
- claude_mpm-3.7.1/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-2799acc0-b5e3-4086-940e-62bd2a5bbd7d.json +0 -38
- claude_mpm-3.7.1/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-42b0c458-9d5f-4745-826e-7c618d3a7026.json +0 -38
- claude_mpm-3.7.1/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-a324c872-b962-4438-b794-7966f5d7a7a9.json +0 -32
- claude_mpm-3.7.1/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-ce91e7fd-64af-4f57-b691-1487c2db8d0b.json +0 -38
- claude_mpm-3.7.1/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-dd250db2-edbb-43fc-a143-3eeafc0cd7fa.json +0 -38
- claude_mpm-3.7.1/.claude/todos/1060b0c4-2bf3-414f-bd75-d6f8dcad9eb5-agent-f0cbf9cd-0136-4bca-b0e0-c66aa58d3aeb.json +0 -38
- claude_mpm-3.7.1/.claude/todos/109c42c9-0afd-4a5b-a1b3-e515e31b6a2f-agent-109c42c9-0afd-4a5b-a1b3-e515e31b6a2f.json +0 -1
- claude_mpm-3.7.1/.claude/todos/1163a193-8464-4195-8281-6b875b5d987d-agent-1163a193-8464-4195-8281-6b875b5d987d.json +0 -1
- claude_mpm-3.7.1/.claude/todos/128d2198-5b02-422c-9531-f3396cbf0ce0-agent-128d2198-5b02-422c-9531-f3396cbf0ce0.json +0 -1
- claude_mpm-3.7.1/.claude/todos/16c51506-6afa-43aa-b199-da0c853f99a9-agent-16c51506-6afa-43aa-b199-da0c853f99a9.json +0 -1
- claude_mpm-3.7.1/.claude/todos/1736bdd7-71f4-49a0-934d-18e3aa5e0b43-agent-1736bdd7-71f4-49a0-934d-18e3aa5e0b43.json +0 -1
- claude_mpm-3.7.1/.claude/todos/1869eedc-69fc-4e81-a8ac-f57bd8e3946b-agent-1869eedc-69fc-4e81-a8ac-f57bd8e3946b.json +0 -1
- claude_mpm-3.7.1/.claude/todos/1a97dfda-12e5-4f13-8c8a-731373694a1c-agent-1a97dfda-12e5-4f13-8c8a-731373694a1c.json +0 -1
- claude_mpm-3.7.1/.claude/todos/283ac74b-5516-43f8-9548-24ded2b643b1-agent-283ac74b-5516-43f8-9548-24ded2b643b1.json +0 -1
- claude_mpm-3.7.1/.claude/todos/2ba08561-559e-4f64-9522-8d6c340e47da-agent-2ba08561-559e-4f64-9522-8d6c340e47da.json +0 -1
- claude_mpm-3.7.1/.claude/todos/31da8ed9-e1a5-40c8-91c8-8e9b51ca24a9-agent-31da8ed9-e1a5-40c8-91c8-8e9b51ca24a9.json +0 -1
- claude_mpm-3.7.1/.claude/todos/35194d51-6b8f-4ef5-b771-b0aa03f49a88-agent-35194d51-6b8f-4ef5-b771-b0aa03f49a88.json +0 -1
- claude_mpm-3.7.1/.claude/todos/3d1c0368-e607-4f47-b02d-7c0922cc0f25-agent-3d1c0368-e607-4f47-b02d-7c0922cc0f25.json +0 -1
- claude_mpm-3.7.1/.claude/todos/3d46c625-6377-4296-b9b3-22bc19341092-agent-3d46c625-6377-4296-b9b3-22bc19341092.json +0 -1
- claude_mpm-3.7.1/.claude/todos/40072791-2f2f-4743-b763-ec19321ccb0b-agent-40072791-2f2f-4743-b763-ec19321ccb0b.json +0 -1
- claude_mpm-3.7.1/.claude/todos/4157ab6d-5025-4862-82eb-5818c43c5a8c-agent-4157ab6d-5025-4862-82eb-5818c43c5a8c.json +0 -1
- claude_mpm-3.7.1/.claude/todos/458938f3-a317-46f3-8359-86f05ccacc7d-agent-458938f3-a317-46f3-8359-86f05ccacc7d.json +0 -1
- claude_mpm-3.7.1/.claude/todos/4dcf1510-e396-47bb-ac32-f62811ae9774-agent-4dcf1510-e396-47bb-ac32-f62811ae9774.json +0 -26
- claude_mpm-3.7.1/.claude/todos/4e71e501-1438-4c7d-8a89-18818b16ccb5-agent-4e71e501-1438-4c7d-8a89-18818b16ccb5.json +0 -1
- claude_mpm-3.7.1/.claude/todos/4eb9a1c4-92b0-44ee-9322-6ba0442efd42-agent-4eb9a1c4-92b0-44ee-9322-6ba0442efd42.json +0 -1
- claude_mpm-3.7.1/.claude/todos/4f57fa86-e804-4c8e-a0ff-196835df5bc9-agent-4f57fa86-e804-4c8e-a0ff-196835df5bc9.json +0 -1
- claude_mpm-3.7.1/.claude/todos/518e2724-687e-4ae3-bde9-582c8718695a-agent-518e2724-687e-4ae3-bde9-582c8718695a.json +0 -1
- claude_mpm-3.7.1/.claude/todos/51abf2eb-4e5a-4731-bd23-76cffe656a40-agent-51abf2eb-4e5a-4731-bd23-76cffe656a40.json +0 -1
- claude_mpm-3.7.1/.claude/todos/53c4beda-27f3-4247-ada4-f904320995ad-agent-53c4beda-27f3-4247-ada4-f904320995ad.json +0 -1
- claude_mpm-3.7.1/.claude/todos/56581e8b-07b1-4174-bf81-c280a3dee6b4-agent-56581e8b-07b1-4174-bf81-c280a3dee6b4.json +0 -1
- claude_mpm-3.7.1/.claude/todos/58848224-56e6-49f6-a4e5-c08f8f70c426-agent-58848224-56e6-49f6-a4e5-c08f8f70c426.json +0 -1
- claude_mpm-3.7.1/.claude/todos/58cf2d09-fd22-4a2e-8c74-c247ece6c802-agent-58cf2d09-fd22-4a2e-8c74-c247ece6c802.json +0 -8
- claude_mpm-3.7.1/.claude/todos/5bcc2e07-617c-4659-b82f-6b630ea891ff-agent-5bcc2e07-617c-4659-b82f-6b630ea891ff.json +0 -1
- claude_mpm-3.7.1/.claude/todos/5bf326e7-b61a-4d82-b483-94d5d7085755-agent-5bf326e7-b61a-4d82-b483-94d5d7085755.json +0 -1
- claude_mpm-3.7.1/.claude/todos/5dee78ec-d9ed-4484-b101-5490217fe423-agent-5dee78ec-d9ed-4484-b101-5490217fe423.json +0 -20
- claude_mpm-3.7.1/.claude/todos/5f6c7624-6a25-4ed9-be09-03fa3a70c4d8-agent-5f6c7624-6a25-4ed9-be09-03fa3a70c4d8.json +0 -1
- claude_mpm-3.7.1/.claude/todos/606431c0-6b47-4fb8-b386-132918a3aa0b-agent-606431c0-6b47-4fb8-b386-132918a3aa0b.json +0 -1
- claude_mpm-3.7.1/.claude/todos/6078e96f-e9a4-435f-8d2f-cf70346ebafe-agent-6078e96f-e9a4-435f-8d2f-cf70346ebafe.json +0 -20
- claude_mpm-3.7.1/.claude/todos/69e5a32b-bf2c-4264-93cd-6ac84b44ca9f-agent-69e5a32b-bf2c-4264-93cd-6ac84b44ca9f.json +0 -1
- claude_mpm-3.7.1/.claude/todos/6b729248-47b8-4657-ad7f-7f09fff21151-agent-6b729248-47b8-4657-ad7f-7f09fff21151.json +0 -1
- claude_mpm-3.7.1/.claude/todos/6d6970e8-f95f-468b-a8b8-3eacca8f1220-agent-6d6970e8-f95f-468b-a8b8-3eacca8f1220.json +0 -1
- claude_mpm-3.7.1/.claude/todos/6ec6cfa4-f2fd-4515-9c95-3ea74fbc571b-agent-6ec6cfa4-f2fd-4515-9c95-3ea74fbc571b.json +0 -1
- claude_mpm-3.7.1/.claude/todos/713e1bda-caa2-4cb9-a5a2-b7c6fec5776f-agent-713e1bda-caa2-4cb9-a5a2-b7c6fec5776f.json +0 -32
- claude_mpm-3.7.1/.claude/todos/71e6da9f-0dcd-4abd-ae8f-a5af695d9624-agent-71e6da9f-0dcd-4abd-ae8f-a5af695d9624.json +0 -1
- claude_mpm-3.7.1/.claude/todos/7653f086-93df-4423-98ce-640305e10823-agent-7653f086-93df-4423-98ce-640305e10823.json +0 -1
- claude_mpm-3.7.1/.claude/todos/76656734-acd3-411c-b333-f274dabae19c-agent-76656734-acd3-411c-b333-f274dabae19c.json +0 -44
- claude_mpm-3.7.1/.claude/todos/78150f02-9204-437c-9e12-9e800f3f73b9-agent-78150f02-9204-437c-9e12-9e800f3f73b9.json +0 -20
- claude_mpm-3.7.1/.claude/todos/7dda0a32-2834-4a47-9734-9ae9ca5b1a31-agent-7dda0a32-2834-4a47-9734-9ae9ca5b1a31.json +0 -1
- claude_mpm-3.7.1/.claude/todos/84b4d3c7-5506-4e4e-87dd-9cc48b8bc2ec-agent-84b4d3c7-5506-4e4e-87dd-9cc48b8bc2ec.json +0 -1
- claude_mpm-3.7.1/.claude/todos/8698daf1-475a-40e8-a7d5-33031480d9b6-agent-8698daf1-475a-40e8-a7d5-33031480d9b6.json +0 -1
- claude_mpm-3.7.1/.claude/todos/86ce0d12-f82e-49b2-b553-2cd8a7e188a3-agent-86ce0d12-f82e-49b2-b553-2cd8a7e188a3.json +0 -1
- claude_mpm-3.7.1/.claude/todos/87626114-6cb1-43ef-978a-bb35f612e4eb-agent-87626114-6cb1-43ef-978a-bb35f612e4eb.json +0 -1
- claude_mpm-3.7.1/.claude/todos/880d3ea5-649e-449e-88bc-664a291ec338-agent-880d3ea5-649e-449e-88bc-664a291ec338.json +0 -38
- claude_mpm-3.7.1/.claude/todos/8962e6d9-0fc0-4578-bb08-a5dfbc2dbe5e-agent-8962e6d9-0fc0-4578-bb08-a5dfbc2dbe5e.json +0 -1
- claude_mpm-3.7.1/.claude/todos/8f998b9e-5f18-4ade-bd69-74c95a210f6a-agent-8f998b9e-5f18-4ade-bd69-74c95a210f6a.json +0 -1
- claude_mpm-3.7.1/.claude/todos/929364bd-aa69-4831-850e-37f8ab63803d-agent-929364bd-aa69-4831-850e-37f8ab63803d.json +0 -1
- claude_mpm-3.7.1/.claude/todos/95479b6c-cfbf-4bb7-9e00-b95a0b385775-agent-95479b6c-cfbf-4bb7-9e00-b95a0b385775.json +0 -1
- claude_mpm-3.7.1/.claude/todos/9628cc3a-355a-48f0-ab54-c28ac2e05dfe-agent-9628cc3a-355a-48f0-ab54-c28ac2e05dfe.json +0 -1
- claude_mpm-3.7.1/.claude/todos/a877fe3a-7057-49a9-9726-239ddb3421ee-agent-a877fe3a-7057-49a9-9726-239ddb3421ee.json +0 -1
- claude_mpm-3.7.1/.claude/todos/a9136d1b-6e01-4879-972f-5fcdde5e08d7-agent-a9136d1b-6e01-4879-972f-5fcdde5e08d7.json +0 -1
- claude_mpm-3.7.1/.claude/todos/b10ff15f-3c8c-46d7-93b4-a0d4d5ec4003-agent-b10ff15f-3c8c-46d7-93b4-a0d4d5ec4003.json +0 -1
- claude_mpm-3.7.1/.claude/todos/b1206d13-f0ec-4f53-a746-a845732fefd7-agent-b1206d13-f0ec-4f53-a746-a845732fefd7.json +0 -1
- claude_mpm-3.7.1/.claude/todos/b61be2e4-7de3-4e1b-b636-2232190ffc5c-agent-b61be2e4-7de3-4e1b-b636-2232190ffc5c.json +0 -1
- claude_mpm-3.7.1/.claude/todos/b80ad406-64d1-4a6c-b781-15496265fae0-agent-b80ad406-64d1-4a6c-b781-15496265fae0.json +0 -1
- claude_mpm-3.7.1/.claude/todos/babc6eac-d7d6-498a-8176-e09e00423a12-agent-babc6eac-d7d6-498a-8176-e09e00423a12.json +0 -1
- claude_mpm-3.7.1/.claude/todos/bf4b7700-9630-466e-afb0-8904fbddac42-agent-bf4b7700-9630-466e-afb0-8904fbddac42.json +0 -1
- claude_mpm-3.7.1/.claude/todos/c2189d0d-9c2b-400a-bf7c-3989ef6cd37d-agent-c2189d0d-9c2b-400a-bf7c-3989ef6cd37d.json +0 -1
- claude_mpm-3.7.1/.claude/todos/c35ee595-142f-454b-bb36-dc434d4a80a6-agent-c35ee595-142f-454b-bb36-dc434d4a80a6.json +0 -1
- claude_mpm-3.7.1/.claude/todos/c629949d-4641-45ff-81d3-d7c8f353da81-agent-c629949d-4641-45ff-81d3-d7c8f353da81.json +0 -1
- claude_mpm-3.7.1/.claude/todos/c8cecbec-a3bb-4507-98a4-c590a4e919b2-agent-c8cecbec-a3bb-4507-98a4-c590a4e919b2.json +0 -38
- claude_mpm-3.7.1/.claude/todos/cce78c00-7309-4bc4-802c-3bad75be09cc-agent-cce78c00-7309-4bc4-802c-3bad75be09cc.json +0 -1
- claude_mpm-3.7.1/.claude/todos/d55a3a18-0143-4401-ba56-ea630982c105-agent-d55a3a18-0143-4401-ba56-ea630982c105.json +0 -32
- claude_mpm-3.7.1/.claude/todos/d881887b-49bc-4fda-acda-c866681c8f13-agent-d881887b-49bc-4fda-acda-c866681c8f13.json +0 -20
- claude_mpm-3.7.1/.claude/todos/db3e76fb-7b9d-4f1c-8822-cce448fdf9e6-agent-db3e76fb-7b9d-4f1c-8822-cce448fdf9e6.json +0 -1
- claude_mpm-3.7.1/.claude/todos/dc7344a6-cd2e-4f20-a945-deb2e39f4fbc-agent-dc7344a6-cd2e-4f20-a945-deb2e39f4fbc.json +0 -1
- claude_mpm-3.7.1/.claude/todos/eb12ed58-94e3-490a-b8c8-b2912fa77fbe-agent-eb12ed58-94e3-490a-b8c8-b2912fa77fbe.json +0 -1
- claude_mpm-3.7.1/.claude/todos/ef4c285d-d79b-4c6e-a458-49cb26bf3c0a-agent-ef4c285d-d79b-4c6e-a458-49cb26bf3c0a.json +0 -1
- claude_mpm-3.7.1/.claude/todos/f295b25f-51d8-4fff-b71d-aa18d7028466-agent-f295b25f-51d8-4fff-b71d-aa18d7028466.json +0 -1
- claude_mpm-3.7.1/.claude/todos/f2a683d3-4d16-4c94-bf52-03efaf45f7f1-agent-f2a683d3-4d16-4c94-bf52-03efaf45f7f1.json +0 -1
- claude_mpm-3.7.1/.claude/todos/f536b1f5-879c-4236-9718-599337ffc815-agent-f536b1f5-879c-4236-9718-599337ffc815.json +0 -1
- claude_mpm-3.7.1/.claude/todos/fabcbe8a-6751-454b-a240-e9393391e2e9-agent-fabcbe8a-6751-454b-a240-e9393391e2e9.json +0 -1
- claude_mpm-3.7.1/.claude/todos/fdebc52b-3519-44c8-a3af-ce87f39272cd-agent-fdebc52b-3519-44c8-a3af-ce87f39272cd.json +0 -1
- claude_mpm-3.7.1/.claude/todos/fe57db22-5ef9-4522-9423-5c20dd665ef6-agent-fe57db22-5ef9-4522-9423-5c20dd665ef6.json +0 -1
- claude_mpm-3.7.1/.githooks/pre-commit +0 -50
- claude_mpm-3.7.1/.gitignore +0 -67
- claude_mpm-3.7.1/.npmignore +0 -50
- claude_mpm-3.7.1/.python-version +0 -1
- claude_mpm-3.7.1/.trackdown.yaml +0 -30
- claude_mpm-3.7.1/CHANGELOG.md +0 -1055
- claude_mpm-3.7.1/Makefile +0 -258
- claude_mpm-3.7.1/QUICKSTART.md +0 -156
- claude_mpm-3.7.1/VERSION +0 -1
- claude_mpm-3.7.1/agent_memory_test_results.json +0 -96
- claude_mpm-3.7.1/bin/claude-mpm +0 -89
- claude_mpm-3.7.1/bin/claude-mpm-hooks +0 -106
- claude_mpm-3.7.1/bin/ticket +0 -60
- claude_mpm-3.7.1/config/mcp_services.yaml +0 -117
- claude_mpm-3.7.1/debug_agent_response.txt +0 -26
- claude_mpm-3.7.1/docker/Dockerfile.clean-install +0 -167
- claude_mpm-3.7.1/docker/README.md +0 -184
- claude_mpm-3.7.1/docker/docker-compose.yml +0 -109
- claude_mpm-3.7.1/docker/verify-installation.sh +0 -127
- claude_mpm-3.7.1/examples/awesome-patterns/enhanced_claude_md_example.md +0 -145
- claude_mpm-3.7.1/examples/awesome-patterns/slash_command_example.md +0 -322
- claude_mpm-3.7.1/examples/awesome-patterns/validation_first_example.py +0 -295
- claude_mpm-3.7.1/examples/dependency_injection_demo.py +0 -190
- claude_mpm-3.7.1/examples/json_rpc_hooks_demo.py +0 -109
- claude_mpm-3.7.1/examples/todo_prefix_hook_example.py +0 -176
- claude_mpm-3.7.1/examples/todo_prefix_hook_integration.py +0 -239
- claude_mpm-3.7.1/npm-bin/claude-mpm.js +0 -382
- claude_mpm-3.7.1/package.json +0 -49
- claude_mpm-3.7.1/requirements-monitor.txt +0 -5
- claude_mpm-3.7.1/scripts/.claude-mpm/logs/hooks_20250726.log +0 -24
- claude_mpm-3.7.1/scripts/.claude-mpm/logs/hooks_20250731.log +0 -208
- claude_mpm-3.7.1/scripts/BROWSER_CONTROL_GUIDE.md +0 -76
- claude_mpm-3.7.1/scripts/COMPREHENSIVE_TEST_REPORT.md +0 -82
- claude_mpm-3.7.1/scripts/CONNECTION_POOL_IMPROVEMENTS.md +0 -126
- claude_mpm-3.7.1/scripts/ENHANCED_HOOK_DATA_GUIDE.md +0 -113
- claude_mpm-3.7.1/scripts/JSON_VIEWER_TEST_SUMMARY.md +0 -96
- claude_mpm-3.7.1/scripts/README.md +0 -112
- claude_mpm-3.7.1/scripts/SOCKETIO_DIAGNOSTICS_README.md +0 -181
- claude_mpm-3.7.1/scripts/SOCKETIO_FLOW_TEST_RESULTS.md +0 -180
- claude_mpm-3.7.1/scripts/add_agent_versioning.py +0 -41
- claude_mpm-3.7.1/scripts/agent_manager_integration_report.md +0 -123
- claude_mpm-3.7.1/scripts/analyze_agent_events.py +0 -131
- claude_mpm-3.7.1/scripts/analyze_framework_loaders.py +0 -32
- claude_mpm-3.7.1/scripts/analyze_git_clickup_correlation.py +0 -589
- claude_mpm-3.7.1/scripts/analyze_hook_data.py +0 -114
- claude_mpm-3.7.1/scripts/check_socketio_events.py +0 -45
- claude_mpm-3.7.1/scripts/check_version_sync.py +0 -120
- claude_mpm-3.7.1/scripts/claude-mpm +0 -148
- claude_mpm-3.7.1/scripts/claude-mpm-socketio +0 -32
- claude_mpm-3.7.1/scripts/claude_mpm_monitor.html +0 -567
- claude_mpm-3.7.1/scripts/cleanup_logs.py +0 -256
- claude_mpm-3.7.1/scripts/consolidate_services.py +0 -38
- claude_mpm-3.7.1/scripts/convert_agents_to_yaml.py +0 -186
- claude_mpm-3.7.1/scripts/debug_agent_loading.py +0 -102
- claude_mpm-3.7.1/scripts/debug_agent_structure.py +0 -66
- claude_mpm-3.7.1/scripts/debug_agents_tab.py +0 -183
- claude_mpm-3.7.1/scripts/debug_capabilities_generation.py +0 -112
- claude_mpm-3.7.1/scripts/debug_dashboard.html +0 -113
- claude_mpm-3.7.1/scripts/debug_deployment_logic.py +0 -52
- claude_mpm-3.7.1/scripts/debug_hook_behavior.py +0 -67
- claude_mpm-3.7.1/scripts/debug_hook_behavior2.py +0 -44
- claude_mpm-3.7.1/scripts/debug_hook_flow.py +0 -192
- claude_mpm-3.7.1/scripts/debug_hud_data_flow.py +0 -805
- claude_mpm-3.7.1/scripts/debug_migration.py +0 -51
- claude_mpm-3.7.1/scripts/debug_path_detection.py +0 -25
- claude_mpm-3.7.1/scripts/debug_research_version.py +0 -47
- claude_mpm-3.7.1/scripts/debug_response_tracker.py +0 -32
- claude_mpm-3.7.1/scripts/debug_server_connection_handler.py +0 -215
- claude_mpm-3.7.1/scripts/debug_session_flow.py +0 -99
- claude_mpm-3.7.1/scripts/debug_socketio_connection.py +0 -154
- claude_mpm-3.7.1/scripts/debug_socketio_namespaces.py +0 -214
- claude_mpm-3.7.1/scripts/debug_socketio_pool.py +0 -207
- claude_mpm-3.7.1/scripts/debug_subagent_stop.py +0 -158
- claude_mpm-3.7.1/scripts/debug_subagent_stop_data.py +0 -42
- claude_mpm-3.7.1/scripts/debug_subprocess.py +0 -40
- claude_mpm-3.7.1/scripts/debug_tab_clicking.py +0 -101
- claude_mpm-3.7.1/scripts/demo/subprocess_before_after.py +0 -234
- claude_mpm-3.7.1/scripts/demo/subprocess_improvements_demo.py +0 -407
- claude_mpm-3.7.1/scripts/demo_agent_events.py +0 -80
- claude_mpm-3.7.1/scripts/demo_enhanced_hook_data.py +0 -186
- claude_mpm-3.7.1/scripts/demo_health_monitoring.py +0 -337
- claude_mpm-3.7.1/scripts/demo_hook_behavior.sh +0 -53
- claude_mpm-3.7.1/scripts/demo_monitor_installation.py +0 -97
- claude_mpm-3.7.1/scripts/deploy_local.sh +0 -443
- claude_mpm-3.7.1/scripts/diagnostic_connection_auth_test.py +0 -557
- claude_mpm-3.7.1/scripts/diagnostic_dashboard_namespace_test.html +0 -550
- claude_mpm-3.7.1/scripts/diagnostic_end_to_end_test.py +0 -573
- claude_mpm-3.7.1/scripts/diagnostic_hook_handler_test.py +0 -344
- claude_mpm-3.7.1/scripts/diagnostic_socketio_server_monitor.py +0 -233
- claude_mpm-3.7.1/scripts/example_async_integration.py +0 -279
- claude_mpm-3.7.1/scripts/example_hook_usage.py +0 -163
- claude_mpm-3.7.1/scripts/final_integration_demo.py +0 -180
- claude_mpm-3.7.1/scripts/final_socketio_verification.py +0 -245
- claude_mpm-3.7.1/scripts/find_websocket_port.py +0 -50
- claude_mpm-3.7.1/scripts/fix_agent_type_tracking.py +0 -208
- claude_mpm-3.7.1/scripts/fix_all_fallback_imports.py +0 -68
- claude_mpm-3.7.1/scripts/fix_all_imports.py +0 -241
- claude_mpm-3.7.1/scripts/fix_event_json_mismatch.py +0 -206
- claude_mpm-3.7.1/scripts/fix_fallback_imports.py +0 -58
- claude_mpm-3.7.1/scripts/flask_hello_world.py +0 -66
- claude_mpm-3.7.1/scripts/generate_comprehensive_test_report.py +0 -323
- claude_mpm-3.7.1/scripts/hello_flask.py +0 -17
- claude_mpm-3.7.1/scripts/hello_world.py +0 -10
- claude_mpm-3.7.1/scripts/install.sh +0 -141
- claude_mpm-3.7.1/scripts/install_dev.sh +0 -74
- claude_mpm-3.7.1/scripts/install_hooks.py +0 -172
- claude_mpm-3.7.1/scripts/install_socketio_server.py +0 -407
- claude_mpm-3.7.1/scripts/interactive_wrapper.py +0 -109
- claude_mpm-3.7.1/scripts/launch_monitor.py +0 -132
- claude_mpm-3.7.1/scripts/launch_socketio_dashboard.py +0 -261
- claude_mpm-3.7.1/scripts/launch_with_agents.py +0 -191
- claude_mpm-3.7.1/scripts/manage_version.py +0 -594
- claude_mpm-3.7.1/scripts/migrate_agents_to_new_schema.py +0 -378
- claude_mpm-3.7.1/scripts/migrate_config.py +0 -98
- claude_mpm-3.7.1/scripts/migrate_logging_imports.py +0 -99
- claude_mpm-3.7.1/scripts/migrate_to_json_rpc_hooks.py +0 -164
- claude_mpm-3.7.1/scripts/monitor_mcp_services.py +0 -453
- claude_mpm-3.7.1/scripts/monitor_socketio_events.py +0 -97
- claude_mpm-3.7.1/scripts/monitoring_daily_checklist.py +0 -260
- claude_mpm-3.7.1/scripts/monitoring_weekly_review.py +0 -256
- claude_mpm-3.7.1/scripts/mpm_test.py +0 -11
- claude_mpm-3.7.1/scripts/package-lock.json +0 -280
- claude_mpm-3.7.1/scripts/postinstall.js +0 -106
- claude_mpm-3.7.1/scripts/publish.sh +0 -98
- claude_mpm-3.7.1/scripts/qa_results.json +0 -108
- claude_mpm-3.7.1/scripts/register_memory_hooks.py +0 -142
- claude_mpm-3.7.1/scripts/release.py +0 -876
- claude_mpm-3.7.1/scripts/remove_remaining_ticketing.py +0 -150
- claude_mpm-3.7.1/scripts/remove_ticketing_references.py +0 -82
- claude_mpm-3.7.1/scripts/requirements_analysis.txt +0 -7
- claude_mpm-3.7.1/scripts/resume_flag_test_report.md +0 -159
- claude_mpm-3.7.1/scripts/run_all_socketio_tests.py +0 -115
- claude_mpm-3.7.1/scripts/run_all_tests.sh +0 -30
- claude_mpm-3.7.1/scripts/run_e2e_tests.sh +0 -48
- claude_mpm-3.7.1/scripts/run_performance_validation_suite.py +0 -387
- claude_mpm-3.7.1/scripts/run_socketio_diagnostics.py +0 -488
- claude_mpm-3.7.1/scripts/server.log +0 -119
- claude_mpm-3.7.1/scripts/setup_local_mcp.sh +0 -457
- claude_mpm-3.7.1/scripts/show_pm_system_prompt.py +0 -50
- claude_mpm-3.7.1/scripts/simple_agent_test.py +0 -61
- claude_mpm-3.7.1/scripts/simple_socket_test.py +0 -182
- claude_mpm-3.7.1/scripts/socketio_daemon.py +0 -221
- claude_mpm-3.7.1/scripts/socketio_integration_summary.md +0 -100
- claude_mpm-3.7.1/scripts/socketio_server_manager.py +0 -753
- claude_mpm-3.7.1/scripts/standardize_imports.py +0 -281
- claude_mpm-3.7.1/scripts/start_persistent_socketio_server.py +0 -50
- claude_mpm-3.7.1/scripts/start_python_socketio.py +0 -36
- claude_mpm-3.7.1/scripts/start_socketio_server_manual.py +0 -24
- claude_mpm-3.7.1/scripts/start_test_server.py +0 -73
- claude_mpm-3.7.1/scripts/sync_tickets_github.sh +0 -109
- claude_mpm-3.7.1/scripts/test_cli_fixes.py +0 -145
- claude_mpm-3.7.1/scripts/test_results_summary.md +0 -189
- claude_mpm-3.7.1/scripts/test_startup_initialization.sh +0 -54
- claude_mpm-3.7.1/scripts/ticket.py +0 -269
- claude_mpm-3.7.1/scripts/trace_deployment.py +0 -62
- claude_mpm-3.7.1/scripts/trigger_hook_events.py +0 -141
- claude_mpm-3.7.1/scripts/uninstall.sh +0 -73
- claude_mpm-3.7.1/scripts/update_agent_service_imports.py +0 -117
- claude_mpm-3.7.1/scripts/update_memory_imports.py +0 -70
- claude_mpm-3.7.1/scripts/validate_agent_configuration.py +0 -268
- claude_mpm-3.7.1/scripts/validate_agent_schema.py +0 -63
- claude_mpm-3.7.1/scripts/validate_imports.py +0 -182
- claude_mpm-3.7.1/scripts/verify_agent_deployment.py +0 -68
- claude_mpm-3.7.1/scripts/verify_config_buttons.py +0 -56
- claude_mpm-3.7.1/scripts/verify_config_paths.py +0 -86
- claude_mpm-3.7.1/scripts/verify_hook_data_completeness.py +0 -146
- claude_mpm-3.7.1/scripts/verify_import_fixes.py +0 -213
- claude_mpm-3.7.1/scripts/verify_imports.py +0 -137
- claude_mpm-3.7.1/scripts/verify_memory_reorganization.py +0 -151
- claude_mpm-3.7.1/scripts/websocket_memory_monitor.html +0 -457
- claude_mpm-3.7.1/scripts/websocket_monitor.html +0 -300
- claude_mpm-3.7.1/scripts/working_directory_fix_report.md +0 -106
- claude_mpm-3.7.1/src/claude_mpm/.claude-mpm/logs/hooks_20250728.log +0 -10
- claude_mpm-3.7.1/src/claude_mpm/VERSION +0 -1
- claude_mpm-3.7.1/src/claude_mpm/agents/agent-template.yaml +0 -83
- claude_mpm-3.7.1/src/claude_mpm/agents/templates/code_analyzer.json +0 -81
- claude_mpm-3.7.1/src/claude_mpm/agents/templates/engineer.json +0 -129
- claude_mpm-3.7.1/src/claude_mpm/agents/templates/research.json +0 -82
- claude_mpm-3.7.1/src/claude_mpm/agents/templates/test_integration.json +0 -113
- claude_mpm-3.7.1/src/claude_mpm/cli/README.md +0 -108
- claude_mpm-3.7.1/src/claude_mpm/cli_module/refactoring_guide.md +0 -253
- claude_mpm-3.7.1/src/claude_mpm/config/async_logging_config.yaml +0 -145
- claude_mpm-3.7.1/src/claude_mpm/core/.claude-mpm/logs/hooks_20250730.log +0 -34
- claude_mpm-3.7.1/src/claude_mpm/dashboard/.claude-mpm/memories/README.md +0 -36
- claude_mpm-3.7.1/src/claude_mpm/dashboard/README.md +0 -121
- claude_mpm-3.7.1/src/claude_mpm/dashboard/static/js/dashboard.js.backup +0 -1973
- claude_mpm-3.7.1/src/claude_mpm/dashboard/templates/.claude-mpm/memories/README.md +0 -36
- claude_mpm-3.7.1/src/claude_mpm/hooks/README.md +0 -96
- claude_mpm-3.7.1/src/claude_mpm/schemas/agent_schema.json +0 -435
- claude_mpm-3.7.1/src/claude_mpm/services/framework_claude_md_generator/README.md +0 -92
- claude_mpm-3.7.1/src/claude_mpm/services/ticket_manager.py +0 -213
- claude_mpm-3.7.1/src/claude_mpm/services/version_control/VERSION +0 -1
- claude_mpm-3.7.1/src/claude_mpm.egg-info/SOURCES.txt +0 -565
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/CLAUDE.md +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/LICENSE +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/MANIFEST.in +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/claude-mpm +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/requirements.txt +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/scripts/run_mpm.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/scripts/ticket +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/setup.cfg +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/setup.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/__main__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/BASE_PM.md +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/agent_loader.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/agent_loader_integration.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/agents_metadata.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/async_agent_loader.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/backups/INSTRUCTIONS.md +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/base_agent.json +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/base_agent_loader.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/system_agent_config.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/templates/.claude-mpm/memories/version_control_agent.md +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/templates/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/templates/backup/data_engineer_agent_20250726_234551.json +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/templates/backup/documentation_agent_20250726_234551.json +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/templates/backup/engineer_agent_20250726_234551.json +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/templates/backup/ops_agent_20250726_234551.json +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/templates/backup/qa_agent_20250726_234551.json +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/templates/backup/research_agent_20250726_234551.json +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/templates/backup/security_agent_20250726_234551.json +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/agents/templates/backup/version_control_agent_20250726_234551.json +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/cli/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/cli/__main__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/cli/commands/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/cli/commands/aggregate.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/cli/commands/config.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/cli/commands/info.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/cli/commands/memory.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/cli/commands/monitor.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/cli/commands/run.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/cli/commands/tickets.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/cli/utils.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/cli_module/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/cli_module/args.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/cli_module/commands.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/cli_module/migration_example.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/config/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/config/agent_config.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/config/paths.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/config/socketio_config.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/constants.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/agent_name_normalizer.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/agent_registry.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/agent_session_manager.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/base_service.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/claude_runner.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/config.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/config_aliases.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/config_paths.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/container.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/factories.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/hook_manager.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/injectable_service.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/interfaces.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/logger.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/minimal_framework_loader.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/mixins.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/pm_hook_interceptor.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/service_registry.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/session_manager.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/socketio_pool.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/core/tool_access_control.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/index.html +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/open_dashboard.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/static/css/dashboard.css +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/static/js/components/agent-inference.js +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/static/js/components/event-processor.js +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/static/js/components/event-viewer.js +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/static/js/components/export-manager.js +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/static/js/components/hud-manager.js +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/static/js/components/module-viewer.js +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/static/js/components/session-manager.js +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/static/js/components/socket-manager.js +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/static/js/components/working-directory.js +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/static/js/dashboard-original.js +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/static/js/dashboard.js +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/static/js/socket-client.js +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/dashboard/test_dashboard.html +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/deployment_paths.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/experimental/cli_enhancements.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/generators/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/generators/agent_profile_generator.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/hooks/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/hooks/base_hook.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/hooks/claude_hooks/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/hooks/claude_hooks/hook_handler.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/hooks/claude_hooks/hook_wrapper.sh +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/hooks/memory_integration_hook.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/hooks/tool_call_interceptor.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/hooks/validation_hooks.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/init.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/models/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/models/agent_definition.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/models/agent_session.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/scripts/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/scripts/socketio_daemon.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/scripts/start_activity_logging.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/deployment/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/deployment/agent_versioning.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/loading/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/loading/agent_profile_loader.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/loading/base_agent_manager.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/loading/framework_agent_loader.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/management/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/management/agent_management_service.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/memory/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/memory/agent_memory_manager.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/memory/agent_persistence_service.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/registry/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/registry/agent_registry.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/registry/deployed_agent_discovery.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/agents/registry/modification_tracker.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/async_session_logger.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/claude_session_logger.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/event_aggregator.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/exceptions.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator/content_assembler.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator/content_validator.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator/deployment_manager.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator/section_generators/header.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator/section_manager.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator/version_manager.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/framework_claude_md_generator.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/health_monitor.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/hook_service.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/memory/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/memory/builder.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/memory/cache/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/memory/cache/shared_prompt_cache.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/memory/cache/simple_cache.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/memory/optimizer.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/memory/router.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/optimized_hook_service.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/project_analyzer.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/project_registry.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/recovery_manager.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/response_tracker.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/socketio_client_manager.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/socketio_server.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/standalone_socketio_server.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/ticket_manager_di.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/ticketing_service_original.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/version_control/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/version_control/branch_strategy.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/version_control/conflict_resolution.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/version_control/git_operations.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/services/version_control/semantic_versioning.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/ticket_wrapper.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/utils/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/utils/config_manager.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/utils/console.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/utils/dependency_cache.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/utils/dependency_manager.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/utils/dependency_strategies.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/utils/environment_context.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/utils/error_handler.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/utils/framework_detection.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/utils/import_migration_example.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/utils/imports.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/utils/path_operations.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/utils/paths.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/utils/session_logging.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/validation/__init__.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm/validation/agent_validator.py +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm.egg-info/dependency_links.txt +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm.egg-info/entry_points.txt +0 -0
- {claude_mpm-3.7.1 → claude_mpm-3.7.8}/src/claude_mpm.egg-info/top_level.txt +0 -0
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            Metadata-Version: 2.4
         | 
| 2 2 | 
             
            Name: claude-mpm
         | 
| 3 | 
            -
            Version: 3.7. | 
| 3 | 
            +
            Version: 3.7.8
         | 
| 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
         | 
| @@ -30,7 +30,6 @@ Requires-Dist: flask>=3.0.0 | |
| 30 30 | 
             
            Requires-Dist: flask-cors>=4.0.0
         | 
| 31 31 | 
             
            Requires-Dist: watchdog>=3.0.0
         | 
| 32 32 | 
             
            Requires-Dist: tree-sitter>=0.21.0
         | 
| 33 | 
            -
            Requires-Dist: tree-sitter-language-pack>=0.8.0
         | 
| 34 33 | 
             
            Requires-Dist: python-socketio>=5.11.0
         | 
| 35 34 | 
             
            Requires-Dist: aiohttp>=3.9.0
         | 
| 36 35 | 
             
            Requires-Dist: aiohttp-cors>=0.8.0
         | 
| @@ -47,53 +46,48 @@ Requires-Dist: flake8; extra == "dev" | |
| 47 46 | 
             
            Requires-Dist: mypy; extra == "dev"
         | 
| 48 47 | 
             
            Provides-Extra: monitor
         | 
| 49 48 | 
             
            Provides-Extra: agents
         | 
| 50 | 
            -
            Requires-Dist: allure-pytest>=2.13.0; extra == "agents"
         | 
| 51 | 
            -
            Requires-Dist: ansible>=9.0.0; extra == "agents"
         | 
| 52 | 
            -
            Requires-Dist: apache-airflow>=2.8.0; extra == "agents"
         | 
| 53 49 | 
             
            Requires-Dist: bandit>=1.7.5; extra == "agents"
         | 
| 54 50 | 
             
            Requires-Dist: black>=23.0.0; extra == "agents"
         | 
| 55 | 
            -
            Requires-Dist: checkov>=3.1.0; extra == "agents"
         | 
| 56 51 | 
             
            Requires-Dist: commitizen>=3.13.0; extra == "agents"
         | 
| 57 | 
            -
            Requires-Dist: cryptography>=41.0.0; extra == "agents"
         | 
| 58 52 | 
             
            Requires-Dist: dask>=2023.12.0; extra == "agents"
         | 
| 59 53 | 
             
            Requires-Dist: detect-secrets>=1.4.0; extra == "agents"
         | 
| 60 54 | 
             
            Requires-Dist: diagrams>=0.23.0; extra == "agents"
         | 
| 61 | 
            -
            Requires-Dist: docker>=7.0.0; extra == "agents"
         | 
| 62 55 | 
             
            Requires-Dist: docstring-parser>=0.15.0; extra == "agents"
         | 
| 63 56 | 
             
            Requires-Dist: faker>=20.0.0; extra == "agents"
         | 
| 64 57 | 
             
            Requires-Dist: gitlint>=0.19.0; extra == "agents"
         | 
| 65 58 | 
             
            Requires-Dist: gitpython>=3.1.40; extra == "agents"
         | 
| 66 | 
            -
            Requires-Dist: great-expectations>=0.18.0; extra == "agents"
         | 
| 67 59 | 
             
            Requires-Dist: hypothesis>=6.92.0; extra == "agents"
         | 
| 68 60 | 
             
            Requires-Dist: isort>=5.12.0; extra == "agents"
         | 
| 69 | 
            -
            Requires-Dist: kubernetes>=28.0.0; extra == "agents"
         | 
| 70 61 | 
             
            Requires-Dist: lizard>=1.17.0; extra == "agents"
         | 
| 71 62 | 
             
            Requires-Dist: mermaid-py>=0.2.0; extra == "agents"
         | 
| 72 63 | 
             
            Requires-Dist: mkdocs>=1.5.0; extra == "agents"
         | 
| 73 64 | 
             
            Requires-Dist: mutmut>=2.4.0; extra == "agents"
         | 
| 74 65 | 
             
            Requires-Dist: mypy>=1.8.0; extra == "agents"
         | 
| 75 66 | 
             
            Requires-Dist: pandas>=2.1.0; extra == "agents"
         | 
| 76 | 
            -
            Requires-Dist: pip-audit>=2.6.0; extra == "agents"
         | 
| 77 67 | 
             
            Requires-Dist: pre-commit>=3.5.0; extra == "agents"
         | 
| 78 68 | 
             
            Requires-Dist: prometheus-client>=0.19.0; extra == "agents"
         | 
| 79 69 | 
             
            Requires-Dist: pydoc-markdown>=4.8.0; extra == "agents"
         | 
| 80 70 | 
             
            Requires-Dist: pydriller>=2.5.0; extra == "agents"
         | 
| 81 71 | 
             
            Requires-Dist: pygments>=2.17.0; extra == "agents"
         | 
| 82 | 
            -
            Requires-Dist: pyjwt>=2.8.0; extra == "agents"
         | 
| 83 72 | 
             
            Requires-Dist: pytest>=7.4.0; extra == "agents"
         | 
| 84 73 | 
             
            Requires-Dist: pytest-benchmark>=4.0.0; extra == "agents"
         | 
| 85 74 | 
             
            Requires-Dist: pytest-cov>=4.1.0; extra == "agents"
         | 
| 86 75 | 
             
            Requires-Dist: radon>=6.0.0; extra == "agents"
         | 
| 87 76 | 
             
            Requires-Dist: rope>=1.11.0; extra == "agents"
         | 
| 88 | 
            -
            Requires-Dist: safety>=3.0.0; extra == "agents"
         | 
| 89 | 
            -
            Requires-Dist: semgrep>=1.45.0; extra == "agents"
         | 
| 90 77 | 
             
            Requires-Dist: sphinx>=7.2.0; extra == "agents"
         | 
| 91 78 | 
             
            Requires-Dist: sqlalchemy>=2.0.0; extra == "agents"
         | 
| 92 79 | 
             
            Requires-Dist: sqlparse>=0.4.4; extra == "agents"
         | 
| 93 | 
            -
            Requires-Dist: terraform-compliance>=1.3.0; extra == "agents"
         | 
| 94 80 | 
             
            Requires-Dist: tree-sitter>=0.21.0; extra == "agents"
         | 
| 95 | 
            -
            Requires-Dist: tree-sitter- | 
| 96 | 
            -
            Requires-Dist:  | 
| 81 | 
            +
            Requires-Dist: tree-sitter-python>=0.21.0; extra == "agents"
         | 
| 82 | 
            +
            Requires-Dist: tree-sitter-javascript>=0.21.0; extra == "agents"
         | 
| 83 | 
            +
            Requires-Dist: tree-sitter-typescript>=0.21.0; extra == "agents"
         | 
| 84 | 
            +
            Requires-Dist: tree-sitter-go>=0.21.0; extra == "agents"
         | 
| 85 | 
            +
            Requires-Dist: tree-sitter-rust>=0.21.0; extra == "agents"
         | 
| 86 | 
            +
            Requires-Dist: tree-sitter-java>=0.21.0; extra == "agents"
         | 
| 87 | 
            +
            Requires-Dist: tree-sitter-cpp>=0.21.0; extra == "agents"
         | 
| 88 | 
            +
            Requires-Dist: tree-sitter-c>=0.21.0; extra == "agents"
         | 
| 89 | 
            +
            Requires-Dist: tree-sitter-ruby>=0.21.0; extra == "agents"
         | 
| 90 | 
            +
            Requires-Dist: tree-sitter-php>=0.21.0; extra == "agents"
         | 
| 97 91 | 
             
            Dynamic: author-email
         | 
| 98 92 | 
             
            Dynamic: home-page
         | 
| 99 93 | 
             
            Dynamic: license-file
         | 
| @@ -118,19 +112,21 @@ A powerful orchestration framework for Claude Code that enables multi-agent work | |
| 118 112 | 
             
            ## Installation
         | 
| 119 113 |  | 
| 120 114 | 
             
            ```bash
         | 
| 121 | 
            -
            #  | 
| 115 | 
            +
            # Basic installation - pure Python, no compilation required
         | 
| 122 116 | 
             
            pip install claude-mpm
         | 
| 123 117 |  | 
| 124 118 | 
             
            # Install with development dependencies
         | 
| 125 119 | 
             
            pip install "claude-mpm[dev]"
         | 
| 126 120 |  | 
| 127 | 
            -
            # Install with agent dependencies  | 
| 121 | 
            +
            # Install with agent dependencies - pure Python tools
         | 
| 128 122 | 
             
            pip install "claude-mpm[agents]"
         | 
| 129 123 |  | 
| 130 124 | 
             
            # Install with all optional dependencies
         | 
| 131 125 | 
             
            pip install "claude-mpm[agents,dev]"
         | 
| 132 126 | 
             
            ```
         | 
| 133 127 |  | 
| 128 | 
            +
            All dependencies are pure Python - no Rust or compilation required. The `agents` dependency group includes tools for testing, code analysis, documentation, and development workflows.
         | 
| 129 | 
            +
             | 
| 134 130 | 
             
            ## Basic Usage
         | 
| 135 131 |  | 
| 136 132 | 
             
            ```bash
         | 
| @@ -164,10 +160,10 @@ For detailed usage, see [QUICKSTART.md](QUICKSTART.md) | |
| 164 160 |  | 
| 165 161 | 
             
            ### Agent Dependencies
         | 
| 166 162 |  | 
| 167 | 
            -
            Claude MPM automatically manages Python dependencies required by agents. Agents can declare their dependencies in their configuration files, and the system aggregates them for easy installation.
         | 
| 163 | 
            +
            Claude MPM automatically manages Python dependencies required by agents. All dependencies are pure Python packages that don't require compilation. Agents can declare their dependencies in their configuration files, and the system aggregates them for easy installation.
         | 
| 168 164 |  | 
| 169 165 | 
             
            ```bash
         | 
| 170 | 
            -
            # Install all agent dependencies
         | 
| 166 | 
            +
            # Install all agent dependencies (pure Python)
         | 
| 171 167 | 
             
            pip install "claude-mpm[agents]"
         | 
| 172 168 |  | 
| 173 169 | 
             
            # View current agent dependencies
         | 
| @@ -17,19 +17,21 @@ A powerful orchestration framework for Claude Code that enables multi-agent work | |
| 17 17 | 
             
            ## Installation
         | 
| 18 18 |  | 
| 19 19 | 
             
            ```bash
         | 
| 20 | 
            -
            #  | 
| 20 | 
            +
            # Basic installation - pure Python, no compilation required
         | 
| 21 21 | 
             
            pip install claude-mpm
         | 
| 22 22 |  | 
| 23 23 | 
             
            # Install with development dependencies
         | 
| 24 24 | 
             
            pip install "claude-mpm[dev]"
         | 
| 25 25 |  | 
| 26 | 
            -
            # Install with agent dependencies  | 
| 26 | 
            +
            # Install with agent dependencies - pure Python tools
         | 
| 27 27 | 
             
            pip install "claude-mpm[agents]"
         | 
| 28 28 |  | 
| 29 29 | 
             
            # Install with all optional dependencies
         | 
| 30 30 | 
             
            pip install "claude-mpm[agents,dev]"
         | 
| 31 31 | 
             
            ```
         | 
| 32 32 |  | 
| 33 | 
            +
            All dependencies are pure Python - no Rust or compilation required. The `agents` dependency group includes tools for testing, code analysis, documentation, and development workflows.
         | 
| 34 | 
            +
             | 
| 33 35 | 
             
            ## Basic Usage
         | 
| 34 36 |  | 
| 35 37 | 
             
            ```bash
         | 
| @@ -63,10 +65,10 @@ For detailed usage, see [QUICKSTART.md](QUICKSTART.md) | |
| 63 65 |  | 
| 64 66 | 
             
            ### Agent Dependencies
         | 
| 65 67 |  | 
| 66 | 
            -
            Claude MPM automatically manages Python dependencies required by agents. Agents can declare their dependencies in their configuration files, and the system aggregates them for easy installation.
         | 
| 68 | 
            +
            Claude MPM automatically manages Python dependencies required by agents. All dependencies are pure Python packages that don't require compilation. Agents can declare their dependencies in their configuration files, and the system aggregates them for easy installation.
         | 
| 67 69 |  | 
| 68 70 | 
             
            ```bash
         | 
| 69 | 
            -
            # Install all agent dependencies
         | 
| 71 | 
            +
            # Install all agent dependencies (pure Python)
         | 
| 70 72 | 
             
            pip install "claude-mpm[agents]"
         | 
| 71 73 |  | 
| 72 74 | 
             
            # View current agent dependencies
         | 
    
        claude_mpm-3.7.8/VERSION
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            3.7.8
         | 
| @@ -10,7 +10,7 @@ readme = "README.md" | |
| 10 10 | 
             
            requires-python = ">=3.8"
         | 
| 11 11 | 
             
            keywords = [ "claude", "orchestration", "multi-agent", "ticket-management",]
         | 
| 12 12 | 
             
            classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12",]
         | 
| 13 | 
            -
            dependencies = [ "ai-trackdown-pytools>=1.4.0", "pyyaml>=6.0", "python-dotenv>=0.19.0", "click>=8.0.0", "pexpect>=4.8.0", "psutil>=5.9.0", "requests>=2.25.0", "flask>=3.0.0", "flask-cors>=4.0.0", "watchdog>=3.0.0", "tree-sitter>=0.21.0", " | 
| 13 | 
            +
            dependencies = [ "ai-trackdown-pytools>=1.4.0", "pyyaml>=6.0", "python-dotenv>=0.19.0", "click>=8.0.0", "pexpect>=4.8.0", "psutil>=5.9.0", "requests>=2.25.0", "flask>=3.0.0", "flask-cors>=4.0.0", "watchdog>=3.0.0", "tree-sitter>=0.21.0", "python-socketio>=5.11.0", "aiohttp>=3.9.0", "aiohttp-cors>=0.8.0", "python-engineio>=4.8.0", "python-frontmatter>=1.0.0", "mistune>=3.0.0", "aiofiles>=23.0.0",]
         | 
| 14 14 | 
             
            [[project.authors]]
         | 
| 15 15 | 
             
            name = "Claude MPM Team"
         | 
| 16 16 |  | 
| @@ -20,7 +20,8 @@ text = "MIT" | |
| 20 20 | 
             
            [project.optional-dependencies]
         | 
| 21 21 | 
             
            dev = [ "pytest>=7.0", "pytest-asyncio", "pytest-cov", "black", "flake8", "mypy",]
         | 
| 22 22 | 
             
            monitor = []
         | 
| 23 | 
            -
             | 
| 23 | 
            +
            # Pure Python agent dependencies - no compilation required
         | 
| 24 | 
            +
            agents = [ "bandit>=1.7.5", "black>=23.0.0", "commitizen>=3.13.0", "dask>=2023.12.0", "detect-secrets>=1.4.0", "diagrams>=0.23.0", "docstring-parser>=0.15.0", "faker>=20.0.0", "gitlint>=0.19.0", "gitpython>=3.1.40", "hypothesis>=6.92.0", "isort>=5.12.0", "lizard>=1.17.0", "mermaid-py>=0.2.0", "mkdocs>=1.5.0", "mutmut>=2.4.0", "mypy>=1.8.0", "pandas>=2.1.0", "pre-commit>=3.5.0", "prometheus-client>=0.19.0", "pydoc-markdown>=4.8.0", "pydriller>=2.5.0", "pygments>=2.17.0", "pytest>=7.4.0", "pytest-benchmark>=4.0.0", "pytest-cov>=4.1.0", "radon>=6.0.0", "rope>=1.11.0", "sphinx>=7.2.0", "sqlalchemy>=2.0.0", "sqlparse>=0.4.4", "tree-sitter>=0.21.0", "tree-sitter-python>=0.21.0", "tree-sitter-javascript>=0.21.0", "tree-sitter-typescript>=0.21.0", "tree-sitter-go>=0.21.0", "tree-sitter-rust>=0.21.0", "tree-sitter-java>=0.21.0", "tree-sitter-cpp>=0.21.0", "tree-sitter-c>=0.21.0", "tree-sitter-ruby>=0.21.0", "tree-sitter-php>=0.21.0",]
         | 
| 24 25 |  | 
| 25 26 | 
             
            [project.scripts]
         | 
| 26 27 | 
             
            claude-mpm = "claude_mpm.cli:main"
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            3.7.8
         | 
| @@ -141,6 +141,23 @@ Delegate to Research when: | |
| 141 141 | 
             
            - Architecture decisions needed
         | 
| 142 142 | 
             
            - Domain knowledge required
         | 
| 143 143 |  | 
| 144 | 
            +
            ### Ticketing Agent Scenarios
         | 
| 145 | 
            +
             | 
| 146 | 
            +
            **ALWAYS delegate to Ticketing Agent when user mentions:**
         | 
| 147 | 
            +
            - "ticket", "tickets", "ticketing"
         | 
| 148 | 
            +
            - "epic", "epics"  
         | 
| 149 | 
            +
            - "issue", "issues"
         | 
| 150 | 
            +
            - "task tracking", "task management"
         | 
| 151 | 
            +
            - "project documentation"
         | 
| 152 | 
            +
            - "work breakdown"
         | 
| 153 | 
            +
            - "user stories"
         | 
| 154 | 
            +
             | 
| 155 | 
            +
            The Ticketing Agent specializes in:
         | 
| 156 | 
            +
            - Creating and managing epics, issues, and tasks
         | 
| 157 | 
            +
            - Generating structured project documentation
         | 
| 158 | 
            +
            - Breaking down work into manageable pieces
         | 
| 159 | 
            +
            - Tracking project progress and dependencies
         | 
| 160 | 
            +
             | 
| 144 161 | 
             
            ## Context-Aware Agent Selection
         | 
| 145 162 |  | 
| 146 163 | 
             
            - **PM questions** → Answer directly (only exception)
         | 
| @@ -153,6 +170,7 @@ Delegate to Research when: | |
| 153 170 | 
             
            - **Testing/quality** → QA Agent
         | 
| 154 171 | 
             
            - **Version control** → Version Control Agent
         | 
| 155 172 | 
             
            - **Integration testing** → Test Integration Agent
         | 
| 173 | 
            +
            - **Ticket/issue management** → Ticketing Agent (when user mentions "ticket", "epic", "issue", or "task tracking")
         | 
| 156 174 |  | 
| 157 175 | 
             
            ## Error Handling Protocol
         | 
| 158 176 |  | 
| @@ -34,6 +34,7 @@ class ValidationResult: | |
| 34 34 | 
             
                warnings: List[str]
         | 
| 35 35 | 
             
                corrections: List[str]
         | 
| 36 36 | 
             
                corrected_frontmatter: Optional[Dict[str, Any]] = None
         | 
| 37 | 
            +
                field_corrections: Optional[Dict[str, Any]] = None  # Specific field-level corrections
         | 
| 37 38 |  | 
| 38 39 |  | 
| 39 40 | 
             
            class FrontmatterValidator:
         | 
| @@ -109,6 +110,7 @@ class FrontmatterValidator: | |
| 109 110 | 
             
                def __init__(self):
         | 
| 110 111 | 
             
                    """Initialize the validator with schema if available."""
         | 
| 111 112 | 
             
                    self.schema = self._load_schema()
         | 
| 113 | 
            +
                    self.all_valid_fields = self._extract_valid_fields()
         | 
| 112 114 |  | 
| 113 115 | 
             
                def _load_schema(self) -> Optional[Dict[str, Any]]:
         | 
| 114 116 | 
             
                    """Load the frontmatter schema from JSON file."""
         | 
| @@ -121,6 +123,17 @@ class FrontmatterValidator: | |
| 121 123 | 
             
                            logger.warning(f"Failed to load frontmatter schema: {e}")
         | 
| 122 124 | 
             
                    return None
         | 
| 123 125 |  | 
| 126 | 
            +
                def _extract_valid_fields(self) -> set:
         | 
| 127 | 
            +
                    """Extract all valid field names from the schema."""
         | 
| 128 | 
            +
                    if self.schema and 'properties' in self.schema:
         | 
| 129 | 
            +
                        return set(self.schema['properties'].keys())
         | 
| 130 | 
            +
                    # Fallback to known fields if schema not available
         | 
| 131 | 
            +
                    return {
         | 
| 132 | 
            +
                        "name", "description", "version", "base_version", "author", 
         | 
| 133 | 
            +
                        "tools", "model", "tags", "category", "max_tokens", "temperature", 
         | 
| 134 | 
            +
                        "resource_tier", "dependencies", "capabilities", "color"
         | 
| 135 | 
            +
                    }
         | 
| 136 | 
            +
                
         | 
| 124 137 | 
             
                def validate_and_correct(self, frontmatter: Dict[str, Any]) -> ValidationResult:
         | 
| 125 138 | 
             
                    """
         | 
| 126 139 | 
             
                    Validate and automatically correct frontmatter.
         | 
| @@ -135,9 +148,10 @@ class FrontmatterValidator: | |
| 135 148 | 
             
                    warnings = []
         | 
| 136 149 | 
             
                    corrections = []
         | 
| 137 150 | 
             
                    corrected = frontmatter.copy()
         | 
| 151 | 
            +
                    field_corrections = {}  # Track only the fields that actually need correction
         | 
| 138 152 |  | 
| 139 | 
            -
                    # Required fields check
         | 
| 140 | 
            -
                    required_fields = ["name", "description", "version", "model"]
         | 
| 153 | 
            +
                    # Required fields check (from schema)
         | 
| 154 | 
            +
                    required_fields = self.schema.get('required', ["name", "description", "version", "model"]) if self.schema else ["name", "description", "version", "model"]
         | 
| 141 155 | 
             
                    for field in required_fields:
         | 
| 142 156 | 
             
                        if field not in corrected:
         | 
| 143 157 | 
             
                            errors.append(f"Missing required field: {field}")
         | 
| @@ -153,6 +167,7 @@ class FrontmatterValidator: | |
| 153 167 | 
             
                            fixed_name = re.sub(r"[^a-z0-9_]", "", fixed_name)
         | 
| 154 168 | 
             
                            if fixed_name and fixed_name[0].isalpha():
         | 
| 155 169 | 
             
                                corrected["name"] = fixed_name
         | 
| 170 | 
            +
                                field_corrections["name"] = fixed_name
         | 
| 156 171 | 
             
                                corrections.append(f"Corrected name from '{name}' to '{fixed_name}'")
         | 
| 157 172 | 
             
                            else:
         | 
| 158 173 | 
             
                                errors.append(f"Invalid name format: {name}")
         | 
| @@ -165,6 +180,7 @@ class FrontmatterValidator: | |
| 165 180 | 
             
                        if isinstance(model, (int, float)):
         | 
| 166 181 | 
             
                            model = str(model)
         | 
| 167 182 | 
             
                            corrected["model"] = model
         | 
| 183 | 
            +
                            field_corrections["model"] = model
         | 
| 168 184 | 
             
                            corrections.append(f"Converted model from number to string: {model}")
         | 
| 169 185 |  | 
| 170 186 | 
             
                        if not isinstance(model, str):
         | 
| @@ -173,6 +189,7 @@ class FrontmatterValidator: | |
| 173 189 | 
             
                            normalized_model = self._normalize_model(model)
         | 
| 174 190 | 
             
                            if normalized_model != model:
         | 
| 175 191 | 
             
                                corrected["model"] = normalized_model
         | 
| 192 | 
            +
                                field_corrections["model"] = normalized_model
         | 
| 176 193 | 
             
                                corrections.append(f"Normalized model from '{model}' to '{normalized_model}'")
         | 
| 177 194 |  | 
| 178 195 | 
             
                            if normalized_model not in self.VALID_MODELS:
         | 
| @@ -184,6 +201,7 @@ class FrontmatterValidator: | |
| 184 201 | 
             
                        corrected_tools, tool_corrections = self._correct_tools(tools)
         | 
| 185 202 | 
             
                        if tool_corrections:
         | 
| 186 203 | 
             
                            corrected["tools"] = corrected_tools
         | 
| 204 | 
            +
                            field_corrections["tools"] = corrected_tools
         | 
| 187 205 | 
             
                            corrections.extend(tool_corrections)
         | 
| 188 206 |  | 
| 189 207 | 
             
                        # Validate tool names
         | 
| @@ -195,6 +213,8 @@ class FrontmatterValidator: | |
| 195 213 | 
             
                                if corrected_tool:
         | 
| 196 214 | 
             
                                    idx = corrected_tools.index(tool)
         | 
| 197 215 | 
             
                                    corrected_tools[idx] = corrected_tool
         | 
| 216 | 
            +
                                    corrected["tools"] = corrected_tools
         | 
| 217 | 
            +
                                    field_corrections["tools"] = corrected_tools
         | 
| 198 218 | 
             
                                    corrections.append(f"Corrected tool '{tool}' to '{corrected_tool}'")
         | 
| 199 219 | 
             
                                else:
         | 
| 200 220 | 
             
                                    invalid_tools.append(tool)
         | 
| @@ -214,10 +234,12 @@ class FrontmatterValidator: | |
| 214 234 | 
             
                                if re.match(r"^\d+\.\d+$", version):
         | 
| 215 235 | 
             
                                    fixed_version = f"{version}.0"
         | 
| 216 236 | 
             
                                    corrected[field] = fixed_version
         | 
| 237 | 
            +
                                    field_corrections[field] = fixed_version
         | 
| 217 238 | 
             
                                    corrections.append(f"Fixed {field} from '{version}' to '{fixed_version}'")
         | 
| 218 239 | 
             
                                elif re.match(r"^v?\d+\.\d+\.\d+$", version):
         | 
| 219 240 | 
             
                                    fixed_version = version.lstrip("v")
         | 
| 220 241 | 
             
                                    corrected[field] = fixed_version
         | 
| 242 | 
            +
                                    field_corrections[field] = fixed_version
         | 
| 221 243 | 
             
                                    corrections.append(f"Fixed {field} from '{version}' to '{fixed_version}'")
         | 
| 222 244 | 
             
                                else:
         | 
| 223 245 | 
             
                                    errors.append(f"Invalid {field} format: {version}")
         | 
| @@ -243,6 +265,44 @@ class FrontmatterValidator: | |
| 243 265 | 
             
                        if corrected["resource_tier"] not in valid_tiers:
         | 
| 244 266 | 
             
                            warnings.append(f"Invalid resource_tier: {corrected['resource_tier']}")
         | 
| 245 267 |  | 
| 268 | 
            +
                    # Validate color field
         | 
| 269 | 
            +
                    if "color" in corrected:
         | 
| 270 | 
            +
                        color = corrected["color"]
         | 
| 271 | 
            +
                        if not isinstance(color, str):
         | 
| 272 | 
            +
                            errors.append(f"Field 'color' must be a string, got {type(color).__name__}")
         | 
| 273 | 
            +
                        # Color validation could be expanded to check for valid color names/hex codes
         | 
| 274 | 
            +
                    
         | 
| 275 | 
            +
                    # Validate author field
         | 
| 276 | 
            +
                    if "author" in corrected:
         | 
| 277 | 
            +
                        author = corrected["author"]
         | 
| 278 | 
            +
                        if not isinstance(author, str):
         | 
| 279 | 
            +
                            errors.append(f"Field 'author' must be a string, got {type(author).__name__}")
         | 
| 280 | 
            +
                        elif len(author) > 100:
         | 
| 281 | 
            +
                            warnings.append(f"Author field too long ({len(author)} chars, maximum 100)")
         | 
| 282 | 
            +
                    
         | 
| 283 | 
            +
                    # Validate tags field
         | 
| 284 | 
            +
                    if "tags" in corrected:
         | 
| 285 | 
            +
                        tags = corrected["tags"]
         | 
| 286 | 
            +
                        if not isinstance(tags, list):
         | 
| 287 | 
            +
                            errors.append(f"Field 'tags' must be a list, got {type(tags).__name__}")
         | 
| 288 | 
            +
                        else:
         | 
| 289 | 
            +
                            for tag in tags:
         | 
| 290 | 
            +
                                if not isinstance(tag, str):
         | 
| 291 | 
            +
                                    errors.append(f"All tags must be strings, found {type(tag).__name__}")
         | 
| 292 | 
            +
                                elif not re.match(r"^[a-z][a-z0-9-]*$", tag):
         | 
| 293 | 
            +
                                    warnings.append(f"Tag '{tag}' doesn't match recommended pattern (lowercase, alphanumeric with hyphens)")
         | 
| 294 | 
            +
                    
         | 
| 295 | 
            +
                    # Validate numeric fields
         | 
| 296 | 
            +
                    for field_name, (min_val, max_val) in [("max_tokens", (1000, 200000)), ("temperature", (0, 1))]:
         | 
| 297 | 
            +
                        if field_name in corrected:
         | 
| 298 | 
            +
                            value = corrected[field_name]
         | 
| 299 | 
            +
                            if field_name == "temperature" and not isinstance(value, (int, float)):
         | 
| 300 | 
            +
                                errors.append(f"Field '{field_name}' must be a number, got {type(value).__name__}")
         | 
| 301 | 
            +
                            elif field_name == "max_tokens" and not isinstance(value, int):
         | 
| 302 | 
            +
                                errors.append(f"Field '{field_name}' must be an integer, got {type(value).__name__}")
         | 
| 303 | 
            +
                            elif isinstance(value, (int, float)) and not (min_val <= value <= max_val):
         | 
| 304 | 
            +
                                warnings.append(f"Field '{field_name}' value {value} outside recommended range [{min_val}, {max_val}]")
         | 
| 305 | 
            +
                    
         | 
| 246 306 | 
             
                    # Determine if valid
         | 
| 247 307 | 
             
                    is_valid = len(errors) == 0
         | 
| 248 308 |  | 
| @@ -251,7 +311,8 @@ class FrontmatterValidator: | |
| 251 311 | 
             
                        errors=errors,
         | 
| 252 312 | 
             
                        warnings=warnings,
         | 
| 253 313 | 
             
                        corrections=corrections,
         | 
| 254 | 
            -
                        corrected_frontmatter=corrected if corrections else None
         | 
| 314 | 
            +
                        corrected_frontmatter=corrected if corrections else None,
         | 
| 315 | 
            +
                        field_corrections=field_corrections if field_corrections else None
         | 
| 255 316 | 
             
                    )
         | 
| 256 317 |  | 
| 257 318 | 
             
                def _normalize_model(self, model: str) -> str:
         | 
| @@ -416,7 +477,7 @@ class FrontmatterValidator: | |
| 416 477 | 
             
                    """
         | 
| 417 478 | 
             
                    result = self.validate_file(file_path)
         | 
| 418 479 |  | 
| 419 | 
            -
                    if result. | 
| 480 | 
            +
                    if result.field_corrections and not dry_run:
         | 
| 420 481 | 
             
                        try:
         | 
| 421 482 | 
             
                            with open(file_path, 'r') as f:
         | 
| 422 483 | 
             
                                content = f.read()
         | 
| @@ -428,21 +489,59 @@ class FrontmatterValidator: | |
| 428 489 | 
             
                                    end_marker = content.find("\n---\r\n", 4)
         | 
| 429 490 |  | 
| 430 491 | 
             
                                if end_marker != -1:
         | 
| 431 | 
            -
                                    #  | 
| 432 | 
            -
                                     | 
| 433 | 
            -
             | 
| 434 | 
            -
                                         | 
| 435 | 
            -
                                        sort_keys=False
         | 
| 492 | 
            +
                                    # Apply field-level corrections to preserve structure
         | 
| 493 | 
            +
                                    frontmatter_content = content[4:end_marker]
         | 
| 494 | 
            +
                                    corrected_content = self._apply_field_corrections(
         | 
| 495 | 
            +
                                        frontmatter_content, result.field_corrections
         | 
| 436 496 | 
             
                                    )
         | 
| 437 | 
            -
                                    new_content = f"---\n{new_frontmatter}---\n{content[end_marker + 5:]}"
         | 
| 438 | 
            -
                                    
         | 
| 439 | 
            -
                                    with open(file_path, 'w') as f:
         | 
| 440 | 
            -
                                        f.write(new_content)
         | 
| 441 497 |  | 
| 442 | 
            -
                                     | 
| 443 | 
            -
             | 
| 444 | 
            -
                                         | 
| 498 | 
            +
                                    if corrected_content != frontmatter_content:
         | 
| 499 | 
            +
                                        new_content = f"---\n{corrected_content}\n---\n{content[end_marker + 5:]}"
         | 
| 500 | 
            +
                                        
         | 
| 501 | 
            +
                                        with open(file_path, 'w') as f:
         | 
| 502 | 
            +
                                            f.write(new_content)
         | 
| 503 | 
            +
                                        
         | 
| 504 | 
            +
                                        logger.info(f"Corrected frontmatter in {file_path}")
         | 
| 505 | 
            +
                                        for correction in result.corrections:
         | 
| 506 | 
            +
                                            logger.info(f"  - {correction}")
         | 
| 445 507 | 
             
                        except Exception as e:
         | 
| 446 508 | 
             
                            logger.error(f"Failed to write corrections to {file_path}: {e}")
         | 
| 447 509 |  | 
| 448 | 
            -
                    return result
         | 
| 510 | 
            +
                    return result
         | 
| 511 | 
            +
                
         | 
| 512 | 
            +
                def _apply_field_corrections(self, frontmatter_content: str, field_corrections: Dict[str, Any]) -> str:
         | 
| 513 | 
            +
                    """
         | 
| 514 | 
            +
                    Apply field-level corrections while preserving structure and other fields.
         | 
| 515 | 
            +
                    
         | 
| 516 | 
            +
                    Args:
         | 
| 517 | 
            +
                        frontmatter_content: Original YAML frontmatter content
         | 
| 518 | 
            +
                        field_corrections: Dict of field corrections to apply
         | 
| 519 | 
            +
                        
         | 
| 520 | 
            +
                    Returns:
         | 
| 521 | 
            +
                        Corrected frontmatter content
         | 
| 522 | 
            +
                    """
         | 
| 523 | 
            +
                    lines = frontmatter_content.strip().split('\n')
         | 
| 524 | 
            +
                    corrected_lines = []
         | 
| 525 | 
            +
                    
         | 
| 526 | 
            +
                    for line in lines:
         | 
| 527 | 
            +
                        # Check if this line contains a field we need to correct
         | 
| 528 | 
            +
                        if ':' in line:
         | 
| 529 | 
            +
                            field_name = line.split(':')[0].strip()
         | 
| 530 | 
            +
                            if field_name in field_corrections:
         | 
| 531 | 
            +
                                # Replace the field value while preserving structure
         | 
| 532 | 
            +
                                corrected_value = field_corrections[field_name]
         | 
| 533 | 
            +
                                if isinstance(corrected_value, list):
         | 
| 534 | 
            +
                                    # Handle list fields like tools
         | 
| 535 | 
            +
                                    if field_name == "tools" and isinstance(corrected_value, list):
         | 
| 536 | 
            +
                                        # Format as comma-separated string to preserve existing format
         | 
| 537 | 
            +
                                        corrected_lines.append(f"{field_name}: {','.join(corrected_value)}")
         | 
| 538 | 
            +
                                    else:
         | 
| 539 | 
            +
                                        corrected_lines.append(f"{field_name}: {corrected_value}")
         | 
| 540 | 
            +
                                else:
         | 
| 541 | 
            +
                                    corrected_lines.append(f"{field_name}: {corrected_value}")
         | 
| 542 | 
            +
                                continue
         | 
| 543 | 
            +
                        
         | 
| 544 | 
            +
                        # Keep the original line if no correction needed
         | 
| 545 | 
            +
                        corrected_lines.append(line)
         | 
| 546 | 
            +
                    
         | 
| 547 | 
            +
                    return '\n'.join(corrected_lines)
         | 
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            # Engineer Agent Memory - templates
         | 
| 2 2 |  | 
| 3 3 | 
             
            <!-- MEMORY LIMITS: 8KB max | 10 sections max | 15 items per section -->
         | 
| 4 | 
            -
            <!-- Last Updated: 2025-08- | 
| 4 | 
            +
            <!-- Last Updated: 2025-08-13 14:34:34 | Auto-updated by: engineer -->
         | 
| 5 5 |  | 
| 6 6 | 
             
            ## Project Context
         | 
| 7 7 | 
             
            templates: mixed standard application
         | 
| @@ -1,7 +1,7 @@ | |
| 1 | 
            -
            #  | 
| 1 | 
            +
            # Qa Agent Memory - templates
         | 
| 2 2 |  | 
| 3 3 | 
             
            <!-- MEMORY LIMITS: 8KB max | 10 sections max | 15 items per section -->
         | 
| 4 | 
            -
            <!-- Last Updated: 2025-08- | 
| 4 | 
            +
            <!-- Last Updated: 2025-08-13 14:37:34 | Auto-updated by: qa -->
         | 
| 5 5 |  | 
| 6 6 | 
             
            ## Project Context
         | 
| 7 7 | 
             
            templates: mixed standard application
         | 
| @@ -0,0 +1,39 @@ | |
| 1 | 
            +
            # Research Agent Memory - templates
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            <!-- MEMORY LIMITS: 16KB max | 10 sections max | 15 items per section -->
         | 
| 4 | 
            +
            <!-- Last Updated: 2025-08-13 14:29:28 | Auto-updated by: research -->
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            ## Project Context
         | 
| 7 | 
            +
            templates: mixed standard application
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            ## Project Architecture
         | 
| 10 | 
            +
            - Standard Application with mixed implementation
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            ## Coding Patterns Learned
         | 
| 13 | 
            +
            <!-- Items will be added as knowledge accumulates -->
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            ## Implementation Guidelines
         | 
| 16 | 
            +
            <!-- Items will be added as knowledge accumulates -->
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            ## Domain-Specific Knowledge
         | 
| 19 | 
            +
            <!-- Agent-specific knowledge for templates domain -->
         | 
| 20 | 
            +
            - Key project terms: templates
         | 
| 21 | 
            +
            - Focus on code analysis, pattern discovery, and architectural insights
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            ## Effective Strategies
         | 
| 24 | 
            +
            <!-- Successful approaches discovered through experience -->
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            ## Common Mistakes to Avoid
         | 
| 27 | 
            +
            <!-- Items will be added as knowledge accumulates -->
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            ## Integration Points
         | 
| 30 | 
            +
            <!-- Items will be added as knowledge accumulates -->
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            ## Performance Considerations
         | 
| 33 | 
            +
            <!-- Items will be added as knowledge accumulates -->
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            ## Current Technical Context
         | 
| 36 | 
            +
            <!-- Items will be added as knowledge accumulates -->
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            ## Recent Learnings
         | 
| 39 | 
            +
            <!-- Most recent discoveries and insights -->
         |