claude-mpm 3.7.4__py3-none-any.whl → 3.7.8__py3-none-any.whl
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/VERSION +1 -1
- claude_mpm/agents/INSTRUCTIONS.md +18 -0
- claude_mpm/agents/schema/agent_schema.json +1 -1
- claude_mpm/agents/templates/code_analyzer.json +26 -11
- claude_mpm/agents/templates/data_engineer.json +3 -6
- claude_mpm/agents/templates/documentation.json +2 -2
- claude_mpm/agents/templates/engineer.json +1 -1
- claude_mpm/agents/templates/ops.json +3 -8
- claude_mpm/agents/templates/qa.json +2 -3
- claude_mpm/agents/templates/research.json +1 -2
- claude_mpm/agents/templates/security.json +2 -5
- claude_mpm/agents/templates/ticketing.json +3 -3
- claude_mpm/agents/templates/version_control.json +3 -3
- claude_mpm/agents/templates/web_qa.json +3 -3
- claude_mpm/agents/templates/web_ui.json +3 -3
- claude_mpm/cli/commands/agents.py +118 -1
- claude_mpm/cli/parser.py +11 -0
- claude_mpm/core/framework_loader.py +8 -7
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +46 -2
- claude_mpm/dashboard/templates/index.html +5 -5
- claude_mpm/services/agents/deployment/agent_deployment.py +5 -1
- claude_mpm/services/agents/deployment/async_agent_deployment.py +5 -1
- claude_mpm/services/agents/management/agent_capabilities_generator.py +21 -11
- claude_mpm/services/ticket_manager.py +207 -44
- claude_mpm/utils/agent_dependency_loader.py +66 -15
- claude_mpm/utils/robust_installer.py +587 -0
- {claude_mpm-3.7.4.dist-info → claude_mpm-3.7.8.dist-info}/METADATA +17 -21
- {claude_mpm-3.7.4.dist-info → claude_mpm-3.7.8.dist-info}/RECORD +32 -47
- claude_mpm/.claude-mpm/logs/hooks_20250728.log +0 -10
- claude_mpm/agents/agent-template.yaml +0 -83
- claude_mpm/cli/README.md +0 -108
- claude_mpm/cli_module/refactoring_guide.md +0 -253
- claude_mpm/config/async_logging_config.yaml +0 -145
- claude_mpm/core/.claude-mpm/logs/hooks_20250730.log +0 -34
- claude_mpm/dashboard/.claude-mpm/memories/README.md +0 -36
- claude_mpm/dashboard/README.md +0 -121
- claude_mpm/dashboard/static/js/dashboard.js.backup +0 -1973
- claude_mpm/dashboard/templates/.claude-mpm/memories/README.md +0 -36
- claude_mpm/dashboard/templates/.claude-mpm/memories/engineer_agent.md +0 -39
- claude_mpm/dashboard/templates/.claude-mpm/memories/version_control_agent.md +0 -38
- claude_mpm/hooks/README.md +0 -96
- claude_mpm/schemas/agent_schema.json +0 -435
- claude_mpm/services/framework_claude_md_generator/README.md +0 -92
- claude_mpm/services/version_control/VERSION +0 -1
- {claude_mpm-3.7.4.dist-info → claude_mpm-3.7.8.dist-info}/WHEEL +0 -0
- {claude_mpm-3.7.4.dist-info → claude_mpm-3.7.8.dist-info}/entry_points.txt +0 -0
- {claude_mpm-3.7.4.dist-info → claude_mpm-3.7.8.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-3.7.4.dist-info → claude_mpm-3.7.8.dist-info}/top_level.txt +0 -0
| @@ -1,16 +1,14 @@ | |
| 1 | 
            -
            claude_mpm/VERSION,sha256= | 
| 1 | 
            +
            claude_mpm/VERSION,sha256=BXhWYSEVQa6g8aUMUQUyDJPjR2fFFYOS2g9Qv5wTxLQ,6
         | 
| 2 2 | 
             
            claude_mpm/__init__.py,sha256=ix_J0PHZBz37nVBDEYJmLpwnURlWuBKKQ8rK_00TFpk,964
         | 
| 3 3 | 
             
            claude_mpm/__main__.py,sha256=8IcM9tEbTqSN_er04eKTPX3AGo6qzRiTnPI7KfIf7rw,641
         | 
| 4 4 | 
             
            claude_mpm/constants.py,sha256=a2fA1SJNEGW9jemlVoFnYoQ673ixAL3YWR4aSBo8os8,4949
         | 
| 5 5 | 
             
            claude_mpm/deployment_paths.py,sha256=JO7-fhhp_AkVB7ZssggHDBbee-r2sokpkqjoqnQLTmM,9073
         | 
| 6 6 | 
             
            claude_mpm/init.py,sha256=BFbQspcg74TM15zdghRJ-NHpVpUzB6jfBzrMLXXvgX0,14859
         | 
| 7 7 | 
             
            claude_mpm/ticket_wrapper.py,sha256=bWjLReYyuHSBguuiRm1d52rHYNHqrPJAOLUbMt4CnuM,836
         | 
| 8 | 
            -
            claude_mpm/.claude-mpm/logs/hooks_20250728.log,sha256=5CAZYZB8sl1mE50SphO3RbdW6E_VVT6YUBCwzN-Y-RI,1244
         | 
| 9 8 | 
             
            claude_mpm/agents/BASE_AGENT_TEMPLATE.md,sha256=VbIyiYPTpYB4FnhultZjjnlqfKKMcPywchTCVKWqE-s,6205
         | 
| 10 9 | 
             
            claude_mpm/agents/BASE_PM.md,sha256=SxWPqfmNOV_yB_YK9NwEvj-pfdpjebKVO9233cY4AsI,9553
         | 
| 11 | 
            -
            claude_mpm/agents/INSTRUCTIONS.md,sha256= | 
| 10 | 
            +
            claude_mpm/agents/INSTRUCTIONS.md,sha256=tuIVjgHUjWxLcU3pTpl0vYs-UBQtPOD6YuOSWa5y3x8,11515
         | 
| 12 11 | 
             
            claude_mpm/agents/__init__.py,sha256=r-p7ervzjLPD7_8dm2tXX_fwvdTZy6KwKA03ofxN3sA,3275
         | 
| 13 | 
            -
            claude_mpm/agents/agent-template.yaml,sha256=koKJn8MCAJx0QNQMHouvIZrwvw5qjPV0U-aV-YVyk6s,2036
         | 
| 14 12 | 
             
            claude_mpm/agents/agent_loader.py,sha256=DgY0CMShaxdANV5GYT1Bd-lYizRKz89KpuR89VRx9GY,59534
         | 
| 15 13 | 
             
            claude_mpm/agents/agent_loader_integration.py,sha256=h07Kmk4D75jmHxz5BucP6oQ5VhqVgQ35Sn5w3hcZNYI,7474
         | 
| 16 14 | 
             
            claude_mpm/agents/agents_metadata.py,sha256=Xju9Yim6XSv2u1J_Swre5VJySbdxxC-9TzpOfXG8ibg,5170
         | 
| @@ -20,20 +18,20 @@ claude_mpm/agents/base_agent_loader.py,sha256=Ur2pcYQXInS_z8MAD3154rvPn-zEpD2fx6 | |
| 20 18 | 
             
            claude_mpm/agents/frontmatter_validator.py,sha256=OR6DWgGxV7b6A6WPAM9ikkDqCJitmp3UgYC45TkB5ZU,22630
         | 
| 21 19 | 
             
            claude_mpm/agents/system_agent_config.py,sha256=Lke4FFjU0Vq3LLo4O7KvtHxadP7agAwC-ljCXK40h_A,23526
         | 
| 22 20 | 
             
            claude_mpm/agents/backups/INSTRUCTIONS.md,sha256=tdekngpZ5RjECYZosOaDSBmXPZsVvZcwDQEmmlw7fOQ,14268
         | 
| 23 | 
            -
            claude_mpm/agents/schema/agent_schema.json,sha256= | 
| 21 | 
            +
            claude_mpm/agents/schema/agent_schema.json,sha256=6fqrQUG3sPVX7IKdcP_LYYZeYt3W9NxNBzSG0-XOBCw,8747
         | 
| 24 22 | 
             
            claude_mpm/agents/templates/__init__.py,sha256=7UyIChghCnkrDctvmCRYr0Wrnn8Oj-eCdgL0KpFy1Mo,2668
         | 
| 25 | 
            -
            claude_mpm/agents/templates/code_analyzer.json,sha256= | 
| 26 | 
            -
            claude_mpm/agents/templates/data_engineer.json,sha256= | 
| 27 | 
            -
            claude_mpm/agents/templates/documentation.json,sha256= | 
| 28 | 
            -
            claude_mpm/agents/templates/engineer.json,sha256= | 
| 29 | 
            -
            claude_mpm/agents/templates/ops.json,sha256= | 
| 30 | 
            -
            claude_mpm/agents/templates/qa.json,sha256= | 
| 31 | 
            -
            claude_mpm/agents/templates/research.json,sha256= | 
