@transai/connector-runner-ai-agent 0.29.1 → 0.29.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.29.1 (2026-04-24)
2
+
3
+ This was a version bump only for connector-runner-ai-agent to align it with other projects, there were no code changes.
4
+
1
5
  ## 0.29.0 (2026-04-20)
2
6
 
3
7
  ### 🧱 Updated Dependencies
package/index.cjs CHANGED
@@ -503,7 +503,7 @@ new Anthropic({ apiKey, dangerouslyAllowBrowser: true });
503
503
 
504
504
  Received: ${JSON.stringify(i,null,2)}`)};if(typeof i=="string")return i;if(Array.isArray(i)){let u=e(s),c=[];return i.forEach(l=>{if(l.type==="text"||l.type==="image_url")c.push(a(l,u));else throw new Error('Mistral only supports types "text" or "image_url" for complex message types.')}),c}throw new Error(`Message content must be a string or an array.
505
505
 
506
- Received: ${JSON.stringify(i,null,2)}`)},n=i=>{if(Xe.isInstance(i)&&i.tool_calls?.length)return i.tool_calls.map(s=>({...s,id:SU(s.id??"")})).map($M)},o=new Set;for(let i of t)"tool_call_id"in i&&typeof i.tool_call_id=="string"&&o.add(SU(i.tool_call_id));return t.flatMap(i=>{let s=n(i),a=r(i.content,i.getType());if("tool_call_id"in i&&typeof i.tool_call_id=="string")return[{role:e(i.getType()),content:a,name:i.name,toolCallId:SU(i.tool_call_id)}];if(Xe.isInstance(i)){if(s===void 0)return[{role:e(i.getType()),content:a}];{let u=s.filter(c=>o.has(SU(c.id??"")));return u.length===0?typeof a=="string"&&a.trim()===""||Array.isArray(a)&&a.length===0?[]:[{role:e(i.getType()),content:a}]:[{role:e(i.getType()),toolCalls:u}]}}return[{role:e(i.getType()),content:a}]})}function non(t,e){let{message:r}=t;if(r===void 0)throw new Error("No message found in response");let n=[];"toolCalls"in r&&Array.isArray(r.toolCalls)&&(n=r.toolCalls);let o=R_e(r.content);switch(r.role){case"assistant":{let i=[],s=[];for(let a of n)try{let u=yS(a,{returnId:!0});i.push({...u,id:u.id??sZ().replace(/-/g,"")})}catch(u){s.push(Fb(a,u.message))}return new Xe({content:o,tool_calls:i,invalid_tool_calls:s,additional_kwargs:{},usage_metadata:e?{input_tokens:e.promptTokens??0,output_tokens:e.completionTokens??0,total_tokens:e.totalTokens??0}:void 0})}default:return new $r({content:o})}}function oon(t,e){if(!t.content&&!t.toolCalls)return e?new Jt({content:"",usage_metadata:e?{input_tokens:e.promptTokens??0,output_tokens:e.completionTokens??0,total_tokens:e.totalTokens??0}:void 0}):null;let r=t.toolCalls?.length?t.toolCalls?.map((a,u)=>({...a,index:u,id:a.id??sZ().replace(/-/g,""),type:"function"})):void 0,n="assistant";t.role&&(n=t.role);let o=R_e(t.content),i,s=[];if(r!==void 0)for(let a of r){let u=a.function?.arguments,c=u===void 0||typeof u=="string"?u:JSON.stringify(u);s.push({name:a.function?.name,args:c,id:a.id,index:a.index,type:"tool_call_chunk"})}else i={};return n==="user"?new cf({content:o}):n==="assistant"?new Jt({content:o,tool_call_chunks:s,additional_kwargs:i,usage_metadata:e?{input_tokens:e.promptTokens??0,output_tokens:e.completionTokens??0,total_tokens:e.totalTokens??0}:void 0}):n==="tool"?new k_({content:o,additional_kwargs:i,tool_call_id:r?.[0].id??""}):n==="function"?new z_({content:o,additional_kwargs:i}):new B_({content:o,role:n})}function Dht(t){if(!(!t||!t.length))return t.map(e=>{if("function"in e)return{type:e.type??"function",function:e.function};if(ea(e)){let r=e.description??`Tool: ${e.name}`;return{type:"function",function:{name:e.name,description:r,parameters:Br(e.schema)?vr(e.schema):e.schema}}}throw new Error(`Unknown tool type passed to ChatMistral: ${JSON.stringify(e,null,2)}`)})}var wOe=class extends os{static lc_name(){return"ChatMistralAI"}lc_namespace=["langchain","chat_models","mistralai"];model="mistral-small-latest";apiKey;endpoint;serverURL;temperature=.7;streaming=!1;topP=1;maxTokens;safeMode=!1;safePrompt=!1;randomSeed;seed;maxRetries;lc_serializable=!0;streamUsage=!0;beforeRequestHooks;requestErrorHooks;responseHooks;httpClient;presencePenalty;frequencyPenalty;numCompletions;constructor(t,e){let r=typeof t=="string"?{...e??{},model:t}:t??{};super(r),this._addVersion("@langchain/mistralai","1.0.7");let n=r.apiKey??Hr("MISTRAL_API_KEY");if(!n)throw new Error("API key MISTRAL_API_KEY is missing for MistralAI, but it is required.");this.apiKey=n,this.streaming=r.streaming??this.streaming,this.serverURL=r.serverURL??this.serverURL,this.temperature=r.temperature??this.temperature,this.topP=r.topP??this.topP,this.maxTokens=r.maxTokens??this.maxTokens,this.safePrompt=r.safePrompt??this.safePrompt,this.randomSeed=r.seed??r.randomSeed??this.seed,this.seed=this.randomSeed,this.maxRetries=r.maxRetries,this.httpClient=r.httpClient,this.model=r.model??r.modelName??this.model,this.streamUsage=r.streamUsage??this.streamUsage,this.beforeRequestHooks=r.beforeRequestHooks??this.beforeRequestHooks,this.requestErrorHooks=r.requestErrorHooks??this.requestErrorHooks,this.responseHooks=r.responseHooks??this.responseHooks,this.presencePenalty=r.presencePenalty??this.presencePenalty,this.frequencyPenalty=r.frequencyPenalty??this.frequencyPenalty,this.numCompletions=r.numCompletions??this.numCompletions,this.addAllHooksToHttpClient()}get lc_secrets(){return{apiKey:"MISTRAL_API_KEY"}}get lc_aliases(){return{apiKey:"mistral_api_key"}}getLsParams(t){let e=this.invocationParams(t);return{ls_provider:"mistral",ls_model_name:this.model,ls_model_type:"chat",ls_temperature:e.temperature??void 0,ls_max_tokens:e.maxTokens??void 0}}_llmType(){return"mistral_ai"}invocationParams(t){let{response_format:e,tools:r,tool_choice:n}=t??{},o=r?.length?Dht(r):void 0;return{model:this.model,tools:o,temperature:this.temperature,maxTokens:this.maxTokens,topP:this.topP,randomSeed:this.seed,safePrompt:this.safePrompt,toolChoice:n,responseFormat:e,presencePenalty:this.presencePenalty,frequencyPenalty:this.frequencyPenalty,n:this.numCompletions}}bindTools(t,e){let r=Dht(t);return new wo({bound:this,kwargs:{...e??{},tools:r},config:{}})}async completionWithRetry(t,e){let r=new pf({maxRetries:this.maxRetries}),n=new qht.Mistral({apiKey:this.apiKey,serverURL:this.serverURL,...this.httpClient?{httpClient:this.httpClient}:{}});return r.call(async()=>{try{let o;return e?o=await n.chat.stream({...t,stream:!0}):o=await n.chat.complete(t),o}catch(o){throw(o.message?.includes("status: 400")||o.message?.toLowerCase().includes("status 400")||o.message?.includes("validation failed"))&&(o.status=400),o}})}async _generate(t,e,r){e.signal?.throwIfAborted();let n={},o=this.invocationParams(e),i=SOe(t),s={...o,messages:i},a=e.signal??!!e.timeout;if(this.streaming||a){let f=this._streamResponseChunks(t,e,r),m={};for await(let h of f){let g=h.generationInfo?.completion??0;m[g]===void 0?m[g]=h:m[g]=m[g].concat(h)}return{generations:Object.entries(m).sort(([h],[g])=>parseInt(h,10)-parseInt(g,10)).map(([h,g])=>g),llmOutput:{estimatedTokenUsage:n}}}let u=await this.completionWithRetry(s,!1),{completionTokens:c,promptTokens:l,totalTokens:d}=u?.usage??{};c&&(n.completionTokens=(n.completionTokens??0)+c),l&&(n.promptTokens=(n.promptTokens??0)+l),d&&(n.totalTokens=(n.totalTokens??0)+d);let p=[];for(let f of u?.choices??[]){if("delta"in f)throw new Error("Delta not supported in non-streaming mode.");if(!("message"in f))throw new Error("No message found in the choice.");let m=f.message?.content??"";Array.isArray(m)&&(m=m[0].type==="text"?m[0].text:"");let h={text:m,message:non(f,u?.usage)};f.finishReason&&(h.generationInfo={finishReason:f.finishReason}),p.push(h)}return{generations:p,llmOutput:{tokenUsage:n}}}async*_streamResponseChunks(t,e,r){let n=SOe(t),o={...this.invocationParams(e),messages:n},i=await this.completionWithRetry(o,!0);for await(let{data:s}of i){if(e.signal?.aborted)return;let a=s?.choices[0];if(!a||!("delta"in a))continue;let{delta:u}=a;if(!u)continue;let c={prompt:0,completion:a.index??0},l=oon(u,this.streamUsage||e.streamUsage?s.usage:null);if(l===null)continue;let d=u.content??"";Array.isArray(d)&&(d=d[0].type==="text"?d[0].text:"");let p=new lo({message:l,text:d,generationInfo:c});yield p,r?.handleLLMNewToken(p.text??"",c,void 0,void 0,void 0,{chunk:p})}}addAllHooksToHttpClient(){try{if(this.removeAllHooksFromHttpClient(),[this.beforeRequestHooks,this.requestErrorHooks,this.responseHooks].some(t=>t&&t.length>0)&&!this.httpClient&&(this.httpClient=new Fht.HTTPClient),this.beforeRequestHooks)for(let t of this.beforeRequestHooks)this.httpClient?.addHook("beforeRequest",t);if(this.requestErrorHooks)for(let t of this.requestErrorHooks)this.httpClient?.addHook("requestError",t);if(this.responseHooks)for(let t of this.responseHooks)this.httpClient?.addHook("response",t)}catch{throw new Error("Error in adding all hooks")}}removeAllHooksFromHttpClient(){try{if(this.beforeRequestHooks)for(let t of this.beforeRequestHooks)this.httpClient?.removeHook("beforeRequest",t);if(this.requestErrorHooks)for(let t of this.requestErrorHooks)this.httpClient?.removeHook("requestError",t);if(this.responseHooks)for(let t of this.responseHooks)this.httpClient?.removeHook("response",t)}catch{throw new Error("Error in removing hooks")}}removeHookFromHttpClient(t){try{this.httpClient?.removeHook("beforeRequest",t),this.httpClient?.removeHook("requestError",t),this.httpClient?.removeHook("response",t)}catch{throw new Error("Error in removing hook")}}_combineLLMOutput(){return[]}withStructuredOutput(t,e){let r=t,n=e?.name,o=e?.method,i=e?.includeRaw,s,a;if(o==="jsonMode"){a=ZC(r);let u=Br(r)||mo(r)?vr(r):void 0;s=this.withConfig({response_format:{type:"json_object"},ls_structured_output_format:{kwargs:{method:"jsonMode"},schema:u}})}else{let u=n??"extract",c;if(Br(r)||mo(r)){let l=vr(r);c={name:u,description:l.description,parameters:l}}else typeof r.name=="string"&&typeof r.parameters=="object"&&r.parameters!=null?(c=r,u=r.name):c={name:u,description:r.description??"",parameters:r};s=this.bindTools([{type:"function",function:c}]).withConfig({tool_choice:"any",...(Br(r)||mo(r))&&{ls_structured_output_format:{kwargs:{method:"functionCalling"},schema:c.parameters}}}),a=dE(r,u)}return ly(s,a,i)}};fi();qM();DM();Kc();OC();fi();DM();dq();var OOe=(it=>(it.API="api",it.API_SINK="api-sink",it.API_SOURCE="api-source",it.DUMMY_NODE="dummy-node",it.FILE_COPY="file-copy",it.FILE="file",it.FILE_SINK="file-sink",it.FILE_SOURCE="file-source",it.SAMBA_SINK="samba-sink",it.SAMBA_SOURCE="samba-source",it.SQL_SINK="sql-sink",it.SQL_SOURCE="sql-source",it.MQTT="mqtt",it.CUBE_QUERY_RUNNER="cube-query-runner",it.FACTORY_NEBULA_SOURCE="factory-nebula-source",it.BYSTRONIC="bystronic",it.IMAP_SOURCE="imap-source",it.IMAP_SINK="imap-sink",it.OPCUA_SOURCE="opcua-source",it.OPCUA_SINK="opcua-sink",it.AI_AGENT="ai-agent",it.MICROSOFT_OFFICE365_EMAIL="microsoft-office365-email",it.MKG="mkg",it.EZ_MES="ez-mes",it.OTTO_FLEET_MANAGER_V2="otto-fleet-manager-v2",it.FRAUNHOFER_BATTERY_ASSEMBLY_CELLS="fraunhofer-battery-assembly-cells",it.PDF_GENERATE="pdf-generate",it.ONSHAPE="onshape",it.OROOX="oroox",it.GPMS="gpms",it.KEIZERSMETAAL_TRUMPF_API="keizersmetaal-trumpf-api",it.HP_INDIGO="hp-indigo",it.QLINK="qlink",it))(OOe||{});var Lht=["gpt-3.5-turbo","gpt-4","gpt-4-turbo","gpt-4o","gpt-4o-mini","gpt-5-nano","gpt-5-mini","gpt-5","o1-preview","o1-mini"],Uht=["claude-2","claude-2-100k","claude-instant-100k","claude-sonnet-4-5"],kht=["mistral-large-2512","mistral-medium-2508","mistral-small-2506"];YD();YD();var rf=T;var COe=(n=>(n.documents="documents",n.metrics="metrics",n.events="events",n))(COe||{}),TOe=(o=>(o.disabled="disabled",o.enabled="enabled",o.overridden="overridden",o.manual="manual",o))(TOe||{}),POe=(a=>(a.equals="=",a.notEquals="<>",a.greaterThan=">",a.greaterThanOrEqual=">=",a.lessThan="<",a.lessThanOrEqual="<=",a.in="IN",a))(POe||{}),yY=T.union([T.string().min(1),T.number(),T.boolean(),T.array(T.union([T.string().min(1),T.number(),T.boolean()])).min(1)]),jOe=(r=>(r.and="AND",r.or="OR",r))(jOe||{}),Bht=T.union([T.string().min(1),T.array(T.string().min(1)).min(1)]),EOe=(o=>(o.string="string",o.number="number",o.boolean="boolean",o.time="time",o))(EOe||{}),IOe=(i=>(i.id="image_url",i.imageUrl="image_url",i.link="link",i.percent="percent",i.currency="currency",i))(IOe||{}),AOe=(o=>(o.oneToOne="one_to_one",o.oneToMany="one_to_many",o.manyToOne="many_to_one",o.manyToMany="many_to_many",o))(AOe||{}),ROe=(d=>(d.count="count",d.countDistinct="count_distinct",d.countDistinctApprox="count_distinct_approx",d.sum="sum",d.avg="avg",d.min="min",d.max="max",d.string="string",d.time="time",d.boolean="boolean",d.number="number",d))(ROe||{}),MOe=(r=>(r.percent="percent",r.currency="currency",r))(MOe||{}),xOe=(A=>(A.equals="equals",A.notEquals="notEquals",A.contains="contains",A.notContains="notContains",A.startsWith="startsWith",A.notStartsWith="notStartsWith",A.endsWith="endsWith",A.notEndsWith="notEndsWith",A.gt="gt",A.gte="gte",A.lt="lt",A.lte="lte",A.set="set",A.notSet="notSet",A.inDateRange="inDateRange",A.notInDateRange="notInDateRange",A.beforeDate="beforeDate",A.beforeOrOnDate="beforeOrOnDate",A.afterDate="afterDate",A.afterOrOnDate="afterOrOnDate",A))(xOe||{}),$Oe=(r=>(r.from_template="from_template",r.manual="manual",r))($Oe||{});var zht=T.union([T.string().min(1),T.object({name:T.string().min(1),email:T.email().optional(),website:T.url().optional()})]);var Jht=T.object({identifier:T.string(),version:T.string(),name:T.string(),description:T.string().optional(),config:T.record(T.string(),T.any()),inputParameters:T.array(T.object({name:T.string(),description:T.string().optional(),type:T.enum(["string","number","boolean","array","simple-array","unknown"]),required:T.boolean().optional(),itemType:T.enum(["string","number","boolean"]).optional(),items:T.array(T.any()).optional()})),outputParameters:T.record(T.string(),T.any()),mode:T.enum($Oe).optional(),createdAt:T.date().optional(),updatedAt:T.date().optional()});var Vht=T.object({dimension:T.string().min(1),operator:T.enum(xOe),values:yY});var Ght=T.record(T.string(),T.union([Vht,T.literal(!1)]));var NOe=T.object({name:T.string().min(1).optional(),description:T.string().min(1).optional(),eventType:T.string().min(1).optional(),dataset:T.string().min(1),dimensions:T.array(T.string().min(1)).min(1),limit:T.number().min(1).optional(),filters:Ght.optional(),cron:T.string().nullable().optional(),tz:T.string().nullable().optional(),incrementalField:T.string().optional(),ungrouped:T.boolean().optional()}),XPo=NOe.extend({identifier:T.string().min(1),key:T.string().min(1)});var bY=T.record(T.string(),T.union([NOe,T.boolean()]));var Hht=T.lazy(()=>T.object({type:T.enum(jOe),filters:vY}));var WN=T.object({sql:T.string().min(1).optional(),dimension:T.string().min(1).optional(),operator:T.enum(POe).optional(),value:yY.optional()}).superRefine((t,e)=>{if(t.sql===void 0&&t.dimension===void 0){e.addIssue({code:T.ZodIssueCode.custom,message:"One of sql or dimension must be defined."});return}if(t.sql!==void 0&&t.dimension!==void 0){e.addIssue({code:T.ZodIssueCode.custom,message:"One of sql or dimension must be defined."});return}t.dimension!==void 0&&(t.operator===void 0||t.value===void 0)&&e.addIssue({code:T.ZodIssueCode.custom,message:"When dimension is defined, operator and values must be defined."})});var vY=T.record(T.string(),T.union([T.lazy(()=>Hht),WN,T.literal(!1)]));var Kht=T.object({collection:T.string().min(1),filters:vY.optional()});var ion=T.record(T.string().regex(/^[a-z]{2}$/),T.record(T.string(),T.string())),YN=T.record(T.string(),T.union([ion,T.string().min(1),T.number(),T.boolean()]));var Zht=T.intersection(WN,T.object({label:T.string().min(1),description:T.string().min(1).optional()}));var Xht=T.record(T.string(),T.union([Zht,T.literal(!1)]));var Wht=T.object({when:Xht,else:T.string().min(1).optional(),segment:T.boolean().optional()});var Yht=T.object({name:T.string().min(1),description:T.string().min(1),type:T.enum(EOe),format:T.enum(IOe).optional(),explode:T.boolean().optional(),index:T.union([T.boolean(),T.string()]).optional(),upperIndex:T.union([T.boolean(),T.string()]).optional(),switch:Wht.optional(),field:Bht.optional(),sql:T.string().min(1).optional(),public:T.boolean().optional(),primaryKey:T.boolean().optional(),subQuery:T.boolean().optional(),override:T.union([T.boolean(),T.literal("custom")]).optional(),meta:YN.optional()}).superRefine((t,e)=>{if(t.switch!==void 0&&(t.field!==void 0||t.sql!==void 0))e.addIssue({code:T.ZodIssueCode.custom,message:"If switch is chosen, do not provide field or sql."});else if(t.switch!==void 0)return;if(t.field!==void 0&&t.sql!==void 0)e.addIssue({code:T.ZodIssueCode.custom,message:"If field is chosen, do not provide sql."});else if(t.field!==void 0)return;t.sql===void 0&&e.addIssue({code:T.ZodIssueCode.custom,message:"Please provide switch, field or sql."})});var Qht=T.record(T.string(),T.union([Yht,T.literal(!1)]));var egt=T.object({name:T.string().min(1),description:T.string().min(1).optional(),type:T.enum(ROe),format:T.enum(MOe).optional(),index:T.string().optional(),upperIndex:T.string().optional(),sql:T.string().min(1).optional(),dimension:T.string().min(1).optional(),public:T.boolean().optional(),override:T.union([T.boolean(),T.literal("custom")]).optional(),meta:YN.optional()}).refine(t=>!(t.sql===void 0&&t.dimension===void 0||t.sql!==void 0&&t.dimension!==void 0),{message:"One of sql or dimension must be defined.",path:["sql","dimension"]});var tgt=T.record(T.string(),T.union([egt,T.literal(!1)]));var rgt=T.object({type:T.enum(["rollup","original_sql","rollup_join"]).optional(),measures:T.array(T.string()).optional(),dimensions:T.array(T.string()).optional(),segments:T.array(T.string()).optional(),timeDimension:T.string().optional(),granularity:T.string().optional(),partitionGranularity:T.string().optional(),rollups:T.array(T.string()).optional(),refreshKeySql:T.string().optional(),refreshKeyEvery:T.string().optional(),refreshKeyIncremental:T.boolean().optional(),refreshKeyUpdateWindow:T.string().optional(),buildRangeStartSql:T.string().optional(),buildRangeEndSql:T.string().optional(),lambda:T.boolean().optional()});var ngt=T.record(T.string(),T.union([rgt,T.literal(!1)]));var ogt=T.object({type:T.enum(AOe),dimension:T.string().min(1).optional(),targetDataset:T.string().min(1),targetDimension:T.string().min(1).optional(),sql:T.string().min(1).optional()}).superRefine((t,e)=>{t.sql!==void 0&&(t.dimension!==void 0||t.targetDimension!==void 0)&&e.addIssue({code:T.ZodIssueCode.custom,message:"Use sql field or dimension/targetDimension."})});var igt=T.record(T.string(),T.union([ogt,T.literal(!1)]));var sgt=T.intersection(WN,T.object({name:T.string().min(1).optional(),description:T.string().min(1).optional(),public:T.boolean().optional(),override:T.union([T.boolean(),T.literal("custom")]).optional()}));var agt=T.record(T.string(),T.union([sgt,T.literal(!1)]));var ugt=T.object({name:T.string().min(1),description:T.string().min(1),type:T.enum(COe),prefix:T.string().min(1),parent:T.string().min(1).optional(),sql:T.string().min(1).optional(),meta:YN.optional(),collection:Kht.optional(),dimensions:Qht.optional(),segments:agt.optional(),relations:igt.optional(),measures:tgt.optional(),preAggregations:ngt.optional()}).superRefine((t,e)=>{if(!t.parent&&t.sql===void 0&&t.collection===void 0){e.addIssue({code:T.ZodIssueCode.custom,message:"You need to define either sql or collection."});return}t.sql!==void 0&&t.collection!==void 0&&e.addIssue({code:T.ZodIssueCode.custom,message:"You need to define either sql or collection."})});var SY=T.record(T.string(),ugt.or(T.boolean()));var cgt=T.record(T.string(),T.union([T.string(),T.object({selector:T.string(),items:T.lazy(()=>cgt).optional()})])),lgt=(o=>(o.equals="equals",o.contains="contains",o.startsWith="startsWith",o.endsWith="endsWith",o))(lgt||{}),son=T.object({selector:T.string(),operator:T.enum(lgt).optional().default("equals"),value:T.string()}),aon=T.array(son),dgt=T.object({identifier:T.string(),name:T.string(),description:T.string().optional(),actionIdentifier:T.string(),inputParameters:cgt.optional(),validation:aon.optional()});var fgt=T.object({identifier:T.string(),connectorType:T.enum(OOe),name:T.string(),location:T.string(),config:T.looseObject({}),enabled:T.boolean(),actions:T.array(Jht).optional(),webhooks:T.array(dgt).optional(),createdAt:T.date().optional(),updatedAt:T.date().optional()}).superRefine((t,e)=>{let r=t.actions?.reduce((n,o)=>(n[o.identifier]=o,n),{})??{};t.webhooks?.forEach(n=>{let o=r[n.actionIdentifier];if(!o){e.addIssue({code:"custom",message:"Action identifier does not exist in the connector's actions.",params:{actionIdentifier:n.actionIdentifier},input:t});return}let i=o.inputParameters.filter(s=>s.required).map(s=>s.name);Object.keys(n.inputParameters??{}).forEach(s=>{i.includes(s)||e.addIssue({code:"custom",message:"Required input parameters has not been defined in webhook input parameter mapping.",params:{parameterName:s,actionIdentifier:n.actionIdentifier},input:t})})})});var wY=T.record(T.string(),fgt.or(T.boolean()));var hgt=X(mgt());var QN=T.string().check(t=>{let{value:e}=t;try{(0,hgt.default)(e)}catch(r){t.issues.push({code:"custom",input:e,message:r instanceof Error?r.message:"Invalid JSONata expression"})}});var uon=T.object({name:T.string(),description:T.string().optional(),expr:QN}),ggt=T.record(T.string(),uon.or(T.boolean()));var _gt=(n=>(n.COUNT="count",n.GAUGE="gauge",n.STATE_SET="state_set",n))(_gt||{}),con=T.object({name:T.string(),description:T.string().optional(),type:T.enum(_gt),expr:QN}),ygt=T.record(T.string(),con.or(T.boolean()));var bgt=T.union([T.string(),T.object({collection:T.string().min(1),expr:QN.optional()})]);var vgt=rf.object({name:rf.string(),description:rf.string().optional(),source:bgt,measures:ygt,dimensions:ggt.optional()}).check(t=>{let{value:e}=t,r=Object.keys(e.measures),n=Object.keys(e.dimensions??{}),o=r.filter(i=>n.includes(i));o.length>0&&t.issues.push({code:"custom",input:e,message:`Measure and dimension keys must be unique. Overlapping keys: ${o.join(", ")}`})}),OY=rf.record(rf.string(),vgt.or(rf.boolean())),lon=vgt.extend({key:rf.string(),status:rf.enum(TOe)}),EIo=lon.extend({id:rf.string(),tenantIdentifier:rf.string(),createdAt:rf.date(),updatedAt:rf.date()});var VIo=T.object({identifier:T.string().min(1),version:T.string().min(1),name:T.string().min(1),prefix:T.string().min(1),description:T.string(),logo:T.string().nullable().optional(),author:zht.nullable().optional(),tenantIdentifier:T.string().nullable().optional(),datasets:SY,semanticTriggers:bY,connectors:wY.optional(),metrics:OY.optional()});var Sgt=T.object({datasets:SY.optional(),semanticTriggers:bY.optional(),connectors:wY.optional(),metrics:OY.optional()});var don=T.object({templateVersion:T.literal("latest").or(T.string().min(1)),name:T.string().min(1),description:T.string().min(1),overrides:Sgt}),nAo=don.extend({templateId:T.string().min(1),tenantId:T.string().min(1)});function fon(t){return Lht.includes(t)}function wgt(t){return Uht.includes(t)}function pon(t){return kht.includes(t)}function mon({apiKey:t,model:e,temperature:r,timeout:n}){if(!t)throw new Error("API key is required for OpenAI provider");if(e&&!fon(e))throw new Error(`Model ${e} is not a valid OpenAI model type`);return new TG({apiKey:t,model:e??"gpt-5",temperature:Number(r)||1,timeout:n,useResponsesApi:!0,verbose:!0})}function hon({apiKey:t,model:e,temperature:r}){if(!t)throw new Error("API key is required for Anthropic provider");if(e&&!wgt(e))throw new Error(`Model ${e} is not a valid Anthropic model type`);return new ode({apiKey:t,model:e??"claude-sonnet-4-5",temperature:r})}function gon({model:t,temperature:e,timeout:r,credentials:n,region:o}){if(!n||!o)throw new Error("Credentials and region are required for AWS Bedrock provider");if(t&&!wgt(t))throw new Error(`Model ${t} is not a valid Anthropic model type, which is used by AWS Bedrock`);return new A_e({region:o,credentials:n,model:t??"claude-sonnet-4-5",temperature:Number(e)||1,timeout:r})}function _on({apiKey:t,model:e,temperature:r}){if(!t)throw new Error("API key is required for Mistral provider");if(e&&!pon(e))throw new Error(`Model ${e} is not a valid Mistral model type`);return new wOe({apiKey:t,model:e??"mistral-small-3.2",temperature:Number(r)||1})}function Ogt(t){let e=t.model;switch(e.provider){case"openai":return mon(e);case"anthropic":return hon(e);case"aws":return gon(e);case"mistral":return _on(e);default:throw new Error(`Unsupported provider: ${e.provider}`)}}var Tgt=t=>t.replace(/_([a-z])/g,(e,r)=>r.toUpperCase());function Pgt(t,e){let r=t;return e.minimum!==void 0&&(r=r.min(e.minimum)),e.maximum!==void 0&&(r=r.max(e.maximum)),r}function yon(t,e){return t==="integer"||t==="number"?Pgt(T.number(),e):t==="string"?T.string():T.any()}function bon(t){if(t.type.includes("null")&&t.type.length===2){let e=t.type.find(n=>n!=="null");return yon(e,t).nullable()}return T.any()}function von(t){return t.enum?T.enum(t.enum):T.string()}function Cgt(t){return Pgt(T.number(),t)}function qOe(t){if(Array.isArray(t.type))return bon(t);let e=Oon[t.type];return e?e(t):T.any()}function Son(t){if(!t.properties)return T.object({});let e={};return Object.entries(t.properties).forEach(([r,n])=>{let o=Tgt(r);e[o]=qOe(n),n.description&&(e[o]=e[o].describe(n.description))}),T.object(e)}function won(t){if(t.items?.type==="string")return T.array(T.string());if(t.items?.type==="number"||t.items?.type==="integer")return T.array(T.number());if(t.items?.type==="object"||Array.isArray(t.items?.type)){let e=qOe(t.items);return T.array(e)}return T.array(T.any())}var Oon={string:von,number:Cgt,integer:Cgt,boolean:()=>T.boolean(),object:Son,array:won},jgt=t=>{let e={};return Object.entries(t).forEach(([r,n])=>{let o=Tgt(r),{required:i,...s}=n,a=qOe(s);s.description&&(a=a.describe(s.description)),i!==!0&&(a=a.nullable()),e[o]=a}),T.object(e)};var FOe=class extends EG{CONNECTOR_INSTANCE="XOD_CONNECTOR_AI_AGENT_CONFIG";#e;#t;#n;constructor(e,r){super(e,r),this.#t=this.connectorSDK.config.model,this.#e=this.connectorSDK.logger,this.#e.debug(`Initializing AI Agent Connector Runner with model: ${this.#t.model}`),this.#n=as({name:"LoggingMiddleware",beforeModel:n=>{this.#e.debug(`Invoking model: ${n.messages[n.messages.length-1].text.trim().replace(/\s+/g," ").slice(0,100)}...`)},afterModel:n=>{this.#e.debug(`Model invocation completed: ${n.messages[n.messages.length-1].text.trim().replace(/\s+/g," ").slice(0,100)}...`)}})}init=async()=>{this.#e.debug("Initializing AI Agent Connector Runner"),this.callbackFunction=async(e,r)=>{let n=setInterval(()=>{this.#e.debug(`AI agent still processing for message ID: ${e.eventId}`)},1e4),o=r.config,i=()=>clearInterval(n),{systemPrompt:s,userPrompt:a}=o;if(!s||s.trim()==="")return i(),this.connectorSDK.telemetry.increment("ai_agent.invocation.missing_system_prompt"),this.connectorSDK.receiver.responses.unprocessableEntity("System prompt not found")(e);if(!a||a.trim()==="")return i(),this.connectorSDK.telemetry.increment("ai_agent.invocation.missing_user_prompt"),this.connectorSDK.receiver.responses.unprocessableEntity("Prompt not found")(e);let u=this.processPromptTemplate(s,r.inputParameters,e.payload),c=this.processPromptTemplate(a,r.inputParameters,e.payload),l=jgt(r.outputParameters);this.connectorSDK.telemetry.gauge("ai_agent.invocation.system_prompt_length",u.length),this.connectorSDK.telemetry.gauge("ai_agent.invocation.user_prompt_length",c.length);let d=await this.#r(e.payload.filepaths),p={...this.connectorSDK.config,model:{...this.#t,...o.model?{model:o.model}:{},...o.temperature?{temperature:o.temperature}:{}}},f=Ogt(p),m=yle({model:f,responseFormat:dle({schema:l,strict:!0}),systemPrompt:u,tools:[],middleware:[this.#n]});try{this.#e.debug("Invoking AI agent...",r.outputParameters);let h=await m.invoke({messages:[new $r({contentBlocks:[...d,{type:"text",text:c}]})]});this.#e.debug(`LLM response structure: messages=${h.messages?.length}, hasStructuredResponse=${!!h.structuredResponse}, responseKeys=${JSON.stringify(Object.keys(h||{}))}`),this.connectorSDK.telemetry.increment("ai_agent.invocation.success"),this.connectorSDK.telemetry.gauge("ai_agent.invocation.response_messages_length",h.messages.length),this.#e.info("AI agent invoked successfully."),!h.structuredResponse||Object.keys(h.structuredResponse).length===0?this.#e.warn(`Received empty structured response from AI agent. Last message: ${JSON.stringify(h.messages[h.messages.length-1]?.content||"no content").slice(0,500)}`):this.#e.debug(`Structured response populated with ${Object.keys(h.structuredResponse).length} fields`);let g={...e,payload:{...h.structuredResponse}};return this.connectorSDK.receiver.responses.ok()(g)}catch(h){return this.#e.error(`Error processing AI agent request: ${h?.message} - ${h} - ${h?.stack}`),this.#e.error("Error processing AI agent request STACK:",h?.message,h?.stack),this.connectorSDK.telemetry.increment("ai_agent.invocation.error"),this.connectorSDK.receiver.responses.internalServerError(`Error processing AI agent request: ${h}`)(e)}finally{i()}}};processPromptTemplate(e,r,n){let o=e;return r.forEach(i=>{let s=n[i.name];o=o.replace(new RegExp(`\\{\\{inputs\\.${i.name}\\}\\}`,"g"),s)}),o}async#r(e){try{let r=this.#c(e);return!Array.isArray(r)||r.length===0?(this.#e?.debug("No file paths to process."),[]):(this.#e?.debug(`Parsed file paths: ${r.join(", ")}`),(await Promise.all(r.map(async o=>this.#i(o)))).filter(o=>o!==null))}catch(r){this.#e?.error(`Error processing files: ${r}`)}return[]}async#i(e){this.#e.debug(`Processing file at path: ${e}`);try{let r=await this.#s(e),n=e1.default.basename(e);if(this.#a(n))return this.#e?.debug(`Adding image file: ${n}`),{type:"image",source_type:"base64",data:r.toString("base64"),mimeType:`image/${e1.default.extname(n).substring(1)}`,metadata:{filename:n}};if(this.#u(n)){let o={type:"file",data:`${r.toString("base64").substring(0,30)}...`,mimeType:"application/pdf",metadata:{filename:n}};return this.#e?.debug(`Adding PDF file: ${n}`,o,bG(o)),{type:"file",data:r.toString("base64"),mimeType:"application/pdf",metadata:{filename:n}}}if(this.#o(n))return this.#e?.debug(`Adding text file: ${n}`),{type:"text",text:r.toString("utf-8"),metadata:{filename:n}};this.#e?.warn(`Unsupported file type ${n}, skipping embedding.`)}catch(r){this.#e?.error(`Error reading file ${e}: ${r}`)}return null}async#s(e){return String(e).startsWith("file://")?(await this.connectorSDK.files(e).read(".")).get():(0,Egt.readFileSync)(e)}#a(e){return[".png",".jpg",".jpeg",".gif",".bmp",".tiff"].includes(e1.default.extname(e).toLowerCase())}#u(e){return e1.default.extname(e).toLowerCase()===".pdf"}#o(e){return e1.default.extname(e).toLowerCase()===".txt"}#c(e){let r=e;if(r==null)return[];if(typeof e=="string")try{r=JSON.parse(e)}catch{r=e}return Array.isArray(r)?r:typeof r=="string"?[r]:[]}};0&&(module.exports={ConnectorRunnerAiAgent});
506
+ Received: ${JSON.stringify(i,null,2)}`)},n=i=>{if(Xe.isInstance(i)&&i.tool_calls?.length)return i.tool_calls.map(s=>({...s,id:SU(s.id??"")})).map($M)},o=new Set;for(let i of t)"tool_call_id"in i&&typeof i.tool_call_id=="string"&&o.add(SU(i.tool_call_id));return t.flatMap(i=>{let s=n(i),a=r(i.content,i.getType());if("tool_call_id"in i&&typeof i.tool_call_id=="string")return[{role:e(i.getType()),content:a,name:i.name,toolCallId:SU(i.tool_call_id)}];if(Xe.isInstance(i)){if(s===void 0)return[{role:e(i.getType()),content:a}];{let u=s.filter(c=>o.has(SU(c.id??"")));return u.length===0?typeof a=="string"&&a.trim()===""||Array.isArray(a)&&a.length===0?[]:[{role:e(i.getType()),content:a}]:[{role:e(i.getType()),toolCalls:u}]}}return[{role:e(i.getType()),content:a}]})}function non(t,e){let{message:r}=t;if(r===void 0)throw new Error("No message found in response");let n=[];"toolCalls"in r&&Array.isArray(r.toolCalls)&&(n=r.toolCalls);let o=R_e(r.content);switch(r.role){case"assistant":{let i=[],s=[];for(let a of n)try{let u=yS(a,{returnId:!0});i.push({...u,id:u.id??sZ().replace(/-/g,"")})}catch(u){s.push(Fb(a,u.message))}return new Xe({content:o,tool_calls:i,invalid_tool_calls:s,additional_kwargs:{},usage_metadata:e?{input_tokens:e.promptTokens??0,output_tokens:e.completionTokens??0,total_tokens:e.totalTokens??0}:void 0})}default:return new $r({content:o})}}function oon(t,e){if(!t.content&&!t.toolCalls)return e?new Jt({content:"",usage_metadata:e?{input_tokens:e.promptTokens??0,output_tokens:e.completionTokens??0,total_tokens:e.totalTokens??0}:void 0}):null;let r=t.toolCalls?.length?t.toolCalls?.map((a,u)=>({...a,index:u,id:a.id??sZ().replace(/-/g,""),type:"function"})):void 0,n="assistant";t.role&&(n=t.role);let o=R_e(t.content),i,s=[];if(r!==void 0)for(let a of r){let u=a.function?.arguments,c=u===void 0||typeof u=="string"?u:JSON.stringify(u);s.push({name:a.function?.name,args:c,id:a.id,index:a.index,type:"tool_call_chunk"})}else i={};return n==="user"?new cf({content:o}):n==="assistant"?new Jt({content:o,tool_call_chunks:s,additional_kwargs:i,usage_metadata:e?{input_tokens:e.promptTokens??0,output_tokens:e.completionTokens??0,total_tokens:e.totalTokens??0}:void 0}):n==="tool"?new k_({content:o,additional_kwargs:i,tool_call_id:r?.[0].id??""}):n==="function"?new z_({content:o,additional_kwargs:i}):new B_({content:o,role:n})}function Dht(t){if(!(!t||!t.length))return t.map(e=>{if("function"in e)return{type:e.type??"function",function:e.function};if(ea(e)){let r=e.description??`Tool: ${e.name}`;return{type:"function",function:{name:e.name,description:r,parameters:Br(e.schema)?vr(e.schema):e.schema}}}throw new Error(`Unknown tool type passed to ChatMistral: ${JSON.stringify(e,null,2)}`)})}var wOe=class extends os{static lc_name(){return"ChatMistralAI"}lc_namespace=["langchain","chat_models","mistralai"];model="mistral-small-latest";apiKey;endpoint;serverURL;temperature=.7;streaming=!1;topP=1;maxTokens;safeMode=!1;safePrompt=!1;randomSeed;seed;maxRetries;lc_serializable=!0;streamUsage=!0;beforeRequestHooks;requestErrorHooks;responseHooks;httpClient;presencePenalty;frequencyPenalty;numCompletions;constructor(t,e){let r=typeof t=="string"?{...e??{},model:t}:t??{};super(r),this._addVersion("@langchain/mistralai","1.0.7");let n=r.apiKey??Hr("MISTRAL_API_KEY");if(!n)throw new Error("API key MISTRAL_API_KEY is missing for MistralAI, but it is required.");this.apiKey=n,this.streaming=r.streaming??this.streaming,this.serverURL=r.serverURL??this.serverURL,this.temperature=r.temperature??this.temperature,this.topP=r.topP??this.topP,this.maxTokens=r.maxTokens??this.maxTokens,this.safePrompt=r.safePrompt??this.safePrompt,this.randomSeed=r.seed??r.randomSeed??this.seed,this.seed=this.randomSeed,this.maxRetries=r.maxRetries,this.httpClient=r.httpClient,this.model=r.model??r.modelName??this.model,this.streamUsage=r.streamUsage??this.streamUsage,this.beforeRequestHooks=r.beforeRequestHooks??this.beforeRequestHooks,this.requestErrorHooks=r.requestErrorHooks??this.requestErrorHooks,this.responseHooks=r.responseHooks??this.responseHooks,this.presencePenalty=r.presencePenalty??this.presencePenalty,this.frequencyPenalty=r.frequencyPenalty??this.frequencyPenalty,this.numCompletions=r.numCompletions??this.numCompletions,this.addAllHooksToHttpClient()}get lc_secrets(){return{apiKey:"MISTRAL_API_KEY"}}get lc_aliases(){return{apiKey:"mistral_api_key"}}getLsParams(t){let e=this.invocationParams(t);return{ls_provider:"mistral",ls_model_name:this.model,ls_model_type:"chat",ls_temperature:e.temperature??void 0,ls_max_tokens:e.maxTokens??void 0}}_llmType(){return"mistral_ai"}invocationParams(t){let{response_format:e,tools:r,tool_choice:n}=t??{},o=r?.length?Dht(r):void 0;return{model:this.model,tools:o,temperature:this.temperature,maxTokens:this.maxTokens,topP:this.topP,randomSeed:this.seed,safePrompt:this.safePrompt,toolChoice:n,responseFormat:e,presencePenalty:this.presencePenalty,frequencyPenalty:this.frequencyPenalty,n:this.numCompletions}}bindTools(t,e){let r=Dht(t);return new wo({bound:this,kwargs:{...e??{},tools:r},config:{}})}async completionWithRetry(t,e){let r=new pf({maxRetries:this.maxRetries}),n=new qht.Mistral({apiKey:this.apiKey,serverURL:this.serverURL,...this.httpClient?{httpClient:this.httpClient}:{}});return r.call(async()=>{try{let o;return e?o=await n.chat.stream({...t,stream:!0}):o=await n.chat.complete(t),o}catch(o){throw(o.message?.includes("status: 400")||o.message?.toLowerCase().includes("status 400")||o.message?.includes("validation failed"))&&(o.status=400),o}})}async _generate(t,e,r){e.signal?.throwIfAborted();let n={},o=this.invocationParams(e),i=SOe(t),s={...o,messages:i},a=e.signal??!!e.timeout;if(this.streaming||a){let f=this._streamResponseChunks(t,e,r),m={};for await(let h of f){let g=h.generationInfo?.completion??0;m[g]===void 0?m[g]=h:m[g]=m[g].concat(h)}return{generations:Object.entries(m).sort(([h],[g])=>parseInt(h,10)-parseInt(g,10)).map(([h,g])=>g),llmOutput:{estimatedTokenUsage:n}}}let u=await this.completionWithRetry(s,!1),{completionTokens:c,promptTokens:l,totalTokens:d}=u?.usage??{};c&&(n.completionTokens=(n.completionTokens??0)+c),l&&(n.promptTokens=(n.promptTokens??0)+l),d&&(n.totalTokens=(n.totalTokens??0)+d);let p=[];for(let f of u?.choices??[]){if("delta"in f)throw new Error("Delta not supported in non-streaming mode.");if(!("message"in f))throw new Error("No message found in the choice.");let m=f.message?.content??"";Array.isArray(m)&&(m=m[0].type==="text"?m[0].text:"");let h={text:m,message:non(f,u?.usage)};f.finishReason&&(h.generationInfo={finishReason:f.finishReason}),p.push(h)}return{generations:p,llmOutput:{tokenUsage:n}}}async*_streamResponseChunks(t,e,r){let n=SOe(t),o={...this.invocationParams(e),messages:n},i=await this.completionWithRetry(o,!0);for await(let{data:s}of i){if(e.signal?.aborted)return;let a=s?.choices[0];if(!a||!("delta"in a))continue;let{delta:u}=a;if(!u)continue;let c={prompt:0,completion:a.index??0},l=oon(u,this.streamUsage||e.streamUsage?s.usage:null);if(l===null)continue;let d=u.content??"";Array.isArray(d)&&(d=d[0].type==="text"?d[0].text:"");let p=new lo({message:l,text:d,generationInfo:c});yield p,r?.handleLLMNewToken(p.text??"",c,void 0,void 0,void 0,{chunk:p})}}addAllHooksToHttpClient(){try{if(this.removeAllHooksFromHttpClient(),[this.beforeRequestHooks,this.requestErrorHooks,this.responseHooks].some(t=>t&&t.length>0)&&!this.httpClient&&(this.httpClient=new Fht.HTTPClient),this.beforeRequestHooks)for(let t of this.beforeRequestHooks)this.httpClient?.addHook("beforeRequest",t);if(this.requestErrorHooks)for(let t of this.requestErrorHooks)this.httpClient?.addHook("requestError",t);if(this.responseHooks)for(let t of this.responseHooks)this.httpClient?.addHook("response",t)}catch{throw new Error("Error in adding all hooks")}}removeAllHooksFromHttpClient(){try{if(this.beforeRequestHooks)for(let t of this.beforeRequestHooks)this.httpClient?.removeHook("beforeRequest",t);if(this.requestErrorHooks)for(let t of this.requestErrorHooks)this.httpClient?.removeHook("requestError",t);if(this.responseHooks)for(let t of this.responseHooks)this.httpClient?.removeHook("response",t)}catch{throw new Error("Error in removing hooks")}}removeHookFromHttpClient(t){try{this.httpClient?.removeHook("beforeRequest",t),this.httpClient?.removeHook("requestError",t),this.httpClient?.removeHook("response",t)}catch{throw new Error("Error in removing hook")}}_combineLLMOutput(){return[]}withStructuredOutput(t,e){let r=t,n=e?.name,o=e?.method,i=e?.includeRaw,s,a;if(o==="jsonMode"){a=ZC(r);let u=Br(r)||mo(r)?vr(r):void 0;s=this.withConfig({response_format:{type:"json_object"},ls_structured_output_format:{kwargs:{method:"jsonMode"},schema:u}})}else{let u=n??"extract",c;if(Br(r)||mo(r)){let l=vr(r);c={name:u,description:l.description,parameters:l}}else typeof r.name=="string"&&typeof r.parameters=="object"&&r.parameters!=null?(c=r,u=r.name):c={name:u,description:r.description??"",parameters:r};s=this.bindTools([{type:"function",function:c}]).withConfig({tool_choice:"any",...(Br(r)||mo(r))&&{ls_structured_output_format:{kwargs:{method:"functionCalling"},schema:c.parameters}}}),a=dE(r,u)}return ly(s,a,i)}};fi();qM();DM();Kc();OC();fi();DM();dq();var OOe=(it=>(it.API="api",it.API_SINK="api-sink",it.API_SOURCE="api-source",it.DUMMY_NODE="dummy-node",it.FILE_COPY="file-copy",it.FILE="file",it.FILE_SINK="file-sink",it.FILE_SOURCE="file-source",it.SAMBA_SINK="samba-sink",it.SAMBA_SOURCE="samba-source",it.SQL_SINK="sql-sink",it.SQL_SOURCE="sql-source",it.MQTT="mqtt",it.CUBE_QUERY_RUNNER="cube-query-runner",it.FACTORY_NEBULA_SOURCE="factory-nebula-source",it.BYSTRONIC="bystronic",it.IMAP_SOURCE="imap-source",it.IMAP_SINK="imap-sink",it.OPCUA_SOURCE="opcua-source",it.OPCUA_SINK="opcua-sink",it.AI_AGENT="ai-agent",it.MICROSOFT_OFFICE365_EMAIL="microsoft-office365-email",it.MKG="mkg",it.EZ_MES="ez-mes",it.OTTO_FLEET_MANAGER_V2="otto-fleet-manager-v2",it.FRAUNHOFER_BATTERY_ASSEMBLY_CELLS="fraunhofer-battery-assembly-cells",it.PDF_GENERATE="pdf-generate",it.ONSHAPE="onshape",it.OROOX="oroox",it.GPMS="gpms",it.KEIZERSMETAAL_TRUMPF_API="keizersmetaal-trumpf-api",it.HP_INDIGO="hp-indigo",it.QLINK="qlink",it))(OOe||{});var Lht=["gpt-3.5-turbo","gpt-4","gpt-4-turbo","gpt-4o","gpt-4o-mini","gpt-5-nano","gpt-5-mini","gpt-5","o1-preview","o1-mini"],Uht=["claude-2","claude-2-100k","claude-instant-100k","claude-sonnet-4-5"],kht=["mistral-large-2512","mistral-medium-2508","mistral-small-2506"];YD();YD();var rf=T;var COe=(n=>(n.documents="documents",n.metrics="metrics",n.events="events",n))(COe||{}),TOe=(o=>(o.disabled="disabled",o.enabled="enabled",o.overridden="overridden",o.manual="manual",o))(TOe||{}),POe=(a=>(a.equals="=",a.notEquals="<>",a.greaterThan=">",a.greaterThanOrEqual=">=",a.lessThan="<",a.lessThanOrEqual="<=",a.in="IN",a))(POe||{}),yY=T.union([T.string().min(1),T.number(),T.boolean(),T.array(T.union([T.string().min(1),T.number(),T.boolean()])).min(1)]),jOe=(r=>(r.and="AND",r.or="OR",r))(jOe||{}),Bht=T.union([T.string().min(1),T.array(T.string().min(1)).min(1)]),EOe=(o=>(o.string="string",o.number="number",o.boolean="boolean",o.time="time",o))(EOe||{}),IOe=(i=>(i.id="image_url",i.imageUrl="image_url",i.link="link",i.percent="percent",i.currency="currency",i))(IOe||{}),AOe=(o=>(o.oneToOne="one_to_one",o.oneToMany="one_to_many",o.manyToOne="many_to_one",o.manyToMany="many_to_many",o))(AOe||{}),ROe=(d=>(d.count="count",d.countDistinct="count_distinct",d.countDistinctApprox="count_distinct_approx",d.sum="sum",d.avg="avg",d.min="min",d.max="max",d.string="string",d.time="time",d.boolean="boolean",d.number="number",d))(ROe||{}),MOe=(r=>(r.percent="percent",r.currency="currency",r))(MOe||{}),xOe=(A=>(A.equals="equals",A.notEquals="notEquals",A.contains="contains",A.notContains="notContains",A.startsWith="startsWith",A.notStartsWith="notStartsWith",A.endsWith="endsWith",A.notEndsWith="notEndsWith",A.gt="gt",A.gte="gte",A.lt="lt",A.lte="lte",A.set="set",A.notSet="notSet",A.inDateRange="inDateRange",A.notInDateRange="notInDateRange",A.beforeDate="beforeDate",A.beforeOrOnDate="beforeOrOnDate",A.afterDate="afterDate",A.afterOrOnDate="afterOrOnDate",A))(xOe||{}),$Oe=(r=>(r.from_template="from_template",r.manual="manual",r))($Oe||{});var zht=T.union([T.string().min(1),T.object({name:T.string().min(1),email:T.email().optional(),website:T.url().optional()})]);var Jht=T.object({identifier:T.string(),version:T.string(),name:T.string(),description:T.string().optional(),config:T.record(T.string(),T.any()),inputParameters:T.array(T.object({name:T.string(),description:T.string().optional(),type:T.enum(["string","number","boolean","array","simple-array","unknown"]),required:T.boolean().optional(),itemType:T.enum(["string","number","boolean"]).optional(),items:T.array(T.any()).optional()})),outputParameters:T.record(T.string(),T.any()),mode:T.enum($Oe).optional(),createdAt:T.date().optional(),updatedAt:T.date().optional()});var Vht=T.object({dimension:T.string().min(1),operator:T.enum(xOe),values:yY});var Ght=T.record(T.string(),T.union([Vht,T.literal(!1)]));var NOe=T.object({name:T.string().min(1).optional(),description:T.string().min(1).optional(),eventType:T.string().min(1).optional(),dataset:T.string().min(1),dimensions:T.array(T.string().min(1)).min(1),limit:T.number().min(1).optional(),filters:Ght.optional(),cron:T.string().nullable().optional(),tz:T.string().nullable().optional(),incrementalField:T.string().optional(),ungrouped:T.boolean().optional()}),XPo=NOe.extend({identifier:T.string().min(1),key:T.string().min(1)});var bY=T.record(T.string(),T.union([NOe,T.boolean()]));var Hht=T.lazy(()=>T.object({type:T.enum(jOe),filters:vY}));var WN=T.object({sql:T.string().min(1).optional(),dimension:T.string().min(1).optional(),operator:T.enum(POe).optional(),value:yY.optional()}).superRefine((t,e)=>{if(t.sql===void 0&&t.dimension===void 0){e.addIssue({code:T.ZodIssueCode.custom,message:"One of sql or dimension must be defined."});return}if(t.sql!==void 0&&t.dimension!==void 0){e.addIssue({code:T.ZodIssueCode.custom,message:"One of sql or dimension must be defined."});return}t.dimension!==void 0&&(t.operator===void 0||t.value===void 0)&&e.addIssue({code:T.ZodIssueCode.custom,message:"When dimension is defined, operator and values must be defined."})});var vY=T.record(T.string(),T.union([T.lazy(()=>Hht),WN,T.literal(!1)]));var Kht=T.object({collection:T.string().min(1),filters:vY.optional()});var ion=T.record(T.string().regex(/^[a-z]{2}$/),T.record(T.string(),T.string())),YN=T.record(T.string(),T.union([ion,T.string().min(1),T.number(),T.boolean()]));var Zht=T.intersection(WN,T.object({label:T.string().min(1),description:T.string().min(1).optional()}));var Xht=T.record(T.string(),T.union([Zht,T.literal(!1)]));var Wht=T.object({when:Xht,else:T.string().min(1).optional(),segment:T.boolean().optional()});var Yht=T.object({name:T.string().min(1),description:T.string().min(1),type:T.enum(EOe),format:T.enum(IOe).optional(),explode:T.boolean().optional(),index:T.union([T.boolean(),T.string()]).optional(),upperIndex:T.union([T.boolean(),T.string()]).optional(),switch:Wht.optional(),field:Bht.optional(),sql:T.string().min(1).optional(),public:T.boolean().optional(),primaryKey:T.boolean().optional(),subQuery:T.boolean().optional(),override:T.union([T.boolean(),T.literal("custom")]).optional(),meta:YN.optional()}).superRefine((t,e)=>{if(t.switch!==void 0&&(t.field!==void 0||t.sql!==void 0))e.addIssue({code:T.ZodIssueCode.custom,message:"If switch is chosen, do not provide field or sql."});else if(t.switch!==void 0)return;if(t.field!==void 0&&t.sql!==void 0)e.addIssue({code:T.ZodIssueCode.custom,message:"If field is chosen, do not provide sql."});else if(t.field!==void 0)return;t.sql===void 0&&e.addIssue({code:T.ZodIssueCode.custom,message:"Please provide switch, field or sql."})});var Qht=T.record(T.string(),T.union([Yht,T.literal(!1)]));var egt=T.object({name:T.string().min(1),description:T.string().min(1).optional(),type:T.enum(ROe),format:T.enum(MOe).optional(),index:T.string().optional(),upperIndex:T.string().optional(),sql:T.string().min(1).optional(),dimension:T.string().min(1).optional(),public:T.boolean().optional(),override:T.union([T.boolean(),T.literal("custom")]).optional(),meta:YN.optional()}).refine(t=>!(t.sql===void 0&&t.dimension===void 0||t.sql!==void 0&&t.dimension!==void 0),{message:"One of sql or dimension must be defined.",path:["sql","dimension"]});var tgt=T.record(T.string(),T.union([egt,T.literal(!1)]));var rgt=T.object({type:T.enum(["rollup","original_sql","rollup_join"]).optional(),measures:T.array(T.string()).optional(),dimensions:T.array(T.string()).optional(),segments:T.array(T.string()).optional(),timeDimension:T.string().optional(),granularity:T.string().optional(),partitionGranularity:T.string().optional(),rollups:T.array(T.string()).optional(),refreshKeySql:T.string().optional(),refreshKeyEvery:T.string().optional(),refreshKeyIncremental:T.boolean().optional(),refreshKeyUpdateWindow:T.string().optional(),buildRangeStartSql:T.string().optional(),buildRangeEndSql:T.string().optional(),lambda:T.boolean().optional()});var ngt=T.record(T.string(),T.union([rgt,T.literal(!1)]));var ogt=T.object({type:T.enum(AOe),dimension:T.string().min(1).optional(),targetDataset:T.string().min(1),targetDimension:T.string().min(1).optional(),sql:T.string().min(1).optional()}).superRefine((t,e)=>{t.sql!==void 0&&(t.dimension!==void 0||t.targetDimension!==void 0)&&e.addIssue({code:T.ZodIssueCode.custom,message:"Use sql field or dimension/targetDimension."})});var igt=T.record(T.string(),T.union([ogt,T.literal(!1)]));var sgt=T.intersection(WN,T.object({name:T.string().min(1).optional(),description:T.string().min(1).optional(),public:T.boolean().optional(),override:T.union([T.boolean(),T.literal("custom")]).optional()}));var agt=T.record(T.string(),T.union([sgt,T.literal(!1)]));var ugt=T.object({name:T.string().min(1),description:T.string().min(1),type:T.enum(COe),prefix:T.string().min(1),parent:T.string().min(1).optional(),sql:T.string().min(1).optional(),meta:YN.optional(),collection:Kht.optional(),dimensions:Qht.optional(),segments:agt.optional(),relations:igt.optional(),measures:tgt.optional(),preAggregations:ngt.optional()}).superRefine((t,e)=>{if(!t.parent&&t.sql===void 0&&t.collection===void 0){e.addIssue({code:T.ZodIssueCode.custom,message:"You need to define either sql or collection."});return}t.sql!==void 0&&t.collection!==void 0&&e.addIssue({code:T.ZodIssueCode.custom,message:"You need to define either sql or collection."})});var SY=T.record(T.string(),ugt.or(T.boolean()));var cgt=T.record(T.string(),T.union([T.string(),T.object({selector:T.string(),items:T.lazy(()=>cgt).optional()})])),lgt=(o=>(o.equals="equals",o.contains="contains",o.startsWith="startsWith",o.endsWith="endsWith",o))(lgt||{}),son=T.object({selector:T.string(),operator:T.enum(lgt).optional().default("equals"),value:T.string()}),aon=T.array(son),dgt=T.object({identifier:T.string(),name:T.string(),description:T.string().optional(),actionIdentifier:T.string(),inputParameters:cgt.optional(),validation:aon.optional()});var fgt=T.object({identifier:T.string(),connectorType:T.enum(OOe),name:T.string(),location:T.string(),config:T.looseObject({}),enabled:T.boolean(),actions:T.array(Jht).optional(),webhooks:T.array(dgt).optional(),createdAt:T.date().optional(),updatedAt:T.date().optional()}).superRefine((t,e)=>{let r=t.actions?.reduce((n,o)=>(n[o.identifier]=o,n),{})??{};t.webhooks?.forEach(n=>{let o=r[n.actionIdentifier];if(!o){e.addIssue({code:"custom",message:"Action identifier does not exist in the connector's actions.",params:{actionIdentifier:n.actionIdentifier},input:t});return}let i=o.inputParameters.filter(s=>s.required).map(s=>s.name);Object.keys(n.inputParameters??{}).forEach(s=>{i.includes(s)||e.addIssue({code:"custom",message:"Required input parameters has not been defined in webhook input parameter mapping.",params:{parameterName:s,actionIdentifier:n.actionIdentifier},input:t})})})});var wY=T.record(T.string(),fgt.or(T.boolean()));var hgt=X(mgt());var QN=T.string().check(t=>{let{value:e}=t;try{(0,hgt.default)(e)}catch(r){t.issues.push({code:"custom",input:e,message:r instanceof Error?r.message:"Invalid JSONata expression"})}});var uon=T.object({name:T.string(),description:T.string().optional(),expr:QN}),ggt=T.record(T.string(),uon.or(T.boolean()));var _gt=(n=>(n.COUNT="count",n.GAUGE="gauge",n.STATE_SET="state_set",n))(_gt||{}),con=T.object({name:T.string(),description:T.string().optional(),type:T.enum(_gt),expr:QN}),ygt=T.record(T.string(),con.or(T.boolean()));var bgt=T.union([T.string(),T.object({collection:T.string().min(1),expr:QN.optional()})]);var vgt=rf.object({name:rf.string(),description:rf.string().optional(),source:bgt,measures:ygt,dimensions:ggt.optional()}).check(t=>{let{value:e}=t,r=Object.keys(e.measures),n=Object.keys(e.dimensions??{}),o=r.filter(i=>n.includes(i));o.length>0&&t.issues.push({code:"custom",input:e,message:`Measure and dimension keys must be unique. Overlapping keys: ${o.join(", ")}`})}),OY=rf.record(rf.string(),vgt.or(rf.boolean())),lon=vgt.extend({key:rf.string(),status:rf.enum(TOe)}),EIo=lon.extend({id:rf.string(),tenantIdentifier:rf.string(),createdAt:rf.date(),updatedAt:rf.date()});var GIo=T.object({identifier:T.string().min(1),version:T.string().min(1),name:T.string().min(1),prefix:T.string().min(1),description:T.string(),logo:T.string().nullable().optional(),author:zht.nullable().optional(),tenantIdentifier:T.string().nullable().optional(),datasets:SY,semanticTriggers:bY,connectors:wY.optional(),metrics:OY.optional()});var Sgt=T.object({datasets:SY.optional(),semanticTriggers:bY.optional(),connectors:wY.optional(),metrics:OY.optional()});var don=T.object({templateVersion:T.literal("latest").or(T.string().min(1)),name:T.string().min(1),description:T.string().min(1),overrides:Sgt}),oAo=don.extend({templateId:T.string().min(1),tenantId:T.string().min(1)});function fon(t){return Lht.includes(t)}function wgt(t){return Uht.includes(t)}function pon(t){return kht.includes(t)}function mon({apiKey:t,model:e,temperature:r,timeout:n}){if(!t)throw new Error("API key is required for OpenAI provider");if(e&&!fon(e))throw new Error(`Model ${e} is not a valid OpenAI model type`);return new TG({apiKey:t,model:e??"gpt-5",temperature:Number(r)||1,timeout:n,useResponsesApi:!0,verbose:!0})}function hon({apiKey:t,model:e,temperature:r}){if(!t)throw new Error("API key is required for Anthropic provider");if(e&&!wgt(e))throw new Error(`Model ${e} is not a valid Anthropic model type`);return new ode({apiKey:t,model:e??"claude-sonnet-4-5",temperature:r})}function gon({model:t,temperature:e,timeout:r,credentials:n,region:o}){if(!n||!o)throw new Error("Credentials and region are required for AWS Bedrock provider");if(t&&!wgt(t))throw new Error(`Model ${t} is not a valid Anthropic model type, which is used by AWS Bedrock`);return new A_e({region:o,credentials:n,model:t??"claude-sonnet-4-5",temperature:Number(e)||1,timeout:r})}function _on({apiKey:t,model:e,temperature:r}){if(!t)throw new Error("API key is required for Mistral provider");if(e&&!pon(e))throw new Error(`Model ${e} is not a valid Mistral model type`);return new wOe({apiKey:t,model:e??"mistral-small-3.2",temperature:Number(r)||1})}function Ogt(t){let e=t.model;switch(e.provider){case"openai":return mon(e);case"anthropic":return hon(e);case"aws":return gon(e);case"mistral":return _on(e);default:throw new Error(`Unsupported provider: ${e.provider}`)}}var Tgt=t=>t.replace(/_([a-z])/g,(e,r)=>r.toUpperCase());function Pgt(t,e){let r=t;return e.minimum!==void 0&&(r=r.min(e.minimum)),e.maximum!==void 0&&(r=r.max(e.maximum)),r}function yon(t,e){return t==="integer"||t==="number"?Pgt(T.number(),e):t==="string"?T.string():T.any()}function bon(t){if(t.type.includes("null")&&t.type.length===2){let e=t.type.find(n=>n!=="null");return yon(e,t).nullable()}return T.any()}function von(t){return t.enum?T.enum(t.enum):T.string()}function Cgt(t){return Pgt(T.number(),t)}function qOe(t){if(Array.isArray(t.type))return bon(t);let e=Oon[t.type];return e?e(t):T.any()}function Son(t){if(!t.properties)return T.object({});let e={};return Object.entries(t.properties).forEach(([r,n])=>{let o=Tgt(r);e[o]=qOe(n),n.description&&(e[o]=e[o].describe(n.description))}),T.object(e)}function won(t){if(t.items?.type==="string")return T.array(T.string());if(t.items?.type==="number"||t.items?.type==="integer")return T.array(T.number());if(t.items?.type==="object"||Array.isArray(t.items?.type)){let e=qOe(t.items);return T.array(e)}return T.array(T.any())}var Oon={string:von,number:Cgt,integer:Cgt,boolean:()=>T.boolean(),object:Son,array:won},jgt=t=>{let e={};return Object.entries(t).forEach(([r,n])=>{let o=Tgt(r),{required:i,...s}=n,a=qOe(s);s.description&&(a=a.describe(s.description)),i!==!0&&(a=a.nullable()),e[o]=a}),T.object(e)};var FOe=class extends EG{CONNECTOR_INSTANCE="XOD_CONNECTOR_AI_AGENT_CONFIG";#e;#t;#n;constructor(e,r){super(e,r),this.#t=this.connectorSDK.config.model,this.#e=this.connectorSDK.logger,this.#e.debug(`Initializing AI Agent Connector Runner with model: ${this.#t.model}`),this.#n=as({name:"LoggingMiddleware",beforeModel:n=>{this.#e.debug(`Invoking model: ${n.messages[n.messages.length-1].text.trim().replace(/\s+/g," ").slice(0,100)}...`)},afterModel:n=>{this.#e.debug(`Model invocation completed: ${n.messages[n.messages.length-1].text.trim().replace(/\s+/g," ").slice(0,100)}...`)}})}init=async()=>{this.#e.debug("Initializing AI Agent Connector Runner"),this.callbackFunction=async(e,r)=>{let n=setInterval(()=>{this.#e.debug(`AI agent still processing for message ID: ${e.eventId}`)},1e4),o=r.config,i=()=>clearInterval(n),{systemPrompt:s,userPrompt:a}=o;if(!s||s.trim()==="")return i(),this.connectorSDK.telemetry.increment("ai_agent.invocation.missing_system_prompt"),this.connectorSDK.receiver.responses.unprocessableEntity("System prompt not found")(e);if(!a||a.trim()==="")return i(),this.connectorSDK.telemetry.increment("ai_agent.invocation.missing_user_prompt"),this.connectorSDK.receiver.responses.unprocessableEntity("Prompt not found")(e);let u=this.processPromptTemplate(s,r.inputParameters,e.payload),c=this.processPromptTemplate(a,r.inputParameters,e.payload),l=jgt(r.outputParameters);this.connectorSDK.telemetry.gauge("ai_agent.invocation.system_prompt_length",u.length),this.connectorSDK.telemetry.gauge("ai_agent.invocation.user_prompt_length",c.length);let d=await this.#r(e.payload.filepaths),p={...this.connectorSDK.config,model:{...this.#t,...o.model?{model:o.model}:{},...o.temperature?{temperature:o.temperature}:{}}},f=Ogt(p),m=yle({model:f,responseFormat:dle({schema:l,strict:!0}),systemPrompt:u,tools:[],middleware:[this.#n]});try{this.#e.debug("Invoking AI agent...",r.outputParameters);let h=await m.invoke({messages:[new $r({contentBlocks:[...d,{type:"text",text:c}]})]});this.#e.debug(`LLM response structure: messages=${h.messages?.length}, hasStructuredResponse=${!!h.structuredResponse}, responseKeys=${JSON.stringify(Object.keys(h||{}))}`),this.connectorSDK.telemetry.increment("ai_agent.invocation.success"),this.connectorSDK.telemetry.gauge("ai_agent.invocation.response_messages_length",h.messages.length),this.#e.info("AI agent invoked successfully."),!h.structuredResponse||Object.keys(h.structuredResponse).length===0?this.#e.warn(`Received empty structured response from AI agent. Last message: ${JSON.stringify(h.messages[h.messages.length-1]?.content||"no content").slice(0,500)}`):this.#e.debug(`Structured response populated with ${Object.keys(h.structuredResponse).length} fields`);let g={...e,payload:{...h.structuredResponse}};return this.connectorSDK.receiver.responses.ok()(g)}catch(h){return this.#e.error(`Error processing AI agent request: ${h?.message} - ${h} - ${h?.stack}`),this.#e.error("Error processing AI agent request STACK:",h?.message,h?.stack),this.connectorSDK.telemetry.increment("ai_agent.invocation.error"),this.connectorSDK.receiver.responses.internalServerError(`Error processing AI agent request: ${h}`)(e)}finally{i()}}};processPromptTemplate(e,r,n){let o=e;return r.forEach(i=>{let s=n[i.name];o=o.replace(new RegExp(`\\{\\{inputs\\.${i.name}\\}\\}`,"g"),s)}),o}async#r(e){try{let r=this.#c(e);return!Array.isArray(r)||r.length===0?(this.#e?.debug("No file paths to process."),[]):(this.#e?.debug(`Parsed file paths: ${r.join(", ")}`),(await Promise.all(r.map(async o=>this.#i(o)))).filter(o=>o!==null))}catch(r){this.#e?.error(`Error processing files: ${r}`)}return[]}async#i(e){this.#e.debug(`Processing file at path: ${e}`);try{let r=await this.#s(e),n=e1.default.basename(e);if(this.#a(n))return this.#e?.debug(`Adding image file: ${n}`),{type:"image",source_type:"base64",data:r.toString("base64"),mimeType:`image/${e1.default.extname(n).substring(1)}`,metadata:{filename:n}};if(this.#u(n)){let o={type:"file",data:`${r.toString("base64").substring(0,30)}...`,mimeType:"application/pdf",metadata:{filename:n}};return this.#e?.debug(`Adding PDF file: ${n}`,o,bG(o)),{type:"file",data:r.toString("base64"),mimeType:"application/pdf",metadata:{filename:n}}}if(this.#o(n))return this.#e?.debug(`Adding text file: ${n}`),{type:"text",text:r.toString("utf-8"),metadata:{filename:n}};this.#e?.warn(`Unsupported file type ${n}, skipping embedding.`)}catch(r){this.#e?.error(`Error reading file ${e}: ${r}`)}return null}async#s(e){return String(e).startsWith("file://")?(await this.connectorSDK.files(e).read(".")).get():(0,Egt.readFileSync)(e)}#a(e){return[".png",".jpg",".jpeg",".gif",".bmp",".tiff"].includes(e1.default.extname(e).toLowerCase())}#u(e){return e1.default.extname(e).toLowerCase()===".pdf"}#o(e){return e1.default.extname(e).toLowerCase()===".txt"}#c(e){let r=e;if(r==null)return[];if(typeof e=="string")try{r=JSON.parse(e)}catch{r=e}return Array.isArray(r)?r:typeof r=="string"?[r]:[]}};0&&(module.exports={ConnectorRunnerAiAgent});
507
507
  /*! Bundled license information:
508
508
 
509
509
  @langchain/core/dist/utils/fast-json-patch/src/helpers.js:
@@ -3,3 +3,4 @@ export * from './expression';
3
3
  export * from './measures';
4
4
  export * from './metrics';
5
5
  export * from './source';
6
+ export * from './mapping';
@@ -0,0 +1,12 @@
1
+ export interface MetricMappingSourceRule {
2
+ collection: string;
3
+ expr?: string;
4
+ }
5
+ export type MetricMappingExpressionRecordRule = Record<string, string>;
6
+ export interface MetricMappingConfig {
7
+ tenantIdentifier: string;
8
+ source: MetricMappingSourceRule;
9
+ measures: MetricMappingExpressionRecordRule;
10
+ dimensions: MetricMappingExpressionRecordRule;
11
+ updatedAt: string;
12
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@transai/connector-runner-ai-agent",
3
- "version": "0.29.1",
3
+ "version": "0.29.2",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },