woml-cli 1.0.7 → 1.0.8

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.
@@ -1,8 +1,10 @@
1
1
  // @bun
2
- var N$=Object.create;var{getPrototypeOf:V$,defineProperty:r,getOwnPropertyNames:H$}=Object;var B$=Object.prototype.hasOwnProperty;function L$(J){return this[J]}var K$,R$,YJ=(J,$,G)=>{var Q=J!=null&&typeof J==="object";if(Q){var Y=$?K$??=new WeakMap:R$??=new WeakMap,Z=Y.get(J);if(Z)return Z}G=J!=null?N$(V$(J)):{};let X=$||!J||!J.__esModule?r(G,"default",{value:J,enumerable:!0}):G;for(let U of H$(J))if(!B$.call(X,U))r(X,U,{get:L$.bind(J,U),enumerable:!0});if(Q)Y.set(J,X);return X};var ZJ=(J,$)=>()=>($||J(($={exports:{}}).exports,$),$.exports);function k(J,$,G){if(J===null||typeof J==="string"||typeof J==="boolean")return;if(typeof J==="number")return Number.isFinite(J)?void 0:{path:$,reason:"numbers must be finite"};if(typeof J!=="object")return{path:$,reason:`${typeof J} is not a JSON value`};if(G.has(J))return{path:$,reason:"circular references are not JSON values"};G.add(J);try{if(Array.isArray(J)){let Y=new Set(["length"]);for(let Z=0;Z<J.length;Z+=1){if(Y.add(String(Z)),!Object.prototype.hasOwnProperty.call(J,Z))return{path:`${$}[${Z}]`,reason:"array holes are not JSON values"};let X=k(J[Z],`${$}[${Z}]`,G);if(X!==void 0)return X}for(let Z of Reflect.ownKeys(J))if(typeof Z!=="string"||!Y.has(Z))return{path:$,reason:"arrays must not contain custom properties"};return}let Q=Object.getPrototypeOf(J);if(Q!==Object.prototype&&Q!==null)return{path:$,reason:"objects must be plain JSON objects"};for(let Y of Reflect.ownKeys(J)){if(typeof Y!=="string")return{path:$,reason:"symbol keys are not JSON object keys"};let Z=Object.getOwnPropertyDescriptor(J,Y);if(Z===void 0||Z.enumerable!==!0||"get"in Z||"set"in Z)return{path:`${$}.${Y}`,reason:"JSON fields must be enumerable data properties"};let X=k(Z.value,`${$}.${Y}`,G);if(X!==void 0)return X}return}finally{G.delete(J)}}function P(J){return k(J,"$",new Set)}function z(J){if(typeof J!=="object"||J===null)return J;if(Array.isArray(J))for(let $ of J)z($);else for(let $ of Object.values(J))z($);return Object.isFrozen(J)?J:Object.freeze(J)}var S=Object.getPrototypeOf(async function(){}).constructor;function F(J,$){let G=J;for(let Q of $)if(Q.length>0)G=G.split(Q).join("[REDACTED]");return G.slice(0,1024)}function a(J){try{let $=JSON.parse(J);if(!Array.isArray($.sources))return[];return $.sources.filter((G)=>typeof G==="string"&&G.length>0&&G.length<=512&&!G.startsWith("/")&&!G.includes("\\")&&!G.split("/").includes(".."))}catch{return[]}}function J$(J){if(J.sourceMap===void 0)return J.bundle;let $=Buffer.from(J.sourceMap,"utf8").toString("base64");return`${J.bundle.replace(/\n?\/\/# sourceMappingURL=.*$/m,"")}
3
- //# sourceMappingURL=data:application/json;base64,${$}`}function o(J,$){if(J===void 0||$===void 0)return;let G=new Set;for(let Q of $){if(Q.sourceMap===void 0)continue;for(let Y of a(Q.sourceMap))G.add(Y)}for(let Q of J.split(`
4
- `))for(let Y of G){let Z=Q.indexOf(Y);if(Z<0)continue;let X=Q.slice(Z+Y.length),U=/^:(\d+):(\d+)/.exec(X);if(U!==null)return`${Y}:${U[1]}:${U[2]}`}for(let Q of $){if(Q.sourceMap===void 0)continue;let Y=a(Q.sourceMap)[0];if(Y===void 0)continue;let Z=Buffer.from(J$(Q),"utf8").toString("base64"),X=J.indexOf(`data:text/javascript;base64,${Z}`);if(X<0)continue;let U=J.slice(X+`data:text/javascript;base64,${Z}`.length),N=/^:(\d+):(\d+)/.exec(U);if(N!==null)return`${Y}:${N[1]}:${N[2]}`}return}function W$(J,$=[],G){if(J instanceof s)return{ok:!1,error:{kind:"service",name:J.name,message:F(J.message,$),capability:"http",operation:"fetch",callId:J.callId,cause:J.cause}};if(typeof J==="object"&&J!==null||typeof J==="function"){let Q=G$.get(J);if(Q!==void 0)return{ok:!1,error:{kind:"service",name:J instanceof Error?J.name:"Error",message:F(Q.cause.message,$),capability:"http",operation:"fetch",callId:Q.callId,cause:Q.cause}}}if(J instanceof C)return{ok:!1,error:{kind:"service",name:J.name,message:F(J.message,$),capability:J.capability,operation:J.operation,callId:J.callId,cause:J.cause}};if(J instanceof Error)return{ok:!1,error:{kind:"script",name:J.name,message:F(J.message,$),...J.stack===void 0?{}:{stack:F(J.stack,$)},...o(J.stack,G)===void 0?{}:{moduleFrame:o(J.stack,G)}}};return{ok:!1,error:{kind:"script",name:"Error",message:F(String(J),$)}}}class C extends Error{code;service;capability;operation;callId;retryable;ambiguous;details;cause;constructor(J,$,G,Q){super(Q.message);this.name="WomlServiceError",this.code=Q.code,this.service=J,this.capability=J,this.operation=$,this.callId=G,this.retryable=Q.retryable,this.ambiguous=Q.ambiguous,this.details=Q.details,this.cause=Q}}var v=new Map,q=new Map,y=new Map,d=new Map,b=new Map,A$=0,t=globalThis.fetch.bind(globalThis),G$=new WeakMap;class s extends Error{callId;cause;code;retryable;ambiguous;constructor(J,$){super($.message);this.name="WomlFetchTrackingError",this.callId=J,this.cause=$,this.code=$.code,this.retryable=$.retryable,this.ambiguous=$.ambiguous}}function D$(J){if(J===void 0||J===null)return;if(typeof J==="string")return Buffer.byteLength(J,"utf8");if(J instanceof URLSearchParams)return Buffer.byteLength(J.toString(),"utf8");if(J instanceof Blob)return J.size;if(J instanceof ArrayBuffer)return J.byteLength;if(ArrayBuffer.isView(J))return J.byteLength;return}function x$(J,$,G,Q){let Y=G instanceof Request?G.url:G instanceof URL?G.href:String(G),Z=new URL(Y);if(Z.protocol!=="http:"&&Z.protocol!=="https:")return;let X=String(Q?.method??(G instanceof Request?G.method:"GET")).toUpperCase(),U=D$(Q?.body);return{contract:"woml.native-fetch-observation",contractVersion:1,observationType:"started",invocationId:J.invocationId,requestId:$,method:X,origin:Z.origin,path:Z.pathname,...U===void 0?{}:{requestBodyBytes:U},startedAt:new Date().toISOString()}}async function j(J){if(q.has(J.requestId))throw Error("Native Fetch reused an active request ID.");await new Promise(($,G)=>{q.set(J.requestId,{resolve:$,reject:G}),self.postMessage({messageType:"fetch_observation",observation:J})})}function T$(J){return async(G,Q)=>{let Y=`fetch_${++A$}_${crypto.randomUUID().replaceAll("-","")}`,Z=performance.now(),X=x$(J,Y,G,Q);if(X===void 0)return t(G,Q);await j(X);let U;try{U=await t(G,Q)}catch(N){let V=N instanceof Error?N.name:"",_=V==="AbortError"?"cancelled":V==="TimeoutError"?"timed_out":"fetch_rejected",H={kind:_==="cancelled"?"cancelled":_==="timed_out"?"timed_out":"transport_failed",code:_==="cancelled"?"WOML_NATIVE_FETCH_CANCELLED":_==="timed_out"?"WOML_NATIVE_FETCH_TIMED_OUT":"WOML_NATIVE_FETCH_REJECTED",message:_==="cancelled"?"Bun Fetch was cancelled.":_==="timed_out"?"Bun Fetch exceeded its deadline.":"Bun Fetch rejected the request.",retryable:!1,ambiguous:!0};if(await j({contract:"woml.native-fetch-observation",contractVersion:1,observationType:"failed",invocationId:J.invocationId,requestId:Y,durationMs:Math.max(0,performance.now()-Z),failedAt:new Date().toISOString(),error:{kind:_,code:H.code,message:H.message}}),typeof N==="object"&&N!==null||typeof N==="function")G$.set(N,{callId:Y,cause:H});throw N}return await j({contract:"woml.native-fetch-observation",contractVersion:1,observationType:"completed",invocationId:J.invocationId,requestId:Y,status:U.status,responseBodyBytes:null,durationMs:Math.max(0,performance.now()-Z),completedAt:new Date().toISOString()}),U}}async function E$(J,$){let G=new TextEncoder().encode(`woml.capability-operation\x00v1\x00${J}\x00${$}`);return`sha256:${[...new Uint8Array(await crypto.subtle.digest("SHA-256",G))].map((Y)=>Y.toString(16).padStart(2,"0")).join("")}`}function e(){return`call_${crypto.randomUUID().replaceAll("-","")}`}function R(J){return J!==null&&typeof J==="object"&&!Array.isArray(J)?J:void 0}function f$(J){if(J.timeout!==void 0&&J.timeoutMs!==void 0)throw TypeError("Managed HTTP accepts timeout or timeoutMs, not both.");let $=J.timeout??J.timeoutMs??30000;if(typeof $==="number"&&Number.isSafeInteger($))return $;if(typeof $!=="string")throw TypeError("Managed HTTP timeout must be milliseconds or a duration string.");let G=$.match(/^(\d+)(ms|s|m|h)$/);if(G===null)throw TypeError("Managed HTTP timeout must look like 500ms, 10s, 2m, or 1h.");let Q=G[2]==="ms"?1:G[2]==="s"?1000:G[2]==="m"?60000:3600000;return Number(G[1])*Q}function z$(J){let $=R(J);if($===void 0)throw TypeError("services.http.request() requires a request object.");let G=new Set(["url","method","headers","query","json","text","bytesBase64","responseType","storage","timeout","timeoutMs","acceptedStatus","redirect","maximumRedirects","idempotency"]),Q=Object.keys($).find((_)=>!G.has(_));if(Q!==void 0)throw TypeError(`Unknown managed HTTP option "${Q}".`);if(typeof $.url!=="string"||$.url.length===0)throw TypeError("Managed HTTP requires a URL string.");let Y=String($.method??"GET").toUpperCase(),Z=R($.headers??{});if(Z===void 0||Object.values(Z).some((_)=>typeof _!=="string"))throw TypeError("Managed HTTP headers must contain string values.");let X=f$($);if(!Number.isSafeInteger(X)||X<1||X>86400000)throw TypeError("Managed HTTP timeout must be between 1 ms and 24 hours.");let U=$.responseType??"json",N=R($.storage);if(U==="storage"){if(N===void 0)throw TypeError('Managed HTTP responseType "storage" requires a storage target.');let _=Object.keys(N).find((H)=>!["key","contentType","overwrite","ifVersion"].includes(H));if(_!==void 0)throw TypeError(`Unknown managed HTTP storage option "${_}".`);if(typeof N.key!=="string"||N.key.length===0)throw TypeError("Managed HTTP storage requires a key string.");if(N.contentType!==void 0&&typeof N.contentType!=="string")throw TypeError("Managed HTTP storage contentType must be a string.");if(N.overwrite!==void 0&&typeof N.overwrite!=="boolean")throw TypeError("Managed HTTP storage overwrite must be a Boolean.");if(N.ifVersion!==void 0&&typeof N.ifVersion!=="string")throw TypeError("Managed HTTP storage ifVersion must be a string.");if(N.overwrite!==void 0&&N.ifVersion!==void 0)throw TypeError("Managed HTTP storage overwrite and ifVersion are mutually exclusive.")}else if($.storage!==void 0)throw TypeError('Managed HTTP storage is valid only with responseType "storage".');let V={contract:"woml.managed-http",contractVersion:1,kind:"request",method:Y,url:$.url,headers:Z,responseType:U,timeoutMs:X,acceptedStatus:$.acceptedStatus??{minimum:200,maximum:299},redirect:$.redirect??"follow",maximumRedirects:$.maximumRedirects??10};for(let _ of["query","json","text","bytesBase64","idempotency","storage"])if($[_]!==void 0)V[_]=$[_];return V}function F$(J){let $=R(J);if($===void 0)throw TypeError("services.telegram.send() requires a request object.");let G=new Set(["botToken","conversationId","text","replyToMessageId"]),Q=Object.keys($).find((Y)=>!G.has(Y));if(Q!==void 0)throw TypeError(`Unknown Telegram send option "${Q}".`);for(let Y of["botToken","conversationId","text"])if(typeof $[Y]!=="string"||$[Y].length===0)throw TypeError(`Telegram send requires a non-empty ${Y} string.`);if($.replyToMessageId!==void 0&&(typeof $.replyToMessageId!=="string"||$.replyToMessageId.length===0))throw TypeError("Telegram replyToMessageId must be a non-empty string.");return{contract:"woml.telegram-message",contractVersion:1,kind:"send",botToken:$.botToken,conversationId:$.conversationId,text:$.text,...$.replyToMessageId===void 0?{}:{replyToMessageId:$.replyToMessageId}}}function M$(J){let $=R(J);if($===void 0||$.provider!=="telegram"||typeof $.conversationId!=="string"||typeof $.messageId!=="string"||typeof $.acceptedAt!=="string")throw TypeError("Telegram returned an invalid managed result.");return Object.freeze({provider:"telegram",conversationId:$.conversationId,messageId:$.messageId,acceptedAt:$.acceptedAt})}function S$(J){let $=R(J);if($===void 0)throw TypeError("services.discord.send() requires a request object.");let G=new Set(["botToken","conversationId","text","replyToMessageId"]),Q=Object.keys($).find((Y)=>!G.has(Y));if(Q!==void 0)throw TypeError(`Unknown Discord send option "${Q}".`);for(let Y of["botToken","conversationId","text"])if(typeof $[Y]!=="string"||$[Y].length===0)throw TypeError(`Discord send requires a non-empty ${Y} string.`);if(!/^[0-9]{17,20}$/.test($.conversationId))throw TypeError("Discord conversationId must be a numeric snowflake.");if($.text.length>2000)throw TypeError("Discord text may contain at most 2000 characters.");if($.replyToMessageId!==void 0&&(typeof $.replyToMessageId!=="string"||!/^[0-9]{17,20}$/.test($.replyToMessageId)))throw TypeError("Discord replyToMessageId must be a numeric snowflake.");return{contract:"woml.discord-message",contractVersion:1,kind:"send",botToken:$.botToken,conversationId:$.conversationId,text:$.text,...$.replyToMessageId===void 0?{}:{replyToMessageId:$.replyToMessageId}}}function C$(J){let $=R(J);if($===void 0||$.provider!=="discord"||typeof $.conversationId!=="string"||typeof $.messageId!=="string"||typeof $.acceptedAt!=="string")throw TypeError("Discord returned an invalid managed result.");return Object.freeze({provider:"discord",conversationId:$.conversationId,messageId:$.messageId,acceptedAt:$.acceptedAt})}function I$(J){let $=R(J);if($===void 0)throw TypeError("services.whatsapp.send() requires a request object.");let G=new Set(["accessToken","phoneNumberId","conversationId","template"]),Q=Object.keys($).find((Z)=>!G.has(Z));if(Q!==void 0)throw TypeError(`Unknown WhatsApp send option "${Q}".`);for(let Z of["accessToken","phoneNumberId","conversationId"])if(typeof $[Z]!=="string"||$[Z].length===0)throw TypeError(`WhatsApp send requires a non-empty ${Z} string.`);if(!/^[0-9]{6,32}$/.test($.phoneNumberId))throw TypeError("WhatsApp phoneNumberId must be a numeric Meta Phone Number ID.");if(!/^[0-9]{8,16}$/.test($.conversationId))throw TypeError("WhatsApp conversationId must contain 8 to 16 digits without a plus sign.");let Y=R($.template);if(Y===void 0||Object.keys(Y).some((Z)=>Z!=="name"&&Z!=="language"&&Z!=="parameters")||typeof Y.name!=="string"||!/^[a-z][a-z0-9_]{0,511}$/.test(Y.name)||typeof Y.language!=="string"||!/^[a-z]{2,3}(?:_[A-Z]{2})?$/.test(Y.language)||!Array.isArray(Y.parameters)||Y.parameters.length>32||Y.parameters.some((Z)=>typeof Z!=="string"||Z.length>1024))throw TypeError("WhatsApp template must contain a valid name, language, and string parameters array.");return{contract:"woml.whatsapp-message",contractVersion:1,kind:"send",accessToken:$.accessToken,phoneNumberId:$.phoneNumberId,conversationId:$.conversationId,template:{name:Y.name,language:Y.language,parameters:Y.parameters}}}function O$(J){let $=R(J);if($===void 0||$.provider!=="whatsapp"||typeof $.conversationId!=="string"||typeof $.messageId!=="string"||typeof $.acceptedAt!=="string")throw TypeError("WhatsApp returned an invalid managed result.");return Object.freeze({provider:"whatsapp",conversationId:$.conversationId,messageId:$.messageId,acceptedAt:$.acceptedAt})}function Q$(J,$,G){if(G===void 0){let Z=`${J}.${$}`,X=(y.get(Z)??0)+1;return y.set(Z,X),{mode:"automatic",name:X===1?Z:`${Z}.${X}`}}let Q=R(G),Y=Q?.name;if(Q===void 0||Object.keys(Q).length!==1||typeof Y!=="string"||!/^[a-z][a-z0-9._-]{0,127}$/.test(Y))throw TypeError('Service call options must be exactly { name: "stable-operation-name" }.');return{mode:"named",name:`${J}.${$}.${Y}`}}function w$(J){let $=R(J);if($?.contract!=="woml.managed-http"||$.contractVersion!==1||$.kind!=="result")throw TypeError("Rust returned an invalid Managed HTTP v1 result.");return{status:$.status,ok:$.ok,headers:$.headers,data:$.data,url:$.url,redirected:$.redirected}}var u=new Set(["query","execute","read","insert","update","delete","transaction"]);function P$(J){let $=R(J);if($===void 0||Object.keys($).some((G)=>G!=="driver"&&G!=="connection")||$.driver!=="sqlite"&&$.driver!=="postgres"||typeof $.connection!=="string"||$.connection.length===0)throw TypeError('services.db() requires exactly { driver: "sqlite" | "postgres", connection: "database connection" }.');return{driver:$.driver,connection:$.connection}}function q$(J,$,G){if(!u.has($))throw TypeError(`Unknown Database v1 operation "${$}".`);return{contract:"woml.database",contractVersion:1,kind:"request",driver:J.driver,connection:J.connection,operation:$,input:G}}function h$(J,$){let G=R(J);if(G?.contract!=="woml.database"||G.contractVersion!==1||G.kind!=="result"||G.operation!==$||G.data===void 0)throw TypeError("Rust returned an invalid Database v1 result.");return G.data}var l=new Set(["put","get","head","list","delete"]),X$=new Set(["get","set","delete","has","increment","setIfAbsent"]),Y$=new Set(["get","has","set","delete","increment","setIfAbsent"]),k$=new Set(["get","has","set","delete","increment","set_if_absent"]),j$=new Set(["get","set","delete","has","increment","set_if_absent"]),g$=new Set(["emit"]);function m$(J,$){let G=R($);if(G===void 0)throw TypeError(`services.storage.${J}() requires an object.`);let Y={put:["key","value","text","bytesBase64","contentType","overwrite","ifVersion"],get:["key","responseType","ifVersion"],head:["key"],list:["prefix","limit","cursor"],delete:["key","ifVersion"]}[J];if(Y===void 0)throw TypeError(`Unknown Storage v1 operation "${J}".`);let Z=Object.keys(G).find((X)=>!Y.includes(X));if(Z!==void 0)throw TypeError(`Unknown Storage v1 ${J} option "${Z}".`);if(J==="get")return{...G,responseType:G.responseType??"json"};if(J==="list")return{prefix:"",limit:100,...G};return G}function v$(J,$){if(!l.has(J))throw TypeError(`Unknown Storage v1 operation "${J}".`);return{contract:"woml.storage",contractVersion:1,kind:"request",operation:J,input:m$(J,$)}}function y$(J,$){let G=R(J);if(G?.contract!=="woml.storage"||G.contractVersion!==1||G.kind!=="result"||G.operation!==$||G.data===void 0)throw TypeError("Rust returned an invalid Storage v1 result.");return G.data}function d$(J){if(J===void 0)return 300000;if(typeof J==="number"&&Number.isSafeInteger(J)){if(J>=1&&J<=2592000000)return J}else if(typeof J==="string"){let $=J.match(/^(\d+)(ms|s|m|h|d)$/);if($!==null){let G=$[2]==="ms"?1:$[2]==="s"?1000:$[2]==="m"?60000:$[2]==="h"?3600000:86400000,Q=Number($[1])*G;if(Number.isSafeInteger(Q)&&Q>=1&&Q<=2592000000)return Q}}throw TypeError("Cache ttl must be milliseconds or a whole duration from 1ms through 30d.")}function g(J,$){if(J===void 0)return{ttlMs:300000};let G=R(J),Q=$?["ttl","name"]:["name"];if(G===void 0||Object.keys(G).some((Y)=>!Q.includes(Y))||G.name!==void 0&&typeof G.name!=="string")throw TypeError($?"Cache options accept only ttl and a stable name.":"Cache options accept only a stable name.");return{ttlMs:d$(G.ttl),...G.name===void 0?{}:{callOptions:{name:G.name}}}}function b$(J,$){if(!X$.has(J))throw TypeError(`Unknown Cache v1 operation "${J}".`);let G=$[0];if(typeof G!=="string")throw TypeError(`services.cache.${J}() requires a string key.`);let Q,Y,Z=J==="setIfAbsent"?"set_if_absent":J;if(J==="get"||J==="has"){if($.length!==1)throw TypeError(`services.cache.${J}() accepts only a key.`);Q={key:G}}else if(J==="delete"){if($.length>2)throw TypeError("services.cache.delete() accepts key and options.");let X=g($[1],!1);Q={key:G},Y=X.callOptions}else if(J==="set"||J==="setIfAbsent"){if($.length<2||$.length>3)throw TypeError(`services.cache.${J}() requires key, value, and optional options.`);let X=g($[2],!0);Q={key:G,value:$[1],ttlMs:X.ttlMs},Y=X.callOptions}else{if($.length>3)throw TypeError("services.cache.increment() accepts key, optional amount, and options.");let X=R($[1])!==void 0,U=$[1]===void 0||X?1:$[1];if(typeof U!=="number"||!Number.isSafeInteger(U))throw TypeError("Cache increment amount must be a safe integer.");let N=g(X?$[1]:$[2],!0);Q={key:G,amount:U,ttlMs:N.ttlMs},Y=N.callOptions}return{request:{contract:"woml.cache",contractVersion:1,kind:"request",operation:Z,input:Q},...Y===void 0?{}:{callOptions:Y}}}function u$(J,$){let G=R(J);if(G?.contract!=="woml.cache"||G.contractVersion!==1||G.kind!=="result"||G.operation!==$||G.data===void 0)throw TypeError("Rust returned an invalid Cache v1 result.");return G.data}function l$(J,$){if(typeof J!=="string"||J.length===0||Buffer.byteLength(J,"utf8")>256)throw TypeError(`services.state.${$}() requires a non-empty key up to 256 UTF-8 bytes.`);return J}function m(J,$){let G=R(J),Q=$?["name","ifVersion"]:["name"];if(G===void 0||Object.keys(G).some((Y)=>!Q.includes(Y))||typeof G.name!=="string"||!/^[a-z][a-z0-9._-]{0,127}$/.test(G.name)||G.ifVersion!==void 0&&(!Number.isSafeInteger(G.ifVersion)||Number(G.ifVersion)<0))throw TypeError($?"State mutation options require a stable name and optional non-negative ifVersion.":"State mutation options require exactly one stable name.");return{callOptions:{name:G.name},...G.ifVersion===void 0?{}:{ifVersion:Number(G.ifVersion)}}}function s$(J){let $=P(J);if($!==void 0)throw TypeError(`State value ${$.path}: ${$.reason}`);let G=JSON.stringify(J);if(Buffer.byteLength(G,"utf8")>262144)throw TypeError("State values must not exceed 256 KiB of canonical JSON.");return J}function c$(J,$){if(!Y$.has(J))throw TypeError(`Unknown Durable User State v1 operation "${J}".`);let G=l$($[0],J),Q,Y,Z=J==="setIfAbsent"?"set_if_absent":J;if(J==="get"||J==="has"){if($.length!==1)throw TypeError(`services.state.${J}() accepts only a key.`);Q={key:G}}else if(J==="delete"){if($.length!==2)throw TypeError("services.state.delete() requires key and mutation options.");let X=m($[1],!0);Q={key:G,...X.ifVersion===void 0?{}:{ifVersion:X.ifVersion}},Y=X.callOptions}else if(J==="set"||J==="setIfAbsent"){if($.length!==3)throw TypeError(`services.state.${J}() requires key, JSON value, and mutation options.`);let X=m($[2],J==="set");Q={key:G,value:s$($[1]),...X.ifVersion===void 0?{}:{ifVersion:X.ifVersion}},Y=X.callOptions}else{if($.length!==3||typeof $[1]!=="number"||!Number.isSafeInteger($[1]))throw TypeError("services.state.increment() requires key, safe-integer amount, and mutation options.");let X=m($[2],!0);Q={key:G,amount:$[1],...X.ifVersion===void 0?{}:{ifVersion:X.ifVersion}},Y=X.callOptions}return{request:{contract:"woml.state",contractVersion:1,kind:"request",operation:Z,input:Q},...Y===void 0?{}:{callOptions:Y}}}function p$(J,$){let G=R(J),Q=R(G?.data),Y=(N,V=[])=>Q!==void 0&&N.every((_)=>Object.hasOwn(Q,_))&&Object.keys(Q).every((_)=>N.includes(_)||V.includes(_)),Z=(N)=>typeof N==="number"&&Number.isSafeInteger(N)&&N>=1,X=(N)=>typeof N==="string"&&Number.isFinite(Date.parse(N)),U=$==="get"?Y(["found"])&&Q?.found===!1||Y(["found","value","version","updatedAt"])&&Q?.found===!0&&Z(Q.version)&&X(Q.updatedAt):$==="has"?Y(["present"])&&Q?.present===!1||Y(["present","version"])&&Q?.present===!0&&Z(Q.version):$==="set"?Y(["stored","version","updatedAt"])&&Q?.stored===!0&&Z(Q.version)&&X(Q.updatedAt):$==="delete"?Y(["deleted"])&&typeof Q?.deleted==="boolean":$==="increment"?Y(["value","version","updatedAt"])&&typeof Q?.value==="number"&&Number.isSafeInteger(Q.value)&&Z(Q.version)&&X(Q.updatedAt):$==="set_if_absent"?Y(["stored","value","version","updatedAt"])&&typeof Q?.stored==="boolean"&&Z(Q.version)&&X(Q.updatedAt):!1;if(G?.contract!=="woml.state"||G.contractVersion!==1||G.kind!=="result"||G.operation!==$||!U)throw TypeError("Rust returned an invalid Durable User State v1 result.");return z(Q)}function n$(J){if(J.length<1||J.length>3)throw TypeError("services.events.emit() requires an event name, optional payload, and optional options.");let $=J[0];if(typeof $!=="string"||!/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$/.test($)||Buffer.byteLength($,"utf8")>256)throw TypeError("services.events.emit() requires a valid lowercase dotted event name.");let G=J[1]??{};if(R(G)===void 0)throw TypeError("Event payload must be a top-level JSON object.");let Q=J[2];if(Q!==void 0)Q$("events","emit",Q);return{request:{contract:"woml.events",contractVersion:1,kind:"request",operation:"emit",input:{name:$,payload:G}},...Q===void 0?{}:{callOptions:Q}}}function i$(J){let $=R(J);if($?.contract!=="woml.events"||$.contractVersion!==1||$.kind!=="result"||$.operation!=="emit"||$.data===void 0)throw TypeError("Rust returned an invalid Events Service v1 result.");return $.data}function r$(J){if(typeof J==="number"&&Number.isSafeInteger(J))return J;if(typeof J!=="string")throw TypeError("Workflow Call timeout must be milliseconds or a duration string.");let $=J.match(/^(\d+)(ms|s|m|h)$/);if($===null)throw TypeError("Workflow Call timeout must look like 500ms, 10s, 2m, or 1h.");let G=$[2]==="ms"?1:$[2]==="s"?1000:$[2]==="m"?60000:3600000;return Number($[1])*G}function $$(J,$,G){if($.length<2||$.length>3)throw TypeError(`services.workflows.${J}() requires workflowId, payload, and optional options.`);let[Q,Y,Z]=$;if(typeof Q!=="string"||!/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/.test(Q)||Q.length>256)throw TypeError(`Workflow ${J} workflowId must use lowercase kebab-case.`);let X=R(Y);if(X===void 0)throw TypeError(`Workflow ${J} payload must be a JSON object.`);let U=Z===void 0?{}:R(Z);if(U===void 0)throw TypeError(`Workflow ${J} options must be an object.`);let N=Object.keys(U).find((K)=>K!=="name"&&(J!=="call"||K!=="timeout"));if(N!==void 0)throw TypeError(`Unknown services.workflows.${J}() option "${N}".`);let V=U.name;if(V!==void 0&&(typeof V!=="string"||!/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/.test(V)||V.length>128))throw TypeError(`Workflow ${J} name is invalid.`);let _=J==="call"?U.timeout===void 0?G:r$(U.timeout):void 0;if(_!==void 0&&(_<1||_>86400000))throw TypeError("Workflow Call timeout must be between 1 ms and 24 hours.");if(_!==void 0&&_>G)throw TypeError("Workflow Call timeout cannot exceed the calling step remaining timeout.");let H=V===void 0?"automatic":"named",W=`${J}:${Q}`,L=b.get(W);if(L!==void 0&&(L==="automatic"||H==="automatic"))throw TypeError(`Multiple services.workflows.${J}() operations for workflow "${Q}" in one step require stable names, for example { name: "primary-operation" }.`);return b.set(W,H),{request:{contract:J==="call"?"woml.workflow-call":"woml.workflow-start",contractVersion:1,kind:"request",workflowId:Q,payload:X,options:{...V===void 0?{}:{name:V},..._===void 0?{}:{timeoutMs:_}}},...V===void 0?{}:{callOptions:{name:V}}}}function a$(J,$){let G=R(J);if($==="start"){if(G?.contract!=="woml.workflow-start"||G.contractVersion!==1||G.kind!=="started"||typeof G.workflowId!=="string"||typeof G.runId!=="string"||typeof G.duplicate!=="boolean")throw TypeError("Rust returned an invalid Workflow Start v1 result.");return Object.freeze({workflowId:G.workflowId,runId:G.runId,duplicate:G.duplicate})}if(G?.contract!=="woml.workflow-call"||G.contractVersion!==1||G.kind!=="succeeded"||typeof G.workflowId!=="string"||typeof G.definitionHash!=="string"||typeof G.childRunId!=="string"||!Object.hasOwn(G,"result"))throw TypeError("Rust returned an invalid Workflow Call v1 result.");return G.result}function o$(J,$){if(J.attempt===void 0||J.bindings===void 0)return Object.freeze({});let G=J.attempt,Q=new Map,Y=async(Z,X,U,N)=>{let V=Z==="http"&&X==="request",_=Z==="db"&&u.has(X),H=Z==="storage"&&l.has(X),W=Z==="cache"&&j$.has(X),L=Z==="state"&&k$.has(X),K=Z==="events"&&g$.has(X),B=Z==="workflows"&&(X==="call"||X==="start"),D=Z==="telegram"&&X==="send",A=Z==="discord"&&X==="send",x=Z==="whatsapp"&&X==="send";if(!V&&!_&&!H&&!W&&!L&&!K&&!B&&!D&&!A&&!x&&N!==void 0)throw TypeError("Named service-call options are supported by managed WOML services only.");let T=P(U);if(T!==void 0)throw TypeError(`${T.path}: ${T.reason}`);let E=Buffer.byteLength(JSON.stringify(U),"utf8"),I=B?1052672:1048576;if(E>I){let M=e();throw new C(Z,X,M,{kind:"input_too_large",code:"WOML_CAPABILITY_INPUT_TOO_LARGE",message:"The capability input exceeds its configured byte limit.",retryable:!1,ambiguous:!1,details:{actualBytes:E,limitBytes:I}})}let O=Q$(Z,X,N),h=V?String(U.method):void 0;if(((V?U.responseType==="storage"||h!=="GET"&&h!=="HEAD"&&h!=="OPTIONS":_?X!=="query"&&X!=="read":H&&(X==="put"||X==="delete"))||W&&X!=="get"&&X!=="has"||L&&X!=="get"&&X!=="has"||K||D||A||x)&&O.mode==="automatic"){let M=`${Z}.${X}`,w=(d.get(M)??0)+1;if(d.set(M,w),w>1)throw TypeError(`Multiple effectful services.${Z}.${X}() calls in one step require stable names, for example { name: "write-customer" }.`)}let p=V?R(U.idempotency):void 0,n=typeof p?.value==="string"?p.value:void 0,_$=V?Math.min(86400000,Number(U.timeoutMs)+1000):B?Math.min(86400000,Number(R(U.options)?.timeoutMs??30000)+1000):30000,i=e(),U$={contract:"woml.capability-call",contractVersion:1,messageType:"request",invocationId:J.invocationId,callId:i,runId:J.runId,nodeId:J.nodeId,attemptNumber:G.number,capability:Z,operation:X,inputContractVersion:1,resultContractVersion:1,identity:{mode:O.mode,stepIdempotencyKey:G.idempotencyKey,operationName:O.name,operationKey:await E$(G.idempotencyKey,O.name),...n===void 0?{}:{providerIdempotencyKey:n}},limits:{inputBytes:I,resultBytes:B?4198400:4194304,timeoutMs:_$},input:U},f=await new Promise((M,w)=>{v.set(i,{capability:Z,operation:X,resolve:M,reject:w}),self.postMessage({messageType:"capability_call",call:U$})});return V?w$(f):_?h$(f,X):H?y$(f,X):W?u$(f,X):L?p$(f,X):K?i$(f):B?a$(f,X):D?M$(f):A?C$(f):x?O$(f):f};return new Proxy(Object.freeze({}),{get(Z,X){if(typeof X!=="string")return;let U=Q.get(X);if(U!==void 0)return U;if(X==="db"){let _=(H)=>{let W=Object.freeze(P$(H)),L=new Map;return new Proxy(Object.freeze({}),{get(K,B){if(typeof B!=="string")return;let D=L.get(B);if(D!==void 0)return D;if(!u.has(B))return;let A=async(x=null,T)=>Y("db",B,q$(W,B,x),T);return Object.freeze(A),L.set(B,A),A},set:()=>!1,defineProperty:()=>!1,deleteProperty:()=>!1})};return Object.freeze(_),Q.set(X,_),_}if(X==="storage"){let _=new Map,H=new Proxy(Object.freeze({}),{get(W,L){if(typeof L!=="string")return;let K=_.get(L);if(K!==void 0)return K;if(!l.has(L))return;let B=async(D={},A)=>Y("storage",L,v$(L,D),A);return Object.freeze(B),_.set(L,B),B},set:()=>!1,defineProperty:()=>!1,deleteProperty:()=>!1});return Q.set(X,H),H}if(X==="cache"){let _=new Map,H=new Proxy(Object.freeze({}),{get(W,L){if(typeof L!=="string")return;let K=_.get(L);if(K!==void 0)return K;if(!X$.has(L))return;let B=async(...D)=>{let A=b$(L,D),x=String(A.request.operation);return Y("cache",x,A.request,A.callOptions)};return Object.freeze(B),_.set(L,B),B},set:()=>!1,defineProperty:()=>!1,deleteProperty:()=>!1});return Q.set(X,H),H}if(X==="state"){let _=new Map,H=new Proxy(Object.freeze({}),{get(W,L){if(typeof L!=="string")return;let K=_.get(L);if(K!==void 0)return K;if(!Y$.has(L))return;let B=async(...D)=>{let A=c$(L,D),x=String(A.request.operation);return Y("state",x,A.request,A.callOptions)};return Object.freeze(B),_.set(L,B),B},set:()=>!1,defineProperty:()=>!1,deleteProperty:()=>!1});return Q.set(X,H),H}if(X==="events"){let _=async(...W)=>{let L=n$(W);return Y("events","emit",L.request,L.callOptions)};Object.freeze(_);let H=Object.freeze({emit:_});return Q.set(X,H),H}if(X==="workflows"){let _=async(...L)=>{let K=Math.max(1,Math.floor($-performance.now())),B=$$("call",L,K);return Y("workflows","call",B.request,B.callOptions)},H=async(...L)=>{let K=Math.max(1,Math.floor($-performance.now())),B=$$("start",L,K);return Y("workflows","start",B.request,B.callOptions)};Object.freeze(_),Object.freeze(H);let W=Object.freeze({call:_,start:H});return Q.set(X,W),W}let N=new Map,V=new Proxy(Object.freeze({}),{get(_,H){if(typeof H!=="string")return;let W=N.get(H);if(W!==void 0)return W;let L=async(K=null,B)=>Y(X,H,X==="http"&&H==="request"?z$(K):X==="telegram"&&H==="send"?F$(K):X==="discord"&&H==="send"?S$(K):X==="whatsapp"&&H==="send"?I$(K):K,B);return Object.freeze(L),N.set(H,L),L},set:()=>!1,defineProperty:()=>!1,deleteProperty:()=>!1});return Q.set(X,V),V},set:()=>!1,defineProperty:()=>!1,deleteProperty:()=>!1})}class c extends Error{constructor(){super("Fetch and managed services cannot be used while a WOML module is initializing.");this.name="ModuleInitializationEffectError"}}function t$(J,$){let G=J;for(let Q of $)G=Reflect.get(G,Q);return G}function Z$(J,$,G=[]){return new Proxy(function(){},{get(Y,Z){return Z$(J,$,[...G,Z])},apply(Y,Z,X){if(!$())throw new c;let U=t$(J(),G);if(typeof U!=="function")throw TypeError(`services.${G.map(String).join(".")} is not callable.`);return Reflect.apply(U,Z,X)},set:()=>!1,defineProperty:()=>!1,deleteProperty:()=>!1})}function e$(J,$){return new Proxy(Object.freeze({}),{get(G,Q){if(typeof Q==="string"&&Object.hasOwn($,Q))return $[Q];return Reflect.get(J,Q)},set:()=>!1,defineProperty:()=>!1,deleteProperty:()=>!1})}async function $J(J,$,G){let Q={},Y=0,Z=$,X=()=>Y>0,U=Z$(()=>Z,X),N=(...V)=>{if(!X())throw new c;return G(...V)};Object.defineProperty(globalThis,"services",{configurable:!1,enumerable:!1,writable:!1,value:U}),Object.defineProperty(globalThis,"fetch",{configurable:!1,enumerable:!0,writable:!1,value:N});for(let V of J.modules??[]){if(`sha256:${new Bun.CryptoHasher("sha256").update(V.bundle).digest("hex")}`!==V.bundleDigest)throw Error(`Module ${V.name} failed its Worker digest check.`);if(V.sourceMap!==void 0){if(`sha256:${new Bun.CryptoHasher("sha256").update(V.sourceMap).digest("hex")}`!==V.sourceMapDigest)throw Error(`Module ${V.name} failed its source-map digest check.`)}let H=J$(V),L=await import(`data:text/javascript;base64,${Buffer.from(H,"utf8").toString("base64")}`),K={};for(let B of V.exports){let D=L[B];if(typeof D!=="function")throw TypeError(`Module ${V.name} export ${B} is not a function.`);let A=function(...T){Y+=1;try{let E=Reflect.apply(D,void 0,T);if(typeof E==="object"&&E!==null||typeof E==="function"){if(typeof Reflect.get(E,"then")==="function")return Promise.resolve(E).finally(()=>{Y-=1})}return Y-=1,E}catch(E){throw Y-=1,E}};Object.freeze(A),K[B]=A}Q[V.name]=Object.freeze(K)}return Z=e$($,Q),Z}async function JJ(J){let $=[];try{let G=performance.now()+J.timeoutMs;y.clear(),d.clear(),b.clear();let Q=z({...J.context,payload:J.context.trigger}),Y=J.attempt===void 0?void 0:z(J.attempt),Z=z(J.bindings?.secrets??{}),X=J.lifecycle===void 0?void 0:z(J.lifecycle),U=J.reusable===void 0?void 0:z(J.reusable),N=J.reusableLifecycle===void 0?void 0:z(J.reusableLifecycle);$=Object.values(J.bindings?.secrets??{});let V=Object.freeze({log:(...x)=>globalThis.console.error(F(x.map((T)=>String(T)).join(" "),$)),info:(...x)=>globalThis.console.error(F(x.map((T)=>String(T)).join(" "),$)),warn:(...x)=>globalThis.console.error(F(x.map((T)=>String(T)).join(" "),$)),error:(...x)=>globalThis.console.error(F(x.map((T)=>String(T)).join(" "),$))}),_=o$(J,G),H=T$(J),W=J.modules===void 0?_:await $J(J,_,H);if(J.bindings!==void 0&&J.modules===void 0)Object.defineProperty(globalThis,"fetch",{configurable:!1,enumerable:!0,writable:!1,value:H});let L=J.nodeId.replace(/[^A-Za-z0-9_-]/g,"_"),K=`"use strict";
5
- ${J.source}
6
- //# sourceURL=woml-${J.mode==="lifecycle"?"lifecycle":"step"}-${L}.js`,B=J.bindings===void 0?new S("context","attempt","console",K):U!==void 0&&N!==void 0?U.definition.kind==="step"?new S("props","context","lifecycle","services","fetch","console",K):new S("props","lifecycle","services","fetch","console",K):U!==void 0?new S("props","context","attempt","services","fetch","console",K):J.mode==="lifecycle"?new S("context","lifecycle","attempt","services","secrets","fetch","console",K):new S("context","attempt","services","secrets","fetch","console",K),D=J.bindings===void 0?await B(Q,Y,V):U!==void 0&&N!==void 0?U.definition.kind==="step"?await B(U.props,Q,N,W,H,V):await B(U.props,N,W,H,V):U!==void 0?await B(U.props,Q,Y,W,H,V):J.mode==="lifecycle"?await B(Q,X,Y,W,Z,H,V):await B(Q,Y,W,Z,H,V);if((J.mode==="lifecycle"||N!==void 0)&&D===void 0)D=null;let A=P(D);if(A!==void 0){self.postMessage({messageType:"completed",response:{ok:!1,error:{kind:"non-json",name:"NonJsonResult",message:`${A.path}: ${A.reason}`}}});return}self.postMessage({messageType:"completed",response:{ok:!0,result:D}})}catch(G){self.postMessage({messageType:"completed",response:W$(G,$,J.modules)})}}self.onmessage=(J)=>{let $=J.data;if($.messageType==="execute"){JJ($.request);return}if($.messageType==="fetch_observation_ack"){let Q=q.get($.requestId);if(Q===void 0)return;if(q.delete($.requestId),$.ack.accepted)Q.resolve();else Q.reject(new s($.requestId,$.ack.error));return}let G=v.get($.callId);if(G===void 0)return;if(v.delete($.callId),$.result.outcome==="succeeded"){let Q=Buffer.byteLength(JSON.stringify($.result.result),"utf8");if(Q>4194304||Q!==$.result.resultBytes){G.reject(new C(G.capability,G.operation,$.callId,{kind:"invalid_result",code:"WOML_CAPABILITY_RESULT_INVALID",message:"The capability result failed its byte-size contract.",retryable:!1,ambiguous:!1}));return}G.resolve($.result.result)}else G.reject(new C(G.capability,G.operation,$.callId,$.result.error))};
2
+ var Kf=Object.create;var{getPrototypeOf:Af,defineProperty:Vf,getOwnPropertyNames:Df}=Object;var Ef=Object.prototype.hasOwnProperty;function Mf(f){return this[f]}var Sf,zf,E1=(f,$,_)=>{var V=f!=null&&typeof f==="object";if(V){var J=$?Sf??=new WeakMap:zf??=new WeakMap,U=J.get(f);if(U)return U}_=f!=null?Kf(Af(f)):{};let L=$||!f||!f.__esModule?Vf(_,"default",{value:f,enumerable:!0}):_;for(let G of Df(f))if(!Ef.call(L,G))Vf(L,G,{get:Mf.bind(f,G),enumerable:!0});if(V)J.set(f,L);return L};var M1=(f,$)=>()=>($||f(($={exports:{}}).exports,$),$.exports);import{randomUUID as Ff}from"crypto";import{appendFile as If,mkdir as Of}from"fs/promises";import{dirname as Pf,resolve as Cf}from"path";var wf=performance.now(),hf=new Set(["cli","native","rust","host","worker"]);function kf(){if(process.env.WOML_PROFILE!=="1")return;let f=process.env.WOML_PROFILE_OUTPUT;if(f===void 0||f.length===0)return;let $=process.env.WOML_PROFILE_PROCESS,_=hf.has($)?$:"cli",V=process.env.WOML_PROFILE_TRACE_ID,J=V!==void 0&&/^[A-Za-z0-9_.:-]{1,128}$/u.test(V)?V:`trace_${Ff().replaceAll("-","")}`;return{outputPath:Cf(f),traceId:J,process:_,spans:[],nextSpan:1,writtenSpans:0}}var D=kf();function Jf(f){let $=Object.fromEntries(Object.entries(f).filter(([_,V])=>/^[a-z][a-z0-9_]*$/u.test(_)&&Number.isSafeInteger(V)&&V>=0));return Object.keys($).length===0?void 0:$}function h(f,$,_,V,J){if(D===void 0)return;let U=Jf(J?.counts??{}),L=Jf(J?.bytes??{});D.spans.push({profile:"woml.performance-span/v1",traceId:D.traceId,spanId:`span_${process.pid}_${D.nextSpan++}`,process:D.process,layer:f,name:$,startOffsetMs:_,durationMs:Math.max(0,performance.now()-_),status:V,...J?.identity.runId===void 0?{}:{runId:J.identity.runId},...J?.identity.invocationId===void 0?{}:{invocationId:J.identity.invocationId},...U===void 0?{}:{counts:U},...L===void 0?{}:{bytes:L}})}if(D!==void 0){h(D.process==="host"?"host":D.process==="worker"?"worker":"cli",`${D.process}.process_to_profiler`,0,"succeeded");let f=D.spans[0];D.spans[0]={...f,durationMs:wf}}function k(f,$,_){if(D===void 0)return _();let V={counts:{},bytes:{},identity:{}},J=performance.now();try{let U=_(V);return h(f,$,J,"succeeded",V),U}catch(U){throw h(f,$,J,"failed",V),U}}async function j(f,$,_){if(D===void 0)return await _();let V={counts:{},bytes:{},identity:{}},J=performance.now();try{let U=await _(V);return h(f,$,J,"succeeded",V),U}catch(U){throw h(f,$,J,"failed",V),U}}async function Lf(){if(D===void 0||D.writtenSpans>=D.spans.length)return;let f=D.spans.slice(D.writtenSpans);await Of(Pf(D.outputPath),{recursive:!0}),await If(D.outputPath,`${f.map(($)=>JSON.stringify($)).join(`
3
+ `)}
4
+ `,{encoding:"utf8",mode:384}),D.writtenSpans+=f.length}function y(f,$,_){if(f===null||typeof f==="string"||typeof f==="boolean")return;if(typeof f==="number")return Number.isFinite(f)?void 0:{path:$,reason:"numbers must be finite"};if(typeof f!=="object")return{path:$,reason:`${typeof f} is not a JSON value`};if(_.has(f))return{path:$,reason:"circular references are not JSON values"};_.add(f);try{if(Array.isArray(f)){let J=new Set(["length"]);for(let U=0;U<f.length;U+=1){if(J.add(String(U)),!Object.prototype.hasOwnProperty.call(f,U))return{path:`${$}[${U}]`,reason:"array holes are not JSON values"};let L=y(f[U],`${$}[${U}]`,_);if(L!==void 0)return L}for(let U of Reflect.ownKeys(f))if(typeof U!=="string"||!J.has(U))return{path:$,reason:"arrays must not contain custom properties"};return}let V=Object.getPrototypeOf(f);if(V!==Object.prototype&&V!==null)return{path:$,reason:"objects must be plain JSON objects"};for(let J of Reflect.ownKeys(f)){if(typeof J!=="string")return{path:$,reason:"symbol keys are not JSON object keys"};let U=Object.getOwnPropertyDescriptor(f,J);if(U===void 0||U.enumerable!==!0||"get"in U||"set"in U)return{path:`${$}.${J}`,reason:"JSON fields must be enumerable data properties"};let L=y(U.value,`${$}.${J}`,_);if(L!==void 0)return L}return}finally{_.delete(f)}}function d(f){return y(f,"$",new Set)}function S(f){if(typeof f!=="object"||f===null)return f;if(Array.isArray(f))for(let $ of f)S($);else for(let $ of Object.values(f))S($);return Object.isFrozen(f)?f:Object.freeze(f)}var C=Object.getPrototypeOf(async function(){}).constructor;function z(f,$){let _=f;for(let V of $)if(V.length>0)_=_.split(V).join("[REDACTED]");return _.slice(0,1024)}function Uf(f){try{let $=JSON.parse(f);if(!Array.isArray($.sources))return[];return $.sources.filter((_)=>typeof _==="string"&&_.length>0&&_.length<=512&&!_.startsWith("/")&&!_.includes("\\")&&!_.split("/").includes(".."))}catch{return[]}}function Xf(f){if(f.sourceMap===void 0)return f.bundle;let $=Buffer.from(f.sourceMap,"utf8").toString("base64");return`${f.bundle.replace(/\n?\/\/# sourceMappingURL=.*$/m,"")}
5
+ //# sourceMappingURL=data:application/json;base64,${$}`}function Rf(f,$){if(f===void 0||$===void 0)return;let _=new Set;for(let V of $){if(V.sourceMap===void 0)continue;for(let J of Uf(V.sourceMap))_.add(J)}for(let V of f.split(`
6
+ `))for(let J of _){let U=V.indexOf(J);if(U<0)continue;let L=V.slice(U+J.length),G=/^:(\d+):(\d+)/.exec(L);if(G!==null)return`${J}:${G[1]}:${G[2]}`}for(let V of $){if(V.sourceMap===void 0)continue;let J=Uf(V.sourceMap)[0];if(J===void 0)continue;let U=Buffer.from(Xf(V),"utf8").toString("base64"),L=f.indexOf(`data:text/javascript;base64,${U}`);if(L<0)continue;let G=f.slice(L+`data:text/javascript;base64,${U}`.length),Z=/^:(\d+):(\d+)/.exec(G);if(Z!==null)return`${J}:${Z[1]}:${Z[2]}`}return}function qf(f,$=[],_){if(f instanceof r)return{ok:!1,error:{kind:"service",name:f.name,message:z(f.message,$),capability:"http",operation:"fetch",callId:f.callId,cause:f.cause}};if(typeof f==="object"&&f!==null||typeof f==="function"){let V=Yf.get(f);if(V!==void 0)return{ok:!1,error:{kind:"service",name:f instanceof Error?f.name:"Error",message:z(V.cause.message,$),capability:"http",operation:"fetch",callId:V.callId,cause:V.cause}}}if(f instanceof q)return{ok:!1,error:{kind:"service",name:f.name,message:z(f.message,$),capability:f.capability,operation:f.operation,callId:f.callId,cause:f.cause}};if(f instanceof Error)return{ok:!1,error:{kind:"script",name:f.name,message:z(f.message,$),...f.stack===void 0?{}:{stack:z(f.stack,$)},...Rf(f.stack,_)===void 0?{}:{moduleFrame:Rf(f.stack,_)}}};return{ok:!1,error:{kind:"script",name:"Error",message:z(String(f),$)}}}class q extends Error{code;service;capability;operation;callId;retryable;ambiguous;details;cause;constructor(f,$,_,V){super(V.message);this.name="WomlServiceError",this.code=V.code,this.service=f,this.capability=f,this.operation=$,this.callId=_,this.retryable=V.retryable,this.ambiguous=V.ambiguous,this.details=V.details,this.cause=V}}var u=new Map,v=new Map,l=new Map,s=new Map,n=new Map,gf=0,Zf=globalThis.fetch.bind(globalThis),Yf=new WeakMap;class r extends Error{callId;cause;code;retryable;ambiguous;constructor(f,$){super($.message);this.name="WomlFetchTrackingError",this.callId=f,this.cause=$,this.code=$.code,this.retryable=$.retryable,this.ambiguous=$.ambiguous}}function jf(f){if(f===void 0||f===null)return;if(typeof f==="string")return Buffer.byteLength(f,"utf8");if(f instanceof URLSearchParams)return Buffer.byteLength(f.toString(),"utf8");if(f instanceof Blob)return f.size;if(f instanceof ArrayBuffer)return f.byteLength;if(ArrayBuffer.isView(f))return f.byteLength;return}function df(f,$,_,V){let J=_ instanceof Request?_.url:_ instanceof URL?_.href:String(_),U=new URL(J);if(U.protocol!=="http:"&&U.protocol!=="https:")return;let L=String(V?.method??(_ instanceof Request?_.method:"GET")).toUpperCase(),G=jf(V?.body);return{contract:"woml.native-fetch-observation",contractVersion:1,observationType:"started",invocationId:f.invocationId,requestId:$,method:L,origin:U.origin,path:U.pathname,...G===void 0?{}:{requestBodyBytes:G},startedAt:new Date().toISOString()}}async function m(f){if(v.has(f.requestId))throw Error("Native Fetch reused an active request ID.");await new Promise(($,_)=>{v.set(f.requestId,{resolve:$,reject:_}),self.postMessage({messageType:"fetch_observation",observation:f})})}function vf(f){return async(_,V)=>{let J=`fetch_${++gf}_${crypto.randomUUID().replaceAll("-","")}`,U=performance.now(),L=df(f,J,_,V);if(L===void 0)return Zf(_,V);await m(L);let G;try{G=await Zf(_,V)}catch(Z){let Q=Z instanceof Error?Z.name:"",R=Q==="AbortError"?"cancelled":Q==="TimeoutError"?"timed_out":"fetch_rejected",N={kind:R==="cancelled"?"cancelled":R==="timed_out"?"timed_out":"transport_failed",code:R==="cancelled"?"WOML_NATIVE_FETCH_CANCELLED":R==="timed_out"?"WOML_NATIVE_FETCH_TIMED_OUT":"WOML_NATIVE_FETCH_REJECTED",message:R==="cancelled"?"Bun Fetch was cancelled.":R==="timed_out"?"Bun Fetch exceeded its deadline.":"Bun Fetch rejected the request.",retryable:!1,ambiguous:!0};if(await m({contract:"woml.native-fetch-observation",contractVersion:1,observationType:"failed",invocationId:f.invocationId,requestId:J,durationMs:Math.max(0,performance.now()-U),failedAt:new Date().toISOString(),error:{kind:R,code:N.code,message:N.message}}),typeof Z==="object"&&Z!==null||typeof Z==="function")Yf.set(Z,{callId:J,cause:N});throw Z}return await m({contract:"woml.native-fetch-observation",contractVersion:1,observationType:"completed",invocationId:f.invocationId,requestId:J,status:G.status,responseBodyBytes:null,durationMs:Math.max(0,performance.now()-U),completedAt:new Date().toISOString()}),G}}async function yf(f,$){let _=new TextEncoder().encode(`woml.capability-operation\x00v1\x00${f}\x00${$}`);return`sha256:${[...new Uint8Array(await crypto.subtle.digest("SHA-256",_))].map((J)=>J.toString(16).padStart(2,"0")).join("")}`}function Gf(){return`call_${crypto.randomUUID().replaceAll("-","")}`}function W(f){return f!==null&&typeof f==="object"&&!Array.isArray(f)?f:void 0}function mf(f){if(f.timeout!==void 0&&f.timeoutMs!==void 0)throw TypeError("Managed HTTP accepts timeout or timeoutMs, not both.");let $=f.timeout??f.timeoutMs??30000;if(typeof $==="number"&&Number.isSafeInteger($))return $;if(typeof $!=="string")throw TypeError("Managed HTTP timeout must be milliseconds or a duration string.");let _=$.match(/^(\d+)(ms|s|m|h)$/);if(_===null)throw TypeError("Managed HTTP timeout must look like 500ms, 10s, 2m, or 1h.");let V=_[2]==="ms"?1:_[2]==="s"?1000:_[2]==="m"?60000:3600000;return Number(_[1])*V}function bf(f){let $=W(f);if($===void 0)throw TypeError("services.http.request() requires a request object.");let _=new Set(["url","method","headers","query","json","text","bytesBase64","responseType","storage","timeout","timeoutMs","acceptedStatus","redirect","maximumRedirects","idempotency"]),V=Object.keys($).find((R)=>!_.has(R));if(V!==void 0)throw TypeError(`Unknown managed HTTP option "${V}".`);if(typeof $.url!=="string"||$.url.length===0)throw TypeError("Managed HTTP requires a URL string.");let J=String($.method??"GET").toUpperCase(),U=W($.headers??{});if(U===void 0||Object.values(U).some((R)=>typeof R!=="string"))throw TypeError("Managed HTTP headers must contain string values.");let L=mf($);if(!Number.isSafeInteger(L)||L<1||L>86400000)throw TypeError("Managed HTTP timeout must be between 1 ms and 24 hours.");let G=$.responseType??"json",Z=W($.storage);if(G==="storage"){if(Z===void 0)throw TypeError('Managed HTTP responseType "storage" requires a storage target.');let R=Object.keys(Z).find((N)=>!["key","contentType","overwrite","ifVersion"].includes(N));if(R!==void 0)throw TypeError(`Unknown managed HTTP storage option "${R}".`);if(typeof Z.key!=="string"||Z.key.length===0)throw TypeError("Managed HTTP storage requires a key string.");if(Z.contentType!==void 0&&typeof Z.contentType!=="string")throw TypeError("Managed HTTP storage contentType must be a string.");if(Z.overwrite!==void 0&&typeof Z.overwrite!=="boolean")throw TypeError("Managed HTTP storage overwrite must be a Boolean.");if(Z.ifVersion!==void 0&&typeof Z.ifVersion!=="string")throw TypeError("Managed HTTP storage ifVersion must be a string.");if(Z.overwrite!==void 0&&Z.ifVersion!==void 0)throw TypeError("Managed HTTP storage overwrite and ifVersion are mutually exclusive.")}else if($.storage!==void 0)throw TypeError('Managed HTTP storage is valid only with responseType "storage".');let Q={contract:"woml.managed-http",contractVersion:1,kind:"request",method:J,url:$.url,headers:U,responseType:G,timeoutMs:L,acceptedStatus:$.acceptedStatus??{minimum:200,maximum:299},redirect:$.redirect??"follow",maximumRedirects:$.maximumRedirects??10};for(let R of["query","json","text","bytesBase64","idempotency","storage"])if($[R]!==void 0)Q[R]=$[R];return Q}function cf(f){let $=W(f);if($===void 0)throw TypeError("services.telegram.send() requires a request object.");let _=new Set(["botToken","conversationId","text","replyToMessageId"]),V=Object.keys($).find((J)=>!_.has(J));if(V!==void 0)throw TypeError(`Unknown Telegram send option "${V}".`);for(let J of["botToken","conversationId","text"])if(typeof $[J]!=="string"||$[J].length===0)throw TypeError(`Telegram send requires a non-empty ${J} string.`);if($.replyToMessageId!==void 0&&(typeof $.replyToMessageId!=="string"||$.replyToMessageId.length===0))throw TypeError("Telegram replyToMessageId must be a non-empty string.");return{contract:"woml.telegram-message",contractVersion:1,kind:"send",botToken:$.botToken,conversationId:$.conversationId,text:$.text,...$.replyToMessageId===void 0?{}:{replyToMessageId:$.replyToMessageId}}}function uf(f){let $=W(f);if($===void 0||$.provider!=="telegram"||typeof $.conversationId!=="string"||typeof $.messageId!=="string"||typeof $.acceptedAt!=="string")throw TypeError("Telegram returned an invalid managed result.");return Object.freeze({provider:"telegram",conversationId:$.conversationId,messageId:$.messageId,acceptedAt:$.acceptedAt})}function lf(f){let $=W(f);if($===void 0)throw TypeError("services.discord.send() requires a request object.");let _=new Set(["botToken","conversationId","text","replyToMessageId"]),V=Object.keys($).find((J)=>!_.has(J));if(V!==void 0)throw TypeError(`Unknown Discord send option "${V}".`);for(let J of["botToken","conversationId","text"])if(typeof $[J]!=="string"||$[J].length===0)throw TypeError(`Discord send requires a non-empty ${J} string.`);if(!/^[0-9]{17,20}$/.test($.conversationId))throw TypeError("Discord conversationId must be a numeric snowflake.");if($.text.length>2000)throw TypeError("Discord text may contain at most 2000 characters.");if($.replyToMessageId!==void 0&&(typeof $.replyToMessageId!=="string"||!/^[0-9]{17,20}$/.test($.replyToMessageId)))throw TypeError("Discord replyToMessageId must be a numeric snowflake.");return{contract:"woml.discord-message",contractVersion:1,kind:"send",botToken:$.botToken,conversationId:$.conversationId,text:$.text,...$.replyToMessageId===void 0?{}:{replyToMessageId:$.replyToMessageId}}}function sf(f){let $=W(f);if($===void 0||$.provider!=="discord"||typeof $.conversationId!=="string"||typeof $.messageId!=="string"||typeof $.acceptedAt!=="string")throw TypeError("Discord returned an invalid managed result.");return Object.freeze({provider:"discord",conversationId:$.conversationId,messageId:$.messageId,acceptedAt:$.acceptedAt})}function nf(f){let $=W(f);if($===void 0)throw TypeError("services.whatsapp.send() requires a request object.");let _=new Set(["accessToken","phoneNumberId","conversationId","template"]),V=Object.keys($).find((U)=>!_.has(U));if(V!==void 0)throw TypeError(`Unknown WhatsApp send option "${V}".`);for(let U of["accessToken","phoneNumberId","conversationId"])if(typeof $[U]!=="string"||$[U].length===0)throw TypeError(`WhatsApp send requires a non-empty ${U} string.`);if(!/^[0-9]{6,32}$/.test($.phoneNumberId))throw TypeError("WhatsApp phoneNumberId must be a numeric Meta Phone Number ID.");if(!/^[0-9]{8,16}$/.test($.conversationId))throw TypeError("WhatsApp conversationId must contain 8 to 16 digits without a plus sign.");let J=W($.template);if(J===void 0||Object.keys(J).some((U)=>U!=="name"&&U!=="language"&&U!=="parameters")||typeof J.name!=="string"||!/^[a-z][a-z0-9_]{0,511}$/.test(J.name)||typeof J.language!=="string"||!/^[a-z]{2,3}(?:_[A-Z]{2})?$/.test(J.language)||!Array.isArray(J.parameters)||J.parameters.length>32||J.parameters.some((U)=>typeof U!=="string"||U.length>1024))throw TypeError("WhatsApp template must contain a valid name, language, and string parameters array.");return{contract:"woml.whatsapp-message",contractVersion:1,kind:"send",accessToken:$.accessToken,phoneNumberId:$.phoneNumberId,conversationId:$.conversationId,template:{name:J.name,language:J.language,parameters:J.parameters}}}function pf(f){let $=W(f);if($===void 0||$.provider!=="whatsapp"||typeof $.conversationId!=="string"||typeof $.messageId!=="string"||typeof $.acceptedAt!=="string")throw TypeError("WhatsApp returned an invalid managed result.");return Object.freeze({provider:"whatsapp",conversationId:$.conversationId,messageId:$.messageId,acceptedAt:$.acceptedAt})}function Nf(f,$,_){if(_===void 0){let U=`${f}.${$}`,L=(l.get(U)??0)+1;return l.set(U,L),{mode:"automatic",name:L===1?U:`${U}.${L}`}}let V=W(_),J=V?.name;if(V===void 0||Object.keys(V).length!==1||typeof J!=="string"||!/^[a-z][a-z0-9._-]{0,127}$/.test(J))throw TypeError('Service call options must be exactly { name: "stable-operation-name" }.');return{mode:"named",name:`${f}.${$}.${J}`}}function rf(f){let $=W(f);if($?.contract!=="woml.managed-http"||$.contractVersion!==1||$.kind!=="result")throw TypeError("Rust returned an invalid Managed HTTP v1 result.");return{status:$.status,ok:$.ok,headers:$.headers,data:$.data,url:$.url,redirected:$.redirected}}var p=new Set(["query","execute","read","insert","update","delete","transaction"]);function of(f){let $=W(f);if($===void 0||Object.keys($).some((_)=>_!=="driver"&&_!=="connection")||$.driver!=="sqlite"&&$.driver!=="postgres"||typeof $.connection!=="string"||$.connection.length===0)throw TypeError('services.db() requires exactly { driver: "sqlite" | "postgres", connection: "database connection" }.');return{driver:$.driver,connection:$.connection}}function af(f,$,_){if(!p.has($))throw TypeError(`Unknown Database v1 operation "${$}".`);return{contract:"woml.database",contractVersion:1,kind:"request",driver:f.driver,connection:f.connection,operation:$,input:_}}function tf(f,$){let _=W(f);if(_?.contract!=="woml.database"||_.contractVersion!==1||_.kind!=="result"||_.operation!==$||_.data===void 0)throw TypeError("Rust returned an invalid Database v1 result.");return _.data}var i=new Set(["put","get","head","list","delete"]),Hf=new Set(["get","set","delete","has","increment","setIfAbsent"]),Bf=new Set(["get","has","set","delete","increment","setIfAbsent"]),ef=new Set(["get","has","set","delete","increment","set_if_absent"]),f1=new Set(["get","set","delete","has","increment","set_if_absent"]),$1=new Set(["emit"]);function _1(f,$){let _=W($);if(_===void 0)throw TypeError(`services.storage.${f}() requires an object.`);let J={put:["key","value","text","bytesBase64","contentType","overwrite","ifVersion"],get:["key","responseType","ifVersion"],head:["key"],list:["prefix","limit","cursor"],delete:["key","ifVersion"]}[f];if(J===void 0)throw TypeError(`Unknown Storage v1 operation "${f}".`);let U=Object.keys(_).find((L)=>!J.includes(L));if(U!==void 0)throw TypeError(`Unknown Storage v1 ${f} option "${U}".`);if(f==="get")return{..._,responseType:_.responseType??"json"};if(f==="list")return{prefix:"",limit:100,..._};return _}function V1(f,$){if(!i.has(f))throw TypeError(`Unknown Storage v1 operation "${f}".`);return{contract:"woml.storage",contractVersion:1,kind:"request",operation:f,input:_1(f,$)}}function J1(f,$){let _=W(f);if(_?.contract!=="woml.storage"||_.contractVersion!==1||_.kind!=="result"||_.operation!==$||_.data===void 0)throw TypeError("Rust returned an invalid Storage v1 result.");return _.data}function L1(f){if(f===void 0)return 300000;if(typeof f==="number"&&Number.isSafeInteger(f)){if(f>=1&&f<=2592000000)return f}else if(typeof f==="string"){let $=f.match(/^(\d+)(ms|s|m|h|d)$/);if($!==null){let _=$[2]==="ms"?1:$[2]==="s"?1000:$[2]==="m"?60000:$[2]==="h"?3600000:86400000,V=Number($[1])*_;if(Number.isSafeInteger(V)&&V>=1&&V<=2592000000)return V}}throw TypeError("Cache ttl must be milliseconds or a whole duration from 1ms through 30d.")}function b(f,$){if(f===void 0)return{ttlMs:300000};let _=W(f),V=$?["ttl","name"]:["name"];if(_===void 0||Object.keys(_).some((J)=>!V.includes(J))||_.name!==void 0&&typeof _.name!=="string")throw TypeError($?"Cache options accept only ttl and a stable name.":"Cache options accept only a stable name.");return{ttlMs:L1(_.ttl),..._.name===void 0?{}:{callOptions:{name:_.name}}}}function U1(f,$){if(!Hf.has(f))throw TypeError(`Unknown Cache v1 operation "${f}".`);let _=$[0];if(typeof _!=="string")throw TypeError(`services.cache.${f}() requires a string key.`);let V,J,U=f==="setIfAbsent"?"set_if_absent":f;if(f==="get"||f==="has"){if($.length!==1)throw TypeError(`services.cache.${f}() accepts only a key.`);V={key:_}}else if(f==="delete"){if($.length>2)throw TypeError("services.cache.delete() accepts key and options.");let L=b($[1],!1);V={key:_},J=L.callOptions}else if(f==="set"||f==="setIfAbsent"){if($.length<2||$.length>3)throw TypeError(`services.cache.${f}() requires key, value, and optional options.`);let L=b($[2],!0);V={key:_,value:$[1],ttlMs:L.ttlMs},J=L.callOptions}else{if($.length>3)throw TypeError("services.cache.increment() accepts key, optional amount, and options.");let L=W($[1])!==void 0,G=$[1]===void 0||L?1:$[1];if(typeof G!=="number"||!Number.isSafeInteger(G))throw TypeError("Cache increment amount must be a safe integer.");let Z=b(L?$[1]:$[2],!0);V={key:_,amount:G,ttlMs:Z.ttlMs},J=Z.callOptions}return{request:{contract:"woml.cache",contractVersion:1,kind:"request",operation:U,input:V},...J===void 0?{}:{callOptions:J}}}function R1(f,$){let _=W(f);if(_?.contract!=="woml.cache"||_.contractVersion!==1||_.kind!=="result"||_.operation!==$||_.data===void 0)throw TypeError("Rust returned an invalid Cache v1 result.");return _.data}function Z1(f,$){if(typeof f!=="string"||f.length===0||Buffer.byteLength(f,"utf8")>256)throw TypeError(`services.state.${$}() requires a non-empty key up to 256 UTF-8 bytes.`);return f}function c(f,$){let _=W(f),V=$?["name","ifVersion"]:["name"];if(_===void 0||Object.keys(_).some((J)=>!V.includes(J))||typeof _.name!=="string"||!/^[a-z][a-z0-9._-]{0,127}$/.test(_.name)||_.ifVersion!==void 0&&(!Number.isSafeInteger(_.ifVersion)||Number(_.ifVersion)<0))throw TypeError($?"State mutation options require a stable name and optional non-negative ifVersion.":"State mutation options require exactly one stable name.");return{callOptions:{name:_.name},..._.ifVersion===void 0?{}:{ifVersion:Number(_.ifVersion)}}}function G1(f){let $=d(f);if($!==void 0)throw TypeError(`State value ${$.path}: ${$.reason}`);let _=JSON.stringify(f);if(Buffer.byteLength(_,"utf8")>262144)throw TypeError("State values must not exceed 256 KiB of canonical JSON.");return f}function Q1(f,$){if(!Bf.has(f))throw TypeError(`Unknown Durable User State v1 operation "${f}".`);let _=Z1($[0],f),V,J,U=f==="setIfAbsent"?"set_if_absent":f;if(f==="get"||f==="has"){if($.length!==1)throw TypeError(`services.state.${f}() accepts only a key.`);V={key:_}}else if(f==="delete"){if($.length!==2)throw TypeError("services.state.delete() requires key and mutation options.");let L=c($[1],!0);V={key:_,...L.ifVersion===void 0?{}:{ifVersion:L.ifVersion}},J=L.callOptions}else if(f==="set"||f==="setIfAbsent"){if($.length!==3)throw TypeError(`services.state.${f}() requires key, JSON value, and mutation options.`);let L=c($[2],f==="set");V={key:_,value:G1($[1]),...L.ifVersion===void 0?{}:{ifVersion:L.ifVersion}},J=L.callOptions}else{if($.length!==3||typeof $[1]!=="number"||!Number.isSafeInteger($[1]))throw TypeError("services.state.increment() requires key, safe-integer amount, and mutation options.");let L=c($[2],!0);V={key:_,amount:$[1],...L.ifVersion===void 0?{}:{ifVersion:L.ifVersion}},J=L.callOptions}return{request:{contract:"woml.state",contractVersion:1,kind:"request",operation:U,input:V},...J===void 0?{}:{callOptions:J}}}function X1(f,$){let _=W(f),V=W(_?.data),J=(Z,Q=[])=>V!==void 0&&Z.every((R)=>Object.hasOwn(V,R))&&Object.keys(V).every((R)=>Z.includes(R)||Q.includes(R)),U=(Z)=>typeof Z==="number"&&Number.isSafeInteger(Z)&&Z>=1,L=(Z)=>typeof Z==="string"&&Number.isFinite(Date.parse(Z)),G=$==="get"?J(["found"])&&V?.found===!1||J(["found","value","version","updatedAt"])&&V?.found===!0&&U(V.version)&&L(V.updatedAt):$==="has"?J(["present"])&&V?.present===!1||J(["present","version"])&&V?.present===!0&&U(V.version):$==="set"?J(["stored","version","updatedAt"])&&V?.stored===!0&&U(V.version)&&L(V.updatedAt):$==="delete"?J(["deleted"])&&typeof V?.deleted==="boolean":$==="increment"?J(["value","version","updatedAt"])&&typeof V?.value==="number"&&Number.isSafeInteger(V.value)&&U(V.version)&&L(V.updatedAt):$==="set_if_absent"?J(["stored","value","version","updatedAt"])&&typeof V?.stored==="boolean"&&U(V.version)&&L(V.updatedAt):!1;if(_?.contract!=="woml.state"||_.contractVersion!==1||_.kind!=="result"||_.operation!==$||!G)throw TypeError("Rust returned an invalid Durable User State v1 result.");return S(V)}function Y1(f){if(f.length<1||f.length>3)throw TypeError("services.events.emit() requires an event name, optional payload, and optional options.");let $=f[0];if(typeof $!=="string"||!/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$/.test($)||Buffer.byteLength($,"utf8")>256)throw TypeError("services.events.emit() requires a valid lowercase dotted event name.");let _=f[1]??{};if(W(_)===void 0)throw TypeError("Event payload must be a top-level JSON object.");let V=f[2];if(V!==void 0)Nf("events","emit",V);return{request:{contract:"woml.events",contractVersion:1,kind:"request",operation:"emit",input:{name:$,payload:_}},...V===void 0?{}:{callOptions:V}}}function N1(f){let $=W(f);if($?.contract!=="woml.events"||$.contractVersion!==1||$.kind!=="result"||$.operation!=="emit"||$.data===void 0)throw TypeError("Rust returned an invalid Events Service v1 result.");return $.data}function H1(f){if(typeof f==="number"&&Number.isSafeInteger(f))return f;if(typeof f!=="string")throw TypeError("Workflow Call timeout must be milliseconds or a duration string.");let $=f.match(/^(\d+)(ms|s|m|h)$/);if($===null)throw TypeError("Workflow Call timeout must look like 500ms, 10s, 2m, or 1h.");let _=$[2]==="ms"?1:$[2]==="s"?1000:$[2]==="m"?60000:3600000;return Number($[1])*_}function Qf(f,$,_){if($.length<2||$.length>3)throw TypeError(`services.workflows.${f}() requires workflowId, payload, and optional options.`);let[V,J,U]=$;if(typeof V!=="string"||!/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/.test(V)||V.length>256)throw TypeError(`Workflow ${f} workflowId must use lowercase kebab-case.`);let L=W(J);if(L===void 0)throw TypeError(`Workflow ${f} payload must be a JSON object.`);let G=U===void 0?{}:W(U);if(G===void 0)throw TypeError(`Workflow ${f} options must be an object.`);let Z=Object.keys(G).find((B)=>B!=="name"&&(f!=="call"||B!=="timeout"));if(Z!==void 0)throw TypeError(`Unknown services.workflows.${f}() option "${Z}".`);let Q=G.name;if(Q!==void 0&&(typeof Q!=="string"||!/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/.test(Q)||Q.length>128))throw TypeError(`Workflow ${f} name is invalid.`);let R=f==="call"?G.timeout===void 0?_:H1(G.timeout):void 0;if(R!==void 0&&(R<1||R>86400000))throw TypeError("Workflow Call timeout must be between 1 ms and 24 hours.");if(R!==void 0&&R>_)throw TypeError("Workflow Call timeout cannot exceed the calling step remaining timeout.");let N=Q===void 0?"automatic":"named",T=`${f}:${V}`,X=n.get(T);if(X!==void 0&&(X==="automatic"||N==="automatic"))throw TypeError(`Multiple services.workflows.${f}() operations for workflow "${V}" in one step require stable names, for example { name: "primary-operation" }.`);return n.set(T,N),{request:{contract:f==="call"?"woml.workflow-call":"woml.workflow-start",contractVersion:1,kind:"request",workflowId:V,payload:L,options:{...Q===void 0?{}:{name:Q},...R===void 0?{}:{timeoutMs:R}}},...Q===void 0?{}:{callOptions:{name:Q}}}}function B1(f,$){let _=W(f);if($==="start"){if(_?.contract!=="woml.workflow-start"||_.contractVersion!==1||_.kind!=="started"||typeof _.workflowId!=="string"||typeof _.runId!=="string"||typeof _.duplicate!=="boolean")throw TypeError("Rust returned an invalid Workflow Start v1 result.");return Object.freeze({workflowId:_.workflowId,runId:_.runId,duplicate:_.duplicate})}if(_?.contract!=="woml.workflow-call"||_.contractVersion!==1||_.kind!=="succeeded"||typeof _.workflowId!=="string"||typeof _.definitionHash!=="string"||typeof _.childRunId!=="string"||!Object.hasOwn(_,"result"))throw TypeError("Rust returned an invalid Workflow Call v1 result.");return _.result}function W1(f,$){if(f.attempt===void 0||f.bindings===void 0)return Object.freeze({});let _=f.attempt,V=new Map,J=async(U,L,G,Z)=>{let Q=U==="http"&&L==="request",R=U==="db"&&p.has(L),N=U==="storage"&&i.has(L),T=U==="cache"&&f1.has(L),X=U==="state"&&ef.has(L),B=U==="events"&&$1.has(L),Y=U==="workflows"&&(L==="call"||L==="start"),A=U==="telegram"&&L==="send",x=U==="discord"&&L==="send",E=U==="whatsapp"&&L==="send";if(!Q&&!R&&!N&&!T&&!X&&!B&&!Y&&!A&&!x&&!E&&Z!==void 0)throw TypeError("Named service-call options are supported by managed WOML services only.");let H=d(G);if(H!==void 0)throw TypeError(`${H.path}: ${H.reason}`);let K=Buffer.byteLength(JSON.stringify(G),"utf8"),F=Y?1052672:1048576;if(K>F){let P=Gf();throw new q(U,L,P,{kind:"input_too_large",code:"WOML_CAPABILITY_INPUT_TOO_LARGE",message:"The capability input exceeds its configured byte limit.",retryable:!1,ambiguous:!1,details:{actualBytes:K,limitBytes:F}})}let O=Nf(U,L,Z),w=Q?String(G.method):void 0;if(((Q?G.responseType==="storage"||w!=="GET"&&w!=="HEAD"&&w!=="OPTIONS":R?L!=="query"&&L!=="read":N&&(L==="put"||L==="delete"))||T&&L!=="get"&&L!=="has"||X&&L!=="get"&&L!=="has"||B||A||x||E)&&O.mode==="automatic"){let P=`${U}.${L}`,g=(s.get(P)??0)+1;if(s.set(P,g),g>1)throw TypeError(`Multiple effectful services.${U}.${L}() calls in one step require stable names, for example { name: "write-customer" }.`)}let ff=Q?W(G.idempotency):void 0,$f=typeof ff?.value==="string"?ff.value:void 0,Tf=Q?Math.min(86400000,Number(G.timeoutMs)+1000):Y?Math.min(86400000,Number(W(G.options)?.timeoutMs??30000)+1000):30000,_f=Gf(),xf={contract:"woml.capability-call",contractVersion:1,messageType:"request",invocationId:f.invocationId,callId:_f,runId:f.runId,nodeId:f.nodeId,attemptNumber:_.number,capability:U,operation:L,inputContractVersion:1,resultContractVersion:1,identity:{mode:O.mode,stepIdempotencyKey:_.idempotencyKey,operationName:O.name,operationKey:await yf(_.idempotencyKey,O.name),...$f===void 0?{}:{providerIdempotencyKey:$f}},limits:{inputBytes:F,resultBytes:Y?4198400:4194304,timeoutMs:Tf},input:G},M=await new Promise((P,g)=>{u.set(_f,{capability:U,operation:L,resolve:P,reject:g}),self.postMessage({messageType:"capability_call",call:xf})});return Q?rf(M):R?tf(M,L):N?J1(M,L):T?R1(M,L):X?X1(M,L):B?N1(M):Y?B1(M,L):A?uf(M):x?sf(M):E?pf(M):M};return new Proxy(Object.freeze({}),{get(U,L){if(typeof L!=="string")return;let G=V.get(L);if(G!==void 0)return G;if(L==="db"){let R=(N)=>{let T=Object.freeze(of(N)),X=new Map;return new Proxy(Object.freeze({}),{get(B,Y){if(typeof Y!=="string")return;let A=X.get(Y);if(A!==void 0)return A;if(!p.has(Y))return;let x=async(E=null,H)=>J("db",Y,af(T,Y,E),H);return Object.freeze(x),X.set(Y,x),x},set:()=>!1,defineProperty:()=>!1,deleteProperty:()=>!1})};return Object.freeze(R),V.set(L,R),R}if(L==="storage"){let R=new Map,N=new Proxy(Object.freeze({}),{get(T,X){if(typeof X!=="string")return;let B=R.get(X);if(B!==void 0)return B;if(!i.has(X))return;let Y=async(A={},x)=>J("storage",X,V1(X,A),x);return Object.freeze(Y),R.set(X,Y),Y},set:()=>!1,defineProperty:()=>!1,deleteProperty:()=>!1});return V.set(L,N),N}if(L==="cache"){let R=new Map,N=new Proxy(Object.freeze({}),{get(T,X){if(typeof X!=="string")return;let B=R.get(X);if(B!==void 0)return B;if(!Hf.has(X))return;let Y=async(...A)=>{let x=U1(X,A),E=String(x.request.operation);return J("cache",E,x.request,x.callOptions)};return Object.freeze(Y),R.set(X,Y),Y},set:()=>!1,defineProperty:()=>!1,deleteProperty:()=>!1});return V.set(L,N),N}if(L==="state"){let R=new Map,N=new Proxy(Object.freeze({}),{get(T,X){if(typeof X!=="string")return;let B=R.get(X);if(B!==void 0)return B;if(!Bf.has(X))return;let Y=async(...A)=>{let x=Q1(X,A),E=String(x.request.operation);return J("state",E,x.request,x.callOptions)};return Object.freeze(Y),R.set(X,Y),Y},set:()=>!1,defineProperty:()=>!1,deleteProperty:()=>!1});return V.set(L,N),N}if(L==="events"){let R=async(...T)=>{let X=Y1(T);return J("events","emit",X.request,X.callOptions)};Object.freeze(R);let N=Object.freeze({emit:R});return V.set(L,N),N}if(L==="workflows"){let R=async(...X)=>{let B=Math.max(1,Math.floor($-performance.now())),Y=Qf("call",X,B);return J("workflows","call",Y.request,Y.callOptions)},N=async(...X)=>{let B=Math.max(1,Math.floor($-performance.now())),Y=Qf("start",X,B);return J("workflows","start",Y.request,Y.callOptions)};Object.freeze(R),Object.freeze(N);let T=Object.freeze({call:R,start:N});return V.set(L,T),T}let Z=new Map,Q=new Proxy(Object.freeze({}),{get(R,N){if(typeof N!=="string")return;let T=Z.get(N);if(T!==void 0)return T;let X=async(B=null,Y)=>J(L,N,L==="http"&&N==="request"?bf(B):L==="telegram"&&N==="send"?cf(B):L==="discord"&&N==="send"?lf(B):L==="whatsapp"&&N==="send"?nf(B):B,Y);return Object.freeze(X),Z.set(N,X),X},set:()=>!1,defineProperty:()=>!1,deleteProperty:()=>!1});return V.set(L,Q),Q},set:()=>!1,defineProperty:()=>!1,deleteProperty:()=>!1})}class o extends Error{constructor(){super("Fetch and managed services cannot be used while a WOML module is initializing.");this.name="ModuleInitializationEffectError"}}function T1(f,$){let _=f;for(let V of $)_=Reflect.get(_,V);return _}function Wf(f,$,_=[]){return new Proxy(function(){},{get(J,U){return Wf(f,$,[..._,U])},apply(J,U,L){if(!$())throw new o;let G=T1(f(),_);if(typeof G!=="function")throw TypeError(`services.${_.map(String).join(".")} is not callable.`);return Reflect.apply(G,U,L)},set:()=>!1,defineProperty:()=>!1,deleteProperty:()=>!1})}function x1(f,$){return new Proxy(Object.freeze({}),{get(_,V){if(typeof V==="string"&&Object.hasOwn($,V))return $[V];return Reflect.get(f,V)},set:()=>!1,defineProperty:()=>!1,deleteProperty:()=>!1})}async function K1(f,$,_){let V={},J=0,U=$,L=()=>J>0,G=Wf(()=>U,L),Z=(...Q)=>{if(!L())throw new o;return _(...Q)};Object.defineProperty(globalThis,"services",{configurable:!1,enumerable:!1,writable:!1,value:G}),Object.defineProperty(globalThis,"fetch",{configurable:!1,enumerable:!0,writable:!1,value:Z});for(let Q of f.modules??[]){if(`sha256:${new Bun.CryptoHasher("sha256").update(Q.bundle).digest("hex")}`!==Q.bundleDigest)throw Error(`Module ${Q.name} failed its Worker digest check.`);if(Q.sourceMap!==void 0){if(`sha256:${new Bun.CryptoHasher("sha256").update(Q.sourceMap).digest("hex")}`!==Q.sourceMapDigest)throw Error(`Module ${Q.name} failed its source-map digest check.`)}let N=Xf(Q),X=await import(`data:text/javascript;base64,${Buffer.from(N,"utf8").toString("base64")}`),B={};for(let Y of Q.exports){let A=X[Y];if(typeof A!=="function")throw TypeError(`Module ${Q.name} export ${Y} is not a function.`);let x=function(...H){J+=1;try{let K=Reflect.apply(A,void 0,H);if(typeof K==="object"&&K!==null||typeof K==="function"){if(typeof Reflect.get(K,"then")==="function")return Promise.resolve(K).finally(()=>{J-=1})}return J-=1,K}catch(K){throw J-=1,K}};Object.freeze(x),B[Y]=x}V[Q.name]=Object.freeze(B)}return U=x1($,V),U}function I(f,$){if(f===void 0)return;f.identity.invocationId=$.invocationId,f.identity.runId=$.runId}async function A1(f){let $=[];try{let _=k("worker","worker.prepare_context",(H)=>{if(I(H,f),H!==void 0)H.bytes.context=Buffer.byteLength(JSON.stringify(f.context),"utf8");let K=performance.now()+f.timeoutMs;l.clear(),s.clear(),n.clear();let F=S({...f.context,payload:f.context.trigger}),O=f.attempt===void 0?void 0:S(f.attempt),w=S(f.bindings?.secrets??{}),a=f.lifecycle===void 0?void 0:S(f.lifecycle),t=f.reusable===void 0?void 0:S(f.reusable),e=f.reusableLifecycle===void 0?void 0:S(f.reusableLifecycle);return{executionDeadline:K,context:F,attempt:O,secrets:w,lifecycle:a,reusable:t,reusableLifecycle:e,secretValues:Object.values(f.bindings?.secrets??{})}}),{executionDeadline:V,context:J,attempt:U,secrets:L,lifecycle:G,reusable:Z,reusableLifecycle:Q}=_;$=_.secretValues;let R=Object.freeze({log:(...H)=>globalThis.console.error(z(H.map((K)=>String(K)).join(" "),$)),info:(...H)=>globalThis.console.error(z(H.map((K)=>String(K)).join(" "),$)),warn:(...H)=>globalThis.console.error(z(H.map((K)=>String(K)).join(" "),$)),error:(...H)=>globalThis.console.error(z(H.map((K)=>String(K)).join(" "),$))}),N=W1(f,V),T=vf(f),X=await j("worker","worker.load_modules",async(H)=>{if(I(H,f),H!==void 0)H.counts.modules=f.modules?.length??0,H.bytes.modules=(f.modules??[]).reduce((K,F)=>K+Buffer.byteLength(F.bundle,"utf8")+Buffer.byteLength(F.sourceMap??"","utf8"),0);return f.modules===void 0?N:await K1(f,N,T)});if(f.bindings!==void 0&&f.modules===void 0)Object.defineProperty(globalThis,"fetch",{configurable:!1,enumerable:!0,writable:!1,value:T});let B=f.nodeId.replace(/[^A-Za-z0-9_-]/g,"_"),Y=`"use strict";
7
+ ${f.source}
8
+ //# sourceURL=woml-${f.mode==="lifecycle"?"lifecycle":"step"}-${B}.js`,A=k("worker","worker.compile_script",(H)=>{if(I(H,f),H!==void 0)H.bytes.source=Buffer.byteLength(f.source,"utf8");return f.bindings===void 0?new C("context","attempt","console",Y):Z!==void 0&&Q!==void 0?Z.definition.kind==="step"?new C("props","context","lifecycle","services","fetch","console",Y):new C("props","lifecycle","services","fetch","console",Y):Z!==void 0?new C("props","context","attempt","services","fetch","console",Y):f.mode==="lifecycle"?new C("context","lifecycle","attempt","services","secrets","fetch","console",Y):new C("context","attempt","services","secrets","fetch","console",Y)}),x=await j("worker","worker.execute_user_code",async(H)=>{return I(H,f),f.bindings===void 0?await A(J,U,R):Z!==void 0&&Q!==void 0?Z.definition.kind==="step"?await A(Z.props,J,Q,X,T,R):await A(Z.props,Q,X,T,R):Z!==void 0?await A(Z.props,J,U,X,T,R):f.mode==="lifecycle"?await A(J,G,U,X,L,T,R):await A(J,U,X,L,T,R)});if((f.mode==="lifecycle"||Q!==void 0)&&x===void 0)x=null;let E=k("worker","worker.validate_result",(H)=>{I(H,f);let K=d(x);if(H!==void 0&&K===void 0)H.bytes.result=Buffer.byteLength(JSON.stringify(x),"utf8");return K});if(E!==void 0)return{ok:!1,error:{kind:"non-json",name:"NonJsonResult",message:`${E.path}: ${E.reason}`}};return{ok:!0,result:x}}catch(_){return qf(_,$,f.modules)}}async function D1(f){let $=await j("worker","worker.execute_invocation",async(_)=>{if(I(_,f),_!==void 0)_.bytes.context=Buffer.byteLength(JSON.stringify(f.context),"utf8"),_.bytes.source=Buffer.byteLength(f.source,"utf8"),_.counts.modules=f.modules?.length??0;return await A1(f)});k("worker","worker.prepare_result_transfer",(_)=>{if(I(_,f),_!==void 0)_.bytes.result=Buffer.byteLength(JSON.stringify($),"utf8")}),await Lf(),self.postMessage({messageType:"completed",response:$})}self.onmessage=(f)=>{let $=f.data;if($.messageType==="execute"){D1($.request);return}if($.messageType==="fetch_observation_ack"){let V=v.get($.requestId);if(V===void 0)return;if(v.delete($.requestId),$.ack.accepted)V.resolve();else V.reject(new r($.requestId,$.ack.error));return}let _=u.get($.callId);if(_===void 0)return;if(u.delete($.callId),$.result.outcome==="succeeded"){let V=Buffer.byteLength(JSON.stringify($.result.result),"utf8");if(V>4194304||V!==$.result.resultBytes){_.reject(new q(_.capability,_.operation,$.callId,{kind:"invalid_result",code:"WOML_CAPABILITY_RESULT_INVALID",message:"The capability result failed its byte-size contract.",retryable:!1,ambiguous:!1}));return}_.resolve($.result.result)}else _.reject(new q(_.capability,_.operation,$.callId,$.result.error))};
7
9
 
8
- //# debugId=3588A679617A344364756E2164756E21
10
+ //# debugId=F099977918BD274A64756E2164756E21