| 32 | 
            -
            claude_mpm/agents/templates/security.json,sha256= | 
| 33 | 
            -
            claude_mpm/agents/templates/ticketing.json,sha256= | 
| 34 | 
            -
            claude_mpm/agents/templates/version_control.json,sha256= | 
| 35 | 
            -
            claude_mpm/agents/templates/web_qa.json,sha256= | 
| 36 | 
            -
            claude_mpm/agents/templates/web_ui.json,sha256= | 
| 23 | 
            +
            claude_mpm/agents/templates/code_analyzer.json,sha256=EVW_-TS5CPwUu-VOeZYJaU4mGJI8P47weHUPbl34KA0,17718
         | 
| 24 | 
            +
            claude_mpm/agents/templates/data_engineer.json,sha256=fdLyaLsV50BvJvny14QYBE-NTyjeR9ocPJqZe83CPOc,15248
         | 
| 25 | 
            +
            claude_mpm/agents/templates/documentation.json,sha256=FTUb5jwKxw3Lu5LvqwrjmPbovmfyJUPv6476dzV2NMA,11905
         | 
| 26 | 
            +
            claude_mpm/agents/templates/engineer.json,sha256=fueZXgxAzO6a7-p9oj7hNh6PX6gUoEw-DMjqaAHCrqg,16570
         | 
| 27 | 
            +
            claude_mpm/agents/templates/ops.json,sha256=Vl_sMZW8gykAQjbfCESm9g25DBuaFAiZZaPhLcYrSYY,13776
         | 
| 28 | 
            +
            claude_mpm/agents/templates/qa.json,sha256=ypGUn2MPDX1ytD9eMS0RxTAEsbyOfnZIeAE601e3znQ,10807
         | 
| 29 | 
            +
            claude_mpm/agents/templates/research.json,sha256=UZUnencW3wy1jAAKsZfCdkrPvRBi7IF3qTr3w3mlUdU,15319
         | 
| 30 | 
            +
            claude_mpm/agents/templates/security.json,sha256=JHmrkiiG0yNqzOOHjC4W8otQESq1PADDJ0nwan2pxb0,12349
         | 
| 31 | 
            +
            claude_mpm/agents/templates/ticketing.json,sha256=MqOozO-MuotBW_HZSYo2Zl7-C4wKakJtqA0W7Hn7H7Q,23620
         | 
| 32 | 
            +
            claude_mpm/agents/templates/version_control.json,sha256=_XpmGFWPX8X0GRxypbMiiFyc4QYbOEhu-Q-nBFbZ7PI,11692
         | 
| 33 | 
            +
            claude_mpm/agents/templates/web_qa.json,sha256=U0wtWk9ysfg_AGUdJHZMAQVfkPSWJy8919SKHWpr2rg,17616
         | 
| 34 | 
            +
            claude_mpm/agents/templates/web_ui.json,sha256=l0ZnZol99Au6AzySQHpJ5os8OEC2uLeBYurlAmcOODU,22698
         | 
| 37 35 | 
             
            claude_mpm/agents/templates/.claude-mpm/memories/README.md,sha256=gDuLkzgcELaaoEB5Po70F0qabTu11vBi1PnUrYCK3fw,1098
         | 
| 38 36 | 
             
            claude_mpm/agents/templates/.claude-mpm/memories/engineer_agent.md,sha256=oX-L8D2oyS-NAoe5UNVTbfmLWYTpp1gYq6dKAm6KxLI,1150
         | 
| 39 37 | 
             
            claude_mpm/agents/templates/.claude-mpm/memories/qa_agent.md,sha256=3GOmBq3t3y1-mvWC7_lJ4ltsujJ14wCZCSzEVWCIrz8,1065
         | 
| @@ -47,14 +45,13 @@ claude_mpm/agents/templates/backup/qa_agent_20250726_234551.json,sha256=_FHWnUeh | |
| 47 45 | 
             
            claude_mpm/agents/templates/backup/research_agent_20250726_234551.json,sha256=o4n_sqSbjnsFRELB2q501vgwm-o2tQNLJLYvnVP9LWU,5629
         | 
| 48 46 | 
             
            claude_mpm/agents/templates/backup/security_agent_20250726_234551.json,sha256=l5YuD-27CxKSOsRLv0bDY_tCZyds0yGbeizLb8paeFY,2322
         | 
| 49 47 | 
             
            claude_mpm/agents/templates/backup/version_control_agent_20250726_234551.json,sha256=too38RPTLJ9HutCMn0nfmEdCj2me241dx5tUYDFtu94,2143
         | 
| 50 | 
            -
            claude_mpm/cli/README.md,sha256=BJhHwcwwrxqM0ZCoIJBPvumb32IL1gd-5RcVe2kYQGY,3370
         | 
| 51 48 | 
             
            claude_mpm/cli/__init__.py,sha256=5LuZoio9fl5UEWVKblC9r7f60UlsQxY_iHCihagw--I,6985
         | 
| 52 49 | 
             
            claude_mpm/cli/__main__.py,sha256=vShalycGU13i1-OOixEb_bjl8da4_FolrKdvoiZB-64,769
         | 
| 53 | 
            -
            claude_mpm/cli/parser.py,sha256= | 
| 50 | 
            +
            claude_mpm/cli/parser.py,sha256=ZtqaWem-WTXmzzLWZlmnheuSZN2s3B6ykjcw-U6Yck0,24826
         | 
| 54 51 | 
             
            claude_mpm/cli/ticket_cli.py,sha256=Jftgan7t7ZGNWo9zuZoPcw5zItCrVpBjPSOWz3FuIXE,919
         | 
| 55 52 | 
             
            claude_mpm/cli/utils.py,sha256=qNIbQcA6iE46lsve-GyoIw6eyd9ksHZz3tQA4bSmtt8,6325
         | 
| 56 53 | 
             
            claude_mpm/cli/commands/__init__.py,sha256=ywtU6fk3ZQEVaDn1pj-rVYadcjCI0-aRkVZjJXq2RtQ,633
         | 
| 57 | 
            -
            claude_mpm/cli/commands/agents.py,sha256= | 
| 54 | 
            +
            claude_mpm/cli/commands/agents.py,sha256=zDmoUxhZVqFtOJc7FInWJWSR2gJz85Or2Dv2-aos0NY,33461
         | 
| 58 55 | 
             
            claude_mpm/cli/commands/aggregate.py,sha256=rFFIYlOosGnw_DvTuWKw_6sxJeYag3RdACPSz0RHZyE,14869
         | 
| 59 56 | 
             
            claude_mpm/cli/commands/config.py,sha256=50LzTVlvR1LbeW25i-oSx4D6BZGa48DXuLLGXKhejyk,9919
         | 
| 60 57 | 
             
            claude_mpm/cli/commands/info.py,sha256=ETL6jC08OTQVTPjs219Y0m3FzfKOUlI0-yI81AI8FXY,2990
         | 
| @@ -66,10 +63,8 @@ claude_mpm/cli_module/__init__.py,sha256=CkMp4gzWKoZZF_qKyBDi2sQaZw_GLWZYLtKouv- | |
| 66 63 | 
             
            claude_mpm/cli_module/args.py,sha256=nilYpziBsoEySO4W1hQ2MRJyn9TFx3c3TrucyMMhRtk,7970
         | 
| 67 64 | 
             
            claude_mpm/cli_module/commands.py,sha256=CBNfO-bXrZ0spjeW_7-swprEq5V4PQSc0qhl9SLP5UU,7168
         | 
| 68 65 | 
             
            claude_mpm/cli_module/migration_example.py,sha256=C-_GbsW8dGzutnNeRLLld74ibDLyAOQx0stdpYZS0hs,6137
         | 
| 69 | 
            -
            claude_mpm/cli_module/refactoring_guide.md,sha256=fl1PGwLZAj4OYWmU0syg1jDd81PqK7rC7rhwgFId5BE,7048
         | 
| 70 66 | 
             
            claude_mpm/config/__init__.py,sha256=xte4oPG1ubIKhzne1do7slU6FbGebXin_QmyzGRn8c8,1114
         | 
| 71 67 | 
             
            claude_mpm/config/agent_config.py,sha256=QS-25LSiNz4uOocjIM_FX_SGoRQHJOfkBZCKlz09K5k,13830
         | 
| 72 | 
            -
            claude_mpm/config/async_logging_config.yaml,sha256=SBnTiykFxPpHU5yV-oFeRPAzTP7ewRbdl7dt3PPADds,3805
         | 
| 73 68 | 
             
            claude_mpm/config/paths.py,sha256=bOxSLNPBDQ3GM4NupY4Z0Jrxykgtw40z92Ytc-LMCuo,9670
         | 
| 74 69 | 
             
            claude_mpm/config/socketio_config.py,sha256=fSzqleM9EzehWg3U_--0y_zVgXZo7Q45JCI_a2xPs1g,9452
         | 
| 75 70 | 
             
            claude_mpm/core/__init__.py,sha256=yEiE03zgfISu6rSaLIUJ5vruNhkYrDHN69YeWRlrEIY,1079
         | 
