claude-mpm 4.21.0__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.
- claude_mpm/VERSION +1 -1
- claude_mpm/agents/BASE_PM.md +12 -0
- claude_mpm/agents/OUTPUT_STYLE.md +3 -48
- claude_mpm/agents/PM_INSTRUCTIONS.md +632 -334
- claude_mpm/agents/WORKFLOW.md +75 -2
- claude_mpm/agents/__init__.py +6 -0
- claude_mpm/agents/agent_loader.py +1 -4
- claude_mpm/agents/base_agent.json +6 -3
- claude_mpm/agents/frontmatter_validator.py +1 -1
- claude_mpm/agents/templates/{circuit_breakers.md → circuit-breakers.md} +370 -3
- claude_mpm/agents/templates/context-management-examples.md +544 -0
- claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +89 -19
- claude_mpm/agents/templates/pr-workflow-examples.md +427 -0
- claude_mpm/agents/templates/research-gate-examples.md +669 -0
- claude_mpm/agents/templates/structured-questions-examples.md +615 -0
- claude_mpm/agents/templates/ticket-completeness-examples.md +139 -0
- claude_mpm/agents/templates/ticketing-examples.md +277 -0
- claude_mpm/cli/__init__.py +38 -2
- claude_mpm/cli/commands/agent_source.py +774 -0
- claude_mpm/cli/commands/agent_state_manager.py +125 -20
- claude_mpm/cli/commands/agents.py +684 -13
- claude_mpm/cli/commands/agents_cleanup.py +210 -0
- claude_mpm/cli/commands/agents_discover.py +338 -0
- claude_mpm/cli/commands/aggregate.py +1 -1
- claude_mpm/cli/commands/analyze.py +3 -3
- claude_mpm/cli/commands/auto_configure.py +2 -6
- claude_mpm/cli/commands/cleanup.py +1 -1
- claude_mpm/cli/commands/config.py +7 -4
- claude_mpm/cli/commands/configure.py +478 -44
- claude_mpm/cli/commands/configure_agent_display.py +4 -4
- claude_mpm/cli/commands/configure_navigation.py +63 -46
- claude_mpm/cli/commands/debug.py +12 -12
- claude_mpm/cli/commands/doctor.py +10 -2
- claude_mpm/cli/commands/hook_errors.py +277 -0
- claude_mpm/cli/commands/local_deploy.py +1 -4
- claude_mpm/cli/commands/mcp_install_commands.py +1 -1
- claude_mpm/cli/commands/mpm_init/core.py +50 -2
- claude_mpm/cli/commands/mpm_init/git_activity.py +10 -10
- claude_mpm/cli/commands/mpm_init/prompts.py +6 -6
- claude_mpm/cli/commands/run.py +124 -128
- claude_mpm/cli/commands/skill_source.py +694 -0
- claude_mpm/cli/commands/skills.py +435 -1
- claude_mpm/cli/executor.py +78 -3
- claude_mpm/cli/interactive/agent_wizard.py +919 -41
- claude_mpm/cli/parsers/agent_source_parser.py +171 -0
- claude_mpm/cli/parsers/agents_parser.py +173 -4
- claude_mpm/cli/parsers/base_parser.py +49 -0
- claude_mpm/cli/parsers/config_parser.py +96 -43
- claude_mpm/cli/parsers/skill_source_parser.py +169 -0
- claude_mpm/cli/parsers/skills_parser.py +138 -0
- claude_mpm/cli/parsers/source_parser.py +138 -0
- claude_mpm/cli/startup.py +499 -84
- claude_mpm/cli/startup_display.py +480 -0
- claude_mpm/cli/utils.py +1 -1
- claude_mpm/cli_module/commands.py +1 -1
- claude_mpm/commands/{mpm-auto-configure.md → mpm-agents-auto-configure.md} +9 -0
- claude_mpm/commands/mpm-agents-detect.md +9 -0
- claude_mpm/commands/{mpm-agents.md → mpm-agents-list.md} +9 -0
- claude_mpm/commands/mpm-agents-recommend.md +9 -0
- claude_mpm/commands/{mpm-config.md → mpm-config-view.md} +9 -0
- claude_mpm/commands/mpm-doctor.md +9 -0
- claude_mpm/commands/mpm-help.md +14 -2
- claude_mpm/commands/mpm-init.md +27 -2
- claude_mpm/commands/mpm-monitor.md +9 -0
- claude_mpm/commands/mpm-session-resume.md +381 -0
- claude_mpm/commands/mpm-status.md +9 -0
- claude_mpm/commands/{mpm-organize.md → mpm-ticket-organize.md} +9 -0
- claude_mpm/commands/mpm-ticket-view.md +552 -0
- claude_mpm/commands/mpm-version.md +9 -0
- claude_mpm/commands/mpm.md +11 -0
- claude_mpm/config/agent_presets.py +258 -0
- claude_mpm/config/agent_sources.py +325 -0
- claude_mpm/config/skill_sources.py +590 -0
- claude_mpm/constants.py +12 -0
- claude_mpm/core/api_validator.py +1 -1
- claude_mpm/core/claude_runner.py +17 -10
- claude_mpm/core/config.py +24 -0
- claude_mpm/core/constants.py +1 -1
- claude_mpm/core/framework/__init__.py +3 -16
- claude_mpm/core/framework/loaders/instruction_loader.py +25 -5
- claude_mpm/core/framework/processors/metadata_processor.py +1 -1
- claude_mpm/core/hook_error_memory.py +381 -0
- claude_mpm/core/hook_manager.py +41 -2
- claude_mpm/core/interactive_session.py +112 -5
- claude_mpm/core/logger.py +3 -1
- claude_mpm/core/oneshot_session.py +94 -4
- claude_mpm/dashboard/static/css/activity.css +69 -69
- claude_mpm/dashboard/static/css/connection-status.css +10 -10
- claude_mpm/dashboard/static/css/dashboard.css +15 -15
- claude_mpm/dashboard/static/js/components/activity-tree.js +178 -178
- claude_mpm/dashboard/static/js/components/agent-hierarchy.js +101 -101
- claude_mpm/dashboard/static/js/components/agent-inference.js +31 -31
- claude_mpm/dashboard/static/js/components/build-tracker.js +59 -59
- claude_mpm/dashboard/static/js/components/code-simple.js +107 -107
- claude_mpm/dashboard/static/js/components/connection-debug.js +101 -101
- claude_mpm/dashboard/static/js/components/diff-viewer.js +113 -113
- claude_mpm/dashboard/static/js/components/event-viewer.js +12 -12
- claude_mpm/dashboard/static/js/components/file-change-tracker.js +57 -57
- claude_mpm/dashboard/static/js/components/file-change-viewer.js +74 -74
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +6 -6
- claude_mpm/dashboard/static/js/components/file-viewer.js +42 -42
- claude_mpm/dashboard/static/js/components/module-viewer.js +27 -27
- claude_mpm/dashboard/static/js/components/session-manager.js +14 -14
- claude_mpm/dashboard/static/js/components/socket-manager.js +1 -1
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +14 -14
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +110 -110
- claude_mpm/dashboard/static/js/components/working-directory.js +8 -8
- claude_mpm/dashboard/static/js/connection-manager.js +76 -76
- claude_mpm/dashboard/static/js/dashboard.js +76 -58
- claude_mpm/dashboard/static/js/extension-error-handler.js +22 -22
- claude_mpm/dashboard/static/js/socket-client.js +138 -121
- claude_mpm/dashboard/templates/code_simple.html +23 -23
- claude_mpm/dashboard/templates/index.html +18 -18
- claude_mpm/experimental/cli_enhancements.py +1 -5
- claude_mpm/hooks/claude_hooks/event_handlers.py +3 -1
- claude_mpm/hooks/claude_hooks/hook_handler.py +24 -7
- claude_mpm/hooks/claude_hooks/installer.py +45 -0
- claude_mpm/hooks/failure_learning/__init__.py +2 -8
- claude_mpm/hooks/failure_learning/failure_detection_hook.py +1 -6
- claude_mpm/hooks/failure_learning/fix_detection_hook.py +1 -6
- claude_mpm/hooks/failure_learning/learning_extraction_hook.py +1 -6
- claude_mpm/hooks/kuzu_response_hook.py +1 -5
- claude_mpm/hooks/templates/pre_tool_use_simple.py +78 -0
- claude_mpm/hooks/templates/pre_tool_use_template.py +323 -0
- claude_mpm/models/git_repository.py +198 -0
- claude_mpm/scripts/claude-hook-handler.sh +3 -3
- claude_mpm/scripts/start_activity_logging.py +3 -1
- claude_mpm/services/agents/agent_builder.py +45 -9
- claude_mpm/services/agents/agent_preset_service.py +238 -0
- claude_mpm/services/agents/agent_selection_service.py +484 -0
- claude_mpm/services/agents/auto_deploy_index_parser.py +569 -0
- claude_mpm/services/agents/deployment/agent_deployment.py +126 -2
- claude_mpm/services/agents/deployment/agent_discovery_service.py +105 -73
- claude_mpm/services/agents/deployment/agent_format_converter.py +1 -1
- claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +1 -5
- claude_mpm/services/agents/deployment/agent_metrics_collector.py +3 -3
- claude_mpm/services/agents/deployment/agent_restore_handler.py +1 -4
- claude_mpm/services/agents/deployment/agent_template_builder.py +236 -15
- claude_mpm/services/agents/deployment/agents_directory_resolver.py +101 -15
- claude_mpm/services/agents/deployment/async_agent_deployment.py +2 -1
- claude_mpm/services/agents/deployment/facade/deployment_facade.py +3 -3
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +115 -15
- claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +2 -2
- claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +1 -4
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +363 -0
- claude_mpm/services/agents/deployment/single_agent_deployer.py +2 -2
- claude_mpm/services/agents/deployment/system_instructions_deployer.py +168 -46
- claude_mpm/services/agents/deployment/validation/deployment_validator.py +2 -2
- claude_mpm/services/agents/git_source_manager.py +629 -0
- claude_mpm/services/agents/loading/framework_agent_loader.py +9 -12
- claude_mpm/services/agents/local_template_manager.py +50 -10
- claude_mpm/services/agents/single_tier_deployment_service.py +696 -0
- claude_mpm/services/agents/sources/__init__.py +13 -0
- claude_mpm/services/agents/sources/agent_sync_state.py +516 -0
- claude_mpm/services/agents/sources/git_source_sync_service.py +1055 -0
- claude_mpm/services/agents/startup_sync.py +239 -0
- claude_mpm/services/agents/toolchain_detector.py +474 -0
- claude_mpm/services/cli/session_pause_manager.py +1 -1
- claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
- claude_mpm/services/command_deployment_service.py +92 -1
- claude_mpm/services/core/base.py +26 -11
- claude_mpm/services/core/interfaces/__init__.py +1 -3
- claude_mpm/services/core/interfaces/health.py +1 -4
- claude_mpm/services/core/models/__init__.py +2 -11
- claude_mpm/services/diagnostics/checks/__init__.py +4 -0
- claude_mpm/services/diagnostics/checks/agent_check.py +0 -2
- claude_mpm/services/diagnostics/checks/agent_sources_check.py +577 -0
- claude_mpm/services/diagnostics/checks/instructions_check.py +1 -2
- claude_mpm/services/diagnostics/checks/mcp_check.py +0 -1
- claude_mpm/services/diagnostics/checks/monitor_check.py +0 -1
- claude_mpm/services/diagnostics/checks/skill_sources_check.py +587 -0
- claude_mpm/services/diagnostics/diagnostic_runner.py +9 -0
- claude_mpm/services/diagnostics/doctor_reporter.py +40 -10
- claude_mpm/services/event_bus/direct_relay.py +3 -3
- claude_mpm/services/event_bus/event_bus.py +36 -3
- claude_mpm/services/event_bus/relay.py +23 -7
- claude_mpm/services/events/consumers/logging.py +1 -2
- claude_mpm/services/git/__init__.py +21 -0
- claude_mpm/services/git/git_operations_service.py +494 -0
- claude_mpm/services/github/__init__.py +21 -0
- claude_mpm/services/github/github_cli_service.py +397 -0
- claude_mpm/services/infrastructure/monitoring/__init__.py +1 -5
- claude_mpm/services/infrastructure/monitoring/aggregator.py +1 -6
- claude_mpm/services/infrastructure/monitoring/resources.py +1 -1
- claude_mpm/services/instructions/__init__.py +9 -0
- claude_mpm/services/instructions/instruction_cache_service.py +374 -0
- claude_mpm/services/local_ops/__init__.py +3 -13
- claude_mpm/services/local_ops/health_checks/__init__.py +1 -3
- claude_mpm/services/local_ops/health_manager.py +1 -4
- claude_mpm/services/local_ops/process_manager.py +1 -1
- claude_mpm/services/local_ops/resource_monitor.py +2 -2
- claude_mpm/services/mcp_gateway/config/configuration.py +1 -1
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +1 -6
- claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -2
- claude_mpm/services/mcp_gateway/tools/document_summarizer.py +1 -1
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +6 -2
- claude_mpm/services/memory/failure_tracker.py +19 -4
- claude_mpm/services/memory/optimizer.py +1 -1
- claude_mpm/services/model/model_router.py +8 -9
- claude_mpm/services/monitor/daemon.py +1 -1
- claude_mpm/services/monitor/server.py +2 -2
- claude_mpm/services/native_agent_converter.py +356 -0
- claude_mpm/services/port_manager.py +1 -1
- claude_mpm/services/pr/__init__.py +14 -0
- claude_mpm/services/pr/pr_template_service.py +329 -0
- claude_mpm/services/project/documentation_manager.py +2 -1
- claude_mpm/services/project/toolchain_analyzer.py +3 -1
- claude_mpm/services/runner_configuration_service.py +1 -0
- claude_mpm/services/self_upgrade_service.py +165 -7
- claude_mpm/services/skills/__init__.py +18 -0
- claude_mpm/services/skills/git_skill_source_manager.py +1169 -0
- claude_mpm/services/skills/skill_discovery_service.py +568 -0
- claude_mpm/services/skills_config.py +547 -0
- claude_mpm/services/skills_deployer.py +955 -0
- claude_mpm/services/socketio/handlers/connection.py +1 -1
- claude_mpm/services/socketio/handlers/git.py +2 -2
- claude_mpm/services/socketio/server/core.py +1 -4
- claude_mpm/services/socketio/server/main.py +1 -3
- claude_mpm/services/system_instructions_service.py +1 -3
- claude_mpm/services/unified/analyzer_strategies/performance_analyzer.py +0 -3
- claude_mpm/services/unified/analyzer_strategies/security_analyzer.py +0 -1
- claude_mpm/services/unified/deployment_strategies/cloud_strategies.py +1 -1
- claude_mpm/services/unified/deployment_strategies/vercel.py +1 -5
- claude_mpm/services/unified/unified_deployment.py +1 -5
- claude_mpm/services/version_control/conflict_resolution.py +6 -4
- claude_mpm/services/visualization/__init__.py +1 -5
- claude_mpm/services/visualization/mermaid_generator.py +2 -3
- claude_mpm/skills/bundled/infrastructure/env-manager/scripts/validate_env.py +576 -0
- claude_mpm/skills/bundled/performance-profiling.md +6 -0
- claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +2 -2
- claude_mpm/skills/skills_registry.py +0 -1
- claude_mpm/templates/questions/__init__.py +38 -0
- claude_mpm/templates/questions/base.py +193 -0
- claude_mpm/templates/questions/pr_strategy.py +311 -0
- claude_mpm/templates/questions/project_init.py +385 -0
- claude_mpm/templates/questions/ticket_mgmt.py +394 -0
- claude_mpm/tools/__main__.py +8 -8
- claude_mpm/tools/code_tree_analyzer/__init__.py +45 -0
- claude_mpm/tools/code_tree_analyzer/analysis.py +299 -0
- claude_mpm/tools/code_tree_analyzer/cache.py +131 -0
- claude_mpm/tools/code_tree_analyzer/core.py +380 -0
- claude_mpm/tools/code_tree_analyzer/discovery.py +403 -0
- claude_mpm/tools/code_tree_analyzer/events.py +168 -0
- claude_mpm/tools/code_tree_analyzer/gitignore.py +308 -0
- claude_mpm/tools/code_tree_analyzer/models.py +39 -0
- claude_mpm/tools/code_tree_analyzer/multilang_analyzer.py +224 -0
- claude_mpm/tools/code_tree_analyzer/python_analyzer.py +284 -0
- claude_mpm/utils/agent_dependency_loader.py +80 -13
- claude_mpm/utils/dependency_cache.py +3 -1
- claude_mpm/utils/gitignore.py +241 -0
- claude_mpm/utils/log_cleanup.py +3 -3
- claude_mpm/utils/progress.py +383 -0
- claude_mpm/utils/robust_installer.py +3 -5
- claude_mpm/utils/structured_questions.py +619 -0
- {claude_mpm-4.21.0.dist-info → claude_mpm-5.0.2.dist-info}/METADATA +429 -59
- {claude_mpm-4.21.0.dist-info → claude_mpm-5.0.2.dist-info}/RECORD +264 -427
- claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -17
- claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md +0 -3
- claude_mpm/agents/templates/agent-manager.json +0 -273
- claude_mpm/agents/templates/agentic-coder-optimizer.json +0 -248
- claude_mpm/agents/templates/api_qa.json +0 -180
- claude_mpm/agents/templates/clerk-ops.json +0 -235
- claude_mpm/agents/templates/code_analyzer.json +0 -101
- claude_mpm/agents/templates/content-agent.json +0 -358
- claude_mpm/agents/templates/dart_engineer.json +0 -307
- claude_mpm/agents/templates/data_engineer.json +0 -225
- claude_mpm/agents/templates/documentation.json +0 -211
- claude_mpm/agents/templates/engineer.json +0 -210
- claude_mpm/agents/templates/gcp_ops_agent.json +0 -253
- claude_mpm/agents/templates/golang_engineer.json +0 -270
- claude_mpm/agents/templates/imagemagick.json +0 -264
- claude_mpm/agents/templates/java_engineer.json +0 -346
- claude_mpm/agents/templates/local_ops_agent.json +0 -1840
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md +0 -39
- claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md +0 -400
- claude_mpm/agents/templates/memory_manager.json +0 -158
- claude_mpm/agents/templates/nextjs_engineer.json +0 -285
- claude_mpm/agents/templates/ops.json +0 -185
- claude_mpm/agents/templates/php-engineer.json +0 -287
- claude_mpm/agents/templates/product_owner.json +0 -338
- claude_mpm/agents/templates/project_organizer.json +0 -140
- claude_mpm/agents/templates/prompt-engineer.json +0 -737
- claude_mpm/agents/templates/python_engineer.json +0 -387
- claude_mpm/agents/templates/qa.json +0 -242
- claude_mpm/agents/templates/react_engineer.json +0 -238
- claude_mpm/agents/templates/refactoring_engineer.json +0 -276
- claude_mpm/agents/templates/research.json +0 -188
- claude_mpm/agents/templates/ruby-engineer.json +0 -280
- claude_mpm/agents/templates/rust_engineer.json +0 -275
- claude_mpm/agents/templates/security.json +0 -202
- claude_mpm/agents/templates/svelte-engineer.json +0 -225
- claude_mpm/agents/templates/ticketing.json +0 -177
- claude_mpm/agents/templates/typescript_engineer.json +0 -285
- claude_mpm/agents/templates/vercel_ops_agent.json +0 -412
- claude_mpm/agents/templates/version_control.json +0 -157
- claude_mpm/agents/templates/web_qa.json +0 -399
- claude_mpm/agents/templates/web_ui.json +0 -189
- claude_mpm/commands/mpm-tickets.md +0 -102
- claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
- claude_mpm/dashboard/react/components/DataInspector/DataInspector.module.css +0 -188
- claude_mpm/dashboard/react/components/EventViewer/EventViewer.module.css +0 -156
- claude_mpm/dashboard/react/components/shared/ConnectionStatus.module.css +0 -38
- claude_mpm/dashboard/react/components/shared/FilterBar.module.css +0 -92
- claude_mpm/dashboard/static/archive/activity_dashboard_fixed.html +0 -248
- claude_mpm/dashboard/static/archive/activity_dashboard_test.html +0 -61
- claude_mpm/dashboard/static/archive/test_activity_connection.html +0 -179
- claude_mpm/dashboard/static/archive/test_claude_tree_tab.html +0 -68
- claude_mpm/dashboard/static/archive/test_dashboard.html +0 -409
- claude_mpm/dashboard/static/archive/test_dashboard_fixed.html +0 -519
- claude_mpm/dashboard/static/archive/test_dashboard_verification.html +0 -181
- claude_mpm/dashboard/static/archive/test_file_data.html +0 -315
- claude_mpm/dashboard/static/archive/test_file_tree_empty_state.html +0 -243
- claude_mpm/dashboard/static/archive/test_file_tree_fix.html +0 -234
- claude_mpm/dashboard/static/archive/test_file_tree_rename.html +0 -117
- claude_mpm/dashboard/static/archive/test_file_tree_tab.html +0 -115
- claude_mpm/dashboard/static/archive/test_file_viewer.html +0 -224
- claude_mpm/dashboard/static/archive/test_final_activity.html +0 -220
- claude_mpm/dashboard/static/archive/test_tab_fix.html +0 -139
- claude_mpm/dashboard/static/built/assets/events.DjpNxWNo.css +0 -1
- claude_mpm/dashboard/static/built/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/agent-hierarchy.js +0 -777
- claude_mpm/dashboard/static/built/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/built/components/build-tracker.js +0 -333
- claude_mpm/dashboard/static/built/components/code-simple.js +0 -857
- claude_mpm/dashboard/static/built/components/code-tree/tree-breadcrumb.js +0 -353
- claude_mpm/dashboard/static/built/components/code-tree/tree-constants.js +0 -235
- claude_mpm/dashboard/static/built/components/code-tree/tree-search.js +0 -409
- claude_mpm/dashboard/static/built/components/code-tree/tree-utils.js +0 -435
- claude_mpm/dashboard/static/built/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/built/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/connection-debug.js +0 -654
- claude_mpm/dashboard/static/built/components/diff-viewer.js +0 -891
- claude_mpm/dashboard/static/built/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/built/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/file-change-tracker.js +0 -443
- claude_mpm/dashboard/static/built/components/file-change-viewer.js +0 -690
- claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/built/components/file-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/built/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/nav-bar.js +0 -145
- claude_mpm/dashboard/static/built/components/page-structure.js +0 -429
- claude_mpm/dashboard/static/built/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/built/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/built/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/built/connection-manager.js +0 -536
- claude_mpm/dashboard/static/built/dashboard.js +0 -2
- claude_mpm/dashboard/static/built/extension-error-handler.js +0 -164
- claude_mpm/dashboard/static/built/react/events.js +0 -30
- claude_mpm/dashboard/static/built/shared/dom-helpers.js +0 -396
- claude_mpm/dashboard/static/built/shared/event-bus.js +0 -330
- claude_mpm/dashboard/static/built/shared/event-filter-service.js +0 -540
- claude_mpm/dashboard/static/built/shared/logger.js +0 -385
- claude_mpm/dashboard/static/built/shared/page-structure.js +0 -249
- claude_mpm/dashboard/static/built/shared/tooltip-service.js +0 -253
- claude_mpm/dashboard/static/built/socket-client.js +0 -2
- claude_mpm/dashboard/static/built/tab-isolation-fix.js +0 -185
- claude_mpm/dashboard/static/dist/assets/events.DjpNxWNo.css +0 -1
- claude_mpm/dashboard/static/dist/components/activity-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-tree.js +0 -2
- claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-processor.js +0 -2
- claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/export-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -2
- claude_mpm/dashboard/static/dist/components/file-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -2
- claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/session-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -2
- claude_mpm/dashboard/static/dist/components/unified-data-viewer.js +0 -2
- claude_mpm/dashboard/static/dist/components/working-directory.js +0 -2
- claude_mpm/dashboard/static/dist/dashboard.js +0 -2
- claude_mpm/dashboard/static/dist/react/events.js +0 -30
- claude_mpm/dashboard/static/dist/socket-client.js +0 -2
- claude_mpm/dashboard/static/events.html +0 -607
- claude_mpm/dashboard/static/index.html +0 -635
- claude_mpm/dashboard/static/js/shared/dom-helpers.js +0 -396
- claude_mpm/dashboard/static/js/shared/event-bus.js +0 -330
- claude_mpm/dashboard/static/js/shared/logger.js +0 -385
- claude_mpm/dashboard/static/js/shared/tooltip-service.js +0 -253
- claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
- claude_mpm/dashboard/static/legacy/activity.html +0 -736
- claude_mpm/dashboard/static/legacy/agents.html +0 -786
- claude_mpm/dashboard/static/legacy/files.html +0 -747
- claude_mpm/dashboard/static/legacy/tools.html +0 -831
- claude_mpm/dashboard/static/monitors.html +0 -431
- claude_mpm/dashboard/static/production/events.html +0 -659
- claude_mpm/dashboard/static/production/main.html +0 -698
- claude_mpm/dashboard/static/production/monitors.html +0 -483
- claude_mpm/dashboard/static/test-archive/dashboard.html +0 -635
- claude_mpm/dashboard/static/test-archive/debug-events.html +0 -147
- claude_mpm/dashboard/static/test-archive/test-navigation.html +0 -256
- claude_mpm/dashboard/static/test-archive/test-react-exports.html +0 -180
- claude_mpm/dashboard/static/test-archive/test_debug.html +0 -25
- claude_mpm/skills/bundled/collaboration/brainstorming/SKILL.md +0 -79
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/SKILL.md +0 -178
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/agent-prompts.md +0 -577
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/coordination-patterns.md +0 -467
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/examples.md +0 -537
- claude_mpm/skills/bundled/collaboration/dispatching-parallel-agents/references/troubleshooting.md +0 -730
- claude_mpm/skills/bundled/collaboration/requesting-code-review/SKILL.md +0 -112
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/code-reviewer-template.md +0 -146
- claude_mpm/skills/bundled/collaboration/requesting-code-review/references/review-examples.md +0 -412
- claude_mpm/skills/bundled/collaboration/writing-plans/SKILL.md +0 -81
- claude_mpm/skills/bundled/collaboration/writing-plans/references/best-practices.md +0 -362
- claude_mpm/skills/bundled/collaboration/writing-plans/references/plan-structure-templates.md +0 -312
- claude_mpm/skills/bundled/debugging/root-cause-tracing/SKILL.md +0 -152
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/advanced-techniques.md +0 -668
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/examples.md +0 -587
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/integration.md +0 -438
- claude_mpm/skills/bundled/debugging/root-cause-tracing/references/tracing-techniques.md +0 -391
- claude_mpm/skills/bundled/debugging/systematic-debugging/CREATION-LOG.md +0 -119
- claude_mpm/skills/bundled/debugging/systematic-debugging/SKILL.md +0 -148
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/anti-patterns.md +0 -483
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/examples.md +0 -452
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/troubleshooting.md +0 -449
- claude_mpm/skills/bundled/debugging/systematic-debugging/references/workflow.md +0 -411
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-academic.md +0 -14
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-1.md +0 -58
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-2.md +0 -68
- claude_mpm/skills/bundled/debugging/systematic-debugging/test-pressure-3.md +0 -69
- claude_mpm/skills/bundled/debugging/verification-before-completion/SKILL.md +0 -131
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/gate-function.md +0 -325
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/integration-and-workflows.md +0 -490
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/red-flags-and-failures.md +0 -425
- claude_mpm/skills/bundled/debugging/verification-before-completion/references/verification-patterns.md +0 -499
- claude_mpm/skills/bundled/main/artifacts-builder/SKILL.md +0 -86
- claude_mpm/skills/bundled/main/internal-comms/SKILL.md +0 -43
- claude_mpm/skills/bundled/main/internal-comms/examples/3p-updates.md +0 -47
- claude_mpm/skills/bundled/main/internal-comms/examples/company-newsletter.md +0 -65
- claude_mpm/skills/bundled/main/internal-comms/examples/faq-answers.md +0 -30
- claude_mpm/skills/bundled/main/internal-comms/examples/general-comms.md +0 -16
- claude_mpm/skills/bundled/main/mcp-builder/SKILL.md +0 -160
- claude_mpm/skills/bundled/main/mcp-builder/reference/design_principles.md +0 -412
- claude_mpm/skills/bundled/main/mcp-builder/reference/evaluation.md +0 -602
- claude_mpm/skills/bundled/main/mcp-builder/reference/mcp_best_practices.md +0 -915
- claude_mpm/skills/bundled/main/mcp-builder/reference/node_mcp_server.md +0 -916
- claude_mpm/skills/bundled/main/mcp-builder/reference/python_mcp_server.md +0 -752
- claude_mpm/skills/bundled/main/mcp-builder/reference/workflow.md +0 -1237
- claude_mpm/skills/bundled/main/skill-creator/SKILL.md +0 -189
- claude_mpm/skills/bundled/main/skill-creator/references/best-practices.md +0 -500
- claude_mpm/skills/bundled/main/skill-creator/references/creation-workflow.md +0 -464
- claude_mpm/skills/bundled/main/skill-creator/references/examples.md +0 -619
- claude_mpm/skills/bundled/main/skill-creator/references/progressive-disclosure.md +0 -437
- claude_mpm/skills/bundled/main/skill-creator/references/skill-structure.md +0 -231
- claude_mpm/skills/bundled/php/espocrm-development/SKILL.md +0 -170
- claude_mpm/skills/bundled/php/espocrm-development/references/architecture.md +0 -602
- claude_mpm/skills/bundled/php/espocrm-development/references/common-tasks.md +0 -821
- claude_mpm/skills/bundled/php/espocrm-development/references/development-workflow.md +0 -742
- claude_mpm/skills/bundled/php/espocrm-development/references/frontend-customization.md +0 -726
- claude_mpm/skills/bundled/php/espocrm-development/references/hooks-and-services.md +0 -764
- claude_mpm/skills/bundled/php/espocrm-development/references/testing-debugging.md +0 -831
- claude_mpm/skills/bundled/rust/desktop-applications/SKILL.md +0 -226
- claude_mpm/skills/bundled/rust/desktop-applications/references/architecture-patterns.md +0 -901
- claude_mpm/skills/bundled/rust/desktop-applications/references/native-gui-frameworks.md +0 -901
- claude_mpm/skills/bundled/rust/desktop-applications/references/platform-integration.md +0 -775
- claude_mpm/skills/bundled/rust/desktop-applications/references/state-management.md +0 -937
- claude_mpm/skills/bundled/rust/desktop-applications/references/tauri-framework.md +0 -770
- claude_mpm/skills/bundled/rust/desktop-applications/references/testing-deployment.md +0 -961
- claude_mpm/skills/bundled/testing/condition-based-waiting/SKILL.md +0 -119
- claude_mpm/skills/bundled/testing/condition-based-waiting/references/patterns-and-implementation.md +0 -253
- claude_mpm/skills/bundled/testing/test-driven-development/SKILL.md +0 -145
- claude_mpm/skills/bundled/testing/test-driven-development/references/anti-patterns.md +0 -543
- claude_mpm/skills/bundled/testing/test-driven-development/references/examples.md +0 -741
- claude_mpm/skills/bundled/testing/test-driven-development/references/integration.md +0 -470
- claude_mpm/skills/bundled/testing/test-driven-development/references/philosophy.md +0 -458
- claude_mpm/skills/bundled/testing/test-driven-development/references/workflow.md +0 -639
- claude_mpm/skills/bundled/testing/testing-anti-patterns/SKILL.md +0 -140
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/completeness-anti-patterns.md +0 -572
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/core-anti-patterns.md +0 -411
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/detection-guide.md +0 -569
- claude_mpm/skills/bundled/testing/testing-anti-patterns/references/tdd-connection.md +0 -695
- claude_mpm/skills/bundled/testing/webapp-testing/SKILL.md +0 -184
- claude_mpm/skills/bundled/testing/webapp-testing/decision-tree.md +0 -459
- claude_mpm/skills/bundled/testing/webapp-testing/playwright-patterns.md +0 -479
- claude_mpm/skills/bundled/testing/webapp-testing/reconnaissance-pattern.md +0 -687
- claude_mpm/skills/bundled/testing/webapp-testing/server-management.md +0 -758
- claude_mpm/skills/bundled/testing/webapp-testing/troubleshooting.md +0 -868
- claude_mpm/tools/code_tree_analyzer.py +0 -1825
- /claude_mpm/agents/templates/{git_file_tracking.md → git-file-tracking.md} +0 -0
- /claude_mpm/agents/templates/{pm_examples.md → pm-examples.md} +0 -0
- /claude_mpm/agents/templates/{response_format.md → response-format.md} +0 -0
- /claude_mpm/agents/templates/{validation_templates.md → validation-templates.md} +0 -0
- {claude_mpm-4.21.0.dist-info → claude_mpm-5.0.2.dist-info}/WHEEL +0 -0
- {claude_mpm-4.21.0.dist-info → claude_mpm-5.0.2.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.21.0.dist-info → claude_mpm-5.0.2.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.21.0.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
|
-
#
|
|
89
|
-
|
|
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
|
|
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
|
-
|
|
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,
|
|
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
|
-
#
|
|
152
|
-
#
|
|
153
|
-
|
|
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;
|