@letta-ai/letta-code 0.34.17 → 0.34.18

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 (37) hide show
  1. package/README.md +12 -0
  2. package/dist/agent-presets.js +5 -1
  3. package/dist/agent-presets.js.map +2 -2
  4. package/dist/mcp-client.js +2 -2
  5. package/dist/mcp-client.js.map +1 -1
  6. package/dist/mcp-oauth.js +2 -2
  7. package/dist/mcp-oauth.js.map +1 -1
  8. package/dist/types/agent/client-skills.d.ts.map +1 -1
  9. package/dist/types/agent/preloaded-skills.d.ts +4 -0
  10. package/dist/types/agent/preloaded-skills.d.ts.map +1 -0
  11. package/dist/types/agent/subagents/child-send-tracking.d.ts.map +1 -1
  12. package/dist/types/agent/subagents/index.d.ts.map +1 -1
  13. package/dist/types/agent/subagents/remote-turn-wait.d.ts.map +1 -1
  14. package/dist/types/agent/subagents/subagent-stream.d.ts.map +1 -1
  15. package/dist/types/auth/oauth.d.ts +8 -1
  16. package/dist/types/auth/oauth.d.ts.map +1 -1
  17. package/dist/types/backend/api/conversation-enqueue.d.ts +4 -1
  18. package/dist/types/backend/api/conversation-enqueue.d.ts.map +1 -1
  19. package/dist/types/headless-listener-launch.d.ts +5 -3
  20. package/dist/types/headless-listener-launch.d.ts.map +1 -1
  21. package/dist/types/headless-super-run-wait.d.ts +1 -1
  22. package/dist/types/headless-super-run-wait.d.ts.map +1 -1
  23. package/dist/types/tools/impl/remote-external-coding-agent.d.ts +1 -0
  24. package/dist/types/tools/impl/remote-external-coding-agent.d.ts.map +1 -1
  25. package/dist/types/tools/impl/task-stop.d.ts.map +1 -1
  26. package/dist/types/tools/impl/workflow.d.ts +5 -0
  27. package/dist/types/tools/impl/workflow.d.ts.map +1 -1
  28. package/dist/types/tools/workflow/sdk-spawner.d.ts.map +1 -1
  29. package/dist/types/tools/workflow/types.d.ts +2 -0
  30. package/dist/types/tools/workflow/types.d.ts.map +1 -1
  31. package/letta.js +355 -412
  32. package/npm-shrinkwrap.json +86 -86
  33. package/package.json +2 -2
  34. package/scripts/source-file-size-baseline.json +1 -1
  35. package/skills/maintaining-core-memory/SKILL.md +101 -0
  36. package/skills/maintaining-deferred-memory/SKILL.md +84 -0
  37. package/skills/workflow-authoring/SKILL.md +3 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letta-ai/letta-code",
3
- "version": "0.34.17",
3
+ "version": "0.34.18",
4
4
  "lockfileVersion": 3,
5
5
  "packages": {
6
6
  "node_modules/@alcalzone/ansi-tokenize": {
@@ -61,15 +61,15 @@
61
61
  }
62
62
  },
63
63
  "node_modules/@aws-sdk/core": {
64
- "version": "3.978.3",
65
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.978.3.tgz",
66
- "integrity": "sha512-nslpzUCTI9b2IQMWSd6mSAXldBexPc8rr0d3dXUutXYFLFaTdsHa2GD7sJdsn3PhyjK0O5K8ypd6zi+RXXPVlg==",
64
+ "version": "3.978.4",
65
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.978.4.tgz",
66
+ "integrity": "sha512-JvGp6y9sPX8FSs2K/EmFMZcUfdkHxqGE45+oxwGC75OIh50j2e4cbx7zcR3BwNs2DSGqJdBja5h6Vy89iIDmRQ==",
67
67
  "license": "Apache-2.0",
68
68
  "dependencies": {
69
69
  "@aws-sdk/types": "^3.974.6",
70
70
  "@aws-sdk/xml-builder": "^3.972.41",
71
71
  "@aws/lambda-invoke-store": "^0.3.0",
72
- "@smithy/core": "^3.35.2",
72
+ "@smithy/core": "^3.36.0",
73
73
  "@smithy/signature-v4": "^5.7.4",
74
74
  "@smithy/types": "^4.19.0",
75
75
  "bowser": "^2.11.0",
@@ -80,14 +80,14 @@
80
80
  }
81
81
  },
