@letta-ai/letta-client 1.0.0-alpha.7 → 1.1.0

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 (512) hide show
  1. package/CHANGELOG.md +248 -0
  2. package/README.md +282 -319
  3. package/client.d.mts +61 -36
  4. package/client.d.mts.map +1 -1
  5. package/client.d.ts +61 -36
  6. package/client.d.ts.map +1 -1
  7. package/client.js +53 -23
  8. package/client.js.map +1 -1
  9. package/client.mjs +53 -23
  10. package/client.mjs.map +1 -1
  11. package/core/pagination.d.mts +96 -0
  12. package/core/pagination.d.mts.map +1 -0
  13. package/core/pagination.d.ts +96 -0
  14. package/core/pagination.d.ts.map +1 -0
  15. package/core/pagination.js +199 -0
  16. package/core/pagination.js.map +1 -0
  17. package/core/pagination.mjs +191 -0
  18. package/core/pagination.mjs.map +1 -0
  19. package/core/streaming.d.mts +33 -0
  20. package/core/streaming.d.mts.map +1 -0
  21. package/core/streaming.d.ts +33 -0
  22. package/core/streaming.d.ts.map +1 -0
  23. package/core/streaming.js +276 -0
  24. package/core/streaming.js.map +1 -0
  25. package/core/streaming.mjs +271 -0
  26. package/core/streaming.mjs.map +1 -0
  27. package/index.d.mts +1 -0
  28. package/index.d.mts.map +1 -1
  29. package/index.d.ts +1 -0
  30. package/index.d.ts.map +1 -1
  31. package/index.js +3 -1
  32. package/index.js.map +1 -1
  33. package/index.mjs +1 -0
  34. package/index.mjs.map +1 -1
  35. package/internal/decoders/line.d.mts +17 -0
  36. package/internal/decoders/line.d.mts.map +1 -0
  37. package/internal/decoders/line.d.ts +17 -0
  38. package/internal/decoders/line.d.ts.map +1 -0
  39. package/internal/decoders/line.js +113 -0
  40. package/internal/decoders/line.js.map +1 -0
  41. package/internal/decoders/line.mjs +108 -0
  42. package/internal/decoders/line.mjs.map +1 -0
  43. package/internal/parse.d.mts.map +1 -1
  44. package/internal/parse.d.ts.map +1 -1
  45. package/internal/parse.js +10 -0
  46. package/internal/parse.js.map +1 -1
  47. package/internal/parse.mjs +10 -0
  48. package/internal/parse.mjs.map +1 -1
  49. package/internal/request-options.d.mts +2 -0
  50. package/internal/request-options.d.mts.map +1 -1
  51. package/internal/request-options.d.ts +2 -0
  52. package/internal/request-options.d.ts.map +1 -1
  53. package/internal/request-options.js.map +1 -1
  54. package/internal/request-options.mjs.map +1 -1
  55. package/internal/tslib.js +17 -17
  56. package/package.json +21 -1
  57. package/pagination.d.mts +2 -0
  58. package/pagination.d.mts.map +1 -0
  59. package/pagination.d.ts +2 -0
  60. package/pagination.d.ts.map +1 -0
  61. package/pagination.js +6 -0
  62. package/pagination.js.map +1 -0
  63. package/pagination.mjs +2 -0
  64. package/pagination.mjs.map +1 -0
  65. package/resources/access-tokens.d.mts +105 -0
  66. package/resources/access-tokens.d.mts.map +1 -0
  67. package/resources/access-tokens.d.ts +105 -0
  68. package/resources/access-tokens.d.ts.map +1 -0
  69. package/resources/access-tokens.js +30 -0
  70. package/resources/access-tokens.js.map +1 -0
  71. package/resources/access-tokens.mjs +26 -0
  72. package/resources/access-tokens.mjs.map +1 -0
  73. package/resources/agents/agents.d.mts +517 -160
  74. package/resources/agents/agents.d.mts.map +1 -1
  75. package/resources/agents/agents.d.ts +517 -160
  76. package/resources/agents/agents.d.ts.map +1 -1
  77. package/resources/agents/agents.js +16 -21
  78. package/resources/agents/agents.js.map +1 -1
  79. package/resources/agents/agents.mjs +17 -22
  80. package/resources/agents/agents.mjs.map +1 -1
  81. package/resources/agents/archives.d.mts +31 -0
  82. package/resources/agents/archives.d.mts.map +1 -0
  83. package/resources/agents/archives.d.ts +31 -0
  84. package/resources/agents/archives.d.ts.map +1 -0
  85. package/resources/agents/archives.js +24 -0
  86. package/resources/agents/archives.js.map +1 -0
  87. package/resources/agents/archives.mjs +20 -0
  88. package/resources/agents/archives.mjs.map +1 -0
  89. package/resources/agents/blocks.d.mts +33 -55
  90. package/resources/agents/blocks.d.mts.map +1 -1
  91. package/resources/agents/blocks.d.ts +33 -55
  92. package/resources/agents/blocks.d.ts.map +1 -1
  93. package/resources/agents/blocks.js +2 -1
  94. package/resources/agents/blocks.js.map +1 -1
  95. package/resources/agents/blocks.mjs +2 -1
  96. package/resources/agents/blocks.mjs.map +1 -1
  97. package/resources/agents/files.d.mts +39 -79
  98. package/resources/agents/files.d.mts.map +1 -1
  99. package/resources/agents/files.d.ts +39 -79
  100. package/resources/agents/files.d.ts.map +1 -1
  101. package/resources/agents/files.js +5 -1
  102. package/resources/agents/files.js.map +1 -1
  103. package/resources/agents/files.mjs +5 -1
  104. package/resources/agents/files.mjs.map +1 -1
  105. package/resources/agents/folders.d.mts +50 -79
  106. package/resources/agents/folders.d.mts.map +1 -1
  107. package/resources/agents/folders.d.ts +50 -79
  108. package/resources/agents/folders.d.ts.map +1 -1
  109. package/resources/agents/folders.js +5 -1
  110. package/resources/agents/folders.js.map +1 -1
  111. package/resources/agents/folders.mjs +5 -1
  112. package/resources/agents/folders.mjs.map +1 -1
  113. package/resources/agents/groups.d.mts +6 -28
  114. package/resources/agents/groups.d.mts.map +1 -1
  115. package/resources/agents/groups.d.ts +6 -28
  116. package/resources/agents/groups.d.ts.map +1 -1
  117. package/resources/agents/groups.js +5 -1
  118. package/resources/agents/groups.js.map +1 -1
  119. package/resources/agents/groups.mjs +5 -1
  120. package/resources/agents/groups.mjs.map +1 -1
  121. package/resources/agents/identities.d.mts +31 -0
  122. package/resources/agents/identities.d.mts.map +1 -0
  123. package/resources/agents/identities.d.ts +31 -0
  124. package/resources/agents/identities.d.ts.map +1 -0
  125. package/resources/agents/identities.js +24 -0
  126. package/resources/agents/identities.js.map +1 -0
  127. package/resources/agents/identities.mjs +20 -0
  128. package/resources/agents/identities.mjs.map +1 -0
  129. package/resources/agents/index.d.mts +9 -7
  130. package/resources/agents/index.d.mts.map +1 -1
  131. package/resources/agents/index.d.ts +9 -7
  132. package/resources/agents/index.d.ts.map +1 -1
  133. package/resources/agents/index.js +5 -1
  134. package/resources/agents/index.js.map +1 -1
  135. package/resources/agents/index.mjs +2 -0
  136. package/resources/agents/index.mjs.map +1 -1
  137. package/resources/agents/messages.d.mts +668 -422
  138. package/resources/agents/messages.d.mts.map +1 -1
  139. package/resources/agents/messages.d.ts +668 -422
  140. package/resources/agents/messages.d.ts.map +1 -1
  141. package/resources/agents/messages.js +27 -26
  142. package/resources/agents/messages.js.map +1 -1
  143. package/resources/agents/messages.mjs +27 -26
  144. package/resources/agents/messages.mjs.map +1 -1
  145. package/resources/agents/tools.d.mts +9 -30
  146. package/resources/agents/tools.d.mts.map +1 -1
  147. package/resources/agents/tools.d.ts +9 -30
  148. package/resources/agents/tools.d.ts.map +1 -1
  149. package/resources/agents/tools.js +5 -1
  150. package/resources/agents/tools.js.map +1 -1
  151. package/resources/agents/tools.mjs +5 -1
  152. package/resources/agents/tools.mjs.map +1 -1
  153. package/resources/archives/archives.d.mts +115 -0
  154. package/resources/archives/archives.d.mts.map +1 -0
  155. package/resources/archives/archives.d.ts +115 -0
  156. package/resources/archives/archives.d.ts.map +1 -0
  157. package/resources/archives/archives.js +50 -0
  158. package/resources/archives/archives.js.map +1 -0
  159. package/resources/archives/archives.mjs +45 -0
  160. package/resources/archives/archives.mjs.map +1 -0
  161. package/resources/archives/index.d.mts +3 -0
  162. package/resources/archives/index.d.mts.map +1 -0
  163. package/resources/archives/index.d.ts +3 -0
  164. package/resources/archives/index.d.ts.map +1 -0
  165. package/resources/archives/index.js +9 -0
  166. package/resources/archives/index.js.map +1 -0
  167. package/resources/archives/index.mjs +4 -0
  168. package/resources/archives/index.mjs.map +1 -0
  169. package/resources/archives/passages.d.mts +113 -0
  170. package/resources/archives/passages.d.mts.map +1 -0
  171. package/resources/archives/passages.d.ts +113 -0
  172. package/resources/archives/passages.d.ts.map +1 -0
  173. package/resources/archives/passages.js +32 -0
  174. package/resources/archives/passages.js.map +1 -0
  175. package/resources/archives/passages.mjs +28 -0
  176. package/resources/archives/passages.mjs.map +1 -0
  177. package/resources/archives.d.mts +1 -130
  178. package/resources/archives.d.mts.map +1 -1
  179. package/resources/archives.d.ts +1 -130
  180. package/resources/archives.d.ts.map +1 -1
  181. package/resources/archives.js +2 -37
  182. package/resources/archives.js.map +1 -1
  183. package/resources/archives.mjs +1 -35
  184. package/resources/archives.mjs.map +1 -1
  185. package/resources/batches/batches.d.mts +52 -34
  186. package/resources/batches/batches.d.mts.map +1 -1
  187. package/resources/batches/batches.d.ts +52 -34
  188. package/resources/batches/batches.d.ts.map +1 -1
  189. package/resources/batches/batches.js +2 -1
  190. package/resources/batches/batches.js.map +1 -1
  191. package/resources/batches/batches.mjs +2 -1
  192. package/resources/batches/batches.mjs.map +1 -1
  193. package/resources/batches/index.d.mts +2 -2
  194. package/resources/batches/index.d.mts.map +1 -1
  195. package/resources/batches/index.d.ts +2 -2
  196. package/resources/batches/index.d.ts.map +1 -1
  197. package/resources/batches/index.js.map +1 -1
  198. package/resources/batches/index.mjs.map +1 -1
  199. package/resources/batches/messages.d.mts +6 -30
  200. package/resources/batches/messages.d.mts.map +1 -1
  201. package/resources/batches/messages.d.ts +6 -30
  202. package/resources/batches/messages.d.ts.map +1 -1
  203. package/resources/batches/messages.js +2 -1
  204. package/resources/batches/messages.js.map +1 -1
  205. package/resources/batches/messages.mjs +2 -1
  206. package/resources/batches/messages.mjs.map +1 -1
  207. package/resources/blocks/agents.d.mts +6 -28
  208. package/resources/blocks/agents.d.mts.map +1 -1
  209. package/resources/blocks/agents.d.ts +6 -28
  210. package/resources/blocks/agents.d.ts.map +1 -1
  211. package/resources/blocks/agents.js +5 -1
  212. package/resources/blocks/agents.js.map +1 -1
  213. package/resources/blocks/agents.mjs +5 -1
  214. package/resources/blocks/agents.mjs.map +1 -1
  215. package/resources/blocks/blocks.d.mts +108 -48
  216. package/resources/blocks/blocks.d.mts.map +1 -1
  217. package/resources/blocks/blocks.d.ts +108 -48
  218. package/resources/blocks/blocks.d.ts.map +1 -1
  219. package/resources/blocks/blocks.js +3 -8
  220. package/resources/blocks/blocks.js.map +1 -1
  221. package/resources/blocks/blocks.mjs +3 -8
  222. package/resources/blocks/blocks.mjs.map +1 -1
  223. package/resources/blocks/index.d.mts +2 -2
  224. package/resources/blocks/index.d.mts.map +1 -1
  225. package/resources/blocks/index.d.ts +2 -2
  226. package/resources/blocks/index.d.ts.map +1 -1
  227. package/resources/blocks/index.js.map +1 -1
  228. package/resources/blocks/index.mjs.map +1 -1
  229. package/resources/folders/files.d.mts +75 -97
  230. package/resources/folders/files.d.mts.map +1 -1
  231. package/resources/folders/files.d.ts +75 -97
  232. package/resources/folders/files.d.ts.map +1 -1
  233. package/resources/folders/files.js +5 -1
  234. package/resources/folders/files.js.map +1 -1
  235. package/resources/folders/files.mjs +5 -1
  236. package/resources/folders/files.mjs.map +1 -1
  237. package/resources/folders/folders.d.mts +11 -44
  238. package/resources/folders/folders.d.mts.map +1 -1
  239. package/resources/folders/folders.d.ts +11 -44
  240. package/resources/folders/folders.d.ts.map +1 -1
  241. package/resources/folders/folders.js +2 -7
  242. package/resources/folders/folders.js.map +1 -1
  243. package/resources/folders/folders.mjs +2 -7
  244. package/resources/folders/folders.mjs.map +1 -1
  245. package/resources/folders/index.d.mts +2 -2
  246. package/resources/folders/index.d.mts.map +1 -1
  247. package/resources/folders/index.d.ts +2 -2
  248. package/resources/folders/index.d.ts.map +1 -1
  249. package/resources/folders/index.js.map +1 -1
  250. package/resources/folders/index.mjs.map +1 -1
  251. package/resources/groups/groups.d.mts +17 -67
  252. package/resources/groups/groups.d.mts.map +1 -1
  253. package/resources/groups/groups.d.ts +17 -67
  254. package/resources/groups/groups.d.ts.map +1 -1
  255. package/resources/groups/groups.js +6 -28
  256. package/resources/groups/groups.js.map +1 -1
  257. package/resources/groups/groups.mjs +6 -28
  258. package/resources/groups/groups.mjs.map +1 -1
  259. package/resources/groups/index.d.mts +2 -2
  260. package/resources/groups/index.d.mts.map +1 -1
  261. package/resources/groups/index.d.ts +2 -2
  262. package/resources/groups/index.d.ts.map +1 -1
  263. package/resources/groups/index.js.map +1 -1
  264. package/resources/groups/index.mjs.map +1 -1
  265. package/resources/groups/messages.d.mts +145 -79
  266. package/resources/groups/messages.d.mts.map +1 -1
  267. package/resources/groups/messages.d.ts +145 -79
  268. package/resources/groups/messages.d.ts.map +1 -1
  269. package/resources/groups/messages.js +18 -10
  270. package/resources/groups/messages.js.map +1 -1
  271. package/resources/groups/messages.mjs +18 -10
  272. package/resources/groups/messages.mjs.map +1 -1
  273. package/resources/identities/agents.d.mts +6 -28
  274. package/resources/identities/agents.d.mts.map +1 -1
  275. package/resources/identities/agents.d.ts +6 -28
  276. package/resources/identities/agents.d.ts.map +1 -1
  277. package/resources/identities/agents.js +2 -1
  278. package/resources/identities/agents.js.map +1 -1
  279. package/resources/identities/agents.mjs +2 -1
  280. package/resources/identities/agents.mjs.map +1 -1
  281. package/resources/identities/blocks.d.mts +7 -29
  282. package/resources/identities/blocks.d.mts.map +1 -1
  283. package/resources/identities/blocks.d.ts +7 -29
  284. package/resources/identities/blocks.d.ts.map +1 -1
  285. package/resources/identities/blocks.js +2 -1
  286. package/resources/identities/blocks.js.map +1 -1
  287. package/resources/identities/blocks.mjs +2 -1
  288. package/resources/identities/blocks.mjs.map +1 -1
  289. package/resources/identities/identities.d.mts +30 -65
  290. package/resources/identities/identities.d.mts.map +1 -1
  291. package/resources/identities/identities.d.ts +30 -65
  292. package/resources/identities/identities.d.ts.map +1 -1
  293. package/resources/identities/identities.js +7 -29
  294. package/resources/identities/identities.js.map +1 -1
  295. package/resources/identities/identities.mjs +7 -29
  296. package/resources/identities/identities.mjs.map +1 -1
  297. package/resources/identities/index.d.mts +3 -3
  298. package/resources/identities/index.d.mts.map +1 -1
  299. package/resources/identities/index.d.ts +3 -3
  300. package/resources/identities/index.d.ts.map +1 -1
  301. package/resources/identities/index.js.map +1 -1
  302. package/resources/identities/index.mjs.map +1 -1
  303. package/resources/identities/properties.d.mts +1 -1
  304. package/resources/identities/properties.d.ts +1 -1
  305. package/resources/identities/properties.js +1 -1
  306. package/resources/identities/properties.mjs +1 -1
  307. package/resources/index.d.mts +13 -11
  308. package/resources/index.d.mts.map +1 -1
  309. package/resources/index.d.ts +13 -11
  310. package/resources/index.d.ts.map +1 -1
  311. package/resources/index.js +6 -2
  312. package/resources/index.js.map +1 -1
  313. package/resources/index.mjs +3 -1
  314. package/resources/index.mjs.map +1 -1
  315. package/resources/mcp-servers/index.d.mts +3 -0
  316. package/resources/mcp-servers/index.d.mts.map +1 -0
  317. package/resources/mcp-servers/index.d.ts +3 -0
  318. package/resources/mcp-servers/index.d.ts.map +1 -0
  319. package/resources/mcp-servers/index.js +9 -0
  320. package/resources/mcp-servers/index.js.map +1 -0
  321. package/resources/mcp-servers/index.mjs +4 -0
  322. package/resources/mcp-servers/index.mjs.map +1 -0
  323. package/resources/mcp-servers/mcp-servers.d.mts +349 -0
  324. package/resources/mcp-servers/mcp-servers.d.mts.map +1 -0
  325. package/resources/mcp-servers/mcp-servers.d.ts +349 -0
  326. package/resources/mcp-servers/mcp-servers.d.ts.map +1 -0
  327. package/resources/mcp-servers/mcp-servers.js +69 -0
  328. package/resources/mcp-servers/mcp-servers.js.map +1 -0
  329. package/resources/mcp-servers/mcp-servers.mjs +64 -0
  330. package/resources/mcp-servers/mcp-servers.mjs.map +1 -0
  331. package/resources/mcp-servers/tools.d.mts +42 -0
  332. package/resources/mcp-servers/tools.d.mts.map +1 -0
  333. package/resources/mcp-servers/tools.d.ts +42 -0
  334. package/resources/mcp-servers/tools.d.ts.map +1 -0
  335. package/resources/mcp-servers/tools.js +36 -0
  336. package/resources/mcp-servers/tools.js.map +1 -0
  337. package/resources/mcp-servers/tools.mjs +32 -0
  338. package/resources/mcp-servers/tools.mjs.map +1 -0
  339. package/resources/mcp-servers.d.mts +2 -0
  340. package/resources/mcp-servers.d.mts.map +1 -0
  341. package/resources/mcp-servers.d.ts +2 -0
  342. package/resources/mcp-servers.d.ts.map +1 -0
  343. package/resources/mcp-servers.js +6 -0
  344. package/resources/mcp-servers.js.map +1 -0
  345. package/resources/mcp-servers.mjs +3 -0
  346. package/resources/mcp-servers.mjs.map +1 -0
  347. package/resources/models/embeddings.d.mts +6 -2
  348. package/resources/models/embeddings.d.mts.map +1 -1
  349. package/resources/models/embeddings.d.ts +6 -2
  350. package/resources/models/embeddings.d.ts.map +1 -1
  351. package/resources/models/embeddings.js +5 -1
  352. package/resources/models/embeddings.js.map +1 -1
  353. package/resources/models/embeddings.mjs +5 -1
  354. package/resources/models/embeddings.mjs.map +1 -1
  355. package/resources/models/index.d.mts +1 -1
  356. package/resources/models/index.d.mts.map +1 -1
  357. package/resources/models/index.d.ts +1 -1
  358. package/resources/models/index.d.ts.map +1 -1
  359. package/resources/models/index.js.map +1 -1
  360. package/resources/models/index.mjs.map +1 -1
  361. package/resources/models/models.d.mts +180 -4
  362. package/resources/models/models.d.mts.map +1 -1
  363. package/resources/models/models.d.ts +180 -4
  364. package/resources/models/models.d.ts.map +1 -1
  365. package/resources/models/models.js +5 -1
  366. package/resources/models/models.js.map +1 -1
  367. package/resources/models/models.mjs +5 -1
  368. package/resources/models/models.mjs.map +1 -1
  369. package/resources/runs/index.d.mts +3 -3
  370. package/resources/runs/index.d.mts.map +1 -1
  371. package/resources/runs/index.d.ts +3 -3
  372. package/resources/runs/index.d.ts.map +1 -1
  373. package/resources/runs/index.js.map +1 -1
  374. package/resources/runs/index.mjs.map +1 -1
  375. package/resources/runs/messages.d.mts +8 -28
  376. package/resources/runs/messages.d.mts.map +1 -1
  377. package/resources/runs/messages.d.ts +8 -28
  378. package/resources/runs/messages.d.ts.map +1 -1
  379. package/resources/runs/messages.js +10 -2
  380. package/resources/runs/messages.js.map +1 -1
  381. package/resources/runs/messages.mjs +10 -2
  382. package/resources/runs/messages.mjs.map +1 -1
  383. package/resources/runs/runs.d.mts +10 -36
  384. package/resources/runs/runs.d.mts.map +1 -1
  385. package/resources/runs/runs.d.ts +10 -36
  386. package/resources/runs/runs.d.ts.map +1 -1
  387. package/resources/runs/runs.js +2 -1
  388. package/resources/runs/runs.js.map +1 -1
  389. package/resources/runs/runs.mjs +3 -2
  390. package/resources/runs/runs.mjs.map +1 -1
  391. package/resources/runs/steps.d.mts +6 -26
  392. package/resources/runs/steps.d.mts.map +1 -1
  393. package/resources/runs/steps.d.ts +6 -26
  394. package/resources/runs/steps.d.ts.map +1 -1
  395. package/resources/runs/steps.js +5 -1
  396. package/resources/runs/steps.js.map +1 -1
  397. package/resources/runs/steps.mjs +5 -1
  398. package/resources/runs/steps.mjs.map +1 -1
  399. package/resources/steps/index.d.mts +2 -2
  400. package/resources/steps/index.d.mts.map +1 -1
  401. package/resources/steps/index.d.ts +2 -2
  402. package/resources/steps/index.d.ts.map +1 -1
  403. package/resources/steps/index.js.map +1 -1
  404. package/resources/steps/index.mjs +1 -1
  405. package/resources/steps/index.mjs.map +1 -1
  406. package/resources/steps/messages.d.mts +14 -28
  407. package/resources/steps/messages.d.mts.map +1 -1
  408. package/resources/steps/messages.d.ts +14 -28
  409. package/resources/steps/messages.d.ts.map +1 -1
  410. package/resources/steps/messages.js +5 -1
  411. package/resources/steps/messages.js.map +1 -1
  412. package/resources/steps/messages.mjs +5 -1
  413. package/resources/steps/messages.mjs.map +1 -1
  414. package/resources/steps/steps.d.mts +17 -44
  415. package/resources/steps/steps.d.mts.map +1 -1
  416. package/resources/steps/steps.d.ts +17 -44
  417. package/resources/steps/steps.d.ts.map +1 -1
  418. package/resources/steps/steps.js +3 -11
  419. package/resources/steps/steps.js.map +1 -1
  420. package/resources/steps/steps.mjs +3 -11
  421. package/resources/steps/steps.mjs.map +1 -1
  422. package/resources/templates/agents.d.mts +9 -14
  423. package/resources/templates/agents.d.mts.map +1 -1
  424. package/resources/templates/agents.d.ts +9 -14
  425. package/resources/templates/agents.d.ts.map +1 -1
  426. package/resources/templates/agents.js +2 -3
  427. package/resources/templates/agents.js.map +1 -1
  428. package/resources/templates/agents.mjs +2 -3
  429. package/resources/templates/agents.mjs.map +1 -1
  430. package/resources/tools.d.mts +6 -68
  431. package/resources/tools.d.mts.map +1 -1
  432. package/resources/tools.d.ts +6 -68
  433. package/resources/tools.d.ts.map +1 -1
  434. package/resources/tools.js +2 -7
  435. package/resources/tools.js.map +1 -1
  436. package/resources/tools.mjs +2 -7
  437. package/resources/tools.mjs.map +1 -1
  438. package/src/client.ts +274 -127
  439. package/src/core/pagination.ts +334 -0
  440. package/src/core/streaming.ts +331 -0
  441. package/src/index.ts +1 -0
  442. package/src/internal/decoders/line.ts +135 -0
  443. package/src/internal/parse.ts +14 -0
  444. package/src/internal/request-options.ts +2 -0
  445. package/src/pagination.ts +2 -0
  446. package/src/resources/access-tokens.ts +163 -0
  447. package/src/resources/agents/agents.ts +722 -242
  448. package/src/resources/agents/archives.ts +51 -0
  449. package/src/resources/agents/blocks.ts +50 -63
  450. package/src/resources/agents/files.ts +47 -90
  451. package/src/resources/agents/folders.ts +58 -88
  452. package/src/resources/agents/groups.ts +11 -35
  453. package/src/resources/agents/identities.ts +51 -0
  454. package/src/resources/agents/index.ts +40 -12
  455. package/src/resources/agents/messages.ts +941 -550
  456. package/src/resources/agents/tools.ts +13 -37
  457. package/src/resources/archives/archives.ts +170 -0
  458. package/src/resources/archives/index.ts +17 -0
  459. package/src/resources/archives/passages.ts +150 -0
  460. package/src/resources/archives.ts +1 -178
  461. package/src/resources/batches/batches.ts +74 -46
  462. package/src/resources/batches/index.ts +2 -2
  463. package/src/resources/batches/messages.ts +12 -37
  464. package/src/resources/blocks/agents.ts +11 -35
  465. package/src/resources/blocks/blocks.ts +130 -64
  466. package/src/resources/blocks/index.ts +3 -3
  467. package/src/resources/folders/files.ts +90 -113
  468. package/src/resources/folders/folders.ts +14 -55
  469. package/src/resources/folders/index.ts +2 -2
  470. package/src/resources/groups/groups.ts +21 -102
  471. package/src/resources/groups/index.ts +2 -4
  472. package/src/resources/groups/messages.ts +215 -103
  473. package/src/resources/identities/agents.ts +12 -35
  474. package/src/resources/identities/blocks.ts +13 -36
  475. package/src/resources/identities/identities.ts +35 -107
  476. package/src/resources/identities/index.ts +3 -4
  477. package/src/resources/identities/properties.ts +1 -1
  478. package/src/resources/index.ts +55 -18
  479. package/src/resources/mcp-servers/index.ts +25 -0
  480. package/src/resources/mcp-servers/mcp-servers.ts +460 -0
  481. package/src/resources/mcp-servers/tools.ts +69 -0
  482. package/src/resources/mcp-servers.ts +3 -0
  483. package/src/resources/models/embeddings.ts +6 -2
  484. package/src/resources/models/index.ts +2 -0
  485. package/src/resources/models/models.ts +260 -3
  486. package/src/resources/runs/index.ts +2 -3
  487. package/src/resources/runs/messages.ts +18 -37
  488. package/src/resources/runs/runs.ts +14 -54
  489. package/src/resources/runs/steps.ts +11 -33
  490. package/src/resources/steps/index.ts +7 -2
  491. package/src/resources/steps/messages.ts +25 -35
  492. package/src/resources/steps/steps.ts +20 -61
  493. package/src/resources/templates/agents.ts +14 -17
  494. package/src/resources/tools.ts +8 -92
  495. package/src/streaming.ts +2 -0
  496. package/src/version.ts +1 -1
  497. package/streaming.d.mts +2 -0
  498. package/streaming.d.mts.map +1 -0
  499. package/streaming.d.ts +2 -0
  500. package/streaming.d.ts.map +1 -0
  501. package/streaming.js +6 -0
  502. package/streaming.js.map +1 -0
  503. package/streaming.mjs +2 -0
  504. package/streaming.mjs.map +1 -0
  505. package/version.d.mts +1 -1
  506. package/version.d.mts.map +1 -1
  507. package/version.d.ts +1 -1
  508. package/version.d.ts.map +1 -1
  509. package/version.js +1 -1
  510. package/version.js.map +1 -1
  511. package/version.mjs +1 -1
  512. package/version.mjs.map +1 -1
