@letta-ai/letta-code 0.34.16 → 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 (68) hide show
  1. package/README.md +14 -5
  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 +30 -28
  7. package/dist/mcp-oauth.js.map +4 -4
  8. package/dist/types/agent/client-skills.d.ts.map +1 -1
  9. package/dist/types/agent/message.d.ts.map +1 -1
  10. package/dist/types/agent/model-handles.d.ts.map +1 -1
  11. package/dist/types/agent/preloaded-skills.d.ts +4 -0
  12. package/dist/types/agent/preloaded-skills.d.ts.map +1 -0
  13. package/dist/types/agent/skills.d.ts.map +1 -1
  14. package/dist/types/agent/subagents/child-send-tracking.d.ts.map +1 -1
  15. package/dist/types/agent/subagents/index.d.ts.map +1 -1
  16. package/dist/types/agent/subagents/manager.d.ts.map +1 -1
  17. package/dist/types/agent/subagents/remote-turn-wait.d.ts.map +1 -1
  18. package/dist/types/agent/subagents/subagent-stream.d.ts.map +1 -1
  19. package/dist/types/agent/turn-recovery-policy.d.ts +1 -1
  20. package/dist/types/agent/turn-recovery-policy.d.ts.map +1 -1
  21. package/dist/types/auth/oauth.d.ts +8 -1
  22. package/dist/types/auth/oauth.d.ts.map +1 -1
  23. package/dist/types/backend/api/conversation-enqueue.d.ts +4 -1
  24. package/dist/types/backend/api/conversation-enqueue.d.ts.map +1 -1
  25. package/dist/types/backend/dev/fake-headless-backend.d.ts +9 -2
  26. package/dist/types/backend/dev/fake-headless-backend.d.ts.map +1 -1
  27. package/dist/types/backend/local/compaction.d.ts +5 -0
  28. package/dist/types/backend/local/compaction.d.ts.map +1 -1
  29. package/dist/types/backend/local/local-backend.d.ts.map +1 -1
  30. package/dist/types/headless-listener-launch.d.ts +5 -3
  31. package/dist/types/headless-listener-launch.d.ts.map +1 -1
  32. package/dist/types/headless-super-run-wait.d.ts +1 -1
  33. package/dist/types/headless-super-run-wait.d.ts.map +1 -1
  34. package/dist/types/mcp-oauth-callback.d.ts +5 -1
  35. package/dist/types/mcp-oauth-callback.d.ts.map +1 -1
  36. package/dist/types/mcp-oauth.d.ts.map +1 -1
  37. package/dist/types/tools/impl/code-mode.d.ts +23 -0
  38. package/dist/types/tools/impl/code-mode.d.ts.map +1 -0
  39. package/dist/types/tools/impl/process_manager.d.ts +1 -0
  40. package/dist/types/tools/impl/process_manager.d.ts.map +1 -1
  41. package/dist/types/tools/impl/remote-external-coding-agent.d.ts +1 -0
  42. package/dist/types/tools/impl/remote-external-coding-agent.d.ts.map +1 -1
  43. package/dist/types/tools/impl/task-stop.d.ts.map +1 -1
  44. package/dist/types/tools/impl/workflow.d.ts +5 -0
  45. package/dist/types/tools/impl/workflow.d.ts.map +1 -1
  46. package/dist/types/tools/manager.d.ts.map +1 -1
  47. package/dist/types/tools/script-tool-scope.d.ts +19 -0
  48. package/dist/types/tools/script-tool-scope.d.ts.map +1 -0
  49. package/dist/types/tools/tool-definitions.d.ts +1 -0
  50. package/dist/types/tools/tool-definitions.d.ts.map +1 -1
  51. package/dist/types/tools/toolset-catalog.d.ts +1 -1
  52. package/dist/types/tools/toolset-catalog.d.ts.map +1 -1
  53. package/dist/types/tools/workflow/sdk-spawner.d.ts.map +1 -1
  54. package/dist/types/tools/workflow/types.d.ts +2 -0
  55. package/dist/types/tools/workflow/types.d.ts.map +1 -1
  56. package/dist/types/tools/workflow/workflow-engine.d.ts +2 -0
  57. package/dist/types/tools/workflow/workflow-engine.d.ts.map +1 -1
  58. package/letta.js +13825 -13502
  59. package/npm-shrinkwrap.json +86 -86
  60. package/package.json +2 -2
  61. package/scripts/source-file-size-baseline.json +3 -3
  62. package/skills/creating-skills/SKILL.md +14 -13
  63. package/skills/maintaining-core-memory/SKILL.md +101 -0
  64. package/skills/maintaining-deferred-memory/SKILL.md +84 -0
  65. package/skills/music-generation/LICENSE +21 -0
  66. package/skills/music-generation/SKILL.md +164 -0
  67. package/skills/speech-generation/SKILL.md +15 -36
  68. 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.16",
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.16",
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.16",
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,
@@ -19,7 +19,7 @@
19
19
  "src/cli/mods/local-mod-loader.test.ts": 1043,