| @@ -83,7 +78,7 @@ claude_mpm/core/config_aliases.py,sha256=uilRxeIVMY4ZM_I7lnUeR0n4_nmiOpW2jY2_aW4 | |
| 83 78 | 
             
            claude_mpm/core/config_paths.py,sha256=SwoB02p7GVw5pnEasC5wPyjfFZKxCsQvQmepRCpm-Es,4971
         | 
| 84 79 | 
             
            claude_mpm/core/container.py,sha256=P4c4nSo_USSfHTxvpR1sQkVGNsgqozZBN27l3IXqiDc,12216
         | 
| 85 80 | 
             
            claude_mpm/core/factories.py,sha256=hdC1BwS8gIYXt7NxoJxas3URIPxkWU8FcRbuy31ctB0,6310
         | 
| 86 | 
            -
            claude_mpm/core/framework_loader.py,sha256= | 
| 81 | 
            +
            claude_mpm/core/framework_loader.py,sha256=XoCcJoz3LWEoPCmUVV2QIf-HyDmDL7fILdBlXsjc2Cw,26174
         | 
| 87 82 | 
             
            claude_mpm/core/hook_manager.py,sha256=pVjVTu54FvpzI4F91VWX-hNStTeQelKCUM3qLjE8MhE,7045
         | 
| 88 83 | 
             
            claude_mpm/core/injectable_service.py,sha256=7fOny9c6x8IJ9hVZmFql1eNDXXB1jcWbsxfTKbMZk74,7497
         | 
| 89 84 | 
             
            claude_mpm/core/interfaces.py,sha256=TpP474EKEng-1TrjKUsN69qq6dXy8zIjicS7iV-ZPV0,15269
         | 
| @@ -95,22 +90,18 @@ claude_mpm/core/service_registry.py,sha256=1DnOOWLoDjQJB49YRlV_Ehf6YP79ilPMtHNpS | |
| 95 90 | 
             
            claude_mpm/core/session_manager.py,sha256=D6ZA7bHAgfdkv0nLKjza0FKDng5iqi___IESrb3nSuk,8292
         | 
| 96 91 | 
             
            claude_mpm/core/socketio_pool.py,sha256=B83uDsmqRF5S0QDwwatyKS-m2SdTvotCVfc3_2uQxd8,22438
         | 
| 97 92 | 
             
            claude_mpm/core/tool_access_control.py,sha256=htZbDhC8s7D7BVqfmk0BwRrYJnlnUAk8_NeJKOaeNlg,6632
         | 
| 98 | 
            -
            claude_mpm/core/.claude-mpm/logs/hooks_20250730.log,sha256=sIDaaPfbtKTAYy6CoS-Tu12J5vRHBmNvXV88HPlP-hI,4210
         | 
| 99 | 
            -
            claude_mpm/dashboard/README.md,sha256=BuaFPsg9QOvxd_TAw9a5OdgaBDg8OUJ8eeBOpqe6LK8,4050
         | 
| 100 93 | 
             
            claude_mpm/dashboard/index.html,sha256=lXd4WCDn46w9a6edUpGQIy5DtCmiTvDerd1vY97Ule8,451
         | 
| 101 94 | 
             
            claude_mpm/dashboard/open_dashboard.py,sha256=aXUc6LzUMwmTQMkl_h2jjvICimr-ED4FPMHP_9mnrgQ,1108
         | 
| 102 95 | 
             
            claude_mpm/dashboard/test_dashboard.html,sha256=Aakmm9O-pWld_CCXLuUBOJC81Ix9D1avytTN93u0zfc,15090
         | 
| 103 | 
            -
            claude_mpm/dashboard/.claude-mpm/memories/README.md,sha256=gDuLkzgcELaaoEB5Po70F0qabTu11vBi1PnUrYCK3fw,1098
         | 
| 104 96 | 
             
            claude_mpm/dashboard/static/css/dashboard.css,sha256=z2Z9jLWoPsC71gdQQML9D9Dkr54XnpKhcz4jomCKfdY,49692
         | 
| 105 97 | 
             
            claude_mpm/dashboard/static/js/dashboard-original.js,sha256=MfrEvUbvB-sU67wslVBEYmk2q9d0s2a_u1NWodJNQrc,162374
         | 
| 106 98 | 
             
            claude_mpm/dashboard/static/js/dashboard.js,sha256=vCRjE6HfxQ4VGqe8sML2_8lX0w6qoaZF0AmWjKVldpM,72056
         | 
| 107 | 
            -
            claude_mpm/dashboard/static/js/dashboard.js.backup,sha256=UNqDPBwzJ1aZAVCxT-FGBY13nF1Q6W2UUUZggNZnOxY,71607
         | 
| 108 99 | 
             
            claude_mpm/dashboard/static/js/socket-client.js,sha256=hjh-HGAlTpaX0Cr6A7DG75TZjujPFcRQSdw7FrysCWQ,18912
         | 
| 109 100 | 
             
            claude_mpm/dashboard/static/js/components/agent-inference.js,sha256=xlH3ka8Ev-WybsMp5wAHTQyJzqpht6n3iksmgGO8nfc,27889
         | 
| 110 101 | 
             
            claude_mpm/dashboard/static/js/components/event-processor.js,sha256=7CsQw1WtKuhV_uj5AaVNMYj6PAAOcT77dxyucBDqs4w,25428
         | 
| 111 102 | 
             
            claude_mpm/dashboard/static/js/components/event-viewer.js,sha256=kbRtHcsR3ZmMGK2jmTd3MJ1Ga6FkZJ0IQNrdmGoSrMY,32810
         | 
| 112 103 | 
             
            claude_mpm/dashboard/static/js/components/export-manager.js,sha256=vaBVwLnjzmS_euyeG5Kuq-LHbINcOAcMdibZtgvrUJk,12032
         | 
| 113 | 
            -
            claude_mpm/dashboard/static/js/components/file-tool-tracker.js,sha256= | 
| 104 | 
            +
            claude_mpm/dashboard/static/js/components/file-tool-tracker.js,sha256=wFK0gnn_vSIM-6aGfC_kNmLHA4E_l8-68x7AUtM8084,26430
         | 
| 114 105 | 
             
            claude_mpm/dashboard/static/js/components/hud-library-loader.js,sha256=LDeHIgoSc_ucgWOWgKqXogeKwf9ClGJTBUErLG3SxzE,7289
         | 
| 115 106 | 
             
            claude_mpm/dashboard/static/js/components/hud-manager.js,sha256=W-mUqEAiR6zIQAoTT-Tz3_OpwnNRg3KjV_3Ujm6LG04,26538
         | 
| 116 107 | 
             
            claude_mpm/dashboard/static/js/components/hud-visualizer.js,sha256=C78tZ9if-qhxhfUX3-PMezCBSw9apb3Exp_R23ZmU7I,62850
         | 
| @@ -119,14 +110,10 @@ claude_mpm/dashboard/static/js/components/session-manager.js,sha256=9BkA4NzM_4k9 | |
| 119 110 | 
             
            claude_mpm/dashboard/static/js/components/socket-manager.js,sha256=x0mKU7gIpIkfAPVyCY3i6Idy_QbxfW5Pc3vqv4zgSvg,12362
         | 
| 120 111 | 
             
            claude_mpm/dashboard/static/js/components/ui-state-manager.js,sha256=5Ligdos7L_UTWMtCW34Y7BNh7msdd9ArCr-7Yr9-VS8,12979
         | 
| 121 112 | 
             
            claude_mpm/dashboard/static/js/components/working-directory.js,sha256=YGyTP0vCaRc9qR7g2d1INShG0-0_X-xkqCW2IF82eXc,33213
         | 
| 122 | 
            -
            claude_mpm/dashboard/templates/index.html,sha256= | 
| 123 | 
            -
            claude_mpm/dashboard/templates/.claude-mpm/memories/README.md,sha256=gDuLkzgcELaaoEB5Po70F0qabTu11vBi1PnUrYCK3fw,1098
         | 
| 124 | 
            -
            claude_mpm/dashboard/templates/.claude-mpm/memories/engineer_agent.md,sha256=t8WHtbTdnh9lKJPaHPD-3nynA7kMCogaEGER-orO4bs,1150
         | 
| 125 | 
            -
            claude_mpm/dashboard/templates/.claude-mpm/memories/version_control_agent.md,sha256=tHMYDLOkL06iaiuI0Lt-UK81iJxMaa8APWfgPXc46nw,1091
         | 
| 113 | 
            +
            claude_mpm/dashboard/templates/index.html,sha256=vsE5vGsG00q-X6_vqtLF2fVCiCRbCNmxt9axUQSK-Sw,15027
         | 
| 126 114 | 
             
            claude_mpm/experimental/cli_enhancements.py,sha256=-N5f2u9TaxUcOJegUd3lt1FRz5ErEyYUvvgrNmMRL7Q,11814
         | 
| 127 115 | 
             
            claude_mpm/generators/__init__.py,sha256=l53aBn6kBQSDz3b6bZkMCJBcEmYnV9hHEZq8LKzXgH8,152
         | 
