claude-mpm 4.0.23__tar.gz → 4.0.25__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- claude_mpm-4.0.25/BUILD_NUMBER +1 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/PKG-INFO +19 -13
- claude_mpm-4.0.25/VERSION +1 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/pyproject.toml +93 -29
- claude_mpm-4.0.25/src/claude_mpm/BUILD_NUMBER +1 -0
- claude_mpm-4.0.25/src/claude_mpm/VERSION +1 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/BASE_AGENT_TEMPLATE.md +4 -1
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/BASE_PM.md +3 -0
- claude_mpm-4.0.25/src/claude_mpm/agents/templates/code_analyzer.json +103 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/commands/agents.py +453 -113
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/commands/aggregate.py +107 -15
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/commands/cleanup.py +142 -10
- claude_mpm-4.0.25/src/claude_mpm/cli/commands/config.py +428 -0
- claude_mpm-4.0.25/src/claude_mpm/cli/commands/info.py +199 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/commands/mcp_command_router.py +5 -76
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/commands/mcp_install_commands.py +68 -36
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/commands/mcp_server_commands.py +30 -37
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/commands/memory.py +331 -61
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/commands/monitor.py +101 -7
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/commands/run.py +368 -8
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/commands/tickets.py +206 -24
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/parsers/mcp_parser.py +3 -0
- claude_mpm-4.0.25/src/claude_mpm/cli/shared/__init__.py +40 -0
- claude_mpm-4.0.25/src/claude_mpm/cli/shared/argument_patterns.py +212 -0
- claude_mpm-4.0.25/src/claude_mpm/cli/shared/command_base.py +234 -0
- claude_mpm-4.0.25/src/claude_mpm/cli/shared/error_handling.py +238 -0
- claude_mpm-4.0.25/src/claude_mpm/cli/shared/output_formatters.py +231 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/config/agent_config.py +29 -8
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/container.py +6 -4
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/service_registry.py +4 -2
- claude_mpm-4.0.25/src/claude_mpm/core/shared/__init__.py +17 -0
- claude_mpm-4.0.25/src/claude_mpm/core/shared/config_loader.py +320 -0
- claude_mpm-4.0.25/src/claude_mpm/core/shared/path_resolver.py +277 -0
- claude_mpm-4.0.25/src/claude_mpm/core/shared/singleton_manager.py +208 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/hooks/claude_hooks/memory_integration.py +4 -2
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/hooks/claude_hooks/response_tracking.py +14 -3
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/hooks/memory_integration_hook.py +11 -2
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/agent_deployment.py +43 -23
- claude_mpm-4.0.25/src/claude_mpm/services/agents/deployment/deployment_wrapper.py +71 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/pipeline/pipeline_context.py +1 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/pipeline/steps/agent_processing_step.py +43 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/processors/agent_deployment_context.py +4 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/processors/agent_processor.py +1 -1
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/loading/base_agent_manager.py +11 -3
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/registry/deployed_agent_discovery.py +14 -5
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/event_aggregator.py +4 -2
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/config/config_loader.py +89 -28
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/config/configuration.py +29 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/registry/service_registry.py +22 -5
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/memory/builder.py +6 -1
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/response_tracker.py +3 -1
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/runner_configuration_service.py +15 -6
- claude_mpm-4.0.25/src/claude_mpm/services/shared/__init__.py +20 -0
- claude_mpm-4.0.25/src/claude_mpm/services/shared/async_service_base.py +219 -0
- claude_mpm-4.0.25/src/claude_mpm/services/shared/config_service_base.py +292 -0
- claude_mpm-4.0.25/src/claude_mpm/services/shared/lifecycle_service_base.py +317 -0
- claude_mpm-4.0.25/src/claude_mpm/services/shared/manager_base.py +303 -0
- claude_mpm-4.0.25/src/claude_mpm/services/shared/service_factory.py +308 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm.egg-info/PKG-INFO +19 -13
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm.egg-info/SOURCES.txt +16 -2
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm.egg-info/requires.txt +11 -4
- claude_mpm-4.0.23/BUILD_NUMBER +0 -1
- claude_mpm-4.0.23/VERSION +0 -1
- claude_mpm-4.0.23/requirements.txt +0 -25
- claude_mpm-4.0.23/setup.py +0 -241
- claude_mpm-4.0.23/src/claude_mpm/BUILD_NUMBER +0 -1
- claude_mpm-4.0.23/src/claude_mpm/VERSION +0 -1
- claude_mpm-4.0.23/src/claude_mpm/agents/templates/code_analyzer.json +0 -103
- claude_mpm-4.0.23/src/claude_mpm/cli/commands/config.py +0 -294
- claude_mpm-4.0.23/src/claude_mpm/cli/commands/info.py +0 -90
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/CLAUDE.md +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/LICENSE +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/MANIFEST.in +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/README.md +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/scripts/ticket +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/setup.cfg +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/__main__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/INSTRUCTIONS.md +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/MEMORY.md +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/OUTPUT_STYLE.md +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/WORKFLOW.md +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/agent-template.yaml +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/agent_loader.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/agent_loader_integration.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/agents_metadata.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/async_agent_loader.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/backups/INSTRUCTIONS.md +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/base_agent.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/base_agent_loader.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/frontmatter_validator.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/schema/agent_schema.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/system_agent_config.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/api_qa.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/backup/data_engineer_agent_20250726_234551.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/backup/documentation_agent_20250726_234551.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/backup/engineer_agent_20250726_234551.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/backup/ops_agent_20250726_234551.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/backup/qa_agent_20250726_234551.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/backup/research_agent_2025011_234551.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/backup/research_agent_20250726_234551.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/backup/research_memory_efficient.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/backup/security_agent_20250726_234551.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/backup/version_control_agent_20250726_234551.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/data_engineer.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/documentation.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/engineer.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/memory_manager.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/ops.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/project_organizer.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/qa.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/refactoring_engineer.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/research.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/security.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/ticketing.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/vercel_ops_agent.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/vercel_ops_instructions.md +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/version_control.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/web_qa.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/agents/templates/web_ui.json +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/__main__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/commands/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/commands/mcp.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/commands/mcp_config_commands.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/commands/mcp_tool_commands.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/commands/run_config_checker.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/commands/socketio_monitor.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/parser.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/parsers/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/parsers/agents_parser.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/parsers/base_parser.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/parsers/config_parser.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/parsers/memory_parser.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/parsers/monitor_parser.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/parsers/run_parser.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/parsers/tickets_parser.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/ticket_cli.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli/utils.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli_module/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli_module/args.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli_module/commands.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/cli_module/migration_example.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/config/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/config/experimental_features.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/config/paths.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/config/socketio_config.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/constants.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/agent_name_normalizer.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/agent_registry.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/agent_session_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/base_service.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/cache.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/claude_runner.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/config.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/config_aliases.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/config_constants.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/constants.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/exceptions.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/factories.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/framework_loader.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/hook_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/hook_performance_config.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/injectable_service.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/interactive_session.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/interfaces.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/lazy.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/logger.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/logging_config.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/minimal_framework_loader.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/mixins.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/oneshot_session.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/optimized_agent_loader.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/optimized_startup.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/output_style_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/pm_hook_interceptor.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/session_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/socketio_pool.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/tool_access_control.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/types.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/typing_utils.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/unified_agent_registry.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/unified_config.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/core/unified_paths.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/index.html +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/open_dashboard.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/built/components/agent-inference.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/built/components/event-processor.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/built/components/event-viewer.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/built/components/export-manager.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/built/components/file-tool-tracker.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/built/components/hud-library-loader.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/built/components/hud-manager.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/built/components/hud-visualizer.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/built/components/module-viewer.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/built/components/session-manager.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/built/components/socket-manager.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/built/components/ui-state-manager.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/built/components/working-directory.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/built/dashboard.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/built/socket-client.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/css/dashboard.css +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/dist/components/agent-inference.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/dist/components/event-processor.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/dist/components/event-viewer.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/dist/components/export-manager.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/dist/components/file-tool-tracker.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/dist/components/hud-library-loader.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/dist/components/hud-manager.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/dist/components/hud-visualizer.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/dist/components/module-viewer.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/dist/components/session-manager.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/dist/components/socket-manager.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/dist/components/ui-state-manager.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/dist/components/working-directory.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/dist/dashboard.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/dist/socket-client.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/js/components/agent-inference.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/js/components/event-processor.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/js/components/event-viewer.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/js/components/export-manager.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/js/components/file-tool-tracker.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/js/components/hud-library-loader.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/js/components/hud-manager.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/js/components/hud-visualizer.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/js/components/module-viewer.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/js/components/session-manager.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/js/components/socket-manager.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/js/components/ui-state-manager.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/js/components/working-directory.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/js/dashboard.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/js/extension-error-handler.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/static/js/socket-client.js +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/templates/index.html +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/dashboard/test_dashboard.html +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/experimental/cli_enhancements.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/generators/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/generators/agent_profile_generator.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/hooks/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/hooks/base_hook.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/hooks/claude_hooks/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/hooks/claude_hooks/connection_pool.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/hooks/claude_hooks/event_handlers.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/hooks/claude_hooks/hook_handler.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/hooks/claude_hooks/hook_wrapper.sh +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/hooks/claude_hooks/tool_analysis.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/hooks/tool_call_interceptor.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/hooks/validation_hooks.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/init.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/models/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/models/agent_definition.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/models/agent_session.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/scripts/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/scripts/mcp_server.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/scripts/mcp_wrapper.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/scripts/socketio_daemon.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/scripts/socketio_daemon_hardened.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/scripts/socketio_server_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/scripts/start_activity_logging.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agent_capabilities_service.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/agent_config_provider.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/agent_configuration_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/agent_definition_factory.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/agent_discovery_service.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/agent_environment_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/agent_filesystem_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/agent_format_converter.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/agent_frontmatter_validator.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/agent_lifecycle_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/agent_metrics_collector.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/agent_restore_handler.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/agent_template_builder.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/agent_validator.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/agent_version_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/agent_versioning.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/agents_directory_resolver.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/async_agent_deployment.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/config/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/config/deployment_config.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/config/deployment_config_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/deployment_config_loader.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/deployment_type_detector.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/facade/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/facade/async_deployment_executor.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/facade/deployment_executor.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/facade/deployment_facade.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/facade/sync_deployment_executor.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/interface_adapter.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/lifecycle_health_checker.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/lifecycle_performance_tracker.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/multi_source_deployment_service.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/pipeline/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/pipeline/pipeline_builder.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/pipeline/pipeline_executor.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/pipeline/steps/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/pipeline/steps/base_step.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/pipeline/steps/configuration_step.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/pipeline/steps/target_directory_step.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/pipeline/steps/validation_step.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/processors/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/processors/agent_deployment_result.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/refactored_agent_deployment_service.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/results/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/results/deployment_metrics.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/results/deployment_result_builder.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/strategies/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/strategies/base_strategy.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/strategies/project_strategy.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/strategies/strategy_selector.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/strategies/system_strategy.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/strategies/user_strategy.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/system_instructions_deployer.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/validation/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/validation/agent_validator.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/validation/deployment_validator.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/validation/template_validator.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/deployment/validation/validation_result.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/loading/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/loading/agent_profile_loader.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/loading/framework_agent_loader.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/management/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/management/agent_capabilities_generator.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/management/agent_management_service.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/memory/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/memory/agent_memory_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/memory/agent_persistence_service.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/memory/content_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/memory/template_generator.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/registry/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/agents/registry/modification_tracker.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/async_session_logger.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/claude_session_logger.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/command_handler_service.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/communication/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/core/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/core/base.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/core/interfaces/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/core/interfaces/agent.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/core/interfaces/communication.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/core/interfaces/infrastructure.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/core/interfaces/service.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/core/interfaces.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/exceptions.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/framework_claude_md_generator/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/framework_claude_md_generator/content_assembler.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/framework_claude_md_generator/content_validator.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/framework_claude_md_generator/deployment_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/framework_claude_md_generator/section_generators/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/framework_claude_md_generator/section_generators/agents.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/framework_claude_md_generator/section_generators/claude_pm_init.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/framework_claude_md_generator/section_generators/core_responsibilities.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/framework_claude_md_generator/section_generators/delegation_constraints.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/framework_claude_md_generator/section_generators/environment_config.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/framework_claude_md_generator/section_generators/footer.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/framework_claude_md_generator/section_generators/header.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/framework_claude_md_generator/section_generators/orchestration_principles.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/framework_claude_md_generator/section_generators/role_designation.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/framework_claude_md_generator/section_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/framework_claude_md_generator/version_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/hook_service.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/infrastructure/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/infrastructure/context_preservation.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/infrastructure/daemon_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/infrastructure/logging.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/infrastructure/monitoring.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/config/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/config/config_schema.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/core/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/core/base.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/core/exceptions.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/core/interfaces.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/core/singleton_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/core/startup_verification.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/main.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/registry/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/registry/tool_registry.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/server/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/server/mcp_gateway.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/tools/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/tools/base_adapter.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/tools/document_summarizer.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/tools/health_check_tool.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/tools/hello_world.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/tools/ticket_tools.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/mcp_gateway/tools/unified_ticket_tool.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/memory/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/memory/cache/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/memory/cache/shared_prompt_cache.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/memory/cache/simple_cache.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/memory/indexed_memory.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/memory/optimizer.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/memory/router.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/memory_hook_service.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/port_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/project/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/project/analyzer.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/project/registry.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/recovery_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/session_management_service.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/socketio/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/socketio/client_proxy.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/socketio/handlers/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/socketio/handlers/base.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/socketio/handlers/connection.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/socketio/handlers/file.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/socketio/handlers/git.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/socketio/handlers/hook.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/socketio/handlers/memory.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/socketio/handlers/project.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/socketio/handlers/registry.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/socketio/server/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/socketio/server/broadcaster.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/socketio/server/core.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/socketio/server/main.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/socketio_client_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/socketio_server.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/subprocess_launcher_service.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/system_instructions_service.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/ticket_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/utility_service.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/version_control/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/version_control/branch_strategy.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/version_control/conflict_resolution.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/version_control/git_operations.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/version_control/semantic_versioning.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/version_control/version_parser.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/services/version_service.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/storage/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/storage/state_storage.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/ticket_wrapper.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/utils/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/utils/agent_dependency_loader.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/utils/config_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/utils/console.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/utils/dependency_cache.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/utils/dependency_manager.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/utils/dependency_strategies.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/utils/environment_context.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/utils/error_handler.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/utils/file_utils.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/utils/framework_detection.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/utils/import_migration_example.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/utils/imports.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/utils/path_operations.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/utils/robust_installer.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/utils/session_logging.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/utils/subprocess_utils.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/validation/__init__.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/validation/agent_validator.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm/validation/frontmatter_validator.py +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm.egg-info/dependency_links.txt +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm.egg-info/entry_points.txt +0 -0
- {claude_mpm-4.0.23 → claude_mpm-4.0.25}/src/claude_mpm.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
292
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: claude-mpm
|
|
3
|
-
Version: 4.0.
|
|
4
|
-
Summary: Claude Multi-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Author-email: bob@matsuoka.com
|
|
3
|
+
Version: 4.0.25
|
|
4
|
+
Summary: Claude Multi-Agent Project Manager - Orchestrate Claude with agent delegation and ticket tracking
|
|
5
|
+
Author-email: Bob Matsuoka <bob@matsuoka.com>
|
|
6
|
+
Maintainer: Claude MPM Team
|
|
8
7
|
License: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/bobmatnyc/claude-mpm
|
|
9
|
+
Project-URL: Repository, https://github.com/bobmatnyc/claude-mpm.git
|
|
10
|
+
Project-URL: Issues, https://github.com/bobmatnyc/claude-mpm/issues
|
|
11
|
+
Project-URL: Documentation, https://github.com/bobmatnyc/claude-mpm/blob/main/README.md
|
|
9
12
|
Keywords: claude,orchestration,multi-agent,ticket-management
|
|
10
13
|
Classifier: Development Status :: 3 - Alpha
|
|
11
14
|
Classifier: Intended Audience :: Developers
|
|
12
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
13
15
|
Classifier: Programming Language :: Python :: 3
|
|
14
16
|
Classifier: Programming Language :: Python :: 3.8
|
|
15
17
|
Classifier: Programming Language :: Python :: 3.9
|
|
@@ -29,16 +31,21 @@ Requires-Dist: requests>=2.25.0
|
|
|
29
31
|
Requires-Dist: flask>=3.0.0
|
|
30
32
|
Requires-Dist: flask-cors>=4.0.0
|
|
31
33
|
Requires-Dist: watchdog>=3.0.0
|
|
32
|
-
Requires-Dist: tree-sitter>=0.21.0
|
|
33
34
|
Requires-Dist: python-socketio>=5.11.0
|
|
34
35
|
Requires-Dist: aiohttp>=3.9.0
|
|
35
36
|
Requires-Dist: aiohttp-cors<0.8.0,>=0.7.0
|
|
36
37
|
Requires-Dist: python-engineio>=4.8.0
|
|
38
|
+
Requires-Dist: aiofiles>=23.0.0
|
|
39
|
+
Requires-Dist: websockets>=12.0
|
|
37
40
|
Requires-Dist: python-frontmatter>=1.0.0
|
|
38
41
|
Requires-Dist: mistune>=3.0.0
|
|
39
|
-
Requires-Dist:
|
|
40
|
-
Requires-Dist: mcp>=0.1.0
|
|
42
|
+
Requires-Dist: tree-sitter>=0.21.0
|
|
41
43
|
Requires-Dist: ijson>=3.2.0
|
|
44
|
+
Requires-Dist: mcp>=0.1.0
|
|
45
|
+
Requires-Dist: toml>=0.10.2
|
|
46
|
+
Requires-Dist: packaging>=21.0
|
|
47
|
+
Requires-Dist: pydantic>=2.0.0
|
|
48
|
+
Requires-Dist: pydantic-settings>=2.0.0
|
|
42
49
|
Requires-Dist: importlib-resources>=5.0; python_version < "3.9"
|
|
43
50
|
Provides-Extra: dev
|
|
44
51
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
@@ -46,8 +53,10 @@ Requires-Dist: pytest-asyncio; extra == "dev"
|
|
|
46
53
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
47
54
|
Requires-Dist: black; extra == "dev"
|
|
48
55
|
Requires-Dist: flake8; extra == "dev"
|
|
49
|
-
Requires-Dist: mypy; extra == "dev"
|
|
50
56
|
Requires-Dist: pre-commit; extra == "dev"
|
|
57
|
+
Requires-Dist: mypy>=1.0.0; extra == "dev"
|
|
58
|
+
Requires-Dist: types-PyYAML>=6.0.0; extra == "dev"
|
|
59
|
+
Requires-Dist: types-requests>=2.25.0; extra == "dev"
|
|
51
60
|
Provides-Extra: docs
|
|
52
61
|
Requires-Dist: sphinx>=7.2.0; extra == "docs"
|
|
53
62
|
Requires-Dist: sphinx-rtd-theme>=1.3.0; extra == "docs"
|
|
@@ -96,10 +105,7 @@ Requires-Dist: tree-sitter-cpp>=0.21.0; extra == "agents"
|
|
|
96
105
|
Requires-Dist: tree-sitter-c>=0.21.0; extra == "agents"
|
|
97
106
|
Requires-Dist: tree-sitter-ruby>=0.21.0; extra == "agents"
|
|
98
107
|
Requires-Dist: tree-sitter-php>=0.21.0; extra == "agents"
|
|
99
|
-
Dynamic: author-email
|
|
100
|
-
Dynamic: home-page
|
|
101
108
|
Dynamic: license-file
|
|
102
|
-
Dynamic: requires-python
|
|
103
109
|
|
|
104
110
|
# Claude MPM - Multi-Agent Project Manager
|
|
105
111
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4.0.25
|
|
@@ -5,42 +5,94 @@ build-backend = "setuptools.build_meta"
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "claude-mpm"
|
|
7
7
|
dynamic = [ "version",]
|
|
8
|
-
description = "Claude Multi-
|
|
8
|
+
description = "Claude Multi-Agent Project Manager - Orchestrate Claude with agent delegation and ticket tracking"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.8"
|
|
11
|
+
license = {text = "MIT"}
|
|
11
12
|
keywords = [ "claude", "orchestration", "multi-agent", "ticket-management",]
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
13
|
+
authors = [
|
|
14
|
+
{name = "Bob Matsuoka", email = "bob@matsuoka.com"}
|
|
15
|
+
]
|
|
16
|
+
maintainers = [
|
|
17
|
+
{name = "Claude MPM Team"}
|
|
18
|
+
]
|
|
19
|
+
classifiers = [
|
|
20
|
+
"Development Status :: 3 - Alpha",
|
|
21
|
+
"Intended Audience :: Developers",
|
|
22
|
+
"Programming Language :: Python :: 3",
|
|
23
|
+
"Programming Language :: Python :: 3.8",
|
|
24
|
+
"Programming Language :: Python :: 3.9",
|
|
25
|
+
"Programming Language :: Python :: 3.10",
|
|
26
|
+
"Programming Language :: Python :: 3.11",
|
|
27
|
+
"Programming Language :: Python :: 3.12",
|
|
28
|
+
]
|
|
29
|
+
dependencies = [
|
|
30
|
+
# Core dependencies
|
|
31
|
+
"ai-trackdown-pytools>=1.4.0",
|
|
32
|
+
"pyyaml>=6.0",
|
|
33
|
+
"python-dotenv>=0.19.0",
|
|
34
|
+
"click>=8.0.0",
|
|
35
|
+
"pexpect>=4.8.0",
|
|
36
|
+
"psutil>=5.9.0",
|
|
37
|
+
"requests>=2.25.0",
|
|
38
|
+
|
|
39
|
+
# Web framework dependencies
|
|
40
|
+
"flask>=3.0.0",
|
|
41
|
+
"flask-cors>=4.0.0",
|
|
42
|
+
|
|
43
|
+
# File system and monitoring
|
|
44
|
+
"watchdog>=3.0.0",
|
|
45
|
+
|
|
46
|
+
# Async and networking dependencies
|
|
47
|
+
"python-socketio>=5.11.0",
|
|
48
|
+
"aiohttp>=3.9.0",
|
|
49
|
+
"aiohttp-cors>=0.7.0,<0.8.0",
|
|
50
|
+
"python-engineio>=4.8.0",
|
|
51
|
+
"aiofiles>=23.0.0",
|
|
52
|
+
"websockets>=12.0",
|
|
53
|
+
|
|
54
|
+
# Content processing
|
|
55
|
+
"python-frontmatter>=1.0.0",
|
|
56
|
+
"mistune>=3.0.0",
|
|
57
|
+
"tree-sitter>=0.21.0",
|
|
33
58
|
"ijson>=3.2.0",
|
|
59
|
+
|
|
60
|
+
# MCP and protocol support
|
|
61
|
+
"mcp>=0.1.0",
|
|
62
|
+
|
|
63
|
+
# Utility dependencies
|
|
64
|
+
"toml>=0.10.2",
|
|
65
|
+
"packaging>=21.0",
|
|
66
|
+
"pydantic>=2.0.0",
|
|
67
|
+
"pydantic-settings>=2.0.0",
|
|
68
|
+
|
|
69
|
+
# Python version compatibility
|
|
34
70
|
"importlib-resources>=5.0; python_version < '3.9'",
|
|
35
71
|
]
|
|
36
|
-
[[project.authors]]
|
|
37
|
-
name = "Claude MPM Team"
|
|
38
72
|
|
|
39
|
-
[project.
|
|
40
|
-
|
|
73
|
+
[project.urls]
|
|
74
|
+
Homepage = "https://github.com/bobmatnyc/claude-mpm"
|
|
75
|
+
Repository = "https://github.com/bobmatnyc/claude-mpm.git"
|
|
76
|
+
Issues = "https://github.com/bobmatnyc/claude-mpm/issues"
|
|
77
|
+
Documentation = "https://github.com/bobmatnyc/claude-mpm/blob/main/README.md"
|
|
41
78
|
|
|
42
79
|
[project.optional-dependencies]
|
|
43
|
-
dev = [
|
|
80
|
+
dev = [
|
|
81
|
+
# Testing framework
|
|
82
|
+
"pytest>=7.0",
|
|
83
|
+
"pytest-asyncio",
|
|
84
|
+
"pytest-cov",
|
|
85
|
+
|
|
86
|
+
# Code formatting and linting
|
|
87
|
+
"black",
|
|
88
|
+
"flake8",
|
|
89
|
+
"pre-commit",
|
|
90
|
+
|
|
91
|
+
# Type checking
|
|
92
|
+
"mypy>=1.0.0",
|
|
93
|
+
"types-PyYAML>=6.0.0",
|
|
94
|
+
"types-requests>=2.25.0",
|
|
95
|
+
]
|
|
44
96
|
docs = [ "sphinx>=7.2.0", "sphinx-rtd-theme>=1.3.0", "sphinx-autobuild>=2021.3.14",]
|
|
45
97
|
monitor = []
|
|
46
98
|
# Pure Python agent dependencies - no compilation required
|
|
@@ -57,7 +109,16 @@ claude-mpm-mcp = "claude_mpm.services.mcp_gateway.server.stdio_server:main_sync"
|
|
|
57
109
|
claude-mpm-mcp-wrapper = "claude_mpm.scripts.mcp_wrapper:entry_point"
|
|
58
110
|
|
|
59
111
|
[tool.uv]
|
|
60
|
-
dev-dependencies = [
|
|
112
|
+
dev-dependencies = [
|
|
113
|
+
"pytest>=7.0",
|
|
114
|
+
"pytest-asyncio",
|
|
115
|
+
"pytest-cov",
|
|
116
|
+
"black",
|
|
117
|
+
"flake8",
|
|
118
|
+
"mypy>=1.0.0",
|
|
119
|
+
"types-PyYAML>=6.0.0",
|
|
120
|
+
"types-requests>=2.25.0",
|
|
121
|
+
]
|
|
61
122
|
|
|
62
123
|
[tool.black]
|
|
63
124
|
line-length = 88
|
|
@@ -95,6 +156,9 @@ claude_mpm = [
|
|
|
95
156
|
[tool.setuptools.packages.find]
|
|
96
157
|
where = [ "src",]
|
|
97
158
|
|
|
159
|
+
[tool.setuptools.dynamic]
|
|
160
|
+
version = {file = "VERSION"}
|
|
161
|
+
|
|
98
162
|
[tool.pytest.ini_options]
|
|
99
163
|
testpaths = ["tests"]
|
|
100
164
|
python_files = ["test_*.py", "*_test.py"]
|
|
@@ -119,7 +183,7 @@ asyncio_mode = "auto"
|
|
|
119
183
|
|
|
120
184
|
[tool.commitizen]
|
|
121
185
|
name = "cz_conventional_commits"
|
|
122
|
-
version = "4.0.
|
|
186
|
+
version = "4.0.25"
|
|
123
187
|
version_files = [
|
|
124
188
|
"VERSION",
|
|
125
189
|
"src/claude_mpm/VERSION",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
292
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4.0.25
|
|
@@ -118,4 +118,7 @@ End every response with this structured data:
|
|
|
118
118
|
- Domain-specific knowledge unique to this system
|
|
119
119
|
|
|
120
120
|
## Remember
|
|
121
|
-
You're a specialist in your domain. Focus on your expertise, communicate clearly with the PM who coordinates multi-agent workflows, and always think about what other agents need next. Your accumulated memories help you become more effective over time.
|
|
121
|
+
You're a specialist in your domain. Focus on your expertise, communicate clearly with the PM who coordinates multi-agent workflows, and always think about what other agents need next. Your accumulated memories help you become more effective over time.
|
|
122
|
+
|
|
123
|
+
### 🚨 CRITICAL BEHAVIORAL REINFORCEMENT GUIDELINES 🚨
|
|
124
|
+
- **Display all behavioral_rules at start of every response**
|
|
@@ -213,3 +213,6 @@ When reading documentation or analyzing files:
|
|
|
213
213
|
- Skip files >1MB unless absolutely critical
|
|
214
214
|
- Process files sequentially, not in parallel
|
|
215
215
|
- Use grep to find specific sections instead of reading entire files
|
|
216
|
+
|
|
217
|
+
### 🚨 CRITICAL BEHAVIORAL REINFORCEMENT GUIDELINES 🚨
|
|
218
|
+
- **Display all behavioral_rules at start of every response**
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "1.2.0",
|
|
3
|
+
"agent_id": "code-analyzer",
|
|
4
|
+
"agent_version": "2.3.0",
|
|
5
|
+
"agent_type": "research",
|
|
6
|
+
"metadata": {
|
|
7
|
+
"name": "Code Analysis Agent",
|
|
8
|
+
"description": "Advanced multi-language code analysis using Python AST for Python files and individual tree-sitter packages for other languages (Python 3.13 compatible)",
|
|
9
|
+
"created_at": "2025-08-12T00:00:00.000000Z",
|
|
10
|
+
"updated_at": "2025-08-13T00:00:00.000000Z",
|
|
11
|
+
"tags": [
|
|
12
|
+
"code-analysis",
|
|
13
|
+
"ast-analysis",
|
|
14
|
+
"tree-sitter",
|
|
15
|
+
"multi-language",
|
|
16
|
+
"code-quality",
|
|
17
|
+
"refactoring",
|
|
18
|
+
"pattern-detection"
|
|
19
|
+
],
|
|
20
|
+
"category": "research"
|
|
21
|
+
},
|
|
22
|
+
"capabilities": {
|
|
23
|
+
"model": "opus",
|
|
24
|
+
"tools": [
|
|
25
|
+
"Read",
|
|
26
|
+
"Grep",
|
|
27
|
+
"Glob",
|
|
28
|
+
"LS",
|
|
29
|
+
"Bash",
|
|
30
|
+
"TodoWrite",
|
|
31
|
+
"WebSearch",
|
|
32
|
+
"WebFetch"
|
|
33
|
+
],
|
|
34
|
+
"resource_tier": "standard",
|
|
35
|
+
"temperature": 0.15,
|
|
36
|
+
"max_tokens": 16384,
|
|
37
|
+
"timeout": 1200,
|
|
38
|
+
"memory_limit": 4096,
|
|
39
|
+
"cpu_limit": 70,
|
|
40
|
+
"network_access": true
|
|
41
|
+
},
|
|
42
|
+
"knowledge": {
|
|
43
|
+
"domain_expertise": [
|
|
44
|
+
"Python AST parsing using native ast module",
|
|
45
|
+
"Individual tree-sitter packages for multi-language support",
|
|
46
|
+
"Dynamic package installation for language support",
|
|
47
|
+
"Code quality metrics and complexity analysis",
|
|
48
|
+
"Design pattern recognition and anti-pattern detection",
|
|
49
|
+
"Performance bottleneck identification through static analysis",
|
|
50
|
+
"Security vulnerability pattern detection",
|
|
51
|
+
"Refactoring opportunity identification",
|
|
52
|
+
"Code smell detection and remediation strategies",
|
|
53
|
+
"Python 3.13 compatibility strategies"
|
|
54
|
+
],
|
|
55
|
+
"best_practices": [
|
|
56
|
+
"Use Python's native AST for all Python files",
|
|
57
|
+
"Dynamically install tree-sitter language packages as needed",
|
|
58
|
+
"Parse code into AST before making structural recommendations",
|
|
59
|
+
"Analyze cyclomatic complexity and cognitive complexity",
|
|
60
|
+
"Identify dead code and unused dependencies",
|
|
61
|
+
"Check for SOLID principle violations",
|
|
62
|
+
"Detect common security vulnerabilities (OWASP Top 10)",
|
|
63
|
+
"Measure code duplication and suggest DRY improvements",
|
|
64
|
+
"Analyze dependency coupling and cohesion metrics",
|
|
65
|
+
"Handle missing packages gracefully with automatic installation"
|
|
66
|
+
],
|
|
67
|
+
"constraints": [
|
|
68
|
+
"Focus on static analysis without execution",
|
|
69
|
+
"Provide actionable, specific recommendations",
|
|
70
|
+
"Include code examples for suggested improvements",
|
|
71
|
+
"Prioritize findings by impact and effort",
|
|
72
|
+
"Consider language-specific idioms and conventions",
|
|
73
|
+
"Always use native AST for Python files",
|
|
74
|
+
"Install individual tree-sitter packages on-demand"
|
|
75
|
+
]
|
|
76
|
+
},
|
|
77
|
+
"dependencies": {
|
|
78
|
+
"python": [
|
|
79
|
+
"tree-sitter>=0.21.0",
|
|
80
|
+
"tree-sitter-python>=0.21.0",
|
|
81
|
+
"tree-sitter-javascript>=0.21.0",
|
|
82
|
+
"tree-sitter-typescript>=0.21.0",
|
|
83
|
+
"tree-sitter-go>=0.21.0",
|
|
84
|
+
"tree-sitter-rust>=0.21.0",
|
|
85
|
+
"tree-sitter-java>=0.21.0",
|
|
86
|
+
"tree-sitter-cpp>=0.21.0",
|
|
87
|
+
"tree-sitter-c>=0.21.0",
|
|
88
|
+
"tree-sitter-ruby>=0.21.0",
|
|
89
|
+
"tree-sitter-php>=0.21.0",
|
|
90
|
+
"astroid>=3.0.0",
|
|
91
|
+
"rope>=1.11.0",
|
|
92
|
+
"libcst>=1.1.0",
|
|
93
|
+
"radon>=6.0.0",
|
|
94
|
+
"pygments>=2.17.0"
|
|
95
|
+
],
|
|
96
|
+
"system": [
|
|
97
|
+
"python3",
|
|
98
|
+
"git"
|
|
99
|
+
],
|
|
100
|
+
"optional": false
|
|
101
|
+
},
|
|
102
|
+
"instructions": "<!-- MEMORY WARNING: Extract and summarize immediately, never retain full file contents -->\\n<!-- CRITICAL: Use Read \u2192 Extract \u2192 Summarize \u2192 Discard pattern -->\\n<!-- PATTERN: Sequential processing only - one file at a time -->\\n<!-- AST MEMORY LIMIT: Parse maximum 500KB of code at once, use chunking for larger files -->\\n<!-- TREE-SITTER MEMORY: Release parsers after each file, never keep multiple parsers in memory -->\\n\\n# Code Analysis Agent - ADVANCED CODE ANALYSIS WITH MEMORY PROTECTION\\n\\n## \ud83d\udd34 CRITICAL MEMORY MANAGEMENT PROTOCOL \ud83d\udd34\\n\\n### Content Threshold System\\n- **Single File Limit**: 20KB or 200 lines triggers immediate summarization\\n- **Critical Files**: Files >100KB must ALWAYS be summarized, NEVER fully loaded\\n- **Cumulative Limit**: Maximum 50KB total or 3 files before mandatory batch summarization\\n- **AST Memory Limit**: Maximum 500KB of code can be parsed at once\\n- **Parser Management**: Release tree-sitter parsers after EACH file\\n\\n### Memory Management Rules\\n1. **Check File Size First**: ALWAYS use `ls -lh` or `wc -l` before reading\\n2. **Sequential Processing**: Process files ONE AT A TIME, never in parallel\\n3. **Immediate Extraction**: Extract patterns/metrics immediately after reading\\n4. **Discard After Analysis**: Clear file contents from memory after extraction\\n5. **Use Grep for Targeted Reads**: When looking for specific patterns, use Grep instead of Read\\n6. **Maximum Files**: Analyze maximum 3-5 files per analysis batch\\n\\n### Forbidden Memory Practices\\n\u274c **NEVER** read entire files when grep suffices\\n\u274c **NEVER** process multiple large files in parallel\\n\u274c **NEVER** retain file contents after extraction\\n\u274c **NEVER** load files >1MB into memory\\n\u274c **NEVER** keep multiple AST trees in memory simultaneously\\n\u274c **NEVER** store full file contents in variables\\n\\n### AST Memory Management\\n```python\\nimport sys\\nimport gc\\nimport resource\\n\\ndef check_memory_usage():\\n \\\"\\\"\\\"Monitor memory usage before processing.\\\"\\\"\\\"\\n usage = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss\\n # Convert to MB (Linux gives KB, macOS gives bytes)\\n mb = usage / 1024 if sys.platform == 'linux' else usage / (1024 * 1024)\\n if mb > 500: # Alert if using more than 500MB\\n gc.collect() # Force garbage collection\\n print(f\\\"WARNING: High memory usage: {mb:.1f}MB\\\")\\n return mb\\n\\ndef analyze_with_memory_limits(filepath):\\n \\\"\\\"\\\"Analyze file with strict memory management.\\\"\\\"\\\"\\n # Check file size first\\n import os\\n size = os.path.getsize(filepath)\\n \\n if size > 1024 * 1024: # 1MB\\n print(f\\\"File too large ({size/1024:.1f}KB), using chunked analysis\\\")\\n return analyze_in_chunks(filepath)\\n \\n # For smaller files, parse normally but release immediately\\n try:\\n with open(filepath, 'r') as f:\\n content = f.read()\\n \\n # Parse and extract immediately\\n if filepath.endswith('.py'):\\n tree = ast.parse(content)\\n metrics = extract_metrics(tree)\\n del tree # Explicitly delete AST\\n else:\\n # Use tree-sitter with immediate cleanup\\n parser = get_parser(filepath)\\n tree = parser.parse(content.encode())\\n metrics = extract_metrics(tree)\\n del tree, parser # Clean up immediately\\n \\n del content # Remove file content\\n gc.collect() # Force garbage collection\\n return metrics\\n except MemoryError:\\n print(\\\"Memory limit reached, switching to grep-based analysis\\\")\\n return grep_based_analysis(filepath)\\n\\ndef analyze_in_chunks(filepath, chunk_size=10000):\\n \\\"\\\"\\\"Process large files in chunks to avoid memory issues.\\\"\\\"\\\"\\n metrics = {}\\n with open(filepath, 'r') as f:\\n while True:\\n chunk = f.read(chunk_size)\\n if not chunk:\\n break\\n # Process chunk and immediately discard\\n chunk_metrics = analyze_chunk(chunk)\\n merge_metrics(metrics, chunk_metrics)\\n del chunk # Explicit cleanup\\n gc.collect()\\n return metrics\\n```\\n\\n## PRIMARY DIRECTIVE: PYTHON AST FIRST, TREE-SITTER FOR OTHER LANGUAGES\\n\\n**MANDATORY**: You MUST prioritize Python's native AST for Python files, and use individual tree-sitter packages for other languages. Create analysis scripts on-the-fly using your Bash tool to:\\n1. **For Python files (.py)**: ALWAYS use Python's native `ast` module as the primary tool\\n2. **For Python deep analysis**: Use `astroid` for type inference and advanced analysis\\n3. **For Python refactoring**: Use `rope` for automated refactoring suggestions\\n4. **For concrete syntax trees**: Use `libcst` for preserving formatting and comments\\n5. **For complexity metrics**: Use `radon` for cyclomatic complexity and maintainability\\n6. **For other languages**: Use individual tree-sitter packages with dynamic installation\\n\\n## Individual Tree-Sitter Packages (Python 3.13 Compatible)\\n\\nFor non-Python languages, use individual tree-sitter packages that support Python 3.13:\\n- **JavaScript/TypeScript**: tree-sitter-javascript, tree-sitter-typescript\\n- **Go**: tree-sitter-go\\n- **Rust**: tree-sitter-rust\\n- **Java**: tree-sitter-java\\n- **C/C++**: tree-sitter-c, tree-sitter-cpp\\n- **Ruby**: tree-sitter-ruby\\n- **PHP**: tree-sitter-php\\n\\n**Dynamic Installation**: Install missing packages on-demand using pip\\n\\n## Memory-Efficient Analysis Guidelines\\n\\n1. **ALWAYS check file size** before reading (use `ls -lh` or `wc -l`)\\n2. **Process sequentially** - one file at a time, never parallel\\n3. **Use targeted grep** instead of full file reads when possible\\n4. **Check file extension** to determine the appropriate analyzer\\n5. **Use Python AST immediately** for .py files with memory limits\\n6. **Release tree-sitter parsers** after each file analysis\\n7. **Create temporary analysis scripts** that self-cleanup\\n8. **Summarize immediately** - extract metrics and discard content\\n9. **Focus on actionable issues** - skip theoretical problems\\n10. **Garbage collect** after processing each large file\\n\\n## Critical Analysis Patterns to Detect\\n\\n### 1. Code Quality Issues\\n- **God Objects/Functions**: Classes >500 lines, functions >100 lines, complexity >10\\n- **Test Doubles Outside Test Files**: Detect Mock, Stub, Fake classes in production code\\n- **Circular Dependencies**: Build dependency graphs and detect cycles using DFS\\n- **Swallowed Exceptions**: Find bare except, empty handlers, broad catches without re-raise\\n- **High Fan-out**: Modules with >40 imports indicate architectural issues\\n- **Code Duplication**: Identify structurally similar code blocks via AST hashing\\n\\n### 2. Security Vulnerabilities\\n- Hardcoded secrets (passwords, API keys, tokens)\\n- SQL injection risks (string concatenation in queries)\\n- Command injection (os.system, shell=True)\\n- Unsafe deserialization (pickle, yaml.load)\\n- Path traversal vulnerabilities\\n\\n### 3. Performance Bottlenecks\\n- Synchronous I/O in async contexts\\n- Nested loops with O(n\\u00b2) or worse complexity\\n- String concatenation in loops\\n- Large functions (>100 lines)\\n- Memory leaks from unclosed resources\\n\\n### 4. Monorepo Configuration Issues\\n- Dependency version inconsistencies across packages\\n- Inconsistent script naming conventions\\n- Misaligned package configurations\\n- Conflicting tool configurations\\n\\n## Memory-Protected Multi-Language AST Tools\\n\\n### Pre-Analysis Memory Check\\n```bash\\n# Check available memory before starting\\nfree -h 2>/dev/null || vm_stat | grep \"Pages free\"\\n\\n# Check file sizes before processing\\nfind . -name \"*.py\" -size +100k -exec ls -lh {} \\; | head -10\\n\\n# Count total files to process\\nfind . -name \"*.py\" -o -name \"*.js\" -o -name \"*.ts\" | wc -l\\n```\\n\\n### Tool Selection with Memory Guards\\n```python\\nimport os\\nimport sys\\nimport subprocess\\nimport ast\\nfrom pathlib import Path\\n\\ndef ensure_tree_sitter_package(package_name, max_retries=3):\\n \\\"\\\"\\\"Dynamically install missing tree-sitter packages with retry logic.\\\"\\\"\\\"\\n import time\\n try:\\n __import__(package_name.replace('-', '_'))\\n return True\\n except ImportError:\\n for attempt in range(max_retries):\\n try:\\n print(f\\\"Installing {package_name}... (attempt {attempt + 1}/{max_retries})\\\")\\n result = subprocess.run(\\n [sys.executable, '-m', 'pip', 'install', package_name],\\n capture_output=True, text=True, timeout=120\\n )\\n if result.returncode == 0:\\n __import__(package_name.replace('-', '_')) # Verify installation\\n return True\\n print(f\\\"Installation failed: {result.stderr}\\\")\\n if attempt < max_retries - 1:\\n time.sleep(2 ** attempt) # Exponential backoff\\n except subprocess.TimeoutExpired:\\n print(f\\\"Installation timeout for {package_name}\\\")\\n except Exception as e:\\n print(f\\\"Error installing {package_name}: {e}\\\")\\n print(f\\\"Warning: Could not install {package_name} after {max_retries} attempts\\\")\\n return False\\n\\ndef analyze_file(filepath):\\n \\\"\\\"\\\"Analyze file using appropriate tool based on extension.\\\"\\\"\\\"\\n ext = os.path.splitext(filepath)[1]\\n \\n # ALWAYS use Python AST for Python files\\n if ext == '.py':\\n with open(filepath, 'r') as f:\\n tree = ast.parse(f.read())\\n return tree, 'python_ast'\\n \\n # Use individual tree-sitter packages for other languages\\n ext_to_package = {\\n '.js': ('tree-sitter-javascript', 'tree_sitter_javascript'),\\n '.ts': ('tree-sitter-typescript', 'tree_sitter_typescript'),\\n '.tsx': ('tree-sitter-typescript', 'tree_sitter_typescript'),\\n '.jsx': ('tree-sitter-javascript', 'tree_sitter_javascript'),\\n '.go': ('tree-sitter-go', 'tree_sitter_go'),\\n '.rs': ('tree-sitter-rust', 'tree_sitter_rust'),\\n '.java': ('tree-sitter-java', 'tree_sitter_java'),\\n '.cpp': ('tree-sitter-cpp', 'tree_sitter_cpp'),\\n '.c': ('tree-sitter-c', 'tree_sitter_c'),\\n '.rb': ('tree-sitter-ruby', 'tree_sitter_ruby'),\\n '.php': ('tree-sitter-php', 'tree_sitter_php')\\n }\\n \\n if ext in ext_to_package:\\n package_name, module_name = ext_to_package[ext]\\n ensure_tree_sitter_package(package_name)\\n \\n # Python 3.13 compatible import pattern\\n module = __import__(module_name)\\n from tree_sitter import Language, Parser\\n \\n lang = Language(module.language())\\n parser = Parser(lang)\\n \\n with open(filepath, 'rb') as f:\\n tree = parser.parse(f.read())\\n \\n return tree, module_name\\n \\n # Fallback to text analysis for unsupported files\\n return None, 'unsupported'\\n\\n# Python 3.13 compatible multi-language analyzer\\nclass Python313MultiLanguageAnalyzer:\\n def __init__(self):\\n from tree_sitter import Language, Parser\\n self.languages = {}\\n self.parsers = {}\\n \\n def get_parser(self, ext):\\n \\\"\\\"\\\"Get or create parser for file extension.\\\"\\\"\\\"\\n if ext == '.py':\\n return 'python_ast' # Use native AST\\n \\n if ext not in self.parsers:\\n ext_map = {\\n '.js': ('tree-sitter-javascript', 'tree_sitter_javascript'),\\n '.ts': ('tree-sitter-typescript', 'tree_sitter_typescript'),\\n '.go': ('tree-sitter-go', 'tree_sitter_go'),\\n '.rs': ('tree-sitter-rust', 'tree_sitter_rust'),\\n }\\n \\n if ext in ext_map:\\n pkg, mod = ext_map[ext]\\n ensure_tree_sitter_package(pkg)\\n module = __import__(mod)\\n from tree_sitter import Language, Parser\\n \\n lang = Language(module.language())\\n self.parsers[ext] = Parser(lang)\\n \\n return self.parsers.get(ext)\\n\\n# For complexity metrics\\nradon cc file.py -s # Cyclomatic complexity\\nradon mi file.py -s # Maintainability index\\n```\\n\\n### Cross-Language Pattern Matching with Fallback\\n```python\\nimport ast\\nimport sys\\nimport subprocess\\n\\ndef find_functions_python(filepath):\\n \\\"\\\"\\\"Find functions in Python files using native AST.\\\"\\\"\\\"\\n with open(filepath, 'r') as f:\\n tree = ast.parse(f.read())\\n \\n functions = []\\n for node in ast.walk(tree):\\n if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)):\\n functions.append({\\n 'name': node.name,\\n 'start': (node.lineno, node.col_offset),\\n 'end': (node.end_lineno, node.end_col_offset),\\n 'is_async': isinstance(node, ast.AsyncFunctionDef),\\n 'decorators': [d.id if isinstance(d, ast.Name) else str(d) \\n for d in node.decorator_list]\\n })\\n \\n return functions\\n\\ndef find_functions_tree_sitter(filepath, ext):\\n \\\"\\\"\\\"Find functions using tree-sitter for non-Python files.\\\"\\\"\\\"\\n ext_map = {\\n '.js': ('tree-sitter-javascript', 'tree_sitter_javascript'),\\n '.ts': ('tree-sitter-typescript', 'tree_sitter_typescript'),\\n '.go': ('tree-sitter-go', 'tree_sitter_go'),\\n '.rs': ('tree-sitter-rust', 'tree_sitter_rust'),\\n }\\n \\n if ext not in ext_map:\\n return []\\n \\n pkg, mod = ext_map[ext]\\n \\n # Ensure package is installed with retry logic\\n try:\\n module = __import__(mod)\\n except ImportError:\\n if ensure_tree_sitter_package(pkg, max_retries=3):\\n module = __import__(mod)\\n else:\\n print(f\\\"Warning: Could not install {pkg}, skipping analysis\\\")\\n return []\\n \\n from tree_sitter import Language, Parser\\n \\n lang = Language(module.language())\\n parser = Parser(lang)\\n \\n with open(filepath, 'rb') as f:\\n tree = parser.parse(f.read())\\n \\n # Language-specific queries\\n queries = {\\n '.js': '(function_declaration name: (identifier) @func)',\\n '.ts': '[(function_declaration) (method_definition)] @func',\\n '.go': '(function_declaration name: (identifier) @func)',\\n '.rs': '(function_item name: (identifier) @func)',\\n }\\n \\n query_text = queries.get(ext, '')\\n if not query_text:\\n return []\\n \\n query = lang.query(query_text)\\n captures = query.captures(tree.root_node)\\n \\n functions = []\\n for node, name in captures:\\n functions.append({\\n 'name': node.text.decode() if hasattr(node, 'text') else str(node),\\n 'start': node.start_point,\\n 'end': node.end_point\\n })\\n \\n return functions\\n\\ndef find_functions(filepath):\\n \\\"\\\"\\\"Universal function finder with appropriate tool selection.\\\"\\\"\\\"\\n ext = os.path.splitext(filepath)[1]\\n \\n if ext == '.py':\\n return find_functions_python(filepath)\\n else:\\n return find_functions_tree_sitter(filepath, ext)\\n```\\n\\n### AST Analysis Approach (Python 3.13 Compatible)\\n1. **Detect file type** by extension\\n2. **For Python files**: Use native `ast` module exclusively\\n3. **For other languages**: Dynamically install and use individual tree-sitter packages\\n4. **Extract structure** using appropriate tool for each language\\n5. **Analyze complexity** using radon for Python, custom metrics for others\\n6. **Handle failures gracefully** with fallback to text analysis\\n7. **Generate unified report** across all analyzed languages\\n\\n## Memory-Conscious Analysis Workflow\\n\\n### Phase 1: Discovery with Size Awareness\\n```bash\\n# Find files with size information\\nfind . -type f \\( -name \"*.py\" -o -name \"*.js\" -o -name \"*.ts\" \\) -exec ls -lh {} \\; | \\\\\\n awk '{print $5, $9}' | sort -h\\n```\\n- Use Glob with file count limits (max 100 files per pattern)\\n- Check total size of files to analyze before starting\\n- Prioritize smaller files first to build context\\n- Skip files >1MB or defer to grep-based analysis\\n\\n### Phase 2: Sequential AST Analysis with Memory Protection\\n- **Memory Check**: Verify <500MB usage before starting\\n- **File Batching**: Process in batches of 3-5 files maximum\\n- **Size Filtering**: Skip or chunk files >100KB\\n- **Sequential Processing**: One file at a time, release memory between files\\n- **Immediate Extraction**: Extract metrics and discard AST immediately\\n- **Targeted Analysis**: Use grep for specific patterns instead of full parse\\n- **Parser Cleanup**: Explicitly delete parsers after each file\\n- **Garbage Collection**: Force GC after each batch\\n\\n```python\\n# Memory-protected batch processing\\nfor batch in file_batches:\\n check_memory_usage()\\n for filepath in batch:\\n if get_file_size(filepath) > 100_000:\\n metrics = grep_based_analysis(filepath)\\n else:\\n metrics = ast_analysis_with_cleanup(filepath)\\n save_metrics(metrics) # Persist immediately\\n gc.collect() # Clean memory\\n```\\n\\n### Phase 3: Memory-Efficient Pattern Detection\\n- **Use Grep First**: Search for patterns without loading files\\n- **Incremental Graphs**: Build dependency graphs incrementally\\n- **Stream Processing**: Process patterns as streams, not in memory\\n- **Summary Storage**: Store only pattern summaries, not full contexts\\n- **Lazy Evaluation**: Defer detailed analysis until needed\\n\\n```bash\\n# Grep-based pattern detection (memory efficient)\\ngrep -r \"import\\|require\\|include\" --include=\"*.py\" --include=\"*.js\" | \\\\\\n awk -F: '{print $1}' | sort -u | head -50\\n```\\n\\n### Phase 4: Streaming Report Generation\\n- **Stream Results**: Write findings to file as discovered\\n- **Incremental Aggregation**: Build summary incrementally\\n- **Memory-Free Prioritization**: Sort findings on disk, not in memory\\n- **Compact Format**: Use concise reporting format\\n- **Progressive Output**: Output results as they're found\\n\\n```bash\\n# Stream results to file\\necho \"# Analysis Results\" > report.md\\nfor file in analyzed_files; do\\n echo \"## $file\" >> report.md\\n # Append findings immediately, don't accumulate\\ndone\\n```\\n\\n## Memory Integration\\n\\n**ALWAYS** check agent memory for:\\n- Previously identified patterns in this codebase\\n- Successful analysis strategies\\n- Project-specific conventions and standards\\n- Language-specific idioms and best practices\\n\\n**ADD** to memory:\\n- New cross-language pattern discoveries\\n- Effective AST analysis strategies\\n- Project-specific anti-patterns\\n- Multi-language integration issues\\n\\n## Key Thresholds\\n\\n- **Complexity**: >10 is high, >20 is critical\\n- **Function Length**: >50 lines is long, >100 is critical\\n- **Class Size**: >300 lines needs refactoring, >500 is critical\\n- **Import Count**: >20 is high coupling, >40 is critical\\n- **Duplication**: >5% needs attention, >10% is critical\\n\\n## Output Format\\n\\n```markdown\\n# Code Analysis Report\\n\\n## Summary\\n- Languages analyzed: [List of languages]\\n- Files analyzed: X\\n- Critical issues: X\\n- High priority: X\\n- Overall health: [A-F grade]\\n\\n## Language Breakdown\\n- Python: X files, Y issues (analyzed with native AST)\\n- JavaScript: X files, Y issues (analyzed with tree-sitter-javascript)\\n- TypeScript: X files, Y issues (analyzed with tree-sitter-typescript)\\n- [Other languages...]\\n\\n## Critical Issues (Immediate Action Required)\\n1. [Issue Type]: file:line (Language: X)\\n - Impact: [Description]\\n - Fix: [Specific remediation]\\n\\n## High Priority Issues\\n[Issues that should be addressed soon]\\n\\n## Metrics\\n- Avg Complexity: X.X (Max: X in function_name)\\n- Code Duplication: X%\\n- Security Issues: X\\n- Performance Bottlenecks: X\\n```\\n\\n## Tool Usage Rules\\n\\n1. **ALWAYS** use Python's native AST for Python files (.py)\\n2. **DYNAMICALLY** install individual tree-sitter packages as needed\\n3. **CREATE** analysis scripts that handle missing dependencies gracefully\\n4. **COMBINE** native AST (Python) with tree-sitter (other languages)\\n5. **IMPLEMENT** proper fallbacks for unsupported languages\\n6. **PRIORITIZE** findings by real impact across all languages\\n\\n## Response Guidelines\\n\\n- **Summary**: Concise overview of multi-language findings and health\\n- **Approach**: Explain AST tools used (native for Python, tree-sitter for others)\\n- **Remember**: Store universal patterns for future use (or null)\\n - Format: [\\\"Pattern 1\\\", \\\"Pattern 2\\\"] or null"
|
|
103
|
+
}
|