@alexkroman1/aai-ui 0.13.0 → 0.14.1

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/README.md CHANGED
@@ -9,28 +9,27 @@ npm i @alexkroman1/aai-ui react react-dom
9
9
  ```
10
10
 
11
11
  Every agent gets this UI for free — `aai dev` and deployed agents serve a
12
- default client built from this package. Install it directly when the agent
13
- has its own `client.tsx`.
12
+ default client built from this package. Install it directly when the agent has
13
+ its own `client.tsx`.
14
14
 
15
15
  ## UI integration
16
16
 
17
- The hooks here are what a page reads an agent with: the live call, the state
18
- the agent projects, the tool calls as they run, and the durable runs it
19
- started. **There is no route to write.** The agent server already serves the
20
- session socket and the workflow HTTP API, so a component talks to a live
21
- agent with no glue file in between — a client is one `client.tsx` calling one
22
- mount.
17
+ The hooks here are what a page reads an agent with: the live call, the state the
18
+ agent projects, the tool calls as they run, and the durable runs it started.
19
+ **There is no route to write.** The agent server already serves the session
20
+ socket and the workflow HTTP API, so a component talks to a live agent with no
21
+ glue file in between — a client is one `client.tsx` calling one mount.
23
22
 
24
23
  **Two front doors, two mounts.** A voice agent's page calls `mountClient()` and
25
- talks to a live session. A workflow app's page (`workflowApp()`, or `agent({
26
- mode: "workflow-app" })`) calls `mountPage()` and talks to the workflow HTTP API
27
- — no session, no socket, no microphone. Both are still `client.tsx`, still
28
- React, still the same theme tokens.
24
+ talks to a live session. A workflow app's page (`workflowApp()`, or
25
+ `agent({ mode: "workflow-app" })`) calls `mountPage()` and talks to the workflow
26
+ HTTP API — no session, no socket, no microphone. Both are still `client.tsx`,
27
+ still React, still the same theme tokens.
29
28
 
30
29
  ### Agent `agent.ts`
31
30
 
32
- The session's state lives in a slot, and `syncState` is what the browser sees
33
- — pushed after every tool call, so the client never rebuilds it from events:
31
+ The session's state lives in a slot, and `syncState` is what the browser sees —
32
+ pushed after every tool call, so the client never rebuilds it from events:
34
33
 
35
34
  ```ts
36
35
  import { agent, sessionSlot } from "@alexkroman1/aai";
