@amodalai/runtime 0.2.0 → 0.2.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.
- package/dist/src/__fixtures__/README.md +4 -0
- package/dist/src/__fixtures__/e2e.test.d.ts +6 -0
- package/dist/src/__fixtures__/e2e.test.js +211 -0
- package/dist/src/__fixtures__/e2e.test.js.map +1 -0
- package/dist/src/__fixtures__/smoke-agent/automations/delivery-callback-test.json +9 -0
- package/dist/src/__fixtures__/smoke-agent/connections/mock-mcp/spec.json +1 -1
- package/dist/src/__fixtures__/smoke.test.js +715 -29
- package/dist/src/__fixtures__/smoke.test.js.map +1 -1
- package/dist/src/__fixtures__/test-env.d.ts +27 -0
- package/dist/src/__fixtures__/test-env.js +64 -0
- package/dist/src/__fixtures__/test-env.js.map +1 -0
- package/dist/src/__fixtures__/test-helpers.d.ts +30 -0
- package/dist/src/__fixtures__/test-helpers.js +120 -0
- package/dist/src/__fixtures__/test-helpers.js.map +1 -0
- package/dist/src/agent/agent-types.d.ts +22 -0
- package/dist/src/agent/agent-types.js.map +1 -1
- package/dist/src/agent/automation-bridge.d.ts +9 -0
- package/dist/src/agent/automation-bridge.js +26 -0
- package/dist/src/agent/automation-bridge.js.map +1 -1
- package/dist/src/agent/automation-bridge.test.js +63 -0
- package/dist/src/agent/automation-bridge.test.js.map +1 -1
- package/dist/src/agent/local-server.d.ts +0 -7
- package/dist/src/agent/local-server.js +230 -86
- package/dist/src/agent/local-server.js.map +1 -1
- package/dist/src/agent/local-server.test.js +14 -8
- package/dist/src/agent/local-server.test.js.map +1 -1
- package/dist/src/agent/loop-types.d.ts +81 -2
- package/dist/src/agent/loop-types.js +4 -0
- package/dist/src/agent/loop-types.js.map +1 -1
- package/dist/src/agent/loop.js +16 -3
- package/dist/src/agent/loop.js.map +1 -1
- package/dist/src/agent/loop.test.js +572 -8
- package/dist/src/agent/loop.test.js.map +1 -1
- package/dist/src/agent/proactive/delivery-router.d.ts +68 -0
- package/dist/src/agent/proactive/delivery-router.js +337 -0
- package/dist/src/agent/proactive/delivery-router.js.map +1 -0
- package/dist/src/agent/proactive/delivery-router.test.d.ts +6 -0
- package/dist/src/agent/proactive/delivery-router.test.js +455 -0
- package/dist/src/agent/proactive/delivery-router.test.js.map +1 -0
- package/dist/src/agent/proactive/proactive-runner.d.ts +23 -1
- package/dist/src/agent/proactive/proactive-runner.js +42 -10
- package/dist/src/agent/proactive/proactive-runner.js.map +1 -1
- package/dist/src/agent/proactive/proactive-runner.test.js +0 -2
- package/dist/src/agent/proactive/proactive-runner.test.js.map +1 -1
- package/dist/src/agent/routes/admin-chat-abort.test.d.ts +6 -0
- package/dist/src/agent/routes/admin-chat-abort.test.js +206 -0
- package/dist/src/agent/routes/admin-chat-abort.test.js.map +1 -0
- package/dist/src/agent/routes/admin-chat.js +0 -2
- package/dist/src/agent/routes/admin-chat.js.map +1 -1
- package/dist/src/agent/routes/task.test.js +0 -2
- package/dist/src/agent/routes/task.test.js.map +1 -1
- package/dist/src/agent/snapshot-server.js +0 -2
- package/dist/src/agent/snapshot-server.js.map +1 -1
- package/dist/src/agent/states/compacting.js +5 -3
- package/dist/src/agent/states/compacting.js.map +1 -1
- package/dist/src/agent/states/confirming.js +3 -0
- package/dist/src/agent/states/confirming.js.map +1 -1
- package/dist/src/agent/states/dispatching.js +45 -1
- package/dist/src/agent/states/dispatching.js.map +1 -1
- package/dist/src/agent/states/executing.js +225 -81
- package/dist/src/agent/states/executing.js.map +1 -1
- package/dist/src/agent/states/streaming.js +14 -0
- package/dist/src/agent/states/streaming.js.map +1 -1
- package/dist/src/agent/states/thinking.d.ts +1 -1
- package/dist/src/agent/states/thinking.js +246 -29
- package/dist/src/agent/states/thinking.js.map +1 -1
- package/dist/src/agent/token-estimate.d.ts +20 -6
- package/dist/src/agent/token-estimate.js +24 -3
- package/dist/src/agent/token-estimate.js.map +1 -1
- package/dist/src/agent/token-estimate.test.d.ts +6 -0
- package/dist/src/agent/token-estimate.test.js +44 -0
- package/dist/src/agent/token-estimate.test.js.map +1 -0
- package/dist/src/api/create-agent.js +0 -3
- package/dist/src/api/create-agent.js.map +1 -1
- package/dist/src/api/types.d.ts +0 -2
- package/dist/src/env-ref.d.ts +13 -0
- package/dist/src/env-ref.js +31 -0
- package/dist/src/env-ref.js.map +1 -0
- package/dist/src/env-ref.test.d.ts +6 -0
- package/dist/src/env-ref.test.js +34 -0
- package/dist/src/env-ref.test.js.map +1 -0
- package/dist/src/errors.d.ts +15 -0
- package/dist/src/errors.js +22 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/errors.test.js +2 -2
- package/dist/src/errors.test.js.map +1 -1
- package/dist/src/events/event-bus.d.ts +54 -0
- package/dist/src/events/event-bus.js +84 -0
- package/dist/src/events/event-bus.js.map +1 -0
- package/dist/src/events/event-bus.test.d.ts +6 -0
- package/dist/src/events/event-bus.test.js +112 -0
- package/dist/src/events/event-bus.test.js.map +1 -0
- package/dist/src/events/events-route.d.ts +36 -0
- package/dist/src/events/events-route.js +80 -0
- package/dist/src/events/events-route.js.map +1 -0
- package/dist/src/events/events-route.test.d.ts +6 -0
- package/dist/src/events/events-route.test.js +134 -0
- package/dist/src/events/events-route.test.js.map +1 -0
- package/dist/src/events/store-event-wrapper.d.ts +19 -0
- package/dist/src/events/store-event-wrapper.js +57 -0
- package/dist/src/events/store-event-wrapper.js.map +1 -0
- package/dist/src/events/store-event-wrapper.test.d.ts +6 -0
- package/dist/src/events/store-event-wrapper.test.js +91 -0
- package/dist/src/events/store-event-wrapper.test.js.map +1 -0
- package/dist/src/middleware/auth.d.ts +0 -2
- package/dist/src/middleware/auth.js.map +1 -1
- package/dist/src/providers/search-provider.d.ts +64 -0
- package/dist/src/providers/search-provider.js +174 -0
- package/dist/src/providers/search-provider.js.map +1 -0
- package/dist/src/providers/types.d.ts +8 -0
- package/dist/src/routes/ai-stream.d.ts +15 -0
- package/dist/src/routes/ai-stream.js +9 -0
- package/dist/src/routes/ai-stream.js.map +1 -1
- package/dist/src/routes/chat-stream.d.ts +6 -0
- package/dist/src/routes/chat-stream.js +2 -0
- package/dist/src/routes/chat-stream.js.map +1 -1
- package/dist/src/routes/chat.d.ts +6 -0
- package/dist/src/routes/chat.js +2 -0
- package/dist/src/routes/chat.js.map +1 -1
- package/dist/src/routes/session-resolver.d.ts +5 -0
- package/dist/src/routes/session-resolver.js +1 -15
- package/dist/src/routes/session-resolver.js.map +1 -1
- package/dist/src/routes/session-resolver.test.js +7 -6
- package/dist/src/routes/session-resolver.test.js.map +1 -1
- package/dist/src/server.d.ts +6 -0
- package/dist/src/server.js +2 -0
- package/dist/src/server.js.map +1 -1
- package/dist/src/session/drizzle-session-store.d.ts +56 -0
- package/dist/src/session/drizzle-session-store.js +203 -0
- package/dist/src/session/drizzle-session-store.js.map +1 -0
- package/dist/src/session/manager.d.ts +6 -3
- package/dist/src/session/manager.js +46 -16
- package/dist/src/session/manager.js.map +1 -1
- package/dist/src/session/manager.test.js +12 -18
- package/dist/src/session/manager.test.js.map +1 -1
- package/dist/src/session/pglite-session-store.d.ts +23 -0
- package/dist/src/session/pglite-session-store.js +70 -0
- package/dist/src/session/pglite-session-store.js.map +1 -0
- package/dist/src/session/postgres-session-store.d.ts +44 -0
- package/dist/src/session/postgres-session-store.js +138 -0
- package/dist/src/session/postgres-session-store.js.map +1 -0
- package/dist/src/session/session-builder.d.ts +0 -2
- package/dist/src/session/session-builder.js +22 -2
- package/dist/src/session/session-builder.js.map +1 -1
- package/dist/src/session/session-builder.test.js +0 -2
- package/dist/src/session/session-builder.test.js.map +1 -1
- package/dist/src/session/session-store-selector.d.ts +49 -0
- package/dist/src/session/session-store-selector.js +60 -0
- package/dist/src/session/session-store-selector.js.map +1 -0
- package/dist/src/session/session-store-selector.test.d.ts +6 -0
- package/dist/src/session/session-store-selector.test.js +79 -0
- package/dist/src/session/session-store-selector.test.js.map +1 -0
- package/dist/src/session/store.d.ts +146 -32
- package/dist/src/session/store.js +126 -138
- package/dist/src/session/store.js.map +1 -1
- package/dist/src/session/store.test.js +385 -107
- package/dist/src/session/store.test.js.map +1 -1
- package/dist/src/session/tool-context-factory.d.ts +3 -2
- package/dist/src/session/tool-context-factory.js +1 -2
- package/dist/src/session/tool-context-factory.js.map +1 -1
- package/dist/src/session/tool-context-factory.test.js +1 -4
- package/dist/src/session/tool-context-factory.test.js.map +1 -1
- package/dist/src/session/types.d.ts +13 -6
- package/dist/src/stores/schema.d.ts +0 -34
- package/dist/src/stores/schema.js +6 -4
- package/dist/src/stores/schema.js.map +1 -1
- package/dist/src/tools/admin-file-tools.d.ts +29 -0
- package/dist/src/tools/admin-file-tools.js +525 -11
- package/dist/src/tools/admin-file-tools.js.map +1 -1
- package/dist/src/tools/admin-file-tools.test.js +373 -4
- package/dist/src/tools/admin-file-tools.test.js.map +1 -1
- package/dist/src/tools/custom-tool-adapter.test.js +0 -1
- package/dist/src/tools/custom-tool-adapter.test.js.map +1 -1
- package/dist/src/tools/dispatch-tool.d.ts +4 -4
- package/dist/src/tools/fetch-url-tool.d.ts +23 -0
- package/dist/src/tools/fetch-url-tool.js +333 -0
- package/dist/src/tools/fetch-url-tool.js.map +1 -0
- package/dist/src/tools/fetch-url-tool.test.d.ts +6 -0
- package/dist/src/tools/fetch-url-tool.test.js +228 -0
- package/dist/src/tools/fetch-url-tool.test.js.map +1 -0
- package/dist/src/tools/mcp-tool-adapter.test.js +0 -1
- package/dist/src/tools/mcp-tool-adapter.test.js.map +1 -1
- package/dist/src/tools/registry.test.js +0 -1
- package/dist/src/tools/registry.test.js.map +1 -1
- package/dist/src/tools/request-tool.test.js +0 -1
- package/dist/src/tools/request-tool.test.js.map +1 -1
- package/dist/src/tools/store-tools.test.js +0 -1
- package/dist/src/tools/store-tools.test.js.map +1 -1
- package/dist/src/tools/types.d.ts +20 -2
- package/dist/src/tools/web-search-tool.d.ts +31 -0
- package/dist/src/tools/web-search-tool.js +170 -0
- package/dist/src/tools/web-search-tool.js.map +1 -0
- package/dist/src/tools/web-search-tool.test.d.ts +6 -0
- package/dist/src/tools/web-search-tool.test.js +153 -0
- package/dist/src/tools/web-search-tool.test.js.map +1 -0
- package/dist/src/tools/web-tools-shared.d.ts +21 -0
- package/dist/src/tools/web-tools-shared.js +32 -0
- package/dist/src/tools/web-tools-shared.js.map +1 -0
- package/dist/src/types.d.ts +20 -0
- package/dist/src/types.js +13 -0
- package/dist/src/types.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +17 -3
- package/dist/src/agent/session-store.d.ts +0 -71
- package/dist/src/agent/session-store.js +0 -151
- package/dist/src/agent/session-store.js.map +0 -1
- package/dist/src/session/admin-file-tools.d.ts +0 -136
- package/dist/src/session/admin-file-tools.js +0 -240
- package/dist/src/session/admin-file-tools.js.map +0 -1
|
@@ -4,17 +4,27 @@
|
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
*/
|
|
6
6
|
import { SSEEventType } from '../../types.js';
|
|
7
|
-
/**
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
/** Content markers for cleared tool results. Original toolCallId and
|
|
8
|
+
* toolName are preserved so assistant tool-calls still pair with their
|
|
9
|
+
* results (providers reject orphaned tool_use blocks). */
|
|
10
10
|
const CLEARED_TOOL_RESULT_TEXT = '[Tool result cleared to save context space]';
|
|
11
|
+
/** Prefix used on every cleared/summarized marker — lets us detect
|
|
12
|
+
* already-cleared messages idempotently. */
|
|
13
|
+
const CLEARED_TEXT_PREFIXES = ['[Tool result cleared', '[Summary of '];
|
|
14
|
+
/**
|
|
15
|
+
* Max length (chars) at which a summary-prefix match counts as
|
|
16
|
+
* "already cleared." A short marker is almost certainly one of ours;
|
|
17
|
+
* a long payload that happens to start with "[Summary of " is more
|
|
18
|
+
* likely legit tool output, so we re-summarize it rather than assume.
|
|
19
|
+
*/
|
|
20
|
+
const CLEARED_MARKER_MAX_LEN = 500;
|
|
11
21
|
/**
|
|
12
22
|
* Handle the THINKING state.
|
|
13
23
|
*
|
|
14
24
|
* Increments turnCount, checks for loops, clears old results,
|
|
15
25
|
* then initiates a streaming LLM call.
|
|
16
26
|
*/
|
|
17
|
-
export function handleThinking(state, ctx) {
|
|
27
|
+
export async function handleThinking(state, ctx) {
|
|
18
28
|
const effects = [];
|
|
19
29
|
// 1. Increment turn counter
|
|
20
30
|
ctx.turnCount++;
|
|
@@ -35,28 +45,62 @@ export function handleThinking(state, ctx) {
|
|
|
35
45
|
}],
|
|
36
46
|
};
|
|
37
47
|
}
|
|
38
|
-
|
|
39
|
-
|
|
48
|
+
// Clear old tool result bodies and persist back to ctx. Without this
|
|
49
|
+
// writeback, every subsequent turn re-calls the summarizer hook for the
|
|
50
|
+
// same messages (expensive). Once a result is cleared, it stays cleared.
|
|
51
|
+
// Must happen before turn-specific warnings are appended, since warnings
|
|
52
|
+
// are local-to-this-turn and should not persist.
|
|
53
|
+
ctx.messages = await clearOldToolResults(state.messages, ctx);
|
|
54
|
+
let messages = ctx.messages;
|
|
55
|
+
// Purge any disabled-tool entries whose cooldown has expired, so a tool
|
|
56
|
+
// re-entering the tool set is available to the model again.
|
|
57
|
+
for (const [name, untilTurn] of ctx.disabledToolsUntilTurn) {
|
|
58
|
+
if (ctx.turnCount >= untilTurn)
|
|
59
|
+
ctx.disabledToolsUntilTurn.delete(name);
|
|
60
|
+
}
|
|
61
|
+
if (loop && loop.count >= ctx.config.loopEscalationThreshold) {
|
|
62
|
+
// Escalation tier: strongly nudge the model AND disable the looping
|
|
63
|
+
// tool for a cooldown window. Without the cooldown, the agent could
|
|
64
|
+
// immediately re-call the tool next turn, drop the loop count below
|
|
65
|
+
// threshold, and keep oscillating.
|
|
66
|
+
const cooldown = ctx.config.loopEscalationCooldownTurns;
|
|
67
|
+
const untilTurn = ctx.turnCount + cooldown;
|
|
68
|
+
ctx.disabledToolsUntilTurn.set(loop.toolName, untilTurn);
|
|
69
|
+
ctx.logger.warn('agent_loop_escalation', {
|
|
70
|
+
session: ctx.sessionId,
|
|
71
|
+
tool: loop.toolName,
|
|
72
|
+
count: loop.count,
|
|
73
|
+
cooldownTurns: cooldown,
|
|
74
|
+
disabledUntilTurn: untilTurn,
|
|
75
|
+
});
|
|
76
|
+
const escalationMessage = {
|
|
77
|
+
role: 'user',
|
|
78
|
+
content: `[System Notice — Escalation] You have called ${loop.toolName} ${loop.count} times with similar parameters and are not making progress. The ${loop.toolName} tool has been temporarily disabled for the next ${cooldown} turns — use a different tool or ask the user for help.`,
|
|
79
|
+
};
|
|
80
|
+
messages = [...messages, escalationMessage];
|
|
81
|
+
}
|
|
82
|
+
else if (loop && loop.count >= ctx.config.loopWarningThreshold) {
|
|
40
83
|
ctx.logger.info('agent_loop_warning', {
|
|
41
84
|
session: ctx.sessionId,
|
|
42
85
|
tool: loop.toolName,
|
|
43
86
|
count: loop.count,
|
|
44
87
|
});
|
|
45
88
|
const warningMessage = {
|
|
46
|
-
role: '
|
|
47
|
-
content: `[Warning] You have called ${loop.toolName} ${loop.count} times with similar parameters. Try a different approach.`,
|
|
89
|
+
role: 'user',
|
|
90
|
+
content: `[System Notice — Warning] You have called ${loop.toolName} ${loop.count} times with similar parameters. Try a different approach.`,
|
|
48
91
|
};
|
|
49
92
|
messages = [...messages, warningMessage];
|
|
50
93
|
}
|
|
51
|
-
// 3. Clear old tool result bodies — keep last N full, replace older with summaries
|
|
52
|
-
// Prevents unbounded context growth in tool-heavy sessions.
|
|
53
|
-
messages = clearOldToolResults(messages, ctx.config.clearThreshold, ctx.config.keepRecentResults);
|
|
54
94
|
// 4. Build tool schemas for the AI SDK (strip execute functions — we handle
|
|
55
95
|
// execution ourselves in EXECUTING state with permission checks, SSE events, etc.)
|
|
56
96
|
// AI SDK v6 uses `inputSchema`, not `parameters`.
|
|
57
97
|
const allTools = ctx.toolRegistry.getTools();
|
|
58
98
|
const tools = {};
|
|
59
99
|
for (const [name, def] of Object.entries(allTools)) {
|
|
100
|
+
// Skip tools that escalation has disabled for a cooldown window.
|
|
101
|
+
const disabledUntil = ctx.disabledToolsUntilTurn.get(name);
|
|
102
|
+
if (disabledUntil !== undefined && ctx.turnCount < disabledUntil)
|
|
103
|
+
continue;
|
|
60
104
|
// ToolDefinition.parameters is either a Zod schema or FlexibleSchema —
|
|
61
105
|
// both are accepted by AI SDK as inputSchema.
|
|
62
106
|
tools[name] = {
|
|
@@ -128,6 +172,24 @@ function detectLoop(messages) {
|
|
|
128
172
|
}
|
|
129
173
|
return null;
|
|
130
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Known pagination / iteration parameter names. Calls that differ ONLY
|
|
177
|
+
* in these keys are legitimate iteration (walking a file in chunks,
|
|
178
|
+
* paging through a result set) and must NOT count toward loop detection.
|
|
179
|
+
*/
|
|
180
|
+
const PAGINATION_KEYS = new Set([
|
|
181
|
+
'offset',
|
|
182
|
+
'limit',
|
|
183
|
+
'page',
|
|
184
|
+
'start_line',
|
|
185
|
+
'end_line',
|
|
186
|
+
'cursor',
|
|
187
|
+
'after',
|
|
188
|
+
'before',
|
|
189
|
+
'next_page_token',
|
|
190
|
+
'page_token',
|
|
191
|
+
'skip',
|
|
192
|
+
]);
|
|
131
193
|
/**
|
|
132
194
|
* Count the size of the largest group of similar argument sets.
|
|
133
195
|
*
|
|
@@ -135,6 +197,11 @@ function detectLoop(messages) {
|
|
|
135
197
|
* half their values are identical. This catches loops where the agent
|
|
136
198
|
* retries with slightly different parameters (e.g., changing a page number
|
|
137
199
|
* but keeping everything else the same).
|
|
200
|
+
*
|
|
201
|
+
* Exception: if two calls differ ONLY in pagination-ish keys (offset,
|
|
202
|
+
* limit, cursor, page, etc.), they represent legitimate iteration and
|
|
203
|
+
* are not counted as similar — otherwise read_repo_file pagination trips
|
|
204
|
+
* the detector after 3 offsets.
|
|
138
205
|
*/
|
|
139
206
|
function countSimilarCalls(argsList) {
|
|
140
207
|
if (argsList.length <= 2)
|
|
@@ -176,13 +243,19 @@ function countSimilarCalls(argsList) {
|
|
|
176
243
|
if (group.length < 3)
|
|
177
244
|
continue;
|
|
178
245
|
// Within a key group, count pairs with >50% identical values
|
|
179
|
-
// Use first element as reference and count how many are similar to it
|
|
246
|
+
// Use first element as reference and count how many are similar to it.
|
|
247
|
+
// Pagination variants (differ only in offset/limit/cursor/etc.) don't
|
|
248
|
+
// count — they represent legitimate iteration.
|
|
180
249
|
const ref = group[0];
|
|
181
250
|
const keys = Object.keys(ref);
|
|
182
251
|
let similarToRef = 1;
|
|
183
252
|
for (let i = 1; i < group.length; i++) {
|
|
184
|
-
const
|
|
185
|
-
|
|
253
|
+
const differingKeys = keys.filter((k) => JSON.stringify(ref[k]) !== JSON.stringify(group[i][k]));
|
|
254
|
+
const onlyPaginationDiffers = differingKeys.length > 0 && differingKeys.every((k) => PAGINATION_KEYS.has(k));
|
|
255
|
+
if (onlyPaginationDiffers)
|
|
256
|
+
continue;
|
|
257
|
+
const matchingCount = keys.length - differingKeys.length;
|
|
258
|
+
if (matchingCount >= keys.length / 2) {
|
|
186
259
|
similarToRef++;
|
|
187
260
|
}
|
|
188
261
|
}
|
|
@@ -196,12 +269,19 @@ function countSimilarCalls(argsList) {
|
|
|
196
269
|
/**
|
|
197
270
|
* Replace old tool result bodies with one-line summaries.
|
|
198
271
|
*
|
|
199
|
-
* If there are more than `
|
|
200
|
-
* `
|
|
201
|
-
*
|
|
202
|
-
*
|
|
272
|
+
* If there are more than `ctx.config.clearThreshold` tool result messages,
|
|
273
|
+
* keep the last `ctx.config.keepRecentResults` full and replace older ones
|
|
274
|
+
* with a cleared marker.
|
|
275
|
+
*
|
|
276
|
+
* When `ctx.summarizeToolResult` is provided, each newly-cleared message
|
|
277
|
+
* gets an LLM-generated 1-2 sentence summary of its body (in parallel).
|
|
278
|
+
* Already-cleared messages are skipped (idempotent). Summarization
|
|
279
|
+
* failures degrade to the static marker so context clearing never
|
|
280
|
+
* blocks the main loop.
|
|
203
281
|
*/
|
|
204
|
-
function clearOldToolResults(messages,
|
|
282
|
+
async function clearOldToolResults(messages, ctx) {
|
|
283
|
+
const threshold = ctx.config.clearThreshold;
|
|
284
|
+
const keepRecent = ctx.config.keepRecentResults;
|
|
205
285
|
// Count tool result messages
|
|
206
286
|
const toolResultIndices = [];
|
|
207
287
|
for (let i = 0; i < messages.length; i++) {
|
|
@@ -215,19 +295,156 @@ function clearOldToolResults(messages, threshold, keepRecent) {
|
|
|
215
295
|
}
|
|
216
296
|
// Keep the last `keepRecent` tool results full, clear the rest
|
|
217
297
|
const indicesToClear = toolResultIndices.slice(0, -keepRecent);
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
298
|
+
// Build one task per index — skip already-cleared (idempotent), summarize
|
|
299
|
+
// the rest. Tasks run through a bounded worker pool so we don't fan out
|
|
300
|
+
// 10+ concurrent summarizer calls into provider rate limits.
|
|
301
|
+
const clearOne = async (idx) => {
|
|
302
|
+
const existing = messages[idx];
|
|
303
|
+
// Already-cleared messages: keep the existing marker unchanged
|
|
304
|
+
if (isAlreadyCleared(existing))
|
|
305
|
+
return { idx, cleared: existing };
|
|
306
|
+
const toolCallId = extractToolCallId(existing);
|
|
307
|
+
const toolName = extractToolName(existing);
|
|
308
|
+
const body = extractToolResultText(existing);
|
|
309
|
+
const markerText = await summarizeOrFallback(toolName, body, ctx.summarizeToolResult, ctx.signal, ctx.config.summarizerTimeoutMs, ctx.logger, ctx.sessionId);
|
|
310
|
+
// CRITICAL: preserve the original toolCallId and toolName. Providers
|
|
311
|
+
// (Anthropic especially) require every assistant tool-call to have
|
|
312
|
+
// a matching tool-result with the same toolCallId; rewriting it
|
|
313
|
+
// breaks the conversation with "tool results are missing" errors.
|
|
314
|
+
return {
|
|
315
|
+
idx,
|
|
316
|
+
cleared: {
|
|
317
|
+
role: 'tool',
|
|
318
|
+
content: [{
|
|
319
|
+
type: 'tool-result',
|
|
320
|
+
toolCallId,
|
|
321
|
+
toolName,
|
|
322
|
+
output: { type: 'text', value: markerText },
|
|
323
|
+
}],
|
|
324
|
+
},
|
|
228
325
|
};
|
|
326
|
+
};
|
|
327
|
+
const resolved = await runWithConcurrency(indicesToClear, clearOne, ctx.config.summarizerConcurrency);
|
|
328
|
+
const result = [...messages];
|
|
329
|
+
for (const { idx, cleared } of resolved) {
|
|
229
330
|
result[idx] = cleared;
|
|
230
331
|
}
|
|
231
332
|
return result;
|
|
232
333
|
}
|
|
334
|
+
/**
|
|
335
|
+
* Execute `task(item)` for each item with a concurrency cap. Preserves
|
|
336
|
+
* input order in the returned results. Functionally equivalent to
|
|
337
|
+
* `Promise.all(items.map(task))` but bounded so we don't fan out into
|
|
338
|
+
* provider rate limits.
|
|
339
|
+
*
|
|
340
|
+
* `task` MUST NOT throw — a throwing task rejects Promise.all and leaves
|
|
341
|
+
* `undefined` holes in `results` for items after the failure point.
|
|
342
|
+
* Wrap fallible work in try/catch inside the task itself (as
|
|
343
|
+
* `summarizeOrFallback` does).
|
|
344
|
+
*/
|
|
345
|
+
async function runWithConcurrency(items, task, concurrency) {
|
|
346
|
+
const max = Math.max(1, concurrency);
|
|
347
|
+
const results = new Array(items.length);
|
|
348
|
+
let nextIndex = 0;
|
|
349
|
+
const worker = async () => {
|
|
350
|
+
while (true) {
|
|
351
|
+
const i = nextIndex++;
|
|
352
|
+
if (i >= items.length)
|
|
353
|
+
return;
|
|
354
|
+
results[i] = await task(items[i]);
|
|
355
|
+
}
|
|
356
|
+
};
|
|
357
|
+
const workers = [];
|
|
358
|
+
for (let w = 0; w < Math.min(max, items.length); w++) {
|
|
359
|
+
workers.push(worker());
|
|
360
|
+
}
|
|
361
|
+
await Promise.all(workers);
|
|
362
|
+
return results;
|
|
363
|
+
}
|
|
364
|
+
/** Extract the assistant-visible text from a tool-result message. */
|
|
365
|
+
function extractToolResultText(msg) {
|
|
366
|
+
if (msg.role !== 'tool')
|
|
367
|
+
return '';
|
|
368
|
+
if (typeof msg.content === 'string')
|
|
369
|
+
return msg.content;
|
|
370
|
+
if (!Array.isArray(msg.content))
|
|
371
|
+
return '';
|
|
372
|
+
const parts = [];
|
|
373
|
+
for (const part of msg.content) {
|
|
374
|
+
if ('output' in part && part.output && typeof part.output === 'object' && 'value' in part.output) {
|
|
375
|
+
const value = part.output.value;
|
|
376
|
+
if (typeof value === 'string')
|
|
377
|
+
parts.push(value);
|
|
378
|
+
else
|
|
379
|
+
parts.push(JSON.stringify(value));
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
return parts.join('\n');
|
|
383
|
+
}
|
|
384
|
+
/** Extract the original tool name from a tool-result message, if available. */
|
|
385
|
+
function extractToolName(msg) {
|
|
386
|
+
if (msg.role !== 'tool' || !Array.isArray(msg.content))
|
|
387
|
+
return 'unknown';
|
|
388
|
+
for (const part of msg.content) {
|
|
389
|
+
if ('toolName' in part && typeof part.toolName === 'string')
|
|
390
|
+
return part.toolName;
|
|
391
|
+
}
|
|
392
|
+
return 'unknown';
|
|
393
|
+
}
|
|
394
|
+
/** Extract the original toolCallId from a tool-result message. */
|
|
395
|
+
function extractToolCallId(msg) {
|
|
396
|
+
if (msg.role !== 'tool' || !Array.isArray(msg.content))
|
|
397
|
+
return 'unknown';
|
|
398
|
+
for (const part of msg.content) {
|
|
399
|
+
if ('toolCallId' in part && typeof part.toolCallId === 'string')
|
|
400
|
+
return part.toolCallId;
|
|
401
|
+
}
|
|
402
|
+
return 'unknown';
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* True if this message has already been replaced with a cleared marker.
|
|
406
|
+
* Detected by content prefix (we no longer overwrite toolCallId) with a
|
|
407
|
+
* length cap so a legit tool result that happens to start with "[Summary
|
|
408
|
+
* of " doesn't get silently skipped from summarization.
|
|
409
|
+
*/
|
|
410
|
+
function isAlreadyCleared(msg) {
|
|
411
|
+
if (msg.role !== 'tool' || !Array.isArray(msg.content))
|
|
412
|
+
return false;
|
|
413
|
+
for (const part of msg.content) {
|
|
414
|
+
if ('output' in part && part.output && typeof part.output === 'object' && 'value' in part.output) {
|
|
415
|
+
const value = part.output.value;
|
|
416
|
+
if (typeof value === 'string' && value.length <= CLEARED_MARKER_MAX_LEN) {
|
|
417
|
+
if (CLEARED_TEXT_PREFIXES.some((p) => value.startsWith(p)))
|
|
418
|
+
return true;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
return false;
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Produce replacement text for a cleared tool result. Uses the summarizer
|
|
426
|
+
* hook if provided; falls back to the static marker on any failure.
|
|
427
|
+
*/
|
|
428
|
+
async function summarizeOrFallback(toolName, content, summarize, signal, timeoutMs, logger, sessionId) {
|
|
429
|
+
if (!summarize || content.length === 0)
|
|
430
|
+
return CLEARED_TOOL_RESULT_TEXT;
|
|
431
|
+
// Bound the callback so a hung summarizer can never block the main loop.
|
|
432
|
+
// The session signal is ANDed in so a parent abort still tears this down.
|
|
433
|
+
const timeoutSignal = AbortSignal.any([signal, AbortSignal.timeout(timeoutMs)]);
|
|
434
|
+
try {
|
|
435
|
+
const summary = await summarize({ toolName, content, signal: timeoutSignal });
|
|
436
|
+
const trimmed = summary.trim();
|
|
437
|
+
if (trimmed.length === 0)
|
|
438
|
+
return CLEARED_TOOL_RESULT_TEXT;
|
|
439
|
+
return `[Summary of ${toolName}: ${trimmed}]`;
|
|
440
|
+
}
|
|
441
|
+
catch (err) {
|
|
442
|
+
logger.warn('tool_result_summarization_failed', {
|
|
443
|
+
session: sessionId,
|
|
444
|
+
tool: toolName,
|
|
445
|
+
error: err instanceof Error ? err.message : String(err),
|
|
446
|
+
});
|
|
447
|
+
return CLEARED_TOOL_RESULT_TEXT;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
233
450
|
//# sourceMappingURL=thinking.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thinking.js","sourceRoot":"","sources":["../../../../src/agent/states/thinking.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"thinking.js","sourceRoot":"","sources":["../../../../src/agent/states/thinking.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,14 +4,28 @@
|
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Token estimation from message arrays.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* The runtime's default count is a ~4 chars-per-token heuristic over the
|
|
10
|
+
* JSON-serialized messages — close enough for compaction decisions but
|
|
11
|
+
* not exact. When a provider implements `countTokens` (e.g. wiring a
|
|
12
|
+
* local `tiktoken` for OpenAI/Anthropic), the runtime delegates to it
|
|
13
|
+
* for higher fidelity.
|
|
12
14
|
*/
|
|
13
15
|
import type { ModelMessage } from 'ai';
|
|
16
|
+
import type { LLMProvider } from '../providers/types.js';
|
|
14
17
|
/**
|
|
15
|
-
*
|
|
18
|
+
* Estimate tokens for a message array.
|
|
19
|
+
*
|
|
20
|
+
* If `provider.countTokens` is implemented, delegates to it for a
|
|
21
|
+
* provider-native count. Otherwise falls back to the 4-chars-per-token
|
|
22
|
+
* heuristic over the serialized JSON — fine for compaction thresholds,
|
|
23
|
+
* but noticeably off for tool-heavy contexts.
|
|
24
|
+
*
|
|
25
|
+
* Results are memoized by message-array identity (WeakMap). Callers in
|
|
26
|
+
* the agent loop treat `ctx.messages` as immutable — every append creates
|
|
27
|
+
* a new array via spread — so reference equality is a safe cache key.
|
|
28
|
+
* This turns N-per-turn stringify calls into O(1) lookups after the
|
|
29
|
+
* first estimate, which matters on long tool-heavy sessions.
|
|
16
30
|
*/
|
|
17
|
-
export declare function estimateTokenCount(messages: ModelMessage[]): number;
|
|
31
|
+
export declare function estimateTokenCount(messages: ModelMessage[], provider?: LLMProvider): number;
|
|
@@ -4,10 +4,31 @@
|
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Estimate tokens for a message array.
|
|
8
|
+
*
|
|
9
|
+
* If `provider.countTokens` is implemented, delegates to it for a
|
|
10
|
+
* provider-native count. Otherwise falls back to the 4-chars-per-token
|
|
11
|
+
* heuristic over the serialized JSON — fine for compaction thresholds,
|
|
12
|
+
* but noticeably off for tool-heavy contexts.
|
|
13
|
+
*
|
|
14
|
+
* Results are memoized by message-array identity (WeakMap). Callers in
|
|
15
|
+
* the agent loop treat `ctx.messages` as immutable — every append creates
|
|
16
|
+
* a new array via spread — so reference equality is a safe cache key.
|
|
17
|
+
* This turns N-per-turn stringify calls into O(1) lookups after the
|
|
18
|
+
* first estimate, which matters on long tool-heavy sessions.
|
|
8
19
|
*/
|
|
9
|
-
export function estimateTokenCount(messages) {
|
|
20
|
+
export function estimateTokenCount(messages, provider) {
|
|
21
|
+
if (provider?.countTokens) {
|
|
22
|
+
return provider.countTokens(messages);
|
|
23
|
+
}
|
|
24
|
+
const cached = heuristicCache.get(messages);
|
|
25
|
+
if (cached !== undefined)
|
|
26
|
+
return cached;
|
|
10
27
|
const serialized = JSON.stringify(messages);
|
|
11
|
-
|
|
28
|
+
const estimate = Math.ceil(serialized.length / 4);
|
|
29
|
+
heuristicCache.set(messages, estimate);
|
|
30
|
+
return estimate;
|
|
12
31
|
}
|
|
32
|
+
/** Identity-keyed cache for the JSON-length heuristic. */
|
|
33
|
+
const heuristicCache = new WeakMap();
|
|
13
34
|
//# sourceMappingURL=token-estimate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-estimate.js","sourceRoot":"","sources":["../../../src/agent/token-estimate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"token-estimate.js","sourceRoot":"","sources":["../../../src/agent/token-estimate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAwB,EACxB,QAAsB;IAEtB,IAAI,QAAQ,EAAE,WAAW,EAAE,CAAC;QAC1B,OAAO,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClD,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,0DAA0D;AAC1D,MAAM,cAAc,GAAG,IAAI,OAAO,EAA0B,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
7
|
+
import { estimateTokenCount } from './token-estimate.js';
|
|
8
|
+
describe('estimateTokenCount', () => {
|
|
9
|
+
const messages = [
|
|
10
|
+
{ role: 'user', content: 'Hello world' },
|
|
11
|
+
{ role: 'assistant', content: 'Hi there!' },
|
|
12
|
+
];
|
|
13
|
+
it('falls back to 4-chars heuristic when no provider given', () => {
|
|
14
|
+
const count = estimateTokenCount(messages);
|
|
15
|
+
const serialized = JSON.stringify(messages);
|
|
16
|
+
expect(count).toBe(Math.ceil(serialized.length / 4));
|
|
17
|
+
});
|
|
18
|
+
it('falls back to heuristic when provider lacks countTokens', () => {
|
|
19
|
+
const provider = {
|
|
20
|
+
model: 'test',
|
|
21
|
+
provider: 'test',
|
|
22
|
+
languageModel: {},
|
|
23
|
+
streamText: vi.fn(),
|
|
24
|
+
generateText: vi.fn(),
|
|
25
|
+
};
|
|
26
|
+
const count = estimateTokenCount(messages, provider);
|
|
27
|
+
expect(count).toBe(Math.ceil(JSON.stringify(messages).length / 4));
|
|
28
|
+
});
|
|
29
|
+
it('delegates to provider.countTokens when implemented', () => {
|
|
30
|
+
const countTokens = vi.fn().mockReturnValue(42);
|
|
31
|
+
const provider = {
|
|
32
|
+
model: 'test',
|
|
33
|
+
provider: 'test',
|
|
34
|
+
languageModel: {},
|
|
35
|
+
streamText: vi.fn(),
|
|
36
|
+
generateText: vi.fn(),
|
|
37
|
+
countTokens,
|
|
38
|
+
};
|
|
39
|
+
const count = estimateTokenCount(messages, provider);
|
|
40
|
+
expect(count).toBe(42);
|
|
41
|
+
expect(countTokens).toHaveBeenCalledWith(messages);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=token-estimate.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-estimate.test.js","sourceRoot":"","sources":["../../../src/agent/token-estimate.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAC,MAAM,QAAQ,CAAC;AAEhD,OAAO,EAAC,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AAGvD,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,MAAM,QAAQ,GAAmB;QAC/B,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAC;QACtC,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAC;KAC1C,CAAC;IAEF,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,QAAQ,GAAG;YACf,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,MAAM;YAChB,aAAa,EAAE,EAAkC;YACjD,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;YACnB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;SACA,CAAC;QAExB,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG;YACf,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,MAAM;YAChB,aAAa,EAAE,EAAkC;YACjD,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;YACnB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;YACrB,WAAW;SACU,CAAC;QAExB,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -11,7 +11,6 @@ import { buildMcpConfigs } from '../agent/mcp-config.js';
|
|
|
11
11
|
import { createPGLiteStoreBackend } from '../stores/pglite-store-backend.js';
|
|
12
12
|
import { createLogger } from '../logger.js';
|
|
13
13
|
import { SessionError } from '../errors.js';
|
|
14
|
-
import { LOCAL_APP_ID } from '../constants.js';
|
|
15
14
|
const MCP_STARTUP_TIMEOUT_MS = 30_000;
|
|
16
15
|
// ---------------------------------------------------------------------------
|
|
17
16
|
// createAgent
|
|
@@ -77,8 +76,6 @@ export async function createAgent(config) {
|
|
|
77
76
|
return {
|
|
78
77
|
createSession(opts) {
|
|
79
78
|
const session = sessionManager.create({
|
|
80
|
-
tenantId: opts?.tenantId ?? LOCAL_APP_ID,
|
|
81
|
-
userId: opts?.userId ?? 'api',
|
|
82
79
|
provider: components.provider,
|
|
83
80
|
toolRegistry: components.toolRegistry,
|
|
84
81
|
permissionChecker: components.permissionChecker,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-agent.js","sourceRoot":"","sources":["../../../src/api/create-agent.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAC,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAC,wBAAwB,EAAC,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAC,sBAAsB,EAAC,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAC,iBAAiB,EAAC,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAC,wBAAwB,EAAC,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"create-agent.js","sourceRoot":"","sources":["../../../src/api/create-agent.ts"],"names":[],"mappings":"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"}
|
package/dist/src/api/types.d.ts
CHANGED
|
@@ -42,8 +42,6 @@ export interface AgentConfig {
|
|
|
42
42
|
export interface Agent {
|
|
43
43
|
/** Create a new chat session. */
|
|
44
44
|
createSession(opts?: {
|
|
45
|
-
tenantId?: string;
|
|
46
|
-
userId?: string;
|
|
47
45
|
userRoles?: string[];
|
|
48
46
|
}): AgentSession;
|
|
49
47
|
/** Resume an existing session by ID. Returns null if not found. */
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Resolve an optional config value that may be an `env:VAR_NAME` reference.
|
|
8
|
+
*
|
|
9
|
+
* - `undefined` / empty → returns `undefined`.
|
|
10
|
+
* - Plain string → returned unchanged.
|
|
11
|
+
* - `env:FOO` → returns `process.env.FOO` (may be `undefined` if unset).
|
|
12
|
+
*/
|
|
13
|
+
export declare function resolveEnvRef(value: string | undefined): string | undefined;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Resolver for `env:VAR_NAME` config references.
|
|
8
|
+
*
|
|
9
|
+
* amodal.json values can be written as either a literal string or as
|
|
10
|
+
* `env:VAR_NAME` to pull from the process environment. Centralizing
|
|
11
|
+
* resolution here keeps `process.env` reads out of business logic per
|
|
12
|
+
* CLAUDE.md and avoids drift between callers.
|
|
13
|
+
*/
|
|
14
|
+
const ENV_PREFIX = 'env:';
|
|
15
|
+
/**
|
|
16
|
+
* Resolve an optional config value that may be an `env:VAR_NAME` reference.
|
|
17
|
+
*
|
|
18
|
+
* - `undefined` / empty → returns `undefined`.
|
|
19
|
+
* - Plain string → returned unchanged.
|
|
20
|
+
* - `env:FOO` → returns `process.env.FOO` (may be `undefined` if unset).
|
|
21
|
+
*/
|
|
22
|
+
export function resolveEnvRef(value) {
|
|
23
|
+
if (!value)
|
|
24
|
+
return undefined;
|
|
25
|
+
if (value.startsWith(ENV_PREFIX)) {
|
|
26
|
+
const varName = value.slice(ENV_PREFIX.length);
|
|
27
|
+
return process.env[varName];
|
|
28
|
+
}
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=env-ref.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-ref.js","sourceRoot":"","sources":["../../src/env-ref.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AAEH,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|