claude-mpm 4.2.13__py3-none-any.whl → 4.2.15__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- claude_mpm/cli/commands/analyze_code.py +0 -1
- claude_mpm/cli/commands/dashboard.py +0 -1
- claude_mpm/cli/commands/monitor.py +0 -1
- claude_mpm/core/constants.py +65 -0
- claude_mpm/core/error_handler.py +625 -0
- claude_mpm/core/file_utils.py +770 -0
- claude_mpm/core/logging_utils.py +502 -0
- claude_mpm/dashboard/static/dist/components/code-tree.js +1 -1
- claude_mpm/dashboard/static/dist/components/file-viewer.js +1 -1
- claude_mpm/dashboard/static/dist/dashboard.js +1 -1
- claude_mpm/dashboard/static/dist/socket-client.js +1 -1
- claude_mpm/dashboard/static/js/components/code-simple.js +44 -1
- claude_mpm/dashboard/static/js/components/code-tree/tree-breadcrumb.js +353 -0
- claude_mpm/dashboard/static/js/components/code-tree/tree-constants.js +235 -0
- claude_mpm/dashboard/static/js/components/code-tree/tree-search.js +409 -0
- claude_mpm/dashboard/static/js/components/code-tree/tree-utils.js +435 -0
- claude_mpm/dashboard/static/js/components/code-tree.js +29 -5
- claude_mpm/dashboard/static/js/components/file-viewer.js +69 -27
- claude_mpm/dashboard/static/js/components/session-manager.js +7 -7
- claude_mpm/dashboard/static/js/components/working-directory.js +18 -9
- claude_mpm/dashboard/static/js/dashboard.js +91 -9
- claude_mpm/dashboard/static/js/shared/dom-helpers.js +396 -0
- claude_mpm/dashboard/static/js/shared/event-bus.js +330 -0
- claude_mpm/dashboard/static/js/shared/logger.js +385 -0
- claude_mpm/dashboard/static/js/shared/tooltip-service.js +253 -0
- claude_mpm/dashboard/static/js/socket-client.js +18 -0
- claude_mpm/dashboard/templates/index.html +22 -9
- claude_mpm/services/cli/unified_dashboard_manager.py +2 -1
- claude_mpm/services/monitor/handlers/__init__.py +2 -1
- claude_mpm/services/monitor/handlers/file.py +263 -0
- claude_mpm/services/monitor/handlers/hooks.py +25 -1
- claude_mpm/services/monitor/server.py +111 -1
- claude_mpm/services/socketio/handlers/file.py +40 -5
- {claude_mpm-4.2.13.dist-info → claude_mpm-4.2.15.dist-info}/METADATA +1 -1
- {claude_mpm-4.2.13.dist-info → claude_mpm-4.2.15.dist-info}/RECORD +39 -27
- {claude_mpm-4.2.13.dist-info → claude_mpm-4.2.15.dist-info}/WHEEL +0 -0
- {claude_mpm-4.2.13.dist-info → claude_mpm-4.2.15.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.2.13.dist-info → claude_mpm-4.2.15.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.2.13.dist-info → claude_mpm-4.2.15.dist-info}/top_level.txt +0 -0
|
@@ -16,8 +16,10 @@ DESIGN DECISIONS:
|
|
|
16
16
|
|
|
17
17
|
import asyncio
|
|
18
18
|
import threading
|
|
19
|
+
import time
|
|
20
|
+
from datetime import datetime
|
|
19
21
|
from pathlib import Path
|
|
20
|
-
from typing import Dict
|
|
22
|
+
from typing import Dict, Optional
|
|
21
23
|
|
|
22
24
|
import socketio
|
|
23
25
|
from aiohttp import web
|
|
@@ -27,6 +29,7 @@ from ...dashboard.api.simple_directory import list_directory
|
|
|
27
29
|
from .event_emitter import get_event_emitter
|
|
28
30
|
from .handlers.code_analysis import CodeAnalysisHandler
|
|
29
31
|
from .handlers.dashboard import DashboardHandler
|
|
32
|
+
from .handlers.file import FileHandler
|
|
30
33
|
from .handlers.hooks import HookHandler
|
|
31
34
|
|
|
32
35
|
# EventBus integration
|
|
@@ -66,6 +69,7 @@ class UnifiedMonitorServer:
|
|
|
66
69
|
# Event handlers
|
|
67
70
|
self.code_analysis_handler = None
|
|
68
71
|
self.dashboard_handler = None
|
|
72
|
+
self.file_handler = None
|
|
69
73
|
self.hook_handler = None
|
|
70
74
|
|
|
71
75
|
# High-performance event emitter
|
|
@@ -76,6 +80,11 @@ class UnifiedMonitorServer:
|
|
|
76
80
|
self.loop = None
|
|
77
81
|
self.server_thread = None
|
|
78
82
|
|
|
83
|
+
# Heartbeat tracking
|
|
84
|
+
self.heartbeat_task: Optional[asyncio.Task] = None
|
|
85
|
+
self.server_start_time = time.time()
|
|
86
|
+
self.heartbeat_count = 0
|
|
87
|
+
|
|
79
88
|
def start(self) -> bool:
|
|
80
89
|
"""Start the unified monitor server.
|
|
81
90
|
|
|
@@ -192,6 +201,10 @@ class UnifiedMonitorServer:
|
|
|
192
201
|
"Using high-performance async event architecture with direct calls"
|
|
193
202
|
)
|
|
194
203
|
|
|
204
|
+
# Start heartbeat task
|
|
205
|
+
self.heartbeat_task = asyncio.create_task(self._heartbeat_loop())
|
|
206
|
+
self.logger.info("Heartbeat task started (3-minute interval)")
|
|
207
|
+
|
|
195
208
|
# Setup HTTP routes
|
|
196
209
|
self._setup_http_routes()
|
|
197
210
|
|
|
@@ -221,11 +234,13 @@ class UnifiedMonitorServer:
|
|
|
221
234
|
# Create event handlers
|
|
222
235
|
self.code_analysis_handler = CodeAnalysisHandler(self.sio)
|
|
223
236
|
self.dashboard_handler = DashboardHandler(self.sio)
|
|
237
|
+
self.file_handler = FileHandler(self.sio)
|
|
224
238
|
self.hook_handler = HookHandler(self.sio)
|
|
225
239
|
|
|
226
240
|
# Register handlers
|
|
227
241
|
self.code_analysis_handler.register()
|
|
228
242
|
self.dashboard_handler.register()
|
|
243
|
+
self.file_handler.register()
|
|
229
244
|
self.hook_handler.register()
|
|
230
245
|
|
|
231
246
|
self.logger.info("Event handlers registered successfully")
|
|
@@ -405,10 +420,40 @@ class UnifiedMonitorServer:
|
|
|
405
420
|
}
|
|
406
421
|
)
|
|
407
422
|
|
|
423
|
+
# Configuration endpoint for dashboard initialization
|
|
424
|
+
async def config_handler(request):
|
|
425
|
+
"""Return configuration for dashboard initialization."""
|
|
426
|
+
import os
|
|
427
|
+
import subprocess
|
|
428
|
+
|
|
429
|
+
config = {
|
|
430
|
+
"workingDirectory": os.getcwd(),
|
|
431
|
+
"gitBranch": "Unknown",
|
|
432
|
+
"serverTime": datetime.utcnow().isoformat() + "Z",
|
|
433
|
+
"service": "unified-monitor",
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
# Try to get current git branch
|
|
437
|
+
try:
|
|
438
|
+
result = subprocess.run(
|
|
439
|
+
["git", "branch", "--show-current"],
|
|
440
|
+
capture_output=True,
|
|
441
|
+
text=True,
|
|
442
|
+
timeout=2,
|
|
443
|
+
cwd=os.getcwd(), check=False,
|
|
444
|
+
)
|
|
445
|
+
if result.returncode == 0 and result.stdout.strip():
|
|
446
|
+
config["gitBranch"] = result.stdout.strip()
|
|
447
|
+
except Exception:
|
|
448
|
+
pass # Keep default "Unknown" value
|
|
449
|
+
|
|
450
|
+
return web.json_response(config)
|
|
451
|
+
|
|
408
452
|
# Register routes
|
|
409
453
|
self.app.router.add_get("/", dashboard_index)
|
|
410
454
|
self.app.router.add_get("/health", health_check)
|
|
411
455
|
self.app.router.add_get("/version.json", version_handler)
|
|
456
|
+
self.app.router.add_get("/api/config", config_handler)
|
|
412
457
|
self.app.router.add_get("/api/directory", list_directory)
|
|
413
458
|
self.app.router.add_post("/api/events", api_events_handler)
|
|
414
459
|
self.app.router.add_post("/api/file", api_file_handler)
|
|
@@ -475,9 +520,73 @@ class UnifiedMonitorServer:
|
|
|
475
520
|
except Exception as e:
|
|
476
521
|
self.logger.error(f"Error stopping unified monitor server: {e}")
|
|
477
522
|
|
|
523
|
+
async def _heartbeat_loop(self):
|
|
524
|
+
"""Send heartbeat events every 3 minutes."""
|
|
525
|
+
try:
|
|
526
|
+
while self.running:
|
|
527
|
+
# Wait 3 minutes (180 seconds)
|
|
528
|
+
await asyncio.sleep(180)
|
|
529
|
+
|
|
530
|
+
if not self.running:
|
|
531
|
+
break
|
|
532
|
+
|
|
533
|
+
# Increment heartbeat count
|
|
534
|
+
self.heartbeat_count += 1
|
|
535
|
+
|
|
536
|
+
# Calculate server uptime
|
|
537
|
+
uptime_seconds = int(time.time() - self.server_start_time)
|
|
538
|
+
uptime_minutes = uptime_seconds // 60
|
|
539
|
+
uptime_hours = uptime_minutes // 60
|
|
540
|
+
|
|
541
|
+
# Format uptime string
|
|
542
|
+
if uptime_hours > 0:
|
|
543
|
+
uptime_str = f"{uptime_hours}h {uptime_minutes % 60}m"
|
|
544
|
+
else:
|
|
545
|
+
uptime_str = f"{uptime_minutes}m {uptime_seconds % 60}s"
|
|
546
|
+
|
|
547
|
+
# Get connected client count
|
|
548
|
+
connected_clients = 0
|
|
549
|
+
if self.dashboard_handler:
|
|
550
|
+
connected_clients = len(self.dashboard_handler.connected_clients)
|
|
551
|
+
|
|
552
|
+
# Create heartbeat data
|
|
553
|
+
heartbeat_data = {
|
|
554
|
+
"timestamp": datetime.utcnow().isoformat() + "Z",
|
|
555
|
+
"type": "heartbeat",
|
|
556
|
+
"server_uptime": uptime_seconds,
|
|
557
|
+
"server_uptime_formatted": uptime_str,
|
|
558
|
+
"connected_clients": connected_clients,
|
|
559
|
+
"heartbeat_number": self.heartbeat_count,
|
|
560
|
+
"message": f"Server heartbeat #{self.heartbeat_count} - Socket.IO connection active",
|
|
561
|
+
"service": "unified-monitor",
|
|
562
|
+
"port": self.port,
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
# Emit heartbeat event
|
|
566
|
+
if self.sio:
|
|
567
|
+
await self.sio.emit("heartbeat", heartbeat_data)
|
|
568
|
+
self.logger.debug(
|
|
569
|
+
f"Heartbeat #{self.heartbeat_count} sent - "
|
|
570
|
+
f"{connected_clients} clients connected, uptime: {uptime_str}"
|
|
571
|
+
)
|
|
572
|
+
|
|
573
|
+
except asyncio.CancelledError:
|
|
574
|
+
self.logger.debug("Heartbeat task cancelled")
|
|
575
|
+
except Exception as e:
|
|
576
|
+
self.logger.error(f"Error in heartbeat loop: {e}")
|
|
577
|
+
|
|
478
578
|
async def _cleanup_async(self):
|
|
479
579
|
"""Cleanup async resources."""
|
|
480
580
|
try:
|
|
581
|
+
# Cancel heartbeat task if running
|
|
582
|
+
if self.heartbeat_task and not self.heartbeat_task.done():
|
|
583
|
+
self.heartbeat_task.cancel()
|
|
584
|
+
try:
|
|
585
|
+
await self.heartbeat_task
|
|
586
|
+
except asyncio.CancelledError:
|
|
587
|
+
pass
|
|
588
|
+
self.logger.debug("Heartbeat task cancelled")
|
|
589
|
+
|
|
481
590
|
# Close the Socket.IO server first to stop accepting new connections
|
|
482
591
|
if self.sio:
|
|
483
592
|
try:
|
|
@@ -544,6 +653,7 @@ class UnifiedMonitorServer:
|
|
|
544
653
|
"handlers": {
|
|
545
654
|
"code_analysis": self.code_analysis_handler is not None,
|
|
546
655
|
"dashboard": self.dashboard_handler is not None,
|
|
656
|
+
"file": self.file_handler is not None,
|
|
547
657
|
"hooks": self.hook_handler is not None,
|
|
548
658
|
},
|
|
549
659
|
}
|
|
@@ -24,6 +24,12 @@ class FileEventHandler(BaseEventHandler):
|
|
|
24
24
|
|
|
25
25
|
def register_events(self) -> None:
|
|
26
26
|
"""Register file operation event handlers."""
|
|
27
|
+
self.logger.info(
|
|
28
|
+
"[FileEventHandler] Starting registration of read_file event handler"
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
# Capture self reference to avoid closure issues
|
|
32
|
+
handler_self = self
|
|
27
33
|
|
|
28
34
|
@self.sio.event
|
|
29
35
|
async def read_file(sid, data):
|
|
@@ -33,13 +39,19 @@ class FileEventHandler(BaseEventHandler):
|
|
|
33
39
|
click on files, but we must ensure secure file access with
|
|
34
40
|
proper validation and size limits.
|
|
35
41
|
"""
|
|
42
|
+
handler_self.logger.info(
|
|
43
|
+
f"[FileEventHandler] Received read_file event from {sid} with data: {data}"
|
|
44
|
+
)
|
|
36
45
|
try:
|
|
37
46
|
file_path = data.get("file_path")
|
|
38
47
|
working_dir = data.get("working_dir", os.getcwd())
|
|
39
48
|
max_size = data.get("max_size", 1024 * 1024) # 1MB default limit
|
|
40
49
|
|
|
41
50
|
if not file_path:
|
|
42
|
-
|
|
51
|
+
handler_self.logger.warning(
|
|
52
|
+
f"[FileEventHandler] Missing file_path in request from {sid}"
|
|
53
|
+
)
|
|
54
|
+
await handler_self.emit_to_client(
|
|
43
55
|
sid,
|
|
44
56
|
"file_content_response",
|
|
45
57
|
{
|
|
@@ -51,14 +63,29 @@ class FileEventHandler(BaseEventHandler):
|
|
|
51
63
|
return
|
|
52
64
|
|
|
53
65
|
# Use the shared file reading logic
|
|
54
|
-
|
|
66
|
+
handler_self.logger.info(
|
|
67
|
+
f"[FileEventHandler] Reading file: {file_path} from working_dir: {working_dir}"
|
|
68
|
+
)
|
|
69
|
+
result = await handler_self._read_file_safely(
|
|
70
|
+
file_path, working_dir, max_size
|
|
71
|
+
)
|
|
55
72
|
|
|
56
73
|
# Send the result back to the client
|
|
57
|
-
|
|
74
|
+
handler_self.logger.info(
|
|
75
|
+
f"[FileEventHandler] Sending file_content_response to {sid}, success: {result.get('success', False)}"
|
|
76
|
+
)
|
|
77
|
+
await handler_self.emit_to_client(sid, "file_content_response", result)
|
|
78
|
+
handler_self.logger.info(
|
|
79
|
+
f"[FileEventHandler] Response sent successfully to {sid}"
|
|
80
|
+
)
|
|
58
81
|
|
|
59
82
|
except Exception as e:
|
|
60
|
-
|
|
61
|
-
|
|
83
|
+
handler_self.logger.error(
|
|
84
|
+
f"[FileEventHandler] Exception in read_file handler: {e}",
|
|
85
|
+
exc_info=True,
|
|
86
|
+
)
|
|
87
|
+
handler_self.log_error("read_file", e, data)
|
|
88
|
+
await handler_self.emit_to_client(
|
|
62
89
|
sid,
|
|
63
90
|
"file_content_response",
|
|
64
91
|
{
|
|
@@ -67,6 +94,14 @@ class FileEventHandler(BaseEventHandler):
|
|
|
67
94
|
"file_path": data.get("file_path", "unknown"),
|
|
68
95
|
},
|
|
69
96
|
)
|
|
97
|
+
handler_self.logger.info(
|
|
98
|
+
f"[FileEventHandler] Error response sent to {sid}"
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
# Log successful registration
|
|
102
|
+
self.logger.info(
|
|
103
|
+
"[FileEventHandler] read_file event handler registered successfully"
|
|
104
|
+
)
|
|
70
105
|
|
|
71
106
|
async def _read_file_safely(
|
|
72
107
|
self,
|
|
@@ -65,13 +65,13 @@ claude_mpm/cli/commands/agent_manager.py,sha256=BYyoyyTx06Oy-kN6EwDOc1aFqw_HKRFh
|
|
|
65
65
|
claude_mpm/cli/commands/agents.py,sha256=D4gn0TihoBKq50HR_LDLxxekBHCW5ereX1kZ-LfmHEI,38249
|
|
66
66
|
claude_mpm/cli/commands/aggregate.py,sha256=rLwZxXmIyTPuDUYKTooVtTgiW4mU3vw4_383jK1nXHU,18065
|
|
67
67
|
claude_mpm/cli/commands/analyze.py,sha256=jWPGiUeKEnD15DFt-6c41ZFF1ePdGMNEUaW0KUtklpw,18924
|
|
68
|
-
claude_mpm/cli/commands/analyze_code.py,sha256=
|
|
68
|
+
claude_mpm/cli/commands/analyze_code.py,sha256=TKTKZRhEUdf_kSMTCPS6gNE64ZTGDvywvhf0SLPb-28,17123
|
|
69
69
|
claude_mpm/cli/commands/cleanup.py,sha256=c4QyAs9odx7__rSM9RDy2r9iwPlrfeIzx2vINbl7WaA,19694
|
|
70
70
|
claude_mpm/cli/commands/cleanup_orphaned_agents.py,sha256=JR8crvgrz7Sa6d-SI-gKywok5S9rwc_DzDVk_h85sVs,4467
|
|
71
71
|
claude_mpm/cli/commands/config.py,sha256=Yfi8WO-10_MYz2QipFw-yEzVvHKNQ6iSQXeyW5J85Cg,18559
|
|
72
72
|
claude_mpm/cli/commands/configure.py,sha256=OsuISDoctmQyJpd0wn4LUFRR1AdoVLveT-pU6JJdW60,55439
|
|
73
73
|
claude_mpm/cli/commands/configure_tui.py,sha256=VYLlm2B7QN8P3HtKMEO5Z7A9TpRicWvsojtNh4NxVWQ,66760
|
|
74
|
-
claude_mpm/cli/commands/dashboard.py,sha256=
|
|
74
|
+
claude_mpm/cli/commands/dashboard.py,sha256=4jPTmTl97DRNNJlYREWeE1iDdkct1uL-vv24MZn9fj4,11403
|
|
75
75
|
claude_mpm/cli/commands/debug.py,sha256=lupNJRzpPHeisREYmbQ-9E3A3pvKjSHsapYFJVH8sbc,47056
|
|
76
76
|
claude_mpm/cli/commands/doctor.py,sha256=bOZzDNxEMNMZYrJnu_V82tyZ12r5FiBRQNLVfSVvRIQ,5774
|
|
77
77
|
claude_mpm/cli/commands/info.py,sha256=_hWH7uNv9VLO0eZh9Ua6qc5L1Z66kYj9ATzU4Q8UkSM,7377
|
|
@@ -83,7 +83,7 @@ claude_mpm/cli/commands/mcp_pipx_config.py,sha256=sE62VD6Q1CcO2k1nlbIhHMfAJFQTZf
|
|
|
83
83
|
claude_mpm/cli/commands/mcp_server_commands.py,sha256=-1G_2Y5ScTvzDd-kY8fTAao2H6FH7DnsLimleF1rVqQ,6197
|
|
84
84
|
claude_mpm/cli/commands/mcp_tool_commands.py,sha256=q17GzlFT3JiLTrDqwPO2tz1-fKmPO5QU449syTnKTz4,1283
|
|
85
85
|
claude_mpm/cli/commands/memory.py,sha256=Yzfs3_oiKciv3sfOoDm2lJL4M9idG7ARV3-sNw1ge_g,26186
|
|
86
|
-
claude_mpm/cli/commands/monitor.py,sha256=
|
|
86
|
+
claude_mpm/cli/commands/monitor.py,sha256=BpTFFbr7vzQvPBy1Q4bPY-8FUPwrLFnNJA3rnPnX2Jw,7315
|
|
87
87
|
claude_mpm/cli/commands/mpm_init.py,sha256=lO7N91ZHn_n18XbchUUcYoyme7L5NLcXVnhWm5F_Gq8,22367
|
|
88
88
|
claude_mpm/cli/commands/mpm_init_handler.py,sha256=-pCB0XL3KipqGtnta8CC7Lg5TPMwstEhMFBcgF4aaa4,2919
|
|
89
89
|
claude_mpm/cli/commands/run.py,sha256=qS3eolLiDrE8EXLQJioB6kL1ONr_l0c3OE3qMUJCqbA,43489
|
|
@@ -137,10 +137,12 @@ claude_mpm/core/claude_runner.py,sha256=e6ob7FwcBzvhw9gnPvmL8Zw_BasdfzuV8b1dvqtv
|
|
|
137
137
|
claude_mpm/core/config.py,sha256=3TrDkcraWdij6LZ3Vermg3CadLy8XqxkAJ3k5qYAniw,39356
|
|
138
138
|
claude_mpm/core/config_aliases.py,sha256=asgAgMGlZSv-5PXPBH8e__QfwJQy_Or9ldPD9yzCrM0,9643
|
|
139
139
|
claude_mpm/core/config_constants.py,sha256=MEF35Y2Lj5FMzRdhgSgZrZeTzHfCzistPGZVY8INta4,10073
|
|
140
|
-
claude_mpm/core/constants.py,sha256=
|
|
140
|
+
claude_mpm/core/constants.py,sha256=uBCd4kUbwSFKW79pH7_yUzRpMoNY2AcAflENTkIZIaU,11558
|
|
141
141
|
claude_mpm/core/container.py,sha256=tktmoChULNzNm_wUNR0YCzzRO8wH2AEy-hCaCFis4JU,32137
|
|
142
|
+
claude_mpm/core/error_handler.py,sha256=S6ZNQ7X3SEkkSsaUVzZeI8cjS7ZdaL_e7c6b8Uzx4T0,19248
|
|
142
143
|
claude_mpm/core/exceptions.py,sha256=vrEJGpgThvqRRD6qsNkmaQcYAoUMQSNuHUOnNFJcEGg,19628
|
|
143
144
|
claude_mpm/core/factories.py,sha256=vtlwkbpxeWzqgPRGO1ehnMOzddLCHWTeiKa8halV_dU,7271
|
|
145
|
+
claude_mpm/core/file_utils.py,sha256=RNsWchLFjEq-2z6XEJtM-iv5yhLXLngKX66rojeNE9c,19912
|
|
144
146
|
claude_mpm/core/framework_loader.py,sha256=-3081VeWTZpId3fBaomqHy15aYQiRFfIgWF3WVMazK8,77649
|
|
145
147
|
claude_mpm/core/hook_manager.py,sha256=_Y7QWv8MfZgSHbKmWYfojuDRPxC2niZgOb7JkeUFQaE,11059
|
|
146
148
|
claude_mpm/core/hook_performance_config.py,sha256=e7a7oFctkRhA3aPXMO5Wavr-E6ku7ikLxMzPU7P1-yg,5779
|
|
@@ -152,6 +154,7 @@ claude_mpm/core/lazy.py,sha256=6EYpXGZwsMAMQ3GXepNtyw_b7IxDwOTjfOVE6mV-S2s,14774
|
|
|
152
154
|
claude_mpm/core/log_manager.py,sha256=dM0E5Q_LGoIBZO5SPXGvIuD8d6fW9WxgJICRuHGjhQ8,21798
|
|
153
155
|
claude_mpm/core/logger.py,sha256=zgC6eJ8SJ2uet6Nq3ZwCoeXJm39tirDBM5QUh_p_gKo,20722
|
|
154
156
|
claude_mpm/core/logging_config.py,sha256=tCxM3EpSmjZ7kT7hckQxQZlrxuWVm4g-qu9RHe8hDcw,14588
|
|
157
|
+
claude_mpm/core/logging_utils.py,sha256=XPaNQeuJvKUpaeoxktQTRmqCGsOH90OTg1pDt7Bbypo,15004
|
|
155
158
|
claude_mpm/core/minimal_framework_loader.py,sha256=vmDEjL3MjnV7W4WIR-ymaL8QgsGsgxJJ0KdiQqAtudM,3640
|
|
156
159
|
claude_mpm/core/mixins.py,sha256=vmZ7Nu2ZOnKjbhN07Ixk4noIej9nsJiknrp-Sclfu0A,5344
|
|
157
160
|
claude_mpm/core/oneshot_session.py,sha256=QkSw-gs7tTQkdKQiZh7mbia5hc5PMt_xaMoDY-9_bZk,17693
|
|
@@ -204,17 +207,17 @@ claude_mpm/dashboard/static/css/activity.css,sha256=0SJUwGB6fr4OlVqMwhvVKrPndg2R
|
|
|
204
207
|
claude_mpm/dashboard/static/css/code-tree.css,sha256=Sx74ilt7exGOdxCBEtjP9gZ74lB5e8QWr3_SIcl_0hw,30708
|
|
205
208
|
claude_mpm/dashboard/static/css/connection-status.css,sha256=nQiMLxIFjY5MDgrVCG58VR5H1PpE1vLlgXmnn01-P64,6729
|
|
206
209
|
claude_mpm/dashboard/static/css/dashboard.css,sha256=Uc97_y9UL6waqnx6bDdXkJUqPjj7w8B064C5xeJnlrg,85774
|
|
207
|
-
claude_mpm/dashboard/static/dist/dashboard.js,sha256=
|
|
208
|
-
claude_mpm/dashboard/static/dist/socket-client.js,sha256=
|
|
210
|
+
claude_mpm/dashboard/static/dist/dashboard.js,sha256=tc8XJaiwaPJF09_6O_Sy1BTHTNH_j3jkvRfIOViep7c,47603
|
|
211
|
+
claude_mpm/dashboard/static/dist/socket-client.js,sha256=mT4kPTg5wDSX86UEKR9TbVy_6cm2fxgs4v1LQFT_XYc,28893
|
|
209
212
|
claude_mpm/dashboard/static/dist/components/activity-tree.js,sha256=c7vYmCvMgq7irVrX-EFbNqVMgVuDJ_cwcvsZ4LSO3bU,29594
|
|
210
213
|
claude_mpm/dashboard/static/dist/components/agent-inference.js,sha256=fXK7kzvAXzYzOGdLw_APbDiEN51OX1I4-InnN2iZlu0,12978
|
|
211
|
-
claude_mpm/dashboard/static/dist/components/code-tree.js,sha256=
|
|
214
|
+
claude_mpm/dashboard/static/dist/components/code-tree.js,sha256=TxTyCUdmilFH_QYmClk-hN0_QHmtNroZ3Ovxi7KImjc,96245
|
|
212
215
|
claude_mpm/dashboard/static/dist/components/code-viewer.js,sha256=wMggEwMt2RrBuXJO-WYZ5_HHDODfWLm_IS9lS5LLR7M,8495
|
|
213
216
|
claude_mpm/dashboard/static/dist/components/event-processor.js,sha256=JycF1KIAmxhsNBCsne9CzRFPHMcnQz0WhTABpvuCWSc,131
|
|
214
217
|
claude_mpm/dashboard/static/dist/components/event-viewer.js,sha256=oyfvK8VO1RNSyN1CRoZiB22cNJ4D05p_ahM8WPCH27k,24902
|
|
215
218
|
claude_mpm/dashboard/static/dist/components/export-manager.js,sha256=iEbnirtMJ5bLpKbgBJfMI2bPC1Lf3_UrQntl04OUKEk,4196
|
|
216
219
|
claude_mpm/dashboard/static/dist/components/file-tool-tracker.js,sha256=fZgUsg_u52KRYZFQooF_ZZjvKvYHaY9N7uJIS3XR9s8,9824
|
|
217
|
-
claude_mpm/dashboard/static/dist/components/file-viewer.js,sha256=
|
|
220
|
+
claude_mpm/dashboard/static/dist/components/file-viewer.js,sha256=FXTNKfHZuFhE2YXmNJFXgM2ig8dc1OyP6wmPcGMK6C4,13032
|
|
218
221
|
claude_mpm/dashboard/static/dist/components/hud-library-loader.js,sha256=v08Xntd0Lwf-q6Nww1X2r5AWokYLgg9xUWe6ExHiNAg,2964
|
|
219
222
|
claude_mpm/dashboard/static/dist/components/hud-manager.js,sha256=CvgzgqprROjl0DP4yQx4aAypONuNlzU2EP8woGk-8Sc,27392
|
|
220
223
|
claude_mpm/dashboard/static/dist/components/hud-visualizer.js,sha256=igUUu1OLKOgwrdsfCEb-bKOsbi61bMLlpKa3hR2wQdI,69
|
|
@@ -225,33 +228,41 @@ claude_mpm/dashboard/static/dist/components/ui-state-manager.js,sha256=PtZs6sxNh
|
|
|
225
228
|
claude_mpm/dashboard/static/dist/components/unified-data-viewer.js,sha256=pMA1iYfpmDObyySbGCUT2240fSrcqZmgfjxXrnHsnlM,36759
|
|
226
229
|
claude_mpm/dashboard/static/dist/components/working-directory.js,sha256=xE1ydpKDzRWrzHzfjrCiq5wbf3vDhmgQTGKS7myQcPM,15790
|
|
227
230
|
claude_mpm/dashboard/static/js/connection-manager.js,sha256=nn7x1jmwEnBClcChbFk1uMhRPu5U1xmXz3sjuo0LNm4,17981
|
|
228
|
-
claude_mpm/dashboard/static/js/dashboard.js,sha256=
|
|
231
|
+
claude_mpm/dashboard/static/js/dashboard.js,sha256=VDnf-LdAKFOD08NCzZlMIWJW3EcDI_ZRo74_OX4FUxY,68876
|
|
229
232
|
claude_mpm/dashboard/static/js/extension-error-handler.js,sha256=DZHrJ3gbfv4nsjmZpNMj-Sc3GKjVJ5ds8lgoaLRnq5I,6274
|
|
230
|
-
claude_mpm/dashboard/static/js/socket-client.js,sha256=
|
|
233
|
+
claude_mpm/dashboard/static/js/socket-client.js,sha256=LQyB7jf8oCqJ3uNyZ3WEix2faMO1TbMyIoV9a-ebScE,57251
|
|
231
234
|
claude_mpm/dashboard/static/js/components/activity-tree.js,sha256=1j46X0qjYReP6gwv0WGRpJSJNuBwuj6bKmumWrCZKUo,72740
|
|
232
235
|
claude_mpm/dashboard/static/js/components/agent-hierarchy.js,sha256=Xihxog_vJrk8VBEkDogV_wbye2GIFWmH71VQ1lETOHk,28243
|
|
233
236
|
claude_mpm/dashboard/static/js/components/agent-inference.js,sha256=RUVZ_fLOyDkHYjrROen_Pzzay79Bh29eXp_GRIPbIRg,37493
|
|
234
237
|
claude_mpm/dashboard/static/js/components/build-tracker.js,sha256=iouv35tNhnyx9UKtD7X1eakJkpCnvZVCrAJ_VdzsKUY,11251
|
|
235
|
-
claude_mpm/dashboard/static/js/components/code-simple.js,sha256=
|
|
236
|
-
claude_mpm/dashboard/static/js/components/code-tree.js,sha256=
|
|
238
|
+
claude_mpm/dashboard/static/js/components/code-simple.js,sha256=2yOEr5ziM0rKlsE65cemZIlFK31ylmcJeXAQZFHQF5Y,33797
|
|
239
|
+
claude_mpm/dashboard/static/js/components/code-tree.js,sha256=Fi3s9Psojgj2lH9cXPAINc4n-Z_y9KLjiCkM9VpYyoo,223576
|
|
237
240
|
claude_mpm/dashboard/static/js/components/code-viewer.js,sha256=vhesEPYOM6MggweaYvYsv7ufVbuVpIcyJPXpJXyJwpM,14453
|
|
238
241
|
claude_mpm/dashboard/static/js/components/connection-debug.js,sha256=Qxr_ofDNkxDlZAwbLnhZkXVMyuO9jOe-NMWC9VHxNnA,22196
|
|
239
242
|
claude_mpm/dashboard/static/js/components/event-processor.js,sha256=pP15JIf2yEh7gqEdam42m_B1B4hDlfKbkDcGmQhyjM8,20567
|
|
240
243
|
claude_mpm/dashboard/static/js/components/event-viewer.js,sha256=Ahl9eTxCYMhDC_533Gf4O96S04W5O_Ts0PAGWSVivkI,43672
|
|
241
244
|
claude_mpm/dashboard/static/js/components/export-manager.js,sha256=T1YtaR758FaB9aP_5V1xZC9EBIFQOG5H8f_sLopxR5A,11863
|
|
242
245
|
claude_mpm/dashboard/static/js/components/file-tool-tracker.js,sha256=y8O7kW5uP6KBT2gWvjRoH1aJG-7o1qzyrVnvShsNAK0,28620
|
|
243
|
-
claude_mpm/dashboard/static/js/components/file-viewer.js,sha256=
|
|
246
|
+
claude_mpm/dashboard/static/js/components/file-viewer.js,sha256=Q9twY64RJD4ozcsI9k0foUvDCCsDMWCX-ojywqImhNY,19777
|
|
244
247
|
claude_mpm/dashboard/static/js/components/hud-library-loader.js,sha256=SK6tY8TL88lnewi4M-i092HdgYondv_lVfHoQ-A_cWU,7170
|
|
245
248
|
claude_mpm/dashboard/static/js/components/hud-manager.js,sha256=hpvz1Ls5UcNgTbwjl7tK0OgNZ_QHnRXgNqqYaq4jjvM,25956
|
|
246
249
|
claude_mpm/dashboard/static/js/components/hud-visualizer.js,sha256=crgq3eA4xiXDE4SV9m-S94Of2y7znd1a3F4GYn2yjnU,61127
|
|
247
250
|
claude_mpm/dashboard/static/js/components/module-viewer.js,sha256=Ndw3ZDLRP4xaMw2akEH5Dvkof4Vp9umk8yFQzQntLkI,109010
|
|
248
|
-
claude_mpm/dashboard/static/js/components/session-manager.js,sha256=
|
|
251
|
+
claude_mpm/dashboard/static/js/components/session-manager.js,sha256=1J6XdWJPZ_ykrK7y5S3p4Y3HyWGcYoLo69XudeG66nU,22769
|
|
249
252
|
claude_mpm/dashboard/static/js/components/socket-manager.js,sha256=KC-aOJDEPSiMPYk0ABgvCC1xmO7TVQ4SVqohi2GNsWQ,13303
|
|
250
253
|
claude_mpm/dashboard/static/js/components/ui-state-manager.js,sha256=EWm0HpPI9TShChitRCyZvZCiUk5rIBVyw10BoHdnTzI,13178
|
|
251
254
|
claude_mpm/dashboard/static/js/components/unified-data-viewer.js,sha256=afHCGAg7v3PVhmOr77Bzx3TTZlzHI_5pq16ut3xEYWk,65302
|
|
252
|
-
claude_mpm/dashboard/static/js/components/working-directory.js,sha256=
|
|
255
|
+
claude_mpm/dashboard/static/js/components/working-directory.js,sha256=BMzcjZ3VNGMhfj0tPQlozxgBOTvyan8AnIwpOUlubAc,33951
|
|
256
|
+
claude_mpm/dashboard/static/js/components/code-tree/tree-breadcrumb.js,sha256=oijL6R5JFqSm9aHEbh46D7rgK_EDSmAGW-PO2vmacGM,10481
|
|
257
|
+
claude_mpm/dashboard/static/js/components/code-tree/tree-constants.js,sha256=aqsoqklN92XmeiYN6V1zl-_EEcyNSEnqn46f6du5Pm4,6357
|
|
258
|
+
claude_mpm/dashboard/static/js/components/code-tree/tree-search.js,sha256=n7rbxIlE8ahBZVpGf0v4m4P0m2XmzaZtzNPPvqpjXRk,11788
|
|
259
|
+
claude_mpm/dashboard/static/js/components/code-tree/tree-utils.js,sha256=gEjjClXna7BxIsVhmYegahuO49kaE0FbbmHvV0oMmk8,12913
|
|
260
|
+
claude_mpm/dashboard/static/js/shared/dom-helpers.js,sha256=PXY8iLBJqsWP_NNyFiSgnxu7cGzhnjjjiKHkJj7Z3SU,12233
|
|
261
|
+
claude_mpm/dashboard/static/js/shared/event-bus.js,sha256=aV2QMt8Ris1BFxuFUYoOvMYXb3M4AmPHsppaBDbbxXo,9906
|
|
262
|
+
claude_mpm/dashboard/static/js/shared/logger.js,sha256=nQE-6b8pAAhWsafgon6UT-ueyOmhukrNFaGkcT77RS0,10431
|
|
263
|
+
claude_mpm/dashboard/static/js/shared/tooltip-service.js,sha256=T0_0koY2SNHTlctzU4Z5VBH0EWRXmO-ODo9WvO2HUto,7588
|
|
253
264
|
claude_mpm/dashboard/templates/code_simple.html,sha256=xrmTLFow0M5NWFlk4ci1eLWML-IHr35i5pqIVaEg2TU,4329
|
|
254
|
-
claude_mpm/dashboard/templates/index.html,sha256
|
|
265
|
+
claude_mpm/dashboard/templates/index.html,sha256=1WPBMH2YF93IO7dUNvdaY6k1BcX5ZmlUzsFYAsSwtb4,31630
|
|
255
266
|
claude_mpm/experimental/__init__.py,sha256=R_aclOvWpvSTHWAx9QXyg9OIPVK2dXT5tQJhxLQN11Y,369
|
|
256
267
|
claude_mpm/experimental/cli_enhancements.py,sha256=rlYOMVlj8vQzuyCkHWQ7TtjcsDeFq3y1Ng5qty2fyY8,11486
|
|
257
268
|
claude_mpm/generators/__init__.py,sha256=rG8vwF_BjPmeMKvyMXpUA8uJ-7mtW2HTNfalZzgRlNk,153
|
|
@@ -414,7 +425,7 @@ claude_mpm/services/cli/memory_crud_service.py,sha256=ciN9Pl_12iDAqF9zPBWOzu-iXi
|
|
|
414
425
|
claude_mpm/services/cli/memory_output_formatter.py,sha256=nbf7VsjGvH4e9fLv9c7PzjuO9COZhbK5P2fNZ79055w,24783
|
|
415
426
|
claude_mpm/services/cli/session_manager.py,sha256=rla_Stbcvt93wa9G9MCMu9UqB3FLGqlPt_eN5lQb3Gg,16599
|
|
416
427
|
claude_mpm/services/cli/startup_checker.py,sha256=efhuvu8ns5G16jcQ0nQZKVddmD2AktUEdlvjNcXjAuk,12232
|
|
417
|
-
claude_mpm/services/cli/unified_dashboard_manager.py,sha256=
|
|
428
|
+
claude_mpm/services/cli/unified_dashboard_manager.py,sha256=GHLDe57UI1SMW04G6E97oc-bZPnNDv4eMXrUfll2ShE,11570
|
|
418
429
|
claude_mpm/services/communication/__init__.py,sha256=b4qc7_Rqy4DE9q7BAUlfUZjoYG4uimAyUnE0irPcXyU,560
|
|
419
430
|
claude_mpm/services/core/__init__.py,sha256=evEayLlBqJvxMZhrhuK6aagXmNrKGSj8Jm9OOxKzqvU,2195
|
|
420
431
|
claude_mpm/services/core/base.py,sha256=iA-F7DgGp-FJIMvQTiHQ68RkG_k-AtUWlArJPMw6ZPk,7297
|
|
@@ -532,11 +543,12 @@ claude_mpm/services/memory/cache/simple_cache.py,sha256=qsTjbcsPxj-kNfaod9VN_uE5
|
|
|
532
543
|
claude_mpm/services/monitor/__init__.py,sha256=X7gxSLUm9Fg_zEsX6LtCHP2ipF0qj6Emkun20h2So7g,745
|
|
533
544
|
claude_mpm/services/monitor/daemon.py,sha256=9PyhEXpMUJ1LBmZdoLwzQmfjdCnXn8GeErywBnMScoY,12588
|
|
534
545
|
claude_mpm/services/monitor/event_emitter.py,sha256=JzRLNg8PUJ5s3ulNnq_D4yqCPItvidJzu8DmFxriieQ,12224
|
|
535
|
-
claude_mpm/services/monitor/server.py,sha256=
|
|
536
|
-
claude_mpm/services/monitor/handlers/__init__.py,sha256=
|
|
546
|
+
claude_mpm/services/monitor/server.py,sha256=iJrGpZLOeqEis0zWIzg0ef4yCJWeR0xBYdjTnwWJzfg,26377
|
|
547
|
+
claude_mpm/services/monitor/handlers/__init__.py,sha256=jgPIf4IJVERm_tAeD9834tfx9IcxtlHj5r9rhEWpkfM,701
|
|
537
548
|
claude_mpm/services/monitor/handlers/code_analysis.py,sha256=mHyI27Wp6WVmUBc0m0i991ogyFZBTvkrfR7Kf3EAk5U,11474
|
|
538
549
|
claude_mpm/services/monitor/handlers/dashboard.py,sha256=uGBhb-6RG6u4WLipUXgdx7RCW-vb_qek5dIfHIwAC7o,9805
|
|
539
|
-
claude_mpm/services/monitor/handlers/
|
|
550
|
+
claude_mpm/services/monitor/handlers/file.py,sha256=p3C4wffl0GIcN00b-KkrmZ8F-AmdZlGqLzBqQcqZ9Ns,9729
|
|
551
|
+
claude_mpm/services/monitor/handlers/hooks.py,sha256=dlrmyFu8WChlvn6-sND9DLjSbm5nrMfNZrAgoWN-2No,17582
|
|
540
552
|
claude_mpm/services/monitor/management/__init__.py,sha256=mxaEFRgvvgV85gUpXu_DsnHtywihdP14EisvISAVZuQ,525
|
|
541
553
|
claude_mpm/services/monitor/management/health.py,sha256=Wm92Cli_4cWD6B89KX_CdpAvvevuEaGB8Ah59ILhFww,3772
|
|
542
554
|
claude_mpm/services/monitor/management/lifecycle.py,sha256=Cahpc1-R09ihDYVWiMI9wnv-Qw20cNhHHcJyxZ9JcBo,10575
|
|
@@ -566,7 +578,7 @@ claude_mpm/services/socketio/handlers/base.py,sha256=DjUODCOLTQSsC_-NP9yr-8g77ar
|
|
|
566
578
|
claude_mpm/services/socketio/handlers/code_analysis.py,sha256=BmcJiygXaCVjVJndE-GFi4eN7_b8v7mqScddMTj5DUk,26271
|
|
567
579
|
claude_mpm/services/socketio/handlers/connection.py,sha256=sa6Rg5Y9tcf-e4PEb6f4fNhFQcpZ9WbwdiGXmkzlFTs,26781
|
|
568
580
|
claude_mpm/services/socketio/handlers/connection_handler.py,sha256=DTY0pa--HQu4C6-WCgE1zskvHm3gVuEKWwaSFNBAoec,13287
|
|
569
|
-
claude_mpm/services/socketio/handlers/file.py,sha256=
|
|
581
|
+
claude_mpm/services/socketio/handlers/file.py,sha256=28ghfPO8-7jZuX723WzW3vDHg6H6iJ3pvfneDA3mf5A,9866
|
|
570
582
|
claude_mpm/services/socketio/handlers/git.py,sha256=xIjGGShyVNXzCtJfydbbnFTJhqzXwHLzGhLrqgy0JGQ,37934
|
|
571
583
|
claude_mpm/services/socketio/handlers/hook.py,sha256=JVQufL_u85z3r-n3fnKExuziheJ2lzY6d0GDoUB9iXs,7786
|
|
572
584
|
claude_mpm/services/socketio/handlers/memory.py,sha256=Ape6cCMe3uOgMiXRbgQttvgHUABsFXrrxQ9OI-mGM8M,971
|
|
@@ -620,9 +632,9 @@ claude_mpm/utils/subprocess_utils.py,sha256=zgiwLqh_17WxHpySvUPH65pb4bzIeUGOAYUJ
|
|
|
620
632
|
claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
|
|
621
633
|
claude_mpm/validation/agent_validator.py,sha256=3Lo6LK-Mw9IdnL_bd3zl_R6FkgSVDYKUUM7EeVVD3jc,20865
|
|
622
634
|
claude_mpm/validation/frontmatter_validator.py,sha256=u8g4Eyd_9O6ugj7Un47oSGh3kqv4wMkuks2i_CtWRvM,7028
|
|
623
|
-
claude_mpm-4.2.
|
|
624
|
-
claude_mpm-4.2.
|
|
625
|
-
claude_mpm-4.2.
|
|
626
|
-
claude_mpm-4.2.
|
|
627
|
-
claude_mpm-4.2.
|
|
628
|
-
claude_mpm-4.2.
|
|
635
|
+
claude_mpm-4.2.15.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
|
|
636
|
+
claude_mpm-4.2.15.dist-info/METADATA,sha256=yZkuyRXXRoQRdQYXl9eeCW3AALb9Xu_Yrg7qyVHY8MI,13777
|
|
637
|
+
claude_mpm-4.2.15.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
638
|
+
claude_mpm-4.2.15.dist-info/entry_points.txt,sha256=FDPZgz8JOvD-6iuXY2l9Zbo9zYVRuE4uz4Qr0vLeGOk,471
|
|
639
|
+
claude_mpm-4.2.15.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
|
|
640
|
+
claude_mpm-4.2.15.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|