@google/adk 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/a2a/a2a_event.js +53 -26
  3. package/dist/cjs/a2a/a2a_remote_agent.js +179 -0
  4. package/dist/cjs/a2a/a2a_remote_agent_run_processor.js +205 -0
  5. package/dist/cjs/a2a/a2a_remote_agent_utils.js +165 -0
  6. package/dist/cjs/a2a/agent_card.js +380 -0
  7. package/dist/cjs/a2a/agent_executor.js +221 -0
  8. package/dist/cjs/a2a/agent_to_a2a.js +115 -0
  9. package/dist/cjs/a2a/event_processor_utils.js +180 -0
  10. package/dist/cjs/a2a/executor_context.js +1 -1
  11. package/dist/cjs/a2a/metadata_converter_utils.js +1 -0
  12. package/dist/cjs/a2a/part_converter_utils.js +24 -13
  13. package/dist/cjs/agents/llm_agent.js +17 -0
  14. package/dist/cjs/agents/{content_processor_utils.js → processors/content_processor_utils.js} +21 -2
  15. package/dist/cjs/agents/processors/content_request_processor.js +24 -3
  16. package/dist/cjs/agents/processors/context_compactor_request_processor.js +61 -0
  17. package/dist/cjs/agents/processors/instructions_llm_request_processor.js +1 -1
  18. package/dist/cjs/artifacts/file_artifact_service.js +35 -4
  19. package/dist/cjs/common.js +37 -0
  20. package/dist/cjs/context/base_context_compactor.js +27 -0
  21. package/dist/cjs/context/summarizers/base_summarizer.js +27 -0
  22. package/dist/cjs/context/summarizers/llm_summarizer.js +93 -0
  23. package/dist/cjs/context/token_based_context_compactor.js +135 -0
  24. package/dist/cjs/context/truncating_context_compactor.js +58 -0
  25. package/dist/cjs/events/compacted_event.js +53 -0
  26. package/dist/cjs/index.js +38 -14
  27. package/dist/cjs/index.js.map +4 -4
  28. package/dist/cjs/memory/in_memory_memory_service.js +1 -1
  29. package/dist/cjs/runner/runner.js +19 -10
  30. package/dist/cjs/sessions/db/operations.js +4 -14
  31. package/dist/cjs/sessions/state.js +2 -2
  32. package/dist/cjs/tools/agent_tool.js +6 -5
  33. package/dist/cjs/tools/load_artifacts_tool.js +188 -0
  34. package/dist/cjs/tools/load_memory_tool.js +107 -0
  35. package/dist/cjs/tools/preload_memory_tool.js +109 -0
  36. package/dist/cjs/utils/gemini_schema_util.js +54 -12
  37. package/dist/cjs/utils/logger.js +1 -0
  38. package/dist/cjs/version.js +1 -1
  39. package/dist/esm/a2a/a2a_event.js +52 -26
  40. package/dist/esm/a2a/a2a_remote_agent.js +153 -0
  41. package/dist/esm/a2a/a2a_remote_agent_run_processor.js +182 -0
  42. package/dist/esm/a2a/a2a_remote_agent_utils.js +131 -0
  43. package/dist/esm/a2a/agent_card.js +340 -0
  44. package/dist/esm/a2a/agent_executor.js +202 -0
  45. package/dist/esm/a2a/agent_to_a2a.js +80 -0
  46. package/dist/esm/a2a/event_processor_utils.js +159 -0
  47. package/dist/esm/a2a/executor_context.js +1 -1
  48. package/dist/esm/a2a/metadata_converter_utils.js +1 -0
  49. package/dist/esm/a2a/part_converter_utils.js +24 -13
  50. package/dist/esm/agents/llm_agent.js +17 -0
  51. package/dist/esm/agents/{content_processor_utils.js → processors/content_processor_utils.js} +23 -2
  52. package/dist/esm/agents/processors/content_request_processor.js +25 -4
  53. package/dist/esm/agents/processors/context_compactor_request_processor.js +31 -0
  54. package/dist/esm/agents/processors/instructions_llm_request_processor.js +1 -1
  55. package/dist/esm/artifacts/file_artifact_service.js +30 -3
  56. package/dist/esm/common.js +33 -1
  57. package/dist/esm/context/base_context_compactor.js +5 -0
  58. package/dist/esm/context/summarizers/base_summarizer.js +5 -0
  59. package/dist/esm/context/summarizers/llm_summarizer.js +65 -0
  60. package/dist/esm/context/token_based_context_compactor.js +105 -0
  61. package/dist/esm/context/truncating_context_compactor.js +28 -0
  62. package/dist/esm/events/compacted_event.js +22 -0
  63. package/dist/esm/index.js +38 -14
  64. package/dist/esm/index.js.map +4 -4
  65. package/dist/esm/memory/in_memory_memory_service.js +1 -1
  66. package/dist/esm/runner/runner.js +17 -9
  67. package/dist/esm/sessions/db/operations.js +4 -14
  68. package/dist/esm/sessions/state.js +2 -2
  69. package/dist/esm/tools/agent_tool.js +6 -5
  70. package/dist/esm/tools/load_artifacts_tool.js +159 -0
  71. package/dist/esm/tools/load_memory_tool.js +78 -0
  72. package/dist/esm/tools/preload_memory_tool.js +80 -0
  73. package/dist/esm/utils/gemini_schema_util.js +54 -12
  74. package/dist/esm/utils/logger.js +1 -0
  75. package/dist/esm/version.js +1 -1
  76. package/dist/types/a2a/a2a_event.d.ts +23 -6
  77. package/dist/types/a2a/a2a_remote_agent.d.ts +67 -0
  78. package/dist/types/a2a/a2a_remote_agent_run_processor.d.ts +31 -0
  79. package/dist/types/a2a/a2a_remote_agent_utils.d.ts +38 -0
  80. package/dist/types/a2a/agent_card.d.ts +23 -0
  81. package/dist/types/a2a/agent_executor.d.ts +52 -0
  82. package/dist/types/a2a/agent_to_a2a.d.ts +45 -0
  83. package/dist/types/a2a/event_processor_utils.d.ts +24 -0
  84. package/dist/types/a2a/executor_context.d.ts +1 -1
  85. package/dist/types/a2a/metadata_converter_utils.d.ts +2 -1
  86. package/dist/types/agents/llm_agent.d.ts +6 -0
  87. package/dist/types/agents/loop_agent.d.ts +1 -1
  88. package/dist/types/agents/{content_processor_utils.d.ts → processors/content_processor_utils.d.ts} +1 -1
  89. package/dist/types/agents/processors/context_compactor_request_processor.d.ts +22 -0
  90. package/dist/types/artifacts/file_artifact_service.d.ts +4 -0
  91. package/dist/types/common.d.ts +16 -1
  92. package/dist/types/context/base_context_compactor.d.ts +24 -0
  93. package/dist/types/context/summarizers/base_summarizer.d.ts +19 -0
  94. package/dist/types/context/summarizers/llm_summarizer.d.ts +23 -0
  95. package/dist/types/context/token_based_context_compactor.d.ts +33 -0
  96. package/dist/types/context/truncating_context_compactor.d.ts +24 -0
  97. package/dist/types/events/compacted_event.d.ts +33 -0
  98. package/dist/types/index.d.ts +8 -0
  99. package/dist/types/runner/runner.d.ts +13 -0
  100. package/dist/types/sessions/db/operations.d.ts +2 -3
  101. package/dist/types/tools/load_artifacts_tool.d.ts +21 -0
  102. package/dist/types/tools/load_memory_tool.d.ts +22 -0
  103. package/dist/types/tools/preload_memory_tool.d.ts +23 -0
  104. package/dist/types/version.d.ts +1 -1
  105. package/dist/web/a2a/a2a_event.js +52 -26
  106. package/dist/web/a2a/a2a_remote_agent.js +184 -0
  107. package/dist/web/a2a/a2a_remote_agent_run_processor.js +182 -0
  108. package/dist/web/a2a/a2a_remote_agent_utils.js +131 -0
  109. package/dist/web/a2a/agent_card.js +340 -0
  110. package/dist/web/a2a/agent_executor.js +216 -0
  111. package/dist/web/a2a/agent_to_a2a.js +80 -0
  112. package/dist/web/a2a/event_processor_utils.js +168 -0
  113. package/dist/web/a2a/executor_context.js +1 -1
  114. package/dist/web/a2a/metadata_converter_utils.js +1 -0
  115. package/dist/web/a2a/part_converter_utils.js +24 -13
  116. package/dist/web/agents/llm_agent.js +17 -0
  117. package/dist/web/agents/{content_processor_utils.js → processors/content_processor_utils.js} +22 -2
  118. package/dist/web/agents/processors/content_request_processor.js +25 -4
  119. package/dist/web/agents/processors/context_compactor_request_processor.js +49 -0
  120. package/dist/web/agents/processors/instructions_llm_request_processor.js +1 -1
  121. package/dist/web/artifacts/file_artifact_service.js +30 -3
  122. package/dist/web/common.js +33 -1
  123. package/dist/web/context/base_context_compactor.js +5 -0
  124. package/dist/web/context/summarizers/base_summarizer.js +5 -0
  125. package/dist/web/context/summarizers/llm_summarizer.js +74 -0
  126. package/dist/web/context/token_based_context_compactor.js +105 -0
  127. package/dist/web/context/truncating_context_compactor.js +28 -0
  128. package/dist/web/events/compacted_event.js +40 -0
  129. package/dist/web/index.js +1 -1
  130. package/dist/web/index.js.map +4 -4
  131. package/dist/web/memory/in_memory_memory_service.js +1 -1
  132. package/dist/web/runner/runner.js +17 -9
  133. package/dist/web/sessions/db/operations.js +4 -14
  134. package/dist/web/sessions/state.js +2 -2
  135. package/dist/web/tools/agent_tool.js +6 -5
  136. package/dist/web/tools/load_artifacts_tool.js +150 -0
  137. package/dist/web/tools/load_memory_tool.js +77 -0
  138. package/dist/web/tools/preload_memory_tool.js +75 -0
  139. package/dist/web/utils/gemini_schema_util.js +85 -12
  140. package/dist/web/utils/logger.js +1 -0
  141. package/dist/web/version.js +1 -1
  142. package/package.json +7 -5
