@google/adk 0.5.0 → 0.6.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/README.md +1 -1
- package/dist/cjs/a2a/a2a_event.js +53 -26
- package/dist/cjs/a2a/a2a_remote_agent.js +174 -0
- package/dist/cjs/a2a/a2a_remote_agent_run_processor.js +198 -0
- package/dist/cjs/a2a/a2a_remote_agent_utils.js +165 -0
- package/dist/cjs/a2a/agent_card.js +380 -0
- package/dist/cjs/a2a/agent_executor.js +221 -0
- package/dist/cjs/a2a/agent_to_a2a.js +115 -0
- package/dist/cjs/a2a/event_processor_utils.js +180 -0
- package/dist/cjs/a2a/executor_context.js +1 -1
- package/dist/cjs/a2a/metadata_converter_utils.js +1 -0
- package/dist/cjs/a2a/part_converter_utils.js +24 -13
- package/dist/cjs/agents/llm_agent.js +17 -0
- package/dist/cjs/agents/{content_processor_utils.js → processors/content_processor_utils.js} +21 -2
- package/dist/cjs/agents/processors/content_request_processor.js +24 -3
- package/dist/cjs/agents/processors/context_compactor_request_processor.js +61 -0
- package/dist/cjs/agents/processors/instructions_llm_request_processor.js +1 -1
- package/dist/cjs/artifacts/file_artifact_service.js +35 -4
- package/dist/cjs/common.js +37 -0
- package/dist/cjs/context/base_context_compactor.js +27 -0
- package/dist/cjs/context/summarizers/base_summarizer.js +27 -0
- package/dist/cjs/context/summarizers/llm_summarizer.js +93 -0
- package/dist/cjs/context/token_based_context_compactor.js +135 -0
- package/dist/cjs/context/truncating_context_compactor.js +58 -0
- package/dist/cjs/events/compacted_event.js +53 -0
- package/dist/cjs/index.js +38 -14
- package/dist/cjs/index.js.map +4 -4
- package/dist/cjs/memory/in_memory_memory_service.js +1 -1
- package/dist/cjs/runner/runner.js +19 -10
- package/dist/cjs/sessions/db/operations.js +4 -14
- package/dist/cjs/sessions/state.js +2 -2
- package/dist/cjs/tools/agent_tool.js +6 -5
- package/dist/cjs/tools/load_artifacts_tool.js +188 -0
- package/dist/cjs/tools/load_memory_tool.js +107 -0
- package/dist/cjs/tools/preload_memory_tool.js +109 -0
- package/dist/cjs/utils/logger.js +1 -0
- package/dist/cjs/version.js +1 -1
- package/dist/esm/a2a/a2a_event.js +52 -26
- package/dist/esm/a2a/a2a_remote_agent.js +148 -0
- package/dist/esm/a2a/a2a_remote_agent_run_processor.js +175 -0
- package/dist/esm/a2a/a2a_remote_agent_utils.js +131 -0
- package/dist/esm/a2a/agent_card.js +340 -0
- package/dist/esm/a2a/agent_executor.js +202 -0
- package/dist/esm/a2a/agent_to_a2a.js +80 -0
- package/dist/esm/a2a/event_processor_utils.js +159 -0
- package/dist/esm/a2a/executor_context.js +1 -1
- package/dist/esm/a2a/metadata_converter_utils.js +1 -0
- package/dist/esm/a2a/part_converter_utils.js +24 -13
- package/dist/esm/agents/llm_agent.js +17 -0
- package/dist/esm/agents/{content_processor_utils.js → processors/content_processor_utils.js} +23 -2
- package/dist/esm/agents/processors/content_request_processor.js +25 -4
- package/dist/esm/agents/processors/context_compactor_request_processor.js +31 -0
- package/dist/esm/agents/processors/instructions_llm_request_processor.js +1 -1
- package/dist/esm/artifacts/file_artifact_service.js +30 -3
- package/dist/esm/common.js +33 -1
- package/dist/esm/context/base_context_compactor.js +5 -0
- package/dist/esm/context/summarizers/base_summarizer.js +5 -0
- package/dist/esm/context/summarizers/llm_summarizer.js +65 -0
- package/dist/esm/context/token_based_context_compactor.js +105 -0
- package/dist/esm/context/truncating_context_compactor.js +28 -0
- package/dist/esm/events/compacted_event.js +22 -0
- package/dist/esm/index.js +38 -14
- package/dist/esm/index.js.map +4 -4
- package/dist/esm/memory/in_memory_memory_service.js +1 -1
- package/dist/esm/runner/runner.js +17 -9
- package/dist/esm/sessions/db/operations.js +4 -14
- package/dist/esm/sessions/state.js +2 -2
- package/dist/esm/tools/agent_tool.js +6 -5
- package/dist/esm/tools/load_artifacts_tool.js +159 -0
- package/dist/esm/tools/load_memory_tool.js +78 -0
- package/dist/esm/tools/preload_memory_tool.js +80 -0
- package/dist/esm/utils/logger.js +1 -0
- package/dist/esm/version.js +1 -1
- package/dist/types/a2a/a2a_event.d.ts +23 -6
- package/dist/types/a2a/a2a_remote_agent.d.ts +63 -0
- package/dist/types/a2a/a2a_remote_agent_run_processor.d.ts +31 -0
- package/dist/types/a2a/a2a_remote_agent_utils.d.ts +38 -0
- package/dist/types/a2a/agent_card.d.ts +23 -0
- package/dist/types/a2a/agent_executor.d.ts +52 -0
- package/dist/types/a2a/agent_to_a2a.d.ts +45 -0
- package/dist/types/a2a/event_processor_utils.d.ts +24 -0
- package/dist/types/a2a/executor_context.d.ts +1 -1
- package/dist/types/a2a/metadata_converter_utils.d.ts +2 -1
- package/dist/types/agents/llm_agent.d.ts +6 -0
- package/dist/types/agents/loop_agent.d.ts +1 -1
- package/dist/types/agents/{content_processor_utils.d.ts → processors/content_processor_utils.d.ts} +1 -1
- package/dist/types/agents/processors/context_compactor_request_processor.d.ts +22 -0
- package/dist/types/artifacts/file_artifact_service.d.ts +4 -0
- package/dist/types/common.d.ts +16 -1
- package/dist/types/context/base_context_compactor.d.ts +24 -0
- package/dist/types/context/summarizers/base_summarizer.d.ts +19 -0
- package/dist/types/context/summarizers/llm_summarizer.d.ts +23 -0
- package/dist/types/context/token_based_context_compactor.d.ts +33 -0
- package/dist/types/context/truncating_context_compactor.d.ts +24 -0
- package/dist/types/events/compacted_event.d.ts +33 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/runner/runner.d.ts +13 -0
- package/dist/types/sessions/db/operations.d.ts +2 -3
- package/dist/types/tools/load_artifacts_tool.d.ts +21 -0
- package/dist/types/tools/load_memory_tool.d.ts +22 -0
- package/dist/types/tools/preload_memory_tool.d.ts +23 -0
- package/dist/types/version.d.ts +1 -1
- package/dist/web/a2a/a2a_event.js +52 -26
- package/dist/web/a2a/a2a_remote_agent.js +193 -0
- package/dist/web/a2a/a2a_remote_agent_run_processor.js +175 -0
- package/dist/web/a2a/a2a_remote_agent_utils.js +131 -0
- package/dist/web/a2a/agent_card.js +340 -0
- package/dist/web/a2a/agent_executor.js +216 -0
- package/dist/web/a2a/agent_to_a2a.js +80 -0
- package/dist/web/a2a/event_processor_utils.js +168 -0
- package/dist/web/a2a/executor_context.js +1 -1
- package/dist/web/a2a/metadata_converter_utils.js +1 -0
- package/dist/web/a2a/part_converter_utils.js +24 -13
- package/dist/web/agents/llm_agent.js +17 -0
- package/dist/web/agents/{content_processor_utils.js → processors/content_processor_utils.js} +22 -2
- package/dist/web/agents/processors/content_request_processor.js +25 -4
- package/dist/web/agents/processors/context_compactor_request_processor.js +49 -0
- package/dist/web/agents/processors/instructions_llm_request_processor.js +1 -1
- package/dist/web/artifacts/file_artifact_service.js +30 -3
- package/dist/web/common.js +33 -1
- package/dist/web/context/base_context_compactor.js +5 -0
- package/dist/web/context/summarizers/base_summarizer.js +5 -0
- package/dist/web/context/summarizers/llm_summarizer.js +74 -0
- package/dist/web/context/token_based_context_compactor.js +105 -0
- package/dist/web/context/truncating_context_compactor.js +28 -0
- package/dist/web/events/compacted_event.js +40 -0
- package/dist/web/index.js +1 -1
- package/dist/web/index.js.map +4 -4
- package/dist/web/memory/in_memory_memory_service.js +1 -1
- package/dist/web/runner/runner.js +17 -9
- package/dist/web/sessions/db/operations.js +4 -14
- package/dist/web/sessions/state.js +2 -2
- package/dist/web/tools/agent_tool.js +6 -5
- package/dist/web/tools/load_artifacts_tool.js +150 -0
- package/dist/web/tools/load_memory_tool.js +77 -0
- package/dist/web/tools/preload_memory_tool.js +75 -0
- package/dist/web/utils/logger.js +1 -0
- package/dist/web/version.js +1 -1
- package/package.json +6 -4
|
@@ -28,8 +28,9 @@ __export(content_request_processor_exports, {
|
|
|
28
28
|
ContentRequestProcessor: () => ContentRequestProcessor
|
|
29
29
|
});
|
|
30
30
|
module.exports = __toCommonJS(content_request_processor_exports);
|
|
31
|
-
var
|
|
31
|
+
var import_compacted_event = require("../../events/compacted_event.js");
|
|
32
32
|
var import_llm_agent = require("../llm_agent.js");
|
|
33
|
+
var import_content_processor_utils = require("./content_processor_utils.js");
|
|
33
34
|
/**
|
|
34
35
|
* @license
|
|
35
36
|
* Copyright 2025 Google LLC
|
|
@@ -42,15 +43,35 @@ class ContentRequestProcessor {
|
|
|
42
43
|
if (!agent || !(0, import_llm_agent.isLlmAgent)(agent)) {
|
|
43
44
|
return;
|
|
44
45
|
}
|
|
46
|
+
let events = invocationContext.session.events;
|
|
47
|
+
const compactedEvents = events.filter(import_compacted_event.isCompactedEvent);
|
|
48
|
+
const latestCompactedEvent = compactedEvents.length > 0 ? compactedEvents.reduce(
|
|
49
|
+
(latest, current) => current.endTime > latest.endTime ? current : latest
|
|
50
|
+
) : void 0;
|
|
51
|
+
if (latestCompactedEvent) {
|
|
52
|
+
const remainingEvents = events.filter((event) => {
|
|
53
|
+
if (event === latestCompactedEvent) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
if ((0, import_compacted_event.isCompactedEvent)(event)) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
if (event.timestamp <= latestCompactedEvent.endTime) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
return true;
|
|
63
|
+
});
|
|
64
|
+
events = [latestCompactedEvent, ...remainingEvents];
|
|
65
|
+
}
|
|
45
66
|
if (agent.includeContents === "default") {
|
|
46
67
|
llmRequest.contents = (0, import_content_processor_utils.getContents)(
|
|
47
|
-
|
|
68
|
+
events,
|
|
48
69
|
agent.name,
|
|
49
70
|
invocationContext.branch
|
|
50
71
|
);
|
|
51
72
|
} else {
|
|
52
73
|
llmRequest.contents = (0, import_content_processor_utils.getCurrentTurnContents)(
|
|
53
|
-
|
|
74
|
+
events,
|
|
54
75
|
agent.name,
|
|
55
76
|
invocationContext.branch
|
|
56
77
|
);
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __export = (target, all) => {
|
|
13
|
+
for (var name in all)
|
|
14
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
15
|
+
};
|
|
16
|
+
var __copyProps = (to, from, except, desc) => {
|
|
17
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
18
|
+
for (let key of __getOwnPropNames(from))
|
|
19
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
20
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var context_compactor_request_processor_exports = {};
|
|
26
|
+
__export(context_compactor_request_processor_exports, {
|
|
27
|
+
ContextCompactorRequestProcessor: () => ContextCompactorRequestProcessor
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(context_compactor_request_processor_exports);
|
|
30
|
+
/**
|
|
31
|
+
* @license
|
|
32
|
+
* Copyright 2026 Google LLC
|
|
33
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
34
|
+
*/
|
|
35
|
+
class ContextCompactorRequestProcessor {
|
|
36
|
+
constructor(compactors) {
|
|
37
|
+
this.compactors = compactors;
|
|
38
|
+
}
|
|
39
|
+
async *runAsync(invocationContext, _llmRequest) {
|
|
40
|
+
for (const compactor of this.compactors) {
|
|
41
|
+
const shouldCompact = await Promise.resolve(
|
|
42
|
+
compactor.shouldCompact(invocationContext)
|
|
43
|
+
);
|
|
44
|
+
if (shouldCompact) {
|
|
45
|
+
const oldEvents = new Set(invocationContext.session.events);
|
|
46
|
+
await Promise.resolve(compactor.compact(invocationContext));
|
|
47
|
+
const newEvents = invocationContext.session.events.filter(
|
|
48
|
+
(e) => !oldEvents.has(e)
|
|
49
|
+
);
|
|
50
|
+
for (const e of newEvents) {
|
|
51
|
+
yield e;
|
|
52
|
+
}
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
59
|
+
0 && (module.exports = {
|
|
60
|
+
ContextCompactorRequestProcessor
|
|
61
|
+
});
|
|
@@ -45,7 +45,7 @@ class InstructionsLlmRequestProcessor extends import_base_llm_processor.BaseLlmR
|
|
|
45
45
|
// eslint-disable-next-line require-yield
|
|
46
46
|
async *runAsync(invocationContext, llmRequest) {
|
|
47
47
|
const agent = invocationContext.agent;
|
|
48
|
-
if (!(0, import_llm_agent.isLlmAgent)(agent)
|
|
48
|
+
if (!(0, import_llm_agent.isLlmAgent)(agent)) {
|
|
49
49
|
return;
|
|
50
50
|
}
|
|
51
51
|
const rootAgent = agent.rootAgent;
|
|
@@ -34,7 +34,11 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
34
34
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
35
35
|
var file_artifact_service_exports = {};
|
|
36
36
|
__export(file_artifact_service_exports, {
|
|
37
|
-
FileArtifactService: () => FileArtifactService
|
|
37
|
+
FileArtifactService: () => FileArtifactService,
|
|
38
|
+
assertInsideRoot: () => assertInsideRoot,
|
|
39
|
+
assertSafeSegment: () => assertSafeSegment,
|
|
40
|
+
getSessionArtifactsDir: () => getSessionArtifactsDir,
|
|
41
|
+
getUserRoot: () => getUserRoot
|
|
38
42
|
});
|
|
39
43
|
module.exports = __toCommonJS(file_artifact_service_exports);
|
|
40
44
|
var fs = __toESM(require("fs/promises"), 1);
|
|
@@ -346,8 +350,28 @@ class FileArtifactService {
|
|
|
346
350
|
}
|
|
347
351
|
}
|
|
348
352
|
}
|
|
353
|
+
const SAFE_SEGMENT_RE = /^[a-zA-Z0-9_@-][a-zA-Z0-9_.@-]{0,255}$/;
|
|
354
|
+
function assertSafeSegment(value, label) {
|
|
355
|
+
if (!value || !SAFE_SEGMENT_RE.test(value)) {
|
|
356
|
+
throw new Error(
|
|
357
|
+
`[FileArtifactService] Invalid ${label}: value contains disallowed characters.`
|
|
358
|
+
);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
function assertInsideRoot(resolvedPath, rootDir, label) {
|
|
362
|
+
const root = path.resolve(rootDir);
|
|
363
|
+
const resolved = path.resolve(resolvedPath);
|
|
364
|
+
if (!resolved.startsWith(root + path.sep) && resolved !== root) {
|
|
365
|
+
throw new Error(
|
|
366
|
+
`[FileArtifactService] ${label} escapes storage root. Resolved: ${resolved}, Root: ${root}`
|
|
367
|
+
);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
349
370
|
function getUserRoot(rootDir, userId) {
|
|
350
|
-
|
|
371
|
+
assertSafeSegment(userId, "userId");
|
|
372
|
+
const result = path.join(rootDir, "users", userId);
|
|
373
|
+
assertInsideRoot(result, rootDir, "userRoot");
|
|
374
|
+
return result;
|
|
351
375
|
}
|
|
352
376
|
function isUserScoped(sessionId, filename) {
|
|
353
377
|
return !sessionId || filename.startsWith(USER_NAMESPACE_PREFIX);
|
|
@@ -356,7 +380,10 @@ function getUserArtifactsDir(userRoot) {
|
|
|
356
380
|
return path.join(userRoot, "artifacts");
|
|
357
381
|
}
|
|
358
382
|
function getSessionArtifactsDir(baseRoot, sessionId) {
|
|
359
|
-
|
|
383
|
+
assertSafeSegment(sessionId, "sessionId");
|
|
384
|
+
const result = path.join(baseRoot, "sessions", sessionId, "artifacts");
|
|
385
|
+
assertInsideRoot(result, baseRoot, "sessionArtifactsDir");
|
|
386
|
+
return result;
|
|
360
387
|
}
|
|
361
388
|
function getVersionsDir(artifactDir) {
|
|
362
389
|
return path.join(artifactDir, "versions");
|
|
@@ -487,5 +514,9 @@ function asPosixPath(p) {
|
|
|
487
514
|
}
|
|
488
515
|
// Annotate the CommonJS export names for ESM import in node:
|
|
489
516
|
0 && (module.exports = {
|
|
490
|
-
FileArtifactService
|
|
517
|
+
FileArtifactService,
|
|
518
|
+
assertInsideRoot,
|
|
519
|
+
assertSafeSegment,
|
|
520
|
+
getSessionArtifactsDir,
|
|
521
|
+
getUserRoot
|
|
491
522
|
});
|
package/dist/cjs/common.js
CHANGED
|
@@ -40,7 +40,10 @@ __export(common_exports, {
|
|
|
40
40
|
BaseTool: () => import_base_tool.BaseTool,
|
|
41
41
|
BaseToolset: () => import_base_toolset.BaseToolset,
|
|
42
42
|
BuiltInCodeExecutor: () => import_built_in_code_executor.BuiltInCodeExecutor,
|
|
43
|
+
CONTENT_REQUEST_PROCESSOR: () => import_content_request_processor.CONTENT_REQUEST_PROCESSOR,
|
|
44
|
+
ContentRequestProcessor: () => import_content_request_processor.ContentRequestProcessor,
|
|
43
45
|
Context: () => import_context.Context,
|
|
46
|
+
ContextCompactorRequestProcessor: () => import_context_compactor_request_processor.ContextCompactorRequestProcessor,
|
|
44
47
|
EXIT_LOOP: () => import_exit_loop_tool.EXIT_LOOP,
|
|
45
48
|
EventType: () => import_structured_events.EventType,
|
|
46
49
|
ExitLoopTool: () => import_exit_loop_tool.ExitLoopTool,
|
|
@@ -56,15 +59,22 @@ __export(common_exports, {
|
|
|
56
59
|
InMemorySessionService: () => import_in_memory_session_service.InMemorySessionService,
|
|
57
60
|
InvocationContext: () => import_invocation_context.InvocationContext,
|
|
58
61
|
LLMRegistry: () => import_registry.LLMRegistry,
|
|
62
|
+
LOAD_ARTIFACTS: () => import_load_artifacts_tool.LOAD_ARTIFACTS,
|
|
63
|
+
LOAD_MEMORY: () => import_load_memory_tool.LOAD_MEMORY,
|
|
59
64
|
LiveRequestQueue: () => import_live_request_queue.LiveRequestQueue,
|
|
60
65
|
LlmAgent: () => import_llm_agent.LlmAgent,
|
|
66
|
+
LlmSummarizer: () => import_llm_summarizer.LlmSummarizer,
|
|
67
|
+
LoadArtifactsTool: () => import_load_artifacts_tool.LoadArtifactsTool,
|
|
68
|
+
LoadMemoryTool: () => import_load_memory_tool.LoadMemoryTool,
|
|
61
69
|
LogLevel: () => import_logger.LogLevel,
|
|
62
70
|
LoggingPlugin: () => import_logging_plugin.LoggingPlugin,
|
|
63
71
|
LongRunningFunctionTool: () => import_long_running_tool.LongRunningFunctionTool,
|
|
64
72
|
LoopAgent: () => import_loop_agent.LoopAgent,
|
|
73
|
+
PRELOAD_MEMORY: () => import_preload_memory_tool.PRELOAD_MEMORY,
|
|
65
74
|
ParallelAgent: () => import_parallel_agent.ParallelAgent,
|
|
66
75
|
PluginManager: () => import_plugin_manager.PluginManager,
|
|
67
76
|
PolicyOutcome: () => import_security_plugin.PolicyOutcome,
|
|
77
|
+
PreloadMemoryTool: () => import_preload_memory_tool.PreloadMemoryTool,
|
|
68
78
|
REQUEST_CONFIRMATION_FUNCTION_CALL_NAME: () => import_security_plugin.REQUEST_CONFIRMATION_FUNCTION_CALL_NAME,
|
|
69
79
|
ReadonlyContext: () => import_readonly_context.ReadonlyContext,
|
|
70
80
|
Runner: () => import_runner.Runner,
|
|
@@ -72,7 +82,9 @@ __export(common_exports, {
|
|
|
72
82
|
SequentialAgent: () => import_sequential_agent.SequentialAgent,
|
|
73
83
|
State: () => import_state.State,
|
|
74
84
|
StreamingMode: () => import_run_config.StreamingMode,
|
|
85
|
+
TokenBasedContextCompactor: () => import_token_based_context_compactor.TokenBasedContextCompactor,
|
|
75
86
|
ToolConfirmation: () => import_tool_confirmation.ToolConfirmation,
|
|
87
|
+
TruncatingContextCompactor: () => import_truncating_context_compactor.TruncatingContextCompactor,
|
|
76
88
|
createEvent: () => import_event.createEvent,
|
|
77
89
|
createEventActions: () => import_event_actions.createEventActions,
|
|
78
90
|
createSession: () => import_session.createSession,
|
|
@@ -89,12 +101,14 @@ __export(common_exports, {
|
|
|
89
101
|
isBaseLlm: () => import_base_llm.isBaseLlm,
|
|
90
102
|
isBaseTool: () => import_base_tool.isBaseTool,
|
|
91
103
|
isBaseToolset: () => import_base_toolset.isBaseToolset,
|
|
104
|
+
isCompactedEvent: () => import_compacted_event.isCompactedEvent,
|
|
92
105
|
isFinalResponse: () => import_event.isFinalResponse,
|
|
93
106
|
isFunctionTool: () => import_function_tool.isFunctionTool,
|
|
94
107
|
isGemini2OrAbove: () => import_model_name.isGemini2OrAbove,
|
|
95
108
|
isLlmAgent: () => import_llm_agent.isLlmAgent,
|
|
96
109
|
isLoopAgent: () => import_loop_agent.isLoopAgent,
|
|
97
110
|
isParallelAgent: () => import_parallel_agent.isParallelAgent,
|
|
111
|
+
isRunner: () => import_runner.isRunner,
|
|
98
112
|
isSequentialAgent: () => import_sequential_agent.isSequentialAgent,
|
|
99
113
|
setLogLevel: () => import_logger.setLogLevel,
|
|
100
114
|
setLogger: () => import_logger.setLogger,
|
|
@@ -114,6 +128,8 @@ var import_llm_agent = require("./agents/llm_agent.js");
|
|
|
114
128
|
var import_loop_agent = require("./agents/loop_agent.js");
|
|
115
129
|
var import_parallel_agent = require("./agents/parallel_agent.js");
|
|
116
130
|
var import_base_llm_processor = require("./agents/processors/base_llm_processor.js");
|
|
131
|
+
var import_content_request_processor = require("./agents/processors/content_request_processor.js");
|
|
132
|
+
var import_context_compactor_request_processor = require("./agents/processors/context_compactor_request_processor.js");
|
|
117
133
|
var import_readonly_context = require("./agents/readonly_context.js");
|
|
118
134
|
var import_run_config = require("./agents/run_config.js");
|
|
119
135
|
var import_sequential_agent = require("./agents/sequential_agent.js");
|
|
@@ -121,6 +137,10 @@ var import_in_memory_artifact_service = require("./artifacts/in_memory_artifact_
|
|
|
121
137
|
var import_auth_credential = require("./auth/auth_credential.js");
|
|
122
138
|
var import_base_code_executor = require("./code_executors/base_code_executor.js");
|
|
123
139
|
var import_built_in_code_executor = require("./code_executors/built_in_code_executor.js");
|
|
140
|
+
var import_llm_summarizer = require("./context/summarizers/llm_summarizer.js");
|
|
141
|
+
var import_token_based_context_compactor = require("./context/token_based_context_compactor.js");
|
|
142
|
+
var import_truncating_context_compactor = require("./context/truncating_context_compactor.js");
|
|
143
|
+
var import_compacted_event = require("./events/compacted_event.js");
|
|
124
144
|
var import_event = require("./events/event.js");
|
|
125
145
|
var import_event_actions = require("./events/event_actions.js");
|
|
126
146
|
var import_structured_events = require("./events/structured_events.js");
|
|
@@ -146,7 +166,10 @@ var import_base_toolset = require("./tools/base_toolset.js");
|
|
|
146
166
|
var import_exit_loop_tool = require("./tools/exit_loop_tool.js");
|
|
147
167
|
var import_function_tool = require("./tools/function_tool.js");
|
|
148
168
|
var import_google_search_tool = require("./tools/google_search_tool.js");
|
|
169
|
+
var import_load_artifacts_tool = require("./tools/load_artifacts_tool.js");
|
|
170
|
+
var import_load_memory_tool = require("./tools/load_memory_tool.js");
|
|
149
171
|
var import_long_running_tool = require("./tools/long_running_tool.js");
|
|
172
|
+
var import_preload_memory_tool = require("./tools/preload_memory_tool.js");
|
|
150
173
|
var import_tool_confirmation = require("./tools/tool_confirmation.js");
|
|
151
174
|
var import_logger = require("./utils/logger.js");
|
|
152
175
|
var import_model_name = require("./utils/model_name.js");
|
|
@@ -179,7 +202,10 @@ __reExport(common_exports, require("./tools/base_tool.js"), module.exports);
|
|
|
179
202
|
BaseTool,
|
|
180
203
|
BaseToolset,
|
|
181
204
|
BuiltInCodeExecutor,
|
|
205
|
+
CONTENT_REQUEST_PROCESSOR,
|
|
206
|
+
ContentRequestProcessor,
|
|
182
207
|
Context,
|
|
208
|
+
ContextCompactorRequestProcessor,
|
|
183
209
|
EXIT_LOOP,
|
|
184
210
|
EventType,
|
|
185
211
|
ExitLoopTool,
|
|
@@ -195,15 +221,22 @@ __reExport(common_exports, require("./tools/base_tool.js"), module.exports);
|
|
|
195
221
|
InMemorySessionService,
|
|
196
222
|
InvocationContext,
|
|
197
223
|
LLMRegistry,
|
|
224
|
+
LOAD_ARTIFACTS,
|
|
225
|
+
LOAD_MEMORY,
|
|
198
226
|
LiveRequestQueue,
|
|
199
227
|
LlmAgent,
|
|
228
|
+
LlmSummarizer,
|
|
229
|
+
LoadArtifactsTool,
|
|
230
|
+
LoadMemoryTool,
|
|
200
231
|
LogLevel,
|
|
201
232
|
LoggingPlugin,
|
|
202
233
|
LongRunningFunctionTool,
|
|
203
234
|
LoopAgent,
|
|
235
|
+
PRELOAD_MEMORY,
|
|
204
236
|
ParallelAgent,
|
|
205
237
|
PluginManager,
|
|
206
238
|
PolicyOutcome,
|
|
239
|
+
PreloadMemoryTool,
|
|
207
240
|
REQUEST_CONFIRMATION_FUNCTION_CALL_NAME,
|
|
208
241
|
ReadonlyContext,
|
|
209
242
|
Runner,
|
|
@@ -211,7 +244,9 @@ __reExport(common_exports, require("./tools/base_tool.js"), module.exports);
|
|
|
211
244
|
SequentialAgent,
|
|
212
245
|
State,
|
|
213
246
|
StreamingMode,
|
|
247
|
+
TokenBasedContextCompactor,
|
|
214
248
|
ToolConfirmation,
|
|
249
|
+
TruncatingContextCompactor,
|
|
215
250
|
createEvent,
|
|
216
251
|
createEventActions,
|
|
217
252
|
createSession,
|
|
@@ -228,12 +263,14 @@ __reExport(common_exports, require("./tools/base_tool.js"), module.exports);
|
|
|
228
263
|
isBaseLlm,
|
|
229
264
|
isBaseTool,
|
|
230
265
|
isBaseToolset,
|
|
266
|
+
isCompactedEvent,
|
|
231
267
|
isFinalResponse,
|
|
232
268
|
isFunctionTool,
|
|
233
269
|
isGemini2OrAbove,
|
|
234
270
|
isLlmAgent,
|
|
235
271
|
isLoopAgent,
|
|
236
272
|
isParallelAgent,
|
|
273
|
+
isRunner,
|
|
237
274
|
isSequentialAgent,
|
|
238
275
|
setLogLevel,
|
|
239
276
|
setLogger,
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
21
|
+
var base_context_compactor_exports = {};
|
|
22
|
+
module.exports = __toCommonJS(base_context_compactor_exports);
|
|
23
|
+
/**
|
|
24
|
+
* @license
|
|
25
|
+
* Copyright 2026 Google LLC
|
|
26
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
27
|
+
*/
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
21
|
+
var base_summarizer_exports = {};
|
|
22
|
+
module.exports = __toCommonJS(base_summarizer_exports);
|
|
23
|
+
/**
|
|
24
|
+
* @license
|
|
25
|
+
* Copyright 2026 Google LLC
|
|
26
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
27
|
+
*/
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __export = (target, all) => {
|
|
13
|
+
for (var name in all)
|
|
14
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
15
|
+
};
|
|
16
|
+
var __copyProps = (to, from, except, desc) => {
|
|
17
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
18
|
+
for (let key of __getOwnPropNames(from))
|
|
19
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
20
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var llm_summarizer_exports = {};
|
|
26
|
+
__export(llm_summarizer_exports, {
|
|
27
|
+
LlmSummarizer: () => LlmSummarizer
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(llm_summarizer_exports);
|
|
30
|
+
var import_compacted_event = require("../../events/compacted_event.js");
|
|
31
|
+
var import_event = require("../../events/event.js");
|
|
32
|
+
/**
|
|
33
|
+
* @license
|
|
34
|
+
* Copyright 2026 Google LLC
|
|
35
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
36
|
+
*/
|
|
37
|
+
const DEFAULT_PROMPT = "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.";
|
|
38
|
+
class LlmSummarizer {
|
|
39
|
+
constructor(options) {
|
|
40
|
+
this.llm = options.llm;
|
|
41
|
+
this.prompt = options.prompt || DEFAULT_PROMPT;
|
|
42
|
+
}
|
|
43
|
+
async summarize(events) {
|
|
44
|
+
var _a, _b, _c, _d, _e, _f;
|
|
45
|
+
if (events.length === 0) {
|
|
46
|
+
throw new Error("Cannot summarize an empty list of events.");
|
|
47
|
+
}
|
|
48
|
+
const startTime = events[0].timestamp;
|
|
49
|
+
const endTime = events[events.length - 1].timestamp;
|
|
50
|
+
let formattedEvents = "";
|
|
51
|
+
for (let i = 0; i < events.length; i++) {
|
|
52
|
+
formattedEvents += `[Event ${i + 1} - Author: ${events[i].author}]
|
|
53
|
+
`;
|
|
54
|
+
formattedEvents += `${(0, import_event.stringifyContent)(events[i])}
|
|
55
|
+
|
|
56
|
+
`;
|
|
57
|
+
}
|
|
58
|
+
const fullPrompt = `${this.prompt}
|
|
59
|
+
|
|
60
|
+
${formattedEvents}`;
|
|
61
|
+
const request = {
|
|
62
|
+
contents: [{ role: "user", parts: [{ text: fullPrompt }] }],
|
|
63
|
+
toolsDict: {},
|
|
64
|
+
liveConnectConfig: {}
|
|
65
|
+
};
|
|
66
|
+
const responseGen = this.llm.generateContentAsync(request, false);
|
|
67
|
+
let compactedContent = "";
|
|
68
|
+
const firstResponse = await responseGen.next();
|
|
69
|
+
if (firstResponse.done || !((_c = (_b = (_a = firstResponse.value.content) == null ? void 0 : _a.parts) == null ? void 0 : _b[0]) == null ? void 0 : _c.text)) {
|
|
70
|
+
throw new Error("LLM failed to return a valid summary.");
|
|
71
|
+
}
|
|
72
|
+
compactedContent += firstResponse.value.content.parts[0].text;
|
|
73
|
+
for await (const chunk of responseGen) {
|
|
74
|
+
if ((_f = (_e = (_d = chunk.content) == null ? void 0 : _d.parts) == null ? void 0 : _e[0]) == null ? void 0 : _f.text) {
|
|
75
|
+
compactedContent += chunk.content.parts[0].text;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return (0, import_compacted_event.createCompactedEvent)({
|
|
79
|
+
author: "system",
|
|
80
|
+
content: {
|
|
81
|
+
role: "model",
|
|
82
|
+
parts: [{ text: compactedContent }]
|
|
83
|
+
},
|
|
84
|
+
startTime,
|
|
85
|
+
endTime,
|
|
86
|
+
compactedContent
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
91
|
+
0 && (module.exports = {
|
|
92
|
+
LlmSummarizer
|
|
93
|
+
});
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __export = (target, all) => {
|
|
13
|
+
for (var name in all)
|
|
14
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
15
|
+
};
|
|
16
|
+
var __copyProps = (to, from, except, desc) => {
|
|
17
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
18
|
+
for (let key of __getOwnPropNames(from))
|
|
19
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
20
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var token_based_context_compactor_exports = {};
|
|
26
|
+
__export(token_based_context_compactor_exports, {
|
|
27
|
+
TokenBasedContextCompactor: () => TokenBasedContextCompactor
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(token_based_context_compactor_exports);
|
|
30
|
+
var import_compacted_event = require("../events/compacted_event.js");
|
|
31
|
+
var import_event = require("../events/event.js");
|
|
32
|
+
/**
|
|
33
|
+
* @license
|
|
34
|
+
* Copyright 2026 Google LLC
|
|
35
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
36
|
+
*/
|
|
37
|
+
class TokenBasedContextCompactor {
|
|
38
|
+
constructor(options) {
|
|
39
|
+
this.tokenThreshold = options.tokenThreshold;
|
|
40
|
+
this.eventRetentionSize = options.eventRetentionSize;
|
|
41
|
+
this.summarizer = options.summarizer;
|
|
42
|
+
}
|
|
43
|
+
getActiveEvents(events) {
|
|
44
|
+
let latestCompactedEvent = void 0;
|
|
45
|
+
for (let i = events.length - 1; i >= 0; i--) {
|
|
46
|
+
const e = events[i];
|
|
47
|
+
if ((0, import_compacted_event.isCompactedEvent)(e)) {
|
|
48
|
+
if (!latestCompactedEvent || e.endTime > latestCompactedEvent.endTime) {
|
|
49
|
+
latestCompactedEvent = e;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (!latestCompactedEvent) {
|
|
54
|
+
return events;
|
|
55
|
+
}
|
|
56
|
+
const activeRawEvents = events.filter(
|
|
57
|
+
(e) => !(0, import_compacted_event.isCompactedEvent)(e) && e.timestamp > latestCompactedEvent.endTime
|
|
58
|
+
);
|
|
59
|
+
return [latestCompactedEvent, ...activeRawEvents];
|
|
60
|
+
}
|
|
61
|
+
shouldCompact(invocationContext) {
|
|
62
|
+
const events = invocationContext.session.events;
|
|
63
|
+
const activeEvents = this.getActiveEvents(events);
|
|
64
|
+
const rawEvents = activeEvents.filter((e) => !(0, import_compacted_event.isCompactedEvent)(e));
|
|
65
|
+
if (rawEvents.length <= this.eventRetentionSize) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
let totalTokens = 0;
|
|
69
|
+
for (const event of activeEvents) {
|
|
70
|
+
totalTokens += getEventTokens(event);
|
|
71
|
+
}
|
|
72
|
+
return totalTokens > this.tokenThreshold;
|
|
73
|
+
}
|
|
74
|
+
async compact(invocationContext) {
|
|
75
|
+
const events = invocationContext.session.events;
|
|
76
|
+
const activeEvents = this.getActiveEvents(events);
|
|
77
|
+
const rawEvents = activeEvents.filter((e) => !(0, import_compacted_event.isCompactedEvent)(e));
|
|
78
|
+
if (rawEvents.length <= this.eventRetentionSize) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
let retainStartIndex = Math.max(
|
|
82
|
+
0,
|
|
83
|
+
rawEvents.length - this.eventRetentionSize
|
|
84
|
+
);
|
|
85
|
+
while (retainStartIndex > 0) {
|
|
86
|
+
const eventToRetain = rawEvents[retainStartIndex];
|
|
87
|
+
const previousEvent = rawEvents[retainStartIndex - 1];
|
|
88
|
+
if (hasFunctionResponse(eventToRetain) && hasFunctionCall(previousEvent)) {
|
|
89
|
+
retainStartIndex--;
|
|
90
|
+
} else {
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (retainStartIndex === 0) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const rawEventsToCompact = rawEvents.slice(0, retainStartIndex);
|
|
98
|
+
const compactedEventPresent = activeEvents.find(import_compacted_event.isCompactedEvent);
|
|
99
|
+
const eventsToCompact = compactedEventPresent ? [compactedEventPresent, ...rawEventsToCompact] : rawEventsToCompact;
|
|
100
|
+
const compactedEvent = await this.summarizer.summarize(eventsToCompact);
|
|
101
|
+
if (!compactedEvent.actions) {
|
|
102
|
+
compactedEvent.actions = {
|
|
103
|
+
stateDelta: {},
|
|
104
|
+
artifactDelta: {},
|
|
105
|
+
requestedAuthConfigs: [],
|
|
106
|
+
requestedToolConfirmations: {}
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
invocationContext.session.events.push(compactedEvent);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function getEventTokens(event) {
|
|
113
|
+
var _a;
|
|
114
|
+
if (((_a = event.usageMetadata) == null ? void 0 : _a.promptTokenCount) !== void 0) {
|
|
115
|
+
return event.usageMetadata.promptTokenCount;
|
|
116
|
+
}
|
|
117
|
+
const contentStr = (0, import_event.stringifyContent)(event);
|
|
118
|
+
return Math.ceil(contentStr.length / 4);
|
|
119
|
+
}
|
|
120
|
+
function hasFunctionCall(event) {
|
|
121
|
+
var _a, _b;
|
|
122
|
+
return !!((_b = (_a = event.content) == null ? void 0 : _a.parts) == null ? void 0 : _b.some(
|
|
123
|
+
(part) => part.functionCall !== void 0
|
|
124
|
+
));
|
|
125
|
+
}
|
|
126
|
+
function hasFunctionResponse(event) {
|
|
127
|
+
var _a, _b;
|
|
128
|
+
return !!((_b = (_a = event.content) == null ? void 0 : _a.parts) == null ? void 0 : _b.some(
|
|
129
|
+
(part) => part.functionResponse !== void 0
|
|
130
|
+
));
|
|
131
|
+
}
|
|
132
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
133
|
+
0 && (module.exports = {
|
|
134
|
+
TokenBasedContextCompactor
|
|
135
|
+
});
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __export = (target, all) => {
|
|
13
|
+
for (var name in all)
|
|
14
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
15
|
+
};
|
|
16
|
+
var __copyProps = (to, from, except, desc) => {
|
|
17
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
18
|
+
for (let key of __getOwnPropNames(from))
|
|
19
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
20
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var truncating_context_compactor_exports = {};
|
|
26
|
+
__export(truncating_context_compactor_exports, {
|
|
27
|
+
TruncatingContextCompactor: () => TruncatingContextCompactor
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(truncating_context_compactor_exports);
|
|
30
|
+
/**
|
|
31
|
+
* @license
|
|
32
|
+
* Copyright 2026 Google LLC
|
|
33
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
34
|
+
*/
|
|
35
|
+
class TruncatingContextCompactor {
|
|
36
|
+
constructor(options) {
|
|
37
|
+
var _a;
|
|
38
|
+
this.threshold = options.threshold;
|
|
39
|
+
this.preserveLeadingEvents = (_a = options.preserveLeadingEvents) != null ? _a : 0;
|
|
40
|
+
}
|
|
41
|
+
shouldCompact(invocationContext) {
|
|
42
|
+
const eventsLength = invocationContext.session.events.length;
|
|
43
|
+
return eventsLength > this.threshold + Math.max(0, this.preserveLeadingEvents);
|
|
44
|
+
}
|
|
45
|
+
compact(invocationContext) {
|
|
46
|
+
const events = invocationContext.session.events;
|
|
47
|
+
const excess = events.length - this.threshold - Math.max(0, this.preserveLeadingEvents);
|
|
48
|
+
if (excess <= 0) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const startIndexToRemove = Math.max(0, this.preserveLeadingEvents);
|
|
52
|
+
events.splice(startIndexToRemove, excess);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
56
|
+
0 && (module.exports = {
|
|
57
|
+
TruncatingContextCompactor
|
|
58
|
+
});
|