claude-mpm 5.0.9__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/{PM_INSTRUCTIONS_TEACH.md → CLAUDE_MPM_TEACHER_OUTPUT_STYLE.md} +721 -41
- claude_mpm/agents/MEMORY.md +1 -1
- claude_mpm/agents/PM_INSTRUCTIONS.md +468 -468
- claude_mpm/agents/WORKFLOW.md +5 -254
- claude_mpm/agents/agent_loader.py +13 -44
- claude_mpm/agents/base_agent.json +1 -1
- claude_mpm/agents/frontmatter_validator.py +70 -2
- claude_mpm/agents/templates/circuit-breakers.md +431 -45
- claude_mpm/cli/__init__.py +0 -1
- claude_mpm/cli/__main__.py +4 -0
- claude_mpm/cli/chrome_devtools_installer.py +175 -0
- claude_mpm/cli/commands/agent_state_manager.py +18 -27
- claude_mpm/cli/commands/agents.py +175 -37
- claude_mpm/cli/commands/auto_configure.py +723 -236
- claude_mpm/cli/commands/config.py +88 -2
- claude_mpm/cli/commands/configure.py +1262 -157
- claude_mpm/cli/commands/configure_agent_display.py +25 -6
- claude_mpm/cli/commands/mpm_init/core.py +225 -46
- claude_mpm/cli/commands/mpm_init/knowledge_extractor.py +481 -0
- claude_mpm/cli/commands/mpm_init/prompts.py +280 -0
- claude_mpm/cli/commands/postmortem.py +1 -1
- claude_mpm/cli/commands/profile.py +277 -0
- claude_mpm/cli/commands/skills.py +214 -189
- claude_mpm/cli/commands/summarize.py +413 -0
- claude_mpm/cli/executor.py +21 -3
- claude_mpm/cli/interactive/agent_wizard.py +85 -10
- claude_mpm/cli/parsers/agents_parser.py +54 -9
- claude_mpm/cli/parsers/auto_configure_parser.py +13 -138
- claude_mpm/cli/parsers/base_parser.py +12 -0
- claude_mpm/cli/parsers/config_parser.py +153 -83
- claude_mpm/cli/parsers/profile_parser.py +148 -0
- claude_mpm/cli/parsers/skills_parser.py +3 -2
- claude_mpm/cli/startup.py +879 -149
- claude_mpm/commands/mpm-config.md +28 -0
- claude_mpm/commands/mpm-doctor.md +9 -22
- claude_mpm/commands/mpm-help.md +5 -287
- claude_mpm/commands/mpm-init.md +81 -507
- claude_mpm/commands/mpm-monitor.md +15 -402
- claude_mpm/commands/mpm-organize.md +120 -0
- claude_mpm/commands/mpm-postmortem.md +6 -108
- claude_mpm/commands/mpm-session-resume.md +12 -363
- claude_mpm/commands/mpm-status.md +5 -69
- claude_mpm/commands/mpm-ticket-view.md +52 -495
- claude_mpm/commands/mpm-version.md +5 -107
- claude_mpm/config/agent_sources.py +27 -0
- claude_mpm/core/config.py +2 -4
- 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/instruction_loader.py +52 -11
- claude_mpm/core/framework_loader.py +4 -2
- claude_mpm/core/logger.py +13 -0
- claude_mpm/core/optimized_startup.py +59 -0
- claude_mpm/core/output_style_manager.py +173 -43
- claude_mpm/core/shared/config_loader.py +1 -1
- claude_mpm/core/socketio_pool.py +3 -3
- 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/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 +211 -78
- 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/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 +3 -3
- claude_mpm/scripts/claude-hook-handler.sh +58 -18
- claude_mpm/scripts/launch_monitor.py +93 -13
- claude_mpm/scripts/start_activity_logging.py +0 -0
- claude_mpm/services/agents/agent_builder.py +3 -3
- claude_mpm/services/agents/agent_recommendation_service.py +278 -0
- claude_mpm/services/agents/agent_review_service.py +280 -0
- claude_mpm/services/agents/cache_git_manager.py +6 -6
- claude_mpm/services/agents/deployment/agent_deployment.py +29 -7
- claude_mpm/services/agents/deployment/agent_discovery_service.py +4 -5
- claude_mpm/services/agents/deployment/agent_template_builder.py +5 -3
- claude_mpm/services/agents/deployment/agents_directory_resolver.py +2 -2
- claude_mpm/services/agents/deployment/multi_source_deployment_service.py +320 -29
- claude_mpm/services/agents/deployment/remote_agent_discovery_service.py +546 -68
- claude_mpm/services/agents/git_source_manager.py +36 -2
- claude_mpm/services/agents/loading/base_agent_manager.py +1 -13
- claude_mpm/services/agents/recommender.py +5 -3
- claude_mpm/services/agents/single_tier_deployment_service.py +2 -2
- claude_mpm/services/agents/sources/git_source_sync_service.py +13 -6
- claude_mpm/services/agents/startup_sync.py +22 -2
- claude_mpm/services/agents/toolchain_detector.py +10 -6
- claude_mpm/services/analysis/__init__.py +11 -1
- claude_mpm/services/analysis/clone_detector.py +1030 -0
- claude_mpm/services/command_deployment_service.py +81 -10
- claude_mpm/services/diagnostics/checks/agent_check.py +2 -2
- claude_mpm/services/diagnostics/checks/agent_sources_check.py +1 -1
- claude_mpm/services/event_bus/config.py +3 -1
- claude_mpm/services/git/git_operations_service.py +101 -16
- claude_mpm/services/monitor/daemon.py +9 -2
- claude_mpm/services/monitor/daemon_manager.py +39 -3
- claude_mpm/services/monitor/management/lifecycle.py +8 -1
- claude_mpm/services/monitor/server.py +698 -22
- claude_mpm/services/pm_skills_deployer.py +676 -0
- claude_mpm/services/profile_manager.py +331 -0
- claude_mpm/services/project/project_organizer.py +4 -0
- claude_mpm/services/self_upgrade_service.py +120 -12
- claude_mpm/services/skills/__init__.py +3 -0
- claude_mpm/services/skills/git_skill_source_manager.py +130 -2
- claude_mpm/services/skills/selective_skill_deployer.py +704 -0
- claude_mpm/services/skills/skill_to_agent_mapper.py +406 -0
- claude_mpm/services/skills_deployer.py +126 -9
- claude_mpm/services/socketio/dashboard_server.py +1 -0
- claude_mpm/services/socketio/event_normalizer.py +51 -6
- claude_mpm/services/socketio/server/core.py +386 -108
- claude_mpm/services/version_control/git_operations.py +103 -0
- claude_mpm/skills/skill_manager.py +92 -3
- claude_mpm/utils/agent_dependency_loader.py +14 -2
- claude_mpm/utils/agent_filters.py +17 -44
- claude_mpm/utils/gitignore.py +3 -0
- claude_mpm/utils/migration.py +4 -4
- claude_mpm/utils/robust_installer.py +47 -3
- {claude_mpm-5.0.9.dist-info → claude_mpm-5.4.41.dist-info}/METADATA +57 -87
- {claude_mpm-5.0.9.dist-info → claude_mpm-5.4.41.dist-info}/RECORD +160 -211
- 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 -480
- 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 -601
- 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-auto-configure.md +0 -278
- claude_mpm/commands/mpm-agents-detect.md +0 -177
- claude_mpm/commands/mpm-agents-list.md +0 -131
- claude_mpm/commands/mpm-agents-recommend.md +0 -223
- claude_mpm/commands/mpm-config-view.md +0 -150
- claude_mpm/commands/mpm-ticket-organize.md +0 -304
- 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/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/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 -1914
- claude_mpm/dashboard/static/js/extension-error-handler.js +0 -164
- claude_mpm/dashboard/static/js/socket-client.js +0 -1474
- claude_mpm/dashboard/static/js/tab-isolation-fix.js +0 -185
- 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/templates/code_simple.html +0 -153
- claude_mpm/dashboard/templates/index.html +0 -606
- claude_mpm/dashboard/test_dashboard.html +0 -372
- claude_mpm/hooks/claude_hooks/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/event_handlers.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/hook_handler.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/memory_integration.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/response_tracking.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/__pycache__/tool_analysis.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/__init__.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/connection_manager_http.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/duplicate_detector.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/state_manager.cpython-313.pyc +0 -0
- claude_mpm/hooks/claude_hooks/services/__pycache__/subagent_processor.cpython-313.pyc +0 -0
- 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 -977
- 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 -414
- claude_mpm/services/mcp_gateway/server/stdio_handler.py +0 -372
- claude_mpm/services/mcp_gateway/server/stdio_server.py +0 -712
- 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 -555
- 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-5.0.9.dist-info/entry_points.txt +0 -10
- claude_mpm-5.0.9.dist-info/licenses/LICENSE +0 -21
- /claude_mpm/agents/{OUTPUT_STYLE.md → CLAUDE_MPM_OUTPUT_STYLE.md} +0 -0
- {claude_mpm-5.0.9.dist-info → claude_mpm-5.4.41.dist-info}/WHEEL +0 -0
- {claude_mpm-5.0.9.dist-info → claude_mpm-5.4.41.dist-info}/top_level.txt +0 -0
claude_mpm/agents/BASE_QA.md
DELETED
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
# BASE QA Agent Instructions
|
|
2
|
-
|
|
3
|
-
All QA agents inherit these common testing patterns and requirements.
|
|
4
|
-
|
|
5
|
-
## Core QA Principles
|
|
6
|
-
|
|
7
|
-
### Memory-Efficient Testing Strategy
|
|
8
|
-
- **CRITICAL**: Process maximum 3-5 test files at once
|
|
9
|
-
- Use grep/glob for test discovery, not full reads
|
|
10
|
-
- Extract test names without reading entire files
|
|
11
|
-
- Sample representative tests, not exhaustive coverage
|
|
12
|
-
|
|
13
|
-
### Test Discovery Patterns
|
|
14
|
-
```bash
|
|
15
|
-
# Find test files efficiently
|
|
16
|
-
grep -r "def test_" --include="*.py" tests/
|
|
17
|
-
grep -r "describe\|it\(" --include="*.js" tests/
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
### Coverage Analysis
|
|
21
|
-
- Use coverage tools output, not manual calculation
|
|
22
|
-
- Focus on uncovered critical paths
|
|
23
|
-
- Identify missing edge case tests
|
|
24
|
-
- Report coverage by module, not individual lines
|
|
25
|
-
|
|
26
|
-
### Test Execution Strategy
|
|
27
|
-
1. Run smoke tests first (critical path)
|
|
28
|
-
2. Then integration tests
|
|
29
|
-
3. Finally comprehensive test suite
|
|
30
|
-
4. Stop on critical failures
|
|
31
|
-
|
|
32
|
-
## ⚠️ CRITICAL: JavaScript Test Process Management
|
|
33
|
-
|
|
34
|
-
**WARNING: Vitest and Jest watch modes cause persistent processes and memory leaks in agent operations.**
|
|
35
|
-
|
|
36
|
-
### Primary Directive: AVOID VITEST/JEST WATCH MODE AT ALL COSTS
|
|
37
|
-
|
|
38
|
-
**Before running ANY JavaScript/TypeScript test:**
|
|
39
|
-
|
|
40
|
-
1. **ALWAYS inspect package.json test configuration FIRST**
|
|
41
|
-
2. **NEVER run tests without explicit CI flags or run commands**
|
|
42
|
-
3. **MANDATORY process verification after EVERY test run**
|
|
43
|
-
|
|
44
|
-
### Safe Test Execution Protocol
|
|
45
|
-
|
|
46
|
-
#### Step 1: Pre-Flight Check (MANDATORY)
|
|
47
|
-
```bash
|
|
48
|
-
# ALWAYS check package.json test script configuration FIRST
|
|
49
|
-
cat package.json | grep -A 3 '"test"'
|
|
50
|
-
|
|
51
|
-
# Look for dangerous configurations:
|
|
52
|
-
# ❌ "test": "vitest" # DANGER: Watch mode by default
|
|
53
|
-
# ❌ "test": "jest" # DANGER: May trigger watch
|
|
54
|
-
# ✅ "test": "vitest run" # SAFE: Explicit run mode
|
|
55
|
-
# ✅ "test": "jest --ci" # SAFE: CI mode
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
#### Step 2: Safe Test Execution (USE THESE COMMANDS ONLY)
|
|
59
|
-
```bash
|
|
60
|
-
# PRIMARY RECOMMENDED COMMANDS (use these by default):
|
|
61
|
-
CI=true npm test # Forces CI mode, prevents watch
|
|
62
|
-
npx vitest run --reporter=verbose # Explicit run mode with output
|
|
63
|
-
npx jest --ci --no-watch # Explicit CI mode, no watch
|
|
64
|
-
|
|
65
|
-
# NEVER USE THESE COMMANDS:
|
|
66
|
-
npm test # ❌ May trigger watch mode
|
|
67
|
-
vitest # ❌ Defaults to watch mode
|
|
68
|
-
npm test -- --watch # ❌ Explicitly starts watch mode
|
|
69
|
-
jest # ❌ May trigger watch mode
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
#### Step 3: Post-Execution Verification (MANDATORY)
|
|
73
|
-
```bash
|
|
74
|
-
# ALWAYS verify process cleanup after tests
|
|
75
|
-
ps aux | grep -E "(vitest|jest|node.*test)" | grep -v grep
|
|
76
|
-
|
|
77
|
-
# If ANY processes found, kill them immediately:
|
|
78
|
-
pkill -f "vitest" || true
|
|
79
|
-
pkill -f "jest" || true
|
|
80
|
-
|
|
81
|
-
# Verify cleanup succeeded:
|
|
82
|
-
ps aux | grep -E "(vitest|jest|node.*test)" | grep -v grep
|
|
83
|
-
# Should return NOTHING
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### Why This Matters
|
|
87
|
-
|
|
88
|
-
**Vitest/Jest watch mode creates persistent processes that:**
|
|
89
|
-
- Consume memory indefinitely (memory leak)
|
|
90
|
-
- Prevent agent completion (hanging processes)
|
|
91
|
-
- Cause resource exhaustion in multi-test scenarios
|
|
92
|
-
- Require manual intervention to terminate
|
|
93
|
-
- Make automated testing workflows impossible
|
|
94
|
-
|
|
95
|
-
### Alternative Testing Strategies
|
|
96
|
-
|
|
97
|
-
**When testing is needed, prefer these approaches (in order):**
|
|
98
|
-
|
|
99
|
-
1. **Static Analysis First**: Use grep/glob to discover test patterns
|
|
100
|
-
2. **Selective Testing**: Run specific test files, not entire suites
|
|
101
|
-
3. **API Testing**: Test backend endpoints directly with curl/fetch
|
|
102
|
-
4. **Manual Review**: Review test code without executing
|
|
103
|
-
5. **If Tests Must Run**: Use CI=true prefix and mandatory verification
|
|
104
|
-
|
|
105
|
-
### Package.json Configuration Recommendations
|
|
106
|
-
|
|
107
|
-
**ALWAYS verify test scripts are agent-safe:**
|
|
108
|
-
```json
|
|
109
|
-
{
|
|
110
|
-
"scripts": {
|
|
111
|
-
"test": "vitest run", // ✅ SAFE: Explicit run mode
|
|
112
|
-
"test:ci": "CI=true vitest run", // ✅ SAFE: CI mode
|
|
113
|
-
"test:watch": "vitest", // ✅ OK: Separate watch command
|
|
114
|
-
"test": "vitest" // ❌ DANGEROUS: Watch by default
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### Emergency Process Cleanup
|
|
120
|
-
|
|
121
|
-
**If you suspect orphaned processes:**
|
|
122
|
-
```bash
|
|
123
|
-
# List all node/test processes
|
|
124
|
-
ps aux | grep -E "(node|vitest|jest)" | grep -v grep
|
|
125
|
-
|
|
126
|
-
# Nuclear option - kill all node processes (USE WITH CAUTION)
|
|
127
|
-
pkill -9 node
|
|
128
|
-
|
|
129
|
-
# Verify cleanup
|
|
130
|
-
ps aux | grep -E "(vitest|jest|node.*test)" | grep -v grep
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### Testing Workflow Checklist
|
|
134
|
-
|
|
135
|
-
- [ ] Inspected package.json test configuration
|
|
136
|
-
- [ ] Identified watch mode risks
|
|
137
|
-
- [ ] Used CI=true or explicit --run flags
|
|
138
|
-
- [ ] Test command completed (not hanging)
|
|
139
|
-
- [ ] Verified no orphaned processes remain
|
|
140
|
-
- [ ] Cleaned up any detected processes
|
|
141
|
-
- [ ] Documented test results
|
|
142
|
-
- [ ] Ready to proceed to next task
|
|
143
|
-
|
|
144
|
-
### Error Reporting
|
|
145
|
-
- Group similar failures together
|
|
146
|
-
- Provide actionable fix suggestions
|
|
147
|
-
- Include relevant stack traces
|
|
148
|
-
- Prioritize by severity
|
|
149
|
-
|
|
150
|
-
### Performance Testing
|
|
151
|
-
- Establish baseline metrics first
|
|
152
|
-
- Test under realistic load conditions
|
|
153
|
-
- Monitor memory and CPU usage
|
|
154
|
-
- Identify bottlenecks systematically
|
|
155
|
-
|
|
156
|
-
## QA-Specific TodoWrite Format
|
|
157
|
-
When using TodoWrite, use [QA] prefix:
|
|
158
|
-
- ✅ `[QA] Test authentication flow`
|
|
159
|
-
- ✅ `[QA] Verify API endpoint security`
|
|
160
|
-
- ❌ `[PM] Run tests` (PMs delegate testing)
|
|
161
|
-
|
|
162
|
-
## Output Requirements
|
|
163
|
-
- Provide test results summary first
|
|
164
|
-
- Include specific failure details
|
|
165
|
-
- Suggest fixes for failures
|
|
166
|
-
- Report coverage metrics
|
|
167
|
-
- List untested critical paths
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# BASE RESEARCH Agent Instructions
|
|
2
|
-
|
|
3
|
-
All Research agents inherit these critical memory management patterns.
|
|
4
|
-
|
|
5
|
-
## 🔴 CRITICAL MEMORY MANAGEMENT 🔴
|
|
6
|
-
|
|
7
|
-
### MANDATORY File Processing Rules
|
|
8
|
-
- **Files >20KB**: MUST use MCP document_summarizer
|
|
9
|
-
- **Files >100KB**: NEVER read directly - sample only
|
|
10
|
-
- **Maximum files**: Process 3-5 files at once
|
|
11
|
-
- **Pattern extraction**: Use grep/regex, not full reads
|
|
12
|
-
|
|
13
|
-
### Strategic Sampling Approach
|
|
14
|
-
1. Identify key files via grep patterns
|
|
15
|
-
2. Read only critical sections (100-200 lines max)
|
|
16
|
-
3. Extract patterns without full file processing
|
|
17
|
-
4. Use AST parsing for code structure analysis
|
|
18
|
-
|
|
19
|
-
### Memory Protection Protocol
|
|
20
|
-
```python
|
|
21
|
-
# ALWAYS check file size first
|
|
22
|
-
if file_size > 20_000: # 20KB
|
|
23
|
-
use_document_summarizer()
|
|
24
|
-
elif file_size > 100_000: # 100KB
|
|
25
|
-
extract_sample_only()
|
|
26
|
-
else:
|
|
27
|
-
safe_to_read_fully()
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
### Research Methodology
|
|
31
|
-
1. **Discovery Phase**: Use grep/glob for initial mapping
|
|
32
|
-
2. **Analysis Phase**: Strategic sampling of key files
|
|
33
|
-
3. **Pattern Extraction**: Identify common patterns
|
|
34
|
-
4. **Synthesis Phase**: Compile findings without re-reading
|
|
35
|
-
|
|
36
|
-
### Codebase Navigation
|
|
37
|
-
- Use file structure analysis first
|
|
38
|
-
- Identify entry points and key modules
|
|
39
|
-
- Map dependencies without reading all files
|
|
40
|
-
- Focus on interfaces and contracts
|
|
41
|
-
|
|
42
|
-
## Research-Specific TodoWrite Format
|
|
43
|
-
When using TodoWrite, use [Research] prefix:
|
|
44
|
-
- ✅ `[Research] Analyze authentication patterns`
|
|
45
|
-
- ✅ `[Research] Map codebase architecture`
|
|
46
|
-
- ❌ `[PM] Research implementation` (PMs delegate research)
|
|
47
|
-
|
|
48
|
-
## Output Requirements
|
|
49
|
-
- Provide executive summary first
|
|
50
|
-
- Include specific code examples
|
|
51
|
-
- Document patterns found
|
|
52
|
-
- List files analyzed
|
|
53
|
-
- Report memory usage statistics
|