| 128 116 | 
             
            claude_mpm/generators/agent_profile_generator.py,sha256=2HjOscogSyvrtQj8KwdgNPS6Ym_QvgX1BMeauQZewZA,5751
         | 
| 129 | 
            -
            claude_mpm/hooks/README.md,sha256=wrj5GP0aiPzx0vQrZlE4I1JaQ_JaO_kdQPj7pgfiQKc,3129
         | 
| 130 117 | 
             
            claude_mpm/hooks/__init__.py,sha256=Y3JJ_mEtvRP07r_gXkju4c0s18bjIXGH1uAbhSw1ES0,166
         | 
| 131 118 | 
             
            claude_mpm/hooks/base_hook.py,sha256=a4V2EKEG02QQB0h-pnxhZI-fouKBLYbdBLckcaNuf0k,5098
         | 
| 132 119 | 
             
            claude_mpm/hooks/memory_integration_hook.py,sha256=z0I5R4rsmLx3mzYf7QLeMTYbRShagjS6u3ASyc4XLv0,16311
         | 
| @@ -138,7 +125,6 @@ claude_mpm/hooks/claude_hooks/hook_wrapper.sh,sha256=JBbedWNs1EHaUsAkmqfPv_tWxV_ | |
| 138 125 | 
             
            claude_mpm/models/__init__.py,sha256=vy2NLX2KT9QeH76SjCYh9dOYKPLRgxGrnwkQFAg08gc,465
         | 
| 139 126 | 
             
            claude_mpm/models/agent_definition.py,sha256=y9XQOED_maOyiYKhNB8H8MfJJMBN0vIYPS_wCXnRJmA,6647
         | 
| 140 127 | 
             
            claude_mpm/models/agent_session.py,sha256=cBl71q33TIBX8S6U1w2UnKOjEWyypFB04s0BCyKv0iQ,20174
         | 
| 141 | 
            -
            claude_mpm/schemas/agent_schema.json,sha256=T6yRidCHiRbeXYj1MqZJkepiOfUSN9kwNcU28Zqdi_k,13911
         | 
| 142 128 | 
             
            claude_mpm/scripts/__init__.py,sha256=zKYLZfT0P5z7C7r1YrhsTDnnyFXY-2awxhLVPYx68ek,552
         | 
| 143 129 | 
             
            claude_mpm/scripts/socketio_daemon.py,sha256=93jzq-h5GQRK-xYpLaovaqNAXtwR_ZqYjmEMmFn0xE8,9741
         | 
| 144 130 | 
             
            claude_mpm/scripts/start_activity_logging.py,sha256=9xTu6Kd9lmCx17vMmoAGRXegoaZIVqLzLJoXQDeZ9Yw,2917
         | 
| @@ -158,21 +144,21 @@ claude_mpm/services/response_tracker.py,sha256=QdktFGGuV653WYnDKbEiiGXfb_B8zVjRB | |
| 158 144 | 
             
            claude_mpm/services/socketio_client_manager.py,sha256=2Ly63iiGA_BUzf73UwQDu9Q75wA1C4O1CWFv8hi8bms,18074
         | 
| 159 145 | 
             
            claude_mpm/services/socketio_server.py,sha256=E1i_YrUFa7AKdxfKgNkC0daUzytA8qiHRJxD_JRcXPk,84929
         | 
| 160 146 | 
             
            claude_mpm/services/standalone_socketio_server.py,sha256=TfdtwdtlKA6cZyTon9O7zkSeu0H-1HpW0te7vu1r3o0,55214
         | 
| 161 | 
            -
            claude_mpm/services/ticket_manager.py,sha256= | 
| 147 | 
            +
            claude_mpm/services/ticket_manager.py,sha256=qXdNd5_ihIANZnXAnB6h2IHaizinrbby40DVRG3F4wE,16667
         | 
| 162 148 | 
             
            claude_mpm/services/ticket_manager_di.py,sha256=pIsIGncbboKzBYSRQTO7ZX5MuQzV6iFfIflvKe6u1jw,11123
         | 
| 163 149 | 
             
            claude_mpm/services/ticketing_service_original.py,sha256=_GbPCPuIAlfxQGfmHN-LQ6sjuDk00eNdY7rlS4qhjI4,16745
         | 
| 164 150 | 
             
            claude_mpm/services/agents/__init__.py,sha256=F5yJSTruNz0qiI2--oJIBO5-LoGQ6wXHvbt1sk-eVLU,2224
         | 
| 165 151 | 
             
            claude_mpm/services/agents/deployment/__init__.py,sha256=PhQQ108KP9RoxLLh_8aoPIjmwJau3az_10cEoPDm7DQ,538
         | 
| 166 | 
            -
            claude_mpm/services/agents/deployment/agent_deployment.py,sha256= | 
| 152 | 
            +
            claude_mpm/services/agents/deployment/agent_deployment.py,sha256=3hnVugOSGlUyyWVPE9g9ZyOwj8fM4NBgboAPSsQJWck,101181
         | 
| 167 153 | 
             
            claude_mpm/services/agents/deployment/agent_lifecycle_manager.py,sha256=b7guIDwEiJNRWtaRx1PwusqZX5QCnXqq-tl5AQOFp7Y,50136
         | 
| 168 154 | 
             
            claude_mpm/services/agents/deployment/agent_versioning.py,sha256=y4SiKGKdTn-9_Ht6nGlmKGJW6MLgEHZUy5SR1OPTZZM,1108
         | 
| 169 | 
            -
            claude_mpm/services/agents/deployment/async_agent_deployment.py,sha256= | 
| 155 | 
            +
            claude_mpm/services/agents/deployment/async_agent_deployment.py,sha256=adD0XfNnxmHpTYRU9Ud4osmGvkp02ZQc8xELs-poxMM,24266
         | 
| 170 156 | 
             
            claude_mpm/services/agents/loading/__init__.py,sha256=NN4JGAH7nsoY7qTW-jIBKOJPpLJVcD4P6S2Vmdd7QH8,305
         | 
| 171 157 | 
             
            claude_mpm/services/agents/loading/agent_profile_loader.py,sha256=2L_KIBk-ltt0lWQ5MzZE2JTdYxj4m8Rc7aeLoAiCp4k,25741
         | 
| 172 158 | 
             
            claude_mpm/services/agents/loading/base_agent_manager.py,sha256=y_MKtqReD5h70BpCTO4JbkcSUIxCsdzYaHyLMbdNLYU,15028
         | 
| 173 159 | 
             
            claude_mpm/services/agents/loading/framework_agent_loader.py,sha256=fyP54zrNxv-Xe8hRMInTnltaMtFgmRuCfMbaArPlkmc,17560
         | 
| 174 160 | 
             
            claude_mpm/services/agents/management/__init__.py,sha256=ZZm0jEdso59S72fw4O8jnU1iGWfDN68nWdXe9APvi8U,233
         | 
| 175 | 
            -
            claude_mpm/services/agents/management/agent_capabilities_generator.py,sha256= | 
| 161 | 
            +
            claude_mpm/services/agents/management/agent_capabilities_generator.py,sha256=Q6oS7vHFnqhegpi8NuDRe8egL34Nan5ssh_HxLRW1ic,7075
         | 
| 176 162 | 
             
            claude_mpm/services/agents/management/agent_management_service.py,sha256=OKU6dxxR1x53I9eimlJPMUDV9Hbc-Urw5gerCvM1nEk,23053
         | 
| 177 163 | 
             
            claude_mpm/services/agents/memory/__init__.py,sha256=IzY-iU93_v9HBCHZ0UaSYkdLWXobFRLcjdJXd6iAuFY,455
         | 
| 178 164 | 
             
            claude_mpm/services/agents/memory/agent_memory_manager.py,sha256=8JIcNEdmofEiWyVqX3SG5s--hQVAcVRj142YB9asvjU,58846
         | 
| @@ -181,7 +167,6 @@ claude_mpm/services/agents/registry/__init__.py,sha256=_NsxGhhykoj0NecfA4o8Xscrv | |
| 181 167 | 
             
            claude_mpm/services/agents/registry/agent_registry.py,sha256=jb-hIDGAoLWqBauS49N5Iin-nSozspGgUtb-gAROCfc,31570
         | 
| 182 168 | 
             
            claude_mpm/services/agents/registry/deployed_agent_discovery.py,sha256=EFsrutLB3Kxa5TXoQC2aVNx5cMIAaDcTqCBnF1FfrPc,9762
         | 
| 183 169 | 
             
            claude_mpm/services/agents/registry/modification_tracker.py,sha256=efkl652bAHhxUc6keoE2dOxlaQXtDnC3lkmR_jat4u4,34565
         | 
| 184 | 
            -
            claude_mpm/services/framework_claude_md_generator/README.md,sha256=_-ty72t2afPagDVVUEizPkhs4BYkCeqCnZDNPgZAYtY,3511
         | 
| 185 170 | 
             
            claude_mpm/services/framework_claude_md_generator/__init__.py,sha256=OtnwxLiJektfFtsKdkHM1X27rKkFiNd_rcf4843ziKw,7334
         | 
