sliccy 5.31.1 → 5.31.3

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 (133) hide show
  1. package/dist/node-server/_cloud_core/src/operations/resume.d.ts.map +1 -1
  2. package/dist/node-server/_cloud_core/src/operations/resume.js +10 -9
  3. package/dist/node-server/_shared/electron-overlay-route.d.ts +31 -0
  4. package/dist/node-server/_shared/electron-overlay-route.d.ts.map +1 -0
  5. package/dist/node-server/_shared/electron-overlay-route.js +29 -0
  6. package/dist/node-server/_shared/electron-overlay-route.js.map +1 -0
  7. package/dist/node-server/_shared/index.d.ts +1 -0
  8. package/dist/node-server/_shared/index.d.ts.map +1 -1
  9. package/dist/node-server/_shared/index.js +1 -0
  10. package/dist/node-server/_shared/index.js.map +1 -1
  11. package/dist/node-server/electron-controller.d.ts +2 -10
  12. package/dist/node-server/electron-controller.js +5 -10
  13. package/dist/node-server/electron-runtime.d.ts +0 -1
  14. package/dist/node-server/electron-runtime.js +0 -1
  15. package/dist/ui/assets/__vite-browser-external-CDnYSdyJ.js +1 -0
  16. package/dist/ui/assets/account-store-BSEcudvg.js +99 -0
  17. package/dist/ui/assets/{account-store-CufoCtRK.js → account-store-SL9GSzVk.js} +3 -3
  18. package/dist/ui/assets/{adobe-CzkIC8mZ.js → adobe-DbSSf4Ld.js} +1 -1
  19. package/dist/ui/assets/{adobe-BHiE6HjD.js → adobe-SNd1IfRO.js} +2 -2
  20. package/dist/ui/assets/adobe-oauth-state-Ge2y0PGt.js +1 -0
  21. package/dist/ui/assets/{adobe-oauth-state-hIbA-bCY.js → adobe-oauth-state-X5E5a44s.js} +1 -1
  22. package/dist/ui/assets/{agent-message-to-chat-CsrQq0sg.js → agent-message-to-chat-C1C-ZYPB.js} +1 -1
  23. package/dist/ui/assets/{apps-B5vEInFZ.js → apps-BQ_qFSmZ.js} +1 -1
  24. package/dist/ui/assets/{azure-openai-DS8Knhiz.js → azure-openai-C4FPpKAs.js} +1 -1
  25. package/dist/ui/assets/{azure-openai-BPeYDsFl.js → azure-openai-g-MISqMy.js} +1 -1
  26. package/dist/ui/assets/{cerebras-CDQN4Obw.js → cerebras-D2PjlO7P.js} +1 -1
  27. package/dist/ui/assets/{cerebras-B8Jo2XB1.js → cerebras-zumaaXYF.js} +1 -1
  28. package/dist/ui/assets/{composer-speech-D7pXrLX8.js → composer-speech-C8TRsqUk.js} +1 -1
  29. package/dist/ui/assets/{connect-surface-D8xQOaor.js → connect-surface-C37aNu3W.js} +1 -1
  30. package/dist/ui/assets/dip-CZO83CmG.js +1 -0
  31. package/dist/ui/assets/{dist-BG1IxpLe.js → dist-Crm-xEtc.js} +1 -1
  32. package/dist/ui/assets/{dist-EE4Al_F3.js → dist-Z_lsorao.js} +1 -1
  33. package/dist/ui/assets/{ensure-speech-assets-d5VIFIIS.js → ensure-speech-assets-C16fjyEc.js} +1 -1
  34. package/dist/ui/assets/esp8266-f57A77mF.js +1 -0
  35. package/dist/ui/assets/{esptool-operations-BJlZgV2w.js → esptool-operations-DS77K1xA.js} +2 -2
  36. package/dist/ui/assets/{fs-DGFq_Mxy.js → fs-4jha6tKU.js} +2 -2
  37. package/dist/ui/assets/{fs-CryNXen8.js → fs-CJe7ORQQ.js} +1 -1
  38. package/dist/ui/assets/{github-CTWZAIB1.js → github-B7MJQ6o8.js} +1 -1
  39. package/dist/ui/assets/{github-DRVxfI4e.js → github-bHdfOCia.js} +2 -2
  40. package/dist/ui/assets/{github-copilot-DVPbv0Ot.js → github-copilot-B3U5ZsUu.js} +1 -1
  41. package/dist/ui/assets/{github-copilot-CR-2580l.js → github-copilot-Brb8tPWW.js} +1 -1
  42. package/dist/ui/assets/{hear-pJ6dxizz.js → hear-DEv4kmVy.js} +1 -1
  43. package/dist/ui/assets/{hear-C2Oy26rV.js → hear-DVfG4tMB.js} +1 -1
  44. package/dist/ui/assets/{kernel-worker-BOQlsxzN.js → kernel-worker-DU_V0U3r.js} +344 -345
  45. package/dist/ui/assets/{kokoro-engine-CtJdZC7U.js → kokoro-engine-BCF6RB67.js} +1 -1
  46. package/dist/ui/assets/{lick-ws-bridge-DH009Ya6.js → lick-ws-bridge-Bw7A25PO.js} +1 -1
  47. package/dist/ui/assets/{lick-ws-bridge-B7WV8f-q.js → lick-ws-bridge-CWz8ua2f.js} +1 -1
  48. package/dist/ui/assets/{local-llm-CTPBIO5P.js → local-llm-CUYHWkoy.js} +1 -1
  49. package/dist/ui/assets/{main-Yr2sAIA-.js → main-LqqRM1F-.js} +4 -4
  50. package/dist/ui/assets/mount-COvarpEy.js +2 -0
  51. package/dist/ui/assets/mount-DhKiCtt7.js +1 -0
  52. package/dist/ui/assets/mount-bridge-client-DHpxu7lQ.js +1 -0
  53. package/dist/ui/assets/new-session-COz75sHo.js +2 -0
  54. package/dist/ui/assets/oauth-bootstrap-BRe2dg9j.js +2 -0
  55. package/dist/ui/assets/{oauth-service-DY8Ud2Yu.js → oauth-service-BSqTYvb6.js} +1 -1
  56. package/dist/ui/assets/{openai-codex-DlwnaPEj.js → openai-codex-BYbsJPYQ.js} +1 -1
  57. package/dist/ui/assets/{openai-codex-D7QSo0uM.js → openai-codex-Bg862N5_.js} +1 -1
  58. package/dist/ui/assets/{page-follower-tray-wpVcQCFL.js → page-follower-tray-CKjmGVTI.js} +1 -1
  59. package/dist/ui/assets/panel-rpc-handlers-DV_SVK7O.js +2 -0
  60. package/dist/ui/assets/port-bridge-client-BJ5rcoKH.js +2 -0
  61. package/dist/ui/assets/port-bridge-client-vT8ubtB-.js +1 -0
  62. package/dist/ui/assets/{provider-B2-NQQon.js → provider-C1MeNgf6.js} +2 -2
  63. package/dist/ui/assets/{provider-BGNOqrtL.js → provider-CH9Vg0CP.js} +1 -1
  64. package/dist/ui/assets/provider-store-access-DEnkpFQB.js +1 -0
  65. package/dist/ui/assets/provider-store-access-hYm5ykP5.js +1 -0
  66. package/dist/ui/assets/providers-BYABmiE-.js +2 -0
  67. package/dist/ui/assets/{providers-B4TZx5PO.js → providers-DTc9cavg.js} +1 -1
  68. package/dist/ui/assets/proxied-fetch-iGqLvoxh.js +2 -0
  69. package/dist/ui/assets/{py-realm-worker-DJfA3V8e.js → py-realm-worker-BP0PXobe.js} +1 -1
  70. package/dist/ui/assets/{pyodide-dCNxT3QU.js → pyodide-C3-pUJSm.js} +2 -2
  71. package/dist/ui/assets/{pyodide-CHuPF4e3.js → pyodide-CxYFR9UT.js} +1 -1
  72. package/dist/ui/assets/{quick-llm-CvPLRDgB.js → quick-llm-CpQ7FC1y.js} +1 -1
  73. package/dist/ui/assets/{secret-env-C-5TIS7_.js → secret-env-kbusPsVw.js} +1 -1
  74. package/dist/ui/assets/{secret-topology-D6iS4SOH.js → secret-topology-DnYeyyJY.js} +1 -1
  75. package/dist/ui/assets/secrets-bridge-client-x_puVSDN.js +1 -0
  76. package/dist/ui/assets/session-freezer-ClZHZ4rq.js +1 -0
  77. package/dist/ui/assets/{speak-BvHvt4mX.js → speak-DnUM0f7v.js} +1 -1
  78. package/dist/ui/assets/{speak-qia_ii-y.js → speak-qQJqxyY_.js} +1 -1
  79. package/dist/ui/assets/{sprinkle-manager-ChmTv6wJ.js → sprinkle-manager-DqB-1sMP.js} +1 -1
  80. package/dist/ui/assets/src-BdPw21ST.js +1 -0
  81. package/dist/ui/assets/{store-Yx-6Id5z.js → store-CQZC3J0e.js} +1 -1
  82. package/dist/ui/assets/{sudo-oNdO0hJk.js → sudo-DDua5CDS.js} +1 -1
  83. package/dist/ui/assets/{transformers-env-DPleNPK9.js → transformers-env-Bd5uUAET.js} +1 -1
  84. package/dist/ui/assets/{transformers-env-tAIm37Yk.js → transformers-env-CjH48rcA.js} +1 -1
  85. package/dist/ui/assets/{tray-leader-D2BTQKPA.js → tray-leader-tUG5SYx1.js} +1 -1
  86. package/dist/ui/assets/{tray-leave-runtime-Bk7lAsZD.js → tray-leave-runtime-DFSM2v0u.js} +1 -1
  87. package/dist/ui/assets/{upgrade-detection-BGZECbZS.js → upgrade-detection-SjHrqVRd.js} +1 -1
  88. package/dist/ui/assets/{voice-reply-CkkHHNmV.js → voice-reply-Cfv2GJPY.js} +1 -1
  89. package/dist/ui/assets/wc-attach-BLShAwZU.js +13 -0
  90. package/dist/ui/assets/wc-extension-9BJC8pnc.js +2 -0
  91. package/dist/ui/assets/{wc-float-label-bfJhTEza.js → wc-float-label-Dh8xz8qh.js} +1 -1
  92. package/dist/ui/assets/wc-follower-DcPEJsCg.js +4 -0
  93. package/dist/ui/assets/{wc-live-Bahzf7iY.js → wc-live-CpCIXFgr.js} +5 -5
  94. package/dist/ui/assets/wc-nav-BipzeLE6.js +2 -0
  95. package/dist/ui/assets/{wc-onboarding-BJpuvWul.js → wc-onboarding-CcG_XrLd.js} +2 -2
  96. package/dist/ui/assets/wc-placeholder-BYxtEGbt.js +4 -0
  97. package/dist/ui/assets/{wc-settings-Daanx0yL.js → wc-settings-CdRw8sxH.js} +2 -2
  98. package/dist/ui/assets/{wc-shell-amvvddsN.js → wc-shell-CrTQtlJQ.js} +3 -3
  99. package/dist/ui/assets/wc-sprinkles-CiD8jtkB.js +2 -0
  100. package/dist/ui/assets/wc-tray-CSrI5SrA.js +2 -0
  101. package/dist/ui/assets/{whisper-engine-SAFByApN.js → whisper-engine-6ZaZ9EaS.js} +1 -1
  102. package/dist/ui/assets/{whisper-session-CouZGLHz.js → whisper-session-Duou3zwG.js} +2 -2
  103. package/dist/ui/assets/{xai-grok-C650vv2T.js → xai-grok-BClQ5lXS.js} +1 -1
  104. package/dist/ui/assets/{xai-grok-BGULFVRv.js → xai-grok-Bjh8Mg84.js} +1 -1
  105. package/dist/ui/index.html +8 -7
  106. package/dist/ui/llm-proxy-sw.js +1 -1
  107. package/dist/ui/packages/webapp/index.html +8 -7
  108. package/package.json +4 -4
  109. package/dist/ui/assets/__vite-browser-external-Dyo3iKee.js +0 -1
  110. package/dist/ui/assets/account-store-CbtT2UK_.js +0 -99
  111. package/dist/ui/assets/adobe-oauth-state---RmeoFk.js +0 -1
  112. package/dist/ui/assets/dip-B3HkOg2P.js +0 -1
  113. package/dist/ui/assets/esp8266-BYVSt9HZ.js +0 -1
  114. package/dist/ui/assets/mount-9aR2Hmq9.js +0 -2
  115. package/dist/ui/assets/mount-bridge-client-CB9Fm9Jh.js +0 -2
  116. package/dist/ui/assets/mount-tjfv2hMK.js +0 -1
  117. package/dist/ui/assets/new-session-BDOY4e6B.js +0 -2
  118. package/dist/ui/assets/oauth-bootstrap-DiW8f4Vr.js +0 -2
  119. package/dist/ui/assets/panel-rpc-handlers-DVCVQxHC.js +0 -2
  120. package/dist/ui/assets/provider-store-access-C8sjN5g9.js +0 -1
  121. package/dist/ui/assets/provider-store-access-CRPq-cmP.js +0 -1
  122. package/dist/ui/assets/providers-kdSIfEzm.js +0 -2
  123. package/dist/ui/assets/proxied-fetch-Bht31_rT.js +0 -2
  124. package/dist/ui/assets/secrets-bridge-client-DwfYAgDv.js +0 -2
  125. package/dist/ui/assets/session-freezer-BT7imza9.js +0 -1
  126. package/dist/ui/assets/src-x0cJ68Fe.js +0 -1
  127. package/dist/ui/assets/wc-attach-BUw0fK9O.js +0 -13
  128. package/dist/ui/assets/wc-extension-BZl1EyiB.js +0 -2
  129. package/dist/ui/assets/wc-follower-BNlgVmv5.js +0 -4
  130. package/dist/ui/assets/wc-nav-CndHO66K.js +0 -2
  131. package/dist/ui/assets/wc-placeholder-BWDIrC_G.js +0 -4
  132. package/dist/ui/assets/wc-sprinkles-BblVeyPm.js +0 -2
  133. package/dist/ui/assets/wc-tray-CWYcJaRj.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../../src/operations/resume.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,eAAe,EAIrB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAiB,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;4FAEwF;IACxF,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,0EAA0E;IAC1E,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;kEAC8D;IAC9D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAsCD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,eAAe,GACrB;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,CA2BxE;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,YAAY,CAAC,CA0GvB"}
1
+ {"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../../src/operations/resume.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,eAAe,EAIrB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAiB,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;4FAEwF;IACxF,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,0EAA0E;IAC1E,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;kEAC8D;IAC9D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAsCD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,eAAe,GACrB;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,CA2BxE;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,YAAY,CAAC,CA2GvB"}
@@ -123,12 +123,13 @@ export async function resumeCone(deps, opts) {
123
123
  await handle.writeFile('/slicc/secrets.env', opts.refreshSecretsContents);
124
124
  }
125
125
  // Kick the leader to recover from a possible onReconnectGaveUp state.
126
- // 5×1s retry covers the CDP-cold-start race after a long pause.
126
+ // 15×2s retry covers the CDP-cold-start race after a long pause
127
+ // Chrome needs time to restore renderer processes after multi-hour pauses.
127
128
  // Success = curl exited 0 AND status is 200. 503 means the SLICC page
128
129
  // target isn't ready yet — retry. Any other status is a hard error.
129
130
  const kicked = await kickLeaderUntilReady(handle);
130
131
  if (!kicked) {
131
- throw new CloudError('LEADER_NOT_READY', 'Failed to kick leader after 5 retries (sandbox may not be healthy)');
132
+ throw new CloudError('LEADER_NOT_READY', `Failed to kick leader after ${RESUME_MAX_RETRIES} retries (sandbox may not be healthy)`);
132
133
  }
