@lunora/agent 1.0.0-alpha.76 → 1.0.0-alpha.77

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.
@@ -24,10 +24,12 @@ type InboundAgentEmailHandler = (message: unknown, env: unknown, context: unknow
24
24
  /**
25
25
  * Build the inbound `email()` handler for one or more `onEmail` agents. The
26
26
  * returned callback parses the message, then walks `targets` in order and starts
27
- * a durable run for the first agent whose `onEmail` mapper returns a run. If the
28
- * matched agent's Workflow binding is missing from `env` (run codegen/dev so
29
- * `wrangler.jsonc` declares it) the dispatch throws, and the inbound handler's
30
- * `onError` rejects (bounces) the message.
27
+ * a durable run for the first agent whose `onEmail` mapper returns a run.
28
+ *
29
+ * Two dispatch failures bounce the message permanently rather than retrying: a
30
+ * missing Workflow binding (run codegen/dev so `wrangler.jsonc` declares it) and
31
+ * a run carrying the reserved workflow branch-marker key. See
32
+ * {@link rejectPermanently}.
31
33
  * @experimental
32
34
  */
33
35
  declare const dispatchAgentEmail: (targets: ReadonlyArray<AgentEmailTarget>) => InboundAgentEmailHandler;
package/dist/inbound.d.ts CHANGED
@@ -24,10 +24,12 @@ type InboundAgentEmailHandler = (message: unknown, env: unknown, context: unknow
24
24
  /**
25
25
  * Build the inbound `email()` handler for one or more `onEmail` agents. The
26
26
  * returned callback parses the message, then walks `targets` in order and starts
27
- * a durable run for the first agent whose `onEmail` mapper returns a run. If the
28
- * matched agent's Workflow binding is missing from `env` (run codegen/dev so
29
- * `wrangler.jsonc` declares it) the dispatch throws, and the inbound handler's
30
- * `onError` rejects (bounces) the message.
27
+ * a durable run for the first agent whose `onEmail` mapper returns a run.
28
+ *
29
+ * Two dispatch failures bounce the message permanently rather than retrying: a
30
+ * missing Workflow binding (run codegen/dev so `wrangler.jsonc` declares it) and
31
+ * a run carrying the reserved workflow branch-marker key. See
32
+ * {@link rejectPermanently}.
31
33
  * @experimental
32
34
  */
33
35
  declare const dispatchAgentEmail: (targets: ReadonlyArray<AgentEmailTarget>) => InboundAgentEmailHandler;
package/dist/inbound.mjs CHANGED
@@ -1 +1 @@
1
- import{LunoraError as i}from"@lunora/errors";import{createInboundEmailHandler as d,parseInboundEmail as u}from"@lunora/mail/inbound";import{h as f,B as l}from"./packem_shared/branch-marker-boZ00zmk.mjs";const E=c=>{const s=d({dispatch:async(a,o)=>{for(const n of c){const t=n.agent.onEmail;if(!t)continue;const r=await t(a);if(r==null)continue;const e=o.env[n.binding];if(!e||typeof e.create!="function")throw new i("INTERNAL",`@lunora/agent: no Workflow binding "${n.binding}" on env for an inbound agent — run codegen/dev so wrangler.jsonc declares it`);if(f(r))throw new i("BAD_REQUEST",`@lunora/agent: inbound run params ${l}`);await e.create({params:r});return}},parse:u});return async(a,o,n)=>s(a,o,n)};export{E as dispatchAgentEmail};
1
+ import{createInboundEmailHandler as u,parseInboundEmail as d}from"@lunora/mail/inbound";import{h as g,B as l}from"./packem_shared/branch-marker-boZ00zmk.mjs";const m="message could not be processed",c=(r,o)=>{console.error("@lunora/agent/inbound: bouncing message —",o),r.message.setReject(m)},E=r=>{const o=u({dispatch:async(t,n)=>{for(const e of r){const i=e.agent.onEmail;if(!i)continue;const a=await i(t);if(a==null)continue;const s=n.env[e.binding];if(!s||typeof s.create!="function"){c(n,`@lunora/agent: no Workflow binding "${e.binding}" on env for an inbound agent — run codegen/dev so wrangler.jsonc declares it`);return}if(g(a)){c(n,`@lunora/agent: inbound run params ${l}`);return}await s.create({params:a});return}},parse:d});return async(t,n,e)=>o(t,n,e)};export{E as dispatchAgentEmail};
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{runAgentLoop as t,splitForCompaction as r}from"./packem_shared/runAgentLoop-KUUoFT3r.mjs";import{collectAgenticMemoryTools as a,toSearchResults as i}from"./packem_shared/collectAgenticMemoryTools-BeMWT2qt.mjs";import{agentAsTool as l}from"./packem_shared/agentAsTool-DrFnh9UQ.mjs";import{codeTool as p}from"./packem_shared/codeTool-qdwj8j8S.mjs";import{agentComponent as c,agentExtension as x}from"./component.mjs";import{default as A}from"./packem_shared/createAgentContext-iS35-Xrs.mjs";import{defineAgent as d,defineAgentTool as u,isAgentDefinition as N}from"./packem_shared/defineAgent-CZdh7y3W.mjs";import{functionTool as D}from"./packem_shared/functionTool-D3CP4f8-.mjs";import{createAgentGenerate as M,createEpisodeExtract as O,createGraphExtract as _,createStreamGenerate as C,resolveAgentModel as G}from"./packem_shared/createAgentGenerate-9bZ2YhpN.mjs";import{adaptMcpResult as F,mcpTools as L}from"./packem_shared/adaptMcpResult-CVlq-_TO.mjs";import{buildModelMessages as k}from"./packem_shared/buildModelMessages-Y4tGo1T9.mjs";import{agentBindingName as R,agentClassName as V,agentDefaultName as b,voiceBindingName as h,voiceClassName as w}from"./naming.mjs";import{AGENT_MODULE as I,DEFAULT_AGENT_FUNCTION_PATHS as P,SANDBOX_INVOKE_PATH as X,SANDBOX_MODULE as y,toFunctionReference as K}from"./packem_shared/AGENT_MODULE-M4D1EejI.mjs";import{browserTool as j,containerTool as q,fsTool as z}from"./sandbox.mjs";import{defineSkill as Q,isSkillDefinition as Y}from"./packem_shared/defineSkill-DGGvDWNq.mjs";import{default as $}from"./packem_shared/VoiceSessionDO-Dxj0V8Ej.mjs";import{r as oe}from"./packem_shared/voice-turn-DbVR0H6T.mjs";import{default as re}from"./packem_shared/compileAgentWorkflow-GDJ_HWln.mjs";export{I as AGENT_MODULE,P as DEFAULT_AGENT_FUNCTION_PATHS,X as SANDBOX_INVOKE_PATH,y as SANDBOX_MODULE,$ as VoiceSessionDO,F as adaptMcpResult,l as agentAsTool,R as agentBindingName,V as agentClassName,c as agentComponent,b as agentDefaultName,x as agentExtension,j as browserTool,k as buildModelMessages,p as codeTool,a as collectAgenticMemoryTools,re as compileAgentWorkflow,q as containerTool,A as createAgentContext,M as createAgentGenerate,O as createEpisodeExtract,_ as createGraphExtract,C as createStreamGenerate,d as defineAgent,u as defineAgentTool,Q as defineSkill,z as fsTool,D as functionTool,N as isAgentDefinition,Y as isSkillDefinition,L as mcpTools,G as resolveAgentModel,t as runAgentLoop,oe as runVoiceTurn,r as splitForCompaction,K as toFunctionReference,i as toSearchResults,h as voiceBindingName,w as voiceClassName};
1
+ import{runAgentLoop as t,splitForCompaction as r}from"./packem_shared/runAgentLoop-KUUoFT3r.mjs";import{collectAgenticMemoryTools as a,toSearchResults as i}from"./packem_shared/collectAgenticMemoryTools-BeMWT2qt.mjs";import{agentAsTool as l}from"./packem_shared/agentAsTool-DrFnh9UQ.mjs";import{codeTool as p}from"./packem_shared/codeTool-qdwj8j8S.mjs";import{agentComponent as c,agentExtension as x}from"./component.mjs";import{default as A}from"./packem_shared/createAgentContext-iS35-Xrs.mjs";import{defineAgent as d,defineAgentTool as u,isAgentDefinition as N}from"./packem_shared/defineAgent-CZdh7y3W.mjs";import{functionTool as D}from"./packem_shared/functionTool-D3CP4f8-.mjs";import{createAgentGenerate as M,createEpisodeExtract as O,createGraphExtract as _,createStreamGenerate as C,resolveAgentModel as G}from"./packem_shared/createAgentGenerate-9bZ2YhpN.mjs";import{adaptMcpResult as F,mcpTools as L}from"./packem_shared/adaptMcpResult-CVlq-_TO.mjs";import{buildModelMessages as k}from"./packem_shared/buildModelMessages-Y4tGo1T9.mjs";import{agentBindingName as R,agentClassName as V,agentDefaultName as b,voiceBindingName as h,voiceClassName as w}from"./naming.mjs";import{AGENT_MODULE as I,DEFAULT_AGENT_FUNCTION_PATHS as P,SANDBOX_INVOKE_PATH as X,SANDBOX_MODULE as y,toFunctionReference as K}from"./packem_shared/AGENT_MODULE-M4D1EejI.mjs";import{browserTool as j,containerTool as q,fsTool as z}from"./sandbox.mjs";import{defineSkill as Q,isSkillDefinition as Y}from"./packem_shared/defineSkill-DGGvDWNq.mjs";import{default as $}from"./packem_shared/VoiceSessionDO-Dxj0V8Ej.mjs";import{r as oe}from"./packem_shared/voice-turn-DbVR0H6T.mjs";import{default as re}from"./packem_shared/compileAgentWorkflow-rVUKXIXq.mjs";export{I as AGENT_MODULE,P as DEFAULT_AGENT_FUNCTION_PATHS,X as SANDBOX_INVOKE_PATH,y as SANDBOX_MODULE,$ as VoiceSessionDO,F as adaptMcpResult,l as agentAsTool,R as agentBindingName,V as agentClassName,c as agentComponent,b as agentDefaultName,x as agentExtension,j as browserTool,k as buildModelMessages,p as codeTool,a as collectAgenticMemoryTools,re as compileAgentWorkflow,q as containerTool,A as createAgentContext,M as createAgentGenerate,O as createEpisodeExtract,_ as createGraphExtract,C as createStreamGenerate,d as defineAgent,u as defineAgentTool,Q as defineSkill,z as fsTool,D as functionTool,N as isAgentDefinition,Y as isSkillDefinition,L as mcpTools,G as resolveAgentModel,t as runAgentLoop,oe as runVoiceTurn,r as splitForCompaction,K as toFunctionReference,i as toSearchResults,h as voiceBindingName,w as voiceClassName};
@@ -1 +1 @@
1
- import{defineWorkflow as s}from"@lunora/workflow";import{runAgentLoop as m}from"./runAgentLoop-KUUoFT3r.mjs";import{createStreamGenerate as p,createAgentGenerate as l,createEpisodeExtract as f,createGraphExtract as d,createCompact as u}from"./createAgentGenerate-9bZ2YhpN.mjs";import{agentDefaultName as c}from"../naming.mjs";import{DEFAULT_AGENT_FUNCTION_PATHS as A}from"./AGENT_MODULE-M4D1EejI.mjs";import{F as T}from"./createDispatchRunner-pLyQ70FK-2_j6ocGT.mjs";import{otlpTelemetry as y}from"./otlpTelemetry-CoyeTO8S.mjs";const E=(r,t,a)=>t===void 0?r:T({env:a,identity:{userId:t},label:"@lunora/agent"}),O=(r,t,a)=>{const e=t.LUNORA_OTLP_ENDPOINT;if(typeof e!="string"||e===""||r.telemetry?.isEnabled===!1)return r;const n=typeof t.LUNORA_OTLP_TOKEN=="string"?t.LUNORA_OTLP_TOKEN:void 0,i=[r.telemetry?.integrations].flat().filter(o=>o!==void 0);return{...r,telemetry:{...r.telemetry,integrations:[...i,y({conversationId:a,endpoint:e,token:n})],isEnabled:!0}}},I=(r,t,a)=>s({handler:async e=>{const n=O(r,e.env,e.params.threadKey);return m({agent:n,compact:u(),env:e.env,exportName:t,extractGraph:d(),extractEpisode:f(),generate:l(n,e.env),instanceId:e.event.instanceId,params:e.params,paths:a?.paths??A,run:E(e.run,e.params.owner,e.env),step:e.step,streamGenerate:p(n,e.env)})},name:r.name??c(t)});export{I as default};
1
+ import{defineWorkflow as s}from"@lunora/workflow";import{runAgentLoop as m}from"./runAgentLoop-KUUoFT3r.mjs";import{createStreamGenerate as p,createAgentGenerate as l,createEpisodeExtract as f,createGraphExtract as d,createCompact as u}from"./createAgentGenerate-9bZ2YhpN.mjs";import{agentDefaultName as c}from"../naming.mjs";import{DEFAULT_AGENT_FUNCTION_PATHS as A}from"./AGENT_MODULE-M4D1EejI.mjs";import{F as T}from"./createDispatchRunner-pLyQ70FK-2_j6ocGT.mjs";import{otlpTelemetry as y}from"./otlpTelemetry-CywiFp-X.mjs";const E=(r,t,a)=>t===void 0?r:T({env:a,identity:{userId:t},label:"@lunora/agent"}),O=(r,t,a)=>{const e=t.LUNORA_OTLP_ENDPOINT;if(typeof e!="string"||e===""||r.telemetry?.isEnabled===!1)return r;const n=typeof t.LUNORA_OTLP_TOKEN=="string"?t.LUNORA_OTLP_TOKEN:void 0,i=[r.telemetry?.integrations].flat().filter(o=>o!==void 0);return{...r,telemetry:{...r.telemetry,integrations:[...i,y({conversationId:a,endpoint:e,token:n})],isEnabled:!0}}},I=(r,t,a)=>s({handler:async e=>{const n=O(r,e.env,e.params.threadKey);return m({agent:n,compact:u(),env:e.env,exportName:t,extractGraph:d(),extractEpisode:f(),generate:l(n,e.env),instanceId:e.event.instanceId,params:e.params,paths:a?.paths??A,run:E(e.run,e.params.owner,e.env),step:e.step,streamGenerate:p(n,e.env)})},name:r.name??c(t)});export{I as default};
@@ -0,0 +1 @@
1
+ import{estimateModelCost as H}from"@lunora/ai";import{a as M,r as p,t as z,s as B,e as D,c as L}from"./common-CJSjtsfv.mjs";const V=e=>`${String(Math.round(e))}000000`,P=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0")),O=512,k=new Uint8Array(O);let w=O;const j=(e,t,o)=>{let s="";for(let n=0;n<o;n+=1)s+=P[e[t+n]];return s},C=e=>{if(e>O){const o=new Uint8Array(e);return crypto.getRandomValues(o),j(o,0,e)}w+e>O&&(crypto.getRandomValues(k),w=0);const t=j(k,w,e);return w+=e,t},N=(e,t)=>typeof t=="boolean"?{key:e,value:{boolValue:t}}:typeof t=="number"?Number.isFinite(t)?Number.isSafeInteger(t)?{key:e,value:{intValue:String(t)}}:{key:e,value:{doubleValue:t}}:{key:e,value:{stringValue:String(t)}}:{key:e,value:{stringValue:t}},F=(e,t,o)=>{const s={},n=new Map,f=(u,d)=>{const y=u.toLowerCase(),T=n.get(y);T===void 0?(n.set(y,u),s[u]=d):s[T]=d};for(const[u,d]of Object.entries(e))f(u,d);for(const[u,d]of Object.entries(t??{}))f(u,d);return o!==void 0&&o.length>0&&f("authorization",`Bearer ${o}`),s},J=e=>Array.isArray(e)?e:[e],Y=(e,t)=>{const o={"service.name":e};for(const[s,n]of Object.entries({}))o[s]=n;return Object.entries(o).map(([s,n])=>N(s,n))},q=(e,t,o,s)=>({resourceSpans:[{resource:{attributes:Y(o)},scopeSpans:[{scope:{name:t},spans:J(e)}]}]}),r=(e,t,o)=>{if(o!=null){if(typeof o=="boolean"||typeof o=="number"||typeof o=="string"){e.push(N(t,o));return}e.push(N(t,JSON.stringify(o)))}},R=(e,t)=>{(async()=>{let s;try{s=await e}catch(n){t(!1,n instanceof Error?n.message:String(n),void 0);return}t(!0,void 0,s)})().catch(()=>{})},X=e=>{const{conversationId:t,endpoint:o,headers:s,recordInputs:n=!1,recordOutputs:f=!1,token:u,traceId:d,waitUntil:y}=e,T=e.serviceName??"lunora";let b=o;for(;b.endsWith("/");)b=b.slice(0,-1);const $=`${b}/v1/traces`,E=F({"content-type":"application/json"},s,u),v=(i,h,c,g,I)=>{const _={attributes:I,endTimeUnixNano:V(Date.now()),kind:1,name:i,spanId:C(8),startTimeUnixNano:V(h),status:c?{code:1}:{code:2,message:g??""},traceId:d??C(16)};try{const x=fetch($,{body:JSON.stringify(q(_,"@lunora/agent",T)),headers:E,method:"POST"}).catch(()=>{});y?.(x)}catch{}};return{executeLanguageModelCall:i=>{const h=Date.now(),c=p(i,"modelId"),g=i.execute();return R(g,(_,x,l)=>{const a=[];r(a,"gen_ai.operation.name","chat"),r(a,"gen_ai.request.model",c),r(a,"gen_ai.system",p(i,"provider")),r(a,"gen_ai.conversation.id",t);const m=B(p(l,"usage"));m&&(r(a,"gen_ai.usage.input_tokens",m.inputTokens),r(a,"gen_ai.usage.output_tokens",m.outputTokens),r(a,"gen_ai.usage.total_tokens",m.totalTokens));const S=D(l);S&&(r(a,"gen_ai.response.cached",S.cached),r(a,"cf.aig.log_id",S.logId));const A=S?.cost,U=A??(typeof c=="string"?H(c,{inputTokens:m?.inputTokens,outputTokens:m?.outputTokens}):void 0);U!==void 0&&(r(a,"gen_ai.usage.cost",U),r(a,"lunora.usage.cost.source",A===void 0?"estimated":"provider")),n&&r(a,"gen_ai.prompt",p(i,"messages")),f&&r(a,"gen_ai.completion",L(p(l,"content"))),v(typeof c=="string"?`chat ${c}`:"language_model_call",h,_,x,a)}),g},executeTool:i=>{const h=Date.now(),c=M(i),g=i.execute();return R(g,(_,x)=>{const l=[];r(l,"gen_ai.operation.name","execute_tool"),r(l,"gen_ai.tool.name",c),r(l,"gen_ai.tool.call.id",p(i,"toolCallId")),n&&r(l,"gen_ai.tool.input",z(i)),v(typeof c=="string"?`execute_tool ${c}`:"execute_tool",h,_,x,l)}),g}}};export{X as otlpTelemetry};
@@ -1 +1 @@
1
- import{braintrustTelemetry as o}from"../packem_shared/braintrustTelemetry-CoYK-pq7.mjs";import{combineTelemetry as m}from"../packem_shared/combineTelemetry-DgE9W9G8.mjs";import{consoleTelemetry as p}from"../packem_shared/consoleTelemetry-BZY3Y-Ly.mjs";import{otlpTelemetry as f}from"../packem_shared/otlpTelemetry-CoyeTO8S.mjs";import{sentryTelemetry as T}from"../packem_shared/sentryTelemetry-CPqEbFPA.mjs";export{o as braintrustTelemetry,m as combineTelemetry,p as consoleTelemetry,f as otlpTelemetry,T as sentryTelemetry};
1
+ import{braintrustTelemetry as o}from"../packem_shared/braintrustTelemetry-CoYK-pq7.mjs";import{combineTelemetry as m}from"../packem_shared/combineTelemetry-DgE9W9G8.mjs";import{consoleTelemetry as p}from"../packem_shared/consoleTelemetry-BZY3Y-Ly.mjs";import{otlpTelemetry as f}from"../packem_shared/otlpTelemetry-CywiFp-X.mjs";import{sentryTelemetry as T}from"../packem_shared/sentryTelemetry-CPqEbFPA.mjs";export{o as braintrustTelemetry,m as combineTelemetry,p as consoleTelemetry,f as otlpTelemetry,T as sentryTelemetry};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lunora/agent",
3
- "version": "1.0.0-alpha.76",
3
+ "version": "1.0.0-alpha.77",
4
4
  "description": "Durable AI agents for Lunora: defineAgent compiles a replay-safe tool-loop onto Cloudflare Workflows, with DO SQLite threads and live message subscriptions",
5
5
  "keywords": [
6
6
  "agent",
@@ -84,10 +84,10 @@
84
84
  "access": "public"
85
85
  },
86
86
  "dependencies": {
87
- "@lunora/ai": "1.0.0-alpha.65",
87
+ "@lunora/ai": "1.0.0-alpha.66",
88
88
  "@lunora/errors": "1.0.0-alpha.26",
89
- "@lunora/mail": "1.0.0-alpha.55",
90
- "@lunora/server": "1.0.0-alpha.94",
89
+ "@lunora/mail": "1.0.0-alpha.56",
90
+ "@lunora/server": "1.0.0-alpha.95",
91
91
  "@lunora/values": "1.0.0-alpha.34",
92
92
  "@lunora/workflow": "1.0.0-alpha.38",
93
93
  "@modelcontextprotocol/sdk": "^1.30.0",
@@ -1 +0,0 @@
1
- import{a as H,r as m,t as z,s as B,e as C,c as D}from"./common-CJSjtsfv.mjs";const U=e=>`${String(Math.round(e))}000000`,L=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0")),O=512,V=new Uint8Array(O);let w=O;const v=(e,t,n)=>{let r="";for(let o=0;o<n;o+=1)r+=L[e[t+o]];return r},j=e=>{if(e>O){const n=new Uint8Array(e);return crypto.getRandomValues(n),v(n,0,e)}w+e>O&&(crypto.getRandomValues(V),w=0);const t=v(V,w,e);return w+=e,t},N=(e,t)=>typeof t=="boolean"?{key:e,value:{boolValue:t}}:typeof t=="number"?Number.isFinite(t)?Number.isSafeInteger(t)?{key:e,value:{intValue:String(t)}}:{key:e,value:{doubleValue:t}}:{key:e,value:{stringValue:String(t)}}:{key:e,value:{stringValue:t}},M=(e,t,n)=>{const r={},o=new Map,f=(c,d)=>{const x=c.toLowerCase(),b=o.get(x);b===void 0?(o.set(x,c),r[c]=d):r[b]=d};for(const[c,d]of Object.entries(e))f(c,d);for(const[c,d]of Object.entries(t??{}))f(c,d);return n!==void 0&&n.length>0&&f("authorization",`Bearer ${n}`),r},P=e=>Array.isArray(e)?e:[e],k=(e,t)=>{const n={"service.name":e};for(const[r,o]of Object.entries({}))n[r]=o;return Object.entries(n).map(([r,o])=>N(r,o))},F=(e,t,n,r)=>({resourceSpans:[{resource:{attributes:k(n)},scopeSpans:[{scope:{name:t},spans:P(e)}]}]}),s=(e,t,n)=>{if(n!=null){if(typeof n=="boolean"||typeof n=="number"||typeof n=="string"){e.push(N(t,n));return}e.push(N(t,JSON.stringify(n)))}},R=(e,t)=>{(async()=>{let r;try{r=await e}catch(o){t(!1,o instanceof Error?o.message:String(o),void 0);return}t(!0,void 0,r)})().catch(()=>{})},Y=e=>{const{conversationId:t,endpoint:n,headers:r,recordInputs:o=!1,recordOutputs:f=!1,token:c,traceId:d,waitUntil:x}=e,b=e.serviceName??"lunora";let y=n;for(;y.endsWith("/");)y=y.slice(0,-1);const $=`${y}/v1/traces`,E=M({"content-type":"application/json"},r,c),A=(i,p,u,g,I)=>{const h={attributes:I,endTimeUnixNano:U(Date.now()),kind:1,name:i,spanId:j(8),startTimeUnixNano:U(p),status:u?{code:1}:{code:2,message:g??""},traceId:d??j(16)};try{const _=fetch($,{body:JSON.stringify(F(h,"@lunora/agent",b)),headers:E,method:"POST"}).catch(()=>{});x?.(_)}catch{}};return{executeLanguageModelCall:i=>{const p=Date.now(),u=m(i,"modelId"),g=i.execute();return R(g,(h,_,l)=>{const a=[];s(a,"gen_ai.operation.name","chat"),s(a,"gen_ai.request.model",u),s(a,"gen_ai.system",m(i,"provider")),s(a,"gen_ai.conversation.id",t);const S=B(m(l,"usage"));S&&(s(a,"gen_ai.usage.input_tokens",S.inputTokens),s(a,"gen_ai.usage.output_tokens",S.outputTokens),s(a,"gen_ai.usage.total_tokens",S.totalTokens));const T=C(l);T&&(s(a,"gen_ai.usage.cost",T.cost),s(a,"gen_ai.response.cached",T.cached),s(a,"cf.aig.log_id",T.logId)),o&&s(a,"gen_ai.prompt",m(i,"messages")),f&&s(a,"gen_ai.completion",D(m(l,"content"))),A(typeof u=="string"?`chat ${u}`:"language_model_call",p,h,_,a)}),g},executeTool:i=>{const p=Date.now(),u=H(i),g=i.execute();return R(g,(h,_)=>{const l=[];s(l,"gen_ai.operation.name","execute_tool"),s(l,"gen_ai.tool.name",u),s(l,"gen_ai.tool.call.id",m(i,"toolCallId")),o&&s(l,"gen_ai.tool.input",z(i)),A(typeof u=="string"?`execute_tool ${u}`:"execute_tool",p,h,_,l)}),g}}};export{Y as otlpTelemetry};