@paean-ai/adk 0.2.14 → 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 +1 -1
- 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,67 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
5
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
-
var __spreadValues = (a, b) => {
|
|
7
|
-
for (var prop in b || (b = {}))
|
|
8
|
-
if (__hasOwnProp.call(b, prop))
|
|
9
|
-
__defNormalProp(a, prop, b[prop]);
|
|
10
|
-
if (__getOwnPropSymbols)
|
|
11
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
12
|
-
if (__propIsEnum.call(b, prop))
|
|
13
|
-
__defNormalProp(a, prop, b[prop]);
|
|
14
|
-
}
|
|
15
|
-
return a;
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* @license
|
|
19
|
-
* Copyright 2025 Google LLC
|
|
20
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
21
|
-
*/
|
|
22
|
-
function createEventActions(state = {}) {
|
|
23
|
-
return __spreadValues({
|
|
24
|
-
stateDelta: {},
|
|
25
|
-
artifactDelta: {},
|
|
26
|
-
requestedAuthConfigs: {},
|
|
27
|
-
requestedToolConfirmations: {}
|
|
28
|
-
}, state);
|
|
29
|
-
}
|
|
30
|
-
function mergeEventActions(sources, target) {
|
|
31
|
-
const result = createEventActions();
|
|
32
|
-
if (target) {
|
|
33
|
-
Object.assign(result, target);
|
|
34
|
-
}
|
|
35
|
-
for (const source of sources) {
|
|
36
|
-
if (!source) continue;
|
|
37
|
-
if (source.stateDelta) {
|
|
38
|
-
Object.assign(result.stateDelta, source.stateDelta);
|
|
39
|
-
}
|
|
40
|
-
if (source.artifactDelta) {
|
|
41
|
-
Object.assign(result.artifactDelta, source.artifactDelta);
|
|
42
|
-
}
|
|
43
|
-
if (source.requestedAuthConfigs) {
|
|
44
|
-
Object.assign(result.requestedAuthConfigs, source.requestedAuthConfigs);
|
|
45
|
-
}
|
|
46
|
-
if (source.requestedToolConfirmations) {
|
|
47
|
-
Object.assign(
|
|
48
|
-
result.requestedToolConfirmations,
|
|
49
|
-
source.requestedToolConfirmations
|
|
50
|
-
);
|
|
51
|
-
}
|
|
52
|
-
if (source.skipSummarization !== void 0) {
|
|
53
|
-
result.skipSummarization = source.skipSummarization;
|
|
54
|
-
}
|
|
55
|
-
if (source.transferToAgent !== void 0) {
|
|
56
|
-
result.transferToAgent = source.transferToAgent;
|
|
57
|
-
}
|
|
58
|
-
if (source.escalate !== void 0) {
|
|
59
|
-
result.escalate = source.escalate;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return result;
|
|
63
|
-
}
|
|
64
|
-
export {
|
|
65
|
-
createEventActions,
|
|
66
|
-
mergeEventActions
|
|
67
|
-
};
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { BaseExampleProvider } from "./base_example_provider.js";
|
|
7
|
-
const EXAMPLES_INTRO = "<EXAMPLES>\nBegin few-shot\nThe following are examples of user queries and model responses using the available tools.\n\n";
|
|
8
|
-
const EXAMPLES_END = "End few-shot\n<EXAMPLES>";
|
|
9
|
-
const EXAMPLE_START = "EXAMPLE {}:\nBegin example\n";
|
|
10
|
-
const EXAMPLE_END = "End example\n\n";
|
|
11
|
-
const USER_PREFIX = "[user]\n";
|
|
12
|
-
const MODEL_PREFIX = "[model]\n";
|
|
13
|
-
const FUNCTION_PREFIX = "```\n";
|
|
14
|
-
const FUNCTION_CALL_PREFIX = "```tool_code\n";
|
|
15
|
-
const FUNCTION_CALL_SUFFIX = "\n```\n";
|
|
16
|
-
const FUNCTION_RESPONSE_PREFIX = "```tool_outputs\n";
|
|
17
|
-
const FUNCTION_RESPONSE_SUFFIX = "\n```\n";
|
|
18
|
-
function convertExamplesToText(examples, model) {
|
|
19
|
-
var _a;
|
|
20
|
-
let examplesStr = "";
|
|
21
|
-
for (const [exampleNum, example] of examples.entries()) {
|
|
22
|
-
let output = "".concat(EXAMPLE_START.replace("{}", String(exampleNum + 1))).concat(USER_PREFIX);
|
|
23
|
-
if ((_a = example.input) == null ? void 0 : _a.parts) {
|
|
24
|
-
output += example.input.parts.filter((part) => part.text).map((part) => part.text).join("\n") + "\n";
|
|
25
|
-
}
|
|
26
|
-
const gemini2 = !model || model.includes("gemini-2");
|
|
27
|
-
let previousRole;
|
|
28
|
-
for (const content of example.output) {
|
|
29
|
-
const role = content.role === "model" ? MODEL_PREFIX : USER_PREFIX;
|
|
30
|
-
if (role !== previousRole) {
|
|
31
|
-
output += role;
|
|
32
|
-
}
|
|
33
|
-
previousRole = role;
|
|
34
|
-
for (const part of content.parts || []) {
|
|
35
|
-
if (part.functionCall) {
|
|
36
|
-
const prefix = gemini2 ? FUNCTION_PREFIX : FUNCTION_CALL_PREFIX;
|
|
37
|
-
const functionCall = part.functionCall;
|
|
38
|
-
const args = [];
|
|
39
|
-
if (functionCall.args) {
|
|
40
|
-
for (const [k, v] of Object.entries(functionCall.args)) {
|
|
41
|
-
if (typeof v === "string") {
|
|
42
|
-
args.push("".concat(k, "='").concat(v, "'"));
|
|
43
|
-
} else {
|
|
44
|
-
args.push("".concat(k, "=").concat(v));
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
const functionCallString = "".concat(functionCall.name, "(").concat(args.join(", "), ")");
|
|
49
|
-
output += "".concat(prefix).concat(functionCallString).concat(FUNCTION_CALL_SUFFIX);
|
|
50
|
-
} else if (part.functionResponse) {
|
|
51
|
-
const prefix = gemini2 ? FUNCTION_PREFIX : FUNCTION_RESPONSE_PREFIX;
|
|
52
|
-
output += "".concat(prefix).concat(JSON.stringify(part.functionResponse)).concat(FUNCTION_RESPONSE_SUFFIX);
|
|
53
|
-
} else if (part.text) {
|
|
54
|
-
output += "".concat(part.text, "\n");
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
output += EXAMPLE_END;
|
|
59
|
-
examplesStr += output;
|
|
60
|
-
}
|
|
61
|
-
return "".concat(EXAMPLES_INTRO).concat(examplesStr).concat(EXAMPLES_END);
|
|
62
|
-
}
|
|
63
|
-
function buildExampleSi(examples, query, model) {
|
|
64
|
-
if (Array.isArray(examples)) {
|
|
65
|
-
return convertExamplesToText(examples, model);
|
|
66
|
-
}
|
|
67
|
-
if (examples instanceof BaseExampleProvider) {
|
|
68
|
-
return convertExamplesToText(examples.getExamples(query), model);
|
|
69
|
-
}
|
|
70
|
-
throw new Error("Invalid example configuration");
|
|
71
|
-
}
|
|
72
|
-
export {
|
|
73
|
-
buildExampleSi,
|
|
74
|
-
convertExamplesToText
|
|
75
|
-
};
|
package/dist/web/index_web.js
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
class InMemoryMemoryService {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.memories = [];
|
|
9
|
-
this.sessionEvents = {};
|
|
10
|
-
}
|
|
11
|
-
async addSessionToMemory(session) {
|
|
12
|
-
const userKey = getUserKey(session.appName, session.userId);
|
|
13
|
-
if (!this.sessionEvents[userKey]) {
|
|
14
|
-
this.sessionEvents[userKey] = {};
|
|
15
|
-
}
|
|
16
|
-
this.sessionEvents[userKey][session.id] = session.events.filter(
|
|
17
|
-
(event) => {
|
|
18
|
-
var _a, _b, _c;
|
|
19
|
-
return ((_c = (_b = (_a = event.content) == null ? void 0 : _a.parts) == null ? void 0 : _b.length) != null ? _c : 0) > 0;
|
|
20
|
-
}
|
|
21
|
-
);
|
|
22
|
-
}
|
|
23
|
-
async searchMemory(req) {
|
|
24
|
-
var _a, _b;
|
|
25
|
-
const userKey = getUserKey(req.appName, req.userId);
|
|
26
|
-
if (!this.sessionEvents[userKey]) {
|
|
27
|
-
return Promise.resolve({ memories: [] });
|
|
28
|
-
}
|
|
29
|
-
const wordsInQuery = req.query.toLowerCase().split(/\s+/);
|
|
30
|
-
const response = { memories: [] };
|
|
31
|
-
for (const sessionEvents of Object.values(this.sessionEvents[userKey])) {
|
|
32
|
-
for (const event of sessionEvents) {
|
|
33
|
-
if (!((_b = (_a = event.content) == null ? void 0 : _a.parts) == null ? void 0 : _b.length)) {
|
|
34
|
-
continue;
|
|
35
|
-
}
|
|
36
|
-
const joinedText = event.content.parts.map((part) => part.text).filter((text) => !!text).join(" ");
|
|
37
|
-
const wordsInEvent = extractWordsLower(joinedText);
|
|
38
|
-
if (!wordsInEvent.size) {
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
const matchQuery = wordsInQuery.some((queryWord) => wordsInEvent.has(queryWord));
|
|
42
|
-
if (matchQuery) {
|
|
43
|
-
response.memories.push({
|
|
44
|
-
content: event.content,
|
|
45
|
-
author: event.author,
|
|
46
|
-
timestamp: formatTimestamp(event.timestamp)
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return response;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
function getUserKey(appName, userId) {
|
|
55
|
-
return "".concat(appName, "/").concat(userId);
|
|
56
|
-
}
|
|
57
|
-
function extractWordsLower(text) {
|
|
58
|
-
return new Set(
|
|
59
|
-
[...text.matchAll(/[A-Za-z]+/)].map((match) => match[0].toLowerCase())
|
|
60
|
-
);
|
|
61
|
-
}
|
|
62
|
-
function formatTimestamp(timestamp) {
|
|
63
|
-
return new Date(timestamp).toISOString();
|
|
64
|
-
}
|
|
65
|
-
export {
|
|
66
|
-
InMemoryMemoryService
|
|
67
|
-
};
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
var _a;
|
|
7
|
-
import { getClientLabels } from "../utils/client_labels.js";
|
|
8
|
-
const BASE_MODEL_SYMBOL = Symbol("baseModel");
|
|
9
|
-
function isBaseLlm(obj) {
|
|
10
|
-
return typeof obj === "object" && obj !== null && BASE_MODEL_SYMBOL in obj && obj[BASE_MODEL_SYMBOL] === true;
|
|
11
|
-
}
|
|
12
|
-
_a = BASE_MODEL_SYMBOL;
|
|
13
|
-
class BaseLlm {
|
|
14
|
-
/**
|
|
15
|
-
* Creates an instance of BaseLLM.
|
|
16
|
-
* @param params The parameters for creating a BaseLlm instance.
|
|
17
|
-
* @param params.model The name of the LLM, e.g. gemini-1.5-flash or
|
|
18
|
-
* gemini-1.5-flash-001.
|
|
19
|
-
*/
|
|
20
|
-
constructor({ model }) {
|
|
21
|
-
this[_a] = true;
|
|
22
|
-
this.model = model;
|
|
23
|
-
}
|
|
24
|
-
get trackingHeaders() {
|
|
25
|
-
const labels = getClientLabels();
|
|
26
|
-
const headerValue = labels.join(" ");
|
|
27
|
-
return {
|
|
28
|
-
"x-goog-api-client": headerValue,
|
|
29
|
-
"user-agent": headerValue
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Appends a user content, so that model can continue to output.
|
|
34
|
-
*
|
|
35
|
-
* @param llmRequest LlmRequest, the request to send to the LLM.
|
|
36
|
-
*/
|
|
37
|
-
maybeAppendUserContent(llmRequest) {
|
|
38
|
-
var _a2;
|
|
39
|
-
if (llmRequest.contents.length === 0) {
|
|
40
|
-
llmRequest.contents.push({
|
|
41
|
-
role: "user",
|
|
42
|
-
parts: [
|
|
43
|
-
{ text: "Handle the requests as specified in the System Instruction." }
|
|
44
|
-
]
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
if (((_a2 = llmRequest.contents[llmRequest.contents.length - 1]) == null ? void 0 : _a2.role) !== "user") {
|
|
48
|
-
llmRequest.contents.push({
|
|
49
|
-
role: "user",
|
|
50
|
-
parts: [{
|
|
51
|
-
text: "Continue processing previous requests as instructed. Exit or provide a summary if no more outputs are needed."
|
|
52
|
-
}]
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* List of supported models in regex for LlmRegistry.
|
|
59
|
-
*/
|
|
60
|
-
BaseLlm.supportedModels = [];
|
|
61
|
-
export {
|
|
62
|
-
BaseLlm,
|
|
63
|
-
isBaseLlm
|
|
64
|
-
};
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
|
|
2
|
-
var __await = function(promise, isYieldStar) {
|
|
3
|
-
this[0] = promise;
|
|
4
|
-
this[1] = isYieldStar;
|
|
5
|
-
};
|
|
6
|
-
var __asyncGenerator = (__this, __arguments, generator) => {
|
|
7
|
-
var resume = (k, v, yes, no) => {
|
|
8
|
-
try {
|
|
9
|
-
var x = generator[k](v), isAwait = (v = x.value) instanceof __await, done = x.done;
|
|
10
|
-
Promise.resolve(isAwait ? v[0] : v).then((y) => isAwait ? resume(k === "return" ? k : "next", v[1] ? { done: y.done, value: y.value } : y, yes, no) : yes({ value: y, done })).catch((e) => resume("throw", e, yes, no));
|
|
11
|
-
} catch (e) {
|
|
12
|
-
no(e);
|
|
13
|
-
}
|
|
14
|
-
}, method = (k) => it[k] = (x) => new Promise((yes, no) => resume(k, x, yes, no)), it = {};
|
|
15
|
-
return generator = generator.apply(__this, __arguments), it[__knownSymbol("asyncIterator")] = () => it, method("next"), method("throw"), method("return"), it;
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* @license
|
|
19
|
-
* Copyright 2025 Google LLC
|
|
20
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
21
|
-
*/
|
|
22
|
-
import { logger } from "../utils/logger.js";
|
|
23
|
-
class GeminiLlmConnection {
|
|
24
|
-
constructor(geminiSession) {
|
|
25
|
-
this.geminiSession = geminiSession;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Sends the conversation history to the gemini model.
|
|
29
|
-
*
|
|
30
|
-
* You call this method right after setting up the model connection.
|
|
31
|
-
* The model will respond if the last content is from user, otherwise it will
|
|
32
|
-
* wait for new user input before responding.
|
|
33
|
-
*
|
|
34
|
-
* @param history The conversation history to send to the model.
|
|
35
|
-
*/
|
|
36
|
-
async sendHistory(history) {
|
|
37
|
-
const contents = history.filter(
|
|
38
|
-
(content) => {
|
|
39
|
-
var _a;
|
|
40
|
-
return content.parts && ((_a = content.parts[0]) == null ? void 0 : _a.text);
|
|
41
|
-
}
|
|
42
|
-
);
|
|
43
|
-
if (contents.length > 0) {
|
|
44
|
-
this.geminiSession.sendClientContent({
|
|
45
|
-
turns: contents,
|
|
46
|
-
turnComplete: contents[contents.length - 1].role === "user"
|
|
47
|
-
});
|
|
48
|
-
} else {
|
|
49
|
-
logger.info("no content is sent");
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Sends a user content to the gemini model.
|
|
54
|
-
*
|
|
55
|
-
* The model will respond immediately upon receiving the content.
|
|
56
|
-
* If you send function responses, all parts in the content should be function
|
|
57
|
-
* responses.
|
|
58
|
-
*
|
|
59
|
-
* @param content The content to send to the model.
|
|
60
|
-
*/
|
|
61
|
-
async sendContent(content) {
|
|
62
|
-
if (!content.parts) {
|
|
63
|
-
throw new Error("Content must have parts.");
|
|
64
|
-
}
|
|
65
|
-
if (content.parts[0].functionResponse) {
|
|
66
|
-
const functionResponses = content.parts.map((part) => part.functionResponse).filter((fr) => !!fr);
|
|
67
|
-
logger.debug("Sending LLM function response:", functionResponses);
|
|
68
|
-
this.geminiSession.sendToolResponse({
|
|
69
|
-
functionResponses
|
|
70
|
-
});
|
|
71
|
-
} else {
|
|
72
|
-
logger.debug("Sending LLM new content", content);
|
|
73
|
-
this.geminiSession.sendClientContent({
|
|
74
|
-
turns: [content],
|
|
75
|
-
turnComplete: true
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Sends a chunk of audio or a frame of video to the model in realtime.
|
|
81
|
-
*
|
|
82
|
-
* @param blob The blob to send to the model.
|
|
83
|
-
*/
|
|
84
|
-
async sendRealtime(blob) {
|
|
85
|
-
logger.debug("Sending LLM Blob:", blob);
|
|
86
|
-
this.geminiSession.sendRealtimeInput({ media: blob });
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Builds a full text response.
|
|
90
|
-
*
|
|
91
|
-
* The text should not be partial and the returned LlmResponse is not be
|
|
92
|
-
* partial.
|
|
93
|
-
*
|
|
94
|
-
* @param text The text to be included in the response.
|
|
95
|
-
* @returns An LlmResponse containing the full text.
|
|
96
|
-
*/
|
|
97
|
-
buildFullTextResponse(text) {
|
|
98
|
-
return {
|
|
99
|
-
content: {
|
|
100
|
-
role: "model",
|
|
101
|
-
parts: [{ text }]
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
// TODO(b/425992518): GenAI SDK inconsistent API, missing methods.
|
|
106
|
-
receive() {
|
|
107
|
-
return __asyncGenerator(this, null, function* () {
|
|
108
|
-
throw new Error("Not Implemented.");
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Closes the llm server connection.
|
|
113
|
-
*/
|
|
114
|
-
async close() {
|
|
115
|
-
this.geminiSession.close();
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
export {
|
|
119
|
-
GeminiLlmConnection
|
|
120
|
-
};
|