claude-mpm 4.2.39__py3-none-any.whl → 4.2.42__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/BASE_ENGINEER.md +114 -1
  3. claude_mpm/agents/BASE_OPS.md +156 -1
  4. claude_mpm/agents/INSTRUCTIONS.md +120 -11
  5. claude_mpm/agents/WORKFLOW.md +160 -10
  6. claude_mpm/agents/templates/agentic-coder-optimizer.json +17 -12
  7. claude_mpm/agents/templates/react_engineer.json +217 -0
  8. claude_mpm/agents/templates/web_qa.json +40 -4
  9. claude_mpm/cli/__init__.py +3 -5
  10. claude_mpm/commands/mpm-browser-monitor.md +370 -0
  11. claude_mpm/commands/mpm-monitor.md +177 -0
  12. claude_mpm/dashboard/static/built/components/code-viewer.js +1076 -2
  13. claude_mpm/dashboard/static/built/components/ui-state-manager.js +465 -2
  14. claude_mpm/dashboard/static/css/dashboard.css +2 -0
  15. claude_mpm/dashboard/static/js/browser-console-monitor.js +495 -0
  16. claude_mpm/dashboard/static/js/components/browser-log-viewer.js +763 -0
  17. claude_mpm/dashboard/static/js/components/code-viewer.js +931 -340
  18. claude_mpm/dashboard/static/js/components/diff-viewer.js +891 -0
  19. claude_mpm/dashboard/static/js/components/file-change-tracker.js +443 -0
  20. claude_mpm/dashboard/static/js/components/file-change-viewer.js +690 -0
  21. claude_mpm/dashboard/static/js/components/ui-state-manager.js +307 -19
  22. claude_mpm/dashboard/static/js/socket-client.js +2 -2
  23. claude_mpm/dashboard/static/test-browser-monitor.html +470 -0
  24. claude_mpm/dashboard/templates/index.html +62 -99
  25. claude_mpm/services/cli/unified_dashboard_manager.py +1 -1
  26. claude_mpm/services/monitor/daemon.py +69 -36
  27. claude_mpm/services/monitor/daemon_manager.py +186 -29
  28. claude_mpm/services/monitor/handlers/browser.py +451 -0
  29. claude_mpm/services/monitor/server.py +272 -5
  30. {claude_mpm-4.2.39.dist-info → claude_mpm-4.2.42.dist-info}/METADATA +1 -1
  31. {claude_mpm-4.2.39.dist-info → claude_mpm-4.2.42.dist-info}/RECORD +35 -29
  32. claude_mpm/agents/templates/agentic-coder-optimizer.md +0 -44
  33. claude_mpm/agents/templates/agentic_coder_optimizer.json +0 -238
  34. claude_mpm/agents/templates/test-non-mpm.json +0 -20
  35. claude_mpm/dashboard/static/dist/components/code-viewer.js +0 -2
  36. {claude_mpm-4.2.39.dist-info → claude_mpm-4.2.42.dist-info}/WHEEL +0 -0
  37. {claude_mpm-4.2.39.dist-info → claude_mpm-4.2.42.dist-info}/entry_points.txt +0 -0
  38. {claude_mpm-4.2.39.dist-info → claude_mpm-4.2.42.dist-info}/licenses/LICENSE +0 -0
  39. {claude_mpm-4.2.39.dist-info → claude_mpm-4.2.42.dist-info}/top_level.txt +0 -0
@@ -28,6 +28,7 @@ from aiohttp import web
28
28
  from ...core.logging_config import get_logger
29
29
  from ...dashboard.api.simple_directory import list_directory
30
30
  from .event_emitter import get_event_emitter
31
+ from .handlers.browser import BrowserHandler
31
32
  from .handlers.code_analysis import CodeAnalysisHandler
32
33
  from .handlers.dashboard import DashboardHandler
33
34
  from .handlers.file import FileHandler
@@ -68,6 +69,7 @@ class UnifiedMonitorServer:
68
69
  self.site = None
69
70
 
70
71
  # Event handlers
72
+ self.browser_handler = None
71
73
  self.code_analysis_handler = None
72
74
  self.dashboard_handler = None
73
75
  self.file_handler = None
@@ -198,9 +200,13 @@ class UnifiedMonitorServer:
198
200
  async def _start_async_server(self):
199
201
  """Start the async server components."""
200
202
  try:
201
- # Create Socket.IO server
203
+ # Create Socket.IO server with proper ping configuration
202
204
  self.sio = socketio.AsyncServer(
203
- cors_allowed_origins="*", logger=False, engineio_logger=False
205
+ cors_allowed_origins="*",
206
+ logger=False,
207
+ engineio_logger=False,
208
+ ping_interval=30, # 30 seconds ping interval (matches client expectation)
209
+ ping_timeout=60, # 60 seconds ping timeout (generous for stability)
204
210
  )
205
211
 
206
212
  # Create aiohttp application
@@ -239,7 +245,11 @@ class UnifiedMonitorServer:
239
245
  except OSError as e:
240
246
  # Port binding error - make sure it's reported clearly
241
247
  # Check for common port binding errors
242
- if "Address already in use" in str(e) or "[Errno 48]" in str(e) or "[Errno 98]" in str(e):
248
+ if (
249
+ "Address already in use" in str(e)
250
+ or "[Errno 48]" in str(e)
251
+ or "[Errno 98]" in str(e)
252
+ ):
243
253
  error_msg = f"Port {self.port} is already in use. Another process may be using this port."
244
254
  self.logger.error(error_msg)
245
255
  self.startup_error = error_msg
@@ -262,12 +272,14 @@ class UnifiedMonitorServer:
262
272
  """Setup Socket.IO event handlers."""
263
273
  try:
264
274
  # Create event handlers
275
+ self.browser_handler = BrowserHandler(self.sio)
265
276
  self.code_analysis_handler = CodeAnalysisHandler(self.sio)
266
277
  self.dashboard_handler = DashboardHandler(self.sio)
267
278
  self.file_handler = FileHandler(self.sio)
268
279
  self.hook_handler = HookHandler(self.sio)
269
280
 
270
281
  # Register handlers
282
+ self.browser_handler.register()
271
283
  self.code_analysis_handler.register()
272
284
  self.dashboard_handler.register()
273
285
  self.file_handler.register()
@@ -493,19 +505,273 @@ class UnifiedMonitorServer:
493
505
 
494
506
  return web.json_response(config)
495
507
 
