@lleverage-ai/agent-sdk 0.0.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/LICENSE +21 -0
- package/README.md +2321 -0
- package/dist/agent.d.ts +52 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +2122 -0
- package/dist/agent.js.map +1 -0
- package/dist/backend.d.ts +378 -0
- package/dist/backend.d.ts.map +1 -0
- package/dist/backend.js +71 -0
- package/dist/backend.js.map +1 -0
- package/dist/backends/composite.d.ts +258 -0
- package/dist/backends/composite.d.ts.map +1 -0
- package/dist/backends/composite.js +437 -0
- package/dist/backends/composite.js.map +1 -0
- package/dist/backends/filesystem.d.ts +268 -0
- package/dist/backends/filesystem.d.ts.map +1 -0
- package/dist/backends/filesystem.js +623 -0
- package/dist/backends/filesystem.js.map +1 -0
- package/dist/backends/index.d.ts +14 -0
- package/dist/backends/index.d.ts.map +1 -0
- package/dist/backends/index.js +14 -0
- package/dist/backends/index.js.map +1 -0
- package/dist/backends/persistent.d.ts +312 -0
- package/dist/backends/persistent.d.ts.map +1 -0
- package/dist/backends/persistent.js +519 -0
- package/dist/backends/persistent.js.map +1 -0
- package/dist/backends/sandbox.d.ts +315 -0
- package/dist/backends/sandbox.d.ts.map +1 -0
- package/dist/backends/sandbox.js +490 -0
- package/dist/backends/sandbox.js.map +1 -0
- package/dist/backends/state.d.ts +225 -0
- package/dist/backends/state.d.ts.map +1 -0
- package/dist/backends/state.js +396 -0
- package/dist/backends/state.js.map +1 -0
- package/dist/checkpointer/file-saver.d.ts +182 -0
- package/dist/checkpointer/file-saver.d.ts.map +1 -0
- package/dist/checkpointer/file-saver.js +298 -0
- package/dist/checkpointer/file-saver.js.map +1 -0
- package/dist/checkpointer/index.d.ts +40 -0
- package/dist/checkpointer/index.d.ts.map +1 -0
- package/dist/checkpointer/index.js +40 -0
- package/dist/checkpointer/index.js.map +1 -0
- package/dist/checkpointer/kv-saver.d.ts +142 -0
- package/dist/checkpointer/kv-saver.d.ts.map +1 -0
- package/dist/checkpointer/kv-saver.js +176 -0
- package/dist/checkpointer/kv-saver.js.map +1 -0
- package/dist/checkpointer/memory-saver.d.ts +158 -0
- package/dist/checkpointer/memory-saver.d.ts.map +1 -0
- package/dist/checkpointer/memory-saver.js +222 -0
- package/dist/checkpointer/memory-saver.js.map +1 -0
- package/dist/checkpointer/types.d.ts +353 -0
- package/dist/checkpointer/types.d.ts.map +1 -0
- package/dist/checkpointer/types.js +159 -0
- package/dist/checkpointer/types.js.map +1 -0
- package/dist/context-manager.d.ts +627 -0
- package/dist/context-manager.d.ts.map +1 -0
- package/dist/context-manager.js +1039 -0
- package/dist/context-manager.js.map +1 -0
- package/dist/context.d.ts +57 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +76 -0
- package/dist/context.js.map +1 -0
- package/dist/errors/index.d.ts +611 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +1023 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/generation-helpers.d.ts +126 -0
- package/dist/generation-helpers.d.ts.map +1 -0
- package/dist/generation-helpers.js +181 -0
- package/dist/generation-helpers.js.map +1 -0
- package/dist/hooks/audit.d.ts +210 -0
- package/dist/hooks/audit.d.ts.map +1 -0
- package/dist/hooks/audit.js +305 -0
- package/dist/hooks/audit.js.map +1 -0
- package/dist/hooks/cache.d.ts +180 -0
- package/dist/hooks/cache.d.ts.map +1 -0
- package/dist/hooks/cache.js +273 -0
- package/dist/hooks/cache.js.map +1 -0
- package/dist/hooks/guardrails.d.ts +145 -0
- package/dist/hooks/guardrails.d.ts.map +1 -0
- package/dist/hooks/guardrails.js +326 -0
- package/dist/hooks/guardrails.js.map +1 -0
- package/dist/hooks/index.d.ts +18 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +32 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/logging.d.ts +193 -0
- package/dist/hooks/logging.d.ts.map +1 -0
- package/dist/hooks/logging.js +345 -0
- package/dist/hooks/logging.js.map +1 -0
- package/dist/hooks/parallel-guardrails.d.ts +268 -0
- package/dist/hooks/parallel-guardrails.d.ts.map +1 -0
- package/dist/hooks/parallel-guardrails.js +416 -0
- package/dist/hooks/parallel-guardrails.js.map +1 -0
- package/dist/hooks/rate-limit.d.ts +305 -0
- package/dist/hooks/rate-limit.d.ts.map +1 -0
- package/dist/hooks/rate-limit.js +372 -0
- package/dist/hooks/rate-limit.js.map +1 -0
- package/dist/hooks/retry.d.ts +144 -0
- package/dist/hooks/retry.d.ts.map +1 -0
- package/dist/hooks/retry.js +210 -0
- package/dist/hooks/retry.js.map +1 -0
- package/dist/hooks/secrets.d.ts +174 -0
- package/dist/hooks/secrets.d.ts.map +1 -0
- package/dist/hooks/secrets.js +306 -0
- package/dist/hooks/secrets.js.map +1 -0
- package/dist/hooks.d.ts +229 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +352 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +97 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +182 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/env.d.ts +25 -0
- package/dist/mcp/env.d.ts.map +1 -0
- package/dist/mcp/env.js +18 -0
- package/dist/mcp/env.js.map +1 -0
- package/dist/mcp/index.d.ts +16 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +17 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/manager.d.ts +184 -0
- package/dist/mcp/manager.d.ts.map +1 -0
- package/dist/mcp/manager.js +446 -0
- package/dist/mcp/manager.js.map +1 -0
- package/dist/mcp/types.d.ts +58 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +7 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/mcp/validation.d.ts +119 -0
- package/dist/mcp/validation.d.ts.map +1 -0
- package/dist/mcp/validation.js +407 -0
- package/dist/mcp/validation.js.map +1 -0
- package/dist/mcp/virtual-server.d.ts +78 -0
- package/dist/mcp/virtual-server.d.ts.map +1 -0
- package/dist/mcp/virtual-server.js +137 -0
- package/dist/mcp/virtual-server.js.map +1 -0
- package/dist/memory/filesystem-store.d.ts +217 -0
- package/dist/memory/filesystem-store.d.ts.map +1 -0
- package/dist/memory/filesystem-store.js +343 -0
- package/dist/memory/filesystem-store.js.map +1 -0
- package/dist/memory/index.d.ts +46 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +46 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/loader.d.ts +396 -0
- package/dist/memory/loader.d.ts.map +1 -0
- package/dist/memory/loader.js +419 -0
- package/dist/memory/loader.js.map +1 -0
- package/dist/memory/permissions.d.ts +282 -0
- package/dist/memory/permissions.d.ts.map +1 -0
- package/dist/memory/permissions.js +297 -0
- package/dist/memory/permissions.js.map +1 -0
- package/dist/memory/rules.d.ts +249 -0
- package/dist/memory/rules.d.ts.map +1 -0
- package/dist/memory/rules.js +362 -0
- package/dist/memory/rules.js.map +1 -0
- package/dist/memory/store.d.ts +286 -0
- package/dist/memory/store.d.ts.map +1 -0
- package/dist/memory/store.js +263 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/middleware/apply.d.ts +73 -0
- package/dist/middleware/apply.d.ts.map +1 -0
- package/dist/middleware/apply.js +219 -0
- package/dist/middleware/apply.js.map +1 -0
- package/dist/middleware/context.d.ts +33 -0
- package/dist/middleware/context.d.ts.map +1 -0
- package/dist/middleware/context.js +176 -0
- package/dist/middleware/context.js.map +1 -0
- package/dist/middleware/index.d.ts +31 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +32 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/logging.d.ts +137 -0
- package/dist/middleware/logging.d.ts.map +1 -0
- package/dist/middleware/logging.js +374 -0
- package/dist/middleware/logging.js.map +1 -0
- package/dist/middleware/types.d.ts +183 -0
- package/dist/middleware/types.d.ts.map +1 -0
- package/dist/middleware/types.js +11 -0
- package/dist/middleware/types.js.map +1 -0
- package/dist/observability/events.d.ts +183 -0
- package/dist/observability/events.d.ts.map +1 -0
- package/dist/observability/events.js +305 -0
- package/dist/observability/events.js.map +1 -0
- package/dist/observability/index.d.ts +55 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +87 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/logger.d.ts +318 -0
- package/dist/observability/logger.d.ts.map +1 -0
- package/dist/observability/logger.js +436 -0
- package/dist/observability/logger.js.map +1 -0
- package/dist/observability/metrics.d.ts +341 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +490 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/observability/preset.d.ts +161 -0
- package/dist/observability/preset.d.ts.map +1 -0
- package/dist/observability/preset.js +133 -0
- package/dist/observability/preset.js.map +1 -0
- package/dist/observability/streaming.d.ts +113 -0
- package/dist/observability/streaming.d.ts.map +1 -0
- package/dist/observability/streaming.js +114 -0
- package/dist/observability/streaming.js.map +1 -0
- package/dist/observability/tracing.d.ts +378 -0
- package/dist/observability/tracing.d.ts.map +1 -0
- package/dist/observability/tracing.js +539 -0
- package/dist/observability/tracing.js.map +1 -0
- package/dist/plugins.d.ts +55 -0
- package/dist/plugins.d.ts.map +1 -0
- package/dist/plugins.js +63 -0
- package/dist/plugins.js.map +1 -0
- package/dist/presets/index.d.ts +7 -0
- package/dist/presets/index.d.ts.map +1 -0
- package/dist/presets/index.js +7 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/presets/production.d.ts +262 -0
- package/dist/presets/production.d.ts.map +1 -0
- package/dist/presets/production.js +295 -0
- package/dist/presets/production.js.map +1 -0
- package/dist/security/index.d.ts +179 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +323 -0
- package/dist/security/index.js.map +1 -0
- package/dist/subagents/advanced.d.ts +413 -0
- package/dist/subagents/advanced.d.ts.map +1 -0
- package/dist/subagents/advanced.js +396 -0
- package/dist/subagents/advanced.js.map +1 -0
- package/dist/subagents/index.d.ts +14 -0
- package/dist/subagents/index.d.ts.map +1 -0
- package/dist/subagents/index.js +15 -0
- package/dist/subagents/index.js.map +1 -0
- package/dist/subagents.d.ts +73 -0
- package/dist/subagents.d.ts.map +1 -0
- package/dist/subagents.js +213 -0
- package/dist/subagents.js.map +1 -0
- package/dist/task-store/file-store.d.ts +76 -0
- package/dist/task-store/file-store.d.ts.map +1 -0
- package/dist/task-store/file-store.js +190 -0
- package/dist/task-store/file-store.js.map +1 -0
- package/dist/task-store/index.d.ts +11 -0
- package/dist/task-store/index.d.ts.map +1 -0
- package/dist/task-store/index.js +10 -0
- package/dist/task-store/index.js.map +1 -0
- package/dist/task-store/kv-store.d.ts +140 -0
- package/dist/task-store/kv-store.d.ts.map +1 -0
- package/dist/task-store/kv-store.js +169 -0
- package/dist/task-store/kv-store.js.map +1 -0
- package/dist/task-store/memory-store.d.ts +66 -0
- package/dist/task-store/memory-store.d.ts.map +1 -0
- package/dist/task-store/memory-store.js +125 -0
- package/dist/task-store/memory-store.js.map +1 -0
- package/dist/task-store/types.d.ts +235 -0
- package/dist/task-store/types.d.ts.map +1 -0
- package/dist/task-store/types.js +110 -0
- package/dist/task-store/types.js.map +1 -0
- package/dist/testing/assertions.d.ts +401 -0
- package/dist/testing/assertions.d.ts.map +1 -0
- package/dist/testing/assertions.js +630 -0
- package/dist/testing/assertions.js.map +1 -0
- package/dist/testing/index.d.ts +343 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +360 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/mock-agent.d.ts +214 -0
- package/dist/testing/mock-agent.d.ts.map +1 -0
- package/dist/testing/mock-agent.js +448 -0
- package/dist/testing/mock-agent.js.map +1 -0
- package/dist/testing/recorder.d.ts +288 -0
- package/dist/testing/recorder.d.ts.map +1 -0
- package/dist/testing/recorder.js +499 -0
- package/dist/testing/recorder.js.map +1 -0
- package/dist/tools/execute.d.ts +104 -0
- package/dist/tools/execute.d.ts.map +1 -0
- package/dist/tools/execute.js +191 -0
- package/dist/tools/execute.js.map +1 -0
- package/dist/tools/factory.d.ts +260 -0
- package/dist/tools/factory.d.ts.map +1 -0
- package/dist/tools/factory.js +241 -0
- package/dist/tools/factory.js.map +1 -0
- package/dist/tools/filesystem.d.ts +215 -0
- package/dist/tools/filesystem.d.ts.map +1 -0
- package/dist/tools/filesystem.js +311 -0
- package/dist/tools/filesystem.js.map +1 -0
- package/dist/tools/index.d.ts +33 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +33 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/search.d.ts +59 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +94 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/skills.d.ts +354 -0
- package/dist/tools/skills.d.ts.map +1 -0
- package/dist/tools/skills.js +413 -0
- package/dist/tools/skills.js.map +1 -0
- package/dist/tools/task.d.ts +272 -0
- package/dist/tools/task.d.ts.map +1 -0
- package/dist/tools/task.js +521 -0
- package/dist/tools/task.js.map +1 -0
- package/dist/tools/todos.d.ts +131 -0
- package/dist/tools/todos.d.ts.map +1 -0
- package/dist/tools/todos.js +120 -0
- package/dist/tools/todos.js.map +1 -0
- package/dist/tools/tool-registry.d.ts +424 -0
- package/dist/tools/tool-registry.d.ts.map +1 -0
- package/dist/tools/tool-registry.js +607 -0
- package/dist/tools/tool-registry.js.map +1 -0
- package/dist/tools/user-interaction.d.ts +116 -0
- package/dist/tools/user-interaction.d.ts.map +1 -0
- package/dist/tools/user-interaction.js +147 -0
- package/dist/tools/user-interaction.js.map +1 -0
- package/dist/tools/utils.d.ts +124 -0
- package/dist/tools/utils.d.ts.map +1 -0
- package/dist/tools/utils.js +189 -0
- package/dist/tools/utils.js.map +1 -0
- package/dist/tools.d.ts +74 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +73 -0
- package/dist/tools.js.map +1 -0
- package/dist/types.d.ts +2421 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +55 -0
- package/dist/types.js.map +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the task store system.
|
|
3
|
+
*
|
|
4
|
+
* Task stores provide persistence for background task state, allowing tasks
|
|
5
|
+
* to survive process restarts and be recovered when the agent resumes.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
// =============================================================================
|
|
10
|
+
// Helper Functions
|
|
11
|
+
// =============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Create a new background task with the given data.
|
|
14
|
+
*
|
|
15
|
+
* This is a convenience function that ensures timestamps are set correctly.
|
|
16
|
+
*
|
|
17
|
+
* @param data - Partial task data (id, subagentType, description required)
|
|
18
|
+
* @returns A complete task object
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const task = createBackgroundTask({
|
|
23
|
+
* id: "task-123",
|
|
24
|
+
* subagentType: "researcher",
|
|
25
|
+
* description: "Research topic X",
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @category TaskStore
|
|
30
|
+
*/
|
|
31
|
+
export function createBackgroundTask(data) {
|
|
32
|
+
const now = new Date().toISOString();
|
|
33
|
+
return {
|
|
34
|
+
status: "pending",
|
|
35
|
+
createdAt: now,
|
|
36
|
+
updatedAt: now,
|
|
37
|
+
...data,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Update an existing task with new data.
|
|
42
|
+
*
|
|
43
|
+
* Automatically updates the `updatedAt` timestamp.
|
|
44
|
+
*
|
|
45
|
+
* @param task - The existing task
|
|
46
|
+
* @param updates - Partial updates to apply
|
|
47
|
+
* @returns A new task object with updates applied
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const updated = updateBackgroundTask(task, {
|
|
52
|
+
* status: "completed",
|
|
53
|
+
* result: "Task completed successfully",
|
|
54
|
+
* completedAt: new Date().toISOString(),
|
|
55
|
+
* });
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @category TaskStore
|
|
59
|
+
*/
|
|
60
|
+
export function updateBackgroundTask(task, updates) {
|
|
61
|
+
return {
|
|
62
|
+
...task,
|
|
63
|
+
...updates,
|
|
64
|
+
updatedAt: new Date().toISOString(),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Type guard to check if an object is a valid BackgroundTask.
|
|
69
|
+
*
|
|
70
|
+
* @param value - The value to check
|
|
71
|
+
* @returns True if the value is a valid BackgroundTask
|
|
72
|
+
*
|
|
73
|
+
* @category TaskStore
|
|
74
|
+
*/
|
|
75
|
+
export function isBackgroundTask(value) {
|
|
76
|
+
if (typeof value !== "object" || value === null) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
const obj = value;
|
|
80
|
+
return (typeof obj.id === "string" &&
|
|
81
|
+
typeof obj.subagentType === "string" &&
|
|
82
|
+
typeof obj.description === "string" &&
|
|
83
|
+
(obj.status === "pending" ||
|
|
84
|
+
obj.status === "running" ||
|
|
85
|
+
obj.status === "completed" ||
|
|
86
|
+
obj.status === "failed") &&
|
|
87
|
+
typeof obj.createdAt === "string" &&
|
|
88
|
+
typeof obj.updatedAt === "string");
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Check if a task should be expired based on age and status.
|
|
92
|
+
*
|
|
93
|
+
* @param task - The task to check
|
|
94
|
+
* @param expirationMs - Expiration time in milliseconds
|
|
95
|
+
* @returns True if the task should be expired
|
|
96
|
+
*
|
|
97
|
+
* @category TaskStore
|
|
98
|
+
*/
|
|
99
|
+
export function shouldExpireTask(task, expirationMs) {
|
|
100
|
+
// Only expire completed or failed tasks
|
|
101
|
+
if (task.status !== "completed" && task.status !== "failed") {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
// Use completedAt if available, otherwise use updatedAt
|
|
105
|
+
const timestampStr = task.completedAt ?? task.updatedAt;
|
|
106
|
+
const timestamp = new Date(timestampStr).getTime();
|
|
107
|
+
const now = Date.now();
|
|
108
|
+
return now - timestamp > expirationMs;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/task-store/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAkMH,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,oBAAoB,CAClC,IACsE;IAEtE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;QACd,GAAG,IAAI;KACR,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAoB,EACpB,OAA0D;IAE1D,OAAO;QACL,GAAG,IAAI;QACP,GAAG,OAAO;QACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAG,KAAgC,CAAC;IAE7C,OAAO,CACL,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ;QAC1B,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ;QACpC,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ;QACnC,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS;YACvB,GAAG,CAAC,MAAM,KAAK,SAAS;YACxB,GAAG,CAAC,MAAM,KAAK,WAAW;YAC1B,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC;QAC1B,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ;QACjC,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAClC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAoB,EAAE,YAAoB;IACzE,wCAAwC;IACxC,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,wDAAwD;IACxD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,OAAO,GAAG,GAAG,SAAS,GAAG,YAAY,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assertion helpers for agent testing.
|
|
3
|
+
*
|
|
4
|
+
* Provides convenient assertion utilities for testing agent behavior,
|
|
5
|
+
* responses, tool calls, and state.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
import type { LanguageModelUsage } from "ai";
|
|
10
|
+
import type { AgentState, TodoItem } from "../backends/state.js";
|
|
11
|
+
import type { FinishReason, GenerateResult, GenerateResultComplete, StreamPart, ToolCallResult } from "../types.js";
|
|
12
|
+
import type { MockAgent } from "./mock-agent.js";
|
|
13
|
+
/**
|
|
14
|
+
* Error thrown when an agent assertion fails.
|
|
15
|
+
*
|
|
16
|
+
* @category Testing
|
|
17
|
+
*/
|
|
18
|
+
export declare class AgentAssertionError extends Error {
|
|
19
|
+
/** The expected value */
|
|
20
|
+
readonly expected: unknown;
|
|
21
|
+
/** The actual value */
|
|
22
|
+
readonly actual: unknown;
|
|
23
|
+
/** Additional context */
|
|
24
|
+
readonly context?: Record<string, unknown>;
|
|
25
|
+
constructor(message: string, expected: unknown, actual: unknown, context?: Record<string, unknown>);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Assert that a response contains specific text.
|
|
29
|
+
*
|
|
30
|
+
* @param result - The generate result to check
|
|
31
|
+
* @param text - Text that should be present
|
|
32
|
+
* @throws AgentAssertionError if text is not found
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* const result = await agent.generate({ prompt: "Say hello" });
|
|
37
|
+
* assertResponseContains(result, "hello");
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @category Testing
|
|
41
|
+
*/
|
|
42
|
+
export declare function assertResponseContains(result: GenerateResult, text: string): void;
|
|
43
|
+
/**
|
|
44
|
+
* Assert that a response matches a regular expression.
|
|
45
|
+
*
|
|
46
|
+
* @param result - The generate result to check
|
|
47
|
+
* @param pattern - Pattern to match against
|
|
48
|
+
* @throws AgentAssertionError if pattern doesn't match
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* assertResponseMatches(result, /hello.*world/i);
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* @category Testing
|
|
56
|
+
*/
|
|
57
|
+
export declare function assertResponseMatches(result: GenerateResult, pattern: RegExp): void;
|
|
58
|
+
/**
|
|
59
|
+
* Assert that a response has a specific finish reason.
|
|
60
|
+
*
|
|
61
|
+
* @param result - The generate result to check
|
|
62
|
+
* @param reason - Expected finish reason
|
|
63
|
+
* @throws AgentAssertionError if reason doesn't match
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* assertFinishReason(result, "stop");
|
|
68
|
+
* ```
|
|
69
|
+
*
|
|
70
|
+
* @category Testing
|
|
71
|
+
*/
|
|
72
|
+
export declare function assertFinishReason(result: GenerateResult, reason: FinishReason): void;
|
|
73
|
+
/**
|
|
74
|
+
* Assert that a response has usage information.
|
|
75
|
+
*
|
|
76
|
+
* @param result - The generate result to check
|
|
77
|
+
* @throws AgentAssertionError if usage is missing
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* assertHasUsage(result);
|
|
82
|
+
* console.log(result.usage.inputTokens);
|
|
83
|
+
* ```
|
|
84
|
+
*
|
|
85
|
+
* @category Testing
|
|
86
|
+
*/
|
|
87
|
+
export declare function assertHasUsage(result: GenerateResult): asserts result is GenerateResultComplete & {
|
|
88
|
+
usage: LanguageModelUsage;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Assert that token usage is within expected bounds.
|
|
92
|
+
*
|
|
93
|
+
* @param result - The generate result to check
|
|
94
|
+
* @param options - Usage bounds
|
|
95
|
+
* @throws AgentAssertionError if usage is outside bounds
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```typescript
|
|
99
|
+
* assertUsageWithin(result, {
|
|
100
|
+
* maxInputTokens: 1000,
|
|
101
|
+
* maxOutputTokens: 500,
|
|
102
|
+
* });
|
|
103
|
+
* ```
|
|
104
|
+
*
|
|
105
|
+
* @category Testing
|
|
106
|
+
*/
|
|
107
|
+
export declare function assertUsageWithin(result: GenerateResult, options: {
|
|
108
|
+
minInputTokens?: number;
|
|
109
|
+
maxInputTokens?: number;
|
|
110
|
+
minOutputTokens?: number;
|
|
111
|
+
maxOutputTokens?: number;
|
|
112
|
+
}): void;
|
|
113
|
+
/**
|
|
114
|
+
* Assert that structured output was generated.
|
|
115
|
+
*
|
|
116
|
+
* @param result - The generate result to check
|
|
117
|
+
* @throws AgentAssertionError if output is missing
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```typescript
|
|
121
|
+
* assertHasOutput(result);
|
|
122
|
+
* const data = result.output as MySchema;
|
|
123
|
+
* ```
|
|
124
|
+
*
|
|
125
|
+
* @category Testing
|
|
126
|
+
*/
|
|
127
|
+
export declare function assertHasOutput(result: GenerateResult): asserts result is GenerateResultComplete & {
|
|
128
|
+
output: unknown;
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Assert that a specific tool was called.
|
|
132
|
+
*
|
|
133
|
+
* @param result - The generate result to check
|
|
134
|
+
* @param toolName - Name of the tool expected to be called
|
|
135
|
+
* @returns The matching tool call
|
|
136
|
+
* @throws AgentAssertionError if tool was not called
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```typescript
|
|
140
|
+
* const toolCall = assertToolCalled(result, "weather");
|
|
141
|
+
* expect(toolCall.input.city).toBe("Tokyo");
|
|
142
|
+
* ```
|
|
143
|
+
*
|
|
144
|
+
* @category Testing
|
|
145
|
+
*/
|
|
146
|
+
export declare function assertToolCalled(result: GenerateResult, toolName: string): ToolCallResult;
|
|
147
|
+
/**
|
|
148
|
+
* Assert that a tool was called with specific input.
|
|
149
|
+
*
|
|
150
|
+
* @param result - The generate result to check
|
|
151
|
+
* @param toolName - Name of the tool
|
|
152
|
+
* @param expectedInput - Expected input (partial match)
|
|
153
|
+
* @returns The matching tool call
|
|
154
|
+
* @throws AgentAssertionError if tool was not called with expected input
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
* ```typescript
|
|
158
|
+
* assertToolCalledWith(result, "weather", { city: "Tokyo" });
|
|
159
|
+
* ```
|
|
160
|
+
*
|
|
161
|
+
* @category Testing
|
|
162
|
+
*/
|
|
163
|
+
export declare function assertToolCalledWith(result: GenerateResult, toolName: string, expectedInput: Record<string, unknown>): ToolCallResult;
|
|
164
|
+
/**
|
|
165
|
+
* Assert that a tool was NOT called.
|
|
166
|
+
*
|
|
167
|
+
* @param result - The generate result to check
|
|
168
|
+
* @param toolName - Name of the tool that should not be called
|
|
169
|
+
* @throws AgentAssertionError if tool was called
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* ```typescript
|
|
173
|
+
* assertToolNotCalled(result, "dangerousTool");
|
|
174
|
+
* ```
|
|
175
|
+
*
|
|
176
|
+
* @category Testing
|
|
177
|
+
*/
|
|
178
|
+
export declare function assertToolNotCalled(result: GenerateResult, toolName: string): void;
|
|
179
|
+
/**
|
|
180
|
+
* Assert the number of times a tool was called.
|
|
181
|
+
*
|
|
182
|
+
* @param result - The generate result to check
|
|
183
|
+
* @param toolName - Name of the tool
|
|
184
|
+
* @param count - Expected call count
|
|
185
|
+
* @throws AgentAssertionError if count doesn't match
|
|
186
|
+
*
|
|
187
|
+
* @example
|
|
188
|
+
* ```typescript
|
|
189
|
+
* assertToolCallCount(result, "search", 3);
|
|
190
|
+
* ```
|
|
191
|
+
*
|
|
192
|
+
* @category Testing
|
|
193
|
+
*/
|
|
194
|
+
export declare function assertToolCallCount(result: GenerateResult, toolName: string, count: number): void;
|
|
195
|
+
/**
|
|
196
|
+
* Assert that steps were executed.
|
|
197
|
+
*
|
|
198
|
+
* @param result - The generate result to check
|
|
199
|
+
* @param minSteps - Minimum expected steps
|
|
200
|
+
* @param maxSteps - Maximum expected steps (optional)
|
|
201
|
+
* @throws AgentAssertionError if step count is outside bounds
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
* ```typescript
|
|
205
|
+
* assertStepCount(result, 1, 5);
|
|
206
|
+
* ```
|
|
207
|
+
*
|
|
208
|
+
* @category Testing
|
|
209
|
+
*/
|
|
210
|
+
export declare function assertStepCount(result: GenerateResult, minSteps: number, maxSteps?: number): void;
|
|
211
|
+
/**
|
|
212
|
+
* Collect all chunks from a stream into an array.
|
|
213
|
+
*
|
|
214
|
+
* @param stream - The stream to collect
|
|
215
|
+
* @returns Array of all stream parts
|
|
216
|
+
*
|
|
217
|
+
* @example
|
|
218
|
+
* ```typescript
|
|
219
|
+
* const chunks = await collectStreamChunks(agent.stream({ prompt: "Hi" }));
|
|
220
|
+
* assertStreamHasText(chunks);
|
|
221
|
+
* ```
|
|
222
|
+
*
|
|
223
|
+
* @category Testing
|
|
224
|
+
*/
|
|
225
|
+
export declare function collectStreamChunks(stream: AsyncGenerator<StreamPart>): Promise<StreamPart[]>;
|
|
226
|
+
/**
|
|
227
|
+
* Assert that a stream contains text chunks.
|
|
228
|
+
*
|
|
229
|
+
* @param chunks - Collected stream chunks
|
|
230
|
+
* @throws AgentAssertionError if no text chunks found
|
|
231
|
+
*
|
|
232
|
+
* @category Testing
|
|
233
|
+
*/
|
|
234
|
+
export declare function assertStreamHasText(chunks: StreamPart[]): void;
|
|
235
|
+
/**
|
|
236
|
+
* Assert that a stream has a finish chunk.
|
|
237
|
+
*
|
|
238
|
+
* @param chunks - Collected stream chunks
|
|
239
|
+
* @param reason - Optional expected finish reason
|
|
240
|
+
* @throws AgentAssertionError if no finish chunk or wrong reason
|
|
241
|
+
*
|
|
242
|
+
* @category Testing
|
|
243
|
+
*/
|
|
244
|
+
export declare function assertStreamFinished(chunks: StreamPart[], reason?: FinishReason): void;
|
|
245
|
+
/**
|
|
246
|
+
* Get the combined text from stream chunks.
|
|
247
|
+
*
|
|
248
|
+
* @param chunks - Collected stream chunks
|
|
249
|
+
* @returns Combined text
|
|
250
|
+
*
|
|
251
|
+
* @example
|
|
252
|
+
* ```typescript
|
|
253
|
+
* const chunks = await collectStreamChunks(stream);
|
|
254
|
+
* const text = getStreamText(chunks);
|
|
255
|
+
* expect(text).toContain("hello");
|
|
256
|
+
* ```
|
|
257
|
+
*
|
|
258
|
+
* @category Testing
|
|
259
|
+
*/
|
|
260
|
+
export declare function getStreamText(chunks: StreamPart[]): string;
|
|
261
|
+
/**
|
|
262
|
+
* Assert that the combined stream text contains specific content.
|
|
263
|
+
*
|
|
264
|
+
* @param chunks - Collected stream chunks
|
|
265
|
+
* @param text - Text to look for
|
|
266
|
+
* @throws AgentAssertionError if text not found
|
|
267
|
+
*
|
|
268
|
+
* @category Testing
|
|
269
|
+
*/
|
|
270
|
+
export declare function assertStreamTextContains(chunks: StreamPart[], text: string): void;
|
|
271
|
+
/**
|
|
272
|
+
* Assert that agent state contains a file.
|
|
273
|
+
*
|
|
274
|
+
* @param state - The agent state to check
|
|
275
|
+
* @param path - File path
|
|
276
|
+
* @throws AgentAssertionError if file doesn't exist
|
|
277
|
+
*
|
|
278
|
+
* @example
|
|
279
|
+
* ```typescript
|
|
280
|
+
* assertStateHasFile(agent.state, "/src/index.ts");
|
|
281
|
+
* ```
|
|
282
|
+
*
|
|
283
|
+
* @category Testing
|
|
284
|
+
*/
|
|
285
|
+
export declare function assertStateHasFile(state: AgentState, path: string): void;
|
|
286
|
+
/**
|
|
287
|
+
* Assert that agent state has a todo item.
|
|
288
|
+
*
|
|
289
|
+
* @param state - The agent state to check
|
|
290
|
+
* @param matcher - Todo content or partial match
|
|
291
|
+
* @returns The matching todo
|
|
292
|
+
* @throws AgentAssertionError if todo not found
|
|
293
|
+
*
|
|
294
|
+
* @example
|
|
295
|
+
* ```typescript
|
|
296
|
+
* const todo = assertStateHasTodo(agent.state, { content: "Fix bug" });
|
|
297
|
+
* expect(todo.status).toBe("completed");
|
|
298
|
+
* ```
|
|
299
|
+
*
|
|
300
|
+
* @category Testing
|
|
301
|
+
*/
|
|
302
|
+
export declare function assertStateHasTodo(state: AgentState, matcher: string | Partial<TodoItem>): TodoItem;
|
|
303
|
+
/**
|
|
304
|
+
* Assert the number of todos in a state.
|
|
305
|
+
*
|
|
306
|
+
* @param state - The agent state to check
|
|
307
|
+
* @param count - Expected todo count
|
|
308
|
+
* @param status - Optional filter by status
|
|
309
|
+
* @throws AgentAssertionError if count doesn't match
|
|
310
|
+
*
|
|
311
|
+
* @example
|
|
312
|
+
* ```typescript
|
|
313
|
+
* assertTodoCount(agent.state, 3);
|
|
314
|
+
* assertTodoCount(agent.state, 1, "completed");
|
|
315
|
+
* ```
|
|
316
|
+
*
|
|
317
|
+
* @category Testing
|
|
318
|
+
*/
|
|
319
|
+
export declare function assertTodoCount(state: AgentState, count: number, status?: TodoItem["status"]): void;
|
|
320
|
+
/**
|
|
321
|
+
* Assert that a mock agent was called.
|
|
322
|
+
*
|
|
323
|
+
* @param agent - The mock agent
|
|
324
|
+
* @param method - Method to check ("generate" or "stream")
|
|
325
|
+
* @throws AgentAssertionError if not called
|
|
326
|
+
*
|
|
327
|
+
* @category Testing
|
|
328
|
+
*/
|
|
329
|
+
export declare function assertMockAgentCalled(agent: MockAgent, method?: "generate" | "stream"): void;
|
|
330
|
+
/**
|
|
331
|
+
* Assert that a mock agent was called a specific number of times.
|
|
332
|
+
*
|
|
333
|
+
* @param agent - The mock agent
|
|
334
|
+
* @param count - Expected call count
|
|
335
|
+
* @param method - Method to check ("generate" or "stream")
|
|
336
|
+
* @throws AgentAssertionError if count doesn't match
|
|
337
|
+
*
|
|
338
|
+
* @category Testing
|
|
339
|
+
*/
|
|
340
|
+
export declare function assertMockAgentCallCount(agent: MockAgent, count: number, method?: "generate" | "stream"): void;
|
|
341
|
+
/**
|
|
342
|
+
* Assert that a mock agent was called with specific options.
|
|
343
|
+
*
|
|
344
|
+
* @param agent - The mock agent
|
|
345
|
+
* @param options - Expected options (partial match)
|
|
346
|
+
* @param method - Method to check
|
|
347
|
+
* @throws AgentAssertionError if not called with options
|
|
348
|
+
*
|
|
349
|
+
* @category Testing
|
|
350
|
+
*/
|
|
351
|
+
export declare function assertMockAgentCalledWith(agent: MockAgent, options: Record<string, unknown>, method?: "generate" | "stream"): void;
|
|
352
|
+
/**
|
|
353
|
+
* Options for assertAgentBehavior.
|
|
354
|
+
*
|
|
355
|
+
* @category Testing
|
|
356
|
+
*/
|
|
357
|
+
export interface AgentBehaviorOptions {
|
|
358
|
+
/** Expected response text (partial match) */
|
|
359
|
+
responseContains?: string | string[];
|
|
360
|
+
/** Expected response pattern */
|
|
361
|
+
responseMatches?: RegExp;
|
|
362
|
+
/** Expected finish reason */
|
|
363
|
+
finishReason?: FinishReason;
|
|
364
|
+
/** Tools that should be called */
|
|
365
|
+
toolsCalled?: string[];
|
|
366
|
+
/** Tools that should NOT be called */
|
|
367
|
+
toolsNotCalled?: string[];
|
|
368
|
+
/** Minimum steps */
|
|
369
|
+
minSteps?: number;
|
|
370
|
+
/** Maximum steps */
|
|
371
|
+
maxSteps?: number;
|
|
372
|
+
/** Has structured output */
|
|
373
|
+
hasOutput?: boolean;
|
|
374
|
+
/** Has usage information */
|
|
375
|
+
hasUsage?: boolean;
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Assert multiple agent behavior expectations at once.
|
|
379
|
+
*
|
|
380
|
+
* This is a convenience function that combines multiple assertions.
|
|
381
|
+
*
|
|
382
|
+
* @param result - The generate result to check
|
|
383
|
+
* @param options - Behavior expectations
|
|
384
|
+
* @throws AgentAssertionError if any expectation fails
|
|
385
|
+
*
|
|
386
|
+
* @example
|
|
387
|
+
* ```typescript
|
|
388
|
+
* assertAgentBehavior(result, {
|
|
389
|
+
* responseContains: ["hello", "world"],
|
|
390
|
+
* finishReason: "stop",
|
|
391
|
+
* toolsCalled: ["search"],
|
|
392
|
+
* toolsNotCalled: ["delete"],
|
|
393
|
+
* minSteps: 1,
|
|
394
|
+
* hasUsage: true,
|
|
395
|
+
* });
|
|
396
|
+
* ```
|
|
397
|
+
*
|
|
398
|
+
* @category Testing
|
|
399
|
+
*/
|
|
400
|
+
export declare function assertAgentBehavior(result: GenerateResult, options: AgentBehaviorOptions): void;
|
|
401
|
+
//# sourceMappingURL=assertions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertions.d.ts","sourceRoot":"","sources":["../../src/testing/assertions.ts"],"names":[],"mappings":"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"}
|