@paean-ai/adk 0.2.13 → 0.2.15
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/index.js +11 -11
- package/dist/cjs/index.js.map +3 -3
- package/dist/esm/index.js +11 -11
- package/dist/esm/index.js.map +3 -3
- package/dist/types/agents/llm_agent.d.ts +4 -0
- package/dist/web/index.js +1 -1
- package/dist/web/index.js.map +3 -3
- package/package.json +3 -3
- package/dist/cjs/agents/active_streaming_tool.js +0 -44
- package/dist/cjs/agents/base_agent.js +0 -245
- package/dist/cjs/agents/base_llm_processor.js +0 -44
- package/dist/cjs/agents/callback_context.js +0 -98
- package/dist/cjs/agents/content_processor_utils.js +0 -346
- package/dist/cjs/agents/functions.js +0 -385
- package/dist/cjs/agents/instructions.js +0 -110
- package/dist/cjs/agents/invocation_context.js +0 -107
- package/dist/cjs/agents/live_request_queue.js +0 -136
- package/dist/cjs/agents/llm_agent.js +0 -1212
- package/dist/cjs/agents/loop_agent.js +0 -68
- package/dist/cjs/agents/parallel_agent.js +0 -78
- package/dist/cjs/agents/readonly_context.js +0 -68
- package/dist/cjs/agents/run_config.js +0 -70
- package/dist/cjs/agents/sequential_agent.js +0 -84
- package/dist/cjs/agents/transcription_entry.js +0 -27
- package/dist/cjs/artifacts/base_artifact_service.js +0 -27
- package/dist/cjs/artifacts/gcs_artifact_service.js +0 -140
- package/dist/cjs/artifacts/in_memory_artifact_service.js +0 -119
- package/dist/cjs/auth/auth_credential.js +0 -46
- package/dist/cjs/auth/auth_handler.js +0 -92
- package/dist/cjs/auth/auth_schemes.js +0 -62
- package/dist/cjs/auth/auth_tool.js +0 -27
- package/dist/cjs/auth/credential_service/base_credential_service.js +0 -27
- package/dist/cjs/auth/credential_service/in_memory_credential_service.js +0 -63
- package/dist/cjs/auth/exchanger/base_credential_exchanger.js +0 -40
- package/dist/cjs/auth/exchanger/credential_exchanger_registry.js +0 -59
- package/dist/cjs/code_executors/base_code_executor.js +0 -76
- package/dist/cjs/code_executors/built_in_code_executor.js +0 -58
- package/dist/cjs/code_executors/code_execution_utils.js +0 -142
- package/dist/cjs/code_executors/code_executor_context.js +0 -198
- package/dist/cjs/common.js +0 -181
- package/dist/cjs/events/event.js +0 -119
- package/dist/cjs/events/event_actions.js +0 -83
- package/dist/cjs/examples/base_example_provider.js +0 -40
- package/dist/cjs/examples/example.js +0 -27
- package/dist/cjs/examples/example_util.js +0 -107
- package/dist/cjs/index_web.js +0 -33
- package/dist/cjs/memory/base_memory_service.js +0 -27
- package/dist/cjs/memory/in_memory_memory_service.js +0 -97
- package/dist/cjs/memory/memory_entry.js +0 -27
- package/dist/cjs/models/base_llm.js +0 -95
- package/dist/cjs/models/base_llm_connection.js +0 -27
- package/dist/cjs/models/gemini_llm_connection.js +0 -132
- package/dist/cjs/models/google_llm.js +0 -559
- package/dist/cjs/models/llm_request.js +0 -82
- package/dist/cjs/models/llm_response.js +0 -71
- package/dist/cjs/models/registry.js +0 -121
- package/dist/cjs/plugins/base_plugin.js +0 -236
- package/dist/cjs/plugins/logging_plugin.js +0 -222
- package/dist/cjs/plugins/plugin_manager.js +0 -239
- package/dist/cjs/plugins/security_plugin.js +0 -153
- package/dist/cjs/runner/in_memory_runner.js +0 -58
- package/dist/cjs/runner/runner.js +0 -277
- package/dist/cjs/sessions/base_session_service.js +0 -71
- package/dist/cjs/sessions/in_memory_session_service.js +0 -184
- package/dist/cjs/sessions/session.js +0 -48
- package/dist/cjs/sessions/state.js +0 -101
- package/dist/cjs/telemetry/google_cloud.js +0 -85
- package/dist/cjs/telemetry/setup.js +0 -97
- package/dist/cjs/telemetry/tracing.js +0 -231
- package/dist/cjs/tools/agent_tool.js +0 -134
- package/dist/cjs/tools/base_tool.js +0 -107
- package/dist/cjs/tools/base_toolset.js +0 -76
- package/dist/cjs/tools/forwarding_artifact_service.js +0 -71
- package/dist/cjs/tools/function_tool.js +0 -101
- package/dist/cjs/tools/google_search_tool.js +0 -76
- package/dist/cjs/tools/long_running_tool.js +0 -63
- package/dist/cjs/tools/mcp/mcp_session_manager.js +0 -65
- package/dist/cjs/tools/mcp/mcp_tool.js +0 -65
- package/dist/cjs/tools/mcp/mcp_toolset.js +0 -61
- package/dist/cjs/tools/tool_confirmation.js +0 -49
- package/dist/cjs/tools/tool_context.js +0 -129
- package/dist/cjs/utils/client_labels.js +0 -56
- package/dist/cjs/utils/deep_clone.js +0 -44
- package/dist/cjs/utils/env_aware_utils.js +0 -83
- package/dist/cjs/utils/gemini_schema_util.js +0 -88
- package/dist/cjs/utils/logger.js +0 -121
- package/dist/cjs/utils/model_name.js +0 -76
- package/dist/cjs/utils/simple_zod_to_json.js +0 -191
- package/dist/cjs/utils/variant_utils.js +0 -55
- package/dist/cjs/version.js +0 -39
- package/dist/esm/agents/active_streaming_tool.js +0 -14
- package/dist/esm/agents/base_agent.js +0 -214
- package/dist/esm/agents/base_llm_processor.js +0 -13
- package/dist/esm/agents/callback_context.js +0 -68
- package/dist/esm/agents/content_processor_utils.js +0 -315
- package/dist/esm/agents/functions.js +0 -344
- package/dist/esm/agents/instructions.js +0 -80
- package/dist/esm/agents/invocation_context.js +0 -76
- package/dist/esm/agents/live_request_queue.js +0 -106
- package/dist/esm/agents/llm_agent.js +0 -1180
- package/dist/esm/agents/loop_agent.js +0 -38
- package/dist/esm/agents/parallel_agent.js +0 -48
- package/dist/esm/agents/readonly_context.js +0 -38
- package/dist/esm/agents/run_config.js +0 -39
- package/dist/esm/agents/sequential_agent.js +0 -54
- package/dist/esm/agents/transcription_entry.js +0 -5
- package/dist/esm/artifacts/base_artifact_service.js +0 -5
- package/dist/esm/artifacts/gcs_artifact_service.js +0 -110
- package/dist/esm/artifacts/in_memory_artifact_service.js +0 -89
- package/dist/esm/auth/auth_credential.js +0 -16
- package/dist/esm/auth/auth_handler.js +0 -62
- package/dist/esm/auth/auth_schemes.js +0 -31
- package/dist/esm/auth/auth_tool.js +0 -5
- package/dist/esm/auth/credential_service/base_credential_service.js +0 -5
- package/dist/esm/auth/credential_service/in_memory_credential_service.js +0 -33
- package/dist/esm/auth/exchanger/base_credential_exchanger.js +0 -10
- package/dist/esm/auth/exchanger/credential_exchanger_registry.js +0 -29
- package/dist/esm/code_executors/base_code_executor.js +0 -46
- package/dist/esm/code_executors/built_in_code_executor.js +0 -28
- package/dist/esm/code_executors/code_execution_utils.js +0 -108
- package/dist/esm/code_executors/code_executor_context.js +0 -168
- package/dist/esm/common.js +0 -98
- package/dist/esm/events/event.js +0 -83
- package/dist/esm/events/event_actions.js +0 -52
- package/dist/esm/examples/base_example_provider.js +0 -10
- package/dist/esm/examples/example.js +0 -5
- package/dist/esm/examples/example_util.js +0 -76
- package/dist/esm/index_web.js +0 -6
- package/dist/esm/memory/base_memory_service.js +0 -5
- package/dist/esm/memory/in_memory_memory_service.js +0 -67
- package/dist/esm/memory/memory_entry.js +0 -5
- package/dist/esm/models/base_llm.js +0 -64
- package/dist/esm/models/base_llm_connection.js +0 -5
- package/dist/esm/models/gemini_llm_connection.js +0 -102
- package/dist/esm/models/google_llm.js +0 -533
- package/dist/esm/models/llm_request.js +0 -50
- package/dist/esm/models/llm_response.js +0 -41
- package/dist/esm/models/registry.js +0 -91
- package/dist/esm/plugins/base_plugin.js +0 -206
- package/dist/esm/plugins/logging_plugin.js +0 -192
- package/dist/esm/plugins/plugin_manager.js +0 -209
- package/dist/esm/plugins/security_plugin.js +0 -119
- package/dist/esm/runner/in_memory_runner.js +0 -28
- package/dist/esm/runner/runner.js +0 -247
- package/dist/esm/sessions/base_session_service.js +0 -41
- package/dist/esm/sessions/in_memory_session_service.js +0 -154
- package/dist/esm/sessions/session.js +0 -18
- package/dist/esm/sessions/state.js +0 -71
- package/dist/esm/telemetry/google_cloud.js +0 -54
- package/dist/esm/telemetry/setup.js +0 -67
- package/dist/esm/telemetry/tracing.js +0 -195
- package/dist/esm/tools/agent_tool.js +0 -104
- package/dist/esm/tools/base_tool.js +0 -77
- package/dist/esm/tools/base_toolset.js +0 -46
- package/dist/esm/tools/forwarding_artifact_service.js +0 -41
- package/dist/esm/tools/function_tool.js +0 -71
- package/dist/esm/tools/google_search_tool.js +0 -46
- package/dist/esm/tools/long_running_tool.js +0 -33
- package/dist/esm/tools/mcp/mcp_session_manager.js +0 -35
- package/dist/esm/tools/mcp/mcp_tool.js +0 -35
- package/dist/esm/tools/mcp/mcp_toolset.js +0 -31
- package/dist/esm/tools/tool_confirmation.js +0 -19
- package/dist/esm/tools/tool_context.js +0 -99
- package/dist/esm/utils/client_labels.js +0 -26
- package/dist/esm/utils/deep_clone.js +0 -14
- package/dist/esm/utils/env_aware_utils.js +0 -49
- package/dist/esm/utils/gemini_schema_util.js +0 -58
- package/dist/esm/utils/logger.js +0 -89
- package/dist/esm/utils/model_name.js +0 -41
- package/dist/esm/utils/simple_zod_to_json.js +0 -160
- package/dist/esm/utils/variant_utils.js +0 -24
- package/dist/esm/version.js +0 -9
- package/dist/web/agents/active_streaming_tool.js +0 -14
- package/dist/web/agents/base_agent.js +0 -265
- package/dist/web/agents/base_llm_processor.js +0 -13
- package/dist/web/agents/callback_context.js +0 -68
- package/dist/web/agents/content_processor_utils.js +0 -315
- package/dist/web/agents/functions.js +0 -344
- package/dist/web/agents/instructions.js +0 -80
- package/dist/web/agents/invocation_context.js +0 -76
- package/dist/web/agents/live_request_queue.js +0 -124
- package/dist/web/agents/llm_agent.js +0 -1310
- package/dist/web/agents/loop_agent.js +0 -71
- package/dist/web/agents/parallel_agent.js +0 -83
- package/dist/web/agents/readonly_context.js +0 -38
- package/dist/web/agents/run_config.js +0 -54
- package/dist/web/agents/sequential_agent.js +0 -99
- package/dist/web/agents/transcription_entry.js +0 -5
- package/dist/web/artifacts/base_artifact_service.js +0 -5
- package/dist/web/artifacts/gcs_artifact_service.js +0 -126
- package/dist/web/artifacts/in_memory_artifact_service.js +0 -89
- package/dist/web/auth/auth_credential.js +0 -16
- package/dist/web/auth/auth_handler.js +0 -62
- package/dist/web/auth/auth_schemes.js +0 -31
- package/dist/web/auth/auth_tool.js +0 -5
- package/dist/web/auth/credential_service/base_credential_service.js +0 -5
- package/dist/web/auth/credential_service/in_memory_credential_service.js +0 -33
- package/dist/web/auth/exchanger/base_credential_exchanger.js +0 -10
- package/dist/web/auth/exchanger/credential_exchanger_registry.js +0 -29
- package/dist/web/code_executors/base_code_executor.js +0 -46
- package/dist/web/code_executors/built_in_code_executor.js +0 -28
- package/dist/web/code_executors/code_execution_utils.js +0 -105
- package/dist/web/code_executors/code_executor_context.js +0 -168
- package/dist/web/common.js +0 -98
- package/dist/web/events/event.js +0 -101
- package/dist/web/events/event_actions.js +0 -67
- package/dist/web/examples/base_example_provider.js +0 -10
- package/dist/web/examples/example.js +0 -5
- package/dist/web/examples/example_util.js +0 -75
- package/dist/web/index_web.js +0 -6
- package/dist/web/memory/base_memory_service.js +0 -5
- package/dist/web/memory/in_memory_memory_service.js +0 -67
- package/dist/web/memory/memory_entry.js +0 -5
- package/dist/web/models/base_llm.js +0 -64
- package/dist/web/models/base_llm_connection.js +0 -5
- package/dist/web/models/gemini_llm_connection.js +0 -120
- package/dist/web/models/google_llm.js +0 -574
- package/dist/web/models/llm_request.js +0 -50
- package/dist/web/models/llm_response.js +0 -41
- package/dist/web/models/registry.js +0 -91
- package/dist/web/plugins/base_plugin.js +0 -206
- package/dist/web/plugins/logging_plugin.js +0 -192
- package/dist/web/plugins/plugin_manager.js +0 -209
- package/dist/web/plugins/security_plugin.js +0 -119
- package/dist/web/runner/in_memory_runner.js +0 -28
- package/dist/web/runner/runner.js +0 -278
- package/dist/web/sessions/base_session_service.js +0 -41
- package/dist/web/sessions/in_memory_session_service.js +0 -154
- package/dist/web/sessions/session.js +0 -18
- package/dist/web/sessions/state.js +0 -87
- package/dist/web/telemetry/google_cloud.js +0 -54
- package/dist/web/telemetry/setup.js +0 -67
- package/dist/web/telemetry/tracing.js +0 -210
- package/dist/web/tools/agent_tool.js +0 -118
- package/dist/web/tools/base_tool.js +0 -77
- package/dist/web/tools/base_toolset.js +0 -46
- package/dist/web/tools/forwarding_artifact_service.js +0 -41
- package/dist/web/tools/function_tool.js +0 -71
- package/dist/web/tools/google_search_tool.js +0 -46
- package/dist/web/tools/long_running_tool.js +0 -50
- package/dist/web/tools/mcp/mcp_session_manager.js +0 -35
- package/dist/web/tools/mcp/mcp_tool.js +0 -35
- package/dist/web/tools/mcp/mcp_toolset.js +0 -31
- package/dist/web/tools/tool_confirmation.js +0 -19
- package/dist/web/tools/tool_context.js +0 -99
- package/dist/web/utils/client_labels.js +0 -26
- package/dist/web/utils/deep_clone.js +0 -14
- package/dist/web/utils/env_aware_utils.js +0 -49
- package/dist/web/utils/gemini_schema_util.js +0 -58
- package/dist/web/utils/logger.js +0 -89
- package/dist/web/utils/model_name.js +0 -41
- package/dist/web/utils/simple_zod_to_json.js +0 -174
- package/dist/web/utils/variant_utils.js +0 -24
- package/dist/web/version.js +0 -9
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { BaseAgent } from "./base_agent.js";
|
|
7
|
-
class LoopAgent extends BaseAgent {
|
|
8
|
-
constructor(config) {
|
|
9
|
-
var _a;
|
|
10
|
-
super(config);
|
|
11
|
-
this.maxIterations = (_a = config.maxIterations) != null ? _a : Number.MAX_SAFE_INTEGER;
|
|
12
|
-
}
|
|
13
|
-
async *runAsyncImpl(context) {
|
|
14
|
-
let iteration = 0;
|
|
15
|
-
while (iteration < this.maxIterations) {
|
|
16
|
-
for (const subAgent of this.subAgents) {
|
|
17
|
-
let shouldExit = false;
|
|
18
|
-
for await (const event of subAgent.runAsync(context)) {
|
|
19
|
-
yield event;
|
|
20
|
-
if (event.actions.escalate) {
|
|
21
|
-
shouldExit = true;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
if (shouldExit) {
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
iteration++;
|
|
29
|
-
}
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
async *runLiveImpl(context) {
|
|
33
|
-
throw new Error("This is not supported yet for LoopAgent.");
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
export {
|
|
37
|
-
LoopAgent
|
|
38
|
-
};
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { BaseAgent } from "./base_agent.js";
|
|
7
|
-
import { InvocationContext } from "./invocation_context.js";
|
|
8
|
-
class ParallelAgent extends BaseAgent {
|
|
9
|
-
async *runAsyncImpl(context) {
|
|
10
|
-
const agentRuns = this.subAgents.map(
|
|
11
|
-
(subAgent) => subAgent.runAsync(
|
|
12
|
-
createBranchCtxForSubAgent(this, subAgent, context)
|
|
13
|
-
)
|
|
14
|
-
);
|
|
15
|
-
for await (const event of mergeAgentRuns(agentRuns)) {
|
|
16
|
-
yield event;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
async *runLiveImpl(context) {
|
|
20
|
-
throw new Error("This is not supported yet for ParallelAgent.");
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
function createBranchCtxForSubAgent(agent, subAgent, originalContext) {
|
|
24
|
-
const invocationContext = new InvocationContext(originalContext);
|
|
25
|
-
const branchSuffix = `${agent.name}.${subAgent.name}`;
|
|
26
|
-
invocationContext.branch = invocationContext.branch ? `${invocationContext.branch}.${branchSuffix}` : branchSuffix;
|
|
27
|
-
return invocationContext;
|
|
28
|
-
}
|
|
29
|
-
async function* mergeAgentRuns(agentRuns) {
|
|
30
|
-
const pendingPromises = /* @__PURE__ */ new Map();
|
|
31
|
-
for (const [index, generator] of agentRuns.entries()) {
|
|
32
|
-
const promise = generator.next().then((result) => ({ result, index }));
|
|
33
|
-
pendingPromises.set(index, promise);
|
|
34
|
-
}
|
|
35
|
-
while (pendingPromises.size > 0) {
|
|
36
|
-
const { result, index } = await Promise.race(pendingPromises.values());
|
|
37
|
-
if (result.done) {
|
|
38
|
-
pendingPromises.delete(index);
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
yield result.value;
|
|
42
|
-
const nextPromise = agentRuns[index].next().then((result2) => ({ result: result2, index }));
|
|
43
|
-
pendingPromises.set(index, nextPromise);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
export {
|
|
47
|
-
ParallelAgent
|
|
48
|
-
};
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { State } from "../sessions/state.js";
|
|
7
|
-
class ReadonlyContext {
|
|
8
|
-
constructor(invocationContext) {
|
|
9
|
-
this.invocationContext = invocationContext;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* The user content that started this invocation.
|
|
13
|
-
*/
|
|
14
|
-
get userContent() {
|
|
15
|
-
return this.invocationContext.userContent;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* The current invocation id.
|
|
19
|
-
*/
|
|
20
|
-
get invocationId() {
|
|
21
|
-
return this.invocationContext.invocationId;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* The current agent name.
|
|
25
|
-
*/
|
|
26
|
-
get agentName() {
|
|
27
|
-
return this.invocationContext.agent.name;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* The state of the current session.
|
|
31
|
-
*/
|
|
32
|
-
get state() {
|
|
33
|
-
return new State(this.invocationContext.session.state, {});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
export {
|
|
37
|
-
ReadonlyContext
|
|
38
|
-
};
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { logger } from "../utils/logger.js";
|
|
7
|
-
var StreamingMode = /* @__PURE__ */ ((StreamingMode2) => {
|
|
8
|
-
StreamingMode2["NONE"] = "none";
|
|
9
|
-
StreamingMode2["SSE"] = "sse";
|
|
10
|
-
StreamingMode2["BIDI"] = "bidi";
|
|
11
|
-
return StreamingMode2;
|
|
12
|
-
})(StreamingMode || {});
|
|
13
|
-
function createRunConfig(params = {}) {
|
|
14
|
-
return {
|
|
15
|
-
saveInputBlobsAsArtifacts: false,
|
|
16
|
-
supportCfc: false,
|
|
17
|
-
enableAffectiveDialog: false,
|
|
18
|
-
streamingMode: "none" /* NONE */,
|
|
19
|
-
maxLlmCalls: validateMaxLlmCalls(params.maxLlmCalls || 500),
|
|
20
|
-
...params
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
function validateMaxLlmCalls(value) {
|
|
24
|
-
if (value > Number.MAX_SAFE_INTEGER) {
|
|
25
|
-
throw new Error(
|
|
26
|
-
`maxLlmCalls should be less than ${Number.MAX_SAFE_INTEGER}.`
|
|
27
|
-
);
|
|
28
|
-
}
|
|
29
|
-
if (value <= 0) {
|
|
30
|
-
logger.warn(
|
|
31
|
-
"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."
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
return value;
|
|
35
|
-
}
|
|
36
|
-
export {
|
|
37
|
-
StreamingMode,
|
|
38
|
-
createRunConfig
|
|
39
|
-
};
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { FunctionTool } from "../tools/function_tool.js";
|
|
7
|
-
import { BaseAgent } from "./base_agent.js";
|
|
8
|
-
import { LlmAgent } from "./llm_agent.js";
|
|
9
|
-
import { ReadonlyContext } from "./readonly_context.js";
|
|
10
|
-
const TASK_COMPLETED_TOOL_NAME = "task_completed";
|
|
11
|
-
class SequentialAgent extends BaseAgent {
|
|
12
|
-
async *runAsyncImpl(context) {
|
|
13
|
-
for (const subAgent of this.subAgents) {
|
|
14
|
-
for await (const event of subAgent.runAsync(context)) {
|
|
15
|
-
yield event;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Implementation for live SequentialAgent.
|
|
21
|
-
*
|
|
22
|
-
* Compared to the non-live case, live agents process a continuous stream of
|
|
23
|
-
* audio or video, so there is no way to tell if it's finished and should pass
|
|
24
|
-
* to the next agent or not. So we introduce a task_completed() function so
|
|
25
|
-
* the model can call this function to signal that it's finished the task and
|
|
26
|
-
* we can move on to the next agent.
|
|
27
|
-
*
|
|
28
|
-
* @param context: The invocation context of the agent.
|
|
29
|
-
*/
|
|
30
|
-
async *runLiveImpl(context) {
|
|
31
|
-
for (const subAgent of this.subAgents) {
|
|
32
|
-
if (subAgent instanceof LlmAgent) {
|
|
33
|
-
const agentTools = await subAgent.canonicalTools(new ReadonlyContext(context));
|
|
34
|
-
const taskCompletedToolAlreadyAdded = agentTools.some((tool) => tool.name === TASK_COMPLETED_TOOL_NAME);
|
|
35
|
-
if (!taskCompletedToolAlreadyAdded) {
|
|
36
|
-
subAgent.tools.push(new FunctionTool({
|
|
37
|
-
name: TASK_COMPLETED_TOOL_NAME,
|
|
38
|
-
description: `Signals that the model has successfully completed the user's question or task.`,
|
|
39
|
-
execute: () => "Task completion signaled."
|
|
40
|
-
}));
|
|
41
|
-
subAgent.instruction += `If you finished the user's request according to its description, call the ${TASK_COMPLETED_TOOL_NAME} function to exit so the next agents can take over. When calling this function, do not generate any text other than the function call.`;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
for (const subAgent of this.subAgents) {
|
|
46
|
-
for await (const event of subAgent.runLive(context)) {
|
|
47
|
-
yield event;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
export {
|
|
53
|
-
SequentialAgent
|
|
54
|
-
};
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { Storage } from "@google-cloud/storage";
|
|
7
|
-
import { createPartFromBase64, createPartFromText } from "@google/genai";
|
|
8
|
-
class GcsArtifactService {
|
|
9
|
-
constructor(bucket) {
|
|
10
|
-
this.bucket = new Storage().bucket(bucket);
|
|
11
|
-
}
|
|
12
|
-
async saveArtifact(request) {
|
|
13
|
-
const versions = await this.listVersions(request);
|
|
14
|
-
const version = versions.length > 0 ? Math.max(...versions) + 1 : 0;
|
|
15
|
-
const file = this.bucket.file(getFileName({
|
|
16
|
-
...request,
|
|
17
|
-
version
|
|
18
|
-
}));
|
|
19
|
-
if (request.artifact.inlineData) {
|
|
20
|
-
await file.save(JSON.stringify(request.artifact.inlineData.data), {
|
|
21
|
-
contentType: request.artifact.inlineData.mimeType
|
|
22
|
-
});
|
|
23
|
-
return version;
|
|
24
|
-
}
|
|
25
|
-
if (request.artifact.text) {
|
|
26
|
-
await file.save(request.artifact.text, {
|
|
27
|
-
contentType: "text/plain"
|
|
28
|
-
});
|
|
29
|
-
return version;
|
|
30
|
-
}
|
|
31
|
-
throw new Error("Artifact must have either inlineData or text.");
|
|
32
|
-
}
|
|
33
|
-
async loadArtifact(request) {
|
|
34
|
-
let version = request.version;
|
|
35
|
-
if (version === void 0) {
|
|
36
|
-
const versions = await this.listVersions(request);
|
|
37
|
-
if (versions.length === 0) {
|
|
38
|
-
return void 0;
|
|
39
|
-
}
|
|
40
|
-
version = Math.max(...versions);
|
|
41
|
-
}
|
|
42
|
-
const file = this.bucket.file(getFileName({
|
|
43
|
-
...request,
|
|
44
|
-
version
|
|
45
|
-
}));
|
|
46
|
-
const [[metadata], [rawDataBuffer]] = await Promise.all([file.getMetadata(), file.download()]);
|
|
47
|
-
if (metadata.contentType === "text/plain") {
|
|
48
|
-
return createPartFromText(rawDataBuffer.toString("utf-8"));
|
|
49
|
-
}
|
|
50
|
-
return createPartFromBase64(
|
|
51
|
-
rawDataBuffer.toString("base64"),
|
|
52
|
-
metadata.contentType
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
async listArtifactKeys(request) {
|
|
56
|
-
const fileNames = [];
|
|
57
|
-
const sessionPrefix = `${request.appName}/${request.userId}/${request.sessionId}/`;
|
|
58
|
-
const usernamePrefix = `${request.appName}/${request.userId}/user/`;
|
|
59
|
-
const [
|
|
60
|
-
[sessionFiles],
|
|
61
|
-
[userSessionFiles]
|
|
62
|
-
] = await Promise.all([
|
|
63
|
-
this.bucket.getFiles({ prefix: sessionPrefix }),
|
|
64
|
-
this.bucket.getFiles({ prefix: usernamePrefix })
|
|
65
|
-
]);
|
|
66
|
-
for (const file of sessionFiles) {
|
|
67
|
-
fileNames.push(file.name.split("/").pop());
|
|
68
|
-
}
|
|
69
|
-
for (const file of userSessionFiles) {
|
|
70
|
-
fileNames.push(file.name.split("/").pop());
|
|
71
|
-
}
|
|
72
|
-
return fileNames.sort((a, b) => a.localeCompare(b));
|
|
73
|
-
}
|
|
74
|
-
async deleteArtifact(request) {
|
|
75
|
-
const versions = await this.listVersions(request);
|
|
76
|
-
await Promise.all(versions.map((version) => {
|
|
77
|
-
const file = this.bucket.file(getFileName({
|
|
78
|
-
...request,
|
|
79
|
-
version
|
|
80
|
-
}));
|
|
81
|
-
return file.delete();
|
|
82
|
-
}));
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
async listVersions(request) {
|
|
86
|
-
const prefix = getFileName(request);
|
|
87
|
-
const [files] = await this.bucket.getFiles({ prefix });
|
|
88
|
-
const versions = [];
|
|
89
|
-
for (const file of files) {
|
|
90
|
-
const version = file.name.split("/").pop();
|
|
91
|
-
versions.push(parseInt(version, 10));
|
|
92
|
-
}
|
|
93
|
-
return versions;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
function getFileName({
|
|
97
|
-
appName,
|
|
98
|
-
userId,
|
|
99
|
-
sessionId,
|
|
100
|
-
filename,
|
|
101
|
-
version
|
|
102
|
-
}) {
|
|
103
|
-
if (filename.startsWith("user:")) {
|
|
104
|
-
return `${appName}/${userId}/user/${filename}/${version}`;
|
|
105
|
-
}
|
|
106
|
-
return `${appName}/${userId}/${sessionId}/${filename}/${version}`;
|
|
107
|
-
}
|
|
108
|
-
export {
|
|
109
|
-
GcsArtifactService
|
|
110
|
-
};
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
class InMemoryArtifactService {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.artifacts = {};
|
|
9
|
-
}
|
|
10
|
-
saveArtifact({
|
|
11
|
-
appName,
|
|
12
|
-
userId,
|
|
13
|
-
sessionId,
|
|
14
|
-
filename,
|
|
15
|
-
artifact
|
|
16
|
-
}) {
|
|
17
|
-
const path = artifactPath(appName, userId, sessionId, filename);
|
|
18
|
-
if (!this.artifacts[path]) {
|
|
19
|
-
this.artifacts[path] = [];
|
|
20
|
-
}
|
|
21
|
-
const version = this.artifacts[path].length;
|
|
22
|
-
this.artifacts[path].push(artifact);
|
|
23
|
-
return Promise.resolve(version);
|
|
24
|
-
}
|
|
25
|
-
loadArtifact({
|
|
26
|
-
appName,
|
|
27
|
-
userId,
|
|
28
|
-
sessionId,
|
|
29
|
-
filename,
|
|
30
|
-
version
|
|
31
|
-
}) {
|
|
32
|
-
const path = artifactPath(appName, userId, sessionId, filename);
|
|
33
|
-
const versions = this.artifacts[path];
|
|
34
|
-
if (!versions) {
|
|
35
|
-
return Promise.resolve(void 0);
|
|
36
|
-
}
|
|
37
|
-
if (version === void 0) {
|
|
38
|
-
version = versions.length - 1;
|
|
39
|
-
}
|
|
40
|
-
return Promise.resolve(versions[version]);
|
|
41
|
-
}
|
|
42
|
-
listArtifactKeys({ appName, userId, sessionId }) {
|
|
43
|
-
const sessionPrefix = `${appName}/${userId}/${sessionId}/`;
|
|
44
|
-
const usernamespacePrefix = `${appName}/${userId}/user/`;
|
|
45
|
-
const filenames = [];
|
|
46
|
-
for (const path in this.artifacts) {
|
|
47
|
-
if (path.startsWith(sessionPrefix)) {
|
|
48
|
-
const filename = path.replace(sessionPrefix, "");
|
|
49
|
-
filenames.push(filename);
|
|
50
|
-
} else if (path.startsWith(usernamespacePrefix)) {
|
|
51
|
-
const filename = path.replace(usernamespacePrefix, "");
|
|
52
|
-
filenames.push(filename);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return Promise.resolve(filenames.sort());
|
|
56
|
-
}
|
|
57
|
-
deleteArtifact({ appName, userId, sessionId, filename }) {
|
|
58
|
-
const path = artifactPath(appName, userId, sessionId, filename);
|
|
59
|
-
if (!this.artifacts[path]) {
|
|
60
|
-
return Promise.resolve();
|
|
61
|
-
}
|
|
62
|
-
delete this.artifacts[path];
|
|
63
|
-
return Promise.resolve();
|
|
64
|
-
}
|
|
65
|
-
listVersions({ appName, userId, sessionId, filename }) {
|
|
66
|
-
const path = artifactPath(appName, userId, sessionId, filename);
|
|
67
|
-
const artifacts = this.artifacts[path];
|
|
68
|
-
if (!artifacts) {
|
|
69
|
-
return Promise.resolve([]);
|
|
70
|
-
}
|
|
71
|
-
let versions = [];
|
|
72
|
-
for (let i = 0; i < artifacts.length; i++) {
|
|
73
|
-
versions.push(i);
|
|
74
|
-
}
|
|
75
|
-
return Promise.resolve(versions);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
function artifactPath(appName, userId, sessionId, filename) {
|
|
79
|
-
if (fileHasUserNamespace(filename)) {
|
|
80
|
-
return `${appName}/${userId}/user/${filename}`;
|
|
81
|
-
}
|
|
82
|
-
return `${appName}/${userId}/${sessionId}/${filename}`;
|
|
83
|
-
}
|
|
84
|
-
function fileHasUserNamespace(filename) {
|
|
85
|
-
return filename.startsWith("user:");
|
|
86
|
-
}
|
|
87
|
-
export {
|
|
88
|
-
InMemoryArtifactService
|
|
89
|
-
};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
var AuthCredentialTypes = /* @__PURE__ */ ((AuthCredentialTypes2) => {
|
|
7
|
-
AuthCredentialTypes2["API_KEY"] = "apiKey";
|
|
8
|
-
AuthCredentialTypes2["HTTP"] = "http";
|
|
9
|
-
AuthCredentialTypes2["OAUTH2"] = "oauth2";
|
|
10
|
-
AuthCredentialTypes2["OPEN_ID_CONNECT"] = "openIdConnect";
|
|
11
|
-
AuthCredentialTypes2["SERVICE_ACCOUNT"] = "serviceAccount";
|
|
12
|
-
return AuthCredentialTypes2;
|
|
13
|
-
})(AuthCredentialTypes || {});
|
|
14
|
-
export {
|
|
15
|
-
AuthCredentialTypes
|
|
16
|
-
};
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
class AuthHandler {
|
|
7
|
-
constructor(authConfig) {
|
|
8
|
-
this.authConfig = authConfig;
|
|
9
|
-
}
|
|
10
|
-
getAuthResponse(state) {
|
|
11
|
-
const credentialKey = "temp:" + this.authConfig.credentialKey;
|
|
12
|
-
return state.get(credentialKey);
|
|
13
|
-
}
|
|
14
|
-
generateAuthRequest() {
|
|
15
|
-
var _a, _b;
|
|
16
|
-
const authSchemeType = this.authConfig.authScheme.type;
|
|
17
|
-
if (!["oauth2", "openIdConnect"].includes(authSchemeType)) {
|
|
18
|
-
return this.authConfig;
|
|
19
|
-
}
|
|
20
|
-
if ((_b = (_a = this.authConfig.exchangedAuthCredential) == null ? void 0 : _a.oauth2) == null ? void 0 : _b.authUri) {
|
|
21
|
-
return this.authConfig;
|
|
22
|
-
}
|
|
23
|
-
if (!this.authConfig.rawAuthCredential) {
|
|
24
|
-
throw new Error(`Auth Scheme ${authSchemeType} requires authCredential.`);
|
|
25
|
-
}
|
|
26
|
-
if (!this.authConfig.rawAuthCredential.oauth2) {
|
|
27
|
-
throw new Error(
|
|
28
|
-
`Auth Scheme ${authSchemeType} requires oauth2 in authCredential.`
|
|
29
|
-
);
|
|
30
|
-
}
|
|
31
|
-
if (this.authConfig.rawAuthCredential.oauth2.authUri) {
|
|
32
|
-
return {
|
|
33
|
-
credentialKey: this.authConfig.credentialKey,
|
|
34
|
-
authScheme: this.authConfig.authScheme,
|
|
35
|
-
rawAuthCredential: this.authConfig.rawAuthCredential,
|
|
36
|
-
exchangedAuthCredential: this.authConfig.rawAuthCredential
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
if (!this.authConfig.rawAuthCredential.oauth2.clientId || !this.authConfig.rawAuthCredential.oauth2.clientSecret) {
|
|
40
|
-
throw new Error(`Auth Scheme ${authSchemeType} requires both clientId and clientSecret in authCredential.oauth2.`);
|
|
41
|
-
}
|
|
42
|
-
return {
|
|
43
|
-
credentialKey: this.authConfig.credentialKey,
|
|
44
|
-
authScheme: this.authConfig.authScheme,
|
|
45
|
-
rawAuthCredential: this.authConfig.rawAuthCredential,
|
|
46
|
-
exchangedAuthCredential: this.generateAuthUri()
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Generates an response containing the auth uri for user to sign in.
|
|
51
|
-
*
|
|
52
|
-
* @return An AuthCredential object containing the auth URI and state.
|
|
53
|
-
* @throws Error: If the authorization endpoint is not configured in the
|
|
54
|
-
* auth scheme.
|
|
55
|
-
*/
|
|
56
|
-
generateAuthUri() {
|
|
57
|
-
return this.authConfig.rawAuthCredential;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
export {
|
|
61
|
-
AuthHandler
|
|
62
|
-
};
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
var OAuthGrantType = /* @__PURE__ */ ((OAuthGrantType2) => {
|
|
7
|
-
OAuthGrantType2["CLIENT_CREDENTIALS"] = "client_credentials";
|
|
8
|
-
OAuthGrantType2["AUTHORIZATION_CODE"] = "authorization_code";
|
|
9
|
-
OAuthGrantType2["IMPLICIT"] = "implicit";
|
|
10
|
-
OAuthGrantType2["PASSWORD"] = "password";
|
|
11
|
-
return OAuthGrantType2;
|
|
12
|
-
})(OAuthGrantType || {});
|
|
13
|
-
function getOAuthGrantTypeFromFlow(flow) {
|
|
14
|
-
if (flow.clientCredentials) {
|
|
15
|
-
return "client_credentials" /* CLIENT_CREDENTIALS */;
|
|
16
|
-
}
|
|
17
|
-
if (flow.authorizationCode) {
|
|
18
|
-
return "authorization_code" /* AUTHORIZATION_CODE */;
|
|
19
|
-
}
|
|
20
|
-
if (flow.implicit) {
|
|
21
|
-
return "implicit" /* IMPLICIT */;
|
|
22
|
-
}
|
|
23
|
-
if (flow.password) {
|
|
24
|
-
return "password" /* PASSWORD */;
|
|
25
|
-
}
|
|
26
|
-
return void 0;
|
|
27
|
-
}
|
|
28
|
-
export {
|
|
29
|
-
OAuthGrantType,
|
|
30
|
-
getOAuthGrantTypeFromFlow
|
|
31
|
-
};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
class InMemoryCredentialService {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.credentials = {};
|
|
9
|
-
}
|
|
10
|
-
loadCredential(authConfig, toolContext) {
|
|
11
|
-
const credentialBucket = this.getBucketForCurrentContext(toolContext);
|
|
12
|
-
return Promise.resolve(credentialBucket[authConfig.credentialKey]);
|
|
13
|
-
}
|
|
14
|
-
async saveCredential(authConfig, toolContext) {
|
|
15
|
-
const credentialBucket = this.getBucketForCurrentContext(toolContext);
|
|
16
|
-
if (authConfig.exchangedAuthCredential) {
|
|
17
|
-
credentialBucket[authConfig.credentialKey] = authConfig.exchangedAuthCredential;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
getBucketForCurrentContext(toolContext) {
|
|
21
|
-
const { appName, userId } = toolContext.invocationContext.session;
|
|
22
|
-
if (!this.credentials[appName]) {
|
|
23
|
-
this.credentials[appName] = {};
|
|
24
|
-
}
|
|
25
|
-
if (!this.credentials[appName][userId]) {
|
|
26
|
-
this.credentials[appName][userId] = {};
|
|
27
|
-
}
|
|
28
|
-
return this.credentials[appName][userId];
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
export {
|
|
32
|
-
InMemoryCredentialService
|
|
33
|
-
};
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
class CredentialExchangerRegistry {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.exchangers = {};
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Register an exchanger instance for a credential type.
|
|
12
|
-
* @param credentialType - The credential type to register for.
|
|
13
|
-
* @param exchangerInstance - The exchanger instance to register.
|
|
14
|
-
*/
|
|
15
|
-
register(credentialType, exchangerInstance) {
|
|
16
|
-
this.exchangers[credentialType] = exchangerInstance;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Get the exchanger instance for a credential type.
|
|
20
|
-
* @param credentialType - The credential type to get exchanger for.
|
|
21
|
-
* @returns The exchanger instance if registered, undefined otherwise.
|
|
22
|
-
*/
|
|
23
|
-
getExchanger(credentialType) {
|
|
24
|
-
return this.exchangers[credentialType];
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
export {
|
|
28
|
-
CredentialExchangerRegistry
|
|
29
|
-
};
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
class BaseCodeExecutor {
|
|
7
|
-
constructor() {
|
|
8
|
-
/**
|
|
9
|
-
* If true, extract and process data files from the model request
|
|
10
|
-
* and attach them to the code executor.
|
|
11
|
-
*
|
|
12
|
-
* Supported data file MimeTypes are [text/csv].
|
|
13
|
-
* Default to false.
|
|
14
|
-
*/
|
|
15
|
-
this.optimizeDataFile = false;
|
|
16
|
-
/**
|
|
17
|
-
* Whether the code executor is stateful. Default to false.
|
|
18
|
-
*/
|
|
19
|
-
this.stateful = false;
|
|
20
|
-
/**
|
|
21
|
-
* The number of attempts to retry on consecutive code execution errors.
|
|
22
|
-
* Default to 2.
|
|
23
|
-
*/
|
|
24
|
-
this.errorRetryAttempts = 2;
|
|
25
|
-
/**
|
|
26
|
-
* The list of the enclosing delimiters to identify the code blocks.
|
|
27
|
-
* For example, the delimiter('```python\\n', '\\n```') can be used to
|
|
28
|
-
* identify code blocks with the following format::
|
|
29
|
-
*
|
|
30
|
-
* ```python
|
|
31
|
-
* print("hello")
|
|
32
|
-
* ```
|
|
33
|
-
*/
|
|
34
|
-
this.codeBlockDelimiters = [
|
|
35
|
-
["```tool_code\n", "\n```"],
|
|
36
|
-
["```python\n", "\n```"]
|
|
37
|
-
];
|
|
38
|
-
/**
|
|
39
|
-
* The delimiters to format the code execution result.
|
|
40
|
-
*/
|
|
41
|
-
this.executionResultDelimiters = ["```tool_output\n", "\n```"];
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
export {
|
|
45
|
-
BaseCodeExecutor
|
|
46
|
-
};
|