sliccy 6.112.4 → 6.112.5
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/node-server/http-keepalive.d.ts +34 -0
- package/dist/node-server/http-keepalive.js +41 -0
- package/dist/node-server/index.js +2 -2
- package/dist/ui/.vite/manifest.json +138 -137
- package/dist/ui/assets/{account-store-B3f-l-jt.js → account-store-BxX8JfS7.js} +1 -1
- package/dist/ui/assets/{account-store-D70z_yO5.js → account-store-DW2jFVbx.js} +1 -1
- package/dist/ui/assets/{adobe-BRlKLkkQ.js → adobe-BN1GDab-.js} +1 -1
- package/dist/ui/assets/{adobe-k-m8pmTS.js → adobe-fbodSOcO.js} +1 -1
- package/dist/ui/assets/{agent-bridge-BqjAoNUf.js → agent-bridge-D38cLzw-.js} +1 -1
- package/dist/ui/assets/{agent-panels-RneBItRe.js → agent-panels-Bmwd-51s.js} +1 -1
- package/dist/ui/assets/{apply-layout-DzjHaXRe.js → apply-layout-D_7X7yeM.js} +1 -1
- package/dist/ui/assets/{apps-BEVCpVN0.js → apps-Bjm8E7J1.js} +1 -1
- package/dist/ui/assets/{auto-mount-table-BRFqHPcB.js → auto-mount-table-BhFTO0Bn.js} +1 -1
- package/dist/ui/assets/{azure-openai-ChK12_Uk.js → azure-openai-BRLRAYDK.js} +1 -1
- package/dist/ui/assets/{azure-openai-BJ1cYZ2M.js → azure-openai-Bjl5Pf7Y.js} +1 -1
- package/dist/ui/assets/backend-hostfs-CciGcalA.js +1 -0
- package/dist/ui/assets/backend-hostfs-In96W2M8.js +1 -0
- package/dist/ui/assets/{cerebras-DNkVBTks.js → cerebras-CpQu78KL.js} +1 -1
- package/dist/ui/assets/{cerebras-B9Z6MCch.js → cerebras-D_0PDJSq.js} +1 -1
- package/dist/ui/assets/{connect-surface-CRXNPBGI.js → connect-surface-Dbwaf17S.js} +1 -1
- package/dist/ui/assets/{directed-approval-DNxALRIR.js → directed-approval-CqzN4APV.js} +1 -1
- package/dist/ui/assets/{fs-80WHk5Hb.js → fs-BK2eglBz.js} +2 -2
- package/dist/ui/assets/{fs-BO4V2Z_q.js → fs-DjYxhucr.js} +1 -1
- package/dist/ui/assets/{github-CFlqk9ps.js → github-BIlEklug.js} +1 -1
- package/dist/ui/assets/{github-CvaDwGdD.js → github-R0B_sm4U.js} +2 -2
- package/dist/ui/assets/{github-copilot-MM8Tpwn2.js → github-copilot-3YQxOk55.js} +1 -1
- package/dist/ui/assets/{github-copilot-B13HlOo9.js → github-copilot-CYwGFacm.js} +1 -1
- package/dist/ui/assets/{github-install-Bm_uCKXC.js → github-install-TKPXUCAn.js} +1 -1
- package/dist/ui/assets/{github-zip-Bqtwtfr7.js → github-zip-CS5DmVkD.js} +1 -1
- package/dist/ui/assets/{js-realm-worker-CHIuQdq-.js → js-realm-worker-BnvadqHV.js} +1 -1
- package/dist/ui/assets/{kernel-worker-BgucGvxZ.js → kernel-worker-_WWlCJJ9.js} +26 -26
- package/dist/ui/assets/{local-llm-DZLn1YLb.js → local-llm-BIDmtXWx.js} +1 -1
- package/dist/ui/assets/{local-llm-DDIpnXLI.js → local-llm-T4f5iO8X.js} +1 -1
- package/dist/ui/assets/{main-W20AbqqF.js → main-CMWDNy1b.js} +3 -3
- package/dist/ui/assets/{mount-BhKHPJ0t.js → mount-CmN7TfBj.js} +3 -3
- package/dist/ui/assets/{mount-CjD6A-dA.js → mount-DvUAxkal.js} +1 -1
- package/dist/ui/assets/{mount-recovery-DJ-Bvidw.js → mount-recovery-qMpq8Huf.js} +1 -1
- package/dist/ui/assets/{new-session-CG86gx28.js → new-session-VYZ7jrj7.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-BXVy8GOk.js → oauth-bootstrap-XwrbI4Iv.js} +2 -2
- package/dist/ui/assets/{openai-codex-BsOK_EUW.js → openai-codex-CHjWfSSY.js} +1 -1
- package/dist/ui/assets/{openai-codex-BUJorx66.js → openai-codex-DFIMk2EX.js} +1 -1
- package/dist/ui/assets/{openrouter-BrxyoCbR.js → openrouter-BnIkuZyu.js} +1 -1
- package/dist/ui/assets/{openrouter-C8LIcw5U.js → openrouter-CEeI3tws.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-D64Ebhmz.js → openrouter-oauth-DkcVUmmt.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-BTZCdA38.js → openrouter-oauth-jHW3CjPJ.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-DP4QW2_r.js → panel-rpc-handlers-MFPrNkza.js} +2 -2
- package/dist/ui/assets/{panelize-shell-D8SpCM1_.js → panelize-shell-CEFvu4Zb.js} +4 -4
- package/dist/ui/assets/{provider-DBXUieC5.js → provider-5X0H0Pbz.js} +1 -1
- package/dist/ui/assets/{provider-Do7aOOtm.js → provider-BmpjB8Oh.js} +2 -2
- package/dist/ui/assets/{provider-settings-Cqxptsvs.js → provider-settings-DE2GtkOn.js} +1 -1
- package/dist/ui/assets/{provider-settings-Bk6Nzxxq.js → provider-settings-Mty42lMQ.js} +1 -1
- package/dist/ui/assets/{provider-store-access-DGN2DE_L.js → provider-store-access-IDTX0Ktd.js} +2 -2
- package/dist/ui/assets/provider-store-access-l36wKGep.js +1 -0
- package/dist/ui/assets/{providers-BS3QLLDk.js → providers-CT84E7Qo.js} +1 -1
- package/dist/ui/assets/{providers-w3UpuVJ7.js → providers-CtHrWxy1.js} +2 -2
- package/dist/ui/assets/{quick-llm-eNqWcO0a.js → quick-llm-CNsuJuJ8.js} +1 -1
- package/dist/ui/assets/{recovery-screen-d59NpLgV.js → recovery-screen-Dt5pbWRX.js} +1 -1
- package/dist/ui/assets/{run-DTiJh7fB.js → run-BAZvbtF9.js} +2 -2
- package/dist/ui/assets/{run-MBbACQaU.js → run-BuCg89t8.js} +1 -1
- package/dist/ui/assets/{session-freezer-Dcstn02C.js → session-freezer-BhRKQBlh.js} +3 -3
- package/dist/ui/assets/{setup-feature-flags-remote-MUihR7_C.js → setup-feature-flags-remote-BcoDTQjl.js} +1 -1
- package/dist/ui/assets/{setup-standalone-prelude-D-My7gqn.js → setup-standalone-prelude-BLLqMqCJ.js} +1 -1
- package/dist/ui/assets/{setup-sudo-DWVKfxX5.js → setup-sudo-BPMwFqbp.js} +2 -2
- package/dist/ui/assets/{skills-C4OPb7lv.js → skills-eKCrl1u3.js} +1 -1
- package/dist/ui/assets/slicc-version-D9UIxOlA.js +1 -0
- package/dist/ui/assets/{state-B-6qOUGY.js → state-CaKSMnpR.js} +1 -1
- package/dist/ui/assets/{store-CJOsAi2B.js → store-C94WX_dt.js} +1 -1
- package/dist/ui/assets/{store-DKaVNOdU.js → store-DxYVeeSP.js} +1 -1
- package/dist/ui/assets/{sudo-CNW0dVE5.js → sudo-CPfH7UNc.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-DvWUyLV6.js → upgrade-detection-DW0E0nof.js} +1 -1
- package/dist/ui/assets/{wc-attach-CU3BE3l1.js → wc-attach-Bvft7fdm.js} +2 -2
- package/dist/ui/assets/{wc-extension-ZJGWvF9c.js → wc-extension-f4VcIB7g.js} +2 -2
- package/dist/ui/assets/{wc-float-label-CbDdlGLO.js → wc-float-label-BZVEWNuN.js} +1 -1
- package/dist/ui/assets/{wc-floatbar-online-C0IuZZKr.js → wc-floatbar-online-ZnncqSGS.js} +1 -1
- package/dist/ui/assets/{wc-follower-CTyxrOzu.js → wc-follower-DsIGMAUS.js} +3 -3
- package/dist/ui/assets/{wc-follower-oauth-SkmauQIC.js → wc-follower-oauth-DY3NapnC.js} +1 -1
- package/dist/ui/assets/{wc-live-9pvTjifM.js → wc-live-CGBvyH4a.js} +5 -5
- package/dist/ui/assets/{wc-nav-BE5dy4LG.js → wc-nav-B5kTI5AM.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-xdhdNGcZ.js → wc-onboarding-DA0ZC_-F.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-Cf022JY0.js → wc-placeholder-DeGoF4V-.js} +2 -2
- package/dist/ui/assets/{wc-settings-m4Ir4Q6n.js → wc-settings-Cxa3DsBZ.js} +2 -2
- package/dist/ui/assets/{wc-shell-Cn5weYPT.js → wc-shell-D4DWJ9OH.js} +193 -193
- package/dist/ui/assets/{wc-shortcut-config-DZ0FRyoV.js → wc-shortcut-config-g8RzdR8u.js} +1 -1
- package/dist/ui/assets/wc-sprinkles-5JPsLShX.js +2 -0
- package/dist/ui/assets/{wc-tray-mjZWSM63.js → wc-tray-CBPUcRIp.js} +4 -4
- package/dist/ui/assets/{xai-grok-weW--uzN.js → xai-grok-BnhGAbX8.js} +1 -1
- package/dist/ui/assets/{xai-grok-BWiDrNsj.js → xai-grok-DYxWThUO.js} +1 -1
- package/dist/ui/index.html +6 -6
- package/dist/ui/packages/webapp/index.html +6 -6
- package/package.json +1 -1
- package/dist/ui/assets/backend-hostfs-CwOm0hxZ.js +0 -1
- package/dist/ui/assets/backend-hostfs-DHZa_yjt.js +0 -1
- package/dist/ui/assets/provider-store-access-d0qE5Z_s.js +0 -1
- package/dist/ui/assets/slicc-version-P9XLGLfH.js +0 -1
- package/dist/ui/assets/wc-sprinkles-a5wgtCTP.js +0 -2
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keep-alive tuning for the local bridge HTTP server.
|
|
3
|
+
*
|
|
4
|
+
* Node's default `keepAliveTimeout` is 5 s, which Express advertises verbatim
|
|
5
|
+
* (`Keep-Alive: timeout=5`). That is far below Chrome's idle-socket timeout, so
|
|
6
|
+
* during a bursty fan-out — an in-browser `git status` walking a repo over
|
|
7
|
+
* `/api/hostfs` issues thousands of small requests in waves — the server closes
|
|
8
|
+
* a pooled socket in the same instant the browser writes the next request onto
|
|
9
|
+
* it. The browser cannot tell that apart from a dead server and rejects the
|
|
10
|
+
* `fetch()` with `TypeError: Failed to fetch`, which used to abort the whole
|
|
11
|
+
* git command (issue #2720).
|
|
12
|
+
*
|
|
13
|
+
* Holding idle sockets open for two minutes makes that race vanishingly rare on
|
|
14
|
+
* a loopback bridge that only ever serves this machine's browser. Sockets are
|
|
15
|
+
* still reaped, just on a scale the client's own pooling never reaches during a
|
|
16
|
+
* burst. `headersTimeout` must stay above `keepAliveTimeout`, otherwise Node
|
|
17
|
+
* aborts a connection it is still willing to keep.
|
|
18
|
+
*/
|
|
19
|
+
import { type Server as HttpServer, type RequestListener } from 'http';
|
|
20
|
+
/** Idle keep-alive socket lifetime (ms). Advertised as `Keep-Alive: timeout=120`. */
|
|
21
|
+
export declare const BRIDGE_KEEP_ALIVE_TIMEOUT_MS = 120000;
|
|
22
|
+
/** Header-completion budget (ms). Must exceed `BRIDGE_KEEP_ALIVE_TIMEOUT_MS`. */
|
|
23
|
+
export declare const BRIDGE_HEADERS_TIMEOUT_MS = 130000;
|
|
24
|
+
/**
|
|
25
|
+
* Apply the bridge keep-alive settings to an HTTP server. Call before
|
|
26
|
+
* `listen()` — Node reads both values per connection, but a server that has
|
|
27
|
+
* already accepted sockets would keep the old budget for them.
|
|
28
|
+
*/
|
|
29
|
+
export declare function applyBridgeKeepAlive(server: HttpServer): void;
|
|
30
|
+
/**
|
|
31
|
+
* Create the bridge's HTTP server with the keep-alive budget already applied,
|
|
32
|
+
* so no caller can construct one that still advertises `timeout=5`.
|
|
33
|
+
*/
|
|
34
|
+
export declare function createBridgeServer(requestListener: RequestListener): HttpServer;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keep-alive tuning for the local bridge HTTP server.
|
|
3
|
+
*
|
|
4
|
+
* Node's default `keepAliveTimeout` is 5 s, which Express advertises verbatim
|
|
5
|
+
* (`Keep-Alive: timeout=5`). That is far below Chrome's idle-socket timeout, so
|
|
6
|
+
* during a bursty fan-out — an in-browser `git status` walking a repo over
|
|
7
|
+
* `/api/hostfs` issues thousands of small requests in waves — the server closes
|
|
8
|
+
* a pooled socket in the same instant the browser writes the next request onto
|
|
9
|
+
* it. The browser cannot tell that apart from a dead server and rejects the
|
|
10
|
+
* `fetch()` with `TypeError: Failed to fetch`, which used to abort the whole
|
|
11
|
+
* git command (issue #2720).
|
|
12
|
+
*
|
|
13
|
+
* Holding idle sockets open for two minutes makes that race vanishingly rare on
|
|
14
|
+
* a loopback bridge that only ever serves this machine's browser. Sockets are
|
|
15
|
+
* still reaped, just on a scale the client's own pooling never reaches during a
|
|
16
|
+
* burst. `headersTimeout` must stay above `keepAliveTimeout`, otherwise Node
|
|
17
|
+
* aborts a connection it is still willing to keep.
|
|
18
|
+
*/
|
|
19
|
+
import { createServer } from 'http';
|
|
20
|
+
/** Idle keep-alive socket lifetime (ms). Advertised as `Keep-Alive: timeout=120`. */
|
|
21
|
+
export const BRIDGE_KEEP_ALIVE_TIMEOUT_MS = 120_000;
|
|
22
|
+
/** Header-completion budget (ms). Must exceed `BRIDGE_KEEP_ALIVE_TIMEOUT_MS`. */
|
|
23
|
+
export const BRIDGE_HEADERS_TIMEOUT_MS = 130_000;
|
|
24
|
+
/**
|
|
25
|
+
* Apply the bridge keep-alive settings to an HTTP server. Call before
|
|
26
|
+
* `listen()` — Node reads both values per connection, but a server that has
|
|
27
|
+
* already accepted sockets would keep the old budget for them.
|
|
28
|
+
*/
|
|
29
|
+
export function applyBridgeKeepAlive(server) {
|
|
30
|
+
server.keepAliveTimeout = BRIDGE_KEEP_ALIVE_TIMEOUT_MS;
|
|
31
|
+
server.headersTimeout = BRIDGE_HEADERS_TIMEOUT_MS;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Create the bridge's HTTP server with the keep-alive budget already applied,
|
|
35
|
+
* so no caller can construct one that still advertises `timeout=5`.
|
|
36
|
+
*/
|
|
37
|
+
export function createBridgeServer(requestListener) {
|
|
38
|
+
const server = createServer(requestListener);
|
|
39
|
+
applyBridgeKeepAlive(server);
|
|
40
|
+
return server;
|
|
41
|
+
}
|
|
@@ -5,7 +5,6 @@ import { SLICC_HOSTED_ORIGIN } from './_shared/index.js';
|
|
|
5
5
|
import { spawn } from 'child_process';
|
|
6
6
|
import express from 'express';
|
|
7
7
|
import { existsSync, readFileSync } from 'fs';
|
|
8
|
-
import { createServer } from 'http';
|
|
9
8
|
import { createServer as createNetServer } from 'net';
|
|
10
9
|
import { homedir } from 'os';
|
|
11
10
|
import { basename, dirname, join, resolve } from 'path';
|
|
@@ -32,6 +31,7 @@ import { shouldParseGlobalJson } from './fetch-proxy-headers.js';
|
|
|
32
31
|
import { FileLogger } from './file-logger.js';
|
|
33
32
|
import { registerHostedBootstrapEndpoint } from './hosted-bootstrap.js';
|
|
34
33
|
import { registerHostFsRoutes, resolveHostMountRoots } from './hostfs.js';
|
|
34
|
+
import { createBridgeServer } from './http-keepalive.js';
|
|
35
35
|
import { runInstallCli } from './install-cli.js';
|
|
36
36
|
import { resolveCliBrowserLaunchUrl } from './launch-url.js';
|
|
37
37
|
import { createHttpCdp, registerLeaderRestartEndpoint } from './leader-restart.js';
|
|
@@ -1160,7 +1160,7 @@ async function main() {
|
|
|
1160
1160
|
// surface. Chrome opens the sliccy.ai-hosted leader which talks to /cdp +
|
|
1161
1161
|
// /api cross-origin. Create the HTTP server so we can attach the /cdp WS
|
|
1162
1162
|
// upgrade handler to it.
|
|
1163
|
-
const server =
|
|
1163
|
+
const server = createBridgeServer(app);
|
|
1164
1164
|
// 4. CDP WebSocket proxy at /cdp — noServer mode so we own the upgrade
|
|
1165
1165
|
// handler routing for /cdp and /licks-ws.
|
|
1166
1166
|
const wss = createCdpWebSocketServer(state.bridgeToken);
|