82
82
  "node_modules/@aws-sdk/credential-provider-env": {
83
- "version": "3.972.74",
84
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.74.tgz",
85
- "integrity": "sha512-rsRJcW2iFUhCgclyD6OSbMEaPl8Eu0qSeRZb2uuCK1ViZ66hl5wOe/p6Vr6MO3b+ydyKgFeqza2p6tZThvILlw==",
83
+ "version": "3.972.75",
84
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.75.tgz",
85
+ "integrity": "sha512-nc8Epg98PcYoKNx0VFlwtmZSCP+tuJ1FLWqpslET/gp4h/WYuULSJqtxppM6ywKKDdzNJPvLD7ceRfmxm3Qdxw==",
86
86
  "license": "Apache-2.0",
87
87
  "dependencies": {
88
- "@aws-sdk/core": "^3.978.3",
88
+ "@aws-sdk/core": "^3.978.4",
89
89
  "@aws-sdk/types": "^3.974.6",
90
- "@smithy/core": "^3.35.2",
90
+ "@smithy/core": "^3.36.0",
91
91
  "@smithy/types": "^4.19.0",
92
92
  "tslib": "^2.6.2"
93
93
  },
@@ -96,14 +96,14 @@
96
96
  }
97
97
  },
98
98
  "node_modules/@aws-sdk/credential-provider-http": {
99
- "version": "3.972.76",
100
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.76.tgz",
101
- "integrity": "sha512-pnKdh0Br7OJPj+7qKjzgTfDTFW0RhEMKXNDR2jv9CAM4oHuG/4z3hRh8KtutLfpmItuRtDbKBmwWkDqHwwAWXw==",
99
+ "version": "3.972.77",
100
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.77.tgz",
101
+ "integrity": "sha512-KkYFdIQwuw9IOHfEzK78slxmVWuhcm1w6YgE3V3WVxAeRRj9q5J9jlwzpY/oszWxd4SD96FTFkDdRGBdMFF2Mw==",
102
102
  "license": "Apache-2.0",
103
103
  "dependencies": {
104
- "@aws-sdk/core": "^3.978.3",
104
+ "@aws-sdk/core": "^3.978.4",
105
105
  "@aws-sdk/types": "^3.974.6",
106
- "@smithy/core": "^3.35.2",
106
+ "@smithy/core": "^3.36.0",
107
107
  "@smithy/fetch-http-handler": "^5.8.0",
108
108
  "@smithy/node-http-handler": "^4.12.1",
109
109
  "@smithy/types": "^4.19.0",
@@ -114,21 +114,21 @@
114
114
  }
115
115
  },
116
116
  "node_modules/@aws-sdk/credential-provider-ini": {
117
- "version": "3.973.19",
118
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.19.tgz",
119
- "integrity": "sha512-kcjvAxqQEV8yuwkX58RelNn3ne65o7JgRWf3Z/gVvbi7Xuw1qSDLJlatrLD76+40cmRxmNkLxBoyp/vAQChQ5g==",
117
+ "version": "3.973.20",
118
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.20.tgz",
119
+ "integrity": "sha512-OSl2R/0zLkoeKEIy6oP2tu/bsSdY+DGgro2eOffMD2CcP8POv7rS14FY5Jzc5bjnqB1G9wv/aM1akHC2mdlhZw==",
120
120
  "license": "Apache-2.0",
121
121
  "dependencies": {
122
- "@aws-sdk/core": "^3.978.3",
123
- "@aws-sdk/credential-provider-env": "^3.972.74",
124
- "@aws-sdk/credential-provider-http": "^3.972.76",
125
- "@aws-sdk/credential-provider-login": "^3.972.81",
126
- "@aws-sdk/credential-provider-process": "^3.972.74",
127
- "@aws-sdk/credential-provider-sso": "^3.973.18",
128
- "@aws-sdk/credential-provider-web-identity": "^3.972.80",
129
- "@aws-sdk/nested-clients": "^3.997.48",
122
+ "@aws-sdk/core": "^3.978.4",
123
+ "@aws-sdk/credential-provider-env": "^3.972.75",
124
+ "@aws-sdk/credential-provider-http": "^3.972.77",
125
+ "@aws-sdk/credential-provider-login": "^3.972.82",
126
+ "@aws-sdk/credential-provider-process": "^3.972.75",
127
+ "@aws-sdk/credential-provider-sso": "^3.973.19",
128
+ "@aws-sdk/credential-provider-web-identity": "^3.972.81",
129
+ "@aws-sdk/nested-clients": "^3.997.49",
130
130
  "@aws-sdk/types": "^3.974.6",
131
- "@smithy/core": "^3.35.2",
131
+ "@smithy/core": "^3.36.0",
132
132
  "@smithy/credential-provider-imds": "^4.5.2",
133
133
  "@smithy/types": "^4.19.0",
134
134
  "tslib": "^2.6.2"
@@ -138,15 +138,15 @@
138
138
  }
139
139
  },
