@trayai/helix-sdk 1.7.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/README.md +133 -5
- package/dist/broker/index.js +1 -1
- package/dist/chunk-3WKD2ENP.js +7 -0
- package/dist/chunk-JKFMPHA4.js +1 -0
- package/dist/{define-agent-C0qXub7P.d.ts → define-agent-DXV_nHvs.d.ts} +146 -53
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/internal/index.d.ts +10 -4
- package/dist/internal/index.js +1 -1
- package/dist/testing/index.d.ts +1 -1
- package/dist/{types-CRUtefiq.d.ts → types-CVW_-1wh.d.ts} +0 -6
- package/package.json +10 -9
- package/dist/chunk-3T2WZMJJ.js +0 -1
- package/dist/chunk-D44IVAUR.js +0 -7
package/dist/chunk-3T2WZMJJ.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var b="X-Helix-Project-Execution-Token",R="X-Tray-Token",$={mode:"dev",deploymentId:null},k={...$},p={};function te(e){let{internalJwt:r,helixExecutionJwt:t,devToken:n,...i}=e;"internalJwt"in e&&(p.internalJwt=r),"helixExecutionJwt"in e&&(p.helixExecutionJwt=t),"devToken"in e&&(p.devToken=n),k={...k,...i}}function ne(){return k}function S(){return p.internalJwt}function P(){return p.helixExecutionJwt}function I(){return p.devToken}var O=new Set(["us1","eu1","ap1","ap2"]),s=new Map,h={name:"us1",exposedName:"us1",displayName:"us1",hosts:{api:"https://api.tray.io",broker:"https://api.tray.io/private/v1/code",ingest:"https://api.tray.io/private/v1/helix/otlp",weaver:"https://weaver.tray.io",app:"https://app.tray.io",projectHost:"helix-app.ai",dashboard:"https://app.helix.tray.ai",auth:"https://auth.tray.io"},login:{storePrefix:"PROD",appUrl:"https://app.tray.io",cookieName:"prod_tray_lid",cookieDomain:"tray.io"}},v={name:"eu1",exposedName:"eu1",displayName:"eu1",hosts:{api:"https://api.eu1.tray.io",broker:"https://api.eu1.tray.io/private/v1/code",ingest:"https://api.eu1.tray.io/private/v1/helix/otlp",weaver:"https://weaver.eu1.tray.io",app:"https://app.eu1.tray.io",projectHost:"eu1.helix-app.ai",dashboard:"https://app.helix.eu1.tray.ai",auth:"https://auth.eu1.tray.io"},login:{storePrefix:"EU1",appUrl:"https://app.eu1.tray.io",cookieName:"prod_tray_lid_eu",cookieDomain:"tray.io"}},x={name:"ap1",exposedName:"ap1",displayName:"ap1",hosts:{api:"https://api.ap1.tray.io",broker:"https://api.ap1.tray.io/private/v1/code",ingest:"https://api.ap1.tray.io/private/v1/helix/otlp",weaver:"https://weaver.ap1.tray.io",app:"https://app.ap1.tray.io",projectHost:"ap1.helix-app.ai",dashboard:"https://app.helix.ap1.tray.ai",auth:"https://auth.ap1.tray.io"},login:{storePrefix:"AP1",appUrl:"https://app.ap1.tray.io",cookieName:"prod_tray_lid_ap",cookieDomain:"tray.io"}},E={name:"ap2",exposedName:"ap2",displayName:"ap2",hosts:{api:"https://api.ap2.tray.io",broker:"https://api.ap2.tray.io/private/v1/code",ingest:"https://api.ap2.tray.io/private/v1/helix/otlp",weaver:"https://weaver.ap2.tray.io",app:"https://app.ap2.tray.io",projectHost:"ap2.helix-app.ai",dashboard:"https://app.helix.ap2.tray.ai",auth:"https://auth.ap2.tray.io"},login:{storePrefix:"AP2",appUrl:"https://app.ap2.tray.io",cookieName:"prod_tray_lid_ap2",cookieDomain:"tray.io"}};s.set(h.name,h);s.set(v.name,v);s.set(x.name,x);s.set(E.name,E);var T=["api","broker","ingest","weaver","app","projectHost","dashboard"],N=["auth"],D=["storePrefix","appUrl","cookieName","cookieDomain"];function C(e){if(!e.name||typeof e.name!="string")throw new Error("RegionProfile.name must be a non-empty string");if(!e.exposedName||typeof e.exposedName!="string")throw new Error("RegionProfile.exposedName must be a non-empty string");if(!e.displayName||typeof e.displayName!="string")throw new Error("RegionProfile.displayName must be a non-empty string");if(!e.hosts||typeof e.hosts!="object")throw new Error("RegionProfile.hosts must be an object");if(!e.login||typeof e.login!="object")throw new Error("RegionProfile.login must be an object");for(let r of T)if(typeof e.hosts[r]!="string"||!e.hosts[r])throw new Error(`RegionProfile.hosts.${r} must be a non-empty string`);for(let r of N){let t=e.hosts[r];if(t!==void 0&&(typeof t!="string"||!t))throw new Error(`RegionProfile.hosts.${r} must be a non-empty string when set`)}for(let r of D)if(typeof e.login[r]!="string"||!e.login[r])throw new Error(`RegionProfile.login.${r} must be a non-empty string`)}function j(e,r){return e.name===r.name&&e.exposedName===r.exposedName&&e.displayName===r.displayName&&T.every(t=>e.hosts[t]===r.hosts[t])&&N.every(t=>e.hosts[t]===r.hosts[t])&&D.every(t=>e.login[t]===r.login[t])}function oe(e){C(e);let r=s.get(e.name);if(r){if(j(r,e))return;throw new Error(`RegionProfile.name "${e.name}" is already registered with different values`)}for(let t of s.values())if(t.exposedName===e.exposedName)throw new Error(`RegionProfile.exposedName "${e.exposedName}" is already used by "${t.name}"`);s.set(e.name,e)}function H(e){return s.has(e)}function se(e){return s.get(e)}function m(e){let r=s.get(e);if(!r)throw new Error(`Unknown region: ${e}`);return r}function ae(){return[...s.keys()]}function de(){return[...s.values()].map(e=>e.exposedName)}function F(e){for(let r of s.values())if(r.exposedName===e)return r.name}var f=Symbol.for("@trayai/helix-sdk.forcedEnvironment");function B(e){let r=globalThis;if(e===void 0||e.trim()===""){delete r[f];return}let t=e.trim(),n=F(t);if(n){r[f]=n;return}if(H(t)){r[f]=t;return}throw new Error(`Unknown region: ${t}`)}function le(){return globalThis[f]}function ue(){return[...s.values()].filter(e=>!O.has(e.name))}function ce(){B(void 0),s.clear();for(let e of[h,v,x,E])s.set(e.name,{...e,hosts:{...e.hosts},login:{...e.login}})}var u=class e extends Error{detail;constructor(r){super(L(r)),this.name="SdkError",this.detail=r}get kind(){return this.detail.kind}static unknownAlias(r,t){return new e({kind:"unknown_alias",alias:r,available:t})}static inputValidationFailed(r){return new e({kind:"input_validation_failed",fields:r})}static outputValidationFailed(r){return new e({kind:"output_validation_failed",fields:r})}static configLoadFailed(r){return new e({kind:"config_load_failed",cause:r})}static brokerError(r,t,n,i){return new e({kind:"broker_error",status:r,message:t,body:n,code:i})}static unsupportedBodyType(r){return new e({kind:"unsupported_body_type",actualType:r})}static unsupportedScheme(r){return new e({kind:"unsupported_scheme",scheme:r})}static missingExecutionCredentials(){return new e({kind:"missing_execution_credentials"})}static missingTrayToken(){return new e({kind:"missing_tray_token"})}static dbCallFailed(r,t){return new e({kind:"db_call_failed",message:r,cause:t})}static dbQueryFailed(r){return new e({kind:"db_query_failed",message:r})}static dbInvalidParameters(r){return new e({kind:"db_invalid_parameters",message:r})}static kvKeyInvalid(r){return new e({kind:"kv_key_invalid",message:r})}static kvValueInvalid(r){return new e({kind:"kv_value_invalid",message:r})}static kvValueTooLarge(r,t){return new e({kind:"kv_value_too_large",message:r,maxBytes:t})}static kvTtlInvalid(r){return new e({kind:"kv_ttl_invalid",message:r})}static kvNotAvailable(){return new e({kind:"kv_not_available"})}static kvCallFailed(r,t,n){return new e({kind:"kv_call_failed",status:r,message:t,body:n})}static kvRequiresProvisioning(){return new e({kind:"kv_requires_provisioning"})}static filesPathInvalid(r){return new e({kind:"files_path_invalid",message:r})}static filesValueInvalid(r){return new e({kind:"files_value_invalid",message:r})}static filesValueTooLarge(r,t){return new e({kind:"files_value_too_large",message:r,maxBytes:t})}static filesNotAvailable(){return new e({kind:"files_not_available"})}static filesCallFailed(r,t,n){return new e({kind:"files_call_failed",status:r,message:t,body:n})}static filesRequiresProvisioning(){return new e({kind:"files_requires_provisioning"})}static callFunctionPathInvalid(r){return new e({kind:"call_function_path_invalid",message:r})}static callFunctionCallFailed(r,t,n){return new e({kind:"call_function_call_failed",status:r,message:t,body:n})}static callFunctionRequiresProvisioning(){return new e({kind:"call_function_requires_provisioning"})}static callFunctionNotAvailable(){return new e({kind:"call_function_not_available"})}static callFunctionMissingExecutionJwt(){return new e({kind:"call_function_missing_execution_jwt"})}static aiUnsupportedService(r,t,n){return new e({kind:"ai_unsupported_service",alias:r,service:t,supported:n})}static aiModelIdRequired(r,t){return new e({kind:"ai_model_id_required",alias:r,operation:t})}static aiModelInstanceRequired(r){return new e({kind:"ai_model_instance_required",modelId:r})}static aiProviderNotConfigured(r,t){return new e({kind:"ai_provider_not_configured",alias:r,supported:t})}static aiForeignModelRejected(){return new e({kind:"ai_foreign_model_rejected"})}static agentSessionsFailed(r){return new e({kind:"agent_sessions_failed",message:r})}};function ge(e){return e instanceof u}function L(e){switch(e.kind){case"unknown_alias":return`Unknown auth alias "${e.alias}". Available: ${e.available.join(", ")||"(none)"}`;case"input_validation_failed":return`Input validation failed for fields: ${e.fields.join(", ")}`;case"output_validation_failed":return`Output validation failed for fields: ${e.fields.join(", ")}`;case"config_load_failed":return`Config load failed: ${e.cause}`;case"broker_error":return e.code?`broker error: ${e.status} ${e.code}: ${e.message}`:`broker error: ${e.status} ${e.message}`;case"unsupported_body_type":return`unsupported body type: ${e.actualType}`;case"unsupported_scheme":return`unsupported scheme: ${e.scheme} (only https supported)`;case"missing_execution_credentials":return"missing execution credentials: at least one of internalJwt / helixExecutionJwt must be set before an authed broker/KV call";case"missing_tray_token":return"Not logged in. Run `helix login` to authenticate before making authed HTTP calls in dev.";case"db_call_failed":return`Database call failed: ${e.message}`;case"db_query_failed":return`Database query failed: ${e.message}`;case"db_invalid_parameters":return`Invalid database parameters: ${e.message}`;case"kv_key_invalid":return`Invalid KV key: ${e.message}`;case"kv_value_invalid":return e.message;case"kv_value_too_large":return e.message;case"kv_ttl_invalid":return e.message;case"kv_not_available":return"Key-value store is not available in this environment";case"kv_call_failed":return`KV platform error: ${e.status} ${e.message}`;case"kv_requires_provisioning":return"Key-value store requires a provisioned project (run helix project set)";case"files_path_invalid":return`Invalid file path: ${e.message}`;case"files_value_invalid":return e.message;case"files_value_too_large":return e.message;case"files_not_available":return"File storage is not available in this environment";case"files_call_failed":return`Files platform error: ${e.status} ${e.message}`;case"files_requires_provisioning":return"File storage requires a provisioned project (run helix project set)";case"call_function_path_invalid":return`Invalid function path: ${e.message}`;case"call_function_call_failed":return`Async function call failed: ${e.status} ${e.message}`;case"call_function_requires_provisioning":return"callFunctionAsync requires a provisioned project (run helix project set)";case"call_function_not_available":return"callFunctionAsync is not available: no running dev server was found";case"call_function_missing_execution_jwt":return"ctx.callFunctionAsync requires a helix project-execution JWT \u2014 a legacy internalJwt-only execution cannot call it";case"ai_unsupported_service":return`Authentication alias "${e.alias}" resolves to service "${e.service}", which ctx.ai does not support. Supported AI services: ${e.supported.join(", ")}`;case"ai_model_id_required":return`ctx.ai("${e.alias}").${e.operation} requires \`model\` as a string model id. To pass a model instance, use the top-level ctx.ai.${e.operation} instead.`;case"ai_model_instance_required":return`ctx.ai.* call functions require a model instance from ctx.ai(alias), got the string "${e.modelId}". Bare model ids would route outside the credentials broker and are not supported.`;case"ai_provider_not_configured":return`No AI provider configured for authentication alias "${e.alias}". Add \`aiProviders: { "${e.alias}": "<service>" }\` to helix.config.ts (supported services: ${e.supported.join(", ")}; openai-compatible needs the object form with baseUrl).`;case"ai_foreign_model_rejected":return"ctx.ai.* call functions require a model instance minted by ctx.ai(alias). A model built directly against a raw @ai-sdk/* provider carries its own transport and credentials, and would bypass the credentials broker, proxy policy, and metering.";case"agent_sessions_failed":return`Agent session store error: ${e.message}`}}import{z as g}from"zod";var A="x-helix-destination-url",U="x-helix-authentication-id",J="x-helix-deployment-id",_="x-execution-id",M="x-helix-broker-error",he="route_not_found",K=new Set([A,U,J,"authorization","x-tray-token","x-helix-project-execution-token","host","content-length","connection","transfer-encoding","te","upgrade","keep-alive","expect","proxy-authorization","proxy-connection","accept-encoding","x-request-id",_]);function V(e){let r=e.toLowerCase();return K.has(r)||r.startsWith("x-tray-internal-")}var w=g.object({error:g.object({code:g.string(),message:g.string(),issues:g.array(g.unknown()).optional()})});function ve(e,r){let t=`${m(e).hosts.api}/private/v1/helix/broker/http/raw`;return r==="dev"?`${t}/dev`:t}function xe(e){if(e.mode==="lambda"){let t=S(),n=P(),i=!!(t&&t.trim().length>0),o=!!(n&&n.trim().length>0);if(!i&&!o)throw u.missingExecutionCredentials();let a={};return i&&(a[R]=t),o&&(a[b]=n),{headers:a,deploymentId:e.deploymentId??null}}let r=I();if(!r)throw u.missingTrayToken();return{headers:{Authorization:`Bearer ${r}`},deploymentId:null}}function G(e){return typeof e=="string"||e instanceof ArrayBuffer||ArrayBuffer.isView(e)||typeof Blob<"u"&&e instanceof Blob||typeof FormData<"u"&&e instanceof FormData||e instanceof URLSearchParams||typeof ReadableStream<"u"&&e instanceof ReadableStream}function Ee(e){let r=new URL(e.url);if(r.protocol!=="https:")throw u.unsupportedScheme(r.protocol.replace(/:$/,""));if(e.query!==void 0)if(e.query instanceof URLSearchParams)for(let[l,d]of e.query.entries())r.searchParams.append(l,d);else for(let[l,d]of Object.entries(e.query))for(let q of Array.isArray(d)?d:[d])r.searchParams.append(l,q);let t;e.headers===void 0?t=[]:e.headers instanceof Headers?t=Array.from(e.headers.entries()):Array.isArray(e.headers)?t=e.headers:t=Object.entries(e.headers);let n=t.filter(([l])=>!V(l)),i=e.body!==void 0&&e.body!==null,o,a,c=!1;return i&&(G(e.body)?(o=e.body,c=typeof ReadableStream<"u"&&e.body instanceof ReadableStream):(o=JSON.stringify(e.body),n.some(([d])=>d.toLowerCase()==="content-type")||(a="application/json"))),{authenticationId:e.authenticationId,method:e.method.toUpperCase(),destinationUrl:r.toString(),headers:n,body:o,isStreamBody:c,defaultContentType:a}}async function X(e,r){let t=await e.text(),n=t,i=t||r;try{n=JSON.parse(t);let o=w.safeParse(n);o.success&&(i=o.data.error.message)}catch{}return{status:e.status,code:r,message:i,body:n}}var Y=6e4;function z(e){return e.includes("json")}function W(e){return e.startsWith("text/")||e.includes("xml")||e.includes("urlencoded")||e.includes("javascript")||e.includes("ecmascript")}function Q(e,r){if(e.byteLength===0)return;let t=r.toLowerCase();if(z(t)){let n=new TextDecoder("utf-8").decode(e);try{return JSON.parse(n)}catch{return n}}return W(t)?new TextDecoder("utf-8").decode(e):e}function Z(e){let r={};for(let[t,n]of e.entries())r[t.toLowerCase()]=n;return r}async function we(e){let{request:r}=e,t=new Headers;for(let[l,d]of r.headers)t.append(l,d);r.defaultContentType&&!t.has("content-type")&&t.set("content-type",r.defaultContentType),t.set(A,r.destinationUrl),t.set(U,r.authenticationId);for(let[l,d]of Object.entries(e.credentialHeaders))t.set(l,d);e.executionId&&t.set(_,e.executionId);let n={method:r.method,headers:t,redirect:"manual",signal:AbortSignal.timeout(e.timeoutMs??Y)};r.body!==void 0&&(n.body=r.body,r.isStreamBody&&(n.duplex="half"));let i=await fetch(e.proxyUrl,n),o=i.headers.get(M);if(o!==null)return{kind:"brokerError",...await X(i,o)};let a=new Uint8Array(await i.arrayBuffer()),c=i.headers.get("content-type")??"";return{kind:"upstream",response:{status:i.status,headers:Z(i.headers),body:Q(a,c)}}}import{z as y}from"zod";var ee=3e4;function Te(e){let r=new URL(e);if(r.protocol!=="https:")throw u.unsupportedScheme(r.protocol.replace(/:$/,""))}function Ne(e,r){let t=`${m(e).hosts.api}/private/v1/helix/broker/s3/sign`;return r==="dev"?`${t}/dev`:t}var re=y.object({url:y.string(),method:y.string(),expiresAt:y.string()});async function De(e){let r=new Headers({"content-type":"application/json"});for(let[a,c]of Object.entries(e.credentialHeaders))r.set(a,c);e.executionId&&r.set(_,e.executionId);let t=await fetch(e.signUrl,{method:"POST",headers:r,body:JSON.stringify(e.body),redirect:"manual",signal:AbortSignal.timeout(e.timeoutMs??ee)}),n=await t.text(),i=n;try{i=JSON.parse(n)}catch{}if(t.ok){let a=re.safeParse(i);return a.success?{kind:"signed",result:a.data}:{kind:"brokerError",status:t.status,message:"malformed s3-sign response from credential broker",body:i}}let o=w.safeParse(i);return o.success?{kind:"brokerError",status:t.status,code:o.data.error.code,message:o.data.error.message,body:i}:{kind:"brokerError",status:t.status,message:n||`s3-sign request failed with status ${t.status}`,body:i}}export{b as a,R as b,te as c,ne as d,S as e,P as f,oe as g,H as h,se as i,m as j,ae as k,de as l,F as m,B as n,le as o,ue as p,ce as q,u as r,ge as s,A as t,U as u,J as v,_ as w,M as x,he as y,V as z,w as A,ve as B,xe as C,Ee as D,X as E,Y as F,we as G,Te as H,Ne as I,De as J};
|
package/dist/chunk-D44IVAUR.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import{a as mn,b as ze}from"./chunk-WUCX7RZO.js";import{A as yn,B as pe,C as z,D as ne,E as hn,G as wn,H as Sn,I as bn,J as vn,a as U,b as le,d as A,e as de,f as $,h as un,j,k as pn,o as fn,r as d,t as Ie,u as Ge,v as te,w as Re,x as Je,y as ue,z as gn}from"./chunk-3T2WZMJJ.js";var rc="tray-config-bridge",oc="tray-dev-token-bridge",We=null;function sc(e){We=e}function x(){if(!We)throw new Error("Active tray config not seeded. Worker boot must call setActiveConfig() before handlers run.");return We}function ic(){We=null}import{AsyncLocalStorage as Bn}from"async_hooks";import{trace as cs,SpanKind as ls,SpanStatusCode as et}from"@opentelemetry/api";import{ExportResultCode as ds,W3CTraceContextPropagator as us}from"@opentelemetry/core";import{NodeTracerProvider as ps,SimpleSpanProcessor as fs,BatchSpanProcessor as ms}from"@opentelemetry/sdk-trace-node";import{OTLPTraceExporter as Jo}from"@opentelemetry/exporter-trace-otlp-proto";import{OTLPLogExporter as Wo}from"@opentelemetry/exporter-logs-otlp-proto";function Ct(e){return j(e).hosts.ingest}function Xo(){return $()??""}function xn(){return{[U]:Xo()}}function An(){let e=Ct(x().region);return new Jo({url:`${e}/v1/traces`,headers:()=>Promise.resolve(xn())})}function En(){let e=Ct(x().region);return new Wo({url:`${e}/v1/logs`,headers:()=>Promise.resolve(xn())})}import{logs as Cn,SeverityNumber as Xe}from"@opentelemetry/api-logs";import{LoggerProvider as Zo,BatchLogRecordProcessor as es}from"@opentelemetry/sdk-logs";function Ce(e){try{return JSON.stringify(e)}catch(t){return JSON.stringify({_serialization_error:t instanceof Error?t.message:String(t)})}}function Yo(e){return new TextEncoder().encode(e).length}var In="\u2026[truncated]",Qo=Yo(In),Te=4096;function re(e,t=Te){let n=new TextEncoder().encode(e);if(n.length<=t)return e;let r=n.subarray(0,t-Qo);return new TextDecoder("utf-8").decode(r).replace(/�$/,"")+In}function k(e,t=Te){return re(Ce(e),t)}var ts="@trayai/helix-sdk",ke,Rn={debug:{number:Xe.DEBUG,text:"DEBUG"},info:{number:Xe.INFO,text:"INFO"},warn:{number:Xe.WARN,text:"WARN"},error:{number:Xe.ERROR,text:"ERROR"}};function ns(){return A().mode==="lambda"?[new es({exporter:En()})]:[]}function Tn(){if(ke!==void 0)return;let e=ns();e.length!==0&&(ke=new Zo({processors:e}),Cn.setGlobalLoggerProvider(ke))}function rs(e,t,n){let r=Rn[e]??Rn.info;return{severityNumber:r.number,severityText:r.text,body:t,...n?{attributes:{"tray.log.meta":k(n)}}:{}}}function kn(e,t,n){Cn.getLogger(ts).emit(rs(e,t,n))}async function Pn(e=2e3){if(ke===void 0)return;let t;try{await Promise.race([ke.forceFlush(),new Promise(n=>{t=setTimeout(n,e)})])}catch(n){process.stderr.write(`[helix-sdk] otel log flush failed: ${n instanceof Error?n.message:String(n)}
|
|
2
|
-
`)}finally{t!==void 0&&clearTimeout(t)}}function Tt(){let e=process.env.TRAY_PRETTY_LOGS;return e==="1"||e==="true"}function os(){if(process.env.NO_COLOR!==void 0)return!1;let e=process.env.FORCE_COLOR;return e!==void 0&&e!=="0"&&e!=="false"?!0:!!process.stdout.isTTY&&process.env.TERM!=="dumb"}function D(e,t){return os()?`\x1B[${e}m${t}\x1B[0m`:t}var ss=5,is={FN:"1;35",INFO:"34",AUTH:"35",API:"36",AGENT:"1;36",TOOL:"36",WARN:"33",ERROR:"31",DEBUG:"90"},Ye="32",Qe="31",as="33",oe="2",Ze="1";function se(e){return D(is[e]??"0",e.padEnd(ss))}function On(e,t){return`${se("FN")} ${D(Ze,`${e} ${t}`.trim())}`}function _n(e,t,n,r){let o=e.toUpperCase(),i=`${r?`${D(oe,r)} `:""}${se(o)} ${t}`;return n&&Object.keys(n).length>0&&(i+=` ${D(oe,Ce(n))}`),i}function Dn(e){return new Date(e[0]*1e3).toTimeString().slice(0,8)}function Mn(e){return`${se("AUTH")} ${e}`}function Fn(e,t,n,r,o){let s=n===void 0?"ERR":String(n),i=D(o==="error"?Qe:Ye,s);return`${se("API")} ${e} ${t} \u2192 ${i} ${D(oe,`${r}ms`)}`}function Ln(e){return`${se("AGENT")} ${D(Ze,e)}`}function Nn(e,t,n,r){let o=t==="error"?Qe:t==="awaiting-approval"?as:Ye,s=n!==void 0?`${D(oe,`${n} step${n===1?"":"s"}`)} `:"";return`${se("AGENT")} ${D(Ze,e)} \u2192 ${D(o,t)} ${s}${D(oe,`${r}ms`)}`}function Un(e,t,n){let r=t==="error"?D(Qe,"error"):D(Ye,"ok");return`${se("TOOL")} ${e} \u2192 ${r} ${D(oe,`${n}ms`)}`}function $n(e,t,n){let r=t?Qe:Ye,o=D(r,"\u25CF"),s=D(r,t?"error":"success");return`${o} ${D(Ze,e)} ${s} ${D(oe,`${n}ms`)}`}function H(e){try{process.stdout.write(e+`
|
|
3
|
-
`)}catch{}}var Kn=new Bn,gs=new Bn;function O(e){let t=gs.getStore();t&&(t[e]=!0)}var ys=/^[0-9a-f]{32}$/;function hs(e){let t=e.replace(/-/g,"").toLowerCase();return ys.test(t)?t:null}var ws={0:"STATUS_CODE_UNSET",1:"STATUS_CODE_OK",2:"STATUS_CODE_ERROR"},fe=new Map;function Hn(e,t,n){let r=fe.get(e);r?r[t]=n:fe.set(e,{[t]:n})}function q(e,t,n){e.setAttribute(t,k(n))}var Pe;function jn(e){return`${e[0]}${String(e[1]).padStart(9,"0")}`}function kt(e){return Math.round(e[0]*1e3+e[1]/1e6)}function qn(e){try{process.stdout.write(Ce(e)+`
|
|
4
|
-
`)}catch{}}var Pt=class{export(t,n){for(let r of t){let o=r.spanContext().spanId,s=fe.get(o),i={...r.attributes};if(s!==void 0){for(let[l,u]of Object.entries(s))typeof u=="string"?i[l]=re(u):typeof u=="object"&&u!==null?i[l]=k(u):i[l]=u;fe.delete(o)}let a=Kn.getStore(),c=a?hs(a):null;qn({_otel:"span",traceId:c??r.spanContext().traceId,spanId:o,parentSpanId:r.parentSpanContext?.spanId??"",name:r.name,kind:r.kind,startTimeUnixNano:jn(r.startTime),endTimeUnixNano:jn(r.endTime),attributes:i,status:{code:ws[r.status.code]??"STATUS_CODE_UNSET",...r.status.message?{message:re(r.status.message)}:{}}})}n({code:ds.SUCCESS})}forceFlush(){return Promise.resolve()}shutdown(){return Promise.resolve()}},Ot=class{onStart(t,n){}onEnd(t){fe.delete(t.spanContext().spanId)}forceFlush(){return Promise.resolve()}shutdown(){return Promise.resolve()}},_t=class{onStart(t){let n=t;(n.name==="function"||n.name==="App")&&H(`
|
|
5
|
-
`+On(String(n.attributes.method??""),String(n.attributes.route??""))),(n.name==="agent.generate"||n.name==="agent.stream")&&H(Ln(String(n.attributes.agent??"")))}onEnd(t){let n=t.attributes;switch(t.name){case"log":{let r=t.spanContext().spanId,o=fe.get(r)?.properties;H(_n(String(n.level??"info"),String(n.message??""),o,Dn(t.startTime)));break}case"auth":H(Mn(String(n.alias??"")));break;case"externalApi":{let r=typeof n.statusCode=="number"?n.statusCode:void 0;H(Fn(String(n.method??""),String(n.host??""),r,kt(t.duration),n.status==="error"?"error":"success"));break}case"agent.tool":{H(Un(String(n.tool??""),n.status==="error"?"error":"success",kt(t.duration)));break}case"agent.generate":case"agent.stream":{let r=typeof n.status=="string"?n.status:t.status.code===et.ERROR?"error":"completed";H(Nn(String(n.agent??""),r,typeof n.steps=="number"?n.steps:void 0,kt(t.duration)));break}}}forceFlush(){return Promise.resolve()}shutdown(){return Promise.resolve()}},Dt=class{constructor(t){this.inner=t}inner;onStart(t,n){this.inner.onStart(t,n)}onEnd(t){t.name!=="log"&&this.inner.onEnd(t)}forceFlush(){return this.inner.forceFlush()}shutdown(){return this.inner.shutdown()}};function Ss(){let t=[Tt()?new _t:new fs(new Pt)];return A().mode==="lambda"&&t.push(new Dt(new ms(An()))),t.push(new Ot),t}function bs(){Pe===void 0&&(Pe=new ps({spanProcessors:Ss()}),Pe.register({propagator:new us}),Tn())}async function vs(e=2e3){let t=[Pn(e)];Pe!==void 0&&t.push((async()=>{let n;try{await Promise.race([Pe.forceFlush(),new Promise(r=>{n=setTimeout(r,e)})])}catch(r){process.stderr.write(`[helix-sdk] otel flush failed: ${r instanceof Error?r.message:String(r)}
|
|
6
|
-
`)}finally{n!==void 0&&clearTimeout(n)}})()),await Promise.all(t)}var F=cs.getTracer("@trayai/helix-sdk");function xs({executionId:e,deploymentId:t,triggerType:n="http",routeOrJob:r,startedAt:o,startMs:s,errored:i,errorMessage:a,userId:c,flags:l}){let u=new Date().toISOString(),p=Date.now()-s;if(Tt()){H(`
|
|
7
|
-
`+$n(r,i,p));return}qn({_otel:"summary",executionId:e,deploymentId:t,triggerType:n,routeOrJob:r,status:i?"error":"success",startedAt:o,finishedAt:u,durationMs:p,userId:c,hasError:i||l.hasError,hasAuth:l.hasAuth,hasAi:l.hasAi,hasExternal:l.hasExternal,hasDb:l.hasDb,errorSummary:i&&a!==null?re(a):null})}async function Mc(e,t){let n=e.startMs??Date.now();bs();let r=!1,o=null;try{return await Kn.run(e.executionId,()=>F.startActiveSpan("App",{kind:ls.SERVER,attributes:{method:e.method,route:e.route,...e.deploymentId?{deploymentId:e.deploymentId}:{}}},async s=>{try{let i=await t(),a=i?.httpResponse?.status??404;return r=a>=400,s.setAttribute("http.response.status_code",a),s.setAttribute("helix.status",r?"error":"success"),s.setStatus({code:r?et.ERROR:et.OK}),i}catch(i){throw r=!0,o=i instanceof Error?i.message:String(i),s.setAttribute("http.response.status_code",500),s.setAttribute("helix.status","error"),s.setStatus({code:et.ERROR,message:o}),i}finally{s.end()}}))}finally{xs({executionId:e.executionId,deploymentId:e.deploymentId,routeOrJob:`${e.method} ${e.route}`,startedAt:e.startedAt,startMs:n,errored:r,errorMessage:o,userId:e.userId,flags:{hasDb:!1,hasExternal:!1,hasAuth:!1,hasAi:!1,hasError:!1}}),await vs()}}var Gn=1024,G=100*1024*1024,Vn=250,As=3600,Es=As*1e3,zn=new TextEncoder,Is=/(^|\/)\.\.(\/|$)/,Rs=/[?#]/;function Cs(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<=31||n===127)return!0}return!1}function ie(e,t=Gn){if(e.length===0)throw d.filesPathInvalid("Path must be a non-empty string");tt(e,t)}function Mt(e){return e.endsWith("/")?e.slice(0,-1):e}function tt(e,t=Gn){if(e.length===0)return;if(Is.test(e))throw d.filesPathInvalid("Path contains path traversal segment");if(Rs.test(e)||Cs(e))throw d.filesPathInvalid("Path contains illegal characters");let n=e.split("/");if(e.startsWith("/")||e.endsWith("/")||n.some(o=>o===""))throw d.filesPathInvalid("Path must not contain empty path segments");for(let o of n){let s=zn.encode(o).length;if(s>Vn)throw d.filesPathInvalid(`Path segment exceeds ${Vn} UTF-8 bytes (got ${s})`)}let r=zn.encode(e).length;if(r<1||r>t)throw d.filesPathInvalid(`Path must be between 1 and ${t} UTF-8 bytes (got ${r})`)}function Jn(e){if(e>G)throw d.filesValueTooLarge(`File exceeds maximum size of ${G} bytes (got ${e})`,G)}function me(e){let t=e!==void 0?e*1e3:Es;return new Date(Date.now()+t)}import{join as _e}from"path";var Ts="files",ks="files-meta",Ps=1023,Os=1,_s=5;function Wn(e){let t=Math.max(Buffer.byteLength(nt(e),"utf8"),Buffer.byteLength(Oe(e),"utf8"));return Math.max(0,Ps-t-Os-_s)}function nt(e){return _e(e,".helix",Ts)}function Oe(e){return _e(e,".helix",ks)}function De(e,t){return _e(nt(e),...t.split("/"))}function rt(e,t){return _e(Oe(e),...t.split("/"))+".json"}function ot(e,t){return t.length===0?nt(e):De(e,t)}function Xn(e,t){return t.length===0?Oe(e):_e(Oe(e),...t.split("/"))}import{z as Ds}from"zod";var Kc=["us1","eu1","ap1","ap2"],Ft=Ds.string().refine(e=>un(e),e=>({message:`Invalid enum value. Expected ${pn().map(t=>`'${t}'`).join(" | ")}, received '${e}'`}));import{resolve as J}from"path";import{existsSync as st,realpathSync as Yn}from"fs";import{loadConfig as Ms}from"c12";import{z as b}from"zod";var Zn=b.string().uuid("projectId must be a valid UUID"),er=b.string().min(1,"workspaceId must be a non-empty string"),tr=b.discriminatedUnion("store",[b.object({store:b.literal("managed")}),b.object({store:b.literal("dynamodb"),auth:b.string().min(1,"agentSessions.auth is required"),table:b.string().min(1,"agentSessions.table is required"),region:b.string().min(1,"agentSessions.region is required")})]),Me=["openai","anthropic","google","mistral","cohere","openai-compatible"],Fs=["openai","anthropic","google","mistral","cohere"],nr=b.union([b.enum(Fs),b.object({service:b.enum(Me),baseUrl:b.string().url().optional()}).refine(e=>e.service!=="openai-compatible"||e.baseUrl!==void 0,{message:'aiProviders: baseUrl is required when service is "openai-compatible"'}).refine(e=>e.baseUrl===void 0?!0:new URL(e.baseUrl).protocol==="https:",{message:"aiProviders: baseUrl must use https \u2014 ctx.ai requests route through the credentials broker's proxy, which rejects non-https destinations on every call (a plain-http endpoint, e.g. a local Ollama/vLLM instance over http, is not supported)"})]),Ls=b.object({name:b.string().min(1,"name is required"),projectId:Zn.optional(),workspaceId:er.optional(),region:Ft.optional(),env:b.literal("production").optional(),authentications:b.record(b.string()).optional().default({}),config:b.record(b.unknown()).optional().default({}),agentSessions:tr.optional(),aiProviders:b.record(nr).optional()}).transform(({env:e,region:t,...n})=>({...n,region:t??"us1"})),Qn=b.object({name:b.string().min(1,"name is required"),workspaceId:er.optional(),region:Ft,authentications:b.record(b.string()),config:b.record(b.unknown()),agentSessions:tr.optional(),aiProviders:b.record(nr).optional()}),Yc=b.discriminatedUnion("kind",[Qn.extend({kind:b.literal("provisioned"),projectId:Zn}),Qn.extend({kind:b.literal("unprovisioned")})]),rr=["helix","tray"],or=["ts","mts","cts","js","mjs","cjs"],sr="HELIX_CONFIG";function Lt(e){let t=e?.trim();return t||process.env[sr]?.trim()||void 0}function Ns(e,t){let n=Lt(t?.configFile);if(n!==void 0){let r=J(e,n);return st(r)?r:void 0}for(let r of rr)for(let o of or){let s=J(e,`${r}.config.${o}`);if(st(s))return s}}function Us(e){for(let t of rr)if(or.some(n=>st(J(e,`${t}.config.${n}`))))return t;return"helix"}function $s(e,t){return J(e,t).replace(/\.(?:m|c)?[jt]s$/,"")}function js(e,t){let n=Lt(t?.configFile);return{name:Us(e),cwd:e,...n!==void 0?{configFile:$s(e,n)}:{},rcFile:!1,globalRc:!1,packageJson:!1,dotenv:!1,extend:!1}}function Bs(e,t){if(e!==null&&typeof e=="object"&&"extends"in e)throw d.configLoadFailed(`helix.config.ts at ${t}: 'extends' is not supported \u2014 remove the field`);let n=Ls.safeParse(e);if(!n.success){let l=n.error.issues.map(u=>u.message).join("; ");throw d.configLoadFailed(`Invalid helix.config.ts at ${t}: ${l}`)}let{projectId:r,workspaceId:o,...s}=n.data,i=o!==void 0?{workspaceId:o}:{},a=fn(),c=a!==void 0?{...s,region:a}:s;return r!==void 0?{kind:"provisioned",projectId:r,...c,...i}:{kind:"unprovisioned",...c,...i}}async function Qc(e,t){let n=e??process.cwd(),r=Lt(t?.configFile),o=r!==void 0?J(n,r):void 0;if(o!==void 0&&!st(o)){let a=t?.configFile?.trim()?"":` (from ${sr})`;throw d.configLoadFailed(`Config file not found: ${o}${a}`)}let s;try{s=await Ms(js(n,t))}catch(a){throw d.configLoadFailed(`Failed to load helix.config.ts: ${a instanceof Error?a.message:String(a)}`)}let i=s._configFile??Ns(n,t);if(!i)throw d.configLoadFailed(`helix.config.ts not found at ${J(n,"helix.config.ts")}`);if(o!==void 0&&s._configFile!==void 0){let a=Yn(o);if(Yn(J(s._configFile))!==a)throw d.configLoadFailed(`Config file conflict: requested ${o} but ${J(s._configFile)} takes extension-resolution precedence \u2014 remove or rename the sibling file`)}return Bs(s.config,i)}var Ks="WORKSPACE_ID_REQUIRED";function Zc(e){if(e.workspaceId===void 0)throw Object.assign(new Error("No workspaceId found in helix.config.ts. Discover & choose one \u2014 self-serve fix: run `helix workspace select`; agent-driven fix: call the `tray_list_workspaces` MCP tool. Already know the id? Run `helix workspace set <id>` or call the `tray_set_workspace_id` MCP tool. deploy cannot proceed without a workspace."),{code:Ks});return e.workspaceId}var ir="helix-tool",Hs=/^[a-z][a-z0-9_]{0,63}$/;function rl(e){if(typeof e.name!="string"||!Hs.test(e.name))throw new Error(`defineTool: invalid tool name ${JSON.stringify(e.name)} \u2014 use snake_case (e.g. "lookup_customer")`);if(typeof e.description!="string"||e.description.trim().length===0)throw new Error(`defineTool("${e.name}"): description is required`);if(!e.input||typeof e.input.safeParse!="function")throw new Error(`defineTool("${e.name}"): input must be a Zod schema`);if(typeof e.handler!="function")throw new Error(`defineTool("${e.name}"): handler must be a function`);let t=async(r,o)=>{let s=e.input.safeParse(r);if(!s.success)throw d.inputValidationFailed(s.error.issues.map(i=>i.path.join(".")||"(root)"));return e.handler({...o,input:s.data})},n=(async r=>t(r,ze()));return Object.defineProperties(n,{kind:{value:ir,enumerable:!0},name:{value:e.name,enumerable:!0},description:{value:e.description,enumerable:!0},inputSchema:{value:e.input,enumerable:!0},needsApproval:{value:e.needsApproval,enumerable:!0},execute:{value:t,enumerable:!0}}),n}function ar(e){return typeof e=="function"&&e.kind===ir&&typeof e.name=="string"}var I=class extends Error{constructor(t){super(t),this.name="AgentCallerError"}};import{readFileSync as qs}from"fs";import{isAbsolute as Vs,resolve as zs}from"path";var B=new Map;function cr(e){B.set(e.name,{definition:e});for(let t of B.values())t.referencesValidated=void 0}function ll(e,t){let n=B.get(e);n&&(n.baseDir=t,n.resolvedInstructions=void 0)}function dl(e,t){let n=B.get(e);n&&(n.resolvedInstructions=t)}function Fe(e){let t=B.get(e);if(!t){let n=[...B.keys()].sort();throw new I(`Unknown agent "${e}". Registered agents: ${n.join(", ")||"(none \u2014 are the functions/_agents/ modules imported?)"}`)}return t.definition}function ul(){return[...B.values()].map(e=>e.definition)}function lr(e){let t=B.get(e);if(!t)throw new I(`Unknown agent "${e}"`);if(t.resolvedInstructions!==void 0)return t.resolvedInstructions;let{definition:n}=t;if(n.instructions!==void 0)return t.resolvedInstructions=n.instructions,n.instructions;let r=n.instructionsFile,o=Vs(r)?r:t.baseDir!==void 0?zs(t.baseDir,r):void 0;if(o===void 0)throw new Error(`Agent "${e}" uses instructionsFile "${r}" but its base directory is unknown \u2014 load the agent through helix dev (which records it), or use inline \`instructions\`.`);let s;try{s=qs(o,"utf-8")}catch(i){throw new Error(`Agent "${e}": failed to read instructionsFile ${o}: ${i instanceof Error?i.message:String(i)}`)}if(s.trim().length===0)throw new Error(`Agent "${e}": instructionsFile ${o} is empty`);return t.resolvedInstructions=s,s}function dr(e){let t=B.get(e);if(t?.referencesValidated)return;let n=Fe(e);for(let r of n.agents??[]){let s=(Fe(r).tools??[]).filter(i=>i.needsApproval);if(s.length>0)throw new Error(`Agent "${e}" delegates to "${r}", which has needsApproval tools (${s.map(i=>i.name).join(", ")}) \u2014 approval cannot pause a parent's loop through delegation in v1. Put approval-gated tools on the orchestrating agent.`)}t&&(t.referencesValidated=!0)}function pl(){B.clear()}import{z as P}from"zod";var ur="helix-agent",Gs=/^[a-z][a-z0-9-]{0,63}$/,Js=P.object({model:P.string().min(1),auth:P.string().min(1)}),Ws=P.object({name:P.string().regex(Gs,'agent name must be kebab-case (e.g. "support-agent"); name is required in v1'),description:P.string().min(1,"description is required"),model:P.string().min(1,"model is required"),auth:P.string().min(1,"auth (authentication alias) is required"),fallbacks:P.array(Js).optional(),instructions:P.string().min(1).optional(),instructionsFile:P.string().min(1).optional(),tools:P.array(P.custom(ar,"tools entries must be defineTool exports")).optional(),agents:P.array(P.string().min(1)).optional(),memory:P.object({maxSessionMessages:P.number().int().positive().optional(),ttl:P.number().int().positive().optional(),scope:P.enum(["user","project"]).optional()}).optional(),limits:P.object({maxIterations:P.number().int().positive().optional(),maxToolCalls:P.number().int().positive().optional()}).optional()}).refine(e=>e.instructions===void 0!=(e.instructionsFile===void 0),{message:"exactly one of instructions / instructionsFile must be set"}),pr=200,fr=25,mr=50,Nt=3;function hl(e){let t=Ws.safeParse(e);if(!t.success){let o=typeof e?.name=="string"?e.name:"(unnamed)",s=t.error.issues.map(i=>`${i.path.join(".")||"(root)"}: ${i.message}`).join("; ");throw new Error(`defineAgent(${o}): invalid definition \u2014 ${s}`)}let n=new Set;for(let o of t.data.tools??[]){if(n.has(o.name))throw new Error(`defineAgent(${t.data.name}): duplicate tool "${o.name}"`);n.add(o.name)}let r={kind:ur,...t.data};return cr(r),r}function wl(e){return typeof e=="object"&&e!==null&&e.kind===ur&&typeof e.name=="string"}var Xs=50,gr=500;function Le(e){let t=e?.limit??Xs;if(!Number.isInteger(t)||t<1||t>gr)throw new I(`session.page(): limit must be an integer from 1 to ${gr}.`);let n=e?.order??"asc";if(n!=="asc"&&n!=="desc")throw new I('session.page(): order must be "asc" or "desc".');return{limit:t,order:n,cursor:e?.cursor}}function $t(){return new I("session.page(): invalid cursor \u2014 pass the `nextCursor` of the previous page, with the same `order`.")}var W=new Map;function jt(e,t,n){let r=encodeURIComponent;return n!==void 0?`agent:${r(e)}:user:${r(n)}:session:${r(t)}`:`agent:${r(e)}:session:${r(t)}`}function Ys(e,t,n){let r=Math.max(0,e.length-t);for(let s=r;s<e.length;s++)if(e[s]?.role==="user")return e.slice(s);for(let s=r-1;s>=0;s--)if(e[s]?.role==="user")return e.slice(s);if(!n)return;let o=r;for(;o<e.length&&e[o]?.role==="tool";)o++;return e.slice(o)}var Qs=32;async function Bt(e,t){let n=t+Qs;for(;;){let r=await e.messages({limit:n}),o=Ys(r,t,r.length<n);if(o!==void 0)return o;n*=2}}function Kt(e,t){return e.ttlSeconds!==void 0&&t-e.lastActiveAt>e.ttlSeconds*1e3}var Zs=6e4,Ut=0;function ei(e){if(!(e-Ut<Zs)){Ut=e;for(let[t,n]of W)if(Kt(n,e)){if(n.pendingApprovals.length>0){n.messages=[];continue}W.delete(t)}}}var X=class extends Error{constructor(t){super(`Agent session "${t}" has expired (session-expired)`),this.name="SessionExpiredError"}};function yr(e,t,n,r){let o=Date.now();ei(o);let s=n?.ttl,i=t??`ses_${crypto.randomUUID().replaceAll("-","")}`,a=jt(e,i,r),c=W.get(a);if(c&&(c.ttlSeconds=s),c&&Kt(c,o)){if(W.delete(a),c.pendingApprovals.length>0)throw new X(i);c=void 0}c||(c={id:i,agentName:e,...r!==void 0?{ownerUserId:r}:{},messages:[],createdAt:o,lastActiveAt:o,pendingApprovals:[],ttlSeconds:s},W.set(a,c));let l=c,u=()=>{l.lastActiveAt=Date.now()};return{id:i,async messages(p){u();let f=l.messages;return p?.limit!==void 0?f.slice(-p.limit):[...f]},async page(p){let{limit:f,order:m,cursor:S}=Le(p);u();let E=S===void 0?0:Number(S);if(!Number.isInteger(E)||E<0)throw $t();let g=m==="desc"?[...l.messages].reverse():l.messages,h=g.slice(E,E+f),y=E+h.length;return{messages:h,nextCursor:y<g.length?String(y):null}},async append(...p){u(),l.messages.push(...p)},async clear(){W.delete(a)},async truncated(){return!1},async pendingApprovals(){return u(),[...l.pendingApprovals]},async addPendingApprovals(p){u(),l.pendingApprovals.push(...p)},async resolveApproval(p){u();let f=l.pendingApprovals.findIndex(m=>m.approvalId===p);return f===-1?"already-resolved":(l.pendingApprovals.splice(f,1),"resolved")}}}function hr(e,t,n={}){let r=Date.now(),o=n.first??20,s=n.cursor!==void 0&&Number.parseInt(n.cursor,10)||0,i=[...W.values()].filter(c=>c.agentName===e&&c.ownerUserId===t&&!Kt(c,r)).sort((c,l)=>l.lastActiveAt-c.lastActiveAt);return{sessions:i.slice(s,s+o).map(c=>({id:c.id,createdAt:c.createdAt,lastActivityAt:c.lastActiveAt,messageCount:c.messages.length,pendingApprovals:c.pendingApprovals.length})),nextCursor:s+o<i.length?String(s+o):null}}function vl(){W.clear(),Ut=0}import{AsyncLocalStorage as Ei}from"async_hooks";import{z as zr}from"zod";import{generateText as Ii,streamText as Ri,tool as Gr,stepCountIs as Ci}from"ai";import{SpanKind as zt,SpanStatusCode as Se,context as Jr,trace as Ti}from"@opentelemetry/api";import{embed as xr,embedMany as Ar,generateImage as Er,generateObject as Ir,generateSpeech as Rr,generateText as Cr,streamObject as Tr,streamText as kr,transcribe as Pr}from"ai";import{SpanKind as ui,SpanStatusCode as vr}from"@opentelemetry/api";import{createOpenAI as oi}from"@ai-sdk/openai";import{createAnthropic as si}from"@ai-sdk/anthropic";import{createGoogle as ii}from"@ai-sdk/google";import{createMistral as ai}from"@ai-sdk/mistral";import{createCohere as ci}from"@ai-sdk/cohere";import{createOpenAICompatible as li}from"@ai-sdk/openai-compatible";var ti=new Set(["x-api-key","x-goog-api-key"]);function ni(e){return gn(e)||ti.has(e.toLowerCase())}function ri(e){return typeof e=="string"?e:e instanceof URL?e.toString():e.url}function wr(e){return async(t,n)=>{let r=ri(t),o=new URL(r);if(o.protocol!=="https:")throw d.unsupportedScheme(o.protocol.replace(/:$/,""));let s=A(),{region:i}=x(),a=new Headers(n?.headers??(t instanceof Request?t.headers:void 0)),c=new Headers;for(let[g,h]of a.entries())ni(g)||c.append(g,h);c.set(Ie,r),c.set(Ge,e),s.executionId&&c.set(Re,s.executionId);let{headers:l,deploymentId:u}=z(s);for(let[g,h]of Object.entries(l))c.set(g,h);u&&c.set(te,u);let p=pe(i,s.mode==="lambda"?"runtime":"dev"),f=n?.body??(t instanceof Request?t.clone().body:void 0),m={method:n?.method??(t instanceof Request?t.method:"GET"),headers:c,redirect:"manual",signal:n?.signal??void 0};f!=null&&(m.body=f,typeof ReadableStream<"u"&&f instanceof ReadableStream&&(m.duplex="half"));let S;try{S=await fetch(p,m)}catch(g){if(g instanceof Error&&g.name==="AbortError")throw g;let h=g instanceof Error?g.message??String(g):String(g);throw d.brokerError(0,h)}let E=S.headers.get(Je);if(E!==null){let g=await S.text(),h=g||E;try{let y=yn.safeParse(JSON.parse(g));y.success&&(h=y.data.error.message)}catch{}throw E===ue&&(h="credential broker does not support the raw proxy endpoint required by ctx.ai \u2014 deploy a newer broker or pin an older SDK"),d.brokerError(S.status,h,g||void 0,E)}return S}}var ge="helix-broker";function Sr(e){let{alias:t,service:n,baseUrl:r,authenticationId:o}=e,s=wr(o);switch(n){case"openai":return oi({apiKey:ge,fetch:s});case"anthropic":return si({apiKey:ge,fetch:s});case"google":return ii({apiKey:ge,fetch:s});case"mistral":return ai({apiKey:ge,fetch:s});case"cohere":return ci({apiKey:ge,fetch:s});case"openai-compatible":{if(!r)throw d.aiUnsupportedService(t,n,[...Me]);return li({name:t,baseURL:r,apiKey:ge,fetch:s})}}}var br={"gpt-4o-mini":{input:.15,output:.6},"gpt-4o":{input:2.5,output:10},"gpt-4.1-mini":{input:.4,output:1.6},"gpt-4.1-nano":{input:.1,output:.4},"gpt-4.1":{input:2,output:8},"text-embedding-3-small":{input:.02,output:0},"text-embedding-3-large":{input:.13,output:0},"gpt-image-1":{input:5,output:40},"claude-opus-4":{input:15,output:75},"claude-sonnet-4":{input:3,output:15},"claude-haiku-4":{input:1,output:5},"claude-3-5-haiku":{input:.8,output:4},"gemini-2.5-pro":{input:1.25,output:10},"gemini-2.5-flash":{input:.3,output:2.5},"text-embedding-004":{input:0,output:0},"mistral-large":{input:2,output:6},"mistral-small":{input:.1,output:.3},"command-r-plus":{input:2.5,output:10},"command-r":{input:.15,output:.6}},di=Object.keys(br).sort((e,t)=>t.length-e.length);function it(e,t){let n=di.find(s=>e.startsWith(s));if(!n||!t)return{amount:0,currency:"USD"};let r=br[n],o=((t.inputTokens??0)*r.input+(t.outputTokens??0)*r.output)/1e6;return{amount:Number(o.toFixed(8)),currency:"USD"}}function L(e,t,n){return F.startActiveSpan("ai",{kind:ui.CLIENT},async r=>{r.setAttributes({operation:e.operation,model:e.model,...e.alias!==void 0?{alias:e.alias}:{}}),O("hasAi");try{let o=await t(),s=n?.(o);return s&&r.setAttributes({...s.inputTokens!==void 0?{inputTokens:s.inputTokens}:{},...s.outputTokens!==void 0?{outputTokens:s.outputTokens}:{}}),r.setAttribute("status","success"),r.setStatus({code:vr.OK}),o}catch(o){let s=o instanceof Error?o.message:String(o);throw r.setAttribute("status","error"),r.setStatus({code:vr.ERROR,message:s}),o}finally{r.end()}})}function pi(){return`aireq_${crypto.randomUUID().replaceAll("-","")}`}function he(e,t){return{cost:it(e,t),requestId:pi()}}function ae(e){return typeof e=="object"&&e!==null&&"modelId"in e?String(e.modelId):String(e)}var Or=new WeakSet;function ye(e){return Or.add(e),e}function _r(e){return ye(e)}function V(e){if(typeof e!="object"||e===null)throw d.aiModelInstanceRequired(typeof e=="string"?e:String(e));if(!Or.has(e))throw d.aiForeignModelRejected()}function at(e){return e.totalUsage??e.usage}function ct(e){return e.usage?.tokens!==void 0?{inputTokens:e.usage.tokens}:void 0}function lt(e){return e.usage}function Ht(e){let t=x(),n=t.authentications??{};if(!n[e])throw d.unknownAlias(e,Object.keys(n));let r=n[e],o=(t.aiProviders??{})[e];if(o===void 0)throw d.aiProviderNotConfigured(e,[...Me]);let{service:s,baseUrl:i}=typeof o=="string"?{service:o,baseUrl:void 0}:o,a=Sr({alias:e,service:s,baseUrl:i,authenticationId:r}),c=g=>ye(a.languageModel(g)),l=g=>ye(a.embeddingModel(g)),u=g=>ye(a.imageModel(g)),p=g=>{if(!a.transcriptionModel)throw new Error(`AI provider "${s}" (alias "${e}") has no transcription models`);return ye(a.transcriptionModel(g))},f=g=>{if(!a.speechModel)throw new Error(`AI provider "${s}" (alias "${e}") has no speech models`);return ye(a.speechModel(g))},m=(g=>c(g)),S=(g,h)=>{let y=g.model;if(typeof y!="string")throw d.aiModelIdRequired(e,h);return y};return Object.assign(m,{specificationVersion:"v4",languageModel:c,embeddingModel:l,textEmbeddingModel:l,imageModel:u,transcriptionModel:p,speechModel:f,async generateText(g){let h=S(g,"generateText"),y=await L({operation:"generateText",model:h,alias:e},()=>Cr({...g,model:c(h)}),at);return Object.assign(y,{helix:he(h,at(y))})},streamText(g){let h=S(g,"streamText");return O("hasAi"),kr({...g,model:c(h)})},async generateObject(g){let h=S(g,"generateObject"),y=await L({operation:"generateObject",model:h,alias:e},()=>Ir({...g,model:c(h)}),v=>v.usage),w=y.usage;return Object.assign(y,{helix:he(h,w)})},streamObject(g){let h=S(g,"streamObject");return O("hasAi"),Tr({...g,model:c(h)})},async embed(g){let h=S(g,"embed");return L({operation:"embed",model:h,alias:e},()=>xr({...g,model:l(h)}),ct)},async embedMany(g){let h=S(g,"embedMany");return L({operation:"embedMany",model:h,alias:e},()=>Ar({...g,model:l(h)}),ct)},async generateImage(g){let h=S(g,"generateImage"),y=await L({operation:"generateImage",model:h,alias:e},()=>Er({...g,model:u(h)}),lt);return Object.assign(y,{helix:he(h,lt(y))})},async transcribe(g){let h=S(g,"transcribe");return L({operation:"transcribe",model:h,alias:e},()=>Pr({...g,model:p(h)}))},async generateSpeech(g){let h=S(g,"generateSpeech");return L({operation:"generateSpeech",model:h,alias:e},()=>Rr({...g,model:f(h)}))}})}function Gl(){let e=new Map;return Object.assign((r=>{let o=e.get(r);return o||(o=Ht(r),e.set(r,o)),o}),{async generateText(r){V(r.model);let o=ae(r.model),s=await L({operation:"generateText",model:o},()=>Cr(r),at);return Object.assign(s,{helix:he(o,at(s))})},streamText(r){return V(r.model),O("hasAi"),kr(r)},async generateObject(r){V(r.model);let o=ae(r.model),s=await L({operation:"generateObject",model:o},()=>Ir(r),a=>a.usage),i=s.usage;return Object.assign(s,{helix:he(o,i)})},streamObject(r){return V(r.model),O("hasAi"),Tr(r)},async embed(r){return V(r.model),L({operation:"embed",model:ae(r.model)},()=>xr(r),ct)},async embedMany(r){return V(r.model),L({operation:"embedMany",model:ae(r.model)},()=>Ar(r),ct)},async generateImage(r){V(r.model);let o=ae(r.model),s=await L({operation:"generateImage",model:o},()=>Er(r),lt);return Object.assign(s,{helix:he(o,lt(s))})},async transcribe(r){return V(r.model),L({operation:"transcribe",model:ae(r.model)},()=>Pr(r))},async generateSpeech(r){return V(r.model),L({operation:"generateSpeech",model:ae(r.model)},()=>Rr(r))}})}var qt=class extends Error{errors;constructor(t){super(`all ${t.length} models in the fallback chain failed \u2014 `+t.map(({modelId:n,error:r})=>`${n}: ${r instanceof Error?r.message:String(r)}`).join("; ")),this.name="FallbackExhaustedError",this.errors=t.map(n=>n.error)}};function Dr(e){if(e.length===0)throw new Error("createFallbackModel: at least one model required");if(e.length===1)return e[0];let t=e[0];async function n(r){let o=[];for(let s of e)try{return await r(s)}catch(i){if(i instanceof Error&&i.name==="AbortError")throw i;o.push({modelId:s.modelId,error:i})}throw new qt(o)}return{specificationVersion:"v4",provider:t.provider,modelId:t.modelId,get supportedUrls(){return Promise.resolve(t.supportedUrls)},doGenerate:r=>n(o=>o.doGenerate(r)),doStream:r=>n(o=>o.doStream(r))}}function Vt(e){let t=e.code===ue?"credential broker does not support the raw proxy endpoints required by this SDK version \u2014 deploy a newer broker or pin an older SDK":e.message;throw d.brokerError(e.status,t,k(e.body),e.code)}async function we(e,t={}){let n=A(),{region:r}=x(),{headers:o,deploymentId:s}=z(n);s&&(o[te]=s);let i=pe(r,n.mode==="lambda"?"runtime":"dev"),a;try{a=await wn({proxyUrl:i,credentialHeaders:o,request:e,timeoutMs:t.timeout,executionId:n.executionId})}catch(c){let l=c instanceof Error?c.message??String(c):String(c);throw d.brokerError(0,l)}return a.kind==="brokerError"&&Vt(a),a.response}var fi=8,ut="msg#",mi="meta",Mr=25,Fr=3,gi=400*1024-1024;function yi(e){let t=new Set,n=new Set;for(let r of e)if(Array.isArray(r?.content))for(let o of r.content){if(typeof o!="object"||o===null)continue;let{type:s,approvalId:i,isAutomatic:a}=o;typeof i=="string"&&(s==="tool-approval-request"&&a!==!0&&t.add(i),s==="tool-approval-response"&&n.add(i))}for(let r of n)t.delete(r);return t}var N=e=>({S:e}),dt=e=>({N:String(e)});function Ne(e,t){let n=e?.[t]?.S;return typeof n=="string"?n:void 0}function Lr(e,t){let n=e?.[t]?.N;return typeof n=="string"?Number(n):void 0}function hi(e,t){return e?.[t]?.BOOL===!0}function Nr(e,t){let n=e?.[t]?.M;return typeof n=="object"&&n!==null?n:{}}function wi(e){return`${ut}${String(e).padStart(fi,"0")}`}function Si(e){let t=null;if(typeof e=="string")try{t=JSON.parse(e)}catch{return}else e!==null&&typeof e=="object"&&(t=e);let n=t?.__type;return typeof n=="string"?n.split("#").pop():void 0}function Ur(e){let{agentName:t,table:n,region:r,authenticationId:o}=e,s=e.options?.ttl,i=e.sessionId??`ses_${crypto.randomUUID().replaceAll("-","")}`,a=jt(t,i,e.ownerUserId),c={pk:N(a),sk:N(mi)};async function l(y,w){let v=ne({authenticationId:o,method:"POST",url:`https://dynamodb.${r}.amazonaws.com/`,body:w,headers:{"Content-Type":"application/x-amz-json-1.0","X-Amz-Target":`DynamoDB_20120810.${y}`}}),C,T;try{({status:C,body:T}=await we(v))}catch(R){throw R instanceof d?R:d.agentSessionsFailed(R instanceof Error?R.message:String(R))}if(C>=400){let R=Si(T);throw R==="ConditionalCheckFailedException"?new pt:d.agentSessionsFailed(`DynamoDB ${y} failed (${C}): ${R??JSON.stringify(T).slice(0,300)}`)}if(typeof T=="string")try{return JSON.parse(T)}catch{throw d.agentSessionsFailed(`DynamoDB ${y}: non-JSON response body`)}return T??{}}async function u(){return(await l("GetItem",{TableName:n,Key:c,ConsistentRead:!0})).Item}let p=!1;async function f(){p||(await m(),p=!0)}async function m(){let y=await u();if(!y){let v=await S({ascending:!0});if(v.length===0||await u())return;let C=v.map(T=>JSON.parse(Ne(T,"message")??"null"));if(await E(v.map(T=>({DeleteRequest:{Key:{pk:N(a),sk:T.sk}}}))),yi(C).size>0)throw new X(i);return}if(s===void 0)return;let w=Lr(y,"lastActiveAt")??0;if(!(Date.now()-w<=s*1e3)){if(Object.keys(Nr(y,"pendingApprovals")).length>0)throw new X(i);await g()}}async function S(y){let w=[],v;do{let C=await l("Query",{TableName:n,KeyConditionExpression:"pk = :pk AND begins_with(sk, :prefix)",ExpressionAttributeValues:{":pk":N(a),":prefix":N(ut)},ConsistentRead:!0,ScanIndexForward:y.ascending,...y.limit!==void 0?{Limit:y.limit}:{},...y.projection!==void 0?{ProjectionExpression:y.projection}:{},...v!==void 0?{ExclusiveStartKey:v}:{}});if(w.push(...C.Items??[]),v=C.LastEvaluatedKey,y.limit!==void 0&&w.length>=y.limit)break}while(v!==void 0);return w}async function E(y){for(let w=0;w<y.length;w+=Mr){let v=y.slice(w,w+Mr);for(let C=0;v.length>0;C++){let R=(await l("BatchWriteItem",{RequestItems:{[n]:v}})).UnprocessedItems?.[n];if(!R||R.length===0)break;if(C>=Fr)throw d.agentSessionsFailed(`DynamoDB BatchWriteItem: ${R.length} items still unprocessed after ${Fr} retries`);v=R}}}async function g(){let w=(await S({ascending:!0,projection:"sk"})).map(v=>({DeleteRequest:{Key:{pk:N(a),sk:v.sk}}}));w.push({DeleteRequest:{Key:c}}),await E(w)}async function h(y){let w=Date.now();return(await l("UpdateItem",{TableName:n,Key:c,UpdateExpression:"ADD nextSeq :reserve, messageCount :reserve SET lastActiveAt = :now, "+(s!==void 0?"expiresAt = :expires, ":"")+"createdAt = if_not_exists(createdAt, :now), truncated = if_not_exists(truncated, :false), pendingApprovals = if_not_exists(pendingApprovals, :emptyMap)"+(s===void 0?" REMOVE expiresAt":""),ExpressionAttributeValues:{":reserve":dt(y),":now":dt(w),...s!==void 0?{":expires":dt(Math.floor(w/1e3)+s)}:{},":false":{BOOL:!1},":emptyMap":{M:{}}},ReturnValues:"ALL_NEW"})).Attributes??{}}return{id:i,async messages(y){await f();let w=y?.limit;return w!==void 0?(await S({ascending:!1,limit:w})).reverse().map(T=>JSON.parse(Ne(T,"message")??"null")):(await S({ascending:!0})).map(C=>JSON.parse(Ne(C,"message")??"null"))},async page(y){let{limit:w,order:v,cursor:C}=Le(y);await f();let T;if(C!==void 0&&(T=Buffer.from(C,"base64url").toString("utf8"),!T.startsWith(ut)))throw $t();let R=await l("Query",{TableName:n,KeyConditionExpression:"pk = :pk AND begins_with(sk, :prefix)",ExpressionAttributeValues:{":pk":N(a),":prefix":N(ut)},ConsistentRead:!0,ScanIndexForward:v==="asc",Limit:w,...T!==void 0?{ExclusiveStartKey:{pk:N(a),sk:N(T)}}:{}}),ee=R.Items??[],Ve=Ne(R.LastEvaluatedKey,"sk");return{messages:ee.map(Go=>JSON.parse(Ne(Go,"message")??"null")),nextCursor:Ve!==void 0?Buffer.from(Ve,"utf8").toString("base64url"):null}},async append(...y){if(y.length===0)return;let w=y.map(ee=>JSON.stringify(ee)),v=w.findIndex(ee=>Buffer.byteLength(ee,"utf8")>gi);if(v!==-1)throw d.agentSessionsFailed(`a ${y[v].role} message of ${Buffer.byteLength(w[v],"utf8")} bytes exceeds DynamoDB's 400 KB item limit \u2014 the session store keeps one item per message; have tools summarise or offload (ctx.files) large results`);await f();let C=await h(y.length),R=(Lr(C,"nextSeq")??y.length)-y.length+1;await E(w.map((ee,Ve)=>({PutRequest:{Item:{pk:N(a),sk:N(wi(R+Ve)),message:N(ee)}}})))},async clear(){await g()},async truncated(){return await f(),hi(await u(),"truncated")},async pendingApprovals(){await f();let y=Nr(await u(),"pendingApprovals");return Object.values(y).map(w=>{let v=w.S;return v!==void 0?JSON.parse(v):void 0}).filter(w=>w!==void 0)},async addPendingApprovals(y){if(y.length===0)return;await f(),await h(0);let w={},v={},C=[];y.forEach((T,R)=>{w[`#a${R}`]=T.approvalId,v[`:v${R}`]=N(JSON.stringify(T)),C.push(`pendingApprovals.#a${R} = :v${R}`)}),await l("UpdateItem",{TableName:n,Key:c,UpdateExpression:`SET ${C.join(", ")}`,ExpressionAttributeNames:w,ExpressionAttributeValues:v})},async resolveApproval(y){await f();try{return await l("UpdateItem",{TableName:n,Key:c,UpdateExpression:"REMOVE pendingApprovals.#id SET lastActiveAt = :now",ConditionExpression:"attribute_exists(pendingApprovals.#id)",ExpressionAttributeNames:{"#id":y},ExpressionAttributeValues:{":now":dt(Date.now())}}),"resolved"}catch(w){if(w instanceof pt)return"already-resolved";throw w}}}}var pt=class extends Error{constructor(){super("ConditionalCheckFailedException"),this.name="ConditionalCheckFailed"}};import bi from"ky";async function K(e){let t=e.headers.get("content-type")??"",n=await e.text();if(n.length!==0)return t.includes("application/json")?JSON.parse(n):n}var vi=6e4,xi=500,$r=500;function jr(e){let t=x();if(t.kind!=="provisioned")throw d.agentSessionsFailed("the managed session store requires a provisioned project (projectId in helix.config.ts)");return`${j(t.region).hosts.api}/private/v1/helix/projects/${encodeURIComponent(t.projectId)}/storage/agent-sessions/${encodeURIComponent(e)}`}function Ai(){let e=de(),t=$(),n={Accept:"application/json"};if(e&&e.trim().length>0&&(n[le]=e),t&&t.trim().length>0&&(n[U]=t),Object.keys(n).length===1)throw d.missingExecutionCredentials();return n}async function Y(e,t,n){try{let r=await bi(t,{method:e,headers:Ai(),...n!==void 0?{json:n}:{},throwHttpErrors:!1,timeout:vi});return{status:r.status,body:await K(r)}}catch(r){throw r instanceof d?r:d.agentSessionsFailed(`managed session store unreachable: ${r instanceof Error?r.message:String(r)}`)}}function ft(e){if(e!==null&&typeof e=="object"){let t=e;if(typeof t.message=="string")return t.message}return String(e??"unknown error")}function ce(e,t,n){throw t===410?new X(e):t===404?new I(`Agent session "${e}" was not found (it may belong to a different user or have expired).`):d.agentSessionsFailed(`managed session store error ${t}: ${ft(n)}`)}function Br(e){let t=jr(e.agentName),n=e.sessionId??`ses_${crypto.randomUUID().replaceAll("-","")}`,r=e.options?.scope,o=e.options?.ttl,s=async c=>{let l=new URL(`${t}/${encodeURIComponent(n)}/messages`);c.first!==void 0&&l.searchParams.set("first",String(c.first)),c.cursor!==void 0&&l.searchParams.set("cursor",c.cursor),c.order!==void 0&&l.searchParams.set("order",c.order);let{status:u,body:p}=await Y("get",l.toString());if(u!==404){if(u===400&&c.cursor!==void 0)throw new I(`session.page(): ${ft(p)}`);return(u<200||u>=300)&&ce(n,u,p),p}},i=c=>c.elements.length<2||c.elements[0].id>c.elements[1].id,a=async()=>{let c=[],l;for(;;){let u=await s({...l!==void 0?{cursor:l}:{}});if(u===void 0)return[];if(c.push(...u.elements.map(p=>p.message)),!u.pageInfo.hasNextPage||u.pageInfo.endCursor===null)break;l=u.pageInfo.endCursor}return c};return{id:n,async messages(c){let l=c?.limit;if(l===void 0)return a();let u=[],p;for(;u.length<l;){let f=await s({order:"desc",first:Math.min(l-u.length,xi),...p!==void 0?{cursor:p}:{}});if(f===void 0)return[];if(!i(f))return(await a()).slice(-l);if(u.push(...f.elements.map(m=>m.message)),!f.pageInfo.hasNextPage||f.pageInfo.endCursor===null)break;p=f.pageInfo.endCursor}return u.slice(0,l).reverse()},async page(c){let{limit:l,order:u,cursor:p}=Le(c),f=await s({first:l,order:u,...p!==void 0?{cursor:p}:{}});if(f===void 0)return{messages:[],nextCursor:null};if(u==="desc"&&!i(f))throw d.agentSessionsFailed('the managed session store in this environment does not support newest-first paging yet \u2014 page with order: "asc", or read the latest messages with session.messages({ limit }).');return{messages:f.elements.map(m=>m.message),nextCursor:f.pageInfo.hasNextPage?f.pageInfo.endCursor:null}},async append(...c){if(c.length===0)return;let{status:l,body:u}=await Y("post",`${t}/${encodeURIComponent(n)}/messages`,{messages:c,...r!==void 0?{scope:r}:{},...o!==void 0?{ttl:o}:{}});(l<200||l>=300)&&ce(n,l,u)},async clear(){for(let c=0;c<$r;c++){let{status:l,body:u}=await Y("delete",`${t}/${encodeURIComponent(n)}`);if(l===204||l===404)return;if(!(l===200&&u?.more===!0)){if(l===200)return;ce(n,l,u)}}throw d.agentSessionsFailed(`clearing session "${n}" did not complete after ${$r} calls \u2014 call clear() again to continue.`)},async truncated(){let{status:c,body:l}=await Y("get",`${t}/${encodeURIComponent(n)}`);return c===404?!1:((c<200||c>=300)&&ce(n,c,l),l.truncated===!0)},async pendingApprovals(){let{status:c,body:l}=await Y("get",`${t}/${encodeURIComponent(n)}`);return c===404?[]:((c<200||c>=300)&&ce(n,c,l),l.pendingApprovals)},async addPendingApprovals(c){if(c.length===0)return;let{status:l,body:u}=await Y("post",`${t}/${encodeURIComponent(n)}/approvals`,{approvals:c});l!==204&&ce(n,l,u)},async resolveApproval(c){let{status:l,body:u}=await Y("post",`${t}/${encodeURIComponent(n)}/approvals/${encodeURIComponent(c)}/resolve`);return(l<200||l>=300)&&ce(n,l,u),u.status}}}async function Kr(e,t={}){let n=jr(e),r=new URL(n);t.first!==void 0&&r.searchParams.set("first",String(t.first)),t.cursor!==void 0&&r.searchParams.set("cursor",t.cursor);let{status:o,body:s}=await Y("get",r.toString());if(o===400)throw new I(ft(s));if(o<200||o>=300)throw d.agentSessionsFailed(`managed session store error ${o}: ${ft(s)}`);let i=s;return{sessions:i.elements.map(a=>({id:a.sessionId,createdAt:a.createdAt,lastActivityAt:a.lastActivityAt,messageCount:a.messageCount,pendingApprovals:a.pendingApprovalCount})),nextCursor:i.pageInfo.endCursor}}function Hr(e){if(e?.scope!=="user")return;let t=mn.getStore()?.userId;if(typeof t!="string"||t.length===0)throw new I('This agent is user-scoped (memory.scope: "user") \u2014 it can only run in a user execution with a user identity (ctx.userId); schedules have none.');return t}function qr(){return A().mode==="lambda"}function mt(e,t,n){let r=x(),o=r.agentSessions,s=Hr(n);if(o?.store==="dynamodb"){let i=r.authentications??{},a=i[o.auth];if(!a)throw d.unknownAlias(o.auth,Object.keys(i));return Ur({agentName:e,sessionId:t,authenticationId:a,table:o.table,region:o.region,options:n,...s!==void 0?{ownerUserId:s}:{}})}return qr()?Br({agentName:e,sessionId:t,options:n}):yr(e,t,n,s)}async function Vr(e,t,n={}){if(t?.scope!=="user")throw new I(`agent.sessions() lists the calling user's sessions \u2014 the agent must declare memory.scope: "user".`);if(x().agentSessions?.store==="dynamodb")throw new I('agent.sessions() is not supported on the bring-your-own DynamoDB session store \u2014 use the managed store (agentSessions: { store: "managed" }).');let o=Hr(t);return qr()?Kr(e,n):hr(e,o,n)}var Wr=new Ei;function ki(e){return({steps:t})=>t.reduce((n,r)=>n+r.toolCalls.length,0)>=e}function Xr(e,t,n,r){return F.startActiveSpan("agent.tool",{kind:zt.INTERNAL,attributes:{agent:e,tool:t,...n}},async o=>{try{let s=await r();return o.setAttribute("status","success"),o.setStatus({code:Se.OK}),s}catch(s){throw o.setAttribute("status","error"),o.setStatus({code:Se.ERROR,message:s instanceof Error?s.message:String(s)}),s}finally{o.end()}})}function Pi(e){let t={};for(let n of e.tools??[]){let r=n.needsApproval;t[n.name]=Gr({description:n.description,inputSchema:n.inputSchema,...r!==void 0?{needsApproval:typeof r=="function"?o=>r(o):r}:{},execute:o=>Xr(e.name,n.name,{},()=>n.execute(o,ze()))})}for(let n of e.agents??[]){let r=Fe(n),o=`agent_${n.replaceAll("-","_")}`;t[o]=Gr({description:r.description,inputSchema:zr.object({prompt:zr.string().describe("The task or question for the agent")}),execute:({prompt:s})=>Xr(e.name,o,{delegateAgent:n},async()=>{let i=Wr.getStore()??0;return i>=Nt?{error:"delegation_depth_exceeded",message:`Delegation depth limit (${Nt}) reached \u2014 answer with what you have instead of delegating further.`}:(await Wr.run(i+1,()=>Li(n).generate({prompt:s}))).text})})}return t}function Oi(e){let t=[{model:e.model,auth:e.auth},...e.fallbacks??[]];return _r(Dr(t.map(n=>Ht(n.auth)(n.model))))}function Gt(e){return e.filter(t=>typeof t=="object"&&t!==null&&t.type==="tool-approval-request"&&!t.isAutomatic)}function Yr(e){return{approvalId:e.approvalId,toolName:e.toolCall.toolName,toolCallId:e.toolCall.toolCallId,input:e.toolCall.input,requestedAt:new Date().toISOString()}}function _i(e){return{id:e.approvalId,toolName:e.toolCall.toolName,toolCallId:e.toolCall.toolCallId,input:e.toolCall.input}}function Di(e){let t=new Set;for(let n of e)if(Array.isArray(n.content))for(let r of Gt(n.content))t.add(r.approvalId);return t}function Mi(e,t){let n=e.reduce((r,o)=>r+it(o.response.modelId??t,o.usage).amount,0);return{amount:Number(n.toFixed(8)),currency:"USD"}}async function Fi(e,t,n){let r=[],o=[];if(n.approvals&&n.approvals.length>0){if(n.prompt!==void 0||(n.messages?.length??0)>0)throw new I("agent.generate() cannot combine `approvals` with `prompt` or `messages` \u2014 send the approvals on their own, then send new input on the next call.");let s=new Map((await e.pendingApprovals()).map(p=>[p.approvalId,p]));if(s.size===0&&t.length===0)throw new I(`Session "${e.id}" has no history and nothing awaiting approval \u2014 it does not exist, has expired, or belongs to a different user.`);let i=Di(t),a=new Set(n.approvals.map(p=>p.id)),c=[...a].filter(p=>!s.has(p)&&!i.has(p));if(c.length>0)throw new I(`Unknown approval id(s) for session "${e.id}": ${c.join(", ")} \u2014 use the ids from \`pendingApprovals\` on the paused result.`);let l=[...s.keys()].filter(p=>!a.has(p));if(l.length>0)throw new I(`Session "${e.id}" has ${l.length} pending approval(s) not decided in this call: ${l.join(", ")} \u2014 decide every pending approval in one generate() call.`);let u=[];for(let p of n.approvals){let f=s.get(p.id);!f||await e.resolveApproval(p.id)==="already-resolved"||(o.push(f),u.push({type:"tool-approval-response",approvalId:p.id,approved:p.approved,...p.reason!==void 0?{reason:p.reason}:{}}))}u.length>0&&r.push({role:"tool",content:u})}if(n.prompt!==void 0?r.push({role:"user",content:n.prompt}):n.messages&&r.push(...n.messages),r.length===0)throw new I("agent.generate() requires `prompt`, `messages`, or `approvals` \u2014 nothing to do.");return{turn:r,claimed:o}}function Li(e){let t=Fe(e);dr(e);let n=lr(e),r=Oi(t),o=Pi(t),s=t.limits?.maxIterations??fr,i=t.limits?.maxToolCalls??mr,a=t.memory?.maxSessionMessages??pr,c=l=>({model:r,system:n,tools:o,stopWhen:l.stopWhen??[Ci(s),ki(i)],...l.prepareStep!==void 0?{prepareStep:l.prepareStep}:{},...l.activeTools!==void 0?{activeTools:l.activeTools}:{},...l.toolChoice!==void 0?{toolChoice:l.toolChoice}:{},...l.providerOptions!==void 0?{providerOptions:l.providerOptions}:{}});return{model:r,tools:o,instructions:n,session(l){return mt(e,l,t.memory)},sessions(l){return Vr(e,t.memory,l)},async generate(l){return F.startActiveSpan("agent.generate",{kind:zt.INTERNAL,attributes:{agent:e,model:t.model}},async u=>{let p=mt(e,l.sessionId,t.memory);u.setAttribute("sessionId",p.id),O("hasAi");let f=[];try{let m=await Bt(p,a),S=await Fi(p,m,l);f=S.claimed;let E;try{E=await Ii({...c(l),messages:[...m,...S.turn]})}catch(y){if(f.length>0)try{await p.addPendingApprovals(f),f=[]}catch(w){console.error(`[helix-sdk] agent "${e}" session "${p.id}": failed to restore ${f.length} pending approval(s) after a failed resume \u2014 ${w instanceof Error?w.message:String(w)}`)}throw y}let g=Gt(E.content),h=g.length>0?"awaiting-approval":"completed";return await p.append(...S.turn,...E.responseMessages),g.length>0&&await p.addPendingApprovals(g.map(Yr)),u.setAttributes({steps:E.steps.length,status:h}),u.setStatus({code:Se.OK}),Object.assign(E,{sessionId:p.id,status:h,...g.length>0?{pendingApprovals:g.map(_i)}:{},helix:{cost:Mi(E.steps,t.model),model:E.response.modelId??t.model}})}catch(m){throw u.setAttribute("status","error"),u.setStatus({code:Se.ERROR,message:m instanceof Error?m.message:String(m)}),m}finally{u.end()}})},async stream(l){let u=F.startSpan("agent.stream",{kind:zt.INTERNAL,attributes:{agent:e,model:t.model}}),p=!1,f=(m,S)=>{p||(p=!0,u.setAttribute("status",m),u.setStatus(m==="error"?{code:Se.ERROR,...S!==void 0?{message:S}:{}}:{code:Se.OK}),u.end())};try{let m=mt(e,l.sessionId,t.memory);if(u.setAttribute("sessionId",m.id),O("hasAi"),l.approvals&&l.approvals.length>0)throw new I("agent.stream() does not accept approvals \u2014 resume paused runs with generate().");if(l.prompt===void 0&&!l.messages)throw new I("agent.stream() requires `prompt` or `messages`.");let S=l.prompt!==void 0?[{role:"user",content:l.prompt}]:[...l.messages],E=await Bt(m,a),g=Jr.with(Ti.setSpan(Jr.active(),u),()=>Ri({...c(l),messages:[...E,...S],onFinish:async h=>{try{await m.append(...S,...h.responseMessages);let y=Gt(h.content);y.length>0&&await m.addPendingApprovals(y.map(Yr)),f(y.length>0?"awaiting-approval":"completed")}catch(y){let w=y instanceof Error?y.message:String(y);console.error(`[helix-sdk] agent "${e}" session "${m.id}": failed to persist the streamed turn \u2014 ${w}`),f("error",w)}},onError:({error:h})=>{f("error",h instanceof Error?h.message:String(h))},onAbort:()=>{f("error","stream aborted")}}));return Object.assign(g,{sessionId:m.id})}catch(m){throw f("error",m instanceof Error?m.message:String(m)),m}}}}var Qr="helix-schedule",Q=class extends Error{constructor(t){super(`defineSchedule: ${t}`),this.name="ScheduleConfigError"}};function Kd(e){if(typeof e!="object"||e===null)throw new Q("expected a config object");let{cron:t,timezone:n="UTC",concurrent:r=!1,handler:o}=e;if(typeof t!="string"||t.trim()==="")throw new Q("`cron` must be a non-empty string");let s=t.trim().split(/\s+/).length;if(s!==5)throw new Q(`\`cron\` must be a 5-field standard expression (minute hour day-of-month month day-of-week); got ${s} field(s) in "${t}"`);if(typeof n!="string"||!Ni(n))throw new Q(`\`timezone\` must be a valid IANA timezone name (e.g. "Europe/London"); got "${String(n)}"`);if(typeof r!="boolean")throw new Q("`concurrent` must be a boolean");if(typeof o!="function")throw new Q("`handler` must be a function");return Object.freeze({kind:Qr,cron:t.trim(),timezone:n,concurrent:r,handler:o})}function Hd(e){return typeof e=="object"&&e!==null&&e.kind===Qr&&typeof e.handler=="function"}function Ni(e){if(!/^[A-Za-z]/.test(e))return!1;try{return new Intl.DateTimeFormat(void 0,{timeZone:e}),!0}catch{return!1}}import{SpanKind as Ui}from"@opentelemetry/api";function gt(e,t,n){let r=F.startSpan("log",{kind:Ui.INTERNAL});r.setAttribute("message",t),r.setAttribute("level",e),n&&Hn(r.spanContext().spanId,"properties",n),r.end(),kn(e,t,n)}function Zr(){return{info:(e,t)=>gt("info",e,t),warn:(e,t)=>gt("warn",e,t),error:(e,t)=>gt("error",e,t),debug:(e,t)=>gt("debug",e,t)}}function Xd(){try{return x().config??{}}catch(e){return console.warn(`[helix-sdk] Config not loaded: ${e instanceof Error?e.message:String(e)}. Using empty config.`),{}}}import $i from"ky";import{context as Jt,trace as ji,SpanKind as $e,SpanStatusCode as to}from"@opentelemetry/api";async function eo(e){Sn(e.url);let t=A(),{region:n}=x(),r={authenticationId:e.authenticationId,url:e.url,...e.method!==void 0?{method:e.method}:{},...e.expiresIn!==void 0?{expiresIn:e.expiresIn}:{}},{headers:o,deploymentId:s}=z(t);s&&(r.deploymentId=s);let i=bn(n,t.mode==="lambda"?"runtime":"dev"),a;try{a=await vn({signUrl:i,credentialHeaders:o,body:r,timeoutMs:e.timeout,executionId:t.executionId})}catch(c){let l=c instanceof Error?c.message??String(c):String(c);throw d.brokerError(0,l)}if(a.kind==="brokerError"){let c=a.code===ue?"credential broker does not support the s3 sign endpoint required by this SDK version \u2014 deploy a newer broker or pin an older SDK":a.message;throw d.brokerError(a.status,c,k(a.body),a.code)}return a.result}var Bi=new Set([Ie,Ge,te,Re,"authorization","x-tray-token","x-helix-project-execution-token","host","content-length","connection","transfer-encoding","te","upgrade","keep-alive","expect","proxy-authorization","proxy-connection","accept-encoding","x-request-id"]);function Ki(e){let t=e.toLowerCase();return Bi.has(t)||t.startsWith("x-tray-internal-")}async function Hi(e,t){let n=e instanceof Request?e:new Request(e,t),r=new URL(n.url);if(r.protocol!=="https:")throw d.unsupportedScheme(r.protocol.replace(/:$/,""));let o=A(),{region:s}=x(),{headers:i,deploymentId:a}=z(o),c=pe(s,o.mode==="lambda"?"runtime":"dev"),l=new Headers;for(let[m,S]of n.headers.entries())Ki(m)||l.append(m,S);l.set(Ie,n.url);for(let[m,S]of Object.entries(i))l.set(m,S);a&&l.set(te,a),o.executionId&&l.set(Re,o.executionId);let u={method:n.method,headers:l,redirect:"manual",signal:n.signal};n.body&&(u.body=n.body,u.duplex="half");let p;try{p=await fetch(c,u)}catch(m){throw m instanceof Error&&m.name==="AbortError"?m:d.brokerError(0,m instanceof Error?m.message:String(m))}let f=p.headers.get(Je);return f!==null&&Vt(await hn(p,f)),p}var qi=["get","post","put","patch","delete","head","options"],ro="[stream body omitted]";function oo(e){return typeof ReadableStream<"u"&&e instanceof ReadableStream?ro:e instanceof ArrayBuffer?`[binary body: ${e.byteLength} bytes]`:ArrayBuffer.isView(e)?`[binary body: ${e.byteLength} bytes]`:typeof Blob<"u"&&e instanceof Blob?`[binary body: ${e.size} bytes]`:e}function Wt(e){try{return new URL(e).hostname}catch{return e}}function no(e,t,n,r,o){let s=Wt(t),i="externalApi",a={kind:$e.CLIENT};return F.startActiveSpan(i,a,async c=>(c.setAttributes({method:e,host:s,"peer.service":r}),q(c,"request",{url:t,method:e,...n!==void 0?{body:oo(n)}:{}}),o(c)))}function Ue(e,t,n){e.setAttribute("status",t),e.setStatus(t==="success"?{code:to.OK}:{code:to.ERROR,message:n}),e.end()}var Vi=16;async function zi(e,t){let n=e.clone().body;return n?so(n,t):new Uint8Array(0)}async function so(e,t){let n=e.getReader(),r=[],o=0,s=0;try{for(;;){let{done:c,value:l}=await n.read();if(c)break;if(!l||l.byteLength===0){if(s+=1,s>=Vi)break;continue}s=0;let u=t+1-o;if(l.byteLength>=u){r.push(l.slice(0,u)),o+=u;break}r.push(l),o+=l.byteLength}}finally{n.cancel().catch(()=>{}),n.releaseLock()}let i=new Uint8Array(o),a=0;for(let c of r)i.set(c,a),a+=c.byteLength;return i}async function io(e,t,n){if("kyResponse"in n)try{let r=await zi(n.kyResponse,Te),o=new TextDecoder("utf-8").decode(r,{stream:!0}),s;try{s=JSON.parse(o)}catch{s=o}q(e,"response",s)}catch{q(e,"response",{status:t})}else q(e,"response",oo(n.bodyValue))}async function Gi(e,t){if(t instanceof ReadableStream){let n=e.body??t;try{let[r,o]=n.tee(),s=new Request(e,{body:r,duplex:"half"}),i=await so(o,Te);return{body:new TextDecoder("utf-8").decode(i,{stream:!0}),request:s}}catch{return{body:ro}}}return typeof t=="string"?{body:t}:{}}function gu(){let e=$i.create({fetch:Hi,retry:{shouldRetry:({error:r})=>r instanceof d?!1:void 0}});function t(r){return(o,s)=>{let i=Jt.active(),a,c=!1,l=(p,f)=>{a&&!c&&(c=!0,Ue(a,p,f))},u=e.extend({hooks:{beforeRequest:[async(p,f)=>{let m=await Gi(p,f.body),S=m.body;if(a||(a=F.startSpan("externalApi",{kind:$e.CLIENT},i)),a.setAttributes({method:p.method.toUpperCase(),host:Wt(p.url)}),q(a,"request",{url:p.url,method:p.method.toUpperCase(),...S!==void 0?{body:S}:{}}),c=!1,O("hasExternal"),m.request)return m.request}],beforeRetry:[p=>{l("error","retry"),a=void 0,c=!1}],afterResponse:[async(p,f,m)=>{a&&(a.setAttribute("statusCode",m.status),await io(a,m.status,{kyResponse:m}),m.ok?l("success"):s?.throwHttpErrors===!1&&(O("hasError"),l("error",`HTTP ${m.status}`)))}],beforeError:[p=>(O("hasError"),l("error",p.message),p)]}});return a=F.startSpan("externalApi",{kind:$e.CLIENT},i),a.setAttributes({method:r.toUpperCase(),host:Wt(String(o))}),Jt.with(ji.setSpan(Jt.active(),a),()=>{let p=r==="options"?u(o,{...s,method:"OPTIONS"}):u[r](o,s);return p.catch(f=>{O("hasError"),l("error",f instanceof Error?f.message:String(f))}),p})}}let n=Object.fromEntries(qi.map(r=>[r,t(r)]));return{...e,...n,authed(r){return Ji(r)}}}function Ji(e){let n=x().authentications??{};if(!n[e])throw d.unknownAlias(e,Object.keys(n));let r=n[e];function o(i){return(a,c={})=>{let l=i.toUpperCase();return no(l,a,c.body,e,async u=>{O("hasAuth");let p=F.startSpan("auth",{kind:$e.INTERNAL});p.setAttribute("alias",e),p.setAttribute("id",r),p.end();try{let f=ne({authenticationId:r,method:l,url:a,body:c.body,headers:c.headers,query:c.query}),m=await we(f,{timeout:c.timeout});return u.setAttribute("statusCode",m.status),await io(u,m.status,{bodyValue:m.body}),Ue(u,"success"),m}catch(f){throw O("hasError"),f instanceof d&&f.detail.kind==="broker_error"&&f.detail.status>0&&u.setAttribute("statusCode",f.detail.status),Ue(u,"error",f instanceof Error?f.message:String(f)),f}})}}function s(i,a={}){let c=a.method??"GET";return no(c,i,void 0,e,async l=>{O("hasAuth");let u=F.startSpan("auth",{kind:$e.INTERNAL});u.setAttribute("alias",e),u.setAttribute("id",r),u.end();try{let p=await eo({authenticationId:r,url:i,method:c,...a.expiresIn!==void 0?{expiresIn:a.expiresIn}:{},...a.timeout!==void 0?{timeout:a.timeout}:{}});return l.setAttribute("statusCode",200),Ue(l,"success"),p}catch(p){throw O("hasError"),p instanceof d&&p.detail.kind==="broker_error"&&p.detail.status>0&&l.setAttribute("statusCode",p.detail.status),Ue(l,"error",p instanceof Error?p.message:String(p)),p}})}return{get:o("get"),post:o("post"),put:o("put"),patch:o("patch"),delete:o("delete"),head:o("head"),options:o("options"),s3Sign:s}}import{SpanKind as ra,SpanStatusCode as uo}from"@opentelemetry/api";function je(e){let t=e.trimStart().match(/^([A-Za-z]+)/);return t?t[1].toUpperCase():"QUERY"}var Wi=18e4,ao=Wi-1e4,Xi=2e3;async function co(e,t,n){let r=new Set(["FINISHED","FAILED","ABORTED"]),o=Date.now(),s=0;for(;Date.now()-o<ao;){let i=await e(t,"DescribeStatement",{Id:n}),a=i.Status;if(r.has(a))return i;let c=Math.min(Xi,200*2**s),l=c/2+Math.random()*(c/2),u=ao-(Date.now()-o);await new Promise(p=>setTimeout(p,Math.min(l,u))),s++}throw d.dbCallFailed(`statement polling exceeded budget after ${Date.now()-o}ms`)}var Yi=new Set(["SELECT","WITH","SHOW"]),Qi=new Set(["INSERT","UPDATE","DELETE","MERGE"]);function Zi(e){if(!e.clusterIdentifier&&!e.workgroupName)throw d.dbInvalidParameters("either clusterIdentifier or workgroupName is required");if(e.clusterIdentifier&&e.workgroupName)throw d.dbInvalidParameters("clusterIdentifier and workgroupName are mutually exclusive (Provisioned vs Serverless)");if(!e.database)throw d.dbInvalidParameters("database is required");if(e.clusterIdentifier&&!e.dbUser)throw d.dbInvalidParameters("dbUser is required when using clusterIdentifier (Provisioned)");if(!e.region)throw d.dbInvalidParameters("region is required")}function ea(e,t){let n=null;if(typeof t=="string")try{n=JSON.parse(t)}catch{}else t!==null&&typeof t=="object"&&(n=t);let r=typeof n?.__type=="string"?n.__type:void 0,o=typeof n?.message=="string"?n.message:void 0;if(r&&o)return d.dbQueryFailed(`${r}: ${o}`);let s=typeof t=="string"?re(t):k(t);return d.dbCallFailed(s)}function ta(e){if(e==null||typeof e!="string")return e;try{return JSON.parse(e)}catch{throw d.dbCallFailed("upstream body not JSON: "+e.slice(0,200))}}function na(e,t){return typeof t!="number"||t<0?{}:Yi.has(e)?{rowsRead:t}:Qi.has(e)?{rowsWritten:t}:{}}function lo(e){async function t(n,r,o){let s=ne({authenticationId:e,method:"POST",url:`https://redshift-data.${n}.amazonaws.com/`,body:o,headers:{"Content-Type":"application/x-amz-json-1.1","X-Amz-Target":`RedshiftData.${r}`}});try{let{status:i,body:a}=await we(s);if(i>=400)throw ea(i,a);return ta(a)}catch(i){if(i instanceof d)throw i;let a=i instanceof Error?i.message??String(i):String(i);throw d.dbCallFailed(a,i instanceof Error?i:void 0)}}return{system:"redshift",validate:Zi,async execute(n,r){let o=je(r),s={Sql:r,Database:n.database,...n.clusterIdentifier&&{ClusterIdentifier:n.clusterIdentifier,DbUser:n.dbUser},...n.workgroupName&&{WorkgroupName:n.workgroupName},...n.statementName&&{StatementName:n.statementName}},i=await t(n.region,"ExecuteStatement",s),a=i,c=typeof a?.Id=="string"?a.Id:void 0;if(!c){let m=k(i);throw d.dbCallFailed(`ExecuteStatement response missing Id; got: ${m}`)}let l=await co(t,n.region,c),u=l.Status;if(u==="FAILED"){let m=typeof l.Error=="string"?l.Error:"statement failed";throw d.dbQueryFailed(`${m} (statement: ${c})`)}if(u==="ABORTED")throw d.dbQueryFailed(`statement aborted (statement: ${c})`);let p=na(o,l.ResultRows);return l.HasResultSet===!1?{result:{rowsAffected:l.ResultRows??0},metadata:p}:{result:await t(n.region,"GetStatementResult",{Id:c}),metadata:p}}}}var Xt=64*1024;function oa(e){return e.length>Xt?`${e.slice(0,Xt)}...[truncated]`:e}function sa(e,t,n,r,o){e.setAttributes({system:t.system,statement:o,namespace:n.database,operation:r})}function ia(e,t,n){let r=typeof t=="string"?t:JSON.stringify(t);return r.length>Xt?q(e,"result",{truncated:!0,size:r.length}):q(e,"result",t),n.rowsRead!==void 0&&e.setAttribute("rowsRead",n.rowsRead),n.rowsWritten!==void 0&&e.setAttribute("rowsWritten",n.rowsWritten),r}async function aa(e,t,n){let r=je(n),o=oa(n);return F.startActiveSpan("database",{kind:ra.CLIENT},async s=>{sa(s,e,t,r,o);try{O("hasDb");let{result:i,metadata:a}=await e.execute(t,n),c=ia(s,i,a);return s.setAttribute("status","success"),s.setStatus({code:uo.OK}),c}catch(i){O("hasError");let a=i instanceof Error?i.message:String(i);throw s.setAttribute("status","error"),s.setStatus({code:uo.ERROR,message:a}),i}finally{s.end()}})}function ca(e){let n=x().authentications??{};if(!n[e])throw d.unknownAlias(e,Object.keys(n));let r=n[e],o=lo(r);function s(i,a){return o.validate(i),aa(o,i,a)}return{parameters(i){return{sql(a){return s(i,a)}}},sql(i){return s({},i)}}}import{createStorage as fa}from"unstorage";var po=1024,Yt=250*1024,la=new TextEncoder,da=/(^|\/)\.\.(\/|$)/,ua=/[?#]/,pa=/[\u0000-\u001F\u007F]/;function fo(e){if(e.length===0)throw d.kvKeyInvalid("Key must be a non-empty string");if(da.test(e))throw d.kvKeyInvalid("Key contains path traversal segment");if(ua.test(e)||pa.test(e))throw d.kvKeyInvalid("Key contains illegal characters");if(e.startsWith("/")||e.endsWith("/")||e.split("/").some(n=>n===""))throw d.kvKeyInvalid("Key must not contain empty path segments");let t=la.encode(e).length;if(t<1||t>po)throw d.kvKeyInvalid(`Key must be between 1 and ${po} UTF-8 bytes (got ${t})`)}function mo(e){if(!Number.isInteger(e)||e<=0)throw d.kvTtlInvalid(`ttl must be a positive integer number of seconds (got ${e})`)}function go(e){let t;try{t=JSON.stringify(e)}catch{throw d.kvValueInvalid("Value must be JSON-serializable")}if(t===void 0)throw d.kvValueInvalid("Value must be JSON-serializable");let n=Buffer.byteLength(t,"utf8");if(n>Yt)throw d.kvValueTooLarge(`Value exceeds maximum size of ${Yt} bytes (got ${n})`,Yt)}function Be(e){fo(e)}function yt(e,t){let n=e[t];if(typeof n!="function")throw new Error(`KV driver is missing ${t}`);return n}function yo(e){let t=yt(e,"getItem"),n=yt(e,"setItem"),r=yt(e,"removeItem"),o=yt(e,"hasItem"),s=e.getKeys;return{...e,getItem(i,a){return Be(i),t(i,a)},setItem(i,a,c){return Be(i),n(i,a,c)},removeItem(i,a){return Be(i),r(i,a)},hasItem(i,a){return Be(i),o(i,a)},getKeys(i,a){return i.length>0&&Be(i),s(i,a)}}}function ht(e){return fa({driver:yo(e)})}import{defineDriver as ma}from"unstorage";function ga(e){try{return JSON.parse(e)}catch{return e}}var ya=ma(e=>{let{client:t}=e;return{name:"helix-kv",async getItem(n){let r=await t.get(n);return r===null?null:JSON.stringify(r)},async setItem(n,r,o){let s=o?.ttl,i=ga(r);s!==void 0?await t.set(n,i,{ttl:s}):await t.set(n,i)},async removeItem(n){await t.delete(n)},async hasItem(n){return await t.has(n)},async getKeys(){throw new Error("KV key listing is not supported")}}});function ho(e){return ya({client:e})}import Sa from"ky";import{z as M}from"zod";function wo(e){return j(e).hosts.api}function ha(e){return`/private/v1/helix/projects/${encodeURIComponent(e)}/storage/kv`}function wa(e){return e.split("/").map(encodeURIComponent).join("/")}function Ke(e,t,n){return`${e}${ha(t)}/${wa(n)}`}var ba=6e4,Qt=M.lazy(()=>M.union([M.string(),M.number(),M.boolean(),M.null(),M.array(Qt),M.record(Qt)])),va=M.object({projectId:M.string(),key:M.string(),value:Qt,type:M.enum(["string","number","boolean","null","array","object"]),organizationId:M.string(),scope:M.string(),createdBy:M.string(),createdAt:M.number(),updatedBy:M.string(),updatedAt:M.number()});function xa(){let e=de(),t=$(),n=!!(e&&e.trim().length>0),r=!!(t&&t.trim().length>0);if(!n&&!r)throw d.missingExecutionCredentials();let o={Accept:"application/json"};return n&&(o[le]=e),r&&(o[U]=t),o}function Aa(e){if(e!==null&&typeof e=="object"){let t=e;if(typeof t.message=="string")return t.message;if(typeof t.error=="string")return t.error}return String(e??"unknown error")}function wt(e,t){throw d.kvCallFailed(e,Aa(t),k(t))}async function St(e,t,n={}){try{let r=await Sa(t,{method:e,headers:xa(),...n.json!==void 0?{json:n.json}:{},throwHttpErrors:!1,timeout:ba}),o=e==="head"?void 0:await K(r);return{status:r.status,body:o}}catch(r){if(r instanceof d)throw r;let o=r instanceof Error?r.message??String(r):String(r);throw d.kvCallFailed(0,o)}}function So(e){let t=wo(e.env),{projectId:n}=e;return{async get(r){let{status:o,body:s}=await St("get",Ke(t,n,r));if(o===404)return null;(o<200||o>=300)&&wt(o,s);let i=va.safeParse(s);if(!i.success)throw d.kvCallFailed(o,"platform returned malformed KeyValueEntry",k(s));return i.data.value},async set(r,o,s){let{status:i,body:a}=await St("put",Ke(t,n,r),{json:s?.ttl!==void 0?{value:o,ttl:s.ttl}:{value:o}});(i<200||i>=300)&&wt(i,a)},async delete(r){let{status:o,body:s}=await St("delete",Ke(t,n,r));o!==204&&wt(o,s)},async has(r){let{status:o,body:s}=await St("head",Ke(t,n,r));if(o===200)return!0;if(o===404)return!1;wt(o,s)}}}function bt(e){return{getItem:t=>e.getItem(t),removeItem:t=>e.removeItem(t),hasItem:t=>e.hasItem(t),setItem:async(t,n,r)=>{let o=r?.ttl;go(n),typeof o=="number"&&mo(o),await e.setItem(t,n,o!==void 0?{ttl:o}:void 0)}}}function Ea(){let e=x();if(e.kind!=="provisioned")throw d.kvRequiresProvisioning();return{projectId:e.projectId,env:e.region}}function bo(e){let t=Ea(),n=e??So(t),r=ht(ho(n));return bt(r)}import{defineDriver as Ia}from"unstorage";var Ra=Ia(e=>{let t=new Map;function n(r){let o=t.get(r);if(o&&o.expiresAt!==void 0&&o.expiresAt<=Date.now()){t.delete(r);return}return o}return{name:"memory-ttl",getItem(r){return n(r)?.value??null},setItem(r,o,s){let i=s?.ttl,a=n(r),c=typeof i=="number"?Date.now()+i*1e3:i===null?void 0:a?.expiresAt;t.set(r,{value:o,expiresAt:c})},removeItem(r){t.delete(r)},hasItem(r){return n(r)!==void 0},getKeys(){return[...t.keys()].filter(r=>n(r)!==void 0)},clear(){t.clear()}}});function vo(){return Ra({})}var Zt;function Ca(){return Zt||(Zt=ht(vo())),Zt}function xo(){return bt(Ca())}function Ta(){return typeof __TRAY_SDK_MODE__<"u"?__TRAY_SDK_MODE__==="lambda":A().mode==="lambda"}function Sp(){return Ta()?bo():xo()}import{createHash as Oa}from"crypto";import{mkdir as _a,readFile as Co,readdir as To,rm as Eo,unlink as Da,writeFile as Io}from"fs/promises";import{dirname as Ma}from"path";async function ka(e){let t=e.getReader(),n=[],r=0;for(;;){let{done:o,value:s}=await t.read();if(o)break;if(s){if(r+=s.byteLength,r>G)throw await t.cancel(),d.filesValueTooLarge(`File exceeds maximum size of ${G} bytes (got more than ${G})`,G);n.push(s)}}return Buffer.concat(n)}async function be(e){return Buffer.isBuffer(e)?e:typeof e=="string"?Buffer.from(e,"utf-8"):e instanceof ReadableStream?ka(e):Buffer.from(e)}var Pa={pdf:"application/pdf",csv:"text/csv",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",json:"application/json",txt:"text/plain",html:"text/html",htm:"text/html",css:"text/css",js:"application/javascript",xml:"application/xml",zip:"application/zip"},Ao="application/octet-stream";function vt(e){let t=e.lastIndexOf(".");if(t===-1||t===e.length-1)return Ao;let n=e.slice(t+1).toLowerCase();return Pa[n]??Ao}function xe(){let e=A().projectRoot;if(!e)throw d.filesNotAvailable();return e}async function ve(e){try{return await e()}catch(t){if(t instanceof d)throw t;let n=t?.code;throw n?d.filesCallFailed(0,`Local file storage operation failed: ${n}`):d.filesCallFailed(0,"Local file storage operation failed: unknown error")}}function xt(e,t){return{path:e,size:t.size,contentType:t.contentType,lastModified:new Date(t.lastModified),etag:t.etag}}async function en(e){try{let t=await Co(rt(xe(),e),"utf-8");return JSON.parse(t)}catch(t){if(t.code==="ENOENT")return null;throw t}}async function Ro(e){await _a(Ma(e),{recursive:!0})}async function Fa(e,t){let n=ot(e,t),r;try{r=await To(n,{withFileTypes:!0})}catch(o){if(o.code==="ENOENT")return[];throw o}return r.filter(o=>o.isFile()).map(o=>t.length===0?o.name:`${t}/${o.name}`)}async function ko(e,t){let n=ot(e,t),r;try{r=await To(n,{withFileTypes:!0})}catch(s){if(s.code==="ENOENT")return[];throw s}let o=[];for(let s of r){let i=t.length===0?s.name:`${t}/${s.name}`;s.isDirectory()?o.push(...await ko(e,i)):s.isFile()&&o.push(i)}return o}function Po(){return{async put(e,t,n){return ve(async()=>{let r=xe(),o=await be(t),s=n?.contentType??vt(e),i=Oa("sha1").update(o).digest("hex"),a=new Date,c=De(r,e);await Ro(c),await Io(c,o);let l={size:o.byteLength,contentType:s,lastModified:a.toISOString(),etag:i},u=rt(r,e);return await Ro(u),await Io(u,JSON.stringify(l)),xt(e,l)})},async get(e){return ve(async()=>{let t=await en(e);return t?{data:await Co(De(xe(),e)),metadata:xt(e,t)}:null})},async head(e){return ve(async()=>{let t=await en(e);return t?xt(e,t):null})},async delete(e){return ve(async()=>{let t=xe();await Promise.all([De(t,e),rt(t,e)].map(async n=>{try{await Da(n)}catch(r){if(r.code!=="ENOENT")throw r}}))})},async deleteMany(e){return ve(async()=>{let t=xe(),n=await ko(t,e);return await Promise.all([Eo(ot(t,e),{recursive:!0,force:!0}),Eo(Xn(t,e),{recursive:!0,force:!0})]),{deleted:n.length}})},async list(e,t){return ve(async()=>{let n=xe(),r=t?.limit??100,s=(await Fa(n,e??"")).slice(0,r);return{files:(await Promise.all(s.map(async a=>{let c=await en(a);return c?xt(a,c):null}))).filter(a=>a!==null),cursor:null}})},async getUploadUrl(e,t){let n=A().devServerUrl;if(!n)throw d.filesNotAvailable();return{url:`${n}/_helix/files/${e}`,expiresAt:me(t?.expiresIn)}},async getDownloadUrl(e,t){let n=A().devServerUrl;if(!n)throw d.filesNotAvailable();return{url:`${n}/_helix/files/${e}`,expiresAt:me(t?.expiresIn)}}}}import{createHash as Ka}from"crypto";function At(e){return j(e).hosts.api}function La(e){return`/private/v1/helix/files/projects/${encodeURIComponent(e)}`}function He(e,t){return`${e}${La(t)}`}function Ae(e,t,n){return`${He(e,t)}/${encodeURIComponent(n)}`}function Et(e,t,n){return`${Ae(e,t,n)}/upload`}function Oo(e,t,n){return`${Ae(e,t,n)}/download`}function _o(e,t,n){return`${Ae(e,t,n)}/signed-url`}function Do(e,t,n,r){let o=new URLSearchParams({name:r});return n&&o.set("parentFolder",n),`${He(e,t)}/file?${o.toString()}`}function Mo(e,t,n,r){let o=new URLSearchParams({limit:String(r)});return n&&o.set("id",n),`${He(e,t)}?${o.toString()}`}import nn from"ky";import{z as _}from"zod";var rn=6e4,Fo=_.object({id:_.string(),workspaceId:_.string(),projectId:_.string(),parentFolder:_.string().nullable().optional(),name:_.string(),size:_.number().nullable().optional(),objectType:_.enum(["Folder","File"]),contentType:_.string().nullable().optional(),createdAt:_.string(),updatedAt:_.string()}),Na=_.object({signedURL:_.string()}),Ua=_.object({path:_.array(_.object({id:_.string(),name:_.string()})),elements:_.array(Fo)});function on(){let e=de(),t=$(),n=!!(e&&e.trim().length>0),r=!!(t&&t.trim().length>0);if(!n&&!r)throw d.missingExecutionCredentials();let o={Accept:"application/json"};return n&&(o[le]=e),r&&(o[U]=t),o}function Lo(e){if(e!==null&&typeof e=="object"){let t=e;if(typeof t.message=="string")return t.message;if(typeof t.error=="string")return t.error}return String(e??"unknown error")}function Z(e,t){throw d.filesCallFailed(e,Lo(t),k(t))}function $a(e,t){return e===400&&Lo(t).toLowerCase()==="resource not found"}async function ja(e){let t=new Response(e),n=t.headers.get("content-type")??"multipart/form-data",r=await t.arrayBuffer();return{body:Buffer.from(r),contentType:n}}async function Ee(e,t,n={}){try{let r=await nn(t,{method:e,headers:on(),...n.json!==void 0?{json:n.json}:{},throwHttpErrors:!1,timeout:rn}),o=await K(r);return{status:r.status,body:o}}catch(r){if(r instanceof d)throw r;let o=r instanceof Error?r.message:String(r);throw d.filesCallFailed(0,o)}}function tn(e,t){let n=Fo.safeParse(t);if(!n.success)throw d.filesCallFailed(e,"platform returned malformed ObjectMetadata",k(t));return n.data}function No(e){let t=At(e.env),{projectId:n}=e;return{async createMetadata(r){let{status:o,body:s}=await Ee("post",He(t,n),{json:r});return(o<200||o>=300)&&Z(o,s),tn(o,s)},async getByName(r,o){let{status:s,body:i}=await Ee("get",Do(t,n,r,o));return s===404||$a(s,i)?null:((s<200||s>=300)&&Z(s,i),tn(s,i))},async getById(r){let{status:o,body:s}=await Ee("get",Ae(t,n,r));return o===404?null:((o<200||o>=300)&&Z(o,s),tn(o,s))},async listChildren(r,o){let{status:s,body:i}=await Ee("get",Mo(t,n,r,o));(s<200||s>=300)&&Z(s,i);let a=Ua.safeParse(i);if(!a.success)throw d.filesCallFailed(s,"platform returned malformed listing",k(i));return a.data},async uploadContent(r,o,s,i){let a=new FormData;a.append("fileUploadContentInput",new Blob([new Uint8Array(o)],{type:i}),s);let{body:c,contentType:l}=await ja(a),u;try{u=await nn(Et(t,n,r),{method:"post",headers:{...on(),"content-type":l},body:new Uint8Array(c),throwHttpErrors:!1,timeout:rn})}catch(f){if(f instanceof d)throw f;let m=f instanceof Error?f.message:String(f);throw d.filesCallFailed(0,m)}let p=await K(u);(u.status<200||u.status>=300)&&Z(u.status,p)},async downloadContent(r){let o;try{o=await nn(Oo(t,n,r),{method:"get",headers:on(),throwHttpErrors:!1,timeout:rn})}catch(i){if(i instanceof d)throw i;let a=i instanceof Error?i.message:String(i);throw d.filesCallFailed(0,a)}if(o.status<200||o.status>=300){let i=await K(o);Z(o.status,i)}let s=await o.arrayBuffer();return Buffer.from(s)},async getSignedDownloadUrl(r){let{status:o,body:s}=await Ee("get",_o(t,n,r));(o<200||o>=300)&&Z(o,s);let i=Na.safeParse(s);if(!i.success)throw d.filesCallFailed(o,"platform returned malformed signed URL response",k(s));return i.data.signedURL},async deleteById(r){let{status:o,body:s}=await Ee("delete",Ae(t,n,r));o===204||o===404||(o<200||o>=300)&&Z(o,s)}}}function sn(e){return e.split("/").filter(t=>t.length>0)}function an(e){return e instanceof d&&e.detail.kind==="files_call_failed"&&e.detail.status===409}async function Ba(e,t,n){let r=await e.getByName(t,n);if(r)return r;try{return await e.createMetadata({parentFolder:t,objectType:"Folder",name:n})}catch(o){if(an(o)){let s=await e.getByName(t,n);if(s)return s}throw o}}async function cn(e,t){let n=sn(t),r=n[n.length-1],o;for(let s of n.slice(0,-1))o=(await Ba(e,o,s)).id;return{parentFolder:o,name:r}}async function qe(e,t){let n=sn(t),r=n[n.length-1],o;for(let s of n.slice(0,-1)){let i=await e.getByName(o,s);if(!i||i.objectType!=="Folder")return null;o=i.id}return{parentFolder:o,name:r}}async function ln(e,t){if(t.length===0)return;let n=sn(t),r;for(let o of n){let s=await e.getByName(r,o);if(!s||s.objectType!=="Folder")return null;r=s.id}return r}var Ha=500,qa=8;async function Va(e,t,n){let r=new Array(e.length),o=0;async function s(){for(;o<e.length;){let i=o++;r[i]=await n(e[i])}}return await Promise.all(Array.from({length:Math.min(t,e.length)},s)),r}function za(){let e=x();if(e.kind!=="provisioned")throw d.filesRequiresProvisioning();return{projectId:e.projectId,env:e.region}}function Ga(e){return Ka("sha1").update(`${e.id}:${e.updatedAt}:${e.size??0}`).digest("hex")}function It(e,t,n){return{path:e,size:t.size??0,contentType:t.contentType??n??"application/octet-stream",lastModified:new Date(t.updatedAt),etag:Ga(t)}}async function Uo(e,t,n,r){try{return await e.createMetadata({parentFolder:t,objectType:"File",contentType:r,name:n})}catch(o){if(an(o)){let s=await e.getByName(t,n);if(s)return s}throw o}}async function $o(e,t){let{elements:n}=await e.listChildren(t,Ha);return(await Va(n,qa,async o=>{let s=o.objectType==="Folder"?await $o(e,o.id):1;return await e.deleteById(o.id),s})).reduce((o,s)=>o+s,0)}function jo(e){let t=za(),n=e??No(t),r=At(t.env),{projectId:o}=t;return{async put(s,i,a){let{parentFolder:c,name:l}=await cn(n,s),u=await be(i),p=a?.contentType??vt(s),f=await n.getByName(c,l);if(f&&f.objectType!=="File")throw d.filesCallFailed(409,`A folder already exists at "${s}"`);let m=f??await Uo(n,c,l,p);await n.uploadContent(m.id,u,l,p);let S=await n.getById(m.id);return It(s,S??m,p)},async get(s){let i=await qe(n,s);if(!i)return null;let a=await n.getByName(i.parentFolder,i.name);return!a||a.objectType!=="File"?null:{data:await n.downloadContent(a.id),metadata:It(s,a)}},async head(s){let i=await qe(n,s);if(!i)return null;let a=await n.getByName(i.parentFolder,i.name);return!a||a.objectType!=="File"?null:It(s,a)},async delete(s){let i=await qe(n,s);if(!i)return;let a=await n.getByName(i.parentFolder,i.name);a&&await n.deleteById(a.id)},async deleteMany(s){let i=await ln(n,s);if(i===null)return{deleted:0};let a=await $o(n,i);return s.length>0&&i!==void 0&&await n.deleteById(i),{deleted:a}},async list(s,i){let a=await ln(n,s??"");if(a===null)return{files:[],cursor:null};let c=i?.limit??100,{elements:l}=await n.listChildren(a,c);return{files:l.filter(p=>p.objectType==="File").map(p=>It(s?`${s}/${p.name}`:p.name,p)),cursor:null}},async getUploadUrl(s,i){let{parentFolder:a,name:c}=await cn(n,s),u=await n.getByName(a,c)??await Uo(n,a,c,i?.contentType);return{url:Et(r,o,u.id),expiresAt:me(i?.expiresIn)}},async getDownloadUrl(s,i){let a=await qe(n,s),c=a?await n.getByName(a.parentFolder,a.name):null;if(!c||c.objectType!=="File")throw d.filesCallFailed(404,`File not found: ${s}`);return{url:await n.getSignedDownloadUrl(c.id),expiresAt:me(i?.expiresIn)}}}}function dn(e,t){let n=t?.maxPathBytes;return{async put(r,o,s){ie(r,n);let i=await be(o);return Jn(i.byteLength),e.put(r,i,s)},async get(r){return ie(r,n),e.get(r)},async head(r){return ie(r,n),e.head(r)},async delete(r){return ie(r,n),e.delete(r)},async deleteMany(r){let o=Mt(r);return tt(o,n),e.deleteMany(o)},async list(r,o){let s=Mt(r??"");return tt(s,n),e.list(s,o)},async getUploadUrl(r,o){return ie(r,n),e.getUploadUrl(r,o)},async getDownloadUrl(r,o){return ie(r,n),e.getDownloadUrl(r,o)}}}function Ja(){return typeof __TRAY_SDK_MODE__<"u"?__TRAY_SDK_MODE__==="lambda":A().mode==="lambda"}function pf(){if(Ja())return dn(jo());let e=A().projectRoot;return dn(Po(),{maxPathBytes:e?Wn(e):void 0})}import Xa from"ky";function Bo(e){return j(e).hosts.api}function Wa(){return"/private/v1/helix/function-calls"}function Ko(e){return`${e}${Wa()}`}var Ya=5e3;function Qa(){let e=$();if(!!!(e&&e.trim().length>0))throw d.callFunctionMissingExecutionJwt();return{Accept:"application/json",[U]:e}}function Za(e,t){throw d.callFunctionCallFailed(e,ec(t),k(t))}function ec(e){if(e!==null&&typeof e=="object"){let t=e;if(typeof t.message=="string")return t.message;if(typeof t.error=="string")return t.error}return String(e??"unknown error")}function Ho(e){let t=Bo(e.env);return{async callAsync(n,r){let o,s;try{let i=await Xa(Ko(t),{method:"post",headers:Qa(),json:{functionPath:n,input:r},throwHttpErrors:!1,timeout:Ya});o=i.status,s=await K(i)}catch(i){if(i instanceof d)throw i;let a=i instanceof Error?i.message??String(i):String(i);throw d.callFunctionCallFailed(0,a)}(o<200||o>=300)&&Za(o,s)}}}var qo=1024;function Rt(e){if(typeof e!="string"||e.trim().length===0)throw d.callFunctionPathInvalid("functionPath must be a non-empty string");if(e.length>qo)throw d.callFunctionPathInvalid(`functionPath must be at most ${qo} characters`)}function tc(){let e=x();if(e.kind!=="provisioned")throw d.callFunctionRequiresProvisioning();return{env:e.region}}function Vo(e){return async function(n,r){Rt(n),await(e??Ho(tc())).callAsync(n,r)}}function zo(){return async function(t,n){Rt(t);let r=A().devServerUrl;if(!r)throw d.callFunctionNotAvailable();let o=t.startsWith("/")?t:`/${t}`,s=Zr();fetch(`${r}${o}`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(n??{})}).then(i=>{i.ok||s.warn("ctx.callFunctionAsync: dev-mode dispatch returned a non-2xx response",{functionPath:t,status:i.status})}).catch(i=>{s.warn("ctx.callFunctionAsync: dev-mode dispatch failed",{functionPath:t,error:i instanceof Error?i.message:String(i)})})}}function nc(){return typeof __TRAY_SDK_MODE__<"u"?__TRAY_SDK_MODE__==="lambda":A().mode==="lambda"}function Uf(){return nc()?Vo():zo()}export{rc as a,oc as b,sc as c,x as d,ic as e,Kn as f,gs as g,O as h,q as i,bs as j,vs as k,F as l,xs as m,Mc as n,Zr as o,Xd as p,gu as q,ca as r,Sp as s,ie as t,De as u,rt as v,pf as w,Uf as x,Kc as y,Ft as z,Zn as A,er as B,tr as C,Me as D,nr as E,Yc as F,sr as G,Lt as H,Ns as I,js as J,Bs as K,Qc as L,Ks as M,Zc as N,Gl as O,ir as P,rl as Q,ar as R,I as S,ll as T,dl as U,Fe as V,ul as W,pl as X,ur as Y,hl as Z,wl as _,X as $,vl as aa,ki as ba,Li as ca,Qr as da,Q as ea,Kd as fa,Hd as ga};
|