claude-mpm 4.21.3__py3-none-any.whl → 5.0.2__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.
Files changed (484) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_PM.md +12 -0
  3. claude_mpm/agents/OUTPUT_STYLE.md +3 -48
  4. claude_mpm/agents/PM_INSTRUCTIONS.md +632 -334
  5. claude_mpm/agents/WORKFLOW.md +75 -2
  6. claude_mpm/agents/__init__.py +6 -0
  7. claude_mpm/agents/agent_loader.py +1 -4
  8. claude_mpm/agents/base_agent.json +6 -3
  9. claude_mpm/agents/frontmatter_validator.py +1 -1
  10. claude_mpm/agents/templates/{circuit_breakers.md → circuit-breakers.md} +370 -3
  11. claude_mpm/agents/templates/context-management-examples.md +544 -0
  12. claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +89 -19
  13. claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
  14. claude_mpm/agents/templates/research-gate-examples.md +669 -0
  15. claude_mpm/agents/templates/structured-questions-examples.md +615 -0
  16. claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
  17. claude_mpm/agents/templates/ticketing-examples.md +277 -0
  18. claude_mpm/cli/__init__.py +38 -2
  19. claude_mpm/cli/commands/agent_source.py +774 -0
  20. claude_mpm/cli/commands/agent_state_manager.py +125 -20
  21. claude_mpm/cli/commands/agents.py +684 -13
  22. claude_mpm/cli/commands/agents_cleanup.py +210 -0
  23. claude_mpm/cli/commands/agents_discover.py +338 -0
  24. claude_mpm/cli/commands/aggregate.py +1 -1
  25. claude_mpm/cli/commands/analyze.py +3 -3
  26. claude_mpm/cli/commands/auto_configure.py +2 -6
  27. claude_mpm/cli/commands/cleanup.py +1 -1
  28. claude_mpm/cli/commands/config.py +7 -4
  29. claude_mpm/cli/commands/configure.py +478 -44
  30. claude_mpm/cli/commands/configure_agent_display.py +4 -4
  31. claude_mpm/cli/commands/configure_navigation.py +63 -46
  32. claude_mpm/cli/commands/debug.py +12 -12
  33. claude_mpm/cli/commands/doctor.py +10 -2
  34. claude_mpm/cli/commands/hook_errors.py +277 -0
  35. claude_mpm/cli/commands/local_deploy.py +1 -4
  36. claude_mpm/cli/commands/mcp_install_commands.py +1 -1
  37. claude_mpm/cli/commands/mpm_init/core.py +50 -2
  38. claude_mpm/cli/commands/mpm_init/git_activity.py +10 -10
  39. claude_mpm/cli/commands/mpm_init/prompts.py +6 -6
  40. claude_mpm/cli/commands/run.py +124 -128
  41. claude_mpm/cli/commands/skill_source.py +694 -0
  42. claude_mpm/cli/commands/skills.py +435 -1
  43. claude_mpm/cli/executor.py +78 -3
  44. claude_mpm/cli/interactive/agent_wizard.py +919 -41
  45. claude_mpm/cli/parsers/agent_source_parser.py +171 -0
  46. claude_mpm/cli/parsers/agents_parser.py +173 -4
  47. claude_mpm/cli/parsers/base_parser.py +49 -0
  48. claude_mpm/cli/parsers/config_parser.py +96 -43
  49. claude_mpm/cli/parsers/skill_source_parser.py +169 -0
  50. claude_mpm/cli/parsers/skills_parser.py +138 -0
  51. claude_mpm/cli/parsers/source_parser.py +138 -0
  52. claude_mpm/cli/startup.py +499 -84
  53. claude_mpm/cli/startup_display.py +480 -0
  54. claude_mpm/cli/utils.py +1 -1
  55. claude_mpm/cli_module/commands.py +1 -1
  56. claude_mpm/commands/{mpm-auto-configure.md → mpm-agents-auto-configure.md} +9 -0
  57. claude_mpm/commands/mpm-agents-detect.md +9 -0
  58. claude_mpm/commands/{mpm-agents.md → mpm-agents-list.md} +9 -0
  59. claude_mpm/commands/mpm-agents-recommend.md +9 -0
  60. claude_mpm/commands/{mpm-config.md → mpm-config-view.md} +9 -0
  61. claude_mpm/commands/mpm-doctor.md +9 -0
  62. claude_mpm/commands/mpm-help.md +11 -2
  63. claude_mpm/commands/mpm-init.md +27 -2
  64. claude_mpm/commands/mpm-monitor.md +9 -0
  65. claude_mpm/commands/{mpm-resume.md → mpm-session-resume.md} +9 -0
  66. claude_mpm/commands/mpm-status.md +9 -0
  67. claude_mpm/commands/{mpm-organize.md → mpm-ticket-organize.md} +9 -0
  68. claude_mpm/commands/mpm-ticket-view.md +552 -0
  69. claude_mpm/commands/mpm-version.md +9 -0
  70. claude_mpm/commands/mpm.md +10 -0
  71. claude_mpm/config/agent_presets.py +258 -0
  72. claude_mpm/config/agent_sources.py +325 -0
  73. claude_mpm/config/skill_sources.py +590 -0
  74. claude_mpm/constants.py +12 -0
  75. claude_mpm/core/api_validator.py +1 -1
  76. claude_mpm/core/claude_runner.py +17 -10
  77. claude_mpm/core/config.py +24 -0
  78. claude_mpm/core/constants.py +1 -1
  79. claude_mpm/core/framework/__init__.py +3 -16
  80. claude_mpm/core/framework/loaders/instruction_loader.py +25 -5
  81. claude_mpm/core/framework/processors/metadata_processor.py +1 -1
  82. claude_mpm/core/hook_error_memory.py +381 -0
  83. claude_mpm/core/hook_manager.py +41 -2
  84. claude_mpm/core/interactive_session.py +112 -5
  85. claude_mpm/core/logger.py +3 -1
  86. claude_mpm/core/oneshot_session.py +94 -4
  87. claude_mpm/dashboard/static/css/activity.css +69 -69
  88. claude_mpm/dashboard/static/css/connection-status.css +10 -10
  89. claude_mpm/dashboard/static/css/dashboard.css +15 -15
  90. claude_mpm/dashboard/static/js/components/activity-tree.js +178 -178
  91. claude_mpm/dashboard/static/js/components/agent-hierarchy.js +101 -101
  92. claude_mpm/dashboard/static/js/components/agent-inference.js +31 -31
  93. claude_mpm/dashboard/static/js/components/build-tracker.js +59 -59
  94. claude_mpm/dashboard/static/js/components/code-simple.js +107 -107
  95. claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
  96. claude_mpm/dashboard/static/js/components/diff-viewer.js +113 -113
  97. claude_mpm/dashboard/static/js/components/event-viewer.js +12 -12
  98. claude_mpm/dashboard/static/js/components/file-change-tracker.js +57 -57
  99. claude_mpm/dashboard/static/js/components/file-change-viewer.js +74 -74
  100. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +6 -6
  101. claude_mpm/dashboard/static/js/components/file-viewer.js +42 -42
  102. claude_mpm/dashboard/static/js/components/module-viewer.js +27 -27
  103. claude_mpm/dashboard/static/js/components/session-manager.js +14 -14
  104. claude_mpm/dashboard/static/js/components/socket-manager.js +1 -1
  105. claude_mpm/dashboard/static/js/components/ui-state-manager.js +14 -14
  106. claude_mpm/dashboard/static/js/components/unified-data-viewer.js +110 -110
  107. claude_mpm/dashboard/static/js/components/working-directory.js +8 -8
  108. claude_mpm/dashboard/static/js/connection-manager.js +76 -76
  109. claude_mpm/dashboard/static/js/dashboard.js +76 -58
  110. claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
  111. claude_mpm/dashboard/static/js/socket-client.js +138 -121
  112. claude_mpm/dashboard/templates/code_simple.html +23 -23
  113. claude_mpm/dashboard/templates/index.html +18 -18
  114. claude_mpm/experimental/cli_enhancements.py +1 -5
  115. claude_mpm/hooks/claude_hooks/event_handlers.py +3 -1
  116. claude_mpm/hooks/claude_hooks/hook_handler.py +24 -7
  117. claude_mpm/hooks/claude_hooks/installer.py +45 -0
  118. claude_mpm/hooks/failure_learning/__init__.py +2 -8
  119. claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
  120. claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
  121. claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
  122. claude_mpm/hooks/kuzu_response_hook.py +1 -5
  123. claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
  124. claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
  125. claude_mpm/models/git_repository.py +198 -0
  126. claude_mpm/scripts/claude-hook-handler.sh +3 -3
  127. claude_mpm/scripts/start_activity_logging.py +3 -1
  128. claude_mpm/services/agents/agent_builder.py +45 -9
  129. claude_mpm/services/agents/agent_preset_service.py +238 -0
  130. claude_mpm/services/agents/agent_selection_service.py +484 -0
  131. claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
  132. claude_mpm/services/agents/deployment/agent_deployment.py +126 -2
  133. claude_mpm/services/agents/deployment/agent_discovery_service.py +105 -73
  134. claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
  135. claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
  136. claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
  137. claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
  138. claude_mpm/services/agents/deployment/agent_template_builder.py +236 -15
  139. claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
  140. claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
  141. claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
  142. claude_mpm/services/agents/deployment/multi_source_deployment_service.py +115 -15
  143. claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
  144. claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
  145. claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +363 -0
  146. claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
  147. claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
  148. claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
  149. claude_mpm/services/agents/git_source_manager.py +629 -0
  150. claude_mpm/services/agents/loading/framework_agent_loader.py +9 -12
  151. claude_mpm/services/agents/local_template_manager.py +50 -10
  152. claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
  153. claude_mpm/services/agents/sources/__init__.py +13 -0
  154. claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
  155. claude_mpm/services/agents/sources/git_source_sync_service.py +1055 -0
  156. claude_mpm/services/agents/startup_sync.py +239 -0
  157. claude_mpm/services/agents/toolchain_detector.py +474 -0
  158. claude_mpm/services/cli/session_pause_manager.py +1 -1
  159. claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
  160. claude_mpm/services/command_deployment_service.py +92 -1
  161. claude_mpm/services/core/interfaces/__init__.py +1 -3
  162. claude_mpm/services/core/interfaces/health.py +1 -4
  163. claude_mpm/services/core/models/__init__.py +2 -11
  164. claude_mpm/services/diagnostics/checks/__init__.py +4 -0
  165. claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
  166. claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
  167. claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
  168. claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
  169. claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
  170. claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
  171. claude_mpm/services/diagnostics/diagnostic_runner.py +9 -0
  172. claude_mpm/services/diagnostics/doctor_reporter.py +40 -10
  173. claude_mpm/services/event_bus/direct_relay.py +3 -3
  174. claude_mpm/services/event_bus/event_bus.py +36 -3
  175. claude_mpm/services/events/consumers/logging.py +1 -2
  176. claude_mpm/services/git/__init__.py +21 -0
  177. claude_mpm/services/git/git_operations_service.py +494 -0
  178. claude_mpm/services/github/__init__.py +21 -0
  179. claude_mpm/services/github/github_cli_service.py +397 -0
  180. claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
  181. claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
  182. claude_mpm/services/infrastructure/monitoring/resources.py +1 -1
  183. claude_mpm/services/instructions/__init__.py +9 -0
  184. claude_mpm/services/instructions/instruction_cache_service.py +374 -0
  185. claude_mpm/services/local_ops/__init__.py +3 -13
  186. claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
  187. claude_mpm/services/local_ops/health_manager.py +1 -4
  188. claude_mpm/services/local_ops/process_manager.py +1 -1
  189. claude_mpm/services/local_ops/resource_monitor.py +2 -2
  190. claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
  191. claude_mpm/services/mcp_gateway/server/mcp_gateway.py +1 -6
  192. claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -2
  193. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +1 -1
  194. claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
  195. claude_mpm/services/memory/optimizer.py +1 -1
  196. claude_mpm/services/model/model_router.py +8 -9
  197. claude_mpm/services/monitor/daemon.py +1 -1
  198. claude_mpm/services/monitor/server.py +2 -2
  199. claude_mpm/services/native_agent_converter.py +356 -0
  200. claude_mpm/services/port_manager.py +1 -1
  201. claude_mpm/services/pr/__init__.py +14 -0
  202. claude_mpm/services/pr/pr_template_service.py +329 -0
  203. claude_mpm/services/project/documentation_manager.py +2 -1
  204. claude_mpm/services/project/toolchain_analyzer.py +3 -1
  205. claude_mpm/services/runner_configuration_service.py +1 -0
  206. claude_mpm/services/self_upgrade_service.py +165 -7
  207. claude_mpm/services/skills/__init__.py +18 -0
  208. claude_mpm/services/skills/git_skill_source_manager.py +1169 -0
  209. claude_mpm/services/skills/skill_discovery_service.py +568 -0
  210. claude_mpm/services/skills_config.py +547 -0
  211. claude_mpm/services/skills_deployer.py +955 -0
  212. claude_mpm/services/socketio/handlers/connection.py +1 -1
  213. claude_mpm/services/socketio/handlers/git.py +2 -2
  214. claude_mpm/services/socketio/server/core.py +1 -4
  215. claude_mpm/services/socketio/server/main.py +1 -3
  216. claude_mpm/services/system_instructions_service.py +1 -3
  217. claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
  218. claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
  219. claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +1 -1
  220. claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
  221. claude_mpm/services/unified/unified_deployment.py +1 -5
  222. claude_mpm/services/version_control/conflict_resolution.py +6 -4
  223. claude_mpm/services/visualization/__init__.py +1 -5
  224. claude_mpm/services/visualization/mermaid_generator.py +2 -3
  225. claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
  226. claude_mpm/skills/bundled/performance-profiling.md +6 -0
  227. claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +2 -2
  228. claude_mpm/skills/skills_registry.py +0 -1
  229. claude_mpm/templates/questions/__init__.py +38 -0
  230. claude_mpm/templates/questions/base.py +193 -0
  231. claude_mpm/templates/questions/pr_strategy.py +311 -0
  232. claude_mpm/templates/questions/project_init.py +385 -0
  233. claude_mpm/templates/questions/ticket_mgmt.py +394 -0
  234. claude_mpm/tools/__main__.py +8 -8
  235. claude_mpm/tools/code_tree_analyzer/analysis.py +1 -1
  236. claude_mpm/utils/agent_dependency_loader.py +80 -13
  237. claude_mpm/utils/dependency_cache.py +3 -1
  238. claude_mpm/utils/gitignore.py +241 -0
  239. claude_mpm/utils/log_cleanup.py +3 -3
  240. claude_mpm/utils/progress.py +383 -0
  241. claude_mpm/utils/robust_installer.py +3 -5
  242. claude_mpm/utils/structured_questions.py +619 -0
  243. {claude_mpm-4.21.3.dist-info → claude_mpm-5.0.2.dist-info}/METADATA +429 -59
  244. {claude_mpm-4.21.3.dist-info → claude_mpm-5.0.2.dist-info}/RECORD +252 -425
  245. claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
  246. claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
  247. claude_mpm/agents/templates/agent-manager.json +0 -273
  248. claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
  249. claude_mpm/agents/templates/api_qa.json +0 -180
  250. claude_mpm/agents/templates/clerk-ops.json +0 -235
  251. claude_mpm/agents/templates/code_analyzer.json +0 -101
  252. claude_mpm/agents/templates/content-agent.json +0 -358
  253. claude_mpm/agents/templates/dart_engineer.json +0 -307
  254. claude_mpm/agents/templates/data_engineer.json +0 -225
  255. claude_mpm/agents/templates/documentation.json +0 -211
  256. claude_mpm/agents/templates/engineer.json +0 -210
  257. claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
  258. claude_mpm/agents/templates/golang_engineer.json +0 -270
  259. claude_mpm/agents/templates/imagemagick.json +0 -264
  260. claude_mpm/agents/templates/java_engineer.json +0 -346
  261. claude_mpm/agents/templates/local_ops_agent.json +0 -1840
  262. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
  263. claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
  264. claude_mpm/agents/templates/memory_manager.json +0 -158
  265. claude_mpm/agents/templates/nextjs_engineer.json +0 -285
  266. claude_mpm/agents/templates/ops.json +0 -185
  267. claude_mpm/agents/templates/php-engineer.json +0 -287
  268. claude_mpm/agents/templates/product_owner.json +0 -338
  269. claude_mpm/agents/templates/project_organizer.json +0 -140
  270. claude_mpm/agents/templates/prompt-engineer.json +0 -737
  271. claude_mpm/agents/templates/python_engineer.json +0 -387
  272. claude_mpm/agents/templates/qa.json +0 -242
  273. claude_mpm/agents/templates/react_engineer.json +0 -238
  274. claude_mpm/agents/templates/refactoring_engineer.json +0 -276
  275. claude_mpm/agents/templates/research.json +0 -188
  276. claude_mpm/agents/templates/ruby-engineer.json +0 -280
  277. claude_mpm/agents/templates/rust_engineer.json +0 -275
  278. claude_mpm/agents/templates/security.json +0 -202
  279. claude_mpm/agents/templates/svelte-engineer.json +0 -225
  280. claude_mpm/agents/templates/ticketing.json +0 -177
  281. claude_mpm/agents/templates/typescript_engineer.json +0 -285
  282. claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
  283. claude_mpm/agents/templates/version_control.json +0 -157
  284. claude_mpm/agents/templates/web_qa.json +0 -399
  285. claude_mpm/agents/templates/web_ui.json +0 -189
  286. claude_mpm/commands/mpm-tickets.md +0 -102
  287. claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
  288. claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
  289. claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
  290. claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
  291. claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
  292. claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
  293. claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
  294. claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
  295. claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
  296. claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
  297. claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
  298. claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
  299. claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
  300. claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
  301. claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
  302. claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
  303. claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
  304. claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
  305. claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
  306. claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
  307. claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +0 -1
  308. claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
  309. claude_mpm/dashboard/static/built/components/agent-hierarchy.js +0 -777
  310. claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
  311. claude_mpm/dashboard/static/built/components/build-tracker.js +0 -333
  312. claude_mpm/dashboard/static/built/components/code-simple.js +0 -857
  313. claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +0 -353
  314. claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +0 -235
  315. claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +0 -409
  316. claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +0 -435
  317. claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
  318. claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
  319. claude_mpm/dashboard/static/built/components/connection-debug.js +0 -654
  320. claude_mpm/dashboard/static/built/components/diff-viewer.js +0 -891
  321. claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
  322. claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
  323. claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
  324. claude_mpm/dashboard/static/built/components/file-change-tracker.js +0 -443
  325. claude_mpm/dashboard/static/built/components/file-change-viewer.js +0 -690
  326. claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
  327. claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
  328. claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
  329. claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
  330. claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
  331. claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
  332. claude_mpm/dashboard/static/built/components/nav-bar.js +0 -145
  333. claude_mpm/dashboard/static/built/components/page-structure.js +0 -429
  334. claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
  335. claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
  336. claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
  337. claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
  338. claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
  339. claude_mpm/dashboard/static/built/connection-manager.js +0 -536
  340. claude_mpm/dashboard/static/built/dashboard.js +0 -2
  341. claude_mpm/dashboard/static/built/extension-error-handler.js +0 -164
  342. claude_mpm/dashboard/static/built/react/events.js +0 -30
  343. claude_mpm/dashboard/static/built/shared/dom-helpers.js +0 -396
  344. claude_mpm/dashboard/static/built/shared/event-bus.js +0 -330
  345. claude_mpm/dashboard/static/built/shared/event-filter-service.js +0 -540
  346. claude_mpm/dashboard/static/built/shared/logger.js +0 -385
  347. claude_mpm/dashboard/static/built/shared/page-structure.js +0 -249
  348. claude_mpm/dashboard/static/built/shared/tooltip-service.js +0 -253
  349. claude_mpm/dashboard/static/built/socket-client.js +0 -2
  350. claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
  351. claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
  352. claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
  353. claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
  354. claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
  355. claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
  356. claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
  357. claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
  358. claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
  359. claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
  360. claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
  361. claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
  362. claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
  363. claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
  364. claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
  365. claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
  366. claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
  367. claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
  368. claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
  369. claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
  370. claude_mpm/dashboard/static/dist/dashboard.js +0 -2
  371. claude_mpm/dashboard/static/dist/react/events.js +0 -30
  372. claude_mpm/dashboard/static/dist/socket-client.js +0 -2
  373. claude_mpm/dashboard/static/events.html +0 -607
  374. claude_mpm/dashboard/static/index.html +0 -635
  375. claude_mpm/dashboard/static/js/shared/dom-helpers.js +0 -396
  376. claude_mpm/dashboard/static/js/shared/event-bus.js +0 -330
  377. claude_mpm/dashboard/static/js/shared/logger.js +0 -385
  378. claude_mpm/dashboard/static/js/shared/tooltip-service.js +0 -253
  379. claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
  380. claude_mpm/dashboard/static/legacy/activity.html +0 -736
  381. claude_mpm/dashboard/static/legacy/agents.html +0 -786
  382. claude_mpm/dashboard/static/legacy/files.html +0 -747
  383. claude_mpm/dashboard/static/legacy/tools.html +0 -831
  384. claude_mpm/dashboard/static/monitors.html +0 -431
  385. claude_mpm/dashboard/static/production/events.html +0 -659
  386. claude_mpm/dashboard/static/production/main.html +0 -698
  387. claude_mpm/dashboard/static/production/monitors.html +0 -483
  388. claude_mpm/dashboard/static/test-archive/dashboard.html +0 -635
  389. claude_mpm/dashboard/static/test-archive/debug-events.html +0 -147
  390. claude_mpm/dashboard/static/test-archive/test-navigation.html +0 -256
  391. claude_mpm/dashboard/static/test-archive/test-react-exports.html +0 -180
  392. claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
  393. claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -79
  394. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -178
  395. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +0 -577
  396. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +0 -467
  397. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +0 -537
  398. claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +0 -730
  399. claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -112
  400. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +0 -146
  401. claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +0 -412
  402. claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -81
  403. claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +0 -362
  404. claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +0 -312
  405. claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -152
  406. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +0 -668
  407. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +0 -587
  408. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +0 -438
  409. claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +0 -391
  410. claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
  411. claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
  412. claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
  413. claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
  414. claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
  415. claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
  416. claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
  417. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
  418. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
  419. claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
  420. claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -131
  421. claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -325
  422. claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +0 -490
  423. claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +0 -425
  424. claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -499
  425. claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -86
  426. claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -43
  427. claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
  428. claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
  429. claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
  430. claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
  431. claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -160
  432. claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +0 -412
  433. claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
  434. claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
  435. claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
  436. claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
  437. claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +0 -1237
  438. claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -189
  439. claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +0 -500
  440. claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +0 -464
  441. claude_mpm/skills/bundled/main/skill-creator/references/examples.md +0 -619
  442. claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +0 -437
  443. claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +0 -231
  444. claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +0 -170
  445. claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +0 -602
  446. claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +0 -821
  447. claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +0 -742
  448. claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +0 -726
  449. claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +0 -764
  450. claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +0 -831
  451. claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +0 -226
  452. claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +0 -901
  453. claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +0 -901
  454. claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +0 -775
  455. claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +0 -937
  456. claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +0 -770
  457. claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +0 -961
  458. claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -119
  459. claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +0 -253
  460. claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
  461. claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
  462. claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
  463. claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
  464. claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
  465. claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
  466. claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -140
  467. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +0 -572
  468. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +0 -411
  469. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +0 -569
  470. claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +0 -695
  471. claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -184
  472. claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +0 -459
  473. claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +0 -479
  474. claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +0 -687
  475. claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +0 -758
  476. claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +0 -868
  477. /claude_mpm/agents/templates/{git_file_tracking.md → git-file-tracking.md} +0 -0
  478. /claude_mpm/agents/templates/{pm_examples.md → pm-examples.md} +0 -0
  479. /claude_mpm/agents/templates/{response_format.md → response-format.md} +0 -0
  480. /claude_mpm/agents/templates/{validation_templates.md → validation-templates.md} +0 -0
  481. {claude_mpm-4.21.3.dist-info → claude_mpm-5.0.2.dist-info}/WHEEL +0 -0
  482. {claude_mpm-4.21.3.dist-info → claude_mpm-5.0.2.dist-info}/entry_points.txt +0 -0
  483. {claude_mpm-4.21.3.dist-info → claude_mpm-5.0.2.dist-info}/licenses/LICENSE +0 -0
  484. {claude_mpm-4.21.3.dist-info → claude_mpm-5.0.2.dist-info}/top_level.txt +0 -0