| 186 171 | 
             
            claude_mpm/services/framework_claude_md_generator/content_assembler.py,sha256=DNMVz6Jvy7bxxa8WNL2h-JwrK89bJpuxXEI5xD1i8mY,6570
         | 
| 187 172 | 
             
            claude_mpm/services/framework_claude_md_generator/content_validator.py,sha256=89QSGil9_NL15ci3HsVVQmfg7MZvsJS3i_ELP5yD-gA,4583
         | 
| @@ -208,14 +193,13 @@ claude_mpm/services/memory/router.py,sha256=ECQQ1v0BsMFQ4RXqpKfc9fwAXpzx5Kk0QlmJ | |
| 208 193 | 
             
            claude_mpm/services/memory/cache/__init__.py,sha256=FBff6fkrJWuWbQjQ4MoOxQa6ybRVBeH29hQC2XP0DEU,350
         | 
| 209 194 | 
             
            claude_mpm/services/memory/cache/shared_prompt_cache.py,sha256=bw1FDXM6iMuVfFxx_RNlIFZfiGC10p18Npwk-IGFCJ0,29899
         | 
| 210 195 | 
             
            claude_mpm/services/memory/cache/simple_cache.py,sha256=eVJq7mD4fn-EfRaLgKJxP65rqQrup-AqB-Cf7EFYy58,10480
         | 
| 211 | 
            -
            claude_mpm/services/version_control/VERSION,sha256=MMmeixA-rL5vbW4bVLBsptXzFktPUAlDNKUXrpXKj7o,5
         | 
| 212 196 | 
             
            claude_mpm/services/version_control/__init__.py,sha256=5BFbqFUMtpCyDbMcekRjCQ4jgBAJI50PhfuZ8S5NTjk,1513
         | 
| 213 197 | 
             
            claude_mpm/services/version_control/branch_strategy.py,sha256=xOLeNcu0AtpgIRmNkew-fNvXVcGHRuAe6MqOyyS36HQ,23068
         | 
| 214 198 | 
             
            claude_mpm/services/version_control/conflict_resolution.py,sha256=yWa9fzmkds1U0EBw-LyTZvlj56MpEEsRmryLQg4KDdU,26084
         | 
| 215 199 | 
             
            claude_mpm/services/version_control/git_operations.py,sha256=197Cmk_cLzSVzqNPQHKvsTGncWXEI3F5OOCmo4sWgTg,28422
         | 
| 216 200 | 
             
            claude_mpm/services/version_control/semantic_versioning.py,sha256=xiDsirwq8CApnOBc4UMf4VcrgolzQgfK2T_Yi3mY7Bk,29039
         | 
| 217 201 | 
             
            claude_mpm/utils/__init__.py,sha256=E8Hvv6ykL6rnnc8-YmfoGNpRCZbcIirxcFuNz7YvDIg,346
         | 
| 218 | 
            -
            claude_mpm/utils/agent_dependency_loader.py,sha256= | 
| 202 | 
            +
            claude_mpm/utils/agent_dependency_loader.py,sha256=AWLDapjGZNHoRBJVCqR6iTK2-P71tEtPitFKKSmMLl4,28281
         | 
| 219 203 | 
             
            claude_mpm/utils/config_manager.py,sha256=TlekZYIWOz_ouWHQU4Gc-zckhoFK9AqA25b6A_XZdDc,16412
         | 
| 220 204 | 
             
            claude_mpm/utils/console.py,sha256=5mBwhNU5p9fIveIbbdzuttJw182wv_VaAfe11iGFyTA,278
         | 
| 221 205 | 
             
            claude_mpm/utils/dependency_cache.py,sha256=gecpOA0BZYNiowUiAWNMTgPOoSJb9wvIivs7-mnLaCc,12351
         | 
| @@ -228,12 +212,13 @@ claude_mpm/utils/import_migration_example.py,sha256=W4a4XH3FY_VBB00BB8Lae2aRPM02 | |
| 228 212 | 
             
            claude_mpm/utils/imports.py,sha256=wX-SOXUHbemx01MHRGQpVwajzXH6qYdQkYNFCIbb2mw,6851
         | 
| 229 213 | 
             
            claude_mpm/utils/path_operations.py,sha256=6pLMnAWBVzHkgp6JyQHmHbGD-dWn-nX21yV4E_eT-kM,11614
         | 
| 230 214 | 
             
            claude_mpm/utils/paths.py,sha256=DlkYrIVvfgyuF9cN01cWuxehK0UUsCfjp6ymrv8XY7A,10253
         | 
| 215 | 
            +
            claude_mpm/utils/robust_installer.py,sha256=5-iW4Qpba4DBitx5Ie3uoUJgXBpbvuLUJ_uNGgOxwi4,19855
         | 
| 231 216 | 
             
            claude_mpm/utils/session_logging.py,sha256=9G0AzB7V0WkhLQlN0ocqbyDv0ifooEsJ5UPXIhA-wt0,3022
         | 
| 232 217 | 
             
            claude_mpm/validation/__init__.py,sha256=bJ19g9lnk7yIjtxzN8XPegp87HTFBzCrGQOpFgRTf3g,155
         | 
| 233 218 | 
             
            claude_mpm/validation/agent_validator.py,sha256=Jy7Oi7GVM7jqFYLVFDQ9pKYXsXH2KEf5uorflIwWGC4,20348
         | 
| 234 | 
            -
            claude_mpm-3.7. | 
| 235 | 
            -
            claude_mpm-3.7. | 
| 236 | 
            -
            claude_mpm-3.7. | 
| 237 | 
            -
            claude_mpm-3.7. | 
| 238 | 
            -
            claude_mpm-3.7. | 
| 239 | 
            -
            claude_mpm-3.7. | 
| 219 | 
            +
            claude_mpm-3.7.8.dist-info/licenses/LICENSE,sha256=cSdDfXjoTVhstrERrqme4zgxAu4GubU22zVEHsiXGxs,1071
         | 
| 220 | 
            +
            claude_mpm-3.7.8.dist-info/METADATA,sha256=WGPPOTOFRvLJZTz4tzrQc5Qwu6eRSihALdvE3YgDNAQ,11419
         | 
| 221 | 
            +
            claude_mpm-3.7.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
         | 
| 222 | 
            +
            claude_mpm-3.7.8.dist-info/entry_points.txt,sha256=3_d7wLrg9sRmQ1SfrFGWoTNL8Wrd6lQb2XVSYbTwRIg,324
         | 
| 223 | 
            +
            claude_mpm-3.7.8.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
         | 
| 224 | 
            +
            claude_mpm-3.7.8.dist-info/RECORD,,
         | 
| @@ -1,10 +0,0 @@ | |
| 1 | 
            -
            2025-07-28 09:57:00,914 - claude_mpm_hooks_claude_mpm - INFO - hook_handler.py:231 - Claude Code hook event: PostToolUse (session: 9a641bea)
         | 
| 2 | 
            -
            2025-07-28 09:57:00,914 - claude_mpm_hooks_claude_mpm - INFO - hook_handler.py:254 - PostToolUse: Bash (exit code: N/A)
         | 
| 3 | 
            -
            2025-07-28 09:57:09,289 - claude_mpm_hooks_claude_mpm - INFO - hook_handler.py:231 - Claude Code hook event: PreToolUse (session: 9a641bea)
         | 
| 4 | 
            -
            2025-07-28 09:57:09,290 - claude_mpm_hooks_claude_mpm - INFO - hook_handler.py:247 - PreToolUse: Bash
         | 
| 5 | 
            -
            2025-07-28 09:57:21,601 - claude_mpm_hooks_claude_mpm - INFO - hook_handler.py:231 - Claude Code hook event: PreToolUse (session: 9a641bea)
         | 
| 6 | 
            -
            2025-07-28 09:57:21,601 - claude_mpm_hooks_claude_mpm - INFO - hook_handler.py:247 - PreToolUse: LS
         | 
| 7 | 
            -
            2025-07-28 09:57:25,939 - claude_mpm_hooks_claude_mpm - INFO - hook_handler.py:231 - Claude Code hook event: PostToolUse (session: 9a641bea)
         | 
| 8 | 
            -
            2025-07-28 09:57:25,939 - claude_mpm_hooks_claude_mpm - INFO - hook_handler.py:254 - PostToolUse: LS (exit code: N/A)
         | 
| 9 | 
            -
            2025-07-28 09:57:35,668 - claude_mpm_hooks_claude_mpm - INFO - hook_handler.py:231 - Claude Code hook event: PreToolUse (session: 9a641bea)
         | 
| 10 | 
            -
            2025-07-28 09:57:35,668 - claude_mpm_hooks_claude_mpm - INFO - hook_handler.py:247 - PreToolUse: Bash
         | 
| @@ -1,83 +0,0 @@ | |
| 1 | 
            -
            # Agent Profile Template Configuration
         | 
| 2 | 
            -
            # Inspired by awesome-claude-code's template system
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            profile:
         | 
| 5 | 
            -
              name: "{{AGENT_NAME}}"
         | 
| 6 | 
            -
              version: "{{VERSION}}"
         | 