508
+ # Working directory endpoint
509
+ async def working_directory_handler(request):
510
+ """Return the current working directory."""
511
+ return web.json_response(
512
+ {"working_directory": os.getcwd(), "success": True}
513
+ )
514
+
515
+ # Browser monitor script endpoint
516
+ async def browser_monitor_script_handler(request):
517
+ """Serve the browser console monitoring script with dynamic port injection."""
518
+ try:
519
+ # Read the browser monitor script template
520
+ script_path = (
521
+ dashboard_dir / "static" / "js" / "browser-console-monitor.js"
522
+ )
523
+
524
+ if not script_path.exists():
525
+ return web.Response(
526
+ text="Browser monitor script not found",
527
+ status=404,
528
+ content_type="text/javascript",
529
+ )
530
+
531
+ # Read script content
532
+ with open(script_path, encoding="utf-8") as f:
533
+ script_content = f.read()
534
+
535
+ # Replace the port placeholder with actual monitor port
536
+ script_content = script_content.replace(
537
+ "__MONITOR_PORT__", str(self.port)
538
+ )
539
+
540
+ # Set appropriate headers for JavaScript
541
+ headers = {
542
+ "Content-Type": "application/javascript; charset=utf-8",
543
+ "Access-Control-Allow-Origin": "*",
544
+ "Access-Control-Allow-Methods": "GET, OPTIONS",
545
+ "Access-Control-Allow-Headers": "Content-Type",
546
+ "Cache-Control": "no-cache, no-store, must-revalidate",
547
+ "Pragma": "no-cache",
548
+ "Expires": "0",
549
+ }
550
+
551
+ return web.Response(text=script_content, headers=headers)
552
+
553
+ except Exception as e:
554
+ self.logger.error(f"Error serving browser monitor script: {e}")
555
+ return web.Response(
556
+ text=f"// Error loading browser monitor script: {e}",
557
+ status=500,
558
+ content_type="application/javascript",
559
+ )
560
+
561
+ # Browser log endpoints
562
+ async def api_browser_logs_handler(request):
563
+ """Return list of browser log files."""
564
+ try:
565
+ from pathlib import Path
566
+
567
+ # Get browser log directory
568
+ log_dir = Path.home() / ".claude-mpm" / "logs" / "client"
569
+
570
+ if not log_dir.exists():
571
+ return web.json_response({"files": [], "total": 0})
572
+
573
+ # Get all log files
574
+ log_files = []
575
+ for file_path in log_dir.glob("*.log"):
576
+ stat = file_path.stat()
577
+ log_files.append(
578
+ {
579
+ "name": file_path.name,
580
+ "size": stat.st_size,
581
+ "modified": stat.st_mtime,
582
+ "modified_iso": datetime.fromtimestamp(
583
+ stat.st_mtime
584
+ ).isoformat(),
585
+ }
586
+ )
587
+
588
+ # Sort by modification time (newest first)
589
+ log_files.sort(key=lambda x: x["modified"], reverse=True)
590
+
591
+ return web.json_response(
592
+ {
593
+ "files": log_files,
594
+ "total": len(log_files),
595
+ "directory": str(log_dir),
596
+ }
597
+ )
598
+
599
+ except Exception as e:
600
+ self.logger.error(f"Error listing browser logs: {e}")
601
+ return web.json_response(
602
+ {"error": str(e), "files": [], "total": 0}, status=500
603
+ )
604
+
605
+ async def api_browser_log_file_handler(request):
606
+ """Return contents of specific browser log file."""
607
+ try:
608
+ import json
609
+ from pathlib import Path
610
+
611
+ filename = request.match_info.get("filename", "")
612
+
613
+ # Security: ensure filename is safe (no path traversal)
614
+ if (
615
+ not filename
616
+ or "/" in filename
617
+ or "\\" in filename
618
+ or ".." in filename
619
+ ):
620
+ return web.json_response(
621
+ {"error": "Invalid filename"}, status=400
622
+ )
623
+
624
+ # Get log file path
625
+ log_dir = Path.home() / ".claude-mpm" / "logs" / "client"
626
+ log_file = log_dir / filename
627
+
628
+ # Check if file exists and is within log directory
629
+ if not log_file.exists() or not log_file.is_file():
630
+ return web.json_response(
631
+ {"error": "Log file not found"}, status=404
632
+ )
633
+
634
+ # Ensure file is within the log directory (security check)
635
+ try:
636
+ log_file.resolve().relative_to(log_dir.resolve())
637
+ except ValueError:
638
+ return web.json_response(
639
+ {"error": "Invalid file path"}, status=403
640
+ )
641
+
642
+ # Read log entries
643
+ entries = []
644
+ with open(log_file, encoding="utf-8") as f:
645
+ for line in f:
646
+ line = line.strip()
647
+ if line:
648
+ try:
649
+ entry = json.loads(line)
650
+ entries.append(entry)
651
+ except json.JSONDecodeError:
652
+ # If not JSON, treat as plain text log
653
+ entries.append(
654
+ {
655
+ "timestamp": "",
656
+ "level": "INFO",
657
+ "message": line,
658
+ }
659
+ )
660
+
661
+ # Limit entries for performance
662
+ max_entries = 1000
663
+ if len(entries) > max_entries:
664
+ entries = entries[-max_entries:] # Get last N entries
665
+
666
+ return web.json_response(
667
+ {
668
+ "filename": filename,
669
+ "entries": entries,
670
+ "total": len(entries),
671
+ "truncated": len(entries) == max_entries,
672
+ }
673
+ )
674
+
675
+ except Exception as e:
676
+ self.logger.error(f"Error reading browser log file: {e}")
677
+ return web.json_response(
678
+ {"error": str(e), "entries": []}, status=500
679
+ )
680
+
681
+ async def api_browser_log_handler(request):
682
+ """Handle browser log submissions from injected monitoring script."""
683
+ try:
684
+ import json
685
+ from pathlib import Path
686
+
687
+ data = await request.json()
688
+
689
+ # Extract log data
690
+ browser_id = data.get("browser_id", "unknown")
691
+ timestamp = data.get("timestamp", datetime.utcnow().isoformat())
692
+ level = data.get("level", "INFO")
693
+ message = data.get("message", "")
694
+ url = data.get("url", "")
695
+ user_agent = data.get("userAgent", "")
696
+
697
+ # Create log entry
698
+ log_entry = {
699
+ "browser_id": browser_id,
700
+ "timestamp": timestamp,
701
+ "level": level,
702
+ "message": message,
703
+ "url": url,
704
+ "user_agent": user_agent,
705
+ }
706
+
707
+ # Save to file
708
+ log_dir = Path.home() / ".claude-mpm" / "logs" / "client"
709
+ log_dir.mkdir(parents=True, exist_ok=True)
710
+
711
+ # Use browser ID in filename for easy filtering
712
+ log_file = log_dir / f"{browser_id}.log"
713
+
714
+ # Append to log file
715
+ with open(log_file, "a", encoding="utf-8") as f:
716
+ f.write(json.dumps(log_entry) + "\n")
717
+
718
+ # Also emit to Socket.IO for real-time viewing
719
+ if self.sio:
720
+ await self.sio.emit("browser_log", log_entry)
721
+
722
+ return web.Response(status=204) # No content
723
+
724
+ except Exception as e:
725
+ self.logger.error(f"Error handling browser log: {e}")
726
+ return web.Response(text=str(e), status=500)
727
+
496
728
  # Register routes
