sliccy 6.112.4 → 6.112.6

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.
Files changed (95) hide show
  1. package/dist/node-server/http-keepalive.d.ts +34 -0
  2. package/dist/node-server/http-keepalive.js +41 -0
  3. package/dist/node-server/index.js +2 -2
  4. package/dist/ui/.vite/manifest.json +138 -137
  5. package/dist/ui/assets/{account-store-D70z_yO5.js → account-store-1jHrkitr.js} +1 -1
  6. package/dist/ui/assets/{account-store-B3f-l-jt.js → account-store-yyvxS08-.js} +1 -1
  7. package/dist/ui/assets/{adobe-BRlKLkkQ.js → adobe-C6Ak2LWa.js} +1 -1
  8. package/dist/ui/assets/{adobe-k-m8pmTS.js → adobe-cyqThTLM.js} +1 -1
  9. package/dist/ui/assets/{agent-bridge-BqjAoNUf.js → agent-bridge-AAfpu4bW.js} +1 -1
  10. package/dist/ui/assets/{agent-panels-RneBItRe.js → agent-panels-YPIVBeEc.js} +1 -1
  11. package/dist/ui/assets/{apply-layout-DzjHaXRe.js → apply-layout-Cmqkui7H.js} +1 -1
  12. package/dist/ui/assets/{apps-BEVCpVN0.js → apps-D_K9az00.js} +1 -1
  13. package/dist/ui/assets/{auto-mount-table-BRFqHPcB.js → auto-mount-table-BhFTO0Bn.js} +1 -1
  14. package/dist/ui/assets/{azure-openai-BJ1cYZ2M.js → azure-openai-BAZHGshY.js} +1 -1
  15. package/dist/ui/assets/{azure-openai-ChK12_Uk.js → azure-openai-DHiy6rJ1.js} +1 -1
  16. package/dist/ui/assets/backend-hostfs-CciGcalA.js +1 -0
  17. package/dist/ui/assets/backend-hostfs-In96W2M8.js +1 -0
  18. package/dist/ui/assets/{cerebras-B9Z6MCch.js → cerebras-BLGqA_gt.js} +1 -1
  19. package/dist/ui/assets/{cerebras-DNkVBTks.js → cerebras-CsLqCFVZ.js} +1 -1
  20. package/dist/ui/assets/{connect-surface-CRXNPBGI.js → connect-surface-BDPFxWKQ.js} +1 -1
  21. package/dist/ui/assets/{directed-approval-DNxALRIR.js → directed-approval-BBEtrnVX.js} +1 -1
  22. package/dist/ui/assets/{fs-BO4V2Z_q.js → fs-B1pXkOnM.js} +1 -1
  23. package/dist/ui/assets/{fs-80WHk5Hb.js → fs-Ci9jn8-T.js} +2 -2
  24. package/dist/ui/assets/{github-CvaDwGdD.js → github-C-Av-0iP.js} +2 -2
  25. package/dist/ui/assets/{github-CFlqk9ps.js → github-D-U4rb-W.js} +1 -1
  26. package/dist/ui/assets/{github-copilot-MM8Tpwn2.js → github-copilot-BpV7MG9i.js} +1 -1
  27. package/dist/ui/assets/{github-copilot-B13HlOo9.js → github-copilot-CAbnrkuq.js} +1 -1
  28. package/dist/ui/assets/{github-install-Bm_uCKXC.js → github-install-D0ytYYbu.js} +1 -1
  29. package/dist/ui/assets/{github-zip-Bqtwtfr7.js → github-zip-DZbr3qWX.js} +1 -1
  30. package/dist/ui/assets/{js-realm-worker-CHIuQdq-.js → js-realm-worker-DlWEsScS.js} +1 -1
  31. package/dist/ui/assets/{kernel-worker-BgucGvxZ.js → kernel-worker-DWGg_sxz.js} +621 -621
  32. package/dist/ui/assets/{local-llm-DZLn1YLb.js → local-llm-BU7S-AVF.js} +1 -1
  33. package/dist/ui/assets/{local-llm-DDIpnXLI.js → local-llm-DvAmncyT.js} +1 -1
  34. package/dist/ui/assets/{main-W20AbqqF.js → main-u8HY3_-C.js} +3 -3
  35. package/dist/ui/assets/{mount-BhKHPJ0t.js → mount-DPKD0kyn.js} +3 -3
  36. package/dist/ui/assets/{mount-CjD6A-dA.js → mount-i111XTmz.js} +1 -1
  37. package/dist/ui/assets/{mount-recovery-DJ-Bvidw.js → mount-recovery-D8egEvQB.js} +1 -1
  38. package/dist/ui/assets/{new-session-CG86gx28.js → new-session-Ds3amI7B.js} +2 -2
  39. package/dist/ui/assets/{oauth-bootstrap-BXVy8GOk.js → oauth-bootstrap-CnqTURKj.js} +2 -2
  40. package/dist/ui/assets/{openai-codex-BsOK_EUW.js → openai-codex-BrybEwLX.js} +1 -1
  41. package/dist/ui/assets/{openai-codex-BUJorx66.js → openai-codex-CZ6BCC2H.js} +1 -1
  42. package/dist/ui/assets/{openrouter-C8LIcw5U.js → openrouter-Blcz-X3E.js} +1 -1
  43. package/dist/ui/assets/{openrouter-BrxyoCbR.js → openrouter-COyFG8jP.js} +1 -1
  44. package/dist/ui/assets/{openrouter-oauth-D64Ebhmz.js → openrouter-oauth-BNrHFJJ3.js} +1 -1
  45. package/dist/ui/assets/{openrouter-oauth-BTZCdA38.js → openrouter-oauth-ZPlHUd1U.js} +1 -1
  46. package/dist/ui/assets/{panel-rpc-handlers-DP4QW2_r.js → panel-rpc-handlers-CWWZNkBG.js} +2 -2
  47. package/dist/ui/assets/{panelize-shell-D8SpCM1_.js → panelize-shell-BKRcYmaD.js} +4 -4
  48. package/dist/ui/assets/{provider-DBXUieC5.js → provider-Cg1bP565.js} +1 -1
  49. package/dist/ui/assets/{provider-Do7aOOtm.js → provider-l8PeSdKi.js} +2 -2
  50. package/dist/ui/assets/{provider-settings-Cqxptsvs.js → provider-settings-CFYVC9dl.js} +1 -1
  51. package/dist/ui/assets/{provider-settings-Bk6Nzxxq.js → provider-settings-DJmsw9lZ.js} +1 -1
  52. package/dist/ui/assets/provider-store-access-DGPvTOHA.js +1 -0
  53. package/dist/ui/assets/{provider-store-access-DGN2DE_L.js → provider-store-access-lAE2ULA-.js} +2 -2
  54. package/dist/ui/assets/{providers-w3UpuVJ7.js → providers-BKaQ7cr_.js} +2 -2
  55. package/dist/ui/assets/{providers-BS3QLLDk.js → providers-DERBWQMz.js} +1 -1
  56. package/dist/ui/assets/{quick-llm-eNqWcO0a.js → quick-llm-CWShBYyo.js} +1 -1
  57. package/dist/ui/assets/{recovery-screen-d59NpLgV.js → recovery-screen-D_DG7koi.js} +1 -1
  58. package/dist/ui/assets/{run-MBbACQaU.js → run-1LYrXYmz.js} +1 -1
  59. package/dist/ui/assets/{run-DTiJh7fB.js → run-BTvgQczm.js} +2 -2
  60. package/dist/ui/assets/{session-freezer-Dcstn02C.js → session-freezer-CcmV_y6V.js} +3 -3
  61. package/dist/ui/assets/{setup-feature-flags-remote-MUihR7_C.js → setup-feature-flags-remote-BUVzW-8N.js} +1 -1
  62. package/dist/ui/assets/{setup-standalone-prelude-D-My7gqn.js → setup-standalone-prelude-OwqR_Yuo.js} +1 -1
  63. package/dist/ui/assets/{setup-sudo-DWVKfxX5.js → setup-sudo-Baouj9Bk.js} +2 -2
  64. package/dist/ui/assets/{skills-C4OPb7lv.js → skills-CQj4SPDp.js} +1 -1
  65. package/dist/ui/assets/slicc-version-CRzt7Voe.js +1 -0
  66. package/dist/ui/assets/{state-B-6qOUGY.js → state-CghWg_Kw.js} +1 -1
  67. package/dist/ui/assets/{store-DKaVNOdU.js → store-Dl-OYaSV.js} +1 -1
  68. package/dist/ui/assets/{store-CJOsAi2B.js → store-gvOC7Lmj.js} +1 -1
  69. package/dist/ui/assets/{sudo-CNW0dVE5.js → sudo-BHrJ0pDh.js} +1 -1
  70. package/dist/ui/assets/{upgrade-detection-DvWUyLV6.js → upgrade-detection-CiGs_jPp.js} +1 -1
  71. package/dist/ui/assets/{wc-attach-CU3BE3l1.js → wc-attach-BTwhdveb.js} +2 -2
  72. package/dist/ui/assets/{wc-extension-ZJGWvF9c.js → wc-extension-BfUkz-HX.js} +2 -2
  73. package/dist/ui/assets/{wc-float-label-CbDdlGLO.js → wc-float-label-D8jbiKPt.js} +1 -1
  74. package/dist/ui/assets/{wc-floatbar-online-C0IuZZKr.js → wc-floatbar-online-CEXclrfN.js} +1 -1
  75. package/dist/ui/assets/{wc-follower-CTyxrOzu.js → wc-follower-C-Ejb2MU.js} +3 -3
  76. package/dist/ui/assets/{wc-follower-oauth-SkmauQIC.js → wc-follower-oauth-DAzZYGjh.js} +1 -1
  77. package/dist/ui/assets/{wc-live-9pvTjifM.js → wc-live-CJTVhCzY.js} +5 -5
  78. package/dist/ui/assets/{wc-nav-BE5dy4LG.js → wc-nav-nf4MwQVm.js} +2 -2
  79. package/dist/ui/assets/{wc-onboarding-xdhdNGcZ.js → wc-onboarding-Bi2JZ0qd.js} +2 -2
  80. package/dist/ui/assets/{wc-placeholder-Cf022JY0.js → wc-placeholder-CNr8ACxD.js} +2 -2
  81. package/dist/ui/assets/{wc-settings-m4Ir4Q6n.js → wc-settings-C07YcGBL.js} +2 -2
  82. package/dist/ui/assets/{wc-shell-Cn5weYPT.js → wc-shell-CO135SLj.js} +193 -193
  83. package/dist/ui/assets/{wc-shortcut-config-DZ0FRyoV.js → wc-shortcut-config-BqJ_oRIq.js} +1 -1
  84. package/dist/ui/assets/wc-sprinkles-D8kYOeh_.js +2 -0
  85. package/dist/ui/assets/{wc-tray-mjZWSM63.js → wc-tray-BHQm7jst.js} +4 -4
  86. package/dist/ui/assets/{xai-grok-BWiDrNsj.js → xai-grok-B1G96fYR.js} +1 -1
  87. package/dist/ui/assets/{xai-grok-weW--uzN.js → xai-grok-BeET6lOL.js} +1 -1
  88. package/dist/ui/index.html +6 -6
  89. package/dist/ui/packages/webapp/index.html +6 -6
  90. package/package.json +1 -1
  91. package/dist/ui/assets/backend-hostfs-CwOm0hxZ.js +0 -1
  92. package/dist/ui/assets/backend-hostfs-DHZa_yjt.js +0 -1
  93. package/dist/ui/assets/provider-store-access-d0qE5Z_s.js +0 -1
  94. package/dist/ui/assets/slicc-version-P9XLGLfH.js +0 -1
  95. 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 = createServer(app);
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);