@google/adk 0.2.2 → 0.2.3

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.
Files changed (44) hide show
  1. package/dist/cjs/agents/content_processor_utils.js +12 -2
  2. package/dist/cjs/agents/functions.js +13 -3
  3. package/dist/cjs/agents/llm_agent.js +13 -3
  4. package/dist/cjs/code_executors/built_in_code_executor.js +1 -1
  5. package/dist/cjs/code_executors/code_execution_utils.js +12 -2
  6. package/dist/cjs/code_executors/code_executor_context.js +12 -2
  7. package/dist/cjs/common.js +3 -0
  8. package/dist/cjs/index.js +11 -16
  9. package/dist/cjs/index.js.map +3 -3
  10. package/dist/cjs/sessions/in_memory_session_service.js +13 -3
  11. package/dist/cjs/utils/model_name.js +24 -4
  12. package/dist/cjs/version.js +1 -1
  13. package/dist/esm/agents/content_processor_utils.js +1 -1
  14. package/dist/esm/agents/functions.js +1 -1
  15. package/dist/esm/agents/llm_agent.js +1 -1
  16. package/dist/esm/code_executors/built_in_code_executor.js +2 -2
  17. package/dist/esm/code_executors/code_execution_utils.js +1 -1
  18. package/dist/esm/code_executors/code_executor_context.js +1 -1
  19. package/dist/esm/common.js +2 -0
  20. package/dist/esm/index.js +11 -16
  21. package/dist/esm/index.js.map +3 -3
  22. package/dist/esm/sessions/in_memory_session_service.js +1 -1
  23. package/dist/esm/utils/model_name.js +23 -3
  24. package/dist/esm/version.js +1 -1
  25. package/dist/types/common.d.ts +1 -0
  26. package/dist/types/utils/model_name.d.ts +1 -1
  27. package/dist/types/version.d.ts +2 -2
  28. package/dist/web/agents/content_processor_utils.js +1 -1
  29. package/dist/web/agents/functions.js +1 -1
  30. package/dist/web/agents/llm_agent.js +1 -1
  31. package/dist/web/code_executors/built_in_code_executor.js +2 -2
  32. package/dist/web/code_executors/code_execution_utils.js +1 -1
  33. package/dist/web/code_executors/code_executor_context.js +1 -1
  34. package/dist/web/common.js +2 -0
  35. package/dist/web/index.js +1 -6
  36. package/dist/web/index.js.map +3 -3
  37. package/dist/web/sessions/in_memory_session_service.js +1 -1
  38. package/dist/web/utils/model_name.js +23 -3
  39. package/dist/web/version.js +1 -1
  40. package/package.json +3 -3
  41. package/dist/cjs/utils/deep_clone.js +0 -44
  42. package/dist/esm/utils/deep_clone.js +0 -14
  43. package/dist/types/utils/deep_clone.d.ts +0 -1
  44. package/dist/web/utils/deep_clone.js +0 -14