140
140
  "node_modules/@aws-sdk/credential-provider-login": {
141
- "version": "3.972.81",
142
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.81.tgz",
143
- "integrity": "sha512-CeQHSbE2CnVdaHIJ/NayRaCecIER+Pm9faUPkmRATO54rCoMTEPSbVieGHzEwvm1dZM2HIs6qQZCznhayNTWJQ==",
141
+ "version": "3.972.82",
142
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.82.tgz",
143
+ "integrity": "sha512-8jyDPtf1WPxeQ/5xlNpyxAD6P7YKwkYeNk8B2vFEDwkPWDvb7c3tQJG5/jbNWbF2yTMIH9tDTueBkdfovYIAPw==",
144
144
  "license": "Apache-2.0",
145
145
  "dependencies": {
146
- "@aws-sdk/core": "^3.978.3",
147
- "@aws-sdk/nested-clients": "^3.997.48",
146
+ "@aws-sdk/core": "^3.978.4",
147
+ "@aws-sdk/nested-clients": "^3.997.49",
148
148
  "@aws-sdk/types": "^3.974.6",
149
- "@smithy/core": "^3.35.2",
149
+ "@smithy/core": "^3.36.0",
150
150
  "@smithy/types": "^4.19.0",
151
151
  "tslib": "^2.6.2"
152
152
  },
@@ -155,19 +155,19 @@
155
155
  }
156
156
  },
157
157
  "node_modules/@aws-sdk/credential-provider-node": {
158
- "version": "3.972.86",
159
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.86.tgz",
160
- "integrity": "sha512-WNttSyr6e8innPtBSty//CdnqJcgZN6eAbtw3v/CR2IObz6MYZEo8eusdtuCHJ2ujwFqC2bSPHVyhXGHx8HruQ==",
158
+ "version": "3.972.87",
159
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.87.tgz",
160
+ "integrity": "sha512-TKj2C0x4IMPSSOAlmeryX8fCPvvPS2pFJz2ikV9IGqyh6Ehsg4leMalCTVfV2rvMTrlGAe7X7nK0HZ3P0KZR9g==",
161
161
  "license": "Apache-2.0",
162
162
  "dependencies": {
163
- "@aws-sdk/credential-provider-env": "^3.972.74",
164
- "@aws-sdk/credential-provider-http": "^3.972.76",
165
- "@aws-sdk/credential-provider-ini": "^3.973.19",
166
- "@aws-sdk/credential-provider-process": "^3.972.74",
167
- "@aws-sdk/credential-provider-sso": "^3.973.18",
168
- "@aws-sdk/credential-provider-web-identity": "^3.972.80",
163
+ "@aws-sdk/credential-provider-env": "^3.972.75",
164
+ "@aws-sdk/credential-provider-http": "^3.972.77",
165
+ "@aws-sdk/credential-provider-ini": "^3.973.20",
166
+ "@aws-sdk/credential-provider-process": "^3.972.75",
167
+ "@aws-sdk/credential-provider-sso": "^3.973.19",
168
+ "@aws-sdk/credential-provider-web-identity": "^3.972.81",
169
169
  "@aws-sdk/types": "^3.974.6",
170
- "@smithy/core": "^3.35.2",
170
+ "@smithy/core": "^3.36.0",
171
171
  "@smithy/credential-provider-imds": "^4.5.2",
172
172
  "@smithy/types": "^4.19.0",
173
173
  "tslib": "^2.6.2"
@@ -177,14 +177,14 @@
177
177
  }
178
178
  },
179
179
  "node_modules/@aws-sdk/credential-provider-process": {
180
- "version": "3.972.74",
181
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.74.tgz",
182
- "integrity": "sha512-Yj6kZFJQdbR+PygTkqdVLPHHpdDpOS9GCYVcDCuweCRRig9LF24ELQBMfyUw1vspvrZJUfnOGVyMjhaL094ahw==",
180
+ "version": "3.972.75",
181
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.75.tgz",
182
+ "integrity": "sha512-ZNm8T/HJNhpS8MikDVAsym8QyUSUuOUGiCkmI3TTya7G6xhOgfRLd2iK91HhQQyvRM36eo6Xm845hHVyfToA2w==",
183
183
  "license": "Apache-2.0",
184
184
  "dependencies": {
185
- "@aws-sdk/core": "^3.978.3",
185
+ "@aws-sdk/core": "^3.978.4",
186
186
  "@aws-sdk/types": "^3.974.6",
187
- "@smithy/core": "^3.35.2",
187
+ "@smithy/core": "^3.36.0",
188
188
  "@smithy/types": "^4.19.0",
189
189
  "tslib": "^2.6.2"
190
190
  },
@@ -193,16 +193,16 @@
193
193
  }
194
194
  },
195
195
  "node_modules/@aws-sdk/credential-provider-sso": {
196
- "version": "3.973.18",
197
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.973.18.tgz",
198
- "integrity": "sha512-FnpPhdY4qUGtX/8X6eKxh+uD+9Y19i9FYibgk4SBe0M935s9vocHkHzaxaMNk+YkHmvzgdu8cHA5SCoeU+kkew==",
196
+ "version": "3.973.19",
197
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.973.19.tgz",
198
+ "integrity": "sha512-qHGDAGesyWtRw3BapyFkYSUzVNrC1CWPS6+S2lf/MLMEkWB2gR3Bl6imVHy1nhImXKS+gcuUDzbu39BnsHJc1Q==",
199
199
  "license": "Apache-2.0",
200
200
  "dependencies": {
201
- "@aws-sdk/core": "^3.978.3",
202
- "@aws-sdk/nested-clients": "^3.997.48",
203
- "@aws-sdk/token-providers": "3.1150.0",
201
+ "@aws-sdk/core": "^3.978.4",
202
+ "@aws-sdk/nested-clients": "^3.997.49",
203
+ "@aws-sdk/token-providers": "3.1153.0",
204
204
  "@aws-sdk/types": "^3.974.6",
205
- "@smithy/core": "^3.35.2",
205
+ "@smithy/core": "^3.36.0",
206
206
  "@smithy/types": "^4.19.0",
207
207
  "tslib": "^2.6.2"
208
208
  },
@@ -211,15 +211,15 @@
211
211
  }
