@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 +55 -59
- package/dist/_workflow-test-defs.d.ts +0 -4
- package/dist/default-client/assets/{audio-cGFGID-2.js → audio-CABEDpag.js} +1 -1
- package/dist/default-client/assets/{capture-processor-BUABoo3_.js → capture-processor-X_vJUkv4.js} +1 -1
- package/dist/default-client/assets/{index-BQURVARl.js → index-DdRGAZxZ.js} +10 -10
- package/dist/default-client/assets/{playback-processor-ABOa11j0.js → playback-processor-DdO-2G6m.js} +1 -1
- package/dist/default-client/index.html +1 -1
- package/dist/default-client-entry.d.ts +6 -0
- package/dist/default-client.d.ts +16 -20
- package/dist/define-client.d.ts +7 -0
- package/dist/define-client.js +11 -3
- package/dist/index.js +1 -1
- package/dist/session/audio-effects.d.ts +6 -0
- package/dist/session/browser-session.d.ts +9 -0
- package/dist/session/index.js +1 -1
- package/dist/{session-CE0Ipsb3.js → session-6tIQSoak.js} +20 -3
- package/package.json +4 -2
- package/dist/_jsdom-setup.d.ts +0 -0
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
|
-
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
|
26
|
-
mode: "workflow-app" })`) calls `mountPage()` and talks to the workflow
|
|
27
|
-
— no session, no socket, no microphone. Both are still `client.tsx`,
|
|
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
|
-
|
|
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
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
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
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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
|
-
|
|
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
|
-
|
|
188
|
-
|
|
189
|
-
|
|
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()`
|
|
209
|
-
the same session as a plain store with an immutable snapshot per change, for
|
|
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
|
-
|
|
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
|
-
|
|
223
|
-
|
|
224
|
-
|
|
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
|
-
|
|
232
|
-
|
|
233
|
-
**Workflows** — `createWorkflowApi()` is the client;
|
|
234
|
-
`
|
|
235
|
-
`
|
|
236
|
-
`
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
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
|
-
|
|
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-
|
|
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};
|
package/dist/default-client/assets/{capture-processor-BUABoo3_.js → capture-processor-X_vJUkv4.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e,t}from"./index-
|
|
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-
|
|
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&>(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<
|
|
119
|
-
`),r=t===-1?n:n===-1||t<n?t:n;return r===-1?``:r===e.length-1&&e.charCodeAt(r)===
|
|
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(
|
|
122
|
-
`,t);continue}d=f===0?o:`${d}\n${o}`,f++}else
|
|
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
|
|
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};
|
package/dist/default-client/assets/{playback-processor-ABOa11j0.js → playback-processor-DdO-2G6m.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as e}from"./index-
|
|
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-
|
|
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>
|
package/dist/default-client.d.ts
CHANGED
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
/**
|
|
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
|
-
*
|
|
4
|
-
* follows the agent's declared front door.
|
|
11
|
+
* Look up the agent's front door and mount the matching shell.
|
|
5
12
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
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
|
-
|
|
19
|
+
export declare function bootDefaultClient(mounts?: DefaultClientMounts): Promise<void>;
|
package/dist/define-client.d.ts
CHANGED
|
@@ -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;
|
package/dist/define-client.js
CHANGED
|
@@ -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-
|
|
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 =
|
|
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-
|
|
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;
|
package/dist/session/index.js
CHANGED
|
@@ -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-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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",
|
package/dist/_jsdom-setup.d.ts
DELETED
|
File without changes
|