@@ -85,8 +85,8 @@ class InteractiveSession:
85
85
  self.logger.warning(f"WebSocket initialization failed: {error}")
86
86
  # Continue without WebSocket - not a fatal error
87
87
 
88
- # Display welcome message
89
- self._display_welcome_message()
88
+ # Banner now displayed in CLI startup - see startup_display.py
89
+ # Removed duplicate _display_welcome_message() to consolidate with main banner
90
90
 
91
91
  # Log session start
92
92
  if self.runner.project_logger:
@@ -293,7 +293,12 @@ class InteractiveSession:
293
293
  return False, f"Unexpected error with Socket.IO: {e}"
294
294
 
295
295
  def _display_welcome_message(self) -> None:
296
- """Display the interactive session welcome message."""
296
+ """Display the interactive session welcome message.
297
+
298
+ DEPRECATED: This method is kept for backward compatibility with tests.
299
+ The main banner is now displayed in startup_display.py during CLI startup.
300
+ This consolidated approach prevents duplicate banners.
301
+ """
297
302
  version_str = self.runner._get_version()
298
303
 
299
304
  # Get output style status
@@ -383,12 +388,82 @@ class InteractiveSession:
383
388
  self.logger.debug(f"Raw claude_args received: {self.runner.claude_args}")
384
389
  cmd.extend(self.runner.claude_args)