package/dist/web/index.js CHANGED
@@ -4,15 +4,10 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- var mn=Object.defineProperty,gn=Object.defineProperties;var hn=Object.getOwnPropertyDescriptors;var yt=Object.getOwnPropertySymbols;var Cn=Object.prototype.hasOwnProperty,vn=Object.prototype.propertyIsEnumerable;var ke=(o,e)=>(e=Symbol[o])?e:Symbol.for("Symbol."+o);var At=(o,e,t)=>e in o?mn(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,x=(o,e)=>{for(var t in e||(e={}))Cn.call(e,t)&&At(o,t,e[t]);if(yt)for(var t of yt(e))vn.call(e,t)&&At(o,t,e[t]);return o},te=(o,e)=>gn(o,hn(e));var u=function(o,e){this[0]=o,this[1]=e},g=(o,e,t)=>{var n=(s,a,c,l)=>{try{var d=t[s](a),f=(a=d.value)instanceof u,m=d.done;Promise.resolve(f?a[0]:a).then(C=>f?n(s==="return"?s:"next",a[1]?{done:C.done,value:C.value}:C,c,l):c({value:C,done:m})).catch(C=>n("throw",C,c,l))}catch(C){l(C)}},r=s=>i[s]=a=>new Promise((c,l)=>n(s,a,c,l)),i={};return t=t.apply(o,e),i[ke("asyncIterator")]=()=>i,r("next"),r("throw"),r("return"),i};var E=(o,e,t)=>(e=o[ke("asyncIterator")])?e.call(o):(o=o[ke("iterator")](),e={},t=(n,r)=>(r=o[n])&&(e[n]=i=>new Promise((s,a,c)=>(i=r.call(o,i),c=i.done,Promise.resolve(i.value).then(l=>s({value:l,done:c}),a)))),t("next"),t("return"),e);import{trace as Rt}from"@opentelemetry/api";function $(o={}){return x({stateDelta:{},artifactDelta:{},requestedAuthConfigs:{},requestedToolConfirmations:{}},o)}function xt(o,e){let t=$();e&&Object.assign(t,e);for(let n of o)n&&(n.stateDelta&&Object.assign(t.stateDelta,n.stateDelta),n.artifactDelta&&Object.assign(t.artifactDelta,n.artifactDelta),n.requestedAuthConfigs&&Object.assign(t.requestedAuthConfigs,n.requestedAuthConfigs),n.requestedToolConfirmations&&Object.assign(t.requestedToolConfirmations,n.requestedToolConfirmations),n.skipSummarization!==void 0&&(t.skipSummarization=n.skipSummarization),n.transferToAgent!==void 0&&(t.transferToAgent=n.transferToAgent),n.escalate!==void 0&&(t.escalate=n.escalate));return t}function S(o={}){return te(x({},o),{id:o.id||Le(),invocationId:o.invocationId||"",author:o.author,actions:o.actions||$(),longRunningToolIds:o.longRunningToolIds||[],branch:o.branch,timestamp:o.timestamp||Date.now()})}function ne(o){return o.actions.skipSummarization||o.longRunningToolIds&&o.longRunningToolIds.length>0?!0:L(o).length===0&&M(o).length===0&&!o.partial&&!bt(o)}function L(o){let e=[];if(o.content&&o.content.parts)for(let t of o.content.parts)t.functionCall&&e.push(t.functionCall);return e}function M(o){let e=[];if(o.content&&o.content.parts)for(let t of o.content.parts)t.functionResponse&&e.push(t.functionResponse);return e}function bt(o){var e;return o.content&&((e=o.content.parts)!=null&&e.length)?o.content.parts[o.content.parts.length-1].codeExecutionResult!==void 0:!1}function yn(o){var e;return(e=o.content)!=null&&e.parts?o.content.parts.map(t=>{var n;return(n=t.text)!=null?n:""}).join(""):""}var Et="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";function Le(){let o="";for(let e=0;e<8;e++)o+=Et[Math.floor(Math.random()*Et.length)];return o}var b=class{constructor(e={},t={}){this.value=e;this.delta=t}get(e,t){return e in this.delta?this.delta[e]:e in this.value?this.value[e]:t}set(e,t){this.value[e]=t,this.delta[e]=t}has(e){return e in this.value||e in this.delta}hasDelta(){return Object.keys(this.delta).length>0}update(e){this.delta=x(x({},this.delta),e),this.value=x(x({},this.value),e)}toRecord(){return x(x({},this.value),this.delta)}};b.APP_PREFIX="app:",b.USER_PREFIX="user:",b.TEMP_PREFIX="temp:";var _=class{constructor(e){this.invocationContext=e}get userContent(){return this.invocationContext.userContent}get invocationId(){return this.invocationContext.invocationId}get agentName(){return this.invocationContext.agent.name}get state(){return new b(this.invocationContext.session.state,{})}};var N=class extends _{constructor({invocationContext:e,eventActions:t}){super(e),this.eventActions=t||$(),this._state=new b(e.session.state,this.eventActions.stateDelta)}get state(){return this._state}loadArtifact(e,t){if(!this.invocationContext.artifactService)throw new Error("Artifact service is not initialized.");return this.invocationContext.artifactService.loadArtifact({appName:this.invocationContext.appName,userId:this.invocationContext.userId,sessionId:this.invocationContext.session.id,filename:e,version:t})}async saveArtifact(e,t){if(!this.invocationContext.artifactService)throw new Error("Artifact service is not initialized.");let n=await this.invocationContext.artifactService.saveArtifact({appName:this.invocationContext.appName,userId:this.invocationContext.userId,sessionId:this.invocationContext.session.id,filename:e,artifact:t});return this.eventActions.artifactDelta[e]=n,n}};function ge(){return typeof window<"u"}var me="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function oe(){let o="";for(let e=0;e<me.length;e++){let t=Math.random()*16|0;me[e]==="x"?o+=t.toString(16):me[e]==="y"?o+=(t&3|8).toString(16):o+=me[e]}return o}function Tt(o){return ge()?window.atob(o):Buffer.from(o,"base64").toString()}var Pe=class{constructor(){this.numberOfLlmCalls=0}incrementAndEnforceLlmCallsLimit(e){if(this.numberOfLlmCalls++,e&&e.maxLlmCalls>0&&this.numberOfLlmCalls>e.maxLlmCalls)throw new Error("Max number of llm calls limit of ".concat(e.maxLlmCalls," exceeded"))}},G=class{constructor(e){this.invocationCostManager=new Pe;this.artifactService=e.artifactService,this.sessionService=e.sessionService,this.memoryService=e.memoryService,this.invocationId=e.invocationId,this.branch=e.branch,this.agent=e.agent,this.userContent=e.userContent,this.session=e.session,this.endInvocation=e.endInvocation||!1,this.transcriptionCache=e.transcriptionCache,this.runConfig=e.runConfig,this.liveRequestQueue=e.liveRequestQueue,this.activeStreamingTools=e.activeStreamingTools,this.pluginManager=e.pluginManager}get appName(){return this.session.appName}get userId(){return this.session.userId}incrementLlmCallCount(){this.invocationCostManager.incrementAndEnforceLlmCallsLimit(this.runConfig)}};function St(){return"e-".concat(oe())}var _e=Symbol.for("google.adk.baseAgent");function An(o){return typeof o=="object"&&o!==null&&_e in o&&o[_e]===!0}var wt;wt=_e;var O=class{constructor(e){this[wt]=!0;this.name=xn(e.name),this.description=e.description,this.parentAgent=e.parentAgent,this.subAgents=e.subAgents||[],this.rootAgent=bn(this),this.beforeAgentCallback=It(e.beforeAgentCallback),this.afterAgentCallback=It(e.afterAgentCallback),this.setParentAgentForSubAgents()}runAsync(e){return g(this,null,function*(){let t=Rt.getTracer("gcp.vertex.agent").startSpan("agent_run [".concat(this.name,"]"));try{let a=this.createInvocationContext(e),c=yield new u(this.handleBeforeAgentCallback(a));if(c&&(yield c),a.endInvocation)return;try{for(var n=E(this.runAsyncImpl(a)),r,i,s;r=!(i=yield new u(n.next())).done;r=!1){let d=i.value;yield d}}catch(i){s=[i]}finally{try{r&&(i=n.return)&&(yield new u(i.call(n)))}finally{if(s)throw s[0]}}if(a.endInvocation)return;let l=yield new u(this.handleAfterAgentCallback(a));l&&(yield l)}finally{t.end()}})}runLive(e){return g(this,null,function*(){let t=Rt.getTracer("gcp.vertex.agent").startSpan("agent_run [".concat(this.name,"]"));try{throw new Error("Live mode is not implemented yet.")}finally{t.end()}})}findAgent(e){return this.name===e?this:this.findSubAgent(e)}findSubAgent(e){for(let t of this.subAgents){let n=t.findAgent(e);if(n)return n}}createInvocationContext(e){return new G(te(x({},e),{agent:this}))}async handleBeforeAgentCallback(e){if(this.beforeAgentCallback.length===0)return;let t=new N({invocationContext:e});for(let n of this.beforeAgentCallback){let r=await n(t);if(r)return e.endInvocation=!0,S({invocationId:e.invocationId,author:this.name,branch:e.branch,content:r,actions:t.eventActions})}if(t.state.hasDelta())return S({invocationId:e.invocationId,author:this.name,branch:e.branch,actions:t.eventActions})}async handleAfterAgentCallback(e){if(this.afterAgentCallback.length===0)return;let t=new N({invocationContext:e});for(let n of this.afterAgentCallback){let r=await n(t);if(r)return S({invocationId:e.invocationId,author:this.name,branch:e.branch,content:r,actions:t.eventActions})}if(t.state.hasDelta())return S({invocationId:e.invocationId,author:this.name,branch:e.branch,actions:t.eventActions})}setParentAgentForSubAgents(){for(let e of this.subAgents){if(e.parentAgent)throw new Error('Agent "'.concat(e.name,'" already has a parent agent, current parent: "').concat(e.parentAgent.name,'", trying to add: "').concat(this.name,'"'));e.parentAgent=this}}};function xn(o){if(!En(o))throw new Error('Found invalid agent name: "'.concat(o,'". Agent name must be a valid identifier. It should start with a letter (a-z, A-Z) or an underscore (_), and can only contain letters, digits (0-9), and underscores.'));if(o==="user")throw new Error("Agent name cannot be 'user'. 'user' is reserved for end-user's input.");return o}function En(o){return new RegExp("^[\\p{ID_Start}$_][\\p{ID_Continue}$_]*$","u").test(o)}function bn(o){for(;o.parentAgent;)o=o.parentAgent;return o}function It(o){return o?Array.isArray(o)?o:[o]:[]}import{createUserContent as wn}from"@google/genai";import{isEmpty as Lt}from"lodash";var le=class{constructor(e){this.authConfig=e}getAuthResponse(e){let t="temp:"+this.authConfig.credentialKey;return e.get(t)}generateAuthRequest(){var t,n;let e=this.authConfig.authScheme.type;if(!["oauth2","openIdConnect"].includes(e))return this.authConfig;if((n=(t=this.authConfig.exchangedAuthCredential)==null?void 0:t.oauth2)!=null&&n.authUri)return this.authConfig;if(!this.authConfig.rawAuthCredential)throw new Error("Auth Scheme ".concat(e," requires authCredential."));if(!this.authConfig.rawAuthCredential.oauth2)throw new Error("Auth Scheme ".concat(e," requires oauth2 in authCredential."));if(this.authConfig.rawAuthCredential.oauth2.authUri)return{credentialKey:this.authConfig.credentialKey,authScheme:this.authConfig.authScheme,rawAuthCredential:this.authConfig.rawAuthCredential,exchangedAuthCredential:this.authConfig.rawAuthCredential};if(!this.authConfig.rawAuthCredential.oauth2.clientId||!this.authConfig.rawAuthCredential.oauth2.clientSecret)throw new Error("Auth Scheme ".concat(e," requires both clientId and clientSecret in authCredential.oauth2."));return{credentialKey:this.authConfig.credentialKey,authScheme:this.authConfig.authScheme,rawAuthCredential:this.authConfig.rawAuthCredential,exchangedAuthCredential:this.generateAuthUri()}}generateAuthUri(){return this.authConfig.rawAuthCredential}};var z=class{constructor({hint:e,confirmed:t,payload:n}){this.hint=e!=null?e:"",this.confirmed=t,this.payload=n}};var Z=class extends N{constructor({invocationContext:e,eventActions:t,functionCallId:n,toolConfirmation:r}){super({invocationContext:e,eventActions:t}),this.functionCallId=n,this.toolConfirmation=r}get actions(){return this.eventActions}requestCredential(e){if(!this.functionCallId)throw new Error("functionCallId is not set.");let t=new le(e);this.eventActions.requestedAuthConfigs[this.functionCallId]=t.generateAuthRequest()}getAuthResponse(e){return new le(e).getAuthResponse(this.state)}listArtifacts(){if(!this.invocationContext.artifactService)throw new Error("Artifact service is not initialized.");return this.invocationContext.artifactService.listArtifactKeys({appName:this.invocationContext.session.appName,userId:this.invocationContext.session.userId,sessionId:this.invocationContext.session.id})}searchMemory(e){if(!this.invocationContext.memoryService)throw new Error("Memory service is not initialized.");return this.invocationContext.memoryService.searchMemory({appName:this.invocationContext.session.appName,userId:this.invocationContext.session.userId,query:e})}requestConfirmation({hint:e,payload:t}){if(!this.functionCallId)throw new Error("functionCallId is not set.");this.eventActions.requestedToolConfirmations[this.functionCallId]=new z({hint:e,confirmed:!1,payload:t})}};var kt=(r=>(r[r.DEBUG=0]="DEBUG",r[r.INFO=1]="INFO",r[r.WARN=2]="WARN",r[r.ERROR=3]="ERROR",r))(kt||{}),re=1;function Tn(o){re=o}var Be=class{log(e,...t){if(!(e<re))switch(e){case 0:this.debug(...t);break;case 1:this.info(...t);break;case 2:this.warn(...t);break;case 3:this.error(...t);break;default:throw new Error("Unsupported log level: ".concat(e))}}debug(...e){re>0||console.debug(he(0),...e)}info(...e){re>1||console.info(he(1),...e)}warn(...e){re>2||console.warn(he(2),...e)}error(...e){re>3||console.error(he(3),...e)}},Sn={0:"DEBUG",1:"INFO",2:"WARN",3:"ERROR"},Rn={0:"\x1B[34m",1:"\x1B[32m",2:"\x1B[33m",3:"\x1B[31m"},In="\x1B[0m";function he(o){return"".concat(Rn[o],"[ADK ").concat(Sn[o],"]:").concat(In)}var v=new Be;var Me="adk-",Ce="adk_request_credential",ie="adk_request_confirmation",kn={handleFunctionCallList:ve,generateAuthEvent:Fe,generateRequestConfirmationEvent:Oe};function Ne(){return"".concat(Me).concat(oe())}function Pt(o){let e=L(o);if(e)for(let t of e)t.id||(t.id=Ne())}function _t(o){if(o&&o.parts)for(let e of o.parts)e.functionCall&&e.functionCall.id&&e.functionCall.id.startsWith(Me)&&(e.functionCall.id=void 0),e.functionResponse&&e.functionResponse.id&&e.functionResponse.id.startsWith(Me)&&(e.functionResponse.id=void 0)}function Bt(o,e){let t=new Set;for(let n of o)n.name&&n.name in e&&e[n.name].isLongRunning&&n.id&&t.add(n.id);return t}function Fe(o,e){var r;if(!((r=e.actions)!=null&&r.requestedAuthConfigs)||Lt(e.actions.requestedAuthConfigs))return;let t=[],n=new Set;for(let[i,s]of Object.entries(e.actions.requestedAuthConfigs)){let a={name:Ce,args:{function_call_id:i,auth_config:s},id:Ne()};n.add(a.id),t.push({functionCall:a})}return S({invocationId:o.invocationId,author:o.agent.name,branch:o.branch,content:{parts:t,role:e.content.role},longRunningToolIds:Array.from(n)})}function Oe({invocationContext:o,functionCallEvent:e,functionResponseEvent:t}){var s,a;if(!((s=t.actions)!=null&&s.requestedToolConfirmations)||Lt(t.actions.requestedToolConfirmations))return;let n=[],r=new Set,i=L(e);for(let[c,l]of Object.entries(t.actions.requestedToolConfirmations)){let d=(a=i.find(m=>m.id===c))!=null?a:void 0;if(!d)continue;let f={name:ie,args:{originalFunctionCall:d,toolConfirmation:l},id:Ne()};r.add(f.id),n.push({functionCall:f})}return S({invocationId:o.invocationId,author:o.agent.name,branch:o.branch,content:{parts:n,role:t.content.role},longRunningToolIds:Array.from(r)})}async function Ln(o,e,t){return v.debug("callToolAsync ".concat(o.name)),await o.runAsync({args:e,toolContext:t})}async function Mt({invocationContext:o,functionCallEvent:e,toolsDict:t,beforeToolCallbacks:n,afterToolCallbacks:r,filters:i,toolConfirmationDict:s}){let a=L(e);return await ve({invocationContext:o,functionCalls:a,toolsDict:t,beforeToolCallbacks:n,afterToolCallbacks:r,filters:i,toolConfirmationDict:s})}async function ve({invocationContext:o,functionCalls:e,toolsDict:t,beforeToolCallbacks:n,afterToolCallbacks:r,filters:i,toolConfirmationDict:s}){var d;let a=[],c=e.filter(f=>!i||f.id&&i.has(f.id));for(let f of c){let m;s&&f.id&&(m=s[f.id]);let{tool:C,toolContext:h}=Pn({invocationContext:o,functionCall:f,toolsDict:t,toolConfirmation:m});v.debug("execute_tool ".concat(C.name));let y=(d=f.args)!=null?d:{},p=null,A;if(p=await o.pluginManager.runBeforeToolCallback({tool:C,toolArgs:y,toolContext:h}),p==null){for(let k of n)if(p=await k({tool:C,args:y,context:h}),p)break}if(p==null)try{p=await Ln(C,y,h)}catch(k){if(k instanceof Error){let B=await o.pluginManager.runOnToolErrorCallback({tool:C,toolArgs:y,toolContext:h,error:k});B?p=B:A=k.message}else A=k}let I=await o.pluginManager.runAfterToolCallback({tool:C,toolArgs:y,toolContext:h,result:p});if(I==null){for(let k of r)if(I=await k({tool:C,args:y,context:h,response:p}),I)break}if(I!=null&&(p=I),C.isLongRunning&&!p)continue;A?p={error:A}:(typeof p!="object"||p==null)&&(p={result:p});let w=S({invocationId:o.invocationId,author:o.agent.name,content:wn({functionResponse:{id:h.functionCallId,name:C.name,response:p}}),actions:h.actions,branch:o.branch});v.debug("traceToolCall",{tool:C.name,args:y,functionResponseEvent:w.id}),a.push(w)}if(!a.length)return null;let l=_n(a);return a.length>1&&(v.debug("execute_tool (merged)"),v.debug("traceMergedToolCalls",{responseEventId:l.id,functionResponseEvent:l.id})),l}function Pn({invocationContext:o,functionCall:e,toolsDict:t,toolConfirmation:n}){if(!e.name||!(e.name in t))throw new Error("Function ".concat(e.name," is not found in the toolsDict."));let r=new Z({invocationContext:o,functionCallId:e.id||void 0,toolConfirmation:n});return{tool:t[e.name],toolContext:r}}function _n(o){if(!o.length)throw new Error("No function response events provided.");if(o.length===1)return o[0];let e=[];for(let i of o)i.content&&i.content.parts&&e.push(...i.content.parts);let t=o[0],n=o.map(i=>i.actions||{}),r=xt(n);return S({author:t.author,branch:t.branch,content:{role:"user",parts:e},actions:r,timestamp:t.timestamp})}var De=class{constructor(){this.queue=[];this.resolveFnFifoQueue=[];this.isClosed=!1}send(e){if(this.isClosed)throw new Error("Cannot send to a closed queue.");this.resolveFnFifoQueue.length>0?this.resolveFnFifoQueue.shift()(e):this.queue.push(e)}async get(){return this.queue.length>0?this.queue.shift():this.isClosed?{close:!0}:new Promise(e=>{this.resolveFnFifoQueue.push(e)})}close(){if(this.isClosed)return;for(this.isClosed=!0;this.resolveFnFifoQueue.length>0&&this.queue.length>0;){let t=this.resolveFnFifoQueue.shift(),n=this.queue.shift();t(n)}let e={close:!0};for(;this.resolveFnFifoQueue.length>0;)this.resolveFnFifoQueue.shift()(e)}sendContent(e){this.send({content:e})}sendRealtime(e){this.send({blob:e})}sendActivityStart(){this.send({activityStart:{}})}sendActivityEnd(){this.send({activityEnd:{}})}[Symbol.asyncIterator](){return g(this,null,function*(){for(;;){let e=yield new u(this.get());if(yield e,e.close)break}})}};import{cloneDeep as tn}from"lodash";import{z as nn}from"zod";var V=class{constructor(){this.optimizeDataFile=!1;this.stateful=!1;this.errorRetryAttempts=2;this.codeBlockDelimiters=[["```tool_code\n","\n```"],["```python\n","\n```"]];this.executionResultDelimiters=["```tool_output\n","\n```"]}};var Bn="^projects/[^/]+/locations/[^/]+/publishers/[^/]+/models/(.+)$";function $e(o){let e=o.match(Bn);return e?e[1]:o}function Nt(o){return $e(o).startsWith("gemini-")}function Ft(o){return $e(o).startsWith("gemini-1")}function Ot(o){return $e(o).startsWith("gemini-2")}var q=class extends V{executeCode(e){return Promise.resolve({stdout:"",stderr:"",outputFiles:[]})}processLlmRequest(e){if(e.model&&Ot(e.model)){e.config=e.config||{},e.config.tools=e.config.tools||[],e.config.tools.push({codeExecution:{}});return}throw new Error("Gemini code execution tool is not supported for model ".concat(e.model))}};import{Language as Mn,Outcome as Dt}from"@google/genai";import{cloneDeep as Nn}from"lodash";function $t(o,e){var d;if(!((d=o.parts)!=null&&d.length))return"";for(let f=0;f<o.parts.length;f++){let m=o.parts[f];if(m.executableCode&&(f===o.parts.length-1||!o.parts[f+1].codeExecutionResult))return o.parts=o.parts.slice(0,f+1),m.executableCode.code}let t=o.parts.filter(f=>f.text);if(!t.length)return"";let n=Nn(t[0]),r=t.map(f=>f.text).join("\n"),i=e.map(f=>f[0]).join("|"),s=e.map(f=>f[1]).join("|"),a=new RegExp("?<prefix>.*?)(".concat(i,")(?<codeStr>.*?)(").concat(s,")(?<suffix>.*?)$"),"s").exec(r),{prefix:c,codeStr:l}=(a==null?void 0:a.groups)||{};return l?(o.parts=[],c&&(n.text=c,o.parts.push(n)),o.parts.push(Ge(l)),l):""}function Ge(o){return{text:o,executableCode:{code:o,language:Mn.PYTHON}}}function Gt(o){if(o.stderr)return{text:o.stderr,codeExecutionResult:{outcome:Dt.OUTCOME_FAILED}};let e=[];return(o.stdout||!o.outputFiles)&&e.push("Code execution result:\n".concat(o.stdout,"\n")),o.outputFiles&&e.push("Saved artifacts:\n"+o.outputFiles.map(t=>t.name).join(", ")),{text:e.join("\n\n"),codeExecutionResult:{outcome:Dt.OUTCOME_OK}}}function qt(o,e,t){var r;if(!((r=o.parts)!=null&&r.length))return;let n=o.parts[o.parts.length-1];n.executableCode?o.parts[o.parts.length-1]={text:e[0]+n.executableCode.code+e[1]}:o.parts.length==1&&n.codeExecutionResult&&(o.parts[o.parts.length-1]={text:t[0]+n.codeExecutionResult.output+t[1]},o.role="user")}import{cloneDeep as Fn}from"lodash";var qe="_code_execution_context",Ue="execution_session_id",W="processed_input_files",Q="_code_executor_input_files",Y="_code_executor_error_counts",je="_code_execution_results",ue=class{constructor(e){this.sessionState=e;var t;this.context=(t=e.get(qe))!=null?t:{},this.sessionState=e}getStateDelta(){return{[qe]:Fn(this.context)}}getExecutionId(){if(Ue in this.context)return this.context[Ue]}setExecutionId(e){this.context[Ue]=e}getProcessedFileNames(){return W in this.context?this.context[W]:[]}addProcessedFileNames(e){W in this.context||(this.context[W]=[]),this.context[W].push(...e)}getInputFiles(){return Q in this.sessionState?this.sessionState.get(Q):[]}addInputFiles(e){Q in this.sessionState||this.sessionState.set(Q,[]),this.sessionState.get(Q).push(...e)}clearInputFiles(){Q in this.sessionState&&this.sessionState.set(Q,[]),W in this.context&&(this.context[W]=[])}getErrorCount(e){return Y in this.sessionState&&this.sessionState.get(Y)[e]||0}incrementErrorCount(e){Y in this.sessionState||this.sessionState.set(Y,{}),this.sessionState.get(Y)[e]=this.getErrorCount(e)+1}resetErrorCount(e){if(!(Y in this.sessionState))return;let t=this.sessionState.get(Y);e in t&&delete t[e]}updateCodeExecutionResult({invocationId:e,code:t,resultStdout:n,resultStderr:r}){je in this.sessionState||this.sessionState.set(je,{});let i=this.sessionState.get(je);e in i||(i[e]=[]),i[e].push({code:t,resultStdout:n,resultStderr:r,timestamp:Date.now()})}getCodeExecutionContext(e){return this.sessionState.get(qe)||{}}};var Ke="0.2.2";var On="google-adk",Dn="gl-typescript",$n="remote_reasoning_engine",Gn="GOOGLE_CLOUD_AGENT_ENGINE_ID";function qn(){let o="".concat(On,"/").concat(Ke);!ge()&&process.env[Gn]&&(o="".concat(o,"+").concat($n));let e="".concat(Dn,"/").concat(ge()?window.navigator.userAgent:process.version);return[o,e]}function Ut(){return qn()}var Ze=Symbol.for("google.adk.baseModel");function Ve(o){return typeof o=="object"&&o!==null&&Ze in o&&o[Ze]===!0}var jt;jt=Ze;var se=class{constructor({model:e}){this[jt]=!0;this.model=e}get trackingHeaders(){let t=Ut().join(" ");return{"x-goog-api-client":t,"user-agent":t}}maybeAppendUserContent(e){var t;e.contents.length===0&&e.contents.push({role:"user",parts:[{text:"Handle the requests as specified in the System Instruction."}]}),((t=e.contents[e.contents.length-1])==null?void 0:t.role)!=="user"&&e.contents.push({role:"user",parts:[{text:"Continue processing previous requests as instructed. Exit or provide a summary if no more outputs are needed."}]})}};se.supportedModels=[];function fe(o,e){o.config||(o.config={});let t=e.join("\n\n");o.config.systemInstruction?o.config.systemInstruction+="\n\n"+t:o.config.systemInstruction=t}function Kt(o,e){o.config||(o.config={}),o.config.responseSchema=e,o.config.responseMimeType="application/json"}import{createPartFromText as Vt,FinishReason as Kn,GoogleGenAI as We}from"@google/genai";function Zt(){return Un("GOOGLE_GENAI_USE_VERTEXAI")?"VERTEX_AI":"GEMINI_API"}function Un(o){if(!process.env)return!1;let e=(process.env[o]||"").toLowerCase();return["true","1"].includes(o.toLowerCase())}var ye=class{constructor(e){this.geminiSession=e}async sendHistory(e){let t=e.filter(n=>{var r;return n.parts&&((r=n.parts[0])==null?void 0:r.text)});t.length>0?this.geminiSession.sendClientContent({turns:t,turnComplete:t[t.length-1].role==="user"}):v.info("no content is sent")}async sendContent(e){if(!e.parts)throw new Error("Content must have parts.");if(e.parts[0].functionResponse){let t=e.parts.map(n=>n.functionResponse).filter(n=>!!n);v.debug("Sending LLM function response:",t),this.geminiSession.sendToolResponse({functionResponses:t})}else v.debug("Sending LLM new content",e),this.geminiSession.sendClientContent({turns:[e],turnComplete:!0})}async sendRealtime(e){v.debug("Sending LLM Blob:",e),this.geminiSession.sendRealtimeInput({media:e})}buildFullTextResponse(e){return{content:{role:"model",parts:[{text:e}]}}}receive(){return g(this,null,function*(){throw new Error("Not Implemented.")})}async close(){this.geminiSession.close()}};function ze(o){var t;let e=o.usageMetadata;if(o.candidates&&o.candidates.length>0){let n=o.candidates[0];return(t=n.content)!=null&&t.parts&&n.content.parts.length>0?{content:n.content,groundingMetadata:n.groundingMetadata,usageMetadata:e,finishReason:n.finishReason}:{errorCode:n.finishReason,errorMessage:n.finishMessage,usageMetadata:e,finishReason:n.finishReason}}return o.promptFeedback?{errorCode:o.promptFeedback.blockReason,errorMessage:o.promptFeedback.blockReasonMessage,usageMetadata:e}:{errorCode:"UNKNOWN_ERROR",errorMessage:"Unknown error.",usageMetadata:e}}var ae=class extends se{constructor({model:e,apiKey:t,vertexai:n,project:r,location:i,headers:s}){e||(e="gemini-2.5-flash"),super({model:e}),this.project=r,this.location=i,this.apiKey=t,this.headers=s;let a=typeof process=="object";if(this.vertexai=!!n,!this.vertexai&&a){let c=process.env.GOOGLE_GENAI_USE_VERTEXAI;c&&(this.vertexai=c.toLowerCase()==="true"||c==="1")}if(this.vertexai){if(a&&!this.project&&(this.project=process.env.GOOGLE_CLOUD_PROJECT),a&&!this.location&&(this.location=process.env.GOOGLE_CLOUD_LOCATION),!this.project)throw new Error("VertexAI project must be provided via constructor or GOOGLE_CLOUD_PROJECT environment variable.");if(!this.location)throw new Error("VertexAI location must be provided via constructor or GOOGLE_CLOUD_LOCATION environment variable.")}else if(!this.apiKey&&a&&(this.apiKey=process.env.GOOGLE_GENAI_API_KEY||process.env.GEMINI_API_KEY),!this.apiKey)throw new Error("API key must be provided via constructor or GOOGLE_GENAI_API_KEY or GEMINI_API_KEY environment variable.")}generateContentAsync(e,t=!1){return g(this,null,function*(){var n,r,i,s,f,m,C;if(this.preprocessRequest(e),this.maybeAppendUserContent(e),v.info("Sending out request, model: ".concat(e.model,", backend: ").concat(this.apiBackend,", stream: ").concat(t)),(n=e.config)!=null&&n.httpOptions&&(e.config.httpOptions.headers=x(x({},e.config.httpOptions.headers),this.trackingHeaders)),t){let h=yield new u(this.apiClient.models.generateContentStream({model:(r=e.model)!=null?r:this.model,contents:e.contents,config:e.config})),y="",p="",A,I;try{for(var a=E(h),c,l,d;c=!(l=yield new u(a.next())).done;c=!1){let w=l.value;I=w;let k=ze(w);A=k.usageMetadata;let B=(s=(i=k.content)==null?void 0:i.parts)==null?void 0:s[0];if(B!=null&&B.text)"thought"in B&&B.thought?y+=B.text:p+=B.text,k.partial=!0;else if((y||p)&&(!B||!B.inlineData)){let we=[];y&&we.push({text:y,thought:!0}),p&&we.push(Vt(p)),yield{content:{role:"model",parts:we},usageMetadata:k.usageMetadata},y="",p=""}yield k}}catch(l){d=[l]}finally{try{c&&(l=a.return)&&(yield new u(l.call(a)))}finally{if(d)throw d[0]}}if((p||y)&&((m=(f=I==null?void 0:I.candidates)==null?void 0:f[0])==null?void 0:m.finishReason)===Kn.STOP){let w=[];y&&w.push({text:y,thought:!0}),p&&w.push({text:p}),yield{content:{role:"model",parts:w},usageMetadata:A}}}else{let h=yield new u(this.apiClient.models.generateContent({model:(C=e.model)!=null?C:this.model,contents:e.contents,config:e.config}));yield ze(h)}})}get apiClient(){if(this._apiClient)return this._apiClient;let e=x(x({},this.trackingHeaders),this.headers);return this.vertexai?this._apiClient=new We({vertexai:this.vertexai,project:this.project,location:this.location,httpOptions:{headers:e}}):this._apiClient=new We({apiKey:this.apiKey,httpOptions:{headers:e}}),this._apiClient}get apiBackend(){return this._apiBackend||(this._apiBackend=this.apiClient.vertexai?"VERTEX_AI":"GEMINI_API"),this._apiBackend}get liveApiVersion(){return this._liveApiVersion||(this._liveApiVersion=this.apiBackend==="VERTEX_AI"?"v1beta1":"v1alpha"),this._liveApiVersion}get liveApiClient(){return this._liveApiClient||(this._liveApiClient=new We({apiKey:this.apiKey,httpOptions:{headers:this.trackingHeaders,apiVersion:this.liveApiVersion}})),this._liveApiClient}async connect(e){var n,r,i,s;(n=e.liveConnectConfig)!=null&&n.httpOptions&&(e.liveConnectConfig.httpOptions.headers||(e.liveConnectConfig.httpOptions.headers={}),Object.assign(e.liveConnectConfig.httpOptions.headers,this.trackingHeaders),e.liveConnectConfig.httpOptions.apiVersion=this.liveApiVersion),(r=e.config)!=null&&r.systemInstruction&&(e.liveConnectConfig.systemInstruction={role:"system",parts:[Vt(e.config.systemInstruction)]}),e.liveConnectConfig.tools=(i=e.config)==null?void 0:i.tools;let t=await this.liveApiClient.live.connect({model:(s=e.model)!=null?s:this.model,config:e.liveConnectConfig,callbacks:{onmessage:()=>{}}});return new ye(t)}preprocessRequest(e){if(this.apiBackend==="GEMINI_API"&&(e.config&&(e.config.labels=void 0),e.contents)){for(let t of e.contents)if(t.parts)for(let n of t.parts)zt(n.inlineData),zt(n.fileData)}}};ae.supportedModels=[/gemini-.*/,/projects\/.+\/locations\/.+\/endpoints\/.+/,/projects\/.+\/locations\/.+\/publishers\/google\/models\/gemini.+/];function zt(o){o&&o.displayName&&(o.displayName=void 0)}var Qe=class{constructor(e){this.maxSize=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){if(this.cache.size>=this.maxSize&&!this.cache.has(e)){let n=this.cache.keys().next().value;n!==void 0&&this.cache.delete(n)}this.cache.set(e,t)}},F=class F{static newLlm(e){return new(F.resolve(e))({model:e})}static _register(e,t){F.llmRegistryDict.has(e)&&v.info("Updating LLM class for ".concat(e," from ").concat(F.llmRegistryDict.get(e)," to ").concat(t)),F.llmRegistryDict.set(e,t)}static register(e){for(let t of e.supportedModels)F._register(t,e)}static resolve(e){let t=F.resolveCache.get(e);if(t)return t;for(let[n,r]of F.llmRegistryDict.entries())if(new RegExp("^".concat(n instanceof RegExp?n.source:n,"$"),n instanceof RegExp?n.flags:void 0).test(e))return F.resolveCache.set(e,r),r;throw new Error("Model ".concat(e," not found."))}};F.llmRegistryDict=new Map,F.resolveCache=new Qe(32);var ce=F;ce.register(ae);var D=class{constructor(e){var t;this.name=e.name,this.description=e.description,this.isLongRunning=(t=e.isLongRunning)!=null?t:!1}_getDeclaration(){}async processLlmRequest({toolContext:e,llmRequest:t}){let n=this._getDeclaration();if(!n)return;t.toolsDict[this.name]=this;let r=Zn(t);r?(r.functionDeclarations||(r.functionDeclarations=[]),r.functionDeclarations.push(n)):(t.config=t.config||{},t.config.tools=t.config.tools||[],t.config.tools.push({functionDeclarations:[n]}))}get apiVariant(){return Zt()}};function Zn(o){var e;return(((e=o.config)==null?void 0:e.tools)||[]).find(t=>"functionDeclarations"in t)}import{Type as Vn}from"@google/genai";import{ZodObject as zn}from"zod";import{Type as P}from"@google/genai";import{z as R}from"zod";function Wt(o){var e;return o!==null&&typeof o=="object"&&((e=o._def)==null?void 0:e.typeName)==="ZodObject"}function U(o){let e=o._def;if(!e)return{};let t=e.description,n={};t&&(n.description=t);let r=i=>(i.description===void 0&&delete i.description,i);switch(e.typeName){case R.ZodFirstPartyTypeKind.ZodString:n.type=P.STRING;for(let c of e.checks||[])c.kind==="min"?n.minLength=c.value.toString():c.kind==="max"?n.maxLength=c.value.toString():c.kind==="email"?n.format="email":c.kind==="uuid"?n.format="uuid":c.kind==="url"?n.format="uri":c.kind==="regex"&&(n.pattern=c.regex.source);return r(n);case R.ZodFirstPartyTypeKind.ZodNumber:n.type=P.NUMBER;for(let c of e.checks||[])c.kind==="min"?n.minimum=c.value:c.kind==="max"?n.maximum=c.value:c.kind==="int"&&(n.type=P.INTEGER);return r(n);case R.ZodFirstPartyTypeKind.ZodBoolean:return n.type=P.BOOLEAN,r(n);case R.ZodFirstPartyTypeKind.ZodArray:return n.type=P.ARRAY,n.items=U(e.type),e.minLength&&(n.minItems=e.minLength.value.toString()),e.maxLength&&(n.maxItems=e.maxLength.value.toString()),r(n);case R.ZodFirstPartyTypeKind.ZodObject:return Ae(o);case R.ZodFirstPartyTypeKind.ZodLiteral:let i=typeof e.value;if(n.enum=[e.value.toString()],i==="string")n.type=P.STRING;else if(i==="number")n.type=P.NUMBER;else if(i==="boolean")n.type=P.BOOLEAN;else if(e.value===null)n.type=P.NULL;else throw new Error("Unsupported ZodLiteral value type: ".concat(i));return r(n);case R.ZodFirstPartyTypeKind.ZodEnum:return n.type=P.STRING,n.enum=e.values,r(n);case R.ZodFirstPartyTypeKind.ZodNativeEnum:return n.type=P.STRING,n.enum=Object.values(e.values),r(n);case R.ZodFirstPartyTypeKind.ZodUnion:return n.anyOf=e.options.map(U),r(n);case R.ZodFirstPartyTypeKind.ZodOptional:return U(e.innerType);case R.ZodFirstPartyTypeKind.ZodNullable:let s=U(e.innerType);return r(s?x({anyOf:[s,{type:P.NULL}]},t&&{description:t}):x({type:P.NULL},t&&{description:t}));case R.ZodFirstPartyTypeKind.ZodDefault:let a=U(e.innerType);return a&&(a.default=e.defaultValue()),a;case R.ZodFirstPartyTypeKind.ZodBranded:return U(e.type);case R.ZodFirstPartyTypeKind.ZodReadonly:return U(e.innerType);case R.ZodFirstPartyTypeKind.ZodNull:return n.type=P.NULL,r(n);case R.ZodFirstPartyTypeKind.ZodAny:case R.ZodFirstPartyTypeKind.ZodUnknown:return r(x({},t&&{description:t}));default:throw new Error("Unsupported Zod type: ".concat(e.typeName))}}function Ae(o){if(o._def.typeName!==R.ZodFirstPartyTypeKind.ZodObject)throw new Error("Expected a ZodObject");let e=o.shape,t={},n=[];for(let s in e){let a=e[s],c=U(a);c&&(t[s]=c);let l=a,d=!1;for(;l._def.typeName===R.ZodFirstPartyTypeKind.ZodOptional||l._def.typeName===R.ZodFirstPartyTypeKind.ZodDefault;)d=!0,l=l._def.innerType;d||n.push(s)}let r=o._def.catchall,i=!1;return r&&r._def.typeName!==R.ZodFirstPartyTypeKind.ZodNever?i=U(r)||!0:i=o._def.unknownKeys==="passthrough",x({type:P.OBJECT,properties:t,required:n.length>0?n:[]},o._def.description?{description:o._def.description}:{})}function Wn(o){return o===void 0?{type:Vn.OBJECT,properties:{}}:Wt(o)?Ae(o):o}var j=class extends D{constructor(e){var n;let t=(n=e.name)!=null?n:e.execute.name;if(!t)throw new Error("Tool name cannot be empty. Either name the `execute` function or provide a `name`.");super({name:t,description:e.description,isLongRunning:e.isLongRunning}),this.execute=e.execute,this.parameters=e.parameters}_getDeclaration(){return{name:this.name,description:this.description,parameters:Wn(this.parameters)}}async runAsync(e){try{let t=e.args;return this.parameters instanceof zn&&(t=this.parameters.parse(e.args)),await this.execute(t,e.toolContext)}catch(t){let n=t instanceof Error?t.message:String(t);throw new Error("Error in tool '".concat(this.name,"': ").concat(n))}}};var K=class{};import{cloneDeep as Qn}from"lodash";function Ye(o,e,t){var s,a,c;let n=[];for(let l of o)!((s=l.content)!=null&&s.role)||((c=(a=l.content.parts)==null?void 0:a[0])==null?void 0:c.text)===""||t&&l.branch&&!t.startsWith(l.branch)||Yn(l)||Xn(l)||n.push(Xt(e,l)?Hn(l):l);let r=Jn(n);r=eo(r);let i=[];for(let l of r){let d=Qn(l.content);_t(d),i.push(d)}return i}function Yt(o,e,t){for(let n=o.length-1;n>=0;n--){let r=o[n];if(r.author==="user"||Xt(e,r))return Ye(o.slice(n),e,t)}return[]}function Yn(o){var e,t,n;if(!((e=o.content)!=null&&e.parts))return!1;for(let r of o.content.parts)if(((t=r.functionCall)==null?void 0:t.name)===Ce||((n=r.functionResponse)==null?void 0:n.name)===Ce)return!0;return!1}function Xn(o){var e,t,n;if(!((e=o.content)!=null&&e.parts))return!1;for(let r of o.content.parts)if(((t=r.functionCall)==null?void 0:t.name)===ie||((n=r.functionResponse)==null?void 0:n.name)===ie)return!0;return!1}function Xt(o,e){return!!o&&e.author!==o&&e.author!=="user"}function Hn(o){var t,n,r,i,s,a;if(!((n=(t=o.content)==null?void 0:t.parts)!=null&&n.length))return o;let e={role:"user",parts:[{text:"For context:"}]};for(let c of o.content.parts)if(c.text&&!c.thought)(r=e.parts)==null||r.push({text:"[".concat(o.author,"] said: ").concat(c.text)});else if(c.functionCall){let l=Qt(c.functionCall.args);(i=e.parts)==null||i.push({text:"[".concat(o.author,"] called tool `").concat(c.functionCall.name,"` with parameters: ").concat(l)})}else if(c.functionResponse){let l=Qt(c.functionResponse.response);(s=e.parts)==null||s.push({text:"[".concat(o.author,"] tool `").concat(c.functionResponse.name,"` returned result: ").concat(l)})}else(a=e.parts)==null||a.push(c);return S({invocationId:o.invocationId,author:"user",content:e,branch:o.branch,timestamp:o.timestamp})}function Ht(o){var r;if(o.length===0)throw new Error("Cannot merge an empty list of events.");let e=S(o[0]),t=((r=e.content)==null?void 0:r.parts)||[];if(t.length===0)throw new Error("There should be at least one function_response part.");let n={};for(let i=0;i<t.length;i++){let s=t[i];s.functionResponse&&s.functionResponse.id&&(n[s.functionResponse.id]=i)}for(let i of o.slice(1)){if(!i.content||!i.content.parts)throw new Error("There should be at least one function_response part.");for(let s of i.content.parts)if(s.functionResponse&&s.functionResponse.id){let a=s.functionResponse.id;a in n?t[n[a]]=s:(t.push(s),n[a]=t.length-1)}else t.push(s)}return e}function Jn(o){if(o.length===0)return o;let e=o[o.length-1],t=M(e);if(!(t!=null&&t.length))return o;let n=new Set(t.filter(c=>!!c.id).map(c=>c.id)),r=o.at(-2);if(r){let c=L(r);if(c){for(let l of c)if(l.id&&n.has(l.id))return o}}let i=-1;for(let c=o.length-2;c>=0;c--){let l=o[c],d=L(l);if(d!=null&&d.length){for(let f of d)if(f.id&&n.has(f.id)){i=c;let m=new Set(d.map(h=>h.id).filter(h=>!!h));if(!Array.from(n).every(h=>m.has(h)))throw new Error("Last response event should only contain the responses for the function calls in the same function call event. Function"+" call ids found : ".concat(Array.from(m).join(", "),", function response")+" ids provided: ".concat(Array.from(n).join(", ")));n=m;break}}}if(i===-1)throw new Error("No function call event found for function responses ids: ".concat(Array.from(n).join(", ")));let s=[];for(let c=i+1;c<o.length-1;c++){let l=o[c],d=M(l);d&&d.some(f=>f.id&&n.has(f.id))&&s.push(l)}s.push(o[o.length-1]);let a=o.slice(0,i+1);return a.push(Ht(s)),a}function eo(o){let e=new Map;for(let n=0;n<o.length;n++){let r=o[n],i=M(r);if(i!=null&&i.length)for(let s of i)s.id&&e.set(s.id,n)}let t=[];for(let n of o){if(M(n).length>0)continue;let r=L(n);if(r!=null&&r.length){let i=new Set;for(let s of r){let a=s.id;a&&e.has(a)&&i.add(e.get(a))}if(t.push(n),i.size===0)continue;if(i.size===1){let[s]=[...i];t.push(o[s])}else{let a=Array.from(i).sort((c,l)=>c-l).map(c=>o[c]);t.push(Ht(a))}}else t.push(n)}return t}function Qt(o){if(typeof o=="string")return o;try{return JSON.stringify(o)}catch(e){return String(o)}}async function Xe(o,e){let t=e.invocationContext;async function n(c){let l=c[0].replace(/^\{+/,"").replace(/\}+$/,"").trim(),d=l.endsWith("?");if(d&&(l=l.slice(0,-1)),l.startsWith("artifact.")){let f=l.substring(9);if(t.artifactService===void 0)throw new Error("Artifact service is not initialized.");let m=await t.artifactService.loadArtifact({appName:t.session.appName,userId:t.session.userId,sessionId:t.session.id,filename:f});if(!m)throw new Error("Artifact ".concat(f," not found."));return String(m)}if(!oo(l))return c[0];if(l in t.session.state)return String(t.session.state[l]);if(d)return"";throw new Error("Context variable not found: `".concat(l,"`."))}let r=/\{+[^{}]*}+/g,i=[],s=0,a=o.matchAll(r);for(let c of a){i.push(o.slice(s,c.index));let l=await n(c);i.push(l),s=c.index+c[0].length}return i.push(o.slice(s)),i.join("")}var to=/^[a-zA-Z_][a-zA-Z0-9_]*$/;function Jt(o){return o===""||o===void 0?!1:to.test(o)}var no=[b.APP_PREFIX,b.USER_PREFIX,b.TEMP_PREFIX];function oo(o){let e=o.split(":");return e.length===0||e.length>2?!1:e.length===1?Jt(o):no.includes(e[0]+":")?Jt(e[1]):!1}var He=(n=>(n.NONE="none",n.SSE="sse",n.BIDI="bidi",n))(He||{});function en(o={}){return x({saveInputBlobsAsArtifacts:!1,supportCfc:!1,enableAffectiveDialog:!1,streamingMode:"none",maxLlmCalls:ro(o.maxLlmCalls||500)},o)}function ro(o){if(o>Number.MAX_SAFE_INTEGER)throw new Error("maxLlmCalls should be less than ".concat(Number.MAX_SAFE_INTEGER,"."));return o<=0&&v.warn("maxLlmCalls is less than or equal to 0. This will result in no enforcement on total number of llm calls that will be made for a run. This may not be ideal, as this could result in a never ending communication between the model and the agent in certain cases."),o}var on="adk_agent_name";async function rn(o,e){return o instanceof D?[o]:await o.getTools(e)}var Je=class extends K{runAsync(e,t){return g(this,null,function*(){var r;let n=e.agent;n instanceof T&&(t.model=n.canonicalModel.model,t.config=x({},(r=n.generateContentConfig)!=null?r:{}),n.outputSchema&&Kt(t,n.outputSchema),e.runConfig&&(t.liveConnectConfig.responseModalities=e.runConfig.responseModalities,t.liveConnectConfig.speechConfig=e.runConfig.speechConfig,t.liveConnectConfig.outputAudioTranscription=e.runConfig.outputAudioTranscription,t.liveConnectConfig.inputAudioTranscription=e.runConfig.inputAudioTranscription,t.liveConnectConfig.realtimeInputConfig=e.runConfig.realtimeInputConfig,t.liveConnectConfig.enableAffectiveDialog=e.runConfig.enableAffectiveDialog,t.liveConnectConfig.proactivity=e.runConfig.proactivity))})}},io=new Je,et=class extends K{runAsync(e,t){return g(this,null,function*(){let n=e.agent,r=['You are an agent. Your internal name is "'.concat(n.name,'".')];n.description&&r.push('The description about you is "'.concat(n.description,'"')),fe(t,r)})}},so=new et,tt=class extends K{runAsync(e,t){return g(this,null,function*(){let n=e.agent;if(!(n instanceof T)||!(n.rootAgent instanceof T))return;let r=n.rootAgent;if(r instanceof T&&r.globalInstruction){let{instruction:i,requireStateInjection:s}=yield new u(r.canonicalGlobalInstruction(new _(e))),a=i;s&&(a=yield new u(Xe(i,new _(e)))),fe(t,[a])}if(n.instruction){let{instruction:i,requireStateInjection:s}=yield new u(n.canonicalInstruction(new _(e))),a=i;s&&(a=yield new u(Xe(i,new _(e)))),fe(t,[a])}})}},ao=new tt,nt=class{runAsync(e,t){return g(this,null,function*(){let n=e.agent;!n||!(n instanceof T)||(n.includeContents==="default"?t.contents=Ye(e.session.events,n.name,e.branch):t.contents=Yt(e.session.events,n.name,e.branch))})}},co=new nt,ot=class extends K{constructor(){super(...arguments);this.toolName="transfer_to_agent";this.tool=new j({name:this.toolName,description:"Transfer the question to another agent. This tool hands off control to another agent when it is more suitable to answer the user question according to the agent description.",parameters:nn.object({agentName:nn.string().describe("the agent name to transfer to.")}),execute:function(t,n){if(!n)throw new Error("toolContext is required.");return n.actions.transferToAgent=t.agentName,"Transfer queued"}})}runAsync(t,n){return g(this,null,function*(){if(!(t.agent instanceof T))return;let r=this.getTransferTargets(t.agent);if(!r.length)return;fe(n,[this.buildTargetAgentsInstructions(t.agent,r)]);let i=new Z({invocationContext:t});yield new u(this.tool.processLlmRequest({toolContext:i,llmRequest:n}))})}buildTargetAgentsInfo(t){return"\nAgent name: ".concat(t.name,"\nAgent description: ").concat(t.description,"\n")}buildTargetAgentsInstructions(t,n){let r="\nYou have a list of other agents to transfer to:\n\n".concat(n.map(this.buildTargetAgentsInfo).join("\n"),"\n\nIf you are the best to answer the question according to your description, you\ncan answer it.\n\nIf another agent is better for answering the question according to its\ndescription, call `").concat(this.toolName,"` function to transfer the\nquestion to that agent. When transferring, do not generate any text other than\nthe function call.\n");return t.parentAgent&&!t.disallowTransferToParent&&(r+="\nYour parent agent is ".concat(t.parentAgent.name,". If neither the other agents nor\nyou are best for answering the question according to the descriptions, transfer\nto your parent agent.\n")),r}getTransferTargets(t){let n=[];return n.push(...t.subAgents),!t.parentAgent||!(t.parentAgent instanceof T)||(t.disallowTransferToParent||n.push(t.parentAgent),t.disallowTransferToPeers||n.push(...t.parentAgent.subAgents.filter(r=>r.name!==t.name))),n}},lo=new ot,rt=class extends K{runAsync(e,t){return g(this,null,function*(){let n=e.agent;if(!(n instanceof T))return;let r=e.session.events;if(!r||r.length===0)return;let i={},s=-1;for(let a=r.length-1;a>=0;a--){let c=r[a];if(c.author!=="user")continue;let l=M(c);if(!l)continue;let d=!1;for(let f of l){if(f.name!==ie)continue;d=!0;let m=null;f.response&&Object.keys(f.response).length===1&&"response"in f.response?m=JSON.parse(f.response.response):f.response&&(m=new z({hint:f.response.hint,payload:f.response.payload,confirmed:f.response.confirmed})),f.id&&m&&(i[f.id]=m)}if(d){s=a;break}}if(Object.keys(i).length!==0)for(let a=s-1;a>=0;a--){let c=r[a],l=L(c);if(!l)continue;let d={},f={};for(let y of l){if(!y.id||!(y.id in i))continue;let p=y.args;if(!p||!("originalFunctionCall"in p))continue;let A=p.originalFunctionCall;A.id&&(d[A.id]=i[y.id],f[A.id]=A)}if(Object.keys(d).length===0)continue;for(let y=r.length-1;y>s;y--){let p=r[y],A=M(p);if(A){for(let I of A)I.id&&I.id in d&&(delete d[I.id],delete f[I.id]);if(Object.keys(d).length===0)break}}if(Object.keys(d).length===0)continue;let m=yield new u(n.canonicalTools(new _(e))),C=Object.fromEntries(m.map(y=>[y.name,y])),h=yield new u(ve({invocationContext:e,functionCalls:Object.values(f),toolsDict:C,beforeToolCallbacks:n.canonicalBeforeToolCallbacks,afterToolCallbacks:n.canonicalAfterToolCallbacks,filters:new Set(Object.keys(d)),toolConfirmationDict:d}));h&&(yield h);return}})}},uo=new rt,it=class extends K{runAsync(e,t){return g(this,null,function*(){if(e.agent instanceof T&&e.agent.codeExecutor){try{for(var n=E(po(e,t)),r,i,s;r=!(i=yield new u(n.next())).done;r=!1){let a=i.value;yield a}}catch(i){s=[i]}finally{try{r&&(i=n.return)&&(yield new u(i.call(n)))}finally{if(s)throw s[0]}}if(e.agent.codeExecutor instanceof V)for(let a of t.contents){let c=e.agent.codeExecutor.codeBlockDelimiters.length?e.agent.codeExecutor.codeBlockDelimiters[0]:["",""],l=qt(a,c,e.agent.codeExecutor.executionResultDelimiters)}}})}},xe={"text/csv":{extension:".csv",loaderCodeTemplate:"pd.read_csv('{filename}')"}},fo="\nimport pandas as pd\n\ndef explore_df(df: pd.DataFrame) -> None:\n \"\"\"Prints some information about a pandas DataFrame.\"\"\"\n\n with pd.option_context(\n 'display.max_columns', None, 'display.expand_frame_repr', False\n ):\n # Print the column names to never encounter KeyError when selecting one.\n df_dtypes = df.dtypes\n\n # Obtain information about data types and missing values.\n df_nulls = (len(df) - df.isnull().sum()).apply(\n lambda x: f'{x} / {df.shape[0]} non-null'\n )\n\n # Explore unique total values in columns using `.unique()`.\n df_unique_count = df.apply(lambda x: len(x.unique()))\n\n # Explore unique values in columns using `.unique()`.\n df_unique = df.apply(lambda x: crop(str(list(x.unique()))))\n\n df_info = pd.concat(\n (\n df_dtypes.rename('Dtype'),\n df_nulls.rename('Non-Null Count'),\n df_unique_count.rename('Unique Values Count'),\n df_unique.rename('Unique Values'),\n ),\n axis=1,\n )\n df_info.index.name = 'Columns'\n print(f\"\"\"Total rows: {df.shape[0]}\nTotal columns: {df.shape[1]}\n\n{df_info}\"\"\")\n",st=class{runAsync(e,t){return g(this,null,function*(){if(!t.partial)try{for(var n=E(mo(e,t)),r,i,s;r=!(i=yield new u(n.next())).done;r=!1){let a=i.value;yield a}}catch(i){s=[i]}finally{try{r&&(i=n.return)&&(yield new u(i.call(n)))}finally{if(s)throw s[0]}}})}},ys=new st;function po(o,e){return g(this,null,function*(){let t=o.agent;if(!(t instanceof T))return;let n=t.codeExecutor;if(!n||!(n instanceof V))return;if(n instanceof q){n.processLlmRequest(e);return}if(!n.optimizeDataFile)return;let r=new ue(new b(o.session.state));if(r.getErrorCount(o.invocationId)>=n.errorRetryAttempts)return;let i=go(r,e),s=new Set(r.getProcessedFileNames()),a=i.filter(c=>!s.has(c.name));for(let c of a){let l=ho(c);if(!l)return;let d={role:"model",parts:[{text:"Processing input file: `".concat(c.name,"`")},Ge(l)]};e.contents.push(tn(d)),yield S({invocationId:o.invocationId,author:t.name,branch:o.branch,content:d});let f=sn(o,r),m=yield new u(n.executeCode({invocationContext:o,codeExecutionInput:{code:l,inputFiles:[c],executionId:f}}));r.updateCodeExecutionResult({invocationId:o.invocationId,code:l,resultStdout:m.stdout,resultStderr:m.stderr}),r.addProcessedFileNames([c.name]);let C=yield new u(an(o,r,m));yield C,e.contents.push(tn(C.content))}})}function mo(o,e){return g(this,null,function*(){let t=o.agent;if(!(t instanceof T))return;let n=t.codeExecutor;if(!n||!(n instanceof V)||!e||!e.content||n instanceof q)return;let r=new ue(new b(o.session.state));if(r.getErrorCount(o.invocationId)>=n.errorRetryAttempts)return;let i=e.content,s=$t(i,n.codeBlockDelimiters);if(!s)return;yield S({invocationId:o.invocationId,author:t.name,branch:o.branch,content:i});let a=sn(o,r),c=yield new u(n.executeCode({invocationContext:o,codeExecutionInput:{code:s,inputFiles:r.getInputFiles(),executionId:a}}));r.updateCodeExecutionResult({invocationId:o.invocationId,code:s,resultStdout:c.stdout,resultStderr:c.stderr}),yield yield new u(an(o,r,c)),e.content=null})}function go(o,e){var r;let t=o.getInputFiles(),n=new Set(t.map(i=>i.name));for(let i=0;i<e.contents.length;i++){let s=e.contents[i];if(!(s.role!=="user"||!s.parts))for(let a=0;a<s.parts.length;a++){let c=s.parts[a],l=(r=c.inlineData)==null?void 0:r.mimeType;if(!l||!c.inlineData||!xe[l])continue;let d="data_".concat(i+1,"_").concat(a+1).concat(xe[l].extension);c.text="\nAvailable file: `".concat(d,"`\n");let f={name:d,content:Tt(c.inlineData.data),mimeType:l};n.has(d)||(o.addInputFiles([f]),t.push(f))}}return t}function sn(o,e){var r;let t=o.agent;if(!(t instanceof T)||!((r=t.codeExecutor)!=null&&r.stateful))return;let n=e.getExecutionId();return n||(n=o.session.id,e.setExecutionId(n)),n}async function an(o,e,t){if(!o.artifactService)throw new Error("Artifact service is not initialized.");let n={role:"model",parts:[Gt(t)]},r=$({stateDelta:e.getStateDelta()});t.stderr?e.incrementErrorCount(o.invocationId):e.resetErrorCount(o.invocationId);for(let i of t.outputFiles){let s=await o.artifactService.saveArtifact({appName:o.appName||"",userId:o.userId||"",sessionId:o.session.id,filename:i.name,artifact:{inlineData:{data:i.content,mimeType:i.mimeType}}});r.artifactDelta[i.name]=s}return S({invocationId:o.invocationId,author:o.agent.name,branch:o.branch,content:n,actions:r})}function ho(o){function e(r){let[i]=r.split("."),s=i.replace(/[^a-zA-Z0-9_]/g,"_");return/^\d/.test(s)&&(s="_"+s),s}if(!xe[o.mimeType])return;let t=e(o.name),n=xe[o.mimeType].loaderCodeTemplate.replace("{filename}",o.name);return"\n".concat(fo,"\n\n# Load the dataframe.\n").concat(t," = ").concat(n,"\n\n# Use `explore_df` to guide my analysis.\nexplore_df(").concat(t,")\n")}var Co=new it,T=class o extends O{constructor(e){var n,r,i,s,a,c,l,d,f;if(super(e),this.model=e.model,this.instruction=(n=e.instruction)!=null?n:"",this.globalInstruction=(r=e.globalInstruction)!=null?r:"",this.tools=(i=e.tools)!=null?i:[],this.generateContentConfig=e.generateContentConfig,this.disallowTransferToParent=(s=e.disallowTransferToParent)!=null?s:!1,this.disallowTransferToPeers=(a=e.disallowTransferToPeers)!=null?a:!1,this.includeContents=(c=e.includeContents)!=null?c:"default",this.inputSchema=e.inputSchema,this.outputSchema=e.outputSchema,this.outputKey=e.outputKey,this.beforeModelCallback=e.beforeModelCallback,this.afterModelCallback=e.afterModelCallback,this.beforeToolCallback=e.beforeToolCallback,this.afterToolCallback=e.afterToolCallback,this.codeExecutor=e.codeExecutor,this.requestProcessors=(l=e.requestProcessors)!=null?l:[io,so,ao,uo,co,Co],this.responseProcessors=(d=e.responseProcessors)!=null?d:[],this.disallowTransferToParent&&this.disallowTransferToPeers&&!((f=this.subAgents)!=null&&f.length)||this.requestProcessors.push(lo),e.generateContentConfig){if(e.generateContentConfig.tools)throw new Error("All tools must be set via LlmAgent.tools.");if(e.generateContentConfig.systemInstruction)throw new Error("System instruction must be set via LlmAgent.instruction.");if(e.generateContentConfig.responseSchema)throw new Error("Response schema must be set via LlmAgent.output_schema.")}else this.generateContentConfig={};if(this.outputSchema){if((!this.disallowTransferToParent||!this.disallowTransferToPeers)&&(v.warn("Invalid config for agent ".concat(this.name,": outputSchema cannot co-exist with agent transfer configurations. Setting disallowTransferToParent=true, disallowTransferToPeers=true")),this.disallowTransferToParent=!0,this.disallowTransferToPeers=!0),this.subAgents&&this.subAgents.length>0)throw new Error("Invalid config for agent ".concat(this.name,": if outputSchema is set, subAgents must be empty to disable agent transfer."));if(this.tools&&this.tools.length>0)throw new Error("Invalid config for agent ".concat(this.name,": if outputSchema is set, tools must be empty"))}}get canonicalModel(){if(Ve(this.model))return this.model;if(typeof this.model=="string"&&this.model)return ce.newLlm(this.model);let e=this.parentAgent;for(;e;){if(e instanceof o)return e.canonicalModel;e=e.parentAgent}throw new Error("No model found for ".concat(this.name,"."))}async canonicalInstruction(e){return typeof this.instruction=="string"?{instruction:this.instruction,requireStateInjection:!0}:{instruction:await this.instruction(e),requireStateInjection:!1}}async canonicalGlobalInstruction(e){return typeof this.globalInstruction=="string"?{instruction:this.globalInstruction,requireStateInjection:!0}:{instruction:await this.globalInstruction(e),requireStateInjection:!1}}async canonicalTools(e){let t=[];for(let n of this.tools){let r=await rn(n,e);t.push(...r)}return t}static normalizeCallbackArray(e){return e?Array.isArray(e)?e:[e]:[]}get canonicalBeforeModelCallbacks(){return o.normalizeCallbackArray(this.beforeModelCallback)}get canonicalAfterModelCallbacks(){return o.normalizeCallbackArray(this.afterModelCallback)}get canonicalBeforeToolCallbacks(){return o.normalizeCallbackArray(this.beforeToolCallback)}get canonicalAfterToolCallbacks(){return o.normalizeCallbackArray(this.afterToolCallback)}maybeSaveOutputToState(e){var r,i;if(e.author!==this.name){v.debug("Skipping output save for agent ".concat(this.name,": event authored by ").concat(e.author));return}if(!this.outputKey){v.debug("Skipping output save for agent ".concat(this.name,": outputKey is not set"));return}if(!ne(e)){v.debug("Skipping output save for agent ".concat(this.name,": event is not a final response"));return}if(!((i=(r=e.content)==null?void 0:r.parts)!=null&&i.length)){v.debug("Skipping output save for agent ".concat(this.name,": event content is empty"));return}let t=e.content.parts.map(s=>s.text?s.text:"").join(""),n=t;if(this.outputSchema){if(!t.trim())return;try{n=JSON.parse(t)}catch(s){v.error("Error parsing output for agent ".concat(this.name),s)}}e.actions.stateDelta[this.outputKey]=n}runAsyncImpl(e){return g(this,null,function*(){for(;;){let s;try{for(var t=E(this.runOneStepAsync(e)),n,r,i;n=!(r=yield new u(t.next())).done;n=!1){let a=r.value;s=a,this.maybeSaveOutputToState(a),yield a}}catch(r){i=[r]}finally{try{n&&(r=t.return)&&(yield new u(r.call(t)))}finally{if(i)throw i[0]}}if(!s||ne(s))break;if(s.partial){v.warn("The last event is partial, which is not expected.");break}}})}runLiveImpl(e){return g(this,null,function*(){try{for(var t=E(this.runLiveFlow(e)),n,r,i;n=!(r=yield new u(t.next())).done;n=!1){let s=r.value;this.maybeSaveOutputToState(s),yield s}}catch(r){i=[r]}finally{try{n&&(r=t.return)&&(yield new u(r.call(t)))}finally{if(i)throw i[0]}}e.endInvocation})}runLiveFlow(e){return g(this,null,function*(){throw yield new u(Promise.resolve()),new Error("LlmAgent.runLiveFlow not implemented")})}runOneStepAsync(e){return g(this,null,function*(){let t={contents:[],toolsDict:{},liveConnectConfig:{}};for(let p of this.requestProcessors)try{for(var r=E(p.runAsync(e,t)),i,s,a;i=!(s=yield new u(r.next())).done;i=!1){let A=s.value;yield A}}catch(s){a=[s]}finally{try{i&&(s=r.return)&&(yield new u(s.call(r)))}finally{if(a)throw a[0]}}for(let p of this.tools){let A=new Z({invocationContext:e}),I=yield new u(rn(p,new _(e)));for(let w of I)yield new u(w.processLlmRequest({toolContext:A,llmRequest:t}))}if(e.endInvocation)return;let n=S({invocationId:e.invocationId,author:this.name,branch:e.branch});try{for(var m=E(this.callLlmAsync(e,t,n)),C,h,y;C=!(h=yield new u(m.next())).done;C=!1){let p=h.value;try{for(var c=E(this.postprocess(e,t,p,n)),l,d,f;l=!(d=yield new u(c.next())).done;l=!1){let A=d.value;n.id=Le(),n.timestamp=new Date().getTime(),yield A}}catch(d){f=[d]}finally{try{l&&(d=c.return)&&(yield new u(d.call(c)))}finally{if(f)throw f[0]}}}}catch(h){y=[h]}finally{try{C&&(h=m.return)&&(yield new u(h.call(m)))}finally{if(y)throw y[0]}}})}postprocess(e,t,n,r){return g(this,null,function*(){var h;for(let w of this.responseProcessors)try{for(var d=E(w.runAsync(e,n)),f,m,C;f=!(m=yield new u(d.next())).done;f=!1){let k=m.value;yield k}}catch(m){C=[m]}finally{try{f&&(m=d.return)&&(yield new u(m.call(d)))}finally{if(C)throw C[0]}}if(!n.content&&!n.errorCode&&!n.interrupted)return;let i=S(x(x({},r),n));if(i.content){let w=L(i);w!=null&&w.length&&(Pt(i),i.longRunningToolIds=Array.from(Bt(w,t.toolsDict)))}if(yield i,!((h=L(i))!=null&&h.length))return;let s=yield new u(Mt({invocationContext:e,functionCallEvent:i,toolsDict:t.toolsDict,beforeToolCallbacks:this.canonicalBeforeToolCallbacks,afterToolCallbacks:this.canonicalAfterToolCallbacks}));if(!s)return;let a=Fe(e,s);a&&(yield a);let c=Oe({invocationContext:e,functionCallEvent:i,functionResponseEvent:s});c&&(yield c),yield s;let l=s.actions.transferToAgent;if(l){let w=this.getAgentByName(e,l);try{for(var y=E(w.runAsync(e)),p,A,I;p=!(A=yield new u(y.next())).done;p=!1){let k=A.value;yield k}}catch(A){I=[A]}finally{try{p&&(A=y.return)&&(yield new u(A.call(y)))}finally{if(I)throw I[0]}}}})}getAgentByName(e,t){let r=e.agent.rootAgent.findAgent(t);if(!r)throw new Error("Agent ".concat(t," not found in the agent tree."));return r}callLlmAsync(e,t,n){return g(this,null,function*(){var s,a,c,l,d;let r=yield new u(this.handleBeforeModelCallback(e,t,n));if(r){yield r;return}(s=t.config)!=null||(t.config={}),(c=(a=t.config).labels)!=null||(a.labels={}),t.config.labels[on]||(t.config.labels[on]=this.name);let i=this.canonicalModel;if((l=e.runConfig)!=null&&l.supportCfc)throw new Error("CFC is not yet supported in callLlmAsync");{e.incrementLlmCallCount();let y=i.generateContentAsync(t,((d=e.runConfig)==null?void 0:d.streamingMode)==="sse");try{for(var f=E(this.runAndHandleError(y,e,t,n)),m,C,h;m=!(C=yield new u(f.next())).done;m=!1){let p=C.value;let A=yield new u(this.handleAfterModelCallback(e,p,n));yield A!=null?A:p}}catch(C){h=[C]}finally{try{m&&(C=f.return)&&(yield new u(C.call(f)))}finally{if(h)throw h[0]}}}})}async handleBeforeModelCallback(e,t,n){let r=new N({invocationContext:e,eventActions:n.actions}),i=await e.pluginManager.runBeforeModelCallback({callbackContext:r,llmRequest:t});if(i)return i;for(let s of this.canonicalBeforeModelCallbacks){let a=await s({context:r,request:t});if(a)return a}}async handleAfterModelCallback(e,t,n){let r=new N({invocationContext:e,eventActions:n.actions}),i=await e.pluginManager.runAfterModelCallback({callbackContext:r,llmResponse:t});if(i)return i;for(let s of this.canonicalAfterModelCallbacks){let a=await s({context:r,response:t});if(a)return a}}runAndHandleError(e,t,n,r){return g(this,null,function*(){try{try{for(var i=E(e),s,a,c;s=!(a=yield new u(i.next())).done;s=!1){let l=a.value;yield l}}catch(a){c=[a]}finally{try{s&&(a=i.return)&&(yield new u(a.call(i)))}finally{if(c)throw c[0]}}}catch(l){let d=new N({invocationContext:t,eventActions:r.actions});if(l instanceof Error){let f=yield new u(t.pluginManager.runOnModelErrorCallback({callbackContext:d,llmRequest:n,error:l}));if(f)yield f;else{let m=JSON.parse(l.message);yield{errorCode:String(m.error.code),errorMessage:m.error.message}}}else throw v.error("Unknown error during response generation",l),l}})}};var at=class extends O{constructor(e){var t;super(e),this.maxIterations=(t=e.maxIterations)!=null?t:Number.MAX_SAFE_INTEGER}runAsyncImpl(e){return g(this,null,function*(){let t=0;for(;t<this.maxIterations;){for(let a of this.subAgents){let c=!1;try{for(var n=E(a.runAsync(e)),r,i,s;r=!(i=yield new u(n.next())).done;r=!1){let l=i.value;yield l,l.actions.escalate&&(c=!0)}}catch(i){s=[i]}finally{try{r&&(i=n.return)&&(yield new u(i.call(n)))}finally{if(s)throw s[0]}}if(c)return}t++}})}runLiveImpl(e){return g(this,null,function*(){throw new Error("This is not supported yet for LoopAgent.")})}};var ct=class extends O{runAsyncImpl(e){return g(this,null,function*(){let t=this.subAgents.map(a=>a.runAsync(vo(this,a,e)));try{for(var n=E(yo(t)),r,i,s;r=!(i=yield new u(n.next())).done;r=!1){let a=i.value;yield a}}catch(i){s=[i]}finally{try{r&&(i=n.return)&&(yield new u(i.call(n)))}finally{if(s)throw s[0]}}})}runLiveImpl(e){return g(this,null,function*(){throw new Error("This is not supported yet for ParallelAgent.")})}};function vo(o,e,t){let n=new G(t),r="".concat(o.name,".").concat(e.name);return n.branch=n.branch?"".concat(n.branch,".").concat(r):r,n}function yo(o){return g(this,null,function*(){let e=new Map;for(let[t,n]of o.entries()){let r=n.next().then(i=>({result:i,index:t}));e.set(t,r)}for(;e.size>0;){let{result:t,index:n}=yield new u(Promise.race(e.values()));if(t.done){e.delete(n);continue}yield t.value;let r=o[n].next().then(i=>({result:i,index:n}));e.set(n,r)}})}var lt="task_completed",ut=class extends O{runAsyncImpl(e){return g(this,null,function*(){for(let s of this.subAgents)try{for(var t=E(s.runAsync(e)),n,r,i;n=!(r=yield new u(t.next())).done;n=!1){let a=r.value;yield a}}catch(r){i=[r]}finally{try{n&&(r=t.return)&&(yield new u(r.call(t)))}finally{if(i)throw i[0]}}})}runLiveImpl(e){return g(this,null,function*(){for(let s of this.subAgents)s instanceof T&&((yield new u(s.canonicalTools(new _(e)))).some(l=>l.name===lt)||(s.tools.push(new j({name:lt,description:"Signals that the model has successfully completed the user's question or task.",execute:()=>"Task completion signaled."})),s.instruction+="If you finished the user's request according to its description, call the ".concat(lt," function to exit so the next agents can take over. When calling this function, do not generate any text other than the function call.")));for(let s of this.subAgents)try{for(var t=E(s.runLive(e)),n,r,i;n=!(r=yield new u(t.next())).done;n=!1){let a=r.value;yield a}}catch(r){i=[r]}finally{try{n&&(r=t.return)&&(yield new u(r.call(t)))}finally{if(i)throw i[0]}}})}};var de=class{constructor(){this.artifacts={}}saveArtifact({appName:e,userId:t,sessionId:n,filename:r,artifact:i}){let s=Ee(e,t,n,r);this.artifacts[s]||(this.artifacts[s]=[]);let a=this.artifacts[s].length;return this.artifacts[s].push(i),Promise.resolve(a)}loadArtifact({appName:e,userId:t,sessionId:n,filename:r,version:i}){let s=Ee(e,t,n,r),a=this.artifacts[s];return a?(i===void 0&&(i=a.length-1),Promise.resolve(a[i])):Promise.resolve(void 0)}listArtifactKeys({appName:e,userId:t,sessionId:n}){let r="".concat(e,"/").concat(t,"/").concat(n,"/"),i="".concat(e,"/").concat(t,"/user/"),s=[];for(let a in this.artifacts)if(a.startsWith(r)){let c=a.replace(r,"");s.push(c)}else if(a.startsWith(i)){let c=a.replace(i,"");s.push(c)}return Promise.resolve(s.sort())}deleteArtifact({appName:e,userId:t,sessionId:n,filename:r}){let i=Ee(e,t,n,r);return this.artifacts[i]&&delete this.artifacts[i],Promise.resolve()}listVersions({appName:e,userId:t,sessionId:n,filename:r}){let i=Ee(e,t,n,r),s=this.artifacts[i];if(!s)return Promise.resolve([]);let a=[];for(let c=0;c<s.length;c++)a.push(c);return Promise.resolve(a)}};function Ee(o,e,t,n){return Ao(n)?"".concat(o,"/").concat(e,"/user/").concat(n):"".concat(o,"/").concat(e,"/").concat(t,"/").concat(n)}function Ao(o){return o.startsWith("user:")}var X=class{constructor(){this.memories=[];this.sessionEvents={}}async addSessionToMemory(e){let t=cn(e.appName,e.userId);this.sessionEvents[t]||(this.sessionEvents[t]={}),this.sessionEvents[t][e.id]=e.events.filter(n=>{var r,i,s;return((s=(i=(r=n.content)==null?void 0:r.parts)==null?void 0:i.length)!=null?s:0)>0})}async searchMemory(e){var i,s;let t=cn(e.appName,e.userId);if(!this.sessionEvents[t])return Promise.resolve({memories:[]});let n=e.query.toLowerCase().split(/\s+/),r={memories:[]};for(let a of Object.values(this.sessionEvents[t]))for(let c of a){if(!((s=(i=c.content)==null?void 0:i.parts)!=null&&s.length))continue;let l=c.content.parts.map(m=>m.text).filter(m=>!!m).join(" "),d=xo(l);if(!d.size)continue;n.some(m=>d.has(m))&&r.memories.push({content:c.content,author:c.author,timestamp:Eo(c.timestamp)})}return r}};function cn(o,e){return"".concat(o,"/").concat(e)}function xo(o){return new Set([...o.matchAll(/[A-Za-z]+/)].map(e=>e[0].toLowerCase()))}function Eo(o){return new Date(o).toISOString()}var H=class{constructor(e){this.name=e}async onUserMessageCallback({invocationContext:e,userMessage:t}){}async beforeRunCallback({invocationContext:e}){}async onEventCallback({invocationContext:e,event:t}){}async afterRunCallback({invocationContext:e}){}async beforeAgentCallback({agent:e,callbackContext:t}){}async afterAgentCallback({agent:e,callbackContext:t}){}async beforeModelCallback({callbackContext:e,llmRequest:t}){}async afterModelCallback({callbackContext:e,llmResponse:t}){}async onModelErrorCallback({callbackContext:e,llmRequest:t,error:n}){}async beforeToolCallback({tool:e,toolArgs:t,toolContext:n}){}async afterToolCallback({tool:e,toolArgs:t,toolContext:n,result:r}){}async onToolErrorCallback({tool:e,toolArgs:t,toolContext:n,error:r}){}};var ft=class extends H{constructor(e="logging_plugin"){super(e)}async onUserMessageCallback({invocationContext:e,userMessage:t}){var n;this.log("\u{1F680} USER MESSAGE RECEIVED"),this.log(" Invocation ID: ".concat(e.invocationId)),this.log(" Session ID: ".concat(e.session.id)),this.log(" User ID: ".concat(e.userId)),this.log(" App Name: ".concat(e.appName)),this.log(" Root Agent: ".concat((n=e.agent.name)!=null?n:"Unknown")),this.log(" User Content: ".concat(this.formatContent(t))),e.branch&&this.log(" Branch: ".concat(e.branch))}async beforeRunCallback({invocationContext:e}){var t;this.log("\u{1F3C3} INVOCATION STARTING"),this.log(" Invocation ID: ".concat(e.invocationId)),this.log(" Starting Agent: ".concat((t=e.agent.name)!=null?t:"Unknown"))}async onEventCallback({invocationContext:e,event:t}){this.log("\u{1F4E2} EVENT YIELDED"),this.log(" Event ID: ".concat(t.id)),this.log(" Author: ".concat(t.author)),this.log(" Content: ".concat(this.formatContent(t.content))),this.log(" Final Response: ".concat(ne(t)));let n=L(t);if(n.length>0){let i=n.map(s=>s.name);this.log(" Function Calls: ".concat(i))}let r=M(t);if(r.length>0){let i=r.map(s=>s.name);this.log(" Function Responses: ".concat(i))}t.longRunningToolIds&&t.longRunningToolIds.length>0&&this.log(" Long Running Tools: ".concat([...t.longRunningToolIds]))}async afterRunCallback({invocationContext:e}){var t;this.log("\u2705 INVOCATION COMPLETED"),this.log(" Invocation ID: ".concat(e.invocationId)),this.log(" Final Agent: ".concat((t=e.agent.name)!=null?t:"Unknown"))}async beforeAgentCallback({agent:e,callbackContext:t}){this.log("\u{1F916} AGENT STARTING"),this.log(" Agent Name: ".concat(t.agentName)),this.log(" Invocation ID: ".concat(t.invocationId)),t.invocationContext.branch&&this.log(" Branch: ".concat(t.invocationContext.branch))}async afterAgentCallback({agent:e,callbackContext:t}){this.log("\u{1F916} AGENT COMPLETED"),this.log(" Agent Name: ".concat(t.agentName)),this.log(" Invocation ID: ".concat(t.invocationId))}async beforeModelCallback({callbackContext:e,llmRequest:t}){var n;if(this.log("\u{1F9E0} LLM REQUEST"),this.log(" Model: ".concat((n=t.model)!=null?n:"default")),this.log(" Agent: ".concat(e.agentName)),t.config&&t.config.systemInstruction){let r=t.config.systemInstruction;r.length>200&&(r=r.substring(0,200)+"..."),this.log(" System Instruction: '".concat(r,"'"))}if(t.toolsDict){let r=Object.keys(t.toolsDict);this.log(" Available Tools: ".concat(r))}}async afterModelCallback({callbackContext:e,llmResponse:t}){this.log("\u{1F9E0} LLM RESPONSE"),this.log(" Agent: ".concat(e.agentName)),t.errorCode?(this.log(" \u274C ERROR - Code: ".concat(t.errorCode)),this.log(" Error Message: ".concat(t.errorMessage))):(this.log(" Content: ".concat(this.formatContent(t.content))),t.partial&&this.log(" Partial: ".concat(t.partial)),t.turnComplete!==void 0&&this.log(" Turn Complete: ".concat(t.turnComplete))),t.usageMetadata&&this.log(" Token Usage - Input: ".concat(t.usageMetadata.promptTokenCount,", Output: ").concat(t.usageMetadata.candidatesTokenCount))}async beforeToolCallback({tool:e,toolArgs:t,toolContext:n}){this.log("\u{1F527} TOOL STARTING"),this.log(" Tool Name: ".concat(e.name)),this.log(" Agent: ".concat(n.agentName)),this.log(" Function Call ID: ".concat(n.functionCallId)),this.log(" Arguments: ".concat(this.formatArgs(t)))}async afterToolCallback({tool:e,toolArgs:t,toolContext:n,result:r}){this.log("\u{1F527} TOOL COMPLETED"),this.log(" Tool Name: ".concat(e.name)),this.log(" Agent: ".concat(n.agentName)),this.log(" Function Call ID: ".concat(n.functionCallId)),this.log(" Result: ".concat(this.formatArgs(r)))}async onModelErrorCallback({callbackContext:e,llmRequest:t,error:n}){this.log("\u{1F9E0} LLM ERROR"),this.log(" Agent: ".concat(e.agentName)),this.log(" Error: ".concat(n))}async onToolErrorCallback({tool:e,toolArgs:t,toolContext:n,error:r}){this.log("\u{1F527} TOOL ERROR"),this.log(" Tool Name: ".concat(e.name)),this.log(" Agent: ".concat(n.agentName)),this.log(" Function Call ID: ".concat(n.functionCallId)),this.log(" Arguments: ".concat(this.formatArgs(t))),this.log(" Error: ".concat(r))}log(e){let t="\x1B[90m[".concat(this.name,"] ").concat(e,"\x1B[0m");v.info(t)}formatContent(e,t=200){if(!e||!e.parts)return"None";let n=[];for(let r of e.parts)if(r.text){let i=r.text.trim();i.length>t&&(i=i.substring(0,t)+"..."),n.push("text: '".concat(i,"'"))}else r.functionCall?n.push("function_call: ".concat(r.functionCall.name)):r.functionResponse?n.push("function_response: ".concat(r.functionResponse.name)):r.codeExecutionResult?n.push("code_execution_result"):n.push("other_part");return n.join(" | ")}formatArgs(e,t=300){if(!e)return"{}";let n=JSON.stringify(e);return n.length>t&&(n=n.substring(0,t)+"...}"),n}};var pe=class{constructor(e){this.plugins=new Set;if(e)for(let t of e)this.registerPlugin(t)}registerPlugin(e){if(this.plugins.has(e))throw new Error("Plugin '".concat(e.name,"' already registered."));if(Array.from(this.plugins).some(t=>t.name===e.name))throw new Error("Plugin with name '".concat(e.name,"' already registered."));this.plugins.add(e),v.info("Plugin '".concat(e.name,"' registered."))}getPlugin(e){return Array.from(this.plugins).find(t=>t.name===e)}async runCallbacks(e,t,n){for(let r of e)try{let i=await t(r);if(i!==void 0)return v.debug("Plugin '".concat(r.name,"' returned a value for callback '").concat(n,"', exiting early.")),i}catch(i){let s="Error in plugin '".concat(r.name,"' during '").concat(n,"' callback: ").concat(i);throw v.error(s),new Error(s)}}async runOnUserMessageCallback({userMessage:e,invocationContext:t}){return await this.runCallbacks(this.plugins,n=>n.onUserMessageCallback({userMessage:e,invocationContext:t}),"onUserMessageCallback")}async runBeforeRunCallback({invocationContext:e}){return await this.runCallbacks(this.plugins,t=>t.beforeRunCallback({invocationContext:e}),"beforeRunCallback")}async runAfterRunCallback({invocationContext:e}){await this.runCallbacks(this.plugins,t=>t.afterRunCallback({invocationContext:e}),"afterRunCallback")}async runOnEventCallback({invocationContext:e,event:t}){return await this.runCallbacks(this.plugins,n=>n.onEventCallback({invocationContext:e,event:t}),"onEventCallback")}async runBeforeAgentCallback({agent:e,callbackContext:t}){return await this.runCallbacks(this.plugins,n=>n.beforeAgentCallback({agent:e,callbackContext:t}),"beforeAgentCallback")}async runAfterAgentCallback({agent:e,callbackContext:t}){return await this.runCallbacks(this.plugins,n=>n.afterAgentCallback({agent:e,callbackContext:t}),"afterAgentCallback")}async runBeforeToolCallback({tool:e,toolArgs:t,toolContext:n}){return await this.runCallbacks(this.plugins,r=>r.beforeToolCallback({tool:e,toolArgs:t,toolContext:n}),"beforeToolCallback")}async runAfterToolCallback({tool:e,toolArgs:t,toolContext:n,result:r}){return await this.runCallbacks(this.plugins,i=>i.afterToolCallback({tool:e,toolArgs:t,toolContext:n,result:r}),"afterToolCallback")}async runOnModelErrorCallback({callbackContext:e,llmRequest:t,error:n}){return await this.runCallbacks(this.plugins,r=>r.onModelErrorCallback({callbackContext:e,llmRequest:t,error:n}),"onModelErrorCallback")}async runBeforeModelCallback({callbackContext:e,llmRequest:t}){return await this.runCallbacks(this.plugins,n=>n.beforeModelCallback({callbackContext:e,llmRequest:t}),"beforeModelCallback")}async runAfterModelCallback({callbackContext:e,llmResponse:t}){return await this.runCallbacks(this.plugins,n=>n.afterModelCallback({callbackContext:e,llmResponse:t}),"afterModelCallback")}async runOnToolErrorCallback({tool:e,toolArgs:t,toolContext:n,error:r}){return await this.runCallbacks(this.plugins,i=>i.onToolErrorCallback({tool:e,toolArgs:t,toolContext:n,error:r}),"onToolErrorCallback")}};var un="adk_request_confirmation",dt="orcas_tool_call_security_check_states",ln="This tool call needs external confirmation before completion.",fn=(n=>(n.DENY="DENY",n.CONFIRM="CONFIRM",n.ALLOW="ALLOW",n))(fn||{}),be=class{async evaluate(e){return Promise.resolve({outcome:"ALLOW",reason:"For prototyping purpose, all tool calls are allowed."})}},pt=class extends H{constructor(e){var t;super("security_plugin"),this.policyEngine=(t=e==null?void 0:e.policyEngine)!=null?t:new be}async beforeToolCallback({tool:e,toolArgs:t,toolContext:n}){let r=this.getToolCallCheckState(n);if(!r)return this.checkToolCallPolicy({tool:e,toolArgs:t,toolContext:n});if(r==="CONFIRM"){if(!n.toolConfirmation)return{partial:ln};if(this.setToolCallCheckState(n,n.toolConfirmation),!n.toolConfirmation.confirmed)return{error:"Tool call rejected from confirmation flow."};n.toolConfirmation=void 0}}getToolCallCheckState(e){var r;let{functionCallId:t}=e;return t?((r=e.state.get(dt))!=null?r:{})[t]:void 0}setToolCallCheckState(e,t){var i;let{functionCallId:n}=e;if(!n)return;let r=(i=e.state.get(dt))!=null?i:{};r[n]=t,e.state.set(dt,r)}async checkToolCallPolicy({tool:e,toolArgs:t,toolContext:n}){let r=await this.policyEngine.evaluate({tool:e,toolArgs:t});switch(this.setToolCallCheckState(n,r.outcome),r.outcome){case"DENY":return{error:"This tool call is rejected by policy engine. Reason: ".concat(r.reason)};case"CONFIRM":return n.requestConfirmation({hint:"Policy engine requires confirmation calling tool: ".concat(e.name,". Reason: ").concat(r.reason)}),{partial:ln};case"ALLOW":return;default:return}}};function bo(o){if(!o.content||!o.content.parts)return[];let e=[];for(let t of o.content.parts)t&&t.functionCall&&t.functionCall.name===un&&e.push(t.functionCall);return e}import{cloneDeep as dn}from"lodash";var Te=class{async appendEvent({session:e,event:t}){return t.partial||(this.updateSessionState({session:e,event:t}),e.events.push(t)),t}updateSessionState({session:e,event:t}){if(!(!t.actions||!t.actions.stateDelta))for(let[n,r]of Object.entries(t.actions.stateDelta))n.startsWith(b.TEMP_PREFIX)||(e.state[n]=r)}};function Se(o){return{id:o.id,appName:o.appName,userId:o.userId||"",state:o.state||{},events:o.events||[],lastUpdateTime:o.lastUpdateTime||0}}var J=class extends Te{constructor(){super(...arguments);this.sessions={};this.userState={};this.appState={}}createSession({appName:t,userId:n,state:r,sessionId:i}){let s=Se({id:i||oe(),appName:t,userId:n,state:r,events:[],lastUpdateTime:Date.now()});return this.sessions[t]||(this.sessions[t]={}),this.sessions[t][n]||(this.sessions[t][n]={}),this.sessions[t][n][s.id]=s,Promise.resolve(this.mergeState(t,n,dn(s)))}getSession({appName:t,userId:n,sessionId:r,config:i}){if(!this.sessions[t]||!this.sessions[t][n]||!this.sessions[t][n][r])return Promise.resolve(void 0);let s=this.sessions[t][n][r],a=dn(s);if(i&&(i.numRecentEvents&&(a.events=a.events.slice(-i.numRecentEvents)),i.afterTimestamp)){let c=a.events.length-1;for(;c>=0&&!(a.events[c].timestamp<i.afterTimestamp);)c--;c>=0&&(a.events=a.events.slice(c+1))}return Promise.resolve(this.mergeState(t,n,a))}listSessions({appName:t,userId:n}){if(!this.sessions[t]||!this.sessions[t][n])return Promise.resolve({sessions:[]});let r=[];for(let i of Object.values(this.sessions[t][n]))r.push(Se({id:i.id,appName:i.appName,userId:i.userId,state:{},events:[],lastUpdateTime:i.lastUpdateTime}));return Promise.resolve({sessions:r})}async deleteSession({appName:t,userId:n,sessionId:r}){await this.getSession({appName:t,userId:n,sessionId:r})&&delete this.sessions[t][n][r]}async appendEvent({session:t,event:n}){await super.appendEvent({session:t,event:n}),t.lastUpdateTime=n.timestamp;let r=t.appName,i=t.userId,s=t.id,a=l=>{v.warn("Failed to append event to session ".concat(s,": ").concat(l))};if(!this.sessions[r])return a("appName ".concat(r," not in sessions")),n;if(!this.sessions[r][i])return a("userId ".concat(i," not in sessions[appName]")),n;if(!this.sessions[r][i][s])return a("sessionId ".concat(s," not in sessions[appName][userId]")),n;if(n.actions&&n.actions.stateDelta)for(let l of Object.keys(n.actions.stateDelta))l.startsWith(b.APP_PREFIX)&&(this.appState[r]=this.appState[r]||{},this.appState[r][l.replace(b.APP_PREFIX,"")]=n.actions.stateDelta[l]),l.startsWith(b.USER_PREFIX)&&(this.userState[r]=this.userState[r]||{},this.userState[r][i]=this.userState[r][i]||{},this.userState[r][i][l.replace(b.USER_PREFIX,"")]=n.actions.stateDelta[l]);let c=this.sessions[r][i][s];return await super.appendEvent({session:c,event:n}),c.lastUpdateTime=n.timestamp,n}mergeState(t,n,r){if(this.appState[t])for(let i of Object.keys(this.appState[t]))r.state[b.APP_PREFIX+i]=this.appState[t][i];if(!this.userState[t]||!this.userState[t][n])return r;for(let i of Object.keys(this.userState[t][n]))r.state[b.USER_PREFIX+i]=this.userState[t][n][i];return r}};import{createPartFromText as To}from"@google/genai";import{trace as So}from"@opentelemetry/api";var ee=class{constructor(e){var t;this.appName=e.appName,this.agent=e.agent,this.pluginManager=new pe((t=e.plugins)!=null?t:[]),this.artifactService=e.artifactService,this.sessionService=e.sessionService,this.memoryService=e.memoryService,this.credentialService=e.credentialService}runAsync(s){return g(this,arguments,function*({userId:e,sessionId:t,newMessage:n,stateDelta:r,runConfig:i}){var c;i=en(i);let a=So.getTracer("gcp.vertex.agent").startSpan("invocation");try{let C=yield new u(this.sessionService.getSession({appName:this.appName,userId:e,sessionId:t}));if(!C)throw this.appName?new Error("Session not found: ".concat(t)):new Error("Session lookup failed: appName must be provided in runner constructor");if(i.supportCfc&&this.agent instanceof T){let A=this.agent.canonicalModel.model;if(!A.startsWith("gemini-2"))throw new Error("CFC is not supported for model: ".concat(A," in agent: ").concat(this.agent.name))}this.agent instanceof T&&!(this.agent.codeExecutor instanceof q)&&(this.agent.codeExecutor=new q);let h=new G({artifactService:this.artifactService,sessionService:this.sessionService,memoryService:this.memoryService,credentialService:this.credentialService,invocationId:St(),agent:this.agent,session:C,userContent:n,runConfig:i,pluginManager:this.pluginManager}),y=yield new u(this.pluginManager.runOnUserMessageCallback({userMessage:n,invocationContext:h}));if(y&&(n=y),n){if(!((c=n.parts)!=null&&c.length))throw new Error("No parts in the newMessage.");i.saveInputBlobsAsArtifacts&&(yield new u(this.saveArtifacts(h.invocationId,C.userId,C.id,n))),yield new u(this.sessionService.appendEvent({session:C,event:S({invocationId:h.invocationId,author:"user",actions:r?$({stateDelta:r}):void 0,content:n})}))}h.agent=this.determineAgentForResumption(C,this.agent);let p=yield new u(this.pluginManager.runBeforeRunCallback({invocationContext:h}));if(p){let A=S({invocationId:h.invocationId,author:"model",content:p});yield new u(this.sessionService.appendEvent({session:C,event:A})),yield A}else try{for(var l=E(h.agent.runAsync(h)),d,f,m;d=!(f=yield new u(l.next())).done;d=!1){let A=f.value;A.partial||(yield new u(this.sessionService.appendEvent({session:C,event:A})));let I=yield new u(this.pluginManager.runOnEventCallback({invocationContext:h,event:A}));I?yield I:yield A}}catch(f){m=[f]}finally{try{d&&(f=l.return)&&(yield new u(f.call(l)))}finally{if(m)throw m[0]}}yield new u(this.pluginManager.runAfterRunCallback({invocationContext:h}))}finally{a.end()}})}async saveArtifacts(e,t,n,r){var i;if(!(!this.artifactService||!((i=r.parts)!=null&&i.length)))for(let s=0;s<r.parts.length;s++){let a=r.parts[s];if(!a.inlineData)continue;let c="artifact_".concat(e,"_").concat(s);await this.artifactService.saveArtifact({appName:this.appName,userId:t,sessionId:n,filename:c,artifact:a}),r.parts[s]=To("Uploaded file: ".concat(c,". It is saved into artifacts"))}}determineAgentForResumption(e,t){let n=Ro(e.events);if(n&&n.author)return t.findAgent(n.author)||t;for(let r=e.events.length-1;r>=0;r--){v.info("event: ",JSON.stringify(e.events[r]));let i=e.events[r];if(i.author==="user"||!i.author)continue;if(i.author===t.name)return t;let s=t.findSubAgent(i.author);if(!s){v.warn("Event from an unknown agent: ".concat(i.author,", event id: ").concat(i.id));continue}if(this.isRoutableLlmAgent(s))return s}return t}isRoutableLlmAgent(e){let t=e;for(;t;){if(!(t instanceof T)||t.disallowTransferToParent)return!1;t=t.parentAgent}return!0}};function Ro(o){var n,r,i,s;if(!o.length)return null;let t=(s=(i=(r=(n=o[o.length-1].content)==null?void 0:n.parts)==null?void 0:r.find(a=>a.functionResponse))==null?void 0:i.functionResponse)==null?void 0:s.id;if(!t)return null;for(let a=o.length-2;a>=0;a--){let c=o[a],l=L(c);if(l){for(let d of l)if(d.id===t)return c}}return null}var mt=class extends ee{constructor({agent:e,appName:t="InMemoryRunner",plugins:n=[]}){super({appName:t,agent:e,plugins:n,artifactService:new de,sessionService:new J,memoryService:new X})}};import{Type as Ie}from"@google/genai";var Re=class{constructor(e){this.toolContext=e;this.invocationContext=e.invocationContext}async saveArtifact(e){return this.toolContext.saveArtifact(e.filename,e.artifact)}async loadArtifact(e){return this.toolContext.loadArtifact(e.filename,e.version)}async listArtifactKeys(e){return this.toolContext.listArtifacts()}async deleteArtifact(e){if(!this.toolContext.invocationContext.artifactService)throw new Error("Artifact service is not initialized.");return this.toolContext.invocationContext.artifactService.deleteArtifact(e)}async listVersions(e){if(!this.toolContext.invocationContext.artifactService)throw new Error("Artifact service is not initialized.");return this.toolContext.invocationContext.artifactService.listVersions(e)}};var gt=class extends D{constructor(e){super({name:e.agent.name,description:e.agent.description||""}),this.agent=e.agent,this.skipSummarization=e.skipSummarization||!1}_getDeclaration(){let e;if(this.agent instanceof T&&this.agent.inputSchema?e={name:this.name,description:this.description,parameters:this.agent.inputSchema}:e={name:this.name,description:this.description,parameters:{type:Ie.OBJECT,properties:{request:{type:Ie.STRING}},required:["request"]}},this.apiVariant!=="GEMINI_API"){let t=this.agent instanceof T&&this.agent.outputSchema;e.response=t?{type:Ie.OBJECT}:{type:Ie.STRING}}return e}async runAsync({args:e,toolContext:t}){var h,y;this.skipSummarization&&(t.actions.skipSummarization=!0);let r={role:"user",parts:[{text:this.agent instanceof T&&this.agent.inputSchema?JSON.stringify(e):e.request}]},i=new ee({appName:this.agent.name,agent:this.agent,artifactService:new Re(t),sessionService:new J,memoryService:new X,credentialService:t.invocationContext.credentialService}),s=await i.sessionService.createSession({appName:this.agent.name,userId:"tmp_user",state:t.state.toRecord()}),a;try{for(var d=E(i.runAsync({userId:s.userId,sessionId:s.id,newMessage:r})),f,m,C;f=!(m=await d.next()).done;f=!1){let p=m.value;p.actions.stateDelta&&t.state.update(p.actions.stateDelta),a=p}}catch(m){C=[m]}finally{try{f&&(m=d.return)&&await m.call(d)}finally{if(C)throw C[0]}}if(!((y=(h=a==null?void 0:a.content)==null?void 0:h.parts)!=null&&y.length))return"";let c=this.agent instanceof T&&this.agent.outputSchema,l=a.content.parts.map(p=>p.text).filter(p=>p).join("\n");return c?JSON.parse(l):l}};var ht=class{constructor(e){this.toolFilter=e}isToolSelected(e,t){return this.toolFilter?typeof this.toolFilter=="function"?this.toolFilter(e,t):Array.isArray(this.toolFilter)?this.toolFilter.includes(e.name):!1:!0}async processLlmRequest(e,t){}};var Ct=class extends D{constructor(){super({name:"google_search",description:"Google Search Tool"})}runAsync(e){return Promise.resolve()}async processLlmRequest({toolContext:e,llmRequest:t}){if(t.model){if(t.config=t.config||{},t.config.tools=t.config.tools||[],Ft(t.model)){if(t.config.tools.length>0)throw new Error("Google search tool can not be used with other tools in Gemini 1.x.");t.config.tools.push({googleSearchRetrieval:{}});return}if(Nt(t.model)){t.config.tools.push({googleSearch:{}});return}throw new Error("Google search tool is not supported for model ".concat(t.model))}}},Io=new Ct;var pn="\n\nNOTE: This is a long-running operation. Do not call this tool again if it has already returned some intermediate or pending status.",vt=class extends j{constructor(e){super(te(x({},e),{isLongRunning:!0}))}_getDeclaration(){let e=super._getDeclaration();return e.description?e.description+=pn:e.description=pn.trimStart(),e}};export{gt as AgentTool,O as BaseAgent,se as BaseLlm,H as BasePlugin,Te as BaseSessionService,D as BaseTool,ht as BaseToolset,q as BuiltInCodeExecutor,N as CallbackContext,j as FunctionTool,Io as GOOGLE_SEARCH,ae as Gemini,de as InMemoryArtifactService,X as InMemoryMemoryService,be as InMemoryPolicyEngine,mt as InMemoryRunner,J as InMemorySessionService,G as InvocationContext,ce as LLMRegistry,De as LiveRequestQueue,T as LlmAgent,kt as LogLevel,ft as LoggingPlugin,vt as LongRunningFunctionTool,at as LoopAgent,ct as ParallelAgent,pe as PluginManager,fn as PolicyOutcome,un as REQUEST_CONFIRMATION_FUNCTION_CALL_NAME,ee as Runner,pt as SecurityPlugin,ut as SequentialAgent,b as State,He as StreamingMode,z as ToolConfirmation,Z as ToolContext,S as createEvent,$ as createEventActions,Se as createSession,kn as functionsExportedForTestingOnly,bo as getAskUserConfirmationFunctionCalls,L as getFunctionCalls,M as getFunctionResponses,bt as hasTrailingCodeExecutionResult,An as isBaseAgent,Ve as isBaseLlm,ne as isFinalResponse,Tn as setLogLevel,yn as stringifyContent,Ke as version,Ae as zodObjectToSchema};
7
+ var mn=Object.defineProperty,gn=Object.defineProperties;var hn=Object.getOwnPropertyDescriptors;var At=Object.getOwnPropertySymbols;var Cn=Object.prototype.hasOwnProperty,vn=Object.prototype.propertyIsEnumerable;var ke=(o,e)=>(e=Symbol[o])?e:Symbol.for("Symbol."+o);var xt=(o,e,t)=>e in o?mn(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,x=(o,e)=>{for(var t in e||(e={}))Cn.call(e,t)&&xt(o,t,e[t]);if(At)for(var t of At(e))vn.call(e,t)&&xt(o,t,e[t]);return o},te=(o,e)=>gn(o,hn(e));var u=function(o,e){this[0]=o,this[1]=e},g=(o,e,t)=>{var n=(s,a,c,l)=>{try{var d=t[s](a),f=(a=d.value)instanceof u,m=d.done;Promise.resolve(f?a[0]:a).then(C=>f?n(s==="return"?s:"next",a[1]?{done:C.done,value:C.value}:C,c,l):c({value:C,done:m})).catch(C=>n("throw",C,c,l))}catch(C){l(C)}},r=s=>i[s]=a=>new Promise((c,l)=>n(s,a,c,l)),i={};return t=t.apply(o,e),i[ke("asyncIterator")]=()=>i,r("next"),r("throw"),r("return"),i};var E=(o,e,t)=>(e=o[ke("asyncIterator")])?e.call(o):(o=o[ke("iterator")](),e={},t=(n,r)=>(r=o[n])&&(e[n]=i=>new Promise((s,a,c)=>(i=r.call(o,i),c=i.done,Promise.resolve(i.value).then(l=>s({value:l,done:c}),a)))),t("next"),t("return"),e);import{trace as It}from"@opentelemetry/api";function $(o={}){return x({stateDelta:{},artifactDelta:{},requestedAuthConfigs:{},requestedToolConfirmations:{}},o)}function Et(o,e){let t=$();e&&Object.assign(t,e);for(let n of o)n&&(n.stateDelta&&Object.assign(t.stateDelta,n.stateDelta),n.artifactDelta&&Object.assign(t.artifactDelta,n.artifactDelta),n.requestedAuthConfigs&&Object.assign(t.requestedAuthConfigs,n.requestedAuthConfigs),n.requestedToolConfirmations&&Object.assign(t.requestedToolConfirmations,n.requestedToolConfirmations),n.skipSummarization!==void 0&&(t.skipSummarization=n.skipSummarization),n.transferToAgent!==void 0&&(t.transferToAgent=n.transferToAgent),n.escalate!==void 0&&(t.escalate=n.escalate));return t}function S(o={}){return te(x({},o),{id:o.id||Le(),invocationId:o.invocationId||"",author:o.author,actions:o.actions||$(),longRunningToolIds:o.longRunningToolIds||[],branch:o.branch,timestamp:o.timestamp||Date.now()})}function ne(o){return o.actions.skipSummarization||o.longRunningToolIds&&o.longRunningToolIds.length>0?!0:L(o).length===0&&M(o).length===0&&!o.partial&&!Tt(o)}function L(o){let e=[];if(o.content&&o.content.parts)for(let t of o.content.parts)t.functionCall&&e.push(t.functionCall);return e}function M(o){let e=[];if(o.content&&o.content.parts)for(let t of o.content.parts)t.functionResponse&&e.push(t.functionResponse);return e}function Tt(o){var e;return o.content&&((e=o.content.parts)!=null&&e.length)?o.content.parts[o.content.parts.length-1].codeExecutionResult!==void 0:!1}function yn(o){var e;return(e=o.content)!=null&&e.parts?o.content.parts.map(t=>{var n;return(n=t.text)!=null?n:""}).join(""):""}var bt="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";function Le(){let o="";for(let e=0;e<8;e++)o+=bt[Math.floor(Math.random()*bt.length)];return o}var b=class{constructor(e={},t={}){this.value=e;this.delta=t}get(e,t){return e in this.delta?this.delta[e]:e in this.value?this.value[e]:t}set(e,t){this.value[e]=t,this.delta[e]=t}has(e){return e in this.value||e in this.delta}hasDelta(){return Object.keys(this.delta).length>0}update(e){this.delta=x(x({},this.delta),e),this.value=x(x({},this.value),e)}toRecord(){return x(x({},this.value),this.delta)}};b.APP_PREFIX="app:",b.USER_PREFIX="user:",b.TEMP_PREFIX="temp:";var _=class{constructor(e){this.invocationContext=e}get userContent(){return this.invocationContext.userContent}get invocationId(){return this.invocationContext.invocationId}get agentName(){return this.invocationContext.agent.name}get state(){return new b(this.invocationContext.session.state,{})}};var N=class extends _{constructor({invocationContext:e,eventActions:t}){super(e),this.eventActions=t||$(),this._state=new b(e.session.state,this.eventActions.stateDelta)}get state(){return this._state}loadArtifact(e,t){if(!this.invocationContext.artifactService)throw new Error("Artifact service is not initialized.");return this.invocationContext.artifactService.loadArtifact({appName:this.invocationContext.appName,userId:this.invocationContext.userId,sessionId:this.invocationContext.session.id,filename:e,version:t})}async saveArtifact(e,t){if(!this.invocationContext.artifactService)throw new Error("Artifact service is not initialized.");let n=await this.invocationContext.artifactService.saveArtifact({appName:this.invocationContext.appName,userId:this.invocationContext.userId,sessionId:this.invocationContext.session.id,filename:e,artifact:t});return this.eventActions.artifactDelta[e]=n,n}};function ge(){return typeof window<"u"}var me="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function oe(){let o="";for(let e=0;e<me.length;e++){let t=Math.random()*16|0;me[e]==="x"?o+=t.toString(16):me[e]==="y"?o+=(t&3|8).toString(16):o+=me[e]}return o}function St(o){return ge()?window.atob(o):Buffer.from(o,"base64").toString()}var Pe=class{constructor(){this.numberOfLlmCalls=0}incrementAndEnforceLlmCallsLimit(e){if(this.numberOfLlmCalls++,e&&e.maxLlmCalls>0&&this.numberOfLlmCalls>e.maxLlmCalls)throw new Error("Max number of llm calls limit of ".concat(e.maxLlmCalls," exceeded"))}},G=class{constructor(e){this.invocationCostManager=new Pe;this.artifactService=e.artifactService,this.sessionService=e.sessionService,this.memoryService=e.memoryService,this.invocationId=e.invocationId,this.branch=e.branch,this.agent=e.agent,this.userContent=e.userContent,this.session=e.session,this.endInvocation=e.endInvocation||!1,this.transcriptionCache=e.transcriptionCache,this.runConfig=e.runConfig,this.liveRequestQueue=e.liveRequestQueue,this.activeStreamingTools=e.activeStreamingTools,this.pluginManager=e.pluginManager}get appName(){return this.session.appName}get userId(){return this.session.userId}incrementLlmCallCount(){this.invocationCostManager.incrementAndEnforceLlmCallsLimit(this.runConfig)}};function Rt(){return"e-".concat(oe())}var _e=Symbol.for("google.adk.baseAgent");function An(o){return typeof o=="object"&&o!==null&&_e in o&&o[_e]===!0}var kt;kt=_e;var O=class{constructor(e){this[kt]=!0;this.name=xn(e.name),this.description=e.description,this.parentAgent=e.parentAgent,this.subAgents=e.subAgents||[],this.rootAgent=bn(this),this.beforeAgentCallback=wt(e.beforeAgentCallback),this.afterAgentCallback=wt(e.afterAgentCallback),this.setParentAgentForSubAgents()}runAsync(e){return g(this,null,function*(){let t=It.getTracer("gcp.vertex.agent").startSpan("agent_run [".concat(this.name,"]"));try{let a=this.createInvocationContext(e),c=yield new u(this.handleBeforeAgentCallback(a));if(c&&(yield c),a.endInvocation)return;try{for(var n=E(this.runAsyncImpl(a)),r,i,s;r=!(i=yield new u(n.next())).done;r=!1){let d=i.value;yield d}}catch(i){s=[i]}finally{try{r&&(i=n.return)&&(yield new u(i.call(n)))}finally{if(s)throw s[0]}}if(a.endInvocation)return;let l=yield new u(this.handleAfterAgentCallback(a));l&&(yield l)}finally{t.end()}})}runLive(e){return g(this,null,function*(){let t=It.getTracer("gcp.vertex.agent").startSpan("agent_run [".concat(this.name,"]"));try{throw new Error("Live mode is not implemented yet.")}finally{t.end()}})}findAgent(e){return this.name===e?this:this.findSubAgent(e)}findSubAgent(e){for(let t of this.subAgents){let n=t.findAgent(e);if(n)return n}}createInvocationContext(e){return new G(te(x({},e),{agent:this}))}async handleBeforeAgentCallback(e){if(this.beforeAgentCallback.length===0)return;let t=new N({invocationContext:e});for(let n of this.beforeAgentCallback){let r=await n(t);if(r)return e.endInvocation=!0,S({invocationId:e.invocationId,author:this.name,branch:e.branch,content:r,actions:t.eventActions})}if(t.state.hasDelta())return S({invocationId:e.invocationId,author:this.name,branch:e.branch,actions:t.eventActions})}async handleAfterAgentCallback(e){if(this.afterAgentCallback.length===0)return;let t=new N({invocationContext:e});for(let n of this.afterAgentCallback){let r=await n(t);if(r)return S({invocationId:e.invocationId,author:this.name,branch:e.branch,content:r,actions:t.eventActions})}if(t.state.hasDelta())return S({invocationId:e.invocationId,author:this.name,branch:e.branch,actions:t.eventActions})}setParentAgentForSubAgents(){for(let e of this.subAgents){if(e.parentAgent)throw new Error('Agent "'.concat(e.name,'" already has a parent agent, current parent: "').concat(e.parentAgent.name,'", trying to add: "').concat(this.name,'"'));e.parentAgent=this}}};function xn(o){if(!En(o))throw new Error('Found invalid agent name: "'.concat(o,'". Agent name must be a valid identifier. It should start with a letter (a-z, A-Z) or an underscore (_), and can only contain letters, digits (0-9), and underscores.'));if(o==="user")throw new Error("Agent name cannot be 'user'. 'user' is reserved for end-user's input.");return o}function En(o){return new RegExp("^[\\p{ID_Start}$_][\\p{ID_Continue}$_]*$","u").test(o)}function bn(o){for(;o.parentAgent;)o=o.parentAgent;return o}function wt(o){return o?Array.isArray(o)?o:[o]:[]}import{createUserContent as wn}from"@google/genai";import Pt from"lodash-es/isEmpty.js";var le=class{constructor(e){this.authConfig=e}getAuthResponse(e){let t="temp:"+this.authConfig.credentialKey;return e.get(t)}generateAuthRequest(){var t,n;let e=this.authConfig.authScheme.type;if(!["oauth2","openIdConnect"].includes(e))return this.authConfig;if((n=(t=this.authConfig.exchangedAuthCredential)==null?void 0:t.oauth2)!=null&&n.authUri)return this.authConfig;if(!this.authConfig.rawAuthCredential)throw new Error("Auth Scheme ".concat(e," requires authCredential."));if(!this.authConfig.rawAuthCredential.oauth2)throw new Error("Auth Scheme ".concat(e," requires oauth2 in authCredential."));if(this.authConfig.rawAuthCredential.oauth2.authUri)return{credentialKey:this.authConfig.credentialKey,authScheme:this.authConfig.authScheme,rawAuthCredential:this.authConfig.rawAuthCredential,exchangedAuthCredential:this.authConfig.rawAuthCredential};if(!this.authConfig.rawAuthCredential.oauth2.clientId||!this.authConfig.rawAuthCredential.oauth2.clientSecret)throw new Error("Auth Scheme ".concat(e," requires both clientId and clientSecret in authCredential.oauth2."));return{credentialKey:this.authConfig.credentialKey,authScheme:this.authConfig.authScheme,rawAuthCredential:this.authConfig.rawAuthCredential,exchangedAuthCredential:this.generateAuthUri()}}generateAuthUri(){return this.authConfig.rawAuthCredential}};var z=class{constructor({hint:e,confirmed:t,payload:n}){this.hint=e!=null?e:"",this.confirmed=t,this.payload=n}};var V=class extends N{constructor({invocationContext:e,eventActions:t,functionCallId:n,toolConfirmation:r}){super({invocationContext:e,eventActions:t}),this.functionCallId=n,this.toolConfirmation=r}get actions(){return this.eventActions}requestCredential(e){if(!this.functionCallId)throw new Error("functionCallId is not set.");let t=new le(e);this.eventActions.requestedAuthConfigs[this.functionCallId]=t.generateAuthRequest()}getAuthResponse(e){return new le(e).getAuthResponse(this.state)}listArtifacts(){if(!this.invocationContext.artifactService)throw new Error("Artifact service is not initialized.");return this.invocationContext.artifactService.listArtifactKeys({appName:this.invocationContext.session.appName,userId:this.invocationContext.session.userId,sessionId:this.invocationContext.session.id})}searchMemory(e){if(!this.invocationContext.memoryService)throw new Error("Memory service is not initialized.");return this.invocationContext.memoryService.searchMemory({appName:this.invocationContext.session.appName,userId:this.invocationContext.session.userId,query:e})}requestConfirmation({hint:e,payload:t}){if(!this.functionCallId)throw new Error("functionCallId is not set.");this.eventActions.requestedToolConfirmations[this.functionCallId]=new z({hint:e,confirmed:!1,payload:t})}};var Lt=(r=>(r[r.DEBUG=0]="DEBUG",r[r.INFO=1]="INFO",r[r.WARN=2]="WARN",r[r.ERROR=3]="ERROR",r))(Lt||{}),re=1;function Tn(o){re=o}var Be=class{log(e,...t){if(!(e<re))switch(e){case 0:this.debug(...t);break;case 1:this.info(...t);break;case 2:this.warn(...t);break;case 3:this.error(...t);break;default:throw new Error("Unsupported log level: ".concat(e))}}debug(...e){re>0||console.debug(he(0),...e)}info(...e){re>1||console.info(he(1),...e)}warn(...e){re>2||console.warn(he(2),...e)}error(...e){re>3||console.error(he(3),...e)}},Sn={0:"DEBUG",1:"INFO",2:"WARN",3:"ERROR"},Rn={0:"\x1B[34m",1:"\x1B[32m",2:"\x1B[33m",3:"\x1B[31m"},In="\x1B[0m";function he(o){return"".concat(Rn[o],"[ADK ").concat(Sn[o],"]:").concat(In)}var v=new Be;var Me="adk-",Ce="adk_request_credential",ie="adk_request_confirmation",kn={handleFunctionCallList:ve,generateAuthEvent:Fe,generateRequestConfirmationEvent:Oe};function Ne(){return"".concat(Me).concat(oe())}function _t(o){let e=L(o);if(e)for(let t of e)t.id||(t.id=Ne())}function Bt(o){if(o&&o.parts)for(let e of o.parts)e.functionCall&&e.functionCall.id&&e.functionCall.id.startsWith(Me)&&(e.functionCall.id=void 0),e.functionResponse&&e.functionResponse.id&&e.functionResponse.id.startsWith(Me)&&(e.functionResponse.id=void 0)}function Mt(o,e){let t=new Set;for(let n of o)n.name&&n.name in e&&e[n.name].isLongRunning&&n.id&&t.add(n.id);return t}function Fe(o,e){var r;if(!((r=e.actions)!=null&&r.requestedAuthConfigs)||Pt(e.actions.requestedAuthConfigs))return;let t=[],n=new Set;for(let[i,s]of Object.entries(e.actions.requestedAuthConfigs)){let a={name:Ce,args:{function_call_id:i,auth_config:s},id:Ne()};n.add(a.id),t.push({functionCall:a})}return S({invocationId:o.invocationId,author:o.agent.name,branch:o.branch,content:{parts:t,role:e.content.role},longRunningToolIds:Array.from(n)})}function Oe({invocationContext:o,functionCallEvent:e,functionResponseEvent:t}){var s,a;if(!((s=t.actions)!=null&&s.requestedToolConfirmations)||Pt(t.actions.requestedToolConfirmations))return;let n=[],r=new Set,i=L(e);for(let[c,l]of Object.entries(t.actions.requestedToolConfirmations)){let d=(a=i.find(m=>m.id===c))!=null?a:void 0;if(!d)continue;let f={name:ie,args:{originalFunctionCall:d,toolConfirmation:l},id:Ne()};r.add(f.id),n.push({functionCall:f})}return S({invocationId:o.invocationId,author:o.agent.name,branch:o.branch,content:{parts:n,role:t.content.role},longRunningToolIds:Array.from(r)})}async function Ln(o,e,t){return v.debug("callToolAsync ".concat(o.name)),await o.runAsync({args:e,toolContext:t})}async function Nt({invocationContext:o,functionCallEvent:e,toolsDict:t,beforeToolCallbacks:n,afterToolCallbacks:r,filters:i,toolConfirmationDict:s}){let a=L(e);return await ve({invocationContext:o,functionCalls:a,toolsDict:t,beforeToolCallbacks:n,afterToolCallbacks:r,filters:i,toolConfirmationDict:s})}async function ve({invocationContext:o,functionCalls:e,toolsDict:t,beforeToolCallbacks:n,afterToolCallbacks:r,filters:i,toolConfirmationDict:s}){var d;let a=[],c=e.filter(f=>!i||f.id&&i.has(f.id));for(let f of c){let m;s&&f.id&&(m=s[f.id]);let{tool:C,toolContext:h}=Pn({invocationContext:o,functionCall:f,toolsDict:t,toolConfirmation:m});v.debug("execute_tool ".concat(C.name));let y=(d=f.args)!=null?d:{},p=null,A;if(p=await o.pluginManager.runBeforeToolCallback({tool:C,toolArgs:y,toolContext:h}),p==null){for(let k of n)if(p=await k({tool:C,args:y,context:h}),p)break}if(p==null)try{p=await Ln(C,y,h)}catch(k){if(k instanceof Error){let B=await o.pluginManager.runOnToolErrorCallback({tool:C,toolArgs:y,toolContext:h,error:k});B?p=B:A=k.message}else A=k}let I=await o.pluginManager.runAfterToolCallback({tool:C,toolArgs:y,toolContext:h,result:p});if(I==null){for(let k of r)if(I=await k({tool:C,args:y,context:h,response:p}),I)break}if(I!=null&&(p=I),C.isLongRunning&&!p)continue;A?p={error:A}:(typeof p!="object"||p==null)&&(p={result:p});let w=S({invocationId:o.invocationId,author:o.agent.name,content:wn({functionResponse:{id:h.functionCallId,name:C.name,response:p}}),actions:h.actions,branch:o.branch});v.debug("traceToolCall",{tool:C.name,args:y,functionResponseEvent:w.id}),a.push(w)}if(!a.length)return null;let l=_n(a);return a.length>1&&(v.debug("execute_tool (merged)"),v.debug("traceMergedToolCalls",{responseEventId:l.id,functionResponseEvent:l.id})),l}function Pn({invocationContext:o,functionCall:e,toolsDict:t,toolConfirmation:n}){if(!e.name||!(e.name in t))throw new Error("Function ".concat(e.name," is not found in the toolsDict."));let r=new V({invocationContext:o,functionCallId:e.id||void 0,toolConfirmation:n});return{tool:t[e.name],toolContext:r}}function _n(o){if(!o.length)throw new Error("No function response events provided.");if(o.length===1)return o[0];let e=[];for(let i of o)i.content&&i.content.parts&&e.push(...i.content.parts);let t=o[0],n=o.map(i=>i.actions||{}),r=Et(n);return S({author:t.author,branch:t.branch,content:{role:"user",parts:e},actions:r,timestamp:t.timestamp})}var De=class{constructor(){this.queue=[];this.resolveFnFifoQueue=[];this.isClosed=!1}send(e){if(this.isClosed)throw new Error("Cannot send to a closed queue.");this.resolveFnFifoQueue.length>0?this.resolveFnFifoQueue.shift()(e):this.queue.push(e)}async get(){return this.queue.length>0?this.queue.shift():this.isClosed?{close:!0}:new Promise(e=>{this.resolveFnFifoQueue.push(e)})}close(){if(this.isClosed)return;for(this.isClosed=!0;this.resolveFnFifoQueue.length>0&&this.queue.length>0;){let t=this.resolveFnFifoQueue.shift(),n=this.queue.shift();t(n)}let e={close:!0};for(;this.resolveFnFifoQueue.length>0;)this.resolveFnFifoQueue.shift()(e)}sendContent(e){this.send({content:e})}sendRealtime(e){this.send({blob:e})}sendActivityStart(){this.send({activityStart:{}})}sendActivityEnd(){this.send({activityEnd:{}})}[Symbol.asyncIterator](){return g(this,null,function*(){for(;;){let e=yield new u(this.get());if(yield e,e.close)break}})}};import tn from"lodash-es/cloneDeep.js";import{z as nn}from"zod";var Z=class{constructor(){this.optimizeDataFile=!1;this.stateful=!1;this.errorRetryAttempts=2;this.codeBlockDelimiters=[["```tool_code\n","\n```"],["```python\n","\n```"]];this.executionResultDelimiters=["```tool_output\n","\n```"]}};var Bn="^projects/[^/]+/locations/[^/]+/publishers/[^/]+/models/(.+)$";function $e(o){let e=o.match(Bn);return e?e[1]:o}function Ft(o){return $e(o).startsWith("gemini-")}function Mn(o){if(!/^\d+(\.\d+)*$/.test(o))return{valid:!1,major:0,minor:0,patch:0};let e=o.split(".").map(t=>parseInt(t,10));return{valid:!0,major:e[0],minor:e.length>1?e[1]:0,patch:e.length>2?e[2]:0}}function Ot(o){return $e(o).startsWith("gemini-1")}function Ge(o){if(!o)return!1;let e=$e(o);if(!e.startsWith("gemini-"))return!1;let t=e.slice(7).split("-",1)[0],n=Mn(t);return n.valid&&n.major>=2}var q=class extends Z{executeCode(e){return Promise.resolve({stdout:"",stderr:"",outputFiles:[]})}processLlmRequest(e){if(e.model&&Ge(e.model)){e.config=e.config||{},e.config.tools=e.config.tools||[],e.config.tools.push({codeExecution:{}});return}throw new Error("Gemini code execution tool is not supported for model ".concat(e.model))}};import{Language as Nn,Outcome as Dt}from"@google/genai";import Fn from"lodash-es/cloneDeep.js";function $t(o,e){var d;if(!((d=o.parts)!=null&&d.length))return"";for(let f=0;f<o.parts.length;f++){let m=o.parts[f];if(m.executableCode&&(f===o.parts.length-1||!o.parts[f+1].codeExecutionResult))return o.parts=o.parts.slice(0,f+1),m.executableCode.code}let t=o.parts.filter(f=>f.text);if(!t.length)return"";let n=Fn(t[0]),r=t.map(f=>f.text).join("\n"),i=e.map(f=>f[0]).join("|"),s=e.map(f=>f[1]).join("|"),a=new RegExp("?<prefix>.*?)(".concat(i,")(?<codeStr>.*?)(").concat(s,")(?<suffix>.*?)$"),"s").exec(r),{prefix:c,codeStr:l}=(a==null?void 0:a.groups)||{};return l?(o.parts=[],c&&(n.text=c,o.parts.push(n)),o.parts.push(qe(l)),l):""}function qe(o){return{text:o,executableCode:{code:o,language:Nn.PYTHON}}}function Gt(o){if(o.stderr)return{text:o.stderr,codeExecutionResult:{outcome:Dt.OUTCOME_FAILED}};let e=[];return(o.stdout||!o.outputFiles)&&e.push("Code execution result:\n".concat(o.stdout,"\n")),o.outputFiles&&e.push("Saved artifacts:\n"+o.outputFiles.map(t=>t.name).join(", ")),{text:e.join("\n\n"),codeExecutionResult:{outcome:Dt.OUTCOME_OK}}}function qt(o,e,t){var r;if(!((r=o.parts)!=null&&r.length))return;let n=o.parts[o.parts.length-1];n.executableCode?o.parts[o.parts.length-1]={text:e[0]+n.executableCode.code+e[1]}:o.parts.length==1&&n.codeExecutionResult&&(o.parts[o.parts.length-1]={text:t[0]+n.codeExecutionResult.output+t[1]},o.role="user")}import On from"lodash-es/cloneDeep.js";var Ue="_code_execution_context",je="execution_session_id",W="processed_input_files",Q="_code_executor_input_files",Y="_code_executor_error_counts",Ke="_code_execution_results",ue=class{constructor(e){this.sessionState=e;var t;this.context=(t=e.get(Ue))!=null?t:{},this.sessionState=e}getStateDelta(){return{[Ue]:On(this.context)}}getExecutionId(){if(je in this.context)return this.context[je]}setExecutionId(e){this.context[je]=e}getProcessedFileNames(){return W in this.context?this.context[W]:[]}addProcessedFileNames(e){W in this.context||(this.context[W]=[]),this.context[W].push(...e)}getInputFiles(){return Q in this.sessionState?this.sessionState.get(Q):[]}addInputFiles(e){Q in this.sessionState||this.sessionState.set(Q,[]),this.sessionState.get(Q).push(...e)}clearInputFiles(){Q in this.sessionState&&this.sessionState.set(Q,[]),W in this.context&&(this.context[W]=[])}getErrorCount(e){return Y in this.sessionState&&this.sessionState.get(Y)[e]||0}incrementErrorCount(e){Y in this.sessionState||this.sessionState.set(Y,{}),this.sessionState.get(Y)[e]=this.getErrorCount(e)+1}resetErrorCount(e){if(!(Y in this.sessionState))return;let t=this.sessionState.get(Y);e in t&&delete t[e]}updateCodeExecutionResult({invocationId:e,code:t,resultStdout:n,resultStderr:r}){Ke in this.sessionState||this.sessionState.set(Ke,{});let i=this.sessionState.get(Ke);e in i||(i[e]=[]),i[e].push({code:t,resultStdout:n,resultStderr:r,timestamp:Date.now()})}getCodeExecutionContext(e){return this.sessionState.get(Ue)||{}}};var Ve="0.2.3";var Dn="google-adk",$n="gl-typescript",Gn="remote_reasoning_engine",qn="GOOGLE_CLOUD_AGENT_ENGINE_ID";function Un(){let o="".concat(Dn,"/").concat(Ve);!ge()&&process.env[qn]&&(o="".concat(o,"+").concat(Gn));let e="".concat($n,"/").concat(ge()?window.navigator.userAgent:process.version);return[o,e]}function Ut(){return Un()}var Ze=Symbol.for("google.adk.baseModel");function ze(o){return typeof o=="object"&&o!==null&&Ze in o&&o[Ze]===!0}var jt;jt=Ze;var se=class{constructor({model:e}){this[jt]=!0;this.model=e}get trackingHeaders(){let t=Ut().join(" ");return{"x-goog-api-client":t,"user-agent":t}}maybeAppendUserContent(e){var t;e.contents.length===0&&e.contents.push({role:"user",parts:[{text:"Handle the requests as specified in the System Instruction."}]}),((t=e.contents[e.contents.length-1])==null?void 0:t.role)!=="user"&&e.contents.push({role:"user",parts:[{text:"Continue processing previous requests as instructed. Exit or provide a summary if no more outputs are needed."}]})}};se.supportedModels=[];function fe(o,e){o.config||(o.config={});let t=e.join("\n\n");o.config.systemInstruction?o.config.systemInstruction+="\n\n"+t:o.config.systemInstruction=t}function Kt(o,e){o.config||(o.config={}),o.config.responseSchema=e,o.config.responseMimeType="application/json"}import{createPartFromText as Zt,FinishReason as Vn,GoogleGenAI as Qe}from"@google/genai";function Vt(){return jn("GOOGLE_GENAI_USE_VERTEXAI")?"VERTEX_AI":"GEMINI_API"}function jn(o){if(!process.env)return!1;let e=(process.env[o]||"").toLowerCase();return["true","1"].includes(o.toLowerCase())}var ye=class{constructor(e){this.geminiSession=e}async sendHistory(e){let t=e.filter(n=>{var r;return n.parts&&((r=n.parts[0])==null?void 0:r.text)});t.length>0?this.geminiSession.sendClientContent({turns:t,turnComplete:t[t.length-1].role==="user"}):v.info("no content is sent")}async sendContent(e){if(!e.parts)throw new Error("Content must have parts.");if(e.parts[0].functionResponse){let t=e.parts.map(n=>n.functionResponse).filter(n=>!!n);v.debug("Sending LLM function response:",t),this.geminiSession.sendToolResponse({functionResponses:t})}else v.debug("Sending LLM new content",e),this.geminiSession.sendClientContent({turns:[e],turnComplete:!0})}async sendRealtime(e){v.debug("Sending LLM Blob:",e),this.geminiSession.sendRealtimeInput({media:e})}buildFullTextResponse(e){return{content:{role:"model",parts:[{text:e}]}}}receive(){return g(this,null,function*(){throw new Error("Not Implemented.")})}async close(){this.geminiSession.close()}};function We(o){var t;let e=o.usageMetadata;if(o.candidates&&o.candidates.length>0){let n=o.candidates[0];return(t=n.content)!=null&&t.parts&&n.content.parts.length>0?{content:n.content,groundingMetadata:n.groundingMetadata,usageMetadata:e,finishReason:n.finishReason}:{errorCode:n.finishReason,errorMessage:n.finishMessage,usageMetadata:e,finishReason:n.finishReason}}return o.promptFeedback?{errorCode:o.promptFeedback.blockReason,errorMessage:o.promptFeedback.blockReasonMessage,usageMetadata:e}:{errorCode:"UNKNOWN_ERROR",errorMessage:"Unknown error.",usageMetadata:e}}var ae=class extends se{constructor({model:e,apiKey:t,vertexai:n,project:r,location:i,headers:s}){e||(e="gemini-2.5-flash"),super({model:e}),this.project=r,this.location=i,this.apiKey=t,this.headers=s;let a=typeof process=="object";if(this.vertexai=!!n,!this.vertexai&&a){let c=process.env.GOOGLE_GENAI_USE_VERTEXAI;c&&(this.vertexai=c.toLowerCase()==="true"||c==="1")}if(this.vertexai){if(a&&!this.project&&(this.project=process.env.GOOGLE_CLOUD_PROJECT),a&&!this.location&&(this.location=process.env.GOOGLE_CLOUD_LOCATION),!this.project)throw new Error("VertexAI project must be provided via constructor or GOOGLE_CLOUD_PROJECT environment variable.");if(!this.location)throw new Error("VertexAI location must be provided via constructor or GOOGLE_CLOUD_LOCATION environment variable.")}else if(!this.apiKey&&a&&(this.apiKey=process.env.GOOGLE_GENAI_API_KEY||process.env.GEMINI_API_KEY),!this.apiKey)throw new Error("API key must be provided via constructor or GOOGLE_GENAI_API_KEY or GEMINI_API_KEY environment variable.")}generateContentAsync(e,t=!1){return g(this,null,function*(){var n,r,i,s,f,m,C;if(this.preprocessRequest(e),this.maybeAppendUserContent(e),v.info("Sending out request, model: ".concat(e.model,", backend: ").concat(this.apiBackend,", stream: ").concat(t)),(n=e.config)!=null&&n.httpOptions&&(e.config.httpOptions.headers=x(x({},e.config.httpOptions.headers),this.trackingHeaders)),t){let h=yield new u(this.apiClient.models.generateContentStream({model:(r=e.model)!=null?r:this.model,contents:e.contents,config:e.config})),y="",p="",A,I;try{for(var a=E(h),c,l,d;c=!(l=yield new u(a.next())).done;c=!1){let w=l.value;I=w;let k=We(w);A=k.usageMetadata;let B=(s=(i=k.content)==null?void 0:i.parts)==null?void 0:s[0];if(B!=null&&B.text)"thought"in B&&B.thought?y+=B.text:p+=B.text,k.partial=!0;else if((y||p)&&(!B||!B.inlineData)){let we=[];y&&we.push({text:y,thought:!0}),p&&we.push(Zt(p)),yield{content:{role:"model",parts:we},usageMetadata:k.usageMetadata},y="",p=""}yield k}}catch(l){d=[l]}finally{try{c&&(l=a.return)&&(yield new u(l.call(a)))}finally{if(d)throw d[0]}}if((p||y)&&((m=(f=I==null?void 0:I.candidates)==null?void 0:f[0])==null?void 0:m.finishReason)===Vn.STOP){let w=[];y&&w.push({text:y,thought:!0}),p&&w.push({text:p}),yield{content:{role:"model",parts:w},usageMetadata:A}}}else{let h=yield new u(this.apiClient.models.generateContent({model:(C=e.model)!=null?C:this.model,contents:e.contents,config:e.config}));yield We(h)}})}get apiClient(){if(this._apiClient)return this._apiClient;let e=x(x({},this.trackingHeaders),this.headers);return this.vertexai?this._apiClient=new Qe({vertexai:this.vertexai,project:this.project,location:this.location,httpOptions:{headers:e}}):this._apiClient=new Qe({apiKey:this.apiKey,httpOptions:{headers:e}}),this._apiClient}get apiBackend(){return this._apiBackend||(this._apiBackend=this.apiClient.vertexai?"VERTEX_AI":"GEMINI_API"),this._apiBackend}get liveApiVersion(){return this._liveApiVersion||(this._liveApiVersion=this.apiBackend==="VERTEX_AI"?"v1beta1":"v1alpha"),this._liveApiVersion}get liveApiClient(){return this._liveApiClient||(this._liveApiClient=new Qe({apiKey:this.apiKey,httpOptions:{headers:this.trackingHeaders,apiVersion:this.liveApiVersion}})),this._liveApiClient}async connect(e){var n,r,i,s;(n=e.liveConnectConfig)!=null&&n.httpOptions&&(e.liveConnectConfig.httpOptions.headers||(e.liveConnectConfig.httpOptions.headers={}),Object.assign(e.liveConnectConfig.httpOptions.headers,this.trackingHeaders),e.liveConnectConfig.httpOptions.apiVersion=this.liveApiVersion),(r=e.config)!=null&&r.systemInstruction&&(e.liveConnectConfig.systemInstruction={role:"system",parts:[Zt(e.config.systemInstruction)]}),e.liveConnectConfig.tools=(i=e.config)==null?void 0:i.tools;let t=await this.liveApiClient.live.connect({model:(s=e.model)!=null?s:this.model,config:e.liveConnectConfig,callbacks:{onmessage:()=>{}}});return new ye(t)}preprocessRequest(e){if(this.apiBackend==="GEMINI_API"&&(e.config&&(e.config.labels=void 0),e.contents)){for(let t of e.contents)if(t.parts)for(let n of t.parts)zt(n.inlineData),zt(n.fileData)}}};ae.supportedModels=[/gemini-.*/,/projects\/.+\/locations\/.+\/endpoints\/.+/,/projects\/.+\/locations\/.+\/publishers\/google\/models\/gemini.+/];function zt(o){o&&o.displayName&&(o.displayName=void 0)}var Ye=class{constructor(e){this.maxSize=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){if(this.cache.size>=this.maxSize&&!this.cache.has(e)){let n=this.cache.keys().next().value;n!==void 0&&this.cache.delete(n)}this.cache.set(e,t)}},F=class F{static newLlm(e){return new(F.resolve(e))({model:e})}static _register(e,t){F.llmRegistryDict.has(e)&&v.info("Updating LLM class for ".concat(e," from ").concat(F.llmRegistryDict.get(e)," to ").concat(t)),F.llmRegistryDict.set(e,t)}static register(e){for(let t of e.supportedModels)F._register(t,e)}static resolve(e){let t=F.resolveCache.get(e);if(t)return t;for(let[n,r]of F.llmRegistryDict.entries())if(new RegExp("^".concat(n instanceof RegExp?n.source:n,"$"),n instanceof RegExp?n.flags:void 0).test(e))return F.resolveCache.set(e,r),r;throw new Error("Model ".concat(e," not found."))}};F.llmRegistryDict=new Map,F.resolveCache=new Ye(32);var ce=F;ce.register(ae);var D=class{constructor(e){var t;this.name=e.name,this.description=e.description,this.isLongRunning=(t=e.isLongRunning)!=null?t:!1}_getDeclaration(){}async processLlmRequest({toolContext:e,llmRequest:t}){let n=this._getDeclaration();if(!n)return;t.toolsDict[this.name]=this;let r=Zn(t);r?(r.functionDeclarations||(r.functionDeclarations=[]),r.functionDeclarations.push(n)):(t.config=t.config||{},t.config.tools=t.config.tools||[],t.config.tools.push({functionDeclarations:[n]}))}get apiVariant(){return Vt()}};function Zn(o){var e;return(((e=o.config)==null?void 0:e.tools)||[]).find(t=>"functionDeclarations"in t)}import{Type as zn}from"@google/genai";import{ZodObject as Wn}from"zod";import{Type as P}from"@google/genai";import{z as R}from"zod";function Wt(o){var e;return o!==null&&typeof o=="object"&&((e=o._def)==null?void 0:e.typeName)==="ZodObject"}function U(o){let e=o._def;if(!e)return{};let t=e.description,n={};t&&(n.description=t);let r=i=>(i.description===void 0&&delete i.description,i);switch(e.typeName){case R.ZodFirstPartyTypeKind.ZodString:n.type=P.STRING;for(let c of e.checks||[])c.kind==="min"?n.minLength=c.value.toString():c.kind==="max"?n.maxLength=c.value.toString():c.kind==="email"?n.format="email":c.kind==="uuid"?n.format="uuid":c.kind==="url"?n.format="uri":c.kind==="regex"&&(n.pattern=c.regex.source);return r(n);case R.ZodFirstPartyTypeKind.ZodNumber:n.type=P.NUMBER;for(let c of e.checks||[])c.kind==="min"?n.minimum=c.value:c.kind==="max"?n.maximum=c.value:c.kind==="int"&&(n.type=P.INTEGER);return r(n);case R.ZodFirstPartyTypeKind.ZodBoolean:return n.type=P.BOOLEAN,r(n);case R.ZodFirstPartyTypeKind.ZodArray:return n.type=P.ARRAY,n.items=U(e.type),e.minLength&&(n.minItems=e.minLength.value.toString()),e.maxLength&&(n.maxItems=e.maxLength.value.toString()),r(n);case R.ZodFirstPartyTypeKind.ZodObject:return Ae(o);case R.ZodFirstPartyTypeKind.ZodLiteral:let i=typeof e.value;if(n.enum=[e.value.toString()],i==="string")n.type=P.STRING;else if(i==="number")n.type=P.NUMBER;else if(i==="boolean")n.type=P.BOOLEAN;else if(e.value===null)n.type=P.NULL;else throw new Error("Unsupported ZodLiteral value type: ".concat(i));return r(n);case R.ZodFirstPartyTypeKind.ZodEnum:return n.type=P.STRING,n.enum=e.values,r(n);case R.ZodFirstPartyTypeKind.ZodNativeEnum:return n.type=P.STRING,n.enum=Object.values(e.values),r(n);case R.ZodFirstPartyTypeKind.ZodUnion:return n.anyOf=e.options.map(U),r(n);case R.ZodFirstPartyTypeKind.ZodOptional:return U(e.innerType);case R.ZodFirstPartyTypeKind.ZodNullable:let s=U(e.innerType);return r(s?x({anyOf:[s,{type:P.NULL}]},t&&{description:t}):x({type:P.NULL},t&&{description:t}));case R.ZodFirstPartyTypeKind.ZodDefault:let a=U(e.innerType);return a&&(a.default=e.defaultValue()),a;case R.ZodFirstPartyTypeKind.ZodBranded:return U(e.type);case R.ZodFirstPartyTypeKind.ZodReadonly:return U(e.innerType);case R.ZodFirstPartyTypeKind.ZodNull:return n.type=P.NULL,r(n);case R.ZodFirstPartyTypeKind.ZodAny:case R.ZodFirstPartyTypeKind.ZodUnknown:return r(x({},t&&{description:t}));default:throw new Error("Unsupported Zod type: ".concat(e.typeName))}}function Ae(o){if(o._def.typeName!==R.ZodFirstPartyTypeKind.ZodObject)throw new Error("Expected a ZodObject");let e=o.shape,t={},n=[];for(let s in e){let a=e[s],c=U(a);c&&(t[s]=c);let l=a,d=!1;for(;l._def.typeName===R.ZodFirstPartyTypeKind.ZodOptional||l._def.typeName===R.ZodFirstPartyTypeKind.ZodDefault;)d=!0,l=l._def.innerType;d||n.push(s)}let r=o._def.catchall,i=!1;return r&&r._def.typeName!==R.ZodFirstPartyTypeKind.ZodNever?i=U(r)||!0:i=o._def.unknownKeys==="passthrough",x({type:P.OBJECT,properties:t,required:n.length>0?n:[]},o._def.description?{description:o._def.description}:{})}function Qn(o){return o===void 0?{type:zn.OBJECT,properties:{}}:Wt(o)?Ae(o):o}var j=class extends D{constructor(e){var n;let t=(n=e.name)!=null?n:e.execute.name;if(!t)throw new Error("Tool name cannot be empty. Either name the `execute` function or provide a `name`.");super({name:t,description:e.description,isLongRunning:e.isLongRunning}),this.execute=e.execute,this.parameters=e.parameters}_getDeclaration(){return{name:this.name,description:this.description,parameters:Qn(this.parameters)}}async runAsync(e){try{let t=e.args;return this.parameters instanceof Wn&&(t=this.parameters.parse(e.args)),await this.execute(t,e.toolContext)}catch(t){let n=t instanceof Error?t.message:String(t);throw new Error("Error in tool '".concat(this.name,"': ").concat(n))}}};var K=class{};import Yn from"lodash-es/cloneDeep.js";function Xe(o,e,t){var s,a,c;let n=[];for(let l of o)!((s=l.content)!=null&&s.role)||((c=(a=l.content.parts)==null?void 0:a[0])==null?void 0:c.text)===""||t&&l.branch&&!t.startsWith(l.branch)||Xn(l)||Hn(l)||n.push(Xt(e,l)?Jn(l):l);let r=eo(n);r=to(r);let i=[];for(let l of r){let d=Yn(l.content);Bt(d),i.push(d)}return i}function Yt(o,e,t){for(let n=o.length-1;n>=0;n--){let r=o[n];if(r.author==="user"||Xt(e,r))return Xe(o.slice(n),e,t)}return[]}function Xn(o){var e,t,n;if(!((e=o.content)!=null&&e.parts))return!1;for(let r of o.content.parts)if(((t=r.functionCall)==null?void 0:t.name)===Ce||((n=r.functionResponse)==null?void 0:n.name)===Ce)return!0;return!1}function Hn(o){var e,t,n;if(!((e=o.content)!=null&&e.parts))return!1;for(let r of o.content.parts)if(((t=r.functionCall)==null?void 0:t.name)===ie||((n=r.functionResponse)==null?void 0:n.name)===ie)return!0;return!1}function Xt(o,e){return!!o&&e.author!==o&&e.author!=="user"}function Jn(o){var t,n,r,i,s,a;if(!((n=(t=o.content)==null?void 0:t.parts)!=null&&n.length))return o;let e={role:"user",parts:[{text:"For context:"}]};for(let c of o.content.parts)if(c.text&&!c.thought)(r=e.parts)==null||r.push({text:"[".concat(o.author,"] said: ").concat(c.text)});else if(c.functionCall){let l=Qt(c.functionCall.args);(i=e.parts)==null||i.push({text:"[".concat(o.author,"] called tool `").concat(c.functionCall.name,"` with parameters: ").concat(l)})}else if(c.functionResponse){let l=Qt(c.functionResponse.response);(s=e.parts)==null||s.push({text:"[".concat(o.author,"] tool `").concat(c.functionResponse.name,"` returned result: ").concat(l)})}else(a=e.parts)==null||a.push(c);return S({invocationId:o.invocationId,author:"user",content:e,branch:o.branch,timestamp:o.timestamp})}function Ht(o){var r;if(o.length===0)throw new Error("Cannot merge an empty list of events.");let e=S(o[0]),t=((r=e.content)==null?void 0:r.parts)||[];if(t.length===0)throw new Error("There should be at least one function_response part.");let n={};for(let i=0;i<t.length;i++){let s=t[i];s.functionResponse&&s.functionResponse.id&&(n[s.functionResponse.id]=i)}for(let i of o.slice(1)){if(!i.content||!i.content.parts)throw new Error("There should be at least one function_response part.");for(let s of i.content.parts)if(s.functionResponse&&s.functionResponse.id){let a=s.functionResponse.id;a in n?t[n[a]]=s:(t.push(s),n[a]=t.length-1)}else t.push(s)}return e}function eo(o){if(o.length===0)return o;let e=o[o.length-1],t=M(e);if(!(t!=null&&t.length))return o;let n=new Set(t.filter(c=>!!c.id).map(c=>c.id)),r=o.at(-2);if(r){let c=L(r);if(c){for(let l of c)if(l.id&&n.has(l.id))return o}}let i=-1;for(let c=o.length-2;c>=0;c--){let l=o[c],d=L(l);if(d!=null&&d.length){for(let f of d)if(f.id&&n.has(f.id)){i=c;let m=new Set(d.map(h=>h.id).filter(h=>!!h));if(!Array.from(n).every(h=>m.has(h)))throw new Error("Last response event should only contain the responses for the function calls in the same function call event. Function"+" call ids found : ".concat(Array.from(m).join(", "),", function response")+" ids provided: ".concat(Array.from(n).join(", ")));n=m;break}}}if(i===-1)throw new Error("No function call event found for function responses ids: ".concat(Array.from(n).join(", ")));let s=[];for(let c=i+1;c<o.length-1;c++){let l=o[c],d=M(l);d&&d.some(f=>f.id&&n.has(f.id))&&s.push(l)}s.push(o[o.length-1]);let a=o.slice(0,i+1);return a.push(Ht(s)),a}function to(o){let e=new Map;for(let n=0;n<o.length;n++){let r=o[n],i=M(r);if(i!=null&&i.length)for(let s of i)s.id&&e.set(s.id,n)}let t=[];for(let n of o){if(M(n).length>0)continue;let r=L(n);if(r!=null&&r.length){let i=new Set;for(let s of r){let a=s.id;a&&e.has(a)&&i.add(e.get(a))}if(t.push(n),i.size===0)continue;if(i.size===1){let[s]=[...i];t.push(o[s])}else{let a=Array.from(i).sort((c,l)=>c-l).map(c=>o[c]);t.push(Ht(a))}}else t.push(n)}return t}function Qt(o){if(typeof o=="string")return o;try{return JSON.stringify(o)}catch(e){return String(o)}}async function He(o,e){let t=e.invocationContext;async function n(c){let l=c[0].replace(/^\{+/,"").replace(/\}+$/,"").trim(),d=l.endsWith("?");if(d&&(l=l.slice(0,-1)),l.startsWith("artifact.")){let f=l.substring(9);if(t.artifactService===void 0)throw new Error("Artifact service is not initialized.");let m=await t.artifactService.loadArtifact({appName:t.session.appName,userId:t.session.userId,sessionId:t.session.id,filename:f});if(!m)throw new Error("Artifact ".concat(f," not found."));return String(m)}if(!ro(l))return c[0];if(l in t.session.state)return String(t.session.state[l]);if(d)return"";throw new Error("Context variable not found: `".concat(l,"`."))}let r=/\{+[^{}]*}+/g,i=[],s=0,a=o.matchAll(r);for(let c of a){i.push(o.slice(s,c.index));let l=await n(c);i.push(l),s=c.index+c[0].length}return i.push(o.slice(s)),i.join("")}var no=/^[a-zA-Z_][a-zA-Z0-9_]*$/;function Jt(o){return o===""||o===void 0?!1:no.test(o)}var oo=[b.APP_PREFIX,b.USER_PREFIX,b.TEMP_PREFIX];function ro(o){let e=o.split(":");return e.length===0||e.length>2?!1:e.length===1?Jt(o):oo.includes(e[0]+":")?Jt(e[1]):!1}var Je=(n=>(n.NONE="none",n.SSE="sse",n.BIDI="bidi",n))(Je||{});function en(o={}){return x({saveInputBlobsAsArtifacts:!1,supportCfc:!1,enableAffectiveDialog:!1,streamingMode:"none",maxLlmCalls:io(o.maxLlmCalls||500)},o)}function io(o){if(o>Number.MAX_SAFE_INTEGER)throw new Error("maxLlmCalls should be less than ".concat(Number.MAX_SAFE_INTEGER,"."));return o<=0&&v.warn("maxLlmCalls is less than or equal to 0. This will result in no enforcement on total number of llm calls that will be made for a run. This may not be ideal, as this could result in a never ending communication between the model and the agent in certain cases."),o}var on="adk_agent_name";async function rn(o,e){return o instanceof D?[o]:await o.getTools(e)}var et=class extends K{runAsync(e,t){return g(this,null,function*(){var r;let n=e.agent;n instanceof T&&(t.model=n.canonicalModel.model,t.config=x({},(r=n.generateContentConfig)!=null?r:{}),n.outputSchema&&Kt(t,n.outputSchema),e.runConfig&&(t.liveConnectConfig.responseModalities=e.runConfig.responseModalities,t.liveConnectConfig.speechConfig=e.runConfig.speechConfig,t.liveConnectConfig.outputAudioTranscription=e.runConfig.outputAudioTranscription,t.liveConnectConfig.inputAudioTranscription=e.runConfig.inputAudioTranscription,t.liveConnectConfig.realtimeInputConfig=e.runConfig.realtimeInputConfig,t.liveConnectConfig.enableAffectiveDialog=e.runConfig.enableAffectiveDialog,t.liveConnectConfig.proactivity=e.runConfig.proactivity))})}},so=new et,tt=class extends K{runAsync(e,t){return g(this,null,function*(){let n=e.agent,r=['You are an agent. Your internal name is "'.concat(n.name,'".')];n.description&&r.push('The description about you is "'.concat(n.description,'"')),fe(t,r)})}},ao=new tt,nt=class extends K{runAsync(e,t){return g(this,null,function*(){let n=e.agent;if(!(n instanceof T)||!(n.rootAgent instanceof T))return;let r=n.rootAgent;if(r instanceof T&&r.globalInstruction){let{instruction:i,requireStateInjection:s}=yield new u(r.canonicalGlobalInstruction(new _(e))),a=i;s&&(a=yield new u(He(i,new _(e)))),fe(t,[a])}if(n.instruction){let{instruction:i,requireStateInjection:s}=yield new u(n.canonicalInstruction(new _(e))),a=i;s&&(a=yield new u(He(i,new _(e)))),fe(t,[a])}})}},co=new nt,ot=class{runAsync(e,t){return g(this,null,function*(){let n=e.agent;!n||!(n instanceof T)||(n.includeContents==="default"?t.contents=Xe(e.session.events,n.name,e.branch):t.contents=Yt(e.session.events,n.name,e.branch))})}},lo=new ot,rt=class extends K{constructor(){super(...arguments);this.toolName="transfer_to_agent";this.tool=new j({name:this.toolName,description:"Transfer the question to another agent. This tool hands off control to another agent when it is more suitable to answer the user question according to the agent description.",parameters:nn.object({agentName:nn.string().describe("the agent name to transfer to.")}),execute:function(t,n){if(!n)throw new Error("toolContext is required.");return n.actions.transferToAgent=t.agentName,"Transfer queued"}})}runAsync(t,n){return g(this,null,function*(){if(!(t.agent instanceof T))return;let r=this.getTransferTargets(t.agent);if(!r.length)return;fe(n,[this.buildTargetAgentsInstructions(t.agent,r)]);let i=new V({invocationContext:t});yield new u(this.tool.processLlmRequest({toolContext:i,llmRequest:n}))})}buildTargetAgentsInfo(t){return"\nAgent name: ".concat(t.name,"\nAgent description: ").concat(t.description,"\n")}buildTargetAgentsInstructions(t,n){let r="\nYou have a list of other agents to transfer to:\n\n".concat(n.map(this.buildTargetAgentsInfo).join("\n"),"\n\nIf you are the best to answer the question according to your description, you\ncan answer it.\n\nIf another agent is better for answering the question according to its\ndescription, call `").concat(this.toolName,"` function to transfer the\nquestion to that agent. When transferring, do not generate any text other than\nthe function call.\n");return t.parentAgent&&!t.disallowTransferToParent&&(r+="\nYour parent agent is ".concat(t.parentAgent.name,". If neither the other agents nor\nyou are best for answering the question according to the descriptions, transfer\nto your parent agent.\n")),r}getTransferTargets(t){let n=[];return n.push(...t.subAgents),!t.parentAgent||!(t.parentAgent instanceof T)||(t.disallowTransferToParent||n.push(t.parentAgent),t.disallowTransferToPeers||n.push(...t.parentAgent.subAgents.filter(r=>r.name!==t.name))),n}},uo=new rt,it=class extends K{runAsync(e,t){return g(this,null,function*(){let n=e.agent;if(!(n instanceof T))return;let r=e.session.events;if(!r||r.length===0)return;let i={},s=-1;for(let a=r.length-1;a>=0;a--){let c=r[a];if(c.author!=="user")continue;let l=M(c);if(!l)continue;let d=!1;for(let f of l){if(f.name!==ie)continue;d=!0;let m=null;f.response&&Object.keys(f.response).length===1&&"response"in f.response?m=JSON.parse(f.response.response):f.response&&(m=new z({hint:f.response.hint,payload:f.response.payload,confirmed:f.response.confirmed})),f.id&&m&&(i[f.id]=m)}if(d){s=a;break}}if(Object.keys(i).length!==0)for(let a=s-1;a>=0;a--){let c=r[a],l=L(c);if(!l)continue;let d={},f={};for(let y of l){if(!y.id||!(y.id in i))continue;let p=y.args;if(!p||!("originalFunctionCall"in p))continue;let A=p.originalFunctionCall;A.id&&(d[A.id]=i[y.id],f[A.id]=A)}if(Object.keys(d).length===0)continue;for(let y=r.length-1;y>s;y--){let p=r[y],A=M(p);if(A){for(let I of A)I.id&&I.id in d&&(delete d[I.id],delete f[I.id]);if(Object.keys(d).length===0)break}}if(Object.keys(d).length===0)continue;let m=yield new u(n.canonicalTools(new _(e))),C=Object.fromEntries(m.map(y=>[y.name,y])),h=yield new u(ve({invocationContext:e,functionCalls:Object.values(f),toolsDict:C,beforeToolCallbacks:n.canonicalBeforeToolCallbacks,afterToolCallbacks:n.canonicalAfterToolCallbacks,filters:new Set(Object.keys(d)),toolConfirmationDict:d}));h&&(yield h);return}})}},fo=new it,st=class extends K{runAsync(e,t){return g(this,null,function*(){if(e.agent instanceof T&&e.agent.codeExecutor){try{for(var n=E(mo(e,t)),r,i,s;r=!(i=yield new u(n.next())).done;r=!1){let a=i.value;yield a}}catch(i){s=[i]}finally{try{r&&(i=n.return)&&(yield new u(i.call(n)))}finally{if(s)throw s[0]}}if(e.agent.codeExecutor instanceof Z)for(let a of t.contents){let c=e.agent.codeExecutor.codeBlockDelimiters.length?e.agent.codeExecutor.codeBlockDelimiters[0]:["",""],l=qt(a,c,e.agent.codeExecutor.executionResultDelimiters)}}})}},xe={"text/csv":{extension:".csv",loaderCodeTemplate:"pd.read_csv('{filename}')"}},po="\nimport pandas as pd\n\ndef explore_df(df: pd.DataFrame) -> None:\n \"\"\"Prints some information about a pandas DataFrame.\"\"\"\n\n with pd.option_context(\n 'display.max_columns', None, 'display.expand_frame_repr', False\n ):\n # Print the column names to never encounter KeyError when selecting one.\n df_dtypes = df.dtypes\n\n # Obtain information about data types and missing values.\n df_nulls = (len(df) - df.isnull().sum()).apply(\n lambda x: f'{x} / {df.shape[0]} non-null'\n )\n\n # Explore unique total values in columns using `.unique()`.\n df_unique_count = df.apply(lambda x: len(x.unique()))\n\n # Explore unique values in columns using `.unique()`.\n df_unique = df.apply(lambda x: crop(str(list(x.unique()))))\n\n df_info = pd.concat(\n (\n df_dtypes.rename('Dtype'),\n df_nulls.rename('Non-Null Count'),\n df_unique_count.rename('Unique Values Count'),\n df_unique.rename('Unique Values'),\n ),\n axis=1,\n )\n df_info.index.name = 'Columns'\n print(f\"\"\"Total rows: {df.shape[0]}\nTotal columns: {df.shape[1]}\n\n{df_info}\"\"\")\n",at=class{runAsync(e,t){return g(this,null,function*(){if(!t.partial)try{for(var n=E(go(e,t)),r,i,s;r=!(i=yield new u(n.next())).done;r=!1){let a=i.value;yield a}}catch(i){s=[i]}finally{try{r&&(i=n.return)&&(yield new u(i.call(n)))}finally{if(s)throw s[0]}}})}},As=new at;function mo(o,e){return g(this,null,function*(){let t=o.agent;if(!(t instanceof T))return;let n=t.codeExecutor;if(!n||!(n instanceof Z))return;if(n instanceof q){n.processLlmRequest(e);return}if(!n.optimizeDataFile)return;let r=new ue(new b(o.session.state));if(r.getErrorCount(o.invocationId)>=n.errorRetryAttempts)return;let i=ho(r,e),s=new Set(r.getProcessedFileNames()),a=i.filter(c=>!s.has(c.name));for(let c of a){let l=Co(c);if(!l)return;let d={role:"model",parts:[{text:"Processing input file: `".concat(c.name,"`")},qe(l)]};e.contents.push(tn(d)),yield S({invocationId:o.invocationId,author:t.name,branch:o.branch,content:d});let f=sn(o,r),m=yield new u(n.executeCode({invocationContext:o,codeExecutionInput:{code:l,inputFiles:[c],executionId:f}}));r.updateCodeExecutionResult({invocationId:o.invocationId,code:l,resultStdout:m.stdout,resultStderr:m.stderr}),r.addProcessedFileNames([c.name]);let C=yield new u(an(o,r,m));yield C,e.contents.push(tn(C.content))}})}function go(o,e){return g(this,null,function*(){let t=o.agent;if(!(t instanceof T))return;let n=t.codeExecutor;if(!n||!(n instanceof Z)||!e||!e.content||n instanceof q)return;let r=new ue(new b(o.session.state));if(r.getErrorCount(o.invocationId)>=n.errorRetryAttempts)return;let i=e.content,s=$t(i,n.codeBlockDelimiters);if(!s)return;yield S({invocationId:o.invocationId,author:t.name,branch:o.branch,content:i});let a=sn(o,r),c=yield new u(n.executeCode({invocationContext:o,codeExecutionInput:{code:s,inputFiles:r.getInputFiles(),executionId:a}}));r.updateCodeExecutionResult({invocationId:o.invocationId,code:s,resultStdout:c.stdout,resultStderr:c.stderr}),yield yield new u(an(o,r,c)),e.content=null})}function ho(o,e){var r;let t=o.getInputFiles(),n=new Set(t.map(i=>i.name));for(let i=0;i<e.contents.length;i++){let s=e.contents[i];if(!(s.role!=="user"||!s.parts))for(let a=0;a<s.parts.length;a++){let c=s.parts[a],l=(r=c.inlineData)==null?void 0:r.mimeType;if(!l||!c.inlineData||!xe[l])continue;let d="data_".concat(i+1,"_").concat(a+1).concat(xe[l].extension);c.text="\nAvailable file: `".concat(d,"`\n");let f={name:d,content:St(c.inlineData.data),mimeType:l};n.has(d)||(o.addInputFiles([f]),t.push(f))}}return t}function sn(o,e){var r;let t=o.agent;if(!(t instanceof T)||!((r=t.codeExecutor)!=null&&r.stateful))return;let n=e.getExecutionId();return n||(n=o.session.id,e.setExecutionId(n)),n}async function an(o,e,t){if(!o.artifactService)throw new Error("Artifact service is not initialized.");let n={role:"model",parts:[Gt(t)]},r=$({stateDelta:e.getStateDelta()});t.stderr?e.incrementErrorCount(o.invocationId):e.resetErrorCount(o.invocationId);for(let i of t.outputFiles){let s=await o.artifactService.saveArtifact({appName:o.appName||"",userId:o.userId||"",sessionId:o.session.id,filename:i.name,artifact:{inlineData:{data:i.content,mimeType:i.mimeType}}});r.artifactDelta[i.name]=s}return S({invocationId:o.invocationId,author:o.agent.name,branch:o.branch,content:n,actions:r})}function Co(o){function e(r){let[i]=r.split("."),s=i.replace(/[^a-zA-Z0-9_]/g,"_");return/^\d/.test(s)&&(s="_"+s),s}if(!xe[o.mimeType])return;let t=e(o.name),n=xe[o.mimeType].loaderCodeTemplate.replace("{filename}",o.name);return"\n".concat(po,"\n\n# Load the dataframe.\n").concat(t," = ").concat(n,"\n\n# Use `explore_df` to guide my analysis.\nexplore_df(").concat(t,")\n")}var vo=new st,T=class o extends O{constructor(e){var n,r,i,s,a,c,l,d,f;if(super(e),this.model=e.model,this.instruction=(n=e.instruction)!=null?n:"",this.globalInstruction=(r=e.globalInstruction)!=null?r:"",this.tools=(i=e.tools)!=null?i:[],this.generateContentConfig=e.generateContentConfig,this.disallowTransferToParent=(s=e.disallowTransferToParent)!=null?s:!1,this.disallowTransferToPeers=(a=e.disallowTransferToPeers)!=null?a:!1,this.includeContents=(c=e.includeContents)!=null?c:"default",this.inputSchema=e.inputSchema,this.outputSchema=e.outputSchema,this.outputKey=e.outputKey,this.beforeModelCallback=e.beforeModelCallback,this.afterModelCallback=e.afterModelCallback,this.beforeToolCallback=e.beforeToolCallback,this.afterToolCallback=e.afterToolCallback,this.codeExecutor=e.codeExecutor,this.requestProcessors=(l=e.requestProcessors)!=null?l:[so,ao,co,fo,lo,vo],this.responseProcessors=(d=e.responseProcessors)!=null?d:[],this.disallowTransferToParent&&this.disallowTransferToPeers&&!((f=this.subAgents)!=null&&f.length)||this.requestProcessors.push(uo),e.generateContentConfig){if(e.generateContentConfig.tools)throw new Error("All tools must be set via LlmAgent.tools.");if(e.generateContentConfig.systemInstruction)throw new Error("System instruction must be set via LlmAgent.instruction.");if(e.generateContentConfig.responseSchema)throw new Error("Response schema must be set via LlmAgent.output_schema.")}else this.generateContentConfig={};if(this.outputSchema){if((!this.disallowTransferToParent||!this.disallowTransferToPeers)&&(v.warn("Invalid config for agent ".concat(this.name,": outputSchema cannot co-exist with agent transfer configurations. Setting disallowTransferToParent=true, disallowTransferToPeers=true")),this.disallowTransferToParent=!0,this.disallowTransferToPeers=!0),this.subAgents&&this.subAgents.length>0)throw new Error("Invalid config for agent ".concat(this.name,": if outputSchema is set, subAgents must be empty to disable agent transfer."));if(this.tools&&this.tools.length>0)throw new Error("Invalid config for agent ".concat(this.name,": if outputSchema is set, tools must be empty"))}}get canonicalModel(){if(ze(this.model))return this.model;if(typeof this.model=="string"&&this.model)return ce.newLlm(this.model);let e=this.parentAgent;for(;e;){if(e instanceof o)return e.canonicalModel;e=e.parentAgent}throw new Error("No model found for ".concat(this.name,"."))}async canonicalInstruction(e){return typeof this.instruction=="string"?{instruction:this.instruction,requireStateInjection:!0}:{instruction:await this.instruction(e),requireStateInjection:!1}}async canonicalGlobalInstruction(e){return typeof this.globalInstruction=="string"?{instruction:this.globalInstruction,requireStateInjection:!0}:{instruction:await this.globalInstruction(e),requireStateInjection:!1}}async canonicalTools(e){let t=[];for(let n of this.tools){let r=await rn(n,e);t.push(...r)}return t}static normalizeCallbackArray(e){return e?Array.isArray(e)?e:[e]:[]}get canonicalBeforeModelCallbacks(){return o.normalizeCallbackArray(this.beforeModelCallback)}get canonicalAfterModelCallbacks(){return o.normalizeCallbackArray(this.afterModelCallback)}get canonicalBeforeToolCallbacks(){return o.normalizeCallbackArray(this.beforeToolCallback)}get canonicalAfterToolCallbacks(){return o.normalizeCallbackArray(this.afterToolCallback)}maybeSaveOutputToState(e){var r,i;if(e.author!==this.name){v.debug("Skipping output save for agent ".concat(this.name,": event authored by ").concat(e.author));return}if(!this.outputKey){v.debug("Skipping output save for agent ".concat(this.name,": outputKey is not set"));return}if(!ne(e)){v.debug("Skipping output save for agent ".concat(this.name,": event is not a final response"));return}if(!((i=(r=e.content)==null?void 0:r.parts)!=null&&i.length)){v.debug("Skipping output save for agent ".concat(this.name,": event content is empty"));return}let t=e.content.parts.map(s=>s.text?s.text:"").join(""),n=t;if(this.outputSchema){if(!t.trim())return;try{n=JSON.parse(t)}catch(s){v.error("Error parsing output for agent ".concat(this.name),s)}}e.actions.stateDelta[this.outputKey]=n}runAsyncImpl(e){return g(this,null,function*(){for(;;){let s;try{for(var t=E(this.runOneStepAsync(e)),n,r,i;n=!(r=yield new u(t.next())).done;n=!1){let a=r.value;s=a,this.maybeSaveOutputToState(a),yield a}}catch(r){i=[r]}finally{try{n&&(r=t.return)&&(yield new u(r.call(t)))}finally{if(i)throw i[0]}}if(!s||ne(s))break;if(s.partial){v.warn("The last event is partial, which is not expected.");break}}})}runLiveImpl(e){return g(this,null,function*(){try{for(var t=E(this.runLiveFlow(e)),n,r,i;n=!(r=yield new u(t.next())).done;n=!1){let s=r.value;this.maybeSaveOutputToState(s),yield s}}catch(r){i=[r]}finally{try{n&&(r=t.return)&&(yield new u(r.call(t)))}finally{if(i)throw i[0]}}e.endInvocation})}runLiveFlow(e){return g(this,null,function*(){throw yield new u(Promise.resolve()),new Error("LlmAgent.runLiveFlow not implemented")})}runOneStepAsync(e){return g(this,null,function*(){let t={contents:[],toolsDict:{},liveConnectConfig:{}};for(let p of this.requestProcessors)try{for(var r=E(p.runAsync(e,t)),i,s,a;i=!(s=yield new u(r.next())).done;i=!1){let A=s.value;yield A}}catch(s){a=[s]}finally{try{i&&(s=r.return)&&(yield new u(s.call(r)))}finally{if(a)throw a[0]}}for(let p of this.tools){let A=new V({invocationContext:e}),I=yield new u(rn(p,new _(e)));for(let w of I)yield new u(w.processLlmRequest({toolContext:A,llmRequest:t}))}if(e.endInvocation)return;let n=S({invocationId:e.invocationId,author:this.name,branch:e.branch});try{for(var m=E(this.callLlmAsync(e,t,n)),C,h,y;C=!(h=yield new u(m.next())).done;C=!1){let p=h.value;try{for(var c=E(this.postprocess(e,t,p,n)),l,d,f;l=!(d=yield new u(c.next())).done;l=!1){let A=d.value;n.id=Le(),n.timestamp=new Date().getTime(),yield A}}catch(d){f=[d]}finally{try{l&&(d=c.return)&&(yield new u(d.call(c)))}finally{if(f)throw f[0]}}}}catch(h){y=[h]}finally{try{C&&(h=m.return)&&(yield new u(h.call(m)))}finally{if(y)throw y[0]}}})}postprocess(e,t,n,r){return g(this,null,function*(){var h;for(let w of this.responseProcessors)try{for(var d=E(w.runAsync(e,n)),f,m,C;f=!(m=yield new u(d.next())).done;f=!1){let k=m.value;yield k}}catch(m){C=[m]}finally{try{f&&(m=d.return)&&(yield new u(m.call(d)))}finally{if(C)throw C[0]}}if(!n.content&&!n.errorCode&&!n.interrupted)return;let i=S(x(x({},r),n));if(i.content){let w=L(i);w!=null&&w.length&&(_t(i),i.longRunningToolIds=Array.from(Mt(w,t.toolsDict)))}if(yield i,!((h=L(i))!=null&&h.length))return;let s=yield new u(Nt({invocationContext:e,functionCallEvent:i,toolsDict:t.toolsDict,beforeToolCallbacks:this.canonicalBeforeToolCallbacks,afterToolCallbacks:this.canonicalAfterToolCallbacks}));if(!s)return;let a=Fe(e,s);a&&(yield a);let c=Oe({invocationContext:e,functionCallEvent:i,functionResponseEvent:s});c&&(yield c),yield s;let l=s.actions.transferToAgent;if(l){let w=this.getAgentByName(e,l);try{for(var y=E(w.runAsync(e)),p,A,I;p=!(A=yield new u(y.next())).done;p=!1){let k=A.value;yield k}}catch(A){I=[A]}finally{try{p&&(A=y.return)&&(yield new u(A.call(y)))}finally{if(I)throw I[0]}}}})}getAgentByName(e,t){let r=e.agent.rootAgent.findAgent(t);if(!r)throw new Error("Agent ".concat(t," not found in the agent tree."));return r}callLlmAsync(e,t,n){return g(this,null,function*(){var s,a,c,l,d;let r=yield new u(this.handleBeforeModelCallback(e,t,n));if(r){yield r;return}(s=t.config)!=null||(t.config={}),(c=(a=t.config).labels)!=null||(a.labels={}),t.config.labels[on]||(t.config.labels[on]=this.name);let i=this.canonicalModel;if((l=e.runConfig)!=null&&l.supportCfc)throw new Error("CFC is not yet supported in callLlmAsync");{e.incrementLlmCallCount();let y=i.generateContentAsync(t,((d=e.runConfig)==null?void 0:d.streamingMode)==="sse");try{for(var f=E(this.runAndHandleError(y,e,t,n)),m,C,h;m=!(C=yield new u(f.next())).done;m=!1){let p=C.value;let A=yield new u(this.handleAfterModelCallback(e,p,n));yield A!=null?A:p}}catch(C){h=[C]}finally{try{m&&(C=f.return)&&(yield new u(C.call(f)))}finally{if(h)throw h[0]}}}})}async handleBeforeModelCallback(e,t,n){let r=new N({invocationContext:e,eventActions:n.actions}),i=await e.pluginManager.runBeforeModelCallback({callbackContext:r,llmRequest:t});if(i)return i;for(let s of this.canonicalBeforeModelCallbacks){let a=await s({context:r,request:t});if(a)return a}}async handleAfterModelCallback(e,t,n){let r=new N({invocationContext:e,eventActions:n.actions}),i=await e.pluginManager.runAfterModelCallback({callbackContext:r,llmResponse:t});if(i)return i;for(let s of this.canonicalAfterModelCallbacks){let a=await s({context:r,response:t});if(a)return a}}runAndHandleError(e,t,n,r){return g(this,null,function*(){try{try{for(var i=E(e),s,a,c;s=!(a=yield new u(i.next())).done;s=!1){let l=a.value;yield l}}catch(a){c=[a]}finally{try{s&&(a=i.return)&&(yield new u(a.call(i)))}finally{if(c)throw c[0]}}}catch(l){let d=new N({invocationContext:t,eventActions:r.actions});if(l instanceof Error){let f=yield new u(t.pluginManager.runOnModelErrorCallback({callbackContext:d,llmRequest:n,error:l}));if(f)yield f;else{let m=JSON.parse(l.message);yield{errorCode:String(m.error.code),errorMessage:m.error.message}}}else throw v.error("Unknown error during response generation",l),l}})}};var ct=class extends O{constructor(e){var t;super(e),this.maxIterations=(t=e.maxIterations)!=null?t:Number.MAX_SAFE_INTEGER}runAsyncImpl(e){return g(this,null,function*(){let t=0;for(;t<this.maxIterations;){for(let a of this.subAgents){let c=!1;try{for(var n=E(a.runAsync(e)),r,i,s;r=!(i=yield new u(n.next())).done;r=!1){let l=i.value;yield l,l.actions.escalate&&(c=!0)}}catch(i){s=[i]}finally{try{r&&(i=n.return)&&(yield new u(i.call(n)))}finally{if(s)throw s[0]}}if(c)return}t++}})}runLiveImpl(e){return g(this,null,function*(){throw new Error("This is not supported yet for LoopAgent.")})}};var lt=class extends O{runAsyncImpl(e){return g(this,null,function*(){let t=this.subAgents.map(a=>a.runAsync(yo(this,a,e)));try{for(var n=E(Ao(t)),r,i,s;r=!(i=yield new u(n.next())).done;r=!1){let a=i.value;yield a}}catch(i){s=[i]}finally{try{r&&(i=n.return)&&(yield new u(i.call(n)))}finally{if(s)throw s[0]}}})}runLiveImpl(e){return g(this,null,function*(){throw new Error("This is not supported yet for ParallelAgent.")})}};function yo(o,e,t){let n=new G(t),r="".concat(o.name,".").concat(e.name);return n.branch=n.branch?"".concat(n.branch,".").concat(r):r,n}function Ao(o){return g(this,null,function*(){let e=new Map;for(let[t,n]of o.entries()){let r=n.next().then(i=>({result:i,index:t}));e.set(t,r)}for(;e.size>0;){let{result:t,index:n}=yield new u(Promise.race(e.values()));if(t.done){e.delete(n);continue}yield t.value;let r=o[n].next().then(i=>({result:i,index:n}));e.set(n,r)}})}var ut="task_completed",ft=class extends O{runAsyncImpl(e){return g(this,null,function*(){for(let s of this.subAgents)try{for(var t=E(s.runAsync(e)),n,r,i;n=!(r=yield new u(t.next())).done;n=!1){let a=r.value;yield a}}catch(r){i=[r]}finally{try{n&&(r=t.return)&&(yield new u(r.call(t)))}finally{if(i)throw i[0]}}})}runLiveImpl(e){return g(this,null,function*(){for(let s of this.subAgents)s instanceof T&&((yield new u(s.canonicalTools(new _(e)))).some(l=>l.name===ut)||(s.tools.push(new j({name:ut,description:"Signals that the model has successfully completed the user's question or task.",execute:()=>"Task completion signaled."})),s.instruction+="If you finished the user's request according to its description, call the ".concat(ut," function to exit so the next agents can take over. When calling this function, do not generate any text other than the function call.")));for(let s of this.subAgents)try{for(var t=E(s.runLive(e)),n,r,i;n=!(r=yield new u(t.next())).done;n=!1){let a=r.value;yield a}}catch(r){i=[r]}finally{try{n&&(r=t.return)&&(yield new u(r.call(t)))}finally{if(i)throw i[0]}}})}};var de=class{constructor(){this.artifacts={}}saveArtifact({appName:e,userId:t,sessionId:n,filename:r,artifact:i}){let s=Ee(e,t,n,r);this.artifacts[s]||(this.artifacts[s]=[]);let a=this.artifacts[s].length;return this.artifacts[s].push(i),Promise.resolve(a)}loadArtifact({appName:e,userId:t,sessionId:n,filename:r,version:i}){let s=Ee(e,t,n,r),a=this.artifacts[s];return a?(i===void 0&&(i=a.length-1),Promise.resolve(a[i])):Promise.resolve(void 0)}listArtifactKeys({appName:e,userId:t,sessionId:n}){let r="".concat(e,"/").concat(t,"/").concat(n,"/"),i="".concat(e,"/").concat(t,"/user/"),s=[];for(let a in this.artifacts)if(a.startsWith(r)){let c=a.replace(r,"");s.push(c)}else if(a.startsWith(i)){let c=a.replace(i,"");s.push(c)}return Promise.resolve(s.sort())}deleteArtifact({appName:e,userId:t,sessionId:n,filename:r}){let i=Ee(e,t,n,r);return this.artifacts[i]&&delete this.artifacts[i],Promise.resolve()}listVersions({appName:e,userId:t,sessionId:n,filename:r}){let i=Ee(e,t,n,r),s=this.artifacts[i];if(!s)return Promise.resolve([]);let a=[];for(let c=0;c<s.length;c++)a.push(c);return Promise.resolve(a)}};function Ee(o,e,t,n){return xo(n)?"".concat(o,"/").concat(e,"/user/").concat(n):"".concat(o,"/").concat(e,"/").concat(t,"/").concat(n)}function xo(o){return o.startsWith("user:")}var X=class{constructor(){this.memories=[];this.sessionEvents={}}async addSessionToMemory(e){let t=cn(e.appName,e.userId);this.sessionEvents[t]||(this.sessionEvents[t]={}),this.sessionEvents[t][e.id]=e.events.filter(n=>{var r,i,s;return((s=(i=(r=n.content)==null?void 0:r.parts)==null?void 0:i.length)!=null?s:0)>0})}async searchMemory(e){var i,s;let t=cn(e.appName,e.userId);if(!this.sessionEvents[t])return Promise.resolve({memories:[]});let n=e.query.toLowerCase().split(/\s+/),r={memories:[]};for(let a of Object.values(this.sessionEvents[t]))for(let c of a){if(!((s=(i=c.content)==null?void 0:i.parts)!=null&&s.length))continue;let l=c.content.parts.map(m=>m.text).filter(m=>!!m).join(" "),d=Eo(l);if(!d.size)continue;n.some(m=>d.has(m))&&r.memories.push({content:c.content,author:c.author,timestamp:bo(c.timestamp)})}return r}};function cn(o,e){return"".concat(o,"/").concat(e)}function Eo(o){return new Set([...o.matchAll(/[A-Za-z]+/)].map(e=>e[0].toLowerCase()))}function bo(o){return new Date(o).toISOString()}var H=class{constructor(e){this.name=e}async onUserMessageCallback({invocationContext:e,userMessage:t}){}async beforeRunCallback({invocationContext:e}){}async onEventCallback({invocationContext:e,event:t}){}async afterRunCallback({invocationContext:e}){}async beforeAgentCallback({agent:e,callbackContext:t}){}async afterAgentCallback({agent:e,callbackContext:t}){}async beforeModelCallback({callbackContext:e,llmRequest:t}){}async afterModelCallback({callbackContext:e,llmResponse:t}){}async onModelErrorCallback({callbackContext:e,llmRequest:t,error:n}){}async beforeToolCallback({tool:e,toolArgs:t,toolContext:n}){}async afterToolCallback({tool:e,toolArgs:t,toolContext:n,result:r}){}async onToolErrorCallback({tool:e,toolArgs:t,toolContext:n,error:r}){}};var dt=class extends H{constructor(e="logging_plugin"){super(e)}async onUserMessageCallback({invocationContext:e,userMessage:t}){var n;this.log("\u{1F680} USER MESSAGE RECEIVED"),this.log(" Invocation ID: ".concat(e.invocationId)),this.log(" Session ID: ".concat(e.session.id)),this.log(" User ID: ".concat(e.userId)),this.log(" App Name: ".concat(e.appName)),this.log(" Root Agent: ".concat((n=e.agent.name)!=null?n:"Unknown")),this.log(" User Content: ".concat(this.formatContent(t))),e.branch&&this.log(" Branch: ".concat(e.branch))}async beforeRunCallback({invocationContext:e}){var t;this.log("\u{1F3C3} INVOCATION STARTING"),this.log(" Invocation ID: ".concat(e.invocationId)),this.log(" Starting Agent: ".concat((t=e.agent.name)!=null?t:"Unknown"))}async onEventCallback({invocationContext:e,event:t}){this.log("\u{1F4E2} EVENT YIELDED"),this.log(" Event ID: ".concat(t.id)),this.log(" Author: ".concat(t.author)),this.log(" Content: ".concat(this.formatContent(t.content))),this.log(" Final Response: ".concat(ne(t)));let n=L(t);if(n.length>0){let i=n.map(s=>s.name);this.log(" Function Calls: ".concat(i))}let r=M(t);if(r.length>0){let i=r.map(s=>s.name);this.log(" Function Responses: ".concat(i))}t.longRunningToolIds&&t.longRunningToolIds.length>0&&this.log(" Long Running Tools: ".concat([...t.longRunningToolIds]))}async afterRunCallback({invocationContext:e}){var t;this.log("\u2705 INVOCATION COMPLETED"),this.log(" Invocation ID: ".concat(e.invocationId)),this.log(" Final Agent: ".concat((t=e.agent.name)!=null?t:"Unknown"))}async beforeAgentCallback({agent:e,callbackContext:t}){this.log("\u{1F916} AGENT STARTING"),this.log(" Agent Name: ".concat(t.agentName)),this.log(" Invocation ID: ".concat(t.invocationId)),t.invocationContext.branch&&this.log(" Branch: ".concat(t.invocationContext.branch))}async afterAgentCallback({agent:e,callbackContext:t}){this.log("\u{1F916} AGENT COMPLETED"),this.log(" Agent Name: ".concat(t.agentName)),this.log(" Invocation ID: ".concat(t.invocationId))}async beforeModelCallback({callbackContext:e,llmRequest:t}){var n;if(this.log("\u{1F9E0} LLM REQUEST"),this.log(" Model: ".concat((n=t.model)!=null?n:"default")),this.log(" Agent: ".concat(e.agentName)),t.config&&t.config.systemInstruction){let r=t.config.systemInstruction;r.length>200&&(r=r.substring(0,200)+"..."),this.log(" System Instruction: '".concat(r,"'"))}if(t.toolsDict){let r=Object.keys(t.toolsDict);this.log(" Available Tools: ".concat(r))}}async afterModelCallback({callbackContext:e,llmResponse:t}){this.log("\u{1F9E0} LLM RESPONSE"),this.log(" Agent: ".concat(e.agentName)),t.errorCode?(this.log(" \u274C ERROR - Code: ".concat(t.errorCode)),this.log(" Error Message: ".concat(t.errorMessage))):(this.log(" Content: ".concat(this.formatContent(t.content))),t.partial&&this.log(" Partial: ".concat(t.partial)),t.turnComplete!==void 0&&this.log(" Turn Complete: ".concat(t.turnComplete))),t.usageMetadata&&this.log(" Token Usage - Input: ".concat(t.usageMetadata.promptTokenCount,", Output: ").concat(t.usageMetadata.candidatesTokenCount))}async beforeToolCallback({tool:e,toolArgs:t,toolContext:n}){this.log("\u{1F527} TOOL STARTING"),this.log(" Tool Name: ".concat(e.name)),this.log(" Agent: ".concat(n.agentName)),this.log(" Function Call ID: ".concat(n.functionCallId)),this.log(" Arguments: ".concat(this.formatArgs(t)))}async afterToolCallback({tool:e,toolArgs:t,toolContext:n,result:r}){this.log("\u{1F527} TOOL COMPLETED"),this.log(" Tool Name: ".concat(e.name)),this.log(" Agent: ".concat(n.agentName)),this.log(" Function Call ID: ".concat(n.functionCallId)),this.log(" Result: ".concat(this.formatArgs(r)))}async onModelErrorCallback({callbackContext:e,llmRequest:t,error:n}){this.log("\u{1F9E0} LLM ERROR"),this.log(" Agent: ".concat(e.agentName)),this.log(" Error: ".concat(n))}async onToolErrorCallback({tool:e,toolArgs:t,toolContext:n,error:r}){this.log("\u{1F527} TOOL ERROR"),this.log(" Tool Name: ".concat(e.name)),this.log(" Agent: ".concat(n.agentName)),this.log(" Function Call ID: ".concat(n.functionCallId)),this.log(" Arguments: ".concat(this.formatArgs(t))),this.log(" Error: ".concat(r))}log(e){let t="\x1B[90m[".concat(this.name,"] ").concat(e,"\x1B[0m");v.info(t)}formatContent(e,t=200){if(!e||!e.parts)return"None";let n=[];for(let r of e.parts)if(r.text){let i=r.text.trim();i.length>t&&(i=i.substring(0,t)+"..."),n.push("text: '".concat(i,"'"))}else r.functionCall?n.push("function_call: ".concat(r.functionCall.name)):r.functionResponse?n.push("function_response: ".concat(r.functionResponse.name)):r.codeExecutionResult?n.push("code_execution_result"):n.push("other_part");return n.join(" | ")}formatArgs(e,t=300){if(!e)return"{}";let n=JSON.stringify(e);return n.length>t&&(n=n.substring(0,t)+"...}"),n}};var pe=class{constructor(e){this.plugins=new Set;if(e)for(let t of e)this.registerPlugin(t)}registerPlugin(e){if(this.plugins.has(e))throw new Error("Plugin '".concat(e.name,"' already registered."));if(Array.from(this.plugins).some(t=>t.name===e.name))throw new Error("Plugin with name '".concat(e.name,"' already registered."));this.plugins.add(e),v.info("Plugin '".concat(e.name,"' registered."))}getPlugin(e){return Array.from(this.plugins).find(t=>t.name===e)}async runCallbacks(e,t,n){for(let r of e)try{let i=await t(r);if(i!==void 0)return v.debug("Plugin '".concat(r.name,"' returned a value for callback '").concat(n,"', exiting early.")),i}catch(i){let s="Error in plugin '".concat(r.name,"' during '").concat(n,"' callback: ").concat(i);throw v.error(s),new Error(s)}}async runOnUserMessageCallback({userMessage:e,invocationContext:t}){return await this.runCallbacks(this.plugins,n=>n.onUserMessageCallback({userMessage:e,invocationContext:t}),"onUserMessageCallback")}async runBeforeRunCallback({invocationContext:e}){return await this.runCallbacks(this.plugins,t=>t.beforeRunCallback({invocationContext:e}),"beforeRunCallback")}async runAfterRunCallback({invocationContext:e}){await this.runCallbacks(this.plugins,t=>t.afterRunCallback({invocationContext:e}),"afterRunCallback")}async runOnEventCallback({invocationContext:e,event:t}){return await this.runCallbacks(this.plugins,n=>n.onEventCallback({invocationContext:e,event:t}),"onEventCallback")}async runBeforeAgentCallback({agent:e,callbackContext:t}){return await this.runCallbacks(this.plugins,n=>n.beforeAgentCallback({agent:e,callbackContext:t}),"beforeAgentCallback")}async runAfterAgentCallback({agent:e,callbackContext:t}){return await this.runCallbacks(this.plugins,n=>n.afterAgentCallback({agent:e,callbackContext:t}),"afterAgentCallback")}async runBeforeToolCallback({tool:e,toolArgs:t,toolContext:n}){return await this.runCallbacks(this.plugins,r=>r.beforeToolCallback({tool:e,toolArgs:t,toolContext:n}),"beforeToolCallback")}async runAfterToolCallback({tool:e,toolArgs:t,toolContext:n,result:r}){return await this.runCallbacks(this.plugins,i=>i.afterToolCallback({tool:e,toolArgs:t,toolContext:n,result:r}),"afterToolCallback")}async runOnModelErrorCallback({callbackContext:e,llmRequest:t,error:n}){return await this.runCallbacks(this.plugins,r=>r.onModelErrorCallback({callbackContext:e,llmRequest:t,error:n}),"onModelErrorCallback")}async runBeforeModelCallback({callbackContext:e,llmRequest:t}){return await this.runCallbacks(this.plugins,n=>n.beforeModelCallback({callbackContext:e,llmRequest:t}),"beforeModelCallback")}async runAfterModelCallback({callbackContext:e,llmResponse:t}){return await this.runCallbacks(this.plugins,n=>n.afterModelCallback({callbackContext:e,llmResponse:t}),"afterModelCallback")}async runOnToolErrorCallback({tool:e,toolArgs:t,toolContext:n,error:r}){return await this.runCallbacks(this.plugins,i=>i.onToolErrorCallback({tool:e,toolArgs:t,toolContext:n,error:r}),"onToolErrorCallback")}};var un="adk_request_confirmation",pt="orcas_tool_call_security_check_states",ln="This tool call needs external confirmation before completion.",fn=(n=>(n.DENY="DENY",n.CONFIRM="CONFIRM",n.ALLOW="ALLOW",n))(fn||{}),be=class{async evaluate(e){return Promise.resolve({outcome:"ALLOW",reason:"For prototyping purpose, all tool calls are allowed."})}},mt=class extends H{constructor(e){var t;super("security_plugin"),this.policyEngine=(t=e==null?void 0:e.policyEngine)!=null?t:new be}async beforeToolCallback({tool:e,toolArgs:t,toolContext:n}){let r=this.getToolCallCheckState(n);if(!r)return this.checkToolCallPolicy({tool:e,toolArgs:t,toolContext:n});if(r==="CONFIRM"){if(!n.toolConfirmation)return{partial:ln};if(this.setToolCallCheckState(n,n.toolConfirmation),!n.toolConfirmation.confirmed)return{error:"Tool call rejected from confirmation flow."};n.toolConfirmation=void 0}}getToolCallCheckState(e){var r;let{functionCallId:t}=e;return t?((r=e.state.get(pt))!=null?r:{})[t]:void 0}setToolCallCheckState(e,t){var i;let{functionCallId:n}=e;if(!n)return;let r=(i=e.state.get(pt))!=null?i:{};r[n]=t,e.state.set(pt,r)}async checkToolCallPolicy({tool:e,toolArgs:t,toolContext:n}){let r=await this.policyEngine.evaluate({tool:e,toolArgs:t});switch(this.setToolCallCheckState(n,r.outcome),r.outcome){case"DENY":return{error:"This tool call is rejected by policy engine. Reason: ".concat(r.reason)};case"CONFIRM":return n.requestConfirmation({hint:"Policy engine requires confirmation calling tool: ".concat(e.name,". Reason: ").concat(r.reason)}),{partial:ln};case"ALLOW":return;default:return}}};function To(o){if(!o.content||!o.content.parts)return[];let e=[];for(let t of o.content.parts)t&&t.functionCall&&t.functionCall.name===un&&e.push(t.functionCall);return e}import dn from"lodash-es/cloneDeep.js";var Te=class{async appendEvent({session:e,event:t}){return t.partial||(this.updateSessionState({session:e,event:t}),e.events.push(t)),t}updateSessionState({session:e,event:t}){if(!(!t.actions||!t.actions.stateDelta))for(let[n,r]of Object.entries(t.actions.stateDelta))n.startsWith(b.TEMP_PREFIX)||(e.state[n]=r)}};function Se(o){return{id:o.id,appName:o.appName,userId:o.userId||"",state:o.state||{},events:o.events||[],lastUpdateTime:o.lastUpdateTime||0}}var J=class extends Te{constructor(){super(...arguments);this.sessions={};this.userState={};this.appState={}}createSession({appName:t,userId:n,state:r,sessionId:i}){let s=Se({id:i||oe(),appName:t,userId:n,state:r,events:[],lastUpdateTime:Date.now()});return this.sessions[t]||(this.sessions[t]={}),this.sessions[t][n]||(this.sessions[t][n]={}),this.sessions[t][n][s.id]=s,Promise.resolve(this.mergeState(t,n,dn(s)))}getSession({appName:t,userId:n,sessionId:r,config:i}){if(!this.sessions[t]||!this.sessions[t][n]||!this.sessions[t][n][r])return Promise.resolve(void 0);let s=this.sessions[t][n][r],a=dn(s);if(i&&(i.numRecentEvents&&(a.events=a.events.slice(-i.numRecentEvents)),i.afterTimestamp)){let c=a.events.length-1;for(;c>=0&&!(a.events[c].timestamp<i.afterTimestamp);)c--;c>=0&&(a.events=a.events.slice(c+1))}return Promise.resolve(this.mergeState(t,n,a))}listSessions({appName:t,userId:n}){if(!this.sessions[t]||!this.sessions[t][n])return Promise.resolve({sessions:[]});let r=[];for(let i of Object.values(this.sessions[t][n]))r.push(Se({id:i.id,appName:i.appName,userId:i.userId,state:{},events:[],lastUpdateTime:i.lastUpdateTime}));return Promise.resolve({sessions:r})}async deleteSession({appName:t,userId:n,sessionId:r}){await this.getSession({appName:t,userId:n,sessionId:r})&&delete this.sessions[t][n][r]}async appendEvent({session:t,event:n}){await super.appendEvent({session:t,event:n}),t.lastUpdateTime=n.timestamp;let r=t.appName,i=t.userId,s=t.id,a=l=>{v.warn("Failed to append event to session ".concat(s,": ").concat(l))};if(!this.sessions[r])return a("appName ".concat(r," not in sessions")),n;if(!this.sessions[r][i])return a("userId ".concat(i," not in sessions[appName]")),n;if(!this.sessions[r][i][s])return a("sessionId ".concat(s," not in sessions[appName][userId]")),n;if(n.actions&&n.actions.stateDelta)for(let l of Object.keys(n.actions.stateDelta))l.startsWith(b.APP_PREFIX)&&(this.appState[r]=this.appState[r]||{},this.appState[r][l.replace(b.APP_PREFIX,"")]=n.actions.stateDelta[l]),l.startsWith(b.USER_PREFIX)&&(this.userState[r]=this.userState[r]||{},this.userState[r][i]=this.userState[r][i]||{},this.userState[r][i][l.replace(b.USER_PREFIX,"")]=n.actions.stateDelta[l]);let c=this.sessions[r][i][s];return await super.appendEvent({session:c,event:n}),c.lastUpdateTime=n.timestamp,n}mergeState(t,n,r){if(this.appState[t])for(let i of Object.keys(this.appState[t]))r.state[b.APP_PREFIX+i]=this.appState[t][i];if(!this.userState[t]||!this.userState[t][n])return r;for(let i of Object.keys(this.userState[t][n]))r.state[b.USER_PREFIX+i]=this.userState[t][n][i];return r}};import{createPartFromText as So}from"@google/genai";import{trace as Ro}from"@opentelemetry/api";var ee=class{constructor(e){var t;this.appName=e.appName,this.agent=e.agent,this.pluginManager=new pe((t=e.plugins)!=null?t:[]),this.artifactService=e.artifactService,this.sessionService=e.sessionService,this.memoryService=e.memoryService,this.credentialService=e.credentialService}runAsync(s){return g(this,arguments,function*({userId:e,sessionId:t,newMessage:n,stateDelta:r,runConfig:i}){var c;i=en(i);let a=Ro.getTracer("gcp.vertex.agent").startSpan("invocation");try{let C=yield new u(this.sessionService.getSession({appName:this.appName,userId:e,sessionId:t}));if(!C)throw this.appName?new Error("Session not found: ".concat(t)):new Error("Session lookup failed: appName must be provided in runner constructor");if(i.supportCfc&&this.agent instanceof T){let A=this.agent.canonicalModel.model;if(!A.startsWith("gemini-2"))throw new Error("CFC is not supported for model: ".concat(A," in agent: ").concat(this.agent.name))}this.agent instanceof T&&!(this.agent.codeExecutor instanceof q)&&(this.agent.codeExecutor=new q);let h=new G({artifactService:this.artifactService,sessionService:this.sessionService,memoryService:this.memoryService,credentialService:this.credentialService,invocationId:Rt(),agent:this.agent,session:C,userContent:n,runConfig:i,pluginManager:this.pluginManager}),y=yield new u(this.pluginManager.runOnUserMessageCallback({userMessage:n,invocationContext:h}));if(y&&(n=y),n){if(!((c=n.parts)!=null&&c.length))throw new Error("No parts in the newMessage.");i.saveInputBlobsAsArtifacts&&(yield new u(this.saveArtifacts(h.invocationId,C.userId,C.id,n))),yield new u(this.sessionService.appendEvent({session:C,event:S({invocationId:h.invocationId,author:"user",actions:r?$({stateDelta:r}):void 0,content:n})}))}h.agent=this.determineAgentForResumption(C,this.agent);let p=yield new u(this.pluginManager.runBeforeRunCallback({invocationContext:h}));if(p){let A=S({invocationId:h.invocationId,author:"model",content:p});yield new u(this.sessionService.appendEvent({session:C,event:A})),yield A}else try{for(var l=E(h.agent.runAsync(h)),d,f,m;d=!(f=yield new u(l.next())).done;d=!1){let A=f.value;A.partial||(yield new u(this.sessionService.appendEvent({session:C,event:A})));let I=yield new u(this.pluginManager.runOnEventCallback({invocationContext:h,event:A}));I?yield I:yield A}}catch(f){m=[f]}finally{try{d&&(f=l.return)&&(yield new u(f.call(l)))}finally{if(m)throw m[0]}}yield new u(this.pluginManager.runAfterRunCallback({invocationContext:h}))}finally{a.end()}})}async saveArtifacts(e,t,n,r){var i;if(!(!this.artifactService||!((i=r.parts)!=null&&i.length)))for(let s=0;s<r.parts.length;s++){let a=r.parts[s];if(!a.inlineData)continue;let c="artifact_".concat(e,"_").concat(s);await this.artifactService.saveArtifact({appName:this.appName,userId:t,sessionId:n,filename:c,artifact:a}),r.parts[s]=So("Uploaded file: ".concat(c,". It is saved into artifacts"))}}determineAgentForResumption(e,t){let n=Io(e.events);if(n&&n.author)return t.findAgent(n.author)||t;for(let r=e.events.length-1;r>=0;r--){v.info("event: ",JSON.stringify(e.events[r]));let i=e.events[r];if(i.author==="user"||!i.author)continue;if(i.author===t.name)return t;let s=t.findSubAgent(i.author);if(!s){v.warn("Event from an unknown agent: ".concat(i.author,", event id: ").concat(i.id));continue}if(this.isRoutableLlmAgent(s))return s}return t}isRoutableLlmAgent(e){let t=e;for(;t;){if(!(t instanceof T)||t.disallowTransferToParent)return!1;t=t.parentAgent}return!0}};function Io(o){var n,r,i,s;if(!o.length)return null;let t=(s=(i=(r=(n=o[o.length-1].content)==null?void 0:n.parts)==null?void 0:r.find(a=>a.functionResponse))==null?void 0:i.functionResponse)==null?void 0:s.id;if(!t)return null;for(let a=o.length-2;a>=0;a--){let c=o[a],l=L(c);if(l){for(let d of l)if(d.id===t)return c}}return null}var gt=class extends ee{constructor({agent:e,appName:t="InMemoryRunner",plugins:n=[]}){super({appName:t,agent:e,plugins:n,artifactService:new de,sessionService:new J,memoryService:new X})}};import{Type as Ie}from"@google/genai";var Re=class{constructor(e){this.toolContext=e;this.invocationContext=e.invocationContext}async saveArtifact(e){return this.toolContext.saveArtifact(e.filename,e.artifact)}async loadArtifact(e){return this.toolContext.loadArtifact(e.filename,e.version)}async listArtifactKeys(e){return this.toolContext.listArtifacts()}async deleteArtifact(e){if(!this.toolContext.invocationContext.artifactService)throw new Error("Artifact service is not initialized.");return this.toolContext.invocationContext.artifactService.deleteArtifact(e)}async listVersions(e){if(!this.toolContext.invocationContext.artifactService)throw new Error("Artifact service is not initialized.");return this.toolContext.invocationContext.artifactService.listVersions(e)}};var ht=class extends D{constructor(e){super({name:e.agent.name,description:e.agent.description||""}),this.agent=e.agent,this.skipSummarization=e.skipSummarization||!1}_getDeclaration(){let e;if(this.agent instanceof T&&this.agent.inputSchema?e={name:this.name,description:this.description,parameters:this.agent.inputSchema}:e={name:this.name,description:this.description,parameters:{type:Ie.OBJECT,properties:{request:{type:Ie.STRING}},required:["request"]}},this.apiVariant!=="GEMINI_API"){let t=this.agent instanceof T&&this.agent.outputSchema;e.response=t?{type:Ie.OBJECT}:{type:Ie.STRING}}return e}async runAsync({args:e,toolContext:t}){var h,y;this.skipSummarization&&(t.actions.skipSummarization=!0);let r={role:"user",parts:[{text:this.agent instanceof T&&this.agent.inputSchema?JSON.stringify(e):e.request}]},i=new ee({appName:this.agent.name,agent:this.agent,artifactService:new Re(t),sessionService:new J,memoryService:new X,credentialService:t.invocationContext.credentialService}),s=await i.sessionService.createSession({appName:this.agent.name,userId:"tmp_user",state:t.state.toRecord()}),a;try{for(var d=E(i.runAsync({userId:s.userId,sessionId:s.id,newMessage:r})),f,m,C;f=!(m=await d.next()).done;f=!1){let p=m.value;p.actions.stateDelta&&t.state.update(p.actions.stateDelta),a=p}}catch(m){C=[m]}finally{try{f&&(m=d.return)&&await m.call(d)}finally{if(C)throw C[0]}}if(!((y=(h=a==null?void 0:a.content)==null?void 0:h.parts)!=null&&y.length))return"";let c=this.agent instanceof T&&this.agent.outputSchema,l=a.content.parts.map(p=>p.text).filter(p=>p).join("\n");return c?JSON.parse(l):l}};var Ct=class{constructor(e){this.toolFilter=e}isToolSelected(e,t){return this.toolFilter?typeof this.toolFilter=="function"?this.toolFilter(e,t):Array.isArray(this.toolFilter)?this.toolFilter.includes(e.name):!1:!0}async processLlmRequest(e,t){}};var vt=class extends D{constructor(){super({name:"google_search",description:"Google Search Tool"})}runAsync(e){return Promise.resolve()}async processLlmRequest({toolContext:e,llmRequest:t}){if(t.model){if(t.config=t.config||{},t.config.tools=t.config.tools||[],Ot(t.model)){if(t.config.tools.length>0)throw new Error("Google search tool can not be used with other tools in Gemini 1.x.");t.config.tools.push({googleSearchRetrieval:{}});return}if(Ft(t.model)){t.config.tools.push({googleSearch:{}});return}throw new Error("Google search tool is not supported for model ".concat(t.model))}}},wo=new vt;var pn="\n\nNOTE: This is a long-running operation. Do not call this tool again if it has already returned some intermediate or pending status.",yt=class extends j{constructor(e){super(te(x({},e),{isLongRunning:!0}))}_getDeclaration(){let e=super._getDeclaration();return e.description?e.description+=pn:e.description=pn.trimStart(),e}};export{ht as AgentTool,O as BaseAgent,se as BaseLlm,H as BasePlugin,Te as BaseSessionService,D as BaseTool,Ct as BaseToolset,q as BuiltInCodeExecutor,N as CallbackContext,j as FunctionTool,wo as GOOGLE_SEARCH,ae as Gemini,de as InMemoryArtifactService,X as InMemoryMemoryService,be as InMemoryPolicyEngine,gt as InMemoryRunner,J as InMemorySessionService,G as InvocationContext,ce as LLMRegistry,De as LiveRequestQueue,T as LlmAgent,Lt as LogLevel,dt as LoggingPlugin,yt as LongRunningFunctionTool,ct as LoopAgent,lt as ParallelAgent,pe as PluginManager,fn as PolicyOutcome,un as REQUEST_CONFIRMATION_FUNCTION_CALL_NAME,ee as Runner,mt as SecurityPlugin,ft as SequentialAgent,b as State,Je as StreamingMode,z as ToolConfirmation,V as ToolContext,S as createEvent,$ as createEventActions,Se as createSession,kn as functionsExportedForTestingOnly,To as getAskUserConfirmationFunctionCalls,L as getFunctionCalls,M as getFunctionResponses,Tt as hasTrailingCodeExecutionResult,An as isBaseAgent,ze as isBaseLlm,ne as isFinalResponse,Ge as isGemini2OrAbove,Tn as setLogLevel,yn as stringifyContent,Ve as version,Ae as zodObjectToSchema};
8
8
  /**
9
9
  * @license
10
10
  * Copyright 2025 Google LLC
11
11
  * SPDX-License-Identifier: Apache-2.0
12
12
  */
13
- /**
14
- * @license
15
- * Copyright 2026 Google LLC
16
- * SPDX-License-Identifier: Apache-2.0
17
- */
18
13
  //# sourceMappingURL=index.js.map