| 7 | 
            -
              description: "{{DESCRIPTION}}"
         | 
| 8 | 
            -
              author: "{{AUTHOR}}"
         | 
| 9 | 
            -
              created: "{{CREATED_DATE}}"
         | 
| 10 | 
            -
              
         | 
| 11 | 
            -
              # Categories for organizing agents
         | 
| 12 | 
            -
              categories:
         | 
| 13 | 
            -
                - id: analysis
         | 
| 14 | 
            -
                  title: "Code Analysis Agents"
         | 
| 15 | 
            -
                  description: |
         | 
| 16 | 
            -
                    > Agents specialized in analyzing codebases, identifying patterns, and providing insights
         | 
| 17 | 
            -
                  icon: "🔍"
         | 
| 18 | 
            -
                
         | 
| 19 | 
            -
                - id: implementation
         | 
| 20 | 
            -
                  title: "Implementation Agents"
         | 
| 21 | 
            -
                  description: |
         | 
| 22 | 
            -
                    > Agents focused on writing and modifying code
         | 
| 23 | 
            -
                  icon: "🛠️"
         | 
| 24 | 
            -
                
         | 
| 25 | 
            -
                - id: testing
         | 
| 26 | 
            -
                  title: "Testing & QA Agents"
         | 
| 27 | 
            -
                  description: |
         | 
| 28 | 
            -
                    > Agents dedicated to testing, quality assurance, and validation
         | 
| 29 | 
            -
                  icon: "🧪"
         | 
| 30 | 
            -
                
         | 
| 31 | 
            -
                - id: security
         | 
| 32 | 
            -
                  title: "Security Agents"
         | 
| 33 | 
            -
                  description: |
         | 
| 34 | 
            -
                    > Agents specialized in security analysis and vulnerability detection
         | 
| 35 | 
            -
                  icon: "🔒"
         | 
| 36 | 
            -
             | 
| 37 | 
            -
            agents:
         | 
| 38 | 
            -
              - name: "{{AGENT_ID}}"
         | 
| 39 | 
            -
                category: "{{CATEGORY}}"
         | 
| 40 | 
            -
                role: "{{ROLE}}"
         | 
| 41 | 
            -
                description: "{{AGENT_DESCRIPTION}}"
         | 
| 42 | 
            -
                
         | 
| 43 | 
            -
                capabilities:
         | 
| 44 | 
            -
                  - "{{CAPABILITY_1}}"
         | 
| 45 | 
            -
                  - "{{CAPABILITY_2}}"
         | 
| 46 | 
            -
                  - "{{CAPABILITY_3}}"
         | 
| 47 | 
            -
                
         | 
| 48 | 
            -
                constraints:
         | 
| 49 | 
            -
                  - "{{CONSTRAINT_1}}"
         | 
| 50 | 
            -
                  - "{{CONSTRAINT_2}}"
         | 
| 51 | 
            -
                
         | 
| 52 | 
            -
                tools:
         | 
| 53 | 
            -
                  - name: "{{TOOL_NAME}}"
         | 
| 54 | 
            -
                    description: "{{TOOL_DESCRIPTION}}"
         | 
| 55 | 
            -
                    required: true
         | 
| 56 | 
            -
                
         | 
| 57 | 
            -
                prompt_template: |
         | 
| 58 | 
            -
                  You are a {{ROLE}} agent specializing in {{SPECIALIZATION}}.
         | 
| 59 | 
            -
                  
         | 
| 60 | 
            -
                  ## Your Capabilities:
         | 
| 61 | 
            -
                  {{CAPABILITIES_LIST}}
         | 
| 62 | 
            -
                  
         | 
| 63 | 
            -
                  ## Your Constraints:
         | 
| 64 | 
            -
                  {{CONSTRAINTS_LIST}}
         | 
| 65 | 
            -
                  
         | 
| 66 | 
            -
                  ## Context:
         | 
| 67 | 
            -
                  {context}
         | 
| 68 | 
            -
                  
         | 
| 69 | 
            -
                  ## Task:
         | 
| 70 | 
            -
                  {task}
         | 
| 71 | 
            -
                  
         | 
| 72 | 
            -
                  ## Additional Instructions:
         | 
| 73 | 
            -
                  {{ADDITIONAL_INSTRUCTIONS}}
         | 
| 74 | 
            -
                
         | 
| 75 | 
            -
                examples:
         | 
| 76 | 
            -
                  - scenario: "{{EXAMPLE_SCENARIO}}"
         | 
| 77 | 
            -
                    input: "{{EXAMPLE_INPUT}}"
         | 
| 78 | 
            -
                    expected_output: "{{EXAMPLE_OUTPUT}}"
         | 
| 79 | 
            -
                
         | 
| 80 | 
            -
                best_practices:
         | 
| 81 | 
            -
                  - "{{BEST_PRACTICE_1}}"
         | 
| 82 | 
            -
                  - "{{BEST_PRACTICE_2}}"
         | 
| 83 | 
            -
                  - "{{BEST_PRACTICE_3}}"
         | 
    
        claude_mpm/cli/README.md
    DELETED
    
    | @@ -1,108 +0,0 @@ | |
| 1 | 
            -
            # Claude MPM CLI Architecture
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            This document describes the refactored CLI architecture for claude-mpm.
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            ## Overview
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            The CLI has been refactored from a single monolithic `cli.py` file into a modular structure that improves maintainability and code organization.
         | 
| 8 | 
            -
             | 
| 9 | 
            -
            ## Directory Structure
         | 
| 10 | 
            -
             | 
| 11 | 
            -
            ```
         | 
| 12 | 
            -
            cli/
         | 
| 13 | 
            -
            ├── __init__.py       # Main entry point - orchestrates the CLI flow
         | 
| 14 | 
            -
            ├── parser.py         # Argument parsing logic - single source of truth for CLI arguments
         | 
| 15 | 
            -
            ├── utils.py          # Shared utility functions
         | 
| 16 | 
            -
            ├── commands/         # Individual command implementations
         | 
| 17 | 
            -
            │   ├── __init__.py
         | 
| 18 | 
            -
            │   ├── run.py        # Default command - runs Claude sessions
         | 
| 19 | 
            -
            │   ├── tickets.py    # Lists tickets
         | 
| 20 | 
            -
            │   ├── info.py       # Shows system information
         | 
| 21 | 
            -
            │   └── agents.py     # Manages agent deployments
         | 
| 22 | 
            -
            └── README.md         # This file
         | 
| 23 | 
            -
            ```
         | 
| 24 | 
            -
             | 
| 25 | 
            -
            ## Key Design Decisions
         | 
| 26 | 
            -
             | 
| 27 | 
            -
            ### 1. Modular Command Structure
         | 
| 28 | 
            -
            Each command is implemented in its own module under `commands/`. This makes it easy to:
         | 
| 29 | 
            -
            - Add new commands without touching existing code
         | 
| 30 | 
            -
            - Test commands in isolation
         | 
| 31 | 
            -
            - Understand what each command does
         | 
| 32 | 
            -
             | 
| 33 | 
            -
            ### 2. Centralized Argument Parsing
         | 
| 34 | 
            -
            All argument definitions are in `parser.py`. This provides:
         | 
| 35 | 
            -
            - Single source of truth for CLI arguments
         | 
| 36 | 
            -
            - Reusable argument groups (common arguments, run arguments)
         | 
| 37 | 
            -
            - Clear separation of parsing from execution
         | 
| 38 | 
            -
             | 
| 39 | 
            -
            ### 3. Shared Utilities
         | 
| 40 | 
            -
            Common functions are in `utils.py`:
         | 
| 41 | 
            -
            - `get_user_input()` - Handles input from files, stdin, or command line
         | 
| 42 | 
            -
            - `get_agent_versions_display()` - Formats agent version information
         | 
| 43 | 
            -
            - `setup_logging()` - Configures logging based on arguments
         | 
| 44 | 
            -
            - `ensure_directories()` - Creates required directories on first run
         | 
| 45 | 
            -
             | 
| 46 | 
            -
            ### 4. Backward Compatibility
         | 
| 47 | 
            -
            The refactoring maintains full backward compatibility:
         | 
| 48 | 
            -
            - `__main__.py` still imports from `claude_mpm.cli`
         | 
| 49 | 
            -
            - The main `cli/__init__.py` exports the same `main()` function
         | 
| 50 | 
            -
            - All existing commands and arguments work exactly as before
         | 
| 51 | 
            -
             | 
| 52 | 
            -
            ## Entry Points
         | 
| 53 | 
            -
             | 
| 54 | 
            -
            1. **Package execution**: `python -m claude_mpm`
         | 
| 55 | 
            -
               - Uses `__main__.py` which imports from `cli/__init__.py`
         | 
| 56 | 
            -
             | 
| 57 | 
            -
            2. **Direct import**: `from claude_mpm.cli import main`
         | 
| 58 | 
            -
               - Imports the main function from `cli/__init__.py`
         | 
| 59 | 
            -
             | 
| 60 | 
            -
            3. **Shell script**: `claude-mpm` command
         | 
| 61 | 
            -
               - Calls `python -m claude_mpm` with proper environment setup
         | 