@@ -70,10 +69,10 @@ export default tool({
70
69
 
71
70
  ### UI component for a tool `quote-card.tsx`
72
71
 
73
- `useToolResult` fires once per settled call of one named tool, with the
74
- result already parsed. A component that mounts late still receives the
75
- results of calls that finished before it — a result is a value the UI is
76
- driven from, not a moment:
72
+ `useToolResult` fires once per settled call of one named tool, with the result
73
+ already parsed. A component that mounts late still receives the results of calls
74
+ that finished before it — a result is a value the UI is driven from, not a
75
+ moment:
77
76
 
78
77
  ```tsx
79
78
  import { useState } from "react";
@@ -94,13 +93,12 @@ export default function QuoteCard() {
94
93
  }
95
94
  ```
96
95
 
97
- `useToolCallStart` is the same hook for the other end of the call — the
98
- pending invocation and its arguments, for a spinner rather than a value.
99
- Either one takes the tool's own shape as a type argument, derived from the
100
- tool module by a **type-only** import that is erased and so pulls no server
101
- code into the bundle: `useToolResult<InferToolOutput<typeof getQuote>>(…)`
102
- for the result, `useToolCallStart<InferToolInput<typeof getQuote>>(…)` for
103
- the arguments.
96
+ `useToolCallStart` is the same hook for the other end of the call — the pending
97
+ invocation and its arguments, for a spinner rather than a value. Either one
98
+ takes the tool's own shape as a type argument, derived from the tool module by a
99
+ **type-only** import that is erased and so pulls no server code into the bundle:
100
+ `useToolResult<InferToolOutput<typeof getQuote>>(…)` for the result,
101
+ `useToolCallStart<InferToolInput<typeof getQuote>>(…)` for the arguments.
104
102
 
105
103
  ### Client `client.tsx`
106
104
 
@@ -134,11 +132,11 @@ mountClient({
134
132
  });
135
133
  ```
136
134
 
137
- The type argument above restates a shape the agent already knows. Move the
138
- slot and its projection into a `shared.ts` both ends import, pass the
139
- projection itself — `useAgentState(deskProjection)` — and the state is typed
140
- from the projection and the pre-first-push frame derived from it, so there is
141
- nothing to restate and no branch for the first render.
135
+ The type argument above restates a shape the agent already knows. Move the slot
136
+ and its projection into a `shared.ts` both ends import, pass the projection
137
+ itself — `useAgentState(deskProjection)` — and the state is typed from the
138
+ projection and the pre-first-push frame derived from it, so there is nothing to
139
+ restate and no branch for the first render.
142
140
 
143
141
  Pass `component` instead of `sidebar` to replace the whole shell. It renders
144
142
  inside the same providers, so every hook here works in it unchanged.
@@ -146,8 +144,8 @@ inside the same providers, so every hook here works in it unchanged.
146
144
  ## A workflow app
147
145
 
148
146
  `mountPage()` mounts a form over the agent's workflows and installs no session.
149
- `<WorkflowFields>` renders one control per scalar property of the workflow's
150
- own input schema, so adding a field to the schema adds it to the page:
147
+ `<WorkflowFields>` renders one control per scalar property of the workflow's own
148
+ input schema, so adding a field to the schema adds it to the page:
151
149
 
152
150
  ```tsx
153
151
  import "@alexkroman1/aai-ui/styles.css";
@@ -183,11 +181,10 @@ function App() {
183
181
  mountPage({ name: "Digest", component: App });
184
182
  ```
185
183
 
186
- Naming the workflow's def — `useWorkflowSubmit<typeof digest>("digest")`, off
187
- a **type-only** import of `agent.ts` — is what makes `submit()` take the
188
- declared input and `run.status === "completed"` narrow to a typed
189
- `run.output`. The import is erased, so it pulls no server code into the
190
- bundle.
184
+ Naming the workflow's def — `useWorkflowSubmit<typeof digest>("digest")`, off a
185
+ **type-only** import of `agent.ts` — is what makes `submit()` take the declared
186
+ input and `run.status === "completed"` narrow to a typed `run.output`. The
187
+ import is erased, so it pulls no server code into the bundle.
191
188
 
192
189
  ## What is in the package
193
190
 
@@ -205,47 +202,46 @@ handle each returns (`ClientConfig`, `ClientHandle`, `PageConfig`,
205
202
  `useSessionError()` and `useSessionActions()` as the narrow reads a custom
206
203
  chrome repeats; `useUserTranscript()` for the caller's in-progress turn, which
207
204
  keeps `null` (silent) and `""` (speech, no words yet) apart; `useConversation()`
208
- for the interleaved transcript with nothing rendered. `createBrowserSession()` is
209
- the same session as a plain store with an immutable snapshot per change, for a
210
- non-React client. `SessionSnapshot`, `AgentState`, `ChatMessage`,
205
+ for the interleaved transcript with nothing rendered. `createBrowserSession()`
206
+ is the same session as a plain store with an immutable snapshot per change, for
207
+ a non-React client. `SessionSnapshot`, `AgentState`, `ChatMessage`,
211
208
  `ToolCallInfo`, `SessionError` and `SessionErrorCode` come with it.
212
209
 
213
210
  **What the agent pushes** — `useAgentState(slot.projected)` (that slot's entry
214
211
  in the agent's `syncState`; `selectAgentState(slot)` for `useSessionSelector`),
215
212
  `useToolResult()` / `useToolCallStart()` (tool calls as they run), and
216
- `useEvent()` (custom events from `ctx.send`, and the one to prefer in new
217
- code over reading tool results).
213
+ `useEvent()` (custom events from `ctx.send`, and the one to prefer in new code
214
+ over reading tool results).
218
215
 
219
216
  **Chat chrome** — `ChatView` is the whole surface; `ConsoleShell`,
220
217
  `MessageList`, `Controls`, `Markdown`, `ToolCallRow`, `SessionErrorBanner`,
221
- `StartScreen`, `SidebarLayout`, `AutoScroll`, `BulletList`, `Facts` and
222
- `Button` are its parts, exported so a custom chrome reuses them rather than
223
- approximating them. `AutoScroll` is the one to reach for directly: it is the
224
- only scroll-pinning implementation here, and it needs a **bounded height**.
218
+ `StartScreen`, `SidebarLayout`, `AutoScroll`, `BulletList`, `Facts` and `Button`
219
+ are its parts, exported so a custom chrome reuses them rather than approximating
220
+ them. `AutoScroll` is the one to reach for directly: it is the only
221
+ scroll-pinning implementation here, and it needs a **bounded height**.
225
222
  `AGENT_STATE_LABELS` and `WORKFLOW_STATUS_LABELS` are the default state words,
226
223
  so a chrome overrides the one term it has a better word for.
227
224
 
228
225
  **Forms** — `Form` collects typed values off the DOM on submit. `Field`,
229
226
  `TextField`, `NumberField`, `TextAreaField`, `SelectField`, `CheckboxField`,
230
- `FileField` and `SubmitButton` are the controls; `WorkflowFields` generates
231
- them from a schema. A plain `<input name="x">` works identically.
232
-
233
- **Workflows** — `createWorkflowApi()` is the client;
234
- `useWorkflowSubmit()` / `useWorkflowStream()` (start one and watch it),
235
- `useWorkflowRun()` (watch one by id), `useWorkflowRuns()` (the history),
236
- `useWorkflowProgress()` (what a run has written), `useWorkflows()` (the
237
- listing), `useDownloadUrl()` (an upload a run produced, as a URL a DOM element
238
- accepts), `useRunKey()` (the storage-backed key a submission is recovered by).
239
- `<WorkflowProgress>` and `<UploadProgressBar>` are the
240
- rendered halves. `WorkflowRun`, `WorkflowSummary`, `WorkflowInputOf`,
227
+ `FileField` and `SubmitButton` are the controls; `WorkflowFields` generates them
228
+ from a schema. A plain `<input name="x">` works identically.
229
+
230
+ **Workflows** — `createWorkflowApi()` is the client; `useWorkflowSubmit()` /
231
+ `useWorkflowStream()` (start one and watch it), `useWorkflowRun()` (watch one by
232
+ id), `useWorkflowRuns()` (the history), `useWorkflowProgress()` (what a run has
233
+ written), `useWorkflows()` (the listing), `useDownloadUrl()` (an upload a run
234
+ produced, as a URL a DOM element accepts), `useRunKey()` (the storage-backed key
235
+ a submission is recovered by). `<WorkflowProgress>` and `<UploadProgressBar>`
236
+ are the rendered halves. `WorkflowRun`, `WorkflowSummary`, `WorkflowInputOf`,
241
237
  `WorkflowOutputOf` and `isTerminal()` are the vocabulary.
242
238
 
243
239
  **Theme** — `useTheme()` and `ClientTheme`.
244
240
 
245
241
  ## Other subpaths
246
242
 
247
- The root export is the whole client API. Two subpaths sit beside it, neither
248
- of them something a `client.tsx` reaches for:
243
+ The root export is the whole client API. Two subpaths sit beside it, neither of
244
+ them something a `client.tsx` reaches for:
249
245
 
250
246
  | Subpath | Reach for it when |
251
247
  | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@@ -31,8 +31,4 @@ type SchemaOf<O extends Record<string, unknown>> = {
31
31
  };
32
32
  /** A workflow taking `I` and answering `O`. */
33
33
  export type TestWorkflow<I extends Record<string, unknown> = Record<string, unknown>, O = unknown> = WorkflowDef<SchemaOf<I>, O>;
34
- /** The shape most specs here need: one `recording` upload id, an unknown result. */
35
- export type UploadWorkflow = TestWorkflow<{
36
- recording: unknown;
37
- }>;
38
34
  export {};
@@ -1 +1 @@
1
- import{a as e,i as t,t as n}from"./index-BQURVARl.js";var r={echoCancellation:!0,noiseSuppression:!1,autoGainControl:!1,voiceIsolation:!1};function i(e,t,n){if(e!==t)throw Error(`Browser refused the ${n} sample rate: asked for ${t} Hz, got ${e} Hz`)}function a(e){let t=Error(`Audio ${e} worklet crashed`);return console.error(`[aai-ui]`,t.message),t}function o(e){e.then(e=>{for(let t of e.getTracks())t.stop()}).catch(()=>{})}function s(e,t,n){let r=new AudioWorkletNode(e,`capture-processor`,{channelCount:1,channelCountMode:`explicit`}),i=null;return r.port.onmessage=e=>{let r=e.data;r.event===`chunk`&&r.buffer?t(r.buffer):r.event===`silent`?n?.():r.event===`stopped`&&(i?.(),i=null)},{node:r,start(){r.port.postMessage({event:`start`})},stop(){let{promise:e,resolve:t}=Promise.withResolvers(),n=setTimeout(t,250);return i=()=>{clearTimeout(n),t()},r.port.postMessage({event:`stop`}),e}}}async function c(e){let{sampleRate:t,captureWorkletSrc:n,maxSeconds:a}=e,c=new AudioContext({sampleRate:t,latencyHint:`interactive`}),l=navigator.mediaDevices.getUserMedia({audio:{deviceId:{ideal:`default`},...r}}),u;try{[u]=await Promise.all([l,c.resume(),c.audioWorklet.addModule(n)]),i(c.sampleRate,t,`capture`)}catch(e){throw o(l),await c.close().catch(()=>{}),e}let d=Math.round(t*a)*2,f=[],p=0,m=!1,h=null,g=c.createMediaStreamSource(u),_=s(c,e=>{if(h){h.onChunk(e);return}for(f.push(e),p+=e.byteLength;p>d&&f.length>1;)p-=f.shift()?.byteLength??0},()=>{h?h.onSilent?.():m=!0});g.connect(_.node),_.start();let v=()=>{let e=f;return f=[],p=0,e},y=!1,b=async()=>{y||(y=!0,g.disconnect(),_.node.disconnect(),await c.close().catch(e=>{console.warn(`AudioContext close failed:`,e)}))};return{sampleRate:t,stream:u,ctx:c,handOff(e){h=e;let t=v();return t.length>0&&e.onBuffered(t),m&&e.onSilent?.(),{mic:g,capture:_}},async detach(){return await _.stop(),await b(),{chunks:v(),sampleRate:t}},async close(){y||await _.stop();for(let e of u.getTracks())e.stop();await b()}}}function l(e){let t=new Int16Array(e.length);for(let n=0;n<e.length;n++){let r=Math.max(-1,Math.min(1,e[n]??0));t[n]=r<0?r*32768:r*32767}return t.buffer}async function u(e,t,r){let i=e.reduce((e,t)=>e+t.byteLength/2,0);if(i===0)return[];if(t===r)return e;try{let a=Math.round(i*r/t),o=new OfflineAudioContext(1,a,r),s=o.createBuffer(1,i,t),c=s.getChannelData(0),u=0;for(let t of e)for(let e of new Int16Array(t))c[u++]=e/32768;let d=o.createBufferSource();d.buffer=s,d.connect(o.destination),d.start();let f=(await o.startRendering()).getChannelData(0),p=Math.max(1,Math.round(r*n)),m=[];for(let e=0;e<f.length;e+=p)m.push(l(f.subarray(e,e+p)));return m}catch(e){return console.warn(`[aai-ui] pre-connect audio dropped: resample failed`,e),[]}}async function d(e,t,n){let r=e.createMediaStreamSource(t),i=s(e,n.onMicData,n.onMicSilent);if(r.connect(i.node),n.buffered){let{chunks:t,sampleRate:r}=n.buffered,i=await u(t,r,e.sampleRate);i.length>0&&n.onBuffered(i)}return i.start(),{mic:r,capture:i}}async function f(n){let{sttSampleRate:s,ttsSampleRate:c,captureWorkletSrc:l,playbackWorkletSrc:u,onMicData:f,onError:p,onPlaybackStats:m,onPlaybackProgress:h,onMicSilent:g,preConnect:_}=n,v=n.onPreConnectAudio??(e=>{for(let t of e)f(t)}),y=_?.sampleRate===s?_:null,b=_&&!y?await _.detach():null,x=new AudioContext({sampleRate:c,latencyHint:`playback`}),S=!y&&s===c,C=y?.ctx??(S?x:new AudioContext({sampleRate:s,latencyHint:`interactive`}));async function w(){let e=S?[x]:[x,C];await Promise.all(e.map(e=>e.close().catch(e=>{console.warn(`AudioContext close failed:`,e)})))}let T=_?Promise.resolve(_.stream):navigator.mediaDevices.getUserMedia({audio:{deviceId:{ideal:`default`},...r}}),E;try{[E]=await Promise.all([T,x.resume(),C.resume(),y?void 0:C.audioWorklet.addModule(l),x.audioWorklet.addModule(u)]),i(C.sampleRate,s,`capture`),i(x.sampleRate,c,`playback`)}catch(e){throw o(T),await w(),e}let{mic:D,capture:O}=y?y.handOff({onBuffered:v,onChunk:f,onSilent:g}):await d(C,E,{onMicData:f,onMicSilent:g,buffered:b,onBuffered:v});O.node.onprocessorerror=()=>p?.(a(`capture`));let k=null,A=0,j=null,M=new AbortController;function N(){let e=j;j=null,e?.settle()}function P(e){e.stats&&e.stats.concealedSamples>0&&m?.(e.stats),e.reason!==`interrupt`&&(j===null||e.turn===j.turn)&&N()}function F(){if(k)return k;let e=new AudioWorkletNode(x,`playback-processor`);return e.connect(x.destination),e.port.onmessage=e=>{e.data.event===`stop`?P(e.data):e.data.event===`progress`&&h?.(e.data.bufferedMs)},e.onprocessorerror=()=>{let e=a(`playback`);N(),p?.(e)},k=e,e}let I={enqueue(e){M.signal.aborted||e.byteLength!==0&&F().port.postMessage({event:`write`,buffer:new Uint8Array(e)},[e])},done(){if(!k)return Promise.resolve();let n=++A;if(k.port.postMessage({event:`done`,turn:n}),x.state!==`running`)return N(),Promise.resolve();let{promise:r,resolve:i}=Promise.withResolvers();N();let a=()=>{clearInterval(o),clearTimeout(s),j?.settle===a&&(j=null),i()},o=setInterval(()=>{x.state!==`running`&&a()},e),s=setTimeout(a,t);return j={turn:n,settle:a},r},flush(){k&&(N(),k.port.postMessage({event:`interrupt`}))},async close(){if(!M.signal.aborted){M.abort(),await O.stop(),D.disconnect(),O.node.disconnect(),k&&k.disconnect();for(let e of E.getTracks())e.stop();await w()}},async[Symbol.asyncDispose](){await I.close()}};return I}export{f as createVoiceIO,c as openPreConnectCapture};
1
+ import{a as e,i as t,t as n}from"./index-DdRGAZxZ.js";var r={echoCancellation:!0,noiseSuppression:!1,autoGainControl:!1,voiceIsolation:!1};function i(e,t,n){if(e!==t)throw Error(`Browser refused the ${n} sample rate: asked for ${t} Hz, got ${e} Hz`)}function a(e){let t=Error(`Audio ${e} worklet crashed`);return console.error(`[aai-ui]`,t.message),t}function o(e){e.then(e=>{for(let t of e.getTracks())t.stop()}).catch(()=>{})}function s(e,t,n){let r=new AudioWorkletNode(e,`capture-processor`,{channelCount:1,channelCountMode:`explicit`}),i=null;return r.port.onmessage=e=>{let r=e.data;r.event===`chunk`&&r.buffer?t(r.buffer):r.event===`silent`?n?.():r.event===`stopped`&&(i?.(),i=null)},{node:r,start(){r.port.postMessage({event:`start`})},stop(){let{promise:e,resolve:t}=Promise.withResolvers(),n=setTimeout(t,250);return i=()=>{clearTimeout(n),t()},r.port.postMessage({event:`stop`}),e}}}async function c(e){let{sampleRate:t,captureWorkletSrc:n,maxSeconds:a}=e,c=new AudioContext({sampleRate:t,latencyHint:`interactive`}),l=navigator.mediaDevices.getUserMedia({audio:{deviceId:{ideal:`default`},...r}}),u;try{[u]=await Promise.all([l,c.resume(),c.audioWorklet.addModule(n)]),i(c.sampleRate,t,`capture`)}catch(e){throw o(l),await c.close().catch(()=>{}),e}let d=Math.round(t*a)*2,f=[],p=0,m=!1,h=null,g=c.createMediaStreamSource(u),_=s(c,e=>{if(h){h.onChunk(e);return}for(f.push(e),p+=e.byteLength;p>d&&f.length>1;)p-=f.shift()?.byteLength??0},()=>{h?h.onSilent?.():m=!0});g.connect(_.node),_.start();let v=()=>{let e=f;return f=[],p=0,e},y=!1,b=async()=>{y||(y=!0,g.disconnect(),_.node.disconnect(),await c.close().catch(e=>{console.warn(`AudioContext close failed:`,e)}))};return{sampleRate:t,stream:u,ctx:c,handOff(e){h=e;let t=v();return t.length>0&&e.onBuffered(t),m&&e.onSilent?.(),{mic:g,capture:_}},async detach(){return await _.stop(),await b(),{chunks:v(),sampleRate:t}},async close(){y||await _.stop();for(let e of u.getTracks())e.stop();await b()}}}function l(e){let t=new Int16Array(e.length);for(let n=0;n<e.length;n++){let r=Math.max(-1,Math.min(1,e[n]??0));t[n]=r<0?r*32768:r*32767}return t.buffer}async function u(e,t,r){let i=e.reduce((e,t)=>e+t.byteLength/2,0);if(i===0)return[];if(t===r)return e;try{let a=Math.round(i*r/t),o=new OfflineAudioContext(1,a,r),s=o.createBuffer(1,i,t),c=s.getChannelData(0),u=0;for(let t of e)for(let e of new Int16Array(t))c[u++]=e/32768;let d=o.createBufferSource();d.buffer=s,d.connect(o.destination),d.start();let f=(await o.startRendering()).getChannelData(0),p=Math.max(1,Math.round(r*n)),m=[];for(let e=0;e<f.length;e+=p)m.push(l(f.subarray(e,e+p)));return m}catch(e){return console.warn(`[aai-ui] pre-connect audio dropped: resample failed`,e),[]}}async function d(e,t,n){let r=e.createMediaStreamSource(t),i=s(e,n.onMicData,n.onMicSilent);if(r.connect(i.node),n.buffered){let{chunks:t,sampleRate:r}=n.buffered,i=await u(t,r,e.sampleRate);i.length>0&&n.onBuffered(i)}return i.start(),{mic:r,capture:i}}async function f(n){let{sttSampleRate:s,ttsSampleRate:c,captureWorkletSrc:l,playbackWorkletSrc:u,onMicData:f,onError:p,onPlaybackStats:m,onPlaybackProgress:h,onMicSilent:g,preConnect:_}=n,v=n.onPreConnectAudio??(e=>{for(let t of e)f(t)}),y=_?.sampleRate===s?_:null,b=_&&!y?await _.detach():null,x=new AudioContext({sampleRate:c,latencyHint:`playback`}),S=!y&&s===c,C=y?.ctx??(S?x:new AudioContext({sampleRate:s,latencyHint:`interactive`}));async function w(){let e=S?[x]:[x,C];await Promise.all(e.map(e=>e.close().catch(e=>{console.warn(`AudioContext close failed:`,e)})))}let T=_?Promise.resolve(_.stream):navigator.mediaDevices.getUserMedia({audio:{deviceId:{ideal:`default`},...r}}),E;try{[E]=await Promise.all([T,x.resume(),C.resume(),y?void 0:C.audioWorklet.addModule(l),x.audioWorklet.addModule(u)]),i(C.sampleRate,s,`capture`),i(x.sampleRate,c,`playback`)}catch(e){throw o(T),await w(),e}let{mic:D,capture:O}=y?y.handOff({onBuffered:v,onChunk:f,onSilent:g}):await d(C,E,{onMicData:f,onMicSilent:g,buffered:b,onBuffered:v});O.node.onprocessorerror=()=>p?.(a(`capture`));let k=null,A=0,j=null,M=new AbortController;function N(){let e=j;j=null,e?.settle()}function P(e){e.stats&&e.stats.concealedSamples>0&&m?.(e.stats),e.reason!==`interrupt`&&(j===null||e.turn===j.turn)&&N()}function F(){if(k)return k;let e=new AudioWorkletNode(x,`playback-processor`);return e.connect(x.destination),e.port.onmessage=e=>{e.data.event===`stop`?P(e.data):e.data.event===`progress`&&h?.(e.data.bufferedMs)},e.onprocessorerror=()=>{let e=a(`playback`);N(),p?.(e)},k=e,e}let I={enqueue(e){M.signal.aborted||e.byteLength!==0&&F().port.postMessage({event:`write`,buffer:new Uint8Array(e)},[e])},done(){if(!k)return Promise.resolve();let n=++A;if(k.port.postMessage({event:`done`,turn:n}),x.state!==`running`)return N(),Promise.resolve();let{promise:r,resolve:i}=Promise.withResolvers();N();let a=()=>{clearInterval(o),clearTimeout(s),j?.settle===a&&(j=null),i()},o=setInterval(()=>{x.state!==`running`&&a()},e),s=setTimeout(a,t);return j={turn:n,settle:a},r},flush(){k&&(N(),k.port.postMessage({event:`interrupt`}))},async close(){if(!M.signal.aborted){M.abort(),await O.stop(),D.disconnect(),O.node.disconnect(),k&&k.disconnect();for(let e of E.getTracks())e.stop();await w()}},async[Symbol.asyncDispose](){await I.close()}};return I}export{f as createVoiceIO,c as openPreConnectCapture};
@@ -1,4 +1,4 @@
1
- import{n as e,t}from"./index-BQURVARl.js";import{t as n}from"./_module-url-BX0RuRU2.js";var r=`
1
+ import{n as e,t}from"./index-DdRGAZxZ.js";import{t as n}from"./_module-url-BX0RuRU2.js";var r=`
2
2
  class CaptureProcessor extends AudioWorkletProcessor {
3
3
  constructor(options) {
4
4
  super();
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./capture-processor-BUABoo3_.js","./_module-url-BX0RuRU2.js","./playback-processor-ABOa11j0.js"])))=>i.map(i=>d[i]);
2
- var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,o)=>(o=n==null?{}:e(i(n)),c(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var u=.1,d=1500,f=.001,p=1e3,m=65e3,h=1048576,g=1e4,_=2e3,v=15e3,y=/^[A-Za-z0-9_-]{1,64}$/,b=16e3,x=1e5,ee=1e4,S=192e3;function C(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function w(e){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=r);return t}function T(e){try{return JSON.parse(e)}catch{}}var te=200,E=`…`;function ne(e){return e.length<=te?e:`${e.slice(0,te)}${E}`}function re(e,t,n){let r=n===void 0?`${e}`:`${n} ${e}`;return t?`${r}: ${ne(t)}`:r}async function ie(e,t){let n=await e.text().catch(()=>``),r=T(n);if(r===void 0)throw Error(re(e.status,n,t));return r}var ae={brands:{clientTool:`@alexkroman1/aai.clientTool`,clientToolCall:`@alexkroman1/aai.clientTool.call`,routeResponse:`@alexkroman1/aai.routeResponse`,routeError:`@alexkroman1/aai.routeError`,stepError:`@alexkroman1/aai.stepError`,keylessSynthesizer:`@alexkroman1/aai.speechSynthesizer.keyless`},slots:{channelOutbox:`@alexkroman1/aai.channelOutbox`,clientEventFeed:`@alexkroman1/aai-runtime.clientEventFeed`,clientInboxDefaults:`@alexkroman1/aai.clientInboxDefaults`,clientTranscriptReader:`@alexkroman1/aai.clientTranscriptReader`,metricsSinks:`@alexkroman1/aai-runtime.metricsSinks`,runtimeInstances:`@alexkroman1/aai-runtime.instances`,sessionCalls:`@alexkroman1/aai.sessionCalls`,sessionClients:`@alexkroman1/aai.sessionClients`,sessionEnders:`@alexkroman1/aai.sessionEnders`,sessionLocations:`@alexkroman1/aai.sessionLocations`,sessionPhones:`@alexkroman1/aai.sessionPhones`,speechSynthesizer:`@alexkroman1/aai.speechSynthesizer`,stepDelegate:`@alexkroman1/aai.stepDelegate`,stepEnv:`@alexkroman1/aai.stepEnv`,stepFetch:`@alexkroman1/aai.stepFetch`,stepInfoReader:`@alexkroman1/aai.stepInfoReader`,stepMcp:`@alexkroman1/aai.stepMcp`,stepNotifyClient:`@alexkroman1/aai.stepNotifyClient`,stepReporter:`@alexkroman1/aai.stepReporter`,stepWebhookUrl:`@alexkroman1/aai.stepWebhookUrl`,uploadReader:`@alexkroman1/aai.uploadReader`}};function oe(e){let t=Symbol.for(ae.slots[e]);return{get:()=>Reflect.get(globalThis,t),set:e=>{e===void 0?Reflect.deleteProperty(globalThis,t):Reflect.set(globalThis,t,e)}}}function se(e){return typeof e.get==`function`}function ce(e){let t=(se(e)?e:e.headers).get(`retry-after`)?.trim();if(!t)return;if(/^\d+$/.test(t)){let e=Number(t);return Number.isFinite(e)?new Date(Date.now()+e*1e3):void 0}let n=Date.parse(t);if(!Number.isNaN(n))return n>Date.now()?new Date(n):void 0}var le=4;function ue(e){return de(e,[],0)}function de(e,t,n){return e.map(e=>fe(e,t,n)).join(`; `)}function fe(e,t,n){let r=[...t,...e.path??[]],i=r.map(e=>String(typeof e==`object`&&e?e.key:e)).join(`.`);if(n<le){let t=pe(e);if(t)return[...new Set(t.map(e=>de(e,r,n+1)))].join(` or `);let a=me(e);if(a){let t=de(a,[],n+1),r=t?`${e.message} — ${t}`:e.message;return i?`${i}: ${r}`:r}}return i?`${i}: ${e.message}`:e.message}function pe(e){if(!Array.isArray(e.errors))return;let t=e.errors,n=[];for(let e of t){if(!Array.isArray(e))continue;let t=e.filter(he);t.length>0&&n.push(t)}return n.length>0?n:void 0}function me(e){if(!Array.isArray(e.issues))return;let t=e.issues.filter(he);return t.length>0?t:void 0}function he(e){return C(e)&&typeof e.message==`string`}var ge=[`B`,`KB`,`MB`,`GB`,`TB`],_e=1024;function ve(e){let t=Number.isFinite(e)?Math.max(0,e):0,n=0;for(;t>=_e&&n<ge.length-1;)t/=_e,n+=1;let r=ye(t,n);return Number.parseFloat(r)>=_e&&n<ge.length-1&&(n+=1,r=ye(t/_e,n)),`${r} ${ge[n]}`}function ye(e,t){return t<=1?String(Math.round(e)):e.toFixed(1)}function be(e){return xe(e,new Set)??De(e)}var D=new Set([`fetch failed`,`failed to fetch`]),O=`Unknown error`;function xe(e,t){if(C(e)){if(t.has(e))return;t.add(e)}let n=ke(e);if(n!==void 0)return ue(n);let r=Ce(e,t);if(r!==void 0)return r;let i=Se(e);if(i!==void 0&&!D.has(i.toLowerCase()))return i;let a=Te(e,t);return a===void 0?i:i===void 0||a.includes(i)?a:`${i}: ${a}`}function Se(e){if(!C(e)||typeof e.message!=`string`)return;let t=e.message.trim();return t===``?void 0:t}function Ce(e,t){if(!C(e)||typeof e.statusCode!=`number`||!Number.isFinite(e.statusCode))return;let n=Ee(e.url),r=`HTTP ${e.statusCode}${n===void 0?``:` from ${n}`}`,i=Se(e)??we(e.responseBody)??we(e.data)??Te(e,t);return i===void 0?r:`${i} (${r})`}function we(e){if(typeof e==`string`){let t=e.trim();return t===``?void 0:we(T(t))??ne(t)}if(C(e))for(let t of[e.error,e.message,e.detail]){let e=typeof t==`string`?t.trim():Se(t)??``;if(e!==``)return e}}function Te(e,t){if(!C(e))return;if(e.cause!==void 0&&e.cause!==null){let n=xe(e.cause,t);if(n!==void 0)return n}if(!Array.isArray(e.errors))return;let n=e.errors.map(e=>xe(e,t)).filter(e=>e!==void 0);return n.length===0?void 0:n.join(`; `)}function Ee(e){if(typeof e==`string`&&e!==``)try{return new URL(e).host||void 0}catch{return}}function De(e){if(C(e)&&typeof e.name==`string`&&e.name.trim()!==``)return`${e.name.trim()} (no message)`;let t=Oe(e);return t===``||t===`[object Object]`?O:t}function Oe(e){try{return String(e).trim()}catch{return``}}function ke(e){if(!(C(e)&&Array.isArray(e.issues))||e.issues.length===0)return;let t=e.issues;return t.every(e=>C(e)&&typeof e.message==`string`)?t:void 0}async function Ae(e,t){let n=await e.text().catch(()=>``),r=T(n);if(C(r)){let{error:e}=r;if(typeof e==`string`&&e!==``)return e}return re(e.status,n,t)}function je(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function Me(e,t=`|`){return e.map(e=>rt(e)).join(t)}function Ne(e,t){return typeof t==`bigint`?t.toString():t}var Pe=class{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;return e!==void 0&&(this._value=e(),this._getter=void 0),this._value}};function Fe(e){return new Pe(e)}function Ie(e){return e==null}function Le(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function Re(e,t){let n=e/t,r=Math.round(n),i=4*2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r)<i?0:n-r}function ze(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function Be(e){let t=Object.getOwnPropertyDescriptor(e,`shape`);return t?.get?t.get.raw:t?.value}function Ve(e){return Be(e._zod.def)??e._zod.def.shape}function He(e,t,n){Object.defineProperty(e,t,{get(){let e=n();return ze(this,t,e),e},enumerable:!0,configurable:!0})}function Ue(e,t,n){t in e?ze(e,t,n):e[t]=n}function We(e,t,n,r){let i=Ve(t);for(let a of n){let n=Object.getOwnPropertyDescriptor(i,a);n.enumerable&&(n.get?He(e,a,()=>{let e=t._zod.def.shape[a];return r?r(e,a):e}):Ue(e,a,r?r(n.value,a):n.value))}}function Ge(e,t){for(let n of Reflect.ownKeys(t)){let r=Object.getOwnPropertyDescriptor(t,n);r.enumerable&&(r.get?He(e,n,()=>t[n]):Ue(e,n,r.value))}}function Ke(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function qe(e){return JSON.stringify(e)}function Je(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var Ye=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function Xe(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var Ze=Fe(()=>{if(Wt.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function Qe(e){if(Xe(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return Xe(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function $e(e){return Qe(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var et=new Set([`string`,`number`,`symbol`]);function tt(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function nt(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function k(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function rt(e){return typeof e==`bigint`?e.toString()+`n`:typeof e==`string`?`"${e}"`:`${e}`}function it(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout===`optional`)}var at={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},ot={int64:[BigInt(`-9223372036854775808`),BigInt(`9223372036854775807`)],uint64:[BigInt(0),BigInt(`18446744073709551615`)]};function st(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);let i={};return We(i,e,ct(e,t)),nt(e,Ke(n,{shape:i,checks:[]}))}function ct(e,t){let n=Ve(e),r=[];for(let e of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(n,e)?.enumerable)throw Error(`Unrecognized key: "${String(e)}"`);t[e]&&r.push(e)}return r}function lt(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);let i=new Set(ct(e,t)),a={};return We(a,e,Reflect.ownKeys(Ve(e)).filter(e=>!i.has(e))),nt(e,Ke(n,{shape:a,checks:[]}))}function ut(e,t){if(!Qe(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=Ve(e);for(let e of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return nt(e,Ke(e._zod.def,{shape:dt(e,t)}))}function dt(e,t){let n={};return We(n,e,Reflect.ownKeys(Ve(e))),Ge(n,t),n}function ft(e,t){if(!Qe(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return nt(e,Ke(e._zod.def,{shape:dt(e,t)}))}function pt(e,t){if(!t?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);let n={};return We(n,e,Reflect.ownKeys(Ve(e))),We(n,t,Reflect.ownKeys(Ve(t))),nt(e,Ke(e._zod.def,{shape:n,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function mt(e,t,n,r=`partial`){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(`.${r}() cannot be used on object schemas containing refinements`);let a=n?new Set(ct(t,n)):void 0,o={};return We(o,t,Reflect.ownKeys(Ve(t)),e&&((t,n)=>a&&!a.has(n)?t:new e({type:`optional`,innerType:t}))),nt(t,Ke(t._zod.def,{shape:o,checks:[]}))}function ht(e,t,n){let r=n?new Set(ct(t,n)):void 0,i={};return We(i,t,Reflect.ownKeys(Ve(t)),(t,n)=>r&&!r.has(n)?t:new e({type:`nonoptional`,innerType:t})),nt(t,Ke(t._zod.def,{shape:i}))}function gt(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function _t(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function vt(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function yt(e){return typeof e==`string`?e:e?.message}function bt(e,t,n){var r;for(let i=t;i<e.length;i++)(r=e[i]).schema??(r.schema=n)}function xt(e,t,n){var r;let i=e.inst?._zod?.traits;i?.has(`$ZodType`)&&(i.has(`$ZodCheck`)?(r=e).schema??(r.schema=e.inst):e.schema=e.inst);let a=e.schema===e.inst?void 0:e.schema?._zod.def?.error,o=e.message?e.message:yt(e.inst?._zod.def?.error?.(e))??yt(a?.(e))??yt(t?.error?.(e))??yt(n.customError?.(e))??yt(n.localeError?.(e))??`Invalid input`,s={};for(let t of Object.keys(e))t!==`inst`&&t!==`schema`&&t!==`continue`&&t!==`input`&&t!==`__proto__`&&(s[t]=e[t]);return s.path??=[],s.message=o,t?.reportInput&&(s.input=e.input),s}var St=/[\uD800-\uDBFF]/;function Ct(e){let t=e.length;if(!St.test(e))return t;let n=t;for(let r=0;r<t-1;r++)(e.charCodeAt(r)&64512)==55296&&(e.charCodeAt(r+1)&64512)==56320&&(n--,r++);return n}function wt(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function Tt(e){let t=typeof e;switch(t){case`number`:return Number.isNaN(e)?`nan`:`number`;case`object`:{if(e===null)return`null`;if(Array.isArray(e))return`array`;let t=e;if(t&&Object.getPrototypeOf(t)!==Object.prototype&&`constructor`in t&&t.constructor)return t.constructor.name}}return t}function Et(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}function Dt(e,t){for(let n in t){let r=Object.getOwnPropertyDescriptor(t,n);r.get?Object.defineProperty(e,n,{...r,enumerable:!1}):At(e,n,r.value)}}function A(e,t,n,r=!0){return Object.defineProperty(e,t,{configurable:!0,writable:!0,enumerable:r,value:n}),n}function Ot(e,t,n){return A(e,t,n,!1)}function kt(e,t){for(let n in e){let r=e[n];Object.defineProperty(t,n,{configurable:!0,enumerable:!0,get(){return A(this,n,r(this))},set(e){A(this,n,e)}})}return t}function At(e,t,n){Object.defineProperty(e,t,{configurable:!0,get(){return this==null?n:A(this,t,n.bind(this))},set(e){A(this,t,e)}})}function jt(e,t){let n=Object.getPrototypeOf(e);return t in n?void 0:n}var Mt,Nt=!1,Pt={configurable:!0,get(){Nt=!0}};function j(e,t,n){let r=Object.getPrototypeOf(e._zod);if(t in r&&Mt!==e._zod){Mt=void 0;return}Mt=e._zod,Object.defineProperty(r,t,{configurable:!0,get(){Object.defineProperty(this,t,Pt);let e=Nt;Nt=!1;try{let r=n(this);return Nt?delete this[t]:Object.defineProperty(this,t,{configurable:!0,writable:!0,value:r}),Nt||=e,r}catch(n){throw delete this[t],Nt||=e,n}},set(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:e})}})}function Ft(e,t,n,r){let i=jt(e,t);i&&Object.defineProperty(i,t,{configurable:!0,get(){let e={configurable:!0,writable:!0,enumerable:r,value:void 0};return Object.defineProperty(this,t,e),e.value=n(this),Object.defineProperty(this,t,e),e.value},set(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,enumerable:r,value:e})}})}var It=`~constantCatch`;function Lt(e){let t=()=>e;return t[It]=!0,t}var Rt,zt={value:void 0,enumerable:!1},Bt=`captureStackTrace`in Error?Error:null;function Vt(e){let t=Bt;if(t){let n=t.stackTraceLimit;if(typeof n==`number`){try{t.stackTraceLimit=0}catch{return Bt=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}function M(e,t,n,r){let i={};function a(e){this.def=e,this.constr=d,this.traits=new Set}a.prototype=i;let o=n,s=o&&new WeakSet;function c(n,r){if(!n._zod){zt.value=new a(r);try{Object.defineProperty(n,"_zod",zt)}finally{zt.value=void 0}}else if(n._zod.traits.has(e))return;if(n._zod.traits.add(e),t(n,r),s){let e=Object.getPrototypeOf(n),t=n._zod.constr.prototype,r=e;for(;r&&r!==t;)r=Object.getPrototypeOf(r);let i=r??e;s.has(i)||(s.add(i),Dt(i,o))}let i=d.prototype;for(let e in i)Object.prototype.hasOwnProperty.call(i,e)&&(e in n||(n[e]=i[e].bind(n)))}let l=r?.Parent??Object;class u extends l{}Object.defineProperty(u,"name",{value:e});function d(e){let t=r?.Parent?Vt(u):this;c(t,e);let n=t._zod.deferred;if(n){for(let e of n)e();t._zod.deferred=void 0}let i=globalThis.__zod_globalConfig?.postProcessor;return i&&i(t),t}return Object.defineProperty(d,"init",{value:c}),Object.defineProperty(d,Symbol.hasInstance,{value:t=>r?.Parent&&t instanceof r.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var Ht=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Ut=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(Rt=globalThis).__zod_globalConfig??(Rt.__zod_globalConfig={});var Wt=globalThis.__zod_globalConfig;function Gt(e){return e&&Object.assign(Wt,e),Wt}function Kt(){let e=this._zod;return e.message??=JSON.stringify(e.def,Ne,2),e.message}function qt(e){this._zod.message=e}var Jt={get:Kt,set:qt,enumerable:!0,configurable:!0},N={value:void 0,enumerable:!1},Yt=new WeakSet([Object.prototype,Error.prototype]),Xt=(e,t)=>{e.name=`$ZodError`,N.value=t,Object.defineProperty(e,"issues",N),N.value=void 0,Object.defineProperty(e,"message",Jt);let n=Object.getPrototypeOf(e);Yt.has(n)||(Yt.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){let e=()=>this.message;return Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0})}}))},Zt=M(`$ZodError`,Xt);M(`$ZodError`,Xt,void 0,{Parent:Error});function Qt(e,t,n){return Object.prototype.hasOwnProperty.call(e,t)||(t===`__proto__`?Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0}):e[t]=n()),e[t]}function $t(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?Qt(n,i.path[0],()=>[]).push(t(i)):r.push(t(i));return{formErrors:r,fieldErrors:n}}function en(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i<e.length;){let n=e[i],o=i===e.length-1;if(n===`_errors`){o&&r._errors.push(t(a)),i++;continue}Object.prototype.hasOwnProperty.call(r,n)||Object.defineProperty(r,n,{value:{_errors:[]},enumerable:!0,writable:!0,configurable:!0});let s=r[n];o&&s._errors.push(t(a)),r=s,i++}}}};return r(e),n}function tn(e,t){return{callee:t?.callee??e,Err:t?.Err}}var nn=e=>{let t=(n,r,i,a)=>{let o=i?{...i,async:!1}:{async:!1},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new Ht;if(s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>xt(e,o,Gt())));throw Ye(n,a?.callee??t),n}return s.value};return t},rn=e=>{let t=async(n,r,i,a)=>{let o=i?{...i,async:!0}:{async:!0},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise&&(s=await s),s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>xt(e,o,Gt())));throw Ye(n,a?.callee??t),n}return s.value};return t},an=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new Ht;return a.issues.length?on(e,a.issues,i):{success:!0,data:a.value}};function on(e,t,n){let r;return{success:!1,get error(){return r||(r=new e(t.map(e=>xt(e,n,Gt()))),t=void 0,n=void 0),r},set error(e){r=e,t=void 0,n=void 0}}}var sn=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?on(e,a.issues,i):{success:!0,data:a.value}},cn=Symbol.for(`zod.compile.invalid`),ln=Symbol.for(`zod.compile.fallback`),un=((e,t,n)=>{let r=e._zod.bag.validator;if(r!==void 0){if(r(t)!==cn)return!0;if(r.definite===!0&&n===void 0)return!1}return dn(e,t,n)});function dn(e,t,n){let r=n?{...n,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},i=e._zod.bag.fallbackRun,a;if(i?(r[ln]=!0,a=i({value:t,issues:[]},r)):a=e._zod.run({value:t,issues:[]},r),a instanceof Promise)throw new Ht;return a.issues.length===0}var fn=async(e,t,n)=>{let r=n?{...n,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},i=e._zod.run({value:t,issues:[]},r);return i instanceof Promise&&(i=await i),i.issues.length===0},pn=e=>{let t=nn(e),n=(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return t(e,r,o,tn(n,a))};return n},mn=e=>{let t=nn(e),n=(e,r,i,a)=>t(e,r,i,tn(n,a));return n},hn=e=>{let t=rn(e),n=async(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return await t(e,r,o,tn(n,a))};return n},gn=e=>{let t=rn(e),n=async(e,r,i,a)=>await t(e,r,i,tn(n,a));return n},_n=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return an(e)(t,n,i)},vn=e=>(t,n,r)=>an(e)(t,n,r),yn=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return sn(e)(t,n,i)},bn=e=>async(t,n,r)=>sn(e)(t,n,r),xn=/^[cC][0-9a-z]{6,}$/,Sn=/^[0-9a-z]+$/,Cn=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,wn=/^[0-9a-vA-V]{20}$/,Tn=/^[A-Za-z0-9]{27}$/,En=/^[a-zA-Z0-9_-]{21}$/;function Dn(e){return RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var On=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,kn=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,An=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,jn=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Mn=`^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$`;function Nn(){return new RegExp(Mn,`u`)}var Pn=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Fn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,In=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Ln=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Rn=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,zn=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/,Bn=/^https?$/,Vn=/^\+[1-9]\d{6,14}$/,Hn=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`;function Un(e){return RegExp(`^${e}$`)}var Wn=Un(Hn);function Gn(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Kn(e){return RegExp(`^${Gn(e)}$`)}function qn(e){let t=[`Z`];e.offset&&t.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let n=`${Gn({precision:e.precision,seconds:!0})}(?:${t.join(`|`)})`,r=e.local?`${n}|${Gn({precision:e.precision})}`:n;return RegExp(`^${Hn}T(?:${r})$`)}var Jn=/^[\s\S]{0,}$/,Yn=/^-?\d+$/,Xn=/^-?\d+(?:\.\d+)?$/,Zn=/^(?:true|false)$/i,Qn=/^null$/i,$n=/^[^A-Z]*$/,er=/^[^a-z]*$/,tr=M(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),nr=e=>{let t=e.value;return!Ie(t)&&t.length!==void 0},rr={number:`number`,bigint:`bigint`,object:`date`},ir=M(`$ZodCheckLessThan`,(e,t)=>{tr.init(e,t);let n=rr[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value<t.value)||r.issues.push({origin:rr[typeof r.value]??n,code:`too_big`,maximum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),ar=M(`$ZodCheckGreaterThan`,(e,t)=>{tr.init(e,t);let n=rr[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:rr[typeof r.value]??n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),or=M(`$ZodCheckMultipleOf`,(e,t)=>{tr.init(e,t),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):Re(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),sr=M(`$ZodCheckNumberFormat`,(e,t)=>{tr.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=at[t.format];e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}s<i&&o.issues.push({origin:`number`,input:s,code:`too_small`,minimum:i,inclusive:!0,inst:e,continue:!t.abort}),s>a&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),cr=M(`$ZodCheckMaxLength`,(e,t)=>{var n;tr.init(e,t),(n=e._zod.def).when??(n.when=nr),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>t.maximum?Ct(r):i)<=t.maximum)return;let a=wt(r);n.issues.push({origin:a,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),lr=M(`$ZodCheckMinLength`,(e,t)=>{var n;tr.init(e,t),(n=e._zod.def).when??(n.when=nr),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>=t.minimum&&i<t.minimum*2?Ct(r):i)>=t.minimum)return;let a=wt(r);n.issues.push({origin:a,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),ur=M(`$ZodCheckLengthEquals`,(e,t)=>{var n;tr.init(e,t),(n=e._zod.def).when??(n.when=nr),e._zod.check=n=>{let r=n.value,i=r.length,a=typeof r==`string`&&i>=t.length&&i<=t.length*2?Ct(r):i;if(a===t.length)return;let o=wt(r),s=a>t.length;n.issues.push({origin:o,...s?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),dr=M(`$ZodCheckStringFormat`,(e,t)=>{var n,r;tr.init(e,t),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),fr=M(`$ZodCheckRegex`,(e,t)=>{dr.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),pr=M(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=$n,dr.init(e,t)}),mr=M(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=er,dr.init(e,t)}),hr=M(`$ZodCheckIncludes`,(e,t)=>{tr.init(e,t);let n=tt(t.includes);t.pattern=new RegExp(typeof t.position==`number`?`^.{${t.position},}${n}`:n),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),gr=M(`$ZodCheckStartsWith`,(e,t)=>{tr.init(e,t);let n=RegExp(`^${tt(t.prefix)}.*`);t.pattern??=n,e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),_r=M(`$ZodCheckEndsWith`,(e,t)=>{tr.init(e,t);let n=RegExp(`.*${tt(t.suffix)}$`);t.pattern??=n,e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),vr=M(`$ZodCheckOverwrite`,(e,t)=>{tr.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),yr=class{constructor(e=[],t={}){this.content=[],this.indent=0,this.args=e,this.closed=t}indented(e){this.indent+=1;try{e(this)}finally{--this.indent}}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./capture-processor-X_vJUkv4.js","./_module-url-BX0RuRU2.js","./playback-processor-DdO-2G6m.js"])))=>i.map(i=>d[i]);
2
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,o)=>(o=n==null?{}:e(i(n)),c(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var u=.1,d=1500,f=.001,p=1e3,m=65e3,h=1048576,g=1e4,_=2e3,v=15e3,y=/^[A-Za-z0-9_-]{1,64}$/,b=16e3,x=1e5,ee=1e4,S=192e3;function C(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function w(e){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=r);return t}function T(e){try{return JSON.parse(e)}catch{}}var te=200,E=`…`;function ne(e){return e.length<=te?e:`${e.slice(0,te)}${E}`}function re(e,t,n){let r=n===void 0?`${e}`:`${n} ${e}`;return t?`${r}: ${ne(t)}`:r}async function ie(e,t){let n=await e.text().catch(()=>``),r=T(n);if(r===void 0)throw Error(re(e.status,n,t));return r}var ae={brands:{clientTool:`@alexkroman1/aai.clientTool`,clientToolCall:`@alexkroman1/aai.clientTool.call`,routeResponse:`@alexkroman1/aai.routeResponse`,routeError:`@alexkroman1/aai.routeError`,stepError:`@alexkroman1/aai.stepError`,keylessSynthesizer:`@alexkroman1/aai.speechSynthesizer.keyless`},slots:{channelOutbox:`@alexkroman1/aai.channelOutbox`,clientEventFeed:`@alexkroman1/aai-runtime.clientEventFeed`,clientInboxDefaults:`@alexkroman1/aai.clientInboxDefaults`,clientTranscriptReader:`@alexkroman1/aai.clientTranscriptReader`,metricsSinks:`@alexkroman1/aai-runtime.metricsSinks`,runtimeInstances:`@alexkroman1/aai-runtime.instances`,sessionCalls:`@alexkroman1/aai.sessionCalls`,sessionClients:`@alexkroman1/aai.sessionClients`,sessionEnders:`@alexkroman1/aai.sessionEnders`,sessionLocations:`@alexkroman1/aai.sessionLocations`,sessionPhones:`@alexkroman1/aai.sessionPhones`,speechSynthesizer:`@alexkroman1/aai.speechSynthesizer`,stepDelegate:`@alexkroman1/aai.stepDelegate`,stepEnv:`@alexkroman1/aai.stepEnv`,stepFetch:`@alexkroman1/aai.stepFetch`,stepInfoReader:`@alexkroman1/aai.stepInfoReader`,stepMcp:`@alexkroman1/aai.stepMcp`,stepNotifyClient:`@alexkroman1/aai.stepNotifyClient`,stepReporter:`@alexkroman1/aai.stepReporter`,stepWebhookUrl:`@alexkroman1/aai.stepWebhookUrl`,uploadReader:`@alexkroman1/aai.uploadReader`}};function oe(e){let t=Symbol.for(ae.slots[e]);return{get:()=>Reflect.get(globalThis,t),set:e=>{e===void 0?Reflect.deleteProperty(globalThis,t):Reflect.set(globalThis,t,e)}}}function se(e){return typeof e.get==`function`}function ce(e){let t=(se(e)?e:e.headers).get(`retry-after`)?.trim();if(!t)return;if(/^\d+$/.test(t)){let e=Number(t);return Number.isFinite(e)?new Date(Date.now()+e*1e3):void 0}let n=Date.parse(t);if(!Number.isNaN(n))return n>Date.now()?new Date(n):void 0}var le=4;function ue(e){return de(e,[],0)}function de(e,t,n){return e.map(e=>fe(e,t,n)).join(`; `)}function fe(e,t,n){let r=[...t,...e.path??[]],i=r.map(e=>String(C(e)?e.key:e)).join(`.`);if(n<le){let t=pe(e);if(t)return[...new Set(t.map(e=>de(e,r,n+1)))].join(` or `);let a=me(e);if(a){let t=de(a,[],n+1),r=t?`${e.message} — ${t}`:e.message;return i?`${i}: ${r}`:r}}return i?`${i}: ${e.message}`:e.message}function pe(e){if(!Array.isArray(e.errors))return;let t=e.errors,n=[];for(let e of t){if(!Array.isArray(e))continue;let t=e.filter(he);t.length>0&&n.push(t)}return n.length>0?n:void 0}function me(e){if(!Array.isArray(e.issues))return;let t=e.issues.filter(he);return t.length>0?t:void 0}function he(e){return C(e)&&typeof e.message==`string`}var ge=[`B`,`KB`,`MB`,`GB`,`TB`],_e=1024;function ve(e){let t=Number.isFinite(e)?Math.max(0,e):0,n=0;for(;t>=_e&&n<ge.length-1;)t/=_e,n+=1;let r=ye(t,n);return Number.parseFloat(r)>=_e&&n<ge.length-1&&(n+=1,r=ye(t/_e,n)),`${r} ${ge[n]}`}function ye(e,t){return t<=1?String(Math.round(e)):e.toFixed(1)}function be(e){return xe(e,new Set)??De(e)}var D=new Set([`fetch failed`,`failed to fetch`]),O=`Unknown error`;function xe(e,t){if(C(e)){if(t.has(e))return;t.add(e)}let n=ke(e);if(n!==void 0)return ue(n);let r=Ce(e,t);if(r!==void 0)return r;let i=Se(e);if(i!==void 0&&!D.has(i.toLowerCase()))return i;let a=Te(e,t);return a===void 0?i:i===void 0||a.includes(i)?a:`${i}: ${a}`}function Se(e){if(!C(e)||typeof e.message!=`string`)return;let t=e.message.trim();return t===``?void 0:t}function Ce(e,t){if(!C(e)||typeof e.statusCode!=`number`||!Number.isFinite(e.statusCode))return;let n=Ee(e.url),r=`HTTP ${e.statusCode}${n===void 0?``:` from ${n}`}`,i=Se(e)??we(e.responseBody)??we(e.data)??Te(e,t);return i===void 0?r:`${i} (${r})`}function we(e){if(typeof e==`string`){let t=e.trim();return t===``?void 0:we(T(t))??ne(t)}if(C(e))for(let t of[e.error,e.message,e.detail]){let e=typeof t==`string`?t.trim():Se(t)??``;if(e!==``)return e}}function Te(e,t){if(!C(e))return;if(e.cause!==void 0&&e.cause!==null){let n=xe(e.cause,t);if(n!==void 0)return n}if(!Array.isArray(e.errors))return;let n=e.errors.map(e=>xe(e,t)).filter(e=>e!==void 0);return n.length===0?void 0:n.join(`; `)}function Ee(e){if(typeof e==`string`&&e!==``)try{return new URL(e).host||void 0}catch{return}}function De(e){if(C(e)&&typeof e.name==`string`&&e.name.trim()!==``)return`${e.name.trim()} (no message)`;let t=Oe(e);return t===``||t===`[object Object]`?O:t}function Oe(e){try{return String(e).trim()}catch{return``}}function ke(e){if(!(C(e)&&Array.isArray(e.issues))||e.issues.length===0)return;let t=e.issues;return t.every(e=>C(e)&&typeof e.message==`string`)?t:void 0}async function Ae(e,t){let n=await e.text().catch(()=>``),r=T(n);if(C(r)){let{error:e}=r;if(typeof e==`string`&&e!==``)return e}return re(e.status,n,t)}function je(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function Me(e,t=`|`){return e.map(e=>rt(e)).join(t)}function Ne(e,t){return typeof t==`bigint`?t.toString():t}var Pe=class{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;return e!==void 0&&(this._value=e(),this._getter=void 0),this._value}};function Fe(e){return new Pe(e)}function Ie(e){return e==null}function Le(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function Re(e,t){let n=e/t,r=Math.round(n),i=4*2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r)<i?0:n-r}function ze(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function Be(e){let t=Object.getOwnPropertyDescriptor(e,`shape`);return t?.get?t.get.raw:t?.value}function Ve(e){return Be(e._zod.def)??e._zod.def.shape}function He(e,t,n){Object.defineProperty(e,t,{get(){let e=n();return ze(this,t,e),e},enumerable:!0,configurable:!0})}function Ue(e,t,n){t in e?ze(e,t,n):e[t]=n}function We(e,t,n,r){let i=Ve(t);for(let a of n){let n=Object.getOwnPropertyDescriptor(i,a);n.enumerable&&(n.get?He(e,a,()=>{let e=t._zod.def.shape[a];return r?r(e,a):e}):Ue(e,a,r?r(n.value,a):n.value))}}function Ge(e,t){for(let n of Reflect.ownKeys(t)){let r=Object.getOwnPropertyDescriptor(t,n);r.enumerable&&(r.get?He(e,n,()=>t[n]):Ue(e,n,r.value))}}function Ke(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function qe(e){return JSON.stringify(e)}function Je(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var Ye=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function Xe(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var Ze=Fe(()=>{if(Wt.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function Qe(e){if(Xe(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return Xe(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function $e(e){return Qe(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var et=new Set([`string`,`number`,`symbol`]);function tt(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function nt(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function k(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function rt(e){return typeof e==`bigint`?e.toString()+`n`:typeof e==`string`?`"${e}"`:`${e}`}function it(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout===`optional`)}var at={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},ot={int64:[BigInt(`-9223372036854775808`),BigInt(`9223372036854775807`)],uint64:[BigInt(0),BigInt(`18446744073709551615`)]};function st(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);let i={};return We(i,e,ct(e,t)),nt(e,Ke(n,{shape:i,checks:[]}))}function ct(e,t){let n=Ve(e),r=[];for(let e of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(n,e)?.enumerable)throw Error(`Unrecognized key: "${String(e)}"`);t[e]&&r.push(e)}return r}function lt(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);let i=new Set(ct(e,t)),a={};return We(a,e,Reflect.ownKeys(Ve(e)).filter(e=>!i.has(e))),nt(e,Ke(n,{shape:a,checks:[]}))}function ut(e,t){if(!Qe(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=Ve(e);for(let e of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return nt(e,Ke(e._zod.def,{shape:dt(e,t)}))}function dt(e,t){let n={};return We(n,e,Reflect.ownKeys(Ve(e))),Ge(n,t),n}function ft(e,t){if(!Qe(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return nt(e,Ke(e._zod.def,{shape:dt(e,t)}))}function pt(e,t){if(!t?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);let n={};return We(n,e,Reflect.ownKeys(Ve(e))),We(n,t,Reflect.ownKeys(Ve(t))),nt(e,Ke(e._zod.def,{shape:n,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function mt(e,t,n,r=`partial`){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(`.${r}() cannot be used on object schemas containing refinements`);let a=n?new Set(ct(t,n)):void 0,o={};return We(o,t,Reflect.ownKeys(Ve(t)),e&&((t,n)=>a&&!a.has(n)?t:new e({type:`optional`,innerType:t}))),nt(t,Ke(t._zod.def,{shape:o,checks:[]}))}function ht(e,t,n){let r=n?new Set(ct(t,n)):void 0,i={};return We(i,t,Reflect.ownKeys(Ve(t)),(t,n)=>r&&!r.has(n)?t:new e({type:`nonoptional`,innerType:t})),nt(t,Ke(t._zod.def,{shape:i}))}function gt(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function _t(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function vt(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function yt(e){return typeof e==`string`?e:e?.message}function bt(e,t,n){var r;for(let i=t;i<e.length;i++)(r=e[i]).schema??(r.schema=n)}function xt(e,t,n){var r;let i=e.inst?._zod?.traits;i?.has(`$ZodType`)&&(i.has(`$ZodCheck`)?(r=e).schema??(r.schema=e.inst):e.schema=e.inst);let a=e.schema===e.inst?void 0:e.schema?._zod.def?.error,o=e.message?e.message:yt(e.inst?._zod.def?.error?.(e))??yt(a?.(e))??yt(t?.error?.(e))??yt(n.customError?.(e))??yt(n.localeError?.(e))??`Invalid input`,s={};for(let t of Object.keys(e))t!==`inst`&&t!==`schema`&&t!==`continue`&&t!==`input`&&t!==`__proto__`&&(s[t]=e[t]);return s.path??=[],s.message=o,t?.reportInput&&(s.input=e.input),s}var St=/[\uD800-\uDBFF]/;function Ct(e){let t=e.length;if(!St.test(e))return t;let n=t;for(let r=0;r<t-1;r++)(e.charCodeAt(r)&64512)==55296&&(e.charCodeAt(r+1)&64512)==56320&&(n--,r++);return n}function wt(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function Tt(e){let t=typeof e;switch(t){case`number`:return Number.isNaN(e)?`nan`:`number`;case`object`:{if(e===null)return`null`;if(Array.isArray(e))return`array`;let t=e;if(t&&Object.getPrototypeOf(t)!==Object.prototype&&`constructor`in t&&t.constructor)return t.constructor.name}}return t}function Et(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}function Dt(e,t){for(let n in t){let r=Object.getOwnPropertyDescriptor(t,n);r.get?Object.defineProperty(e,n,{...r,enumerable:!1}):At(e,n,r.value)}}function A(e,t,n,r=!0){return Object.defineProperty(e,t,{configurable:!0,writable:!0,enumerable:r,value:n}),n}function Ot(e,t,n){return A(e,t,n,!1)}function kt(e,t){for(let n in e){let r=e[n];Object.defineProperty(t,n,{configurable:!0,enumerable:!0,get(){return A(this,n,r(this))},set(e){A(this,n,e)}})}return t}function At(e,t,n){Object.defineProperty(e,t,{configurable:!0,get(){return this==null?n:A(this,t,n.bind(this))},set(e){A(this,t,e)}})}function jt(e,t){let n=Object.getPrototypeOf(e);return t in n?void 0:n}var Mt,Nt=!1,Pt={configurable:!0,get(){Nt=!0}};function j(e,t,n){let r=Object.getPrototypeOf(e._zod);if(t in r&&Mt!==e._zod){Mt=void 0;return}Mt=e._zod,Object.defineProperty(r,t,{configurable:!0,get(){Object.defineProperty(this,t,Pt);let e=Nt;Nt=!1;try{let r=n(this);return Nt?delete this[t]:Object.defineProperty(this,t,{configurable:!0,writable:!0,value:r}),Nt||=e,r}catch(n){throw delete this[t],Nt||=e,n}},set(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:e})}})}function Ft(e,t,n,r){let i=jt(e,t);i&&Object.defineProperty(i,t,{configurable:!0,get(){let e={configurable:!0,writable:!0,enumerable:r,value:void 0};return Object.defineProperty(this,t,e),e.value=n(this),Object.defineProperty(this,t,e),e.value},set(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,enumerable:r,value:e})}})}var It=`~constantCatch`;function Lt(e){let t=()=>e;return t[It]=!0,t}var Rt,zt={value:void 0,enumerable:!1},Bt=`captureStackTrace`in Error?Error:null;function Vt(e){let t=Bt;if(t){let n=t.stackTraceLimit;if(typeof n==`number`){try{t.stackTraceLimit=0}catch{return Bt=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}function M(e,t,n,r){let i={};function a(e){this.def=e,this.constr=d,this.traits=new Set}a.prototype=i;let o=n,s=o&&new WeakSet;function c(n,r){if(!n._zod){zt.value=new a(r);try{Object.defineProperty(n,"_zod",zt)}finally{zt.value=void 0}}else if(n._zod.traits.has(e))return;if(n._zod.traits.add(e),t(n,r),s){let e=Object.getPrototypeOf(n),t=n._zod.constr.prototype,r=e;for(;r&&r!==t;)r=Object.getPrototypeOf(r);let i=r??e;s.has(i)||(s.add(i),Dt(i,o))}let i=d.prototype;for(let e in i)Object.prototype.hasOwnProperty.call(i,e)&&(e in n||(n[e]=i[e].bind(n)))}let l=r?.Parent??Object;class u extends l{}Object.defineProperty(u,"name",{value:e});function d(e){let t=r?.Parent?Vt(u):this;c(t,e);let n=t._zod.deferred;if(n){for(let e of n)e();t._zod.deferred=void 0}let i=globalThis.__zod_globalConfig?.postProcessor;return i&&i(t),t}return Object.defineProperty(d,"init",{value:c}),Object.defineProperty(d,Symbol.hasInstance,{value:t=>r?.Parent&&t instanceof r.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var Ht=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Ut=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(Rt=globalThis).__zod_globalConfig??(Rt.__zod_globalConfig={});var Wt=globalThis.__zod_globalConfig;function Gt(e){return e&&Object.assign(Wt,e),Wt}function Kt(){let e=this._zod;return e.message??=JSON.stringify(e.def,Ne,2),e.message}function qt(e){this._zod.message=e}var Jt={get:Kt,set:qt,enumerable:!0,configurable:!0},N={value:void 0,enumerable:!1},Yt=new WeakSet([Object.prototype,Error.prototype]),Xt=(e,t)=>{e.name=`$ZodError`,N.value=t,Object.defineProperty(e,"issues",N),N.value=void 0,Object.defineProperty(e,"message",Jt);let n=Object.getPrototypeOf(e);Yt.has(n)||(Yt.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){let e=()=>this.message;return Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0})}}))},Zt=M(`$ZodError`,Xt);M(`$ZodError`,Xt,void 0,{Parent:Error});function Qt(e,t,n){return Object.prototype.hasOwnProperty.call(e,t)||(t===`__proto__`?Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0}):e[t]=n()),e[t]}function $t(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?Qt(n,i.path[0],()=>[]).push(t(i)):r.push(t(i));return{formErrors:r,fieldErrors:n}}function en(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i<e.length;){let n=e[i],o=i===e.length-1;if(n===`_errors`){o&&r._errors.push(t(a)),i++;continue}Object.prototype.hasOwnProperty.call(r,n)||Object.defineProperty(r,n,{value:{_errors:[]},enumerable:!0,writable:!0,configurable:!0});let s=r[n];o&&s._errors.push(t(a)),r=s,i++}}}};return r(e),n}function tn(e,t){return{callee:t?.callee??e,Err:t?.Err}}var nn=e=>{let t=(n,r,i,a)=>{let o=i?{...i,async:!1}:{async:!1},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new Ht;if(s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>xt(e,o,Gt())));throw Ye(n,a?.callee??t),n}return s.value};return t},rn=e=>{let t=async(n,r,i,a)=>{let o=i?{...i,async:!0}:{async:!0},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise&&(s=await s),s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>xt(e,o,Gt())));throw Ye(n,a?.callee??t),n}return s.value};return t},an=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new Ht;return a.issues.length?on(e,a.issues,i):{success:!0,data:a.value}};function on(e,t,n){let r;return{success:!1,get error(){return r||(r=new e(t.map(e=>xt(e,n,Gt()))),t=void 0,n=void 0),r},set error(e){r=e,t=void 0,n=void 0}}}var sn=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?on(e,a.issues,i):{success:!0,data:a.value}},cn=Symbol.for(`zod.compile.invalid`),ln=Symbol.for(`zod.compile.fallback`),un=((e,t,n)=>{let r=e._zod.bag.validator;if(r!==void 0){if(r(t)!==cn)return!0;if(r.definite===!0&&n===void 0)return!1}return dn(e,t,n)});function dn(e,t,n){let r=n?{...n,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},i=e._zod.bag.fallbackRun,a;if(i?(r[ln]=!0,a=i({value:t,issues:[]},r)):a=e._zod.run({value:t,issues:[]},r),a instanceof Promise)throw new Ht;return a.issues.length===0}var fn=async(e,t,n)=>{let r=n?{...n,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},i=e._zod.run({value:t,issues:[]},r);return i instanceof Promise&&(i=await i),i.issues.length===0},pn=e=>{let t=nn(e),n=(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return t(e,r,o,tn(n,a))};return n},mn=e=>{let t=nn(e),n=(e,r,i,a)=>t(e,r,i,tn(n,a));return n},hn=e=>{let t=rn(e),n=async(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return await t(e,r,o,tn(n,a))};return n},gn=e=>{let t=rn(e),n=async(e,r,i,a)=>await t(e,r,i,tn(n,a));return n},_n=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return an(e)(t,n,i)},vn=e=>(t,n,r)=>an(e)(t,n,r),yn=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return sn(e)(t,n,i)},bn=e=>async(t,n,r)=>sn(e)(t,n,r),xn=/^[cC][0-9a-z]{6,}$/,Sn=/^[0-9a-z]+$/,Cn=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,wn=/^[0-9a-vA-V]{20}$/,Tn=/^[A-Za-z0-9]{27}$/,En=/^[a-zA-Z0-9_-]{21}$/;function Dn(e){return RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var On=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,kn=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,An=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,jn=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Mn=`^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$`;function Nn(){return new RegExp(Mn,`u`)}var Pn=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Fn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,In=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Ln=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Rn=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,zn=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/,Bn=/^https?$/,Vn=/^\+[1-9]\d{6,14}$/,Hn=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`;function Un(e){return RegExp(`^${e}$`)}var Wn=Un(Hn);function Gn(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Kn(e){return RegExp(`^${Gn(e)}$`)}function qn(e){let t=[`Z`];e.offset&&t.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let n=`${Gn({precision:e.precision,seconds:!0})}(?:${t.join(`|`)})`,r=e.local?`${n}|${Gn({precision:e.precision})}`:n;return RegExp(`^${Hn}T(?:${r})$`)}var Jn=/^[\s\S]{0,}$/,Yn=/^-?\d+$/,Xn=/^-?\d+(?:\.\d+)?$/,Zn=/^(?:true|false)$/i,Qn=/^null$/i,$n=/^[^A-Z]*$/,er=/^[^a-z]*$/,tr=M(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),nr=e=>{let t=e.value;return!Ie(t)&&t.length!==void 0},rr={number:`number`,bigint:`bigint`,object:`date`},ir=M(`$ZodCheckLessThan`,(e,t)=>{tr.init(e,t);let n=rr[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value<t.value)||r.issues.push({origin:rr[typeof r.value]??n,code:`too_big`,maximum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),ar=M(`$ZodCheckGreaterThan`,(e,t)=>{tr.init(e,t);let n=rr[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:rr[typeof r.value]??n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),or=M(`$ZodCheckMultipleOf`,(e,t)=>{tr.init(e,t),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):Re(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),sr=M(`$ZodCheckNumberFormat`,(e,t)=>{tr.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=at[t.format];e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}s<i&&o.issues.push({origin:`number`,input:s,code:`too_small`,minimum:i,inclusive:!0,inst:e,continue:!t.abort}),s>a&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),cr=M(`$ZodCheckMaxLength`,(e,t)=>{var n;tr.init(e,t),(n=e._zod.def).when??(n.when=nr),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>t.maximum?Ct(r):i)<=t.maximum)return;let a=wt(r);n.issues.push({origin:a,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),lr=M(`$ZodCheckMinLength`,(e,t)=>{var n;tr.init(e,t),(n=e._zod.def).when??(n.when=nr),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>=t.minimum&&i<t.minimum*2?Ct(r):i)>=t.minimum)return;let a=wt(r);n.issues.push({origin:a,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),ur=M(`$ZodCheckLengthEquals`,(e,t)=>{var n;tr.init(e,t),(n=e._zod.def).when??(n.when=nr),e._zod.check=n=>{let r=n.value,i=r.length,a=typeof r==`string`&&i>=t.length&&i<=t.length*2?Ct(r):i;if(a===t.length)return;let o=wt(r),s=a>t.length;n.issues.push({origin:o,...s?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),dr=M(`$ZodCheckStringFormat`,(e,t)=>{var n,r;tr.init(e,t),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),fr=M(`$ZodCheckRegex`,(e,t)=>{dr.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),pr=M(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=$n,dr.init(e,t)}),mr=M(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=er,dr.init(e,t)}),hr=M(`$ZodCheckIncludes`,(e,t)=>{tr.init(e,t);let n=tt(t.includes);t.pattern=new RegExp(typeof t.position==`number`?`^.{${t.position},}${n}`:n),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),gr=M(`$ZodCheckStartsWith`,(e,t)=>{tr.init(e,t);let n=RegExp(`^${tt(t.prefix)}.*`);t.pattern??=n,e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),_r=M(`$ZodCheckEndsWith`,(e,t)=>{tr.init(e,t);let n=RegExp(`.*${tt(t.suffix)}$`);t.pattern??=n,e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),vr=M(`$ZodCheckOverwrite`,(e,t)=>{tr.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),yr=class{constructor(e=[],t={}){this.content=[],this.indent=0,this.args=e,this.closed=t}indented(e){this.indent+=1;try{e(this)}finally{--this.indent}}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(`
3
3
  `).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.content??[``];return new e(...Object.keys(this.closed),`return function (${this.args.join(`, `)}) {\n${t.join(`
4
4
  `)}\n};`)(...Object.values(this.closed))}},br={major:4,minor:6,patch:5},xr=M(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=br;let r=e._zod.def.checks,i=e._zod.traits.has(`$ZodCheck`)?[e,...r??[]]:r?.length?[...r]:[];for(let t of i)for(let n of t._zod.onattach)n(e);if(i.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(t,n,r)=>{if(t.memo)return t;let i=gt(t),a;for(let o of n){if(o._zod.def.when){if(_t(t)||!o._zod.def.when(t))continue}else if(i)continue;let n=t.issues.length,s=o._zod.check(t);if(s instanceof Promise&&r?.async===!1)throw new Ht;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,t.issues.length!==n&&(bt(t.issues,n,e),i||=gt(t,n))});else{if(t.issues.length===n)continue;bt(t.issues,n,e),i||=gt(t,n)}}return a?a.then(()=>t):t},n=(n,r,a)=>{if(gt(n))return n.aborted=!0,n;let o=t(r,i,a);if(o instanceof Promise){if(a.async===!1)throw new Ht;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(r,a)=>{if(a.skipChecks)return e._zod.parse(r,a);if(a.direction===`backward`){let t=e._zod.parse({value:r.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,r,a)):n(t,r,a)}let o=e._zod.parse(r,a);if(o instanceof Promise){if(a.async===!1)throw new Ht;return o.then(e=>t(e,i,a))}return t(o,i,a)}}},{get"~standard"(){return Ot(this,`~standard`,wr(this))},set"~standard"(e){A(this,`~standard`,e)}}),Sr=(e,t)=>e.issues.length?{issues:e.issues.map(e=>xt(e,t,Gt()))}:{value:e.value};async function Cr(e,t){let n={async:!0};return Sr(await e._zod.run({value:t,issues:[]},n),n)}function wr(e){return{validate:t=>{let n={async:!1};try{let r=e._zod.run({value:t,issues:[]},n);if(!(r instanceof Promise))return Sr(r,n)}catch{}return Cr(e,t)},vendor:`zod`,version:1}}var Tr=M(`$ZodString`,(e,t)=>{xr.init(e,t),e._zod.pattern=t.pattern??Jn,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),Er=M(`$ZodStringFormat`,(e,t)=>{dr.init(e,t),Tr.init(e,t)}),Dr=M(`$ZodGUID`,(e,t)=>{t.pattern??=kn,Er.init(e,t)}),Or=M(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=An(e)}else t.pattern??=An();Er.init(e,t)}),kr=M(`$ZodEmail`,(e,t)=>{t.pattern??=jn,Er.init(e,t)});function Ar(e){try{return typeof URL<`u`&&typeof URL.canParse==`function`?URL.canParse(e):(new URL(e),!0)}catch{return!1}}function jr(e,t){return!(`normalize`in t)&&!(`hostname`in t)&&!(`protocol`in t)?Ar(e)||2:Mr(e,t)}function Mr(e,t){if(!t.normalize&&t.protocol?.source===Bn.source&&!/^https?:\/\//i.test(e))return 1;try{if(typeof URL<`u`){let t=URL;if(typeof t.parse==`function`)return t.parse(e)??2}return new URL(e)}catch{return 2}}var Nr=/[\t\n\r]/g;function Pr(e){return e.replace(Nr,``)}function Fr(e,t){return t.lastIndex=0,t.test(e.hostname)}function Ir(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(`:`)?e.protocol.slice(0,-1):e.protocol)}var Lr=M(`$ZodURL`,(e,t)=>{Er.init(e,t),e._zod.check=n=>{try{let r=n.value.trim(),i=jr(r,t);if(i===1){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}if(i===2){n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort});return}if(i===!0){n.value=Pr(r);return}t.hostname&&!Fr(i,t.hostname)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort}),t.protocol&&!Ir(i,t.protocol)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort}),n.value=t.normalize?i.href:Pr(r);return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),Rr=M(`$ZodEmoji`,(e,t)=>{t.pattern??=Nn(),Er.init(e,t)}),zr=M(`$ZodNanoID`,(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw Error(`Invalid nanoid length: ${t.length}`);t.pattern??=t.length===void 0?En:Dn(t.length),Er.init(e,t)}),Br=M(`$ZodCUID`,(e,t)=>{t.pattern??=xn,Er.init(e,t)}),Vr=M(`$ZodCUID2`,(e,t)=>{t.pattern??=Sn,Er.init(e,t)}),Hr=M(`$ZodULID`,(e,t)=>{t.pattern??=Cn,Er.init(e,t)}),Ur=M(`$ZodXID`,(e,t)=>{t.pattern??=wn,Er.init(e,t)}),Wr=M(`$ZodKSUID`,(e,t)=>{t.pattern??=Tn,Er.init(e,t)}),Gr=M(`$ZodISODateTime`,(e,t)=>{t.pattern??=qn(t),Er.init(e,t)}),Kr=M(`$ZodISODate`,(e,t)=>{t.pattern??=Wn,Er.init(e,t)}),qr=M(`$ZodISOTime`,(e,t)=>{t.pattern??=Kn(t),Er.init(e,t)}),Jr=M(`$ZodISODuration`,(e,t)=>{t.pattern??=On,Er.init(e,t)}),Yr=M(`$ZodIPv4`,(e,t)=>{t.pattern??=Pn,Er.init(e,t)}),Xr=/^[0-9a-fA-F:.]+$/;function Zr(e){return Xr.test(e)?Ar(`http://[${e}]`):!1}var Qr=M(`$ZodIPv6`,(e,t)=>{t.pattern??=Fn,Er.init(e,t),e._zod.check=n=>{Zr(n.value)||n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}),$r=M(`$ZodCIDRv4`,(e,t)=>{t.pattern??=In,Er.init(e,t)});function ei(e){let t=e.split(`/`);if(t.length!==2)return!1;let[n,r]=t;if(!r)return!1;let i=Number(r);return`${i}`!==r||i<0||i>128?!1:Zr(n)}var ti=M(`$ZodCIDRv6`,(e,t)=>{t.pattern??=Ln,Er.init(e,t),e._zod.check=n=>{ei(n.value)||n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}});function ni(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var ri=/^[0-9a-zA-Z+/]*={0,2}$/,ii=M(`$ZodBase64`,(e,t)=>{t.pattern??=ri,Er.init(e,t),e._zod.check=n=>{ni(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}}),ai=/^[A-Za-z0-9_-]*$/;function oi(e){if(!ai.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return ni(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var si=M(`$ZodBase64URL`,(e,t)=>{t.pattern??=ai,Er.init(e,t),e._zod.check=n=>{oi(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),ci=M(`$ZodE164`,(e,t)=>{t.pattern??=Vn,Er.init(e,t)});function li(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var ui=M(`$ZodJWT`,(e,t)=>{Er.init(e,t),e._zod.check=n=>{li(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),di=M(`$ZodNumber`,(e,t)=>{xr.init(e,t),e._zod.pattern=Xn,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:String(i):void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),fi=M(`$ZodNumberFormat`,(e,t)=>{sr.init(e,t),di.init(e,t)}),pi=M(`$ZodBoolean`,(e,t)=>{xr.init(e,t),e._zod.pattern=Zn,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),mi=M(`$ZodNull`,(e,t)=>{xr.init(e,t),e._zod.pattern=Qn,e._zod.values=new Set([null]),e._zod.parse=(t,n)=>{let r=t.value;return r===null||t.issues.push({expected:`null`,code:`invalid_type`,input:r,inst:e}),t}}),hi=M(`$ZodUnknown`,(e,t)=>{xr.init(e,t),e._zod.parse=e=>e}),gi=M(`$ZodNever`,(e,t)=>{xr.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function _i(e,t,n){e.issues.length&&t.issues.push(...vt(n,e.issues)),t.value[n]=e.value}var vi=M(`$ZodArray`,(e,t)=>{xr.init(e,t);let n=Wt.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Array.isArray(a))return r.issues.push({expected:`array`,code:`invalid_type`,input:a,inst:e}),r;r.value=n?n.alloc(e,r,Array(a.length),i):Array(a.length);let o=[],s=i?.abortEarly;for(let e=0;e<a.length;e++){let n=a[e],c=t.element._zod.run({value:n,issues:[]},i);if(c instanceof Promise)o.push(c.then(t=>_i(t,r,e)));else if(_i(c,r,e),s&&c.issues.length!==0&&gt(c))break}return o.length?Promise.all(o).then(()=>r):r}});function yi(e,t,n,r,i,a){let o=n in r,s=a===`optional`;if(o||!s||i!==`optional`){if(e.issues.length){if(i!==void 0&&s&&!o)return;t.issues.push(...vt(n,e.issues))}if(!o&&i===void 0){e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]});return}e.value===void 0?(o||i===`defaulted`&&!s)&&(t.value[n]=void 0):t.value[n]=e.value}}var bi=[];function xi(e){let t=Object.keys(e.shape),n=Object.getOwnPropertySymbols(e.shape),r=n.length?n:bi,i=r.length?[...t,...r]:t;for(let t of i)if(!e.shape?.[t]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${String(t)}": expected a Zod schema`);let a=it(e.shape);return{...e,allKeys:i,symbolKeys:r,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(a)}}function Si(e,t,n,r,i,a,o){let s=[],c=i.keySet,l=i.catchall._zod,u=l.def.type,d=l.optin,f=l.optout,p=0;for(let i in t){if(o&&n.issues.length!==p){if(gt(n,p))break;p=n.issues.length}if(c.has(i))continue;if(i===`__proto__`){u===`never`&&s.push(i);continue}if(u===`never`){s.push(i);continue}let a=l.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>yi(e,n,i,t,d,f))):yi(a,n,i,t,d,f)}return s.length&&n.issues.push({code:`unrecognized_keys`,keys:s,input:t,inst:a,continue:!0}),e.length?Promise.all(e).then(()=>n):n}var Ci=M(`$ZodObject`,(e,t)=>{xr.init(e,t);let n=Object.getOwnPropertyDescriptor(t,`shape`),r=n?.get?n.get.raw:t.shape??{};if(r){let e=()=>{let n={...r};return Object.defineProperty(t,"shape",{value:n}),e.raw=n,n};e.raw=r,Object.defineProperty(t,"shape",{get:e})}let i=Fe(()=>xi(t));j(e,`propValues`,e=>{let t=e.def.shape,n={};for(let e in t){let r=t[e]._zod;if(r.values){Object.prototype.hasOwnProperty.call(n,e)||ze(n,e,new Set);for(let t of r.values)n[e].add(t);r.optin!==void 0&&n[e].add(void 0)}}return n});let a=Xe,o=t.catchall,s,c=Wt.memoizer;c?.attach(e),e._zod.parse=(t,n)=>{s??=i.value;let r=t.value;if(!a(r))return t.issues.push({expected:`object`,code:`invalid_type`,input:r,inst:e}),t;t.value=c?c.alloc(e,t,{},n):{};let l=[],u=s.shape,d=n?.abortEarly,f=t.issues.length;for(let e of s.allKeys){if(d&&t.issues.length!==f){if(gt(t,f))break;f=t.issues.length}if(e===`__proto__`)continue;let i=u[e],a=i._zod.optin,o=i._zod.optout,s=i._zod.run({value:r[e],issues:[]},n);s instanceof Promise?l.push(s.then(n=>yi(n,t,e,r,a,o))):yi(s,t,e,r,a,o)}return o?Si(l,r,t,n,i.value,e,d===!0):l.length?Promise.all(l).then(()=>t):t}}),wi=M(`$ZodObjectJIT`,(e,t)=>{Ci.init(e,t);let n=e._zod.parse,r=Fe(()=>xi(t)),i=Wt.memoizer,a=t=>{let n=r.value,a=n.symbolKeys,o=new yr([`payload`,`ctx`],{shape:t,inst:e,memo:i,syms:a}),s=e=>`shape[${e}]._zod.run({ value: input[${e}], issues: [] }, ctx)`,c=(e,t)=>`
5
5
  let ${e}_ab = false;
@@ -93,7 +93,7 @@ Error generating stack: `+e.message+`
93
93
  `))}function c(e,t,n,r){let i=n.enter(`tableCell`),o=n.enter(`phrasing`),s=n.containerPhrasing(e,{...r,before:a,after:a});return o(),i(),s}function l(e,t){return xy(e,{align:t,alignDelimiters:r,padding:n,stringLength:i})}function u(e,t,n){let r=e.children,i=-1,a=[],o=t.enter(`table`);for(;++i<r.length;)a[i]=d(r[i],t,n);return o(),a}function d(e,t,n){let r=e.children,i=-1,a=[],o=t.enter(`tableRow`);for(;++i<r.length;)a[i]=c(r[i],e,t,n);return o(),a}function f(e,t,n){let r=vb.inlineCode(e,t,n);return n.stack.includes(`tableCell`)&&(r=r.replace(/\|/g,`\\$&`)),r}}function Ob(){return{exit:{taskListCheckValueChecked:Ab,taskListCheckValueUnchecked:Ab,paragraph:jb}}}function kb(){return{unsafe:[{atBreak:!0,character:`-`,after:`[:|-]`}],handlers:{listItem:Mb}}}function Ab(e){let t=this.stack[this.stack.length-2];t.type,t.checked=e.type===`taskListCheckValueChecked`}function jb(e){let t=this.stack[this.stack.length-2];if(t&&t.type===`listItem`&&typeof t.checked==`boolean`){let e=this.stack[this.stack.length-1];e.type;let n=e.children[0];if(n&&n.type===`text`){let r=t.children,i=-1,a;for(;++i<r.length;){let e=r[i];if(e.type===`paragraph`){a=e;break}}a===e&&(n.value=n.value.slice(1),n.value.length===0?e.children.shift():e.position&&n.position&&typeof n.position.start.offset==`number`&&(n.position.start.column++,n.position.start.offset++,e.position.start=Object.assign({},n.position.start)))}}this.exit(e)}function Mb(e,t,n,r){let i=e.children[0],a=typeof e.checked==`boolean`&&i&&i.type===`paragraph`,o=`[`+(e.checked?`x`:` `)+`] `,s=n.createTracker(r);a&&s.move(o);let c=vb.listItem(e,t,n,{...r,...s.current()});return a&&(c=c.replace(/^(?:[*+-]|\d+\.)([\r\n]| {1,3})/,l)),c;function l(e){return e+o}}function Nb(){return[zv(),ly(),my(),yb(),Ob()]}function Pb(e){return{extensions:[Bv(),uy(e),hy(),Db(e),kb()]}}var Fb={tokenize:Yb,partial:!0},Ib={tokenize:Xb,partial:!0},Lb={tokenize:Zb,partial:!0},Rb={tokenize:Qb,partial:!0},zb={tokenize:$b,partial:!0},Bb={name:`wwwAutolink`,tokenize:qb,previous:ex},Vb={name:`protocolAutolink`,tokenize:Jb,previous:tx},Hb={name:`emailAutolink`,tokenize:Kb,previous:nx},Ub={};function Wb(){return{text:Ub}}for(var Gb=48;Gb<123;)Ub[Gb]=Hb,Gb++,Gb===58?Gb=65:Gb===91&&(Gb=97);Ub[43]=Hb,Ub[45]=Hb,Ub[46]=Hb,Ub[95]=Hb,Ub[72]=[Hb,Vb],Ub[104]=[Hb,Vb],Ub[87]=[Hb,Bb],Ub[119]=[Hb,Bb];function Kb(e,t,n){let r=this,i,a;return o;function o(t){return!rx(t)||!nx.call(r,r.previous)||ix(r.events)?n(t):(e.enter(`literalAutolink`),e.enter(`literalAutolinkEmail`),s(t))}function s(t){return rx(t)?(e.consume(t),s):t===64?(e.consume(t),c):n(t)}function c(t){return t===46?e.check(zb,u,l)(t):t===45||t===95||zp(t)?(a=!0,e.consume(t),c):u(t)}function l(t){return e.consume(t),i=!0,c}function u(o){return a&&i&&Rp(r.previous)?(e.exit(`literalAutolinkEmail`),e.exit(`literalAutolink`),t(o)):n(o)}}function qb(e,t,n){let r=this;return i;function i(t){return t!==87&&t!==119||!ex.call(r,r.previous)||ix(r.events)?n(t):(e.enter(`literalAutolink`),e.enter(`literalAutolinkWww`),e.check(Fb,e.attempt(Ib,e.attempt(Lb,a),n),n)(t))}function a(n){return e.exit(`literalAutolinkWww`),e.exit(`literalAutolink`),t(n)}}function Jb(e,t,n){let r=this,i=``,a=!1;return o;function o(t){return(t===72||t===104)&&tx.call(r,r.previous)&&!ix(r.events)?(e.enter(`literalAutolink`),e.enter(`literalAutolinkHttp`),i+=String.fromCodePoint(t),e.consume(t),s):n(t)}function s(t){if(Rp(t)&&i.length<5)return i+=String.fromCodePoint(t),e.consume(t),s;if(t===58){let n=i.toLowerCase();if(n===`http`||n===`https`)return e.consume(t),c}return n(t)}function c(t){return t===47?(e.consume(t),a?l:(a=!0,c)):n(t)}function l(t){return t===null||Vp(t)||Gp(t)||qp(t)||Kp(t)?n(t):e.attempt(Ib,e.attempt(Lb,u),n)(t)}function u(n){return e.exit(`literalAutolinkHttp`),e.exit(`literalAutolink`),t(n)}}function Yb(e,t,n){let r=0;return i;function i(t){return(t===87||t===119)&&r<3?(r++,e.consume(t),i):t===46&&r===3?(e.consume(t),a):n(t)}function a(e){return e===null?n(e):t(e)}}function Xb(e,t,n){let r,i,a;return o;function o(t){return t===46||t===95?e.check(Rb,c,s)(t):t===null||Gp(t)||qp(t)||t!==45&&Kp(t)?c(t):(a=!0,e.consume(t),o)}function s(t){return t===95?r=!0:(i=r,r=void 0),e.consume(t),o}function c(e){return i||r||!a?n(e):t(e)}}function Zb(e,t){let n=0,r=0;return i;function i(o){return o===40?(n++,e.consume(o),i):o===41&&r<n?a(o):o===33||o===34||o===38||o===39||o===41||o===42||o===44||o===46||o===58||o===59||o===60||o===63||o===93||o===95||o===126?e.check(Rb,t,a)(o):o===null||Gp(o)||qp(o)?t(o):(e.consume(o),i)}function a(t){return t===41&&r++,e.consume(t),i}}function Qb(e,t,n){return r;function r(o){return o===33||o===34||o===39||o===41||o===42||o===44||o===46||o===58||o===59||o===63||o===95||o===126?(e.consume(o),r):o===38?(e.consume(o),a):o===93?(e.consume(o),i):o===60||o===null||Gp(o)||qp(o)?t(o):n(o)}function i(e){return e===null||e===40||e===91||Gp(e)||qp(e)?t(e):r(e)}function a(e){return Rp(e)?o(e):n(e)}function o(t){return t===59?(e.consume(t),r):Rp(t)?(e.consume(t),o):n(t)}}function $b(e,t,n){return r;function r(t){return e.consume(t),i}function i(e){return zp(e)?n(e):t(e)}}function ex(e){return e===null||e===40||e===42||e===95||e===91||e===93||e===126||Gp(e)}function tx(e){return!Rp(e)}function nx(e){return!(e===47||rx(e))}function rx(e){return e===43||e===45||e===46||e===95||zp(e)}function ix(e){let t=e.length,n=!1;for(;t--;){let r=e[t][1];if((r.type===`labelLink`||r.type===`labelImage`)&&!r._balanced){n=!0;break}if(r._gfmAutolinkLiteralWalkedInto){n=!1;break}}return e.length>0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}var ax={tokenize:px,partial:!0};function ox(){return{document:{91:{name:`gfmFootnoteDefinition`,tokenize:ux,continuation:{tokenize:dx},exit:fx}},text:{91:{name:`gfmFootnoteCall`,tokenize:lx},93:{name:`gfmPotentialFootnoteCall`,add:`after`,tokenize:sx,resolveTo:cx}}}}function sx(e,t,n){let r=this,i=r.events.length,a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),o;for(;i--;){let e=r.events[i][1];if(e.type===`labelImage`){o=e;break}if(e.type===`gfmFootnoteCall`||e.type===`labelLink`||e.type===`label`||e.type===`image`||e.type===`link`)break}return s;function s(i){if(!o||!o._balanced)return n(i);let s=Lp(r.sliceSerialize({start:o.end,end:r.now()}));return s.codePointAt(0)!==94||!a.includes(s.slice(1))?n(i):(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(i),e.exit(`gfmFootnoteCallLabelMarker`),t(i))}}function cx(e,t){let n=e.length;for(;n--;)if(e[n][1].type===`labelImage`&&e[n][0]===`enter`){e[n][1];break}e[n+1][1].type=`data`,e[n+3][1].type=`gfmFootnoteCallLabelMarker`;let r={type:`gfmFootnoteCall`,start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},i={type:`gfmFootnoteCallMarker`,start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};i.end.column++,i.end.offset++,i.end._bufferIndex++;let a={type:`gfmFootnoteCallString`,start:Object.assign({},i.end),end:Object.assign({},e[e.length-1][1].start)},o={type:`chunkString`,contentType:`string`,start:Object.assign({},a.start),end:Object.assign({},a.end)},s=[e[n+1],e[n+2],[`enter`,r,t],e[n+3],e[n+4],[`enter`,i,t],[`exit`,i,t],[`enter`,a,t],[`enter`,o,t],[`exit`,o,t],[`exit`,a,t],e[e.length-2],e[e.length-1],[`exit`,r,t]];return e.splice(n,e.length-n+1,...s),e}function lx(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a=0,o;return s;function s(t){return e.enter(`gfmFootnoteCall`),e.enter(`gfmFootnoteCallLabelMarker`),e.consume(t),e.exit(`gfmFootnoteCallLabelMarker`),c}function c(t){return t===94?(e.enter(`gfmFootnoteCallMarker`),e.consume(t),e.exit(`gfmFootnoteCallMarker`),e.enter(`gfmFootnoteCallString`),e.enter(`chunkString`).contentType=`string`,l):n(t)}function l(s){if(a>999||s===93&&!o||s===null||s===91||Gp(s))return n(s);if(s===93){e.exit(`chunkString`);let a=e.exit(`gfmFootnoteCallString`);return i.includes(Lp(r.sliceSerialize(a)))?(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(s),e.exit(`gfmFootnoteCallLabelMarker`),e.exit(`gfmFootnoteCall`),t):n(s)}return Gp(s)||(o=!0),a++,e.consume(s),s===92?u:l}function u(t){return t===91||t===92||t===93?(e.consume(t),a++,l):l(t)}}function ux(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a,o=0,s;return c;function c(t){return e.enter(`gfmFootnoteDefinition`)._container=!0,e.enter(`gfmFootnoteDefinitionLabel`),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),l}function l(t){return t===94?(e.enter(`gfmFootnoteDefinitionMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionMarker`),e.enter(`gfmFootnoteDefinitionLabelString`),e.enter(`chunkString`).contentType=`string`,u):n(t)}function u(t){if(o>999||t===93&&!s||t===null||t===91||Gp(t))return n(t);if(t===93){e.exit(`chunkString`);let n=e.exit(`gfmFootnoteDefinitionLabelString`);return a=Lp(r.sliceSerialize(n)),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),e.exit(`gfmFootnoteDefinitionLabel`),f}return Gp(t)||(s=!0),o++,e.consume(t),t===92?d:u}function d(t){return t===91||t===92||t===93?(e.consume(t),o++,u):u(t)}function f(t){return t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),i.includes(a)||i.push(a),$(e,p,`gfmFootnoteDefinitionWhitespace`)):n(t)}function p(e){return t(e)}}function dx(e,t,n){return e.check(um,t,e.attempt(ax,t,n))}function fx(e){e.exit(`gfmFootnoteDefinition`)}function px(e,t,n){let r=this;return $(e,i,`gfmFootnoteDefinitionIndent`,5);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`gfmFootnoteDefinitionIndent`&&i[2].sliceSerialize(i[1],!0).length===4?t(e):n(e)}}function mx(e){let t=(e||{}).singleTilde,n={name:`strikethrough`,tokenize:i,resolveAll:r};return t??=!0,{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function r(e,t){let n=-1;for(;++n<e.length;)if(e[n][0]===`enter`&&e[n][1].type===`strikethroughSequenceTemporary`&&e[n][1]._close){let r=n;for(;r--;)if(e[r][0]===`exit`&&e[r][1].type===`strikethroughSequenceTemporary`&&e[r][1]._open&&e[n][1].end.offset-e[n][1].start.offset===e[r][1].end.offset-e[r][1].start.offset){e[n][1].type=`strikethroughSequence`,e[r][1].type=`strikethroughSequence`;let i={type:`strikethrough`,start:Object.assign({},e[r][1].start),end:Object.assign({},e[n][1].end)},a={type:`strikethroughText`,start:Object.assign({},e[r][1].end),end:Object.assign({},e[n][1].start)},o=[[`enter`,i,t],[`enter`,e[r][1],t],[`exit`,e[r][1],t],[`enter`,a,t]],s=t.parser.constructs.insideSpan.null;s&&Ap(o,o.length,0,rm(s,e.slice(r+1,n),t)),Ap(o,o.length,0,[[`exit`,a,t],[`enter`,e[n][1],t],[`exit`,e[n][1],t],[`exit`,i,t]]),Ap(e,r-1,n-r+3,o),n=r+o.length-2;break}}for(n=-1;++n<e.length;)e[n][1].type===`strikethroughSequenceTemporary`&&(e[n][1].type=`data`);return e}function i(e,n,r){let i=this.previous,a=this.events,o=0;return s;function s(t){return i===126&&a[a.length-1][1].type!==`characterEscape`?r(t):(e.enter(`strikethroughSequenceTemporary`),c(t))}function c(a){let s=nm(i);if(a===126)return o>1?r(a):(e.consume(a),o++,c);if(o<2&&!t)return r(a);let l=e.exit(`strikethroughSequenceTemporary`),u=nm(a);return l._open=!u||u===2&&!!s,l._close=!s||s===2&&!!u,n(a)}}}var hx=class{constructor(){this.map=[],this.index=new Map}add(e,t,n){gx(this,e,t,n)}consume(e){if(this.map.sort(function(e,t){return e[0]-t[0]}),this.map.length===0)return;let t=this.map.length,n=[];for(;t>0;)--t,n.push(e.slice(this.map[t][0]+this.map[t][1]),this.map[t][2]),e.length=this.map[t][0];n.push(e.slice()),e.length=0;let r=n.pop();for(;r;){for(let t of r)e.push(t);r=n.pop()}this.map.length=0,this.index.clear()}};function gx(e,t,n,r){if(n===0&&r.length===0)return;let i=e.index.get(t);if(i){i[1]+=n,i[2].push(...r);return}let a=[t,n,r];e.map.push(a),e.index.set(t,a)}function _x(e,t){let n=!1,r=[];for(;t<e.length;){let i=e[t];if(n){if(i[0]===`enter`)i[1].type===`tableContent`&&r.push(e[t+1][1].type===`tableDelimiterMarker`?`left`:`none`);else if(i[1].type===`tableContent`){if(e[t-1][1].type===`tableDelimiterMarker`){let e=r.length-1;r[e]=r[e]===`left`?`center`:`right`}}else if(i[1].type===`tableDelimiterRow`)break}else i[0]===`enter`&&i[1].type===`tableDelimiterRow`&&(n=!0);t+=1}return r}function vx(){return{flow:{null:{name:`table`,tokenize:yx,resolveAll:bx}}}}function yx(e,t,n){let r=this,i=0,a=0,o;return s;function s(e){let t=r.events.length-1;for(;t>-1;){let{type:e}=r.events[t][1];if(e===`lineEnding`||e===`linePrefix`)t--;else break}let i=t>-1?r.events[t][1].type:null,a=i===`tableHead`||i===`tableRow`?ee:c;return a===ee&&r.parser.lazy[r.now().line]?n(e):a(e)}function c(t){return e.enter(`tableHead`),e.enter(`tableRow`),l(t)}function l(e){return e===124?u(e):(o=!0,a+=1,u(e))}function u(t){return t===null?n(t):Z(t)?a>1?(a=0,r.interrupt=!0,e.exit(`tableRow`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),p):n(t):Q(t)?$(e,u,`whitespace`)(t):(a+=1,o&&(o=!1,i+=1),t===124?(e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),o=!0,u):(e.enter(`data`),d(t)))}function d(t){return t===null||t===124||Gp(t)?(e.exit(`data`),u(t)):(e.consume(t),t===92?f:d)}function f(t){return t===92||t===124?(e.consume(t),d):d(t)}function p(t){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(t):(e.enter(`tableDelimiterRow`),o=!1,Q(t)?$(e,m,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):m(t))}function m(t){return t===45||t===58?g(t):t===124?(o=!0,e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),h):x(t)}function h(t){return Q(t)?$(e,g,`whitespace`)(t):g(t)}function g(t){return t===58?(a+=1,o=!0,e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),_):t===45?(a+=1,_(t)):t===null||Z(t)?b(t):x(t)}function _(t){return t===45?(e.enter(`tableDelimiterFiller`),v(t)):x(t)}function v(t){return t===45?(e.consume(t),v):t===58?(o=!0,e.exit(`tableDelimiterFiller`),e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),y):(e.exit(`tableDelimiterFiller`),y(t))}function y(t){return Q(t)?$(e,b,`whitespace`)(t):b(t)}function b(n){return n===124?m(n):n===null||Z(n)?!o||i!==a?x(n):(e.exit(`tableDelimiterRow`),e.exit(`tableHead`),t(n)):x(n)}function x(e){return n(e)}function ee(t){return e.enter(`tableRow`),S(t)}function S(n){return n===124?(e.enter(`tableCellDivider`),e.consume(n),e.exit(`tableCellDivider`),S):n===null||Z(n)?(e.exit(`tableRow`),t(n)):Q(n)?$(e,S,`whitespace`)(n):(e.enter(`data`),C(n))}function C(t){return t===null||t===124||Gp(t)?(e.exit(`data`),S(t)):(e.consume(t),t===92?w:C)}function w(t){return t===92||t===124?(e.consume(t),C):C(t)}}function bx(e,t){let n=-1,r=!0,i=0,a=[0,0,0,0],o=[0,0,0,0],s=!1,c=0,l,u,d,f=new hx;for(;++n<e.length;){let p=e[n],m=p[1];p[0]===`enter`?m.type===`tableHead`?(s=!1,c!==0&&(Sx(f,t,c,l,u),u=void 0,c=0),l={type:`table`,start:Object.assign({},m.start),end:Object.assign({},m.end)},f.add(n,0,[[`enter`,l,t]])):m.type===`tableRow`||m.type===`tableDelimiterRow`?(r=!0,d=void 0,a=[0,0,0,0],o=[0,n+1,0,0],s&&(s=!1,u={type:`tableBody`,start:Object.assign({},m.start),end:Object.assign({},m.end)},f.add(n,0,[[`enter`,u,t]])),i=m.type===`tableDelimiterRow`?2:u?3:1):i&&(m.type===`data`||m.type===`tableDelimiterMarker`||m.type===`tableDelimiterFiller`)?(r=!1,o[2]===0&&(a[1]!==0&&(o[0]=o[1],d=xx(f,t,a,i,void 0,d),a=[0,0,0,0]),o[2]=n)):m.type===`tableCellDivider`&&(r?r=!1:(a[1]!==0&&(o[0]=o[1],d=xx(f,t,a,i,void 0,d)),a=o,o=[a[1],n,0,0])):m.type===`tableHead`?(s=!0,c=n):m.type===`tableRow`||m.type===`tableDelimiterRow`?(c=n,a[1]===0?o[1]!==0&&(d=xx(f,t,o,i,n,d)):(o[0]=o[1],d=xx(f,t,a,i,n,d)),i=0):i&&(m.type===`data`||m.type===`tableDelimiterMarker`||m.type===`tableDelimiterFiller`)&&(o[3]=n)}for(c!==0&&Sx(f,t,c,l,u),f.consume(t.events),n=-1;++n<t.events.length;){let e=t.events[n];e[0]===`enter`&&e[1].type===`table`&&(e[1]._align=_x(t.events,n))}return e}function xx(e,t,n,r,i,a){let o=r===1?`tableHeader`:r===2?`tableDelimiter`:`tableData`;n[0]!==0&&(a.end=Object.assign({},Cx(t.events,n[0])),e.add(n[0],0,[[`exit`,a,t]]));let s=Cx(t.events,n[1]);if(a={type:o,start:Object.assign({},s),end:Object.assign({},s)},e.add(n[1],0,[[`enter`,a,t]]),n[2]!==0){let i=Cx(t.events,n[2]),a=Cx(t.events,n[3]),o={type:`tableContent`,start:Object.assign({},i),end:Object.assign({},a)};if(e.add(n[2],0,[[`enter`,o,t]]),r!==2){let r=t.events[n[2]],i=t.events[n[3]];if(r[1].end=Object.assign({},i[1].end),r[1].type=`chunkText`,r[1].contentType=`text`,n[3]>n[2]+1){let t=n[2]+1,r=n[3]-n[2]-1;e.add(t,r,[])}}e.add(n[3]+1,0,[[`exit`,o,t]])}return i!==void 0&&(a.end=Object.assign({},Cx(t.events,i)),e.add(i,0,[[`exit`,a,t]]),a=void 0),a}function Sx(e,t,n,r,i){let a=[],o=Cx(t.events,n);i&&(i.end=Object.assign({},o),a.push([`exit`,i,t])),r.end=Object.assign({},o),a.push([`exit`,r,t]),e.add(n+1,0,a)}function Cx(e,t){let n=e[t],r=n[0]===`enter`?`start`:`end`;return n[1][r]}var wx={name:`tasklistCheck`,tokenize:Ex};function Tx(){return{text:{91:wx}}}function Ex(e,t,n){let r=this;return i;function i(t){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(t):(e.enter(`taskListCheck`),e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),a)}function a(t){return Gp(t)?(e.enter(`taskListCheckValueUnchecked`),e.consume(t),e.exit(`taskListCheckValueUnchecked`),o):t===88||t===120?(e.enter(`taskListCheckValueChecked`),e.consume(t),e.exit(`taskListCheckValueChecked`),o):n(t)}function o(t){return t===93?(e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),e.exit(`taskListCheck`),s):n(t)}function s(r){return Z(r)?t(r):Q(r)?e.check({tokenize:Dx},t,n)(r):n(r)}}function Dx(e,t,n){return $(e,r,`whitespace`);function r(e){return e===null?n(e):t(e)}}function Ox(e){return Np([Wb(),ox(),mx(e),vx(),Tx()])}var kx={};function Ax(e){let t=this,n=e||kx,r=t.data(),i=r.micromarkExtensions||=[],a=r.fromMarkdownExtensions||=[],o=r.toMarkdownExtensions||=[];i.push(Ox(n)),a.push(Nb()),o.push(Pb(n))}var jx=/^(\s*)(\d{1,9})([.)])\s*$/,Mx=/^(\s*)([-*+])\s*$/,Nx=/^\s*(```|~~~)/;function Px(e){let t=!1;return e.split(`
94
94
  `).map(e=>{if(Nx.test(e))return t=!t,e;if(t)return e;let n=jx.exec(e);if(n)return`${n[1]}${n[2]}\\${n[3]}`;let r=Mx.exec(e);return r?`${r[1]}\\${r[2]}`:e}).join(`
95
95
  `)}var Fx={default:{h1:`mt-3 mb-1.5 text-[17px] font-semibold`,h2:`mt-3 mb-1.5 text-[16px] font-semibold`,h3:`mt-3 mb-1.5 text-[15px] font-semibold`,code:`text-[12.5px]`,table:`my-1.5 w-full border-collapse text-sm`},compact:{h1:`mt-3 mb-1.5 text-[15px] font-medium`,h2:`mt-3 mb-1.5 text-[14px] font-medium`,h3:`mt-3 mb-1.5 text-[13px] font-medium`,code:`text-[11px]`,table:`my-1.5 w-full border-collapse text-[12px]`}},Ix=(0,V.memo)(function({text:e,variant:t=`default`}){let n=Ku(),r=Fx[t],i=(0,V.useMemo)(()=>({p:e=>(0,U.jsx)(`p`,{className:`my-1.5 first:mt-0 last:mb-0`,...e}),ul:e=>(0,U.jsx)(`ul`,{className:`my-1.5 list-disc pl-5`,...e}),ol:e=>(0,U.jsx)(`ol`,{className:`my-1.5 list-decimal pl-5`,...e}),li:e=>(0,U.jsx)(`li`,{className:`my-0.5`,...e}),h1:e=>(0,U.jsx)(`h1`,{className:r.h1,...e}),h2:e=>(0,U.jsx)(`h2`,{className:r.h2,...e}),h3:e=>(0,U.jsx)(`h3`,{className:r.h3,...e}),a:({style:e,...t})=>(0,U.jsx)(`a`,{className:`underline underline-offset-2`,style:{color:n.primary,...e},target:`_blank`,rel:`noreferrer noopener`,...t}),code:({className:e,style:t,children:i,...a})=>/language-/.test(e??``)?(0,U.jsx)(`code`,{className:H(`font-aai-mono`,r.code),...a,children:i}):(0,U.jsx)(`code`,{className:H(`rounded-sm border px-1 py-0.5 font-aai-mono`,r.code),style:{borderColor:n.border,background:Ju(n.text,n.surface,3),...t},...a,children:i}),pre:({style:e,...t})=>(0,U.jsx)(`pre`,{className:`my-1.5 overflow-x-auto rounded-md border p-2.5 whitespace-pre-wrap wrap-break-word`,style:{borderColor:n.border,background:Ju(n.text,n.surface,3),...e},...t}),blockquote:({style:e,...t})=>(0,U.jsx)(`blockquote`,{className:`my-1.5 border-l-2 pl-3`,style:{borderColor:n.border,color:Ju(n.text,n.surface,75),...e},...t}),table:e=>(0,U.jsx)(`table`,{className:r.table,...e}),th:({style:e,...t})=>(0,U.jsx)(`th`,{className:`border px-2 py-1 text-left font-medium`,style:{borderColor:n.border,...e},...t}),td:({style:e,...t})=>(0,U.jsx)(`td`,{className:`border px-2 py-1`,style:{borderColor:n.border,...e},...t}),hr:({style:e,...t})=>(0,U.jsx)(`hr`,{className:`my-2.5 border-t`,style:{borderColor:n.border,...e},...t})}),[n,r]);return(0,U.jsx)(Ev,{remarkPlugins:[Ax],components:i,children:Px(e)})}),Lx=(0,V.createContext)({});function Rx(){return(0,V.useContext)(Lx)}function zx(e){let t=du(e);return t===e?e:JSON.stringify(t,null,2)}function Bx({result:e}){let t=Ku(),n=(0,V.useMemo)(()=>zx(e),[e]);return n?(0,U.jsx)(`pre`,{className:`font-aai-mono text-xs px-3.5 py-3 m-0 whitespace-pre-wrap wrap-break-word`,style:{color:Ju(t.text,t.surface,75)},children:n}):null}var Vx=(0,V.memo)(function({toolCall:e,className:t}){let n=Ku(),r=Rx(),i=Object.hasOwn(r,e.name)?r[e.name]:void 0,a=e.status===`pending`,o=i?.label||e.name,s=i?.icon,c=!a&&!!e.result,l=(0,V.useMemo)(()=>{let t=e.args;if(e.name===`run_code`&&t.code)return fu(String(t.code).split(`
96
- `)[0]??``);for(let e of[`query`,`url`,`question`])if(t[e])return String(t[e]);return fu(JSON.stringify(t))},[e.name,e.args]);return(0,U.jsx)(Fd,{title:o,detail:l,pending:a,icon:s,className:t,children:c?(0,U.jsxs)(U.Fragment,{children:[e.name===`run_code`&&!!e.args.code&&(0,U.jsx)(`pre`,{className:`font-aai-mono text-xs px-3.5 py-3 m-0 whitespace-pre-wrap wrap-break-word border-b`,style:{color:n.text,borderColor:n.border},children:String(e.args.code)}),e.result&&(0,U.jsx)(Bx,{result:e.result})]}):void 0})}),Hx=[0,.16,.32].map(e=>({animation:`aai-bounce 1.4s infinite ease-in-out both`,animationDelay:`${e}s`}));function Ux(){let e=Ku(),t=Ju(e.text,e.surface,75);return Hx.map(e=>(0,U.jsx)(`div`,{className:`w-1.5 h-1.5 rounded-full`,style:{...e,background:t}},e.animationDelay))}var Wx=`flex items-center gap-2 text-sm font-medium min-h-5`;function Gx(){return(0,U.jsx)(`div`,{role:`status`,"aria-label":`Thinking`,className:Wx,children:(0,U.jsx)(Ux,{})})}function Kx({theme:e,color:t,children:n}){return(0,U.jsx)(`div`,{className:`flex flex-col w-full items-end`,children:(0,U.jsx)(`div`,{className:`max-w-[min(78%,64ch)] border px-3.5 py-2.5 rounded-md whitespace-pre-wrap wrap-break-word text-[15px] font-normal leading-[22px]`,style:{background:Zu(e.primary,e.surface,7),borderColor:Zu(e.primary,e.surface,16),color:t},children:n})})}var qx=(0,V.memo)(function({message:e,theme:t}){return e.role===`user`?(0,U.jsx)(Kx,{theme:t,color:t.text,children:e.content}):(0,U.jsxs)(`div`,{className:`flex flex-col gap-1 max-w-[82%]`,children:[(0,U.jsx)(`span`,{className:`text-[10px] font-medium tracking-[1.2px] uppercase leading-none`,style:{color:Ju(t.text,t.surface,65)},children:`Agent`}),(0,U.jsx)(`div`,{className:`wrap-break-word text-[15px] font-normal leading-[23px]`,style:{color:t.text},children:(0,U.jsx)(Ix,{text:e.content})})]})}),Jx=(0,V.memo)(function({className:e,log:t}){let n=Ku(),r=(0,V.useCallback)(e=>(0,U.jsx)(qx,{message:e,theme:n}),[n]),i=(0,V.useCallback)(e=>(0,U.jsx)(Vx,{toolCall:e}),[]),a=(0,V.useCallback)(e=>(0,U.jsx)(Kx,{theme:n,color:Ju(n.text,n.surface,65),children:e.partial?e.partial:(0,U.jsx)(Gx,{})}),[n]);return(0,U.jsx)(Hd,{className:e,log:t,style:{background:n.surface},contentClassName:`flex flex-col gap-4 p-7`,renderMessage:r,renderTool:i,renderTranscript:a,thinkingClassName:Wx,thinkingIndicator:(0,U.jsx)(Ux,{})})}),Yx=new Set([`listening`,`speaking`]);function Xx({icon:e,title:t,className:n}){let r=Bu();return(0,U.jsx)(id,{icon:e,title:t,state:r,pulsing:Yx.has(r),className:n,footer:(0,U.jsx)(md,{}),children:(0,U.jsx)(Jx,{})})}function Zx({sidebar:e,children:t,sidebarWidth:n=`18rem`,sidebarPosition:r=`left`,className:i}){let a=Ku(),o=(0,U.jsx)(`div`,{className:H(`shrink-0 flex flex-col overflow-y-auto`,`w-full max-h-[40vh] md:w-(--aai-sidebar-w) md:max-h-none`,r===`left`?`border-b md:border-b-0 md:border-r`:`border-t md:border-t-0 md:border-l order-last md:order-none`),style:{borderColor:a.border},children:e}),s={background:a.bg,"--aai-sidebar-w":n};return(0,U.jsxs)(`div`,{className:H(`flex flex-col md:flex-row min-h-screen md:h-screen`,i),style:s,children:[r===`left`&&o,(0,U.jsx)(`div`,{className:`flex-1 min-w-0 min-h-0`,children:t}),r===`right`&&o]})}function Qx({children:e,icon:t,title:n,subtitle:r,buttonText:i=`Start Conversation`,className:a}){let o=Lu(e=>e.started),{start:s}=Iu(),c=Ku();return o?e:(0,U.jsx)(`div`,{className:H(`flex items-center justify-center h-screen font-aai`,a),style:{background:c.bg},children:(0,U.jsxs)(`div`,{className:`flex flex-col items-center gap-5 border rounded-xl px-10 py-12 sm:px-16 sm:py-14 max-w-105 text-center`,style:{background:c.surface,borderColor:c.border,boxShadow:`0 4px 12px -2px rgb(20 18 12 / 0.08)`},children:[t??(0,U.jsx)(W,{size:24}),(0,U.jsx)(nd,{children:`Voice Agent`}),n&&(0,U.jsx)(`h1`,{className:`font-aai-serif font-normal text-[32px] leading-[1.15] tracking-[-0.2px] m-0 text-balance`,style:{color:c.text},children:n}),r&&(0,U.jsx)(`p`,{className:`text-[15px] leading-[22px] m-0 max-w-75`,style:{color:Ju(c.text,c.surface,75)},children:r}),(0,U.jsx)(od,{size:`lg`,className:`mt-2`,onClick:s,children:i})]})})}var $x=`modulepreload`,eS=function(e,t){return new URL(e,t).href},tS={},nS=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=eS(t,n),t=s(t),t in tS)return;tS[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:$x,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},rS=null;function iS(){return rS??=Promise.all([nS(()=>import(`./audio-cGFGID-2.js`),[],import.meta.url),nS(()=>import(`./capture-processor-BUABoo3_.js`).then(e=>e.default),__vite__mapDeps([0,1]),import.meta.url),nS(()=>import(`./playback-processor-ABOa11j0.js`).then(e=>e.default),__vite__mapDeps([2,1]),import.meta.url)]).catch(e=>{throw rS=null,e}),rS}async function aS(e,t,n){let r=await n??void 0;try{return await oS(e,t,r)}catch(e){throw r?.close(),e}}async function oS(e,t,n){let[{createVoiceIO:r},i,a]=await iS();return r({preConnect:n,onPreConnectAudio:t.onPreConnectAudio,sttSampleRate:e.sampleRate,ttsSampleRate:e.ttsSampleRate,captureWorkletSrc:i,playbackWorkletSrc:a,onMicData:t.onMicData,onPlaybackProgress:t.onProgress,onError:e=>t.onFailure(e.message)})}function sS(e){return e===`local`?globalThis.localStorage:globalThis.sessionStorage}function cS(e,t){try{return sS(e)?.getItem(t)??void 0}catch{return}}function lS(e,t,n){try{sS(e)?.setItem(t,n)}catch{}}function uS(e,t){try{sS(e)?.removeItem(t)}catch{}}function dS(e,t){try{return`${e}${new URL(t,globalThis.location?.href).href}`}catch{return`${e}${t}`}}var fS=`aai:client:`;function pS(e){let t=crypto.getRandomValues(new Uint8Array(e));return Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``)}var mS=pS(4),hS=new Map;function gS(e=pu()){let t=dS(fS,e),n=hS.get(t);if(n)return n;let r=cS(`local`,t),i=r&&Bl.test(r)?r:`browser-${pS(16)}`;return i!==r&&lS(`local`,t,i),hS.set(t,i),i}function _S(e){return`${gS(e)}-${mS}`}function vS(e,t){return e===`auto`?()=>gS(t):e}function yS(e){let t=(typeof e==`function`?e():e)?.trim();return t===``?void 0:t}function bS(e,t){let n=vS(e.client,e.platformUrl);return Object.freeze({platformUrl:e.platformUrl,clientId:()=>yS(n),holderId:()=>_S(e.platformUrl),sessionId:()=>t()?.sessionId(),ticket:()=>t()?.ticket()})}var xS={running:!1,recording:!1};function SS(e,t){e.turn.bump(),t.flush()}function CS(e){let{conn:t,updateState:n,agentState:r,sendJson:i,mic:a,preConnect:o}=e;function s(e){let i=t.turn.current();e.done().then(()=>{t.turn.isCurrent(i)&&n(r.apply({type:`LISTEN`}))}).catch(e=>{console.warn(`Audio playback done failed:`,e)})}return{open:(e,t)=>aS(e,t,o.take()),sendMicAudio:e=>{try{a.sendAudio(e)}catch{console.debug(`[aai-ui] sendAudio dropped: connection closed`)}},sendPreConnectAudio:e=>{try{a.sendBuffered(e)}catch{console.debug(`[aai-ui] pre-connect audio dropped: connection closed`)}},reportProgress:e=>{try{i({type:`playback_progress`,bufferedMs:e})}catch{}},announceReady:()=>i({type:`audio_ready`}),micLive:()=>n({recording:!0}),listen:()=>n(r.apply({type:`LISTEN`})),settleWhenDrained:s,reportFailure:e=>{n({...r.apply({type:`FAILED`,error:{code:`audio`,message:e,fatal:!1}}),...xS})},endTurn:()=>t.turn.bump(),release:e=>{e.close().catch(()=>{})}}}var wS=100,TS=Error(`audio path abandoned`),ES=(0,B.setup)({types:{},actors:{bringUp:(0,B.fromPromise)(async({input:e,signal:t})=>{let n=null,r=await e.effects.open(e.config,{onMicData:t=>e.effects.sendMicAudio(t),onPreConnectAudio:t=>e.effects.sendPreConnectAudio(t),onProgress:t=>{n&&e.send({type:`PROGRESS`,io:n,bufferedMs:t})},onFailure:t=>{n&&e.send({type:`IO_FAILED`,io:n,message:t})}});if(t.aborted)throw e.effects.release(r),TS;return n=r,r})},guards:{fromLiveIo:({context:e,event:t})=>(t.type===`PROGRESS`||t.type===`IO_FAILED`)&&e.io===t.io},actions:{rememberConfig:(0,B.assign)({config:({context:e,event:t})=>t.type===`START`?t.config:e.config}),buffer:(0,B.assign)({pending:({context:e,event:t})=>t.type===`CHUNK`&&e.pending.length<wS?[...e.pending,t.chunk]:e.pending}),rememberDone:(0,B.assign)({pendingDone:!0}),listenNow:({context:e})=>e.effects.listen(),forgetBuffered:(0,B.assign)({io:null,pending:[],pendingDone:!1}),endTurn:({context:e})=>e.effects.endTurn(),releaseIo:({context:e})=>{e.io&&e.effects.release(e.io)}}}).createMachine({id:`audioPath`,context:({input:e})=>({effects:e,io:null,pending:[],pendingDone:!1,config:null}),initial:`down`,on:{CHUNK:{actions:`buffer`},DONE:{actions:[`rememberDone`,`listenNow`]},TEARDOWN:`.down`},states:{down:{entry:[`endTurn`,`forgetBuffered`],on:{START:{target:`starting`,actions:`rememberConfig`}}},starting:{invoke:{src:`bringUp`,input:({context:e,self:t})=>({effects:e.effects,config:e.config??{sampleRate:0,ttsSampleRate:0},send:e=>{t.send(e)}}),onDone:{target:`up`,actions:[({context:e,event:t})=>{for(let n of e.pending)t.output.enqueue(n)},(0,B.assign)({io:({event:e})=>e.output,pending:[]}),({context:e,event:t})=>{e.effects.announceReady(),e.effects.micLive(),e.pendingDone?e.effects.settleWhenDrained(t.output):e.effects.listen()},(0,B.assign)({pendingDone:!1})]},onError:{target:`down`,actions:({context:e,event:t})=>{e.effects.reportFailure(`Microphone access failed: ${be(t.error)}`)}}}},up:{exit:`releaseIo`,on:{START:{target:`starting`,actions:`rememberConfig`},CHUNK:{actions:({context:e,event:t})=>e.io?.enqueue(t.chunk)},DONE:{actions:({context:e})=>{e.io&&e.effects.settleWhenDrained(e.io)}},PROGRESS:{guard:`fromLiveIo`,actions:({context:e,event:t})=>e.effects.reportProgress(t.bufferedMs)},IO_FAILED:{guard:`fromLiveIo`,target:`down`,actions:({context:e,event:t})=>e.effects.reportFailure(t.message)}}}}});function DS(e){let t=(0,B.createActor)(ES,{input:e}).start();return{phase:()=>t.getSnapshot().value,start:e=>{t.send({type:`START`,config:e})},enqueue:e=>{t.send({type:`CHUNK`,chunk:e})},done:()=>{t.send({type:`DONE`})},flush:()=>t.getSnapshot().context.io?.flush(),teardown:()=>{t.send({type:`TEARDOWN`})}}}var OS=1e3;function kS(e,t){let n=e.reason.trim();return n!==``&&e.code!==OS?n:t?`WebSocket connection error`:null}(!globalThis.EventTarget||!globalThis.Event)&&console.error(`
96
+ `)[0]??``);for(let e of[`query`,`url`,`question`])if(t[e])return String(t[e]);return fu(JSON.stringify(t))},[e.name,e.args]);return(0,U.jsx)(Fd,{title:o,detail:l,pending:a,icon:s,className:t,children:c?(0,U.jsxs)(U.Fragment,{children:[e.name===`run_code`&&!!e.args.code&&(0,U.jsx)(`pre`,{className:`font-aai-mono text-xs px-3.5 py-3 m-0 whitespace-pre-wrap wrap-break-word border-b`,style:{color:n.text,borderColor:n.border},children:String(e.args.code)}),e.result&&(0,U.jsx)(Bx,{result:e.result})]}):void 0})}),Hx=[0,.16,.32].map(e=>({animation:`aai-bounce 1.4s infinite ease-in-out both`,animationDelay:`${e}s`}));function Ux(){let e=Ku(),t=Ju(e.text,e.surface,75);return Hx.map(e=>(0,U.jsx)(`div`,{className:`w-1.5 h-1.5 rounded-full`,style:{...e,background:t}},e.animationDelay))}var Wx=`flex items-center gap-2 text-sm font-medium min-h-5`;function Gx(){return(0,U.jsx)(`div`,{role:`status`,"aria-label":`Thinking`,className:Wx,children:(0,U.jsx)(Ux,{})})}function Kx({theme:e,color:t,children:n}){return(0,U.jsx)(`div`,{className:`flex flex-col w-full items-end`,children:(0,U.jsx)(`div`,{className:`max-w-[min(78%,64ch)] border px-3.5 py-2.5 rounded-md whitespace-pre-wrap wrap-break-word text-[15px] font-normal leading-[22px]`,style:{background:Zu(e.primary,e.surface,7),borderColor:Zu(e.primary,e.surface,16),color:t},children:n})})}var qx=(0,V.memo)(function({message:e,theme:t}){return e.role===`user`?(0,U.jsx)(Kx,{theme:t,color:t.text,children:e.content}):(0,U.jsxs)(`div`,{className:`flex flex-col gap-1 max-w-[82%]`,children:[(0,U.jsx)(`span`,{className:`text-[10px] font-medium tracking-[1.2px] uppercase leading-none`,style:{color:Ju(t.text,t.surface,65)},children:`Agent`}),(0,U.jsx)(`div`,{className:`wrap-break-word text-[15px] font-normal leading-[23px]`,style:{color:t.text},children:(0,U.jsx)(Ix,{text:e.content})})]})}),Jx=(0,V.memo)(function({className:e,log:t}){let n=Ku(),r=(0,V.useCallback)(e=>(0,U.jsx)(qx,{message:e,theme:n}),[n]),i=(0,V.useCallback)(e=>(0,U.jsx)(Vx,{toolCall:e}),[]),a=(0,V.useCallback)(e=>(0,U.jsx)(Kx,{theme:n,color:Ju(n.text,n.surface,65),children:e.partial?e.partial:(0,U.jsx)(Gx,{})}),[n]);return(0,U.jsx)(Hd,{className:e,log:t,style:{background:n.surface},contentClassName:`flex flex-col gap-4 p-7`,renderMessage:r,renderTool:i,renderTranscript:a,thinkingClassName:Wx,thinkingIndicator:(0,U.jsx)(Ux,{})})}),Yx=new Set([`listening`,`speaking`]);function Xx({icon:e,title:t,className:n}){let r=Bu();return(0,U.jsx)(id,{icon:e,title:t,state:r,pulsing:Yx.has(r),className:n,footer:(0,U.jsx)(md,{}),children:(0,U.jsx)(Jx,{})})}function Zx({sidebar:e,children:t,sidebarWidth:n=`18rem`,sidebarPosition:r=`left`,className:i}){let a=Ku(),o=(0,U.jsx)(`div`,{className:H(`shrink-0 flex flex-col overflow-y-auto`,`w-full max-h-[40vh] md:w-(--aai-sidebar-w) md:max-h-none`,r===`left`?`border-b md:border-b-0 md:border-r`:`border-t md:border-t-0 md:border-l order-last md:order-none`),style:{borderColor:a.border},children:e}),s={background:a.bg,"--aai-sidebar-w":n};return(0,U.jsxs)(`div`,{className:H(`flex flex-col md:flex-row min-h-screen md:h-screen`,i),style:s,children:[r===`left`&&o,(0,U.jsx)(`div`,{className:`flex-1 min-w-0 min-h-0`,children:t}),r===`right`&&o]})}function Qx({children:e,icon:t,title:n,subtitle:r,buttonText:i=`Start Conversation`,className:a}){let o=Lu(e=>e.started),{start:s}=Iu(),c=Ku();return o?e:(0,U.jsx)(`div`,{className:H(`flex items-center justify-center h-screen font-aai`,a),style:{background:c.bg},children:(0,U.jsxs)(`div`,{className:`flex flex-col items-center gap-5 border rounded-xl px-10 py-12 sm:px-16 sm:py-14 max-w-105 text-center`,style:{background:c.surface,borderColor:c.border,boxShadow:`0 4px 12px -2px rgb(20 18 12 / 0.08)`},children:[t??(0,U.jsx)(W,{size:24}),(0,U.jsx)(nd,{children:`Voice Agent`}),n&&(0,U.jsx)(`h1`,{className:`font-aai-serif font-normal text-[32px] leading-[1.15] tracking-[-0.2px] m-0 text-balance`,style:{color:c.text},children:n}),r&&(0,U.jsx)(`p`,{className:`text-[15px] leading-[22px] m-0 max-w-75`,style:{color:Ju(c.text,c.surface,75)},children:r}),(0,U.jsx)(od,{size:`lg`,className:`mt-2`,onClick:s,children:i})]})})}var $x=`modulepreload`,eS=function(e,t){return new URL(e,t).href},tS={},nS=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=eS(t,n),t=s(t),t in tS)return;tS[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:$x,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},rS=null;function iS(){return rS??=Promise.all([nS(()=>import(`./audio-CABEDpag.js`),[],import.meta.url),nS(()=>import(`./capture-processor-X_vJUkv4.js`).then(e=>e.default),__vite__mapDeps([0,1]),import.meta.url),nS(()=>import(`./playback-processor-DdO-2G6m.js`).then(e=>e.default),__vite__mapDeps([2,1]),import.meta.url)]).catch(e=>{throw rS=null,e}),rS}async function aS(e,t,n){let r=await n??void 0;try{return await oS(e,t,r)}catch(e){throw r?.close(),e}}async function oS(e,t,n){let[{createVoiceIO:r},i,a]=await iS();return r({preConnect:n,onPreConnectAudio:t.onPreConnectAudio,sttSampleRate:e.sampleRate,ttsSampleRate:e.ttsSampleRate,captureWorkletSrc:i,playbackWorkletSrc:a,onMicData:t.onMicData,onPlaybackProgress:t.onProgress,onError:e=>t.onFailure(e.message)})}function sS(e){return e===`local`?globalThis.localStorage:globalThis.sessionStorage}function cS(e,t){try{return sS(e)?.getItem(t)??void 0}catch{return}}function lS(e,t,n){try{sS(e)?.setItem(t,n)}catch{}}function uS(e,t){try{sS(e)?.removeItem(t)}catch{}}function dS(e,t){try{return`${e}${new URL(t,globalThis.location?.href).href}`}catch{return`${e}${t}`}}var fS=`aai:client:`;function pS(e){let t=crypto.getRandomValues(new Uint8Array(e));return Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``)}var mS=pS(4),hS=new Map;function gS(e=pu()){let t=dS(fS,e),n=hS.get(t);if(n)return n;let r=cS(`local`,t),i=r&&Bl.test(r)?r:`browser-${pS(16)}`;return i!==r&&lS(`local`,t,i),hS.set(t,i),i}function _S(e){return`${gS(e)}-${mS}`}function vS(e,t){return e===`auto`?()=>gS(t):e}function yS(e){let t=(typeof e==`function`?e():e)?.trim();return t===``?void 0:t}function bS(e,t){let n=vS(e.client,e.platformUrl);return Object.freeze({platformUrl:e.platformUrl,clientId:()=>yS(n),holderId:()=>_S(e.platformUrl),sessionId:()=>t()?.sessionId(),ticket:()=>t()?.ticket()})}var xS={running:!1,recording:!1};function SS(e,t){e.turn.bump(),t.flush()}function CS(e){let{conn:t,updateState:n,agentState:r,sendJson:i,mic:a,preConnect:o}=e;function s(e){let i=t.turn.current();e.done().then(()=>{t.turn.isCurrent(i)&&n(r.apply({type:`LISTEN`}))}).catch(e=>{console.warn(`Audio playback done failed:`,e)})}return{open:(t,n)=>(e.openAudioPath??aS)(t,n,o.take()),sendMicAudio:e=>{try{a.sendAudio(e)}catch{console.debug(`[aai-ui] sendAudio dropped: connection closed`)}},sendPreConnectAudio:e=>{try{a.sendBuffered(e)}catch{console.debug(`[aai-ui] pre-connect audio dropped: connection closed`)}},reportProgress:e=>{try{i({type:`playback_progress`,bufferedMs:e})}catch{}},announceReady:()=>i({type:`audio_ready`}),micLive:()=>n({recording:!0}),listen:()=>n(r.apply({type:`LISTEN`})),settleWhenDrained:s,reportFailure:e=>{n({...r.apply({type:`FAILED`,error:{code:`audio`,message:e,fatal:!1}}),...xS})},endTurn:()=>t.turn.bump(),release:e=>{e.close().catch(()=>{})}}}var wS=100,TS=Error(`audio path abandoned`),ES=(0,B.setup)({types:{},actors:{bringUp:(0,B.fromPromise)(async({input:e,signal:t})=>{let n=null,r=await e.effects.open(e.config,{onMicData:t=>e.effects.sendMicAudio(t),onPreConnectAudio:t=>e.effects.sendPreConnectAudio(t),onProgress:t=>{n&&e.send({type:`PROGRESS`,io:n,bufferedMs:t})},onFailure:t=>{n&&e.send({type:`IO_FAILED`,io:n,message:t})}});if(t.aborted)throw e.effects.release(r),TS;return n=r,r})},guards:{fromLiveIo:({context:e,event:t})=>(t.type===`PROGRESS`||t.type===`IO_FAILED`)&&e.io===t.io},actions:{rememberConfig:(0,B.assign)({config:({context:e,event:t})=>t.type===`START`?t.config:e.config}),buffer:(0,B.assign)({pending:({context:e,event:t})=>t.type===`CHUNK`&&e.pending.length<wS?[...e.pending,t.chunk]:e.pending}),rememberDone:(0,B.assign)({pendingDone:!0}),listenNow:({context:e})=>e.effects.listen(),forgetBuffered:(0,B.assign)({io:null,pending:[],pendingDone:!1}),endTurn:({context:e})=>e.effects.endTurn(),releaseIo:({context:e})=>{e.io&&e.effects.release(e.io)}}}).createMachine({id:`audioPath`,context:({input:e})=>({effects:e,io:null,pending:[],pendingDone:!1,config:null}),initial:`down`,on:{CHUNK:{actions:`buffer`},DONE:{actions:[`rememberDone`,`listenNow`]},TEARDOWN:`.down`},states:{down:{entry:[`endTurn`,`forgetBuffered`],on:{START:{target:`starting`,actions:`rememberConfig`}}},starting:{invoke:{src:`bringUp`,input:({context:e,self:t})=>({effects:e.effects,config:e.config??{sampleRate:0,ttsSampleRate:0},send:e=>{t.send(e)}}),onDone:{target:`up`,actions:[({context:e,event:t})=>{for(let n of e.pending)t.output.enqueue(n)},(0,B.assign)({io:({event:e})=>e.output,pending:[]}),({context:e,event:t})=>{e.effects.announceReady(),e.effects.micLive(),e.pendingDone?e.effects.settleWhenDrained(t.output):e.effects.listen()},(0,B.assign)({pendingDone:!1})]},onError:{target:`down`,actions:({context:e,event:t})=>{e.effects.reportFailure(`Microphone access failed: ${be(t.error)}`)}}}},up:{exit:`releaseIo`,on:{START:{target:`starting`,actions:`rememberConfig`},CHUNK:{actions:({context:e,event:t})=>e.io?.enqueue(t.chunk)},DONE:{actions:({context:e})=>{e.io&&e.effects.settleWhenDrained(e.io)}},PROGRESS:{guard:`fromLiveIo`,actions:({context:e,event:t})=>e.effects.reportProgress(t.bufferedMs)},IO_FAILED:{guard:`fromLiveIo`,target:`down`,actions:({context:e,event:t})=>e.effects.reportFailure(t.message)}}}}});function DS(e){let t=(0,B.createActor)(ES,{input:e}).start();return{phase:()=>t.getSnapshot().value,start:e=>{t.send({type:`START`,config:e})},enqueue:e=>{t.send({type:`CHUNK`,chunk:e})},done:()=>{t.send({type:`DONE`})},flush:()=>t.getSnapshot().context.io?.flush(),teardown:()=>{t.send({type:`TEARDOWN`})}}}var OS=1e3;function kS(e,t){let n=e.reason.trim();return n!==``&&e.code!==OS?n:t?`WebSocket connection error`:null}(!globalThis.EventTarget||!globalThis.Event)&&console.error(`
97
97
  PartySocket requires a global 'EventTarget' class to be available!
98
98
  You can polyfill this global by adding this to your code before any partysocket imports:
99
99
 
@@ -114,13 +114,13 @@ const partysocket = new PartySocket({
114
114
  WebSocket: WS
115
115
  });
116
116
 
117
- `),BS=!0);let r=this._options.WebSocket||WebSocket;this._debug(`connect`,{url:e,protocols:n}),this._ws=n?new r(e,n):new r(e),this._ws.binaryType=this._binaryType,this._connectLock=!1,this._addListeners(),this._connectTimeout=setTimeout(()=>this._handleTimeout(),t)}).catch(e=>{this._connectLock=!1,this._handleError(new MS.ErrorEvent(Error(e.message),this))})}_handleTimeout(){this._debug(`timeout event`),this._handleError(new MS.ErrorEvent(Error(`TIMEOUT`),this))}_disconnect(e=1e3,t){if(this._clearTimeouts(),this._ws){this._removeListeners();try{(this._ws.readyState===this.OPEN||this._ws.readyState===this.CONNECTING)&&this._ws.close(e,t),this._handleClose(new MS.CloseEvent(e,t,this))}catch{}}}_acceptOpen(){this._debug(`accept open`),this._retryCount=0}_handleOpen=e=>{this._debug(`open event`);let{minUptime:t=zS.minUptime}=this._options;clearTimeout(this._connectTimeout),this._uptimeTimeout=setTimeout(()=>this._acceptOpen(),t),NS(this._ws,`WebSocket is not defined`),this._ws.binaryType=this._binaryType,this._messageQueue.forEach(e=>{this._ws?.send(e)}),this._messageQueue=[],this.onopen&&this.onopen(e),this.dispatchEvent(RS(e))};_handleMessage=e=>{this._debug(`message event`),this.onmessage&&this.onmessage(e),this.dispatchEvent(RS(e))};_handleError=e=>{this._debug(`error event`,e.message),this._disconnect(void 0,e.message===`TIMEOUT`?`timeout`:void 0),this.onerror&&this.onerror(e),this._debug(`exec error listeners`),this.dispatchEvent(RS(e)),this._connect()};_handleClose=e=>{this._debug(`close event`),this._clearTimeouts(),this._options.shouldReconnectOnClose&&!this._options.shouldReconnectOnClose(e)&&(this._shouldReconnect=!1),this._shouldReconnect&&this._connect(),this.onclose&&this.onclose(e),this.dispatchEvent(RS(e))};_removeListeners(){this._ws&&(this._debug(`removeListeners`),this._ws.removeEventListener(`open`,this._handleOpen),this._ws.removeEventListener(`close`,this._handleClose),this._ws.removeEventListener(`message`,this._handleMessage),this._ws.removeEventListener(`error`,this._handleError),this._ws.addEventListener(`error`,VS))}_addListeners(){this._ws&&(this._debug(`addListeners`),this._ws.addEventListener(`open`,this._handleOpen),this._ws.addEventListener(`close`,this._handleClose),this._ws.addEventListener(`message`,this._handleMessage),this._ws.addEventListener(`error`,this._handleError))}_clearTimeouts(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)}},US={minReconnectionDelay:1e3,maxReconnectionDelay:15e3,reconnectionDelayGrowFactor:2,maxRetries:10};function WS(e,t){return new HS(e,t,US)}function GS(e){return e instanceof HS&&(e.reconnect(),!0)}function KS(e){return e instanceof HS&&e.shouldReconnect&&e.retryCount<US.maxRetries}var qS=`aai:session:`;function JS(e){return dS(qS,e)}function YS(e){return cS(`session`,JS(e))}function XS(e,t){lS(`session`,JS(e),t)}function ZS(e){uS(`session`,JS(e))}var QS=`aai:session-ticket:`;function $S(e){return cS(`session`,dS(QS,e))}function eC(e,t){lS(`session`,dS(QS,e),t)}function tC(e){uS(`session`,dS(QS,e))}var nC=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function rC(e){let t=e?.trim();return t===``?void 0:t}async function iC(e,t){if(typeof e!=`function`)return rC(e);try{return rC(await e(t))}catch(e){console.warn("session-core: the `token` getter failed; dialing without a ticket",e);return}}function aC(e,t){if(typeof e!=`function`)return rC(e);let n=e(t);if(typeof n!=`string`&&n!==void 0)throw TypeError("VoiceSessionOptions.token: an injected `WebSocket` opens synchronously, so its `token` getter must return a string, not a Promise");return rC(n)}function oC(e){if(e===void 0)return{};let t=`${iu}${e}`;return nC.test(t)?{protocols:[ru,t]}:{queryToken:e}}function sC(e,t,n={}){return uC(hu(e,`websocket`),t,n)}function cC(e,t,n={}){return uC(new URL(e),t,n)}var lC={"https:":`wss:`,"http:":`ws:`};function uC(e,t,n){return e.protocol=lC[e.protocol]??e.protocol,t&&e.searchParams.set(`sessionId`,t),n.location&&e.searchParams.set(`location`,n.location),n.phone&&e.searchParams.set(`phone`,n.phone),n.client&&e.searchParams.set(`client`,n.client),e}function dC(e,t){return t.queryToken!==void 0&&e.searchParams.set(`token`,t.queryToken),e.toString()}function fC(e,t){let n=e.resumeSessionId??YS(e.platformUrl),r,i=$S(e.platformUrl),a;function o(e){e!==a&&(a=e,t?.())}function s(){return{location:yS(e.location),phone:yS(e.phone),client:yS(e.client)}}async function c(){let t=iC(e.token,{sessionId:n}),a=n===void 0?void 0:i,o=r===!1?null:await vu(e.platformUrl,void 0,a);o&&(r=o.sessionUrl!==void 0||o.sessionToken!==void 0);let c=await t;c===void 0&&o?.sessionToken!==void 0&&(i=o.sessionToken,eC(e.platformUrl,i));let l=oC(c??o?.sessionToken);return{url:dC(o?.sessionUrl?cC(o.sessionUrl,n,s()):sC(e.platformUrl,n,s()),l),protocols:l.protocols}}let l;return{open:()=>{if(e.WebSocket){let t=oC(aC(e.token,{sessionId:n})),r=dC(sC(e.platformUrl,n,s()),t);return t.protocols?new e.WebSocket(r,t.protocols):new e.WebSocket(r)}return WS(async()=>(l=c(),(await l).url),async()=>(await(l??c())).protocols??null)},configured:t=>{n=t,XS(e.platformUrl,t),o(t)},adopt:t=>{n=t,XS(e.platformUrl,t)},forget:()=>{n=void 0,ZS(e.platformUrl),i=void 0,tC(e.platformUrl),o(void 0)},sessionId:()=>a,ticket:()=>{if(e.token!==void 0)return typeof e.token==`function`?iC(e.token,{sessionId:void 0}):aC(e.token,{sessionId:void 0});if(r!==!1)return vu(e.platformUrl).then(e=>(e&&(r=e.sessionUrl!==void 0||e.sessionToken!==void 0),e?.sessionToken))}}}var pC={code:`connection`,message:`Agent did not complete the session handshake`,fatal:!1},mC=1e4,hC=3;function gC(e){let t,n=0;function r(){t!==void 0&&(clearTimeout(t),t=void 0)}function i(){if(t=void 0,n+=1,n<hC&&GS(e.socket)){e.onRetry();return}e.onExhausted()}return e.signal.addEventListener(`abort`,r),{arm(){r(),t=setTimeout(i,mC)},disarm:r,succeeded(){r(),n=0}}}var _C=200,vC=200,yC={messages:[],toolCalls:[],customEvents:[],agentState:null,userTranscript:null,agentTranscript:null,error:null};function bC(e,t,n){if(e.length<n)return[...e,t];let r=e.slice(e.length-n+1);return r.push(t),r}function xC(e){let{getSnapshot:t,updateState:n,conn:r,agentState:i,audio:a}=e,o=0,s=0,c=0;function l(e,r){n({customEvents:bC(t().customEvents,{id:++o,event:e,data:r},_C)})}function u(e){r.turn.bump(),n({userTranscript:null,messages:bC(t().messages,{id:++s,role:`user`,content:e},vC),...i.apply({type:`THINK`})})}function d(e){n({agentTranscript:e})}function f(){let e=t().agentTranscript;if(e===null||e.length===0){n({agentTranscript:null});return}n({agentTranscript:null,messages:bC(t().messages,{id:++s,role:`assistant`,content:e},vC)})}function p(){n(i.apply({type:`ACTIVITY`}))}function m(e={}){n({...e,...i.apply({type:`LISTEN`})})}function h(e){console.error(`Agent error:`,e.message);let t={code:e.code,message:e.message,fatal:e.fatal};e.fatal?(a.teardown(),n({...i.apply({type:`FATAL`,error:t}),...xS})):n(i.apply({type:`TURN_ERROR`,error:t}))}function g(e){switch(e.type!==`error.reported`&&p(),e.type){case`speech.started`:n({userTranscript:``});break;case`speech.stopped`:break;case`userTranscript.committed`:u(e.text);break;case`userTranscript.updated`:n({userTranscript:e.text});break;case`agentTranscript.updated`:case`agentTranscript.committed`:d(e.text);break;case`tool.called`:n({toolCalls:bC(t().toolCalls,{callId:e.toolCallId,name:e.toolName,args:xl(e.args),status:`pending`,seq:++c,afterMessageId:t().messages.at(-1)?.id??-1},vC)});break;case`tool.completed`:{let r=t().toolCalls,i=r.findIndex(t=>t.callId===e.toolCallId),a=r[i];if(!a)break;let o=[...r];o[i]={...a,status:`done`,result:e.result},n({toolCalls:o});break}case`reply.completed`:f(),m();break;case`reply.cancelled`:SS(r,a),f(),m({userTranscript:null});break;case`session.reset`:{SS(r,a);let e=i.apply({type:`RESET`});n(i.fatal()?e:{...yC,...e});break}case`custom.emitted`:l(e.event,e.data);break;case`state.updated`:n({agentState:SC(t().agentState,e.state)});break;case`history.restored`:{s=0,c=0;let t=e.messages.slice(-vC).map(e=>({id:++s,role:e.role,content:e.content}));n({messages:t,toolCalls:e.toolCalls.slice(-vC).map(e=>({callId:e.callId,name:e.name,args:xl(e.args),status:e.status,...w({result:e.result}),seq:++c,afterMessageId:t[e.afterMessageIndex]?.id??-1}))});break}case`error.reported`:h(e);break;case`session.timedOut`:r.retiredByServer=!0}}function _(e){n(i.apply({type:`SPEAK`})),a.enqueue(e)}function v(){a.done()}function y(e){if(e instanceof ArrayBuffer){_(e);return}if(typeof e!=`string`){console.warn(`session-core: non-string, non-binary frame received; dropping`);return}let t=T(e);if(t===void 0){console.warn(`session-core: invalid JSON; dropping`);return}let n=tu($l,t);if(!n.ok){n.malformed&&console.warn(`session-core: malformed server message`,n.error);return}let r=n.data;if(r.type===`session.configured`)return i.apply({type:`HANDSHAKE_COMPLETE`}),{sampleRate:r.sampleRate,ttsSampleRate:r.ttsSampleRate,sid:r.sessionId};if(r.type===`audio.completed`){v();return}g(r)}return{handleMessage:y}}function SC(e,t){if(e===null)return t;let n={};for(let[r,i]of Object.entries(t)){let t=e[r];n[r]=r in e&&JSON.stringify(t)===JSON.stringify(i)?t:i}return n}function CC(e){let t=new ArrayBuffer(0),n=e=>(t.byteLength!==e&&(t=new ArrayBuffer(e)),t);return{sendAudio(t){let r=e.conn.ws;r?.readyState===1&&(r.bufferedAmount>65536||r.send(e.snapshot().micMuted?n(t.byteLength):t))},sendBuffered(t){let r=e.conn.ws;if(r?.readyState!==1)return;let i=e.snapshot().micMuted;for(let e of t)r.send(i?n(e.byteLength):e)},setMicMuted(t){e.updateState({micMuted:t})}}}var wC=16e3;function TC(e){let t=null;return{begin(){iS().catch(()=>{}),e&&t===null&&(t=Promise.all([nS(()=>import(`./audio-cGFGID-2.js`),[],import.meta.url),iS()]).then(([{openPreConnectCapture:e},[,t]])=>e({sampleRate:wC,captureWorkletSrc:t,maxSeconds:10})).catch(()=>null))},take(){let e=t;return t=null,e},release(){let e=t;t=null,e?.then(e=>e?.close())}}}var EC=(0,B.not)((0,B.stateIn)({fatal:`yes`})),DC=(0,B.setup)({types:{},guards:{hasError:({context:e})=>e.error!==null},actions:{clearError:(0,B.assign)({error:null}),setError:(0,B.assign)({error:({context:e,event:t})=>t.type===`TURN_ERROR`||t.type===`FATAL`||t.type===`FAILED`?t.error:e.error})}}).createMachine({id:`sessionState`,type:`parallel`,context:{error:null},states:{phase:{initial:`disconnected`,on:{CONNECT:{target:`.connecting`,actions:`clearError`},CLOSED:{target:`.disconnected`,actions:`clearError`},DISCONNECT:`.disconnected`,END:{target:`.disconnected`,actions:`clearError`},TURN_ERROR:{actions:`setError`},FATAL:{target:`.error`,actions:`setError`},FAILED:{target:`.error`,actions:`setError`},LISTEN:{guard:EC,target:`.listening`},RESET:{guard:EC,target:`.listening`,actions:`clearError`},THINK:{guard:EC,target:`.thinking`},ACTIVITY:{guard:(0,B.and)([EC,`hasError`]),actions:`clearError`}},states:{disconnected:{on:{SPEAK:{guard:(0,B.not)(`hasError`),target:`speaking`}}},connecting:{on:{SOCKET_OPEN:`ready`}},ready:{on:{SPEAK:`speaking`}},listening:{on:{SPEAK:`speaking`}},thinking:{on:{SPEAK:`speaking`}},speaking:{},error:{on:{ACTIVITY:{guard:EC,target:`listening`,actions:`clearError`},CLOSED:{}}}}},fatal:{initial:`no`,states:{no:{on:{FATAL:`yes`}},yes:{on:{HANDSHAKE_COMPLETE:`no`}}}}}});function OC(){let e=(0,B.createActor)(DC).start();function t(){let t=e.getSnapshot();return{state:t.value.phase,error:t.context.error}}return{snapshot:t,apply(n){return e.send(n),t()},fatal:()=>e.getSnapshot().matches({fatal:`yes`})}}function kC(e){let{state:t}=e.snapshot();(t===`speaking`||t===`thinking`)&&(e.bargeIn(),e.updateState(e.agentState.apply({type:`LISTEN`})))}function AC(e){function t(t){kC(e),e.sendJson({type:`user_text`,text:t})}return{userTurn:MC(e),sendText(n,r){let i=n.trim();if(i!==``){if(e.connected()&&e.queued.length===0){t(i);return}(e.queued.length!==0||r?.connect===!0)&&(e.queued.push(i),e.open())}},flushQueued(){if(e.connected())for(let n of e.queued.splice(0))t(n)},sendToolResult(t,n){e.connected()&&e.sendJson({type:`tool_result`,toolCallId:t,...jC(n)})}}}function jC(e){if(`error`in e)return{result:``,error:e.error};try{return{result:JSON.stringify(e.result??null)??`null`}}catch(e){return{result:``,error:`Tool result is not JSON-serializable: ${String(e)}`}}}function MC(e){return{start(){e.connected()&&(kC(e),e.sendJson({type:`user_turn_start`}))},commit(){e.connected()&&e.sendJson({type:`user_turn_commit`})},clear(){e.connected()&&(e.updateState({userTranscript:null}),e.sendJson({type:`user_turn_clear`}))}}}function NC(e){let t={...yC,state:`disconnected`,contentVersion:0,started:!1,running:!1,recording:!1,micMuted:!1,apiUrl:sC(e.platformUrl).toString()},n=new Set;function r(){for(let e of n)e()}let i=[`messages`,`toolCalls`,`userTranscript`,`agentTranscript`];function a(e,n){return n[e]===t[e]}let o=[];function s(e){e.running===!1&&(o.length=0),!Object.keys(e).every(t=>a(t,e))&&(t=i.some(n=>n in e&&e[n]!==t[n])?{...t,...e,contentVersion:t.contentVersion+1}:{...t,...e},r())}function c(){return t}function l(e){return n.add(e),()=>{n.delete(e)}}let u=OC(),d={ws:null,retiredByServer:!1,turn:Al()},f=null,p=bS(e,()=>m),m=fC({...e,client:p.clientId},r);function h(){s(yC)}function g(){return d.ws?.readyState===1?d.ws:null}function _(e){g()?.send(JSON.stringify(e))}let v=CC({conn:d,snapshot:()=>t,updateState:s}),y=TC(e.preConnectAudio!==!1),b=DS(CS({conn:d,updateState:s,agentState:u,sendJson:_,mic:v,preConnect:y})),{handleMessage:x}=xC({getSnapshot:c,updateState:s,conn:d,agentState:u,audio:b});function ee(){f?.abort(),f=null,y.release(),b.teardown(),d.ws?.close(),d.ws=null}function S(t){m.configured(t.sid),e.onSessionId?.(t.sid),E(),b.start(t)}function C(e){if(e?.signal?.aborted){ie();return}s(u.apply({type:`CONNECT`})),ee(),y.begin(),d.retiredByServer=!1;let t=new AbortController;f=t;let{signal:n}=t;e?.signal&&e.signal.addEventListener(`abort`,()=>ie(),{signal:n});let r=m.open();r.binaryType=`arraybuffer`,d.ws=r;let i=!1,a=gC({socket:r,signal:n,onRetry:()=>{b.teardown(),s({...u.apply({type:`CONNECT`}),recording:!1})},onExhausted:()=>{y.release(),b.teardown(),t.abort(),r.close(),d.ws=null,s({...u.apply({type:`FAILED`,error:pC}),...xS})}});r.addEventListener(`open`,()=>{s(u.apply({type:`SOCKET_OPEN`})),a.arm()},{signal:n}),r.addEventListener(`message`,e=>{let t=x(e.data);t&&(a.succeeded(),S(t))},{signal:n}),r.addEventListener(`error`,()=>{i=!0},{signal:n}),r.addEventListener(`close`,e=>{if(n.aborted)return;if(a.disarm(),b.teardown(),!(d.retiredByServer||u.fatal())&&KS(r)){i=!1,s({...u.apply({type:`CONNECT`}),recording:!1});return}y.release(),t.abort(),r.close(),d.ws=null;let o=kS(e,i);s({...o===null?u.apply({type:`CLOSED`}):u.apply({type:`FAILED`,error:{code:`connection`,message:o,fatal:!1}}),...xS})},{signal:n})}function w(){g()&&(SS(d,b),s(u.apply({type:`LISTEN`})),_({type:`cancel`}))}let{userTurn:T,sendText:te,flushQueued:E,sendToolResult:ne}=AC({snapshot:()=>t,connected:()=>g()!==null,queued:o,open:()=>{t.running||(t.started?oe:ae)()},bargeIn:()=>SS(d,b),agentState:u,updateState:s,sendJson:_});function re(){if(SS(d,b),g()){_({type:`reset`});return}se(),ae()}function ie(){ee(),s({...u.apply({type:`DISCONNECT`}),...xS})}function ae(){s({started:!0,running:!0}),C()}function oe(){t.running?ie():(s({running:!0}),C())}function se(){ee(),m.forget(),s({...yC,...u.apply({type:`END`}),started:!1,...xS})}function ce(){se(),ae()}function le(e){if(!Vl.test(e))throw RangeError(`resume: "${e}" is not a session id (${Vl})`);se(),m.adopt(e),ae()}return{getSnapshot:c,subscribe:l,connect:C,cancel:w,userTurn:Object.freeze(T),identity:p,sendText:te,sendToolResult:ne,setMicMuted:v.setMicMuted,resetState:h,reset:re,disconnect:ie,start:ae,toggle:oe,end:se,restart:ce,resume:le,[Symbol.dispose](){ie()}}}function PC(e=`#app`){if(typeof e!=`string`)return e;let t=document.querySelector(e);if(!t)throw Error(`Element not found: ${e} — no element matches that selector when the mount runs. Add \`<div id="app"></div>\` (or the element your selector names) to the page before the script, or pass the element itself as the mount's \`target\` option.`);return t}function FC(e,t,n){let r=(0,ju.createRoot)(e);return(0,Au.flushSync)(()=>{r.render(t)}),{dispose(){r.unmount(),n?.()},[Symbol.dispose](){this.dispose()}}}function IC({name:e,icon:t,subtitle:n,buttonText:r,Sidebar:i,...a}){let o=(0,U.jsx)(Xx,{title:e,icon:t});return(0,U.jsx)(Qx,{title:e,icon:t,subtitle:n,buttonText:r,children:i?(0,U.jsx)(Zx,{sidebar:(0,U.jsx)(i,{}),sidebarWidth:a.sidebarWidth,sidebarPosition:a.sidebarPosition,children:o}):o})}function LC({platformUrl:e,...t}){let{name:n}=t,[r,i]=(0,V.useState)(null),a=n===void 0;return(0,V.useEffect)(()=>{if(!a)return;let t=!1;return yu(e).then(e=>{t||i(e)}),()=>{t=!0}},[e,a]),(0,U.jsx)(IC,{...t,name:n??r?.name})}function RC(e,t){let n=e.component,r=e.sidebar;return n?r?(0,U.jsx)(Zx,{sidebar:(0,U.jsx)(r,{}),sidebarWidth:e.sidebarWidth,sidebarPosition:e.sidebarPosition,children:(0,U.jsx)(n,{})}):(0,U.jsx)(n,{}):(0,U.jsx)(LC,{platformUrl:t,name:e.name,icon:e.icon,subtitle:e.subtitle,buttonText:e.buttonText,Sidebar:r,sidebarWidth:e.sidebarWidth,sidebarPosition:e.sidebarPosition})}function zC(e){let t=PC(e.target),n=e.platformUrl??pu(),r=NC({platformUrl:n,onSessionId:e.onSessionId,resumeSessionId:e.resumeSessionId,location:e.location,phone:e.phone,client:e.client,token:e.token,WebSocket:e.WebSocket});mu(e.name);let i=RC(e,n),a=e.tools??{};return{session:r,...FC(t,(0,V.createElement)(Lx.Provider,{value:a},(0,V.createElement)(Uu,{value:e.theme},(0,V.createElement)(Fu,{value:r},i))),()=>r[Symbol.dispose]())}}var BC=(0,V.createContext)(void 0),VC=BC.Provider;function HC(){let[e,t]=(0,V.useState)(()=>new Set),n=(0,V.useCallback)((e,n)=>{t(t=>{if(n===t.has(e))return t;let r=new Set(t);return n?r.add(e):r.delete(e),r})},[]);return{pending:e.size>0,declare:n}}function UC(e){let t=(0,V.useContext)(BC),n=(0,V.useId)();(0,V.useEffect)(()=>{if(t)return t(n,e),()=>t(n,!1)},[t,n,e])}async function WC(e){let t={};for(let n of Array.from(e.elements))n instanceof HTMLInputElement?await KC(n,t):(n instanceof HTMLTextAreaElement||n instanceof HTMLSelectElement)&&n.name!==``&&!n.disabled&&(t[n.name]=n instanceof HTMLSelectElement?GC(n):n.value);return t}function GC(e){return e.multiple?Array.from(e.selectedOptions,e=>e.value):e.value}async function KC(e,t){if(!(e.name===``||e.disabled))switch(e.type){case`checkbox`:t[e.name]=e.checked;return;case`radio`:e.checked&&(t[e.name]=e.value);return;case`number`:case`range`:{if(e.value===``)return;let n=e.valueAsNumber;t[e.name]=Number.isNaN(n)?e.value:n;return}case`file`:{let n=Array.from(e.files??[]);if(n.length===0)return;let r=await qC(n,JC(e.dataset.aaiRead));t[e.name]=e.multiple?r:r[0];return}default:t[e.name]=e.value}}function qC(e,t){return t===`upload`?Promise.resolve([...e]):Promise.all(e.map(e=>YC(e,t)))}function JC(e){return e===`text`||e===`dataUrl`||e===`upload`?e:`none`}async function YC(e,t){let n={name:e.name,size:e.size,type:e.type,lastModified:e.lastModified};return t===`none`?n:{...n,content:t===`text`?await e.text():await XC(e)}}function XC(e){return new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(r.error??Error(`Could not read ${e.name}`)),r.onload=()=>t(String(r.result)),r.readAsDataURL(e)})}function ZC({label:e,hint:t,htmlFor:n,className:r,children:i}){let a=Ku();return(0,U.jsxs)(`div`,{className:H(`flex flex-col gap-1.5`,r),children:[e!==void 0&&(0,U.jsx)(`label`,{htmlFor:n,className:`text-[11px] font-medium uppercase tracking-[1.2px]`,style:{color:a.text},children:e}),i,t!==void 0&&(0,U.jsx)(`p`,{className:`text-xs opacity-60`,style:{color:a.text},children:t})]})}function QC(){let e=Ku();return{className:H(`w-full rounded-aai border px-3 py-2 text-sm font-aai`,$u,`disabled:cursor-not-allowed disabled:opacity-50`),style:{background:e.surface,color:e.text,borderColor:e.border,...ed(e.primary)}}}function $C(){let e=Ku(),t=QC();return{className:H(t.className,`cursor-pointer py-1.5 pl-1.5`,`file:mr-3 file:cursor-pointer file:rounded-aai file:border-0 file:px-3 file:py-1.5`,`file:text-sm file:font-medium file:font-aai`,`file:[background:var(--aai-file-button-bg)] file:[color:var(--aai-file-button-fg)]`),style:{...t.style,"--aai-file-button-bg":e.primary,"--aai-file-button-fg":e.surface}}}function ew({defaultType:e,name:t,label:n,hint:r,className:i,...a}){let o=(0,V.useId)(),s=QC();return(0,U.jsx)(ZC,{label:n,hint:r,htmlFor:o,className:i,children:(0,U.jsx)(`input`,{id:o,name:t,type:e,...s,...a})})}function tw(e){return(0,U.jsx)(ew,{defaultType:`text`,...e})}function nw(e){return(0,U.jsx)(ew,{defaultType:`number`,...e})}function rw({name:e,label:t,hint:n,className:r,options:i,children:a,...o}){let s=(0,V.useId)(),c=QC();return(0,U.jsx)(ZC,{label:t,hint:n,htmlFor:s,className:r,children:(0,U.jsx)(`select`,{id:s,name:e,...c,...o,children:a??i?.map(e=>{let t=typeof e==`string`?e:e.value,n=typeof e==`string`?e:e.label;return(0,U.jsx)(`option`,{value:t,children:n},t)})})})}function iw({name:e,label:t,hint:n,className:r,...i}){let a=(0,V.useId)(),o=Ku();return(0,U.jsx)(ZC,{hint:n,className:r,children:(0,U.jsxs)(`label`,{htmlFor:a,className:`flex items-center gap-2 text-sm`,style:{color:o.text},children:[(0,U.jsx)(`input`,{id:a,name:e,type:`checkbox`,style:{accentColor:o.primary},...i}),t]})})}function aw({name:e,label:t,hint:n,className:r,read:i=`none`,upload:a=!1,...o}){let s=(0,V.useId)(),c=$C();return(0,U.jsx)(ZC,{label:t,hint:n,htmlFor:s,className:r,children:(0,U.jsx)(`input`,{id:s,name:e,type:`file`,"data-aai-read":a?`upload`:i,...c,...o})})}function ow({onSubmit:e,error:t,children:n,className:r,...i}){let a=Ku(),[o,s]=(0,V.useState)(!1),{pending:c,declare:l}=HC(),u=(0,V.useCallback)(t=>{if(t.preventDefault(),o||c)return;let n=t.currentTarget;s(!0),(async()=>{try{await e(await WC(n))}finally{s(!1)}})()},[o,c,e]);return(0,U.jsxs)(`form`,{onSubmit:u,className:H(`flex flex-col gap-5 font-aai`,r),...i,children:[(0,U.jsx)(`fieldset`,{disabled:o||c,className:`contents`,children:(0,U.jsx)(VC,{value:l,children:n})}),t!==void 0&&t!==``&&(0,U.jsx)(`p`,{role:`alert`,className:`text-sm`,style:{color:a.primary},children:t})]})}function sw({children:e,pending:t=!1,pendingLabel:n=`Working…`,size:r,variant:i,className:a,...o}){return(0,U.jsx)(od,{type:`submit`,disabled:t,...w({size:r,variant:i,className:a}),...o,children:t?n:e})}var cw=12;function lw({upload:e,onPause:t,onResume:n,className:r}){let i=Ku(),a=(0,V.useId)();if(!e)return null;let{name:o,index:s,count:c,loaded:l,total:u,fraction:d,paused:f}=e,p=t&&n?f?n:t:void 0,m=d===void 0?void 0:Math.round(d*100),h=Ju(i.text,i.surface,65);return(0,U.jsxs)(`div`,{className:H(r??`flex flex-col gap-1.5`),children:[(0,U.jsxs)(`div`,{className:`flex items-baseline justify-between gap-4 text-xs`,children:[(0,U.jsx)(`span`,{id:a,className:`truncate`,style:{color:h},children:`${f?`Paused`:`Uploading`} ${o}${c>1?` (${s} of ${c})`:``}`}),(0,U.jsxs)(`div`,{className:`flex shrink-0 items-baseline gap-3`,children:[(0,U.jsx)(`span`,{className:`tabular-nums`,style:{color:h},children:u===void 0?ve(l):`${ve(l)} of ${ve(u)}`}),p&&(0,U.jsx)(od,{type:`button`,variant:`ghost`,className:`h-6 px-2 text-[0.625rem]`,onClick:p,children:f?`Resume`:`Pause`})]})]}),(0,U.jsx)(`div`,{role:`progressbar`,"aria-labelledby":a,"aria-valuemin":0,"aria-valuemax":100,...w({"aria-valuenow":m}),className:`h-1.5 w-full overflow-hidden rounded-full`,style:{backgroundColor:Ju(i.text,i.surface,cw)},children:(0,U.jsx)(`div`,{className:H(`h-full rounded-full transition-[width] duration-200 ease-out`,m===void 0&&!f&&`animate-pulse`),style:{backgroundColor:i.primary,width:m===void 0?`100%`:`${m}%`}})})]})}var uw=class extends Error{constructor(e,t){super(e),this.name=`ParseError`,this.type=t.type,this.field=t.field,this.value=t.value,this.line=t.line}},dw=10,fw=13,pw=32,mw=6;function hw(e){if(typeof e==`function`)throw TypeError("`config` must be an object, got a function instead. Did you mean `createParser({onEvent: fn})`?");let{maxBufferSize:t,onComment:n,onError:r,onEvent:i,onId:a,onRetry:o}=e,s=[],c=0,l=``,u,d=``,f=0,p,m=!1,h=!1,g=!1;function _(e){if(m)throw Error("Cannot feed parser: it was terminated after exceeding the configured max buffer size. Call `reset()` to resume parsing.");if(l!==void 0){if(e=l+e,e===``||e===`ï`||e===`ï»`){l=e;return}l=void 0,e=e.replace(/^(?:\uFEFF|\xEF\xBB\xBF)/,``)}if((h||g)&&(e=v(e),!e))return;if(!s.length){let t=ee(e);t!==``&&y(t),x();return}if(e.indexOf(`
118
- `)===-1&&e.indexOf(`\r`)===-1){if(c<mw&&!b(s.join(``)+e.slice(0,mw-c))){s.length=0,c=0,h=!0;return}s.push(e),c+=e.length,x();return}s.push(e);let t=s.join(``);s.length=0,c=0,y(ee(t)),x()}function v(e){if(e.length===0)return e;if(g)return g=!1,e.charCodeAt(0)===dw?e.slice(1):e;let t=e.indexOf(`\r`),n=e.indexOf(`
119
- `),r=t===-1?n:n===-1||t<n?t:n;return r===-1?``:r===e.length-1&&e.charCodeAt(r)===fw?(h=!1,g=!0,``):(h=!1,e.slice(r+(e.charCodeAt(r)===fw&&e.charCodeAt(r+1)===dw?2:1)))}function y(e){if(e){if(e.charCodeAt(e.length-1)===fw){S(e,0,e.length-1),g=!0;return}if(b(e)){s.push(e),c=e.length;return}h=!0}}function b(e){let t=e.charCodeAt(0);return t===58&&!!n||t===100&&vw(e,`data`)||t===101&&vw(e,`event`)||t===105&&vw(e,`id`)||t===114&&vw(e,`retry`)}function x(){t!==void 0&&(c+d.length<=t||(m=!0,s.length=0,c=0,u=void 0,d=``,f=0,p=void 0,h=!1,g=!1,r?.(new uw(`Buffered data exceeded max buffer size of ${t} characters`,{type:`max-buffer-size-exceeded`}))))}function ee(e){let t=0;if(e.indexOf(`\r`)===-1){let n=e.indexOf(`
117
+ `),BS=!0);let r=this._options.WebSocket||WebSocket;this._debug(`connect`,{url:e,protocols:n}),this._ws=n?new r(e,n):new r(e),this._ws.binaryType=this._binaryType,this._connectLock=!1,this._addListeners(),this._connectTimeout=setTimeout(()=>this._handleTimeout(),t)}).catch(e=>{this._connectLock=!1,this._handleError(new MS.ErrorEvent(Error(e.message),this))})}_handleTimeout(){this._debug(`timeout event`),this._handleError(new MS.ErrorEvent(Error(`TIMEOUT`),this))}_disconnect(e=1e3,t){if(this._clearTimeouts(),this._ws){this._removeListeners();try{(this._ws.readyState===this.OPEN||this._ws.readyState===this.CONNECTING)&&this._ws.close(e,t),this._handleClose(new MS.CloseEvent(e,t,this))}catch{}}}_acceptOpen(){this._debug(`accept open`),this._retryCount=0}_handleOpen=e=>{this._debug(`open event`);let{minUptime:t=zS.minUptime}=this._options;clearTimeout(this._connectTimeout),this._uptimeTimeout=setTimeout(()=>this._acceptOpen(),t),NS(this._ws,`WebSocket is not defined`),this._ws.binaryType=this._binaryType,this._messageQueue.forEach(e=>{this._ws?.send(e)}),this._messageQueue=[],this.onopen&&this.onopen(e),this.dispatchEvent(RS(e))};_handleMessage=e=>{this._debug(`message event`),this.onmessage&&this.onmessage(e),this.dispatchEvent(RS(e))};_handleError=e=>{this._debug(`error event`,e.message),this._disconnect(void 0,e.message===`TIMEOUT`?`timeout`:void 0),this.onerror&&this.onerror(e),this._debug(`exec error listeners`),this.dispatchEvent(RS(e)),this._connect()};_handleClose=e=>{this._debug(`close event`),this._clearTimeouts(),this._options.shouldReconnectOnClose&&!this._options.shouldReconnectOnClose(e)&&(this._shouldReconnect=!1),this._shouldReconnect&&this._connect(),this.onclose&&this.onclose(e),this.dispatchEvent(RS(e))};_removeListeners(){this._ws&&(this._debug(`removeListeners`),this._ws.removeEventListener(`open`,this._handleOpen),this._ws.removeEventListener(`close`,this._handleClose),this._ws.removeEventListener(`message`,this._handleMessage),this._ws.removeEventListener(`error`,this._handleError),this._ws.addEventListener(`error`,VS))}_addListeners(){this._ws&&(this._debug(`addListeners`),this._ws.addEventListener(`open`,this._handleOpen),this._ws.addEventListener(`close`,this._handleClose),this._ws.addEventListener(`message`,this._handleMessage),this._ws.addEventListener(`error`,this._handleError))}_clearTimeouts(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)}},US={minReconnectionDelay:1e3,maxReconnectionDelay:15e3,reconnectionDelayGrowFactor:2,maxRetries:10};function WS(e,t){return new HS(e,t,US)}function GS(e){return e instanceof HS&&(e.reconnect(),!0)}function KS(e){return e instanceof HS&&e.shouldReconnect&&e.retryCount<US.maxRetries}var qS=`aai:session:`;function JS(e){return dS(qS,e)}function YS(e){return cS(`session`,JS(e))}function XS(e,t){lS(`session`,JS(e),t)}function ZS(e){uS(`session`,JS(e))}var QS=`aai:session-ticket:`;function $S(e){return cS(`session`,dS(QS,e))}function eC(e,t){lS(`session`,dS(QS,e),t)}function tC(e){uS(`session`,dS(QS,e))}var nC=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function rC(e){let t=e?.trim();return t===``?void 0:t}async function iC(e,t){if(typeof e!=`function`)return rC(e);try{return rC(await e(t))}catch(e){console.warn("session-core: the `token` getter failed; dialing without a ticket",e);return}}function aC(e,t){if(typeof e!=`function`)return rC(e);let n=e(t);if(typeof n!=`string`&&n!==void 0)throw TypeError("VoiceSessionOptions.token: an injected `WebSocket` opens synchronously, so its `token` getter must return a string, not a Promise");return rC(n)}function oC(e){if(e===void 0)return{};let t=`${iu}${e}`;return nC.test(t)?{protocols:[ru,t]}:{queryToken:e}}function sC(e,t,n={}){return uC(hu(e,`websocket`),t,n)}function cC(e,t,n={}){return uC(new URL(e),t,n)}var lC={"https:":`wss:`,"http:":`ws:`};function uC(e,t,n){return e.protocol=lC[e.protocol]??e.protocol,t&&e.searchParams.set(`sessionId`,t),n.location&&e.searchParams.set(`location`,n.location),n.phone&&e.searchParams.set(`phone`,n.phone),n.client&&e.searchParams.set(`client`,n.client),e}function dC(e,t){return t.queryToken!==void 0&&e.searchParams.set(`token`,t.queryToken),e.toString()}function fC(e,t){let n=e.resumeSessionId??YS(e.platformUrl),r,i=$S(e.platformUrl),a;function o(e){e!==a&&(a=e,t?.())}function s(){return{location:yS(e.location),phone:yS(e.phone),client:yS(e.client)}}async function c(){let t=iC(e.token,{sessionId:n}),a=n===void 0?void 0:i,o=r===!1?null:await vu(e.platformUrl,void 0,a);o&&(r=o.sessionUrl!==void 0||o.sessionToken!==void 0);let c=await t;c===void 0&&o?.sessionToken!==void 0&&(i=o.sessionToken,eC(e.platformUrl,i));let l=oC(c??o?.sessionToken);return{url:dC(o?.sessionUrl?cC(o.sessionUrl,n,s()):sC(e.platformUrl,n,s()),l),protocols:l.protocols}}let l;return{open:()=>{if(e.WebSocket){let t=oC(aC(e.token,{sessionId:n})),r=dC(sC(e.platformUrl,n,s()),t);return t.protocols?new e.WebSocket(r,t.protocols):new e.WebSocket(r)}return WS(async()=>(l=c(),(await l).url),async()=>(await(l??c())).protocols??null)},configured:t=>{n=t,XS(e.platformUrl,t),o(t)},adopt:t=>{n=t,XS(e.platformUrl,t)},forget:()=>{n=void 0,ZS(e.platformUrl),i=void 0,tC(e.platformUrl),o(void 0)},sessionId:()=>a,ticket:()=>{if(e.token!==void 0)return typeof e.token==`function`?iC(e.token,{sessionId:void 0}):aC(e.token,{sessionId:void 0});if(r!==!1)return vu(e.platformUrl).then(e=>(e&&(r=e.sessionUrl!==void 0||e.sessionToken!==void 0),e?.sessionToken))}}}var pC={code:`connection`,message:`Agent did not complete the session handshake`,fatal:!1},mC=1e4,hC=3;function gC(e){let t,n=0;function r(){t!==void 0&&(clearTimeout(t),t=void 0)}function i(){if(t=void 0,n+=1,n<hC&&GS(e.socket)){e.onRetry();return}e.onExhausted()}return e.signal.addEventListener(`abort`,r),{arm(){r(),t=setTimeout(i,mC)},disarm:r,succeeded(){r(),n=0}}}var _C=200,vC=200,yC={messages:[],toolCalls:[],customEvents:[],agentState:null,userTranscript:null,agentTranscript:null,error:null};function bC(e,t,n){if(e.length<n)return[...e,t];let r=e.slice(e.length-n+1);return r.push(t),r}function xC(e){let{getSnapshot:t,updateState:n,conn:r,agentState:i,audio:a}=e,o=0,s=0,c=0;function l(e,r){n({customEvents:bC(t().customEvents,{id:++o,event:e,data:r},_C)})}function u(e){r.turn.bump(),n({userTranscript:null,messages:bC(t().messages,{id:++s,role:`user`,content:e},vC),...i.apply({type:`THINK`})})}function d(e){n({agentTranscript:e})}function f(){let e=t().agentTranscript;if(e===null||e.length===0){n({agentTranscript:null});return}n({agentTranscript:null,messages:bC(t().messages,{id:++s,role:`assistant`,content:e},vC)})}function p(){n(i.apply({type:`ACTIVITY`}))}function m(e={}){n({...e,...i.apply({type:`LISTEN`})})}function h(e){console.error(`Agent error:`,e.message);let t={code:e.code,message:e.message,fatal:e.fatal};e.fatal?(a.teardown(),n({...i.apply({type:`FATAL`,error:t}),...xS})):n(i.apply({type:`TURN_ERROR`,error:t}))}function g(e){switch(e.type!==`error.reported`&&p(),e.type){case`speech.started`:n({userTranscript:``});break;case`speech.stopped`:break;case`userTranscript.committed`:u(e.text);break;case`userTranscript.updated`:n({userTranscript:e.text});break;case`agentTranscript.updated`:case`agentTranscript.committed`:d(e.text);break;case`tool.called`:n({toolCalls:bC(t().toolCalls,{callId:e.toolCallId,name:e.toolName,args:xl(e.args),status:`pending`,seq:++c,afterMessageId:t().messages.at(-1)?.id??-1},vC)});break;case`tool.completed`:{let r=t().toolCalls,i=r.findIndex(t=>t.callId===e.toolCallId),a=r[i];if(!a)break;let o=[...r];o[i]={...a,status:`done`,result:e.result},n({toolCalls:o});break}case`reply.completed`:f(),m();break;case`reply.cancelled`:SS(r,a),f(),m({userTranscript:null});break;case`session.reset`:{SS(r,a);let e=i.apply({type:`RESET`});n(i.fatal()?e:{...yC,...e});break}case`custom.emitted`:l(e.event,e.data);break;case`state.updated`:n({agentState:SC(t().agentState,e.state)});break;case`history.restored`:{s=0,c=0;let t=e.messages.slice(-vC).map(e=>({id:++s,role:e.role,content:e.content}));n({messages:t,toolCalls:e.toolCalls.slice(-vC).map(e=>({callId:e.callId,name:e.name,args:xl(e.args),status:e.status,...w({result:e.result}),seq:++c,afterMessageId:t[e.afterMessageIndex]?.id??-1}))});break}case`error.reported`:h(e);break;case`session.timedOut`:r.retiredByServer=!0}}function _(e){n(i.apply({type:`SPEAK`})),a.enqueue(e)}function v(){a.done()}function y(e){if(e instanceof ArrayBuffer){_(e);return}if(typeof e!=`string`){console.warn(`session-core: non-string, non-binary frame received; dropping`);return}let t=T(e);if(t===void 0){console.warn(`session-core: invalid JSON; dropping`);return}let n=tu($l,t);if(!n.ok){n.malformed&&console.warn(`session-core: malformed server message`,n.error);return}let r=n.data;if(r.type===`session.configured`)return i.apply({type:`HANDSHAKE_COMPLETE`}),{sampleRate:r.sampleRate,ttsSampleRate:r.ttsSampleRate,sid:r.sessionId};if(r.type===`audio.completed`){v();return}g(r)}return{handleMessage:y}}function SC(e,t){if(e===null)return t;let n={};for(let[r,i]of Object.entries(t)){let t=e[r];n[r]=r in e&&JSON.stringify(t)===JSON.stringify(i)?t:i}return n}function CC(e){let t=new ArrayBuffer(0),n=e=>(t.byteLength!==e&&(t=new ArrayBuffer(e)),t);return{sendAudio(t){let r=e.conn.ws;r?.readyState===1&&(r.bufferedAmount>65536||r.send(e.snapshot().micMuted?n(t.byteLength):t))},sendBuffered(t){let r=e.conn.ws;if(r?.readyState!==1)return;let i=e.snapshot().micMuted;for(let e of t)r.send(i?n(e.byteLength):e)},setMicMuted(t){e.updateState({micMuted:t})}}}var wC=16e3;function TC(e){let t=null,n=null;return{begin(){if(iS().catch(()=>{}),!e||t!==null)return;let r={released:!1};n=r,t=Promise.all([nS(()=>import(`./audio-CABEDpag.js`),[],import.meta.url),iS()]).then(([{openPreConnectCapture:e},[,t]])=>r.released?null:e({sampleRate:wC,captureWorkletSrc:t,maxSeconds:10})).catch(()=>null)},take(){let e=t;return t=null,n=null,e},release(){let e=t;t=null,n&&(n.released=!0),n=null,e?.then(e=>e?.close())}}}var EC=(0,B.not)((0,B.stateIn)({fatal:`yes`})),DC=(0,B.setup)({types:{},guards:{hasError:({context:e})=>e.error!==null},actions:{clearError:(0,B.assign)({error:null}),setError:(0,B.assign)({error:({context:e,event:t})=>t.type===`TURN_ERROR`||t.type===`FATAL`||t.type===`FAILED`?t.error:e.error})}}).createMachine({id:`sessionState`,type:`parallel`,context:{error:null},states:{phase:{initial:`disconnected`,on:{CONNECT:{target:`.connecting`,actions:`clearError`},CLOSED:{target:`.disconnected`,actions:`clearError`},DISCONNECT:`.disconnected`,END:{target:`.disconnected`,actions:`clearError`},TURN_ERROR:{actions:`setError`},FATAL:{target:`.error`,actions:`setError`},FAILED:{target:`.error`,actions:`setError`},LISTEN:{guard:EC,target:`.listening`},RESET:{guard:EC,target:`.listening`,actions:`clearError`},THINK:{guard:EC,target:`.thinking`},ACTIVITY:{guard:(0,B.and)([EC,`hasError`]),actions:`clearError`}},states:{disconnected:{on:{SPEAK:{guard:(0,B.not)(`hasError`),target:`speaking`}}},connecting:{on:{SOCKET_OPEN:`ready`}},ready:{on:{SPEAK:`speaking`}},listening:{on:{SPEAK:`speaking`}},thinking:{on:{SPEAK:`speaking`}},speaking:{},error:{on:{ACTIVITY:{guard:EC,target:`listening`,actions:`clearError`},CLOSED:{}}}}},fatal:{initial:`no`,states:{no:{on:{FATAL:`yes`}},yes:{on:{HANDSHAKE_COMPLETE:`no`}}}}}});function OC(){let e=(0,B.createActor)(DC).start();function t(){let t=e.getSnapshot();return{state:t.value.phase,error:t.context.error}}return{snapshot:t,apply(n){return e.send(n),t()},fatal:()=>e.getSnapshot().matches({fatal:`yes`})}}function kC(e){let{state:t}=e.snapshot();(t===`speaking`||t===`thinking`)&&(e.bargeIn(),e.updateState(e.agentState.apply({type:`LISTEN`})))}function AC(e){function t(t){kC(e),e.sendJson({type:`user_text`,text:t})}return{userTurn:MC(e),sendText(n,r){let i=n.trim();if(i!==``){if(e.connected()&&e.queued.length===0){t(i);return}(e.queued.length!==0||r?.connect===!0)&&(e.queued.push(i),e.open())}},flushQueued(){if(e.connected())for(let n of e.queued.splice(0))t(n)},sendToolResult(t,n){e.connected()&&e.sendJson({type:`tool_result`,toolCallId:t,...jC(n)})}}}function jC(e){if(`error`in e)return{result:``,error:e.error};try{return{result:JSON.stringify(e.result??null)??`null`}}catch(e){return{result:``,error:`Tool result is not JSON-serializable: ${String(e)}`}}}function MC(e){return{start(){e.connected()&&(kC(e),e.sendJson({type:`user_turn_start`}))},commit(){e.connected()&&e.sendJson({type:`user_turn_commit`})},clear(){e.connected()&&(e.updateState({userTranscript:null}),e.sendJson({type:`user_turn_clear`}))}}}function NC(e){return PC(e,{})}function PC(e,t){let n={...yC,state:`disconnected`,contentVersion:0,started:!1,running:!1,recording:!1,micMuted:!1,apiUrl:sC(e.platformUrl).toString()},r=new Set;function i(){for(let e of r)e()}let a=[`messages`,`toolCalls`,`userTranscript`,`agentTranscript`];function o(e,t){return t[e]===n[e]}let s=[];function c(e){e.running===!1&&(s.length=0),!Object.keys(e).every(t=>o(t,e))&&(n=a.some(t=>t in e&&e[t]!==n[t])?{...n,...e,contentVersion:n.contentVersion+1}:{...n,...e},i())}function l(){return n}function u(e){return r.add(e),()=>{r.delete(e)}}let d=OC(),f={ws:null,retiredByServer:!1,turn:Al()},p=null,m=bS(e,()=>h),h=fC({...e,client:m.clientId},i);function g(){c(yC)}function _(){return f.ws?.readyState===1?f.ws:null}function v(e){_()?.send(JSON.stringify(e))}let y=CC({conn:f,snapshot:()=>n,updateState:c}),b=TC(e.preConnectAudio!==!1),x=DS(CS({conn:f,updateState:c,agentState:d,sendJson:v,mic:y,preConnect:b,openAudioPath:t.openAudioPath})),{handleMessage:ee}=xC({getSnapshot:l,updateState:c,conn:f,agentState:d,audio:x});function S(){p?.abort(),p=null,b.release(),x.teardown(),f.ws?.close(),f.ws=null}function C(t){h.configured(t.sid),e.onSessionId?.(t.sid),ne(),x.start(t)}function w(e){if(e?.signal?.aborted){ae();return}c(d.apply({type:`CONNECT`})),S(),b.begin(),f.retiredByServer=!1;let t=new AbortController;p=t;let{signal:n}=t;e?.signal&&e.signal.addEventListener(`abort`,()=>ae(),{signal:n});let r=h.open();r.binaryType=`arraybuffer`,f.ws=r;let i=!1,a=gC({socket:r,signal:n,onRetry:()=>{x.teardown(),c({...d.apply({type:`CONNECT`}),recording:!1})},onExhausted:()=>{b.release(),x.teardown(),t.abort(),r.close(),f.ws=null,c({...d.apply({type:`FAILED`,error:pC}),...xS})}});r.addEventListener(`open`,()=>{c(d.apply({type:`SOCKET_OPEN`})),a.arm()},{signal:n}),r.addEventListener(`message`,e=>{let t=ee(e.data);t&&(a.succeeded(),C(t))},{signal:n}),r.addEventListener(`error`,()=>{i=!0},{signal:n}),r.addEventListener(`close`,e=>{if(n.aborted)return;if(a.disarm(),x.teardown(),!(f.retiredByServer||d.fatal())&&KS(r)){i=!1,c({...d.apply({type:`CONNECT`}),recording:!1});return}b.release(),t.abort(),r.close(),f.ws=null;let o=kS(e,i);c({...o===null?d.apply({type:`CLOSED`}):d.apply({type:`FAILED`,error:{code:`connection`,message:o,fatal:!1}}),...xS})},{signal:n})}function T(){_()&&(SS(f,x),c(d.apply({type:`LISTEN`})),v({type:`cancel`}))}let{userTurn:te,sendText:E,flushQueued:ne,sendToolResult:re}=AC({snapshot:()=>n,connected:()=>_()!==null,queued:s,open:()=>{n.running||(n.started?se:oe)()},bargeIn:()=>SS(f,x),agentState:d,updateState:c,sendJson:v});function ie(){if(SS(f,x),_()){v({type:`reset`});return}ce(),oe()}function ae(){S(),c({...d.apply({type:`DISCONNECT`}),...xS})}function oe(){c({started:!0,running:!0}),w()}function se(){n.running?ae():(c({running:!0}),w())}function ce(){S(),h.forget(),c({...yC,...d.apply({type:`END`}),started:!1,...xS})}function le(){ce(),oe()}function ue(e){if(!Vl.test(e))throw RangeError(`resume: "${e}" is not a session id (${Vl})`);ce(),h.adopt(e),oe()}return{getSnapshot:l,subscribe:u,connect:w,cancel:T,userTurn:Object.freeze(te),identity:m,sendText:E,sendToolResult:re,setMicMuted:y.setMicMuted,resetState:g,reset:ie,disconnect:ae,start:oe,toggle:se,end:ce,restart:le,resume:ue,[Symbol.dispose](){ae()}}}function FC(e=`#app`){if(typeof e!=`string`)return e;let t=document.querySelector(e);if(!t)throw Error(`Element not found: ${e} — no element matches that selector when the mount runs. Add \`<div id="app"></div>\` (or the element your selector names) to the page before the script, or pass the element itself as the mount's \`target\` option.`);return t}function IC(e,t,n){let r=(0,ju.createRoot)(e);return(0,Au.flushSync)(()=>{r.render(t)}),{dispose(){r.unmount(),n?.()},[Symbol.dispose](){this.dispose()}}}function LC({name:e,icon:t,subtitle:n,buttonText:r,Sidebar:i,...a}){let o=(0,U.jsx)(Xx,{title:e,icon:t});return(0,U.jsx)(Qx,{title:e,icon:t,subtitle:n,buttonText:r,children:i?(0,U.jsx)(Zx,{sidebar:(0,U.jsx)(i,{}),sidebarWidth:a.sidebarWidth,sidebarPosition:a.sidebarPosition,children:o}):o})}function RC({platformUrl:e,...t}){let{name:n}=t,[r,i]=(0,V.useState)(null),a=n===void 0;return(0,V.useEffect)(()=>{if(!a)return;let t=!1;return yu(e).then(e=>{t||i(e)}),()=>{t=!0}},[e,a]),(0,U.jsx)(LC,{...t,name:n??r?.name})}function zC(e,t){let n=e.component,r=e.sidebar;return n?r?(0,U.jsx)(Zx,{sidebar:(0,U.jsx)(r,{}),sidebarWidth:e.sidebarWidth,sidebarPosition:e.sidebarPosition,children:(0,U.jsx)(n,{})}):(0,U.jsx)(n,{}):(0,U.jsx)(RC,{platformUrl:t,name:e.name,icon:e.icon,subtitle:e.subtitle,buttonText:e.buttonText,Sidebar:r,sidebarWidth:e.sidebarWidth,sidebarPosition:e.sidebarPosition})}function BC(e){return VC(e,NC)}function VC(e,t){let n=FC(e.target),r=e.platformUrl??pu(),i=t({platformUrl:r,onSessionId:e.onSessionId,resumeSessionId:e.resumeSessionId,location:e.location,phone:e.phone,client:e.client,token:e.token,WebSocket:e.WebSocket});mu(e.name);let a=zC(e,r),o=e.tools??{};return{session:i,...IC(n,(0,V.createElement)(Lx.Provider,{value:o},(0,V.createElement)(Uu,{value:e.theme},(0,V.createElement)(Fu,{value:i},a))),()=>i[Symbol.dispose]())}}var HC=(0,V.createContext)(void 0),UC=HC.Provider;function WC(){let[e,t]=(0,V.useState)(()=>new Set),n=(0,V.useCallback)((e,n)=>{t(t=>{if(n===t.has(e))return t;let r=new Set(t);return n?r.add(e):r.delete(e),r})},[]);return{pending:e.size>0,declare:n}}function GC(e){let t=(0,V.useContext)(HC),n=(0,V.useId)();(0,V.useEffect)(()=>{if(t)return t(n,e),()=>t(n,!1)},[t,n,e])}async function KC(e){let t={};for(let n of Array.from(e.elements))n instanceof HTMLInputElement?await JC(n,t):(n instanceof HTMLTextAreaElement||n instanceof HTMLSelectElement)&&n.name!==``&&!n.disabled&&(t[n.name]=n instanceof HTMLSelectElement?qC(n):n.value);return t}function qC(e){return e.multiple?Array.from(e.selectedOptions,e=>e.value):e.value}async function JC(e,t){if(!(e.name===``||e.disabled))switch(e.type){case`checkbox`:t[e.name]=e.checked;return;case`radio`:e.checked&&(t[e.name]=e.value);return;case`number`:case`range`:{if(e.value===``)return;let n=e.valueAsNumber;t[e.name]=Number.isNaN(n)?e.value:n;return}case`file`:{let n=Array.from(e.files??[]);if(n.length===0)return;let r=await YC(n,XC(e.dataset.aaiRead));t[e.name]=e.multiple?r:r[0];return}default:t[e.name]=e.value}}function YC(e,t){return t===`upload`?Promise.resolve([...e]):Promise.all(e.map(e=>ZC(e,t)))}function XC(e){return e===`text`||e===`dataUrl`||e===`upload`?e:`none`}async function ZC(e,t){let n={name:e.name,size:e.size,type:e.type,lastModified:e.lastModified};return t===`none`?n:{...n,content:t===`text`?await e.text():await QC(e)}}function QC(e){return new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(r.error??Error(`Could not read ${e.name}`)),r.onload=()=>t(String(r.result)),r.readAsDataURL(e)})}function $C({label:e,hint:t,htmlFor:n,className:r,children:i}){let a=Ku();return(0,U.jsxs)(`div`,{className:H(`flex flex-col gap-1.5`,r),children:[e!==void 0&&(0,U.jsx)(`label`,{htmlFor:n,className:`text-[11px] font-medium uppercase tracking-[1.2px]`,style:{color:a.text},children:e}),i,t!==void 0&&(0,U.jsx)(`p`,{className:`text-xs opacity-60`,style:{color:a.text},children:t})]})}function ew(){let e=Ku();return{className:H(`w-full rounded-aai border px-3 py-2 text-sm font-aai`,$u,`disabled:cursor-not-allowed disabled:opacity-50`),style:{background:e.surface,color:e.text,borderColor:e.border,...ed(e.primary)}}}function tw(){let e=Ku(),t=ew();return{className:H(t.className,`cursor-pointer py-1.5 pl-1.5`,`file:mr-3 file:cursor-pointer file:rounded-aai file:border-0 file:px-3 file:py-1.5`,`file:text-sm file:font-medium file:font-aai`,`file:[background:var(--aai-file-button-bg)] file:[color:var(--aai-file-button-fg)]`),style:{...t.style,"--aai-file-button-bg":e.primary,"--aai-file-button-fg":e.surface}}}function nw({defaultType:e,name:t,label:n,hint:r,className:i,...a}){let o=(0,V.useId)(),s=ew();return(0,U.jsx)($C,{label:n,hint:r,htmlFor:o,className:i,children:(0,U.jsx)(`input`,{id:o,name:t,type:e,...s,...a})})}function rw(e){return(0,U.jsx)(nw,{defaultType:`text`,...e})}function iw(e){return(0,U.jsx)(nw,{defaultType:`number`,...e})}function aw({name:e,label:t,hint:n,className:r,options:i,children:a,...o}){let s=(0,V.useId)(),c=ew();return(0,U.jsx)($C,{label:t,hint:n,htmlFor:s,className:r,children:(0,U.jsx)(`select`,{id:s,name:e,...c,...o,children:a??i?.map(e=>{let t=typeof e==`string`?e:e.value,n=typeof e==`string`?e:e.label;return(0,U.jsx)(`option`,{value:t,children:n},t)})})})}function ow({name:e,label:t,hint:n,className:r,...i}){let a=(0,V.useId)(),o=Ku();return(0,U.jsx)($C,{hint:n,className:r,children:(0,U.jsxs)(`label`,{htmlFor:a,className:`flex items-center gap-2 text-sm`,style:{color:o.text},children:[(0,U.jsx)(`input`,{id:a,name:e,type:`checkbox`,style:{accentColor:o.primary},...i}),t]})})}function sw({name:e,label:t,hint:n,className:r,read:i=`none`,upload:a=!1,...o}){let s=(0,V.useId)(),c=tw();return(0,U.jsx)($C,{label:t,hint:n,htmlFor:s,className:r,children:(0,U.jsx)(`input`,{id:s,name:e,type:`file`,"data-aai-read":a?`upload`:i,...c,...o})})}function cw({onSubmit:e,error:t,children:n,className:r,...i}){let a=Ku(),[o,s]=(0,V.useState)(!1),{pending:c,declare:l}=WC(),u=(0,V.useCallback)(t=>{if(t.preventDefault(),o||c)return;let n=t.currentTarget;s(!0),(async()=>{try{await e(await KC(n))}finally{s(!1)}})()},[o,c,e]);return(0,U.jsxs)(`form`,{onSubmit:u,className:H(`flex flex-col gap-5 font-aai`,r),...i,children:[(0,U.jsx)(`fieldset`,{disabled:o||c,className:`contents`,children:(0,U.jsx)(UC,{value:l,children:n})}),t!==void 0&&t!==``&&(0,U.jsx)(`p`,{role:`alert`,className:`text-sm`,style:{color:a.primary},children:t})]})}function lw({children:e,pending:t=!1,pendingLabel:n=`Working…`,size:r,variant:i,className:a,...o}){return(0,U.jsx)(od,{type:`submit`,disabled:t,...w({size:r,variant:i,className:a}),...o,children:t?n:e})}var uw=12;function dw({upload:e,onPause:t,onResume:n,className:r}){let i=Ku(),a=(0,V.useId)();if(!e)return null;let{name:o,index:s,count:c,loaded:l,total:u,fraction:d,paused:f}=e,p=t&&n?f?n:t:void 0,m=d===void 0?void 0:Math.round(d*100),h=Ju(i.text,i.surface,65);return(0,U.jsxs)(`div`,{className:H(r??`flex flex-col gap-1.5`),children:[(0,U.jsxs)(`div`,{className:`flex items-baseline justify-between gap-4 text-xs`,children:[(0,U.jsx)(`span`,{id:a,className:`truncate`,style:{color:h},children:`${f?`Paused`:`Uploading`} ${o}${c>1?` (${s} of ${c})`:``}`}),(0,U.jsxs)(`div`,{className:`flex shrink-0 items-baseline gap-3`,children:[(0,U.jsx)(`span`,{className:`tabular-nums`,style:{color:h},children:u===void 0?ve(l):`${ve(l)} of ${ve(u)}`}),p&&(0,U.jsx)(od,{type:`button`,variant:`ghost`,className:`h-6 px-2 text-[0.625rem]`,onClick:p,children:f?`Resume`:`Pause`})]})]}),(0,U.jsx)(`div`,{role:`progressbar`,"aria-labelledby":a,"aria-valuemin":0,"aria-valuemax":100,...w({"aria-valuenow":m}),className:`h-1.5 w-full overflow-hidden rounded-full`,style:{backgroundColor:Ju(i.text,i.surface,uw)},children:(0,U.jsx)(`div`,{className:H(`h-full rounded-full transition-[width] duration-200 ease-out`,m===void 0&&!f&&`animate-pulse`),style:{backgroundColor:i.primary,width:m===void 0?`100%`:`${m}%`}})})]})}var fw=class extends Error{constructor(e,t){super(e),this.name=`ParseError`,this.type=t.type,this.field=t.field,this.value=t.value,this.line=t.line}},pw=10,mw=13,hw=32,gw=6;function _w(e){if(typeof e==`function`)throw TypeError("`config` must be an object, got a function instead. Did you mean `createParser({onEvent: fn})`?");let{maxBufferSize:t,onComment:n,onError:r,onEvent:i,onId:a,onRetry:o}=e,s=[],c=0,l=``,u,d=``,f=0,p,m=!1,h=!1,g=!1;function _(e){if(m)throw Error("Cannot feed parser: it was terminated after exceeding the configured max buffer size. Call `reset()` to resume parsing.");if(l!==void 0){if(e=l+e,e===``||e===`ï`||e===`ï»`){l=e;return}l=void 0,e=e.replace(/^(?:\uFEFF|\xEF\xBB\xBF)/,``)}if((h||g)&&(e=v(e),!e))return;if(!s.length){let t=ee(e);t!==``&&y(t),x();return}if(e.indexOf(`
118
+ `)===-1&&e.indexOf(`\r`)===-1){if(c<gw&&!b(s.join(``)+e.slice(0,gw-c))){s.length=0,c=0,h=!0;return}s.push(e),c+=e.length,x();return}s.push(e);let t=s.join(``);s.length=0,c=0,y(ee(t)),x()}function v(e){if(e.length===0)return e;if(g)return g=!1,e.charCodeAt(0)===pw?e.slice(1):e;let t=e.indexOf(`\r`),n=e.indexOf(`
119
+ `),r=t===-1?n:n===-1||t<n?t:n;return r===-1?``:r===e.length-1&&e.charCodeAt(r)===mw?(h=!1,g=!0,``):(h=!1,e.slice(r+(e.charCodeAt(r)===mw&&e.charCodeAt(r+1)===pw?2:1)))}function y(e){if(e){if(e.charCodeAt(e.length-1)===mw){S(e,0,e.length-1),g=!0;return}if(b(e)){s.push(e),c=e.length;return}h=!0}}function b(e){let t=e.charCodeAt(0);return t===58&&!!n||t===100&&bw(e,`data`)||t===101&&bw(e,`event`)||t===105&&bw(e,`id`)||t===114&&bw(e,`retry`)}function x(){t!==void 0&&(c+d.length<=t||(m=!0,s.length=0,c=0,u=void 0,d=``,f=0,p=void 0,h=!1,g=!1,r?.(new fw(`Buffered data exceeded max buffer size of ${t} characters`,{type:`max-buffer-size-exceeded`}))))}function ee(e){let t=0;if(e.indexOf(`\r`)===-1){let n=e.indexOf(`
120
120
  `,t);for(;n!==-1;){if(t===n){u!==void 0&&a?.(u),f>0&&i?.({id:u,event:p,data:d}),u=void 0,d=``,f=0,p=void 0,t=n+1,n=e.indexOf(`
121
- `,t);continue}let r=e.charCodeAt(t);if(gw(e,t,r)){let r=e.charCodeAt(t+5)===pw?t+6:t+5,o=e.slice(r,n);if(f===0&&e.charCodeAt(n+1)===dw){u!==void 0&&a?.(u),i?.({id:u,event:p,data:o}),u=void 0,d=``,p=void 0,t=n+2,n=e.indexOf(`
122
- `,t);continue}d=f===0?o:`${d}\n${o}`,f++}else _w(e,t,r)?p=e.slice(e.charCodeAt(t+6)===pw?t+7:t+6,n)||void 0:S(e,t,n);t=n+1,n=e.indexOf(`
121
+ `,t);continue}let r=e.charCodeAt(t);if(vw(e,t,r)){let r=e.charCodeAt(t+5)===hw?t+6:t+5,o=e.slice(r,n);if(f===0&&e.charCodeAt(n+1)===pw){u!==void 0&&a?.(u),i?.({id:u,event:p,data:o}),u=void 0,d=``,p=void 0,t=n+2,n=e.indexOf(`
122
+ `,t);continue}d=f===0?o:`${d}\n${o}`,f++}else yw(e,t,r)?p=e.slice(e.charCodeAt(t+6)===hw?t+7:t+6,n)||void 0:S(e,t,n);t=n+1,n=e.indexOf(`
123
123
  `,t)}return e.slice(t)}for(;t<e.length;){let n=e.indexOf(`\r`,t),r=e.indexOf(`
124
- `,t),i=-1;if(n!==-1&&r!==-1?i=n<r?n:r:n===-1?r!==-1&&(i=r):i=n===e.length-1?-1:n,i===-1)break;S(e,t,i),t=i+1,e.charCodeAt(t-1)===fw&&e.charCodeAt(t)===dw&&t++}return e.slice(t)}function S(e,t,r){if(t===r){w();return}let i=e.charCodeAt(t);if(gw(e,t,i)){let n=e.charCodeAt(t+5)===pw?t+6:t+5,i=e.slice(n,r);d=f===0?i:`${d}\n${i}`,f++;return}if(_w(e,t,i)){p=e.slice(e.charCodeAt(t+6)===pw?t+7:t+6,r)||void 0;return}if(i===105&&e.charCodeAt(t+1)===100&&e.charCodeAt(t+2)===58){let n=e.slice(e.charCodeAt(t+3)===pw?t+4:t+3,r);n.includes(`\0`)||(u=n);return}if(i===58){if(n){let i=e.slice(t,r);n(i.slice(e.charCodeAt(t+1)===pw?2:1))}return}let a=e.slice(t,r),o=a.indexOf(`:`);if(o===-1){C(a,``,a);return}let s=a.slice(0,o),c=a.charCodeAt(o+1)===pw?2:1;C(s,a.slice(o+c),a)}function C(e,t,n){switch(e){case`event`:p=t||void 0;break;case`data`:d=f===0?t:`${d}\n${t}`,f++;break;case`id`:t.includes(`\0`)||(u=t);break;case`retry`:/^\d+$/.test(t)?o?.(parseInt(t,10)):r?.(new uw(`Invalid \`retry\` value: "${t}"`,{type:`invalid-retry`,value:t,line:n}));break;default:r?.(new uw(`Unknown field "${e.length>20?`${e.slice(0,20)}…`:e}"`,{type:`unknown-field`,field:e,value:t,line:n}))}}function w(){u!==void 0&&a?.(u),f>0&&i?.({id:u,event:p,data:d}),u=void 0,d=``,f=0,p=void 0}function T(e={}){if(e.consume&&s.length>0){let e=s.join(``);S(e,0,e.length)}l=``,u=void 0,d=``,f=0,p=void 0,s.length=0,c=0,m=!1,h=!1,g=!1}return{feed:_,reset:T}}function gw(e,t,n){return n===100&&e.charCodeAt(t+1)===97&&e.charCodeAt(t+2)===116&&e.charCodeAt(t+3)===97&&e.charCodeAt(t+4)===58}function _w(e,t,n){return n===101&&e.charCodeAt(t+1)===118&&e.charCodeAt(t+2)===101&&e.charCodeAt(t+3)===110&&e.charCodeAt(t+4)===116&&e.charCodeAt(t+5)===58}function vw(e,t){let n=1;for(;n<e.length&&n<t.length;){if(e.charCodeAt(n)!==t.charCodeAt(n))return!1;n++}return e.length<=t.length||e.charCodeAt(t.length)===58}async function*yw(e,t){let n=e.getReader(),r=new TextDecoder,i=[],a=hw({onEvent:({event:e,data:t})=>{e!==void 0&&i.push({event:e,data:T(t)})}});try{for(;!t?.aborted;){let{done:e,value:t}=await n.read();if(e)return;if(a.feed(r.decode(t,{stream:!0})),i.length===0)continue;let o=i;i=[];for(let e of o)yield e}}finally{n.cancel().catch(()=>void 0)}}var bw=1e3;async function xw(e){if(!e.ok)throw await Tl(e);if(!e.body)throw Error(`The agent answered the event stream with no body`);return e.body}async function*Sw(e,t,n){let r=await xw(await e.watch(t,n));for await(let e of yw(r,n)){if(e.event===`run`&&e.data){let t=e.data;if(yield t,Ll(t))return`settled`;continue}if(e.event===`done`||e.event===`missing`)return`settled`;if(e.event===`idle`)return`handed-back`}return`dropped`}async function*Cw(e,t,n){for(;!n?.aborted;){let r=yield*Sw(e,t,n);if(r===`settled`||n?.aborted)return;if(r===`dropped`)throw Error(`The event stream for run ${t} ended before the run settled`)}}async function*ww(e,t,n,r){let i=await xw(await e.streamOutput(t,w({namespace:n.namespace,startIndex:r,signal:n.signal}))),a=r;for await(let e of yw(i,n.signal)){if(e.event===`chunk`){a+=1,yield e.data;continue}if(e.event===`done`){let t=e.data?.complete===!0;return{next:a,complete:t}}if(e.event===`missing`)return{next:a,complete:!0}}return{next:a,complete:!1}}async function*Tw(e,t,n={}){let r=Math.max(0,n.fromIndex??0);for(;!n.signal?.aborted;){let i=yield*ww(e,t,n,r);if(r=i.next,i.complete||n.signal?.aborted)return;await Fl(bw,w({signal:n.signal}))}}function Ew(e,t){return{loaded:e,total:t,fraction:t!==void 0&&t>0?Math.min(1,e/t):void 0}}function Dw(){let e=globalThis.XMLHttpRequest;return typeof e==`function`?e:void 0}var Ow=new Set([204,205,304]),kw=200,Aw=599;function jw(e,t,n,r,i,a,o,s){return new Promise((c,l)=>{let u=new e,d=e=>t=>{s&&s.removeEventListener(`abort`,m),e(t)},f=d(c),p=d(l),m=()=>u.abort();u.open(t,n);for(let[e,t]of Object.entries(r))u.setRequestHeader(e,t);if(u.upload.addEventListener(`progress`,e=>{o(Ew(e.loaded,e.lengthComputable?e.total:a))}),u.addEventListener(`load`,()=>{if(u.status<kw||u.status>Aw){p(Mw());return}let e=u.getResponseHeader(`Content-Type`);f(new Response(Ow.has(u.status)?null:u.responseText,{status:u.status,statusText:u.statusText,headers:w({"Content-Type":e??void 0})}))}),u.addEventListener(`error`,()=>p(Mw())),u.addEventListener(`timeout`,()=>p(Mw())),u.addEventListener(`abort`,()=>p(s?.reason??Nw())),s){if(s.aborted){p(s.reason??Nw());return}s.addEventListener(`abort`,m,{once:!0})}u.send(i)})}function Mw(){return TypeError(`${Cl}: the upload did not reach the agent`)}function Nw(){return new DOMException(`The upload was aborted.`,`AbortError`)}var Pw=new Set([408,425,429,500,502,503,504]);function Fw(e,t){let n=t&&ce(t);return n?Math.min(Math.max(0,n.getTime()-Date.now()),g):Pl(e,{baseMs:500,maxMs:g})}async function Iw(e,t){for(let n=1;;n+=1){let r;try{r=await e()}catch(e){if(n>=t.attempts||t.signal.aborted)throw e}if(r&&(r.ok||!Pw.has(r.status))||r&&n>=t.attempts)return{res:r,attempts:n};await Fl(Fw(n,r),{signal:t.signal}),t.signal.throwIfAborted()}}function Lw(e){let t=[],n,r=kl(async()=>{for(;t.length>0&&n===void 0;){let n=t.splice(0,e.batch).map(e=>`offset=${e}`).join(`&`),{res:r}=await Iw(()=>fetch(`${e.uploads}/parts?${n}&stored=1`,{method:`PUT`,headers:e.headers,signal:e.signal}),{attempts:e.attempts,signal:e.signal});if(!r.ok)throw await e.fail(r)}}),i=t=>{n??=t,e.onFail(t)};return{landed(e){t.push(e),r.trigger().catch(i)},async drain(){if(await r.trigger().catch(i),n!==void 0)throw n}}}function Rw(e){if(typeof e==`string`)return;if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))return e.byteLength;let t=e;return typeof t.size==`number`&&typeof t.slice==`function`?t.size:void 0}function zw(e,t,n){return e instanceof ArrayBuffer?new Uint8Array(e,t,n-t):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset+t,n-t):e.slice(t,n)}function Bw(e,t,n={}){let r=Rw(e);if(r===void 0)return;let i=Hw(r,t.partBytes??8388608);if(i.length>=Vw)return{total:r,parts:i};if(i.length!==0&&n.resumable===!0)return{total:r,parts:Hw(r,h)}}var Vw=2;function Hw(e,t){let n=Math.max(h,Math.ceil(t/h)*h),r=[];for(let t=0;t<e;t+=n)r.push({start:t,end:Math.min(t+n,e),index:r.length});return r}async function Uw(e,t,n){let r=Number.isFinite(t)?Math.max(1,Math.floor(t)):1,i=Array(e.length),a=0,o=!1,s;if(await Promise.allSettled(Array.from({length:Math.min(r,e.length)},async()=>{for(let t=a++;t<e.length&&!o;t=a++)try{i[t]=await n(e[t],t)}catch(e){throw o=!0,s??={reason:e},e}})),s!==void 0)throw s.reason;return i}async function Ww(e){let{missing:t,width:n,sendPart:r,failed:i}=e;try{await Uw(t,n,async e=>{try{await r(e)}catch(e){throw i.abort(e),e}})}catch(e){throw i.signal.aborted?i.signal.reason:e}}function Gw(e){let{req:t,bytesBase:n,uploads:r,options:i,attempts:a,signal:o,report:s,claimer:c}=e;return async e=>{let l=n?`${n}/${encodeURIComponent(t.id)}/${e.start}`:`${r}/parts?offset=${e.start}`,{res:u}=await Iw(()=>(s(e.index,0),t.send(`PUT`,l,n?{"Content-Type":t.type}:{...t.headers,"Content-Type":t.type},zw(t.file,e.start,e.end),Kw(i,e,s))),{attempts:a,signal:o});if(!u.ok)throw await t.fail(u);n&&c.landed(e.start),s(e.index,e.end-e.start)}}function Kw(e,t,n){return{...w({signal:e?.signal}),...e?.onProgress?{onProgress:e=>n(t.index,e.loaded)}:{}}}function qw(e){if(e!==!1)return e===void 0||e===!0?{}:e}function Jw(e){let t=e.replace(/\/+$/,``);if(t.endsWith(`/workflows`))return`${t.slice(0,-Sl.length)}/uploads`}async function Yw(e){let{req:t,begun:n,begunAlready:r,uploads:i,signal:a,attempts:o,parts:s}=e,c=n.ok?await Dl(n).catch(()=>({})):{},l=r?await eT(t,i,a,o):void 0,u=n.ok?c:l?.capability??{};return{bytesBase:u.directParts===!0?Jw(t.base):void 0,claimBatch:Xw(u.claimBatch),missing:l?s.filter(e=>!tT(l.ranges,e)):s}}function Xw(e){return Number.isInteger(e)&&(e??0)>1?e??1:1}async function Zw(e){let{total:t,parts:n}=e.plan,r=`${e.base}/uploads/${encodeURIComponent(e.id)}`,i=new AbortController,a=e.options?.signal?AbortSignal.any([e.options.signal,i.signal]):i.signal,o={...e.options,signal:a},{res:s,attempts:c}=await Iw(()=>fetch(`${r}/parts?name=${encodeURIComponent(e.name)}&total=${t}`,{method:`POST`,headers:{...e.headers,"Content-Type":e.type},signal:a}),{attempts:4,signal:a}),l=s.status===409&&(c>1||e.options?.resume===!0);if(!(s.ok||l))throw await e.fail(s);let{bytesBase:u,claimBatch:d,missing:f}=await Yw({req:e,begun:s,begunAlready:l,uploads:r,signal:a,attempts:4,parts:n}),p=Lw({uploads:r,headers:e.headers,batch:d,attempts:4,signal:a,fail:e.fail,onFail:e=>i.abort(e)}),m=nT(t,n.length,e.options?.onProgress);for(let e of n)f.includes(e)||m(e.index,e.end-e.start);let h=Gw({req:e,bytesBase:u,uploads:r,options:o,attempts:4,signal:a,report:m,claimer:p});await Ww({missing:f,width:e.settings.concurrency??8,sendPart:h,failed:i}),await p.drain();let{res:g}=await Iw(()=>fetch(`${r}/info`,{headers:e.headers,signal:a}),{attempts:4,signal:a});if(!g.ok)throw await e.fail(g);let _=await Dl(g);return Qw(_,e.id,t),{..._,url:r}}function Qw(e,t,n){if(!e.complete)throw new $w(`Workflow API: upload ${t} stored every part but reports ${e.size} of ${n} byte(s) and is not complete. The agent acknowledged each window and then did not record it, so nothing can read this upload.`)}var $w=class extends Error{name=`UploadNotRecordedError`};async function eT(e,t,n,r){let{res:i}=await Iw(()=>fetch(`${t}/info`,{headers:e.headers,signal:n}),{attempts:r,signal:n});if(!i.ok)throw await e.fail(i);let a=await Dl(i);return{ranges:a.complete?[{start:0,end:a.size}]:a.ranges??[],capability:a}}function tT(e,t){return e.some(e=>e.start<=t.start&&e.end>=t.end)}function nT(e,t,n){let r=Array(t).fill(0);return n?(n(Ew(0,e)),(t,i)=>{r[t]=i,n(Ew(r.reduce((e,t)=>e+t,0),e))}):()=>void 0}function rT(e){if(e instanceof $w||e instanceof Error&&e.name===`AbortError`)return!1;let t=El(e);return t===void 0||Pw.has(t)}function iT(e){return Pl(e,{baseMs:_,maxMs:v})}async function aT(e,t){let n=t.attempts??4;for(let r=1;;r+=1){try{return await e({resume:r!==1||t.resume,round:r})}catch(e){if(r>=n||t.signal?.aborted===!0||!rT(e))throw e}await Fl(iT(r),w({signal:t.signal})),t.signal?.throwIfAborted()}}function oT(e){if(typeof e==`string`)return;if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))return e.byteLength;let t=e.size;return typeof t==`number`?t:void 0}async function sT(e,t,n,r,i){let a=i?.signal,o={method:e,headers:n,body:r,...w({signal:a})},s=i?.onProgress;if(!s)return await fetch(t,o);let c=oT(r),l=0,u=e=>{l=e.loaded,s(e)};u(Ew(0,c));let d=Dw(),f=d?await jw(d,e,t,n,r,c,u,a):await fetch(t,o);return u(Ew(c??l,c)),f}function cT(e,t){let n=e;return{name:t?.name??(typeof n.name==`string`?n.name:``),type:t?.type??(typeof n.type==`string`&&n.type?n.type:`application/octet-stream`)}}function lT(){let e=crypto.randomUUID().replaceAll(`-`,``);return Ml(y.test(e),`upload.id.minted`,()=>({id:e})),e}function uT(e,t){return aT(t=>Zw({...e,send:sT,options:{...e.options,resume:t.resume}}),{resume:t,...w({signal:e.options?.signal})})}async function dT(e,t,n,r,i){let{name:a,type:o}=cT(r,i),s=qw(i?.parallel),c=s&&Bw(r,s);if(s&&c)return uT({base:e,headers:t,fail:n,id:lT(),file:r,name:a,type:o,options:i,settings:s,plan:c},void 0);let l=await sT(`POST`,`${e}/uploads?name=${encodeURIComponent(a)}`,{...t,"Content-Type":o},r,i);if(!l.ok)throw await n(l);let u=await Dl(l);return{...u,url:`${e}/uploads/${encodeURIComponent(u.id)}`}}async function fT(e,t,n,r,i,a){let{name:o,type:s}=cT(i,a),c=qw(a?.parallel),l=c&&Bw(i,c,{resumable:!0});if(c&&l)return uT({base:e,headers:t,fail:n,id:r,file:i,name:o,type:s,options:a,settings:c,plan:l},a?.resume);let u=await sT(`PUT`,`${e}/uploads/${encodeURIComponent(r)}?name=${encodeURIComponent(o)}`,{...t,"Content-Type":s},i,a);if(!u.ok)throw await n(u);let d=await Dl(u);return{...d,url:`${e}/uploads/${encodeURIComponent(d.id)}`}}async function pT(e,t,n,r,i){let a=await fetch(`${e}/uploads/${encodeURIComponent(r)}`,{headers:t,...w({signal:i})});if(!a.ok)throw await n(a);return await a.blob()}async function mT(e,t,n,r,i){let a=await fetch(`${e}/uploads/${encodeURIComponent(r)}/info`,{headers:t,...w({signal:i})});if(!a.ok)throw await n(a);return await Dl(a)}function hT(e){let t=wl(e.baseUrl),n=e.token?{Authorization:`Bearer ${e.token}`}:{};function r(t=0,n){let r=e.timeoutMs===void 0?void 0:AbortSignal.timeout(e.timeoutMs+t);return r===void 0?w({signal:n}):{signal:n?AbortSignal.any([n,r]):r}}async function i(e,i,a){let o=a.wait,s=await fetch(`${t}/runs`,{method:`POST`,headers:{...n,"Content-Type":`application/json`},body:JSON.stringify({workflow:e,...w({input:i,key:a.key,wait:o})}),...r(o,a.signal)});if(!s.ok)throw await Tl(s);return await Dl(s)}async function a(e,i,a){let o=new URLSearchParams(e);i!==void 0&&o.set(`limit`,String(i));let s=await fetch(`${t}/runs?${o.toString()}`,{headers:n,...r(0,a)});if(!s.ok)throw await Tl(s);return(await Dl(s)).runs??[]}let o={upload(e,r){return dT(t,n,Tl,e,r)},async list(e){let i=await fetch(t,{headers:n,...r(0,e?.signal)});if(!i.ok)throw await Tl(i);return(await Dl(i)).workflows??[]},async start(e,t,n){let{runId:r}=await i(e,t,{key:n?.key,signal:n?.signal});return r},async startAndWait(e,t,n){let r=zl(n?.wait??6e4),a=await i(e,t,{key:n?.key,wait:r,signal:n?.signal});return a.run??Ol(a.runId,e)},async get(e,i){let a=zl(i?.wait),o=a>0?`?wait=${a}`:``,s=await fetch(`${t}/runs/${encodeURIComponent(e)}${o}`,{headers:n,...r(a,i?.signal)});if(s.status!==404){if(!s.ok)throw await Tl(s);return await Dl(s)}},find(e,t,n){return a({workflow:e,key:t},n?.limit,n?.signal)},recent(e,t){return a({workflow:e},t?.limit,t?.signal)},watch(e,r){return fetch(`${t}/runs/${encodeURIComponent(e)}/events`,{headers:{...n,Accept:`text/event-stream`},...w({signal:r})})},streamOutput(e,r){let i=new URLSearchParams(w({namespace:r?.namespace,startIndex:r?.startIndex===void 0?void 0:String(r.startIndex)})),a=i.size>0?`?${i.toString()}`:``;return fetch(`${t}/runs/${encodeURIComponent(e)}/stream${a}`,{headers:{...n,Accept:`text/event-stream`},...w({signal:r?.signal})})},follow(e,t){return Cw(o,e,t?.signal)},followOutput(e,t){return Tw(o,e,t??{})},uploadStream:(e,r,i)=>fT(t,n,Tl,e,r,i),uploadInfo:(e,i)=>mT(t,n,Tl,e,r(0,i?.signal).signal),download:(e,r)=>pT(t,n,Tl,e,r?.signal),async wake(e,i){let a=_T(i?.correlationIds),o=await fetch(`${t}/runs/${encodeURIComponent(e)}/wake${a}`,{method:`POST`,headers:n,...r(0,i?.signal)});if(o.status===404)return 0;if(!o.ok)throw await Tl(o);return(await Dl(o)).woken??0},async cancel(e,i){let a=await fetch(`${t}/runs/${encodeURIComponent(e)}`,{method:`DELETE`,headers:n,...r(0,i?.signal)});if(!a.ok)throw await Tl(a);return(await Dl(a)).cancelled===!0}};return o}var gT=256;function _T(e){if(!e||e.length===0)return``;let t=new URLSearchParams;for(let n of e){if(n.trim()===``)throw Error("A workflow `correlationId` must not be empty");if(n.length>gT)throw Error(`A workflow \`correlationId\` must be at most ${gT} characters`);t.append(`correlationId`,n)}return`?${t.toString()}`}function vT(e){let t=hT(e),n=e.baseUrl.replace(/\/+$/,``),r=e.token?{Authorization:`Bearer ${e.token}`}:{};return{...t,baseUrl:n,async config(){let t=e.timeoutMs===void 0?void 0:AbortSignal.timeout(e.timeoutMs),i=await fetch(`${n}/${yl}`,{headers:r,...w({signal:t})});if(!i.ok)throw await Tl(i);return await Dl(i)}}}function yT(e={}){return vT({baseUrl:e.baseUrl??pu(),...w({token:e.token})})}function bT(e){let t=(0,V.useRef)(e);t.current=e;let n=(0,V.useRef)(void 0);return(0,V.useCallback)(()=>t.current||(n.current??=yT(),n.current),[])}function xT(e={}){let{api:t,skip:n=!1}=e,[r,i]=(0,V.useState)({workflows:[],loading:!n,error:void 0}),a=bT(t);return(0,V.useEffect)(()=>{if(n)return;let e=!1;return a().list().then(t=>{e||i({workflows:t,loading:!1,error:void 0})}).catch(t=>{e||i({workflows:[],loading:!1,error:be(t)})}),()=>{e=!0}},[n,a]),r}function ST(e){if(!C(e))return;let{type:t}=e;return typeof t==`string`?t:Array.isArray(t)?t.find(e=>e!==`null`):void 0}function CT(e,t){if(t?.upload===!0)return`file`;if(!C(e))return`none`;let{enum:n}=e;if(Array.isArray(n)&&n.length>0)return`select`;switch(ST(e)){case`boolean`:return`checkbox`;case`number`:case`integer`:return`number`;case`string`:return`text`;default:return`none`}}function wT({workflow:e}){let{workflows:t,loading:n}=xT(typeof e==`string`?{}:{skip:!0}),r=typeof e==`string`?t.find(t=>t.name===e):e;UC(n);let i=ET(r?.inputSchema);if(!i?.properties)return null;let a=new Set(i.required??[]),o=new Set(r?.uploads??[]);return(0,U.jsx)(U.Fragment,{children:Object.entries(i.properties).map(([e,t])=>(0,U.jsx)(TT,{name:e,property:t,required:a.has(e),upload:o.has(e)},e))})}function TT({name:e,property:t,required:n,upload:r=!1}){let i=DT(e),a=t.description===void 0?{}:{hint:t.description},o=t.default===void 0?{}:{defaultValue:String(t.default)};switch(CT(t,{upload:r})){case`file`:return(0,U.jsx)(aw,{name:e,label:i,required:n,upload:!0,...a});case`select`:return(0,U.jsx)(rw,{name:e,label:i,required:n,options:(t.enum??[]).map(e=>String(e)),...a,...o});case`checkbox`:return(0,U.jsx)(iw,{name:e,label:i,defaultChecked:t.default===!0,...a});case`number`:return(0,U.jsx)(nw,{name:e,label:i,required:n,step:ST(t)===`integer`?1:`any`,...a,...o});case`text`:return(0,U.jsx)(tw,{name:e,label:i,required:n,...a,...o});default:return null}}function ET(e){return C(e)?e:void 0}function DT(e){let t=e.replace(/[_-]+/g,` `).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).trim().toLowerCase();return t.charAt(0).toUpperCase()+t.slice(1)}function OT(e,t){let n=new AbortController,r,i=async()=>{await t(n.signal)||n.signal.aborted||(r=setTimeout(()=>void i(),e))};return i(),()=>{n.abort(),r!==void 0&&clearTimeout(r)}}var kT=5e3;function AT(e){return e===408||e===429||e>=500}async function jT(e,t){let n=[],r=`partial`;for await(let i of yw(e,t))if(i.event===`chunk`)n.push(i.data);else if(i.event===`done`)r=i.data?.complete?`complete`:`partial`;else if(i.event===`missing`)return{ending:`complete`,chunks:n};return{ending:r,chunks:n}}function MT(e,t,n,r,i,a){let o=n.startIndex??0,s=o<0?-o:void 0,c=s===void 0?o:0,l=!0,u=async r=>{let a=await e().streamOutput(t,{...w({namespace:n.namespace,startIndex:c===0?void 0:c}),signal:r});if(!a.ok&&AT(a.status))return`partial`;if(!(a.ok&&a.body))return`unsupported`;let{ending:o,chunks:u}=await jT(a.body,r);c+=u.length;let d=l&&s!==void 0?u.slice(-s):u;return l=!1,d.length>0&&!r.aborted&&i(d),o};return OT(r,async e=>{let t;try{t=await u(e)}catch{t=`partial`}return e.aborted?!0:t!==`partial`&&(a(t),!0)})}function NT(e,t={}){let{api:n,namespace:r,startIndex:i,intervalMs:a=kT}=t,[o,s]=(0,V.useState)([]),[c,l]=(0,V.useState)(!1),[u,d]=(0,V.useState)(!0),f=bT(n);return(0,V.useEffect)(()=>{if(s([]),d(!0),l(!1),!e)return;l(!0);let t=MT(f,e,{namespace:r,startIndex:i},a,e=>s(t=>[...t,...e]),e=>{l(!1),e===`unsupported`&&d(!1)});return()=>{t(),l(!1)}},[e,r,i,a,f]),{progress:o,latest:o.at(-1),streaming:c,supported:u}}function PT({runId:e,api:t,className:n,placeholder:r,lines:i}){let{progress:a,streaming:o,supported:s}=NT(e,w({api:t})),c=(0,V.useMemo)(()=>{let e=i===void 0?a:a.slice(Math.max(a.length-i,0));return e.length===0?null:e.join(`
124
+ `,t),i=-1;if(n!==-1&&r!==-1?i=n<r?n:r:n===-1?r!==-1&&(i=r):i=n===e.length-1?-1:n,i===-1)break;S(e,t,i),t=i+1,e.charCodeAt(t-1)===mw&&e.charCodeAt(t)===pw&&t++}return e.slice(t)}function S(e,t,r){if(t===r){w();return}let i=e.charCodeAt(t);if(vw(e,t,i)){let n=e.charCodeAt(t+5)===hw?t+6:t+5,i=e.slice(n,r);d=f===0?i:`${d}\n${i}`,f++;return}if(yw(e,t,i)){p=e.slice(e.charCodeAt(t+6)===hw?t+7:t+6,r)||void 0;return}if(i===105&&e.charCodeAt(t+1)===100&&e.charCodeAt(t+2)===58){let n=e.slice(e.charCodeAt(t+3)===hw?t+4:t+3,r);n.includes(`\0`)||(u=n);return}if(i===58){if(n){let i=e.slice(t,r);n(i.slice(e.charCodeAt(t+1)===hw?2:1))}return}let a=e.slice(t,r),o=a.indexOf(`:`);if(o===-1){C(a,``,a);return}let s=a.slice(0,o),c=a.charCodeAt(o+1)===hw?2:1;C(s,a.slice(o+c),a)}function C(e,t,n){switch(e){case`event`:p=t||void 0;break;case`data`:d=f===0?t:`${d}\n${t}`,f++;break;case`id`:t.includes(`\0`)||(u=t);break;case`retry`:/^\d+$/.test(t)?o?.(parseInt(t,10)):r?.(new fw(`Invalid \`retry\` value: "${t}"`,{type:`invalid-retry`,value:t,line:n}));break;default:r?.(new fw(`Unknown field "${e.length>20?`${e.slice(0,20)}…`:e}"`,{type:`unknown-field`,field:e,value:t,line:n}))}}function w(){u!==void 0&&a?.(u),f>0&&i?.({id:u,event:p,data:d}),u=void 0,d=``,f=0,p=void 0}function T(e={}){if(e.consume&&s.length>0){let e=s.join(``);S(e,0,e.length)}l=``,u=void 0,d=``,f=0,p=void 0,s.length=0,c=0,m=!1,h=!1,g=!1}return{feed:_,reset:T}}function vw(e,t,n){return n===100&&e.charCodeAt(t+1)===97&&e.charCodeAt(t+2)===116&&e.charCodeAt(t+3)===97&&e.charCodeAt(t+4)===58}function yw(e,t,n){return n===101&&e.charCodeAt(t+1)===118&&e.charCodeAt(t+2)===101&&e.charCodeAt(t+3)===110&&e.charCodeAt(t+4)===116&&e.charCodeAt(t+5)===58}function bw(e,t){let n=1;for(;n<e.length&&n<t.length;){if(e.charCodeAt(n)!==t.charCodeAt(n))return!1;n++}return e.length<=t.length||e.charCodeAt(t.length)===58}async function*xw(e,t){let n=e.getReader(),r=new TextDecoder,i=[],a=_w({onEvent:({event:e,data:t})=>{e!==void 0&&i.push({event:e,data:T(t)})}});try{for(;!t?.aborted;){let{done:e,value:t}=await n.read();if(e)return;if(a.feed(r.decode(t,{stream:!0})),i.length===0)continue;let o=i;i=[];for(let e of o)yield e}}finally{n.cancel().catch(()=>void 0)}}var Sw=1e3;async function Cw(e){if(!e.ok)throw await Tl(e);if(!e.body)throw Error(`The agent answered the event stream with no body`);return e.body}async function*ww(e,t,n){let r=await Cw(await e.watch(t,n));for await(let e of xw(r,n)){if(e.event===`run`&&e.data){let t=e.data;if(yield t,Ll(t))return`settled`;continue}if(e.event===`done`||e.event===`missing`)return`settled`;if(e.event===`idle`)return`handed-back`}return`dropped`}async function*Tw(e,t,n){for(;!n?.aborted;){let r=yield*ww(e,t,n);if(r===`settled`||n?.aborted)return;if(r===`dropped`)throw Error(`The event stream for run ${t} ended before the run settled`)}}async function*Ew(e,t,n,r){let i=await Cw(await e.streamOutput(t,w({namespace:n.namespace,startIndex:r,signal:n.signal}))),a=r;for await(let e of xw(i,n.signal)){if(e.event===`chunk`){a+=1,yield e.data;continue}if(e.event===`done`){let t=e.data?.complete===!0;return{next:a,complete:t}}if(e.event===`missing`)return{next:a,complete:!0}}return{next:a,complete:!1}}async function*Dw(e,t,n={}){let r=Math.max(0,n.fromIndex??0);for(;!n.signal?.aborted;){let i=yield*Ew(e,t,n,r);if(r=i.next,i.complete||n.signal?.aborted)return;await Fl(Sw,w({signal:n.signal}))}}function Ow(e,t){return{loaded:e,total:t,fraction:t!==void 0&&t>0?Math.min(1,e/t):void 0}}function kw(){let e=globalThis.XMLHttpRequest;return typeof e==`function`?e:void 0}var Aw=new Set([204,205,304]),jw=200,Mw=599;function Nw(e,t,n,r,i,a,o,s){return new Promise((c,l)=>{let u=new e,d=e=>t=>{s&&s.removeEventListener(`abort`,m),e(t)},f=d(c),p=d(l),m=()=>u.abort();u.open(t,n);for(let[e,t]of Object.entries(r))u.setRequestHeader(e,t);if(u.upload.addEventListener(`progress`,e=>{o(Ow(e.loaded,e.lengthComputable?e.total:a))}),u.addEventListener(`load`,()=>{if(u.status<jw||u.status>Mw){p(Pw());return}let e=u.getResponseHeader(`Content-Type`);f(new Response(Aw.has(u.status)?null:u.responseText,{status:u.status,statusText:u.statusText,headers:w({"Content-Type":e??void 0})}))}),u.addEventListener(`error`,()=>p(Pw())),u.addEventListener(`timeout`,()=>p(Pw())),u.addEventListener(`abort`,()=>p(s?.reason??Fw())),s){if(s.aborted){p(s.reason??Fw());return}s.addEventListener(`abort`,m,{once:!0})}u.send(i)})}function Pw(){return TypeError(`${Cl}: the upload did not reach the agent`)}function Fw(){return new DOMException(`The upload was aborted.`,`AbortError`)}var Iw=new Set([408,425,429,500,502,503,504]);function Lw(e,t){let n=t&&ce(t);return n?Math.min(Math.max(0,n.getTime()-Date.now()),g):Pl(e,{baseMs:500,maxMs:g})}async function Rw(e,t){for(let n=1;;n+=1){let r;try{r=await e()}catch(e){if(n>=t.attempts||t.signal.aborted)throw e}if(r&&(r.ok||!Iw.has(r.status))||r&&n>=t.attempts)return{res:r,attempts:n};await Fl(Lw(n,r),{signal:t.signal}),t.signal.throwIfAborted()}}function zw(e){let t=[],n,r=kl(async()=>{for(;t.length>0&&n===void 0;){let n=t.splice(0,e.batch).map(e=>`offset=${e}`).join(`&`),{res:r}=await Rw(()=>fetch(`${e.uploads}/parts?${n}&stored=1`,{method:`PUT`,headers:e.headers,signal:e.signal}),{attempts:e.attempts,signal:e.signal});if(!r.ok)throw await e.fail(r)}}),i=t=>{n??=t,e.onFail(t)};return{landed(e){t.push(e),r.trigger().catch(i)},async drain(){if(await r.trigger().catch(i),n!==void 0)throw n}}}function Bw(e){if(typeof e==`string`)return;if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))return e.byteLength;let t=e;return typeof t.size==`number`&&typeof t.slice==`function`?t.size:void 0}function Vw(e,t,n){return e instanceof ArrayBuffer?new Uint8Array(e,t,n-t):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset+t,n-t):e.slice(t,n)}function Hw(e,t,n={}){let r=Bw(e);if(r===void 0)return;let i=Ww(r,t.partBytes??8388608);if(i.length>=Uw)return{total:r,parts:i};if(i.length!==0&&n.resumable===!0)return{total:r,parts:Ww(r,h)}}var Uw=2;function Ww(e,t){let n=Math.max(h,Math.ceil(t/h)*h),r=[];for(let t=0;t<e;t+=n)r.push({start:t,end:Math.min(t+n,e),index:r.length});return r}async function Gw(e,t,n){let r=Number.isFinite(t)?Math.max(1,Math.floor(t)):1,i=Array(e.length),a=0,o=!1,s;if(await Promise.allSettled(Array.from({length:Math.min(r,e.length)},async()=>{for(let t=a++;t<e.length&&!o;t=a++)try{i[t]=await n(e[t],t)}catch(e){throw o=!0,s??={reason:e},e}})),s!==void 0)throw s.reason;return i}async function Kw(e){let{missing:t,width:n,sendPart:r,failed:i}=e;try{await Gw(t,n,async e=>{try{await r(e)}catch(e){throw i.abort(e),e}})}catch(e){throw i.signal.aborted?i.signal.reason:e}}function qw(e){let{req:t,bytesBase:n,uploads:r,options:i,attempts:a,signal:o,report:s,claimer:c}=e;return async e=>{let l=n?`${n}/${encodeURIComponent(t.id)}/${e.start}`:`${r}/parts?offset=${e.start}`,{res:u}=await Rw(()=>(s(e.index,0),t.send(`PUT`,l,n?{"Content-Type":t.type}:{...t.headers,"Content-Type":t.type},Vw(t.file,e.start,e.end),Jw(i,e,s))),{attempts:a,signal:o});if(!u.ok)throw await t.fail(u);n&&c.landed(e.start),s(e.index,e.end-e.start)}}function Jw(e,t,n){return{...w({signal:e?.signal}),...e?.onProgress?{onProgress:e=>n(t.index,e.loaded)}:{}}}function Yw(e){if(e!==!1)return e===void 0||e===!0?{}:e}function Xw(e){let t=e.replace(/\/+$/,``);if(t.endsWith(`/workflows`))return`${t.slice(0,-Sl.length)}/uploads`}async function Zw(e){let{req:t,begun:n,begunAlready:r,uploads:i,signal:a,attempts:o,parts:s}=e,c=n.ok?await Dl(n).catch(()=>({})):{},l=r?await nT(t,i,a,o):void 0,u=n.ok?c:l?.capability??{};return{bytesBase:u.directParts===!0?Xw(t.base):void 0,claimBatch:Qw(u.claimBatch),missing:l?s.filter(e=>!rT(l.ranges,e)):s}}function Qw(e){return Number.isInteger(e)&&(e??0)>1?e??1:1}async function $w(e){let{total:t,parts:n}=e.plan,r=`${e.base}/uploads/${encodeURIComponent(e.id)}`,i=new AbortController,a=e.options?.signal?AbortSignal.any([e.options.signal,i.signal]):i.signal,o={...e.options,signal:a},{res:s,attempts:c}=await Rw(()=>fetch(`${r}/parts?name=${encodeURIComponent(e.name)}&total=${t}`,{method:`POST`,headers:{...e.headers,"Content-Type":e.type},signal:a}),{attempts:4,signal:a}),l=s.status===409&&(c>1||e.options?.resume===!0);if(!(s.ok||l))throw await e.fail(s);let{bytesBase:u,claimBatch:d,missing:f}=await Zw({req:e,begun:s,begunAlready:l,uploads:r,signal:a,attempts:4,parts:n}),p=zw({uploads:r,headers:e.headers,batch:d,attempts:4,signal:a,fail:e.fail,onFail:e=>i.abort(e)}),m=iT(t,n.length,e.options?.onProgress);for(let e of n)f.includes(e)||m(e.index,e.end-e.start);let h=qw({req:e,bytesBase:u,uploads:r,options:o,attempts:4,signal:a,report:m,claimer:p});await Kw({missing:f,width:e.settings.concurrency??8,sendPart:h,failed:i}),await p.drain();let{res:g}=await Rw(()=>fetch(`${r}/info`,{headers:e.headers,signal:a}),{attempts:4,signal:a});if(!g.ok)throw await e.fail(g);let _=await Dl(g);return eT(_,e.id,t),{..._,url:r}}function eT(e,t,n){if(!e.complete)throw new tT(`Workflow API: upload ${t} stored every part but reports ${e.size} of ${n} byte(s) and is not complete. The agent acknowledged each window and then did not record it, so nothing can read this upload.`)}var tT=class extends Error{name=`UploadNotRecordedError`};async function nT(e,t,n,r){let{res:i}=await Rw(()=>fetch(`${t}/info`,{headers:e.headers,signal:n}),{attempts:r,signal:n});if(!i.ok)throw await e.fail(i);let a=await Dl(i);return{ranges:a.complete?[{start:0,end:a.size}]:a.ranges??[],capability:a}}function rT(e,t){return e.some(e=>e.start<=t.start&&e.end>=t.end)}function iT(e,t,n){let r=Array(t).fill(0);return n?(n(Ow(0,e)),(t,i)=>{r[t]=i,n(Ow(r.reduce((e,t)=>e+t,0),e))}):()=>void 0}function aT(e){if(e instanceof tT||e instanceof Error&&e.name===`AbortError`)return!1;let t=El(e);return t===void 0||Iw.has(t)}function oT(e){return Pl(e,{baseMs:_,maxMs:v})}async function sT(e,t){let n=t.attempts??4;for(let r=1;;r+=1){try{return await e({resume:r!==1||t.resume,round:r})}catch(e){if(r>=n||t.signal?.aborted===!0||!aT(e))throw e}await Fl(oT(r),w({signal:t.signal})),t.signal?.throwIfAborted()}}function cT(e){if(typeof e==`string`)return;if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))return e.byteLength;let t=e.size;return typeof t==`number`?t:void 0}async function lT(e,t,n,r,i){let a=i?.signal,o={method:e,headers:n,body:r,...w({signal:a})},s=i?.onProgress;if(!s)return await fetch(t,o);let c=cT(r),l=0,u=e=>{l=e.loaded,s(e)};u(Ow(0,c));let d=kw(),f=d?await Nw(d,e,t,n,r,c,u,a):await fetch(t,o);return u(Ow(c??l,c)),f}function uT(e,t){let n=e;return{name:t?.name??(typeof n.name==`string`?n.name:``),type:t?.type??(typeof n.type==`string`&&n.type?n.type:`application/octet-stream`)}}function dT(){let e=crypto.randomUUID().replaceAll(`-`,``);return Ml(y.test(e),`upload.id.minted`,()=>({id:e})),e}function fT(e,t){return sT(t=>$w({...e,send:lT,options:{...e.options,resume:t.resume}}),{resume:t,...w({signal:e.options?.signal})})}async function pT(e,t,n,r,i){let{name:a,type:o}=uT(r,i),s=Yw(i?.parallel),c=s&&Hw(r,s);if(s&&c)return fT({base:e,headers:t,fail:n,id:dT(),file:r,name:a,type:o,options:i,settings:s,plan:c},void 0);let l=await lT(`POST`,`${e}/uploads?name=${encodeURIComponent(a)}`,{...t,"Content-Type":o},r,i);if(!l.ok)throw await n(l);let u=await Dl(l);return{...u,url:`${e}/uploads/${encodeURIComponent(u.id)}`}}async function mT(e,t,n,r,i,a){let{name:o,type:s}=uT(i,a),c=Yw(a?.parallel),l=c&&Hw(i,c,{resumable:!0});if(c&&l)return fT({base:e,headers:t,fail:n,id:r,file:i,name:o,type:s,options:a,settings:c,plan:l},a?.resume);let u=await lT(`PUT`,`${e}/uploads/${encodeURIComponent(r)}?name=${encodeURIComponent(o)}`,{...t,"Content-Type":s},i,a);if(!u.ok)throw await n(u);let d=await Dl(u);return{...d,url:`${e}/uploads/${encodeURIComponent(d.id)}`}}async function hT(e,t,n,r,i){let a=await fetch(`${e}/uploads/${encodeURIComponent(r)}`,{headers:t,...w({signal:i})});if(!a.ok)throw await n(a);return await a.blob()}async function gT(e,t,n,r,i){let a=await fetch(`${e}/uploads/${encodeURIComponent(r)}/info`,{headers:t,...w({signal:i})});if(!a.ok)throw await n(a);return await Dl(a)}function _T(e){let t=wl(e.baseUrl),n=e.token?{Authorization:`Bearer ${e.token}`}:{};function r(t=0,n){let r=e.timeoutMs===void 0?void 0:AbortSignal.timeout(e.timeoutMs+t);return r===void 0?w({signal:n}):{signal:n?AbortSignal.any([n,r]):r}}async function i(e,i,a){let o=a.wait,s=await fetch(`${t}/runs`,{method:`POST`,headers:{...n,"Content-Type":`application/json`},body:JSON.stringify({workflow:e,...w({input:i,key:a.key,wait:o})}),...r(o,a.signal)});if(!s.ok)throw await Tl(s);return await Dl(s)}async function a(e,i,a){let o=new URLSearchParams(e);i!==void 0&&o.set(`limit`,String(i));let s=await fetch(`${t}/runs?${o.toString()}`,{headers:n,...r(0,a)});if(!s.ok)throw await Tl(s);return(await Dl(s)).runs??[]}let o={upload(e,r){return pT(t,n,Tl,e,r)},async list(e){let i=await fetch(t,{headers:n,...r(0,e?.signal)});if(!i.ok)throw await Tl(i);return(await Dl(i)).workflows??[]},async start(e,t,n){let{runId:r}=await i(e,t,{key:n?.key,signal:n?.signal});return r},async startAndWait(e,t,n){let r=zl(n?.wait??6e4),a=await i(e,t,{key:n?.key,wait:r,signal:n?.signal});return a.run??Ol(a.runId,e)},async get(e,i){let a=zl(i?.wait),o=a>0?`?wait=${a}`:``,s=await fetch(`${t}/runs/${encodeURIComponent(e)}${o}`,{headers:n,...r(a,i?.signal)});if(s.status!==404){if(!s.ok)throw await Tl(s);return await Dl(s)}},find(e,t,n){return a({workflow:e,key:t},n?.limit,n?.signal)},recent(e,t){return a({workflow:e},t?.limit,t?.signal)},watch(e,r){return fetch(`${t}/runs/${encodeURIComponent(e)}/events`,{headers:{...n,Accept:`text/event-stream`},...w({signal:r})})},streamOutput(e,r){let i=new URLSearchParams(w({namespace:r?.namespace,startIndex:r?.startIndex===void 0?void 0:String(r.startIndex)})),a=i.size>0?`?${i.toString()}`:``;return fetch(`${t}/runs/${encodeURIComponent(e)}/stream${a}`,{headers:{...n,Accept:`text/event-stream`},...w({signal:r?.signal})})},follow(e,t){return Tw(o,e,t?.signal)},followOutput(e,t){return Dw(o,e,t??{})},uploadStream:(e,r,i)=>mT(t,n,Tl,e,r,i),uploadInfo:(e,i)=>gT(t,n,Tl,e,r(0,i?.signal).signal),download:(e,r)=>hT(t,n,Tl,e,r?.signal),async wake(e,i){let a=yT(i?.correlationIds),o=await fetch(`${t}/runs/${encodeURIComponent(e)}/wake${a}`,{method:`POST`,headers:n,...r(0,i?.signal)});if(o.status===404)return 0;if(!o.ok)throw await Tl(o);return(await Dl(o)).woken??0},async cancel(e,i){let a=await fetch(`${t}/runs/${encodeURIComponent(e)}`,{method:`DELETE`,headers:n,...r(0,i?.signal)});if(!a.ok)throw await Tl(a);return(await Dl(a)).cancelled===!0}};return o}var vT=256;function yT(e){if(!e||e.length===0)return``;let t=new URLSearchParams;for(let n of e){if(n.trim()===``)throw Error("A workflow `correlationId` must not be empty");if(n.length>vT)throw Error(`A workflow \`correlationId\` must be at most ${vT} characters`);t.append(`correlationId`,n)}return`?${t.toString()}`}function bT(e){let t=_T(e),n=e.baseUrl.replace(/\/+$/,``),r=e.token?{Authorization:`Bearer ${e.token}`}:{};return{...t,baseUrl:n,async config(){let t=e.timeoutMs===void 0?void 0:AbortSignal.timeout(e.timeoutMs),i=await fetch(`${n}/${yl}`,{headers:r,...w({signal:t})});if(!i.ok)throw await Tl(i);return await Dl(i)}}}function xT(e={}){return bT({baseUrl:e.baseUrl??pu(),...w({token:e.token})})}function ST(e){let t=(0,V.useRef)(e);t.current=e;let n=(0,V.useRef)(void 0);return(0,V.useCallback)(()=>t.current||(n.current??=xT(),n.current),[])}function CT(e={}){let{api:t,skip:n=!1}=e,[r,i]=(0,V.useState)({workflows:[],loading:!n,error:void 0}),a=ST(t);return(0,V.useEffect)(()=>{if(n)return;let e=!1;return a().list().then(t=>{e||i({workflows:t,loading:!1,error:void 0})}).catch(t=>{e||i({workflows:[],loading:!1,error:be(t)})}),()=>{e=!0}},[n,a]),r}function wT(e){if(!C(e))return;let{type:t}=e;return typeof t==`string`?t:Array.isArray(t)?t.find(e=>e!==`null`):void 0}function TT(e,t){if(t?.upload===!0)return`file`;if(!C(e))return`none`;let{enum:n}=e;if(Array.isArray(n)&&n.length>0)return`select`;switch(wT(e)){case`boolean`:return`checkbox`;case`number`:case`integer`:return`number`;case`string`:return`text`;default:return`none`}}function ET({workflow:e}){let{workflows:t,loading:n}=CT(typeof e==`string`?{}:{skip:!0}),r=typeof e==`string`?t.find(t=>t.name===e):e;GC(n);let i=OT(r?.inputSchema);if(!i?.properties)return null;let a=new Set(i.required??[]),o=new Set(r?.uploads??[]);return(0,U.jsx)(U.Fragment,{children:Object.entries(i.properties).map(([e,t])=>(0,U.jsx)(DT,{name:e,property:t,required:a.has(e),upload:o.has(e)},e))})}function DT({name:e,property:t,required:n,upload:r=!1}){let i=kT(e),a=t.description===void 0?{}:{hint:t.description},o=t.default===void 0?{}:{defaultValue:String(t.default)};switch(TT(t,{upload:r})){case`file`:return(0,U.jsx)(sw,{name:e,label:i,required:n,upload:!0,...a});case`select`:return(0,U.jsx)(aw,{name:e,label:i,required:n,options:(t.enum??[]).map(e=>String(e)),...a,...o});case`checkbox`:return(0,U.jsx)(ow,{name:e,label:i,defaultChecked:t.default===!0,...a});case`number`:return(0,U.jsx)(iw,{name:e,label:i,required:n,step:wT(t)===`integer`?1:`any`,...a,...o});case`text`:return(0,U.jsx)(rw,{name:e,label:i,required:n,...a,...o});default:return null}}function OT(e){return C(e)?e:void 0}function kT(e){let t=e.replace(/[_-]+/g,` `).replace(/([a-z0-9])([A-Z])/g,`$1 $2`).trim().toLowerCase();return t.charAt(0).toUpperCase()+t.slice(1)}function AT(e,t){let n=new AbortController,r,i=async()=>{await t(n.signal)||n.signal.aborted||(r=setTimeout(()=>void i(),e))};return i(),()=>{n.abort(),r!==void 0&&clearTimeout(r)}}var jT=5e3;function MT(e){return e===408||e===429||e>=500}async function NT(e,t){let n=[],r=`partial`;for await(let i of xw(e,t))if(i.event===`chunk`)n.push(i.data);else if(i.event===`done`)r=i.data?.complete?`complete`:`partial`;else if(i.event===`missing`)return{ending:`complete`,chunks:n};return{ending:r,chunks:n}}function PT(e,t,n,r,i,a){let o=n.startIndex??0,s=o<0?-o:void 0,c=s===void 0?o:0,l=!0,u=async r=>{let a=await e().streamOutput(t,{...w({namespace:n.namespace,startIndex:c===0?void 0:c}),signal:r});if(!a.ok&&MT(a.status))return`partial`;if(!(a.ok&&a.body))return`unsupported`;let{ending:o,chunks:u}=await NT(a.body,r);c+=u.length;let d=l&&s!==void 0?u.slice(-s):u;return l=!1,d.length>0&&!r.aborted&&i(d),o};return AT(r,async e=>{let t;try{t=await u(e)}catch{t=`partial`}return e.aborted?!0:t!==`partial`&&(a(t),!0)})}function FT(e,t={}){let{api:n,namespace:r,startIndex:i,intervalMs:a=jT}=t,[o,s]=(0,V.useState)([]),[c,l]=(0,V.useState)(!1),[u,d]=(0,V.useState)(!0),f=ST(n);return(0,V.useEffect)(()=>{if(s([]),d(!0),l(!1),!e)return;l(!0);let t=PT(f,e,{namespace:r,startIndex:i},a,e=>s(t=>[...t,...e]),e=>{l(!1),e===`unsupported`&&d(!1)});return()=>{t(),l(!1)}},[e,r,i,a,f]),{progress:o,latest:o.at(-1),streaming:c,supported:u}}function IT({runId:e,api:t,className:n,placeholder:r,lines:i}){let{progress:a,streaming:o,supported:s}=FT(e,w({api:t})),c=(0,V.useMemo)(()=>{let e=i===void 0?a:a.slice(Math.max(a.length-i,0));return e.length===0?null:e.join(`
125
125
  `)},[a,i]);return!s||c===null?r??null:(0,U.jsxs)(`pre`,{role:`log`,"aria-live":`polite`,"aria-atomic":`false`,className:H(n??`whitespace-pre-wrap border-l pl-4 text-xs opacity-70`),children:[c,o&&`
126
- …`]})}function FT({run:e,className:t}){return e?.status===`failed`?(0,U.jsxs)(`p`,{role:`alert`,className:H(`text-red-600`,t),children:[`That run failed: `,e.error]}):null}function IT(e){let{workflow:t,key:n,enabled:r,getClient:i}=e,[a,o]=(0,V.useState)(r),s=(0,V.useRef)(e);return s.current=e,(0,V.useEffect)(()=>{if(!r)return;let e=!1;return o(!0),i().find(t,n,{limit:1}).then(t=>{if(e)return;let n=t[0];n!==void 0&&s.current.onFound(n.runId),o(!1)}).catch(t=>{e||(s.current.onError(be(t)),o(!1))}),()=>{e=!0}},[r,n,t,i]),a}function LT(e,t){return{wake:(0,V.useCallback)(async()=>e===void 0?0:await t().wake(e),[e,t]),cancel:(0,V.useCallback)(async()=>e!==void 0&&await t().cancel(e),[e,t])}}function RT(e){if(e instanceof File)return[e];if(!Array.isArray(e))return[];let t=e.filter(e=>e instanceof File);return t.length>0&&t.length===e.length?t:[]}var zT=`aai:upload:`,BT=32;function VT(e){return`${zT}${e}`}function HT(e){return`${e.size}:${e.lastModified}:${e.type}:${e.name}`}function UT(e){let t=cS(`session`,VT(e));if(t===void 0)return{};try{let e=JSON.parse(t);return C(e)?e:{}}catch{return{}}}function WT(e,t){lS(`session`,VT(e),JSON.stringify(t))}function GT(e,t){let n=UT(e)[HT(t)];return typeof n==`string`?n:void 0}function KT(e,t,n){let r=UT(e),i=HT(t);delete r[i],r[i]=n;let a=Object.keys(r);for(let e of a.slice(0,Math.max(0,a.length-BT)))delete r[e];WT(e,r)}function qT(e,t){let n=UT(e),r=HT(t);r in n&&(delete n[r],WT(e,n))}function JT(e){return e instanceof Error&&e.name===`AbortError`}function YT(){return crypto.randomUUID().replaceAll(`-`,``)}async function XT(e,t){let n=!1;for(;;){if(await e.settle(),e.cancelled)throw Error(`Upload cancelled.`);let r=n;n=!0;try{await t(r);return}catch(t){if(e.cancelled||!JT(t))throw t}}}function ZT(){let e=new AbortController,t=!1,n=!1,r,i;return{get paused(){return t},get cancelled(){return n},get signal(){return e.signal},pause(){if(t||n)return;t=!0;let a=Promise.withResolvers();i=a.promise,r=a.resolve,e.abort()},resume(){t&&!n&&(t=!1,e=new AbortController,r?.(),r=void 0,i=void 0)},cancel(){n||(n=!0,t=!1,e.abort(),r?.(),r=void 0,i=void 0)},async settle(){i&&await i}}}function QT(e){return{scope:e,ids:new Map,stored:new Map,tried:new Set,gate:ZT()}}async function $T(e,t,n){let r=GT(t.scope,n);if(r===void 0)return{id:YT(),complete:!1};let i=await e.uploadInfo(r).catch(()=>void 0);return i?.complete===!0?{id:r,complete:!0}:i!==void 0&&(i.ranges?.length??0)>0?(t.tried.add(n),{id:r,complete:!1}):(qT(t.scope,n),{id:YT(),complete:!1})}async function eE(e,t,n,r,i){if(!C(t))return t;let a=Object.entries(t),o=a.reduce((e,[,t])=>e+RT(t).length,0),s=0,c=async t=>{s+=1;let a=i.stored.get(t);if(a!==void 0)return a;let c={name:t.name,index:s,count:o},l=i.ids.get(t),u=l===void 0?await $T(e,i,t):{id:l,complete:!1},d=u.id;return l===void 0&&(i.ids.set(t,d),KT(i.scope,t,d)),u.complete?(n({...c,loaded:t.size,total:t.size,fraction:1,paused:!1}),i.stored.set(t,d),d):(await XT(i.gate,async a=>{await e.uploadStream(d,t,{name:t.name,signal:i.gate.signal,onProgress:e=>n({...c,...e,paused:i.gate.paused}),...w({parallel:r,resume:a||i.tried.has(t)?!0:void 0})})}),i.stored.set(t,d),d)},l={};for(let[e,t]of a){if(t instanceof File){l[e]=await c(t);continue}let n=RT(t);if(n.length===0){l[e]=t;continue}let r=[];for(let e of n)r.push(await c(e));l[e]=r}return l}function tE(e,t){let n=(0,V.useCallback)(e=>{t(t=>t&&{...t,paused:e})},[t]);return{pauseUpload:(0,V.useCallback)(()=>{e()?.pause(),n(!0)},[e,n]),resumeUpload:(0,V.useCallback)(()=>{e()?.resume(),n(!1)},[e,n])}}function nE(e){let{name:t,index:n,count:r,loaded:i,total:a,fraction:o,paused:s}=e,c=o===void 0?i:Math.round(o*1e3);return`${s} ${n} ${r} ${a??-1} ${c} ${t}`}function rE(e){let t;return n=>{if(n===void 0){t=void 0,e(void 0);return}let r=nE(n);r!==t&&(t=r,e(n))}}function iE(){let[e,t]=(0,V.useState)(void 0),[n,r]=(0,V.useState)(!1),[i,a]=(0,V.useState)(void 0),[o,s]=(0,V.useState)(void 0),c=(0,V.useRef)(void 0),l=(0,V.useCallback)(e=>{r(!0),a(void 0),t(void 0),c.current?.gate.cancel(),c.current=e},[]),u=(0,V.useCallback)(e=>{c.current===e&&(c.current=void 0,r(!1),s(void 0))},[]),d=(0,V.useCallback)(()=>{c.current?.gate.cancel(),c.current=void 0,t(void 0),a(void 0),s(void 0)},[]),{pauseUpload:f,resumeUpload:p}=tE((0,V.useCallback)(()=>c.current?.gate,[]),s);return{runId:e,starting:n,startError:i,upload:o,actions:(0,V.useMemo)(()=>({setRunId:t,setStartError:a,setUpload:s,begin:l,end:u,reset:d,pauseUpload:f,resumeUpload:p}),[l,u,d,f,p])}}var aE=`aai:run-key:`;function oE(){return dS(aE,`./`)}function sE(e){let t=oE(),n=cS(e,t);if(n!==void 0)return n;let r=crypto.randomUUID();return lS(e,t,r),r}function cE(e){let[t]=(0,V.useState)(()=>e===void 0?sE(`session`):``);return e??t}function lE(e,t,n,r,i){let a=new AbortController,o=()=>{a.signal.aborted||i()};return(async()=>{let r=await e().watch(t,a.signal);if(!(r.ok&&r.body))return`fallback`;for await(let e of yw(r.body,a.signal)){e.event===`run`&&e.data&&n(e.data);let t=uE(e.event);if(t)return t}return`fallback`})().then(e=>e===`settled`?r():o(),()=>o()),()=>a.abort()}function uE(e){return e===`done`||e===`missing`?`settled`:e===`idle`?`fallback`:void 0}var dE=2e3;function fE(e,t,n,r,i,a){let o=0,s=e=>(o+=1,o<3?!1:(e.aborted||i(`No workflow run ${t}`),!0)),c=async n=>{try{let i=await e().get(t);return n.aborted?!0:i?(o=0,r(i),Ll(i)):s(n)}catch(e){return n.aborted||i(be(e)),!1}};return OT(n,async e=>await c(e)?(e.aborted||a(),!0):!1)}function pE(e,t={}){let{api:n,intervalMs:r=dE}=t,[i,a]=(0,V.useState)(void 0),[o,s]=(0,V.useState)(void 0),[c,l]=(0,V.useState)(!1),u=bT(n);return(0,V.useEffect)(()=>{if(a(void 0),s(void 0),l(!1),!e)return;let t=e=>{a(e),s(void 0)},n,i=lE(u,e,t,()=>l(!0),()=>{n=fE(u,e,r,t,s,()=>l(!0))});return()=>{i(),n?.()}},[e,r,u]),{run:i,error:o,polling:e!==void 0&&!c&&!Ll(i)}}function mE(e,t={}){let{api:n,recover:r=!0,wait:i,intervalMs:a,parallel:o}=t,s=cE(t.key),c=iE(),{runId:l,actions:u}=c,d=bT(n),f=pE(l,w({api:n,intervalMs:a})),{wake:p,cancel:m}=LT(l,d),[h,g]=(0,V.useState)(!1),_=IT({workflow:e,key:s,enabled:r,getClient:d,onFound:e=>{u.setRunId(t=>t??e)},onError:u.setStartError}),v=(0,V.useCallback)(async t=>{let n=d(),r=QT(e);g(!0),u.begin(r);try{let a=w({key:s}),c=await eE(n,t,rE(u.setUpload),o,r);u.setRunId(i===void 0?await n.start(e,c,a):(await n.startAndWait(e,c,{...a,wait:i})).runId)}catch(e){r.gate.cancelled||u.setStartError(be(e))}finally{u.end(r)}},[e,s,i,o,d,u]);return{submit:v,submitForm:v,reset:(0,V.useCallback)(()=>{g(!1),u.reset()},[u]),wake:p,cancel:m,pauseUpload:u.pauseUpload,resumeUpload:u.resumeUpload,run:f.run,startedHere:h,pending:_||c.starting||f.polling,upload:c.upload,error:c.startError??f.error}}function hE(){let[e,t]=(0,V.useState)();return(0,V.useEffect)(()=>{let e=!1;return yu().then(n=>{e||t(n)}),()=>{e=!0}},[]),e}function gE({workflow:e}){let{submitForm:t,run:n,pending:r,upload:i,pauseUpload:a,resumeUpload:o,error:s}=mE(e.name);return(0,U.jsxs)(`section`,{className:`flex flex-col gap-4`,children:[e.description===void 0?null:(0,U.jsx)(`p`,{className:`text-sm opacity-70`,children:e.description}),(0,U.jsxs)(ow,{onSubmit:e=>t(e),error:s,className:`flex flex-col gap-4`,children:[(0,U.jsx)(wT,{workflow:e}),(0,U.jsx)(sw,{pending:r,children:`Start`})]}),(0,U.jsx)(lw,{upload:i,onPause:a,onResume:o}),(0,U.jsx)(PT,{runId:n?.runId}),(0,U.jsx)(FT,{run:n}),n?.status===`completed`&&(0,U.jsx)(`pre`,{className:`overflow-x-auto rounded-md border p-4 text-xs`,children:JSON.stringify(n.output,null,2)})]})}function _E({name:e}){let t=hE(),{workflows:n,loading:r,error:i}=xT(),[a,o]=(0,V.useState)(),s=n.find(e=>e.name===a)??n[0];return(0,U.jsxs)(`main`,{className:`mx-auto flex max-w-2xl flex-col gap-6 p-8`,children:[(0,U.jsxs)(`header`,{className:`flex flex-col gap-1`,children:[(0,U.jsx)(`h1`,{className:`text-2xl font-medium`,children:e??t?.name??`Workflows`}),t?.greeting===void 0?null:(0,U.jsx)(`p`,{className:`text-sm opacity-70`,children:t.greeting})]}),i===void 0?null:(0,U.jsx)(`p`,{role:`alert`,className:`text-red-600`,children:i}),r&&(0,U.jsx)(`p`,{className:`text-sm opacity-70`,children:`Loading workflows…`}),!r&&i===void 0&&n.length===0&&(0,U.jsx)(`p`,{className:`text-sm opacity-70`,children:`This agent declares no workflows.`}),n.length>1&&(0,U.jsxs)(`label`,{className:`flex flex-col gap-1 text-sm`,children:[`Workflow`,(0,U.jsx)(`select`,{value:s?.name??``,onChange:e=>o(e.target.value),className:`rounded-md border px-3 py-2`,children:n.map(e=>(0,U.jsx)(`option`,{value:e.name,children:e.name},e.name))})]}),s&&(0,U.jsx)(gE,{workflow:s},s.name)]})}function vE(e={}){let t=PC(e.target);mu(e.name);let n=e.component;return FC(t,(0,V.createElement)(Uu,{value:e.theme},n?(0,V.createElement)(n):(0,V.createElement)(_E,{name:e.name})))}yu().then(e=>{let t=w({name:e.name});if(e.page===`static`){vE(t);return}zC(t)});export{p as a,m as i,d as n,f as r,u as t};
126
+ …`]})}function LT({run:e,className:t}){return e?.status===`failed`?(0,U.jsxs)(`p`,{role:`alert`,className:H(`text-red-600`,t),children:[`That run failed: `,e.error]}):null}function RT(e){let{workflow:t,key:n,enabled:r,getClient:i}=e,[a,o]=(0,V.useState)(r),s=(0,V.useRef)(e);return s.current=e,(0,V.useEffect)(()=>{if(!r)return;let e=!1;return o(!0),i().find(t,n,{limit:1}).then(t=>{if(e)return;let n=t[0];n!==void 0&&s.current.onFound(n.runId),o(!1)}).catch(t=>{e||(s.current.onError(be(t)),o(!1))}),()=>{e=!0}},[r,n,t,i]),a}function zT(e,t){return{wake:(0,V.useCallback)(async()=>e===void 0?0:await t().wake(e),[e,t]),cancel:(0,V.useCallback)(async()=>e!==void 0&&await t().cancel(e),[e,t])}}function BT(e){if(e instanceof File)return[e];if(!Array.isArray(e))return[];let t=e.filter(e=>e instanceof File);return t.length>0&&t.length===e.length?t:[]}var VT=`aai:upload:`,HT=32;function UT(e){return`${VT}${e}`}function WT(e){return`${e.size}:${e.lastModified}:${e.type}:${e.name}`}function GT(e){let t=cS(`session`,UT(e));if(t===void 0)return{};try{let e=JSON.parse(t);return C(e)?e:{}}catch{return{}}}function KT(e,t){lS(`session`,UT(e),JSON.stringify(t))}function qT(e,t){let n=GT(e)[WT(t)];return typeof n==`string`?n:void 0}function JT(e,t,n){let r=GT(e),i=WT(t);delete r[i],r[i]=n;let a=Object.keys(r);for(let e of a.slice(0,Math.max(0,a.length-HT)))delete r[e];KT(e,r)}function YT(e,t){let n=GT(e),r=WT(t);r in n&&(delete n[r],KT(e,n))}function XT(e){return e instanceof Error&&e.name===`AbortError`}function ZT(){return crypto.randomUUID().replaceAll(`-`,``)}async function QT(e,t){let n=!1;for(;;){if(await e.settle(),e.cancelled)throw Error(`Upload cancelled.`);let r=n;n=!0;try{await t(r);return}catch(t){if(e.cancelled||!XT(t))throw t}}}function $T(){let e=new AbortController,t=!1,n=!1,r,i;return{get paused(){return t},get cancelled(){return n},get signal(){return e.signal},pause(){if(t||n)return;t=!0;let a=Promise.withResolvers();i=a.promise,r=a.resolve,e.abort()},resume(){t&&!n&&(t=!1,e=new AbortController,r?.(),r=void 0,i=void 0)},cancel(){n||(n=!0,t=!1,e.abort(),r?.(),r=void 0,i=void 0)},async settle(){i&&await i}}}function eE(e){return{scope:e,ids:new Map,stored:new Map,tried:new Set,gate:$T()}}async function tE(e,t,n){let r=qT(t.scope,n);if(r===void 0)return{id:ZT(),complete:!1};let i=await e.uploadInfo(r).catch(()=>void 0);return i?.complete===!0?{id:r,complete:!0}:i!==void 0&&(i.ranges?.length??0)>0?(t.tried.add(n),{id:r,complete:!1}):(YT(t.scope,n),{id:ZT(),complete:!1})}async function nE(e,t,n,r,i){if(!C(t))return t;let a=Object.entries(t),o=a.reduce((e,[,t])=>e+BT(t).length,0),s=0,c=async t=>{s+=1;let a=i.stored.get(t);if(a!==void 0)return a;let c={name:t.name,index:s,count:o},l=i.ids.get(t),u=l===void 0?await tE(e,i,t):{id:l,complete:!1},d=u.id;return l===void 0&&(i.ids.set(t,d),JT(i.scope,t,d)),u.complete?(n({...c,loaded:t.size,total:t.size,fraction:1,paused:!1}),i.stored.set(t,d),d):(await QT(i.gate,async a=>{await e.uploadStream(d,t,{name:t.name,signal:i.gate.signal,onProgress:e=>n({...c,...e,paused:i.gate.paused}),...w({parallel:r,resume:a||i.tried.has(t)?!0:void 0})})}),i.stored.set(t,d),d)},l={};for(let[e,t]of a){if(t instanceof File){l[e]=await c(t);continue}let n=BT(t);if(n.length===0){l[e]=t;continue}let r=[];for(let e of n)r.push(await c(e));l[e]=r}return l}function rE(e,t){let n=(0,V.useCallback)(e=>{t(t=>t&&{...t,paused:e})},[t]);return{pauseUpload:(0,V.useCallback)(()=>{e()?.pause(),n(!0)},[e,n]),resumeUpload:(0,V.useCallback)(()=>{e()?.resume(),n(!1)},[e,n])}}function iE(e){let{name:t,index:n,count:r,loaded:i,total:a,fraction:o,paused:s}=e,c=o===void 0?i:Math.round(o*1e3);return`${s} ${n} ${r} ${a??-1} ${c} ${t}`}function aE(e){let t;return n=>{if(n===void 0){t=void 0,e(void 0);return}let r=iE(n);r!==t&&(t=r,e(n))}}function oE(){let[e,t]=(0,V.useState)(void 0),[n,r]=(0,V.useState)(!1),[i,a]=(0,V.useState)(void 0),[o,s]=(0,V.useState)(void 0),c=(0,V.useRef)(void 0),l=(0,V.useCallback)(e=>{r(!0),a(void 0),t(void 0),c.current?.gate.cancel(),c.current=e},[]),u=(0,V.useCallback)(e=>{c.current===e&&(c.current=void 0,r(!1),s(void 0))},[]),d=(0,V.useCallback)(()=>{c.current?.gate.cancel(),c.current=void 0,t(void 0),a(void 0),s(void 0)},[]),{pauseUpload:f,resumeUpload:p}=rE((0,V.useCallback)(()=>c.current?.gate,[]),s);return{runId:e,starting:n,startError:i,upload:o,actions:(0,V.useMemo)(()=>({setRunId:t,setStartError:a,setUpload:s,begin:l,end:u,reset:d,pauseUpload:f,resumeUpload:p}),[l,u,d,f,p])}}var sE=`aai:run-key:`;function cE(){return dS(sE,`./`)}function lE(e){let t=cE(),n=cS(e,t);if(n!==void 0)return n;let r=crypto.randomUUID();return lS(e,t,r),r}function uE(e){let[t]=(0,V.useState)(()=>e===void 0?lE(`session`):``);return e??t}function dE(e,t,n,r,i){let a=new AbortController,o=()=>{a.signal.aborted||i()};return(async()=>{let r=await e().watch(t,a.signal);if(!(r.ok&&r.body))return`fallback`;for await(let e of xw(r.body,a.signal)){e.event===`run`&&e.data&&n(e.data);let t=fE(e.event);if(t)return t}return`fallback`})().then(e=>e===`settled`?r():o(),()=>o()),()=>a.abort()}function fE(e){return e===`done`||e===`missing`?`settled`:e===`idle`?`fallback`:void 0}var pE=2e3;function mE(e,t,n,r,i,a){let o=0,s=e=>(o+=1,o<3?!1:(e.aborted||i(`No workflow run ${t}`),!0)),c=async n=>{try{let i=await e().get(t);return n.aborted?!0:i?(o=0,r(i),Ll(i)):s(n)}catch(e){return n.aborted||i(be(e)),!1}};return AT(n,async e=>await c(e)?(e.aborted||a(),!0):!1)}function hE(e,t={}){let{api:n,intervalMs:r=pE}=t,[i,a]=(0,V.useState)(void 0),[o,s]=(0,V.useState)(void 0),[c,l]=(0,V.useState)(!1),u=ST(n);return(0,V.useEffect)(()=>{if(a(void 0),s(void 0),l(!1),!e)return;let t=e=>{a(e),s(void 0)},n,i=dE(u,e,t,()=>l(!0),()=>{n=mE(u,e,r,t,s,()=>l(!0))});return()=>{i(),n?.()}},[e,r,u]),{run:i,error:o,polling:e!==void 0&&!c&&!Ll(i)}}function gE(e,t={}){let{api:n,recover:r=!0,wait:i,intervalMs:a,parallel:o}=t,s=uE(t.key),c=oE(),{runId:l,actions:u}=c,d=ST(n),f=hE(l,w({api:n,intervalMs:a})),{wake:p,cancel:m}=zT(l,d),[h,g]=(0,V.useState)(!1),_=RT({workflow:e,key:s,enabled:r,getClient:d,onFound:e=>{u.setRunId(t=>t??e)},onError:u.setStartError}),v=(0,V.useCallback)(async t=>{let n=d(),r=eE(e);g(!0),u.begin(r);try{let a=w({key:s}),c=await nE(n,t,aE(u.setUpload),o,r);u.setRunId(i===void 0?await n.start(e,c,a):(await n.startAndWait(e,c,{...a,wait:i})).runId)}catch(e){r.gate.cancelled||u.setStartError(be(e))}finally{u.end(r)}},[e,s,i,o,d,u]);return{submit:v,submitForm:v,reset:(0,V.useCallback)(()=>{g(!1),u.reset()},[u]),wake:p,cancel:m,pauseUpload:u.pauseUpload,resumeUpload:u.resumeUpload,run:f.run,startedHere:h,pending:_||c.starting||f.polling,upload:c.upload,error:c.startError??f.error}}function _E(){let[e,t]=(0,V.useState)();return(0,V.useEffect)(()=>{let e=!1;return yu().then(n=>{e||t(n)}),()=>{e=!0}},[]),e}function vE({workflow:e}){let{submitForm:t,run:n,pending:r,upload:i,pauseUpload:a,resumeUpload:o,error:s}=gE(e.name);return(0,U.jsxs)(`section`,{className:`flex flex-col gap-4`,children:[e.description===void 0?null:(0,U.jsx)(`p`,{className:`text-sm opacity-70`,children:e.description}),(0,U.jsxs)(cw,{onSubmit:e=>t(e),error:s,className:`flex flex-col gap-4`,children:[(0,U.jsx)(ET,{workflow:e}),(0,U.jsx)(lw,{pending:r,children:`Start`})]}),(0,U.jsx)(dw,{upload:i,onPause:a,onResume:o}),(0,U.jsx)(IT,{runId:n?.runId}),(0,U.jsx)(LT,{run:n}),n?.status===`completed`&&(0,U.jsx)(`pre`,{className:`overflow-x-auto rounded-md border p-4 text-xs`,children:JSON.stringify(n.output,null,2)})]})}function yE({name:e}){let t=_E(),{workflows:n,loading:r,error:i}=CT(),[a,o]=(0,V.useState)(),s=n.find(e=>e.name===a)??n[0];return(0,U.jsxs)(`main`,{className:`mx-auto flex max-w-2xl flex-col gap-6 p-8`,children:[(0,U.jsxs)(`header`,{className:`flex flex-col gap-1`,children:[(0,U.jsx)(`h1`,{className:`text-2xl font-medium`,children:e??t?.name??`Workflows`}),t?.greeting===void 0?null:(0,U.jsx)(`p`,{className:`text-sm opacity-70`,children:t.greeting})]}),i===void 0?null:(0,U.jsx)(`p`,{role:`alert`,className:`text-red-600`,children:i}),r&&(0,U.jsx)(`p`,{className:`text-sm opacity-70`,children:`Loading workflows…`}),!r&&i===void 0&&n.length===0&&(0,U.jsx)(`p`,{className:`text-sm opacity-70`,children:`This agent declares no workflows.`}),n.length>1&&(0,U.jsxs)(`label`,{className:`flex flex-col gap-1 text-sm`,children:[`Workflow`,(0,U.jsx)(`select`,{value:s?.name??``,onChange:e=>o(e.target.value),className:`rounded-md border px-3 py-2`,children:n.map(e=>(0,U.jsx)(`option`,{value:e.name,children:e.name},e.name))})]}),s&&(0,U.jsx)(vE,{workflow:s},s.name)]})}function bE(e={}){let t=FC(e.target);mu(e.name);let n=e.component;return IC(t,(0,V.createElement)(Uu,{value:e.theme},n?(0,V.createElement)(n):(0,V.createElement)(yE,{name:e.name})))}async function xE(e={mountClient:BC,mountPage:bE}){let t=await yu(),n=w({name:t.name});if(t.page===`static`){e.mountPage(n);return}e.mountClient(n)}xE();export{p as a,m as i,d as n,f as r,u as t};
@@ -1,4 +1,4 @@
1
- import{r as e}from"./index-BQURVARl.js";import{t}from"./_module-url-BX0RuRU2.js";var n=`
1
+ import{r as e}from"./index-DdRGAZxZ.js";import{t}from"./_module-url-BX0RuRU2.js";var n=`
2
2
  class PlaybackProcessor extends AudioWorkletProcessor {
3
3
  constructor(options) {
4
4
  super();
@@ -6,7 +6,7 @@
6
6
  <title>aai</title>
7
7
  <link rel="icon" href="./favicon.ico" />
8
8
  <style>html,body{background:#fbf8f2;margin:0}</style>
9
- <script type="module" crossorigin src="./assets/index-BQURVARl.js"></script>
9
+ <script type="module" crossorigin src="./assets/index-DdRGAZxZ.js"></script>
10
10
  <link rel="stylesheet" crossorigin href="./assets/index-8ihb1Urm.css">
11
11
  </head>
12
12
  <body>
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The prebuilt default client's bundle entry (`index.html` loads it): the
3
+ * stylesheet plus one call. The choice of page lives in `default-client.tsx`,
4
+ * where a spec can drive it without importing a side effect.
5
+ */
6
+ import "../styles.css";
@@ -1,23 +1,19 @@
1
- /** @jsxImportSource react */
1
+ /** The two mounts the default client chooses between, injectable for a spec. */
2
+ export type DefaultClientMounts = {
3
+ mountClient: (config: {
4
+ name?: string;
5
+ }) => unknown;
6
+ mountPage: (config: {
7
+ name?: string;
8
+ }) => unknown;
9
+ };
2
10
  /**
3
- * The page every agent gets with NO `client.tsx` of its own — and which page
4
- * follows the agent's declared front door.
11
+ * Look up the agent's front door and mount the matching shell.
5
12
  *
6
- * One bundle serves both, because the CLI serves one directory for every agent
7
- * (`resolveClientDir`'s fallback to `defaultClientDir()`): the choice cannot be
8
- * made at build time, so it is made here, from the `page` field
9
- * `GET client-config` reports precisely so a browser knows before it dials.
10
- *
11
- * It used to call `mountClient({})` unconditionally. For a WORKFLOW APP that
12
- * renders a start screen and then opens a `/websocket` the server declines by
13
- * design — a dead page — which is why "you do not need a `client.tsx`" was only
14
- * ever true of a voice agent. Both mounts have a default shell now, so it is
15
- * true of either.
16
- *
17
- * The name is FORWARDED rather than looked up twice: on the platform this
18
- * endpoint is the broker, so a request able to boot a sandbox should not be
19
- * issued once here and again by the shell. Both shells treat an explicit name as
20
- * final and skip their own lookup. An agent that declared none still costs the
21
- * shell its own request, which is what it cost before.
13
+ * A function rather than the module's own side effect so the CHOICE can be
14
+ * driven with fake mounts; `default-client-entry.tsx` is the bundle entry that
15
+ * calls it. The lookup already degrades to "the agent declared nothing" on
16
+ * every failure path — which resolves to `page: "voice"`, the front door this
17
+ * can always mount.
22
18
  */
23
- import "../styles.css";
19
+ export declare function bootDefaultClient(mounts?: DefaultClientMounts): Promise<void>;
@@ -2,6 +2,7 @@
2
2
  import { type ComponentType, type ReactNode } from "react";
3
3
  import { type ToolDisplayConfig } from "./components/tool-config-context.ts";
4
4
  import type { BrowserSession } from "./session/index.ts";
5
+ import { createBrowserSession } from "./session/index.ts";
5
6
  import type { ClientTheme, VoiceSessionOptions } from "./types.ts";
6
7
  /**
7
8
  * Configuration passed to {@link mountClient}.
@@ -191,3 +192,9 @@ export declare function mountRoot(container: HTMLElement, node: ReactNode, onDis
191
192
  * @public
192
193
  */
193
194
  export declare function mountClient(config: ClientConfig): ClientHandle;
195
+ /**
196
+ * {@link mountClient} with the session factory handed in. Not on the barrel:
197
+ * it is the seam a spec drives with a fake core rather than replacing the
198
+ * session module.
199
+ */
200
+ export declare function mountClientWith(config: ClientConfig, createSession: typeof createBrowserSession): ClientHandle;
@@ -1,7 +1,7 @@
1
1
  import { t as ChatView } from "./chat-view-BCbI7gD4.js";
2
2
  import { n as pageBaseUrl, r as setPageTitle } from "./_utils-Mi-SCFA1.js";
3
3
  import { n as fetchClientConfig } from "./client-config-C7fQrioM.js";
4
- import { t as createBrowserSession } from "./session-CE0Ipsb3.js";
4
+ import { t as createBrowserSession } from "./session-6tIQSoak.js";
5
5
  import { SessionProvider, ThemeProvider } from "./context.js";
6
6
  import { t as ToolConfigContext } from "./tool-config-context-Es4YUzV2.js";
7
7
  import { SidebarLayout } from "./components/sidebar-layout.js";
@@ -196,9 +196,17 @@ function rootFor(config, platformUrl) {
196
196
  * @public
197
197
  */
198
198
  function mountClient(config) {
199
+ return mountClientWith(config, createBrowserSession);
200
+ }
201
+ /**
202
+ * {@link mountClient} with the session factory handed in. Not on the barrel:
203
+ * it is the seam a spec drives with a fake core rather than replacing the
204
+ * session module.
205
+ */
206
+ function mountClientWith(config, createSession) {
199
207
  const container = resolveContainer(config.target);
200
208
  const platformUrl = config.platformUrl ?? pageBaseUrl();
201
- const session = createBrowserSession({
209
+ const session = createSession({
202
210
  platformUrl,
203
211
  onSessionId: config.onSessionId,
204
212
  resumeSessionId: config.resumeSessionId,
@@ -217,4 +225,4 @@ function mountClient(config) {
217
225
  };
218
226
  }
219
227
  //#endregion
220
- export { mountClient, mountRoot, resolveContainer };
228
+ export { mountClient, mountClientWith, mountRoot, resolveContainer };
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { a as AGENT_STATE_LABELS, i as SessionErrorBanner, n as ConsoleShell, r as SessionStateDot, t as ChatView } from "./chat-view-BCbI7gD4.js";
2
2
  import { n as pageBaseUrl, r as setPageTitle, t as isTypingTarget } from "./_utils-Mi-SCFA1.js";
3
3
  import { n as fetchClientConfig, t as buildAgentUrl } from "./client-config-C7fQrioM.js";
4
- import { a as ticketCarriage, c as resolveReported, d as storageSet, f as urlSlot, i as resolveSessionTokenSync, l as storageGet, r as resolveSessionToken, s as browserClientId, t as createBrowserSession, u as storageRemove } from "./session-CE0Ipsb3.js";
4
+ import { a as ticketCarriage, c as resolveReported, d as storageSet, f as urlSlot, i as resolveSessionTokenSync, l as storageGet, r as resolveSessionToken, s as browserClientId, t as createBrowserSession, u as storageRemove } from "./session-6tIQSoak.js";
5
5
  import { ThemeProvider, useOptionalSessionCore, useSession, useSessionActions, useSessionCore, useSessionError, useSessionSelector, useSessionStatus, useTheme } from "./context.js";
6
6
  import { a as useAgentState, i as selectAgentState, n as useToolCallStart, r as useToolResult, t as useEvent } from "./hooks-DN4gHYsj.js";
7
7
  import { a as useConversation, i as interleave, n as Markdown, o as AutoScroll, r as ConversationView, t as MessageList } from "./message-list-DHZcLhRA.js";
@@ -10,6 +10,7 @@
10
10
  * browser.
11
11
  */
12
12
  import type { SessionCommand } from "@alexkroman1/aai/protocol";
13
+ import { openAudioPath } from "./audio-setup.ts";
13
14
  import type { AudioPathEffects } from "./audio-state.ts";
14
15
  import type { MicSender } from "./mic.ts";
15
16
  import type { PreConnectAudio } from "./preconnect.ts";
@@ -26,6 +27,11 @@ export type AudioEffectsDeps = {
26
27
  mic: Pick<MicSender, "sendAudio" | "sendBuffered">;
27
28
  /** The microphone opened at `connect()`, which the next bring-up adopts. */
28
29
  preConnect: PreConnectAudio;
30
+ /**
31
+ * Test seam: how a path is opened. Defaults to {@link openAudioPath}; a spec
32
+ * hands in one whose promise it settles by hand.
33
+ */
34
+ openAudioPath?: typeof openAudioPath | undefined;
29
35
  };
30
36
  /** Build the effects for one session's audio path. */
31
37
  export declare function createAudioEffects(deps: AudioEffectsDeps): AudioPathEffects;
@@ -1,4 +1,5 @@
1
1
  import type { VoiceSessionOptions } from "../types.ts";
2
+ import { type AudioEffectsDeps } from "./audio-effects.ts";
2
3
  import { type BrowserSession } from "./types.ts";
3
4
  /**
4
5
  * Create a framework-agnostic voice session core that connects to an AAI
@@ -28,3 +29,11 @@ import { type BrowserSession } from "./types.ts";
28
29
  * @public
29
30
  */
30
31
  export declare function createBrowserSession(options: VoiceSessionOptions): BrowserSession;
32
+ /**
33
+ * {@link createBrowserSession} with its audio bring-up injectable. Not on the
34
+ * barrel: it is the seam a spec uses to hold an audio path open by hand rather
35
+ * than replacing the audio module.
36
+ *
37
+ * @internal
38
+ */
39
+ export declare function createBrowserSessionWith(options: VoiceSessionOptions, internals: Pick<AudioEffectsDeps, "openAudioPath">): BrowserSession;
@@ -1,2 +1,2 @@
1
- import { a as ticketCarriage, i as resolveSessionTokenSync, n as CLEARED_SESSION_STATE, o as loadAudioModules, r as resolveSessionToken, t as createBrowserSession } from "../session-CE0Ipsb3.js";
1
+ import { a as ticketCarriage, i as resolveSessionTokenSync, n as CLEARED_SESSION_STATE, o as loadAudioModules, r as resolveSessionToken, t as createBrowserSession } from "../session-6tIQSoak.js";
2
2
  export { CLEARED_SESSION_STATE, createBrowserSession, loadAudioModules, resolveSessionToken, resolveSessionTokenSync, ticketCarriage };
@@ -297,7 +297,7 @@ function createAudioEffects(deps) {
297
297
  });
298
298
  }
299
299
  return {
300
- open: (config, callbacks) => openAudioPath(config, callbacks, preConnect.take()),
300
+ open: (config, callbacks) => (deps.openAudioPath ?? openAudioPath)(config, callbacks, preConnect.take()),
301
301
  sendMicAudio: (pcm16) => {
302
302
  try {
303
303
  mic.sendAudio(pcm16);
@@ -1480,11 +1480,14 @@ const PRE_CONNECT_SAMPLE_RATE = 16e3;
1480
1480
  /** Build one session's pre-connect capture holder. @internal */
1481
1481
  function createPreConnectAudio(enabled) {
1482
1482
  let held = null;
1483
+ let attempt = null;
1483
1484
  return {
1484
1485
  begin() {
1485
1486
  loadAudioModules().catch(() => {});
1486
1487
  if (!enabled || held !== null) return;
1487
- held = Promise.all([import("./audio/index.js"), loadAudioModules()]).then(([{ openPreConnectCapture }, [, captureWorklet]]) => openPreConnectCapture({
1488
+ const current = { released: false };
1489
+ attempt = current;
1490
+ held = Promise.all([import("./audio/index.js"), loadAudioModules()]).then(([{ openPreConnectCapture }, [, captureWorklet]]) => current.released ? null : openPreConnectCapture({
1488
1491
  sampleRate: PRE_CONNECT_SAMPLE_RATE,
1489
1492
  captureWorkletSrc: captureWorklet,
1490
1493
  maxSeconds: 10
@@ -1493,11 +1496,14 @@ function createPreConnectAudio(enabled) {
1493
1496
  take() {
1494
1497
  const taken = held;
1495
1498
  held = null;
1499
+ attempt = null;
1496
1500
  return taken;
1497
1501
  },
1498
1502
  release() {
1499
1503
  const taken = held;
1500
1504
  held = null;
1505
+ if (attempt) attempt.released = true;
1506
+ attempt = null;
1501
1507
  taken?.then((capture) => capture?.close());
1502
1508
  }
1503
1509
  };
@@ -1822,6 +1828,16 @@ function createUserTurnActions(deps) {
1822
1828
  * @public
1823
1829
  */
1824
1830
  function createBrowserSession(options) {
1831
+ return createBrowserSessionWith(options, {});
1832
+ }
1833
+ /**
1834
+ * {@link createBrowserSession} with its audio bring-up injectable. Not on the
1835
+ * barrel: it is the seam a spec uses to hold an audio path open by hand rather
1836
+ * than replacing the audio module.
1837
+ *
1838
+ * @internal
1839
+ */
1840
+ function createBrowserSessionWith(options, internals) {
1825
1841
  let currentSnapshot = {
1826
1842
  ...CLEARED_SESSION_STATE,
1827
1843
  state: "disconnected",
@@ -1917,7 +1933,8 @@ function createBrowserSession(options) {
1917
1933
  agentState,
1918
1934
  sendJson,
1919
1935
  mic,
1920
- preConnect
1936
+ preConnect,
1937
+ openAudioPath: internals.openAudioPath
1921
1938
  }));
1922
1939
  const { handleMessage } = createMessageHandlers({
1923
1940
  getSnapshot,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alexkroman1/aai-ui",
3
- "version": "0.13.0",
3
+ "version": "0.14.1",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -46,12 +46,14 @@
46
46
  "use-stick-to-bottom": "^1.1.6",
47
47
  "use-sync-external-store": "^1.7.0",
48
48
  "xstate": "^5.33.2",
49
- "@alexkroman1/aai": "0.13.0"
49
+ "@alexkroman1/aai": "0.14.1"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@tailwindcss/vite": "^4.3.3",
53
53
  "@testing-library/dom": "^10.4.2",
54
+ "@testing-library/jest-dom": "^7.0.1",
54
55
  "@testing-library/react": "^16.3.3",
56
+ "@testing-library/user-event": "^14.6.7",
55
57
  "@types/react": "^19.3.0",
56
58
  "@types/react-dom": "^19.3.0",
57
59
  "@types/use-sync-external-store": "^1.7.0",
File without changes