claude-mpm 4.24.0__py3-none-any.whl → 5.4.41__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.
Potentially problematic release.
This version of claude-mpm might be problematic. Click here for more details.
- claude_mpm/VERSION +1 -1
- claude_mpm/__init__.py +4 -0
- claude_mpm/agents/BASE_AGENT.md +164 -0
- claude_mpm/agents/{OUTPUT_STYLE.md → CLAUDE_MPM_OUTPUT_STYLE.md} +3 -48
- claude_mpm/agents/CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md +2002 -0
- claude_mpm/agents/MEMORY.md +1 -1
- claude_mpm/agents/PM_INSTRUCTIONS.md +735 -925
- claude_mpm/agents/WORKFLOW.md +5 -254
- claude_mpm/agents/__init__.py +6 -0
- claude_mpm/agents/agent_loader.py +14 -48
- claude_mpm/agents/base_agent.json +7 -4
- claude_mpm/agents/frontmatter_validator.py +71 -3
- claude_mpm/agents/templates/circuit-breakers.md +1391 -0
- claude_mpm/agents/templates/context-management-examples.md +544 -0
- claude_mpm/agents/templates/{pm_red_flags.md → pm-red-flags.md} +48 -0
- 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 +37 -2
- claude_mpm/cli/__main__.py +4 -0
- claude_mpm/cli/chrome_devtools_installer.py +175 -0
- claude_mpm/cli/commands/__init__.py +2 -0
- claude_mpm/cli/commands/agent_source.py +774 -0
- claude_mpm/cli/commands/agent_state_manager.py +180 -31
- claude_mpm/cli/commands/agents.py +1116 -55
- 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 +725 -242
- claude_mpm/cli/commands/config.py +95 -6
- claude_mpm/cli/commands/configure.py +1875 -46
- claude_mpm/cli/commands/configure_agent_display.py +29 -10
- 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 +229 -2
- claude_mpm/cli/commands/mpm_init/git_activity.py +10 -10
- claude_mpm/cli/commands/mpm_init/knowledge_extractor.py +481 -0
- claude_mpm/cli/commands/mpm_init/prompts.py +286 -6
- claude_mpm/cli/commands/postmortem.py +401 -0
- claude_mpm/cli/commands/profile.py +277 -0
- claude_mpm/cli/commands/run.py +123 -165
- claude_mpm/cli/commands/skill_source.py +694 -0
- claude_mpm/cli/commands/skills.py +782 -20
- claude_mpm/cli/commands/summarize.py +413 -0
- claude_mpm/cli/executor.py +96 -3
- claude_mpm/cli/interactive/agent_wizard.py +1030 -45
- claude_mpm/cli/parsers/agent_source_parser.py +171 -0
- claude_mpm/cli/parsers/agents_parser.py +307 -10
- claude_mpm/cli/parsers/auto_configure_parser.py +13 -138
- claude_mpm/cli/parsers/base_parser.py +65 -0
- claude_mpm/cli/parsers/config_parser.py +162 -39
- claude_mpm/cli/parsers/profile_parser.py +148 -0
- claude_mpm/cli/parsers/skill_source_parser.py +169 -0
- claude_mpm/cli/parsers/skills_parser.py +146 -0
- claude_mpm/cli/parsers/source_parser.py +138 -0
- claude_mpm/cli/startup.py +1280 -118
- 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-config.md +21 -134
- claude_mpm/commands/mpm-doctor.md +16 -20
- claude_mpm/commands/mpm-help.md +13 -283
- claude_mpm/commands/mpm-init.md +88 -489
- claude_mpm/commands/mpm-monitor.md +23 -401
- claude_mpm/commands/mpm-organize.md +72 -247
- claude_mpm/commands/mpm-postmortem.md +21 -0
- claude_mpm/commands/mpm-session-resume.md +30 -0
- claude_mpm/commands/mpm-status.md +13 -68
- claude_mpm/commands/mpm-ticket-view.md +109 -0
- claude_mpm/commands/mpm-version.md +13 -106
- claude_mpm/commands/mpm.md +10 -0
- claude_mpm/config/agent_presets.py +488 -0
- claude_mpm/config/agent_sources.py +352 -0
- claude_mpm/config/skill_presets.py +392 -0
- claude_mpm/config/skill_sources.py +590 -0
- claude_mpm/constants.py +13 -0
- claude_mpm/core/claude_runner.py +5 -34
- claude_mpm/core/config.py +15 -1
- claude_mpm/core/constants.py +1 -1
- claude_mpm/core/framework/__init__.py +3 -16
- claude_mpm/core/framework/formatters/content_formatter.py +3 -13
- claude_mpm/core/framework/loaders/agent_loader.py +8 -5
- claude_mpm/core/framework/loaders/file_loader.py +54 -101
- claude_mpm/core/framework/loaders/instruction_loader.py +66 -5
- claude_mpm/core/framework_loader.py +4 -2
- claude_mpm/core/hook_error_memory.py +381 -0
- claude_mpm/core/hook_manager.py +41 -2
- claude_mpm/core/interactive_session.py +91 -10
- claude_mpm/core/logger.py +16 -1
- claude_mpm/core/oneshot_session.py +71 -8
- claude_mpm/core/optimized_startup.py +59 -0
- claude_mpm/core/output_style_manager.py +173 -43
- claude_mpm/core/protocols/__init__.py +23 -0
- claude_mpm/core/protocols/runner_protocol.py +103 -0
- claude_mpm/core/protocols/session_protocol.py +131 -0
- claude_mpm/core/shared/config_loader.py +1 -1
- claude_mpm/core/shared/singleton_manager.py +11 -4
- claude_mpm/core/socketio_pool.py +3 -3
- claude_mpm/core/system_context.py +38 -0
- claude_mpm/core/unified_agent_registry.py +134 -16
- claude_mpm/core/unified_config.py +22 -0
- claude_mpm/dashboard/static/svelte-build/_app/env.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/0.B_FtCwCQ.css +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/assets/2.Cl_eSA4x.css +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/BgChzWQ1.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CIXEwuWe.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/CWc5urbQ.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DMkZpdF2.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/DjhvlsAc.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/N4qtv3Hx.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/chunks/uj46x2Wr.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/app.DTL5mJO-.js +2 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/entry/start.DzuEhzqh.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/0.CAGBuiOw.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/1.DFLC8jdE.js +1 -0
- claude_mpm/dashboard/static/svelte-build/_app/immutable/nodes/2.DPvEihJJ.js +10 -0
- claude_mpm/dashboard/static/svelte-build/_app/version.json +1 -0
- claude_mpm/dashboard/static/svelte-build/favicon.svg +7 -0
- claude_mpm/dashboard/static/svelte-build/index.html +36 -0
- claude_mpm/experimental/cli_enhancements.py +1 -5
- claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/correlation_manager.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/installer.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/correlation_manager.py +60 -0
- claude_mpm/hooks/claude_hooks/event_handlers.py +214 -79
- claude_mpm/hooks/claude_hooks/hook_handler.py +155 -1
- claude_mpm/hooks/claude_hooks/installer.py +33 -10
- claude_mpm/hooks/claude_hooks/memory_integration.py +28 -0
- claude_mpm/hooks/claude_hooks/response_tracking.py +2 -3
- claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-311.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/connection_manager.py +30 -6
- 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/memory_integration_hook.py +46 -1
- claude_mpm/init.py +63 -19
- claude_mpm/models/agent_definition.py +7 -0
- claude_mpm/models/git_repository.py +198 -0
- claude_mpm/scripts/claude-hook-handler.sh +60 -20
- claude_mpm/scripts/launch_monitor.py +93 -13
- claude_mpm/scripts/start_activity_logging.py +3 -1
- claude_mpm/services/agents/agent_builder.py +48 -12
- claude_mpm/services/agents/agent_preset_service.py +238 -0
- claude_mpm/services/agents/agent_recommendation_service.py +278 -0
- claude_mpm/services/agents/agent_review_service.py +280 -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/cache_git_manager.py +621 -0
- claude_mpm/services/agents/deployment/agent_deployment.py +148 -2
- claude_mpm/services/agents/deployment/agent_discovery_service.py +104 -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 +238 -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 +422 -31
- 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 +841 -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 +663 -0
- claude_mpm/services/agents/loading/base_agent_manager.py +1 -13
- 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/recommender.py +5 -3
- 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 +1094 -0
- claude_mpm/services/agents/startup_sync.py +259 -0
- claude_mpm/services/agents/toolchain_detector.py +478 -0
- claude_mpm/services/analysis/__init__.py +35 -0
- claude_mpm/services/analysis/clone_detector.py +1030 -0
- claude_mpm/services/analysis/postmortem_reporter.py +474 -0
- claude_mpm/services/analysis/postmortem_service.py +765 -0
- claude_mpm/services/cli/session_pause_manager.py +1 -1
- claude_mpm/services/command_deployment_service.py +271 -6
- claude_mpm/services/core/base.py +7 -2
- 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 +2 -4
- 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/mcp_services_check.py +7 -15
- 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/config.py +3 -1
- claude_mpm/services/event_bus/direct_relay.py +3 -3
- 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 +579 -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/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/resource_monitor.py +1 -1
- claude_mpm/services/mcp_config_manager.py +75 -145
- claude_mpm/services/mcp_service_verifier.py +6 -3
- claude_mpm/services/model/model_router.py +1 -2
- claude_mpm/services/monitor/daemon.py +38 -11
- claude_mpm/services/monitor/daemon_manager.py +134 -21
- claude_mpm/services/monitor/management/lifecycle.py +8 -1
- claude_mpm/services/monitor/server.py +700 -24
- claude_mpm/services/pm_skills_deployer.py +676 -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/profile_manager.py +331 -0
- claude_mpm/services/project/documentation_manager.py +2 -1
- claude_mpm/services/project/project_organizer.py +4 -0
- claude_mpm/services/project/toolchain_analyzer.py +3 -1
- claude_mpm/services/runner_configuration_service.py +16 -3
- claude_mpm/services/self_upgrade_service.py +120 -12
- claude_mpm/services/session_management_service.py +16 -4
- claude_mpm/services/skills/__init__.py +21 -0
- claude_mpm/services/skills/git_skill_source_manager.py +1297 -0
- claude_mpm/services/skills/selective_skill_deployer.py +704 -0
- claude_mpm/services/skills/skill_discovery_service.py +568 -0
- claude_mpm/services/skills/skill_to_agent_mapper.py +406 -0
- claude_mpm/services/skills_config.py +547 -0
- claude_mpm/services/skills_deployer.py +1072 -0
- claude_mpm/services/socketio/dashboard_server.py +1 -0
- claude_mpm/services/socketio/event_normalizer.py +51 -6
- claude_mpm/services/socketio/handlers/connection.py +1 -1
- claude_mpm/services/socketio/handlers/git.py +1 -1
- claude_mpm/services/socketio/server/core.py +387 -112
- 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/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/version_control/git_operations.py +103 -0
- claude_mpm/services/visualization/__init__.py +1 -5
- claude_mpm/services/visualization/mermaid_generator.py +2 -3
- claude_mpm/skills/bundled/testing/webapp-testing/scripts/with_server.py +2 -2
- claude_mpm/skills/skill_manager.py +92 -3
- 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/utils/agent_dependency_loader.py +91 -12
- claude_mpm/utils/agent_filters.py +261 -0
- claude_mpm/utils/dependency_cache.py +3 -1
- claude_mpm/utils/gitignore.py +244 -0
- claude_mpm/utils/migration.py +372 -0
- claude_mpm/utils/progress.py +387 -0
- claude_mpm/utils/robust_installer.py +49 -7
- claude_mpm/utils/structured_questions.py +619 -0
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.4.41.dist-info}/METADATA +445 -122
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.4.41.dist-info}/RECORD +298 -503
- claude_mpm-5.4.41.dist-info/entry_points.txt +5 -0
- claude_mpm-5.4.41.dist-info/licenses/LICENSE +94 -0
- claude_mpm-5.4.41.dist-info/licenses/LICENSE-FAQ.md +153 -0
- claude_mpm/agents/BASE_AGENT_TEMPLATE.md +0 -292
- claude_mpm/agents/BASE_DOCUMENTATION.md +0 -53
- claude_mpm/agents/BASE_OPS.md +0 -219
- claude_mpm/agents/BASE_PM.md +0 -468
- claude_mpm/agents/BASE_PROMPT_ENGINEER.md +0 -787
- claude_mpm/agents/BASE_QA.md +0 -167
- claude_mpm/agents/BASE_RESEARCH.md +0 -53
- claude_mpm/agents/base_agent_loader.py +0 -626
- 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 -183
- claude_mpm/agents/templates/circuit_breakers.md +0 -638
- 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 -238
- 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/javascript_engineer_agent.json +0 -380
- 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 -144
- 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 -243
- claude_mpm/agents/templates/react_engineer.json +0 -239
- 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/tauri_engineer.json +0 -274
- claude_mpm/agents/templates/ticketing.json +0 -178
- 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 -159
- claude_mpm/agents/templates/web_qa.json +0 -400
- claude_mpm/agents/templates/web_ui.json +0 -189
- claude_mpm/cli/commands/agents_detect.py +0 -380
- claude_mpm/cli/commands/agents_recommend.py +0 -309
- claude_mpm/cli/ticket_cli.py +0 -35
- claude_mpm/commands/mpm-agents-detect.md +0 -168
- claude_mpm/commands/mpm-agents-recommend.md +0 -214
- claude_mpm/commands/mpm-agents.md +0 -122
- claude_mpm/commands/mpm-auto-configure.md +0 -269
- claude_mpm/commands/mpm-resume.md +0 -372
- claude_mpm/commands/mpm-tickets.md +0 -151
- claude_mpm/dashboard/.claude-mpm/socketio-instances.json +0 -1
- claude_mpm/dashboard/analysis_runner.py +0 -455
- claude_mpm/dashboard/index.html +0 -13
- claude_mpm/dashboard/open_dashboard.py +0 -66
- 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/css/activity.css +0 -1958
- claude_mpm/dashboard/static/css/connection-status.css +0 -370
- claude_mpm/dashboard/static/css/dashboard.css +0 -4701
- 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/components/activity-tree.js +0 -1871
- claude_mpm/dashboard/static/js/components/agent-hierarchy.js +0 -777
- claude_mpm/dashboard/static/js/components/agent-inference.js +0 -956
- claude_mpm/dashboard/static/js/components/build-tracker.js +0 -333
- claude_mpm/dashboard/static/js/components/code-simple.js +0 -857
- claude_mpm/dashboard/static/js/components/connection-debug.js +0 -654
- claude_mpm/dashboard/static/js/components/diff-viewer.js +0 -891
- claude_mpm/dashboard/static/js/components/event-processor.js +0 -542
- claude_mpm/dashboard/static/js/components/event-viewer.js +0 -1155
- claude_mpm/dashboard/static/js/components/export-manager.js +0 -368
- claude_mpm/dashboard/static/js/components/file-change-tracker.js +0 -443
- claude_mpm/dashboard/static/js/components/file-change-viewer.js +0 -690
- claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -724
- claude_mpm/dashboard/static/js/components/file-viewer.js +0 -580
- claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -211
- claude_mpm/dashboard/static/js/components/hud-manager.js +0 -671
- claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -1718
- claude_mpm/dashboard/static/js/components/module-viewer.js +0 -2764
- claude_mpm/dashboard/static/js/components/session-manager.js +0 -579
- claude_mpm/dashboard/static/js/components/socket-manager.js +0 -368
- claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -749
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +0 -1824
- claude_mpm/dashboard/static/js/components/working-directory.js +0 -920
- claude_mpm/dashboard/static/js/connection-manager.js +0 -536
- claude_mpm/dashboard/static/js/dashboard.js +0 -1896
- claude_mpm/dashboard/static/js/extension-error-handler.js +0 -164
- 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/socket-client.js +0 -1457
- claude_mpm/dashboard/static/js/stores/dashboard-store.js +0 -562
- claude_mpm/dashboard/static/js/tab-isolation-fix.js +0 -185
- 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/socket.io.min.js +0 -7
- claude_mpm/dashboard/static/socket.io.v4.8.1.backup.js +0 -7
- 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/dashboard/templates/code_simple.html +0 -153
- claude_mpm/dashboard/templates/index.html +0 -606
- claude_mpm/dashboard/test_dashboard.html +0 -372
- claude_mpm/scripts/mcp_server.py +0 -75
- claude_mpm/scripts/mcp_wrapper.py +0 -39
- claude_mpm/services/mcp_gateway/__init__.py +0 -159
- claude_mpm/services/mcp_gateway/auto_configure.py +0 -369
- claude_mpm/services/mcp_gateway/config/__init__.py +0 -17
- claude_mpm/services/mcp_gateway/config/config_loader.py +0 -296
- claude_mpm/services/mcp_gateway/config/config_schema.py +0 -243
- claude_mpm/services/mcp_gateway/config/configuration.py +0 -429
- claude_mpm/services/mcp_gateway/core/__init__.py +0 -43
- claude_mpm/services/mcp_gateway/core/base.py +0 -312
- claude_mpm/services/mcp_gateway/core/exceptions.py +0 -253
- claude_mpm/services/mcp_gateway/core/interfaces.py +0 -443
- claude_mpm/services/mcp_gateway/core/process_pool.py +0 -971
- claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -315
- claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -316
- claude_mpm/services/mcp_gateway/main.py +0 -589
- claude_mpm/services/mcp_gateway/registry/__init__.py +0 -12
- claude_mpm/services/mcp_gateway/registry/service_registry.py +0 -412
- claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -489
- claude_mpm/services/mcp_gateway/server/__init__.py +0 -15
- claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -419
- claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -372
- claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -714
- claude_mpm/services/mcp_gateway/tools/__init__.py +0 -36
- claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -485
- claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -789
- claude_mpm/services/mcp_gateway/tools/external_mcp_services.py +0 -654
- claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -456
- claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -551
- claude_mpm/services/mcp_gateway/tools/kuzu_memory_service.py +0 -551
- claude_mpm/services/mcp_gateway/utils/__init__.py +0 -14
- claude_mpm/services/mcp_gateway/utils/package_version_checker.py +0 -160
- claude_mpm/services/mcp_gateway/utils/update_preferences.py +0 -170
- 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-4.24.0.dist-info/entry_points.txt +0 -10
- claude_mpm-4.24.0.dist-info/licenses/LICENSE +0 -21
- /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.24.0.dist-info → claude_mpm-5.4.41.dist-info}/WHEEL +0 -0
- {claude_mpm-4.24.0.dist-info → claude_mpm-5.4.41.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
7
|
+
|
|
8
|
+
<link rel="modulepreload" href="/_app/immutable/entry/start.DzuEhzqh.js">
|
|
9
|
+
<link rel="modulepreload" href="/_app/immutable/chunks/CIXEwuWe.js">
|
|
10
|
+
<link rel="modulepreload" href="/_app/immutable/chunks/DjhvlsAc.js">
|
|
11
|
+
<link rel="modulepreload" href="/_app/immutable/entry/app.DTL5mJO-.js">
|
|
12
|
+
<link rel="modulepreload" href="/_app/immutable/chunks/DMkZpdF2.js">
|
|
13
|
+
<link rel="modulepreload" href="/_app/immutable/chunks/CWc5urbQ.js">
|
|
14
|
+
<link rel="modulepreload" href="/_app/immutable/chunks/BgChzWQ1.js">
|
|
15
|
+
</head>
|
|
16
|
+
<body data-sveltekit-preload-data="hover">
|
|
17
|
+
<div style="display: contents">
|
|
18
|
+
<script>
|
|
19
|
+
{
|
|
20
|
+
__sveltekit_16ujgvz = {
|
|
21
|
+
base: ""
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const element = document.currentScript.parentElement;
|
|
25
|
+
|
|
26
|
+
Promise.all([
|
|
27
|
+
import("/_app/immutable/entry/start.DzuEhzqh.js"),
|
|
28
|
+
import("/_app/immutable/entry/app.DTL5mJO-.js")
|
|
29
|
+
]).then(([kit, app]) => {
|
|
30
|
+
kit.start(app, element);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
</script>
|
|
34
|
+
</div>
|
|
35
|
+
</body>
|
|
36
|
+
</html>
|
|
@@ -31,11 +31,7 @@ import click
|
|
|
31
31
|
|
|
32
32
|
from claude_mpm.core.logging_utils import get_logger
|
|
33
33
|
from claude_mpm.hooks.validation_hooks import ValidationHooks
|
|
34
|
-
from claude_mpm.utils.error_handler import
|
|
35
|
-
ErrorContext,
|
|
36
|
-
MPMError,
|
|
37
|
-
handle_errors,
|
|
38
|
-
)
|
|
34
|
+
from claude_mpm.utils.error_handler import ErrorContext, MPMError, handle_errors
|
|
39
35
|
from claude_mpm.validation import AgentValidator, ValidationResult
|
|
40
36
|
|
|
41
37
|
logger = get_logger(__name__)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"""Cross-process correlation storage using .claude-mpm directory."""
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
import time
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def get_correlation_dir() -> Path:
|
|
9
|
+
"""Get correlation directory in project's .claude-mpm folder."""
|
|
10
|
+
# Use CWD's .claude-mpm directory (where hooks run from)
|
|
11
|
+
cwd = Path.cwd()
|
|
12
|
+
return cwd / ".claude-mpm" / "correlations"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
TTL_SECONDS = 3600 # 1 hour
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class CorrelationManager:
|
|
19
|
+
"""Manages correlation IDs across separate hook processes."""
|
|
20
|
+
|
|
21
|
+
@staticmethod
|
|
22
|
+
def store(session_id: str, tool_call_id: str, tool_name: str) -> None:
|
|
23
|
+
"""Store correlation data for later retrieval by post_tool."""
|
|
24
|
+
correlation_dir = get_correlation_dir()
|
|
25
|
+
correlation_dir.mkdir(parents=True, exist_ok=True)
|
|
26
|
+
filepath = correlation_dir / f"correlation_{session_id}.json"
|
|
27
|
+
data = {
|
|
28
|
+
"tool_call_id": tool_call_id,
|
|
29
|
+
"tool_name": tool_name,
|
|
30
|
+
"timestamp": time.time(),
|
|
31
|
+
}
|
|
32
|
+
filepath.write_text(json.dumps(data))
|
|
33
|
+
|
|
34
|
+
@staticmethod
|
|
35
|
+
def retrieve(session_id: str) -> str | None:
|
|
36
|
+
"""Retrieve and delete correlation data from temp file."""
|
|
37
|
+
correlation_dir = get_correlation_dir()
|
|
38
|
+
filepath = correlation_dir / f"correlation_{session_id}.json"
|
|
39
|
+
if not filepath.exists():
|
|
40
|
+
return None
|
|
41
|
+
try:
|
|
42
|
+
data = json.loads(filepath.read_text())
|
|
43
|
+
filepath.unlink() # Delete after reading
|
|
44
|
+
return data.get("tool_call_id")
|
|
45
|
+
except (json.JSONDecodeError, OSError):
|
|
46
|
+
return None
|
|
47
|
+
|
|
48
|
+
@staticmethod
|
|
49
|
+
def cleanup_old() -> None:
|
|
50
|
+
"""Remove correlation files older than TTL."""
|
|
51
|
+
correlation_dir = get_correlation_dir()
|
|
52
|
+
if not correlation_dir.exists():
|
|
53
|
+
return
|
|
54
|
+
now = time.time()
|
|
55
|
+
for filepath in correlation_dir.glob("correlation_*.json"):
|
|
56
|
+
try:
|
|
57
|
+
if now - filepath.stat().st_mtime > TTL_SECONDS:
|
|
58
|
+
filepath.unlink()
|
|
59
|
+
except OSError:
|
|
60
|
+
pass
|
|
@@ -9,6 +9,7 @@ import os
|
|
|
9
9
|
import re
|
|
10
10
|
import subprocess
|
|
11
11
|
import sys
|
|
12
|
+
import uuid
|
|
12
13
|
from datetime import datetime, timezone
|
|
13
14
|
from pathlib import Path
|
|
14
15
|
from typing import Optional
|
|
@@ -94,22 +95,29 @@ class EventHandlers:
|
|
|
94
95
|
}
|
|
95
96
|
|
|
96
97
|
# Store prompt for comprehensive response tracking if enabled
|
|
97
|
-
|
|
98
|
-
self.hook_handler
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
"
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
98
|
+
try:
|
|
99
|
+
rtm = getattr(self.hook_handler, "response_tracking_manager", None)
|
|
100
|
+
if (
|
|
101
|
+
rtm
|
|
102
|
+
and getattr(rtm, "response_tracking_enabled", False)
|
|
103
|
+
and getattr(rtm, "track_all_interactions", False)
|
|
104
|
+
):
|
|
105
|
+
session_id = event.get("session_id", "")
|
|
106
|
+
if session_id:
|
|
107
|
+
pending_prompts = getattr(self.hook_handler, "pending_prompts", {})
|
|
108
|
+
pending_prompts[session_id] = {
|
|
109
|
+
"prompt": prompt,
|
|
110
|
+
"timestamp": datetime.now(timezone.utc).isoformat(),
|
|
111
|
+
"working_directory": working_dir,
|
|
112
|
+
}
|
|
113
|
+
if DEBUG:
|
|
114
|
+
print(
|
|
115
|
+
f"Stored prompt for comprehensive tracking: session {session_id[:8]}...",
|
|
116
|
+
file=sys.stderr,
|
|
117
|
+
)
|
|
118
|
+
except Exception:
|
|
119
|
+
# Response tracking is optional - silently continue if it fails
|
|
120
|
+
pass
|
|
113
121
|
|
|
114
122
|
# Emit normalized event (namespace no longer needed with normalized events)
|
|
115
123
|
self.hook_handler._emit_socketio_event("", "user_prompt", prompt_data)
|
|
@@ -134,6 +142,9 @@ class EventHandlers:
|
|
|
134
142
|
tool_name = event.get("tool_name", "")
|
|
135
143
|
tool_input = event.get("tool_input", {})
|
|
136
144
|
|
|
145
|
+
# Generate unique tool call ID for correlation with post_tool event
|
|
146
|
+
tool_call_id = str(uuid.uuid4())
|
|
147
|
+
|
|
137
148
|
# Extract key parameters based on tool type
|
|
138
149
|
tool_params = extract_tool_parameters(tool_name, tool_input)
|
|
139
150
|
|
|
@@ -144,6 +155,8 @@ class EventHandlers:
|
|
|
144
155
|
working_dir = event.get("cwd", "")
|
|
145
156
|
git_branch = self._get_git_branch(working_dir) if working_dir else "Unknown"
|
|
146
157
|
|
|
158
|
+
timestamp = datetime.now(timezone.utc).isoformat()
|
|
159
|
+
|
|
147
160
|
pre_tool_data = {
|
|
148
161
|
"tool_name": tool_name,
|
|
149
162
|
"operation_type": operation_type,
|
|
@@ -151,15 +164,27 @@ class EventHandlers:
|
|
|
151
164
|
"session_id": event.get("session_id", ""),
|
|
152
165
|
"working_directory": working_dir,
|
|
153
166
|
"git_branch": git_branch,
|
|
154
|
-
"timestamp":
|
|
167
|
+
"timestamp": timestamp,
|
|
155
168
|
"parameter_count": len(tool_input) if isinstance(tool_input, dict) else 0,
|
|
156
169
|
"is_file_operation": tool_name
|
|
157
170
|
in ["Write", "Edit", "MultiEdit", "Read", "LS", "Glob"],
|
|
158
171
|
"is_execution": tool_name in ["Bash", "NotebookEdit"],
|
|
159
172
|
"is_delegation": tool_name == "Task",
|
|
160
173
|
"security_risk": assess_security_risk(tool_name, tool_input),
|
|
174
|
+
"correlation_id": tool_call_id, # Add correlation_id for pre/post correlation
|
|
161
175
|
}
|
|
162
176
|
|
|
177
|
+
# Store tool_call_id using CorrelationManager for cross-process retrieval
|
|
178
|
+
if session_id:
|
|
179
|
+
from .correlation_manager import CorrelationManager
|
|
180
|
+
|
|
181
|
+
CorrelationManager.store(session_id, tool_call_id, tool_name)
|
|
182
|
+
if DEBUG:
|
|
183
|
+
print(
|
|
184
|
+
f" - Generated tool_call_id: {tool_call_id[:8]}... for session {session_id[:8]}...",
|
|
185
|
+
file=sys.stderr,
|
|
186
|
+
)
|
|
187
|
+
|
|
163
188
|
# Add delegation-specific data if this is a Task tool
|
|
164
189
|
if tool_name == "Task" and isinstance(tool_input, dict):
|
|
165
190
|
self._handle_task_delegation(tool_input, pre_tool_data, session_id)
|
|
@@ -226,8 +251,11 @@ class EventHandlers:
|
|
|
226
251
|
f" - Request data keys: {list(request_data.keys())}",
|
|
227
252
|
file=sys.stderr,
|
|
228
253
|
)
|
|
254
|
+
delegation_requests = getattr(
|
|
255
|
+
self.hook_handler, "delegation_requests", {}
|
|
256
|
+
)
|
|
229
257
|
print(
|
|
230
|
-
f" - delegation_requests size: {len(
|
|
258
|
+
f" - delegation_requests size: {len(delegation_requests)}",
|
|
231
259
|
file=sys.stderr,
|
|
232
260
|
)
|
|
233
261
|
|
|
@@ -239,9 +267,13 @@ class EventHandlers:
|
|
|
239
267
|
)
|
|
240
268
|
|
|
241
269
|
# Trigger memory pre-delegation hook
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
270
|
+
try:
|
|
271
|
+
mhm = getattr(self.hook_handler, "memory_hook_manager", None)
|
|
272
|
+
if mhm and hasattr(mhm, "trigger_pre_delegation_hook"):
|
|
273
|
+
mhm.trigger_pre_delegation_hook(agent_type, tool_input, session_id)
|
|
274
|
+
except Exception:
|
|
275
|
+
# Memory hooks are optional
|
|
276
|
+
pass
|
|
245
277
|
|
|
246
278
|
# Emit a subagent_start event for better tracking
|
|
247
279
|
subagent_start_data = {
|
|
@@ -375,6 +407,7 @@ class EventHandlers:
|
|
|
375
407
|
"""
|
|
376
408
|
tool_name = event.get("tool_name", "")
|
|
377
409
|
exit_code = event.get("exit_code", 0)
|
|
410
|
+
session_id = event.get("session_id", "")
|
|
378
411
|
|
|
379
412
|
# Extract result data
|
|
380
413
|
result_data = extract_tool_results(event)
|
|
@@ -386,6 +419,16 @@ class EventHandlers:
|
|
|
386
419
|
working_dir = event.get("cwd", "")
|
|
387
420
|
git_branch = self._get_git_branch(working_dir) if working_dir else "Unknown"
|
|
388
421
|
|
|
422
|
+
# Retrieve tool_call_id using CorrelationManager for cross-process correlation
|
|
423
|
+
from .correlation_manager import CorrelationManager
|
|
424
|
+
|
|
425
|
+
tool_call_id = CorrelationManager.retrieve(session_id) if session_id else None
|
|
426
|
+
if DEBUG and tool_call_id:
|
|
427
|
+
print(
|
|
428
|
+
f" - Retrieved tool_call_id: {tool_call_id[:8]}... for session {session_id[:8]}...",
|
|
429
|
+
file=sys.stderr,
|
|
430
|
+
)
|
|
431
|
+
|
|
389
432
|
post_tool_data = {
|
|
390
433
|
"tool_name": tool_name,
|
|
391
434
|
"exit_code": exit_code,
|
|
@@ -393,11 +436,13 @@ class EventHandlers:
|
|
|
393
436
|
"status": (
|
|
394
437
|
"success"
|
|
395
438
|
if exit_code == 0
|
|
396
|
-
else "blocked"
|
|
439
|
+
else "blocked"
|
|
440
|
+
if exit_code == 2
|
|
441
|
+
else "error"
|
|
397
442
|
),
|
|
398
443
|
"duration_ms": duration,
|
|
399
444
|
"result_summary": result_data,
|
|
400
|
-
"session_id":
|
|
445
|
+
"session_id": session_id,
|
|
401
446
|
"working_directory": working_dir,
|
|
402
447
|
"git_branch": git_branch,
|
|
403
448
|
"timestamp": datetime.now(timezone.utc).isoformat(),
|
|
@@ -410,20 +455,42 @@ class EventHandlers:
|
|
|
410
455
|
),
|
|
411
456
|
}
|
|
412
457
|
|
|
458
|
+
# Include full output for file operations (Read, Edit, Write)
|
|
459
|
+
# so frontend can display file content
|
|
460
|
+
if tool_name in ("Read", "Edit", "Write", "Grep", "Glob") and "output" in event:
|
|
461
|
+
post_tool_data["output"] = event["output"]
|
|
462
|
+
|
|
463
|
+
# Add correlation_id if available for correlation with pre_tool
|
|
464
|
+
if tool_call_id:
|
|
465
|
+
post_tool_data["correlation_id"] = tool_call_id
|
|
466
|
+
|
|
413
467
|
# Handle Task delegation completion for memory hooks and response tracking
|
|
414
468
|
if tool_name == "Task":
|
|
415
469
|
session_id = event.get("session_id", "")
|
|
416
470
|
agent_type = self.hook_handler._get_delegation_agent_type(session_id)
|
|
417
471
|
|
|
418
472
|
# Trigger memory post-delegation hook
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
473
|
+
try:
|
|
474
|
+
mhm = getattr(self.hook_handler, "memory_hook_manager", None)
|
|
475
|
+
if mhm and hasattr(mhm, "trigger_post_delegation_hook"):
|
|
476
|
+
mhm.trigger_post_delegation_hook(agent_type, event, session_id)
|
|
477
|
+
except Exception:
|
|
478
|
+
# Memory hooks are optional
|
|
479
|
+
pass
|
|
422
480
|
|
|
423
481
|
# Track agent response if response tracking is enabled
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
482
|
+
try:
|
|
483
|
+
rtm = getattr(self.hook_handler, "response_tracking_manager", None)
|
|
484
|
+
if rtm and hasattr(rtm, "track_agent_response"):
|
|
485
|
+
delegation_requests = getattr(
|
|
486
|
+
self.hook_handler, "delegation_requests", {}
|
|
487
|
+
)
|
|
488
|
+
rtm.track_agent_response(
|
|
489
|
+
session_id, agent_type, event, delegation_requests
|
|
490
|
+
)
|
|
491
|
+
except Exception:
|
|
492
|
+
# Response tracking is optional
|
|
493
|
+
pass
|
|
427
494
|
|
|
428
495
|
self.hook_handler._emit_socketio_event("", "post_tool", post_tool_data)
|
|
429
496
|
|
|
@@ -484,9 +551,14 @@ class EventHandlers:
|
|
|
484
551
|
self._log_stop_event_debug(event, session_id, metadata)
|
|
485
552
|
|
|
486
553
|
# Track response if enabled
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
554
|
+
try:
|
|
555
|
+
rtm = getattr(self.hook_handler, "response_tracking_manager", None)
|
|
556
|
+
if rtm and hasattr(rtm, "track_stop_response"):
|
|
557
|
+
pending_prompts = getattr(self.hook_handler, "pending_prompts", {})
|
|
558
|
+
rtm.track_stop_response(event, session_id, metadata, pending_prompts)
|
|
559
|
+
except Exception:
|
|
560
|
+
# Response tracking is optional
|
|
561
|
+
pass
|
|
490
562
|
|
|
491
563
|
# Emit stop event to Socket.IO
|
|
492
564
|
self._emit_stop_event(event, session_id, metadata)
|
|
@@ -509,15 +581,27 @@ class EventHandlers:
|
|
|
509
581
|
self, event: dict, session_id: str, metadata: dict
|
|
510
582
|
) -> None:
|
|
511
583
|
"""Log debug information for stop events."""
|
|
584
|
+
try:
|
|
585
|
+
rtm = getattr(self.hook_handler, "response_tracking_manager", None)
|
|
586
|
+
tracking_enabled = (
|
|
587
|
+
getattr(rtm, "response_tracking_enabled", False) if rtm else False
|
|
588
|
+
)
|
|
589
|
+
tracker_exists = (
|
|
590
|
+
getattr(rtm, "response_tracker", None) is not None if rtm else False
|
|
591
|
+
)
|
|
592
|
+
|
|
593
|
+
print(
|
|
594
|
+
f" - response_tracking_enabled: {tracking_enabled}",
|
|
595
|
+
file=sys.stderr,
|
|
596
|
+
)
|
|
597
|
+
print(
|
|
598
|
+
f" - response_tracker exists: {tracker_exists}",
|
|
599
|
+
file=sys.stderr,
|
|
600
|
+
)
|
|
601
|
+
except Exception:
|
|
602
|
+
# If debug logging fails, just skip it
|
|
603
|
+
pass
|
|
512
604
|
|
|
513
|
-
print(
|
|
514
|
-
f" - response_tracking_enabled: {self.hook_handler.response_tracking_manager.response_tracking_enabled}",
|
|
515
|
-
file=sys.stderr,
|
|
516
|
-
)
|
|
517
|
-
print(
|
|
518
|
-
f" - response_tracker exists: {self.hook_handler.response_tracking_manager.response_tracker is not None}",
|
|
519
|
-
file=sys.stderr,
|
|
520
|
-
)
|
|
521
605
|
print(
|
|
522
606
|
f" - session_id: {session_id[:8] if session_id else 'None'}...",
|
|
523
607
|
file=sys.stderr,
|
|
@@ -565,15 +649,22 @@ class EventHandlers:
|
|
|
565
649
|
git_branch: str,
|
|
566
650
|
):
|
|
567
651
|
"""Handle response tracking for subagent stop events with fuzzy matching."""
|
|
568
|
-
|
|
569
|
-
self.hook_handler
|
|
570
|
-
|
|
571
|
-
|
|
652
|
+
try:
|
|
653
|
+
rtm = getattr(self.hook_handler, "response_tracking_manager", None)
|
|
654
|
+
if not (
|
|
655
|
+
rtm
|
|
656
|
+
and getattr(rtm, "response_tracking_enabled", False)
|
|
657
|
+
and getattr(rtm, "response_tracker", None)
|
|
658
|
+
):
|
|
659
|
+
return
|
|
660
|
+
except Exception:
|
|
661
|
+
# Response tracking is optional
|
|
572
662
|
return
|
|
573
663
|
|
|
574
664
|
try:
|
|
575
665
|
# Get the original request data (with fuzzy matching fallback)
|
|
576
|
-
|
|
666
|
+
delegation_requests = getattr(self.hook_handler, "delegation_requests", {})
|
|
667
|
+
request_info = delegation_requests.get(session_id)
|
|
577
668
|
|
|
578
669
|
# If exact match fails, try partial matching
|
|
579
670
|
if not request_info and session_id:
|
|
@@ -583,7 +674,7 @@ class EventHandlers:
|
|
|
583
674
|
file=sys.stderr,
|
|
584
675
|
)
|
|
585
676
|
# Try to find a session that matches the first 8-16 characters
|
|
586
|
-
for stored_sid in list(
|
|
677
|
+
for stored_sid in list(delegation_requests.keys()):
|
|
587
678
|
if (
|
|
588
679
|
stored_sid.startswith(session_id[:8])
|
|
589
680
|
or session_id.startswith(stored_sid[:8])
|
|
@@ -598,17 +689,13 @@ class EventHandlers:
|
|
|
598
689
|
f" - ✅ Fuzzy match found: {stored_sid[:16]}...",
|
|
599
690
|
file=sys.stderr,
|
|
600
691
|
)
|
|
601
|
-
request_info =
|
|
602
|
-
stored_sid
|
|
603
|
-
)
|
|
692
|
+
request_info = delegation_requests.get(stored_sid)
|
|
604
693
|
# Update the key to use the current session_id for consistency
|
|
605
694
|
if request_info:
|
|
606
|
-
|
|
607
|
-
request_info
|
|
608
|
-
)
|
|
695
|
+
delegation_requests[session_id] = request_info
|
|
609
696
|
# Optionally remove the old key to avoid duplicates
|
|
610
697
|
if stored_sid != session_id:
|
|
611
|
-
del
|
|
698
|
+
del delegation_requests[stored_sid]
|
|
612
699
|
break
|
|
613
700
|
|
|
614
701
|
if request_info:
|
|
@@ -656,23 +743,31 @@ class EventHandlers:
|
|
|
656
743
|
)
|
|
657
744
|
|
|
658
745
|
# Track the response
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
response=response_text,
|
|
663
|
-
session_id=session_id,
|
|
664
|
-
metadata=metadata,
|
|
746
|
+
rtm = getattr(self.hook_handler, "response_tracking_manager", None)
|
|
747
|
+
response_tracker = (
|
|
748
|
+
getattr(rtm, "response_tracker", None) if rtm else None
|
|
665
749
|
)
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
750
|
+
if response_tracker and hasattr(response_tracker, "track_response"):
|
|
751
|
+
file_path = response_tracker.track_response(
|
|
752
|
+
agent_name=agent_type,
|
|
753
|
+
request=full_request,
|
|
754
|
+
response=response_text,
|
|
755
|
+
session_id=session_id,
|
|
756
|
+
metadata=metadata,
|
|
671
757
|
)
|
|
672
758
|
|
|
759
|
+
if file_path and DEBUG:
|
|
760
|
+
print(
|
|
761
|
+
f"✅ Tracked {agent_type} agent response on SubagentStop: {file_path.name}",
|
|
762
|
+
file=sys.stderr,
|
|
763
|
+
)
|
|
764
|
+
|
|
673
765
|
# Clean up the request data
|
|
674
|
-
|
|
675
|
-
|
|
766
|
+
delegation_requests = getattr(
|
|
767
|
+
self.hook_handler, "delegation_requests", {}
|
|
768
|
+
)
|
|
769
|
+
if session_id in delegation_requests:
|
|
770
|
+
del delegation_requests[session_id]
|
|
676
771
|
|
|
677
772
|
elif DEBUG:
|
|
678
773
|
print(
|
|
@@ -696,9 +791,14 @@ class EventHandlers:
|
|
|
696
791
|
- Essential for comprehensive monitoring of Claude interactions
|
|
697
792
|
"""
|
|
698
793
|
# Track the response for logging
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
794
|
+
try:
|
|
795
|
+
rtm = getattr(self.hook_handler, "response_tracking_manager", None)
|
|
796
|
+
if rtm and hasattr(rtm, "track_assistant_response"):
|
|
797
|
+
pending_prompts = getattr(self.hook_handler, "pending_prompts", {})
|
|
798
|
+
rtm.track_assistant_response(event, pending_prompts)
|
|
799
|
+
except Exception:
|
|
800
|
+
# Response tracking is optional
|
|
801
|
+
pass
|
|
702
802
|
|
|
703
803
|
# Get working directory and git branch
|
|
704
804
|
working_dir = event.get("cwd", "")
|
|
@@ -728,16 +828,21 @@ class EventHandlers:
|
|
|
728
828
|
}
|
|
729
829
|
|
|
730
830
|
# Check if this is a response to a tracked prompt
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
831
|
+
try:
|
|
832
|
+
pending_prompts = getattr(self.hook_handler, "pending_prompts", {})
|
|
833
|
+
if session_id in pending_prompts:
|
|
834
|
+
prompt_data = pending_prompts[session_id]
|
|
835
|
+
assistant_response_data["original_prompt"] = prompt_data.get(
|
|
836
|
+
"prompt", ""
|
|
837
|
+
)[:200]
|
|
838
|
+
assistant_response_data["prompt_timestamp"] = prompt_data.get(
|
|
839
|
+
"timestamp", ""
|
|
840
|
+
)
|
|
841
|
+
assistant_response_data["is_tracked_response"] = True
|
|
842
|
+
else:
|
|
843
|
+
assistant_response_data["is_tracked_response"] = False
|
|
844
|
+
except Exception:
|
|
845
|
+
# If prompt lookup fails, just mark as not tracked
|
|
741
846
|
assistant_response_data["is_tracked_response"] = False
|
|
742
847
|
|
|
743
848
|
# Debug logging
|
|
@@ -751,3 +856,33 @@ class EventHandlers:
|
|
|
751
856
|
self.hook_handler._emit_socketio_event(
|
|
752
857
|
"", "assistant_response", assistant_response_data
|
|
753
858
|
)
|
|
859
|
+
|
|
860
|
+
def handle_session_start_fast(self, event):
|
|
861
|
+
"""Handle session start events for tracking conversation sessions.
|
|
862
|
+
|
|
863
|
+
WHY track session starts:
|
|
864
|
+
- Provides visibility into new conversation sessions
|
|
865
|
+
- Enables tracking of session lifecycle and duration
|
|
866
|
+
- Useful for monitoring concurrent sessions and resource usage
|
|
867
|
+
"""
|
|
868
|
+
session_id = event.get("session_id", "")
|
|
869
|
+
working_dir = event.get("cwd", "")
|
|
870
|
+
git_branch = self._get_git_branch(working_dir) if working_dir else "Unknown"
|
|
871
|
+
|
|
872
|
+
session_start_data = {
|
|
873
|
+
"session_id": session_id,
|
|
874
|
+
"working_directory": working_dir,
|
|
875
|
+
"git_branch": git_branch,
|
|
876
|
+
"timestamp": datetime.now(timezone.utc).isoformat(),
|
|
877
|
+
"hook_event_name": "SessionStart",
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
# Debug logging
|
|
881
|
+
if DEBUG:
|
|
882
|
+
print(
|
|
883
|
+
f"Hook handler: Processing SessionStart - session: '{session_id}'",
|
|
884
|
+
file=sys.stderr,
|
|
885
|
+
)
|
|
886
|
+
|
|
887
|
+
# Emit normalized event
|
|
888
|
+
self.hook_handler._emit_socketio_event("", "session_start", session_start_data)
|