497
729
  self.app.router.add_get("/", dashboard_index)
498
730
  self.app.router.add_get("/health", health_check)
499
731
  self.app.router.add_get("/version.json", version_handler)
500
732
  self.app.router.add_get("/api/config", config_handler)
733
+ self.app.router.add_get("/api/working-directory", working_directory_handler)
501
734
  self.app.router.add_get("/api/directory", list_directory)
735
+ self.app.router.add_get(
736
+ "/api/browser-monitor.js", browser_monitor_script_handler
737
+ )
738
+ self.app.router.add_get("/api/browser-logs", api_browser_logs_handler)
739
+ self.app.router.add_get(
740
+ "/api/browser-logs/{filename}", api_browser_log_file_handler
741
+ )
742
+ self.app.router.add_post("/api/browser-log", api_browser_log_handler)
502
743
  self.app.router.add_post("/api/events", api_events_handler)
503
744
  self.app.router.add_post("/api/file", api_file_handler)
504
745
 
505
- # Static files
746
+ # Static files with cache busting headers for development
506
747
  static_dir = dashboard_dir / "static"
507
748
  if static_dir.exists():
508
- self.app.router.add_static("/static/", static_dir)
749
+
750
+ async def static_handler(request):
751
+ """Serve static files with cache-control headers for development."""
752
+
753
+ from aiohttp.web_fileresponse import FileResponse
754
+
755
+ # Get the relative path from the request
756
+ rel_path = request.match_info["filepath"]
757
+ file_path = static_dir / rel_path
758
+
759
+ if not file_path.exists() or not file_path.is_file():
760
+ raise web.HTTPNotFound()
761
+
762
+ # Create file response
763
+ response = FileResponse(file_path)
764
+
765
+ # Add cache-busting headers for development
766
+ response.headers["Cache-Control"] = (
767
+ "no-cache, no-store, must-revalidate"
768
+ )
769
+ response.headers["Pragma"] = "no-cache"
770
+ response.headers["Expires"] = "0"
771
+
772
+ return response
773
+
774
+ self.app.router.add_get("/static/{filepath:.*}", static_handler)
509
775
 
510
776
  # Templates
511
777
  templates_dir = dashboard_dir / "templates"
@@ -695,6 +961,7 @@ class UnifiedMonitorServer:
695
961
  "host": self.host,
696
962
  "port": self.port,
