@hugex/ai 2.8.7

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.
@@ -0,0 +1 @@
1
+ import{b as k}from"./chunk-OYP6D5VN.js";import{a as B}from"./chunk-V6JSMX5A.js";import{tool as rt}from"ai";import{z as C}from"zod";import{z as p}from"zod";function j(t){if(t&&typeof t=="object"&&!t.type)return p.object({});if(t.type==="object")if(t.properties){let e={},o=t.required||[];for(let[r,n]of Object.entries(t.properties)){let a=j(n),c=n!=null&&typeof n=="object"&&Object.prototype.hasOwnProperty.call(n,"default");e[r]=c?a.default(n.default):o.includes(r)?a:a.optional()}return p.object(e)}else return p.object({});else if(t.type==="array"&&t.items){let e=j(t.items);return p.array(e)}else{if(t.type==="string")return p.string();if(t.type==="number"||t.type==="integer")return p.number();if(t.type==="boolean")return p.boolean()}return p.any()}var D=/\{\{\s*secrets\.[A-Z][A-Z0-9_]*\s*\}\}/,ht=t=>D.test(t),nt=/\{\{\s*auth\.[A-Z][A-Z0-9_]*\s*\}\}/;var L=t=>D.test(t)||nt.test(t),E=t=>{let e=t.indexOf("?");return e===-1?t:`${t.slice(0,e)}?[redacted-query]`};var ot=256*1024,st=3e4,it=/\{\{\s*([^}]+?)\s*\}\}/g,ct=t=>{let e=t.toLowerCase();return e.includes("token")||e.includes("secret")||e.includes("key")||e.includes("password")||e.includes("access")||e==="authorization"},at=t=>{let e={};for(let o in t)e[o]=ct(o)?"[REDACTED]":t[o];return e},J=(t,e)=>{let o=t.indexOf(".");if(o===-1)return e[t];let r=t.slice(0,o),n=t.slice(o+1);if(r in e)return k(e[r],n)},$=(t,e,o)=>t&&t.replace(it,(r,n)=>{let a=String(n).trim();if(a.startsWith("secrets.")){let l=a.slice(8);return Object.prototype.hasOwnProperty.call(o.secrets,l)?o.secrets[l]:r}if(a.startsWith("auth.")){let l=a.slice(5);return Object.prototype.hasOwnProperty.call(o.auth,l)?o.auth[l]:r}let c=J(a,e);return c==null?"":typeof c=="string"?c:JSON.stringify(c)}),T=(t,e,o)=>{if(t==null)return t;if(typeof t=="string"){let r=t.match(/^\s*\{\{\s*([^}]+?)\s*\}\}\s*$/);if(r){let n=r[1].trim();if(n.startsWith("secrets.")){let c=n.slice(8);return Object.prototype.hasOwnProperty.call(o.secrets,c)?o.secrets[c]:t}if(n.startsWith("auth.")){let c=n.slice(5);return Object.prototype.hasOwnProperty.call(o.auth,c)?o.auth[c]:t}return J(n,e)}return $(t,e,o)}if(Array.isArray(t))return t.map(r=>T(r,e,o));if(typeof t=="object"){let r={};for(let n in t)r[n]=T(t[n],e,o);return r}return t},ut=(t,e)=>t?e?/^https?:\/\//i.test(e)?e:t.endsWith("/")&&e.startsWith("/")?t+e.slice(1):!t.endsWith("/")&&!e.startsWith("/")?`${t}/${e}`:t+e:t:e||"",dt=(t,e)=>{if(!e)return t;let o=new URL(t);for(let r in e){let n=e[r];n!==void 0&&(Array.isArray(n)?o.searchParams.set(r,n.join(",")):o.searchParams.set(r,String(n)))}return o.toString()},W=t=>{if(!t)return{};let e={};for(let o in t)t[o]!==void 0&&(e[o]=t[o]);return e},lt=t=>{let e={};for(let o in t){let r=t[o];r!=null&&(e[o]=typeof r=="string"?r:String(r))}return e},ft=(t,e,o)=>{if(!(!t||t.type==="none"||!t.value)){if(t.type==="bearer"){e.Authorization=`Bearer ${t.value}`;return}if(t.type==="apiKey"){let r=t.in||"header",n=t.param||t.header||"X-API-Key";r==="query"?o[n]=t.value:e[n]=t.value}}},pt=(t,e)=>{let o=new TextEncoder().encode(t);if(o.byteLength<=e)return{text:t,truncated:!1};let r=o.slice(0,e);return{text:new TextDecoder("utf-8",{fatal:!1}).decode(r),truncated:!0}};function yt(t,e,o,r){var U;if(t.kind!=="http")throw new Error(`customHttpTool: unsupported kind '${t.kind}' for tool '${t.name}'`);let n=t.execution||{},a=n.actions&&typeof n.actions=="object"?Object.keys(n.actions):[],c=((U=n.router)==null?void 0:U.field)||"action",l=t.inputSchema&&typeof t.inputSchema=="object"&&Object.keys(t.inputSchema).length>0?j(t.inputSchema):C.object({});if(a.length>0&&l instanceof C.ZodObject){let g=C.enum(a);l=l.extend({[c]:g})}let w=t.description||t.label||t.name,y=t.output||{},K=Number.isFinite(y.maxBytes)&&y.maxBytes>0?y.maxBytes:ot;return rt({description:w,inputSchema:l,execute:async g=>{var N;let m={secrets:e.secrets??{},auth:e.userAuth??{}},h={input:g??{},...o.context||{}},u=n,i;if(n.actions&&typeof n.actions=="object"){let s=((N=n.router)==null?void 0:N.field)||"action";if(i=g==null?void 0:g[s],!i||!n.actions[i])return{type:"error",error:`unknown action '${i}' for tool '${t.name}'`,natural:`Tool ${t.name} could not run: missing or unknown action.`};u=n.actions[i]}let H=u.url||ut(n.baseUrl,u.path);if(!H)return{type:"error",error:"missing url",natural:`Tool ${t.name} has no URL configured.`};let I=L(H),G=$(H,h,m),Q={...n.headers||{},...u.headers||{}},b=lt(W(T(Q,h,m))),X={...n.query||{},...u.query||{}},_=W(T(X,h,m)),A=(u.method||n.method||"GET").toUpperCase(),M,V=u.body!==void 0||n.body!==void 0;if(A!=="GET"&&A!=="HEAD"&&V){let s=u.body!==void 0?u.body:n.body,f=typeof s=="string"?$(s,h,m):T(s,h,m);M=typeof f=="string"?f:JSON.stringify(f),!b["Content-Type"]&&!b["content-type"]&&(b["Content-Type"]="application/json")}let R=u.auth||n.auth,Y=R?{...R,value:R.value?$(String(R.value),h,m):R.value}:void 0;ft(Y,b,_);let P=dt(G,_),v=I?E(P):P,tt=Math.min(Number.isFinite(u.timeoutMs)&&u.timeoutMs>0?u.timeoutMs:Number.isFinite(n.timeoutMs)&&n.timeoutMs>0?n.timeoutMs:15e3,st),Z={tool:t.name,action:i,stage:"request",url:v,method:A,headers:at(b)};JSON.stringify(Z),r==null||r({type:`info:tool:${t.name}:request`,content:Z});let F=new AbortController,et=setTimeout(()=>F.abort(),tt);try{let s=await fetch(P,{method:A,headers:b,body:M,signal:F.signal}),f=s.headers.get("content-type")||"",O=await s.text(),{text:x,truncated:S}=pt(O,K),d;if(y.contentType==="text"?d=x:f.includes("application/json")||y.contentType==="json"?(d=B(x),d===null&&x&&(d=x)):d=x,y.jsonPath&&d!==null&&typeof d=="object"&&(d=k(d,y.jsonPath)),!s.ok){let z={tool:t.name,action:i,stage:"http_error",status:s.status};return JSON.stringify(z),r==null||r({type:`error:tool:${t.name}:http`,content:z}),{type:"error",status:s.status,error:`HTTP ${s.status}: ${s.statusText}`,result:d,truncated:S,natural:`${t.name}${i?`:${i}`:""} failed with HTTP ${s.status}.`}}let q={tool:t.name,action:i,stage:"finish",status:s.status,truncated:S};return JSON.stringify(q),r==null||r({type:`info:tool:${t.name}:finish`,content:q}),{type:i||t.name,status:s.status,result:d,truncated:S,natural:`${t.name}${i?`:${i}`:""} completed (HTTP ${s.status}).`}}catch(s){let f=String((s==null?void 0:s.message)??s),O={tool:t.name,action:i,stage:"error",error:f};return JSON.stringify(O),r==null||r({type:`error:tool:${t.name}:execution`,content:O}),{type:"error",error:f,natural:`${t.name}${i?`:${i}`:""} failed: ${f}`}}finally{clearTimeout(et)}}})}var Pt=yt;export{ht as a,E as b,j as c,yt as d,Pt as e};
@@ -0,0 +1 @@
1
+ import{tool as o}from"ai";import{z as t}from"zod";var p=(n,i,r,a)=>o({description:"Get the weather in a location (in Celsius)",inputSchema:t.object({location:t.string().describe("The location to get the weather for")}),execute:async({location:e})=>(`${e}`,{location:e,temperature:Math.floor(Math.random()*21)})});export{p as a};
@@ -0,0 +1 @@
1
+ import{tool as m}from"ai";import{z as u}from"zod";function F(p,v,n,d){let o=e=>{let t=e.toLowerCase().replace("\xB0","").replace("kelvin","k");if(t==="c"||t==="celsius")return"C";if(t==="f"||t==="fahrenheit")return"F";if(t==="k"||t==="kelvin")return"K";throw new Error(`Invalid temperature unit: ${e}. Supported units: C/\xB0C/Celsius, F/\xB0F/Fahrenheit, K/Kelvin`)},l=(e,t,a)=>{let i=o(t),s=o(a),r;switch(i){case"C":r=e;break;case"F":r=(e-32)*5/9;break;case"K":r=e-273.15;break;default:throw new Error(`Unsupported source unit: ${t}`)}switch(s){case"C":return r;case"F":return r*9/5+32;case"K":return r+273.15;default:throw new Error(`Unsupported target unit: ${a}`)}};return m({description:"Convert temperature between Celsius, Fahrenheit, and Kelvin with optional static parameters. Always prioritizes output results over input.",inputSchema:u.object({temperature:u.number().describe("Temperature value to convert"),source:u.string().optional().describe("Source temperature unit (C/\xB0C/Celsius, F/\xB0F/Fahrenheit, K/Kelvin). Overrides static params if provided."),target:u.string().optional().describe("Target temperature unit (C/\xB0C/Celsius, F/\xB0F/Fahrenheit, K/Kelvin). Overrides static params if provided.")}),execute:async({temperature:e,source:t,target:a})=>{let i=(n==null?void 0:n.source)||t||"C",s=(n==null?void 0:n.target)||a||"F";if(`${e}${i}${s}`,typeof e!="number"||!Number.isFinite(e))throw new Error(`Invalid temperature value: ${e}. Must be a finite number.`);try{let r=l(e,i,s),g=o(i),c=o(s);return{input:{temperature:e,source:g,target:c},output:{value:Number(r.toFixed(2)),unit:c,important:"If source and target is different from your input, is because it is being force by defaults settings."}}}catch(r){throw new Error(`Conversion failed: ${r instanceof Error?r.message:String(r)}`)}}})}export{F as a};
@@ -0,0 +1,5 @@
1
+ import{c as g}from"./chunk-YHXUBVN2.js";import{tool as k}from"ai";import{z as m}from"zod";function R(e,c){if(c.length===0)return;let u=c.map(t=>`- "${t.name}"${t.description?` \u2014 applies when: ${t.description}`:""}`);return`MANDATORY REFERENCE CHECK. This skill has reference documents, each listed below with the condition under which it applies. On EVERY turn, BEFORE you answer, evaluate whether the user's message \u2014 or the reply you are about to give \u2014 matches any condition. If it does, you MUST first call \`readSkillRef({ skill: "${e}", ref: "<name>" })\`, read the document, and follow it in your response. Never guess, summarize, or apply a reference you have not loaded this turn.
2
+
3
+ References:
4
+ ${u.join(`
5
+ `)}`}function w(e,c,u,t){if(e.kind!=="skill")throw new Error(`skillTool: unsupported kind '${e.kind}' for tool '${e.name}'`);let a=typeof e.execution=="string"?JSON.parse(e.execution):e.execution||{},n=a.instructions||"",o=Array.isArray(a.references)?a.references:[],h=R(e.name,o);return k({description:e.description||e.label||e.name,inputSchema:m.object({}),execute:async()=>(t==null||t({type:"info:skill:bodyServed",content:{skill:e.name,refCount:o.length,refs:o.map(s=>s.name)}}),{instructions:n,references:o,...h?{how_to_use_references:h}:{}})})}function T(e,c,u,t){return k({description:"Loads the full content of an in-depth reference document belonging to a skill that was already opened in this conversation. Pass the skill name and the reference name exactly as listed in the skill's reference menu.",inputSchema:m.object({skill:m.string().describe("The name of the skill/tool that owns the reference"),ref:m.string().describe("The name of the reference document to read")}),execute:async({skill:a,ref:n})=>{var p,y;t==null||t({type:"info:skill:refRequested",content:{skill:a,ref:n}});let o=c.find(i=>i.name===a);if(!o){let i=c.map(l=>l.name).join(", ");return t==null||t({type:"warn:skill:skillMissing",content:{skill:a,availableSkills:i}}),{error:`Skill "${a}" not found or not attached to this LLM node.`,availableSkills:i}}let s=(typeof o.execution=="string"?JSON.parse(o.execution):o.execution||{}).references||[];if(!s.find(i=>i.name===n)){let i=s.map(l=>l.name).join(", ");return t==null||t({type:"warn:skill:refMissing",content:{skill:a,ref:n,availableRefs:i||"(none)"}}),{error:`Reference "${n}" not found in skill "${a}".`,availableRefs:i||"(none)"}}let f=`${o.id}:${n}`;if(e.skillRefCache&&e.skillRefCache.has(f))return t==null||t({type:"info:skill:refCacheHit",content:{skill:a,ref:n,tier:1}}),{name:n,content:e.skillRefCache.get(f)};let d=`skill:${o.id}:${n}`;if((p=e.memoryConfig)!=null&&p.enabled&&e.getContext)try{let i=await e.getContext(d),l=i!=null&&i.meta?JSON.parse(i.meta).truncated:!1;if(i!=null&&i.data&&!l)return t==null||t({type:"info:skill:refCacheHit",content:{skill:a,ref:n,tier:2}}),e.skillRefCache&&e.skillRefCache.set(f,i.data),{name:n,content:i.data}}catch(i){console.warn(`[readSkillRef] failed to check context memory for ${d}:`,i)}if(!e.env)throw new Error("Cloudflare bindings / Env missing on sessionEnv");t==null||t({type:"info:skill:refFetching",content:{skill:a,ref:n,toolId:o.id}});let r=await g(e.env,o.id,n);if(e.skillRefCache&&e.skillRefCache.set(f,r.content),(y=e.memoryConfig)!=null&&y.enabled&&e.setContext)try{await e.setContext({ref:d,domain:"skill",description:`Skill reference doc for ${a} (${n})`,data:r.content,cycle:e.cycle??0,meta:JSON.stringify({toolName:"readSkillRef",skill:a,ref:n,cacheable:!0})})}catch(i){console.warn(`[readSkillRef] failed to save to context memory for ${d}:`,i)}return t==null||t({type:"info:skill:refFetched",content:{skill:a,ref:n,bytes:r.content.length}}),{name:n,content:r.content}}})}export{w as a,T as b};
@@ -0,0 +1,11 @@
1
+ import{d as M,h as b,p as k}from"./chunk-GRZ6ZRHM.js";import{openai as P}from"@ai-sdk/openai";import{extractReasoningMiddleware as _,wrapLanguageModel as j}from"ai";import{createWorkersAI as A}from"workers-ai-provider";import{xai as R}from"@ai-sdk/xai";import{anthropic as O}from"@ai-sdk/anthropic";import{createOpenRouter as C}from"@openrouter/ai-sdk-provider";var y={};function f(r){if(r!=null){if(typeof r!="string")return r;try{return JSON.parse(r)}catch{return}}}function T(r){return{...r,defaultParams:f(r.defaultParams)??r.defaultParams,capabilities:f(r.capabilities)??r.capabilities,price:f(r.price)??r.price}}async function $(r,e,o){var d,l;if(!(e!=null&&e.getOraModel))throw new Error("resolveModelById requires a sessionEnv with getOraModel capable of fetching models dynamically.");let n=await e.getOraModel(r);if(!n)return;let t=T(n),m=((d=t.capabilities)==null?void 0:d.params)??M(t),{effectiveParams:a,adjustments:s}=b(t.defaultParams,o,m),i;if(y[t.provider])i=await y[t.provider](t,e,o);else if(t.provider==="openai")i=P(t.providerModel);else if(t.provider==="xai")i=R(t.providerModel);else if(t.provider==="anthropic")i=O(t.providerModel);else if(t.provider==="openrouter")i=C()(t.providerModel);else if(t.provider==="workersai"||t.provider==="cloudflare"){if(!((l=e==null?void 0:e.env)!=null&&l.AI))throw new Error("Workers AI provider requires sessionEnv.env.AI binding");i=A({binding:e.env.AI})(t.providerModel)}else i={provider:t.provider,providerModel:t.providerModel};let c=k(t);return c.kind==="tag"&&i&&typeof i=="object"&&"specificationVersion"in i&&(i=j({model:i,middleware:_({tagName:c.tagName??"think",startWithReasoning:c.startWithReasoning??!1})})),{provider:t.provider,modelHandle:i,entry:t,effectiveParams:a,paramAdjustments:s.length>0?s:void 0,reasoning:c}}function U(r,e){y[r]=e}import{generateText as N}from"ai";var x=256*1024,I=2*1024*1024-1024;function Z(r){let e=r??{};return{enabled:e.memory_enabled!==!1,mode:e.memory_mode==="summarize"?"summarize":"raw",summaryModel:typeof e.memory_summary_model=="string"?e.memory_summary_model:"gpt_5_nano",summaryThreshold:typeof e.memory_summary_threshold=="number"&&Number.isFinite(e.memory_summary_threshold)?e.memory_summary_threshold:12,toolCache:e.memory_tool_cache===!0}}function h(r){if(r==null)return"null";if(typeof r!="object")return JSON.stringify(r);if(Array.isArray(r))return`[${r.map(h).join(",")}]`;let e=r;return`{${Object.keys(e).sort().map(n=>`${JSON.stringify(n)}:${h(e[n])}`).join(",")}}`}async function E(r){let e=h(r??null),o=new TextEncoder().encode(e),n=await crypto.subtle.digest("SHA-256",o);return Array.from(new Uint8Array(n)).map(t=>t.toString(16).padStart(2,"0")).join("")}function v(r){return r==null?"":typeof r!="object"?String(r):Array.isArray(r)?`[${r.map(e=>typeof e=="object"?JSON.stringify(e):String(e)).join(", ")}]`:Object.entries(r).map(([e,o])=>`${e}:${typeof o=="object"?JSON.stringify(o):String(o)}`).join(",")}function L(r,e){let o=v(r);return`Params: ${o.length>100?`${o.slice(0,100)}\u2026`:o} -> Result: ${S(e)}`}async function ee(r,e){let o=new Date().toISOString();return`tool:${r}:${o}`}function S(r,e=200){var n;if(r==null)return"(empty)";if(typeof r=="string"){let t=((n=r.split(`
2
+ `)[0])==null?void 0:n.trim())||r;return t.length>e?`${t.slice(0,e)}\u2026`:t}if(typeof r=="object"){let t=Object.keys(r);if(t.length===0)return"{}";let a=`{${t.slice(0,5).join(", ")}${t.length>5?", \u2026":""}}`;return a.length>e?`${a.slice(0,e)}\u2026`:a}let o=String(r);return o.length>e?`${o.slice(0,e)}\u2026`:o}function re(r){let e=new TextEncoder().encode(r);if(e.length<=x)return{data:r,truncated:!1};let o=Math.min(x,I),n=e.slice(0,o);return{data:new TextDecoder().decode(n),truncated:!0}}function z(r){let e=r.split(":");if(e.length>=3){let o=e[e.length-1];if(/^[0-9a-f]{16,}$/i.test(o))return`${e.slice(0,-1).join(":")}:${o.slice(0,8)}`}return r}var D=40;function te(r,e=D){let o='\n\n## Working Memory\nYou have access to the working memory of past tool executions. To retrieve the full result payload for any reference below, call the `recall` tool with its reference string or a unique prefix of it (e.g., `recall({ reference: "tool:toolName:..." })`).';if(!r.length)return`${o}
3
+ (No memory entries yet)`;let n=r.filter(i=>i.domain==="summary"),t=r.filter(i=>i.domain!=="summary"),m=t.length>e?t.slice(t.length-e):t,a=t.length-m.length,s=[...n,...m].map(i=>`- ${z(i.ref)} \u2014 ${i.description}`);return a>0&&s.unshift(`- \u2026(${a} older entries omitted \u2014 rely on the summary or call recall)`),`${o}
4
+ ${s.join(`
5
+ `)}`}var g=new WeakSet;async function oe(r,e,o){var m,a,s,i;let n=e.memoryConfig;if(!(n!=null&&n.enabled)||n.mode!=="summarize"||g.has(r))return;let t=await((m=e.getContextIndex)==null?void 0:m.call(e))??[];if(!(t.length<n.summaryThreshold)){g.add(r);try{let c=t.filter(p=>p.domain==="tool").map(p=>`- ${p.ref}: ${p.description}`).join(`
6
+ `),d=await((a=e.getContextData)==null?void 0:a.call(e,"summary:session"))??"",l=await $(n.summaryModel,e);if(!l){console.warn(`[memory] summarize model '${n.summaryModel}' not found`);return}let{text:u}=await N({model:l.modelHandle,system:"Compress the session tool-memory into a concise cumulative working summary. Merge the previous summary with the new entries. Keep key facts and tool outcomes. Output plain text, no markdown headers.",prompt:`Cycle ${o}.
7
+ ${d?`Previous summary:
8
+ ${d}
9
+
10
+ `:""}New tool memory entries:
11
+ ${c||"(none)"}`}),w=(u==null?void 0:u.trim())||"(empty summary)";await((s=e.setContext)==null?void 0:s.call(e,{ref:"summary:session",domain:"summary",description:S(w,300),data:w,cycle:o,meta:JSON.stringify({kind:"session_summary"})})),await((i=e.pruneContext)==null?void 0:i.call(e,o))}catch(c){console.error("[memory] summarizeCycle failed:",c)}finally{g.delete(r)}}}function J(r){if(!r)return{};try{return JSON.parse(r)}catch{return{}}}function ne(r,e){return JSON.stringify({...J(r),...e})}export{T as a,$ as b,U as c,Z as d,E as e,L as f,ee as g,re as h,te as i,oe as j,J as k,ne as l};
@@ -0,0 +1 @@
1
+ var g=Object.create;var e=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var m=b=>a=>{var c=b[a];if(c)return c();throw new Error("Module not found in bundle: "+a)};var n=(b,a)=>()=>(a||b((a={exports:{}}).exports,a),a.exports),o=(b,a)=>{for(var c in a)e(b,c,{get:a[c],enumerable:!0})},l=(b,a,c,f)=>{if(a&&typeof a=="object"||typeof a=="function")for(let d of i(a))!k.call(b,d)&&d!==c&&e(b,d,{get:()=>a[d],enumerable:!(f=h(a,d))||f.enumerable});return b};var p=(b,a,c)=>(c=b!=null?g(j(b)):{},l(a||!b||!b.__esModule?e(c,"default",{value:b,enumerable:!0}):c,b));export{m as a,n as b,o as c,p as d};
@@ -0,0 +1 @@
1
+ import{a as R,b as w}from"./chunk-V6JSMX5A.js";import{tool as F}from"ai";import{z as o}from"zod";var N=["get_user_info","get_user_last_tweets","get_user_mentions","get_tweet_replies","advanced_search","get_trends"],P={get_user_info:o.literal("get_user_info"),get_user_last_tweets:o.literal("get_user_last_tweets"),get_user_mentions:o.literal("get_user_mentions"),get_tweet_replies:o.literal("get_tweet_replies"),advanced_search:o.literal("advanced_search"),get_trends:o.literal("get_trends")};function b(I,x,p,u){let h=p==null?void 0:p.actions,T=Array.isArray(h)&&h.length>0?h.filter(f=>N.includes(f)):[...N],_=T.map(f=>P[f]);if(_.length===0)throw new Error("twitter tool: no valid actions provided in opts.actions");let J=_.length===1?_[0]:o.union(_),$=`Twitter API${T.length<N.length?` \u2014 supports: ${T.join(", ")}`:""}`;return F({description:$,inputSchema:o.object({action:J,userName:o.string().optional(),username:o.string().optional(),userId:o.string().optional(),tweetId:o.string().optional(),query:o.string().optional(),queryType:o.enum(["Latest","Top"]).optional(),woeid:o.number().optional(),count:o.number().optional(),cursor:o.string().optional(),includeReplies:o.boolean().optional(),sinceTime:o.number().optional(),untilTime:o.number().optional()}),execute:async f=>{var L;let i={...p==null?void 0:p.defaults,...f},a={...i};for(let s in a)(s.toLowerCase().includes("token")||s.toLowerCase().includes("secret")||s.toLowerCase().includes("key")||s.toLowerCase().includes("password")||s.toLowerCase().includes("access"))&&(a[s]="[REDACTED]");let A={tool:"twitter",action:i.action,params:a};JSON.stringify(A),u==null||u({type:"info:tool:twitter:execute",content:A});let O=(L=I.env)==null?void 0:L.TWITTER_API_KEY;if(!O)throw new Error("TWITTER_API_KEY is required in environment variables");let q={accept:"application/json","X-API-Key":O};let m=async(s,t={})=>{let r={tool:"twitter",action:e,stage:"request",url:s,params:a};JSON.stringify(r),u==null||u({type:"info:tool:twitter:request",content:r});let n=await fetch(s,{...t,headers:{...q,...t.headers}}),l={tool:"twitter",action:e,stage:"response",status:n.status,statusText:n.statusText};if(JSON.stringify(l),u==null||u({type:"info:tool:twitter:response",content:l}),!n.ok){let y={tool:"twitter",action:e,stage:"error",status:n.status,statusText:n.statusText,url:s,params:a};throw JSON.stringify(y),u==null||u({type:"error:tool:twitter:http",content:y}),new Error(`HTTP ${n.status}: ${n.statusText}`)}let c=await n.text(),g=R(c);return JSON.stringify({tool:"twitter",action:e,stage:"doFetch_parsed",textLength:(c==null?void 0:c.length)||0}),g},{action:e}=i;JSON.stringify({info:"action_check",action:e,mergedAction:i.action,type:typeof e});let d=i.userName||i.username;try{let s="https://api.twitterapi.io";if(console.log("ENTERING TRY"),e==="get_user_last_tweets"){JSON.stringify({tool:"twitter",action:e,stage:"start",params:a});let t=i.userId;if(!t&&!d)throw new Error("userId or userName is required");let r=i.cursor||"",n=i.includeReplies||!1,l={cursor:r,includeReplies:n};t?l.userId=t:l.userName=d;let c=w(s,"/twitter/user/last_tweets",l),g=await m(c);return JSON.stringify({tool:"twitter",action:e,stage:"finish",summary:`Fetched last tweets for ${t||d}`,params:a}),{type:e,userId:t,userName:d,raw:g,natural:`Fetched last tweets for ${t||d}`,result:g}}else if(e==="get_user_mentions"){if(JSON.stringify({tool:"twitter",action:e,stage:"start",params:a}),!d)throw new Error("userName is required");let t=i.cursor||"",r=i.sinceTime,n=i.untilTime,l={userName:d,cursor:t};r!==void 0&&(l.sinceTime=r),n!==void 0&&(l.untilTime=n);let c=w(s,"/twitter/user/mentions",l),g=await m(c);return JSON.stringify({tool:"twitter",action:e,stage:"finish",summary:`Fetched mentions for ${d}`,params:a}),{type:e,userName:d,raw:g,natural:`Fetched mentions for ${d}`,result:g}}else if(e==="get_tweet_replies"){JSON.stringify({tool:"twitter",action:e,stage:"start",params:a});let t=i.tweetId;if(!t)throw new Error("tweetId is required");let r=i.cursor||"",n=i.sinceTime,l=i.untilTime,c={tweetId:t,cursor:r};n!==void 0&&(c.sinceTime=n),l!==void 0&&(c.untilTime=l);let g=w(s,"/twitter/tweet/replies",c),y=await m(g);return JSON.stringify({tool:"twitter",action:e,stage:"finish",summary:`Fetched replies for tweet ${t}`,params:a}),{type:e,tweetId:t,raw:y,natural:`Fetched replies for tweet ${t}`,result:y}}else if(e==="advanced_search"){JSON.stringify({tool:"twitter",action:e,stage:"start",params:a});let t=i.query;if(!t)throw new Error("query is required");let r=i.queryType||"Latest",n=i.cursor||"",l={query:t,queryType:r,cursor:n};let c=w(s,"/twitter/tweet/advanced_search",l),g=await m(c);return JSON.stringify({tool:"twitter",action:e,stage:"finish",summary:`Advanced search for "${t}" with type ${r}`,params:a}),{type:e,query:t,queryType:r,raw:g,natural:`Advanced search for "${t}" with type ${r}`,result:g}}else if(e==="get_trends"){JSON.stringify({tool:"twitter",action:e,stage:"start",params:a});let t=i.woeid;if(t===void 0)throw new Error("woeid is required");let r=i.count||30,n={woeid:t,count:r};JSON.stringify({params:n});let l=w(s,"/twitter/trends",n);JSON.stringify({tool:"twitter",action:e,stage:"doFetch_start",url:l});let c=await m(l);return JSON.stringify({tool:"twitter",action:e,stage:"finish",summary:`Fetched trends for woeid ${t}`,params:a}),{type:e,woeid:t,count:r,raw:c,natural:`Fetched trends for woeid ${t}`,result:c}}else{if(JSON.stringify({tool:"twitter",action:e,stage:"start",params:a}),!d)throw new Error("userName or username is required");let t=w(s,"/twitter/user/info",{userName:d}),r=await m(t);return JSON.stringify({tool:"twitter",action:e,stage:"finish",summary:`Fetched user info for ${d}`,params:a}),{type:e,username:d,raw:r,natural:`Fetched user info for ${d}`,result:r}}}catch(s){let t=String((s==null?void 0:s.message)??s),r={tool:"twitter",action:e,stage:"error",error:t,params:a};return JSON.stringify(r),u==null||u({type:"error:tool:twitter:execution",content:r}),{type:"error",error:t,natural:`Failed to ${e.replace(/_/g," ")}: ${t}`}}}})}var V=b;export{b as a,V as b};
@@ -0,0 +1 @@
1
+ import{Composio as eo}from"@composio/core";import{VercelProvider as io}from"@composio/vercel";import{SessionPreset as J}from"@composio/core";function A(o,n){var t;return(n==null?void 0:n.trim())||((t=o.connectionScope)==null?void 0:t.trim())||void 0}function U(o){let n=o.trim();if(!n)throw new Error("Composio connection scope is required");return n}var q=/https:\/\/connect\.composio\.dev\/link\/[^\s)\]"']+/i,z=/"redirect_?[Uu]rl"\s*:\s*"(https?:\/\/[^"]+)"/;function W(o){var t;let n=(t=o.publicOrigin)==null?void 0:t.trim();return n?n.replace(/\/$/,""):G(o.env)}function x(o){var i,e,s,c;let n=(e=(i=o.secrets)==null?void 0:i.COMPOSIO_API_KEY)==null?void 0:e.trim();if(n)return n;let t=(c=(s=o.env)==null?void 0:s.COMPOSIO_API_KEY)==null?void 0:c.trim();if(t)return t;throw new Error("COMPOSIO_API_KEY is not configured (register tenant secret or set env COMPOSIO_API_KEY)")}function Y(o){if(!o)return[];let n=[];for(let t of Object.values(o))n.push(...C(t.enable));return[...new Set(n)].sort()}function v(o){return JSON.stringify({toolkits:o.toolkits,tools:o.tools,authMode:o.authMode,authConfigs:o.authConfigs,workbench:o.workbench,sessionPreset:o.sessionPreset,sessionPreload:o.sessionPreload})}function $(o,n){var e;let t=Z(o.tools),i=o.sessionPreset==="direct_tools";return{toolkits:o.toolkits,...o.authConfigs?{authConfigs:o.authConfigs}:{},...t?{tools:t}:{},manageConnections:n.manageConnections,workbench:n.workbench,...i?{sessionPreset:J.DIRECT_TOOLS}:{},...!i&&((e=o.sessionPreload)!=null&&e.enabled)?(()=>{let s=Y(o.tools);return s.length>0?{preload:{tools:s}}:{}})():{}}}function H(o,n){var i;let t=(i=o==null?void 0:o.context)==null?void 0:i.user;return t!=null&&t.email||t!=null&&t.id?t:n.user}function F(o,n,t){var r,l,u,a;let i=H(n,o),e=(r=i==null?void 0:i.email)==null?void 0:r.trim();if(e&&e!=="default")return e;let s=(l=i==null?void 0:i.id)==null?void 0:l.trim();if(s&&s!=="default")return s;if((t==null?void 0:t.allowChatIdFallback)===!1)throw new Error("Composio user ID unavailable \u2014 log in so your tool-editor connections apply (same email as JWT preferred_username)");let c=(a=(u=n==null?void 0:n.flowData)==null?void 0:u.chatId)==null?void 0:a.trim();if(c&&c!=="default")return c;throw new Error("Composio user ID unavailable \u2014 log in (access_token cookie) or provide a chat session id")}function V(o){let n=JSON.stringify(o);return(typeof btoa=="function"?btoa(n):Buffer.from(n,"utf8").toString("base64")).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function G(o){var t;let n=(t=o==null?void 0:o.ORA_PUBLIC_URL)==null?void 0:t.trim();return n?n.replace(/\/$/,""):"http://localhost:5173"}function L(o,n,t,i){let e=W(o),s=V({flowId:n??"",sessionId:t??"",toolRowId:i});return`${e}/api/composio/callback?ctx=${encodeURIComponent(s)}`}function C(o){return Array.isArray(o)?o.filter(n=>typeof n=="string"&&!!n.trim()).map(n=>n.trim()):[]}function Q(o,n){var s;let t=o.toUpperCase(),i=(s=t.split("_")[0])==null?void 0:s.toLowerCase();if(!i)return;let e=n.find(c=>c.toLowerCase()===i);return e||n.find(c=>t.startsWith(`${c.toUpperCase()}_`))}function X(o,n){let t={};for(let i of o){let e=Q(i,n);e&&(t[e]||(t[e]=[]),t[e].push(i))}return Object.fromEntries(Object.entries(t).map(([i,e])=>[i,{enable:e}]))}function Z(o){if(!o)return;let n={};for(let[t,i]of Object.entries(o)){let e=C(i.enable),s=C(i.disable);e.length?n[t]={enable:e}:s.length&&(n[t]={disable:s})}return Object.keys(n).length>0?n:void 0}function oo(o,n,t){let i=new Set(n.map(r=>r.trim()).filter(Boolean)),e={};if(o&&typeof o=="object")for(let[r,l]of Object.entries(o)){if(!i.has(r)||!l||typeof l!="object")continue;let u=l,a=C(u.enable),f=C(u.disable);a.length===0&&f.length===0||(e[r]={...a.length?{enable:a}:{},...f.length?{disable:f}:{}})}if(Object.keys(e).length>0)return e;let s=C(t==null?void 0:t.tools);if(s.length===0)return;let c=X(s,n);return Object.keys(c).length>0?c:void 0}function j(o){var r;let n=o&&typeof o=="object"?o:{},t=Array.isArray(n.toolkits)?n.toolkits.filter(l=>typeof l=="string"&&l.trim()):[];if(t.length===0)throw new Error("Composio tool execution.toolkits must be a non-empty string array");let i=oo(n.tools,t,n.preload),e=typeof n.connectionScope=="string"&&n.connectionScope.trim()?n.connectionScope.trim():void 0,s=n.sessionPreset==="direct_tools"?"direct_tools":void 0,c=((r=n.sessionPreload)==null?void 0:r.enabled)===!0?{enabled:!0}:void 0;return{toolkits:t,authMode:n.authMode==="manual"?"manual":"in_app",authConfigs:n.authConfigs,...e?{connectionScope:e}:{},...i?{tools:i}:{},manageConnections:n.manageConnections,workbench:n.workbench??{enable:!0},...s?{sessionPreset:s}:{},...c?{sessionPreload:c}:{}}}function M(o,n){var i,e;return o.authMode==="manual"?!1:{callbackUrl:((e=(i=o.manageConnections)==null?void 0:i.callbackUrl)==null?void 0:e.trim())||n}}function K(o){let n=String((o==null?void 0:o.message)??o??"").toLowerCase();return n.includes("not connected")||n.includes("not authenticated")||n.includes("connection required")||n.includes("no active connection")||n.includes("authorize")||n.includes("authentication")||n.includes("connect link")||n.includes("no connected account")||n.includes("composio_manage_connections")}function no(o){if(typeof o!="string")return;let n=o.trim();if(n.startsWith("http"))return n}function to(o){for(let n of["redirectUrl","redirect_url","composio_link_redirect_url","url","link"]){let t=no(o[n]);if(t)return d(t)??t}}function d(o){if(o&&typeof o=="object"&&!Array.isArray(o)){let i=to(o);return i||d(JSON.stringify(o))}if(typeof o!="string")return;let n=o.match(q);if(n!=null&&n[0])return n[0];let t=o.match(z);if(t!=null&&t[1]){let i=t[1].replace(/\\u0026/g,"&").replace(/\\\//g,"/");return d(i)??i}}function h(o,n){var t;if(typeof o=="string"){let i=o.toLowerCase();for(let e of(n==null?void 0:n.toolkits)??[])if(i.includes(e.toLowerCase()))return e}return(t=n==null?void 0:n.toolkits)==null?void 0:t[0]}function y(o,n,t,i,e){let s=i?d(i)??i.trim():void 0;!s||!s.startsWith("http")||o==null||o({type:"info:composio:auth_required",content:{toolkit:e,redirectUrl:s,toolRowId:n.id}})}function N(o){let n=d(o);if(n)return n;if(typeof o=="string")return d(o);try{return d(JSON.stringify(o))}catch{return}}async function so(o,n,t,i,e,s=!0){var r;let c=await o.toolkits({toolkits:n.toolkits});for(let l of c.items)if(!(l.isNoAuth||(r=l.connection)!=null&&r.isActive))try{let u=await o.authorize(l.slug,{callbackUrl:t});s&&y(e,i,n,u.redirectUrl,l.slug);break}catch(u){`${l.slug}${String(u)}`}}function ro(o,n,t,i,e=!0){let s={};for(let[c,r]of Object.entries(o)){if(!r||typeof r!="object"||typeof r.execute!="function"){s[c]=r;continue}let l=r.execute.bind(r);s[c]={...r,execute:async(...u)=>{try{let a=await l(...u);if(e){let f=N(a);f&&y(i,n,t,f,h(String(a),t))}return a}catch(a){if(K(a)){let f=N(a);y(i,n,t,f,h(String(a),t))}throw a}}}}return s}async function mo(o,n,t,i){var S,T,O,I,_,R;if(o.kind!=="composio")throw new Error(`loadComposioTools: unsupported kind '${o.kind}' for tool '${o.name}'`);let e=j(o.execution),s=x(n),c=e.authMode==="manual",r;if(c){let p=A(e,o.id);if(!p)throw new Error(`Composio manual tool '${o.name}' is missing connection scope (tool id or execution.connectionScope)`);r=U(p)}else r=F(n,t,{allowChatIdFallback:!0});let l=(S=t.flowData)==null?void 0:S.flowId,u=(T=t.flowData)==null?void 0:T.chatId,a=((O=e.manageConnections)==null?void 0:O.callbackUrl)||L(n,l,u,o.id),f=M(e,a),w=new eo({apiKey:s,provider:new io});n.composioSessions||(n.composioSessions={});let E=v(e),D=c?!1:((I=e.workbench)==null?void 0:I.enable)!==!1,g,m=n.composioSessions[o.id];m!=null&&m.sessionId&&m.userId===r&&m.configKey===E?(g=await w.use(m.sessionId),`${m.sessionId}${o.name}${r}`,void 0):(g=await w.create(r,$(e,{manageConnections:f,workbench:{enable:D}})),n.composioSessions[o.id]={sessionId:g.sessionId,userId:r,configKey:E},`${g.sessionId}${o.name}${r}${e.authMode}${e.sessionPreset??"default"}`,(_=e.sessionPreload)!=null&&_.enabled,void 0);try{let p=await g.toolkits({toolkits:e.toolkits});for(let b of p.items){let P=!!(b.isNoAuth||(R=b.connection)!=null&&R.isActive);`${b.slug}${P}${r}`}await so(g,e,a,o,i,!c)}catch(p){`${o.name}${String(p)}`}let k=await g.tools(),B=Array.isArray(k)?Object.fromEntries(k.map(p=>[p.name??p.toolName,p])):k;return ro(B,o,e,i,!c)}export{mo as a};
@@ -0,0 +1 @@
1
+ var P=["temperature","topP","topK","frequencyPenalty","presencePenalty","maxOutputTokens","seed","stopSequences","maxRetries"],y=["temperature","topP","topK","frequencyPenalty","presencePenalty"],v={precise:{temperature:.3,topP:.9,topK:30},balanced:{temperature:.8,topP:1,topK:50},creative:{temperature:1.1,topP:.95,topK:80}},g=1e-6,x={temperature:{min:0,max:2,step:.1},topP:{min:0,max:1,step:.05},topK:{min:1,max:500,step:1},frequencyPenalty:{min:-2,max:2,step:.1},presencePenalty:{min:-2,max:2,step:.1},maxOutputTokens:{max:128e3},seed:!0,stopSequences:{max:4}};function E(e){return/^gpt-5/i.test(e)}function m(e){let n=e.contextWindow??128e3;return e.provider==="openai"?E(e.providerModel)?{temperature:!1,topP:!1,topK:{min:1,max:500,step:1},frequencyPenalty:{min:-2,max:2,step:.1},presencePenalty:{min:-2,max:2,step:.1},maxOutputTokens:{max:n},seed:!0,stopSequences:{max:4}}:{...x,maxOutputTokens:{max:n}}:e.provider==="xai"?{...x,maxOutputTokens:{max:n},seed:!0}:e.provider==="anthropic"?{temperature:{min:0,max:1,step:.1},topP:{min:0,max:1,step:.05},topK:{min:1,max:500,step:1},frequencyPenalty:!1,presencePenalty:!1,maxOutputTokens:{max:n},seed:!1,stopSequences:{max:4}}:e.provider==="openrouter"?{temperature:{min:0,max:2,step:.1},topP:{min:0,max:1,step:.05},topK:{min:1,max:500,step:1},frequencyPenalty:{min:-2,max:2,step:.1},presencePenalty:{min:-2,max:2,step:.1},maxOutputTokens:{max:n},seed:!0,stopSequences:{max:4}}:e.provider==="workersai"||e.provider==="cloudflare"?{temperature:{min:0,max:2,step:.1},topP:{min:0,max:1,step:.05},topK:{min:1,max:500,step:1},frequencyPenalty:!1,presencePenalty:!1,maxOutputTokens:{max:n},seed:!1,stopSequences:{max:4}}:{...x,maxOutputTokens:{max:n}}}function d(e,n){if(e==="maxRetries")return!0;let t=n[e];return t===!1?!1:e==="seed"?t===!0:t!==void 0}function R(e,n,t){return Math.min(t,Math.max(n,e))}function k(e,n){return e===void 0&&n===void 0?!0:e===void 0||n===void 0?!1:Math.abs(e-n)<g}function q(e,n){for(let t of["precise","balanced","creative"]){let o=v[t],i=!0;for(let r of y){if(n&&!d(r,n))continue;let f=o[r],a=e[r];if(f!==void 0){if(typeof f=="number"&&typeof a=="number"){if(!k(a,f)){i=!1;break}}else if(a!==f){i=!1;break}}}if(i)return t}return"custom"}function h(e,n){let t=v[e],o={};for(let i of y){if(n&&!d(i,n))continue;let r=t[i];r!==void 0&&(o[i]=r)}return o}function A(e){if(!e)return{};let n={};for(let t of P){let o=e[t];o!==void 0&&(t==="stopSequences"?Array.isArray(o)&&(n.stopSequences=o.filter(i=>typeof i=="string")):t==="maxRetries"?typeof o=="number"&&(n.maxRetries=o):typeof o=="number"&&(n[t]=o))}return n}function K(e,n,t){var f;let o={...e,...n},i=[],r={};for(let a of P){let p=o[a];if(p===void 0)continue;if(a==="maxRetries"){r.maxRetries=p;continue}if(!d(a,t)){i.push({key:a,action:"stripped",detail:"unsupported by model"});continue}if(a==="stopSequences"){let s=p,u=((f=t.stopSequences)==null?void 0:f.max)??s.length;s.length>u?(r.stopSequences=s.slice(0,u),i.push({key:a,action:"clamped",detail:`truncated to ${u} sequences`})):r.stopSequences=s;continue}if(a==="seed"){r.seed=p;continue}let c=t[a];if(c&&typeof c=="object"&&"min"in c){let s=p,u=R(s,c.min,c.max);r[a]=u,u!==s&&i.push({key:a,action:"clamped",detail:`clamped from ${s} to ${u}`})}else if(a==="maxOutputTokens"){let s=p,u=t.maxOutputTokens.max,l=Math.min(s,u);r.maxOutputTokens=l,l!==s&&i.push({key:a,action:"clamped",detail:`clamped from ${s} to ${l}`})}}return{effectiveParams:r,adjustments:i}}function M(e){let n={};return e.temperature!==void 0&&(n.temperature=e.temperature),e.topP!==void 0&&(n.topP=e.topP),e.topK!==void 0&&(n.topK=e.topK),e.frequencyPenalty!==void 0&&(n.frequencyPenalty=e.frequencyPenalty),e.presencePenalty!==void 0&&(n.presencePenalty=e.presencePenalty),e.maxOutputTokens!==void 0&&(n.maxOutputTokens=e.maxOutputTokens),e.seed!==void 0&&(n.seed=e.seed),e.stopSequences!==void 0&&(n.stopSequences=e.stopSequences),e.maxRetries!==void 0&&(n.maxRetries=e.maxRetries),n}function L(e=128e3){return m({provider:"openai",providerModel:"gpt-4.1",contextWindow:e})}function w(e=2e6){return m({provider:"openai",providerModel:"gpt-5-nano",contextWindow:e})}function N(e=256e3){return m({provider:"xai",providerModel:"grok-4-fast",contextWindow:e})}function _(e=128e3){return m({provider:"cloudflare",providerModel:"@cf/meta/llama-3.2-3b-instruct",contextWindow:e})}function I(e,n){let t={...e};for(let o of P)o==="maxRetries"||t[o]===void 0||d(o,n)||delete t[o];return t}var S=["none","minimal","low","medium","high","xhigh"],b=e=>typeof e=="string"&&S.includes(e);function j(e){var t;let n=(t=e.capabilities)==null?void 0:t.reasoning;return n&&typeof n=="object"?n:n?{kind:"effort"}:{kind:"none"}}function O(e){return e.kind!=="effort"?[]:e.levels??[]}var T=e=>e===!0||e==="true";function C(e){return e.kind==="tag"?!0:e.kind==="effort"?T(e.exposesReasoning):!1}function F(e,n){if(e.kind!=="effort")return;let t=O(e);if(b(n)&&t.includes(n))return n;if(e.defaultLevel&&t.includes(e.defaultLevel))return e.defaultLevel}function $(e,n){let{effort:t,exposeReasoning:o,maxTokens:i}=n;if(e==="openai"){let r={};return t&&(r.reasoningEffort=t),o&&(r.reasoningSummary="auto"),Object.keys(r).length?{openai:r}:void 0}if(e==="xai")return t?{xai:{reasoningEffort:t}}:void 0;if(e==="openrouter"){if(!i&&!t)return;let r={};return o!==void 0&&(r.exclude=!o),i?{openrouter:{reasoning:{...r,max_tokens:i}}}:{openrouter:{reasoning:{...r,effort:t}}}}if(e==="anthropic"){let r={};return(t||o)&&(r.thinking={type:"adaptive",...o?{display:"summarized"}:{}}),t&&(r.effort=t),Object.keys(r).length?{anthropic:r}:void 0}}export{P as a,y as b,v as c,m as d,q as e,h as f,A as g,K as h,M as i,L as j,w as k,N as l,_ as m,I as n,S as o,j as p,O as q,C as r,F as s,$ as t};
@@ -0,0 +1 @@
1
+ function n(t){try{let e=JSON.parse(t);if(e&&typeof e=="object"&&typeof e.text=="string")return e}catch{}return{text:t}}var s=256;function i(t){if(typeof t!="string")return null;let e=t.trim();return e?e.slice(0,s):null}function a(t){try{let e=JSON.parse(t);if(e&&typeof e=="object"&&typeof e.name=="string"&&typeof e.value=="string"){let r=e.name.trim();return/^[A-Z][A-Z0-9_]*$/.test(r)?{name:r,value:e.value}:null}}catch{}return null}var l={USER_MESSAGE:"M",USER_CLEAR_HISTORY:"CH",USER_AUTH:"AUT",USER_IDENTITY:"UID",SERVER_EVENT:"SE",SERVER_HISTORY:"HIS",SERVER_ERROR:"ERR",SERVER_STEP:"STEP",SERVER_TEXT_STREAM:"TS",SERVER_TEXT_STREAM_COMPLETE:"TSC",SERVER_REASONING_STREAM:"RS",SERVER_REASONING_STREAM_COMPLETE:"RSC",SERVER_CONFIG:"CFG"};var o=[{id:"convertTempMessure",label:"Convert Temperature",description:"Convert temperature between Celsius, Fahrenheit, and Kelvin with optional static parameters"},{id:"tempTool",label:"Temp Tool",description:"Temporary demo tool"},{id:"twitter",label:"Twitter",description:"Twitter API for user info, tweets, mentions, replies, advanced search, and trends"},{id:"vectorize",label:"Vectorize",description:"Perform a semantic vector search. Returns relevant matches with scores and metadata."}],y=o.reduce((t,e)=>(t[e.id]=e,t),{});var d={};function E(t){}export{l as a,n as b,s as c,i as d,a as e,y as f,d as g,E as h};
@@ -0,0 +1 @@
1
+ var S=(a=>(a.START_NODE="startNode",a.CLASSIFIER_NODE="classifierNode",a.MEMO_NODE="memoNode",a.LLM_NODE="llmNode",a.ANSWER_NODE="answerNode",a.API_NODE="apiNode",a))(S||{});function D(t,n){if(!n)return t;if(t==null)return;let u=n.split("."),e=t;for(let f of u){if(e==null)return;e=e[f]}return e}function A(t){switch(t){case"startNode":return[{name:"user_input",path:"user_input",label:"User input",source:"default"},{name:"images",path:"images",label:"User images",type:"image",source:"default"},{name:"files",path:"files",label:"User docs",type:"file",source:"default"}];case"llmNode":return[{name:"output",path:"",label:"LLM text",source:"default"}];case"apiNode":return[{name:"ok",path:"ok",source:"default"},{name:"status",path:"status",source:"default"},{name:"data",path:"data",source:"default"}];case"classifierNode":return[{name:"classification",path:"classification",source:"default"}];case"memoNode":return[{name:"context",path:"",label:"Retrieved context",source:"default"}];case"answerNode":return[];default:return[]}}function V(t){var f;let n=A(t.type),u=((f=t.data)==null?void 0:f.outVars)||[],e=[...n];for(let i of u){let a=e.findIndex(N=>N.name===i.name);a>=0?e[a]={...i,source:"user"}:e.push({...i,source:"user"})}return e}function M(t,n){var g,s,o,d,r,c,x;if(t==="user_input")return(g=n.context)==null?void 0:g.user_input;if(t==="images")return(s=n.context)==null?void 0:s.user_images;if(t==="classified_id")return(o=n.context)==null?void 0:o.classified_id;if(t==="files"||t==="file_content")return((d=n.context)==null?void 0:d.files)||((r=n.context)==null?void 0:r.file_content);let u=t.indexOf(".");if(u===-1){let O=t;return n.nodes.find(y=>y.id===O)?(c=n.results)==null?void 0:c[O]:void 0}let e=t.substring(0,u),f=t.substring(u+1),i=n.nodes.find(O=>O.id===e);if(!i)return;let a=V(i),N=f.split(".")[0],_=a.find(O=>O.name===N);if(!_)return;let p=(x=n.results)==null?void 0:x[e],E=D(p,_.path??""),l=f.substring(N.length+1);return l?D(E,l):E}var I="\0__ORA_OB__\0",R="\0__ORA_CB__\0";function L(t,n,u,e){var p,E;if(!t)return t;let f=(e==null?void 0:e.serializeNonStrings)??!1,i=t.replace(/\\\{\{/g,I).replace(/\\\}\}/g,R),a={...u.context||{}};if((p=n.data)!=null&&p.varMapping&&Array.isArray(n.data.varMapping))for(let l of n.data.varMapping){let g=l.var||l.to,s=l.from;if(g&&s){let o=!1,d=!1;if(s==="images")o=!0;else if(s==="files"||s==="file_content")d=!0;else{let c=s.indexOf(".");if(c!==-1){let x=s.substring(0,c),O=s.substring(c+1).split(".")[0],h=u.nodes.find(y=>y.id===x);if(h){let m=V(h).find(v=>v.name===O);(m==null?void 0:m.type)==="image"&&(o=!0),(m==null?void 0:m.type)==="file"&&(d=!0)}}}if(o||d)continue;let r=M(s,u);(r==null||r==="")&&(r=l.default??""),a[g]=r}}let N=/\{\{\s*([^}]+?)\s*\}\}/g;i=i.replace(N,(l,g)=>{var o,d;let s=g.trim();if(s.startsWith("secrets.")){let r=s.slice(8);return u.secrets?Object.prototype.hasOwnProperty.call(u.secrets,r)?u.secrets[r]:((d=e==null?void 0:e.onError)==null||d.call(e,`Secret "${r}" is not defined for this tenant`),l):((o=e==null?void 0:e.onError)==null||o.call(e,`Secret reference {{ ${s} }} cannot be resolved (no secrets context)`),l)}if(Object.prototype.hasOwnProperty.call(a,s)){let r=a[s],c;return typeof r=="string"?c=r:typeof r=="object"&&r!==null?c=f?JSON.stringify(r):JSON.stringify(r,null,2):r!=null?c=f?JSON.stringify(r):String(r):c="",c}return l});let _=i.match(/\{\{\s*[^}]+\s*\}\}/g);return _&&((E=e==null?void 0:e.onError)==null||E.call(e,`Mismatch detected: Unmatched placeholders found: ${_}`)),i=i.split(I).join("{{").split(R).join("}}"),i}export{S as a,D as b,A as c,V as d,M as e,L as f};
@@ -0,0 +1 @@
1
+ import{tool as x}from"ai";import{z as p}from"zod";async function T(t,o){let r=await fetch(`${o.HX_CORE_URL}/ora/flow/${t}`,{method:"GET",headers:{Authorization:`${o.HX_API_KEY}`},cache:"no-store"});if(!r.ok)throw new Error("Failed to fetch flow KV");return r.json()}async function D(t,o){let r=await fetch(`${o.HX_CORE_URL}/ora/flow/${t}/state`,{method:"GET",headers:{Authorization:`${o.HX_API_KEY}`},cache:"no-store"});if(!r.ok)throw new Error("Failed to fetch flow state");return r.json()}async function A(t,o){let r=await fetch(`${o.HX_CORE_URL}/ora/vectorize/get`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`${o.HX_API_KEY}`},body:JSON.stringify({hashes:t})});if(!r.ok)throw new Error("Failed to fetch embeddings from cache");return r.json()}async function P(t,o){let r=await fetch(`${o.HX_CORE_URL}/ora/vectorize/put`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`${o.HX_API_KEY}`},body:JSON.stringify({items:t})});if(!r.ok)throw new Error("Failed to store embeddings in cache");return r.json()}var S=async t=>{let o=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(t));return Array.from(new Uint8Array(o)).map(r=>r.toString(16).padStart(2,"0")).join("")},_=async(t,o,r=!1)=>{var f,b,w,y;let i=Array.isArray(o)?o:[o],c=await Promise.all(i.map(e=>S(e))),s=!!((f=t==null?void 0:t.env)!=null&&f.HX_CORE_URL)&&!!((b=t==null?void 0:t.env)!=null&&b.HX_API_KEY);console.log("Debug: KV cache API available:",s);let l=[],n=[];if(s){console.log("Debug: Attempting to get embeddings from KV cache via API");try{l=await A(c,t.env)}catch(e){console.warn("Failed to fetch from KV cache API",e),l=c.map(()=>null)}n=l.map((e,a)=>e===null?a:-1).filter(e=>e!==-1),console.log("Debug: Cached embeddings found:",l.filter(e=>e!==null).length,"missing:",n.length)}else console.log("Debug: KV cache API not available, skipping cache lookup"),n=i.map((e,a)=>a);if(n.length===0)return console.log("Debug: All embeddings retrieved from cache"),{data:l};let d=n.map(e=>i[e]),g,h;console.log("Debug: Generating embeddings for missing texts, count:",d.length);for(let e=0;e<3;e++)try{console.log("Debug: Primary embedding generation attempt",e+1);let a=new Promise((E,$)=>setTimeout(()=>$(new Error("Timeout after 2 seconds")),2e3)),u=(w=t==null?void 0:t.env)==null?void 0:w.AI.run("@cf/baai/bge-m3",{text:d});g=await Promise.race([u,a]),console.log("Debug: Primary embedding generation successful on attempt",e+1);break}catch(a){if(console.warn(`Primary embedding attempt ${e+1} failed:`,a),h=a,e===2)break}if(!g){if(!r)throw h;console.warn("Falling back to Ollama");try{let e=await fetch(`${(y=t==null?void 0:t.env)==null?void 0:y.OLLAMA_BASE_URL}/api/embed`,{method:"POST",headers:{"Content-Type":"application/json",Cookie:"hxsecure=1"},body:JSON.stringify({model:"bge-m3:latest",input:d})});if(!e.ok)throw new Error(`Ollama API error: ${e.statusText}`);let a=await e.json();console.log("Embedding response data:",a.embeddings.length),g={data:a.embeddings},console.log("Debug: Fallback embedding generation successful")}catch(e){throw console.error("Both embedding methods failed:",e),e}}if(s&&n.length>0){console.log("Debug: Storing new embeddings in KV cache via API");let e=n.map((a,u)=>({hash:c[a],embedding:g.data[u]}));try{await P(e,t.env)}catch(a){console.warn("Failed to store in KV cache API",a)}}else console.log("Debug: Skipping cache storage as KV API not available or no new embeddings");let m=l.slice();for(let e=0;e<n.length;e++)m[n[e]]=g.data[e];return console.log("Debug: Embedding generation complete, total embeddings:",m.length),{data:m}};function V(t,o,r){return x({description:"Perform semantic vector search on memo data with optional static parameters. Returns relevant matches with scores and metadata.",inputSchema:p.object({query:p.string().min(1).describe("The search query to vectorize and search for"),topK:p.number().optional().default(5).describe("Number of top results to return (overrides static params if provided)")}),execute:async({query:i,topK:c=3})=>{var l;let s=r==null?void 0:r.namespace;if(!s)return{results:[]};if(`${i}${s}${c}`,!i||typeof i!="string"||i.trim()==="")return{results:[]};try{let n=await _(t,i,!0),d=await t.env[`VDB_${(l=o.flowData)==null?void 0:l.tenant}_1024`].query(n.data[0],{namespace:s,topK:c,returnMetadata:"all"}),h=(Array.isArray(d.matches)?d.matches:[]).map(m=>{var f;return(f=m.metadata)==null?void 0:f.value}).filter(m=>typeof m=="string");return`${i}${s}${c}${h.length}`,{query:i,topK:c,matches:h}}catch(n){return`${i}${s}${c}${n}`,{results:[]}}}})}export{T as a,D as b,S as c,_ as d,V as e};
@@ -0,0 +1 @@
1
+ function t(l,r){}export{t as a};
@@ -0,0 +1 @@
1
+ var i=t=>{try{return JSON.parse(t)}catch{let e=t.match(/\{[\s\S]*\}/);if(!e)return null;try{return JSON.parse(e[0])}catch{return null}}},c=(t,e,s)=>{let n=new URL(`${t}${e}`);return s&&Object.entries(s).forEach(([a,r])=>{r==null||r===""||(Array.isArray(r)?n.searchParams.set(a,r.join(",")):n.searchParams.set(a,String(r)))}),n.toString()};export{i as a,c as b};
@@ -0,0 +1 @@
1
+ async function s(o){let n=await fetch(`${o.HX_ORA_URL}/internal/tools`,{method:"GET",headers:{Authorization:`${o.HX_API_KEY}`},cache:"no-store"});if(!n.ok)throw new Error("Failed to fetch tool defs");return(await n.json()).tools??[]}async function i(o,n){let t=await fetch(`${n.HX_ORA_URL}/internal/models/${o}`,{method:"GET",headers:{Authorization:`${n.HX_API_KEY}`},cache:"no-store"});if(!t.ok)throw new Error(`Failed to fetch model ${o} from registry`);return(await t.json()).model}async function a(o,n,t){let e=await fetch(`${o.HX_ORA_URL}/internal/tools/${n}/refs/${encodeURIComponent(t)}`,{method:"GET",headers:{Authorization:`${o.HX_API_KEY}`},cache:"no-store"});if(!e.ok)throw e.status===404?new Error(`Reference "${t}" not found`):new Error(`Failed to fetch skill reference "${t}"`);let r=await e.json();if(!r.ref)throw new Error(`Reference "${t}" not found in response`);return r.ref}export{s as a,i as b,a as c};
@@ -0,0 +1,129 @@
1
+ import * as zustand from 'zustand';
2
+ import { Message, EventItem, TypingMessage, StepInfo, FlowConfig, ApprovalRequestPayload } from './common.js';
3
+ export { Capabilities, ChatHistoryItem, EffectiveParams, FlowNode, GENERATION_PARAM_KEYS, GENERATION_PRESETS, GenerationParamKey, GenerationPresetId, MAX_USER_IDENTITY_LENGTH, MODEL_REGISTRY_SNAPSHOT, MessageType, ModelEntry, ModelRegistrySnapshot, NODETYPES, NodeType, OutVar, PRESET_PARAM_KEYS, ParamAdjustment, ParamRange, ParamSupport, REASONING_EFFORT_LEVELS, ReasoningCapability, ReasoningEffortLevel, ResolveInput, ResolveOptions, ResolvedModel, TOOL_REGISTRY_SNAPSHOT, ToolExecutionResultPayload, UserAuthPayload, UserInterface, UserMessagePayload, VariableMapping, WsClientMessage, WsClientMessageType, WsComplete, WsError, WsHistory, WsMessage, WsServerMessage, WsServerMessageType, applyPresetToOverrides, buildReasoningProviderOptions, deriveParamSupport, getDefaultOutVars, getEffectiveOutVars, getModelEntry, logc, messageTypes, normalizeEffectiveParams, normalizeReasoning, openAiReasoningParamSupport, openAiStandardParamSupport, parseUserAuth, parseUserMessage, pickNodeOverrides, reasoningEffortLevels, reasoningExposable, resolveOutVarRef, resolvePreset, resolveReasoningEffort, resolveTemplate, sanitizeUserIdentity, stripUnsupportedFromNodeData, toStreamTextSettings, walkPath, workersAiParamSupport, wsDebug, xaiParamSupport } from './common.js';
4
+
5
+ interface AgentState {
6
+ messages: Message[];
7
+ events: EventItem[];
8
+ eventsVisible: boolean;
9
+ status: 'connecting' | 'connected' | 'disconnected';
10
+ typingMessage: TypingMessage;
11
+ reasoningMessage: TypingMessage;
12
+ isReasoning: boolean;
13
+ stepInfo: StepInfo;
14
+ approvals: Array<{
15
+ id: string;
16
+ toolCallId: string;
17
+ toolName: string;
18
+ args: Record<string, unknown>;
19
+ description: string;
20
+ ts: number;
21
+ status: 'pending' | 'approved' | 'rejected';
22
+ }>;
23
+ error: string | null;
24
+ flowConfig: FlowConfig | null;
25
+ composioAuth: ComposioAuthRequest | null;
26
+ }
27
+ interface ComposioAuthRequest {
28
+ toolkit?: string;
29
+ redirectUrl: string;
30
+ toolRowId?: string;
31
+ }
32
+ interface AgentActions {
33
+ initHistory: (messages: Message[]) => void;
34
+ addEvent: (event: EventItem) => void;
35
+ clearEvents: () => void;
36
+ setMessages: (messages: Message[]) => void;
37
+ addMessage: (message: Message) => void;
38
+ setTyping: (typing: TypingMessage) => void;
39
+ appendTyping: (id: string, chunk: string) => void;
40
+ clearTyping: () => void;
41
+ setReasoning: (reasoning: TypingMessage) => void;
42
+ appendReasoning: (id: string, chunk: string) => void;
43
+ clearReasoning: () => void;
44
+ setReasoningActive: (active: boolean) => void;
45
+ setStep: (step: StepInfo) => void;
46
+ clearStep: () => void;
47
+ setStatus: (status: AgentState['status']) => void;
48
+ toggleEvents: () => void;
49
+ clearHistory: () => void;
50
+ addApprovalRequest: (payload: ApprovalRequestPayload) => void;
51
+ updateApprovalStatus: (payload: {
52
+ toolCallId: string;
53
+ status: 'approved' | 'rejected';
54
+ }) => void;
55
+ removeApproval: (toolCallId: string) => void;
56
+ setError: (error: string | null) => void;
57
+ setFlowConfig: (config: FlowConfig | null) => void;
58
+ setComposioAuth: (request: ComposioAuthRequest | null) => void;
59
+ clearComposioAuth: () => void;
60
+ }
61
+ type AgentStore = AgentState & AgentActions;
62
+ declare function createAgentStoreImpl(devtoolsName: string): zustand.UseBoundStore<Omit<zustand.StoreApi<AgentStore>, "setState" | "devtools"> & {
63
+ setState(partial: AgentStore | Partial<AgentStore> | ((state: AgentStore) => AgentStore | Partial<AgentStore>), replace?: false | undefined, action?: (string | {
64
+ [x: string]: unknown;
65
+ [x: number]: unknown;
66
+ [x: symbol]: unknown;
67
+ type: string;
68
+ }) | undefined): void;
69
+ setState(state: AgentStore | ((state: AgentStore) => AgentStore), replace: true, action?: (string | {
70
+ [x: string]: unknown;
71
+ [x: number]: unknown;
72
+ [x: symbol]: unknown;
73
+ type: string;
74
+ }) | undefined): void;
75
+ devtools: {
76
+ cleanup: () => void;
77
+ };
78
+ }>;
79
+ type AgentStoreApi = ReturnType<typeof createAgentStoreImpl>;
80
+ declare const useAgentStore: zustand.UseBoundStore<Omit<zustand.StoreApi<AgentStore>, "setState" | "devtools"> & {
81
+ setState(partial: AgentStore | Partial<AgentStore> | ((state: AgentStore) => AgentStore | Partial<AgentStore>), replace?: false | undefined, action?: (string | {
82
+ [x: string]: unknown;
83
+ [x: number]: unknown;
84
+ [x: symbol]: unknown;
85
+ type: string;
86
+ }) | undefined): void;
87
+ setState(state: AgentStore | ((state: AgentStore) => AgentStore), replace: true, action?: (string | {
88
+ [x: string]: unknown;
89
+ [x: number]: unknown;
90
+ [x: symbol]: unknown;
91
+ type: string;
92
+ }) | undefined): void;
93
+ devtools: {
94
+ cleanup: () => void;
95
+ };
96
+ }>;
97
+ declare function getAgentStore(key?: string): AgentStoreApi;
98
+
99
+ type QueryObject = Record<string, string | null>;
100
+ declare function useAgent(opts?: {
101
+ host?: string;
102
+ basePath?: string;
103
+ agent?: string;
104
+ name?: string;
105
+ query?: QueryObject | (() => Promise<QueryObject>);
106
+ /** Optional client-supplied session identity (fallback when no JWT user). Sent on connect via `UID`. */
107
+ user?: string;
108
+ storeKey?: string;
109
+ }): {
110
+ connection: any;
111
+ store: AgentStoreApi;
112
+ send: (text: string, images?: {
113
+ mimeType: string;
114
+ data: string;
115
+ }[], documents?: {
116
+ name: string;
117
+ mimeType: string;
118
+ data: string;
119
+ }[]) => void;
120
+ clearHistory: () => void;
121
+ sendAuth: (name: string, value: string) => void;
122
+ setIdentity: (userId: string) => void;
123
+ toggleEventsVisible: () => void;
124
+ clearEvents: () => void;
125
+ approve: (toolCallId: string) => void;
126
+ reject: (toolCallId: string) => void;
127
+ };
128
+
129
+ export { type AgentActions, type AgentState, type AgentStore, type AgentStoreApi, ApprovalRequestPayload, type ComposioAuthRequest, EventItem, FlowConfig, Message, StepInfo, TypingMessage, getAgentStore, useAgent, useAgentStore };
package/dist/client.js ADDED
@@ -0,0 +1 @@
1
+ import{a as d,b as G,c as E,d as $,e as L,f as Se,g as Ae,h as fe}from"./chunk-HAYNUZZB.js";import{a as J,b as Y,c as k,d as K,e as Q,f as X}from"./chunk-OYP6D5VN.js";import{a as z,b as B,c as W,d as Z,e as ee,f as te,g as ne,h as se,i as oe,j as re,k as ae,l as ie,m as ge,n as le,o as pe,p as ce,q as de,r as ue,s as ve,t as ye}from"./chunk-GRZ6ZRHM.js";import{a as P}from"./chunk-U56YWPSI.js";import"./chunk-6BYZCJPP.js";import{useAgent as H}from"agents/react";import{useCallback as u,useEffect as j,useMemo as U,useRef as S}from"react";import{create as q}from"zustand";import{devtools as V}from"zustand/middleware";var F={messages:[],events:[],eventsVisible:!1,status:"connecting",typingMessage:null,reasoningMessage:null,isReasoning:!1,stepInfo:null,approvals:[],error:null,flowConfig:null,composioAuth:null};function T(n){return q()(V((t,y)=>({...F,initHistory:e=>t({messages:e}),addEvent:e=>t(o=>({events:[...o.events,{...e,ts:Date.now()}]})),clearEvents:()=>t({events:[]}),setMessages:e=>{t({messages:e})},addMessage:e=>{t(o=>({messages:[...o.messages,e]}))},setTyping:e=>t({typingMessage:e}),appendTyping:(e,o)=>{let i=y().typingMessage;i&&i.id===e?t({typingMessage:{id:e,text:i.text+o}}):t({typingMessage:{id:e,text:o}})},clearTyping:()=>t({typingMessage:null}),setReasoning:e=>t({reasoningMessage:e}),appendReasoning:(e,o)=>{let i=y().reasoningMessage;i&&i.id===e?t({reasoningMessage:{id:e,text:i.text+o}}):t({reasoningMessage:{id:e,text:o}})},clearReasoning:()=>t({reasoningMessage:null,isReasoning:!1}),setReasoningActive:e=>t({isReasoning:e}),setStep:e=>t({stepInfo:e}),clearStep:()=>t({stepInfo:null}),setStatus:e=>t({status:e}),toggleEvents:()=>t(e=>({eventsVisible:!e.eventsVisible})),clearHistory:()=>t({messages:[],typingMessage:null,reasoningMessage:null,isReasoning:!1,stepInfo:null}),addApprovalRequest:e=>{let o={id:`approval-${Date.now()}-${Math.random()}`,toolCallId:e.toolCallId,toolName:e.toolName,args:e.args??{},description:e.description,ts:Date.now(),status:"pending"};t(i=>({approvals:[...i.approvals,o]}))},updateApprovalStatus:({toolCallId:e,status:o})=>{t(i=>({approvals:i.approvals.map(v=>v.toolCallId===e?{...v,status:o}:v)}))},removeApproval:e=>{t(o=>({approvals:o.approvals.filter(i=>i.toolCallId!==e)}))},setError:e=>t({error:e}),setFlowConfig:e=>t({flowConfig:e}),setComposioAuth:e=>t({composioAuth:e}),clearComposioAuth:()=>t({composioAuth:null})}),{name:n,enabled:!0}))}var D=T("agent-store"),M=new Map;function I(n){if(!n)return D;let t=M.get(n);return t||(t=T(`agent-store:${n}`),M.set(n,t)),t}function we(n){let t=U(()=>I(n==null?void 0:n.storeKey),[n==null?void 0:n.storeKey]),y=t(s=>s.typingMessage),e=S(null),o=S(null),i=S(null),v=S(null);j(()=>{e.current=y},[y]);let A=u(s=>{var g;let r=s.trim().slice(0,E);!r||typeof((g=v.current)==null?void 0:g.send)!="function"||v.current.send(d.USER_IDENTITY+":"+r)},[]),l=H({host:n==null?void 0:n.host,basePath:(n==null?void 0:n.basePath)??"/api/agents/base",agent:n==null?void 0:n.agent,name:n==null?void 0:n.name,query:n==null?void 0:n.query,onMessage:s=>{if(typeof s.data!="string")return;let[r,g]=s.data.split("::");if(!r||!g)return;let a=t.getState(),f={[d.SERVER_HISTORY]:p=>{let c=JSON.parse(p);a.setMessages(c.messages)},[d.SERVER_EVENT]:p=>{var R;let c=JSON.parse(p);if((c==null?void 0:c.type)==="info:composio:auth_required"&&((R=c==null?void 0:c.content)!=null&&R.redirectUrl)){let m=c.content;a.setComposioAuth({toolkit:m.toolkit,redirectUrl:m.redirectUrl,toolRowId:m.toolRowId})}a.addEvent({type:"server",...c})},[d.SERVER_ERROR]:p=>{a.setError(p),a.addEvent({type:"error",content:p})},[d.SERVER_TEXT_STREAM]:p=>{o.current?a.appendTyping(o.current,p):(o.current=String(Date.now()),a.setTyping({id:o.current,text:p}))},[d.SERVER_TEXT_STREAM_COMPLETE]:p=>{if(a.setReasoningActive(!1),o.current&&a.typingMessage){let c=a.typingMessage.text;a.addMessage({role:"assistant",type:"text",content:c,id:o.current,ts:Date.now()}),a.clearTyping(),o.current=null}},[d.SERVER_REASONING_STREAM]:p=>{a.setReasoningActive(!0),i.current?a.appendReasoning(i.current,p):(i.current=String(Date.now()),a.setReasoning({id:i.current,text:p}))},[d.SERVER_REASONING_STREAM_COMPLETE]:()=>{i.current=null,a.setReasoningActive(!1)},[d.SERVER_CONFIG]:p=>{a.setFlowConfig(JSON.parse(p))}};f[r]&&f[r](g)},onOpen:()=>{let s=t.getState();s.setStatus("connected"),s.clearTyping(),o.current=null,s.clearReasoning(),i.current=null,s.clearStep(),s.addEvent({type:"connection",content:"Connected to Agent Server"}),n!=null&&n.user&&A(n.user)},onClose:()=>{let s=t.getState();s.setStatus("disconnected"),s.setFlowConfig(null),s.addEvent({type:"connection",content:"Connection closed"})}});v.current=l;let C=u((s,r,g)=>{let a=s.trim();if(!a&&(!r||r.length===0)&&(!g||g.length===0))return;let p=((r==null?void 0:r.length)??0)>0||((g==null?void 0:g.length)??0)>0?JSON.stringify({text:a,images:r,documents:g}):a;l.send(d.USER_MESSAGE+":"+p);let c=t.getState();i.current=null,c.clearReasoning(),c.addMessage({id:String(Date.now())+Math.random(),role:"user",type:"text",content:a,images:r,ts:Date.now()})},[l]),h=u(()=>{t.getState().clearHistory(),l.send(d.USER_CLEAR_HISTORY+":1")},[l]),w=u((s,r)=>{let g=s.trim();g&&l.send(d.USER_AUTH+":"+JSON.stringify({name:g,value:r}))},[l]),x=u(s=>{A(s)},[A]),_=u(()=>t.getState().toggleEvents(),[]),b=u(()=>t.getState().clearEvents(),[]),N=u(s=>{let r=t.getState();r.updateApprovalStatus({toolCallId:s,status:"approved"});let g=JSON.stringify({type:"tool_approval",toolCallId:s,approved:!0});typeof(l==null?void 0:l.send)=="function"&&l.send(g),r.addEvent({type:"approval",content:`Approved tool call ${s}`,ts:Date.now()})},[l]),O=u(s=>{let r=t.getState();r.updateApprovalStatus({toolCallId:s,status:"rejected"});let g=JSON.stringify({type:"tool_approval",toolCallId:s,approved:!1});typeof(l==null?void 0:l.send)=="function"&&l.send(g),r.addEvent({type:"approval",content:`Rejected tool call ${s}`,ts:Date.now()})},[l]);return{connection:l,store:t,send:C,clearHistory:h,sendAuth:w,setIdentity:x,toggleEventsVisible:_,clearEvents:b,approve:N,reject:O}}export{z as GENERATION_PARAM_KEYS,W as GENERATION_PRESETS,E as MAX_USER_IDENTITY_LENGTH,Ae as MODEL_REGISTRY_SNAPSHOT,J as NodeType,B as PRESET_PARAM_KEYS,pe as REASONING_EFFORT_LEVELS,Se as TOOL_REGISTRY_SNAPSHOT,te as applyPresetToOverrides,ye as buildReasoningProviderOptions,Z as deriveParamSupport,I as getAgentStore,k as getDefaultOutVars,K as getEffectiveOutVars,fe as getModelEntry,P as logc,d as messageTypes,se as normalizeEffectiveParams,ce as normalizeReasoning,ae as openAiReasoningParamSupport,re as openAiStandardParamSupport,L as parseUserAuth,G as parseUserMessage,ne as pickNodeOverrides,de as reasoningEffortLevels,ue as reasoningExposable,Q as resolveOutVarRef,ee as resolvePreset,ve as resolveReasoningEffort,X as resolveTemplate,$ as sanitizeUserIdentity,le as stripUnsupportedFromNodeData,oe as toStreamTextSettings,we as useAgent,D as useAgentStore,Y as walkPath,ge as workersAiParamSupport,ie as xaiParamSupport};