212
212
  },
213
213
  "node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers": {
214
- "version": "3.1150.0",
215
- "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1150.0.tgz",
216
- "integrity": "sha512-wDU36ofhabZYu+d2KSriyDbwzxNoaOp+4dG0p3qkabk7HeALR5nIWyQbjoyJZLn3iqWkv/xNdyUfbfevDVDzzg==",
214
+ "version": "3.1153.0",
215
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1153.0.tgz",
216
+ "integrity": "sha512-6bKJ2OfLboxhzeJ3hBDeB8L6emCYf9DfdrjBAharLrY42J1RV/6jA6G8jvfNghzID8Yb40BdSY7jQMtWx9Ot0Q==",
217
217
  "license": "Apache-2.0",
218
218
  "dependencies": {
219
- "@aws-sdk/core": "^3.978.3",
220
- "@aws-sdk/nested-clients": "^3.997.48",
219
+ "@aws-sdk/core": "^3.978.4",
220
+ "@aws-sdk/nested-clients": "^3.997.49",
221
221
  "@aws-sdk/types": "^3.974.6",
222
- "@smithy/core": "^3.35.2",
222
+ "@smithy/core": "^3.36.0",
223
223
  "@smithy/types": "^4.19.0",
224
224
  "tslib": "^2.6.2"
225
225
  },
@@ -228,15 +228,15 @@
228
228
  }
229
229
  },
230
230
  "node_modules/@aws-sdk/credential-provider-web-identity": {
231
- "version": "3.972.80",
232
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.80.tgz",
233
- "integrity": "sha512-TJF25Ndwy2HxcVj6oxMgp8qVlJAawlExHYBXqhuC6Zt2m+A7WpdkjBD6QglNbiArlteYljZHEY3R7KKmno6ISA==",
231
+ "version": "3.972.81",
232
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.81.tgz",
233
+ "integrity": "sha512-nHkgkMIC6NHgqfI6UAQq5cCS4bUkNxkT+r9fXCq/X4IKfX/DHGZ8UM3T4b78OXpWK5OlzEzN4kxwyax0W/MUCA==",
234
234
  "license": "Apache-2.0",
235
235
  "dependencies": {
236
- "@aws-sdk/core": "^3.978.3",
237
- "@aws-sdk/nested-clients": "^3.997.48",
236
+ "@aws-sdk/core": "^3.978.4",
237
+ "@aws-sdk/nested-clients": "^3.997.49",
238
238
  "@aws-sdk/types": "^3.974.6",
239
- "@smithy/core": "^3.35.2",
239
+ "@smithy/core": "^3.36.0",
240
240
  "@smithy/types": "^4.19.0",
241
241
  "tslib": "^2.6.2"
242
242
  },
@@ -245,13 +245,13 @@
245
245
  }
246
246
  },
247
247
  "node_modules/@aws-sdk/eventstream-handler-node": {
248
- "version": "3.972.36",
249
- "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.972.36.tgz",
250
- "integrity": "sha512-HFaKXA6ugPVvpR7W/3UT3hylWIPndqGMwduwNVrmGsRT5+OESHN8/ven4eeofraQF5Kxp8A8QgGVrv7iQsTRKQ==",
248
+ "version": "3.972.37",
249
+ "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.972.37.tgz",
250
+ "integrity": "sha512-vU0v4d6anhLqBCpPq7Q7hD2Av3/5qOR5O30Ze8ALLysgB3iMQTPHQ/P2aTgfrY2ZjnVJUCi7NiTSNqa1mDF+5w==",
251
251
  "license": "Apache-2.0",
252
252
  "dependencies": {
253
253
  "@aws-sdk/types": "^3.974.6",
254
- "@smithy/core": "^3.35.2",
254
+ "@smithy/core": "^3.36.0",
255
255
  "@smithy/types": "^4.19.0",
256
256
  "tslib": "^2.6.2"
257
257
  },
@@ -260,13 +260,13 @@
260
260
  }
261
261
  },