697
963
  "handlers": {
964
+ "browser": self.browser_handler is not None,
698
965
  "code_analysis": self.code_analysis_handler is not None,
699
966
  "dashboard": self.dashboard_handler is not None,
700
967
  "file": self.file_handler is not None,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 4.2.39
3
+ Version: 4.2.42
4
4
  Summary: Claude Multi-Agent Project Manager - Orchestrate Claude with agent delegation and ticket tracking
5
5
  Author-email: Bob Matsuoka <bob@matsuoka.com>
6
6
  Maintainer: Claude MPM Team
@@ -1,5 +1,5 @@
1
1
  claude_mpm/BUILD_NUMBER,sha256=toytnNjkIKPgQaGwDqQdC1rpNTAdSEc6Vja50d7Ovug,4
2
- claude_mpm/VERSION,sha256=rPIlGse66RudpHHHZLBC5KxFCk-2bw29CGEogBG2IXc,7
2
+ claude_mpm/VERSION,sha256=zC7UOoYmJUCNn9YwF48MdZUMOMuqU5LzVZ2X-3RjNmI,7
3
3
  claude_mpm/__init__.py,sha256=lyTZAYGH4DTaFGLRNWJKk5Q5oTjzN5I6AXmfVX-Jff0,1512
4
4
  claude_mpm/__main__.py,sha256=Ro5UBWBoQaSAIoSqWAr7zkbLyvi4sSy28WShqAhKJG0,723
5
5
  claude_mpm/constants.py,sha256=I946iCQzIIPRZVVJ8aO7lA4euiyDnNw2IX7EelAOkIE,5915
@@ -7,15 +7,15 @@ claude_mpm/init.py,sha256=mcBonXUyP9pxEFFYfFcQ4OFLWiICT1XnonM_EdjIhoI,15133
7
7
  claude_mpm/ticket_wrapper.py,sha256=qe5xY579t7_7fK5nyeAfHN_fr7CXdeOD3jfXEc8-7yo,828
8
8
  claude_mpm/agents/BASE_AGENT_TEMPLATE.md,sha256=aK9qxS1FRpm_8VaB5GI2I6YA9Wr8dGHuea_txMFe44M,5524
9
9
  claude_mpm/agents/BASE_DOCUMENTATION.md,sha256=iGub94w3IRURz2PwT0YrfNegMlEzgZ9mzeWa_WBk1rA,1504
10
- claude_mpm/agents/BASE_ENGINEER.md,sha256=K-TIGjApOIFJQBKqfBCbYpE_gYmN6LwW-6QXL9X3NkA,1986
11
- claude_mpm/agents/BASE_OPS.md,sha256=lTeFnJ0_IdOHoo1yItmDXrAD7k2ptjYB2xqB1l6HiZg,1594
10
+ claude_mpm/agents/BASE_ENGINEER.md,sha256=lXkA6KoCopsRTWS1LOx2s5m6S0hT5UT0s3l5owBo0Hc,7491
11
+ claude_mpm/agents/BASE_OPS.md,sha256=vKtjqJm_mwTVBv07qnAKf56dC06AQLbJEd9f6Wa4ekA,6468
12
12
  claude_mpm/agents/BASE_PM.md,sha256=4vrUcddIIiZIr6sr0O4KSV8bDyvTRdZTxcJo62q9TEM,13724
13
13
  claude_mpm/agents/BASE_QA.md,sha256=tR4RH63IwxidDXlSnSIRRaoGtmVpJp-0_GkQkmFUbjM,1590
14
14
  claude_mpm/agents/BASE_RESEARCH.md,sha256=2DZhDd5XxWWtsyNTBIwvtNWBu1JpFy5R5SAZDHh0otU,1690
15
- claude_mpm/agents/INSTRUCTIONS.md,sha256=VjXX1b4GObTleu3-P5PwxcaglTgFSaSUTD6nCDA9o0Q,13996
15
+ claude_mpm/agents/INSTRUCTIONS.md,sha256=tq0m84TJBldR_jePPMOR5auv7pv0WzNIaaf7GYhVvHo,19703
16
16
  claude_mpm/agents/MEMORY.md,sha256=KbRwY_RYdOvTvFC2DD-ATfwjHkQWJ5PIjlGws_7RmjI,3307
17
17
  claude_mpm/agents/OUTPUT_STYLE.md,sha256=2UzQvboIn5Zt18Rotorua8tQsGrvIJp1bcjCYvA2QcY,1875
18
- claude_mpm/agents/WORKFLOW.md,sha256=zjgBsWZbL5Yg_cVUMxBZjnBQqheGl-etYWdahxxpe0Y,8899
18
+ claude_mpm/agents/WORKFLOW.md,sha256=sYenQFFnSZ3IGF0N5bH9-5Dv06icmMBFQxoX74v38kY,15217
19
19
  claude_mpm/agents/__init__.py,sha256=jRFxvV_DIZ-NdENa-703Xu3YpwvlQj6yv-mQ6FgmldM,3220
20
20
  claude_mpm/agents/agent-template.yaml,sha256=mRlz5Yd0SmknTeoJWgFkZXzEF5T7OmGBJGs2-KPT93k,1969
21
21
  claude_mpm/agents/agent_loader.py,sha256=sEoM3076qTOx9Rtk_HugK6X7T-dIVF8brHFpDbiXnzU,31817
@@ -29,9 +29,7 @@ claude_mpm/agents/system_agent_config.py,sha256=HBDrtRld1ruPqrThA0j4vtMr4cBt0fT7
29
29
  claude_mpm/agents/templates/__init__.py,sha256=kghxAWs3KvcAA9Esk3NI7caumYgW6fiW8vRO1-MEndU,2735
30
30
  claude_mpm/agents/templates/agent-manager.json,sha256=vj2-wdvtTpCrN9qpj_xTwcPxbJBARPc00ojFNSXd0PU,15482
31
31
  claude_mpm/agents/templates/agent-manager.md,sha256=rWQ7MREoMdQtJhMujEPVYud6N-fGvicMuBvYIdRo22w,19418
32
- claude_mpm/agents/templates/agentic-coder-optimizer.json,sha256=G_6W96cFYrVA0oH1mUq7L6TABFZsyjEl2N7SjYnROWg,15218
33
- claude_mpm/agents/templates/agentic-coder-optimizer.md,sha256=tlQngiRr9yX6J41t8BqoEYRZwrnB92ZzcG4k8I4cH9k,1071
34
- claude_mpm/agents/templates/agentic_coder_optimizer.json,sha256=JBgPNDczgefU9iqoih12o8A52_-SLJembH2gn46OkrY,15403
32
+ claude_mpm/agents/templates/agentic-coder-optimizer.json,sha256=JBgPNDczgefU9iqoih12o8A52_-SLJembH2gn46OkrY,15403
35
33
  claude_mpm/agents/templates/api_qa.json,sha256=5kPwahK5QlbDV-dxWTmso2EkWTCw9e332gEGaTvDzP8,5786
36
34
  claude_mpm/agents/templates/code_analyzer.json,sha256=ZxjJxtioSwfv8ELme4eUqazoJTsORVOLad_0_bQqZb8,7411
37
35
  claude_mpm/agents/templates/data_engineer.json,sha256=LjUVQe8VgoX5898Ustugy1zsb03U_lb51dyiRRUK3F8,5629
@@ -43,20 +41,20 @@ claude_mpm/agents/templates/memory_manager.json,sha256=b6bTMLFShY4-884pgjc6wsfLI
43
41
  claude_mpm/agents/templates/ops.json,sha256=zp1uBfxdp7Atja0oLcNr8TAv-CQuK4mAnbfnLQMFIF4,10904
44
42
  claude_mpm/agents/templates/project_organizer.json,sha256=p-4-7bLQk2RBAKglxWDcFR-U23uB7aTDcTep8WOOjGo,5632
45
43
  claude_mpm/agents/templates/qa.json,sha256=pHdf-N4k2FJLczuQcBONV1lo8hUXut9tpknyDal3C4A,9590
44
+ claude_mpm/agents/templates/react_engineer.json,sha256=8sFzkVNN-Rf6X8Dbg3FcsbYJ2oJs9HCBPn-C-dzzacY,10641
46
45
  claude_mpm/agents/templates/refactoring_engineer.json,sha256=PjaJx7AP-pRqZhZmbkHpZmD-ApeHy934cvq6SeJMk5A,11877
47
46
  claude_mpm/agents/templates/research.json,sha256=f-IsmrKFbSJmpaGUOuqJBc0CbWi9Zz29e2cwFlYyWA0,10679
48
47
  claude_mpm/agents/templates/security.json,sha256=KneO6U4jMGX8Oh-ViQVtnNOOvsUgmrkqZhiyrh9p7HE,14833
49
- claude_mpm/agents/templates/test-non-mpm.json,sha256=WZTZADYSGSfxTm7gyByeaHPC4CaclbORkSmiBmDKcXs,592
50
48
  claude_mpm/agents/templates/ticketing.json,sha256=MaLL7xBpZoqghVJ-cQNQOKHoGTkdiaJgE8ysZJqTiwM,11514
51
49
  claude_mpm/agents/templates/vercel_ops_agent.json,sha256=cOUo-QOx7MCEZpn3v50GTZk4EVLgu56NGP2di7Pm_-w,10077
52
50
  claude_mpm/agents/templates/version_control.json,sha256=fv4pCG-6DeFjB5cFnlC9otVmHUCl-9cJ9vgkQE0MOcw,14430
53
- claude_mpm/agents/templates/web_qa.json,sha256=2AM11a7dRK6E5FEzoC0J1ndl86l6Wbo0mcLlr-KVOd4,10350
51
+ claude_mpm/agents/templates/web_qa.json,sha256=oMMyZTpg8J4ylmWqqUajjV2ogz92e3nbnniK_1KVqhk,15326
54
52
  claude_mpm/agents/templates/web_ui.json,sha256=tqdNRMP8EgBL-yNSQ06WxMTyAziSbWVVqjqm6rLzmdw,34852
55
53
  claude_mpm/agents/templates/.claude-mpm/memories/README.md,sha256=vEiG7cPjHRZfwX2IQB-i30ArO8zJyuxMJzHh8hnVZ6A,483
56
54
  claude_mpm/agents/templates/.claude-mpm/memories/engineer_memories.md,sha256=KMZSJrQi-wHOwfl2C0m3A4PpC4QuBtDolAtVybGahKc,77
57
55
  claude_mpm/agents/templates/logs/prompts/agent_engineer_20250826_014258_728.md,sha256=UBm4BycXtdaa-_l1VCh0alTGGOUSsnCbpKwbFuI-mUY,2219
58
56
  claude_mpm/agents/templates/logs/prompts/agent_engineer_20250901_010124_142.md,sha256=oPvFSYFnmJ4TkbTe4AZnNHWaJMJ-xqZP2WM6scUKQKo,13089
59
- claude_mpm/cli/__init__.py,sha256=5eW6ZPruxwWaHwIXyHByQkKUOhvMLwAax59iCU1MHVg,16863
57
+ claude_mpm/cli/__init__.py,sha256=hbDc2PSEJHNRMhAYVAk1qPNCL5bTDOvU808VYBJEJgs,16670
60
58
  claude_mpm/cli/__main__.py,sha256=WnVGBwe10InxuZjJRFdwuMF6Gh16aXox6zFgxr0sRXk,847
61
59
  claude_mpm/cli/parser.py,sha256=Vqx9n-6Xo1uNhXR4rThmgWpZXTr0nOtkgDf3oMS9b0g,5855
62
60
  claude_mpm/cli/startup_logging.py,sha256=CWu43ecTJLLT-YHRL94c783XljpR8GKydycGJ1JFuXI,23462
@@ -120,10 +118,12 @@ claude_mpm/cli_module/commands.py,sha256=zZmjP4J19i9PNMA7gCI5Dl--R1u_H4sCt5ZtOad
120
118
  claude_mpm/cli_module/migration_example.py,sha256=DtQ59RyoBD6r8FIfrjKXCQ8-xnUiOqP5McBiS6_W1Qc,5183
121
119
  claude_mpm/commands/__init__.py,sha256=paX5Ub5-UmRgiQ8UgKWIKwU2-RjLu67OmNJND-fVtjg,588
122
120
  claude_mpm/commands/mpm-agents.md,sha256=JnYPJ-eWvIEEtiCB6iPu182P2xDBRvU3ArVXQ7h32kU,1341
121
+ claude_mpm/commands/mpm-browser-monitor.md,sha256=NPm-nqeK_xhC6eL-Oaqqud-2EcreVS4LLT4h9lxc0Vg,13219
123
122
  claude_mpm/commands/mpm-config.md,sha256=F-9kKUC30gT6QXvOr5OTpYOq6L97iA2-SXVGxXjyF8M,547
124
123
  claude_mpm/commands/mpm-doctor.md,sha256=ut5LhFKVRw-2ecjMSPsnaTiRuFXa6Q9t-Wgl3CCnQvk,590
125
124
  claude_mpm/commands/mpm-help.md,sha256=gUMhJ1aTWyNeNMLZJeDJMN2sPuL-ugUFalmrNDEP5bI,282
126
125
  claude_mpm/commands/mpm-init.md,sha256=G-SIbbU9X4bzumsCwL3kMG6Nn2MgSwV7ualtDm64tUw,5180
126
+ claude_mpm/commands/mpm-monitor.md,sha256=TUmlQFatPwt4js2kbpHTuaISIBYO7elP9fsWEaMntjE,6164
127
127
  claude_mpm/commands/mpm-status.md,sha256=zY9toecba_UZTEY3JEKV1EvENQ-FPPvZk4dZwLyZ3LM,351
128
128
  claude_mpm/commands/mpm-tickets.md,sha256=a2_mW56QDhw7-jMU92ycGaxvSSYpNoQFGhkWbr3MJ88,2356
129
129
  claude_mpm/commands/mpm.md,sha256=tv_Mr6p2olRKIltKui4ljfCNG69VokkyIg951CeMBas,559
@@ -187,6 +187,7 @@ claude_mpm/dashboard/open_dashboard.py,sha256=i4OHdjeQLtZX4UnLVMiFlq6iSENvlCcdcm
187
187
  claude_mpm/dashboard/test_dashboard.html,sha256=Aakmm9O-pWld_CCXLuUBOJC81Ix9D1avytTN93u0zfc,15090
188
188
  claude_mpm/dashboard/.claude-mpm/socketio-instances.json,sha256=RBNvo1WzZ4oRRq0W9-hknpT7T8If536DEMBg9hyq_4o,2
189
189
  claude_mpm/dashboard/api/simple_directory.py,sha256=ZeYVPaACsCGfjNLGlo3nHGVQSsg3l-89xLRRbbZMeA8,7160
190
+ claude_mpm/dashboard/static/test-browser-monitor.html,sha256=_1FepA54mfYOQLYWt9D-FBRmaoiQ5ToZbgS0rjCAfr4,17479
190
191
  claude_mpm/dashboard/static/test-simple.html,sha256=PMLrT6yLSCUt1N-nsOTttHEIiy9b9-25ZAkxGJ3JeqY,3428
191
192
  claude_mpm/dashboard/static/test_debug.html,sha256=XZ0tcKA57VnlE_OLGusb0UWh8Hs4SgeD-wsc4neh8Zw,815
192
193
  claude_mpm/dashboard/static/built/dashboard.js,sha256=X0UbZB0SkqdBPWZdIVygwEXbPrl-jS_OPExHww3CB7s,48106
@@ -194,7 +195,7 @@ claude_mpm/dashboard/static/built/socket-client.js,sha256=qT9K5LsrcScj4w1WjSMBJY
194
195
  claude_mpm/dashboard/static/built/components/activity-tree.js,sha256=c7vYmCvMgq7irVrX-EFbNqVMgVuDJ_cwcvsZ4LSO3bU,29594
195
196
  claude_mpm/dashboard/static/built/components/agent-inference.js,sha256=fXK7kzvAXzYzOGdLw_APbDiEN51OX1I4-InnN2iZlu0,12978
196
197
  claude_mpm/dashboard/static/built/components/code-tree.js,sha256=TxTyCUdmilFH_QYmClk-hN0_QHmtNroZ3Ovxi7KImjc,96245
197
- claude_mpm/dashboard/static/built/components/code-viewer.js,sha256=wMggEwMt2RrBuXJO-WYZ5_HHDODfWLm_IS9lS5LLR7M,8495
198
+ claude_mpm/dashboard/static/built/components/code-viewer.js,sha256=VYQVD59tVFovoRC8fKsyO-Bi_2ZwczffYuYqhUtbjRg,41074
198
199
  claude_mpm/dashboard/static/built/components/event-processor.js,sha256=JycF1KIAmxhsNBCsne9CzRFPHMcnQz0WhTABpvuCWSc,131
199
200
  claude_mpm/dashboard/static/built/components/event-viewer.js,sha256=oyfvK8VO1RNSyN1CRoZiB22cNJ4D05p_ahM8WPCH27k,24902
200
201
  claude_mpm/dashboard/static/built/components/export-manager.js,sha256=iEbnirtMJ5bLpKbgBJfMI2bPC1Lf3_UrQntl04OUKEk,4196
@@ -206,19 +207,18 @@ claude_mpm/dashboard/static/built/components/hud-visualizer.js,sha256=igUUu1OLKO
206
207
  claude_mpm/dashboard/static/built/components/module-viewer.js,sha256=eRpKOFuwPeb8SZycpH4IZF8pE04edS3LH0h06s3GdPg,51575
207
208
  claude_mpm/dashboard/static/built/components/session-manager.js,sha256=FHLvnEH8PYoZJS6zR9qbzWxp52fdd8jGiSiprLun8Cc,8928
208
209
  claude_mpm/dashboard/static/built/components/socket-manager.js,sha256=LEqCS0_EABAsQVUfb6WQk152mSicK2k039zne5cKR8A,131
209
- claude_mpm/dashboard/static/built/components/ui-state-manager.js,sha256=PtZs6sxNhqMMFwdlr04kDKQbgOvxtMHdjSh56KR2ZBo,134
210
+ claude_mpm/dashboard/static/built/components/ui-state-manager.js,sha256=kGDSb8AcAp0DrNPdKj2nOu0Dq7D5k0hoeHO_SpcTY3E,14753
210
211
  claude_mpm/dashboard/static/built/components/unified-data-viewer.js,sha256=pMA1iYfpmDObyySbGCUT2240fSrcqZmgfjxXrnHsnlM,36759
211
212
  claude_mpm/dashboard/static/built/components/working-directory.js,sha256=eiZk4C1tNAA5JfKO9XbE7VI-CTI9AjN49kxfkRk320k,15937
212
213
  claude_mpm/dashboard/static/css/activity.css,sha256=0SJUwGB6fr4OlVqMwhvVKrPndg2R3QTZPnN6DkAo4aU,37987
213
214
  claude_mpm/dashboard/static/css/code-tree.css,sha256=Sx74ilt7exGOdxCBEtjP9gZ74lB5e8QWr3_SIcl_0hw,30708
214
215
  claude_mpm/dashboard/static/css/connection-status.css,sha256=nQiMLxIFjY5MDgrVCG58VR5H1PpE1vLlgXmnn01-P64,6729
215
- claude_mpm/dashboard/static/css/dashboard.css,sha256=Uc97_y9UL6waqnx6bDdXkJUqPjj7w8B064C5xeJnlrg,85774
216
+ claude_mpm/dashboard/static/css/dashboard.css,sha256=dDZQ5sno4_c0vrX5Pwgeo8Vin9dhJNhdAMDalQbMfps,85828
216
217
  claude_mpm/dashboard/static/dist/dashboard.js,sha256=X0UbZB0SkqdBPWZdIVygwEXbPrl-jS_OPExHww3CB7s,48106
217
218
  claude_mpm/dashboard/static/dist/socket-client.js,sha256=qT9K5LsrcScj4w1WjSMBJY-eWAN8Np05Xw4CenOIiJE,29244
218
219
  claude_mpm/dashboard/static/dist/components/activity-tree.js,sha256=c7vYmCvMgq7irVrX-EFbNqVMgVuDJ_cwcvsZ4LSO3bU,29594
219
220
  claude_mpm/dashboard/static/dist/components/agent-inference.js,sha256=fXK7kzvAXzYzOGdLw_APbDiEN51OX1I4-InnN2iZlu0,12978
220
221
  claude_mpm/dashboard/static/dist/components/code-tree.js,sha256=TxTyCUdmilFH_QYmClk-hN0_QHmtNroZ3Ovxi7KImjc,96245
221
- claude_mpm/dashboard/static/dist/components/code-viewer.js,sha256=wMggEwMt2RrBuXJO-WYZ5_HHDODfWLm_IS9lS5LLR7M,8495
222
222
  claude_mpm/dashboard/static/dist/components/event-processor.js,sha256=JycF1KIAmxhsNBCsne9CzRFPHMcnQz0WhTABpvuCWSc,131
223
223
  claude_mpm/dashboard/static/dist/components/event-viewer.js,sha256=oyfvK8VO1RNSyN1CRoZiB22cNJ4D05p_ahM8WPCH27k,24902
224
224
  claude_mpm/dashboard/static/dist/components/export-manager.js,sha256=iEbnirtMJ5bLpKbgBJfMI2bPC1Lf3_UrQntl04OUKEk,4196
@@ -233,21 +233,26 @@ claude_mpm/dashboard/static/dist/components/socket-manager.js,sha256=LEqCS0_EABA
233
233
  claude_mpm/dashboard/static/dist/components/ui-state-manager.js,sha256=PtZs6sxNhqMMFwdlr04kDKQbgOvxtMHdjSh56KR2ZBo,134
234
234
  claude_mpm/dashboard/static/dist/components/unified-data-viewer.js,sha256=pMA1iYfpmDObyySbGCUT2240fSrcqZmgfjxXrnHsnlM,36759
235
235
  claude_mpm/dashboard/static/dist/components/working-directory.js,sha256=l0E7R5iJpNX2dyWb5oG_InKFje31cO8om2ykzda0Jlg,16587
236
+ claude_mpm/dashboard/static/js/browser-console-monitor.js,sha256=_YLo3r0VOd_-RC7DEJXUQ2Z2vce6m8vU-ja1GTiBLXs,16377
236
237
  claude_mpm/dashboard/static/js/connection-manager.js,sha256=nn7x1jmwEnBClcChbFk1uMhRPu5U1xmXz3sjuo0LNm4,17981
237
238
  claude_mpm/dashboard/static/js/dashboard.js,sha256=VDnf-LdAKFOD08NCzZlMIWJW3EcDI_ZRo74_OX4FUxY,68876
238
239
  claude_mpm/dashboard/static/js/extension-error-handler.js,sha256=DZHrJ3gbfv4nsjmZpNMj-Sc3GKjVJ5ds8lgoaLRnq5I,6274
239
- claude_mpm/dashboard/static/js/socket-client.js,sha256=LQyB7jf8oCqJ3uNyZ3WEix2faMO1TbMyIoV9a-ebScE,57251
240
+ claude_mpm/dashboard/static/js/socket-client.js,sha256=1XxJ6U0H9NxzaWQrL8amECpAiv8d8sbWGM9p-sPMHLQ,57264
240
241
  claude_mpm/dashboard/static/js/components/activity-tree.js,sha256=1j46X0qjYReP6gwv0WGRpJSJNuBwuj6bKmumWrCZKUo,72740
241
242
  claude_mpm/dashboard/static/js/components/agent-hierarchy.js,sha256=Xihxog_vJrk8VBEkDogV_wbye2GIFWmH71VQ1lETOHk,28243
242
243
  claude_mpm/dashboard/static/js/components/agent-inference.js,sha256=RUVZ_fLOyDkHYjrROen_Pzzay79Bh29eXp_GRIPbIRg,37493
244
+ claude_mpm/dashboard/static/js/components/browser-log-viewer.js,sha256=L2M0CRmlmDvxbYlQ87V0WZUdGJItTEo8KArj2chWMNA,30136
243
245
  claude_mpm/dashboard/static/js/components/build-tracker.js,sha256=iouv35tNhnyx9UKtD7X1eakJkpCnvZVCrAJ_VdzsKUY,11251
244
246
  claude_mpm/dashboard/static/js/components/code-simple.js,sha256=2yOEr5ziM0rKlsE65cemZIlFK31ylmcJeXAQZFHQF5Y,33797
245
247
  claude_mpm/dashboard/static/js/components/code-tree.js,sha256=Fi3s9Psojgj2lH9cXPAINc4n-Z_y9KLjiCkM9VpYyoo,223576
246
- claude_mpm/dashboard/static/js/components/code-viewer.js,sha256=vhesEPYOM6MggweaYvYsv7ufVbuVpIcyJPXpJXyJwpM,14453
248
+ claude_mpm/dashboard/static/js/components/code-viewer.js,sha256=ZZsL_7y9XdH0XwAQD0gU4CMhf6eeO3DcAl5D0DKGKOI,40331
247
249
  claude_mpm/dashboard/static/js/components/connection-debug.js,sha256=Qxr_ofDNkxDlZAwbLnhZkXVMyuO9jOe-NMWC9VHxNnA,22196
250
+ claude_mpm/dashboard/static/js/components/diff-viewer.js,sha256=5Jyj1gYBkBawHG2EAEXwJE31S41Yhv-5QGjBHUXrOik,30329
248
251
  claude_mpm/dashboard/static/js/components/event-processor.js,sha256=pP15JIf2yEh7gqEdam42m_B1B4hDlfKbkDcGmQhyjM8,20567
249
252
  claude_mpm/dashboard/static/js/components/event-viewer.js,sha256=Ahl9eTxCYMhDC_533Gf4O96S04W5O_Ts0PAGWSVivkI,43672
250
253
  claude_mpm/dashboard/static/js/components/export-manager.js,sha256=T1YtaR758FaB9aP_5V1xZC9EBIFQOG5H8f_sLopxR5A,11863
254
+ claude_mpm/dashboard/static/js/components/file-change-tracker.js,sha256=r8jfHD_uSNrqQtX1iD-2tGy1I8YW16SB-Y3Aek92Rto,14991
255
+ claude_mpm/dashboard/static/js/components/file-change-viewer.js,sha256=UvJo6NcwUJAtLg6-DUoathauZ3Lkj5dvKuufwYagLoU,22910
251
256
  claude_mpm/dashboard/static/js/components/file-tool-tracker.js,sha256=y8O7kW5uP6KBT2gWvjRoH1aJG-7o1qzyrVnvShsNAK0,28620
252
257
  claude_mpm/dashboard/static/js/components/file-viewer.js,sha256=Q9twY64RJD4ozcsI9k0foUvDCCsDMWCX-ojywqImhNY,19777
253
258
  claude_mpm/dashboard/static/js/components/hud-library-loader.js,sha256=SK6tY8TL88lnewi4M-i092HdgYondv_lVfHoQ-A_cWU,7170
@@ -256,7 +261,7 @@ claude_mpm/dashboard/static/js/components/hud-visualizer.js,sha256=crgq3eA4xiXDE
256
261
  claude_mpm/dashboard/static/js/components/module-viewer.js,sha256=Ndw3ZDLRP4xaMw2akEH5Dvkof4Vp9umk8yFQzQntLkI,109010
257
262
  claude_mpm/dashboard/static/js/components/session-manager.js,sha256=1J6XdWJPZ_ykrK7y5S3p4Y3HyWGcYoLo69XudeG66nU,22769
258
263
  claude_mpm/dashboard/static/js/components/socket-manager.js,sha256=KC-aOJDEPSiMPYk0ABgvCC1xmO7TVQ4SVqohi2GNsWQ,13303
259
- claude_mpm/dashboard/static/js/components/ui-state-manager.js,sha256=EWm0HpPI9TShChitRCyZvZCiUk5rIBVyw10BoHdnTzI,13178
264
+ claude_mpm/dashboard/static/js/components/ui-state-manager.js,sha256=LulX3DH7I5j0Zxc8slVHF_fcwj-IKw6OqhYh-xvBss4,28486
260
265
  claude_mpm/dashboard/static/js/components/unified-data-viewer.js,sha256=afHCGAg7v3PVhmOr77Bzx3TTZlzHI_5pq16ut3xEYWk,65302
261
266
  claude_mpm/dashboard/static/js/components/working-directory.js,sha256=q8CAvvqCLBIGNkdo-pVF4UmLr-ZvRjy9bLLofmgQZVI,35415
262
267
  claude_mpm/dashboard/static/js/components/code-tree/tree-breadcrumb.js,sha256=oijL6R5JFqSm9aHEbh46D7rgK_EDSmAGW-PO2vmacGM,10481
@@ -268,7 +273,7 @@ claude_mpm/dashboard/static/js/shared/event-bus.js,sha256=aV2QMt8Ris1BFxuFUYoOvM
268
273
  claude_mpm/dashboard/static/js/shared/logger.js,sha256=nQE-6b8pAAhWsafgon6UT-ueyOmhukrNFaGkcT77RS0,10431
269
274
  claude_mpm/dashboard/static/js/shared/tooltip-service.js,sha256=T0_0koY2SNHTlctzU4Z5VBH0EWRXmO-ODo9WvO2HUto,7588
270
275
  claude_mpm/dashboard/templates/code_simple.html,sha256=xrmTLFow0M5NWFlk4ci1eLWML-IHr35i5pqIVaEg2TU,4329
271
- claude_mpm/dashboard/templates/index.html,sha256=3nT2CdpQWtEmyr7DogF7TfHdQkKZifMcc-haka9_Jy8,33231
276
+ claude_mpm/dashboard/templates/index.html,sha256=YxLBy1nybGbc1AAElfZHu-vA8a3_Hk5QDB0YhU0dj9c,30593
272
277
  claude_mpm/experimental/__init__.py,sha256=R_aclOvWpvSTHWAx9QXyg9OIPVK2dXT5tQJhxLQN11Y,369
273
278
  claude_mpm/experimental/cli_enhancements.py,sha256=rlYOMVlj8vQzuyCkHWQ7TtjcsDeFq3y1Ng5qty2fyY8,11486
274
279
  claude_mpm/generators/__init__.py,sha256=rG8vwF_BjPmeMKvyMXpUA8uJ-7mtW2HTNfalZzgRlNk,153
@@ -436,7 +441,7 @@ claude_mpm/services/cli/memory_crud_service.py,sha256=ciN9Pl_12iDAqF9zPBWOzu-iXi
436
441
  claude_mpm/services/cli/memory_output_formatter.py,sha256=nbf7VsjGvH4e9fLv9c7PzjuO9COZhbK5P2fNZ79055w,24783
437
442
  claude_mpm/services/cli/session_manager.py,sha256=rla_Stbcvt93wa9G9MCMu9UqB3FLGqlPt_eN5lQb3Gg,16599
438
443
  claude_mpm/services/cli/startup_checker.py,sha256=efhuvu8ns5G16jcQ0nQZKVddmD2AktUEdlvjNcXjAuk,12232
439
- claude_mpm/services/cli/unified_dashboard_manager.py,sha256=YXb3hbyukTk-yycqLAIUTYe54lt0GFI5OyH6VrLL_RI,15449
444
+ claude_mpm/services/cli/unified_dashboard_manager.py,sha256=XOXC7mlfmqwKrNDDbxu3q8qPn0oAUvPkQY7e_SwTTIA,15433
440
445
  claude_mpm/services/communication/__init__.py,sha256=b4qc7_Rqy4DE9q7BAUlfUZjoYG4uimAyUnE0irPcXyU,560
441
446
  claude_mpm/services/core/__init__.py,sha256=evEayLlBqJvxMZhrhuK6aagXmNrKGSj8Jm9OOxKzqvU,2195
442
447
  claude_mpm/services/core/base.py,sha256=iA-F7DgGp-FJIMvQTiHQ68RkG_k-AtUWlArJPMw6ZPk,7297
@@ -552,11 +557,12 @@ claude_mpm/services/memory/cache/__init__.py,sha256=6M6-P8ParyxX8vOgp_IxHgLMvacr
552
557
  claude_mpm/services/memory/cache/shared_prompt_cache.py,sha256=crnYPUT8zcS7TvoE1vW7pyaf4T77N5rJ1wUf_YQ2vvo,28704
553
558
  claude_mpm/services/memory/cache/simple_cache.py,sha256=qsTjbcsPxj-kNfaod9VN_uE5NioIwpfkUin_mMVUJCg,10218
554
559
  claude_mpm/services/monitor/__init__.py,sha256=X7gxSLUm9Fg_zEsX6LtCHP2ipF0qj6Emkun20h2So7g,745
555
- claude_mpm/services/monitor/daemon.py,sha256=YwwxMaqgcEzbP9eRUbmHodkhiNgn0oU2g7xpHDhd00w,24310
556
- claude_mpm/services/monitor/daemon_manager.py,sha256=0K0lhxNbPGIG6R_rS5B2r8OKJg2ZebVQuwSSDMN22bo,28237
560
+ claude_mpm/services/monitor/daemon.py,sha256=ZeFZPoLKd8PGShNA-mRpFkQkQBbsP7iaDDlNJGCbFe0,25964
561
+ claude_mpm/services/monitor/daemon_manager.py,sha256=fAcrRh-zBAHXP5_9s5WKCZ-V5EhTEijHPvrSJWwU7Yc,34238
557
562
  claude_mpm/services/monitor/event_emitter.py,sha256=JzRLNg8PUJ5s3ulNnq_D4yqCPItvidJzu8DmFxriieQ,12224
558
- claude_mpm/services/monitor/server.py,sha256=aKweXs3saNuPDaPwuoJT9g6kYYHefSiLcGmLdHD6FYM,28579
563
+ claude_mpm/services/monitor/server.py,sha256=CSyfbRrDTyTDpuClMsusRFCwsHJ85u4TDQfoYXx57e8,40128
559
564
  claude_mpm/services/monitor/handlers/__init__.py,sha256=jgPIf4IJVERm_tAeD9834tfx9IcxtlHj5r9rhEWpkfM,701
565
+ claude_mpm/services/monitor/handlers/browser.py,sha256=xtUustTAWtNs35HdwdP1wDOrbS-P403xv5DmV3qtklU,15485
560
566
  claude_mpm/services/monitor/handlers/code_analysis.py,sha256=mHyI27Wp6WVmUBc0m0i991ogyFZBTvkrfR7Kf3EAk5U,11474
561
567
  claude_mpm/services/monitor/handlers/dashboard.py,sha256=uGBhb-6RG6u4WLipUXgdx7RCW-vb_qek5dIfHIwAC7o,9805
562
568
  claude_mpm/services/monitor/handlers/file.py,sha256=p3C4wffl0GIcN00b-KkrmZ8F-AmdZlGqLzBqQcqZ9Ns,9729
@@ -644,9 +650,9 @@ claude_mpm/utils/subprocess_utils.py,sha256=zgiwLqh_17WxHpySvUPH65pb4bzIeUGOAYUJ
644
650
  claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
645
651
  claude_mpm/validation/agent_validator.py,sha256=3Lo6LK-Mw9IdnL_bd3zl_R6FkgSVDYKUUM7EeVVD3jc,20865
646
652
  claude_mpm/validation/frontmatter_validator.py,sha256=u8g4Eyd_9O6ugj7Un47oSGh3kqv4wMkuks2i_CtWRvM,7028
647
- claude_mpm-4.2.39.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
648
- claude_mpm-4.2.39.dist-info/METADATA,sha256=mf2X8SRmS0EUaenCC01wANeEtZ-nZLLIFd-4m0c9v_4,14451
649
- claude_mpm-4.2.39.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
650
- claude_mpm-4.2.39.dist-info/entry_points.txt,sha256=FDPZgz8JOvD-6iuXY2l9Zbo9zYVRuE4uz4Qr0vLeGOk,471
651
- claude_mpm-4.2.39.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
652
- claude_mpm-4.2.39.dist-info/RECORD,,
653
+ claude_mpm-4.2.42.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
654
+ claude_mpm-4.2.42.dist-info/METADATA,sha256=5WZcbus1yGmtWOIozWezvJ1X0CvJRYHvrR_UY5L3crA,14451
655
+ claude_mpm-4.2.42.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
656
+ claude_mpm-4.2.42.dist-info/entry_points.txt,sha256=FDPZgz8JOvD-6iuXY2l9Zbo9zYVRuE4uz4Qr0vLeGOk,471
657
+ claude_mpm-4.2.42.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
658
+ claude_mpm-4.2.42.dist-info/RECORD,,
@@ -1,44 +0,0 @@
1
- # Agentic Coder Optimizer
2
-
3
- ## Core Identity
4
-
5
- You are Agentic Coder Optimizer, a specialized agent in the Claude MPM framework.
6
-
7
- ## Purpose
8
-
9
- None
10
-
11
- ## Responsibilities
12
-
13
- - Primary focus on your specialized domain
14
- - Collaborate with other agents as needed
15
- - Follow Claude MPM framework conventions
16
- - Maintain high quality standards
17
-
18
- ## Operating Principles
19
-
20
- 1. **Expertise**: Apply deep knowledge in your domain
21
- 2. **Efficiency**: Complete tasks effectively and quickly
22
- 3. **Communication**: Provide clear, actionable responses
23
- 4. **Collaboration**: Work well with other agents
24
- 5. **Quality**: Maintain high standards in all outputs
25
-
26
- ## Output Format
27
-
28
- Provide structured responses with:
29
- - Clear summaries of actions taken
30
- - Detailed results when appropriate
31
- - Any issues or blockers encountered
32
- - Recommendations for next steps
33
-
34
- ## Integration
35
-
36
- - Follow framework patterns and conventions
37
- - Use appropriate tools for the task
38
- - Coordinate with PM for complex workflows
39
- - Report completion status clearly
40
-
41
- ---
42
-
43
- *Agent ID: agentic-coder-optimizer*
44
- *Generated by Agent Manager*