385
390
 
386
- # Add system instructions
391
+ # Add --agents flag if native agents mode is enabled
392
+ if getattr(self.runner, "use_native_agents", False):
393
+ agents_flag = self._build_agents_flag()
394
+ if agents_flag:
395
+ # Add --agents JSON directly (already properly formatted)
396
+ cmd.extend(agents_flag)
397
+ self.logger.info("✓ Native agents mode: Using --agents CLI flag")
398
+
399
+ # Add system instructions with file-based caching
387
400
  from claude_mpm.core.claude_runner import create_simple_context
401
+ from claude_mpm.services.instructions.instruction_cache_service import (
402
+ InstructionCacheService,
403
+ )
388
404
 
389
405
  system_prompt = self.runner._create_system_prompt()
390
406
  if system_prompt and system_prompt != create_simple_context():
391
- cmd.extend(["--append-system-prompt", system_prompt])
407
+ # Try to use cached instruction file for better performance
408
+ try:
409
+ # Initialize cache service with project root
410
+ if "CLAUDE_MPM_USER_PWD" in os.environ:
411
+ project_root = Path(os.environ["CLAUDE_MPM_USER_PWD"])
412
+ else:
413
+ project_root = Path.cwd()
414
+
415
+ # Instruction Caching (1M-446)
416
+ # Cache assembled instructions to file to avoid ARG_MAX limits on Linux/Windows.
417
+ # - Linux: 128 KB limit, instructions are ~152 KB (exceeds by 19.1%)
418
+ # - Windows: 32 KB limit (exceeds by 476%)
419
+ # Cache updates only when content hash changes (hash-based invalidation).
420
+ # Fallback to inline instruction if cache fails (graceful degradation).
421
+ cache_service = InstructionCacheService(project_root=project_root)
422
+
423
+ # Update cache with assembled instruction content
424
+ cache_result = cache_service.update_cache(
425
+ instruction_content=system_prompt
426
+ )
427
+
428
+ # Use cache file if available
429
+ if (
430
+ cache_result.get("updated")
431
+ or cache_service.get_cache_path().exists()
432
+ ):
433
+ cache_file = cache_service.get_cache_path()
434
+
435
+ # Log cache operation
436
+ if cache_result.get("updated"):
437
+ self.logger.info(
438
+ f"Instruction cache updated: {cache_result.get('reason', 'unknown')}"
439
+ )
440
+ self.logger.debug(
441
+ f"Cache hash: {cache_result.get('content_hash', 'N/A')[:8]}..."
442
+ )
443
+ self.logger.debug(
444
+ f"Cache size: {cache_result.get('content_size_kb', 'N/A')} KB"
445
+ )
446
+ else:
447
+ self.logger.debug(
448
+ f"Using cached instructions: {cache_result.get('reason', 'unknown')}"
449
+ )
450
+
451
+ # Use file-based loading for better performance
452
+ cmd.extend(["--system-prompt-file", str(cache_file)])
453
+ self.logger.info(
454
+ f"✓ Using file-based instruction loading: {cache_file}"
455
+ )
456
+ else:
457
+ # Fallback to inline if cache file doesn't exist
458
+ self.logger.warning(
459
+ "Cache file not available, falling back to inline instruction"
460
+ )
461
+ cmd.extend(["--append-system-prompt", system_prompt])
462
+
463
+ except Exception as e:
464
+ # Graceful fallback - cache failures don't break deployment
465
+ self.logger.warning(f"Failed to cache instructions, using inline: {e}")
466
+ cmd.extend(["--append-system-prompt", system_prompt])
392
467
 