262
262
  "node_modules/@aws-sdk/middleware-eventstream": {
263
- "version": "3.972.31",
264
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.972.31.tgz",
265
- "integrity": "sha512-4yvdTVwPGKCnrwuwlYEmwLqQXKwk0unx3f/FvBi4FA9ruK/WGoPJyqfK7hOYurheIyQL44FR0ovgOHqvkfdpAQ==",
263
+ "version": "3.972.32",
264
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.972.32.tgz",
265
+ "integrity": "sha512-D3ayeW/K2lTQI8+SyzDvAKfM3N4SFJjfgqeHbS3DOZmmQebZyve6WUyJiqOKqeOxmIcFxTzpSdsijnRF035J3g==",
266
266
  "license": "Apache-2.0",
267
267
  "dependencies": {
268
268
  "@aws-sdk/types": "^3.974.6",
269
- "@smithy/core": "^3.35.2",
269
+ "@smithy/core": "^3.36.0",
270
270
  "@smithy/types": "^4.19.0",
271
271
  "tslib": "^2.6.2"
272
272
  },
@@ -275,14 +275,14 @@
275
275
  }
276
276
  },
277
277
  "node_modules/@aws-sdk/middleware-websocket": {
278
- "version": "3.972.56",
279
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-websocket/-/middleware-websocket-3.972.56.tgz",
280
- "integrity": "sha512-32d9EnnNM5UMwjVp/qnL0K4XYiZv+YlSbULI3BaoBdJvebAS6cD0bKfPJ7lzovN0qrelvmSh5jo/3tk0KoTuGQ==",
278
+ "version": "3.972.57",
279
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-websocket/-/middleware-websocket-3.972.57.tgz",
280
+ "integrity": "sha512-mPNUOedufUwZXISOEySSP7l7owyY0Ypp1ajsd1GsB4E5Vpaf8NtfmmNygyPPeGPsRZ1sOcS90aAhQ03yPy/pFg==",
281
281
  "license": "Apache-2.0",
282
282
  "dependencies": {
283
- "@aws-sdk/core": "^3.978.3",
283
+ "@aws-sdk/core": "^3.978.4",
284
284
  "@aws-sdk/types": "^3.974.6",
285
- "@smithy/core": "^3.35.2",
285
+ "@smithy/core": "^3.36.0",
286
286
  "@smithy/fetch-http-handler": "^5.8.0",
287
287
  "@smithy/signature-v4": "^5.7.4",
288
288
  "@smithy/types": "^4.19.0",
@@ -293,15 +293,15 @@
293
293
  }
294
294
  },
