@hydra-acp/browser 0.1.47 → 0.1.48
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/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/server/ws-bridge.js +202 -33
- package/dist/server/ws-bridge.js.map +1 -1
- package/dist/ui/index.html +24 -17
- package/package.json +3 -3
package/dist/config.js
CHANGED
|
@@ -102,6 +102,7 @@ export function loadConfig(path = paths.configFile(), opts = {}) {
|
|
|
102
102
|
hydraWsUrl,
|
|
103
103
|
hydraToken,
|
|
104
104
|
permissionDisplayDelayMs: intVal(map, "PERMISSION_DELAY_MS", 500),
|
|
105
|
+
permissionNotifyDelayMs: intVal(map, "PERMISSION_NOTIFY_DELAY_MS", 15_000),
|
|
105
106
|
debug: bool(map, "DEBUG", false),
|
|
106
107
|
};
|
|
107
108
|
}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AA6CpD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AAExD,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;YACd,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,IACE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC1C,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC1C,CAAC;YACD,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAClC,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,OAAO,CACL,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,MAAM,CACxE,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,OAAO,CACL,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,MAAM,CACtE,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,KAAK,CACb,uDAAuD,OAAO,EAAE,CACjE,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,GAAwB,EAAE,GAAW,EAAE,QAAiB;IACpE,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,MAAM,CACb,GAAwB,EACxB,GAAW,EACX,QAAgB;IAEhB,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC3C,CAAC;AAED,SAAS,SAAS,CAAC,GAAwB,EAAE,GAAW;IACtD,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,CAAC;SACL,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AACzC,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAEzC,MAAM,UAAU,UAAU,CACxB,OAAe,KAAK,CAAC,UAAU,EAAE,EACjC,OAAmC,EAAE;IAErC,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IACrC,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,CAAC;QACH,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;IAC1E,CAAC;IACD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAE/B,MAAM,cAAc,GAClB,OAAO,CAAC,GAAG,CAAC,oBAAoB;QAChC,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAC3B,oBAAoB,mBAAmB,EAAE,CAAC;IAC5C,MAAM,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC9D,mEAAmE;IACnE,sEAAsE;IACtE,iEAAiE;IACjE,IAAI,CAAC,UAAU,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,8KAA8K,CAC/K,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAC5B,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;QACvB,WAAW,CAAC,cAAc,CAAC,CAAC;IAE9B,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC1C,IAAI,GAA0B,CAAC;IAC/B,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;QACtB,GAAG,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;IAC/D,CAAC;SAAM,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,WAAW;QACnD,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,cAAc,EAAE,oBAAoB,CAAC;QAC9D,GAAG;QACH,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtE,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,SAAS;QAC7D,YAAY,EAAE,SAAS,CAAC,GAAG,EAAE,uBAAuB,CAAC;QACrD,YAAY,EAAE,MAAM,CAAC,GAAG,EAAE,wBAAwB,EAAE,GAAG,GAAG,IAAI,CAAC;QAC/D,cAAc;QACd,UAAU;QACV,UAAU;QACV,wBAAwB,EAAE,MAAM,CAAC,GAAG,EAAE,qBAAqB,EAAE,GAAG,CAAC;QACjE,uBAAuB,EAAE,MAAM,CAAC,GAAG,EAAE,4BAA4B,EAAE,MAAM,CAAC;QAC1E,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC;KACjC,CAAC;AACJ,CAAC"}
|
package/dist/server/ws-bridge.js
CHANGED
|
@@ -4,9 +4,9 @@ import { UpstreamConnection, isNotification, isRequest, isResponse, runInitializ
|
|
|
4
4
|
import { COOKIE_NAME, parseCookies, } from "./auth.js";
|
|
5
5
|
import { checkStateChanging } from "../util/csrf.js";
|
|
6
6
|
import { HydraRestClient } from "../hydra/client.js";
|
|
7
|
-
import { hasSubscriptions } from "./push-store.js";
|
|
7
|
+
import { hasSubscriptions, sendPushToEndpoint } from "./push-store.js";
|
|
8
8
|
import { registerForPush } from "./turn-notify-callback.js";
|
|
9
|
-
import { clearConnection, setConnectionVisible } from "./session-visibility.js";
|
|
9
|
+
import { clearConnection, isSessionVisible, setConnectionVisible } from "./session-visibility.js";
|
|
10
10
|
const log = logger("ws-bridge");
|
|
11
11
|
const ALLOWED_BROWSER_REQUEST_METHODS = new Set([
|
|
12
12
|
"session/prompt",
|
|
@@ -49,6 +49,40 @@ const ALLOWED_BROWSER_NOTIFICATION_METHODS = new Set([
|
|
|
49
49
|
// daemon accepts the prompt, well before the turn itself finishes, so
|
|
50
50
|
// this only needs to outlast that brief window.
|
|
51
51
|
const OWN_PROMPT_GRACE_MS = 20_000;
|
|
52
|
+
// Entries replayed on a cold (uncursored) attach. The browser's replay is
|
|
53
|
+
// effectively uninterruptible: the transcript only swaps in at
|
|
54
|
+
// bridge/ready, which the client sends after the WHOLE replay has landed,
|
|
55
|
+
// so a socket that dies mid-replay throws that work away and starts over.
|
|
56
|
+
// Uncapped, a long-running session replays megabytes — one busy session
|
|
57
|
+
// measured 1516 frames / 2.5MB — and a phone dropping its socket every few
|
|
58
|
+
// seconds never reaches ready at all: four consecutive attaches moved the
|
|
59
|
+
// entire 2.5MB between them and not one completed. Capping the cold window
|
|
60
|
+
// keeps the handshake inside the connection window a flaky client actually
|
|
61
|
+
// holds; the rest stays one "Load full history" away (fullHistory=true,
|
|
62
|
+
// which sends historyLimit 0).
|
|
63
|
+
//
|
|
64
|
+
// Deliberately NOT applied to after_message (delta) attaches: those are
|
|
65
|
+
// already bounded by the client's cursor, and capping one risks the cutoff
|
|
66
|
+
// falling outside the window, which downgrades the reply to a full replay
|
|
67
|
+
// and blanks the transcript the delta existed to preserve.
|
|
68
|
+
//
|
|
69
|
+
// Sized by measurement, not taste. Entries are not turns: a tool-heavy
|
|
70
|
+
// turn can run hundreds of entries on its own, so too small a cap lands
|
|
71
|
+
// the whole window INSIDE one turn and replays agent output with no
|
|
72
|
+
// prompt above it — the same "the prompt went missing" report the cache's
|
|
73
|
+
// own trim had to grow a turn-boundary snap to avoid. Measured against
|
|
74
|
+
// the busiest session here (50 turns, 3.18MB uncapped):
|
|
75
|
+
//
|
|
76
|
+
// limit replay complete turns
|
|
77
|
+
// 400 0.18MB 0 <- opens mid-turn, prompt-less
|
|
78
|
+
// 1500 0.64MB 1
|
|
79
|
+
// 2500 0.83MB 5
|
|
80
|
+
// 4000 1.09MB 15
|
|
81
|
+
//
|
|
82
|
+
// 2500 keeps several whole turns of scrollback at roughly a third of the
|
|
83
|
+
// bytes. Re-measure before changing it; the entries-per-turn ratio is a
|
|
84
|
+
// property of how tool-heavy the sessions are, not a constant.
|
|
85
|
+
const COLD_ATTACH_HISTORY_LIMIT = 2500;
|
|
52
86
|
const SHORT_CIRCUIT_AGENT_REQUEST_METHODS = new Set([
|
|
53
87
|
"fs/read_text_file",
|
|
54
88
|
"fs/write_text_file",
|
|
@@ -144,6 +178,28 @@ function handleConnection(browserWs, _req, ctx, sessionId, sessionToken, load, a
|
|
|
144
178
|
// card flashes on screen. Keyed by toolCallId per RFD #533.
|
|
145
179
|
const pendingPermissionFrames = new Map();
|
|
146
180
|
const permissionDelayMs = ctx.config.permissionDisplayDelayMs;
|
|
181
|
+
// Permission requests that HAVE been shown (to this tab or a sibling
|
|
182
|
+
// client) but are still unresolved permissionNotifyDelayMs after that,
|
|
183
|
+
// pending a "waiting on you" push — see schedulePermissionNotify. A
|
|
184
|
+
// separate map from pendingPermissionFrames above: that one buffers a
|
|
185
|
+
// request the UI hasn't seen yet, this one times out a request the UI
|
|
186
|
+
// HAS seen, once no permission_resolved has followed it in time.
|
|
187
|
+
// Keyed by toolCallId per RFD #533, same as pendingPermissionFrames.
|
|
188
|
+
const pendingPermissionNotifyTimers = new Map();
|
|
189
|
+
const permissionNotifyDelayMs = ctx.config.permissionNotifyDelayMs;
|
|
190
|
+
// messageIds of this connection's own prompts that hydra has queued
|
|
191
|
+
// (hydra-acp/prompt_queue/added, matched by originator.clientId) but
|
|
192
|
+
// hasn't yet reported as started. Consumed (deleted) the moment a
|
|
193
|
+
// prompt_queue/removed{started} confirms which messageId is now the
|
|
194
|
+
// in-flight head — see currentTurnIsOwn below.
|
|
195
|
+
const ownQueuedMessageIds = new Set();
|
|
196
|
+
// Whether the turn currently running on this session (if any) was
|
|
197
|
+
// started by a prompt THIS connection submitted, per the last
|
|
198
|
+
// prompt_queue/removed{started}. Only one turn runs at a time per
|
|
199
|
+
// session, so this is authoritative until the next "started" event —
|
|
200
|
+
// gates schedulePermissionNotify so a peer's (TUI, another tab)
|
|
201
|
+
// permission wait never buzzes this device.
|
|
202
|
+
let currentTurnIsOwn = false;
|
|
147
203
|
let upstreamReady = false;
|
|
148
204
|
// While the upstream handshake is running we can't yet forward browser
|
|
149
205
|
// frames. Buffer them and flush once attach completes.
|
|
@@ -175,6 +231,15 @@ function handleConnection(browserWs, _req, ctx, sessionId, sessionToken, load, a
|
|
|
175
231
|
// maybeRegisterPush below). Used only to decide whether cleanup()
|
|
176
232
|
// needs to hold the upstream connection open a little longer.
|
|
177
233
|
let pendingOwnPrompts = 0;
|
|
234
|
+
async function fetchSessionTitle() {
|
|
235
|
+
try {
|
|
236
|
+
const info = await HydraRestClient.forRequest(ctx.config.hydraDaemonUrl, ctx.config.hydraToken).getSession(sessionId);
|
|
237
|
+
return info.title || "Hydra";
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
return "Hydra";
|
|
241
|
+
}
|
|
242
|
+
}
|
|
178
243
|
// Web Push registration for this connection's own prompts, mirroring
|
|
179
244
|
// the foreground own-turn-end scope in notifications.ts (a
|
|
180
245
|
// peer-submitted turn finishing isn't "browser initiated"). Only
|
|
@@ -184,17 +249,49 @@ function handleConnection(browserWs, _req, ctx, sessionId, sessionToken, load, a
|
|
|
184
249
|
if (!(await hasSubscriptions())) {
|
|
185
250
|
return;
|
|
186
251
|
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
252
|
+
const title = await fetchSessionTitle();
|
|
253
|
+
await registerForPush(ctx.config, sessionId, messageId, title, ownPushEndpoint);
|
|
254
|
+
}
|
|
255
|
+
// Fires after permissionNotifyDelayMs of an own-turn permission request
|
|
256
|
+
// sitting unresolved (see schedulePermissionNotify). Mirrors
|
|
257
|
+
// deliverPush's suppression rules in turn-notify-callback.ts: skip if
|
|
258
|
+
// this tab (or a sibling) is already looking at the session, and only
|
|
259
|
+
// target the device that actually submitted the prompt.
|
|
260
|
+
async function maybeSendPermissionPush() {
|
|
261
|
+
if (isSessionVisible(sessionId)) {
|
|
262
|
+
log.info(`session=${sessionId} currently visible — suppressing permission push`);
|
|
263
|
+
return;
|
|
193
264
|
}
|
|
194
|
-
|
|
195
|
-
|
|
265
|
+
if (!ownPushEndpoint) {
|
|
266
|
+
return;
|
|
196
267
|
}
|
|
197
|
-
await
|
|
268
|
+
if (!(await hasSubscriptions())) {
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
const title = await fetchSessionTitle();
|
|
272
|
+
await sendPushToEndpoint(ownPushEndpoint, {
|
|
273
|
+
title,
|
|
274
|
+
body: "Waiting on a permission approval.",
|
|
275
|
+
url: `/#/session/${encodeURIComponent(sessionId)}`,
|
|
276
|
+
tag: `hydra-acp-permission-${sessionId}`,
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
// Buffers a just-displayed permission request for permissionNotifyDelayMs.
|
|
280
|
+
// If session/update permission_resolved arrives for this toolCallId
|
|
281
|
+
// before the timer fires — answered in this tab, a sibling client, or
|
|
282
|
+
// the auto-approver — the notification handler below clears it and no
|
|
283
|
+
// push goes out. Skipped entirely when the in-flight turn isn't ours;
|
|
284
|
+
// see currentTurnIsOwn.
|
|
285
|
+
function schedulePermissionNotify(toolCallId) {
|
|
286
|
+
if (permissionNotifyDelayMs <= 0 || !currentTurnIsOwn) {
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
const timer = setTimeout(() => {
|
|
290
|
+
pendingPermissionNotifyTimers.delete(toolCallId);
|
|
291
|
+
void maybeSendPermissionPush();
|
|
292
|
+
maybeStopUpstream();
|
|
293
|
+
}, permissionNotifyDelayMs);
|
|
294
|
+
pendingPermissionNotifyTimers.set(toolCallId, timer);
|
|
198
295
|
}
|
|
199
296
|
upstream.on("open", () => {
|
|
200
297
|
void doHandshake().catch((err) => {
|
|
@@ -222,9 +319,27 @@ function handleConnection(browserWs, _req, ctx, sessionId, sessionToken, load, a
|
|
|
222
319
|
originatorClientId === ownClientId &&
|
|
223
320
|
pendingOwnPrompts > 0) {
|
|
224
321
|
pendingOwnPrompts -= 1;
|
|
322
|
+
ownQueuedMessageIds.add(params.messageId);
|
|
225
323
|
void maybeRegisterPush(params.messageId);
|
|
226
324
|
}
|
|
227
325
|
}
|
|
326
|
+
// prompt_queue/removed{reason:"started"} is the authoritative signal
|
|
327
|
+
// for which messageId is now the session's in-flight head — see
|
|
328
|
+
// acp.ts's onPromptQueueRemoved. Reaches the originator too, unlike
|
|
329
|
+
// prompt_received/turn_complete, so this is also how a peer's turn
|
|
330
|
+
// starting becomes visible to us. Consumed (deleted) either way: once
|
|
331
|
+
// a queued own messageId either starts or leaves the queue some other
|
|
332
|
+
// way (cancelled/abandoned), it's done informing currentTurnIsOwn.
|
|
333
|
+
if (n.method === "hydra-acp/prompt_queue/removed") {
|
|
334
|
+
const params = (n.params ?? {});
|
|
335
|
+
const messageId = typeof params.messageId === "string" ? params.messageId : undefined;
|
|
336
|
+
if (messageId !== undefined) {
|
|
337
|
+
if (params.reason === "started") {
|
|
338
|
+
currentTurnIsOwn = ownQueuedMessageIds.has(messageId);
|
|
339
|
+
}
|
|
340
|
+
ownQueuedMessageIds.delete(messageId);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
228
343
|
// Permission resolution during the display-delay window cancels
|
|
229
344
|
// the pending forward. The UI never saw the request so dropping
|
|
230
345
|
// the resolved notification too is correct — there's nothing for
|
|
@@ -241,6 +356,12 @@ function handleConnection(browserWs, _req, ctx, sessionId, sessionToken, load, a
|
|
|
241
356
|
log.debug(`permission suppressed-by-delay session=${sessionId} toolCallId=${update.toolCallId}`);
|
|
242
357
|
return;
|
|
243
358
|
}
|
|
359
|
+
const notifyTimer = pendingPermissionNotifyTimers.get(update.toolCallId);
|
|
360
|
+
if (notifyTimer) {
|
|
361
|
+
clearTimeout(notifyTimer);
|
|
362
|
+
pendingPermissionNotifyTimers.delete(update.toolCallId);
|
|
363
|
+
maybeStopUpstream();
|
|
364
|
+
}
|
|
244
365
|
}
|
|
245
366
|
if (handshakeBuffer) {
|
|
246
367
|
handshakeBuffer.push(n);
|
|
@@ -256,26 +377,36 @@ function handleConnection(browserWs, _req, ctx, sessionId, sessionToken, load, a
|
|
|
256
377
|
upstream.replyError(r.id, -32601, `method not supported: ${r.method}`);
|
|
257
378
|
return;
|
|
258
379
|
}
|
|
259
|
-
if (r.method === "session/request_permission"
|
|
260
|
-
// Buffer the request for permissionDelayMs. Sibling controllers
|
|
261
|
-
// (the auto-approver) often answer within a handful of ms; if
|
|
262
|
-
// session/update permission_resolved arrives before the timer
|
|
263
|
-
// fires, the notification handler above clears this entry and
|
|
264
|
-
// the request never reaches the browser tab (no flash). Keyed
|
|
265
|
-
// by toolCallId per RFD #533.
|
|
380
|
+
if (r.method === "session/request_permission") {
|
|
266
381
|
const params = (r.params ?? {});
|
|
267
382
|
const toolCallId = typeof params.toolCall?.toolCallId === "string"
|
|
268
383
|
? params.toolCall.toolCallId
|
|
269
384
|
: undefined;
|
|
270
|
-
|
|
385
|
+
const deliver = () => {
|
|
386
|
+
outstandingFromUpstream.add(String(r.id));
|
|
387
|
+
sendBrowserFrame(r);
|
|
388
|
+
// Only once the request has actually been shown does the
|
|
389
|
+
// notify-delay clock start — see schedulePermissionNotify.
|
|
390
|
+
if (toolCallId) {
|
|
391
|
+
schedulePermissionNotify(toolCallId);
|
|
392
|
+
}
|
|
393
|
+
};
|
|
394
|
+
if (toolCallId && permissionDelayMs > 0) {
|
|
395
|
+
// Buffer the request for permissionDelayMs. Sibling controllers
|
|
396
|
+
// (the auto-approver) often answer within a handful of ms; if
|
|
397
|
+
// session/update permission_resolved arrives before the timer
|
|
398
|
+
// fires, the notification handler above clears this entry and
|
|
399
|
+
// the request never reaches the browser tab (no flash). Keyed
|
|
400
|
+
// by toolCallId per RFD #533.
|
|
271
401
|
const timer = setTimeout(() => {
|
|
272
402
|
pendingPermissionFrames.delete(toolCallId);
|
|
273
|
-
|
|
274
|
-
sendBrowserFrame(r);
|
|
403
|
+
deliver();
|
|
275
404
|
}, permissionDelayMs);
|
|
276
405
|
pendingPermissionFrames.set(toolCallId, timer);
|
|
277
406
|
return;
|
|
278
407
|
}
|
|
408
|
+
deliver();
|
|
409
|
+
return;
|
|
279
410
|
}
|
|
280
411
|
outstandingFromUpstream.add(String(r.id));
|
|
281
412
|
sendBrowserFrame(r);
|
|
@@ -285,6 +416,13 @@ function handleConnection(browserWs, _req, ctx, sessionId, sessionToken, load, a
|
|
|
285
416
|
});
|
|
286
417
|
upstream.on("close", ({ code, reason }) => {
|
|
287
418
|
log.info(`upstream closed session=${sessionId} code=${code} reason=${reason}`);
|
|
419
|
+
// The daemon connection this timer would confirm against is gone —
|
|
420
|
+
// don't fire a stale "waiting on you" push for a turn that no longer
|
|
421
|
+
// has anywhere to report a resolution.
|
|
422
|
+
for (const timer of pendingPermissionNotifyTimers.values()) {
|
|
423
|
+
clearTimeout(timer);
|
|
424
|
+
}
|
|
425
|
+
pendingPermissionNotifyTimers.clear();
|
|
288
426
|
try {
|
|
289
427
|
browserWs.close();
|
|
290
428
|
}
|
|
@@ -455,7 +593,13 @@ function handleConnection(browserWs, _req, ctx, sessionId, sessionToken, load, a
|
|
|
455
593
|
// session/attach keeps only RFD #533's own fields at the top level.
|
|
456
594
|
...(fullHistory
|
|
457
595
|
? { _meta: { "hydra-acp": { historyLimit: 0 } } }
|
|
458
|
-
:
|
|
596
|
+
: wantsAfterMessage
|
|
597
|
+
? {}
|
|
598
|
+
: {
|
|
599
|
+
_meta: {
|
|
600
|
+
"hydra-acp": { historyLimit: COLD_ATTACH_HISTORY_LIMIT },
|
|
601
|
+
},
|
|
602
|
+
}),
|
|
459
603
|
clientInfo: {
|
|
460
604
|
name: upstream.clientName,
|
|
461
605
|
version: upstream.clientVersion,
|
|
@@ -522,26 +666,51 @@ function handleConnection(browserWs, _req, ctx, sessionId, sessionToken, load, a
|
|
|
522
666
|
forwardBrowserFrame(next);
|
|
523
667
|
}
|
|
524
668
|
}
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
669
|
+
// True once the browser side has gone away — gates maybeStopUpstream so
|
|
670
|
+
// it never tears down the daemon connection while the tab is still
|
|
671
|
+
// attached, only once there's nothing left to hold it open for.
|
|
672
|
+
let browserClosed = false;
|
|
673
|
+
let upstreamStopScheduled = false;
|
|
674
|
+
// Tears down the daemon connection once the browser is gone AND
|
|
675
|
+
// nothing still needs it kept alive: an own prompt awaiting its
|
|
676
|
+
// prompt_queue/added (brief grace window), or a permission-notify timer
|
|
677
|
+
// awaiting either its own deadline or a permission_resolved to cancel
|
|
678
|
+
// it against (see schedulePermissionNotify and the permission_resolved
|
|
679
|
+
// handling above). Re-entrant — called again each time one of those
|
|
680
|
+
// conditions clears, from wherever it cleared.
|
|
681
|
+
function maybeStopUpstream() {
|
|
682
|
+
if (!browserClosed || upstreamStopScheduled) {
|
|
683
|
+
return;
|
|
684
|
+
}
|
|
534
685
|
if (pendingOwnPrompts > 0) {
|
|
686
|
+
// If a session/prompt we just forwarded hasn't produced its
|
|
687
|
+
// prompt_queue/added yet, don't tear down the daemon connection
|
|
688
|
+
// immediately — backgrounding the app right after hitting send
|
|
689
|
+
// (the literal case Web Push exists for) closes the browser WS
|
|
690
|
+
// within a second or two on iOS, possibly before the notification
|
|
691
|
+
// lands. Killing upstream here would silently drop the
|
|
692
|
+
// turn-notify registration every time. Give it a short grace
|
|
693
|
+
// window instead.
|
|
694
|
+
upstreamStopScheduled = true;
|
|
535
695
|
log.info(`browser gone with ${pendingOwnPrompts} own prompt(s) unresolved for session=${sessionId} — holding upstream ${OWN_PROMPT_GRACE_MS}ms for prompt_queue/added`);
|
|
536
696
|
setTimeout(() => upstream.stop(), OWN_PROMPT_GRACE_MS);
|
|
697
|
+
return;
|
|
537
698
|
}
|
|
538
|
-
|
|
539
|
-
|
|
699
|
+
if (pendingPermissionNotifyTimers.size > 0) {
|
|
700
|
+
log.info(`browser gone with ${pendingPermissionNotifyTimers.size} permission-notify timer(s) pending for session=${sessionId} — holding upstream`);
|
|
701
|
+
return;
|
|
540
702
|
}
|
|
703
|
+
upstreamStopScheduled = true;
|
|
704
|
+
upstream.stop();
|
|
705
|
+
}
|
|
706
|
+
function cleanup() {
|
|
707
|
+
browserClosed = true;
|
|
708
|
+
clearConnection(sessionId, connId);
|
|
541
709
|
for (const timer of pendingPermissionFrames.values()) {
|
|
542
710
|
clearTimeout(timer);
|
|
543
711
|
}
|
|
544
712
|
pendingPermissionFrames.clear();
|
|
713
|
+
maybeStopUpstream();
|
|
545
714
|
if (browserWs.readyState === WebSocket.OPEN) {
|
|
546
715
|
try {
|
|
547
716
|
browserWs.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-bridge.js","sourceRoot":"","sources":["../../src/server/ws-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,SAAS,EACT,UAAU,EACV,aAAa,GAKd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,WAAW,EACX,YAAY,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEhF,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAEhC,MAAM,+BAA+B,GAAG,IAAI,GAAG,CAAS;IACtD,gBAAgB;IAChB,qEAAqE;IACrE,sEAAsE;IACtE,oEAAoE;IACpE,gBAAgB;IAChB,kBAAkB;IAClB,mBAAmB;IACnB,mEAAmE;IACnE,oEAAoE;IACpE,+DAA+D;IAC/D,8CAA8C;IAC9C,2BAA2B;IAC3B,+DAA+D;IAC/D,mEAAmE;IACnE,kEAAkE;IAClE,kEAAkE;IAClE,UAAU;IACV,yBAAyB;IACzB,yBAAyB;IACzB,4DAA4D;IAC5D,8DAA8D;IAC9D,mCAAmC;IACnC,wBAAwB;IACxB,gEAAgE;IAChE,+DAA+D;IAC/D,gEAAgE;IAChE,gEAAgE;IAChE,kEAAkE;IAClE,oDAAoD;IACpD,mBAAmB;CACpB,CAAC,CAAC;AAEH,MAAM,oCAAoC,GAAG,IAAI,GAAG,CAAS;IAC3D,gBAAgB;CACjB,CAAC,CAAC;AAEH,mEAAmE;AACnE,sEAAsE;AACtE,sEAAsE;AACtE,sEAAsE;AACtE,gDAAgD;AAChD,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEnC,MAAM,mCAAmC,GAAG,IAAI,GAAG,CAAS;IAC1D,mBAAmB;IACnB,oBAAoB;CACrB,CAAC,CAAC;AAEH,MAAM,UAAU,cAAc,CAC5B,UAAsB,EACtB,GAAkB;IAElB,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpD,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QACjD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,oBAAoB,CAAC,CAAC;QAC9D,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClE,IAAI,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;YACvD,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,UAAU,CAAC,CAAC;YAC/D,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YAClD,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC;QACrD,sEAAsE;QACtE,kEAAkE;QAClE,gEAAgE;QAChE,6BAA6B;QAC7B,MAAM,cAAc,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,SAAS,CAAC;QAC3E,uEAAuE;QACvE,uEAAuE;QACvE,oEAAoE;QACpE,qEAAqE;QACrE,2DAA2D;QAC3D,mEAAmE;QACnE,yBAAyB;QACzB,iEAAiE;QACjE,kEAAkE;QAClE,+DAA+D;QAC/D,kDAAkD;QAClD,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,MAAM,CAAC;QACnE,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QACpE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACjD,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE;YACrD,gBAAgB,CACd,SAAS,EACT,OAAO,EACP,GAAG,EACH,SAAS,EACT,YAAY,EACZ,IAAI,EACJ,cAAc,EACd,QAAQ,EACR,WAAW,CACZ,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CACvB,SAAoB,EACpB,IAAqB,EACrB,GAAkB,EAClB,SAAiB,EACjB,YAAoB,EACpB,IAAa,EACb,cAAkC,EAClC,QAA4B,EAC5B,WAAoB;IAEpB,GAAG,CAAC,IAAI,CAAC,uBAAuB,SAAS,SAAS,IAAI,EAAE,CAAC,CAAC;IAE1D,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC;QACtC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU;QAClC,KAAK,EAAE,YAAY;KACpB,CAAC,CAAC;IAEH,iEAAiE;IACjE,oEAAoE;IACpE,gEAAgE;IAChE,mEAAmE;IACnE,kEAAkE;IAClE,qEAAqE;IACrE,oEAAoE;IACpE,uEAAuE;IACvE,oEAAoE;IACpE,8DAA8D;IAC9D,qEAAqE;IACrE,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAExC,wEAAwE;IACxE,oEAAoE;IACpE,iEAAiE;IACjE,wBAAwB;IACxB,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAU,CAAC;IAElD,yEAAyE;IACzE,yEAAyE;IACzE,wEAAwE;IACxE,wEAAwE;IACxE,4DAA4D;IAC5D,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAA0B,CAAC;IAClE,MAAM,iBAAiB,GAAG,GAAG,CAAC,MAAM,CAAC,wBAAwB,CAAC;IAE9D,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,uEAAuE;IACvE,uDAAuD;IACvD,MAAM,aAAa,GAAqB,EAAE,CAAC;IAC3C,mEAAmE;IACnE,sEAAsE;IACtE,oEAAoE;IACpE,kEAAkE;IAClE,mEAAmE;IACnE,sEAAsE;IACtE,oEAAoE;IACpE,kEAAkE;IAClE,yBAAyB;IACzB,IAAI,eAAe,GAA4B,EAAE,CAAC;IAElD,qEAAqE;IACrE,mEAAmE;IACnE,oEAAoE;IACpE,iEAAiE;IACjE,IAAI,WAA+B,CAAC;IAEpC,wEAAwE;IACxE,uEAAuE;IACvE,oEAAoE;IACpE,qEAAqE;IACrE,+DAA+D;IAC/D,2BAA2B;IAC3B,IAAI,eAAmC,CAAC;IAExC,mEAAmE;IACnE,0DAA0D;IAC1D,kEAAkE;IAClE,8DAA8D;IAC9D,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE1B,qEAAqE;IACrE,2DAA2D;IAC3D,iEAAiE;IACjE,oEAAoE;IACpE,gEAAgE;IAChE,KAAK,UAAU,iBAAiB,CAAC,SAAiB;QAChD,IAAI,CAAC,CAAC,MAAM,gBAAgB,EAAE,CAAC,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QACD,IAAI,KAAK,GAAG,OAAO,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,UAAU,CAC3C,GAAG,CAAC,MAAM,CAAC,cAAc,EACzB,GAAG,CAAC,MAAM,CAAC,UAAU,CACtB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACxB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACrB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sDAAsD;QACxD,CAAC;QACD,MAAM,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;IAClF,CAAC;IAED,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;QACvB,KAAK,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACxC,GAAG,CAAC,IAAI,CACN,wBAAwB,SAAS,KAAM,GAAa,CAAC,OAAO,EAAE,CAC/D,CAAC;YACF,gBAAgB,CAAC,kBAAkB,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YAC7D,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE;QAChC,kEAAkE;QAClE,wEAAwE;QACxE,mEAAmE;QACnE,oEAAoE;QACpE,mEAAmE;QACnE,iEAAiE;QACjE,qEAAqE;QACrE,qEAAqE;QACrE,IAAI,CAAC,CAAC,MAAM,KAAK,8BAA8B,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAG7B,CAAC;YACF,MAAM,kBAAkB,GACtB,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;gBACxD,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ;gBAC5B,CAAC,CAAC,SAAS,CAAC;YAChB,IACE,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;gBACpC,WAAW,KAAK,SAAS;gBACzB,kBAAkB,KAAK,WAAW;gBAClC,iBAAiB,GAAG,CAAC,EACrB,CAAC;gBACD,iBAAiB,IAAI,CAAC,CAAC;gBACvB,KAAK,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QACD,gEAAgE;QAChE,gEAAgE;QAChE,iEAAiE;QACjE,uBAAuB;QACvB,IAAI,CAAC,CAAC,MAAM,KAAK,gBAAgB,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAyB,CAAC;YACxD,MAAM,MAAM,GAAG,MAAM,CAAC,MAET,CAAC;YACd,IACE,MAAM,EAAE,aAAa,KAAK,qBAAqB;gBAC/C,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EACrC,CAAC;gBACD,MAAM,KAAK,GAAG,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC7D,IAAI,KAAK,EAAE,CAAC;oBACV,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,uBAAuB,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBAClD,GAAG,CAAC,KAAK,CACP,0CAA0C,SAAS,eAAe,MAAM,CAAC,UAAU,EAAE,CACtF,CAAC;oBACF,OAAO;gBACT,CAAC;YACH,CAAC;YACD,IAAI,eAAe,EAAE,CAAC;gBACpB,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxB,OAAO;YACT,CAAC;QACH,CAAC;QACD,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;QAC3B,IAAI,mCAAmC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,gEAAgE;YAChE,yDAAyD;YACzD,QAAQ,CAAC,UAAU,CACjB,CAAC,CAAC,EAAE,EACJ,CAAC,KAAK,EACN,yBAAyB,CAAC,CAAC,MAAM,EAAE,CACpC,CAAC;YACF,OAAO;QACT,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,KAAK,4BAA4B,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;YACvE,gEAAgE;YAChE,8DAA8D;YAC9D,8DAA8D;YAC9D,8DAA8D;YAC9D,8DAA8D;YAC9D,8BAA8B;YAC9B,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAE7B,CAAC;YACF,MAAM,UAAU,GACd,OAAO,MAAM,CAAC,QAAQ,EAAE,UAAU,KAAK,QAAQ;gBAC7C,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU;gBAC5B,CAAC,CAAC,SAAS,CAAC;YAChB,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC5B,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBAC3C,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC1C,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBACtB,CAAC,EAAE,iBAAiB,CAAC,CAAC;gBACtB,uBAAuB,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;QACH,CAAC;QACD,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;QAC5B,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;QACxC,GAAG,CAAC,IAAI,CAAC,2BAA2B,SAAS,SAAS,IAAI,WAAW,MAAM,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC;YACH,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,CAAC;QACT,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QAC3B,GAAG,CAAC,IAAI,CAAC,0BAA0B,SAAS,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;QACzC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,IAAI,MAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAmB,CAAC;QAC/D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,wBAAyB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QACD,sEAAsE;QACtE,oEAAoE;QACpE,8DAA8D;QAC9D,qBAAqB;QACrB,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;YACpE,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAA0B,CAAC;YAC9D,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QACD,iEAAiE;QACjE,oEAAoE;QACpE,mEAAmE;QACnE,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,sBAAsB,EAAE,CAAC;YACvE,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAA2B,CAAC;YAC/D,eAAe,GAAG,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YACpF,OAAO;QACT,CAAC;QACD,sEAAsE;QACtE,qEAAqE;QACrE,kEAAkE;QAClE,mEAAmE;QACnE,oEAAoE;QACpE,kEAAkE;QAClE,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YAC9D,gBAAgB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QACD,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACzB,GAAG,CAAC,IAAI,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAC;QAChD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QAC5B,GAAG,CAAC,IAAI,CAAC,yBAAyB,SAAS,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,EAAE,CAAC;IAEjB,SAAS,kBAAkB,CAAC,GAAmB;QAC7C,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QACD,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,SAAS,mBAAmB,CAAC,GAAmB;QAC9C,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrD,GAAG,CAAC,IAAI,CAAC,iCAAiC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBACxD,wBAAwB,CACtB,GAAG,CAAC,EAAE,EACN,CAAC,KAAK,EACN,uBAAuB,GAAG,CAAC,MAAM,EAAE,CACpC,CAAC;gBACF,OAAO;YACT,CAAC;YACD,2DAA2D;YAC3D,gEAAgE;YAChE,mBAAmB;YACnB,MAAM,MAAM,GACV,GAAG,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;gBAC1C,CAAC,CAAC,EAAE,GAAI,GAAG,CAAC,MAAkC,EAAE,SAAS,EAAE;gBAC3D,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;YACpB,IAAI,GAAG,CAAC,MAAM,KAAK,gBAAgB,EAAE,CAAC;gBACpC,iBAAiB,IAAI,CAAC,CAAC;YACzB,CAAC;YACD,QAAQ,CAAC,OAAO,CAAC;gBACf,OAAO,EAAE,KAAK;gBACd,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,MAAM;aACP,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxC,GAAG,CAAC,IAAI,CAAC,0CAA0C,KAAK,EAAE,CAAC,CAAC;gBAC5D,OAAO;YACT,CAAC;YACD,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,oCAAoC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1D,GAAG,CAAC,KAAK,CAAC,sCAAsC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC9D,OAAO;YACT,CAAC;YACD,mEAAmE;YACnE,oEAAoE;YACpE,MAAM,MAAM,GACV,GAAG,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;gBAC1C,CAAC,CAAC,EAAE,GAAI,GAAG,CAAC,MAAkC,EAAE,SAAS,EAAE;gBAC3D,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;YACpB,QAAQ,CAAC,OAAO,CAAC;gBACf,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,MAAM;aACP,CAAC,CAAC;YACH,OAAO;QACT,CAAC;IACH,CAAC;IAED,SAAS,gBAAgB,CAAC,GAAmB;QAC3C,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,OAAe;QACrD,gBAAgB,CAAC;YACf,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,SAAS,wBAAwB,CAC/B,EAAa,EACb,IAAY,EACZ,OAAe;QAEf,MAAM,IAAI,GAAoB;YAC5B,OAAO,EAAE,KAAK;YACd,EAAE;YACF,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;SACzB,CAAC;QACF,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,UAAU,WAAW;QACxB,MAAM,QAAQ,GAAG,CAAC,MAAM,aAAa,CAAC,QAAQ,CAAC,CAElC,CAAC;QACd,2DAA2D;QAC3D,+DAA+D;QAC/D,8DAA8D;QAC9D,6DAA6D;QAC7D,IAAI,aAAkD,CAAC;QACvD,IAAI,QAAQ,EAAE,KAAK,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC1D,MAAM,EAAE,GAAI,QAAQ,CAAC,KAAiC,CAAC,WAAW,CAAC,CAAC;YACpE,IAAI,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACjC,aAAa,GAAG,EAA6B,CAAC;YAChD,CAAC;QACH,CAAC;QACD,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YACxD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,CACN,2BAA2B,SAAS,KAAM,GAAa,CAAC,OAAO,8BAA8B,CAC9F,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,iBAAiB,GACrB,cAAc,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,CAAC;QACzD,MAAM,UAAU,GAAG,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE;YAC3D,SAAS;YACT,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM;YAC3D,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,8DAA8D;YAC9D,oEAAoE;YACpE,GAAG,CAAC,WAAW;gBACb,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;gBACjD,CAAC,CAAC,EAAE,CAAC;YACP,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ,CAAC,UAAU;gBACzB,OAAO,EAAE,QAAQ,CAAC,aAAa;aAChC;SACF,CAAC,CAMD,CAAC;QACF,gEAAgE;QAChE,sEAAsE;QACtE,sEAAsE;QACtE,kEAAkE;QAClE,mEAAmE;QACnE,qDAAqD;QACrD,MAAM,aAAa,GACjB,iBAAiB,IAAI,UAAU,EAAE,aAAa,KAAK,eAAe;YAChE,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,MAAM,CAAC;QACb,MAAM,QAAQ,GAAG,eAAe,IAAI,EAAE,CAAC;QACvC,eAAe,GAAG,IAAI,CAAC;QACvB,gBAAgB,CAAC;YACf,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,sBAAsB;YAC9B,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE;SAClC,CAAC,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,kEAAkE;QAClE,kEAAkE;QAClE,+DAA+D;QAC/D,8CAA8C;QAC9C,MAAM,WAAW,GAA4B,EAAE,SAAS,EAAE,CAAC;QAC3D,IAAI,OAAO,UAAU,EAAE,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC7C,WAAW,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;YAC3C,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC;QACpC,CAAC;QACD,sEAAsE;QACtE,kEAAkE;QAClE,qEAAqE;QACrE,mEAAmE;QACnE,qEAAqE;QACrE,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,CAAC;YAC7C,WAAW,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;QACvD,CAAC;QACD,IAAI,UAAU,EAAE,KAAK,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9D,WAAW,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QACvC,CAAC;QACD,gEAAgE;QAChE,iEAAiE;QACjE,sDAAsD;QACtD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,YAAY,GAAI,WAAW,CAAC,KAAiC,IAAI,EAAE,CAAC;YAC1E,MAAM,aAAa,GAChB,YAAY,CAAC,WAAW,CAA6B,IAAI,EAAE,CAAC;YAC/D,WAAW,CAAC,KAAK,GAAG;gBAClB,GAAG,YAAY;gBACf,WAAW,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,aAAa,EAAE;aACpD,CAAC;QACJ,CAAC;QACD,gBAAgB,CAAC;YACf,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QACH,aAAa,GAAG,IAAI,CAAC;QACrB,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAG,CAAC;YACpC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,SAAS,OAAO;QACd,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACnC,4DAA4D;QAC5D,gEAAgE;QAChE,oEAAoE;QACpE,mEAAmE;QACnE,gEAAgE;QAChE,4DAA4D;QAC5D,iEAAiE;QACjE,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CACN,qBAAqB,iBAAiB,yCAAyC,SAAS,uBAAuB,mBAAmB,2BAA2B,CAC9J,CAAC;YACF,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,mBAAmB,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,uBAAuB,CAAC,MAAM,EAAE,EAAE,CAAC;YACrD,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,uBAAuB,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,CAAC,CAAC;YACT,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,sBAAsB;AACtB,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,+BAA+B;IAC/B,oCAAoC;IACpC,mCAAmC;CACpC,CAAC"}
|
|
1
|
+
{"version":3,"file":"ws-bridge.js","sourceRoot":"","sources":["../../src/server/ws-bridge.ts"],"names":[],"mappings":"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"}
|