@strands-agents/sdk 1.15.0 → 1.17.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/src/agent/agent.d.ts +4 -0
- package/dist/src/agent/agent.d.ts.map +1 -1
- package/dist/src/agent/agent.js +66 -16
- package/dist/src/agent/agent.js.map +1 -1
- package/dist/src/background-tasks/background-tasks.d.ts +41 -0
- package/dist/src/background-tasks/background-tasks.d.ts.map +1 -0
- package/dist/src/background-tasks/background-tasks.js +402 -0
- package/dist/src/background-tasks/background-tasks.js.map +1 -0
- package/dist/src/background-tasks/errors.d.ts +7 -0
- package/dist/src/background-tasks/errors.d.ts.map +1 -1
- package/dist/src/background-tasks/errors.js +10 -0
- package/dist/src/background-tasks/errors.js.map +1 -1
- package/dist/src/background-tasks/in-process/engine.d.ts +3 -4
- package/dist/src/background-tasks/in-process/engine.d.ts.map +1 -1
- package/dist/src/background-tasks/in-process/engine.js +9 -25
- package/dist/src/background-tasks/in-process/engine.js.map +1 -1
- package/dist/src/background-tasks/in-process/manager.d.ts +41 -0
- package/dist/src/background-tasks/in-process/manager.d.ts.map +1 -0
- package/dist/src/background-tasks/in-process/manager.js +214 -0
- package/dist/src/background-tasks/in-process/manager.js.map +1 -0
- package/dist/src/background-tasks/in-process/types.d.ts +9 -14
- package/dist/src/background-tasks/in-process/types.d.ts.map +1 -1
- package/dist/src/background-tasks/manager.d.ts +59 -0
- package/dist/src/background-tasks/manager.d.ts.map +1 -0
- package/dist/src/background-tasks/manager.js +2 -0
- package/dist/src/background-tasks/manager.js.map +1 -0
- package/dist/src/background-tasks/timer.d.ts +3 -0
- package/dist/src/background-tasks/timer.d.ts.map +1 -0
- package/dist/src/background-tasks/timer.js +11 -0
- package/dist/src/background-tasks/timer.js.map +1 -0
- package/dist/src/background-tasks/types.d.ts +60 -0
- package/dist/src/background-tasks/types.d.ts.map +1 -0
- package/dist/src/background-tasks/types.js +11 -0
- package/dist/src/background-tasks/types.js.map +1 -0
- package/dist/src/context-manager/context-manager.d.ts +22 -1
- package/dist/src/context-manager/context-manager.d.ts.map +1 -1
- package/dist/src/context-manager/context-manager.js +57 -3
- package/dist/src/context-manager/context-manager.js.map +1 -1
- package/dist/src/context-manager/methods/summarize.d.ts +2 -2
- package/dist/src/context-manager/methods/summarize.d.ts.map +1 -1
- package/dist/src/context-manager/methods/summarize.js +0 -2
- package/dist/src/context-manager/methods/summarize.js.map +1 -1
- package/dist/src/context-manager/methods/truncate.d.ts +2 -2
- package/dist/src/context-manager/methods/truncate.d.ts.map +1 -1
- package/dist/src/context-manager/methods/truncate.js +0 -2
- package/dist/src/context-manager/methods/truncate.js.map +1 -1
- package/dist/src/context-manager/modes/agentic/agentic-context.d.ts +2 -2
- package/dist/src/context-manager/retrieval-tool.d.ts +29 -0
- package/dist/src/context-manager/retrieval-tool.d.ts.map +1 -0
- package/dist/src/context-manager/retrieval-tool.js +98 -0
- package/dist/src/context-manager/retrieval-tool.js.map +1 -0
- package/dist/src/context-manager/stash.d.ts +107 -0
- package/dist/src/context-manager/stash.d.ts.map +1 -0
- package/dist/src/context-manager/stash.js +186 -0
- package/dist/src/context-manager/stash.js.map +1 -0
- package/dist/src/context-manager/strategies/offload/base.d.ts +10 -6
- package/dist/src/context-manager/strategies/offload/base.d.ts.map +1 -1
- package/dist/src/context-manager/strategies/offload/base.js +21 -9
- package/dist/src/context-manager/strategies/offload/base.js.map +1 -1
- package/dist/src/context-manager/strategies/offload/drop.d.ts +2 -2
- package/dist/src/context-manager/strategies/offload/drop.d.ts.map +1 -1
- package/dist/src/context-manager/strategies/offload/drop.js +6 -4
- package/dist/src/context-manager/strategies/offload/drop.js.map +1 -1
- package/dist/src/context-manager/strategies/offload/index.d.ts +1 -1
- package/dist/src/context-manager/strategies/offload/index.js +1 -1
- package/dist/src/context-manager/strategies/offload/summarize.d.ts +2 -2
- package/dist/src/context-manager/strategies/offload/summarize.d.ts.map +1 -1
- package/dist/src/context-manager/strategies/offload/summarize.js +16 -18
- package/dist/src/context-manager/strategies/offload/summarize.js.map +1 -1
- package/dist/src/context-manager/strategies/offload/truncate.d.ts +2 -2
- package/dist/src/context-manager/strategies/offload/truncate.d.ts.map +1 -1
- package/dist/src/context-manager/strategies/offload/truncate.js +33 -4
- package/dist/src/context-manager/strategies/offload/truncate.js.map +1 -1
- package/dist/src/context-manager/types.d.ts +35 -1
- package/dist/src/context-manager/types.d.ts.map +1 -1
- package/dist/src/experimental/index.d.ts +6 -0
- package/dist/src/experimental/index.d.ts.map +1 -1
- package/dist/src/experimental/index.js +3 -0
- package/dist/src/experimental/index.js.map +1 -1
- package/dist/src/index.d.ts +4 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/client.d.ts +3 -2
- package/dist/src/mcp/client.d.ts.map +1 -1
- package/dist/src/mcp/client.js +3 -2
- package/dist/src/mcp/client.js.map +1 -1
- package/dist/src/mcp/config.d.ts +11 -1
- package/dist/src/mcp/config.d.ts.map +1 -1
- package/dist/src/mcp/config.js.map +1 -1
- package/dist/src/mcp/config.node.d.ts +3 -2
- package/dist/src/mcp/config.node.d.ts.map +1 -1
- package/dist/src/mcp/config.node.js +6 -3
- package/dist/src/mcp/config.node.js.map +1 -1
- package/dist/src/mcp/index.d.ts +1 -1
- package/dist/src/mcp/index.d.ts.map +1 -1
- package/dist/src/models/openai/cache.d.ts +28 -1
- package/dist/src/models/openai/cache.d.ts.map +1 -1
- package/dist/src/models/openai/cache.js +37 -13
- package/dist/src/models/openai/cache.js.map +1 -1
- package/dist/src/models/routing/classifier-strategy.d.ts +87 -0
- package/dist/src/models/routing/classifier-strategy.d.ts.map +1 -0
- package/dist/src/models/routing/classifier-strategy.js +285 -0
- package/dist/src/models/routing/classifier-strategy.js.map +1 -0
- package/dist/src/models/routing/index.d.ts +2 -0
- package/dist/src/models/routing/index.d.ts.map +1 -1
- package/dist/src/models/routing/index.js +1 -0
- package/dist/src/models/routing/index.js.map +1 -1
- package/dist/src/models/routing/router.d.ts +14 -2
- package/dist/src/models/routing/router.d.ts.map +1 -1
- package/dist/src/models/routing/router.js +43 -8
- package/dist/src/models/routing/router.js.map +1 -1
- package/dist/src/models/vercel.d.ts +9 -1
- package/dist/src/models/vercel.d.ts.map +1 -1
- package/dist/src/models/vercel.js +248 -7
- package/dist/src/models/vercel.js.map +1 -1
- package/dist/src/session/session-manager.d.ts +5 -1
- package/dist/src/session/session-manager.d.ts.map +1 -1
- package/dist/src/session/session-manager.js +51 -1
- package/dist/src/session/session-manager.js.map +1 -1
- package/dist/src/session/snapshot-storage-adapter.d.ts.map +1 -1
- package/dist/src/session/snapshot-storage-adapter.js +1 -0
- package/dist/src/session/snapshot-storage-adapter.js.map +1 -1
- package/dist/src/storage/in-memory-storage.d.ts +2 -0
- package/dist/src/storage/in-memory-storage.d.ts.map +1 -1
- package/dist/src/storage/in-memory-storage.js +2 -1
- package/dist/src/storage/in-memory-storage.js.map +1 -1
- package/dist/src/storage/local-file-storage.d.ts +4 -6
- package/dist/src/storage/local-file-storage.d.ts.map +1 -1
- package/dist/src/storage/local-file-storage.js +12 -10
- package/dist/src/storage/local-file-storage.js.map +1 -1
- package/dist/src/storage/search/keyword.d.ts +1 -0
- package/dist/src/storage/search/keyword.d.ts.map +1 -1
- package/dist/src/storage/search/keyword.js +124 -0
- package/dist/src/storage/search/keyword.js.map +1 -1
- package/dist/src/storage/search/qmd.d.ts +66 -0
- package/dist/src/storage/search/qmd.d.ts.map +1 -0
- package/dist/src/storage/search/qmd.js +124 -0
- package/dist/src/storage/search/qmd.js.map +1 -0
- package/dist/src/storage/storage.d.ts +8 -0
- package/dist/src/storage/storage.d.ts.map +1 -1
- package/dist/src/storage/storage.js +18 -0
- package/dist/src/storage/storage.js.map +1 -1
- package/dist/src/telemetry/tracer.d.ts.map +1 -1
- package/dist/src/telemetry/tracer.js +4 -2
- package/dist/src/telemetry/tracer.js.map +1 -1
- package/dist/src/tools/executors/executor.d.ts +11 -1
- package/dist/src/tools/executors/executor.d.ts.map +1 -1
- package/dist/src/tools/executors/executor.js +50 -16
- package/dist/src/tools/executors/executor.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/types/agent.d.ts +9 -0
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/agent.js.map +1 -1
- package/dist/src/vended-memory-stores/file-memory-store/store.d.ts +9 -0
- package/dist/src/vended-memory-stores/file-memory-store/store.d.ts.map +1 -1
- package/dist/src/vended-memory-stores/file-memory-store/store.js +18 -13
- package/dist/src/vended-memory-stores/file-memory-store/store.js.map +1 -1
- package/dist/src/vended-tools/file-editor/file-editor.js +35 -30
- package/dist/src/vended-tools/file-editor/file-editor.js.map +1 -1
- package/package.json +12 -2
|
@@ -3,10 +3,14 @@
|
|
|
3
3
|
*
|
|
4
4
|
* On overflow, runs the strategy pipeline (including an emergency truncation as the final step).
|
|
5
5
|
*/
|
|
6
|
-
import { AfterModelCallEvent, BeforeModelCallEvent } from '../hooks/events.js';
|
|
6
|
+
import { AfterModelCallEvent, BeforeModelCallEvent, MessageAddedEvent } from '../hooks/events.js';
|
|
7
7
|
import { ContextWindowOverflowError } from '../errors.js';
|
|
8
|
+
import { InMemoryStorage } from '../storage/in-memory-storage.js';
|
|
9
|
+
import { EPHEMERAL } from '../storage/storage.js';
|
|
8
10
|
import { logger } from '../logging/logger.js';
|
|
9
11
|
import { EmergencyTruncateStrategy, Offload } from './strategies/offload/index.js';
|
|
12
|
+
import { Stash } from './stash.js';
|
|
13
|
+
import { createRetrievalTool, trackRetrievalToolUseIds } from './retrieval-tool.js';
|
|
10
14
|
/**
|
|
11
15
|
* Manages context reduction for an agent's conversation.
|
|
12
16
|
*
|
|
@@ -19,11 +23,16 @@ import { EmergencyTruncateStrategy, Offload } from './strategies/offload/index.j
|
|
|
19
23
|
* overflow recovery — no separate ConversationManager is needed.
|
|
20
24
|
*
|
|
21
25
|
* @experimental
|
|
22
|
-
* @internal
|
|
23
26
|
*/
|
|
24
27
|
export class ContextManager {
|
|
25
28
|
name = 'strands:context-manager';
|
|
26
29
|
_strategies;
|
|
30
|
+
_stashStorage;
|
|
31
|
+
_enableRetrievalTool;
|
|
32
|
+
_retrievalToolUseIds = new Set();
|
|
33
|
+
_stash;
|
|
34
|
+
_stashIsDurable = false;
|
|
35
|
+
_retrievalTool;
|
|
27
36
|
constructor(config) {
|
|
28
37
|
this._strategies = [
|
|
29
38
|
...(config?.strategies ?? [
|
|
@@ -32,10 +41,37 @@ export class ContextManager {
|
|
|
32
41
|
]),
|
|
33
42
|
new EmergencyTruncateStrategy(),
|
|
34
43
|
];
|
|
44
|
+
const stashConfig = config?.stash;
|
|
45
|
+
const stashObj = typeof stashConfig === 'object' ? stashConfig : undefined;
|
|
46
|
+
this._stashStorage = stashConfig === false ? false : stashObj?.storage;
|
|
47
|
+
this._enableRetrievalTool = stashConfig !== false && stashObj?.retrievalTool !== false;
|
|
48
|
+
}
|
|
49
|
+
getTools() {
|
|
50
|
+
if (!this._enableRetrievalTool)
|
|
51
|
+
return [];
|
|
52
|
+
if (!this._stash)
|
|
53
|
+
return [];
|
|
54
|
+
if (!this._retrievalTool) {
|
|
55
|
+
this._retrievalTool = createRetrievalTool(this._stash);
|
|
56
|
+
}
|
|
57
|
+
return [this._retrievalTool];
|
|
35
58
|
}
|
|
36
59
|
initAgent(agent) {
|
|
60
|
+
if (this._stashStorage !== false) {
|
|
61
|
+
const storage = this._stashStorage ?? agent.storage ?? new InMemoryStorage();
|
|
62
|
+
this._stashIsDurable = !(EPHEMERAL in storage);
|
|
63
|
+
this._stash = new Stash(storage, agent.sessionId, agent.id);
|
|
64
|
+
}
|
|
65
|
+
if (this._stash) {
|
|
66
|
+
const stash = this._stash;
|
|
67
|
+
const skipSet = this._retrievalToolUseIds;
|
|
68
|
+
agent.addHook(MessageAddedEvent, async (event) => {
|
|
69
|
+
trackRetrievalToolUseIds(event.message, skipSet);
|
|
70
|
+
await stash.storeMessage(event.message, skipSet);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
37
73
|
for (const strategy of this._strategies) {
|
|
38
|
-
strategy.init?.(agent);
|
|
74
|
+
strategy.init?.(agent, this._stash);
|
|
39
75
|
}
|
|
40
76
|
agent.addHook(BeforeModelCallEvent, async (event) => {
|
|
41
77
|
await this._runStrategies(event.agent, event.projectedInputTokens);
|
|
@@ -61,6 +97,23 @@ export class ContextManager {
|
|
|
61
97
|
event.retry = true;
|
|
62
98
|
});
|
|
63
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* The L1 stash instance, if stash is enabled and the agent has been initialized.
|
|
102
|
+
*
|
|
103
|
+
* @returns The stash, or undefined if stash is disabled or initAgent has not run
|
|
104
|
+
*/
|
|
105
|
+
get stash() {
|
|
106
|
+
return this._stash;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Whether the stash is backed by durable storage that survives process restarts.
|
|
110
|
+
* When true, stash data does not need to be embedded in session snapshots.
|
|
111
|
+
*
|
|
112
|
+
* @returns true if the stash storage is not ephemeral
|
|
113
|
+
*/
|
|
114
|
+
get stashIsDurable() {
|
|
115
|
+
return this._stashIsDurable;
|
|
116
|
+
}
|
|
64
117
|
async _runStrategies(agent, precomputedInputTokens) {
|
|
65
118
|
const messages = agent.messages;
|
|
66
119
|
const inputTokens = precomputedInputTokens ?? (await agent.model.countTokens(messages));
|
|
@@ -68,6 +121,7 @@ export class ContextManager {
|
|
|
68
121
|
messages,
|
|
69
122
|
agent,
|
|
70
123
|
utilization: agent.model.estimateUtilization(inputTokens),
|
|
124
|
+
...(this._stash ? { stash: this._stash } : {}),
|
|
71
125
|
};
|
|
72
126
|
let anyActed = false;
|
|
73
127
|
for (const strategy of this._strategies) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../../src/context-manager/context-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../../src/context-manager/context-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
* Compresses text via an LLM call. The method is target-agnostic — it operates
|
|
5
5
|
* on any text (a tool result, a range of messages, raw storage content).
|
|
6
6
|
* Strategies handle selection and placement.
|
|
7
|
-
*
|
|
8
|
-
* @internal
|
|
9
7
|
*/
|
|
10
8
|
import type { Model } from '../../models/model.js';
|
|
11
9
|
import { Message } from '../../types/messages.js';
|
|
@@ -13,6 +11,8 @@ import type { ContentBlock, ToolResultContent } from '../../types/messages.js';
|
|
|
13
11
|
export declare const SUMMARIZED_PREFIX = "[Summarized:";
|
|
14
12
|
/**
|
|
15
13
|
* Configuration for the summarize method.
|
|
14
|
+
*
|
|
15
|
+
* @experimental
|
|
16
16
|
*/
|
|
17
17
|
export interface SummarizeConfig {
|
|
18
18
|
/** Model to use for summarization. When omitted, uses the agent's model. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../../../../src/context-manager/methods/summarize.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../../../../src/context-manager/methods/summarize.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAa,OAAO,EAA8B,MAAM,yBAAyB,CAAA;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAG9E,eAAO,MAAM,iBAAiB,iBAAiB,CAAA;AAe/C;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,KAAK,CAAC,EAAE,KAAK,CAAA;IAEb,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,YAAY,EAAE,EACvB,KAAK,EAAE,KAAK,EACZ,MAAM,CAAC,EAAE,eAAe,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASxB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,YAAY,EAAE,CAOtF;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,EAAE,CAa5E"}
|
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
* Compresses text via an LLM call. The method is target-agnostic — it operates
|
|
5
5
|
* on any text (a tool result, a range of messages, raw storage content).
|
|
6
6
|
* Strategies handle selection and placement.
|
|
7
|
-
*
|
|
8
|
-
* @internal
|
|
9
7
|
*/
|
|
10
8
|
import { JsonBlock, Message, TextBlock, ToolResultBlock } from '../../types/messages.js';
|
|
11
9
|
import { logger } from '../../logging/logger.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summarize.js","sourceRoot":"","sources":["../../../../src/context-manager/methods/summarize.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"summarize.js","sourceRoot":"","sources":["../../../../src/context-manager/methods/summarize.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
* Truncate reduction method.
|
|
3
3
|
*
|
|
4
4
|
* Replaces content with a preview (head, tail, or head-tail).
|
|
5
|
-
*
|
|
6
|
-
* @internal
|
|
7
5
|
*/
|
|
8
6
|
import { TextBlock, ToolResultBlock } from '../../types/messages.js';
|
|
9
7
|
export declare const TRUNCATED_PREFIX = "[Truncated:";
|
|
10
8
|
/**
|
|
11
9
|
* Configuration for the truncate method.
|
|
10
|
+
*
|
|
11
|
+
* @experimental
|
|
12
12
|
*/
|
|
13
13
|
export interface TruncateConfig {
|
|
14
14
|
/** Number of tokens to keep as preview text. Defaults to 1,000. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../../../src/context-manager/methods/truncate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../../../src/context-manager/methods/truncate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAa,SAAS,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAG/E,eAAO,MAAM,gBAAgB,gBAAgB,CAAA;AAK7C;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAA;CACvC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,MAAM,CA+BlG;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,eAAe,CA8BxG;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAMtF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truncate.js","sourceRoot":"","sources":["../../../../src/context-manager/methods/truncate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"truncate.js","sourceRoot":"","sources":["../../../../src/context-manager/methods/truncate.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,11 +8,11 @@ import type { MiddlewareInputHandler } from '../../../middleware/types.js';
|
|
|
8
8
|
export declare const summarizeContextTool: import("../../../index.js").InvokableTool<{
|
|
9
9
|
keepRecent?: number | undefined;
|
|
10
10
|
summaryRatio?: number | undefined;
|
|
11
|
-
messageType?: "tools" | "
|
|
11
|
+
messageType?: "tools" | "all" | "messages" | undefined;
|
|
12
12
|
}, string>;
|
|
13
13
|
export declare const truncateContextTool: import("../../../index.js").InvokableTool<{
|
|
14
14
|
keepRecent?: number | undefined;
|
|
15
|
-
messageType?: "tools" | "
|
|
15
|
+
messageType?: "tools" | "all" | "messages" | undefined;
|
|
16
16
|
}, string>;
|
|
17
17
|
export declare function createTokenUsageMiddleware(): MiddlewareInputHandler<InvokeModelContext>;
|
|
18
18
|
export declare const pinContextTool: import("../../../index.js").InvokableTool<{
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retrieval tool for accessing stashed (L1) content.
|
|
3
|
+
*
|
|
4
|
+
* Registered automatically when the ContextManager has storage configured.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
import type { Tool } from '../tools/tool.js';
|
|
9
|
+
import { Message } from '../types/messages.js';
|
|
10
|
+
import type { Stash } from './stash.js';
|
|
11
|
+
export declare const RETRIEVAL_TOOL_NAME = "retrieve_context";
|
|
12
|
+
/**
|
|
13
|
+
* Creates the retrieval tool for the given stash.
|
|
14
|
+
*
|
|
15
|
+
* @param stash - The stash instance to retrieve from
|
|
16
|
+
* @param maxResultTokens - Maximum tokens in the retrieval result
|
|
17
|
+
* @returns A Tool that can retrieve stashed content
|
|
18
|
+
*
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
export declare function createRetrievalTool(stash: Stash, maxResultTokens?: number): Tool;
|
|
22
|
+
/**
|
|
23
|
+
* Tracks toolUseIds from retrieval tool invocations so their results
|
|
24
|
+
* can be excluded from stashing (prevents retrieval loops).
|
|
25
|
+
*
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export declare function trackRetrievalToolUseIds(message: Message, skipSet: Set<string>): void;
|
|
29
|
+
//# sourceMappingURL=retrieval-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retrieval-tool.d.ts","sourceRoot":"","sources":["../../../src/context-manager/retrieval-tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAgB,MAAM,sBAAsB,CAAA;AAC5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC,eAAO,MAAM,mBAAmB,qBAAqB,CAAA;AAkBrD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CA2ChF;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAOrF"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retrieval tool for accessing stashed (L1) content.
|
|
3
|
+
*
|
|
4
|
+
* Registered automatically when the ContextManager has storage configured.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
import { tool } from '../tools/tool-factory.js';
|
|
10
|
+
import { isSearchableContent, searchContent } from '../vended-plugins/context-offloader/search.js';
|
|
11
|
+
import { Message, ToolUseBlock } from '../types/messages.js';
|
|
12
|
+
export const RETRIEVAL_TOOL_NAME = 'retrieve_context';
|
|
13
|
+
const DEFAULT_MAX_RESULT_TOKENS = 10_000;
|
|
14
|
+
const CHARS_PER_TOKEN = 4;
|
|
15
|
+
const retrievalInputSchema = z.object({
|
|
16
|
+
reference: z.string().describe('The reference key from the offload placeholder.'),
|
|
17
|
+
pattern: z.string().optional().describe('Regex or keyword to grep for. Returns matching lines with context.'),
|
|
18
|
+
line_range: z
|
|
19
|
+
.object({
|
|
20
|
+
start: z.number().int().min(1).describe('First line to return (1-indexed).'),
|
|
21
|
+
end: z.number().int().min(1).describe('Last line to return (1-indexed).'),
|
|
22
|
+
})
|
|
23
|
+
.optional()
|
|
24
|
+
.describe('Return only this span of lines.'),
|
|
25
|
+
context_lines: z.number().int().min(0).optional().describe('Lines of context around each match (default: 5).'),
|
|
26
|
+
});
|
|
27
|
+
/**
|
|
28
|
+
* Creates the retrieval tool for the given stash.
|
|
29
|
+
*
|
|
30
|
+
* @param stash - The stash instance to retrieve from
|
|
31
|
+
* @param maxResultTokens - Maximum tokens in the retrieval result
|
|
32
|
+
* @returns A Tool that can retrieve stashed content
|
|
33
|
+
*
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
export function createRetrievalTool(stash, maxResultTokens) {
|
|
37
|
+
const maxChars = (maxResultTokens ?? DEFAULT_MAX_RESULT_TOKENS) * CHARS_PER_TOKEN;
|
|
38
|
+
return tool({
|
|
39
|
+
name: RETRIEVAL_TOOL_NAME,
|
|
40
|
+
description: 'Retrieve content that was offloaded from context.\n\n' +
|
|
41
|
+
'When content is offloaded (truncated, dropped, or summarized), the original is ' +
|
|
42
|
+
'persisted and a reference key is left in its place. Use this tool with that ' +
|
|
43
|
+
'reference to access the original content.\n\n' +
|
|
44
|
+
'Options:\n' +
|
|
45
|
+
' - pattern: regex/keyword to find matching lines with context\n' +
|
|
46
|
+
' - line_range: { start, end } to read a specific span\n' +
|
|
47
|
+
' - Without pattern/line_range: returns the full original content\n\n' +
|
|
48
|
+
'Examples:\n' +
|
|
49
|
+
' { reference: "1_toolu_abc_0", pattern: "error" }\n' +
|
|
50
|
+
' { reference: "1_toolu_abc_0", line_range: { start: 10, end: 25 } }\n' +
|
|
51
|
+
' { reference: "1_toolu_abc_0" }',
|
|
52
|
+
inputSchema: retrievalInputSchema,
|
|
53
|
+
callback: async (input) => {
|
|
54
|
+
const result = await stash.retrieve(input.reference);
|
|
55
|
+
if (!result) {
|
|
56
|
+
return `Error: reference not found: ${input.reference}`;
|
|
57
|
+
}
|
|
58
|
+
if (!input.pattern && !input.line_range) {
|
|
59
|
+
return result.data;
|
|
60
|
+
}
|
|
61
|
+
const text = extractText(result.data);
|
|
62
|
+
if (!text || !isSearchableContent('text/plain')) {
|
|
63
|
+
return `Error: cannot search non-text content. Omit pattern/line_range to retrieve full content.`;
|
|
64
|
+
}
|
|
65
|
+
const contextLines = input.context_lines ?? 5;
|
|
66
|
+
return searchContent(text, { pattern: input.pattern, line_range: input.line_range, context_lines: contextLines }, maxChars);
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Tracks toolUseIds from retrieval tool invocations so their results
|
|
72
|
+
* can be excluded from stashing (prevents retrieval loops).
|
|
73
|
+
*
|
|
74
|
+
* @internal
|
|
75
|
+
*/
|
|
76
|
+
export function trackRetrievalToolUseIds(message, skipSet) {
|
|
77
|
+
if (message.role !== 'assistant')
|
|
78
|
+
return;
|
|
79
|
+
for (const block of message.content) {
|
|
80
|
+
if (block instanceof ToolUseBlock && block.name === RETRIEVAL_TOOL_NAME) {
|
|
81
|
+
skipSet.add(block.toolUseId);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function extractText(data) {
|
|
86
|
+
if (typeof data === 'string')
|
|
87
|
+
return data;
|
|
88
|
+
if (data && typeof data === 'object') {
|
|
89
|
+
if ('text' in data && typeof data.text === 'string') {
|
|
90
|
+
return data.text;
|
|
91
|
+
}
|
|
92
|
+
if ('json' in data) {
|
|
93
|
+
return JSON.stringify(data.json, null, 2);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=retrieval-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retrieval-tool.js","sourceRoot":"","sources":["../../../src/context-manager/retrieval-tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAA;AAGlG,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAG5D,MAAM,CAAC,MAAM,mBAAmB,GAAG,kBAAkB,CAAA;AAErD,MAAM,yBAAyB,GAAG,MAAM,CAAA;AACxC,MAAM,eAAe,GAAG,CAAC,CAAA;AAEzB,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IACjF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;IAC7G,UAAU,EAAE,CAAC;SACV,MAAM,CAAC;QACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAC5E,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC;KAC1E,CAAC;SACD,QAAQ,EAAE;SACV,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;CAC/G,CAAC,CAAA;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAY,EAAE,eAAwB;IACxE,MAAM,QAAQ,GAAG,CAAC,eAAe,IAAI,yBAAyB,CAAC,GAAG,eAAe,CAAA;IAEjF,OAAO,IAAI,CAAC;QACV,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,uDAAuD;YACvD,iFAAiF;YACjF,8EAA8E;YAC9E,+CAA+C;YAC/C,YAAY;YACZ,kEAAkE;YAClE,0DAA0D;YAC1D,uEAAuE;YACvE,aAAa;YACb,sDAAsD;YACtD,wEAAwE;YACxE,kCAAkC;QACpC,WAAW,EAAE,oBAAoB;QACjC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACxB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YACpD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,+BAA+B,KAAK,CAAC,SAAS,EAAE,CAAA;YACzD,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;gBACxC,OAAO,MAAM,CAAC,IAAiB,CAAA;YACjC,CAAC;YAED,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACrC,IAAI,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChD,OAAO,0FAA0F,CAAA;YACnG,CAAC;YAED,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,IAAI,CAAC,CAAA;YAE7C,OAAO,aAAa,CAClB,IAAI,EACJ,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,EACrF,QAAQ,CACT,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAgB,EAAE,OAAoB;IAC7E,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;QAAE,OAAM;IACxC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAa;IAChC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IACzC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrC,IAAI,MAAM,IAAI,IAAI,IAAI,OAAQ,IAAgC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjF,OAAQ,IAAgC,CAAC,IAAc,CAAA;QACzD,CAAC;QACD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,SAAS,CAAE,IAAgC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QACxE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* L1 stash: durable storage for offloaded context content.
|
|
3
|
+
*
|
|
4
|
+
* When the ContextManager offloads content from the context window, the
|
|
5
|
+
* original is persisted here so the agent can retrieve it on demand via the
|
|
6
|
+
* retrieval tool.
|
|
7
|
+
*
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
import { type Storage } from '../storage/storage.js';
|
|
11
|
+
import { Message } from '../types/messages.js';
|
|
12
|
+
import type { ContentBlock } from '../types/messages.js';
|
|
13
|
+
import type { JSONValue } from '../types/json.js';
|
|
14
|
+
/** @internal */
|
|
15
|
+
export declare const STASH_PREFIX = "context";
|
|
16
|
+
/** Format stash refs for display in placeholders. Returns '' when refs is empty. */
|
|
17
|
+
export declare function formatStashRefs(refs: string[]): string;
|
|
18
|
+
/**
|
|
19
|
+
* Wraps a Storage backend with key management and content framing for the
|
|
20
|
+
* ContextManager's L1 stash.
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export declare class Stash {
|
|
25
|
+
private readonly _storage;
|
|
26
|
+
private readonly _baseStorage;
|
|
27
|
+
private readonly _sessionId;
|
|
28
|
+
/** Name of the base storage constructor, for diagnostic logging. */
|
|
29
|
+
readonly storageTypeName: string;
|
|
30
|
+
constructor(storage: Storage, sessionId: string, agentId: string);
|
|
31
|
+
/**
|
|
32
|
+
* Store a serialized block and return a deterministic reference key.
|
|
33
|
+
*
|
|
34
|
+
* Keys are deterministic (`<id>_<blockIndex>`) so they can be recomputed
|
|
35
|
+
* via {@link refsFor} after a process restart or snapshot restore.
|
|
36
|
+
*
|
|
37
|
+
* @param id - Identifier component for the key (e.g. toolUseId)
|
|
38
|
+
* @param blockIndex - Index of the block within the tool result
|
|
39
|
+
* @param data - Serialized bytes to persist
|
|
40
|
+
* @returns Reference key for retrieval
|
|
41
|
+
*/
|
|
42
|
+
store(id: string, blockIndex: number, data: Uint8Array): Promise<string>;
|
|
43
|
+
/**
|
|
44
|
+
* Compute the deterministic reference keys for a content block.
|
|
45
|
+
*
|
|
46
|
+
* For a {@link ToolResultBlock}, returns one key per inner content item
|
|
47
|
+
* (`<toolUseId>_<i>`). For any other block, returns a single key
|
|
48
|
+
* (`<trackingId>_<blockIndex>`).
|
|
49
|
+
*
|
|
50
|
+
* @param block - The content block
|
|
51
|
+
* @param message - The message containing the block
|
|
52
|
+
* @param blockIndex - Index of the block within the message
|
|
53
|
+
* @returns Array of reference keys
|
|
54
|
+
*/
|
|
55
|
+
refsFor(block: ContentBlock, message: Message, blockIndex: number): string[];
|
|
56
|
+
/**
|
|
57
|
+
* Eagerly stash all content from a message on arrival.
|
|
58
|
+
* Called via MessageAddedEvent so content is persisted before any strategy runs.
|
|
59
|
+
*
|
|
60
|
+
* @param message - The message whose content should be persisted
|
|
61
|
+
* @param skipToolUseIds - ToolUseIds to skip (e.g. retrieval tool results)
|
|
62
|
+
*/
|
|
63
|
+
storeMessage(message: Message, skipToolUseIds?: ReadonlySet<string>): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Retrieve previously stashed content as its serialized JSON form.
|
|
66
|
+
*
|
|
67
|
+
* @param reference - Key returned by a previous store call
|
|
68
|
+
* @returns The deserialized block data (from `toJSON()`), or null if not found
|
|
69
|
+
*/
|
|
70
|
+
retrieve(reference: string): Promise<{
|
|
71
|
+
data: unknown;
|
|
72
|
+
} | null>;
|
|
73
|
+
/**
|
|
74
|
+
* List all stashed references.
|
|
75
|
+
*/
|
|
76
|
+
list(): Promise<string[]>;
|
|
77
|
+
/**
|
|
78
|
+
* Delete a stashed entry.
|
|
79
|
+
*/
|
|
80
|
+
delete(reference: string): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Delete all entries in this stash instance.
|
|
83
|
+
*/
|
|
84
|
+
clear(): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Delete all stash data for this session across all agents.
|
|
87
|
+
*
|
|
88
|
+
* Unlike {@link clear}, which is scoped to this agent's namespace,
|
|
89
|
+
* this scans `context/<sessionId>/` on the base storage to catch data
|
|
90
|
+
* from every agent that wrote to the session.
|
|
91
|
+
*/
|
|
92
|
+
clearSession(): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Serialize all stash entries into a plain object for snapshot persistence.
|
|
95
|
+
*
|
|
96
|
+
* @returns Map of reference keys to their stored JSON values
|
|
97
|
+
*/
|
|
98
|
+
takeSnapshot(): Promise<Record<string, JSONValue>>;
|
|
99
|
+
/**
|
|
100
|
+
* Restore stash entries from a previously captured snapshot.
|
|
101
|
+
*
|
|
102
|
+
* @param entries - Map of reference keys to their JSON values (from {@link takeSnapshot})
|
|
103
|
+
*/
|
|
104
|
+
loadSnapshot(entries: Record<string, JSONValue>): Promise<void>;
|
|
105
|
+
private _storeToolResult;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=stash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stash.d.ts","sourceRoot":"","sources":["../../../src/context-manager/stash.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAiC,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACnF,OAAO,EAAE,OAAO,EAAkE,MAAM,sBAAsB,CAAA;AAC9G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAGjD,gBAAgB;AAChB,eAAO,MAAM,YAAY,YAAY,CAAA;AAUrC,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAItD;AAED;;;;;GAKG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IAEnC,oEAAoE;IACpE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;gBAEpB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAOhE;;;;;;;;;;OAUG;IACG,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAM9E;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAO5E;;;;;;OAMG;IACG,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBzF;;;;;OAKG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAMpE;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI/B;;OAEG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;;;;;OAMG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAMnC;;;;OAIG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAYxD;;;;OAIG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAIvD,gBAAgB;CAM/B"}
|