claude-mpm 3.4.10__py3-none-any.whl → 3.4.14__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 (29) hide show
  1. claude_mpm/cli/commands/run.py +10 -10
  2. claude_mpm/dashboard/index.html +13 -0
  3. claude_mpm/dashboard/static/css/dashboard.css +2722 -0
  4. claude_mpm/dashboard/static/js/components/agent-inference.js +619 -0
  5. claude_mpm/dashboard/static/js/components/event-processor.js +641 -0
  6. claude_mpm/dashboard/static/js/components/event-viewer.js +914 -0
  7. claude_mpm/dashboard/static/js/components/export-manager.js +362 -0
  8. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +611 -0
  9. claude_mpm/dashboard/static/js/components/hud-library-loader.js +211 -0
  10. claude_mpm/dashboard/static/js/components/hud-manager.js +671 -0
  11. claude_mpm/dashboard/static/js/components/hud-visualizer.js +1718 -0
  12. claude_mpm/dashboard/static/js/components/module-viewer.js +2701 -0
  13. claude_mpm/dashboard/static/js/components/session-manager.js +520 -0
  14. claude_mpm/dashboard/static/js/components/socket-manager.js +343 -0
  15. claude_mpm/dashboard/static/js/components/ui-state-manager.js +427 -0
  16. claude_mpm/dashboard/static/js/components/working-directory.js +866 -0
  17. claude_mpm/dashboard/static/js/dashboard-original.js +4134 -0
  18. claude_mpm/dashboard/static/js/dashboard.js +1978 -0
  19. claude_mpm/dashboard/static/js/socket-client.js +537 -0
  20. claude_mpm/dashboard/templates/index.html +346 -0
  21. claude_mpm/dashboard/test_dashboard.html +372 -0
  22. claude_mpm/scripts/socketio_daemon.py +51 -6
  23. claude_mpm/services/socketio_server.py +41 -5
  24. {claude_mpm-3.4.10.dist-info → claude_mpm-3.4.14.dist-info}/METADATA +2 -1
  25. {claude_mpm-3.4.10.dist-info → claude_mpm-3.4.14.dist-info}/RECORD +29 -9
  26. {claude_mpm-3.4.10.dist-info → claude_mpm-3.4.14.dist-info}/WHEEL +0 -0
  27. {claude_mpm-3.4.10.dist-info → claude_mpm-3.4.14.dist-info}/entry_points.txt +0 -0
  28. {claude_mpm-3.4.10.dist-info → claude_mpm-3.4.14.dist-info}/licenses/LICENSE +0 -0
  29. {claude_mpm-3.4.10.dist-info → claude_mpm-3.4.14.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,372 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Claude MPM Dashboard Test</title>
7
+ <link rel="icon" type="image/svg+xml" href="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHJ4PSI2IiBmaWxsPSIjNDI5OWUxIi8+CiAgPHRleHQgeD0iMTYiIHk9IjIxIiBmb250LWZhbWlseT0iSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMCIgZm9udC13ZWlnaHQ9ImJvbGQiIGZpbGw9IndoaXRlIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5NUE08L3RleHQ+Cjwvc3ZnPgo=">
8
+
9
+ <!-- Test version using relative paths for verification -->
10
+ <script src="https://cdn.socket.io/4.7.5/socket.io.min.js"></script>
11
+ <link rel="stylesheet" href="static/css/dashboard.css">
12
+
13
+ <!-- Additional styles for file operations -->
14
+ <style>
15
+ .file-item {
16
+ background: white;
17
+ border-radius: 6px;
18
+ padding: 12px;
19
+ margin-bottom: 8px;
20
+ border-left: 4px solid #4299e1;
21
+ cursor: pointer;
22
+ transition: all 0.2s;
23
+ }
24
+
25
+ .file-item:hover {
26
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
27
+ transform: translateX(2px);
28
+ }
29
+
30
+ .file-header {
31
+ display: flex;
32
+ align-items: center;
33
+ gap: 8px;
34
+ margin-bottom: 4px;
35
+ }
36
+
37
+ .file-icon {
38
+ font-size: 16px;
39
+ min-width: 20px;
40
+ }
41
+
42
+ .file-path {
43
+ flex: 1;
44
+ font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;
45
+ font-size: 13px;
46
+ color: #2d3748;
47
+ word-break: break-all;
48
+ }
49
+
50
+ .file-timestamp {
51
+ font-size: 12px;
52
+ color: #718096;
53
+ }
54
+
55
+ .file-summary {
56
+ font-size: 12px;
57
+ color: #4a5568;
58
+ margin-left: 28px;
59
+ }
60
+
61
+ .operation-item {
62
+ background: #f8fafc;
63
+ border: 1px solid #e2e8f0;
64
+ border-radius: 6px;
65
+ padding: 10px;
66
+ margin-bottom: 8px;
67
+ }
68
+
69
+ .operation-header {
70
+ display: flex;
71
+ align-items: center;
72
+ gap: 8px;
73
+ margin-bottom: 6px;
74
+ }
75
+
76
+ .operation-icon {
77
+ font-size: 14px;
78
+ min-width: 16px;
79
+ }
80
+
81
+ .operation-type {
82
+ font-weight: 600;
83
+ color: #2d3748;
84
+ }
85
+
86
+ .operation-timestamp {
87
+ margin-left: auto;
88
+ font-size: 11px;
89
+ color: #718096;
90
+ }
91
+
92
+ .operation-details {
93
+ font-size: 12px;
94
+ color: #4a5568;
95
+ line-height: 1.4;
96
+ }
97
+
98
+ .file-details {
99
+ background: white;
100
+ border-radius: 6px;
101
+ padding: 15px;
102
+ }
103
+
104
+ .file-path-display {
105
+ font-size: 14px;
106
+ margin-bottom: 15px;
107
+ padding-bottom: 10px;
108
+ border-bottom: 1px solid #e2e8f0;
109
+ }
110
+
111
+ .operations-list {
112
+ max-height: 400px;
113
+ overflow-y: auto;
114
+ }
115
+
116
+ .test-status {
117
+ position: fixed;
118
+ top: 20px;
119
+ right: 20px;
120
+ background: #f7fafc;
121
+ border: 1px solid #e2e8f0;
122
+ border-radius: 8px;
123
+ padding: 15px;
124
+ max-width: 300px;
125
+ z-index: 1001;
126
+ }
127
+
128
+ .test-item {
129
+ display: flex;
130
+ align-items: center;
131
+ gap: 8px;
132
+ margin-bottom: 5px;
133
+ font-size: 12px;
134
+ }
135
+
136
+ .test-pass { color: #38a169; }
137
+ .test-fail { color: #e53e3e; }
138
+ .test-pending { color: #d69e2e; }
139
+ </style>
140
+ </head>
141
+ <body>
142
+ <!-- Test Status Panel -->
143
+ <div class="test-status">
144
+ <h4>🧪 Module Test Status</h4>
145
+ <div id="test-results">
146
+ <div class="test-item test-pending">⏳ Loading modules...</div>
147
+ </div>
148
+ </div>
149
+
150
+ <div class="container">
151
+ <!-- Header Section -->
152
+ <div class="header">
153
+ <!-- Row 1: Title, Status, Metrics -->
154
+ <div class="header-row">
155
+ <div class="header-title">
156
+ <h1>🚀 Claude MPM Monitor (Modular Test)</h1>
157
+ <div id="connection-status" class="status-badge status-disconnected">
158
+ <span>●</span> Disconnected
159
+ </div>
160
+ </div>
161
+ <div class="metrics-widget">
162
+ <div class="metric-mini">
163
+ <div class="metric-mini-value" id="total-events">0</div>
164
+ <div class="metric-mini-label">Events</div>
165
+ </div>
166
+ <div class="metric-mini">
167
+ <div class="metric-mini-value" id="events-per-minute">0</div>
168
+ <div class="metric-mini-label">Per Min</div>
169
+ </div>
170
+ <div class="metric-mini">
171
+ <div class="metric-mini-value" id="unique-types">0</div>
172
+ <div class="metric-mini-label">Types</div>
173
+ </div>
174
+ <div class="metric-mini">
175
+ <div class="metric-mini-value" id="error-count">0</div>
176
+ <div class="metric-mini-label">Errors</div>
177
+ </div>
178
+ </div>
179
+ </div>
180
+
181
+ <!-- Row 2: Connection Controls and Session Selection -->
182
+ <div class="header-row">
183
+ <div class="connection-controls">
184
+ <button id="connect-btn">Connect</button>
185
+ <button id="disconnect-btn" class="btn-secondary">Disconnect</button>
186
+ <input type="text" id="port-input" value="8765" placeholder="Port">
187
+ </div>
188
+ <div class="session-group">
189
+ <label>Session:</label>
190
+ <select id="session-select" class="session-select">
191
+ <option value="">All Sessions</option>
192
+ </select>
193
+ <button class="btn-secondary">Refresh</button>
194
+ </div>
195
+ <div class="action-buttons">
196
+ <button class="btn-secondary">Clear</button>
197
+ <button class="btn-success">Export</button>
198
+ </div>
199
+ </div>
200
+ </div>
201
+
202
+ <!-- Main Content Area -->
203
+ <div class="events-wrapper">
204
+ <!-- Split container for module viewer and tabbed content -->
205
+ <div class="split-container">
206
+ <!-- Left: Module Viewer -->
207
+ <div class="module-viewer">
208
+ <div class="module-header">
209
+ <h4>📁 Event Analysis</h4>
210
+ <button class="btn-secondary" style="font-size: 11px; padding: 4px 8px;">Clear</button>
211
+ </div>
212
+ <div class="module-content" id="module-content">
213
+ <div class="module-empty">
214
+ <p>Click on an event to view details</p>
215
+ <p class="module-hint">Events are organized by class</p>
216
+ </div>
217
+ </div>
218
+ </div>
219
+
220
+ <!-- Right: Tabbed Content -->
221
+ <div class="events-container">
222
+ <!-- Tab Navigation -->
223
+ <div class="tab-nav">
224
+ <button class="tab-button active">📊 Events</button>
225
+ <button class="tab-button">🤖 Agents</button>
226
+ <button class="tab-button">🔧 Tools</button>
227
+ <button class="tab-button">📁 Files</button>
228
+ </div>
229
+
230
+ <!-- Events Tab -->
231
+ <div class="tab-content active" id="events-tab">
232
+ <div class="tab-filters">
233
+ <input type="text" id="events-search-input" placeholder="Search events...">
234
+ <select id="events-type-filter">
235
+ <option value="">All Events</option>
236
+ <!-- Event types will be dynamically populated from actual event data -->
237
+ </select>
238
+ </div>
239
+ <div class="events-list" id="events-list">
240
+ <div class="no-events">
241
+ Connect to Socket.IO server to see events...
242
+ </div>
243
+ </div>
244
+ </div>
245
+
246
+ <!-- Agents Tab -->
247
+ <div class="tab-content" id="agents-tab">
248
+ <div class="tab-filters">
249
+ <input type="text" id="agents-search-input" placeholder="Search agents...">
250
+ <select id="agents-type-filter">
251
+ <option value="">All Agents</option>
252
+ <option value="research">Research</option>
253
+ <option value="engineer">Engineer</option>
254
+ <option value="pm">Project Manager</option>
255
+ <option value="ops">Operations</option>
256
+ </select>
257
+ </div>
258
+ <div class="events-list" id="agents-list">
259
+ <div class="no-events">
260
+ No agent events found...
261
+ </div>
262
+ </div>
263
+ </div>
264
+
265
+ <!-- Tools Tab -->
266
+ <div class="tab-content" id="tools-tab">
267
+ <div class="tab-filters">
268
+ <input type="text" id="tools-search-input" placeholder="Search tools...">
269
+ <select id="tools-type-filter">
270
+ <option value="">All Tools</option>
271
+ <option value="Read">Read</option>
272
+ <option value="Write">Write</option>
273
+ <option value="Edit">Edit</option>
274
+ <option value="Bash">Bash</option>
275
+ <option value="Grep">Grep</option>
276
+ <option value="Glob">Glob</option>
277
+ </select>
278
+ </div>
279
+ <div class="events-list" id="tools-list">
280
+ <div class="no-events">
281
+ No tool events found...
282
+ </div>
283
+ </div>
284
+ </div>
285
+
286
+ <!-- Files Tab -->
287
+ <div class="tab-content" id="files-tab">
288
+ <div class="tab-filters">
289
+ <input type="text" id="files-search-input" placeholder="Search files...">
290
+ <select id="files-type-filter">
291
+ <option value="">All Operations</option>
292
+ <option value="read">Read</option>
293
+ <option value="write">Write</option>
294
+ <option value="edit">Edit</option>
295
+ <option value="search">Search</option>
296
+ </select>
297
+ </div>
298
+ <div class="events-list" id="files-list">
299
+ <div class="no-events">
300
+ No file operations found...
301
+ </div>
302
+ </div>
303
+ </div>
304
+ </div>
305
+ </div>
306
+ </div>
307
+ </div>
308
+
309
+ <!-- Footer -->
310
+ <div class="footer">
311
+ <div class="footer-content">
312
+ <div class="footer-item">
313
+ <span class="footer-label">Session:</span>
314
+ <span class="footer-value" id="footer-session">All Sessions</span>
315
+ </div>
316
+ <span class="footer-divider">|</span>
317
+ <div class="footer-item">
318
+ <span class="footer-label">Directory:</span>
319
+ <span class="footer-value" id="footer-working-dir">Unknown</span>
320
+ </div>
321
+ <span class="footer-divider">|</span>
322
+ <div class="footer-item">
323
+ <span class="footer-label">Branch:</span>
324
+ <span class="footer-value" id="footer-git-branch">Unknown</span>
325
+ </div>
326
+ </div>
327
+ </div>
328
+
329
+ <!-- JavaScript Modules -->
330
+ <script src="static/js/socket-client.js"></script>
331
+ <script src="static/js/components/event-viewer.js"></script>
332
+ <script src="static/js/components/module-viewer.js"></script>
333
+ <script src="static/js/components/session-manager.js"></script>
334
+ <script src="static/js/dashboard.js"></script>
335
+
336
+ <!-- Test Script -->
337
+ <script>
338
+ // Simple test to verify modules loaded correctly
339
+ setTimeout(() => {
340
+ const results = document.getElementById('test-results');
341
+ const tests = [
342
+ { name: 'SocketClient', check: () => typeof SocketClient !== 'undefined' },
343
+ { name: 'EventViewer', check: () => typeof EventViewer !== 'undefined' },
344
+ { name: 'ModuleViewer', check: () => typeof ModuleViewer !== 'undefined' },
345
+ { name: 'SessionManager', check: () => typeof SessionManager !== 'undefined' },
346
+ { name: 'Dashboard', check: () => typeof Dashboard !== 'undefined' },
347
+ { name: 'Dashboard Instance', check: () => typeof window.dashboard !== 'undefined' },
348
+ { name: 'Global Functions', check: () => typeof connectSocket !== 'undefined' }
349
+ ];
350
+
351
+ let html = '';
352
+ let allPass = true;
353
+
354
+ tests.forEach(test => {
355
+ const passed = test.check();
356
+ const status = passed ? 'test-pass' : 'test-fail';
357
+ const icon = passed ? '✅' : '❌';
358
+ html += `<div class="test-item ${status}">${icon} ${test.name}</div>`;
359
+ if (!passed) allPass = false;
360
+ });
361
+
362
+ if (allPass) {
363
+ html += '<div class="test-item test-pass">🎉 All modules loaded successfully!</div>';
364
+ } else {
365
+ html += '<div class="test-item test-fail">⚠️ Some modules failed to load</div>';
366
+ }
367
+
368
+ results.innerHTML = html;
369
+ }, 1000);
370
+ </script>
371
+ </body>
372
+ </html>
@@ -19,12 +19,57 @@ try:
19
19
  # When installed as package, this should work directly
20
20
  from claude_mpm.services.socketio_server import SocketIOServer
21
21
  except ImportError:
22
- # When in development, add src to path
23
- project_root = script_dir.parent.parent.parent # from scripts -> claude_mpm -> src -> project_root
24
- src_path = project_root / "src"
25
- if src_path.exists():
26
- sys.path.insert(0, str(src_path))
27
- from claude_mpm.services.socketio_server import SocketIOServer
22
+ # Need to add the appropriate directory to sys.path
23
+ import sys
24
+
25
+ # Get the absolute path of this script
26
+ script_path = Path(__file__).resolve()
27
+
28
+ # Determine if we're in development or installed environment
29
+ if "site-packages" in str(script_path):
30
+ # Installed environment: ~/.local/pipx/venvs/claude-mpm/lib/python3.13/site-packages/claude_mpm/scripts/socketio_daemon.py
31
+ # Need to add site-packages directory to path
32
+ parts = script_path.parts
33
+ site_packages_idx = next(i for i, part in enumerate(parts) if part == "site-packages")
34
+ site_packages_path = Path(*parts[:site_packages_idx + 1])
35
+
36
+ if site_packages_path.exists() and str(site_packages_path) not in sys.path:
37
+ sys.path.insert(0, str(site_packages_path))
38
+ else:
39
+ # Development environment: Project/src/claude_mpm/scripts/socketio_daemon.py
40
+ # Need to add src directory to path
41
+ # Go up: scripts -> claude_mpm -> src
42
+ src_path = script_path.parent.parent.parent
43
+
44
+ if src_path.exists() and (src_path / "claude_mpm").exists() and str(src_path) not in sys.path:
45
+ sys.path.insert(0, str(src_path))
46
+
47
+ # Try importing again after path modification
48
+ try:
49
+ from claude_mpm.services.socketio_server import SocketIOServer
50
+ except ImportError as e:
51
+ print(f"❌ Failed to import SocketIOServer after path adjustment: {e}")
52
+ print(f"📍 Script path: {script_path}")
53
+ print(f"🐍 Python path entries: {len(sys.path)}")
54
+ for i, path in enumerate(sys.path):
55
+ print(f" [{i}] {path}")
56
+
57
+ # Check if claude_mpm directory exists in any path
58
+ claude_mpm_found = False
59
+ for path_str in sys.path:
60
+ claude_mpm_path = Path(path_str) / "claude_mpm"
61
+ if claude_mpm_path.exists():
62
+ print(f"✅ Found claude_mpm at: {claude_mpm_path}")
63
+ claude_mpm_found = True
64
+
65
+ if not claude_mpm_found:
66
+ print("❌ claude_mpm directory not found in any sys.path entry")
67
+
68
+ print("\n💡 Troubleshooting tips:")
69
+ print(" 1. Ensure claude-mpm is properly installed: pip install claude-mpm")
70
+ print(" 2. If in development, ensure you're in the project root directory")
71
+ print(" 3. Check that PYTHONPATH includes the package location")
72
+ sys.exit(1)
28
73
 
29
74
  PID_FILE = Path.home() / ".claude-mpm" / "socketio-server.pid"
30
75
  LOG_FILE = Path.home() / ".claude-mpm" / "socketio-server.log"
@@ -348,13 +348,49 @@ class SocketIOServer:
348
348
 
349
349
  async def _handle_dashboard(self, request):
350
350
  """Serve the dashboard HTML file."""
351
- dashboard_path = get_project_root() / 'src' / 'claude_mpm' / 'dashboard' / 'templates' / 'index.html'
352
- self.logger.info(f"Dashboard requested, looking for: {dashboard_path}")
353
- self.logger.info(f"Path exists: {dashboard_path.exists()}")
354
- if dashboard_path.exists():
351
+ # Try to find dashboard path using multiple approaches
352
+ dashboard_path = None
353
+
354
+ # Approach 1: Use module-relative path (works in installed environment)
355
+ try:
356
+ import claude_mpm.dashboard
357
+ dashboard_module_path = Path(claude_mpm.dashboard.__file__).parent
358
+ candidate_path = dashboard_module_path / "templates" / "index.html"
359
+ if candidate_path.exists():
360
+ dashboard_path = candidate_path
361
+ self.logger.info(f"Found dashboard using module path: {dashboard_path}")
362
+ except Exception as e:
363
+ self.logger.debug(f"Module-relative path failed: {e}")
364
+
365
+ # Approach 2: Use project root (works in development environment)
366
+ if dashboard_path is None:
367
+ try:
368
+ candidate_path = get_project_root() / 'src' / 'claude_mpm' / 'dashboard' / 'templates' / 'index.html'
369
+ if candidate_path.exists():
370
+ dashboard_path = candidate_path
371
+ self.logger.info(f"Found dashboard using project root: {dashboard_path}")
372
+ except Exception as e:
373
+ self.logger.debug(f"Project root path failed: {e}")
374
+
375
+ # Approach 3: Search for dashboard in package installation
376
+ if dashboard_path is None:
377
+ try:
378
+ candidate_path = get_project_root() / 'claude_mpm' / 'dashboard' / 'templates' / 'index.html'
379
+ if candidate_path.exists():
380
+ dashboard_path = candidate_path
381
+ self.logger.info(f"Found dashboard using package path: {dashboard_path}")
382
+ except Exception as e:
383
+ self.logger.debug(f"Package path failed: {e}")
384
+
385
+ if dashboard_path and dashboard_path.exists():
355
386
  return web.FileResponse(str(dashboard_path))
356
387
  else:
357
- return web.Response(text=f"Dashboard not found at: {dashboard_path}", status=404)
388
+ error_msg = f"Dashboard not found. Searched paths:\n"
389
+ error_msg += f"1. Module-relative: {dashboard_module_path / 'templates' / 'index.html' if 'dashboard_module_path' in locals() else 'N/A'}\n"
390
+ error_msg += f"2. Development: {get_project_root() / 'src' / 'claude_mpm' / 'dashboard' / 'templates' / 'index.html'}\n"
391
+ error_msg += f"3. Package: {get_project_root() / 'claude_mpm' / 'dashboard' / 'templates' / 'index.html'}"
392
+ self.logger.error(error_msg)
393
+ return web.Response(text=error_msg, status=404)
358
394
 
359
395
  async def _handle_cors_preflight(self, request):
360
396
  """Handle CORS preflight requests."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 3.4.10
3
+ Version: 3.4.14
4
4
  Summary: Claude Multi-agent Project Manager - Clean orchestration with ticket management
5
5
  Home-page: https://github.com/bobmatnyc/claude-mpm
6
6
  Author: Claude MPM Team
@@ -34,6 +34,7 @@ Requires-Dist: tree-sitter>=0.21.0
34
34
  Requires-Dist: tree-sitter-language-pack>=0.8.0
35
35
  Requires-Dist: python-socketio>=5.11.0
36
36
  Requires-Dist: aiohttp>=3.9.0
37
+ Requires-Dist: aiohttp-cors>=0.8.0
37
38
  Requires-Dist: python-engineio>=4.8.0
38
39
  Provides-Extra: dev
39
40
  Requires-Dist: pytest>=7.0; extra == "dev"
@@ -43,7 +43,7 @@ claude_mpm/cli/commands/agents.py,sha256=FqqEQcfAfCxjz_E7fGQUtLznloJLz8fWQtnjQhk
43
43
  claude_mpm/cli/commands/info.py,sha256=ETL6jC08OTQVTPjs219Y0m3FzfKOUlI0-yI81AI8FXY,2990
44
44
  claude_mpm/cli/commands/memory.py,sha256=6jYD1bgfnWA0DvBpLJnZCPYMRoGAPBopAED8Qr-iIos,37357
45
45
  claude_mpm/cli/commands/monitor.py,sha256=80_tmSdfn_2cYpzxxPu9GnvFW0eixlSJ4wCqbn8VSCM,12407
46
- claude_mpm/cli/commands/run.py,sha256=Rv6RT2S9WN8KcqX5e9rtmALP8yiOSw8ojl_Qp7gugqg,30234
46
+ claude_mpm/cli/commands/run.py,sha256=xgiffMozZucZ4ELk6-sTQBn6FWC059OHsXx4vsZgyOc,30139
47
47
  claude_mpm/cli/commands/tickets.py,sha256=SXyGtHSyGJwTeJwDAHf7kRbdiG1DlZkXkod5UoNy7Ik,2150
48
48
  claude_mpm/cli/commands/ui.py,sha256=FhBQiOKW61cNduyryRu0UhC366d6o1eEkBgbPd7Au1w,1900
49
49
  claude_mpm/cli_module/__init__.py,sha256=CkMp4gzWKoZZF_qKyBDi2sQaZw_GLWZYLtKouv-4f8s,390
@@ -75,7 +75,27 @@ claude_mpm/core/session_manager.py,sha256=D6ZA7bHAgfdkv0nLKjza0FKDng5iqi___IESrb
75
75
  claude_mpm/core/simple_runner.py,sha256=qcbjmRSGD3R_Kt9OmHBexZMY8RpCRbtXRKZAJ31ZGUU,44076
76
76
  claude_mpm/core/socketio_pool.py,sha256=B83uDsmqRF5S0QDwwatyKS-m2SdTvotCVfc3_2uQxd8,22438
77
77
  claude_mpm/core/tool_access_control.py,sha256=htZbDhC8s7D7BVqfmk0BwRrYJnlnUAk8_NeJKOaeNlg,6632
78
+ claude_mpm/dashboard/index.html,sha256=lXd4WCDn46w9a6edUpGQIy5DtCmiTvDerd1vY97Ule8,451
78
79
  claude_mpm/dashboard/open_dashboard.py,sha256=aXUc6LzUMwmTQMkl_h2jjvICimr-ED4FPMHP_9mnrgQ,1108
80
+ claude_mpm/dashboard/test_dashboard.html,sha256=Aakmm9O-pWld_CCXLuUBOJC81Ix9D1avytTN93u0zfc,15090
81
+ claude_mpm/dashboard/static/css/dashboard.css,sha256=z2Z9jLWoPsC71gdQQML9D9Dkr54XnpKhcz4jomCKfdY,49692
82
+ claude_mpm/dashboard/static/js/dashboard-original.js,sha256=MfrEvUbvB-sU67wslVBEYmk2q9d0s2a_u1NWodJNQrc,162374
83
+ claude_mpm/dashboard/static/js/dashboard.js,sha256=vCRjE6HfxQ4VGqe8sML2_8lX0w6qoaZF0AmWjKVldpM,72056
84
+ claude_mpm/dashboard/static/js/socket-client.js,sha256=hjh-HGAlTpaX0Cr6A7DG75TZjujPFcRQSdw7FrysCWQ,18912
85
+ claude_mpm/dashboard/static/js/components/agent-inference.js,sha256=vOSzIGrbGcjLwbQSs4NUIT-KMsAtsdHGcW2LI8W1YQk,24350
86
+ claude_mpm/dashboard/static/js/components/event-processor.js,sha256=nohjjqOqc6W1O0XHQDZ7vJ92t6sIsnoMSruCysT37SI,25268
87
+ claude_mpm/dashboard/static/js/components/event-viewer.js,sha256=kbRtHcsR3ZmMGK2jmTd3MJ1Ga6FkZJ0IQNrdmGoSrMY,32810
88
+ claude_mpm/dashboard/static/js/components/export-manager.js,sha256=vaBVwLnjzmS_euyeG5Kuq-LHbINcOAcMdibZtgvrUJk,12032
89
+ claude_mpm/dashboard/static/js/components/file-tool-tracker.js,sha256=yTshamd2bOVJFl2p6hCg0kpRZxpIpkX4hSrvMOyfIX4,23968
90
+ claude_mpm/dashboard/static/js/components/hud-library-loader.js,sha256=LDeHIgoSc_ucgWOWgKqXogeKwf9ClGJTBUErLG3SxzE,7289
91
+ claude_mpm/dashboard/static/js/components/hud-manager.js,sha256=W-mUqEAiR6zIQAoTT-Tz3_OpwnNRg3KjV_3Ujm6LG04,26538
92
+ claude_mpm/dashboard/static/js/components/hud-visualizer.js,sha256=C78tZ9if-qhxhfUX3-PMezCBSw9apb3Exp_R23ZmU7I,62850
93
+ claude_mpm/dashboard/static/js/components/module-viewer.js,sha256=ZUQpk6U-GmvrRl2N4nm6P7TkG-m4ZKH3rJbg2Ks0x0A,108693
94
+ claude_mpm/dashboard/static/js/components/session-manager.js,sha256=9BkA4NzM_4k9M7-swh4gaHL4Pfd_lxlcsRX13Wfc81A,19990
95
+ claude_mpm/dashboard/static/js/components/socket-manager.js,sha256=x0mKU7gIpIkfAPVyCY3i6Idy_QbxfW5Pc3vqv4zgSvg,12362
96
+ claude_mpm/dashboard/static/js/components/ui-state-manager.js,sha256=5Ligdos7L_UTWMtCW34Y7BNh7msdd9ArCr-7Yr9-VS8,12979
97
+ claude_mpm/dashboard/static/js/components/working-directory.js,sha256=YGyTP0vCaRc9qR7g2d1INShG0-0_X-xkqCW2IF82eXc,33213
98
+ claude_mpm/dashboard/templates/index.html,sha256=ONVRsfpsqmvQDuz9d3QTaF2zN08YoQM9kU-Bxri4660,14997
79
99
  claude_mpm/experimental/cli_enhancements.py,sha256=-N5f2u9TaxUcOJegUd3lt1FRz5ErEyYUvvgrNmMRL7Q,11814
80
100
  claude_mpm/generators/__init__.py,sha256=l53aBn6kBQSDz3b6bZkMCJBcEmYnV9hHEZq8LKzXgH8,152
81
101
  claude_mpm/generators/agent_profile_generator.py,sha256=2HjOscogSyvrtQj8KwdgNPS6Ym_QvgX1BMeauQZewZA,5751
@@ -113,7 +133,7 @@ claude_mpm/orchestration/archive/subprocess_orchestrator.py,sha256=TYTAHX6p4OpgB
113
133
  claude_mpm/orchestration/archive/system_prompt_orchestrator.py,sha256=R16sc-94kQVeGjJzTYmvKn0aYgj_9qxyzShDy1E5zpE,12853
114
134
  claude_mpm/orchestration/archive/wrapper_orchestrator.py,sha256=cvL0NJf9kCWf3QJl67ySwvtR1Hd9Rym28Ii8Rtsdi6Q,6806
115
135
  claude_mpm/schemas/workflow_validator.py,sha256=qRgGodJoIZQaLfZ8OzWz3Y9eVNz3ckrQwkJ2RvccxAs,17175
116
- claude_mpm/scripts/socketio_daemon.py,sha256=xV2COFBtj2DZ2-hixfCw5beqz2dh4CEgynOtgmVsUdA,7459
136
+ claude_mpm/scripts/socketio_daemon.py,sha256=-vS7A55BQZCTbqcB7QAgWvZrcBqtIxcyriFcekgKIBU,9568
117
137
  claude_mpm/services/__init__.py,sha256=dcZ5U4xQlk-zpAy8CLTuEcXzKDfHT0KdJf3bYSmZ1BM,1904
118
138
  claude_mpm/services/agent_capabilities_generator.py,sha256=hWG0zV2InmzrDMxSbQzjVBBTzEaxg0bFxl8tmTMJ8qA,6565
119
139
  claude_mpm/services/agent_deployment.py,sha256=DtK1BX2yCrutUkQdVPD01mYHm-ya36l3EPOnEcaDfog,67961
@@ -139,7 +159,7 @@ claude_mpm/services/project_analyzer.py,sha256=3Ub_Tpcxm0LnYgcAipebvWr6TfofVqZNM
139
159
  claude_mpm/services/recovery_manager.py,sha256=K46vXbEWbxFUoS42s34OxN1rkddpisGG7E_ZdRyAZ-A,25792
140
160
  claude_mpm/services/shared_prompt_cache.py,sha256=D04lrRWyg0lHyqGcAHy7IYvRHRKSg6EOpAJwBUPa2wk,29890
141
161
  claude_mpm/services/socketio_client_manager.py,sha256=2Ly63iiGA_BUzf73UwQDu9Q75wA1C4O1CWFv8hi8bms,18074
142
- claude_mpm/services/socketio_server.py,sha256=kVqSdOrQMg3oQHKsR3ZJPDumVVPnL5TsqCvbHGWraqw,79406
162
+ claude_mpm/services/socketio_server.py,sha256=6sCeHdZHW3glxrI_ZzynUwFQ7a-iO5OXnAtIDu7B3oY,81395
143
163
  claude_mpm/services/standalone_socketio_server.py,sha256=TfdtwdtlKA6cZyTon9O7zkSeu0H-1HpW0te7vu1r3o0,55214
144
164
  claude_mpm/services/ticket_manager.py,sha256=Ki11YjBkDax8BFVSaDdOBk3K4VU5gvdbgq9AmCyyoZ0,7454
145
165
  claude_mpm/services/ticket_manager_di.py,sha256=pIsIGncbboKzBYSRQTO7ZX5MuQzV6iFfIflvKe6u1jw,11123
@@ -193,9 +213,9 @@ claude_mpm/utils/path_operations.py,sha256=6pLMnAWBVzHkgp6JyQHmHbGD-dWn-nX21yV4E
193
213
  claude_mpm/utils/paths.py,sha256=Xv0SZWdZRkRjN9e6clBcA165ya00GNQxt7SwMz51tfA,10153
194
214
  claude_mpm/validation/__init__.py,sha256=bJ19g9lnk7yIjtxzN8XPegp87HTFBzCrGQOpFgRTf3g,155
195
215
  claude_mpm/validation/agent_validator.py,sha256=GCA2b2rKhKDeaNyUqWxTiWIs3sDdWjD9cgOFRp9K6ic,18227
196
- claude_mpm-3.4.10.dist-info/licenses/LICENSE,sha256=cSdDfXjoTVhstrERrqme4zgxAu4GubU22zVEHsiXGxs,1071
197
- claude_mpm-3.4.10.dist-info/METADATA,sha256=IEX7hJ0U89JTyyFHps19mQ7qVFBENPk0z-nEGVIVOXU,6464
198
- claude_mpm-3.4.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
199
- claude_mpm-3.4.10.dist-info/entry_points.txt,sha256=3_d7wLrg9sRmQ1SfrFGWoTNL8Wrd6lQb2XVSYbTwRIg,324
200
- claude_mpm-3.4.10.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
201
- claude_mpm-3.4.10.dist-info/RECORD,,
216
+ claude_mpm-3.4.14.dist-info/licenses/LICENSE,sha256=cSdDfXjoTVhstrERrqme4zgxAu4GubU22zVEHsiXGxs,1071
217
+ claude_mpm-3.4.14.dist-info/METADATA,sha256=A2ldIPNi-3VTlgSXiwiSbnIxAqjov4jOfc1aNYDylAk,6499
218
+ claude_mpm-3.4.14.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
219
+ claude_mpm-3.4.14.dist-info/entry_points.txt,sha256=3_d7wLrg9sRmQ1SfrFGWoTNL8Wrd6lQb2XVSYbTwRIg,324
220
+ claude_mpm-3.4.14.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
221
+ claude_mpm-3.4.14.dist-info/RECORD,,