@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,182 @@
1
+ /**
2
+ * File-based checkpoint saver for JSON persistence.
3
+ *
4
+ * FileSaver stores checkpoints as JSON files on disk, providing:
5
+ * - Persistence across process restarts
6
+ * - Human-readable checkpoint data
7
+ * - Simple backup and debugging capabilities
8
+ *
9
+ * Each checkpoint is stored as a separate JSON file: `{dir}/{threadId}.json`
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const saver = new FileSaver({ dir: "./.checkpoints" });
14
+ *
15
+ * // Save a checkpoint
16
+ * await saver.save(checkpoint);
17
+ * // Creates: .checkpoints/session-123.json
18
+ *
19
+ * // Load it back
20
+ * const loaded = await saver.load("session-123");
21
+ * ```
22
+ *
23
+ * @packageDocumentation
24
+ */
25
+ import type { BaseCheckpointSaver, Checkpoint, CheckpointSaverOptions } from "./types.js";
26
+ /**
27
+ * Options for creating a FileSaver.
28
+ *
29
+ * @category Checkpointer
30
+ */
31
+ export interface FileSaverOptions extends CheckpointSaverOptions {
32
+ /**
33
+ * Directory path for storing checkpoint files.
34
+ *
35
+ * The directory will be created if it doesn't exist.
36
+ */
37
+ dir: string;
38
+ /**
39
+ * File extension for checkpoint files.
40
+ * @defaultValue ".json"
41
+ */
42
+ extension?: string;
43
+ /**
44
+ * Whether to format JSON with indentation for readability.
45
+ * @defaultValue true
46
+ */
47
+ pretty?: boolean;
48
+ }
49
+ /**
50
+ * File-based checkpoint saver using JSON files.
51
+ *
52
+ * Stores each checkpoint as a separate JSON file in the specified directory.
53
+ * Thread IDs are sanitized to create safe filenames.
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * const saver = new FileSaver({ dir: "./.checkpoints" });
58
+ *
59
+ * // Save multiple checkpoints
60
+ * await saver.save(checkpoint1);
61
+ * await saver.save(checkpoint2);
62
+ *
63
+ * // List all threads
64
+ * const threads = await saver.list();
65
+ * // ["session-1", "session-2"]
66
+ *
67
+ * // Clean up
68
+ * for (const thread of threads) {
69
+ * await saver.delete(thread);
70
+ * }
71
+ * ```
72
+ *
73
+ * @category Checkpointer
74
+ */
75
+ export declare class FileSaver implements BaseCheckpointSaver {
76
+ private readonly dir;
77
+ private readonly extension;
78
+ private readonly pretty;
79
+ private readonly namespace?;
80
+ private initialized;
81
+ /**
82
+ * Create a new FileSaver.
83
+ *
84
+ * @param options - Configuration including the directory path
85
+ */
86
+ constructor(options: FileSaverOptions);
87
+ /**
88
+ * Save a checkpoint to a JSON file.
89
+ *
90
+ * Creates the directory if it doesn't exist.
91
+ * Overwrites existing checkpoint with the same threadId.
92
+ *
93
+ * @param checkpoint - The checkpoint to save
94
+ */
95
+ save(checkpoint: Checkpoint): Promise<void>;
96
+ /**
97
+ * Load a checkpoint from a JSON file.
98
+ *
99
+ * @param threadId - The thread ID to load
100
+ * @returns The checkpoint if found and valid, undefined otherwise
101
+ */
102
+ load(threadId: string): Promise<Checkpoint | undefined>;
103
+ /**
104
+ * List all thread IDs that have checkpoint files.
105
+ *
106
+ * @returns Array of thread IDs
107
+ */
108
+ list(): Promise<string[]>;
109
+ /**
110
+ * Delete a checkpoint file.
111
+ *
112
+ * @param threadId - The thread ID to delete
113
+ * @returns True if a file was deleted, false if not found
114
+ */
115
+ delete(threadId: string): Promise<boolean>;
116
+ /**
117
+ * Check if a checkpoint file exists.
118
+ *
119
+ * @param threadId - The thread ID to check
120
+ * @returns True if the file exists
121
+ */
122
+ exists(threadId: string): Promise<boolean>;
123
+ /**
124
+ * Get the directory path where checkpoints are stored.
125
+ */
126
+ getDir(): string;
127
+ /**
128
+ * Get the full file path for a thread ID.
129
+ *
130
+ * @param threadId - The thread ID
131
+ * @returns The full file path
132
+ */
133
+ getFilePath(threadId: string): string;
134
+ /**
135
+ * Ensure the checkpoint directory exists.
136
+ * @internal
137
+ */
138
+ private ensureInitialized;
139
+ /**
140
+ * Convert a thread ID to a safe filename.
141
+ *
142
+ * Sanitizes the thread ID to remove or replace characters that are
143
+ * problematic in filenames across different operating systems.
144
+ *
145
+ * @internal
146
+ */
147
+ private threadIdToFile;
148
+ /**
149
+ * Convert a filename back to a thread ID.
150
+ *
151
+ * @internal
152
+ */
153
+ private fileToThreadId;
154
+ }
155
+ /**
156
+ * Create a new FileSaver instance.
157
+ *
158
+ * @param options - Configuration including the directory path
159
+ * @returns A new FileSaver instance
160
+ *
161
+ * @example
162
+ * ```typescript
163
+ * // Basic usage
164
+ * const saver = createFileSaver({ dir: "./.checkpoints" });
165
+ *
166
+ * // With namespace for multi-tenant isolation
167
+ * const userSaver = createFileSaver({
168
+ * dir: "./.checkpoints",
169
+ * namespace: "user-123",
170
+ * });
171
+ *
172
+ * // Compact JSON (no pretty printing)
173
+ * const compactSaver = createFileSaver({
174
+ * dir: "./.checkpoints",
175
+ * pretty: false,
176
+ * });
177
+ * ```
178
+ *
179
+ * @category Checkpointer
180
+ */
181
+ export declare function createFileSaver(options: FileSaverOptions): FileSaver;
182
+ //# sourceMappingURL=file-saver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-saver.d.ts","sourceRoot":"","sources":["../../src/checkpointer/file-saver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAO1F;;;;GAIG;AACH,MAAM,WAAW,gBAAiB,SAAQ,sBAAsB;IAC9D;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,SAAU,YAAW,mBAAmB;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,WAAW,CAAS;IAE5B;;;;OAIG;gBACS,OAAO,EAAE,gBAAgB;IAOrC;;;;;;;OAOG;IACG,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IASjD;;;;;OAKG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAuB7D;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA0B/B;;;;;OAKG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAchD;;;;;OAKG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAehD;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IASrC;;;OAGG;YACW,iBAAiB;IAiB/B;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAmBtB;;;;OAIG;IACH,OAAO,CAAC,cAAc;CAqBvB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAEpE"}
@@ -0,0 +1,298 @@
1
+ /**
2
+ * File-based checkpoint saver for JSON persistence.
3
+ *
4
+ * FileSaver stores checkpoints as JSON files on disk, providing:
5
+ * - Persistence across process restarts
6
+ * - Human-readable checkpoint data
7
+ * - Simple backup and debugging capabilities
8
+ *
9
+ * Each checkpoint is stored as a separate JSON file: `{dir}/{threadId}.json`
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const saver = new FileSaver({ dir: "./.checkpoints" });
14
+ *
15
+ * // Save a checkpoint
16
+ * await saver.save(checkpoint);
17
+ * // Creates: .checkpoints/session-123.json
18
+ *
19
+ * // Load it back
20
+ * const loaded = await saver.load("session-123");
21
+ * ```
22
+ *
23
+ * @packageDocumentation
24
+ */
25
+ import * as fs from "node:fs/promises";
26
+ import * as path from "node:path";
27
+ import { isCheckpoint } from "./types.js";
28
+ // =============================================================================
29
+ // FileSaver Implementation
30
+ // =============================================================================
31
+ /**
32
+ * File-based checkpoint saver using JSON files.
33
+ *
34
+ * Stores each checkpoint as a separate JSON file in the specified directory.
35
+ * Thread IDs are sanitized to create safe filenames.
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * const saver = new FileSaver({ dir: "./.checkpoints" });
40
+ *
41
+ * // Save multiple checkpoints
42
+ * await saver.save(checkpoint1);
43
+ * await saver.save(checkpoint2);
44
+ *
45
+ * // List all threads
46
+ * const threads = await saver.list();
47
+ * // ["session-1", "session-2"]
48
+ *
49
+ * // Clean up
50
+ * for (const thread of threads) {
51
+ * await saver.delete(thread);
52
+ * }
53
+ * ```
54
+ *
55
+ * @category Checkpointer
56
+ */
57
+ export class FileSaver {
58
+ dir;
59
+ extension;
60
+ pretty;
61
+ namespace;
62
+ initialized = false;
63
+ /**
64
+ * Create a new FileSaver.
65
+ *
66
+ * @param options - Configuration including the directory path
67
+ */
68
+ constructor(options) {
69
+ this.dir = path.resolve(options.dir);
70
+ this.extension = options.extension ?? ".json";
71
+ this.pretty = options.pretty ?? true;
72
+ this.namespace = options.namespace;
73
+ }
74
+ /**
75
+ * Save a checkpoint to a JSON file.
76
+ *
77
+ * Creates the directory if it doesn't exist.
78
+ * Overwrites existing checkpoint with the same threadId.
79
+ *
80
+ * @param checkpoint - The checkpoint to save
81
+ */
82
+ async save(checkpoint) {
83
+ await this.ensureInitialized();
84
+ const filePath = this.getFilePath(checkpoint.threadId);
85
+ const data = this.pretty ? JSON.stringify(checkpoint, null, 2) : JSON.stringify(checkpoint);
86
+ await fs.writeFile(filePath, data, "utf-8");
87
+ }
88
+ /**
89
+ * Load a checkpoint from a JSON file.
90
+ *
91
+ * @param threadId - The thread ID to load
92
+ * @returns The checkpoint if found and valid, undefined otherwise
93
+ */
94
+ async load(threadId) {
95
+ const filePath = this.getFilePath(threadId);
96
+ try {
97
+ const data = await fs.readFile(filePath, "utf-8");
98
+ const parsed = JSON.parse(data);
99
+ // Validate the parsed data
100
+ if (!isCheckpoint(parsed)) {
101
+ console.warn(`Invalid checkpoint data in ${filePath}, expected Checkpoint object`);
102
+ return undefined;
103
+ }
104
+ return parsed;
105
+ }
106
+ catch (error) {
107
+ // File not found or read error
108
+ if (error instanceof Error && "code" in error && error.code === "ENOENT") {
109
+ return undefined;
110
+ }
111
+ throw error;
112
+ }
113
+ }
114
+ /**
115
+ * List all thread IDs that have checkpoint files.
116
+ *
117
+ * @returns Array of thread IDs
118
+ */
119
+ async list() {
120
+ await this.ensureInitialized();
121
+ try {
122
+ const files = await fs.readdir(this.dir);
123
+ const threads = [];
124
+ for (const file of files) {
125
+ if (file.endsWith(this.extension)) {
126
+ const threadId = this.fileToThreadId(file);
127
+ if (threadId) {
128
+ threads.push(threadId);
129
+ }
130
+ }
131
+ }
132
+ return threads;
133
+ }
134
+ catch (error) {
135
+ // Directory doesn't exist yet
136
+ if (error instanceof Error && "code" in error && error.code === "ENOENT") {
137
+ return [];
138
+ }
139
+ throw error;
140
+ }
141
+ }
142
+ /**
143
+ * Delete a checkpoint file.
144
+ *
145
+ * @param threadId - The thread ID to delete
146
+ * @returns True if a file was deleted, false if not found
147
+ */
148
+ async delete(threadId) {
149
+ const filePath = this.getFilePath(threadId);
150
+ try {
151
+ await fs.unlink(filePath);
152
+ return true;
153
+ }
154
+ catch (error) {
155
+ if (error instanceof Error && "code" in error && error.code === "ENOENT") {
156
+ return false;
157
+ }
158
+ throw error;
159
+ }
160
+ }
161
+ /**
162
+ * Check if a checkpoint file exists.
163
+ *
164
+ * @param threadId - The thread ID to check
165
+ * @returns True if the file exists
166
+ */
167
+ async exists(threadId) {
168
+ const filePath = this.getFilePath(threadId);
169
+ try {
170
+ await fs.access(filePath);
171
+ return true;
172
+ }
173
+ catch {
174
+ return false;
175
+ }
176
+ }
177
+ // ===========================================================================
178
+ // Additional Utility Methods
179
+ // ===========================================================================
180
+ /**
181
+ * Get the directory path where checkpoints are stored.
182
+ */
183
+ getDir() {
184
+ return this.dir;
185
+ }
186
+ /**
187
+ * Get the full file path for a thread ID.
188
+ *
189
+ * @param threadId - The thread ID
190
+ * @returns The full file path
191
+ */
192
+ getFilePath(threadId) {
193
+ const filename = this.threadIdToFile(threadId);
194
+ return path.join(this.dir, filename);
195
+ }
196
+ // ===========================================================================
197
+ // Private Helpers
198
+ // ===========================================================================
199
+ /**
200
+ * Ensure the checkpoint directory exists.
201
+ * @internal
202
+ */
203
+ async ensureInitialized() {
204
+ if (this.initialized) {
205
+ return;
206
+ }
207
+ try {
208
+ await fs.mkdir(this.dir, { recursive: true });
209
+ }
210
+ catch (error) {
211
+ // Directory already exists is fine
212
+ if (!(error instanceof Error && "code" in error && error.code === "EEXIST")) {
213
+ throw error;
214
+ }
215
+ }
216
+ this.initialized = true;
217
+ }
218
+ /**
219
+ * Convert a thread ID to a safe filename.
220
+ *
221
+ * Sanitizes the thread ID to remove or replace characters that are
222
+ * problematic in filenames across different operating systems.
223
+ *
224
+ * @internal
225
+ */
226
+ threadIdToFile(threadId) {
227
+ // Apply namespace prefix if configured
228
+ const prefixed = this.namespace ? `${this.namespace}_${threadId}` : threadId;
229
+ // Replace problematic characters with underscores
230
+ // Keep: alphanumeric, dash, underscore, dot
231
+ // Replace: slashes, colons, special chars
232
+ const sanitized = prefixed
233
+ .replace(/[/\\:*?"<>|]/g, "_")
234
+ .replace(/\s+/g, "_")
235
+ .replace(/_+/g, "_") // Collapse multiple underscores
236
+ .replace(/^_|_$/g, ""); // Trim leading/trailing underscores
237
+ // Ensure we have a valid filename
238
+ const filename = sanitized || "checkpoint";
239
+ return `${filename}${this.extension}`;
240
+ }
241
+ /**
242
+ * Convert a filename back to a thread ID.
243
+ *
244
+ * @internal
245
+ */
246
+ fileToThreadId(filename) {
247
+ if (!filename.endsWith(this.extension)) {
248
+ return undefined;
249
+ }
250
+ // Remove extension
251
+ let threadId = filename.slice(0, -this.extension.length);
252
+ // Remove namespace prefix if configured
253
+ if (this.namespace) {
254
+ const prefix = `${this.namespace}_`;
255
+ if (threadId.startsWith(prefix)) {
256
+ threadId = threadId.slice(prefix.length);
257
+ }
258
+ else {
259
+ // File doesn't belong to this namespace
260
+ return undefined;
261
+ }
262
+ }
263
+ return threadId || undefined;
264
+ }
265
+ }
266
+ // =============================================================================
267
+ // Factory Function
268
+ // =============================================================================
269
+ /**
270
+ * Create a new FileSaver instance.
271
+ *
272
+ * @param options - Configuration including the directory path
273
+ * @returns A new FileSaver instance
274
+ *
275
+ * @example
276
+ * ```typescript
277
+ * // Basic usage
278
+ * const saver = createFileSaver({ dir: "./.checkpoints" });
279
+ *
280
+ * // With namespace for multi-tenant isolation
281
+ * const userSaver = createFileSaver({
282
+ * dir: "./.checkpoints",
283
+ * namespace: "user-123",
284
+ * });
285
+ *
286
+ * // Compact JSON (no pretty printing)
287
+ * const compactSaver = createFileSaver({
288
+ * dir: "./.checkpoints",
289
+ * pretty: false,
290
+ * });
291
+ * ```
292
+ *
293
+ * @category Checkpointer
294
+ */
295
+ export function createFileSaver(options) {
296
+ return new FileSaver(options);
297
+ }
298
+ //# sourceMappingURL=file-saver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-saver.js","sourceRoot":"","sources":["../../src/checkpointer/file-saver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Checkpointer system for session persistence and resumption.
3
+ *
4
+ * This module provides tools for saving and restoring agent sessions,
5
+ * enabling:
6
+ * - Cross-conversation persistence
7
+ * - Session resumption after process restart
8
+ * - Tool approval interrupts
9
+ *
10
+ * ## Available Savers
11
+ *
12
+ * - **MemorySaver** - In-memory storage (ephemeral, for testing/development)
13
+ * - **FileSaver** - JSON file storage (persistent, human-readable)
14
+ * - **KeyValueStoreSaver** - Adapter for any KeyValueStore implementation
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * import { MemorySaver, FileSaver, KeyValueStoreSaver } from "@lleverage-ai/agent-sdk";
19
+ *
20
+ * // For testing
21
+ * const memorySaver = new MemorySaver();
22
+ *
23
+ * // For persistence
24
+ * const fileSaver = new FileSaver({ dir: "./.checkpoints" });
25
+ *
26
+ * // For custom storage (Redis, SQLite, etc.)
27
+ * const kvSaver = new KeyValueStoreSaver({ store: myCustomStore });
28
+ * ```
29
+ *
30
+ * @packageDocumentation
31
+ */
32
+ export type { FileSaverOptions } from "./file-saver.js";
33
+ export { createFileSaver, FileSaver } from "./file-saver.js";
34
+ export type { KeyValueStoreSaverOptions } from "./kv-saver.js";
35
+ export { createKeyValueStoreSaver, KeyValueStoreSaver } from "./kv-saver.js";
36
+ export type { MemorySaverOptions } from "./memory-saver.js";
37
+ export { createMemorySaver, MemorySaver } from "./memory-saver.js";
38
+ export type { ApprovalInterrupt, ApprovalRequest, ApprovalResponse, BaseCheckpointSaver, Checkpoint, CheckpointEvent, CheckpointLoadedEvent, CheckpointSavedEvent, CheckpointSaverOptions, Interrupt, } from "./types.js";
39
+ export { createApprovalInterrupt, createCheckpoint, createInterrupt, isApprovalInterrupt, isCheckpoint, isInterrupt, updateCheckpoint, } from "./types.js";
40
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/checkpointer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC7D,YAAY,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC7E,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACnE,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Checkpointer system for session persistence and resumption.
3
+ *
4
+ * This module provides tools for saving and restoring agent sessions,
5
+ * enabling:
6
+ * - Cross-conversation persistence
7
+ * - Session resumption after process restart
8
+ * - Tool approval interrupts
9
+ *
10
+ * ## Available Savers
11
+ *
12
+ * - **MemorySaver** - In-memory storage (ephemeral, for testing/development)
13
+ * - **FileSaver** - JSON file storage (persistent, human-readable)
14
+ * - **KeyValueStoreSaver** - Adapter for any KeyValueStore implementation
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * import { MemorySaver, FileSaver, KeyValueStoreSaver } from "@lleverage-ai/agent-sdk";
19
+ *
20
+ * // For testing
21
+ * const memorySaver = new MemorySaver();
22
+ *
23
+ * // For persistence
24
+ * const fileSaver = new FileSaver({ dir: "./.checkpoints" });
25
+ *
26
+ * // For custom storage (Redis, SQLite, etc.)
27
+ * const kvSaver = new KeyValueStoreSaver({ store: myCustomStore });
28
+ * ```
29
+ *
30
+ * @packageDocumentation
31
+ */
32
+ // File Saver
33
+ export { createFileSaver, FileSaver } from "./file-saver.js";
34
+ // KeyValueStore Saver
35
+ export { createKeyValueStoreSaver, KeyValueStoreSaver } from "./kv-saver.js";
36
+ // Memory Saver
37
+ export { createMemorySaver, MemorySaver } from "./memory-saver.js";
38
+ // Types
39
+ export { createApprovalInterrupt, createCheckpoint, createInterrupt, isApprovalInterrupt, isCheckpoint, isInterrupt, updateCheckpoint, } from "./types.js";
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/checkpointer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,aAAa;AACb,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE7D,sBAAsB;AACtB,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAE7E,eAAe;AACf,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAanE,QAAQ;AACR,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,gBAAgB,GACjB,MAAM,YAAY,CAAC"}