| 62 | 
            -
             | 
| 63 | 
            -
            ## Adding New Commands
         | 
| 64 | 
            -
             | 
| 65 | 
            -
            To add a new command:
         | 
| 66 | 
            -
             | 
| 67 | 
            -
            1. Create a new module in `commands/`:
         | 
| 68 | 
            -
            ```python
         | 
| 69 | 
            -
            # commands/mycommand.py
         | 
| 70 | 
            -
            def my_command(args):
         | 
| 71 | 
            -
                """Execute my command."""
         | 
| 72 | 
            -
                # Implementation here
         | 
| 73 | 
            -
            ```
         | 
| 74 | 
            -
             | 
| 75 | 
            -
            2. Add the command to `commands/__init__.py`:
         | 
| 76 | 
            -
            ```python
         | 
| 77 | 
            -
            from .mycommand import my_command
         | 
| 78 | 
            -
            ```
         | 
| 79 | 
            -
             | 
| 80 | 
            -
            3. Add parser configuration in `parser.py`:
         | 
| 81 | 
            -
            ```python
         | 
| 82 | 
            -
            # In create_parser()
         | 
| 83 | 
            -
            mycommand_parser = subparsers.add_parser(
         | 
| 84 | 
            -
                "mycommand",
         | 
| 85 | 
            -
                help="Description of my command"
         | 
| 86 | 
            -
            )
         | 
| 87 | 
            -
            # Add command-specific arguments
         | 
| 88 | 
            -
            ```
         | 
| 89 | 
            -
             | 
| 90 | 
            -
            4. Add the command mapping in `cli/__init__.py`:
         | 
| 91 | 
            -
            ```python
         | 
| 92 | 
            -
            # In _execute_command()
         | 
| 93 | 
            -
            command_map = {
         | 
| 94 | 
            -
                # ... existing commands ...
         | 
| 95 | 
            -
                "mycommand": my_command,
         | 
| 96 | 
            -
            }
         | 
| 97 | 
            -
            ```
         | 
| 98 | 
            -
             | 
| 99 | 
            -
            ## Removed Files
         | 
| 100 | 
            -
             | 
| 101 | 
            -
            - `cli_main.py` - Redundant entry point, functionality moved to `__main__.py`
         | 
| 102 | 
            -
            - Original `cli.py` - Split into the modular structure described above
         | 
| 103 | 
            -
             | 
| 104 | 
            -
            ## Preserved Files
         | 
| 105 | 
            -
             | 
| 106 | 
            -
            - `cli_enhancements.py` - Experimental Click-based CLI with enhanced features
         | 
| 107 | 
            -
              - Kept for reference and future enhancement ideas
         | 
| 108 | 
            -
              - Not currently used in production
         | 
| @@ -1,253 +0,0 @@ | |
| 1 | 
            -
            # CLI Refactoring Guide
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            This guide shows how to refactor the main() function in `/src/claude_mpm/cli.py` to reduce complexity from 16 to under 10.
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            ## Current Issues
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            1. **High Cyclomatic Complexity (16)**
         | 
| 8 | 
            -
               - Multiple nested conditionals
         | 
| 9 | 
            -
               - Duplicate argument definitions
         | 
| 10 | 
            -
               - Mixed concerns in one function
         | 
| 11 | 
            -
             | 
| 12 | 
            -
            2. **Code Duplication**
         | 
| 13 | 
            -
               - Arguments defined twice (global level + run subcommand)
         | 
| 14 | 
            -
               - Similar patterns repeated for each command
         | 
| 15 | 
            -
             | 
| 16 | 
            -
            3. **Poor Maintainability**
         | 
| 17 | 
            -
               - Adding new commands requires multiple changes
         | 
| 18 | 
            -
               - Hard to test individual components
         | 
| 19 | 
            -
             | 
| 20 | 
            -
            ## Refactoring Steps
         | 
| 21 | 
            -
             | 
| 22 | 
            -
            ### Step 1: Update imports in cli.py
         | 
| 23 | 
            -
             | 
| 24 | 
            -
            ```python
         | 
| 25 | 
            -
            # Add to imports
         | 
| 26 | 
            -
            from .cli import ArgumentRegistry, CommandRegistry, register_standard_commands
         | 
| 27 | 
            -
            ```
         | 
| 28 | 
            -
             | 
| 29 | 
            -
            ### Step 2: Replace main() function
         | 
| 30 | 
            -
             | 
| 31 | 
            -
            Replace the entire `main()` function with:
         | 
| 32 | 
            -
             | 
| 33 | 
            -
            ```python
         | 
| 34 | 
            -
            def main(argv: Optional[list] = None):
         | 
| 35 | 
            -
                """Main CLI entry point with reduced complexity."""
         | 
| 36 | 
            -
                # Initialize registries
         | 
| 37 | 
            -
                arg_registry = ArgumentRegistry()
         | 
| 38 | 
            -
                cmd_registry = CommandRegistry(arg_registry)
         | 
| 39 | 
            -
                
         | 
| 40 | 
            -
                # Register standard commands
         | 
| 41 | 
            -
                register_standard_commands(cmd_registry)
         | 
| 42 | 
            -
                
         | 
| 43 | 
            -
                # Create parser
         | 
| 44 | 
            -
                parser = argparse.ArgumentParser(
         | 
| 45 | 
            -
                    prog="claude-mpm",
         | 
| 46 | 
            -
                    description=f"Claude Multi-Agent Project Manager v{__version__}",
         | 
| 47 | 
            -
                    epilog="By default, runs an orchestrated Claude session."
         | 
| 48 | 
            -
                )
         | 
| 49 | 
            -
                
         | 
| 50 | 
            -
                # Store version for ArgumentRegistry
         | 
| 51 | 
            -
                parser._version = f"claude-mpm {__version__}"
         | 
| 52 | 
            -
                
         | 
| 53 | 
            -
                # Apply global arguments
         | 
| 54 | 
            -
                arg_registry.apply_arguments(parser, groups=['global'])
         | 
| 55 | 
            -
                
         | 
| 56 | 
            -
                # Apply run arguments at top level (for default behavior)
         | 
| 57 | 
            -
                arg_registry.apply_arguments(parser, groups=['run'], exclude=['no_hooks'])
         | 
| 58 | 
            -
                
         | 
| 59 | 
            -
                # Set up subcommands
         | 
| 60 | 
            -
                cmd_registry.setup_subcommands(parser)
         | 
| 61 | 
            -
                
         | 
| 62 | 
            -
                # Parse arguments
         | 
| 63 | 
            -
                args = parser.parse_args(argv)
         | 
| 64 | 
            -
                
         | 
| 65 | 
            -
                # Set up logging
         | 
| 66 | 
            -
                _setup_logging(args)
         | 
| 67 | 
            -
                
         | 
| 68 | 
            -
                # Initialize hook service
         | 
| 69 | 
            -
                hook_manager = _initialize_hook_service(args)
         | 
| 70 | 
            -
                
         | 
| 71 | 
            -
                try:
         | 
| 72 | 
            -
                    # Execute command
         | 
| 73 | 
            -
                    result = cmd_registry.execute_command(args, hook_manager=hook_manager)
         | 
| 74 | 
            -
                    if result is None and not args.command:
         | 
| 75 | 
            -
                        parser.print_help()
         | 
| 76 | 
            -
                        return 1
         | 
| 77 | 
            -
                    return result or 0
         | 
| 78 | 
            -
                    
         | 
| 79 | 
            -
                except KeyboardInterrupt:
         | 
| 80 | 
            -
                    get_logger("cli").info("Session interrupted by user")
         | 
| 81 | 
            -
                    return 0
         | 
| 82 | 
            -
                except Exception as e:
         | 
| 83 | 
            -
                    logger = get_logger("cli")
         | 
| 84 | 
            -
                    logger.error(f"Error: {e}")
         | 
| 85 | 
            -
                    if args.debug:
         | 
| 86 | 
            -
                        import traceback
         | 
| 87 | 
            -
                        traceback.print_exc()
         | 
| 88 | 
            -
                    return 1
         | 
| 89 | 
            -
                finally:
         | 
| 90 | 
            -
                    if hook_manager:
         | 
| 91 | 
            -
                        hook_manager.stop_service()
         | 
| 92 | 
            -
            ```
         | 
| 93 | 
            -
             | 
| 94 | 
            -
            ### Step 3: Extract helper functions
         | 
| 95 | 
            -
             | 
| 96 | 
            -
            Add these helper functions after main():
         | 
| 97 | 
            -
             | 
