@theoremjs/studio 0.3.4-next.522.g9e684cd → 0.3.4-next.526.g51bc66f
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/package.json +4 -4
- package/page/assets/{Banner-UZW6WFTG.js → Banner-DcgTcVVW.js} +2 -2
- package/page/assets/{ConsoleFrame-C6ZxuLse.js → ConsoleFrame-Dep1lvnm.js} +1 -1
- package/page/assets/{ContextMenu-ClIUDzvK.js → ContextMenu-NgzKbTao.js} +2 -2
- package/page/assets/{ToolResultCharts-COgqvWEu.js → ToolResultCharts-CFvHRt5v.js} +1 -1
- package/page/assets/{TraceInspector-D2unePaa.js → TraceInspector-D92rKzc_.js} +1 -1
- package/page/assets/{TraceOverview-CCA1iUNg.js → TraceOverview-m12m2XgM.js} +1 -1
- package/page/assets/{_virtual_studio-type-sources-DfyVGpe8.js → _virtual_studio-type-sources-DVbxNwnP.js} +26 -4
- package/page/assets/browser-engine-DL-WovTC.js +11 -0
- package/page/assets/{browser-transport-CgmN-3Ia.js → browser-transport-CmAIXFia.js} +4 -4
- package/page/assets/{crypto-BoqeX_71.js → crypto-BAY2nUlu.js} +1 -1
- package/page/assets/{encode-files-DFrbgXms.js → encode-files-BSTfq_Gp.js} +1 -1
- package/page/assets/{export-agent-U8qRBuhg.js → export-agent-C8_6CZgy.js} +1 -1
- package/page/assets/{guardrail-tester-DASanQyo.js → guardrail-tester-Dk5L25mc.js} +1 -1
- package/page/assets/{index-CGN6iWF2.js → index-B95kGH1Q.js} +9 -9
- package/page/assets/{live-messages-cl-CI8gZ.js → live-messages-DIf_R-NT.js} +1 -1
- package/page/assets/{reader-IkImpzZF.js → reader-BkaAkeh0.js} +5 -5
- package/page/assets/{shaped-data-CITXsEfw.js → shaped-data-C4jsvipW.js} +12 -13
- package/page/assets/{stub-Ccyi1ZiM.js → stub-4m0tKRlG.js} +1 -1
- package/page/assets/{studio-code-pane-AoMu0cGy.js → studio-code-pane-CPyzXehM.js} +3 -3
- package/page/assets/{studio-console-JNYkyQ0E.js → studio-console-BV4NlQY-.js} +1 -1
- package/page/assets/{studio-decision-BRJuvgS3.js → studio-decision-BT6Ee-kK.js} +1 -1
- package/page/assets/{studio-embedding-D-r2kuz3.js → studio-embedding-DVduw2Un.js} +1 -1
- package/page/assets/{studio-host-console-HoLSpRVk.js → studio-host-console-CngXS38i.js} +2 -2
- package/page/assets/{studio-labels-CBcjlfH4.js → studio-labels--uHJcIbG.js} +1 -1
- package/page/assets/{studio-live-DtywUIK2.js → studio-live-DTHgPVFH.js} +2 -2
- package/page/assets/{studio-map-BIJ-S7br.js → studio-map-CT0jsRMr.js} +1 -1
- package/page/assets/{studio-trace-replay-BuOKQwlj.js → studio-trace-replay-DS9o-VrA.js} +1 -1
- package/page/assets/{studio-type-checker-C8qG2W9D.js → studio-type-checker-CHFs7A7H.js} +1 -1
- package/page/assets/tool-schema-DpbtSZtQ.js +17 -0
- package/page/assets/{trace-record-Dqvj9bhx.js → trace-record-D9wgX8kq.js} +1 -1
- package/page/assets/{tree-jmLWUWxQ.js → tree-0OoOeHfS.js} +1 -1
- package/page/assets/{turn-client-DSatougR.js → turn-client-BWO4ocVM.js} +1 -1
- package/page/assets/types-BRZU5tBz.js +1 -0
- package/page/assets/{use-one-call-BcTU9gJ9.js → use-one-call-DOzbF9kQ.js} +1 -1
- package/page/assets/{workspace-B2bnm5qv.js → workspace-DJBP4Adw.js} +1 -1
- package/page/index.html +15 -15
- package/page/assets/browser-engine-CRGnAh9x.js +0 -11
- package/page/assets/tool-schema-DDkOMTMz.js +0 -17
- package/page/assets/types-4jMDDudJ.js +0 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/compile-egress-BRGW9qfO.js","assets/rolldown-runtime-hePW80VL.js","assets/host-patterns-cSf1U25G.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,A as g,An as _,Ar as v,At as y,Bn as b,C as x,Cn as S,Cr as C,Ct as w,Dn as T,Dt as E,En as D,Er as O,Et as ee,Fn as k,Ft as te,Hn as ne,It as A,Jt as re,Kn as ie,Kt as ae,L as oe,Lt as j,Mn as se,Mt as ce,Nn as le,Nr as ue,Nt as de,On as fe,Or as pe,Ot as me,Pn as he,Pt as ge,Q as _e,Rn as ve,Rt as M,Sn as ye,Sr as N,St as be,Tn as P,Tr as F,Tt as xe,Vn as Se,Wt as Ce,Xt as we,Yt as Te,Zt as Ee,_n as De,_t as Oe,an as ke,at as Ae,bn as je,br as Me,bt as Ne,cn as Pe,cr as Fe,ct as Ie,dr as Le,dt as Re,en as ze,et as Be,ft as Ve,gn as I,gt as L,ht as He,in as Ue,it as We,jr as Ge,jt as Ke,kn as qe,kt as Je,ln as Ye,lr as Xe,lt as Ze,mn as Qe,mt as $e,nn as et,nt as R,on as tt,ot as nt,p as rt,pn as it,pt as z,rn as at,rt as ot,sn as st,st as ct,tt as lt,ut,v as dt,vn as ft,wn as pt,wt as mt,xn as ht,xt as gt,yn as _t,yt as vt,zn as yt,zt as bt}from"./tool-schema-DpbtSZtQ.js";import{c as B,t as xt}from"./host-patterns-cSf1U25G.js";import{$ as St,A as Ct,An as wt,At as Tt,B as Et,Ct as Dt,D as Ot,Dn as kt,Et as At,Fn as jt,Ft as Mt,In as V,It as Nt,J as Pt,K as Ft,Ln as H,M as It,Mn as Lt,Mt as Rt,N as zt,Nn as Bt,Nt as Vt,O as U,On as Ht,Ot as Ut,Pt as Wt,R as Gt,Rn as Kt,St as qt,T as Jt,Tt as Yt,U as Xt,Un as W,Y as Zt,Z as Qt,_n as $t,_t as en,at as tn,bn as nn,bt as rn,ct as an,dt as on,et as sn,gt as cn,hn as ln,ht as un,j as dn,jn as fn,jt as pn,k as G,kn as mn,kt as hn,lt as gn,mn as _n,mt as vn,on as yn,ot as bn,pn as xn,pt as Sn,q as Cn,st as wn,un as Tn,vn as En,vt as Dn,xt as On,yt as kn}from"./shaped-data-C4jsvipW.js";import{$ as An,At as jn,B as Mn,Bt as Nn,Ct as Pn,Dt as Fn,Et as In,Ft as Ln,G as Rn,Gt as zn,Ht as Bn,It as Vn,J as Hn,Jt as Un,K as Wn,Kt as Gn,Lt as Kn,M as qn,Mt as Jn,N as Yn,Nt as Xn,Ot as Zn,Pt as Qn,Q as $n,Qt as er,St as tr,Tt as nr,U as rr,Ut as ir,Vt as ar,Wt as or,X as sr,Xt as cr,Y as lr,Yt as ur,Z as dr,Zt as K,_t as fr,a as pr,at as mr,bt as hr,ct as gr,dt as _r,ft as vr,gt as yr,ht as br,i as xr,it as Sr,jt as Cr,k as wr,kt as Tr,l as Er,lt as Dr,m as Or,mt as kr,n as Ar,o as jr,ot as Mr,pt as Nr,qt as Pr,r as Fr,rt as Ir,st as Lr,tt as Rr,ut as zr,vt as Br,wt as Vr,xt as Hr,yt as Ur}from"./reader-BkaAkeh0.js";import{a as Wr,t as Gr}from"./live-ingress-qi-y5uvH.js";import{t as Kr}from"./trace-record-D9wgX8kq.js";import{n as qr,r as Jr,t as Yr}from"./crypto-BAY2nUlu.js";import{D as Xr,E as Zr,T as Qr,b as $r,c as ei,g as ti,i as ni,l as ri,u as ii,v as ai,w as oi}from"./turn-client-BWO4ocVM.js";import{n as si,t as ci}from"./live-messages-DIf_R-NT.js";import{n as li,r as ui}from"./lent-keys-C32ems-I.js";import{at as di,ct as fi,et as pi,ft as mi,it as hi,ot as gi,rt as _i,st as vi,tt as yi}from"./index-B95kGH1Q.js";function bi(){return{given:new Set,remote:new Map}}var xi=/[\p{L}\p{N}_.+-]/u,Si=/[\p{L}\p{N}_-]/u,Ci=/(?:https?:\/\/|www\.)[^\s'"<>)\]]+/gi,wi=/\b[A-Z]{2}\d{2}[A-Z0-9]{10,30}\b/g,Ti=/[/?#]/;function Ei(e,t){let n=t;for(;n<e.length;){let t=String.fromCodePoint(e.codePointAt(n)??0);if(!Si.test(t))break;n+=t.length}return n}function Di(e,t){let n=Ei(e,t);if(n===t)return-1;let r=1;for(;e.charAt(n)===`.`;){let t=Ei(e,n+1);if(t===n+1)break;n=t,r+=1}return r>1?n:-1}function Oi(e){let t=e.length;for(;t>0&&(e.charAt(t-1)===`.`||e.charAt(t-1)===`,`);)--t;return e.slice(0,t)}function ki(e){let t=[],n=e.indexOf(`@`);for(;n>=0;){let r=n;for(;r>0&&xi.test(e.charAt(r-1));)--r;let i=r<n?Di(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 Ai(e){let t=e.replace(/^https?:\/\//i,``),n=t.search(Ti),r=n<0?t:t.slice(0,n);return Oi(r.slice(r.lastIndexOf(`@`)+1).replace(/:\d*$/,``).toLowerCase()).replace(/^www\./,``)}function ji(e){let t=ki(e),n=[],r=0;for(let{start:i,end:a}of t)n.push(e.slice(r,i),` `.repeat(a-i)),r=a;n.push(e.slice(r));let i=n.join(``),a=[...t];for(let e of[...i.matchAll(Ci)]){let t=Ai(e[0]);t&&a.push({key:`host:${t}`,start:e.index,end:e.index+e[0].length})}for(let e of[...i.matchAll(wi)])a.push({key:`account:${e[0].toLowerCase()}`,start:e.index,end:e.index+e[0].length});return a}function Mi(e){let t=e.trimStart().charAt(0);if(t===`{`||t===`[`)try{return JSON.parse(e)}catch{return}}var Ni=32;function Pi(e,t,n=0){if(!(n>Ni)){if(typeof e==`string`){let r=Mi(e);r===void 0?t(e):Pi(r,t,n+1)}else if(Array.isArray(e))for(let r of e)Pi(r,t,n+1);else if(e&&typeof e==`object`)for(let r of Object.values(e))Pi(r,t,n+1)}}function Fi(e,t=!1){let n=new Set;return Pi(e,e=>{let r=e.trim(),i=ji(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 Ii(e,t){for(let n of Fi(t))e.given.add(n)}function Li(e,t,n){for(let r of t)r.role===`assistant`||r.role===`tool`||n.has(r)||Ii(e,Vt(r).text)}function Ri(e,t,n){Ii(e,t.system),n.has(t.input)||Ii(e,Vt(t.input).text),Li(e,t.history??[],n)}function zi(e,t,n){if(!ye(n.origin)){Ii(e,[t.finding,t.data]);return}let r=Mi(t.finding),i=new Set([...r===void 0?Fi(t.finding):Fi(r,!0),...Fi(t.data,!0)]);for(let t of i)e.remote.has(t)||e.remote.set(t,n.tool)}function Bi(e,t,n,r){if(!e||e.remote.size===0)return{verdict:{action:`allow`}};let i=[...Fi(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:W(`taint.destination_blocked`,s,r)}}:{verdict:{action:`flag`,hits:o},...c===`confirm`?{confirm:W(`taint.destination_confirm`,s,r)}:{}}}var Vi={image:`thought.omitted_image`,link:`thought.omitted_link`,instructions:`thought.omitted_instructions`},Hi={rule:$t.ungiven_images,severity:`high`},Ui={rule:$t.ungiven_links,severity:`high`},Wi={rule:$t.marker_leak,severity:`high`},Gi={rule:$t.prompt_leak,severity:`high`};function Ki(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 qi(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 Ji=8,Yi=16;function Xi(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=W(Vi[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?Un({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=Nt(e,_);i=Mt(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 gn(e,d(t.images)))i.push({...n,kind:`image`,hit:Hi});if(t.links)for(let n of on(e,d(t.links),c))i.push({...n,kind:`link`,hit:Ui});if(t.markers){let t=[new RegExp(St.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:Wi})}}if(n)for(let[t,r]of Dn(e,n))i.push({start:t,end:r,kind:`instructions`,hit:ln});if(r)for(let[t,n]of Mt(e,r,l))i.push({start:t,end:n,kind:`instructions`,hit:Gi});return i}function O(e){return b.find(t=>t.start<e&&e<t.end)}function ee(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 k(){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||Nt(a.text,a.held)>0)return a}}function te(){let e=k();if(!e)return[];let t=[];if(n)for(let[r,i]of Dn(e.text,n))t.push([r,i,ln]);if(r)for(let[n,i]of Mt(e.text,r,l))t.push([n,i,Gi]);let i=[];for(let[n,r,a]of t){if(r<=e.held)continue;let t=Ki(e,n),o=Ki(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 ne(){return qi([...D(p+m),...te()])}function A(){return ne().filter(({end:e})=>e>p.length)}function re(e,t=!1){let n=O(e);return n?t?n.end:n.start:e}function ie(e){let t=A(),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(re(e)),S=i?.has(a.rule)??!1;let o=S?n.length:Math.max(l,re(t,!0)),d=f(r,p+c),m=p.length+c.length;if(s.push({start:m,end:m+d.length,raw:ee(l,o)}),c+=d,w.set(a.rule,a),l=o,S)break}return y=void 0,a&&!S&&(u(re(a.start)),y=p.length+c.length),u(n.length),b=s,m=c,x=0,o.length>0}function ae(){let e=ne()[0],t=e?Math.max(0,re(e.start)-p.length):0,n=m.slice(0,t),r=f(e?.kind??`instructions`,p+n),i=p.length+t,a=ee(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 oe(){let e=p+m;return y===void 0?e:e.slice(0,y)}function j(){for(let e=0;e<Ji&&!(C>=Yi);e++){let e=new Set(b.map(e=>e.start));if(!ie(!1)){if(y===void 0)break;return}if(S||(b.some(t=>!e.has(t.start))&&C++,!T(oe())))return}ae()}function se(){let e=p.length+m.length,t=h?h.holdFrom():e,i=n?ce(n):e,a=r?p.length+Wt(m,r,l):e,o=Math.min(t,i,a,ue()??e,y??e);return re(o<p.length?o:p.length+Tt(m,o-p.length))}function ce(e){let t=Math.max(p.length,x),n=Math.max(0,t-vn),r=n+rn(le(n),e);if(r<t&&t>p.length){let t=Math.max(0,p.length-vn);r=t+rn(le(t),e)}return x=Math.min(r,p.length+m.length-vn),Math.max(p.length,r)}function le(e){return e<p.length?p.slice(e)+m:m.slice(e-p.length)}function ue(){let e=k();if(!e)return;let t=e.text.slice(e.held),i=n?en(t,n,e.text.slice(0,e.held)):t.length,a=r?Wt(t,r,l):t.length;return Ki(e,e.held+Math.min(i,a))}function de(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)||te().length>0)&&j(),S))return de(``);let t=Math.max(0,se()-p.length),n=m.slice(0,t);return p+=n,m=m.slice(t),de(n)},flush(){if(!S){for(let e=0;e<Ji&&!S&&ie(!0);e++);!S&&m&&(D(p+m).length>0||te().length>0)&&ae()}let e=m,t=p+m;p=n||r?At(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),de(e)},carryOut:()=>p}}function Zi(...e){let t=e.filter(e=>e!==void 0);return t.length===0?{}:{found:{action:t.reduce((e,t)=>Xt(e,t.action),`allow`),hits:[...new Map(t.flatMap(({hits:e})=>e).map(e=>[e.rule,e])).values()]}}}function Qi(e,t,n,r){let i=()=>Pr(`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,...Zi(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()],...Zi(n,r?.found,u.found)}},carryOut:()=>e?.carryOut()??``}}var $i={canary_leak:ln,prompt_leak:Gi,marker_leak:Wi,ungiven_images:Hi,ungiven_links:Ui},ea=[`marker_leak`,`ungiven_images`,`ungiven_links`];function ta(e,t){let{canary:n,privateSystem:r}=e,i=n?qt(n):void 0,a=``,o=new Set;return{read(e){let n=Nt(a+e,a.length);a+=e;let s=[];i?.push(e)&&s.push(ln),r&&Mt(a.slice(n),r,t).length>0&&s.push(Gi);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 na(e,t,n,r){let i=ta(n,r),a=new Map(Object.entries($i).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)=>Xt(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 ra(e,t,n){let{detect:r}=e,i=ea.filter(e=>ia(r,e)),a=oa(r,t,ia),o=oa(r,t,(e,t)=>e[t].thought===`flag`),s=i.length>0||sa(a)||sa(o),c=Et(e,t);(s||zt([`thought`],r,c))&&await ur();let l=s?Xi({omit:aa(e),...a,...ca(r),...la(t),...n?{carry:n}:{}}):void 0;return Qi(l&&na(l,r,o,t.canary),r,c,i)}function ia(e,t){return e[t].thought===`redact`||e[t].thought===`block`}function aa({detect:e,allow:t}){return{...ia(e,`marker_leak`)?{markers:!0}:{},...ia(e,`ungiven_images`)?{images:t.ungiven_images}:{},...ia(e,`ungiven_links`)?{links:t.ungiven_links}:{},imagesRead:e.ungiven_images.thought!==`ignore`}}function oa(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 sa(e){return e.canary!==void 0||e.privateSystem!==void 0}function ca(e){let t=new Set(Object.entries($i).filter(([t])=>e[t].thought===`block`).map(([,e])=>e.rule));return t.size>0?{ends:t}:{}}function la({canary:e,givenUrls:t,labels:n}){return{...e?{planted:e}:{},...t?{given:t}:{},...n?{labels:n}:{}}}var ua={rule:`live.untranscribed-audio`,severity:`high`};async function da(e,t,n,r,i){let a=I(e.guardrails),o={stage:`live_outbound`,trust:`untrusted`,profileId:e.id,...Gt(a.detect,{canary:t,privateSystem:n}),...e.labels?{labels:e.labels}:{},...r?{givenUrls:r}:{},...i?{ownTools:i}:{}},s=await ra(a,o);return{policy:a,context:o,gate:await or(a,o,`live_reply`),held:[],releasedTo:0,withholdVisible:!1,...s?{thoughts:s}:{}}}function fa(e){let t=e.gate?.carryOut();e.gate=zn(e.policy,e.context,`live_reply`,t),e.held=[],e.releasedTo=0,e.withholdVisible=!1,e.promptLeaks=void 0}function pa(e,t,n=[]){let r=cr(`live_outbound`,`untrusted`,t,`block`);return{action:`withhold`,error:new B(`safety`,e),events:[...n,...r?[r]:[]]}}function ma(e){return e.accumulated().length-e.unreleased().length}function ha(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 ga(e,t,n,r){if(!n.blocked){let i=n.found&&It(`live_reply`,n.found);i&&r.push(K(i)),ha(e,t,ma(t),r);return}let i=n.hits.filter(Zt);i.length>0&&(e.promptLeaks=i),e.withholdVisible=!0;let a=n.boundary?void 0:cr(`live_outbound`,`untrusted`,n.hits,`block`);a&&r.push(a)}function _a(e,t,n){e.withholdVisible||e.held.length===0||ga(e,t,t.flush(),n)}function va(e,t,n,r){let i=t.accumulated().length;e.held.push({event:n,start:i,end:r?i:1/0})}function ya(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 ba(e,t,n,r){let i=n.text??``;if(!i)return;let a=t.accumulated().length;ya(e,a+i.length),e.held.push({event:n,start:a,end:a+i.length});let o=t.process(i);e.withholdVisible||ga(e,t,o,r)}function xa(e,t){let n=[],{gate:r}=e;if(!r){let{thoughts:n}=e;return Ta(n?t.flatMap(e=>e.type===`thought`?Sa(n.push(e.text),e):[e]):t)}let i=!1;for(let a of t){if(Dt(a)){i||=!!a.text,ba(e,r,a,n);continue}if(a.type===`media`){va(e,r,a,i),e.withholdVisible||ha(e,r,ma(r),n);continue}_a(e,r,n),Ca(a)&&wa(e,r,n);let t=a.type===`tool`?void 0:Pt(a,e.context,e.policy.detect,`live_reply`);if(t?.stop)return pa(Qt(t.hits),t.hits,n);if(t){let e=It(`live_reply`,{action:`flag`,hits:t.hits});e&&n.push(K(e))}a.type===`thought`&&e.thoughts?n.push(...Sa(e.thoughts.push(a.text),a)):n.push(a)}return Ta(n)}function Sa({text:e,hits:t,found:n},r){let i=n&&It(`thought`,n),a=cr(`thought`,`untrusted`,t,`redact`);return[...i?[K(i)]:[],...a?[a]:[],...e?[{...r,text:e}]:[]]}function Ca(e){return e.type===`done`&&e.stop?.kind===`generation_complete`}function wa(e,t,n){let r=t.accumulated().length;e.withholdVisible||r===0||ma(t)<r||ha(e,t,r,n,!0)}function Ta(e){return e.length===0?{action:`idle`}:{action:`emit`,events:e}}function Ea(e,t,n){let{detect:r,blockedReply:i}=e.policy,a=D({text:t.accumulated()},r,{boundary:`live_reply`,...e.withholdVisible?{reportedTo:ma(t)}:{},scope:Et(e.policy,e.context)}),o=t.accumulated().slice(0,e.releasedTo),s=qe(a,e.promptLeaks),c=s&&s!==a.blocked?cr(`live_outbound`,`untrusted`,s,`block`):void 0,l=[...n,...a.events.map(K),...c?[c]:[]];if(s){if(i.onBlock===`refuse`){let t=T(o,e.context.labels);return{action:`emit`,events:[...l,{type:`text`,text:t}]}}return{action:`withhold`,error:new B(`safety`,Ft.egress),events:l}}if(a.rewritten){let e=fe(o,a.payload.text);return{action:`emit`,events:[...l,{type:`text`,text:e}]}}return ha(e,t,t.accumulated().length,l,!0),Ta(l)}function Da(e,t){if(e.held.length===0)return t;let n=cr(`live_outbound`,`untrusted`,[ua],`block`);return n?[...t,n]:t}function Oa(e,t){let n=[];return _a(e,t,n),t.accumulated()?Ea(e,t,n):Ta(Da(e,n))}function ka(e){let t=e.thoughts?Sa(e.thoughts.flush(),{type:`thought`,text:``}):[];if(!e.gate)return Ta(t);let n=Oa(e,e.gate);return fa(e),t.length===0?n:n.action===`idle`?{action:`emit`,events:t}:{...n,events:[...t,...n.events??[]]}}function Aa(e){e.thoughts?.flush(),fa(e)}var ja=[1e3,2e3,4e3,8e3],Ma=5e3,Na=ja.length,Pa=1e3,Fa=new Set([408,429,500,502,503,504,529]),Ia=(e,t)=>new Promise((n,r)=>{if(t?.aborted){r(La(t));return}let i=setTimeout(()=>{t?.removeEventListener(`abort`,a),n()},e);function a(){clearTimeout(i),r(La(t))}t?.addEventListener(`abort`,a,{once:!0})});function La(e){return e.reason??new DOMException(`The operation was aborted.`,`AbortError`)}function Ra(e){return Fa.has(e)}function za(e){let t=Bt(e);return t instanceof B&&t.kind===`network`}function Ba(e){return ja[Math.min(e,ja.length-1)]}function Va(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*Pa:Date.parse(r)-t}if(!(i===void 0||Number.isNaN(i)||i<0))return i}function Ha(e,t=Ia,n=()=>1/0){return async(r,i)=>{let a=0;for(let o=0;;o++){let s=Math.min(Ma-a,n()),c;try{let t=await e(r,i);if(!Ra(t.status)||(c=Va(t.headers)??Ba(o),c>s||o>=Na))return t;await t.body?.cancel()}catch(e){if(c=Ba(o),!za(e)||c>s||o>=Na)throw e}await t(c,i?.signal),a+=c}}}var Ua=`[DONE]`;function Wa(e){if(e&&typeof e==`object`&&!Array.isArray(e))return e}function Ga(e,t){let n=e.startsWith(`data:`)?e.slice(5).replace(/^ /,``):e,r={};if(t&&(r.sseEvent=t),n===Ua)return r.eventType=`sse_done`,r;try{let e=JSON.parse(n),t=Wa(e);return t?{...t,...r}:(r.eventType=`sse_unparsed`,r.data=e,r)}catch{return r.eventType=`sse_unparsed`,r.data=n,r}}function Ka(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(Ga(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*qa(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=Ka(r);r=o.rest;for(let e of o.payloads)yield e}}finally{i||t.cancel().catch(()=>void 0),t.releaseLock()}}var Ja=/key|auth|cookie|secret|token/i;function Ya(e,t){return Ja.test(e)?`[redacted]`:t}function Xa(e){let t={};for(let[n,r]of new Headers(e).entries())t[n]=Ya(n,r);return t}function Za(e){return e instanceof Error?{eventType:`http_throw`,name:e.name,message:e.message}:{eventType:`http_throw`,name:`Error`,message:String(e)}}function Qa(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 $a(e,t=fetch,n){return e?async(r,i)=>{e({eventType:`http_request`,method:i?.method??`GET`,url:String(r),headers:Xa(i?.headers),...n?{keySlot:n}:{},...Qa(i?.body)});try{let n=await t(r,i);return e({eventType:`http_response`,status:n.status,headers:Xa(n.headers)}),n.ok||e({eventType:`http_error_body`,body:await n.clone().text()}),n}catch(t){throw e(Za(t)),t}}:t}function eo(e=fetch){return(t,n)=>jt(e,t,n)}var to=`key_fallback`,no=1e6;function ro(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 io(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 ao(e,t,n){let r=ro(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)+io(n.input-a,i.input,i.byModality?.input,n.byModality?.input)+io(n.output,i.output,i.byModality?.output,n.byModality?.output))/no,estimated:!0}}function oo(e){return(t,n)=>{if([...n.headers.keys()].length)throw new B(`unsupported`,W(`protocol.ws_headers`,{provider:e}));return Promise.resolve(new WebSocket(t,n.protocols))}}var so=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789`,co=248;function lo(){let e=``;for(;e.length<24;)for(let t of crypto.getRandomValues(new Uint8Array(24-e.length)))t<co&&(e+=so[t%62]);return e}function uo(e){return Ee(e.provider,e.binding)}var fo=new WeakMap;function po(e,t){return e&&Object.hasOwn(e,t)?e[t]:void 0}async function mo(e,t,n){let{definition:r}=e.provider,i=t.authorize??r.authorize;if(!r.key||!i)return;let a=n?po(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 B(`auth`,s===void 0?W(`provider.credential_missing`,{slot:n??``}):W(`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=fo.get(e.provider)??new Map;fo.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 ho(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*go(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:_n(t)}}else if(!t)yield await e.json();else if(e.body)for await(let t of qa(e.body)){if(t.eventType===`sse_done`)return;yield t}}function _o(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 vo(e,t,n){let r=_o(await n.text()),i=e.error?.({status:n.status,body:r,headers:n.headers})??new B(Lt(n.status),W(`protocol.http`,{provider:t,status:n.status}));return Object.assign(i,{status:n.status})}function yo(e){return e.builtins.map(e=>e.id)}function bo(e,t,n=[]){let r=t.find(e=>!n.includes(e));if(r!==void 0)throw new B(`unsupported`,W(`protocol.builtin_unwritten`,{protocol:e.id,tool:r}))}async function xo(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 So(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 Co(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 xo(e.data);t.trim()&&s(So(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:O.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 wo(e,t,n,r={sent:!1},i=[]){let a=uo(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 B(`unsupported`,W(`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??e.binding.limits??{},...e.signal?{signal:e.signal}:{},tapUpstream:l,async*send(n,c){bo(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:ho(a,u(c.path),s,c.stream),headers:d,protocols:[],body:JSON.stringify(n)};await(await mo(e,a,t))?.sign(f);let p=Ha($a(e.tapUpstream&&(t=>e.tapUpstream?.(t)),eo(e.fetch??fetch),t),e.wait??Ia,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 vo(o,e.provider.id,m);for await(let e of(o.framing??go)(m,c.stream))l(e),yield e},async connect(n,c){bo(o,i,c?.wroteTools);let d={transport:`ws`,url:ho(a,u(void 0),s,!0),headers:new Headers(a.headers),protocols:[]};await(await mo(e,a,t))?.sign(d);let f=e.openWebSocket??oo(e.provider.id);r.sent=!0;let p=Co(await f(d.url.toString(),{headers:d.headers,protocols:d.protocols}),l);return p.send(n),p}}}function To(e,t){return e instanceof B&&e.kind===t}async function*Eo(e,t){let{keySlot:n,fallbackKeySlot:r}=ze(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((To(t,`rate_limit`)||To(t,`busy`))&&r&&i!==r&&Do(e,r))e.tapUpstream?.({eventType:to,from:i??null,keySlot:r,errorKind:t.kind,error:t.message}),i=r,a=!0;else if(To(t,`auth`)&&!o){o=!0;let t=uo(e);fo.get(e.provider)?.get(`${t.protocol.id}\u0000${i??``}`)?.signer.invalidate?.()}else throw t}}}function Do(e,t){let n=po(e.vault,t);return typeof n==`string`?n.trim()!==``:typeof n==`function`||typeof n==`object`&&!!n}function Oo(e){if(!(e instanceof B)||e.kind===`cancelled`||e.kind===`config`)throw e;return{type:`error`,errorKind:e.kind,errorInternal:Ht(e),...e.copy?{errorCopy:e.copy}:{}}}function ko(e){if(e.state===void 0)return e;if(!e.history?.length)throw new B(`request`,W(`protocol.history_needed`));let{state:t,stateHistoryLength:n,...r}=e;return r}function Ao(e){let t=new Map,n=e=>{let n=t.get(e);if(n)return n;let r=lo();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=ao(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 jo(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=ao(n,t.model,{input:r,output:i,total:r+i});return a?{...t,usage:{...t.usage,costUsd:a.usd,estimated:!0}}:t}function Mo(e){return uo(e).protocol}function No(e,t,n){let r=t[n];if(!r)throw new B(`unsupported`,W(`protocol.no_operation`,{protocol:e.id,operation:n}));let i=r;return((...e)=>i.apply(t,e))}async function Po(e,t,n){let r=Mo(e);for await(let i of Eo(e,i=>(async function*(){let a=r.create(wo(e,i,[]));yield await No(r,a,t)(n)})()))return i;throw new B(`internal`,W(`provider.decision_failed`))}function Fo(e){let t=Mo(e);return{async*complete(n){let{finish:r}=Ao(e),i=[],a={sent:!1},o=Eo(e,(r,o)=>{a.sent=!1;let s=t.create(wo(e,r,i,a,yo(n)));return No(t,s,`complete`)(o?ko(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 Oo(e);return}for(let e of i.splice(0))yield{type:`raw`,row:e}},async openSession(n){let{finish:r,wireOf:i}=Ao(e),a=[],o;for await(let r of Eo(e,(r,i)=>(async function*(){let o=t.create(wo(e,r,a,void 0,yo(n)));yield await No(t,o,`openSession`)(i?ko(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=>jo(e,await Po(e,`decide`,t)),embed:t=>Po(e,`embed`,t)}}function Io(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}}function Lo(e,t){return t!==void 0&&e>t}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=Io(t?[t,this.controller.signal]:[this.controller.signal]);this.signal=r.signal,this.releaseSignal=r.dispose,n!==void 0&&(this.startTimer(n),this.deadline=performance.now()+n)}resumeOperation(){if(this.deadline===void 0)return;let e=this.deadline-performance.now();e<=0&&(this.controller.abort(new B(`timeout`,W(`error.timeout`))),V(this.signal)),this.startTimer(e)}timeLeft(){let e=this.timerDeadline??this.deadline;return e===void 0?1/0:e-performance.now()}startTimer(e){this.stopTimer(),this.timerDeadline=performance.now()+e,this.timer=setTimeout(()=>this.controller.abort(new B(`timeout`,W(`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(){let e=this.limits.liveStepTimeoutMs;this.timer===void 0&&e!==void 0&&this.startTimer(e)}fail(){let e=new B(`bad_response`,W(`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 B(`timeout`,W(`error.timeout`))),V(this.signal)}value(e){this.checkDeadline();let t=new TextEncoder().encode(JSON.stringify(e)).byteLength;this.checkDeadline(),this.stepBytes+=t,this.stepEvents++,(Lo(t,this.limits.maxEventBytes)||Lo(this.stepBytes,this.limits.maxStepBytes)||Lo(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),Lo(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)=>{V(this.signal);let r=await e(t,n);this.signal.aborted&&(r.close(),V(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(Lo(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=Io(r?[this.signal,r]:[this.signal]),a=i.signal;V(a);let o=await e(t,{...n,signal:a}).catch(e=>{throw i.dispose(),e});if(V(a),!o.body)return i.dispose(),o;let s=o.body.getReader(),c=0,l=this.limits.maxWireRecordBytes!==void 0&&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{V(a);let t=await s.read();if(V(a),t.done){e.close(),a.removeEventListener(`abort`,u),i.dispose(),s.releaseLock();return}c+=t.value.byteLength,this.wireBytes+=t.value.byteLength,(Lo(c,this.limits.maxWireResponseBytes)||Lo(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++,Lo(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(),O),stepId:f().min(1).optional(),stepCallCount:d().int().min(1).optional()}),Vo=k.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=Se.parse(e);if(t.kind===`gate`)throw new B(`bad_response`,W(`provider.kernel_gate`));return t}function Wo(e){if(!G(e)||typeof e.type!=`string`)throw new B(`bad_response`,W(`provider.event_invalid`));if(Ho.has(e.type))return yt.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:F.parse(e.row)};case`done`:return{type:`done`,stop:Uo(e.stop),interrupted:i().optional().parse(e.interrupted),state:e.state};case`response`:if(!G(e.response))throw new B(`bad_response`,W(`provider.response_identity`));return{type:`response`,response:t({id:f().optional(),model:f().optional()}).parse(e.response)};default:throw new B(`bad_response`,W(`provider.event_type`,{type:e.type}))}}async function Go(e,t){if(V(t),!t)return await e();let n=()=>{},r=new Promise((e,r)=>{n=()=>{try{V(t)}catch(e){r(e)}},t.addEventListener(`abort`,n,{once:!0}),t.aborted&&n()});try{return await Promise.race([Promise.resolve().then(()=>(V(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(fn(e))return new DOMException(n,`AbortError`);let r=e instanceof Error&&e.cause!==void 0?{cause:qo(e.cause,t)}:{},i=e instanceof B?new B(e.kind,n,{copy:Ko(e.copy,t),...r}):e instanceof TypeError?TypeError(n,r):Error(n,r);return G(e)&&typeof e.status==`number`&&Object.assign(i,{status:e.status}),i}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=Object.freeze(ke.parse({...t.limits,...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=ze(e,t).keySlot,f=Fo({provider:e,binding:t,profileType:n,limits:a,signal:o.signal,fetch:o.fetch(r.fetch??globalThis.fetch),openWebSocket:o.socket(r.openWebSocket??oo(e.id)),...r.vault?{vault:r.vault}:{},...r.wait?{wait:r.wait}:{},timeLeft:()=>o.timeLeft(),...i.tapUpstream?{tapUpstream:e=>i.tapUpstream?.(F.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 B(`request`,W(`provider.stateless_history`))}async function es(e,t,n,r,i={}){if(!n)return{};let a=C.parse(n),o=et(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===ze(e,t).keySlot?(i.history===`provider`?r.length>0:a.coveredHistoryLength>r.length||a.coveredHistoryHash!==await N(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=et(e,t),s=o.continuation;if(!s)throw new B(`bad_response`,W(`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 N(i),data:O.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=>at(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}V(t);let d=e.value;if(r)throw new B(`bad_response`,W(`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 B(`bad_response`,W(`provider.duplicate_call`));d.call.wireCallId&&(n[d.call.callId]=d.call.wireCallId),a.push(as(d.call));continue;case`tool_cancel`:throw new B(`bad_response`,W(`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=et(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(V(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,...st({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 B(`config`,`registerTraceDestination requires a non-empty id`);if(!ls(t))throw new B(`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 B(`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,Kr({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={...Wr(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=Jt(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 xe(o.root,e),e}finally{await ms(s,o.collect(),c,r)}}var Cs={invalid_config:`config`,invalid_request:`request`,invalid_input:`input`,not_allowed:`action`,authentication:`auth`,permission:`auth`,rate_limited:`rate_limit`,busy:`busy`,unsupported:`unsupported`,unavailable:`unavailable`,network:`network`,timeout:`timeout`,cancelled:`cancelled`,malformed_response:`bad_response`,refused:`safety`,blocked:`blocked`,disclosure_blocked:`blocked`,declined:`declined`,failed:`failed`,internal:`internal`},ws={config:`invalid_config`,request:`invalid_request`,input:`invalid_input`,action:`not_allowed`,auth:`authentication`,rate_limit:`rate_limited`,busy:`busy`,unsupported:`unsupported`,unavailable:`unavailable`,bad_response:`malformed_response`,network:`network`,timeout:`timeout`,safety:`refused`,blocked:`blocked`,declined:`declined`,failed:`failed`,cancelled:`cancelled`,internal:`internal`},q=class extends B{code;status;constructor(e,t,n,r){super(Cs[e],t,r),this.code=e,this.status=n}};function Ts(e,t){let n=e.profiles.get(t);if(n.type!==`decision`)throw new B(`request`,`runDecision requires profile.type 'decision' (got '${n.type}' for ${n.id})`);return n}function Es(e){let t=Cr(e.models),n=t?e.models[t]:void 0;if(!t||!n)throw new B(`config`,`Profile ${e.id}: type 'decision' must declare exactly one model`);return[t,n]}function J(e,t,n=0,r=1){if(typeof e!=`number`||!Number.isFinite(e)||e<n||e>r)throw new q(`malformed_response`,`${t} is outside its valid range`);return e}function Ds(e,t,n){if(!G(e)||Object.keys(e).length!==t.length||t.some(t=>!Object.hasOwn(e,t)))throw new q(`malformed_response`,`${n} does not match declared labels`);let r=Object.create(null);for(let i of t)r[i]=J(e[i],`${n}.${i}`);let i=Object.values(r).reduce((e,t)=>e+t,0);if(Math.abs(i-1)>.005*t.length+1e-9)throw new q(`malformed_response`,`${n} must sum to one`);return r}function Os(e,t){if(!G(e))throw new q(`malformed_response`,`${t} is invalid`);let n={top:J(e.top,`${t}.top`),bottom:J(e.bottom,`${t}.bottom`),left:J(e.left,`${t}.left`),right:J(e.right,`${t}.right`)};if(n.left>=n.right||n.top>=n.bottom)throw new q(`malformed_response`,`${t} has an edge out of order`);return n}function ks(e,t,n){if(!G(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 q(`malformed_response`,`${n} is invalid`);return e}function As(e,t){if(!G(e)||Object.keys(e).length!==Object.keys(t).length)throw new q(`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(!G(t)||t.type!==i.type)throw new q(`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 q(`malformed_response`,`Decision provider returned an undeclared choice for '${r}'`);n[r]={type:`choice`,choice:t.choice,confidence:J(t.confidence,`${r}.confidence`),probabilities:Ds(t.probabilities,e,`${r}.probabilities`)}}else if(i.type===`noul`)n[r]={type:`noul`,noul:J(t.noul,`${r}.noul`)};else if(i.type===`box`)n[r]={type:`box`,box:Os(t.box,`${r}.box`),confidence:J(t.confidence,`${r}.confidence`)};else{let e=i.criteria.map((e,t)=>String(t));n[r]={type:`score`,score:J(t.score,`${r}.score`,0,Math.max(0,e.length-1)),confidence:J(t.confidence,`${r}.confidence`),legend:ks(t.legend,e,`${r}.legend`),probabilities:Ds(t.probabilities,e,`${r}.probabilities`)}}}return n}function js(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 Ms(e,t){if(!G(t)||!e.trim()||!zs(t.instructions))throw new q(`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):!G(t.criteria)))throw new q(`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(zs))throw new q(`invalid_request`,`Decision ${t.type} '${e}' must declare criteria`)}function Ns(e,t){if(V(e.signal),e.model!==void 0)throw new q(`invalid_request`,`Decision requests do not select a model; the profile runs its one model`);if(e.state===null||!js(e.state))throw new q(`invalid_request`,`Decision state must be non-null JSON`);let n;try{n=JSON.stringify(e.state)}catch{throw new q(`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 q(`invalid_request`,`Decision state exceeds ${t.inputs.maxStateBytes} bytes`);if(!G(e.questions)||!js(e.questions)||Object.keys(e.questions).length===0)throw new q(`invalid_request`,`Decision request must declare at least one question`);for(let[t,n]of Object.entries(e.questions))Ms(t,n);e.assets!==void 0&&Rs(e.assets);for(let[t,n]of Object.entries(e.questions))Fs(t,n,e.state,e.assets)}function Ps(e,t){let n=e;for(let e of t.split(`.`)){if(!G(n)&&!Array.isArray(n))return;n=Array.isArray(n)?n[Number(e)]:n[e]}return n}function Fs(e,t,n,r){if(!G(t)||t.image===void 0)return;let i=t.image,a=typeof i==`string`&&!r?.[i]?Ps(n,i):i;if(t.type!==`box`||typeof a!=`string`||r?.[a]===void 0)throw new q(`invalid_request`,`Decision question '${e}' has an image that is neither a held image nor a state field holding one`)}function Is(e,t){if(e.type!==`box`||e.image===void 0)return e;let{image:n,instructions:r}=e,i=W(`decision.box_image`,{image:t?.[n]?n:`\`${n}\``});return{type:`box`,instructions:typeof r==`string`?`${r} ${i}`:[r,i]}}var Ls=/^[A-Za-z0-9+/]+={0,2}$/;function Rs(e){if(!G(e)||Object.keys(e).length===0)throw new q(`invalid_request`,`Decision assets must name at least one image`);for(let[t,n]of Object.entries(e))if(!t.trim()||!G(n)||n.mimeType!==`image/png`&&n.mimeType!==`image/jpeg`||typeof n.data!=`string`||n.data.length%4!=0||!Ls.test(n.data))throw new q(`invalid_request`,`Decision asset '${t}' must be PNG or JPEG bytes as padded base64`)}function zs(e){let t=[e];for(;t.length;){let e=t.pop();if(typeof e==`string`){if(!e.trim())return!1;continue}if(!G(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 Bs(e,t,n,r,i){if((await e.guardrails?.disclosure?.enforce(r.state,{destination:n,profileId:e.id,model:t,questionIds:Object.keys(r.questions),...i?{assets:i}:{}}))?.action===`block`)throw new q(`disclosure_blocked`,`Decision disclosure was blocked`)}function Vs(e,t,n,r,i){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":U(r.state),"theorem.decision.questions":U(r.questions),...i?{"theorem.decision.assets":U(Object.fromEntries(Object.entries(i).map(([e,{mimeType:t,data:n}])=>[e,{mimeType:t,bytes:n.length}])))}:{}}}function Hs(e,t){e.set({"gen_ai.response.model":t.model,"theorem.decision.answers":U(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 Us(e){if(e instanceof q)return e;let t=wt(e);return new q(t===`auth`&&G(e)&&e.status===403?`permission`:ws[t],e instanceof B?e.message:W(`provider.decision_failed`),G(e)&&typeof e.status==`number`?e.status:void 0,{cause:e})}function Ws(e){let t=Object.fromEntries(Object.entries(e.questions).map(([t,n])=>[t,Is(n,e.assets)])),n=e.assets?w([e.state,...Object.values(t).flatMap(e=>[e.instructions,`criteria`in e?e.criteria:void 0])],e.assets):{};return{state:e.state,questions:t,...Object.keys(n).length?{assets:n}:{}}}async function Gs(e,t,[n,r],i,a,o){V(i.signal);let s=e.providers.require(r.provider,r.apiId);await Bs(t,n,r.provider,i,a.assets),V(i.signal);try{let e=await Zo(s,r,`decision`,o,{...i.signal?{signal:i.signal}:{},...r.timeoutMs?{timeoutMs:r.timeoutMs}:{}}).decide({apiId:r.apiId,...a});if(typeof e.model!=`string`||!e.model.trim())throw new q(`malformed_response`,W(`provider.decision_model_missing`));return{...e,answers:As(e.answers,i.questions)}}catch(e){throw i.signal?.aborted?new q(`cancelled`,W(`provider.decision_ended`)):Us(e)}}async function Ks(e,t,n){let r=Ts(e,t.profile);Ns(t,r);let i=Es(r),[a,o]=i,s=Ws(t);return await Ss({name:`decide ${o.apiId}`,attributes:Vs(r,a,o,t,s.assets),traceparent:t.traceparent,metadata:t.metadata,writer:{override:n.sink,observability:r.observability,guardrails:r.guardrails}},async a=>{let o=await Gs(e,r,i,t,s,n);return Hs(a,o),o})}function qs(e,t){let n=e.profiles.get(t);if(n.type!==`embedding`)throw new B(`request`,`runEmbedding requires profile.type 'embedding' (got '${n.type}' for ${t})`);return n}function Js(e,t){let n=t??e.defaultModel;if(t&&!e.allowModelSelect)throw new B(`request`,`Profile ${e.id} does not allow model selection`);let r=e.models[n];if(!r)throw new B(`request`,`Unknown model '${n}' for ${e.id}`);return[n,r]}var Ys=[`query`,`document`];function Xs(e){if(e!==void 0&&!Ys.includes(e))throw new B(`request`,`Embedding task must be 'query' or 'document'`)}function Zs(e){return Array.isArray(e)?e:[e]}function Qs(e){return typeof e==`string`?[{type:`text`,text:e}]:e&&Array.isArray(e.parts)?e.parts:[]}function $s(e,t,n,r){let i=jn(e.inputs,r);if(i.maxInputs!==void 0&&n.length>i.maxInputs)throw new B(`request`,`Model '${t}' of ${e.id} takes at most ${i.maxInputs} inputs per request`);let a=[];for(let t of n){let n=Qs(t);if(n.length===0)throw new B(`request`,`Profile ${e.id} received an empty embedding input`);let r=[];for(let t of n)if(t.type===`text`){if(!i.text)throw new B(`unsupported`,`Profile ${e.id} does not accept text embedding input`)}else r.push(t.type===`media`?{mimeType:t.mimeType,sizeBytes:ar(t.data)}:{mimeType:t.mimeType});a.push(r)}let o=Tr(i,a);if(o.length>0)throw Nn(o)}function ec(e,t){if(!e.model.trim()||e.embeddings.length!==t)throw new B(`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 B(`bad_response`,`Embedding provider returned invalid vector metadata`);if(e.values.some(e=>!Number.isFinite(e)))throw new B(`bad_response`,`Embedding provider returned a non-finite vector value`);return e});return{...e,embeddings:n}}async function tc(e,t,n={}){V(t.signal);let r=qs(e,t.profile),[i,a]=Js(r,t.model),o=Zs(t.input);Xs(t.task);let s=e.providers.require(a.provider,a.apiId);$s(r,i,o,et(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()=>ec(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 nc(e,t,n,r,i){let a=e.profiles.get(t);if(a.type===`host`)return rc(e,r);if(a.type===`decision`||a.type===`live`||a.type===`embedding`)throw new B(`unsupported`,W(`provider.turn_profile`));let o=a.models[n??a.defaultModel];if(!o)throw new B(`config`,W(`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)=>nc(e,t,n,r,i)}}function rc(e,t){return{complete(){throw new B(`unsupported`,W(`provider.host_model`))},forProfile:(n,r,i)=>nc(e,n,r,t,i)}}function ic(e,t,n,r){return`forProfile`in e&&typeof e.forProfile==`function`?e.forProfile(t,n,r):e}function ac(){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(tt(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 oc(){return Promise.resolve(ac())}function sc(e){return e.meter??`history`}function cc(e){let t=[];for(let n=0;n<e.length;n++)e[n].role===`user`&&t.push(n);return t}async function lc(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 oc()).messages(t)}async function uc(e){let t=sc(e.spec);if(t===`history`)return{meter:t,...await lc(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 dc(e,t){return e>t.compactAt*t.maxTokens}async function fc(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 dc(e.tokens,t)}async function pc(e,t){if(e.length===0)return{toCompact:[],toRetain:[]};if(t.previousExchanges===0)return{toCompact:[...e],toRetain:[]};let n=cc(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 oc(),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 mc(e){return e.metadata?.compactionSummary===!0}function hc(e){return{type:`text`,text:e}}function gc(e,t){let n=t.labels,r=new Map,i=0,a=e=>(e??[]).filter(e=>e.type===`text`||Ye(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:[hc(W(`compaction.tool_result`,{tool:i??``,result:a},n)),...e]});continue}let i=(t.tool_calls??[]).map(e=>hc(W(`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 _c(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(mc),...e.toRetain]}:{...i,outcome:`deferred`,failure:t.failure,history:[...e.toCompact,...e.toRetain]}}var vc={[En.unscannable]:`egress.hint_unscannable`,[En.providerToolLeak]:`egress.hint_provider_tool_leak`},yc=[$t.canary_leak],bc=3,xc=120,Sc=`detect.`;function Cc(e,t,n){let r=vc[e.rule];if(r)return W(r,{},n);let i=e.rule.startsWith(Sc)?e.rule.slice(7):e.rule;if(yn(i))return t.hints?.[i]??W(`detect.hint.${i}`,{},n);let a=t.host?.find(({id:e})=>e===i),o=a?.label??e.label??i;return a?.hint??W(`detect.hint.own`,{label:o},n)}function wc(e){let t=e.flatMap(({rule:e,match:t})=>t&&!yc.includes(e)?[t]:[]);return[...new Set(t)].slice(0,bc).map(e=>JSON.stringify(e.length>xc?e.slice(0,xc):e))}function Tc(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=Cc(e[0],t,n),i=wc(e);return i.length>0?W(`egress.rejection_found`,{hint:r,matches:i.join(`, `)},n):r});return W(`egress.rejection`,{found:i.join(`
|
|
5
|
+
`)},n)}function Ec(e){if(e.type!==`live`&&e.type!==`host`&&e.type!==`decision`&&e.type!==`embedding`)return e.outputs}var Dc=[`inject`,`abort`,`deny`,`confirm`,`mutate`,`labelFailed`,`waitFor`],Oc=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([])}),kc=new Set([...Dc,`injectId`,`released`]);function Ac(e,t){return Oc[e].includes(t)}function Y(e,t,n,r){e.push({code:t,field:n,message:r})}function jc(e,t){if(!G(e)){Y(t,`inject_invalid_messages`,`inject`,`inject entry must be an object`);return}if(e.role===`tool`){Y(t,`inject_invalid_messages`,`inject`,`inject messages with role "tool" are rejected`);return}if(e.role!==`user`&&e.role!==`assistant`&&e.role!==`system`){Y(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`){Y(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)){Y(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)){Y(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`){Y(t,`inject_invalid_messages`,`inject`,`inject name must be a string`);return}n.name=e.name}if(e.metadata!==void 0){if(!G(e.metadata)){Y(t,`inject_invalid_messages`,`inject`,`inject metadata must be a plain object`);return}n.metadata={...e.metadata}}return e.tool_call_id!==void 0&&Y(t,`inject_invalid_messages`,`inject`,`inject tool_call_id is rejected (not a tool-role message)`),n}function Mc(e,t){if(!Array.isArray(e)){Y(t,`inject_invalid_messages`,`inject`,`inject must be an array of history messages`);return}let n=[];for(let r of e){let e=jc(r,t);e&&n.push(e)}return n.length>0?n:void 0}function Nc(e,t){if(e!==void 0){if(typeof e==`number`&&Number.isInteger(e)&&e>=0)return e;Y(t,`inject_released_invalid`,`released`,`released must be a whole number of characters, 0 or more; ignored`)}}function Pc(e,t){let n=Mc(e.inject,t);if(!n)return;let r=Nc(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};Y(t,`inject_id_invalid`,`injectId`,`injectId must be a non-empty string; inject refused`)}function Fc(e,t,n){if(!(`inject`in e)||e.inject===void 0){e.injectId!==void 0&&Y(n.warnings,`inject_id_invalid`,`injectId`,`injectId without inject ignored`),e.released!==void 0&&Y(n.warnings,`inject_released_invalid`,`released`,`released without inject ignored`);return}let{stage:r,injectAllowed:i,injectWouldExceedMaxSteps:a}=t;if(!Ac(r,`inject`))Y(n.warnings,`affordance_not_allowed`,`inject`,`inject is not allowed at stage ${r}`);else if(!i)Y(n.warnings,`inject_not_allowed`,`inject`,`inject gate is closed for this profile/session`);else if(a)Y(n.warnings,`inject_rejected_max_steps`,`inject`,`inject rejected: another model step would exceed maxSteps`);else{let t=Pc(e,n.warnings);t&&(n.inject=t)}}function Ic(e,t,n){if(`abort`in e&&e.abort!==void 0){if(!Ac(t,`abort`))Y(n.warnings,`affordance_not_allowed`,`abort`,`abort is not allowed at post_turn`);else if(e.abort===!0)n.abort=!0;else if(G(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&&Y(n.warnings,`abort_invalid`,`abort`,`abort must be boolean or { reason?: string }`)}}function Lc(e,t,n){`deny`in e&&e.deny!==void 0&&(Ac(t,`deny`)?G(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`}:Y(n.warnings,`deny_invalid`,`deny`,`deny must be an object`):Y(n.warnings,`affordance_not_allowed`,`deny`,`deny is not allowed at stage ${t}`))}function Rc(e,t,n){`labelFailed`in e&&e.labelFailed!==void 0&&(Ac(t,`labelFailed`)?e.labelFailed===!0?n.labelFailed=!0:e.labelFailed!==!1&&Y(n.warnings,`label_failed_invalid`,`labelFailed`,`labelFailed must be true`):Y(n.warnings,`affordance_not_allowed`,`labelFailed`,`labelFailed is not allowed at stage ${t}`))}function zc(e,t,n){if(`confirm`in e&&e.confirm!==void 0){if(!Ac(t,`confirm`))Y(n.warnings,`affordance_not_allowed`,`confirm`,`confirm is not allowed at stage ${t}`);else if(e.confirm===!0)n.confirm={};else if(G(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 Y(n.warnings,`confirm_invalid`,`confirm`,`confirm must be true or { summary?: string }`)}}function Bc(e,t,n){`waitFor`in e&&e.waitFor!==void 0&&(Ac(t,`waitFor`)?!Array.isArray(e.waitFor)||!e.waitFor.every(e=>typeof e==`string`&&e.trim()!==``)?Y(n.warnings,`wait_for_invalid`,`waitFor`,`waitFor must be an array of call ids`):e.waitFor.length>0&&(n.waitFor=[...new Set(e.waitFor)]):Y(n.warnings,`affordance_not_allowed`,`waitFor`,`waitFor is not allowed at stage ${t}`))}var Vc={pre_tool:`input`,post_tool:`output`};function Hc(e){return e in Vc?Vc[e]:void 0}function Uc(e,t,n){let{stage:r}=t;if(!(`mutate`in e)||e.mutate===void 0)return;if(!Ac(r,`mutate`)){Y(n.warnings,`affordance_not_allowed`,`mutate`,`mutate is not allowed at stage ${r}`);return}let i=Hc(r);i?!G(e.mutate)||e.mutate[i]===void 0?Y(n.warnings,`mutate_invalid`,`mutate`,`mutate must be { ${i}: unknown } at stage ${r}`):t.mutable===!1?Y(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}:Y(n.warnings,`mutate_invalid`,`mutate`,`no mutate subject is defined at stage ${r}`)}function Wc(e){let t=[],n={warnings:t},{stage:r,result:i}=e;if(i==null)return n;if(!G(i))return Y(t,`result_invalid`,`result`,`StageResult must be a plain object`),n;for(let e of Object.keys(i))kc.has(e)||Y(t,`unknown_field`,e,`unknown StageResult field "${e}" ignored`);return Fc(i,e,n),Ic(i,r,n),Lc(i,r,n),zc(i,r,n),Uc(i,e,n),Rc(i,r,n),Bc(i,r,n),n.deny&&n.confirm&&(Y(t,`confirm_invalid`,`confirm`,`confirm ignored because deny is set`),delete n.confirm),n}function Gc(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 Kc(e){return e.flatMap(e=>e.messages)}function qc(e,t,n){let r=t.flatMap(e=>e.id===void 0?[]:[{id:e.id,messages:e.messages}]);if(r.length!==0||n?.released!==void 0)return Gc(e,{...n,...r.length>0?{injected:r}:{}})}function Jc(e,t){return t===void 0||t<=0?!1:e>=t}function Yc(e,t){return t===`inject`?e.inject.length>0:!!e[t]}function Xc(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&&(Y(t.warnings,`confirm_invalid`,`confirm`,`confirm ignored because deny is set`),delete t.confirm),t}async function Zc(e,t,n,r){let i=[];for(let a of e){let e;try{e=await a({...t})}catch(e){throw V(r),e}V(r),i.push(Wc({...n,result:e}))}return i}async function*Qc(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(V(u),yield Gc(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=Xc(await Zc(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:Dc.filter(e=>Yc(h,e)),...h.warnings.length>0?{warnings:h.warnings.map(e=>e.code)}:{}}),h.warnings.length>0&&(yield{...Gc(t,{callId:f.callId,toolName:f.tool}),stageWarnings:h.warnings}),h.inject.length===0)return h;let g=Ct(`injected`,I(a).detect),_=h.inject.map(e=>({...e,messages:Qn(e.messages,g)})),v=g.found(),y=It(`injected`,v);if(y&&(d?.event(`theorem.guardrail`,E(y)),yield K(y)),v.action===`block`)throw Jn(`injected`);return{...h,inject:_}}function $c(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 el(e){let t=e.flatMap(e=>e.released===void 0?[]:[e.released]);return t.length>0?Math.min(...t):void 0}function tl(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 nl(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=tl(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*rl(e,t,n,r){let i=Kc(n);if(i.length===0)return 0;let a=nl(e,el(n));e.currentHistory.push(...i);let o=qc(t,n,{...r,...a===void 0?{}:{released:a}});return o&&(e.allEmittedEvents.push(o),yield o),i.length}async function*il(e){let{profile:t,generation:n,state:r,onStage:i,host:a,reply:o,replyAt:s,...c}=e;V(c.signal);let l=Qc({...c,...o?{reply:o}:{},history:r.currentHistory,handlers:i?[i]:[],guardrails:t.guardrails,injectAllowed:ae(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&&Kc(d.inject).length>0&&$c(r,o,s),{abort:d.abort,injectCount:yield*rl(r,c.stage,d.inject),warnings:d.warnings}}function al(e,t){t.allEmittedEvents.push(e),t.attemptEvents.push(e)}function ol(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 sl(e){let{profile:t,generation:n}=e,r=fr(e.tools,t),i={tools:e.tools,trace:e.trace,currentHistory:[...n.history??[]],turnStart:n.history?.length??0,stepCount:0,resumes:0,toolResults:[],allEmittedEvents:e.allEmittedEvents??[],attemptEvents:[],released:``,replyText:``,replyMessages:[],givenUrls:an(),destinations:bi(),canaryGiven:!1,canaryScanned:new WeakSet,...r?{ownTools:r}:{},...e.agents?{agents:e.agents}:{}};return t.type===`text`&&(ol(i,n.input),n.input=[]),i}function cl(e){return e.turnOnly?e.currentHistory.slice(e.turnStart):e.currentHistory}function ll(e){return e.turnOnly===!0&&e.turnStart>0}function ul(e,t,n={}){return t.map(t=>{if(e.get(t)?.type!==`builtin`)throw new B(`config`,`Builtin '${t}' is not registered`);let r=n[t];return r?{id:t,args:r}:{id:t}})}function dl(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:ul(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 fl=t({accepted:F,preparedInput:O});function X(e){return new B(`internal`,e)}async function pl(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=O.parse(t(gl(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 ml=_.tool.transform((e,t)=>e.tool.phase===`complete`||e.tool.phase===`error`?{...e,tool:e.tool}:(t.addIssue({code:`custom`}),a)),hl=t({event:ml,effects:l([`not_started`,`completed`,`unknown`]),replay:t({modelResult:t({finding:f(),data:O.optional(),parts:s(se).optional(),modelText:f().optional(),provenance:Ge.optional(),suspicious:s(v).optional()}).optional(),outputRaw:O.optional(),failure:t({code:f(),kind:pe,message:f(),error:f().optional(),details:O.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(b),released:d().int().nonnegative().optional()})).optional()})});function gl(e){let t=new Set,n=e=>{if(!e||typeof e!=`object`)return e;if(t.has(e))throw X(`Tool operation value has a cycle`);let r=Object.getPrototypeOf(e);if(!Array.isArray(e)&&r!==Object.prototype&&r!==null)throw X(`Tool operation value holds an object that is not plain data`);if(Object.hasOwn(e,`__proto__`))throw X(`Tool operation value has an own __proto__ key`);t.add(e);try{if(Array.isArray(e))return e.map(n);let t=Object.entries(Object.getOwnPropertyDescriptors(e)),r=t.find(([,e])=>e.get||e.set);if(r)throw X(`Tool operation value has a getter or setter at '${r[0]}'`);return Object.fromEntries(t.filter(([,e])=>e.enumerable&&e.value!==void 0).map(([e,t])=>[e,n(t.value)]))}finally{t.delete(e)}};return O.parse(n(e))}var _l=class{outcome;constructor(e){this.outcome=e}};function vl(e){return new B(`unavailable`,W(`tool.execution_uncertain`),{copy:{key:`tool.execution_uncertain`},cause:e})}var yl=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){V(this.signal);let t={...this.operation,invocation:{accepted:this.accepted,preparedInput:gl(e)}},n=await this.coordinator.begin(t);if(n.kind===`settled`)throw new _l(n.outcome);if(n.kind===`running`||n.kind===`uncertain`)throw vl();if(n.kind!==`acquired`||typeof n.claimToken!=`string`||!n.claimToken)throw X(`The tool coordinator's begin returned no claim`);return this.claim={...t,claimToken:n.claimToken},V(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 vl();return!0}async finish(e){if(e.gated){if(this.claim)throw vl();return}if(!this.terminal)throw X(`The tool run ended with no terminal event`);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=hl.parse(gl(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=hl.parse(gl(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 X(`The tool coordinator's saved outcome is another operation's`);return this.committed=!0,t}failure(e){return this.claim&&!this.committed?vl(e):e}async close(){this.claim&&!this.committed&&await this.coordinator.markUncertain(this.claim,this.writeFailed?`settlement_write_failed`:`execution_interrupted`)}};async function*bl(e,t,n,r,i,a){if(!e)return yield*i();let o=F.parse(gl(n)),s={...t,invocationHash:await pl(o)},c=new yl(e,s,o,r);V(r);let l=await e.lookup(s);if(V(r),l?.kind===`running`||l?.kind===`uncertain`)throw vl();if(l?.kind===`settled`){if(!a)throw X(`A settled tool operation has no replay check`);let e=c.replay(new _l(l.outcome));return await a(e),V(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 _l){if(!a)throw X(`A settled tool operation has no replay check`);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*xl(e,t){t.kind===`progress`?yield z(e,{phase:`progress`,data:t.data}):t.kind===`draft`?yield z(e,{phase:`draft`,text:t.text}):t.kind===`trace`?yield z(e,{phase:`trace`,step:t.step}):t.kind===`artifact`?yield z(e,{phase:`artifact`,artifact:t.artifact}):t.kind===`warning`&&(yield z(e,{phase:`warning`,warning:t.warning}))}var Sl=class{base;checks;drafts;constructor(e,t){this.base=e,this.checks=t,t?.drafts&&(this.drafts=new Bn(()=>Cl(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*xl(this.base,{...e,artifact:t.value}))}else if(e.kind===`trace`){let t=yield*this.shown(e.step);t.shown&&(yield*xl(this.base,{...e,step:t.value}))}else yield*xl(this.base,e)}}*end(){let e=this.drafts?.end();e&&(yield z(this.base,{phase:`draft`,text:e}))}async*draft(e){let t=await this.drafts?.read(e);t&&(yield z(this.base,{phase:`draft`,text:t}))}*shown(e){let t=this.checks;if(!t)return{shown:!0,value:e};let n=ft(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}=je(``,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 Cl(e){return ir(e.policy,{stage:`tool_result`,trust:`untrusted`,profileId:e.profileId,provenance:e.provenance},e.boundary,{callable:e.callableTools})}var wl=new Set([`image/png`,`image/jpeg`,`image/gif`,`image/webp`]);async function Tl(e,t=1/0){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}function El(e,t){if(t===void 0)return e.signal;let n=AbortSignal.timeout(t);return e.signal?AbortSignal.any([e.signal,n]):n}async function Dl(e,t,n){let r=El(t,n.timeoutMs),i=await Pe(e,{method:`GET`,headers:{Accept:`image/*`},signal:r},{policy:$e(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||!wl.has(a))throw await i.body?.cancel().catch(()=>{}),Error(`not a png, jpeg, gif or webp image (${a||`no type`})`);let o=await Tl(i,n.bytes);if(!o)throw Error(`larger than ${n.bytes} bytes`);return{type:`image`,mimeType:a,data:_n(o)}}function Ol(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 kl(e,t,n,r={}){let i=[],a=[];try{for(let n of new Set(e(t))){let e=Ol(n);`url`in e?a.push(e.url):i.push(e.reason)}}catch(e){return{parts:[],urls:[],warning:Al([`the images hook threw: ${String(e)}`])}}let o=a.slice(0,r.count),s=await Promise.allSettled(o.map(e=>Dl(e,n,r))),c=r.totalBytes??1/0,l=[],u=[],d=0;return s.forEach((e,t)=>{let n=o[t];if(e.status===`rejected`){let t=e.reason instanceof Error?e.reason.message:String(e.reason);i.push(`${new URL(n).hostname}: ${t}`);return}let r=`data`in e.value?e.value.data.length:0;d+r>c?i.push(`${new URL(n).hostname}: past the ${c} byte total`):(d+=r,l.push(e.value),u.push(n))}),{parts:l,urls:u,...i.length?{warning:Al(i)}:{}}}function Al(e){return{code:`images_unfetched`,severity:`warning`,message:`Some pictures the tool named were left out. ${e.join(`; `)}`}}function jl(e){return typeof e?.granted==`boolean`}function Ml(e){return e?.granted===!0}function Nl(e){return e?.granted===!1}function Pl(e,t){return t?t.includes(`*`)||t.includes(e):!1}function Fl(e,t){let n=vt(e.labels?.request,{input:t});return{access:e.access,...n?{request:n}:{}}}function Il(e,t,n,r,i){return t===`auto`||(t===`always_confirm`?r?.granted===!0:Pl(e,n))?null:{kind:`permission`,tool:e,permission:t,...i}}function Ll(e,t,n){return Pe(e,t,{policy:n.network,followRedirects:!1,resolveHost:n.resolveHost,...n.fetchFn?{fetchFn:n.fetchFn}:{}})}function Rl(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 zl=/^[\x20\x21\x23-\x5B\x5D-\x7E]*$/;async function Bl(e){let t;try{t=await e.json()}catch{return``}if(!G(t))return``;let{error:n,error_description:r}=t;return typeof n!=`string`||!zl.test(n)?``:typeof r==`string`&&zl.test(r)?`: ${n} (${r})`:`: ${n}`}function Vl(e,t){let n=e=>{throw Error(`Token response from ${t} ${e}`)};if(!G(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 Hl(e){return e===void 0?[]:e.split(` `).filter(e=>e.length>0)}function Ul(e,t,n){if(t.length===0)return;let r=Hl(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 Wl(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 Ll(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 Bl(c)}`);let l=Vl(await c.json(),t.tokenEndpoint);return Ul(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 Gl(e){return Rl(e.tokenEndpoint,`token_endpoint`),Rl(e.resource,`resource`),Wl(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}:{}},Hl(e.scope),{refreshToken:e.refreshToken,scope:e.scope})}function Kl(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 ql={now:Date.now,wait:Ia},Jl=new WeakMap;function Yl(e){let t=Jl.get(e);if(t)return t;let n={places:[],heldUntil:0,waiting:new Set};return Jl.set(e,n),n}function Xl(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 Zl(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 Ql(e,t,n,r=ql){let i=Yl(e),a=r.now()+Ma;for(;;){let e=r.now(),o=Xl(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?Va(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 Zl(i,Math.min(o,a)-e,n,r)}}async function $l(e,t){try{let n=await t;return e?.answered(n),n}catch(t){throw e?.answered(),t}}function eu(e){return{handlers:[],profile:e.profile,step:e.turn?.step??1,history:()=>[],injectAllowed:!1,host:e.host,signal:e.signal}}async function*tu(e){let{tool:t,ctx:n,base:r,stages:i}=e,a,o=Ml(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*nu({stages:i??eu(n),toolName:t.name,callId:r.callId,input:e.input,toolPreTool:a,details:Fl(t,e.input)});if(!s.ok){if(s.kind===`gated`){if(`input`in s){let e=s.input,r=t.input.safeParse(Hn(e));if(!r.success)return{ok:!1,kind:`failed`,failure:{code:`invalid_input`,kind:`bad_response`,message:W(`tool.input_invalid_after_mutate`,{},n.profile.labels),details:r.error.flatten()}};s.gate={...s.gate,...Fl(t,r.data),preparedArguments:F.parse(gl(Hn(e)))}}yield Gc(`pre_tool`,{callId:r.callId,toolName:t.name,callNotStarted:!0,gate:s.gate}),yield z(r,{phase:`gate`,gate:s.gate})}return s}let c=s.mutated?t.input.safeParse(Hn(s.input)):void 0;if(c&&!c.success)return{ok:!1,kind:`failed`,failure:{code:`invalid_input`,kind:`bad_response`,message:W(`tool.input_invalid_after_mutate`,{},e.ctx.profile.labels),details:c.error.flatten()}};let l=await ru(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*nu(e){let{stages:t,toolName:n,callId:r,input:i,toolPreTool:a,details:o}=e,s=yield*Qc({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 ru(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:W(a.reason===`unknown`?`tool.wait_unknown`:`tool.wait_cycle`,{tool:n,calls:a.callIds.join(`, `)},i)}}async function*iu(e){let{stages:t,toolName:n,callId:r,mutable:i,...a}=e,o=yield*Qc({...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*au(e){yield Gc(`pre_tool`,{callId:e.callId,toolName:e.toolName,callNotStarted:!0,gate:e.gate});let t=e.gate.kind===`auth`?W(`sign_in.pending`,{service:e.gate.authChallenge.service},e.labels):void 0;return yield z(e.base,{phase:`gate`,gate:e.gate,...t?{readBack:t}:{}}),t}function ou(e,t){if(!t)return e;let n=new URL(e);return n.searchParams.set(t.name,t.value),n}function su(e,t,n){let r=e.headerName??n.headerName,i=e.headerPrefix??n.headerPrefix;return{[r]:`${i}${t}`}}function cu(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 lu(e,t,n,r,i){return r===`gate`?{headers:{},unauthenticated:!0,gate:cu(e,t,n,i)}:r===`fail`?{headers:{},unauthenticated:!0,failureMessage:n}:{headers:{},unauthenticated:!0,modelMessage:n}}function uu(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:su(e,n,{headerName:`Authorization`,headerPrefix:`Bearer `})};let r=t.headerName??e.headerName??`Authorization`,i=t.headerPrefix??e.headerPrefix??``;return{headers:{[r]:`${i}${n}`}}}function du(e,t){if(e.type!==`bearer`&&e.type!==`api_key`)return;let n=e.type===`bearer`?e.token:e.key;return{...uu(t,e),secret:n}}var fu=new Map;function pu(e,t,n,r){let i=`${e.tokenEndpoint}\n${t}`,a=fu.get(i);if(a)return a;let o=Gl({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);fu.set(i,o);let s=()=>fu.delete(i);return o.then(s,s),o}async function*mu(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 lu(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 pu(n,n.refreshToken,{network:$e(i),resolveHost:i.resolveHost},await r.clientSecret?.(n.clientId))}catch(n){return yield{...z(a,{phase:`progress`,data:{kind:`auth_token_refresh_failed`,slot:s}}),errorInternal:We(n)},lu(e,t,`Failed to refresh OAuth token for '${e}' (slot: '${s}').`,o,c)}await r.set(s,l),yield z(a,{phase:`progress`,data:{kind:`auth_token_refreshed`,slot:s}})}else if(u)return lu(e,t,`OAuth token expired for '${e}' (slot: '${s}') and no refresh token is available.`,o,c);return{headers:su(t,l.accessToken,{headerName:`Authorization`,headerPrefix:`Bearer `}),secret:l.accessToken,audience:n.resource}}async function*hu(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?lu(e,t,`Authentication required for '${e}' (auth slot: '${t.slot}').`,o):du(a,t)||(a.type===`oauth2`?yield*mu(e,t,a,i,n,r,o):{headers:{}})}function gu(e,t){if(t===`.`||t===`..`)throw Error(`Path parameter "${e}" cannot be "${t}"`);return encodeURIComponent(t)}function _u(e,t,n,r){Wn(e);let i=e,a=r?.pathParams??[];for(let e of a){let t=n[e];t!==void 0&&(i=i.replaceAll(`{${e}}`,gu(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 vu(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 yu(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 bu(e){return{finding:typeof e==`string`?e:JSON.stringify(e)}}function xu(e,t){return t?.length?{...e,parts:t}:e}function Z(e,t){return{kind:`failed`,failure:e,callNotStarted:t}}async function*Su(e){let t=yield*tu(e);return t.ok?t:t.kind===`aborted`?{kind:`aborted`,aborted:t.aborted}:t.kind===`gated`?{kind:`gated`,gate:t.gate}:{...Z(t.failure,!0),...t.denied?{denied:!0}:{}}}function Cu(e,t,n){let r=ut(e,t,n);if(!r.ok)return{ok:!1,outcome:Z(r.failure,!0)};let i=Il(e.name,e.permission,n.sessionPermissions,n.resume,Fl(e,r.data));return i?{ok:!1,outcome:{kind:`gated`,gate:i}}:{ok:!0,input:r.data}}function wu(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 Z({code:`not_authorized`,kind:`auth`,message:e.failureMessage},!t)}}function Tu(e){return e.status===401||e.status===403?{status:e.status,challenge:e.headers.get(`www-authenticate`)}:void 0}var Eu=/^[\x21\x23-\x5B\x5D-\x7E]+$/;function Du(e){let t=t=>e?.match(RegExp(`(?:^|[\\s,])${t}="([^"]*)"`,`i`))?.[1],n=(t(`scope`)??``).split(` `).filter(e=>Eu.test(e)),r=t(`error`);return r===void 0?{scopes:n}:{error:r,scopes:n}}function Ou(e){return e.status===401||Du(e.challenge).error===`insufficient_scope`}function*ku(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 wu(lu(e.name,a,t,o),!0)}let s=Du(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 wu(lu(e.name,a,t,o),!0)}let u={kind:`auth_scope_refused`,slot:a.slot,requested:l,declared:c};return yield z(i,{phase:`progress`,data:u}),Z({code:`out_of_scope`,kind:`auth`,message:W(`sign_in.out_of_scope`,{service:a.service},r.profile.labels)},!1)}async function*Au(e){let t=yield*hu(e.tool.name,e.tool.auth,e.ctx,e.base),n=wu(t);if(n)return n;let r=yield*Su({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}var ju={network:`network_error`,cancelled:`cancelled`,timeout:`timeout`};function*Mu(e,t){if(wt(e)===`blocked`){let n=nt();return t.record(n),Z(yield*Ae(e,n),!1)}let n=wt(e);return Z({code:ju[n]??`request_failed`,kind:n,message:We(e)},!1)}var Nu=`[omitted - credential]`,Pu=2e3;async function*Fu(e,t=1/0){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 Iu(e,t){let n=Fu(e,t),r=``;for(;;){let e=await n.next();if(e.done)return e.value?r:void 0;r+=e.value}}async function*Lu(e,t,n,r){let i=Fu(e,r),a=n?n.length-1:0,o=``,s=``;for(;;){let e=await i.next();if(e.done)return e.value?(s&&(yield*t.show({kind:`draft`,text:s})),yield*t.end(),o):void 0;o+=e.value,s=n?Bu(s+e.value,n):s+e.value;let r=s.length-a;r<=0||(yield*t.show({kind:`draft`,text:s.slice(0,r)}),s=s.slice(r))}}function Ru(e){return e.length>Pu?`${e.slice(0,Pu)}…`:e}function zu(e,t){return{code:`response_too_large`,kind:`bad_response`,message:`Response from ${e} is larger than ${t} bytes`}}function Bu(e,t){return e.replaceAll(t,Nu)}function Vu(e,t){return Tn(e,e=>Bu(e,t))}function Hu(e,t){return{...e,message:Bu(e.message,t),...e.details===void 0?{}:{details:Vu(e.details,t)}}}function Uu(e,t){if(!t)return e;if(e.kind===`ok`){let n=Vu(e.outputRaw,t);return{kind:`ok`,outputRaw:n,modelResult:xu(bu(n),e.modelResult.parts)}}return e.kind===`failed`?{...e,failure:Hu(e.failure,t)}:e}function Wu(e,t){if(e&&!Kl(e,t))return`The OAuth token for "${e}" cannot be sent to "${t.origin}${t.pathname}"`}async function*Gu(e,t,n){let r=Wu(e.audience,t);return r?Z({code:`credential_audience_mismatch`,kind:`config`,message:r},!0):Uu(yield*n(ou(t,e.query)),e.secret)}async function*Ku(e,t,n,r,i,a,o){let s=Cu(e,t,n);if(!s.ok)return s.outcome;let c=s.input,l=yield*Au({tool:e,input:c,ctx:n,base:r,stages:i});if(!(`ok`in l))return l;c=l.input;let u;try{u=_u(e.endpoint,e.method,c,e.mapping)}catch(e){return Z({code:`invalid_input`,kind:`bad_response`,message:We(e)},!0)}let d=yield*ot(u.url,n,i?.span);return d.ok?(yield*h(e,c,n,r,a),yield*Gu(l,d.url,t=>Yu(e,t,u.body,l,n,r,i?.span,o))):Z(d.failure,!0)}function qu(e){if(!e.ok)return!1;let t=e.headers.get(`content-type`)??``;return t===``||t.startsWith(`text/`)||/[/+]json\b/.test(t)}async function*Ju(e,t,n,r){return!t||!qu(e)?await Iu(e,r):yield*Lu(e,t,n,r)}async function*Yu(e,t,n,{authHeaders:r,secret:i},a,o,s,c){let l=Ie(s),u={Accept:`application/json`};e.method!==`GET`&&(u[`Content-Type`]=`application/json`);let d;try{let s=e.limit?await Ql(e,e.limit,a.signal):void 0;if(s&&`full`in s)return Z(ud(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 $l(s,Pe(t.href,{method:e.method,headers:u,body:n,signal:f},{policy:$e(a),followRedirects:!0,...e.access===`read-only`?{fetchFn:Ha(fetch)}:{},originBoundHeaders:{...e.headers,...r},resolveHost:a.resolveHost,onCheck:l.onCheck})),m=yield*Ju(p,c,i,e.maxResponseBytes);if(m===void 0)return Z(zu(t.hostname,e.maxResponseBytes),!1);if(!p.ok)return(yield*ku(e,Tu(p),i!==void 0,a,o))||Z({code:`http_${p.status}`,kind:dd(p.status),message:`HTTP ${p.status} from ${t.hostname}: ${Ru(m)}`},!1);let h=vu(p.headers.get(`content-type`)??``,m,p.status),g=yu(e.output,h);return g.success?{kind:`ok`,modelResult:bu(g.data),outputRaw:g.data}:Z({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?Z(Xu(t.hostname,e.timeoutMs),!1):yield*Mu(n,l)}finally{l.record()}}function Xu(e,t){return{code:`timeout`,kind:`timeout`,message:`${e} did not answer within ${t} ms`}}var Zu=[`2026-07-28`,`2025-11-25`,`2025-06-18`,`2025-03-26`];function Qu(e){return{"io.modelcontextprotocol/protocolVersion":e,"io.modelcontextprotocol/clientCapabilities":{}}}function $u(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 ed(e){if(!e)return!1;let t=e.message.toLowerCase();return t.includes(`unsupported protocol version`)||t.includes(`inconsistent mcp protocol version`)}function td(e){try{let t=$u(e);if(t.error&&ed(t.error))return t.error}catch{}if(e.toLowerCase().includes(`unsupported protocol version`))return{code:-32600,message:e}}async function nd(e,t,n,r,i){let a={jsonrpc:`2.0`,id:t,method:`tools/call`,params:{name:n,arguments:r,_meta:Qu(i)}},o=await Pe(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 Iu(o,e.maxResponseBytes);if(s===void 0){let t=new URL(e.url).hostname;return{kind:`failure`,failure:zu(t,e.maxResponseBytes)}}if(!o.ok){let t=id 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!==Zu.at(-1))return{kind:`retry`};let n=td(s);if(n)return{kind:`protocol_retry`,error:n};let r=Tu(o);return{kind:`failure`,...r?{refusal:r}:{},failure:{code:`mcp_http_${o.status}`,kind:dd(o.status),message:`MCP server error HTTP ${o.status}: ${Ru(s)}`}}}try{let e=$u(s);return e.error&&ed(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: ${Ru(s)}`}}}}async function rd(e,t,n,r){let i;for(let a of Zu){let o=await nd(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 id=`Mcp-Session-Id`,ad=`2025-11-25`,od=class extends Error{failure;constructor(e){super(e.message),this.failure=e}};function sd(e,t){return new od({code:e,kind:`failed`,message:t})}async function cd(e){let t=(t,n,r={})=>Pe(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:ad,capabilities:{},clientInfo:{name:`theorem`,version:`1`}}},{"Mcp-Method":`initialize`}),r=await Iu(n,e.maxResponseBytes);if(r===void 0){let t=new URL(e.url).hostname;throw new od(zu(t,e.maxResponseBytes))}if(!n.ok)throw sd(`mcp_session_http_${n.status}`,`MCP server refused to open a session: HTTP ${n.status}: ${Ru(r)}`);let i=n.headers.get(id);if(!sr(i))throw sd(`mcp_session_invalid`,`MCP server required a session but sent no usable session ID`);let a;try{a=$u(r).result?.protocolVersion}catch{a=void 0}if(!Zu.some(e=>e===a))throw sd(`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`},{[id]:i})).body?.cancel().catch(()=>{}),{id:i,protocolVersion:o}}async function ld(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,i.use,()=>cd(e))}catch(e){if(e instanceof od)return{failure:e.failure};throw e}let o=await nd({...e,originBoundHeaders:{...e.originBoundHeaders,[id]: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 ud(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 dd(e){return e===401||e===402||e===403?`auth`:e===429?`rate_limit`:`failed`}function fd(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 pd(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 md(e,t){let n=Array.isArray(t?.content)?t.content:void 0,r=n?.flatMap(e=>pd(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=hd(n.error.issues)}let o=n?n.flatMap(e=>fd(e)??[]).join(`
|
|
7
|
+
`):t;return{checked:yu(e.output,o),...i,...a?{warning:a}:{}}}function hd(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 gd(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 _d(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=gd(n);if(r)return{ok:!1,failure:r};let{checked:i,parts:a,warning:o}=md(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*vd(e,t,n,r,i,a=lr(),o){let s=Cu(e,t,n);if(!s.ok)return s.outcome;let c=yield*ot(e.serverUrl,n,i?.span);if(!c.ok)return Z(c.failure,!0);let l=yield*Au({tool:e,input:s.input,ctx:n,base:r,stages:i});return`ok`in l?(yield*h(e,l.input,n,r,o),yield*Gu(l,c.url,t=>yd(e,t,l.input,l,n,r,i?.span,a))):l}async function*yd(e,t,n,{authHeaders:r,secret:i},a,o,s,c){let l=Ie(s);try{let s={url:t.href,headers:{"Content-Type":`application/json`,Accept:`application/json, text/event-stream`},originBoundHeaders:{...e.headers,...r},policy:$e(a),resolveHost:a.resolveHost,signal:a.signal,onCheck:l.onCheck,...e.maxResponseBytes===void 0?{}:{maxResponseBytes:e.maxResponseBytes}},u=await dr(t.href,s.originBoundHeaders),d={tool:e.name,...e.session},f=c.get(u,d),p=f?await ld(s,o.callId,e.mcpToolName,n,{cache:c,key:u,use:d,cached:f}):await rd(s,o.callId,e.mcpToolName,n),m=p.sessionRequired?await ld(s,o.callId,e.mcpToolName,n,{cache:c,key:u,use:d}):p,h=yield*ku(e,m.refusal,i!==void 0,a,o);if(h)return h;let g=_d(e,m);return g.warning&&(yield z(o,{phase:`warning`,warning:g.warning})),g.ok?{kind:`ok`,modelResult:xu(bu(g.data),g.parts),outputRaw:g.data}:Z(g.failure,!1)}catch(e){return yield*Mu(e,l)}finally{l.record()}}var bd=class extends Error{refusal;constructor(e){super(`The service refused the credential (HTTP ${e.status}).`),this.name=`CredentialRefusedError`,this.refusal=e}};function xd(e,t,n){return async(r,i={})=>{let a=new URL(r),o=Wu(e.audience,a);if(o)throw new B(`config`,o);let s=await Pe(ou(a,e.query).href,{method:i.method??`GET`,headers:i.headers,body:i.body,signal:t.signal},{policy:$e(t),followRedirects:!0,originBoundHeaders:e.authHeaders,resolveHost:t.resolveHost,onCheck:n.onCheck}),c=Tu(s);if(c&&Ou(c))throw await s.body?.cancel(),new bd(c);return s}}function Sd(e,t){return e.type===`agent`?Rr(t.findProfile(e.profile)):e.type===`http`?`http`:e.type===`mcp`?`mcp`:e.type===`builtin`?`builtin`:`local`}function Cd(e){return e.type===`builtin`?void 0:e.type}function wd(e,t){let n=e.get(t),r=n?Cd(n):`function`;return r&&kt(`tool_arguments`,r)}function Td(e,t){let n=Sd(e,t);return{origin:n,tool:e.name,depth:n===`delegated`?2:1}}function Ed(e){return typeof e==`function`&&Object.prototype.toString.call(e)===`[object AsyncGeneratorFunction]`}var Dd=new Set([`image`,`audio`,`video`,`document`]);function Od(e){if(!Array.isArray(e)||e.length===0)return;let t=[];for(let n of e)G(n)&&typeof n.type==`string`&&(n.type===`text`&&typeof n.text==`string`?t.push({type:`text`,text:n.text}):Dd.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 kd(e){if(!G(e))return e;let{parts:t,...n}=e;return n}async function*Ad(e,t,n,r){if(Ed(e)){let i,a=e(t,n);for await(let e of a)V(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 jd(e,t,n){if(e.exposeToModel===!1)return{finding:W(`tool.completed_hidden`,{},n)};if(le(t))return{finding:W(`tool.awaiting_user`,{kind:t.kind,prompt:t.prompt},n),data:kd(t)};let r=G(t)&&`parts`in t?Od(t.parts):void 0,i=kd(t),a=G(i)&&`finding`in i,{finding:o,...s}=a?i:{};return{...a?{finding:String(o),...Object.keys(s).length>0?{data:s}:{}}:bu(i),...r?{parts:r}:{}}}function Md(e,t){return Vr(t.profile)?.t2Loader===e.name}function Nd(e,t,n,r,i){if(!Md(t,r))return{ok:!0,output:n};if(!i)return{ok:!1,failure:{code:`invalid_output`,kind:`bad_response`,message:W(`tool.t2_loader_needs_snapshot`,{tool:t.name},r.profile.labels)}};let a=hr(n);if(!a)return{ok:!1,failure:{code:`invalid_output`,kind:`bad_response`,message:W(`tool.t2_loader_shape`,{tool:t.name},r.profile.labels)}};let{promoted:o,failure:s}=nr(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:W(`tool.t2_loader_output_invalid`,{},r.profile.labels),details:l.error.flatten()}}}function*Pd(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(Hn(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:le(r.outputRaw)}}function Fd(e,t,n){return vt(e?.activityPast,{input:t,output:n})}function Id(e,t){let{input:n,outputRaw:r,modelResult:i}=t,a=t.labelFailed?lt(e):Fd(t.labels,n,r);return z(e,{phase:`complete`,output:r,readBack:L(i),...i.parts?.length?{parts:i.parts}:{},...a?{activityPast:a}:{}})}async function*Ld(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&&le(p),_;if(a){let o=f?void 0:Fd(e.labels,i,p);_=yield*iu({stages:a,toolName:n,callId:r,input:i,callNotStarted:m,outputRaw:p,outputModel:d,...o?{activityPast:o}:{},activityFailed:lt(t),failure:f,awaiting:g||void 0,mutable:!f&&c!==void 0});let l=yield*Pd(_,s,c);l&&({failure:f,outputRaw:p,modelResult:d,awaiting:g}=l,_.deny&&(h=!0))}return f||(d=yield*Rd({base:t,sources:l,images:e.images,outputRaw:p,modelResult:d})),yield f?R(t,{...f,message:String(yield*s.shown(f.message))},L(d)):Id(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}:{},...Bd(_)}}async function*Rd(e){let{base:t,sources:n,images:r,outputRaw:i,modelResult:a}=e;return n&&(yield*Ze(t,n,i)),!r||i===void 0?a:yield*zd(t,a,r,i)}async function*zd(e,t,n,r){let i=await n(r);if(i.warning&&(yield z(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 Bd(e){return{...e?.abort===void 0?{}:{aborted:e.abort},...e?.inject.length?{pendingInject:e.inject}:{}}}function Vd(e,t,n,r,i){return Ld({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 Hd(e,t,n,r,i){let a=Td(t,e),o=I(n.profile.guardrails),s=r?.executable??[],c={provenance:a,policy:o,kind:Cd(t),callableTools:s,labels:n.profile.labels,span:i},{kind:l}=c,u=e=>l&&{profileId:n.profile.id,provenance:a,policy:o,boundary:kt(`tool_output`,l),shown:kt(`tool_shown`,l),callableTools:s,drafts:e},d=e=>xf(e,c),f=Ml(n.resume)?af(t,n.resume):void 0;if(!f)return{result:e=>bf(e,c),failure:e=>vf(e,c),handlerEvents:u,shown:d};let p=W(`sign_in.done`,{service:f},n.profile.labels);return{result:e=>Ud(p,bf(e,c)),failure:e=>Ud(p,vf(e,c)),handlerEvents:u,shown:d}}function*Ud(e,t){let n=yield*t,r=`${e}\n\n${L(n.modelResult)}`;return{...n,modelResult:{...n.modelResult,modelText:r}}}async function*Wd(e){let{tool:t,base:n,stages:r,guard:i}=e,a=yield*tu(e);return a.ok?a:a.kind===`aborted`?{aborted:a.aborted,callNotStarted:!0}:a.kind===`gated`?{gated:a.gate,callNotStarted:!0}:yield*Vd(i,n,a.failure,r,{toolName:t.name,callId:n.callId,input:e.input,callNotStarted:!0,...a.denied?{denied:!0}:{}})}function Gd(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:W(`tool.output_invalid_after_mutate`,{},n),details:i.error.flatten()}}}}async function*Kd(e,t,n){if(!e.auth)return{};let r=yield*hu(e.name,e.auth,t,n),i=wu(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 qd(e){return{code:`handler_error`,kind:e instanceof B?e.kind:`failed`,message:We(e)}}function Jd(e,t){return e.answeredBy===`page`&&t.page===void 0&&!t.pageExecution}async function*Yd(e,t,n,r){let i=t.pageExecution;if(e.answeredBy!==`page`||!i)return t;if(!n?.invocation)throw new B(`config`,`Page tool '${e.name}' needs a tool execution coordinator (execution)`);let a=F.parse(gl(n.invocation.preparedInput)),o=await i.dispatch(n,t.signal);if(V(t.signal),!o.grantId)throw X(`The page dispatch returned no grantId`);return yield z(r,{phase:`dispatch`,grantId:o.grantId,arguments:a}),t={...t,page:await o.result},V(t.signal),t}async function*Xd(e,t,n,r,i,a,o,s,c){let l=Hd(e,s??t,r,a,o?.span),u=i.callId,d=ut(t,n,r);if(!d.ok)return yield*Vd(l,i,d.failure,o,{toolName:t.name,callId:u,callNotStarted:!0});let f=d.data,p=Il(t.name,t.permission,r.sessionPermissions,r.resume,Fl(t,f));if(p)return yield*au({base:i,gate:p,callId:u,toolName:t.name,labels:r.profile.labels}),{gated:p,callNotStarted:!0};V(r.signal);let m=e=>nf({outcome:e,ctx:r,tool:t,base:i,callId:u,safeInput:f,stages:o,guard:l,labels:r.profile.labels}),g=yield*Kd(t,r,i);if(g.outcome)return yield*m(g.outcome);let _=yield*Wd({tool:t,input:f,ctx:r,base:i,stages:o,guard:l});if(!(`ok`in _))return _;if(f=_.input,Jd(t,r)){let e={kind:`page`,tool:t.name,...Fl(t,f)};return yield*au({base:i,gate:e,callId:u,toolName:t.name,labels:r.profile.labels}),{gated:e,callNotStarted:!0}}V(r.signal);let v=yield*h(t,f,r,i,c);r=yield*Yd(t,r,v,i);let{secret:y}=g,b=e=>Vd(l,i,y?Hu(e,y):e,o,{toolName:t.name,callId:u,input:f}),x=Ie(o?.span),S=g.prepared?{...r,signedInFetch:xd(g.prepared,r,x)}:r,C;try{let e=new Sl(i,l.handlerEvents(o?.drafts===!0));C=yield*Ad(t.handler,f,S,e),x.record()}catch(e){if(s){if(e instanceof $n)return yield*b(e.failure);throw e}if(g.prepared&&e instanceof bd){x.record();let n=yield*ku(t,e.refusal,g.secret!==void 0,r,i);if(n)return yield*m(n)}if(g.prepared&&wt(e)===`blocked`){let t=nt();return x.record(t),yield*b(yield*Ae(e,t))}return yield*b(qd(e))}if(y&&(C=Vu(C,y)),C===void 0)return yield*b({code:`invalid_output`,kind:`bad_response`,message:W(`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:W(`tool.output_invalid`,{},r.profile.labels),details:w.error.flatten()});let T=Nd(e,t,w.data,r,a);if(!T.ok)return yield*b(T.failure);let E=Md(t,r);return yield*Ld({base:i,toolName:t.name,callId:u,input:f,stages:o,guard:l,provisional:{outputRaw:T.output,modelResult:jd(t,T.output,r.profile.labels)},sources:t.sources,labels:t.labels,...E?{}:{reproject:Gd(e=>t.output.safeParse(e),e=>jd(t,e,r.profile.labels),r.profile.labels)}})}function Zd(e,t){let n=Vr(t)?.t2Loader;return e.loadTier===`T2`&&n?W(`tool.not_loaded_t2`,{tool:e.name,loader:n},t.labels):W(`tool.not_visible`,{tool:e.name},t.labels)}function Q(e){return{failure:e,callNotStarted:!0,modelResult:He(e)}}async function*Qd(e,t,n,r){if(yield z(n,{phase:`running`}),V(t.signal),!r.builtins.includes(e.name)){let r={code:`not_loaded`,kind:`request`,message:W(`tool.builtin_not_enabled`,{tool:e.name},t.profile.labels)};return yield R(n,r),Q(r)}let i={code:`provider_native`,kind:`request`,message:W(`tool.provider_native`,{tool:e.name},t.profile.labels)};return yield R(n,i),Q(i)}function $d(e){let{tool:t,profile:n,name:r,resume:i,snapshot:a}=e;if(!tr(n).includes(r))return{code:`not_allowed`,kind:`blocked`,message:W(`tool.not_allowed`,{tool:r,profile:n.id},n.labels)};if(!a)return;let o=jl(i);if(!o&&!a.gated.includes(r))return{code:`not_gated`,kind:`request`,message:W(`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:Zd(t,n)}}function ef(e){let t=e.tools.get(e.name);if(!t||t.type===`builtin`)throw new B(`blocked`,W(`error.blocked`));let n=$d({...e,tool:t});if(n)throw new B(n.kind,n.message);e.outcome&&tf(e,t,e.outcome)}function tf(e,t,n){let r=()=>new B(`blocked`,W(`detect.output_blocked`,{},e.profile.labels)),i=n.replay.modelResult;if(t.type===`function`&&t.exposeToModel===!1&&i?.finding!==W(`tool.completed_hidden`,{},e.profile.labels))throw r();let a=je(n.event.tool.readBack??``,{event:n.event,output:n.replay.outputRaw},Td(t,e.tools),I(e.profile.guardrails),t.type===`builtin`?void 0:kt(`tool_output`,t.type),e.snapshot?.executable??[],e.profile.labels);if(a.event?.action===`block`||a.event?.action===`redact`)throw r()}async function*nf(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*au({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*Vd(s,r,t.failure,o,{toolName:u,callId:i,input:a,callNotStarted:t.callNotStarted,...t.denied?{denied:!0}:{}}):yield*Ld({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=>kl(n.images,e,l,n.imageLimits)}:{},labels:n.labels,reproject:Gd(e=>yu(n.output,e),e=>xu(bu(e),t.modelResult.parts),c)})}function rf({modelResult:e}){return e?{text:L(e),parts:e.parts}:void 0}function af(e,t){if(t?.signIn&&e.type!==`builtin`&&e.type!==`agent`)return e.auth?.service}function of(e,t,n){return t?{code:`expired`,kind:`cancelled`,message:W(`sign_in.expired`,{service:t},n)}:{code:`cancelled`,kind:`cancelled`,message:W(`session.abandon_gated`,{tool:e},n)}}function sf(e,t,n){let r=af(e,t),i=t?.cause??`declined`;return i===`declined`?{code:`denied`,kind:`declined`,message:r?W(`sign_in.declined`,{service:r},n):W(`session.tool_denied`,{tool:e.name},n)}:of(e.name,i===`expired`?r:void 0,n)}function cf(e){if(Ml(e))return!0;if(Nl(e))return!1}function lf(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 uf(e){let t=e.tools.get(e.name),n=I(e.profile.guardrails),{args:r}=ht(Hn(e.input),t?Td(t,e.tools):{origin:`local`,tool:e.name,depth:1},n,wd(e.tools,e.name),Et(n,e.scope??{}));return typeof r==`object`&&r&&!Array.isArray(r)?r:{}}async function*df(e){return e={...e,ctx:{...e.ctx,operationId:e.ctx.operationId??crypto.randomUUID()}},yield*bl(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=>ff({...e,beginBody:async n=>{let r=await t?.(n)??await e.beginBody?.(n);return e.onDispatch?.(),r}}),t=>ef({outcome:t,tools:e.tools,profile:e.profile,name:e.name,resume:e.ctx.resume,snapshot:e.snapshot}))}async function*ff(e){let t=e.tools.get(e.name);if(!e.openSpan)return yield*pf(e,t);let n=gt(e.openSpan,{name:e.name,callId:e.callId,call:{arguments:Re(Hn(e.input))},origin:t?Sd(t,e.tools):void 0,permission:t&&`permission`in t?t.permission:void 0,approved:cf(e.ctx.resume),step:e.ctx.turn?.step}),r=pf({...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(lf(t.value,e.readBack??rf)),t.value;n.observe(t.value),yield t.value}}catch(e){throw n.end(fn(e)?{outcome:`cancelled`}:{outcome:`error`,thrown:e}),e}finally{n.span.ended||(n.end({outcome:`cancelled`}),await r.return({}))}}async function*pf(e,t){let{profile:n,name:r,input:i,callId:a,ctx:o,snapshot:s,stages:c}=e,l=Hn(i),u=o.operationId??crypto.randomUUID(),d={name:r,callId:a,operationId:u,activityFailed:Be(r,n.labels,t?.labels,l)};if(!t){let e={code:`unknown_tool`,kind:`request`,message:W(`tool.not_registered`,{tool:r},n.labels)};return yield R(d,e),Q(e)}if(t.type===`builtin`){if(!s){let e={code:`provider_native`,kind:`request`,message:W(`tool.builtin_needs_snapshot`,{tool:r},n.labels)};return yield R(d,e),Q(e)}return yield*Qd(t,{...o,callId:a,profile:n,operationId:u},d,s)}let f=$d({tool:t,profile:n,name:r,resume:o.resume,snapshot:s,visible:o.turn?.visible});if(f)return yield R(d,f),Q(f);if(Nl(o.resume))return yield*Vd(Hd(e.tools,t,{...o,callId:a,profile:n,operationId:u},s,c?.span),d,sf(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=Td(t,e.tools),g=performance.now(),_=Cd(t),v=ht(l,h,m,_&&kt(`tool_arguments`,_),Et(m,e.scope??{}));if(Ne(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:W(`detect.call_blocked`,{},n.labels)};return yield R(d,e),{...Q(e),denied:!0}}let y=performance.now(),b=De(o.turn?.taint,t.access,m,n.labels),x=pt(b,h);if(Ne(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 R(d,e),{...Q(e),denied:!0}}return(yield*mf({tool:t,input:v.args,ctx:p,base:d,provenance:h,policy:m,span:c?.span}))||(yield*_f(e.tools,t,v.args,p,d,s,c,e.agents,e.beginBody))}async function*mf(e){let{tool:t,input:n,ctx:r,base:i}=e,{labels:a}=r.profile,o=performance.now(),{verdict:s,confirm:c}=Bi(r.turn?.destinations,n,e.policy,a),l=pt(s,e.provenance);if(Ne(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 R(i,e),{...Q(e),denied:!0}}if(!c||Ml(r.resume))return void 0;let u={kind:`confirmation`,tool:t.name,summary:c,...Fl(t,n)};return yield*au({base:i,gate:u,callId:r.callId,toolName:t.name,labels:a}),{gated:u,callNotStarted:!0}}async function*hf(e){let{tool:t,ctx:n,base:r,agents:i}=e;if(!i){let e={code:`unknown_tool`,kind:`unsupported`,message:W(`tool.unsupported_type`,{tool:t.name},n.profile.labels)};return yield R(r,e),Q(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 $n(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=Xd(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 gf(e.value,r.callId,a)}}function gf(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*_f(e,t,n,r,i,a,o,s,c){let{name:l}=t;if(t.type===`function`)return yield*Xd(e,t,n,r,i,a,o,void 0,c);if(t.type===`agent`)return yield*hf({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 Q({code:`unknown_tool`,kind:`request`,message:W(`tool.unsupported_type`,{tool:l},r.profile.labels)});let u=Hd(e,t,r,a,o?.span);return yield*nf({outcome:t.type===`http`?yield*Ku(t,n,r,i,o,c,new Sl(i,u.handlerEvents(o?.drafts===!0))):yield*vd(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*vf(e,t){let n=performance.now(),r=_t(e.message,t.provenance,t.policy,t.kind&&kt(`tool_failure`,t.kind));Ne(t.span,`tool_failure`,performance.now()-n,r.event),r.event&&(yield{type:`guardrail`,guardrail:r.event});let i=r.text??W(`detect.output_blocked`,{},t.labels);return{modelResult:yield*yf({...e,message:i},t)}}function*yf(e,t){let n=Oe(e);return(yield*Sf(n,t,void 0))??n}function*bf(e,t){let n=yield*Sf(e,t,t.kind&&kt(`tool_output`,t.kind));if(n)return{modelResult:n};let r={code:`output_blocked`,kind:`blocked`,message:W(`detect.output_blocked`,{},t.labels)};return{modelResult:yield*yf(r,t),withheld:r}}function*xf(e,t){let n=t.kind&&kt(`tool_shown`,t.kind),r=ft(e,t.provenance,t.policy,n);return r.event&&(yield{type:`guardrail`,guardrail:r.event}),`value`in r?r.value:W(`detect.shown_blocked`,{},t.labels)}function*Sf(e,t,n){let{provenance:r,span:i}=t,a=performance.now(),o=je(e.finding,e.data,r,t.policy,n,t.callableTools,t.labels);if(Ne(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 Cf(){let e=()=>void 0;return{promise:new Promise(t=>{e=t}),resolve:e}}function wf(e,t,n){let r=new Set,i=new Map(e.map(e=>[e,Cf()])),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)),V(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=Cf();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*Tf(e,t,n){try{return await e.start(t),yield*n()}finally{e.settle(t)}}async function*Ef(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 Df(e,t){return e.type===`thought`&&Ec(t)?.streaming?.streamThoughts===!1}function*Of(e){e.some(e=>e.rule===En.providerToolLeak)?yield*kf(e):yield*Af(`reply`,{action:`block`,hits:e});let t=Qt(e);yield H(new B(`safety`,t)),yield{type:`done`,stop:{kind:`filtered`,native:t===Ft.canary?`canary`:t===Ft.promptEcho?`prompt_echo`:`provider_tool_leak`}}}function*kf(e){let t=cr(`output_delta`,`untrusted`,e,`block`);t&&(yield t)}function*Af(e,t){let n=t&&It(e,t,void 0,jf[e]);n&&(yield K(n))}var jf={reply:`output_delta`};function*Mf({text:e,hits:t,found:n},r){yield*Af(`thought`,n);let i=cr(`thought`,`untrusted`,t,`redact`);i&&(yield i),e&&(yield{...r,text:e})}function*Nf(e,t){e&&(yield*Mf(e.flush(),{type:`thought`,text:``}),t&&(t.thoughtCarry=e.carryOut()))}function Pf(e){return e.type===`text`||e.type===`media`}function Ff(e,t){return!t.structured||Fn(t)||e.type!==`text`?e:t.stream===!1?void 0:{type:`structured_draft`,text:e.text}}var If=class{drafts;generation;constructor(e){let t=I(e.profile.guardrails),n=zf(e,t);this.drafts=new Bn(()=>ir(t,n,`reply_structured`)),this.generation=e.generation}async*show(e){let t=Ff(e,this.generation);t?.type===`structured_draft`?yield*this.draft(t.text):t&&(yield t)}async*draft(e){if(this.generation.stream===!1)return;let t=await this.drafts.read(e);t&&(yield{type:`structured_draft`,text:t})}*end(){let e=this.drafts.end();e&&(yield{type:`structured_draft`,text:e})}};function Lf(e){return e.type===`structured`||e.type===`tool`}var Rf=class{policy;context;tools;answerTool;drafts=new Map;constructor(e,t,n,r){this.policy=e,this.context=t,this.tools=n,this.answerTool=r}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=this.answerTool&&e.name===`final_answer`?void 0:wd(this.tools,e.name),n=t?await ir(this.policy,this.context,t):null,r={name:e.name,gate:n};return this.drafts.set(e.callId,r),r}};function zf(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}:{},...Gt(t.detect,{canary:a,canaryGiven:i,privateSystem:r}),givenUrls:e.givenUrls,...e.ownTools?{ownTools:e.ownTools}:{}}}async function*Bf(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=zf(e,c),{canaryCarry:u,thoughtCarry:d}=o??{},f=await or(c,l,`reply`,u),p=await ra(c,l,d),m=new Rf(c,l,e.tools,e.answerTool===!0),h=null,g=!1;function _(e){let t=e.filter(Zt);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*kf(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&&It(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*Af(`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*Mf(p.push(e.text),e),!0)}function*E(){w&&(w=!1,yield*Nf(p,o))}V(a);let D=!1;for await(let e of r.complete({...n,signal:a,tapUpstream:i.tap})){if(i.observe(e),V(a),e.type===`response`)continue;if(e.type===`reasoning`){yield e;continue}if(yield*T(e))continue;if(Dt(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=Lf(e)?void 0:await s(`stream_canary`,()=>Pt(e,l,c.detect,`reply`));if(t?.stop){yield*Of(t.hits);return}t&&(yield*Af(`reply`,{action:`flag`,hits:t.hits})),y()&&Pf(e)||(e.type===`error`&&(D=!0),e.type===`done`&&(yield*Nf(p,o))),yield e}yield*Nf(p,o),(yield*x())!==`stop`&&(o&&f&&(o.canaryCarry=f.carryOut()),D&&(yield{type:`done`,stop:{kind:`provider_error`}}))}function Vf(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 Hf(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 Uf(e,t){return{tokens:e.tokens+t.tokens,unknownMedia:e.unknownMedia+t.unknownMedia}}function Wf(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 Gf(e,t){let n=await oc(),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 Wf(e.output,t))r.tokens+=n.text(i);return r}async function Kf(e){let t=await oc(),{conversation:n}=e;if(`previous`in n){let e=await Kf(n.previous),r=await Gf(n.previous,!1),i=t.messages(n.continuation);return Uf(Uf(e,r),i)}let r=Uf(t.messages(n.history),t.parts(n.input));return e.held?Uf(e.held,r):r}async function qf(e){return Uf(await Kf(e),await Gf(e,!1))}async function Jf(e,t){let n=await oc(),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 Kf(e);return{tokens:n.text(e.system)+i+a+o.tokens,unknownMedia:o.unknownMedia}}async function Yf(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 Jf(e,t):void 0,a=r.includes(`output`)?await Gf(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 Xf(e,t){return t>0&&e>=t}function Zf(e,t,n){let r={...e,history:cl(t)};return n?{...r,builtins:[],tools:{...e.tools,wire:[]}}:r}function Qf(e,t,n){return e.type===`text`&&e.turnBehaviour?.atStepLimit===`answer`&&Xf(n,t.maxSteps??0)}function $f(e,t){if(t.phase===void 0)return e.push({name:t.name,callId:t.callId,arguments:t.arguments}),!0;let n=M(e,e=>e.callId===t.callId);return t.phase!==`error`||!n?!1:(n.failure=t.failure,!0)}function ep(e,t,n,r,i){let a=Vf(t.text,{history:cl(n),input:e.input});n.lastCall=a;let o=Zf(e,n,r),s=Zn(dl(n.tools,o,t.text),e,i);return bn(n.givenUrls,s),Ri(n.destinations,s,n.givenUrls.own),e.canary&&!n.canaryGiven&&(n.canaryGiven=Ut(s,e.canary,n.canaryScanned)),n.trace.calls+=1,{usage:a,genForStep:o,request:s,call:y((e,t)=>n.trace.root.child(e,t),{req:s,usage:a,binding:n.trace.binding,transport:o.transport,step:n.stepCount,attempt:n.trace.attempt})}}function tp(e,t){let n=re(e);return n?.autoContinue!==void 0&&Te(t,n)}var np=new Set([`text`,`media`,`structured`,`citation`]);function rp(e,t,n){return e.type===`error`?(t.failures.push(e),!0):e.type===`tool`?$f(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),np.has(e.type)&&(t.replied=!0),!1)}async function*ip(e,t,n){if(!Fn(n.generation))return;let r=t.calls.find(e=>e.name===`final_answer`&&!e.failure);if(t.calls=r?[]:t.calls.filter(e=>e.name!==In),!r)return;t.stop?.kind===`tool`&&(t.stop={kind:`completed`},n.state.lastStop=t.stop);let i={type:`structured`,structured:r.arguments};rp(i,t,n.call)||cp(i,n.control,n.state,n.buffer)&&(yield*e.show(i))}async function*ap(e,t,n,r){r.holdVisible||(e.name===`final_answer`&&Fn(n)?yield*t.draft(e.text):yield e)}var op=`
|
|
9
|
+
|
|
10
|
+
`;function sp(e,t,n,r){if(t.text)return e;let i=n.replyText,a=r.structured===null||Fn(r),o=i&&a&&!/\s$/.test(i)&&!/^\s/.test(e.text);return t.replyAt=i.length+(o?2:0),o?{...e,text:`${op}${e.text}`}:e}function cp(e,t,n,r){if(al(e,n),t.withholdVisible&&Pf(e))return n.withheldVisible=!0,!1;e.type===`text`&&(n.released+=e.text,n.replyText+=e.text);let i=e.type===`thought`||!r.holdVisible&&Pf(e);return!r.holdLate||i}var lp=new Set([`busy`,`unavailable`,`bad_response`,`network`,`timeout`,`rate_limit`]);function up(e,t,n){let{stop:r}=n;if(!e||n.replied||n.calls.length>0||!r||!Ce(r.kind)||!tp(t,r))return;let i=n.failures[0];if(!i?.errorKind||lp.has(i.errorKind))return{stop:r,failure:i}}function dp(e,t){e.canaryCarry=t.canaryCarry,e.thoughtCarry=t.thoughtCarry,t.promptLeaks&&(e.promptLeaks=[...e.promptLeaks??[],...t.promptLeaks])}async function*fp(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}=ep(i,a,t,Qf(r,i,t.stepCount),r.labels),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 If({...m,generation:i});try{for await(let e of Bf({...m,request:u,provider:o,call:d,signal:s,control:p,tools:t.tools,answerTool:Fn(i)})){if(Hf(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`){yield*ap(e,h,i,n);continue}let r=e.type===`text`?sp(e,f,t,i):e;rp(e,f,d)||cp(r,p,t,n)&&(yield*h.show(r))}}catch(e){throw d.end(fn(e)?{stop:{kind:`cancelled`}}:{stop:f.stop,thrown:e}),e}yield*h.end(),yield*ip(h,f,{generation:i,state:t,control:p,buffer:n,call:d}),dp(t,p);let g=up(e.mayResume,r,f);if(!g)for(let e of f.failures)al(e,t),n.holdLate||(yield e);let _=await Yf(c,i);return d.end({tokens:_?.tokens,stop:f.stop}),_&&(al(_,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*pp(e,t,n){let r=re(e.profile)?.maxContinues??1;for(;;){let i=e.profile.type===`text`&&t.resumes<r,a=yield*fp({...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 Ia(bt,e.signal)}}function mp(e,t){return{role:`tool`,tool_call_id:e.callId,name:e.name,content:L(t),...t.parts&&t.parts.length>0?{parts:t.parts}:{}}}function hp(e,t,n){e.currentHistory.push(mp(t,n))}async function*gp(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 _p(e){return(t,n)=>e.trace.root.child(t,{attributes:n})}function vp(e,t,n){let r=R(t,n);e.allEmittedEvents.push(r);let i=He(n);return gt(_p(e),{name:t.name,callId:t.callId,call:t,step:e.stepCount}).end({outcome:`error`,result:{text:L(i)},failure:n}),hp(e,t,i),r}function*yp(e,t,n){return e.aborted?(t.lastStop=we(e.aborted),`stop_cancelled`):e.gated?`gated`:(e.modelResult?.provenance&&(t.taint=S(t.taint,e.modelResult.provenance,e.modelResult.suspicious),zi(t.destinations,e.modelResult,e.modelResult.provenance)),e.modelResult&&(!e.failure&&`outputRaw`in e&&t.toolResults.push({tool:n.name,output:e.outputRaw}),hp(t,n,e.modelResult),e.pendingInject&&(yield*rl(t,`post_tool`,e.pendingInject,{callId:n.callId,toolName:n.name}))),`continue`)}function bp(e){return st({text:e.text,structured:e.latestStructured,calls:e.calls.map((t,n)=>n===0?{...t,reasoning:e.reasoning}:t)})}async function*xp(e,t,n,r,i,{onStage:a,signal:o,credentials:s,resolveHost:c}={}){let{calls:l,reasoning:u}=e;l.length>0&&$c(r,bp(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:uf({tools:r.tools,profile:n,name:e.name,input:e.arguments,scope:f})}));for(let[e,t]of p.entries()){let n=Ve(t,t.shown,{...e===0&&u.length?{reasoning:u}:{},stepId:d,stepCallCount:p.length});r.allEmittedEvents.push(n),yield n}let m=wf(p.map(e=>e.callId),Pn(n)===!0,o),h={handlers:a?[a]:[],profile:n,step:r.stepCount,history:()=>r.currentHistory,injectAllowed:ae(n),injectWouldExceedMaxSteps:Jc(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=>gp(df({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:_p(r)}),r);for(let e of p)e.failure&&m.settle(e.callId);let v=yield*Ef(p.map(e=>e.failure?void 0:Tf(m,e.callId,()=>_(e)))),y=!1,b=!1;for(let[e,t]of p.entries()){if(t.failure){yield vp(r,{...t,activityFailed:Be(t.name,n.labels)},t.failure);continue}let i=v[e];if(!i)continue;let a=yield*yp(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*Sp(e){let{profile:t,generation:n,system:r,provider:i,state:a}=e,o,s=[],c,l=Ec(t)?.validation,u=l!==void 0||Gn(I(t.guardrails),P),d=l!==void 0&&n.stream===!1;for(;!Xf(a.stepCount,n.maxSteps??0);){V(e.safe.signal),a.stepCount++;let l=yield*pp({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?[]:bp(l),c=l.replyAt,!(yield*xp(l,n,t,a,r,e.safe)))break;Xf(a.stepCount,n.maxSteps??0)&&(a.lastStop={kind:`step_limit`})}return{latestStructured:o,reply:s,...c===void 0?{}:{replyAt:c}}}var Cp={kind:`filtered`,native:`egress`};function wp(e){let t=[];for(let n of e)n.type===`text`&&n.text&&t.push(n.text);return t.join(``)}function Tp(e){let t=M(e,e=>e.type===`structured`)?.structured;return{text:wp(e),...t===void 0?{}:{structured:t}}}function Ep(e,t,n,r){return{...e,input:{...e.input,repair:{previousOutput:typeof t==`string`?t:JSON.stringify(t),rejection:n,guidance:r}}}}function Dp(e){let{attemptEvents:t,request:n,profile:r,canRetry:i,promptLeaks:a}=e,{detect:o,blockedReply:s}=e.policy,c=Tp(t),l=Et(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=D(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=qe(u,a),m=p&&p!==u.blocked?cr(`output_final`,`untrusted`,p,`block`):void 0,h=[...u.events.map(K),...m?[m]:[]];return p?s.onBlock===`refuse`?{outcome:f(T(e.shown,r.labels)),guardrails:h}:i?{outcome:{action:`retry`,nextRequest:Ep(n,d.text,Tc(p,o,r.labels),W(`egress.default_repair_guidance`,{},r.labels))},guardrails:h}:{outcome:{action:`withhold`,event:H(new B(`safety`,Ft.egress))},guardrails:h}:u.rewritten?{outcome:f(fe(e.shown,d.text)),guardrails:h}:{outcome:{action:`pass`},guardrails:h,...d.structured===c.structured?{}:{structured:d.structured}}}async function Op(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 B(`config`,`outputs.validation requires outputs.structured with a JSON Schema`);let s=await Mr(o.jsonSchema,r,t.fields,i.input?.slots);return s.length===0?{action:`pass`}:a?{action:`retry`,nextRequest:Ep(i,r,Lr(s))}:{action:`pass`,failed:s}}function*kp(e,t,n){for(let r of e){if(r.type===`tokens`||r.type===`thought`||t&&Pf(r))continue;let e=Ff(r,{...n,stream:!1});e&&(yield e)}}function Ap(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=Ln(r,n);if(n.type===`text`){t.turnOnly=!0;let e=t.currentHistory.length;ol(t,yr(n,{...a,input:{repair:a.input?.repair}}));for(let n of t.currentHistory.slice(e))jp(t,n)}else{let r=yr(n,a);jp(t,r),e.currentGen={...e.currentGen,input:r}}let o={type:`attempt`,attempt:e.currentAttempt,reason:i};return t.allEmittedEvents.push(o),o}function jp(e,t){e.canaryScanned.add(t),e.givenUrls.own.add(t)}function Mp(e,t){return Ec(e)?.validation!==void 0&&t.stream===!1}async function*Np(e,t,n,r,i){let a=t.currentAttempt<e.blockedReply.maxRetries,o=performance.now(),{outcome:s,guardrails:c,structured:l}=await Dp({policy:e,attemptEvents:n.attemptEvents,withheld:n.withheldVisible===!0,released:n.released,shown:Mp(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`,me(`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=M(n.attemptEvents,e=>e.type===`structured`);e&&(n.attemptEvents[n.attemptEvents.indexOf(e)]={...e,structured:l})}return s.action===`refusal`?(n.lastStop=Cp,n.allEmittedEvents.push(s.event),yield s.event,`terminal`):s.action===`withhold`?(n.lastStop=Cp,yield s.event,`terminal`):s.action===`retry`?(yield Ap(t,n,r,s.nextRequest,`egress`),`continue`):`pass`}function Pp(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=zr(t,n,r)}return t}function Fp(e,t){let n={type:`object`,properties:{},required:[]};e.$defs!==void 0&&(n.$defs=e.$defs);for(let r of t){let t=gr(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 Ip(e,t){let n=e.reply;for(let r of new Set(e.refused.map(e=>e.path))){let i=Dr(n,r),a=Dr(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=zr(n,r,o)}return n}function Lp(e,t){let n=e;for(let e of new Set(t.map(e=>e.path))){let r=Dr(n,e);if(!Array.isArray(r))continue;let i=new Set(t.filter(t=>t.path===e).map(({index:e})=>e));n=zr(n,e,r.filter((e,t)=>!i.has(t)))}return n}function Rp(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 zp(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=Ep(t.currentReq,Pp(a),c,W(`repair.items_guidance`,{},r.labels));t.pendingItemFix={reply:i,refused:a,structured:o};let u=Ap(t,n,r,l,`validation`);return t.currentGen={...t.currentGen,structured:{id:o.id,jsonSchema:Fp(o.jsonSchema,a.map(({path:e})=>e))}},u}async function Bp(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=Ip(o,i),Rp(n,s,[]));let c=await Op({validation:e,generation:t.currentGen,latestStructured:s,request:t.currentReq,canRetry:a});if(c.action===`retry`)return Ap(t,n,r,c.nextRequest,`validation`);if(s===void 0)return`pass`;c.failed&&Hp(n,c.failed);let l=t.currentReq.input?.slots,u=await mr(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?zp({flow:t,state:n,profile:r,reply:s,refused:d,structured:f}):(Rp(n,Lp(s,u),u,c.failed),`pass`)}function*Vp(e,t,n,r,i){if(r!==void 0||t.lastStop?.kind!==`completed`||!Fn(e.currentGen))return`pass`;let a=Ec(n)?.validation;if(a&&e.currentAttempt<(a.maxRetries??0)){let r=W(`structured.answer_missing`,{tool:In},n.labels);return yield Ap(e,t,n,Ep(e.currentReq,wp(t.attemptEvents),r),`validation`),`continue`}let o=H(new B(`bad_response`,`the model ended without calling ${In}`));return al(o,t),t.lastStop={kind:`provider_error`},i||(yield o),`pass`}function Hp(e,t){let n=M(e.attemptEvents,e=>e.type===`structured`);n&&(e.attemptEvents[e.attemptEvents.indexOf(n)]={...n,failed:t})}function Up(e){return e===`terminal`?{status:`terminal`}:e===`continue`?{status:`continue`}:null}async function*Wp(e){let{flow:t,state:n,profile:r,system:i,provider:a}=e;n.stepCount=0,n.replyText=``,n.replyMessages=[],n.canaryCarry=void 0;let o;for(;;){n.attemptEvents=[],n.released=``,n.withheldVisible=!1,n.promptLeaks=void 0;let e=yield*Sp({safe:t.currentReq,profile:r,generation:t.currentGen,system:i,provider:a,state:n});if(o=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 s=yield*il({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:Jc(n.stepCount,t.currentGen.maxSteps)});if(s.abort)return n.lastStop={kind:`cancelled`,...typeof s.abort==`object`&&s.abort.reason?{native:s.abort.reason}:{}},{status:`terminal`};if(!(s.injectCount>0))break}return yield*Gp(t,n,r,i,o)}async function*Gp(e,t,n,r,i){let a=Ec(n)?.validation,o=I(n.guardrails),s=Gn(o,P),c=i;if(s){let i=Up(yield*Np(o,e,t,n,r.private));if(i)return i;c=Tp(t.attemptEvents).structured??c}if((yield*Vp(e,t,n,c,!!a||s))===`continue`)return{status:`continue`};if(a){let r=await Bp(a,e,t,n,c);if(r!==`pass`)return yield r,{status:`continue`}}if(a||s){let r=t.withheldVisible||Mp(n,e.currentGen);yield*kp(t.attemptEvents,!r,e.currentGen)}return{status:`success`}}async function*Kp(e,t,n,r,i,a){let{blockedReply:o}=I(t.guardrails),s=Math.max(Ec(t)?.validation?.maxRetries??0,o.onBlock===`retry`?o.maxRetries:0),c={currentAttempt:0,currentGen:n,currentReq:e};for(;c.currentAttempt<=s;){V(e.signal);let n=yield*Wp({flow:c,state:a,profile:t,system:r,provider:i});if(n.status===`terminal`||n.status===`success`)break}}var qp=new Set([`config`,`request`,`auth`,`internal`]);function Jp(e){return e.find(e=>e.type===`error`)}function Yp(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`,W(`tool.agent_call_limit`,{tool:i.name},u));t.set(i.name,f+1);let p=n.profiles.get(i.profile),m=An(p,e=>n.tools.get(e));if(m)throw new B(`config`,`Agent tool "${i.name}" can't run '${i.profile}': ${m}`);let{sent:h,hostInput:g}=Sr(i,o);if(g&&!r.onAgentCall)throw new B(`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=Xp(e,p.id,y.model,v);if(!c)throw new B(`internal`,`Agent tool "${i.name}" ran without a span`);let{speech:x,...S}=h,C=[];try{for await(let t of e.runNested({req:{...x?{speech:x}:{},...y,profile:i.profile,execution:r.execution,pageExecution:r.pageExecution,input:y.input??S,...l?{signal:l}:{},...r.onAgentCall?{onAgentCall:r.onAgentCall}:{}},provider:b,parent:c,agentDepth:e.depth+1}))C.push(t),yield t}catch(e){if(!(e instanceof B)||qp.has(e.kind)||fn(e))throw e;C.push(H(e))}return V(l),Zp(C,i.name,i.profile,u)}}}function Xp(e,t,n,r){return r?nc(e.registry,t,n,r):e.provider?ic(e.provider,t,n):nc(e.registry,t,n,{})}function Zp(e,t,n,r){let i=M(e,e=>e.type===`done`),a=i?.tokens??ge(e),o=a?{tokens:a}:{},s=Jp(e);if(s&&qp.has(s.errorKind))throw new B(s.errorKind,`Agent '${n}' failed: ${s.errorInternal??s.error}`);let c=i?.stop.kind;if(c!==`completed`||s){let e=W(`tool.agent_failed`,{tool:t},r),i=s?.errorCopy?mn(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:Ir(e),...o}}function Qp(e,t){return er(e,t?.include.guardrailMatchPreview??!1)}var $p=1e3;function em(e,t){let n=Kt(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()/$p})),e.seen.push(n),e.delivered.add(n,e.root.nowUnixNano()),n}function*tm(e,t,n){let r=Qp(t,e.observability);Df(r,n)||(yield em(e,r))}function nm(e,t){return e.models[t]?.compaction}function rm(){return{builtins:[],gated:[],visible:[],executable:[],wire:[]}}function im(e){let t=pm(e.registry,e.req,e.parent.child(`invoke_agent ${e.req.profile}`,ce(e.req)),e.canaries);return t.agentDepth=e.agentDepth,e.compacting&&(t.compacting=e.compacting),t.observability=Wr(t.known?.observability),hm(t,ic(e.provider,e.req.profile,e.req.model,e.req))}async function am(e){let t=e.spec.profile===void 0,n=e.spec.profile??e.owner,r=e.registry.profiles.get(n),{history:i,droppedMedia:a}=gc(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:W(`compaction.request`,{},r.labels),history:i},signal:e.signal},s=[];try{for await(let n of im({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){V(e.signal);let n=wt(t);if(qp.has(n))throw t;return{droppedMedia:a,failure:{error:n,errorInternal:Ht(t)}}}V(e.signal);let c=ge(s),l=c?{tokens:c}:{},u=M(s,e=>e.type===`done`)?.stop.kind,d=Jp(s);if(d&&qp.has(d.errorKind))throw new B(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}:{},...d?.errorInternal?{errorInternal:d.errorInternal}:{}},...l};let p=he(s),m=M(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 om(e){return M(e,e=>e.type===`tokens`)?.tokens}function sm(e,t,n){return{timing:e.timing,meter:sc(e),budget:e.maxTokens,threshold:e.compactAt,...e.trigger?{trigger:`custom`}:{},...t?{tokens_before:t.tokens,unknown_media:t.unknownMedia}:{},needed:n}}function cm(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?.errorInternal?{failure_reason:Ot(e.failure.errorInternal)}:{},...e.failure?.empty?{failure_empty:!0}:{},...e.failure?.unreadable?{failure_unreadable:!0}:{},...e.summary===void 0?{}:{summary:Ot(e.summary)}}}async function lm(e){let t=await uc({spec:e.spec,input:e.input}),n=t!==void 0&&await fc(t,e.spec),r=sm(e.spec,t,n);if(!(n&&t)){e.parent.event(`theorem.compaction`,r);return}let i=await pc(e.history,e.spec);if(i.toCompact.length===0){e.parent.event(`theorem.compaction`,r);return}let{toCompact:a,...o}=_c(i,await am({...e,toCompact:i.toCompact}),t.tokens,e.spec);return e.parent.event(`theorem.compaction`,{...r,...cm(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 um(e,t){if(t.history.length===0)return e;let n=om(t.seen),r=await uc({spec:t.spec,input:t.input,prompt:n}),i=r!==void 0&&await fc(r,t.spec);if(t.span.event(`theorem.compaction`,sm(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*dm(e){let{safe:t,profile:n,generation:r,system:i,provider:a}=e,o=sl({tools:e.registry.tools,profile:n,generation:r,trace:e.trace,...e.agents?{agents:e.agents}:{}});e.outState.state=o;let s=yield*il({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*il({profile:n,generation:r,state:o,stage:`post_turn`,step:1,onStage:t.onStage,signal:t.signal,stop:e,host:r.host});return}yield*Kp(t,n,r,i,a,o);let c=A(o.allEmittedEvents),l=ve({stop:o.lastStop??{kind:`completed`},...o.providerState&&!ll(o)&&!(`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}:{}},Br(r.tools));o.allEmittedEvents.push(l),yield l}async function*fm(e,t,n,r,i){if(e.safe&&e.system!==void 0&&e.trace)for await(let a of dm({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=Qp(await wm(a,e,n,i),e.observability);if(Df(r,t)||(yield em(e,r)),r.type===`done`&&e.state&&!e.state.allEmittedEvents.some(e=>e.type===`stage`&&e.stage===`post_turn`))for await(let i of il({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*tm(e,i,t)}}function pm(e,t,n,r){return{registry:e,req:t,known:e.profiles.find(t.profile),seen:[],delivered:new mt,root:n,compacting:!1,agentDepth:0,canary:``,canaries:r}}function mm(e,t){let n=e.trace?.calls??0;ee(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*hm(e,t){try{yield*vm(e,t)}catch(t){if(fn(t)){yield*_m(e),mm(e);return}throw mm(e,t),t}mm(e)}async function*gm(e,t,n,r){let i=Jt(`invoke_agent ${t.profile}`,{...ce(t),...t.traceparent?{traceparent:t.traceparent}:{}}),a=pm(e,t,i.root,[]),{sink:o,policy:s}=xs({override:r,observability:a.known?.observability,guardrails:a.known?.guardrails});a.observability=s;try{yield*hm(a,n)}finally{await ps(o,Kr({spans:i.collect(),policy:s,canaries:a.canaries,...t.metadata?{metadata:t.metadata}:{}}),s)}}async function*_m(e){if(e.seen.some(e=>e.type===`done`))return;let t={kind:`cancelled`};yield em(e,Qp({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??sl({tools:e.registry.tools,profile:n,generation:r,trace:e.trace,allEmittedEvents:[...e.seen]});for await(let a of il({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*tm(e,a,n)}async function*vm(e,t){let n=performance.now(),r=Vn(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`,me(`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)?me(`input`,i,t.guardrail,t.guardrail):E(t.guardrail)),yield em(e,Qp(t,e.observability));if(r.refusal)throw r.refusal;let{profile:o,generation:s}=Nr(e.registry,e.safe);await Ur(e.registry.tools,s.tools,o,e.safe),e.compacting===`self`&&(s.tools=rm()),s.builtins=s.tools.builtins,s.canary&&=await Yt(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=ym(e,t,c)),V(e.safe.signal);let l=e.compacting?void 0:nm(o,s.model),u=await Cm(e,o,s,l,t);u&&(yield em(e,Qp(u,e.observability))),e.system=Kn(s.resolvedSystem,[kn(e.canary,o.labels),Me(`identity.system`).includes(o.type)?hn(o.labels):``,it(o)?.context?On(o.labels):``]),yield*fm(e,o,s,t,l)}function ym(e,t,n){return Yp({registry:e.registry,req:e.safe??e.req,provider:t,own:n,depth:e.agentDepth,runNested:t=>im({...t,registry:e.registry,canaries:e.canaries})})}function bm(e,t,n){return Yp({registry:e,req:t,provider:t.provider?rc(e,t.provider):void 0,own:void 0,depth:0,runNested:t=>im({...t,registry:e,canaries:n})})}function xm(e,t,n,r){return Yp({registry:e,req:{...t,execution:n.execution},provider:rc(e,n),own:void 0,depth:0,runNested:t=>im({...t,registry:e,canaries:r})})}function Sm(e,t,n,r){return ic(r,n.profile??t.id,n.profile?void 0:e.req.model)}async function Cm(e,t,n,r,i){if(!(r?.timing===`before`&&e.safe))return;let a=Sm(e,t,r,i);if(!n.history?.length)return;let o=await lm({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 wm(e,t,n,r){return e.type===`done`&&r?.timing===`after`&&t.safe?await um(e,{spec:r,history:n.history??[],input:t.safe.input,seen:t.seen,span:t.root}):e}async function Tm(e,t,n,r){let i=e.profiles.get(t.profile),a=t.model??i.defaultModel,o=Qe(i,a).compaction;if(!o)throw new B(`config`,`Profile ${i.id} model '${a}' has no compaction`);let s=await pc(t.history,o);if(s.toCompact.length===0)return;let c={profile:t.profile,input:{},...t.conversationId?{conversationId:t.conversationId}:{}},l=Jt(`invoke_agent ${t.profile}`,{...ce(c),...t.traceparent?{traceparent:t.traceparent}:{}}),{sink:u,policy:d}=xs({override:r,observability:i.observability,guardrails:i.guardrails}),f=[];try{let r=_c(s,await am({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:sc(o),budget:o.maxTokens,threshold:o.compactAt,tokens_before:t.tokens,...cm(r,t.history.length)}),l.root.end(),r}catch(e){throw xe(l.root,e),e}finally{await ps(u,Kr({spans:l.collect(),policy:d,canaries:f,...t.metadata?{metadata:t.metadata}:{}}),d)}}function Em(e){return Array.isArray(e.input)?e.input:[]}function Dm(e){return typeof e==`string`?e:JSON.stringify(e)}function Om(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 km(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 Am(e){return{type:`closed`,code:e?.code??1e3,reason:e?.reason??`provider-closed`,...e?.error?{error:e.error instanceof B?e.error:new B(`unavailable`,W(`provider.session_closed`))}:{},...e?.warning?{goAway:e.warning}:{}}}function jm(e,t,n){if(t.has(e.callId)||n?.some(t=>t.role===`tool`&&t.tool_call_id===e.callId))throw new B(`bad_response`,W(`provider.settled_call`));t.set(e.callId,e.name)}function Mm(e){return{type:`batch`,row:{},turnPhase:`streaming`,events:e}}function Nm(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 Pm(e,t){let n=t.get(e);if(!n)throw new B(`bad_response`,W(`provider.tool_cancel_missing`));return Mm([{type:`tool`,tool:{callId:e,name:n,at:Date.now(),phase:`cancel`}}])}async function Fm(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,et(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 B(`unsupported`,W(`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 Mm([{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 Mm([...a,p]),a=[];else if(p.type===`tool_call`)jm(p.call,r,n.history),i.push(Nm(p.call,i,u));else if(p.type===`tool_cancel`){let e=Pm(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 Mm([{type:`done`,stop:p.stop}]);continue}yield await km(e,t,s.keySlot(),n,p,d,i,a),i=[],a=[],u=[],d=!1}else yield Mm([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 Am(c.closeInfo?.())}}}function Im(e,t){let{detect:n}=I(e.guardrails),r=dn(t,`live_user`,n),i=It(`live_user`,r),a=Wr(e.observability).include.guardrailMatchPreview,o=i?er(K(i),a):void 0;return{...r.text===void 0?{}:{text:Rt(r.text)},...o?{guardrail:o}:{}}}function Lm(e,t){let{detect:n}=I(e.guardrails),r=Wr(e.observability).include.guardrailMatchPreview,i=[],a=[];for(let e of[...ie].reverse()){if(t[e]===void 0)continue;let o=Xn({[e]:t[e]},()=>Ct(`context`,n));for(let e of o.events)a.push(er(K(e),r));let s=o.context?.[e];!o.blocked&&typeof s==`string`&&i.push(pn(e,s))}return{texts:i,guardrails:a}}var Rm=new Set([`text`,`thought`,`media`,`tool`]),zm=1e3;function Bm(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 Vm(e){try{let t=e.chunks.map(xn),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:_n(n)}]}catch{return e.chunks.map(t=>({type:`audio`,mimeType:e.mimeType,data:t}))}}var Hm=class{items=[];run;add(e){for(let t of e){let e=Bm(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:Vm(e)}:e)}};function Um(e){let t=j(e.setup),n=j(t?.sessionResumption);if(t&&n&&`handle`in n){let{handle:r,...i}=n;return{...e,setup:{...t,sessionResumption:i}}}let r=j(e.sessionResumptionUpdate);if(r&&`newHandle`in r){let{newHandle:t,...n}=r;return{...e,sessionResumptionUpdate:n}}return e}function Wm(e,t){return typeof t==`string`?{[e]:t}:{}}function Gm(e){if(e.type===`session`){let{session:t}=e;return t.kind===`turn_complete`?void 0:{kind:t.kind,...`timeLeftMs`in t?Je(`time_left_ms`,t.timeLeftMs):{}}}if(e.type!==`evidence`)return;let{evidence:t}=e;if(t.kind===`voice_activity`){let e=j(t.raw);return{kind:`voice_activity`,...Wm(`activity`,e?.type),...Wm(`audio_offset`,e?.audioOffset)}}if(t.kind===`session_resumption`)return{kind:`session_resumption`,...Je(`resumable`,t.resumable),handle_issued:!!e.sessionResumptionHandle}}var Km=class{tree;out;identity;root;bound;response;lastResponse;pendingFrames=[];pendingInput=new Hm;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=j(e.body);t&&this.row(t);return}let t=j(e.body);if(!t)return;let n=Um(t);`setup`in t?this.root.event(`theorem.wire.request`,{body:U(n)}):(this.pendingInput.add(Em(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:U(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`,E(e.guardrail))}outboundTime(e){this.response?.call.guardTime(`live_output`,e)}inboundCheck(e,t){this.root.event(`theorem.guardrail`,me(`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":wt(r.error)}:{},...i?{cause:`go_away`,...Je(`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=Jt(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&&fn(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:U(e.body)},e.timeUnixNano);this.pendingFrames=[];let r=te(this.tokens);this.root.set({...r?de(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`}):xe(this.root,n),this.write(this.tree.collect()),await this.writes}route(e){let t=Gm(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:(Hf(r.usage,e),r.call.observe(e),!r.answering&&(Rm.has(e.type)||n===`output_transcription`)&&(r.call.span.set({"gen_ai.response.time_to_first_chunk":r.call.span.msSinceStart()/zm}),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:U(Um(e))})}open(){if(this.response)return this.response;let e=this.bound;if(!e)throw new B(`internal`,`Live trace received a response before it was bound`);let t=Vf(e.system,{history:[],input:[]},this.held),n=this.pendingFrames[0]?.timeUnixNano,r,i=y((e,t)=>(r=Jt(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 B(`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:U(e.body)},e.timeUnixNano);let a={tree:r,call:i,usage:t,input:this.pendingInput,delivered:new mt,answering:!1,complete:!1};for(let e of this.pendingHeard)i.observe(e);return this.pendingFrames=[],this.pendingInput=new Hm,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 Yf(t.usage,n.generation):void 0;return r&&(this.held=await qf(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=Kr({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 qm(e,t,n){let{sink:r,policy:i}=xs({override:n,observability:t?.observability,guardrails:t?.guardrails}),a={"gen_ai.agent.name":e.profile,...Je(`gen_ai.conversation.id`,e.conversationId)};return new Km(Jt(`invoke_agent ${e.profile}`,{kind:`INTERNAL`,attributes:{"gen_ai.operation.name":`invoke_agent`,...a},links:Ke(e.links),...e.traceparent?{traceparent:e.traceparent}:{}}),{sink:r,policy:i,...e.metadata?{metadata:e.metadata}:{}},a)}function Jm(e,t){return e??(t?void 0:{unanswered:!0})}function Ym(e){return!(e instanceof B)||!e.copy?!1:`key`in e.copy?e.copy.key===`tool.execution_uncertain`:e.copy.some(e=>e.key===`tool.execution_uncertain`)}function Xm(e){return typeof e.state==`object`&&e.state.released===!0}function Zm(e){return e.phase===`complete`||e.phase===`error`||e.phase===`gate`}function Qm(e,t,n){let r=e.error?Ht(e.error):e.reason;return{type:`session`,session:{kind:`ended`,...t.timeLeftMs===void 0?{}:{timeLeftMs:t.timeLeftMs},message:W(`live.session_ended`,{},n),ended:{cause:`go_away`,code:e.code,closedAfterMs:t.closedAfterMs,...e.error?{errorKind:wt(e.error)}:{}}},...r?{errorInternal:r}:{}}}function $m(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 eh(e){if(e.type!==`live`)throw new B(`request`,`runSession requires profile.type 'live' (got '${e.type}' for ${e.id})`)}function th(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 B(`config`,`Profile ${e.id}: ${t}`)}return Br(t)}function nh(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 rh(e,t,n){let{greeting:r,resumed:i}=e.live;if(!t.providerState&&!t.history?.length)return r?kr(e,r,n,`live.greeting`):void 0;if(!(!i||(t.awayMs??0)<(i.afterMs??3e3)))return kr(e,i.prompt,n,`live.resumed.prompt`)}function ih(e,t){br(e,{profile:e.id,input:{context:t}})}function ah(e,t){return!t||!e.live?e:{...e,live:{...e.live,voice:t}}}function oh(e,t){return!t||t.length===0?e:{...e,input:t}}async function sh(e,t,n,r){if(n===`abort`)return Aa(e),t.filter(e=>e.type===`tool`||e.type===`session`||e.type===`done`&&e.interrupted===!0);let i=await xa(e,t);if(i.action===`withhold`)return r(),[...(i.events??[]).filter(e=>!ch(e)&&e.type!==`provider_checkpoint`),H(i.error)];let a=i.action===`emit`?i.events:[];if(n!==`complete`)return a;let o=a.filter(e=>!ch(e)),s=await ka(e);return s.action===`withhold`?(r(),[...o.filter(e=>e.type!==`provider_checkpoint`),...s.events??[],H(s.error)]):[...o,...s.action===`emit`?s.events:[],...a.filter(ch),{type:`done`,stop:{kind:`completed`}}]}function ch(e){return e.type===`session`&&e.session.kind===`turn_complete`}function lh(e){if(e.gated)return;let t=e.modelResult??(e.failure?He(e.failure):void 0);return t?L(t):void 0}function uh(e){let t=lh(e);return t===void 0?void 0:{text:Dm(t),parts:e.modelResult?.parts}}function dh(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[ve(r,t)]})}function*fh(e){for(;e.length>0;){let t=e.shift();t&&(yield t)}}function ph(e,t,n){return e.length>0?e:t===`abort`||n?[{type:`done`,stop:{kind:`interrupted`},interrupted:!0}]:[{type:`done`,stop:{kind:`completed`}}]}function mh(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 hh(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 N(e)}})}else i.push(a)}return i}function*gh(e,t){let n=e.filter(e=>e.type===`done`);for(let n of e)n.type!==`done`&&(yield er(n,t??!1));return n}function _h(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??Om(),v=new Map,y=!1,b=!1,x=[],C,w=Wr(t.observability).include.guardrailMatchPreview,T=`idle`,E=0,D,O=e.historySeed?.length?structuredClone(e.historySeed):[],ee=Promise.resolve(),k=e=>{let t=e.trim();t&&(O.push({role:`user`,content:t}),wn(a.request,t),Ii(o,t))},te=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})},ne=(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)},A=e=>{x.push(er(e,w));let t=C;C=void 0,t?.()};for(let t of e.requestEvents)A(t);let re=()=>x.length>0?Promise.resolve(`queued`):new Promise(e=>{C=()=>e(`queued`)}),ie=()=>{if(y)throw new B(`request`,`Live session is closed`)},oe=e=>{ie(),r.sendInput(e)},j=(e,t,n,i)=>{ne({name:t.name,callId:e,arguments:t.arguments},n,i),ie(),r.sendToolResponse(e,t.name,n,i)},se=(e,t,n,r)=>{clearTimeout(t.lapse),v.delete(e),j(e,t,n,r)},ce=(e,n,r)=>{let i=L(He(r));A(R({name:n.name,callId:e,operationId:n.operationId,activityFailed:Be(n.name,t.labels)},r,i)),se(e,n,i)},le=(e,n)=>{if(y||v.get(e)!==n||typeof n.state!=`object`)return;let{gate:r}=n.state,i=of(n.name,r.kind===`auth`?r.authChallenge.service:void 0,t.labels);ce(e,n,i)},ue=()=>{for(let e of v.values())clearTimeout(e.lapse)},de=(e,t,n,r,i)=>{let a=h===`answer`&&r.kind===`auth`&&i!==void 0;return!a&&!n?!1:(a&&j(e,t,i),clearTimeout(t.lapse),t.state={gate:r,createdAt:Date.now(),released:!0},t.lapse=setTimeout(()=>le(e,t),m),!0)},fe=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?se(e.callId,n,e.readBack):e.phase===`cancel`&&n.state!==`running`&&n.state!==`uncertain`&&v.delete(e.callId))}},pe=(e,t,n)=>{p.socketClosed(e,t,n),r.close(e,t)},me=e=>{if(e.type!==`done`)return e;let t=p.responseTraceparent();return t?{...e,traceparent:t}:e},he=async(e,n)=>{let r=Qc({...n,stage:e,step:Math.max(1,E),history:O,handlers:c?[c]:[],guardrails:t.guardrails,injectAllowed:ae(t),host:l,signal:s,span:p.root}),i=await r.next();for(;!i.done;)A(i.value),i=await r.next();return{abort:i.value.abort,inject:i.value.inject}},ge=e=>{let n=performance.now(),r=Im(t,e);return p.inboundCheck(performance.now()-n,r.guardrail),r.guardrail&&A(r.guardrail),r.text},_e=e=>{ih(t,e);let n=performance.now(),i=Lm(t,e);p.inboundCheck(performance.now()-n,i.guardrails[0]);for(let e of i.guardrails)A(e);for(let e of i.texts)wn(a.request,e),Ii(o,e),ie(),r.sendContext(e)},ve=e=>{let t=ge(e);t!==void 0&&(k(t.slice(cn.length+1,-(un.length+1))),oe({type:`text`,text:t}))},M=(e,n,r)=>{let i=[];for(let a of n){let n=$m(a.messages);if(!n)A({...Gc(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)Gr(t,`text`),ve(e);i.push(a)}}let a=qc(e,i,r);a&&A(a)},ye=async e=>{let t=we(e);T=`idle`,A({type:`done`,stop:t,interrupted:!0}),await he(`post_turn`,{stop:t})},N=async()=>{if(T===`open`)return{aborted:!1};T=`open`,E+=1,D=void 0,o.remote.clear();let e=await he(`pre_turn`);return e.abort?(await ye(e.abort),{aborted:!0}):(M(`pre_turn`,e.inject),{aborted:!1})},be=async function*(e){if(T!==`open`){for(let t of e)yield t;return}let t=await he(`before_end`,{stop:e.find(e=>e.type===`done`)?.stop});if(t.abort){yield{type:`done`,stop:{kind:`cancelled`},interrupted:!0},await he(`post_turn`,{stop:{kind:`cancelled`}}),T=`idle`;return}M(`before_end`,t.inject);for(let t of e)yield t;let n=e.find(e=>e.type===`done`);await he(`post_turn`,{stop:n?.stop}),T=`idle`},P=e=>{let t=async()=>{await e(),await r.flush?.()},n=ee.then(t,t);return ee=n.then(()=>void 0,()=>void 0),n},F=async(n,r,a,m,h)=>{let y=r.state,b=Xm(r);r.state=`running`;let x=h.host??l,C=p.toolRecord(n),w=!1,ee=df({onDispatch:()=>{w=!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:Jm(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:ae(t),host:x,signal:s},scope:i.context,openSpan:C.open,readBack:uh}),k;try{for(;;){let e=await ee.next();if(e.done){k=e.value;break}A(e.value)}}catch(e){let n=w||Ym(e);throw r.state=n?`uncertain`:y,n?new B(`unavailable`,W(`tool.execution_uncertain`,{},t.labels),{copy:{key:`tool.execution_uncertain`},cause:e}):e}finally{C.finish()}if(k.gated)return de(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:W(`session.tool_aborted`,{tool:r.name},t.labels)}:k.failure;if(k.callNotStarted&&e)ce(n,r,e);else{let e=lh(k);e===void 0?v.delete(n):se(n,r,e,k.modelResult?.parts)}let{aborted:i}=k;return await P(async()=>{T===`open`&&await ye(i)}),{outputRaw:k.outputRaw,outputModel:k.modelResult,failure:e,awaiting:k.awaiting}}k.modelResult?.provenance&&(D=S(D,k.modelResult.provenance,k.modelResult.suspicious),zi(o,k.modelResult,k.modelResult.provenance));let{pendingInject:te}=k;te&&await P(async()=>{(await N()).aborted||M(`post_tool`,te,{callId:n,toolName:r.name})});let ne=lh(k);return ne===void 0?v.delete(n):se(n,r,ne,k.modelResult?.parts),{outputRaw:k.outputRaw,outputModel:k.modelResult,failure:k.failure,awaiting:k.awaiting}},xe=async(...e)=>{let t=await F(...e);return await r.flush?.(),t},Se=e=>new B(`request`,`gate ${e} expired`,{copy:{key:`session.gate_expired`}}),Ce=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 B(`request`,`call ${e} is not waiting to run`);if(n!==void 0&&n!==r.operationId)throw new B(`request`,W(`session.gate_expired`,{},t.labels),{copy:{key:`session.gate_expired`}});if(r.state===`uncertain`)throw new B(`unavailable`,W(`tool.execution_uncertain`,{},t.labels),{copy:{key:`tool.execution_uncertain`}});if(Ce(r))throw Xm(r)?le(e,r):await xe(e,r,r.arguments,Xr({decision:`abandon`}),{}),Se(e);return r},Ee=n=>{if(n.type!==`tool`||n.tool.phase!==void 0)return n;let{name:r,arguments:a}=n.tool,o=uf({tools:e.tools,profile:t,name:r,input:a,scope:i.context});return{...n,tool:{...n.tool,arguments:o}}},De=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 B(`bad_response`,W(`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}}});fe(r);let a=dh(r.filter(e=>e.type!==`tokens`),f).map(Ee),o=performance.now(),s=await sh(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);mh(s,k,te);let c=yield*gh(await hh(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=ph(c,e.turnPhase,u);for await(let e of be(t))yield er(me(e),w);yield*fh(x)}else if(c.length>0)for(let e of c)yield er(me(e),w)},Oe=async function*(){let e=`host`,n,i=r.batches(),a;try{for(;;){a??=i.next();let n=await Promise.race([a,re()]);if(V(s),n===`queued`){yield*fh(x);continue}if(a=void 0,n.done)break;let r=n.value;if(p.receive(r),yield*fh(x),r.type===`closed`){r.goAway?yield Qm(r,r.goAway,t.labels):r.error&&(yield H(r.error));break}if(r.type===`error`){e=`theorem`,yield H(r.error);break}if(r.type!==`row`&&(yield*De(r),b)){e=`theorem`;break}}yield*fh(x)}catch(e){throw n=e,e}finally{y=!0,ue(),b?pe(1011,`guardrail withheld`,e):pe(1e3,`session-closed`,e),await i.return(void 0),await p.close({thrown:n})}},ke={profileId:t.id,canary:n,async*events(){for await(let e of Oe()){let n=Kt(e,t.labels);p.delivered(n),yield n}},sendAudio(e){return P(async()=>{e.data&&(Gr(t,`audio`),!(await N()).aborted&&oe({type:`audio`,mimeType:e.mimeType,data:e.data}))})},sendVideo(e){return P(async()=>{Gr(t,`video`),!(await N()).aborted&&oe({type:`video`,mimeType:e.mimeType,data:e.data})})},sendText(e){return P(async()=>{Gr(t,`text`),!(await N()).aborted&&ve(e)})},sendContext(e){return P(()=>(_e(e),Promise.resolve()))},async executeTool({callId:e,operationId:t,decision:n,input:r,secret:i,credentials:a,host:o,page:s}){ie();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 B(`request`,`call ${e} is not waiting on a gate; it takes no decision, input, or secret`);return await xe(e,c,c.arguments,void 0,{credentials:a,host:o,page:s})}if(n===void 0)throw new B(`request`,`call ${e} is waiting on a gate; answer it with a decision`);let u=oi({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 xe(e,c,u.input,u.resume,{credentials:a,host:o,page:s})},answerToolCall({callId:e,events:n}){ie();let r=v.get(e);if(!r||r.state!==`open`&&!Xm(r))throw new B(`request`,`call ${e} is not waiting for an answer`);if(Ce(r))throw le(e,r),Se(e);let i;for(let a of n)if(a.type===`tool`){if(a.tool.phase===void 0||a.tool.callId!==e)throw new B(`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 B(`request`,W(`session.gate_expired`,{},t.labels),{copy:{key:`session.gate_expired`}});Zm(a.tool)&&(i=a.tool)}if(!i)throw new B(`request`,`the run answering call ${e} settled nothing`);let a=()=>{for(let e of n)e.type!==`done`&&A(e)};if(i.phase===`gate`)return a(),de(e,r,Xm(r),i.gate,i.readBack),{gated:i.gate};let{readBack:o}=i;if(o===void 0)throw new B(`request`,`the run answering call ${e} carries no readBack`);return a(),se(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,ue(),pe(1e3,e,`host`)),await r.flush?.(),p.close({})}},{initialContext:Ae,opening:je}=e;return(e.openInitialCycle||Ae||je)&&P(async()=>{if(Ae&&_e(Ae),!e.openInitialCycle&&!je)return;let t=await N();je&&!t.aborted&&oe({type:`text`,text:je})}),ke}async function vh(e,t,n,r){let i=qm(t,e.profiles.find(t.profile),r);try{return await yh(e,t,n,i)}catch(e){throw await i.close({thrown:e}),e}}async function yh(e,t,n,r){let i=Zr(`runSession`,n.gateTtlMs),a=nh(t),{request:o,events:s,refusal:c}=Vn(a,e.profiles.get(a.profile));if(c)throw c;V(o.signal);let{profile:l,generation:u}=Nr(e,o);eh(l),t.context&&ih(l,t.context),t.snapshot&&(u.tools=th(l,t.snapshot)),u.builtins=u.tools.builtins;let d=ah(u,t.voice),f=!!(t.input&&t.input.length>0);d=oh(d,t.input);let p=Kn(d.resolvedSystem,[kn(d.canary,l.labels),hn(l.labels),l.inputs?.context?On(l.labels):``]),m={...dl(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 _=bi();Ri(_,m,g.own),Li(_,t.history??[],g.own);let v=await da(l,d.canary||void 0,p.private,g,fr(e.tools,l));$o(l.providerContinuation,t.providerState,t.history);let y=await Fm(e.providers.require(h.provider,h.apiId),{...h},m,n,t.providerState,l.providerContinuation);return r.setup(y.setup),_h({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:rh(l,t,o.input?.slots),trace:r,agents:xm(e,t,n,r.agentCanaries),gateTtlMs:i,signInGate:n.signInGate??`hold`})}function bh(e){return{profile:e.profile,path:e.path,sessionPermissions:e.sessionPermissions,input:e.turnInput,model:e.model,host:e.host}}async function xh(e,t,n){let r=bh(t);if(n.type===`decision`||n.type===`embedding`)throw new B(`request`,`Profile ${n.id}: type 'decision' cannot invoke tools`);let i=n.type===`host`?void 0:_r(n,t.model);return await Hr(e.tools,n,r,i)}async function*Sh(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=Jt(n,{attributes:{"gen_ai.agent.name":t.profile,...Je(`gen_ai.conversation.id`,t.conversationId)},links:Ke(t.links),...t.traceparent?{traceparent:t.traceparent}:{}}),l=[];try{let e=a?.labels;for await(let t of i.events(c,l))yield er(Kt(t,e),s.include.guardrailMatchPreview);i.ended?.(c)}catch(e){throw i.failed(c,e),e}finally{await ps(o,Kr({spans:c.collect(),policy:s,canaries:l,...t.metadata?{metadata:t.metadata}:{}}),s)}}function Ch(e,t,n){return r=>gt(e,{name:t.name,callId:n,call:{arguments:Re(Hn(t.input))}}).end(r)}async function wh(e,t){let n=e.profiles.get(t.profile);return{profile:n,snapshot:t.snapshot?Br(t.snapshot):await xh(e,t,n)}}function Th(e,t,n){return Eh(e,t,n).events}function Eh(e,t,n){let r=t.callId??ct(t.name),i={...t,operationId:t.operationId??crypto.randomUUID()},a=e=>(t,n)=>(e.root.set(n),e.root),o=Sh(e,i,be(i.name),n,{events:(t,n)=>Ah(e,i,r,a(t),Ch(a(t),i,r),t.root.traceparent(),n),failed:(e,t)=>Ch(a(e),i,r)(fn(t)?{outcome:`cancelled`}:{outcome:`error`,thrown:t})});return{name:i.name,callId:r,events:o}}function Dh(e,t,n){return Oh(e,t,n).events}function Oh(e,t,n){let{calls:r,...i}=t,a=r.map(e=>{let t=e.callId??ct(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=Sh(e,t,`tool_step ${t.profile}`,n,{events:(n,r)=>kh(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)=>{fn(t)?e.root.end():xe(e.root,t)}});return{calls:a.map(({callId:e,invoke:t})=>({name:t.name,callId:e})),events:o}}async function*kh(e,t,n,r,i,a){let{profile:o,snapshot:s}=await wh(e,t),c=crypto.randomUUID();for(let{callId:e,invoke:t,announce:r}of n)r&&(yield Ve({name:t.name,callId:e,operationId:t.operationId},Re(t.input),{stepId:c,stepCallCount:n.length}));let l=wf(n.map(({callId:e})=>e),Pn(o)===!0,t.signal),u={stepCalls:n.map(({callId:e,invoke:t})=>({callId:e,tool:t.name,input:Re(t.input)})),wait:l.wait},d=!1;try{d=(yield*Ef(n.map(({callId:t,invoke:n})=>Tf(l,t,()=>jh(e,n,o,s,t,r,Ch(r,n,t),a,u))))).some(e=>e?.gated!==void 0)}catch(e){yield H(e)}yield ve({stop:{kind:d?`gate`:`completed`},traceparent:i},s)}async function*Ah(e,t,n,r,i,a,o){let{profile:s,snapshot:c}=await wh(e,t);t.callId===void 0&&(yield Ve({name:t.name,callId:n,operationId:t.operationId},Re(t.input)));let l=!1;try{l=(yield*jh(e,t,s,c,n,r,i,o)).gated!==void 0}catch(e){yield H(e)}yield ve({stop:{kind:l?`gate`:`completed`},traceparent:a},c)}function jh(e,t,n,r,i,a,o,s,c){return bl(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=>Mh(e,t,n,r,i,a,o,s,l,c),i=>ef({outcome:i,tools:e.tools,profile:n,name:t.name,resume:t.resume,snapshot:r}))}async function*Mh(e,t,n,r,i,a,o,s,c,l){if(t.promoted?.length){let{failure:a}=nr(e.tools,r,t.promoted,n);if(a)return o({outcome:`error`,failure:a}),yield R({name:t.name,callId:i,operationId:t.operationId,activityFailed:Be(t.name,n.labels)},a),{failure:a,callNotStarted:!0}}let u=t.onStage?[t.onStage]:[];return yield*df({tools:e.tools,beginBody:c,agents:bm(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 Nh(e){return e.phase===`complete`||e.phase===`gate`||e.phase===`error`}function Ph(e,t){t.phase===`running`&&(e.activity=t.activity??e.activity),Nh(t)&&(e.settled=t)}function Fh(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??W(`tool.did_not_run`,{tool:e.name})}},events:e.events,...e.activity?{activity:e.activity}:{}}}async function Ih(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&&Ph(t,r.tool);return Fh(t,n)}async function*Lh(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),Ph(o,a.tool),o.settled&&!r.has(e)&&(r.add(e),yield{...Fh(o,i),index:e}))}for(let[e,n]of t.entries())r.has(e)||(yield{...Fh(n,i),index:e})}function Rh(e,t,n){try{return nc(e,t.profile,t.model,n,t)}catch(e){return{complete(){throw e}}}}function zh(){let e=mi();return{providers:e.providers,tools:e.tools,profiles:e.profiles,schemas:e.schemas,runTurn:(t,n={},r)=>gm(e,t,Rh(e,t,n),r),runSession:(t,n,r)=>vh(e,t,n,r),compactHistory:(t,n={},r)=>Tm(e,t,nc(e,t.profile,t.model,n),r),invokeTool:(t,n)=>Th(e,t,n),invokeToolStep:(t,n)=>Dh(e,t,n),runTool:(t,n)=>Ih(Eh(e,t,n)),runToolStep:(t,n)=>Lh(Oh(e,t,n)),resolveTurn:t=>Nr(e,t),projectProfile:t=>vr(e,t),runDecision:(t,n)=>Ks(e,t,n),runEmbedding:(t,n={})=>tc(e,t,n)}}zh();function Bh(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 Vh(e,t,n){let r=Ue({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 Bh(i);r||(yield{type:`done`,stop:{kind:`completed`}})}})});return _e({id:e,name:`Scripted`,description:`Answers with a scripted model.`,serves:()=>[{protocol:r,baseUrl:`https://scripted.invalid`}]})}function Hh(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(Vh(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 Uh(e,t){let n=t?.providers?.local?.baseUrl;for(let t of x)oe(e.providers,t.definition===`local`&&n?{...t,connection:{baseUrl:g(n)}}:t);for(let n of t?.providerDefinitions??[])e.providers.register(n)}function Wh(e,t){return async n=>await t.onAgentCall?.(n)||{provider:Hh(t,e,e.profiles.get(n.profile))}}function Gh(e,t){return ue.indexOf(e??`off`)>ue.indexOf(t)?e:t}function Kh(e,t){if(t.mode!==`demo`||t.keys.holds.afterRemoteRead===`off`)return e;let n=Gh(e.taint?.afterRemoteRead,t.keys.holds.afterRemoteRead);return n===e.taint?.afterRemoteRead?e:{...e,taint:{...e.taint,afterRemoteRead:n}}}function qh(e,t){switch(ui(t)){case`public`:return{...e,network:void 0};case`none`:return{...e,network:{allowedSchemes:[]}};case`asWritten`:return e}}function Jh(e,t){return e.type===`speech`||e.type===`decision`||e.type===`embedding`?e:e.type===`host`?{...e,guardrails:qh(e.guardrails??{},t)}:{...Yh(e,t),guardrails:Kh(qh(e.guardrails??{},t),t)}}function Yh(e,t){if(e.type!==`live`||t.mode!==`demo`)return e;let n=e.live?.contextCompression;if(!n)return e;let r=li(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 Xh(t){if(!Zh(t))return t;let{compileDetect:n}=await e(async()=>{let{compileDetect:e}=await import(`./compile-egress-BRGW9qfO.js`);return{compileDetect:e}},__vite__mapDeps([0,1,2]));return Qh(t,n)}function Zh(e){let t=e.guardrails&&`detect`in e.guardrails?e.guardrails.detect:void 0;return typeof t==`object`&&xt(t)}function Qh(e,t){if(!Zh(e))return e;let n=e.guardrails;return{...e,guardrails:{...n,detect:t(n.detect)}}}async function $h(t){let n=t.flatMap(e=>[`input`,`output`].flatMap(t=>eg(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-BRGW9qfO.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 B(`request`,`${e}: the pattern /${i}/ in its ${t} schema ${n}`)}}function eg(e){return Array.isArray(e)?e.flatMap(eg):!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):[],...eg(t)])}function tg(e){try{return e()}catch(e){throw e instanceof B&&e.kind===`config`?new B(`request`,e.message,{cause:e}):e}}var ng=(e=>tg(()=>rr(e)));async function rg(e,t,n,r,i){if(Mn(t).length>32)throw new B(`request`,`The studio supports up to 32 key slots.`);await $h(n);let a=ng(Jh(await Xh(t),i));if(a.type!==`host`)for(let t of Object.values(a.models)){let n=dt({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 B(`request`,n.message)}return tg(()=>jr(e,a,n,r,i.toolHandlers))}async function ig(e,t,n,r,i=[]){let a=zh();Uh(a,r);for(let e of i)await rg(a,e.profile,e.customTools,e.structured,r);return{scope:a,profile:await rg(a,e,t,n,r)}}var ag=`studioRun`;function og(){let e=new Map;return{sink:{write:t=>{let n=t.metadata?.[ag];return typeof n==`string`&&e.get(n)?.(t),Promise.resolve()}},route(t){let n=globalThis.crypto.randomUUID();return e.set(n,t),{metadata:{[ag]:n},close:()=>{e.delete(n)}}}}}var sg={maxGates:32,maxOperations:128,maxCheckpoints:256,maxPermissions:2048,maxStateBytes:33554432,maxInvocationBytes:262144,maxOutcomeBytes:262144};function cg(e={}){let t={...sg,...e};if(Object.keys(e).some(e=>!Object.hasOwn(sg,e))||Object.values(t).some(e=>!Number.isSafeInteger(e)||e<=0))throw new B(`config`,W(`error.config`),{cause:{code:`session_limits`}});return t}function lg(e){return new TextEncoder().encode(JSON.stringify(e)).byteLength}function ug(){throw new B(`unavailable`,W(`error.unavailable`),{cause:{code:`session_state_capacity`}})}function dg(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)&&ug();for(let e of n)lg(e)>t.maxInvocationBytes&&ug();let i=n.length*t.maxOutcomeBytes;for(let e of r)e.status!==`ready`&&e.invocation&&lg(e.invocation)>t.maxInvocationBytes&&ug(),e.status===`settled`?lg(e.outcome)>t.maxOutcomeBytes&&ug():(i+=t.maxOutcomeBytes,e.status===`ready`&&lg(e)>t.maxInvocationBytes&&ug());lg(e)+i>t.maxStateBytes&&ug()}var fg=864e5,pg=t({data:f(),mimeType:f(),name:f().optional()}),mg=t({text:f().optional(),role:f().optional(),slots:p(f(),f()).optional(),context:t({client:O.optional(),server:O.optional()}).optional(),attachments:s(r([pg,t({uri:f(),mimeType:f(),name:f().optional()})])).optional(),voice:s(pg).optional(),history:s(b).optional(),repair:t({previousOutput:f(),rejection:f(),guidance:f()}).optional(),historyTokens:d().nonnegative().optional(),inputTokens:d().nonnegative().optional()}),hg=t({profileId:f().min(1),operationId:f().min(1).max(256),callId:f().min(1),name:f().min(1),arguments:F,gate:t({kind:l(Xe),permission:l(Le).optional(),auth:t({slot:f().min(1),authType:l(Fe),service:f().min(1)}).optional()}).superRefine((e,t)=>{e.kind===`auth`!=(e.auth!==void 0)&&t.addIssue({code:`custom`,path:[`auth`]})}),snapshot:ne.optional(),promoted:s(f().min(1)),turnInput:mg,model:f().optional(),createdAt:d().finite().nonnegative(),expiresAt:d().finite().nonnegative().optional()}),gg=t({input:F,resume:t({granted:i().optional(),gateKind:l(Xe).optional(),cause:l([`declined`,`abandoned`,`expired`]).optional(),signIn:i().optional(),edited:t({from:F}).optional()}),sessionPermissions:s(f().min(1)),page:r([t({output:O}),t({timedOut:o(!0)}),t({unanswered:o(!0)})]).optional()}),_g={operationId:f().min(1).max(256),callId:f().min(1),profileId:f().min(1),toolId:f().min(1),invocationHash:f().min(1),invocation:fl.optional()},vg=t({grantId:f().min(1),expiresAt:d().finite().positive(),resultHash:f().optional()}),yg=u(`status`,[t({status:o(`ready`),profileId:f().min(1),pending:hg,answer:gg,readyAt:d().finite().nonnegative()}),t({..._g,status:o(`running`),pageGrant:vg.optional(),claimToken:f().min(1),startedAt:d().finite().nonnegative()}),t({..._g,status:o(`settled`),pageGrant:vg.optional(),outcome:hl,settledAt:d().finite().nonnegative(),retainUntil:d().finite().nonnegative().optional()}),t({..._g,status:o(`uncertain`),pageGrant:vg.optional(),claimToken:f().min(1),reason:l([`execution_interrupted`,`settlement_write_failed`,`worker_lost`]),detectedAt:d().finite().nonnegative()})]),bg=t({version:o(3),operations:p(f().min(1),yg),permissions:s(f().min(1)),gates:p(f().min(1),hg),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 xg(){return{version:3,operations:{},permissions:[],gates:{},providerCheckpoints:[]}}function Sg(e,t,n){return Object.fromEntries(Object.entries(e).filter(([,e])=>e.expiresAt===void 0?!Qr(e.createdAt,t,n):t<e.expiresAt))}function Cg(e){let t=e.ttlMs??864e5,n=e.maxSessions??1e4;if(!Number.isFinite(t)||t<=0||!Number.isSafeInteger(n)||n<=0)throw new B(`config`,W(`error.config`),{cause:{code:`session_store_options`,ttlMs:t,maxSessions:n}});return{ttlMs:t,maxSessions:n}}function wg(e={}){let{ttlMs:t,maxSessions:n}=Cg(e),r=cg(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=bg.parse(s);if(dg(l,r),!c&&i.size>=n){let e=[...i].find(([,e])=>!a(e));if(!e)throw new B(`unavailable`,W(`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 Tg=m({events:s(yt),base:s(b),baseEvents:d().int().nonnegative(),workedMs:d().nonnegative(),endedAt:d(),model:f().optional(),effort:f().optional()}),Eg=m({version:o(1),transcript:s(qn),history:s(b),providerState:C.optional(),inputTokens:d().optional(),historyTokens:d().optional(),paused:Tg.optional()});function Dg(){return{version:1,transcript:[],history:[]}}function Og(e){return new B(`request`,W(`session.conversation_unknown`),{copy:{key:`session.conversation_unknown`},...e===void 0?{}:{cause:e}})}function kg(e){let t=e.keys[e.keyVersion];if(t===void 0)throw new B(`config`,W(`error.config`),{cause:{code:`conversation_seal_key_missing`,keyVersion:e.keyVersion}});return{async read(t,n){let r=await Yr({sealed:n,keys:e.keys,binding:[t]}).catch(()=>void 0);if(r!==void 0)return{revision:n,conversation:Eg.parse(JSON.parse(r))}},async write(n,r,i,a){if(r!==i)return{written:!1};let o=Eg.parse(a),s=await qr({plaintext:JSON.stringify(o),key:t,binding:[n],keyVersion:e.keyVersion});return{written:!0,ref:s,revision:s}}}}function Ag(e,t){let n={...e===void 0?{}:{client:e},...t===void 0?{}:{server:t}};return Object.keys(n).length>0?n:void 0}function jg(e,t){let{context:n,...r}=e,i=Ag(n,t);return i?{...r,context:i}:r}function Mg(e,t){let n=Ag(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 Ng(e,t){return di(e.paused?.events??[]).some(e=>e.callId===t.callId&&e.operationId===t.operationId)}function Pg(e){let{profile:t,clientEvents:n}=e;return{sessionId:e.sessionId,store:e.store,showThoughts:ei(t.outputs),forReader:e=>xr(e,n),failureText(e){let r=xr(Kt(e,t.labels),n);return r.type===`error`&&r.error?r.error:W(`error.${e.errorKind}`,{},t.labels)}}}async function Fg(e,t,n,r){let i=await Ig(e,t,r);return n.kind===`message`&&Qg(i.conversation,n.abandon),n.kind===`answer`&&$g(i.conversation,n.call),n.kind===`rewind`&&a_(i.conversation,n.at),i}async function Ig(e,t,n){if(t===void 0){if(n)throw new B(`request`,`a transcript restores a conversation the host lost, and this message names none`);return{ref:null,revision:null,conversation:Dg()}}let r=await e.store.read(e.sessionId,t);if(r)return{ref:t,revision:r.revision,conversation:r.conversation};if(!n)throw Og();let{conversation:i,events:a}=Lg(n.profile,n.blocks);return{ref:null,revision:null,conversation:i,events:a}}function Lg(e,t){let{request:n,events:r,refusal:i}=Vn({profile:e.id,input:{history:fi(t)}},e);if(i)throw i;return{conversation:{...Dg(),transcript:[...t],history:n.input?.history??[]},events:r}}async function Rg(e,t,n){let{conversation:r,events:i}=Lg(t,n),a=await e.store.write(e.sessionId,null,null,r);if(!a.written)throw new B(`unavailable`,`the conversation store did not keep the new conversation`);return{ref:a.ref,view:{transcript:[...n]},events:i}}function zg(e,t){return ai(t.map(t=>e.forReader(t)),{showThoughts:e.showThoughts})}function Bg(e,t){let{paused:n}=t;return{transcript:t.transcript,...n?{paused:{events:n.events.map(t=>e.forReader(t)),blocks:pi(zg(e,n.events),{workedMs:n.workedMs,endedAt:n.endedAt})}}:{}}}async function $(e,t,n){let r=await e.store.write(e.sessionId,t.ref,t.revision,n);if(!r.written)throw new B(`unavailable`,`the conversation changed while this reply ran`,{cause:{code:`conversation_conflict`}});return{ref:r.ref,revision:r.revision,conversation:n}}function Vg(e,t){return e.ref===null?[]:[{type:`conversation`,ref:e.ref,...t?{posted:!0}:{}}]}function Hg(e){return gi(e.base,e.events.slice(e.baseEvents))}function Ug(e,t){let n=_i({...hi(),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 Wg(e,t,n,r=e=>e){let{paused:i,providerState:a,...o}=t;return{...o,...Ug(t,n.events),transcript:[...t.transcript,...pi(r(zg(e,n.events)),{workedMs:n.workedMs,endedAt:Date.now()})],history:Hg(n)}}function Gg(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,...Ug(e,t.events),paused:r}}function Kg(e,t,n,r){let i=Wg(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 qg(e,t,n){return Wg(e,t,n,yi)}async function*Jg(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){if(u=await $(e,u,r.signal.aborted?qg(e,o,c()):Kg(e,o,c(),H(t))),yield*Vg(u),!r.signal.aborted)throw t;return}let d=c();if(r.signal.aborted)u=await $(e,u,qg(e,o,d));else if(l)u=await $(e,u,Kg(e,o,d,l));else if(di(d.events).length)u=await $(e,u,Gg(o,d,r));else{u=await $(e,u,Wg(e,o,d)),yield*Vg(u);let t=await Yg(e,u,d,r,a);t&&(yield*Vg(t));return}yield*Vg(u),l&&(yield l)}async function Yg(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=Hg({...n,base:i(s),baseEvents:0});return $(e,t,{...t.conversation,history:c})}function Xg(e){let t;try{t=xn(e.data).length}catch{throw new B(`request`,W(`error.request`),{cause:{code:`request_file_encoding`}})}return{name:e.name,mimeType:e.mimeType,sizeBytes:t,data:e.data}}function Zg(e,t,n){let r=ti(e.inputs,{...t.text===void 0?{}:{text:t.text},...t.attachments?{attachments:t.attachments.map(Xg)}:{},...t.voice?{voice:t.voice.map(Xg)}:{}},e.guardrails);if(!r.ok)throw Nn(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:jg(o===void 0?a:{...a,text:o},n)}}function Qg(e,t){let n=di(e.paused?.events??[]);if(n.length&&!t)throw new B(`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=>Ng(e,t)))throw new B(`request`,`the message walks away from calls the reply is not waiting on`,{copy:{key:`session.gate_expired`}})}function $g(e,t){if(!Ng(e,t))throw new B(`request`,`the reply is not waiting on ${t.callId}`,{copy:{key:`session.gate_expired`}})}async function*e_(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=>$r(e,n.callId)))throw new B(`internal`,`walked-away call ${n.callId} ended without settling`)}return void 0}function t_(e){return{base:e.base,events:[...e.events],baseEvents:e.baseEvents,workedMs:e.workedMs}}function n_(e){return new B(e.errorKind,e.error??W(`error.${e.errorKind}`))}async function*r_(e){let{host:t,message:n,runner:r}=e,{events:i=[],...a}=e.opened,o=a;yield*i;let{paused:s}=o.conversation;if(Qg(o.conversation,e.walkAway),s){let n=t_(s),r=yield*e_(n,e.walkAway??[]);if(r){o=await $(t,o,{...o.conversation,paused:{...s,events:n.events,endedAt:Date.now()}}),yield*Vg(o),yield r;return}o={...o,conversation:Wg(t,o.conversation,n)}}let{conversation:c}=o,l=e=>vi(e,n.draft,n.media);o=await $(t,o,{...c,transcript:[...c.transcript,...n.blocks],history:l(c.history)}),yield*Vg(o,`posted`);let u={base:l(c.history),events:[],baseEvents:0,workedMs:0};yield*Jg(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*i_(e){let{host:t,runner:n}=e,r=e.opened;$g(r.conversation,e.call);let{paused:i,...a}=r.conversation;if(!i)return;let o=t_(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,c||di(o.events).length){let n=o.events.some(t=>$r(t,e.call.callId)),a=c&&!n?i.events:o.events;r=await $(t,r,{...r.conversation,paused:{...i,events:a,workedMs:o.workedMs,endedAt:Date.now()}}),yield*Vg(r),c&&(yield c)}else yield*Jg(t,{...r,conversation:a},o,{...n,model:n.model??i.model,effort:n.effort??i.effort},{history:Hg(o),...a.inputTokens===void 0?{}:{inputTokens:a.inputTokens},...a.historyTokens===void 0?{}:{historyTokens:a.historyTokens}},e=>e)}function a_(e,t){if(!(Number.isSafeInteger(t)&&t>=-1&&t<e.transcript.length))throw new B(`request`,`no transcript block ${t} to rewind to`)}async function o_(e){let{host:t,opened:n,at:r}=e,{conversation:i}=n;if(a_(i,r),Qg(i,e.walkAway),i.paused){let n=t_(i.paused),r=e_(n,e.walkAway??[]),a=await r.next();for(;!a.done;)a=await r.next();if(a.value)throw n_(a.value);i=Wg(t,i,n)}let a=i.transcript.slice(0,r+1);return $(t,n,{version:1,transcript:a,history:fi(a)})}function s_(e){if(!e.operationId)throw new B(`internal`,W(`error.internal`));return e.operationId}function c_(e){return di(e.paused?.events??[]).map(e=>({callId:e.callId,operationId:s_(e)}))}function l_(e){return new B(`request`,`a stateless chat keeps no conversation to ${e}`)}var u_=t({callId:f().min(1),operationId:f().min(1).max(256),grantId:f().min(1),page:r([t({output:O}),t({unanswered:o(!0)}),t({timedOut:o(!0)})])});function d_(){throw new B(`unavailable`,W(`tool.execution_uncertain`),{copy:{key:`tool.execution_uncertain`}})}function f_(e=128){if(!Number.isSafeInteger(e)||e<=0)throw new B(`config`,W(`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)&&d_();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 B(`unavailable`,W(`tool.execution_uncertain`)))}}}function p_(e,t,n,r=2e4){if(!Number.isSafeInteger(r)||r<=0||r>2147483647)throw new B(`config`,W(`error.config`));return{execution:{async dispatch(i,a){i.invocation||d_();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)&&d_(),t.pageGrant={grantId:o,expiresAt:s}})}catch(e){throw c.cancel(),e}let l=s-Date.now();(l<=0||a?.aborted)&&(c.cancel(),d_());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=u_.parse(r),a=await pl(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)&&d_(),t.pageGrant.resultHash===void 0?((t.status!==`running`||Date.now()>=t.pageGrant.expiresAt)&&d_(),t.pageGrant.resultHash=a,{duplicate:!1,settled:!1}):(t.pageGrant.resultHash!==a&&d_(),t.status===`uncertain`&&d_(),{duplicate:!0,settled:t.status===`settled`})});return o.duplicate||await n.deliver(t,i.grantId,i.page),o.settled}}}function m_(e,n,r,i){if(typeof e.compareAndSwap!=`function`)throw new B(`config`,W(`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=bg.safeParse(a===void 0?xg():a.state);if(!o.success||a!==void 0&&(typeof a.revision!=`string`||!a.revision))throw new B(`config`,W(`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=Sg(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);dg(u,i);let f=bg.safeParse(u);if(!f.success)throw new B(`config`,W(`error.config`),{cause:{code:`session_store_transition`}});let p=a.safeParse(await e.compareAndSwap(t,l,f.data));if(!p.success)throw new B(`config`,W(`error.config`),{cause:{code:`session_store_write_result`}});if(p.data.written){if(p.data.revision===l)throw new B(`config`,W(`error.config`),{cause:{code:`session_store_revision`}});return d}}throw new B(`unavailable`,W(`error.unavailable`),{cause:{code:`session_store_contention`}})}}}var h_=`theorem_session`,g_=/^[A-Za-z0-9_-]{32,128}$/,__=2592e3;function v_(e,t){for(let n of(e.headers.get(`cookie`)??``).split(`;`)){let[e,...r]=n.trim().split(`=`);if(e===t)return r.join(`=`)}}function y_(){return Jr(crypto.getRandomValues(new Uint8Array(32)))}function b_(e){let t=v_(e,h_);return t&&g_.test(t)?t:void 0}function x_(e){let t=b_(e);if(t)return{id:t};let n=y_();return{id:n,setCookie:`${h_}=${n}; Path=/; Max-Age=${__}; HttpOnly; SameSite=Lax${new URL(e.url).protocol===`https:`?`; Secure`:``}`}}var S_=16777216;function C_(e=S_){if(!Number.isSafeInteger(e)||e<=0)throw new B(`config`,W(`error.config`));return e}function w_(e,t,n){let r=e.safeParse(t);if(!r.success)throw new B(`request`,`${n} failed its check: ${wr(r.error)}`);return r.data}function T_(e){let t=C_();if(e.length>t||new TextEncoder().encode(e).byteLength>t)throw new B(`request`,W(`error.request`));try{return JSON.parse(e)}catch{throw new B(`request`,W(`error.request`),{cause:{code:`request_json`}})}}function E_(e){return w_(ci,T_(e),`live message`)}function D_(e){return w_(si,T_(e),`live open message`)}var O_=new Set([`pre_turn`,`post_tool`,`before_end`]);function k_(e){let t=e.inject.filter(e=>e.role===`user`);if(!t.length)throw new B(`request`,`inject must contain user messages`);return{id:e.id,messages:t}}function A_(e,t){return async({stage:n})=>{if(!O_.has(n))return;let r=await e.consume(t);return r?{inject:r.messages,injectId:r.id}:void 0}}function j_(){let e=new Map;return{open(t){e.has(t)||e.set(t,{queue:[],stopped:!1,settle:new Set})},enqueue(t,n){let r=e.get(t);return r?(r.queue.push(structuredClone(n)),!0):!1},consume(t){return e.get(t)?.queue.shift()},stop(t){let n=e.get(t);if(!n)return!1;n.stopped=!0;for(let e of n.settle)e(!0);return n.settle.clear(),!0},stopped(t){let n=e.get(t);return n?n.stopped?Promise.resolve(!0):new Promise(e=>n.settle.add(e)):Promise.resolve(!1)},close(t){let n=e.get(t);for(let e of n?.settle??[])e(!1);e.delete(t)}}}function M_(e,t,n){e.stopped(t).then(e=>{e&&n.abort()},()=>{})}function N_(){throw new B(`unavailable`,W(`error.unavailable`))}function P_(e,t){return e.operationId===t.operationId&&e.callId===t.callId&&e.profileId===t.profileId&&e.toolId===t.toolId&&e.invocationHash===t.invocationHash}function F_(e,t){t.operationId===`__proto__`&&N_();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)&&N_():n&&!P_(n,t)&&N_(),n}function I_(e,t){let n=F_(e,t);return(!n||n.status!==`running`&&n.status!==`uncertain`||n.claimToken!==t.claimToken)&&N_(),n}function L_(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 R_(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 z_(e,t){return{lookup(n){return e.mutate(t,e=>L_(F_(e,n)))},begin(n){let r=crypto.randomUUID(),i=Date.now();return e.mutate(t,e=>L_(F_(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=I_(e,n);R_(e,{...n,invocation:t.invocation},r)})},settleNotStarted(n,r){return e.mutate(t,e=>{let t=F_(e,n);t&&t.status!==`ready`&&N_(),r.effects!==`not_started`&&N_(),R_(e,n,r)})},markUncertain(n,r){return e.mutate(t,e=>{let t=I_(e,n);e.operations[n.operationId]={...n,invocation:t.invocation,...t.pageGrant?{pageGrant:t.pageGrant}:{},status:`uncertain`,reason:r,detectedAt:Date.now()}})}}}function B_(e){return pl(C.parse(e))}async function V_(e,t){return`${e}:${await pl(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 H_(e,t,n={},r){if(t===void 0)return;let i=C.parse(t),a=await B_(i),o=await V_(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 B(`request`,W(`session.provider_state_unowned`),{copy:{key:`session.provider_state_unowned`}});return i}function U_(e,t,n){return[...new Set([...e,...t].reverse())].slice(0,n).reverse()}async function W_(e){let t=e.session?void 0:x_(e.request),n=e.session?(await e.session(e.request))?.trim():t?.id;if(!n)throw new B(`auth`,W(`session.sign_in`),{copy:{key:`session.sign_in`}});let r=e.operationRetentionMs??864e5;if(!Number.isSafeInteger(r)||r<=0)throw new B(`config`,W(`error.config`));let i=cg(e.sessionLimits),a=m_(e.sessionStore,Zr(`session boundary`,e.gateTtlMs),r,i);await a.read(n);let o=p_(a,n,e.pageToolBroker??f_());return{pageExecution:o.execution,answerPageResult:o.answer,sessionId:n,...t?.setCookie?{setCookie:t.setCookie}:{},toolExecution:z_(a,n),async prepareLiveOpen(e,t){let r=Mg(w_(si,e,`live open`),t),i=await a.read(n),o=await H_(i.providerCheckpoints,r.providerState,i.operations);if(o&&Object.values(i.operations).some(e=>e.status!==`settled`))throw new B(`unavailable`,W(`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 H_(r.providerCheckpoints,e,r.operations,t)},async recordCheckpoint(e){let t=await B_(e);await a.mutate(n,async e=>{e.providerCheckpoints=U_(e.providerCheckpoints,[await V_(t,e.operations)],i.maxCheckpoints)})}}}function G_(e,t){return Fr(e,t.labels,t.clientEvents)}function K_(e,t){return JSON.stringify({type:`error`,...G_(e,t)})}function q_(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 J_(e,t,n,r,i){let a=t=>{t.catch(t=>{e.send(K_(t,r))})};e.addEventListener(`message`,o=>{try{if(typeof o.data==`string`){let s=E_(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),X_(e,t,c===void 0?d:{...d,page:{output:c}},r);return}}}(o.data instanceof ArrayBuffer||o.data instanceof Uint8Array)&&a(t.sendAudio({data:_n(o.data instanceof Uint8Array?o.data:new Uint8Array(o.data)),mimeType:`audio/pcm;rate=16000`}))}catch(t){e.send(K_(t,r))}})}async function Y_(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(xr(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,ni(t)),e.send(JSON.stringify({type:`executeToolResult`,callId:t.callId,operationId:ni(t),status:`dispatched`,grantId:t.grantId,arguments:t.arguments}))),t.phase===void 0?a.start(t.callId,ni(t)):(t.phase===`complete`||t.phase===`error`||t.phase===`cancel`)&&a.stop(t.callId,ni(t))}e.send(JSON.stringify({type:`events`,events:pr([n],o.clientEvents)}))}}catch(t){e.send(K_(t,o))}finally{a.stopAll(),i.close();try{e.close(1e3,`session ended`)}catch{}}}async function X_(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:G_(t,r)}))}}var Z_=2e4;function Q_(e,t,n,r,i,a,o={}){let s=q_(t,o.clientCallTimeoutMs??Z_),c={labels:a,clientEvents:o.clientEvents};return J_(e,t,s,c,o.pageResult),e.addEventListener(`close`,()=>{t.close(`client disconnected`)}),Y_(e,t,n,r,i,s,c,o.beforeEvent)}function $_(){let e=crypto.randomUUID(),t=wg(),n=W_({request:new Request(`https://studio.local`),session:()=>e,sessionStore:t}),r=m_(t,18e5,fg,cg()),i=p_(r,e,f_());return{boundary:n,execution:z_(r,e),pageExecution:i.execution,pageResult:i.answer}}var ev=og();us(rt,ev.sink);async function*tv(e){let t=[],n=ev.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 nv(e,t){if(e===`live`)throw new B(`request`,`Studio ${t} does not support live profiles.`)}async function rv(e,t){let{scope:n,profile:r}=await ig(e.profile,e.customTools,e.structured,e.runtime,e.dependencies);nv(r.type,`turn runner — use runSession`);let i=Yn(r,n.tools);if(i.type===`live`)throw new B(`request`,`A studio chat does not run a live profile.`);return{scope:n,profile:r,iface:i,host:i.providerContinuation?.history===`stateless`?void 0:Pg({...t,profile:r,clientEvents:Ar(e.runtime)})}}function iv(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:Wh(t,r)},Hh(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}:{}},Hh(r,t,n,o)))?.history},...e.model?{model:e.model}:{},...e.effort?{effort:e.effort}:{},signal:a}}function av(e,t,n,r,i,a){let o=n.conversation.paused?.events??[],s=di(o).find(e=>e.callId===r.callId&&e.operationId===r.operationId);if(!s)throw new B(`internal`,`the paused reply holds no call ${r.callId}`);return lv(e,t,r,{name:s.name,input:s.arguments,gateKind:s.gateKind,snapshot:ii(o),promoted:ri(o),...n.conversation.paused?.model?{model:n.conversation.paused.model}:{},...i?{sessionPermissions:i}:{}},a)}async function*ov(e){let{request:t,runtime:n}=e,{scope:r,profile:i,iface:a,host:o}=await rv(e,e.conversations),s=Zg(a,t.input),c=t.replay?.sessionPermissions;if(!o&&t.conversation!==void 0)throw l_(`continue`);if(!o&&t.abandon)throw l_(`walk away from`);let l=o?await Fg(o,t.conversation,{kind:`message`,...t.abandon?{abandon:t.abandon}:{}},t.transcript?{profile:i,blocks:t.transcript}:void 0):void 0,u=l?(t.abandon??[]).map(e=>({reference:e,invoke:av(r,i.id,l,{...e,decision:`abandon`},c,n)})):[],d=globalThis.crypto.randomUUID();await e.steer.open(d);let f=new AbortController;M_(e.steer,d,f);let p=AbortSignal.any([e.signal,f.signal]);yield{type:`steer_inbox`,inbox:d};try{yield*tv(a=>{let f=iv({scope:r,profile:i,runtime:n,metadata:a,sessionPermissions:c,...t.model?{model:t.model}:{},...t.effort?{effort:t.effort}:{},signal:p,onStage:A_(e.steer,d)});if(!o||!l)return f.run({input:s.input,model:t.model,effort:t.effort});let m=u.map(({reference:e,invoke:t})=>({...e,events:r.invokeTool({...t,metadata:a,signal:p})}));return r_({host:o,opened:l,message:s,walkAway:m,runner:f})})}finally{await e.steer.close(d)}}var sv=p(f(),n());function cv(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 lv(e,t,n,r,i){let a=r.name===void 0?void 0:e.tools.get(r.name);if(!a)throw new B(`request`,`invoke: the paused call names no tool in this draft`);let o=oi(n,{name:a.name,arguments:w_(sv,r.input,`replayed call input`),gateKind:r.gateKind,...cv(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:Om({[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:Wh(e,i)}}function uv(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 dv(e,t,n,r,i){let a=lv(e,t,uv(n),n.replay??{},r);return tv(t=>e.invokeTool({...a,metadata:t,signal:i}))}async function*fv(e){let{answer:t,runtime:n,signal:r}=e,{scope:i,profile:a,host:o}=await rv(e,e.conversations),s=uv(t),c=t.replay?.sessionPermissions;if(!o){if(t.conversation!==void 0)throw l_(`continue`);yield*dv(i,a.id,t,n,r);return}if(t.conversation===void 0)throw l_(`continue`);let l=await Fg(o,t.conversation,{kind:`answer`,call:{callId:s.callId,operationId:s.operationId}}),u=av(i,a.id,l,s,c,n);yield*tv(e=>i_({host:o,opened:l,call:{callId:s.callId,operationId:s.operationId},settling:i.invokeTool({...u,metadata:e,signal:r}),runner:iv({scope:i,profile:a,runtime:n,metadata:e,sessionPermissions:c,signal:r})}))}async function pv(e,t,n){let{profile:r,host:i}=await rv(e,t);if(!i)throw l_(`start`);let{ref:a,view:o}=await Rg(i,r,n);return{conversation:a,view:o}}async function mv(e,t,n){let{host:r}=await rv(e,t);if(!r)throw l_(`read`);return Bg(r,(await Fg(r,n.conversation,{kind:`read`})).conversation)}async function hv(e,t,n,r){let{scope:i,profile:a,host:o}=await rv(e,t);if(!o)throw l_(`rewind`);let s=await Fg(o,n.conversation,{kind:`rewind`,at:n.at}),c=c_(s.conversation).map(t=>{let n=av(i,a.id,s,{...t,decision:`abandon`},void 0,e.runtime);return{...t,events:i.invokeTool({...n,signal:r})}}),l=await o_({host:o,opened:s,at:n.at,walkAway:c});if(l.ref===null)throw new B(`internal`,W(`error.internal`));return{conversation:l.ref,view:Bg(o,l.conversation)}}async function*gv(e){let{scope:t,profile:n}=await _v(e);yield*dv(t,n.id,e.answer,e.runtime,e.signal)}async function _v(e){let t=await ig(e.profile,e.customTools,void 0,e.runtime,e.dependencies);if(t.profile.type!==`host`)throw new B(`request`,`Studio calls run host profiles only.`);return t}async function*vv(e){let{scope:t,profile:n}=await _v(e);yield*tv(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:Wh(t,e.runtime),signal:e.signal,metadata:r}))}function yv(e){let t=[];return!e||!Wr(e).record?{traces:t}:{traces:t,sink:{write:e=>(t.push(e),Promise.resolve())}}}async function bv(e,t,n,r,i){let{scope:a,profile:o}=await ig(e.profile,[],void 0,{mode:`byok`}),{traces:s,sink:c}=yv(o.observability);try{return{result:await a.runDecision({profile:o.id,state:t,questions:e.questions??{},assets:Er(e.images,i),signal:r},{...n,...c?{sink:c}:{}}),traces:s}}catch(e){throw Or(e,s)}}async function xv(e,t,n){let{scope:r,profile:i}=await ig(e.profile,e.customTools,e.structured,n,e.dependencies);if(i.type!==`embedding`)throw new B(`request`,`Studio embedding runs require an embedding profile.`);let{traces:a,sink:o}=yv(i.observability);try{return{result:await r.runEmbedding({...t,profile:i.id},{...Hh(n,r,i,t.model),...o?{sink:o}:{}}),traces:a}}catch(e){throw Or(e,a)}}export{Q_ as attachStudioLiveSession,$_ as browserExecution,j_ as createMemorySteerInbox,kg as createSealedConversationStore,Mg as liveSessionOpen,D_ as parseLiveOpenMessage,hv as rewindStudio,bv as runStudioDecision,xv as runStudioEmbedding,pv as startStudioConversation,k_ as steerUnitOf,vv as streamStudioCall,gv as streamStudioHostInvoke,fv as streamStudioInvoke,ov as streamStudioTurn,mv as studioConversation,ig as studioScope,ev as studioTraces};
|