133
134
  const refreshed = await pollForRefreshedStatus(handle, baselineUpdatedAt, {
134
135
  timeoutMs: opts.pollTimeoutMs ?? 60_000,
@@ -157,8 +158,10 @@ export async function resumeCone(deps, opts) {
157
158
  coneConfigIndex: resumeIndex,
158
159
  };
159
160
  }
161
+ const RESUME_MAX_RETRIES = 15;
162
+ const RESUME_RETRY_DELAY_MS = 2000;
160
163
  async function kickLeaderUntilReady(handle) {
161
- for (let i = 0; i < 5; i++) {
164
+ for (let i = 0; i < RESUME_MAX_RETRIES; i++) {
162
165
  const result = await handle.run(KICK_CMD);
163
166
  if (result.exitCode === 0) {
164
167
  const status = result.stdout.trim();
@@ -168,7 +171,7 @@ async function kickLeaderUntilReady(handle) {
168
171
  throw new CloudError('LEADER_NOT_READY', `/api/leader-restart returned unexpected status ${status}`);
169
172
  }
170
173
  }
171
- await new Promise((r) => setTimeout(r, 1000));
174
+ await new Promise((r) => setTimeout(r, RESUME_RETRY_DELAY_MS));
172
175
  }
173
176
  return false;
174
177
  }
@@ -177,10 +180,8 @@ const RELOAD_CMD = 'curl -sS -X POST http://localhost:5710/api/secrets/reload -o
177
180
  // window like the leader kick. Throws if it never succeeds — a stale fetch-proxy
178
181
  // would silently serve old flat secrets.
179
182
  async function reloadSecretsProxyUntilReady(handle) {
180
- // Track why the last attempt didn't succeed so the exhaustion error is
181
- // actionable (HTTP 503 cold-start vs. a connection-level curl failure).
182
183
  let lastError = 'no attempt made';
183
- for (let i = 0; i < 5; i++) {
184
+ for (let i = 0; i < RESUME_MAX_RETRIES; i++) {
184
185
  const result = await handle.run(RELOAD_CMD);
185
186
  if (result.exitCode === 0) {
186
187
  const status = result.stdout.trim();
@@ -194,7 +195,7 @@ async function reloadSecretsProxyUntilReady(handle) {
194
195
  else {
195
196
  lastError = `curl exit ${result.exitCode}: ${result.stderr.trim()}`;
196
197
  }
197
- await new Promise((r) => setTimeout(r, 1000));
198
+ await new Promise((r) => setTimeout(r, RESUME_RETRY_DELAY_MS));
198
199
  }
199
- throw new CloudError('INTERNAL', `Failed to reload secrets proxy after 5 retries (changed secrets may be stale; last: ${lastError})`);
200
+ throw new CloudError('INTERNAL', `Failed to reload secrets proxy after ${RESUME_MAX_RETRIES} retries (changed secrets may be stale; last: ${lastError})`);
200
201
  }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Single source of truth for the hosted Electron thin-overlay route and the
3
+ * `role` query-param vocabulary used along that route. The same contract is
4
+ * read by node-server (constructs the URL), cloudflare-worker (special-cases
5
+ * the response's CSP + cache headers), and webapp (detects overlay mode from
6
+ * `window.location.pathname`). Keeping the constants here is what stops the
7
+ * three packages from drifting.
8
+ */
9
+ /**
10
+ * Path of the hosted Electron thin-overlay app. node-server mints
11
+ * `…/electron?bridge=…` URLs against this path; cloudflare-worker omits
12
+ * `Content-Security-Policy: frame-ancestors` on responses for this path so the
13
+ * overlay can be framed by `file://`-embedded Electron apps; the webapp
14
+ * classifies its runtime mode as `electron-overlay` when `location.pathname`
15
+ * matches.
16
+ */
17
+ export declare const ELECTRON_OVERLAY_APP_PATH = "/electron";
18
+ /**
19
+ * Query-param name carrying the overlay role on the hosted launcher URL.
20
+ * The pinned leader tab carries `role=leader`; auto-follow tabs carry
21
+ * `role=follower`. The leader drives the `/cdp` bridge; followers stay off
22
+ * the bridge and observe via tray sync.
23
+ */
24
+ export declare const BRIDGE_ROLE_QUERY_PARAM = "role";
25
+ /** `BRIDGE_ROLE_QUERY_PARAM` value for the bridge-driving leader tab. */
26
+ export declare const BRIDGE_ROLE_LEADER = "leader";
27
+ /** `BRIDGE_ROLE_QUERY_PARAM` value for tray-syncing follower tabs. */
28
+ export declare const BRIDGE_ROLE_FOLLOWER = "follower";
29
+ /** Allowed values of the overlay role query param. */
30
+ export type BridgeRole = typeof BRIDGE_ROLE_LEADER | typeof BRIDGE_ROLE_FOLLOWER;
31
+ //# sourceMappingURL=electron-overlay-route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electron-overlay-route.d.ts","sourceRoot":"","sources":["../src/electron-overlay-route.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,cAAc,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAE9C,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,sEAAsE;AACtE,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAE/C,sDAAsD;AACtD,MAAM,MAAM,UAAU,GAAG,OAAO,kBAAkB,GAAG,OAAO,oBAAoB,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Single source of truth for the hosted Electron thin-overlay route and the
3
+ * `role` query-param vocabulary used along that route. The same contract is
4
+ * read by node-server (constructs the URL), cloudflare-worker (special-cases
5
+ * the response's CSP + cache headers), and webapp (detects overlay mode from
6
+ * `window.location.pathname`). Keeping the constants here is what stops the
7
+ * three packages from drifting.
8
+ */
9
+ /**
10
+ * Path of the hosted Electron thin-overlay app. node-server mints
11
+ * `…/electron?bridge=…` URLs against this path; cloudflare-worker omits
12
+ * `Content-Security-Policy: frame-ancestors` on responses for this path so the
13
+ * overlay can be framed by `file://`-embedded Electron apps; the webapp
14
+ * classifies its runtime mode as `electron-overlay` when `location.pathname`
15
+ * matches.
16
+ */
17
+ export const ELECTRON_OVERLAY_APP_PATH = '/electron';
18
+ /**
19
+ * Query-param name carrying the overlay role on the hosted launcher URL.
20
+ * The pinned leader tab carries `role=leader`; auto-follow tabs carry
21
+ * `role=follower`. The leader drives the `/cdp` bridge; followers stay off
22
+ * the bridge and observe via tray sync.
23
+ */
24
+ export const BRIDGE_ROLE_QUERY_PARAM = 'role';
25
+ /** `BRIDGE_ROLE_QUERY_PARAM` value for the bridge-driving leader tab. */
26
+ export const BRIDGE_ROLE_LEADER = 'leader';
27
+ /** `BRIDGE_ROLE_QUERY_PARAM` value for tray-syncing follower tabs. */
28
+ export const BRIDGE_ROLE_FOLLOWER = 'follower';
29
+ //# sourceMappingURL=electron-overlay-route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electron-overlay-route.js","sourceRoot":"","sources":["../src/electron-overlay-route.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAW,CAAC;AAErD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE9C,yEAAyE;AACzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE3C,sEAAsE;AACtE,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export * from './base64.js';
2
2
  export * from './cdp-frame-unmask.js';
3
+ export * from './electron-overlay-route.js';
3
4
  export * from './oauth-extra-domains-storage.js';
4
5
  export * from './preview-url.js';
5
6
  export * from './secret-masking.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC"}
@@ -1,6 +1,7 @@
1
1
  // Re-exports added in Task 1.2 (secret-masking) and Task 1.3 (secrets-pipeline).
2
2
  export * from './base64.js';
3
3
  export * from './cdp-frame-unmask.js';
4
+ export * from './electron-overlay-route.js';
4
5
  export * from './oauth-extra-domains-storage.js';
5
6
  export * from './preview-url.js';
6
7
  export * from './secret-masking.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAEjF,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAEjF,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC"}
@@ -1,14 +1,7 @@
1
+ import { BRIDGE_ROLE_FOLLOWER, BRIDGE_ROLE_LEADER, BRIDGE_ROLE_QUERY_PARAM } from './_shared/index.js';
1
2
  import { type ChildProcess } from 'child_process';
2
3
  import { type ElectronInspectableTarget } from './electron-runtime.js';
3
- /**
4
- * Query param name used to mark the role of an overlay tab on the hosted
5
- * launcher URL. The pinned leader carries `role=leader`; auto-follow
6
- * followers carry `role=follower`. The hosted webapp interprets these to
7
- * decide which tab anchors the CDP bridge vs. follows the leader.
8
- */
9
- export declare const BRIDGE_ROLE_QUERY_PARAM = "role";
10
- export declare const BRIDGE_ROLE_LEADER = "leader";
11
- export declare const BRIDGE_ROLE_FOLLOWER = "follower";
4
+ export { BRIDGE_ROLE_FOLLOWER, BRIDGE_ROLE_LEADER, BRIDGE_ROLE_QUERY_PARAM };
12
5
  /**
13
6
  * Thin-bridge coordinates for the Electron overlay. The injected overlay
14
7
  * always loads from a hosted launcher (`hostedLeaderOrigin`, defaulting to
@@ -271,4 +264,3 @@ export declare class ElectronOverlayInjector {
271
264
  private handleFetchRequestPaused;
272
265
  private connectToTarget;
273
266
  }
274
- export {};
@@ -1,3 +1,4 @@
1
+ import { BRIDGE_ROLE_FOLLOWER, BRIDGE_ROLE_LEADER, BRIDGE_ROLE_QUERY_PARAM, ELECTRON_OVERLAY_APP_PATH, } from './_shared/index.js';
1
2
  import { execFile as nodeExecFile, spawn } from 'child_process';
2
3
  import { existsSync } from 'fs';
3
4
  import { readFile } from 'fs/promises';
@@ -7,7 +8,7 @@ import { promisify } from 'util';
7
8
  import { WebSocket } from 'ws';
8
9
  import { inflateSync } from 'zlib';
9
10
  import { BRIDGE_TOKEN_QUERY_PARAM, BRIDGE_WS_QUERY_PARAM } from './bridge-security.js';
10
- import { buildElectronAppLaunchSpec, buildElectronOverlayBootstrapScript, ELECTRON_OVERLAY_APP_PATH, getElectronOverlayEntryDistPath, selectBestOverlayTargets, } from './electron-runtime.js';
11
+ import { buildElectronAppLaunchSpec, buildElectronOverlayBootstrapScript, getElectronOverlayEntryDistPath, selectBestOverlayTargets, } from './electron-runtime.js';
11
12
  const execFile = promisify(nodeExecFile);
12
13
  const ELECTRON_OVERLAY_SYNC_INTERVAL_MS = 1500;
13
14
  /**
@@ -16,15 +17,9 @@ const ELECTRON_OVERLAY_SYNC_INTERVAL_MS = 1500;
16
17
  * emitting any navigation event for the event-driven re-injection to hook.
17
18
  */
18
19
  const ELECTRON_OVERLAY_PRESENCE_CHECK_INTERVAL_MS = 2000;
19
- /**
20
- * Query param name used to mark the role of an overlay tab on the hosted
21
- * launcher URL. The pinned leader carries `role=leader`; auto-follow
22
- * followers carry `role=follower`. The hosted webapp interprets these to
23
- * decide which tab anchors the CDP bridge vs. follows the leader.
24
- */
25
- export const BRIDGE_ROLE_QUERY_PARAM = 'role';
26
- export const BRIDGE_ROLE_LEADER = 'leader';
27
- export const BRIDGE_ROLE_FOLLOWER = 'follower';
20
+ // Re-export the shared overlay-role constants so downstream callers
21
+ // (including tests) keep the existing import surface.
22
+ export { BRIDGE_ROLE_FOLLOWER, BRIDGE_ROLE_LEADER, BRIDGE_ROLE_QUERY_PARAM };
28
23
  /**
29
24
  * Build the thin-bridge config for the Electron overlay injector. The
30
25
  * hosted-leader origin defaults to production `https://www.sliccy.ai`
@@ -24,7 +24,6 @@ export declare const DEFAULT_ELECTRON_SERVE_PORT = 5710;
24
24
  export declare const DEFAULT_ELECTRON_SERVE_HOST = "localhost";
25
25
  export declare const DEFAULT_ELECTRON_CDP_PORT = 9223;
26
26
  export declare const DEFAULT_ELECTRON_TARGET_URL = "about:blank";
27
- export declare const ELECTRON_OVERLAY_APP_PATH = "/electron";
28
27
  export declare const PORT_HASH_RANGE = 40;
29
28
  /**
30
29
  * Simple string hash function that returns a value between 0 and max-1.
@@ -4,7 +4,6 @@ export const DEFAULT_ELECTRON_SERVE_PORT = 5710;
4
4
  export const DEFAULT_ELECTRON_SERVE_HOST = 'localhost';
5
5
  export const DEFAULT_ELECTRON_CDP_PORT = 9223;
6
6
  export const DEFAULT_ELECTRON_TARGET_URL = 'about:blank';
7
- export const ELECTRON_OVERLAY_APP_PATH = '/electron';
8
7
  // Port allocation constants
9
8
  export const PORT_HASH_RANGE = 40;
10
9
  /**
@@ -0,0 +1 @@
1
+ import{t as e}from"./py-realm-worker-BP0PXobe.js";var t=e(((e,t)=>{t.exports={}}));export default t();
@@ -0,0 +1,99 @@
1
+ import{n as e,t}from"./rolldown-runtime-aKtaBQYM.js";import{t as n}from"./logger-LESFN7Hj.js";import{h as r,m as i,o as a,r as o,t as s}from"./proxied-fetch-BVw2cmL4.js";import{i as c,r as l}from"./tool-ui-t6ocn6AG.js";import{t as u}from"./port-bridge-client-vT8ubtB-.js";import{n as d,r as f}from"./panel-rpc-CjFVE0nK.js";import{n as p,o as m,t as h}from"./providers-DTc9cavg.js";import{c as g,d as _,r as v,t as y,u as b}from"./bedrock-camp-DlP7CPgV.js";import{d as x,l as S,u as C}from"./transform-messages-BjP6vDPY.js";function w(){return typeof chrome<`u`&&chrome?.runtime?.id?`extension-direct`:o()?`extension-delegate`:globalThis.__slicc_connect_mode?`connect`:`node-rest`}function ee(){return w()===`node-rest`}async function te(e,t,n,r,i,a){let o=[...e],s={...t,messages:[...t.messages,...e]};await r({type:`agent_start`}),await r({type:`turn_start`});for(let t of e)await r({type:`message_start`,message:t}),await r({type:`message_end`,message:t});return await re(s,o,n,i,r,a),o}async function ne(e,t,n,r,i){if(e.messages.length===0)throw Error(`Cannot continue: no messages in context`);if(e.messages[e.messages.length-1].role===`assistant`)throw Error(`Cannot continue from message role: assistant`);let a=[],o={...e};return await n({type:`agent_start`}),await n({type:`turn_start`}),await re(o,a,t,r,n,i),a}async function re(e,t,n,r,i,a){let o=e,s=n,c=!0,l=await s.getSteeringMessages?.()||[];for(;;){let e=!0;for(;e||l.length>0;){if(c?c=!1:await i({type:`turn_start`}),l.length>0){for(let e of l)await i({type:`message_start`,message:e}),await i({type:`message_end`,message:e}),o.messages.push(e),t.push(e);l=[]}let n=await ie(o,s,r,i,a);if(t.push(n),n.stopReason===`error`||n.stopReason===`aborted`){await i({type:`turn_end`,message:n,toolResults:[]}),await i({type:`agent_end`,messages:t});return}let u=n.content.filter(e=>e.type===`toolCall`),d=[];if(e=!1,u.length>0){let a=await T(o,n,s,r,i);d.push(...a.messages),e=!a.terminate;for(let e of d)o.messages.push(e),t.push(e)}await i({type:`turn_end`,message:n,toolResults:d});let f={message:n,toolResults:d,context:o,newMessages:t},p=await s.prepareNextTurn?.(f);if(p&&(o=p.context??o,s={...s,model:p.model??s.model,reasoning:p.thinkingLevel===void 0?s.reasoning:p.thinkingLevel===`off`?void 0:p.thinkingLevel}),await s.shouldStopAfterTurn?.({message:n,toolResults:d,context:o,newMessages:t})){await i({type:`agent_end`,messages:t});return}l=await s.getSteeringMessages?.()||[]}let n=await s.getFollowUpMessages?.()||[];if(n.length>0){l=n;continue}break}await i({type:`agent_end`,messages:t})}async function ie(e,t,n,r,i){let a=e.messages;t.transformContext&&(a=await t.transformContext(a,n));let o=await t.convertToLlm(a),s={systemPrompt:e.systemPrompt,messages:o,tools:e.tools},c=i||_,l=(t.getApiKey?await t.getApiKey(t.model.provider):void 0)||t.apiKey,u=await c(t.model,s,{...t,apiKey:l,signal:n}),d=null,f=!1;for await(let t of u)switch(t.type){case`start`:d=t.partial,e.messages.push(d),f=!0,await r({type:`message_start`,message:{...d}});break;case`text_start`:case`text_delta`:case`text_end`:case`thinking_start`:case`thinking_delta`:case`thinking_end`:case`toolcall_start`:case`toolcall_delta`:case`toolcall_end`:d&&(d=t.partial,e.messages[e.messages.length-1]=d,await r({type:`message_update`,assistantMessageEvent:t,message:{...d}}));break;case`done`:case`error`:{let t=await u.result();return f?e.messages[e.messages.length-1]=t:e.messages.push(t),f||await r({type:`message_start`,message:{...t}}),await r({type:`message_end`,message:t}),t}}let p=await u.result();return f?e.messages[e.messages.length-1]=p:(e.messages.push(p),await r({type:`message_start`,message:{...p}})),await r({type:`message_end`,message:p}),p}async function T(e,t,n,r,i){let a=t.content.filter(e=>e.type===`toolCall`),o=a.some(t=>e.tools?.find(e=>e.name===t.name)?.executionMode===`sequential`);return n.toolExecution===`sequential`||o?ae(e,t,a,n,r,i):oe(e,t,a,n,r,i)}async function ae(e,t,n,r,i,a){let o=[],s=[];for(let c of n){await a({type:`tool_execution_start`,toolCallId:c.id,toolName:c.name,args:c.arguments});let n=await le(e,t,c,r,i),l;l=n.kind===`immediate`?{toolCall:c,result:n.result,isError:n.isError}:await de(e,t,n,await ue(n,i,a),r,i),await fe(l,a);let u=pe(l);if(await me(u,a),o.push(l),s.push(u),i?.aborted)break}return{messages:s,terminate:se(o)}}async function oe(e,t,n,r,i,a){let o=[];for(let s of n){await a({type:`tool_execution_start`,toolCallId:s.id,toolName:s.name,args:s.arguments});let n=await le(e,t,s,r,i);if(n.kind===`immediate`){let e={toolCall:s,result:n.result,isError:n.isError};if(await fe(e,a),o.push(e),i?.aborted)break;continue}if(o.push(async()=>{let o=await de(e,t,n,await ue(n,i,a),r,i);return await fe(o,a),o}),i?.aborted)break}let s=await Promise.all(o.map(e=>typeof e==`function`?e():Promise.resolve(e))),c=[];for(let e of s){let t=pe(e);await me(t,a),c.push(t)}return{messages:c,terminate:se(s)}}function se(e){return e.length>0&&e.every(e=>e.result.terminate===!0)}function ce(e,t){if(!e.prepareArguments)return t;let n=e.prepareArguments(t.arguments);return n===t.arguments?t:{...t,arguments:n}}async function le(e,t,n,r,i){let a=e.tools?.find(e=>e.name===n.name);if(!a)return{kind:`immediate`,result:E(`Tool ${n.name} not found`),isError:!0};try{let o=g(a,ce(a,n));if(r.beforeToolCall){let a=await r.beforeToolCall({assistantMessage:t,toolCall:n,args:o,context:e},i);if(i?.aborted)return{kind:`immediate`,result:E(`Operation aborted`),isError:!0};if(a?.block)return{kind:`immediate`,result:E(a.reason||`Tool execution was blocked`),isError:!0}}return i?.aborted?{kind:`immediate`,result:E(`Operation aborted`),isError:!0}:{kind:`prepared`,toolCall:n,tool:a,args:o}}catch(e){return{kind:`immediate`,result:E(e instanceof Error?e.message:String(e)),isError:!0}}}async function ue(e,t,n){let r=[];try{let i=await e.tool.execute(e.toolCall.id,e.args,t,t=>{r.push(Promise.resolve(n({type:`tool_execution_update`,toolCallId:e.toolCall.id,toolName:e.toolCall.name,args:e.toolCall.arguments,partialResult:t})))});return await Promise.all(r),{result:i,isError:!1}}catch(e){return await Promise.all(r),{result:E(e instanceof Error?e.message:String(e)),isError:!0}}}async function de(e,t,n,r,i,a){let o=r.result,s=r.isError;if(i.afterToolCall)try{let r=await i.afterToolCall({assistantMessage:t,toolCall:n.toolCall,args:n.args,result:o,isError:s,context:e},a);r&&(o={content:r.content??o.content,details:r.details??o.details,terminate:r.terminate??o.terminate},s=r.isError??s)}catch(e){o=E(e instanceof Error?e.message:String(e)),s=!0}return{toolCall:n.toolCall,result:o,isError:s}}function E(e){return{content:[{type:`text`,text:e}],details:{}}}async function fe(e,t){await t({type:`tool_execution_end`,toolCallId:e.toolCall.id,toolName:e.toolCall.name,result:e.result,isError:e.isError})}function pe(e){return{role:`toolResult`,toolCallId:e.toolCall.id,toolName:e.toolCall.name,content:e.result.content,details:e.result.details,isError:e.isError,timestamp:Date.now()}}async function me(e,t){await t({type:`message_start`,message:e}),await t({type:`message_end`,message:e})}function he(e){return e.filter(e=>e.role===`user`||e.role===`assistant`||e.role===`toolResult`)}const ge={input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},_e={id:`unknown`,name:`unknown`,api:`unknown`,provider:`unknown`,baseUrl:``,reasoning:!1,input:[],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:0,maxTokens:0};function ve(e){let t=e?.tools?.slice()??[],n=e?.messages?.slice()??[];return{systemPrompt:e?.systemPrompt??``,model:e?.model??_e,thinkingLevel:e?.thinkingLevel??`off`,get tools(){return t},set tools(e){t=e.slice()},get messages(){return n},set messages(e){n=e.slice()},isStreaming:!1,streamingMessage:void 0,pendingToolCalls:new Set,errorMessage:void 0}}var ye=class{messages=[];mode;constructor(e){this.mode=e}enqueue(e){this.messages.push(e)}hasItems(){return this.messages.length>0}drain(){if(this.mode===`all`){let e=this.messages.slice();return this.messages=[],e}let e=this.messages[0];return e?(this.messages=this.messages.slice(1),[e]):[]}clear(){this.messages=[]}},be=class{_state;listeners=new Set;steeringQueue;followUpQueue;convertToLlm;transformContext;streamFn;getApiKey;onPayload;onResponse;beforeToolCall;afterToolCall;prepareNextTurn;activeRun;sessionId;thinkingBudgets;transport;maxRetryDelayMs;toolExecution;constructor(e={}){this._state=ve(e.initialState),this.convertToLlm=e.convertToLlm??he,this.transformContext=e.transformContext,this.streamFn=e.streamFn??_,this.getApiKey=e.getApiKey,this.onPayload=e.onPayload,this.onResponse=e.onResponse,this.beforeToolCall=e.beforeToolCall,this.afterToolCall=e.afterToolCall,this.prepareNextTurn=e.prepareNextTurn,this.steeringQueue=new ye(e.steeringMode??`one-at-a-time`),this.followUpQueue=new ye(e.followUpMode??`one-at-a-time`),this.sessionId=e.sessionId,this.thinkingBudgets=e.thinkingBudgets,this.transport=e.transport??`auto`,this.maxRetryDelayMs=e.maxRetryDelayMs,this.toolExecution=e.toolExecution??`parallel`}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}get state(){return this._state}set steeringMode(e){this.steeringQueue.mode=e}get steeringMode(){return this.steeringQueue.mode}set followUpMode(e){this.followUpQueue.mode=e}get followUpMode(){return this.followUpQueue.mode}steer(e){this.steeringQueue.enqueue(e)}followUp(e){this.followUpQueue.enqueue(e)}clearSteeringQueue(){this.steeringQueue.clear()}clearFollowUpQueue(){this.followUpQueue.clear()}clearAllQueues(){this.clearSteeringQueue(),this.clearFollowUpQueue()}hasQueuedMessages(){return this.steeringQueue.hasItems()||this.followUpQueue.hasItems()}get signal(){return this.activeRun?.abortController.signal}abort(){this.activeRun?.abortController.abort()}waitForIdle(){return this.activeRun?.promise??Promise.resolve()}reset(){this._state.messages=[],this._state.isStreaming=!1,this._state.streamingMessage=void 0,this._state.pendingToolCalls=new Set,this._state.errorMessage=void 0,this.clearFollowUpQueue(),this.clearSteeringQueue()}async prompt(e,t){if(this.activeRun)throw Error(`Agent is already processing a prompt. Use steer() or followUp() to queue messages, or wait for completion.`);let n=this.normalizePromptInput(e,t);await this.runPromptMessages(n)}async continue(){if(this.activeRun)throw Error(`Agent is already processing. Wait for completion before continuing.`);let e=this._state.messages[this._state.messages.length-1];if(!e)throw Error(`No messages to continue from`);if(e.role===`assistant`){let e=this.steeringQueue.drain();if(e.length>0){await this.runPromptMessages(e,{skipInitialSteeringPoll:!0});return}let t=this.followUpQueue.drain();if(t.length>0){await this.runPromptMessages(t);return}throw Error(`Cannot continue from message role: assistant`)}await this.runContinuation()}normalizePromptInput(e,t){if(Array.isArray(e))return e;if(typeof e!=`string`)return[e];let n=[{type:`text`,text:e}];return t&&t.length>0&&n.push(...t),[{role:`user`,content:n,timestamp:Date.now()}]}async runPromptMessages(e,t={}){await this.runWithLifecycle(async n=>{await te(e,this.createContextSnapshot(),this.createLoopConfig(t),e=>this.processEvents(e),n,this.streamFn)})}async runContinuation(){await this.runWithLifecycle(async e=>{await ne(this.createContextSnapshot(),this.createLoopConfig(),e=>this.processEvents(e),e,this.streamFn)})}createContextSnapshot(){return{systemPrompt:this._state.systemPrompt,messages:this._state.messages.slice(),tools:this._state.tools.slice()}}createLoopConfig(e={}){let t=e.skipInitialSteeringPoll===!0;return{model:this._state.model,reasoning:this._state.thinkingLevel===`off`?void 0:this._state.thinkingLevel,sessionId:this.sessionId,onPayload:this.onPayload,onResponse:this.onResponse,transport:this.transport,thinkingBudgets:this.thinkingBudgets,maxRetryDelayMs:this.maxRetryDelayMs,toolExecution:this.toolExecution,beforeToolCall:this.beforeToolCall,afterToolCall:this.afterToolCall,prepareNextTurn:this.prepareNextTurn?async()=>await this.prepareNextTurn?.(this.signal):void 0,convertToLlm:this.convertToLlm,transformContext:this.transformContext,getApiKey:this.getApiKey,getSteeringMessages:async()=>t?(t=!1,[]):this.steeringQueue.drain(),getFollowUpMessages:async()=>this.followUpQueue.drain()}}async runWithLifecycle(e){if(this.activeRun)throw Error(`Agent is already processing.`);let t=new AbortController,n=()=>{},r=new Promise(e=>{n=e});this.activeRun={promise:r,resolve:n,abortController:t},this._state.isStreaming=!0,this._state.streamingMessage=void 0,this._state.errorMessage=void 0;try{await e(t.signal)}catch(e){await this.handleRunFailure(e,t.signal.aborted)}finally{this.finishRun()}}async handleRunFailure(e,t){let n={role:`assistant`,content:[{type:`text`,text:``}],api:this._state.model.api,provider:this._state.model.provider,model:this._state.model.id,usage:ge,stopReason:t?`aborted`:`error`,errorMessage:e instanceof Error?e.message:String(e),timestamp:Date.now()};await this.processEvents({type:`message_start`,message:n}),await this.processEvents({type:`message_end`,message:n}),await this.processEvents({type:`turn_end`,message:n,toolResults:[]}),await this.processEvents({type:`agent_end`,messages:[n]})}finishRun(){this._state.isStreaming=!1,this._state.streamingMessage=void 0,this._state.pendingToolCalls=new Set,this.activeRun?.resolve(),this.activeRun=void 0}async processEvents(e){switch(e.type){case`message_start`:this._state.streamingMessage=e.message;break;case`message_update`:this._state.streamingMessage=e.message;break;case`message_end`:this._state.streamingMessage=void 0,this._state.messages.push(e.message);break;case`tool_execution_start`:{let t=new Set(this._state.pendingToolCalls);t.add(e.toolCallId),this._state.pendingToolCalls=t;break}case`tool_execution_end`:{let t=new Set(this._state.pendingToolCalls);t.delete(e.toolCallId),this._state.pendingToolCalls=t;break}case`turn_end`:e.message.role===`assistant`&&e.message.errorMessage&&(this._state.errorMessage=e.message.errorMessage);break;case`agent_end`:this._state.streamingMessage=void 0;break}let t=this.activeRun?.abortController.signal;if(!t)throw Error(`Agent listener invoked outside active run`);for(let n of this.listeners)await n(e,t)}};const xe=Symbol.for(`yaml.alias`),Se=Symbol.for(`yaml.document`),D=Symbol.for(`yaml.map`),Ce=Symbol.for(`yaml.pair`),we=Symbol.for(`yaml.scalar`),Te=Symbol.for(`yaml.seq`),O=Symbol.for(`yaml.node.type`),k=e=>!!e&&typeof e==`object`&&e[O]===xe,Ee=e=>!!e&&typeof e==`object`&&e[O]===Se,De=e=>!!e&&typeof e==`object`&&e[O]===D,A=e=>!!e&&typeof e==`object`&&e[O]===Ce,j=e=>!!e&&typeof e==`object`&&e[O]===we,Oe=e=>!!e&&typeof e==`object`&&e[O]===Te;function M(e){if(e&&typeof e==`object`)switch(e[O]){case D:case Te:return!0}return!1}function N(e){if(e&&typeof e==`object`)switch(e[O]){case xe:case D:case we:case Te:return!0}return!1}const ke=e=>(j(e)||M(e))&&!!e.anchor,P=Symbol(`break visit`),Ae=Symbol(`skip children`),F=Symbol(`remove node`);function je(e,t){let n=Pe(t);Ee(e)?Me(null,e.contents,n,Object.freeze([e]))===F&&(e.contents=null):Me(null,e,n,Object.freeze([]))}je.BREAK=P,je.SKIP=Ae,je.REMOVE=F;function Me(e,t,n,r){let i=Fe(e,t,n,r);if(N(i)||A(i))return Ie(e,r,i),Me(e,i,n,r);if(typeof i!=`symbol`){if(M(t)){r=Object.freeze(r.concat(t));for(let e=0;e<t.items.length;++e){let i=Me(e,t.items[e],n,r);if(typeof i==`number`)e=i-1;else if(i===P)return P;else i===F&&(t.items.splice(e,1),--e)}}else if(A(t)){r=Object.freeze(r.concat(t));let e=Me(`key`,t.key,n,r);if(e===P)return P;e===F&&(t.key=null);let i=Me(`value`,t.value,n,r);if(i===P)return P;i===F&&(t.value=null)}}return i}async function Ne(e,t){let n=Pe(t);Ee(e)?await I(null,e.contents,n,Object.freeze([e]))===F&&(e.contents=null):await I(null,e,n,Object.freeze([]))}Ne.BREAK=P,Ne.SKIP=Ae,Ne.REMOVE=F;async function I(e,t,n,r){let i=await Fe(e,t,n,r);if(N(i)||A(i))return Ie(e,r,i),I(e,i,n,r);if(typeof i!=`symbol`){if(M(t)){r=Object.freeze(r.concat(t));for(let e=0;e<t.items.length;++e){let i=await I(e,t.items[e],n,r);if(typeof i==`number`)e=i-1;else if(i===P)return P;else i===F&&(t.items.splice(e,1),--e)}}else if(A(t)){r=Object.freeze(r.concat(t));let e=await I(`key`,t.key,n,r);if(e===P)return P;e===F&&(t.key=null);let i=await I(`value`,t.value,n,r);if(i===P)return P;i===F&&(t.value=null)}}return i}function Pe(e){return typeof e==`object`&&(e.Collection||e.Node||e.Value)?Object.assign({Alias:e.Node,Map:e.Node,Scalar:e.Node,Seq:e.Node},e.Value&&{Map:e.Value,Scalar:e.Value,Seq:e.Value},e.Collection&&{Map:e.Collection,Seq:e.Collection},e):e}function Fe(e,t,n,r){if(typeof n==`function`)return n(e,t,r);if(De(t))return n.Map?.(e,t,r);if(Oe(t))return n.Seq?.(e,t,r);if(A(t))return n.Pair?.(e,t,r);if(j(t))return n.Scalar?.(e,t,r);if(k(t))return n.Alias?.(e,t,r)}function Ie(e,t,n){let r=t[t.length-1];if(M(r))r.items[e]=n;else if(A(r))e===`key`?r.key=n:r.value=n;else if(Ee(r))r.contents=n;else{let e=k(r)?`alias`:`scalar`;throw Error(`Cannot replace node with ${e} parent`)}}const Le={"!":`%21`,",":`%2C`,"[":`%5B`,"]":`%5D`,"{":`%7B`,"}":`%7D`},Re=e=>e.replace(/[!,[\]{}]/g,e=>Le[e]);var ze=class e{constructor(t,n){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},e.defaultYaml,t),this.tags=Object.assign({},e.defaultTags,n)}clone(){let t=new e(this.yaml,this.tags);return t.docStart=this.docStart,t}atDocument(){let t=new e(this.yaml,this.tags);switch(this.yaml.version){case`1.1`:this.atNextDocument=!0;break;case`1.2`:this.atNextDocument=!1,this.yaml={explicit:e.defaultYaml.explicit,version:`1.2`},this.tags=Object.assign({},e.defaultTags);break}return t}add(t,n){this.atNextDocument&&=(this.yaml={explicit:e.defaultYaml.explicit,version:`1.1`},this.tags=Object.assign({},e.defaultTags),!1);let r=t.trim().split(/[ \t]+/),i=r.shift();switch(i){case`%TAG`:{if(r.length!==2&&(n(0,`%TAG directive should contain exactly two parts`),r.length<2))return!1;let[e,t]=r;return this.tags[e]=t,!0}case`%YAML`:{if(this.yaml.explicit=!0,r.length!==1)return n(0,`%YAML directive should contain exactly one part`),!1;let[e]=r;if(e===`1.1`||e===`1.2`)return this.yaml.version=e,!0;{let t=/^\d+\.\d+$/.test(e);return n(6,`Unsupported YAML version ${e}`,t),!1}}default:return n(0,`Unknown directive ${i}`,!0),!1}}tagName(e,t){if(e===`!`)return`!`;if(e[0]!==`!`)return t(`Not a valid tag: ${e}`),null;if(e[1]===`<`){let n=e.slice(2,-1);return n===`!`||n===`!!`?(t(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==`>`&&t(`Verbatim tags must end with a >`),n)}let[,n,r]=e.match(/^(.*!)([^!]*)$/s);r||t(`The ${e} tag has no suffix`);let i=this.tags[n];if(i)try{return i+decodeURIComponent(r)}catch(e){return t(String(e)),null}return n===`!`?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,n]of Object.entries(this.tags))if(e.startsWith(n))return t+Re(e.substring(n.length));return e[0]===`!`?e:`!<${e}>`}toString(e){let t=this.yaml.explicit?[`%YAML ${this.yaml.version||`1.2`}`]:[],n=Object.entries(this.tags),r;if(e&&n.length>0&&N(e.contents)){let t={};je(e.contents,(e,n)=>{N(n)&&n.tag&&(t[n.tag]=!0)}),r=Object.keys(t)}else r=[];for(let[i,a]of n)i===`!!`&&a===`tag:yaml.org,2002:`||(!e||r.some(e=>e.startsWith(a)))&&t.push(`%TAG ${i} ${a}`);return t.join(`
2
+ `)}};ze.defaultYaml={explicit:!1,version:`1.2`},ze.defaultTags={"!!":`tag:yaml.org,2002:`};function Be(e){if(/[\x00-\x19\s,[\]{}]/.test(e)){let t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(e)}`;throw Error(t)}return!0}function Ve(e,t,n,r){if(r&&typeof r==`object`)if(Array.isArray(r))for(let t=0,n=r.length;t<n;++t){let n=r[t],i=Ve(e,r,String(t),n);i===void 0?delete r[t]:i!==n&&(r[t]=i)}else if(r instanceof Map)for(let t of Array.from(r.keys())){let n=r.get(t),i=Ve(e,r,t,n);i===void 0?r.delete(t):i!==n&&r.set(t,i)}else if(r instanceof Set)for(let t of Array.from(r)){let n=Ve(e,r,t,t);n===void 0?r.delete(t):n!==t&&(r.delete(t),r.add(n))}else for(let[t,n]of Object.entries(r)){let i=Ve(e,r,t,n);i===void 0?delete r[t]:i!==n&&(r[t]=i)}return e.call(t,n,r)}function L(e,t,n){if(Array.isArray(e))return e.map((e,t)=>L(e,String(t),n));if(e&&typeof e.toJSON==`function`){if(!n||!ke(e))return e.toJSON(t,n);let r={aliasCount:0,count:1,res:void 0};n.anchors.set(e,r),n.onCreate=e=>{r.res=e,delete n.onCreate};let i=e.toJSON(t,n);return n.onCreate&&n.onCreate(i),i}return typeof e==`bigint`&&!n?.keep?Number(e):e}var He=class{constructor(e){Object.defineProperty(this,O,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:t,maxAliasCount:n,onAnchor:r,reviver:i}={}){if(!Ee(e))throw TypeError(`A document argument is required`);let a={anchors:new Map,doc:e,keep:!0,mapAsMap:t===!0,mapKeyWarned:!1,maxAliasCount:typeof n==`number`?n:100},o=L(this,``,a);if(typeof r==`function`)for(let{count:e,res:t}of a.anchors.values())r(t,e);return typeof i==`function`?Ve(i,{"":o},``,o):o}},Ue=class extends He{constructor(e){super(xe),this.source=e,Object.defineProperty(this,"tag",{set(){throw Error(`Alias nodes cannot have tags`)}})}resolve(e,t){if(t?.maxAliasCount===0)throw ReferenceError(`Alias resolution is disabled`);let n;t?.aliasResolveCache?n=t.aliasResolveCache:(n=[],je(e,{Node:(e,t)=>{(k(t)||ke(t))&&n.push(t)}}),t&&(t.aliasResolveCache=n));let r;for(let e of n){if(e===this)break;e.anchor===this.source&&(r=e)}return r}toJSON(e,t){if(!t)return{source:this.source};let{anchors:n,doc:r,maxAliasCount:i}=t,a=this.resolve(r,t);if(!a){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw ReferenceError(e)}let o=n.get(a);if(o||=(L(a,null,t),n.get(a)),o?.res===void 0)throw ReferenceError(`This should not happen: Alias anchor was not resolved?`);if(i>=0&&(o.count+=1,o.aliasCount===0&&(o.aliasCount=We(r,a,n)),o.count*o.aliasCount>i))throw ReferenceError(`Excessive alias count indicates a resource exhaustion attack`);return o.res}toString(e,t,n){let r=`*${this.source}`;if(e){if(Be(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw Error(e)}if(e.implicitKey)return`${r} `}return r}};function We(e,t,n){if(k(t)){let r=t.resolve(e),i=n&&r&&n.get(r);return i?i.count*i.aliasCount:0}else if(M(t)){let r=0;for(let i of t.items){let t=We(e,i,n);t>r&&(r=t)}return r}else if(A(t)){let r=We(e,t.key,n),i=We(e,t.value,n);return Math.max(r,i)}return 1}const Ge=e=>!e||typeof e!=`function`&&typeof e!=`object`;var R=class extends He{constructor(e){super(we),this.value=e}toJSON(e,t){return t?.keep?this.value:L(this.value,e,t)}toString(){return String(this.value)}};R.BLOCK_FOLDED=`BLOCK_FOLDED`,R.BLOCK_LITERAL=`BLOCK_LITERAL`,R.PLAIN=`PLAIN`,R.QUOTE_DOUBLE=`QUOTE_DOUBLE`,R.QUOTE_SINGLE=`QUOTE_SINGLE`;function Ke(e,t,n){if(t){let e=n.filter(e=>e.tag===t),r=e.find(e=>!e.format)??e[0];if(!r)throw Error(`Tag ${t} not found`);return r}return n.find(t=>t.identify?.(e)&&!t.format)}function qe(e,t,n){if(Ee(e)&&(e=e.contents),N(e))return e;if(A(e)){let t=n.schema[D].createNode?.(n.schema,null,n);return t.items.push(e),t}(e instanceof String||e instanceof Number||e instanceof Boolean||typeof BigInt<`u`&&e instanceof BigInt)&&(e=e.valueOf());let{aliasDuplicateObjects:r,onAnchor:i,onTagObj:a,schema:o,sourceObjects:s}=n,c;if(r&&e&&typeof e==`object`){if(c=s.get(e),c)return c.anchor??=i(e),new Ue(c.anchor);c={anchor:null,node:null},s.set(e,c)}t?.startsWith(`!!`)&&(t=`tag:yaml.org,2002:`+t.slice(2));let l=Ke(e,t,o.tags);if(!l){if(e&&typeof e.toJSON==`function`&&(e=e.toJSON()),!e||typeof e!=`object`){let t=new R(e);return c&&(c.node=t),t}l=e instanceof Map?o[D]:Symbol.iterator in Object(e)?o[Te]:o[D]}a&&(a(l),delete n.onTagObj);let u=l?.createNode?l.createNode(n.schema,e,n):typeof l?.nodeClass?.from==`function`?l.nodeClass.from(n.schema,e,n):new R(e);return t?u.tag=t:l.default||(u.tag=l.tag),c&&(c.node=u),u}function Je(e,t,n){let r=n;for(let e=t.length-1;e>=0;--e){let n=t[e];if(typeof n==`number`&&Number.isInteger(n)&&n>=0){let e=[];e[n]=r,r=e}else r=new Map([[n,r]])}return qe(r,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error(`This should not happen, please report a bug.`)},schema:e,sourceObjects:new Map})}const Ye=e=>e==null||typeof e==`object`&&!!e[Symbol.iterator]().next().done;var Xe=class extends He{constructor(e,t){super(e),Object.defineProperty(this,"schema",{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(t=>N(t)||A(t)?t.clone(e):t),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(Ye(e))this.add(t);else{let[n,...r]=e,i=this.get(n,!0);if(M(i))i.addIn(r,t);else if(i===void 0&&this.schema)this.set(n,Je(this.schema,r,t));else throw Error(`Expected YAML collection at ${n}. Remaining path: ${r}`)}}deleteIn(e){let[t,...n]=e;if(n.length===0)return this.delete(t);let r=this.get(t,!0);if(M(r))return r.deleteIn(n);throw Error(`Expected YAML collection at ${t}. Remaining path: ${n}`)}getIn(e,t){let[n,...r]=e,i=this.get(n,!0);return r.length===0?!t&&j(i)?i.value:i:M(i)?i.getIn(r,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!A(t))return!1;let n=t.value;return n==null||e&&j(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(e){let[t,...n]=e;if(n.length===0)return this.has(t);let r=this.get(t,!0);return M(r)?r.hasIn(n):!1}setIn(e,t){let[n,...r]=e;if(r.length===0)this.set(n,t);else{let e=this.get(n,!0);if(M(e))e.setIn(r,t);else if(e===void 0&&this.schema)this.set(n,Je(this.schema,r,t));else throw Error(`Expected YAML collection at ${n}. Remaining path: ${r}`)}}};const Ze=e=>e.replace(/^(?!$)(?: $)?/gm,`#`);function Qe(e,t){return/^\n+$/.test(e)?e.substring(1):t?e.replace(/^(?! *$)/gm,t):e}const z=(e,t,n)=>e.endsWith(`
3
+ `)?Qe(n,t):n.includes(`
4
+ `)?`
5
+ `+Qe(n,t):(e.endsWith(` `)?``:` `)+n,$e=`flow`;function et(e,t,n=`flow`,{indentAtStart:r,lineWidth:i=80,minContentWidth:a=20,onFold:o,onOverflow:s}={}){if(!i||i<0)return e;i<a&&(a=0);let c=Math.max(1+a,1+i-t.length);if(e.length<=c)return e;let l=[],u={},d=i-t.length;typeof r==`number`&&(r>i-Math.max(2,a)?l.push(0):d=i-r);let f,p,m=!1,h=-1,g=-1,_=-1;n===`block`&&(h=tt(e,h,t.length),h!==-1&&(d=h+c));for(let r;r=e[h+=1];){if(n===`quoted`&&r===`\\`){switch(g=h,e[h+1]){case`x`:h+=3;break;case`u`:h+=5;break;case`U`:h+=9;break;default:h+=1}_=h}if(r===`
6
+ `)n===`block`&&(h=tt(e,h,t.length)),d=h+t.length+c,f=void 0;else{if(r===` `&&p&&p!==` `&&p!==`
7
+ `&&p!==` `){let t=e[h+1];t&&t!==` `&&t!==`
8
+ `&&t!==` `&&(f=h)}if(h>=d)if(f)l.push(f),d=f+c,f=void 0;else if(n===`quoted`){for(;p===` `||p===` `;)p=r,r=e[h+=1],m=!0;let t=h>_+1?h-2:g-1;if(u[t])return e;l.push(t),u[t]=!0,d=t+c,f=void 0}else m=!0}p=r}if(m&&s&&s(),l.length===0)return e;o&&o();let v=e.slice(0,l[0]);for(let r=0;r<l.length;++r){let i=l[r],a=l[r+1]||e.length;i===0?v=`\n${t}${e.slice(0,a)}`:(n===`quoted`&&u[i]&&(v+=`${e[i]}\\`),v+=`\n${t}${e.slice(i+1,a)}`)}return v}function tt(e,t,n){let r=t,i=t+1,a=e[i];for(;a===` `||a===` `;)if(t<i+n)a=e[++t];else{do a=e[++t];while(a&&a!==`
9
+ `);r=t,i=t+1,a=e[i]}return r}const nt=(e,t)=>({indentAtStart:t?e.indent.length:e.indentAtStart,lineWidth:e.options.lineWidth,minContentWidth:e.options.minContentWidth}),rt=e=>/^(%|---|\.\.\.)/m.test(e);function it(e,t,n){if(!t||t<0)return!1;let r=t-n,i=e.length;if(i<=r)return!1;for(let t=0,n=0;t<i;++t)if(e[t]===`
10
+ `){if(t-n>r)return!0;if(n=t+1,i-n<=r)return!1}return!0}function at(e,t){let n=JSON.stringify(e);if(t.options.doubleQuotedAsJSON)return n;let{implicitKey:r}=t,i=t.options.doubleQuotedMinMultiLineLength,a=t.indent||(rt(e)?` `:``),o=``,s=0;for(let e=0,t=n[e];t;t=n[++e])if(t===` `&&n[e+1]===`\\`&&n[e+2]===`n`&&(o+=n.slice(s,e)+`\\ `,e+=1,s=e,t=`\\`),t===`\\`)switch(n[e+1]){case`u`:{o+=n.slice(s,e);let t=n.substr(e+2,4);switch(t){case`0000`:o+=`\\0`;break;case`0007`:o+=`\\a`;break;case`000b`:o+=`\\v`;break;case`001b`:o+=`\\e`;break;case`0085`:o+=`\\N`;break;case`00a0`:o+=`\\_`;break;case`2028`:o+=`\\L`;break;case`2029`:o+=`\\P`;break;default:t.substr(0,2)===`00`?o+=`\\x`+t.substr(2):o+=n.substr(e,6)}e+=5,s=e+1}break;case`n`:if(r||n[e+2]===`"`||n.length<i)e+=1;else{for(o+=n.slice(s,e)+`
11
+
12
+ `;n[e+2]===`\\`&&n[e+3]===`n`&&n[e+4]!==`"`;)o+=`
13
+ `,e+=2;o+=a,n[e+2]===` `&&(o+=`\\`),e+=1,s=e+1}break;default:e+=1}return o=s?o+n.slice(s):n,r?o:et(o,a,`quoted`,nt(t,!1))}function ot(e,t){if(t.options.singleQuote===!1||t.implicitKey&&e.includes(`
14
+ `)||/[ \t]\n|\n[ \t]/.test(e))return at(e,t);let n=t.indent||(rt(e)?` `:``),r=`'`+e.replace(/'/g,`''`).replace(/\n+/g,`$&\n${n}`)+`'`;return t.implicitKey?r:et(r,n,$e,nt(t,!1))}function B(e,t){let{singleQuote:n}=t.options,r;if(n===!1)r=at;else{let t=e.includes(`"`),i=e.includes(`'`);r=t&&!i?ot:i&&!t?at:n?ot:at}return r(e,t)}let st;try{st=RegExp(`(^|(?<!
15
+ ))
16
+ +(?!
17
+ |$)`,`g`)}catch{st=/\n+(?!\n|$)/g}function ct({comment:e,type:t,value:n},r,i,a){let{blockQuote:o,commentString:s,lineWidth:c}=r.options;if(!o||/\n[\t ]+$/.test(n))return B(n,r);let l=r.indent||(r.forceBlockIndent||rt(n)?` `:``),u=o===`literal`?!0:o===`folded`||t===R.BLOCK_FOLDED?!1:t===R.BLOCK_LITERAL?!0:!it(n,c,l.length);if(!n)return u?`|
18
+ `:`>
19
+ `;let d,f;for(f=n.length;f>0;--f){let e=n[f-1];if(e!==`
20
+ `&&e!==` `&&e!==` `)break}let p=n.substring(f),m=p.indexOf(`
21
+ `);m===-1?d=`-`:n===p||m!==p.length-1?(d=`+`,a&&a()):d=``,p&&=(n=n.slice(0,-p.length),p[p.length-1]===`
22
+ `&&(p=p.slice(0,-1)),p.replace(st,`$&${l}`));let h=!1,g,_=-1;for(g=0;g<n.length;++g){let e=n[g];if(e===` `)h=!0;else if(e===`
23
+ `)_=g;else break}let v=n.substring(0,_<g?_+1:g);v&&=(n=n.substring(v.length),v.replace(/\n+/g,`$&${l}`));let y=(h?l?`2`:`1`:``)+d;if(e&&(y+=` `+s(e.replace(/ ?[\r\n]+/g,` `)),i&&i()),!u){let e=n.replace(/\n+/g,`
24
+ $&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,`$1$2`).replace(/\n+/g,`$&${l}`),i=!1,a=nt(r,!0);o!==`folded`&&t!==R.BLOCK_FOLDED&&(a.onOverflow=()=>{i=!0});let s=et(`${v}${e}${p}`,l,`block`,a);if(!i)return`>${y}\n${l}${s}`}return n=n.replace(/\n+/g,`$&${l}`),`|${y}\n${l}${v}${n}${p}`}function lt(e,t,n,r){let{type:i,value:a}=e,{actualString:o,implicitKey:s,indent:c,indentStep:l,inFlow:u}=t;if(s&&a.includes(`
25
+ `)||u&&/[[\]{},]/.test(a))return B(a,t);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(a))return s||u||!a.includes(`
26
+ `)?B(a,t):ct(e,t,n,r);if(!s&&!u&&i!==R.PLAIN&&a.includes(`
27
+ `))return ct(e,t,n,r);if(rt(a)){if(c===``)return t.forceBlockIndent=!0,ct(e,t,n,r);if(s&&c===l)return B(a,t)}let d=a.replace(/\n+/g,`$&\n${c}`);if(o){let e=e=>e.default&&e.tag!==`tag:yaml.org,2002:str`&&e.test?.test(d),{compat:n,tags:r}=t.doc.schema;if(r.some(e)||n?.some(e))return B(a,t)}return s?d:et(d,c,$e,nt(t,!1))}function ut(e,t,n,r){let{implicitKey:i,inFlow:a}=t,o=typeof e.value==`string`?e:Object.assign({},e,{value:String(e.value)}),{type:s}=e;s!==R.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(o.value)&&(s=R.QUOTE_DOUBLE);let c=e=>{switch(e){case R.BLOCK_FOLDED:case R.BLOCK_LITERAL:return i||a?B(o.value,t):ct(o,t,n,r);case R.QUOTE_DOUBLE:return at(o.value,t);case R.QUOTE_SINGLE:return ot(o.value,t);case R.PLAIN:return lt(o,t,n,r);default:return null}},l=c(s);if(l===null){let{defaultKeyType:e,defaultStringType:n}=t.options,r=i&&e||n;if(l=c(r),l===null)throw Error(`Unsupported default string type ${r}`)}return l}function dt(e,t){let n=Object.assign({blockQuote:!0,commentString:Ze,defaultKeyType:null,defaultStringType:`PLAIN`,directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:`false`,flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:`null`,simpleKeys:!1,singleQuote:null,trailingComma:!1,trueStr:`true`,verifyAliasOrder:!0},e.schema.toStringOptions,t),r;switch(n.collectionStyle){case`block`:r=!1;break;case`flow`:r=!0;break;default:r=null}return{anchors:new Set,doc:e,flowCollectionPadding:n.flowCollectionPadding?` `:``,indent:``,indentStep:typeof n.indent==`number`?` `.repeat(n.indent):` `,inFlow:r,options:n}}function ft(e,t){if(t.tag){let n=e.filter(e=>e.tag===t.tag);if(n.length>0)return n.find(e=>e.format===t.format)??n[0]}let n,r;if(j(t)){r=t.value;let i=e.filter(e=>e.identify?.(r));if(i.length>1){let e=i.filter(e=>e.test);e.length>0&&(i=e)}n=i.find(e=>e.format===t.format)??i.find(e=>!e.format)}else r=t,n=e.find(e=>e.nodeClass&&r instanceof e.nodeClass);if(!n){let e=r?.constructor?.name??(r===null?`null`:typeof r);throw Error(`Tag not resolved for ${e} value`)}return n}function pt(e,t,{anchors:n,doc:r}){if(!r.directives)return``;let i=[],a=(j(e)||M(e))&&e.anchor;a&&Be(a)&&(n.add(a),i.push(`&${a}`));let o=e.tag??(t.default?null:t.tag);return o&&i.push(r.directives.tagString(o)),i.join(` `)}function mt(e,t,n,r){if(A(e))return e.toString(t,n,r);if(k(e)){if(t.doc.directives)return e.toString(t);if(t.resolvedAliases?.has(e))throw TypeError(`Cannot stringify circular structure without alias nodes`);t.resolvedAliases?t.resolvedAliases.add(e):t.resolvedAliases=new Set([e]),e=e.resolve(t.doc)}let i,a=N(e)?e:t.doc.createNode(e,{onTagObj:e=>i=e});i??=ft(t.doc.schema.tags,a);let o=pt(a,i,t);o.length>0&&(t.indentAtStart=(t.indentAtStart??0)+o.length+1);let s=typeof i.stringify==`function`?i.stringify(a,t,n,r):j(a)?ut(a,t,n,r):a.toString(t,n,r);return o?j(a)||s[0]===`{`||s[0]===`[`?`${o} ${s}`:`${o}\n${t.indent}${s}`:s}function ht({key:e,value:t},n,r,i){let{allNullValues:a,doc:o,indent:s,indentStep:c,options:{commentString:l,indentSeq:u,simpleKeys:d}}=n,f=N(e)&&e.comment||null;if(d){if(f)throw Error(`With simple keys, key nodes cannot have comments`);if(M(e)||!N(e)&&typeof e==`object`)throw Error(`With simple keys, collection cannot be used as a key value`)}let p=!d&&(!e||f&&t==null&&!n.inFlow||M(e)||(j(e)?e.type===R.BLOCK_FOLDED||e.type===R.BLOCK_LITERAL:typeof e==`object`));n=Object.assign({},n,{allNullValues:!1,implicitKey:!p&&(d||!a),indent:s+c});let m=!1,h=!1,g=mt(e,n,()=>m=!0,()=>h=!0);if(!p&&!n.inFlow&&g.length>1024){if(d)throw Error(`With simple keys, single line scalar must not span more than 1024 characters`);p=!0}if(n.inFlow){if(a||t==null)return m&&r&&r(),g===``?`?`:p?`? ${g}`:g}else if(a&&!d||t==null&&p)return g=`? ${g}`,f&&!m?g+=z(g,n.indent,l(f)):h&&i&&i(),g;m&&(f=null),p?(f&&(g+=z(g,n.indent,l(f))),g=`? ${g}\n${s}:`):(g=`${g}:`,f&&(g+=z(g,n.indent,l(f))));let _,v,y;N(t)?(_=!!t.spaceBefore,v=t.commentBefore,y=t.comment):(_=!1,v=null,y=null,t&&typeof t==`object`&&(t=o.createNode(t))),n.implicitKey=!1,!p&&!f&&j(t)&&(n.indentAtStart=g.length+1),h=!1,!u&&c.length>=2&&!n.inFlow&&!p&&Oe(t)&&!t.flow&&!t.tag&&!t.anchor&&(n.indent=n.indent.substring(2));let b=!1,x=mt(t,n,()=>b=!0,()=>h=!0),S=` `;if(f||_||v){if(S=_?`
28
+ `:``,v){let e=l(v);S+=`\n${Qe(e,n.indent)}`}x===``&&!n.inFlow?S===`
29
+ `&&y&&(S=`
30
+
31
+ `):S+=`\n${n.indent}`}else if(!p&&M(t)){let e=x[0],r=x.indexOf(`
32
+ `),i=r!==-1,a=n.inFlow??t.flow??t.items.length===0;if(i||!a){let t=!1;if(i&&(e===`&`||e===`!`)){let n=x.indexOf(` `);e===`&`&&n!==-1&&n<r&&x[n+1]===`!`&&(n=x.indexOf(` `,n+1)),(n===-1||r<n)&&(t=!0)}t||(S=`\n${n.indent}`)}}else(x===``||x[0]===`
33
+ `)&&(S=``);return g+=S+x,n.inFlow?b&&r&&r():y&&!b?g+=z(g,n.indent,l(y)):h&&i&&i(),g}function gt(e,t){(e===`debug`||e===`warn`)&&console.warn(t)}const _t={identify:e=>e===`<<`||typeof e==`symbol`&&e.description===`<<`,default:`key`,tag:`tag:yaml.org,2002:merge`,test:/^<<$/,resolve:()=>Object.assign(new R(Symbol(`<<`)),{addToJSMap:yt}),stringify:()=>`<<`},vt=(e,t)=>(_t.identify(t)||j(t)&&(!t.type||t.type===R.PLAIN)&&_t.identify(t.value))&&e?.doc.schema.tags.some(e=>e.tag===_t.tag&&e.default);function yt(e,t,n){let r=xt(e,n);if(Oe(r))for(let n of r.items)bt(e,t,n);else if(Array.isArray(r))for(let n of r)bt(e,t,n);else bt(e,t,r)}function bt(e,t,n){let r=xt(e,n);if(!De(r))throw Error(`Merge sources must be maps or map aliases`);let i=r.toJSON(null,e,Map);for(let[e,n]of i)t instanceof Map?t.has(e)||t.set(e,n):t instanceof Set?t.add(e):Object.prototype.hasOwnProperty.call(t,e)||Object.defineProperty(t,e,{value:n,writable:!0,enumerable:!0,configurable:!0});return t}function xt(e,t){return e&&k(t)?t.resolve(e.doc,e):t}function St(e,t,{key:n,value:r}){if(N(n)&&n.addToJSMap)n.addToJSMap(e,t,r);else if(vt(e,n))yt(e,t,r);else{let i=L(n,``,e);if(t instanceof Map)t.set(i,L(r,i,e));else if(t instanceof Set)t.add(i);else{let a=Ct(n,i,e),o=L(r,a,e);a in t?Object.defineProperty(t,a,{value:o,writable:!0,enumerable:!0,configurable:!0}):t[a]=o}}return t}function Ct(e,t,n){if(t===null)return``;if(typeof t!=`object`)return String(t);if(N(e)&&n?.doc){let t=dt(n.doc,{});t.anchors=new Set;for(let e of n.anchors.keys())t.anchors.add(e.anchor);t.inFlow=!0,t.inStringifyKey=!0;let r=e.toString(t);if(!n.mapKeyWarned){let e=JSON.stringify(r);e.length>40&&(e=e.substring(0,36)+`..."`),gt(n.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${e}. Set mapAsMap: true to use object keys.`),n.mapKeyWarned=!0}return r}return JSON.stringify(t)}function wt(e,t,n){return new V(qe(e,void 0,n),qe(t,void 0,n))}var V=class e{constructor(e,t=null){Object.defineProperty(this,O,{value:Ce}),this.key=e,this.value=t}clone(t){let{key:n,value:r}=this;return N(n)&&(n=n.clone(t)),N(r)&&(r=r.clone(t)),new e(n,r)}toJSON(e,t){return St(t,t?.mapAsMap?new Map:{},this)}toString(e,t,n){return e?.doc?ht(this,e,t,n):JSON.stringify(this)}};function Tt(e,t,n){return(t.inFlow??e.flow?Dt:Et)(e,t,n)}function Et({comment:e,items:t},n,{blockItemPrefix:r,flowChars:i,itemIndent:a,onChompKeep:o,onComment:s}){let{indent:c,options:{commentString:l}}=n,u=Object.assign({},n,{indent:a,type:null}),d=!1,f=[];for(let e=0;e<t.length;++e){let i=t[e],o=null;if(N(i))!d&&i.spaceBefore&&f.push(``),Ot(n,f,i.commentBefore,d),i.comment&&(o=i.comment);else if(A(i)){let e=N(i.key)?i.key:null;e&&(!d&&e.spaceBefore&&f.push(``),Ot(n,f,e.commentBefore,d))}d=!1;let s=mt(i,u,()=>o=null,()=>d=!0);o&&(s+=z(s,a,l(o))),d&&o&&(d=!1),f.push(r+s)}let p;if(f.length===0)p=i.start+i.end;else{p=f[0];for(let e=1;e<f.length;++e){let t=f[e];p+=t?`\n${c}${t}`:`
34
+ `}}return e?(p+=`
35
+ `+Qe(l(e),c),s&&s()):d&&o&&o(),p}function Dt({items:e},t,{flowChars:n,itemIndent:r}){let{indent:i,indentStep:a,flowCollectionPadding:o,options:{commentString:s}}=t;r+=a;let c=Object.assign({},t,{indent:r,inFlow:!0,type:null}),l=!1,u=0,d=[];for(let n=0;n<e.length;++n){let i=e[n],a=null;if(N(i))i.spaceBefore&&d.push(``),Ot(t,d,i.commentBefore,!1),i.comment&&(a=i.comment);else if(A(i)){let e=N(i.key)?i.key:null;e&&(e.spaceBefore&&d.push(``),Ot(t,d,e.commentBefore,!1),e.comment&&(l=!0));let n=N(i.value)?i.value:null;n?(n.comment&&(a=n.comment),n.commentBefore&&(l=!0)):i.value==null&&e?.comment&&(a=e.comment)}a&&(l=!0);let o=mt(i,c,()=>a=null);l||=d.length>u||o.includes(`
36
+ `),n<e.length-1?o+=`,`:t.options.trailingComma&&(t.options.lineWidth>0&&(l||=d.reduce((e,t)=>e+t.length+2,2)+(o.length+2)>t.options.lineWidth),l&&(o+=`,`)),a&&(o+=z(o,r,s(a))),d.push(o),u=d.length}let{start:f,end:p}=n;if(d.length===0)return f+p;if(!l){let e=d.reduce((e,t)=>e+t.length+2,2);l=t.options.lineWidth>0&&e>t.options.lineWidth}if(l){let e=f;for(let t of d)e+=t?`\n${a}${i}${t}`:`
37
+ `;return`${e}\n${i}${p}`}else return`${f}${o}${d.join(` `)}${o}${p}`}function Ot({indent:e,options:{commentString:t}},n,r,i){if(r&&i&&(r=r.replace(/^\n+/,``)),r){let i=Qe(t(r),e);n.push(i.trimStart())}}function H(e,t){let n=j(t)?t.value:t;for(let r of e)if(A(r)&&(r.key===t||r.key===n||j(r.key)&&r.key.value===n))return r}var U=class extends Xe{static get tagName(){return`tag:yaml.org,2002:map`}constructor(e){super(D,e),this.items=[]}static from(e,t,n){let{keepUndefined:r,replacer:i}=n,a=new this(e),o=(e,o)=>{if(typeof i==`function`)o=i.call(t,e,o);else if(Array.isArray(i)&&!i.includes(e))return;(o!==void 0||r)&&a.items.push(wt(e,o,n))};if(t instanceof Map)for(let[e,n]of t)o(e,n);else if(t&&typeof t==`object`)for(let e of Object.keys(t))o(e,t[e]);return typeof e.sortMapEntries==`function`&&a.items.sort(e.sortMapEntries),a}add(e,t){let n;n=A(e)?e:!e||typeof e!=`object`||!(`key`in e)?new V(e,e?.value):new V(e.key,e.value);let r=H(this.items,n.key),i=this.schema?.sortMapEntries;if(r){if(!t)throw Error(`Key ${n.key} already set`);j(r.value)&&Ge(n.value)?r.value.value=n.value:r.value=n.value}else if(i){let e=this.items.findIndex(e=>i(n,e)<0);e===-1?this.items.push(n):this.items.splice(e,0,n)}else this.items.push(n)}delete(e){let t=H(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){let n=H(this.items,e)?.value;return(!t&&j(n)?n.value:n)??void 0}has(e){return!!H(this.items,e)}set(e,t){this.add(new V(e,t),!0)}toJSON(e,t,n){let r=n?new n:t?.mapAsMap?new Map:{};t?.onCreate&&t.onCreate(r);for(let e of this.items)St(t,r,e);return r}toString(e,t,n){if(!e)return JSON.stringify(this);for(let e of this.items)if(!A(e))throw Error(`Map items must all be pairs; found ${JSON.stringify(e)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),Tt(this,e,{blockItemPrefix:``,flowChars:{start:`{`,end:`}`},itemIndent:e.indent||``,onChompKeep:n,onComment:t})}};const kt={collection:`map`,default:!0,nodeClass:U,tag:`tag:yaml.org,2002:map`,resolve(e,t){return De(e)||t(`Expected a mapping for this tag`),e},createNode:(e,t,n)=>U.from(e,t,n)};var At=class extends Xe{static get tagName(){return`tag:yaml.org,2002:seq`}constructor(e){super(Te,e),this.items=[]}add(e){this.items.push(e)}delete(e){let t=jt(e);return typeof t==`number`?this.items.splice(t,1).length>0:!1}get(e,t){let n=jt(e);if(typeof n!=`number`)return;let r=this.items[n];return!t&&j(r)?r.value:r}has(e){let t=jt(e);return typeof t==`number`&&t<this.items.length}set(e,t){let n=jt(e);if(typeof n!=`number`)throw Error(`Expected a valid index, not ${e}.`);let r=this.items[n];j(r)&&Ge(t)?r.value=t:this.items[n]=t}toJSON(e,t){let n=[];t?.onCreate&&t.onCreate(n);let r=0;for(let e of this.items)n.push(L(e,String(r++),t));return n}toString(e,t,n){return e?Tt(this,e,{blockItemPrefix:`- `,flowChars:{start:`[`,end:`]`},itemIndent:(e.indent||``)+` `,onChompKeep:n,onComment:t}):JSON.stringify(this)}static from(e,t,n){let{replacer:r}=n,i=new this(e);if(t&&Symbol.iterator in Object(t)){let e=0;for(let a of t){if(typeof r==`function`){let n=t instanceof Set?a:String(e++);a=r.call(t,n,a)}i.items.push(qe(a,void 0,n))}}return i}};function jt(e){let t=j(e)?e.value:e;return t&&typeof t==`string`&&(t=Number(t)),typeof t==`number`&&Number.isInteger(t)&&t>=0?t:null}const Mt={collection:`seq`,default:!0,nodeClass:At,tag:`tag:yaml.org,2002:seq`,resolve(e,t){return Oe(e)||t(`Expected a sequence for this tag`),e},createNode:(e,t,n)=>At.from(e,t,n)};function Nt(e){return typeof e==`bigint`||Number.isInteger(e)}const Pt=({value:e})=>JSON.stringify(e),Ft=[{identify:e=>typeof e==`string`,default:!0,tag:`tag:yaml.org,2002:str`,resolve:e=>e,stringify:Pt},{identify:e=>e==null,createNode:()=>new R(null),default:!0,tag:`tag:yaml.org,2002:null`,test:/^null$/,resolve:()=>null,stringify:Pt},{identify:e=>typeof e==`boolean`,default:!0,tag:`tag:yaml.org,2002:bool`,test:/^true$|^false$/,resolve:e=>e===`true`,stringify:Pt},{identify:Nt,default:!0,tag:`tag:yaml.org,2002:int`,test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(e,t,{intAsBigInt:n})=>n?BigInt(e):parseInt(e,10),stringify:({value:e})=>Nt(e)?e.toString():JSON.stringify(e)},{identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:e=>parseFloat(e),stringify:Pt}];[kt,Mt].concat(Ft,{default:!0,tag:``,test:/^/,resolve(e,t){return t(`Unresolved plain scalar ${JSON.stringify(e)}`),e}});function It(e,t,n){let{replacer:r}=n,i=new At(e);i.tag=`tag:yaml.org,2002:pairs`;let a=0;if(t&&Symbol.iterator in Object(t))for(let e of t){typeof r==`function`&&(e=r.call(t,String(a++),e));let o,s;if(Array.isArray(e))if(e.length===2)o=e[0],s=e[1];else throw TypeError(`Expected [key, value] tuple: ${e}`);else if(e&&e instanceof Object){let t=Object.keys(e);if(t.length===1)o=t[0],s=e[o];else throw TypeError(`Expected tuple with one key, not ${t.length} keys`)}else o=e;i.items.push(wt(o,s,n))}return i}var Lt=class e extends At{constructor(){super(),this.add=U.prototype.add.bind(this),this.delete=U.prototype.delete.bind(this),this.get=U.prototype.get.bind(this),this.has=U.prototype.has.bind(this),this.set=U.prototype.set.bind(this),this.tag=e.tag}toJSON(e,t){if(!t)return super.toJSON(e);let n=new Map;t?.onCreate&&t.onCreate(n);for(let e of this.items){let r,i;if(A(e)?(r=L(e.key,``,t),i=L(e.value,r,t)):r=L(e,``,t),n.has(r))throw Error(`Ordered maps must not include duplicate keys`);n.set(r,i)}return n}static from(e,t,n){let r=It(e,t,n),i=new this;return i.items=r.items,i}};Lt.tag=`tag:yaml.org,2002:omap`;var Rt=class e extends U{constructor(t){super(t),this.tag=e.tag}add(e){let t;t=A(e)?e:e&&typeof e==`object`&&`key`in e&&`value`in e&&e.value===null?new V(e.key,null):new V(e,null),H(this.items,t.key)||this.items.push(t)}get(e,t){let n=H(this.items,e);return!t&&A(n)?j(n.key)?n.key.value:n.key:n}set(e,t){if(typeof t!=`boolean`)throw Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof t}`);let n=H(this.items,e);n&&!t?this.items.splice(this.items.indexOf(n),1):!n&&t&&this.items.push(new V(e))}toJSON(e,t){return super.toJSON(e,t,Set)}toString(e,t,n){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),t,n);throw Error(`Set items must all have null values`)}static from(e,t,n){let{replacer:r}=n,i=new this(e);if(t&&Symbol.iterator in Object(t))for(let e of t)typeof r==`function`&&(e=r.call(t,e,e)),i.items.push(wt(e,null,n));return i}};Rt.tag=`tag:yaml.org,2002:set`;const zt=Symbol(`break visit`),Bt=Symbol(`skip children`),Vt=Symbol(`remove item`);function W(e,t){`type`in e&&e.type===`document`&&(e={start:e.start,value:e.value}),Ht(Object.freeze([]),e,t)}W.BREAK=zt,W.SKIP=Bt,W.REMOVE=Vt,W.itemAtPath=(e,t)=>{let n=e;for(let[e,r]of t){let t=n?.[e];if(t&&`items`in t)n=t.items[r];else return}return n},W.parentCollection=(e,t)=>{let n=W.itemAtPath(e,t.slice(0,-1)),r=t[t.length-1][0],i=n?.[r];if(i&&`items`in i)return i;throw Error(`Parent collection not found`)};function Ht(e,t,n){let r=n(t,e);if(typeof r==`symbol`)return r;for(let i of[`key`,`value`]){let a=t[i];if(a&&`items`in a){for(let t=0;t<a.items.length;++t){let r=Ht(Object.freeze(e.concat([[i,t]])),a.items[t],n);if(typeof r==`number`)t=r-1;else if(r===zt)return zt;else r===Vt&&(a.items.splice(t,1),--t)}typeof r==`function`&&i===`key`&&(r=r(t,e))}}return typeof r==`function`?r(t,e):r}t(((e,t)=>{function n(e){return Array.isArray(e)?e:[e]}let r=/^\s+$/,i=/(?:[^\\]|^)\\$/,a=/^\\!/,o=/^\\#/,s=/\r?\n/g,c=/^\.{0,2}\/|^\.{1,2}$/,l=/\/$/,u=`node-ignore`;typeof Symbol<`u`&&(u=Symbol.for(`node-ignore`));let d=u,f=(e,t,n)=>(Object.defineProperty(e,t,{value:n}),n),p=/([0-z])-([0-z])/g,m=()=>!1,h=e=>e.replace(p,(e,t,n)=>t.charCodeAt(0)<=n.charCodeAt(0)?e:``),g=e=>{let{length:t}=e;return e.slice(0,t-t%2)},_=[[/^\uFEFF/,()=>``],[/((?:\\\\)*?)(\\?\s+)$/,(e,t,n)=>t+(n.indexOf(`\\`)===0?` `:``)],[/(\\+?)\s/g,(e,t)=>{let{length:n}=t;return t.slice(0,n-n%2)+` `}],[/[\\$.|*+(){^]/g,e=>`\\${e}`],[/(?!\\)\?/g,()=>`[^/]`],[/^\//,()=>`^`],[/\//g,()=>`\\/`],[/^\^*\\\*\\\*\\\//,()=>`^(?:.*\\/)?`],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?`^`:`(?:^|\\/)`}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(e,t,n)=>t+6<n.length?`(?:\\/[^\\/]+)*`:`\\/.+`],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(e,t,n)=>t+n.replace(/\\\*/g,`[^\\/]*`)],[/\\\\\\(?=[$.|*+(){^])/g,()=>`\\`],[/\\\\/g,()=>`\\`],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(e,t,n,r,i)=>t===`\\`?`\\[${n}${g(r)}${i}`:i===`]`&&r.length%2==0?`[${h(n)}${r}]`:`[]`],[/(?:[^*])$/,e=>/\/$/.test(e)?`${e}$`:`${e}(?=$|\\/$)`]],v=/(^|\\\/)?\\\*$/,y=`regex`,b=`checkRegex`,x={[y](e,t){return`${t?`${t}[^/]+`:`[^/]*`}(?=$|\\/$)`},[b](e,t){return`${t?`${t}[^/]*`:`[^/]*`}(?=$|\\/$)`}},S=e=>_.reduce((t,[n,r])=>t.replace(n,r.bind(e)),e),C=e=>typeof e==`string`,w=e=>e&&C(e)&&!r.test(e)&&!i.test(e)&&e.indexOf(`#`)!==0,ee=e=>e.split(s).filter(Boolean);var te=class{constructor(e,t,n,r,i,a){this.pattern=e,this.mark=t,this.negative=i,f(this,`body`,n),f(this,`ignoreCase`,r),f(this,`regexPrefix`,a)}get regex(){let e=`_regex`;return this[e]?this[e]:this._make(y,e)}get checkRegex(){let e=`_checkRegex`;return this[e]?this[e]:this._make(b,e)}_make(e,t){let n=this.regexPrefix.replace(v,x[e]),r=this.ignoreCase?new RegExp(n,`i`):new RegExp(n);return f(this,t,r)}};let ne=({pattern:e,mark:t},n)=>{let r=!1,i=e;i.indexOf(`!`)===0&&(r=!0,i=i.substr(1)),i=i.replace(a,`!`).replace(o,`#`);let s=S(i);return new te(e,t,i,n,r,s)};var re=class{constructor(e){this._ignoreCase=e,this._rules=[]}_add(e){if(e&&e[d]){this._rules=this._rules.concat(e._rules._rules),this._added=!0;return}if(C(e)&&(e={pattern:e}),w(e.pattern)){let t=ne(e,this._ignoreCase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,n(C(e)?ee(e):e).forEach(this._add,this),this._added}test(e,t,n){let r=!1,i=!1,a;this._rules.forEach(o=>{let{negative:s}=o;i===s&&r!==i||s&&!r&&!i&&!t||o[n].test(e)&&(r=!s,i=s,a=s?void 0:o)});let o={ignored:r,unignored:i};return a&&(o.rule=a),o}};let ie=(e,t)=>{throw new t(e)},T=(e,t,n)=>C(e)?e?T.isNotRelative(e)?n(`path should be a \`path.relative()\`d string, but got "${t}"`,RangeError):!0:n(`path must not be empty`,TypeError):n(`path must be a string, but got \`${t}\``,TypeError),ae=e=>c.test(e);T.isNotRelative=ae,T.convert=e=>e;var oe=class{constructor({ignorecase:e=!0,ignoreCase:t=e,allowRelativePaths:n=!1}={}){f(this,d,!0),this._rules=new re(t),this._strictPathCheck=!n,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}add(e){return this._rules.add(e)&&this._initCache(),this}addPattern(e){return this.add(e)}_test(e,t,n,r){let i=e&&T.convert(e);return T(i,e,this._strictPathCheck?ie:m),this._t(i,t,n,r)}checkIgnore(e){if(!l.test(e))return this.test(e);let t=e.split(`/`).filter(Boolean);if(t.pop(),t.length){let e=this._t(t.join(`/`)+`/`,this._testCache,!0,t);if(e.ignored)return e}return this._rules.test(e,!1,b)}_t(e,t,n,r){if(e in t)return t[e];if(r||=e.split(`/`).filter(Boolean),r.pop(),!r.length)return t[e]=this._rules.test(e,n,y);let i=this._t(r.join(`/`)+`/`,t,n,r);return t[e]=i.ignored?i:this._rules.test(e,n,y)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return n(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}};let se=e=>new oe(e),ce=e=>T(e&&T.convert(e),e,m),le=()=>{T.convert=e=>/^\\\\\?\\/.test(e)||/["<>|\u0000-\u001F]+/u.test(e)?e:e.replace(/\\/g,`/`);let e=/^[a-z]:\//i;T.isNotRelative=t=>e.test(t)||ae(t)};typeof process<`u`&&process.platform===`win32`&&le(),t.exports=se,se.default=se,t.exports.isPathValid=ce,f(t.exports,Symbol.for(`setupWindows`),le)}))(),globalThis.Buffer;function Ut(e){if(!Number.isFinite(e)||e<=0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n>=10||r===0?Math.round(n):Math.round(n*10)/10} ${t[r]}`}function Wt(e){let t=e.mimeType||`application/octet-stream`;return`${e.name} (${t}, ${Ut(e.size)})`}function Gt(e){let t=Wt(e);return e.kind===`image`&&e.data?e.path?`[Attached image: ${t} — full-resolution copy saved to ${e.path}]`:`[Attached image: ${t}]`:e.kind===`text`&&e.text!==void 0?[`----- BEGIN ATTACHMENT ${t} -----`,e.text,`----- END ATTACHMENT ${e.name} -----`].join(`
38
+ `):e.path?`[Attached ${e.kind===`image`?`image`:e.kind===`text`?`text file`:`file`} saved to ${e.path} — ${t}. Read it from the virtual filesystem when you need its contents.]`:e.error?`[Attachment not included: ${t}. ${e.error}]`:`[Attachment not included: ${t}. Unsupported binary attachment.]`}function Kt(e,t){if(!t?.length)return e;let n=t.map(Gt),r=e.trim();return r?`${r}\n\n${n.join(`
39
+
40
+ `)}`:n.join(`
41
+
42
+ `)}function qt(e){return e?.length?e.filter(e=>e.kind===`image`&&e.data).map(e=>({type:`image`,data:e.data,mimeType:e.mimeType})):[]}const Jt={enabled:!0,reserveTokens:16384,keepRecentTokens:2e4};function Yt(e,t,n){return n.enabled?e>t-n.reserveTokens:!1}function Xt(e){if(typeof e==`string`)return e.length;let t=0;for(let n of e)n.type===`text`&&n.text?t+=n.text.length:n.type===`image`&&(t+=4800);return t}function Zt(e){let t=0;switch(e.role){case`user`:return t=Xt(e.content),Math.ceil(t/4);case`assistant`:{let n=e;for(let e of n.content)e.type===`text`?t+=e.text.length:e.type===`thinking`?t+=e.thinking.length:e.type===`toolCall`&&(t+=e.name.length+JSON.stringify(e.arguments).length);return Math.ceil(t/4)}case`custom`:case`toolResult`:return t=Xt(e.content),Math.ceil(t/4);case`bashExecution`:return t=e.command.length+e.output.length,Math.ceil(t/4);case`branchSummary`:case`compactionSummary`:return t=e.summary.length,Math.ceil(t/4)}return 0}const G=n(`context-compaction`);function Qt(e,t){return e.role===t}function $t(e){let t=0;for(;t<e.length&&Qt(e[t],`toolResult`);){let n=e[t];G.warn(`Dropping orphaned toolResult (no preceding assistant message)`,{toolCallId:n.toolCallId}),t++}return t>0?e.slice(t):e}function en(e){let t=[];for(let n of e){let e=n;switch(e.role){case`user`:t.push(`<user>\n${tn(e.content)}\n</user>`);break;case`assistant`:t.push(`<assistant>\n${tn(e.content)}\n</assistant>`);break;case`toolResult`:{let n=e.toolName??`tool`;t.push(`<tool-result name="${n}">\n${tn(e.content)}\n</tool-result>`);break}case`bashExecution`:t.push(`<bash>\n$ ${e.command??``}\n${e.output??``}\n</bash>`);break;case`branchSummary`:case`compactionSummary`:t.push(`<prior-summary>\n${e.summary??``}\n</prior-summary>`);break;default:t.push(`<${e.role}>\n${tn(e.content)}\n</${e.role}>`)}}return t.join(`
43
+
44
+ `)}function tn(e){if(typeof e==`string`)return e;if(!Array.isArray(e))return``;let t=[];for(let n of e){let e=n;e.type===`text`&&e.text?t.push(e.text):e.type===`thinking`&&e.thinking?t.push(`[thinking] ${e.thinking}`):e.type===`toolCall`?t.push(`[tool-call ${e.name??`?`}] ${JSON.stringify(e.arguments??{})}`):e.type===`image`&&t.push(`[image]`)}return t.join(`
45
+ `)}function nn(e){return`You are a context compaction assistant. You are shown the prefix of a conversation between a user and an AI coding assistant, and asked to produce either a structured summary, durable memory bullets, or a short title — depending on the user's instruction.
46
+
47
+ Do NOT continue the conversation. Do NOT answer questions inside the conversation. Output ONLY what the user asks for in the format specified.
48
+
49
+ <conversation>
50
+ ${e}
51
+ </conversation>`}async function rn(e,t,n,r,i,a,o){let s=await b(e,{systemPrompt:n,messages:[{role:`user`,content:[{type:`text`,text:r}],timestamp:Date.now()}]},{maxTokens:i,apiKey:t,headers:a,signal:o});if(s.stopReason===`error`)throw Error(`Compaction call failed: ${s.errorMessage||`Unknown error`}`);return s.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
52
+ `).trim()}function an(e){if(typeof e==`string`)return e.length;if(!Array.isArray(e))return 0;let t=0;for(let n of e){let e=n;if(e.type===`text`&&e.text)t+=e.text.length;else if(e.type===`thinking`&&e.thinking)t+=e.thinking.length;else if(e.type===`toolCall`&&e.arguments!==void 0)try{t+=JSON.stringify(e.arguments).length}catch{}else e.type===`image`&&e.source?.data&&(t+=e.source.data.length)}return t}function on(e,t){let n=Math.max(1,Math.round(e/1024));return`[${t===`assistant`?`Assistant message elided`:`Tool result elided`}: ${n} KB, exceeds half the context window. Re-run with smaller arguments — e.g. open --view --size low.]`}function sn(e,t,n){let r=(t-n)/2,i=0,a=0;return{messages:e.map(e=>{if(Zt(e)<=r)return e;let t=e.role;if(t!==`toolResult`&&t!==`assistant`)return e;let n=e,o=an(n.content);if(t===`toolResult`)return i++,a+=o,{...e,content:[{type:`text`,text:on(o,`toolResult`)}]};let s=(Array.isArray(n.content)?n.content:[]).filter(e=>e.type===`toolCall`);if(s.length===0)return e;let c=s.map(e=>{let t=0;if(e.arguments!==void 0)try{t=JSON.stringify(e.arguments).length}catch{}return{type:e.type,id:e.id,name:e.name,arguments:{elided:!0,originalBytes:t}}});return i++,a+=o,{...e,content:[{type:`text`,text:on(o,`assistant`)},...c]}}),elidedCount:i,elidedBytes:a}}function cn(e){let t=e.contextWindow??2e5,n=e.reserveTokens??Jt.reserveTokens,r=e.keepRecentTokens??Jt.keepRecentTokens,i=e.hopelessMultiplier??4,a={enabled:!0,reserveTokens:n,keepRecentTokens:r};return async(o,s)=>{if(o.length===0)return o;let c=0;for(let e of o)c+=Zt(e);if(!Yt(c,t,a))return o;let l=o,u=!1;if(c>t*i){u=!0;let e=sn(o,t,n);l=e.messages,G.warn(`Compaction hopeless branch`,{totalTokens:c,contextWindow:t,multiplier:i,elidedCount:e.elidedCount,elidedBytes:e.elidedBytes});let r=0;for(let e of l)r+=Zt(e);if(!Yt(r,t,a))return l}G.info(`Context compaction triggered`,{totalTokens:c,contextWindow:t,threshold:t-n,messageCount:l.length});let d=0,f=l.length;for(let e=l.length-1;e>=0;e--){let t=Zt(l[e]);if(d+t>r&&f<l.length)break;d+=t,f=e}for(;f>0&&Qt(l[f],`toolResult`);)f--;if(f<=0||f>=l.length)return G.warn(`Cannot find valid cut point for compaction`),l;let p=l.slice(0,f),m=$t(l.slice(f));G.info(`Compaction cut point`,{summarizing:p.length,keeping:m.length});let h=t=>{try{e.onCompactionStateChange?.(t)}catch(e){G.warn(`onCompactionStateChange listener threw`,{error:e instanceof Error?e.message:String(e)})}},g=u?void 0:e.getApiKey();if(g)try{let t=nn(en(p)),r=Math.floor(.8*n);h(`summarizing`);let i=await rn(e.model,g,t,`Produce a structured context checkpoint summary of the conversation above that another LLM can use to continue the work.
53
+
54
+ Use this EXACT format:
55
+
56
+ ## Goal
57
+ [What is the user trying to accomplish? Can be multiple items if the session covers different tasks.]
58
+
59
+ ## Constraints & Preferences
60
+ - [Any constraints, preferences, or requirements mentioned by user]
61
+ - [Or "(none)" if none were mentioned]
62
+
63
+ ## Progress
64
+ ### Done
65
+ - [x] [Completed tasks/changes]
66
+
67
+ ### In Progress
68
+ - [ ] [Current work]
69
+
70
+ ### Blocked
71
+ - [Issues preventing progress, if any]
72
+
73
+ ## Key Decisions
74
+ - **[Decision]**: [Brief rationale]
75
+
76
+ ## Next Steps
77
+ 1. [Ordered list of what should happen next]
78
+
79
+ ## Critical Context
80
+ - [Any data, examples, or references needed to continue]
81
+ - [Or "(none)" if not applicable]
82
+
83
+ Keep each section concise. Preserve exact file paths, function names, and error messages. Output ONLY the summary, with no preamble or follow-up.`,r,e.headers,s),a={role:`user`,content:[{type:`text`,text:`<context-summary>\n${i}\n</context-summary>`}],timestamp:Date.now()};if(G.info(`LLM summarization successful`,{originalMessages:o.length,compactedMessages:1+m.length,summaryLength:i.length}),e.onMemoryUpdates)try{h(`extracting-memory`);let n=await rn(e.model,g,t,`From the conversation above, extract durable memories worth persisting to a global memory file shared across future sessions.
84
+
85
+ Focus on:
86
+ - User preferences, working style, opinions stated explicitly.
87
+ - Stable project facts (architecture decisions, conventions, constraints).
88
+ - Validated approaches the user accepted ("yes, exactly", "perfect"), not just corrections.
89
+ - External resources/links the user named.
90
+
91
+ DO NOT include:
92
+ - Ephemeral state (current task, in-progress work).
93
+ - Information already obvious from the codebase (file paths, function names, framework conventions).
94
+ - Generic restatements of what the conversation was about.
95
+
96
+ If nothing in the conversation is worth persisting, return exactly the single line:
97
+ NONE
98
+
99
+ Otherwise, output ONLY a markdown bullet list (one bullet per memory), no headers, no preamble, no follow-up. Each bullet is one line. Be specific. Prefer one fact per bullet over multi-clause sentences.`,2048,e.headers,s);if(n?.trim()&&n.trim()!==`NONE`)try{await e.onMemoryUpdates(n.trim()),G.info(`Memory extraction applied`,{bulletsLength:n.length})}catch(e){G.warn(`onMemoryUpdates callback threw`,{error:e instanceof Error?e.message:String(e)})}else G.info(`Memory extraction returned no durable memories`)}catch(e){G.warn(`Memory extraction call failed (compaction still applied)`,{error:e instanceof Error?e.message:String(e)})}return h(`idle`),[a,...m]}catch(e){G.warn(`LLM summarization failed, falling back to naive drop`,{error:e instanceof Error?e.message:String(e)})}else u||G.warn(`No API key available for LLM summarization, falling back to naive drop`);h(`idle`);let _={role:`user`,content:[{type:`text`,text:`[Earlier conversation messages were compacted to save context space]`}],timestamp:Date.now()};return G.info(`Naive compaction applied`,{originalMessages:o.length,compactedMessages:1+m.length}),[_,...m]}}const ln=u({portName:`secrets.crud`,panelRpcOp:`secrets-bridge`,timeoutMs:1e4,onUnavailable:`resolve-undefined`,makeError:e=>Error(e),logNamespace:`secrets-bridge`,toPortMessage:({type:e,payload:t})=>({type:e,...t}),toPanelRpcPayload:({type:e,payload:t})=>({type:e,payload:t})});function un(e,t){return ln({type:e,payload:t})}const K=n(`secret-scrub`),dn=async e=>e;function fn(){let e=w();return e===`extension-direct`?async e=>{if(!e)return e;try{let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.scrub-tool-result`,text:e},e=>t(e??{}))});return t.error?(K.debug(`SW scrub-tool-result returned error`,{error:t.error}),e):typeof t.text==`string`?t.text:e}catch(t){return K.debug(`SW scrub-tool-result failed`,{error:t instanceof Error?t.message:String(t)}),e}}:e===`extension-delegate`?async e=>{if(!e)return e;try{let t=await un(`secrets.scrub-tool-result`,{text:e});return t?.error?(K.debug(`Bridge scrub-tool-result returned error`,{error:t.error}),e):typeof t?.text==`string`?t.text:e}catch(t){return K.debug(`Bridge scrub-tool-result failed`,{error:t instanceof Error?t.message:String(t)}),e}}:e===`connect`?dn:async e=>{if(!e)return e;try{let t=await fetch(a(`/api/secrets/scrub`),{method:`POST`,headers:s({"content-type":`application/json`}),body:JSON.stringify({text:e})});if(!t.ok)return K.debug(`Server scrub-tool-result returned non-ok`,{status:t.status}),e;let n=await t.json();return typeof n.text==`string`?n.text:e}catch(t){return K.debug(`Server scrub-tool-result failed`,{error:t instanceof Error?t.message:String(t)}),e}}}const q=`sessions`;function pn(){return new Promise((e,t)=>{let n=indexedDB.open(`agent-sessions`,1);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(q)||e.createObjectStore(q,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var mn=class{dbPromise=null;getDB(){return this.dbPromise||=pn().then(e=>(e.onversionchange=()=>{e.close(),this.dbPromise=null},e.onclose=()=>{this.dbPromise=null},e)),this.dbPromise}async save(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(q,`readwrite`).objectStore(q).put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async load(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(q,`readonly`).objectStore(q).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async delete(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(q,`readwrite`).objectStore(q).delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async list(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(q,`readonly`).objectStore(q).getAll();r.onsuccess=()=>{t((r.result??[]).map(e=>({id:e.id,updatedAt:e.updatedAt})))},r.onerror=()=>n(r.error)})}async clearAll(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(q,`readwrite`).objectStore(q).clear();r.onsuccess=()=>t(),r.onerror=()=>n(r.error)})}static newId(){return`session-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}static createSession(e,t){let n=Date.now();return{id:e,messages:[],config:t,createdAt:n,updatedAt:n}}static updateMessages(e,t){return{...e,messages:t,updatedAt:Date.now()}}};const J=n(`image-processor`),hn=3932160,gn=new Set([`image/jpeg`,`image/png`,`image/gif`,`image/webp`]);function _n(e){return gn.has(e)}function vn(e,t){try{if(t===`image/png`){if(e.length<32)return null;let t=atob(e.slice(0,32)),n=t.charCodeAt(16)<<24|t.charCodeAt(17)<<16|t.charCodeAt(18)<<8|t.charCodeAt(19),r=t.charCodeAt(20)<<24|t.charCodeAt(21)<<16|t.charCodeAt(22)<<8|t.charCodeAt(23);return n>0&&r>0?{width:n,height:r}:null}if(t===`image/gif`){if(e.length<16)return null;let t=atob(e.slice(0,16)),n=t.charCodeAt(6)|t.charCodeAt(7)<<8,r=t.charCodeAt(8)|t.charCodeAt(9)<<8;return n>0&&r>0?{width:n,height:r}:null}if(t===`image/jpeg`){let t=Math.min(21846*4,e.length),n=atob(e.slice(0,t));for(let e=0;e<n.length-8;e++)if(n.charCodeAt(e)===255){let t=n.charCodeAt(e+1);if(t===192||t===194){let t=n.charCodeAt(e+5)<<8|n.charCodeAt(e+6),r=n.charCodeAt(e+7)<<8|n.charCodeAt(e+8);return r>0&&t>0?{width:r,height:t}:null}}}}catch{}return null}async function yn(e){if(!_n(e.mimeType))return J.warn(`Unsupported image format`,{mimeType:e.mimeType}),{type:`text`,text:`[Image removed: unsupported format "${e.mimeType}". Supported: JPEG, PNG, GIF, WebP]`};let t=e.data.length,n=vn(e.data,e.mimeType);if(!(t>5242880||n!==null&&(n.width>8e3||n.height>8e3)||n!==null&&Math.max(n.width,n.height)>1568))return e;J.info(`Image needs processing`,{base64Size:t,dimensions:n?`${n.width}x${n.height}`:`unknown`,reason:t>5242880?`size`:`dimensions`});let r,i;try{let e=await import(`./kernel-worker-DU_V0U3r.js`).then(e=>e.l);r=e.getMagick,i=e.MIME_TO_MAGICK_FORMAT}catch(e){return J.error(`ImageMagick WASM module unavailable`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (ImageMagick WASM could not be loaded)]`}}let a;try{a=await r()}catch(e){return J.error(`ImageMagick WASM initialization failed`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (WASM init failed)]`}}try{let n=atob(e.data),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);let o={data:null,mime:e.mimeType};if(await a.ImageMagick.read(r,async t=>{let n=t.width,r=t.height,a=Math.max(n,r);if(a>1568){let e=1568/a,i=Math.round(n*e),o=Math.round(r*e);t.resize(i,o),J.info(`Resized image`,{from:`${n}x${r}`,to:`${i}x${o}`})}let s=i[e.mimeType]||`JPEG`;t.write(s,e=>{o.data=new Uint8Array(e)}),o.data&&o.data.length>hn&&s!==`JPEG`?(J.info(`Still over 5MB, compressing to JPEG q80`),t.quality=80,t.write(`JPEG`,e=>{o.data=new Uint8Array(e)}),o.mime=`image/jpeg`):o.data&&o.data.length>hn&&(J.info(`Still over 5MB as JPEG, reducing quality to 60`),t.quality=60,t.write(`JPEG`,e=>{o.data=new Uint8Array(e)}))}),!o.data)return J.warn(`ImageMagick produced no output`),{type:`text`,text:`[Image removed: could not be processed (empty output from resize)]`};if(o.data.length>hn)return J.warn(`Image still over 5MB after resize+compress`,{size:o.data.length}),{type:`text`,text:`[Image removed: still ${Math.round(o.data.length/1024/1024*10)/10}MB after resize and compression, exceeds 5MB API limit]`};let s=``;for(let e=0;e<o.data.length;e++)s+=String.fromCharCode(o.data[e]);let c=btoa(s);return J.info(`Image processed successfully`,{originalBase64:t,newBase64:c.length,mimeType:o.mime}),{type:`image`,data:c,mimeType:o.mime}}catch(n){return J.error(`Image data processing failed (corrupt or unreadable)`,{mimeType:e.mimeType,estimatedBytes:t,error:n instanceof Error?n.message:String(n)}),{type:`text`,text:`[Image removed: image data could not be processed (${n instanceof Error?n.message:`corrupt or unreadable`})]`}}}const bn=n(`tool-adapter`),xn=/<img:(data:(image\/[^;]+);base64,([^>]+))>/g;function Sn(e){let t=[],n=0;for(let r of e.matchAll(xn)){let i=e.slice(n,r.index);i.trim()&&t.push({type:`text`,text:i.trimEnd()}),t.push({type:`image`,mimeType:r[2],data:r[3]}),n=r.index+r[0].length}let r=e.slice(n);return(r.trim()||t.length===0)&&t.push({type:`text`,text:r||e}),t}async function Cn(e){let t=Sn(e),n=[];for(let e of t)e.type===`image`?n.push(await yn(e)):n.push(e);return n}function wn(e,t,n){return{name:e.name,label:e.name,description:e.description,parameters:e.inputSchema,async execute(r,i,a,o){let s;o&&(s=c({onUpdate:o,toolName:e.name,toolCallId:r}));let u=t?t.processManager.spawn({kind:`tool`,argv:[e.name,...En(i)],owner:t.owner,ppid:t.getParentPid?.()}):null,d=null;u&&t&&a&&(a.aborted?t.processManager.signal(u.pid,`SIGINT`):a.addEventListener(`abort`,()=>t.processManager.signal(u.pid,`SIGINT`),{once:!0})),u&&t&&(d=t.processManager.onSignal((e,n)=>{e.pid!==u.pid||n!==`SIGKILL`||t.processManager.exit(u.pid,null)}));let f=u?u.abort.signal:a;try{let r=await e.execute(i??{},f),a=r.content;if(n&&typeof a==`string`&&a.length>0)try{a=await n.scrubToolResult(a)}catch(t){bn.warn(`Tool-result scrub failed, falling back to unscrubbed content`,{tool:e.name,error:t instanceof Error?t.message:String(t)}),a=r.content}let o;try{o=await Cn(a)}catch(t){bn.warn(`Image processing failed, falling back to raw content`,{tool:e.name,error:t instanceof Error?t.message:String(t)}),o=Sn(a)}return u&&t&&t.processManager.exit(u.pid,+!!r.isError),{content:o,details:{isError:r.isError}}}catch(e){throw u&&t&&t.processManager.exit(u.pid,u.abort.signal.aborted?null:1),e}finally{s&&l(s),d?.()}}}}function Tn(e,t,n){return e.map(e=>wn(e,t,n))}function En(e){if(typeof e!=`object`||!e)return[];let t=e;for(let e of[`command`,`file_path`,`path`,`pattern`,`url`,`key`,`name`,`query`,`message`]){let n=t[e];if(typeof n==`string`&&n.length>0)return[n]}for(let e of Object.values(t))if(typeof e==`string`&&e.length>0)return[e];return[]}var Dn=e({ACCOUNTS_KEY:()=>Y,addAccount:()=>Jn,getAccounts:()=>$,getAllExtraOAuthDomains:()=>Gn,getApiKey:()=>lr,getApiKeyForProvider:()=>nr,getApiVersionForProvider:()=>ar,getAvailableProviders:()=>Ln,getBaseUrlForProvider:()=>rr,getDeploymentForProvider:()=>ir,getExtraOAuthDomains:()=>Hn,getOAuthAccountInfo:()=>Vn,getProviderConfig:()=>X,getProviderModels:()=>Z,getRawApiKeyForProvider:()=>tr,getSelectedModelId:()=>or,getSelectedProvider:()=>cr,logoutOAuthAccount:()=>Zn,maskOAuthTokenWithRetry:()=>Qn,migrateLegacyAuthOnlySelection:()=>In,persistOAuthMaskViaServiceWorker:()=>$n,providerOffersLlmModels:()=>Rn,removeAccount:()=>Xn,resolveCurrentModel:()=>mr,resolveModelById:()=>pr,resolveModelByShorthand:()=>hr,saveOAuthAccount:()=>er,setExtraOAuthDomains:()=>Un,setExtraOAuthDomainsAsync:()=>Wn});const On=S,kn=C,Y=`slicc_accounts`,An=`selected-model`,jn=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],Mn=new Set([`github`]);function Nn(e){let t;try{t=x()}catch{return!1}return t.includes(e)&&!m(e)}let Pn=!1;function Fn(){if(!Pn){Pn=!0;for(let e of jn)try{localStorage.removeItem(e)}catch{}In()}}function In(){try{let e=localStorage.getItem(An);if(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t);(Mn.has(n)||Nn(n))&&localStorage.removeItem(An)}}}catch{}try{let e=localStorage.getItem(Y);if(!e)return;let t=JSON.parse(e);if(!Array.isArray(t))return;let n=t.filter(e=>!(typeof e==`object`&&e&&typeof e.providerId==`string`&&Nn(e.providerId)));n.length!==t.length&&localStorage.setItem(Y,JSON.stringify(n))}catch{}}function Ln(){let e=x().filter(m),t=p();return[...new Set([...e,...t])].filter(e=>!h(e)?.hidden)}function Rn(e){try{if(Z(e).length>0)return!0}catch{}try{if(C(e).length>0)return!0}catch{}let t=h(e);return!!(t?.modelOverrides&&Object.keys(t.modelOverrides).length>0)}function zn(e,t){try{if(Z(e).some(e=>e.id===t))return!0}catch{}try{if(C(e).some(e=>e.id===t))return!0}catch{}let n=h(e);return!!(n?.modelOverrides&&Object.hasOwn(n.modelOverrides,t))}function X(e){return h(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function Bn(e,t){t.context_window!==void 0&&(e.contextWindow=t.context_window),t.max_tokens!==void 0&&(e.maxTokens=t.max_tokens),t.reasoning!==void 0&&(e.reasoning=t.reasoning),t.input!==void 0&&(e.input=t.input),t.compat!==void 0&&(e.compat={...e.compat??{},...t.compat}),t.thinkingLevelMap!==void 0&&(e.thinkingLevelMap={...e.thinkingLevelMap??{},...t.thinkingLevelMap})}function Z(e){try{if(e===`bedrock-camp`){let e=y(rr(`bedrock-camp`));return kn(`amazon-bedrock`).filter(t=>v(t,e)).map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}))}let t=X(e);if(t.getModelIds){let n;try{n=t.getModelIds()}catch(t){return Q.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of x())try{for(let t of kn(e))r.set(t.id,t)}catch{}return n.map(n=>{let i=`${e}-${n.api===`openai`?`openai`:`anthropic`}`,a=r.get(n.id),o;a?o={...a,api:i,provider:e}:(o=dr(e,n.id,``,i),n.name&&(o.name=n.name));let s=t.modelOverrides?.[n.id];return s&&Bn(o,s),Bn(o,n),o})}if(t.isOAuth){let n=kn(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&Bn(i,a),i})}return kn(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return Q.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function Vn(e){let t=$().find(t=>t.providerId===e);if(!t?.accessToken)return null;let n=!!t.tokenExpiresAt&&Date.now()>t.tokenExpiresAt-6e4;return{token:t.accessToken,maskedValue:t.maskedValue,expiresAt:t.tokenExpiresAt,userName:t.userName,userAvatar:t.userAvatar,expired:n}}Object.assign({})[`/packages/webapp/providers.json`];const Q=n(`provider-settings`);function $(){Fn();let e=localStorage.getItem(Y);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.providerId==`string`&&typeof e.apiKey==`string`):[]}catch{return[]}}function Hn(e){return i(localStorage)[e]??[]}function Un(e,t){let n=i(localStorage),a=t.map(e=>e.trim()).filter(e=>e.length>0);a.length===0?delete n[e]:n[e]=a,r(localStorage,n)}async function Wn(e,t){if(f()){Un(e,t);return}let n=d();if(!n)throw Error(`setExtraOAuthDomainsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let{storeAfter:i}=await n.call(`oauth-extras-set`,{providerId:e,domains:t});try{r(localStorage,i)}catch(t){Q.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{providerId:e,error:t instanceof Error?t.message:String(t)})}}function Gn(){return i(localStorage)}function Kn(e){localStorage.setItem(Y,JSON.stringify(e))}async function qn(e){if(f()){Kn(e);return}let t=d();if(!t)throw Error(`saveAccountsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let n=JSON.stringify(e),{storedJson:r}=await t.call(`save-oauth-accounts`,{accountsJson:n});try{localStorage.setItem(Y,r)}catch(e){Q.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{error:e instanceof Error?e.message:String(e)})}}function Jn(e,t,n,r,i){let a=$().filter(t=>t.providerId!==e),o={providerId:e,apiKey:t};n&&(o.baseUrl=n),r&&(o.deployment=r),i&&(o.apiVersion=i),a.push(o),Kn(a)}async function Yn(e){let t=w();try{if(t===`extension-direct`){let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.delete`,name:`oauth.${e}.token`},n=>{chrome.runtime.lastError&&Q.error(`SW secrets.delete transport failed`,{providerId:e,error:chrome.runtime.lastError.message}),t(n??{})})});t.error&&Q.error(`SW secrets.delete returned error`,{providerId:e,error:t.error})}else if(t===`extension-delegate`){let t=await un(`secrets.delete`,{name:`oauth.${e}.token`});t?.error&&Q.error(`Bridge secrets.delete returned error`,{providerId:e,error:t.error})}else if(t!==`connect`){let t=await fetch(a(`/api/secrets/oauth/${e}`),{method:`DELETE`,headers:s()});!t.ok&&t.status!==404&&Q.warn(`OAuth replica DELETE non-ok`,{providerId:e,status:t.status})}}catch(n){Q.error(`OAuth replica removal failed`,{providerId:e,topology:t,error:n instanceof Error?n.message:String(n)})}}async function Xn(e){let t=$().find(t=>t.providerId===e),n=X(e);t&&n?.isOAuth&&await Zn(e),await Yn(e),await qn($().filter(t=>t.providerId!==e));let r=localStorage.getItem(An)??``,i=r.indexOf(`:`);i>0&&r.slice(0,i)===e&&localStorage.removeItem(An)}async function Zn(e){let t=$().find(t=>t.providerId===e);if(!t)return;let n=X(e);if(n?.isOAuth){if(n.onOAuthLogout)try{await n.onOAuthLogout()}catch(t){Q.warn(`onOAuthLogout failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})}if(n.getOAuthLogoutUrl){let r=n.getOAuthLogoutUrl(t);if(r){let{openIdpLogoutUrl:t}=await import(`./oauth-service-CPJvHYuO.js`);await t(r).catch(t=>{Q.warn(`IdP logout popup failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})})}}await qn($().map(t=>t.providerId===e?{providerId:t.providerId,apiKey:``,baseUrl:t.baseUrl,userName:t.userName,userAvatar:t.userAvatar,loggedOut:!0}:t)),await Yn(e)}}async function Qn(e,t={}){let n=Math.max(1,t.attempts??3),r=t.delayMs??150,i=t.sleep??(e=>new Promise(t=>setTimeout(t,e))),a;for(let t=0;t<n;t++){let o=await e();if(o.maskedValue)return{maskedValue:o.maskedValue};o.error&&(a=o.error),t<n-1&&await i(r)}return{lastError:a}}async function $n(e,t,n){let r={providerId:e.providerId,accessToken:e.accessToken,domains:e.domains.join(`,`)},{maskedValue:i,lastError:a}=await Qn(()=>t.sendMaskRequest(r),n);if(!i){Q.error(`OAuth mask give-up: no masked value after retries`,{providerId:e.providerId,reason:a??`no error reported (cold SW or empty reply)`});return}let o=t.getAccounts(),s=o.find(t=>t.providerId===e.providerId);s&&(s.maskedValue=i,await t.saveAccounts(o))}async function er(e){let t=$().find(t=>t.providerId===e.providerId),n=$().filter(t=>t.providerId!==e.providerId);n.push({providerId:e.providerId,apiKey:``,accessToken:e.accessToken,refreshToken:e.refreshToken,tokenExpiresAt:e.tokenExpiresAt,userName:e.userName,userAvatar:e.userAvatar,baseUrl:e.baseUrl??t?.baseUrl}),await qn(n);let r=X(e.providerId)?.oauthTokenDomains??[],i=Hn(e.providerId),o=new Set,c=[];for(let e of[...r,...i]){let t=e.toLowerCase();o.has(t)||(o.add(t),c.push(e))}if(c.length===0)return;let l=w();try{if(l===`extension-direct`)await $n({providerId:e.providerId,accessToken:e.accessToken,domains:c},{sendMaskRequest:t=>new Promise(n=>{chrome.runtime.sendMessage({type:`secrets.mask-oauth-token`,...t},t=>{chrome.runtime.lastError&&Q.error(`SW mask-oauth-token transport failed`,{providerId:e.providerId,error:chrome.runtime.lastError.message}),t?.error&&Q.warn(`SW mask-oauth-token returned error`,{providerId:e.providerId,error:t.error}),n(t??{})})}),getAccounts:$,saveAccounts:qn});else if(l===`extension-delegate`)await $n({providerId:e.providerId,accessToken:e.accessToken,domains:c},{sendMaskRequest:t=>un(`secrets.mask-oauth-token`,t).then(t=>(t?.error&&Q.warn(`Bridge mask-oauth-token returned error`,{providerId:e.providerId,error:t.error}),t??{})).catch(t=>(Q.error(`Bridge mask-oauth-token transport failed`,{providerId:e.providerId,error:t instanceof Error?t.message:String(t)}),{})),getAccounts:$,saveAccounts:qn});else if(l!==`connect`){let t=await fetch(a(`/api/secrets/oauth-update`),{method:`POST`,headers:s({"Content-Type":`application/json`}),body:JSON.stringify({providerId:e.providerId,accessToken:e.accessToken,domains:c})});if(t.ok){let n=await t.json();if(typeof n.maskedValue==`string`){let t=$(),r=t.find(t=>t.providerId===e.providerId);r&&(r.maskedValue=n.maskedValue,await qn(t))}else Q.warn(`OAuth replica POST ok but missing maskedValue`,{providerId:e.providerId})}else Q.warn(`OAuth replica POST non-ok`,{providerId:e.providerId,status:t.status})}}catch(t){Q.error(`OAuth replica sync failed`,{providerId:e.providerId,topology:l,error:t instanceof Error?t.message:String(t)})}}function tr(e){let t=$().find(t=>t.providerId===e);return t&&(t.accessToken||t.apiKey)||null}function nr(e){let t=$().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(X(e).optionalApiKey?`local`:null):null}function rr(e){return $().find(t=>t.providerId===e)?.baseUrl??null}function ir(e){return $().find(t=>t.providerId===e)?.deployment??null}function ar(e){return $().find(t=>t.providerId===e)?.apiVersion??null}function or(){let e=localStorage.getItem(An)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function sr(){return localStorage.getItem(An)||``}function cr(){let e=sr(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=$(),r=or();if(r){let e=n.find(e=>Rn(e.providerId)&&zn(e.providerId,r));if(e)return e.providerId}let i=n.find(e=>Rn(e.providerId));return i?i.providerId:n.length>0?n[0].providerId:`anthropic`}function lr(){return nr(cr())}function ur(e){return/^(?:gpt[-.]?|o[0-9]|chatgpt)/i.test(e)?`openai`:`anthropic`}function dr(e,t,n,r){return{id:t,name:t,provider:e,api:r??`${e}-${ur(t)}`,baseUrl:n??``,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!0}}function fr(e,t){return t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e}function pr(e){if(!e)return mr();let t=cr(),n=rr(t),r=X(t);try{let i=On(fr(t,r),e);if(!i?.id)throw Error(`Model ${e} not found`);let a=i;return r.isOAuth?a=Z(t).find(t=>t.id===e)||{...a,api:`${t}-anthropic`,provider:t}:t===`bedrock-camp`&&(a={...a,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(a={...a,baseUrl:n}),a}catch(i){if(Q.debug(`resolveModelById: pi-ai lookup miss, using provider fallback`,{providerId:t,modelId:e,error:i instanceof Error?i.message:String(i)}),r.isOAuth){let r=Z(t).find(t=>t.id===e);return r?n?{...r,baseUrl:n}:r:dr(t,e,n)}return mr()}}function mr(){let e=cr(),t=or(),n=rr(e),r=Z(e),i=X(e),a=i.defaultModelId?r.find(e=>e.id.toLowerCase().includes(i.defaultModelId.toLowerCase()))?.id:void 0,o=t||a||r[0]?.id||`claude-sonnet-4-6`;try{let t=fr(e,i),a=On(t,o);if(!a?.id)throw Error(`Model ${o} not found in ${t} registry`);let s=a;return i.isOAuth?s=r.find(e=>e.id===o)||{...s,api:`${e}-anthropic`,provider:e}:e===`bedrock-camp`&&(s={...s,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(s={...s,baseUrl:n}),s}catch(t){Q.debug(`resolveCurrentModel: pi-ai lookup miss, using provider fallback`,{providerId:e,effectiveModelId:o,error:t instanceof Error?t.message:String(t)});let a=r.find(e=>e.id===o);return a?n?{...a,baseUrl:n}:a:i.isOAuth?dr(e,o,n):On(`anthropic`,`claude-sonnet-4-0`)}}function hr(e){let t=e.toLowerCase();if(!t)return null;let n=null,r=-1;for(let e of $())for(let i of Z(e.providerId)){let e=i.id.toLowerCase(),a=(i.name??``).toLowerCase();if(!e.includes(t)&&!a.includes(t))continue;let o=i.contextWindow??0;(o>r||o===r&&gr(i.id,n??``)>0)&&(r=o,n=i.id)}return n}function gr(e,t){let n=e.match(/\d+/g)?.map(Number)??[],r=t.match(/\d+/g)?.map(Number)??[],i=Math.max(n.length,r.length);for(let e=0;e<i;e++){let t=(n[e]??0)-(r[e]??0);if(t!==0)return t}return 0}export{Wn as A,ee as B,Rn as C,hr as D,pr as E,cn as F,$t as I,Kt as L,mn as M,fn as N,er as O,un as P,qt as R,$n as S,mr as T,w as V,or as _,Gn as a,Qn as b,ar as c,ir as d,Hn as f,tr as g,Z as h,$ as i,Tn as j,Un as k,Ln as l,X as m,Dn as n,lr as o,Vn as p,Jn as r,nr as s,Y as t,rr as u,cr as v,Xn as w,In as x,Zn as y,be as z};