| 98 | 
            -
            ```python
         | 
| 99 | 
            -
            def _setup_logging(args):
         | 
| 100 | 
            -
                """Set up logging based on arguments."""
         | 
| 101 | 
            -
                if args.debug and args.logging == "OFF":
         | 
| 102 | 
            -
                    args.logging = "DEBUG"
         | 
| 103 | 
            -
                
         | 
| 104 | 
            -
                if args.logging != "OFF":
         | 
| 105 | 
            -
                    setup_logging(level=args.logging, log_dir=args.log_dir)
         | 
| 106 | 
            -
                else:
         | 
| 107 | 
            -
                    import logging
         | 
| 108 | 
            -
                    logger = logging.getLogger("cli")
         | 
| 109 | 
            -
                    logger.setLevel(logging.WARNING)
         | 
| 110 | 
            -
             | 
| 111 | 
            -
             | 
| 112 | 
            -
            def _initialize_hook_service(args):
         | 
| 113 | 
            -
                """Initialize hook service if enabled."""
         | 
| 114 | 
            -
                if getattr(args, 'no_hooks', False):
         | 
| 115 | 
            -
                    return None
         | 
| 116 | 
            -
                    
         | 
| 117 | 
            -
                try:
         | 
| 118 | 
            -
                    from .config.hook_config import HookConfig
         | 
| 119 | 
            -
                    
         | 
| 120 | 
            -
                    if not HookConfig.is_hooks_enabled():
         | 
| 121 | 
            -
                        get_logger("cli").info("Hooks disabled via configuration")
         | 
| 122 | 
            -
                        return None
         | 
| 123 | 
            -
                        
         | 
| 124 | 
            -
                    hook_manager = HookServiceManager(log_dir=args.log_dir)
         | 
| 125 | 
            -
                    if hook_manager.start_service():
         | 
| 126 | 
            -
                        logger = get_logger("cli")
         | 
| 127 | 
            -
                        logger.info(f"Hook service started on port {hook_manager.port}")
         | 
| 128 | 
            -
                        print(f"Hook service started on port {hook_manager.port}")
         | 
| 129 | 
            -
                        return hook_manager
         | 
| 130 | 
            -
                    else:
         | 
| 131 | 
            -
                        logger = get_logger("cli")
         | 
| 132 | 
            -
                        logger.warning("Failed to start hook service")
         | 
| 133 | 
            -
                        print("Failed to start hook service, continuing without hooks")
         | 
| 134 | 
            -
                        return None
         | 
| 135 | 
            -
                        
         | 
| 136 | 
            -
                except Exception as e:
         | 
| 137 | 
            -
                    get_logger("cli").warning(f"Hook service init failed: {e}")
         | 
| 138 | 
            -
                    return None
         | 
| 139 | 
            -
            ```
         | 
| 140 | 
            -
             | 
| 141 | 
            -
            ### Step 4: Update command handler signatures
         | 
| 142 | 
            -
             | 
| 143 | 
            -
            Ensure all command handlers accept `**kwargs`:
         | 
| 144 | 
            -
             | 
| 145 | 
            -
            ```python
         | 
| 146 | 
            -
            def run_session(args, hook_manager=None, **kwargs):
         | 
| 147 | 
            -
                """Run an orchestrated Claude session."""
         | 
| 148 | 
            -
                # ... existing implementation
         | 
| 149 | 
            -
             | 
| 150 | 
            -
            def list_tickets(args, **kwargs):
         | 
| 151 | 
            -
                """List recent tickets."""
         | 
| 152 | 
            -
                # ... existing implementation
         | 
| 153 | 
            -
             | 
| 154 | 
            -
            def show_info(args, hook_manager=None, **kwargs):
         | 
| 155 | 
            -
                """Show framework and configuration information."""
         | 
| 156 | 
            -
                # ... existing implementation
         | 
| 157 | 
            -
            ```
         | 
| 158 | 
            -
             | 
| 159 | 
            -
            ## Benefits Achieved
         | 
| 160 | 
            -
             | 
| 161 | 
            -
            ### Complexity Reduction
         | 
| 162 | 
            -
            - **Before**: Cyclomatic complexity of 16
         | 
| 163 | 
            -
            - **After**: Cyclomatic complexity of ~8
         | 
| 164 | 
            -
             | 
| 165 | 
            -
            ### Code Organization
         | 
| 166 | 
            -
            - Centralized argument definitions
         | 
| 167 | 
            -
            - No duplicate argument definitions
         | 
| 168 | 
            -
            - Clear separation of concerns
         | 
| 169 | 
            -
            - Easier to add new commands
         | 
| 170 | 
            -
             | 
| 171 | 
            -
            ### Maintainability
         | 
| 172 | 
            -
            - New commands can be added with a single `register()` call
         | 
| 173 | 
            -
            - Arguments are defined once and reused
         | 
| 174 | 
            -
            - Helper functions are testable in isolation
         | 
| 175 | 
            -
            - Registry pattern allows for extension
         | 
| 176 | 
            -
             | 
| 177 | 
            -
            ## Adding New Commands
         | 
| 178 | 
            -
             | 
| 179 | 
            -
            With the registry system, adding a new command is simple:
         | 
| 180 | 
            -
             | 
| 181 | 
            -
            ```python
         | 
| 182 | 
            -
            # In your code or plugin
         | 
| 183 | 
            -
            def my_command(args, **kwargs):
         | 
| 184 | 
            -
                """Implementation of your command."""
         | 
| 185 | 
            -
                print(f"Running my command with args: {args}")
         | 
| 186 | 
            -
                return 0
         | 
| 187 | 
            -
             | 
| 188 | 
            -
            # Register it
         | 
| 189 | 
            -
            cmd_registry.register(
         | 
| 190 | 
            -
                name='mycommand',
         | 
| 191 | 
            -
                help_text='Description of my command',
         | 
| 192 | 
            -
                handler=my_command,
         | 
| 193 | 
            -
                argument_groups=['framework'],  # Reuse existing argument groups
         | 
| 194 | 
            -
                extra_args={
         | 
| 195 | 
            -
                    'custom_arg': {
         | 
| 196 | 
            -
                        'flags': ['--custom'],
         | 
| 197 | 
            -
                        'type': str,
         | 
| 198 | 
            -
                        'help': 'A custom argument for this command'
         | 
| 199 | 
            -
                    }
         | 
| 200 | 
            -
                }
         | 
| 201 | 
            -
            )
         | 
| 202 | 
            -
            ```
         | 
| 203 | 
            -
             | 
| 204 | 
            -
            ## Testing
         | 
| 205 | 
            -
             | 
| 206 | 
            -
            The refactored code is easier to test:
         | 
| 207 | 
            -
             | 
| 208 | 
            -
            ```python
         | 
| 209 | 
            -
            # Test argument registry
         | 
| 210 | 
            -
            def test_argument_registry():
         | 
| 211 | 
            -
                registry = ArgumentRegistry()
         | 
| 212 | 
            -
                parser = argparse.ArgumentParser()
         | 
| 213 | 
            -
                registry.apply_arguments(parser, groups=['logging'])
         | 
| 214 | 
            -
                
         | 
| 215 | 
            -
                # Verify logging arguments were added
         | 
| 216 | 
            -
                args = parser.parse_args(['--logging', 'DEBUG'])
         | 
| 217 | 
            -
                assert args.logging == 'DEBUG'
         | 
| 218 | 
            -
             | 
| 219 | 
            -
            # Test command registry
         | 
| 220 | 
            -
            def test_command_registry():
         | 
| 221 | 
            -
                arg_reg = ArgumentRegistry()
         | 
| 222 | 
            -
                cmd_reg = CommandRegistry(arg_reg)
         | 
| 223 | 
            -
                
         | 
| 224 | 
            -
                called = False
         | 
| 225 | 
            -
                def test_handler(args, **kwargs):
         | 
| 226 | 
            -
                    nonlocal called
         | 
| 227 | 
            -
                    called = True
         | 
| 228 | 
            -
                    return 0
         | 
| 229 | 
            -
                
         | 
| 230 | 
            -
                cmd_reg.register('test', 'Test command', test_handler)
         | 
| 231 | 
            -
                
         | 
| 232 | 
            -
                parser = argparse.ArgumentParser()
         | 
| 233 | 
            -
                cmd_reg.setup_subcommands(parser)
         | 
| 234 | 
            -
                
         | 
| 235 | 
            -
                args = parser.parse_args(['test'])
         | 
| 236 | 
            -
                result = cmd_reg.execute_command(args)
         | 
| 237 | 
            -
                
         | 
| 238 | 
            -
                assert called
         | 
| 239 | 
            -
                assert result == 0
         | 
| 240 | 
            -
            ```
         | 
| 241 | 
            -
             | 
| 242 | 
            -
            ## Migration Checklist
         | 
| 243 | 
            -
             | 
| 244 | 
            -
            - [ ] Create `/src/claude_mpm/cli/` directory
         | 
| 245 | 
            -
            - [ ] Create `args.py` with ArgumentRegistry
         | 
| 246 | 
            -
            - [ ] Create `commands.py` with CommandRegistry
         | 
| 247 | 
            -
            - [ ] Create `__init__.py` to export classes
         | 
| 248 | 
            -
            - [ ] Update imports in `cli.py`
         | 
| 249 | 
            -
            - [ ] Replace main() function
         | 
| 250 | 
            -
            - [ ] Add helper functions
         | 
| 251 | 
            -
            - [ ] Update command handler signatures
         | 
| 252 | 
            -
            - [ ] Test the refactored CLI
         | 
| 253 | 
            -
            - [ ] Verify complexity is reduced to ≤10
         |