@@ -0,0 +1,105 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { isCompactedEvent } from "../events/compacted_event.js";
7
+ import { stringifyContent } from "../events/event.js";
8
+ class TokenBasedContextCompactor {
9
+ constructor(options) {
10
+ this.tokenThreshold = options.tokenThreshold;
11
+ this.eventRetentionSize = options.eventRetentionSize;
12
+ this.summarizer = options.summarizer;
13
+ }
14
+ getActiveEvents(events) {
15
+ let latestCompactedEvent = void 0;
16
+ for (let i = events.length - 1; i >= 0; i--) {
17
+ const e = events[i];
18
+ if (isCompactedEvent(e)) {
19
+ if (!latestCompactedEvent || e.endTime > latestCompactedEvent.endTime) {
20
+ latestCompactedEvent = e;
21
+ }
22
+ }
23
+ }
24
+ if (!latestCompactedEvent) {
25
+ return events;
26
+ }
27
+ const activeRawEvents = events.filter(
28
+ (e) => !isCompactedEvent(e) && e.timestamp > latestCompactedEvent.endTime
29
+ );
30
+ return [latestCompactedEvent, ...activeRawEvents];
31
+ }
32
+ shouldCompact(invocationContext) {
33
+ const events = invocationContext.session.events;
34
+ const activeEvents = this.getActiveEvents(events);
35
+ const rawEvents = activeEvents.filter((e) => !isCompactedEvent(e));
36
+ if (rawEvents.length <= this.eventRetentionSize) {
37
+ return false;
38
+ }
39
+ let totalTokens = 0;
40
+ for (const event of activeEvents) {
41
+ totalTokens += getEventTokens(event);
42
+ }
43
+ return totalTokens > this.tokenThreshold;
44
+ }
45
+ async compact(invocationContext) {
46
+ const events = invocationContext.session.events;
47
+ const activeEvents = this.getActiveEvents(events);
48
+ const rawEvents = activeEvents.filter((e) => !isCompactedEvent(e));
49
+ if (rawEvents.length <= this.eventRetentionSize) {
50
+ return;
51
+ }
52
+ let retainStartIndex = Math.max(
53
+ 0,
54
+ rawEvents.length - this.eventRetentionSize
55
+ );
56
+ while (retainStartIndex > 0) {
57
+ const eventToRetain = rawEvents[retainStartIndex];
58
+ const previousEvent = rawEvents[retainStartIndex - 1];
59
+ if (hasFunctionResponse(eventToRetain) && hasFunctionCall(previousEvent)) {
60
+ retainStartIndex--;
61
+ } else {
62
+ break;
63
+ }
64
+ }
65
+ if (retainStartIndex === 0) {
66
+ return;
67
+ }
68
+ const rawEventsToCompact = rawEvents.slice(0, retainStartIndex);
69
+ const compactedEventPresent = activeEvents.find(isCompactedEvent);
70
+ const eventsToCompact = compactedEventPresent ? [compactedEventPresent, ...rawEventsToCompact] : rawEventsToCompact;
71
+ const compactedEvent = await this.summarizer.summarize(eventsToCompact);
72
+ if (!compactedEvent.actions) {
73
+ compactedEvent.actions = {
74
+ stateDelta: {},
75
+ artifactDelta: {},
76
+ requestedAuthConfigs: [],
77
+ requestedToolConfirmations: {}
78
+ };
79
+ }
80
+ invocationContext.session.events.push(compactedEvent);
81
+ }
82
+ }
83
+ function getEventTokens(event) {
84
+ var _a;
85
+ if (((_a = event.usageMetadata) == null ? void 0 : _a.promptTokenCount) !== void 0) {
86
+ return event.usageMetadata.promptTokenCount;
87
+ }
88
+ const contentStr = stringifyContent(event);
89
+ return Math.ceil(contentStr.length / 4);
90
+ }
91
+ function hasFunctionCall(event) {
92
+ var _a, _b;
93
+ return !!((_b = (_a = event.content) == null ? void 0 : _a.parts) == null ? void 0 : _b.some(
94
+ (part) => part.functionCall !== void 0
95
+ ));
96
+ }
97
+ function hasFunctionResponse(event) {
98
+ var _a, _b;
99
+ return !!((_b = (_a = event.content) == null ? void 0 : _a.parts) == null ? void 0 : _b.some(
100
+ (part) => part.functionResponse !== void 0
101
+ ));
102
+ }
103
+ export {
104
+ TokenBasedContextCompactor
105
+ };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ class TruncatingContextCompactor {
7
+ constructor(options) {
8
+ var _a;
9
+ this.threshold = options.threshold;
10
+ this.preserveLeadingEvents = (_a = options.preserveLeadingEvents) != null ? _a : 0;
11
+ }
12
+ shouldCompact(invocationContext) {
13
+ const eventsLength = invocationContext.session.events.length;
14
+ return eventsLength > this.threshold + Math.max(0, this.preserveLeadingEvents);
15
+ }
16
+ compact(invocationContext) {
17
+ const events = invocationContext.session.events;
18
+ const excess = events.length - this.threshold - Math.max(0, this.preserveLeadingEvents);
19
+ if (excess <= 0) {
20
+ return;
21
+ }
22
+ const startIndexToRemove = Math.max(0, this.preserveLeadingEvents);
23
+ events.splice(startIndexToRemove, excess);
24
+ }
25
+ }
26
+ export {
27
+ TruncatingContextCompactor
28
+ };
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { createEvent } from "./event.js";
7
+ function isCompactedEvent(event) {
8
+ return "isCompacted" in event && event.isCompacted === true;
9
+ }
10
+ function createCompactedEvent(params = {}) {
11
+ return {
12
+ ...createEvent(params),
13
+ isCompacted: params.isCompacted || true,
14
+ startTime: params.startTime,
15
+ endTime: params.endTime,
16
+ compactedContent: params.compactedContent
17
+ };
18
+ }
19
+ export {
20
+ createCompactedEvent,
21
+ isCompactedEvent
22
+ };