@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 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backends/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,gBAAgB,EAEhB,sBAAsB,GAEvB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EAEjB,kBAAkB,EAClB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,uBAAuB,EACvB,aAAa,EAEb,iBAAiB,GAElB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,GAEb,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,GAGb,MAAM,YAAY,CAAC"}
@@ -0,0 +1,312 @@
1
+ /**
2
+ * Persistent backend using a pluggable key-value store.
3
+ *
4
+ * PersistentBackend provides cross-conversation persistence by storing files
5
+ * in a key-value store. This enables long-term memory and state preservation
6
+ * across agent sessions.
7
+ *
8
+ * The backend supports any storage system that implements the KeyValueStore
9
+ * interface, including Redis, SQLite, DynamoDB, or cloud storage.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * // Using the built-in in-memory store (for development)
14
+ * const store = new InMemoryStore();
15
+ * const backend = new PersistentBackend({ store });
16
+ *
17
+ * // With namespace isolation
18
+ * const backend = new PersistentBackend({
19
+ * store,
20
+ * namespace: "user-123",
21
+ * });
22
+ *
23
+ * // Files are persisted across sessions
24
+ * await backend.write("/notes.md", "# My Notes\n");
25
+ * // Later, in a new session:
26
+ * const content = await backend.read("/notes.md");
27
+ * ```
28
+ *
29
+ * @packageDocumentation
30
+ */
31
+ import type { BackendProtocol, EditResult, FileData, FileInfo, GrepMatch, WriteResult } from "../backend.js";
32
+ /**
33
+ * Pluggable key-value store interface.
34
+ *
35
+ * Implement this interface to add persistence to any storage backend.
36
+ * The namespace array allows for hierarchical organization of data.
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * // Example Redis implementation
41
+ * class RedisStore implements KeyValueStore {
42
+ * private redis: RedisClient;
43
+ *
44
+ * private makeKey(namespace: string[], key: string): string {
45
+ * return [...namespace, key].join(":");
46
+ * }
47
+ *
48
+ * async get(namespace: string[], key: string) {
49
+ * const data = await this.redis.get(this.makeKey(namespace, key));
50
+ * return data ? JSON.parse(data) : undefined;
51
+ * }
52
+ *
53
+ * async put(namespace: string[], key: string, value: Record<string, unknown>) {
54
+ * await this.redis.set(this.makeKey(namespace, key), JSON.stringify(value));
55
+ * }
56
+ *
57
+ * async delete(namespace: string[], key: string) {
58
+ * await this.redis.del(this.makeKey(namespace, key));
59
+ * }
60
+ *
61
+ * async list(namespace: string[]) {
62
+ * const pattern = [...namespace, "*"].join(":");
63
+ * const keys = await this.redis.keys(pattern);
64
+ * return Promise.all(keys.map(async k => ({
65
+ * key: k.split(":").pop()!,
66
+ * value: JSON.parse(await this.redis.get(k) || "{}"),
67
+ * })));
68
+ * }
69
+ * }
70
+ * ```
71
+ *
72
+ * @category Backend
73
+ */
74
+ export interface KeyValueStore {
75
+ /**
76
+ * Get a value by namespace and key.
77
+ *
78
+ * @param namespace - Hierarchical namespace array (e.g., ["user-123", "filesystem"])
79
+ * @param key - The key to retrieve
80
+ * @returns The value if found, undefined otherwise
81
+ */
82
+ get(namespace: string[], key: string): Promise<Record<string, unknown> | undefined>;
83
+ /**
84
+ * Store a value at the given namespace and key.
85
+ *
86
+ * @param namespace - Hierarchical namespace array
87
+ * @param key - The key to store at
88
+ * @param value - The value to store (must be JSON-serializable)
89
+ */
90
+ put(namespace: string[], key: string, value: Record<string, unknown>): Promise<void>;
91
+ /**
92
+ * Delete a value by namespace and key.
93
+ *
94
+ * @param namespace - Hierarchical namespace array
95
+ * @param key - The key to delete
96
+ */
97
+ delete(namespace: string[], key: string): Promise<void>;
98
+ /**
99
+ * List all keys and values in a namespace.
100
+ *
101
+ * @param namespace - Hierarchical namespace array
102
+ * @returns Array of key-value pairs in the namespace
103
+ */
104
+ list(namespace: string[]): Promise<Array<{
105
+ key: string;
106
+ value: Record<string, unknown>;
107
+ }>>;
108
+ }
109
+ /**
110
+ * In-memory implementation of KeyValueStore for development and testing.
111
+ *
112
+ * Data is stored in a Map and lost when the process ends.
113
+ * Use this for development or as a reference implementation.
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * const store = new InMemoryStore();
118
+ *
119
+ * // Store data
120
+ * await store.put(["app", "users"], "user-1", { name: "Alice" });
121
+ *
122
+ * // Retrieve data
123
+ * const user = await store.get(["app", "users"], "user-1");
124
+ *
125
+ * // List all users
126
+ * const users = await store.list(["app", "users"]);
127
+ * ```
128
+ *
129
+ * @category Backend
130
+ */
131
+ export declare class InMemoryStore implements KeyValueStore {
132
+ private data;
133
+ /**
134
+ * Create a composite key from namespace and key.
135
+ * @internal
136
+ */
137
+ private makeKey;
138
+ /**
139
+ * Parse a composite key to extract namespace and key.
140
+ * @internal
141
+ */
142
+ private parseKey;
143
+ /**
144
+ * Check if a composite key starts with the given namespace.
145
+ * @internal
146
+ */
147
+ private startsWithNamespace;
148
+ get(namespace: string[], key: string): Promise<Record<string, unknown> | undefined>;
149
+ put(namespace: string[], key: string, value: Record<string, unknown>): Promise<void>;
150
+ delete(namespace: string[], key: string): Promise<void>;
151
+ list(namespace: string[]): Promise<Array<{
152
+ key: string;
153
+ value: Record<string, unknown>;
154
+ }>>;
155
+ /**
156
+ * Clear all data from the store.
157
+ *
158
+ * Useful for testing cleanup.
159
+ */
160
+ clear(): void;
161
+ /**
162
+ * Get the number of entries in the store.
163
+ *
164
+ * Useful for testing.
165
+ */
166
+ get size(): number;
167
+ }
168
+ /**
169
+ * Configuration options for PersistentBackend.
170
+ *
171
+ * @category Backend
172
+ */
173
+ export interface PersistentBackendOptions {
174
+ /**
175
+ * The key-value store to use for persistence.
176
+ */
177
+ store: KeyValueStore;
178
+ /**
179
+ * Optional namespace prefix for all keys.
180
+ *
181
+ * Use this to isolate data between different agents, users, or sessions.
182
+ *
183
+ * @defaultValue undefined (no namespace prefix)
184
+ *
185
+ * @example
186
+ * ```typescript
187
+ * // Isolate by user
188
+ * new PersistentBackend({ store, namespace: "user-123" });
189
+ *
190
+ * // Isolate by agent
191
+ * new PersistentBackend({ store, namespace: "agent-coding" });
192
+ * ```
193
+ */
194
+ namespace?: string;
195
+ }
196
+ /**
197
+ * Backend implementation using a pluggable key-value store.
198
+ *
199
+ * All file operations are persisted to the underlying store, allowing
200
+ * data to survive across process restarts and agent sessions.
201
+ *
202
+ * Files are stored at: [namespace?, "filesystem", encodedPath]
203
+ *
204
+ * @example
205
+ * ```typescript
206
+ * import { PersistentBackend, InMemoryStore } from "@lleverage-ai/agent-sdk";
207
+ *
208
+ * // Create with in-memory store
209
+ * const store = new InMemoryStore();
210
+ * const backend = new PersistentBackend({ store });
211
+ *
212
+ * // Write persists to store
213
+ * await backend.write("/notes.md", "# Notes");
214
+ *
215
+ * // Read retrieves from store
216
+ * const content = await backend.read("/notes.md");
217
+ *
218
+ * // With namespace for multi-tenant isolation
219
+ * const userBackend = new PersistentBackend({
220
+ * store,
221
+ * namespace: "user-456",
222
+ * });
223
+ * ```
224
+ *
225
+ * @category Backend
226
+ */
227
+ export declare class PersistentBackend implements BackendProtocol {
228
+ private readonly store;
229
+ private readonly namespacePrefix;
230
+ /**
231
+ * Create a new PersistentBackend.
232
+ *
233
+ * @param options - Configuration options
234
+ */
235
+ constructor(options: PersistentBackendOptions);
236
+ /**
237
+ * Encode a file path as a safe key.
238
+ *
239
+ * File paths may contain characters that are problematic for some
240
+ * key-value stores. We use base64url encoding for safety.
241
+ *
242
+ * @internal
243
+ */
244
+ private encodePathAsKey;
245
+ /**
246
+ * Decode a key back to a file path.
247
+ * @internal
248
+ */
249
+ private decodeKeyToPath;
250
+ /**
251
+ * Normalize a path to ensure consistent format.
252
+ * @internal
253
+ */
254
+ private normalizePath;
255
+ /**
256
+ * Get the namespace for a file path.
257
+ * @internal
258
+ */
259
+ private getNamespace;
260
+ /**
261
+ * List files and directories at the given path.
262
+ */
263
+ lsInfo(path: string): Promise<FileInfo[]>;
264
+ /**
265
+ * Read file content with line numbers.
266
+ */
267
+ read(filePath: string, offset?: number, limit?: number): Promise<string>;
268
+ /**
269
+ * Read raw file content as FileData.
270
+ */
271
+ readRaw(filePath: string): Promise<FileData>;
272
+ /**
273
+ * Search for pattern matches using regex.
274
+ */
275
+ grepRaw(pattern: string, path?: string | null, glob?: string | null): Promise<GrepMatch[]>;
276
+ /**
277
+ * Find files matching a glob pattern.
278
+ */
279
+ globInfo(pattern: string, path?: string): Promise<FileInfo[]>;
280
+ /**
281
+ * Create or overwrite a file.
282
+ */
283
+ write(filePath: string, content: string): Promise<WriteResult>;
284
+ /**
285
+ * Edit a file by replacing text.
286
+ */
287
+ edit(filePath: string, oldString: string, newString: string, replaceAll?: boolean): Promise<EditResult>;
288
+ /**
289
+ * Check if a path matches a glob pattern.
290
+ * Supports basic glob patterns: *, **, ?
291
+ * @internal
292
+ */
293
+ private matchesGlob;
294
+ }
295
+ /**
296
+ * Create a new PersistentBackend.
297
+ *
298
+ * Convenience function that wraps the PersistentBackend constructor.
299
+ *
300
+ * @param options - Configuration options
301
+ * @returns A new PersistentBackend instance
302
+ *
303
+ * @example
304
+ * ```typescript
305
+ * const store = new InMemoryStore();
306
+ * const backend = createPersistentBackend({ store });
307
+ * ```
308
+ *
309
+ * @category Backend
310
+ */
311
+ export declare function createPersistentBackend(options: PersistentBackendOptions): PersistentBackend;
312
+ //# sourceMappingURL=persistent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistent.d.ts","sourceRoot":"","sources":["../../src/backends/persistent.ts"],"names":[],"mappings":"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"}