claude-mpm 3.4.13__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 (27) hide show
  1. claude_mpm/dashboard/index.html +13 -0
  2. claude_mpm/dashboard/static/css/dashboard.css +2722 -0
  3. claude_mpm/dashboard/static/js/components/agent-inference.js +619 -0
  4. claude_mpm/dashboard/static/js/components/event-processor.js +641 -0
  5. claude_mpm/dashboard/static/js/components/event-viewer.js +914 -0
  6. claude_mpm/dashboard/static/js/components/export-manager.js +362 -0
  7. claude_mpm/dashboard/static/js/components/file-tool-tracker.js +611 -0
  8. claude_mpm/dashboard/static/js/components/hud-library-loader.js +211 -0
  9. claude_mpm/dashboard/static/js/components/hud-manager.js +671 -0
  10. claude_mpm/dashboard/static/js/components/hud-visualizer.js +1718 -0
  11. claude_mpm/dashboard/static/js/components/module-viewer.js +2701 -0
  12. claude_mpm/dashboard/static/js/components/session-manager.js +520 -0
  13. claude_mpm/dashboard/static/js/components/socket-manager.js +343 -0
  14. claude_mpm/dashboard/static/js/components/ui-state-manager.js +427 -0
  15. claude_mpm/dashboard/static/js/components/working-directory.js +866 -0
  16. claude_mpm/dashboard/static/js/dashboard-original.js +4134 -0
  17. claude_mpm/dashboard/static/js/dashboard.js +1978 -0
  18. claude_mpm/dashboard/static/js/socket-client.js +537 -0
  19. claude_mpm/dashboard/templates/index.html +346 -0
  20. claude_mpm/dashboard/test_dashboard.html +372 -0
  21. claude_mpm/services/socketio_server.py +41 -5
  22. {claude_mpm-3.4.13.dist-info → claude_mpm-3.4.14.dist-info}/METADATA +2 -1
  23. {claude_mpm-3.4.13.dist-info → claude_mpm-3.4.14.dist-info}/RECORD +27 -7
  24. {claude_mpm-3.4.13.dist-info → claude_mpm-3.4.14.dist-info}/WHEEL +0 -0
  25. {claude_mpm-3.4.13.dist-info → claude_mpm-3.4.14.dist-info}/entry_points.txt +0 -0
  26. {claude_mpm-3.4.13.dist-info → claude_mpm-3.4.14.dist-info}/licenses/LICENSE +0 -0
  27. {claude_mpm-3.4.13.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>
@@ -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.13
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"
@@ -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
@@ -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.13.dist-info/licenses/LICENSE,sha256=cSdDfXjoTVhstrERrqme4zgxAu4GubU22zVEHsiXGxs,1071
197
- claude_mpm-3.4.13.dist-info/METADATA,sha256=pwQp4ScPXDl8ER7DnVWAVF88FqLn1XxTPkp_THy21Z8,6464
198
- claude_mpm-3.4.13.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
199
- claude_mpm-3.4.13.dist-info/entry_points.txt,sha256=3_d7wLrg9sRmQ1SfrFGWoTNL8Wrd6lQb2XVSYbTwRIg,324
200
- claude_mpm-3.4.13.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
201
- claude_mpm-3.4.13.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,,