claude-mpm 4.2.9__py3-none-any.whl → 4.2.11__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/VERSION +1 -1
- claude_mpm/cli/commands/dashboard.py +59 -126
- claude_mpm/cli/commands/monitor.py +71 -212
- claude_mpm/cli/commands/run.py +33 -33
- claude_mpm/dashboard/static/css/code-tree.css +8 -16
- claude_mpm/dashboard/static/dist/components/code-tree.js +1 -1
- claude_mpm/dashboard/static/dist/components/file-viewer.js +2 -0
- claude_mpm/dashboard/static/dist/components/module-viewer.js +1 -1
- claude_mpm/dashboard/static/dist/components/unified-data-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-tree.js +692 -114
- claude_mpm/dashboard/static/js/components/file-viewer.js +538 -0
- claude_mpm/dashboard/static/js/components/module-viewer.js +26 -0
- claude_mpm/dashboard/static/js/components/unified-data-viewer.js +166 -14
- claude_mpm/dashboard/static/js/dashboard.js +108 -91
- claude_mpm/dashboard/static/js/socket-client.js +9 -7
- claude_mpm/dashboard/templates/index.html +2 -7
- claude_mpm/hooks/claude_hooks/hook_handler.py +1 -11
- claude_mpm/hooks/claude_hooks/services/connection_manager.py +54 -59
- claude_mpm/hooks/claude_hooks/services/connection_manager_http.py +112 -72
- claude_mpm/services/agents/deployment/agent_template_builder.py +0 -1
- claude_mpm/services/cli/unified_dashboard_manager.py +354 -0
- claude_mpm/services/monitor/__init__.py +20 -0
- claude_mpm/services/monitor/daemon.py +256 -0
- claude_mpm/services/monitor/event_emitter.py +279 -0
- claude_mpm/services/monitor/handlers/__init__.py +20 -0
- claude_mpm/services/monitor/handlers/code_analysis.py +334 -0
- claude_mpm/services/monitor/handlers/dashboard.py +298 -0
- claude_mpm/services/monitor/handlers/hooks.py +491 -0
- claude_mpm/services/monitor/management/__init__.py +18 -0
- claude_mpm/services/monitor/management/health.py +124 -0
- claude_mpm/services/monitor/management/lifecycle.py +298 -0
- claude_mpm/services/monitor/server.py +442 -0
- claude_mpm/tools/code_tree_analyzer.py +33 -17
- {claude_mpm-4.2.9.dist-info → claude_mpm-4.2.11.dist-info}/METADATA +1 -1
- {claude_mpm-4.2.9.dist-info → claude_mpm-4.2.11.dist-info}/RECORD +41 -36
- claude_mpm/cli/commands/socketio_monitor.py +0 -233
- claude_mpm/scripts/socketio_daemon.py +0 -571
- claude_mpm/scripts/socketio_daemon_hardened.py +0 -937
- claude_mpm/scripts/socketio_daemon_wrapper.py +0 -78
- claude_mpm/scripts/socketio_server_manager.py +0 -349
- claude_mpm/services/cli/dashboard_launcher.py +0 -423
- claude_mpm/services/cli/socketio_manager.py +0 -595
- claude_mpm/services/dashboard/stable_server.py +0 -1020
- claude_mpm/services/socketio/monitor_server.py +0 -505
- {claude_mpm-4.2.9.dist-info → claude_mpm-4.2.11.dist-info}/WHEEL +0 -0
- {claude_mpm-4.2.9.dist-info → claude_mpm-4.2.11.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.2.9.dist-info → claude_mpm-4.2.11.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.2.9.dist-info → claude_mpm-4.2.11.dist-info}/top_level.txt +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
claude_mpm/BUILD_NUMBER,sha256=toytnNjkIKPgQaGwDqQdC1rpNTAdSEc6Vja50d7Ovug,4
|
|
2
|
-
claude_mpm/VERSION,sha256=
|
|
2
|
+
claude_mpm/VERSION,sha256=cd55Cs9g014dKFhr97AzpoJW-fW8NPYxthFqB5LQaw8,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
|
|
@@ -71,7 +71,7 @@ claude_mpm/cli/commands/cleanup_orphaned_agents.py,sha256=JR8crvgrz7Sa6d-SI-gKyw
|
|
|
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=a5-eowhAPXzjDmdrMK47ZbSvGpd4zj6SC8lf6HcbqqA,11449
|
|
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,11 +83,10 @@ 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=G6bFgiEvV5nE_bl1C3KnxmZXLfSvIR6UPwYTYR3CLFg,6769
|
|
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
|
-
claude_mpm/cli/commands/run.py,sha256=
|
|
90
|
-
claude_mpm/cli/commands/socketio_monitor.py,sha256=GHHY5pKg0XCffoqLoO0l0Nxa9HQY4gdrpYebLVahzl4,9540
|
|
89
|
+
claude_mpm/cli/commands/run.py,sha256=qS3eolLiDrE8EXLQJioB6kL1ONr_l0c3OE3qMUJCqbA,43489
|
|
91
90
|
claude_mpm/cli/commands/tickets.py,sha256=kl2dklTBnG3Y4jUUJ_PcEVsTx4CtVJfkGWboWBx_mQM,21234
|
|
92
91
|
claude_mpm/cli/parsers/__init__.py,sha256=f0Fm1DDXorlVOZPLxUpjC-GIvLh01G-FZOK7TEV1L3I,1005
|
|
93
92
|
claude_mpm/cli/parsers/agent_manager_parser.py,sha256=8HuGpTnHSOnTOqOHriBTzi8EzKLMSfqH2eFHs0dEuu4,8009
|
|
@@ -202,55 +201,57 @@ claude_mpm/dashboard/static/built/components/ui-state-manager.js,sha256=PtZs6sxN
|
|
|
202
201
|
claude_mpm/dashboard/static/built/components/unified-data-viewer.js,sha256=awSWdzpGgg4ovVVR4E5TfIr-K2UhLCSuxeFIXWSUo3A,34675
|
|
203
202
|
claude_mpm/dashboard/static/built/components/working-directory.js,sha256=xE1ydpKDzRWrzHzfjrCiq5wbf3vDhmgQTGKS7myQcPM,15790
|
|
204
203
|
claude_mpm/dashboard/static/css/activity.css,sha256=0SJUwGB6fr4OlVqMwhvVKrPndg2R3QTZPnN6DkAo4aU,37987
|
|
205
|
-
claude_mpm/dashboard/static/css/code-tree.css,sha256=
|
|
204
|
+
claude_mpm/dashboard/static/css/code-tree.css,sha256=Sx74ilt7exGOdxCBEtjP9gZ74lB5e8QWr3_SIcl_0hw,30708
|
|
206
205
|
claude_mpm/dashboard/static/css/connection-status.css,sha256=nQiMLxIFjY5MDgrVCG58VR5H1PpE1vLlgXmnn01-P64,6729
|
|
207
206
|
claude_mpm/dashboard/static/css/dashboard.css,sha256=Uc97_y9UL6waqnx6bDdXkJUqPjj7w8B064C5xeJnlrg,85774
|
|
208
|
-
claude_mpm/dashboard/static/dist/dashboard.js,sha256=
|
|
209
|
-
claude_mpm/dashboard/static/dist/socket-client.js,sha256=
|
|
207
|
+
claude_mpm/dashboard/static/dist/dashboard.js,sha256=0F2Y3Zol8PJ_xns7ow-YBaRUD4-l72BfMFE3uRw6dxc,44733
|
|
208
|
+
claude_mpm/dashboard/static/dist/socket-client.js,sha256=wX2CD90Mc320Ulmc9v83XNmaBDsw9YqiAkIUghgJCj8,29129
|
|
210
209
|
claude_mpm/dashboard/static/dist/components/activity-tree.js,sha256=c7vYmCvMgq7irVrX-EFbNqVMgVuDJ_cwcvsZ4LSO3bU,29594
|
|
211
210
|
claude_mpm/dashboard/static/dist/components/agent-inference.js,sha256=fXK7kzvAXzYzOGdLw_APbDiEN51OX1I4-InnN2iZlu0,12978
|
|
212
|
-
claude_mpm/dashboard/static/dist/components/code-tree.js,sha256=
|
|
211
|
+
claude_mpm/dashboard/static/dist/components/code-tree.js,sha256=bm45xde6JrUnn5siyq29n8lVrweAvNIaYSMLtO_Or88,95772
|
|
213
212
|
claude_mpm/dashboard/static/dist/components/code-viewer.js,sha256=wMggEwMt2RrBuXJO-WYZ5_HHDODfWLm_IS9lS5LLR7M,8495
|
|
214
213
|
claude_mpm/dashboard/static/dist/components/event-processor.js,sha256=JycF1KIAmxhsNBCsne9CzRFPHMcnQz0WhTABpvuCWSc,131
|
|
215
214
|
claude_mpm/dashboard/static/dist/components/event-viewer.js,sha256=oyfvK8VO1RNSyN1CRoZiB22cNJ4D05p_ahM8WPCH27k,24902
|
|
216
215
|
claude_mpm/dashboard/static/dist/components/export-manager.js,sha256=iEbnirtMJ5bLpKbgBJfMI2bPC1Lf3_UrQntl04OUKEk,4196
|
|
217
216
|
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=Zy9itC7XVJWMTfej42qXE3rDKQ5Io0DCWQxl8rDFuoA,11704
|
|
218
218
|
claude_mpm/dashboard/static/dist/components/hud-library-loader.js,sha256=v08Xntd0Lwf-q6Nww1X2r5AWokYLgg9xUWe6ExHiNAg,2964
|
|
219
219
|
claude_mpm/dashboard/static/dist/components/hud-manager.js,sha256=CvgzgqprROjl0DP4yQx4aAypONuNlzU2EP8woGk-8Sc,27392
|
|
220
220
|
claude_mpm/dashboard/static/dist/components/hud-visualizer.js,sha256=igUUu1OLKOgwrdsfCEb-bKOsbi61bMLlpKa3hR2wQdI,69
|
|
221
|
-
claude_mpm/dashboard/static/dist/components/module-viewer.js,sha256=
|
|
221
|
+
claude_mpm/dashboard/static/dist/components/module-viewer.js,sha256=eRpKOFuwPeb8SZycpH4IZF8pE04edS3LH0h06s3GdPg,51575
|
|
222
222
|
claude_mpm/dashboard/static/dist/components/session-manager.js,sha256=ZG__csNeB8-cG1VhRNoojD-DSmNHijXI4To410hGf2E,8970
|
|
223
223
|
claude_mpm/dashboard/static/dist/components/socket-manager.js,sha256=LEqCS0_EABAsQVUfb6WQk152mSicK2k039zne5cKR8A,131
|
|
224
224
|
claude_mpm/dashboard/static/dist/components/ui-state-manager.js,sha256=PtZs6sxNhqMMFwdlr04kDKQbgOvxtMHdjSh56KR2ZBo,134
|
|
225
|
-
claude_mpm/dashboard/static/dist/components/unified-data-viewer.js,sha256=
|
|
225
|
+
claude_mpm/dashboard/static/dist/components/unified-data-viewer.js,sha256=pMA1iYfpmDObyySbGCUT2240fSrcqZmgfjxXrnHsnlM,36759
|
|
226
226
|
claude_mpm/dashboard/static/dist/components/working-directory.js,sha256=xE1ydpKDzRWrzHzfjrCiq5wbf3vDhmgQTGKS7myQcPM,15790
|
|
227
227
|
claude_mpm/dashboard/static/js/connection-manager.js,sha256=nn7x1jmwEnBClcChbFk1uMhRPu5U1xmXz3sjuo0LNm4,17981
|
|
228
|
-
claude_mpm/dashboard/static/js/dashboard.js,sha256=
|
|
228
|
+
claude_mpm/dashboard/static/js/dashboard.js,sha256=YQkwyKN7gm-qJINGYVEGNu9E4178pzmLJbeirBilkDM,64971
|
|
229
229
|
claude_mpm/dashboard/static/js/extension-error-handler.js,sha256=DZHrJ3gbfv4nsjmZpNMj-Sc3GKjVJ5ds8lgoaLRnq5I,6274
|
|
230
|
-
claude_mpm/dashboard/static/js/socket-client.js,sha256=
|
|
230
|
+
claude_mpm/dashboard/static/js/socket-client.js,sha256=EOAO7HswWMT7XrOOW0O5P3j47mjqZL3VIyl1mFgulbA,56442
|
|
231
231
|
claude_mpm/dashboard/static/js/components/activity-tree.js,sha256=1j46X0qjYReP6gwv0WGRpJSJNuBwuj6bKmumWrCZKUo,72740
|
|
232
232
|
claude_mpm/dashboard/static/js/components/agent-hierarchy.js,sha256=Xihxog_vJrk8VBEkDogV_wbye2GIFWmH71VQ1lETOHk,28243
|
|
233
233
|
claude_mpm/dashboard/static/js/components/agent-inference.js,sha256=RUVZ_fLOyDkHYjrROen_Pzzay79Bh29eXp_GRIPbIRg,37493
|
|
234
234
|
claude_mpm/dashboard/static/js/components/build-tracker.js,sha256=iouv35tNhnyx9UKtD7X1eakJkpCnvZVCrAJ_VdzsKUY,11251
|
|
235
235
|
claude_mpm/dashboard/static/js/components/code-simple.js,sha256=3A3VIvHMpYRjuDKGMaQYoVjf-zuUa4Q6pdBHWDJ0ygM,32050
|
|
236
|
-
claude_mpm/dashboard/static/js/components/code-tree.js,sha256=
|
|
236
|
+
claude_mpm/dashboard/static/js/components/code-tree.js,sha256=NW-fo4L5R0Td-zRVk3_rDYsf-GDZh_dOnzF12SdBYfU,222125
|
|
237
237
|
claude_mpm/dashboard/static/js/components/code-viewer.js,sha256=vhesEPYOM6MggweaYvYsv7ufVbuVpIcyJPXpJXyJwpM,14453
|
|
238
238
|
claude_mpm/dashboard/static/js/components/connection-debug.js,sha256=Qxr_ofDNkxDlZAwbLnhZkXVMyuO9jOe-NMWC9VHxNnA,22196
|
|
239
239
|
claude_mpm/dashboard/static/js/components/event-processor.js,sha256=pP15JIf2yEh7gqEdam42m_B1B4hDlfKbkDcGmQhyjM8,20567
|
|
240
240
|
claude_mpm/dashboard/static/js/components/event-viewer.js,sha256=Ahl9eTxCYMhDC_533Gf4O96S04W5O_Ts0PAGWSVivkI,43672
|
|
241
241
|
claude_mpm/dashboard/static/js/components/export-manager.js,sha256=T1YtaR758FaB9aP_5V1xZC9EBIFQOG5H8f_sLopxR5A,11863
|
|
242
242
|
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=FPbbZC2fwJNE3nLwql6A_xHhMMHaB5NhxZlDSqHl9kM,17193
|
|
243
244
|
claude_mpm/dashboard/static/js/components/hud-library-loader.js,sha256=SK6tY8TL88lnewi4M-i092HdgYondv_lVfHoQ-A_cWU,7170
|
|
244
245
|
claude_mpm/dashboard/static/js/components/hud-manager.js,sha256=hpvz1Ls5UcNgTbwjl7tK0OgNZ_QHnRXgNqqYaq4jjvM,25956
|
|
245
246
|
claude_mpm/dashboard/static/js/components/hud-visualizer.js,sha256=crgq3eA4xiXDE4SV9m-S94Of2y7znd1a3F4GYn2yjnU,61127
|
|
246
|
-
claude_mpm/dashboard/static/js/components/module-viewer.js,sha256=
|
|
247
|
+
claude_mpm/dashboard/static/js/components/module-viewer.js,sha256=Ndw3ZDLRP4xaMw2akEH5Dvkof4Vp9umk8yFQzQntLkI,109010
|
|
247
248
|
claude_mpm/dashboard/static/js/components/session-manager.js,sha256=pJrlMcSBNTXoK5nDLWLcIesOosk0FQtkTEM6X7eSI_I,22807
|
|
248
249
|
claude_mpm/dashboard/static/js/components/socket-manager.js,sha256=KC-aOJDEPSiMPYk0ABgvCC1xmO7TVQ4SVqohi2GNsWQ,13303
|
|
249
250
|
claude_mpm/dashboard/static/js/components/ui-state-manager.js,sha256=EWm0HpPI9TShChitRCyZvZCiUk5rIBVyw10BoHdnTzI,13178
|
|
250
|
-
claude_mpm/dashboard/static/js/components/unified-data-viewer.js,sha256=
|
|
251
|
+
claude_mpm/dashboard/static/js/components/unified-data-viewer.js,sha256=afHCGAg7v3PVhmOr77Bzx3TTZlzHI_5pq16ut3xEYWk,65302
|
|
251
252
|
claude_mpm/dashboard/static/js/components/working-directory.js,sha256=BRsPYwVnhbhFl0mC0Gvb-Ev1zxAu6yZpZcl1T1aJWWA,33558
|
|
252
253
|
claude_mpm/dashboard/templates/code_simple.html,sha256=xrmTLFow0M5NWFlk4ci1eLWML-IHr35i5pqIVaEg2TU,4329
|
|
253
|
-
claude_mpm/dashboard/templates/index.html,sha256
|
|
254
|
+
claude_mpm/dashboard/templates/index.html,sha256=-YmK978ysSuXGON8bLKeARwihJsq6UO5JEsFXOMmjkY,30768
|
|
254
255
|
claude_mpm/experimental/__init__.py,sha256=R_aclOvWpvSTHWAx9QXyg9OIPVK2dXT5tQJhxLQN11Y,369
|
|
255
256
|
claude_mpm/experimental/cli_enhancements.py,sha256=rlYOMVlj8vQzuyCkHWQ7TtjcsDeFq3y1Ng5qty2fyY8,11486
|
|
256
257
|
claude_mpm/generators/__init__.py,sha256=rG8vwF_BjPmeMKvyMXpUA8uJ-7mtW2HTNfalZzgRlNk,153
|
|
@@ -263,7 +264,7 @@ claude_mpm/hooks/validation_hooks.py,sha256=qTkO93lJWInqvEibKbY-Fj-qDvMtKRcE6dDf
|
|
|
263
264
|
claude_mpm/hooks/claude_hooks/__init__.py,sha256=b4mud_g3S-3itHY_Dzpbb_SmdMEcJwtUU8fTcqpLqqs,130
|
|
264
265
|
claude_mpm/hooks/claude_hooks/connection_pool.py,sha256=OSVJk4q-Zj_4UrQIKyGsJv6sab-oZfq-BB4_9mQqPYU,8618
|
|
265
266
|
claude_mpm/hooks/claude_hooks/event_handlers.py,sha256=OWglHktyzLmuNhkKmV_Bgka7M_YUB84lspYJlR3HQ7I,30312
|
|
266
|
-
claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=
|
|
267
|
+
claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=jVCBaJzCTFbtTcmq5NF_v50FtrI_G8rOLSLhY0rj6i4,20213
|
|
267
268
|
claude_mpm/hooks/claude_hooks/hook_handler_eventbus.py,sha256=IZKE3cJok_gb4UGFEtftic5MjYBAPupt3iDq20L9Pfc,14848
|
|
268
269
|
claude_mpm/hooks/claude_hooks/hook_handler_original.py,sha256=AOcGOf2WiA_aaRsaENKBvaj3Vi_UzeL_zaEgN3zxCrk,42964
|
|
269
270
|
claude_mpm/hooks/claude_hooks/hook_handler_refactored.py,sha256=e8phCM18f-IcovV9_xVNYSV8nndVKdzmFJa-xjKGkq8,12983
|
|
@@ -273,8 +274,8 @@ claude_mpm/hooks/claude_hooks/memory_integration.py,sha256=TXLavDM9eEoakPX_n2Wtn
|
|
|
273
274
|
claude_mpm/hooks/claude_hooks/response_tracking.py,sha256=4RcM54LyYeINf3A_toaSOPuD3oXS6jZtiRstHxgSOao,14990
|
|
274
275
|
claude_mpm/hooks/claude_hooks/tool_analysis.py,sha256=3_o2PP9D7wEMwLriCtIBOw0cj2fSZfepN7lI4P1meSQ,7862
|
|
275
276
|
claude_mpm/hooks/claude_hooks/services/__init__.py,sha256=OIYOKsUNw1BHYawOCp-KFK5kmQKuj92cCqCEPO0nwo0,585
|
|
276
|
-
claude_mpm/hooks/claude_hooks/services/connection_manager.py,sha256=
|
|
277
|
-
claude_mpm/hooks/claude_hooks/services/connection_manager_http.py,sha256
|
|
277
|
+
claude_mpm/hooks/claude_hooks/services/connection_manager.py,sha256=nTkj3Ly5UueupA27jvW2J6NAwHi0NHBug02vN_YvAOE,8153
|
|
278
|
+
claude_mpm/hooks/claude_hooks/services/connection_manager_http.py,sha256=ewE80N7CnQoD-aTPJfbW6wRv1hs9jj3ob6CZ1xKudFU,8805
|
|
278
279
|
claude_mpm/hooks/claude_hooks/services/duplicate_detector.py,sha256=Fh9LmEMsVmQM9t0U1v2l_fuBwvNpVkl_0EF8Wu5KLHQ,3882
|
|
279
280
|
claude_mpm/hooks/claude_hooks/services/state_manager.py,sha256=c7OldfemaMU37YGJxgO2uEcTOuPc-C80SRhzEH07j7I,11072
|
|
280
281
|
claude_mpm/hooks/claude_hooks/services/subagent_processor.py,sha256=l8fPF5CgmYnj1GqZQs3D_611xuZkRq3bFeg9axl-EEg,15229
|
|
@@ -287,10 +288,6 @@ claude_mpm/scripts/claude-hook-handler.sh,sha256=86Ywf4lHpF9wTXmxo3lhFmcFS0wk1G3
|
|
|
287
288
|
claude_mpm/scripts/mcp_server.py,sha256=_i9ydtI7AcO-Eb7gzbIDbcJY4PKRQRYNobB8eMailI4,2259
|
|
288
289
|
claude_mpm/scripts/mcp_wrapper.py,sha256=PvfHJShcsQHGJZD-RN3RnwLOzemAKYZ2kW_QfTkGzkk,1105
|
|
289
290
|
claude_mpm/scripts/mpm_doctor.py,sha256=_D7w1yXPIRavfSnSTRpEUlHYve2CvlDBpH_a-cmN14c,8786
|
|
290
|
-
claude_mpm/scripts/socketio_daemon.py,sha256=SBkLp5CSdbp3Se2f_HGGdfvjDFZL2_6gDZFX617UxCY,19910
|
|
291
|
-
claude_mpm/scripts/socketio_daemon_hardened.py,sha256=P0xP1kUuCfmeJ9mdxwXoNOYekz-7utjdX50cI0Vm2eg,32958
|
|
292
|
-
claude_mpm/scripts/socketio_daemon_wrapper.py,sha256=XHpW9lit9oXoOKgiaCXoQMOcoP5xK5B5lSTyTgcNw-A,2965
|
|
293
|
-
claude_mpm/scripts/socketio_server_manager.py,sha256=42Wm_ZTw1REDPWDpx5jk2W4J6_uAoVqWb65movUaHG0,13713
|
|
294
291
|
claude_mpm/scripts/start_activity_logging.py,sha256=1G9bFYiBSkpxSRXyKht73nL5gH-4zwukLutWWKAipGg,2869
|
|
295
292
|
claude_mpm/services/__init__.py,sha256=VMyi1cHDrnNJtABrRC0YKU-j9GcXZnTgxGN8bbI9E2I,7478
|
|
296
293
|
claude_mpm/services/agent_capabilities_service.py,sha256=uWSI7mTZvlJAYjDnyKUPczRX5uTXN0KgUp0_1J-Qsrs,10759
|
|
@@ -334,7 +331,7 @@ claude_mpm/services/agents/deployment/agent_operation_service.py,sha256=wPoGYf3F
|
|
|
334
331
|
claude_mpm/services/agents/deployment/agent_record_service.py,sha256=0v-tWJV-AczLXPet1oqlY_fepIj4qa3l_aZMjpDXSN8,14040
|
|
335
332
|
claude_mpm/services/agents/deployment/agent_restore_handler.py,sha256=YDPVY4m_4l5wSFq9fxsTqm0ixX8AeTyzERh-PtabuUY,3101
|
|
336
333
|
claude_mpm/services/agents/deployment/agent_state_service.py,sha256=yjuVG-rwyXBS0T8yKfrx1QTOSmfB_Ejvm-0QLjBNDDI,11772
|
|
337
|
-
claude_mpm/services/agents/deployment/agent_template_builder.py,sha256=
|
|
334
|
+
claude_mpm/services/agents/deployment/agent_template_builder.py,sha256=UKR0za1fVubmPW4BvGTVkEn3u7g6w3JSih63zqNZly4,34790
|
|
338
335
|
claude_mpm/services/agents/deployment/agent_validator.py,sha256=Yyf5zG8pFYIvmRzghPZSr8Ka2p_uVe9MVN8bmtucNSc,12737
|
|
339
336
|
claude_mpm/services/agents/deployment/agent_version_manager.py,sha256=Q2COYmnWDvDxsBh_ikN9Govk3o8Dy1T0X-rioMpUsis,11189
|
|
340
337
|
claude_mpm/services/agents/deployment/agent_versioning.py,sha256=cDkSv12m6_XjhhD6Tr_tmcnvx4RrXhMAKpjm6E_fKyQ,989
|
|
@@ -413,12 +410,11 @@ claude_mpm/services/cli/agent_dependency_service.py,sha256=mu6RJIjEe_NrMzil3Wm6C
|
|
|
413
410
|
claude_mpm/services/cli/agent_listing_service.py,sha256=8lzK7HKF7SsdlwA3DkhtsL6cFlHvbEwFxSkp2V5rYHc,15957
|
|
414
411
|
claude_mpm/services/cli/agent_output_formatter.py,sha256=FcJ18m3CyeFr_wotJfEmIURHeZ71eomqO_vK7wsPWsM,20521
|
|
415
412
|
claude_mpm/services/cli/agent_validation_service.py,sha256=rf3ztGQJ9tKpAIobE5MAFNvft-GZkB5elpSAgdQRh3I,21728
|
|
416
|
-
claude_mpm/services/cli/dashboard_launcher.py,sha256=PCqk9e6E7SHrKmjrXZJ5Ak8yuB7ntxea8RRmGRW1834,14453
|
|
417
413
|
claude_mpm/services/cli/memory_crud_service.py,sha256=ciN9Pl_12iDAqF9zPBWOzu-iXiAzpy3CiIwXRoeB5m0,22645
|
|
418
414
|
claude_mpm/services/cli/memory_output_formatter.py,sha256=nbf7VsjGvH4e9fLv9c7PzjuO9COZhbK5P2fNZ79055w,24783
|
|
419
415
|
claude_mpm/services/cli/session_manager.py,sha256=rla_Stbcvt93wa9G9MCMu9UqB3FLGqlPt_eN5lQb3Gg,16599
|
|
420
|
-
claude_mpm/services/cli/socketio_manager.py,sha256=NOhb6yTB0mISdExojydYk28DcPaPwguD_IuAJDoTidw,20638
|
|
421
416
|
claude_mpm/services/cli/startup_checker.py,sha256=efhuvu8ns5G16jcQ0nQZKVddmD2AktUEdlvjNcXjAuk,12232
|
|
417
|
+
claude_mpm/services/cli/unified_dashboard_manager.py,sha256=RzUSBwyUmUcgF1quHich1xQsQSvtWknPexeOicEeHzE,11481
|
|
422
418
|
claude_mpm/services/communication/__init__.py,sha256=b4qc7_Rqy4DE9q7BAUlfUZjoYG4uimAyUnE0irPcXyU,560
|
|
423
419
|
claude_mpm/services/core/__init__.py,sha256=evEayLlBqJvxMZhrhuK6aagXmNrKGSj8Jm9OOxKzqvU,2195
|
|
424
420
|
claude_mpm/services/core/base.py,sha256=iA-F7DgGp-FJIMvQTiHQ68RkG_k-AtUWlArJPMw6ZPk,7297
|
|
@@ -433,7 +429,6 @@ claude_mpm/services/core/interfaces/agent.py,sha256=EaPYn6k9HjB2DRTiZIMJwEIBABZF
|
|
|
433
429
|
claude_mpm/services/core/interfaces/communication.py,sha256=evwtLbYCFa3Zb8kEfL10LOBVdwP4-n3a3wa7NqIHmKQ,8887
|
|
434
430
|
claude_mpm/services/core/interfaces/infrastructure.py,sha256=eLtr_dFhA3Ux3mPOV_4DbWhGjHpfpGnj6xOhfQcgZGk,10037
|
|
435
431
|
claude_mpm/services/core/interfaces/service.py,sha256=hNfHXe45LcPCp_dToOmZCfnUZBF5axMf_TdxqCSm2-I,11536
|
|
436
|
-
claude_mpm/services/dashboard/stable_server.py,sha256=0nd87kJRbSW0YXDzEpAn3f7v48wgG-dppZk9JWFlk-E,39076
|
|
437
432
|
claude_mpm/services/diagnostics/__init__.py,sha256=WTRucANR9EwNi53rotjkeE4k75s18RjHJ8s1BfBj7ic,614
|
|
438
433
|
claude_mpm/services/diagnostics/diagnostic_runner.py,sha256=cpCZ7JBvRIpGEchiwYsojmiGaI99Wf-hGxk8eem7xXQ,9164
|
|
439
434
|
claude_mpm/services/diagnostics/doctor_reporter.py,sha256=Z8hYLqUbGC02gL7nX9kZKbLWRzOmTORRINfCr7EHbBI,10537
|
|
@@ -534,6 +529,17 @@ claude_mpm/services/memory/router.py,sha256=FHhoRV5Q-UwG5eUkKvF4d0Bgz5qsEiEsLx1Q
|
|
|
534
529
|
claude_mpm/services/memory/cache/__init__.py,sha256=6M6-P8ParyxX8vOgp_IxHgLMvacrQHPnXeZIvwJKtw8,351
|
|
535
530
|
claude_mpm/services/memory/cache/shared_prompt_cache.py,sha256=crnYPUT8zcS7TvoE1vW7pyaf4T77N5rJ1wUf_YQ2vvo,28704
|
|
536
531
|
claude_mpm/services/memory/cache/simple_cache.py,sha256=qsTjbcsPxj-kNfaod9VN_uE5NioIwpfkUin_mMVUJCg,10218
|
|
532
|
+
claude_mpm/services/monitor/__init__.py,sha256=X7gxSLUm9Fg_zEsX6LtCHP2ipF0qj6Emkun20h2So7g,745
|
|
533
|
+
claude_mpm/services/monitor/daemon.py,sha256=YRwAZrunZ1jE-P61gNCkFLEys7mTkJLGBxUIH8H6upU,7830
|
|
534
|
+
claude_mpm/services/monitor/event_emitter.py,sha256=D9o38lOFkzJx40RE0igvFVdAi1w5WqV_09Rz7nCjWdI,9609
|
|
535
|
+
claude_mpm/services/monitor/server.py,sha256=i2mynduUMNAXU0h_SSz-cx7LaBaLrkVPgtGvKXGhQFE,16008
|
|
536
|
+
claude_mpm/services/monitor/handlers/__init__.py,sha256=rxPCb1jc4v0-ODRK4tTzO_IxWLlaG0d6ghF8yJgVvxw,656
|
|
537
|
+
claude_mpm/services/monitor/handlers/code_analysis.py,sha256=mHyI27Wp6WVmUBc0m0i991ogyFZBTvkrfR7Kf3EAk5U,11474
|
|
538
|
+
claude_mpm/services/monitor/handlers/dashboard.py,sha256=uGBhb-6RG6u4WLipUXgdx7RCW-vb_qek5dIfHIwAC7o,9805
|
|
539
|
+
claude_mpm/services/monitor/handlers/hooks.py,sha256=s9CVlDLd-onH6WCOPeN06UjpEYVfuGjHw_icz220K_M,16533
|
|
540
|
+
claude_mpm/services/monitor/management/__init__.py,sha256=mxaEFRgvvgV85gUpXu_DsnHtywihdP14EisvISAVZuQ,525
|
|
541
|
+
claude_mpm/services/monitor/management/health.py,sha256=Wm92Cli_4cWD6B89KX_CdpAvvevuEaGB8Ah59ILhFww,3772
|
|
542
|
+
claude_mpm/services/monitor/management/lifecycle.py,sha256=T7-NF1vous250B7gkEEuaKzzxkhnhn4M3vlXRadbOjE,9082
|
|
537
543
|
claude_mpm/services/project/__init__.py,sha256=IUclN1L7ChHCNya7PJiVxu4nttxsrj3WRIpwyA1A_hw,512
|
|
538
544
|
claude_mpm/services/project/analyzer.py,sha256=VHlLrP8-S5gr12w4Yzs7-6d7LWdJKISHPCFSG7SDiQU,38434
|
|
539
545
|
claude_mpm/services/project/analyzer_refactored.py,sha256=USYEdPAhSoGPqZCpaT89Dw6ElFW_L1yXSURheQjAhLA,18243
|
|
@@ -555,7 +561,6 @@ claude_mpm/services/socketio/dashboard_server.py,sha256=qgLJh9ThYaQXMO_1qSq-jDc5
|
|
|
555
561
|
claude_mpm/services/socketio/event_normalizer.py,sha256=TlhZbLgb6fSFNXNAZEEbGxHOqgTIB2S9WtEGJEV7Olw,28402
|
|
556
562
|
claude_mpm/services/socketio/migration_utils.py,sha256=1pK_zGZ8Pd57pCg1O-3gKT8i7_fjEKZ377hxOMGUPQQ,11963
|
|
557
563
|
claude_mpm/services/socketio/monitor_client.py,sha256=50EoobdsCOY3OhqgYinrVZfZXH-x_G-qVtDPrfZlTNY,12707
|
|
558
|
-
claude_mpm/services/socketio/monitor_server.py,sha256=FefKteMJ_Gke6KG6e2U03p-vuxRaeLc7KeNEdg9pZYE,17751
|
|
559
564
|
claude_mpm/services/socketio/handlers/__init__.py,sha256=lGYFfn5P1eB6ri3HAPuDJMfdCfHIw6mQEbweAihNuHY,873
|
|
560
565
|
claude_mpm/services/socketio/handlers/base.py,sha256=DjUODCOLTQSsC_-NP9yr-8g77arawmsRrM5KC06aDmw,4845
|
|
561
566
|
claude_mpm/services/socketio/handlers/code_analysis.py,sha256=BmcJiygXaCVjVJndE-GFi4eN7_b8v7mqScddMTj5DUk,26271
|
|
@@ -591,7 +596,7 @@ claude_mpm/storage/__init__.py,sha256=DXnmee6iGqC6ctFLW7_Ty1cVCjYDFuCMkwO4EV0i25
|
|
|
591
596
|
claude_mpm/storage/state_storage.py,sha256=1fFqkFy63T32JQvhUdVBNhaLQyUlkq4unjeyl0Z6j8I,16865
|
|
592
597
|
claude_mpm/tools/__init__.py,sha256=T3GuCYNAHtjVcKCeivY674PaDm48WX96AriQfTKUknY,347
|
|
593
598
|
claude_mpm/tools/__main__.py,sha256=MKDuxFuujqD5FZcLTqniDNQ2BI8yg5fDSLU3ElV6m6U,5709
|
|
594
|
-
claude_mpm/tools/code_tree_analyzer.py,sha256=
|
|
599
|
+
claude_mpm/tools/code_tree_analyzer.py,sha256=JCr8TshReNKM5Qoi8JicrcpHrOR_bjYuNKqoZsZuiwg,64556
|
|
595
600
|
claude_mpm/tools/code_tree_builder.py,sha256=gwnsFO5ajs55UzX3SU34OMZBwhjouruQhGdQ3fJHjeA,18126
|
|
596
601
|
claude_mpm/tools/code_tree_events.py,sha256=ypUmxQRUpxQt2LQfXV_qpdL42KNvLO-K5XstxZIj9-w,13277
|
|
597
602
|
claude_mpm/tools/socketio_debug.py,sha256=H0mKHO6EIYqCVm4YU-SJ4Cw8ssA7VqJ3vU7y6eF7brk,22212
|
|
@@ -615,9 +620,9 @@ claude_mpm/utils/subprocess_utils.py,sha256=zgiwLqh_17WxHpySvUPH65pb4bzIeUGOAYUJ
|
|
|
615
620
|
claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
|
|
616
621
|
claude_mpm/validation/agent_validator.py,sha256=3Lo6LK-Mw9IdnL_bd3zl_R6FkgSVDYKUUM7EeVVD3jc,20865
|
|
617
622
|
claude_mpm/validation/frontmatter_validator.py,sha256=u8g4Eyd_9O6ugj7Un47oSGh3kqv4wMkuks2i_CtWRvM,7028
|
|
618
|
-
claude_mpm-4.2.
|
|
619
|
-
claude_mpm-4.2.
|
|
620
|
-
claude_mpm-4.2.
|
|
621
|
-
claude_mpm-4.2.
|
|
622
|
-
claude_mpm-4.2.
|
|
623
|
-
claude_mpm-4.2.
|
|
623
|
+
claude_mpm-4.2.11.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
|
|
624
|
+
claude_mpm-4.2.11.dist-info/METADATA,sha256=bOfT109kHO6oXl8vnKSjnAw59js6kRdhHUpG5-2f3pg,13777
|
|
625
|
+
claude_mpm-4.2.11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
626
|
+
claude_mpm-4.2.11.dist-info/entry_points.txt,sha256=FDPZgz8JOvD-6iuXY2l9Zbo9zYVRuE4uz4Qr0vLeGOk,471
|
|
627
|
+
claude_mpm-4.2.11.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
|
|
628
|
+
claude_mpm-4.2.11.dist-info/RECORD,,
|
|
@@ -1,233 +0,0 @@
|
|
|
1
|
-
"""Socket.IO monitoring functionality for run commands.
|
|
2
|
-
|
|
3
|
-
This module provides Socket.IO server management and monitoring dashboard functionality.
|
|
4
|
-
Extracted from run.py to reduce complexity and improve maintainability.
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
import os
|
|
8
|
-
import subprocess
|
|
9
|
-
import sys
|
|
10
|
-
import webbrowser
|
|
11
|
-
|
|
12
|
-
from ...core.unified_paths import get_package_root
|
|
13
|
-
from ...services.port_manager import PortManager
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class SocketIOMonitor:
|
|
17
|
-
"""Handles Socket.IO monitoring and server management."""
|
|
18
|
-
|
|
19
|
-
def __init__(self, logger):
|
|
20
|
-
"""Initialize the Socket.IO monitor."""
|
|
21
|
-
self.logger = logger
|
|
22
|
-
|
|
23
|
-
def launch_monitor(self, port):
|
|
24
|
-
"""
|
|
25
|
-
Launch the Socket.IO monitoring dashboard using static HTML file.
|
|
26
|
-
|
|
27
|
-
Returns:
|
|
28
|
-
tuple: (success: bool, browser_opened: bool)
|
|
29
|
-
"""
|
|
30
|
-
try:
|
|
31
|
-
# Verify Socket.IO dependencies are available
|
|
32
|
-
try:
|
|
33
|
-
import aiohttp
|
|
34
|
-
import engineio
|
|
35
|
-
import socketio
|
|
36
|
-
|
|
37
|
-
self.logger.debug("Socket.IO dependencies verified")
|
|
38
|
-
except ImportError as e:
|
|
39
|
-
self.logger.error(f"Socket.IO dependencies not available: {e}")
|
|
40
|
-
print(f"❌ Socket.IO dependencies missing: {e}")
|
|
41
|
-
print(" This is unexpected - dependency installation may have failed.")
|
|
42
|
-
return False, False
|
|
43
|
-
|
|
44
|
-
print("🚀 Setting up Socket.IO monitor...")
|
|
45
|
-
self.logger.info(f"Launching Socket.IO monitor (requested port: {port})")
|
|
46
|
-
|
|
47
|
-
# First, check if there's already a running SocketIO server
|
|
48
|
-
port_manager = PortManager()
|
|
49
|
-
port_manager.cleanup_dead_instances()
|
|
50
|
-
active_instances = port_manager.list_active_instances()
|
|
51
|
-
|
|
52
|
-
if active_instances:
|
|
53
|
-
# Use the first active instance (prefer port 8765 if available)
|
|
54
|
-
socketio_port = None
|
|
55
|
-
for instance in active_instances:
|
|
56
|
-
if instance.get("port") == 8765:
|
|
57
|
-
socketio_port = 8765
|
|
58
|
-
break
|
|
59
|
-
if not socketio_port:
|
|
60
|
-
socketio_port = active_instances[0].get("port")
|
|
61
|
-
|
|
62
|
-
print(f"🔍 Found existing SocketIO server on port {socketio_port}")
|
|
63
|
-
server_running = True
|
|
64
|
-
else:
|
|
65
|
-
# No existing server, use requested port
|
|
66
|
-
socketio_port = port
|
|
67
|
-
server_running = self.check_server_running(socketio_port)
|
|
68
|
-
|
|
69
|
-
# Use HTTP URL to access dashboard from Socket.IO server
|
|
70
|
-
dashboard_url = f"http://localhost:{socketio_port}"
|
|
71
|
-
|
|
72
|
-
if server_running:
|
|
73
|
-
print(f"✅ Socket.IO server already running on port {socketio_port}")
|
|
74
|
-
print(f"📊 Dashboard: {dashboard_url}")
|
|
75
|
-
|
|
76
|
-
# Open browser with static HTML file
|
|
77
|
-
try:
|
|
78
|
-
# Check if we should suppress browser opening (for tests)
|
|
79
|
-
if os.environ.get("CLAUDE_MPM_NO_BROWSER") != "1":
|
|
80
|
-
print("🌐 Opening dashboard in browser...")
|
|
81
|
-
self.open_in_browser_tab(dashboard_url)
|
|
82
|
-
self.logger.info(f"Socket.IO dashboard opened: {dashboard_url}")
|
|
83
|
-
else:
|
|
84
|
-
print("🌐 Browser opening suppressed (CLAUDE_MPM_NO_BROWSER=1)")
|
|
85
|
-
self.logger.info(
|
|
86
|
-
"Browser opening suppressed by environment variable"
|
|
87
|
-
)
|
|
88
|
-
return True, True
|
|
89
|
-
except Exception as e:
|
|
90
|
-
self.logger.warning(f"Failed to open browser: {e}")
|
|
91
|
-
print("⚠️ Could not open browser automatically")
|
|
92
|
-
print(f"📊 Please open manually: {dashboard_url}")
|
|
93
|
-
return True, False
|
|
94
|
-
else:
|
|
95
|
-
# Start standalone Socket.IO server
|
|
96
|
-
print("🔧 Starting Socket.IO server...")
|
|
97
|
-
server_started = self.start_standalone_server(socketio_port)
|
|
98
|
-
|
|
99
|
-
if server_started:
|
|
100
|
-
print("✅ Socket.IO server started successfully")
|
|
101
|
-
print(f"📊 Dashboard: {dashboard_url}")
|
|
102
|
-
|
|
103
|
-
# Open browser
|
|
104
|
-
try:
|
|
105
|
-
if os.environ.get("CLAUDE_MPM_NO_BROWSER") != "1":
|
|
106
|
-
print("🌐 Opening dashboard in browser...")
|
|
107
|
-
self.open_in_browser_tab(dashboard_url)
|
|
108
|
-
self.logger.info(
|
|
109
|
-
f"Socket.IO dashboard opened: {dashboard_url}"
|
|
110
|
-
)
|
|
111
|
-
else:
|
|
112
|
-
print(
|
|
113
|
-
"🌐 Browser opening suppressed (CLAUDE_MPM_NO_BROWSER=1)"
|
|
114
|
-
)
|
|
115
|
-
return True, True
|
|
116
|
-
except Exception as e:
|
|
117
|
-
self.logger.warning(f"Failed to open browser: {e}")
|
|
118
|
-
print("⚠️ Could not open browser automatically")
|
|
119
|
-
print(f"📊 Please open manually: {dashboard_url}")
|
|
120
|
-
return True, False
|
|
121
|
-
else:
|
|
122
|
-
print("❌ Failed to start Socket.IO server")
|
|
123
|
-
print("💡 Troubleshooting tips:")
|
|
124
|
-
print(f" - Check if port {socketio_port} is already in use")
|
|
125
|
-
print(
|
|
126
|
-
" - Verify Socket.IO dependencies: pip install python-socketio aiohttp"
|
|
127
|
-
)
|
|
128
|
-
print(" - Try a different port with --websocket-port")
|
|
129
|
-
return False, False
|
|
130
|
-
|
|
131
|
-
except Exception as e:
|
|
132
|
-
self.logger.error(f"Failed to launch Socket.IO monitor: {e}")
|
|
133
|
-
print(f"❌ Failed to launch Socket.IO monitor: {e}")
|
|
134
|
-
return False, False
|
|
135
|
-
|
|
136
|
-
def check_server_running(self, port):
|
|
137
|
-
"""Check if a Socket.IO server is running on the specified port."""
|
|
138
|
-
try:
|
|
139
|
-
import socket
|
|
140
|
-
import urllib.error
|
|
141
|
-
import urllib.request
|
|
142
|
-
|
|
143
|
-
# First, do a basic TCP connection check
|
|
144
|
-
try:
|
|
145
|
-
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
|
|
146
|
-
s.settimeout(2.0)
|
|
147
|
-
result = s.connect_ex(("127.0.0.1", port))
|
|
148
|
-
if result != 0:
|
|
149
|
-
self.logger.debug(f"TCP connection to port {port} failed")
|
|
150
|
-
return False
|
|
151
|
-
except Exception as e:
|
|
152
|
-
self.logger.debug(f"TCP socket check failed for port {port}: {e}")
|
|
153
|
-
return False
|
|
154
|
-
|
|
155
|
-
# If TCP connection succeeds, try HTTP health check
|
|
156
|
-
try:
|
|
157
|
-
response = urllib.request.urlopen(
|
|
158
|
-
f"http://localhost:{port}/status", timeout=5
|
|
159
|
-
)
|
|
160
|
-
if response.getcode() == 200:
|
|
161
|
-
self.logger.debug(
|
|
162
|
-
f"✅ Socket.IO server health check passed on port {port}"
|
|
163
|
-
)
|
|
164
|
-
return True
|
|
165
|
-
except Exception as e:
|
|
166
|
-
self.logger.debug(f"HTTP health check failed for port {port}: {e}")
|
|
167
|
-
|
|
168
|
-
except Exception as e:
|
|
169
|
-
self.logger.debug(
|
|
170
|
-
f"❌ Unexpected error checking Socket.IO server on port {port}: {e}"
|
|
171
|
-
)
|
|
172
|
-
|
|
173
|
-
return False
|
|
174
|
-
|
|
175
|
-
def start_standalone_server(self, port):
|
|
176
|
-
"""Start a standalone Socket.IO server using the Python daemon."""
|
|
177
|
-
try:
|
|
178
|
-
daemon_script = get_package_root() / "scripts" / "socketio_daemon.py"
|
|
179
|
-
if not daemon_script.exists():
|
|
180
|
-
self.logger.error(f"Daemon script not found: {daemon_script}")
|
|
181
|
-
return False
|
|
182
|
-
|
|
183
|
-
# Start the daemon
|
|
184
|
-
result = subprocess.run(
|
|
185
|
-
[sys.executable, str(daemon_script), "start", "--port", str(port)],
|
|
186
|
-
capture_output=True,
|
|
187
|
-
text=True,
|
|
188
|
-
timeout=30,
|
|
189
|
-
check=False,
|
|
190
|
-
)
|
|
191
|
-
|
|
192
|
-
if result.returncode == 0:
|
|
193
|
-
self.logger.info(
|
|
194
|
-
f"Socket.IO daemon started successfully on port {port}"
|
|
195
|
-
)
|
|
196
|
-
return True
|
|
197
|
-
self.logger.error(f"Failed to start Socket.IO daemon: {result.stderr}")
|
|
198
|
-
return False
|
|
199
|
-
|
|
200
|
-
except Exception as e:
|
|
201
|
-
self.logger.error(f"Failed to start standalone Socket.IO server: {e}")
|
|
202
|
-
return False
|
|
203
|
-
|
|
204
|
-
def open_in_browser_tab(self, url):
|
|
205
|
-
"""Open URL in browser, attempting to reuse existing tabs when possible."""
|
|
206
|
-
try:
|
|
207
|
-
# Try different methods based on platform
|
|
208
|
-
import platform
|
|
209
|
-
|
|
210
|
-
system = platform.system().lower()
|
|
211
|
-
|
|
212
|
-
if system == "darwin": # macOS
|
|
213
|
-
try:
|
|
214
|
-
# Try to open in existing tab
|
|
215
|
-
subprocess.run(["open", "-g", url], check=True, timeout=5)
|
|
216
|
-
return
|
|
217
|
-
except Exception:
|
|
218
|
-
pass
|
|
219
|
-
elif system == "linux":
|
|
220
|
-
try:
|
|
221
|
-
# Try xdg-open
|
|
222
|
-
subprocess.run(["xdg-open", url], check=True, timeout=5)
|
|
223
|
-
return
|
|
224
|
-
except Exception:
|
|
225
|
-
pass
|
|
226
|
-
|
|
227
|
-
# Fallback to standard webbrowser
|
|
228
|
-
webbrowser.open(url)
|
|
229
|
-
|
|
230
|
-
except Exception as e:
|
|
231
|
-
self.logger.warning(f"Browser opening failed: {e}")
|
|
232
|
-
# Final fallback
|
|
233
|
-
webbrowser.open(url)
|