@strands-agents/sdk 1.14.0 → 1.16.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/dist/src/agent/agent-delegation.d.ts +9 -30
- package/dist/src/agent/agent-delegation.d.ts.map +1 -1
- package/dist/src/agent/agent-delegation.js +26 -98
- package/dist/src/agent/agent-delegation.js.map +1 -1
- package/dist/src/agent/agent.d.ts +26 -8
- package/dist/src/agent/agent.d.ts.map +1 -1
- package/dist/src/agent/agent.js +132 -53
- package/dist/src/agent/agent.js.map +1 -1
- package/dist/src/agent/continuation.d.ts +41 -0
- package/dist/src/agent/continuation.d.ts.map +1 -1
- package/dist/src/agent/continuation.js +41 -0
- package/dist/src/agent/continuation.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 +15 -0
- package/dist/src/background-tasks/errors.d.ts.map +1 -0
- package/dist/src/background-tasks/errors.js +21 -0
- package/dist/src/background-tasks/errors.js.map +1 -0
- package/dist/src/background-tasks/in-process/engine.d.ts +95 -0
- package/dist/src/background-tasks/in-process/engine.d.ts.map +1 -0
- package/dist/src/background-tasks/in-process/engine.js +306 -0
- package/dist/src/background-tasks/in-process/engine.js.map +1 -0
- 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 +71 -0
- package/dist/src/background-tasks/in-process/types.d.ts.map +1 -0
- package/dist/src/background-tasks/in-process/types.js +2 -0
- package/dist/src/background-tasks/in-process/types.js.map +1 -0
- 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/hooks/events.d.ts +6 -5
- package/dist/src/hooks/events.d.ts.map +1 -1
- package/dist/src/hooks/events.js +5 -4
- package/dist/src/hooks/events.js.map +1 -1
- package/dist/src/hooks/types.d.ts +1 -0
- package/dist/src/hooks/types.d.ts.map +1 -1
- package/dist/src/hooks/types.js +1 -0
- package/dist/src/hooks/types.js.map +1 -1
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/models/bedrock.d.ts +11 -0
- package/dist/src/models/bedrock.d.ts.map +1 -1
- package/dist/src/models/bedrock.js +61 -10
- package/dist/src/models/bedrock.js.map +1 -1
- package/dist/src/models/google/adapters.d.ts.map +1 -1
- package/dist/src/models/google/adapters.js +18 -4
- package/dist/src/models/google/adapters.js.map +1 -1
- package/dist/src/models/google/model.d.ts.map +1 -1
- package/dist/src/models/google/model.js +9 -7
- package/dist/src/models/google/model.js.map +1 -1
- package/dist/src/models/google/types.d.ts +2 -0
- package/dist/src/models/google/types.d.ts.map +1 -1
- package/dist/src/models/model.d.ts +4 -0
- package/dist/src/models/model.d.ts.map +1 -1
- package/dist/src/models/model.js.map +1 -1
- package/dist/src/models/openai/cache.d.ts +31 -0
- package/dist/src/models/openai/cache.d.ts.map +1 -0
- package/dist/src/models/openai/cache.js +56 -0
- package/dist/src/models/openai/cache.js.map +1 -0
- package/dist/src/models/openai/chat-adapter.d.ts.map +1 -1
- package/dist/src/models/openai/chat-adapter.js +2 -0
- package/dist/src/models/openai/chat-adapter.js.map +1 -1
- package/dist/src/models/openai/model.d.ts.map +1 -1
- package/dist/src/models/openai/model.js +9 -3
- package/dist/src/models/openai/model.js.map +1 -1
- package/dist/src/models/openai/responses-adapter.d.ts.map +1 -1
- package/dist/src/models/openai/responses-adapter.js +3 -1
- package/dist/src/models/openai/responses-adapter.js.map +1 -1
- package/dist/src/models/openai/types.d.ts +5 -1
- package/dist/src/models/openai/types.d.ts.map +1 -1
- package/dist/src/models/routing/fallback-strategy.d.ts +13 -0
- package/dist/src/models/routing/fallback-strategy.d.ts.map +1 -0
- package/dist/src/models/routing/fallback-strategy.js +33 -0
- package/dist/src/models/routing/fallback-strategy.js.map +1 -0
- package/dist/src/models/routing/index.d.ts +11 -0
- package/dist/src/models/routing/index.d.ts.map +1 -0
- package/dist/src/models/routing/index.js +9 -0
- package/dist/src/models/routing/index.js.map +1 -0
- package/dist/src/models/routing/router.d.ts +161 -0
- package/dist/src/models/routing/router.d.ts.map +1 -0
- package/dist/src/models/routing/router.js +474 -0
- package/dist/src/models/routing/router.js.map +1 -0
- package/dist/src/models/routing/strategy.d.ts +53 -0
- package/dist/src/models/routing/strategy.d.ts.map +1 -0
- package/dist/src/models/routing/strategy.js +2 -0
- package/dist/src/models/routing/strategy.js.map +1 -0
- package/dist/src/models/streaming.d.ts +12 -0
- package/dist/src/models/streaming.d.ts.map +1 -1
- package/dist/src/models/streaming.js +17 -0
- package/dist/src/models/streaming.js.map +1 -1
- package/dist/src/retry/default-model-retry-strategy.d.ts +3 -8
- package/dist/src/retry/default-model-retry-strategy.d.ts.map +1 -1
- package/dist/src/retry/default-model-retry-strategy.js +3 -8
- package/dist/src/retry/default-model-retry-strategy.js.map +1 -1
- package/dist/src/retry/model-retry-strategy.d.ts +6 -9
- package/dist/src/retry/model-retry-strategy.d.ts.map +1 -1
- package/dist/src/retry/model-retry-strategy.js +8 -12
- package/dist/src/retry/model-retry-strategy.js.map +1 -1
- package/dist/src/session/session-manager.d.ts +4 -0
- package/dist/src/session/session-manager.d.ts.map +1 -1
- package/dist/src/session/session-manager.js +6 -0
- package/dist/src/session/session-manager.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/telemetry/meter.d.ts +8 -6
- package/dist/src/telemetry/meter.d.ts.map +1 -1
- package/dist/src/telemetry/meter.js +8 -7
- package/dist/src/telemetry/meter.js.map +1 -1
- package/dist/src/telemetry/tracer.d.ts.map +1 -1
- package/dist/src/telemetry/tracer.js +9 -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 +12 -2
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/agent.js +3 -2
- package/dist/src/types/agent.js.map +1 -1
- package/dist/src/vended-memory-stores/file-memory-store/index.d.ts +1 -1
- package/dist/src/vended-memory-stores/file-memory-store/index.d.ts.map +1 -1
- package/dist/src/vended-memory-stores/file-memory-store/store.d.ts +31 -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 +48 -25
- 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 +21 -4
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { continuations } from '../agent/continuation.js';
|
|
3
|
+
import { AgentAsTool } from '../agent/agent-as-tool.js';
|
|
4
|
+
import { AfterInvocationEvent, BeforeModelCallEvent, InitializedEvent } from '../hooks/events.js';
|
|
5
|
+
import { HookOrder } from '../hooks/types.js';
|
|
6
|
+
import { InterruptError } from '../interrupt.js';
|
|
7
|
+
import { logger } from '../logging/logger.js';
|
|
8
|
+
import { InvokeModelStage } from '../middleware/index.js';
|
|
9
|
+
import { STRUCTURED_OUTPUT_TOOL_NAME } from '../tools/structured-output-tool.js';
|
|
10
|
+
import { tool } from '../tools/tool-factory.js';
|
|
11
|
+
import { Message, TextBlock, ToolResultBlock, ToolUseBlock, toolResultContentFromData } from '../types/messages.js';
|
|
12
|
+
import { BackgroundTaskNotFoundError } from './errors.js';
|
|
13
|
+
import { InProcessTaskManager } from './in-process/manager.js';
|
|
14
|
+
import { isTaskStatusTerminal } from './types.js';
|
|
15
|
+
const BACKGROUND_TASKS_STATE_KEY = 'strands.backgroundTasks';
|
|
16
|
+
const BACKGROUND_PROPERTY = '_background_execution';
|
|
17
|
+
const MANAGE_TOOL_NAME = 'strands_manage_background_task';
|
|
18
|
+
const COMPOSITE_SCHEMA_KEYS = ['$ref', 'allOf', 'anyOf', 'oneOf', 'not', 'if', 'then', 'else'];
|
|
19
|
+
const FOREGROUND_TOOL_NAMES = new Set([
|
|
20
|
+
MANAGE_TOOL_NAME,
|
|
21
|
+
STRUCTURED_OUTPUT_TOOL_NAME,
|
|
22
|
+
'summarize_context',
|
|
23
|
+
'truncate_context',
|
|
24
|
+
'pin_context',
|
|
25
|
+
]);
|
|
26
|
+
/** @internal */
|
|
27
|
+
export class BackgroundTasks {
|
|
28
|
+
name = 'strands:background-tasks';
|
|
29
|
+
_config;
|
|
30
|
+
_executeTool;
|
|
31
|
+
_policy;
|
|
32
|
+
_manageTool;
|
|
33
|
+
_tasks = new Map();
|
|
34
|
+
_agent;
|
|
35
|
+
_manager;
|
|
36
|
+
constructor(config, executeTool) {
|
|
37
|
+
this._config = config;
|
|
38
|
+
this._executeTool = executeTool;
|
|
39
|
+
this._policy = resolvePolicy(config);
|
|
40
|
+
this._manageTool = tool({
|
|
41
|
+
name: MANAGE_TOOL_NAME,
|
|
42
|
+
description: 'List, inspect, or cancel background tasks. Completed results are delivered automatically; do not poll with this tool.',
|
|
43
|
+
inputSchema: z.object({
|
|
44
|
+
mode: z.enum(['list', 'get', 'cancel']).describe('Whether to list, inspect, or cancel background tasks.'),
|
|
45
|
+
taskId: z
|
|
46
|
+
.string()
|
|
47
|
+
.min(1)
|
|
48
|
+
.optional()
|
|
49
|
+
.describe('The background task ID returned when the task was dispatched. Required for get and cancel.'),
|
|
50
|
+
}),
|
|
51
|
+
callback: async ({ mode, taskId }) => {
|
|
52
|
+
if (mode === 'list') {
|
|
53
|
+
return {
|
|
54
|
+
tasks: [...this._tasks.values()].map(({ taskId, toolName, status }) => ({ taskId, toolName, status })),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
if (!taskId)
|
|
58
|
+
throw new TypeError(`Task ID is required for mode '${mode}'`);
|
|
59
|
+
const task = this._tasks.get(taskId);
|
|
60
|
+
if (!task)
|
|
61
|
+
throw new BackgroundTaskNotFoundError(taskId);
|
|
62
|
+
if (mode === 'get')
|
|
63
|
+
return task;
|
|
64
|
+
const cancelled = isTaskStatusTerminal(task.status) ? task : await this._manager.cancel(taskId);
|
|
65
|
+
return { taskId: cancelled.taskId, status: cancelled.status };
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
getTools() {
|
|
70
|
+
return [this._manageTool];
|
|
71
|
+
}
|
|
72
|
+
initAgent(agent) {
|
|
73
|
+
this._agent = agent;
|
|
74
|
+
for (const tool of agent.toolRegistry.list()) {
|
|
75
|
+
const policy = this._policyFor(tool);
|
|
76
|
+
if (!policy?.exact || policy.mode === 'never')
|
|
77
|
+
continue;
|
|
78
|
+
const toolName = tool.name;
|
|
79
|
+
if (!canExecuteInBackground(tool))
|
|
80
|
+
throw new TypeError(`Tool '${toolName}' cannot run in the background`);
|
|
81
|
+
if (policy.mode === 'agentic' && !canSelectBackground(tool)) {
|
|
82
|
+
throw new TypeError(`Tool '${toolName}' cannot use agentic background selection`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
this._manager = new InProcessTaskManager(this._agent, this._executeTool, {
|
|
86
|
+
...(this._config.maxConcurrency !== undefined && { maxConcurrency: this._config.maxConcurrency }),
|
|
87
|
+
...(this._config.timeout !== undefined && { timeout: this._config.timeout }),
|
|
88
|
+
onTaskUpdated: (task) => {
|
|
89
|
+
this._tasks.set(task.taskId, task);
|
|
90
|
+
this._persistTasks();
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
agent.addMiddleware(InvokeModelStage.Input, async (context) => ({
|
|
94
|
+
...context,
|
|
95
|
+
toolSpecs: context.toolSpecs.map((spec) => {
|
|
96
|
+
const tool = agent.toolRegistry.get(spec.name);
|
|
97
|
+
const policy = this._policyFor(tool);
|
|
98
|
+
if (policy?.mode !== 'agentic')
|
|
99
|
+
return spec;
|
|
100
|
+
if (!canExecuteInBackground(tool)) {
|
|
101
|
+
if (policy.exact)
|
|
102
|
+
throw new TypeError(`Tool '${spec.name}' cannot use agentic background selection`);
|
|
103
|
+
return spec;
|
|
104
|
+
}
|
|
105
|
+
const transformed = addBackgroundSelection(spec);
|
|
106
|
+
if (!transformed && policy.exact) {
|
|
107
|
+
throw new TypeError(`Tool '${spec.name}' cannot use agentic background selection`);
|
|
108
|
+
}
|
|
109
|
+
return transformed ?? spec;
|
|
110
|
+
}),
|
|
111
|
+
}));
|
|
112
|
+
agent.addHook(BeforeModelCallEvent, (event) => this._beforeModelCall(event));
|
|
113
|
+
agent.addHook(AfterInvocationEvent, (event) => this._afterInvocation(event));
|
|
114
|
+
agent.addHook(InitializedEvent, () => this._loadAppState(), { order: HookOrder.SDK_LAST });
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Decides foreground vs background. Strips `_background_execution` from
|
|
118
|
+
* `toolUse.input` so the real tool never sees the selection flag.
|
|
119
|
+
*
|
|
120
|
+
* @returns `true` to submit as background, a `ToolResultBlock` admission
|
|
121
|
+
* error, or `undefined` to run in the foreground.
|
|
122
|
+
*/
|
|
123
|
+
routeToolCall(toolUse, requestedTool, effectiveTool) {
|
|
124
|
+
let selected = false;
|
|
125
|
+
if (toolUse.input !== null &&
|
|
126
|
+
typeof toolUse.input === 'object' &&
|
|
127
|
+
!Array.isArray(toolUse.input) &&
|
|
128
|
+
BACKGROUND_PROPERTY in toolUse.input) {
|
|
129
|
+
const { [BACKGROUND_PROPERTY]: value, ...input } = toolUse.input;
|
|
130
|
+
if (typeof value !== 'boolean') {
|
|
131
|
+
return toolError(toolUse.toolUseId, `'${BACKGROUND_PROPERTY}' must be a boolean`);
|
|
132
|
+
}
|
|
133
|
+
if (this._policyFor(requestedTool)?.mode === 'agentic')
|
|
134
|
+
selected = value;
|
|
135
|
+
toolUse.input = input;
|
|
136
|
+
}
|
|
137
|
+
const policy = this._policyFor(effectiveTool);
|
|
138
|
+
if (!policy || policy.mode === 'never')
|
|
139
|
+
return;
|
|
140
|
+
if (!canExecuteInBackground(effectiveTool)) {
|
|
141
|
+
return policy.exact
|
|
142
|
+
? toolError(toolUse.toolUseId, `Tool '${toolUse.name}' cannot run in the background`)
|
|
143
|
+
: undefined;
|
|
144
|
+
}
|
|
145
|
+
if (policy.mode === 'agentic' && !canSelectBackground(effectiveTool)) {
|
|
146
|
+
return policy.exact
|
|
147
|
+
? toolError(toolUse.toolUseId, `Tool '${toolUse.name}' cannot use agentic background selection`)
|
|
148
|
+
: undefined;
|
|
149
|
+
}
|
|
150
|
+
return policy.mode === 'always' || selected ? true : undefined;
|
|
151
|
+
}
|
|
152
|
+
async submitToolCall(toolUse, invocationState, passId, tool) {
|
|
153
|
+
if (this._agent.cancelSignal.aborted)
|
|
154
|
+
return toolError(toolUse.toolUseId, 'Tool execution cancelled');
|
|
155
|
+
try {
|
|
156
|
+
const task = await this._manager.submit(toolUse, invocationState, passId, tool);
|
|
157
|
+
return new ToolResultBlock({
|
|
158
|
+
toolUseId: toolUse.toolUseId,
|
|
159
|
+
status: 'success',
|
|
160
|
+
content: [
|
|
161
|
+
new TextBlock([
|
|
162
|
+
'Background task dispatched.',
|
|
163
|
+
'',
|
|
164
|
+
`Task ID: ${task.taskId}`,
|
|
165
|
+
`Tool: ${task.toolName}`,
|
|
166
|
+
`Status: ${task.status}`,
|
|
167
|
+
'',
|
|
168
|
+
'The task is running in the background. Continue without waiting or polling.',
|
|
169
|
+
'The final result will be delivered automatically when the task completes.',
|
|
170
|
+
].join('\n')),
|
|
171
|
+
],
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
logger.warn(`error=<${error}> | background task admission failed`);
|
|
176
|
+
return toolError(toolUse.toolUseId, 'Background task admission failed');
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
assertToolCanRun(tool) {
|
|
180
|
+
const policy = this._policyFor(tool);
|
|
181
|
+
if (!canExecuteInBackground(tool) || !policy || policy.mode === 'never') {
|
|
182
|
+
throw new Error('Tool cannot run in the background');
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
assertCanLoadSnapshot() {
|
|
186
|
+
if (this._manager.hasTasks()) {
|
|
187
|
+
throw new Error('Cannot load a snapshot while background tasks are still tracked');
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
async _beforeModelCall(event) {
|
|
191
|
+
const interruptState = this._agent._interruptState;
|
|
192
|
+
const responses = interruptState.resumeResponses;
|
|
193
|
+
if (responses) {
|
|
194
|
+
const inputTasks = (await this._manager.list()).filter((task) => task.status === 'input_required');
|
|
195
|
+
const taskInterruptIds = new Set(inputTasks.flatMap((task) => task.interrupts?.map((interrupt) => interrupt.id) ?? []));
|
|
196
|
+
for (const task of inputTasks) {
|
|
197
|
+
const interruptIds = new Set(task.interrupts?.map((interrupt) => interrupt.id));
|
|
198
|
+
const taskResponses = responses
|
|
199
|
+
.map((content) => content.interruptResponse)
|
|
200
|
+
.filter((response) => interruptIds.has(response.interruptId));
|
|
201
|
+
if (taskResponses.length > 0)
|
|
202
|
+
await this._manager.resume(task.taskId, taskResponses);
|
|
203
|
+
}
|
|
204
|
+
if (Object.keys(interruptState.interrupts).every((id) => taskInterruptIds.has(id))) {
|
|
205
|
+
interruptState.deactivate();
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
const tasks = [...this._tasks.values()];
|
|
209
|
+
const interrupts = tasks.flatMap((task) => (task.status === 'input_required' ? (task.interrupts ?? []) : []));
|
|
210
|
+
if (interrupts.length > 0)
|
|
211
|
+
throw new InterruptError([...interrupts]);
|
|
212
|
+
this._deliverReady(event, tasks);
|
|
213
|
+
}
|
|
214
|
+
async _afterInvocation(event) {
|
|
215
|
+
const agent = event.agent;
|
|
216
|
+
if (agent._interruptState.activated)
|
|
217
|
+
return;
|
|
218
|
+
let tasks = [...this._tasks.values()];
|
|
219
|
+
while (this._config.waitForCompletion !== false &&
|
|
220
|
+
!agent.cancelSignal.aborted &&
|
|
221
|
+
!tasks.some((task) => task.status === 'input_required') &&
|
|
222
|
+
tasks.some((task) => !isTaskStatusTerminal(task.status))) {
|
|
223
|
+
await this._awaitNextSettlement(tasks, agent.cancelSignal);
|
|
224
|
+
tasks = [...this._tasks.values()];
|
|
225
|
+
}
|
|
226
|
+
if (tasks.some((task) => task.status === 'input_required')) {
|
|
227
|
+
event.resume ??= [];
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
this._deliverReady(event, tasks);
|
|
231
|
+
}
|
|
232
|
+
/** Races pending-task settlement against invocation cancellation. */
|
|
233
|
+
async _awaitNextSettlement(tasks, cancelSignal) {
|
|
234
|
+
let abort;
|
|
235
|
+
const cancelled = new Promise((resolve) => {
|
|
236
|
+
abort = resolve;
|
|
237
|
+
if (cancelSignal.aborted) {
|
|
238
|
+
resolve();
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
cancelSignal.addEventListener('abort', abort, { once: true });
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
try {
|
|
245
|
+
await Promise.race([
|
|
246
|
+
cancelled,
|
|
247
|
+
...tasks.filter((task) => !isTaskStatusTerminal(task.status)).map((task) => this._manager.wait(task.taskId)),
|
|
248
|
+
]);
|
|
249
|
+
}
|
|
250
|
+
finally {
|
|
251
|
+
cancelSignal.removeEventListener('abort', abort);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
_deliverReady(event, tasks) {
|
|
255
|
+
const terminalTasks = tasks.filter((task) => isTaskStatusTerminal(task.status));
|
|
256
|
+
if (terminalTasks.length === 0)
|
|
257
|
+
return;
|
|
258
|
+
const taskIds = terminalTasks.map((task) => task.taskId);
|
|
259
|
+
continuations.addInput(event, {
|
|
260
|
+
args: terminalTasks.flatMap((task) => {
|
|
261
|
+
const content = task.result?.content.map(toolResultContentFromData) ?? [
|
|
262
|
+
new TextBlock(task.error?.message ?? 'Background task cancelled'),
|
|
263
|
+
];
|
|
264
|
+
return [
|
|
265
|
+
new Message({
|
|
266
|
+
role: 'assistant',
|
|
267
|
+
content: [
|
|
268
|
+
new ToolUseBlock({
|
|
269
|
+
name: 'strands_background_task_result',
|
|
270
|
+
toolUseId: task.taskId,
|
|
271
|
+
input: { toolName: task.toolName },
|
|
272
|
+
}),
|
|
273
|
+
],
|
|
274
|
+
}),
|
|
275
|
+
new Message({
|
|
276
|
+
role: 'user',
|
|
277
|
+
content: [
|
|
278
|
+
new ToolResultBlock({
|
|
279
|
+
toolUseId: task.taskId,
|
|
280
|
+
status: task.status === 'completed' ? 'success' : 'error',
|
|
281
|
+
content,
|
|
282
|
+
}),
|
|
283
|
+
],
|
|
284
|
+
}),
|
|
285
|
+
];
|
|
286
|
+
}),
|
|
287
|
+
onAppended: async () => {
|
|
288
|
+
const liveTaskIds = new Set((await this._manager.list()).map((task) => task.taskId));
|
|
289
|
+
const managerTaskIds = taskIds.filter((taskId) => liveTaskIds.has(taskId));
|
|
290
|
+
await this._manager.remove(managerTaskIds);
|
|
291
|
+
for (const taskId of taskIds)
|
|
292
|
+
this._tasks.delete(taskId);
|
|
293
|
+
this._persistTasks();
|
|
294
|
+
},
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
_loadAppState() {
|
|
298
|
+
this._tasks.clear();
|
|
299
|
+
const storedTasks = this._agent.appState.get(BACKGROUND_TASKS_STATE_KEY) ?? [];
|
|
300
|
+
const recoveredInterruptIds = new Set();
|
|
301
|
+
for (const task of storedTasks) {
|
|
302
|
+
if (!isTaskStatusTerminal(task.status)) {
|
|
303
|
+
for (const interrupt of task.interrupts ?? [])
|
|
304
|
+
recoveredInterruptIds.add(interrupt.id);
|
|
305
|
+
}
|
|
306
|
+
this._tasks.set(task.taskId, recoverTask(task));
|
|
307
|
+
}
|
|
308
|
+
for (const interruptId of recoveredInterruptIds)
|
|
309
|
+
delete this._agent._interruptState.interrupts[interruptId];
|
|
310
|
+
if (this._agent._interruptState.activated && this._agent._interruptState.getInterruptsList().length === 0) {
|
|
311
|
+
this._agent._interruptState.deactivate();
|
|
312
|
+
}
|
|
313
|
+
this._persistTasks();
|
|
314
|
+
}
|
|
315
|
+
_persistTasks() {
|
|
316
|
+
if (this._tasks.size === 0) {
|
|
317
|
+
this._agent.appState.delete(BACKGROUND_TASKS_STATE_KEY);
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
this._agent.appState.set(BACKGROUND_TASKS_STATE_KEY, [...this._tasks.values()]);
|
|
321
|
+
}
|
|
322
|
+
_policyFor(tool) {
|
|
323
|
+
if (!tool)
|
|
324
|
+
return undefined;
|
|
325
|
+
const exact = this._policy.get(tool.name);
|
|
326
|
+
if (exact)
|
|
327
|
+
return { mode: exact, exact: true };
|
|
328
|
+
const wildcard = this._policy.get('*');
|
|
329
|
+
return wildcard ? { mode: wildcard, exact: false } : undefined;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
function toolError(toolUseId, message) {
|
|
333
|
+
return new ToolResultBlock({
|
|
334
|
+
toolUseId,
|
|
335
|
+
status: 'error',
|
|
336
|
+
content: [new TextBlock(message)],
|
|
337
|
+
error: new Error(message),
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
function canExecuteInBackground(tool) {
|
|
341
|
+
return tool !== undefined && !FOREGROUND_TOOL_NAMES.has(tool.name) && !(tool instanceof AgentAsTool && tool.delegate);
|
|
342
|
+
}
|
|
343
|
+
function canSelectBackground(tool) {
|
|
344
|
+
return addBackgroundSelection(tool.toolSpec) !== undefined;
|
|
345
|
+
}
|
|
346
|
+
function addBackgroundSelection(toolSpec) {
|
|
347
|
+
const schema = toolSpec.inputSchema ?? {};
|
|
348
|
+
if (COMPOSITE_SCHEMA_KEYS.some((key) => schema[key] !== undefined) ||
|
|
349
|
+
(schema.type !== undefined && schema.type !== 'object') ||
|
|
350
|
+
(schema.properties !== undefined && (typeof schema.properties !== 'object' || Array.isArray(schema.properties))) ||
|
|
351
|
+
schema.properties?.[BACKGROUND_PROPERTY] !== undefined ||
|
|
352
|
+
schema.required?.includes(BACKGROUND_PROPERTY)) {
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
return {
|
|
356
|
+
...toolSpec,
|
|
357
|
+
inputSchema: {
|
|
358
|
+
...schema,
|
|
359
|
+
type: 'object',
|
|
360
|
+
properties: {
|
|
361
|
+
...schema.properties,
|
|
362
|
+
[BACKGROUND_PROPERTY]: {
|
|
363
|
+
type: 'boolean',
|
|
364
|
+
description: 'Run this tool in the background and continue without waiting for its result.',
|
|
365
|
+
},
|
|
366
|
+
},
|
|
367
|
+
},
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
function resolvePolicy(config) {
|
|
371
|
+
const hasExplicitWildcard = config.always?.includes('*') || config.never?.includes('*');
|
|
372
|
+
const assignments = [
|
|
373
|
+
['agentic', config.agentic ?? (hasExplicitWildcard ? [] : ['*'])],
|
|
374
|
+
['always', config.always ?? []],
|
|
375
|
+
['never', config.never ?? []],
|
|
376
|
+
];
|
|
377
|
+
const policy = new Map();
|
|
378
|
+
for (const [mode, selectors] of assignments) {
|
|
379
|
+
for (const selector of selectors) {
|
|
380
|
+
const name = typeof selector === 'string' ? selector : selector.name;
|
|
381
|
+
const existing = policy.get(name);
|
|
382
|
+
if (existing && existing !== mode) {
|
|
383
|
+
throw new TypeError(`Tool '${name}' cannot be configured as both '${existing}' and '${mode}'`);
|
|
384
|
+
}
|
|
385
|
+
policy.set(name, mode);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
return policy;
|
|
389
|
+
}
|
|
390
|
+
function recoverTask(task) {
|
|
391
|
+
if (!isTaskStatusTerminal(task.status)) {
|
|
392
|
+
const { interrupts: _interrupts, ...persisted } = task;
|
|
393
|
+
return {
|
|
394
|
+
...persisted,
|
|
395
|
+
status: 'failed',
|
|
396
|
+
lastUpdatedAt: new Date().toISOString(),
|
|
397
|
+
error: { type: 'executionError', message: 'Background task cannot resume after restoring persisted state' },
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
return task;
|
|
401
|
+
}
|
|
402
|
+
//# sourceMappingURL=background-tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background-tasks.js","sourceRoot":"","sources":["../../../src/background-tasks/background-tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Raised when a background task ID is not found. @internal */
|
|
2
|
+
export declare class BackgroundTaskNotFoundError extends Error {
|
|
3
|
+
/**
|
|
4
|
+
* @param taskId - ID that could not be found.
|
|
5
|
+
*/
|
|
6
|
+
constructor(taskId: string);
|
|
7
|
+
}
|
|
8
|
+
/** Raised when waiting for background tasks exceeds the configured timeout. @internal */
|
|
9
|
+
export declare class BackgroundTaskTimeoutError extends Error {
|
|
10
|
+
/**
|
|
11
|
+
* @param timeout - Wait timeout in milliseconds.
|
|
12
|
+
*/
|
|
13
|
+
constructor(timeout: number);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/background-tasks/errors.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,qBAAa,2BAA4B,SAAQ,KAAK;IACpD;;OAEG;gBACS,MAAM,EAAE,MAAM;CAI3B;AAED,yFAAyF;AACzF,qBAAa,0BAA2B,SAAQ,KAAK;IACnD;;OAEG;gBACS,OAAO,EAAE,MAAM;CAI5B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Raised when a background task ID is not found. @internal */
|
|
2
|
+
export class BackgroundTaskNotFoundError extends Error {
|
|
3
|
+
/**
|
|
4
|
+
* @param taskId - ID that could not be found.
|
|
5
|
+
*/
|
|
6
|
+
constructor(taskId) {
|
|
7
|
+
super(`Background task '${taskId}' was not found`);
|
|
8
|
+
this.name = 'BackgroundTaskNotFoundError';
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
/** Raised when waiting for background tasks exceeds the configured timeout. @internal */
|
|
12
|
+
export class BackgroundTaskTimeoutError extends Error {
|
|
13
|
+
/**
|
|
14
|
+
* @param timeout - Wait timeout in milliseconds.
|
|
15
|
+
*/
|
|
16
|
+
constructor(timeout) {
|
|
17
|
+
super(`Timed out waiting for background tasks after ${timeout}ms`);
|
|
18
|
+
this.name = 'BackgroundTaskTimeoutError';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/background-tasks/errors.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACpD;;OAEG;IACH,YAAY,MAAc;QACxB,KAAK,CAAC,oBAAoB,MAAM,iBAAiB,CAAC,CAAA;QAClD,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAA;IAC3C,CAAC;CACF;AAED,yFAAyF;AACzF,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IACnD;;OAEG;IACH,YAAY,OAAe;QACzB,KAAK,CAAC,gDAAgD,OAAO,IAAI,CAAC,CAAA;QAClE,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAA;IAC1C,CAAC;CACF"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { InterruptStateData } from '../../interrupt.js';
|
|
2
|
+
import type { InProcessTaskEngineOptions, InProcessTaskRecord } from './types.js';
|
|
3
|
+
/** Runs and tracks bounded in-process tasks. @internal */
|
|
4
|
+
export declare class InProcessTaskEngine {
|
|
5
|
+
private readonly _options;
|
|
6
|
+
private readonly _tasks;
|
|
7
|
+
private readonly _queue;
|
|
8
|
+
private readonly _activeExecutions;
|
|
9
|
+
private readonly _idleWaiters;
|
|
10
|
+
/**
|
|
11
|
+
* Creates an in-process task engine.
|
|
12
|
+
*
|
|
13
|
+
* @param options - Execution limits and callbacks supplied by the task manager.
|
|
14
|
+
* @throws TypeError if the concurrency or timeout configuration is invalid.
|
|
15
|
+
*/
|
|
16
|
+
constructor(options: InProcessTaskEngineOptions);
|
|
17
|
+
/**
|
|
18
|
+
* Submits a task for execution.
|
|
19
|
+
*
|
|
20
|
+
* @param admission - Tool execution details.
|
|
21
|
+
* @returns A snapshot of the admitted task.
|
|
22
|
+
*/
|
|
23
|
+
submit(admission: {
|
|
24
|
+
readonly toolUseId: string;
|
|
25
|
+
readonly toolName: string;
|
|
26
|
+
readonly invocationStateId: string;
|
|
27
|
+
}): InProcessTaskRecord;
|
|
28
|
+
/**
|
|
29
|
+
* Gets a task by ID.
|
|
30
|
+
*
|
|
31
|
+
* @param taskId - ID of the task to retrieve.
|
|
32
|
+
* @returns A snapshot of the task, or `undefined` when it does not exist.
|
|
33
|
+
*/
|
|
34
|
+
get(taskId: string): InProcessTaskRecord | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Lists the tasks tracked by this engine.
|
|
37
|
+
*
|
|
38
|
+
* @returns Snapshots of the tracked tasks.
|
|
39
|
+
*/
|
|
40
|
+
list(): readonly InProcessTaskRecord[];
|
|
41
|
+
/**
|
|
42
|
+
* Removes a terminal task.
|
|
43
|
+
*
|
|
44
|
+
* @param taskId - ID of the task to remove.
|
|
45
|
+
* @throws Error if the task does not exist or has not reached a terminal state.
|
|
46
|
+
*/
|
|
47
|
+
remove(taskId: string): void;
|
|
48
|
+
/**
|
|
49
|
+
* Cancels a non-terminal task and aborts its active execution.
|
|
50
|
+
*
|
|
51
|
+
* @param taskId - ID of the task to cancel.
|
|
52
|
+
* @param options - Cancellation options passed to the active execution.
|
|
53
|
+
* @returns A snapshot of the cancelled task, or the unchanged task if it was already terminal.
|
|
54
|
+
* @throws Error if the task does not exist.
|
|
55
|
+
*/
|
|
56
|
+
cancel(taskId: string, options: {
|
|
57
|
+
readonly reason: string;
|
|
58
|
+
}): InProcessTaskRecord;
|
|
59
|
+
/**
|
|
60
|
+
* Waits until no tasks are queued or executing.
|
|
61
|
+
*
|
|
62
|
+
* @param options - Optional cancellation signal for the wait.
|
|
63
|
+
* @returns A promise that resolves when the engine is idle.
|
|
64
|
+
* @throws The cancellation signal's reason if the wait is aborted.
|
|
65
|
+
*/
|
|
66
|
+
waitForIdle(options?: {
|
|
67
|
+
readonly cancelSignal?: AbortSignal;
|
|
68
|
+
}): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Applies interrupt responses to a task with `input_required` status.
|
|
71
|
+
*
|
|
72
|
+
* The task remains `input_required` while interrupts are unanswered and is queued for
|
|
73
|
+
* execution once the updated interrupt state is ready.
|
|
74
|
+
*
|
|
75
|
+
* @param taskId - ID of the task requiring input.
|
|
76
|
+
* @param update - Applies interrupt responses to the task state and reports when it is ready.
|
|
77
|
+
* @returns A snapshot of the updated task.
|
|
78
|
+
* @throws BackgroundTaskNotFoundError if the task does not exist.
|
|
79
|
+
* @throws Error if the task does not require input or has no state.
|
|
80
|
+
*/
|
|
81
|
+
resume(taskId: string, update: (state: InterruptStateData) => {
|
|
82
|
+
readonly state: InterruptStateData;
|
|
83
|
+
readonly ready: boolean;
|
|
84
|
+
}): InProcessTaskRecord;
|
|
85
|
+
private _scheduleTask;
|
|
86
|
+
private _startQueuedTasks;
|
|
87
|
+
private _execute;
|
|
88
|
+
private _finishOutcome;
|
|
89
|
+
private _timeoutTask;
|
|
90
|
+
private _updateTask;
|
|
91
|
+
private _requireTask;
|
|
92
|
+
private _notifyTaskUpdated;
|
|
93
|
+
private _wakeIdleWaiters;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../src/background-tasks/in-process/engine.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE5D,OAAO,KAAK,EAAE,0BAA0B,EAAiC,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAShH,0DAA0D;AAC1D,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAChE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqC;IACvE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;IAErD;;;;;OAKG;gBACS,OAAO,EAAE,0BAA0B;IAQ/C;;;;;OAKG;IACH,MAAM,CAAC,SAAS,EAAE;QAChB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;KACnC,GAAG,mBAAmB;IAevB;;;;;OAKG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAKpD;;;;OAIG;IACH,IAAI,IAAI,SAAS,mBAAmB,EAAE;IAItC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,mBAAmB;IAkBjF;;;;;;OAMG;IACG,WAAW,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBnF;;;;;;;;;;;OAWG;IACH,MAAM,CACJ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK;QACrC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAA;QAClC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;KACxB,GACA,mBAAmB;IAmBtB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,iBAAiB;YAsBX,QAAQ;IAmCtB,OAAO,CAAC,cAAc;IAgCtB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,gBAAgB;CAIzB"}
|