sliccy 1.53.0 → 1.55.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.
Files changed (68) hide show
  1. package/README.md +7 -0
  2. package/dist/node-server/index.js +80 -5
  3. package/dist/node-server/runtime-flags.d.ts +2 -0
  4. package/dist/node-server/runtime-flags.js +14 -0
  5. package/dist/node-server/secrets/domain-match.d.ts +20 -0
  6. package/dist/node-server/secrets/domain-match.js +37 -0
  7. package/dist/node-server/secrets/env-file.d.ts +23 -0
  8. package/dist/node-server/secrets/env-file.js +48 -0
  9. package/dist/node-server/secrets/env-secret-store.d.ts +19 -0
  10. package/dist/node-server/secrets/env-secret-store.js +101 -0
  11. package/dist/node-server/secrets/index.d.ts +5 -0
  12. package/dist/node-server/secrets/index.js +4 -0
  13. package/dist/node-server/secrets/masking.d.ts +21 -0
  14. package/dist/node-server/secrets/masking.js +82 -0
  15. package/dist/node-server/secrets/proxy-manager.d.ts +83 -0
  16. package/dist/node-server/secrets/proxy-manager.js +141 -0
  17. package/dist/node-server/secrets/types.d.ts +29 -0
  18. package/dist/node-server/secrets/types.js +1 -0
  19. package/dist/ui/assets/{anthropic-C4vxs4g1.js → anthropic-Ctm13Y4z.js} +1 -1
  20. package/dist/ui/assets/{azure-openai-responses-CQGUi04X.js → azure-openai-responses-C0Fcf6OA.js} +1 -1
  21. package/dist/ui/assets/{bsh-watchdog-2ucB7RyN.js → bsh-watchdog-Dfc2Sii6.js} +1 -1
  22. package/dist/ui/assets/{cdp-Ch8e9w_F.js → cdp-B4yzwpE0.js} +2 -2
  23. package/dist/ui/assets/{dist-D_HlTg57.js → dist-B3JYrjq2.js} +2 -2
  24. package/dist/ui/assets/{es-BB5XVW8l.js → es-DlWKrNhH.js} +1 -1
  25. package/dist/ui/assets/fs-De1cF4qQ.js +3 -0
  26. package/dist/ui/assets/{google-DlWVI40D.js → google-D_JFv6N-.js} +1 -1
  27. package/dist/ui/assets/{google-gemini-cli-Cij1vUE6.js → google-gemini-cli-BjwSjH_H.js} +1 -1
  28. package/dist/ui/assets/{google-shared-D0cKpK1A.js → google-shared-1MEdugC3.js} +1 -1
  29. package/dist/ui/assets/{google-vertex-qWV5CXzF.js → google-vertex-MzEI1-me.js} +1 -1
  30. package/dist/ui/assets/{index-iFbK_dge.js → index-D0ffClMg.js} +310 -265
  31. package/dist/ui/assets/lick-manager-IFElAmqB.js +1 -0
  32. package/dist/ui/assets/{magick-wasm-JayMw6yo.js → magick-wasm-cJ5msdlA.js} +1 -1
  33. package/dist/ui/assets/{mistral-DtJjgVHB.js → mistral-DcpebUMg.js} +1 -1
  34. package/dist/ui/assets/{openai-codex-responses-_MfKWbO7.js → openai-codex-responses-g4roCtlP.js} +1 -1
  35. package/dist/ui/assets/{openai-completions-_u7NXbnG.js → openai-completions-CTyIshQV.js} +1 -1
  36. package/dist/ui/assets/{openai-responses-3JWIezrg.js → openai-responses-DEGSelVp.js} +1 -1
  37. package/dist/ui/assets/{openai-responses-shared-CXRfi1gl.js → openai-responses-shared-DQA10qMf.js} +1 -1
  38. package/dist/ui/assets/{provider-settings-Q4v0fqFS.js → provider-settings-8zmqtsZN.js} +1 -1
  39. package/dist/ui/assets/{provider-settings-CVTu49GU.js → provider-settings-DvGHKYX6.js} +4 -4
  40. package/dist/ui/assets/providers-C3FxylOY.js +1 -0
  41. package/dist/ui/assets/{pyodide-BB8mNECZ.js → pyodide-CDyS-YOW.js} +2 -2
  42. package/dist/ui/assets/secret-env-Dy73TZRP.js +1 -0
  43. package/dist/ui/assets/secret-masking-CfbASE5x.js +1 -0
  44. package/dist/ui/assets/shell-NUxCukI4.js +1 -0
  45. package/dist/ui/assets/{skills-ChfdTrVl.js → skills-BXGwRjjr.js} +1 -1
  46. package/dist/ui/assets/{skills-Bgv3Tkr2.js → skills-CeTe2rpz.js} +1 -1
  47. package/dist/ui/assets/sprinkle-renderer-Cv5hoBK5.js +1 -0
  48. package/dist/ui/assets/{sql-wasm-qCsadHEF.js → sql-wasm-Cx-UtEsl.js} +1 -1
  49. package/dist/ui/index.html +7 -7
  50. package/dist/ui/packages/webapp/index.html +7 -7
  51. package/package.json +1 -1
  52. package/dist/ui/assets/fs-v5T7SX0A.js +0 -3
  53. package/dist/ui/assets/lick-manager-x3T8vjIL.js +0 -1
  54. package/dist/ui/assets/providers-CtyOAYB2.js +0 -1
  55. package/dist/ui/assets/shell-BtgxOhqi.js +0 -1
  56. package/dist/ui/assets/sprinkle-renderer-DQTwEz2q.js +0 -1
  57. /package/dist/ui/assets/{__vite-browser-external-CmLpjmp4.js → __vite-browser-external-fVHSRdZ9.js} +0 -0
  58. /package/dist/ui/assets/{addon-fit-CnTv21Qe.js → addon-fit-CJBYijzN.js} +0 -0
  59. /package/dist/ui/assets/{dist-CwgfYnJh.js → dist-B_UNq8pG.js} +0 -0
  60. /package/dist/ui/assets/{github-copilot-headers-BNWb_OCE.js → github-copilot-headers-BpGzQFlb.js} +0 -0
  61. /package/dist/ui/assets/{hash-CsofV07h.js → hash-K0cSe8jy.js} +0 -0
  62. /package/dist/ui/assets/{lick-manager-proxy-CogaR9kt.js → lick-manager-proxy-BsVSy3SO.js} +0 -0
  63. /package/dist/ui/assets/{oauth-service-BoyG8vZW.js → oauth-service-t9Y4KdOX.js} +0 -0
  64. /package/dist/ui/assets/{offscreen-client-B8UaOgaJ.js → offscreen-client-BIdj4gf1.js} +0 -0
  65. /package/dist/ui/assets/{pdfjs-DkB4gfOb.js → pdfjs-DqPUb7Z_.js} +0 -0
  66. /package/dist/ui/assets/{sanitize-unicode-Dw-JFaZE.js → sanitize-unicode-BA6bNBBh.js} +0 -0
  67. /package/dist/ui/assets/{src-CHtOpyP_.js → src-CgSXdUB7.js} +0 -0
  68. /package/dist/ui/assets/{xterm-CAZt1iF4.js → xterm-DHgoOdoP.js} +0 -0
