sliccy 4.24.0 → 4.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/node-server/bridge-security.d.ts +14 -1
- package/dist/node-server/bridge-security.js +66 -2
- package/dist/node-server/fetch-proxy-headers.d.ts +8 -2
- package/dist/node-server/fetch-proxy-headers.js +9 -2
- package/dist/node-server/routes/fetch-proxy.d.ts +8 -0
- package/dist/node-server/routes/fetch-proxy.js +6 -1
- package/dist/ui/assets/{account-store-CcqPXFk-.js → account-store-CCx84KSO.js} +2 -2
- package/dist/ui/assets/{account-store-BXT0RMpF.js → account-store-D6F5ht1K.js} +2 -2
- package/dist/ui/assets/adobe-B_gJbGrM.js +1 -0
- package/dist/ui/assets/adobe-D8jV1ibX.js +2 -0
- package/dist/ui/assets/{agent-message-to-chat-Cihra740.js → agent-message-to-chat-Dt9iSVuQ.js} +1 -1
- package/dist/ui/assets/{apps-CPyXd9Mk.js → apps-CyKH98UU.js} +1 -1
- package/dist/ui/assets/{azure-openai-BEec8FHP.js → azure-openai-CTCrw8ag.js} +1 -1
- package/dist/ui/assets/{azure-openai-lMn0o-9C.js → azure-openai-DHxbdJP2.js} +1 -1
- package/dist/ui/assets/{bsh-watchdog-Dgr_OA1N.js → bsh-watchdog-DRf6YtLF.js} +1 -1
- package/dist/ui/assets/{connect-surface-BzhaxP0L.js → connect-surface-BAkLQjYg.js} +1 -1
- package/dist/ui/assets/dip-CoQDOdRF.js +1 -0
- package/dist/ui/assets/{dist-DIjck1q7.js → dist-DstXLyS2.js} +1 -1
- package/dist/ui/assets/{dist-ChTQy8at.js → dist-Gjxc3CGe.js} +1 -1
- package/dist/ui/assets/{es-B8GxLLfB.js → es-BtePr83c.js} +1 -1
- package/dist/ui/assets/{fs-xQUivn-8.js → fs-CES5lb4o.js} +1 -1
- package/dist/ui/assets/{fs-ATai1P5Q.js → fs-D3A8iUb-.js} +2 -2
- package/dist/ui/assets/{github-CUVBUETF.js → github-BD9mji3m.js} +1 -1
- package/dist/ui/assets/{github-C6vLSHER.js → github-BjJwZAID.js} +2 -2
- package/dist/ui/assets/{github-copilot-ggchxbZd.js → github-copilot-O5-ryiZR.js} +1 -1
- package/dist/ui/assets/{github-copilot-BqMS3_4S.js → github-copilot-yWe1M0K_.js} +1 -1
- package/dist/ui/assets/{hear-Bm8tL0z2.js → hear-CFjk8o5A.js} +1 -1
- package/dist/ui/assets/{kernel-worker-CqATTm08.js → kernel-worker-DS4Sjo4b.js} +1007 -1007
- package/dist/ui/assets/{kokoro-engine-BzgKX1A1.js → kokoro-engine-TLc0ityO.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-DFQu2sM8.js → lick-ws-bridge-Fa3rBD7K.js} +1 -1
- package/dist/ui/assets/{local-llm-D09l_nRy.js → local-llm-77SlLHlX.js} +1 -1
- package/dist/ui/assets/main-RvuAuHo8.js +24 -0
- package/dist/ui/assets/{mount-D7RXkT90.js → mount-B3baMU-O.js} +1 -1
- package/dist/ui/assets/{mount-sEjqfa02.js → mount-Dwoznret.js} +2 -2
- package/dist/ui/assets/{new-session-B0xwp5hO.js → new-session-BnW6Ia6h.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-Uz3oksBR.js → oauth-bootstrap-D4jfK89n.js} +2 -2
- package/dist/ui/assets/oauth-service-CoJ-pYVD.js +1 -0
- package/dist/ui/assets/oauth-service-hTyvduF1.js +1 -0
- package/dist/ui/assets/{openai-codex-d2uBt8CN.js → openai-codex-BG86bd3g.js} +1 -1
- package/dist/ui/assets/{openai-codex-BMr_sYj2.js → openai-codex-W1k-olNJ.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-1U8M-tQU.js → panel-rpc-handlers-BAwdZnUG.js} +1 -1
- package/dist/ui/assets/{provider-BbwD43pe.js → provider-Ba8_qOfx.js} +1 -1
- package/dist/ui/assets/{provider-B_3MhsjL.js → provider-fDZ2ppW0.js} +2 -2
- package/dist/ui/assets/provider-store-access-BVVboGQW.js +1 -0
- package/dist/ui/assets/provider-store-access-DLLL3FmZ.js +1 -0
- package/dist/ui/assets/{providers-DRQ-n4v0.js → providers-DteOckdy.js} +1 -1
- package/dist/ui/assets/proxied-fetch-BBO8HwcV.js +1 -0
- package/dist/ui/assets/{quick-llm-CHWi-jSD.js → quick-llm-BRbz1fDI.js} +1 -1
- package/dist/ui/assets/{remote-terminal-view-FVcjc7kw.js → remote-terminal-view-CSqiig2G.js} +1 -1
- package/dist/ui/assets/session-freezer-tVkiu4V5.js +1 -0
- package/dist/ui/assets/{setup-sprinkle-exec-BGXT8k4k.js → setup-sprinkle-exec-C7SBZY7y.js} +1 -1
- package/dist/ui/assets/setup-sudo-DWfiGlOf.js +1 -0
- package/dist/ui/assets/{speak-Cr05k3rj.js → speak-DhkLZ-am.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-B7xN0WFf.js → sprinkle-manager-BLhwuVdT.js} +1 -1
- package/dist/ui/assets/{store-CfuBHukr.js → store-T-K8TeFw.js} +1 -1
- package/dist/ui/assets/{sudo-CnG9mh3w.js → sudo-qsDyNaAG.js} +1 -1
- package/dist/ui/assets/terminal-session-client-CbAduNfC.js +1 -0
- package/dist/ui/assets/{transformers-env-BEM0HkoC.js → transformers-env-DSAN95G3.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-CD-xjbXc.js → tray-leave-runtime-tqIb9yl_.js} +1 -1
- package/dist/ui/assets/upgrade-detection-pjQXVRWP.js +1 -0
- package/dist/ui/assets/{wc-attach-D7JTvNE3.js → wc-attach-DwcZ5MaG.js} +2 -2
- package/dist/ui/assets/{wc-detached-DfgIMcuk.js → wc-detached-BvZo_AId.js} +1 -1
- package/dist/ui/assets/{wc-extension-BNpR2nAA.js → wc-extension-CtHl8VdG.js} +2 -2
- package/dist/ui/assets/wc-live-BHTqp_8F.js +253 -0
- package/dist/ui/assets/{wc-nav-BVFjm1zp.js → wc-nav-BJuQ2irW.js} +2 -2
- package/dist/ui/assets/wc-onboarding-84S404WJ.js +2 -0
- package/dist/ui/assets/{wc-placeholder-CLNwZTGs.js → wc-placeholder-DXEcgvyw.js} +3 -3
- package/dist/ui/assets/wc-settings-DWuDKTDp.js +24 -0
- package/dist/ui/assets/{wc-shell-CeWID7O0.js → wc-shell-B_z0VSKk.js} +3 -3
- package/dist/ui/assets/{wc-sprinkles-DYTck3a-.js → wc-sprinkles-BsYJVGg_.js} +2 -2
- package/dist/ui/assets/{wc-tray-ByE1fpIQ.js → wc-tray-CWJphCmt.js} +3 -3
- package/dist/ui/assets/{xai-grok-BcQs9t1L.js → xai-grok-D7ULF1Ef.js} +1 -1
- package/dist/ui/assets/{xai-grok-Bx-LJDfy.js → xai-grok-DQ32cJt0.js} +1 -1
- package/dist/ui/index.html +2 -2
- package/dist/ui/llm-proxy-sw.js +1 -1
- package/dist/ui/packages/webapp/index.html +2 -2
- package/package.json +1 -1
- package/dist/ui/assets/adobe-Dvkc5_oM.js +0 -2
- package/dist/ui/assets/adobe-Dyvxqy9s.js +0 -1
- package/dist/ui/assets/dip-CIhLisNq.js +0 -1
- package/dist/ui/assets/main-sWMjBmPA.js +0 -24
- package/dist/ui/assets/oauth-service-CTlktxVj.js +0 -1
- package/dist/ui/assets/oauth-service-DQVciyk_.js +0 -1
- package/dist/ui/assets/provider-store-access-Cop2VuvO.js +0 -1
- package/dist/ui/assets/provider-store-access-_8NADMDP.js +0 -1
- package/dist/ui/assets/proxied-fetch-3ooUUAsF.js +0 -1
- package/dist/ui/assets/session-freezer-mzV5cASX.js +0 -1
- package/dist/ui/assets/setup-sudo-DSt9eI8G.js +0 -1
- package/dist/ui/assets/terminal-session-client-C_tYJ1IB.js +0 -1
- package/dist/ui/assets/upgrade-detection-CwNs_M6E.js +0 -1
- package/dist/ui/assets/wc-live-cbtCpYYl.js +0 -253
- package/dist/ui/assets/wc-onboarding-C-b3gfT3.js +0 -2
- package/dist/ui/assets/wc-settings-BRCPA5ys.js +0 -24
|
@@ -23,6 +23,12 @@
|
|
|
23
23
|
* origins (parallel to chrome-extension's `BRIDGE_DEV_ORIGINS`). Add a new
|
|
24
24
|
* origin here and in the extension allowlist together — they MUST stay in
|
|
25
25
|
* sync, otherwise extension and standalone disagree on what's a leader.
|
|
26
|
+
*
|
|
27
|
+
* Dev-only extra origins can be added at process start via the
|
|
28
|
+
* `BRIDGE_DEV_ALLOWED_ORIGINS` env var (comma-separated). Used by the
|
|
29
|
+
* local two-service harness (wrangler dev UI on :8787 + node-server
|
|
30
|
+
* bridge); see Wave 5c. When the env var is unset, the effective
|
|
31
|
+
* allowlist is byte-identical to this frozen base — prod is unaffected.
|
|
26
32
|
*/
|
|
27
33
|
export declare const BRIDGE_ALLOWED_ORIGINS: readonly string[];
|
|
28
34
|
/** Subprotocol prefix advertised by the leader; the per-process token is appended. */
|
|
@@ -40,7 +46,14 @@ export declare const BRIDGE_WS_QUERY_PARAM = "bridge";
|
|
|
40
46
|
* on the preflight.
|
|
41
47
|
*/
|
|
42
48
|
export declare const BRIDGE_TOKEN_HEADER = "X-Bridge-Token";
|
|
43
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* True iff `origin` is in the bridge allowlist. The frozen prod base
|
|
51
|
+
* (`BRIDGE_ALLOWED_ORIGINS`) is matched case-sensitively against the
|
|
52
|
+
* raw origin; the dev-only env-supplied extras (normalized lowercase
|
|
53
|
+
* + trailing-slash-stripped at load) are matched against a normalized
|
|
54
|
+
* copy of the input, so a leader sending `Origin: HTTP://Localhost:8787`
|
|
55
|
+
* (or with a stray trailing slash) still resolves correctly.
|
|
56
|
+
*/
|
|
44
57
|
export declare function isAllowedBridgeOrigin(origin: string | undefined | null): boolean;
|
|
45
58
|
/**
|
|
46
59
|
* True iff `origin` is a loopback host (localhost / 127.0.0.1 / ::1).
|
|
@@ -24,6 +24,12 @@ import { randomUUID, timingSafeEqual } from 'node:crypto';
|
|
|
24
24
|
* origins (parallel to chrome-extension's `BRIDGE_DEV_ORIGINS`). Add a new
|
|
25
25
|
* origin here and in the extension allowlist together — they MUST stay in
|
|
26
26
|
* sync, otherwise extension and standalone disagree on what's a leader.
|
|
27
|
+
*
|
|
28
|
+
* Dev-only extra origins can be added at process start via the
|
|
29
|
+
* `BRIDGE_DEV_ALLOWED_ORIGINS` env var (comma-separated). Used by the
|
|
30
|
+
* local two-service harness (wrangler dev UI on :8787 + node-server
|
|
31
|
+
* bridge); see Wave 5c. When the env var is unset, the effective
|
|
32
|
+
* allowlist is byte-identical to this frozen base — prod is unaffected.
|
|
27
33
|
*/
|
|
28
34
|
export const BRIDGE_ALLOWED_ORIGINS = Object.freeze([
|
|
29
35
|
'https://www.sliccy.ai',
|
|
@@ -31,6 +37,50 @@ export const BRIDGE_ALLOWED_ORIGINS = Object.freeze([
|
|
|
31
37
|
'http://localhost:5710',
|
|
32
38
|
'http://127.0.0.1:5710',
|
|
33
39
|
]);
|
|
40
|
+
/**
|
|
41
|
+
* Normalize a single env-supplied origin: trim, lowercase, drop trailing
|
|
42
|
+
* slash. Returns `null` for blank/whitespace entries or anything that
|
|
43
|
+
* `URL` can't parse. Never throws.
|
|
44
|
+
*/
|
|
45
|
+
function normalizeDevOrigin(raw) {
|
|
46
|
+
const trimmed = raw.trim();
|
|
47
|
+
if (!trimmed)
|
|
48
|
+
return null;
|
|
49
|
+
let candidate = trimmed.toLowerCase();
|
|
50
|
+
while (candidate.endsWith('/')) {
|
|
51
|
+
candidate = candidate.slice(0, -1);
|
|
52
|
+
}
|
|
53
|
+
if (!candidate)
|
|
54
|
+
return null;
|
|
55
|
+
try {
|
|
56
|
+
// Sanity check: must parse as an absolute URL with scheme + host.
|
|
57
|
+
const parsed = new URL(candidate);
|
|
58
|
+
if (!parsed.protocol || !parsed.hostname)
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
return candidate;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Dev-only extra origins parsed once from `BRIDGE_DEV_ALLOWED_ORIGINS` at
|
|
68
|
+
* module load. Comma-separated; blank entries ignored; malformed entries
|
|
69
|
+
* dropped. Frozen prod base above is left intact; `isAllowedBridgeOrigin`
|
|
70
|
+
* consults the union.
|
|
71
|
+
*/
|
|
72
|
+
const BRIDGE_DEV_ALLOWED_ORIGINS = (() => {
|
|
73
|
+
const raw = process.env.BRIDGE_DEV_ALLOWED_ORIGINS;
|
|
74
|
+
if (!raw)
|
|
75
|
+
return new Set();
|
|
76
|
+
const set = new Set();
|
|
77
|
+
for (const entry of raw.split(',')) {
|
|
78
|
+
const normalized = normalizeDevOrigin(entry);
|
|
79
|
+
if (normalized)
|
|
80
|
+
set.add(normalized);
|
|
81
|
+
}
|
|
82
|
+
return set;
|
|
83
|
+
})();
|
|
34
84
|
/** Subprotocol prefix advertised by the leader; the per-process token is appended. */
|
|
35
85
|
export const BRIDGE_SUBPROTOCOL_PREFIX = 'slicc.bridge.v1.';
|
|
36
86
|
/** Query-param name the launch URL uses to forward the subprotocol token to the leader. */
|
|
@@ -75,11 +125,25 @@ const CORS_BASE_ALLOW_HEADERS = [
|
|
|
75
125
|
const CORS_EXPOSE_HEADERS = 'Link, X-Proxy-Error, X-Proxy-Set-Cookie';
|
|
76
126
|
/** Methods exposed to the hosted leader. */
|
|
77
127
|
const CORS_ALLOW_METHODS = 'GET, POST, PUT, DELETE, OPTIONS';
|
|
78
|
-
/**
|
|
128
|
+
/**
|
|
129
|
+
* True iff `origin` is in the bridge allowlist. The frozen prod base
|
|
130
|
+
* (`BRIDGE_ALLOWED_ORIGINS`) is matched case-sensitively against the
|
|
131
|
+
* raw origin; the dev-only env-supplied extras (normalized lowercase
|
|
132
|
+
* + trailing-slash-stripped at load) are matched against a normalized
|
|
133
|
+
* copy of the input, so a leader sending `Origin: HTTP://Localhost:8787`
|
|
134
|
+
* (or with a stray trailing slash) still resolves correctly.
|
|
135
|
+
*/
|
|
79
136
|
export function isAllowedBridgeOrigin(origin) {
|
|
80
137
|
if (!origin)
|
|
81
138
|
return false;
|
|
82
|
-
|
|
139
|
+
if (BRIDGE_ALLOWED_ORIGINS.includes(origin))
|
|
140
|
+
return true;
|
|
141
|
+
if (BRIDGE_DEV_ALLOWED_ORIGINS.size === 0)
|
|
142
|
+
return false;
|
|
143
|
+
const normalized = normalizeDevOrigin(origin);
|
|
144
|
+
if (!normalized)
|
|
145
|
+
return false;
|
|
146
|
+
return BRIDGE_DEV_ALLOWED_ORIGINS.has(normalized);
|
|
83
147
|
}
|
|
84
148
|
/**
|
|
85
149
|
* True iff `origin` is a loopback host (localhost / 127.0.0.1 / ::1).
|
|
@@ -3,9 +3,15 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Includes hop-by-hop headers (`host`, `connection`, `transfer-encoding`,
|
|
5
5
|
* `content-length`), proxy-internal markers (`x-target-url`,
|
|
6
|
-
* `x-slicc-raw-body`),
|
|
6
|
+
* `x-slicc-raw-body`), forbidden-header transports the client uses
|
|
7
7
|
* to smuggle reserved names through `fetch()` (`x-proxy-cookie`,
|
|
8
|
-
* `x-proxy-origin`, `x-proxy-referer`)
|
|
8
|
+
* `x-proxy-origin`, `x-proxy-referer`), and the thin-bridge auth header
|
|
9
|
+
* (`x-bridge-token`) which authenticates the browser->local hop only
|
|
10
|
+
* and must not leak onward to `targetUrl`. The bridge-token middleware
|
|
11
|
+
* (`createThinBridgeCorsMiddleware` in `index.ts`) is mounted ahead of
|
|
12
|
+
* this route and reads `req.headers` directly, so token validation
|
|
13
|
+
* still sees the header - this Set only filters what gets COPIED into
|
|
14
|
+
* the forwarded request.
|
|
9
15
|
*
|
|
10
16
|
* Lives in its own module (rather than `index.ts`) so tests can import
|
|
11
17
|
* it without triggering the server bootstrap that runs at `index.ts`
|
|
@@ -3,9 +3,15 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Includes hop-by-hop headers (`host`, `connection`, `transfer-encoding`,
|
|
5
5
|
* `content-length`), proxy-internal markers (`x-target-url`,
|
|
6
|
-
* `x-slicc-raw-body`),
|
|
6
|
+
* `x-slicc-raw-body`), forbidden-header transports the client uses
|
|
7
7
|
* to smuggle reserved names through `fetch()` (`x-proxy-cookie`,
|
|
8
|
-
* `x-proxy-origin`, `x-proxy-referer`)
|
|
8
|
+
* `x-proxy-origin`, `x-proxy-referer`), and the thin-bridge auth header
|
|
9
|
+
* (`x-bridge-token`) which authenticates the browser->local hop only
|
|
10
|
+
* and must not leak onward to `targetUrl`. The bridge-token middleware
|
|
11
|
+
* (`createThinBridgeCorsMiddleware` in `index.ts`) is mounted ahead of
|
|
12
|
+
* this route and reads `req.headers` directly, so token validation
|
|
13
|
+
* still sees the header - this Set only filters what gets COPIED into
|
|
14
|
+
* the forwarded request.
|
|
9
15
|
*
|
|
10
16
|
* Lives in its own module (rather than `index.ts`) so tests can import
|
|
11
17
|
* it without triggering the server bootstrap that runs at `index.ts`
|
|
@@ -21,4 +27,5 @@ export const FETCH_PROXY_SKIP_HEADERS = new Set([
|
|
|
21
27
|
'x-proxy-cookie',
|
|
22
28
|
'x-proxy-origin',
|
|
23
29
|
'x-proxy-referer',
|
|
30
|
+
'x-bridge-token',
|
|
24
31
|
]);
|
|
@@ -2,6 +2,14 @@ import type { Express } from 'express';
|
|
|
2
2
|
import type { SecretProxyManager } from '../secrets/proxy-manager.js';
|
|
3
3
|
export interface FetchProxyDeps {
|
|
4
4
|
secretProxy: SecretProxyManager;
|
|
5
|
+
/**
|
|
6
|
+
* Optional logger sink for per-request observability. Defaults to
|
|
7
|
+
* `console`. Tests pass a silent sink so the route's logging doesn't
|
|
8
|
+
* leak into test output. The bridge's silence on `Failed to fetch`
|
|
9
|
+
* regressions was the original motivation — see issue tracker for
|
|
10
|
+
* the thin-bridge curl diagnosis.
|
|
11
|
+
*/
|
|
12
|
+
logger?: Pick<Console, 'log' | 'warn' | 'error'>;
|
|
5
13
|
}
|
|
6
14
|
/**
|
|
7
15
|
* Fetch proxy — forwards cross-origin requests from the browser to bypass
|
|
@@ -241,15 +241,17 @@ function streamUpstreamBody(res, upstream, secretProxy, detachClientClose) {
|
|
|
241
241
|
* checks req.body first.
|
|
242
242
|
*/
|
|
243
243
|
export function registerFetchProxyRoute(app, deps) {
|
|
244
|
-
const { secretProxy } = deps;
|
|
244
|
+
const { secretProxy, logger = console } = deps;
|
|
245
245
|
app.all('/api/fetch-proxy', async (req, res) => {
|
|
246
246
|
const rawBody = await collectRawBody(req);
|
|
247
247
|
const targetUrl = req.headers['x-target-url'];
|
|
248
248
|
if (!targetUrl) {
|
|
249
|
+
logger.warn(`[fetch-proxy] ${req.method} → 400 (missing X-Target-URL)`);
|
|
249
250
|
res.setHeader('X-Proxy-Error', '1');
|
|
250
251
|
res.status(400).json({ error: 'Missing X-Target-URL header' });
|
|
251
252
|
return;
|
|
252
253
|
}
|
|
254
|
+
logger.log(`[fetch-proxy] ${req.method} ${targetUrl}`);
|
|
253
255
|
// Hoisted so the catch handler can detach it on early failures (e.g. fetch
|
|
254
256
|
// threw before the success-path detach could run).
|
|
255
257
|
let onClientClose = null;
|
|
@@ -271,6 +273,7 @@ export function registerFetchProxyRoute(app, deps) {
|
|
|
271
273
|
}
|
|
272
274
|
const injection = injectRequestSecrets(secretProxy, headers, targetUrl, targetHostname);
|
|
273
275
|
if ('forbidden' in injection) {
|
|
276
|
+
logger.warn(`[fetch-proxy] ${req.method} ${targetUrl} → 403 (secret "${injection.forbidden.secretName}" not allowed for "${injection.forbidden.hostname}")`);
|
|
274
277
|
res.setHeader('X-Proxy-Error', '1');
|
|
275
278
|
res.status(403).json({
|
|
276
279
|
error: `Secret "${injection.forbidden.secretName}" is not allowed for domain "${injection.forbidden.hostname}"`,
|
|
@@ -296,6 +299,7 @@ export function registerFetchProxyRoute(app, deps) {
|
|
|
296
299
|
res.on('close', onClientClose);
|
|
297
300
|
fetchInit.signal = abortController.signal;
|
|
298
301
|
const upstream = await fetch(injection.cleanedUrl, fetchInit);
|
|
302
|
+
logger.log(`[fetch-proxy] ${req.method} ${targetUrl} ← ${upstream.status}`);
|
|
299
303
|
forwardUpstreamHeaders(res, upstream, secretProxy);
|
|
300
304
|
if (!upstream.body) {
|
|
301
305
|
res.end();
|
|
@@ -309,6 +313,7 @@ export function registerFetchProxyRoute(app, deps) {
|
|
|
309
313
|
// listener attached to the response object.
|
|
310
314
|
detachClientClose();
|
|
311
315
|
const message = err instanceof Error ? err.message : String(err);
|
|
316
|
+
logger.error(`[fetch-proxy] ${req.method} ${targetUrl} ← 502 (${message})`);
|
|
312
317
|
res.setHeader('X-Proxy-Error', '1');
|
|
313
318
|
res.status(502).json({ error: `Proxy fetch failed: ${message}` });
|
|
314
319
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/azure-openai-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/azure-openai-CTCrw8ag.js","assets/dist-BmWy99kl.js","assets/preload-helper-zJ_50EbN.js","assets/event-stream-BJI_nGaK.js","assets/json-parse-BUunmmNl.js","assets/chunk-aKtaBQYM.js","assets/__vite-browser-external-C7iut881.js","assets/transform-messages-DzB_lMo-.js","assets/openai-Cn5LRPCm.js","assets/main-RvuAuHo8.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/logger-DDBAeTLF.js","assets/clipboard-DgFtRQbq.js","assets/bedrock-camp-9-QEmC9Z.js","assets/local-llm-77SlLHlX.js","assets/openai-completions-DLI0t_lj.js","assets/github-copilot-headers-DZtWWv8W.js","assets/openai-prompt-cache-DXo9f3w5.js","assets/headers-DO1UzNKu.js","assets/sanitize-unicode-DmIE6hZJ.js","assets/adobe-D8jV1ibX.js","assets/oauth-service-CoJ-pYVD.js","assets/proxied-fetch-BBO8HwcV.js","assets/panel-rpc-DqT2FG7c.js","assets/llm-session-id-DVmZ9C2t.js","assets/github-copilot-yWe1M0K_.js","assets/github-BjJwZAID.js","assets/global-db-CbuLl-zx.js","assets/openai-codex-BG86bd3g.js","assets/xai-grok-sanitize-CR2JoOJd.js","assets/xai-grok-models-CeEBaUMC.js","assets/xai-grok-D7ULF1Ef.js","assets/xai-grok-errors-bnlIBeu-.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{n as e,t}from"./chunk-aKtaBQYM.js";import"./dist-BmWy99kl.js";import{t as n}from"./preload-helper-zJ_50EbN.js";import{a as r,o as i,s as a}from"./event-stream-BJI_nGaK.js";import"./context-compaction-CFWyOzX1.js";import{t as o}from"./logger-DDBAeTLF.js";import"./tool-ui-YOPqzMmL.js";import{n as s,t as c}from"./src-DlEHAkLd.js";import{n as l,t as u}from"./panel-rpc-DqT2FG7c.js";import{r as d,t as f}from"./bedrock-camp-9-QEmC9Z.js";var p=Symbol.for(`yaml.alias`),m=Symbol.for(`yaml.document`),h=Symbol.for(`yaml.map`),g=Symbol.for(`yaml.pair`),_=Symbol.for(`yaml.scalar`),v=Symbol.for(`yaml.seq`),y=Symbol.for(`yaml.node.type`),b=e=>!!e&&typeof e==`object`&&e[y]===p,x=e=>!!e&&typeof e==`object`&&e[y]===m,S=e=>!!e&&typeof e==`object`&&e[y]===h,C=e=>!!e&&typeof e==`object`&&e[y]===g,w=e=>!!e&&typeof e==`object`&&e[y]===_,T=e=>!!e&&typeof e==`object`&&e[y]===v;function E(e){if(e&&typeof e==`object`)switch(e[y]){case h:case v:return!0}return!1}function D(e){if(e&&typeof e==`object`)switch(e[y]){case p:case h:case _:case v:return!0}return!1}var O=e=>(w(e)||E(e))&&!!e.anchor,k=Symbol(`break visit`),ee=Symbol(`skip children`),A=Symbol(`remove node`);function j(e,t){let n=ne(t);x(e)?M(null,e.contents,n,Object.freeze([e]))===A&&(e.contents=null):M(null,e,n,Object.freeze([]))}j.BREAK=k,j.SKIP=ee,j.REMOVE=A;function M(e,t,n,r){let i=re(e,t,n,r);if(D(i)||C(i))return ie(e,r,i),M(e,i,n,r);if(typeof i!=`symbol`){if(E(t)){r=Object.freeze(r.concat(t));for(let e=0;e<t.items.length;++e){let i=M(e,t.items[e],n,r);if(typeof i==`number`)e=i-1;else if(i===k)return k;else i===A&&(t.items.splice(e,1),--e)}}else if(C(t)){r=Object.freeze(r.concat(t));let e=M(`key`,t.key,n,r);if(e===k)return k;e===A&&(t.key=null);let i=M(`value`,t.value,n,r);if(i===k)return k;i===A&&(t.value=null)}}return i}async function te(e,t){let n=ne(t);x(e)?await N(null,e.contents,n,Object.freeze([e]))===A&&(e.contents=null):await N(null,e,n,Object.freeze([]))}te.BREAK=k,te.SKIP=ee,te.REMOVE=A;async function N(e,t,n,r){let i=await re(e,t,n,r);if(D(i)||C(i))return ie(e,r,i),N(e,i,n,r);if(typeof i!=`symbol`){if(E(t)){r=Object.freeze(r.concat(t));for(let e=0;e<t.items.length;++e){let i=await N(e,t.items[e],n,r);if(typeof i==`number`)e=i-1;else if(i===k)return k;else i===A&&(t.items.splice(e,1),--e)}}else if(C(t)){r=Object.freeze(r.concat(t));let e=await N(`key`,t.key,n,r);if(e===k)return k;e===A&&(t.key=null);let i=await N(`value`,t.value,n,r);if(i===k)return k;i===A&&(t.value=null)}}return i}function ne(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 re(e,t,n,r){if(typeof n==`function`)return n(e,t,r);if(S(t))return n.Map?.(e,t,r);if(T(t))return n.Seq?.(e,t,r);if(C(t))return n.Pair?.(e,t,r);if(w(t))return n.Scalar?.(e,t,r);if(b(t))return n.Alias?.(e,t,r)}function ie(e,t,n){let r=t[t.length-1];if(E(r))r.items[e]=n;else if(C(r))e===`key`?r.key=n:r.value=n;else if(x(r))r.contents=n;else{let e=b(r)?`alias`:`scalar`;throw Error(`Cannot replace node with ${e} parent`)}}var ae={"!":`%21`,",":`%2C`,"[":`%5B`,"]":`%5D`,"{":`%7B`,"}":`%7D`},oe=e=>e.replace(/[!,[\]{}]/g,e=>ae[e]),se=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+oe(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&&D(e.contents)){let t={};j(e.contents,(e,n)=>{D(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(`
|
|
3
3
|
`)}};se.defaultYaml={explicit:!1,version:`1.2`},se.defaultTags={"!!":`tag:yaml.org,2002:`};function ce(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 le(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=le(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=le(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=le(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=le(e,r,t,n);i===void 0?delete r[t]:i!==n&&(r[t]=i)}return e.call(t,n,r)}function P(e,t,n){if(Array.isArray(e))return e.map((e,t)=>P(e,String(t),n));if(e&&typeof e.toJSON==`function`){if(!n||!O(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 ue=class{constructor(e){Object.defineProperty(this,y,{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(!x(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=P(this,``,a);if(typeof r==`function`)for(let{count:e,res:t}of a.anchors.values())r(t,e);return typeof i==`function`?le(i,{"":o},``,o):o}},de=class extends ue{constructor(e){super(p),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=[],j(e,{Node:(e,t)=>{(b(t)||O(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||=(P(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=fe(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(ce(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 fe(e,t,n){if(b(t)){let r=t.resolve(e),i=n&&r&&n.get(r);return i?i.count*i.aliasCount:0}else if(E(t)){let r=0;for(let i of t.items){let t=fe(e,i,n);t>r&&(r=t)}return r}else if(C(t)){let r=fe(e,t.key,n),i=fe(e,t.value,n);return Math.max(r,i)}return 1}var pe=e=>!e||typeof e!=`function`&&typeof e!=`object`,F=class extends ue{constructor(e){super(_),this.value=e}toJSON(e,t){return t?.keep?this.value:P(this.value,e,t)}toString(){return String(this.value)}};F.BLOCK_FOLDED=`BLOCK_FOLDED`,F.BLOCK_LITERAL=`BLOCK_LITERAL`,F.PLAIN=`PLAIN`,F.QUOTE_DOUBLE=`QUOTE_DOUBLE`,F.QUOTE_SINGLE=`QUOTE_SINGLE`;var me=`tag:yaml.org,2002:`;function he(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 ge(e,t,n){if(x(e)&&(e=e.contents),D(e))return e;if(C(e)){let t=n.schema[h].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 de(c.anchor);c={anchor:null,node:null},s.set(e,c)}t?.startsWith(`!!`)&&(t=me+t.slice(2));let l=he(e,t,o.tags);if(!l){if(e&&typeof e.toJSON==`function`&&(e=e.toJSON()),!e||typeof e!=`object`){let t=new F(e);return c&&(c.node=t),t}l=e instanceof Map?o[h]:Symbol.iterator in Object(e)?o[v]:o[h]}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 F(e);return t?u.tag=t:l.default||(u.tag=l.tag),c&&(c.node=u),u}function _e(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 ge(r,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error(`This should not happen, please report a bug.`)},schema:e,sourceObjects:new Map})}var ve=e=>e==null||typeof e==`object`&&!!e[Symbol.iterator]().next().done,ye=class extends ue{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=>D(t)||C(t)?t.clone(e):t),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(ve(e))this.add(t);else{let[n,...r]=e,i=this.get(n,!0);if(E(i))i.addIn(r,t);else if(i===void 0&&this.schema)this.set(n,_e(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(E(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&&w(i)?i.value:i:E(i)?i.getIn(r,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!C(t))return!1;let n=t.value;return n==null||e&&w(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 E(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(E(e))e.setIn(r,t);else if(e===void 0&&this.schema)this.set(n,_e(this.schema,r,t));else throw Error(`Expected YAML collection at ${n}. Remaining path: ${r}`)}}},be=e=>e.replace(/^(?!$)(?: $)?/gm,`#`);function xe(e,t){return/^\n+$/.test(e)?e.substring(1):t?e.replace(/^(?! *$)/gm,t):e}var I=(e,t,n)=>e.endsWith(`
|
|
4
4
|
`)?xe(n,t):n.includes(`
|
|
@@ -35,4 +35,4 @@ $&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,`$1$2`).replace(/\
|
|
|
35
35
|
`}}return e?(p+=`
|
|
36
36
|
`+xe(l(e),c),s&&s()):d&&o&&o(),p}function Qe({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(D(i))i.spaceBefore&&d.push(``),$e(t,d,i.commentBefore,!1),i.comment&&(a=i.comment);else if(C(i)){let e=D(i.key)?i.key:null;e&&(e.spaceBefore&&d.push(``),$e(t,d,e.commentBefore,!1),e.comment&&(l=!0));let n=D(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=Re(i,c,()=>a=null);l||=d.length>u||o.includes(`
|
|
37
37
|
`),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+=I(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}`:`
|
|
38
|
-
`;return`${e}\n${i}${p}`}else return`${f}${o}${d.join(` `)}${o}${p}`}function $e({indent:e,options:{commentString:t}},n,r,i){if(r&&i&&(r=r.replace(/^\n+/,``)),r){let i=xe(t(r),e);n.push(i.trimStart())}}function B(e,t){let n=w(t)?t.value:t;for(let r of e)if(C(r)&&(r.key===t||r.key===n||w(r.key)&&r.key.value===n))return r}var V=class extends ye{static get tagName(){return`tag:yaml.org,2002:map`}constructor(e){super(h,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(Ye(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=C(e)?e:!e||typeof e!=`object`||!(`key`in e)?new z(e,e?.value):new z(e.key,e.value);let r=B(this.items,n.key),i=this.schema?.sortMapEntries;if(r){if(!t)throw Error(`Key ${n.key} already set`);w(r.value)&&pe(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=B(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){let n=B(this.items,e)?.value;return(!t&&w(n)?n.value:n)??void 0}has(e){return!!B(this.items,e)}set(e,t){this.add(new z(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)qe(t,r,e);return r}toString(e,t,n){if(!e)return JSON.stringify(this);for(let e of this.items)if(!C(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})),Xe(this,e,{blockItemPrefix:``,flowChars:{start:`{`,end:`}`},itemIndent:e.indent||``,onChompKeep:n,onComment:t})}},et={collection:`map`,default:!0,nodeClass:V,tag:`tag:yaml.org,2002:map`,resolve(e,t){return S(e)||t(`Expected a mapping for this tag`),e},createNode:(e,t,n)=>V.from(e,t,n)},tt=class extends ye{static get tagName(){return`tag:yaml.org,2002:seq`}constructor(e){super(v,e),this.items=[]}add(e){this.items.push(e)}delete(e){let t=nt(e);return typeof t==`number`?this.items.splice(t,1).length>0:!1}get(e,t){let n=nt(e);if(typeof n!=`number`)return;let r=this.items[n];return!t&&w(r)?r.value:r}has(e){let t=nt(e);return typeof t==`number`&&t<this.items.length}set(e,t){let n=nt(e);if(typeof n!=`number`)throw Error(`Expected a valid index, not ${e}.`);let r=this.items[n];w(r)&&pe(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(P(e,String(r++),t));return n}toString(e,t,n){return e?Xe(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(ge(a,void 0,n))}}return i}};function nt(e){let t=w(e)?e.value:e;return t&&typeof t==`string`&&(t=Number(t)),typeof t==`number`&&Number.isInteger(t)&&t>=0?t:null}var rt={collection:`seq`,default:!0,nodeClass:tt,tag:`tag:yaml.org,2002:seq`,resolve(e,t){return T(e)||t(`Expected a sequence for this tag`),e},createNode:(e,t,n)=>tt.from(e,t,n)};function it(e){return typeof e==`bigint`||Number.isInteger(e)}var at=({value:e})=>JSON.stringify(e),ot=[{identify:e=>typeof e==`string`,default:!0,tag:`tag:yaml.org,2002:str`,resolve:e=>e,stringify:at},{identify:e=>e==null,createNode:()=>new F(null),default:!0,tag:`tag:yaml.org,2002:null`,test:/^null$/,resolve:()=>null,stringify:at},{identify:e=>typeof e==`boolean`,default:!0,tag:`tag:yaml.org,2002:bool`,test:/^true$|^false$/,resolve:e=>e===`true`,stringify:at},{identify:it,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})=>it(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:at}];[et,rt].concat(ot,{default:!0,tag:``,test:/^/,resolve(e,t){return t(`Unresolved plain scalar ${JSON.stringify(e)}`),e}});function st(e,t,n){let{replacer:r}=n,i=new tt(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(Ye(o,s,n))}return i}var ct=class e extends tt{constructor(){super(),this.add=V.prototype.add.bind(this),this.delete=V.prototype.delete.bind(this),this.get=V.prototype.get.bind(this),this.has=V.prototype.has.bind(this),this.set=V.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(C(e)?(r=P(e.key,``,t),i=P(e.value,r,t)):r=P(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=st(e,t,n),i=new this;return i.items=r.items,i}};ct.tag=`tag:yaml.org,2002:omap`;var lt=class e extends V{constructor(t){super(t),this.tag=e.tag}add(e){let t;t=C(e)?e:e&&typeof e==`object`&&`key`in e&&`value`in e&&e.value===null?new z(e.key,null):new z(e,null),B(this.items,t.key)||this.items.push(t)}get(e,t){let n=B(this.items,e);return!t&&C(n)?w(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=B(this.items,e);n&&!t?this.items.splice(this.items.indexOf(n),1):!n&&t&&this.items.push(new z(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(Ye(e,null,n));return i}};lt.tag=`tag:yaml.org,2002:set`;var ut=Symbol(`break visit`),dt=Symbol(`skip children`),ft=Symbol(`remove item`);function H(e,t){`type`in e&&e.type===`document`&&(e={start:e.start,value:e.value}),pt(Object.freeze([]),e,t)}H.BREAK=ut,H.SKIP=dt,H.REMOVE=ft,H.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},H.parentCollection=(e,t)=>{let n=H.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 pt(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=pt(Object.freeze(e.concat([[i,t]])),a.items[t],n);if(typeof r==`number`)t=r-1;else if(r===ut)return ut;else r===ft&&(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]}var r=void 0,i=``,a=` `,o=`\\`,s=/^\s+$/,c=/(?:[^\\]|^)\\$/,l=/^\\!/,u=/^\\#/,d=/\r?\n/g,f=/^\.{0,2}\/|^\.{1,2}$/,p=/\/$/,m=`/`,h=`node-ignore`;typeof Symbol<`u`&&(h=Symbol.for(`node-ignore`));var g=h,_=(e,t,n)=>(Object.defineProperty(e,t,{value:n}),n),v=/([0-z])-([0-z])/g,y=()=>!1,b=e=>e.replace(v,(e,t,n)=>t.charCodeAt(0)<=n.charCodeAt(0)?e:i),x=e=>{let{length:t}=e;return e.slice(0,t-t%2)},S=[[/^\uFEFF/,()=>i],[/((?:\\\\)*?)(\\?\s+)$/,(e,t,n)=>t+(n.indexOf(`\\`)===0?a:i)],[/(\\+?)\s/g,(e,t)=>{let{length:n}=t;return t.slice(0,n-n%2)+a}],[/[\\$.|*+(){^]/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,()=>o],[/\\\\/g,()=>o],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(e,t,n,r,i)=>t===o?`\\[${n}${x(r)}${i}`:i===`]`&&r.length%2==0?`[${b(n)}${r}]`:`[]`],[/(?:[^*])$/,e=>/\/$/.test(e)?`${e}$`:`${e}(?=$|\\/$)`]],C=/(^|\\\/)?\\\*$/,w=`regex`,T=`checkRegex`,E={[w](e,t){return`${t?`${t}[^/]+`:`[^/]*`}(?=$|\\/$)`},[T](e,t){return`${t?`${t}[^/]*`:`[^/]*`}(?=$|\\/$)`}},D=e=>S.reduce((t,[n,r])=>t.replace(n,r.bind(e)),e),O=e=>typeof e==`string`,k=e=>e&&O(e)&&!s.test(e)&&!c.test(e)&&e.indexOf(`#`)!==0,ee=e=>e.split(d).filter(Boolean),A=class{constructor(e,t,n,r,i,a){this.pattern=e,this.mark=t,this.negative=i,_(this,`body`,n),_(this,`ignoreCase`,r),_(this,`regexPrefix`,a)}get regex(){let e=`_regex`;return this[e]?this[e]:this._make(w,e)}get checkRegex(){let e=`_checkRegex`;return this[e]?this[e]:this._make(T,e)}_make(e,t){let n=this.regexPrefix.replace(C,E[e]),r=this.ignoreCase?new RegExp(n,`i`):new RegExp(n);return _(this,t,r)}},j=({pattern:e,mark:t},n)=>{let r=!1,i=e;i.indexOf(`!`)===0&&(r=!0,i=i.substr(1)),i=i.replace(l,`!`).replace(u,`#`);let a=D(i);return new A(e,t,i,n,r,a)},M=class{constructor(e){this._ignoreCase=e,this._rules=[]}_add(e){if(e&&e[g]){this._rules=this._rules.concat(e._rules._rules),this._added=!0;return}if(O(e)&&(e={pattern:e}),k(e.pattern)){let t=j(e,this._ignoreCase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,n(O(e)?ee(e):e).forEach(this._add,this),this._added}test(e,t,n){let i=!1,a=!1,o;this._rules.forEach(s=>{let{negative:c}=s;a===c&&i!==a||c&&!i&&!a&&!t||s[n].test(e)&&(i=!c,a=c,o=c?r:s)});let s={ignored:i,unignored:a};return o&&(s.rule=o),s}},te=(e,t)=>{throw new t(e)},N=(e,t,n)=>O(e)?e?N.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),ne=e=>f.test(e);N.isNotRelative=ne,N.convert=e=>e;var re=class{constructor({ignorecase:e=!0,ignoreCase:t=e,allowRelativePaths:n=!1}={}){_(this,g,!0),this._rules=new M(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&&N.convert(e);return N(i,e,this._strictPathCheck?te:y),this._t(i,t,n,r)}checkIgnore(e){if(!p.test(e))return this.test(e);let t=e.split(m).filter(Boolean);if(t.pop(),t.length){let e=this._t(t.join(m)+m,this._testCache,!0,t);if(e.ignored)return e}return this._rules.test(e,!1,T)}_t(e,t,n,r){if(e in t)return t[e];if(r||=e.split(m).filter(Boolean),r.pop(),!r.length)return t[e]=this._rules.test(e,n,w);let i=this._t(r.join(m)+m,t,n,r);return t[e]=i.ignored?i:this._rules.test(e,n,w)}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)}},ie=e=>new re(e),ae=e=>N(e&&N.convert(e),e,y),oe=()=>{N.convert=e=>/^\\\\\?\\/.test(e)||/["<>|\u0000-\u001F]+/u.test(e)?e:e.replace(/\\/g,`/`);let e=/^[a-z]:\//i;N.isNotRelative=t=>e.test(t)||ne(t)};typeof process<`u`&&process.platform===`win32`&&oe(),t.exports=ie,ie.default=ie,t.exports.isPathValid=ae,_(t.exports,Symbol.for(`setupWindows`),oe)}))(),globalThis.Buffer,o(`secret-scrub`),o(`image-processor`),o(`tool-adapter`);var mt=Object.assign({"/packages/dev-tools/providers.build.json":{include:[`*`],exclude:[`amazon-bedrock`]}})[`/packages/dev-tools/providers.build.json`]??{include:[`*`],exclude:[]};function ht(e){let{include:t,exclude:n}=mt;return n.includes(`*`)||n.includes(e)?!1:!!(t.includes(`*`)||t.includes(e))}var gt=Object.assign({"./built-in/azure-ai-foundry.ts":()=>n(()=>import(`./azure-ai-foundry-Bo0FAJyX.js`),[]),"./built-in/azure-openai.ts":()=>n(()=>import(`./azure-openai-BEec8FHP.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])),"./built-in/bedrock-camp.ts":()=>n(()=>import(`./bedrock-camp-9-QEmC9Z.js`).then(e=>e.n),__vite__mapDeps([13,5,1,2,3,4,6,7])),"./built-in/local-llm.ts":()=>n(()=>import(`./local-llm-D09l_nRy.js`),__vite__mapDeps([14,1,2,3,4,5,6,15,16,17,7,18,19,8,11]))}),_t=Object.assign({"/packages/webapp/providers/adobe.ts":()=>n(()=>import(`./adobe-Dvkc5_oM.js`),__vite__mapDeps([20,2,1,3,4,5,6,9,10,11,12,13,7,21,22,23])),"/packages/webapp/providers/github-copilot.ts":()=>n(()=>import(`./github-copilot-BqMS3_4S.js`),__vite__mapDeps([24,2,1,3,4,5,6,9,10,11,12])),"/packages/webapp/providers/github.ts":()=>n(()=>import(`./github-C6vLSHER.js`),__vite__mapDeps([25,2,9,5,10,11,12,26,21,22])),"/packages/webapp/providers/openai-codex.ts":()=>n(()=>import(`./openai-codex-d2uBt8CN.js`),__vite__mapDeps([27,1,2,3,4,5,6,9,10,11,12])),"/packages/webapp/providers/xai-grok-errors.ts":()=>n(()=>import(`./xai-grok-errors-bnlIBeu-.js`),[]),"/packages/webapp/providers/xai-grok-models.ts":()=>n(()=>import(`./xai-grok-models-CeEBaUMC.js`),[]),"/packages/webapp/providers/xai-grok-sanitize.ts":()=>n(()=>import(`./xai-grok-sanitize-CR2JoOJd.js`),__vite__mapDeps([28,29])),"/packages/webapp/providers/xai-grok.ts":()=>n(()=>import(`./xai-grok-BcQs9t1L.js`),__vite__mapDeps([30,1,2,3,4,5,6,9,10,11,12,31,29,28]))}),U=new Map,vt=null;function yt(){return vt||(vt=(async()=>{for(let[e,t]of Object.entries(gt)){let e=await t();e.config&&ht(e.config.id)&&(U.set(e.config.id,e.config),e.register?.())}for(let[e,t]of Object.entries(_t)){let e=await t();e.config&&(U.set(e.config.id,e.config),e.register?.())}})(),vt)}function bt(e){return U.get(e)}function xt(){return[...U.keys()]}function St(e){U.set(e.id,e)}var Ct=e({ACCOUNTS_KEY:()=>W,__test__:()=>Nt,addAccount:()=>X,applyProviderDefaults:()=>Bt,clearAllSettings:()=>bn,clearApiKey:()=>hn,clearBaseUrl:()=>vn,clearSelectedProvider:()=>fn,exportProviders:()=>yn,getAccounts:()=>Y,getAllAvailableModels:()=>Wt,getAllExtraOAuthDomains:()=>Jt,getApiKey:()=>pn,getApiKeyForProvider:()=>on,getApiVersionForProvider:()=>cn,getAvailableProviders:()=>Pt,getBaseUrl:()=>gn,getBaseUrlForProvider:()=>Z,getDeploymentForProvider:()=>sn,getExtraOAuthDomains:()=>Gt,getOAuthAccountInfo:()=>Rt,getProviderConfig:()=>K,getProviderModels:()=>q,getRawApiKeyForProvider:()=>an,getSelectedModelId:()=>Q,getSelectedProvider:()=>$,isModelHiddenFromPicker:()=>Ht,logoutOAuthAccount:()=>$t,maskOAuthTokenWithRetry:()=>en,migrateLegacyAuthOnlySelection:()=>jt,persistOAuthMaskViaServiceWorker:()=>tn,providerOffersLlmModels:()=>Ft,removeAccount:()=>Qt,resolveCurrentModel:()=>Tn,resolveModelById:()=>wn,saveOAuthAccount:()=>nn,setApiKey:()=>mn,setBaseUrl:()=>_n,setExtraOAuthDomains:()=>Kt,setExtraOAuthDomainsAsync:()=>qt,setSelectedModelId:()=>ln,setSelectedProvider:()=>dn}),wt=r,Tt=i,W=`slicc_accounts`,G=`selected-model`,Et=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],Dt=new Set([`github`]);function Ot(e){let t;try{t=a()}catch{return!1}return t.includes(e)&&!ht(e)}var kt=!1;function At(){if(!kt){kt=!0;for(let e of Et)try{localStorage.removeItem(e)}catch{}jt()}}function jt(){try{let e=localStorage.getItem(G);if(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t);(Dt.has(n)||Ot(n))&&localStorage.removeItem(G)}}}catch{}try{let e=localStorage.getItem(W);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`&&Ot(e.providerId)));n.length!==t.length&&localStorage.setItem(W,JSON.stringify(n))}catch{}}function Mt(){kt=!1}var Nt={_resetLegacyCleanup:Mt};function Pt(){let e=a().filter(ht),t=xt();return[...new Set([...e,...t])].filter(e=>!bt(e)?.hidden)}function Ft(e){try{if(q(e).length>0)return!0}catch{}try{if(i(e).length>0)return!0}catch{}let t=bt(e);return!!(t?.modelOverrides&&Object.keys(t.modelOverrides).length>0)}function It(e,t){try{if(q(e).some(e=>e.id===t))return!0}catch{}try{if(i(e).some(e=>e.id===t))return!0}catch{}let n=bt(e);return!!(n?.modelOverrides&&Object.hasOwn(n.modelOverrides,t))}function K(e){return bt(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function Lt(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 q(e){try{if(e===`bedrock-camp`){let e=f(Z(`bedrock-camp`));return Tt(`amazon-bedrock`).filter(t=>d(t,e)).map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}))}let t=K(e);if(t.getModelIds){let n;try{n=t.getModelIds()}catch(t){return J.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of a())try{for(let t of Tt(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=Sn(e,n.id,``,i),n.name&&(o.name=n.name));let s=t.modelOverrides?.[n.id];return s&&Lt(o,s),Lt(o,n),o})}if(t.isOAuth){let n=Tt(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&Lt(i,a),i})}return Tt(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return J.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function Rt(e){let t=Y().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}}var zt=Object.assign({})[`/packages/webapp/providers.json`]??[],J=o(`provider-settings`);function Bt(e=zt){if(e.length===0||Y().length>0)return;let t=new Set(Pt());for(let n of e)if(!(!n.providerId||!n.apiKey)){if(!t.has(n.providerId)){J.warn(`Unknown provider "${n.providerId}" in providers.json — skipping`);continue}X(n.providerId,n.apiKey,n.baseUrl)}let n=e.find(e=>e.providerId&&e.apiKey&&t.has(e.providerId));n?.model&&!localStorage.getItem(G)&&localStorage.setItem(G,`${n.providerId}:${n.model}`)}var Vt=[/haiku/i];function Ht(e){return Vt.some(t=>t.test(e))}function Ut(e){return e.filter(e=>!Ht(e.id))}function Wt(){let e=Y();if(e.length===0)return[];let t=new Map;for(let n of e){if(t.has(n.providerId))continue;let e=K(n.providerId);if(e.hidden||Ot(n.providerId))continue;let r=Ut(q(n.providerId));if(r.length===0)continue;let i={providerId:n.providerId,providerName:e.name,models:r};t.set(n.providerId,i)}return[...t.values()]}function Y(){At();let e=localStorage.getItem(W);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 Gt(e){return c(localStorage)[e]??[]}function Kt(e,t){let n=c(localStorage),r=t.map(e=>e.trim()).filter(e=>e.length>0);r.length===0?delete n[e]:n[e]=r,s(localStorage,n)}async function qt(e,t){if(l()){Kt(e,t);return}let n=u();if(!n)throw Error(`setExtraOAuthDomainsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let{storeAfter:r}=await n.call(`oauth-extras-set`,{providerId:e,domains:t});try{s(localStorage,r)}catch(t){J.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{providerId:e,error:t instanceof Error?t.message:String(t)})}}function Jt(){return c(localStorage)}function Yt(e){localStorage.setItem(W,JSON.stringify(e))}async function Xt(e){if(l()){Yt(e);return}let t=u();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(W,r)}catch(e){J.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{error:e instanceof Error?e.message:String(e)})}}function X(e,t,n,r,i){let a=Y().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),Yt(a)}async function Zt(e){let t=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(t){let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.delete`,name:`oauth.${e}.token`},n=>{chrome.runtime.lastError&&J.error(`SW secrets.delete transport failed`,{providerId:e,error:chrome.runtime.lastError.message}),t(n??{})})});t.error&&J.error(`SW secrets.delete returned error`,{providerId:e,error:t.error})}else{let t=await fetch(`/api/secrets/oauth/${e}`,{method:`DELETE`});!t.ok&&t.status!==404&&J.warn(`OAuth replica DELETE non-ok`,{providerId:e,status:t.status})}}catch(n){J.error(`OAuth replica removal failed`,{providerId:e,isExtension:t,error:n instanceof Error?n.message:String(n)})}}async function Qt(e){let t=Y().find(t=>t.providerId===e),n=K(e);t&&n?.isOAuth&&await $t(e),await Zt(e),await Xt(Y().filter(t=>t.providerId!==e));let r=localStorage.getItem(G)??``,i=r.indexOf(`:`);i>0&&r.slice(0,i)===e&&localStorage.removeItem(G)}async function $t(e){let t=Y().find(t=>t.providerId===e);if(!t)return;let r=K(e);if(r?.isOAuth){if(r.onOAuthLogout)try{await r.onOAuthLogout()}catch(t){J.warn(`onOAuthLogout failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})}if(r.getOAuthLogoutUrl){let i=r.getOAuthLogoutUrl(t);if(i){let{openIdpLogoutUrl:t}=await n(async()=>{let{openIdpLogoutUrl:e}=await import(`./oauth-service-CTlktxVj.js`);return{openIdpLogoutUrl:e}},__vite__mapDeps([21,2,22,5]));await t(i).catch(t=>{J.warn(`IdP logout popup failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})})}}await Xt(Y().map(t=>t.providerId===e?{providerId:t.providerId,apiKey:``,baseUrl:t.baseUrl,userName:t.userName,userAvatar:t.userAvatar,loggedOut:!0}:t)),await Zt(e)}}async function en(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 tn(e,t,n){let r={providerId:e.providerId,accessToken:e.accessToken,domains:e.domains.join(`,`)},{maskedValue:i,lastError:a}=await en(()=>t.sendMaskRequest(r),n);if(!i){J.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 nn(e){let t=Y().find(t=>t.providerId===e.providerId),n=Y().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 Xt(n);let r=K(e.providerId)?.oauthTokenDomains??[],i=Gt(e.providerId),a=new Set,o=[];for(let e of[...r,...i]){let t=e.toLowerCase();a.has(t)||(a.add(t),o.push(e))}if(o.length===0)return;let s=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(s)await tn({providerId:e.providerId,accessToken:e.accessToken,domains:o},{sendMaskRequest:t=>new Promise(n=>{chrome.runtime.sendMessage({type:`secrets.mask-oauth-token`,...t},t=>{chrome.runtime.lastError&&J.error(`SW mask-oauth-token transport failed`,{providerId:e.providerId,error:chrome.runtime.lastError.message}),t?.error&&J.warn(`SW mask-oauth-token returned error`,{providerId:e.providerId,error:t.error}),n(t??{})})}),getAccounts:Y,saveAccounts:Xt});else if(!globalThis.__slicc_connect_mode){let t=await fetch(`/api/secrets/oauth-update`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({providerId:e.providerId,accessToken:e.accessToken,domains:o})});if(t.ok){let n=await t.json(),r=Y(),i=r.find(t=>t.providerId===e.providerId);i&&typeof n.maskedValue==`string`&&(i.maskedValue=n.maskedValue,await Xt(r))}else J.warn(`OAuth replica POST non-ok`,{providerId:e.providerId,status:t.status})}}catch(t){J.error(`OAuth replica sync failed`,{providerId:e.providerId,isExtension:s,error:t instanceof Error?t.message:String(t)})}}var rn=`local`;function an(e){let t=Y().find(t=>t.providerId===e);return t&&(t.accessToken||t.apiKey)||null}function on(e){let t=Y().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(K(e).optionalApiKey?rn:null):null}function Z(e){return Y().find(t=>t.providerId===e)?.baseUrl??null}function sn(e){return Y().find(t=>t.providerId===e)?.deployment??null}function cn(e){return Y().find(t=>t.providerId===e)?.apiVersion??null}function Q(){let e=localStorage.getItem(G)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function ln(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t),r=new Set([...xt(),...Pt()]),i=n.includes(`.`);if(r.has(n)||!i){localStorage.setItem(G,e);return}}let n=$();localStorage.setItem(G,`${n}:${e}`)}function un(){return localStorage.getItem(G)||``}function $(){let e=un(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=Y(),r=Q();if(r){let e=n.find(e=>Ft(e.providerId)&&It(e.providerId,r));if(e)return e.providerId}let i=n.find(e=>Ft(e.providerId));return i?i.providerId:n.length>0?n[0].providerId:`anthropic`}function dn(e){let t=Q();localStorage.setItem(G,`${e}:${t}`)}function fn(){let e=Q();localStorage.setItem(G,e)}function pn(){return on($())}function mn(e){let t=$();X(t,e,Z(t)??void 0)}async function hn(){await Qt($())}function gn(){return Z($())}function _n(e){let t=$(),n=an(t);n&&X(t,n,e||void 0)}function vn(){let e=$(),t=an(e);t&&X(e,t)}function yn(){let e=Y(),t=$(),n=Q();return e.map(e=>{let r={providerId:e.providerId,apiKey:e.apiKey};return e.baseUrl&&(r.baseUrl=e.baseUrl),e.providerId===t&&n&&(r.model=n),r})}async function bn(){let e=Y();await Promise.allSettled(e.map(e=>Qt(e.providerId))),localStorage.removeItem(W),localStorage.removeItem(G);for(let e of Et)localStorage.removeItem(e)}function xn(e){return/^(?:gpt[-.]?|o[0-9]|chatgpt)/i.test(e)?`openai`:`anthropic`}function Sn(e,t,n,r){return{id:t,name:t,provider:e,api:r??`${e}-${xn(t)}`,baseUrl:n??``,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!0}}function Cn(e,t){return t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e}function wn(e){if(!e)return Tn();let t=$(),n=Z(t),r=K(t);try{let i=wt(Cn(t,r),e);if(!i?.id)throw Error(`Model ${e} not found`);let a=i;return r.isOAuth?a=q(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(J.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=q(t).find(t=>t.id===e);return r?n?{...r,baseUrl:n}:r:Sn(t,e,n)}return Tn()}}function Tn(){let e=$(),t=Q(),n=Z(e),r=q(e),i=K(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=Cn(e,i),a=wt(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){J.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?Sn(e,o,n):wt(`anthropic`,`claude-sonnet-4-0`)}}export{en as A,Kt as B,K as C,$ as D,Q as E,Tn as F,St as G,ln as H,wn as I,yt as K,nn as L,tn as M,Ft as N,Ht as O,Qt as P,mn as R,Rt as S,an as T,dn as U,qt as V,bt as W,Pt as _,Bt as a,sn as b,vn as c,Y as d,Wt as f,cn as g,on as h,X as i,jt as j,$t as k,fn as l,pn as m,Nt as n,bn as o,Jt as p,Ct as r,hn as s,W as t,yn as u,gn as v,q as w,Gt as x,Z as y,_n as z};
|
|
38
|
+
`;return`${e}\n${i}${p}`}else return`${f}${o}${d.join(` `)}${o}${p}`}function $e({indent:e,options:{commentString:t}},n,r,i){if(r&&i&&(r=r.replace(/^\n+/,``)),r){let i=xe(t(r),e);n.push(i.trimStart())}}function B(e,t){let n=w(t)?t.value:t;for(let r of e)if(C(r)&&(r.key===t||r.key===n||w(r.key)&&r.key.value===n))return r}var V=class extends ye{static get tagName(){return`tag:yaml.org,2002:map`}constructor(e){super(h,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(Ye(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=C(e)?e:!e||typeof e!=`object`||!(`key`in e)?new z(e,e?.value):new z(e.key,e.value);let r=B(this.items,n.key),i=this.schema?.sortMapEntries;if(r){if(!t)throw Error(`Key ${n.key} already set`);w(r.value)&&pe(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=B(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){let n=B(this.items,e)?.value;return(!t&&w(n)?n.value:n)??void 0}has(e){return!!B(this.items,e)}set(e,t){this.add(new z(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)qe(t,r,e);return r}toString(e,t,n){if(!e)return JSON.stringify(this);for(let e of this.items)if(!C(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})),Xe(this,e,{blockItemPrefix:``,flowChars:{start:`{`,end:`}`},itemIndent:e.indent||``,onChompKeep:n,onComment:t})}},et={collection:`map`,default:!0,nodeClass:V,tag:`tag:yaml.org,2002:map`,resolve(e,t){return S(e)||t(`Expected a mapping for this tag`),e},createNode:(e,t,n)=>V.from(e,t,n)},tt=class extends ye{static get tagName(){return`tag:yaml.org,2002:seq`}constructor(e){super(v,e),this.items=[]}add(e){this.items.push(e)}delete(e){let t=nt(e);return typeof t==`number`?this.items.splice(t,1).length>0:!1}get(e,t){let n=nt(e);if(typeof n!=`number`)return;let r=this.items[n];return!t&&w(r)?r.value:r}has(e){let t=nt(e);return typeof t==`number`&&t<this.items.length}set(e,t){let n=nt(e);if(typeof n!=`number`)throw Error(`Expected a valid index, not ${e}.`);let r=this.items[n];w(r)&&pe(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(P(e,String(r++),t));return n}toString(e,t,n){return e?Xe(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(ge(a,void 0,n))}}return i}};function nt(e){let t=w(e)?e.value:e;return t&&typeof t==`string`&&(t=Number(t)),typeof t==`number`&&Number.isInteger(t)&&t>=0?t:null}var rt={collection:`seq`,default:!0,nodeClass:tt,tag:`tag:yaml.org,2002:seq`,resolve(e,t){return T(e)||t(`Expected a sequence for this tag`),e},createNode:(e,t,n)=>tt.from(e,t,n)};function it(e){return typeof e==`bigint`||Number.isInteger(e)}var at=({value:e})=>JSON.stringify(e),ot=[{identify:e=>typeof e==`string`,default:!0,tag:`tag:yaml.org,2002:str`,resolve:e=>e,stringify:at},{identify:e=>e==null,createNode:()=>new F(null),default:!0,tag:`tag:yaml.org,2002:null`,test:/^null$/,resolve:()=>null,stringify:at},{identify:e=>typeof e==`boolean`,default:!0,tag:`tag:yaml.org,2002:bool`,test:/^true$|^false$/,resolve:e=>e===`true`,stringify:at},{identify:it,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})=>it(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:at}];[et,rt].concat(ot,{default:!0,tag:``,test:/^/,resolve(e,t){return t(`Unresolved plain scalar ${JSON.stringify(e)}`),e}});function st(e,t,n){let{replacer:r}=n,i=new tt(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(Ye(o,s,n))}return i}var ct=class e extends tt{constructor(){super(),this.add=V.prototype.add.bind(this),this.delete=V.prototype.delete.bind(this),this.get=V.prototype.get.bind(this),this.has=V.prototype.has.bind(this),this.set=V.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(C(e)?(r=P(e.key,``,t),i=P(e.value,r,t)):r=P(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=st(e,t,n),i=new this;return i.items=r.items,i}};ct.tag=`tag:yaml.org,2002:omap`;var lt=class e extends V{constructor(t){super(t),this.tag=e.tag}add(e){let t;t=C(e)?e:e&&typeof e==`object`&&`key`in e&&`value`in e&&e.value===null?new z(e.key,null):new z(e,null),B(this.items,t.key)||this.items.push(t)}get(e,t){let n=B(this.items,e);return!t&&C(n)?w(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=B(this.items,e);n&&!t?this.items.splice(this.items.indexOf(n),1):!n&&t&&this.items.push(new z(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(Ye(e,null,n));return i}};lt.tag=`tag:yaml.org,2002:set`;var ut=Symbol(`break visit`),dt=Symbol(`skip children`),ft=Symbol(`remove item`);function H(e,t){`type`in e&&e.type===`document`&&(e={start:e.start,value:e.value}),pt(Object.freeze([]),e,t)}H.BREAK=ut,H.SKIP=dt,H.REMOVE=ft,H.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},H.parentCollection=(e,t)=>{let n=H.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 pt(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=pt(Object.freeze(e.concat([[i,t]])),a.items[t],n);if(typeof r==`number`)t=r-1;else if(r===ut)return ut;else r===ft&&(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]}var r=void 0,i=``,a=` `,o=`\\`,s=/^\s+$/,c=/(?:[^\\]|^)\\$/,l=/^\\!/,u=/^\\#/,d=/\r?\n/g,f=/^\.{0,2}\/|^\.{1,2}$/,p=/\/$/,m=`/`,h=`node-ignore`;typeof Symbol<`u`&&(h=Symbol.for(`node-ignore`));var g=h,_=(e,t,n)=>(Object.defineProperty(e,t,{value:n}),n),v=/([0-z])-([0-z])/g,y=()=>!1,b=e=>e.replace(v,(e,t,n)=>t.charCodeAt(0)<=n.charCodeAt(0)?e:i),x=e=>{let{length:t}=e;return e.slice(0,t-t%2)},S=[[/^\uFEFF/,()=>i],[/((?:\\\\)*?)(\\?\s+)$/,(e,t,n)=>t+(n.indexOf(`\\`)===0?a:i)],[/(\\+?)\s/g,(e,t)=>{let{length:n}=t;return t.slice(0,n-n%2)+a}],[/[\\$.|*+(){^]/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,()=>o],[/\\\\/g,()=>o],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(e,t,n,r,i)=>t===o?`\\[${n}${x(r)}${i}`:i===`]`&&r.length%2==0?`[${b(n)}${r}]`:`[]`],[/(?:[^*])$/,e=>/\/$/.test(e)?`${e}$`:`${e}(?=$|\\/$)`]],C=/(^|\\\/)?\\\*$/,w=`regex`,T=`checkRegex`,E={[w](e,t){return`${t?`${t}[^/]+`:`[^/]*`}(?=$|\\/$)`},[T](e,t){return`${t?`${t}[^/]*`:`[^/]*`}(?=$|\\/$)`}},D=e=>S.reduce((t,[n,r])=>t.replace(n,r.bind(e)),e),O=e=>typeof e==`string`,k=e=>e&&O(e)&&!s.test(e)&&!c.test(e)&&e.indexOf(`#`)!==0,ee=e=>e.split(d).filter(Boolean),A=class{constructor(e,t,n,r,i,a){this.pattern=e,this.mark=t,this.negative=i,_(this,`body`,n),_(this,`ignoreCase`,r),_(this,`regexPrefix`,a)}get regex(){let e=`_regex`;return this[e]?this[e]:this._make(w,e)}get checkRegex(){let e=`_checkRegex`;return this[e]?this[e]:this._make(T,e)}_make(e,t){let n=this.regexPrefix.replace(C,E[e]),r=this.ignoreCase?new RegExp(n,`i`):new RegExp(n);return _(this,t,r)}},j=({pattern:e,mark:t},n)=>{let r=!1,i=e;i.indexOf(`!`)===0&&(r=!0,i=i.substr(1)),i=i.replace(l,`!`).replace(u,`#`);let a=D(i);return new A(e,t,i,n,r,a)},M=class{constructor(e){this._ignoreCase=e,this._rules=[]}_add(e){if(e&&e[g]){this._rules=this._rules.concat(e._rules._rules),this._added=!0;return}if(O(e)&&(e={pattern:e}),k(e.pattern)){let t=j(e,this._ignoreCase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,n(O(e)?ee(e):e).forEach(this._add,this),this._added}test(e,t,n){let i=!1,a=!1,o;this._rules.forEach(s=>{let{negative:c}=s;a===c&&i!==a||c&&!i&&!a&&!t||s[n].test(e)&&(i=!c,a=c,o=c?r:s)});let s={ignored:i,unignored:a};return o&&(s.rule=o),s}},te=(e,t)=>{throw new t(e)},N=(e,t,n)=>O(e)?e?N.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),ne=e=>f.test(e);N.isNotRelative=ne,N.convert=e=>e;var re=class{constructor({ignorecase:e=!0,ignoreCase:t=e,allowRelativePaths:n=!1}={}){_(this,g,!0),this._rules=new M(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&&N.convert(e);return N(i,e,this._strictPathCheck?te:y),this._t(i,t,n,r)}checkIgnore(e){if(!p.test(e))return this.test(e);let t=e.split(m).filter(Boolean);if(t.pop(),t.length){let e=this._t(t.join(m)+m,this._testCache,!0,t);if(e.ignored)return e}return this._rules.test(e,!1,T)}_t(e,t,n,r){if(e in t)return t[e];if(r||=e.split(m).filter(Boolean),r.pop(),!r.length)return t[e]=this._rules.test(e,n,w);let i=this._t(r.join(m)+m,t,n,r);return t[e]=i.ignored?i:this._rules.test(e,n,w)}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)}},ie=e=>new re(e),ae=e=>N(e&&N.convert(e),e,y),oe=()=>{N.convert=e=>/^\\\\\?\\/.test(e)||/["<>|\u0000-\u001F]+/u.test(e)?e:e.replace(/\\/g,`/`);let e=/^[a-z]:\//i;N.isNotRelative=t=>e.test(t)||ne(t)};typeof process<`u`&&process.platform===`win32`&&oe(),t.exports=ie,ie.default=ie,t.exports.isPathValid=ae,_(t.exports,Symbol.for(`setupWindows`),oe)}))(),globalThis.Buffer,o(`secret-scrub`),o(`image-processor`),o(`tool-adapter`);var mt=Object.assign({"/packages/dev-tools/providers.build.json":{include:[`*`],exclude:[`amazon-bedrock`]}})[`/packages/dev-tools/providers.build.json`]??{include:[`*`],exclude:[]};function ht(e){let{include:t,exclude:n}=mt;return n.includes(`*`)||n.includes(e)?!1:!!(t.includes(`*`)||t.includes(e))}var gt=Object.assign({"./built-in/azure-ai-foundry.ts":()=>n(()=>import(`./azure-ai-foundry-Bo0FAJyX.js`),[]),"./built-in/azure-openai.ts":()=>n(()=>import(`./azure-openai-CTCrw8ag.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])),"./built-in/bedrock-camp.ts":()=>n(()=>import(`./bedrock-camp-9-QEmC9Z.js`).then(e=>e.n),__vite__mapDeps([13,5,1,2,3,4,6,7])),"./built-in/local-llm.ts":()=>n(()=>import(`./local-llm-77SlLHlX.js`),__vite__mapDeps([14,1,2,3,4,5,6,15,16,17,7,18,19,8,11]))}),_t=Object.assign({"/packages/webapp/providers/adobe.ts":()=>n(()=>import(`./adobe-D8jV1ibX.js`),__vite__mapDeps([20,2,1,3,4,5,6,9,10,11,12,13,7,21,22,23,24])),"/packages/webapp/providers/github-copilot.ts":()=>n(()=>import(`./github-copilot-yWe1M0K_.js`),__vite__mapDeps([25,2,1,3,4,5,6,9,10,11,12])),"/packages/webapp/providers/github.ts":()=>n(()=>import(`./github-BjJwZAID.js`),__vite__mapDeps([26,2,9,5,10,11,12,27,21,22,23])),"/packages/webapp/providers/openai-codex.ts":()=>n(()=>import(`./openai-codex-BG86bd3g.js`),__vite__mapDeps([28,1,2,3,4,5,6,9,10,11,12])),"/packages/webapp/providers/xai-grok-errors.ts":()=>n(()=>import(`./xai-grok-errors-bnlIBeu-.js`),[]),"/packages/webapp/providers/xai-grok-models.ts":()=>n(()=>import(`./xai-grok-models-CeEBaUMC.js`),[]),"/packages/webapp/providers/xai-grok-sanitize.ts":()=>n(()=>import(`./xai-grok-sanitize-CR2JoOJd.js`),__vite__mapDeps([29,30])),"/packages/webapp/providers/xai-grok.ts":()=>n(()=>import(`./xai-grok-D7ULF1Ef.js`),__vite__mapDeps([31,1,2,3,4,5,6,9,10,11,12,32,30,29]))}),U=new Map,vt=null;function yt(){return vt||(vt=(async()=>{for(let[e,t]of Object.entries(gt)){let e=await t();e.config&&ht(e.config.id)&&(U.set(e.config.id,e.config),e.register?.())}for(let[e,t]of Object.entries(_t)){let e=await t();e.config&&(U.set(e.config.id,e.config),e.register?.())}})(),vt)}function bt(e){return U.get(e)}function xt(){return[...U.keys()]}function St(e){U.set(e.id,e)}var Ct=e({ACCOUNTS_KEY:()=>W,__test__:()=>Nt,addAccount:()=>X,applyProviderDefaults:()=>Bt,clearAllSettings:()=>bn,clearApiKey:()=>hn,clearBaseUrl:()=>vn,clearSelectedProvider:()=>fn,exportProviders:()=>yn,getAccounts:()=>Y,getAllAvailableModels:()=>Wt,getAllExtraOAuthDomains:()=>Jt,getApiKey:()=>pn,getApiKeyForProvider:()=>on,getApiVersionForProvider:()=>cn,getAvailableProviders:()=>Pt,getBaseUrl:()=>gn,getBaseUrlForProvider:()=>Z,getDeploymentForProvider:()=>sn,getExtraOAuthDomains:()=>Gt,getOAuthAccountInfo:()=>Rt,getProviderConfig:()=>K,getProviderModels:()=>q,getRawApiKeyForProvider:()=>an,getSelectedModelId:()=>Q,getSelectedProvider:()=>$,isModelHiddenFromPicker:()=>Ht,logoutOAuthAccount:()=>$t,maskOAuthTokenWithRetry:()=>en,migrateLegacyAuthOnlySelection:()=>jt,persistOAuthMaskViaServiceWorker:()=>tn,providerOffersLlmModels:()=>Ft,removeAccount:()=>Qt,resolveCurrentModel:()=>Tn,resolveModelById:()=>wn,saveOAuthAccount:()=>nn,setApiKey:()=>mn,setBaseUrl:()=>_n,setExtraOAuthDomains:()=>Kt,setExtraOAuthDomainsAsync:()=>qt,setSelectedModelId:()=>ln,setSelectedProvider:()=>dn}),wt=r,Tt=i,W=`slicc_accounts`,G=`selected-model`,Et=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],Dt=new Set([`github`]);function Ot(e){let t;try{t=a()}catch{return!1}return t.includes(e)&&!ht(e)}var kt=!1;function At(){if(!kt){kt=!0;for(let e of Et)try{localStorage.removeItem(e)}catch{}jt()}}function jt(){try{let e=localStorage.getItem(G);if(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t);(Dt.has(n)||Ot(n))&&localStorage.removeItem(G)}}}catch{}try{let e=localStorage.getItem(W);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`&&Ot(e.providerId)));n.length!==t.length&&localStorage.setItem(W,JSON.stringify(n))}catch{}}function Mt(){kt=!1}var Nt={_resetLegacyCleanup:Mt};function Pt(){let e=a().filter(ht),t=xt();return[...new Set([...e,...t])].filter(e=>!bt(e)?.hidden)}function Ft(e){try{if(q(e).length>0)return!0}catch{}try{if(i(e).length>0)return!0}catch{}let t=bt(e);return!!(t?.modelOverrides&&Object.keys(t.modelOverrides).length>0)}function It(e,t){try{if(q(e).some(e=>e.id===t))return!0}catch{}try{if(i(e).some(e=>e.id===t))return!0}catch{}let n=bt(e);return!!(n?.modelOverrides&&Object.hasOwn(n.modelOverrides,t))}function K(e){return bt(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function Lt(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 q(e){try{if(e===`bedrock-camp`){let e=f(Z(`bedrock-camp`));return Tt(`amazon-bedrock`).filter(t=>d(t,e)).map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}))}let t=K(e);if(t.getModelIds){let n;try{n=t.getModelIds()}catch(t){return J.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of a())try{for(let t of Tt(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=Sn(e,n.id,``,i),n.name&&(o.name=n.name));let s=t.modelOverrides?.[n.id];return s&&Lt(o,s),Lt(o,n),o})}if(t.isOAuth){let n=Tt(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&Lt(i,a),i})}return Tt(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return J.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function Rt(e){let t=Y().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}}var zt=Object.assign({})[`/packages/webapp/providers.json`]??[],J=o(`provider-settings`);function Bt(e=zt){if(e.length===0||Y().length>0)return;let t=new Set(Pt());for(let n of e)if(!(!n.providerId||!n.apiKey)){if(!t.has(n.providerId)){J.warn(`Unknown provider "${n.providerId}" in providers.json — skipping`);continue}X(n.providerId,n.apiKey,n.baseUrl)}let n=e.find(e=>e.providerId&&e.apiKey&&t.has(e.providerId));n?.model&&!localStorage.getItem(G)&&localStorage.setItem(G,`${n.providerId}:${n.model}`)}var Vt=[/haiku/i];function Ht(e){return Vt.some(t=>t.test(e))}function Ut(e){return e.filter(e=>!Ht(e.id))}function Wt(){let e=Y();if(e.length===0)return[];let t=new Map;for(let n of e){if(t.has(n.providerId))continue;let e=K(n.providerId);if(e.hidden||Ot(n.providerId))continue;let r=Ut(q(n.providerId));if(r.length===0)continue;let i={providerId:n.providerId,providerName:e.name,models:r};t.set(n.providerId,i)}return[...t.values()]}function Y(){At();let e=localStorage.getItem(W);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 Gt(e){return c(localStorage)[e]??[]}function Kt(e,t){let n=c(localStorage),r=t.map(e=>e.trim()).filter(e=>e.length>0);r.length===0?delete n[e]:n[e]=r,s(localStorage,n)}async function qt(e,t){if(l()){Kt(e,t);return}let n=u();if(!n)throw Error(`setExtraOAuthDomainsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let{storeAfter:r}=await n.call(`oauth-extras-set`,{providerId:e,domains:t});try{s(localStorage,r)}catch(t){J.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{providerId:e,error:t instanceof Error?t.message:String(t)})}}function Jt(){return c(localStorage)}function Yt(e){localStorage.setItem(W,JSON.stringify(e))}async function Xt(e){if(l()){Yt(e);return}let t=u();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(W,r)}catch(e){J.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{error:e instanceof Error?e.message:String(e)})}}function X(e,t,n,r,i){let a=Y().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),Yt(a)}async function Zt(e){let t=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(t){let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.delete`,name:`oauth.${e}.token`},n=>{chrome.runtime.lastError&&J.error(`SW secrets.delete transport failed`,{providerId:e,error:chrome.runtime.lastError.message}),t(n??{})})});t.error&&J.error(`SW secrets.delete returned error`,{providerId:e,error:t.error})}else{let t=await fetch(`/api/secrets/oauth/${e}`,{method:`DELETE`});!t.ok&&t.status!==404&&J.warn(`OAuth replica DELETE non-ok`,{providerId:e,status:t.status})}}catch(n){J.error(`OAuth replica removal failed`,{providerId:e,isExtension:t,error:n instanceof Error?n.message:String(n)})}}async function Qt(e){let t=Y().find(t=>t.providerId===e),n=K(e);t&&n?.isOAuth&&await $t(e),await Zt(e),await Xt(Y().filter(t=>t.providerId!==e));let r=localStorage.getItem(G)??``,i=r.indexOf(`:`);i>0&&r.slice(0,i)===e&&localStorage.removeItem(G)}async function $t(e){let t=Y().find(t=>t.providerId===e);if(!t)return;let r=K(e);if(r?.isOAuth){if(r.onOAuthLogout)try{await r.onOAuthLogout()}catch(t){J.warn(`onOAuthLogout failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})}if(r.getOAuthLogoutUrl){let i=r.getOAuthLogoutUrl(t);if(i){let{openIdpLogoutUrl:t}=await n(async()=>{let{openIdpLogoutUrl:e}=await import(`./oauth-service-CoJ-pYVD.js`);return{openIdpLogoutUrl:e}},__vite__mapDeps([21,2,22,5,23]));await t(i).catch(t=>{J.warn(`IdP logout popup failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})})}}await Xt(Y().map(t=>t.providerId===e?{providerId:t.providerId,apiKey:``,baseUrl:t.baseUrl,userName:t.userName,userAvatar:t.userAvatar,loggedOut:!0}:t)),await Zt(e)}}async function en(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 tn(e,t,n){let r={providerId:e.providerId,accessToken:e.accessToken,domains:e.domains.join(`,`)},{maskedValue:i,lastError:a}=await en(()=>t.sendMaskRequest(r),n);if(!i){J.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 nn(e){let t=Y().find(t=>t.providerId===e.providerId),n=Y().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 Xt(n);let r=K(e.providerId)?.oauthTokenDomains??[],i=Gt(e.providerId),a=new Set,o=[];for(let e of[...r,...i]){let t=e.toLowerCase();a.has(t)||(a.add(t),o.push(e))}if(o.length===0)return;let s=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(s)await tn({providerId:e.providerId,accessToken:e.accessToken,domains:o},{sendMaskRequest:t=>new Promise(n=>{chrome.runtime.sendMessage({type:`secrets.mask-oauth-token`,...t},t=>{chrome.runtime.lastError&&J.error(`SW mask-oauth-token transport failed`,{providerId:e.providerId,error:chrome.runtime.lastError.message}),t?.error&&J.warn(`SW mask-oauth-token returned error`,{providerId:e.providerId,error:t.error}),n(t??{})})}),getAccounts:Y,saveAccounts:Xt});else if(!globalThis.__slicc_connect_mode){let t=await fetch(`/api/secrets/oauth-update`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({providerId:e.providerId,accessToken:e.accessToken,domains:o})});if(t.ok){let n=await t.json(),r=Y(),i=r.find(t=>t.providerId===e.providerId);i&&typeof n.maskedValue==`string`&&(i.maskedValue=n.maskedValue,await Xt(r))}else J.warn(`OAuth replica POST non-ok`,{providerId:e.providerId,status:t.status})}}catch(t){J.error(`OAuth replica sync failed`,{providerId:e.providerId,isExtension:s,error:t instanceof Error?t.message:String(t)})}}var rn=`local`;function an(e){let t=Y().find(t=>t.providerId===e);return t&&(t.accessToken||t.apiKey)||null}function on(e){let t=Y().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(K(e).optionalApiKey?rn:null):null}function Z(e){return Y().find(t=>t.providerId===e)?.baseUrl??null}function sn(e){return Y().find(t=>t.providerId===e)?.deployment??null}function cn(e){return Y().find(t=>t.providerId===e)?.apiVersion??null}function Q(){let e=localStorage.getItem(G)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function ln(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t),r=new Set([...xt(),...Pt()]),i=n.includes(`.`);if(r.has(n)||!i){localStorage.setItem(G,e);return}}let n=$();localStorage.setItem(G,`${n}:${e}`)}function un(){return localStorage.getItem(G)||``}function $(){let e=un(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=Y(),r=Q();if(r){let e=n.find(e=>Ft(e.providerId)&&It(e.providerId,r));if(e)return e.providerId}let i=n.find(e=>Ft(e.providerId));return i?i.providerId:n.length>0?n[0].providerId:`anthropic`}function dn(e){let t=Q();localStorage.setItem(G,`${e}:${t}`)}function fn(){let e=Q();localStorage.setItem(G,e)}function pn(){return on($())}function mn(e){let t=$();X(t,e,Z(t)??void 0)}async function hn(){await Qt($())}function gn(){return Z($())}function _n(e){let t=$(),n=an(t);n&&X(t,n,e||void 0)}function vn(){let e=$(),t=an(e);t&&X(e,t)}function yn(){let e=Y(),t=$(),n=Q();return e.map(e=>{let r={providerId:e.providerId,apiKey:e.apiKey};return e.baseUrl&&(r.baseUrl=e.baseUrl),e.providerId===t&&n&&(r.model=n),r})}async function bn(){let e=Y();await Promise.allSettled(e.map(e=>Qt(e.providerId))),localStorage.removeItem(W),localStorage.removeItem(G);for(let e of Et)localStorage.removeItem(e)}function xn(e){return/^(?:gpt[-.]?|o[0-9]|chatgpt)/i.test(e)?`openai`:`anthropic`}function Sn(e,t,n,r){return{id:t,name:t,provider:e,api:r??`${e}-${xn(t)}`,baseUrl:n??``,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!0}}function Cn(e,t){return t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e}function wn(e){if(!e)return Tn();let t=$(),n=Z(t),r=K(t);try{let i=wt(Cn(t,r),e);if(!i?.id)throw Error(`Model ${e} not found`);let a=i;return r.isOAuth?a=q(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(J.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=q(t).find(t=>t.id===e);return r?n?{...r,baseUrl:n}:r:Sn(t,e,n)}return Tn()}}function Tn(){let e=$(),t=Q(),n=Z(e),r=q(e),i=K(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=Cn(e,i),a=wt(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){J.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?Sn(e,o,n):wt(`anthropic`,`claude-sonnet-4-0`)}}export{en as A,Kt as B,K as C,$ as D,Q as E,Tn as F,St as G,ln as H,wn as I,yt as K,nn as L,tn as M,Ft as N,Ht as O,Qt as P,mn as R,Rt as S,an as T,dn as U,qt as V,bt as W,Pt as _,Bt as a,sn as b,vn as c,Y as d,Wt as f,cn as g,on as h,X as i,jt as j,$t as k,fn as l,pn as m,Nt as n,bn as o,Jt as p,Ct as r,hn as s,W as t,yn as u,gn as v,q as w,Gt as x,Z as y,_n as z};
|