20
20
  "src/cli/reflection-transcript.test.ts": 1084,
21
21
  "src/cli/subcommands/skills.ts": 1264,
22
- "src/headless.ts": 4778,
22
+ "src/headless.ts": 4771,
23
23
  "src/hooks/integration.test.ts": 1147,
24
24
  "src/index.ts": 2575,
25
25
  "src/mods/learning-harness.ts": 2434,
@@ -33,7 +33,7 @@
33
33
  "src/providers/chatgpt-usage-service.ts": 1112,
34
34
  "src/settings-manager.test.ts": 1635,
35
35
  "src/settings-manager.ts": 2092,
36
- "src/tools/manager.ts": 2609,
36
+ "src/tools/manager.ts": 2606,
37
37
  "src/tools/tool-execution-context.test.ts": 1092,
38
38
  "src/types/protocol_v2.ts": 2532,
39
39
  "src/websocket/listener/message-router.ts": 1005,
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: creating-skills
3
- description: Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Letta Code's capabilities with specialized knowledge, workflows, or tool integrations.
3
+ description: Guide for creating effective skills. Use when creating a new skill or updating an existing one that extends Letta Code's capabilities with specialized knowledge, workflows, or tool integrations, whether a user asks for it or a reusable workflow is worth capturing.
4
4
  ---
5
5
 
6
6
  # Creating Skills
@@ -206,7 +206,7 @@ Skill creation involves these steps:
206
206
  2. Plan reusable skill contents (scripts, references, assets)
207
207
  3. Initialize the skill (run init-skill.ts)
208
208
  4. Edit the skill (implement resources and write SKILL.md)
209
- 5. Package the skill (run package-skill.ts)
209
+ 5. Package the skill if it will be distributed (run package-skill.ts)
210
210
  6. Iterate based on real usage
211
211
 
212
212
  Follow these steps in order, skipping only if there is a clear reason why they are not applicable.
@@ -215,16 +215,15 @@ Follow these steps in order, skipping only if there is a clear reason why they a
215
215
 
216
216
  Skip this step only when the skill's usage patterns are already clearly understood. It remains valuable even when working with an existing skill.
217
217
 
218
- To create an effective skill, clearly understand concrete examples of how the skill will be used. This understanding can come from either direct user examples or generated examples that are validated with user feedback.
218
+ To create an effective skill, clearly understand concrete examples of how the skill will be used. Draw them from the material at hand first: the conversation or transcripts that motivated the skill, the commands and tool calls that worked, and the requests that would trigger it.
219
219
 
220
- For example, when building an `editing-images` skill, relevant questions include:
220
+ For example, when building an `editing-images` skill, establish:
221
221
 