393
468
  # Final command verification
394
469
  # self.logger.info(f"Final Claude command built: {' '.join(cmd)}")
@@ -402,6 +477,38 @@ class InteractiveSession:
402
477
 
403
478
  return cmd
404
479
 
480
+ def _build_agents_flag(self) -> Optional[list]:
481
+ """Build --agents flag with all MPM agents.
482
+
483
+ Returns:
484
+ List with ["--agents", "<json>"] or None if conversion fails
485
+ """
486
+ try:
487
+ from claude_mpm.services.native_agent_converter import NativeAgentConverter
488
+
489
+ converter = NativeAgentConverter()
490
+ agents = converter.load_agents_from_templates()
491
+
492
+ if not agents:
493
+ self.logger.warning("No agents loaded for native mode")
494
+ return None
495
+
496
+ # Generate JSON for --agents flag
497
+ agents_json = converter.generate_agents_json(agents)
498
+ summary = converter.get_conversion_summary(agents)
499
+
500
+ self.logger.info(
501
+ f"Native agents: {summary['total_agents']} agents, "
502
+ f"{summary['json_size_kb']} KB JSON"
503
+ )
504
+
505
+ # Return as list: ["--agents", "<json>"]
506
+ return ["--agents", agents_json]
507
+
508
+ except Exception as e:
509
+ self.logger.error(f"Failed to build --agents flag: {e}", exc_info=True)
510
+ return None
511
+
405
512
  def _prepare_environment(self) -> dict:
