@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.
Files changed (327) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2321 -0
  3. package/dist/agent.d.ts +52 -0
  4. package/dist/agent.d.ts.map +1 -0
  5. package/dist/agent.js +2122 -0
  6. package/dist/agent.js.map +1 -0
  7. package/dist/backend.d.ts +378 -0
  8. package/dist/backend.d.ts.map +1 -0
  9. package/dist/backend.js +71 -0
  10. package/dist/backend.js.map +1 -0
  11. package/dist/backends/composite.d.ts +258 -0
  12. package/dist/backends/composite.d.ts.map +1 -0
  13. package/dist/backends/composite.js +437 -0
  14. package/dist/backends/composite.js.map +1 -0
  15. package/dist/backends/filesystem.d.ts +268 -0
  16. package/dist/backends/filesystem.d.ts.map +1 -0
  17. package/dist/backends/filesystem.js +623 -0
  18. package/dist/backends/filesystem.js.map +1 -0
  19. package/dist/backends/index.d.ts +14 -0
  20. package/dist/backends/index.d.ts.map +1 -0
  21. package/dist/backends/index.js +14 -0
  22. package/dist/backends/index.js.map +1 -0
  23. package/dist/backends/persistent.d.ts +312 -0
  24. package/dist/backends/persistent.d.ts.map +1 -0
  25. package/dist/backends/persistent.js +519 -0
  26. package/dist/backends/persistent.js.map +1 -0
  27. package/dist/backends/sandbox.d.ts +315 -0
  28. package/dist/backends/sandbox.d.ts.map +1 -0
  29. package/dist/backends/sandbox.js +490 -0
  30. package/dist/backends/sandbox.js.map +1 -0
  31. package/dist/backends/state.d.ts +225 -0
  32. package/dist/backends/state.d.ts.map +1 -0
  33. package/dist/backends/state.js +396 -0
  34. package/dist/backends/state.js.map +1 -0
  35. package/dist/checkpointer/file-saver.d.ts +182 -0
  36. package/dist/checkpointer/file-saver.d.ts.map +1 -0
  37. package/dist/checkpointer/file-saver.js +298 -0
  38. package/dist/checkpointer/file-saver.js.map +1 -0
  39. package/dist/checkpointer/index.d.ts +40 -0
  40. package/dist/checkpointer/index.d.ts.map +1 -0
  41. package/dist/checkpointer/index.js +40 -0
  42. package/dist/checkpointer/index.js.map +1 -0
  43. package/dist/checkpointer/kv-saver.d.ts +142 -0
  44. package/dist/checkpointer/kv-saver.d.ts.map +1 -0
  45. package/dist/checkpointer/kv-saver.js +176 -0
  46. package/dist/checkpointer/kv-saver.js.map +1 -0
  47. package/dist/checkpointer/memory-saver.d.ts +158 -0
  48. package/dist/checkpointer/memory-saver.d.ts.map +1 -0
  49. package/dist/checkpointer/memory-saver.js +222 -0
  50. package/dist/checkpointer/memory-saver.js.map +1 -0
  51. package/dist/checkpointer/types.d.ts +353 -0
  52. package/dist/checkpointer/types.d.ts.map +1 -0
  53. package/dist/checkpointer/types.js +159 -0
  54. package/dist/checkpointer/types.js.map +1 -0
  55. package/dist/context-manager.d.ts +627 -0
  56. package/dist/context-manager.d.ts.map +1 -0
  57. package/dist/context-manager.js +1039 -0
  58. package/dist/context-manager.js.map +1 -0
  59. package/dist/context.d.ts +57 -0
  60. package/dist/context.d.ts.map +1 -0
  61. package/dist/context.js +76 -0
  62. package/dist/context.js.map +1 -0
  63. package/dist/errors/index.d.ts +611 -0
  64. package/dist/errors/index.d.ts.map +1 -0
  65. package/dist/errors/index.js +1023 -0
  66. package/dist/errors/index.js.map +1 -0
  67. package/dist/generation-helpers.d.ts +126 -0
  68. package/dist/generation-helpers.d.ts.map +1 -0
  69. package/dist/generation-helpers.js +181 -0
  70. package/dist/generation-helpers.js.map +1 -0
  71. package/dist/hooks/audit.d.ts +210 -0
  72. package/dist/hooks/audit.d.ts.map +1 -0
  73. package/dist/hooks/audit.js +305 -0
  74. package/dist/hooks/audit.js.map +1 -0
  75. package/dist/hooks/cache.d.ts +180 -0
  76. package/dist/hooks/cache.d.ts.map +1 -0
  77. package/dist/hooks/cache.js +273 -0
  78. package/dist/hooks/cache.js.map +1 -0
  79. package/dist/hooks/guardrails.d.ts +145 -0
  80. package/dist/hooks/guardrails.d.ts.map +1 -0
  81. package/dist/hooks/guardrails.js +326 -0
  82. package/dist/hooks/guardrails.js.map +1 -0
  83. package/dist/hooks/index.d.ts +18 -0
  84. package/dist/hooks/index.d.ts.map +1 -0
  85. package/dist/hooks/index.js +32 -0
  86. package/dist/hooks/index.js.map +1 -0
  87. package/dist/hooks/logging.d.ts +193 -0
  88. package/dist/hooks/logging.d.ts.map +1 -0
  89. package/dist/hooks/logging.js +345 -0
  90. package/dist/hooks/logging.js.map +1 -0
  91. package/dist/hooks/parallel-guardrails.d.ts +268 -0
  92. package/dist/hooks/parallel-guardrails.d.ts.map +1 -0
  93. package/dist/hooks/parallel-guardrails.js +416 -0
  94. package/dist/hooks/parallel-guardrails.js.map +1 -0
  95. package/dist/hooks/rate-limit.d.ts +305 -0
  96. package/dist/hooks/rate-limit.d.ts.map +1 -0
  97. package/dist/hooks/rate-limit.js +372 -0
  98. package/dist/hooks/rate-limit.js.map +1 -0
  99. package/dist/hooks/retry.d.ts +144 -0
  100. package/dist/hooks/retry.d.ts.map +1 -0
  101. package/dist/hooks/retry.js +210 -0
  102. package/dist/hooks/retry.js.map +1 -0
  103. package/dist/hooks/secrets.d.ts +174 -0
  104. package/dist/hooks/secrets.d.ts.map +1 -0
  105. package/dist/hooks/secrets.js +306 -0
  106. package/dist/hooks/secrets.js.map +1 -0
  107. package/dist/hooks.d.ts +229 -0
  108. package/dist/hooks.d.ts.map +1 -0
  109. package/dist/hooks.js +352 -0
  110. package/dist/hooks.js.map +1 -0
  111. package/dist/index.d.ts +97 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +182 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/mcp/env.d.ts +25 -0
  116. package/dist/mcp/env.d.ts.map +1 -0
  117. package/dist/mcp/env.js +18 -0
  118. package/dist/mcp/env.js.map +1 -0
  119. package/dist/mcp/index.d.ts +16 -0
  120. package/dist/mcp/index.d.ts.map +1 -0
  121. package/dist/mcp/index.js +17 -0
  122. package/dist/mcp/index.js.map +1 -0
  123. package/dist/mcp/manager.d.ts +184 -0
  124. package/dist/mcp/manager.d.ts.map +1 -0
  125. package/dist/mcp/manager.js +446 -0
  126. package/dist/mcp/manager.js.map +1 -0
  127. package/dist/mcp/types.d.ts +58 -0
  128. package/dist/mcp/types.d.ts.map +1 -0
  129. package/dist/mcp/types.js +7 -0
  130. package/dist/mcp/types.js.map +1 -0
  131. package/dist/mcp/validation.d.ts +119 -0
  132. package/dist/mcp/validation.d.ts.map +1 -0
  133. package/dist/mcp/validation.js +407 -0
  134. package/dist/mcp/validation.js.map +1 -0
  135. package/dist/mcp/virtual-server.d.ts +78 -0
  136. package/dist/mcp/virtual-server.d.ts.map +1 -0
  137. package/dist/mcp/virtual-server.js +137 -0
  138. package/dist/mcp/virtual-server.js.map +1 -0
  139. package/dist/memory/filesystem-store.d.ts +217 -0
  140. package/dist/memory/filesystem-store.d.ts.map +1 -0
  141. package/dist/memory/filesystem-store.js +343 -0
  142. package/dist/memory/filesystem-store.js.map +1 -0
  143. package/dist/memory/index.d.ts +46 -0
  144. package/dist/memory/index.d.ts.map +1 -0
  145. package/dist/memory/index.js +46 -0
  146. package/dist/memory/index.js.map +1 -0
  147. package/dist/memory/loader.d.ts +396 -0
  148. package/dist/memory/loader.d.ts.map +1 -0
  149. package/dist/memory/loader.js +419 -0
  150. package/dist/memory/loader.js.map +1 -0
  151. package/dist/memory/permissions.d.ts +282 -0
  152. package/dist/memory/permissions.d.ts.map +1 -0
  153. package/dist/memory/permissions.js +297 -0
  154. package/dist/memory/permissions.js.map +1 -0
  155. package/dist/memory/rules.d.ts +249 -0
  156. package/dist/memory/rules.d.ts.map +1 -0
  157. package/dist/memory/rules.js +362 -0
  158. package/dist/memory/rules.js.map +1 -0
  159. package/dist/memory/store.d.ts +286 -0
  160. package/dist/memory/store.d.ts.map +1 -0
  161. package/dist/memory/store.js +263 -0
  162. package/dist/memory/store.js.map +1 -0
  163. package/dist/middleware/apply.d.ts +73 -0
  164. package/dist/middleware/apply.d.ts.map +1 -0
  165. package/dist/middleware/apply.js +219 -0
  166. package/dist/middleware/apply.js.map +1 -0
  167. package/dist/middleware/context.d.ts +33 -0
  168. package/dist/middleware/context.d.ts.map +1 -0
  169. package/dist/middleware/context.js +176 -0
  170. package/dist/middleware/context.js.map +1 -0
  171. package/dist/middleware/index.d.ts +31 -0
  172. package/dist/middleware/index.d.ts.map +1 -0
  173. package/dist/middleware/index.js +32 -0
  174. package/dist/middleware/index.js.map +1 -0
  175. package/dist/middleware/logging.d.ts +137 -0
  176. package/dist/middleware/logging.d.ts.map +1 -0
  177. package/dist/middleware/logging.js +374 -0
  178. package/dist/middleware/logging.js.map +1 -0
  179. package/dist/middleware/types.d.ts +183 -0
  180. package/dist/middleware/types.d.ts.map +1 -0
  181. package/dist/middleware/types.js +11 -0
  182. package/dist/middleware/types.js.map +1 -0
  183. package/dist/observability/events.d.ts +183 -0
  184. package/dist/observability/events.d.ts.map +1 -0
  185. package/dist/observability/events.js +305 -0
  186. package/dist/observability/events.js.map +1 -0
  187. package/dist/observability/index.d.ts +55 -0
  188. package/dist/observability/index.d.ts.map +1 -0
  189. package/dist/observability/index.js +87 -0
  190. package/dist/observability/index.js.map +1 -0
  191. package/dist/observability/logger.d.ts +318 -0
  192. package/dist/observability/logger.d.ts.map +1 -0
  193. package/dist/observability/logger.js +436 -0
  194. package/dist/observability/logger.js.map +1 -0
  195. package/dist/observability/metrics.d.ts +341 -0
  196. package/dist/observability/metrics.d.ts.map +1 -0
  197. package/dist/observability/metrics.js +490 -0
  198. package/dist/observability/metrics.js.map +1 -0
  199. package/dist/observability/preset.d.ts +161 -0
  200. package/dist/observability/preset.d.ts.map +1 -0
  201. package/dist/observability/preset.js +133 -0
  202. package/dist/observability/preset.js.map +1 -0
  203. package/dist/observability/streaming.d.ts +113 -0
  204. package/dist/observability/streaming.d.ts.map +1 -0
  205. package/dist/observability/streaming.js +114 -0
  206. package/dist/observability/streaming.js.map +1 -0
  207. package/dist/observability/tracing.d.ts +378 -0
  208. package/dist/observability/tracing.d.ts.map +1 -0
  209. package/dist/observability/tracing.js +539 -0
  210. package/dist/observability/tracing.js.map +1 -0
  211. package/dist/plugins.d.ts +55 -0
  212. package/dist/plugins.d.ts.map +1 -0
  213. package/dist/plugins.js +63 -0
  214. package/dist/plugins.js.map +1 -0
  215. package/dist/presets/index.d.ts +7 -0
  216. package/dist/presets/index.d.ts.map +1 -0
  217. package/dist/presets/index.js +7 -0
  218. package/dist/presets/index.js.map +1 -0
  219. package/dist/presets/production.d.ts +262 -0
  220. package/dist/presets/production.d.ts.map +1 -0
  221. package/dist/presets/production.js +295 -0
  222. package/dist/presets/production.js.map +1 -0
  223. package/dist/security/index.d.ts +179 -0
  224. package/dist/security/index.d.ts.map +1 -0
  225. package/dist/security/index.js +323 -0
  226. package/dist/security/index.js.map +1 -0
  227. package/dist/subagents/advanced.d.ts +413 -0
  228. package/dist/subagents/advanced.d.ts.map +1 -0
  229. package/dist/subagents/advanced.js +396 -0
  230. package/dist/subagents/advanced.js.map +1 -0
  231. package/dist/subagents/index.d.ts +14 -0
  232. package/dist/subagents/index.d.ts.map +1 -0
  233. package/dist/subagents/index.js +15 -0
  234. package/dist/subagents/index.js.map +1 -0
  235. package/dist/subagents.d.ts +73 -0
  236. package/dist/subagents.d.ts.map +1 -0
  237. package/dist/subagents.js +213 -0
  238. package/dist/subagents.js.map +1 -0
  239. package/dist/task-store/file-store.d.ts +76 -0
  240. package/dist/task-store/file-store.d.ts.map +1 -0
  241. package/dist/task-store/file-store.js +190 -0
  242. package/dist/task-store/file-store.js.map +1 -0
  243. package/dist/task-store/index.d.ts +11 -0
  244. package/dist/task-store/index.d.ts.map +1 -0
  245. package/dist/task-store/index.js +10 -0
  246. package/dist/task-store/index.js.map +1 -0
  247. package/dist/task-store/kv-store.d.ts +140 -0
  248. package/dist/task-store/kv-store.d.ts.map +1 -0
  249. package/dist/task-store/kv-store.js +169 -0
  250. package/dist/task-store/kv-store.js.map +1 -0
  251. package/dist/task-store/memory-store.d.ts +66 -0
  252. package/dist/task-store/memory-store.d.ts.map +1 -0
  253. package/dist/task-store/memory-store.js +125 -0
  254. package/dist/task-store/memory-store.js.map +1 -0
  255. package/dist/task-store/types.d.ts +235 -0
  256. package/dist/task-store/types.d.ts.map +1 -0
  257. package/dist/task-store/types.js +110 -0
  258. package/dist/task-store/types.js.map +1 -0
  259. package/dist/testing/assertions.d.ts +401 -0
  260. package/dist/testing/assertions.d.ts.map +1 -0
  261. package/dist/testing/assertions.js +630 -0
  262. package/dist/testing/assertions.js.map +1 -0
  263. package/dist/testing/index.d.ts +343 -0
  264. package/dist/testing/index.d.ts.map +1 -0
  265. package/dist/testing/index.js +360 -0
  266. package/dist/testing/index.js.map +1 -0
  267. package/dist/testing/mock-agent.d.ts +214 -0
  268. package/dist/testing/mock-agent.d.ts.map +1 -0
  269. package/dist/testing/mock-agent.js +448 -0
  270. package/dist/testing/mock-agent.js.map +1 -0
  271. package/dist/testing/recorder.d.ts +288 -0
  272. package/dist/testing/recorder.d.ts.map +1 -0
  273. package/dist/testing/recorder.js +499 -0
  274. package/dist/testing/recorder.js.map +1 -0
  275. package/dist/tools/execute.d.ts +104 -0
  276. package/dist/tools/execute.d.ts.map +1 -0
  277. package/dist/tools/execute.js +191 -0
  278. package/dist/tools/execute.js.map +1 -0
  279. package/dist/tools/factory.d.ts +260 -0
  280. package/dist/tools/factory.d.ts.map +1 -0
  281. package/dist/tools/factory.js +241 -0
  282. package/dist/tools/factory.js.map +1 -0
  283. package/dist/tools/filesystem.d.ts +215 -0
  284. package/dist/tools/filesystem.d.ts.map +1 -0
  285. package/dist/tools/filesystem.js +311 -0
  286. package/dist/tools/filesystem.js.map +1 -0
  287. package/dist/tools/index.d.ts +33 -0
  288. package/dist/tools/index.d.ts.map +1 -0
  289. package/dist/tools/index.js +33 -0
  290. package/dist/tools/index.js.map +1 -0
  291. package/dist/tools/search.d.ts +59 -0
  292. package/dist/tools/search.d.ts.map +1 -0
  293. package/dist/tools/search.js +94 -0
  294. package/dist/tools/search.js.map +1 -0
  295. package/dist/tools/skills.d.ts +354 -0
  296. package/dist/tools/skills.d.ts.map +1 -0
  297. package/dist/tools/skills.js +413 -0
  298. package/dist/tools/skills.js.map +1 -0
  299. package/dist/tools/task.d.ts +272 -0
  300. package/dist/tools/task.d.ts.map +1 -0
  301. package/dist/tools/task.js +521 -0
  302. package/dist/tools/task.js.map +1 -0
  303. package/dist/tools/todos.d.ts +131 -0
  304. package/dist/tools/todos.d.ts.map +1 -0
  305. package/dist/tools/todos.js +120 -0
  306. package/dist/tools/todos.js.map +1 -0
  307. package/dist/tools/tool-registry.d.ts +424 -0
  308. package/dist/tools/tool-registry.d.ts.map +1 -0
  309. package/dist/tools/tool-registry.js +607 -0
  310. package/dist/tools/tool-registry.js.map +1 -0
  311. package/dist/tools/user-interaction.d.ts +116 -0
  312. package/dist/tools/user-interaction.d.ts.map +1 -0
  313. package/dist/tools/user-interaction.js +147 -0
  314. package/dist/tools/user-interaction.js.map +1 -0
  315. package/dist/tools/utils.d.ts +124 -0
  316. package/dist/tools/utils.d.ts.map +1 -0
  317. package/dist/tools/utils.js +189 -0
  318. package/dist/tools/utils.js.map +1 -0
  319. package/dist/tools.d.ts +74 -0
  320. package/dist/tools.d.ts.map +1 -0
  321. package/dist/tools.js +73 -0
  322. package/dist/tools.js.map +1 -0
  323. package/dist/types.d.ts +2421 -0
  324. package/dist/types.d.ts.map +1 -0
  325. package/dist/types.js +55 -0
  326. package/dist/types.js.map +1 -0
  327. 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":"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"}