claude-mpm 3.4.14__py3-none-any.whl → 3.4.16__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/services/socketio_server.py +75 -7
- {claude_mpm-3.4.14.dist-info → claude_mpm-3.4.16.dist-info}/METADATA +1 -1
- {claude_mpm-3.4.14.dist-info → claude_mpm-3.4.16.dist-info}/RECORD +7 -7
- {claude_mpm-3.4.14.dist-info → claude_mpm-3.4.16.dist-info}/WHEEL +0 -0
- {claude_mpm-3.4.14.dist-info → claude_mpm-3.4.16.dist-info}/entry_points.txt +0 -0
- {claude_mpm-3.4.14.dist-info → claude_mpm-3.4.16.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-3.4.14.dist-info → claude_mpm-3.4.16.dist-info}/top_level.txt +0 -0
|
@@ -15,6 +15,7 @@ import time
|
|
|
15
15
|
from datetime import datetime
|
|
16
16
|
from typing import Set, Dict, Any, Optional, List
|
|
17
17
|
from collections import deque
|
|
18
|
+
from pathlib import Path
|
|
18
19
|
|
|
19
20
|
try:
|
|
20
21
|
import socketio
|
|
@@ -294,9 +295,12 @@ class SocketIOServer:
|
|
|
294
295
|
self.app.router.add_get('/dashboard', self._handle_dashboard)
|
|
295
296
|
|
|
296
297
|
# Add static file serving for web assets
|
|
297
|
-
static_path =
|
|
298
|
-
if static_path.exists():
|
|
298
|
+
static_path = self._find_static_path()
|
|
299
|
+
if static_path and static_path.exists():
|
|
299
300
|
self.app.router.add_static('/static/', path=str(static_path), name='static')
|
|
301
|
+
self.logger.info(f"Static files served from: {static_path}")
|
|
302
|
+
else:
|
|
303
|
+
self.logger.warning("Static files directory not found - CSS/JS files will not be available")
|
|
300
304
|
|
|
301
305
|
# Register event handlers
|
|
302
306
|
self._register_events()
|
|
@@ -346,6 +350,57 @@ class SocketIOServer:
|
|
|
346
350
|
'Access-Control-Allow-Headers': 'Content-Type, Accept'
|
|
347
351
|
})
|
|
348
352
|
|
|
353
|
+
def _find_static_path(self):
|
|
354
|
+
"""Find the static files directory using multiple approaches.
|
|
355
|
+
|
|
356
|
+
WHY: Static files need to be found in both development and installed environments.
|
|
357
|
+
This uses the same multi-approach pattern as dashboard HTML resolution.
|
|
358
|
+
"""
|
|
359
|
+
|
|
360
|
+
# Approach 1: Use module-relative path (works in installed environment)
|
|
361
|
+
try:
|
|
362
|
+
import claude_mpm.dashboard
|
|
363
|
+
|
|
364
|
+
# Try __file__ attribute first
|
|
365
|
+
if hasattr(claude_mpm.dashboard, '__file__') and claude_mpm.dashboard.__file__:
|
|
366
|
+
dashboard_module_path = Path(claude_mpm.dashboard.__file__).parent
|
|
367
|
+
candidate_path = dashboard_module_path / "static"
|
|
368
|
+
if candidate_path.exists():
|
|
369
|
+
self.logger.info(f"Found static files using module __file__ path: {candidate_path}")
|
|
370
|
+
return candidate_path
|
|
371
|
+
|
|
372
|
+
# Try __path__ attribute for namespace packages
|
|
373
|
+
elif hasattr(claude_mpm.dashboard, '__path__') and claude_mpm.dashboard.__path__:
|
|
374
|
+
# __path__ is a list, take the first entry
|
|
375
|
+
dashboard_module_path = Path(claude_mpm.dashboard.__path__[0])
|
|
376
|
+
candidate_path = dashboard_module_path / "static"
|
|
377
|
+
if candidate_path.exists():
|
|
378
|
+
self.logger.info(f"Found static files using module __path__: {candidate_path}")
|
|
379
|
+
return candidate_path
|
|
380
|
+
|
|
381
|
+
except Exception as e:
|
|
382
|
+
self.logger.debug(f"Module-relative static path failed: {e}")
|
|
383
|
+
|
|
384
|
+
# Approach 2: Use project root (works in development environment)
|
|
385
|
+
try:
|
|
386
|
+
candidate_path = get_project_root() / 'src' / 'claude_mpm' / 'dashboard' / 'static'
|
|
387
|
+
if candidate_path.exists():
|
|
388
|
+
self.logger.info(f"Found static files using project root: {candidate_path}")
|
|
389
|
+
return candidate_path
|
|
390
|
+
except Exception as e:
|
|
391
|
+
self.logger.debug(f"Project root static path failed: {e}")
|
|
392
|
+
|
|
393
|
+
# Approach 3: Search for static files in package installation
|
|
394
|
+
try:
|
|
395
|
+
candidate_path = get_project_root() / 'claude_mpm' / 'dashboard' / 'static'
|
|
396
|
+
if candidate_path.exists():
|
|
397
|
+
self.logger.info(f"Found static files using package path: {candidate_path}")
|
|
398
|
+
return candidate_path
|
|
399
|
+
except Exception as e:
|
|
400
|
+
self.logger.debug(f"Package static path failed: {e}")
|
|
401
|
+
|
|
402
|
+
return None
|
|
403
|
+
|
|
349
404
|
async def _handle_dashboard(self, request):
|
|
350
405
|
"""Serve the dashboard HTML file."""
|
|
351
406
|
# Try to find dashboard path using multiple approaches
|
|
@@ -354,11 +409,24 @@ class SocketIOServer:
|
|
|
354
409
|
# Approach 1: Use module-relative path (works in installed environment)
|
|
355
410
|
try:
|
|
356
411
|
import claude_mpm.dashboard
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
if
|
|
360
|
-
|
|
361
|
-
|
|
412
|
+
|
|
413
|
+
# Try __file__ attribute first
|
|
414
|
+
if hasattr(claude_mpm.dashboard, '__file__') and claude_mpm.dashboard.__file__:
|
|
415
|
+
dashboard_module_path = Path(claude_mpm.dashboard.__file__).parent
|
|
416
|
+
candidate_path = dashboard_module_path / "templates" / "index.html"
|
|
417
|
+
if candidate_path.exists():
|
|
418
|
+
dashboard_path = candidate_path
|
|
419
|
+
self.logger.info(f"Found dashboard using module __file__ path: {dashboard_path}")
|
|
420
|
+
|
|
421
|
+
# Try __path__ attribute for namespace packages
|
|
422
|
+
elif hasattr(claude_mpm.dashboard, '__path__') and claude_mpm.dashboard.__path__:
|
|
423
|
+
# __path__ is a list, take the first entry
|
|
424
|
+
dashboard_module_path = Path(claude_mpm.dashboard.__path__[0])
|
|
425
|
+
candidate_path = dashboard_module_path / "templates" / "index.html"
|
|
426
|
+
if candidate_path.exists():
|
|
427
|
+
dashboard_path = candidate_path
|
|
428
|
+
self.logger.info(f"Found dashboard using module __path__: {dashboard_path}")
|
|
429
|
+
|
|
362
430
|
except Exception as e:
|
|
363
431
|
self.logger.debug(f"Module-relative path failed: {e}")
|
|
364
432
|
|
|
@@ -159,7 +159,7 @@ claude_mpm/services/project_analyzer.py,sha256=3Ub_Tpcxm0LnYgcAipebvWr6TfofVqZNM
|
|
|
159
159
|
claude_mpm/services/recovery_manager.py,sha256=K46vXbEWbxFUoS42s34OxN1rkddpisGG7E_ZdRyAZ-A,25792
|
|
160
160
|
claude_mpm/services/shared_prompt_cache.py,sha256=D04lrRWyg0lHyqGcAHy7IYvRHRKSg6EOpAJwBUPa2wk,29890
|
|
161
161
|
claude_mpm/services/socketio_client_manager.py,sha256=2Ly63iiGA_BUzf73UwQDu9Q75wA1C4O1CWFv8hi8bms,18074
|
|
162
|
-
claude_mpm/services/socketio_server.py,sha256=
|
|
162
|
+
claude_mpm/services/socketio_server.py,sha256=E1i_YrUFa7AKdxfKgNkC0daUzytA8qiHRJxD_JRcXPk,84929
|
|
163
163
|
claude_mpm/services/standalone_socketio_server.py,sha256=TfdtwdtlKA6cZyTon9O7zkSeu0H-1HpW0te7vu1r3o0,55214
|
|
164
164
|
claude_mpm/services/ticket_manager.py,sha256=Ki11YjBkDax8BFVSaDdOBk3K4VU5gvdbgq9AmCyyoZ0,7454
|
|
165
165
|
claude_mpm/services/ticket_manager_di.py,sha256=pIsIGncbboKzBYSRQTO7ZX5MuQzV6iFfIflvKe6u1jw,11123
|
|
@@ -213,9 +213,9 @@ claude_mpm/utils/path_operations.py,sha256=6pLMnAWBVzHkgp6JyQHmHbGD-dWn-nX21yV4E
|
|
|
213
213
|
claude_mpm/utils/paths.py,sha256=Xv0SZWdZRkRjN9e6clBcA165ya00GNQxt7SwMz51tfA,10153
|
|
214
214
|
claude_mpm/validation/__init__.py,sha256=bJ19g9lnk7yIjtxzN8XPegp87HTFBzCrGQOpFgRTf3g,155
|
|
215
215
|
claude_mpm/validation/agent_validator.py,sha256=GCA2b2rKhKDeaNyUqWxTiWIs3sDdWjD9cgOFRp9K6ic,18227
|
|
216
|
-
claude_mpm-3.4.
|
|
217
|
-
claude_mpm-3.4.
|
|
218
|
-
claude_mpm-3.4.
|
|
219
|
-
claude_mpm-3.4.
|
|
220
|
-
claude_mpm-3.4.
|
|
221
|
-
claude_mpm-3.4.
|
|
216
|
+
claude_mpm-3.4.16.dist-info/licenses/LICENSE,sha256=cSdDfXjoTVhstrERrqme4zgxAu4GubU22zVEHsiXGxs,1071
|
|
217
|
+
claude_mpm-3.4.16.dist-info/METADATA,sha256=yLlPpKYEh2CCxxk250Xuo7uSEBNX74LycyuBBHdhQ18,6499
|
|
218
|
+
claude_mpm-3.4.16.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
219
|
+
claude_mpm-3.4.16.dist-info/entry_points.txt,sha256=3_d7wLrg9sRmQ1SfrFGWoTNL8Wrd6lQb2XVSYbTwRIg,324
|
|
220
|
+
claude_mpm-3.4.16.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
|
|
221
|
+
claude_mpm-3.4.16.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|