406
513
  """Prepare clean environment variables for Claude."""
407
514
  clean_env = os.environ.copy()
claude_mpm/core/logger.py CHANGED
@@ -225,7 +225,9 @@ def setup_logging(
225
225
 
226
226
  # Use rotating file handler
227
227
  file_handler = logging.handlers.RotatingFileHandler(
228
- log_file, maxBytes=10 * 1024 * 1024, backupCount=5 # 10 MB
228
+ log_file,
229
+ maxBytes=10 * 1024 * 1024,
230
+ backupCount=5, # 10 MB
229
231
  )
230
232
  else:
231
233
  # Use default log directory
@@ -7,6 +7,7 @@ breaking down the monolithic run_oneshot method into focused, testable component
7
7
  import contextlib
8
8
  import os
9
9
  import subprocess
10
+ import tempfile
10
11
  import time
11
12
  import uuid
12
13
  from pathlib import Path
@@ -37,6 +38,7 @@ class OneshotSession:
37
38
  self.start_time = None
38
39
  self.session_id = None
39
40
  self.original_cwd = None
41
+ self.temp_system_prompt_file = None
40
42
 
41
43
  def initialize_session(self, prompt: str) -> Tuple[bool, Optional[str]]:
42
44
  """Initialize the oneshot session.
@@ -134,7 +136,13 @@ class OneshotSession:
134
136
  def _build_final_command(
135
137
  self, prompt: str, context: Optional[str], infrastructure: Dict[str, Any]
136
138
  ) -> list:
137
- """Build the final command with prompt and system instructions."""
139
+ """Build the final command with prompt and system instructions.
140
+
141
+ Uses file-based caching to avoid Linux ARG_MAX limits:
142
+ - Linux MAX_ARG_STRLEN: 128 KB per argument
143
+ - System prompt size: ~138.7 KB (exceeds limit by 7.7 KB)
144
+ - Solution: Write to temp file, pass file path (~60 bytes)
145
+ """
138
146
  full_prompt = f"{context}\n\n{prompt}" if context else prompt
139
147
  cmd = infrastructure["cmd"] + ["--print", full_prompt]
140
148
 
@@ -148,9 +156,38 @@ class OneshotSession:
148
156
  self.logger.warning("System prompt contains Python code references!")
149
157
 
150
158
  if system_prompt and system_prompt != self._get_simple_context():
151
- # The problem might be with insert positioning
152
- # Let's add system prompt differently
153
- cmd.extend(["--append-system-prompt", system_prompt])
159
+ # Use file-based loading to avoid ARG_MAX limits (1M-485)
160
+ # Create temp file for system prompt
161
+ try:
162
+ # Create temp file in system temp directory
163
+ temp_fd, temp_path = tempfile.mkstemp(
164
+ suffix=".md", prefix="claude_mpm_system_prompt_"
165
+ )
166
+
167
+ # Write system prompt to temp file
168
+ with os.fdopen(temp_fd, "w", encoding="utf-8") as f:
169
+ f.write(system_prompt)
170
+
171
+ # Store temp file path for cleanup
172
+ self.temp_system_prompt_file = temp_path
173
+
174
+ # Use --system-prompt-file flag (matches interactive mode pattern)
175
+ cmd.extend(["--system-prompt-file", temp_path])
176
+
177
+ # User-visible notification
178
+ print(f"📄 Reading system prompt from: {temp_path}")
179
+
180
+ self.logger.info(
181
+ f"Using file-based system prompt loading: {temp_path} "
182
+ f"({len(system_prompt) / 1024:.1f} KB)"
183
+ )
184
+
185
+ except Exception as e:
186
+ # Fallback to inline if file creation fails
187
+ self.logger.warning(
188
+ f"Failed to create temp file for system prompt, using inline: {e}"
189
+ )
190
+ cmd.extend(["--append-system-prompt", system_prompt])
154
191
 
155
192
  return cmd
156
193
 
@@ -203,6 +240,20 @@ class OneshotSession:
203
240
 
204
241
  def cleanup_session(self) -> None:
205
242
  """Clean up the session and restore state."""
243
+ # Clean up temp system prompt file
244
+ if self.temp_system_prompt_file:
245
+ try:
246
+ temp_file_path = Path(self.temp_system_prompt_file)
247
+ if temp_file_path.exists():
248
+ temp_file_path.unlink()
249
+ self.logger.debug(
250
+ f"Cleaned up temp system prompt file: {self.temp_system_prompt_file}"
251
+ )
252
+ except Exception as e:
253
+ self.logger.warning(f"Failed to clean up temp system prompt file: {e}")
254
+ finally:
255
+ self.temp_system_prompt_file = None
256
+
206
257
  # Restore original working directory
207
258
  if self.original_cwd:
208
259
  with contextlib.suppress(Exception):
@@ -268,8 +319,47 @@ class OneshotSession:
268
319
  if self.runner.claude_args:
269
320
  cmd.extend(self.runner.claude_args)
270
321
 
322
+ # Add --agents flag if native agents mode is enabled
323
+ if getattr(self.runner, "use_native_agents", False):
324
+ agents_flag = self._build_agents_flag()
325
+ if agents_flag:
326
+ cmd.extend(agents_flag)
327
+ self.logger.info("✓ Native agents mode: Using --agents CLI flag")
328
+
271
329
  return cmd
272
330
 
331
+ def _build_agents_flag(self) -> Optional[list]:
332
+ """Build --agents flag with all MPM agents.
333
+
334
+ Returns:
335
+ List with ["--agents", "<json>"] or None if conversion fails
336
+ """
337
+ try:
338
+ from claude_mpm.services.native_agent_converter import NativeAgentConverter
339
+
340
+ converter = NativeAgentConverter()
341
+ agents = converter.load_agents_from_templates()
342
+
343
+ if not agents:
344
+ self.logger.warning("No agents loaded for native mode")
345
+ return None
346
+
347
+ # Generate JSON for --agents flag
348
+ agents_json = converter.generate_agents_json(agents)
349
+ summary = converter.get_conversion_summary(agents)
350
+
351
+ self.logger.info(
352
+ f"Native agents: {summary['total_agents']} agents, "
353
+ f"{summary['json_size_kb']} KB JSON"
354
+ )
355
+
356
+ # Return as list: ["--agents", "<json>"]
357
+ return ["--agents", agents_json]
358
+
359
+ except Exception as e:
360
+ self.logger.error(f"Failed to build --agents flag: {e}", exc_info=True)
361
+ return None
362
+
273
363
  def _handle_successful_response(self, response: str, prompt: str) -> None:
274
364
  """Process a successful Claude response."""
275
365
  print(response)
@@ -607,13 +607,13 @@ body .activity-tree-container .linear-tree .tree-node.tool.privileged-tool .tree
607
607
  }
608
608
 
609
609
  @keyframes pulse-todo {
610
- 0% {
610
+ 0% {
611
611
  background: #ebf8ff;
612
612
  }
613
- 50% {
613
+ 50% {
614
614
  background: #bee3f8;
615
615
  }
616
- 100% {
616
+ 100% {
617
617
  background: #ebf8ff;
618
618
  }
619
619
  }
@@ -648,14 +648,14 @@ body .activity-tree-container .linear-tree .tree-node.tool.privileged-tool .tree
648
648
 
649
649
  /* Status Animation */
650
650
  @keyframes pulse-status {
651
- 0% {
652
- opacity: 1;
651
+ 0% {
652
+ opacity: 1;
653
653
  }
654
- 50% {
655
- opacity: 0.7;
654
+ 50% {
655
+ opacity: 0.7;
656
656
  }
657
- 100% {
658
- opacity: 1;
657
+ 100% {
658
+ opacity: 1;
659
659
  }
660
660
  }
661
661
 
@@ -1059,23 +1059,23 @@ body .activity-tree-container .linear-tree .tree-node.tool.privileged-tool .tree
1059
1059
  flex-direction: column;
1060
1060
  gap: 15px;
1061
1061
  }
1062
-
1062
+
1063
1063
  .activity-controls {
1064
1064
  width: 100%;
1065
1065
  flex-wrap: wrap;
1066
1066
  justify-content: center;
1067
1067
  }
1068
-
1068
+
1069
1069
  .tree-legend {
1070
1070
  position: static;
1071
1071
  margin-top: 15px;
1072
1072
  max-width: 300px;
1073
1073
  }
1074
-
1074
+
1075
1075
  .tree-params {
1076
1076
  max-width: 150px;
1077
1077
  }
1078
-
1078
+
1079
1079
  .activity-controls input {
1080
1080
  width: 150px;
1081
1081
  }
@@ -1085,35 +1085,35 @@ body .activity-tree-container .linear-tree .tree-node.tool.privileged-tool .tree
1085
1085
  .activity-container {
1086
1086
  padding: 10px;
1087
1087
  }
1088
-
1088
+
1089
1089
  .activity-tree-container {
1090
1090
  padding: 0;
1091
1091
  }
1092
-
1092
+
1093
1093
  .linear-tree {
1094
1094
  padding: 10px;
1095
1095
  }
1096
-
1096
+
1097
1097
  .tree-node[data-level="1"] {
1098
1098
  margin-left: 15px;
1099
1099
  }
1100
-
1100
+
1101
1101
  .tree-node[data-level="2"] {
1102
1102
  margin-left: 30px;
1103
1103
  }
1104
-
1104
+
1105
1105
  .tree-node[data-level="3"] {
1106
1106
  margin-left: 45px;
1107
1107
  }
1108
-
1108
+
1109
1109
  .tree-node[data-level="4"] {
1110
1110
  margin-left: 60px;
1111
1111
  }
1112
-
1112
+
1113
1113
  .tree-params {
1114
1114
  max-width: 100px;
1115
1115
  }
1116
-
1116
+
1117
1117
  .stat-item {
1118
1118
  flex-direction: column;
1119
1119
  gap: 2px;
@@ -1127,188 +1127,188 @@ body .activity-tree-container .linear-tree .tree-node.tool.privileged-tool .tree
1127
1127
  background: #1a202c;
1128
1128
  color: #e2e8f0;
1129
1129
  }
1130
-
1130
+
1131
1131
  /* D3 Dark Mode Styles */
1132
1132
  #activity-tree-svg {
1133
1133
  background: #1a202c;
1134
1134
  }
1135
-
1135
+
1136
1136
  .node-label {
1137
1137
  fill: #e2e8f0;
1138
1138
  }
1139
-
1139
+
1140
1140
  .node:hover .node-label {
1141
1141
  fill: #63b3ed;
1142
1142
  }
1143
-
1143
+
1144
1144
  .link {
1145
1145
  stroke: #4a5568;
1146
1146
  }
1147
-
1147
+
1148
1148
  .node:hover .link {
1149
1149
  stroke: #63b3ed;
1150
1150
  }
1151
-
1151
+
1152
1152
  .d3-tooltip {
1153
1153
  background: rgba(45, 55, 72, 0.95) !important;
1154
1154
  color: #e2e8f0 !important;
1155
1155
  border: 1px solid #4a5568;
1156
1156
  }
1157
-
1157
+
1158
1158
  .activity-header {
1159
1159
  background: #2d3748;
1160
1160
  }
1161
-
1161
+
1162
1162
  .activity-controls select,
1163
1163
  .activity-controls input {
1164
1164
  background: #2d3748;
1165
1165
  color: #e2e8f0;
1166
1166
  border-color: #4a5568;
1167
1167
  }
1168
-
1168
+
1169
1169
  .stat-label {
1170
1170
  color: #a0aec0;
1171
1171
  }
1172
-
1172
+
1173
1173
  .stat-value {
1174
1174
  color: #e2e8f0;
1175
1175
  }
1176
-
1176
+
1177
1177
  .tree-legend {
1178
1178
  background: rgba(45, 55, 72, 0.95);
1179
1179
  border-color: #4a5568;
1180
1180
  }
1181
-
1181
+
1182
1182
  .legend-item {
1183
1183
  color: #e2e8f0;
1184
1184
  }
1185
-
1185
+
1186
1186
  .tree-node:hover {
1187
1187
  background-color: #2d3748;
1188
1188
  }
1189
-
1189
+
1190
1190
  .tree-node-content:hover {
1191
1191
  background-color: #4a5568;
1192
1192
  }
1193
-
1193
+
1194
1194
  .tree-label {
1195
1195
  color: #e2e8f0;
1196
1196
  }
1197
-
1197
+
1198
1198
  .tree-meta {
1199
1199
  color: #a0aec0;
1200
1200
  }
1201
-
1201
+
1202
1202
  .tree-node.project-root {
1203
1203
  background: linear-gradient(135deg, #4299e1 0%, #553c9a 100%);
1204
1204
  }
1205
-
1205
+
1206
1206
  .tree-node.session {
1207
1207
  background: #2d3748;
1208
1208
  border-color: #4a5568;
1209
1209
  }
1210
-
1210
+
1211
1211
  .tree-node.session .tree-label {
1212
1212
  color: #e2e8f0;
1213
1213
  }
1214
-
1214
+
1215
1215
  .tree-children {
1216
1216
  border-left-color: #4a5568;
1217
1217
  }
1218
-
1218
+
1219
1219
  .tree-label.clickable:hover {
1220
1220
  background-color: rgba(74, 85, 104, 0.5);
1221
1221
  color: #e2e8f0;
1222
1222
  }
1223
-
1223
+
1224
1224
  .module-item-details {
1225
1225
  color: #e2e8f0;
1226
1226
  }
1227
-
1227
+
1228
1228
  .module-item-header {
1229
1229
  border-bottom-color: #4a5568;
1230
1230
  }
1231
-
1231
+
1232
1232
  .module-item-header h6 {
1233
1233
  color: #e2e8f0;
1234
1234
  }
1235
-
1235
+
1236
1236
  .detail-label {
1237
1237
  color: #a0aec0;
1238
1238
  }
1239
-
1239
+
1240
1240
  .detail-value {
1241
1241
  color: #e2e8f0;
1242
1242
  }
1243
-
1243
+
1244
1244
  .detail-section {
1245
1245
  border-top-color: #4a5568;
1246
1246
  }
1247
-
1247
+
1248
1248
  .detail-section-title {
1249
1249
  color: #a0aec0;
1250
1250
  }
1251
-
1251
+
1252
1252
  .tools-list, .params-list {
1253
1253
  background: #2d3748;
1254
1254
  border-color: #4a5568;
1255
1255
  }
1256
-
1256
+
1257
1257
  .tool-summary {
1258
1258
  background: #4a5568;
1259
1259
  border-color: #718096;
1260
1260
  color: #e2e8f0;
1261
1261
  }
1262
-
1262
+
1263
1263
  .tool-params-expanded {
1264
1264
  background: #2d3748;
1265
1265
  border-color: #4a5568;
1266
1266
  color: #e2e8f0;
1267
1267
  }
1268
-
1268
+
1269
1269
  .param-line .param-key,
1270
1270
  .param-key {
1271
1271
  color: #9f7aea;
1272
1272
  }
1273
-
1273
+
1274
1274
  .param-line .param-value,
1275
1275
  .param-value {
1276
1276
  color: #e2e8f0;
1277
1277
  }
1278
-
1278
+
1279
1279
  .param-item {
1280
1280
  border-bottom-color: #4a5568;
1281
1281
  }
1282
-
1282
+
1283
1283
  .param-text-short {
1284
1284
  background: #2d3748;
1285
1285
  border-color: #4a5568;
1286
1286
  color: #e2e8f0;
1287
1287
  }
1288
-
1288
+
1289
1289
  .param-text,
1290
1290
  .param-text-long {
1291
1291
  background: #2d3748;
1292
1292
  border-color: #4a5568;
1293
1293
  color: #e2e8f0;
1294
1294
  }
1295
-
1295
+
1296
1296
  .param-json {
1297
1297
  background: #1a202c;
1298
1298
  border-color: #4a5568;
1299
1299
  color: #e2e8f0;
1300
1300
  }
1301
-
1301
+
1302
1302
  .param-primitive {
1303
1303
  background: #4a5568;
1304
1304
  color: #e2e8f0;
1305
1305
  }
1306
-
1306
+
1307
1307
  .param-error {
1308
1308
  background: #742a2a;
1309
1309
  color: #feb2b2;
1310
1310
  }
1311
-
1311
+
1312
1312
  .tool-result {
1313
1313
  background: #1a202c;
1314
1314
  border-color: #4a5568;
@@ -1548,20 +1548,20 @@ body .activity-tree-container .linear-tree .tree-node.tool.privileged-tool .tree
1548
1548
  flex-direction: column;
1549
1549
  gap: 8px;
1550
1550
  }
1551
-
1551
+
1552
1552
  .summary-item {
1553
1553
  min-width: auto;
1554
1554
  }
1555
-
1555
+
1556
1556
  .todo-checklist-item {
1557
1557
  padding: 6px;
1558
1558
  }
1559
-
1559
+
1560
1560
  .todo-checkbox {
1561
1561
  width: 20px;
1562
1562
  height: 20px;
1563
1563
  }
1564
-
1564
+
1565
1565
  .checkbox-icon {
1566
1566
  font-size: 12px;
1567
1567
  }
@@ -1572,21 +1572,21 @@ body .activity-tree-container .linear-tree .tree-node.tool.privileged-tool .tree
1572
1572
  .activity-header {
1573
1573
  display: none;
1574
1574
  }
1575
-
1575
+
1576
1576
  .tree-legend {
1577
1577
  position: static;
1578
1578
  margin-bottom: 20px;
1579
1579
  }
1580
-
1580
+
1581
1581
  .activity-tree-container {
1582
1582
  box-shadow: none;
1583
1583
  border: 1px solid #000;
1584
1584
  }
1585
-
1585
+
1586
1586
  .tree-node {
1587
1587
  break-inside: avoid;
1588
1588
  }
1589
-
1589
+
1590
1590
  .tree-status {
1591
1591
  border: 1px solid #000;
1592
1592
  background: transparent !important;