tide-commander 1.199.0 → 1.199.2
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.
- package/CHANGELOG.md +14 -0
- package/dist/assets/{AudioPlayer-CusBq3ON.js → AudioPlayer-XaWiU7f4.js} +1 -1
- package/dist/assets/{BossLogsModal-B1PLdne_.js → BossLogsModal-1tI-leZQ.js} +1 -1
- package/dist/assets/{BossSpawnModal-DQN_2lzh.js → BossSpawnModal-CRoChH0J.js} +1 -1
- package/dist/assets/{ControlsModal-D4JsU4VU.js → ControlsModal-Cu7kwhct.js} +1 -1
- package/dist/assets/{DockerLogsModal-BuCiJ02l.js → DockerLogsModal-DFAiOsWH.js} +1 -1
- package/dist/assets/{EmbeddedEditor-CBaRvdh1.js → EmbeddedEditor-hnSknX5L.js} +1 -1
- package/dist/assets/{FcStdViewer-CpJhmVIt.js → FcStdViewer-B_cbRz1w.js} +1 -1
- package/dist/assets/{GcodeViewer-B8BHZMmG.js → GcodeViewer-CFgwEZ6g.js} +1 -1
- package/dist/assets/{GlbViewer-DdVYw2Jh.js → GlbViewer-14WSSXX7.js} +1 -1
- package/dist/assets/{GmailOAuthSetup-Cj0r8z52.js → GmailOAuthSetup-waw2142C.js} +1 -1
- package/dist/assets/{GoogleOAuthSetup-BO0udRUZ.js → GoogleOAuthSetup-Bo59grtp.js} +1 -1
- package/dist/assets/{IframeModal-CecB4A27.js → IframeModal-B3M77grB.js} +1 -1
- package/dist/assets/{IntegrationsPanel-BVnzRrTb.js → IntegrationsPanel-BLHrC0GX.js} +2 -2
- package/dist/assets/{LogViewerModal-CNbfgDQK.js → LogViewerModal-CitlmDgQ.js} +1 -1
- package/dist/assets/{MonitoringModal-CUXXMqLv.js → MonitoringModal-BcKOCSRM.js} +1 -1
- package/dist/assets/{OrbitControls-DS7gPhsZ.js → OrbitControls-ANLmgNeR.js} +1 -1
- package/dist/assets/{PM2LogsModal-DFAuRDwm.js → PM2LogsModal-DrHpuMNf.js} +1 -1
- package/dist/assets/{RestoreArchivedAreaModal-DT5-U0A8.js → RestoreArchivedAreaModal-DcD3vdUJ.js} +1 -1
- package/dist/assets/{Scene2DCanvas-DqakJMdS.js → Scene2DCanvas-DKUcFYZW.js} +1 -1
- package/dist/assets/SceneManager-DPojKMM-.js +104 -0
- package/dist/assets/{SkillsPanel-1hYjREqo.js → SkillsPanel-CUW0prbh.js} +1 -1
- package/dist/assets/{SlackMultiInstanceSetup-C6EtUfP8.js → SlackMultiInstanceSetup-YFYeZ94t.js} +1 -1
- package/dist/assets/{SpawnModal-BmMZFOUj.js → SpawnModal-DPvq-R5b.js} +1 -1
- package/dist/assets/{StatisticsModal-mmqE6JaF.js → StatisticsModal-Dt-Hof51.js} +1 -1
- package/dist/assets/{StlViewer-D0XChi1U.js → StlViewer-GyyomEax.js} +1 -1
- package/dist/assets/{SubordinateAssignmentModal-CBISWK7c.js → SubordinateAssignmentModal-ahzGBjr4.js} +1 -1
- package/dist/assets/{ThreeAreaSelector-C_7zwy_Q.js → ThreeAreaSelector-Bj_mL6NG.js} +1 -1
- package/dist/assets/{ThreeViewShortcuts-DZZmjQAV.js → ThreeViewShortcuts-CKtE3yZV.js} +1 -1
- package/dist/assets/{TriggerManagerPanel-Bwd5-VGg.js → TriggerManagerPanel-DtdbOk9B.js} +1 -1
- package/dist/assets/{VideoPlayer-BuFPsPNu.js → VideoPlayer-Crq-MwPS.js} +1 -1
- package/dist/assets/{WorkflowEditorPanel-DxQfrs71.js → WorkflowEditorPanel-CitR9Em3.js} +1 -1
- package/dist/assets/{abnfDiagram-VRR7QNED-AhR0vtDs.js → abnfDiagram-VRR7QNED-QFcuJYPe.js} +1 -1
- package/dist/assets/{arc-CTR1mrNz.js → arc-CLuSzQ4E.js} +1 -1
- package/dist/assets/{architectureDiagram-ZJ3FMSHR-DrsB_-NW.js → architectureDiagram-ZJ3FMSHR-DlhVck93.js} +1 -1
- package/dist/assets/{area-logos-D_dodLqh.js → area-logos-DYARiYqI.js} +1 -1
- package/dist/assets/{blockDiagram-677ZJIJ3-Bf6BktPD.js → blockDiagram-677ZJIJ3-CJwOmsfj.js} +1 -1
- package/dist/assets/{c4Diagram-LMCZKHZV--UrsSHrg.js → c4Diagram-LMCZKHZV-OsgCNPWJ.js} +1 -1
- package/dist/assets/channel-cpl_NpAy.js +1 -0
- package/dist/assets/{chunk-2Q5K7J3B-DajcrDU0.js → chunk-2Q5K7J3B-KG-L7vvm.js} +1 -1
- package/dist/assets/{chunk-32BRIVSS-BoJToPN6.js → chunk-32BRIVSS-BXGbqO9v.js} +1 -1
- package/dist/assets/{chunk-5VM5RSS4-CWyIsEjs.js → chunk-5VM5RSS4-BWXkm8f0.js} +1 -1
- package/dist/assets/{chunk-EX3LRPZG-BxQt59EY.js → chunk-EX3LRPZG-7-8ulJ19.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-CcltxnxE.js → chunk-JWPE2WC7-mkwFN5xu.js} +1 -1
- package/dist/assets/{chunk-MOJQB5TN-CoFz0cis.js → chunk-MOJQB5TN-WEfWznKE.js} +1 -1
- package/dist/assets/{chunk-RYQCIY6F-CqD5SIAs.js → chunk-RYQCIY6F-ByP5odu4.js} +1 -1
- package/dist/assets/{chunk-V7JOEXUC-B38vYRK3.js → chunk-V7JOEXUC-yWHmp1L1.js} +1 -1
- package/dist/assets/{chunk-VR4S4FIN-CVwpBl0T.js → chunk-VR4S4FIN-DHbZaHzt.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-DznOU5hd.js → chunk-XXDRQBXY-SNa-Wh3U.js} +1 -1
- package/dist/assets/classDiagram-OUVF2IWQ-D_lsO4mm.js +1 -0
- package/dist/assets/classDiagram-v2-EOCWNBFH-D_lsO4mm.js +1 -0
- package/dist/assets/{cose-bilkent-JH36ORCC-B1uTqWwQ.js → cose-bilkent-JH36ORCC-CyxHYUhP.js} +1 -1
- package/dist/assets/{cynefin-VYW2F7L2-DgpqdGRT.js → cynefin-VYW2F7L2-BvwjSDiQ.js} +1 -1
- package/dist/assets/{cynefinDiagram-TSTJHNR4-Ld74Dvow.js → cynefinDiagram-TSTJHNR4-C8doInhn.js} +1 -1
- package/dist/assets/{dagre-VKFMJZFB-DAp2Br8X.js → dagre-VKFMJZFB-BNDcupek.js} +1 -1
- package/dist/assets/{diagram-FQU43EPY-CaMUb0eE.js → diagram-FQU43EPY-Bst0bBnQ.js} +1 -1
- package/dist/assets/{diagram-G47NLZAW-kTOq861A.js → diagram-G47NLZAW-CfEv0aTY.js} +1 -1
- package/dist/assets/{diagram-NH7WQ7WH-LWZrE7zu.js → diagram-NH7WQ7WH-B7MYvWXL.js} +1 -1
- package/dist/assets/{diagram-OA4YK3LP-Csm-frID.js → diagram-OA4YK3LP-BIzII0d2.js} +1 -1
- package/dist/assets/{diagram-WEI45ONY-BconZEMM.js → diagram-WEI45ONY-D5yd1HWr.js} +1 -1
- package/dist/assets/{ebnfDiagram-CCIWWBDH-Cr5xwAgl.js → ebnfDiagram-CCIWWBDH-gyhVYUos.js} +1 -1
- package/dist/assets/{erDiagram-Q63AITRT-76P2E9Q6.js → erDiagram-Q63AITRT-Duz-DwfE.js} +1 -1
- package/dist/assets/{flowDiagram-23GEKE2U-CciJAjTA.js → flowDiagram-23GEKE2U-CrnARkmw.js} +1 -1
- package/dist/assets/{ganttDiagram-NO4QXBWP-D7VgBp68.js → ganttDiagram-NO4QXBWP-D6cBteIN.js} +1 -1
- package/dist/assets/{gitGraphDiagram-IHSO6WYX-CxICR8Bg.js → gitGraphDiagram-IHSO6WYX-CMHfr_lR.js} +1 -1
- package/dist/assets/{index-Cd53q1WZ.js → index-2427ATYD.js} +3 -3
- package/dist/assets/{index-lQifR7XC.js → index-B1vOCcI-.js} +1 -1
- package/dist/assets/index-B5wHDczA.js +2 -0
- package/dist/assets/{index-BNsHVfai.js → index-CbMtvQTH.js} +1 -1
- package/dist/assets/{index-DzzLdCr9.js → index-D5O_0aq9.js} +1 -1
- package/dist/assets/{index-Bfmfqbw7.js → index-D5pIRxFm.js} +1 -1
- package/dist/assets/index-DJKuwqJG.js +2 -0
- package/dist/assets/{index-Dc4yP2fA.js → index-DeqoOoo6.js} +3 -3
- package/dist/assets/{index-Z0bYekBH.js → index-fiC5OXgR.js} +1 -1
- package/dist/assets/{infoDiagram-FWYZ7A6U-h-R7gGrP.js → infoDiagram-FWYZ7A6U-Mvk2Mpp3.js} +1 -1
- package/dist/assets/{ishikawaDiagram-FXEZZL3T-D1RbbiMz.js → ishikawaDiagram-FXEZZL3T-DXsaNDYg.js} +1 -1
- package/dist/assets/{journeyDiagram-5HDEW3XC-BnNUbZMI.js → journeyDiagram-5HDEW3XC-6QlK8xHN.js} +1 -1
- package/dist/assets/{kanban-definition-HUTT4EX6-kX3kneLI.js → kanban-definition-HUTT4EX6-D5EeRs07.js} +1 -1
- package/dist/assets/{linear-DC5X1tTJ.js → linear-D_aP9MD5.js} +1 -1
- package/dist/assets/main-B2ZLroL1.css +1 -0
- package/dist/assets/{main-Bb9H5jmt.js → main-Dk3qq80S.js} +156 -156
- package/dist/assets/{mermaid.core-BE33DHym.js → mermaid.core-CEculPxD.js} +4 -4
- package/dist/assets/{mindmap-definition-LN4V7U3C-CY3A4tSH.js → mindmap-definition-LN4V7U3C-Vjj9vgEN.js} +1 -1
- package/dist/assets/{pegDiagram-2B236MQR-B99ZSEym.js → pegDiagram-2B236MQR-B-AwbaoO.js} +1 -1
- package/dist/assets/{pieDiagram-ENE6RG2P-7PsmMteT.js → pieDiagram-ENE6RG2P-D5o1UYPK.js} +1 -1
- package/dist/assets/{quadrantDiagram-ABIIQ3AL-DjShiKUv.js → quadrantDiagram-ABIIQ3AL-Bl_Rbmz-.js} +1 -1
- package/dist/assets/{railroadDiagram-RFXS5EU6-B6KuCiHH.js → railroadDiagram-RFXS5EU6-CW-qy1dp.js} +1 -1
- package/dist/assets/{requirementDiagram-TGXJPOKE-k_7TCScw.js → requirementDiagram-TGXJPOKE-DGUQpy3K.js} +1 -1
- package/dist/assets/{sankeyDiagram-HTMAVEWB-D2YbTfpK.js → sankeyDiagram-HTMAVEWB-CUlWZH9G.js} +1 -1
- package/dist/assets/{sequenceDiagram-DBY2YBRQ-CuYh53OC.js → sequenceDiagram-DBY2YBRQ-CeDVJrbJ.js} +1 -1
- package/dist/assets/{sizeCapture-X5ZJPWSS-D4_qcFkr.js → sizeCapture-X5ZJPWSS-BGSL3ofq.js} +1 -1
- package/dist/assets/{stateDiagram-2N3HPSRC-DO9QVMBT.js → stateDiagram-2N3HPSRC-9A8tAPIu.js} +1 -1
- package/dist/assets/stateDiagram-v2-6OUMAXLB-DzVFFq0g.js +1 -0
- package/dist/assets/{swimlanes-5IMT3BWC-gMS-z6zh.js → swimlanes-5IMT3BWC-CipRR1uk.js} +2 -2
- package/dist/assets/swimlanesDiagram-G3AALYLV-XDQw-C4e.js +8 -0
- package/dist/assets/{timeline-definition-FHXFAJF6-CUmQCwOG.js → timeline-definition-FHXFAJF6-IgrCsFe-.js} +1 -1
- package/dist/assets/{vendor-three-CBPuP1jE.js → vendor-three-DYBBrXTx.js} +1 -1
- package/dist/assets/{vennDiagram-L72KCM5P-CIP-5b8u.js → vennDiagram-L72KCM5P-okSGsDy3.js} +1 -1
- package/dist/assets/{wardleyDiagram-EHGQE667-DlQqKMjr.js → wardleyDiagram-EHGQE667-G0RLggUt.js} +1 -1
- package/dist/assets/{web-DmAaMs-2.js → web-B5BfOO5C.js} +1 -1
- package/dist/assets/{web-D42BXPx5.js → web-BPOqvnJL.js} +1 -1
- package/dist/assets/{web-DVkGXGfI.js → web-Q8DwQW0W.js} +1 -1
- package/dist/assets/{xychartDiagram-FW5EYKEG-CekYCp3d.js → xychartDiagram-FW5EYKEG-DtVJEFyI.js} +1 -1
- package/dist/build-info.json +1 -1
- package/dist/index.html +3 -3
- package/dist/src/packages/server/app.js +26 -1
- package/dist/src/packages/server/claude/backend.js +5 -4
- package/dist/src/packages/server/claude/runner/stdout-pipeline.js +29 -30
- package/dist/src/packages/server/claude/runner/watchdog.js +2 -1
- package/dist/src/packages/server/claude/session-loader.js +141 -81
- package/dist/src/packages/server/data/index.js +35 -2
- package/dist/src/packages/server/routes/perf.js +50 -39
- package/dist/src/packages/server/services/git-watch-service.js +14 -2
- package/dist/src/packages/server/services/runtime-service.js +85 -39
- package/dist/src/packages/server/websocket/handler.js +33 -8
- package/dist/src/packages/server/websocket/listeners/runtime-listeners.js +5 -2
- package/package.json +3 -1
- package/dist/assets/SceneManager-htGN7YfA.js +0 -104
- package/dist/assets/channel-BkokQZXi.js +0 -1
- package/dist/assets/classDiagram-OUVF2IWQ-DibSrtP1.js +0 -1
- package/dist/assets/classDiagram-v2-EOCWNBFH-DibSrtP1.js +0 -1
- package/dist/assets/index-C8zT43_7.js +0 -2
- package/dist/assets/index-WhxnTPGa.js +0 -2
- package/dist/assets/main-CSv15YYo.css +0 -1
- package/dist/assets/stateDiagram-v2-6OUMAXLB-CekJ4qac.js +0 -1
- package/dist/assets/swimlanesDiagram-G3AALYLV-CfPVdXRk.js +0 -8
|
@@ -257,7 +257,14 @@ export function attachServer(server, wss) {
|
|
|
257
257
|
if (pathname === '/ws') {
|
|
258
258
|
// Auth check (verifyClient is not used in noServer mode)
|
|
259
259
|
if (isAuthEnabled() && !validateWebSocketAuth(request)) {
|
|
260
|
-
|
|
260
|
+
// Name the client: a stale tab / extension / device retrying every few
|
|
261
|
+
// seconds without a token is otherwise impossible to identify from the log.
|
|
262
|
+
const forwardedFor = request.headers['x-forwarded-for'];
|
|
263
|
+
const remote = (Array.isArray(forwardedFor) ? forwardedFor[0] : forwardedFor?.split(',')[0]?.trim())
|
|
264
|
+
|| request.socket.remoteAddress || 'unknown';
|
|
265
|
+
const origin = request.headers.origin || 'no-origin';
|
|
266
|
+
const userAgent = (request.headers['user-agent'] || 'no-ua').slice(0, 80);
|
|
267
|
+
log.log(`[WS] Connection rejected: invalid or missing auth token (from ${remote}, origin=${origin}, ua="${userAgent}")`);
|
|
261
268
|
socket.write('HTTP/1.1 401 Unauthorized\r\n\r\n');
|
|
262
269
|
socket.destroy();
|
|
263
270
|
return;
|
|
@@ -273,7 +280,24 @@ export function init(server) {
|
|
|
273
280
|
// Use noServer mode so we can manually route upgrade events.
|
|
274
281
|
// This allows the terminal proxy to handle /api/terminal/*/ws upgrades
|
|
275
282
|
// without the main WSS intercepting and rejecting them.
|
|
276
|
-
|
|
283
|
+
// permessage-deflate, negotiated per client (browsers and the Android
|
|
284
|
+
// WebView support it; clients that don't simply get uncompressed frames).
|
|
285
|
+
// Only frames >= 8 KB are compressed: streaming deltas/events stay cheap,
|
|
286
|
+
// while the connect handshake — agents_update (~365 KB with 180 agents),
|
|
287
|
+
// skills_update (~400 KB), custom_agent_classes_update (~140 KB) — shrinks
|
|
288
|
+
// 5-8x, which is what a phone re-downloads on every resume/reconnect.
|
|
289
|
+
// No context takeover keeps per-connection zlib memory flat. Escape hatch:
|
|
290
|
+
// TIDE_WS_COMPRESSION=0.
|
|
291
|
+
const wsCompression = process.env.TIDE_WS_COMPRESSION === '0'
|
|
292
|
+
? false
|
|
293
|
+
: {
|
|
294
|
+
threshold: 8 * 1024,
|
|
295
|
+
serverNoContextTakeover: true,
|
|
296
|
+
clientNoContextTakeover: true,
|
|
297
|
+
zlibDeflateOptions: { level: 3 },
|
|
298
|
+
concurrencyLimit: 4,
|
|
299
|
+
};
|
|
300
|
+
const wss = new WebSocketServer({ noServer: true, perMessageDeflate: wsCompression });
|
|
277
301
|
attachServer(server, wss);
|
|
278
302
|
wss.on('connection', (ws, request) => {
|
|
279
303
|
clients.add(ws);
|
|
@@ -370,13 +394,14 @@ export function init(server) {
|
|
|
370
394
|
gitWatchService.removeSocket(ws);
|
|
371
395
|
log.log(`Client disconnected (remaining: ${clients.size})`);
|
|
372
396
|
});
|
|
373
|
-
// Background sync – refreshes agent status after initial data is sent
|
|
397
|
+
// Background sync – refreshes agent status after initial data is sent.
|
|
398
|
+
// Any status flip it performs goes through agentService.updateAgent, whose
|
|
399
|
+
// 'updated' listener already broadcasts a per-agent `agent_updated` to this
|
|
400
|
+
// (now registered) socket — so no second full `agents_update` is needed.
|
|
401
|
+
// That resend was ~365 KB per connection with 180 agents, and on the
|
|
402
|
+
// client it triggered a full store.setAgents + another tool-history fetch.
|
|
374
403
|
if (!notifyOnly) {
|
|
375
|
-
runtimeService.syncAllAgentStatus().
|
|
376
|
-
if (ws.readyState === WebSocket.OPEN) {
|
|
377
|
-
ws.send(JSON.stringify({ type: 'agents_update', payload: agentService.getAllAgents() }));
|
|
378
|
-
}
|
|
379
|
-
}).catch(() => { });
|
|
404
|
+
runtimeService.syncAllAgentStatus().catch(() => { });
|
|
380
405
|
// PM2 polling pauses while no clients are connected — run one poll now
|
|
381
406
|
// so building status badges are fresh for this client.
|
|
382
407
|
buildingService.triggerPM2StatusPoll();
|
|
@@ -428,8 +428,11 @@ export function setupRuntimeListeners(ctx) {
|
|
|
428
428
|
});
|
|
429
429
|
});
|
|
430
430
|
runtimeService.on('output', (agentId, text, isStreaming, subagentName, uuid, outputMeta) => {
|
|
431
|
-
|
|
432
|
-
|
|
431
|
+
if (process.env.DEBUG) {
|
|
432
|
+
// Per-chunk trace (one line per streaming delta) — debug only.
|
|
433
|
+
const textPreview = text.slice(0, 80).replace(/\n/g, '\\n');
|
|
434
|
+
log.debug(`[OUTPUT] agent=${agentId.slice(0, 4)} streaming=${isStreaming} text="${textPreview}" uuid=${uuid || 'none'}`);
|
|
435
|
+
}
|
|
433
436
|
const payload = {
|
|
434
437
|
agentId,
|
|
435
438
|
text,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tide-commander",
|
|
3
|
-
"version": "1.199.
|
|
3
|
+
"version": "1.199.2",
|
|
4
4
|
"description": "Visual multi-agent orchestrator and manager for Claude Code with 3D/2D interface",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -77,6 +77,7 @@
|
|
|
77
77
|
"archiver": "^7.0.1",
|
|
78
78
|
"better-sqlite3": "^12.8.0",
|
|
79
79
|
"codemirror": "^6.0.2",
|
|
80
|
+
"compression": "^1.8.1",
|
|
80
81
|
"cors": "^2.8.5",
|
|
81
82
|
"docxtemplater": "^3.68.3",
|
|
82
83
|
"dotenv": "^17.2.3",
|
|
@@ -118,6 +119,7 @@
|
|
|
118
119
|
"@capacitor/cli": "^8.3.0",
|
|
119
120
|
"@capacitor/core": "^8.1.0",
|
|
120
121
|
"@types/archiver": "^7.0.0",
|
|
122
|
+
"@types/compression": "^1.8.1",
|
|
121
123
|
"@types/cors": "^2.8.19",
|
|
122
124
|
"@types/express": "^5.0.6",
|
|
123
125
|
"@types/node": "^25.0.9",
|