@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,288 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recorded response playback system for testing.
|
|
3
|
+
*
|
|
4
|
+
* Allows recording agent interactions and replaying them deterministically
|
|
5
|
+
* for testing and development purposes.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
import type { LanguageModelUsage, ModelMessage } from "ai";
|
|
10
|
+
import type { Agent, FinishReason, GenerateResultComplete } from "../types.js";
|
|
11
|
+
import { type MockAgent } from "./mock-agent.js";
|
|
12
|
+
/**
|
|
13
|
+
* A single recorded interaction.
|
|
14
|
+
*
|
|
15
|
+
* @category Testing
|
|
16
|
+
*/
|
|
17
|
+
export interface RecordedInteraction {
|
|
18
|
+
/** Timestamp when the interaction was recorded */
|
|
19
|
+
timestamp: string;
|
|
20
|
+
/** The request options */
|
|
21
|
+
request: {
|
|
22
|
+
prompt?: string;
|
|
23
|
+
messages?: ModelMessage[];
|
|
24
|
+
threadId?: string;
|
|
25
|
+
maxTokens?: number;
|
|
26
|
+
temperature?: number;
|
|
27
|
+
};
|
|
28
|
+
/** The response */
|
|
29
|
+
response: {
|
|
30
|
+
text: string;
|
|
31
|
+
finishReason: FinishReason;
|
|
32
|
+
usage?: LanguageModelUsage;
|
|
33
|
+
output?: unknown;
|
|
34
|
+
steps?: GenerateResultComplete["steps"];
|
|
35
|
+
};
|
|
36
|
+
/** Method used (generate or stream) */
|
|
37
|
+
method: "generate" | "stream";
|
|
38
|
+
/** Duration in milliseconds */
|
|
39
|
+
duration?: number;
|
|
40
|
+
/** Any error that occurred */
|
|
41
|
+
error?: {
|
|
42
|
+
message: string;
|
|
43
|
+
name: string;
|
|
44
|
+
stack?: string;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* A recording session containing multiple interactions.
|
|
49
|
+
*
|
|
50
|
+
* @category Testing
|
|
51
|
+
*/
|
|
52
|
+
export interface Recording {
|
|
53
|
+
/** Version of the recording format */
|
|
54
|
+
version: string;
|
|
55
|
+
/** When the recording was created */
|
|
56
|
+
createdAt: string;
|
|
57
|
+
/** Optional description of the recording */
|
|
58
|
+
description?: string;
|
|
59
|
+
/** Optional tags for categorization */
|
|
60
|
+
tags?: string[];
|
|
61
|
+
/** The recorded interactions in order */
|
|
62
|
+
interactions: RecordedInteraction[];
|
|
63
|
+
/** Metadata about the recording session */
|
|
64
|
+
metadata?: Record<string, unknown>;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* An agent that records all interactions.
|
|
68
|
+
*
|
|
69
|
+
* @category Testing
|
|
70
|
+
*/
|
|
71
|
+
export interface RecordingAgent extends Agent {
|
|
72
|
+
/** Get all recorded interactions */
|
|
73
|
+
getRecording(): Recording;
|
|
74
|
+
/** Clear all recorded interactions */
|
|
75
|
+
clearRecording(): void;
|
|
76
|
+
/** Export recording to JSON */
|
|
77
|
+
exportRecording(): string;
|
|
78
|
+
/** The underlying agent being recorded */
|
|
79
|
+
readonly wrappedAgent: Agent;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Options for creating a recording agent.
|
|
83
|
+
*
|
|
84
|
+
* @category Testing
|
|
85
|
+
*/
|
|
86
|
+
export interface RecordingAgentOptions {
|
|
87
|
+
/** Description for the recording */
|
|
88
|
+
description?: string;
|
|
89
|
+
/** Tags for the recording */
|
|
90
|
+
tags?: string[];
|
|
91
|
+
/** Additional metadata */
|
|
92
|
+
metadata?: Record<string, unknown>;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Wraps an agent to record all interactions.
|
|
96
|
+
*
|
|
97
|
+
* Use this to capture real agent interactions that can later be replayed
|
|
98
|
+
* for testing. This is useful for creating deterministic test fixtures
|
|
99
|
+
* from actual API calls.
|
|
100
|
+
*
|
|
101
|
+
* @param agent - The agent to wrap and record
|
|
102
|
+
* @param options - Recording options
|
|
103
|
+
* @returns A recording agent that captures all interactions
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* import { createRecordingAgent } from "@lleverage-ai/agent-sdk/testing";
|
|
108
|
+
*
|
|
109
|
+
* // Wrap a real agent
|
|
110
|
+
* const recordingAgent = createRecordingAgent(realAgent, {
|
|
111
|
+
* description: "User authentication flow",
|
|
112
|
+
* });
|
|
113
|
+
*
|
|
114
|
+
* // Make some real calls
|
|
115
|
+
* await recordingAgent.generate({ prompt: "Hello" });
|
|
116
|
+
* await recordingAgent.generate({ prompt: "How are you?" });
|
|
117
|
+
*
|
|
118
|
+
* // Export the recording
|
|
119
|
+
* const json = recordingAgent.exportRecording();
|
|
120
|
+
* fs.writeFileSync("auth-flow.json", json);
|
|
121
|
+
* ```
|
|
122
|
+
*
|
|
123
|
+
* @category Testing
|
|
124
|
+
*/
|
|
125
|
+
export declare function createRecordingAgent(agent: Agent, options?: RecordingAgentOptions): RecordingAgent;
|
|
126
|
+
/**
|
|
127
|
+
* Options for creating a playback agent.
|
|
128
|
+
*
|
|
129
|
+
* @category Testing
|
|
130
|
+
*/
|
|
131
|
+
export interface PlaybackAgentOptions {
|
|
132
|
+
/** The recording to play back */
|
|
133
|
+
recording: Recording;
|
|
134
|
+
/** How to match requests to recordings */
|
|
135
|
+
matchMode?: "sequence" | "prompt" | "fuzzy";
|
|
136
|
+
/** Throw error if no matching recording found */
|
|
137
|
+
strict?: boolean;
|
|
138
|
+
/** Delay multiplier for simulating timing (0 = instant, 1 = real timing) */
|
|
139
|
+
timingMultiplier?: number;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* An agent that plays back recorded interactions.
|
|
143
|
+
*
|
|
144
|
+
* @category Testing
|
|
145
|
+
*/
|
|
146
|
+
export interface PlaybackAgent extends MockAgent {
|
|
147
|
+
/** Get the current playback position */
|
|
148
|
+
getPlaybackPosition(): number;
|
|
149
|
+
/** Reset playback to the beginning */
|
|
150
|
+
resetPlayback(): void;
|
|
151
|
+
/** Get remaining interactions count */
|
|
152
|
+
getRemainingCount(): number;
|
|
153
|
+
/** Check if playback is complete */
|
|
154
|
+
isComplete(): boolean;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Creates an agent that plays back recorded interactions.
|
|
158
|
+
*
|
|
159
|
+
* Use this to replay previously recorded agent interactions for
|
|
160
|
+
* deterministic testing. This is useful for regression tests and
|
|
161
|
+
* testing code that depends on agent behavior.
|
|
162
|
+
*
|
|
163
|
+
* @param options - Playback configuration
|
|
164
|
+
* @returns A playback agent
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```typescript
|
|
168
|
+
* import { createPlaybackAgent, parseRecording } from "@lleverage-ai/agent-sdk/testing";
|
|
169
|
+
* import recordingJson from "./fixtures/auth-flow.json";
|
|
170
|
+
*
|
|
171
|
+
* const agent = createPlaybackAgent({
|
|
172
|
+
* recording: parseRecording(recordingJson),
|
|
173
|
+
* matchMode: "sequence",
|
|
174
|
+
* });
|
|
175
|
+
*
|
|
176
|
+
* // Calls will return recorded responses in order
|
|
177
|
+
* const r1 = await agent.generate({ prompt: "Hello" });
|
|
178
|
+
* const r2 = await agent.generate({ prompt: "How are you?" });
|
|
179
|
+
*
|
|
180
|
+
* expect(agent.isComplete()).toBe(true);
|
|
181
|
+
* ```
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```typescript
|
|
185
|
+
* // Match by prompt content
|
|
186
|
+
* const agent = createPlaybackAgent({
|
|
187
|
+
* recording,
|
|
188
|
+
* matchMode: "prompt",
|
|
189
|
+
* });
|
|
190
|
+
*
|
|
191
|
+
* // Order doesn't matter - matches by prompt text
|
|
192
|
+
* await agent.generate({ prompt: "How are you?" }); // Matches second recording
|
|
193
|
+
* await agent.generate({ prompt: "Hello" }); // Matches first recording
|
|
194
|
+
* ```
|
|
195
|
+
*
|
|
196
|
+
* @category Testing
|
|
197
|
+
*/
|
|
198
|
+
export declare function createPlaybackAgent(options: PlaybackAgentOptions): PlaybackAgent;
|
|
199
|
+
/**
|
|
200
|
+
* Parse a recording from JSON.
|
|
201
|
+
*
|
|
202
|
+
* @param json - JSON string or object
|
|
203
|
+
* @returns Parsed recording
|
|
204
|
+
*
|
|
205
|
+
* @example
|
|
206
|
+
* ```typescript
|
|
207
|
+
* const recording = parseRecording(fs.readFileSync("recording.json", "utf-8"));
|
|
208
|
+
* ```
|
|
209
|
+
*
|
|
210
|
+
* @category Testing
|
|
211
|
+
*/
|
|
212
|
+
export declare function parseRecording(json: string | object): Recording;
|
|
213
|
+
/**
|
|
214
|
+
* Merge multiple recordings into one.
|
|
215
|
+
*
|
|
216
|
+
* @param recordings - Recordings to merge
|
|
217
|
+
* @param options - Merge options
|
|
218
|
+
* @returns Merged recording
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```typescript
|
|
222
|
+
* const merged = mergeRecordings([recording1, recording2], {
|
|
223
|
+
* description: "Combined test fixtures",
|
|
224
|
+
* });
|
|
225
|
+
* ```
|
|
226
|
+
*
|
|
227
|
+
* @category Testing
|
|
228
|
+
*/
|
|
229
|
+
export declare function mergeRecordings(recordings: Recording[], options?: {
|
|
230
|
+
description?: string;
|
|
231
|
+
tags?: string[];
|
|
232
|
+
}): Recording;
|
|
233
|
+
/**
|
|
234
|
+
* Filter a recording to include only matching interactions.
|
|
235
|
+
*
|
|
236
|
+
* @param recording - Recording to filter
|
|
237
|
+
* @param predicate - Filter function
|
|
238
|
+
* @returns Filtered recording
|
|
239
|
+
*
|
|
240
|
+
* @example
|
|
241
|
+
* ```typescript
|
|
242
|
+
* // Keep only successful interactions
|
|
243
|
+
* const filtered = filterRecording(recording, (i) => !i.error);
|
|
244
|
+
*
|
|
245
|
+
* // Keep only generate calls
|
|
246
|
+
* const generates = filterRecording(recording, (i) => i.method === "generate");
|
|
247
|
+
* ```
|
|
248
|
+
*
|
|
249
|
+
* @category Testing
|
|
250
|
+
*/
|
|
251
|
+
export declare function filterRecording(recording: Recording, predicate: (interaction: RecordedInteraction) => boolean): Recording;
|
|
252
|
+
/**
|
|
253
|
+
* Create a recording from manual interaction definitions.
|
|
254
|
+
*
|
|
255
|
+
* Useful for creating test fixtures without running actual agent calls.
|
|
256
|
+
*
|
|
257
|
+
* @param interactions - Interactions to include
|
|
258
|
+
* @param options - Recording options
|
|
259
|
+
* @returns A recording object
|
|
260
|
+
*
|
|
261
|
+
* @example
|
|
262
|
+
* ```typescript
|
|
263
|
+
* const recording = createRecording([
|
|
264
|
+
* {
|
|
265
|
+
* request: { prompt: "Hello" },
|
|
266
|
+
* response: { text: "Hi there!", finishReason: "stop" },
|
|
267
|
+
* },
|
|
268
|
+
* {
|
|
269
|
+
* request: { prompt: "Goodbye" },
|
|
270
|
+
* response: { text: "See you!", finishReason: "stop" },
|
|
271
|
+
* },
|
|
272
|
+
* ], { description: "Basic greeting flow" });
|
|
273
|
+
* ```
|
|
274
|
+
*
|
|
275
|
+
* @category Testing
|
|
276
|
+
*/
|
|
277
|
+
export declare function createRecording(interactions: Array<{
|
|
278
|
+
request: RecordedInteraction["request"];
|
|
279
|
+
response: RecordedInteraction["response"];
|
|
280
|
+
method?: "generate" | "stream";
|
|
281
|
+
duration?: number;
|
|
282
|
+
error?: RecordedInteraction["error"];
|
|
283
|
+
}>, options?: {
|
|
284
|
+
description?: string;
|
|
285
|
+
tags?: string[];
|
|
286
|
+
metadata?: Record<string, unknown>;
|
|
287
|
+
}): Recording;
|
|
288
|
+
//# sourceMappingURL=recorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../../src/testing/recorder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,KAAK,EACV,KAAK,EACL,YAAY,EAGZ,sBAAsB,EAEvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAmB,KAAK,SAAS,EAAqB,MAAM,iBAAiB,CAAC;AAMrF;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAElB,0BAA0B;IAC1B,OAAO,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF,mBAAmB;IACnB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,YAAY,CAAC;QAC3B,KAAK,CAAC,EAAE,kBAAkB,CAAC;QAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;KACzC,CAAC;IAEF,uCAAuC;IACvC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC;IAE9B,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,8BAA8B;IAC9B,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAEhB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAElB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,yCAAyC;IACzC,YAAY,EAAE,mBAAmB,EAAE,CAAC;IAEpC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAMD;;;;GAIG;AACH,MAAM,WAAW,cAAe,SAAQ,KAAK;IAC3C,oCAAoC;IACpC,YAAY,IAAI,SAAS,CAAC;IAE1B,sCAAsC;IACtC,cAAc,IAAI,IAAI,CAAC;IAEvB,+BAA+B;IAC/B,eAAe,IAAI,MAAM,CAAC;IAE1B,0CAA0C;IAC1C,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,qBAA0B,GAClC,cAAc,CAgNhB;AAMD;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,iCAAiC;IACjC,SAAS,EAAE,SAAS,CAAC;IAErB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IAE5C,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,wCAAwC;IACxC,mBAAmB,IAAI,MAAM,CAAC;IAE9B,sCAAsC;IACtC,aAAa,IAAI,IAAI,CAAC;IAEtB,uCAAuC;IACvC,iBAAiB,IAAI,MAAM,CAAC;IAE5B,oCAAoC;IACpC,UAAU,IAAI,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAwHhF;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAS/D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,SAAS,EAAE,EACvB,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAClD,SAAS,CAuBX;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,CAAC,WAAW,EAAE,mBAAmB,KAAK,OAAO,GACvD,SAAS,CAKX;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,KAAK,CAAC;IAClB,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACxC,QAAQ,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC,EACF,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACtF,SAAS,CAkBX"}
|