@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.
- package/CHANGELOG.md +248 -0
- package/README.md +282 -319
- package/client.d.mts +61 -36
- package/client.d.mts.map +1 -1
- package/client.d.ts +61 -36
- package/client.d.ts.map +1 -1
- package/client.js +53 -23
- package/client.js.map +1 -1
- package/client.mjs +53 -23
- package/client.mjs.map +1 -1
- package/core/pagination.d.mts +96 -0
- package/core/pagination.d.mts.map +1 -0
- package/core/pagination.d.ts +96 -0
- package/core/pagination.d.ts.map +1 -0
- package/core/pagination.js +199 -0
- package/core/pagination.js.map +1 -0
- package/core/pagination.mjs +191 -0
- package/core/pagination.mjs.map +1 -0
- package/core/streaming.d.mts +33 -0
- package/core/streaming.d.mts.map +1 -0
- package/core/streaming.d.ts +33 -0
- package/core/streaming.d.ts.map +1 -0
- package/core/streaming.js +276 -0
- package/core/streaming.js.map +1 -0
- package/core/streaming.mjs +271 -0
- package/core/streaming.mjs.map +1 -0
- package/index.d.mts +1 -0
- package/index.d.mts.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +3 -1
- package/index.js.map +1 -1
- package/index.mjs +1 -0
- package/index.mjs.map +1 -1
- package/internal/decoders/line.d.mts +17 -0
- package/internal/decoders/line.d.mts.map +1 -0
- package/internal/decoders/line.d.ts +17 -0
- package/internal/decoders/line.d.ts.map +1 -0
- package/internal/decoders/line.js +113 -0
- package/internal/decoders/line.js.map +1 -0
- package/internal/decoders/line.mjs +108 -0
- package/internal/decoders/line.mjs.map +1 -0
- package/internal/parse.d.mts.map +1 -1
- package/internal/parse.d.ts.map +1 -1
- package/internal/parse.js +10 -0
- package/internal/parse.js.map +1 -1
- package/internal/parse.mjs +10 -0
- package/internal/parse.mjs.map +1 -1
- package/internal/request-options.d.mts +2 -0
- package/internal/request-options.d.mts.map +1 -1
- package/internal/request-options.d.ts +2 -0
- package/internal/request-options.d.ts.map +1 -1
- package/internal/request-options.js.map +1 -1
- package/internal/request-options.mjs.map +1 -1
- package/internal/tslib.js +17 -17
- package/package.json +21 -1
- package/pagination.d.mts +2 -0
- package/pagination.d.mts.map +1 -0
- package/pagination.d.ts +2 -0
- package/pagination.d.ts.map +1 -0
- package/pagination.js +6 -0
- package/pagination.js.map +1 -0
- package/pagination.mjs +2 -0
- package/pagination.mjs.map +1 -0
- package/resources/access-tokens.d.mts +105 -0
- package/resources/access-tokens.d.mts.map +1 -0
- package/resources/access-tokens.d.ts +105 -0
- package/resources/access-tokens.d.ts.map +1 -0
- package/resources/access-tokens.js +30 -0
- package/resources/access-tokens.js.map +1 -0
- package/resources/access-tokens.mjs +26 -0
- package/resources/access-tokens.mjs.map +1 -0
- package/resources/agents/agents.d.mts +517 -160
- package/resources/agents/agents.d.mts.map +1 -1
- package/resources/agents/agents.d.ts +517 -160
- package/resources/agents/agents.d.ts.map +1 -1
- package/resources/agents/agents.js +16 -21
- package/resources/agents/agents.js.map +1 -1
- package/resources/agents/agents.mjs +17 -22
- package/resources/agents/agents.mjs.map +1 -1
- package/resources/agents/archives.d.mts +31 -0
- package/resources/agents/archives.d.mts.map +1 -0
- package/resources/agents/archives.d.ts +31 -0
- package/resources/agents/archives.d.ts.map +1 -0
- package/resources/agents/archives.js +24 -0
- package/resources/agents/archives.js.map +1 -0
- package/resources/agents/archives.mjs +20 -0
- package/resources/agents/archives.mjs.map +1 -0
- package/resources/agents/blocks.d.mts +33 -55
- package/resources/agents/blocks.d.mts.map +1 -1
- package/resources/agents/blocks.d.ts +33 -55
- package/resources/agents/blocks.d.ts.map +1 -1
- package/resources/agents/blocks.js +2 -1
- package/resources/agents/blocks.js.map +1 -1
- package/resources/agents/blocks.mjs +2 -1
- package/resources/agents/blocks.mjs.map +1 -1
- package/resources/agents/files.d.mts +39 -79
- package/resources/agents/files.d.mts.map +1 -1
- package/resources/agents/files.d.ts +39 -79
- package/resources/agents/files.d.ts.map +1 -1
- package/resources/agents/files.js +5 -1
- package/resources/agents/files.js.map +1 -1
- package/resources/agents/files.mjs +5 -1
- package/resources/agents/files.mjs.map +1 -1
- package/resources/agents/folders.d.mts +50 -79
- package/resources/agents/folders.d.mts.map +1 -1
- package/resources/agents/folders.d.ts +50 -79
- package/resources/agents/folders.d.ts.map +1 -1
- package/resources/agents/folders.js +5 -1
- package/resources/agents/folders.js.map +1 -1
- package/resources/agents/folders.mjs +5 -1
- package/resources/agents/folders.mjs.map +1 -1
- package/resources/agents/groups.d.mts +6 -28
- package/resources/agents/groups.d.mts.map +1 -1
- package/resources/agents/groups.d.ts +6 -28
- package/resources/agents/groups.d.ts.map +1 -1
- package/resources/agents/groups.js +5 -1
- package/resources/agents/groups.js.map +1 -1
- package/resources/agents/groups.mjs +5 -1
- package/resources/agents/groups.mjs.map +1 -1
- package/resources/agents/identities.d.mts +31 -0
- package/resources/agents/identities.d.mts.map +1 -0
- package/resources/agents/identities.d.ts +31 -0
- package/resources/agents/identities.d.ts.map +1 -0
- package/resources/agents/identities.js +24 -0
- package/resources/agents/identities.js.map +1 -0
- package/resources/agents/identities.mjs +20 -0
- package/resources/agents/identities.mjs.map +1 -0
- package/resources/agents/index.d.mts +9 -7
- package/resources/agents/index.d.mts.map +1 -1
- package/resources/agents/index.d.ts +9 -7
- package/resources/agents/index.d.ts.map +1 -1
- package/resources/agents/index.js +5 -1
- package/resources/agents/index.js.map +1 -1
- package/resources/agents/index.mjs +2 -0
- package/resources/agents/index.mjs.map +1 -1
- package/resources/agents/messages.d.mts +668 -422
- package/resources/agents/messages.d.mts.map +1 -1
- package/resources/agents/messages.d.ts +668 -422
- package/resources/agents/messages.d.ts.map +1 -1
- package/resources/agents/messages.js +27 -26
- package/resources/agents/messages.js.map +1 -1
- package/resources/agents/messages.mjs +27 -26
- package/resources/agents/messages.mjs.map +1 -1
- package/resources/agents/tools.d.mts +9 -30
- package/resources/agents/tools.d.mts.map +1 -1
- package/resources/agents/tools.d.ts +9 -30
- package/resources/agents/tools.d.ts.map +1 -1
- package/resources/agents/tools.js +5 -1
- package/resources/agents/tools.js.map +1 -1
- package/resources/agents/tools.mjs +5 -1
- package/resources/agents/tools.mjs.map +1 -1
- package/resources/archives/archives.d.mts +115 -0
- package/resources/archives/archives.d.mts.map +1 -0
- package/resources/archives/archives.d.ts +115 -0
- package/resources/archives/archives.d.ts.map +1 -0
- package/resources/archives/archives.js +50 -0
- package/resources/archives/archives.js.map +1 -0
- package/resources/archives/archives.mjs +45 -0
- package/resources/archives/archives.mjs.map +1 -0
- package/resources/archives/index.d.mts +3 -0
- package/resources/archives/index.d.mts.map +1 -0
- package/resources/archives/index.d.ts +3 -0
- package/resources/archives/index.d.ts.map +1 -0
- package/resources/archives/index.js +9 -0
- package/resources/archives/index.js.map +1 -0
- package/resources/archives/index.mjs +4 -0
- package/resources/archives/index.mjs.map +1 -0
- package/resources/archives/passages.d.mts +113 -0
- package/resources/archives/passages.d.mts.map +1 -0
- package/resources/archives/passages.d.ts +113 -0
- package/resources/archives/passages.d.ts.map +1 -0
- package/resources/archives/passages.js +32 -0
- package/resources/archives/passages.js.map +1 -0
- package/resources/archives/passages.mjs +28 -0
- package/resources/archives/passages.mjs.map +1 -0
- package/resources/archives.d.mts +1 -130
- package/resources/archives.d.mts.map +1 -1
- package/resources/archives.d.ts +1 -130
- package/resources/archives.d.ts.map +1 -1
- package/resources/archives.js +2 -37
- package/resources/archives.js.map +1 -1
- package/resources/archives.mjs +1 -35
- package/resources/archives.mjs.map +1 -1
- package/resources/batches/batches.d.mts +52 -34
- package/resources/batches/batches.d.mts.map +1 -1
- package/resources/batches/batches.d.ts +52 -34
- package/resources/batches/batches.d.ts.map +1 -1
- package/resources/batches/batches.js +2 -1
- package/resources/batches/batches.js.map +1 -1
- package/resources/batches/batches.mjs +2 -1
- package/resources/batches/batches.mjs.map +1 -1
- package/resources/batches/index.d.mts +2 -2
- package/resources/batches/index.d.mts.map +1 -1
- package/resources/batches/index.d.ts +2 -2
- package/resources/batches/index.d.ts.map +1 -1
- package/resources/batches/index.js.map +1 -1
- package/resources/batches/index.mjs.map +1 -1
- package/resources/batches/messages.d.mts +6 -30
- package/resources/batches/messages.d.mts.map +1 -1
- package/resources/batches/messages.d.ts +6 -30
- package/resources/batches/messages.d.ts.map +1 -1
- package/resources/batches/messages.js +2 -1
- package/resources/batches/messages.js.map +1 -1
- package/resources/batches/messages.mjs +2 -1
- package/resources/batches/messages.mjs.map +1 -1
- package/resources/blocks/agents.d.mts +6 -28
- package/resources/blocks/agents.d.mts.map +1 -1
- package/resources/blocks/agents.d.ts +6 -28
- package/resources/blocks/agents.d.ts.map +1 -1
- package/resources/blocks/agents.js +5 -1
- package/resources/blocks/agents.js.map +1 -1
- package/resources/blocks/agents.mjs +5 -1
- package/resources/blocks/agents.mjs.map +1 -1
- package/resources/blocks/blocks.d.mts +108 -48
- package/resources/blocks/blocks.d.mts.map +1 -1
- package/resources/blocks/blocks.d.ts +108 -48
- package/resources/blocks/blocks.d.ts.map +1 -1
- package/resources/blocks/blocks.js +3 -8
- package/resources/blocks/blocks.js.map +1 -1
- package/resources/blocks/blocks.mjs +3 -8
- package/resources/blocks/blocks.mjs.map +1 -1
- package/resources/blocks/index.d.mts +2 -2
- package/resources/blocks/index.d.mts.map +1 -1
- package/resources/blocks/index.d.ts +2 -2
- package/resources/blocks/index.d.ts.map +1 -1
- package/resources/blocks/index.js.map +1 -1
- package/resources/blocks/index.mjs.map +1 -1
- package/resources/folders/files.d.mts +75 -97
- package/resources/folders/files.d.mts.map +1 -1
- package/resources/folders/files.d.ts +75 -97
- package/resources/folders/files.d.ts.map +1 -1
- package/resources/folders/files.js +5 -1
- package/resources/folders/files.js.map +1 -1
- package/resources/folders/files.mjs +5 -1
- package/resources/folders/files.mjs.map +1 -1
- package/resources/folders/folders.d.mts +11 -44
- package/resources/folders/folders.d.mts.map +1 -1
- package/resources/folders/folders.d.ts +11 -44
- package/resources/folders/folders.d.ts.map +1 -1
- package/resources/folders/folders.js +2 -7
- package/resources/folders/folders.js.map +1 -1
- package/resources/folders/folders.mjs +2 -7
- package/resources/folders/folders.mjs.map +1 -1
- package/resources/folders/index.d.mts +2 -2
- package/resources/folders/index.d.mts.map +1 -1
- package/resources/folders/index.d.ts +2 -2
- package/resources/folders/index.d.ts.map +1 -1
- package/resources/folders/index.js.map +1 -1
- package/resources/folders/index.mjs.map +1 -1
- package/resources/groups/groups.d.mts +17 -67
- package/resources/groups/groups.d.mts.map +1 -1
- package/resources/groups/groups.d.ts +17 -67
- package/resources/groups/groups.d.ts.map +1 -1
- package/resources/groups/groups.js +6 -28
- package/resources/groups/groups.js.map +1 -1
- package/resources/groups/groups.mjs +6 -28
- package/resources/groups/groups.mjs.map +1 -1
- package/resources/groups/index.d.mts +2 -2
- package/resources/groups/index.d.mts.map +1 -1
- package/resources/groups/index.d.ts +2 -2
- package/resources/groups/index.d.ts.map +1 -1
- package/resources/groups/index.js.map +1 -1
- package/resources/groups/index.mjs.map +1 -1
- package/resources/groups/messages.d.mts +145 -79
- package/resources/groups/messages.d.mts.map +1 -1
- package/resources/groups/messages.d.ts +145 -79
- package/resources/groups/messages.d.ts.map +1 -1
- package/resources/groups/messages.js +18 -10
- package/resources/groups/messages.js.map +1 -1
- package/resources/groups/messages.mjs +18 -10
- package/resources/groups/messages.mjs.map +1 -1
- package/resources/identities/agents.d.mts +6 -28
- package/resources/identities/agents.d.mts.map +1 -1
- package/resources/identities/agents.d.ts +6 -28
- package/resources/identities/agents.d.ts.map +1 -1
- package/resources/identities/agents.js +2 -1
- package/resources/identities/agents.js.map +1 -1
- package/resources/identities/agents.mjs +2 -1
- package/resources/identities/agents.mjs.map +1 -1
- package/resources/identities/blocks.d.mts +7 -29
- package/resources/identities/blocks.d.mts.map +1 -1
- package/resources/identities/blocks.d.ts +7 -29
- package/resources/identities/blocks.d.ts.map +1 -1
- package/resources/identities/blocks.js +2 -1
- package/resources/identities/blocks.js.map +1 -1
- package/resources/identities/blocks.mjs +2 -1
- package/resources/identities/blocks.mjs.map +1 -1
- package/resources/identities/identities.d.mts +30 -65
- package/resources/identities/identities.d.mts.map +1 -1
- package/resources/identities/identities.d.ts +30 -65
- package/resources/identities/identities.d.ts.map +1 -1
- package/resources/identities/identities.js +7 -29
- package/resources/identities/identities.js.map +1 -1
- package/resources/identities/identities.mjs +7 -29
- package/resources/identities/identities.mjs.map +1 -1
- package/resources/identities/index.d.mts +3 -3
- package/resources/identities/index.d.mts.map +1 -1
- package/resources/identities/index.d.ts +3 -3
- package/resources/identities/index.d.ts.map +1 -1
- package/resources/identities/index.js.map +1 -1
- package/resources/identities/index.mjs.map +1 -1
- package/resources/identities/properties.d.mts +1 -1
- package/resources/identities/properties.d.ts +1 -1
- package/resources/identities/properties.js +1 -1
- package/resources/identities/properties.mjs +1 -1
- package/resources/index.d.mts +13 -11
- package/resources/index.d.mts.map +1 -1
- package/resources/index.d.ts +13 -11
- package/resources/index.d.ts.map +1 -1
- package/resources/index.js +6 -2
- package/resources/index.js.map +1 -1
- package/resources/index.mjs +3 -1
- package/resources/index.mjs.map +1 -1
- package/resources/mcp-servers/index.d.mts +3 -0
- package/resources/mcp-servers/index.d.mts.map +1 -0
- package/resources/mcp-servers/index.d.ts +3 -0
- package/resources/mcp-servers/index.d.ts.map +1 -0
- package/resources/mcp-servers/index.js +9 -0
- package/resources/mcp-servers/index.js.map +1 -0
- package/resources/mcp-servers/index.mjs +4 -0
- package/resources/mcp-servers/index.mjs.map +1 -0
- package/resources/mcp-servers/mcp-servers.d.mts +349 -0
- package/resources/mcp-servers/mcp-servers.d.mts.map +1 -0
- package/resources/mcp-servers/mcp-servers.d.ts +349 -0
- package/resources/mcp-servers/mcp-servers.d.ts.map +1 -0
- package/resources/mcp-servers/mcp-servers.js +69 -0
- package/resources/mcp-servers/mcp-servers.js.map +1 -0
- package/resources/mcp-servers/mcp-servers.mjs +64 -0
- package/resources/mcp-servers/mcp-servers.mjs.map +1 -0
- package/resources/mcp-servers/tools.d.mts +42 -0
- package/resources/mcp-servers/tools.d.mts.map +1 -0
- package/resources/mcp-servers/tools.d.ts +42 -0
- package/resources/mcp-servers/tools.d.ts.map +1 -0
- package/resources/mcp-servers/tools.js +36 -0
- package/resources/mcp-servers/tools.js.map +1 -0
- package/resources/mcp-servers/tools.mjs +32 -0
- package/resources/mcp-servers/tools.mjs.map +1 -0
- package/resources/mcp-servers.d.mts +2 -0
- package/resources/mcp-servers.d.mts.map +1 -0
- package/resources/mcp-servers.d.ts +2 -0
- package/resources/mcp-servers.d.ts.map +1 -0
- package/resources/mcp-servers.js +6 -0
- package/resources/mcp-servers.js.map +1 -0
- package/resources/mcp-servers.mjs +3 -0
- package/resources/mcp-servers.mjs.map +1 -0
- package/resources/models/embeddings.d.mts +6 -2
- package/resources/models/embeddings.d.mts.map +1 -1
- package/resources/models/embeddings.d.ts +6 -2
- package/resources/models/embeddings.d.ts.map +1 -1
- package/resources/models/embeddings.js +5 -1
- package/resources/models/embeddings.js.map +1 -1
- package/resources/models/embeddings.mjs +5 -1
- package/resources/models/embeddings.mjs.map +1 -1
- package/resources/models/index.d.mts +1 -1
- package/resources/models/index.d.mts.map +1 -1
- package/resources/models/index.d.ts +1 -1
- package/resources/models/index.d.ts.map +1 -1
- package/resources/models/index.js.map +1 -1
- package/resources/models/index.mjs.map +1 -1
- package/resources/models/models.d.mts +180 -4
- package/resources/models/models.d.mts.map +1 -1
- package/resources/models/models.d.ts +180 -4
- package/resources/models/models.d.ts.map +1 -1
- package/resources/models/models.js +5 -1
- package/resources/models/models.js.map +1 -1
- package/resources/models/models.mjs +5 -1
- package/resources/models/models.mjs.map +1 -1
- package/resources/runs/index.d.mts +3 -3
- package/resources/runs/index.d.mts.map +1 -1
- package/resources/runs/index.d.ts +3 -3
- package/resources/runs/index.d.ts.map +1 -1
- package/resources/runs/index.js.map +1 -1
- package/resources/runs/index.mjs.map +1 -1
- package/resources/runs/messages.d.mts +8 -28
- package/resources/runs/messages.d.mts.map +1 -1
- package/resources/runs/messages.d.ts +8 -28
- package/resources/runs/messages.d.ts.map +1 -1
- package/resources/runs/messages.js +10 -2
- package/resources/runs/messages.js.map +1 -1
- package/resources/runs/messages.mjs +10 -2
- package/resources/runs/messages.mjs.map +1 -1
- package/resources/runs/runs.d.mts +10 -36
- package/resources/runs/runs.d.mts.map +1 -1
- package/resources/runs/runs.d.ts +10 -36
- package/resources/runs/runs.d.ts.map +1 -1
- package/resources/runs/runs.js +2 -1
- package/resources/runs/runs.js.map +1 -1
- package/resources/runs/runs.mjs +3 -2
- package/resources/runs/runs.mjs.map +1 -1
- package/resources/runs/steps.d.mts +6 -26
- package/resources/runs/steps.d.mts.map +1 -1
- package/resources/runs/steps.d.ts +6 -26
- package/resources/runs/steps.d.ts.map +1 -1
- package/resources/runs/steps.js +5 -1
- package/resources/runs/steps.js.map +1 -1
- package/resources/runs/steps.mjs +5 -1
- package/resources/runs/steps.mjs.map +1 -1
- package/resources/steps/index.d.mts +2 -2
- package/resources/steps/index.d.mts.map +1 -1
- package/resources/steps/index.d.ts +2 -2
- package/resources/steps/index.d.ts.map +1 -1
- package/resources/steps/index.js.map +1 -1
- package/resources/steps/index.mjs +1 -1
- package/resources/steps/index.mjs.map +1 -1
- package/resources/steps/messages.d.mts +14 -28
- package/resources/steps/messages.d.mts.map +1 -1
- package/resources/steps/messages.d.ts +14 -28
- package/resources/steps/messages.d.ts.map +1 -1
- package/resources/steps/messages.js +5 -1
- package/resources/steps/messages.js.map +1 -1
- package/resources/steps/messages.mjs +5 -1
- package/resources/steps/messages.mjs.map +1 -1
- package/resources/steps/steps.d.mts +17 -44
- package/resources/steps/steps.d.mts.map +1 -1
- package/resources/steps/steps.d.ts +17 -44
- package/resources/steps/steps.d.ts.map +1 -1
- package/resources/steps/steps.js +3 -11
- package/resources/steps/steps.js.map +1 -1
- package/resources/steps/steps.mjs +3 -11
- package/resources/steps/steps.mjs.map +1 -1
- package/resources/templates/agents.d.mts +9 -14
- package/resources/templates/agents.d.mts.map +1 -1
- package/resources/templates/agents.d.ts +9 -14
- package/resources/templates/agents.d.ts.map +1 -1
- package/resources/templates/agents.js +2 -3
- package/resources/templates/agents.js.map +1 -1
- package/resources/templates/agents.mjs +2 -3
- package/resources/templates/agents.mjs.map +1 -1
- package/resources/tools.d.mts +6 -68
- package/resources/tools.d.mts.map +1 -1
- package/resources/tools.d.ts +6 -68
- package/resources/tools.d.ts.map +1 -1
- package/resources/tools.js +2 -7
- package/resources/tools.js.map +1 -1
- package/resources/tools.mjs +2 -7
- package/resources/tools.mjs.map +1 -1
- package/src/client.ts +274 -127
- package/src/core/pagination.ts +334 -0
- package/src/core/streaming.ts +331 -0
- package/src/index.ts +1 -0
- package/src/internal/decoders/line.ts +135 -0
- package/src/internal/parse.ts +14 -0
- package/src/internal/request-options.ts +2 -0
- package/src/pagination.ts +2 -0
- package/src/resources/access-tokens.ts +163 -0
- package/src/resources/agents/agents.ts +722 -242
- package/src/resources/agents/archives.ts +51 -0
- package/src/resources/agents/blocks.ts +50 -63
- package/src/resources/agents/files.ts +47 -90
- package/src/resources/agents/folders.ts +58 -88
- package/src/resources/agents/groups.ts +11 -35
- package/src/resources/agents/identities.ts +51 -0
- package/src/resources/agents/index.ts +40 -12
- package/src/resources/agents/messages.ts +941 -550
- package/src/resources/agents/tools.ts +13 -37
- package/src/resources/archives/archives.ts +170 -0
- package/src/resources/archives/index.ts +17 -0
- package/src/resources/archives/passages.ts +150 -0
- package/src/resources/archives.ts +1 -178
- package/src/resources/batches/batches.ts +74 -46
- package/src/resources/batches/index.ts +2 -2
- package/src/resources/batches/messages.ts +12 -37
- package/src/resources/blocks/agents.ts +11 -35
- package/src/resources/blocks/blocks.ts +130 -64
- package/src/resources/blocks/index.ts +3 -3
- package/src/resources/folders/files.ts +90 -113
- package/src/resources/folders/folders.ts +14 -55
- package/src/resources/folders/index.ts +2 -2
- package/src/resources/groups/groups.ts +21 -102
- package/src/resources/groups/index.ts +2 -4
- package/src/resources/groups/messages.ts +215 -103
- package/src/resources/identities/agents.ts +12 -35
- package/src/resources/identities/blocks.ts +13 -36
- package/src/resources/identities/identities.ts +35 -107
- package/src/resources/identities/index.ts +3 -4
- package/src/resources/identities/properties.ts +1 -1
- package/src/resources/index.ts +55 -18
- package/src/resources/mcp-servers/index.ts +25 -0
- package/src/resources/mcp-servers/mcp-servers.ts +460 -0
- package/src/resources/mcp-servers/tools.ts +69 -0
- package/src/resources/mcp-servers.ts +3 -0
- package/src/resources/models/embeddings.ts +6 -2
- package/src/resources/models/index.ts +2 -0
- package/src/resources/models/models.ts +260 -3
- package/src/resources/runs/index.ts +2 -3
- package/src/resources/runs/messages.ts +18 -37
- package/src/resources/runs/runs.ts +14 -54
- package/src/resources/runs/steps.ts +11 -33
- package/src/resources/steps/index.ts +7 -2
- package/src/resources/steps/messages.ts +25 -35
- package/src/resources/steps/steps.ts +20 -61
- package/src/resources/templates/agents.ts +14 -17
- package/src/resources/tools.ts +8 -92
- package/src/streaming.ts +2 -0
- package/src/version.ts +1 -1
- package/streaming.d.mts +2 -0
- package/streaming.d.mts.map +1 -0
- package/streaming.d.ts +2 -0
- package/streaming.d.ts.map +1 -0
- package/streaming.js +6 -0
- package/streaming.js.map +1 -0
- package/streaming.mjs +2 -0
- package/streaming.mjs.map +1 -0
- package/version.d.mts +1 -1
- package/version.d.mts.map +1 -1
- package/version.d.ts +1 -1
- package/version.d.ts.map +1 -1
- package/version.js +1 -1
- package/version.js.map +1 -1
- package/version.mjs +1 -1
- package/version.mjs.map +1 -1
package/README.md
CHANGED
|
@@ -1,441 +1,404 @@
|
|
|
1
|
-
# Letta TypeScript
|
|
1
|
+
# Letta TypeScript SDK
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/@letta-ai/letta-client)
|
|
4
4
|
|
|
5
|
-
|
|
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
|
-
|
|
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
|
-
|
|
13
|
+
## Get started
|
|
10
14
|
|
|
11
|
-
|
|
15
|
+
Install the Letta TypeScript SDK:
|
|
12
16
|
|
|
13
|
-
```
|
|
17
|
+
```bash
|
|
14
18
|
npm install @letta-ai/letta-client
|
|
15
19
|
```
|
|
16
20
|
|
|
17
|
-
##
|
|
21
|
+
## Simple Hello World example
|
|
18
22
|
|
|
19
|
-
|
|
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
|
-
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
73
|
+
## Core concepts in Letta:
|
|
45
74
|
|
|
46
|
-
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
|
|
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
|
-
|
|
84
|
+
Connect to a local Letta server instead of the cloud:
|
|
67
85
|
|
|
68
|
-
|
|
86
|
+
```typescript
|
|
87
|
+
const client = new LettaClient({
|
|
88
|
+
baseUrl: "http://localhost:8283"
|
|
89
|
+
});
|
|
90
|
+
```
|
|
69
91
|
|
|
70
|
-
|
|
92
|
+
Run Letta locally with Docker:
|
|
71
93
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
104
|
+
## Key Features
|
|
82
105
|
|
|
83
|
-
|
|
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
|
-
|
|
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
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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
|
-
//
|
|
99
|
-
await client.
|
|
100
|
-
|
|
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
|
-
|
|
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
|
-
|
|
128
|
+
### Multi-agent Shared Memory ([full guide](https://docs.letta.com/guides/agents/multi-agent-shared-memory))
|
|
136
129
|
|
|
137
|
-
|
|
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
|
-
|
|
132
|
+
Here is how to attach a single memory block to multiple agents:
|
|
149
133
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
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
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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
|
-
|
|
164
|
-
|
|
165
|
-
|
|
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
|
-
###
|
|
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
|
-
|
|
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
|
-
|
|
181
|
-
await client.
|
|
182
|
-
|
|
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
|
-
|
|
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
|
-
|
|
166
|
+
Save and share agents with the `.af` file format:
|
|
232
167
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
> may change between releases.
|
|
168
|
+
```typescript
|
|
169
|
+
import { readFileSync } from 'fs';
|
|
236
170
|
|
|
237
|
-
|
|
171
|
+
// Import agent
|
|
172
|
+
const file = new Blob([readFileSync('/path/to/agent.af')]);
|
|
173
|
+
const agent = await client.agents.importFile(file);
|
|
238
174
|
|
|
239
|
-
|
|
175
|
+
// Export agent
|
|
176
|
+
const schema = await client.agents.exportFile(agent.id);
|
|
177
|
+
```
|
|
240
178
|
|
|
241
|
-
|
|
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
|
-
|
|
245
|
-
import Letta from '@letta-ai/letta-client';
|
|
181
|
+
Connect to Model Context Protocol servers:
|
|
246
182
|
|
|
247
|
-
|
|
248
|
-
|
|
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
|
-
|
|
255
|
-
|
|
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
|
-
|
|
261
|
-
|
|
262
|
-
|
|
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
|
-
|
|
203
|
+
### Filesystem ([full guide](https://docs.letta.com/guides/agents/filesystem))
|
|
265
204
|
|
|
266
|
-
|
|
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
|
-
|
|
270
|
-
|
|
207
|
+
```typescript
|
|
208
|
+
import { createReadStream } from 'fs';
|
|
271
209
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
210
|
+
// Create folder and upload file
|
|
211
|
+
const folder = await client.folders.create({
|
|
212
|
+
name: "my_folder",
|
|
213
|
+
});
|
|
275
214
|
|
|
276
|
-
|
|
215
|
+
await client.folders.files.upload(createReadStream("file.txt"), folder.id);
|
|
277
216
|
|
|
278
|
-
|
|
279
|
-
|
|
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
|
-
###
|
|
221
|
+
### Long-running Agents ([full guide](https://docs.letta.com/guides/agents/long-running))
|
|
285
222
|
|
|
286
|
-
|
|
287
|
-
endpoints, params, or response properties, the library can still be used.
|
|
223
|
+
Background execution with resumable streaming:
|
|
288
224
|
|
|
289
|
-
|
|
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
|
-
|
|
292
|
-
|
|
231
|
+
let runId, lastSeqId;
|
|
232
|
+
for await (const chunk of stream) {
|
|
233
|
+
runId = chunk.runId;
|
|
234
|
+
lastSeqId = chunk.seqId;
|
|
235
|
+
}
|
|
293
236
|
|
|
294
|
-
|
|
295
|
-
await client.
|
|
296
|
-
|
|
297
|
-
|
|
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
|
-
|
|
243
|
+
### Streaming ([full guide](https://docs.letta.com/guides/agents/streaming))
|
|
302
244
|
|
|
303
|
-
|
|
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
|
-
```
|
|
308
|
-
client.
|
|
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
|
-
|
|
316
|
-
|
|
252
|
+
for await (const chunk of stream) {
|
|
253
|
+
console.log(chunk);
|
|
254
|
+
}
|
|
255
|
+
```
|
|
317
256
|
|
|
318
|
-
|
|
319
|
-
|
|
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
|
-
|
|
285
|
+
## TypeScript Support
|
|
322
286
|
|
|
323
|
-
|
|
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
|
-
|
|
289
|
+
```typescript
|
|
290
|
+
import { Letta } from "@letta-ai/letta-client";
|
|
328
291
|
|
|
329
|
-
|
|
292
|
+
const request: Letta.CreateAgentRequest = {
|
|
293
|
+
model: "openai/gpt-4o-mini",
|
|
294
|
+
memoryBlocks: [...]
|
|
295
|
+
};
|
|
296
|
+
```
|
|
330
297
|
|
|
331
|
-
|
|
298
|
+
## Error Handling
|
|
332
299
|
|
|
333
|
-
```
|
|
334
|
-
import
|
|
300
|
+
```typescript
|
|
301
|
+
import { LettaError } from "@letta-ai/letta-client";
|
|
335
302
|
|
|
336
|
-
|
|
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
|
-
|
|
314
|
+
## Advanced Configuration
|
|
340
315
|
|
|
341
|
-
|
|
342
|
-
import Letta from '@letta-ai/letta-client';
|
|
343
|
-
import fetch from 'my-fetch';
|
|
316
|
+
### Retries
|
|
344
317
|
|
|
345
|
-
|
|
318
|
+
```typescript
|
|
319
|
+
const response = await client.agents.create({...}, {
|
|
320
|
+
maxRetries: 3 // Default: 2
|
|
321
|
+
});
|
|
346
322
|
```
|
|
347
323
|
|
|
348
|
-
###
|
|
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
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
},
|
|
326
|
+
```typescript
|
|
327
|
+
const response = await client.agents.create({...}, {
|
|
328
|
+
timeoutInSeconds: 30 // Default: 60
|
|
359
329
|
});
|
|
360
330
|
```
|
|
361
331
|
|
|
362
|
-
|
|
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
|
-
|
|
334
|
+
```typescript
|
|
335
|
+
const response = await client.agents.create({...}, {
|
|
336
|
+
headers: {
|
|
337
|
+
'X-Custom-Header': 'value'
|
|
338
|
+
}
|
|
339
|
+
});
|
|
340
|
+
```
|
|
368
341
|
|
|
369
|
-
|
|
370
|
-
import Letta from '@letta-ai/letta-client';
|
|
371
|
-
import * as undici from 'undici';
|
|
342
|
+
### Abort Requests
|
|
372
343
|
|
|
373
|
-
|
|
374
|
-
const
|
|
375
|
-
|
|
376
|
-
|
|
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
|
-
|
|
352
|
+
### Raw Response Access
|
|
382
353
|
|
|
383
|
-
```
|
|
384
|
-
|
|
354
|
+
```typescript
|
|
355
|
+
const { data, rawResponse } = await client.agents
|
|
356
|
+
.create({...})
|
|
357
|
+
.withRawResponse();
|
|
385
358
|
|
|
386
|
-
|
|
387
|
-
fetchOptions: {
|
|
388
|
-
proxy: 'http://localhost:8888',
|
|
389
|
-
},
|
|
390
|
-
});
|
|
359
|
+
console.log(rawResponse.headers['X-My-Header']);
|
|
391
360
|
```
|
|
392
361
|
|
|
393
|
-
|
|
362
|
+
### Custom Fetch Client
|
|
394
363
|
|
|
395
|
-
```
|
|
396
|
-
|
|
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
|
-
##
|
|
370
|
+
## Runtime Compatibility
|
|
407
371
|
|
|
408
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
388
|
+
This SDK is generated programmatically. For SDK changes, please [open an issue](https://github.com/letta-ai/letta-node/issues).
|
|
421
389
|
|
|
422
|
-
|
|
390
|
+
README contributions are always welcome!
|
|
423
391
|
|
|
424
|
-
|
|
392
|
+
## Resources
|
|
425
393
|
|
|
426
|
-
-
|
|
427
|
-
-
|
|
428
|
-
-
|
|
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
|
-
|
|
398
|
+
## License
|
|
436
399
|
|
|
437
|
-
|
|
400
|
+
MIT
|
|
438
401
|
|
|
439
|
-
|
|
402
|
+
---
|
|
440
403
|
|
|
441
|
-
|
|
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).*
|