@google/adk 0.5.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/a2a/a2a_event.js +53 -26
- package/dist/cjs/a2a/a2a_remote_agent.js +179 -0
- package/dist/cjs/a2a/a2a_remote_agent_run_processor.js +205 -0
- package/dist/cjs/a2a/a2a_remote_agent_utils.js +165 -0
- package/dist/cjs/a2a/agent_card.js +380 -0
- package/dist/cjs/a2a/agent_executor.js +221 -0
- package/dist/cjs/a2a/agent_to_a2a.js +115 -0
- package/dist/cjs/a2a/event_processor_utils.js +180 -0
- package/dist/cjs/a2a/executor_context.js +1 -1
- package/dist/cjs/a2a/metadata_converter_utils.js +1 -0
- package/dist/cjs/a2a/part_converter_utils.js +24 -13
- package/dist/cjs/agents/llm_agent.js +17 -0
- package/dist/cjs/agents/{content_processor_utils.js → processors/content_processor_utils.js} +21 -2
- package/dist/cjs/agents/processors/content_request_processor.js +24 -3
- package/dist/cjs/agents/processors/context_compactor_request_processor.js +61 -0
- package/dist/cjs/agents/processors/instructions_llm_request_processor.js +1 -1
- package/dist/cjs/artifacts/file_artifact_service.js +35 -4
- package/dist/cjs/common.js +37 -0
- package/dist/cjs/context/base_context_compactor.js +27 -0
- package/dist/cjs/context/summarizers/base_summarizer.js +27 -0
- package/dist/cjs/context/summarizers/llm_summarizer.js +93 -0
- package/dist/cjs/context/token_based_context_compactor.js +135 -0
- package/dist/cjs/context/truncating_context_compactor.js +58 -0
- package/dist/cjs/events/compacted_event.js +53 -0
- package/dist/cjs/index.js +38 -14
- package/dist/cjs/index.js.map +4 -4
- package/dist/cjs/memory/in_memory_memory_service.js +1 -1
- package/dist/cjs/runner/runner.js +19 -10
- package/dist/cjs/sessions/db/operations.js +4 -14
- package/dist/cjs/sessions/state.js +2 -2
- package/dist/cjs/tools/agent_tool.js +6 -5
- package/dist/cjs/tools/load_artifacts_tool.js +188 -0
- package/dist/cjs/tools/load_memory_tool.js +107 -0
- package/dist/cjs/tools/preload_memory_tool.js +109 -0
- package/dist/cjs/utils/gemini_schema_util.js +54 -12
- package/dist/cjs/utils/logger.js +1 -0
- package/dist/cjs/version.js +1 -1
- package/dist/esm/a2a/a2a_event.js +52 -26
- package/dist/esm/a2a/a2a_remote_agent.js +153 -0
- package/dist/esm/a2a/a2a_remote_agent_run_processor.js +182 -0
- package/dist/esm/a2a/a2a_remote_agent_utils.js +131 -0
- package/dist/esm/a2a/agent_card.js +340 -0
- package/dist/esm/a2a/agent_executor.js +202 -0
- package/dist/esm/a2a/agent_to_a2a.js +80 -0
- package/dist/esm/a2a/event_processor_utils.js +159 -0
- package/dist/esm/a2a/executor_context.js +1 -1
- package/dist/esm/a2a/metadata_converter_utils.js +1 -0
- package/dist/esm/a2a/part_converter_utils.js +24 -13
- package/dist/esm/agents/llm_agent.js +17 -0
- package/dist/esm/agents/{content_processor_utils.js → processors/content_processor_utils.js} +23 -2
- package/dist/esm/agents/processors/content_request_processor.js +25 -4
- package/dist/esm/agents/processors/context_compactor_request_processor.js +31 -0
- package/dist/esm/agents/processors/instructions_llm_request_processor.js +1 -1
- package/dist/esm/artifacts/file_artifact_service.js +30 -3
- package/dist/esm/common.js +33 -1
- package/dist/esm/context/base_context_compactor.js +5 -0
- package/dist/esm/context/summarizers/base_summarizer.js +5 -0
- package/dist/esm/context/summarizers/llm_summarizer.js +65 -0
- package/dist/esm/context/token_based_context_compactor.js +105 -0
- package/dist/esm/context/truncating_context_compactor.js +28 -0
- package/dist/esm/events/compacted_event.js +22 -0
- package/dist/esm/index.js +38 -14
- package/dist/esm/index.js.map +4 -4
- package/dist/esm/memory/in_memory_memory_service.js +1 -1
- package/dist/esm/runner/runner.js +17 -9
- package/dist/esm/sessions/db/operations.js +4 -14
- package/dist/esm/sessions/state.js +2 -2
- package/dist/esm/tools/agent_tool.js +6 -5
- package/dist/esm/tools/load_artifacts_tool.js +159 -0
- package/dist/esm/tools/load_memory_tool.js +78 -0
- package/dist/esm/tools/preload_memory_tool.js +80 -0
- package/dist/esm/utils/gemini_schema_util.js +54 -12
- package/dist/esm/utils/logger.js +1 -0
- package/dist/esm/version.js +1 -1
- package/dist/types/a2a/a2a_event.d.ts +23 -6
- package/dist/types/a2a/a2a_remote_agent.d.ts +67 -0
- package/dist/types/a2a/a2a_remote_agent_run_processor.d.ts +31 -0
- package/dist/types/a2a/a2a_remote_agent_utils.d.ts +38 -0
- package/dist/types/a2a/agent_card.d.ts +23 -0
- package/dist/types/a2a/agent_executor.d.ts +52 -0
- package/dist/types/a2a/agent_to_a2a.d.ts +45 -0
- package/dist/types/a2a/event_processor_utils.d.ts +24 -0
- package/dist/types/a2a/executor_context.d.ts +1 -1
- package/dist/types/a2a/metadata_converter_utils.d.ts +2 -1
- package/dist/types/agents/llm_agent.d.ts +6 -0
- package/dist/types/agents/loop_agent.d.ts +1 -1
- package/dist/types/agents/{content_processor_utils.d.ts → processors/content_processor_utils.d.ts} +1 -1
- package/dist/types/agents/processors/context_compactor_request_processor.d.ts +22 -0
- package/dist/types/artifacts/file_artifact_service.d.ts +4 -0
- package/dist/types/common.d.ts +16 -1
- package/dist/types/context/base_context_compactor.d.ts +24 -0
- package/dist/types/context/summarizers/base_summarizer.d.ts +19 -0
- package/dist/types/context/summarizers/llm_summarizer.d.ts +23 -0
- package/dist/types/context/token_based_context_compactor.d.ts +33 -0
- package/dist/types/context/truncating_context_compactor.d.ts +24 -0
- package/dist/types/events/compacted_event.d.ts +33 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/runner/runner.d.ts +13 -0
- package/dist/types/sessions/db/operations.d.ts +2 -3
- package/dist/types/tools/load_artifacts_tool.d.ts +21 -0
- package/dist/types/tools/load_memory_tool.d.ts +22 -0
- package/dist/types/tools/preload_memory_tool.d.ts +23 -0
- package/dist/types/version.d.ts +1 -1
- package/dist/web/a2a/a2a_event.js +52 -26
- package/dist/web/a2a/a2a_remote_agent.js +184 -0
- package/dist/web/a2a/a2a_remote_agent_run_processor.js +182 -0
- package/dist/web/a2a/a2a_remote_agent_utils.js +131 -0
- package/dist/web/a2a/agent_card.js +340 -0
- package/dist/web/a2a/agent_executor.js +216 -0
- package/dist/web/a2a/agent_to_a2a.js +80 -0
- package/dist/web/a2a/event_processor_utils.js +168 -0
- package/dist/web/a2a/executor_context.js +1 -1
- package/dist/web/a2a/metadata_converter_utils.js +1 -0
- package/dist/web/a2a/part_converter_utils.js +24 -13
- package/dist/web/agents/llm_agent.js +17 -0
- package/dist/web/agents/{content_processor_utils.js → processors/content_processor_utils.js} +22 -2
- package/dist/web/agents/processors/content_request_processor.js +25 -4
- package/dist/web/agents/processors/context_compactor_request_processor.js +49 -0
- package/dist/web/agents/processors/instructions_llm_request_processor.js +1 -1
- package/dist/web/artifacts/file_artifact_service.js +30 -3
- package/dist/web/common.js +33 -1
- package/dist/web/context/base_context_compactor.js +5 -0
- package/dist/web/context/summarizers/base_summarizer.js +5 -0
- package/dist/web/context/summarizers/llm_summarizer.js +74 -0
- package/dist/web/context/token_based_context_compactor.js +105 -0
- package/dist/web/context/truncating_context_compactor.js +28 -0
- package/dist/web/events/compacted_event.js +40 -0
- package/dist/web/index.js +1 -1
- package/dist/web/index.js.map +4 -4
- package/dist/web/memory/in_memory_memory_service.js +1 -1
- package/dist/web/runner/runner.js +17 -9
- package/dist/web/sessions/db/operations.js +4 -14
- package/dist/web/sessions/state.js +2 -2
- package/dist/web/tools/agent_tool.js +6 -5
- package/dist/web/tools/load_artifacts_tool.js +150 -0
- package/dist/web/tools/load_memory_tool.js +77 -0
- package/dist/web/tools/preload_memory_tool.js +75 -0
- package/dist/web/utils/gemini_schema_util.js +85 -12
- package/dist/web/utils/logger.js +1 -0
- package/dist/web/version.js +1 -1
- package/package.json +7 -5
package/dist/cjs/index.js
CHANGED
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
"use strict";var vi=Object.create;var De=Object.defineProperty;var Wn=Object.getOwnPropertyDescriptor;var Ci=Object.getOwnPropertyNames;var yi=Object.getPrototypeOf,Ai=Object.prototype.hasOwnProperty;var xi=(n,e)=>{for(var t in e)De(n,t,{get:e[t],enumerable:!0})},Hn=(n,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Ci(e))!Ai.call(n,r)&&r!==t&&De(n,r,{get:()=>e[r],enumerable:!(o=Wn(e,r))||o.enumerable});return n};var te=(n,e,t)=>(t=n!=null?vi(yi(n)):{},Hn(e||!n||!n.__esModule?De(t,"default",{value:n,enumerable:!0}):t,n)),Ei=n=>Hn(De({},"__esModule",{value:!0}),n),E=(n,e,t,o)=>{for(var r=o>1?void 0:o?Wn(e,t):e,i=n.length-1,s;i>=0;i--)(s=n[i])&&(r=(o?s(e,t,r):s(r))||r);return o&&r&&De(e,t,r),r};var ks={};xi(ks,{ActiveStreamingTool:()=>rt,AgentTool:()=>Lt,ApigeeLlm:()=>ge,AuthCredentialTypes:()=>Ln,BaseAgent:()=>D,BaseCodeExecutor:()=>Le,BaseExampleProvider:()=>Tt,BaseLlm:()=>me,BaseLlmRequestProcessor:()=>k,BaseLlmResponseProcessor:()=>mt,BasePlugin:()=>ce,BaseSessionService:()=>le,BaseTool:()=>M,BaseToolset:()=>Ne,BuiltInCodeExecutor:()=>ke,Context:()=>_,DatabaseSessionService:()=>Be,EXIT_LOOP:()=>Wr,EventType:()=>_n,ExitLoopTool:()=>Ye,FileArtifactService:()=>Se,FunctionTool:()=>K,GOOGLE_SEARCH:()=>Hr,GcsArtifactService:()=>Re,Gemini:()=>Q,GoogleLLMVariant:()=>Ve,GoogleSearchTool:()=>Je,InMemoryArtifactService:()=>oe,InMemoryMemoryService:()=>ae,InMemoryPolicyEngine:()=>He,InMemoryRunner:()=>It,InMemorySessionService:()=>H,InvocationContext:()=>z,LLMRegistry:()=>se,LiveRequestQueue:()=>ut,LlmAgent:()=>Ct,LogLevel:()=>$t,LoggingPlugin:()=>St,LongRunningFunctionTool:()=>_t,LoopAgent:()=>At,MCPSessionManager:()=>Ze,MCPTool:()=>et,MCPToolset:()=>jn,ParallelAgent:()=>xt,PluginManager:()=>Me,PolicyOutcome:()=>Nn,REQUEST_CONFIRMATION_FUNCTION_CALL_NAME:()=>Mn,ReadonlyContext:()=>I,Runner:()=>ue,SecurityPlugin:()=>Rt,SequentialAgent:()=>Et,State:()=>v,StreamingMode:()=>vt,ToolConfirmation:()=>re,createEvent:()=>T,createEventActions:()=>G,createSession:()=>Z,functionsExportedForTestingOnly:()=>Io,geminiInitParams:()=>je,getArtifactServiceFromUri:()=>so,getAskUserConfirmationFunctionCalls:()=>Fr,getFunctionCalls:()=>R,getFunctionResponses:()=>B,getGcpExporters:()=>Rs,getGcpResource:()=>bs,getLogger:()=>Yn,getSessionServiceFromUri:()=>Zr,hasTrailingCodeExecutionResult:()=>qt,isAgentTool:()=>jr,isBaseAgent:()=>bo,isBaseExampleProvider:()=>Nr,isBaseLlm:()=>ft,isBaseTool:()=>dt,isBaseToolset:()=>Kr,isFinalResponse:()=>Y,isFunctionTool:()=>Wo,isGemini2OrAbove:()=>_e,isLlmAgent:()=>x,isLoopAgent:()=>br,isParallelAgent:()=>Pr,isSequentialAgent:()=>kr,maybeSetOtelProviders:()=>ws,mergeStates:()=>W,setLogLevel:()=>Jn,setLogger:()=>Xn,stringifyContent:()=>fo,toStructuredEvents:()=>Or,trimTempDeltaState:()=>bt,version:()=>we,zodObjectToSchema:()=>ve});module.exports=Ei(ks);var b=te(require("fs/promises"),1),A=te(require("path"),1),Fe=require("url");var $=te(require("winston"),1);var $t=(r=>(r[r.DEBUG=0]="DEBUG",r[r.INFO=1]="INFO",r[r.WARN=2]="WARN",r[r.ERROR=3]="ERROR",r))($t||{}),Dt=class{constructor(){this.logLevel=1;this.logger=$.createLogger({levels:{debug:0,info:1,warn:2,error:3},format:$.format.combine($.format.label({label:"ADK"}),$.format(e=>(e.level=e.level.toUpperCase(),e))(),$.format.colorize(),$.format.timestamp(),$.format.printf(e=>`${e.level}: [${e.label}] ${e.timestamp} ${e.message}`)),transports:[new $.transports.Console]})}setLogLevel(e){this.logLevel=e}log(e,...t){this.logLevel>e||this.logger.log(e.toString(),t.join(" "))}debug(...e){this.logLevel>0||this.logger.debug(e.join(" "))}info(...e){this.logLevel>1||this.logger.info(e.join(" "))}warn(...e){this.logLevel>2||this.logger.warn(e.join(" "))}error(...e){this.logLevel>3||this.logger.error(e.join(" "))}},Ft=class{setLogLevel(e){}log(e,...t){}debug(...e){}info(...e){}warn(...e){}error(...e){}},ne=new Dt;function Xn(n){ne=n!=null?n:new Ft}function Yn(){return ne}function Jn(n){m.setLogLevel(n)}var m={setLogLevel(n){ne.setLogLevel(n)},log(n,...e){ne.log(n,...e)},debug(...n){ne.debug(...n)},info(...n){ne.info(...n)},warn(...n){ne.warn(...n)},error(...n){ne.error(...n)}};var nt="user:",Se=class{constructor(e){try{let t=e.startsWith("file://")?(0,Fe.fileURLToPath)(e):e;this.rootDir=A.resolve(t)}catch(t){throw new Error(`Invalid root directory: ${e}`,{cause:t})}}async saveArtifact({userId:e,sessionId:t,filename:o,artifact:r,customMetadata:i}){if(!r.inlineData&&!r.text)throw new Error("Artifact must have either inlineData or text content.");let s=fe(this.rootDir,e,t,o);await b.mkdir(s,{recursive:!0});let a=await Te(s),c=a.length>0?a[a.length-1]+1:0,l=pe(s),u=A.join(l,c.toString());await b.mkdir(u,{recursive:!0});let f=A.basename(s),p=A.join(u,f),d;if(r.inlineData){let h=r.inlineData.data||"";await b.writeFile(p,Buffer.from(h,"base64")),d=r.inlineData.mimeType||"application/octet-stream"}else r.text!==void 0&&await b.writeFile(p,r.text,"utf-8");let g=await Si(this.rootDir,e,t,o,c),y={fileName:o,mimeType:d,version:c,canonicalUri:g,customMetadata:i};return await Ri(A.join(u,"metadata.json"),y),c}async loadArtifact({userId:e,sessionId:t,filename:o,version:r}){try{let i=fe(this.rootDir,e,t,o);try{await b.access(i)}catch(d){m.warn(`[FileArtifactService] loadArtifact: Artifact ${o} not found`,d);return}let s=await Te(i);if(s.length===0)return;let a;if(r===void 0)a=s[s.length-1];else{if(!s.includes(r)){m.warn(`[FileArtifactService] loadArtifact: Artifact ${o} version ${r} not found`);return}a=r}let c=A.join(pe(i),a.toString()),l=A.join(c,"metadata.json"),u=await tt(l),f=A.basename(i),p=A.join(c,f);if(u.canonicalUri){let d=bi(u.canonicalUri);if(d)try{await b.access(d),p=d}catch{m.warn(`[FileArtifactService] loadArtifact: Artifact ${o} missing at ${d}, falling back to content path ${p}`)}}if(u.mimeType)try{let d=await b.readFile(p);return{inlineData:{mimeType:u.mimeType,data:d.toString("base64")}}}catch{m.warn(`[FileArtifactService] loadArtifact: Artifact ${o} missing at ${p}`);return}try{return{text:await b.readFile(p,"utf-8")}}catch{m.warn(`[FileArtifactService] loadArtifact: Text artifact ${o} missing at ${p}`);return}}catch(i){m.error(`[FileArtifactService] loadArtifact: Error loading artifact ${o}`,i);return}}async listArtifactKeys({userId:e,sessionId:t}){let o=new Set,r=eo(this.rootDir,e),i=no(r,t);for await(let a of Gt(i)){let c=await Qn(a);if(c!=null&&c.fileName)o.add(c.fileName);else{let l=A.relative(i,a);o.add(Zn(l))}}let s=to(r);for await(let a of Gt(s)){let c=await Qn(a);if(c!=null&&c.fileName)o.add(c.fileName);else{let l=A.relative(s,a);o.add(`${nt}${Zn(l)}`)}}return Array.from(o).sort()}async deleteArtifact({userId:e,sessionId:t,filename:o}){try{let r=fe(this.rootDir,e,t,o);await b.rm(r,{recursive:!0,force:!0})}catch(r){m.warn(`[FileArtifactService] deleteArtifact: Failed to delete artifact ${o}`,r)}}async listVersions({userId:e,sessionId:t,filename:o}){try{let r=fe(this.rootDir,e,t,o);return await Te(r)}catch(r){return m.warn(`[FileArtifactService] listVersions: Failed to list versions for artifact ${o}`,r),[]}}async listArtifactVersions({userId:e,sessionId:t,filename:o}){try{let r=fe(this.rootDir,e,t,o),i=await Te(r),s=[];for(let a of i){let c=A.join(pe(r),a.toString(),"metadata.json");try{let l=await tt(c);s.push(l)}catch(l){m.warn(`[FileArtifactService] listArtifactVersions: Failed to read artifact version ${a} at ${r}`,l)}}return s}catch(r){return m.warn(`[FileArtifactService] listArtifactVersions: Failed to list artifact versions for userId: ${e} sessionId: ${t} filename: ${o}`,r),[]}}async getArtifactVersion({userId:e,sessionId:t,filename:o,version:r}){try{let i=fe(this.rootDir,e,t,o),s=await Te(i);if(s.length===0)return;let a;if(r===void 0)a=s[s.length-1];else{if(!s.includes(r))return;a=r}let c=A.join(pe(i),a.toString(),"metadata.json");return await tt(c)}catch(i){m.warn(`[FileArtifactService] getArtifactVersion: Failed to get artifact version for userId: ${e} sessionId: ${t} filename: ${o} version: ${r}`,i);return}}};function eo(n,e){return A.join(n,"users",e)}function Ti(n,e){return!n||e.startsWith(nt)}function to(n){return A.join(n,"artifacts")}function no(n,e){return A.join(n,"sessions",e,"artifacts")}function pe(n){return A.join(n,"versions")}function fe(n,e,t,o){let r=eo(n,e),i;if(Ti(t,o))i=to(r);else{if(!t)throw new Error("Session ID must be provided for session-scoped artifacts.");i=no(r,t)}let s=o;if(s.startsWith(nt)&&(s=s.substring(nt.length)),s=s.trim(),A.isAbsolute(s))throw new Error(`Absolute artifact filename ${o} is not permitted.`);let a=A.resolve(i,s),c=A.relative(i,a);if(c.startsWith("..")||A.isAbsolute(c))throw new Error(`Artifact filename ${o} escapes storage directory.`);return c===""||c==="."?A.join(i,"artifact"):a}async function Te(n){let e=pe(n);try{return(await b.readdir(e,{withFileTypes:!0})).filter(r=>r.isDirectory()).map(r=>parseInt(r.name,10)).filter(r=>!isNaN(r)).sort((r,i)=>r-i)}catch(t){return m.warn(`[FileArtifactService] getArtifactVersionsFromDir: Failed to list artifact versions from ${n}`,t),[]}}async function Si(n,e,t,o,r){let i=await fe(n,e,t,o),s=A.basename(i),a=pe(i),c=A.join(a,r.toString(),s);return(0,Fe.pathToFileURL)(c).toString()}async function Ri(n,e){await b.writeFile(n,JSON.stringify(e,null,2),"utf-8")}async function tt(n){let e=await b.readFile(n,"utf-8");return JSON.parse(e)}async function Qn(n){let e=await Te(n);if(e.length===0)return;let t=e[e.length-1],o=A.join(pe(n),t.toString(),"metadata.json");try{return await tt(o)}catch(r){m.warn(`[FileArtifactService] getLatestMetadata: Failed to read metadata from ${o}`,r);return}}async function*Gt(n){try{let e=await b.readdir(n,{withFileTypes:!0});if(e.some(o=>o.isDirectory()&&o.name==="versions")){yield n;return}for(let o of e)if(o.isDirectory()){let r=A.join(n,o.name);for await(let i of Gt(r))yield i}}catch{}}function bi(n){try{return(0,Fe.fileURLToPath)(n)}catch(e){m.warn(`[FileArtifactService] fileUriToPath: Failed to convert file URI to path: ${n}`,e);return}}function Zn(n){return n.split(A.sep).join("/")}var ro=require("@google-cloud/storage"),ot=require("@google/genai");var Re=class{constructor(e){this.bucket=new ro.Storage().bucket(e)}async saveArtifact(e){if(!e.artifact.inlineData&&!e.artifact.text)throw new Error("Artifact must have either inlineData or text content.");let t=await this.listVersions(e),o=t.length>0?Math.max(...t)+1:0,r=this.bucket.file($e({...e,version:o})),i=e.customMetadata||{};return e.artifact.inlineData?(await r.save(Buffer.from(e.artifact.inlineData.data||"","base64"),{contentType:e.artifact.inlineData.mimeType,metadata:i}),o):(await r.save(e.artifact.text,{contentType:"text/plain",metadata:i}),o)}async loadArtifact(e){try{let t=e.version;if(t===void 0){let s=await this.listVersions(e);if(s.length===0)return;t=Math.max(...s)}let o=this.bucket.file($e({...e,version:t})),[[r],[i]]=await Promise.all([o.getMetadata(),o.download()]);return r.contentType==="text/plain"?(0,ot.createPartFromText)(i.toString("utf-8")):(0,ot.createPartFromBase64)(i.toString("base64"),r.contentType)}catch(t){m.warn(`[GcsArtifactService] loadArtifact: Failed to load artifact ${e.filename}`,t);return}}async listArtifactKeys(e){let t=`${e.appName}/${e.userId}/${e.sessionId}/`,o=`${e.appName}/${e.userId}/user/`,[[r],[i]]=await Promise.all([this.bucket.getFiles({prefix:t}),this.bucket.getFiles({prefix:o})]);return[...oo(r,t),...oo(i,o,"user:")].sort((s,a)=>s.localeCompare(a))}async deleteArtifact(e){let t=await this.listVersions(e);await Promise.all(t.map(o=>this.bucket.file($e({...e,version:o})).delete()))}async listVersions(e){let o=$e(e)+"/",[r]=await this.bucket.getFiles({prefix:o}),i=[];for(let s of r){let a=s.name.split("/").pop(),c=parseInt(a,10);isNaN(c)||i.push(c)}return i.sort((s,a)=>s-a)}async listArtifactVersions(e){let t=await this.listVersions(e),o=[];for(let r of t){let i=await this.getArtifactVersion({...e,version:r});i&&o.push(i)}return o}async getArtifactVersion(e){try{let t=e.version;if(t===void 0){let i=await this.listVersions(e);if(i.length===0)return;t=Math.max(...i)}let o=this.bucket.file($e({...e,version:t})),[r]=await o.getMetadata();return{version:t,mimeType:r.contentType,customMetadata:r.metadata,canonicalUri:o.publicUrl()}}catch(t){m.warn(`[GcsArtifactService] getArtifactVersion: Failed to get artifact version for userId: ${e.userId} sessionId: ${e.sessionId} filename: ${e.filename} version: ${e.version}`,t);return}}};function $e({appName:n,userId:e,sessionId:t,filename:o,version:r}){let i=o.startsWith("user:"),s=i?o.substring(5):o,a=i?`${n}/${e}/user/${s}`:`${n}/${e}/${t}/${s}`;return r!==void 0?`${a}/${r}`:a}function oo(n,e,t=""){let o=new Set;for(let r of n){if(!r.name.startsWith(e))continue;let i=r.name.substring(e.length),s=wi(i);o.add(`${t}${s}`)}return[...o]}function wi(n){let e=n.split("/");return e.length<2?n:e.slice(0,-1).join("/")}function io(n){return n==="memory://"}var oe=class{constructor(){this.artifacts={}}saveArtifact({appName:e,userId:t,sessionId:o,filename:r,artifact:i,customMetadata:s}){if(!i.inlineData&&!i.text)return Promise.reject(new Error("Artifact must have either inlineData or text content."));let a=be(e,t,o,r);this.artifacts[a]||(this.artifacts[a]=[]);let c=this.artifacts[a].length,l={version:c,customMetadata:s};return this.artifacts[a].push({part:i,metadata:l}),Promise.resolve(c)}loadArtifact({appName:e,userId:t,sessionId:o,filename:r,version:i}){let s=be(e,t,o,r),a=this.artifacts[s];return a?(i===void 0&&(i=a.length-1),Promise.resolve(a[i].part)):Promise.resolve(void 0)}listArtifactKeys({appName:e,userId:t,sessionId:o}){let r=`${e}/${t}/${o}/`,i=`${e}/${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:o,filename:r}){let i=be(e,t,o,r);return this.artifacts[i]&&delete this.artifacts[i],Promise.resolve()}listVersions({appName:e,userId:t,sessionId:o,filename:r}){let i=be(e,t,o,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)}listArtifactVersions({appName:e,userId:t,sessionId:o,filename:r}){let i=be(e,t,o,r),s=this.artifacts[i];return s?Promise.resolve(s.map(a=>a.metadata)):Promise.resolve([])}getArtifactVersion({appName:e,userId:t,sessionId:o,filename:r,version:i}){let s=be(e,t,o,r),a=this.artifacts[s];return a?(i===void 0&&(i=a.length-1),a[i]?Promise.resolve(a[i].metadata):Promise.resolve(void 0)):Promise.resolve(void 0)}};function be(n,e,t,o){return Ii(o)?`${n}/${e}/user/${o}`:`${n}/${e}/${t}/${o}`}function Ii(n){return n.startsWith("user:")}function so(n){if(io(n))return new oe;if(n.startsWith("gs://")){let e=n.split("://")[1];return new Re(e)}if(n.startsWith("file://")){let e=n.split("://")[1];return new Se(e)}throw new Error(`Unsupported artifact service URI: ${n}`)}var rt=class{constructor(e={}){this.task=e.task,this.stream=e.stream}};var Ie=require("@opentelemetry/api");function ao(n,e=[]){return it(n,Pi,"",e)}function co(n,e=[]){return it(n,Li,"",e)}var Pi=n=>n.replace(/_([a-z])/g,(e,t)=>t.toUpperCase()),Li=n=>n.replace(/[A-Z]/g,e=>"_"+e.toLowerCase());function it(n,e,t="",o=[]){if(Array.isArray(n))return n.map(r=>it(r,e,t,o));if(typeof n=="object"&&n!==null){let r=n,i={};for(let s of Object.keys(r)){let a=e(s),c=t!==""?t+"."+s:s;o.includes(c)?i[a]=r[s]:i[a]=it(r[s],e,c,o)}return i}return n}function G(n={}){return{stateDelta:{},artifactDelta:{},requestedAuthConfigs:{},requestedToolConfirmations:{},...n}}function lo(n,e){let t=G();e&&Object.assign(t,e);for(let o of n)o&&(o.stateDelta&&Object.assign(t.stateDelta,o.stateDelta),o.artifactDelta&&Object.assign(t.artifactDelta,o.artifactDelta),o.requestedAuthConfigs&&Object.assign(t.requestedAuthConfigs,o.requestedAuthConfigs),o.requestedToolConfirmations&&Object.assign(t.requestedToolConfirmations,o.requestedToolConfirmations),o.skipSummarization!==void 0&&(t.skipSummarization=o.skipSummarization),o.transferToAgent!==void 0&&(t.transferToAgent=o.transferToAgent),o.escalate!==void 0&&(t.escalate=o.escalate));return t}function T(n={}){return{...n,id:n.id||Ut(),invocationId:n.invocationId||"",author:n.author,actions:n.actions||G(),longRunningToolIds:n.longRunningToolIds||[],branch:n.branch,timestamp:n.timestamp||Date.now()}}function Y(n){return n.actions.skipSummarization||n.longRunningToolIds&&n.longRunningToolIds.length>0?!0:R(n).length===0&&B(n).length===0&&!n.partial&&!qt(n)}function R(n){let e=[];if(n.content&&n.content.parts)for(let t of n.content.parts)t.functionCall&&e.push(t.functionCall);return e}function B(n){let e=[];if(n.content&&n.content.parts)for(let t of n.content.parts)t.functionResponse&&e.push(t.functionResponse);return e}function qt(n){var e;return n.content&&((e=n.content.parts)!=null&&e.length)?n.content.parts[n.content.parts.length-1].codeExecutionResult!==void 0:!1}function fo(n){var e;return(e=n.content)!=null&&e.parts?n.content.parts.map(t=>{var o;return(o=t.text)!=null?o:""}).join(""):""}var uo="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";function Ut(){let n="";for(let e=0;e<8;e++)n+=uo[Math.floor(Math.random()*uo.length)];return n}var _i=["actions.stateDelta","actions.artifactDelta","actions.requestedAuthConfigs","actions.requestedToolConfirmations","actions.customMetadata","content.parts.functionCall.args","content.parts.functionResponse.response"],ki=["actions.state_delta","actions.artifact_delta","actions.requested_auth_configs","actions.requested_tool_confirmations","actions.custom_metadata","content.parts.function_call.args","content.parts.function_response.response"];function Vt(n){return ao(n,ki)}function po(n){return co(n,_i)}var V=require("@opentelemetry/api");var we="0.5.0";var Oi="gen_ai.agent.description",Mi="gen_ai.agent.name",Ni="gen_ai.conversation.id",jt="gen_ai.operation.name",mo="gen_ai.tool.call.id",go="gen_ai.tool.description",ho="gen_ai.tool.name",Bi="gen_ai.tool.type",j=V.trace.getTracer("gcp.vertex.agent",we);function Ge(n){try{return JSON.stringify(n)}catch{return"<not serializable>"}}function vo({agent:n,invocationContext:e}){let t=V.trace.getActiveSpan();t&&t.setAttributes({[jt]:"invoke_agent",[Oi]:n.description,[Mi]:n.name,[Ni]:e.session.id})}function Co({tool:n,args:e,functionResponseEvent:t}){var s,a;let o=V.trace.getActiveSpan();if(!o)return;o.setAttributes({[jt]:"execute_tool",[go]:n.description||"",[ho]:n.name,[Bi]:n.constructor.name,"gcp.vertex.agent.llm_request":"{}","gcp.vertex.agent.llm_response":"{}","gcp.vertex.agent.tool_call_args":qe()?Ge(e):"{}"});let r="<not specified>",i="<not specified>";if((s=t.content)!=null&&s.parts){let l=(a=t.content.parts[0])==null?void 0:a.functionResponse;l!=null&&l.id&&(r=l.id),l!=null&&l.response&&(i=l.response)}(typeof i!="object"||i===null)&&(i={result:i}),o.setAttributes({[mo]:r,"gcp.vertex.agent.event_id":t.id,"gcp.vertex.agent.tool_response":qe()?Ge(i):"{}"})}function yo({responseEventId:n,functionResponseEvent:e}){let t=V.trace.getActiveSpan();t&&(t.setAttributes({[jt]:"execute_tool",[ho]:"(merged tools)",[go]:"(merged tools)",[mo]:n,"gcp.vertex.agent.tool_call_args":"N/A","gcp.vertex.agent.event_id":n,"gcp.vertex.agent.llm_request":"{}","gcp.vertex.agent.llm_response":"{}"}),t.setAttribute("gcp.vertex.agent.tool_response",qe()?Ge(e):"{}"))}function Ao({invocationContext:n,eventId:e,llmRequest:t,llmResponse:o}){var i,s,a;let r=V.trace.getActiveSpan();if(r&&(r.setAttributes({"gen_ai.system":"gcp.vertex.agent","gen_ai.request.model":t.model,"gcp.vertex.agent.invocation_id":n.invocationId,"gcp.vertex.agent.session_id":n.session.id,"gcp.vertex.agent.event_id":e,"gcp.vertex.agent.llm_request":qe()?Ge(Di(t)):"{}"}),(i=t.config)!=null&&i.topP&&r.setAttribute("gen_ai.request.top_p",t.config.topP),((s=t.config)==null?void 0:s.maxOutputTokens)!==void 0&&r.setAttribute("gen_ai.request.max_tokens",t.config.maxOutputTokens),r.setAttribute("gcp.vertex.agent.llm_response",qe()?Ge(o):"{}"),o.usageMetadata&&r.setAttribute("gen_ai.usage.input_tokens",o.usageMetadata.promptTokenCount||0),(a=o.usageMetadata)!=null&&a.candidatesTokenCount&&r.setAttribute("gen_ai.usage.output_tokens",o.usageMetadata.candidatesTokenCount),o.finishReason)){let c=typeof o.finishReason=="string"?o.finishReason.toLowerCase():String(o.finishReason).toLowerCase();r.setAttribute("gen_ai.response.finish_reasons",[c])}}function Di(n){let e={model:n.model,contents:[]};if(n.config){let{responseSchema:t,...o}=n.config;e.config=o}return e.contents=n.contents.map(t=>{var o;return{role:t.role,parts:((o=t.parts)==null?void 0:o.filter(r=>!r.inlineData))||[]}}),e}function xo(n,e){return{next:V.context.bind(n,e.next.bind(e)),return:V.context.bind(n,e.return.bind(e)),throw:V.context.bind(n,e.throw.bind(e)),[Symbol.asyncIterator](){return xo(n,e[Symbol.asyncIterator]())}}}function de(n,e,t){let o=t.call(e);return xo(n,o)}function qe(){let n=process.env.ADK_CAPTURE_MESSAGE_CONTENT_IN_SPANS||"true";return n==="true"||n==="1"}var Ue=class{constructor(e){this.authConfig=e}getAuthResponse(e){let t="temp:"+this.authConfig.credentialKey;return e.get(t)}generateAuthRequest(){var t,o;let e=this.authConfig.authScheme.type;if(!["oauth2","openIdConnect"].includes(e))return this.authConfig;if((o=(t=this.authConfig.exchangedAuthCredential)==null?void 0:t.oauth2)!=null&&o.authUri)return this.authConfig;if(!this.authConfig.rawAuthCredential)throw new Error(`Auth Scheme ${e} requires authCredential.`);if(!this.authConfig.rawAuthCredential.oauth2)throw new Error(`Auth Scheme ${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 ${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 v=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={...this.delta,...e},this.value={...this.value,...e}}toRecord(){return{...this.value,...this.delta}}};v.APP_PREFIX="app:",v.USER_PREFIX="user:",v.TEMP_PREFIX="temp:";var re=class{constructor({hint:e,confirmed:t,payload:o}){this.hint=e!=null?e:"",this.confirmed=t,this.payload=o}};var I=class{constructor(e){this.invocationContext=e}get userContent(){return this.invocationContext.userContent}get invocationId(){return this.invocationContext.invocationId}get userId(){return this.invocationContext.userId}get sessionId(){return this.invocationContext.session.id}get agentName(){return this.invocationContext.agent.name}get state(){return new v(this.invocationContext.session.state,{})}};var _=class extends I{constructor(e){super(e.invocationContext),this.eventActions=e.eventActions||G(),this._state=new v(e.invocationContext.session.state,this.eventActions.stateDelta),this.functionCallId=e.functionCallId,this.toolConfirmation=e.toolConfirmation}get state(){return this._state}get actions(){return this.eventActions}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 o=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]=o,o}requestCredential(e){if(!this.functionCallId)throw new Error("functionCallId is not set.");let t=new Ue(e);this.eventActions.requestedAuthConfigs[this.functionCallId]=t.generateAuthRequest()}getAuthResponse(e){return new Ue(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 re({hint:e,confirmed:!1,payload:t})}};function q(){return typeof window<"u"}var st="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function ie(){let n="";for(let e=0;e<st.length;e++){let t=Math.random()*16|0;st[e]==="x"?n+=t.toString(16):st[e]==="y"?n+=(t&3|8).toString(16):n+=st[e]}return n}function Eo(n){return q()?window.atob(n):Buffer.from(n,"base64").toString()}function at(n){if(!process.env)return!1;let e=(process.env[n]||"").toLowerCase();return["true","1"].includes(e)}var zt=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 ${e.maxLlmCalls} exceeded`)}},z=class{constructor(e){this.invocationCostManager=new zt;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 To(){return`e-${ie()}`}var Kt=Symbol.for("google.adk.baseAgent");function bo(n){return typeof n=="object"&&n!==null&&Kt in n&&n[Kt]===!0}var Ro;Ro=Kt;var D=class{constructor(e){this[Ro]=!0;this.name=Fi(e.name),this.description=e.description,this.parentAgent=e.parentAgent,this.subAgents=e.subAgents||[],this.beforeAgentCallback=So(e.beforeAgentCallback),this.afterAgentCallback=So(e.afterAgentCallback),this.setParentAgentForSubAgents()}get rootAgent(){return Gi(this)}async*runAsync(e){let t=j.startSpan(`invoke_agent ${this.name}`),o=Ie.trace.setSpan(Ie.context.active(),t);try{yield*de(o,this,async function*(){let r=this.createInvocationContext(e),i=await this.handleBeforeAgentCallback(r);if(i&&(yield i),r.endInvocation)return;vo({agent:this,invocationContext:r});for await(let a of this.runAsyncImpl(r))yield a;if(r.endInvocation)return;let s=await this.handleAfterAgentCallback(r);s&&(yield s)})}finally{t.end()}}async*runLive(e){let t=j.startSpan(`invoke_agent ${this.name}`),o=Ie.trace.setSpan(Ie.context.active(),t);try{throw yield*de(o,this,async function*(){}),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 o=t.findAgent(e);if(o)return o}}createInvocationContext(e){return new z({...e,agent:this})}async handleBeforeAgentCallback(e){if(this.beforeAgentCallback.length===0)return;let t=new _({invocationContext:e});for(let o of this.beforeAgentCallback){let r=await o(t);if(r)return e.endInvocation=!0,T({invocationId:e.invocationId,author:this.name,branch:e.branch,content:r,actions:t.eventActions})}if(t.state.hasDelta())return T({invocationId:e.invocationId,author:this.name,branch:e.branch,actions:t.eventActions})}async handleAfterAgentCallback(e){if(this.afterAgentCallback.length===0)return;let t=new _({invocationContext:e});for(let o of this.afterAgentCallback){let r=await o(t);if(r)return T({invocationId:e.invocationId,author:this.name,branch:e.branch,content:r,actions:t.eventActions})}if(t.state.hasDelta())return T({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 "${e.name}" already has a parent agent, current parent: "${e.parentAgent.name}", trying to add: "${this.name}"`);e.parentAgent=this}}};function Fi(n){if(!$i(n))throw new Error(`Found invalid agent name: "${n}". 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), underscores, and hyphens.`);if(n==="user")throw new Error("Agent name cannot be 'user'. 'user' is reserved for end-user's input.");return n}function $i(n){return/^[\p{ID_Start}$_][\p{ID_Continue}$_-]*$/u.test(n)}function Gi(n){for(;n.parentAgent;)n=n.parentAgent;return n}function So(n){return n?Array.isArray(n)?n:[n]:[]}var wo=require("@google/genai"),Ht=require("lodash-es");var Wt="adk-",ct="adk_request_credential",Pe="adk_request_confirmation",Io={handleFunctionCallList:lt,generateAuthEvent:Yt,generateRequestConfirmationEvent:Jt};function Xt(){return`${Wt}${ie()}`}function Po(n){let e=R(n);if(e)for(let t of e)t.id||(t.id=Xt())}function Lo(n){if(n&&n.parts)for(let e of n.parts)e.functionCall&&e.functionCall.id&&e.functionCall.id.startsWith(Wt)&&(e.functionCall.id=void 0),e.functionResponse&&e.functionResponse.id&&e.functionResponse.id.startsWith(Wt)&&(e.functionResponse.id=void 0)}function _o(n,e){let t=new Set;for(let o of n)o.name&&o.name in e&&e[o.name].isLongRunning&&o.id&&t.add(o.id);return t}function Yt(n,e){var r;if(!((r=e.actions)!=null&&r.requestedAuthConfigs)||(0,Ht.isEmpty)(e.actions.requestedAuthConfigs))return;let t=[],o=new Set;for(let[i,s]of Object.entries(e.actions.requestedAuthConfigs)){let a={name:ct,args:{function_call_id:i,auth_config:s},id:Xt()};o.add(a.id),t.push({functionCall:a})}return T({invocationId:n.invocationId,author:n.agent.name,branch:n.branch,content:{parts:t,role:e.content.role},longRunningToolIds:Array.from(o)})}function Jt({invocationContext:n,functionCallEvent:e,functionResponseEvent:t}){var s,a;if(!((s=t.actions)!=null&&s.requestedToolConfirmations)||(0,Ht.isEmpty)(t.actions.requestedToolConfirmations))return;let o=[],r=new Set,i=R(e);for(let[c,l]of Object.entries(t.actions.requestedToolConfirmations)){let u=(a=i.find(p=>p.id===c))!=null?a:void 0;if(!u)continue;let f={name:Pe,args:{originalFunctionCall:u,toolConfirmation:l},id:Xt()};r.add(f.id),o.push({functionCall:f})}return T({invocationId:n.invocationId,author:n.agent.name,branch:n.branch,content:{parts:o,role:t.content.role},actions:t.actions,longRunningToolIds:Array.from(r)})}async function qi(n,e,t){return j.startActiveSpan(`execute_tool ${n.name}`,async o=>{try{m.debug(`callToolAsync ${n.name}`);let r=await n.runAsync({args:e,toolContext:t});return Co({tool:n,args:e,functionResponseEvent:Ui(n,r,t,t.invocationContext)}),r}finally{o.end()}})}function Ui(n,e,t,o){let r;typeof e!="object"||e==null?r={result:e}:r=e;let s={role:"user",parts:[{functionResponse:{name:n.name,response:r,id:t.functionCallId}}]};return T({invocationId:o.invocationId,author:o.agent.name,content:s,actions:t.actions,branch:o.branch})}async function ko({invocationContext:n,functionCallEvent:e,toolsDict:t,beforeToolCallbacks:o,afterToolCallbacks:r,filters:i,toolConfirmationDict:s}){let a=R(e);return await lt({invocationContext:n,functionCalls:a,toolsDict:t,beforeToolCallbacks:o,afterToolCallbacks:r,filters:i,toolConfirmationDict:s})}async function lt({invocationContext:n,functionCalls:e,toolsDict:t,beforeToolCallbacks:o,afterToolCallbacks:r,filters:i,toolConfirmationDict:s}){var u;let a=[],c=e.filter(f=>!i||f.id&&i.has(f.id));for(let f of c){let p;s&&f.id&&(p=s[f.id]);let{tool:d,toolContext:g}=Vi({invocationContext:n,functionCall:f,toolsDict:t,toolConfirmation:p});m.debug(`execute_tool ${d.name}`);let y=(u=f.args)!=null?u:{},h=null,S;if(h=await n.pluginManager.runBeforeToolCallback({tool:d,toolArgs:y,toolContext:g}),h==null){for(let ee of o)if(h=await ee({tool:d,args:y,context:g}),h)break}if(h==null)try{h=await qi(d,y,g)}catch(ee){if(ee instanceof Error){let Kn=await n.pluginManager.runOnToolErrorCallback({tool:d,toolArgs:y,toolContext:g,error:ee});Kn?h=Kn:S=ee.message}else S=ee}let N=await n.pluginManager.runAfterToolCallback({tool:d,toolArgs:y,toolContext:g,result:h});if(N==null){for(let ee of r)if(N=await ee({tool:d,args:y,context:g,response:h}),N)break}if(N!=null&&(h=N),d.isLongRunning&&!h)continue;S?h={error:S}:(typeof h!="object"||h==null)&&(h={result:h});let zn=T({invocationId:n.invocationId,author:n.agent.name,content:(0,wo.createUserContent)({functionResponse:{id:g.functionCallId,name:d.name,response:h}}),actions:g.actions,branch:n.branch});m.debug("traceToolCall",{tool:d.name,args:y,functionResponseEvent:zn.id}),a.push(zn)}if(!a.length)return null;let l=ji(a);return a.length>1&&j.startActiveSpan("execute_tool (merged)",f=>{try{m.debug("execute_tool (merged)"),m.debug("traceMergedToolCalls",{responseEventId:l.id,functionResponseEvent:l.id}),yo({responseEventId:l.id,functionResponseEvent:l})}finally{f.end()}}),l}function Vi({invocationContext:n,functionCall:e,toolsDict:t,toolConfirmation:o}){if(!e.name||!(e.name in t))throw new Error(`Function ${e.name} is not found in the toolsDict.`);let r=new _({invocationContext:n,functionCallId:e.id||void 0,toolConfirmation:o});return{tool:t[e.name],toolContext:r}}function ji(n){if(!n.length)throw new Error("No function response events provided.");if(n.length===1)return n[0];let e=[];for(let i of n)i.content&&i.content.parts&&e.push(...i.content.parts);let t=n[0],o=n.map(i=>i.actions||{}),r=lo(o);return T({author:t.author,branch:t.branch,content:{role:"user",parts:e},actions:r,timestamp:t.timestamp})}var ut=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(),o=this.queue.shift();t(o)}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:{}})}async*[Symbol.asyncIterator](){for(;;){let e=await this.get();if(yield e,e.close)break}}};var yt=require("@opentelemetry/api");var zi="google-adk",Ki="gl-typescript",Wi="remote_reasoning_engine",Hi="GOOGLE_CLOUD_AGENT_ENGINE_ID";function Xi(){let n=`${zi}/${we}`;!q()&&process.env[Hi]&&(n=`${n}+${Wi}`);let e=`${Ki}/${q()?window.navigator.userAgent:process.version}`;return[n,e]}function Oo(){return Xi()}var Qt=Symbol.for("google.adk.baseModel");function ft(n){return typeof n=="object"&&n!==null&&Qt in n&&n[Qt]===!0}var Mo;Mo=Qt;var me=class{constructor({model:e}){this[Mo]=!0;this.model=e}get trackingHeaders(){let t=Oo().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."}]})}};me.supportedModels=[];var J=require("@google/genai");var Ve=(t=>(t.VERTEX_AI="VERTEX_AI",t.GEMINI_API="GEMINI_API",t))(Ve||{});function No(){return at("GOOGLE_GENAI_USE_VERTEXAI")?"VERTEX_AI":"GEMINI_API"}var pt=class{constructor(e){this.geminiSession=e}async sendHistory(e){let t=e.filter(o=>{var r;return o.parts&&((r=o.parts[0])==null?void 0:r.text)});t.length>0?this.geminiSession.sendClientContent({turns:t,turnComplete:t[t.length-1].role==="user"}):m.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(o=>o.functionResponse).filter(o=>!!o);m.debug("Sending LLM function response:",t),this.geminiSession.sendToolResponse({functionResponses:t})}else m.debug("Sending LLM new content",e),this.geminiSession.sendClientContent({turns:[e],turnComplete:!0})}async sendRealtime(e){m.debug("Sending LLM Blob:",e),this.geminiSession.sendRealtimeInput({media:e})}buildFullTextResponse(e){return{content:{role:"model",parts:[{text:e}]}}}async*receive(){throw new Error("Not Implemented.")}async close(){this.geminiSession.close()}};function Zt(n){var t;let e=n.usageMetadata;if(n.candidates&&n.candidates.length>0){let o=n.candidates[0];return(t=o.content)!=null&&t.parts&&o.content.parts.length>0?{content:o.content,groundingMetadata:o.groundingMetadata,citationMetadata:o.citationMetadata,usageMetadata:e,finishReason:o.finishReason}:{errorCode:o.finishReason,errorMessage:o.finishMessage,usageMetadata:e,citationMetadata:o.citationMetadata,finishReason:o.finishReason}}return n.promptFeedback?{errorCode:n.promptFeedback.blockReason,errorMessage:n.promptFeedback.blockReasonMessage,usageMetadata:e}:{errorCode:"UNKNOWN_ERROR",errorMessage:"Unknown error.",usageMetadata:e}}var Q=class extends me{constructor({model:e,apiKey:t,vertexai:o,project:r,location:i,headers:s}){e||(e="gemini-2.5-flash"),super({model:e});let a=je({model:e,vertexai:o,project:r,location:i,apiKey:t});if(!a.vertexai&&!a.apiKey)throw new Error("API key must be provided via constructor or GOOGLE_GENAI_API_KEY or GEMINI_API_KEY environment variable.");this.project=a.project,this.location=a.location,this.apiKey=a.apiKey,this.headers=s,this.vertexai=!!a.vertexai}async*generateContentAsync(e,t=!1){var o,r,i,s,a,c,l;if(this.preprocessRequest(e),this.maybeAppendUserContent(e),m.info(`Sending out request, model: ${e.model}, backend: ${this.apiBackend}, stream: ${t}`),(o=e.config)!=null&&o.httpOptions&&(e.config.httpOptions.headers={...e.config.httpOptions.headers,...this.trackingHeaders}),t){let u=await this.apiClient.models.generateContentStream({model:(r=e.model)!=null?r:this.model,contents:e.contents,config:e.config}),f="",p="",d,g;for await(let y of u){g=y;let h=Zt(y);d=h.usageMetadata;let S=(s=(i=h.content)==null?void 0:i.parts)==null?void 0:s[0];if(S!=null&&S.text)"thought"in S&&S.thought?f+=S.text:p+=S.text,h.partial=!0;else if((f||p)&&(!S||!S.inlineData)){let N=[];f&&N.push({text:f,thought:!0}),p&&N.push((0,J.createPartFromText)(p)),yield{content:{role:"model",parts:N},usageMetadata:h.usageMetadata},f="",p=""}yield h}if((p||f)&&((c=(a=g==null?void 0:g.candidates)==null?void 0:a[0])==null?void 0:c.finishReason)===J.FinishReason.STOP){let y=[];f&&y.push({text:f,thought:!0}),p&&y.push({text:p}),yield{content:{role:"model",parts:y},usageMetadata:d}}}else{let u=await this.apiClient.models.generateContent({model:(l=e.model)!=null?l:this.model,contents:e.contents,config:e.config});yield Zt(u)}}getHttpOptions(){return{headers:{...this.trackingHeaders,...this.headers}}}get apiClient(){return this._apiClient?this._apiClient:(this.vertexai?this._apiClient=new J.GoogleGenAI({vertexai:this.vertexai,project:this.project,location:this.location,httpOptions:this.getHttpOptions()}):this._apiClient=new J.GoogleGenAI({apiKey:this.apiKey,httpOptions:this.getHttpOptions()}),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}getLiveHttpOptions(){return{headers:this.trackingHeaders,apiVersion:this.liveApiVersion}}get liveApiClient(){return this._liveApiClient||(this._liveApiClient=new J.GoogleGenAI({apiKey:this.apiKey,httpOptions:this.getLiveHttpOptions()})),this._liveApiClient}async connect(e){var o,r,i,s;(o=e.liveConnectConfig)!=null&&o.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:[(0,J.createPartFromText)(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 pt(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 o of t.parts)Bo(o.inlineData),Bo(o.fileData)}}};Q.supportedModels=[/gemini-.*/,/projects\/.+\/locations\/.+\/endpoints\/.+/,/projects\/.+\/locations\/.+\/publishers\/google\/models\/gemini.+/];function Bo(n){n&&n.displayName&&(n.displayName=void 0)}function je({model:n,vertexai:e,project:t,location:o,apiKey:r}){let i={model:n,vertexai:e,project:t,location:o,apiKey:r};if(i.vertexai=!!e,!i.vertexai&&!q()&&(i.vertexai=at("GOOGLE_GENAI_USE_VERTEXAI")),i.vertexai){if(!q()&&!i.project&&(i.project=process.env.GOOGLE_CLOUD_PROJECT),!q()&&!i.location&&(i.location=process.env.GOOGLE_CLOUD_LOCATION),!i.project)throw new Error("VertexAI project must be provided via constructor or GOOGLE_CLOUD_PROJECT environment variable.");if(!i.location)throw new Error("VertexAI location must be provided via constructor or GOOGLE_CLOUD_LOCATION environment variable.")}else!i.apiKey&&!q()&&(i.apiKey=process.env.GOOGLE_GENAI_API_KEY||process.env.GEMINI_API_KEY);return i}var Do="APIGEE_PROXY_URL",ge=class extends Q{constructor({model:e,proxyUrl:t,apiKey:o,vertexai:r,location:i,project:s,headers:a}){var c;if(!$o(e))throw new Error(`Model ${e} is not a valid Apigee model, expected apigee/[<provider>/][<version>/]<model_id>`);if(super({...Yi({model:e,vertexai:r,project:s,location:i,apiKey:o}),headers:a}),this.proxyUrl=t!=null?t:"",!q()&&!this.proxyUrl&&(this.proxyUrl=(c=process.env[Do])!=null?c:""),!this.proxyUrl)throw new Error(`Proxy URL must be provided via the constructor or ${Do} environment variable.`)}getHttpOptions(){let e=super.getHttpOptions();return e.baseUrl=this.proxyUrl,e}getLiveHttpOptions(){let e=super.getLiveHttpOptions();return e.baseUrl=this.proxyUrl,e}identifyApiVersion(){let t=(this.model.startsWith("apigee/")?this.model.substring(7):this.model).split("/");return t.length===3?t[1]:t.length===2&&t[0]!="vertex_ai"&&t[0]!="gemini"&&t[0].startsWith("v")?t[0]:this.vertexai?"v1beta1":"v1alpha"}get liveApiVersion(){return this._apigeeLiveApiVersion||(this._apigeeLiveApiVersion=this.identifyApiVersion()),this._apigeeLiveApiVersion}async*generateContentAsync(e,t=!1){var r;let o=(r=e.model)!=null?r:this.model;e.model=Fo(o),yield*super.generateContentAsync(e,t)}async connect(e){var o;let t=(o=e.model)!=null?o:this.model;return e.model=Fo(t),super.connect(e)}};ge.supportedModels=[/apigee\/.*/];function Yi({model:n,vertexai:e,project:t,location:o,apiKey:r}){var s;let i=je({model:n,vertexai:e,project:t,location:o,apiKey:r});return i.vertexai=i.vertexai||((s=i.model)==null?void 0:s.startsWith("apigee/vertex_ai/")),i.vertexai||i.apiKey||(m.warn('No API key provided when using a Gemini model, using a fake key "-".'),i.apiKey="-"),i}function Fo(n){if(!$o(n))throw new Error(`Model ${n} is not a valid Apigee model, expected apigee/[<provider>/][<version>/]<model_id>`);let e=n.split("/");return e[e.length-1]}function $o(n){let e=["vertex_ai","gemini"];if(!n.startsWith("apigee/"))return!1;let t=n.substring(7);if(t.length===0)return!1;let o=t.split("/",-1);return o[o.length-1].length===0?!1:o.length==1?!0:o.length==2?e.includes(o[0])?!0:o[0].startsWith("v"):o.length==3&&e.includes(o[0])?o[1].startsWith("v"):!1}var en=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 o=this.cache.keys().next().value;o!==void 0&&this.cache.delete(o)}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)&&m.info(`Updating LLM class for ${e} from ${F.llmRegistryDict.get(e)} to ${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[o,r]of F.llmRegistryDict.entries())if(new RegExp(`^${o instanceof RegExp?o.source:o}$`,o instanceof RegExp?o.flags:void 0).test(e))return F.resolveCache.set(e,r),r;throw new Error(`Model ${e} not found.`)}};F.llmRegistryDict=new Map,F.resolveCache=new en(32);var se=F;se.register(Q);se.register(ge);var tn=Symbol.for("google.adk.baseTool");function dt(n){return typeof n=="object"&&n!==null&&tn in n&&n[tn]===!0}var Go;Go=tn;var M=class{constructor(e){this[Go]=!0;var t;this.name=e.name,this.description=e.description,this.isLongRunning=(t=e.isLongRunning)!=null?t:!1}_getDeclaration(){}async processLlmRequest({llmRequest:e}){let t=this._getDeclaration();if(!t)return;if(this.name in e.toolsDict)throw new Error(`Duplicate tool name: ${this.name}`);e.toolsDict[this.name]=this;let o=Ji(e);o?(o.functionDeclarations||(o.functionDeclarations=[]),o.functionDeclarations.push(t)):(e.config=e.config||{},e.config.tools=e.config.tools||[],e.config.tools.push({functionDeclarations:[t]}))}get apiVariant(){return No()}};function Ji(n){var e;return(((e=n.config)==null?void 0:e.tools)||[]).find(t=>"functionDeclarations"in t)}var nn=require("@google/genai"),qo=require("zod-to-json-schema"),Uo=require("zod/v4");function on(n){return n!==null&&typeof n=="object"&&"parse"in n&&typeof n.parse=="function"&&"safeParse"in n&&typeof n.safeParse=="function"}function Qi(n){return on(n)&&!("_zod"in n)}function Zi(n){return on(n)&&"_zod"in n}function es(n){var o,r;let e=n;if((o=e._def)!=null&&o.typeName)return e._def.typeName;let t=(r=e._def)==null?void 0:r.type;if(typeof t=="string"&&t)return"Zod"+t.charAt(0).toUpperCase()+t.slice(1)}function he(n){return on(n)&&es(n)==="ZodObject"}function ve(n){if(!he(n))throw new Error("Expected a Zod Object");if(Zi(n))return(0,Uo.toJSONSchema)(n,{target:"openapi-3.0",io:"input",override:e=>{var o;let{jsonSchema:t}=e;t.additionalProperties!==void 0&&delete t.additionalProperties,t.readOnly!==void 0&&delete t.readOnly,t.maxItems!==void 0&&(t.maxItems=t.maxItems.toString()),(t.format==="email"||t.format==="uuid")&&delete t.pattern,t.minItems!==void 0&&(t.minItems=t.minItems.toString()),t.minLength!==void 0&&(t.minLength=t.minLength.toString()),t.maxLength!==void 0&&(t.maxLength=t.maxLength.toString()),((o=t.enum)==null?void 0:o.length)===1&&t.enum[0]===null&&(t.type=nn.Type.NULL,delete t.enum),t.type!==void 0&&(t.type=t.type.toUpperCase())}});if(Qi(n))return(0,qo.zodToJsonSchema)(n,{target:"openApi3",emailStrategy:"format:email",postProcess:e=>{var t,o,r,i,s,a,c;if(e)return e.additionalProperties!==void 0&&delete e.additionalProperties,e.maxItems!==void 0&&(e.maxItems=(t=e.maxItems)==null?void 0:t.toString()),e.minItems!==void 0&&(e.minItems=(o=e.minItems)==null?void 0:o.toString()),e.minLength!==void 0&&(e.minLength=(r=e.minLength)==null?void 0:r.toString()),e.maxLength!==void 0&&(e.maxLength=(i=e.maxLength)==null?void 0:i.toString()),((s=e.enum)==null?void 0:s.length)===1&&e.enum[0]==="null"&&(e.type=nn.Type.NULL,delete e.enum),e.type==="integer"&&e.format!=="int64"&&((a=e.minimum)!=null||(e.minimum=Number.MIN_SAFE_INTEGER),(c=e.maximum)!=null||(e.maximum=Number.MAX_SAFE_INTEGER)),e.type!==void 0&&(e.type=e.type.toUpperCase()),e}});throw new Error("Unsupported Zod schema version.")}var sn=require("zod");function Ce(n,e){n.config||(n.config={});let t=e.join(`
|
|
7
|
+
"use strict";var qs=Object.create;var tt=Object.defineProperty;var Vo=Object.getOwnPropertyDescriptor;var Vs=Object.getOwnPropertyNames;var js=Object.getPrototypeOf,zs=Object.prototype.hasOwnProperty;var Hs=(n,e)=>{for(var t in e)tt(n,t,{get:e[t],enumerable:!0})},jo=(n,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Vs(e))!zs.call(n,r)&&r!==t&&tt(n,r,{get:()=>e[r],enumerable:!(o=Vo(e,r))||o.enumerable});return n};var J=(n,e,t)=>(t=n!=null?qs(js(n)):{},jo(e||!n||!n.__esModule?tt(t,"default",{value:n,enumerable:!0}):t,n)),Ws=n=>jo(tt({},"__esModule",{value:!0}),n),R=(n,e,t,o)=>{for(var r=o>1?void 0:o?Vo(e,t):e,i=n.length-1,s;i>=0;i--)(s=n[i])&&(r=(o?s(e,t,r):s(r))||r);return o&&r&&tt(e,t,r),r};var zc={};Hs(zc,{A2AAgentExecutor:()=>Ke,AGENT_CARD_PATH:()=>Ro.AGENT_CARD_PATH,ActiveStreamingTool:()=>dn,AgentTool:()=>yn,ApigeeLlm:()=>Re,AuthCredentialTypes:()=>ko,BaseAgent:()=>$,BaseCodeExecutor:()=>Ve,BaseExampleProvider:()=>Cn,BaseLlm:()=>Se,BaseLlmRequestProcessor:()=>B,BaseLlmResponseProcessor:()=>jt,BasePlugin:()=>ye,BaseSessionService:()=>Ae,BaseTool:()=>k,BaseToolset:()=>He,BuiltInCodeExecutor:()=>ze,CONTENT_REQUEST_PROCESSOR:()=>gt,ContentRequestProcessor:()=>mt,Context:()=>D,ContextCompactorRequestProcessor:()=>_e,DatabaseSessionService:()=>et,EXIT_LOOP:()=>ds,EventType:()=>Po,ExitLoopTool:()=>yt,FileArtifactService:()=>Ye,FunctionTool:()=>ne,GOOGLE_SEARCH:()=>ps,GcsArtifactService:()=>Je,Gemini:()=>le,GoogleLLMVariant:()=>lt,GoogleSearchTool:()=>Tt,InMemoryArtifactService:()=>Ee,InMemoryMemoryService:()=>xe,InMemoryPolicyEngine:()=>Et,InMemoryRunner:()=>En,InMemorySessionService:()=>W,InvocationContext:()=>V,LLMRegistry:()=>Ce,LOAD_ARTIFACTS:()=>gs,LOAD_MEMORY:()=>hs,LiveRequestQueue:()=>pn,LlmAgent:()=>Wt,LlmSummarizer:()=>mn,LoadArtifactsTool:()=>St,LoadMemoryTool:()=>Rt,LogLevel:()=>Bn,LoggingPlugin:()=>vn,LongRunningFunctionTool:()=>Sn,LoopAgent:()=>Xt,MCPSessionManager:()=>bt,MCPTool:()=>kt,MCPToolset:()=>Go,PRELOAD_MEMORY:()=>vs,ParallelAgent:()=>Yt,PluginManager:()=>We,PolicyOutcome:()=>Mo,PreloadMemoryTool:()=>It,REQUEST_CONFIRMATION_FUNCTION_CALL_NAME:()=>Oo,ReadonlyContext:()=>b,RemoteA2AAgent:()=>nn,Runner:()=>oe,SecurityPlugin:()=>An,SequentialAgent:()=>Jt,State:()=>E,StreamingMode:()=>ht,TokenBasedContextCompactor:()=>gn,ToolConfirmation:()=>pe,TruncatingContextCompactor:()=>hn,createEvent:()=>A,createEventActions:()=>F,createSession:()=>ue,functionsExportedForTestingOnly:()=>Mr,geminiInitParams:()=>ut,getA2AAgentCard:()=>en,getArtifactServiceFromUri:()=>ns,getAskUserConfirmationFunctionCalls:()=>cs,getFunctionCalls:()=>w,getFunctionResponses:()=>q,getGcpExporters:()=>Fc,getGcpResource:()=>Uc,getLogger:()=>Ot,getSessionServiceFromUri:()=>Ts,hasTrailingCodeExecutionResult:()=>kn,isAgentTool:()=>fs,isBaseAgent:()=>cr,isBaseExampleProvider:()=>is,isBaseLlm:()=>$t,isBaseTool:()=>Ge,isBaseToolset:()=>Qt,isCompactedEvent:()=>z,isFinalResponse:()=>se,isFunctionTool:()=>Vr,isGemini2OrAbove:()=>je,isLlmAgent:()=>x,isLoopAgent:()=>Le,isParallelAgent:()=>Oe,isRunner:()=>rn,isSequentialAgent:()=>Me,maybeSetOtelProviders:()=>$c,mergeStates:()=>re,setLogLevel:()=>ur,setLogger:()=>lr,stringifyContent:()=>Fe,toA2a:()=>zi,toStructuredEvents:()=>os,trimTempDeltaState:()=>sn,version:()=>Ue,zodObjectToSchema:()=>we});module.exports=Ws(zc);var Ro=require("@a2a-js/sdk"),Ni=require("@a2a-js/sdk/client");var $e=require("@opentelemetry/api");function zo(n,e=[]){return Pt(n,Ks,"",e)}function Ho(n,e=[]){return Pt(n,Xs,"",e)}var Ks=n=>n.replace(/_([a-z])/g,(e,t)=>t.toUpperCase()),Xs=n=>n.replace(/[A-Z]/g,e=>"_"+e.toLowerCase());function Pt(n,e,t="",o=[]){if(Array.isArray(n))return n.map(r=>Pt(r,e,t,o));if(typeof n=="object"&&n!==null){let r=n,i={};for(let s of Object.keys(r)){let a=e(s),c=t!==""?t+"."+s:s;o.includes(c)?i[a]=r[s]:i[a]=Pt(r[s],e,c,o)}return i}return n}function F(n={}){return{stateDelta:{},artifactDelta:{},requestedAuthConfigs:{},requestedToolConfirmations:{},...n}}function Wo(n,e){let t=F();e&&Object.assign(t,e);for(let o of n)o&&(o.stateDelta&&Object.assign(t.stateDelta,o.stateDelta),o.artifactDelta&&Object.assign(t.artifactDelta,o.artifactDelta),o.requestedAuthConfigs&&Object.assign(t.requestedAuthConfigs,o.requestedAuthConfigs),o.requestedToolConfirmations&&Object.assign(t.requestedToolConfirmations,o.requestedToolConfirmations),o.skipSummarization!==void 0&&(t.skipSummarization=o.skipSummarization),o.transferToAgent!==void 0&&(t.transferToAgent=o.transferToAgent),o.escalate!==void 0&&(t.escalate=o.escalate));return t}function A(n={}){return{...n,id:n.id||Pn(),invocationId:n.invocationId||"",author:n.author,actions:n.actions||F(),longRunningToolIds:n.longRunningToolIds||[],branch:n.branch,timestamp:n.timestamp||Date.now()}}function se(n){return n.actions.skipSummarization||n.longRunningToolIds&&n.longRunningToolIds.length>0?!0:w(n).length===0&&q(n).length===0&&!n.partial&&!kn(n)}function w(n){let e=[];if(n.content&&n.content.parts)for(let t of n.content.parts)t.functionCall&&e.push(t.functionCall);return e}function q(n){let e=[];if(n.content&&n.content.parts)for(let t of n.content.parts)t.functionResponse&&e.push(t.functionResponse);return e}function kn(n){var e;return n.content&&((e=n.content.parts)!=null&&e.length)?n.content.parts[n.content.parts.length-1].codeExecutionResult!==void 0:!1}function Fe(n){var e;return(e=n.content)!=null&&e.parts?n.content.parts.map(t=>{var o;return(o=t.text)!=null?o:""}).join(""):""}var Ko="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";function Pn(){let n="";for(let e=0;e<8;e++)n+=Ko[Math.floor(Math.random()*Ko.length)];return n}var Ys=["actions.stateDelta","actions.artifactDelta","actions.requestedAuthConfigs","actions.requestedToolConfirmations","actions.customMetadata","content.parts.functionCall.args","content.parts.functionResponse.response"],Js=["actions.state_delta","actions.artifact_delta","actions.requested_auth_configs","actions.requested_tool_confirmations","actions.custom_metadata","content.parts.function_call.args","content.parts.function_response.response"];function _n(n){return zo(n,Js)}function Xo(n){return Ho(n,Ys)}var Q=require("@opentelemetry/api");var Ue="0.6.1";var Qs="gen_ai.agent.description",Zs="gen_ai.agent.name",ea="gen_ai.conversation.id",Ln="gen_ai.operation.name",Yo="gen_ai.tool.call.id",Jo="gen_ai.tool.description",Qo="gen_ai.tool.name",ta="gen_ai.tool.type",Z=Q.trace.getTracer("gcp.vertex.agent",Ue);function nt(n){try{return JSON.stringify(n)}catch{return"<not serializable>"}}function Zo({agent:n,invocationContext:e}){let t=Q.trace.getActiveSpan();t&&t.setAttributes({[Ln]:"invoke_agent",[Qs]:n.description,[Zs]:n.name,[ea]:e.session.id})}function er({tool:n,args:e,functionResponseEvent:t}){var s,a;let o=Q.trace.getActiveSpan();if(!o)return;o.setAttributes({[Ln]:"execute_tool",[Jo]:n.description||"",[Qo]:n.name,[ta]:n.constructor.name,"gcp.vertex.agent.llm_request":"{}","gcp.vertex.agent.llm_response":"{}","gcp.vertex.agent.tool_call_args":ot()?nt(e):"{}"});let r="<not specified>",i="<not specified>";if((s=t.content)!=null&&s.parts){let l=(a=t.content.parts[0])==null?void 0:a.functionResponse;l!=null&&l.id&&(r=l.id),l!=null&&l.response&&(i=l.response)}(typeof i!="object"||i===null)&&(i={result:i}),o.setAttributes({[Yo]:r,"gcp.vertex.agent.event_id":t.id,"gcp.vertex.agent.tool_response":ot()?nt(i):"{}"})}function tr({responseEventId:n,functionResponseEvent:e}){let t=Q.trace.getActiveSpan();t&&(t.setAttributes({[Ln]:"execute_tool",[Qo]:"(merged tools)",[Jo]:"(merged tools)",[Yo]:n,"gcp.vertex.agent.tool_call_args":"N/A","gcp.vertex.agent.event_id":n,"gcp.vertex.agent.llm_request":"{}","gcp.vertex.agent.llm_response":"{}"}),t.setAttribute("gcp.vertex.agent.tool_response",ot()?nt(e):"{}"))}function nr({invocationContext:n,eventId:e,llmRequest:t,llmResponse:o}){var i,s,a;let r=Q.trace.getActiveSpan();if(r&&(r.setAttributes({"gen_ai.system":"gcp.vertex.agent","gen_ai.request.model":t.model,"gcp.vertex.agent.invocation_id":n.invocationId,"gcp.vertex.agent.session_id":n.session.id,"gcp.vertex.agent.event_id":e,"gcp.vertex.agent.llm_request":ot()?nt(na(t)):"{}"}),(i=t.config)!=null&&i.topP&&r.setAttribute("gen_ai.request.top_p",t.config.topP),((s=t.config)==null?void 0:s.maxOutputTokens)!==void 0&&r.setAttribute("gen_ai.request.max_tokens",t.config.maxOutputTokens),r.setAttribute("gcp.vertex.agent.llm_response",ot()?nt(o):"{}"),o.usageMetadata&&r.setAttribute("gen_ai.usage.input_tokens",o.usageMetadata.promptTokenCount||0),(a=o.usageMetadata)!=null&&a.candidatesTokenCount&&r.setAttribute("gen_ai.usage.output_tokens",o.usageMetadata.candidatesTokenCount),o.finishReason)){let c=typeof o.finishReason=="string"?o.finishReason.toLowerCase():String(o.finishReason).toLowerCase();r.setAttribute("gen_ai.response.finish_reasons",[c])}}function na(n){let e={model:n.model,contents:[]};if(n.config){let{responseSchema:t,...o}=n.config;e.config=o}return e.contents=n.contents.map(t=>{var o;return{role:t.role,parts:((o=t.parts)==null?void 0:o.filter(r=>!r.inlineData))||[]}}),e}function or(n,e){return{next:Q.context.bind(n,e.next.bind(e)),return:Q.context.bind(n,e.return.bind(e)),throw:Q.context.bind(n,e.throw.bind(e)),[Symbol.asyncIterator](){return or(n,e[Symbol.asyncIterator]())}}}function Te(n,e,t){let o=t.call(e);return or(n,o)}function ot(){let n=process.env.ADK_CAPTURE_MESSAGE_CONTENT_IN_SPANS||"true";return n==="true"||n==="1"}var rt=class{constructor(e){this.authConfig=e}getAuthResponse(e){let t="temp:"+this.authConfig.credentialKey;return e.get(t)}generateAuthRequest(){var t,o;let e=this.authConfig.authScheme.type;if(!["oauth2","openIdConnect"].includes(e))return this.authConfig;if((o=(t=this.authConfig.exchangedAuthCredential)==null?void 0:t.oauth2)!=null&&o.authUri)return this.authConfig;if(!this.authConfig.rawAuthCredential)throw new Error(`Auth Scheme ${e} requires authCredential.`);if(!this.authConfig.rawAuthCredential.oauth2)throw new Error(`Auth Scheme ${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 ${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 E=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){Object.assign(this.delta,e),Object.assign(this.value,e)}toRecord(){return{...this.value,...this.delta}}};E.APP_PREFIX="app:",E.USER_PREFIX="user:",E.TEMP_PREFIX="temp:";var pe=class{constructor({hint:e,confirmed:t,payload:o}){this.hint=e!=null?e:"",this.confirmed=t,this.payload=o}};var b=class{constructor(e){this.invocationContext=e}get userContent(){return this.invocationContext.userContent}get invocationId(){return this.invocationContext.invocationId}get userId(){return this.invocationContext.userId}get sessionId(){return this.invocationContext.session.id}get agentName(){return this.invocationContext.agent.name}get state(){return new E(this.invocationContext.session.state,{})}};var D=class extends b{constructor(e){super(e.invocationContext),this.eventActions=e.eventActions||F(),this._state=new E(e.invocationContext.session.state,this.eventActions.stateDelta),this.functionCallId=e.functionCallId,this.toolConfirmation=e.toolConfirmation}get state(){return this._state}get actions(){return this.eventActions}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 o=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]=o,o}requestCredential(e){if(!this.functionCallId)throw new Error("functionCallId is not set.");let t=new rt(e);this.eventActions.requestedAuthConfigs[this.functionCallId]=t.generateAuthRequest()}getAuthResponse(e){return new rt(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 pe({hint:e,confirmed:!1,payload:t})}};function X(){return typeof window<"u"}var _t="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function P(){let n="";for(let e=0;e<_t.length;e++){let t=Math.random()*16|0;_t[e]==="x"?n+=t.toString(16):_t[e]==="y"?n+=(t&3|8).toString(16):n+=_t[e]}return n}function rr(n){return X()?window.atob(n):Buffer.from(n,"base64").toString()}function Lt(n){if(!process.env)return!1;let e=(process.env[n]||"").toLowerCase();return["true","1"].includes(e)}var On=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 ${e.maxLlmCalls} exceeded`)}},V=class{constructor(e){this.invocationCostManager=new On;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 ir(){return`e-${P()}`}var Mn=Symbol.for("google.adk.baseAgent");function cr(n){return typeof n=="object"&&n!==null&&Mn in n&&n[Mn]===!0}var ar;ar=Mn;var $=class{constructor(e){this[ar]=!0;this.name=oa(e.name),this.description=e.description,this.parentAgent=e.parentAgent,this.subAgents=e.subAgents||[],this.beforeAgentCallback=sr(e.beforeAgentCallback),this.afterAgentCallback=sr(e.afterAgentCallback),this.setParentAgentForSubAgents()}get rootAgent(){return ia(this)}async*runAsync(e){let t=Z.startSpan(`invoke_agent ${this.name}`),o=$e.trace.setSpan($e.context.active(),t);try{yield*Te(o,this,async function*(){let r=this.createInvocationContext(e),i=await this.handleBeforeAgentCallback(r);if(i&&(yield i),r.endInvocation)return;Zo({agent:this,invocationContext:r});for await(let a of this.runAsyncImpl(r))yield a;if(r.endInvocation)return;let s=await this.handleAfterAgentCallback(r);s&&(yield s)})}finally{t.end()}}async*runLive(e){let t=Z.startSpan(`invoke_agent ${this.name}`),o=$e.trace.setSpan($e.context.active(),t);try{throw yield*Te(o,this,async function*(){}),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 o=t.findAgent(e);if(o)return o}}createInvocationContext(e){return new V({...e,agent:this})}async handleBeforeAgentCallback(e){if(this.beforeAgentCallback.length===0)return;let t=new D({invocationContext:e});for(let o of this.beforeAgentCallback){let r=await o(t);if(r)return e.endInvocation=!0,A({invocationId:e.invocationId,author:this.name,branch:e.branch,content:r,actions:t.eventActions})}if(t.state.hasDelta())return A({invocationId:e.invocationId,author:this.name,branch:e.branch,actions:t.eventActions})}async handleAfterAgentCallback(e){if(this.afterAgentCallback.length===0)return;let t=new D({invocationContext:e});for(let o of this.afterAgentCallback){let r=await o(t);if(r)return A({invocationId:e.invocationId,author:this.name,branch:e.branch,content:r,actions:t.eventActions})}if(t.state.hasDelta())return A({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 "${e.name}" already has a parent agent, current parent: "${e.parentAgent.name}", trying to add: "${this.name}"`);e.parentAgent=this}}};function oa(n){if(!ra(n))throw new Error(`Found invalid agent name: "${n}". 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), underscores, and hyphens.`);if(n==="user")throw new Error("Agent name cannot be 'user'. 'user' is reserved for end-user's input.");return n}function ra(n){return/^[\p{ID_Start}$_][\p{ID_Continue}$_-]*$/u.test(n)}function ia(n){for(;n.parentAgent;)n=n.parentAgent;return n}function sr(n){return n?Array.isArray(n)?n:[n]:[]}var Y=J(require("winston"),1);var Bn=(r=>(r[r.DEBUG=0]="DEBUG",r[r.INFO=1]="INFO",r[r.WARN=2]="WARN",r[r.ERROR=3]="ERROR",r))(Bn||{}),Nn=class{constructor(){this.logLevel=1;this.logger=Y.createLogger({levels:{debug:0,info:1,warn:2,error:3},level:"error",format:Y.format.combine(Y.format.label({label:"ADK"}),Y.format(e=>(e.level=e.level.toUpperCase(),e))(),Y.format.colorize(),Y.format.timestamp(),Y.format.printf(e=>`${e.level}: [${e.label}] ${e.timestamp} ${e.message}`)),transports:[new Y.transports.Console]})}setLogLevel(e){this.logLevel=e}log(e,...t){this.logLevel>e||this.logger.log(e.toString(),t.join(" "))}debug(...e){this.logLevel>0||this.logger.debug(e.join(" "))}info(...e){this.logLevel>1||this.logger.info(e.join(" "))}warn(...e){this.logLevel>2||this.logger.warn(e.join(" "))}error(...e){this.logLevel>3||this.logger.error(e.join(" "))}},Dn=class{setLogLevel(e){}log(e,...t){}debug(...e){}info(...e){}warn(...e){}error(...e){}},me=new Nn;function lr(n){me=n!=null?n:new Dn}function Ot(){return me}function ur(n){g.setLogLevel(n)}var g={setLogLevel(n){me.setLogLevel(n)},log(n,...e){me.log(n,...e)},debug(...n){me.debug(...n)},info(...n){me.info(...n)},warn(...n){me.warn(...n)},error(...n){me.error(...n)}};function ge(n){return(n==null?void 0:n.kind)==="status-update"}function it(n){return(n==null?void 0:n.kind)==="artifact-update"}function Fn(n){return(n==null?void 0:n.kind)==="message"}function ee(n){return(n==null?void 0:n.kind)==="task"}function Mt(n){return it(n)?n.artifact.metadata||{}:ge(n)||ee(n)||Fn(n)?n.metadata||{}:{}}function Nt(n){return(ge(n)||ee(n))&&n.status.state==="failed"}function fr(n){return(ge(n)||ee(n))&&["completed","failed","canceled","rejected"].includes(n.status.state)}function Dt(n){return(ge(n)||ee(n))&&n.status.state==="input-required"}function Un(n){var t;if(!Nt(n))return;let e=((t=n.status.message)==null?void 0:t.parts)||[];if(e.length!==0&&e[0].kind==="text")return e[0].text}function dr({contextId:n,message:e,taskId:t,metadata:o}){return{kind:"task",id:t||P(),contextId:n,history:[e],status:{state:"submitted",timestamp:new Date().toISOString()},metadata:o}}function pr({taskId:n,contextId:e,message:t,metadata:o}){return{kind:"status-update",taskId:n,contextId:e,final:!1,status:{state:"working",message:t,timestamp:new Date().toISOString()},metadata:o}}function mr({taskId:n,contextId:e,metadata:t}){return{kind:"status-update",taskId:n,contextId:e,final:!0,status:{state:"completed",timestamp:new Date().toISOString()},metadata:t}}function gr({taskId:n,contextId:e,artifactId:t,parts:o=[],metadata:r,append:i,lastChunk:s}){return{kind:"artifact-update",taskId:n,contextId:e,append:i,lastChunk:s,artifact:{artifactId:t||P(),parts:o},metadata:r}}function Bt({taskId:n,contextId:e,error:t,metadata:o}){return{kind:"status-update",taskId:n,contextId:e,final:!0,status:{state:"failed",message:{kind:"message",messageId:P(),role:"agent",taskId:n,contextId:e,parts:[{kind:"text",text:t.message}]},timestamp:new Date().toISOString()},metadata:o}}function hr({taskId:n,contextId:e,parts:t,metadata:o}){return{kind:"status-update",taskId:n,contextId:e,final:!0,status:{state:"input-required",message:{kind:"message",messageId:P(),role:"agent",taskId:n,contextId:e,parts:t},timestamp:new Date().toISOString()},metadata:o}}function Cr({taskId:n,contextId:e,parts:t,metadata:o}){return{kind:"status-update",taskId:n,contextId:e,final:!0,status:{state:"input-required",message:{kind:"message",messageId:P(),role:"agent",taskId:n,contextId:e,parts:t},timestamp:new Date().toISOString()},metadata:o}}var Ar=require("@google/genai");var _="adk_",vr="a2a:",v=(I=>(I.APP_NAME=`${_}app_name`,I.USER_ID=`${_}user_id`,I.SESSION_ID=`${_}session_id`,I.INVOCATION_ID=`${_}invocation_id`,I.AUTHOR=`${_}author`,I.BRANCH=`${_}branch`,I.DATA_PART_TYPE=`${_}type`,I.PARTIAL=`${_}partial`,I.ESCALATE=`${_}escalate`,I.TRANSFER_TO_AGENT=`${_}transfer_to_agent`,I.IS_LONG_RUNNING=`${_}is_long_running`,I.THOUGHT=`${_}thought`,I.ERROR_CODE=`${_}error_code`,I.ERROR_MESSAGE=`${_}error_message`,I.CITATION_METADATA=`${_}citation_metadata`,I.GROUNDING_METADATA=`${_}grounding_metadata`,I.USAGE_METADATA=`${_}usage_metadata`,I.CUSTOM_METADATA=`${_}custom_metadata`,I.VIDEO_METADATA=`${_}video_metadata`,I))(v||{}),st=(t=>(t.TASK_ID=`${vr}task_id`,t.CONTEXT_ID=`${vr}context_id`,t))(st||{});function at(n,{appName:e,userId:t,sessionId:o}){return{...ct(n.actions),...he({appName:e,userId:t,sessionId:o}),[v.INVOCATION_ID]:n.invocationId,[v.AUTHOR]:n.author,[v.BRANCH]:n.branch,[v.ERROR_CODE]:n.errorMessage,[v.ERROR_MESSAGE]:n.errorMessage,[v.CITATION_METADATA]:n.citationMetadata,[v.GROUNDING_METADATA]:n.groundingMetadata,[v.USAGE_METADATA]:n.usageMetadata,[v.CUSTOM_METADATA]:n.customMetadata,[v.PARTIAL]:n.partial,[v.IS_LONG_RUNNING]:(n.longRunningToolIds||[]).length>0}}function he({appName:n,userId:e,sessionId:t}){return{[v.APP_NAME]:n,[v.USER_ID]:e,[v.SESSION_ID]:t}}function ct(n){return{[v.ESCALATE]:n.escalate,[v.TRANSFER_TO_AGENT]:n.transferToAgent}}var Ft=class{constructor(e){this.request=e;this.aggregations=new Map;this.aggregationOrder=[]}aggregatePartial(e,t,o){if(Mt(t)[v.PARTIAL])return[o];if(ge(t)&&t.final){let a=[];for(let c of this.aggregationOrder){let l=this.aggregations.get(c);l&&a.push(this.buildNonPartialAggregation(e,l))}return this.aggregations.clear(),this.aggregationOrder=[],[...a,o]}if(ee(t))return this.aggregations.clear(),this.aggregationOrder=[],[o];if(!it(t))return[o];let i=t.artifact.artifactId;if(!t.append&&(this.removeAggregation(i),t.lastChunk))return o.partial=!1,[o];let s=this.aggregations.get(i);return s?(this.aggregationOrder=this.aggregationOrder.filter(a=>a!==i),this.aggregationOrder.push(i)):(s={aggregatedText:"",aggregatedThoughts:"",parts:[]},this.aggregations.set(i,s),this.aggregationOrder.push(i)),this.updateAggregation(s,o),t.lastChunk?(this.removeAggregation(i),[o,this.buildNonPartialAggregation(e,s)]):[o]}removeAggregation(e){this.aggregations.delete(e),this.aggregationOrder=this.aggregationOrder.filter(t=>t!==e)}updateAggregation(e,t){var r;let o=((r=t.content)==null?void 0:r.parts)||[];for(let i of o)i.text&&i.text!==""?i.thought?e.aggregatedThoughts+=i.text:e.aggregatedText+=i.text:(this.promoteTextBlocksToParts(e),e.parts.push(i));t.citationMetadata&&(e.citations||(e.citations={citations:[]}),e.citations.citations||(e.citations.citations=[]),e.citations.citations.push(...t.citationMetadata.citations||[])),t.customMetadata&&(e.customMeta||(e.customMeta={}),Object.assign(e.customMeta,t.customMetadata)),t.groundingMetadata&&(e.grounding=t.groundingMetadata),t.usageMetadata&&(e.usage=t.usageMetadata)}buildNonPartialAggregation(e,t){return this.promoteTextBlocksToParts(t),A({author:e.agent.name,invocationId:e.invocationId,content:t.parts.length>0?(0,Ar.createModelContent)([...t.parts]):void 0,customMetadata:t.customMeta,groundingMetadata:t.grounding,citationMetadata:t.citations,usageMetadata:t.usage,turnComplete:!1,partial:!1})}promoteTextBlocksToParts(e){e.aggregatedThoughts!==""&&(e.parts.push({thought:!0,text:e.aggregatedThoughts}),e.aggregatedThoughts=""),e.aggregatedText!==""&&(e.parts.push({text:e.aggregatedText}),e.aggregatedText="")}updateCustomMetadata(e,t){let o={};if(this.request&&e.turnComplete&&(o.request=this.request),t&&(o.response=t,ee(t)?(t.id&&(o.task_id=t.id),t.contextId&&(o.context_id=t.contextId)):t.taskId&&(o.task_id=t.taskId,t.contextId&&(o.context_id=t.contextId))),Object.keys(o).length!==0){e.customMetadata||(e.customMetadata={});for(let[r,i]of Object.entries(o))i!=null&&(e.customMetadata[`a2a:${r}`]=i)}}};var Ut=require("@google/genai");function ae(n=[],e=[]){return n.map(t=>sa(t,e))}function sa(n,e){return n.text!==void 0&&n.text!==null?aa(n):n.inlineData||n.fileData?ca(n):la(n,e)}function aa(n){let e={kind:"text",text:n.text||""};return n.thought&&(e.metadata={[v.THOUGHT]:!0}),e}function ca(n){let e={};if(n.videoMetadata&&(e[v.VIDEO_METADATA]=n.videoMetadata),n.fileData)return{kind:"file",file:{uri:n.fileData.fileUri||"",mimeType:n.fileData.mimeType},metadata:e};if(n.inlineData)return{kind:"file",file:{bytes:n.inlineData.data||"",mimeType:n.inlineData.mimeType},metadata:e};throw new Error(`Not a file part: ${JSON.stringify(n)}`)}function la(n,e=[]){let t,o;if(n.functionCall)t="function_call",o=n.functionCall;else if(n.functionResponse)t="function_response",o=n.functionResponse;else if(n.executableCode)t="executable_code",o=n.executableCode;else if(n.codeExecutionResult)t="code_execution_result",o=n.codeExecutionResult;else return{kind:"data",data:{},metadata:{}};let r={[v.DATA_PART_TYPE]:t};return n.functionCall&&n.functionCall.id&&e.includes(n.functionCall.id)&&(r[v.IS_LONG_RUNNING]=!0),n.functionResponse&&n.functionResponse.id&&e.includes(n.functionResponse.id)&&(r[v.IS_LONG_RUNNING]=!0),{kind:"data",data:o,metadata:r}}function Er(n){let e=te(n.parts);return n.role==="user"?(0,Ut.createUserContent)(e):(0,Ut.createModelContent)(e)}function te(n){return n.map(e=>$n(e))}function $n(n){if(n.kind==="text")return ua(n);if(n.kind==="file")return fa(n);if(n.kind==="data")return da(n);throw new Error(`Unknown part kind: ${JSON.stringify(n)}`)}function ua(n){var e;return{text:n.text,thought:!!((e=n.metadata)!=null&&e[v.THOUGHT])}}function fa(n){var t;let e={};if((t=n.metadata)!=null&&t[v.VIDEO_METADATA]&&(e.videoMetadata=n.metadata[v.VIDEO_METADATA]),"bytes"in n.file)return e.inlineData={data:n.file.bytes,mimeType:n.file.mimeType||""},e;if("uri"in n.file)return e.fileData={fileUri:n.file.uri,mimeType:n.file.mimeType||""},e;throw new Error(`Not a file part: ${JSON.stringify(n)}`)}function da(n){var o;if(!n.data)throw new Error(`No data in part: ${JSON.stringify(n)}`);let e=n.data,t=(o=n.metadata)==null?void 0:o[v.DATA_PART_TYPE];return t==="function_call"?{functionCall:e}:t==="function_response"?{functionResponse:e}:t==="executable_code"?{executableCode:e}:t==="code_execution_result"?{codeExecutionResult:e}:{text:JSON.stringify(n.data)}}function xr(n,e){let t=n.events;if(e<0||e>=t.length)return;let o=t[e];if(o.author!=="user")return;let r=ma(o);if(r)for(let i=e-1;i>=0;i--){let s=t[i];if(!pa(s,r))continue;let a=s.customMetadata||{},c=a[st.TASK_ID]||"",l=a[st.CONTEXT_ID]||"";return{response:o,taskId:c,contextId:l}}}function pa(n,e){return!n||!n.content||!n.content.parts?!1:n.content.parts.some(t=>t.functionCall&&t.functionCall.id===e)}function ma(n){var t;if(!n||!n.content||!n.content.parts)return;let e=n.content.parts.find(o=>o.functionResponse);return(t=e==null?void 0:e.functionResponse)==null?void 0:t.id}function yr(n,e){let t=e.events,o,r=-1;for(let s=t.length-1;s>=0;s--){let a=t[s];if(a.author===n.agent.name){r=s,o=(a.customMetadata||{})[st.CONTEXT_ID];break}}let i=[];for(let s=r+1;s<t.length;s++){let a=t[s];if(a.author!=="user"&&a.author!==n.agent.name&&(a=ga(n,a)),!a.content||!a.content.parts||a.content.parts.length===0)continue;let c=ae(a.content.parts,a.longRunningToolIds);i.push(...c)}return{parts:i,contextId:o}}function ga(n,e){let t=A({author:"user",invocationId:n.invocationId});if(!e.content||!e.content.parts)return t;let o=[{text:"For context:"}];for(let r of e.content.parts)if(!r.thought)if(r.text)o.push({text:`[${e.author}] said: ${r.text}`});else if(r.functionCall){let i=r.functionCall;o.push({text:`[${e.author}] called tool ${i.name} with parameters: ${JSON.stringify(i.args)}`})}else if(r.functionResponse){let i=r.functionResponse;o.push({text:`[${e.author}] ${i.name} tool returned result: ${JSON.stringify(i.response)}`})}else o.push(r);return o.length>1&&(t.content={role:"user",parts:o}),t}var _i=require("@a2a-js/sdk/client"),Li=J(require("fs/promises"),1);var Kt=require("@opentelemetry/api");var ha="google-adk",Ca="gl-typescript",va="remote_reasoning_engine",Aa="GOOGLE_CLOUD_AGENT_ENGINE_ID";function Ea(){let n=`${ha}/${Ue}`;!X()&&process.env[Aa]&&(n=`${n}+${va}`);let e=`${Ca}/${X()?window.navigator.userAgent:process.version}`;return[n,e]}function Tr(){return Ea()}var Gn=Symbol.for("google.adk.baseModel");function $t(n){return typeof n=="object"&&n!==null&&Gn in n&&n[Gn]===!0}var Sr;Sr=Gn;var Se=class{constructor({model:e}){this[Sr]=!0;this.model=e}get trackingHeaders(){let t=Tr().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=[];var ce=require("@google/genai");var lt=(t=>(t.VERTEX_AI="VERTEX_AI",t.GEMINI_API="GEMINI_API",t))(lt||{});function Rr(){return Lt("GOOGLE_GENAI_USE_VERTEXAI")?"VERTEX_AI":"GEMINI_API"}var Gt=class{constructor(e){this.geminiSession=e}async sendHistory(e){let t=e.filter(o=>{var r;return o.parts&&((r=o.parts[0])==null?void 0:r.text)});t.length>0?this.geminiSession.sendClientContent({turns:t,turnComplete:t[t.length-1].role==="user"}):g.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(o=>o.functionResponse).filter(o=>!!o);g.debug("Sending LLM function response:",t),this.geminiSession.sendToolResponse({functionResponses:t})}else g.debug("Sending LLM new content",e),this.geminiSession.sendClientContent({turns:[e],turnComplete:!0})}async sendRealtime(e){g.debug("Sending LLM Blob:",e),this.geminiSession.sendRealtimeInput({media:e})}buildFullTextResponse(e){return{content:{role:"model",parts:[{text:e}]}}}async*receive(){throw new Error("Not Implemented.")}async close(){this.geminiSession.close()}};function qn(n){var t;let e=n.usageMetadata;if(n.candidates&&n.candidates.length>0){let o=n.candidates[0];return(t=o.content)!=null&&t.parts&&o.content.parts.length>0?{content:o.content,groundingMetadata:o.groundingMetadata,citationMetadata:o.citationMetadata,usageMetadata:e,finishReason:o.finishReason}:{errorCode:o.finishReason,errorMessage:o.finishMessage,usageMetadata:e,citationMetadata:o.citationMetadata,finishReason:o.finishReason}}return n.promptFeedback?{errorCode:n.promptFeedback.blockReason,errorMessage:n.promptFeedback.blockReasonMessage,usageMetadata:e}:{errorCode:"UNKNOWN_ERROR",errorMessage:"Unknown error.",usageMetadata:e}}var le=class extends Se{constructor({model:e,apiKey:t,vertexai:o,project:r,location:i,headers:s}){e||(e="gemini-2.5-flash"),super({model:e});let a=ut({model:e,vertexai:o,project:r,location:i,apiKey:t});if(!a.vertexai&&!a.apiKey)throw new Error("API key must be provided via constructor or GOOGLE_GENAI_API_KEY or GEMINI_API_KEY environment variable.");this.project=a.project,this.location=a.location,this.apiKey=a.apiKey,this.headers=s,this.vertexai=!!a.vertexai}async*generateContentAsync(e,t=!1){var o,r,i,s,a,c,l;if(this.preprocessRequest(e),this.maybeAppendUserContent(e),g.info(`Sending out request, model: ${e.model}, backend: ${this.apiBackend}, stream: ${t}`),(o=e.config)!=null&&o.httpOptions&&(e.config.httpOptions.headers={...e.config.httpOptions.headers,...this.trackingHeaders}),t){let u=await this.apiClient.models.generateContentStream({model:(r=e.model)!=null?r:this.model,contents:e.contents,config:e.config}),f="",d="",p,m;for await(let h of u){m=h;let C=qn(h);p=C.usageMetadata;let S=(s=(i=C.content)==null?void 0:i.parts)==null?void 0:s[0];if(S!=null&&S.text)"thought"in S&&S.thought?f+=S.text:d+=S.text,C.partial=!0;else if((f||d)&&(!S||!S.inlineData)){let G=[];f&&G.push({text:f,thought:!0}),d&&G.push((0,ce.createPartFromText)(d)),yield{content:{role:"model",parts:G},usageMetadata:C.usageMetadata},f="",d=""}yield C}if((d||f)&&((c=(a=m==null?void 0:m.candidates)==null?void 0:a[0])==null?void 0:c.finishReason)===ce.FinishReason.STOP){let h=[];f&&h.push({text:f,thought:!0}),d&&h.push({text:d}),yield{content:{role:"model",parts:h},usageMetadata:p}}}else{let u=await this.apiClient.models.generateContent({model:(l=e.model)!=null?l:this.model,contents:e.contents,config:e.config});yield qn(u)}}getHttpOptions(){return{headers:{...this.trackingHeaders,...this.headers}}}get apiClient(){return this._apiClient?this._apiClient:(this.vertexai?this._apiClient=new ce.GoogleGenAI({vertexai:this.vertexai,project:this.project,location:this.location,httpOptions:this.getHttpOptions()}):this._apiClient=new ce.GoogleGenAI({apiKey:this.apiKey,httpOptions:this.getHttpOptions()}),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}getLiveHttpOptions(){return{headers:this.trackingHeaders,apiVersion:this.liveApiVersion}}get liveApiClient(){return this._liveApiClient||(this._liveApiClient=new ce.GoogleGenAI({apiKey:this.apiKey,httpOptions:this.getLiveHttpOptions()})),this._liveApiClient}async connect(e){var o,r,i,s;(o=e.liveConnectConfig)!=null&&o.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:[(0,ce.createPartFromText)(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 Gt(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 o of t.parts)Ir(o.inlineData),Ir(o.fileData)}}};le.supportedModels=[/gemini-.*/,/projects\/.+\/locations\/.+\/endpoints\/.+/,/projects\/.+\/locations\/.+\/publishers\/google\/models\/gemini.+/];function Ir(n){n&&n.displayName&&(n.displayName=void 0)}function ut({model:n,vertexai:e,project:t,location:o,apiKey:r}){let i={model:n,vertexai:e,project:t,location:o,apiKey:r};if(i.vertexai=!!e,!i.vertexai&&!X()&&(i.vertexai=Lt("GOOGLE_GENAI_USE_VERTEXAI")),i.vertexai){if(!X()&&!i.project&&(i.project=process.env.GOOGLE_CLOUD_PROJECT),!X()&&!i.location&&(i.location=process.env.GOOGLE_CLOUD_LOCATION),!i.project)throw new Error("VertexAI project must be provided via constructor or GOOGLE_CLOUD_PROJECT environment variable.");if(!i.location)throw new Error("VertexAI location must be provided via constructor or GOOGLE_CLOUD_LOCATION environment variable.")}else!i.apiKey&&!X()&&(i.apiKey=process.env.GOOGLE_GENAI_API_KEY||process.env.GEMINI_API_KEY);return i}var wr="APIGEE_PROXY_URL",Re=class extends le{constructor({model:e,proxyUrl:t,apiKey:o,vertexai:r,location:i,project:s,headers:a}){var c;if(!kr(e))throw new Error(`Model ${e} is not a valid Apigee model, expected apigee/[<provider>/][<version>/]<model_id>`);if(super({...xa({model:e,vertexai:r,project:s,location:i,apiKey:o}),headers:a}),this.proxyUrl=t!=null?t:"",!X()&&!this.proxyUrl&&(this.proxyUrl=(c=process.env[wr])!=null?c:""),!this.proxyUrl)throw new Error(`Proxy URL must be provided via the constructor or ${wr} environment variable.`)}getHttpOptions(){let e=super.getHttpOptions();return e.baseUrl=this.proxyUrl,e}getLiveHttpOptions(){let e=super.getLiveHttpOptions();return e.baseUrl=this.proxyUrl,e}identifyApiVersion(){let t=(this.model.startsWith("apigee/")?this.model.substring(7):this.model).split("/");return t.length===3?t[1]:t.length===2&&t[0]!="vertex_ai"&&t[0]!="gemini"&&t[0].startsWith("v")?t[0]:this.vertexai?"v1beta1":"v1alpha"}get liveApiVersion(){return this._apigeeLiveApiVersion||(this._apigeeLiveApiVersion=this.identifyApiVersion()),this._apigeeLiveApiVersion}async*generateContentAsync(e,t=!1){var r;let o=(r=e.model)!=null?r:this.model;e.model=br(o),yield*super.generateContentAsync(e,t)}async connect(e){var o;let t=(o=e.model)!=null?o:this.model;return e.model=br(t),super.connect(e)}};Re.supportedModels=[/apigee\/.*/];function xa({model:n,vertexai:e,project:t,location:o,apiKey:r}){var s;let i=ut({model:n,vertexai:e,project:t,location:o,apiKey:r});return i.vertexai=i.vertexai||((s=i.model)==null?void 0:s.startsWith("apigee/vertex_ai/")),i.vertexai||i.apiKey||(g.warn('No API key provided when using a Gemini model, using a fake key "-".'),i.apiKey="-"),i}function br(n){if(!kr(n))throw new Error(`Model ${n} is not a valid Apigee model, expected apigee/[<provider>/][<version>/]<model_id>`);let e=n.split("/");return e[e.length-1]}function kr(n){let e=["vertex_ai","gemini"];if(!n.startsWith("apigee/"))return!1;let t=n.substring(7);if(t.length===0)return!1;let o=t.split("/",-1);return o[o.length-1].length===0?!1:o.length==1?!0:o.length==2?e.includes(o[0])?!0:o[0].startsWith("v"):o.length==3&&e.includes(o[0])?o[1].startsWith("v"):!1}var Vn=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 o=this.cache.keys().next().value;o!==void 0&&this.cache.delete(o)}this.cache.set(e,t)}},H=class H{static newLlm(e){return new(H.resolve(e))({model:e})}static _register(e,t){H.llmRegistryDict.has(e)&&g.info(`Updating LLM class for ${e} from ${H.llmRegistryDict.get(e)} to ${t}`),H.llmRegistryDict.set(e,t)}static register(e){for(let t of e.supportedModels)H._register(t,e)}static resolve(e){let t=H.resolveCache.get(e);if(t)return t;for(let[o,r]of H.llmRegistryDict.entries())if(new RegExp(`^${o instanceof RegExp?o.source:o}$`,o instanceof RegExp?o.flags:void 0).test(e))return H.resolveCache.set(e,r),r;throw new Error(`Model ${e} not found.`)}};H.llmRegistryDict=new Map,H.resolveCache=new Vn(32);var Ce=H;Ce.register(le);Ce.register(Re);var jn=Symbol.for("google.adk.baseTool");function Ge(n){return typeof n=="object"&&n!==null&&jn in n&&n[jn]===!0}var Pr;Pr=jn;var k=class{constructor(e){this[Pr]=!0;var t;this.name=e.name,this.description=e.description,this.isLongRunning=(t=e.isLongRunning)!=null?t:!1}_getDeclaration(){}async processLlmRequest({llmRequest:e}){let t=this._getDeclaration();if(!t)return;if(this.name in e.toolsDict)throw new Error(`Duplicate tool name: ${this.name}`);e.toolsDict[this.name]=this;let o=ya(e);o?(o.functionDeclarations||(o.functionDeclarations=[]),o.functionDeclarations.push(t)):(e.config=e.config||{},e.config.tools=e.config.tools||[],e.config.tools.push({functionDeclarations:[t]}))}get apiVariant(){return Rr()}};function ya(n){var e;return(((e=n.config)==null?void 0:e.tools)||[]).find(t=>"functionDeclarations"in t)}var zn=require("@google/genai"),_r=require("zod-to-json-schema"),Lr=require("zod/v4");function Hn(n){return n!==null&&typeof n=="object"&&"parse"in n&&typeof n.parse=="function"&&"safeParse"in n&&typeof n.safeParse=="function"}function Ta(n){return Hn(n)&&!("_zod"in n)}function Sa(n){return Hn(n)&&"_zod"in n}function Ra(n){var o,r;let e=n;if((o=e._def)!=null&&o.typeName)return e._def.typeName;let t=(r=e._def)==null?void 0:r.type;if(typeof t=="string"&&t)return"Zod"+t.charAt(0).toUpperCase()+t.slice(1)}function Ie(n){return Hn(n)&&Ra(n)==="ZodObject"}function we(n){if(!Ie(n))throw new Error("Expected a Zod Object");if(Sa(n))return(0,Lr.toJSONSchema)(n,{target:"openapi-3.0",io:"input",override:e=>{var o;let{jsonSchema:t}=e;t.additionalProperties!==void 0&&delete t.additionalProperties,t.readOnly!==void 0&&delete t.readOnly,t.maxItems!==void 0&&(t.maxItems=t.maxItems.toString()),(t.format==="email"||t.format==="uuid")&&delete t.pattern,t.minItems!==void 0&&(t.minItems=t.minItems.toString()),t.minLength!==void 0&&(t.minLength=t.minLength.toString()),t.maxLength!==void 0&&(t.maxLength=t.maxLength.toString()),((o=t.enum)==null?void 0:o.length)===1&&t.enum[0]===null&&(t.type=zn.Type.NULL,delete t.enum),t.type!==void 0&&(t.type=t.type.toUpperCase())}});if(Ta(n))return(0,_r.zodToJsonSchema)(n,{target:"openApi3",emailStrategy:"format:email",postProcess:e=>{var t,o,r,i,s,a,c;if(e)return e.additionalProperties!==void 0&&delete e.additionalProperties,e.maxItems!==void 0&&(e.maxItems=(t=e.maxItems)==null?void 0:t.toString()),e.minItems!==void 0&&(e.minItems=(o=e.minItems)==null?void 0:o.toString()),e.minLength!==void 0&&(e.minLength=(r=e.minLength)==null?void 0:r.toString()),e.maxLength!==void 0&&(e.maxLength=(i=e.maxLength)==null?void 0:i.toString()),((s=e.enum)==null?void 0:s.length)===1&&e.enum[0]==="null"&&(e.type=zn.Type.NULL,delete e.enum),e.type==="integer"&&e.format!=="int64"&&((a=e.minimum)!=null||(e.minimum=Number.MIN_SAFE_INTEGER),(c=e.maximum)!=null||(e.maximum=Number.MAX_SAFE_INTEGER)),e.type!==void 0&&(e.type=e.type.toUpperCase()),e}});throw new Error("Unsupported Zod schema version.")}var Or=require("@google/genai"),Kn=require("lodash-es");var Wn="adk-",qt="adk_request_credential",qe="adk_request_confirmation",Mr={handleFunctionCallList:Vt,generateAuthEvent:Yn,generateRequestConfirmationEvent:Jn};function Xn(){return`${Wn}${P()}`}function Nr(n){let e=w(n);if(e)for(let t of e)t.id||(t.id=Xn())}function Dr(n){if(n&&n.parts)for(let e of n.parts)e.functionCall&&e.functionCall.id&&e.functionCall.id.startsWith(Wn)&&(e.functionCall.id=void 0),e.functionResponse&&e.functionResponse.id&&e.functionResponse.id.startsWith(Wn)&&(e.functionResponse.id=void 0)}function Br(n,e){let t=new Set;for(let o of n)o.name&&o.name in e&&e[o.name].isLongRunning&&o.id&&t.add(o.id);return t}function Yn(n,e){var r;if(!((r=e.actions)!=null&&r.requestedAuthConfigs)||(0,Kn.isEmpty)(e.actions.requestedAuthConfigs))return;let t=[],o=new Set;for(let[i,s]of Object.entries(e.actions.requestedAuthConfigs)){let a={name:qt,args:{function_call_id:i,auth_config:s},id:Xn()};o.add(a.id),t.push({functionCall:a})}return A({invocationId:n.invocationId,author:n.agent.name,branch:n.branch,content:{parts:t,role:e.content.role},longRunningToolIds:Array.from(o)})}function Jn({invocationContext:n,functionCallEvent:e,functionResponseEvent:t}){var s,a;if(!((s=t.actions)!=null&&s.requestedToolConfirmations)||(0,Kn.isEmpty)(t.actions.requestedToolConfirmations))return;let o=[],r=new Set,i=w(e);for(let[c,l]of Object.entries(t.actions.requestedToolConfirmations)){let u=(a=i.find(d=>d.id===c))!=null?a:void 0;if(!u)continue;let f={name:qe,args:{originalFunctionCall:u,toolConfirmation:l},id:Xn()};r.add(f.id),o.push({functionCall:f})}return A({invocationId:n.invocationId,author:n.agent.name,branch:n.branch,content:{parts:o,role:t.content.role},actions:t.actions,longRunningToolIds:Array.from(r)})}async function Ia(n,e,t){return Z.startActiveSpan(`execute_tool ${n.name}`,async o=>{try{g.debug(`callToolAsync ${n.name}`);let r=await n.runAsync({args:e,toolContext:t});return er({tool:n,args:e,functionResponseEvent:wa(n,r,t,t.invocationContext)}),r}finally{o.end()}})}function wa(n,e,t,o){let r;typeof e!="object"||e==null?r={result:e}:r=e;let s={role:"user",parts:[{functionResponse:{name:n.name,response:r,id:t.functionCallId}}]};return A({invocationId:o.invocationId,author:o.agent.name,content:s,actions:t.actions,branch:o.branch})}async function Fr({invocationContext:n,functionCallEvent:e,toolsDict:t,beforeToolCallbacks:o,afterToolCallbacks:r,filters:i,toolConfirmationDict:s}){let a=w(e);return await Vt({invocationContext:n,functionCalls:a,toolsDict:t,beforeToolCallbacks:o,afterToolCallbacks:r,filters:i,toolConfirmationDict:s})}async function Vt({invocationContext:n,functionCalls:e,toolsDict:t,beforeToolCallbacks:o,afterToolCallbacks:r,filters:i,toolConfirmationDict:s}){var u;let a=[],c=e.filter(f=>!i||f.id&&i.has(f.id));for(let f of c){let d;s&&f.id&&(d=s[f.id]);let{tool:p,toolContext:m}=ba({invocationContext:n,functionCall:f,toolsDict:t,toolConfirmation:d});g.debug(`execute_tool ${p.name}`);let h=(u=f.args)!=null?u:{},C=null,S;if(C=await n.pluginManager.runBeforeToolCallback({tool:p,toolArgs:h,toolContext:m}),C==null){for(let de of o)if(C=await de({tool:p,args:h,context:m}),C)break}if(C==null)try{C=await Ia(p,h,m)}catch(de){if(de instanceof Error){let qo=await n.pluginManager.runOnToolErrorCallback({tool:p,toolArgs:h,toolContext:m,error:de});qo?C=qo:S=de.message}else S=de}let G=await n.pluginManager.runAfterToolCallback({tool:p,toolArgs:h,toolContext:m,result:C});if(G==null){for(let de of r)if(G=await de({tool:p,args:h,context:m,response:C}),G)break}if(G!=null&&(C=G),p.isLongRunning&&!C)continue;S?C={error:S}:(typeof C!="object"||C==null)&&(C={result:C});let I=A({invocationId:n.invocationId,author:n.agent.name,content:(0,Or.createUserContent)({functionResponse:{id:m.functionCallId,name:p.name,response:C}}),actions:m.actions,branch:n.branch});g.debug("traceToolCall",{tool:p.name,args:h,functionResponseEvent:I.id}),a.push(I)}if(!a.length)return null;let l=ka(a);return a.length>1&&Z.startActiveSpan("execute_tool (merged)",f=>{try{g.debug("execute_tool (merged)"),g.debug("traceMergedToolCalls",{responseEventId:l.id,functionResponseEvent:l.id}),tr({responseEventId:l.id,functionResponseEvent:l})}finally{f.end()}}),l}function ba({invocationContext:n,functionCall:e,toolsDict:t,toolConfirmation:o}){if(!e.name||!(e.name in t))throw new Error(`Function ${e.name} is not found in the toolsDict.`);let r=new D({invocationContext:n,functionCallId:e.id||void 0,toolConfirmation:o});return{tool:t[e.name],toolContext:r}}function ka(n){if(!n.length)throw new Error("No function response events provided.");if(n.length===1)return n[0];let e=[];for(let i of n)i.content&&i.content.parts&&e.push(...i.content.parts);let t=n[0],o=n.map(i=>i.actions||{}),r=Wo(o);return A({author:t.author,branch:t.branch,content:{role:"user",parts:e},actions:r,timestamp:t.timestamp})}var Zn=require("zod");function j(n,e){n.config||(n.config={});let t=e.join(`
|
|
8
8
|
|
|
9
9
|
`);n.config.systemInstruction?n.config.systemInstruction+=`
|
|
10
10
|
|
|
11
|
-
`+t:n.config.systemInstruction=t}function
|
|
11
|
+
`+t:n.config.systemInstruction=t}function Ur(n,e){n.config||(n.config={}),n.config.responseSchema=e,n.config.responseMimeType="application/json"}var qr=require("@google/genai");function Pa(n){return n===void 0?{type:qr.Type.OBJECT,properties:{}}:Ie(n)?we(n):n}var Qn=Symbol.for("google.adk.functionTool");function Vr(n){return typeof n=="object"&&n!==null&&Qn in n&&n[Qn]===!0}var $r,Gr,ne=class extends(Gr=k,$r=Qn,Gr){constructor(t){var r;let o=(r=t.name)!=null?r:t.execute.name;if(!o)throw new Error("Tool name cannot be empty. Either name the `execute` function or provide a `name`.");super({name:o,description:t.description,isLongRunning:t.isLongRunning});this[$r]=!0;this.execute=t.execute,this.parameters=t.parameters}_getDeclaration(){return{name:this.name,description:this.description,parameters:Pa(this.parameters)}}async runAsync(t){try{let o=t.args;return Ie(this.parameters)&&(o=this.parameters.parse(t.args)),await this.execute(o,t.toolContext)}catch(o){let r=o instanceof Error?o.message:String(o);throw new Error(`Error in tool '${this.name}': ${r}`)}}};var B=class{},jt=class{};var eo=class extends B{constructor(){super(...arguments);this.toolName="transfer_to_agent";this.tool=new ne({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:Zn.z.object({agentName:Zn.z.string().describe("the agent name to transfer to.")}),execute:function(t,o){if(!o)throw new Error("toolContext is required.");return o.actions.transferToAgent=t.agentName,"Transfer queued"}})}async*runAsync(t,o){if(!x(t.agent))return;let r=this.getTransferTargets(t.agent);if(!r.length)return;j(o,[this.buildTargetAgentsInstructions(t.agent,r)]);let i=new D({invocationContext:t});await this.tool.processLlmRequest({toolContext:i,llmRequest:o})}buildTargetAgentsInfo(t){return`
|
|
12
12
|
Agent name: ${t.name}
|
|
13
13
|
Agent description: ${t.description}
|
|
14
14
|
`}buildTargetAgentsInstructions(t,o){let r=`
|
|
@@ -28,13 +28,13 @@ the function call.
|
|
|
28
28
|
Your parent agent is ${t.parentAgent.name}. If neither the other agents nor
|
|
29
29
|
you are best for answering the question according to the descriptions, transfer
|
|
30
30
|
to your parent agent.
|
|
31
|
-
`),r}getTransferTargets(t){let o=[];return o.push(...t.subAgents),!t.parentAgent||!x(t.parentAgent)||(t.disallowTransferToParent||o.push(t.parentAgent),t.disallowTransferToPeers||o.push(...t.parentAgent.subAgents.filter(r=>r.name!==t.name))),o}},
|
|
32
|
-
`),i=e.map(f=>f[0]).join("|"),s=e.map(f=>f[1]).join("|"),a=new RegExp(`?<prefix>.*?)(${i})(?<codeStr>.*?)(${s})(?<suffix>.*?)$`,"s").exec(r),{prefix:c,codeStr:l}=(a==null?void 0:a.groups)||{};return l?(n.parts=[],c&&(o.text=c,n.parts.push(o)),n.parts.push(
|
|
31
|
+
`),r}getTransferTargets(t){let o=[];return o.push(...t.subAgents),!t.parentAgent||!x(t.parentAgent)||(t.disallowTransferToParent||o.push(t.parentAgent),t.disallowTransferToPeers||o.push(...t.parentAgent.subAgents.filter(r=>r.name!==t.name))),o}},jr=new eo;var to=class extends B{async*runAsync(e,t){var r;let o=e.agent;x(o)&&(t.model=o.canonicalModel.model,t.config={...(r=o.generateContentConfig)!=null?r:{}},o.outputSchema&&Ur(t,o.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))}},zr=new to;var lo=require("lodash-es");var no=Symbol.for("google.adk.baseCodeExecutor");function zt(n){return typeof n=="object"&&n!==null&&no in n&&n[no]===!0}var Hr;Hr=no;var Ve=class{constructor(){this[Hr]=!0;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 _a="^projects/[^/]+/locations/[^/]+/publishers/[^/]+/models/(.+)$";function oo(n){let e=n.match(_a);return e?e[1]:n}function Wr(n){return oo(n).startsWith("gemini-")}function La(n){if(!/^\d+(\.\d+)*$/.test(n))return{valid:!1,major:0,minor:0,patch:0};let e=n.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 Kr(n){return oo(n).startsWith("gemini-1")}function je(n){if(!n)return!1;let e=oo(n);if(!e.startsWith("gemini-"))return!1;let t=e.slice(7).split("-",1)[0],o=La(t);return o.valid&&o.major>=2}var ro=Symbol.for("google.adk.builtInCodeExecutor");function ft(n){return typeof n=="object"&&n!==null&&ro in n&&n[ro]===!0}var Xr,Yr,ze=class extends(Yr=Ve,Xr=ro,Yr){constructor(){super(...arguments);this[Xr]=!0}executeCode(t){return Promise.resolve({stdout:"",stderr:"",outputFiles:[]})}processLlmRequest(t){if(t.model&&je(t.model)){t.config=t.config||{},t.config.tools=t.config.tools||[],t.config.tools.push({codeExecution:{}});return}throw new Error(`Gemini code execution tool is not supported for model ${t.model}`)}};var dt=require("@google/genai"),Jr=require("lodash-es");function Qr(n,e){var u;if(!((u=n.parts)!=null&&u.length))return"";for(let f=0;f<n.parts.length;f++){let d=n.parts[f];if(d.executableCode&&(f===n.parts.length-1||!n.parts[f+1].codeExecutionResult))return n.parts=n.parts.slice(0,f+1),d.executableCode.code}let t=n.parts.filter(f=>f.text);if(!t.length)return"";let o=(0,Jr.cloneDeep)(t[0]),r=t.map(f=>f.text).join(`
|
|
32
|
+
`),i=e.map(f=>f[0]).join("|"),s=e.map(f=>f[1]).join("|"),a=new RegExp(`?<prefix>.*?)(${i})(?<codeStr>.*?)(${s})(?<suffix>.*?)$`,"s").exec(r),{prefix:c,codeStr:l}=(a==null?void 0:a.groups)||{};return l?(n.parts=[],c&&(o.text=c,n.parts.push(o)),n.parts.push(io(l)),l):""}function io(n){return{text:n,executableCode:{code:n,language:dt.Language.PYTHON}}}function Zr(n){if(n.stderr)return{text:n.stderr,codeExecutionResult:{outcome:dt.Outcome.OUTCOME_FAILED}};let e=[];return(n.stdout||!n.outputFiles)&&e.push(`Code execution result:
|
|
33
33
|
${n.stdout}
|
|
34
34
|
`),n.outputFiles&&e.push(`Saved artifacts:
|
|
35
35
|
`+n.outputFiles.map(t=>t.name).join(", ")),{text:e.join(`
|
|
36
36
|
|
|
37
|
-
`),codeExecutionResult:{outcome:
|
|
37
|
+
`),codeExecutionResult:{outcome:dt.Outcome.OUTCOME_OK}}}function ei(n,e,t){var r;if(!((r=n.parts)!=null&&r.length))return;let o=n.parts[n.parts.length-1];o.executableCode?n.parts[n.parts.length-1]={text:e[0]+o.executableCode.code+e[1]}:n.parts.length==1&&o.codeExecutionResult&&(n.parts[n.parts.length-1]={text:t[0]+o.codeExecutionResult.output+t[1]},n.role="user")}var ti=require("lodash-es");var so="_code_execution_context",ao="execution_session_id",be="processed_input_files",ke="_code_executor_input_files",Pe="_code_executor_error_counts",co="_code_execution_results",pt=class{constructor(e){this.sessionState=e;var t;this.context=(t=e.get(so))!=null?t:{},this.sessionState=e}getStateDelta(){return{[so]:(0,ti.cloneDeep)(this.context)}}getExecutionId(){if(ao in this.context)return this.context[ao]}setExecutionId(e){this.context[ao]=e}getProcessedFileNames(){return be in this.context?this.context[be]:[]}addProcessedFileNames(e){be in this.context||(this.context[be]=[]),this.context[be].push(...e)}getInputFiles(){return ke in this.sessionState?this.sessionState.get(ke):[]}addInputFiles(e){ke in this.sessionState||this.sessionState.set(ke,[]),this.sessionState.get(ke).push(...e)}clearInputFiles(){ke in this.sessionState&&this.sessionState.set(ke,[]),be in this.context&&(this.context[be]=[])}getErrorCount(e){return Pe in this.sessionState&&this.sessionState.get(Pe)[e]||0}incrementErrorCount(e){Pe in this.sessionState||this.sessionState.set(Pe,{}),this.sessionState.get(Pe)[e]=this.getErrorCount(e)+1}resetErrorCount(e){if(!(Pe in this.sessionState))return;let t=this.sessionState.get(Pe);e in t&&delete t[e]}updateCodeExecutionResult({invocationId:e,code:t,resultStdout:o,resultStderr:r}){co in this.sessionState||this.sessionState.set(co,{});let i=this.sessionState.get(co);e in i||(i[e]=[]),i[e].push({code:t,resultStdout:o,resultStderr:r,timestamp:Date.now()})}getCodeExecutionContext(){return this.sessionState.get(so)||{}}};var uo=class extends B{async*runAsync(e,t){if(x(e.agent)&&e.agent.codeExecutor){for await(let o of Ma(e,t))yield o;if(zt(e.agent.codeExecutor))for(let o of t.contents){let r=e.agent.codeExecutor.codeBlockDelimiters.length?e.agent.codeExecutor.codeBlockDelimiters[0]:["",""];ei(o,r,e.agent.codeExecutor.executionResultDelimiters)}}}},Ht={"text/csv":{extension:".csv",loaderCodeTemplate:"pd.read_csv('{filename}')"}},Oa=`
|
|
38
38
|
import pandas as pd
|
|
39
39
|
|
|
40
40
|
def explore_df(df: pd.DataFrame) -> None:
|
|
@@ -71,30 +71,54 @@ def explore_df(df: pd.DataFrame) -> None:
|
|
|
71
71
|
Total columns: {df.shape[1]}
|
|
72
72
|
|
|
73
73
|
{df_info}""")
|
|
74
|
-
`,
|
|
74
|
+
`,fo=class{async*runAsync(e,t){if(!t.partial)for await(let o of Na(e,t))yield o}},Xf=new fo;async function*Ma(n,e){let t=n.agent;if(!x(t))return;let o=t.codeExecutor;if(!o||!zt(o))return;if(ft(o)){o.processLlmRequest(e);return}if(!o.optimizeDataFile)return;let r=new pt(new E(n.session.state));if(r.getErrorCount(n.invocationId)>=o.errorRetryAttempts)return;let i=Da(r,e),s=new Set(r.getProcessedFileNames()),a=i.filter(c=>!s.has(c.name));for(let c of a){let l=Ba(c);if(!l)return;let u={role:"model",parts:[{text:`Processing input file: \`${c.name}\``},io(l)]};e.contents.push((0,lo.cloneDeep)(u)),yield A({invocationId:n.invocationId,author:t.name,branch:n.branch,content:u});let f=ni(n,r),d=await o.executeCode({invocationContext:n,codeExecutionInput:{code:l,inputFiles:[c],executionId:f}});r.updateCodeExecutionResult({invocationId:n.invocationId,code:l,resultStdout:d.stdout,resultStderr:d.stderr}),r.addProcessedFileNames([c.name]);let p=await oi(n,r,d);yield p,e.contents.push((0,lo.cloneDeep)(p.content))}}async function*Na(n,e){let t=n.agent;if(!x(t))return;let o=t.codeExecutor;if(!o||!zt(o)||!e||!e.content||ft(o))return;let r=new pt(new E(n.session.state));if(r.getErrorCount(n.invocationId)>=o.errorRetryAttempts)return;let i=e.content,s=Qr(i,o.codeBlockDelimiters);if(!s)return;yield A({invocationId:n.invocationId,author:t.name,branch:n.branch,content:i});let a=ni(n,r),c=await o.executeCode({invocationContext:n,codeExecutionInput:{code:s,inputFiles:r.getInputFiles(),executionId:a}});r.updateCodeExecutionResult({invocationId:n.invocationId,code:s,resultStdout:c.stdout,resultStderr:c.stderr}),yield await oi(n,r,c),e.content=void 0}function Da(n,e){var r;let t=n.getInputFiles(),o=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||!Ht[l])continue;let u=`data_${i+1}_${a+1}${Ht[l].extension}`;c.text=`
|
|
75
75
|
Available file: \`${u}\`
|
|
76
|
-
`;let f={name:u,content:
|
|
77
|
-
${
|
|
76
|
+
`;let f={name:u,content:rr(c.inlineData.data),mimeType:l};o.has(u)||(n.addInputFiles([f]),t.push(f))}}return t}function ni(n,e){var r;let t=n.agent;if(!x(t)||!((r=t.codeExecutor)!=null&&r.stateful))return;let o=e.getExecutionId();return o||(o=n.session.id,e.setExecutionId(o)),o}async function oi(n,e,t){if(!n.artifactService)throw new Error("Artifact service is not initialized.");let o={role:"model",parts:[Zr(t)]},r=F({stateDelta:e.getStateDelta()});t.stderr?e.incrementErrorCount(n.invocationId):e.resetErrorCount(n.invocationId);for(let i of t.outputFiles){let s=await n.artifactService.saveArtifact({appName:n.appName||"",userId:n.userId||"",sessionId:n.session.id,filename:i.name,artifact:{inlineData:{data:i.content,mimeType:i.mimeType}}});r.artifactDelta[i.name]=s}return A({invocationId:n.invocationId,author:n.agent.name,branch:n.branch,content:o,actions:r})}function Ba(n){function e(r){let[i]=r.split("."),s=i.replace(/[^a-zA-Z0-9_]/g,"_");return/^\d/.test(s)&&(s="_"+s),s}if(!Ht[n.mimeType])return;let t=e(n.name),o=Ht[n.mimeType].loaderCodeTemplate.replace("{filename}",n.name);return`
|
|
77
|
+
${Oa}
|
|
78
78
|
|
|
79
79
|
# Load the dataframe.
|
|
80
80
|
${t} = ${o}
|
|
81
81
|
|
|
82
82
|
# Use \`explore_df\` to guide my analysis.
|
|
83
83
|
explore_df(${t})
|
|
84
|
-
`}var cr=new vn;var ur=require("lodash-es");function yn(n,e,t){var s,a,c;let o=[];for(let l of n)!((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)||ls(l)||us(l)||o.push(pr(e,l)?fs(l):l);let r=ps(o);r=ds(r);let i=[];for(let l of r){let u=(0,ur.cloneDeep)(l.content);Lo(u),i.push(u)}return i}function fr(n,e,t){for(let o=n.length-1;o>=0;o--){let r=n[o];if(r.author==="user"||pr(e,r))return yn(n.slice(o),e,t)}return[]}function ls(n){var e,t,o;if(!((e=n.content)!=null&&e.parts))return!1;for(let r of n.content.parts)if(((t=r.functionCall)==null?void 0:t.name)===ct||((o=r.functionResponse)==null?void 0:o.name)===ct)return!0;return!1}function us(n){var e,t,o;if(!((e=n.content)!=null&&e.parts))return!1;for(let r of n.content.parts)if(((t=r.functionCall)==null?void 0:t.name)===Pe||((o=r.functionResponse)==null?void 0:o.name)===Pe)return!0;return!1}function pr(n,e){return!!n&&e.author!==n&&e.author!=="user"}function fs(n){var t,o,r,i,s,a;if(!((o=(t=n.content)==null?void 0:t.parts)!=null&&o.length))return n;let e={role:"user",parts:[{text:"For context:"}]};for(let c of n.content.parts)if(c.text&&!c.thought)(r=e.parts)==null||r.push({text:`[${n.author}] said: ${c.text}`});else if(c.functionCall){let l=lr(c.functionCall.args);(i=e.parts)==null||i.push({text:`[${n.author}] called tool \`${c.functionCall.name}\` with parameters: ${l}`})}else if(c.functionResponse){let l=lr(c.functionResponse.response);(s=e.parts)==null||s.push({text:`[${n.author}] tool \`${c.functionResponse.name}\` returned result: ${l}`})}else(a=e.parts)==null||a.push(c);return T({invocationId:n.invocationId,author:"user",content:e,branch:n.branch,timestamp:n.timestamp})}function dr(n){var r;if(n.length===0)throw new Error("Cannot merge an empty list of events.");let e=T(n[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 o={};for(let i=0;i<t.length;i++){let s=t[i];s.functionResponse&&s.functionResponse.id&&(o[s.functionResponse.id]=i)}for(let i of n.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 o?t[o[a]]=s:(t.push(s),o[a]=t.length-1)}else t.push(s)}return e}function ps(n){if(n.length===0)return n;let e=n[n.length-1],t=B(e);if(!(t!=null&&t.length))return n;let o=new Set(t.filter(c=>!!c.id).map(c=>c.id)),r=n.at(-2);if(r){let c=R(r);if(c){for(let l of c)if(l.id&&o.has(l.id))return n}}let i=-1;for(let c=n.length-2;c>=0;c--){let l=n[c],u=R(l);if(u!=null&&u.length){for(let f of u)if(f.id&&o.has(f.id)){i=c;let p=new Set(u.map(g=>g.id).filter(g=>!!g));if(!Array.from(o).every(g=>p.has(g)))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 : ${Array.from(p).join(", ")}, function response ids provided: ${Array.from(o).join(", ")}`);o=p;break}}}if(i===-1)throw new Error(`No function call event found for function responses ids: ${Array.from(o).join(", ")}`);let s=[];for(let c=i+1;c<n.length-1;c++){let l=n[c],u=B(l);u&&u.some(f=>f.id&&o.has(f.id))&&s.push(l)}s.push(n[n.length-1]);let a=n.slice(0,i+1);return a.push(dr(s)),a}function ds(n){let e=new Map;for(let o=0;o<n.length;o++){let r=n[o],i=B(r);if(i!=null&&i.length)for(let s of i)s.id&&e.set(s.id,o)}let t=[];for(let o of n){if(B(o).length>0)continue;let r=R(o);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(o),i.size===0)continue;if(i.size===1){let[s]=[...i];t.push(n[s])}else{let a=Array.from(i).sort((c,l)=>c-l).map(c=>n[c]);t.push(dr(a))}}else t.push(o)}return t}function lr(n){if(typeof n=="string")return n;try{return JSON.stringify(n)}catch{return String(n)}}var An=class{async*runAsync(e,t){let o=e.agent;!o||!x(o)||(o.includeContents==="default"?t.contents=yn(e.session.events,o.name,e.branch):t.contents=fr(e.session.events,o.name,e.branch))}},mr=new An;var xn=class extends k{async*runAsync(e,t){let o=e.agent,r=[`You are an agent. Your internal name is "${o.name}".`];o.description&&r.push(`The description about you is "${o.description}"`),Ce(t,r)}},gr=new xn;async function En(n,e){let t=e.invocationContext;async function o(c){let l=c[0].replace(/^\{+/,"").replace(/\}+$/,"").trim(),u=l.endsWith("?");if(u&&(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 p=await t.artifactService.loadArtifact({appName:t.session.appName,userId:t.session.userId,sessionId:t.session.id,filename:f});if(!p)throw new Error(`Artifact ${f} not found.`);return String(p)}if(!hs(l))return c[0];if(l in t.session.state)return String(t.session.state[l]);if(u)return"";throw new Error(`Context variable not found: \`${l}\`.`)}let r=/\{+[^{}]*}+/g,i=[],s=0,a=n.matchAll(r);for(let c of a){i.push(n.slice(s,c.index));let l=await o(c);i.push(l),s=c.index+c[0].length}return i.push(n.slice(s)),i.join("")}var ms=/^[a-zA-Z_][a-zA-Z0-9_]*$/;function hr(n){return n===""||n===void 0?!1:ms.test(n)}var gs=[v.APP_PREFIX,v.USER_PREFIX,v.TEMP_PREFIX];function hs(n){let e=n.split(":");return e.length===0||e.length>2?!1:e.length===1?hr(n):gs.includes(e[0]+":")?hr(e[1]):!1}var Tn=class extends k{async*runAsync(e,t){let o=e.agent;if(!x(o)||!x(o.rootAgent))return;let r=o.rootAgent;if(x(r)&&r.globalInstruction){let{instruction:i,requireStateInjection:s}=await r.canonicalGlobalInstruction(new I(e)),a=i;s&&(a=await En(i,new I(e))),Ce(t,[a])}if(o.instruction){let{instruction:i,requireStateInjection:s}=await o.canonicalInstruction(new I(e)),a=i;s&&(a=await En(i,new I(e))),Ce(t,[a])}}},vr=new Tn;var Sn=class extends k{async*runAsync(e){let t=e.agent;if(!x(t))return;let o=e.session.events;if(!o||o.length===0)return;let r={},i=-1;for(let s=o.length-1;s>=0;s--){let a=o[s];if(a.author!=="user")continue;let c=B(a);if(!c)continue;let l=!1;for(let u of c){if(u.name!==Pe)continue;l=!0;let f=null;u.response&&Object.keys(u.response).length===1&&"response"in u.response?f=JSON.parse(u.response.response):u.response&&(f=new re({hint:u.response.hint,payload:u.response.payload,confirmed:u.response.confirmed})),u.id&&f&&(r[u.id]=f)}if(l){i=s;break}}if(Object.keys(r).length!==0)for(let s=i-1;s>=0;s--){let a=o[s],c=R(a);if(!c)continue;let l={},u={};for(let g of c){if(!g.id||!(g.id in r))continue;let y=g.args;if(!y||!("originalFunctionCall"in y))continue;let h=y.originalFunctionCall;h.id&&(l[h.id]=r[g.id],u[h.id]=h)}if(Object.keys(l).length===0)continue;for(let g=o.length-1;g>i;g--){let y=o[g],h=B(y);if(h){for(let S of h)S.id&&S.id in l&&(delete l[S.id],delete u[S.id]);if(Object.keys(l).length===0)break}}if(Object.keys(l).length===0)continue;let f=await t.canonicalTools(new I(e)),p=Object.fromEntries(f.map(g=>[g.name,g])),d=await lt({invocationContext:e,functionCalls:Object.values(u),toolsDict:p,beforeToolCallbacks:t.canonicalBeforeToolCallbacks,afterToolCallbacks:t.canonicalAfterToolCallbacks,filters:new Set(Object.keys(l)),toolConfirmationDict:l});d&&(yield d);return}}},Cr=new Sn;var vt=(o=>(o.NONE="none",o.SSE="sse",o.BIDI="bidi",o))(vt||{});function yr(n={}){return{saveInputBlobsAsArtifacts:!1,supportCfc:!1,enableAffectiveDialog:!1,streamingMode:"none",maxLlmCalls:vs(n.maxLlmCalls||500),pauseOnToolCalls:!1,...n}}function vs(n){if(n>Number.MAX_SAFE_INTEGER)throw new Error(`maxLlmCalls should be less than ${Number.MAX_SAFE_INTEGER}.`);return n<=0&&m.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."),n}var Ar="adk_agent_name";async function xr(n,e){return dt(n)?[n]:await n.getTools(e)}var Rn=Symbol.for("google.adk.llmAgent");function x(n){return typeof n=="object"&&n!==null&&Rn in n&&n[Rn]===!0}var Er,Tr,Ct=class n extends(Tr=D,Er=Rn,Tr){constructor(t){var r,i,s,a,c,l,u,f,p;super(t);this[Er]=!0;if(this.model=t.model,this.instruction=(r=t.instruction)!=null?r:"",this.globalInstruction=(i=t.globalInstruction)!=null?i:"",this.tools=(s=t.tools)!=null?s:[],this.generateContentConfig=t.generateContentConfig,this.disallowTransferToParent=(a=t.disallowTransferToParent)!=null?a:!1,this.disallowTransferToPeers=(c=t.disallowTransferToPeers)!=null?c:!1,this.includeContents=(l=t.includeContents)!=null?l:"default",this.inputSchema=he(t.inputSchema)?ve(t.inputSchema):t.inputSchema,this.outputSchema=he(t.outputSchema)?ve(t.outputSchema):t.outputSchema,this.outputKey=t.outputKey,this.beforeModelCallback=t.beforeModelCallback,this.afterModelCallback=t.afterModelCallback,this.beforeToolCallback=t.beforeToolCallback,this.afterToolCallback=t.afterToolCallback,this.codeExecutor=t.codeExecutor,this.requestProcessors=(u=t.requestProcessors)!=null?u:[Xo,gr,vr,Cr,mr,cr],this.responseProcessors=(f=t.responseProcessors)!=null?f:[],this.disallowTransferToParent&&this.disallowTransferToPeers&&!((p=this.subAgents)!=null&&p.length)||this.requestProcessors.push(Ho),t.generateContentConfig){if(t.generateContentConfig.tools)throw new Error("All tools must be set via LlmAgent.tools.");if(t.generateContentConfig.systemInstruction)throw new Error("System instruction must be set via LlmAgent.instruction.");if(t.generateContentConfig.responseSchema)throw new Error("Response schema must be set via LlmAgent.output_schema.")}else this.generateContentConfig={};this.outputSchema&&(!this.disallowTransferToParent||!this.disallowTransferToPeers)&&(m.warn(`Invalid config for agent ${this.name}: outputSchema cannot co-exist with agent transfer configurations. Setting disallowTransferToParent=true, disallowTransferToPeers=true`),this.disallowTransferToParent=!0,this.disallowTransferToPeers=!0)}get canonicalModel(){if(ft(this.model))return this.model;if(typeof this.model=="string"&&this.model)return se.newLlm(this.model);let t=this.parentAgent;for(;t;){if(x(t))return t.canonicalModel;t=t.parentAgent}throw new Error(`No model found for ${this.name}.`)}async canonicalInstruction(t){return typeof this.instruction=="string"?{instruction:this.instruction,requireStateInjection:!0}:{instruction:await this.instruction(t),requireStateInjection:!1}}async canonicalGlobalInstruction(t){return typeof this.globalInstruction=="string"?{instruction:this.globalInstruction,requireStateInjection:!0}:{instruction:await this.globalInstruction(t),requireStateInjection:!1}}async canonicalTools(t){let o=[];for(let r of this.tools){let i=await xr(r,t);o.push(...i)}return o}static normalizeCallbackArray(t){return t?Array.isArray(t)?t:[t]:[]}get canonicalBeforeModelCallbacks(){return n.normalizeCallbackArray(this.beforeModelCallback)}get canonicalAfterModelCallbacks(){return n.normalizeCallbackArray(this.afterModelCallback)}get canonicalBeforeToolCallbacks(){return n.normalizeCallbackArray(this.beforeToolCallback)}get canonicalAfterToolCallbacks(){return n.normalizeCallbackArray(this.afterToolCallback)}maybeSaveOutputToState(t){var i,s;if(t.author!==this.name){m.debug(`Skipping output save for agent ${this.name}: event authored by ${t.author}`);return}if(!this.outputKey){m.debug(`Skipping output save for agent ${this.name}: outputKey is not set`);return}if(!Y(t)){m.debug(`Skipping output save for agent ${this.name}: event is not a final response`);return}if(!((s=(i=t.content)==null?void 0:i.parts)!=null&&s.length)){m.debug(`Skipping output save for agent ${this.name}: event content is empty`);return}let o=t.content.parts.map(a=>a.text?a.text:"").join(""),r=o;if(this.outputSchema){if(!o.trim())return;try{r=JSON.parse(o)}catch(a){m.error(`Error parsing output for agent ${this.name}`,a)}}t.actions.stateDelta[this.outputKey]=r}async*runAsyncImpl(t){for(;;){let o;for await(let r of this.runOneStepAsync(t))o=r,this.maybeSaveOutputToState(r),yield r;if(!o||Y(o))break;if(o.partial){m.warn("The last event is partial, which is not expected.");break}}}async*runLiveImpl(t){for await(let o of this.runLiveFlow(t))this.maybeSaveOutputToState(o),yield o;t.endInvocation}async*runLiveFlow(t){throw await Promise.resolve(),new Error("LlmAgent.runLiveFlow not implemented")}async*runOneStepAsync(t){let o={contents:[],toolsDict:{},liveConnectConfig:{}};for(let a of this.requestProcessors)for await(let c of a.runAsync(t,o))yield c;for(let a of this.tools){let c=new _({invocationContext:t}),l=await xr(a,new I(t));for(let u of l)await u.processLlmRequest({toolContext:c,llmRequest:o})}if(t.endInvocation)return;let r=T({invocationId:t.invocationId,author:this.name,branch:t.branch}),i=j.startSpan("call_llm"),s=yt.trace.setSpan(yt.context.active(),i);yield*de(s,this,async function*(){let a=async function*(){for await(let c of this.callLlmAsync(t,o,r))for await(let l of this.postprocess(t,o,c,r))r.id=Ut(),r.timestamp=new Date().getTime(),yield l};yield*this.runAndHandleError(a.call(this),t,o,r)}),i.end()}async*postprocess(t,o,r,i){var f,p;for(let d of this.responseProcessors)for await(let g of d.runAsync(t,r))yield g;if(!r.content&&!r.errorCode&&!r.interrupted)return;let s=T({...i,...r});if(s.content){let d=R(s);d!=null&&d.length&&(Po(s),s.longRunningToolIds=Array.from(_o(d,o.toolsDict)))}if(yield s,!((f=R(s))!=null&&f.length))return;if((p=t.runConfig)!=null&&p.pauseOnToolCalls){t.endInvocation=!0;return}let a=await ko({invocationContext:t,functionCallEvent:s,toolsDict:o.toolsDict,beforeToolCallbacks:this.canonicalBeforeToolCallbacks,afterToolCallbacks:this.canonicalAfterToolCallbacks});if(!a)return;let c=Yt(t,a);c&&(yield c);let l=Jt({invocationContext:t,functionCallEvent:s,functionResponseEvent:a});if(l){yield l,t.endInvocation=!0;return}yield a;let u=a.actions.transferToAgent;if(u){let d=this.getAgentByName(t,u);for await(let g of d.runAsync(t))yield g}}getAgentByName(t,o){let i=t.agent.rootAgent.findAgent(o);if(!i)throw new Error(`Agent ${o} not found in the agent tree.`);return i}async*callLlmAsync(t,o,r){var a,c,l,u,f;let i=await this.handleBeforeModelCallback(t,o,r);if(i){yield i;return}(a=o.config)!=null||(o.config={}),(l=(c=o.config).labels)!=null||(c.labels={}),o.config.labels[Ar]||(o.config.labels[Ar]=this.name);let s=this.canonicalModel;if((u=t.runConfig)!=null&&u.supportCfc)throw new Error("CFC is not yet supported in callLlmAsync");{t.incrementLlmCallCount();let p=s.generateContentAsync(o,((f=t.runConfig)==null?void 0:f.streamingMode)==="sse");for await(let d of p){Ao({invocationContext:t,eventId:r.id,llmRequest:o,llmResponse:d});let g=await this.handleAfterModelCallback(t,d,r);yield g!=null?g:d}}}async handleBeforeModelCallback(t,o,r){let i=new _({invocationContext:t,eventActions:r.actions}),s=await t.pluginManager.runBeforeModelCallback({callbackContext:i,llmRequest:o});if(s)return s;for(let a of this.canonicalBeforeModelCallbacks){let c=await a({context:i,request:o});if(c)return c}}async handleAfterModelCallback(t,o,r){let i=new _({invocationContext:t,eventActions:r.actions}),s=await t.pluginManager.runAfterModelCallback({callbackContext:i,llmResponse:o});if(s)return s;for(let a of this.canonicalAfterModelCallbacks){let c=await a({context:i,response:o});if(c)return c}}async*runAndHandleError(t,o,r,i){try{for await(let s of t)yield s}catch(s){let a=new _({invocationContext:o,eventActions:i.actions});if(s instanceof Error){let c=await o.pluginManager.runOnModelErrorCallback({callbackContext:a,llmRequest:r,error:s});if(c)yield c;else{let l="UNKNOWN_ERROR",u=s.message;try{let f=JSON.parse(s.message);f!=null&&f.error&&(l=String(f.error.code||"UNKNOWN_ERROR"),u=f.error.message||u)}catch{}i.actions?yield T({invocationId:o.invocationId,author:this.name,errorCode:l,errorMessage:u}):yield{errorCode:l,errorMessage:u}}}else throw m.error("Unknown error during response generation",s),s}}};var bn=Symbol.for("google.adk.loopAgent");function br(n){return typeof n=="object"&&n!==null&&bn in n&&n[bn]===!0}var Sr,Rr,At=class extends(Rr=D,Sr=bn,Rr){constructor(t){var o;super(t);this[Sr]=!0;this.maxIterations=(o=t.maxIterations)!=null?o:Number.MAX_SAFE_INTEGER}async*runAsyncImpl(t){let o=0;for(;o<this.maxIterations;){for(let r of this.subAgents){let i=!1;for await(let s of r.runAsync(t))yield s,s.actions.escalate&&(i=!0);if(i)return}o++}}async*runLiveImpl(t){throw new Error("This is not supported yet for LoopAgent.")}};var wn=Symbol.for("google.adk.parallelAgent");function Pr(n){return typeof n=="object"&&n!==null&&wn in n&&n[wn]===!0}var wr,Ir,xt=class extends(Ir=D,wr=wn,Ir){constructor(){super(...arguments);this[wr]=!0}async*runAsyncImpl(t){let o=this.subAgents.map(r=>r.runAsync(Cs(this,r,t)));for await(let r of ys(o))yield r}async*runLiveImpl(t){throw new Error("This is not supported yet for ParallelAgent.")}};function Cs(n,e,t){let o=new z(t),r=`${n.name}.${e.name}`;return o.branch=o.branch?`${o.branch}.${r}`:r,o}async function*ys(n){let e=new Map;for(let[t,o]of n.entries()){let r=o.next().then(i=>({result:i,index:t}));e.set(t,r)}for(;e.size>0;){let{result:t,index:o}=await Promise.race(e.values());if(t.done){e.delete(o);continue}yield t.value;let r=n[o].next().then(i=>({result:i,index:o}));e.set(o,r)}}var In="task_completed",Pn=Symbol.for("google.adk.sequentialAgent");function kr(n){return typeof n=="object"&&n!==null&&Pn in n&&n[Pn]===!0}var Lr,_r,Et=class extends(_r=D,Lr=Pn,_r){constructor(){super(...arguments);this[Lr]=!0}async*runAsyncImpl(t){for(let o of this.subAgents)for await(let r of o.runAsync(t))yield r}async*runLiveImpl(t){for(let o of this.subAgents)x(o)&&((await o.canonicalTools(new I(t))).some(s=>s.name===In)||(o.tools.push(new K({name:In,description:"Signals that the model has successfully completed the user's question or task.",execute:()=>"Task completion signaled."})),o.instruction+=`If you finished the user's request according to its description, call the ${In} 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 o of this.subAgents)for await(let r of o.runLive(t))yield r}};var Ln=(i=>(i.API_KEY="apiKey",i.HTTP="http",i.OAUTH2="oauth2",i.OPEN_ID_CONNECT="openIdConnect",i.SERVICE_ACCOUNT="serviceAccount",i))(Ln||{});var Oe=require("lodash-es");var _n=(u=>(u.THOUGHT="thought",u.CONTENT="content",u.TOOL_CALL="tool_call",u.TOOL_RESULT="tool_result",u.CALL_CODE="call_code",u.CODE_RESULT="code_result",u.ERROR="error",u.ACTIVITY="activity",u.TOOL_CONFIRMATION="tool_confirmation",u.FINISHED="finished",u))(_n||{});function Or(n){var t,o;let e=[];if(n.errorCode)return e.push({type:"error",error:new Error(n.errorMessage||n.errorCode)}),e;for(let r of(o=(t=n.content)==null?void 0:t.parts)!=null?o:[])r.functionCall&&!(0,Oe.isEmpty)(r.functionCall)?e.push({type:"tool_call",call:r.functionCall}):r.functionResponse&&!(0,Oe.isEmpty)(r.functionResponse)?e.push({type:"tool_result",result:r.functionResponse}):r.executableCode&&!(0,Oe.isEmpty)(r.executableCode)?e.push({type:"call_code",code:r.executableCode}):r.codeExecutionResult&&!(0,Oe.isEmpty)(r.codeExecutionResult)?e.push({type:"code_result",result:r.codeExecutionResult}):r.text&&(r.thought?e.push({type:"thought",content:r.text}):e.push({type:"content",content:r.text}));return n.actions.requestedToolConfirmations&&!(0,Oe.isEmpty)(n.actions.requestedToolConfirmations)&&e.push({type:"tool_confirmation",confirmations:n.actions.requestedToolConfirmations}),Y(n)&&e.push({type:"finished",output:void 0}),e}var kn=Symbol.for("google.adk.baseExampleProvider");function Nr(n){return typeof n=="object"&&n!==null&&kn in n&&n[kn]===!0}var Mr;Mr=kn;var Tt=class{constructor(){this[Mr]=!0}};var ae=class{constructor(){this.memories=[];this.sessionEvents={}}async addSessionToMemory(e){let t=Br(e.appName,e.userId);this.sessionEvents[t]||(this.sessionEvents[t]={}),this.sessionEvents[t][e.id]=e.events.filter(o=>{var r,i,s;return((s=(i=(r=o.content)==null?void 0:r.parts)==null?void 0:i.length)!=null?s:0)>0})}async searchMemory(e){var i,s;let t=Br(e.appName,e.userId);if(!this.sessionEvents[t])return Promise.resolve({memories:[]});let o=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(p=>p.text).filter(p=>!!p).join(" "),u=As(l);if(!u.size)continue;o.some(p=>u.has(p))&&r.memories.push({content:c.content,author:c.author,timestamp:xs(c.timestamp)})}return r}};function Br(n,e){return`${n}/${e}`}function As(n){return new Set([...n.matchAll(/[A-Za-z]+/)].map(e=>e[0].toLowerCase()))}function xs(n){return new Date(n).toISOString()}var ce=class{constructor(e){this.name=e}async onUserMessageCallback(e){}async beforeRunCallback(e){}async onEventCallback(e){}async afterRunCallback(e){}async beforeAgentCallback(e){}async afterAgentCallback(e){}async beforeModelCallback(e){}async afterModelCallback(e){}async onModelErrorCallback(e){}async beforeToolCallback(e){}async afterToolCallback(e){}async onToolErrorCallback(e){}};var St=class extends ce{constructor(e="logging_plugin"){super(e)}async onUserMessageCallback({invocationContext:e,userMessage:t}){var o;this.log("\u{1F680} USER MESSAGE RECEIVED"),this.log(` Invocation ID: ${e.invocationId}`),this.log(` Session ID: ${e.session.id}`),this.log(` User ID: ${e.userId}`),this.log(` App Name: ${e.appName}`),this.log(` Root Agent: ${(o=e.agent.name)!=null?o:"Unknown"}`),this.log(` User Content: ${this.formatContent(t)}`),e.branch&&this.log(` Branch: ${e.branch}`)}async beforeRunCallback({invocationContext:e}){var t;this.log("\u{1F3C3} INVOCATION STARTING"),this.log(` Invocation ID: ${e.invocationId}`),this.log(` Starting Agent: ${(t=e.agent.name)!=null?t:"Unknown"}`)}async onEventCallback({event:e}){this.log("\u{1F4E2} EVENT YIELDED"),this.log(` Event ID: ${e.id}`),this.log(` Author: ${e.author}`),this.log(` Content: ${this.formatContent(e.content)}`),this.log(` Final Response: ${Y(e)}`);let t=R(e);if(t.length>0){let r=t.map(i=>i.name);this.log(` Function Calls: ${r}`)}let o=B(e);if(o.length>0){let r=o.map(i=>i.name);this.log(` Function Responses: ${r}`)}e.longRunningToolIds&&e.longRunningToolIds.length>0&&this.log(` Long Running Tools: ${[...e.longRunningToolIds]}`)}async afterRunCallback({invocationContext:e}){var t;this.log("\u2705 INVOCATION COMPLETED"),this.log(` Invocation ID: ${e.invocationId}`),this.log(` Final Agent: ${(t=e.agent.name)!=null?t:"Unknown"}`)}async beforeAgentCallback({callbackContext:e}){this.log("\u{1F916} AGENT STARTING"),this.log(` Agent Name: ${e.agentName}`),this.log(` Invocation ID: ${e.invocationId}`),e.invocationContext.branch&&this.log(` Branch: ${e.invocationContext.branch}`)}async afterAgentCallback({callbackContext:e}){this.log("\u{1F916} AGENT COMPLETED"),this.log(` Agent Name: ${e.agentName}`),this.log(` Invocation ID: ${e.invocationId}`)}async beforeModelCallback({callbackContext:e,llmRequest:t}){var o;if(this.log("\u{1F9E0} LLM REQUEST"),this.log(` Model: ${(o=t.model)!=null?o:"default"}`),this.log(` Agent: ${e.agentName}`),t.config&&t.config.systemInstruction){let r=t.config.systemInstruction;r.length>200&&(r=r.substring(0,200)+"..."),this.log(` System Instruction: '${r}'`)}if(t.toolsDict){let r=Object.keys(t.toolsDict);this.log(` Available Tools: ${r}`)}}async afterModelCallback({callbackContext:e,llmResponse:t}){this.log("\u{1F9E0} LLM RESPONSE"),this.log(` Agent: ${e.agentName}`),t.errorCode?(this.log(` \u274C ERROR - Code: ${t.errorCode}`),this.log(` Error Message: ${t.errorMessage}`)):(this.log(` Content: ${this.formatContent(t.content)}`),t.partial&&this.log(` Partial: ${t.partial}`),t.turnComplete!==void 0&&this.log(` Turn Complete: ${t.turnComplete}`)),t.usageMetadata&&this.log(` Token Usage - Input: ${t.usageMetadata.promptTokenCount}, Output: ${t.usageMetadata.candidatesTokenCount}`)}async beforeToolCallback({tool:e,toolArgs:t,toolContext:o}){this.log("\u{1F527} TOOL STARTING"),this.log(` Tool Name: ${e.name}`),this.log(` Agent: ${o.agentName}`),this.log(` Function Call ID: ${o.functionCallId}`),this.log(` Arguments: ${this.formatArgs(t)}`)}async afterToolCallback({tool:e,toolContext:t,result:o}){this.log("\u{1F527} TOOL COMPLETED"),this.log(` Tool Name: ${e.name}`),this.log(` Agent: ${t.agentName}`),this.log(` Function Call ID: ${t.functionCallId}`),this.log(` Result: ${this.formatArgs(o)}`)}async onModelErrorCallback({callbackContext:e,error:t}){this.log("\u{1F9E0} LLM ERROR"),this.log(` Agent: ${e.agentName}`),this.log(` Error: ${t}`)}async onToolErrorCallback({tool:e,toolArgs:t,toolContext:o,error:r}){this.log("\u{1F527} TOOL ERROR"),this.log(` Tool Name: ${e.name}`),this.log(` Agent: ${o.agentName}`),this.log(` Function Call ID: ${o.functionCallId}`),this.log(` Arguments: ${this.formatArgs(t)}`),this.log(` Error: ${r}`)}log(e){let t=`\x1B[90m[${this.name}] ${e}\x1B[0m`;m.info(t)}formatContent(e,t=200){if(!e||!e.parts)return"None";let o=[];for(let r of e.parts)if(r.text){let i=r.text.trim();i.length>t&&(i=i.substring(0,t)+"..."),o.push(`text: '${i}'`)}else r.functionCall?o.push(`function_call: ${r.functionCall.name}`):r.functionResponse?o.push(`function_response: ${r.functionResponse.name}`):r.codeExecutionResult?o.push("code_execution_result"):o.push("other_part");return o.join(" | ")}formatArgs(e,t=300){if(!e)return"{}";let o=JSON.stringify(e);return o.length>t&&(o=o.substring(0,t)+"...}"),o}};var Me=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 '${e.name}' already registered.`);if(Array.from(this.plugins).some(t=>t.name===e.name))throw new Error(`Plugin with name '${e.name}' already registered.`);this.plugins.add(e),m.info(`Plugin '${e.name}' registered.`)}getPlugin(e){return Array.from(this.plugins).find(t=>t.name===e)}async runCallbacks(e,t,o){for(let r of e)try{let i=await t(r);if(i!==void 0)return m.debug(`Plugin '${r.name}' returned a value for callback '${o}', exiting early.`),i}catch(i){let s=`Error in plugin '${r.name}' during '${o}' callback: ${i}`;throw m.error(s),new Error(s)}}async runOnUserMessageCallback({userMessage:e,invocationContext:t}){return await this.runCallbacks(this.plugins,o=>o.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,o=>o.onEventCallback({invocationContext:e,event:t}),"onEventCallback")}async runBeforeAgentCallback({agent:e,callbackContext:t}){return await this.runCallbacks(this.plugins,o=>o.beforeAgentCallback({agent:e,callbackContext:t}),"beforeAgentCallback")}async runAfterAgentCallback({agent:e,callbackContext:t}){return await this.runCallbacks(this.plugins,o=>o.afterAgentCallback({agent:e,callbackContext:t}),"afterAgentCallback")}async runBeforeToolCallback({tool:e,toolArgs:t,toolContext:o}){return await this.runCallbacks(this.plugins,r=>r.beforeToolCallback({tool:e,toolArgs:t,toolContext:o}),"beforeToolCallback")}async runAfterToolCallback({tool:e,toolArgs:t,toolContext:o,result:r}){return await this.runCallbacks(this.plugins,i=>i.afterToolCallback({tool:e,toolArgs:t,toolContext:o,result:r}),"afterToolCallback")}async runOnModelErrorCallback({callbackContext:e,llmRequest:t,error:o}){return await this.runCallbacks(this.plugins,r=>r.onModelErrorCallback({callbackContext:e,llmRequest:t,error:o}),"onModelErrorCallback")}async runBeforeModelCallback({callbackContext:e,llmRequest:t}){return await this.runCallbacks(this.plugins,o=>o.beforeModelCallback({callbackContext:e,llmRequest:t}),"beforeModelCallback")}async runAfterModelCallback({callbackContext:e,llmResponse:t}){return await this.runCallbacks(this.plugins,o=>o.afterModelCallback({callbackContext:e,llmResponse:t}),"afterModelCallback")}async runOnToolErrorCallback({tool:e,toolArgs:t,toolContext:o,error:r}){return await this.runCallbacks(this.plugins,i=>i.onToolErrorCallback({tool:e,toolArgs:t,toolContext:o,error:r}),"onToolErrorCallback")}};var Mn="adk_request_confirmation",On="orcas_tool_call_security_check_states",Dr="This tool call needs external confirmation before completion.",Nn=(o=>(o.DENY="DENY",o.CONFIRM="CONFIRM",o.ALLOW="ALLOW",o))(Nn||{}),He=class{async evaluate(){return Promise.resolve({outcome:"ALLOW",reason:"For prototyping purpose, all tool calls are allowed."})}},Rt=class extends ce{constructor(e){var t;super("security_plugin"),this.policyEngine=(t=e==null?void 0:e.policyEngine)!=null?t:new He}async beforeToolCallback({tool:e,toolArgs:t,toolContext:o}){let r=this.getToolCallCheckState(o);if(!r)return this.checkToolCallPolicy({tool:e,toolArgs:t,toolContext:o});if(r==="CONFIRM"){if(!o.toolConfirmation)return{partial:Dr};if(this.setToolCallCheckState(o,o.toolConfirmation),!o.toolConfirmation.confirmed)return{error:"Tool call rejected from confirmation flow."};o.toolConfirmation=void 0}}getToolCallCheckState(e){var r;let{functionCallId:t}=e;return t?((r=e.state.get(On))!=null?r:{})[t]:void 0}setToolCallCheckState(e,t){var i;let{functionCallId:o}=e;if(!o)return;let r=(i=e.state.get(On))!=null?i:{};r[o]=t,e.state.set(On,r)}async checkToolCallPolicy({tool:e,toolArgs:t,toolContext:o}){let r=await this.policyEngine.evaluate({tool:e,toolArgs:t});switch(this.setToolCallCheckState(o,r.outcome),r.outcome){case"DENY":return{error:`This tool call is rejected by policy engine. Reason: ${r.reason}`};case"CONFIRM":return o.requestConfirmation({hint:`Policy engine requires confirmation calling tool: ${e.name}. Reason: ${r.reason}`}),{partial:Dr};case"ALLOW":return;default:return}}};function Fr(n){if(!n.content||!n.content.parts)return[];let e=[];for(let t of n.content.parts)t&&t.functionCall&&t.functionCall.name===Mn&&e.push(t.functionCall);return e}var Bn=require("lodash-es");var $r=require("lodash-es");var le=class{async getOrCreateSession(e){if(!e.sessionId)return this.createSession(e);let t=await this.getSession({appName:e.appName,userId:e.userId,sessionId:e.sessionId});return t||this.createSession(e)}async appendEvent({session:e,event:t}){return t.partial||(t=bt(t),this.updateSessionState({session:e,event:t}),e.events.push(t)),t}updateSessionState({session:e,event:t}){if(!(!t.actions||!t.actions.stateDelta))for(let[o,r]of Object.entries(t.actions.stateDelta))o.startsWith(v.TEMP_PREFIX)||(e.state[o]=r)}};function bt(n){if(!n.actions||!n.actions.stateDelta)return n;let e=n.actions.stateDelta,t={};for(let[o,r]of Object.entries(e))o.startsWith(v.TEMP_PREFIX)||(t[o]=r);return n.actions.stateDelta=t,n}function W(n={},e={},t={}){let o=(0,$r.cloneDeep)(t);for(let[r,i]of Object.entries(n))o[v.APP_PREFIX+r]=i;for(let[r,i]of Object.entries(e))o[v.USER_PREFIX+r]=i;return o}function Z(n){return{id:n.id,appName:n.appName,userId:n.userId||"",state:n.state||{},events:n.events||[],lastUpdateTime:n.lastUpdateTime||0}}function Gr(n){return n==="memory://"}var H=class extends le{constructor(){super(...arguments);this.sessions={};this.userState={};this.appState={}}async createSession({appName:t,userId:o,state:r,sessionId:i}){var c;let s=Z({id:i||ie(),appName:t,userId:o,state:r,events:[],lastUpdateTime:Date.now()});this.sessions[t]||(this.sessions[t]={}),this.sessions[t][o]||(this.sessions[t][o]={}),this.sessions[t][o][s.id]=s;let a=(0,Bn.cloneDeep)(s);return a.state=W(this.appState[t],(c=this.userState[t])==null?void 0:c[o],a.state),a}async getSession({appName:t,userId:o,sessionId:r,config:i}){var c;if(!this.sessions[t]||!this.sessions[t][o]||!this.sessions[t][o][r])return Promise.resolve(void 0);let s=this.sessions[t][o][r],a=(0,Bn.cloneDeep)(s);if(i&&(i.numRecentEvents&&(a.events=a.events.slice(-i.numRecentEvents)),i.afterTimestamp)){let l=a.events.length-1;for(;l>=0&&!(a.events[l].timestamp<i.afterTimestamp);)l--;l>=0&&(a.events=a.events.slice(l+1))}return a.state=W(this.appState[t],(c=this.userState[t])==null?void 0:c[o],a.state),a}listSessions({appName:t,userId:o}){if(!this.sessions[t]||!this.sessions[t][o])return Promise.resolve({sessions:[]});let r=[];for(let i of Object.values(this.sessions[t][o]))r.push(Z({id:i.id,appName:i.appName,userId:i.userId,state:{},events:[],lastUpdateTime:i.lastUpdateTime}));return Promise.resolve({sessions:r})}async deleteSession({appName:t,userId:o,sessionId:r}){await this.getSession({appName:t,userId:o,sessionId:r})&&delete this.sessions[t][o][r]}async appendEvent({session:t,event:o}){await super.appendEvent({session:t,event:o}),t.lastUpdateTime=o.timestamp;let r=t.appName,i=t.userId,s=t.id,a=l=>{m.warn(`Failed to append event to session ${s}: ${l}`)};if(!this.sessions[r])return a(`appName ${r} not in sessions`),o;if(!this.sessions[r][i])return a(`userId ${i} not in sessions[appName]`),o;if(!this.sessions[r][i][s])return a(`sessionId ${s} not in sessions[appName][userId]`),o;if(o.actions&&o.actions.stateDelta)for(let l of Object.keys(o.actions.stateDelta))l.startsWith(v.APP_PREFIX)&&(this.appState[r]=this.appState[r]||{},this.appState[r][l.replace(v.APP_PREFIX,"")]=o.actions.stateDelta[l]),l.startsWith(v.USER_PREFIX)&&(this.userState[r]=this.userState[r]||{},this.userState[r][i]=this.userState[r][i]||{},this.userState[r][i][l.replace(v.USER_PREFIX,"")]=o.actions.stateDelta[l]);let c=this.sessions[r][i][s];return await super.appendEvent({session:c,event:o}),c.lastUpdateTime=o.timestamp,o}};var qr=require("@google/genai"),wt=require("@opentelemetry/api");var ue=class{constructor(e){var t;this.appName=e.appName,this.agent=e.agent,this.pluginManager=new Me((t=e.plugins)!=null?t:[]),this.artifactService=e.artifactService,this.sessionService=e.sessionService,this.memoryService=e.memoryService,this.credentialService=e.credentialService}async*runEphemeral(e){let o=(await this.sessionService.createSession({appName:this.appName,userId:e.userId})).id;try{yield*this.runAsync({userId:e.userId,sessionId:o,newMessage:e.newMessage,stateDelta:e.stateDelta,runConfig:e.runConfig})}finally{await this.sessionService.deleteSession({appName:this.appName,userId:e.userId,sessionId:o})}}async*runAsync(e){let{userId:t,sessionId:o,stateDelta:r}=e,i=yr(e.runConfig),s=e.newMessage,a=j.startSpan("invocation"),c=wt.trace.setSpan(wt.context.active(),a);try{yield*de(c,this,async function*(){var p;let l=await this.sessionService.getSession({appName:this.appName,userId:t,sessionId:o});if(!l)throw this.appName?new Error(`Session not found: ${o}`):new Error("Session lookup failed: appName must be provided in runner constructor");if(i.supportCfc&&x(this.agent)){let d=this.agent.canonicalModel.model;if(!_e(d))throw new Error(`CFC is not supported for model: ${d} in agent: ${this.agent.name}`);ze(this.agent.codeExecutor)||(this.agent.codeExecutor=new ke)}let u=new z({artifactService:this.artifactService,sessionService:this.sessionService,memoryService:this.memoryService,credentialService:this.credentialService,invocationId:To(),agent:this.agent,session:l,userContent:s,runConfig:i,pluginManager:this.pluginManager}),f=await this.pluginManager.runOnUserMessageCallback({userMessage:s,invocationContext:u});if(f&&(s=f),s){if(!((p=s.parts)!=null&&p.length))throw new Error("No parts in the newMessage.");i.saveInputBlobsAsArtifacts&&await this.saveArtifacts(u.invocationId,l.userId,l.id,s),await this.sessionService.appendEvent({session:l,event:T({invocationId:u.invocationId,author:"user",actions:r?G({stateDelta:r}):void 0,content:s})})}if(u.agent=this.determineAgentForResumption(l,this.agent),s){let d=await this.pluginManager.runBeforeRunCallback({invocationContext:u});if(d){let g=T({invocationId:u.invocationId,author:"model",content:d});await this.sessionService.appendEvent({session:l,event:g}),yield g}else{for await(let g of u.agent.runAsync(u)){g.partial||await this.sessionService.appendEvent({session:l,event:g});let y=await this.pluginManager.runOnEventCallback({invocationContext:u,event:g});y?yield y:yield g}await this.pluginManager.runAfterRunCallback({invocationContext:u})}}})}finally{a.end()}}async saveArtifacts(e,t,o,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_${e}_${s}`;await this.artifactService.saveArtifact({appName:this.appName,userId:t,sessionId:o,filename:c,artifact:a}),r.parts[s]=(0,qr.createPartFromText)(`Uploaded file: ${c}. It is saved into artifacts`)}}determineAgentForResumption(e,t){let o=Es(e.events);if(o&&o.author)return t.findAgent(o.author)||t;for(let r=e.events.length-1;r>=0;r--){m.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){m.warn(`Event from an unknown agent: ${i.author}, event id: ${i.id}`);continue}if(this.isRoutableLlmAgent(s))return s}return t}isRoutableLlmAgent(e){let t=e;for(;t;){if(!x(t)||t.disallowTransferToParent)return!1;t=t.parentAgent}return!0}};function Es(n){var o,r,i,s;if(!n.length)return null;let t=(s=(i=(r=(o=n[n.length-1].content)==null?void 0:o.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=n.length-2;a>=0;a--){let c=n[a],l=R(c);if(l){for(let u of l)if(u.id===t)return c}}return null}var It=class extends ue{constructor({agent:e,appName:t="InMemoryRunner",plugins:o=[]}){super({appName:t,agent:e,plugins:o,artifactService:new oe,sessionService:new H,memoryService:new ae})}};var Xe=require("@google/genai");var Pt=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(){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)}listArtifactVersions(e){if(!this.toolContext.invocationContext.artifactService)throw new Error("Artifact service is not initialized.");return this.toolContext.invocationContext.artifactService.listArtifactVersions(e)}getArtifactVersion(e){if(!this.toolContext.invocationContext.artifactService)throw new Error("Artifact service is not initialized.");return this.toolContext.invocationContext.artifactService.getArtifactVersion(e)}};var Dn=Symbol.for("google.adk.agentTool");function jr(n){return typeof n=="object"&&n!==null&&Dn in n&&n[Dn]===!0}var Ur,Vr,Lt=class extends(Vr=M,Ur=Dn,Vr){constructor(t){super({name:t.agent.name,description:t.agent.description||""});this[Ur]=!0;this.agent=t.agent,this.skipSummarization=t.skipSummarization||!1}_getDeclaration(){let t;if(x(this.agent)&&this.agent.inputSchema?t={name:this.name,description:this.description,parameters:this.agent.inputSchema}:t={name:this.name,description:this.description,parameters:{type:Xe.Type.OBJECT,properties:{request:{type:Xe.Type.STRING}},required:["request"]}},this.apiVariant!=="GEMINI_API"){let o=x(this.agent)&&this.agent.outputSchema;t.response=o?{type:Xe.Type.OBJECT}:{type:Xe.Type.STRING}}return t}async runAsync({args:t,toolContext:o}){var f,p;this.skipSummarization&&(o.actions.skipSummarization=!0);let i={role:"user",parts:[{text:x(this.agent)&&this.agent.inputSchema?JSON.stringify(t):t.request}]},s=new ue({appName:this.agent.name,agent:this.agent,artifactService:new Pt(o),sessionService:new H,memoryService:new ae,credentialService:o.invocationContext.credentialService}),a=await s.sessionService.createSession({appName:this.agent.name,userId:"tmp_user",state:o.state.toRecord()}),c;for await(let d of s.runAsync({userId:a.userId,sessionId:a.id,newMessage:i}))d.actions.stateDelta&&o.state.update(d.actions.stateDelta),c=d;if(!((p=(f=c==null?void 0:c.content)==null?void 0:f.parts)!=null&&p.length))return"";let l=x(this.agent)&&this.agent.outputSchema,u=c.content.parts.map(d=>d.text).filter(d=>d).join(`
|
|
85
|
-
`);return l?JSON.parse(u):u}};var Fn=Symbol.for("google.adk.baseToolset");function Kr(n){return typeof n=="object"&&n!==null&&Fn in n&&n[Fn]===!0}var zr;zr=Fn;var Ne=class{constructor(e,t){this.toolFilter=e;this.prefix=t;this[zr]=!0}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 Ye=class extends M{constructor(){super({name:"exit_loop",description:`Exits the loop.
|
|
84
|
+
`}var ri=new uo;function z(n){return"isCompacted"in n&&n.isCompacted===!0}function ii(n={}){return{...A(n),isCompacted:n.isCompacted||!0,startTime:n.startTime,endTime:n.endTime,compactedContent:n.compactedContent}}var ai=require("@google/genai"),ci=require("lodash-es");function po(n,e,t){var s,a,c;let o=[];for(let l of n){if(z(l)){o.push(Va(l));continue}!((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)||Fa(l)||Ua(l)||o.push(ui(e,l)?$a(l):l)}let r=Ga(o);r=qa(r);let i=[];for(let l of r){let u=(0,ci.cloneDeep)(l.content);Dr(u),i.push(u)}return i}function li(n,e,t){for(let o=n.length-1;o>=0;o--){let r=n[o];if(r.author==="user"||ui(e,r))return po(n.slice(o),e,t)}return[]}function Fa(n){var e,t,o;if(!((e=n.content)!=null&&e.parts))return!1;for(let r of n.content.parts)if(((t=r.functionCall)==null?void 0:t.name)===qt||((o=r.functionResponse)==null?void 0:o.name)===qt)return!0;return!1}function Ua(n){var e,t,o;if(!((e=n.content)!=null&&e.parts))return!1;for(let r of n.content.parts)if(((t=r.functionCall)==null?void 0:t.name)===qe||((o=r.functionResponse)==null?void 0:o.name)===qe)return!0;return!1}function ui(n,e){return!!n&&e.author!==n&&e.author!=="user"}function $a(n){var t,o,r,i,s,a;if(!((o=(t=n.content)==null?void 0:t.parts)!=null&&o.length))return n;let e={role:"user",parts:[{text:"For context:"}]};for(let c of n.content.parts)if(c.text&&!c.thought)(r=e.parts)==null||r.push({text:`[${n.author}] said: ${c.text}`});else if(c.functionCall){let l=si(c.functionCall.args);(i=e.parts)==null||i.push({text:`[${n.author}] called tool \`${c.functionCall.name}\` with parameters: ${l}`})}else if(c.functionResponse){let l=si(c.functionResponse.response);(s=e.parts)==null||s.push({text:`[${n.author}] tool \`${c.functionResponse.name}\` returned result: ${l}`})}else(a=e.parts)==null||a.push(c);return A({invocationId:n.invocationId,author:"user",content:e,branch:n.branch,timestamp:n.timestamp})}function fi(n){var r;if(n.length===0)throw new Error("Cannot merge an empty list of events.");let e=A(n[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 o={};for(let i=0;i<t.length;i++){let s=t[i];s.functionResponse&&s.functionResponse.id&&(o[s.functionResponse.id]=i)}for(let i of n.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 o?t[o[a]]=s:(t.push(s),o[a]=t.length-1)}else t.push(s)}return e}function Ga(n){if(n.length===0)return n;let e=n[n.length-1],t=q(e);if(!(t!=null&&t.length))return n;let o=new Set(t.filter(c=>!!c.id).map(c=>c.id)),r=n.at(-2);if(r){let c=w(r);if(c){for(let l of c)if(l.id&&o.has(l.id))return n}}let i=-1;for(let c=n.length-2;c>=0;c--){let l=n[c],u=w(l);if(u!=null&&u.length){for(let f of u)if(f.id&&o.has(f.id)){i=c;let d=new Set(u.map(m=>m.id).filter(m=>!!m));if(!Array.from(o).every(m=>d.has(m)))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 : ${Array.from(d).join(", ")}, function response ids provided: ${Array.from(o).join(", ")}`);o=d;break}}}if(i===-1)throw new Error(`No function call event found for function responses ids: ${Array.from(o).join(", ")}`);let s=[];for(let c=i+1;c<n.length-1;c++){let l=n[c],u=q(l);u&&u.some(f=>f.id&&o.has(f.id))&&s.push(l)}s.push(n[n.length-1]);let a=n.slice(0,i+1);return a.push(fi(s)),a}function qa(n){let e=new Map;for(let o=0;o<n.length;o++){let r=n[o],i=q(r);if(i!=null&&i.length)for(let s of i)s.id&&e.set(s.id,o)}let t=[];for(let o of n){if(q(o).length>0)continue;let r=w(o);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(o),i.size===0)continue;if(i.size===1){let[s]=[...i];t.push(n[s])}else{let a=Array.from(i).sort((c,l)=>c-l).map(c=>n[c]);t.push(fi(a))}}else t.push(o)}return t}function si(n){if(typeof n=="string")return n;try{return JSON.stringify(n)}catch{return String(n)}}function Va(n){let e=(0,ai.createUserContent)(`[Previous Context Summary]:
|
|
85
|
+
${n.compactedContent}`);return A({invocationId:n.invocationId,author:"user",content:e,branch:n.branch,timestamp:n.timestamp})}var mt=class{async*runAsync(e,t){let o=e.agent;if(!o||!x(o))return;let r=e.session.events,i=r.filter(z),s=i.length>0?i.reduce((a,c)=>c.endTime>a.endTime?c:a):void 0;if(s){let a=r.filter(c=>!(c===s||z(c)||c.timestamp<=s.endTime));r=[s,...a]}o.includeContents==="default"?t.contents=po(r,o.name,e.branch):t.contents=li(r,o.name,e.branch)}},gt=new mt;var _e=class{constructor(e){this.compactors=e}async*runAsync(e,t){for(let o of this.compactors)if(await Promise.resolve(o.shouldCompact(e))){let i=new Set(e.session.events);await Promise.resolve(o.compact(e));let s=e.session.events.filter(a=>!i.has(a));for(let a of s)yield a;return}}};var mo=class extends B{async*runAsync(e,t){let o=e.agent,r=[`You are an agent. Your internal name is "${o.name}".`];o.description&&r.push(`The description about you is "${o.description}"`),j(t,r)}},di=new mo;async function go(n,e){let t=e.invocationContext;async function o(c){let l=c[0].replace(/^\{+/,"").replace(/\}+$/,"").trim(),u=l.endsWith("?");if(u&&(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 d=await t.artifactService.loadArtifact({appName:t.session.appName,userId:t.session.userId,sessionId:t.session.id,filename:f});if(!d)throw new Error(`Artifact ${f} not found.`);return String(d)}if(!Ha(l))return c[0];if(l in t.session.state)return String(t.session.state[l]);if(u)return"";throw new Error(`Context variable not found: \`${l}\`.`)}let r=/\{+[^{}]*}+/g,i=[],s=0,a=n.matchAll(r);for(let c of a){i.push(n.slice(s,c.index));let l=await o(c);i.push(l),s=c.index+c[0].length}return i.push(n.slice(s)),i.join("")}var ja=/^[a-zA-Z_][a-zA-Z0-9_]*$/;function pi(n){return n===""||n===void 0?!1:ja.test(n)}var za=[E.APP_PREFIX,E.USER_PREFIX,E.TEMP_PREFIX];function Ha(n){let e=n.split(":");return e.length===0||e.length>2?!1:e.length===1?pi(n):za.includes(e[0]+":")?pi(e[1]):!1}var ho=class extends B{async*runAsync(e,t){let o=e.agent;if(!x(o))return;let r=o.rootAgent;if(x(r)&&r.globalInstruction){let{instruction:i,requireStateInjection:s}=await r.canonicalGlobalInstruction(new b(e)),a=i;s&&(a=await go(i,new b(e))),j(t,[a])}if(o.instruction){let{instruction:i,requireStateInjection:s}=await o.canonicalInstruction(new b(e)),a=i;s&&(a=await go(i,new b(e))),j(t,[a])}}},mi=new ho;var Co=class extends B{async*runAsync(e){let t=e.agent;if(!x(t))return;let o=e.session.events;if(!o||o.length===0)return;let r={},i=-1;for(let s=o.length-1;s>=0;s--){let a=o[s];if(a.author!=="user")continue;let c=q(a);if(!c)continue;let l=!1;for(let u of c){if(u.name!==qe)continue;l=!0;let f=null;u.response&&Object.keys(u.response).length===1&&"response"in u.response?f=JSON.parse(u.response.response):u.response&&(f=new pe({hint:u.response.hint,payload:u.response.payload,confirmed:u.response.confirmed})),u.id&&f&&(r[u.id]=f)}if(l){i=s;break}}if(Object.keys(r).length!==0)for(let s=i-1;s>=0;s--){let a=o[s],c=w(a);if(!c)continue;let l={},u={};for(let m of c){if(!m.id||!(m.id in r))continue;let h=m.args;if(!h||!("originalFunctionCall"in h))continue;let C=h.originalFunctionCall;C.id&&(l[C.id]=r[m.id],u[C.id]=C)}if(Object.keys(l).length===0)continue;for(let m=o.length-1;m>i;m--){let h=o[m],C=q(h);if(C){for(let S of C)S.id&&S.id in l&&(delete l[S.id],delete u[S.id]);if(Object.keys(l).length===0)break}}if(Object.keys(l).length===0)continue;let f=await t.canonicalTools(new b(e)),d=Object.fromEntries(f.map(m=>[m.name,m])),p=await Vt({invocationContext:e,functionCalls:Object.values(u),toolsDict:d,beforeToolCallbacks:t.canonicalBeforeToolCallbacks,afterToolCallbacks:t.canonicalAfterToolCallbacks,filters:new Set(Object.keys(l)),toolConfirmationDict:l});p&&(yield p);return}}},gi=new Co;var ht=(o=>(o.NONE="none",o.SSE="sse",o.BIDI="bidi",o))(ht||{});function hi(n={}){return{saveInputBlobsAsArtifacts:!1,supportCfc:!1,enableAffectiveDialog:!1,streamingMode:"none",maxLlmCalls:Wa(n.maxLlmCalls||500),pauseOnToolCalls:!1,...n}}function Wa(n){if(n>Number.MAX_SAFE_INTEGER)throw new Error(`maxLlmCalls should be less than ${Number.MAX_SAFE_INTEGER}.`);return n<=0&&g.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."),n}var Ci="adk_agent_name";async function vi(n,e){return Ge(n)?[n]:await n.getTools(e)}var vo=Symbol.for("google.adk.llmAgent");function x(n){return typeof n=="object"&&n!==null&&vo in n&&n[vo]===!0}var Ai,Ei,Wt=class n extends(Ei=$,Ai=vo,Ei){constructor(t){var r,i,s,a,c,l,u,f,d;super(t);this[Ai]=!0;if(this.model=t.model,this.instruction=(r=t.instruction)!=null?r:"",this.globalInstruction=(i=t.globalInstruction)!=null?i:"",this.tools=(s=t.tools)!=null?s:[],this.generateContentConfig=t.generateContentConfig,this.disallowTransferToParent=(a=t.disallowTransferToParent)!=null?a:!1,this.disallowTransferToPeers=(c=t.disallowTransferToPeers)!=null?c:!1,this.includeContents=(l=t.includeContents)!=null?l:"default",this.inputSchema=Ie(t.inputSchema)?we(t.inputSchema):t.inputSchema,this.outputSchema=Ie(t.outputSchema)?we(t.outputSchema):t.outputSchema,this.outputKey=t.outputKey,this.beforeModelCallback=t.beforeModelCallback,this.afterModelCallback=t.afterModelCallback,this.beforeToolCallback=t.beforeToolCallback,this.afterToolCallback=t.afterToolCallback,this.codeExecutor=t.codeExecutor,this.requestProcessors=(u=t.requestProcessors)!=null?u:[zr,di,mi,gi,gt,ri],!t.requestProcessors&&t.contextCompactors&&t.contextCompactors.length>0){let p=this.requestProcessors.indexOf(gt);p!==-1?this.requestProcessors.splice(p,0,new _e(t.contextCompactors)):this.requestProcessors.push(new _e(t.contextCompactors))}if(this.responseProcessors=(f=t.responseProcessors)!=null?f:[],this.disallowTransferToParent&&this.disallowTransferToPeers&&!((d=this.subAgents)!=null&&d.length)||this.requestProcessors.push(jr),t.generateContentConfig){if(t.generateContentConfig.tools)throw new Error("All tools must be set via LlmAgent.tools.");if(t.generateContentConfig.systemInstruction)throw new Error("System instruction must be set via LlmAgent.instruction.");if(t.generateContentConfig.responseSchema)throw new Error("Response schema must be set via LlmAgent.output_schema.")}else this.generateContentConfig={};this.outputSchema&&(!this.disallowTransferToParent||!this.disallowTransferToPeers)&&(g.warn(`Invalid config for agent ${this.name}: outputSchema cannot co-exist with agent transfer configurations. Setting disallowTransferToParent=true, disallowTransferToPeers=true`),this.disallowTransferToParent=!0,this.disallowTransferToPeers=!0)}get canonicalModel(){if($t(this.model))return this.model;if(typeof this.model=="string"&&this.model)return Ce.newLlm(this.model);let t=this.parentAgent;for(;t;){if(x(t))return t.canonicalModel;t=t.parentAgent}throw new Error(`No model found for ${this.name}.`)}async canonicalInstruction(t){return typeof this.instruction=="string"?{instruction:this.instruction,requireStateInjection:!0}:{instruction:await this.instruction(t),requireStateInjection:!1}}async canonicalGlobalInstruction(t){return typeof this.globalInstruction=="string"?{instruction:this.globalInstruction,requireStateInjection:!0}:{instruction:await this.globalInstruction(t),requireStateInjection:!1}}async canonicalTools(t){let o=[];for(let r of this.tools){let i=await vi(r,t);o.push(...i)}return o}static normalizeCallbackArray(t){return t?Array.isArray(t)?t:[t]:[]}get canonicalBeforeModelCallbacks(){return n.normalizeCallbackArray(this.beforeModelCallback)}get canonicalAfterModelCallbacks(){return n.normalizeCallbackArray(this.afterModelCallback)}get canonicalBeforeToolCallbacks(){return n.normalizeCallbackArray(this.beforeToolCallback)}get canonicalAfterToolCallbacks(){return n.normalizeCallbackArray(this.afterToolCallback)}maybeSaveOutputToState(t){var i,s;if(t.author!==this.name){g.debug(`Skipping output save for agent ${this.name}: event authored by ${t.author}`);return}if(!this.outputKey){g.debug(`Skipping output save for agent ${this.name}: outputKey is not set`);return}if(!se(t)){g.debug(`Skipping output save for agent ${this.name}: event is not a final response`);return}if(!((s=(i=t.content)==null?void 0:i.parts)!=null&&s.length)){g.debug(`Skipping output save for agent ${this.name}: event content is empty`);return}let o=t.content.parts.map(a=>a.text?a.text:"").join(""),r=o;if(this.outputSchema){if(!o.trim())return;try{r=JSON.parse(o)}catch(a){g.error(`Error parsing output for agent ${this.name}`,a)}}t.actions.stateDelta[this.outputKey]=r}async*runAsyncImpl(t){for(;;){let o;for await(let r of this.runOneStepAsync(t))o=r,this.maybeSaveOutputToState(r),yield r;if(!o||se(o))break;if(o.partial){g.warn("The last event is partial, which is not expected.");break}}}async*runLiveImpl(t){for await(let o of this.runLiveFlow(t))this.maybeSaveOutputToState(o),yield o;t.endInvocation}async*runLiveFlow(t){throw await Promise.resolve(),new Error("LlmAgent.runLiveFlow not implemented")}async*runOneStepAsync(t){let o={contents:[],toolsDict:{},liveConnectConfig:{}};for(let a of this.requestProcessors)for await(let c of a.runAsync(t,o))yield c;for(let a of this.tools){let c=new D({invocationContext:t}),l=await vi(a,new b(t));for(let u of l)await u.processLlmRequest({toolContext:c,llmRequest:o})}if(t.endInvocation)return;let r=A({invocationId:t.invocationId,author:this.name,branch:t.branch}),i=Z.startSpan("call_llm"),s=Kt.trace.setSpan(Kt.context.active(),i);yield*Te(s,this,async function*(){let a=async function*(){for await(let c of this.callLlmAsync(t,o,r))for await(let l of this.postprocess(t,o,c,r))r.id=Pn(),r.timestamp=new Date().getTime(),yield l};yield*this.runAndHandleError(a.call(this),t,o,r)}),i.end()}async*postprocess(t,o,r,i){var f,d;for(let p of this.responseProcessors)for await(let m of p.runAsync(t,r))yield m;if(!r.content&&!r.errorCode&&!r.interrupted)return;let s=A({...i,...r});if(s.content){let p=w(s);p!=null&&p.length&&(Nr(s),s.longRunningToolIds=Array.from(Br(p,o.toolsDict)))}if(yield s,!((f=w(s))!=null&&f.length))return;if((d=t.runConfig)!=null&&d.pauseOnToolCalls){t.endInvocation=!0;return}let a=await Fr({invocationContext:t,functionCallEvent:s,toolsDict:o.toolsDict,beforeToolCallbacks:this.canonicalBeforeToolCallbacks,afterToolCallbacks:this.canonicalAfterToolCallbacks});if(!a)return;let c=Yn(t,a);c&&(yield c);let l=Jn({invocationContext:t,functionCallEvent:s,functionResponseEvent:a});if(l){yield l,t.endInvocation=!0;return}yield a;let u=a.actions.transferToAgent;if(u){let p=this.getAgentByName(t,u);for await(let m of p.runAsync(t))yield m}}getAgentByName(t,o){let i=t.agent.rootAgent.findAgent(o);if(!i)throw new Error(`Agent ${o} not found in the agent tree.`);return i}async*callLlmAsync(t,o,r){var a,c,l,u,f;let i=await this.handleBeforeModelCallback(t,o,r);if(i){yield i;return}(a=o.config)!=null||(o.config={}),(l=(c=o.config).labels)!=null||(c.labels={}),o.config.labels[Ci]||(o.config.labels[Ci]=this.name);let s=this.canonicalModel;if((u=t.runConfig)!=null&&u.supportCfc)throw new Error("CFC is not yet supported in callLlmAsync");{t.incrementLlmCallCount();let d=s.generateContentAsync(o,((f=t.runConfig)==null?void 0:f.streamingMode)==="sse");for await(let p of d){nr({invocationContext:t,eventId:r.id,llmRequest:o,llmResponse:p});let m=await this.handleAfterModelCallback(t,p,r);yield m!=null?m:p}}}async handleBeforeModelCallback(t,o,r){let i=new D({invocationContext:t,eventActions:r.actions}),s=await t.pluginManager.runBeforeModelCallback({callbackContext:i,llmRequest:o});if(s)return s;for(let a of this.canonicalBeforeModelCallbacks){let c=await a({context:i,request:o});if(c)return c}}async handleAfterModelCallback(t,o,r){let i=new D({invocationContext:t,eventActions:r.actions}),s=await t.pluginManager.runAfterModelCallback({callbackContext:i,llmResponse:o});if(s)return s;for(let a of this.canonicalAfterModelCallbacks){let c=await a({context:i,response:o});if(c)return c}}async*runAndHandleError(t,o,r,i){try{for await(let s of t)yield s}catch(s){let a=new D({invocationContext:o,eventActions:i.actions});if(s instanceof Error){let c=await o.pluginManager.runOnModelErrorCallback({callbackContext:a,llmRequest:r,error:s});if(c)yield c;else{let l="UNKNOWN_ERROR",u=s.message;try{let f=JSON.parse(s.message);f!=null&&f.error&&(l=String(f.error.code||"UNKNOWN_ERROR"),u=f.error.message||u)}catch{}i.actions?yield A({invocationId:o.invocationId,author:this.name,errorCode:l,errorMessage:u}):yield{errorCode:l,errorMessage:u}}}else throw g.error("Unknown error during response generation",s),s}}};var Ao=Symbol.for("google.adk.loopAgent");function Le(n){return typeof n=="object"&&n!==null&&Ao in n&&n[Ao]===!0}var xi,yi,Xt=class extends(yi=$,xi=Ao,yi){constructor(t){var o;super(t);this[xi]=!0;this.maxIterations=(o=t.maxIterations)!=null?o:Number.MAX_SAFE_INTEGER}async*runAsyncImpl(t){let o=0;for(;o<this.maxIterations;){for(let r of this.subAgents){let i=!1;for await(let s of r.runAsync(t))yield s,s.actions.escalate&&(i=!0);if(i)return}o++}}async*runLiveImpl(t){throw new Error("This is not supported yet for LoopAgent.")}};var Eo=Symbol.for("google.adk.parallelAgent");function Oe(n){return typeof n=="object"&&n!==null&&Eo in n&&n[Eo]===!0}var Ti,Si,Yt=class extends(Si=$,Ti=Eo,Si){constructor(){super(...arguments);this[Ti]=!0}async*runAsyncImpl(t){let o=this.subAgents.map(r=>r.runAsync(Ka(this,r,t)));for await(let r of Xa(o))yield r}async*runLiveImpl(t){throw new Error("This is not supported yet for ParallelAgent.")}};function Ka(n,e,t){let o=new V(t),r=`${n.name}.${e.name}`;return o.branch=o.branch?`${o.branch}.${r}`:r,o}async function*Xa(n){let e=new Map;for(let[t,o]of n.entries()){let r=o.next().then(i=>({result:i,index:t}));e.set(t,r)}for(;e.size>0;){let{result:t,index:o}=await Promise.race(e.values());if(t.done){e.delete(o);continue}yield t.value;let r=n[o].next().then(i=>({result:i,index:o}));e.set(o,r)}}var xo="task_completed",yo=Symbol.for("google.adk.sequentialAgent");function Me(n){return typeof n=="object"&&n!==null&&yo in n&&n[yo]===!0}var Ri,Ii,Jt=class extends(Ii=$,Ri=yo,Ii){constructor(){super(...arguments);this[Ri]=!0}async*runAsyncImpl(t){for(let o of this.subAgents)for await(let r of o.runAsync(t))yield r}async*runLiveImpl(t){for(let o of this.subAgents)x(o)&&((await o.canonicalTools(new b(t))).some(s=>s.name===xo)||(o.tools.push(new ne({name:xo,description:"Signals that the model has successfully completed the user's question or task.",execute:()=>"Task completion signaled."})),o.instruction+=`If you finished the user's request according to its description, call the ${xo} 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 o of this.subAgents)for await(let r of o.runLive(t))yield r}};var To=Symbol.for("google.adk.baseToolset");function Qt(n){return typeof n=="object"&&n!==null&&To in n&&n[To]===!0}var wi;wi=To;var He=class{constructor(e,t){this.toolFilter=e;this.prefix=t;this[wi]=!0}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){}};async function Zt(n){if(typeof n=="object")return n;let e=n;if(e.startsWith("http://")||e.startsWith("https://"))return await new _i.DefaultAgentCardResolver().resolve(e);try{let t=await Li.readFile(e,"utf-8");return JSON.parse(t)}catch(t){throw new Error(`Failed to read agent card from file ${e}: ${t.message}`)}}async function en(n,e){return{name:n.name,description:n.description||"",protocolVersion:"0.3.0",version:"1.0.0",skills:await Ya(n),url:e[0].url,preferredTransport:e[0].transport,capabilities:{extensions:[],stateTransitionHistory:!1,pushNotifications:!1,streaming:!0},defaultInputModes:["text"],defaultOutputModes:["text"],additionalInterfaces:e}}async function Ya(n){let[e,t]=await Promise.all([Oi(n),Ja(n)]);return[...e,...t]}async function Oi(n){return x(n)?Qa(n):Za(n)}async function Ja(n){let e=n.subAgents,t=[];for(let o of e){let r=await Oi(o);for(let i of r){let s={id:`${o.name}_${i.id}`,name:`${o.name}: ${i.name}`,description:i.description,tags:[`sub_agent:${o.name}`,...i.tags]};t.push(s)}}return t}async function Qa(n){let e=[{id:n.name,name:"model",description:await rc(n),tags:["llm"]}];if(n.tools&&n.tools.length>0){for(let t of n.tools)if(Ge(t))e.push(bi(n.name,t));else if(Qt(t)){let o=await t.getTools();for(let r of o)e.push(bi(n.name,r))}}return e}function bi(n,e){let t=e.description;return t||(t=`Tool: ${e.name}`),{id:`${n}-${e.name}`,name:e.name,description:t,tags:["llm","tools"]}}function Za(n){let e=[{id:n.name,name:ic(n),description:ec(n),tags:[Pi(n)]}],t=n.subAgents;if(t.length>0){let o=t.map(r=>r.description||"No description");e.push({id:`${n.name}-sub-agents`,name:"sub-agents",description:`Orchestrates: ${o.join("; ")}`,tags:[Pi(n),"orchestration"]})}return e}function ec(n){let e=[];return n.description&&e.push(n.description),n.subAgents.length>0&&(Le(n)?e.push(oc(n)):Oe(n)?e.push(nc(n)):Me(n)&&e.push(tc(n))),e.length>0?e.join(" "):Mi(n)}function tc(n){let e=n.subAgents,t=[];return e.forEach((o,r)=>{let i=o.description;i||(i=`execute the ${o.name} agent`),r===0?t.push(`First, this agent will ${i}.`):r===e.length-1?t.push(`Finally, this agent will ${i}.`):t.push(`Then, this agent will ${i}.`)}),t.join(" ")}function nc(n){let e=n.subAgents,t=[];return e.forEach((o,r)=>{let i=o.description;i||(i=`execute the ${o.name} agent`),r===0?t.push(`This agent will ${i}`):r===e.length-1?t.push(`and ${i}`):t.push(`, ${i}`)}),`${t.join(" ")} simultaneously.`}function oc(n){let e=n.maxIterations,t="unlimited";typeof e=="number"&&e<Number.MAX_SAFE_INTEGER&&(t=e.toString());let o=n.subAgents,r=[];return o.forEach((i,s)=>{let a=i.description;a||(a=`execute the ${i.name} agent`),s===0?r.push(`This agent will ${a}`):s===o.length-1?r.push(`and ${a}`):r.push(`, ${a}`)}),`${r.join(" ")} in a loop (max ${t} iterations).`}async function rc(n){let e=[];if(n.description&&e.push(n.description),n.instruction){let o;if(typeof n.instruction=="function"){let r=new b(new V({agent:n}));try{o=await n.instruction(r)}catch(i){g.warn("Failed to resolve dynamic instruction for AgentCard",i),o=""}}else o=n.instruction;o&&e.push(ki(o))}let t=n.rootAgent;if(x(t)&&t.globalInstruction){let o;if(typeof t.globalInstruction=="function"){let r=new b(new V({agent:n}));try{o=await t.globalInstruction(r)}catch(i){g.warn("Failed to resolve dynamic global instruction for AgentCard",i),o=""}}else o=t.globalInstruction;o&&e.push(ki(o))}return e.length>0?e.join(" "):Mi(n)}function ki(n){let e=[{original:"you were",target:"I was"},{original:"you are",target:"I am"},{original:"you're",target:"I am"},{original:"you've",target:"I have"},{original:"yours",target:"mine"},{original:"your",target:"my"},{original:"you",target:"I"}],t=n;for(let o of e){let r=new RegExp(`\\b${o.original}\\b`,"gi");t=t.replace(r,o.target)}return t}function Mi(n){return Le(n)?"A loop workflow agent":Me(n)?"A sequential workflow agent":Oe(n)?"A parallel workflow agent":x(n)?"An LLM-based agent":"A custom agent"}function Pi(n){return Le(n)?"loop_workflow":Me(n)?"sequential_workflow":Oe(n)?"parallel_workflow":x(n)?"llm_agent":"custom_agent"}function ic(n){return x(n)?"model":sc(n)?"workflow":"custom"}function sc(n){return Le(n)||Me(n)||Oe(n)}var ve=require("@google/genai");function So(n,e,t){if(Fn(n))return cc(n,e,t);if(ee(n))return dc(n,e,t);if(it(n))return lc(n,e,t);if(ge(n))return n.final?uc(n,e,t):fc(n,e,t)}function cc(n,e,t,o){let r=te(n.parts);return{...Ct(o||n),invocationId:e,author:n.role==="user"?"user":t,content:n.role==="user"?(0,ve.createUserContent)(r):(0,ve.createModelContent)(r),turnComplete:!0,partial:!1}}function lc(n,e,t){var i;let o=((i=n.artifact)==null?void 0:i.parts)||[];if(o.length===0)return;let r=!!Mt(n)[v.PARTIAL]||n.append||!n.lastChunk;return{...Ct(n),invocationId:e,author:t,content:(0,ve.createModelContent)(te(o)),longRunningToolIds:tn(o),partial:r}}function uc(n,e,t){var a;let o=((a=n.status.message)==null?void 0:a.parts)||[];if(o.length===0)return;let r=te(o),i=Nt(n),s=!i&&r.length>0;return{...Ct(n),invocationId:e,author:t,errorMessage:i?Un(n):void 0,content:s?(0,ve.createModelContent)(r):void 0,longRunningToolIds:tn(o),turnComplete:!0}}function fc(n,e,t){let o=n.status.message;if(!o)return;let r=te(o.parts);return{...Ct(n),invocationId:e,author:t,content:(0,ve.createModelContent)(r),turnComplete:!1,partial:!0}}function dc(n,e,t){var a,c;let o=[],r=[];if(n.artifacts){for(let l of n.artifacts)if(((a=l.parts)==null?void 0:a.length)>0){let u=te(l.parts);o.push(...u),r.push(...tn(l.parts))}}if((c=n.status)!=null&&c.message){let l=n.status.message.parts,u=te(l);o.push(...u),r.push(...tn(l))}let i=fr(n)||Dt(n),s=Nt(n);if(!(o.length===0&&!i))return{...Ct(n),invocationId:e,author:t,content:s?void 0:(0,ve.createModelContent)(o),errorMessage:s?Un(n):void 0,longRunningToolIds:r,turnComplete:i}}function Ct(n){let e=n.metadata||{};return A({branch:e[v.BRANCH],author:e[v.AUTHOR],partial:e[v.PARTIAL],errorCode:e[v.ERROR_CODE],errorMessage:e[v.ERROR_MESSAGE],citationMetadata:e[v.CITATION_METADATA],groundingMetadata:e[v.GROUNDING_METADATA],usageMetadata:e[v.USAGE_METADATA],customMetadata:e[v.CUSTOM_METADATA],actions:F({escalate:!!e[v.ESCALATE],transferToAgent:e[v.TRANSFER_TO_AGENT]})})}function tn(n){let e=[];for(let t of n)if(t.metadata&&t.metadata[v.IS_LONG_RUNNING]){let o=$n(t);o.functionCall&&o.functionCall.id&&e.push(o.functionCall.id)}return e}var nn=class extends ${constructor(t){super(t);this.a2aConfig=t;this.isInitialized=!1;if(!t.agentCard&&!t.client)throw new Error("Either AgentCard or Client must be provided")}async init(){if(!this.isInitialized){if(this.a2aConfig.client&&(this.client=this.a2aConfig.client),this.a2aConfig.agentCard&&(this.card=await Zt(this.a2aConfig.agentCard),!this.client)){let t=this.a2aConfig.clientFactory||new Ni.ClientFactory;this.client=await t.createFromAgentCard(this.card)}this.isInitialized=!0}}async*runAsyncImpl(t){var o,r;await this.init();try{let i=t.session.events;if(i.length===0)throw new Error("No events in session to send");let s=xr(t.session,i.length-1),a,c,l;if(s){let m=s.response;a=ae(((o=m.content)==null?void 0:o.parts)||[],m.longRunningToolIds),c=s.taskId,l=s.contextId}else{let m=yr(t,t.session);a=m.parts,l=m.contextId}let u={kind:"message",messageId:P(),role:"user",parts:a,metadata:he({appName:t.session.appName,userId:t.session.userId,sessionId:t.session.id})};c&&(u.taskId=c),l&&(u.contextId=l);let f={message:u,configuration:this.a2aConfig.messageSendConfig},d=new Ft(f);if(this.a2aConfig.beforeRequestCallbacks)for(let m of this.a2aConfig.beforeRequestCallbacks)await m(t,f);if(this.card?((r=this.card.capabilities)==null?void 0:r.streaming)!==!1:!0)for await(let m of this.client.sendMessageStream(f)){if(this.a2aConfig.afterRequestCallbacks)for(let S of this.a2aConfig.afterRequestCallbacks)await S(t,m);let h=So(m,t.invocationId,this.name);if(!h)continue;d.updateCustomMetadata(h,m);let C=d.aggregatePartial(t,m,h);for(let S of C)yield S}else{let m=await this.client.sendMessage(f);if(this.a2aConfig.afterRequestCallbacks)for(let C of this.a2aConfig.afterRequestCallbacks)await C(t,m);let h=So(m,t.invocationId,this.name);h&&(d.updateCustomMetadata(h,m),yield h)}}catch(i){let s=i;g.error(`A2ARemoteAgent ${this.name} failed:`,s),yield A({author:this.name,invocationId:t.invocationId,errorMessage:s.message,turnComplete:!0})}}runLiveImpl(t){throw new Error("Live mode is not supported in A2ARemoteAgent yet.")}};var Bi=require("@google/genai"),on=require("@opentelemetry/api");var We=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 '${e.name}' already registered.`);if(Array.from(this.plugins).some(t=>t.name===e.name))throw new Error(`Plugin with name '${e.name}' already registered.`);this.plugins.add(e),g.info(`Plugin '${e.name}' registered.`)}getPlugin(e){return Array.from(this.plugins).find(t=>t.name===e)}async runCallbacks(e,t,o){for(let r of e)try{let i=await t(r);if(i!==void 0)return g.debug(`Plugin '${r.name}' returned a value for callback '${o}', exiting early.`),i}catch(i){let s=`Error in plugin '${r.name}' during '${o}' callback: ${i}`;throw g.error(s),new Error(s)}}async runOnUserMessageCallback({userMessage:e,invocationContext:t}){return await this.runCallbacks(this.plugins,o=>o.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,o=>o.onEventCallback({invocationContext:e,event:t}),"onEventCallback")}async runBeforeAgentCallback({agent:e,callbackContext:t}){return await this.runCallbacks(this.plugins,o=>o.beforeAgentCallback({agent:e,callbackContext:t}),"beforeAgentCallback")}async runAfterAgentCallback({agent:e,callbackContext:t}){return await this.runCallbacks(this.plugins,o=>o.afterAgentCallback({agent:e,callbackContext:t}),"afterAgentCallback")}async runBeforeToolCallback({tool:e,toolArgs:t,toolContext:o}){return await this.runCallbacks(this.plugins,r=>r.beforeToolCallback({tool:e,toolArgs:t,toolContext:o}),"beforeToolCallback")}async runAfterToolCallback({tool:e,toolArgs:t,toolContext:o,result:r}){return await this.runCallbacks(this.plugins,i=>i.afterToolCallback({tool:e,toolArgs:t,toolContext:o,result:r}),"afterToolCallback")}async runOnModelErrorCallback({callbackContext:e,llmRequest:t,error:o}){return await this.runCallbacks(this.plugins,r=>r.onModelErrorCallback({callbackContext:e,llmRequest:t,error:o}),"onModelErrorCallback")}async runBeforeModelCallback({callbackContext:e,llmRequest:t}){return await this.runCallbacks(this.plugins,o=>o.beforeModelCallback({callbackContext:e,llmRequest:t}),"beforeModelCallback")}async runAfterModelCallback({callbackContext:e,llmResponse:t}){return await this.runCallbacks(this.plugins,o=>o.afterModelCallback({callbackContext:e,llmResponse:t}),"afterModelCallback")}async runOnToolErrorCallback({tool:e,toolArgs:t,toolContext:o,error:r}){return await this.runCallbacks(this.plugins,i=>i.onToolErrorCallback({tool:e,toolArgs:t,toolContext:o,error:r}),"onToolErrorCallback")}};var Io=Symbol.for("google.adk.runner");function rn(n){return typeof n=="object"&&n!==null&&Io in n&&n[Io]===!0}var Di;Di=Io;var oe=class{constructor(e){this[Di]=!0;var t;this.appName=e.appName,this.agent=e.agent,this.pluginManager=new We((t=e.plugins)!=null?t:[]),this.artifactService=e.artifactService,this.sessionService=e.sessionService,this.memoryService=e.memoryService,this.credentialService=e.credentialService}async*runEphemeral(e){let o=(await this.sessionService.createSession({appName:this.appName,userId:e.userId})).id;try{yield*this.runAsync({userId:e.userId,sessionId:o,newMessage:e.newMessage,stateDelta:e.stateDelta,runConfig:e.runConfig})}finally{await this.sessionService.deleteSession({appName:this.appName,userId:e.userId,sessionId:o})}}async*runAsync(e){let{userId:t,sessionId:o,stateDelta:r}=e,i=hi(e.runConfig),s=e.newMessage,a=Z.startSpan("invocation"),c=on.trace.setSpan(on.context.active(),a);try{yield*Te(c,this,async function*(){var d;let l=await this.sessionService.getSession({appName:this.appName,userId:t,sessionId:o});if(!l)throw this.appName?new Error(`Session not found: ${o}`):new Error("Session lookup failed: appName must be provided in runner constructor");if(i.supportCfc&&x(this.agent)){let p=this.agent.canonicalModel.model;if(!je(p))throw new Error(`CFC is not supported for model: ${p} in agent: ${this.agent.name}`);ft(this.agent.codeExecutor)||(this.agent.codeExecutor=new ze)}let u=new V({artifactService:this.artifactService,sessionService:this.sessionService,memoryService:this.memoryService,credentialService:this.credentialService,invocationId:ir(),agent:this.agent,session:l,userContent:s,runConfig:i,pluginManager:this.pluginManager}),f=await this.pluginManager.runOnUserMessageCallback({userMessage:s,invocationContext:u});if(f&&(s=f),s){if(!((d=s.parts)!=null&&d.length))throw new Error("No parts in the newMessage.");i.saveInputBlobsAsArtifacts&&await this.saveArtifacts(u.invocationId,l.userId,l.id,s),await this.sessionService.appendEvent({session:l,event:A({invocationId:u.invocationId,author:"user",actions:r?F({stateDelta:r}):void 0,content:s})})}if(u.agent=this.determineAgentForResumption(l,this.agent),s){let p=await this.pluginManager.runBeforeRunCallback({invocationContext:u});if(p){let m=A({invocationId:u.invocationId,author:"model",content:p});await this.sessionService.appendEvent({session:l,event:m}),yield m}else{for await(let m of u.agent.runAsync(u)){m.partial||await this.sessionService.appendEvent({session:l,event:m});let h=await this.pluginManager.runOnEventCallback({invocationContext:u,event:m});h?yield h:yield m}await this.pluginManager.runAfterRunCallback({invocationContext:u})}}})}finally{a.end()}}async saveArtifacts(e,t,o,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_${e}_${s}`;await this.artifactService.saveArtifact({appName:this.appName,userId:t,sessionId:o,filename:c,artifact:a}),r.parts[s]=(0,Bi.createPartFromText)(`Uploaded file: ${c}. It is saved into artifacts`)}}determineAgentForResumption(e,t){let o=pc(e.events);if(o&&o.author)return t.findAgent(o.author)||t;for(let r=e.events.length-1;r>=0;r--){g.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){g.warn(`Event from an unknown agent: ${i.author}, event id: ${i.id}`);continue}if(this.isRoutableLlmAgent(s))return s}return t}isRoutableLlmAgent(e){let t=e;for(;t;){if(!x(t)||t.disallowTransferToParent)return!1;t=t.parentAgent}return!0}};function pc(n){var o,r,i,s;if(!n.length)return null;let t=(s=(i=(r=(o=n[n.length-1].content)==null?void 0:o.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=n.length-2;a>=0;a--){let c=n[a],l=w(c);if(l){for(let u of l)if(u.id===t)return c}}return null}function Fi(n,e){var r,i;let t=F();for(let s of n){if(s.errorCode||s.errorMessage)return Bt({taskId:e.requestContext.taskId,contextId:e.requestContext.contextId,error:new Error(s.errorMessage||s.errorCode),metadata:{...at(s,e),...ct(t)}});t.escalate=t.escalate||((r=s.actions)==null?void 0:r.escalate),(i=s.actions)!=null&&i.transferToAgent&&(t.transferToAgent=s.actions.transferToAgent)}let o=mc(n,e);return o?{...o,metadata:{...o.metadata,...ct(t)}}:mr({taskId:e.requestContext.taskId,contextId:e.requestContext.contextId,metadata:{...he(e),...ct(t)}})}function mc(n,e){var r,i;let t=[],o=new Set;for(let s of n)if((i=(r=s.content)==null?void 0:r.parts)!=null&&i.length)for(let a of s.content.parts){let c=gc(a,s.longRunningToolIds,t);!c||o.has(c)||(t.push(a),o.add(c))}if(t.length>0)return hr({taskId:e.requestContext.taskId,contextId:e.requestContext.contextId,parts:ae(t,[...o]),metadata:he(e)})}function gc(n,e=[],t=[]){var i,s,a;let o=(i=n.functionCall)==null?void 0:i.id,r=(s=n.functionResponse)==null?void 0:s.id;if(!(!o&&!r)){if(o&&e.includes(o))return o;if(r&&e.includes(r))return r;for(let c of t)if(((a=c.functionCall)==null?void 0:a.id)===r)return r}}function Ui(n,e){var r;if(!n||!Dt(n)||!n.status.message)return;let t=n.status.message,o=te(t.parts);for(let i of o){let s=(r=i.functionCall)==null?void 0:r.id;if(!s)continue;if(!((e==null?void 0:e.parts)||[]).some(c=>{var l;return((l=c.functionResponse)==null?void 0:l.id)===s}))return Cr({taskId:n.id,contextId:n.contextId,parts:[...t.parts.filter(c=>{var l;return!((l=c.metadata)!=null&&l.validation_error)}),{kind:"text",text:`No input provided for function call id ${s}`,metadata:{validation_error:!0}}]})}}function $i({session:n,userContent:e,requestContext:t}){return{userId:n.userId,sessionId:n.id,appName:n.appName,readonlyState:n.state,events:n.events,userContent:e,requestContext:t}}var Ke=class{constructor(e){this.config=e;this.agentPartialArtifactIdsMap={}}async execute(e,t){var u,f;let o=e.userMessage;if(!o)throw new Error("message not provided");let r=`A2A_USER_${e.contextId}`,i=e.contextId,s=Er(o),a=await Gi(this.config.runner),c=await hc(r,i,a.sessionService,a.appName),l=$i({session:c,userContent:s,requestContext:e});try{if(this.config.beforeExecuteCallback&&await this.config.beforeExecuteCallback(e),e.task){let p=Ui(e.task,s);if(p){await this.publishFinalTaskStatus({executorContext:l,eventBus:t,event:p});return}}e.task||t.publish(dr({taskId:e.taskId,contextId:e.contextId,message:o})),t.publish(pr({taskId:e.taskId,contextId:e.contextId}));let d=[];for await(let p of a.runAsync({userId:r,sessionId:i,newMessage:s,runConfig:this.config.runConfig})){d.push(p);let m=this.convertAdkEventToA2AEvent(p,l);m&&(await((f=(u=this.config).afterEventCallback)==null?void 0:f.call(u,l,p,m)),t.publish(m))}await this.publishFinalTaskStatus({executorContext:l,eventBus:t,event:Fi(d,l)})}catch(d){let p=d;await this.publishFinalTaskStatus({executorContext:l,eventBus:t,error:p,event:Bt({taskId:e.taskId,contextId:e.contextId,error:new Error(`Agent run failed: ${p.message}`),metadata:he(l)})})}}async cancelTask(e){throw new Error("Task cancellation is not supported yet.")}convertAdkEventToA2AEvent(e,t){var s;let o=ae((s=e.content)==null?void 0:s.parts,e.longRunningToolIds);if(o.length===0)return;let r=this.agentPartialArtifactIdsMap[e.author]||P(),i=gr({taskId:t.requestContext.taskId,contextId:t.requestContext.contextId,artifactId:r,parts:o,metadata:at(e,t),append:e.partial,lastChunk:!e.partial});return e.partial?this.agentPartialArtifactIdsMap[e.author]=r:delete this.agentPartialArtifactIdsMap[e.author],i}async publishFinalTaskStatus({executorContext:e,eventBus:t,event:o,error:r}){var i,s;try{await((s=(i=this.config).afterExecuteCallback)==null?void 0:s.call(i,e,o,r))}catch(a){g.error("Error in afterExecuteCallback:",a)}t.publish(o)}};async function hc(n,e,t,o){let r=await t.getSession({appName:o,userId:n,sessionId:e});return r||t.createSession({appName:o,userId:n,sessionId:e})}async function Gi(n){if(typeof n=="function"){let e=await n();return Gi(e)}return rn(n)?n:new oe(n)}var ji=require("@a2a-js/sdk"),cn=require("@a2a-js/sdk/server"),fe=require("@a2a-js/sdk/server/express"),an=J(require("express"),1);var wo=require("lodash-es");var qi=require("lodash-es");var Ae=class{async getOrCreateSession(e){if(!e.sessionId)return this.createSession(e);let t=await this.getSession({appName:e.appName,userId:e.userId,sessionId:e.sessionId});return t||this.createSession(e)}async appendEvent({session:e,event:t}){return t.partial||(t=sn(t),this.updateSessionState({session:e,event:t}),e.events.push(t)),t}updateSessionState({session:e,event:t}){if(!(!t.actions||!t.actions.stateDelta))for(let[o,r]of Object.entries(t.actions.stateDelta))o.startsWith(E.TEMP_PREFIX)||(e.state[o]=r)}};function sn(n){if(!n.actions||!n.actions.stateDelta)return n;let e=n.actions.stateDelta,t={};for(let[o,r]of Object.entries(e))o.startsWith(E.TEMP_PREFIX)||(t[o]=r);return n.actions.stateDelta=t,n}function re(n={},e={},t={}){let o=(0,qi.cloneDeep)(t);for(let[r,i]of Object.entries(n))o[E.APP_PREFIX+r]=i;for(let[r,i]of Object.entries(e))o[E.USER_PREFIX+r]=i;return o}function ue(n){return{id:n.id,appName:n.appName,userId:n.userId||"",state:n.state||{},events:n.events||[],lastUpdateTime:n.lastUpdateTime||0}}function Vi(n){return n==="memory://"}var W=class extends Ae{constructor(){super(...arguments);this.sessions={};this.userState={};this.appState={}}async createSession({appName:t,userId:o,state:r,sessionId:i}){var c;let s=ue({id:i||P(),appName:t,userId:o,state:r,events:[],lastUpdateTime:Date.now()});this.sessions[t]||(this.sessions[t]={}),this.sessions[t][o]||(this.sessions[t][o]={}),this.sessions[t][o][s.id]=s;let a=(0,wo.cloneDeep)(s);return a.state=re(this.appState[t],(c=this.userState[t])==null?void 0:c[o],a.state),a}async getSession({appName:t,userId:o,sessionId:r,config:i}){var c;if(!this.sessions[t]||!this.sessions[t][o]||!this.sessions[t][o][r])return Promise.resolve(void 0);let s=this.sessions[t][o][r],a=(0,wo.cloneDeep)(s);if(i&&(i.numRecentEvents&&(a.events=a.events.slice(-i.numRecentEvents)),i.afterTimestamp)){let l=a.events.length-1;for(;l>=0&&!(a.events[l].timestamp<i.afterTimestamp);)l--;l>=0&&(a.events=a.events.slice(l+1))}return a.state=re(this.appState[t],(c=this.userState[t])==null?void 0:c[o],a.state),a}listSessions({appName:t,userId:o}){if(!this.sessions[t]||!this.sessions[t][o])return Promise.resolve({sessions:[]});let r=[];for(let i of Object.values(this.sessions[t][o]))r.push(ue({id:i.id,appName:i.appName,userId:i.userId,state:{},events:[],lastUpdateTime:i.lastUpdateTime}));return Promise.resolve({sessions:r})}async deleteSession({appName:t,userId:o,sessionId:r}){await this.getSession({appName:t,userId:o,sessionId:r})&&delete this.sessions[t][o][r]}async appendEvent({session:t,event:o}){await super.appendEvent({session:t,event:o}),t.lastUpdateTime=o.timestamp;let r=t.appName,i=t.userId,s=t.id,a=l=>{g.warn(`Failed to append event to session ${s}: ${l}`)};if(!this.sessions[r])return a(`appName ${r} not in sessions`),o;if(!this.sessions[r][i])return a(`userId ${i} not in sessions[appName]`),o;if(!this.sessions[r][i][s])return a(`sessionId ${s} not in sessions[appName][userId]`),o;if(o.actions&&o.actions.stateDelta)for(let l of Object.keys(o.actions.stateDelta))l.startsWith(E.APP_PREFIX)&&(this.appState[r]=this.appState[r]||{},this.appState[r][l.replace(E.APP_PREFIX,"")]=o.actions.stateDelta[l]),l.startsWith(E.USER_PREFIX)&&(this.userState[r]=this.userState[r]||{},this.userState[r][i]=this.userState[r][i]||{},this.userState[r][i][l.replace(E.USER_PREFIX,"")]=o.actions.stateDelta[l]);let c=this.sessions[r][i][s];return await super.appendEvent({session:c,event:o}),c.lastUpdateTime=o.timestamp,o}};async function zi(n,e={}){var f,d,p,m;let t=(f=e.host)!=null?f:"localhost",o=(d=e.port)!=null?d:8e3,r=(p=e.protocol)!=null?p:"http",i=e.basePath||"",s=`${r}://${t}:${o}${i}`,a=e.agentCard?await Zt(e.agentCard):await en(n,[{url:`${s}/jsonrpc`,transport:"JSONRPC"},{url:`${s}/rest`,transport:"HTTP+JSON"}]),c=new Ke({runner:e.runner||{agent:n,appName:n.name,sessionService:e.sessionService||new W,memoryService:e.memoryService,artifactService:e.artifactService},runConfig:{streamingMode:"sse"}}),l=new cn.DefaultRequestHandler(a,new cn.InMemoryTaskStore,c),u=(m=e.app)!=null?m:(0,an.default)();return e.app||(u.use(an.default.urlencoded({limit:"50mb",extended:!0})),u.use(an.default.json({limit:"50mb"}))),u.use(`${i}/${ji.AGENT_CARD_PATH}`,(0,fe.agentCardHandler)({agentCardProvider:l})),u.use(`${i}/rest`,(0,fe.restHandler)({requestHandler:l,userBuilder:fe.UserBuilder.noAuthentication})),u.use(`${i}/jsonrpc`,(0,fe.jsonRpcHandler)({requestHandler:l,userBuilder:fe.UserBuilder.noAuthentication})),u}var L=J(require("fs/promises"),1),y=J(require("path"),1),vt=require("url");var un="user:",Ye=class{constructor(e){try{let t=e.startsWith("file://")?(0,vt.fileURLToPath)(e):e;this.rootDir=y.resolve(t)}catch(t){throw new Error(`Invalid root directory: ${e}`,{cause:t})}}async saveArtifact({userId:e,sessionId:t,filename:o,artifact:r,customMetadata:i}){if(!r.inlineData&&!r.text)throw new Error("Artifact must have either inlineData or text content.");let s=Ne(this.rootDir,e,t,o);await L.mkdir(s,{recursive:!0});let a=await Xe(s),c=a.length>0?a[a.length-1]+1:0,l=De(s),u=y.join(l,c.toString());await L.mkdir(u,{recursive:!0});let f=y.basename(s),d=y.join(u,f),p;if(r.inlineData){let C=r.inlineData.data||"";await L.writeFile(d,Buffer.from(C,"base64")),p=r.inlineData.mimeType||"application/octet-stream"}else r.text!==void 0&&await L.writeFile(d,r.text,"utf-8");let m=await Ac(this.rootDir,e,t,o,c),h={fileName:o,mimeType:p,version:c,canonicalUri:m,customMetadata:i};return await Ec(y.join(u,"metadata.json"),h),c}async loadArtifact({userId:e,sessionId:t,filename:o,version:r}){try{let i=Ne(this.rootDir,e,t,o);try{await L.access(i)}catch(p){g.warn(`[FileArtifactService] loadArtifact: Artifact ${o} not found`,p);return}let s=await Xe(i);if(s.length===0)return;let a;if(r===void 0)a=s[s.length-1];else{if(!s.includes(r)){g.warn(`[FileArtifactService] loadArtifact: Artifact ${o} version ${r} not found`);return}a=r}let c=y.join(De(i),a.toString()),l=y.join(c,"metadata.json"),u=await ln(l),f=y.basename(i),d=y.join(c,f);if(u.canonicalUri){let p=xc(u.canonicalUri);if(p)try{await L.access(p),d=p}catch{g.warn(`[FileArtifactService] loadArtifact: Artifact ${o} missing at ${p}, falling back to content path ${d}`)}}if(u.mimeType)try{let p=await L.readFile(d);return{inlineData:{mimeType:u.mimeType,data:p.toString("base64")}}}catch{g.warn(`[FileArtifactService] loadArtifact: Artifact ${o} missing at ${d}`);return}try{return{text:await L.readFile(d,"utf-8")}}catch{g.warn(`[FileArtifactService] loadArtifact: Text artifact ${o} missing at ${d}`);return}}catch(i){g.error(`[FileArtifactService] loadArtifact: Error loading artifact ${o}`,i);return}}async listArtifactKeys({userId:e,sessionId:t}){let o=new Set,r=Yi(this.rootDir,e),i=Qi(r,t);for await(let a of bo(i)){let c=await Hi(a);if(c!=null&&c.fileName)o.add(c.fileName);else{let l=y.relative(i,a);o.add(Wi(l))}}let s=Ji(r);for await(let a of bo(s)){let c=await Hi(a);if(c!=null&&c.fileName)o.add(c.fileName);else{let l=y.relative(s,a);o.add(`${un}${Wi(l)}`)}}return Array.from(o).sort()}async deleteArtifact({userId:e,sessionId:t,filename:o}){try{let r=Ne(this.rootDir,e,t,o);await L.rm(r,{recursive:!0,force:!0})}catch(r){g.warn(`[FileArtifactService] deleteArtifact: Failed to delete artifact ${o}`,r)}}async listVersions({userId:e,sessionId:t,filename:o}){try{let r=Ne(this.rootDir,e,t,o);return await Xe(r)}catch(r){return g.warn(`[FileArtifactService] listVersions: Failed to list versions for artifact ${o}`,r),[]}}async listArtifactVersions({userId:e,sessionId:t,filename:o}){try{let r=Ne(this.rootDir,e,t,o),i=await Xe(r),s=[];for(let a of i){let c=y.join(De(r),a.toString(),"metadata.json");try{let l=await ln(c);s.push(l)}catch(l){g.warn(`[FileArtifactService] listArtifactVersions: Failed to read artifact version ${a} at ${r}`,l)}}return s}catch(r){return g.warn(`[FileArtifactService] listArtifactVersions: Failed to list artifact versions for userId: ${e} sessionId: ${t} filename: ${o}`,r),[]}}async getArtifactVersion({userId:e,sessionId:t,filename:o,version:r}){try{let i=Ne(this.rootDir,e,t,o),s=await Xe(i);if(s.length===0)return;let a;if(r===void 0)a=s[s.length-1];else{if(!s.includes(r))return;a=r}let c=y.join(De(i),a.toString(),"metadata.json");return await ln(c)}catch(i){g.warn(`[FileArtifactService] getArtifactVersion: Failed to get artifact version for userId: ${e} sessionId: ${t} filename: ${o} version: ${r}`,i);return}}},Cc=/^[a-zA-Z0-9_@-][a-zA-Z0-9_.@-]{0,255}$/;function Ki(n,e){if(!n||!Cc.test(n))throw new Error(`[FileArtifactService] Invalid ${e}: value contains disallowed characters.`)}function Xi(n,e,t){let o=y.resolve(e),r=y.resolve(n);if(!r.startsWith(o+y.sep)&&r!==o)throw new Error(`[FileArtifactService] ${t} escapes storage root. Resolved: ${r}, Root: ${o}`)}function Yi(n,e){Ki(e,"userId");let t=y.join(n,"users",e);return Xi(t,n,"userRoot"),t}function vc(n,e){return!n||e.startsWith(un)}function Ji(n){return y.join(n,"artifacts")}function Qi(n,e){Ki(e,"sessionId");let t=y.join(n,"sessions",e,"artifacts");return Xi(t,n,"sessionArtifactsDir"),t}function De(n){return y.join(n,"versions")}function Ne(n,e,t,o){let r=Yi(n,e),i;if(vc(t,o))i=Ji(r);else{if(!t)throw new Error("Session ID must be provided for session-scoped artifacts.");i=Qi(r,t)}let s=o;if(s.startsWith(un)&&(s=s.substring(un.length)),s=s.trim(),y.isAbsolute(s))throw new Error(`Absolute artifact filename ${o} is not permitted.`);let a=y.resolve(i,s),c=y.relative(i,a);if(c.startsWith("..")||y.isAbsolute(c))throw new Error(`Artifact filename ${o} escapes storage directory.`);return c===""||c==="."?y.join(i,"artifact"):a}async function Xe(n){let e=De(n);try{return(await L.readdir(e,{withFileTypes:!0})).filter(r=>r.isDirectory()).map(r=>parseInt(r.name,10)).filter(r=>!isNaN(r)).sort((r,i)=>r-i)}catch(t){return g.warn(`[FileArtifactService] getArtifactVersionsFromDir: Failed to list artifact versions from ${n}`,t),[]}}async function Ac(n,e,t,o,r){let i=await Ne(n,e,t,o),s=y.basename(i),a=De(i),c=y.join(a,r.toString(),s);return(0,vt.pathToFileURL)(c).toString()}async function Ec(n,e){await L.writeFile(n,JSON.stringify(e,null,2),"utf-8")}async function ln(n){let e=await L.readFile(n,"utf-8");return JSON.parse(e)}async function Hi(n){let e=await Xe(n);if(e.length===0)return;let t=e[e.length-1],o=y.join(De(n),t.toString(),"metadata.json");try{return await ln(o)}catch(r){g.warn(`[FileArtifactService] getLatestMetadata: Failed to read metadata from ${o}`,r);return}}async function*bo(n){try{let e=await L.readdir(n,{withFileTypes:!0});if(e.some(o=>o.isDirectory()&&o.name==="versions")){yield n;return}for(let o of e)if(o.isDirectory()){let r=y.join(n,o.name);for await(let i of bo(r))yield i}}catch{}}function xc(n){try{return(0,vt.fileURLToPath)(n)}catch(e){g.warn(`[FileArtifactService] fileUriToPath: Failed to convert file URI to path: ${n}`,e);return}}function Wi(n){return n.split(y.sep).join("/")}var es=require("@google-cloud/storage"),fn=require("@google/genai");var Je=class{constructor(e){this.bucket=new es.Storage().bucket(e)}async saveArtifact(e){if(!e.artifact.inlineData&&!e.artifact.text)throw new Error("Artifact must have either inlineData or text content.");let t=await this.listVersions(e),o=t.length>0?Math.max(...t)+1:0,r=this.bucket.file(At({...e,version:o})),i=e.customMetadata||{};return e.artifact.inlineData?(await r.save(Buffer.from(e.artifact.inlineData.data||"","base64"),{contentType:e.artifact.inlineData.mimeType,metadata:i}),o):(await r.save(e.artifact.text,{contentType:"text/plain",metadata:i}),o)}async loadArtifact(e){try{let t=e.version;if(t===void 0){let s=await this.listVersions(e);if(s.length===0)return;t=Math.max(...s)}let o=this.bucket.file(At({...e,version:t})),[[r],[i]]=await Promise.all([o.getMetadata(),o.download()]);return r.contentType==="text/plain"?(0,fn.createPartFromText)(i.toString("utf-8")):(0,fn.createPartFromBase64)(i.toString("base64"),r.contentType)}catch(t){g.warn(`[GcsArtifactService] loadArtifact: Failed to load artifact ${e.filename}`,t);return}}async listArtifactKeys(e){let t=`${e.appName}/${e.userId}/${e.sessionId}/`,o=`${e.appName}/${e.userId}/user/`,[[r],[i]]=await Promise.all([this.bucket.getFiles({prefix:t}),this.bucket.getFiles({prefix:o})]);return[...Zi(r,t),...Zi(i,o,"user:")].sort((s,a)=>s.localeCompare(a))}async deleteArtifact(e){let t=await this.listVersions(e);await Promise.all(t.map(o=>this.bucket.file(At({...e,version:o})).delete()))}async listVersions(e){let o=At(e)+"/",[r]=await this.bucket.getFiles({prefix:o}),i=[];for(let s of r){let a=s.name.split("/").pop(),c=parseInt(a,10);isNaN(c)||i.push(c)}return i.sort((s,a)=>s-a)}async listArtifactVersions(e){let t=await this.listVersions(e),o=[];for(let r of t){let i=await this.getArtifactVersion({...e,version:r});i&&o.push(i)}return o}async getArtifactVersion(e){try{let t=e.version;if(t===void 0){let i=await this.listVersions(e);if(i.length===0)return;t=Math.max(...i)}let o=this.bucket.file(At({...e,version:t})),[r]=await o.getMetadata();return{version:t,mimeType:r.contentType,customMetadata:r.metadata,canonicalUri:o.publicUrl()}}catch(t){g.warn(`[GcsArtifactService] getArtifactVersion: Failed to get artifact version for userId: ${e.userId} sessionId: ${e.sessionId} filename: ${e.filename} version: ${e.version}`,t);return}}};function At({appName:n,userId:e,sessionId:t,filename:o,version:r}){let i=o.startsWith("user:"),s=i?o.substring(5):o,a=i?`${n}/${e}/user/${s}`:`${n}/${e}/${t}/${s}`;return r!==void 0?`${a}/${r}`:a}function Zi(n,e,t=""){let o=new Set;for(let r of n){if(!r.name.startsWith(e))continue;let i=r.name.substring(e.length),s=yc(i);o.add(`${t}${s}`)}return[...o]}function yc(n){let e=n.split("/");return e.length<2?n:e.slice(0,-1).join("/")}function ts(n){return n==="memory://"}var Ee=class{constructor(){this.artifacts={}}saveArtifact({appName:e,userId:t,sessionId:o,filename:r,artifact:i,customMetadata:s}){if(!i.inlineData&&!i.text)return Promise.reject(new Error("Artifact must have either inlineData or text content."));let a=Qe(e,t,o,r);this.artifacts[a]||(this.artifacts[a]=[]);let c=this.artifacts[a].length,l={version:c,customMetadata:s};return this.artifacts[a].push({part:i,metadata:l}),Promise.resolve(c)}loadArtifact({appName:e,userId:t,sessionId:o,filename:r,version:i}){let s=Qe(e,t,o,r),a=this.artifacts[s];return a?(i===void 0&&(i=a.length-1),Promise.resolve(a[i].part)):Promise.resolve(void 0)}listArtifactKeys({appName:e,userId:t,sessionId:o}){let r=`${e}/${t}/${o}/`,i=`${e}/${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:o,filename:r}){let i=Qe(e,t,o,r);return this.artifacts[i]&&delete this.artifacts[i],Promise.resolve()}listVersions({appName:e,userId:t,sessionId:o,filename:r}){let i=Qe(e,t,o,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)}listArtifactVersions({appName:e,userId:t,sessionId:o,filename:r}){let i=Qe(e,t,o,r),s=this.artifacts[i];return s?Promise.resolve(s.map(a=>a.metadata)):Promise.resolve([])}getArtifactVersion({appName:e,userId:t,sessionId:o,filename:r,version:i}){let s=Qe(e,t,o,r),a=this.artifacts[s];return a?(i===void 0&&(i=a.length-1),a[i]?Promise.resolve(a[i].metadata):Promise.resolve(void 0)):Promise.resolve(void 0)}};function Qe(n,e,t,o){return Tc(o)?`${n}/${e}/user/${o}`:`${n}/${e}/${t}/${o}`}function Tc(n){return n.startsWith("user:")}function ns(n){if(ts(n))return new Ee;if(n.startsWith("gs://")){let e=n.split("://")[1];return new Je(e)}if(n.startsWith("file://")){let e=n.split("://")[1];return new Ye(e)}throw new Error(`Unsupported artifact service URI: ${n}`)}var dn=class{constructor(e={}){this.task=e.task,this.stream=e.stream}};var pn=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(),o=this.queue.shift();t(o)}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:{}})}async*[Symbol.asyncIterator](){for(;;){let e=await this.get();if(yield e,e.close)break}}};var ko=(i=>(i.API_KEY="apiKey",i.HTTP="http",i.OAUTH2="oauth2",i.OPEN_ID_CONNECT="openIdConnect",i.SERVICE_ACCOUNT="serviceAccount",i))(ko||{});var Sc="The following is a conversation history between a user and an AI agent. Please summarize the conversation, focusing on key information and decisions made, as well as any unresolved questions or tasks. The summary should be concise and capture the essence of the interaction.",mn=class{constructor(e){this.llm=e.llm,this.prompt=e.prompt||Sc}async summarize(e){var u,f,d,p,m,h;if(e.length===0)throw new Error("Cannot summarize an empty list of events.");let t=e[0].timestamp,o=e[e.length-1].timestamp,r="";for(let C=0;C<e.length;C++)r+=`[Event ${C+1} - Author: ${e[C].author}]
|
|
86
|
+
`,r+=`${Fe(e[C])}
|
|
86
87
|
|
|
87
|
-
|
|
88
|
+
`;let s={contents:[{role:"user",parts:[{text:`${this.prompt}
|
|
88
89
|
|
|
89
|
-
NOTE: This is a long-running operation. Do not call this tool again if it has already returned some intermediate or pending status.`,_t=class extends K{constructor(e){super({...e,isLongRunning:!0})}_getDeclaration(){let e=super._getDeclaration();return e.description?e.description+=Xr:e.description=Xr.trimStart(),e}};var Ot=require("@mikro-orm/core");var kt=require("@mikro-orm/core");var C=require("@mikro-orm/core");var Gn="schema_version",qn="1",$n=class extends C.JsonType{convertToDatabaseValue(e){return JSON.stringify(po(e))}convertToJSValue(e){return typeof e=="string"?Vt(JSON.parse(e)):Vt(e)}},X=class{};E([(0,C.PrimaryKey)({type:"string"})],X.prototype,"key",2),E([(0,C.Property)({type:"string"})],X.prototype,"value",2),X=E([(0,C.Entity)({tableName:"adk_internal_metadata"})],X);var O=class{constructor(){this.updateTime=new Date}};E([(0,C.PrimaryKey)({type:"string",fieldName:"app_name"})],O.prototype,"appName",2),E([(0,C.Property)({type:"json"})],O.prototype,"state",2),E([(0,C.Property)({type:"datetime",fieldName:"update_time",onCreate:()=>new Date,onUpdate:()=>new Date})],O.prototype,"updateTime",2),O=E([(0,C.Entity)({tableName:"app_states"})],O);C.PrimaryKey.name;var L=class{constructor(){this.updateTime=new Date}};E([(0,C.PrimaryKey)({type:"string",fieldName:"app_name"})],L.prototype,"appName",2),E([(0,C.PrimaryKey)({type:"string",fieldName:"user_id"})],L.prototype,"userId",2),E([(0,C.Property)({type:"json"})],L.prototype,"state",2),E([(0,C.Property)({type:"datetime",fieldName:"update_time",onCreate:()=>new Date,onUpdate:()=>new Date})],L.prototype,"updateTime",2),L=E([(0,C.Entity)({tableName:"user_states"})],L);C.PrimaryKey.name;var w=class{constructor(){this.createTime=new Date;this.updateTime=new Date}};E([(0,C.PrimaryKey)({type:"string"})],w.prototype,"id",2),E([(0,C.PrimaryKey)({type:"string",fieldName:"app_name"})],w.prototype,"appName",2),E([(0,C.PrimaryKey)({type:"string",fieldName:"user_id"})],w.prototype,"userId",2),E([(0,C.Property)({type:"json"})],w.prototype,"state",2),E([(0,C.Property)({type:"datetime",fieldName:"create_time",onCreate:()=>new Date})],w.prototype,"createTime",2),E([(0,C.Property)({type:"datetime",fieldName:"update_time",onCreate:()=>new Date})],w.prototype,"updateTime",2),w=E([(0,C.Entity)({tableName:"sessions"})],w);C.PrimaryKey.name;var P=class{};E([(0,C.PrimaryKey)({type:"string"})],P.prototype,"id",2),E([(0,C.PrimaryKey)({type:"string",fieldName:"app_name"})],P.prototype,"appName",2),E([(0,C.PrimaryKey)({type:"string",fieldName:"user_id"})],P.prototype,"userId",2),E([(0,C.PrimaryKey)({type:"string",fieldName:"session_id"})],P.prototype,"sessionId",2),E([(0,C.Property)({type:"string",fieldName:"invocation_id"})],P.prototype,"invocationId",2),E([(0,C.Property)({type:"datetime"})],P.prototype,"timestamp",2),E([(0,C.Property)({type:$n,fieldName:"event_data"})],P.prototype,"eventData",2),P=E([(0,C.Entity)({tableName:"events"})],P);var Qe=[X,O,L,w,P];async function Un(n){let e;if(n.startsWith("postgres://")||n.startsWith("postgresql://")){let{PostgreSqlDriver:c}=await Promise.resolve().then(()=>te(require("@mikro-orm/postgresql"),1));e=c}else if(n.startsWith("mysql://")){let{MySqlDriver:c}=await Promise.resolve().then(()=>te(require("@mikro-orm/mysql"),1));e=c}else if(n.startsWith("mariadb://")){let{MariaDbDriver:c}=await Promise.resolve().then(()=>te(require("@mikro-orm/mariadb"),1));e=c}else if(n.startsWith("sqlite://")){let{SqliteDriver:c}=await Promise.resolve().then(()=>te(require("@mikro-orm/sqlite"),1));e=c}else if(n.startsWith("mssql://")){let{MsSqlDriver:c}=await Promise.resolve().then(()=>te(require("@mikro-orm/mssql"),1));e=c}else throw new Error(`Unsupported database URI: ${n}`);if(n==="sqlite://:memory:")return{entities:Qe,dbName:":memory:",driver:e};let{host:t,port:o,username:r,password:i,pathname:s}=new URL(n),a=t.split(":")[0];return{entities:Qe,dbName:s.slice(1),host:a,port:o?parseInt(o):void 0,user:r,password:i,driver:e}}async function Yr(n){let e;n instanceof kt.MikroORM?e=n:typeof n=="string"?e=await kt.MikroORM.init(await Un(n)):e=await kt.MikroORM.init(n),await e.schema.ensureDatabase(),await e.schema.updateSchema()}async function Jr(n){let e=n.em.fork(),t=await e.findOne(X,{key:Gn});if(t){if(t.value!==qn)throw new Error(`ADK Database schema version ${t.value} is not compatible.`);return}let o=e.create(X,{key:Gn,value:qn});await e.persist(o).flush()}function Qr(n){return n?n.startsWith("postgres://")||n.startsWith("postgresql://")||n.startsWith("mysql://")||n.startsWith("mariadb://")||n.startsWith("mssql://")||n.startsWith("sqlite://"):!1}var Be=class extends le{constructor(t){super();this.initialized=!1;if(typeof t=="string")this.connectionString=t;else{if(!t.driver)throw new Error("Driver is required when passing options object.");this.options={...t,entities:Qe}}}async init(){this.initialized||(this.connectionString&&(!this.options||!this.options.driver)&&(this.options=await Un(this.connectionString)),this.orm=await Ot.MikroORM.init(this.options),await Yr(this.orm),await Jr(this.orm),this.initialized=!0)}async createSession({appName:t,userId:o,state:r,sessionId:i}){await this.init();let s=this.orm.em.fork(),a=i||ie(),c=new Date;if(await s.findOne(w,{id:a,appName:t,userId:o}))throw new Error(`Session with id ${a} already exists.`);let u=await s.findOne(O,{appName:t});u||(u=s.create(O,{appName:t,state:{},updateTime:c}),s.persist(u));let f=await s.findOne(L,{appName:t,userId:o});f||(f=s.create(L,{appName:t,userId:o,state:{}}),s.persist(f));let p={},d={},g={};if(r)for(let[S,N]of Object.entries(r))S.startsWith(v.APP_PREFIX)?p[S.replace(v.APP_PREFIX,"")]=N:S.startsWith(v.USER_PREFIX)?d[S.replace(v.USER_PREFIX,"")]=N:g[S]=N;Object.keys(p).length>0&&(u.state={...u.state,...p}),Object.keys(d).length>0&&(f.state={...f.state,...d});let y=s.create(w,{id:a,appName:t,userId:o,state:g,createTime:c,updateTime:c});s.persist(y),await s.flush();let h=W(u.state,f.state,g);return Z({id:a,appName:t,userId:o,state:h,events:[],lastUpdateTime:y.createTime.getTime()})}async getSession({appName:t,userId:o,sessionId:r,config:i}){await this.init();let s=this.orm.em.fork(),a=await s.findOne(w,{appName:t,userId:o,id:r});if(!a)return;let c={appName:t,userId:o,sessionId:r};i!=null&&i.afterTimestamp&&(c.timestamp={$gt:new Date(i.afterTimestamp)});let l=await s.find(P,c,{orderBy:{timestamp:"DESC"},limit:i==null?void 0:i.numRecentEvents});l.reverse();let u=await s.findOne(O,{appName:t}),f=await s.findOne(L,{appName:t,userId:o}),p=W((u==null?void 0:u.state)||{},(f==null?void 0:f.state)||{},a.state);return Z({id:r,appName:t,userId:o,state:p,events:l.map(d=>d.eventData),lastUpdateTime:a.updateTime.getTime()})}async listSessions({appName:t,userId:o}){await this.init();let r=this.orm.em.fork(),i={appName:t};o&&(i.userId=o);let s=await r.find(w,i),a=await r.findOne(O,{appName:t}),c=(a==null?void 0:a.state)||{},l={};if(o){let f=await r.findOne(L,{appName:t,userId:o});f&&(l[o]=f.state)}else{let f=await r.find(L,{appName:t});for(let p of f)l[p.userId]=p.state}return{sessions:s.map(f=>{let p=l[f.userId]||{},d=W(c,p,f.state);return Z({id:f.id,appName:f.appName,userId:f.userId,state:d,events:[],lastUpdateTime:f.updateTime.getTime()})})}}async deleteSession({appName:t,userId:o,sessionId:r}){await this.init();let i=this.orm.em.fork();await i.nativeDelete(w,{appName:t,userId:o,id:r}),await i.nativeDelete(P,{appName:t,userId:o,sessionId:r})}async appendEvent({session:t,event:o}){await this.init();let r=this.orm.em.fork();if(o.partial)return o;let i=bt(o);return await r.transactional(async s=>{let a=await s.findOne(w,{appName:t.appName,userId:t.userId,id:t.id},{lockMode:Ot.LockMode.PESSIMISTIC_WRITE});if(!a)throw new Error(`Session ${t.id} not found for appendEvent`);let c=await s.findOne(O,{appName:t.appName});c||(c=s.create(O,{appName:t.appName,state:{},updateTime:new Date}),s.persist(c));let l=await s.findOne(L,{appName:t.appName,userId:t.userId});if(l||(l=s.create(L,{appName:t.appName,userId:t.userId,state:{}}),s.persist(l)),a.updateTime.getTime()>t.lastUpdateTime){let p=await s.find(P,{appName:t.appName,userId:t.userId,sessionId:t.id},{orderBy:{timestamp:"ASC"}}),d=W(c.state,l.state,a.state);t.state=d,t.events=p.map(g=>g.eventData)}if(o.actions&&o.actions.stateDelta){let p={},d={},g={};for(let[y,h]of Object.entries(o.actions.stateDelta))y.startsWith(v.APP_PREFIX)?p[y.replace(v.APP_PREFIX,"")]=h:y.startsWith(v.USER_PREFIX)?d[y.replace(v.USER_PREFIX,"")]=h:g[y]=h;Object.keys(p).length>0&&(c.state={...c.state,...p}),Object.keys(d).length>0&&(l.state={...l.state,...d}),Object.keys(g).length>0&&(a.state={...a.state,...g})}let u=s.create(P,{id:i.id,appName:t.appName,userId:t.userId,sessionId:t.id,invocationId:i.invocationId,timestamp:new Date(i.timestamp),eventData:i});s.persist(u),await s.commit(),a.updateTime=new Date(o.timestamp);let f=W(c.state,l.state,a.state);t.state=f,t.events.push(o),t.lastUpdateTime=a.updateTime.getTime()}),o}};function Zr(n){if(Gr(n))return new H;if(Qr(n))return new Be(n);throw new Error(`Unsupported session service URI: ${n}`)}var ei=require("@google-cloud/opentelemetry-cloud-monitoring-exporter"),ti=require("@google-cloud/opentelemetry-cloud-trace-exporter"),ni=require("@opentelemetry/resource-detector-gcp"),oi=require("@opentelemetry/resources"),ri=require("@opentelemetry/sdk-metrics"),ii=require("@opentelemetry/sdk-trace-base"),si=require("google-auth-library");var Ts="Cannot determine GCP Project. OTel GCP Exporters cannot be set up. Please make sure to log into correct GCP Project.";async function Ss(){try{return await new si.GoogleAuth().getProjectId()||void 0}catch{return}}async function Rs(n={}){let{enableTracing:e=!1,enableMetrics:t=!1}=n,o=await Ss();return o?{spanProcessors:e?[new ii.BatchSpanProcessor(new ti.TraceExporter({projectId:o}))]:[],metricReaders:t?[new ri.PeriodicExportingMetricReader({exporter:new ei.MetricExporter({projectId:o}),exportIntervalMillis:5e3})]:[],logRecordProcessors:[]}:(m.warn(Ts),{})}function bs(){return(0,oi.detectResources)({detectors:[ni.gcpDetector]})}var Mt=require("@opentelemetry/api"),ai=require("@opentelemetry/api-logs"),ci=require("@opentelemetry/exporter-logs-otlp-http"),li=require("@opentelemetry/exporter-metrics-otlp-http"),ui=require("@opentelemetry/exporter-trace-otlp-http"),fi=require("@opentelemetry/resources"),Nt=require("@opentelemetry/sdk-logs"),Bt=require("@opentelemetry/sdk-metrics"),pi=require("@opentelemetry/sdk-trace-base"),di=require("@opentelemetry/sdk-trace-node");function ws(n=[],e){let t=e||Is(),o=[...n,Ls()],r=o.flatMap(a=>a.spanProcessors||[]),i=o.flatMap(a=>a.metricReaders||[]),s=o.flatMap(a=>a.logRecordProcessors||[]);if(r.length>0){let a=new di.NodeTracerProvider({resource:t,spanProcessors:r});a.register(),Mt.trace.setGlobalTracerProvider(a)}if(i.length>0){let a=new Bt.MeterProvider({readers:i,resource:t});Mt.metrics.setGlobalMeterProvider(a)}if(s.length>0){let a=new Nt.LoggerProvider({resource:t,processors:s});ai.logs.setGlobalLoggerProvider(a)}}function Is(){return(0,fi.detectResources)({detectors:[]})}function Ps(){return{enableTracing:!!(process.env.OTEL_EXPORTER_OTLP_ENDPOINT||process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT),enableMetrics:!!(process.env.OTEL_EXPORTER_OTLP_ENDPOINT||process.env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT),enableLogging:!!(process.env.OTEL_EXPORTER_OTLP_ENDPOINT||process.env.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT)}}function Ls(n=Ps()){let{enableTracing:e,enableMetrics:t,enableLogging:o}=n;return{spanProcessors:e?[new pi.BatchSpanProcessor(new ui.OTLPTraceExporter)]:[],metricReaders:t?[new Bt.PeriodicExportingMetricReader({exporter:new li.OTLPMetricExporter})]:[],logRecordProcessors:o?[new Nt.BatchLogRecordProcessor(new ci.OTLPLogExporter)]:[]}}var mi=require("@modelcontextprotocol/sdk/client/index.js"),gi=require("@modelcontextprotocol/sdk/client/stdio.js"),hi=require("@modelcontextprotocol/sdk/client/streamableHttp.js");var Ze=class{constructor(e){this.connectionParams=e}async createSession(){var t;let e=new mi.Client({name:"MCPClient",version:"1.0.0"});switch(this.connectionParams.type){case"StdioConnectionParams":await e.connect(new gi.StdioClientTransport(this.connectionParams.serverParams));break;case"StreamableHTTPConnectionParams":{let o=(t=this.connectionParams.transportOptions)!=null?t:{};!o.requestInit&&this.connectionParams.header!==void 0&&(o.requestInit={headers:this.connectionParams.header}),await e.connect(new hi.StreamableHTTPClientTransport(new URL(this.connectionParams.url),o));break}default:{let o=this.connectionParams;break}}return e}};var U=require("@google/genai"),Ee=require("zod");var Gd=Ee.z.object({type:Ee.z.literal("object"),properties:Ee.z.record(Ee.z.string(),Ee.z.unknown()).optional(),required:Ee.z.string().array().optional()});function _s(n){if(!n)return U.Type.TYPE_UNSPECIFIED;switch(n.toLowerCase()){case"text":case"string":return U.Type.STRING;case"number":return U.Type.NUMBER;case"boolean":return U.Type.BOOLEAN;case"integer":return U.Type.INTEGER;case"array":return U.Type.ARRAY;case"object":return U.Type.OBJECT;default:return U.Type.TYPE_UNSPECIFIED}}function Vn(n){if(!n)return;function e(t){if(!t.type&&t.anyOf&&Array.isArray(t.anyOf)){let i=t.anyOf.find(s=>{let a=s.type;return a!=="null"&&a!=="NULL"});i&&(t=i)}t.type||(t.properties||t.$ref?t.type="object":t.items&&(t.type="array"));let o=_s(t.type),r={type:o,description:t.description};if(o===U.Type.OBJECT){if(r.properties={},t.properties)for(let i in t.properties)r.properties[i]=e(t.properties[i]);r.required=t.required}else o===U.Type.ARRAY&&t.items&&(r.items=e(t.items));return r}return e(n)}var et=class extends M{constructor(e,t){super({name:e.name,description:e.description||""}),this.mcpTool=e,this.mcpSessionManager=t}_getDeclaration(){return{name:this.mcpTool.name,description:this.mcpTool.description,parameters:Vn(this.mcpTool.inputSchema),response:Vn(this.mcpTool.outputSchema)}}async runAsync(e){let t=await this.mcpSessionManager.createSession(),o={};return o.params={name:this.mcpTool.name,arguments:e.args},await t.callTool(o.params)}};var jn=class extends Ne{constructor(e,t=[],o){super(t,o),this.mcpSessionManager=new Ze(e)}async getTools(){let t=await(await this.mcpSessionManager.createSession()).listTools();m.debug(`number of tools: ${t.tools.length}`);for(let o of t.tools)m.debug(`tool: ${o.name}`);return t.tools.map(o=>{let r={...o,name:this.prefix?`${this.prefix}_${o.name}`:o.name};return new et(r,this.mcpSessionManager)})}async close(){}};0&&(module.exports={ActiveStreamingTool,AgentTool,ApigeeLlm,AuthCredentialTypes,BaseAgent,BaseCodeExecutor,BaseExampleProvider,BaseLlm,BaseLlmRequestProcessor,BaseLlmResponseProcessor,BasePlugin,BaseSessionService,BaseTool,BaseToolset,BuiltInCodeExecutor,Context,DatabaseSessionService,EXIT_LOOP,EventType,ExitLoopTool,FileArtifactService,FunctionTool,GOOGLE_SEARCH,GcsArtifactService,Gemini,GoogleLLMVariant,GoogleSearchTool,InMemoryArtifactService,InMemoryMemoryService,InMemoryPolicyEngine,InMemoryRunner,InMemorySessionService,InvocationContext,LLMRegistry,LiveRequestQueue,LlmAgent,LogLevel,LoggingPlugin,LongRunningFunctionTool,LoopAgent,MCPSessionManager,MCPTool,MCPToolset,ParallelAgent,PluginManager,PolicyOutcome,REQUEST_CONFIRMATION_FUNCTION_CALL_NAME,ReadonlyContext,Runner,SecurityPlugin,SequentialAgent,State,StreamingMode,ToolConfirmation,createEvent,createEventActions,createSession,functionsExportedForTestingOnly,geminiInitParams,getArtifactServiceFromUri,getAskUserConfirmationFunctionCalls,getFunctionCalls,getFunctionResponses,getGcpExporters,getGcpResource,getLogger,getSessionServiceFromUri,hasTrailingCodeExecutionResult,isAgentTool,isBaseAgent,isBaseExampleProvider,isBaseLlm,isBaseTool,isBaseToolset,isFinalResponse,isFunctionTool,isGemini2OrAbove,isLlmAgent,isLoopAgent,isParallelAgent,isSequentialAgent,maybeSetOtelProviders,mergeStates,setLogLevel,setLogger,stringifyContent,toStructuredEvents,trimTempDeltaState,version,zodObjectToSchema});
|
|
90
|
+
${r}`}]}],toolsDict:{},liveConnectConfig:{}},a=this.llm.generateContentAsync(s,!1),c="",l=await a.next();if(l.done||!((d=(f=(u=l.value.content)==null?void 0:u.parts)==null?void 0:f[0])!=null&&d.text))throw new Error("LLM failed to return a valid summary.");c+=l.value.content.parts[0].text;for await(let C of a)(h=(m=(p=C.content)==null?void 0:p.parts)==null?void 0:m[0])!=null&&h.text&&(c+=C.content.parts[0].text);return ii({author:"system",content:{role:"model",parts:[{text:c}]},startTime:t,endTime:o,compactedContent:c})}};var gn=class{constructor(e){this.tokenThreshold=e.tokenThreshold,this.eventRetentionSize=e.eventRetentionSize,this.summarizer=e.summarizer}getActiveEvents(e){let t;for(let r=e.length-1;r>=0;r--){let i=e[r];z(i)&&(!t||i.endTime>t.endTime)&&(t=i)}if(!t)return e;let o=e.filter(r=>!z(r)&&r.timestamp>t.endTime);return[t,...o]}shouldCompact(e){let t=e.session.events,o=this.getActiveEvents(t);if(o.filter(s=>!z(s)).length<=this.eventRetentionSize)return!1;let i=0;for(let s of o)i+=Rc(s);return i>this.tokenThreshold}async compact(e){let t=e.session.events,o=this.getActiveEvents(t),r=o.filter(u=>!z(u));if(r.length<=this.eventRetentionSize)return;let i=Math.max(0,r.length-this.eventRetentionSize);for(;i>0;){let u=r[i],f=r[i-1];if(wc(u)&&Ic(f))i--;else break}if(i===0)return;let s=r.slice(0,i),a=o.find(z),c=a?[a,...s]:s,l=await this.summarizer.summarize(c);l.actions||(l.actions={stateDelta:{},artifactDelta:{},requestedAuthConfigs:[],requestedToolConfirmations:{}}),e.session.events.push(l)}};function Rc(n){var t;if(((t=n.usageMetadata)==null?void 0:t.promptTokenCount)!==void 0)return n.usageMetadata.promptTokenCount;let e=Fe(n);return Math.ceil(e.length/4)}function Ic(n){var e,t;return!!((t=(e=n.content)==null?void 0:e.parts)!=null&&t.some(o=>o.functionCall!==void 0))}function wc(n){var e,t;return!!((t=(e=n.content)==null?void 0:e.parts)!=null&&t.some(o=>o.functionResponse!==void 0))}var hn=class{constructor(e){var t;this.threshold=e.threshold,this.preserveLeadingEvents=(t=e.preserveLeadingEvents)!=null?t:0}shouldCompact(e){return e.session.events.length>this.threshold+Math.max(0,this.preserveLeadingEvents)}compact(e){let t=e.session.events,o=t.length-this.threshold-Math.max(0,this.preserveLeadingEvents);if(o<=0)return;let r=Math.max(0,this.preserveLeadingEvents);t.splice(r,o)}};var Ze=require("lodash-es");var Po=(u=>(u.THOUGHT="thought",u.CONTENT="content",u.TOOL_CALL="tool_call",u.TOOL_RESULT="tool_result",u.CALL_CODE="call_code",u.CODE_RESULT="code_result",u.ERROR="error",u.ACTIVITY="activity",u.TOOL_CONFIRMATION="tool_confirmation",u.FINISHED="finished",u))(Po||{});function os(n){var t,o;let e=[];if(n.errorCode)return e.push({type:"error",error:new Error(n.errorMessage||n.errorCode)}),e;for(let r of(o=(t=n.content)==null?void 0:t.parts)!=null?o:[])r.functionCall&&!(0,Ze.isEmpty)(r.functionCall)?e.push({type:"tool_call",call:r.functionCall}):r.functionResponse&&!(0,Ze.isEmpty)(r.functionResponse)?e.push({type:"tool_result",result:r.functionResponse}):r.executableCode&&!(0,Ze.isEmpty)(r.executableCode)?e.push({type:"call_code",code:r.executableCode}):r.codeExecutionResult&&!(0,Ze.isEmpty)(r.codeExecutionResult)?e.push({type:"code_result",result:r.codeExecutionResult}):r.text&&(r.thought?e.push({type:"thought",content:r.text}):e.push({type:"content",content:r.text}));return n.actions.requestedToolConfirmations&&!(0,Ze.isEmpty)(n.actions.requestedToolConfirmations)&&e.push({type:"tool_confirmation",confirmations:n.actions.requestedToolConfirmations}),se(n)&&e.push({type:"finished",output:void 0}),e}var _o=Symbol.for("google.adk.baseExampleProvider");function is(n){return typeof n=="object"&&n!==null&&_o in n&&n[_o]===!0}var rs;rs=_o;var Cn=class{constructor(){this[rs]=!0}};var xe=class{constructor(){this.memories=[];this.sessionEvents={}}async addSessionToMemory(e){let t=ss(e.appName,e.userId);this.sessionEvents[t]||(this.sessionEvents[t]={}),this.sessionEvents[t][e.id]=e.events.filter(o=>{var r,i,s;return((s=(i=(r=o.content)==null?void 0:r.parts)==null?void 0:i.length)!=null?s:0)>0})}async searchMemory(e){var i,s;let t=ss(e.appName,e.userId);if(!this.sessionEvents[t])return Promise.resolve({memories:[]});let o=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(d=>d.text).filter(d=>!!d).join(" "),u=bc(l);if(!u.size)continue;o.some(d=>u.has(d))&&r.memories.push({content:c.content,author:c.author,timestamp:kc(c.timestamp)})}return r}};function ss(n,e){return`${n}/${e}`}function bc(n){return new Set([...n.matchAll(/[A-Za-z]+/g)].map(e=>e[0].toLowerCase()))}function kc(n){return new Date(n).toISOString()}var ye=class{constructor(e){this.name=e}async onUserMessageCallback(e){}async beforeRunCallback(e){}async onEventCallback(e){}async afterRunCallback(e){}async beforeAgentCallback(e){}async afterAgentCallback(e){}async beforeModelCallback(e){}async afterModelCallback(e){}async onModelErrorCallback(e){}async beforeToolCallback(e){}async afterToolCallback(e){}async onToolErrorCallback(e){}};var vn=class extends ye{constructor(e="logging_plugin"){super(e)}async onUserMessageCallback({invocationContext:e,userMessage:t}){var o;this.log("\u{1F680} USER MESSAGE RECEIVED"),this.log(` Invocation ID: ${e.invocationId}`),this.log(` Session ID: ${e.session.id}`),this.log(` User ID: ${e.userId}`),this.log(` App Name: ${e.appName}`),this.log(` Root Agent: ${(o=e.agent.name)!=null?o:"Unknown"}`),this.log(` User Content: ${this.formatContent(t)}`),e.branch&&this.log(` Branch: ${e.branch}`)}async beforeRunCallback({invocationContext:e}){var t;this.log("\u{1F3C3} INVOCATION STARTING"),this.log(` Invocation ID: ${e.invocationId}`),this.log(` Starting Agent: ${(t=e.agent.name)!=null?t:"Unknown"}`)}async onEventCallback({event:e}){this.log("\u{1F4E2} EVENT YIELDED"),this.log(` Event ID: ${e.id}`),this.log(` Author: ${e.author}`),this.log(` Content: ${this.formatContent(e.content)}`),this.log(` Final Response: ${se(e)}`);let t=w(e);if(t.length>0){let r=t.map(i=>i.name);this.log(` Function Calls: ${r}`)}let o=q(e);if(o.length>0){let r=o.map(i=>i.name);this.log(` Function Responses: ${r}`)}e.longRunningToolIds&&e.longRunningToolIds.length>0&&this.log(` Long Running Tools: ${[...e.longRunningToolIds]}`)}async afterRunCallback({invocationContext:e}){var t;this.log("\u2705 INVOCATION COMPLETED"),this.log(` Invocation ID: ${e.invocationId}`),this.log(` Final Agent: ${(t=e.agent.name)!=null?t:"Unknown"}`)}async beforeAgentCallback({callbackContext:e}){this.log("\u{1F916} AGENT STARTING"),this.log(` Agent Name: ${e.agentName}`),this.log(` Invocation ID: ${e.invocationId}`),e.invocationContext.branch&&this.log(` Branch: ${e.invocationContext.branch}`)}async afterAgentCallback({callbackContext:e}){this.log("\u{1F916} AGENT COMPLETED"),this.log(` Agent Name: ${e.agentName}`),this.log(` Invocation ID: ${e.invocationId}`)}async beforeModelCallback({callbackContext:e,llmRequest:t}){var o;if(this.log("\u{1F9E0} LLM REQUEST"),this.log(` Model: ${(o=t.model)!=null?o:"default"}`),this.log(` Agent: ${e.agentName}`),t.config&&t.config.systemInstruction){let r=t.config.systemInstruction;r.length>200&&(r=r.substring(0,200)+"..."),this.log(` System Instruction: '${r}'`)}if(t.toolsDict){let r=Object.keys(t.toolsDict);this.log(` Available Tools: ${r}`)}}async afterModelCallback({callbackContext:e,llmResponse:t}){this.log("\u{1F9E0} LLM RESPONSE"),this.log(` Agent: ${e.agentName}`),t.errorCode?(this.log(` \u274C ERROR - Code: ${t.errorCode}`),this.log(` Error Message: ${t.errorMessage}`)):(this.log(` Content: ${this.formatContent(t.content)}`),t.partial&&this.log(` Partial: ${t.partial}`),t.turnComplete!==void 0&&this.log(` Turn Complete: ${t.turnComplete}`)),t.usageMetadata&&this.log(` Token Usage - Input: ${t.usageMetadata.promptTokenCount}, Output: ${t.usageMetadata.candidatesTokenCount}`)}async beforeToolCallback({tool:e,toolArgs:t,toolContext:o}){this.log("\u{1F527} TOOL STARTING"),this.log(` Tool Name: ${e.name}`),this.log(` Agent: ${o.agentName}`),this.log(` Function Call ID: ${o.functionCallId}`),this.log(` Arguments: ${this.formatArgs(t)}`)}async afterToolCallback({tool:e,toolContext:t,result:o}){this.log("\u{1F527} TOOL COMPLETED"),this.log(` Tool Name: ${e.name}`),this.log(` Agent: ${t.agentName}`),this.log(` Function Call ID: ${t.functionCallId}`),this.log(` Result: ${this.formatArgs(o)}`)}async onModelErrorCallback({callbackContext:e,error:t}){this.log("\u{1F9E0} LLM ERROR"),this.log(` Agent: ${e.agentName}`),this.log(` Error: ${t}`)}async onToolErrorCallback({tool:e,toolArgs:t,toolContext:o,error:r}){this.log("\u{1F527} TOOL ERROR"),this.log(` Tool Name: ${e.name}`),this.log(` Agent: ${o.agentName}`),this.log(` Function Call ID: ${o.functionCallId}`),this.log(` Arguments: ${this.formatArgs(t)}`),this.log(` Error: ${r}`)}log(e){let t=`\x1B[90m[${this.name}] ${e}\x1B[0m`;g.info(t)}formatContent(e,t=200){if(!e||!e.parts)return"None";let o=[];for(let r of e.parts)if(r.text){let i=r.text.trim();i.length>t&&(i=i.substring(0,t)+"..."),o.push(`text: '${i}'`)}else r.functionCall?o.push(`function_call: ${r.functionCall.name}`):r.functionResponse?o.push(`function_response: ${r.functionResponse.name}`):r.codeExecutionResult?o.push("code_execution_result"):o.push("other_part");return o.join(" | ")}formatArgs(e,t=300){if(!e)return"{}";let o=JSON.stringify(e);return o.length>t&&(o=o.substring(0,t)+"...}"),o}};var Oo="adk_request_confirmation",Lo="orcas_tool_call_security_check_states",as="This tool call needs external confirmation before completion.",Mo=(o=>(o.DENY="DENY",o.CONFIRM="CONFIRM",o.ALLOW="ALLOW",o))(Mo||{}),Et=class{async evaluate(){return Promise.resolve({outcome:"ALLOW",reason:"For prototyping purpose, all tool calls are allowed."})}},An=class extends ye{constructor(e){var t;super("security_plugin"),this.policyEngine=(t=e==null?void 0:e.policyEngine)!=null?t:new Et}async beforeToolCallback({tool:e,toolArgs:t,toolContext:o}){let r=this.getToolCallCheckState(o);if(!r)return this.checkToolCallPolicy({tool:e,toolArgs:t,toolContext:o});if(r==="CONFIRM"){if(!o.toolConfirmation)return{partial:as};if(this.setToolCallCheckState(o,o.toolConfirmation),!o.toolConfirmation.confirmed)return{error:"Tool call rejected from confirmation flow."};o.toolConfirmation=void 0}}getToolCallCheckState(e){var r;let{functionCallId:t}=e;return t?((r=e.state.get(Lo))!=null?r:{})[t]:void 0}setToolCallCheckState(e,t){var i;let{functionCallId:o}=e;if(!o)return;let r=(i=e.state.get(Lo))!=null?i:{};r[o]=t,e.state.set(Lo,r)}async checkToolCallPolicy({tool:e,toolArgs:t,toolContext:o}){let r=await this.policyEngine.evaluate({tool:e,toolArgs:t});switch(this.setToolCallCheckState(o,r.outcome),r.outcome){case"DENY":return{error:`This tool call is rejected by policy engine. Reason: ${r.reason}`};case"CONFIRM":return o.requestConfirmation({hint:`Policy engine requires confirmation calling tool: ${e.name}. Reason: ${r.reason}`}),{partial:as};case"ALLOW":return;default:return}}};function cs(n){if(!n.content||!n.content.parts)return[];let e=[];for(let t of n.content.parts)t&&t.functionCall&&t.functionCall.name===Oo&&e.push(t.functionCall);return e}var En=class extends oe{constructor({agent:e,appName:t="InMemoryRunner",plugins:o=[]}){super({appName:t,agent:e,plugins:o,artifactService:new Ee,sessionService:new W,memoryService:new xe})}};var xt=require("@google/genai");var xn=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(){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)}listArtifactVersions(e){if(!this.toolContext.invocationContext.artifactService)throw new Error("Artifact service is not initialized.");return this.toolContext.invocationContext.artifactService.listArtifactVersions(e)}getArtifactVersion(e){if(!this.toolContext.invocationContext.artifactService)throw new Error("Artifact service is not initialized.");return this.toolContext.invocationContext.artifactService.getArtifactVersion(e)}};var No=Symbol.for("google.adk.agentTool");function fs(n){return typeof n=="object"&&n!==null&&No in n&&n[No]===!0}var ls,us,yn=class extends(us=k,ls=No,us){constructor(t){super({name:t.agent.name,description:t.agent.description||""});this[ls]=!0;this.agent=t.agent,this.skipSummarization=t.skipSummarization||!1}_getDeclaration(){let t;if(x(this.agent)&&this.agent.inputSchema?t={name:this.name,description:this.description,parameters:this.agent.inputSchema}:t={name:this.name,description:this.description,parameters:{type:xt.Type.OBJECT,properties:{request:{type:xt.Type.STRING}},required:["request"]}},this.apiVariant!=="GEMINI_API"){let o=x(this.agent)&&this.agent.outputSchema;t.response=o?{type:xt.Type.OBJECT}:{type:xt.Type.STRING}}return t}async runAsync({args:t,toolContext:o}){var f,d,p,m;this.skipSummarization&&(o.actions.skipSummarization=!0);let i={role:"user",parts:[{text:x(this.agent)&&this.agent.inputSchema?JSON.stringify(t):t.request}]},s=new oe({appName:this.agent.name,agent:this.agent,artifactService:new xn(o),sessionService:(f=o.invocationContext.sessionService)!=null?f:new W,memoryService:(d=o.invocationContext.memoryService)!=null?d:new xe,credentialService:o.invocationContext.credentialService}),a=await s.sessionService.createSession({appName:this.agent.name,userId:o.invocationContext.userId,sessionId:o.invocationContext.session.id,state:o.state.toRecord()}),c;for await(let h of s.runAsync({userId:a.userId,sessionId:a.id,newMessage:i}))h.actions.stateDelta&&o.state.update(h.actions.stateDelta),c=h;if(!((m=(p=c==null?void 0:c.content)==null?void 0:p.parts)!=null&&m.length))return"";let l=x(this.agent)&&this.agent.outputSchema,u=c.content.parts.map(h=>h.text).filter(h=>h).join(`
|
|
91
|
+
`);return l?JSON.parse(u):u}};var yt=class extends k{constructor(){super({name:"exit_loop",description:`Exits the loop.
|
|
92
|
+
|
|
93
|
+
Call this function only when you are instructed to do so.`})}_getDeclaration(){return{name:this.name,description:this.description}}async runAsync({toolContext:e}){return e.actions.escalate=!0,e.actions.skipSummarization=!0,""}},ds=new yt;var Tt=class extends k{constructor(){super({name:"google_search",description:"Google Search Tool"})}runAsync(){return Promise.resolve()}async processLlmRequest({llmRequest:e}){if(e.model){if(e.config=e.config||{},e.config.tools=e.config.tools||[],Kr(e.model)){if(e.config.tools.length>0)throw new Error("Google search tool can not be used with other tools in Gemini 1.x.");e.config.tools.push({googleSearchRetrieval:{}});return}if(Wr(e.model)){e.config.tools.push({googleSearch:{}});return}throw new Error(`Google search tool is not supported for model ${e.model}`)}}},ps=new Tt;var Tn=require("@google/genai");var Pc=Ot(),_c=["image/","audio/","video/"],Lc=new Set(["application/pdf"]),Oc=new Set(["application/csv","application/json","application/xml"]);function ms(n){if(n)return n.split(";")[0].trim()}function Mc(n){let e=ms(n);return e?_c.some(t=>e.startsWith(t))||Lc.has(e):!1}function Nc(n,e){let t=n.inlineData;if(!t||Mc(t.mimeType))return n;let o=ms(t.mimeType)||"application/octet-stream",r=t.data;if(!r)return{text:`[Artifact: ${e}, type: ${o}. No inline data was provided.]`};let i=o.startsWith("text/")||Oc.has(o),s=Buffer.from(r,"base64");if(i)try{return{text:s.toString("utf8")}}catch{}let a=s.length/1024;return{text:`[Binary artifact: ${e}, type: ${o}, size: ${a.toFixed(1)} KB. Content cannot be displayed inline.]`}}var St=class extends k{constructor(){super({name:"load_artifacts",description:`Loads artifacts into the session for this request.
|
|
94
|
+
|
|
95
|
+
NOTE: Call when you need access to artifacts (for example, uploads saved by the web UI).`})}_getDeclaration(){return{name:this.name,description:this.description,parameters:{type:Tn.Type.OBJECT,properties:{artifact_names:{type:Tn.Type.ARRAY,items:{type:Tn.Type.STRING},description:"The names of the artifacts to load."}}}}}async runAsync({args:e}){return{artifact_names:e.artifact_names||[],status:"artifact contents temporarily inserted and removed. to access these artifacts, call load_artifacts tool again."}}async processLlmRequest(e){await super.processLlmRequest(e),await this.appendArtifactsToLlmRequest(e.toolContext,e.llmRequest)}async appendArtifactsToLlmRequest(e,t){if(!e.invocationContext.artifactService)return;let o=await e.listArtifacts();if(!o||o.length===0)return;j(t,[`You have a list of artifacts:
|
|
96
|
+
${JSON.stringify(o)}
|
|
97
|
+
|
|
98
|
+
When the user asks questions about any of the artifacts, you should call the
|
|
99
|
+
\`load_artifacts\` function to load the artifact. Always call load_artifacts
|
|
100
|
+
before answering questions related to the artifacts, regardless of whether the
|
|
101
|
+
artifacts have been loaded before. Do not depend on prior answers about the
|
|
102
|
+
artifacts.`]);let r=t.contents;if(r&&r.length>0){let i=r[r.length-1];if(i.role==="user"&&i.parts&&i.parts.length>0){let a=i.parts[0].functionResponse;if(a&&a.name==="load_artifacts"){let l=(a.response||{}).artifact_names||[];for(let u of l){let f=await e.loadArtifact(u);if(!f&&!u.startsWith("user:")){let p=`user:${u}`;f=await e.loadArtifact(p)}if(!f){Pc.warn(`Artifact "${u}" not found, skipping`);continue}let d=Nc(f,u);t.contents.push({role:"user",parts:[{text:`Artifact ${u} is:`},d]})}}}}}},gs=new St;var Do=require("@google/genai");var Rt=class extends k{constructor(){super({name:"load_memory",description:`Loads the memory for the current user.
|
|
103
|
+
|
|
104
|
+
NOTE: Currently this tool only uses text part from the memory.`})}_getDeclaration(){return{name:this.name,description:this.description,parameters:{type:Do.Type.OBJECT,properties:{query:{type:Do.Type.STRING,description:"The query to load the memory for."}},required:["query"]}}}async runAsync({args:e,toolContext:t}){try{let o=e.query;if(!t.invocationContext.memoryService)throw new Error("Memory service is not initialized.");return{memories:(await t.searchMemory(o)).memories.map(i=>{var s,a;return{content:(a=(s=i.content.parts)==null?void 0:s.map(c=>{var l;return(l=c.text)!=null?l:""}).join(" "))!=null?a:"",author:i.author,timestamp:i.timestamp}})}}catch(o){throw console.error("ERROR in LoadMemoryTool runAsync:",o),o}}async processLlmRequest(e){await super.processLlmRequest(e),e.toolContext.invocationContext.memoryService&&j(e.llmRequest,[`You have memory. You can use it to answer questions. If any questions need
|
|
105
|
+
you to look up the memory, you should call load_memory function with a query.`])}},hs=new Rt;var Cs=`
|
|
106
|
+
|
|
107
|
+
NOTE: This is a long-running operation. Do not call this tool again if it has already returned some intermediate or pending status.`,Sn=class extends ne{constructor(e){super({...e,isLongRunning:!0})}_getDeclaration(){let e=super._getDeclaration();return e.description?e.description+=Cs:e.description=Cs.trimStart(),e}};var It=class extends k{constructor(){super({name:"preload_memory",description:"preload_memory"})}async runAsync({args:e,toolContext:t}){throw new Error("PreloadMemoryTool should not be called by model")}async processLlmRequest(e){var c,l,u;await super.processLlmRequest(e);let t=e.toolContext.userContent;if(!t||!t.parts||!((c=t.parts[0])!=null&&c.text))return;let o=t.parts[0].text,r;try{if(!e.toolContext.invocationContext.memoryService)return;r=await e.toolContext.searchMemory(o)}catch{g.warn(`Failed to preload memory for query: ${o}`);return}if(!r.memories||r.memories.length===0)return;let i=[];for(let f of r.memories){let d=f.timestamp?`Time: ${f.timestamp}`:"";d&&i.push(d);let p=(u=(l=f.content.parts)==null?void 0:l.map(m=>{var h;return(h=m.text)!=null?h:""}).join(" "))!=null?u:"";p&&i.push(f.author?`${f.author}: ${p}`:p)}if(i.length===0)return;let a=`The following content is from your previous conversations with the user.
|
|
108
|
+
They may be useful for answering the user's current query.
|
|
109
|
+
<PAST_CONVERSATIONS>
|
|
110
|
+
${i.join(`
|
|
111
|
+
`)}
|
|
112
|
+
</PAST_CONVERSATIONS>
|
|
113
|
+
`;j(e.llmRequest,[a])}},vs=new It;var Rn=require("@mikro-orm/core");var T=require("@mikro-orm/core");var Fo="schema_version",Uo="1",Bo=class extends T.JsonType{convertToDatabaseValue(e){return JSON.stringify(Xo(e))}convertToJSValue(e){return typeof e=="string"?_n(JSON.parse(e)):_n(e)}},ie=class{};R([(0,T.PrimaryKey)({type:"string"})],ie.prototype,"key",2),R([(0,T.Property)({type:"string"})],ie.prototype,"value",2),ie=R([(0,T.Entity)({tableName:"adk_internal_metadata"})],ie);var U=class{constructor(){this.updateTime=new Date}};R([(0,T.PrimaryKey)({type:"string",fieldName:"app_name"})],U.prototype,"appName",2),R([(0,T.Property)({type:"json"})],U.prototype,"state",2),R([(0,T.Property)({type:"datetime",fieldName:"update_time",onCreate:()=>new Date,onUpdate:()=>new Date})],U.prototype,"updateTime",2),U=R([(0,T.Entity)({tableName:"app_states"})],U);T.PrimaryKey.name;var N=class{constructor(){this.updateTime=new Date}};R([(0,T.PrimaryKey)({type:"string",fieldName:"app_name"})],N.prototype,"appName",2),R([(0,T.PrimaryKey)({type:"string",fieldName:"user_id"})],N.prototype,"userId",2),R([(0,T.Property)({type:"json"})],N.prototype,"state",2),R([(0,T.Property)({type:"datetime",fieldName:"update_time",onCreate:()=>new Date,onUpdate:()=>new Date})],N.prototype,"updateTime",2),N=R([(0,T.Entity)({tableName:"user_states"})],N);T.PrimaryKey.name;var O=class{constructor(){this.createTime=new Date;this.updateTime=new Date}};R([(0,T.PrimaryKey)({type:"string"})],O.prototype,"id",2),R([(0,T.PrimaryKey)({type:"string",fieldName:"app_name"})],O.prototype,"appName",2),R([(0,T.PrimaryKey)({type:"string",fieldName:"user_id"})],O.prototype,"userId",2),R([(0,T.Property)({type:"json"})],O.prototype,"state",2),R([(0,T.Property)({type:"datetime",fieldName:"create_time",onCreate:()=>new Date})],O.prototype,"createTime",2),R([(0,T.Property)({type:"datetime",fieldName:"update_time",onCreate:()=>new Date})],O.prototype,"updateTime",2),O=R([(0,T.Entity)({tableName:"sessions"})],O);T.PrimaryKey.name;var M=class{};R([(0,T.PrimaryKey)({type:"string"})],M.prototype,"id",2),R([(0,T.PrimaryKey)({type:"string",fieldName:"app_name"})],M.prototype,"appName",2),R([(0,T.PrimaryKey)({type:"string",fieldName:"user_id"})],M.prototype,"userId",2),R([(0,T.PrimaryKey)({type:"string",fieldName:"session_id"})],M.prototype,"sessionId",2),R([(0,T.Property)({type:"string",fieldName:"invocation_id"})],M.prototype,"invocationId",2),R([(0,T.Property)({type:"datetime"})],M.prototype,"timestamp",2),R([(0,T.Property)({type:Bo,fieldName:"event_data"})],M.prototype,"eventData",2),M=R([(0,T.Entity)({tableName:"events"})],M);var wt=[ie,U,N,O,M];async function As(n){let e;if(n.startsWith("postgres://")||n.startsWith("postgresql://")){let{PostgreSqlDriver:l}=await Promise.resolve().then(()=>J(require("@mikro-orm/postgresql"),1));e=l}else if(n.startsWith("mysql://")){let{MySqlDriver:l}=await Promise.resolve().then(()=>J(require("@mikro-orm/mysql"),1));e=l}else if(n.startsWith("mariadb://")){let{MariaDbDriver:l}=await Promise.resolve().then(()=>J(require("@mikro-orm/mariadb"),1));e=l}else if(n.startsWith("sqlite://")){let{SqliteDriver:l}=await Promise.resolve().then(()=>J(require("@mikro-orm/sqlite"),1));e=l}else if(n.startsWith("mssql://")){let{MsSqlDriver:l}=await Promise.resolve().then(()=>J(require("@mikro-orm/mssql"),1));e=l}else throw new Error(`Unsupported database URI: ${n}`);if(n==="sqlite://:memory:")return{entities:wt,dbName:":memory:",driver:e};let{host:t,port:o,username:r,password:i,pathname:s}=new URL(n),a=t.split(":")[0],c=n.startsWith("sqlite://")?n.substring(9):s.slice(1);return{entities:wt,dbName:c,host:a,port:o?parseInt(o):void 0,user:r,password:i,driver:e}}async function Es(n){await n.schema.ensureDatabase(),await n.schema.updateSchema({safe:!0})}async function xs(n){let e=n.em.fork(),t=await e.findOne(ie,{key:Fo});if(t){if(t.value!==Uo)throw new Error(`ADK Database schema version ${t.value} is not compatible.`);return}let o=e.create(ie,{key:Fo,value:Uo});await e.persist(o).flush()}function ys(n){return n?n.startsWith("postgres://")||n.startsWith("postgresql://")||n.startsWith("mysql://")||n.startsWith("mariadb://")||n.startsWith("mssql://")||n.startsWith("sqlite://"):!1}var et=class extends Ae{constructor(t){super();this.initialized=!1;if(typeof t=="string")this.connectionString=t;else{if(!t.driver)throw new Error("Driver is required when passing options object.");this.options={...t,entities:wt}}}async init(){this.initialized||(this.connectionString&&(!this.options||!this.options.driver)&&(this.options=await As(this.connectionString)),this.orm=await Rn.MikroORM.init(this.options),await Es(this.orm),await xs(this.orm),this.initialized=!0)}async createSession({appName:t,userId:o,state:r,sessionId:i}){await this.init();let s=this.orm.em.fork(),a=i||P(),c=new Date;if(await s.findOne(O,{id:a,appName:t,userId:o}))throw new Error(`Session with id ${a} already exists.`);let u=await s.findOne(U,{appName:t});u||(u=s.create(U,{appName:t,state:{},updateTime:c}),s.persist(u));let f=await s.findOne(N,{appName:t,userId:o});f||(f=s.create(N,{appName:t,userId:o,state:{}}),s.persist(f));let d={},p={},m={};if(r)for(let[S,G]of Object.entries(r))S.startsWith(E.APP_PREFIX)?d[S.replace(E.APP_PREFIX,"")]=G:S.startsWith(E.USER_PREFIX)?p[S.replace(E.USER_PREFIX,"")]=G:m[S]=G;Object.keys(d).length>0&&(u.state={...u.state,...d}),Object.keys(p).length>0&&(f.state={...f.state,...p});let h=s.create(O,{id:a,appName:t,userId:o,state:m,createTime:c,updateTime:c});s.persist(h),await s.flush();let C=re(u.state,f.state,m);return ue({id:a,appName:t,userId:o,state:C,events:[],lastUpdateTime:h.createTime.getTime()})}async getSession({appName:t,userId:o,sessionId:r,config:i}){await this.init();let s=this.orm.em.fork(),a=await s.findOne(O,{appName:t,userId:o,id:r});if(!a)return;let c={appName:t,userId:o,sessionId:r};i!=null&&i.afterTimestamp&&(c.timestamp={$gt:new Date(i.afterTimestamp)});let l=await s.find(M,c,{orderBy:{timestamp:"DESC"},limit:i==null?void 0:i.numRecentEvents});l.reverse();let u=await s.findOne(U,{appName:t}),f=await s.findOne(N,{appName:t,userId:o}),d=re((u==null?void 0:u.state)||{},(f==null?void 0:f.state)||{},a.state);return ue({id:r,appName:t,userId:o,state:d,events:l.map(p=>p.eventData),lastUpdateTime:a.updateTime.getTime()})}async listSessions({appName:t,userId:o}){await this.init();let r=this.orm.em.fork(),i={appName:t};o&&(i.userId=o);let s=await r.find(O,i),a=await r.findOne(U,{appName:t}),c=(a==null?void 0:a.state)||{},l={};if(o){let f=await r.findOne(N,{appName:t,userId:o});f&&(l[o]=f.state)}else{let f=await r.find(N,{appName:t});for(let d of f)l[d.userId]=d.state}return{sessions:s.map(f=>{let d=l[f.userId]||{},p=re(c,d,f.state);return ue({id:f.id,appName:f.appName,userId:f.userId,state:p,events:[],lastUpdateTime:f.updateTime.getTime()})})}}async deleteSession({appName:t,userId:o,sessionId:r}){await this.init();let i=this.orm.em.fork();await i.nativeDelete(O,{appName:t,userId:o,id:r}),await i.nativeDelete(M,{appName:t,userId:o,sessionId:r})}async appendEvent({session:t,event:o}){await this.init();let r=this.orm.em.fork();if(o.partial)return o;let i=sn(o);return await r.transactional(async s=>{let a=await s.findOne(O,{appName:t.appName,userId:t.userId,id:t.id},{lockMode:Rn.LockMode.PESSIMISTIC_WRITE});if(!a)throw new Error(`Session ${t.id} not found for appendEvent`);let c=await s.findOne(U,{appName:t.appName});c||(c=s.create(U,{appName:t.appName,state:{},updateTime:new Date}),s.persist(c));let l=await s.findOne(N,{appName:t.appName,userId:t.userId});if(l||(l=s.create(N,{appName:t.appName,userId:t.userId,state:{}}),s.persist(l)),a.updateTime.getTime()>t.lastUpdateTime){let d=await s.find(M,{appName:t.appName,userId:t.userId,sessionId:t.id},{orderBy:{timestamp:"ASC"}}),p=re(c.state,l.state,a.state);t.state=p,t.events=d.map(m=>m.eventData)}if(o.actions&&o.actions.stateDelta){let d={},p={},m={};for(let[h,C]of Object.entries(o.actions.stateDelta))h.startsWith(E.APP_PREFIX)?d[h.replace(E.APP_PREFIX,"")]=C:h.startsWith(E.USER_PREFIX)?p[h.replace(E.USER_PREFIX,"")]=C:m[h]=C;Object.keys(d).length>0&&(c.state={...c.state,...d}),Object.keys(p).length>0&&(l.state={...l.state,...p}),Object.keys(m).length>0&&(a.state={...a.state,...m})}let u=s.create(M,{id:i.id,appName:t.appName,userId:t.userId,sessionId:t.id,invocationId:i.invocationId,timestamp:new Date(i.timestamp),eventData:i});s.persist(u),await s.commit(),a.updateTime=new Date(o.timestamp);let f=re(c.state,l.state,a.state);t.state=f,t.events.push(o),t.lastUpdateTime=a.updateTime.getTime()}),o}};function Ts(n){if(Vi(n))return new W;if(ys(n))return new et(n);throw new Error(`Unsupported session service URI: ${n}`)}var Ss=require("@google-cloud/opentelemetry-cloud-monitoring-exporter"),Rs=require("@google-cloud/opentelemetry-cloud-trace-exporter"),Is=require("@opentelemetry/resource-detector-gcp"),ws=require("@opentelemetry/resources"),bs=require("@opentelemetry/sdk-metrics"),ks=require("@opentelemetry/sdk-trace-base"),Ps=require("google-auth-library");var Dc="Cannot determine GCP Project. OTel GCP Exporters cannot be set up. Please make sure to log into correct GCP Project.";async function Bc(){try{return await new Ps.GoogleAuth().getProjectId()||void 0}catch{return}}async function Fc(n={}){let{enableTracing:e=!1,enableMetrics:t=!1}=n,o=await Bc();return o?{spanProcessors:e?[new ks.BatchSpanProcessor(new Rs.TraceExporter({projectId:o}))]:[],metricReaders:t?[new bs.PeriodicExportingMetricReader({exporter:new Ss.MetricExporter({projectId:o}),exportIntervalMillis:5e3})]:[],logRecordProcessors:[]}:(g.warn(Dc),{})}function Uc(){return(0,ws.detectResources)({detectors:[Is.gcpDetector]})}var In=require("@opentelemetry/api"),_s=require("@opentelemetry/api-logs"),Ls=require("@opentelemetry/exporter-logs-otlp-http"),Os=require("@opentelemetry/exporter-metrics-otlp-http"),Ms=require("@opentelemetry/exporter-trace-otlp-http"),Ns=require("@opentelemetry/resources"),wn=require("@opentelemetry/sdk-logs"),bn=require("@opentelemetry/sdk-metrics"),Ds=require("@opentelemetry/sdk-trace-base"),Bs=require("@opentelemetry/sdk-trace-node");function $c(n=[],e){let t=e||Gc(),o=[...n,Vc()],r=o.flatMap(a=>a.spanProcessors||[]),i=o.flatMap(a=>a.metricReaders||[]),s=o.flatMap(a=>a.logRecordProcessors||[]);if(r.length>0){let a=new Bs.NodeTracerProvider({resource:t,spanProcessors:r});a.register(),In.trace.setGlobalTracerProvider(a)}if(i.length>0){let a=new bn.MeterProvider({readers:i,resource:t});In.metrics.setGlobalMeterProvider(a)}if(s.length>0){let a=new wn.LoggerProvider({resource:t,processors:s});_s.logs.setGlobalLoggerProvider(a)}}function Gc(){return(0,Ns.detectResources)({detectors:[]})}function qc(){return{enableTracing:!!(process.env.OTEL_EXPORTER_OTLP_ENDPOINT||process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT),enableMetrics:!!(process.env.OTEL_EXPORTER_OTLP_ENDPOINT||process.env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT),enableLogging:!!(process.env.OTEL_EXPORTER_OTLP_ENDPOINT||process.env.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT)}}function Vc(n=qc()){let{enableTracing:e,enableMetrics:t,enableLogging:o}=n;return{spanProcessors:e?[new Ds.BatchSpanProcessor(new Ms.OTLPTraceExporter)]:[],metricReaders:t?[new bn.PeriodicExportingMetricReader({exporter:new Os.OTLPMetricExporter})]:[],logRecordProcessors:o?[new wn.BatchLogRecordProcessor(new Ls.OTLPLogExporter)]:[]}}var Fs=require("@modelcontextprotocol/sdk/client/index.js"),Us=require("@modelcontextprotocol/sdk/client/stdio.js"),$s=require("@modelcontextprotocol/sdk/client/streamableHttp.js");var bt=class{constructor(e){this.connectionParams=e}async createSession(){var t;let e=new Fs.Client({name:"MCPClient",version:"1.0.0"});switch(this.connectionParams.type){case"StdioConnectionParams":await e.connect(new Us.StdioClientTransport(this.connectionParams.serverParams));break;case"StreamableHTTPConnectionParams":{let o=(t=this.connectionParams.transportOptions)!=null?t:{};!o.requestInit&&this.connectionParams.header!==void 0&&(o.requestInit={headers:this.connectionParams.header}),await e.connect(new $s.StreamableHTTPClientTransport(new URL(this.connectionParams.url),o));break}default:{let o=this.connectionParams;break}}return e}};var K=require("@google/genai"),Be=require("zod");var Gv=Be.z.object({type:Be.z.literal("object"),properties:Be.z.record(Be.z.string(),Be.z.unknown()).optional(),required:Be.z.string().array().optional()});function jc(n){if(!n)return K.Type.TYPE_UNSPECIFIED;switch(n.toLowerCase()){case"text":case"string":return K.Type.STRING;case"number":return K.Type.NUMBER;case"boolean":return K.Type.BOOLEAN;case"integer":return K.Type.INTEGER;case"array":return K.Type.ARRAY;case"object":return K.Type.OBJECT;case"null":return K.Type.NULL;default:return K.Type.TYPE_UNSPECIFIED}}var Gs=n=>{var e,t;return typeof n=="string"?n.toLowerCase():(t=(e=n==null?void 0:n.type)==null?void 0:e.toLowerCase)==null?void 0:t.call(e)};function $o(n){if(!n)return;function e(t){var c;let o=(c=t.anyOf)!=null?c:t.type,r=!1,i;if(Array.isArray(o)){if(i=o.filter(l=>Gs(l)!=="null"),r=o.some(l=>Gs(l)==="null"),i.length===1){let l=i[0];if(typeof l=="object")t=l;else{let{type:u,anyOf:f,...d}=t;t={...d,type:l}}}else if(i.length===0&&r){let{type:l,anyOf:u,...f}=t;t={...f,type:"null"}}else if(typeof t.anyOf>"u"){let l=t.type.map(d=>({type:d})),{type:u,...f}=t;t={...f,anyOf:l}}}t.type||(t.properties||t.$ref?t.type="object":t.items?t.type="array":r&&(t.type="null"));let s=jc(t.type),a={};if(t.anyOf?a.anyOf=t.anyOf.map(l=>e(l)):a.type=s,t.description&&(a.description=t.description),r&&t.type!=="null"&&(a.nullable=!0),s===K.Type.OBJECT){if(a.properties={},t.properties)for(let l in t.properties)a.properties[l]=e(t.properties[l]);t.required&&(a.required=t.required)}else s===K.Type.ARRAY&&t.items&&(a.items=e(t.items));return a}return e(n)}var kt=class extends k{constructor(e,t){super({name:e.name,description:e.description||""}),this.mcpTool=e,this.mcpSessionManager=t}_getDeclaration(){return{name:this.mcpTool.name,description:this.mcpTool.description,parameters:$o(this.mcpTool.inputSchema),response:$o(this.mcpTool.outputSchema)}}async runAsync(e){let t=await this.mcpSessionManager.createSession(),o={};return o.params={name:this.mcpTool.name,arguments:e.args},await t.callTool(o.params)}};var Go=class extends He{constructor(e,t=[],o){super(t,o),this.mcpSessionManager=new bt(e)}async getTools(){let t=await(await this.mcpSessionManager.createSession()).listTools();g.debug(`number of tools: ${t.tools.length}`);for(let o of t.tools)g.debug(`tool: ${o.name}`);return t.tools.map(o=>{let r={...o,name:this.prefix?`${this.prefix}_${o.name}`:o.name};return new kt(r,this.mcpSessionManager)})}async close(){}};0&&(module.exports={A2AAgentExecutor,AGENT_CARD_PATH,ActiveStreamingTool,AgentTool,ApigeeLlm,AuthCredentialTypes,BaseAgent,BaseCodeExecutor,BaseExampleProvider,BaseLlm,BaseLlmRequestProcessor,BaseLlmResponseProcessor,BasePlugin,BaseSessionService,BaseTool,BaseToolset,BuiltInCodeExecutor,CONTENT_REQUEST_PROCESSOR,ContentRequestProcessor,Context,ContextCompactorRequestProcessor,DatabaseSessionService,EXIT_LOOP,EventType,ExitLoopTool,FileArtifactService,FunctionTool,GOOGLE_SEARCH,GcsArtifactService,Gemini,GoogleLLMVariant,GoogleSearchTool,InMemoryArtifactService,InMemoryMemoryService,InMemoryPolicyEngine,InMemoryRunner,InMemorySessionService,InvocationContext,LLMRegistry,LOAD_ARTIFACTS,LOAD_MEMORY,LiveRequestQueue,LlmAgent,LlmSummarizer,LoadArtifactsTool,LoadMemoryTool,LogLevel,LoggingPlugin,LongRunningFunctionTool,LoopAgent,MCPSessionManager,MCPTool,MCPToolset,PRELOAD_MEMORY,ParallelAgent,PluginManager,PolicyOutcome,PreloadMemoryTool,REQUEST_CONFIRMATION_FUNCTION_CALL_NAME,ReadonlyContext,RemoteA2AAgent,Runner,SecurityPlugin,SequentialAgent,State,StreamingMode,TokenBasedContextCompactor,ToolConfirmation,TruncatingContextCompactor,createEvent,createEventActions,createSession,functionsExportedForTestingOnly,geminiInitParams,getA2AAgentCard,getArtifactServiceFromUri,getAskUserConfirmationFunctionCalls,getFunctionCalls,getFunctionResponses,getGcpExporters,getGcpResource,getLogger,getSessionServiceFromUri,hasTrailingCodeExecutionResult,isAgentTool,isBaseAgent,isBaseExampleProvider,isBaseLlm,isBaseTool,isBaseToolset,isCompactedEvent,isFinalResponse,isFunctionTool,isGemini2OrAbove,isLlmAgent,isLoopAgent,isParallelAgent,isRunner,isSequentialAgent,maybeSetOtelProviders,mergeStates,setLogLevel,setLogger,stringifyContent,toA2a,toStructuredEvents,trimTempDeltaState,version,zodObjectToSchema});
|
|
90
114
|
/**
|
|
91
115
|
* @license
|
|
92
|
-
* Copyright
|
|
116
|
+
* Copyright 2026 Google LLC
|
|
93
117
|
* SPDX-License-Identifier: Apache-2.0
|
|
94
118
|
*/
|
|
95
119
|
/**
|
|
96
120
|
* @license
|
|
97
|
-
* Copyright
|
|
121
|
+
* Copyright 2025 Google LLC
|
|
98
122
|
* SPDX-License-Identifier: Apache-2.0
|
|
99
123
|
*/
|
|
100
124
|
//# sourceMappingURL=index.js.map
|