@google/adk 1.0.0 → 1.2.0
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/dist/cjs/agents/functions.js +4 -0
- package/dist/cjs/auth/oauth2/oauth2_discovery.js +26 -2
- package/dist/cjs/code_executors/agent_engine_sandbox_code_executor.js +305 -0
- package/dist/cjs/code_executors/code_execution_utils.js +1 -1
- package/dist/cjs/common.js +19 -0
- package/dist/cjs/events/event.js +3 -1
- package/dist/cjs/index.js +97 -125
- package/dist/cjs/integrations/agent_registry/agent_registry.js +362 -0
- package/dist/cjs/integrations/agent_registry/agent_registry_mcp_toolset.js +103 -0
- package/dist/cjs/integrations/agent_registry/helpers.js +57 -0
- package/dist/cjs/integrations/agent_registry/types.js +50 -0
- package/dist/cjs/memory/vertex_ai_memory_bank_service.js +496 -0
- package/dist/cjs/runner/in_memory_runner.js +10 -5
- package/dist/cjs/runner/runner.js +32 -2
- package/dist/cjs/sessions/database_session_service.js +49 -3
- package/dist/cjs/sessions/in_memory_session_service.js +70 -14
- package/dist/cjs/sessions/registry.js +4 -0
- package/dist/cjs/sessions/vertex_ai_session_service.js +428 -0
- package/dist/cjs/tools/agent_tool.js +11 -6
- package/dist/cjs/tools/exit_loop_tool.js +9 -0
- package/dist/cjs/tools/function_tool.js +7 -2
- package/dist/cjs/tools/google_maps_grounding_tool.js +80 -0
- package/dist/cjs/tools/long_running_tool.js +2 -1
- package/dist/cjs/tools/mcp/mcp_session_manager.js +11 -0
- package/dist/cjs/tools/mcp/mcp_tool.js +12 -7
- package/dist/cjs/tools/mcp/mcp_toolset.js +27 -4
- package/dist/cjs/tools/openapi_tool/auth/auth_helpers.js +78 -0
- package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +84 -0
- package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +133 -0
- package/dist/cjs/tools/skill/load_skill_resource_tool.js +2 -25
- package/dist/cjs/tools/url_context_tool.js +73 -0
- package/dist/cjs/tools/vertex_ai_search_tool.js +127 -0
- package/dist/cjs/tools/vertex_rag_retrieval_tool.js +64 -0
- package/dist/cjs/utils/file_utils.js +28 -0
- package/dist/cjs/utils/gemini_schema_util.js +18 -0
- package/dist/cjs/utils/model_name.js +8 -2
- package/dist/cjs/utils/partial_copy.js +51 -0
- package/dist/cjs/utils/streaming_utils.js +167 -121
- package/dist/cjs/utils/vertex_ai_utils.js +50 -0
- package/dist/cjs/version.js +1 -1
- package/dist/esm/agents/functions.js +4 -0
- package/dist/esm/auth/oauth2/oauth2_discovery.js +26 -2
- package/dist/esm/code_executors/agent_engine_sandbox_code_executor.js +281 -0
- package/dist/esm/code_executors/code_execution_utils.js +1 -1
- package/dist/esm/common.js +15 -0
- package/dist/esm/events/event.js +3 -1
- package/dist/esm/index.js +54 -130
- package/dist/esm/integrations/agent_registry/agent_registry.js +333 -0
- package/dist/esm/integrations/agent_registry/agent_registry_mcp_toolset.js +77 -0
- package/dist/esm/integrations/agent_registry/helpers.js +28 -0
- package/dist/esm/integrations/agent_registry/types.js +20 -0
- package/dist/esm/memory/vertex_ai_memory_bank_service.js +468 -0
- package/dist/esm/runner/in_memory_runner.js +10 -5
- package/dist/esm/runner/runner.js +32 -2
- package/dist/esm/sessions/database_session_service.js +49 -3
- package/dist/esm/sessions/in_memory_session_service.js +70 -14
- package/dist/esm/sessions/registry.js +7 -0
- package/dist/esm/sessions/vertex_ai_session_service.js +403 -0
- package/dist/esm/tools/agent_tool.js +11 -6
- package/dist/esm/tools/exit_loop_tool.js +9 -0
- package/dist/esm/tools/function_tool.js +7 -2
- package/dist/esm/tools/google_maps_grounding_tool.js +54 -0
- package/dist/esm/tools/long_running_tool.js +2 -1
- package/dist/esm/tools/mcp/mcp_session_manager.js +11 -0
- package/dist/esm/tools/mcp/mcp_tool.js +12 -7
- package/dist/esm/tools/mcp/mcp_toolset.js +27 -4
- package/dist/esm/tools/openapi_tool/auth/auth_helpers.js +48 -0
- package/dist/esm/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +60 -0
- package/dist/esm/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +111 -0
- package/dist/esm/tools/skill/load_skill_resource_tool.js +1 -24
- package/dist/esm/tools/url_context_tool.js +44 -0
- package/dist/esm/tools/vertex_ai_search_tool.js +103 -0
- package/dist/esm/tools/vertex_rag_retrieval_tool.js +36 -0
- package/dist/esm/utils/file_utils.js +26 -0
- package/dist/esm/utils/gemini_schema_util.js +18 -0
- package/dist/esm/utils/model_name.js +6 -1
- package/dist/esm/utils/partial_copy.js +23 -0
- package/dist/esm/utils/streaming_utils.js +165 -120
- package/dist/esm/utils/vertex_ai_utils.js +22 -0
- package/dist/esm/version.js +1 -1
- package/dist/types/a2a/a2a_remote_agent.d.ts +14 -0
- package/dist/types/agents/processors/base_llm_processor.d.ts +12 -4
- package/dist/types/agents/processors/basic_llm_request_processor.d.ts +5 -0
- package/dist/types/agents/processors/identity_llm_request_processor.d.ts +4 -0
- package/dist/types/agents/processors/request_confirmation_llm_request_processor.d.ts +5 -0
- package/dist/types/agents/run_config.d.ts +15 -0
- package/dist/types/code_executors/agent_engine_sandbox_code_executor.d.ts +51 -0
- package/dist/types/common.d.ts +7 -0
- package/dist/types/events/event_actions.d.ts +24 -6
- package/dist/types/events/structured_events.d.ts +13 -0
- package/dist/types/examples/example_util.d.ts +25 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/integrations/agent_registry/agent_registry.d.ts +94 -0
- package/dist/types/integrations/agent_registry/agent_registry_mcp_toolset.d.ts +43 -0
- package/dist/types/integrations/agent_registry/helpers.d.ts +7 -0
- package/dist/types/integrations/agent_registry/types.d.ts +101 -0
- package/dist/types/memory/vertex_ai_memory_bank_service.d.ts +52 -0
- package/dist/types/runner/in_memory_runner.d.ts +28 -1
- package/dist/types/runner/runner.d.ts +47 -0
- package/dist/types/sessions/base_session_service.d.ts +18 -0
- package/dist/types/sessions/database_session_service.d.ts +1 -1
- package/dist/types/sessions/in_memory_session_service.d.ts +1 -1
- package/dist/types/sessions/vertex_ai_session_service.d.ts +37 -0
- package/dist/types/tools/exit_loop_tool.d.ts +9 -0
- package/dist/types/tools/function_tool.d.ts +22 -2
- package/dist/types/tools/google_maps_grounding_tool.d.ts +22 -0
- package/dist/types/tools/long_running_tool.d.ts +11 -1
- package/dist/types/tools/mcp/mcp_session_manager.d.ts +3 -0
- package/dist/types/tools/mcp/mcp_tool.d.ts +7 -1
- package/dist/types/tools/mcp/mcp_toolset.d.ts +7 -1
- package/dist/types/tools/openapi_tool/auth/auth_helpers.d.ts +25 -0
- package/dist/types/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.d.ts +20 -0
- package/dist/types/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.d.ts +20 -0
- package/dist/types/tools/url_context_tool.d.ts +17 -0
- package/dist/types/tools/vertex_ai_search_tool.d.ts +55 -0
- package/dist/types/tools/vertex_rag_retrieval_tool.d.ts +42 -0
- package/dist/types/utils/file_utils.d.ts +2 -0
- package/dist/types/utils/model_name.d.ts +4 -0
- package/dist/types/utils/partial_copy.d.ts +13 -0
- package/dist/types/utils/streaming_utils.d.ts +8 -17
- package/dist/types/utils/vertex_ai_utils.d.ts +14 -0
- package/dist/types/version.d.ts +1 -1
- package/dist/web/agents/functions.js +4 -0
- package/dist/web/auth/oauth2/oauth2_discovery.js +26 -2
- package/dist/web/code_executors/agent_engine_sandbox_code_executor.js +281 -0
- package/dist/web/code_executors/code_execution_utils.js +1 -1
- package/dist/web/common.js +15 -0
- package/dist/web/events/event.js +3 -1
- package/dist/web/index.js +54 -12
- package/dist/web/integrations/agent_registry/agent_registry.js +333 -0
- package/dist/web/integrations/agent_registry/agent_registry_mcp_toolset.js +90 -0
- package/dist/web/integrations/agent_registry/helpers.js +28 -0
- package/dist/web/integrations/agent_registry/types.js +20 -0
- package/dist/web/memory/vertex_ai_memory_bank_service.js +475 -0
- package/dist/web/runner/in_memory_runner.js +10 -5
- package/dist/web/runner/runner.js +32 -2
- package/dist/web/sessions/database_session_service.js +49 -3
- package/dist/web/sessions/in_memory_session_service.js +70 -14
- package/dist/web/sessions/registry.js +7 -0
- package/dist/web/sessions/vertex_ai_session_service.js +414 -0
- package/dist/web/tools/agent_tool.js +11 -6
- package/dist/web/tools/exit_loop_tool.js +9 -0
- package/dist/web/tools/function_tool.js +7 -2
- package/dist/web/tools/google_maps_grounding_tool.js +54 -0
- package/dist/web/tools/long_running_tool.js +2 -1
- package/dist/web/tools/mcp/mcp_session_manager.js +11 -0
- package/dist/web/tools/mcp/mcp_tool.js +12 -7
- package/dist/web/tools/mcp/mcp_toolset.js +27 -4
- package/dist/web/tools/openapi_tool/auth/auth_helpers.js +48 -0
- package/dist/web/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +60 -0
- package/dist/web/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +111 -0
- package/dist/web/tools/skill/load_skill_resource_tool.js +1 -24
- package/dist/web/tools/url_context_tool.js +44 -0
- package/dist/web/tools/vertex_ai_search_tool.js +103 -0
- package/dist/web/tools/vertex_rag_retrieval_tool.js +36 -0
- package/dist/web/utils/file_utils.js +26 -0
- package/dist/web/utils/gemini_schema_util.js +18 -0
- package/dist/web/utils/model_name.js +6 -1
- package/dist/web/utils/partial_copy.js +23 -0
- package/dist/web/utils/streaming_utils.js +219 -121
- package/dist/web/utils/vertex_ai_utils.js +22 -0
- package/dist/web/version.js +1 -1
- package/package.json +3 -2
- package/dist/cjs/index.js.map +0 -7
- package/dist/esm/index.js.map +0 -7
- package/dist/web/index.js.map +0 -7
package/dist/esm/index.js
CHANGED
|
@@ -1,137 +1,61 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2026 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
1
|
import {createRequire as topLevelCreateRequire} from 'module';
|
|
7
2
|
const require = topLevelCreateRequire(import.meta.url);
|
|
8
|
-
var sa=Object.create;var _n=Object.defineProperty;var xr=Object.getOwnPropertyDescriptor;var aa=Object.getOwnPropertyNames;var ca=Object.getPrototypeOf,la=Object.prototype.hasOwnProperty;var ft=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var ua=(n,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of aa(e))!la.call(n,r)&&r!==t&&_n(n,r,{get:()=>e[r],enumerable:!(o=xr(e,r))||o.enumerable});return n};var dt=(n,e,t)=>(t=n!=null?sa(ca(n)):{},ua(e||!n||!n.__esModule?_n(t,"default",{value:n,enumerable:!0}):t,n));var v=(n,e,t,o)=>{for(var r=o>1?void 0:o?xr(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&&_n(e,t,r),r};import{AGENT_CARD_PATH as nl}from"@a2a-js/sdk";import{ClientFactory as ol}from"@a2a-js/sdk/client";import{context as Gr,trace as jr}from"@opentelemetry/api";function Tr(n,e=[]){return Gt(n,fa,"",e)}function Sr(n,e=[]){return Gt(n,da,"",e)}var fa=n=>n.replace(/_([a-z])/g,(e,t)=>t.toUpperCase()),da=n=>n.replace(/[A-Z]/g,e=>"_"+e.toLowerCase());function Gt(n,e,t="",o=[]){if(Array.isArray(n))return n.map(r=>Gt(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]=Gt(r[s],e,c,o)}return i}return n}function V(n={}){return{stateDelta:{},artifactDelta:{},requestedAuthConfigs:{},requestedToolConfirmations:{},...n}}function Rr(n,e){let t=V();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 x(n={}){return{...n,id:n.id||Ln(),invocationId:n.invocationId||"",author:n.author,actions:n.actions||V(),longRunningToolIds:n.longRunningToolIds||[],branch:n.branch,timestamp:n.timestamp||Date.now()}}function Ce(n){return n.actions.skipSummarization||n.longRunningToolIds&&n.longRunningToolIds.length>0?!0:P(n).length===0&&K(n).length===0&&!n.partial&&!Ir(n)}function P(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 K(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 Ir(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 pt(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 wr="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";function Ln(){let n="";for(let e=0;e<8;e++)n+=wr[Math.floor(Math.random()*wr.length)];return n}var pa=["actions.stateDelta","actions.artifactDelta","actions.requestedAuthConfigs","actions.requestedToolConfirmations","actions.customMetadata","content.parts.functionCall.args","content.parts.functionResponse.response"],ma=["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 On(n){return Tr(n,ma)}function br(n){return Sr(n,pa)}import{context as Mn,trace as Ct}from"@opentelemetry/api";var mt="1.0.0";var ga="gen_ai.agent.description",ha="gen_ai.agent.name",Ca="gen_ai.conversation.id",Nn="gen_ai.operation.name",kr="gen_ai.tool.call.id",Pr="gen_ai.tool.description",_r="gen_ai.tool.name",va="gen_ai.tool.type",ie=Ct.getTracer("gcp.vertex.agent",mt);function gt(n){try{return JSON.stringify(n)}catch{return"<not serializable>"}}function Lr({agent:n,invocationContext:e}){let t=Ct.getActiveSpan();t&&t.setAttributes({[Nn]:"invoke_agent",[ga]:n.description,[ha]:n.name,[Ca]:e.session.id})}function Or({tool:n,args:e,functionResponseEvent:t}){var s,a;let o=Ct.getActiveSpan();if(!o)return;o.setAttributes({[Nn]:"execute_tool",[Pr]:n.description||"",[_r]:n.name,[va]:n.constructor.name,"gcp.vertex.agent.llm_request":"{}","gcp.vertex.agent.llm_response":"{}","gcp.vertex.agent.tool_call_args":ht()?gt(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({[kr]:r,"gcp.vertex.agent.event_id":t.id,"gcp.vertex.agent.tool_response":ht()?gt(i):"{}"})}function Mr({responseEventId:n,functionResponseEvent:e}){let t=Ct.getActiveSpan();t&&(t.setAttributes({[Nn]:"execute_tool",[_r]:"(merged tools)",[Pr]:"(merged tools)",[kr]: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",ht()?gt(e):"{}"))}function Nr({invocationContext:n,eventId:e,llmRequest:t,llmResponse:o}){var i,s,a;let r=Ct.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":ht()?gt(Aa(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",ht()?gt(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 Aa(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 Fr(n,e){return{next:Mn.bind(n,e.next.bind(e)),return:Mn.bind(n,e.return.bind(e)),throw:Mn.bind(n,e.throw.bind(e)),[Symbol.asyncIterator](){return Fr(n,e[Symbol.asyncIterator]())}}}function be(n,e,t){let o=t.call(e);return Fr(n,o)}function ht(){let n=process.env.ADK_CAPTURE_MESSAGE_CONTENT_IN_SPANS||"true";return n==="true"||n==="1"}function Z(){return typeof window<"u"}var jt="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function I(){let n="";for(let e=0;e<jt.length;e++){let t=Math.random()*16|0;jt[e]==="x"?n+=t.toString(16):jt[e]==="y"?n+=(t&3|8).toString(16):n+=jt[e]}return n}function Br(n){return Z()?window.atob(n):Buffer.from(n,"base64").toString()}function ke(n){if(!process.env)return!1;let e=(process.env[n]||"").toLowerCase();return["true","1"].includes(e)}import*as ee from"winston";var Dr=(r=>(r[r.DEBUG=0]="DEBUG",r[r.INFO=1]="INFO",r[r.WARN=2]="WARN",r[r.ERROR=3]="ERROR",r))(Dr||{}),Fn=class{constructor(){this.logLevel=1;this.logger=ee.createLogger({levels:{debug:0,info:1,warn:2,error:3},level:"error",format:ee.format.combine(ee.format.label({label:"ADK"}),ee.format(e=>(e.level=e.level.toUpperCase(),e))(),ee.format.colorize(),ee.format.timestamp(),ee.format.printf(e=>`${e.level}: [${e.label}] ${e.timestamp} ${e.message}`)),transports:[new ee.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(" "))}},Bn=class{setLogLevel(e){}log(e,...t){}debug(...e){}info(...e){}warn(...e){}error(...e){}},ve=new Fn;function Ea(n){ve=n!=null?n:new Bn}function Dn(){return ve}function ya(n){m.setLogLevel(n)}var m={setLogLevel(n){ve.setLogLevel(n)},log(n,...e){ve.log(n,...e)},debug(...n){ve.debug(...n)},info(...n){ve.info(...n)},warn(...n){ve.warn(...n)},error(...n){ve.error(...n)}};var Un=(r=>(r.CLIENT_CREDENTIALS="client_credentials",r.AUTHORIZATION_CODE="authorization_code",r.IMPLICIT="implicit",r.PASSWORD="password",r))(Un||{});function Ur(n){if(n.clientCredentials)return"client_credentials";if(n.authorizationCode)return"authorization_code";if(n.implicit)return"implicit";if(n.password)return"password"}var z=class extends Error{};function $n(n){if(n.type==="openIdConnect"&&n.tokenEndpoint)return n.tokenEndpoint;if(n.type==="oauth2"&&n.flows){let e=n.flows,t=e.authorizationCode||e.clientCredentials||e.password||e.implicit;if(t&&"tokenUrl"in t)return t.tokenUrl}}async function qn(n,e){try{let t=await fetch(n,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e.toString()});if(!t.ok)throw new Error(`Token request failed with status ${t.status}`);let o=await t.json();return{accessToken:o.access_token,refreshToken:o.refresh_token,idToken:o.id_token,expiresIn:o.expires_in,expiresAt:o.expires_in?Date.now()+o.expires_in*1e3:void 0}}catch(t){throw m.error(`Failed to fetch OAuth2 tokens: ${t}`),t}}function $r(n){try{return new URL(n).searchParams.get("code")||void 0}catch(e){m.warn(`Failed to parse authorization URI ${n}: ${e}`);return}}function Gn(n){let e=new URLSearchParams;return e.set("grant_type",n.grantType),e.set("client_id",n.clientId),e.set("client_secret",n.clientSecret),n.grantType==="authorization_code"?(e.set("code",n.code),n.redirectUri&&e.set("redirect_uri",n.redirectUri),n.codeVerifier&&e.set("code_verifier",n.codeVerifier)):n.grantType==="refresh_token"&&e.set("refresh_token",n.refreshToken),e}var vt=class{async exchange({authCredential:e,authScheme:t}){var r;if(!t)throw new z("authScheme is required for OAuth2 credential exchange");if((r=e.oauth2)!=null&&r.accessToken)return{credential:e,wasExchanged:!1};let o=xa(t);return o==="client_credentials"?Ta({authCredential:e,authScheme:t}):o==="authorization_code"?Sa({authCredential:e,authScheme:t}):(m.warn(`Unsupported OAuth2 grant type: ${o}`),{credential:e,wasExchanged:!1})}};function xa(n){var e;if("flows"in n&&n.flows)return Ur(n.flows);if(n.grantTypesSupported)return(e=n.grantTypesSupported)!=null&&e.includes("client_credentials")?"client_credentials":"authorization_code"}async function Ta({authCredential:n,authScheme:e}){var r,i;let t=$n(e);if(!t)throw new z("Token endpoint not found in auth scheme.");if(!((r=n.oauth2)!=null&&r.clientId)||!((i=n.oauth2)!=null&&i.clientSecret))throw new z("clientId and clientSecret are required for client credentials exchange.");let o=Gn({grantType:"client_credentials",clientId:n.oauth2.clientId,clientSecret:n.oauth2.clientSecret});try{let s=await qn(t,o);return{credential:{...n,oauth2:{...n.oauth2,...s}},wasExchanged:!0}}catch(s){throw new z(`Failed to exchange tokens: ${s instanceof Error?s.message:String(s)}`)}}async function Sa({authCredential:n,authScheme:e}){var i,s,a,c;let t=$n(e);if(!t)throw new z("Token endpoint not found in auth scheme.");if(!((i=n.oauth2)!=null&&i.clientId)||!((s=n.oauth2)!=null&&s.clientSecret)||!((a=n.oauth2)!=null&&a.authCode)&&!((c=n.oauth2)!=null&&c.authResponseUri))throw new z("clientId, clientSecret, and either authCode or authResponseUri are required for authorization code exchange.");let o=n.oauth2.authCode;if(!o&&n.oauth2.authResponseUri&&(o=$r(n.oauth2.authResponseUri)),n.oauth2.authResponseUri&&n.oauth2.state)try{let u=new URL(n.oauth2.authResponseUri).searchParams.get("state")||void 0;if(n.oauth2.state!==u)throw new z("State mismatch detected. Potential CSRF attack.")}catch(l){throw new z(`Failed to parse authResponseUri for state validation: ${l instanceof Error?l.message:String(l)}`)}if(!o)throw new z("Authorization code not found in auth response.");let r=Gn({grantType:"authorization_code",clientId:n.oauth2.clientId,clientSecret:n.oauth2.clientSecret,code:o,redirectUri:n.oauth2.redirectUri,codeVerifier:n.oauth2.codeVerifier});try{let l=await qn(t,r);return{credential:{...n,oauth2:{...n.oauth2,...l}},wasExchanged:!0}}catch(l){throw new z(`Failed to exchange tokens: ${l instanceof Error?l.message:String(l)}`)}}var Ke=class{constructor(e){this.authConfig=e}getAuthResponse(e){let t="temp:"+this.authConfig.credentialKey;return e.get(t)}async parseAndStoreAuthResponse(e){let t="temp:"+this.authConfig.credentialKey,o=this.authConfig.authScheme.type;if(!["oauth2","openIdConnect"].includes(o)){e.set(t,this.authConfig.exchangedAuthCredential);return}if(this.authConfig.exchangedAuthCredential){let i=await new vt().exchange({authCredential:this.authConfig.exchangedAuthCredential,authScheme:this.authConfig.authScheme});e.set(t,i.credential)}}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(){let e=this.authConfig.authScheme,t=this.authConfig.rawAuthCredential;if(!t||!t.oauth2)return t;let o="",r=[];if("authorizationEndpoint"in e)o=e.authorizationEndpoint,r=e.scopes||[];else if(e.type==="oauth2"&&e.flows){let c=e.flows,l=c.implicit||c.authorizationCode||c.clientCredentials||c.password;l&&("authorizationUrl"in l&&l.authorizationUrl?o=l.authorizationUrl:"tokenUrl"in l&&l.tokenUrl&&(o=l.tokenUrl),l.scopes&&(r=Object.keys(l.scopes)))}if(!o)throw new Error("Authorization endpoint not configured in auth scheme.");let i=I(),s=new URL(o);return s.searchParams.set("client_id",t.oauth2.clientId||""),s.searchParams.set("redirect_uri",t.oauth2.redirectUri||""),s.searchParams.set("response_type","code"),s.searchParams.set("scope",r.join(" ")),s.searchParams.set("state",i),s.searchParams.set("access_type","offline"),s.searchParams.set("prompt","consent"),{...t,oauth2:{...t.oauth2,authUri:s.toString(),state:i}}}};var T=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}}};T.APP_PREFIX="app:",T.USER_PREFIX="user:",T.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 T(this.invocationContext.session.state,{})}};var N=class extends b{constructor(e){super(e.invocationContext),this.eventActions=e.eventActions||V(),this._state=new T(e.invocationContext.session.state,this.eventActions.stateDelta),this.functionCallId=e.functionCallId,this.toolConfirmation=e.toolConfirmation,this.abortSignal=e.invocationContext.abortSignal}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 Ke(e);this.eventActions.requestedAuthConfigs[this.functionCallId]=t.generateAuthRequest()}getAuthResponse(e){return new Ke(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})}};var jn=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`)}},Y=class{constructor(e){this.invocationCostManager=new jn;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,this.abortSignal=e.abortSignal}get appName(){return this.session.appName}get userId(){return this.session.userId}incrementLlmCallCount(){this.invocationCostManager.incrementAndEnforceLlmCallsLimit(this.runConfig)}};function qr(){return`e-${I()}`}var Vn=Symbol.for("google.adk.baseAgent");function Ra(n){return typeof n=="object"&&n!==null&&Vn in n&&n[Vn]===!0}var zr;zr=Vn;var $=class{constructor(e){this[zr]=!0;this.name=wa(e.name),this.description=e.description,this.parentAgent=e.parentAgent,this.subAgents=e.subAgents||[],this.beforeAgentCallback=Vr(e.beforeAgentCallback),this.afterAgentCallback=Vr(e.afterAgentCallback),this.setParentAgentForSubAgents()}get rootAgent(){return ba(this)}async*runAsync(e){let t=ie.startSpan(`invoke_agent ${this.name}`),o=jr.setSpan(Gr.active(),t);try{yield*be(o,this,async function*(){var a,c;let r=this.createInvocationContext(e),i=await this.handleBeforeAgentCallback(r);if(i&&(yield i),r.endInvocation||(a=e.abortSignal)!=null&&a.aborted)return;Lr({agent:this,invocationContext:r});for await(let l of this.runAsyncImpl(r))yield l;if(r.endInvocation||(c=e.abortSignal)!=null&&c.aborted)return;let s=await this.handleAfterAgentCallback(r);s&&(yield s)})}finally{t.end()}}async*runLive(e){let t=ie.startSpan(`invoke_agent ${this.name}`),o=jr.setSpan(Gr.active(),t);try{throw yield*be(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 Y({...e,agent:this})}async handleBeforeAgentCallback(e){var o;if(this.beforeAgentCallback.length===0)return;let t=new N({invocationContext:e});for(let r of this.beforeAgentCallback){let i=await r(t);if((o=e.abortSignal)!=null&&o.aborted)return;if(i)return e.endInvocation=!0,x({invocationId:e.invocationId,author:this.name,branch:e.branch,content:i,actions:t.eventActions})}if(t.state.hasDelta())return x({invocationId:e.invocationId,author:this.name,branch:e.branch,actions:t.eventActions})}async handleAfterAgentCallback(e){var o;if(this.afterAgentCallback.length===0)return;let t=new N({invocationContext:e});for(let r of this.afterAgentCallback){let i=await r(t);if((o=e.abortSignal)!=null&&o.aborted)return;if(i)return x({invocationId:e.invocationId,author:this.name,branch:e.branch,content:i,actions:t.eventActions})}if(t.state.hasDelta())return x({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 wa(n){if(!Ia(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 Ia(n){return/^[\p{ID_Start}$_][\p{ID_Continue}$_-]*$/u.test(n)}function ba(n){for(;n.parentAgent;)n=n.parentAgent;return n}function Vr(n){return n?Array.isArray(n)?n:[n]:[]}function Ae(n){return(n==null?void 0:n.kind)==="status-update"}function At(n){return(n==null?void 0:n.kind)==="artifact-update"}function zn(n){return(n==null?void 0:n.kind)==="message"}function se(n){return(n==null?void 0:n.kind)==="task"}function Vt(n){return At(n)?n.artifact.metadata||{}:Ae(n)||se(n)||zn(n)?n.metadata||{}:{}}function zt(n){return(Ae(n)||se(n))&&n.status.state==="failed"}function Wr(n){return(Ae(n)||se(n))&&["completed","failed","canceled","rejected"].includes(n.status.state)}function Wt(n){return(Ae(n)||se(n))&&n.status.state==="input-required"}function Wn(n){var t;if(!zt(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 Hr({contextId:n,message:e,taskId:t,metadata:o}){return{kind:"task",id:t||I(),contextId:n,history:[e],status:{state:"submitted",timestamp:new Date().toISOString()},metadata:o}}function Kr({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 Yr({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 Jr({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||I(),parts:o},metadata:r}}function Ht({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:I(),role:"agent",taskId:n,contextId:e,parts:[{kind:"text",text:t.message}]},timestamp:new Date().toISOString()},metadata:o}}function Xr({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:I(),role:"agent",taskId:n,contextId:e,parts:t},timestamp:new Date().toISOString()},metadata:o}}function Qr({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:I(),role:"agent",taskId:n,contextId:e,parts:t},timestamp:new Date().toISOString()},metadata:o}}import{createModelContent as ka}from"@google/genai";var _="adk_",Zr="a2a:",E=(w=>(w.APP_NAME=`${_}app_name`,w.USER_ID=`${_}user_id`,w.SESSION_ID=`${_}session_id`,w.INVOCATION_ID=`${_}invocation_id`,w.AUTHOR=`${_}author`,w.BRANCH=`${_}branch`,w.DATA_PART_TYPE=`${_}type`,w.PARTIAL=`${_}partial`,w.ESCALATE=`${_}escalate`,w.TRANSFER_TO_AGENT=`${_}transfer_to_agent`,w.IS_LONG_RUNNING=`${_}is_long_running`,w.THOUGHT=`${_}thought`,w.ERROR_CODE=`${_}error_code`,w.ERROR_MESSAGE=`${_}error_message`,w.CITATION_METADATA=`${_}citation_metadata`,w.GROUNDING_METADATA=`${_}grounding_metadata`,w.USAGE_METADATA=`${_}usage_metadata`,w.CUSTOM_METADATA=`${_}custom_metadata`,w.VIDEO_METADATA=`${_}video_metadata`,w))(E||{}),Et=(t=>(t.TASK_ID=`${Zr}task_id`,t.CONTEXT_ID=`${Zr}context_id`,t))(Et||{});function yt(n,{appName:e,userId:t,sessionId:o}){return{...xt(n.actions),...Ee({appName:e,userId:t,sessionId:o}),[E.INVOCATION_ID]:n.invocationId,[E.AUTHOR]:n.author,[E.BRANCH]:n.branch,[E.ERROR_CODE]:n.errorMessage,[E.ERROR_MESSAGE]:n.errorMessage,[E.CITATION_METADATA]:n.citationMetadata,[E.GROUNDING_METADATA]:n.groundingMetadata,[E.USAGE_METADATA]:n.usageMetadata,[E.CUSTOM_METADATA]:n.customMetadata,[E.PARTIAL]:n.partial,[E.IS_LONG_RUNNING]:(n.longRunningToolIds||[]).length>0}}function Ee({appName:n,userId:e,sessionId:t}){return{[E.APP_NAME]:n,[E.USER_ID]:e,[E.SESSION_ID]:t}}function xt(n){return{[E.ESCALATE]:n.escalate,[E.TRANSFER_TO_AGENT]:n.transferToAgent}}var Kt=class{constructor(e){this.request=e;this.aggregations=new Map;this.aggregationOrder=[]}aggregatePartial(e,t,o){if(Vt(t)[E.PARTIAL])return[o];if(Ae(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(se(t))return this.aggregations.clear(),this.aggregationOrder=[],[o];if(!At(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),x({author:e.agent.name,invocationId:e.invocationId,content:t.parts.length>0?ka([...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,se(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)}}};import{createModelContent as Pa,createUserContent as _a}from"@google/genai";function de(n=[],e=[]){return n.map(t=>La(t,e))}function La(n,e){return n.text!==void 0&&n.text!==null?Oa(n):n.inlineData||n.fileData?Ma(n):Na(n,e)}function Oa(n){let e={kind:"text",text:n.text||""};return n.thought&&(e.metadata={[E.THOUGHT]:!0}),e}function Ma(n){let e={};if(n.videoMetadata&&(e[E.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 Na(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={[E.DATA_PART_TYPE]:t};return n.functionCall&&n.functionCall.id&&e.includes(n.functionCall.id)&&(r[E.IS_LONG_RUNNING]=!0),n.functionResponse&&n.functionResponse.id&&e.includes(n.functionResponse.id)&&(r[E.IS_LONG_RUNNING]=!0),{kind:"data",data:o,metadata:r}}function ei(n){let e=ae(n.parts);return n.role==="user"?_a(e):Pa(e)}function ae(n){return n.map(e=>Hn(e))}function Hn(n){if(n.kind==="text")return Fa(n);if(n.kind==="file")return Ba(n);if(n.kind==="data")return Da(n);throw new Error(`Unknown part kind: ${JSON.stringify(n)}`)}function Fa(n){var e;return{text:n.text,thought:!!((e=n.metadata)!=null&&e[E.THOUGHT])}}function Ba(n){var t;let e={};if((t=n.metadata)!=null&&t[E.VIDEO_METADATA]&&(e.videoMetadata=n.metadata[E.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[E.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 ti(n,e){let t=n.events;if(e<0||e>=t.length)return;let o=t[e];if(o.author!=="user")return;let r=$a(o);if(r)for(let i=e-1;i>=0;i--){let s=t[i];if(!Ua(s,r))continue;let a=s.customMetadata||{},c=a[Et.TASK_ID]||"",l=a[Et.CONTEXT_ID]||"";return{response:o,taskId:c,contextId:l}}}function Ua(n,e){return!n||!n.content||!n.content.parts?!1:n.content.parts.some(t=>t.functionCall&&t.functionCall.id===e)}function $a(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 ni(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||{})[Et.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=qa(n,a)),!a.content||!a.content.parts||a.content.parts.length===0)continue;let c=de(a.content.parts,a.longRunningToolIds);i.push(...c)}return{parts:i,contextId:o}}function qa(n,e){let t=x({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}import{DefaultAgentCardResolver as Bc}from"@a2a-js/sdk/client";import*as ds from"fs/promises";import{context as Oc,trace as Mc}from"@opentelemetry/api";var Ga="google-adk",ja="gl-typescript",Va="remote_reasoning_engine",za="GOOGLE_CLOUD_AGENT_ENGINE_ID";function Wa(){let n=`${Ga}/${mt}`;!Z()&&process.env[za]&&(n=`${n}+${Va}`);let e=`${ja}/${Z()?window.navigator.userAgent:process.version}`;return[n,e]}function oi(){return Wa()}var Kn=Symbol.for("google.adk.baseModel");function Yn(n){return typeof n=="object"&&n!==null&&Kn in n&&n[Kn]===!0}var ri;ri=Kn;var ye=class{constructor({model:e}){this[ri]=!0;this.model=e}get trackingHeaders(){let t=oi().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."}]})}};ye.supportedModels=[];import{createPartFromText as ec,GoogleGenAI as to}from"@google/genai";var Yt=(t=>(t.VERTEX_AI="VERTEX_AI",t.GEMINI_API="GEMINI_API",t))(Yt||{});function ii(){return ke("GOOGLE_GENAI_USE_VERTEXAI")?"VERTEX_AI":"GEMINI_API"}import{FinishReason as Zt}from"@google/genai";import{JSONPath as gi}from"jsonpath-plus";import{createUserContent as Ha}from"@google/genai";import{isEmpty as si}from"lodash-es";var Jn="adk-",Jt="adk_request_credential",Ye="adk_request_confirmation",Ka={handleFunctionCallList:Xt,generateAuthEvent:Xn,generateRequestConfirmationEvent:Qn};function _e(){return`${Jn}${I()}`}function ai(n){let e=P(n);if(e)for(let t of e)t.id||(t.id=_e())}function ci(n){if(n&&n.parts)for(let e of n.parts)e.functionCall&&e.functionCall.id&&e.functionCall.id.startsWith(Jn)&&(e.functionCall.id=void 0),e.functionResponse&&e.functionResponse.id&&e.functionResponse.id.startsWith(Jn)&&(e.functionResponse.id=void 0)}function li(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 Xn(n,e){var r;if(!((r=e.actions)!=null&&r.requestedAuthConfigs)||si(e.actions.requestedAuthConfigs))return;let t=[],o=new Set;for(let[i,s]of Object.entries(e.actions.requestedAuthConfigs)){let a={name:Jt,args:{function_call_id:i,auth_config:s},id:_e()};o.add(a.id),t.push({functionCall:a})}return x({invocationId:n.invocationId,author:n.agent.name,branch:n.branch,content:{parts:t,role:e.content.role},longRunningToolIds:Array.from(o)})}function Qn({invocationContext:n,functionCallEvent:e,functionResponseEvent:t}){var s,a;if(!((s=t.actions)!=null&&s.requestedToolConfirmations)||si(t.actions.requestedToolConfirmations))return;let o=[],r=new Set,i=P(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:Ye,args:{originalFunctionCall:u,toolConfirmation:l},id:_e()};r.add(f.id),o.push({functionCall:f})}return x({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 Ya(n,e,t){return ie.startActiveSpan(`execute_tool ${n.name}`,async o=>{try{m.debug(`callToolAsync ${n.name}`);let r=await n.runAsync({args:e,toolContext:t});return Or({tool:n,args:e,functionResponseEvent:Ja(n,r,t,t.invocationContext)}),r}finally{o.end()}})}function Ja(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 x({invocationId:o.invocationId,author:o.agent.name,content:s,actions:t.actions,branch:o.branch})}async function ui({invocationContext:n,functionCallEvent:e,toolsDict:t,beforeToolCallbacks:o,afterToolCallbacks:r,filters:i,toolConfirmationDict:s}){let a=P(e);return await Xt({invocationContext:n,functionCalls:a,toolsDict:t,beforeToolCallbacks:o,afterToolCallbacks:r,filters:i,toolConfirmationDict:s})}async function Xt({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:g}=Xa({invocationContext:n,functionCall:f,toolsDict:t,toolConfirmation:d});m.debug(`execute_tool ${p.name}`);let C=(u=f.args)!=null?u:{},h=null,A;if(h=await n.pluginManager.runBeforeToolCallback({tool:p,toolArgs:C,toolContext:g}),h==null){for(let H of o)if(h=await H({tool:p,args:C,context:g}),h)break}if(h==null)try{h=await Ya(p,C,g)}catch(H){if(H instanceof Error){let lt=await n.pluginManager.runOnToolErrorCallback({tool:p,toolArgs:C,toolContext:g,error:H});lt?h=lt:A=H.message}else A=H}let j=await n.pluginManager.runAfterToolCallback({tool:p,toolArgs:C,toolContext:g,result:h});if(j==null){for(let H of r)if(j=await H({tool:p,args:C,context:g,response:h}),j)break}if(j!=null&&(h=j),p.isLongRunning&&!h)continue;A?h={error:A}:(typeof h!="object"||h==null)&&(h={result:h});let w=x({invocationId:n.invocationId,author:n.agent.name,content:Ha({functionResponse:{id:g.functionCallId,name:p.name,response:h}}),actions:g.actions,branch:n.branch});m.debug("traceToolCall",{tool:p.name,args:C,functionResponseEvent:w.id}),a.push(w)}if(!a.length)return null;let l=Qa(a);return a.length>1&&ie.startActiveSpan("execute_tool (merged)",f=>{try{m.debug("execute_tool (merged)"),m.debug("traceMergedToolCalls",{responseEventId:l.id,functionResponseEvent:l.id}),Mr({responseEventId:l.id,functionResponseEvent:l})}finally{f.end()}}),l}function Xa({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 N({invocationContext:n,functionCallId:e.id||void 0,toolConfirmation:o});return{tool:t[e.name],toolContext:r}}function Qa(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=Rr(o);return x({invocationId:t.invocationId,author:t.author,branch:t.branch,content:{role:"user",parts:e},actions:r,timestamp:t.timestamp})}var di=(e=>(e.PROGRESSIVE_SSE_STREAMING="PROGRESSIVE_SSE_STREAMING",e))(di||{}),Za=(o=>(o.WIP="wip",o.EXPERIMENTAL="experimental",o.STABLE="stable",o))(Za||{}),pi={PROGRESSIVE_SSE_STREAMING:{stage:"experimental",defaultOn:!1}},fi=new Set,pe={};function eo(n){return pi[n]}function Jd(n,e){pi[n]=e}function Xd(n,e){if(!eo(n))throw new Error(`Feature ${n} is not registered.`);e===void 0?delete pe[n]:pe[n]=e}function mi(n){let e=eo(n);if(!e)throw new Error(`Feature ${n} is not registered.`);if(n in pe){let r=pe[n];return r&&e.stage!=="stable"&&Zn(n,e.stage),r}let t=`ADK_ENABLE_${n}`,o=`ADK_DISABLE_${n}`;return ke(t)?(e.stage!=="stable"&&Zn(n,e.stage),!0):ke(o)?!1:(e.stage!=="stable"&&e.defaultOn&&Zn(n,e.stage),e.defaultOn)}function Zn(n,e){fi.has(n)||(fi.add(n),m.warn(`[${e.toUpperCase()}] feature ${n} is enabled.`))}async function Qd(n,e,t){if(!eo(n))throw new Error(`Feature ${n} is not registered.`);let r=n in pe,i=pe[n];pe[n]=e;try{return await t()}finally{r?pe[n]=i:delete pe[n]}}function Qt(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 en=class{constructor(e=mi("PROGRESSIVE_SSE_STREAMING")){this.isProgressiveMode=e;this.text="";this.thoughtText="";this.partsSequence=[];this.currentTextBuffer="";this.currentFcArgs={}}flushTextBufferToSequence(){this.currentTextBuffer&&(this.currentTextIsThought?this.partsSequence.push({text:this.currentTextBuffer,thought:!0}):this.partsSequence.push({text:this.currentTextBuffer}),this.currentTextBuffer="",this.currentTextIsThought=void 0)}getValueFromPartialArg(e,t){let o=null,r=!1,i=e.stringValue,s=e.numberValue,a=e.boolValue,c=e.nullValue;if(i!==void 0){let l=i;r=!0;let u=gi.toPathArray(t).filter(d=>d!=="$"&&d!=="$["),f=this.currentFcArgs;for(let d of u)if(f&&typeof f=="object"&&d in f)f=f[d];else{f=void 0;break}typeof f=="string"?o=f+l:o=l}else s!==void 0?(o=s,r=!0):a!==void 0?(o=a,r=!0):c!==void 0&&(o=null,r=!0);return[o,r]}setValueByJsonPath(e,t){let o=gi.toPathArray(e).filter(i=>i!=="$"&&i!=="$["),r=this.currentFcArgs;for(let i=0;i<o.length-1;i++){let s=o[i];s in r||(r[s]={}),r=r[s]}o.length>0&&(r[o[o.length-1]]=t)}flushFunctionCallToSequence(){var e;if(this.currentFcName){let t={functionCall:{name:this.currentFcName,args:JSON.parse(JSON.stringify(this.currentFcArgs)),id:(e=this.currentFcId)!=null?e:_e()}};this.currentThoughtSignature&&(t.thoughtSignature=this.currentThoughtSignature.toString()),this.partsSequence.push(t),this.currentFcName=void 0,this.currentFcArgs={},this.currentFcId=void 0,this.currentThoughtSignature=void 0}}processStreamingFunctionCall(e){e.name&&(this.currentFcName=e.name),e.id&&(this.currentFcId=e.id);for(let t of e.partialArgs||[]){let o=t.jsonPath;if(!o)continue;let[r,i]=this.getValueFromPartialArg(t,o);i&&this.setValueByJsonPath(o,r)}e.willContinue||(this.flushTextBufferToSequence(),this.flushFunctionCallToSequence())}processFunctionCallPart(e){let t=e.functionCall;t&&(e.thoughtSignature?this.lastThoughtSignature=e.thoughtSignature:this.lastThoughtSignature&&(e.thoughtSignature=this.lastThoughtSignature.toString()),t.partialArgs||t.willContinue?(!t.id&&!this.currentFcId&&(t.id=_e()),e.thoughtSignature&&!this.currentThoughtSignature&&(this.currentThoughtSignature=e.thoughtSignature),this.processStreamingFunctionCall(t)):t.name&&(t.id||(t.id=_e()),this.flushTextBufferToSequence(),this.partsSequence.push(e)))}async*processResponse(e){var o,r,i;this.response=e;let t=Qt(e);if(this.usageMetadata=t.usageMetadata,t.groundingMetadata&&(this.groundingMetadata=t.groundingMetadata),t.citationMetadata&&(this.citationMetadata=t.citationMetadata),t.finishReason&&(this.finishReason=t.finishReason),t.content&&t.content.parts)for(let s of t.content.parts)s.thoughtSignature?this.lastThoughtSignature=s.thoughtSignature:s.functionCall&&this.lastThoughtSignature&&(s.thoughtSignature=this.lastThoughtSignature.toString());if(this.isProgressiveMode){if(t.content&&t.content.parts)for(let s of t.content.parts)if(s.text){let a=(o=s.thought)!=null?o:!1;this.currentTextBuffer&&a!==this.currentTextIsThought&&this.flushTextBufferToSequence(),this.currentTextBuffer||(this.currentTextIsThought=a),this.currentTextBuffer+=s.text}else s.functionCall?this.processFunctionCallPart(s):(this.flushTextBufferToSequence(),this.partsSequence.push(s));t.partial=!0,yield t;return}if(t.content&&t.content.parts&&typeof((r=t.content.parts[0])==null?void 0:r.text)=="string"){let s=t.content.parts[0],a=s.text||"";s.thought?this.thoughtText+=a:this.text+=a,t.partial=!0}else if((this.thoughtText||this.text)&&(!t.content||!t.content.parts||!((i=t.content.parts[0])!=null&&i.inlineData))){let s=[];this.thoughtText&&s.push({text:this.thoughtText,thought:!0}),this.text&&s.push({text:this.text}),yield{content:{role:"model",parts:s},usageMetadata:t.usageMetadata,partial:!1},this.thoughtText="",this.text=""}yield t}close(){var e,t;if(!(!((e=this.response)!=null&&e.candidates)||this.response.candidates.length===0)){if(this.isProgressiveMode){this.flushTextBufferToSequence(),this.flushFunctionCallToSequence();let o=this.partsSequence;if(o.length===0)return;let r=this.response.candidates[0],i=(t=this.finishReason)!=null?t:r.finishReason;return{content:{role:"model",parts:o},groundingMetadata:this.groundingMetadata,citationMetadata:this.citationMetadata,errorCode:i===Zt.STOP?void 0:i,errorMessage:i===Zt.STOP?void 0:r.finishMessage,usageMetadata:this.usageMetadata,finishReason:i,partial:!1}}if((this.text||this.thoughtText)&&this.response.candidates&&this.response.candidates.length>0){let o=[];this.thoughtText&&o.push({text:this.thoughtText,thought:!0}),this.text&&o.push({text:this.text});let r=this.response.candidates[0],i=r.finishReason;return{content:{role:"model",parts:o},groundingMetadata:this.groundingMetadata,citationMetadata:this.citationMetadata,errorCode:i===Zt.STOP?void 0:i,errorMessage:i===Zt.STOP?void 0:r.finishMessage,usageMetadata:this.usageMetadata,finishReason:i,partial:!1}}}}};var tn=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()}};var xe=class extends ye{constructor({model:e,apiKey:t,vertexai:o,project:r,location:i,headers:s}){e||(e="gemini-2.5-flash"),super({model:e});let a=nn({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,o){var r,i,s;if(this.preprocessRequest(e),this.maybeAppendUserContent(e),m.info(`Sending out request, model: ${(r=e.model)!=null?r:this.model}, backend: ${this.apiBackend}, stream: ${t}`),e.config||(e.config={}),e.config.httpOptions&&(e.config.httpOptions.headers={...e.config.httpOptions.headers,...this.trackingHeaders}),o&&(e.config.abortSignal=o),t){let a=await this.apiClient.models.generateContentStream({model:(i=e.model)!=null?i:this.model,contents:e.contents,config:e.config}),c=new en;for await(let u of a)for await(let f of c.processResponse(u))yield f;let l=c.close();l&&(yield l)}else{let a=await this.apiClient.models.generateContent({model:(s=e.model)!=null?s:this.model,contents:e.contents,config:e.config});yield Qt(a)}}getHttpOptions(){return{headers:{...this.trackingHeaders,...this.headers}}}get apiClient(){return this._apiClient?this._apiClient:(this.vertexai?this._apiClient=new to({vertexai:this.vertexai,project:this.project,location:this.location,httpOptions:this.getHttpOptions()}):this._apiClient=new to({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 to({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:[ec(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 tn(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)hi(o.inlineData),hi(o.fileData)}}};xe.supportedModels=[/gemini-.*/,/projects\/.+\/locations\/.+\/endpoints\/.+/,/projects\/.+\/locations\/.+\/publishers\/google\/models\/gemini.+/];function hi(n){n&&n.displayName&&(n.displayName=void 0)}function nn({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&&!Z()&&(i.vertexai=ke("GOOGLE_GENAI_USE_VERTEXAI")),i.vertexai){if(!Z()&&!i.project&&(i.project=process.env.GOOGLE_CLOUD_PROJECT),!Z()&&!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&&!Z()&&(i.apiKey=process.env.GOOGLE_GENAI_API_KEY||process.env.GEMINI_API_KEY);return i}var Ci="APIGEE_PROXY_URL",Je=class extends xe{constructor({model:e,proxyUrl:t,apiKey:o,vertexai:r,location:i,project:s,headers:a}){var c;if(!Ai(e))throw new Error(`Model ${e} is not a valid Apigee model, expected apigee/[<provider>/][<version>/]<model_id>`);if(super({...tc({model:e,vertexai:r,project:s,location:i,apiKey:o}),headers:a}),this.proxyUrl=t!=null?t:"",!Z()&&!this.proxyUrl&&(this.proxyUrl=(c=process.env[Ci])!=null?c:""),!this.proxyUrl)throw new Error(`Proxy URL must be provided via the constructor or ${Ci} 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,o){var i;let r=(i=e.model)!=null?i:this.model;e.model=vi(r),yield*super.generateContentAsync(e,t,o)}async connect(e){var o;let t=(o=e.model)!=null?o:this.model;return e.model=vi(t),super.connect(e)}};Je.supportedModels=[/apigee\/.*/];function tc({model:n,vertexai:e,project:t,location:o,apiKey:r}){var s;let i=nn({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 vi(n){if(!Ai(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 Ai(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 no=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)}},J=class J{static newLlm(e){return new(J.resolve(e))({model:e})}static _register(e,t){J.llmRegistryDict.has(e)&&m.info(`Updating LLM class for ${e} from ${J.llmRegistryDict.get(e)} to ${t}`),J.llmRegistryDict.set(e,t)}static register(e){for(let t of e.supportedModels)J._register(t,e)}static resolve(e){let t=J.resolveCache.get(e);if(t)return t;for(let[o,r]of J.llmRegistryDict.entries())if(new RegExp(`^${o instanceof RegExp?o.source:o}$`,o instanceof RegExp?o.flags:void 0).test(e))return J.resolveCache.set(e,r),r;throw new Error(`Model ${e} not found.`)}};J.llmRegistryDict=new Map,J.resolveCache=new no(32);var Le=J;Le.register(xe);Le.register(Je);var oo=Symbol.for("google.adk.baseTool");function Tt(n){return typeof n=="object"&&n!==null&&oo in n&&n[oo]===!0}var Ei;Ei=oo;var R=class{constructor(e){this[Ei]=!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=nc(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 ii()}};function nc(n){var e;return(((e=n.config)==null?void 0:e.tools)||[]).find(t=>"functionDeclarations"in t)}import{Type as yi}from"@google/genai";import{zodToJsonSchema as oc}from"zod-to-json-schema";import{toJSONSchema as rc}from"zod/v4";function ro(n){return n!==null&&typeof n=="object"&&"parse"in n&&typeof n.parse=="function"&&"safeParse"in n&&typeof n.safeParse=="function"}function ic(n){return ro(n)&&!("_zod"in n)}function sc(n){return ro(n)&&"_zod"in n}function ac(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 Oe(n){return ro(n)&&ac(n)==="ZodObject"}function Xe(n){if(!Oe(n))throw new Error("Expected a Zod Object");if(sc(n))return rc(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=yi.NULL,delete t.enum),t.type!==void 0&&(t.type=t.type.toUpperCase())}});if(ic(n))return oc(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=yi.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.")}import{z as Ri}from"zod";function q(n,e){n.config||(n.config={});let t=e.join(`
|
|
9
|
-
|
|
10
|
-
`);n.config.systemInstruction?n.config.systemInstruction+=`
|
|
11
|
-
|
|
12
|
-
`+t:n.config.systemInstruction=t}function xi(n,e){n.config||(n.config={}),n.config.responseSchema=e,n.config.responseMimeType="application/json"}import{Type as cc}from"@google/genai";function lc(n){return n===void 0?{type:cc.OBJECT,properties:{}}:Oe(n)?Xe(n):n}var io=Symbol.for("google.adk.functionTool");function uc(n){return typeof n=="object"&&n!==null&&io in n&&n[io]===!0}var Ti,Si,me=class extends(Si=R,Ti=io,Si){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[Ti]=!0;this.execute=t.execute,this.parameters=t.parameters}_getDeclaration(){return{name:this.name,description:this.description,parameters:lc(this.parameters)}}async runAsync(t){try{let o=t.args;return Oe(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 F=class{},so=class{};var on=class extends F{constructor(){super(...arguments);this.toolName="transfer_to_agent";this.tool=new me({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:Ri.object({agentName:Ri.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(!y(t.agent))return;let r=this.getTransferTargets(t.agent);if(!r.length)return;q(o,[this.buildTargetAgentsInstructions(t.agent,r)]);let i=new N({invocationContext:t});await this.tool.processLlmRequest({toolContext:i,llmRequest:o})}buildTargetAgentsInfo(t){return`
|
|
13
|
-
Agent name: ${t.name}
|
|
14
|
-
Agent description: ${t.description}
|
|
15
|
-
`}buildTargetAgentsInstructions(t,o){let r=`
|
|
16
|
-
You have a list of other agents to transfer to:
|
|
17
|
-
|
|
18
|
-
${o.map(i=>this.buildTargetAgentsInfo(i)).join(`
|
|
19
|
-
`)}
|
|
20
|
-
|
|
21
|
-
If you are the best to answer the question according to your description, you
|
|
22
|
-
can answer it.
|
|
23
|
-
|
|
24
|
-
If another agent is better for answering the question according to its
|
|
25
|
-
description, call \`${this.toolName}\` function to transfer the
|
|
26
|
-
question to that agent. When transferring, do not generate any text other than
|
|
27
|
-
the function call.
|
|
28
|
-
`;return t.parentAgent&&!t.disallowTransferToParent&&(r+=`
|
|
29
|
-
Your parent agent is ${t.parentAgent.name}. If neither the other agents nor
|
|
30
|
-
you are best for answering the question according to the descriptions, transfer
|
|
31
|
-
to your parent agent.
|
|
32
|
-
`),r}getTransferTargets(t){let o=[];return o.push(...t.subAgents),!t.parentAgent||!y(t.parentAgent)||(t.disallowTransferToParent||o.push(t.parentAgent),t.disallowTransferToPeers||o.push(...t.parentAgent.subAgents.filter(r=>r.name!==t.name))),o}},wi=new on;var ao=class extends F{async*runAsync(e,t){var r;let o=e.agent;y(o)&&(t.model=o.canonicalModel.model,t.config={...(r=o.generateContentConfig)!=null?r:{}},o.outputSchema&&xi(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))}},Ii=new ao;import{cloneDeep as Bi}from"lodash-es";var co=Symbol.for("google.adk.baseCodeExecutor");function rn(n){return typeof n=="object"&&n!==null&&co in n&&n[co]===!0}var bi;bi=co;var Me=class{constructor(){this[bi]=!0;this.optimizeDataFile=!1;this.stateful=!1;this.errorRetryAttempts=2;this.codeBlockDelimiters=[["```tool_code\n","\n```"],["```python\n","\n```"],["```javascript\n","\n```"],["```typescript\n","\n```"],["```bash\n","\n```"],["```sh\n","\n```"]];this.executionResultDelimiters=["```tool_output\n","\n```"]}};var fc="^projects/[^/]+/locations/[^/]+/publishers/[^/]+/models/(.+)$";function lo(n){let e=n.match(fc);return e?e[1]:n}function ki(n){return lo(n).startsWith("gemini-")}function dc(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 Pi(n){return lo(n).startsWith("gemini-1")}function St(n){if(!n)return!1;let e=lo(n);if(!e.startsWith("gemini-"))return!1;let t=e.slice(7).split("-",1)[0],o=dc(t);return o.valid&&o.major>=2}var uo=Symbol.for("google.adk.builtInCodeExecutor");function wt(n){return typeof n=="object"&&n!==null&&uo in n&&n[uo]===!0}var _i,Li,Rt=class extends(Li=Me,_i=uo,Li){constructor(){super(...arguments);this[_i]=!0}executeCode(t){return Promise.resolve({stdout:"",stderr:"",outputFiles:[]})}processLlmRequest(t){if(t.model&&St(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}`)}};import{Language as pc,Outcome as Oi}from"@google/genai";import{cloneDeep as mc}from"lodash-es";var fo=(t=>(t.UTF8="utf-8",t.BASE64="base64",t))(fo||{}),Te=(a=>(a.UNSPECIFIED="unspecified",a.PYTHON="python",a.JAVASCRIPT="javascript",a.TYPESCRIPT="typescript",a.SHELL="shell",a.POWERSHELL="powershell",a.WINDOWS_CMD="cmd",a))(Te||{});function Mi(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=mc(t[0]),r=t.map(f=>f.text).join(`
|
|
33
|
-
`),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(po(l)),l):""}function po(n){return{text:n,executableCode:{code:n,language:pc.PYTHON}}}function Ni(n){if(n.stderr)return{text:n.stderr,codeExecutionResult:{outcome:Oi.OUTCOME_FAILED}};let e=[];return(n.stdout||!n.outputFiles)&&e.push(`Code execution result:
|
|
34
|
-
${n.stdout}
|
|
35
|
-
`),n.outputFiles&&e.push(`Saved artifacts:
|
|
36
|
-
`+n.outputFiles.map(t=>t.name).join(", ")),{text:e.join(`
|
|
37
|
-
|
|
38
|
-
`),codeExecutionResult:{outcome:Oi.OUTCOME_OK}}}function Fi(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")}import{cloneDeep as gc}from"lodash-es";var mo="_code_execution_context",go="execution_session_id",Ne="processed_input_files",Fe="_code_executor_input_files",Be="_code_executor_error_counts",ho="_code_execution_results",It=class{constructor(e){this.sessionState=e;var t;this.context=(t=e.get(mo))!=null?t:{},this.sessionState=e}getStateDelta(){return{[mo]:gc(this.context)}}getExecutionId(){if(go in this.context)return this.context[go]}setExecutionId(e){this.context[go]=e}getProcessedFileNames(){return Ne in this.context?this.context[Ne]:[]}addProcessedFileNames(e){Ne in this.context||(this.context[Ne]=[]),this.context[Ne].push(...e)}getInputFiles(){return Fe in this.sessionState?this.sessionState.get(Fe):[]}addInputFiles(e){Fe in this.sessionState||this.sessionState.set(Fe,[]),this.sessionState.get(Fe).push(...e)}clearInputFiles(){Fe in this.sessionState&&this.sessionState.set(Fe,[]),Ne in this.context&&(this.context[Ne]=[])}getErrorCount(e){return Be in this.sessionState&&this.sessionState.get(Be)[e]||0}incrementErrorCount(e){Be in this.sessionState||this.sessionState.set(Be,{}),this.sessionState.get(Be)[e]=this.getErrorCount(e)+1}resetErrorCount(e){if(!(Be in this.sessionState))return;let t=this.sessionState.get(Be);e in t&&delete t[e]}updateCodeExecutionResult({invocationId:e,code:t,resultStdout:o,resultStderr:r}){ho in this.sessionState||this.sessionState.set(ho,{});let i=this.sessionState.get(ho);e in i||(i[e]=[]),i[e].push({code:t,resultStdout:o,resultStderr:r,timestamp:Date.now()})}getCodeExecutionContext(){return this.sessionState.get(mo)||{}}};var Co=class extends F{async*runAsync(e,t){if(y(e.agent)&&e.agent.codeExecutor){for await(let o of Cc(e,t))yield o;if(rn(e.agent.codeExecutor))for(let o of t.contents){let r=e.agent.codeExecutor.codeBlockDelimiters.length?e.agent.codeExecutor.codeBlockDelimiters[0]:["",""];Fi(o,r,e.agent.codeExecutor.executionResultDelimiters)}}}},sn={"text/csv":{extension:".csv",loaderCodeTemplate:"pd.read_csv('{filename}')"}},hc=`
|
|
39
|
-
import pandas as pd
|
|
40
|
-
|
|
41
|
-
def explore_df(df: pd.DataFrame) -> None:
|
|
42
|
-
"""Prints some information about a pandas DataFrame."""
|
|
43
|
-
|
|
44
|
-
with pd.option_context(
|
|
45
|
-
'display.max_columns', None, 'display.expand_frame_repr', False
|
|
46
|
-
):
|
|
47
|
-
# Print the column names to never encounter KeyError when selecting one.
|
|
48
|
-
df_dtypes = df.dtypes
|
|
49
|
-
|
|
50
|
-
# Obtain information about data types and missing values.
|
|
51
|
-
df_nulls = (len(df) - df.isnull().sum()).apply(
|
|
52
|
-
lambda x: f'{x} / {df.shape[0]} non-null'
|
|
53
|
-
)
|
|
54
|
-
|
|
55
|
-
# Explore unique total values in columns using \`.unique()\`.
|
|
56
|
-
df_unique_count = df.apply(lambda x: len(x.unique()))
|
|
57
|
-
|
|
58
|
-
# Explore unique values in columns using \`.unique()\`.
|
|
59
|
-
df_unique = df.apply(lambda x: crop(str(list(x.unique()))))
|
|
60
|
-
|
|
61
|
-
df_info = pd.concat(
|
|
62
|
-
(
|
|
63
|
-
df_dtypes.rename('Dtype'),
|
|
64
|
-
df_nulls.rename('Non-Null Count'),
|
|
65
|
-
df_unique_count.rename('Unique Values Count'),
|
|
66
|
-
df_unique.rename('Unique Values'),
|
|
67
|
-
),
|
|
68
|
-
axis=1,
|
|
69
|
-
)
|
|
70
|
-
df_info.index.name = 'Columns'
|
|
71
|
-
print(f"""Total rows: {df.shape[0]}
|
|
72
|
-
Total columns: {df.shape[1]}
|
|
73
|
-
|
|
74
|
-
{df_info}""")
|
|
75
|
-
`,vo=class{async*runAsync(e,t){if(!t.partial)for await(let o of vc(e,t))yield o}},Zm=new vo;async function*Cc(n,e){let t=n.agent;if(!y(t))return;let o=t.codeExecutor;if(!o||!rn(o))return;if(wt(o)){o.processLlmRequest(e);return}if(!o.optimizeDataFile)return;let r=new It(new T(n.session.state));if(r.getErrorCount(n.invocationId)>=o.errorRetryAttempts)return;let i=Ac(r,e),s=new Set(r.getProcessedFileNames()),a=i.filter(c=>!s.has(c.name));for(let c of a){let l=Ec(c);if(!l)return;let u={role:"model",parts:[{text:`Processing input file: \`${c.name}\``},po(l)]};e.contents.push(Bi(u)),yield x({invocationId:n.invocationId,author:t.name,branch:n.branch,content:u});let f=Di(n,r),d=await o.executeCode({invocationContext:n,codeExecutionInput:{code:l,language:"python",inputFiles:[c],executionId:f}});r.updateCodeExecutionResult({invocationId:n.invocationId,code:l,resultStdout:d.stdout,resultStderr:d.stderr}),r.addProcessedFileNames([c.name]);let p=await Ui(n,r,d);yield p,e.contents.push(Bi(p.content))}}async function*vc(n,e){let t=n.agent;if(!y(t))return;let o=t.codeExecutor;if(!o||!rn(o)||!e||!e.content||wt(o))return;let r=new It(new T(n.session.state));if(r.getErrorCount(n.invocationId)>=o.errorRetryAttempts)return;let i=e.content,s=Mi(i,o.codeBlockDelimiters);if(!s)return;yield x({invocationId:n.invocationId,author:t.name,branch:n.branch,content:i});let a=Di(n,r),c=await o.executeCode({invocationContext:n,codeExecutionInput:{code:s,language:"python",inputFiles:r.getInputFiles(),executionId:a}});r.updateCodeExecutionResult({invocationId:n.invocationId,code:s,resultStdout:c.stdout,resultStderr:c.stderr}),yield await Ui(n,r,c),e.content=void 0}function Ac(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||!sn[l])continue;let u=`data_${i+1}_${a+1}${sn[l].extension}`;c.text=`
|
|
76
|
-
Available file: \`${u}\`
|
|
77
|
-
`;let f={name:u,content:Br(c.inlineData.data),mimeType:l};o.has(u)||(n.addInputFiles([f]),t.push(f))}}return t}function Di(n,e){var r;let t=n.agent;if(!y(t)||!((r=t.codeExecutor)!=null&&r.stateful))return;let o=e.getExecutionId();return o||(o=n.session.id,e.setExecutionId(o)),o}async function Ui(n,e,t){if(!n.artifactService)throw new Error("Artifact service is not initialized.");let o={role:"model",parts:[Ni(t)]},r=V({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 x({invocationId:n.invocationId,author:n.agent.name,branch:n.branch,content:o,actions:r})}function Ec(n){function e(r){let[i]=r.split("."),s=i.replace(/[^a-zA-Z0-9_]/g,"_");return/^\d/.test(s)&&(s="_"+s),s}if(!sn[n.mimeType])return;let t=e(n.name),o=sn[n.mimeType].loaderCodeTemplate.replace("{filename}",n.name);return`
|
|
78
|
-
${hc}
|
|
79
|
-
|
|
80
|
-
# Load the dataframe.
|
|
81
|
-
${t} = ${o}
|
|
82
|
-
|
|
83
|
-
# Use \`explore_df\` to guide my analysis.
|
|
84
|
-
explore_df(${t})
|
|
85
|
-
`}var $i=new Co;function X(n){return"isCompacted"in n&&n.isCompacted===!0}function qi(n={}){return{...x(n),isCompacted:n.isCompacted||!0,startTime:n.startTime,endTime:n.endTime,compactedContent:n.compactedContent}}import{createUserContent as yc}from"@google/genai";import{cloneDeep as xc}from"lodash-es";function Ao(n,e,t){var s,a,c;let o=[];for(let l of n){if(X(l)){o.push(bc(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)||Tc(l)||Sc(l)||o.push(Vi(e,l)?Rc(l):l)}let r=wc(o);r=Ic(r);let i=[];for(let l of r){let u=xc(l.content);ci(u),i.push(u)}return i}function ji(n,e,t){for(let o=n.length-1;o>=0;o--){let r=n[o];if(r.author==="user"||Vi(e,r))return Ao(n.slice(o),e,t)}return[]}function Tc(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)===Jt||((o=r.functionResponse)==null?void 0:o.name)===Jt)return!0;return!1}function Sc(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)===Ye||((o=r.functionResponse)==null?void 0:o.name)===Ye)return!0;return!1}function Vi(n,e){return!!n&&e.author!==n&&e.author!=="user"}function Rc(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=Gi(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=Gi(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 x({invocationId:n.invocationId,author:"user",content:e,branch:n.branch,timestamp:n.timestamp})}function zi(n){var r;if(n.length===0)throw new Error("Cannot merge an empty list of events.");let e=x(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 wc(n){if(n.length===0)return n;let e=n[n.length-1],t=K(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=P(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=P(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(g=>g.id).filter(g=>!!g));if(!Array.from(o).every(g=>d.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(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=K(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(zi(s)),a}function Ic(n){let e=new Map;for(let o=0;o<n.length;o++){let r=n[o],i=K(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(K(o).length>0)continue;let r=P(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(zi(a))}}else t.push(o)}return t}function Gi(n){if(typeof n=="string")return n;try{return JSON.stringify(n)}catch{return String(n)}}function bc(n){let e=yc(`[Previous Context Summary]:
|
|
86
|
-
${n.compactedContent}`);return x({invocationId:n.invocationId,author:"user",content:e,branch:n.branch,timestamp:n.timestamp})}var an=class{async*runAsync(e,t){let o=e.agent;if(!o||!y(o))return;let r=e.session.events,i=r.filter(X),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||X(c)||c.timestamp<=s.endTime));r=[s,...a]}o.includeContents==="default"?t.contents=Ao(r,o.name,e.branch):t.contents=ji(r,o.name,e.branch)}},cn=new an;var ln=new Set;function k(n,e,t){if(e===void 0){let o=n.name;return class extends n{constructor(...i){ln.has(o)||(m.warn(`Class ${o} is experimental and may change in the future.`),ln.add(o)),super(...i)}}}if(e!==void 0&&t!==void 0){let o=typeof n=="function"?n.name:n.constructor.name,r=String(e),i=`${o}.${r}`,s=t.value;return t.value=function(...a){return ln.has(i)||(m.warn(`Method ${i} is experimental and may change in the future.`),ln.add(i)),s.apply(this,a)},t}throw new Error("Invalid decorator usage")}var Eo=(t=>(t.Manual="Manual",t.Auto="Auto",t))(Eo||{}),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 beforeToolSelection(e){}async beforeContextCompaction(e){}async afterContextCompaction(e){}async beforeToolCallback(e){}async afterToolCallback(e){}async onToolErrorCallback(e){}};v([k],ce.prototype,"beforeToolSelection",1),v([k],ce.prototype,"beforeContextCompaction",1),v([k],ce.prototype,"afterContextCompaction",1);var Qe=class{constructor(e){this.compactors=e}async*runAsync(e,t){for(let o of this.compactors)if(await Promise.resolve(o.shouldCompact(e))){await e.pluginManager.runBeforeContextCompaction({invocationContext:e,trigger:"Auto"});let i=new Set(e.session.events);await Promise.resolve(o.compact(e)),await e.pluginManager.runAfterContextCompaction({invocationContext:e,trigger:"Auto"});let s=e.session.events.filter(a=>!i.has(a));for(let a of s)yield a;return}}};var yo=class extends F{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}"`),q(t,r)}},Wi=new yo;async function xo(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(!_c(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 kc=/^[a-zA-Z_][a-zA-Z0-9_]*$/;function Hi(n){return n===""||n===void 0?!1:kc.test(n)}var Pc=[T.APP_PREFIX,T.USER_PREFIX,T.TEMP_PREFIX];function _c(n){let e=n.split(":");return e.length===0||e.length>2?!1:e.length===1?Hi(n):Pc.includes(e[0]+":")?Hi(e[1]):!1}var To=class extends F{async*runAsync(e,t){let o=e.agent;if(!y(o))return;let r=o.rootAgent;if(y(r)&&r.globalInstruction){let{instruction:i,requireStateInjection:s}=await r.canonicalGlobalInstruction(new b(e)),a=i;s&&(a=await xo(i,new b(e))),q(t,[a])}if(o.instruction){let{instruction:i,requireStateInjection:s}=await o.canonicalInstruction(new b(e)),a=i;s&&(a=await xo(i,new b(e))),q(t,[a])}}},Ki=new To;var So=class extends F{async*runAsync(e){let t=e.agent;if(!y(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=K(a);if(!c)continue;let l=!1;for(let u of c){if(u.name!==Ye)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=P(a);if(!c)continue;let l={},u={};for(let g of c){if(!g.id||!(g.id in r))continue;let C=g.args;if(!C||!("originalFunctionCall"in C))continue;let h=C.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 C=o[g],h=K(C);if(h){for(let A of h)A.id&&A.id in l&&(delete l[A.id],delete u[A.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(g=>[g.name,g])),p=await Xt({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}}},Yi=new So;var Ro=class extends F{async*runAsync(e,t){let o=e.agent;if(!y(o))return;let r=await o.canonicalTools(new b(e));if(r.length===0)return;let i={};for(let c of r)i[c.name]=c;let s=new N({invocationContext:e}),a=await e.pluginManager.runBeforeToolSelection({callbackContext:s,tools:i});a!==void 0&&(t.allowedTools=Object.keys(a))}},Ji=new Ro;var un=(o=>(o.NONE="none",o.SSE="sse",o.BIDI="bidi",o))(un||{});function Xi(n={}){return{saveInputBlobsAsArtifacts:!1,supportCfc:!1,enableAffectiveDialog:!1,streamingMode:"none",maxLlmCalls:Lc(n.maxLlmCalls||500),pauseOnToolCalls:!1,...n}}function Lc(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 Qi="adk_agent_name";async function Zi(n,e){return Tt(n)?[n]:await n.getTools(e)}var wo=Symbol.for("google.adk.llmAgent");function y(n){return typeof n=="object"&&n!==null&&wo in n&&n[wo]===!0}var es,ts,fn=class n extends(ts=$,es=wo,ts){constructor(t){var r,i,s,a,c,l,u,f,d;super(t);this[es]=!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=Oe(t.inputSchema)?Xe(t.inputSchema):t.inputSchema,this.outputSchema=Oe(t.outputSchema)?Xe(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:[Ii,Wi,Ki,Yi,cn,$i,Ji],!t.requestProcessors&&t.contextCompactors&&t.contextCompactors.length>0){let p=this.requestProcessors.indexOf(cn);p!==-1?this.requestProcessors.splice(p,0,new Qe(t.contextCompactors)):this.requestProcessors.push(new Qe(t.contextCompactors))}if(this.responseProcessors=(f=t.responseProcessors)!=null?f:[],this.disallowTransferToParent&&this.disallowTransferToPeers&&!((d=this.subAgents)!=null&&d.length)||this.requestProcessors.push(wi),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(Yn(this.model))return this.model;if(typeof this.model=="string"&&this.model)return Le.newLlm(this.model);let t=this.parentAgent;for(;t;){if(y(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 Zi(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(!Ce(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){var o;for(;;){let r;for await(let i of this.runOneStepAsync(t)){if((o=t.abortSignal)!=null&&o.aborted)return;r=i,this.maybeSaveOutputToState(i),yield i}if(!r||Ce(r))break;if(r.partial){m.warn("The last event is partial, which is not expected.");break}}}async*runLiveImpl(t){var o;for await(let r of this.runLiveFlow(t)){if((o=t.abortSignal)!=null&&o.aborted)return;this.maybeSaveOutputToState(r),yield r}t.endInvocation}async*runLiveFlow(t){throw await Promise.resolve(),new Error("LlmAgent.runLiveFlow not implemented")}async*runOneStepAsync(t){var a,c,l;let o={contents:[],toolsDict:{},liveConnectConfig:{}};for(let u of this.requestProcessors)for await(let f of u.runAsync(t,o)){if((a=t.abortSignal)!=null&&a.aborted)return;yield f}for(let u of this.tools){let f=new N({invocationContext:t}),d=(await Zi(u,new b(t))).filter(p=>!o.allowedTools||o.allowedTools.includes(p.name));for(let p of d)if(await p.processLlmRequest({toolContext:f,llmRequest:o}),(c=t.abortSignal)!=null&&c.aborted)return}if(t.endInvocation||(l=t.abortSignal)!=null&&l.aborted)return;let r=x({invocationId:t.invocationId,author:this.name,branch:t.branch}),i=ie.startSpan("call_llm"),s=Mc.setSpan(Oc.active(),i);yield*be(s,this,async function*(){let u=async function*(){var f,d;for await(let p of this.callLlmAsync(t,o,r)){if((f=t.abortSignal)!=null&&f.aborted)return;for await(let g of this.postprocess(t,o,p,r)){if((d=t.abortSignal)!=null&&d.aborted)return;r.id=Ln(),r.timestamp=new Date().getTime(),yield g}}};yield*this.runAndHandleError(u.call(this),t,o,r)}),i.end()}async*postprocess(t,o,r,i){var f,d,p,g,C;for(let h of this.responseProcessors)for await(let A of h.runAsync(t,r)){if((f=t.abortSignal)!=null&&f.aborted)return;yield A}if(!r.content&&!r.errorCode&&!r.interrupted)return;let s=x({...i,...r});if(s.content){let h=P(s);h!=null&&h.length&&(ai(s),s.longRunningToolIds=Array.from(li(h,o.toolsDict)))}if(yield s,!((d=P(s))!=null&&d.length))return;if((p=t.runConfig)!=null&&p.pauseOnToolCalls){t.endInvocation=!0;return}let a=await ui({invocationContext:t,functionCallEvent:s,toolsDict:o.toolsDict,beforeToolCallbacks:this.canonicalBeforeToolCallbacks,afterToolCallbacks:this.canonicalAfterToolCallbacks});if(!a||(g=t.abortSignal)!=null&&g.aborted)return;let c=Xn(t,a);c&&(yield c);let l=Qn({invocationContext:t,functionCallEvent:s,functionResponseEvent:a});if(l){yield l,t.endInvocation=!0;return}yield a;let u=a.actions.transferToAgent;if(u){let h=this.getAgentByName(t,u);for await(let A of h.runAsync(t)){if((C=t.abortSignal)!=null&&C.aborted)return;yield A}}}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,d,p,g;let i=await this.handleBeforeModelCallback(t,o,r);if((a=t.abortSignal)!=null&&a.aborted)return;if(i){yield i;return}(c=o.config)!=null||(o.config={}),(u=(l=o.config).labels)!=null||(l.labels={}),o.config.labels[Qi]||(o.config.labels[Qi]=this.name);let s=this.canonicalModel;if((f=t.runConfig)!=null&&f.supportCfc)throw new Error("CFC is not yet supported in callLlmAsync");{t.incrementLlmCallCount();let C=s.generateContentAsync(o,((d=t.runConfig)==null?void 0:d.streamingMode)==="sse",t.abortSignal);for await(let h of C){if(Nr({invocationContext:t,eventId:r.id,llmRequest:o,llmResponse:h}),(p=t.abortSignal)!=null&&p.aborted)return;let A=await this.handleAfterModelCallback(t,h,r);if((g=t.abortSignal)!=null&&g.aborted)return;yield A!=null?A:h}}}async handleBeforeModelCallback(t,o,r){var a,c;let i=new N({invocationContext:t,eventActions:r.actions}),s=await t.pluginManager.runBeforeModelCallback({callbackContext:i,llmRequest:o});if(!((a=t.abortSignal)!=null&&a.aborted)){if(s)return s;for(let l of this.canonicalBeforeModelCallbacks){let u=await l({context:i,request:o});if((c=t.abortSignal)!=null&&c.aborted)return;if(u)return u}}}async handleAfterModelCallback(t,o,r){var a;let i=new N({invocationContext:t,eventActions:r.actions}),s=await t.pluginManager.runAfterModelCallback({callbackContext:i,llmResponse:o});if(s)return s;for(let c of this.canonicalAfterModelCallbacks){let l=await c({context:i,response:o});if((a=t.abortSignal)!=null&&a.aborted)return;if(l)return l}}async*runAndHandleError(t,o,r,i){var s;try{for await(let a of t){if((s=o.abortSignal)!=null&&s.aborted)return;yield a}}catch(a){let c=new N({invocationContext:o,eventActions:i.actions});if(a instanceof Error){let l=await o.pluginManager.runOnModelErrorCallback({callbackContext:c,llmRequest:r,error:a});if(l)yield l;else{let u="UNKNOWN_ERROR",f=a.message;try{let d=JSON.parse(a.message);d!=null&&d.error&&(u=String(d.error.code||"UNKNOWN_ERROR"),f=d.error.message||f)}catch{}i.actions?yield x({invocationId:o.invocationId,author:this.name,errorCode:u,errorMessage:f}):yield{errorCode:u,errorMessage:f}}}else throw m.error("Unknown error during response generation",a),a}}};var Io=Symbol.for("google.adk.loopAgent");function Ze(n){return typeof n=="object"&&n!==null&&Io in n&&n[Io]===!0}var ns,os,bo=class extends(os=$,ns=Io,os){constructor(t){var o;super(t);this[ns]=!0;this.maxIterations=(o=t.maxIterations)!=null?o:Number.MAX_SAFE_INTEGER}async*runAsyncImpl(t){var r;let o=0;for(;o<this.maxIterations;){for(let i of this.subAgents){let s=!1;for await(let a of i.runAsync(t)){if((r=t.abortSignal)!=null&&r.aborted)return;yield a,a.actions.escalate&&(s=!0)}if(s)return}o++}}async*runLiveImpl(t){throw new Error("This is not supported yet for LoopAgent.")}};var ko=Symbol.for("google.adk.parallelAgent");function et(n){return typeof n=="object"&&n!==null&&ko in n&&n[ko]===!0}var rs,is,Po=class extends(is=$,rs=ko,is){constructor(){super(...arguments);this[rs]=!0}async*runAsyncImpl(t){var r;let o=this.subAgents.map(i=>i.runAsync(Nc(this,i,t)));for await(let i of Fc(o)){if((r=t.abortSignal)!=null&&r.aborted)return;yield i}}async*runLiveImpl(t){throw new Error("This is not supported yet for ParallelAgent.")}};function Nc(n,e,t){let o=new Y(t),r=`${n.name}.${e.name}`;return o.branch=o.branch?`${o.branch}.${r}`:r,o}async function*Fc(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 _o="task_completed",Lo=Symbol.for("google.adk.sequentialAgent");function tt(n){return typeof n=="object"&&n!==null&&Lo in n&&n[Lo]===!0}var ss,as,Oo=class extends(as=$,ss=Lo,as){constructor(){super(...arguments);this[ss]=!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)y(o)&&((await o.canonicalTools(new b(t))).some(s=>s.name===_o)||(o.tools.push(new me({name:_o,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 ${_o} 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 Mo=Symbol.for("google.adk.baseToolset");function No(n){return typeof n=="object"&&n!==null&&Mo in n&&n[Mo]===!0}var cs;cs=Mo;var Se=class{constructor(e,t){this.toolFilter=e;this.prefix=t;this[cs]=!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 dn(n){if(typeof n=="object")return n;let e=n;if(e.startsWith("http://")||e.startsWith("https://"))return await new Bc().resolve(e);try{let t=await ds.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 Fo(n,e){return{name:n.name,description:n.description||"",protocolVersion:"0.3.0",version:"1.0.0",skills:await Dc(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 Dc(n){let[e,t]=await Promise.all([ps(n),Uc(n)]);return[...e,...t]}async function ps(n){return y(n)?$c(n):qc(n)}async function Uc(n){let e=n.subAgents,t=[];for(let o of e){let r=await ps(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 $c(n){let e=[{id:n.name,name:"model",description:await Wc(n),tags:["llm"]}];if(n.tools&&n.tools.length>0){for(let t of n.tools)if(Tt(t))e.push(ls(n.name,t));else if(No(t)){let o=await t.getTools();for(let r of o)e.push(ls(n.name,r))}}return e}function ls(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 qc(n){let e=[{id:n.name,name:Hc(n),description:Gc(n),tags:[fs(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:[fs(n),"orchestration"]})}return e}function Gc(n){let e=[];return n.description&&e.push(n.description),n.subAgents.length>0&&(Ze(n)?e.push(zc(n)):et(n)?e.push(Vc(n)):tt(n)&&e.push(jc(n))),e.length>0?e.join(" "):ms(n)}function jc(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 Vc(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 zc(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 Wc(n){let e=[];if(n.description&&e.push(n.description),n.instruction){let o;if(typeof n.instruction=="function"){let r=new b(new Y({agent:n}));try{o=await n.instruction(r)}catch(i){m.warn("Failed to resolve dynamic instruction for AgentCard",i),o=""}}else o=n.instruction;o&&e.push(us(o))}let t=n.rootAgent;if(y(t)&&t.globalInstruction){let o;if(typeof t.globalInstruction=="function"){let r=new b(new Y({agent:n}));try{o=await t.globalInstruction(r)}catch(i){m.warn("Failed to resolve dynamic global instruction for AgentCard",i),o=""}}else o=t.globalInstruction;o&&e.push(us(o))}return e.length>0?e.join(" "):ms(n)}function us(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 ms(n){return Ze(n)?"A loop workflow agent":tt(n)?"A sequential workflow agent":et(n)?"A parallel workflow agent":y(n)?"An LLM-based agent":"A custom agent"}function fs(n){return Ze(n)?"loop_workflow":tt(n)?"sequential_workflow":et(n)?"parallel_workflow":y(n)?"llm_agent":"custom_agent"}function Hc(n){return y(n)?"model":Kc(n)?"workflow":"custom"}function Kc(n){return Ze(n)||tt(n)||et(n)}import{createModelContent as bt,createUserContent as Jc}from"@google/genai";function Bo(n,e,t){if(zn(n))return Xc(n,e,t);if(se(n))return tl(n,e,t);if(At(n))return Qc(n,e,t);if(Ae(n))return n.final?Zc(n,e,t):el(n,e,t)}function Xc(n,e,t,o){let r=ae(n.parts);return{...kt(o||n),invocationId:e,author:n.role==="user"?"user":t,content:n.role==="user"?Jc(r):bt(r),turnComplete:!0,partial:!1}}function Qc(n,e,t){var i;let o=((i=n.artifact)==null?void 0:i.parts)||[];if(o.length===0)return;let r=!!Vt(n)[E.PARTIAL]||n.append||!n.lastChunk;return{...kt(n),invocationId:e,author:t,content:bt(ae(o)),longRunningToolIds:pn(o),partial:r}}function Zc(n,e,t){var a;let o=((a=n.status.message)==null?void 0:a.parts)||[];if(o.length===0)return;let r=ae(o),i=zt(n),s=!i&&r.length>0;return{...kt(n),invocationId:e,author:t,errorMessage:i?Wn(n):void 0,content:s?bt(r):void 0,longRunningToolIds:pn(o),turnComplete:!0}}function el(n,e,t){let o=n.status.message;if(!o)return;let r=ae(o.parts);return{...kt(n),invocationId:e,author:t,content:bt(r),turnComplete:!1,partial:!0}}function tl(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=ae(l.parts);o.push(...u),r.push(...pn(l.parts))}}if((c=n.status)!=null&&c.message){let l=n.status.message.parts,u=ae(l);o.push(...u),r.push(...pn(l))}let i=Wr(n)||Wt(n),s=zt(n);if(!(o.length===0&&!i))return{...kt(n),invocationId:e,author:t,content:s?void 0:bt(o),errorMessage:s?Wn(n):void 0,longRunningToolIds:r,turnComplete:i}}function kt(n){let e=n.metadata||{};return x({branch:e[E.BRANCH],author:e[E.AUTHOR],partial:e[E.PARTIAL],errorCode:e[E.ERROR_CODE],errorMessage:e[E.ERROR_MESSAGE],citationMetadata:e[E.CITATION_METADATA],groundingMetadata:e[E.GROUNDING_METADATA],usageMetadata:e[E.USAGE_METADATA],customMetadata:e[E.CUSTOM_METADATA],actions:V({escalate:!!e[E.ESCALATE],transferToAgent:e[E.TRANSFER_TO_AGENT]})})}function pn(n){let e=[];for(let t of n)if(t.metadata&&t.metadata[E.IS_LONG_RUNNING]){let o=Hn(t);o.functionCall&&o.functionCall.id&&e.push(o.functionCall.id)}return e}var Do=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 dn(this.a2aConfig.agentCard),!this.client)){let t=this.a2aConfig.clientFactory||new ol;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=ti(t.session,i.length-1),a,c,l;if(s){let g=s.response;a=de(((o=g.content)==null?void 0:o.parts)||[],g.longRunningToolIds),c=s.taskId,l=s.contextId}else{let g=ni(t,t.session);a=g.parts,l=g.contextId}let u={kind:"message",messageId:I(),role:"user",parts:a,metadata:Ee({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 Kt(f);if(this.a2aConfig.beforeRequestCallbacks)for(let g of this.a2aConfig.beforeRequestCallbacks)await g(t,f);if(this.card?((r=this.card.capabilities)==null?void 0:r.streaming)!==!1:!0)for await(let g of this.client.sendMessageStream(f)){if(this.a2aConfig.afterRequestCallbacks)for(let A of this.a2aConfig.afterRequestCallbacks)await A(t,g);let C=Bo(g,t.invocationId,this.name);if(!C)continue;d.updateCustomMetadata(C,g);let h=d.aggregatePartial(t,g,C);for(let A of h)yield A}else{let g=await this.client.sendMessage(f);if(this.a2aConfig.afterRequestCallbacks)for(let h of this.a2aConfig.afterRequestCallbacks)await h(t,g);let C=Bo(g,t.invocationId,this.name);C&&(d.updateCustomMetadata(C,g),yield C)}}catch(i){let s=i;m.error(`A2ARemoteAgent ${this.name} failed:`,s),yield x({author:this.name,invocationId:t.invocationId,errorMessage:s.message,turnComplete:!0})}}runLiveImpl(t){throw new Error("Live mode is not supported in A2ARemoteAgent yet.")}};import{createPartFromText as rl}from"@google/genai";import{context as il,trace as sl}from"@opentelemetry/api";var Pt=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 runBeforeToolSelection({callbackContext:e,tools:t}){return await this.runCallbacks(this.plugins,o=>o.beforeToolSelection({callbackContext:e,tools:t}),"beforeToolSelection")}async runBeforeContextCompaction({invocationContext:e,trigger:t}){await this.runCallbacks(this.plugins,o=>o.beforeContextCompaction({invocationContext:e,trigger:t}),"beforeContextCompaction")}async runAfterContextCompaction({invocationContext:e,trigger:t}){await this.runCallbacks(this.plugins,o=>o.afterContextCompaction({invocationContext:e,trigger:t}),"afterContextCompaction")}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 Uo=Symbol.for("google.adk.runner");function $o(n){return typeof n=="object"&&n!==null&&Uo in n&&n[Uo]===!0}var gs;gs=Uo;var ge=class{constructor(e){this[gs]=!0;var t;this.appName=e.appName,this.agent=e.agent,this.pluginManager=new Pt((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=Xi(e.runConfig),s=e.newMessage,a=ie.startSpan("invocation"),c=sl.setSpan(il.active(),a);try{yield*be(c,this,async function*(){var d,p,g,C,h,A,j,w,H,lt;let l=await this.sessionService.getSession({appName:this.appName,userId:t,sessionId:o});if((d=e.abortSignal)!=null&&d.aborted)return;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&&y(this.agent)){let ut=this.agent.canonicalModel.model;if(!St(ut))throw new Error(`CFC is not supported for model: ${ut} in agent: ${this.agent.name}`);wt(this.agent.codeExecutor)||(this.agent.codeExecutor=new Rt)}let u=new Y({artifactService:this.artifactService,sessionService:this.sessionService,memoryService:this.memoryService,credentialService:this.credentialService,invocationId:qr(),agent:this.agent,session:l,userContent:s,runConfig:i,pluginManager:this.pluginManager,abortSignal:e.abortSignal}),f=await this.pluginManager.runOnUserMessageCallback({userMessage:s,invocationContext:u});if(!((p=e.abortSignal)!=null&&p.aborted)){if(f&&(s=f),s){if(!((g=s.parts)!=null&&g.length))throw new Error("No parts in the newMessage.");if(i.saveInputBlobsAsArtifacts&&(await this.saveArtifacts(u.invocationId,l.userId,l.id,s),(C=e.abortSignal)!=null&&C.aborted)||(await this.sessionService.appendEvent({session:l,event:x({invocationId:u.invocationId,author:"user",actions:r?V({stateDelta:r}):void 0,content:s})}),(h=e.abortSignal)!=null&&h.aborted))return}if(u.agent=this.determineAgentForResumption(l,this.agent),s){let ut=await this.pluginManager.runBeforeRunCallback({invocationContext:u});if((A=e.abortSignal)!=null&&A.aborted)return;if(ut){let Ie=x({invocationId:u.invocationId,author:"model",content:ut});if(await this.sessionService.appendEvent({session:l,event:Ie}),(j=e.abortSignal)!=null&&j.aborted)return;yield Ie}else{for await(let Ie of u.agent.runAsync(u)){if((w=e.abortSignal)!=null&&w.aborted)return;Ie.partial||await this.sessionService.appendEvent({session:l,event:Ie});let yr=await this.pluginManager.runOnEventCallback({invocationContext:u,event:Ie});if((H=e.abortSignal)!=null&&H.aborted)return;yr?yield yr:yield Ie}if(await this.pluginManager.runAfterRunCallback({invocationContext:u}),(lt=e.abortSignal)!=null&<.aborted)return}}}})}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]=rl(`Uploaded file: ${c}. It is saved into artifacts`)}}determineAgentForResumption(e,t){let o=al(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(!y(t)||t.disallowTransferToParent)return!1;t=t.parentAgent}return!0}};function al(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=P(c);if(l){for(let u of l)if(u.id===t)return c}}return null}function hs(n,e){var r,i;let t=V();for(let s of n){if(s.errorCode||s.errorMessage)return Ht({taskId:e.requestContext.taskId,contextId:e.requestContext.contextId,error:new Error(s.errorMessage||s.errorCode),metadata:{...yt(s,e),...xt(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=cl(n,e);return o?{...o,metadata:{...o.metadata,...xt(t)}}:Yr({taskId:e.requestContext.taskId,contextId:e.requestContext.contextId,metadata:{...Ee(e),...xt(t)}})}function cl(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=ll(a,s.longRunningToolIds,t);!c||o.has(c)||(t.push(a),o.add(c))}if(t.length>0)return Xr({taskId:e.requestContext.taskId,contextId:e.requestContext.contextId,parts:de(t,[...o]),metadata:Ee(e)})}function ll(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 Cs(n,e){var r;if(!n||!Wt(n)||!n.status.message)return;let t=n.status.message,o=ae(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 Qr({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 vs({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 _t=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=ei(o),a=await As(this.config.runner),c=await ul(r,i,a.sessionService,a.appName),l=vs({session:c,userContent:s,requestContext:e});try{if(this.config.beforeExecuteCallback&&await this.config.beforeExecuteCallback(e),e.task){let p=Cs(e.task,s);if(p){await this.publishFinalTaskStatus({executorContext:l,eventBus:t,event:p});return}}e.task||t.publish(Hr({taskId:e.taskId,contextId:e.contextId,message:o})),t.publish(Kr({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 g=this.convertAdkEventToA2AEvent(p,l);g&&(await((f=(u=this.config).afterEventCallback)==null?void 0:f.call(u,l,p,g)),t.publish(g))}await this.publishFinalTaskStatus({executorContext:l,eventBus:t,event:hs(d,l)})}catch(d){let p=d;await this.publishFinalTaskStatus({executorContext:l,eventBus:t,error:p,event:Ht({taskId:e.taskId,contextId:e.contextId,error:new Error(`Agent run failed: ${p.message}`),metadata:Ee(l)})})}}async cancelTask(e){throw new Error("Task cancellation is not supported yet.")}convertAdkEventToA2AEvent(e,t){var s;let o=de((s=e.content)==null?void 0:s.parts,e.longRunningToolIds);if(o.length===0)return;let r=this.agentPartialArtifactIdsMap[e.author]||I(),i=Jr({taskId:t.requestContext.taskId,contextId:t.requestContext.contextId,artifactId:r,parts:o,metadata:yt(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){m.error("Error in afterExecuteCallback:",a)}t.publish(o)}};async function ul(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 As(n){if(typeof n=="function"){let e=await n();return As(e)}return $o(n)?n:new ge(n)}import{AGENT_CARD_PATH as dl}from"@a2a-js/sdk";import{DefaultRequestHandler as pl,InMemoryTaskStore as ml}from"@a2a-js/sdk/server";import{agentCardHandler as gl,jsonRpcHandler as hl,restHandler as Cl,UserBuilder as xs}from"@a2a-js/sdk/server/express";import Go from"express";import{cloneDeep as Es}from"lodash-es";import{cloneDeep as fl}from"lodash-es";var De=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=qo(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(T.TEMP_PREFIX)||(e.state[o]=r)}};function qo(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(T.TEMP_PREFIX)||(t[o]=r);return n.actions.stateDelta=t,n}function he(n={},e={},t={}){let o=fl(t);for(let[r,i]of Object.entries(n))o[T.APP_PREFIX+r]=i;for(let[r,i]of Object.entries(e))o[T.USER_PREFIX+r]=i;return o}function Re(n){return{id:n.id,appName:n.appName,userId:n.userId||"",state:n.state||{},events:n.events||[],lastUpdateTime:n.lastUpdateTime||0}}function ys(n){return n==="memory://"}var te=class extends De{constructor(){super(...arguments);this.sessions={};this.userState={};this.appState={}}async createSession({appName:t,userId:o,state:r,sessionId:i}){var c;let s=Re({id:i||I(),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=Es(s);return a.state=he(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=Es(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=he(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(Re({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(T.APP_PREFIX)&&(this.appState[r]=this.appState[r]||{},this.appState[r][l.replace(T.APP_PREFIX,"")]=o.actions.stateDelta[l]),l.startsWith(T.USER_PREFIX)&&(this.userState[r]=this.userState[r]||{},this.userState[r][i]=this.userState[r][i]||{},this.userState[r][i][l.replace(T.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 vl(n,e={}){var f,d,p,g;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 dn(e.agentCard):await Fo(n,[{url:`${s}/jsonrpc`,transport:"JSONRPC"},{url:`${s}/rest`,transport:"HTTP+JSON"}]),c=new _t({runner:e.runner||{agent:n,appName:n.name,sessionService:e.sessionService||new te,memoryService:e.memoryService,artifactService:e.artifactService},runConfig:{streamingMode:"sse"}}),l=new pl(a,new ml,c),u=(g=e.app)!=null?g:Go();return e.app||(u.use(Go.urlencoded({limit:"50mb",extended:!0})),u.use(Go.json({limit:"50mb"}))),u.use(`${i}/${dl}`,gl({agentCardProvider:l})),u.use(`${i}/rest`,Cl({requestHandler:l,userBuilder:xs.noAuthentication})),u.use(`${i}/jsonrpc`,hl({requestHandler:l,userBuilder:xs.noAuthentication})),u}import*as L from"fs/promises";import*as S from"path";import{fileURLToPath as Rs,pathToFileURL as Al}from"url";var gn="user:",Lt=class{constructor(e){try{let t=e.startsWith("file://")?Rs(e):e;this.rootDir=S.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=Ue(this.rootDir,e,t,o);await L.mkdir(s,{recursive:!0});let a=await nt(s),c=a.length>0?a[a.length-1]+1:0,l=$e(s),u=S.join(l,c.toString());await L.mkdir(u,{recursive:!0});let f=S.basename(s),d=S.join(u,f),p;if(r.inlineData){let h=r.inlineData.data||"";await L.writeFile(d,Buffer.from(h,"base64")),p=r.inlineData.mimeType||"application/octet-stream"}else r.text!==void 0&&await L.writeFile(d,r.text,"utf-8");let g=await xl(this.rootDir,e,t,o,c),C={fileName:o,mimeType:p,version:c,canonicalUri:g,customMetadata:i};return await Tl(S.join(u,"metadata.json"),C),c}async loadArtifact({userId:e,sessionId:t,filename:o,version:r}){try{let i=Ue(this.rootDir,e,t,o);try{await L.access(i)}catch(p){m.warn(`[FileArtifactService] loadArtifact: Artifact ${o} not found`,p);return}let s=await nt(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=S.join($e(i),a.toString()),l=S.join(c,"metadata.json"),u=await mn(l),f=S.basename(i),d=S.join(c,f);if(u.canonicalUri){let p=Sl(u.canonicalUri);if(p)try{await L.access(p),d=p}catch{m.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{m.warn(`[FileArtifactService] loadArtifact: Artifact ${o} missing at ${d}`);return}try{return{text:await L.readFile(d,"utf-8")}}catch{m.warn(`[FileArtifactService] loadArtifact: Text artifact ${o} missing at ${d}`);return}}catch(i){m.error(`[FileArtifactService] loadArtifact: Error loading artifact ${o}`,i);return}}async listArtifactKeys({userId:e,sessionId:t}){let o=new Set,r=bs(this.rootDir,e),i=Ps(r,t);for await(let a of jo(i)){let c=await Ts(a);if(c!=null&&c.fileName)o.add(c.fileName);else{let l=S.relative(i,a);o.add(Ss(l))}}let s=ks(r);for await(let a of jo(s)){let c=await Ts(a);if(c!=null&&c.fileName)o.add(c.fileName);else{let l=S.relative(s,a);o.add(`${gn}${Ss(l)}`)}}return Array.from(o).sort()}async deleteArtifact({userId:e,sessionId:t,filename:o}){try{let r=Ue(this.rootDir,e,t,o);await L.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=Ue(this.rootDir,e,t,o);return await nt(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=Ue(this.rootDir,e,t,o),i=await nt(r),s=[];for(let a of i){let c=S.join($e(r),a.toString(),"metadata.json");try{let l=await mn(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=Ue(this.rootDir,e,t,o),s=await nt(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=S.join($e(i),a.toString(),"metadata.json");return await mn(c)}catch(i){m.warn(`[FileArtifactService] getArtifactVersion: Failed to get artifact version for userId: ${e} sessionId: ${t} filename: ${o} version: ${r}`,i);return}}},El=/^[a-zA-Z0-9_@-][a-zA-Z0-9_.@-]{0,255}$/;function ws(n,e){if(!n||!El.test(n))throw new Error(`[FileArtifactService] Invalid ${e}: value contains disallowed characters.`)}function Is(n,e,t){let o=S.resolve(e),r=S.resolve(n);if(!r.startsWith(o+S.sep)&&r!==o)throw new Error(`[FileArtifactService] ${t} escapes storage root. Resolved: ${r}, Root: ${o}`)}function bs(n,e){ws(e,"userId");let t=S.join(n,"users",e);return Is(t,n,"userRoot"),t}function yl(n,e){return!n||e.startsWith(gn)}function ks(n){return S.join(n,"artifacts")}function Ps(n,e){ws(e,"sessionId");let t=S.join(n,"sessions",e,"artifacts");return Is(t,n,"sessionArtifactsDir"),t}function $e(n){return S.join(n,"versions")}function Ue(n,e,t,o){let r=bs(n,e),i;if(yl(t,o))i=ks(r);else{if(!t)throw new Error("Session ID must be provided for session-scoped artifacts.");i=Ps(r,t)}let s=o;if(s.startsWith(gn)&&(s=s.substring(gn.length)),s=s.trim(),S.isAbsolute(s))throw new Error(`Absolute artifact filename ${o} is not permitted.`);let a=S.resolve(i,s),c=S.relative(i,a);if(c.startsWith("..")||S.isAbsolute(c))throw new Error(`Artifact filename ${o} escapes storage directory.`);return c===""||c==="."?S.join(i,"artifact"):a}async function nt(n){let e=$e(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 m.warn(`[FileArtifactService] getArtifactVersionsFromDir: Failed to list artifact versions from ${n}`,t),[]}}async function xl(n,e,t,o,r){let i=await Ue(n,e,t,o),s=S.basename(i),a=$e(i),c=S.join(a,r.toString(),s);return Al(c).toString()}async function Tl(n,e){await L.writeFile(n,JSON.stringify(e,null,2),"utf-8")}async function mn(n){let e=await L.readFile(n,"utf-8");return JSON.parse(e)}async function Ts(n){let e=await nt(n);if(e.length===0)return;let t=e[e.length-1],o=S.join($e(n),t.toString(),"metadata.json");try{return await mn(o)}catch(r){m.warn(`[FileArtifactService] getLatestMetadata: Failed to read metadata from ${o}`,r);return}}async function*jo(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=S.join(n,o.name);for await(let i of jo(r))yield i}}catch{}}function Sl(n){try{return Rs(n)}catch(e){m.warn(`[FileArtifactService] fileUriToPath: Failed to convert file URI to path: ${n}`,e);return}}function Ss(n){return n.split(S.sep).join("/")}import{Storage as Rl}from"@google-cloud/storage";import{createPartFromBase64 as wl,createPartFromText as Il}from"@google/genai";var Mt=class{constructor(e){this.bucket=new Rl().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(Ot({...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(Ot({...e,version:t})),[[r],[i]]=await Promise.all([o.getMetadata(),o.download()]);return r.contentType==="text/plain"?Il(i.toString("utf-8")):wl(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[..._s(r,t),..._s(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(Ot({...e,version:o})).delete()))}async listVersions(e){let o=Ot(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(Ot({...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 Ot({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 _s(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=bl(i);o.add(`${t}${s}`)}return[...o]}function bl(n){let e=n.split("/");return e.length<2?n:e.slice(0,-1).join("/")}function Ls(n){return n==="memory://"}var qe=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=ot(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=ot(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=ot(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=ot(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=ot(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=ot(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 ot(n,e,t,o){return kl(o)?`${n}/${e}/user/${o}`:`${n}/${e}/${t}/${o}`}function kl(n){return n.startsWith("user:")}function Pl(n){if(Ls(n))return new qe;if(n.startsWith("gs://")){let e=n.split("://")[1];return new Mt(e)}if(n.startsWith("file://")){let e=n.split("://")[1];return new Lt(e)}throw new Error(`Unsupported artifact service URI: ${n}`)}import{spawn as Ol}from"child_process";import*as Q from"fs/promises";import*as vn from"os";import*as we from"path";var _l={".js":{mimeType:"text/javascript",encoding:"utf-8"},".py":{mimeType:"text/x-python",encoding:"utf-8"},".md":{mimeType:"text/markdown",encoding:"utf-8"},".txt":{mimeType:"text/plain",encoding:"utf-8"},".html":{mimeType:"text/html",encoding:"utf-8"},".css":{mimeType:"text/css",encoding:"utf-8"},".json":{mimeType:"application/json",encoding:"utf-8"},".csv":{mimeType:"text/csv",encoding:"utf-8"},".svg":{mimeType:"image/svg+xml",encoding:"utf-8"},".xml":{mimeType:"application/xml",encoding:"utf-8"},".yaml":{mimeType:"text/yaml",encoding:"utf-8"},".yml":{mimeType:"text/yaml",encoding:"utf-8"},".png":{mimeType:"image/png",encoding:"base64"},".jpg":{mimeType:"image/jpeg",encoding:"base64"},".jpeg":{mimeType:"image/jpeg",encoding:"base64"},".pdf":{mimeType:"application/pdf",encoding:"base64"}},Ll={".js":"javascript",".ts":"typescript",".py":"python",".bat":"cmd",".cmd":"cmd",".ps1":"powershell",".sh":"shell"};function hn(n){return _l[n.toLowerCase()]||{mimeType:"application/octet-stream",encoding:"base64"}}function Os(n){return Ll[n.toLowerCase()]||"unspecified"}import*as rt from"fs/promises";import*as U from"path";async function it(n,e=process.cwd()){let t=U.resolve(e),o=[];for(let r of n){let i=U.resolve(e,r.name);if(!i.startsWith(t))throw new Error(`Path traversal detected: ${r.name} resolves outside of ${e}`);let s=U.extname(i),a=U.dirname(i),c=U.basename(i,s),l=i,u=2;for(;;)try{await rt.access(l);let f=`${c}_${u}${s}`;l=U.join(a,f);let d=U.dirname(r.name);r.name=d==="."?f:U.join(d,f),u++}catch{break}if(!l.startsWith(t))throw new Error(`Path traversal detected: ${r.name} resolves outside of ${e}`);await rt.mkdir(U.dirname(l),{recursive:!0}),await rt.writeFile(l,Buffer.from(r.content,r.contentEncoding)),o.push({...r,name:U.relative(e,l)})}return o}var Cn=vn.platform()==="win32";async function Ml(n,e,t){let o=we.join(vn.tmpdir(),"adk_js_unsafe_code_executor",Date.now().toString()+"_"+Math.random().toString(36).slice(2));await Q.mkdir(o,{recursive:!0});let r=Nl(e,t)||".js",i=we.join(o,`script${r}`);return await Q.writeFile(i,n),{filePath:i,tempDir:o}}function Nl(n,e){if(n==="javascript")return".js";if(n==="python")return".py";if(n==="powershell")return".ps1";if(n==="cmd")return".bat";if(n==="shell")return Cn?e&&e.toLowerCase().includes("cmd")?".bat":".ps1":".sh"}var Vo=class extends Me{constructor(e={}){var t,o,r,i;super(),this.timeoutSeconds=(t=e.timeoutSeconds)!=null?t:30,this.nodeCommandPath=(o=e.commandPath)!=null?o:process.execPath,this.pythonCommandPath=(r=e.pythonCommandPath)!=null?r:Cn?"python":"python3",this.shellCommandPath=(i=e.shellCommandPath)!=null?i:Cn?"powershell":"bash",this.stateful=!1,this.optimizeDataFile=!1}async executeCode(e){var i;let{code:t,language:o}=e.codeExecutionInput;if(!["javascript","python","shell","cmd","powershell"].includes(o))return{stdout:"",stderr:`Unsupported language: ${o}`,outputFiles:[]};m.warn(`
|
|
87
|
-
====================================================================================
|
|
88
|
-
\u26A0\uFE0F DANGER: UnsafeLocalCodeExecutor is executing code locally on this host machine!
|
|
89
|
-
This component provides NO sandboxing or container isolation. Arbitrary shell/script
|
|
90
|
-
commands generated by AI or untrusted sources could lead to serious security risks.
|
|
91
|
-
====================================================================================
|
|
92
|
-
`);let r;try{let s=await Ml(t,o,this.shellCommandPath),a=s.filePath;r=s.tempDir,e.codeExecutionInput.inputFiles&&await it(e.codeExecutionInput.inputFiles,r);let c=this.nodeCommandPath,l=[a];if(o==="python"?c=this.pythonCommandPath:o==="shell"?(c=this.shellCommandPath,this.shellCommandPath.toLowerCase().includes("powershell")?l=["-NoLogo","-ExecutionPolicy","Bypass","-File",a]:this.shellCommandPath.toLowerCase().includes("cmd")&&(l=["/c",a])):o==="powershell"?(c=Cn?"powershell":"pwsh",l=["-NoLogo","-ExecutionPolicy","Bypass","-File",a]):o==="cmd"&&(c="cmd.exe",l=["/c",a]),e.codeExecutionInput.args)if(Array.isArray(e.codeExecutionInput.args))l.push(...e.codeExecutionInput.args);else for(let[d,p]of Object.entries(e.codeExecutionInput.args))l.push(`--${d}`,String(p));let u=await new Promise(d=>{let p=Ol(c,l,{timeout:this.timeoutSeconds*1e3,killSignal:"SIGKILL",cwd:r}),g="",C="";p.stdout&&p.stdout.on("data",h=>{g+=h.toString()}),p.stderr&&p.stderr.on("data",h=>{C+=h.toString()}),p.on("error",h=>{C+=`Process error: ${h.message}
|
|
93
|
-
`}),p.on("close",(h,A)=>{A==="SIGKILL"||A==="SIGTERM"?C+=`
|
|
94
|
-
Code execution timed out after ${this.timeoutSeconds} seconds.`:h!==0&&h!==null&&(C||(C=`Exit code ${h}`)),d({stdout:g,stderr:C,exitCode:h})})}),f=[];try{let d=await Q.readdir(r,{recursive:!0});for(let p of d){let g=we.join(r,p);if(!(await Q.lstat(g)).isFile()||p===we.basename(a)||((i=e.codeExecutionInput.inputFiles)==null?void 0:i.some(H=>H.name===p)))continue;let A=await Q.readFile(g),{mimeType:j,encoding:w}=hn(we.extname(p));f.push({name:p,content:A.toString(w),contentEncoding:w,mimeType:j})}}catch(d){m.error(`Error scanning output files: ${d}`)}return{stdout:u.stdout,stderr:u.stderr,outputFiles:f}}finally{r&&await Q.rm(r,{recursive:!0,force:!0})}}};var zo=class{constructor(e={}){this.task=e.task,this.stream=e.stream}};var Wo=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}}};async function*st(n,e,t,o){let r=await t(n,e);if(!r)throw new Error("Initial routing failed, no item selected.");let i=r;m.debug(`Router selected initial key: ${i}`);let s=n[i];if(!s)throw new Error(`Item not found for key: ${i}`);let a=new Set([i]);for(;;){let c=o(s),l=!1;try{if(Fl(c)){for await(let f of c)yield f,l=!0;return}yield await c;return}catch(u){if(l)throw u;{let f=await t(n,e,{failedKeys:a,lastError:u});if(m.debug(`Router selected next key: ${f}`),f===void 0||a.has(f))throw u;if(i=f,s=n[i],!s)throw new Error(`Item not found for key: ${i}`);a.add(i)}}}}function Fl(n){return typeof n=="object"&&typeof n[Symbol.asyncIterator]=="function"}var Ho=Symbol.for("google.adk.routedAgent");function Bl(n){return typeof n=="object"&&n!==null&&Ho in n&&n[Ho]===!0}var Ms,Ns,Nt=class extends(Ns=$,Ms=Ho,Ns){constructor(t){let o=Array.isArray(t.agents)?t.agents:Object.values(t.agents);super({...t,subAgents:o});this[Ms]=!0;Array.isArray(t.agents)?this.agents=Object.fromEntries(t.agents.map(r=>[r.name,r])):this.agents=t.agents,this.router=t.router}async*runAsyncImpl(t){yield*st(this.agents,t,this.router,o=>o.runAsync(t))}async*runLiveImpl(t){yield*st(this.agents,t,this.router,o=>o.runLive(t))}};Nt=v([k],Nt);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 Yo=class{constructor(){this.providers=new Map}register(e,t){this.providers.set(e,t)}getProvider(e){return this.providers.get(e.type)}};var Jo=class{constructor(){this.credentials={}}loadCredential(e,t){let o=this.getBucketForCurrentContext(t);return Promise.resolve(o[e.credentialKey])}async saveCredential(e,t){let o=this.getBucketForCurrentContext(t);e.exchangedAuthCredential&&(o[e.credentialKey]=e.exchangedAuthCredential)}getBucketForCurrentContext(e){let{appName:t,userId:o}=e.invocationContext.session;return this.credentials[t]||(this.credentials[t]={}),this.credentials[t][o]||(this.credentials[t][o]={}),this.credentials[t][o]}};var Xo=class{loadCredential(e,t){return Promise.resolve(t.state.get(e.credentialKey))}async saveCredential(e,t){e.exchangedAuthCredential&&t.state.set(e.credentialKey,e.exchangedAuthCredential)}};import{z as ne}from"zod";var Dl=ne.object({issuer:ne.string(),authorization_endpoint:ne.string(),token_endpoint:ne.string(),scopes_supported:ne.array(ne.string()).optional(),registration_endpoint:ne.string().optional()}),Ul=ne.object({resource:ne.string(),authorization_servers:ne.array(ne.string()).default([])}),Qo=class{async discoverAuthServerMetadata(e){if(!Fs(e))return;let t,o;try{let i=new URL(e);t=`${i.protocol}//${i.host}`,o=i.pathname}catch(i){m.warn(`Failed to parse issuerUrl ${e}: ${i}`);return}let r=[];o&&o!=="/"?r.push(`${t}/.well-known/oauth-authorization-server${o}`,`${t}/.well-known/openid-configuration${o}`,`${t}${o}/.well-known/openid-configuration`):r.push(`${t}/.well-known/oauth-authorization-server`,`${t}/.well-known/openid-configuration`);for(let i of r)try{let s=await fetch(i,{method:"GET",headers:{Accept:"application/json"}});if(!s.ok)continue;let a=await s.json(),c=Dl.parse(a);if(c.issuer.replace(/\/$/,"")===e.replace(/\/$/,""))return c;m.warn(`Issuer in metadata ${c.issuer} does not match issuerUrl ${e}`)}catch(s){m.debug(`Failed to fetch metadata from ${i}: ${s}`)}}async discoverResourceMetadata(e){if(!Fs(e))return;let t,o;try{let i=new URL(e);t=`${i.protocol}//${i.host}`,o=i.pathname}catch(i){m.warn(`Failed to parse resourceUrl ${e}: ${i}`);return}let r;o&&o!=="/"?r=`${t}/.well-known/oauth-protected-resource${o}`:r=`${t}/.well-known/oauth-protected-resource`;try{let i=await fetch(r,{method:"GET",headers:{Accept:"application/json"}});if(!i.ok)return;let s=await i.json(),a=Ul.parse(s);if(a.resource.replace(/\/$/,"")===e.replace(/\/$/,""))return a;m.warn(`Resource in metadata ${a.resource} does not match resourceUrl ${e}`)}catch(i){m.debug(`Failed to fetch metadata from ${r}: ${i}`)}}};function Fs(n){try{let e=new URL(n);if(e.protocol!=="https:")return m.warn(`Unsafe protocol for discovery URL: ${e.protocol}`),!1;let t=e.hostname.toLowerCase();if(t==="localhost"||t==="127.0.0.1"||t==="[::1]"||t.startsWith("10.")||t.startsWith("192.168.")||t.startsWith("169.254."))return m.warn(`Unsafe host for discovery URL: ${t}`),!1;let o=t.match(/^172\.(\d+)\./);if(o){let r=parseInt(o[1],10);if(r>=16&&r<=31)return m.warn(`Unsafe host for discovery URL: ${t}`),!1}return!0}catch(e){return m.warn(`Failed to parse URL for validation ${n}: ${e}`),!1}}var Zo=class{constructor(){this.refreshers={apiKey:void 0,http:void 0,oauth2:void 0,openIdConnect:void 0,serviceAccount:void 0}}register(e,t){this.refreshers[e]=t}getRefresher(e){return this.refreshers[e]}};var $l="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.",er=class{constructor(e){this.llm=e.llm,this.prompt=e.prompt||$l}async summarize(e){var u,f,d,p,g,C;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 h=0;h<e.length;h++)r+=`[Event ${h+1} - Author: ${e[h].author}]
|
|
95
|
-
`,r+=`${pt(e[h])}
|
|
96
|
-
|
|
97
|
-
`;let s={contents:[{role:"user",parts:[{text:`${this.prompt}
|
|
98
|
-
|
|
99
|
-
${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 h of a)(C=(g=(p=h.content)==null?void 0:p.parts)==null?void 0:g[0])!=null&&C.text&&(c+=h.content.parts[0].text);return qi({author:"system",content:{role:"model",parts:[{text:c}]},startTime:t,endTime:o,compactedContent:c})}};var tr=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];X(i)&&(!t||i.endTime>t.endTime)&&(t=i)}if(!t)return e;let o=e.filter(r=>!X(r)&&r.timestamp>t.endTime);return[t,...o]}shouldCompact(e){let t=e.session.events,o=this.getActiveEvents(t);if(o.filter(s=>!X(s)).length<=this.eventRetentionSize)return!1;let i=0;for(let s of o)i+=ql(s);return i>this.tokenThreshold}async compact(e){let t=e.session.events,o=this.getActiveEvents(t),r=o.filter(u=>!X(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(jl(u)&&Gl(f))i--;else break}if(i===0)return;let s=r.slice(0,i),a=o.find(X),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 ql(n){var t;if(((t=n.usageMetadata)==null?void 0:t.promptTokenCount)!==void 0)return n.usageMetadata.promptTokenCount;let e=pt(n);return Math.ceil(e.length/4)}function Gl(n){var e,t;return!!((t=(e=n.content)==null?void 0:e.parts)!=null&&t.some(o=>o.functionCall!==void 0))}function jl(n){var e,t;return!!((t=(e=n.content)==null?void 0:e.parts)!=null&&t.some(o=>o.functionResponse!==void 0))}var nr=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)}};import{isEmpty as Ft}from"lodash-es";var Bs=(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))(Bs||{});function Vl(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&&!Ft(r.functionCall)?e.push({type:"tool_call",call:r.functionCall}):r.functionResponse&&!Ft(r.functionResponse)?e.push({type:"tool_result",result:r.functionResponse}):r.executableCode&&!Ft(r.executableCode)?e.push({type:"call_code",code:r.executableCode}):r.codeExecutionResult&&!Ft(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&&!Ft(n.actions.requestedToolConfirmations)&&e.push({type:"tool_confirmation",confirmations:n.actions.requestedToolConfirmations}),Ce(n)&&e.push({type:"finished",output:void 0}),e}var or=Symbol.for("google.adk.baseExampleProvider");function zl(n){return typeof n=="object"&&n!==null&&or in n&&n[or]===!0}var Ds;Ds=or;var rr=class{constructor(){this[Ds]=!0}};var Ge=class{constructor(){this.memories=[];this.sessionEvents={}}async addSessionToMemory(e){let t=Us(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=Us(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=Wl(l);if(!u.size)continue;o.some(d=>u.has(d))&&r.memories.push({content:c.content,author:c.author,timestamp:Hl(c.timestamp)})}return r}};function Us(n,e){return`${n}/${e}`}function Wl(n){return new Set([...n.matchAll(/[A-Za-z]+/g)].map(e=>e[0].toLowerCase()))}function Hl(n){return new Date(n).toISOString()}var Bt=class extends ye{constructor({models:e,router:t,modelName:o="routed-llm"}){let r=Array.isArray(e)?Object.fromEntries(e.map(a=>[a.model,a])):e,s=`RoutedLlm[${Object.entries(r).map(([a,c])=>`${a} (${c.model})`).join(", ")}]`;super({model:o==="routed-llm"?s:o}),this.models=r,this.router=t}async*generateContentAsync(e,t){m.info(`Routing request via ${this.model}`),yield*st(this.models,e,this.router,o=>o.generateContentAsync(e,t))}async connect(e){let o=await st(this.models,e,this.router,r=>r.connect(e)).next();if(o.done||o.value===void 0)throw new Error("Failed to establish connection: No connection yielded.");return o.value}};Bt=v([k],Bt);var ir=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: ${Ce(e)}`);let t=P(e);if(t.length>0){let r=t.map(i=>i.name);this.log(` Function Calls: ${r}`)}let o=K(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 qs="adk_request_confirmation",sr="orcas_tool_call_security_check_states",$s="This tool call needs external confirmation before completion.",Gs=(o=>(o.DENY="DENY",o.CONFIRM="CONFIRM",o.ALLOW="ALLOW",o))(Gs||{}),An=class{async evaluate(){return Promise.resolve({outcome:"ALLOW",reason:"For prototyping purpose, all tool calls are allowed."})}},ar=class extends ce{constructor(e){var t;super("security_plugin"),this.policyEngine=(t=e==null?void 0:e.policyEngine)!=null?t:new An}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:$s};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(sr))!=null?r:{})[t]:void 0}setToolCallCheckState(e,t){var i;let{functionCallId:o}=e;if(!o)return;let r=(i=e.state.get(sr))!=null?i:{};r[o]=t,e.state.set(sr,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:$s};case"ALLOW":return;default:return}}};function Kl(n){if(!n.content||!n.content.parts)return[];let e=[];for(let t of n.content.parts)t&&t.functionCall&&t.functionCall.name===qs&&e.push(t.functionCall);return e}var cr=class extends ge{constructor({agent:e,appName:t="InMemoryRunner",plugins:o=[]}){super({appName:t,agent:e,plugins:o,artifactService:new qe,sessionService:new te,memoryService:new Ge})}};import{Type as yn}from"@google/genai";var En=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 lr=Symbol.for("google.adk.agentTool");function Yl(n){return typeof n=="object"&&n!==null&&lr in n&&n[lr]===!0}var js,Vs,ur=class extends(Vs=R,js=lr,Vs){constructor(t){super({name:t.agent.name,description:t.agent.description||""});this[js]=!0;this.agent=t.agent,this.skipSummarization=t.skipSummarization||!1}_getDeclaration(){let t;if(y(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:yn.OBJECT,properties:{request:{type:yn.STRING}},required:["request"]}},this.apiVariant!=="GEMINI_API"){let o=y(this.agent)&&this.agent.outputSchema;t.response=o?{type:yn.OBJECT}:{type:yn.STRING}}return t}async runAsync({args:t,toolContext:o}){var f,d,p,g,C,h;this.skipSummarization&&(o.actions.skipSummarization=!0);let i={role:"user",parts:[{text:y(this.agent)&&this.agent.inputSchema?JSON.stringify(t):t.request}]},s=new ge({appName:this.agent.name,agent:this.agent,artifactService:new En(o),sessionService:(f=o.invocationContext.sessionService)!=null?f:new te,memoryService:(d=o.invocationContext.memoryService)!=null?d:new Ge,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()});if((p=o.abortSignal)!=null&&p.aborted)return"";let c;for await(let A of s.runAsync({userId:a.userId,sessionId:a.id,newMessage:i,abortSignal:o.abortSignal})){if((g=o.abortSignal)!=null&&g.aborted)return;A.actions.stateDelta&&o.state.update(A.actions.stateDelta),c=A}if(!((h=(C=c==null?void 0:c.content)==null?void 0:C.parts)!=null&&h.length))return"";let l=y(this.agent)&&this.agent.outputSchema,u=c.content.parts.map(A=>A.text).filter(A=>A).join(`
|
|
100
|
-
`);return l?JSON.parse(u):u}};var xn=class extends R{constructor(){super({name:"exit_loop",description:`Exits the loop.
|
|
101
|
-
|
|
102
|
-
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,""}},Jl=new xn;var Tn=class extends R{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||[],Pi(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(ki(e.model)){e.config.tools.push({googleSearch:{}});return}throw new Error(`Google search tool is not supported for model ${e.model}`)}}},Xl=new Tn;import{Type as fr}from"@google/genai";var Ql=Dn(),Zl=["image/","audio/","video/"],eu=new Set(["application/pdf"]),tu=new Set(["application/csv","application/json","application/xml"]);function zs(n){if(n)return n.split(";")[0].trim()}function nu(n){let e=zs(n);return e?Zl.some(t=>e.startsWith(t))||eu.has(e):!1}function ou(n,e){let t=n.inlineData;if(!t||nu(t.mimeType))return n;let o=zs(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/")||tu.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 Sn=class extends R{constructor(){super({name:"load_artifacts",description:`Loads artifacts into the session for this request.
|
|
103
|
-
|
|
104
|
-
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:fr.OBJECT,properties:{artifact_names:{type:fr.ARRAY,items:{type:fr.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;q(t,[`You have a list of artifacts:
|
|
105
|
-
${JSON.stringify(o)}
|
|
106
|
-
|
|
107
|
-
When the user asks questions about any of the artifacts, you should call the
|
|
108
|
-
\`load_artifacts\` function to load the artifact. Always call load_artifacts
|
|
109
|
-
before answering questions related to the artifacts, regardless of whether the
|
|
110
|
-
artifacts have been loaded before. Do not depend on prior answers about the
|
|
111
|
-
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){Ql.warn(`Artifact "${u}" not found, skipping`);continue}let d=ou(f,u);t.contents.push({role:"user",parts:[{text:`Artifact ${u} is:`},d]})}}}}}},ru=new Sn;import{Type as Ws}from"@google/genai";var Rn=class extends R{constructor(){super({name:"load_memory",description:`Loads the memory for the current user.
|
|
112
|
-
|
|
113
|
-
NOTE: Currently this tool only uses text part from the memory.`})}_getDeclaration(){return{name:this.name,description:this.description,parameters:{type:Ws.OBJECT,properties:{query:{type:Ws.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&&q(e.llmRequest,[`You have memory. You can use it to answer questions. If any questions need
|
|
114
|
-
you to look up the memory, you should call load_memory function with a query.`])}},iu=new Rn;var Hs=`
|
|
115
|
-
|
|
116
|
-
NOTE: This is a long-running operation. Do not call this tool again if it has already returned some intermediate or pending status.`,dr=class extends me{constructor(e){super({...e,isLongRunning:!0})}_getDeclaration(){let e=super._getDeclaration();return e.description?e.description+=Hs:e.description=Hs.trimStart(),e}};var wn=class extends R{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{m.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(g=>{var C;return(C=g.text)!=null?C:""}).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.
|
|
117
|
-
They may be useful for answering the user's current query.
|
|
118
|
-
<PAST_CONVERSATIONS>
|
|
119
|
-
${i.join(`
|
|
120
|
-
`)}
|
|
121
|
-
</PAST_CONVERSATIONS>
|
|
122
|
-
`;q(e.llmRequest,[a])}},su=new wn;import{Type as au}from"@google/genai";function Ks(n){return n.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function In(n){if(!n||n.length===0)return`<available_skills>
|
|
123
|
-
</available_skills>`;let e=["<available_skills>"];for(let t of n){let o="frontmatter"in t?t.frontmatter:t;e.push(" <skill>"),e.push(` <name>${Ks(o.name)}</name>`),e.push(` <description>${Ks(o.description)}</description>`),e.push(" </skill>")}return e.push("</available_skills>"),e.join(`
|
|
124
|
-
`)}var je=class extends R{constructor(t){super({name:"list_skills",description:"Lists all available skills with their names and descriptions."});this.toolset=t}_getDeclaration(){return{name:this.name,description:this.description,parameters:{type:au.OBJECT,properties:{}}}}async runAsync(t){let o=Object.values(this.toolset.skills);return In(o)}};je=v([k],je);import{Type as pr}from"@google/genai";import cu from"path";var Ys="Binary file detected. The content has been injected into the conversation history for you to analyze.",lu={pdf:"application/pdf",jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",gif:"image/gif",csv:"text/csv",json:"application/json",xml:"application/xml",sh:"text/x-shellscript",bash:"text/x-shellscript",py:"text/x-python",js:"text/javascript",cjs:"text/javascript",mjs:"text/javascript",ts:"text/javascript",cts:"text/javascript",mts:"text/javascript"};function uu(n){var t;let e=((t=n.split(".").pop())==null?void 0:t.toLowerCase())||"";return lu[e]||"application/octet-stream"}var Ve=class extends R{constructor(t){super({name:"load_skill_resource",description:"Loads a resource file (from references/, assets/, or scripts/) from within a skill."});this.toolset=t}_getDeclaration(){return{name:this.name,description:this.description,parameters:{type:pr.OBJECT,properties:{skill_name:{type:pr.STRING,description:"The name of the skill."},path:{type:pr.STRING,description:"The relative path to the resource (e.g., 'references/my_doc.md', 'assets/template.txt', or 'scripts/setup.sh')."}},required:["skill_name","path"]}}}async runAsync({args:t}){var c,l,u;let o=t.skill_name,r=t.path;if(!o)return{error:"Skill name is required.",error_code:"MISSING_SKILL_NAME"};if(!r)return{error:"Resource path is required.",error_code:"MISSING_RESOURCE_PATH"};r=cu.posix.normalize(r);let i=this.toolset.getSkill(o);if(!i)return{error:`Skill '${o}' not found.`,error_code:"SKILL_NOT_FOUND"};let s,a=i.resources||{};if(r.startsWith("references/")){let f=r.substring(11);s=(c=a.references)==null?void 0:c[f]}else if(r.startsWith("assets/")){let f=r.substring(7);s=(l=a.assets)==null?void 0:l[f]}else if(r.startsWith("scripts/")){let f=r.substring(8),d=(u=a.scripts)==null?void 0:u[f];d&&(s=d.src)}else return{error:"Path must start with 'references/', 'assets/', or 'scripts/'.",error_code:"INVALID_RESOURCE_PATH"};return s===void 0?{error:`Resource '${r}' not found in skill '${o}'.`,error_code:"RESOURCE_NOT_FOUND"}:Buffer.isBuffer(s)?{skill_name:o,path:r,status:Ys}:{skill_name:o,path:r,content:s}}async processLlmRequest(t){var i,s;await super.processLlmRequest(t);let o=t.llmRequest;if(!o.contents||o.contents.length===0)return;let r=o.contents[o.contents.length-1];if(!(r.role!=="user"||!r.parts)){for(let a of r.parts)if(a.functionResponse&&a.functionResponse.name===this.name){let c=a.functionResponse.response||{};if(c.status===Ys){let l=c.skill_name,u=c.path,f=this.toolset.getSkill(l);if(!f)continue;let d=f.resources||{},p;if(u.startsWith("references/")?p=(i=d.references)==null?void 0:i[u.substring(11)]:u.startsWith("assets/")&&(p=(s=d.assets)==null?void 0:s[u.substring(7)]),Buffer.isBuffer(p)){let g=uu(u);o.contents.push({role:"user",parts:[{text:`The content of binary file '${u}' is:`},{inlineData:{data:p.toString("base64"),mimeType:g}}]})}}}}}};Ve=v([k],Ve);import{Type as Js}from"@google/genai";var ze=class extends R{constructor(t){super({name:"load_skill",description:"Loads the SKILL.md instructions for a given skill."});this.toolset=t}_getDeclaration(){return{name:this.name,description:this.description,parameters:{type:Js.OBJECT,properties:{name:{type:Js.STRING,description:"The name of the skill to load."}},required:["name"]}}}async runAsync({args:t,toolContext:o}){let r=t.name;if(!r)return{error:"Skill name is required.",error_code:"MISSING_SKILL_NAME"};let i=this.toolset.getSkill(r);if(!i)return{error:`Skill '${r}' not found.`,error_code:"SKILL_NOT_FOUND"};let a=`_adk_activated_skill_${o.invocationContext.agent.name}`,c=o.state.get(a)||[];return c.includes(r)||o.state.set(a,[...c,r]),{skill_name:r,instructions:i.instructions,frontmatter:i.frontmatter,resources:i.resources}}};ze=v([k],ze);import{Type as at}from"@google/genai";var We=class extends R{constructor(t){super({name:"run_skill_inline_script",description:"Executes an inline script provided directly in the request."});this.toolset=t}_getDeclaration(){return{name:this.name,description:this.description,parameters:{type:at.OBJECT,properties:{script_content:{type:at.STRING,description:"The content of the script to execute."},language:{type:at.STRING,description:"The language/type of the script.",enum:Object.values(Te).filter(t=>t!=="unspecified")},args:{anyOf:[{type:at.OBJECT},{type:at.ARRAY,items:{type:at.STRING}}],description:"Optional arguments to pass to the script as key-value pairs or an array of strings."}},required:["script_content","language"]}}}async runAsync({args:t,toolContext:o}){var c;let r=t.script_content,i=t.language,s=t.args;if(!r)return{error:"Script content is required.",errorCode:"MISSING_SCRIPT_CONTENT"};if(!i)return{error:"Language is required.",errorCode:"MISSING_LANGUAGE"};let a=(c=this.toolset)==null?void 0:c.codeExecutor;if(!a){let l=o.invocationContext.agent;y(l)&&(a=l.codeExecutor)}if(!a)return{error:"No code executor configured.",errorCode:"NO_CODE_EXECUTOR"};try{let l=await a.executeCode({invocationContext:o.invocationContext,codeExecutionInput:{code:r,inputFiles:[],language:i,args:s}});return l.outputFiles=await it(l.outputFiles),l}catch(l){return{error:`Failed to execute inline script: ${l.message}`,errorCode:"EXECUTION_ERROR"}}}};We=v([k],We);import{Type as bn}from"@google/genai";import*as mr from"path";var He=class extends R{constructor(t){super({name:"run_skill_script",description:"Executes a script from a skill's scripts/ directory."});this.toolset=t}_getDeclaration(){return{name:this.name,description:this.description,parameters:{type:bn.OBJECT,properties:{skill_name:{type:bn.STRING,description:"The name of the skill."},script_path:{type:bn.STRING,description:"The relative path to the script (e.g., 'scripts/setup.js')."},args:{type:bn.OBJECT,description:"Optional arguments to pass to the script as key-value pairs."}},required:["skill_name","script_path"]}}}async runAsync({args:t,toolContext:o}){var f,d,p,g;let r=t.skill_name,i=t.script_path,s=t.args||{};if(!r)return{error:"Skill name is required.",errorCode:"MISSING_SKILL_NAME"};if(!i)return{error:"Script path is required.",errorCode:"MISSING_SCRIPT_PATH"};let a=this.toolset.getSkill(r);if(!a)return{error:`Skill '${r}' not found.`,errorCode:"SKILL_NOT_FOUND"};let c=i.startsWith("scripts/")?i.substring(8):i,l=(d=(f=a.resources)==null?void 0:f.scripts)==null?void 0:d[c];if(l||(l=(g=(p=a.resources)==null?void 0:p.scripts)==null?void 0:g[i]),!l)return{error:`Script '${i}' not found in skill '${r}'.`,errorCode:"SCRIPT_NOT_FOUND"};let u=this.toolset.codeExecutor;if(!u){let C=o.invocationContext.agent;y(C)&&(u=C.codeExecutor)}if(!u)return{error:"No code executor configured.",errorCode:"NO_CODE_EXECUTOR"};try{let C=Os(mr.extname(i)),h=await u.executeCode({invocationContext:o.invocationContext,codeExecutionInput:{code:fu(i,C),inputFiles:du(a),language:C,args:s}});return h.outputFiles=await it(h.outputFiles),h}catch(C){return{error:`Failed to execute script '${i}': ${C.message}`,errorCode:"EXECUTION_ERROR"}}}};He=v([k],He);function fu(n,e){switch(e){case"javascript":return`require('./${n}');`;case"typescript":return`require('ts-node/register');
|
|
125
|
-
require('./${n}');`;case"python":return`import runpy
|
|
126
|
-
runpy.run_path('./${n}', run_name='__main__')`;case"shell":return`source ./${n} "$@"`;case"powershell":return`& .\\${n.replace(/\//g,"\\\\")} $args`;case"cmd":return`call .\\${n.replace(/\//g,"\\\\")} %*`;default:throw new Error(`Unsupported wrapper language: ${e}`)}}function du(n){var t,o,r;let e=[];for(let i of["references","assets","scripts"]){let s=(o=(t=n.resources)==null?void 0:t[i])!=null?o:{};for(let a of Object.keys(s)){let c=(r=s[a])!=null?r:void 0;if(c===void 0)continue;let l;if(typeof c=="string"||Buffer.isBuffer(c)?l=c:typeof c=="object"&&c!==null&&"src"in c&&typeof c.src=="string"&&(l=c.src),l===void 0)continue;let u=mr.extname(a).toLowerCase(),{encoding:f,mimeType:d}=hn(u);e.push({name:`${i}/${a}`,content:Buffer.from(l).toString(f),contentEncoding:f,mimeType:d})}}return e}var pu="You can use specialized 'skills' to help you with complex tasks. You MUST use the skill tools to interact with these skills.\n\nSkills are folders of instructions and resources that extend your capabilities for specialized tasks. Each skill folder contains:\n- **SKILL.md** (required): The main instruction file with skill metadata and detailed markdown instructions.\n- **references/** (Optional): Additional documentation or examples for skill usage.\n- **assets/** (Optional): Templates, scripts or other resources used by the skill.\n- **scripts/** (Optional): Executable scripts that can be run via bash.\n\nThis is very important:\n\n1. If a skill seems relevant to the current user query, you MUST use the `load_skill` tool with `name=\"<SKILL_NAME>\"` to read its full instructions before proceeding.\n2. Once you have read the instructions, follow them exactly as documented before replying to the user. For example, If the instruction lists multiple steps, please make sure you complete all of them in order.\n3. The `load_skill_resource` tool is for viewing files within a skill's directory (e.g., `references/*`, `assets/*`, `scripts/*`). Do NOT use other tools to access these files.\n4. Use `run_skill_script` to run scripts from a skill's `scripts/` directory. Use `load_skill_resource` to view script content first if needed.\n",Dt=class extends Se{constructor(t,o={}){super([],"adk_skill_toolset");this.toolCache=new Map;this.skills=Array.isArray(t)?Object.fromEntries(t.map(r=>[r.frontmatter.name,r])):t,this.codeExecutor=o.codeExecutor,this.additionalTools=o.additionalTools||[],this.tools=[new je(this),new ze(this),new Ve(this),new He(this),new We(this)]}async getTools(t){let o=await this.resolveAdditionalTools(t);return[...this.tools,...o]}async close(){}getSkill(t){return this.skills[t]}async processLlmRequest(t,o){await super.processLlmRequest(t,o);let r=Object.values(this.skills),i=In(r);q(o,[pu,i])}async resolveAdditionalTools(t){if(!t)return[];let o=t.agentName,r=`_adk_activated_skill_${o}`,i=t.state.get(r)||[];if(i.length===0)return[];let s=`${o}:${i.join(",")}`;if(this.toolCache.has(s))return this.toolCache.get(s);let a=new Set;for(let f of i){let d=this.skills[f];if(d&&d.frontmatter.metadata){let p=d.frontmatter.metadata.adk_additional_tools;p&&p.forEach(g=>a.add(g))}}if(a.size===0)return this.toolCache.set(s,[]),[];let c={};for(let f of this.additionalTools)if(f instanceof R){if(c[f.name])throw new Error(`Duplicate tool name: ${f.name}`);c[f.name]=f}else if(f instanceof Se){let d=await f.getTools(t);for(let p of d){if(c[p.name])throw new Error(`Duplicate tool name: ${p.name}`);c[p.name]=p}}let l=[],u=new Set(this.tools.map(f=>f.name));for(let f of a)if(c[f]){let d=c[f];u.has(d.name)||(l.push(d),u.add(d.name))}return this.toolCache.set(s,l),l}};Dt=v([k],Dt);import{LockMode as gu,MikroORM as hu}from"@mikro-orm/core";import{Entity as Ut,JsonType as mu,PrimaryKey as W,Property as oe}from"@mikro-orm/core";var hr="schema_version",Cr="1",gr=class extends mu{convertToDatabaseValue(e){return JSON.stringify(br(e))}convertToJSValue(e){return typeof e=="string"?On(JSON.parse(e)):On(e)}},le=class{};v([W({type:"string"})],le.prototype,"key",2),v([oe({type:"string"})],le.prototype,"value",2),le=v([Ut({tableName:"adk_internal_metadata"})],le);var G=class{constructor(){this.updateTime=new Date}};v([W({type:"string",fieldName:"app_name"})],G.prototype,"appName",2),v([oe({type:"json"})],G.prototype,"state",2),v([oe({type:"datetime",fieldName:"update_time",onCreate:()=>new Date,onUpdate:()=>new Date})],G.prototype,"updateTime",2),G=v([Ut({tableName:"app_states"})],G);W.name;var D=class{constructor(){this.updateTime=new Date}};v([W({type:"string",fieldName:"app_name"})],D.prototype,"appName",2),v([W({type:"string",fieldName:"user_id"})],D.prototype,"userId",2),v([oe({type:"json"})],D.prototype,"state",2),v([oe({type:"datetime",fieldName:"update_time",onCreate:()=>new Date,onUpdate:()=>new Date})],D.prototype,"updateTime",2),D=v([Ut({tableName:"user_states"})],D);W.name;var M=class{constructor(){this.createTime=new Date;this.updateTime=new Date}};v([W({type:"string"})],M.prototype,"id",2),v([W({type:"string",fieldName:"app_name"})],M.prototype,"appName",2),v([W({type:"string",fieldName:"user_id"})],M.prototype,"userId",2),v([oe({type:"json"})],M.prototype,"state",2),v([oe({type:"datetime",fieldName:"create_time",onCreate:()=>new Date})],M.prototype,"createTime",2),v([oe({type:"datetime",fieldName:"update_time",onCreate:()=>new Date})],M.prototype,"updateTime",2),M=v([Ut({tableName:"sessions"})],M);W.name;var B=class{};v([W({type:"string"})],B.prototype,"id",2),v([W({type:"string",fieldName:"app_name"})],B.prototype,"appName",2),v([W({type:"string",fieldName:"user_id"})],B.prototype,"userId",2),v([W({type:"string",fieldName:"session_id"})],B.prototype,"sessionId",2),v([oe({type:"string",fieldName:"invocation_id"})],B.prototype,"invocationId",2),v([oe({type:"datetime"})],B.prototype,"timestamp",2),v([oe({type:gr,fieldName:"event_data"})],B.prototype,"eventData",2),B=v([Ut({tableName:"events"})],B);var $t=[le,G,D,M,B];async function Xs(n){let e;if(n.startsWith("postgres://")||n.startsWith("postgresql://")){let{PostgreSqlDriver:t}=await Promise.resolve().then(()=>dt(ft("@mikro-orm/postgresql"),1));e=t}else if(n.startsWith("mysql://")){let{MySqlDriver:t}=await Promise.resolve().then(()=>dt(ft("@mikro-orm/mysql"),1));e=t}else if(n.startsWith("mariadb://")){let{MariaDbDriver:t}=await Promise.resolve().then(()=>dt(ft("@mikro-orm/mariadb"),1));e=t}else if(n.startsWith("sqlite://")){let{SqliteDriver:t}=await Promise.resolve().then(()=>dt(ft("@mikro-orm/sqlite"),1));e=t}else if(n.startsWith("mssql://")){let{MsSqlDriver:t}=await Promise.resolve().then(()=>dt(ft("@mikro-orm/mssql"),1));e=t}else throw new Error(`Unsupported database URI: ${n}`);return n.startsWith("sqlite://")?{entities:$t,dbName:n==="sqlite://:memory:"?":memory:":n.substring(9),driver:e}:{entities:$t,clientUrl:n,driver:e}}async function Qs(n){await n.schema.ensureDatabase(),await n.schema.updateSchema({safe:!0})}async function Zs(n){let e=n.em.fork(),t=await e.findOne(le,{key:hr});if(t){if(t.value!==Cr)throw new Error(`ADK Database schema version ${t.value} is not compatible.`);return}let o=e.create(le,{key:hr,value:Cr});await e.persist(o).flush()}function ea(n){return n?n.startsWith("postgres://")||n.startsWith("postgresql://")||n.startsWith("mysql://")||n.startsWith("mariadb://")||n.startsWith("mssql://")||n.startsWith("sqlite://"):!1}var qt=class extends De{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:$t}}}async init(){this.initialized||(this.connectionString&&(!this.options||!this.options.driver)&&(this.options=await Xs(this.connectionString)),this.orm=await hu.init(this.options),await Qs(this.orm),await Zs(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||I(),c=new Date;if(await s.findOne(M,{id:a,appName:t,userId:o}))throw new Error(`Session with id ${a} already exists.`);let u=await s.findOne(G,{appName:t});u||(u=s.create(G,{appName:t,state:{},updateTime:c}),s.persist(u));let f=await s.findOne(D,{appName:t,userId:o});f||(f=s.create(D,{appName:t,userId:o,state:{}}),s.persist(f));let d={},p={},g={};if(r)for(let[A,j]of Object.entries(r))A.startsWith(T.APP_PREFIX)?d[A.replace(T.APP_PREFIX,"")]=j:A.startsWith(T.USER_PREFIX)?p[A.replace(T.USER_PREFIX,"")]=j:g[A]=j;Object.keys(d).length>0&&(u.state={...u.state,...d}),Object.keys(p).length>0&&(f.state={...f.state,...p});let C=s.create(M,{id:a,appName:t,userId:o,state:g,createTime:c,updateTime:c});s.persist(C),await s.flush();let h=he(u.state,f.state,g);return Re({id:a,appName:t,userId:o,state:h,events:[],lastUpdateTime:C.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(M,{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(B,c,{orderBy:{timestamp:"DESC"},limit:i==null?void 0:i.numRecentEvents});l.reverse();let u=await s.findOne(G,{appName:t}),f=await s.findOne(D,{appName:t,userId:o}),d=he((u==null?void 0:u.state)||{},(f==null?void 0:f.state)||{},a.state);return Re({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(M,i),a=await r.findOne(G,{appName:t}),c=(a==null?void 0:a.state)||{},l={};if(o){let f=await r.findOne(D,{appName:t,userId:o});f&&(l[o]=f.state)}else{let f=await r.find(D,{appName:t});for(let d of f)l[d.userId]=d.state}return{sessions:s.map(f=>{let d=l[f.userId]||{},p=he(c,d,f.state);return Re({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(M,{appName:t,userId:o,id:r}),await i.nativeDelete(B,{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=qo(o);return await r.transactional(async s=>{let a=await s.findOne(M,{appName:t.appName,userId:t.userId,id:t.id},{lockMode:gu.PESSIMISTIC_WRITE});if(!a)throw new Error(`Session ${t.id} not found for appendEvent`);let c=await s.findOne(G,{appName:t.appName});c||(c=s.create(G,{appName:t.appName,state:{},updateTime:new Date}),s.persist(c));let l=await s.findOne(D,{appName:t.appName,userId:t.userId});if(l||(l=s.create(D,{appName:t.appName,userId:t.userId,state:{}}),s.persist(l)),a.updateTime.getTime()>t.lastUpdateTime){let d=await s.find(B,{appName:t.appName,userId:t.userId,sessionId:t.id},{orderBy:{timestamp:"ASC"}}),p=he(c.state,l.state,a.state);t.state=p,t.events=d.map(g=>g.eventData)}if(o.actions&&o.actions.stateDelta){let d={},p={},g={};for(let[C,h]of Object.entries(o.actions.stateDelta))C.startsWith(T.APP_PREFIX)?d[C.replace(T.APP_PREFIX,"")]=h:C.startsWith(T.USER_PREFIX)?p[C.replace(T.USER_PREFIX,"")]=h:g[C]=h;Object.keys(d).length>0&&(c.state={...c.state,...d}),Object.keys(p).length>0&&(l.state={...l.state,...p}),Object.keys(g).length>0&&(a.state={...a.state,...g})}let u=s.create(B,{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=he(c.state,l.state,a.state);t.state=f,t.events.push(o),t.lastUpdateTime=a.updateTime.getTime()}),o}};function Cu(n){if(ys(n))return new te;if(ea(n))return new qt(n);throw new Error(`Unsupported session service URI: ${n}`)}import Au from"js-yaml";import*as fe from"fs/promises";import*as O from"path";import{z as ue}from"zod";var vu=/^([a-z0-9]+(-[a-z0-9]+)*|[a-z0-9]+(_[a-z0-9]+)*)$/,vr=ue.preprocess(n=>{if(typeof n=="object"&&n!==null){let e=n;if("allowed-tools"in e&&!("allowedTools"in e))return{...e,allowedTools:e["allowed-tools"]}}return n},ue.object({name:ue.string().regex(vu,{message:"name must be lowercase kebab-case (a-z, 0-9, hyphens) or snake_case (a-z, 0-9, underscores), with no leading, trailing, or consecutive delimiters. Mixing hyphens and underscores is not allowed."}).max(64),description:ue.string().min(1).max(1024),license:ue.string().optional(),compatibility:ue.string().max(500).optional(),"allowed-tools":ue.string().optional(),metadata:ue.record(ue.string(),ue.any()).default({}).refine(n=>"adk_additional_tools"in n?Array.isArray(n.adk_additional_tools)&&n.adk_additional_tools.every(e=>typeof e=="string"):!0,{message:"adk_additional_tools must be a list of strings"})}).loose());var Eu=new Set(["name","description","license","allowed-tools","metadata","compatibility"]),ta=new Set(["__pycache__",".pytest_cache",".mypy_cache",".ruff_cache","node_modules","coverage","venv",".venv","env",".env",".git",".vscode",".idea"]),yu=new Set([".pyc",".pyo",".pyd",".tsbuildinfo",".DS_Store"]);async function Ar(n){let e={};async function t(o){let r=await fe.readdir(o,{withFileTypes:!0});for(let i of r){let s=O.join(o,i.name);if(i.isDirectory()){if(ta.has(i.name))continue;await t(s)}else if(i.isFile()){let a=O.relative(n,s);if(yu.has(O.extname(i.name)))continue;let c=await fe.readFile(s);try{e[a]=c.toString("utf-8")}catch{e[a]=c}}}}try{(await fe.stat(n)).isDirectory()&&await t(n)}catch(o){m.warn(`Failed to load directory '${n}': ${o.message}`)}return e}function xu(n){if(!n.startsWith("---"))throw new Error("SKILL.md must start with YAML frontmatter (---)");let e=n.split("---",3);if(e.length<3)throw new Error("SKILL.md frontmatter not properly closed with ---");let t=e[1],o=e[2].trim();try{let r=Au.load(t);if(typeof r!="object"||r===null)throw new Error("SKILL.md frontmatter must be a YAML mapping");return{frontmatter:vr.parse(r),body:o}}catch(r){throw new Error(`Invalid YAML in frontmatter: ${r.message}`)}}async function na(n){let e=O.resolve(n),t=await oa(n),o=O.join(e,"references"),r=O.join(e,"assets"),i=O.join(e,"scripts"),[s,a,c]=await Promise.all([Ar(o),Ar(r),Ar(i)]),l={};for(let[f,d]of Object.entries(c))typeof d=="string"&&(l[f]={src:d});return{...t,resources:{references:s,assets:a,scripts:l}}}async function Tu(n){let e=[],t=O.resolve(n),o;try{o=await oa(t)}catch(r){return[r.message]}try{let i=Object.keys(o.frontmatter).filter(a=>!Eu.has(a));i.length>0&&e.push(`Unknown frontmatter fields: [${i.sort().join(", ")}]`);let s=O.basename(t);s!==o.frontmatter.name&&e.push(`Skill name '${o.frontmatter.name}' does not match directory name '${s}'.`)}catch(r){e.push(r.message)}return e}async function oa(n){let e=O.resolve(n),t="",o="";try{let c=await fe.readdir(e,{withFileTypes:!0});for(let l of c)if(l.isFile()&&l.name.toLowerCase()==="skill.md"){let u=O.join(e,l.name);try{o=await fe.readFile(u,"utf-8"),t=u;break}catch{}}}catch(c){m.warn(`Failed to load directory '${n}': ${c.message}`)}if(!t)throw new Error(`SKILL.md (or any case variation like skill.md) not found in '${n}'.`);let{frontmatter:r,body:i}=xu(o),s=vr.parse(r),a=O.basename(e);if(a!==s.name)throw new Error(`Skill name '${s.name}' does not match directory name '${a}'.`);return{frontmatter:s,instructions:i}}async function Su(n){let e=O.resolve(n),t={};async function o(r){let i;try{i=await fe.readdir(r,{withFileTypes:!0})}catch{return}let s=!1;if(r!==e){for(let a of i)if(a.isFile()&&a.name.toLowerCase()==="skill.md"){s=!0;break}}if(s)try{let a=await na(r);t[a.frontmatter.name]=a}catch(a){m.warn(`Skipping invalid skill in '${r}':`,a)}else for(let a of i)if(a.isDirectory()){if(ta.has(a.name))continue;await o(O.join(r,a.name))}}try{await fe.readdir(e),await o(e)}catch(r){m.warn(`Skills base path '${n}' is not a directory.`,r)}return t}import{MetricExporter as Ru}from"@google-cloud/opentelemetry-cloud-monitoring-exporter";import{TraceExporter as wu}from"@google-cloud/opentelemetry-cloud-trace-exporter";import{gcpDetector as Iu}from"@opentelemetry/resource-detector-gcp";import{detectResources as bu}from"@opentelemetry/resources";import{PeriodicExportingMetricReader as ku}from"@opentelemetry/sdk-metrics";import{BatchSpanProcessor as Pu}from"@opentelemetry/sdk-trace-base";import{GoogleAuth as _u}from"google-auth-library";var Lu="Cannot determine GCP Project. OTel GCP Exporters cannot be set up. Please make sure to log into correct GCP Project.";async function Ou(){try{return await new _u().getProjectId()||void 0}catch{return}}async function US(n={}){let{enableTracing:e=!1,enableMetrics:t=!1}=n,o=await Ou();return o?{spanProcessors:e?[new Pu(new wu({projectId:o}))]:[],metricReaders:t?[new ku({exporter:new Ru({projectId:o}),exportIntervalMillis:5e3})]:[],logRecordProcessors:[]}:(m.warn(Lu),{})}function $S(){return bu({detectors:[Iu]})}import{metrics as Mu,trace as Nu}from"@opentelemetry/api";import{logs as Fu}from"@opentelemetry/api-logs";import{OTLPLogExporter as Bu}from"@opentelemetry/exporter-logs-otlp-http";import{OTLPMetricExporter as Du}from"@opentelemetry/exporter-metrics-otlp-http";import{OTLPTraceExporter as Uu}from"@opentelemetry/exporter-trace-otlp-http";import{detectResources as $u}from"@opentelemetry/resources";import{BatchLogRecordProcessor as qu,LoggerProvider as Gu}from"@opentelemetry/sdk-logs";import{MeterProvider as ju,PeriodicExportingMetricReader as Vu}from"@opentelemetry/sdk-metrics";import{BatchSpanProcessor as zu}from"@opentelemetry/sdk-trace-base";import{NodeTracerProvider as Wu}from"@opentelemetry/sdk-trace-node";function nR(n=[],e){let t=e||Hu(),o=[...n,Yu()],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 Wu({resource:t,spanProcessors:r});a.register(),Nu.setGlobalTracerProvider(a)}if(i.length>0){let a=new ju({readers:i,resource:t});Mu.setGlobalMeterProvider(a)}if(s.length>0){let a=new Gu({resource:t,processors:s});Fu.setGlobalLoggerProvider(a)}}function Hu(){return $u({detectors:[]})}function Ku(){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 Yu(n=Ku()){let{enableTracing:e,enableMetrics:t,enableLogging:o}=n;return{spanProcessors:e?[new zu(new Uu)]:[],metricReaders:t?[new Vu({exporter:new Du})]:[],logRecordProcessors:o?[new qu(new Bu)]:[]}}import{Client as Ju}from"@modelcontextprotocol/sdk/client/index.js";import{StdioClientTransport as Xu}from"@modelcontextprotocol/sdk/client/stdio.js";import{StreamableHTTPClientTransport as Qu}from"@modelcontextprotocol/sdk/client/streamableHttp.js";var kn=class{constructor(e){this.connectionParams=e}async createSession(){var t;let e=new Ju({name:"MCPClient",version:"1.0.0"});switch(this.connectionParams.type){case"StdioConnectionParams":await e.connect(new Xu(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 Qu(new URL(this.connectionParams.url),o));break}default:{let o=this.connectionParams;break}}return e}};import{Type as re}from"@google/genai";import{z as ct}from"zod";var pR=ct.object({type:ct.literal("object"),properties:ct.record(ct.string(),ct.unknown()).optional(),required:ct.string().array().optional()});function Zu(n){if(!n)return re.TYPE_UNSPECIFIED;switch(n.toLowerCase()){case"text":case"string":return re.STRING;case"number":return re.NUMBER;case"boolean":return re.BOOLEAN;case"integer":return re.INTEGER;case"array":return re.ARRAY;case"object":return re.OBJECT;case"null":return re.NULL;default:return re.TYPE_UNSPECIFIED}}var ra=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 Er(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=>ra(l)!=="null"),r=o.some(l=>ra(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=Zu(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===re.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===re.ARRAY&&t.items&&(a.items=e(t.items));return a}return e(n)}var Pn=class extends R{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:Er(this.mcpTool.inputSchema),response:Er(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,void 0,{signal:e.toolContext.abortSignal})}};var ia=class extends Se{constructor(e,t=[],o){super(t,o),this.mcpSessionManager=new kn(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 Pn(r,this.mcpSessionManager)})}async close(){}};export{_t as A2AAgentExecutor,nl as AGENT_CARD_PATH,zo as ActiveStreamingTool,fn as Agent,ur as AgentTool,on as AgentTransferLlmRequestProcessor,Je as ApigeeLlm,Ko as AuthCredentialTypes,Ke as AuthHandler,Yo as AuthProviderRegistry,$ as BaseAgent,Me as BaseCodeExecutor,rr as BaseExampleProvider,ye as BaseLlm,F as BaseLlmRequestProcessor,so as BaseLlmResponseProcessor,ce as BasePlugin,De as BaseSessionService,R as BaseTool,Se as BaseToolset,Rt as BuiltInCodeExecutor,cn as CONTENT_REQUEST_PROCESSOR,Te as CodeExecutionLanguage,an as ContentRequestProcessor,N as Context,Eo as ContextCompactionTrigger,Qe as ContextCompactorRequestProcessor,z as CredentialExchangeError,Zo as CredentialRefresherRegistry,qt as DatabaseSessionService,Jl as EXIT_LOOP,Bs as EventType,xn as ExitLoopTool,di as FeatureName,Za as FeatureStage,Lt as FileArtifactService,fo as FileContentEncoding,me as FunctionTool,Xl as GOOGLE_SEARCH,Mt as GcsArtifactService,xe as Gemini,Yt as GoogleLLMVariant,Tn as GoogleSearchTool,qe as InMemoryArtifactService,Jo as InMemoryCredentialService,Ge as InMemoryMemoryService,An as InMemoryPolicyEngine,cr as InMemoryRunner,te as InMemorySessionService,Y as InvocationContext,Le as LLMRegistry,ru as LOAD_ARTIFACTS,iu as LOAD_MEMORY,je as ListSkillsTool,Wo as LiveRequestQueue,fn as LlmAgent,er as LlmSummarizer,Sn as LoadArtifactsTool,Rn as LoadMemoryTool,Ve as LoadSkillResourceTool,ze as LoadSkillTool,Dr as LogLevel,ir as LoggingPlugin,dr as LongRunningFunctionTool,bo as LoopAgent,kn as MCPSessionManager,Pn as MCPTool,ia as MCPToolset,vt as OAuth2CredentialExchanger,Qo as OAuth2DiscoveryManager,Un as OAuthGrantType,su as PRELOAD_MEMORY,Po as ParallelAgent,Pt as PluginManager,Gs as PolicyOutcome,wn as PreloadMemoryTool,qs as REQUEST_CONFIRMATION_FUNCTION_CALL_NAME,b as ReadonlyContext,Do as RemoteA2AAgent,Nt as RoutedAgent,Bt as RoutedLlm,We as RunSkillInlineScriptTool,He as RunSkillScriptTool,ge as Runner,ar as SecurityPlugin,Oo as SequentialAgent,Xo as SessionStateCredentialService,Dt as SkillToolset,T as State,un as StreamingMode,tr as TokenBasedContextCompactor,Pe as ToolConfirmation,nr as TruncatingContextCompactor,Vo as UnsafeLocalCodeExecutor,x as createEvent,V as createEventActions,Re as createSession,Ka as functionsExportedForTestingOnly,nn as geminiInitParams,Fo as getA2AAgentCard,Pl as getArtifactServiceFromUri,Kl as getAskUserConfirmationFunctionCalls,eo as getFeatureConfig,P as getFunctionCalls,K as getFunctionResponses,US as getGcpExporters,$S as getGcpResource,Dn as getLogger,Cu as getSessionServiceFromUri,Ir as hasTrailingCodeExecutionResult,Yl as isAgentTool,Ra as isBaseAgent,zl as isBaseExampleProvider,Yn as isBaseLlm,Tt as isBaseTool,No as isBaseToolset,X as isCompactedEvent,mi as isFeatureEnabled,Ce as isFinalResponse,uc as isFunctionTool,St as isGemini2OrAbove,y as isLlmAgent,Ze as isLoopAgent,et as isParallelAgent,Bl as isRoutedAgent,$o as isRunner,tt as isSequentialAgent,Su as loadAllSkillsInDir,na as loadSkillFromDir,nR as maybeSetOtelProviders,he as mergeStates,Xd as overrideFeatureEnabled,Jd as registerFeature,ya as setLogLevel,Ea as setLogger,pt as stringifyContent,vl as toA2a,Vl as toStructuredEvents,qo as trimTempDeltaState,Tu as validateSkillDir,mt as version,Qd as withTemporaryFeatureOverride,Xe as zodObjectToSchema};
|
|
127
|
-
/**
|
|
128
|
-
* @license
|
|
129
|
-
* Copyright 2026 Google LLC
|
|
130
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
131
|
-
*/
|
|
132
3
|
/**
|
|
133
4
|
* @license
|
|
134
5
|
* Copyright 2025 Google LLC
|
|
135
6
|
* SPDX-License-Identifier: Apache-2.0
|
|
136
7
|
*/
|
|
137
|
-
|
|
8
|
+
import { AGENT_CARD_PATH, RemoteA2AAgent } from "./a2a/a2a_remote_agent.js";
|
|
9
|
+
import { getA2AAgentCard } from "./a2a/agent_card.js";
|
|
10
|
+
import { A2AAgentExecutor } from "./a2a/agent_executor.js";
|
|
11
|
+
import { toA2a } from "./a2a/agent_to_a2a.js";
|
|
12
|
+
import { InvocationContext } from "./agents/invocation_context.js";
|
|
13
|
+
import { FileArtifactService } from "./artifacts/file_artifact_service.js";
|
|
14
|
+
import { GcsArtifactService } from "./artifacts/gcs_artifact_service.js";
|
|
15
|
+
import { getArtifactServiceFromUri } from "./artifacts/registry.js";
|
|
16
|
+
import {
|
|
17
|
+
AgentEngineSandboxCodeExecutor
|
|
18
|
+
} from "./code_executors/agent_engine_sandbox_code_executor.js";
|
|
19
|
+
import { CodeExecutionLanguage } from "./code_executors/code_execution_utils.js";
|
|
20
|
+
import {
|
|
21
|
+
UnsafeLocalCodeExecutor
|
|
22
|
+
} from "./code_executors/unsafe_local_code_executor.js";
|
|
23
|
+
export * from "./common.js";
|
|
24
|
+
import { DatabaseSessionService } from "./sessions/database_session_service.js";
|
|
25
|
+
import { getSessionServiceFromUri } from "./sessions/registry.js";
|
|
26
|
+
import { VertexAiSessionService } from "./sessions/vertex_ai_session_service.js";
|
|
27
|
+
import {
|
|
28
|
+
loadAllSkillsInDir,
|
|
29
|
+
loadSkillFromDir,
|
|
30
|
+
validateSkillDir
|
|
31
|
+
} from "./skills/loader.js";
|
|
32
|
+
import { RunSkillInlineScriptTool } from "./tools/skill/run_skill_inline_script_tool.js";
|
|
33
|
+
import { RunSkillScriptTool } from "./tools/skill/run_skill_script_tool.js";
|
|
34
|
+
export * from "./integrations/agent_registry/agent_registry.js";
|
|
35
|
+
export * from "./telemetry/google_cloud.js";
|
|
36
|
+
export * from "./telemetry/setup.js";
|
|
37
|
+
export * from "./tools/mcp/mcp_session_manager.js";
|
|
38
|
+
export * from "./tools/mcp/mcp_tool.js";
|
|
39
|
+
export * from "./tools/mcp/mcp_toolset.js";
|
|
40
|
+
export {
|
|
41
|
+
A2AAgentExecutor,
|
|
42
|
+
AGENT_CARD_PATH,
|
|
43
|
+
AgentEngineSandboxCodeExecutor,
|
|
44
|
+
CodeExecutionLanguage,
|
|
45
|
+
DatabaseSessionService,
|
|
46
|
+
FileArtifactService,
|
|
47
|
+
GcsArtifactService,
|
|
48
|
+
InvocationContext,
|
|
49
|
+
RemoteA2AAgent,
|
|
50
|
+
RunSkillInlineScriptTool,
|
|
51
|
+
RunSkillScriptTool,
|
|
52
|
+
UnsafeLocalCodeExecutor,
|
|
53
|
+
VertexAiSessionService,
|
|
54
|
+
getA2AAgentCard,
|
|
55
|
+
getArtifactServiceFromUri,
|
|
56
|
+
getSessionServiceFromUri,
|
|
57
|
+
loadAllSkillsInDir,
|
|
58
|
+
loadSkillFromDir,
|
|
59
|
+
toA2a,
|
|
60
|
+
validateSkillDir
|
|
61
|
+
};
|