@@ -0,0 +1,141 @@
1
+ /**
2
+ * SecretProxyManager — bridges EnvSecretStore with the masking engine
3
+ * for the fetch-proxy handler.
4
+ *
5
+ * On init: loads all secrets, generates session-scoped masked values,
6
+ * and builds lookup tables for fast replacement.
7
+ */
8
+ import { randomUUID } from 'node:crypto';
9
+ import { mask, buildScrubber } from './masking.js';
10
+ import { EnvSecretStore } from './env-secret-store.js';
11
+ import { matchesDomains } from './domain-match.js';
12
+ export class SecretProxyManager {
13
+ store;
14
+ sessionId;
15
+ /** maskedValue → MaskedSecret */
16
+ maskedToSecret = new Map();
17
+ /** Scrubber that replaces real→masked in response content */
18
+ scrubber = (t) => t;
19
+ constructor(store, sessionId) {
20
+ this.store = store ?? new EnvSecretStore();
21
+ this.sessionId = sessionId ?? randomUUID();
22
+ }
23
+ /**
24
+ * Load secrets from the store and generate masked values.
25
+ * Call once on startup and again whenever secrets change.
26
+ */
27
+ async reload() {
28
+ const entries = this.store.list();
29
+ const newMap = new Map();
30
+ const pairs = [];
31
+ for (const entry of entries) {
32
+ const secret = this.store.get(entry.name);
33
+ if (!secret)
34
+ continue;
35
+ const maskedValue = await mask(this.sessionId, secret.name, secret.value);
36
+ const ms = {
37
+ name: secret.name,
38
+ maskedValue,
39
+ realValue: secret.value,
40
+ domains: secret.domains,
41
+ };
42
+ newMap.set(maskedValue, ms);
43
+ pairs.push({ realValue: secret.value, maskedValue });
44
+ }
45
+ this.maskedToSecret = newMap;
46
+ this.scrubber = buildScrubber(pairs);
47
+ }
48
+ /**
49
+ * Check if any secrets are loaded.
50
+ */
51
+ hasSecrets() {
52
+ return this.maskedToSecret.size > 0;
53
+ }
54
+ /**
55
+ * Get all masked entries (name + maskedValue + domains) for env population.
56
+ */
57
+ getMaskedEntries() {
58
+ return Array.from(this.maskedToSecret.values()).map((ms) => ({
59
+ name: ms.name,
60
+ maskedValue: ms.maskedValue,
61
+ domains: ms.domains,
62
+ }));
63
+ }
64
+ /**
65
+ * Unmask a text blob: replace masked values with real values.
66
+ * Validates each secret against the target hostname.
67
+ *
68
+ * @returns { text, forbidden } — forbidden is set if a secret was blocked.
69
+ */
70
+ unmask(text, targetHostname) {
71
+ let result = text;
72
+ for (const [maskedValue, ms] of this.maskedToSecret) {
73
+ if (!result.includes(maskedValue))
74
+ continue;
75
+ if (!matchesDomains(targetHostname, ms.domains)) {
76
+ return {
77
+ text: result,
78
+ forbidden: { secretName: ms.name, hostname: targetHostname },
79
+ };
80
+ }
81
+ // Replace all occurrences
82
+ result = result.split(maskedValue).join(ms.realValue);
83
+ }
84
+ return { text: result };
85
+ }
86
+ /**
87
+ * Unmask body text: replace masked values with real values when domain matches.
88
+ * When domain does NOT match, the masked value is left as-is (not rejected).
89
+ * This is safe because the masked value is meaningless to the remote service —
90
+ * it's typically just conversation context sent to an LLM API.
91
+ */
92
+ unmaskBody(text, targetHostname) {
93
+ let result = text;
94
+ for (const [maskedValue, ms] of this.maskedToSecret) {
95
+ if (!result.includes(maskedValue))
96
+ continue;
97
+ if (!matchesDomains(targetHostname, ms.domains)) {
98
+ // Leave the masked value as-is — do not reject, do not unmask
99
+ continue;
100
+ }
101
+ // Replace all occurrences
102
+ result = result.split(maskedValue).join(ms.realValue);
103
+ }
104
+ return { text: result };
105
+ }
106
+ /**
107
+ * Unmask headers in-place. Returns forbidden info if blocked.
108
+ */
109
+ unmaskHeaders(headers, targetHostname) {
110
+ for (const key of Object.keys(headers)) {
111
+ const val = headers[key];
112
+ const { text, forbidden } = this.unmask(val, targetHostname);
113
+ if (forbidden)
114
+ return { forbidden };
115
+ headers[key] = text;
116
+ }
117
+ return {};
118
+ }
119
+ /**
120
+ * Scrub real secret values from response text → masked values.
121
+ */
122
+ scrubResponse(text) {
123
+ return this.scrubber(text);
124
+ }
125
+ /**
126
+ * Scrub headers: replace real values with masked in header values.
127
+ */
128
+ scrubHeaders(headers) {
129
+ const result = {};
130
+ headers.forEach((v, k) => {
131
+ result[k] = this.scrubber(v);
132
+ });
133
+ return result;
134
+ }
135
+ /**
136
+ * Look up a secret by its masked value.
137
+ */
138
+ getByMaskedValue(maskedValue) {
139
+ return this.maskedToSecret.get(maskedValue);
140
+ }
141
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * A secret with its value and authorized domains.
3
+ */
4
+ export interface Secret {
5
+ name: string;
6
+ value: string;
7
+ domains: string[];
8
+ }
9
+ /**
10
+ * A secret entry without the value — safe to expose to the agent.
11
+ */
12
+ export interface SecretEntry {
13
+ name: string;
14
+ domains: string[];
15
+ }
16
+ /**
17
+ * SecretStore interface for reading/writing secrets.
18
+ * Implemented by EnvSecretStore (node-server) and Keychain (swift-server).
19
+ */
20
+ export interface SecretStore {
21
+ /** Read a secret by name. Returns null if not found or has no _DOMAINS entry. */
22
+ get(name: string): Secret | null;
23
+ /** Write a secret with its value and authorized domains. */
24
+ set(name: string, value: string, domains: string[]): void;
25
+ /** Remove a secret and its _DOMAINS entry. */
26
+ delete(name: string): void;
27
+ /** List all secrets with their domains (never values). */
28
+ list(): SecretEntry[];
29
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,4 +1,4 @@
1
- import{t as e}from"./env-api-keys-DlVZ9FrG.js";import{a as t,i as n,n as r,s as i,t as a}from"./simple-options-FPdEz6rB.js";import{t as o}from"./json-parse-JW3qhabb.js";import{t as s}from"./sanitize-unicode-Dw-JFaZE.js";import{n as c,t as l}from"./github-copilot-headers-BNWb_OCE.js";function u(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n}function d(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)}var f=function(){let{crypto:e}=globalThis;if(e?.randomUUID)return f=e.randomUUID.bind(e),e.randomUUID();let t=new Uint8Array(1),n=e?()=>e.getRandomValues(t)[0]:()=>Math.random()*255&255;return`10000000-1000-4000-8000-100000000000`.replace(/[018]/g,e=>(e^n()&15>>e/4).toString(16))};function p(e){return typeof e==`object`&&!!e&&(`name`in e&&e.name===`AbortError`||`message`in e&&String(e.message).includes(`FetchRequestCanceledException`))}var ee=e=>{if(e instanceof Error)return e;if(typeof e==`object`&&e){try{if(Object.prototype.toString.call(e)===`[object Error]`){let t=Error(e.message,e.cause?{cause:e.cause}:{});return e.stack&&(t.stack=e.stack),e.cause&&!t.cause&&(t.cause=e.cause),e.name&&(t.name=e.name),t}}catch{}try{return Error(JSON.stringify(e))}catch{}}return Error(e)},m=class extends Error{},h=class e extends m{constructor(t,n,r,i){super(`${e.makeMessage(t,n,r)}`),this.status=t,this.headers=i,this.requestID=i?.get(`request-id`),this.error=n}static makeMessage(e,t,n){let r=t?.message?typeof t.message==`string`?t.message:JSON.stringify(t.message):t?JSON.stringify(t):n;return e&&r?`${e} ${r}`:e?`${e} status code (no body)`:r||`(no status code or body)`}static generate(t,n,r,i){if(!t||!i)return new te({message:r,cause:ee(n)});let a=n;return t===400?new re(t,a,r,i):t===401?new ie(t,a,r,i):t===403?new ae(t,a,r,i):t===404?new oe(t,a,r,i):t===409?new se(t,a,r,i):t===422?new ce(t,a,r,i):t===429?new le(t,a,r,i):t>=500?new ue(t,a,r,i):new e(t,a,r,i)}},g=class extends h{constructor({message:e}={}){super(void 0,void 0,e||`Request was aborted.`,void 0)}},te=class extends h{constructor({message:e,cause:t}){super(void 0,void 0,e||`Connection error.`,void 0),t&&(this.cause=t)}},ne=class extends te{constructor({message:e}={}){super({message:e??`Request timed out.`})}},re=class extends h{},ie=class extends h{},ae=class extends h{},oe=class extends h{},se=class extends h{},ce=class extends h{},le=class extends h{},ue=class extends h{},de=/^[a-z][a-z0-9+.-]*:/i,fe=e=>de.test(e),pe=e=>(pe=Array.isArray,pe(e)),me=pe;function he(e){return typeof e==`object`?e??{}:{}}function ge(e){if(!e)return!0;for(let t in e)return!1;return!0}function _e(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var ve=(e,t)=>{if(typeof t!=`number`||!Number.isInteger(t))throw new m(`${e} must be an integer`);if(t<0)throw new m(`${e} must be a positive integer`);return t},ye=e=>{try{return JSON.parse(e)}catch{return}},be=e=>new Promise(t=>setTimeout(t,e)),_=`0.73.0`,xe=()=>typeof window<`u`&&window.document!==void 0&&typeof navigator<`u`;function Se(){return typeof Deno<`u`&&Deno.build!=null?`deno`:typeof EdgeRuntime<`u`?`edge`:Object.prototype.toString.call(globalThis.process===void 0?0:globalThis.process)===`[object process]`?`node`:`unknown`}var Ce=()=>{let e=Se();if(e===`deno`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":_,"X-Stainless-OS":Ee(Deno.build.os),"X-Stainless-Arch":Te(Deno.build.arch),"X-Stainless-Runtime":`deno`,"X-Stainless-Runtime-Version":typeof Deno.version==`string`?Deno.version:Deno.version?.deno??`unknown`};if(typeof EdgeRuntime<`u`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":_,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`other:${EdgeRuntime}`,"X-Stainless-Runtime":`edge`,"X-Stainless-Runtime-Version":globalThis.process.version};if(e===`node`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":_,"X-Stainless-OS":Ee(globalThis.process.platform??`unknown`),"X-Stainless-Arch":Te(globalThis.process.arch??`unknown`),"X-Stainless-Runtime":`node`,"X-Stainless-Runtime-Version":globalThis.process.version??`unknown`};let t=we();return t?{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":_,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`unknown`,"X-Stainless-Runtime":`browser:${t.browser}`,"X-Stainless-Runtime-Version":t.version}:{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":_,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`unknown`,"X-Stainless-Runtime":`unknown`,"X-Stainless-Runtime-Version":`unknown`}};function we(){if(typeof navigator>`u`||!navigator)return null;for(let{key:e,pattern:t}of[{key:`edge`,pattern:/Edge(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`ie`,pattern:/MSIE(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`ie`,pattern:/Trident(?:.*rv\:(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`chrome`,pattern:/Chrome(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`firefox`,pattern:/Firefox(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`safari`,pattern:/(?:Version\W+(\d+)\.(\d+)(?:\.(\d+))?)?(?:\W+Mobile\S*)?\W+Safari/}]){let n=t.exec(navigator.userAgent);if(n)return{browser:e,version:`${n[1]||0}.${n[2]||0}.${n[3]||0}`}}return null}var Te=e=>e===`x32`?`x32`:e===`x86_64`||e===`x64`?`x64`:e===`arm`?`arm`:e===`aarch64`||e===`arm64`?`arm64`:e?`other:${e}`:`unknown`,Ee=e=>(e=e.toLowerCase(),e.includes(`ios`)?`iOS`:e===`android`?`Android`:e===`darwin`?`MacOS`:e===`win32`?`Windows`:e===`freebsd`?`FreeBSD`:e===`openbsd`?`OpenBSD`:e===`linux`?`Linux`:e?`Other:${e}`:`Unknown`),De,Oe=()=>De??=Ce();function ke(){if(typeof fetch<`u`)return fetch;throw Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new Anthropic({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}function Ae(...e){let t=globalThis.ReadableStream;if(t===void 0)throw Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new t(...e)}function je(e){let t=Symbol.asyncIterator in e?e[Symbol.asyncIterator]():e[Symbol.iterator]();return Ae({start(){},async pull(e){let{done:n,value:r}=await t.next();n?e.close():e.enqueue(r)},async cancel(){await t.return?.()}})}function Me(e){if(e[Symbol.asyncIterator])return e;let t=e.getReader();return{async next(){try{let e=await t.read();return e?.done&&t.releaseLock(),e}catch(e){throw t.releaseLock(),e}},async return(){let e=t.cancel();return t.releaseLock(),await e,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function Ne(e){if(typeof e!=`object`||!e)return;if(e[Symbol.asyncIterator]){await e[Symbol.asyncIterator]().return?.();return}let t=e.getReader(),n=t.cancel();t.releaseLock(),await n}var Pe=({headers:e,body:t})=>({bodyHeaders:{"content-type":`application/json`},body:JSON.stringify(t)});function Fe(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}var Ie;function Le(e){let t;return(Ie??=(t=new globalThis.TextEncoder,t.encode.bind(t)))(e)}var Re;function ze(e){let t;return(Re??=(t=new globalThis.TextDecoder,t.decode.bind(t)))(e)}var v,y,b=class{constructor(){v.set(this,void 0),y.set(this,void 0),u(this,v,new Uint8Array,`f`),u(this,y,null,`f`)}decode(e){if(e==null)return[];let t=e instanceof ArrayBuffer?new Uint8Array(e):typeof e==`string`?Le(e):e;u(this,v,Fe([d(this,v,`f`),t]),`f`);let n=[],r;for(;(r=Be(d(this,v,`f`),d(this,y,`f`)))!=null;){if(r.carriage&&d(this,y,`f`)==null){u(this,y,r.index,`f`);continue}if(d(this,y,`f`)!=null&&(r.index!==d(this,y,`f`)+1||r.carriage)){n.push(ze(d(this,v,`f`).subarray(0,d(this,y,`f`)-1))),u(this,v,d(this,v,`f`).subarray(d(this,y,`f`)),`f`),u(this,y,null,`f`);continue}let e=d(this,y,`f`)===null?r.preceding:r.preceding-1,t=ze(d(this,v,`f`).subarray(0,e));n.push(t),u(this,v,d(this,v,`f`).subarray(r.index),`f`),u(this,y,null,`f`)}return n}flush(){return d(this,v,`f`).length?this.decode(`
1
+ import{t as e}from"./env-api-keys-DlVZ9FrG.js";import{a as t,i as n,n as r,s as i,t as a}from"./simple-options-FPdEz6rB.js";import{t as o}from"./json-parse-JW3qhabb.js";import{t as s}from"./sanitize-unicode-BA6bNBBh.js";import{n as c,t as l}from"./github-copilot-headers-BpGzQFlb.js";function u(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n}function d(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)}var f=function(){let{crypto:e}=globalThis;if(e?.randomUUID)return f=e.randomUUID.bind(e),e.randomUUID();let t=new Uint8Array(1),n=e?()=>e.getRandomValues(t)[0]:()=>Math.random()*255&255;return`10000000-1000-4000-8000-100000000000`.replace(/[018]/g,e=>(e^n()&15>>e/4).toString(16))};function p(e){return typeof e==`object`&&!!e&&(`name`in e&&e.name===`AbortError`||`message`in e&&String(e.message).includes(`FetchRequestCanceledException`))}var ee=e=>{if(e instanceof Error)return e;if(typeof e==`object`&&e){try{if(Object.prototype.toString.call(e)===`[object Error]`){let t=Error(e.message,e.cause?{cause:e.cause}:{});return e.stack&&(t.stack=e.stack),e.cause&&!t.cause&&(t.cause=e.cause),e.name&&(t.name=e.name),t}}catch{}try{return Error(JSON.stringify(e))}catch{}}return Error(e)},m=class extends Error{},h=class e extends m{constructor(t,n,r,i){super(`${e.makeMessage(t,n,r)}`),this.status=t,this.headers=i,this.requestID=i?.get(`request-id`),this.error=n}static makeMessage(e,t,n){let r=t?.message?typeof t.message==`string`?t.message:JSON.stringify(t.message):t?JSON.stringify(t):n;return e&&r?`${e} ${r}`:e?`${e} status code (no body)`:r||`(no status code or body)`}static generate(t,n,r,i){if(!t||!i)return new te({message:r,cause:ee(n)});let a=n;return t===400?new re(t,a,r,i):t===401?new ie(t,a,r,i):t===403?new ae(t,a,r,i):t===404?new oe(t,a,r,i):t===409?new se(t,a,r,i):t===422?new ce(t,a,r,i):t===429?new le(t,a,r,i):t>=500?new ue(t,a,r,i):new e(t,a,r,i)}},g=class extends h{constructor({message:e}={}){super(void 0,void 0,e||`Request was aborted.`,void 0)}},te=class extends h{constructor({message:e,cause:t}){super(void 0,void 0,e||`Connection error.`,void 0),t&&(this.cause=t)}},ne=class extends te{constructor({message:e}={}){super({message:e??`Request timed out.`})}},re=class extends h{},ie=class extends h{},ae=class extends h{},oe=class extends h{},se=class extends h{},ce=class extends h{},le=class extends h{},ue=class extends h{},de=/^[a-z][a-z0-9+.-]*:/i,fe=e=>de.test(e),pe=e=>(pe=Array.isArray,pe(e)),me=pe;function he(e){return typeof e==`object`?e??{}:{}}function ge(e){if(!e)return!0;for(let t in e)return!1;return!0}function _e(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var ve=(e,t)=>{if(typeof t!=`number`||!Number.isInteger(t))throw new m(`${e} must be an integer`);if(t<0)throw new m(`${e} must be a positive integer`);return t},ye=e=>{try{return JSON.parse(e)}catch{return}},be=e=>new Promise(t=>setTimeout(t,e)),_=`0.73.0`,xe=()=>typeof window<`u`&&window.document!==void 0&&typeof navigator<`u`;function Se(){return typeof Deno<`u`&&Deno.build!=null?`deno`:typeof EdgeRuntime<`u`?`edge`:Object.prototype.toString.call(globalThis.process===void 0?0:globalThis.process)===`[object process]`?`node`:`unknown`}var Ce=()=>{let e=Se();if(e===`deno`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":_,"X-Stainless-OS":Ee(Deno.build.os),"X-Stainless-Arch":Te(Deno.build.arch),"X-Stainless-Runtime":`deno`,"X-Stainless-Runtime-Version":typeof Deno.version==`string`?Deno.version:Deno.version?.deno??`unknown`};if(typeof EdgeRuntime<`u`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":_,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`other:${EdgeRuntime}`,"X-Stainless-Runtime":`edge`,"X-Stainless-Runtime-Version":globalThis.process.version};if(e===`node`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":_,"X-Stainless-OS":Ee(globalThis.process.platform??`unknown`),"X-Stainless-Arch":Te(globalThis.process.arch??`unknown`),"X-Stainless-Runtime":`node`,"X-Stainless-Runtime-Version":globalThis.process.version??`unknown`};let t=we();return t?{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":_,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`unknown`,"X-Stainless-Runtime":`browser:${t.browser}`,"X-Stainless-Runtime-Version":t.version}:{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":_,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`unknown`,"X-Stainless-Runtime":`unknown`,"X-Stainless-Runtime-Version":`unknown`}};function we(){if(typeof navigator>`u`||!navigator)return null;for(let{key:e,pattern:t}of[{key:`edge`,pattern:/Edge(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`ie`,pattern:/MSIE(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`ie`,pattern:/Trident(?:.*rv\:(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`chrome`,pattern:/Chrome(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`firefox`,pattern:/Firefox(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`safari`,pattern:/(?:Version\W+(\d+)\.(\d+)(?:\.(\d+))?)?(?:\W+Mobile\S*)?\W+Safari/}]){let n=t.exec(navigator.userAgent);if(n)return{browser:e,version:`${n[1]||0}.${n[2]||0}.${n[3]||0}`}}return null}var Te=e=>e===`x32`?`x32`:e===`x86_64`||e===`x64`?`x64`:e===`arm`?`arm`:e===`aarch64`||e===`arm64`?`arm64`:e?`other:${e}`:`unknown`,Ee=e=>(e=e.toLowerCase(),e.includes(`ios`)?`iOS`:e===`android`?`Android`:e===`darwin`?`MacOS`:e===`win32`?`Windows`:e===`freebsd`?`FreeBSD`:e===`openbsd`?`OpenBSD`:e===`linux`?`Linux`:e?`Other:${e}`:`Unknown`),De,Oe=()=>De??=Ce();function ke(){if(typeof fetch<`u`)return fetch;throw Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new Anthropic({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}function Ae(...e){let t=globalThis.ReadableStream;if(t===void 0)throw Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new t(...e)}function je(e){let t=Symbol.asyncIterator in e?e[Symbol.asyncIterator]():e[Symbol.iterator]();return Ae({start(){},async pull(e){let{done:n,value:r}=await t.next();n?e.close():e.enqueue(r)},async cancel(){await t.return?.()}})}function Me(e){if(e[Symbol.asyncIterator])return e;let t=e.getReader();return{async next(){try{let e=await t.read();return e?.done&&t.releaseLock(),e}catch(e){throw t.releaseLock(),e}},async return(){let e=t.cancel();return t.releaseLock(),await e,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function Ne(e){if(typeof e!=`object`||!e)return;if(e[Symbol.asyncIterator]){await e[Symbol.asyncIterator]().return?.();return}let t=e.getReader(),n=t.cancel();t.releaseLock(),await n}var Pe=({headers:e,body:t})=>({bodyHeaders:{"content-type":`application/json`},body:JSON.stringify(t)});function Fe(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}var Ie;function Le(e){let t;return(Ie??=(t=new globalThis.TextEncoder,t.encode.bind(t)))(e)}var Re;function ze(e){let t;return(Re??=(t=new globalThis.TextDecoder,t.decode.bind(t)))(e)}var v,y,b=class{constructor(){v.set(this,void 0),y.set(this,void 0),u(this,v,new Uint8Array,`f`),u(this,y,null,`f`)}decode(e){if(e==null)return[];let t=e instanceof ArrayBuffer?new Uint8Array(e):typeof e==`string`?Le(e):e;u(this,v,Fe([d(this,v,`f`),t]),`f`);let n=[],r;for(;(r=Be(d(this,v,`f`),d(this,y,`f`)))!=null;){if(r.carriage&&d(this,y,`f`)==null){u(this,y,r.index,`f`);continue}if(d(this,y,`f`)!=null&&(r.index!==d(this,y,`f`)+1||r.carriage)){n.push(ze(d(this,v,`f`).subarray(0,d(this,y,`f`)-1))),u(this,v,d(this,v,`f`).subarray(d(this,y,`f`)),`f`),u(this,y,null,`f`);continue}let e=d(this,y,`f`)===null?r.preceding:r.preceding-1,t=ze(d(this,v,`f`).subarray(0,e));n.push(t),u(this,v,d(this,v,`f`).subarray(r.index),`f`),u(this,y,null,`f`)}return n}flush(){return d(this,v,`f`).length?this.decode(`
2
2
  `):[]}};v=new WeakMap,y=new WeakMap,b.NEWLINE_CHARS=new Set([`
3
3
  `,`\r`]),b.NEWLINE_REGEXP=/\r\n|[\n\r]/g;function Be(e,t){for(let n=t??0;n<e.length;n++){if(e[n]===10)return{preceding:n,index:n+1,carriage:!1};if(e[n]===13)return{preceding:n,index:n+1,carriage:!0}}return null}function Ve(e){for(let t=0;t<e.length-1;t++){if(e[t]===10&&e[t+1]===10||e[t]===13&&e[t+1]===13)return t+2;if(e[t]===13&&e[t+1]===10&&t+3<e.length&&e[t+2]===13&&e[t+3]===10)return t+4}return-1}var He={off:0,error:200,warn:300,info:400,debug:500},Ue=(e,t,n)=>{if(e){if(_e(He,e))return e;S(n).warn(`${t} was set to ${JSON.stringify(e)}, expected one of ${JSON.stringify(Object.keys(He))}`)}};function x(){}function We(e,t,n){return!t||He[e]>He[n]?x:t[e].bind(t)}var Ge={error:x,warn:x,info:x,debug:x},Ke=new WeakMap;function S(e){let t=e.logger,n=e.logLevel??`off`;if(!t)return Ge;let r=Ke.get(t);if(r&&r[0]===n)return r[1];let i={error:We(`error`,t,n),warn:We(`warn`,t,n),info:We(`info`,t,n),debug:We(`debug`,t,n)};return Ke.set(t,[n,i]),i}var C=e=>(e.options&&(e.options={...e.options},delete e.options.headers),e.headers&&=Object.fromEntries((e.headers instanceof Headers?[...e.headers]:Object.entries(e.headers)).map(([e,t])=>[e,e.toLowerCase()===`x-api-key`||e.toLowerCase()===`authorization`||e.toLowerCase()===`cookie`||e.toLowerCase()===`set-cookie`?`***`:t])),`retryOfRequestLogID`in e&&(e.retryOfRequestLogID&&(e.retryOf=e.retryOfRequestLogID),delete e.retryOfRequestLogID),e),qe,Je=class e{constructor(e,t,n){this.iterator=e,qe.set(this,void 0),this.controller=t,u(this,qe,n,`f`)}static fromSSEResponse(t,n,r){let i=!1,a=r?S(r):console;async function*o(){if(i)throw new m("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");i=!0;let e=!1;try{for await(let e of Ye(t,n)){if(e.event===`completion`)try{yield JSON.parse(e.data)}catch(t){throw a.error(`Could not parse message into JSON:`,e.data),a.error(`From chunk:`,e.raw),t}if(e.event===`message_start`||e.event===`message_delta`||e.event===`message_stop`||e.event===`content_block_start`||e.event===`content_block_delta`||e.event===`content_block_stop`)try{yield JSON.parse(e.data)}catch(t){throw a.error(`Could not parse message into JSON:`,e.data),a.error(`From chunk:`,e.raw),t}if(e.event!==`ping`&&e.event===`error`)throw new h(void 0,ye(e.data)??e.data,void 0,t.headers)}e=!0}catch(e){if(p(e))return;throw e}finally{e||n.abort()}}return new e(o,n,r)}static fromReadableStream(t,n,r){let i=!1;async function*a(){let e=new b,n=Me(t);for await(let t of n)for(let n of e.decode(t))yield n;for(let t of e.flush())yield t}async function*o(){if(i)throw new m("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");i=!0;let e=!1;try{for await(let t of a())e||t&&(yield JSON.parse(t));e=!0}catch(e){if(p(e))return;throw e}finally{e||n.abort()}}return new e(o,n,r)}[(qe=new WeakMap,Symbol.asyncIterator)](){return this.iterator()}tee(){let t=[],n=[],r=this.iterator(),i=e=>({next:()=>{if(e.length===0){let e=r.next();t.push(e),n.push(e)}return e.shift()}});return[new e(()=>i(t),this.controller,d(this,qe,`f`)),new e(()=>i(n),this.controller,d(this,qe,`f`))]}toReadableStream(){let e=this,t;return Ae({async start(){t=e[Symbol.asyncIterator]()},async pull(e){try{let{value:n,done:r}=await t.next();if(r)return e.close();let i=Le(JSON.stringify(n)+`
4
4
  `);e.enqueue(i)}catch(t){e.error(t)}},async cancel(){await t.return?.()}})}};async function*Ye(e,t){if(!e.body)throw t.abort(),globalThis.navigator!==void 0&&globalThis.navigator.product===`ReactNative`?new m(`The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api`):new m(`Attempted to iterate over a response with no body`);let n=new Ze,r=new b,i=Me(e.body);for await(let e of Xe(i))for(let t of r.decode(e)){let e=n.decode(t);e&&(yield e)}for(let e of r.flush()){let t=n.decode(e);t&&(yield t)}}async function*Xe(e){let t=new Uint8Array;for await(let n of e){if(n==null)continue;let e=n instanceof ArrayBuffer?new Uint8Array(n):typeof n==`string`?Le(n):n,r=new Uint8Array(t.length+e.length);r.set(t),r.set(e,t.length),t=r;let i;for(;(i=Ve(t))!==-1;)yield t.slice(0,i),t=t.slice(i)}t.length>0&&(yield t)}var Ze=class{constructor(){this.event=null,this.data=[],this.chunks=[]}decode(e){if(e.endsWith(`\r`)&&(e=e.substring(0,e.length-1)),!e){if(!this.event&&!this.data.length)return null;let e={event:this.event,data:this.data.join(`
@@ -1 +1 @@
1
- import{t as e}from"./env-api-keys-DlVZ9FrG.js";import{a as t,d as n,n as r,r as i}from"./simple-options-FPdEz6rB.js";import{t as a}from"./openai-Cn7eGqwa.js";import{n as o,r as s,t as c}from"./openai-responses-shared-CXRfi1gl.js";var l=`v1`,u=new Set([`openai`,`openai-codex`,`opencode`,`azure-openai-responses`]);function d(e){let t=new Map;if(!e)return t;for(let n of e.split(`,`)){let e=n.trim();if(!e)continue;let[r,i]=e.split(`=`,2);!r||!i||t.set(r.trim(),i.trim())}return t}function f(e,t){return t?.azureDeploymentName?t.azureDeploymentName:d({}.AZURE_OPENAI_DEPLOYMENT_NAME_MAP).get(e.id)||e.id}var p=(n,r,i)=>{let a=new t;return(async()=>{let t=f(n,i),o={role:`assistant`,content:[],api:`azure-openai-responses`,provider:n.provider,model:n.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`stop`,timestamp:Date.now()};try{let c=v(n,i?.apiKey||e(n.provider)||``,i),l=y(n,r,i,t),u=await i?.onPayload?.(l,n);u!==void 0&&(l=u);let d=await c.responses.create(l,i?.signal?{signal:i.signal}:void 0);if(a.push({type:`start`,partial:o}),await s(d,o,a,n),i?.signal?.aborted)throw Error(`Request was aborted`);if(o.stopReason===`aborted`||o.stopReason===`error`)throw Error(`An unknown error occurred`);a.push({type:`done`,reason:o.stopReason,message:o}),a.end()}catch(e){for(let e of o.content)delete e.index;o.stopReason=i?.signal?.aborted?`aborted`:`error`,o.errorMessage=e instanceof Error?e.message:JSON.stringify(e),a.push({type:`error`,reason:o.stopReason,error:o}),a.end()}})(),a},m=(t,a,o)=>{let s=o?.apiKey||e(t.provider);if(!s)throw Error(`No API key for provider: ${t.provider}`);let c=r(t,o,s),l=n(t)?o?.reasoning:i(o?.reasoning);return p(t,a,{...c,reasoningEffort:l})};function h(e){return e.replace(/\/+$/,``)}function g(e){return`https://${e}.openai.azure.com/openai/v1`}function _(e,t){let n=t?.azureApiVersion||{}.AZURE_OPENAI_API_VERSION||l,r=t?.azureBaseUrl?.trim()||{}.AZURE_OPENAI_BASE_URL?.trim()||void 0,i=t?.azureResourceName||{}.AZURE_OPENAI_RESOURCE_NAME,a=r;if(!a&&i&&(a=g(i)),!a&&e.baseUrl&&(a=e.baseUrl),!a)throw Error(`Azure OpenAI base URL is required. Set AZURE_OPENAI_BASE_URL or AZURE_OPENAI_RESOURCE_NAME, or pass azureBaseUrl, azureResourceName, or model.baseUrl.`);return{baseUrl:h(a),apiVersion:n}}function v(e,t,n){if(!t){if(!{}.AZURE_OPENAI_API_KEY)throw Error(`Azure OpenAI API key is required. Set AZURE_OPENAI_API_KEY environment variable or pass it as an argument.`);t={}.AZURE_OPENAI_API_KEY}let r={...e.headers};n?.headers&&Object.assign(r,n.headers);let{baseUrl:i,apiVersion:o}=_(e,n);return new a({apiKey:t,apiVersion:o,dangerouslyAllowBrowser:!0,defaultHeaders:r,baseURL:i})}function y(e,t,n,r){let i={model:r,input:c(e,t,u),stream:!0,prompt_cache_key:n?.sessionId};return n?.maxTokens&&(i.max_output_tokens=n?.maxTokens),n?.temperature!==void 0&&(i.temperature=n?.temperature),t.tools&&(i.tools=o(t.tools)),e.reasoning&&(n?.reasoningEffort||n?.reasoningSummary?(i.reasoning={effort:n?.reasoningEffort||`medium`,summary:n?.reasoningSummary||`auto`},i.include=[`reasoning.encrypted_content`]):i.reasoning={effort:`none`}),i}export{p as streamAzureOpenAIResponses,m as streamSimpleAzureOpenAIResponses};
1
+ import{t as e}from"./env-api-keys-DlVZ9FrG.js";import{a as t,d as n,n as r,r as i}from"./simple-options-FPdEz6rB.js";import{t as a}from"./openai-Cn7eGqwa.js";import{n as o,r as s,t as c}from"./openai-responses-shared-DQA10qMf.js";var l=`v1`,u=new Set([`openai`,`openai-codex`,`opencode`,`azure-openai-responses`]);function d(e){let t=new Map;if(!e)return t;for(let n of e.split(`,`)){let e=n.trim();if(!e)continue;let[r,i]=e.split(`=`,2);!r||!i||t.set(r.trim(),i.trim())}return t}function f(e,t){return t?.azureDeploymentName?t.azureDeploymentName:d({}.AZURE_OPENAI_DEPLOYMENT_NAME_MAP).get(e.id)||e.id}var p=(n,r,i)=>{let a=new t;return(async()=>{let t=f(n,i),o={role:`assistant`,content:[],api:`azure-openai-responses`,provider:n.provider,model:n.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`stop`,timestamp:Date.now()};try{let c=v(n,i?.apiKey||e(n.provider)||``,i),l=y(n,r,i,t),u=await i?.onPayload?.(l,n);u!==void 0&&(l=u);let d=await c.responses.create(l,i?.signal?{signal:i.signal}:void 0);if(a.push({type:`start`,partial:o}),await s(d,o,a,n),i?.signal?.aborted)throw Error(`Request was aborted`);if(o.stopReason===`aborted`||o.stopReason===`error`)throw Error(`An unknown error occurred`);a.push({type:`done`,reason:o.stopReason,message:o}),a.end()}catch(e){for(let e of o.content)delete e.index;o.stopReason=i?.signal?.aborted?`aborted`:`error`,o.errorMessage=e instanceof Error?e.message:JSON.stringify(e),a.push({type:`error`,reason:o.stopReason,error:o}),a.end()}})(),a},m=(t,a,o)=>{let s=o?.apiKey||e(t.provider);if(!s)throw Error(`No API key for provider: ${t.provider}`);let c=r(t,o,s),l=n(t)?o?.reasoning:i(o?.reasoning);return p(t,a,{...c,reasoningEffort:l})};function h(e){return e.replace(/\/+$/,``)}function g(e){return`https://${e}.openai.azure.com/openai/v1`}function _(e,t){let n=t?.azureApiVersion||{}.AZURE_OPENAI_API_VERSION||l,r=t?.azureBaseUrl?.trim()||{}.AZURE_OPENAI_BASE_URL?.trim()||void 0,i=t?.azureResourceName||{}.AZURE_OPENAI_RESOURCE_NAME,a=r;if(!a&&i&&(a=g(i)),!a&&e.baseUrl&&(a=e.baseUrl),!a)throw Error(`Azure OpenAI base URL is required. Set AZURE_OPENAI_BASE_URL or AZURE_OPENAI_RESOURCE_NAME, or pass azureBaseUrl, azureResourceName, or model.baseUrl.`);return{baseUrl:h(a),apiVersion:n}}function v(e,t,n){if(!t){if(!{}.AZURE_OPENAI_API_KEY)throw Error(`Azure OpenAI API key is required. Set AZURE_OPENAI_API_KEY environment variable or pass it as an argument.`);t={}.AZURE_OPENAI_API_KEY}let r={...e.headers};n?.headers&&Object.assign(r,n.headers);let{baseUrl:i,apiVersion:o}=_(e,n);return new a({apiKey:t,apiVersion:o,dangerouslyAllowBrowser:!0,defaultHeaders:r,baseURL:i})}function y(e,t,n,r){let i={model:r,input:c(e,t,u),stream:!0,prompt_cache_key:n?.sessionId};return n?.maxTokens&&(i.max_output_tokens=n?.maxTokens),n?.temperature!==void 0&&(i.temperature=n?.temperature),t.tools&&(i.tools=o(t.tools)),e.reasoning&&(n?.reasoningEffort||n?.reasoningSummary?(i.reasoning={effort:n?.reasoningEffort||`medium`,summary:n?.reasoningSummary||`auto`},i.include=[`reasoning.encrypted_content`]):i.reasoning={effort:`none`}),i}export{p as streamAzureOpenAIResponses,m as streamSimpleAzureOpenAIResponses};
@@ -1,5 +1,5 @@
1
1
  import{t as e}from"./logger-B-No_qN_.js";var t=[`/workspace`,`/shared`];async function n(e){let n=[],i=new Set;for(let a of t)await e.exists(a)&&await r(e,a,n,i);return n}async function r(e,t,n,r){for await(let o of e.walk(t)){if(!o.endsWith(`.bsh`)||r.has(o))continue;r.add(o);let t=i(o);if(!t)continue;let s=await e.readFile(o,{encoding:`utf-8`}),c=a(typeof s==`string`?s:new TextDecoder().decode(s));n.push({path:o,hostnamePattern:t,matchPatterns:c})}}function i(e){let t=e.split(`/`).pop()??``;if(!t.endsWith(`.bsh`))return null;let n=t.slice(0,-4);return n?n.startsWith(`-.`)?`*`+n.slice(1):n:null}function a(e){let t=e.split(`
2
- `).slice(0,10),n=[];for(let e of t){let t=e.match(/^\s*\/\/\s*@match\s+(.+)$/);t&&n.push(t[1].trim())}return n}function o(e,t){if(t.startsWith(`*.`)){let n=t.slice(1);return e===t.slice(2)||e.endsWith(n)&&e.length>n.length}return e===t}function s(e,t){try{let n=new URL(e),r=t.match(/^(\*|https?):\/\/([^/]+)(\/.*)?$/);if(!r)return!1;let[,i,a,s]=r;return i!==`*`&&n.protocol.slice(0,-1)!==i||!o(n.hostname,a)?!1:s?c(n.pathname+n.search,s):!0}catch{return!1}}function c(e,t){let n=`^`+t.replace(/[.+^${}()|[\]\\]/g,`\\$&`).replace(/\*/g,`.*`)+`$`;return new RegExp(n).test(e)}function l(e,t){try{let n=new URL(t);return e.filter(e=>o(n.hostname,e.hostnamePattern)?e.matchPatterns.length>0?e.matchPatterns.some(e=>s(t,e)):!0:!1)}catch{return[]}}var u=e(`bsh-watchdog`),d=class{transport;browserAPI;fs;discoveryIntervalMs;entries=[];discoveryTimer=null;running=!1;executing=new Set;constructor(e){if(!e.transport&&!e.browserAPI)throw Error(`BshWatchdog requires either transport or browserAPI`);this.browserAPI=e.browserAPI,this.transport=e.transport??e.browserAPI.getTransport(),this.fs=e.fs,this.discoveryIntervalMs=e.discoveryIntervalMs??1e4}async start(){this.running||(this.running=!0,await this.discover(),this.discoveryTimer=setInterval(()=>{this.discover()},this.discoveryIntervalMs),this.transport.on(`Page.frameNavigated`,this.onFrameNavigated),this.browserAPI&&this.browserAPI.setSessionChangeCallback((e,t)=>{t!==this.transport&&this.setTransport(t)}),u.info(`BSH watchdog started`,{scriptCount:this.entries.length}))}stop(){this.running&&(this.running=!1,this.transport.off(`Page.frameNavigated`,this.onFrameNavigated),this.discoveryTimer&&=(clearInterval(this.discoveryTimer),null),this.browserAPI&&this.browserAPI.setSessionChangeCallback(void 0),this.entries=[],this.executing.clear(),u.info(`BSH watchdog stopped`))}setTransport(e){e!==this.transport&&(this.transport.off(`Page.frameNavigated`,this.onFrameNavigated),this.transport=e,this.running&&this.transport.on(`Page.frameNavigated`,this.onFrameNavigated),u.info(`BSH watchdog transport swapped`))}async discover(){try{this.entries=await n(this.fs),u.debug(`BSH discovery complete`,{count:this.entries.length})}catch(e){u.error(`BSH discovery failed`,{error:e instanceof Error?e.message:String(e)})}}getEntries(){return this.entries}onFrameNavigated=e=>{let t=e.frame;if(t?.parentId||!t?.url)return;let n=t.url,r=e.sessionId;if(!n.startsWith(`http://`)&&!n.startsWith(`https://`))return;if(!r){u.warn(`BSH watchdog: no sessionId in Page.frameNavigated params, skipping`,{url:n});return}if(this.entries.length===0)return;let i=l(this.entries,n);if(i.length!==0)for(let e of i){let t=`${e.path}::${n}`;this.executing.has(t)||(this.executing.add(t),u.info(`BSH watchdog executing script`,{script:e.path,url:n}),this.executeInTargetPage(e.path,n,r).then(()=>{u.info(`BSH script completed`,{script:e.path,url:n})}).catch(t=>{u.error(`BSH script execution error`,{script:e.path,url:n,error:t instanceof Error?t.message:String(t)})}).finally(()=>{this.executing.delete(t)}))}};async executeInTargetPage(e,t,n){let r=await this.fs.readFile(e),i=typeof r==`string`?r:new TextDecoder().decode(r),a=`(async () => {
2
+ `).slice(0,10),n=[];for(let e of t){let t=e.match(/^\s*\/\/\s*@match\s+(.+)$/);t&&n.push(t[1].trim())}return n}function o(e,t){if(t.startsWith(`*.`)){let n=t.slice(1);return e===t.slice(2)||e.endsWith(n)&&e.length>n.length}return e===t}function s(e,t){try{let n=new URL(e),r=t.match(/^(\*|https?):\/\/([^/]+)(\/.*)?$/);if(!r)return!1;let[,i,a,s]=r;return i!==`*`&&n.protocol.slice(0,-1)!==i||!o(n.hostname,a)?!1:s?c(n.pathname+n.search,s):!0}catch{return!1}}function c(e,t){let n=`^`+t.replace(/[.+^${}()|[\]\\]/g,`\\$&`).replace(/\*/g,`.*`)+`$`;return new RegExp(n).test(e)}function l(e,t){try{let n=new URL(t);return e.filter(e=>o(n.hostname,e.hostnamePattern)?e.matchPatterns.length>0?e.matchPatterns.some(e=>s(t,e)):!0:!1)}catch{return[]}}var u=e(`bsh-watchdog`),d=class{transport;browserAPI;fs;discoveryIntervalMs;watcher;watcherUnsubs=[];entries=[];discoveryTimer=null;running=!1;executing=new Set;constructor(e){if(!e.transport&&!e.browserAPI)throw Error(`BshWatchdog requires either transport or browserAPI`);this.browserAPI=e.browserAPI,this.transport=e.transport??e.browserAPI.getTransport(),this.fs=e.fs,this.discoveryIntervalMs=e.discoveryIntervalMs??1e4,this.watcher=e.watcher}async start(){if(!this.running){if(this.running=!0,await this.discover(),this.watcher){let e=e=>e.endsWith(`.bsh`);this.watcherUnsubs=[this.watcher.watch(`/workspace`,e,()=>void this.discover()),this.watcher.watch(`/shared`,e,()=>void this.discover())]}else this.discoveryTimer=setInterval(()=>{this.discover()},this.discoveryIntervalMs);this.transport.on(`Page.frameNavigated`,this.onFrameNavigated),this.browserAPI&&this.browserAPI.setSessionChangeCallback((e,t)=>{t!==this.transport&&this.setTransport(t)}),u.info(`BSH watchdog started`,{scriptCount:this.entries.length})}}stop(){if(this.running){this.running=!1,this.transport.off(`Page.frameNavigated`,this.onFrameNavigated),this.discoveryTimer&&=(clearInterval(this.discoveryTimer),null),this.browserAPI&&this.browserAPI.setSessionChangeCallback(void 0);for(let e of this.watcherUnsubs)e();this.watcherUnsubs=[],this.entries=[],this.executing.clear(),u.info(`BSH watchdog stopped`)}}setTransport(e){e!==this.transport&&(this.transport.off(`Page.frameNavigated`,this.onFrameNavigated),this.transport=e,this.running&&this.transport.on(`Page.frameNavigated`,this.onFrameNavigated),u.info(`BSH watchdog transport swapped`))}async discover(){try{this.entries=await n(this.fs),u.debug(`BSH discovery complete`,{count:this.entries.length})}catch(e){u.error(`BSH discovery failed`,{error:e instanceof Error?e.message:String(e)})}}getEntries(){return this.entries}onFrameNavigated=e=>{let t=e.frame;if(t?.parentId||!t?.url)return;let n=t.url,r=e.sessionId;if(!n.startsWith(`http://`)&&!n.startsWith(`https://`))return;if(!r){u.warn(`BSH watchdog: no sessionId in Page.frameNavigated params, skipping`,{url:n});return}if(this.entries.length===0)return;let i=l(this.entries,n);if(i.length!==0)for(let e of i){let t=`${e.path}::${n}`;this.executing.has(t)||(this.executing.add(t),u.info(`BSH watchdog executing script`,{script:e.path,url:n}),this.executeInTargetPage(e.path,n,r).then(()=>{u.info(`BSH script completed`,{script:e.path,url:n})}).catch(t=>{u.error(`BSH script execution error`,{script:e.path,url:n,error:t instanceof Error?t.message:String(t)})}).finally(()=>{this.executing.delete(t)}))}};async executeInTargetPage(e,t,n){let r=await this.fs.readFile(e),i=typeof r==`string`?r:new TextDecoder().decode(r),a=`(async () => {
3
3
  const __requireSpecifiers = (function() {
4
4
  const re = /require\\s*\\(\\s*['"]([^'"]+)['"]\\s*\\)/g;
5
5
  const code = ${JSON.stringify(i)};
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/magick-wasm-JayMw6yo.js","assets/chunk-zsgVPwQN.js","assets/preload-helper-ca-nBW7U.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/magick-wasm-cJ5msdlA.js","assets/chunk-zsgVPwQN.js","assets/preload-helper-ca-nBW7U.js"])))=>i.map(i=>d[i]);
2
2
  import{r as e}from"./chunk-zsgVPwQN.js";import{t}from"./logger-B-No_qN_.js";import{t as n}from"./preload-helper-ca-nBW7U.js";var r=t(`cdp`),i=class{ws=null;nextId=1;pending=new Map;listeners=new Map;_state=`disconnected`;get state(){return this._state}async connect(e){if(this._state!==`disconnected`)throw Error(`Cannot connect: state is ${this._state}`);if(!e?.url)throw Error(`CDPClient.connect() requires a WebSocket URL`);let{url:t,timeout:n=5e3}=e;return this._state=`connecting`,new Promise((e,i)=>{let a=setTimeout(()=>{this.cleanup(),i(Error(`CDP connection timed out after ${n}ms`))},n);try{this.ws=new WebSocket(t)}catch(e){clearTimeout(a),this._state=`disconnected`,i(e);return}this.ws.onopen=()=>{clearTimeout(a),this._state=`connected`,r.info(`Connected`,{url:t}),e()},this.ws.onerror=e=>{clearTimeout(a),this._state===`connecting`&&(r.error(`Connection failed`,{url:t}),this.cleanup(),i(Error(`CDP WebSocket connection failed`)))},this.ws.onmessage=e=>{this.handleMessage(e.data)},this.ws.onclose=()=>{this.handleClose()}})}disconnect(){this.ws&&(this.ws.onclose=null,this.ws.close()),this.cleanup(),r.info(`Disconnected`)}async send(e,t,n,i=3e4){if(this._state!==`connected`||!this.ws)throw Error(`CDP client is not connected`);let a=this.nextId++,o={id:a,method:e};return t&&(o.params=t),n&&(o.sessionId=n),r.debug(`Send`,{method:e,id:a,sessionId:n}),new Promise((t,n)=>{let r=setTimeout(()=>{this.pending.delete(a),n(Error(`CDP command timed out after ${i}ms: ${e}`))},i);this.pending.set(a,{resolve:e=>{clearTimeout(r),t(e)},reject:e=>{clearTimeout(r),n(e)}}),this.ws.send(JSON.stringify(o))})}on(e,t){let n=this.listeners.get(e);n||(n=new Set,this.listeners.set(e,n)),n.add(t)}off(e,t){let n=this.listeners.get(e);n&&(n.delete(t),n.size===0&&this.listeners.delete(e))}once(e,t=3e4){return new Promise((n,r)=>{let i=setTimeout(()=>{this.off(e,a),r(Error(`Timed out waiting for event: ${e}`))},t),a=t=>{clearTimeout(i),this.off(e,a),n(t)};this.on(e,a)})}handleMessage(e){let t;try{t=JSON.parse(e)}catch{return}if(`id`in t&&typeof t.id==`number`){let e=t;r.debug(`Response`,{id:e.id,hasError:!!e.error});let n=this.pending.get(e.id);n&&(this.pending.delete(e.id),e.error?(r.error(`Command error`,{id:e.id,code:e.error.code,message:e.error.message}),n.reject(Error(`CDP error: ${e.error.message} (${e.error.code})`))):n.resolve(e.result??{}));return}if(`method`in t){let e=t;r.debug(`Event`,{method:e.method,sessionId:e.sessionId});let n=this.listeners.get(e.method);if(n){let t=e.sessionId?{...e.params,sessionId:e.sessionId}:e.params??{};for(let e of n)try{e(t)}catch{}}}}handleClose(){r.error(`Connection closed unexpectedly`,{pendingCommands:this.pending.size});for(let[,e]of this.pending)e.reject(Error(`CDP connection closed`));this.cleanup()}cleanup(){this.ws=null,this._state=`disconnected`,this.pending.clear()}};function a(e,t=``){if(e==null)return t;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`)return String(e);try{return JSON.stringify(e)??t}catch{return String(e)}}var o=`(function() {
3
3
  'use strict';
4
4
 
@@ -869,7 +869,7 @@ import{r as e}from"./chunk-zsgVPwQN.js";import{t}from"./logger-B-No_qN_.js";impo
869
869
  } catch(e) {
870
870
  return { role: 'RootWebArea', name: '', description: 'Error: ' + (e.message || String(e)) };
871
871
  }
872
- })()`,s=`ws://localhost:5710/cdp`,c=t(`browser-api`);function l(e=typeof window<`u`?window.location:null){return e?.host?`${e.protocol===`https:`?`wss:`:`ws:`}//${e.host}/cdp`:s}var u=class{client;localClient;sessionId=null;attachedTargetId=null;trayTargetProvider=null;remoteTargetInfo=null;_frameContextCache=new Map;_tabLock=Promise.resolve();_onSessionChange;handleJavaScriptDialogOpening=async e=>{let t=typeof e.sessionId==`string`?e.sessionId:this.sessionId;if(t)try{await this.client.send(`Page.handleJavaScriptDialog`,{accept:!1},t,5e3),c.warn(`Auto-dismissed unexpected JavaScript dialog`,{sessionId:t,type:e.type,message:e.message,url:e.url})}catch(e){c.warn(`Failed to auto-dismiss JavaScript dialog`,{sessionId:t,error:e instanceof Error?e.message:String(e)})}};constructor(e){this.client=e??new i,this.localClient=this.client,this.addDialogListener(this.client)}getTransport(){return this.client}setSessionChangeCallback(e){this._onSessionChange=e}getSessionId(){return this.sessionId}getAttachedTargetId(){return this.attachedTargetId}async withTab(e,t){let n,r=new Promise(e=>{n=e}),i=this._tabLock;this._tabLock=r,await i;try{return await t(await this.attachToPage(e))}finally{n()}}setTrayTargetProvider(e){this.trayTargetProvider=e}async listAllTargets(){let e=await this.listPages();if(!this.trayTargetProvider)return e;let t=!this.remoteTargetInfo,n=new Set(e.map(e=>e.targetId)),r=this.trayTargetProvider.getTargets().filter(e=>!t||!(e.runtimeId===`leader`&&n.has(e.localTargetId))).map(e=>({targetId:e.targetId,title:e.title,url:e.url}));return[...e,...r]}async connect(e){await this.client.connect({url:e?.url??l(),timeout:e?.timeout})}async createPage(e){return await this.ensureConnected(),await this.ensureLocalConnected(),(await this.localClient.send(`Target.createTarget`,{url:e??`about:blank`,background:!0})).targetId}async createRemotePage(e,t){if(!this.trayTargetProvider?.openRemoteTab)throw Error(`Remote tab opening not available (no tray target provider)`);return this.trayTargetProvider.openRemoteTab(e,t??`about:blank`)}async closePage(e){if(await this.ensureConnected(),this.trayTargetProvider?.createRemoteTransport&&e.includes(`:`)){let t=e.indexOf(`:`),n=e.substring(0,t),r=e.substring(t+1);{let t=this.trayTargetProvider.createRemoteTransport(n,r);try{await t.send(`Target.closeTarget`,{targetId:r})}finally{this.trayTargetProvider.removeRemoteTransport&&this.trayTargetProvider.removeRemoteTransport(n,r)}this.attachedTargetId===e&&(this.remoteTargetInfo&&=(this.setClient(this.localClient),null),this.sessionId=null,this.attachedTargetId=null);return}}await this.localClient.send(`Target.closeTarget`,{targetId:e}),this.attachedTargetId===e&&(this.sessionId=null,this.attachedTargetId=null)}disconnect(){this.sessionId=null,this.attachedTargetId=null,this.client.disconnect()}async listPages(){return await this.ensureConnected(),await this.ensureLocalConnected(),((await this.localClient.send(`Target.getTargets`)).targetInfos??[]).filter(e=>e.type===`page`).map(e=>({targetId:e.targetId,title:e.title,url:e.url,...e.active?{active:!0}:{}}))}async attachToPage(e){if(await this.ensureConnected(),this.sessionId&&this.attachedTargetId===e)return this.sessionId;if(this._frameContextCache.clear(),this.trayTargetProvider?.createRemoteTransport&&e.includes(`:`)){let t=e.indexOf(`:`),n=e.substring(0,t),r=e.substring(t+1);{let t=this.trayTargetProvider.createRemoteTransport(n,r);return this.setClient(t),this.remoteTargetInfo={runtimeId:n,localTargetId:r},this.sessionId=(await this.client.send(`Target.attachToTarget`,{targetId:r,flatten:!0})).sessionId,this.attachedTargetId=e,await this.client.send(`Page.enable`,{},this.sessionId),this._onSessionChange?.(this.sessionId,this.client),this.sessionId}}return this.remoteTargetInfo&&=(this.trayTargetProvider?.removeRemoteTransport&&this.trayTargetProvider.removeRemoteTransport(this.remoteTargetInfo.runtimeId,this.remoteTargetInfo.localTargetId),this.setClient(this.localClient),null),await this.ensureLocalConnected(),this.sessionId=(await this.localClient.send(`Target.attachToTarget`,{targetId:e,flatten:!0})).sessionId,this.attachedTargetId=e,await this.localClient.send(`Page.enable`,{},this.sessionId),this._onSessionChange?.(this.sessionId,this.localClient),this.sessionId}async detach(){if(this.sessionId){try{await this.client.send(`Target.detachFromTarget`,{sessionId:this.sessionId})}catch{}this.remoteTargetInfo&&this.trayTargetProvider?.removeRemoteTransport&&(this.trayTargetProvider.removeRemoteTransport(this.remoteTargetInfo.runtimeId,this.remoteTargetInfo.localTargetId),this.setClient(this.localClient),this.remoteTargetInfo=null),this.sessionId=null,this.attachedTargetId=null}}async navigate(e){await this.ensureConnected(),this.ensureAttached(),await this.client.send(`Page.enable`,{},this.sessionId);let t=this.client.once(`Page.loadEventFired`);await this.client.send(`Page.navigate`,{url:e},this.sessionId),await t}async screenshot(e){await this.ensureConnected(),this.ensureAttached();try{let t={format:e?.format??`png`,captureBeyondViewport:!0};if(e?.quality!==void 0&&(t.quality=e.quality),e?.clip||e?.fullPage){let n=0,r=0;try{await this.client.send(`Runtime.enable`,{},this.sessionId);let e=await this.client.send(`Runtime.evaluate`,{expression:`JSON.stringify({ w: window.innerWidth, h: document.documentElement.scrollHeight })`,returnByValue:!0},this.sessionId),t=JSON.parse(e.result?.value??`{}`);n=t.w??0,r=t.h??0}catch{}e?.clip?t.clip={...e.clip,scale:e.clip.scale??1}:t.clip={x:0,y:0,width:n||1280,height:r||800,scale:1}}let r;try{r=await this.client.send(`Page.captureScreenshot`,t,this.sessionId)}catch{await this.client.send(`Page.bringToFront`,{},this.sessionId),r=await this.client.send(`Page.captureScreenshot`,t,this.sessionId)}let i=r.data;if(e?.maxWidth)try{let{getMagick:t}=await n(async()=>{let{getMagick:e}=await import(`./magick-wasm-JayMw6yo.js`).then(e=>e.n);return{getMagick:e}},__vite__mapDeps([0,1,2])),r=await t(),a=atob(i),o=new Uint8Array(a.length);for(let e=0;e<a.length;e++)o[e]=a.charCodeAt(e);let s=8e3,c=!1;await r.ImageMagick.read(o,async t=>{let n=Math.min(e.maxWidth,s),r=Math.max(t.width,t.height);if(t.width>n||r>s){let e=Math.min(n/t.width,s/r);t.resize(Math.round(t.width*e),Math.round(t.height*e)),c=!0}c&&t.write(`PNG`,e=>{let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);i=btoa(t)})})}catch(e){console.warn(`[browser-api] Screenshot maxWidth resize failed, returning original`,e)}return i}finally{}}async evaluate(e,t){await this.ensureConnected(),this.ensureAttached(),await this.client.send(`Runtime.enable`,{},this.sessionId);let n=await this.client.send(`Runtime.evaluate`,{expression:e,awaitPromise:t?.awaitPromise??!0,returnByValue:t?.returnByValue??!0},this.sessionId),r=n.exceptionDetails;if(r){let e=r.exception?.description??r.text;throw Error(`Evaluation failed: ${e}`)}return n.result.value}async click(e){await this.ensureConnected(),this.ensureAttached();let t=await this.boundingBox(e);if(!t)throw Error(`Element not found: ${e}`);let n=t.x+t.width/2,r=t.y+t.height/2;await this.client.send(`Input.dispatchMouseEvent`,{type:`mousePressed`,x:n,y:r,button:`left`,clickCount:1},this.sessionId),await this.client.send(`Input.dispatchMouseEvent`,{type:`mouseReleased`,x:n,y:r,button:`left`,clickCount:1},this.sessionId)}async type(e){await this.ensureConnected(),this.ensureAttached();for(let t of e)await this.client.send(`Input.dispatchKeyEvent`,{type:`keyDown`,text:t},this.sessionId),await this.client.send(`Input.dispatchKeyEvent`,{type:`keyUp`,text:t},this.sessionId)}async waitForSelector(e,t){await this.ensureConnected(),this.ensureAttached();let n=t?.timeout??3e4,r=t?.interval??100,i=Date.now();for(;Date.now()-i<n;){if(await this.evaluate(`!!document.querySelector(${JSON.stringify(e)})`))return;await new Promise(e=>setTimeout(e,r))}throw Error(`waitForSelector timed out after ${n}ms: ${e}`)}async getAccessibilityTree(){await this.ensureConnected(),this.ensureAttached();let e=await this.evaluate(o,{awaitPromise:!1,returnByValue:!0});return!e||typeof e!=`object`?{role:`RootWebArea`,name:``}:d(e)}async clickByBackendNodeId(e){await this.ensureConnected(),this.ensureAttached(),await this.client.send(`DOM.enable`,{},this.sessionId),await this.client.send(`Runtime.enable`,{},this.sessionId);let t=(await this.client.send(`DOM.resolveNode`,{backendNodeId:e},this.sessionId)).object;if(!t?.objectId)throw Error(`Could not resolve backend node ${e} to a DOM element`);let n=(await this.client.send(`Runtime.callFunctionOn`,{objectId:t.objectId,functionDeclaration:`function() {
872
+ })()`,s=`ws://localhost:5710/cdp`,c=t(`browser-api`);function l(e=typeof window<`u`?window.location:null){return e?.host?`${e.protocol===`https:`?`wss:`:`ws:`}//${e.host}/cdp`:s}var u=class{client;localClient;sessionId=null;attachedTargetId=null;trayTargetProvider=null;remoteTargetInfo=null;_frameContextCache=new Map;_tabLock=Promise.resolve();_onSessionChange;handleJavaScriptDialogOpening=async e=>{let t=typeof e.sessionId==`string`?e.sessionId:this.sessionId;if(t)try{await this.client.send(`Page.handleJavaScriptDialog`,{accept:!1},t,5e3),c.warn(`Auto-dismissed unexpected JavaScript dialog`,{sessionId:t,type:e.type,message:e.message,url:e.url})}catch(e){c.warn(`Failed to auto-dismiss JavaScript dialog`,{sessionId:t,error:e instanceof Error?e.message:String(e)})}};constructor(e){this.client=e??new i,this.localClient=this.client,this.addDialogListener(this.client)}getTransport(){return this.client}setSessionChangeCallback(e){this._onSessionChange=e}getSessionId(){return this.sessionId}getAttachedTargetId(){return this.attachedTargetId}async withTab(e,t){let n,r=new Promise(e=>{n=e}),i=this._tabLock;this._tabLock=r,await i;try{return await t(await this.attachToPage(e))}finally{n()}}setTrayTargetProvider(e){this.trayTargetProvider=e}async listAllTargets(){let e=await this.listPages();if(!this.trayTargetProvider)return e;let t=!this.remoteTargetInfo,n=new Set(e.map(e=>e.targetId)),r=this.trayTargetProvider.getTargets().filter(e=>!t||!(e.runtimeId===`leader`&&n.has(e.localTargetId))).map(e=>({targetId:e.targetId,title:e.title,url:e.url}));return[...e,...r]}async connect(e){await this.client.connect({url:e?.url??l(),timeout:e?.timeout})}async createPage(e){return await this.ensureConnected(),await this.ensureLocalConnected(),(await this.localClient.send(`Target.createTarget`,{url:e??`about:blank`,background:!0})).targetId}async createRemotePage(e,t){if(!this.trayTargetProvider?.openRemoteTab)throw Error(`Remote tab opening not available (no tray target provider)`);return this.trayTargetProvider.openRemoteTab(e,t??`about:blank`)}async closePage(e){if(await this.ensureConnected(),this.trayTargetProvider?.createRemoteTransport&&e.includes(`:`)){let t=e.indexOf(`:`),n=e.substring(0,t),r=e.substring(t+1);{let t=this.trayTargetProvider.createRemoteTransport(n,r);try{await t.send(`Target.closeTarget`,{targetId:r})}finally{this.trayTargetProvider.removeRemoteTransport&&this.trayTargetProvider.removeRemoteTransport(n,r)}this.attachedTargetId===e&&(this.remoteTargetInfo&&=(this.setClient(this.localClient),null),this.sessionId=null,this.attachedTargetId=null);return}}await this.localClient.send(`Target.closeTarget`,{targetId:e}),this.attachedTargetId===e&&(this.sessionId=null,this.attachedTargetId=null)}disconnect(){this.sessionId=null,this.attachedTargetId=null,this.client.disconnect()}async listPages(){return await this.ensureConnected(),await this.ensureLocalConnected(),((await this.localClient.send(`Target.getTargets`)).targetInfos??[]).filter(e=>e.type===`page`).map(e=>({targetId:e.targetId,title:e.title,url:e.url,...e.active?{active:!0}:{}}))}async attachToPage(e){if(await this.ensureConnected(),this.sessionId&&this.attachedTargetId===e)return this.sessionId;if(this._frameContextCache.clear(),this.trayTargetProvider?.createRemoteTransport&&e.includes(`:`)){let t=e.indexOf(`:`),n=e.substring(0,t),r=e.substring(t+1);{let t=this.trayTargetProvider.createRemoteTransport(n,r);return this.setClient(t),this.remoteTargetInfo={runtimeId:n,localTargetId:r},this.sessionId=(await this.client.send(`Target.attachToTarget`,{targetId:r,flatten:!0})).sessionId,this.attachedTargetId=e,await this.client.send(`Page.enable`,{},this.sessionId),this._onSessionChange?.(this.sessionId,this.client),this.sessionId}}return this.remoteTargetInfo&&=(this.trayTargetProvider?.removeRemoteTransport&&this.trayTargetProvider.removeRemoteTransport(this.remoteTargetInfo.runtimeId,this.remoteTargetInfo.localTargetId),this.setClient(this.localClient),null),await this.ensureLocalConnected(),this.sessionId=(await this.localClient.send(`Target.attachToTarget`,{targetId:e,flatten:!0})).sessionId,this.attachedTargetId=e,await this.localClient.send(`Page.enable`,{},this.sessionId),this._onSessionChange?.(this.sessionId,this.localClient),this.sessionId}async detach(){if(this.sessionId){try{await this.client.send(`Target.detachFromTarget`,{sessionId:this.sessionId})}catch{}this.remoteTargetInfo&&this.trayTargetProvider?.removeRemoteTransport&&(this.trayTargetProvider.removeRemoteTransport(this.remoteTargetInfo.runtimeId,this.remoteTargetInfo.localTargetId),this.setClient(this.localClient),this.remoteTargetInfo=null),this.sessionId=null,this.attachedTargetId=null}}async navigate(e){await this.ensureConnected(),this.ensureAttached(),await this.client.send(`Page.enable`,{},this.sessionId);let t=this.client.once(`Page.loadEventFired`);await this.client.send(`Page.navigate`,{url:e},this.sessionId),await t}async screenshot(e){await this.ensureConnected(),this.ensureAttached();try{let t={format:e?.format??`png`,captureBeyondViewport:!0};if(e?.quality!==void 0&&(t.quality=e.quality),e?.clip||e?.fullPage){let n=0,r=0;try{await this.client.send(`Runtime.enable`,{},this.sessionId);let e=await this.client.send(`Runtime.evaluate`,{expression:`JSON.stringify({ w: window.innerWidth, h: document.documentElement.scrollHeight })`,returnByValue:!0},this.sessionId),t=JSON.parse(e.result?.value??`{}`);n=t.w??0,r=t.h??0}catch{}e?.clip?t.clip={...e.clip,scale:e.clip.scale??1}:t.clip={x:0,y:0,width:n||1280,height:r||800,scale:1}}let r;try{r=await this.client.send(`Page.captureScreenshot`,t,this.sessionId)}catch{await this.client.send(`Page.bringToFront`,{},this.sessionId),r=await this.client.send(`Page.captureScreenshot`,t,this.sessionId)}let i=r.data;if(e?.maxWidth)try{let{getMagick:t}=await n(async()=>{let{getMagick:e}=await import(`./magick-wasm-cJ5msdlA.js`).then(e=>e.n);return{getMagick:e}},__vite__mapDeps([0,1,2])),r=await t(),a=atob(i),o=new Uint8Array(a.length);for(let e=0;e<a.length;e++)o[e]=a.charCodeAt(e);let s=8e3,c=!1;await r.ImageMagick.read(o,async t=>{let n=Math.min(e.maxWidth,s),r=Math.max(t.width,t.height);if(t.width>n||r>s){let e=Math.min(n/t.width,s/r);t.resize(Math.round(t.width*e),Math.round(t.height*e)),c=!0}c&&t.write(`PNG`,e=>{let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);i=btoa(t)})})}catch(e){console.warn(`[browser-api] Screenshot maxWidth resize failed, returning original`,e)}return i}finally{}}async evaluate(e,t){await this.ensureConnected(),this.ensureAttached(),await this.client.send(`Runtime.enable`,{},this.sessionId);let n=await this.client.send(`Runtime.evaluate`,{expression:e,awaitPromise:t?.awaitPromise??!0,returnByValue:t?.returnByValue??!0},this.sessionId),r=n.exceptionDetails;if(r){let e=r.exception?.description??r.text;throw Error(`Evaluation failed: ${e}`)}return n.result.value}async click(e){await this.ensureConnected(),this.ensureAttached();let t=await this.boundingBox(e);if(!t)throw Error(`Element not found: ${e}`);let n=t.x+t.width/2,r=t.y+t.height/2;await this.client.send(`Input.dispatchMouseEvent`,{type:`mousePressed`,x:n,y:r,button:`left`,clickCount:1},this.sessionId),await this.client.send(`Input.dispatchMouseEvent`,{type:`mouseReleased`,x:n,y:r,button:`left`,clickCount:1},this.sessionId)}async type(e){await this.ensureConnected(),this.ensureAttached();for(let t of e)await this.client.send(`Input.dispatchKeyEvent`,{type:`keyDown`,text:t},this.sessionId),await this.client.send(`Input.dispatchKeyEvent`,{type:`keyUp`,text:t},this.sessionId)}async waitForSelector(e,t){await this.ensureConnected(),this.ensureAttached();let n=t?.timeout??3e4,r=t?.interval??100,i=Date.now();for(;Date.now()-i<n;){if(await this.evaluate(`!!document.querySelector(${JSON.stringify(e)})`))return;await new Promise(e=>setTimeout(e,r))}throw Error(`waitForSelector timed out after ${n}ms: ${e}`)}async getAccessibilityTree(){await this.ensureConnected(),this.ensureAttached();let e=await this.evaluate(o,{awaitPromise:!1,returnByValue:!0});return!e||typeof e!=`object`?{role:`RootWebArea`,name:``}:d(e)}async clickByBackendNodeId(e){await this.ensureConnected(),this.ensureAttached(),await this.client.send(`DOM.enable`,{},this.sessionId),await this.client.send(`Runtime.enable`,{},this.sessionId);let t=(await this.client.send(`DOM.resolveNode`,{backendNodeId:e},this.sessionId)).object;if(!t?.objectId)throw Error(`Could not resolve backend node ${e} to a DOM element`);let n=(await this.client.send(`Runtime.callFunctionOn`,{objectId:t.objectId,functionDeclaration:`function() {
873
873
  this.scrollIntoView({ block: 'center', inline: 'center' });
874
874
  const r = this.getBoundingClientRect();
875
875
  return { x: r.x, y: r.y, width: r.width, height: r.height };
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/pdfjs-DkB4gfOb.js","assets/preload-helper-ca-nBW7U.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-ca-nBW7U.js";var t,n=globalThis.process?.release?.name===`node`,r=typeof window<`u`;async function i(e,t={}){let{getDocument:n}=await a();return await n({data:e,isEvalSupported:!1,useSystemFonts:!0,...t}).promise}async function a(){return t||await o(),t}async function o(n,{reload:r=!1}={}){if(!(t&&!r)){if(n)try{t=await c(n());return}catch(e){throw Error(`PDF.js could not be resolved: ${e}`)}try{t=await e(()=>import(`./pdfjs-DkB4gfOb.js`),__vite__mapDeps([0,1]))}catch(e){throw Error(`Serverless PDF.js bundle could not be resolved: ${e}`)}}}function s(e){return typeof e==`object`&&!!e&&`_pdfInfo`in e}async function c(e){let t=await e;return t.default||t}var l,u=class{#e=!1;constructor({enableHWA:e=!1}={}){this.#e=e}create(e,t){let n=this._createCanvas(e,t);return{canvas:n,context:n.getContext(`2d`,{willReadFrequently:!this.#e})}}reset({canvas:e},t,n){if(!e)throw Error(`Canvas is not specified`);e.width=t,e.height=n}destroy(e){if(!e.canvas)throw Error(`Canvas is not specified`);e.canvas.width=0,e.canvas.height=0,e.canvas=void 0,e.context=void 0}_createCanvas(e,t){throw Error(`Not implemented`)}},d=class extends u{_document;constructor({ownerDocument:e=globalThis.document,enableHWA:t=!1}={}){super({enableHWA:t}),this._document=e}_createCanvas(e,t){let n=this._document.createElement(`canvas`);return n.width=e,n.height=t,n}},f=class extends u{constructor({enableHWA:e=!1}={}){super({enableHWA:e})}_createCanvas(e,t){if(!l)throw Error(`@napi-rs/canvas module is not resolved`);return l.createCanvas(e,t)}};async function p(e){l??=await c(e())}function m(){l&&(globalThis.DOMMatrix===void 0&&(globalThis.DOMMatrix=l.DOMMatrix),globalThis.ImageData===void 0&&(globalThis.ImageData=l.ImageData),globalThis.Path2D===void 0&&(globalThis.Path2D=l.Path2D))}async function h(e,t){let n=s(e)?e:await i(e);if(t<1||t>n.numPages)throw Error(`Invalid page number. Must be between 1 and ${n.numPages}.`);let r=await n.getPage(t),o=await r.getOperatorList(),{OPS:c}=await a(),l=[];for(let e=0;e<o.fnArray.length;e++){if(o.fnArray[e]!==c.paintImageXObject)continue;let t=o.argsArray[e][0],n=await new Promise(e=>(t.startsWith(`g_`)?r.commonObjs:r.objs).get(t,e));if(!n||!n.data||!n.width||!n.height)continue;let{width:i,height:a,data:s}=n,u=s.length/(i*a);if(![1,3,4].includes(u))continue;let d=u;l.push({data:s,width:i,height:a,channels:d,key:t})}return l}async function g(e,t,n={}){let r=await _(n.canvasImport),a=s(e)?e:await i(e,{CanvasFactory:r}),o=await a.getPage(t);if(t<1||t>a.numPages)throw Error(`Invalid page number. Must be between 1 and ${a.numPages}.`);let c=o.getViewport({scale:1}),l=n.scale||1;n.width?l=n.width/c.width:n.height&&(l=n.height/c.height);let u=o.getViewport({scale:Math.max(0,l)}),d=new r().create(u.width,u.height);await o.render({canvas:d.canvas,canvasContext:d.context,viewport:u}).promise;let f=d.canvas.toDataURL();return n.toDataURL?f:await(await fetch(f)).arrayBuffer()}async function _(e){if(r)return d;if(n){if(!e)throw Error(`Parameter "canvasImport" is required in Node.js environment.`);return await p(e),m(),f}throw Error(`Unsupported environment for canvas creation.`)}async function v(e){let t=s(e)?e:await i(e),n=await Promise.all(Array.from({length:t.numPages},(e,n)=>y(t,n+1)));return{totalPages:t.numPages,links:n.flat()}}async function y(e,t){let n=await(await e.getPage(t)).getAnnotations(),r=[];for(let e of n)e.subtype===`Link`&&e.url&&r.push(e.url);return r}var b=[`xmp:createdate`,`xmp:modifydate`,`xmp:metadatadate`,`xap:createdate`,`xap:modifydate`,`xap:metadatadate`];async function x(e,t={}){let n=await(s(e)?e:await i(e)).getMetadata(),r=n?.info||{};if(t.parseDates){let{PDFDateString:e}=await a();r?.CreationDate&&(r.CreationDate=e.toDateObject(r?.CreationDate)),r?.ModDate&&(r.ModDate=e.toDateObject(r?.ModDate)),n.metadata&&=new Proxy(n.metadata,{get(e,t){return t===`get`?t=>{let n=e.get(t);return b.includes(t)&&n?S(n):n}:e[t]}})}return{info:r,metadata:n?.metadata||{}}}function S(e){if(!e)return;let t=Date.parse(e);if(!Number.isNaN(t))return new Date(t)}async function C(e,t={}){let{mergePages:n=!1}=t,r=s(e)?e:await i(e),a=await Promise.all(Array.from({length:r.numPages},(e,t)=>w(r,t+1)));return{totalPages:r.numPages,text:n?a.join(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/pdfjs-DqPUb7Z_.js","assets/preload-helper-ca-nBW7U.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-ca-nBW7U.js";var t,n=globalThis.process?.release?.name===`node`,r=typeof window<`u`;async function i(e,t={}){let{getDocument:n}=await a();return await n({data:e,isEvalSupported:!1,useSystemFonts:!0,...t}).promise}async function a(){return t||await o(),t}async function o(n,{reload:r=!1}={}){if(!(t&&!r)){if(n)try{t=await c(n());return}catch(e){throw Error(`PDF.js could not be resolved: ${e}`)}try{t=await e(()=>import(`./pdfjs-DqPUb7Z_.js`),__vite__mapDeps([0,1]))}catch(e){throw Error(`Serverless PDF.js bundle could not be resolved: ${e}`)}}}function s(e){return typeof e==`object`&&!!e&&`_pdfInfo`in e}async function c(e){let t=await e;return t.default||t}var l,u=class{#e=!1;constructor({enableHWA:e=!1}={}){this.#e=e}create(e,t){let n=this._createCanvas(e,t);return{canvas:n,context:n.getContext(`2d`,{willReadFrequently:!this.#e})}}reset({canvas:e},t,n){if(!e)throw Error(`Canvas is not specified`);e.width=t,e.height=n}destroy(e){if(!e.canvas)throw Error(`Canvas is not specified`);e.canvas.width=0,e.canvas.height=0,e.canvas=void 0,e.context=void 0}_createCanvas(e,t){throw Error(`Not implemented`)}},d=class extends u{_document;constructor({ownerDocument:e=globalThis.document,enableHWA:t=!1}={}){super({enableHWA:t}),this._document=e}_createCanvas(e,t){let n=this._document.createElement(`canvas`);return n.width=e,n.height=t,n}},f=class extends u{constructor({enableHWA:e=!1}={}){super({enableHWA:e})}_createCanvas(e,t){if(!l)throw Error(`@napi-rs/canvas module is not resolved`);return l.createCanvas(e,t)}};async function p(e){l??=await c(e())}function m(){l&&(globalThis.DOMMatrix===void 0&&(globalThis.DOMMatrix=l.DOMMatrix),globalThis.ImageData===void 0&&(globalThis.ImageData=l.ImageData),globalThis.Path2D===void 0&&(globalThis.Path2D=l.Path2D))}async function h(e,t){let n=s(e)?e:await i(e);if(t<1||t>n.numPages)throw Error(`Invalid page number. Must be between 1 and ${n.numPages}.`);let r=await n.getPage(t),o=await r.getOperatorList(),{OPS:c}=await a(),l=[];for(let e=0;e<o.fnArray.length;e++){if(o.fnArray[e]!==c.paintImageXObject)continue;let t=o.argsArray[e][0],n=await new Promise(e=>(t.startsWith(`g_`)?r.commonObjs:r.objs).get(t,e));if(!n||!n.data||!n.width||!n.height)continue;let{width:i,height:a,data:s}=n,u=s.length/(i*a);if(![1,3,4].includes(u))continue;let d=u;l.push({data:s,width:i,height:a,channels:d,key:t})}return l}async function g(e,t,n={}){let r=await _(n.canvasImport),a=s(e)?e:await i(e,{CanvasFactory:r}),o=await a.getPage(t);if(t<1||t>a.numPages)throw Error(`Invalid page number. Must be between 1 and ${a.numPages}.`);let c=o.getViewport({scale:1}),l=n.scale||1;n.width?l=n.width/c.width:n.height&&(l=n.height/c.height);let u=o.getViewport({scale:Math.max(0,l)}),d=new r().create(u.width,u.height);await o.render({canvas:d.canvas,canvasContext:d.context,viewport:u}).promise;let f=d.canvas.toDataURL();return n.toDataURL?f:await(await fetch(f)).arrayBuffer()}async function _(e){if(r)return d;if(n){if(!e)throw Error(`Parameter "canvasImport" is required in Node.js environment.`);return await p(e),m(),f}throw Error(`Unsupported environment for canvas creation.`)}async function v(e){let t=s(e)?e:await i(e),n=await Promise.all(Array.from({length:t.numPages},(e,n)=>y(t,n+1)));return{totalPages:t.numPages,links:n.flat()}}async function y(e,t){let n=await(await e.getPage(t)).getAnnotations(),r=[];for(let e of n)e.subtype===`Link`&&e.url&&r.push(e.url);return r}var b=[`xmp:createdate`,`xmp:modifydate`,`xmp:metadatadate`,`xap:createdate`,`xap:modifydate`,`xap:metadatadate`];async function x(e,t={}){let n=await(s(e)?e:await i(e)).getMetadata(),r=n?.info||{};if(t.parseDates){let{PDFDateString:e}=await a();r?.CreationDate&&(r.CreationDate=e.toDateObject(r?.CreationDate)),r?.ModDate&&(r.ModDate=e.toDateObject(r?.ModDate)),n.metadata&&=new Proxy(n.metadata,{get(e,t){return t===`get`?t=>{let n=e.get(t);return b.includes(t)&&n?S(n):n}:e[t]}})}return{info:r,metadata:n?.metadata||{}}}function S(e){if(!e)return;let t=Date.parse(e);if(!Number.isNaN(t))return new Date(t)}async function C(e,t={}){let{mergePages:n=!1}=t,r=s(e)?e:await i(e),a=await Promise.all(Array.from({length:r.numPages},(e,t)=>w(r,t+1)));return{totalPages:r.numPages,text:n?a.join(`
3
3
  `).replace(/\s+/g,` `):a}}async function w(e,t){return(await(await e.getPage(t)).getTextContent()).items.filter(e=>e.str!=null).map(e=>e.str+(e.hasEOL?`
4
4
  `:``)).join(``)}async function T(e){await o(e,{reload:!0})}async function E(e){await o(e.pdfjs,{reload:!0})}var D=async(...e)=>(await o(),await x(...e)),O=async(...e)=>(await o(),await C(...e)),k=async(...e)=>(await o(),await h(...e)),A=async(...e)=>(await o(),await g(...e)),j=async(...e)=>(await o(),await v(...e));export{E as configureUnPDF,_ as createIsomorphicCanvasFactory,T as definePDFJSModule,k as extractImages,j as extractLinks,O as extractText,i as getDocumentProxy,D as getMeta,a as getResolvedPDFJS,A as renderPageAsImage,o as resolvePDFJSImport};