package/README.md CHANGED
@@ -1,441 +1,404 @@
1
- # Letta TypeScript API Library
1
+ # Letta TypeScript SDK
2
2
 
3
- [![NPM version](<https://img.shields.io/npm/v/@letta-ai/letta-client.svg?label=npm%20(stable)>)](https://npmjs.org/package/@letta-ai/letta-client) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@letta-ai/letta-client)
3
+ [![npm shield](https://img.shields.io/npm/v/@letta-ai/letta-client)](https://www.npmjs.com/package/@letta-ai/letta-client)
4
4
 
5
- This library provides convenient access to the Letta REST API from server-side TypeScript or JavaScript.
5
+ Letta is the platform for building stateful agents: open AI with advanced memory that can learn and self-improve over time.
6
6
 
7
- The full API of this library can be found in [api.md](api.md).
7
+ ### Quicklinks:
8
+ * [**Developer Documentation**](https://docs.letta.com): Learn how to create agents using Python or TypeScript
9
+ * [**TypeScript API Reference**](./reference.md): Complete TypeScript SDK documentation
10
+ * [**Agent Development Environment (ADE)**](https://docs.letta.com/guides/ade/overview): A no-code UI for building stateful agents
11
+ * [**Letta Cloud**](https://app.letta.com/): The fastest way to try Letta
8
12
 
9
- It is generated with [Stainless](https://www.stainless.com/).
13
+ ## Get started
10
14
 
11
- ## Installation
15
+ Install the Letta TypeScript SDK:
12
16
 
13
- ```sh
17
+ ```bash
14
18
  npm install @letta-ai/letta-client
15
19
  ```
16
20
 
17
- ## Usage
21
+ ## Simple Hello World example
18
22
 
19
- The full API of this library can be found in [api.md](api.md).
23
+ In the example below, we'll create a stateful agent with two memory blocks. We'll initialize the `human` memory block with incorrect information, and correct the agent in our first message - which will trigger the agent to update its own memory with a tool call.
20
24
 
21
- <!-- prettier-ignore -->
22
- ```js
23
- import Letta from '@letta-ai/letta-client';
25
+ *To run the examples, you'll need to get a `LETTA_API_KEY` from [Letta Cloud](https://app.letta.com/api-keys), or run your own self-hosted server (see [our guide](https://docs.letta.com/guides/selfhosting))*
24
26
 
25
- const client = new Letta({
26
- apiKey: process.env['LETTA_API_KEY'], // This is the default and can be omitted
27
- environment: 'local', // defaults to 'cloud'
27
+ ```typescript
28
+ import { LettaClient } from '@letta-ai/letta-client';
29
+
30
+ const client = new LettaClient({ apiKey: "LETTA_API_KEY" });
31
+ // const client = new LettaClient({ baseUrl: "http://localhost:8283" }); // if self-hosting
32
+
33
+ const agentState = await client.agents.create({
34
+ model: "openai/gpt-4o-mini",
35
+ embedding: "openai/text-embedding-3-small",
36
+ memoryBlocks: [
37
+ {
38
+ label: "human",
39
+ value: "The human's name is Chad. They like vibe coding."
40
+ },
41
+ {
42
+ label: "persona",
43
+ value: "My name is Sam, a helpful assistant."
44
+ }
45
+ ],
46
+ tools: ["web_search", "run_code"]
28
47
  });
29
48
 
30
- const archive = await client.archives.create({
31
- embedding_config: {
32
- embedding_dim: 0,
33
- embedding_endpoint_type: 'openai',
34
- embedding_model: 'embedding_model',
35
- },
36
- name: 'name',
49
+ console.log(agentState.id);
50
+ // agent-d9be...0846
51
+
52
+ const response = await client.agents.messages.create(agentState.id, {
53
+ messages: [
54
+ {
55
+ role: "user",
56
+ content: "Hey, nice to meet you, my name is Brad."
57
+ }
58
+ ]
37
59
  });
38
60
 
39
- console.log(archive.id);
40
- ```
61
+ // the agent will think, then edit its memory using a tool
62
+ for (const message of response.messages) {
63
+ console.log(message);
64
+ }
41
65
 
42
- ### Request & Response types
66
+ // The content of this memory block will be something like
67
+ // "The human's name is Brad. They like vibe coding."
68
+ // Fetch this block's content with:
69
+ const human_block = await client.agents.blocks.retrieve(agentState.id, "human");
70
+ console.log(human_block.value);
71
+ ```
43
72
 
44
- This library includes TypeScript definitions for all request params and response fields. You may import and use them like so:
73
+ ## Core concepts in Letta:
45
74
 
46
- <!-- prettier-ignore -->
47
- ```ts
48
- import Letta from '@letta-ai/letta-client';
75
+ Letta is built on the [MemGPT](https://arxiv.org/abs/2310.08560) research paper, which introduced the concept of the "LLM Operating System" for memory management:
49
76
 
50
- const client = new Letta({
51
- apiKey: process.env['LETTA_API_KEY'], // This is the default and can be omitted
52
- environment: 'local', // defaults to 'cloud'
53
- });
77
+ 1. [**Memory Hierarchy**](https://docs.letta.com/guides/agents/memory): Agents have self-editing memory split between in-context and out-of-context memory
78
+ 2. [**Memory Blocks**](https://docs.letta.com/guides/agents/memory-blocks): In-context memory is composed of persistent editable blocks
79
+ 3. [**Agentic Context Engineering**](https://docs.letta.com/guides/agents/context-engineering): Agents control their context window using tools to edit, delete, or search memory
80
+ 4. [**Perpetual Self-Improving Agents**](https://docs.letta.com/guides/agents/overview): Every agent has a perpetual (infinite) message history
54
81
 
55
- const params: Letta.ArchiveCreateParams = {
56
- embedding_config: {
57
- embedding_dim: 0,
58
- embedding_endpoint_type: 'openai',
59
- embedding_model: 'embedding_model',
60
- },
61
- name: 'name',
62
- };
63
- const archive: Letta.Archive = await client.archives.create(params);
64
- ```
82
+ ## Local Development
65
83
 
66
- Documentation for each method, request param, and response field are available in docstrings and will appear on hover in most modern editors.
84
+ Connect to a local Letta server instead of the cloud:
67
85
 
68
- ## File uploads
86
+ ```typescript
87
+ const client = new LettaClient({
88
+ baseUrl: "http://localhost:8283"
89
+ });
90
+ ```
69
91
 
70
- Request parameters that correspond to file uploads can be passed in many different forms:
92
+ Run Letta locally with Docker:
71
93
 
72
- - `File` (or an object with the same structure)
73
- - a `fetch` `Response` (or an object with the same structure)
74
- - an `fs.ReadStream`
75
- - the return value of our `toFile` helper
94
+ ```bash
95
+ docker run \
96
+ -v ~/.letta/.persist/pgdata:/var/lib/postgresql/data \
97
+ -p 8283:8283 \
98
+ -e OPENAI_API_KEY="your_key" \
99
+ letta/letta:latest
100
+ ```
76
101
 
77
- ```ts
78
- import fs from 'fs';
79
- import Letta, { toFile } from '@letta-ai/letta-client';
102
+ See the [self-hosting guide](https://docs.letta.com/guides/selfhosting) for more options.
80
103
 
81
- const client = new Letta();
104
+ ## Key Features
82
105
 
83
- // If you have access to Node `fs` we recommend using `fs.createReadStream()`:
84
- await client.folders.files.upload('source-123e4567-e89b-42d3-8456-426614174000', {
85
- file: fs.createReadStream('/path/to/file'),
86
- });
106
+ ### Memory Management ([full guide](https://docs.letta.com/guides/agents/memory-blocks))
87
107
 
88
- // Or if you have the web `File` API you can pass a `File` instance:
89
- await client.folders.files.upload('source-123e4567-e89b-42d3-8456-426614174000', {
90
- file: new File(['my bytes'], 'file'),
91
- });
108
+ Memory blocks are persistent, editable sections of an agent's context window:
92
109
 
93
- // You can also pass a `fetch` `Response`:
94
- await client.folders.files.upload('source-123e4567-e89b-42d3-8456-426614174000', {
95
- file: await fetch('https://somesite/file'),
110
+ ```typescript
111
+ // Create agent with memory blocks
112
+ const agent = await client.agents.create({
113
+ memoryBlocks: [
114
+ { label: "persona", value: "I'm a helpful assistant." },
115
+ { label: "human", value: "User preferences and info." }
116
+ ]
96
117
  });
97
118
 
98
- // Finally, if none of the above are convenient, you can use our `toFile` helper:
99
- await client.folders.files.upload('source-123e4567-e89b-42d3-8456-426614174000', {
100
- file: await toFile(Buffer.from('my bytes'), 'file'),
101
- });
102
- await client.folders.files.upload('source-123e4567-e89b-42d3-8456-426614174000', {
103
- file: await toFile(new Uint8Array([0, 1, 2]), 'file'),
119
+ // Update blocks manually
120
+ await client.agents.blocks.update(agent.id, "human", {
121
+ value: "Updated user information"
104
122
  });
105
- ```
106
123
 
107
- ## Handling errors
108
-
109
- When the library is unable to connect to the API,
110
- or if the API returns a non-success status code (i.e., 4xx or 5xx response),
111
- a subclass of `APIError` will be thrown:
112
-
113
- <!-- prettier-ignore -->
114
- ```ts
115
- const archive = await client.archives
116
- .create({
117
- embedding_config: {
118
- embedding_dim: 0,
119
- embedding_endpoint_type: 'openai',
120
- embedding_model: 'embedding_model',
121
- },
122
- name: 'name',
123
- })
124
- .catch(async (err) => {
125
- if (err instanceof Letta.APIError) {
126
- console.log(err.status); // 400
127
- console.log(err.name); // BadRequestError
128
- console.log(err.headers); // {server: 'nginx', ...}
129
- } else {
130
- throw err;
131
- }
132
- });
124
+ // Retrieve a block
125
+ const block = await client.agents.blocks.retrieve(agent.id, "human");
133
126
  ```
134
127
 
135
- Error codes are as follows:
128
+ ### Multi-agent Shared Memory ([full guide](https://docs.letta.com/guides/agents/multi-agent-shared-memory))
136
129
 
137
- | Status Code | Error Type |
138
- | ----------- | -------------------------- |
139
- | 400 | `BadRequestError` |
140
- | 401 | `AuthenticationError` |
141
- | 403 | `PermissionDeniedError` |
142
- | 404 | `NotFoundError` |
143
- | 422 | `UnprocessableEntityError` |
144
- | 429 | `RateLimitError` |
145
- | >=500 | `InternalServerError` |
146
- | N/A | `APIConnectionError` |
130
+ Memory blocks can be attached to multiple agents. All agents will have an up-to-date view on the contents of the memory block -- if one agent modifies it, the other will see it immediately.
147
131
 
148
- ### Retries
132
+ Here is how to attach a single memory block to multiple agents:
149
133
 
150
- Certain errors will be automatically retried 2 times by default, with a short exponential backoff.
151
- Connection errors (for example, due to a network connectivity problem), 408 Request Timeout, 409 Conflict,
152
- 429 Rate Limit, and >=500 Internal errors will all be retried by default.
153
-
154
- You can use the `maxRetries` option to configure or disable this:
134
+ ```typescript
135
+ // Create shared block
136
+ const sharedBlock = await client.blocks.create({
137
+ label: "organization",
138
+ value: "Shared team context"
139
+ });
155
140
 
156
- <!-- prettier-ignore -->
157
- ```js
158
- // Configure the default for all requests:
159
- const client = new Letta({
160
- maxRetries: 0, // default is 2
141
+ // Attach to multiple agents
142
+ const agent1 = await client.agents.create({
143
+ memoryBlocks: [{ label: "persona", value: "I am a supervisor" }],
144
+ blockIds: [sharedBlock.id]
161
145
  });
162
146
 
163
- // Or, configure per-request:
164
- await client.archives.create({ embedding_config: { embedding_dim: 0, embedding_endpoint_type: 'openai', embedding_model: 'embedding_model' }, name: 'name' }, {
165
- maxRetries: 5,
147
+ const agent2 = await client.agents.create({
148
+ memoryBlocks: [{ label: "persona", value: "I am a worker" }],
149
+ blockIds: [sharedBlock.id]
166
150
  });
167
151
  ```
168
152
 
169
- ### Timeouts
170
-
171
- Requests time out after 1 minute by default. You can configure this with a `timeout` option:
153
+ ### Sleep-time Agents ([full guide](https://docs.letta.com/guides/agents/architectures/sleeptime))
172
154
 
173
- <!-- prettier-ignore -->
174
- ```ts
175
- // Configure the default for all requests:
176
- const client = new Letta({
177
- timeout: 20 * 1000, // 20 seconds (default is 1 minute)
178
- });
155
+ Background agents that share memory with your primary agent:
179
156
 
180
- // Override per-request:
181
- await client.archives.create({ embedding_config: { embedding_dim: 0, embedding_endpoint_type: 'openai', embedding_model: 'embedding_model' }, name: 'name' }, {
182
- timeout: 5 * 1000,
157
+ ```typescript
158
+ const agent = await client.agents.create({
159
+ model: "openai/gpt-4o-mini",
160
+ enableSleeptime: true // creates a sleep-time agent
183
161
  });
184
162
  ```
185
163
 
186
- On timeout, an `APIConnectionTimeoutError` is thrown.
187
-
188
- Note that requests which time out will be [retried twice by default](#retries).
189
-
190
- ## Advanced Usage
191
-
192
- ### Accessing raw Response data (e.g., headers)
193
-
194
- The "raw" `Response` returned by `fetch()` can be accessed through the `.asResponse()` method on the `APIPromise` type that all methods return.
195
- This method returns as soon as the headers for a successful response are received and does not consume the response body, so you are free to write custom parsing or streaming logic.
196
-
197
- You can also use the `.withResponse()` method to get the raw `Response` along with the parsed data.
198
- Unlike `.asResponse()` this method consumes the body, returning once it is parsed.
199
-
200
- <!-- prettier-ignore -->
201
- ```ts
202
- const client = new Letta();
203
-
204
- const response = await client.archives
205
- .create({
206
- embedding_config: {
207
- embedding_dim: 0,
208
- embedding_endpoint_type: 'openai',
209
- embedding_model: 'embedding_model',
210
- },
211
- name: 'name',
212
- })
213
- .asResponse();
214
- console.log(response.headers.get('X-My-Header'));
215
- console.log(response.statusText); // access the underlying Response object
216
-
217
- const { data: archive, response: raw } = await client.archives
218
- .create({
219
- embedding_config: {
220
- embedding_dim: 0,
221
- embedding_endpoint_type: 'openai',
222
- embedding_model: 'embedding_model',
223
- },
224
- name: 'name',
225
- })
226
- .withResponse();
227
- console.log(raw.headers.get('X-My-Header'));
228
- console.log(archive.id);
229
- ```
164
+ ### Agent File Import/Export ([full guide](https://docs.letta.com/guides/agents/agent-file))
230
165
 
231
- ### Logging
166
+ Save and share agents with the `.af` file format:
232
167
 
233
- > [!IMPORTANT]
234
- > All log messages are intended for debugging only. The format and content of log messages
235
- > may change between releases.
168
+ ```typescript
169
+ import { readFileSync } from 'fs';
236
170
 
237
- #### Log levels
171
+ // Import agent
172
+ const file = new Blob([readFileSync('/path/to/agent.af')]);
173
+ const agent = await client.agents.importFile(file);
238
174
 
239
- The log level can be configured in two ways:
175
+ // Export agent
176
+ const schema = await client.agents.exportFile(agent.id);
177
+ ```
240
178
 
241
- 1. Via the `LETTA_LOG` environment variable
242
- 2. Using the `logLevel` client option (overrides the environment variable if set)
179
+ ### MCP Tools ([full guide](https://docs.letta.com/guides/mcp/overview))
243
180
 
244
- ```ts
245
- import Letta from '@letta-ai/letta-client';
181
+ Connect to Model Context Protocol servers:
246
182
 
247
- const client = new Letta({
248
- logLevel: 'debug', // Show all log messages
183
+ ```typescript
184
+ // First, create an MCP server (example: weather server)
185
+ const weatherServer = await client.mcpServers.create({
186
+ server_name: "weather-server",
187
+ config: {
188
+ mcp_server_type: "streamable_http",
189
+ server_url: "https://weather-mcp.example.com/mcp",
190
+ },
249
191
  });
250
- ```
251
-
252
- Available log levels, from most to least verbose:
253
192
 
254
- - `'debug'` - Show debug messages, info, warnings, and errors
255
- - `'info'` - Show info messages, warnings, and errors
256
- - `'warn'` - Show warnings and errors (default)
257
- - `'error'` - Show only errors
258
- - `'off'` - Disable all logging
193
+ // List tools available from the MCP server
194
+ const tools = await client.mcpServers.tools.list(weatherServer.id);
259
195
 
260
- At the `'debug'` level, all HTTP requests and responses are logged, including headers and bodies.
261
- Some authentication-related headers are redacted, but sensitive data in request and response bodies
262
- may still be visible.
196
+ // Create agent with MCP tool
197
+ const agent = await client.agents.create({
198
+ model: "openai/gpt-4o-mini",
199
+ toolIds: [tool.id]
200
+ });
201
+ ```
263
202
 
264
- #### Custom logger
203
+ ### Filesystem ([full guide](https://docs.letta.com/guides/agents/filesystem))
265
204
 
266
- By default, this library logs to `globalThis.console`. You can also provide a custom logger.
267
- Most logging libraries are supported, including [pino](https://www.npmjs.com/package/pino), [winston](https://www.npmjs.com/package/winston), [bunyan](https://www.npmjs.com/package/bunyan), [consola](https://www.npmjs.com/package/consola), [signale](https://www.npmjs.com/package/signale), and [@std/log](https://jsr.io/@std/log). If your logger doesn't work, please open an issue.
205
+ Give agents access to files:
268
206
 
269
- When providing a custom logger, the `logLevel` option still controls which messages are emitted, messages
270
- below the configured level will not be sent to your logger.
207
+ ```typescript
208
+ import { createReadStream } from 'fs';
271
209
 
272
- ```ts
273
- import Letta from '@letta-ai/letta-client';
274
- import pino from 'pino';
210
+ // Create folder and upload file
211
+ const folder = await client.folders.create({
212
+ name: "my_folder",
213
+ });
275
214
 
276
- const logger = pino();
215
+ await client.folders.files.upload(createReadStream("file.txt"), folder.id);
277
216
 
278
- const client = new Letta({
279
- logger: logger.child({ name: 'Letta' }),
280
- logLevel: 'debug', // Send all messages to pino, allowing it to filter
281
- });
217
+ // Attach to agent
218
+ await client.agents.folders.attach(agent.id, folder.id);
282
219
  ```
283
220
 
284
- ### Making custom/undocumented requests
221
+ ### Long-running Agents ([full guide](https://docs.letta.com/guides/agents/long-running))
285
222
 
286
- This library is typed for convenient access to the documented API. If you need to access undocumented
287
- endpoints, params, or response properties, the library can still be used.
223
+ Background execution with resumable streaming:
288
224
 
289
- #### Undocumented endpoints
225
+ ```typescript
226
+ const stream = await client.agents.messages.create(agent.id, {
227
+ messages: [{ role: "user", content: "Analyze this dataset" }],
228
+ background: true
229
+ });
290
230
 
291
- To make requests to undocumented endpoints, you can use `client.get`, `client.post`, and other HTTP verbs.
292
- Options on the client, such as retries, will be respected when making these requests.
231
+ let runId, lastSeqId;
232
+ for await (const chunk of stream) {
233
+ runId = chunk.runId;
234
+ lastSeqId = chunk.seqId;
235
+ }
293
236
 
294
- ```ts
295
- await client.post('/some/path', {
296
- body: { some_prop: 'foo' },
297
- query: { some_query_arg: 'bar' },
298
- });
237
+ // Resume if disconnected
238
+ for await (const chunk of client.runs.stream(runId, { startingAfter: lastSeqId })) {
239
+ console.log(chunk);
240
+ }
299
241
  ```
300
242
 
301
- #### Undocumented request params
243
+ ### Streaming ([full guide](https://docs.letta.com/guides/agents/streaming))
302
244
 
303
- To make requests using undocumented parameters, you may use `// @ts-expect-error` on the undocumented
304
- parameter. This library doesn't validate at runtime that the request matches the type, so any extra values you
305
- send will be sent as-is.
245
+ Stream responses in real-time:
306
246
 
307
- ```ts
308
- client.archives.create({
309
- // ...
310
- // @ts-expect-error baz is not yet public
311
- baz: 'undocumented option',
247
+ ```typescript
248
+ const stream = await client.agents.messages.stream(agent.id, {
249
+ messages: [{ role: "user", content: "Hello!" }]
312
250
  });
313
- ```
314
251
 
315
- For requests with the `GET` verb, any extra params will be in the query, all other requests will send the
316
- extra param in the body.
252
+ for await (const chunk of stream) {
253
+ console.log(chunk);
254
+ }
255
+ ```
317
256
 
318
- If you want to explicitly send an extra argument, you can do so with the `query`, `body`, and `headers` request
319
- options.
257
+ ### Message Types ([full guide](https://docs.letta.com/guides/agents/message-types))
258
+
259
+ Agent responses contain different message types. Handle them with the `messageType` discriminator:
260
+
261
+ ```typescript
262
+ const messages = await client.agents.messages.list(agent.id);
263
+
264
+ for (const message of messages) {
265
+ switch (message.messageType) {
266
+ case "user_message":
267
+ console.log("User:", message.content);
268
+ break;
269
+ case "assistant_message":
270
+ console.log("Agent:", message.content);
271
+ break;
272
+ case "reasoning_message":
273
+ console.log("Reasoning:", message.reasoning);
274
+ break;
275
+ case "tool_call_message":
276
+ console.log("Tool:", message.toolCall.name);
277
+ break;
278
+ case "tool_return_message":
279
+ console.log("Result:", message.toolReturn);
280
+ break;
281
+ }
282
+ }
283
+ ```
320
284
 
321
- #### Undocumented response properties
285
+ ## TypeScript Support
322
286
 
323
- To access undocumented response properties, you may access the response object with `// @ts-expect-error` on
324
- the response object, or cast the response object to the requisite type. Like the request params, we do not
325
- validate or strip extra properties from the response from the API.
287
+ Full TypeScript support with exported types:
326
288
 
327
- ### Customizing the fetch client
289
+ ```typescript
290
+ import { Letta } from "@letta-ai/letta-client";
328
291
 
329
- By default, this library expects a global `fetch` function is defined.
292
+ const request: Letta.CreateAgentRequest = {
293
+ model: "openai/gpt-4o-mini",
294
+ memoryBlocks: [...]
295
+ };
296
+ ```
330
297
 
331
- If you want to use a different `fetch` function, you can either polyfill the global:
298
+ ## Error Handling
332
299
 
333
- ```ts
334
- import fetch from 'my-fetch';
300
+ ```typescript
301
+ import { LettaError } from "@letta-ai/letta-client";
335
302
 
336
- globalThis.fetch = fetch;
303
+ try {
304
+ await client.agents.messages.create(agentId, {...});
305
+ } catch (err) {
306
+ if (err instanceof LettaError) {
307
+ console.log(err.statusCode);
308
+ console.log(err.message);
309
+ console.log(err.body);
310
+ }
311
+ }
337
312
  ```
338
313
 
339
- Or pass it to the client:
314
+ ## Advanced Configuration
340
315
 
341
- ```ts
342
- import Letta from '@letta-ai/letta-client';
343
- import fetch from 'my-fetch';
316
+ ### Retries
344
317
 
345
- const client = new Letta({ fetch });
318
+ ```typescript
319
+ const response = await client.agents.create({...}, {
320
+ maxRetries: 3 // Default: 2
321
+ });
346
322
  ```
347
323
 
348
- ### Fetch options
349
-
350
- If you want to set custom `fetch` options without overriding the `fetch` function, you can provide a `fetchOptions` object when instantiating the client or making a request. (Request-specific options override client options.)
351
-
352
- ```ts
353
- import Letta from '@letta-ai/letta-client';
324
+ ### Timeouts
354
325
 
355
- const client = new Letta({
356
- fetchOptions: {
357
- // `RequestInit` options
358
- },
326
+ ```typescript
327
+ const response = await client.agents.create({...}, {
328
+ timeoutInSeconds: 30 // Default: 60
359
329
  });
360
330
  ```
361
331
 
362
- #### Configuring proxies
363
-
364
- To modify proxy behavior, you can provide custom `fetchOptions` that add runtime-specific proxy
365
- options to requests:
332
+ ### Custom Headers
366
333
 
367
- <img src="https://raw.githubusercontent.com/stainless-api/sdk-assets/refs/heads/main/node.svg" align="top" width="18" height="21"> **Node** <sup>[[docs](https://github.com/nodejs/undici/blob/main/docs/docs/api/ProxyAgent.md#example---proxyagent-with-fetch)]</sup>
334
+ ```typescript
335
+ const response = await client.agents.create({...}, {
336
+ headers: {
337
+ 'X-Custom-Header': 'value'
338
+ }
339
+ });
340
+ ```
368
341
 
369
- ```ts
370
- import Letta from '@letta-ai/letta-client';
371
- import * as undici from 'undici';
342
+ ### Abort Requests
372
343
 
373
- const proxyAgent = new undici.ProxyAgent('http://localhost:8888');
374
- const client = new Letta({
375
- fetchOptions: {
376
- dispatcher: proxyAgent,
377
- },
344
+ ```typescript
345
+ const controller = new AbortController();
346
+ const response = await client.agents.create({...}, {
347
+ abortSignal: controller.signal
378
348
  });
349
+ controller.abort();
379
350
  ```
380
351
 
381
- <img src="https://raw.githubusercontent.com/stainless-api/sdk-assets/refs/heads/main/bun.svg" align="top" width="18" height="21"> **Bun** <sup>[[docs](https://bun.sh/guides/http/proxy)]</sup>
352
+ ### Raw Response Access
382
353
 
383
- ```ts
384
- import Letta from '@letta-ai/letta-client';
354
+ ```typescript
355
+ const { data, rawResponse } = await client.agents
356
+ .create({...})
357
+ .withRawResponse();
385
358
 
386
- const client = new Letta({
387
- fetchOptions: {
388
- proxy: 'http://localhost:8888',
389
- },
390
- });
359
+ console.log(rawResponse.headers['X-My-Header']);
391
360
  ```
392
361
 
393
- <img src="https://raw.githubusercontent.com/stainless-api/sdk-assets/refs/heads/main/deno.svg" align="top" width="18" height="21"> **Deno** <sup>[[docs](https://docs.deno.com/api/deno/~/Deno.createHttpClient)]</sup>
362
+ ### Custom Fetch Client
394
363
 
395
- ```ts
396
- import Letta from 'npm:@letta-ai/letta-client';
397
-
398
- const httpClient = Deno.createHttpClient({ proxy: { url: 'http://localhost:8888' } });
399
- const client = new Letta({
400
- fetchOptions: {
401
- client: httpClient,
402
- },
364
+ ```typescript
365
+ const client = new LettaClient({
366
+ fetcher: yourCustomFetchImplementation
403
367
  });
404
368
  ```
405
369
 
406
- ## Frequently Asked Questions
370
+ ## Runtime Compatibility
407
371
 
408
- ## Semantic versioning
372
+ Works in:
373
+ - Node.js 18+
374
+ - Vercel
375
+ - Cloudflare Workers
376
+ - Deno v1.25+
377
+ - Bun 1.0+
378
+ - React Native
409
379
 
410
- This package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions, though certain backwards-incompatible changes may be released as minor versions:
411
-
412
- 1. Changes that only affect static types, without breaking runtime behavior.
413
- 2. Changes to library internals which are technically public but not intended or documented for external use. _(Please open a GitHub issue to let us know if you are relying on such internals.)_
414
- 3. Changes that we do not expect to impact the vast majority of users in practice.
380
+ ## Contributing
415
381
 
416
- We take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.
382
+ Letta is an open source project built by over a hundred contributors. There are many ways to get involved in the Letta OSS project!
417
383
 
418
- We are keen for your feedback; please open an [issue](https://www.github.com/letta-ai/letta-node/issues) with questions, bugs, or suggestions.
384
+ * [**Join the Discord**](https://discord.gg/letta): Chat with the Letta devs and other AI developers.
385
+ * [**Chat on our forum**](https://forum.letta.com/): If you're not into Discord, check out our developer forum.
386
+ * **Follow our socials**: [Twitter/X](https://twitter.com/Letta_AI), [LinkedIn](https://www.linkedin.com/company/letta-ai/), [YouTube](https://www.youtube.com/@letta-ai)
419
387
 
420
- ## Requirements
388
+ This SDK is generated programmatically. For SDK changes, please [open an issue](https://github.com/letta-ai/letta-node/issues).
421
389
 
422
- TypeScript >= 4.9 is supported.
390
+ README contributions are always welcome!
423
391
 
424
- The following runtimes are supported:
392
+ ## Resources
425
393
 
426
- - Web browsers (Up-to-date Chrome, Firefox, Safari, Edge, and more)
427
- - Node.js 20 LTS or later ([non-EOL](https://endoflife.date/nodejs)) versions.
428
- - Deno v1.28.0 or higher.
429
- - Bun 1.0 or later.
430
- - Cloudflare Workers.
431
- - Vercel Edge Runtime.
432
- - Jest 28 or greater with the `"node"` environment (`"jsdom"` is not supported at this time).
433
- - Nitro v2.6 or greater.
394
+ - [Documentation](https://docs.letta.com)
395
+ - [TypeScript API Reference](./reference.md)
396
+ - [Example Applications](https://github.com/letta-ai/letta-chatbot-example)
434
397
 
435
- Note that React Native is not supported at this time.
398
+ ## License
436
399
 
437
- If you are interested in other runtime environments, please open or upvote an issue on GitHub.
400
+ MIT
438
401
 
439
- ## Contributing
402
+ ---
440
403
 
441
- See [the contributing documentation](./CONTRIBUTING.md).
404
+ ***Legal notices**: By using Letta and related Letta services (such as the Letta endpoint or hosted service), you are agreeing to our [privacy policy](https://www.letta.com/privacy-policy) and [terms of service](https://www.letta.com/terms-of-service).*