@theoremjs/studio 0.3.4-next.401.gec4c582 → 0.3.4-next.405.g57fd3a0
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/browser-engine.d.ts +1 -1
- package/browser-engine.js +1 -1
- package/browser-transport.d.ts +12 -0
- package/browser-transport.js +26 -7
- package/browser.d.ts +1 -1
- package/browser.js +1 -1
- package/mod.d.ts +2 -1
- package/mod.js +2 -1
- package/package.json +4 -4
- package/page/assets/{Banner-BXAD_Vfi.js → Banner-QusdlIyi.js} +2 -2
- package/page/assets/{ContextMenu-BHyTgQRM.js → ContextMenu-fveoNjBr.js} +2 -2
- package/page/assets/{ToolResultCharts-bFoajfnu.js → ToolResultCharts-BjcUZQFb.js} +1 -1
- package/page/assets/{TraceInspector-DAY3Ke6H.js → TraceInspector-CLOnBoTm.js} +1 -1
- package/page/assets/{TraceOverview-CRWvJDZj.js → TraceOverview-DZvDDMnn.js} +2 -2
- package/page/assets/{_virtual_studio-type-sources-BCXnWGOW.js → _virtual_studio-type-sources-BJMljtdu.js} +2 -0
- package/page/assets/browser-engine-Bs0KjxWa.js +11 -0
- package/page/assets/browser-transport-CX0KfTc_.js +47 -0
- package/page/assets/{encode-files-Bc3HJyAh.js → encode-files-DZ4tVtEQ.js} +1 -1
- package/page/assets/{export-agent-Ywtc2-0C.js → export-agent-DpYJK1Fw.js} +3 -3
- package/page/assets/{guardrail-tester-Dy-ahvCI.js → guardrail-tester-D6fnIprh.js} +2 -2
- package/page/assets/{index-CBA4_EUF.js → index-9DTfp56-.js} +71 -71
- package/page/assets/{live-messages-BYi31jQk.js → live-messages-BZGmMo_v.js} +1 -1
- package/page/assets/reader-paEmSrWc.js +7 -0
- package/page/assets/{shaped-data-BcarWqd5.js → shaped-data-0GUF7Al3.js} +1 -1
- package/page/assets/{stub-DEZDrr-l.js → stub-DpBSP8Ld.js} +1 -1
- package/page/assets/{studio-code-pane-CICFFR42.js → studio-code-pane-CvMvK1dS.js} +3 -3
- package/page/assets/{studio-console-U7aNSe1H.js → studio-console-eGboNvee.js} +3 -3
- package/page/assets/studio-decision-qRaiEHpZ.js +1 -0
- package/page/assets/{studio-embedding-aQnxMD3i.js → studio-embedding-jg1jkUOk.js} +1 -1
- package/page/assets/studio-host-console-D9G0Xsi9.js +2 -0
- package/page/assets/{studio-live-BWYH4C-n.js → studio-live-DqRAjP8W.js} +2 -2
- package/page/assets/{studio-map-3GO33qQG.js → studio-map-BvY_0EHQ.js} +1 -1
- package/page/assets/studio-trace-replay-CUV0arIO.js +2 -0
- package/page/assets/{studio-type-checker-CV8Jl9--.js → studio-type-checker-Cm6RZxV3.js} +1 -1
- package/page/assets/{tool-schema-BrqSc6vO.js → tool-schema-CgpwKFX7.js} +7 -7
- package/page/assets/{trace-record-C3zNksA_.js → trace-record-BjsBbPRl.js} +1 -1
- package/page/assets/tree-BxX70aqA.js +3 -0
- package/page/assets/turn-client-BZUECwPn.js +2 -0
- package/page/assets/types-BoECJ8mE.js +1 -0
- package/page/assets/{use-one-call-DFaDtl-b.js → use-one-call-DDzd4qr2.js} +1 -1
- package/page/assets/{workspace-Ck0o-_fd.js → workspace-Bc---F49.js} +1 -1
- package/page/index.html +13 -13
- package/replay.d.ts +97 -0
- package/replay.js +387 -0
- package/server/draft-handler.js +2 -1
- package/transport.d.ts +5 -1
- package/transport.js +7 -2
- package/ui/inspector-context.d.ts +1 -1
- package/ui/lib/send-when-ready.d.ts +7 -0
- package/ui/lib/send-when-ready.js +14 -0
- package/ui/studio-connection.d.ts +1 -1
- package/ui/studio-runner.d.ts +4 -1
- package/ui/studio-runner.js +3 -2
- package/ui/studio-screen.js +110 -11
- package/ui/studio-trace-replay.d.ts +23 -0
- package/ui/studio-trace-replay.js +216 -0
- package/page/assets/browser-engine-DVCpc0ZM.js +0 -11
- package/page/assets/browser-transport-0PBe1ivB.js +0 -47
- package/page/assets/reader-B0gVhfoZ.js +0 -7
- package/page/assets/studio-decision-CgIpnrcU.js +0 -1
- package/page/assets/studio-host-console-Ccm2Blar.js +0 -2
- package/page/assets/tree-DeO1319a.js +0 -3
- package/page/assets/turn-client-DwVPS3TX.js +0 -2
- package/page/assets/types-EVrOoUBG.js +0 -1
|
@@ -6228,6 +6228,8 @@ export declare const CONTINUE_INSTRUCTION_TYPES: readonly ProfileType[];
|
|
|
6228
6228
|
export declare const DEFAULT_ALLOW_CONTINUE: readonly ContinueStopKind[];
|
|
6229
6229
|
/** Hosts wait briefly, then continue once on their own. */
|
|
6230
6230
|
export declare const DEFAULT_AUTO_CONTINUE: readonly ContinueStopKind[];
|
|
6231
|
+
/** Whether Theorem's own guardrail ended the turn, so its error or refusal already says why. */
|
|
6232
|
+
export declare function isGuardrailStop(stop: TurnStop): boolean;
|
|
6231
6233
|
/** Pause before an auto-continue, the host's or the turn's own, so a flaky tunnel can settle. */
|
|
6232
6234
|
export declare const AUTO_CONTINUE_DELAY_MS = 1500;
|
|
6233
6235
|
/** Which stops a profile offers Continue for, and which the host continues on its own. */
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/compile-egress-BSxOdX4K.js","assets/rolldown-runtime-hePW80VL.js","assets/host-patterns-C9RMP16Q.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-DpV6A1kQ.js";import{C as t,E as n,T as r,d as i,dt as a,g as o,l as s,m as c,o as l,p as u,v as d,w as f,x as p,y as m}from"./schemas-BQ9Jydzb.js";import{$ as h,$t as g,A as _,An as v,At as y,Bn as b,Br as x,C as S,Cn as C,Cr as w,Ct as T,Dn as E,Dt as D,En as O,Er as k,Et as A,Fr as j,Ft as ee,Gt as te,In as M,Ir as ne,It as N,Jt as re,L as ie,Ln as ae,Lr as oe,Lt as P,Mn as se,Mr as ce,Mt as le,Nn as ue,Nr as de,Nt as fe,On as pe,Or as me,Ot as he,Pr as ge,Pt as _e,Q as ve,Rn as ye,Rr as be,Rt as xe,Sn as Se,St as Ce,Tn as we,Tt as Te,Ut as Ee,Vr as De,Wn as Oe,Xt as ke,Yt as Ae,_n as je,_t as Me,an as Ne,at as Pe,bn as Fe,br as Ie,bt as Le,ct as Re,dn as ze,dt as Be,et as Ve,fn as He,ft as Ue,gn as We,gt as F,hn as Ge,ht as Ke,in as qe,it as Je,jn as Ye,jr as Xe,jt as Ze,kr as Qe,kt as $e,lr as et,lt as tt,mn as I,mt as nt,nn as rt,nt as L,on as it,or as at,ot,p as st,pt as R,qt as ct,rn as lt,rt as ut,sn as dt,sr as ft,st as pt,tn as mt,tt as ht,ut as gt,v as _t,vn as vt,vr as yt,wn as bt,wr as z,wt as xt,xn as St,xr as Ct,xt as wt,yn as Tt,yt as Et,zn as Dt,zr as B}from"./tool-schema-CgpwKFX7.js";import{c as V,t as Ot}from"./host-patterns-C9RMP16Q.js";import{$ as kt,A as At,At as jt,B as Mt,Ct as Nt,D as H,Dn as Pt,E as Ft,Et as It,Ft as Lt,It as Rt,J as zt,K as Bt,L as Vt,M as Ht,Mn as U,Mt as Ut,Nt as Wt,O as W,Ot as Gt,Pt as Kt,St as qt,Tt as Jt,U as Yt,Y as Xt,Z as Zt,_n as Qt,_t as $t,an as en,at as tn,bn as nn,bt as rn,ct as an,dt as on,et as sn,fn as cn,gt as ln,hn as un,ht as dn,j as fn,jt as pn,k as mn,kt as hn,ln as gn,lt as _n,mn as vn,mt as yn,ot as bn,pn as xn,pt as Sn,q as Cn,st as wn,vn as Tn,vt as En,w as Dn,xt as On,yt as kn,z as An}from"./shaped-data-0GUF7Al3.js";import{$ as jn,At as Mn,B as Nn,Bt as Pn,Ct as Fn,Dt as In,Et as Ln,G as Rn,Gt as zn,Ht as Bn,J as Vn,Jt as G,K as Hn,Kt as Un,Lt as Wn,M as Gn,Mt as Kn,N as qn,Nt as Jn,Ot as Yn,Pt as Xn,Q as Zn,Rt as Qn,St as $n,Tt as er,U as tr,Ut as nr,Vt as rr,Wt as ir,X as ar,Y as or,Yt as sr,Z as cr,_t as lr,a as ur,at as dr,bt as fr,ct as pr,dt as mr,ft as hr,gt as gr,ht as _r,i as vr,it as yr,jt as br,k as xr,kt as Sr,l as Cr,lt as wr,m as Tr,mt as Er,n as Dr,o as Or,ot as kr,pt as Ar,qt as jr,r as Mr,rt as Nr,st as Pr,tt as Fr,ut as Ir,vt as Lr,wt as Rr,xt as zr,yt as Br,zt as Vr}from"./reader-paEmSrWc.js";import{a as Hr,t as Ur}from"./live-ingress-lDUGPwth.js";import{t as Wr}from"./trace-record-BjsBbPRl.js";import{D as Gr,E as Kr,T as qr,b as Jr,c as Yr,g as Xr,i as Zr,l as Qr,u as $r,v as ei,w as ti}from"./turn-client-BZUECwPn.js";import{n as ni,t as ri}from"./live-messages-BZGmMo_v.js";import{n as ii,r as ai}from"./lent-keys-C32ems-I.js";import{_t as oi,ct as si,dt as ci,ft as li,gt as ui,it as di,lt as fi,st as pi,ut as mi,vt as hi,yt as gi}from"./index-9DTfp56-.js";function _i(){return{given:new Set,remote:new Map}}var vi=/[\p{L}\p{N}_.+-]/u,yi=/[\p{L}\p{N}_-]/u,bi=/(?:https?:\/\/|www\.)[^\s'"<>)\]]+/gi,xi=/\b[A-Z]{2}\d{2}[A-Z0-9]{10,30}\b/g,Si=/[/?#]/;function Ci(e,t){let n=t;for(;n<e.length;){let t=String.fromCodePoint(e.codePointAt(n)??0);if(!yi.test(t))break;n+=t.length}return n}function wi(e,t){let n=Ci(e,t);if(n===t)return-1;let r=1;for(;e.charAt(n)===`.`;){let t=Ci(e,n+1);if(t===n+1)break;n=t,r+=1}return r>1?n:-1}function Ti(e){let t=e.length;for(;t>0&&(e.charAt(t-1)===`.`||e.charAt(t-1)===`,`);)--t;return e.slice(0,t)}function Ei(e){let t=[],n=e.indexOf(`@`);for(;n>=0;){let r=n;for(;r>0&&vi.test(e.charAt(r-1));)--r;let i=r<n?wi(e,n+1):-1;i>=0?(t.push({key:`email:${e.slice(r,i).toLowerCase()}`,start:r,end:i}),n=e.indexOf(`@`,i)):n=e.indexOf(`@`,n+1)}return t}function Di(e){let t=e.replace(/^https?:\/\//i,``),n=t.search(Si),r=n<0?t:t.slice(0,n);return Ti(r.slice(r.lastIndexOf(`@`)+1).replace(/:\d*$/,``).toLowerCase()).replace(/^www\./,``)}function Oi(e){let t=Ei(e),n=e;for(let{start:e,end:r}of t)n=n.slice(0,e)+` `.repeat(r-e)+n.slice(r);let r=[...t];for(let e of[...n.matchAll(bi)]){let t=Di(e[0]);t&&r.push({key:`host:${t}`,start:e.index,end:e.index+e[0].length})}for(let e of[...n.matchAll(xi)])r.push({key:`account:${e[0].toLowerCase()}`,start:e.index,end:e.index+e[0].length});return r}function ki(e){let t=e.trimStart().charAt(0);if(t===`{`||t===`[`)try{return JSON.parse(e)}catch{return}}var Ai=32;function ji(e,t,n=0){if(!(n>Ai)){if(typeof e==`string`){let r=ki(e);r===void 0?t(e):ji(r,t,n+1)}else if(Array.isArray(e))for(let r of e)ji(r,t,n+1);else if(e&&typeof e==`object`)for(let r of Object.values(e))ji(r,t,n+1)}}function Mi(e,t=!1){let n=new Set;return ji(e,e=>{let r=e.trim(),i=Oi(r),[a]=i,o=i.length===1&&a?.start===0&&a.end===r.length;if(!(t&&o))for(let{key:e}of i)n.add(e)}),n}function Ni(e,t){for(let n of Mi(t))e.given.add(n)}function Pi(e,t,n){for(let r of t)r.role===`assistant`||r.role===`tool`||n.has(r)||Ni(e,Wt(r).text)}function Fi(e,t,n){Ni(e,t.system),n.has(t.input)||Ni(e,Wt(t.input).text),Pi(e,t.history??[],n)}function Ii(e,t,n){if(!Fe(n.origin)){Ni(e,[t.finding,t.data]);return}let r=ki(t.finding),i=new Set([...r===void 0?Mi(t.finding):Mi(r,!0),...Mi(t.data,!0)]);for(let t of i)e.remote.has(t)||e.remote.set(t,n.tool)}function Li(e,t,n,r){if(!e||e.remote.size===0)return{verdict:{action:`allow`}};let i=[...Mi(t)].filter(t=>e.remote.has(t)&&!e.given.has(t));if(i.length===0)return{verdict:{action:`allow`}};let a=i.map(e=>e.slice(e.indexOf(`:`)+1)),o=a.map(e=>({rule:nn.remoteDestination,severity:`high`,match:e})),s={destination:a.join(`, `),sources:[...new Set(i.map(t=>e.remote.get(t)??``))].join(`, `)},c=n.taint?.remoteDestination??`off`;return c===`block`?{verdict:{action:`block`,hits:o,rejection:U(`taint.destination_blocked`,s,r)}}:{verdict:{action:`flag`,hits:o},...c===`confirm`?{confirm:U(`taint.destination_confirm`,s,r)}:{}}}var Ri={image:`thought.omitted_image`,link:`thought.omitted_link`,instructions:`thought.omitted_instructions`},zi={rule:Qt.ungiven_images,severity:`high`},Bi={rule:Qt.ungiven_links,severity:`high`},Vi={rule:Qt.marker_leak,severity:`high`};function Hi(e,t,n=!1){let r=e.pieces[0];for(let i of e.pieces){if(i.raw>t||n&&i.raw===t&&t>0)break;r=i}return r?r.mark?n?r.mark.end:r.mark.start:r.shown+t-r.raw:t}function Ui(e){let t=[];for(let n of[...e].sort((e,t)=>e.start-t.start)){let e=t.at(-1);e&&n.start<e.end?e.end=Math.max(e.end,n.end):t.push({...n})}return t}var Wi=8,Gi=16;function Ki(e){let{omit:t={},canary:n,privateSystem:r,ends:i,given:a,labels:o}=e,s=[...t.markers?[`marker_leak`]:[],...t.images?[`ungiven_images`]:[],...t.links?[`ungiven_links`]:[]],c=t.imagesRead??t.images!==void 0,l=n??e.planted,u=Cn({canary:l,labels:o}),d=e=>({...e,...a?{given:a}:{}});function f(e,t){let n=U(Ri[e],{},o);return/\s$/.test(t)?n.trimStart():n}let p=n||r?e.carry??``:``,m=``,h,g,_=0,v=0,y,b=[],x=0,S=!1,C=0,w=new Map;function T(e){return h=s.length>0?zn({detect:s,allow:{ungiven_images:t.images??{},ungiven_links:t.links??{}},skipImages:c,...a?{given:a}:{},...u?{note:u}:{}}):void 0,g=n?qt(n):void 0,_=0,v=0,E(e)}function E(e){v+=e.length;let t=(h?.push(e).length??0)>0,n=g?.push(e)??!1,i=!1;if(r){let e=(p+m).slice(0,v),t=Rt(e,_);i=Lt(e.slice(t),r,l).length>0,_=e.length}return t||n||i}function D(e){let i=[];if(t.images)for(let n of _n(e,d(t.images)))i.push({...n,kind:`image`,hit:zi});if(t.links)for(let n of on(e,d(t.links),c))i.push({...n,kind:`link`,hit:Bi});if(t.markers){let t=[new RegExp(kt.source,`gi`),...u?[sn(u)]:[]];for(let n of t.flatMap(t=>[...e.matchAll(t)])){let e=n.index;i.push({start:e,end:e+n[0].length,kind:`instructions`,hit:Vi})}}if(n)for(let[t,r]of En(e,n))i.push({start:t,end:r,kind:`instructions`,hit:vn});if(r)for(let[t,n]of Lt(e,r,l))i.push({start:t,end:n,kind:`instructions`,hit:un});return i}function O(e){return b.find(t=>t.start<e&&e<t.end)}function k(e,t){let n=p+m,r=``,i=e;for(let a of b)a.end<=e||a.start>=t||(r+=n.slice(i,a.start)+a.raw,i=a.end);return r+n.slice(i,t)}function A(){let e=p+m;for(let t=Sn;;t*=2){let n=p.length,i=0;for(let e=b.length-1;n>0&&i<t;){let r=b[e];if(r&&r.end>n)e--;else if(r&&r.end===n)i+=r.raw.length,n=r.start,e--;else{let e=Math.max(r?.end??0,n-(t-i));i+=n-e,n=e}}if(b=b.filter(e=>e.end>n),b.length===0)return;let a={text:``,held:0,pieces:[]},o=n;for(let t of[...b,void 0]){let n=t?t.start:e.length;if(n>o&&a.pieces.push({raw:a.text.length,shown:o}),o<=p.length&&p.length<=n&&(a.held=a.text.length+p.length-o),a.text+=e.slice(o,n),!t)break;a.pieces.push({raw:a.text.length,shown:t.start,mark:t}),a.text+=t.raw,o=t.end}if(!r||n===0||Rt(a.text,a.held)>0)return a}}function j(){let e=A();if(!e)return[];let t=[];if(n)for(let[r,i]of En(e.text,n))t.push([r,i,vn]);if(r)for(let[n,i]of Lt(e.text,r,l))t.push([n,i,un]);let i=[];for(let[n,r,a]of t){if(r<=e.held)continue;let t=Hi(e,n),o=Hi(e,r,!0),s=!1;for(let e=Math.max(t,p.length);e<o&&!s;e++)s=!b.some(t=>t.start<=e&&e<t.end);s&&i.push({start:t,end:o,kind:`instructions`,hit:a})}return i}function ee(){return Ui([...D(p+m),...j()])}function te(){return ee().filter(({end:e})=>e>p.length)}function M(e,t=!1){let n=O(e);return n?t?n.end:n.start:e}function ne(e){let t=te(),n=p+m,r=t.at(-1),a=!e&&r!==void 0&&r.end>=n.length?r:void 0,o=a?t.slice(0,-1):t,s=b.filter(e=>e.end<=p.length),c=``,l=p.length,u=e=>{let t=p.length+c.length-l;for(let n of b)n.start>=l&&n.end<=e&&s.push({...n,start:n.start+t,end:n.end+t});c+=n.slice(l,Math.max(l,e)),l=Math.max(l,e)};for(let{start:e,end:t,kind:r,hit:a}of o){u(M(e)),S=i?.has(a.rule)??!1;let o=S?n.length:Math.max(l,M(t,!0)),d=f(r,p+c),m=p.length+c.length;if(s.push({start:m,end:m+d.length,raw:k(l,o)}),c+=d,w.set(a.rule,a),l=o,S)break}return y=void 0,a&&!S&&(u(M(a.start)),y=p.length+c.length),u(n.length),b=s,m=c,x=0,o.length>0}function N(){let e=ee()[0],t=e?Math.max(0,M(e.start)-p.length):0,n=m.slice(0,t),r=f(e?.kind??`instructions`,p+n),i=p.length+t,a=k(i,p.length+m.length);b=b.filter(e=>e.end<=i),b.push({start:i,end:i+r.length,raw:a}),m=n+r,x=0,e&&w.set(e.hit.rule,e.hit),y=void 0,S=!0}function re(){let e=p+m;return y===void 0?e:e.slice(0,y)}function ie(){for(let e=0;e<Wi&&!(C>=Gi);e++){let e=new Set(b.map(e=>e.start));if(!ne(!1)){if(y===void 0)break;return}if(S||(b.some(t=>!e.has(t.start))&&C++,!T(re())))return}N()}function ae(){let e=p.length+m.length,t=h?h.holdFrom():e,i=n?oe(n):e,a=r?p.length+Kt(m,r,l):e,o=Math.min(t,i,a,se()??e,y??e);return M(o<p.length?o:p.length+jt(m,o-p.length))}function oe(e){let t=Math.max(p.length,x),n=Math.max(0,t-yn),r=n+rn(P(n),e);if(r<t&&t>p.length){let t=Math.max(0,p.length-yn);r=t+rn(P(t),e)}return x=Math.min(r,p.length+m.length-yn),Math.max(p.length,r)}function P(e){return e<p.length?p.slice(e)+m:m.slice(e-p.length)}function se(){let e=A();if(!e)return;let t=e.text.slice(e.held),i=n?$t(t,n,e.text.slice(0,e.held)):t.length,a=r?Kt(t,r,l):t.length;return Hi(e,e.held+Math.min(i,a))}function ce(e){let t={text:e,hits:[...w.values()]};return w=new Map,t}return T(p),{push(e){if(S||!e||(m+=e,(y!==void 0||E(e)||j().length>0)&&ie(),S))return ce(``);let t=Math.max(0,ae()-p.length),n=m.slice(0,t);return p+=n,m=m.slice(t),ce(n)},flush(){if(!S){for(let e=0;e<Wi&&!S&&ne(!0);e++);!S&&m&&(D(p+m).length>0||j().length>0)&&N()}let e=m,t=p+m;p=n||r?It(t,n,r):``;let i=p.length-t.length;return b=b.filter(e=>e.start+i>=0).map(e=>({...e,start:e.start+i,end:e.end+i})),m=``,x=0,y=void 0,S=!1,C=0,T(p),ce(e)},carryOut:()=>p}}function qi(...e){let t=e.filter(e=>e!==void 0);return t.length===0?{}:{found:{action:t.reduce((e,t)=>Yt(e,t.action),`allow`),hits:[...new Map(t.flatMap(({hits:e})=>e).map(e=>[e.rule,e])).values()]}}}function Ji(e,t,n,r){let i=()=>ir(`thought`,t,n,r),a=i();if(!a)return e;let o=0,s=0,c=!1;function l(e){if(c||!a)return{text:``};let t=e?o:Math.max(s,a.holdFrom()),{action:n,text:r=``,hits:i,taken:l}=a.take(s,t,e);return c=n===`block`,s+=l,{text:r,...n===`allow`?{}:{found:{action:n,hits:i}}}}return{push(t){o+=t.length,a?.push(t);let{text:n,found:r}=l(!1),i=e?e.push(n):{text:n,hits:[]};return{text:i.text,hits:i.hits,...qi(r,i.found)}},flush(){let{text:t,found:n}=l(!0),r=e?.push(t),u=e?e.flush():{text:t,hits:[]};return a=i(),o=0,s=0,c=!1,{text:(r?.text??``)+u.text,hits:[...new Map([...r?.hits??[],...u.hits].map(e=>[e.rule,e])).values()],...qi(n,r?.found,u.found)}},carryOut:()=>e?.carryOut()??``}}var Yi={canary_leak:vn,prompt_leak:un,marker_leak:Vi,ungiven_images:zi,ungiven_links:Bi},Xi=[`marker_leak`,`ungiven_images`,`ungiven_links`];function Zi(e,t){let{canary:n,privateSystem:r}=e,i=n?qt(n):void 0,a=``,o=new Set;return{read(e){let n=Rt(a+e,a.length);a+=e;let s=[];i?.push(e)&&s.push(vn),r&&Lt(a.slice(n),r,t).length>0&&s.push(un);let c=s.filter(e=>!o.has(e.rule));for(let e of c)o.add(e.rule);return c},reset(){i=n?qt(n):void 0,a=``,o=new Set}}}function Qi(e,t,n,r){let i=Zi(n,r),a=new Map(Object.entries(Yi).map(([e,n])=>[n.rule,t[e].thought]));function o(e,t){let n=[...t,...e.hits.filter(e=>a.has(e.rule))];if(n.length===0)return e;let r=n.reduce((e,t)=>Yt(e,a.get(t.rule)??`ignore`),e.found?.action??`allow`);return{text:e.text,hits:e.hits.filter(e=>!a.has(e.rule)),found:{action:r,hits:[...e.found?.hits??[],...n]}}}return{push:t=>o(e.push(t),i.read(t)),flush(){return i.reset(),o(e.flush(),[])},carryOut:()=>e.carryOut()}}async function $i(e,t,n){let{detect:r}=e,i=Xi.filter(e=>ea(r,e)),a=na(r,t,ea),o=na(r,t,(e,t)=>e[t].thought===`flag`),s=i.length>0||ra(a)||ra(o),c=Mt(e,t);(s||Ht([`thought`],r,c))&&await Un();let l=s?Ki({omit:ta(e),...a,...ia(r),...aa(t),...n?{carry:n}:{}}):void 0;return Ji(l&&Qi(l,r,o,t.canary),r,c,i)}function ea(e,t){return e[t].thought===`redact`||e[t].thought===`block`}function ta({detect:e,allow:t}){return{...ea(e,`marker_leak`)?{markers:!0}:{},...ea(e,`ungiven_images`)?{images:t.ungiven_images}:{},...ea(e,`ungiven_links`)?{links:t.ungiven_links}:{},imagesRead:e.ungiven_images.thought!==`ignore`}}function na(e,t,n){let r=n(e,`canary_leak`)&&!t.canaryGiven&&t.canary,i=n(e,`prompt_leak`)&&t.privateSystem;return{...r?{canary:r}:{},...i?{privateSystem:i}:{}}}function ra(e){return e.canary!==void 0||e.privateSystem!==void 0}function ia(e){let t=new Set(Object.entries(Yi).filter(([t])=>e[t].thought===`block`).map(([,e])=>e.rule));return t.size>0?{ends:t}:{}}function aa({canary:e,givenUrls:t,labels:n}){return{...e?{planted:e}:{},...t?{given:t}:{},...n?{labels:n}:{}}}var oa={rule:`live.untranscribed-audio`,severity:`high`};async function sa(e,t,n,r,i){let a=I(e.guardrails),o={stage:`live_outbound`,trust:`untrusted`,profileId:e.id,...Vt(a.detect,{canary:t,privateSystem:n}),...e.labels?{labels:e.labels}:{},...r?{givenUrls:r}:{},...i?{ownTools:i}:{}},s=await $i(a,o);return{policy:a,context:o,gate:await rr(a,o,`live_reply`),held:[],releasedTo:0,withholdVisible:!1,...s?{thoughts:s}:{}}}function ca(e){let t=e.gate?.carryOut();e.gate=Bn(e.policy,e.context,`live_reply`,t),e.held=[],e.releasedTo=0,e.withholdVisible=!1,e.promptLeaks=void 0}function la(e,t,n=[]){let r=jr(`live_outbound`,`untrusted`,t,`block`);return{action:`withhold`,error:new V(`safety`,e),events:[...n,...r?[r]:[]]}}function ua(e){return e.accumulated().length-e.unreleased().length}function da(e,t,n,r,i=!1){let a=t.accumulated();for(let t=e.held[0];t!==void 0;t=e.held[0]){let{event:o}=t;if(o.type!==`media`){let i=Math.max(t.start,e.releasedTo),s=Math.min(t.end,n);s>i&&(r.push({...o,text:a.slice(i,s)}),e.releasedTo=s)}if(t.end>n&&!(i&&o.type===`media`))return;o.type===`media`&&r.push(o),e.held.shift()}}function fa(e,t,n,r){if(!n.blocked){let i=n.found&&fn(`live_reply`,n.found);i&&r.push(G(i)),da(e,t,ua(t),r);return}let i=n.hits.filter(Xt);i.length>0&&(e.promptLeaks=i),e.withholdVisible=!0;let a=n.boundary?void 0:jr(`live_outbound`,`untrusted`,n.hits,`block`);a&&r.push(a)}function pa(e,t,n){e.withholdVisible||e.held.length===0||fa(e,t,t.flush(),n)}function ma(e,t,n,r){let i=t.accumulated().length;e.held.push({event:n,start:i,end:r?i:1/0})}function ha(e,t){for(let n=e.held.length-1;n>=0;--n){let r=e.held[n];if(r===void 0||r.end!==1/0)return;r.end=t}}function ga(e,t,n,r){let i=n.text??``;if(!i)return;let a=t.accumulated().length;ha(e,a+i.length),e.held.push({event:n,start:a,end:a+i.length});let o=t.process(i);e.withholdVisible||fa(e,t,o,r)}function _a(e,t){let n=[],{gate:r}=e;if(!r){let{thoughts:n}=e;return xa(n?t.flatMap(e=>e.type===`thought`?va(n.push(e.text),e):[e]):t)}let i=!1;for(let a of t){if(Nt(a)){i||=!!a.text,ga(e,r,a,n);continue}if(a.type===`media`){ma(e,r,a,i),e.withholdVisible||da(e,r,ua(r),n);continue}pa(e,r,n),ya(a)&&ba(e,r,n);let t=a.type===`tool`?void 0:zt(a,e.context,e.policy.detect,`live_reply`);if(t?.stop)return la(Zt(t.hits),t.hits,n);if(t){let e=fn(`live_reply`,{action:`flag`,hits:t.hits});e&&n.push(G(e))}a.type===`thought`&&e.thoughts?n.push(...va(e.thoughts.push(a.text),a)):n.push(a)}return xa(n)}function va({text:e,hits:t,found:n},r){let i=n&&fn(`thought`,n),a=jr(`thought`,`untrusted`,t,`redact`);return[...i?[G(i)]:[],...a?[a]:[],...e?[{...r,text:e}]:[]]}function ya(e){return e.type===`done`&&e.stop?.kind===`generation_complete`}function ba(e,t,n){let r=t.accumulated().length;e.withholdVisible||r===0||ua(t)<r||da(e,t,r,n,!0)}function xa(e){return e.length===0?{action:`idle`}:{action:`emit`,events:e}}function Sa(e,t,n){let{detect:r,blockedReply:i}=e.policy,a=bt({text:t.accumulated()},r,{boundary:`live_reply`,...e.withholdVisible?{reportedTo:ua(t)}:{},scope:Mt(e.policy,e.context)}),o=t.accumulated().slice(0,e.releasedTo),s=E(a,e.promptLeaks),c=s&&s!==a.blocked?jr(`live_outbound`,`untrusted`,s,`block`):void 0,l=[...n,...a.events.map(G),...c?[c]:[]];if(s){if(i.onBlock===`refuse`){let t=we(o,e.context.labels);return{action:`emit`,events:[...l,{type:`text`,text:t}]}}return{action:`withhold`,error:new V(`safety`,Bt.egress),events:l}}if(a.rewritten){let e=O(o,a.payload.text);return{action:`emit`,events:[...l,{type:`text`,text:e}]}}return da(e,t,t.accumulated().length,l,!0),xa(l)}function Ca(e,t){if(e.held.length===0)return t;let n=jr(`live_outbound`,`untrusted`,[oa],`block`);return n?[...t,n]:t}function wa(e,t){let n=[];return pa(e,t,n),t.accumulated()?Sa(e,t,n):xa(Ca(e,n))}function Ta(e){let t=e.thoughts?va(e.thoughts.flush(),{type:`thought`,text:``}):[];if(!e.gate)return xa(t);let n=wa(e,e.gate);return ca(e),t.length===0?n:n.action===`idle`?{action:`emit`,events:t}:{...n,events:[...t,...n.events??[]]}}function Ea(e){e.thoughts?.flush(),ca(e)}var Da=d().int().positive().max(2**53-1),Oa=Da.max(2147483647),ka=t({operationTimeoutMs:Oa,connectTimeoutMs:Oa,liveStepTimeoutMs:Oa,maxWireRecordBytes:Da,maxWireResponseBytes:Da,maxEventBytes:Da,maxStepBytes:Da,maxStepEvents:Da,maxPendingToolCalls:Da});function Aa(e={}){return Object.freeze(ka.parse({operationTimeoutMs:12e4,connectTimeoutMs:3e4,liveStepTimeoutMs:12e4,maxWireRecordBytes:16777216,maxWireResponseBytes:67108864,maxEventBytes:16777216,maxStepBytes:67108864,maxStepEvents:1e5,maxPendingToolCalls:32,...e}))}var ja=/key|auth|cookie|secret|token/i;function Ma(e,t){return ja.test(e)?`[redacted]`:t}function Na(e){let t={};for(let[n,r]of new Headers(e).entries())t[n]=Ma(n,r);return t}function Pa(e){return e instanceof Error?{eventType:`http_throw`,name:e.name,message:e.message}:{eventType:`http_throw`,name:`Error`,message:String(e)}}function Fa(e){if(e==null)return{};if(typeof e!=`string`)return{bodyKind:e.constructor.name};try{return{body:JSON.parse(e)}}catch{return{body:e}}}function Ia(e,t=fetch,n){return e?async(r,i)=>{e({eventType:`http_request`,method:i?.method??`GET`,url:String(r),headers:Na(i?.headers),...n?{keySlot:n}:{},...Fa(i?.body)});try{let n=await t(r,i);return e({eventType:`http_response`,status:n.status,headers:Na(n.headers)}),n.ok||e({eventType:`http_error_body`,body:await n.clone().text()}),n}catch(t){throw e(Pa(t)),t}}:t}function La(e){return e instanceof V||j(e)||ne(e)?e:new V(`network`,ce(e),{cause:e})}function Ra(e=fetch){return async(t,n)=>{try{return await e(t,n)}catch(e){throw La(e)}}}var za=[1e3,2e3,4e3,8e3],Ba=5e3,Va=za.length,Ha=1e3,Ua=new Set([408,429,500,502,503,504,529]),Wa=(e,t)=>new Promise((n,r)=>{if(t?.aborted){r(Ga(t));return}let i=setTimeout(()=>{t?.removeEventListener(`abort`,a),n()},e);function a(){clearTimeout(i),r(Ga(t))}t?.addEventListener(`abort`,a,{once:!0})});function Ga(e){return e.reason??new DOMException(`The operation was aborted.`,`AbortError`)}function Ka(e){return Ua.has(e)}function qa(e){let t=La(e);return t instanceof V&&t.kind===`network`}function Ja(e){return za[Math.min(e,za.length-1)]}function Ya(e,t=Date.now()){let n=e.get(`retry-after-ms`),r=e.get(`retry-after`),i;if(n!==null&&n.trim()!==``&&Number.isFinite(Number(n)))i=Number(n);else if(r!==null&&r.trim()!==``){let e=Number(r);i=Number.isFinite(e)?e*Ha:Date.parse(r)-t}if(!(i===void 0||Number.isNaN(i)||i<0))return i}function Xa(e,t=Wa,n=()=>1/0){return async(r,i)=>{let a=0;for(let o=0;;o++){let s=Math.min(Ba-a,n()),c;try{let t=await e(r,i);if(!Ka(t.status)||(c=Ya(t.headers)??Ja(o),c>s||o>=Va))return t;await t.body?.cancel()}catch(e){if(c=Ja(o),!qa(e)||c>s||o>=Va)throw e}await t(c,i?.signal),a+=c}}}var Za=`[DONE]`;function Qa(e){if(e&&typeof e==`object`&&!Array.isArray(e))return e}function $a(e,t){let n=e.startsWith(`data:`)?e.slice(5).replace(/^ /,``):e,r={};if(t&&(r.sseEvent=t),n===Za)return r.eventType=`sse_done`,r;try{let e=JSON.parse(n),t=Qa(e);return t?{...t,...r}:(r.eventType=`sse_unparsed`,r.data=e,r)}catch{return r.eventType=`sse_unparsed`,r.data=n,r}}function eo(e,t=``){let n=[],r=t,i=[],a=!1,o=0,s=/\r\n|\r|\n/g,c=0;for(let t=s.exec(e);t&&(t[0]!==`\r`||t.index!==e.length-1);t=s.exec(e)){let s=e.slice(c,t.index);if(c=t.index+t[0].length,!s)a&&n.push($a(i.join(`
|
|
3
|
+
`),r)),r=``,i=[],a=!1,o=c;else if(!s.startsWith(`:`)){let e=s.indexOf(`:`),t=e<0?s:s.slice(0,e),n=e<0?``:s.slice(e+1).replace(/^ /,``);t===`event`&&(r=n),t===`data`&&(i.push(n),a=!0)}}return{rest:e.slice(o),payloads:n,pendingEvent:``}}async function*to(e){let t=e.getReader(),n=new TextDecoder,r=``,i=!1;try{for(;;){let{done:e,value:a}=await t.read();if(e){i=!0;break}r+=n.decode(a,{stream:!0});let o=eo(r);r=o.rest;for(let e of o.payloads)yield e}}finally{i||t.cancel().catch(()=>void 0),t.releaseLock()}}var no=`key_fallback`,ro=1e6;function io(e,t){let n=e.models[t];if(n)return n;let r;for(let[n,i]of Object.entries(e.models))n.endsWith(`*`)&&t.startsWith(n.slice(0,-1))&&n.length-1>(r?.prefix.length??-1)&&(r={prefix:n.slice(0,-1),price:i});return r?.price}function ao(e,t,n,r){let i=e,a=0;for(let[e,t]of Object.entries(n??{})){let n=Math.min(r?.[e]??0,i);a+=n*t,i-=n}return a+i*t}function oo(e,t,n){let r=io(e,t);if(!r)return;let i=r.longContext&&n.input>r.longContext.above?r.longContext:r,a=Math.min(n.cached??0,n.input);return{usd:(a*(i.cachedInput??i.input)+ao(n.input-a,i.input,i.byModality?.input,n.byModality?.input)+ao(n.output,i.output,i.byModality?.output,n.byModality?.output))/ro,estimated:!0}}function so(e){return(t,n)=>{if([...n.headers.keys()].length)throw new V(`unsupported`,U(`protocol.ws_headers`,{provider:e}));return Promise.resolve(new WebSocket(t,n.protocols))}}var co=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789`,lo=248;function uo(){let e=``;for(;e.length<24;)for(let t of crypto.getRandomValues(new Uint8Array(24-e.length)))t<lo&&(e+=co[t%62]);return e}function fo(e){return ke(e.provider,e.binding)}var po=new WeakMap;function mo(e,t){return e&&Object.hasOwn(e,t)?e[t]:void 0}async function ho(e,t,n){let{definition:r}=e.provider,i=t.authorize??r.authorize;if(!r.key||!i)return;let a=n?mo(e.vault,n):void 0,o=typeof a==`function`?await a({providerId:e.provider.id,apiId:e.binding.apiId,keySlot:n,...e.signal?{signal:e.signal}:{}}):a,s=typeof o==`string`?o.trim()||void 0:o,c=r.key.safeParse(s);if(!c.success||n&&s===void 0)throw new V(`auth`,s===void 0?U(`provider.credential_missing`,{slot:n??``}):U(`protocol.key_invalid`,{slot:n??``,provider:e.provider.id}));if(c.data===void 0)return;e.onKey?.(n,c.data);let l=`${t.protocol.id}\u0000${n??``}`,u=po.get(e.provider)??new Map;po.set(e.provider,u);let d=u.get(l);if(d&&JSON.stringify(d.key)===JSON.stringify(c.data))return d.signer;let f=i(c.data);return u.set(l,{key:c.data,signer:f}),f}function go(e,t,n,r){return e.url?new URL(e.url({path:t,apiId:n,stream:r})):new URL(e.baseUrl.replace(/\/+$/,``)+(t.startsWith(`/`)?t:`/${t}`))}async function*_o(e,t){let n=e.headers.get(`content-type`)??``;if(!t&&!/json/i.test(n)){let t=new Uint8Array(await e.arrayBuffer());yield{eventType:`http_body`,mime_type:n,data:xn(t)}}else if(!t)yield await e.json();else if(e.body)for await(let t of to(e.body)){if(t.eventType===`sse_done`)return;yield t}}function vo(e){let t=e.split(/\r?\n/).filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trim()).join(`
|
|
4
|
+
`);for(let n of t?[e,t]:[e])try{return JSON.parse(n)}catch{}return e}async function yo(e,t,n){let r=vo(await n.text()),i=e.error?.({status:n.status,body:r,headers:n.headers})??new V(oe(n.status),U(`protocol.http`,{provider:t,status:n.status}));return Object.assign(i,{status:n.status})}function bo(e){return e.builtins.map(e=>e.id)}function xo(e,t,n=[]){let r=t.find(e=>!n.includes(e));if(r!==void 0)throw new V(`unsupported`,U(`protocol.builtin_unwritten`,{protocol:e.id,tool:r}))}async function So(e){return typeof e==`string`?e:e instanceof ArrayBuffer?new TextDecoder().decode(e):typeof Blob<`u`&&e instanceof Blob?await e.text():String(e)}function Co(e){try{let t=JSON.parse(e);if(t&&typeof t==`object`&&!Array.isArray(t))return t}catch{}return{eventType:`ws_unparsed`,data:e}}function wo(e,t){let n=[],r=[],i,a=!1,o=Promise.resolve(),s=e=>{t(e),n.push(e),i?.()},c=e=>{o=o.then(e)};return e.addEventListener(`open`,()=>{for(let t of r.splice(0))e.send(t)}),e.addEventListener(`message`,e=>c(async()=>{let t=await So(e.data);t.trim()&&s(Co(t))})),e.addEventListener(`error`,()=>c(()=>s({eventType:`ws_error`}))),e.addEventListener(`close`,e=>c(()=>{let{code:t,reason:n}=e;s({eventType:`ws_close`,code:t,reason:n}),a=!0})),{send(n,i){t({eventType:`ws_send`,body:n,...i?.length?{input:z.parse(i)}:{}});let a=JSON.stringify(n);e.readyState===WebSocket.CONNECTING?r.push(a):e.send(a)},async*frames(){for(;;){let e=n.shift();if(e)yield e;else if(a)return;else await new Promise(e=>i=e)}},close(t,n){(e.readyState===WebSocket.CONNECTING||e.readyState===WebSocket.OPEN)&&e.close(t,n)}}}function To(e,t,n,r={sent:!1},i=[]){let a=fo(e),{protocol:o}=a,{apiId:s}=e.binding,c=(`builtInTools`in e.binding?e.binding.builtInTools:void 0)??[],l=t=>{e.tapUpstream?.(t),e.rawRows&&n.push(t)},u=t=>{let n=t??o.endpoints[e.profileType];if(n===void 0)throw new V(`unsupported`,U(`protocol.profile_type`,{protocol:o.id,profileType:e.profileType}));return n};return{profileType:e.profileType,apiId:s,options:e.binding.options??{},builtInTools:c,limits:e.limits??Aa(),...e.signal?{signal:e.signal}:{},tapUpstream:l,async*send(n,c){xo(o,i,c.wroteTools);let d=new Headers({"content-type":`application/json`});c.stream&&d.set(`accept`,`text/event-stream`);for(let[e,t]of Object.entries(a.headers??{}))d.set(e,t);for(let[e,t]of Object.entries(c.headers??{}))d.set(e,t);let f={transport:`http`,url:go(a,u(c.path),s,c.stream),headers:d,protocols:[],body:JSON.stringify(n)};await(await ho(e,a,t))?.sign(f);let p=Xa(Ia(e.tapUpstream&&(t=>e.tapUpstream?.(t)),Ra(e.fetch??fetch),t),e.wait??Wa,e.timeLeft);r.sent=!0;let m=await p(f.url,{method:`POST`,headers:f.headers,body:f.body??null,...e.signal?{signal:e.signal}:{}});if(!m.ok)throw await yo(o,e.provider.id,m);for await(let e of(o.framing??_o)(m,c.stream))l(e),yield e},async connect(n,c){xo(o,i,c?.wroteTools);let d={transport:`ws`,url:go(a,u(void 0),s,!0),headers:new Headers(a.headers),protocols:[]};await(await ho(e,a,t))?.sign(d);let f=e.openWebSocket??so(e.provider.id);r.sent=!0;let p=wo(await f(d.url.toString(),{headers:d.headers,protocols:d.protocols}),l);return p.send(n),p}}}function Eo(e,t){return e instanceof V&&e.kind===t}async function*Do(e,t){let{keySlot:n,fallbackKeySlot:r}=g(e.provider,e.binding),i=n,a=!1,o=!1;for(;;){let n=!1;try{for await(let e of t(i,a))n=!0,yield e;return}catch(t){if(n)throw t;if((Eo(t,`rate_limit`)||Eo(t,`busy`))&&r&&i!==r&&Oo(e,r))e.tapUpstream?.({eventType:no,from:i??null,keySlot:r,errorKind:t.kind,error:t.message}),i=r,a=!0;else if(Eo(t,`auth`)&&!o){o=!0;let t=fo(e);po.get(e.provider)?.get(`${t.protocol.id}\u0000${i??``}`)?.signer.invalidate?.()}else throw t}}}function Oo(e,t){let n=mo(e.vault,t);return typeof n==`string`?n.trim()!==``:typeof n==`function`||typeof n==`object`&&!!n}function ko(e){if(!(e instanceof V)||e.kind===`cancelled`||e.kind===`config`)throw e;return{type:`error`,errorKind:e.kind,errorInternal:e.message,...e.copy?{errorCopy:e.copy}:{}}}function Ao(e){if(e.state===void 0)return e;if(!e.history?.length)throw new V(`request`,U(`protocol.history_needed`));let{state:t,stateHistoryLength:n,...r}=e;return r}function jo(e){let t=new Map,n=e=>{let n=t.get(e);if(n)return n;let r=uo();return t.set(e,r),r},r=e.provider.definition.prices;return{finish:t=>{switch(t.type){case`tool_call`:return{...t,call:{...t.call,callId:n(t.call.callId),wireCallId:t.call.callId}};case`tool_cancel`:case`tool_draft`:return{...t,callId:n(t.callId)};case`reasoning`:return{...t,origin:{protocol:t.origin?.protocol??e.binding.protocol,provider:e.provider.id,apiId:e.binding.apiId}};case`tokens`:{if(t.tokens.cost||!r)return t;let n=oo(r,e.binding.apiId,t.tokens);return n?{...t,tokens:{...t.tokens,cost:n}}:t}default:return t}},wireOf:e=>{for(let[n,r]of t)if(r===e)return n;return e}}}function Mo(e,t){let n=e.provider.definition.prices;if(!t.usage||t.usage.costUsd!==void 0||!n)return t;let{inputTokens:r,outputTokens:i}=t.usage,a=oo(n,t.model,{input:r,output:i,total:r+i});return a?{...t,usage:{...t.usage,costUsd:a.usd,estimated:!0}}:t}function No(e){return fo(e).protocol}function Po(e,t,n){let r=t[n];if(!r)throw new V(`unsupported`,U(`protocol.no_operation`,{protocol:e.id,operation:n}));let i=r;return((...e)=>i.apply(t,e))}async function Fo(e,t,n){let r=No(e);for await(let i of Do(e,i=>(async function*(){let a=r.create(To(e,i,[]));yield await Po(r,a,t)(n)})()))return i;throw new V(`internal`,U(`provider.decision_failed`))}function Io(e){let t=No(e);return{async*complete(n){let{finish:r}=jo(e),i=[],a={sent:!1},o=Do(e,(r,o)=>{a.sent=!1;let s=t.create(To(e,r,i,a,bo(n)));return Po(t,s,`complete`)(o?Ao(n):n)});try{for await(let e of o){for(let e of i.splice(0))yield{type:`raw`,row:e};yield r(e)}}catch(e){for(let e of i.splice(0))yield{type:`raw`,row:e};if(!a.sent)throw e;yield ko(e);return}for(let e of i.splice(0))yield{type:`raw`,row:e}},async openSession(n){let{finish:r,wireOf:i}=jo(e),a=[],o;for await(let r of Do(e,(r,i)=>(async function*(){let o=t.create(To(e,r,a,void 0,bo(n)));yield await Po(t,o,`openSession`)(i?Ao(n):n)})()))o=r;let s=o;return{...s,sendToolResult:e=>s.sendToolResult({...e,callId:i(e.callId)}),async*events(){for await(let e of s.events()){for(let e of a.splice(0))yield{type:`raw`,row:e};yield r(e)}}}},decide:async t=>Mo(e,await Fo(e,`decide`,t)),embed:t=>Fo(e,`embed`,t)}}function Lo(e){let t=new AbortController,n=[],r=()=>{for(let e of n.splice(0))e()};for(let i of e){let e=()=>{t.abort(i.reason),r()};if(i.aborted){e();break}i.addEventListener(`abort`,e,{once:!0}),n.push(()=>i.removeEventListener(`abort`,e))}return{signal:t.signal,dispose:r}}var Ro=class{limits;controller=new AbortController;signal;timer;timerDeadline;wireBytes=0;stepBytes=0;stepEvents=0;calls=new Set;deadline;releaseSignal;constructor(e,t,n=e.operationTimeoutMs){this.limits=e;let r=Lo(t?[t,this.controller.signal]:[this.controller.signal]);this.signal=r.signal,this.releaseSignal=r.dispose,this.startTimer(n),this.deadline=performance.now()+n}resumeOperation(){let e=this.deadline-performance.now();e<=0&&(this.controller.abort(new V(`timeout`,U(`error.timeout`))),B(this.signal)),this.startTimer(e)}timeLeft(){return(this.timerDeadline??this.deadline)-performance.now()}startTimer(e){this.stopTimer(),this.timerDeadline=performance.now()+e,this.timer=setTimeout(()=>this.controller.abort(new V(`timeout`,U(`error.timeout`))),e)}stopTimer(){this.timer!==void 0&&clearTimeout(this.timer),this.timer=void 0,this.timerDeadline=void 0}close(){this.controller.abort(),this.dispose()}dispose(){this.stopTimer(),this.releaseSignal()}startLiveStep(){this.timer===void 0&&this.startTimer(this.limits.liveStepTimeoutMs)}fail(){let e=new V(`bad_response`,U(`provider.budget_exhausted`),{copy:{key:`provider.budget_exhausted`}});throw this.controller.abort(e),e}checkDeadline(){this.timerDeadline!==void 0&&performance.now()>=this.timerDeadline&&this.controller.abort(new V(`timeout`,U(`error.timeout`))),B(this.signal)}value(e){this.checkDeadline();let t=new TextEncoder().encode(JSON.stringify(e)).byteLength;this.checkDeadline(),this.stepBytes+=t,this.stepEvents++,(t>this.limits.maxEventBytes||this.stepBytes>this.limits.maxStepBytes||this.stepEvents>this.limits.maxStepEvents)&&this.fail()}event(e){this.value(e),e.type===`tool_call`&&this.calls.add(e.call.callId),e.type===`tool_cancel`&&this.calls.delete(e.callId),this.calls.size>this.limits.maxPendingToolCalls&&this.fail()}resetStep(){this.stepBytes=0,this.stepEvents=0,this.calls.clear(),this.wireBytes=0,this.stopTimer()}socket(e){return async(t,n)=>{B(this.signal);let r=await e(t,n);this.signal.aborted&&(r.close(),B(this.signal));let i=()=>r.close();return this.signal.addEventListener(`abort`,i,{once:!0}),r.addEventListener(`close`,()=>this.signal.removeEventListener(`abort`,i),{once:!0}),r.addEventListener(`message`,e=>{let t=e.data;if(!((typeof t==`string`?new TextEncoder().encode(t).byteLength:t instanceof Blob?t.size:t instanceof ArrayBuffer||ArrayBuffer.isView(t)?t.byteLength:0)<=this.limits.maxWireRecordBytes)){e.stopImmediatePropagation();try{this.fail()}catch{r.close(1009,`response limit`)}}}),r}}fetch(e){return async(t,n)=>{let r=n?.signal??(t instanceof Request?t.signal:void 0),i=Lo(r?[this.signal,r]:[this.signal]),a=i.signal;B(a);let o=await e(t,{...n,signal:a}).catch(e=>{throw i.dispose(),e});if(B(a),!o.body)return i.dispose(),o;let s=o.body.getReader(),c=0,l=o.headers.get(`content-type`)?.includes(`text/event-stream`)?new zo(this):void 0,u=()=>{s.cancel(a.reason).catch(()=>void 0)};a.addEventListener(`abort`,u,{once:!0});let d=new ReadableStream({pull:async e=>{try{B(a);let t=await s.read();if(B(a),t.done){e.close(),a.removeEventListener(`abort`,u),i.dispose(),s.releaseLock();return}c+=t.value.byteLength,this.wireBytes+=t.value.byteLength,(c>this.limits.maxWireResponseBytes||this.wireBytes>this.limits.maxWireResponseBytes)&&this.fail(),l?.accept(t.value),e.enqueue(t.value)}catch(t){e.error(t),a.removeEventListener(`abort`,u),i.dispose(),s.cancel(t).catch(()=>void 0)}},cancel:e=>(a.removeEventListener(`abort`,u),i.dispose(),s.cancel(e))});return new Response(d,{status:o.status,statusText:o.statusText,headers:o.headers})}}},zo=class{budget;recordBytes=0;lineBytes=0;previousCR=!1;emptyCR=!1;constructor(e){this.budget=e}accept(e){for(let t of e)this.emptyCR&&t!==10&&(this.recordBytes=0,this.emptyCR=!1),this.recordBytes++,this.recordBytes>this.budget.limits.maxWireRecordBytes&&this.budget.fail(),this.emptyCR?(this.recordBytes=0,this.emptyCR=!1,this.previousCR=!1):t===10&&this.previousCR?this.previousCR=!1:(t===10||t===13?(this.lineBytes===0&&(t===13?this.emptyCR=!0:this.recordBytes=0),this.lineBytes=0):this.lineBytes++,this.previousCR=t===13)}},Bo=t({name:f().min(1),callId:f().min(1),wireCallId:f().min(1).optional(),arguments:p(f(),z),stepId:f().min(1).optional(),stepCallCount:d().int().min(1).optional()}),Vo=ue.extend({type:o(`reasoning`)}),Ho=new Set([`text`,`thought`,`structured`,`media`,`grounding`,`citation`,`evidence`,`tokens`,`session`,`tool_draft`,`error`,`custom`]);function Uo(e){let t=Dt.parse(e);if(t.kind===`gate`)throw new V(`bad_response`,U(`provider.kernel_gate`));return t}function Wo(e){if(!W(e)||typeof e.type!=`string`)throw new V(`bad_response`,U(`provider.event_invalid`));if(Ho.has(e.type))return ae.parse(e);switch(e.type){case`tool_call`:return{type:`tool_call`,call:Bo.parse(e.call)};case`tool_cancel`:return{type:`tool_cancel`,callId:f().min(1).parse(e.callId)};case`reasoning`:return Vo.parse(e);case`raw`:return{type:`raw`,row:w.parse(e.row)};case`done`:return{type:`done`,stop:Uo(e.stop),interrupted:i().optional().parse(e.interrupted),state:e.state};case`response`:if(!W(e.response))throw new V(`bad_response`,U(`provider.response_identity`));return{type:`response`,response:t({id:f().optional(),model:f().optional()}).parse(e.response)};default:throw new V(`bad_response`,U(`provider.event_type`,{type:e.type}))}}async function Go(e,t){if(B(t),!t)return await e();let n=()=>{},r=new Promise((e,r)=>{n=()=>{try{B(t)}catch(e){r(e)}},t.addEventListener(`abort`,n,{once:!0}),t.aborted&&n()});try{return await Promise.race([Promise.resolve().then(()=>(B(t),e())),r])}finally{t.removeEventListener(`abort`,n)}}function Ko(e,t){if(!e)return;let n=e=>({...e,...e.params?{params:Object.fromEntries(Object.entries(e.params).map(([e,n])=>[e,typeof n==`string`?t(n):n]))}:{}});return`key`in e?n(e):e.map(n)}function qo(e,t){let n=t(e instanceof Error?e.message:String(e));if(e instanceof DOMException)return new DOMException(n,e.name);if(j(e))return new DOMException(n,`AbortError`);let r=e instanceof V?new V(e.kind,n,{copy:Ko(e.copy,t)}):e instanceof TypeError?TypeError(n):Error(n);return W(e)&&typeof e.status==`number`&&Object.assign(r,{status:e.status}),r}async function Jo(e,t){try{return await e()}catch(e){throw qo(e,t)}}async function*Yo(e,t,n,r=!1){r||n.resumeOperation();let i;try{for(i=e()[Symbol.asyncIterator]();;){let e=i,a=await Go(()=>e.next(),n.signal);if(a.done)break;let o=Wo(a.value);r&&(o.type!==`session`||o.session.kind===`working`)&&n.startLiveStep(),n.event(o),o.type===`error`?yield{...o,...o.errorCopy?{errorCopy:Ko(o.errorCopy,t)}:{},...o.errorInternal?{errorInternal:t(o.errorInternal)}:{},...o.error?{error:t(o.error)}:{}}:yield o,r&&o.type===`done`&&n.resetStep()}}catch(e){throw qo(e,t)}finally{n.close(),i?.return&&Promise.resolve(i.return()).catch(()=>void 0)}}var Xo=/^(?:authorization|proxy-authorization|cookie|set-cookie|api[_-]?key|x-goog-api-key|secret|token|access[_-]?token|refresh[_-]?token|password)$/i;function Zo(e,t,n,r,i){let a=Aa(r.limits),o=new Ro(a,i.signal,i.timeoutMs??(i.liveConnection?a.connectTimeoutMs:a.operationTimeoutMs)),s=new Set,c=e=>{if(typeof e==`string`)s.add(e);else if(e&&typeof e==`object`)for(let t of Object.values(e))c(t)},l=e=>{if(typeof e==`string`){let t=e;for(let e of s)e&&(e.length>=4||t===e)&&(t=t.split(e).join(`[redacted]`));return t}return Array.isArray(e)?e.map(l):e&&typeof e==`object`?Object.fromEntries(Object.entries(e).map(([e,t])=>[String(l(e)),Xo.test(e)&&typeof t==`string`?`[redacted]`:l(t)])):e},u=e=>String(l(e)),d=g(e,t).keySlot,f=Io({provider:e,binding:t,profileType:n,limits:a,signal:o.signal,fetch:o.fetch(r.fetch??globalThis.fetch),openWebSocket:o.socket(r.openWebSocket??so(e.id)),...r.vault?{vault:r.vault}:{},...r.wait?{wait:r.wait}:{},timeLeft:()=>o.timeLeft(),...i.tapUpstream?{tapUpstream:e=>i.tapUpstream?.(w.parse(l(e)))}:{},onKey(e,t){d=e,c(t)}});o.stopTimer();let p=async e=>{try{o.resumeOperation();let t=await Go(()=>Jo(e,u),o.signal);return o.value(t),t}finally{o.close()}};return{keySlot:()=>d,complete:e=>Yo(()=>f.complete({...e,signal:o.signal}),u,o),decide:e=>p(()=>f.decide({...e,signal:o.signal})),embed:e=>p(()=>f.embed({...e,signal:o.signal})),async openSession(e){o.resumeOperation();let t=await Go(()=>Jo(()=>f.openSession({...e,signal:o.signal}),u),o.signal).catch(e=>{throw o.close(),e}).finally(()=>o.stopTimer());return{events:()=>Yo(()=>t.events(),u,o,!0),closeInfo:()=>{let e=t.closeInfo?.();return e&&{...e,...e.error?{error:qo(e.error,u)}:{}}},sendText:e=>(o.startLiveStep(),Jo(()=>t.sendText(e),u)),sendAudio:e=>Jo(()=>t.sendAudio(e),u),sendVideo:e=>Jo(()=>t.sendVideo(e),u),sendContext:e=>Jo(()=>t.sendContext(e),u),sendToolResult:e=>(o.startLiveStep(),Jo(()=>t.sendToolResult(e),u)),close:e=>(o.stopTimer(),Jo(()=>t.close(e),u).finally(()=>o.dispose()))}}}}function Qo(e,t,n){let r=t.options??{},i=[...n.continuation?.keyOptions??[]].sort().map(e=>[e,r[e]??null]);return JSON.stringify({connection:e.connection??null,options:i})}function $o(e,t,n){if(e?.history===`stateless`&&(t||n?.length))throw new V(`request`,U(`provider.stateless_history`))}async function es(e,t,n,r,i={}){if(!n)return{};let a=Ct.parse(n),o=mt(e,t),s=o.continuation,c;return a.protocol!==o.id||a.provider!==e.id?c=`provider_changed`:a.apiId===t.apiId?!s||a.version!==s.version?c=`version_changed`:a.compatibilityKey===Qo(e,t,o)?a.keySlot===g(e,t).keySlot?(i.history===`provider`?r.length>0:a.coveredHistoryLength>r.length||a.coveredHistoryHash!==await Ie(r.slice(0,a.coveredHistoryLength)))&&(c=`history_changed`):c=`key_changed`:c=`connection_changed`:c=`model_changed`,c?{warning:{code:`provider_state_rebuilt`,reason:c}}:{state:s?.schema.parse(a.data),covered:i.history===`provider`?0:a.coveredHistoryLength,...a.wireCallIds?{wireCallIds:a.wireCallIds}:{}}}async function ts(e,t,n,r,i,a={}){if(r===void 0)return;let o=mt(e,t),s=o.continuation;if(!s)throw new V(`bad_response`,U(`provider.continuation_contract`));return{protocol:o.id,provider:e.id,version:s.version,apiId:t.apiId,...n?{keySlot:n}:{},compatibilityKey:Qo(e,t,o),coveredHistoryLength:i.length,coveredHistoryHash:await Ie(i),data:z.parse(s.schema.parse(r)),...Object.keys(a).length?{wireCallIds:a}:{}}}function ns(e,t){return e?.map(e=>{if(!e.reasoning)return e;let{reasoning:n,...r}=e,i=n.filter(e=>rt(e.origin.protocol,t));return i.length?{...r,reasoning:i}:r})}function rs(e,t){if(!e||!t)return e;let n=e=>t[e]??e;return e.map(e=>({...e,...e.tool_calls?{tool_calls:e.tool_calls.map(e=>({...e,id:n(e.id)}))}:{},...e.tool_call_id?{tool_call_id:n(e.tool_call_id)}:{}}))}function is(e,t,n){let{providerState:r,tapUpstream:i,history:a,...o}=e,s=rs(ns(a,t),n.wireCallIds);return{...o,...s?{history:s}:{},...n.state===void 0?{}:{state:n.state,stateHistoryLength:n.covered}}}function as(e){let{wireCallId:t,...n}=e;return n}async function*os(e,t){let n={},r,i=!1,a=[],o=[],s=``,c,l=e[Symbol.asyncIterator](),u=!1;try{for(;;){let e=await Go(()=>l.next(),t);if(e.done){u=!0;break}B(t);let d=e.value;if(r)throw new V(`bad_response`,U(`provider.events_after_completion`));switch(d.type){case`raw`:continue;case`text`:s+=d.text;break;case`structured`:c=d.structured;break;case`reasoning`:{let{type:e,...t}=d;o.push(t);break}case`tool_call`:if(a.some(e=>e.callId===d.call.callId))throw new V(`bad_response`,U(`provider.duplicate_call`));d.call.wireCallId&&(n[d.call.callId]=d.call.wireCallId),a.push(as(d.call));continue;case`tool_cancel`:throw new V(`bad_response`,U(`provider.tool_cancel_live`));case`error`:i=!0;break;case`done`:r=d;continue}yield d}}finally{!u&&l.return&&Promise.resolve(l.return()).catch(()=>void 0)}return{terminal:r,failed:i,pending:a,reasoning:o,text:s,...c===void 0?{}:{structured:c},wireCallIds:n}}function ss(e,t,n,r,i,a={},o=[]){let s=mt(e,t),c=i;return{async*complete(l){let u=c===i&&a.history===`provider`,d=await es(e,t,c,u?o:l.history??[],u?a:{});d.warning&&(c=void 0,yield{type:`provider_warning`,warning:d.warning});let f=Zo(e,t,n,r,l),{terminal:p,failed:m,pending:h,reasoning:g,text:_,structured:v,wireCallIds:y}=yield*os(f.complete(is(l,s,d)),l.signal);if(B(l.signal),!p){yield{type:`done`,stop:{kind:m?`provider_error`:`stream_incomplete`}};return}if(m||p.interrupted||p.stop.kind!==`tool`&&p.stop.kind!==`completed`){yield{type:`done`,stop:p.stop};return}let b=[...l.history??[]];l.input.length&&b.push(l.input.every(e=>e.type===`text`)?{role:`user`,content:l.input.map(e=>e.type===`text`?e.text:``).join(``)}:{role:`user`,parts:l.input});let x=await ts(e,t,f.keySlot(),p.state,[...b,...Ne({text:_,structured:v,calls:h.map((e,t)=>t===0?{...e,reasoning:g}:e)})],{...d.wireCallIds,...y});c=x;for(let e of h)yield{type:`tool`,tool:e};yield{type:`done`,stop:p.stop,providerState:x}}}}var cs=new Map;function ls(e){return typeof e==`object`&&!!e&&`write`in e&&typeof e.write==`function`}function us(e,t){let n=e.trim();if(!n)throw new V(`config`,`registerTraceDestination requires a non-empty id`);if(!ls(t))throw new V(`config`,`Trace destination '${n}' must be a TraceSink`);cs.set(n,t)}function ds(e){return cs.get(e)}function fs(e){let t=ds(e);if(!t)throw new V(`config`,`Trace destination '${e}' is not registered`);return t}async function ps(e,t,n){try{await e.write(await t,{retainForDays:n.retainForDays,rotateAfterMiB:n.rotateAfterMiB})}catch(t){try{e.onError?.(t)}catch{}}}function ms(e,t,n,r){return ps(e,Wr({spans:t,policy:n,...r?{metadata:r}:{}}),n)}function hs(){return{write:()=>Promise.resolve()}}function gs(e,t){return!t&&!e.onError?e:{write:(t,n)=>e.write(t,n),onError:e.onError??t}}var _s=2**32;function vs(e,t){let n=e.spans[0]?.traceId??``;return Number.parseInt(n.slice(-8),16)/_s<t}function ys(e,t){return t>=1?e:t<=0?hs():{write:async(n,r)=>{vs(n,t)&&await e.write(n,r)},onError:e.onError}}function bs(e,t){return e===void 0||e===!1?hs():gs(typeof e==`string`?fs(e):e,t.onWriteError)}function xs(e){let t={...Hr(e.observability),detect:I(e.guardrails).detect};return e.override?{policy:t,sink:gs(e.override,t.onWriteError)}:t.record?{policy:t,sink:ys(bs(t.writeTo,t),t.sampleRate)}:{policy:t,sink:hs()}}async function Ss({name:e,attributes:t,traceparent:n,metadata:r,writer:i},a){let o=Dn(e,{kind:`CLIENT`,attributes:t,...n?{traceparent:n}:{}}),{sink:s,policy:c}=xs(i);try{let e=await a(o.root);return o.root.end({code:`OK`}),e}catch(e){throw xt(o.root,e),e}finally{await ms(s,o.collect(),c,r)}}var Cs={invalid_request:`request`,authentication:`auth`,permission:`auth`,rate_limited:`rate_limit`,unavailable:`unavailable`,network:`network`,timeout:`timeout`,cancelled:`cancelled`,malformed_response:`bad_response`,disclosure_blocked:`blocked`},K=class extends V{code;status;constructor(e,t,n,r){super(Cs[e],t,r),this.code=e,this.status=n}};function ws(e,t){let n=e.profiles.get(t);if(n.type!==`decision`)throw new V(`request`,`runDecision requires profile.type 'decision' (got '${n.type}' for ${n.id})`);return n}function Ts(e){let t=Yn(e.models),n=t?e.models[t]:void 0;if(!t||!n)throw new V(`config`,`Profile ${e.id}: type 'decision' must declare exactly one model`);return[t,n]}function q(e,t,n=0,r=1){if(typeof e!=`number`||!Number.isFinite(e)||e<n||e>r)throw new K(`malformed_response`,`${t} is outside its valid range`);return e}function Es(e,t,n){if(!W(e)||Object.keys(e).length!==t.length||t.some(t=>!Object.hasOwn(e,t)))throw new K(`malformed_response`,`${n} does not match declared labels`);let r=Object.create(null);for(let i of t)r[i]=q(e[i],`${n}.${i}`);let i=Object.values(r).reduce((e,t)=>e+t,0);if(Math.abs(i-1)>.001)throw new K(`malformed_response`,`${n} must sum to one`);return r}function Ds(e,t){if(!W(e))throw new K(`malformed_response`,`${t} is invalid`);let n={top:q(e.top,`${t}.top`),bottom:q(e.bottom,`${t}.bottom`),left:q(e.left,`${t}.left`),right:q(e.right,`${t}.right`)};if(n.left>=n.right||n.top>=n.bottom)throw new K(`malformed_response`,`${t} has an edge out of order`);return n}function Os(e,t,n){if(!W(e)||Object.keys(e).length!==t.length||t.some(t=>!Object.hasOwn(e,t))||Object.values(e).some(e=>typeof e!=`string`||!e.trim()))throw new K(`malformed_response`,`${n} is invalid`);return e}function ks(e,t){if(!W(e)||Object.keys(e).length!==Object.keys(t).length)throw new K(`malformed_response`,`Decision provider returned an incomplete answer set`);let n=Object.create(null);for(let[r,i]of Object.entries(t)){let t=e[r];if(!W(t)||t.type!==i.type)throw new K(`malformed_response`,`Decision provider returned an invalid answer for '${r}'`);if(i.type===`choice`){let e=Object.keys(i.criteria);if(typeof t.choice!=`string`||!e.includes(t.choice))throw new K(`malformed_response`,`Decision provider returned an undeclared choice for '${r}'`);n[r]={type:`choice`,choice:t.choice,confidence:q(t.confidence,`${r}.confidence`),probabilities:Es(t.probabilities,e,`${r}.probabilities`)}}else if(i.type===`noul`)n[r]={type:`noul`,noul:q(t.noul,`${r}.noul`)};else if(i.type===`box`)n[r]={type:`box`,box:Ds(t.box,`${r}.box`),confidence:q(t.confidence,`${r}.confidence`)};else{let e=i.criteria.map((e,t)=>String(t));n[r]={type:`score`,score:q(t.score,`${r}.score`,0,Math.max(0,e.length-1)),confidence:q(t.confidence,`${r}.confidence`),legend:Os(t.legend,e,`${r}.legend`),probabilities:Es(t.probabilities,e,`${r}.probabilities`)}}}return n}function As(e){let t=new Set,n=[{value:e}];for(;n.length;){let e=n.pop();if(!e)break;let r=e.value;if(e.exit){t.delete(r);continue}if(r===null||typeof r==`string`||typeof r==`boolean`)continue;if(typeof r==`number`){if(!Number.isFinite(r))return!1;continue}if(typeof r!=`object`||t.has(r)||!Array.isArray(r)&&Object.getPrototypeOf(r)!==Object.prototype&&Object.getPrototypeOf(r)!==null||Object.getOwnPropertySymbols(r).length)return!1;t.add(r),n.push({value:r,exit:!0});let i=Array.isArray(r)?Array.from(r):Object.values(r);for(let e of i)n.push({value:e})}return!0}function js(e,t){if(!W(t)||!e.trim()||!Rs(t.instructions))throw new K(`invalid_request`,`Decision question '${e}' must include instructions`);if((t.type===`noul`||t.type===`box`)&&t.criteria===void 0)return;if(typeof t.type!=`string`||![`choice`,`noul`,`score`].includes(t.type)||(t.type===`score`?!Array.isArray(t.criteria):!W(t.criteria)))throw new K(`invalid_request`,`Decision question '${e}' has invalid criteria`);let n=Array.isArray(t.criteria)?t.criteria:Object.values(t.criteria);if(!n.length||!n.every(Rs))throw new K(`invalid_request`,`Decision ${t.type} '${e}' must declare criteria`)}function Ms(e,t){if(B(e.signal),e.model!==void 0)throw new K(`invalid_request`,`Decision requests do not select a model; the profile runs its one model`);if(e.state===null||!As(e.state))throw new K(`invalid_request`,`Decision state must be non-null JSON`);let n;try{n=JSON.stringify(e.state)}catch{throw new K(`invalid_request`,`Decision state cannot be serialized as JSON`)}let r=new TextEncoder().encode(n).byteLength;if(t.inputs.maxStateBytes!==void 0&&r>t.inputs.maxStateBytes)throw new K(`invalid_request`,`Decision state exceeds ${t.inputs.maxStateBytes} bytes`);if(!W(e.questions)||!As(e.questions)||Object.keys(e.questions).length===0)throw new K(`invalid_request`,`Decision request must declare at least one question`);for(let[t,n]of Object.entries(e.questions))js(t,n);e.assets!==void 0&&Ls(e.assets);for(let[t,n]of Object.entries(e.questions))Ps(t,n,e.state,e.assets)}function Ns(e,t){let n=e;for(let e of t.split(`.`)){if(!W(n)&&!Array.isArray(n))return;n=Array.isArray(n)?n[Number(e)]:n[e]}return n}function Ps(e,t,n,r){if(!W(t)||t.image===void 0)return;let i=t.image,a=typeof i==`string`&&!r?.[i]?Ns(n,i):i;if(t.type!==`box`||typeof a!=`string`||r?.[a]===void 0)throw new K(`invalid_request`,`Decision question '${e}' has an image that is neither a held image nor a state field holding one`)}function Fs(e,t){if(e.type!==`box`||e.image===void 0)return e;let{image:n,instructions:r}=e,i=U(`decision.box_image`,{image:t?.[n]?n:`\`${n}\``});return{type:`box`,instructions:typeof r==`string`?`${r} ${i}`:[r,i]}}var Is=/^[A-Za-z0-9+/]+={0,2}$/;function Ls(e){if(!W(e)||Object.keys(e).length===0)throw new K(`invalid_request`,`Decision assets must name at least one image`);for(let[t,n]of Object.entries(e))if(!t.trim()||!W(n)||n.mimeType!==`image/png`&&n.mimeType!==`image/jpeg`||typeof n.data!=`string`||n.data.length%4!=0||!Is.test(n.data))throw new K(`invalid_request`,`Decision asset '${t}' must be PNG or JPEG bytes as padded base64`)}function Rs(e){let t=[e];for(;t.length;){let e=t.pop();if(typeof e==`string`){if(!e.trim())return!1;continue}if(!W(e)&&!Array.isArray(e))return!1;let n=Object.values(e);if(!n.length)return!1;for(let e of n)t.push(e)}return!0}async function zs(e,t,n,r){if((await e.guardrails?.disclosure?.enforce(r.state,{destination:n,profileId:e.id,model:t,questionIds:Object.keys(r.questions),...r.assets?{assets:r.assets}:{}}))?.action===`block`)throw new K(`disclosure_blocked`,`Decision disclosure was blocked`)}function Bs(e,t,n,r){return{"gen_ai.operation.name":`decide`,"gen_ai.provider.name":n.provider,"gen_ai.agent.name":e.id,"gen_ai.request.model":n.apiId,"theorem.model.id":t,"theorem.decision.contract":e.decision.contract,"theorem.decision.state":H(r.state),"theorem.decision.questions":H(r.questions),...r.assets?{"theorem.decision.assets":H(Object.fromEntries(Object.entries(r.assets).map(([e,{mimeType:t,data:n}])=>[e,{mimeType:t,bytes:n.length}])))}:{}}}function Vs(e,t){e.set({"gen_ai.response.model":t.model,"theorem.decision.answers":H(t.answers),...t.usage?{"gen_ai.usage.input_tokens":t.usage.inputTokens,"gen_ai.usage.output_tokens":t.usage.outputTokens,...t.usage.costUsd===void 0?{}:{"theorem.usage.cost_usd":t.usage.costUsd}}:{}})}function Hs(e){if(e instanceof K)return e;let t=e instanceof V?e.kind:e instanceof TypeError?`network`:`bad_response`;return new K(t===`auth`&&W(e)&&e.status===403?`permission`:{auth:`authentication`,rate_limit:`rate_limited`,network:`network`,busy:`unavailable`,unavailable:`unavailable`,timeout:`timeout`,cancelled:`cancelled`,request:`invalid_request`,unsupported:`invalid_request`}[t]??`malformed_response`,e instanceof V?e.message:U(`provider.decision_failed`),W(e)&&typeof e.status==`number`?e.status:void 0,{cause:e})}async function Us(e,t,[n,r],i,a){B(i.signal);let o=e.providers.require(r.provider,r.apiId);await zs(t,n,r.provider,i),B(i.signal);try{let e=await Zo(o,r,`decision`,a,{...i.signal?{signal:i.signal}:{},...r.timeoutMs?{timeoutMs:r.timeoutMs}:{}}).decide({apiId:r.apiId,state:i.state,questions:Object.fromEntries(Object.entries(i.questions).map(([e,t])=>[e,Fs(t,i.assets)])),...i.assets?{assets:i.assets}:{}});if(typeof e.model!=`string`||!e.model.trim())throw new K(`malformed_response`,U(`provider.decision_model_missing`));return{...e,answers:ks(e.answers,i.questions)}}catch(e){throw i.signal?.aborted?new K(`cancelled`,U(`provider.decision_ended`)):Hs(e)}}async function Ws(e,t,n){let r=ws(e,t.profile);Ms(t,r);let i=Ts(r),[a,o]=i;return await Ss({name:`decide ${o.apiId}`,attributes:Bs(r,a,o,t),traceparent:t.traceparent,metadata:t.metadata,writer:{override:n.sink,observability:r.observability,guardrails:r.guardrails}},async a=>{let o=await Us(e,r,i,t,n);return Vs(a,o),o})}function Gs(e,t){let n=e.profiles.get(t);if(n.type!==`embedding`)throw new V(`request`,`runEmbedding requires profile.type 'embedding' (got '${n.type}' for ${t})`);return n}function Ks(e,t){let n=t??e.defaultModel;if(t&&!e.allowModelSelect)throw new V(`request`,`Profile ${e.id} does not allow model selection`);let r=e.models[n];if(!r)throw new V(`request`,`Unknown model '${n}' for ${e.id}`);return[n,r]}var qs=[`query`,`document`];function Js(e){if(e!==void 0&&!qs.includes(e))throw new V(`request`,`Embedding task must be 'query' or 'document'`)}function Ys(e){return Array.isArray(e)?e:[e]}function Xs(e){return typeof e==`string`?[{type:`text`,text:e}]:e&&Array.isArray(e.parts)?e.parts:[]}function Zs(e,t,n,r){let i=In(e.inputs,r);if(i.maxInputs!==void 0&&n.length>i.maxInputs)throw new V(`request`,`Model '${t}' of ${e.id} takes at most ${i.maxInputs} inputs per request`);let a=[];for(let t of n){let n=Xs(t);if(n.length===0)throw new V(`request`,`Profile ${e.id} received an empty embedding input`);let r=[];for(let t of n)if(t.type===`text`){if(An(t.text,`embedding input`),!i.text)throw new V(`unsupported`,`Profile ${e.id} does not accept text embedding input`)}else r.push(t.type===`media`?{mimeType:t.mimeType,sizeBytes:Qn(t.data)}:{mimeType:t.mimeType});a.push(r)}let o=Ln(i,a);if(o.length>0)throw Wn(o)}function Qs(e,t){if(!e.model.trim()||e.embeddings.length!==t)throw new V(`bad_response`,`Embedding provider returned an invalid vector count`);let n=e.embeddings.map((e,t)=>{if(e.index!==t||e.dimensions!==e.values.length||e.dimensions===0)throw new V(`bad_response`,`Embedding provider returned invalid vector metadata`);if(e.values.some(e=>!Number.isFinite(e)))throw new V(`bad_response`,`Embedding provider returned a non-finite vector value`);return e});return{...e,embeddings:n}}async function $s(e,t,n={}){B(t.signal);let r=Gs(e,t.profile),[i,a]=Ks(r,t.model),o=Ys(t.input);Js(t.task);let s=e.providers.require(a.provider,a.apiId);Zs(r,i,o,mt(s,a).embeddingLimits?.(a.apiId));let c=Zo(s,a,`embedding`,n,{...t.signal?{signal:t.signal}:{}});return await Ss({name:`embed ${a.apiId}`,attributes:{"gen_ai.operation.name":`embeddings`,"gen_ai.provider.name":a.provider,"gen_ai.agent.name":r.id,"gen_ai.request.model":a.apiId,"theorem.model.id":i,"theorem.embedding.inputs":o.length,...t.task?{"theorem.embedding.task":t.task}:{}},traceparent:t.traceparent,metadata:t.metadata,writer:{override:n.sink,observability:r.observability,guardrails:r.guardrails}},async()=>Qs(await c.embed({apiId:a.apiId,input:t.input,...t.task?{task:t.task}:{},...a.options?{options:a.options}:{},...t.signal?{signal:t.signal}:{}}),o.length))}function ec(e,t,n,r,i){let a=e.profiles.get(t);if(a.type===`host`)return tc(e,r);if(a.type===`decision`||a.type===`live`||a.type===`embedding`)throw new V(`unsupported`,U(`provider.turn_profile`));let o=a.models[n??a.defaultModel];if(!o)throw new V(`config`,U(`provider.model_binding_missing`));return $o(a.providerContinuation,i?.providerState,i?.input?.history),{complete:ss(e.providers.require(o.provider,o.apiId),structuredClone(o),a.type,r,i?.providerState,a.providerContinuation,i?.input?.history).complete,forProfile:(t,n,i)=>ec(e,t,n,r,i)}}function tc(e,t){return{complete(){throw new V(`unsupported`,U(`provider.host_model`))},forProfile:(n,r,i)=>ec(e,n,r,t,i)}}function nc(e,t,n,r){return`forProfile`in e&&typeof e.forProfile==`function`?e.forProfile(t,n,r):e}function rc(){let e=e=>Math.ceil(e.length/4),t=t=>{let n={tokens:0,unknownMedia:0};for(let r of t)r.type===`text`?n.tokens+=e(r.text):n.unknownMedia+=1;return n};return{text:e,parts:t,messages:n=>{let r={tokens:0,unknownMedia:0};for(let i of n){let n=t(qe(i));r.tokens+=n.tokens,r.unknownMedia+=n.unknownMedia;for(let t of i.tool_calls??[])r.tokens+=e(t.function.name)+e(t.function.arguments)}return r}}}function ic(){return Promise.resolve(rc())}function ac(e){return e.meter??`history`}function oc(e){let t=[];for(let n=0;n<e.length;n++)e[n].role===`user`&&t.push(n);return t}async function sc(e){if(e?.historyTokens!=null)return{tokens:e.historyTokens,unknownMedia:0};let t=e?.history??[];return t.length===0?{tokens:0,unknownMedia:0}:await(await ic()).messages(t)}async function cc(e){let t=ac(e.spec);if(t===`history`)return{meter:t,...await sc(e.input)};if(e.prompt&&e.prompt.input>0)return{meter:t,tokens:e.prompt.input,unknownMedia:e.prompt.unknownMedia?.input??0};let n=e.input?.inputTokens;if(!(n==null||n<=0))return{meter:t,tokens:n,unknownMedia:0}}function lc(e,t){return e>t.compactAt*t.maxTokens}async function uc(e,t){if(t.trigger){let n={tokens:e.tokens,maxTokens:t.maxTokens,compactAt:t.compactAt,meter:e.meter,unknownMedia:e.unknownMedia};return await t.trigger(n)}return lc(e.tokens,t)}async function dc(e,t){if(e.length===0)return{toCompact:[],toRetain:[]};if(t.previousExchanges===0)return{toCompact:[...e],toRetain:[]};let n=oc(e);if(n.length===0)return{toCompact:[...e],toRetain:[]};let r;if(t.previousExchanges>=1){let e=Math.min(t.previousExchanges,n.length);r=n[n.length-e]}else{let i=t.previousExchanges*t.maxTokens,a=await ic(),o=0;r=e.length;for(let t=n.length-1;t>=0;t--){let s=n[t],c=t<n.length-1?n[t+1]:e.length,l=e.slice(s,c),u=a.messages(l).tokens;if(o+u>i)break;o+=u,r=s}}return r<=0?{toCompact:[],toRetain:[...e]}:{toCompact:e.slice(0,r),toRetain:e.slice(r)}}function fc(e){return e.metadata?.compactionSummary===!0}function pc(e){return{type:`text`,text:e}}function mc(e,t){let n=t.labels,r=new Map,i=0,a=e=>(e??[]).filter(e=>e.type===`text`||dt(t,e.mimeType)?!0:(i+=1,!1)),o=[];for(let t of e){for(let e of t.tool_calls??[])r.set(e.id,e.function.name);let e=a(t.parts);if(t.role===`tool`){let i=t.name??(t.tool_call_id?r.get(t.tool_call_id):void 0),a=t.content??``;o.push({role:`assistant`,parts:[pc(U(`compaction.tool_result`,{tool:i??``,result:a},n)),...e]});continue}let i=(t.tool_calls??[]).map(e=>pc(U(`compaction.tool_call`,{tool:e.function.name,arguments:e.function.arguments},n))),s=[...e,...i];(t.content||s.length!==0)&&o.push({role:t.role,...t.content?{content:t.content}:{},...s.length>0?{parts:s}:{},...t.name?{name:t.name}:{}})}return{history:o,droppedMedia:i}}function hc(e,t,n,r){let i={toCompact:e.toCompact,droppedMedia:t.droppedMedia,...t.tokens?{tokens:t.tokens}:{}};if(`summary`in t){let n={role:`assistant`,content:t.summary,metadata:{compactionSummary:!0}};return{...i,outcome:`compacted`,summary:t.summary,history:[n,...e.toRetain]}}return n>r.maxTokens?{...i,outcome:`dropped`,failure:t.failure,history:[...e.toCompact.filter(fc),...e.toRetain]}:{...i,outcome:`deferred`,failure:t.failure,history:[...e.toCompact,...e.toRetain]}}var gc={[Tn.unscannable]:`egress.hint_unscannable`,[Tn.providerToolLeak]:`egress.hint_provider_tool_leak`},_c=[Qt.canary_leak,Qt.prompt_leak],vc=3,yc=120,bc=`detect.`;function xc(e,t,n){let r=gc[e.rule];if(r)return U(r,{},n);let i=e.rule.startsWith(bc)?e.rule.slice(7):e.rule;if(en(i))return t.hints?.[i]??U(`detect.hint.${i}`,{},n);let a=t.host?.find(({id:e})=>e===i),o=a?.label??e.label??i;return a?.hint??U(`detect.hint.own`,{label:o},n)}function Sc(e){let t=e.flatMap(({rule:e,match:t})=>t&&!_c.includes(e)?[t]:[]);return[...new Set(t)].slice(0,vc).map(e=>JSON.stringify(e.length>yc?e.slice(0,yc):e))}function Cc(e,t,n){let r=new Map;for(let t of e)r.set(t.rule,[...r.get(t.rule)??[],t]);let i=[...r.values()].map(e=>{let r=xc(e[0],t,n),i=Sc(e);return i.length>0?U(`egress.rejection_found`,{hint:r,matches:i.join(`, `)},n):r});return U(`egress.rejection`,{found:i.join(`
|
|
5
|
+
`)},n)}function wc(e){if(e.type!==`live`&&e.type!==`host`&&e.type!==`decision`&&e.type!==`embedding`)return e.outputs}var Tc=[`inject`,`abort`,`deny`,`confirm`,`mutate`,`labelFailed`,`waitFor`],Ec=Object.freeze({pre_turn:Object.freeze([`inject`,`abort`]),pre_tool:Object.freeze([`abort`,`deny`,`confirm`,`mutate`,`waitFor`]),post_tool:Object.freeze([`inject`,`abort`,`deny`,`mutate`,`labelFailed`]),before_end:Object.freeze([`inject`,`abort`]),post_turn:Object.freeze([])}),Dc=new Set([...Tc,`injectId`,`released`]);function Oc(e,t){return Ec[e].includes(t)}function J(e,t,n,r){e.push({code:t,field:n,message:r})}function kc(e,t){if(!W(e)){J(t,`inject_invalid_messages`,`inject`,`inject entry must be an object`);return}if(e.role===`tool`){J(t,`inject_invalid_messages`,`inject`,`inject messages with role "tool" are rejected`);return}if(e.role!==`user`&&e.role!==`assistant`&&e.role!==`system`){J(t,`inject_invalid_messages`,`inject`,`inject role not allowed: ${String(e.role)}`);return}let n={role:e.role};if(e.content!==void 0){if(typeof e.content!=`string`){J(t,`inject_invalid_messages`,`inject`,`inject content must be a string when present`);return}n.content=e.content}if(e.parts!==void 0){if(!Array.isArray(e.parts)){J(t,`inject_invalid_messages`,`inject`,`inject parts must be an array when present`);return}n.parts=e.parts}if(e.tool_calls!==void 0){if(!Array.isArray(e.tool_calls)){J(t,`inject_invalid_messages`,`inject`,`inject tool_calls must be an array when present`);return}n.tool_calls=e.tool_calls}if(e.name!==void 0){if(typeof e.name!=`string`){J(t,`inject_invalid_messages`,`inject`,`inject name must be a string`);return}n.name=e.name}if(e.metadata!==void 0){if(!W(e.metadata)){J(t,`inject_invalid_messages`,`inject`,`inject metadata must be a plain object`);return}n.metadata={...e.metadata}}return e.tool_call_id!==void 0&&J(t,`inject_invalid_messages`,`inject`,`inject tool_call_id is rejected (not a tool-role message)`),n}function Ac(e,t){if(!Array.isArray(e)){J(t,`inject_invalid_messages`,`inject`,`inject must be an array of history messages`);return}let n=[];for(let r of e){let e=kc(r,t);e&&n.push(e)}return n.length>0?n:void 0}function jc(e,t){if(e!==void 0){if(typeof e==`number`&&Number.isInteger(e)&&e>=0)return e;J(t,`inject_released_invalid`,`released`,`released must be a whole number of characters, 0 or more; ignored`)}}function Mc(e,t){let n=Ac(e.inject,t);if(!n)return;let r=jc(e.released,t),i={messages:n,...r===void 0?{}:{released:r}};if(e.injectId===void 0)return i;if(typeof e.injectId==`string`&&e.injectId.trim())return{id:e.injectId,...i};J(t,`inject_id_invalid`,`injectId`,`injectId must be a non-empty string; inject refused`)}function Nc(e,t,n){if(!(`inject`in e)||e.inject===void 0){e.injectId!==void 0&&J(n.warnings,`inject_id_invalid`,`injectId`,`injectId without inject ignored`),e.released!==void 0&&J(n.warnings,`inject_released_invalid`,`released`,`released without inject ignored`);return}let{stage:r,injectAllowed:i,injectWouldExceedMaxSteps:a}=t;if(!Oc(r,`inject`))J(n.warnings,`affordance_not_allowed`,`inject`,`inject is not allowed at stage ${r}`);else if(!i)J(n.warnings,`inject_not_allowed`,`inject`,`inject gate is closed for this profile/session`);else if(a)J(n.warnings,`inject_rejected_max_steps`,`inject`,`inject rejected: another model step would exceed maxSteps`);else{let t=Mc(e,n.warnings);t&&(n.inject=t)}}function Pc(e,t,n){if(`abort`in e&&e.abort!==void 0){if(!Oc(t,`abort`))J(n.warnings,`affordance_not_allowed`,`abort`,`abort is not allowed at post_turn`);else if(e.abort===!0)n.abort=!0;else if(W(e.abort)){let t=typeof e.abort.reason==`string`&&e.abort.reason.trim()?e.abort.reason.trim():void 0;n.abort=!t||{reason:t}}else e.abort!==!1&&J(n.warnings,`abort_invalid`,`abort`,`abort must be boolean or { reason?: string }`)}}function Fc(e,t,n){`deny`in e&&e.deny!==void 0&&(Oc(t,`deny`)?W(e.deny)?n.deny={code:typeof e.deny.code==`string`&&e.deny.code.trim()?e.deny.code.trim():`not_authorized`,message:typeof e.deny.message==`string`&&e.deny.message.trim()?e.deny.message.trim():`Tool execution not authorized`}:J(n.warnings,`deny_invalid`,`deny`,`deny must be an object`):J(n.warnings,`affordance_not_allowed`,`deny`,`deny is not allowed at stage ${t}`))}function Ic(e,t,n){`labelFailed`in e&&e.labelFailed!==void 0&&(Oc(t,`labelFailed`)?e.labelFailed===!0?n.labelFailed=!0:e.labelFailed!==!1&&J(n.warnings,`label_failed_invalid`,`labelFailed`,`labelFailed must be true`):J(n.warnings,`affordance_not_allowed`,`labelFailed`,`labelFailed is not allowed at stage ${t}`))}function Lc(e,t,n){if(`confirm`in e&&e.confirm!==void 0){if(!Oc(t,`confirm`))J(n.warnings,`affordance_not_allowed`,`confirm`,`confirm is not allowed at stage ${t}`);else if(e.confirm===!0)n.confirm={};else if(W(e.confirm)){let t=typeof e.confirm.summary==`string`&&e.confirm.summary.trim()?e.confirm.summary.trim():void 0;n.confirm=t?{summary:t}:{}}else J(n.warnings,`confirm_invalid`,`confirm`,`confirm must be true or { summary?: string }`)}}function Rc(e,t,n){`waitFor`in e&&e.waitFor!==void 0&&(Oc(t,`waitFor`)?!Array.isArray(e.waitFor)||!e.waitFor.every(e=>typeof e==`string`&&e.trim()!==``)?J(n.warnings,`wait_for_invalid`,`waitFor`,`waitFor must be an array of call ids`):e.waitFor.length>0&&(n.waitFor=[...new Set(e.waitFor)]):J(n.warnings,`affordance_not_allowed`,`waitFor`,`waitFor is not allowed at stage ${t}`))}var zc={pre_tool:`input`,post_tool:`output`};function Bc(e){return e in zc?zc[e]:void 0}function Vc(e,t,n){let{stage:r}=t;if(!(`mutate`in e)||e.mutate===void 0)return;if(!Oc(r,`mutate`)){J(n.warnings,`affordance_not_allowed`,`mutate`,`mutate is not allowed at stage ${r}`);return}let i=Bc(r);i?!W(e.mutate)||e.mutate[i]===void 0?J(n.warnings,`mutate_invalid`,`mutate`,`mutate must be { ${i}: unknown } at stage ${r}`):t.mutable===!1?J(n.warnings,`mutate_invalid`,`mutate`,`there is no ${i} to replace at this ${r} fire`):n.mutate=i===`input`?{input:e.mutate.input}:{output:e.mutate.output}:J(n.warnings,`mutate_invalid`,`mutate`,`no mutate subject is defined at stage ${r}`)}function Hc(e){let t=[],n={warnings:t},{stage:r,result:i}=e;if(i==null)return n;if(!W(i))return J(t,`result_invalid`,`result`,`StageResult must be a plain object`),n;for(let e of Object.keys(i))Dc.has(e)||J(t,`unknown_field`,e,`unknown StageResult field "${e}" ignored`);return Nc(i,e,n),Pc(i,r,n),Fc(i,r,n),Lc(i,r,n),Vc(i,e,n),Ic(i,r,n),Rc(i,r,n),n.deny&&n.confirm&&(J(t,`confirm_invalid`,`confirm`,`confirm ignored because deny is set`),delete n.confirm),n}function Uc(e,t){let n={type:`stage`,stage:e};return t&&(t.callId!==void 0&&(n.callId=t.callId),t.toolName!==void 0&&(n.toolName=t.toolName),t.callNotStarted!==void 0&&(n.callNotStarted=t.callNotStarted),t.awaiting!==void 0&&(n.awaiting=t.awaiting),t.gate!==void 0&&(n.gate=t.gate),t.stop!==void 0&&(n.stop=t.stop),t.injected!==void 0&&(n.injected=t.injected),t.released!==void 0&&(n.released=t.released)),n}function Wc(e){return e.flatMap(e=>e.messages)}function Gc(e,t,n){let r=t.flatMap(e=>e.id===void 0?[]:[{id:e.id}]);if(r.length!==0||n?.released!==void 0)return Uc(e,{...n,...r.length>0?{injected:r}:{}})}function Kc(e,t){return t===void 0||t<=0?!1:e>=t}function qc(e,t){return t===`inject`?e.inject.length>0:!!e[t]}function Jc(e){let t={warnings:e.flatMap(e=>e.warnings),inject:[]};for(let n of e)n.abort!==void 0&&(t.abort=n.abort),n.deny&&(t.deny=n.deny),n.confirm&&(t.confirm=n.confirm),n.mutate&&(t.mutate=n.mutate),n.labelFailed&&(t.labelFailed=!0),n.waitFor&&(t.waitFor=[...new Set([...t.waitFor??[],...n.waitFor])]),n.inject&&t.inject.push(n.inject);return t.deny&&t.confirm&&(J(t.warnings,`confirm_invalid`,`confirm`,`confirm ignored because deny is set`),delete t.confirm),t}async function Yc(e,t,n,r){let i=[];for(let a of e){let e;try{e=await a({...t})}catch(e){throw B(r),e}B(r),i.push(Hc({...n,result:e}))}return i}async function*Xc(e){let{stage:t,step:n,history:r,handlers:i,guardrails:a,injectAllowed:o,injectWouldExceedMaxSteps:s,mutable:c,host:l,signal:u,span:d,...f}=e;if(B(u),yield Uc(t,{callId:f.callId,toolName:f.tool,callNotStarted:f.callNotStarted,awaiting:f.awaiting,gate:f.gate,stop:f.stop}),i.length===0)return d?.event(`theorem.stage`,{stage:t,affordance:[]}),{warnings:[],inject:[]};let p={stage:t,step:n,history:r,host:l,...f},m=d?.msSinceStart(),h=Jc(await Yc(i,p,{stage:t,injectAllowed:o,injectWouldExceedMaxSteps:s,mutable:c},u));if(d?.event(`theorem.stage`,{stage:t,...m===void 0?{}:{hook_ms:d.msSinceStart()-m},affordance:Tc.filter(e=>qc(h,e)),...h.warnings.length>0?{warnings:h.warnings.map(e=>e.code)}:{}}),h.warnings.length>0&&(yield{...Uc(t,{callId:f.callId,toolName:f.tool}),stageWarnings:h.warnings}),h.inject.length===0)return h;let g=mn(`injected`,I(a).detect),_=h.inject.map(e=>({...e,messages:br(e.messages,g)})),v=g.found(),y=fn(`injected`,v);if(y&&(d?.event(`theorem.guardrail`,A(y)),yield G(y)),v.action===`block`)throw Sr(`injected`);return{...h,inject:_}}function Zc(e,t,n){if(e.currentHistory.push(...t),n!==void 0)for(let r of t)typeof r.content==`string`&&e.replyMessages.push({message:r,at:n})}function Qc(e){let t=e.flatMap(e=>e.released===void 0?[]:[e.released]);return t.length>0?Math.min(...t):void 0}function $c(e,t){let n=[...e],r=t;for(let e=n.length-1;e>=0&&r>0;--e){let t=n[e];if(t?.type!==`text`)continue;let i=Math.max(0,t.text.length-r);r-=t.text.length-i,i===0?n.splice(e,1):n[e]={...t,text:t.text.slice(0,i)}}return n}function el(e,t){if(t===void 0||t>=e.replyText.length)return;let n=e.replyText.length-t;e.replyText=e.replyText.slice(0,t),e.released=e.released.slice(0,Math.max(0,e.released.length-n)),e.attemptEvents=$c(e.attemptEvents,n);let r=[];for(let{message:n,at:i}of e.replyMessages){let a=typeof n.content==`string`?n.content:``,o=a.slice(0,Math.max(0,t-i)),s=e.currentHistory.indexOf(n);if(!(s<0)){if(o){let t=o===a?n:{...n,content:o};e.currentHistory[s]=t,r.push({message:t,at:i})}else e.currentHistory.splice(s,1)}}return e.replyMessages=r,t}function*tl(e,t,n,r){let i=Wc(n);if(i.length===0)return 0;let a=el(e,Qc(n));e.currentHistory.push(...i);let o=Gc(t,n,{...r,...a===void 0?{}:{released:a}});return o&&(e.allEmittedEvents.push(o),yield o),i.length}async function*nl(e){let{profile:t,generation:n,state:r,onStage:i,host:a,reply:o,replyAt:s,...c}=e;B(c.signal);let l=Xc({...c,history:r.currentHistory,handlers:i?[i]:[],guardrails:t.guardrails,injectAllowed:te(t),host:a??n.host,span:r.trace.root}),u=await l.next();for(;!u.done;)r.allEmittedEvents.push(u.value),yield u.value,u=await l.next();let d=u.value;return o&&Wc(d.inject).length>0&&Zc(r,o,s),{abort:d.abort,injectCount:yield*tl(r,c.stage,d.inject),warnings:d.warnings}}function rl(e,t){t.allEmittedEvents.push(e),t.attemptEvents.push(e)}function il(e,t){if(t.length===0)return;let n=t.every(e=>e.type===`text`);e.currentHistory.push(n?{role:`user`,content:t.map(e=>e.type===`text`?e.text:``).join(``)}:{role:`user`,parts:[...t]})}function al(e){let{profile:t,generation:n}=e,r=lr(e.tools,t),i={tools:e.tools,trace:e.trace,currentHistory:[...n.history??[]],stepCount:0,resumes:0,toolResults:[],allEmittedEvents:e.allEmittedEvents??[],attemptEvents:[],released:``,replyText:``,replyMessages:[],givenUrls:an(),destinations:_i(),canaryGiven:!1,canaryScanned:new WeakSet,...r?{ownTools:r}:{},...e.agents?{agents:e.agents}:{}};return t.type===`text`&&(il(i,n.input),n.input=[]),i}function ol(e,t,n={}){return t.map(t=>{if(e.get(t)?.type!==`builtin`)throw new V(`config`,`Builtin '${t}' is not registered`);let r=n[t];return r?{id:t,args:r}:{id:t}})}function sl(e,t,n){return{model:t.model,apiId:t.apiId,stream:t.stream,thinking:t.thinking,summaries:t.summaries,maxOutputTokens:t.maxOutputTokens,temperature:t.temperature,builtins:ol(e,t.builtins,t.builtInArgs),sessionId:t.sessionId,system:n,input:t.input,history:t.history,wireTools:t.tools.wire,structured:t.structured,image:t.image,speech:t.speech,live:t.live}}var cl=t({accepted:w,preparedInput:z});function Y(){let e=new V(`unavailable`,``);return e.message=be(e),e}async function ll(e){let t=e=>Array.isArray(e)?e.map(t):e&&typeof e==`object`?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0).sort(([e],[t])=>e<t?-1:+(e>t)).map(([e,n])=>[e,t(n)])):e,n=z.parse(t(fl(e))),r=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(JSON.stringify(n)));return Array.from(new Uint8Array(r),e=>e.toString(16).padStart(2,`0`)).join(``)}var ul=pe.tool.transform((e,t)=>e.tool.phase===`complete`||e.tool.phase===`error`?{...e,tool:e.tool}:(t.addIssue({code:`custom`}),a)),dl=t({event:ul,effects:l([`not_started`,`completed`,`unknown`]),replay:t({modelResult:t({finding:f(),data:z.optional(),parts:s(v).optional(),modelText:f().optional(),provenance:Qe.optional(),suspicious:s(me).optional()}).optional(),outputRaw:z.optional(),failure:t({code:f(),kind:k,message:f(),error:f().optional(),details:z.optional()}).optional(),awaiting:i().optional(),denied:o(!0).optional(),callNotStarted:i().optional(),aborted:r([i(),t({reason:f().optional()})]).optional(),pendingInject:s(t({id:f().optional(),messages:s(ye),released:d().int().nonnegative().optional()})).optional()})});function fl(e){let t=new Set,n=e=>{if(!e||typeof e!=`object`)return e;if(t.has(e))throw Y();let r=Object.getPrototypeOf(e);if(!Array.isArray(e)&&r!==Object.prototype&&r!==null||Object.hasOwn(e,`__proto__`))throw Y();t.add(e);try{if(Array.isArray(e))return e.map(n);let t=Object.entries(Object.getOwnPropertyDescriptors(e));if(t.some(([,e])=>e.get||e.set))throw Y();return Object.fromEntries(t.filter(([,e])=>e.enumerable&&e.value!==void 0).map(([e,t])=>[e,n(t.value)]))}finally{t.delete(e)}};return z.parse(n(e))}var pl=class{outcome;constructor(e){this.outcome=e}};function ml(e){return new V(`unavailable`,U(`tool.execution_uncertain`),{copy:{key:`tool.execution_uncertain`},cause:e})}var hl=class{coordinator;operation;accepted;signal;claim;committed=!1;writeFailed=!1;terminal;constructor(e,t,n,r){this.coordinator=e,this.operation=t,this.accepted=n,this.signal=r}async beginBody(e){B(this.signal);let t={...this.operation,invocation:{accepted:this.accepted,preparedInput:fl(e)}},n=await this.coordinator.begin(t);if(n.kind===`settled`)throw new pl(n.outcome);if(n.kind===`running`||n.kind===`uncertain`)throw ml();if(n.kind!==`acquired`||typeof n.claimToken!=`string`||!n.claimToken)throw Y();return this.claim={...t,claimToken:n.claimToken},B(this.signal),this.claim}observe(e){if(e.type!==`tool`)return!0;if(e.tool.phase===`complete`||e.tool.phase===`error`)return this.terminal={...e,tool:e.tool},!1;if(this.claim&&e.tool.phase===`gate`)throw ml();return!0}async finish(e){if(e.gated){if(this.claim)throw ml();return}if(!this.terminal)throw Y();let{modelResult:t,outputRaw:n,failure:r,awaiting:i,denied:a,callNotStarted:o,aborted:s,pendingInject:c}=e,l=this.claim?r?`unknown`:`completed`:`not_started`,u={event:this.terminal,effects:l,replay:{modelResult:t,outputRaw:n,failure:r,awaiting:i,denied:a,callNotStarted:o,aborted:s,pendingInject:c}};this.writeFailed=!0;let d=dl.parse(fl(u));return this.claim?await this.coordinator.settle(this.claim,d):await this.coordinator.settleNotStarted(this.operation,d),this.committed=!0,d.event}replay(e){let t=dl.parse(fl(e.outcome)),{operationId:n,callId:r,toolId:i}=this.operation;if(t.event.tool.operationId!==n||t.event.tool.callId!==r||t.event.tool.name!==i)throw Y();return this.committed=!0,t}failure(e){return this.claim&&!this.committed?ml(e):e}async close(){this.claim&&!this.committed&&await this.coordinator.markUncertain(this.claim,this.writeFailed?`settlement_write_failed`:`execution_interrupted`)}};async function*gl(e,t,n,r,i,a){if(!e)return yield*i();let o=w.parse(fl(n)),s={...t,invocationHash:await ll(o)},c=new hl(e,s,o,r);B(r);let l=await e.lookup(s);if(B(r),l?.kind===`running`||l?.kind===`uncertain`)throw ml();if(l?.kind===`settled`){if(!a)throw Y();let e=c.replay(new pl(l.outcome));return await a(e),B(r),yield e.event,e.replay}let u=i(e=>c.beginBody(e));try{for(;;){let e=await u.next();if(e.done){let t=await c.finish(e.value);return t&&(yield t),e.value}c.observe(e.value)&&(yield e.value)}}catch(e){if(e instanceof pl){if(!a)throw Y();let t=c.replay(e);return await a(t),yield t.event,t.replay}throw c.failure(e)}finally{try{await c.close()}finally{await u.return({})}}}function*_l(e,t){t.kind===`progress`?yield R(e,{phase:`progress`,data:t.data}):t.kind===`draft`?yield R(e,{phase:`draft`,text:t.text}):t.kind===`trace`?yield R(e,{phase:`trace`,step:t.step}):t.kind===`artifact`?yield R(e,{phase:`artifact`,artifact:t.artifact}):t.kind===`warning`&&(yield R(e,{phase:`warning`,warning:t.warning}))}var vl=class{base;checks;drafts;constructor(e,t){this.base=e,this.checks=t,t?.drafts&&(this.drafts=new Vr(()=>yl(t)))}async*show(e){if(e.kind===`draft`)yield*this.draft(e.text);else if(!(e.kind===`progress`&&(yield*this.progressStops(e.data)))){if(e.kind===`artifact`){let t=yield*this.shown(e.artifact);t.shown&&(yield*_l(this.base,{...e,artifact:t.value}))}else if(e.kind===`trace`){let t=yield*this.shown(e.step);t.shown&&(yield*_l(this.base,{...e,step:t.value}))}else yield*_l(this.base,e)}}*end(){let e=this.drafts?.end();e&&(yield R(this.base,{phase:`draft`,text:e}))}async*draft(e){let t=await this.drafts?.read(e);t&&(yield R(this.base,{phase:`draft`,text:t}))}*shown(e){let t=this.checks;if(!t)return{shown:!0,value:e};let n=We(e,t.provenance,t.policy,t.shown);return n.event&&(yield{type:`guardrail`,guardrail:n.event}),`value`in n?{shown:!0,value:n.value}:{shown:!1}}*progressStops(e){let t=this.checks;if(!t)return!1;let{event:n,text:r}=vt(``,e,t.provenance,t.policy,t.boundary,t.callableTools);return r!==void 0&&(n===void 0||n.action===`flag`)?!1:(n&&(yield{type:`guardrail`,guardrail:n}),!0)}};function yl(e){return Pn(e.policy,{stage:`tool_result`,trust:`untrusted`,profileId:e.profileId,provenance:e.provenance},e.boundary,{callable:e.callableTools})}var bl=5242880,xl=10485760,Sl=15e3,Cl=new Set([`image/png`,`image/jpeg`,`image/gif`,`image/webp`]);async function wl(e,t){let n=Number(e.headers.get(`content-length`));if(Number.isFinite(n)&&n>t){await e.body?.cancel().catch(()=>{});return}if(!e.body)return new Uint8Array(await e.arrayBuffer());let r=e.body.getReader(),i=[],a=0;for(;;){let{done:e,value:n}=await r.read();if(e)break;if(a+=n.byteLength,a>t){await r.cancel().catch(()=>{});return}i.push(n)}let o=new Uint8Array(a),s=0;for(let e of i)o.set(e,s),s+=e.byteLength;return o}async function Tl(e,t){let n=AbortSignal.timeout(Sl),r=t.signal?AbortSignal.any([t.signal,n]):n,i=await it(e,{method:`GET`,headers:{Accept:`image/*`},signal:r},{policy:nt(t),followRedirects:!0,resolveHost:t.resolveHost});if(!i.ok)throw Error(`HTTP ${i.status}`);let a=(i.headers.get(`content-type`)??``).split(`;`)[0]?.trim().toLowerCase();if(!a||!Cl.has(a))throw await i.body?.cancel().catch(()=>{}),Error(`not a png, jpeg, gif or webp image (${a||`no type`})`);let o=await wl(i,bl);if(!o)throw Error(`larger than ${bl} bytes`);return{type:`image`,mimeType:a,data:xn(o)}}function El(e){if(typeof e!=`string`)return{reason:`an address that is not text`};try{if(new URL(e).protocol===`https:`)return{url:e}}catch{}return{reason:`${e.slice(0,80)}: not an absolute https address`}}async function Dl(e,t,n){let r=[],i=[];try{for(let n of new Set(e(t))){let e=El(n);`url`in e?i.push(e.url):r.push(e.reason)}}catch(e){return{parts:[],urls:[],warning:Ol([`the images hook threw: ${String(e)}`])}}let a=i.slice(0,4),o=await Promise.allSettled(a.map(e=>Tl(e,n))),s=[],c=[],l=0;return o.forEach((e,t)=>{let n=a[t];if(e.status===`rejected`){let t=e.reason instanceof Error?e.reason.message:String(e.reason);r.push(`${new URL(n).hostname}: ${t}`);return}let i=`data`in e.value?e.value.data.length:0;l+i>xl?r.push(`${new URL(n).hostname}: past the ${xl} byte total`):(l+=i,s.push(e.value),c.push(n))}),{parts:s,urls:c,...r.length?{warning:Ol(r)}:{}}}function Ol(e){return{code:`images_unfetched`,severity:`warning`,message:`Some pictures the tool named were left out. ${e.join(`; `)}`}}function kl(e){return typeof e?.granted==`boolean`}function Al(e){return e?.granted===!0}function jl(e){return e?.granted===!1}function Ml(e,t){return t?t.includes(`*`)||t.includes(e):!1}function Nl(e,t){let n=Et(e.labels?.request,{input:t});return{access:e.access,...n?{request:n}:{}}}function Pl(e,t,n,r,i){return t===`auto`||(t===`always_confirm`?r?.granted===!0:Ml(e,n))?null:{kind:`permission`,tool:e,permission:t,...i}}function Fl(e,t,n){return it(e,t,{policy:n.network,followRedirects:!1,resolveHost:n.resolveHost,...n.fetchFn?{fetchFn:n.fetchFn}:{}})}function Il(e,t){if(typeof e!=`string`)throw Error(`OAuth ${t} is missing`);let n;try{n=new URL(e)}catch{throw Error(`OAuth ${t} "${e}" is not a URL`)}if(n.protocol!==`https:`||n.hash)throw Error(`OAuth ${t} "${e}" must be an https URL without a fragment`);return n}var Ll=/^[\x20\x21\x23-\x5B\x5D-\x7E]*$/;async function Rl(e){let t;try{t=await e.json()}catch{return``}if(!W(t))return``;let{error:n,error_description:r}=t;return typeof n!=`string`||!Ll.test(n)?``:typeof r==`string`&&Ll.test(r)?`: ${n} (${r})`:`: ${n}`}function zl(e,t){let n=e=>{throw Error(`Token response from ${t} ${e}`)};if(!W(e))return n(`is not a JSON object`);let r=e;(typeof r.access_token!=`string`||r.access_token.length===0)&&n(`has no access_token`),(typeof r.token_type!=`string`||r.token_type.toLowerCase()!==`bearer`)&&n(`has token_type "${String(r.token_type)}", not Bearer`);let i=r.expires_in;i!==void 0&&(typeof i!=`number`||!Number.isFinite(i)||i<0)&&n(`has an expires_in that is not a number of seconds`);for(let e of[`refresh_token`,`scope`])r[e]!==void 0&&typeof r[e]!=`string`&&n(`has a ${e} that is not a string`);return r}function Bl(e){return e===void 0?[]:e.split(` `).filter(e=>e.length>0)}function Vl(e,t,n){if(t.length===0)return;let r=Bl(e).filter(e=>!t.includes(e));if(r.length>0)throw Error(`Token response from ${n} grants scopes that were not asked for: ${r.join(`, `)}`)}async function Hl(e,t,n,r,i){let{clientSecret:a,...o}=t,s=new URLSearchParams({...n,client_id:t.clientId,...a===void 0?{}:{client_secret:a},resource:t.resource}),c=await Fl(t.tokenEndpoint,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`},body:s.toString()},e);if(!c.ok)throw Error(`${i?`Token refresh failed`:`Token exchange failed`} at ${t.tokenEndpoint} (HTTP ${c.status})${await Rl(c)}`);let l=zl(await c.json(),t.tokenEndpoint);return Vl(l.scope,r,t.tokenEndpoint),{tokens:l,credential:{type:`oauth2`,...o,accessToken:l.access_token,refreshToken:l.refresh_token??i?.refreshToken,expiresAt:l.expires_in===void 0?void 0:Date.now()+l.expires_in*1e3,scope:l.scope??i?.scope??(r.length>0?r.join(` `):void 0)}}}function Ul(e){return Il(e.tokenEndpoint,`token_endpoint`),Il(e.resource,`resource`),Hl(e,{issuer:e.issuer,resource:e.resource,tokenEndpoint:e.tokenEndpoint,clientId:e.clientId,...e.clientSecret===void 0?{}:{clientSecret:e.clientSecret}},{grant_type:`refresh_token`,refresh_token:e.refreshToken,...e.scope?{scope:e.scope}:{}},Bl(e.scope),{refreshToken:e.refreshToken,scope:e.scope})}function Wl(e,t){let n;try{n=new URL(e)}catch{return!1}if(n.origin!==t.origin)return!1;let r=n.pathname.replace(/\/$/,``);return t.pathname===r||t.pathname.startsWith(`${r}/`)||r===``}var Gl={now:Date.now,wait:Wa},Kl=new WeakMap;function ql(e){let t=Kl.get(e);if(t)return t;let n={places:[],heldUntil:0,waiting:new Set};return Kl.set(e,n),n}function Jl(e,t,n){e.places=e.places.filter(e=>e.opensAt>n);let r=e.places.length<t.requests?n:Math.min(...e.places.map(e=>e.opensAt));return Math.max(r,e.heldUntil)}async function Yl(e,t,n,r){let i=new AbortController,a=()=>i.abort();e.waiting.add(a);try{await r.wait(t,n?AbortSignal.any([n,i.signal]):i.signal)}catch(e){if(n?.aborted||!i.signal.aborted)throw e}finally{e.waiting.delete(a)}}async function Xl(e,t,n,r=Gl){let i=ql(e),a=r.now()+Ba;for(;;){let e=r.now(),o=Jl(i,t,e);if(o<=e){let e={opensAt:1/0};return i.places.push(e),{answered:n=>{let a=r.now();e.opensAt=a+t.windowMs;let o=n?.status===429?Ya(n.headers,a):void 0;o!==void 0&&(i.heldUntil=Math.max(i.heldUntil,a+o));for(let e of i.waiting)e()}}}if(o>a&&o!==1/0)return{full:!0,limit:t,opensInMs:o-e};if(e>=a)return{full:!0,limit:t,opensInMs:void 0};await Yl(i,Math.min(o,a)-e,n,r)}}async function Zl(e,t){try{let n=await t;return e?.answered(n),n}catch(t){throw e?.answered(),t}}function Ql(e){return{handlers:[],profile:e.profile,step:e.turn?.step??1,history:()=>[],injectAllowed:!1,host:e.host,signal:e.signal}}async function*$l(e){let{tool:t,ctx:n,base:r,stages:i}=e,a,o=Al(n.resume)&&n.resume?.edited===void 0&&n.resume?.gateKind!==`permission`&&n.resume?.gateKind!==`auth`;if(t.preTool&&!o&&(a=await t.preTool(e.input,n)??void 0),!i&&a===void 0)return{ok:!0,input:e.input};let s=yield*eu({stages:i??Ql(n),toolName:t.name,callId:r.callId,input:e.input,toolPreTool:a,details:Nl(t,e.input)});if(!s.ok){if(s.kind===`gated`){if(`input`in s){let e=s.input,r=t.input.safeParse(Vn(e));if(!r.success)return{ok:!1,kind:`failed`,failure:{code:`invalid_input`,kind:`bad_response`,message:U(`tool.input_invalid_after_mutate`,{},n.profile.labels),details:r.error.flatten()}};s.gate={...s.gate,...Nl(t,r.data),preparedArguments:w.parse(fl(Vn(e)))}}yield Uc(`pre_tool`,{callId:r.callId,toolName:t.name,callNotStarted:!0,gate:s.gate}),yield R(r,{phase:`gate`,gate:s.gate})}return s}let c=s.mutated?t.input.safeParse(Vn(s.input)):void 0;if(c&&!c.success)return{ok:!1,kind:`failed`,failure:{code:`invalid_input`,kind:`bad_response`,message:U(`tool.input_invalid_after_mutate`,{},e.ctx.profile.labels),details:c.error.flatten()}};let l=await tu(i,r.callId,t.name,s.waitFor,n.profile.labels);return l?{ok:!1,kind:`failed`,failure:l}:{ok:!0,input:c?c.data:s.input}}async function*eu(e){let{stages:t,toolName:n,callId:r,input:i,toolPreTool:a,details:o}=e,s=yield*Xc({stage:`pre_tool`,step:t.step,history:t.history(),handlers:[...a===void 0?[]:[()=>a],...t.handlers],guardrails:t.profile.guardrails,injectAllowed:!1,host:t.host,signal:t.signal,span:t.span,callId:r,tool:n,input:i,...t.stepCalls?{stepCalls:t.stepCalls}:{}});if(s.abort)return{ok:!1,kind:`aborted`,aborted:s.abort};if(s.deny)return{ok:!1,kind:`failed`,failure:{...s.deny,kind:`blocked`},denied:!0};if(s.confirm)return{ok:!1,kind:`gated`,gate:{kind:`confirmation`,tool:n,...s.confirm.summary?{summary:s.confirm.summary}:{},...o},...s.mutate&&`input`in s.mutate?{input:s.mutate.input}:{}};let c=s.waitFor?{waitFor:s.waitFor}:{};return s.mutate&&`input`in s.mutate?{ok:!0,input:s.mutate.input,mutated:!0,...c}:{ok:!0,input:i,mutated:!1,...c}}async function tu(e,t,n,r,i){if(!r)return;let a=e?.wait?await e.wait(t,r):{ok:!1,reason:`unknown`,callIds:[...r]};if(!a.ok)return{code:a.reason===`unknown`?`wait_unknown`:`wait_cycle`,kind:`request`,message:U(a.reason===`unknown`?`tool.wait_unknown`:`tool.wait_cycle`,{tool:n,calls:a.callIds.join(`, `)},i)}}async function*nu(e){let{stages:t,toolName:n,callId:r,mutable:i,...a}=e,o=yield*Xc({...a,stage:`post_tool`,step:t.step,history:t.history(),handlers:t.handlers,guardrails:t.profile.guardrails,injectAllowed:t.injectAllowed,injectWouldExceedMaxSteps:t.injectWouldExceedMaxSteps,mutable:i,host:t.host,signal:t.signal,span:t.span,callId:r,tool:n});return{...o.abort===void 0?{}:{abort:o.abort},...o.deny?{deny:o.deny}:{},...o.mutate&&`output`in o.mutate?{mutate:o.mutate}:{},...o.labelFailed?{labelFailed:!0}:{},inject:o.inject}}async function*ru(e){yield Uc(`pre_tool`,{callId:e.callId,toolName:e.toolName,callNotStarted:!0,gate:e.gate});let t=e.gate.kind===`auth`?U(`sign_in.pending`,{service:e.gate.authChallenge.service},e.labels):void 0;return yield R(e.base,{phase:`gate`,gate:e.gate,...t?{readBack:t}:{}}),t}function iu(e,t){if(!t)return e;let n=new URL(e);return n.searchParams.set(t.name,t.value),n}function au(e,t,n){let r=e.headerName??n.headerName,i=e.headerPrefix??n.headerPrefix;return{[r]:`${i}${t}`}}function ou(e,t,n,r){return{kind:`auth`,tool:e,authChallenge:{slot:t.slot,authType:t.type,service:t.service,message:n,issuer:r?.issuer??t.preResolved?.issuer,resource:r?.resource??t.preResolved?.resource,requiredScopes:t.scopes}}}function su(e,t,n,r,i){return r===`gate`?{headers:{},unauthenticated:!0,gate:ou(e,t,n,i)}:r===`fail`?{headers:{},unauthenticated:!0,failureMessage:n}:{headers:{},unauthenticated:!0,modelMessage:n}}function cu(e,t){let n=t.type===`bearer`?t.token:t.key;if(e.queryParam!==void 0)return{headers:{},query:{name:e.queryParam,value:n}};if(t.type===`bearer`)return{headers:au(e,n,{headerName:`Authorization`,headerPrefix:`Bearer `})};let r=t.headerName??e.headerName??`Authorization`,i=t.headerPrefix??e.headerPrefix??``;return{headers:{[r]:`${i}${n}`}}}function lu(e,t){if(e.type!==`bearer`&&e.type!==`api_key`)return;let n=e.type===`bearer`?e.token:e.key;return{...cu(t,e),secret:n}}var uu=new Map;function du(e,t,n,r){let i=`${e.tokenEndpoint}\n${t}`,a=uu.get(i);if(a)return a;let o=Ul({refreshToken:t,tokenEndpoint:e.tokenEndpoint,clientId:e.clientId,resource:e.resource,scope:e.scope,issuer:e.issuer,...r===void 0?{}:{clientSecret:r},...n}).then(e=>e.credential);uu.set(i,o);let s=()=>uu.delete(i);return o.then(s,s),o}async function*fu(e,t,n,r,i,a,o){let s=t.slot,c={issuer:n.issuer,resource:n.resource};if(typeof n.resource!=`string`||n.resource.length===0)return su(e,t,`OAuth credential for '${e}' (slot: '${s}') does not name the resource it was issued for.`,o,c);let l=n,u=n.expiresAt!==void 0&&n.expiresAt<=Date.now()+3e4;if(u&&n.refreshToken){try{l=await du(n,n.refreshToken,{network:nt(i),resolveHost:i.resolveHost},await r.clientSecret?.(n.clientId))}catch(n){return yield{...R(a,{phase:`progress`,data:{kind:`auth_token_refresh_failed`,slot:s}}),errorInternal:Je(n)},su(e,t,`Failed to refresh OAuth token for '${e}' (slot: '${s}').`,o,c)}await r.set(s,l),yield R(a,{phase:`progress`,data:{kind:`auth_token_refreshed`,slot:s}})}else if(u)return su(e,t,`OAuth token expired for '${e}' (slot: '${s}') and no refresh token is available.`,o,c);return{headers:au(t,l.accessToken,{headerName:`Authorization`,headerPrefix:`Bearer `}),secret:l.accessToken,audience:n.resource}}async function*pu(e,t,n,r){if(!t)return{headers:{}};let i=n.credentials,a=i?await i.get(t.slot):void 0,o=t.onUnauthenticated??`gate`;return!i||!a?su(e,t,`Authentication required for '${e}' (auth slot: '${t.slot}').`,o):lu(a,t)||(a.type===`oauth2`?yield*fu(e,t,a,i,n,r,o):{headers:{}})}function mu(e,t){if(t===`.`||t===`..`)throw Error(`Path parameter "${e}" cannot be "${t}"`);return encodeURIComponent(t)}function hu(e,t,n,r){Hn(e);let i=e,a=r?.pathParams??[];for(let e of a){let t=n[e];t!==void 0&&(i=i.replaceAll(`{${e}}`,mu(e,String(t))))}let o=i.match(/\{([a-zA-Z0-9_-]+)\}/);if(o)throw Error(`Missing required path parameter "${o[1]}" for endpoint "${e}"`);let s=new URL(i),c=r?.queryParams??[];for(let e of c){let t=n[e];t!==void 0&&s.searchParams.set(e,String(t))}if(t===`GET`)return{url:s.toString()};if(r?.bodyParam)return{url:s.toString(),body:JSON.stringify(n[r.bodyParam])};let l={},u=new Set([...a,...c]);for(let[e,t]of Object.entries(n))u.has(e)||(l[e]=t);return{url:s.toString(),body:JSON.stringify(l)}}function gu(e,t,n){if(e.includes(`application/json`)&&t.trim().length>0)try{return JSON.parse(t)}catch{return t}return t.trim().length===0&&n===204?null:t}function _u(e,t){let n=e.safeParse(t);if(!n.success&&typeof t==`string`&&t.trim().length>0)try{let r=JSON.parse(t),i=e.safeParse(r);i.success&&(n=i)}catch{}return n}function vu(e){return{finding:typeof e==`string`?e:JSON.stringify(e)}}function yu(e,t){return t?.length?{...e,parts:t}:e}function X(e,t){return{kind:`failed`,failure:e,callNotStarted:t}}async function*bu(e){let t=yield*$l(e);return t.ok?t:t.kind===`aborted`?{kind:`aborted`,aborted:t.aborted}:t.kind===`gated`?{kind:`gated`,gate:t.gate}:{...X(t.failure,!0),...t.denied?{denied:!0}:{}}}function xu(e,t,n){let r=gt(e,t,n);if(!r.ok)return{ok:!1,outcome:X(r.failure,!0)};let i=Pl(e.name,e.permission,n.sessionPermissions,n.resume,Nl(e,r.data));return i?{ok:!1,outcome:{kind:`gated`,gate:i}}:{ok:!0,input:r.data}}function Su(e,t=!1){if(e.unauthenticated){if(e.gate)return{kind:`gated`,gate:e.gate};if(e.modelMessage)return{kind:`ok`,modelResult:{finding:e.modelMessage},outputRaw:{unauthenticated:!0,message:e.modelMessage}};if(e.failureMessage===void 0)throw Error(`An unauthenticated call carries a gate, a model message or a failure`);return X({code:`not_authorized`,kind:`auth`,message:e.failureMessage},!t)}}function Cu(e){return e.status===401||e.status===403?{status:e.status,challenge:e.headers.get(`www-authenticate`)}:void 0}var wu=/^[\x21\x23-\x5B\x5D-\x7E]+$/;function Tu(e){let t=t=>e?.match(RegExp(`(?:^|[\\s,])${t}="([^"]*)"`,`i`))?.[1],n=(t(`scope`)??``).split(` `).filter(e=>wu.test(e)),r=t(`error`);return r===void 0?{scopes:n}:{error:r,scopes:n}}function Eu(e){return e.status===401||Tu(e.challenge).error===`insufficient_scope`}function*Du(e,t,n,r,i){let a=e.auth;if(!a||!t||!n)return;let o=a.onUnauthenticated??`gate`;if(t.status===401){let t=`The credential for '${e.name}' (slot: '${a.slot}') was refused.`;return Su(su(e.name,a,t,o),!0)}let s=Tu(t.challenge);if(s.error!==`insufficient_scope`)return;let c=a.scopes??[],l=s.scopes;if(l.length>0&&l.every(e=>c.includes(e))){let t=`'${e.name}' needs scopes its credential (slot: '${a.slot}') does not carry.`;return Su(su(e.name,a,t,o),!0)}let u={kind:`auth_scope_refused`,slot:a.slot,requested:l,declared:c};return yield R(i,{phase:`progress`,data:u}),X({code:`out_of_scope`,kind:`auth`,message:U(`sign_in.out_of_scope`,{service:a.service},r.profile.labels)},!1)}async function*Ou(e){let t=yield*pu(e.tool.name,e.tool.auth,e.ctx,e.base),n=Su(t);if(n)return n;let r=yield*bu({tool:e.tool,input:e.input,ctx:e.ctx,base:e.base,stages:e.stages});return`ok`in r?{ok:!0,input:r.input,authHeaders:t.headers??{},...t.query?{query:t.query}:{},...t.secret?{secret:t.secret}:{},...t.audience?{audience:t.audience}:{}}:r}function*ku(e,t){if(ge(e)===`blocked`){let n=ot();return t.record(n),X(yield*Pe(e,n),!1)}return X({code:`network_error`,kind:`network`,message:Je(e)},!1)}var Au=`[omitted - credential]`,ju=4194304,Mu=2e3;async function*Nu(e,t){let n=Number(e.headers.get(`content-length`));if(Number.isFinite(n)&&n>t)return await e.body?.cancel().catch(()=>{}),!1;if(!e.body)return yield await e.text(),!0;let r=e.body.getReader(),i=new TextDecoder,a=0;for(;;){let{done:e,value:n}=await r.read();if(e)break;if(a+=n.byteLength,a>t)return await r.cancel().catch(()=>{}),!1;let o=i.decode(n,{stream:!0});o&&(yield o)}let o=i.decode();return o&&(yield o),!0}async function Pu(e,t=ju){let n=Nu(e,t),r=``;for(;;){let e=await n.next();if(e.done)return e.value?r:void 0;r+=e.value}}async function*Fu(e,t,n){let r=Nu(e,ju),i=n?n.length-1:0,a=``,o=``;for(;;){let e=await r.next();if(e.done)return e.value?(o&&(yield*t.show({kind:`draft`,text:o})),yield*t.end(),a):void 0;a+=e.value,o=n?Ru(o+e.value,n):o+e.value;let s=o.length-i;s<=0||(yield*t.show({kind:`draft`,text:o.slice(0,s)}),o=o.slice(s))}}function Iu(e){return e.length>Mu?`${e.slice(0,Mu)}…`:e}function Lu(e){return{code:`response_too_large`,kind:`bad_response`,message:`Response from ${e} is larger than ${ju} bytes`}}function Ru(e,t){return e.replaceAll(t,Au)}function zu(e,t){return gn(e,e=>Ru(e,t))}function Bu(e,t){return{...e,message:Ru(e.message,t),...e.details===void 0?{}:{details:zu(e.details,t)}}}function Vu(e,t){if(!t)return e;if(e.kind===`ok`){let n=zu(e.outputRaw,t);return{kind:`ok`,outputRaw:n,modelResult:yu(vu(n),e.modelResult.parts)}}return e.kind===`failed`?{...e,failure:Bu(e.failure,t)}:e}function Hu(e,t){if(e&&!Wl(e,t))return`The OAuth token for "${e}" cannot be sent to "${t.origin}${t.pathname}"`}async function*Uu(e,t,n){let r=Hu(e.audience,t);return r?X({code:`credential_audience_mismatch`,kind:`config`,message:r},!0):Vu(yield*n(iu(t,e.query)),e.secret)}async function*Wu(e,t,n,r,i,a,o){let s=xu(e,t,n);if(!s.ok)return s.outcome;let c=s.input,l=yield*Ou({tool:e,input:c,ctx:n,base:r,stages:i});if(!(`ok`in l))return l;c=l.input;let u;try{u=hu(e.endpoint,e.method,c,e.mapping)}catch(e){return X({code:`invalid_input`,kind:`bad_response`,message:Je(e)},!0)}let d=yield*ut(u.url,n,i?.span);return d.ok?(yield*h(e,c,n,r,a),yield*Uu(l,d.url,t=>qu(e,t,u.body,l,n,r,i?.span,o))):X(d.failure,!0)}function Gu(e){if(!e.ok)return!1;let t=e.headers.get(`content-type`)??``;return t===``||t.startsWith(`text/`)||/[/+]json\b/.test(t)}async function*Ku(e,t,n){return!t||!Gu(e)?await Pu(e):yield*Fu(e,t,n)}async function*qu(e,t,n,{authHeaders:r,secret:i},a,o,s,c){let l=Re(s),u={Accept:`application/json`};e.method!==`GET`&&(u[`Content-Type`]=`application/json`);let d;try{let s=e.limit?await Xl(e,e.limit,a.signal):void 0;if(s&&`full`in s)return X(sd(e,s),!1);d=e.timeoutMs===void 0?void 0:AbortSignal.timeout(e.timeoutMs);let f=d&&a.signal?AbortSignal.any([a.signal,d]):d??a.signal,p=await Zl(s,it(t.href,{method:e.method,headers:u,body:n,signal:f},{policy:nt(a),followRedirects:!0,...e.access===`read-only`?{fetchFn:Xa(fetch)}:{},originBoundHeaders:{...e.headers,...r},resolveHost:a.resolveHost,onCheck:l.onCheck})),m=yield*Ku(p,c,i);if(m===void 0)return X(Lu(t.hostname),!1);if(!p.ok)return(yield*Du(e,Cu(p),i!==void 0,a,o))||X({code:`http_${p.status}`,kind:cd(p.status),message:`HTTP ${p.status} from ${t.hostname}: ${Iu(m)}`},!1);let h=gu(p.headers.get(`content-type`)??``,m,p.status),g=_u(e.output,h);return g.success?{kind:`ok`,modelResult:vu(g.data),outputRaw:g.data}:X({code:`invalid_output`,kind:`bad_response`,message:`HTTP response did not match tool output schema`,details:g.error.flatten()},!1)}catch(n){return e.timeoutMs!==void 0&&d?.aborted&&!a.signal?.aborted?X(Ju(t.hostname,e.timeoutMs),!1):yield*ku(n,l)}finally{l.record()}}function Ju(e,t){return{code:`timeout`,kind:`timeout`,message:`${e} did not answer within ${t} ms`}}var Yu=[`2026-07-28`,`2025-11-25`,`2025-06-18`,`2025-03-26`];function Xu(e){let t=e.trim();if(t.startsWith(`{`))return JSON.parse(t);let n=[];for(let t of e.split(`
|
|
6
|
+
`)){if(!t.startsWith(`data: `))continue;let e=t.slice(6).trim();if(e&&e!==`[DONE]`)try{n.push(JSON.parse(e))}catch{}}for(let e=n.length-1;e>=0;e--){let t=n[e];if(t.result!==void 0&&t.method===void 0)return t}let r=n.at(-1);if(!r)throw Error(`MCP server returned non-JSON response: ${e}`);return r}function Zu(e){if(!e)return!1;let t=e.message.toLowerCase();return t.includes(`unsupported protocol version`)||t.includes(`inconsistent mcp protocol version`)}function Qu(e){try{let t=Xu(e);if(t.error&&Zu(t.error))return t.error}catch{}if(e.toLowerCase().includes(`unsupported protocol version`))return{code:-32600,message:e}}async function $u(e,t,n,r,i){let a={jsonrpc:`2.0`,id:t,method:`tools/call`,params:{name:n,arguments:r,_meta:{"io.modelcontextprotocol/protocolVersion":i,"io.modelcontextprotocol/clientCapabilities":{}}}},o=await it(e.url,{method:`POST`,headers:{...e.headers,"MCP-Protocol-Version":i,"Mcp-Method":a.method,"Mcp-Name":n},body:JSON.stringify(a),signal:e.signal},{policy:e.policy,followRedirects:!0,originBoundHeaders:e.originBoundHeaders,resolveHost:e.resolveHost,onCheck:e.onCheck}),s=await Pu(o);if(s===void 0)return{kind:`failure`,failure:Lu(new URL(e.url).hostname)};if(!o.ok){let t=td in e.originBoundHeaders;if(t&&o.status===404)return{kind:`session_expired`};if(!t&&o.status===400&&/mcp-session-id/i.test(s))return{kind:`session_required`};if(o.status===406&&s.toLowerCase().includes(`accept`)&&i!==Yu.at(-1))return{kind:`retry`};let n=Qu(s);if(n)return{kind:`protocol_retry`,error:n};let r=Cu(o);return{kind:`failure`,...r?{refusal:r}:{},failure:{code:`mcp_http_${o.status}`,kind:cd(o.status),message:`MCP server error HTTP ${o.status}: ${Iu(s)}`}}}try{let e=Xu(s);return e.error&&Zu(e.error)?{kind:`protocol_retry`,error:e.error}:{kind:`rpc`,response:e}}catch{return{kind:`failure`,failure:{code:`invalid_response`,kind:`bad_response`,message:`MCP server returned non-JSON response: ${Iu(s)}`}}}}async function ed(e,t,n,r){let i;for(let a of Yu){let o=await $u(e,t,n,r,a);if(o.kind===`retry`||o.kind===`protocol_retry`)o.kind===`protocol_retry`&&(i=o.error);else return o.kind===`failure`?{failure:o.failure,...o.refusal?{refusal:o.refusal}:{}}:o.kind===`rpc`?{rpc:o.response}:{sessionRequired:!0}}return{lastProtocolError:i}}var td=`Mcp-Session-Id`,nd=`2025-11-25`,rd=class extends Error{failure;constructor(e){super(e.message),this.failure=e}};function id(e,t){return new rd({code:e,kind:`failed`,message:t})}async function ad(e){let t=(t,n,r={})=>it(e.url,{method:`POST`,headers:{...e.headers,...n},body:JSON.stringify(t),signal:e.signal},{policy:e.policy,followRedirects:!1,originBoundHeaders:{...e.originBoundHeaders,...r},resolveHost:e.resolveHost,onCheck:e.onCheck}),n=await t({jsonrpc:`2.0`,id:`initialize`,method:`initialize`,params:{protocolVersion:nd,capabilities:{},clientInfo:{name:`theorem`,version:`1`}}},{"Mcp-Method":`initialize`}),r=await Pu(n);if(r===void 0)throw new rd(Lu(new URL(e.url).hostname));if(!n.ok)throw id(`mcp_session_http_${n.status}`,`MCP server refused to open a session: HTTP ${n.status}: ${Iu(r)}`);let i=n.headers.get(td);if(!ar(i))throw id(`mcp_session_invalid`,`MCP server required a session but sent no usable session ID`);let a;try{a=Xu(r).result?.protocolVersion}catch{a=void 0}if(!Yu.some(e=>e===a))throw id(`mcp_protocol_error`,`MCP server opened a session on a protocol version Theorem does not speak`);let o=String(a);return await(await t({jsonrpc:`2.0`,method:`notifications/initialized`},{"MCP-Protocol-Version":o,"Mcp-Method":`notifications/initialized`},{[td]:i})).body?.cancel().catch(()=>{}),{id:i,protocolVersion:o}}async function od(e,t,n,r,i){let a=i.cached;for(let o=0;o<2;o++){if(!a)try{a=await i.cache.open(i.key,()=>ad(e))}catch(e){if(e instanceof rd)return{failure:e.failure};throw e}let o=await $u({...e,originBoundHeaders:{...e.originBoundHeaders,[td]:a.id}},t,n,r,a.protocolVersion);if(o.kind===`session_expired`)i.cache.drop(i.key,a.id),a=void 0;else return o.kind===`rpc`?{rpc:o.response}:o.kind===`failure`?{failure:{...o.failure,message:o.failure.message.replaceAll(a.id,`[session]`)},...o.refusal?{refusal:o.refusal}:{}}:{lastProtocolError:o.kind===`protocol_retry`?o.error:void 0}}return{failure:{code:`mcp_session_expired`,kind:`failed`,message:`MCP server ended the session again right after it was reopened`}}}function sd(e,t){let{requests:n,windowMs:r}=t.limit,i=t.opensInMs===void 0?`every one is still unanswered`:`the next place opens in ${Math.ceil(t.opensInMs)} ms`;return{code:`rate_limit_window`,kind:`rate_limit`,message:`${e.name} is at its limit of ${n} requests per ${r} ms; ${i}`}}function cd(e){return e===401||e===402||e===403?`auth`:e===429?`rate_limit`:`failed`}function ld(e){if(e.type===`text`)return e.text;let t=e.resource;if(e.type===`resource`&&typeof t?.text==`string`)return t.text;if(e.type===`resource_link`&&typeof e.uri==`string`)return e.uri}function ud(e){if(e.type!==`image`&&e.type!==`audio`)return;let{data:t,mimeType:n}=e;if(typeof t==`string`&&t&&typeof n==`string`&&n.trim())return{type:e.type,mimeType:n,data:t}}function dd(e,t){let n=Array.isArray(t?.content)?t.content:void 0,r=n?.flatMap(e=>ud(e)??[]),i=r?.length?{parts:r}:{},a;if(t?.structuredContent!==void 0){let n=e.output.safeParse(t.structuredContent);if(n.success)return{checked:n,...i};a=fd(n.error.issues)}let o=n?n.flatMap(e=>ld(e)??[]).join(`
|
|
7
|
+
`):t;return{checked:_u(e.output,o),...i,...a?{warning:a}:{}}}function fd(e){let t=e.slice(0,3).map(e=>`${e.path.map(String).join(`.`)||`(root)`}: ${e.message}`),n=e.length>3?` (+${String(e.length-3)} more)`:``;return{code:`mcp_structured_mismatch`,severity:`warning`,message:`structuredContent does not match the output schema, so the text content was used. ${t.join(`; `)}${n}`}}function pd(e){if(e.error)return{code:`mcp_rpc_error_${e.error.code}`,kind:`failed`,message:e.error.message,details:e.error.data};let t=e.result;if(t?.isError)return{code:`mcp_tool_execution_failed`,kind:`failed`,message:t.content?.map(e=>e.text??``).join(`
|
|
8
|
+
`)??`MCP Tool execution error`}}function md(e,t){if(t.failure)return{ok:!1,failure:t.failure};let n=t.rpc;if(!n)return{ok:!1,failure:{code:`mcp_protocol_error`,kind:`failed`,message:t.lastProtocolError?.message??`MCP protocol negotiation failed`,details:t.lastProtocolError?.data}};let r=pd(n);if(r)return{ok:!1,failure:r};let{checked:i,parts:a,warning:o}=dd(e,n.result),s=o?{warning:o}:{};return i.success?{ok:!0,data:i.data,...a?{parts:a}:{},...s}:{ok:!1,failure:{code:`invalid_output`,kind:`bad_response`,message:`MCP output schema validation failed`,details:i.error.flatten()},...s}}async function*hd(e,t,n,r,i,a=or(),o){let s=xu(e,t,n);if(!s.ok)return s.outcome;let c=yield*ut(e.serverUrl,n,i?.span);if(!c.ok)return X(c.failure,!0);let l=yield*Ou({tool:e,input:s.input,ctx:n,base:r,stages:i});return`ok`in l?(yield*h(e,l.input,n,r,o),yield*Uu(l,c.url,t=>gd(e,t,l.input,l,n,r,i?.span,a))):l}async function*gd(e,t,n,{authHeaders:r,secret:i},a,o,s,c){let l=Re(s);try{let s={url:t.href,headers:{"Content-Type":`application/json`,Accept:`application/json, text/event-stream`},originBoundHeaders:{...e.headers,...r},policy:nt(a),resolveHost:a.resolveHost,signal:a.signal,onCheck:l.onCheck},u=await cr(t.href,s.originBoundHeaders),d=c.get(u),f=d?await od(s,o.callId,e.mcpToolName,n,{cache:c,key:u,cached:d}):await ed(s,o.callId,e.mcpToolName,n),p=f.sessionRequired?await od(s,o.callId,e.mcpToolName,n,{cache:c,key:u}):f,m=yield*Du(e,p.refusal,i!==void 0,a,o);if(m)return m;let h=md(e,p);return h.warning&&(yield R(o,{phase:`warning`,warning:h.warning})),h.ok?{kind:`ok`,modelResult:yu(vu(h.data),h.parts),outputRaw:h.data}:X(h.failure,!1)}catch(e){return yield*ku(e,l)}finally{l.record()}}var _d=class extends Error{refusal;constructor(e){super(`The service refused the credential (HTTP ${e.status}).`),this.name=`CredentialRefusedError`,this.refusal=e}};function vd(e,t,n){return async(r,i={})=>{let a=new URL(r),o=Hu(e.audience,a);if(o)throw new V(`config`,o);let s=await it(iu(a,e.query).href,{method:i.method??`GET`,headers:i.headers,body:i.body,signal:t.signal},{policy:nt(t),followRedirects:!0,originBoundHeaders:e.authHeaders,resolveHost:t.resolveHost,onCheck:n.onCheck}),c=Cu(s);if(c&&Eu(c))throw await s.body?.cancel(),new _d(c);return s}}function yd(e,t){return e.type===`agent`?Fr(t.findProfile(e.profile)):e.type===`http`?`http`:e.type===`mcp`?`mcp`:e.type===`builtin`?`builtin`:`local`}function bd(e){return e.type===`builtin`?void 0:e.type}function xd(e,t){let n=e.get(t),r=n?bd(n):`function`;return r&&Pt(`tool_arguments`,r)}function Sd(e,t){let n=yd(e,t);return{origin:n,tool:e.name,depth:n===`delegated`?2:1}}function Cd(e){return typeof e==`function`&&Object.prototype.toString.call(e)===`[object AsyncGeneratorFunction]`}var wd=new Set([`image`,`audio`,`video`,`document`]);function Td(e){if(!Array.isArray(e)||e.length===0)return;let t=[];for(let n of e)W(n)&&typeof n.type==`string`&&(n.type===`text`&&typeof n.text==`string`?t.push({type:`text`,text:n.text}):wd.has(n.type)&&typeof n.mimeType==`string`&&n.mimeType.trim()&&typeof n.data==`string`&&n.data.length>0&&t.push({type:n.type,mimeType:n.mimeType,data:n.data}));return t.length>0?t:void 0}function Ed(e){if(!W(e))return e;let{parts:t,...n}=e;return n}async function*Dd(e,t,n,r){if(Cd(e)){let i,a=e(t,n);for await(let e of a)B(n.signal),e.kind===`complete`?i=e.output:yield*r.show(e);return yield*r.end(),i}let i=await e(t,n);return i instanceof Rn?i.value:i}function Od(e,t,n){if(e.exposeToModel===!1)return{finding:U(`tool.completed_hidden`,{},n)};if(Ye(t))return{finding:U(`tool.awaiting_user`,{kind:t.kind,prompt:t.prompt},n),data:Ed(t)};let r=W(t)&&`parts`in t?Td(t.parts):void 0,i=Ed(t),a=W(i)&&`finding`in i,{finding:o,...s}=a?i:{};return{...a?{finding:String(o),...Object.keys(s).length>0?{data:s}:{}}:vu(i),...r?{parts:r}:{}}}function kd(e,t){return Rr(t.profile)?.t2Loader===e.name}function Ad(e,t,n,r,i){if(!kd(t,r))return{ok:!0,output:n};if(!i)return{ok:!1,failure:{code:`invalid_output`,kind:`bad_response`,message:U(`tool.t2_loader_needs_snapshot`,{tool:t.name},r.profile.labels)}};let a=fr(n);if(!a)return{ok:!1,failure:{code:`invalid_output`,kind:`bad_response`,message:U(`tool.t2_loader_shape`,{tool:t.name},r.profile.labels)}};let{promoted:o,failure:s}=er(e,i,a,r.profile);if(s)return{ok:!1,failure:s};let c={...n,loaded:o},l=t.output.safeParse(c);return l.success?{ok:!0,output:l.data}:{ok:!1,failure:{code:`invalid_output`,kind:`bad_response`,message:U(`tool.t2_loader_output_invalid`,{},r.profile.labels),details:l.error.flatten()}}}function*jd(e,t,n){if(e.deny){let n={code:e.deny.code,kind:`blocked`,message:e.deny.message};return{failure:n,outputRaw:void 0,modelResult:(yield*t.failure(n)).modelResult,awaiting:!1}}if(!e.mutate||!n)return;let r=n(Vn(e.mutate.output));if(!r.ok)return{failure:r.failure,outputRaw:void 0,modelResult:(yield*t.failure(r.failure)).modelResult,awaiting:!1};let i=yield*t.result(r.modelResult);return i.withheld?{failure:i.withheld,outputRaw:void 0,modelResult:i.modelResult,awaiting:!1}:{outputRaw:r.outputRaw,modelResult:i.modelResult,awaiting:Ye(r.outputRaw)}}function Md(e,t,n){return Et(e?.activityPast,{input:t,output:n})}function Nd(e,t){let{input:n,outputRaw:r,modelResult:i}=t,a=t.labelFailed?ht(e):Md(t.labels,n,r);return R(e,{phase:`complete`,output:r,readBack:F(i),...i.parts?.length?{parts:i.parts}:{},...a?{activityPast:a}:{}})}async function*Pd(e){let{base:t,toolName:n,callId:r,input:i,stages:a,provisional:o,guard:s,reproject:c,sources:l}=e,u=yield*`failure`in o?s.failure(o.failure):s.result(o.modelResult),d=u.modelResult,f=`failure`in o?o.failure:u.withheld,p=`outputRaw`in o&&!f?o.outputRaw:void 0,m=`callNotStarted`in o?o.callNotStarted:void 0,h=`denied`in o?o.denied:void 0,g=!f&&Ye(p),_;if(a){let o=f?void 0:Md(e.labels,i,p);_=yield*nu({stages:a,toolName:n,callId:r,input:i,callNotStarted:m,outputRaw:p,outputModel:d,...o?{activityPast:o}:{},activityFailed:ht(t),failure:f,awaiting:g||void 0,mutable:!f&&c!==void 0});let l=yield*jd(_,s,c);l&&({failure:f,outputRaw:p,modelResult:d,awaiting:g}=l,_.deny&&(h=!0))}return f||(d=yield*Fd({base:t,sources:l,images:e.images,outputRaw:p,modelResult:d})),yield f?L(t,{...f,message:String(yield*s.shown(f.message))},F(d)):Nd(t,{input:i,outputRaw:yield*s.shown(p),modelResult:d,labels:e.labels,..._?.labelFailed?{labelFailed:!0}:{}}),{modelResult:d,...f?{failure:f}:{outputRaw:p},...h?{denied:h}:{},...m?{callNotStarted:!0}:{},...g?{awaiting:!0}:{},...Ld(_)}}async function*Fd(e){let{base:t,sources:n,images:r,outputRaw:i,modelResult:a}=e;return n&&(yield*tt(t,n,i)),!r||i===void 0?a:yield*Id(t,a,r,i)}async function*Id(e,t,n,r){let i=await n(r);if(i.warning&&(yield R(e,{phase:`warning`,warning:i.warning})),i.parts.length===0)return t;let a=`\n[Pictures shown with this result: ${i.urls.join(` `)}]`;return{...t,parts:[...t.parts??[],...i.parts],...t.modelText===void 0?{finding:t.finding+a}:{modelText:t.modelText+a}}}function Ld(e){return{...e?.abort===void 0?{}:{aborted:e.abort},...e?.inject.length?{pendingInject:e.inject}:{}}}function Rd(e,t,n,r,i){return Pd({base:t,toolName:i.toolName,callId:i.callId,input:i.input,stages:r,guard:e,provisional:{failure:n,...i.callNotStarted?{callNotStarted:!0}:{},...i.denied?{denied:!0}:{}}})}function zd(e,t,n,r,i){let a=Sd(t,e),o=I(n.profile.guardrails),s=r?.executable??[],c={provenance:a,policy:o,kind:bd(t),callableTools:s,labels:n.profile.labels,span:i},{kind:l}=c,u=e=>l&&{profileId:n.profile.id,provenance:a,policy:o,boundary:Pt(`tool_output`,l),shown:Pt(`tool_shown`,l),callableTools:s,drafts:e},d=e=>vf(e,c),f=Al(n.resume)?tf(t,n.resume):void 0;if(!f)return{result:e=>_f(e,c),failure:e=>hf(e,c),handlerEvents:u,shown:d};let p=U(`sign_in.done`,{service:f},n.profile.labels);return{result:e=>Bd(p,_f(e,c)),failure:e=>Bd(p,hf(e,c)),handlerEvents:u,shown:d}}function*Bd(e,t){let n=yield*t,r=`${e}\n\n${F(n.modelResult)}`;return{...n,modelResult:{...n.modelResult,modelText:r}}}async function*Vd(e){let{tool:t,base:n,stages:r,guard:i}=e,a=yield*$l(e);return a.ok?a:a.kind===`aborted`?{aborted:a.aborted,callNotStarted:!0}:a.kind===`gated`?{gated:a.gate,callNotStarted:!0}:yield*Rd(i,n,a.failure,r,{toolName:t.name,callId:n.callId,input:e.input,callNotStarted:!0,...a.denied?{denied:!0}:{}})}function Hd(e,t,n){return r=>{let i=e(r);return i.success?{ok:!0,outputRaw:i.data,modelResult:t(i.data)}:{ok:!1,failure:{code:`invalid_output`,kind:`bad_response`,message:U(`tool.output_invalid_after_mutate`,{},n),details:i.error.flatten()}}}}async function*Ud(e,t,n){if(!e.auth)return{};let r=yield*pu(e.name,e.auth,t,n),i=Su(r);return i?{outcome:i}:{prepared:{authHeaders:r.headers,...r.query?{query:r.query}:{},...r.audience?{audience:r.audience}:{}},...r.secret?{secret:r.secret}:{}}}function Wd(e){return{code:`handler_error`,kind:e instanceof V?e.kind:`failed`,message:Je(e)}}function Gd(e,t){return e.answeredBy===`page`&&t.page===void 0&&!t.pageExecution}async function*Kd(e,t,n,r){let i=t.pageExecution;if(e.answeredBy!==`page`||!i)return t;if(!n?.invocation)throw Y();let a=w.parse(fl(n.invocation.preparedInput)),o=await i.dispatch(n,t.signal);if(B(t.signal),!o.grantId)throw Y();return yield R(r,{phase:`dispatch`,grantId:o.grantId,arguments:a}),t={...t,page:await o.result},B(t.signal),t}async function*qd(e,t,n,r,i,a,o,s,c){let l=zd(e,s??t,r,a,o?.span),u=i.callId,d=gt(t,n,r);if(!d.ok)return yield*Rd(l,i,d.failure,o,{toolName:t.name,callId:u,callNotStarted:!0});let f=d.data,p=Pl(t.name,t.permission,r.sessionPermissions,r.resume,Nl(t,f));if(p)return yield*ru({base:i,gate:p,callId:u,toolName:t.name,labels:r.profile.labels}),{gated:p,callNotStarted:!0};B(r.signal);let m=e=>$d({outcome:e,ctx:r,tool:t,base:i,callId:u,safeInput:f,stages:o,guard:l,labels:r.profile.labels}),g=yield*Ud(t,r,i);if(g.outcome)return yield*m(g.outcome);let _=yield*Vd({tool:t,input:f,ctx:r,base:i,stages:o,guard:l});if(!(`ok`in _))return _;if(f=_.input,Gd(t,r)){let e={kind:`page`,tool:t.name,...Nl(t,f)};return yield*ru({base:i,gate:e,callId:u,toolName:t.name,labels:r.profile.labels}),{gated:e,callNotStarted:!0}}B(r.signal);let v=yield*h(t,f,r,i,c);r=yield*Kd(t,r,v,i);let{secret:y}=g,b=e=>Rd(l,i,y?Bu(e,y):e,o,{toolName:t.name,callId:u,input:f}),x=Re(o?.span),S=g.prepared?{...r,signedInFetch:vd(g.prepared,r,x)}:r,C;try{let e=new vl(i,l.handlerEvents(o?.drafts===!0));C=yield*Dd(t.handler,f,S,e),x.record()}catch(e){if(s){if(e instanceof Zn)return yield*b(e.failure);throw e}if(g.prepared&&e instanceof _d){x.record();let n=yield*Du(t,e.refusal,g.secret!==void 0,r,i);if(n)return yield*m(n)}if(g.prepared&&ge(e)===`blocked`){let t=ot();return x.record(t),yield*b(yield*Pe(e,t))}return yield*b(Wd(e))}if(y&&(C=zu(C,y)),C===void 0)return yield*b({code:`invalid_output`,kind:`bad_response`,message:U(`tool.handler_no_output`,{},r.profile.labels)});let w=t.output.safeParse(C);if(!w.success)return yield*b({code:`invalid_output`,kind:`bad_response`,message:U(`tool.output_invalid`,{},r.profile.labels),details:w.error.flatten()});let T=Ad(e,t,w.data,r,a);if(!T.ok)return yield*b(T.failure);let E=kd(t,r);return yield*Pd({base:i,toolName:t.name,callId:u,input:f,stages:o,guard:l,provisional:{outputRaw:T.output,modelResult:Od(t,T.output,r.profile.labels)},sources:t.sources,labels:t.labels,...E?{}:{reproject:Hd(e=>t.output.safeParse(e),e=>Od(t,e,r.profile.labels),r.profile.labels)}})}function Jd(e,t){let n=Rr(t)?.t2Loader;return e.loadTier===`T2`&&n?U(`tool.not_loaded_t2`,{tool:e.name,loader:n},t.labels):U(`tool.not_visible`,{tool:e.name},t.labels)}function Z(e){return{failure:e,callNotStarted:!0,modelResult:Ke(e)}}async function*Yd(e,t,n,r){if(yield R(n,{phase:`running`}),B(t.signal),!r.builtins.includes(e.name)){let r={code:`not_loaded`,kind:`request`,message:U(`tool.builtin_not_enabled`,{tool:e.name},t.profile.labels)};return yield L(n,r),Z(r)}let i={code:`provider_native`,kind:`request`,message:U(`tool.provider_native`,{tool:e.name},t.profile.labels)};return yield L(n,i),Z(i)}function Xd(e){let{tool:t,profile:n,name:r,resume:i,snapshot:a}=e;if(!$n(n).includes(r))return{code:`not_allowed`,kind:`blocked`,message:U(`tool.not_allowed`,{tool:r,profile:n.id},n.labels)};if(!a)return;let o=kl(i);if(!o&&!a.gated.includes(r))return{code:`not_gated`,kind:`request`,message:U(`tool.not_eligible`,{tool:r},n.labels)};if(!(e.visible??a.visible).includes(r)&&!(o&&t.loadTier===`T0`))return{code:`not_loaded`,kind:`request`,message:Jd(t,n)}}function Zd(e){let t=e.tools.get(e.name);if(!t||t.type===`builtin`)throw new V(`blocked`,U(`error.blocked`));let n=Xd({...e,tool:t});if(n)throw new V(n.kind,n.message);e.outcome&&Qd(e,t,e.outcome)}function Qd(e,t,n){let r=()=>new V(`blocked`,U(`detect.output_blocked`,{},e.profile.labels)),i=n.replay.modelResult;if(t.type===`function`&&t.exposeToModel===!1&&i?.finding!==U(`tool.completed_hidden`,{},e.profile.labels))throw r();let a=vt(n.event.tool.readBack??``,{event:n.event,output:n.replay.outputRaw},Sd(t,e.tools),I(e.profile.guardrails),t.type===`builtin`?void 0:Pt(`tool_output`,t.type),e.snapshot?.executable??[],e.profile.labels);if(a.event?.action===`block`||a.event?.action===`redact`)throw r()}async function*$d(e){let{outcome:t,tool:n,base:r,callId:i,safeInput:a,stages:o,guard:s,labels:c,ctx:l}=e,u=n.name;if(t.kind===`gated`){if(t.gate.kind===`confirmation`)return{gated:t.gate,callNotStarted:!0};let e=yield*ru({base:r,gate:t.gate,callId:i,toolName:u,labels:c});return{gated:t.gate,callNotStarted:!0,...e?{gateReadBack:e}:{}}}return t.kind===`aborted`?{aborted:t.aborted,callNotStarted:!0}:t.kind===`failed`?yield*Rd(s,r,t.failure,o,{toolName:u,callId:i,input:a,callNotStarted:t.callNotStarted,...t.denied?{denied:!0}:{}}):yield*Pd({base:r,toolName:u,callId:i,input:a,stages:o,guard:s,provisional:{outputRaw:t.outputRaw,modelResult:t.modelResult},sources:n.sources,...n.type!==`function`&&n.images?{images:e=>Dl(n.images,e,l)}:{},labels:n.labels,reproject:Hd(e=>_u(n.output,e),e=>yu(vu(e),t.modelResult.parts),c)})}function ef({modelResult:e}){return e?{text:F(e),parts:e.parts}:void 0}function tf(e,t){if(t?.signIn&&e.type!==`builtin`&&e.type!==`agent`)return e.auth?.service}function nf(e,t,n){return t?{code:`expired`,kind:`cancelled`,message:U(`sign_in.expired`,{service:t},n)}:{code:`cancelled`,kind:`cancelled`,message:U(`session.abandon_gated`,{tool:e},n)}}function rf(e,t,n){let r=tf(e,t),i=t?.cause??`declined`;return i===`declined`?{code:`denied`,kind:`declined`,message:r?U(`sign_in.declined`,{service:r},n):U(`session.tool_denied`,{tool:e.name},n)}:nf(e.name,i===`expired`?r:void 0,n)}function af(e){if(Al(e))return!0;if(jl(e))return!1}function of(e,t){let{failure:n}=e,r=t(e);return{outcome:e.gated?`gated`:e.aborted!==void 0&&e.callNotStarted?`cancelled`:e.denied?`denied`:n?`error`:e.awaiting?`paused`:`ok`,...r?{result:r}:{},...!n&&`outputRaw`in e?{data:{value:e.outputRaw}}:{},...n?{failure:n}:{}}}function sf(e){let t=e.tools.get(e.name),n=I(e.profile.guardrails),{args:r}=Tt(Vn(e.input),t?Sd(t,e.tools):{origin:`local`,tool:e.name,depth:1},n,xd(e.tools,e.name),Mt(n,e.scope??{}));return typeof r==`object`&&r&&!Array.isArray(r)?r:{}}async function*cf(e){return e={...e,ctx:{...e.ctx,operationId:e.ctx.operationId??crypto.randomUUID()}},yield*gl(e.execution,{operationId:e.ctx.operationId??crypto.randomUUID(),callId:e.callId,profileId:e.profile.id,toolId:e.name},{input:e.input,resume:e.ctx.resume,snapshot:e.snapshot,context:e.invocation},e.ctx.signal,t=>lf({...e,beginBody:async n=>{let r=await t?.(n)??await e.beginBody?.(n);return e.onDispatch?.(),r}}),t=>Zd({outcome:t,tools:e.tools,profile:e.profile,name:e.name,resume:e.ctx.resume,snapshot:e.snapshot}))}async function*lf(e){let t=e.tools.get(e.name);if(!e.openSpan)return yield*uf(e,t);let n=wt(e.openSpan,{name:e.name,callId:e.callId,call:{arguments:Be(Vn(e.input))},origin:t?yd(t,e.tools):void 0,permission:t&&`permission`in t?t.permission:void 0,approved:af(e.ctx.resume),step:e.ctx.turn?.step}),r=uf({...e,ctx:{...e.ctx,traceparent:n.span.traceparent()},...e.stages?{stages:{...e.stages,span:n.span}}:{}},t);try{for(;;){let t=await r.next();if(t.done)return n.end(of(t.value,e.readBack??ef)),t.value;n.observe(t.value),yield t.value}}catch(e){throw n.end(j(e)?{outcome:`cancelled`}:{outcome:`error`,thrown:e}),e}finally{n.span.ended||(n.end({outcome:`cancelled`}),await r.return({}))}}async function*uf(e,t){let{profile:n,name:r,input:i,callId:a,ctx:o,snapshot:s,stages:c}=e,l=Vn(i),u=o.operationId??crypto.randomUUID(),d={name:r,callId:a,operationId:u,activityFailed:Ve(r,n.labels,t?.labels,l)};if(!t){let e={code:`unknown_tool`,kind:`request`,message:U(`tool.not_registered`,{tool:r},n.labels)};return yield L(d,e),Z(e)}if(t.type===`builtin`){if(!s){let e={code:`provider_native`,kind:`request`,message:U(`tool.builtin_needs_snapshot`,{tool:r},n.labels)};return yield L(d,e),Z(e)}return yield*Yd(t,{...o,callId:a,profile:n,operationId:u},d,s)}let f=Xd({tool:t,profile:n,name:r,resume:o.resume,snapshot:s,visible:o.turn?.visible});if(f)return yield L(d,f),Z(f);if(jl(o.resume))return yield*Rd(zd(e.tools,t,{...o,callId:a,profile:n,operationId:u},s,c?.span),d,rf(t,o.resume,n.labels),c,{toolName:r,callId:a,input:l,callNotStarted:!0,denied:!0});let p={...o,callId:a,profile:n,operationId:u},m=I(n.guardrails),h=Sd(t,e.tools),g=performance.now(),_=bd(t),v=Tt(l,h,m,_&&Pt(`tool_arguments`,_),Mt(m,e.scope??{}));if(Le(c?.span,`tool_arguments`,performance.now()-g,v.event),v.event&&(yield{type:`guardrail`,guardrail:v.event}),!(`args`in v)){let e={code:`arguments_blocked`,kind:`blocked`,message:U(`detect.call_blocked`,{},n.labels)};return yield L(d,e),{...Z(e),denied:!0}}let y=performance.now(),b=Ge(o.turn?.taint,t.access,m,n.labels),x=Se(b,h);if(Le(c?.span,`taint`,performance.now()-y,x),x&&(yield{type:`guardrail`,guardrail:x}),b.action===`block`){let e={code:`tainted_turn`,kind:`blocked`,message:b.rejection};return yield L(d,e),{...Z(e),denied:!0}}return(yield*df({tool:t,input:v.args,ctx:p,base:d,provenance:h,policy:m,span:c?.span}))||(yield*mf(e.tools,t,v.args,p,d,s,c,e.agents,e.beginBody))}async function*df(e){let{tool:t,input:n,ctx:r,base:i}=e,{labels:a}=r.profile,o=performance.now(),{verdict:s,confirm:c}=Li(r.turn?.destinations,n,e.policy,a),l=Se(s,e.provenance);if(Le(e.span,`destination`,performance.now()-o,l),l&&(yield{type:`guardrail`,guardrail:l}),s.action===`block`){let e={code:`remote_destination`,kind:`blocked`,message:s.rejection};return yield L(i,e),{...Z(e),denied:!0}}if(!c||Al(r.resume))return void 0;let u={kind:`confirmation`,tool:t.name,summary:c,...Nl(t,n)};return yield*ru({base:i,gate:u,callId:r.callId,toolName:t.name,labels:a}),{gated:u,callNotStarted:!0}}async function*ff(e){let{tool:t,ctx:n,base:r,agents:i}=e;if(!i){let e={code:`unknown_tool`,kind:`unsupported`,message:U(`tool.unsupported_type`,{tool:t.name},n.profile.labels)};return yield L(r,e),Z(e)}let a,o=e.stages?.span,s=async function*(e,n){let r=i.run({tool:t,callId:n.callId,input:e,caller:n.profile,...o?{span:o}:{},...n.signal?{signal:n.signal}:{}}),s=!1;for(;;){let e=await r.next();if(e.done){if(a=e.value.tokens,`failure`in e.value)throw new Zn(e.value.failure);yield{kind:`complete`,output:e.value.output};return}let n=e.value;n.type===`attempt`&&(s=!0),n.type===`text`||n.type===`structured_draft`?s||(yield{kind:`draft`,text:n.text}):yield{kind:`progress`,data:{agent:t.profile,event:n}}}},c={...t,type:`function`,handler:s},l=qd(e.tools,c,e.safeInput,n,r,e.snapshot,e.stages,t,e.beginBody);for(;;){let e=await l.next();if(e.done)return e.value;yield pf(e.value,r.callId,a)}}function pf(e,t,n){if(!n||e.type!==`tool`||e.tool.callId!==t)return e;let{tool:r}=e;return r.phase!==`complete`&&r.phase!==`error`?e:{...e,tool:{...r,tokens:n}}}async function*mf(e,t,n,r,i,a,o,s,c){let{name:l}=t;if(t.type===`function`)return yield*qd(e,t,n,r,i,a,o,void 0,c);if(t.type===`agent`)return yield*ff({tools:e,tool:t,safeInput:n,ctx:r,base:i,snapshot:a,stages:o,agents:s,beginBody:c});if(t.type!==`http`&&t.type!==`mcp`)return Z({code:`unknown_tool`,kind:`request`,message:U(`tool.unsupported_type`,{tool:l},r.profile.labels)});let u=zd(e,t,r,a,o?.span);return yield*$d({outcome:t.type===`http`?yield*Wu(t,n,r,i,o,c,new vl(i,u.handlerEvents(o?.drafts===!0))):yield*hd(t,n,r,i,o,e.mcpSessions,c),ctx:r,tool:t,base:i,callId:i.callId,safeInput:n,stages:o,guard:u,labels:r.profile.labels})}function*hf(e,t){let n=performance.now(),r=je(e.message,t.provenance,t.policy,t.kind&&Pt(`tool_failure`,t.kind));Le(t.span,`tool_failure`,performance.now()-n,r.event),r.event&&(yield{type:`guardrail`,guardrail:r.event});let i=r.text??U(`detect.output_blocked`,{},t.labels);return{modelResult:yield*gf({...e,message:i},t)}}function*gf(e,t){let n=Me(e);return(yield*yf(n,t,void 0))??n}function*_f(e,t){let n=yield*yf(e,t,t.kind&&Pt(`tool_output`,t.kind));if(n)return{modelResult:n};let r={code:`output_blocked`,kind:`blocked`,message:U(`detect.output_blocked`,{},t.labels)};return{modelResult:yield*gf(r,t),withheld:r}}function*vf(e,t){let n=t.kind&&Pt(`tool_shown`,t.kind),r=We(e,t.provenance,t.policy,n);return r.event&&(yield{type:`guardrail`,guardrail:r.event}),`value`in r?r.value:U(`detect.shown_blocked`,{},t.labels)}function*yf(e,t,n){let{provenance:r,span:i}=t,a=performance.now(),o=vt(e.finding,e.data,r,t.policy,n,t.callableTools,t.labels);if(Le(i,`tool_result`,performance.now()-a,o.event),o.event&&(yield{type:`guardrail`,guardrail:o.event}),o.text!==void 0)return{...e,modelText:o.text,provenance:r,...o.suspicious?{suspicious:o.suspicious}:{}}}function bf(){let e=()=>void 0;return{promise:new Promise(t=>{e=t}),resolve:e}}function xf(e,t,n){let r=new Set,i=new Map(e.map(e=>[e,bf()])),a=new Map,o=new Map,s=new Map,c=n=>t?[]:e.slice(0,e.indexOf(n));for(let t of e){let e=c(t);e.length>0&&a.set(t,new Map(e.map(e=>[e,`after`])))}let l=(e,t,n=new Set)=>{if(e===t)return[t];if(!(n.has(e)||r.has(e))){n.add(e);for(let r of a.get(e)?.keys()??[]){let i=l(r,t,n);if(i)return[e,...i]}}},u=(e,t)=>{o.get(e)?.(t),o.delete(e),s.get(e)?.(),s.delete(e);for(let[t,n]of a.get(e)??[])n===`asked`&&a.get(e)?.delete(t)},d=e=>i.get(e)?.promise??Promise.resolve();return{start:async e=>{await Promise.all(c(e).map(d)),B(n)},settle:e=>{r.add(e),a.delete(e),i.get(e)?.resolve()},wait:(e,t)=>{let c=t.filter(e=>!i.has(e));if(c.length>0)return Promise.resolve({ok:!1,reason:`unknown`,callIds:c});let f=t.filter(e=>!r.has(e));if(f.length===0)return Promise.resolve({ok:!0});let p=a.get(e)??new Map;a.set(e,p);for(let e of f)p.set(e,`asked`);let m=f.flatMap(t=>{let n=l(t,e);return n?[{id:t,path:n}]:[]});if(m.length>0){for(let{path:t}of m)for(let[n,r]of t.entries()){let i=t[n+1];i!==void 0&&r!==e&&a.get(r)?.get(i)===`asked`&&u(r,{ok:!1,reason:`cycle`,callIds:[i]})}return u(e,{ok:!1,reason:`cycle`,callIds:m.map(({id:e})=>e)}),Promise.resolve({ok:!1,reason:`cycle`,callIds:m.map(({id:e})=>e)})}let h=bf();o.set(e,h.resolve),Promise.all(f.map(d)).then(()=>u(e,{ok:!0}));let g=new Promise((t,r)=>{if(!n)return;let i=()=>r(n.reason);n.addEventListener(`abort`,i,{once:!0}),s.set(e,()=>n.removeEventListener(`abort`,i))});return g.catch(()=>{}),Promise.race([h.promise,g])}}}async function*Sf(e,t,n){try{return await e.start(t),yield*n()}finally{e.settle(t)}}async function*Cf(e){let t=e.map(()=>void 0),n=new Map,r=(e,t)=>{let r=t.next().then(t=>({index:e,next:t}));r.catch(()=>{}),n.set(e,r)};e.forEach((e,t)=>{e&&r(t,e)});try{for(;n.size>0;){let{index:i,next:a}=await Promise.race(n.values());n.delete(i);let o=e[i];a.done||!o?a.done&&(t[i]=a.value):(yield a.value,r(i,o))}}finally{for(let t of n.keys())e[t]?.return(void 0).catch(()=>{})}return t}function wf(e,t){return e.type===`thought`&&wc(t)?.streaming?.streamThoughts===!1}function*Tf(e){e.some(e=>e.rule===Tn.providerToolLeak)?yield*Ef(e):yield*Df(`reply`,{action:`block`,hits:e});let t=Zt(e);yield x(new V(`safety`,t)),yield{type:`done`,stop:{kind:`filtered`,native:t===Bt.canary?`canary`:t===Bt.promptEcho?`prompt_echo`:`provider_tool_leak`}}}function*Ef(e){let t=jr(`output_delta`,`untrusted`,e,`block`);t&&(yield t)}function*Df(e,t){let n=t&&fn(e,t,void 0,Of[e]);n&&(yield G(n))}var Of={reply:`output_delta`};function*kf({text:e,hits:t,found:n},r){yield*Df(`thought`,n);let i=jr(`thought`,`untrusted`,t,`redact`);i&&(yield i),e&&(yield{...r,text:e})}function*Af(e,t){e&&(yield*kf(e.flush(),{type:`thought`,text:``}),t&&(t.thoughtCarry=e.carryOut()))}function jf(e){return e.type===`text`||e.type===`media`}function Mf(e,t){return!t.structured||e.type!==`text`?e:t.stream===!1?void 0:{type:`structured_draft`,text:e.text}}var Nf=class{drafts;generation;constructor(e){let t=I(e.profile.guardrails),n=If(e,t);this.drafts=new Vr(()=>Pn(t,n,`reply_structured`)),this.generation=e.generation}async*show(e){let t=Mf(e,this.generation);if(t?.type!==`structured_draft`){t&&(yield t);return}let n=await this.drafts.read(t.text);n&&(yield{...t,text:n})}*end(){let e=this.drafts.end();e&&(yield{type:`structured_draft`,text:e})}};function Pf(e){return e.type===`structured`||e.type===`tool`}var Ff=class{policy;context;tools;drafts=new Map;constructor(e,t,n){this.policy=e,this.context=t,this.tools=n}async*take(e,t,n){return e.type===`tool_draft`?(t||(yield*this.release(e,n)),!0):(this.close(e),!1)}async*release(e,t){let n=this.drafts.get(e.callId)??await this.open(e);if(n===`stopped`)return;if(n.name!==e.name){this.drafts.set(e.callId,`stopped`);return}if(!n.gate){yield e;return}let{gate:r}=n,i=await t(`tool_draft`,()=>r.process(e.text));i.blocked?this.drafts.set(e.callId,`stopped`):i.emit&&(yield{...e,text:i.emit})}close(e){e.type===`tool`&&this.drafts.delete(e.tool.callId)}async open(e){let t=xd(this.tools,e.name),n=t?await Pn(this.policy,this.context,t):null,r={name:e.name,gate:n};return this.drafts.set(e.callId,r),r}};function If(e,t){let{profile:n,privateSystem:r,canaryGiven:i}=e,{canary:a}=e.generation;return{stage:`output_final`,trust:`untrusted`,profileId:n.id,...n.labels?{labels:n.labels}:{},...Vt(t.detect,{canary:a,canaryGiven:i,privateSystem:r}),givenUrls:e.givenUrls,...e.ownTools?{ownTools:e.ownTools}:{}}}async function*Lf(e){let{profile:t,request:n,provider:r,call:i,signal:a,control:o}=e;async function s(e,t){let n=performance.now();try{return await t()}finally{i.guardTime?.(e,performance.now()-n)}}let c=I(t.guardrails),l=If(e,c),{canaryCarry:u,thoughtCarry:d}=o??{},f=await rr(c,l,`reply`,u),p=await $i(c,l,d),m=new Ff(c,l,e.tools),h=null,g=!1;function _(e){let t=e.filter(Xt);o&&t.length>0&&(o.promptLeaks=t)}function v(){g=!0,o&&(o.withholdVisible=!0)}function y(){return g}async function*b(e,t){yield*Ef(e),v();let n=f?.drainUnreleased();n&&(yield{...t,text:n})}async function*x(){if(!(f&&h))return`pass`;let e=h,t=await s(`output_stream`,()=>f.flush());return h=null,(yield*S(t,e))===`stop`?`stop`:`pass`}async function*S(e,t){if(e.blocked){_(e.hits);let n=e.boundary&&fn(e.boundary,{action:`block`,hits:e.hits},void 0,`output_delta`);return n&&i.guardrail?.(n),yield*b(e.boundary?[]:e.hits,t),`go`}return yield*Df(`reply`,e.found),e.emit&&(yield{...t,text:e.emit}),`go`}async function*C(e){return f?y()?(yield{...e,text:e.text??``},`continue`):(h=e,(yield*S(await s(`output_stream`,()=>f.process(e.text??``)),e))===`stop`?`stop`:`continue`):(yield e,`continue`)}let w=!1;function*T(e){return e.type!==`thought`||!p?!1:(w=!0,yield*kf(p.push(e.text),e),!0)}function*E(){w&&(w=!1,yield*Af(p,o))}B(a);let D=!1;for await(let e of r.complete({...n,signal:a,tapUpstream:i.tap})){if(i.observe(e),B(a),e.type===`response`)continue;if(e.type===`reasoning`){yield e;continue}if(yield*T(e))continue;if(Nt(e)){if(yield*E(),(yield*C(e))===`stop`)return;continue}if((yield*x())===`stop`)return;if(yield*m.take(e,y(),s))continue;let t=Pf(e)?void 0:await s(`stream_canary`,()=>zt(e,l,c.detect,`reply`));if(t?.stop){yield*Tf(t.hits);return}t&&(yield*Df(`reply`,{action:`flag`,hits:t.hits})),y()&&jf(e)||(e.type===`error`&&(D=!0),e.type===`done`&&(yield*Af(p,o))),yield e}yield*Af(p,o),(yield*x())!==`stop`&&(o&&f&&(o.canaryCarry=f.carryOut()),D&&(yield{type:`done`,stop:{kind:`provider_error`}}))}function Rf(e,t,n){return{system:e,...n?{held:n}:{},conversation:`previous`in t?{previous:t.previous,continuation:[...t.continuation]}:{history:[...t.history],input:[...t.input]},output:[],failed:!1}}function zf(e,t){switch(t.type){case`tokens`:return e.reported=t.tokens,!0;case`error`:return e.failed=!0,!1;case`tool`:return t.tool.phase===void 0&&e.output.push({type:`tool`,tool:t.tool}),!1;case`text`:case`thought`:case`media`:return e.output.push(t),!1;default:return!1}}function Bf(e,t){return{tokens:e.tokens+t.tokens,unknownMedia:e.unknownMedia+t.unknownMedia}}function Vf(e,t){let n=[],r;for(let i of e)i.type===`tool`||i.type===`media`?r=void 0:i.text&&(t||i.type!==`thought`)&&(i.type===r?n.push(`${n.pop()??``}${i.text}`):(n.push(i.text),r=i.type));return n}async function Hf(e,t){let n=await ic(),r={tokens:0,unknownMedia:0};for(let t of e.output)t.type===`media`?r.unknownMedia+=1:t.type===`tool`&&(r.tokens+=n.text(t.tool.name)+n.text(JSON.stringify(t.tool.arguments)));for(let i of Vf(e.output,t))r.tokens+=n.text(i);return r}async function Uf(e){let t=await ic(),{conversation:n}=e;if(`previous`in n){let e=await Uf(n.previous),r=await Hf(n.previous,!1),i=t.messages(n.continuation);return Bf(Bf(e,r),i)}let r=Bf(t.messages(n.history),t.parts(n.input));return e.held?Bf(e.held,r):r}async function Wf(e){return Bf(await Uf(e),await Hf(e,!1))}async function Gf(e,t){let n=await ic(),r=t.tools.wire,i=r.length>0?n.text(JSON.stringify(r)):0,a=t.structured?n.text(JSON.stringify(t.structured.jsonSchema)):0,o=await Uf(e);return{tokens:n.text(e.system)+i+a+o.tokens,unknownMedia:o.unknownMedia}}async function Kf(e,t){let n=e.reported;if(!n&&e.failed)return;let r=n?n.estimated??[]:[`input`,`output`];if(n&&r.length===0)return{type:`tokens`,tokens:n};let i=r.includes(`input`)?await Gf(e,t):void 0,a=r.includes(`output`)?await Hf(e,!0):void 0,o=i?.tokens??n?.input??0,s=a?.tokens??n?.output??0,c={...i?.unknownMedia?{input:i.unknownMedia}:{},...a?.unknownMedia?{output:a.unknownMedia}:{}};return{type:`tokens`,tokens:{...n,input:o,output:s,total:o+s,estimated:[...r],...Object.keys(c).length>0?{unknownMedia:c}:{}}}}function qf(e,t){return t>0&&e>=t}function Jf(e,t,n){let r={...e,history:t.currentHistory};return n?{...r,builtins:[],tools:{...e.tools,wire:[]}}:r}function Yf(e,t,n){return e.type===`text`&&e.turnBehaviour?.atStepLimit===`answer`&&qf(n,t.maxSteps??0)}function Xf(e,t){if(t.phase===void 0)return e.push({name:t.name,callId:t.callId,arguments:t.arguments}),!0;let n=P(e,e=>e.callId===t.callId);return t.phase!==`error`||!n?!1:(n.failure=t.failure,!0)}function Zf(e,t,n,r){let i=Rf(t.text,{history:n.currentHistory,input:e.input});n.lastCall=i;let a=Jf(e,n,r),o=sl(n.tools,a,t.text);return bn(n.givenUrls,o),Fi(n.destinations,o,n.givenUrls.own),e.canary&&!n.canaryGiven&&(n.canaryGiven=Gt(o,e.canary,n.canaryScanned)),n.trace.calls+=1,{usage:i,genForStep:a,request:o,call:$e((e,t)=>n.trace.root.child(e,t),{req:o,usage:i,binding:n.trace.binding,transport:a.transport,step:n.stepCount,attempt:n.trace.attempt})}}function Qf(e,t){let n=ct(e);return n?.autoContinue!==void 0&&re(t,n)}var $f=new Set([`text`,`media`,`structured`,`citation`]);function ep(e,t,n){return e.type===`error`?(t.failures.push(e),!0):e.type===`tool`?Xf(t.calls,e.tool):(e.type===`guardrail`&&n.guardrail(e.guardrail),e.type===`structured`&&(t.latestStructured=e.structured),e.type===`text`&&(t.text+=e.text),$f.has(e.type)&&(t.replied=!0),!1)}var tp=`
|
|
9
|
+
|
|
10
|
+
`;function np(e,t,n,r){if(t.text)return e;let i=n.replyText,a=i&&r.structured===null&&!/\s$/.test(i)&&!/^\s/.test(e.text);return t.replyAt=i.length+(a?2:0),a?{...e,text:`${tp}${e.text}`}:e}function rp(e,t,n,r){if(rl(e,n),t.withholdVisible&&jf(e))return n.withheldVisible=!0,!1;e.type===`text`&&(n.released+=e.text,n.replyText+=e.text);let i=e.type===`thought`||!r.holdVisible&&jf(e);return!r.holdLate||i}var ip=new Set([`busy`,`unavailable`,`bad_response`,`network`,`timeout`,`rate_limit`]);function ap(e,t,n){let{stop:r}=n;if(!e||n.replied||n.calls.length>0||!r||!Ee(r.kind)||!Qf(t,r))return;let i=n.failures[0];if(!i?.errorKind||ip.has(i.errorKind))return{stop:r,failure:i}}function op(e,t){e.canaryCarry=t.canaryCarry,e.thoughtCarry=t.thoughtCarry,t.promptLeaks&&(e.promptLeaks=[...e.promptLeaks??[],...t.promptLeaks])}async function*sp(e,t,n={holdLate:!1,holdVisible:!1}){let{profile:r,generation:i,system:a,provider:o,signal:s}=e,{usage:c,genForStep:l,request:u,call:d}=Zf(i,a,t,Yf(r,i,t.stepCount)),f={calls:[],reasoning:[],text:``,failures:[],replied:!1},p={withholdVisible:!1,...t.canaryCarry?{canaryCarry:t.canaryCarry}:{},...t.thoughtCarry?{thoughtCarry:t.thoughtCarry}:{}},m={profile:e.profile,generation:l,privateSystem:a.private,givenUrls:t.givenUrls,canaryGiven:t.canaryGiven,...t.ownTools?{ownTools:t.ownTools}:{}},h=new Nf(m);try{for await(let e of Lf({...m,request:u,provider:o,call:d,signal:s,control:p,tools:t.tools})){if(zf(c,e))continue;if(e.type===`reasoning`){let{type:t,...n}=e;f.reasoning.push(n);continue}if(e.type===`done`){t.providerState=e.providerState,f.stop=e.stop,t.lastStop=e.stop;continue}if(e.type===`tool_draft`){n.holdVisible||(yield e);continue}let r=e.type===`text`?np(e,f,t,l):e;ep(e,f,d)||rp(r,p,t,n)&&(yield*h.show(r))}}catch(e){throw d.end(j(e)?{stop:{kind:`cancelled`}}:{stop:f.stop,thrown:e}),e}yield*h.end(),op(t,p);let g=ap(e.mayResume,r,f);if(!g)for(let e of f.failures)rl(e,t),n.holdLate||(yield e);let _=await Kf(c,i);return d.end({tokens:_?.tokens,stop:f.stop}),_&&(rl(_,t),yield _),{calls:f.calls,reasoning:f.reasoning,text:f.text,latestStructured:f.latestStructured,...f.replyAt===void 0?{}:{replyAt:f.replyAt},...g?{resume:g}:{}}}async function*cp(e,t,n){let r=ct(e.profile)?.maxContinues??1;for(;;){let i=e.profile.type===`text`&&t.resumes<r,a=yield*sp({...e,mayResume:i},t,n);if(!a.resume)return a;t.resumes+=1;let o=a.resume.failure?.errorInternal??a.resume.failure?.error;t.trace.root.event(`theorem.step.resume`,{step:t.stepCount,resume:t.resumes,stop:a.resume.stop.kind,...o?{error:o}:{}}),t.lastStop=void 0,await Wa(xe,e.signal)}}function lp(e,t){return{role:`tool`,tool_call_id:e.callId,name:e.name,content:F(t),...t.parts&&t.parts.length>0?{parts:t.parts}:{}}}function up(e,t,n){e.currentHistory.push(lp(t,n))}async function*dp(e,t){let n=await e.next();for(;!n.done;)t.allEmittedEvents.push(n.value),yield n.value,n=await e.next();return n.value}function fp(e){return(t,n)=>e.trace.root.child(t,{attributes:n})}function pp(e,t,n){let r=L(t,n);e.allEmittedEvents.push(r);let i=Ke(n);return wt(fp(e),{name:t.name,callId:t.callId,call:t,step:e.stepCount}).end({outcome:`error`,result:{text:F(i)},failure:n}),up(e,t,i),r}function*mp(e,t,n){return e.aborted?(t.lastStop=Ae(e.aborted),`stop_cancelled`):e.gated?`gated`:(e.modelResult?.provenance&&(t.taint=St(t.taint,e.modelResult.provenance,e.modelResult.suspicious),Ii(t.destinations,e.modelResult,e.modelResult.provenance)),e.modelResult&&(!e.failure&&`outputRaw`in e&&t.toolResults.push({tool:n.name,output:e.outputRaw}),up(t,n,e.modelResult),e.pendingInject&&(yield*tl(t,`post_tool`,e.pendingInject,{callId:n.callId,toolName:n.name}))),`continue`)}function hp(e){return Ne({text:e.text,structured:e.latestStructured,calls:e.calls.map((t,n)=>n===0?{...t,reasoning:e.reasoning}:t)})}async function*gp(e,t,n,r,i,{onStage:a,signal:o,credentials:s,resolveHost:c}={}){let{calls:l,reasoning:u}=e;l.length>0&&Zc(r,hp(e),e.replyAt);let d=crypto.randomUUID(),f={canary:t.canary,canaryGiven:r.canaryGiven,privateSystem:i.private},p=l.map(e=>({...e,operationId:crypto.randomUUID(),shown:e.failure?e.arguments:sf({tools:r.tools,profile:n,name:e.name,input:e.arguments,scope:f})}));for(let[e,t]of p.entries()){let n=Ue(t,t.shown,{...e===0&&u.length?{reasoning:u}:{},stepId:d,stepCallCount:p.length});r.allEmittedEvents.push(n),yield n}let m=xf(p.map(e=>e.callId),Fn(n)===!0,o),h={handlers:a?[a]:[],profile:n,step:r.stepCount,history:()=>r.currentHistory,injectAllowed:te(n),injectWouldExceedMaxSteps:Kc(r.stepCount,t.maxSteps),host:t.host,signal:o,stepCalls:p.map(e=>({callId:e.callId,tool:e.name,input:e.shown})),wait:m.wait,drafts:t.stream!==!1},g={step:r.stepCount,taint:r.taint,destinations:r.destinations,visible:[...t.tools.visible]},_=e=>dp(cf({tools:r.tools,execution:t.execution,invocation:{model:t.model,input:t.input,history:t.history},...r.agents?{agents:r.agents}:{},profile:n,name:e.name,input:e.arguments,callId:e.callId,ctx:{operationId:e.operationId,pageExecution:t.pageExecution,sessionPermissions:t.sessionPermissions,path:t.tools.path,turn:g,credentials:s,resolveHost:c,host:t.host,resume:void 0,signal:o},snapshot:t.tools,stages:h,scope:f,openSpan:fp(r)}),r);for(let e of p)e.failure&&m.settle(e.callId);let v=yield*Cf(p.map(e=>e.failure?void 0:Sf(m,e.callId,()=>_(e)))),y=!1,b=!1;for(let[e,t]of p.entries()){if(t.failure){yield pp(r,{...t,activityFailed:Ve(t.name,n.labels)},t.failure);continue}let i=v[e];if(!i)continue;let a=yield*mp(i,r,t);a===`stop_cancelled`&&(b=!0),a===`gated`&&(y=!0)}return b?!1:y?(r.lastStop={kind:`gate`},!1):p.length>0}async function*_p(e){let{profile:t,generation:n,system:r,provider:i,state:a}=e,o,s=[],c,l=wc(t)?.validation,u=l!==void 0||nr(I(t.guardrails),C),d=l!==void 0&&n.stream===!1;for(;!qf(a.stepCount,n.maxSteps??0);){B(e.safe.signal),a.stepCount++;let l=yield*cp({profile:t,generation:n,system:r,provider:i,signal:e.safe.signal},a,{holdLate:u,holdVisible:d});if(l.latestStructured!==void 0&&(o=l.latestStructured),s=l.calls.length>0?[]:hp(l),c=l.replyAt,!(yield*gp(l,n,t,a,r,e.safe)))break;qf(a.stepCount,n.maxSteps??0)&&(a.lastStop={kind:`step_limit`})}return{latestStructured:o,reply:s,...c===void 0?{}:{replyAt:c}}}var vp={kind:`filtered`,native:`egress`};function yp(e){let t=[];for(let n of e)n.type===`text`&&n.text&&t.push(n.text);return t.join(``)}function bp(e){let t=P(e,e=>e.type===`structured`)?.structured;return{text:yp(e),...t===void 0?{}:{structured:t}}}function xp(e,t,n,r){return{...e,input:{...e.input,repair:{previousOutput:typeof t==`string`?t:JSON.stringify(t),rejection:n,guidance:r}}}}function Sp(e){let{attemptEvents:t,request:n,profile:r,canRetry:i,promptLeaks:a}=e,{detect:o,blockedReply:s}=e.policy,c=bp(t),l=Mt(e.policy,{canary:e.generation.canary,canaryGiven:e.canaryGiven,privateSystem:e.privateSystem,givenUrls:e.givenUrls,...e.ownTools?{ownTools:e.ownTools}:{},...r.labels?{labels:r.labels}:{}}),u=bt(c,o,{boundary:`reply`,...e.withheld?{reportedTo:e.released.length}:{},scope:l}),{payload:d}=u,f=e=>({action:`refusal`,event:{type:`text`,text:e}}),p=E(u,a),m=p&&p!==u.blocked?jr(`output_final`,`untrusted`,p,`block`):void 0,h=[...u.events.map(G),...m?[m]:[]];return p?s.onBlock===`refuse`?{outcome:f(we(e.shown,r.labels)),guardrails:h}:i?{outcome:{action:`retry`,nextRequest:xp(n,d.text,Cc(p,o,r.labels),U(`egress.default_repair_guidance`,{},r.labels))},guardrails:h}:{outcome:{action:`withhold`,event:x(new V(`safety`,Bt.egress))},guardrails:h}:u.rewritten?{outcome:f(O(e.shown,d.text)),guardrails:h}:{outcome:{action:`pass`},guardrails:h,...d.structured===c.structured?{}:{structured:d.structured}}}async function Cp(e){let{validation:t,generation:n,latestStructured:r,request:i,canRetry:a}=e;if(r===void 0)return{action:`pass`};let o=n.structured;if(!o)throw new V(`config`,`outputs.validation requires outputs.structured with a JSON Schema`);let s=await kr(o.jsonSchema,r,t.fields,i.input?.slots);return s.length===0?{action:`pass`}:a?{action:`retry`,nextRequest:xp(i,r,Pr(s))}:{action:`pass`,failed:s}}function*wp(e,t,n){for(let r of e){if(r.type===`tokens`||r.type===`thought`||t&&jf(r))continue;let e=Mf(r,{...n,stream:!1});e&&(yield e)}}function Tp(e,t,n,r,i){e.currentAttempt++,t.trace.attempt=e.currentAttempt,t.trace.root.event(`theorem.attempt.retry`,{attempt:e.currentAttempt,reason:i}),e.currentReq=r;let a=Kn(r,n);if(n.type===`text`){let e=t.currentHistory.length;il(t,gr(n,{...a,input:{repair:a.input?.repair}}));for(let n of t.currentHistory.slice(e))Ep(t,n)}else{let r=gr(n,a);Ep(t,r),e.currentGen={...e.currentGen,input:r}}let o={type:`attempt`,attempt:e.currentAttempt,reason:i};return t.allEmittedEvents.push(o),o}function Ep(e,t){e.canaryScanned.add(t),e.givenUrls.own.add(t)}function Dp(e,t){return wc(e)?.validation!==void 0&&t.stream===!1}async function*Op(e,t,n,r,i){let a=t.currentAttempt<e.blockedReply.maxRetries,o=performance.now(),{outcome:s,guardrails:c,structured:l}=await Sp({policy:e,attemptEvents:n.attemptEvents,withheld:n.withheldVisible===!0,released:n.released,shown:Dp(r,t.currentGen)?``:n.released,generation:t.currentGen,request:t.currentReq,profile:r,canRetry:a,...n.promptLeaks?{promptLeaks:n.promptLeaks}:{},givenUrls:n.givenUrls,canaryGiven:n.canaryGiven,privateSystem:i,...n.ownTools?{ownTools:n.ownTools}:{}});n.trace.root.event(`theorem.guardrail`,D(`egress`,performance.now()-o,c.at(-1)?.guardrail,{stage:`output_final`,trust:`untrusted`}));for(let e of c)n.allEmittedEvents.push(e),yield e;if(l!==void 0){let e=P(n.attemptEvents,e=>e.type===`structured`);e&&(n.attemptEvents[n.attemptEvents.indexOf(e)]={...e,structured:l})}return s.action===`refusal`?(n.lastStop=vp,n.allEmittedEvents.push(s.event),yield s.event,`terminal`):s.action===`withhold`?(n.lastStop=vp,yield s.event,`terminal`):s.action===`retry`?(yield Tp(t,n,r,s.nextRequest,`egress`),`continue`):`pass`}function kp(e){let t={};for(let n of new Set(e.map(e=>e.path))){let r=e.filter(e=>e.path===n).map(({item:e})=>e);t=Ir(t,n,r)}return t}function Ap(e,t){let n={type:`object`,properties:{},required:[]};e.$defs!==void 0&&(n.$defs=e.$defs);for(let r of t){let t=pr(e,r);if(!t)continue;let i=r.split(`.`),a=n;for(let[e,n]of i.entries()){if(a.required.includes(n)||a.required.push(n),e===i.length-1){a.properties[n]={type:`array`,items:t};break}let r=a.properties[n],o=r?.type===`object`?r:{type:`object`,properties:{},required:[]};a.properties[n]=o,a=o}}return n}function jp(e,t){let n=e.reply;for(let r of new Set(e.refused.map(e=>e.path))){let i=wr(n,r),a=wr(t,r);if(!Array.isArray(i)||!Array.isArray(a))continue;let o=[...i],s=e.refused.filter(e=>e.path===r);for(let[e,t]of s.entries())e<a.length&&(o[t.index]=a[e]);n=Ir(n,r,o)}return n}function Mp(e,t){let n=e;for(let e of new Set(t.map(e=>e.path))){let r=wr(n,e);if(!Array.isArray(r))continue;let i=new Set(t.filter(t=>t.path===e).map(({index:e})=>e));n=Ir(n,e,r.filter((e,t)=>!i.has(t)))}return n}function Np(e,t,n,r){let i={type:`structured`,structured:t,...n.length?{removed:n.map(({path:e,reason:t,item:n})=>({path:e,reason:t,item:n}))}:{},...r?{failed:r}:{}};e.attemptEvents=[...e.attemptEvents.filter(e=>e.type!==`structured`&&e.type!==`text`),{type:`text`,text:JSON.stringify(t)},i]}function Pp(e){let{flow:t,state:n,profile:r,reply:i,refused:a,structured:o}=e,s=new Map,c=a.map(({path:e,reason:t})=>{let n=s.get(e)??0;return s.set(e,n+1),`${e}[${n}]: ${t}`}).join(`
|
|
11
|
+
`),l=xp(t.currentReq,kp(a),c,U(`repair.items_guidance`,{},r.labels));t.pendingItemFix={reply:i,refused:a,structured:o};let u=Tp(t,n,r,l,`validation`);return t.currentGen={...t.currentGen,structured:{id:o.id,jsonSchema:Ap(o.jsonSchema,a.map(({path:e})=>e))}},u}async function Fp(e,t,n,r,i){let a=t.currentAttempt<(e.maxRetries??0),o=t.pendingItemFix,s=i;o&&(t.pendingItemFix=void 0,t.currentGen={...t.currentGen,structured:o.structured},s=jp(o,i),Np(n,s,[]));let c=await Cp({validation:e,generation:t.currentGen,latestStructured:s,request:t.currentReq,canRetry:a});if(c.action===`retry`)return Tp(t,n,r,c.nextRequest,`validation`);if(s===void 0)return`pass`;c.failed&&Ip(n,c.failed);let l=t.currentReq.input?.slots,u=await dr(s,e.items,{...l?{slots:l}:{},toolResults:n.toolResults});if(u.length===0)return`pass`;let d=u.filter(e=>e.onFail===`fix`),f=t.currentGen.structured;return d.length>0&&a&&!o&&f?Pp({flow:t,state:n,profile:r,reply:s,refused:d,structured:f}):(Np(n,Mp(s,u),u,c.failed),`pass`)}function Ip(e,t){let n=P(e.attemptEvents,e=>e.type===`structured`);n&&(e.attemptEvents[e.attemptEvents.indexOf(n)]={...n,failed:t})}function Lp(e){return e===`terminal`?{status:`terminal`}:e===`continue`?{status:`continue`}:null}async function*Rp(e){let{flow:t,state:n,profile:r,system:i,provider:a}=e,o=wc(r)?.validation,s=I(r.guardrails),c=nr(s,C);n.stepCount=0,n.replyText=``,n.replyMessages=[];let l;for(;;){n.attemptEvents=[],n.released=``,n.withheldVisible=!1,n.promptLeaks=void 0;let e=yield*_p({safe:t.currentReq,profile:r,generation:t.currentGen,system:i,provider:a,state:n});if(l=e.latestStructured,n.lastStop?.kind===`tool`||n.lastStop?.kind===`gate`||n.lastStop?.kind===`step_limit`)break;if(n.lastStop?.kind===`cancelled`)return{status:`terminal`};let o=yield*nl({profile:r,generation:t.currentGen,state:n,stage:`before_end`,step:Math.max(n.stepCount,1),reply:e.reply,...e.replyAt===void 0?{}:{replyAt:e.replyAt},onStage:t.currentReq.onStage,signal:t.currentReq.signal,host:t.currentGen.host,injectWouldExceedMaxSteps:Kc(n.stepCount,t.currentGen.maxSteps)});if(o.abort)return n.lastStop={kind:`cancelled`,...typeof o.abort==`object`&&o.abort.reason?{native:o.abort.reason}:{}},{status:`terminal`};if(!(o.injectCount>0))break}if(c){let e=Lp(yield*Op(s,t,n,r,i.private));if(e)return e;l=bp(n.attemptEvents).structured??l}if(o){let e=await Fp(o,t,n,r,l);if(e!==`pass`)return yield e,{status:`continue`}}if(o||c){let e=n.withheldVisible||Dp(r,t.currentGen);yield*wp(n.attemptEvents,!e,t.currentGen)}return{status:`success`}}async function*zp(e,t,n,r,i,a){let{blockedReply:o}=I(t.guardrails),s=Math.max(wc(t)?.validation?.maxRetries??0,o.onBlock===`retry`?o.maxRetries:0),c={currentAttempt:0,currentGen:n,currentReq:e};for(;c.currentAttempt<=s;){B(e.signal);let n=yield*Rp({flow:c,state:a,profile:t,system:r,provider:i});if(n.status===`terminal`||n.status===`success`)break}}var Bp=new Set([`config`,`request`,`auth`,`internal`]);function Vp(e){return e.find(e=>e.type===`error`)}function Hp(e){let t=new Map,{registry:n,req:r}=e;return{async*run({tool:i,callId:a,input:o,caller:s,span:c,signal:l}){let u=s.labels,d=(e,t,n)=>({failure:{code:e,kind:t,message:n}}),f=t.get(i.name)??0;if(i.maxCallsPerTurn!==void 0&&f>=i.maxCallsPerTurn)return d(`call_limit`,`declined`,U(`tool.agent_call_limit`,{tool:i.name},u));t.set(i.name,f+1);let p=n.profiles.get(i.profile),m=jn(p,e=>n.tools.get(e));if(m)throw new V(`config`,`Agent tool "${i.name}" can't run '${i.profile}': ${m}`);let{sent:h,hostInput:g}=yr(i,o);if(g&&!r.onAgentCall)throw new V(`config`,`Agent tool "${i.name}" declares host fields, which need the request's onAgentCall`);let _=await r.onAgentCall?.({tool:i.name,callId:a,profile:i.profile,input:h,...g?{hostInput:g}:{},caller:s.id,depth:e.depth+1,...r.metadata?{metadata:r.metadata}:{},...l?{signal:l}:{}});if(_&&`refuse`in _)return d(`refused_by_host`,`declined`,_.refuse);let{provider:v,...y}=_??{},b=Up(e,p.id,y.model,v);if(!c)throw new V(`internal`,`Agent tool "${i.name}" ran without a span`);let{speech:S,...C}=h,w=[];try{for await(let t of e.runNested({req:{...S?{speech:S}:{},...y,profile:i.profile,execution:r.execution,pageExecution:r.pageExecution,input:y.input??C,...l?{signal:l}:{},...r.onAgentCall?{onAgentCall:r.onAgentCall}:{}},provider:b,parent:c,agentDepth:e.depth+1}))w.push(t),yield t}catch(e){if(!(e instanceof V)||Bp.has(e.kind)||j(e))throw e;w.push(x(e))}return B(l),Wp(w,i.name,i.profile,u)}}}function Up(e,t,n,r){return r?ec(e.registry,t,n,r):e.provider?nc(e.provider,t,n):ec(e.registry,t,n,{})}function Wp(e,t,n,r){let i=P(e,e=>e.type===`done`),a=i?.tokens??fe(e),o=a?{tokens:a}:{},s=Vp(e);if(s&&Bp.has(s.errorKind))throw new V(s.errorKind,`Agent '${n}' failed: ${s.errorInternal??s.error}`);let c=i?.stop.kind;if(c!==`completed`||s){let e=U(`tool.agent_failed`,{tool:t},r),i=s?.errorCopy?de(s.errorCopy,r):s?.error;return{failure:{code:`agent_failed`,kind:s?.errorKind??`failed`,message:i?`${e}\n${i}`:e,details:{agent:n,...c?{stop:c}:{},...s?.errorCopy?{reasons:s.errorCopy}:{}}},...o}}return{output:Nr(e),...o}}function Gp(e,t){return sr(e,t?.include.guardrailMatchPreview??!1)}var Kp=1e3;function qp(e,t){let n=De(t,e.known?.labels);return(n.type===`text`||n.type===`structured_draft`)&&!e.shownText&&(e.shownText=!0,e.root.set({"theorem.turn.time_to_first_text":e.root.msSinceStart()/Kp})),e.seen.push(n),e.delivered.add(n,e.root.nowUnixNano()),n}function*Jp(e,t,n){let r=Gp(t,e.observability);wf(r,n)||(yield qp(e,r))}function Yp(e,t){return e.models[t]?.compaction}function Xp(){return{builtins:[],gated:[],visible:[],executable:[],wire:[]}}function Zp(e){let t=om(e.registry,e.req,e.parent.child(`invoke_agent ${e.req.profile}`,Ze(e.req)),e.canaries);return t.agentDepth=e.agentDepth,e.compacting&&(t.compacting=e.compacting),t.observability=Hr(t.known?.observability),cm(t,nc(e.provider,e.req.profile,e.req.model,e.req))}async function Qp(e){let t=e.spec.profile===void 0,n=e.spec.profile??e.owner,r=e.registry.profiles.get(n),{history:i,droppedMedia:a}=mc(e.toCompact,r);if(i.length===0)return{droppedMedia:a,failure:{unreadable:!0}};let o={profile:n,...t&&e.model!==r.defaultModel?{model:e.model}:{},input:{text:U(`compaction.request`,{},r.labels),history:i},signal:e.signal},s=[];try{for await(let n of Zp({registry:e.registry,req:o,provider:e.provider,parent:e.parent,canaries:e.canaries,agentDepth:0,compacting:t?`self`:`other`}))s.push(n)}catch(t){B(e.signal);let n=t instanceof V?t.kind:`internal`;if(Bp.has(n))throw t;return{droppedMedia:a,failure:{error:n}}}B(e.signal);let c=fe(s),l=c?{tokens:c}:{},u=P(s,e=>e.type===`done`)?.stop.kind,d=Vp(s);if(d&&Bp.has(d.errorKind))throw new V(d.errorKind,`Compactor '${n}' failed: ${d.errorInternal??d.error}`);let f=d?.errorKind;if(u!==`completed`||f)return{droppedMedia:a,failure:{...u?{stop:u}:{},...f?{error:f}:{}},...l};let p=se(s),m=P(p,e=>e.type===`structured`)?.structured,h=m===void 0?p.flatMap(e=>e.type===`text`?[e.text]:[]).join(``):JSON.stringify(m);return h.trim()?{summary:h,droppedMedia:a,...l}:{droppedMedia:a,failure:{stop:u,empty:!0},...l}}function $p(e){return P(e,e=>e.type===`tokens`)?.tokens}function em(e,t,n){return{timing:e.timing,meter:ac(e),budget:e.maxTokens,threshold:e.compactAt,...e.trigger?{trigger:`custom`}:{},...t?{tokens_before:t.tokens,unknown_media:t.unknownMedia}:{},needed:n}}function tm(e,t){return{outcome:e.outcome,messages_before:t,messages_after:e.history.length,dropped_media:e.droppedMedia,...e.failure?.stop?{failure_stop:e.failure.stop}:{},...e.failure?.error?{failure_error:e.failure.error}:{},...e.failure?.empty?{failure_empty:!0}:{},...e.failure?.unreadable?{failure_unreadable:!0}:{},...e.summary===void 0?{}:{summary:Ft(e.summary)}}}async function nm(e){let t=await cc({spec:e.spec,input:e.input}),n=t!==void 0&&await uc(t,e.spec),r=em(e.spec,t,n);if(!(n&&t)){e.parent.event(`theorem.compaction`,r);return}let i=await dc(e.history,e.spec);if(i.toCompact.length===0){e.parent.event(`theorem.compaction`,r);return}let{toCompact:a,...o}=hc(i,await Qp({...e,toCompact:i.toCompact}),t.tokens,e.spec);return e.parent.event(`theorem.compaction`,{...r,...tm(o,e.history.length)}),{type:`compaction`,timing:`before`,meter:t.meter,tokensBefore:t.tokens,unknownMedia:t.unknownMedia,messagesBefore:e.history.length,messagesAfter:o.history.length,...o}}async function rm(e,t){if(t.history.length===0)return e;let n=$p(t.seen),r=await cc({spec:t.spec,input:t.input,prompt:n}),i=r!==void 0&&await uc(r,t.spec);if(t.span.event(`theorem.compaction`,em(t.spec,r,i)),!(i&&r))return e;let a={needed:!0,meter:r.meter,tokens:r.tokens,unknownMedia:r.unknownMedia,history:t.history};return n&&n.input>0&&(a.promptTokens=n.input,n.estimated?.includes(`input`)&&(a.promptTokensEstimated=!0)),{...e,compaction:a}}async function*im(e){let{safe:t,profile:n,generation:r,system:i,provider:a}=e,o=al({tools:e.registry.tools,profile:n,generation:r,trace:e.trace,...e.agents?{agents:e.agents}:{}});e.outState.state=o;let s=yield*nl({profile:n,generation:r,state:o,stage:`pre_turn`,step:1,onStage:t.onStage,signal:t.signal,host:r.host});if(s.abort){let e={kind:`cancelled`,...typeof s.abort==`object`&&s.abort.reason?{native:s.abort.reason}:{}},i={type:`done`,stop:e,traceparent:o.trace.root.traceparent()};o.allEmittedEvents.push(i),yield i,yield*nl({profile:n,generation:r,state:o,stage:`post_turn`,step:1,onStage:t.onStage,signal:t.signal,stop:e,host:r.host});return}yield*zp(t,n,r,i,a,o);let c=ee(o.allEmittedEvents),l=M({stop:o.lastStop??{kind:`completed`},...o.providerState&&!(`providerContinuation`in n&&n.providerContinuation?.history===`stateless`)&&(!o.lastStop||[`completed`,`tool`,`gate`].includes(o.lastStop.kind))?{providerState:o.providerState}:{},traceparent:o.trace.root.traceparent(),...c?{tokens:c}:{}},Lr(r.tools));o.allEmittedEvents.push(l),yield l}async function*am(e,t,n,r,i){if(e.safe&&e.system!==void 0&&e.trace)for await(let a of im({registry:e.registry,safe:e.safe,profile:t,generation:n,system:e.system,provider:r,trace:e.trace,agents:e.agents,outState:e})){let r=Gp(await _m(a,e,n,i),e.observability);if(wf(r,t)||(yield qp(e,r)),r.type===`done`&&e.state&&!e.state.allEmittedEvents.some(e=>e.type===`stage`&&e.stage===`post_turn`))for await(let i of nl({profile:t,generation:n,state:e.state,stage:`post_turn`,step:Math.max(e.state.stepCount,1),onStage:e.safe.onStage,signal:e.safe.signal,stop:r.stop,host:n.host}))yield*Jp(e,i,t)}}function om(e,t,n,r){return{registry:e,req:t,known:e.profiles.find(t.profile),seen:[],delivered:new T,root:n,compacting:!1,agentDepth:0,canary:``,canaries:r}}function sm(e,t){let n=e.trace?.calls??0;Te(e.root,{seen:e.seen,delivered:e.delivered,attempts:n>0?(e.trace?.attempt??0)+1:0,calls:n,...t===void 0?{}:{thrown:t}})}async function*cm(e,t){try{yield*dm(e,t)}catch(t){if(j(t)){yield*um(e),sm(e);return}throw sm(e,t),t}sm(e)}async function*lm(e,t,n,r){let i=Dn(`invoke_agent ${t.profile}`,{...Ze(t),...t.traceparent?{traceparent:t.traceparent}:{}}),a=om(e,t,i.root,[]),{sink:o,policy:s}=xs({override:r,observability:a.known?.observability,guardrails:a.known?.guardrails});a.observability=s;try{yield*cm(a,n)}finally{await ps(o,Wr({spans:i.collect(),policy:s,canaries:a.canaries,...t.metadata?{metadata:t.metadata}:{}}),s)}}async function*um(e){if(e.seen.some(e=>e.type===`done`))return;let t={kind:`cancelled`};yield qp(e,Gp({type:`done`,stop:t,traceparent:e.root.traceparent()},e.observability));let n=e.known,r=e.generation;if(!(n&&r&&e.safe&&e.trace))return;let i=e.state??al({tools:e.registry.tools,profile:n,generation:r,trace:e.trace,allEmittedEvents:[...e.seen]});for await(let a of nl({profile:n,generation:r,state:i,stage:`post_turn`,step:Math.max(i.stepCount,1),onStage:e.safe.onStage,stop:t,host:r.host}))yield*Jp(e,a,n)}async function*dm(e,t){let n=performance.now(),r=Jn(e.req,e.registry.profiles.get(e.req.profile)),i=performance.now()-n;e.safe=r.request;let a=r.events.filter(e=>e.type===`guardrail`);a.length===0&&e.root.event(`theorem.guardrail`,D(`input`,i,void 0,{stage:`input`,trust:`untrusted`}));for(let t of r.events)t.type===`guardrail`&&e.root.event(`theorem.guardrail`,t===a.at(-1)?D(`input`,i,t.guardrail,t.guardrail):A(t.guardrail)),yield qp(e,Gp(t,e.observability));if(r.refusal)throw r.refusal;let{profile:o,generation:s}=Ar(e.registry,e.safe);await Br(e.registry.tools,s.tools,o,e.safe),e.compacting===`self`&&(s.tools=Xp()),s.builtins=s.tools.builtins,s.canary&&=await Jt(o.id,s.resolvedSystem),e.generation=s,e.canary=s.canary,e.canaries.push(s.canary);let c=o.models[s.model];e.trace={root:e.root,attempt:0,calls:0,binding:c},e.compacting||(e.agents=fm(e,t,c)),B(e.safe.signal);let l=e.compacting?void 0:Yp(o,s.model),u=await gm(e,o,s,l,t);u&&(yield qp(e,Gp(u,e.observability))),e.system=Xn(s.resolvedSystem,[kn(e.canary,o.labels),yt(`identity.system`).includes(o.type)?hn(o.labels):``,ze(o)?.context?On(o.labels):``]),yield*am(e,o,s,t,l)}function fm(e,t,n){return Hp({registry:e.registry,req:e.safe??e.req,provider:t,own:n,depth:e.agentDepth,runNested:t=>Zp({...t,registry:e.registry,canaries:e.canaries})})}function pm(e,t,n){return Hp({registry:e,req:t,provider:t.provider?tc(e,t.provider):void 0,own:void 0,depth:0,runNested:t=>Zp({...t,registry:e,canaries:n})})}function mm(e,t,n,r){return Hp({registry:e,req:{...t,execution:n.execution},provider:tc(e,n),own:void 0,depth:0,runNested:t=>Zp({...t,registry:e,canaries:r})})}function hm(e,t,n,r){return nc(r,n.profile??t.id,n.profile?void 0:e.req.model)}async function gm(e,t,n,r,i){if(!(r?.timing===`before`&&e.safe))return;let a=hm(e,t,r,i);if(!n.history?.length)return;let o=await nm({registry:e.registry,owner:t.id,model:n.model,spec:r,history:n.history,input:e.safe.input,provider:a,parent:e.root,canaries:e.canaries,signal:e.safe.signal});return o&&(n.history=o.history),o}async function _m(e,t,n,r){return e.type===`done`&&r?.timing===`after`&&t.safe?await rm(e,{spec:r,history:n.history??[],input:t.safe.input,seen:t.seen,span:t.root}):e}async function vm(e,t,n,r){let i=e.profiles.get(t.profile),a=t.model??i.defaultModel,o=He(i,a).compaction;if(!o)throw new V(`config`,`Profile ${i.id} model '${a}' has no compaction`);let s=await dc(t.history,o);if(s.toCompact.length===0)return;let c={profile:t.profile,input:{},...t.conversationId?{conversationId:t.conversationId}:{}},l=Dn(`invoke_agent ${t.profile}`,{...Ze(c),...t.traceparent?{traceparent:t.traceparent}:{}}),{sink:u,policy:d}=xs({override:r,observability:i.observability,guardrails:i.guardrails}),f=[];try{let r=hc(s,await Qp({registry:e,owner:i.id,model:a,toCompact:s.toCompact,spec:o,provider:n,parent:l.root,canaries:f,...t.signal?{signal:t.signal}:{}}),t.tokens,o);return l.root.event(`theorem.compaction`,{timing:o.timing,meter:ac(o),budget:o.maxTokens,threshold:o.compactAt,tokens_before:t.tokens,...tm(r,t.history.length)}),l.root.end(),r}catch(e){throw xt(l.root,e),e}finally{await ps(u,Wr({spans:l.collect(),policy:d,canaries:f,...t.metadata?{metadata:t.metadata}:{}}),d)}}function ym(e){return Array.isArray(e.input)?e.input:[]}function bm(e){return typeof e==`string`?e:JSON.stringify(e)}function xm(e={}){let t=new Map(Object.entries(e));return{get:e=>Promise.resolve(t.get(e)),set:(e,n)=>(t.set(e,n),Promise.resolve())}}async function Sm(e,t,n,r,i,a,o,s){let c=!a&&!i.interrupted&&(i.stop.kind===`completed`||i.stop.kind===`tool`),l=c?await ts(e,t,n,i.state,r.history??[]):void 0;return{type:`batch`,row:{},turnPhase:c?i.stop.kind===`tool`?`streaming`:`complete`:`abort`,events:[...c?o:[],...s,...l?[{type:`provider_checkpoint`,providerState:l}]:[],...i.stop.kind===`tool`?[]:[{type:`done`,stop:i.stop,interrupted:i.interrupted,providerState:l}]]}}function Cm(e){return{type:`closed`,code:e?.code??1e3,reason:e?.reason??`provider-closed`,...e?.error?{error:e.error instanceof V?e.error:new V(`unavailable`,U(`provider.session_closed`))}:{},...e?.warning?{goAway:e.warning}:{}}}function wm(e,t,n){if(t.has(e.callId)||n?.some(t=>t.role===`tool`&&t.tool_call_id===e.callId))throw new V(`bad_response`,U(`provider.settled_call`));t.set(e.callId,e.name)}function Tm(e){return{type:`batch`,row:{},turnPhase:`streaming`,events:e}}function Em(e,t,n){let r=as(e);return{type:`tool`,tool:!t.some(e=>e.type===`tool`)&&n.length?{...r,reasoning:n.splice(0)}:r}}function Dm(e,t){let n=t.get(e);if(!n)throw new V(`bad_response`,U(`provider.tool_cancel_missing`));return Tm([{type:`tool`,tool:{callId:e,name:n,at:Date.now(),phase:`cancel`}}])}async function Om(e,t,n,r,i,a={}){let o=await es(e,t,i,n.history??[],a),s=Zo(e,t,`live`,r,{...n,liveConnection:!0}),c=await s.openSession(is(n,mt(e,t),o)),l=Promise.resolve(),u=e=>{l=l.then(()=>Go(e,n.signal))};return{setup:{},flush:()=>l,sendInput(e){if(e.type===`text`)u(()=>c.sendText(e.text));else if(e.type===`audio`&&`data`in e)u(()=>c.sendAudio(e));else if(e.type===`video`&&`data`in e)u(()=>c.sendVideo(e));else throw new V(`unsupported`,U(`provider.live_input`))},sendContext(e){u(()=>c.sendContext({server:e}))},sendToolResponse(e,t,n,r){u(()=>c.sendToolResult({callId:e,name:t,text:typeof n==`string`?n:JSON.stringify(n),...r?.length?{parts:r}:{}}))},close(e,t){l=l.then(()=>c.close(t),()=>c.close(t))},async*batches(){o.warning&&(yield Tm([{type:`provider_warning`,warning:o.warning}]));let r=new Map,i=[],a=[],u=[],d=!1,f=c.events()[Symbol.asyncIterator]();try{for(;;){let o=await Go(()=>f.next(),n.signal);if(o.done)break;let c=o.value;await Go(()=>l,n.signal);let p=c;if(p.type!==`raw`){if(p.type===`reasoning`){let{type:e,...t}=p;u.push(t)}else if(p.type===`session`&&p.session.kind===`turn_complete`)a.push(p);else if(p.type===`session`&&a.length&&!i.length&&(p.session.kind===`working`||p.session.kind===`idle`))yield Tm([...a,p]),a=[];else if(p.type===`tool_call`)wm(p.call,r,n.history),i.push(Em(p.call,i,u));else if(p.type===`tool_cancel`){let e=Dm(p.callId,r);i=i.filter(e=>e.type!==`tool`||e.tool.callId!==p.callId),yield e}else if(p.type===`error`&&(d=!0),p.type===`done`){if(p.stop.kind===`generation_complete`){yield Tm([{type:`done`,stop:p.stop}]);continue}yield await Sm(e,t,s.keySlot(),n,p,d,i,a),i=[],a=[],u=[],d=!1}else yield Tm([p])}}}finally{let e=f.return?.();e&&e.catch(()=>{})}(i.length||a.length)&&(yield{type:`batch`,row:{},turnPhase:`abort`,events:[{type:`done`,stop:{kind:`stream_incomplete`}}]}),yield Cm(c.closeInfo?.())}}}function km(e,t){let{detect:n}=I(e.guardrails),r=At(t,`live_user`,n),i=fn(`live_user`,r),a=Hr(e.observability).include.guardrailMatchPreview,o=i?sr(G(i),a):void 0;return{...r.text===void 0?{}:{text:Ut(r.text)},...o?{guardrail:o}:{}}}function Am(e,t){let{detect:n}=I(e.guardrails),r=Hr(e.observability).include.guardrailMatchPreview,i=[],a=[];for(let e of[...Oe].reverse()){if(t[e]===void 0)continue;let o=Mn({[e]:t[e]},()=>mn(`context`,n));for(let e of o.events)a.push(sr(G(e),r));let s=o.context?.[e];!o.blocked&&typeof s==`string`&&i.push(pn(e,s))}return{texts:i,guardrails:a}}var jm=new Set([`text`,`thought`,`media`,`tool`]),Mm=1e3;function Nm(e){let[t,...n]=e.parts??[];if(!(e.role!==`user`||e.content||n.length>0))return t?.type===`audio`&&`data`in t?t:void 0}function Pm(e){try{let t=e.chunks.map(cn),n=new Uint8Array(t.reduce((e,t)=>e+t.byteLength,0)),r=0;for(let e of t)n.set(e,r),r+=e.byteLength;return[{type:`audio`,mimeType:e.mimeType,data:xn(n)}]}catch{return e.chunks.map(t=>({type:`audio`,mimeType:e.mimeType,data:t}))}}var Fm=class{items=[];run;add(e){for(let t of e){let e=Nm(t);e&&this.run?.mimeType===e.mimeType?this.run.chunks.push(e.data):(this.run=e?{mimeType:e.mimeType,chunks:[e.data]}:void 0,this.items.push(this.run??t))}}messages(){return this.items.map(e=>`chunks`in e?{role:`user`,parts:Pm(e)}:e)}};function Im(e){let t=N(e.setup),n=N(t?.sessionResumption);if(t&&n&&`handle`in n){let{handle:r,...i}=n;return{...e,setup:{...t,sessionResumption:i}}}let r=N(e.sessionResumptionUpdate);if(r&&`newHandle`in r){let{newHandle:t,...n}=r;return{...e,sessionResumptionUpdate:n}}return e}function Lm(e,t){return typeof t==`string`?{[e]:t}:{}}function Rm(e){if(e.type===`session`){let{session:t}=e;return t.kind===`turn_complete`?void 0:{kind:t.kind,...`timeLeftMs`in t?he(`time_left_ms`,t.timeLeftMs):{}}}if(e.type!==`evidence`)return;let{evidence:t}=e;if(t.kind===`voice_activity`){let e=N(t.raw);return{kind:`voice_activity`,...Lm(`activity`,e?.type),...Lm(`audio_offset`,e?.audioOffset)}}if(t.kind===`session_resumption`)return{kind:`session_resumption`,...he(`resumable`,t.resumable),handle_issued:!!e.sessionResumptionHandle}}var zm=class{tree;out;identity;root;bound;response;lastResponse;pendingFrames=[];pendingInput=new Fm;pendingHeard=[];held;tokens=[];responses=0;callParents=new Map;writes=Promise.resolve();failure;endedByGoAway=!1;socketHasClosed=!1;closing;agentCanaries=[];constructor(e,t,n){this.tree=e,this.out=t,this.identity=n,this.root=e.root}bind(e){this.bound=e}sent=e=>{if(e.eventType===`key_fallback`){this.keyFallback(e);return}if(e.direction===`receive`){let t=N(e.body);t&&this.row(t);return}let t=N(e.body);if(!t)return;let n=Im(t);`setup`in t?this.root.event(`theorem.wire.request`,{body:H(n)}):(this.pendingInput.add(ym(e)),this.pendingFrames.push({timeUnixNano:this.root.nowUnixNano(),body:n}))};keyFallback(e){this.root.event(`theorem.session`,{kind:`key_fallback`,key_slot:String(e.from),to_key_slot:String(e.keySlot),"error.type":String(e.errorKind),error:String(e.error)});let t=this.bound;t?.binding&&(this.bound={...t,binding:{...t.binding,keySlot:String(e.keySlot)}})}setup(e){this.root.event(`theorem.upstream.row`,{row:H(e)}),this.root.event(`theorem.session`,{kind:`setup_complete`})}receive(e){switch(e.type){case`batch`:for(let t of e.events)this.route(t);this.row(e.row);return;case`row`:this.row(e.row);return;case`error`:e.row&&this.row(e.row),this.failure??=e.error;return;case`closed`:this.socketClosed(e.code,e.reason,`provider`,e),e.goAway?this.endedByGoAway=!0:this.failure??=e.error;return}}delivered(e){(e.type!==`evidence`||e.evidence.kind!==`input_transcription`)&&this.response?.delivered.add(e,this.root.nowUnixNano())}outbound(e){this.response?this.response.call.guardrail(e.guardrail):this.inbound(e)}inbound(e){this.root.event(`theorem.guardrail`,A(e.guardrail))}outboundTime(e){this.response?.call.guardTime(`live_output`,e)}inboundCheck(e,t){this.root.event(`theorem.guardrail`,D(`live_input`,e,t?.guardrail,{stage:`live_inbound`,trust:`untrusted`}))}socketClosed(e,t,n,r){if(this.socketHasClosed)return;this.socketHasClosed=!0;let i=r?.goAway;this.root.event(`theorem.session`,{kind:`closed`,code:e,reason:t,initiator:n,...r?.error?{"error.type":ge(r.error)}:{},...i?{cause:`go_away`,...he(`time_left_ms`,i.timeLeftMs),closed_after_ms:i.closedAfterMs}:{}})}async settle(){return this.response?.complete?await this.endResponse({}):void 0}responseTraceparent(){return(this.response?.call.span??this.lastResponse)?.traceparent()}toolRecord(e){let t;return{open:(n,r)=>(t=Dn(n,{attributes:{...this.identity,...r},traceparent:this.callParents.get(e)??this.root.traceparent(),clock:this.tree.clock}),t.root),finish:()=>{t&&this.write(t.collect())}}}close(e){return this.closing??=this.finish(e),this.closing}async finish(e){let t=e.thrown!==void 0&&j(e.thrown),n=t?void 0:e.thrown??this.failure;this.response&&await this.endResponse(n===void 0?{cancelled:!0}:{thrown:n});for(let e of this.pendingFrames)this.root.event(`theorem.wire.request`,{body:H(e.body)},e.timeUnixNano);this.pendingFrames=[];let r=_e(this.tokens);this.root.set({...r?le(r):{},"theorem.steps":this.responses,...t?{"theorem.stop.kind":`cancelled`}:{},...!t&&this.endedByGoAway?{"theorem.stop.kind":`go_away`}:{}}),n===void 0?this.root.end(t||this.endedByGoAway?{code:`UNSET`}:{code:`OK`}):xt(this.root,n),this.write(this.tree.collect()),await this.writes}route(e){let t=Rm(e);if(t){this.root.event(`theorem.session`,t);return}if(e.type===`tool`&&e.tool.phase===`cancel`){(this.response?.call.span??this.root).event(`theorem.tool.cancel`,{"gen_ai.tool.call.id":e.tool.callId,"gen_ai.tool.name":e.tool.name});return}let n=e.type===`evidence`?e.evidence.kind:void 0;if(n===`input_transcription`&&(!this.response||this.response.answering)){this.pendingHeard.push(e);return}let r=this.open();e.type===`session`?r.complete=!0:(zf(r.usage,e),r.call.observe(e),!r.answering&&(jm.has(e.type)||n===`output_transcription`)&&(r.call.span.set({"gen_ai.response.time_to_first_chunk":r.call.span.msSinceStart()/Mm}),r.answering=!0),e.type===`tool`&&e.tool.phase===void 0&&this.callParents.set(e.tool.callId,r.call.span.traceparent()),e.type===`done`&&r.stop?.kind!==`interrupted`&&(e.stop.kind!==`completed`||r.stop?.kind!==`generation_complete`)&&(r.stop=e.stop))}row(e){(this.response?.call.span??this.root).event(`theorem.upstream.row`,{row:H(Im(e))})}open(){if(this.response)return this.response;let e=this.bound;if(!e)throw new V(`internal`,`Live trace received a response before it was bound`);let t=Rf(e.system,{history:[],input:[]},this.held),n=this.pendingFrames[0]?.timeUnixNano,r,i=$e((e,t)=>(r=Dn(e,{...t,attributes:{...this.identity,...t.attributes},traceparent:this.root.traceparent(),clock:this.tree.clock,...n?{startTimeUnixNano:n}:{}}),r.root),{req:e.request,usage:t,binding:e.binding,transport:e.generation.transport,step:this.responses+1});if(!r)throw new V(`internal`,`Live response span was not opened`);i.span.set({"gen_ai.request.stream":!0});for(let e of this.pendingFrames)i.span.event(`theorem.wire.request`,{body:H(e.body)},e.timeUnixNano);let a={tree:r,call:i,usage:t,input:this.pendingInput,delivered:new T,answering:!1,complete:!1};for(let e of this.pendingHeard)i.observe(e);return this.pendingFrames=[],this.pendingInput=new Fm,this.pendingHeard=[],this.response=a,a}async endResponse(e){let t=this.response,n=this.bound;if(!(t&&n))return;this.response=void 0,this.responses+=1,t.usage.conversation={history:t.input.messages(),input:[]};let r=e.thrown===void 0&&!e.cancelled,i=r?await Kf(t.usage,n.generation):void 0;return r&&(this.held=await Wf(t.usage)),t.call.span.set({"theorem.output.delivered":[{role:`assistant`,parts:t.delivered.parts}]}),t.call.end({...i?.tokens?{tokens:i.tokens}:{},stop:e.cancelled?{kind:`cancelled`}:t.stop,...e.thrown===void 0?{}:{thrown:e.thrown}}),i?.tokens&&this.tokens.push(i.tokens),this.lastResponse=t.call.span,this.write(t.tree.collect()),i}write(e){let t=Wr({spans:e,policy:this.out.policy,canaries:[...this.bound?[this.bound.canary]:[],...this.agentCanaries],...this.out.metadata?{metadata:this.out.metadata}:{}});this.writes=this.writes.then(()=>ps(this.out.sink,t,this.out.policy))}};function Bm(e,t,n){let{sink:r,policy:i}=xs({override:n,observability:t?.observability,guardrails:t?.guardrails}),a={"gen_ai.agent.name":e.profile,...he(`gen_ai.conversation.id`,e.conversationId)};return new zm(Dn(`invoke_agent ${e.profile}`,{kind:`INTERNAL`,attributes:{"gen_ai.operation.name":`invoke_agent`,...a},links:y(e.links),...e.traceparent?{traceparent:e.traceparent}:{}}),{sink:r,policy:i,...e.metadata?{metadata:e.metadata}:{}},a)}function Vm(e,t){return e??(t?void 0:{unanswered:!0})}function Hm(e){return!(e instanceof V)||!e.copy?!1:`key`in e.copy?e.copy.key===`tool.execution_uncertain`:e.copy.some(e=>e.key===`tool.execution_uncertain`)}function Um(e){return typeof e.state==`object`&&e.state.released===!0}function Wm(e){return e.phase===`complete`||e.phase===`error`||e.phase===`gate`}function Gm(e,t,n){let r=e.error?ce(e.error):e.reason;return{type:`session`,session:{kind:`ended`,...t.timeLeftMs===void 0?{}:{timeLeftMs:t.timeLeftMs},message:U(`live.session_ended`,{},n),ended:{cause:`go_away`,code:e.code,closedAfterMs:t.closedAfterMs,...e.error?{errorKind:ge(e.error)}:{}}},...r?{errorInternal:r}:{}}}function Km(e){let t=[];for(let n of e){let e=n.role===`tool`||n.parts?.length?void 0:n.content?.trim();if(!e)return;t.push(e)}return t}function qm(e){if(e.type!==`live`)throw new V(`request`,`runSession requires profile.type 'live' (got '${e.type}' for ${e.id})`)}function Jm(e,t){let n=new Set(e.tools.allow),r=new Set(t.builtins),i=new Set;for(let e of[...t.gated,...t.visible,...t.executable])!n.has(e)&&!r.has(e)&&i.add(e);if(i.size>0){let t=`session snapshot declares tools outside tools.allow: ${[...i].join(`, `)}`;throw new V(`config`,`Profile ${e.id}: ${t}`)}return Lr(t)}function Ym(e){return{profile:e.profile,providerState:e.providerState,system:e.system,builtInArgs:e.builtInArgs,path:e.path,sessionPermissions:e.sessionPermissions,signal:e.signal,metadata:e.metadata,host:e.host,input:{text:``,history:e.history,slots:e.slots}}}function Xm(e,t,n){let{greeting:r,resumed:i}=e.live;if(!t.providerState&&!t.history?.length)return r?Er(e,r,n,`live.greeting`):void 0;if(!(!i||(t.awayMs??0)<(i.afterMs??3e3)))return Er(e,i.prompt,n,`live.resumed.prompt`)}function Zm(e,t){_r(e,{profile:e.id,input:{context:t}})}function Qm(e,t){return!t||!e.live?e:{...e,live:{...e.live,voice:t}}}function $m(e,t){return!t||t.length===0?e:{...e,input:t}}async function eh(e,t,n,r){if(n===`abort`)return Ea(e),t.filter(e=>e.type===`tool`||e.type===`session`||e.type===`done`&&e.interrupted===!0);let i=await _a(e,t);if(i.action===`withhold`)return r(),[...(i.events??[]).filter(e=>!th(e)&&e.type!==`provider_checkpoint`),x(i.error)];let a=i.action===`emit`?i.events:[];if(n!==`complete`)return a;let o=a.filter(e=>!th(e)),s=await Ta(e);return s.action===`withhold`?(r(),[...o.filter(e=>e.type!==`provider_checkpoint`),...s.events??[],x(s.error)]):[...o,...s.action===`emit`?s.events:[],...a.filter(th),{type:`done`,stop:{kind:`completed`}}]}function th(e){return e.type===`session`&&e.session.kind===`turn_complete`}function nh(e){if(e.gated)return;let t=e.modelResult??(e.failure?Ke(e.failure):void 0);return t?F(t):void 0}function rh(e){let t=nh(e);return t===void 0?void 0:{text:bm(t),parts:e.modelResult?.parts}}function ih(e,t){return e.flatMap(e=>{if(e.type===`response`||e.type===`reasoning`)return[];if(e.type!==`done`)return[e];let{type:n,...r}=e;return[M(r,t)]})}function*ah(e){for(;e.length>0;){let t=e.shift();t&&(yield t)}}function oh(e,t,n){return e.length>0?e:t===`abort`||n?[{type:`done`,stop:{kind:`interrupted`},interrupted:!0}]:[{type:`done`,stop:{kind:`completed`}}]}function sh(e,t,n){for(let r of e)r.type===`text`&&n(r.text),r.type===`evidence`&&r.text&&(r.evidence.kind===`input_transcription`||r.evidence.kind===`output_transcription`)&&!r.evidence.interim&&(r.evidence.kind===`input_transcription`&&t(r.text),r.evidence.kind===`output_transcription`&&!e.some(e=>e.type===`text`)&&n(r.text))}async function ch(e,t,n,r){let i=[];for(let a of e)if(r||a.type!==`provider_checkpoint`){if(!r&&a.type===`done`){let{providerState:e,...t}=a;i.push(t)}else if((a.type===`provider_checkpoint`||a.type===`done`)&&a.providerState){let e=[...t];for(let[t,r]of n)e.some(e=>e.tool_calls?.some(e=>e.id===t))||e.push({role:`assistant`,tool_calls:[{id:t,type:`function`,function:{name:r.name,arguments:JSON.stringify(r.arguments)}}]});i.push({...a,...a.type===`provider_checkpoint`?{history:structuredClone(e)}:{},providerState:{...a.providerState,coveredHistoryLength:e.length,coveredHistoryHash:await Ie(e)}})}else i.push(a)}return i}function*lh(e,t){let n=e.filter(e=>e.type===`done`);for(let n of e)n.type!==`done`&&(yield sr(n,t??!1));return n}function uh(e){let{profile:t,canary:n,connection:r,gate:i,givenUrls:a,destinations:o,signal:s,onStage:c,host:l,resolveHost:u,path:d,snapshot:f,trace:p,gateTtlMs:m,signInGate:h}=e,g=e.sessionPermissions,_=e.credentials??xm(),v=new Map,y=!1,b=!1,S=[],C,w=Hr(t.observability).include.guardrailMatchPreview,T=`idle`,E=0,D,O=e.historySeed?.length?structuredClone(e.historySeed):[],k=Promise.resolve(),A=e=>{let t=e.trim();t&&(O.push({role:`user`,content:t}),wn(a.request,t),Ni(o,t))},j=e=>{if(!e)return;let t=O.at(-1);t?.role===`assistant`&&typeof t.content==`string`&&!t.tool_calls?t.content=`${t.content}${e}`:O.push({role:`assistant`,content:e})},ee=(e,t,n)=>{O.push({role:`assistant`,tool_calls:[{id:e.callId,type:`function`,function:{name:e.name,arguments:JSON.stringify(e.arguments)}}]},{role:`tool`,tool_call_id:e.callId,name:e.name,content:t,...n?.length?{parts:n}:{}}),wn(a.tools,t)},M=e=>{S.push(sr(e,w));let t=C;C=void 0,t?.()};for(let t of e.requestEvents)M(t);let ne=()=>S.length>0?Promise.resolve(`queued`):new Promise(e=>{C=()=>e(`queued`)}),N=()=>{if(y)throw new V(`request`,`Live session is closed`)},re=e=>{N(),r.sendInput(e)},ie=(e,t,n,i)=>{ee({name:t.name,callId:e,arguments:t.arguments},n,i),N(),r.sendToolResponse(e,t.name,n,i)},ae=(e,t,n,r)=>{clearTimeout(t.lapse),v.delete(e),ie(e,t,n,r)},oe=(e,n,r)=>{let i=F(Ke(r));M(L({name:n.name,callId:e,operationId:n.operationId,activityFailed:Ve(n.name,t.labels)},r,i)),ae(e,n,i)},P=(e,n)=>{if(y||v.get(e)!==n||typeof n.state!=`object`)return;let{gate:r}=n.state,i=nf(n.name,r.kind===`auth`?r.authChallenge.service:void 0,t.labels);oe(e,n,i)},se=()=>{for(let e of v.values())clearTimeout(e.lapse)},ce=(e,t,n,r,i)=>{let a=h===`answer`&&r.kind===`auth`&&i!==void 0;return!a&&!n?!1:(a&&ie(e,t,i),clearTimeout(t.lapse),t.state={gate:r,createdAt:Date.now(),released:!0},t.lapse=setTimeout(()=>P(e,t),m),!0)},le=e=>{for(let t of e){if(t.type!==`tool`)continue;let e=t.tool;if(e.phase===void 0){v.set(e.callId,{name:e.name,arguments:e.arguments,operationId:e.operationId??crypto.randomUUID(),state:`open`});continue}let n=v.get(e.callId);n&&(e.phase===`error`&&e.readBack!==void 0?ae(e.callId,n,e.readBack):e.phase===`cancel`&&n.state!==`running`&&n.state!==`uncertain`&&v.delete(e.callId))}},ue=(e,t,n)=>{p.socketClosed(e,t,n),r.close(e,t)},de=e=>{if(e.type!==`done`)return e;let t=p.responseTraceparent();return t?{...e,traceparent:t}:e},fe=async(e,n)=>{let r=Xc({...n,stage:e,step:Math.max(1,E),history:O,handlers:c?[c]:[],guardrails:t.guardrails,injectAllowed:te(t),host:l,signal:s,span:p.root}),i=await r.next();for(;!i.done;)M(i.value),i=await r.next();return{abort:i.value.abort,inject:i.value.inject}},pe=e=>{let n=performance.now(),r=km(t,e);return p.inboundCheck(performance.now()-n,r.guardrail),r.guardrail&&M(r.guardrail),r.text},me=e=>{Zm(t,e);let n=performance.now(),i=Am(t,e);p.inboundCheck(performance.now()-n,i.guardrails[0]);for(let e of i.guardrails)M(e);for(let e of i.texts)wn(a.request,e),Ni(o,e),N(),r.sendContext(e)},he=e=>{let t=pe(e);t!==void 0&&(A(t.slice(ln.length+1,-(dn.length+1))),re({type:`text`,text:t}))},ge=(e,n,r)=>{let i=[];for(let a of n){let n=Km(a.messages);if(!n)M({...Uc(e,r),stageWarnings:[{code:`inject_invalid_messages`,field:`inject`,message:`live ingress takes plain-text inject messages only; inject refused`}]});else{for(let e of n)Ur(t,`text`),he(e);i.push(a)}}let a=Gc(e,i,r);a&&M(a)},_e=async e=>{let t=Ae(e);T=`idle`,M({type:`done`,stop:t,interrupted:!0}),await fe(`post_turn`,{stop:t})},ve=async()=>{if(T===`open`)return{aborted:!1};T=`open`,E+=1,D=void 0,o.remote.clear();let e=await fe(`pre_turn`);return e.abort?(await _e(e.abort),{aborted:!0}):(ge(`pre_turn`,e.inject),{aborted:!1})},ye=async function*(e){if(T!==`open`){for(let t of e)yield t;return}let t=await fe(`before_end`,{stop:e.find(e=>e.type===`done`)?.stop});if(t.abort){yield{type:`done`,stop:{kind:`cancelled`},interrupted:!0},await fe(`post_turn`,{stop:{kind:`cancelled`}}),T=`idle`;return}ge(`before_end`,t.inject);for(let t of e)yield t;let n=e.find(e=>e.type===`done`);await fe(`post_turn`,{stop:n?.stop}),T=`idle`},be=e=>{let t=async()=>{await e(),await r.flush?.()},n=k.then(t,t);return k=n.then(()=>void 0,()=>void 0),n},xe=async(n,r,a,m,h)=>{let y=r.state,b=Um(r);r.state=`running`;let x=h.host??l,S=p.toolRecord(n),C=!1,w=cf({onDispatch:()=>{C=!0},tools:e.tools,agents:e.agents,execution:e.execution,profile:t,name:r.name,input:a,callId:n,ctx:{operationId:r.operationId,sessionPermissions:g,credentials:h.credentials??_,resolveHost:u,path:d,signal:s,resume:m,host:x,page:Vm(h.page,e.pageExecution),pageExecution:e.pageExecution,turn:{step:Math.max(1,E),taint:D,destinations:o}},snapshot:f,stages:{handlers:c?[c]:[],profile:t,step:Math.max(1,E),history:()=>O,injectAllowed:te(t),host:x,signal:s},scope:i.context,openSpan:S.open,readBack:rh}),k;try{for(;;){let e=await w.next();if(e.done){k=e.value;break}M(e.value)}}catch(e){let n=C||Hm(e);throw r.state=n?`uncertain`:y,n?new V(`unavailable`,U(`tool.execution_uncertain`,{},t.labels),{copy:{key:`tool.execution_uncertain`},cause:e}):e}finally{S.finish()}if(k.gated)return ce(n,r,b,k.gated,k.gateReadBack)||(r.state={gate:k.gated,createdAt:Date.now()}),{gated:k.gated};if(k.aborted){let e=k.callNotStarted?{code:`cancelled`,kind:`cancelled`,message:U(`session.tool_aborted`,{tool:r.name},t.labels)}:k.failure;if(k.callNotStarted&&e)oe(n,r,e);else{let e=nh(k);e===void 0?v.delete(n):ae(n,r,e,k.modelResult?.parts)}let{aborted:i}=k;return await be(async()=>{T===`open`&&await _e(i)}),{outputRaw:k.outputRaw,outputModel:k.modelResult,failure:e,awaiting:k.awaiting}}k.modelResult?.provenance&&(D=St(D,k.modelResult.provenance,k.modelResult.suspicious),Ii(o,k.modelResult,k.modelResult.provenance));let{pendingInject:A}=k;A&&await be(async()=>{(await ve()).aborted||ge(`post_tool`,A,{callId:n,toolName:r.name})});let j=nh(k);return j===void 0?v.delete(n):ae(n,r,j,k.modelResult?.parts),{outputRaw:k.outputRaw,outputModel:k.modelResult,failure:k.failure,awaiting:k.awaiting}},Se=async(...e)=>{let t=await xe(...e);return await r.flush?.(),t},Ce=e=>new V(`request`,`gate ${e} expired`,{copy:{key:`session.gate_expired`}}),we=e=>typeof e.state==`object`&&qr(e.state.createdAt,Date.now(),m),Te=async(e,n)=>{let r=v.get(e);if(!r||r.state===`running`)throw new V(`request`,`call ${e} is not waiting to run`);if(n!==void 0&&n!==r.operationId)throw new V(`request`,U(`session.gate_expired`,{},t.labels),{copy:{key:`session.gate_expired`}});if(r.state===`uncertain`)throw new V(`unavailable`,U(`tool.execution_uncertain`,{},t.labels),{copy:{key:`tool.execution_uncertain`}});if(we(r))throw Um(r)?P(e,r):await Se(e,r,r.arguments,Gr({decision:`abandon`}),{}),Ce(e);return r},Ee=n=>{if(n.type!==`tool`||n.tool.phase!==void 0)return n;let{name:r,arguments:a}=n.tool,o=sf({tools:e.tools,profile:t,name:r,input:a,scope:i.context});return{...n,tool:{...n.tool,arguments:o}}},Oe=async function*(e){let n=new Map,r=e.events.map(e=>{if(e.type!==`tool`)return e;let{tool:r}=e;if(r.phase===void 0){if(v.has(r.callId)||n.has(r.callId))throw new V(`bad_response`,U(`provider.duplicate_call`,{},t.labels),{cause:{code:`duplicate_pending_call`}});n.set(r.callId,crypto.randomUUID())}let i=n.get(r.callId)??v.get(r.callId)?.operationId;return{...e,tool:{...r,operationId:i}}});le(r);let a=ih(r.filter(e=>e.type!==`tokens`),f).map(Ee),o=performance.now(),s=await eh(i,a,e.turnPhase,()=>{b=!0});e.turnPhase!==`abort`&&p.outboundTime(performance.now()-o);for(let e of s)e.type===`guardrail`&&p.outbound(e);sh(s,A,j);let c=yield*lh(await ch(s,O,v,t.providerContinuation?.history!==`stateless`),w),l=await p.settle();l&&(yield l);let u=c.some(e=>e.type===`done`&&e.interrupted);if((e.turnPhase===`complete`||e.turnPhase===`abort`||c.length>0)&&T===`open`){let t=oh(c,e.turnPhase,u);for await(let e of ye(t))yield sr(de(e),w);yield*ah(S)}else if(c.length>0)for(let e of c)yield sr(de(e),w)},ke=async function*(){let e=`host`,n,i=r.batches(),a;try{for(;;){a??=i.next();let n=await Promise.race([a,ne()]);if(B(s),n===`queued`){yield*ah(S);continue}if(a=void 0,n.done)break;let r=n.value;if(p.receive(r),yield*ah(S),r.type===`closed`){r.goAway?yield Gm(r,r.goAway,t.labels):r.error&&(yield x(r.error));break}if(r.type===`error`){e=`theorem`,yield x(r.error);break}if(r.type!==`row`&&(yield*Oe(r),b)){e=`theorem`;break}}yield*ah(S)}catch(e){throw n=e,e}finally{y=!0,se(),b?ue(1011,`guardrail withheld`,e):ue(1e3,`session-closed`,e),await i.return(void 0),await p.close({thrown:n})}},je={profileId:t.id,canary:n,async*events(){for await(let e of ke()){let n=De(e,t.labels);p.delivered(n),yield n}},sendAudio(e){return be(async()=>{e.data&&(Ur(t,`audio`),!(await ve()).aborted&&re({type:`audio`,mimeType:e.mimeType,data:e.data}))})},sendVideo(e){return be(async()=>{Ur(t,`video`),!(await ve()).aborted&&re({type:`video`,mimeType:e.mimeType,data:e.data})})},sendText(e){return be(async()=>{Ur(t,`text`),!(await ve()).aborted&&he(e)})},sendContext(e){return be(()=>(me(e),Promise.resolve()))},async executeTool({callId:e,operationId:t,decision:n,input:r,secret:i,credentials:a,host:o,page:s}){N();let c=await Te(e,t),l=typeof c.state==`object`?c.state.gate:void 0;if(!l){if(n!==void 0||r!==void 0||i!==void 0)throw new V(`request`,`call ${e} is not waiting on a gate; it takes no decision, input, or secret`);return await Se(e,c,c.arguments,void 0,{credentials:a,host:o,page:s})}if(n===void 0)throw new V(`request`,`call ${e} is waiting on a gate; answer it with a decision`);let u=ti({callId:e,decision:n,input:r,secret:i},{name:c.name,arguments:l.preparedArguments??c.arguments,permission:l.permission,gateKind:l.kind,...l.kind===`auth`?{auth:l.authChallenge}:{}},g??[]);return u.typed&&await(a??_).set(u.typed.slot,u.typed.credential),g=u.sessionPermissions,await Se(e,c,u.input,u.resume,{credentials:a,host:o,page:s})},answerToolCall({callId:e,events:n}){N();let r=v.get(e);if(!r||r.state!==`open`&&!Um(r))throw new V(`request`,`call ${e} is not waiting for an answer`);if(we(r))throw P(e,r),Ce(e);let i;for(let a of n)if(a.type===`tool`){if(a.tool.phase===void 0||a.tool.callId!==e)throw new V(`request`,`the run answering call ${e} carries a call of its own (${a.tool.callId})`);if(a.tool.operationId!==r.operationId||a.tool.name!==r.name)throw new V(`request`,U(`session.gate_expired`,{},t.labels),{copy:{key:`session.gate_expired`}});Wm(a.tool)&&(i=a.tool)}if(!i)throw new V(`request`,`the run answering call ${e} settled nothing`);let a=()=>{for(let e of n)e.type!==`done`&&M(e)};if(i.phase===`gate`)return a(),ce(e,r,Um(r),i.gate,i.readBack),{gated:i.gate};let{readBack:o}=i;if(o===void 0)throw new V(`request`,`the run answering call ${e} carries no readBack`);return a(),ae(e,r,o),i.phase===`complete`?{outputRaw:i.output,...i.awaiting?{awaiting:!0}:{}}:{failure:i.failure}},async close(e=`session-closed`){return y||(y=!0,se(),ue(1e3,e,`host`)),await r.flush?.(),p.close({})}},{initialContext:Me,opening:Ne}=e;return(e.openInitialCycle||Me||Ne)&&be(async()=>{if(Me&&me(Me),!e.openInitialCycle&&!Ne)return;let t=await ve();Ne&&!t.aborted&&re({type:`text`,text:Ne})}),je}async function dh(e,t,n,r){let i=Bm(t,e.profiles.find(t.profile),r);try{return await fh(e,t,n,i)}catch(e){throw await i.close({thrown:e}),e}}async function fh(e,t,n,r){let i=Kr(`runSession`,n.gateTtlMs),a=Ym(t),{request:o,events:s,refusal:c}=Jn(a,e.profiles.get(a.profile));if(c)throw c;B(o.signal);let{profile:l,generation:u}=Ar(e,o);qm(l),t.context&&Zm(l,t.context),t.snapshot&&(u.tools=Jm(l,t.snapshot)),u.builtins=u.tools.builtins;let d=Qm(u,t.voice),f=!!(t.input&&t.input.length>0);d=$m(d,t.input);let p=Xn(d.resolvedSystem,[kn(d.canary,l.labels),hn(l.labels),l.inputs?.context?On(l.labels):``]),m={...sl(e.tools,d,p.text),signal:o.signal,tapUpstream:r.sent},h=l.models[d.model];r.bind({request:m,generation:d,binding:h,system:p.text,canary:d.canary});let g=an();bn(g,m),tn(g,t.history??[]);let _=_i();Fi(_,m,g.own),Pi(_,t.history??[],g.own);let v=await sa(l,d.canary||void 0,p.private,g,lr(e.tools,l));$o(l.providerContinuation,t.providerState,t.history);let y=await Om(e.providers.require(h.provider,h.apiId),{...h},m,n,t.providerState,l.providerContinuation);return r.setup(y.setup),uh({execution:n.execution,pageExecution:n.pageExecution,tools:e.tools,profile:l,canary:d.canary,connection:y,gate:v,givenUrls:g,destinations:_,signal:o.signal,onStage:t.onStage,host:t.host,credentials:t.credentials,resolveHost:t.resolveHost,sessionPermissions:t.sessionPermissions,path:t.path,snapshot:u.tools,historySeed:t.history,openInitialCycle:f,requestEvents:s,initialContext:t.context,opening:f?void 0:Xm(l,t,o.input?.slots),trace:r,agents:mm(e,t,n,r.agentCanaries),gateTtlMs:i,signInGate:n.signInGate??`hold`})}function ph(e){return{profile:e.profile,path:e.path,sessionPermissions:e.sessionPermissions,input:e.turnInput,model:e.model,host:e.host}}async function mh(e,t,n){let r=ph(t);if(n.type===`decision`||n.type===`embedding`)throw new V(`request`,`Profile ${n.id}: type 'decision' cannot invoke tools`);let i=n.type===`host`?void 0:mr(n,t.model);return await zr(e.tools,n,r,i)}async function*hh(e,t,n,r,i){let a=e.profiles.find(t.profile),{sink:o,policy:s}=xs({override:r,observability:a?.observability,guardrails:a?.guardrails}),c=Dn(n,{attributes:{"gen_ai.agent.name":t.profile,...he(`gen_ai.conversation.id`,t.conversationId)},links:y(t.links),...t.traceparent?{traceparent:t.traceparent}:{}}),l=[];try{let e=a?.labels;for await(let t of i.events(c,l))yield sr(De(t,e),s.include.guardrailMatchPreview);i.ended?.(c)}catch(e){throw i.failed(c,e),e}finally{await ps(o,Wr({spans:c.collect(),policy:s,canaries:l,...t.metadata?{metadata:t.metadata}:{}}),s)}}function gh(e,t,n){return r=>wt(e,{name:t.name,callId:n,call:{arguments:Be(Vn(t.input))}}).end(r)}async function _h(e,t){let n=e.profiles.get(t.profile);return{profile:n,snapshot:t.snapshot?Lr(t.snapshot):await mh(e,t,n)}}function vh(e,t,n){return yh(e,t,n).events}function yh(e,t,n){let r=t.callId??pt(t.name),i={...t,operationId:t.operationId??crypto.randomUUID()},a=e=>(t,n)=>(e.root.set(n),e.root),o=hh(e,i,Ce(i.name),n,{events:(t,n)=>Ch(e,i,r,a(t),gh(a(t),i,r),t.root.traceparent(),n),failed:(e,t)=>gh(a(e),i,r)(j(t)?{outcome:`cancelled`}:{outcome:`error`,thrown:t})});return{name:i.name,callId:r,events:o}}function bh(e,t,n){return xh(e,t,n).events}function xh(e,t,n){let{calls:r,...i}=t,a=r.map(e=>{let t=e.callId??pt(e.name);return{callId:t,invoke:{...i,name:e.name,input:e.input,callId:t,operationId:e.operationId??crypto.randomUUID()},announce:e.callId===void 0}}),o=hh(e,t,`tool_step ${t.profile}`,n,{events:(n,r)=>Sh(e,t,a,(e,t)=>n.root.child(e,{attributes:t}),n.root.traceparent(),r),ended:e=>e.root.end({code:`OK`}),failed:(e,t)=>{j(t)?e.root.end():xt(e.root,t)}});return{calls:a.map(({callId:e,invoke:t})=>({name:t.name,callId:e})),events:o}}async function*Sh(e,t,n,r,i,a){let{profile:o,snapshot:s}=await _h(e,t),c=crypto.randomUUID();for(let{callId:e,invoke:t,announce:r}of n)r&&(yield Ue({name:t.name,callId:e,operationId:t.operationId},Be(t.input),{stepId:c,stepCallCount:n.length}));let l=xf(n.map(({callId:e})=>e),Fn(o)===!0,t.signal),u={stepCalls:n.map(({callId:e,invoke:t})=>({callId:e,tool:t.name,input:Be(t.input)})),wait:l.wait},d=!1;try{d=(yield*Cf(n.map(({callId:t,invoke:n})=>Sf(l,t,()=>wh(e,n,o,s,t,r,gh(r,n,t),a,u))))).some(e=>e?.gated!==void 0)}catch(e){yield x(e)}yield M({stop:{kind:d?`gate`:`completed`},traceparent:i},s)}async function*Ch(e,t,n,r,i,a,o){let{profile:s,snapshot:c}=await _h(e,t);t.callId===void 0&&(yield Ue({name:t.name,callId:n,operationId:t.operationId},Be(t.input)));let l=!1;try{l=(yield*wh(e,t,s,c,n,r,i,o)).gated!==void 0}catch(e){yield x(e)}yield M({stop:{kind:l?`gate`:`completed`},traceparent:a},c)}function wh(e,t,n,r,i,a,o,s,c){return gl(t.execution,{operationId:t.operationId??crypto.randomUUID(),callId:i,profileId:n.id,toolId:t.name},{input:t.input,resume:t.resume,snapshot:r,context:{model:t.model,turnInput:t.turnInput,promoted:t.promoted}},t.signal,l=>Th(e,t,n,r,i,a,o,s,l,c),i=>Zd({outcome:i,tools:e.tools,profile:n,name:t.name,resume:t.resume,snapshot:r}))}async function*Th(e,t,n,r,i,a,o,s,c,l){if(t.promoted?.length){let{failure:a}=er(e.tools,r,t.promoted,n);if(a)return o({outcome:`error`,failure:a}),yield L({name:t.name,callId:i,operationId:t.operationId,activityFailed:Ve(t.name,n.labels)},a),{failure:a,callNotStarted:!0}}let u=t.onStage?[t.onStage]:[];return yield*cf({tools:e.tools,beginBody:c,agents:pm(e,t,s),profile:n,name:t.name,input:t.input,callId:i,ctx:{operationId:t.operationId,sessionPermissions:t.sessionPermissions,credentials:t.credentials,resolveHost:t.resolveHost,path:t.path,signal:t.signal,resume:t.resume,page:t.page,pageExecution:t.pageExecution,host:t.host},snapshot:r,openSpan:a,stages:{handlers:u,profile:n,step:1,history:()=>[],injectAllowed:!1,host:t.host,signal:t.signal,...l}})}function Eh(e){return e.phase===`complete`||e.phase===`gate`||e.phase===`error`}function Dh(e,t){t.phase===`running`&&(e.activity=t.activity??e.activity),Eh(t)&&(e.settled=t)}function Oh(e,t){return{...e.settled??{phase:`error`,name:e.name,callId:e.callId,at:Date.now(),failure:{code:`invoke_failed`,kind:t?.errorKind??`internal`,message:t?.errorInternal??t?.error??U(`tool.did_not_run`,{tool:e.name})}},events:e.events,...e.activity?{activity:e.activity}:{}}}async function kh(e){let t={name:e.name,callId:e.callId,events:[]},n;for await(let r of e.events)t.events.push(r),r.type===`error`&&(n=r),r.type===`tool`&&r.tool.callId===e.callId&&Dh(t,r.tool);return Oh(t,n)}async function*Ah(e){let t=e.calls.map(({name:e,callId:t})=>({name:e,callId:t,events:[]})),n=new Map(e.calls.map(({callId:e},t)=>[e,t])),r=new Set,i;for await(let a of e.events){if(a.type===`error`&&(i=a),a.type!==`tool`)continue;let e=n.get(a.tool.callId),o=e===void 0?void 0:t[e];e!==void 0&&o&&(o.events.push(a),Dh(o,a.tool),o.settled&&!r.has(e)&&(r.add(e),yield{...Oh(o,i),index:e}))}for(let[e,n]of t.entries())r.has(e)||(yield{...Oh(n,i),index:e})}function jh(e,t,n){try{return ec(e,t.profile,t.model,n,t)}catch(e){return{complete(){throw e}}}}function Mh(){let e=ui();return{providers:e.providers,tools:e.tools,profiles:e.profiles,schemas:e.schemas,runTurn:(t,n={},r)=>lm(e,t,jh(e,t,n),r),runSession:(t,n,r)=>dh(e,t,n,r),compactHistory:(t,n={},r)=>vm(e,t,ec(e,t.profile,t.model,n),r),invokeTool:(t,n)=>vh(e,t,n),invokeToolStep:(t,n)=>bh(e,t,n),runTool:(t,n)=>kh(yh(e,t,n)),runToolStep:(t,n)=>Ah(xh(e,t,n)),resolveTurn:t=>Ar(e,t),projectProfile:t=>hr(e,t),runDecision:(t,n)=>Ws(e,t,n),runEmbedding:(t,n={})=>$s(e,t,n)}}Mh();function Nh(e){return e.type===`tool`?{type:`tool_call`,call:e.tool}:e.type===`done`?{type:`done`,stop:e.stop,...e.interrupted?{interrupted:!0}:{}}:e}function Ph(e,t,n){let r=lt({id:t,name:`Scripted`,description:`Answers with the events a scripted model gives.`,endpoints:{text:`/`,image:`/`,speech:`/`},options:p(f(),c()),create:e=>({async*complete(t){let r=!1;for await(let i of n.complete({...t,builtInTools:e.builtInTools}))i.type===`done`&&(r=!0),yield Nh(i);r||(yield{type:`done`,stop:{kind:`completed`}})}})});return ve({id:e,name:`Scripted`,description:`Answers with a scripted model.`,serves:()=>[{protocol:r,baseUrl:`https://scripted.invalid`}]})}function Fh(e,t,n,r){let i=e.provider?.(n,r);if(i&&n.type!==`host`){let e=r??(`defaultModel`in n?n.defaultModel:Object.keys(n.models)[0]),a=n.models[e],o=`scripted-${n.id.toLowerCase().replace(/[^a-z0-9-]/g,`-`)}`,s=o.replaceAll(`-`,``);t.providers.replace(Ph(o,s,i)),t.profiles.register({...n,models:{...n.models,[e]:{...a,protocol:s,provider:o,options:{},keySlot:void 0,fallbackKeySlot:void 0}}})}let a=e.providers??{},o=e.hostOptions?.(n,r)??{};return{...o,vault:o.vault??a.vault,fetch:o.fetch??a.fetch??a.local?.fetch,wait:o.wait??a.wait}}function Ih(e,t){let n=t?.providers?.local?.baseUrl;for(let t of S)ie(e.providers,t.definition===`local`&&n?{...t,connection:{baseUrl:_(n)}}:t);for(let n of t?.providerDefinitions??[])e.providers.register(n)}function Lh(e,t){return async n=>await t.onAgentCall?.(n)||{provider:Fh(t,e,e.profiles.get(n.profile))}}function Rh(e,t){return Xe.indexOf(e??`off`)>Xe.indexOf(t)?e:t}function zh(e,t){if(t.mode!==`demo`||t.keys.holds.afterRemoteRead===`off`)return e;let n=Rh(e.taint?.afterRemoteRead,t.keys.holds.afterRemoteRead);return n===e.taint?.afterRemoteRead?e:{...e,taint:{...e.taint,afterRemoteRead:n}}}function Bh(e,t){switch(ai(t)){case`public`:return{...e,network:void 0};case`none`:return{...e,network:{allowedSchemes:[]}};case`asWritten`:return e}}function Vh(e,t){return e.type===`speech`||e.type===`decision`||e.type===`embedding`?e:e.type===`host`?{...e,guardrails:Bh(e.guardrails??{},t)}:{...Hh(e,t),guardrails:zh(Bh(e.guardrails??{},t),t)}}function Hh(e,t){if(e.type!==`live`||t.mode!==`demo`)return e;let n=e.live?.contextCompression;if(!n)return e;let r=ii(t.keys,{triggerTokens:n.triggerTokens,targetTokens:n.slidingWindow.targetTokens});return{...e,live:{...e.live,contextCompression:{...n,triggerTokens:r.triggerTokens,slidingWindow:{...n.slidingWindow,targetTokens:r.targetTokens}}}}}async function Uh(t){if(!Wh(t))return t;let{compileDetect:n}=await e(async()=>{let{compileDetect:e}=await import(`./compile-egress-BSxOdX4K.js`);return{compileDetect:e}},__vite__mapDeps([0,1,2]));return Gh(t,n)}function Wh(e){let t=e.guardrails&&`detect`in e.guardrails?e.guardrails.detect:void 0;return typeof t==`object`&&Ot(t)}function Gh(e,t){if(!Wh(e))return e;let n=e.guardrails;return{...e,guardrails:{...n,detect:t(n.detect)}}}async function Kh(t){let n=t.flatMap(e=>[`input`,`output`].flatMap(t=>qh(e[`${t}Schema`]).map(n=>({tool:e.name,side:t,source:n}))));if(!n.length)return;let{slowPatternProblem:r}=await e(async()=>{let{slowPatternProblem:e}=await import(`./compile-egress-BSxOdX4K.js`);return{slowPatternProblem:e}},__vite__mapDeps([0,1,2]));for(let{tool:e,side:t,source:i}of n){let n=r(i);if(n)throw new V(`request`,`${e}: the pattern /${i}/ in its ${t} schema ${n}`)}}function qh(e){return Array.isArray(e)?e.flatMap(qh):!e||typeof e!=`object`?[]:Object.entries(e).flatMap(([e,t])=>[...e===`pattern`&&typeof t==`string`?[t]:[],...e===`patternProperties`&&t&&typeof t==`object`?Object.keys(t):[],...qh(t)])}function Jh(e){try{return e()}catch(e){throw e instanceof V&&e.kind===`config`?new V(`request`,e.message,{cause:e}):e}}var Yh=(e=>Jh(()=>tr(e)));async function Xh(e,t,n,r,i){if(Nn(t).length>32)throw new V(`request`,`The studio supports up to 32 key slots.`);await Kh(n);let a=Yh(Vh(await Uh(t),i));if(a.type!==`host`)for(let t of Object.values(a.models)){let n=_t({profileType:a.type,protocol:t.protocol,provider:t.provider,definition:e.providers.require(t.provider,t.apiId).definition.id,apiId:t.apiId,decision:a.type===`decision`,builtInTools:`builtInTools`in t?t.builtInTools??[]:[]},i);if(n)throw new V(`request`,n.message)}return Jh(()=>Or(e,a,n,r,i.toolHandlers))}async function Zh(e,t,n,r,i=[]){let a=Mh();Ih(a,r);for(let e of i)await Xh(a,e.profile,e.customTools,e.structured,r);return{scope:a,profile:await Xh(a,e,t,n,r)}}var Qh=`studioRun`;function $h(){let e=new Map;return{sink:{write:t=>{let n=t.metadata?.[Qh];return typeof n==`string`&&e.get(n)?.(t),Promise.resolve()}},route(t){let n=globalThis.crypto.randomUUID();return e.set(n,t),{metadata:{[Qh]:n},close:()=>{e.delete(n)}}}}}var eg={maxGates:32,maxOperations:128,maxCheckpoints:256,maxPermissions:2048,maxStateBytes:33554432,maxInvocationBytes:262144,maxOutcomeBytes:262144};function tg(e={}){let t={...eg,...e};if(Object.keys(e).some(e=>!Object.hasOwn(eg,e))||Object.values(t).some(e=>!Number.isSafeInteger(e)||e<=0))throw new V(`config`,U(`error.config`),{cause:{code:`session_limits`}});return t}function ng(e){return new TextEncoder().encode(JSON.stringify(e)).byteLength}function rg(){throw new V(`unavailable`,U(`error.unavailable`),{cause:{code:`session_state_capacity`}})}function ig(e,t){let n=Object.values(e.gates),r=Object.values(e.operations);(n.length>t.maxGates||r.length>t.maxOperations||e.providerCheckpoints.length>t.maxCheckpoints||e.permissions.length>t.maxPermissions)&&rg();for(let e of n)ng(e)>t.maxInvocationBytes&&rg();let i=n.length*t.maxOutcomeBytes;for(let e of r)e.status!==`ready`&&e.invocation&&ng(e.invocation)>t.maxInvocationBytes&&rg(),e.status===`settled`?ng(e.outcome)>t.maxOutcomeBytes&&rg():(i+=t.maxOutcomeBytes,e.status===`ready`&&ng(e)>t.maxInvocationBytes&&rg());ng(e)+i>t.maxStateBytes&&rg()}var ag=864e5,og=t({data:f(),mimeType:f(),name:f().optional()}),sg=t({text:f().optional(),role:f().optional(),slots:p(f(),f()).optional(),context:t({client:z.optional(),server:z.optional()}).optional(),attachments:s(r([og,t({uri:f(),mimeType:f(),name:f().optional()})])).optional(),voice:s(og).optional(),history:s(ye).optional(),repair:t({previousOutput:f(),rejection:f(),guidance:f()}).optional(),historyTokens:d().nonnegative().optional(),inputTokens:d().nonnegative().optional()}),cg=t({profileId:f().min(1),operationId:f().min(1).max(256),callId:f().min(1),name:f().min(1),arguments:w,gate:t({kind:l(ft),permission:l(et).optional(),auth:t({slot:f().min(1),authType:l(at),service:f().min(1)}).optional()}).superRefine((e,t)=>{e.kind===`auth`!=(e.auth!==void 0)&&t.addIssue({code:`custom`,path:[`auth`]})}),snapshot:b.optional(),promoted:s(f().min(1)),turnInput:sg,model:f().optional(),createdAt:d().finite().nonnegative(),expiresAt:d().finite().nonnegative().optional()}),lg=t({input:w,resume:t({granted:i().optional(),gateKind:l(ft).optional(),cause:l([`declined`,`abandoned`,`expired`]).optional(),signIn:i().optional(),edited:t({from:w}).optional()}),sessionPermissions:s(f().min(1)),page:r([t({output:z}),t({timedOut:o(!0)}),t({unanswered:o(!0)})]).optional()}),ug={operationId:f().min(1).max(256),callId:f().min(1),profileId:f().min(1),toolId:f().min(1),invocationHash:f().min(1),invocation:cl.optional()},dg=t({grantId:f().min(1),expiresAt:d().finite().positive(),resultHash:f().optional()}),fg=u(`status`,[t({status:o(`ready`),profileId:f().min(1),pending:cg,answer:lg,readyAt:d().finite().nonnegative()}),t({...ug,status:o(`running`),pageGrant:dg.optional(),claimToken:f().min(1),startedAt:d().finite().nonnegative()}),t({...ug,status:o(`settled`),pageGrant:dg.optional(),outcome:dl,settledAt:d().finite().nonnegative(),retainUntil:d().finite().nonnegative().optional()}),t({...ug,status:o(`uncertain`),pageGrant:dg.optional(),claimToken:f().min(1),reason:l([`execution_interrupted`,`settlement_write_failed`,`worker_lost`]),detectedAt:d().finite().nonnegative()})]),pg=t({version:o(3),operations:p(f().min(1),fg),permissions:s(f().min(1)),gates:p(f().min(1),cg),providerCheckpoints:s(f().min(1))}).superRefine((e,t)=>{for(let[n,r]of Object.entries(e.operations))((r.status===`ready`?r.pending:r).operationId!==n||r.status===`ready`&&r.profileId!==r.pending.profileId||n in e.gates||r.status===`settled`&&(r.outcome.event.tool.operationId!==n||r.outcome.event.tool.callId!==r.callId||r.outcome.event.tool.name!==r.toolId))&&t.addIssue({code:`custom`,path:[`operations`,n]});for(let[n,r]of Object.entries(e.gates))n!==r.operationId&&t.addIssue({code:`custom`,path:[`gates`,n]})});function mg(){return{version:3,operations:{},permissions:[],gates:{},providerCheckpoints:[]}}function hg(e,t,n){return Object.fromEntries(Object.entries(e).filter(([,e])=>e.expiresAt===void 0?!qr(e.createdAt,t,n):t<e.expiresAt))}function gg(e){let t=e.ttlMs??864e5,n=e.maxSessions??1e4;if(!Number.isFinite(t)||t<=0||!Number.isSafeInteger(n)||n<=0)throw new V(`config`,U(`error.config`),{cause:{code:`session_store_options`,ttlMs:t,maxSessions:n}});return{ttlMs:t,maxSessions:n}}function _g(e={}){let{ttlMs:t,maxSessions:n}=gg(e),r=tg(e.sessionLimits),i=new Map,a=e=>Object.values(e.snapshot.state.gates).some(e=>e.expiresAt===void 0||Date.now()<e.expiresAt)||Object.values(e.snapshot.state.operations).some(e=>e.status!==`settled`||Date.now()<(e.retainUntil??e.settledAt+864e5)),o=e=>{let n=i.get(e);if(n&&!a(n)&&Date.now()-n.touched>=t)i.delete(e);else return n?.snapshot};return{load(e){return Promise.resolve(structuredClone(o(e)))},compareAndSwap(e,t,s){let c=o(e);if((c?.revision??null)!==t)return Promise.resolve({written:!1});let l=pg.parse(s);if(ig(l,r),!c&&i.size>=n){let e=[...i].find(([,e])=>!a(e));if(!e)throw new V(`unavailable`,U(`error.unavailable`),{cause:{code:`session_store_capacity`}});i.delete(e[0])}let u=crypto.randomUUID();return i.delete(e),i.set(e,{snapshot:{revision:u,state:structuredClone(l)},touched:Date.now()}),Promise.resolve({written:!0,revision:u})}}}var vg=m({events:s(ae),base:s(ye),baseEvents:d().int().nonnegative(),workedMs:d().nonnegative(),endedAt:d(),model:f().optional(),effort:f().optional()}),yg=m({version:o(1),transcript:s(Gn),history:s(ye),providerState:Ct.optional(),inputTokens:d().optional(),historyTokens:d().optional(),paused:vg.optional()});function bg(){return{version:1,transcript:[],history:[]}}function xg(e){return new V(`request`,U(`session.conversation_unknown`),{copy:{key:`session.conversation_unknown`},...e===void 0?{}:{cause:e}})}function Sg(e){let t=e.keys[e.keyVersion];if(t===void 0)throw new V(`config`,U(`error.config`),{cause:{code:`conversation_seal_key_missing`,keyVersion:e.keyVersion}});return{async read(t,n){let r=await oi({sealed:n,keys:e.keys,binding:[t]}).catch(()=>void 0);if(r!==void 0)return{revision:n,conversation:yg.parse(JSON.parse(r))}},async write(n,r,i,a){if(r!==i)return{written:!1};let o=yg.parse(a),s=await hi({plaintext:JSON.stringify(o),key:t,binding:[n],keyVersion:e.keyVersion});return{written:!0,ref:s,revision:s}}}}function Cg(e,t){let n={...e===void 0?{}:{client:e},...t===void 0?{}:{server:t}};return Object.keys(n).length>0?n:void 0}function wg(e,t){let{context:n,...r}=e,i=Cg(n,t);return i?{...r,context:i}:r}function Tg(e,t){let n=Cg(e.context,t);return{...e.history?{history:e.history}:{},...e.slots?{slots:e.slots}:{},...n?{context:n}:{},...e.resume?{providerState:e.resume.providerState,awayMs:e.resume.awayMs}:{}}}function Eg(e,t){return fi(e.paused?.events??[]).some(e=>e.callId===t.callId&&e.operationId===t.operationId)}function Dg(e){let{profile:t,clientEvents:n}=e;return{sessionId:e.sessionId,store:e.store,showThoughts:Yr(t.outputs),forReader:e=>vr(e,n),failureText(e){let r=vr(De(e,t.labels),n);return r.type===`error`&&r.error?r.error:U(`error.${e.errorKind}`,{},t.labels)}}}async function Og(e,t,n,r){let i=await kg(e,t,r);return n.kind===`message`&&Gg(i.conversation,n.abandon),n.kind===`answer`&&Kg(i.conversation,n.call),n.kind===`rewind`&&Qg(i.conversation,n.at),i}async function kg(e,t,n){if(t===void 0){if(n)throw new V(`request`,`a transcript restores a conversation the host lost, and this message names none`);return{ref:null,revision:null,conversation:bg()}}let r=await e.store.read(e.sessionId,t);if(r)return{ref:t,revision:r.revision,conversation:r.conversation};if(!n)throw xg();let{conversation:i,events:a}=Ag(n.profile,n.blocks);return{ref:null,revision:null,conversation:i,events:a}}function Ag(e,t){let{request:n,events:r,refusal:i}=Jn({profile:e.id,input:{history:li(t)}},e);if(i)throw i;return{conversation:{...bg(),transcript:[...t],history:n.input?.history??[]},events:r}}async function jg(e,t,n){let{conversation:r,events:i}=Ag(t,n),a=await e.store.write(e.sessionId,null,null,r);if(!a.written)throw new V(`unavailable`,`the conversation store did not keep the new conversation`);return{ref:a.ref,view:{transcript:[...n]},events:i}}function Mg(e,t){return ei(t.map(t=>e.forReader(t)),{showThoughts:e.showThoughts})}function Ng(e,t){let{paused:n}=t;return{transcript:t.transcript,...n?{paused:{events:n.events.map(t=>e.forReader(t)),blocks:di(Mg(e,n.events),{workedMs:n.workedMs,endedAt:n.endedAt})}}:{}}}async function Q(e,t,n){let r=await e.store.write(e.sessionId,t.ref,t.revision,n);if(!r.written)throw new V(`unavailable`,`the conversation changed while this reply ran`,{cause:{code:`conversation_conflict`}});return{ref:r.ref,revision:r.revision,conversation:n}}function Pg(e,t){return e.ref===null?[]:[{type:`conversation`,ref:e.ref,...t?{posted:!0}:{}}]}function Fg(e){return mi(e.base,e.events.slice(e.baseEvents))}function Ig(e,t){let n=pi({...si(),providerState:e.providerState,inputTokens:e.inputTokens,historyTokens:e.historyTokens},t);return{...n.providerState?{providerState:n.providerState}:{},...n.inputTokens===void 0?{}:{inputTokens:n.inputTokens},...n.historyTokens===void 0?{}:{historyTokens:n.historyTokens}}}function Lg(e,t,n){let{paused:r,providerState:i,...a}=t;return{...a,...Ig(t,n.events),transcript:[...t.transcript,...di(Mg(e,n.events),{workedMs:n.workedMs,endedAt:Date.now()})],history:Fg(n)}}function Rg(e,t,n){let r={events:t.events,base:t.base,baseEvents:t.baseEvents,workedMs:t.workedMs,endedAt:Date.now(),...n.model?{model:n.model}:{},...n.effort?{effort:n.effort}:{}};return{...e,...Ig(e,t.events),paused:r}}function zg(e,t,n,r){let i=Lg(e,t,n);return i.transcript.slice(t.transcript.length).some(e=>e.kind===`error`)?i:{...i,transcript:[...i.transcript,{id:crypto.randomUUID(),kind:`error`,message:e.failureText(r)}]}}function Bg(e,t){let{paused:n,...r}=e;return{...r,transcript:[...e.transcript,{id:crypto.randomUUID(),kind:`turn-done`,stop:{kind:`cancelled`}}],history:mi(t.base,t.events.slice(t.baseEvents,Math.max(t.baseEvents,t.seed)))}}async function*Vg(e,t,n,r,i,a){let{conversation:o}=t,s=Date.now(),c=()=>({...n,workedMs:n.workedMs+(Date.now()-s)}),l,u=t;try{let e=r.run({input:i,providerState:o.providerState,model:r.model,effort:r.effort});for await(let t of e)n.events.push(t),t.type===`error`?l=t:(t.type===`compaction`&&(n.base=a(t.history),n.baseEvents=n.events.length),yield t)}catch(t){throw u=await Q(e,u,r.signal.aborted?Bg(o,c()):zg(e,o,c(),x(t))),yield*Pg(u),t}let d=c();if(r.signal.aborted)u=await Q(e,u,Bg(o,d));else if(l)u=await Q(e,u,zg(e,o,d,l));else if(fi(d.events).length)u=await Q(e,u,Rg(o,d,r));else{u=await Q(e,u,Lg(e,o,d)),yield*Pg(u);let t=await Hg(e,u,d,r,a);t&&(yield*Pg(t));return}yield*Pg(u),l&&(yield l)}async function Hg(e,t,n,r,i){let a=n.events.findLast(e=>e.type===`done`),o=a?.type===`done`?a.compaction:void 0;if(!o?.needed)return;let s=await r.compact(o.history,o.tokens,r.model);if(!s)return;let c=Fg({...n,base:i(s),baseEvents:0});return Q(e,t,{...t.conversation,history:c})}function Ug(e){let t;try{t=cn(e.data).length}catch{throw new V(`request`,U(`error.request`),{cause:{code:`request_file_encoding`}})}return{name:e.name,mimeType:e.mimeType,sizeBytes:t,data:e.data}}function Wg(e,t,n){let r=Xr(e.inputs,{...t.text===void 0?{}:{text:t.text},...t.attachments?{attachments:t.attachments.map(Ug)}:{},...t.voice?{voice:t.voice.map(Ug)}:{}},e.guardrails);if(!r.ok)throw Wn(r.issues);let{text:i,...a}=t,{text:o}=r.draft;return{draft:r.draft,blocks:r.blocks,media:{...t.attachments?{attachments:t.attachments}:{},...t.voice?{voice:t.voice}:{}},input:wg(o===void 0?a:{...a,text:o},n)}}function Gg(e,t){let n=fi(e.paused?.events??[]);if(n.length&&!t)throw new V(`request`,`a message to a paused reply must walk away from it`,{copy:{key:`session.gate_pending`}});let r=t??[];if(n.length!==r.length||!r.every(t=>Eg(e,t)))throw new V(`request`,`the message walks away from calls the reply is not waiting on`,{copy:{key:`session.gate_expired`}})}function Kg(e,t){if(!Eg(e,t))throw new V(`request`,`the reply is not waiting on ${t.callId}`,{copy:{key:`session.gate_expired`}})}async function*qg(e,t){for(let n of t){for await(let t of n.events){if(t.type===`error`)return t;t.type===`tool`&&(e.events.push(t),yield t)}if(!e.events.some(e=>Jr(e,n.callId)))throw new V(`internal`,`walked-away call ${n.callId} ended without settling`)}return void 0}function Jg(e){return{base:e.base,events:[...e.events],baseEvents:e.baseEvents,seed:e.events.length,workedMs:e.workedMs}}function Yg(e){return new V(e.errorKind,e.error??U(`error.${e.errorKind}`))}async function*Xg(e){let{host:t,message:n,runner:r}=e,{events:i=[],...a}=e.opened,o=a;yield*i;let{paused:s}=o.conversation;if(Gg(o.conversation,e.walkAway),s){let n=Jg(s),r=yield*qg(n,e.walkAway??[]);if(r){o=await Q(t,o,{...o.conversation,paused:{...s,events:n.events,endedAt:Date.now()}}),yield*Pg(o),yield r;return}o={...o,conversation:Lg(t,o.conversation,n)}}let{conversation:c}=o,l=e=>ci(e,n.draft,n.media);o=await Q(t,o,{...c,transcript:[...c.transcript,...n.blocks],history:l(c.history)}),yield*Pg(o,`posted`);let u={base:l(c.history),events:[],baseEvents:0,seed:0,workedMs:0};yield*Vg(t,o,u,r,{...n.input,history:c.history,...c.inputTokens===void 0?{}:{inputTokens:c.inputTokens},...c.historyTokens===void 0?{}:{historyTokens:c.historyTokens}},l)}async function*Zg(e){let{host:t,runner:n}=e,r=e.opened;Kg(r.conversation,e.call);let{paused:i,...a}=r.conversation;if(!i)return;let o=Jg(i),s=Date.now(),c;for await(let t of e.settling){if(t.type===`error`){c=t;break}o.events.push(t),yield t}if(o.workedMs+=Date.now()-s,o.seed=o.events.length,c||fi(o.events).length){let n=o.events.some(t=>Jr(t,e.call.callId)),a=c&&!n?i.events:o.events;r=await Q(t,r,{...r.conversation,paused:{...i,events:a,workedMs:o.workedMs,endedAt:Date.now()}}),yield*Pg(r),c&&(yield c)}else yield*Vg(t,{...r,conversation:a},o,{...n,model:n.model??i.model,effort:n.effort??i.effort},{history:Fg(o),...a.inputTokens===void 0?{}:{inputTokens:a.inputTokens},...a.historyTokens===void 0?{}:{historyTokens:a.historyTokens}},e=>e)}function Qg(e,t){if(!(Number.isSafeInteger(t)&&t>=-1&&t<e.transcript.length))throw new V(`request`,`no transcript block ${t} to rewind to`)}async function $g(e){let{host:t,opened:n,at:r}=e,{conversation:i}=n;if(Qg(i,r),Gg(i,e.walkAway),i.paused){let n=Jg(i.paused),r=qg(n,e.walkAway??[]),a=await r.next();for(;!a.done;)a=await r.next();if(a.value)throw Yg(a.value);i=Lg(t,i,n)}let a=i.transcript.slice(0,r+1);return Q(t,n,{version:1,transcript:a,history:li(a)})}function e_(e){if(!e.operationId)throw new V(`internal`,U(`error.internal`));return e.operationId}function t_(e){return fi(e.paused?.events??[]).map(e=>({callId:e.callId,operationId:e_(e)}))}function n_(e){return new V(`request`,`a stateless chat keeps no conversation to ${e}`)}var r_=t({callId:f().min(1),operationId:f().min(1).max(256),grantId:f().min(1),page:r([t({output:z}),t({unanswered:o(!0)}),t({timedOut:o(!0)})])});function $(){throw new V(`unavailable`,U(`tool.execution_uncertain`),{copy:{key:`tool.execution_uncertain`}})}function i_(e=128){if(!Number.isSafeInteger(e)||e<=0)throw new V(`config`,U(`error.config`));let t=new Map,n=(e,t)=>JSON.stringify([e,t]);return{reserve(r,i,a){let o=n(r,i);(a?.aborted||t.has(o)||t.size>=e)&&$();let s=()=>{},c=new Promise(e=>{s=e}),l=()=>{t.delete(o),a?.removeEventListener(`abort`,l),s({timedOut:!0})};return t.set(o,e=>{t.delete(o),a?.removeEventListener(`abort`,l),s(e)}),a?.addEventListener(`abort`,l,{once:!0}),{result:c,cancel:l}},deliver(e,r,i){let a=t.get(n(e,r));return a?(a(i),Promise.resolve()):Promise.reject(new V(`unavailable`,U(`tool.execution_uncertain`)))}}}function a_(e,t,n,r=2e4){if(!Number.isSafeInteger(r)||r<=0||r>2147483647)throw new V(`config`,U(`error.config`));return{execution:{async dispatch(i,a){i.invocation||$();let o=crypto.randomUUID(),s=Date.now()+r,c=n.reserve(t,o,a);try{await e.mutate(t,e=>{let t=e.operations[i.operationId];(t?.status!==`running`||t.claimToken!==i.claimToken||t.invocationHash!==i.invocationHash||t.pageGrant)&&$(),t.pageGrant={grantId:o,expiresAt:s}})}catch(e){throw c.cancel(),e}let l=s-Date.now();(l<=0||a?.aborted)&&(c.cancel(),$());let u=()=>{},d=new Promise(e=>{u=()=>e({timedOut:!0})}),f=setTimeout(u,l);return a?.addEventListener(`abort`,u,{once:!0}),{grantId:o,result:Promise.race([c.result,d]).finally(()=>{clearTimeout(f),a?.removeEventListener(`abort`,u),c.cancel()})}}},async answer(r){let i=r_.parse(r),a=await ll(i.page),o=await e.mutate(t,e=>{let t=e.operations[i.operationId];return(!t||t.status===`ready`||t.callId!==i.callId||t.pageGrant?.grantId!==i.grantId)&&$(),t.pageGrant.resultHash===void 0?((t.status!==`running`||Date.now()>=t.pageGrant.expiresAt)&&$(),t.pageGrant.resultHash=a,{duplicate:!1,settled:!1}):(t.pageGrant.resultHash!==a&&$(),t.status===`uncertain`&&$(),{duplicate:!0,settled:t.status===`settled`})});return o.duplicate||await n.deliver(t,i.grantId,i.page),o.settled}}}function o_(e,n,r,i){if(typeof e.compareAndSwap!=`function`)throw new V(`config`,U(`error.config`),{cause:{code:`session_store_contract`,required:`compareAndSwap`}});let a=u(`written`,[t({written:o(!1)}),t({written:o(!0),revision:f().min(1)})]),s=async(t,i)=>{let a=await e.load(t),o=pg.safeParse(a===void 0?mg():a.state);if(!o.success||a!==void 0&&(typeof a.revision!=`string`||!a.revision))throw new V(`config`,U(`error.config`),{cause:{code:`session_store_state`}});let s=structuredClone(o.data);for(let e of Object.values(s.gates))e.expiresAt??=e.createdAt+n;s.gates=hg(s.gates,i,n);for(let e of Object.values(s.operations))e.status===`ready`&&e.answer.resume.granted===!0&&(e.answer.resume.gateKind??=e.pending.gate.kind);return s.operations=Object.fromEntries(Object.entries(s.operations).filter(([,e])=>e.status!==`settled`||i<(e.retainUntil??e.settledAt+r))),{revision:a?.revision??null,state:s}};return{async read(e){return(await s(e,Date.now())).state},async mutate(t,o){let c=Date.now();for(let l=0;l<8;l++){let{revision:l,state:u}=await s(t,c),d=await o(u);for(let e of Object.values(u.gates))e.expiresAt??=e.createdAt+n;for(let e of Object.values(u.operations))e.status===`settled`&&(e.retainUntil??=e.settledAt+r);ig(u,i);let f=pg.safeParse(u);if(!f.success)throw new V(`config`,U(`error.config`),{cause:{code:`session_store_transition`}});let p=a.safeParse(await e.compareAndSwap(t,l,f.data));if(!p.success)throw new V(`config`,U(`error.config`),{cause:{code:`session_store_write_result`}});if(p.data.written){if(p.data.revision===l)throw new V(`config`,U(`error.config`),{cause:{code:`session_store_revision`}});return d}}throw new V(`unavailable`,U(`error.unavailable`),{cause:{code:`session_store_contention`}})}}}var s_=`theorem_session`,c_=/^[A-Za-z0-9_-]{32,128}$/,l_=2592e3;function u_(e,t){for(let n of(e.headers.get(`cookie`)??``).split(`;`)){let[e,...r]=n.trim().split(`=`);if(e===t)return r.join(`=`)}}function d_(){return gi(crypto.getRandomValues(new Uint8Array(32)))}function f_(e){let t=u_(e,s_);return t&&c_.test(t)?t:void 0}function p_(e){let t=f_(e);if(t)return{id:t};let n=d_();return{id:n,setCookie:`${s_}=${n}; Path=/; Max-Age=${l_}; HttpOnly; SameSite=Lax${new URL(e.url).protocol===`https:`?`; Secure`:``}`}}var m_=16777216;function h_(e=m_){if(!Number.isSafeInteger(e)||e<=0)throw new V(`config`,U(`error.config`));return e}function g_(e,t,n){let r=e.safeParse(t);if(!r.success)throw new V(`request`,`${n} failed its check: ${xr(r.error)}`);return r.data}function __(e){let t=h_();if(e.length>t||new TextEncoder().encode(e).byteLength>t)throw new V(`request`,U(`error.request`));try{return JSON.parse(e)}catch{throw new V(`request`,U(`error.request`),{cause:{code:`request_json`}})}}function v_(e){return g_(ri,__(e),`live message`)}function y_(e){return g_(ni,__(e),`live open message`)}var b_=new Set([`pre_turn`,`post_tool`,`before_end`]);function x_(e){let t=e.inject.filter(e=>e.role===`user`);if(!t.length)throw new V(`request`,`inject must contain user messages`);return{id:e.id,messages:t}}function S_(e,t){return async({stage:n})=>{if(!b_.has(n))return;let r=await e.consume(t);return r?{inject:r.messages,injectId:r.id}:void 0}}function C_(){let e=new Map;return{open(t){e.has(t)||e.set(t,[])},enqueue(t,n){let r=e.get(t);return r?(r.push(structuredClone(n)),!0):!1},consume(t){return e.get(t)?.shift()},close(t){e.delete(t)}}}function w_(){throw new V(`unavailable`,U(`error.unavailable`))}function T_(e,t){return e.operationId===t.operationId&&e.callId===t.callId&&e.profileId===t.profileId&&e.toolId===t.toolId&&e.invocationHash===t.invocationHash}function E_(e,t){t.operationId===`__proto__`&&w_();let n=Object.hasOwn(e.operations,t.operationId)?e.operations[t.operationId]:void 0;return n?.status===`ready`?(n.pending.callId!==t.callId||n.pending.profileId!==t.profileId||n.pending.name!==t.toolId||n.profileId!==t.profileId)&&w_():n&&!T_(n,t)&&w_(),n}function D_(e,t){let n=E_(e,t);return(!n||n.status!==`running`&&n.status!==`uncertain`||n.claimToken!==t.claimToken)&&w_(),n}function O_(e){if(e?.status===`settled`)return{kind:`settled`,outcome:e.outcome};if(e?.status===`running`)return{kind:`running`};if(e?.status===`uncertain`)return{kind:`uncertain`}}function k_(e,t,n){let r=e.operations[t.operationId],i=r&&r.status!==`ready`?r.pageGrant:void 0,a=Date.now(),{operationId:o,callId:s,profileId:c,toolId:l,invocationHash:u,invocation:d}=t;e.operations[t.operationId]={operationId:o,callId:s,profileId:c,toolId:l,invocationHash:u,...d?{invocation:d}:{},status:`settled`,...i?{pageGrant:i}:{},outcome:n,settledAt:a}}function A_(e,t){return{lookup(n){return e.mutate(t,e=>O_(E_(e,n)))},begin(n){let r=crypto.randomUUID(),i=Date.now();return e.mutate(t,e=>O_(E_(e,n))||(e.operations[n.operationId]={...n,status:`running`,claimToken:r,startedAt:i},{kind:`acquired`,claimToken:r}))},settle(n,r){return e.mutate(t,e=>{let t=D_(e,n);k_(e,{...n,invocation:t.invocation},r)})},settleNotStarted(n,r){return e.mutate(t,e=>{let t=E_(e,n);t&&t.status!==`ready`&&w_(),r.effects!==`not_started`&&w_(),k_(e,n,r)})},markUncertain(n,r){return e.mutate(t,e=>{let t=D_(e,n);e.operations[n.operationId]={...n,invocation:t.invocation,...t.pageGrant?{pageGrant:t.pageGrant}:{},status:`uncertain`,reason:r,detectedAt:Date.now()}})}}}function j_(e){return ll(Ct.parse(e))}async function M_(e,t){return`${e}:${await ll(Object.entries(t).sort(([e],[t])=>e<t?-1:+(e>t)).map(([e,t])=>t.status===`ready`?[e,t.status,t.profileId,t.readyAt]:[e,t.status,t.profileId,t.toolId,t.invocationHash]))}`}async function N_(e,t,n={},r){if(t===void 0)return;let i=Ct.parse(t),a=await j_(i),o=await M_(a,n),s=Object.values(n),c=r!==void 0&&s.length>0&&e.some(e=>e.startsWith(`${a}:`))&&s.every(e=>e.status===`settled`&&e.outcome.effects!==`unknown`&&e.outcome.event.tool.readBack!==void 0&&r.some(t=>t.role===`tool`&&t.tool_call_id===e.callId&&t.name===e.toolId&&t.content===e.outcome.event.tool.readBack));if(!e.includes(o)&&!c&&!(s.length===0&&e.includes(a)))throw new V(`request`,U(`session.provider_state_unowned`),{copy:{key:`session.provider_state_unowned`}});return i}function P_(e,t,n){return[...new Set([...e,...t].reverse())].slice(0,n).reverse()}async function F_(e){let t=e.session?void 0:p_(e.request),n=e.session?(await e.session(e.request))?.trim():t?.id;if(!n)throw new V(`auth`,U(`session.sign_in`),{copy:{key:`session.sign_in`}});let r=e.operationRetentionMs??864e5;if(!Number.isSafeInteger(r)||r<=0)throw new V(`config`,U(`error.config`));let i=tg(e.sessionLimits),a=o_(e.sessionStore,Kr(`session boundary`,e.gateTtlMs),r,i);await a.read(n);let o=a_(a,n,e.pageToolBroker??i_());return{pageExecution:o.execution,answerPageResult:o.answer,sessionId:n,...t?.setCookie?{setCookie:t.setCookie}:{},toolExecution:A_(a,n),async prepareLiveOpen(e,t){let r=Tg(g_(ni,e,`live open`),t),i=await a.read(n),o=await N_(i.providerCheckpoints,r.providerState,i.operations);if(o&&Object.values(i.operations).some(e=>e.status!==`settled`))throw new V(`unavailable`,U(`tool.execution_uncertain`),{copy:{key:`tool.execution_uncertain`}});return{...r,providerState:o,...r.history?{history:r.history.filter(e=>e.role!==`system`)}:{}}},async prepareProviderState(e,t){let r=await a.read(n);return N_(r.providerCheckpoints,e,r.operations,t)},async recordCheckpoint(e){let t=await j_(e);await a.mutate(n,async e=>{e.providerCheckpoints=P_(e.providerCheckpoints,[await M_(t,e.operations)],i.maxCheckpoints)})}}}function I_(e,t){return Mr(e,t.labels,t.clientEvents)}function L_(e,t){return JSON.stringify({type:`error`,...I_(e,t)})}function R_(e,t){let n=new Map;return{start(r,i){let a=n.get(r);a&&clearTimeout(a.timer),n.set(r,{operationId:i,timer:setTimeout(()=>{n.delete(r),e.executeTool({callId:r,operationId:i,page:{timedOut:!0}}).catch(()=>{})},t)})},stop:(e,t)=>{let r=n.get(e);r?.operationId===t&&(clearTimeout(r.timer),n.delete(e))},stopAll(){for(let e of n.values())clearTimeout(e.timer);n.clear()}}}function z_(e,t,n,r,i){let a=t=>{t.catch(t=>{e.send(L_(t,r))})};e.addEventListener(`message`,o=>{try{if(typeof o.data==`string`){let s=v_(o.data);switch(s.type){case`audio`:a(t.sendAudio({data:s.data,mimeType:`audio/pcm;rate=16000`}));return;case`video`:a(t.sendVideo({data:s.data,mimeType:s.mimeType}));return;case`text`:a(t.sendText(s.text));return;case`context`:a(t.sendContext({client:s.context}));return;case`executeTool`:{let{type:o,output:c,grantId:l,unanswered:u,...d}=s;if(l){if(!i)throw Error(`Page dispatch result is unavailable`);a(i({callId:d.callId,operationId:d.operationId,grantId:l,page:u?{unanswered:!0}:{output:c}}).then(t=>{t&&e.send(JSON.stringify({type:`executeToolResult`,callId:d.callId,operationId:d.operationId,status:`settled`}))}));return}if(i&&c!==void 0)throw Error(`Page result requires a dispatch grant`);n.stop(d.callId,d.operationId),V_(e,t,c===void 0?d:{...d,page:{output:c}},r);return}}}(o.data instanceof ArrayBuffer||o.data instanceof Uint8Array)&&a(t.sendAudio({data:xn(o.data instanceof Uint8Array?o.data:new Uint8Array(o.data)),mimeType:`audio/pcm;rate=16000`}))}catch(t){e.send(L_(t,r))}})}async function B_(e,t,n,r,i,a,o,s){e.send(JSON.stringify({type:`ready`,profile:n,sessionId:r}));try{for await(let n of t.events()){if(await s?.(n),n.type===`error`){e.send(JSON.stringify(vr(n,o.clientEvents)));try{e.close(1011,`session error`)}catch{}return}if(n.type===`tool`){let{tool:t}=n;t.phase===`dispatch`&&(a.stop(t.callId,Zr(t)),e.send(JSON.stringify({type:`executeToolResult`,callId:t.callId,operationId:Zr(t),status:`dispatched`,grantId:t.grantId,arguments:t.arguments}))),t.phase===void 0?a.start(t.callId,Zr(t)):(t.phase===`complete`||t.phase===`error`||t.phase===`cancel`)&&a.stop(t.callId,Zr(t))}e.send(JSON.stringify({type:`events`,events:ur([n],o.clientEvents)}))}}catch(t){e.send(L_(t,o))}finally{a.stopAll(),i.close();try{e.close(1e3,`session ended`)}catch{}}}async function V_(e,t,n,r){try{let r=await t.executeTool(n);e.send(JSON.stringify(r.gated?{type:`executeToolResult`,callId:n.callId,operationId:n.operationId,status:`gated`,gate:r.gated}:{type:`executeToolResult`,callId:n.callId,operationId:n.operationId,status:`settled`}))}catch(t){e.send(JSON.stringify({type:`executeToolResult`,callId:n.callId,operationId:n.operationId,status:`refused`,body:I_(t,r)}))}}var H_=2e4;function U_(e,t,n,r,i,a,o={}){let s=R_(t,o.clientCallTimeoutMs??H_),c={labels:a,clientEvents:o.clientEvents};return z_(e,t,s,c,o.pageResult),e.addEventListener(`close`,()=>{t.close(`client disconnected`)}),B_(e,t,n,r,i,s,c,o.beforeEvent)}function W_(){let e=crypto.randomUUID(),t=_g(),n=F_({request:new Request(`https://studio.local`),session:()=>e,sessionStore:t}),r=o_(t,18e5,ag,tg()),i=a_(r,e,i_());return{boundary:n,execution:A_(r,e),pageExecution:i.execution,pageResult:i.answer}}var G_=$h();us(st,G_.sink);async function*K_(e){let t=[],n=G_.route(e=>t.push(e)),r;try{yield*e(n.metadata)}catch(e){r={error:e}}finally{n.close()}for(let e of t)yield{type:`trace`,record:e};if(r)throw r.error}function q_(e,t){if(e===`live`)throw new V(`request`,`Studio ${t} does not support live profiles.`)}async function J_(e,t){let{scope:n,profile:r}=await Zh(e.profile,e.customTools,e.structured,e.runtime,e.dependencies);q_(r.type,`turn runner — use runSession`);let i=qn(r,n.tools);if(i.type===`live`)throw new V(`request`,`A studio chat does not run a live profile.`);return{scope:n,profile:r,iface:i,host:i.providerContinuation?.history===`stateless`?void 0:Dg({...t,profile:r,clientEvents:Dr(e.runtime)})}}function Y_(e){let{scope:t,profile:n,runtime:r,metadata:i,signal:a}=e;return{run:o=>t.runTurn({profile:n.id,execution:r.execution,pageExecution:r.pageExecution,metadata:i,input:o.input,providerState:o.providerState,sessionPermissions:e.sessionPermissions,resolveHost:r.resolveHost,signal:a,...o.model?{model:o.model}:{},...o.effort?{effort:o.effort}:{},...e.onStage?{onStage:e.onStage}:{},onAgentCall:Lh(t,r)},Fh(r,t,n,o.model)),async compact(e,i,o){return(await t.compactHistory({profile:n.id,history:e,tokens:i,signal:a,...o?{model:o}:{}},Fh(r,t,n,o)))?.history},...e.model?{model:e.model}:{},...e.effort?{effort:e.effort}:{},signal:a}}function X_(e,t,n,r,i,a){let o=n.conversation.paused?.events??[],s=fi(o).find(e=>e.callId===r.callId&&e.operationId===r.operationId);if(!s)throw new V(`internal`,`the paused reply holds no call ${r.callId}`);return ev(e,t,r,{name:s.name,input:s.arguments,gateKind:s.gateKind,snapshot:$r(o),promoted:Qr(o),...n.conversation.paused?.model?{model:n.conversation.paused.model}:{},...i?{sessionPermissions:i}:{}},a)}async function*Z_(e){let{request:t,runtime:n,signal:r}=e,{scope:i,profile:a,iface:o,host:s}=await J_(e,e.conversations),c=Wg(o,t.input),l=t.replay?.sessionPermissions;if(!s&&t.conversation!==void 0)throw n_(`continue`);if(!s&&t.abandon)throw n_(`walk away from`);let u=s?await Og(s,t.conversation,{kind:`message`,...t.abandon?{abandon:t.abandon}:{}},t.transcript?{profile:a,blocks:t.transcript}:void 0):void 0,d=u?(t.abandon??[]).map(e=>({reference:e,invoke:X_(i,a.id,u,{...e,decision:`abandon`},l,n)})):[],f=globalThis.crypto.randomUUID();await e.steer.open(f),yield{type:`steer_inbox`,inbox:f};try{yield*K_(o=>{let p=Y_({scope:i,profile:a,runtime:n,metadata:o,sessionPermissions:l,...t.model?{model:t.model}:{},...t.effort?{effort:t.effort}:{},signal:r,onStage:S_(e.steer,f)});if(!s||!u)return p.run({input:c.input,model:t.model,effort:t.effort});let m=d.map(({reference:e,invoke:t})=>({...e,events:i.invokeTool({...t,metadata:o,signal:r})}));return Xg({host:s,opened:u,message:c,walkAway:m,runner:p})})}finally{await e.steer.close(f)}}var Q_=p(f(),n());function $_(e){let t=`auth`in e?e.auth:void 0;return{permission:e.permission,...t?{auth:{slot:t.slot,authType:t.type,service:t.service}}:{}}}function ev(e,t,n,r,i){let a=r.name===void 0?void 0:e.tools.get(r.name);if(!a)throw new V(`request`,`invoke: the paused call names no tool in this draft`);let o=ti(n,{name:a.name,arguments:g_(Q_,r.input,`replayed call input`),gateKind:r.gateKind,...$_(a)},r.sessionPermissions??[]);return{profile:t,name:a.name,callId:n.callId,operationId:n.operationId,input:o.input,resume:o.resume,...o.page?{page:o.page}:{},sessionPermissions:o.sessionPermissions,...o.typed?{credentials:xm({[o.typed.slot]:o.typed.credential})}:{},snapshot:r.snapshot,promoted:r.promoted,model:r.model,resolveHost:i.resolveHost,execution:i.execution,pageExecution:i.pageExecution,onAgentCall:Lh(e,i)}}function tv(e){let{gateId:t,operationId:n,decision:r,input:i,secret:a,page:o}=e;return{callId:t,operationId:n,decision:r,input:i,secret:a,page:o}}function nv(e,t,n,r,i){let a=ev(e,t,tv(n),n.replay??{},r);return K_(t=>e.invokeTool({...a,metadata:t,signal:i}))}async function*rv(e){let{answer:t,runtime:n,signal:r}=e,{scope:i,profile:a,host:o}=await J_(e,e.conversations),s=tv(t),c=t.replay?.sessionPermissions;if(!o){if(t.conversation!==void 0)throw n_(`continue`);yield*nv(i,a.id,t,n,r);return}if(t.conversation===void 0)throw n_(`continue`);let l=await Og(o,t.conversation,{kind:`answer`,call:{callId:s.callId,operationId:s.operationId}}),u=X_(i,a.id,l,s,c,n);yield*K_(e=>Zg({host:o,opened:l,call:{callId:s.callId,operationId:s.operationId},settling:i.invokeTool({...u,metadata:e,signal:r}),runner:Y_({scope:i,profile:a,runtime:n,metadata:e,sessionPermissions:c,signal:r})}))}async function iv(e,t,n){let{profile:r,host:i}=await J_(e,t);if(!i)throw n_(`start`);let{ref:a,view:o}=await jg(i,r,n);return{conversation:a,view:o}}async function av(e,t,n){let{host:r}=await J_(e,t);if(!r)throw n_(`read`);return Ng(r,(await Og(r,n.conversation,{kind:`read`})).conversation)}async function ov(e,t,n,r){let{scope:i,profile:a,host:o}=await J_(e,t);if(!o)throw n_(`rewind`);let s=await Og(o,n.conversation,{kind:`rewind`,at:n.at}),c=t_(s.conversation).map(t=>{let n=X_(i,a.id,s,{...t,decision:`abandon`},void 0,e.runtime);return{...t,events:i.invokeTool({...n,signal:r})}}),l=await $g({host:o,opened:s,at:n.at,walkAway:c});if(l.ref===null)throw new V(`internal`,U(`error.internal`));return{conversation:l.ref,view:Ng(o,l.conversation)}}async function*sv(e){let{scope:t,profile:n}=await cv(e);yield*nv(t,n.id,e.answer,e.runtime,e.signal)}async function cv(e){let t=await Zh(e.profile,e.customTools,void 0,e.runtime,e.dependencies);if(t.profile.type!==`host`)throw new V(`request`,`Studio calls run host profiles only.`);return t}async function*lv(e){let{scope:t,profile:n}=await cv(e);yield*K_(r=>t.invokeTool({profile:n.id,execution:e.runtime.execution,pageExecution:e.runtime.pageExecution,name:e.call.name,input:e.call.input,sessionPermissions:e.sessionPermissions,resolveHost:e.runtime.resolveHost,onAgentCall:Lh(t,e.runtime),signal:e.signal,metadata:r}))}function uv(e){let t=[];return!e||!Hr(e).record?{traces:t}:{traces:t,sink:{write:e=>(t.push(e),Promise.resolve())}}}async function dv(e,t,n,r,i){let{scope:a,profile:o}=await Zh(e.profile,[],void 0,{mode:`byok`}),{traces:s,sink:c}=uv(o.observability);try{return{result:await a.runDecision({profile:o.id,state:t,questions:e.questions??{},assets:Cr(e.images,i),signal:r},{...n,...c?{sink:c}:{}}),traces:s}}catch(e){throw Tr(e,s)}}async function fv(e,t,n){let{scope:r,profile:i}=await Zh(e.profile,e.customTools,e.structured,n,e.dependencies);if(i.type!==`embedding`)throw new V(`request`,`Studio embedding runs require an embedding profile.`);let{traces:a,sink:o}=uv(i.observability);try{return{result:await r.runEmbedding({...t,profile:i.id},{...Fh(n,r,i,t.model),...o?{sink:o}:{}}),traces:a}}catch(e){throw Tr(e,a)}}export{U_ as attachStudioLiveSession,W_ as browserExecution,C_ as createMemorySteerInbox,Sg as createSealedConversationStore,Tg as liveSessionOpen,y_ as parseLiveOpenMessage,ov as rewindStudio,dv as runStudioDecision,fv as runStudioEmbedding,iv as startStudioConversation,x_ as steerUnitOf,lv as streamStudioCall,sv as streamStudioHostInvoke,rv as streamStudioInvoke,Z_ as streamStudioTurn,av as studioConversation,Zh as studioScope,G_ as studioTraces};
|