222
- - "What functionality should the editing-images skill support? Editing, rotating, anything else?"
223
- - "Can you give some examples of how this skill would be used?"
224
- - "I can imagine users asking for things like 'Remove the red-eye from this image' or 'Rotate this image'. Are there other ways you imagine this skill being used?"
225
- - "What would a user say that should trigger this skill?"
222
+ - What functionality the skill should support: editing, rotating, anything else?
223
+ - What concrete requests it should handle, such as "Remove the red-eye from this image" or "Rotate this image"
224
+ - What a user would say that should trigger the skill
226
225
 
227
- To avoid overwhelming users, avoid asking too many questions in a single message. Start with the most important questions and follow up as needed for better effectiveness.
226
+ If you are working with a user and these remain unclear, ask the most important questions first rather than many at once. If no one is available to ask, such as in a background or automated run, do not wait for answers: scope the skill to what the source material demonstrates and leave out functionality it does not support.
228
227
 
229
228
  Conclude this step when there is a clear sense of the functionality the skill should support.
230
229
 
@@ -265,7 +264,7 @@ Usage:
265
264
  ```bash
266
265
  npx tsx <SKILL_DIR>/scripts/init-skill.ts <skill-name> --path <output-directory>
267
266
  ```
268
- Where `<SKILL_DIR>` is the Skill Directory shown when the skill was loaded (visible in the injection header).
267
+ Where `<SKILL_DIR>` is the Skill Directory shown when the skill was loaded (visible in the injection header). If no Skill Directory is shown, create the skill directory and `SKILL.md` directly instead.
269
268
 
270
269
  The script:
271
270
 
@@ -291,7 +290,7 @@ These files contain established best practices for effective skill design.
291
290
 
292
291
  #### Start with Reusable Skill Contents
293
292
 
294
- To begin implementation, start with the reusable resources identified above: `scripts/`, `references/`, and `assets/` files. Note that this step may require user input. For example, when implementing a `brand-guidelines` skill, the user may need to provide brand assets or templates to store in `assets/`, or documentation to store in `references/`.
293
+ To begin implementation, start with the reusable resources identified above: `scripts/`, `references/`, and `assets/` files. Some resources come from outside the source material. For example, a `brand-guidelines` skill may need brand assets or templates in `assets/`, or documentation in `references/`. Ask the user for them if you are working with one; otherwise include only what is available and leave out resources you cannot supply.
295
294
 
296
295
  Added scripts must be tested by actually running them to ensure there are no bugs and that the output matches what is expected. If there are many similar scripts, only a representative sample needs to be tested to ensure confidence that they all work while balancing time to completion.
297
296
 
@@ -333,7 +332,9 @@ Write instructions for using the skill and its bundled resources.
333
332
 
334
333
  ### Step 5: Packaging a Skill
335
334
 
336
- Once development of the skill is complete, it must be packaged into a distributable .skill file that gets shared with the user. The packaging process automatically validates the skill first to ensure it meets all requirements:
335
+ Package the skill only when it needs to be distributed as a file, for example when sharing it with a user. Skills maintained in place, such as those under an agent's memory `skills/` directory, are used directly and need no packaging.
336
+
337
+ To package a skill into a distributable .skill file, run the packaging script. The packaging process automatically validates the skill first to ensure it meets all requirements:
337
338
 
338
339
  ```bash
339
340
  npx tsx <SKILL_DIR>/scripts/package-skill.ts <path/to/skill-folder>
@@ -360,7 +361,7 @@ If validation fails, the script will report the errors and exit without creating
360
361
 
361
362
  ### Step 6: Iterate
362
363
 
363
- After testing the skill, users may request improvements. Often this happens right after using the skill, with fresh context of how the skill performed.
364
+ Improve a skill when real usage shows it falling short, whether through user feedback or sessions where the skill was used. Usage with fresh context of how the skill performed is the best evidence.
364
365
 
365
366
  **Iteration workflow:**
366
367
 
@@ -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.