295
295
  "node_modules/@aws-sdk/nested-clients": {
296
- "version": "3.997.48",
297
- "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.48.tgz",
298
- "integrity": "sha512-B01jdXJtAW/XOiUzGdI2mz67WyEHbGEc9X6Euzw3bjLAa+txTqdZDER4X2FsIEcXzV2ABqudVZ5thali8tCCzQ==",
296
+ "version": "3.997.49",
297
+ "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.49.tgz",
298
+ "integrity": "sha512-zjqIqzTYLRKhT7TPJDUreK9vG9PjhmnfLCaTaqArkRT7j+Ogl0tuXB7MpSd8rlRfRT+xTOeyNFWaOfyNcf51hg==",
299
299
  "license": "Apache-2.0",
300
300
  "dependencies": {
301
- "@aws-sdk/core": "^3.978.3",
301
+ "@aws-sdk/core": "^3.978.4",
302
302
  "@aws-sdk/signature-v4-multi-region": "^3.996.48",
303
303
  "@aws-sdk/types": "^3.974.6",
304
- "@smithy/core": "^3.35.2",
304
+ "@smithy/core": "^3.36.0",
305
305
  "@smithy/fetch-http-handler": "^5.8.0",
306
306
  "@smithy/node-http-handler": "^4.12.1",
307
307
  "@smithy/types": "^4.19.0",
@@ -5452,7 +5452,7 @@
5452
5452
  },
5453
5453
  "": {
5454
5454
  "name": "@letta-ai/letta-code",
5455
- "version": "0.34.17",
5455
+ "version": "0.34.18",
5456
5456
  "dependencies": {
5457
5457
  "@earendil-works/pi-ai": "^0.99.1",
5458
5458
  "@janhapke/sharp-electron": "0.35.3-electron.1",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letta-ai/letta-code",
3
- "version": "0.34.17",
3
+ "version": "0.34.18",
4
4
  "lettaStartupLogProtocol": 1,
5
5
  "description": "Letta Code is a CLI tool for interacting with stateful Letta agents from the terminal.",
6
6
  "type": "module",
@@ -275,5 +275,5 @@
275
275
  },
276
276
  "lettaLifecycleProtocol": 1,
277
277
  "lettaRuntimeGraphProtocol": 1,
278
- "lettaRuntimeGraphSha512": "sha512-NGzNq0UmSHPiPqvc6bflUL57U2h5xZSgf9HvpbR98ocuoM1dHLN1hiXv6qNEa3lOlj2paYI/clNKR+U1YW0TiA=="
278
+ "lettaRuntimeGraphSha512": "sha512-cubBaizY8rbgiq9dfHU/uRyZBgkGvLfJc+8+ovpV1raZnQjE+tRsAKFAKP69UHWhNFRE49viVTyqmLIiSK8v8Q=="
279
279
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "src/agent/client-skills.test.ts": 1134,
2
+ "src/agent/client-skills.test.ts": 1132,
3
3
  "src/agent/memory-git.ts": 2013,
4
4
  "src/backend/local-backend.test.ts": 2472,
5
5
  "src/backend/local/local-store.ts": 3261,
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: maintaining-core-memory
3
+ description: Maintains an agent's core memory, the editable part of its system prompt. Use to modify the agent's core behavior, embed critical knowledge (needed on every turn), or instruct the agent on how to use deferred memory.
4
+ ---
5
+
6
+ Core memory is the agent's prompt, refined over its lifetime. Treat each change as a revision of that prompt, not an append to a log: the usual edit sharpens, merges, or replaces an existing principle, and a new one earns its place only when no existing one can absorb it.
7
+
8
+ ## Prompt format
9
+
10
+ The agent's system prompt is compiled from the Markdown files at the root of `$MEMORY_DIR`. Each root file except `MEMORY.md` becomes a block named after the file, in alphabetical order by filename, followed by the root `MEMORY.md`:
11
+
12
+ ```
13
+ {{base system prompt}}
14
+
15
+ <human>
16
+ <description>{{description from human.md frontmatter}}</description>
17
+ {{body of human.md}}
18
+ </human>
19
+
20
+ <persona>
21
+ <description>{{description from persona.md frontmatter}}</description>
22
+ {{body of persona.md}}
23
+ </persona>
24
+
25
+ <memory>
26
+ {{body of root MEMORY.md}}
27
+ <deferred-memory>
28
+ <directory path="{{dir}}/" index="{{dir}}/MEMORY.md" />
29
+ </deferred-memory>
30
+ </memory>
31
+ ```
32
+
33
+ Every root file except `MEMORY.md` starts with frontmatter containing exactly two fields:
34
+
35
+ ```markdown
36
+ ---
37
+ name: human
38
+ description: Who the user is and how they want to work together.
39
+ ---
40
+ ```
41
+
42
+ - The file name becomes the block name, so `human.md` renders as `<human>`. Choose short, stable names.
43
+ - The `description` is rendered into the prompt. Write it for the agent: one line saying what the block holds.
44
+ - Root `MEMORY.md` has no frontmatter. Its body is the only part of `<memory>` you write.
45
+ - The `<deferred-memory>` list is generated: one entry per top-level directory that has its own `MEMORY.md`, showing only the path. `skills/` is never listed; skills appear separately.
46
+ - Edits take effect only after they are committed, and only in later system prompts. The current conversation keeps the prompt it started with.
47
+
48
+ Read `$MEMORY_DIR/.memfs.config.json` if it exists. The memory repository's pre-commit hook enforces it:
49
+
50
+ - `maxCoreMemoryCharacters` caps the total size of all root Markdown (default 65,536 characters).
51
+ - `maxFileCharacters` caps each memory file, frontmatter included (default 20,000 characters). `fileCharacterLimits` overrides it per glob; the first match wins and `null` removes the cap.
52
+ - `readOnlyFiles` lists globs whose files cannot change. Do not edit them.
53
+
54
+ When the config file is absent, the defaults apply. Treat the limits as a ceiling, not a target: stay well below them. When an edit does not fit, move detail into deferred memory instead of raising a limit; change the config only when the user asks.
55
+
56
+ ## Writing prompts
57
+
58
+ Core memory is the agent's working model: who it is, how the user thinks and what they value, and the principles that follow. It is not a list of rules.
59
+
60
+ - Treat a correction or preference as evidence about that model. Find the principle it belongs to and sharpen or rewrite that principle. Add a new one only when the evidence shows something the model was missing.
61
+ - When several rules share a cause, replace them with the one principle that explains them all, and delete the lines it absorbs in the same edit. Adding the principle while keeping the old rules is a log with a summary on top. A healthy file becomes more general over time; a growing count of narrow rules is a sign of failure.
62
+ - State the principle with the reason that makes it generalize: "Verify claims against the running system, because Sarah trusts evidence over plausibility", not three separate rules about tests, logs, and deployments.
63
+ - Write to the agent in the second person or imperative mood: "Lead with the answer", not "The user likes answers first". Say what to do rather than only what to avoid.
64
+ - Leave out provenance: no names, dates, quotes, or stories about the incident. Message history already holds the events, and the commit message records why the line changed. When you edit a section that already contains provenance-laden rules, rewrite them as principles; nothing is lost, because git keeps the old text.
65
+ - Update only from a pattern or an explicit instruction, not a single ambiguous event.
66
+ - Check that a change does not contradict an existing line; resolve the conflict instead of adding both.
67
+ - Write in plain language without all-caps or absolute emphasis. Overstated instructions get overapplied.
68
+ - Leave out content the agent can cheaply rederive: file contents, command lists, current status, and recent activity.
69
+ - Never store secrets. Reference them by name, such as `$SECRET_NAME`.
70
+
71
+ ## Teach with examples, not more rules
72
+
73
+ A correction that reveals a gap in a principle calls for sharpening its wording. A correction the principle already covers, such as the user pointing out the same kind of mistake again, means the principle is too abstract to apply: attach a contrastive example to it instead of rewording it again or adding another rule.
74
+
75
+ ```markdown
76
+ - Lead with the answer, because the user reads the first line and skims the rest.
77
+ - Not: "I looked at the config, then the logs, and it turns out the timeout is too low." Instead: "The timeout is too low: 5s, and the slow query takes 8s."
78
+ ```
79
+
80
+ - Keep at most one or two examples per principle, and make them differ from each other. A new correction replaces the weaker example rather than adding another.
81
+ - Write the example as a generic instance of the behavior, not a record of the incident: no dates, names, or quotes.
82
+ - Keep the bad half short and labeled, and end on the good half. The agent imitates the details of examples, including the ones it should avoid.
83
+ - When a principle or example starts producing the wrong behavior, revise or remove it. A memory edit is a hypothesis about the agent's behavior; later conversations test it.
84
+
85
+ ## Design root MEMORY.md so deferred memory gets used
86
+
87
+ The agent consults deferred memory only when something in its prompt tells it to. The generated `<deferred-memory>` list gives directory paths and nothing else, so root `MEMORY.md` decides whether everything outside core memory is ever read. A directory with no useful entry here is effectively lost.
88
+
89
+ - Give each directory a one-line entry saying when to open it, in the words a future request would use: "deployments, rollbacks, on-call runbooks", not "ops notes".
90
+ - Name a specific deeper file when its topic would not be guessable from the directory entry.
91
+ - Say what kinds of questions should send the agent to memory before it answers from assumption, such as an unfamiliar person, project, or system named in the conversation.
92
+ - Do not re-index root files or skills; both are already in the prompt.
93
+ - After adding a directory or file, check that a natural future request would reach it by reading only root `MEMORY.md` and the indexes beneath it.
94
+
95
+ ## Shrink before you grow
96
+
97
+ When a root file is long or the total is near its limit:
98
+
99
+ 1. Delete stale, duplicated, or rederivable content.
100
+ 2. Move subject detail into deferred memory and leave a one-line pointer in root `MEMORY.md`.
101
+ 3. Move procedures into skills.
@@ -0,0 +1,84 @@
1
+ ---
2
+ name: maintaining-deferred-memory
3
+ description: Maintains deferred memory, which stores accumulated knowledge, analysis, and observations made by the agent over time. Use when saving knowledge (e.g. about a person, project, repository, system, or event). Do NOT use for managing skills, prompts, or for saving information that is already automatically stored in the message history.
4
+ ---
5
+
6
+ Deferred memory contains the agent's knowledge. Use deferred memory for understanding of a subject that matters only when that subject comes up. If the agent needs it on most turns, it is core memory: use the `maintaining-core-memory` skill. If it is a procedure with a trigger, use the `creating-skills` skill.
7
+
8
+ Deferred memory should NOT be used to store:
9
+ - Information that can be accessed by querying the message history (recall memory). For example, logs of specific interactions can simply be looked up in past messages. Reserve deferred memory to store knowledge that is actually *derived* from experience, or to organize knowledge in a way that optimizes recalling the right information at the right time through progressive disclosure.
10
+ - Justifications or reasons for updating memory. These belong in the git commit history of MemFS.
11
+
12
+ ## Check the limits first
13
+
14
+ Read `$MEMORY_DIR/.memfs.config.json` if it exists. The memory repository's pre-commit hook enforces it:
15
+
16
+ - `maxDepth` limits how many directories can sit between the memory root and a file (default 2). `persona.md` is depth 0, `projects/MEMORY.md` is depth 1, and `projects/acme/notes.md` is depth 2. `skills/` is exempt.
17
+ - `maxFileCharacters` caps each memory file, frontmatter included (default 20,000 characters). `fileCharacterLimits` overrides it per glob; the first match wins and `null` removes the cap.
18
+ - `readOnlyFiles` lists globs whose files cannot change. Do not edit them.
19
+
20
+ When the config file is absent, the defaults apply. When content does not fit, split it into more files or flatten the structure; change the config only when the user asks.
21
+
22
+ ## Layout
23
+
24
+ ```text
25
+ $MEMORY_DIR/
26
+ ├── MEMORY.md # root index (core memory)
27
+ └── projects/
28
+ ├── MEMORY.md # index for projects/
29
+ ├── acme.md
30
+ └── acme/
31
+ ├── MEMORY.md # index for projects/acme/
32
+ └── incidents.md
33
+ ```
34
+ - The top-level `MEMORY.md` is always in context, so it must tell the agent what each subdirectory contains and when to open it. Without that entry the directory is never read.
35
+ - `skills/` is reserved for skills and is never deferred memory.
36
+ - A directory is memory only when it has its own `MEMORY.md`. The agent will not discover a directory without one, and neither will the files in it.
37
+ - Every `MEMORY.md` has no frontmatter.
38
+ - Every other Markdown file starts with frontmatter containing exactly two fields:
39
+
40
+ ```markdown
41
+ ---
42
+ name: acme
43
+ description: How the Acme integration works, why it fails, and what to do about it.
44
+ ---
45
+ ```
46
+
47
+ - `description` says what the file is about. The agent sees it when it lists the directory, so make it specific enough to decide whether to open the file.
48
+ - Name files and directories after their subject, not after a date or session. Group related subjects under one directory instead of creating many top-level directories.
49
+
50
+ ## Write the indexes
51
+
52
+ Discovery runs through the `MEMORY.md` chain, one level at a time:
53
+
54
+ - The system prompt lists each top-level memory directory only by path. Add a line to root `MEMORY.md` saying when to open the directory, in the words a future request would use. When a deeper file's topic would not be guessable from that line, name the file there too.
55
+ - When the agent opens a directory, it sees that directory's `MEMORY.md`, then each file's `description` and each subdirectory's index summary (the first prose paragraph of its `MEMORY.md`). Start every `MEMORY.md` with that summary paragraph.
56
+ - A directory listing shows at most 10 entries, most recently edited first, so stable files fall out of it. Link every file that matters from its `MEMORY.md` rather than relying on the listing.
57
+ - Use relative Markdown links from the memory root, such as `[Acme](projects/acme.md)`.
58
+
59
+ After adding or moving a file, trace the path a future request would take from root `MEMORY.md` to the file. If any step depends on knowing the file already exists, fix the index.
60
+
61
+ ## Design for progressive disclosure
62
+
63
+ Each level should give the agent enough to decide whether to go deeper, and nothing it would have to read past to decide.
64
+
65
+ - Put frequently needed material shallow and rarely needed detail deeper. Keep related material in one directory so it loads together.
66
+ - A small topic, where most of the content is useful whenever the subject comes up, belongs entirely in its directory's `MEMORY.md`. Splitting it adds reads without saving context.
67
+ - For a large topic, `MEMORY.md` holds only what the agent needs every time it opens the directory, plus a map: what each deeper file or subdirectory covers and when it is worth opening. The map should also tell the agent when it can stop.
68
+ - A `description` states what the file is about, not when to use it; when-to-open belongs in the parent's link. If you can write a "use when the user wants to…" trigger, the content is a procedure and belongs in a skill.
69
+ - Make each statement stand alone. Name the subject instead of writing "it" or "the repo", because the agent may read only part of a file.
70
+ - Aim for fewer than 10 entries per directory so the listing stays complete. At the `maxDepth` limit, use clearly scoped sibling files linked from `MEMORY.md` rather than nesting further.
71
+
72
+ ## Write analysis, not logs
73
+
74
+ Recall already returns what happened. A deferred memory file is worth keeping only when it holds what recall cannot: the agent's own synthesis of a subject, built across many events and refined as understanding improves.
75
+
76
+ - Before writing, ask whether searching message history would give a future agent the same thing. If it would, do not write the file.
77
+ - Write the current understanding: how the subject works, the patterns across events, why things failed or succeeded, what to do about it, and the open questions.
78
+ - Revise the file in place when new evidence arrives. Fold the new event into the analysis; never append a dated entry, a quote, or an incident narrative.
79
+ - When the file you are updating is already a log, convert it: write the analysis the entries support and delete the entries. Keeping them under an "incident history" heading leaves the log in place; git and recall already hold it.
80
+ - When a raw event matters, point to it with terms that will find it in recall rather than copying it.
81
+ - Keep one home per subject. Update the existing file instead of adding a near-duplicate, and replace stale conclusions where they live.
82
+ - Leave out content the agent can cheaply rederive from the source of truth: file contents, command lists, and current status. Link to the owning source instead.
83
+ - Never store secrets. Reference them by name, such as `$SECRET_NAME`.
84
+
@@ -80,7 +80,9 @@ Cloud decisions service.
80
80
  `phase` (progress group — use this inside concurrent stages), `schema`,
81
81
  `json`, `model`, `effort` (`'low'` for mechanical stages, higher for the
82
82
  hardest verify/judge stages), `allowedTools`, `systemPrompt` (extra system
83
- prompt for this subagent), `timeoutMs` (default 10 minutes), `maxToolCalls`
83
+ prompt for this subagent), `skills` (skill names whose full content is
84
+ loaded into the subagent's prompt; workers otherwise have no skills),
85
+ `timeoutMs` (default 10 minutes), `maxToolCalls`
84
86
  (positive safe integer; default 1000 unique tool calls for this subagent),
85
87
  `conversationId` (resume a worker — see "Diagnosing a run").
86
88
  - `pipeline(items, stage1, stage2, ...)` → run each item through all stages