@letta-ai/letta-code 0.34.17 → 0.34.19

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 (80) 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/gateway-core.js +2 -2
  5. package/dist/gateway-core.js.map +3 -3
  6. package/dist/mcp-client.js +2 -2
  7. package/dist/mcp-client.js.map +1 -1
  8. package/dist/mcp-oauth.js +2 -2
  9. package/dist/mcp-oauth.js.map +1 -1
  10. package/dist/types/agent/approval-execution.d.ts +33 -1
  11. package/dist/types/agent/approval-execution.d.ts.map +1 -1
  12. package/dist/types/agent/client-skills.d.ts.map +1 -1
  13. package/dist/types/agent/parent-memory-note.d.ts +3 -0
  14. package/dist/types/agent/parent-memory-note.d.ts.map +1 -0
  15. package/dist/types/agent/preloaded-skills.d.ts +4 -0
  16. package/dist/types/agent/preloaded-skills.d.ts.map +1 -0
  17. package/dist/types/agent/skills.d.ts.map +1 -1
  18. package/dist/types/agent/subagent-state.d.ts +53 -2
  19. package/dist/types/agent/subagent-state.d.ts.map +1 -1
  20. package/dist/types/agent/subagents/child-send-tracking.d.ts.map +1 -1
  21. package/dist/types/agent/subagents/index.d.ts.map +1 -1
  22. package/dist/types/agent/subagents/remote-turn-wait.d.ts.map +1 -1
  23. package/dist/types/agent/subagents/subagent-stream.d.ts.map +1 -1
  24. package/dist/types/auth/oauth.d.ts +8 -1
  25. package/dist/types/auth/oauth.d.ts.map +1 -1
  26. package/dist/types/backend/api/conversation-enqueue.d.ts +4 -1
  27. package/dist/types/backend/api/conversation-enqueue.d.ts.map +1 -1
  28. package/dist/types/channels/message-channel-executor.d.ts.map +1 -1
  29. package/dist/types/cli/helpers/agent-info.d.ts +1 -0
  30. package/dist/types/cli/helpers/agent-info.d.ts.map +1 -1
  31. package/dist/types/cli/subcommands/mcp.d.ts +3 -1
  32. package/dist/types/cli/subcommands/mcp.d.ts.map +1 -1
  33. package/dist/types/headless-listener-launch.d.ts +5 -3
  34. package/dist/types/headless-listener-launch.d.ts.map +1 -1
  35. package/dist/types/headless-super-run-wait.d.ts +1 -1
  36. package/dist/types/headless-super-run-wait.d.ts.map +1 -1
  37. package/dist/types/reminders/engine.d.ts.map +1 -1
  38. package/dist/types/telemetry/channel.d.ts.map +1 -1
  39. package/dist/types/tools/external-tool-background-eligibility.d.ts +2 -1
  40. package/dist/types/tools/external-tool-background-eligibility.d.ts.map +1 -1
  41. package/dist/types/tools/external-tool-background.d.ts +14 -1
  42. package/dist/types/tools/external-tool-background.d.ts.map +1 -1
  43. package/dist/types/tools/external-tool-types.d.ts +1 -0
  44. package/dist/types/tools/external-tool-types.d.ts.map +1 -1
  45. package/dist/types/tools/impl/external-coding-agent.d.ts.map +1 -1
  46. package/dist/types/tools/impl/monitor.d.ts +2 -0
  47. package/dist/types/tools/impl/monitor.d.ts.map +1 -1
  48. package/dist/types/tools/impl/remote-external-coding-agent.d.ts +1 -0
  49. package/dist/types/tools/impl/remote-external-coding-agent.d.ts.map +1 -1
  50. package/dist/types/tools/impl/task-abort-hook.d.ts +2 -0
  51. package/dist/types/tools/impl/task-abort-hook.d.ts.map +1 -0
  52. package/dist/types/tools/impl/task-stop.d.ts.map +1 -1
  53. package/dist/types/tools/impl/task.d.ts.map +1 -1
  54. package/dist/types/tools/impl/watch-pr.d.ts +1 -1
  55. package/dist/types/tools/impl/watch-pr.d.ts.map +1 -1
  56. package/dist/types/tools/impl/workflow.d.ts +7 -0
  57. package/dist/types/tools/impl/workflow.d.ts.map +1 -1
  58. package/dist/types/tools/manager.d.ts +1 -1
  59. package/dist/types/tools/manager.d.ts.map +1 -1
  60. package/dist/types/tools/script-tool-scope.d.ts.map +1 -1
  61. package/dist/types/tools/workflow/sdk-spawner.d.ts.map +1 -1
  62. package/dist/types/tools/workflow/types.d.ts +2 -0
  63. package/dist/types/tools/workflow/types.d.ts.map +1 -1
  64. package/dist/types/utils/subagent-scope.d.ts +13 -0
  65. package/dist/types/utils/subagent-scope.d.ts.map +1 -0
  66. package/dist/types/utils/task-notifications.d.ts +43 -0
  67. package/dist/types/utils/task-notifications.d.ts.map +1 -1
  68. package/letta.js +1182 -692
  69. package/npm-shrinkwrap.json +98 -98
  70. package/package.json +2 -2
  71. package/scripts/claude-watch/docs-snapshot.test.ts +65 -0
  72. package/scripts/claude-watch/docs-snapshot.ts +10 -4
  73. package/scripts/isolated-unit-tests.json +5 -0
  74. package/scripts/source-file-size-baseline.json +9 -9
  75. package/skills/finding-agents/SKILL.md +0 -4
  76. package/skills/maintaining-core-memory/SKILL.md +101 -0
  77. package/skills/maintaining-deferred-memory/SKILL.md +84 -0
  78. package/skills/workflow-authoring/SKILL.md +3 -1
  79. package/skills/curating-memory-palace/SKILL.md +0 -147
  80. package/skills/migrating-memory/SKILL.md +0 -98
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letta-ai/letta-code",
3
- "version": "0.34.17",
3
+ "version": "0.34.19",
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",
@@ -2058,15 +2058,15 @@
2058
2058
  }
2059
2059
  },
2060
2060
  "node_modules/@shikijs/vscode-textmate": {
2061
- "version": "10.0.2",
2062
- "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz",
2063
- "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==",
2061
+ "version": "10.1.0",
2062
+ "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.1.0.tgz",
2063
+ "integrity": "sha512-cVBuhDQjBZaNMTwBquYfPydrUP+E3hE6oYGasx8h6ZrODIM7/r+gxLDXdd66oszbrggZHEntdE6j+5gYIVyMWQ==",
2064
2064
  "license": "MIT"
2065
2065
  },
2066
2066
  "node_modules/@smithy/core": {
2067
- "version": "3.36.0",
2068
- "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.36.0.tgz",
2069
- "integrity": "sha512-3hJiwG1F5t1SoXqp/yOCmYXziyx7ZVqF63S5W6YU201e/qwVaHPex+E/3vvyY9a3ORq/b+BydeNZpP2saQ9X2g==",
2067
+ "version": "3.36.1",
2068
+ "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.36.1.tgz",
2069
+ "integrity": "sha512-WC5W1Jrsfxu1y6LeqXMie7N14qmcdafij/Haye4feVlyMMXLGpYxBeOX6Ee1iRJbDzGG5LVman8U1rrt9MYFHA==",
2070
2070
  "license": "Apache-2.0",
2071
2071
  "dependencies": {
2072
2072
  "@smithy/types": "^4.19.0",
@@ -3197,9 +3197,9 @@
3197
3197
  "license": "Unlicense"
3198
3198
  },
3199
3199
  "node_modules/fast-uri": {
3200
- "version": "3.1.8",
3201
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.8.tgz",
3202
- "integrity": "sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==",
3200
+ "version": "3.1.9",
3201
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.9.tgz",
3202
+ "integrity": "sha512-hS/0Wt3Ya043oKXs0sIxrMpKQITXhMLIrVAKKXi4gozGC9v7YRWVnXIZzjNPTO02M9BdxLCWqK1yRXgNziVyJQ==",
3203
3203
  "funding": [
3204
3204
  {
3205
3205
  "type": "github",
@@ -3792,9 +3792,9 @@
3792
3792
  "license": "ISC"
3793
3793
  },
3794
3794
  "node_modules/jose": {
3795
- "version": "6.2.12",
3796
- "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.12.tgz",
3797
- "integrity": "sha512-9NiFmJEex0sy2Dk58j2UGBSHgUs2ypF9eZSu4L6vjOX3Dp96Sw1F3uL+H+D1sx02jZZdzUT0HgvCy59CuvXcWw==",
3795
+ "version": "6.2.13",
3796
+ "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.13.tgz",
3797
+ "integrity": "sha512-7TIg10ZE1x82YediN+lcrPNvGMKge9yFHQD+Qho/b8y2adfugU3AsvvHfxV0fzyFllT6l9xCjf4RWY9g/Z9PJQ==",
3798
3798
  "license": "MIT",
3799
3799
  "funding": {
3800
3800
  "url": "https://github.com/sponsors/panva"
@@ -5452,7 +5452,7 @@
5452
5452
  },
5453
5453
  "": {
5454
5454
  "name": "@letta-ai/letta-code",
5455
- "version": "0.34.17",
5455
+ "version": "0.34.19",
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.19",
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-RWgzMK/RLJluHmJEAXwWV7NZe1gpOgg3BYpp8+G8QfqsXUUmzZgQpQz5E9CHogeIwfcGzCaHAUIdboH6Ir7KyA=="
279
279
  }
@@ -1,12 +1,14 @@
1
1
  import { describe, expect, test } from "bun:test";
2
2
  import {
3
3
  captureDocsSnapshot,
4
+ DEFAULT_LLMS_URL,
4
5
  deterministicSourcePath,
5
6
  diffDocsSnapshots,
6
7
  extractNamedChanges,
7
8
  hashDocsMarkdown,
8
9
  isWatchedDocsUrl,
9
10
  normalizeDocsMarkdown,
11
+ OFFICIAL_CHANGELOG_URL,
10
12
  parseLlmsTxt,
11
13
  sha256,
12
14
  unifiedDiff,
@@ -110,6 +112,69 @@ describe("official docs capture", () => {
110
112
  ).rejects.toThrow("outside https://docs.example");
111
113
  });
112
114
 
115
+ test("captures the official Claude Tag redirect without adding a second source", async () => {
116
+ const page = "https://code.claude.com/docs/en/claude-tag.md";
117
+ const target = "https://claude.com/docs/claude-tag";
118
+ const overview = "https://claude.com/docs/claude-tag/overview";
119
+ const calls: string[] = [];
120
+ const fetcher = fixtureFetch(
121
+ {
122
+ [DEFAULT_LLMS_URL]: page,
123
+ [OFFICIAL_CHANGELOG_URL]: "# Changelog\n",
124
+ [overview]: "# Work with Claude Tag\n",
125
+ },
126
+ calls,
127
+ );
128
+ const captured = await captureDocsSnapshot({
129
+ retries: 0,
130
+ fetch: (input, init) =>
131
+ String(input) === page || String(input) === target
132
+ ? Promise.resolve(
133
+ new Response(null, {
134
+ status: 307,
135
+ headers: {
136
+ location: String(input) === page ? target : overview,
137
+ },
138
+ }),
139
+ )
140
+ : fetcher(input, init),
141
+ });
142
+ expect(captured.snapshot.pages[page]?.hash).toBe(
143
+ hashDocsMarkdown("# Work with Claude Tag\n"),
144
+ );
145
+ expect(Object.keys(captured.snapshot.pages).sort()).toEqual(
146
+ [page, OFFICIAL_CHANGELOG_URL].sort(),
147
+ );
148
+ expect(calls.filter((url) => url === overview)).toHaveLength(1);
149
+ });
150
+
151
+ test.each([
152
+ [DEFAULT_LLMS_URL, "https://claude.com/docs/other-page"],
153
+ [DEFAULT_LLMS_URL, "https://claude.com/docs/claude-tag?redirect=other"],
154
+ [INDEX, "https://claude.com/docs/claude-tag"],
155
+ ])("rejects unapproved redirects from %s to %s", async (indexUrl, target) => {
156
+ const calls: string[] = [];
157
+ await expect(
158
+ captureDocsSnapshot({
159
+ indexUrl,
160
+ retries: 0,
161
+ fetch: async (input) => {
162
+ const url = String(input);
163
+ calls.push(url);
164
+ if (url === indexUrl)
165
+ return new Response(new URL("/en/tools.md", indexUrl).toString());
166
+ if (url === OFFICIAL_CHANGELOG_URL)
167
+ return new Response("# Changelog");
168
+ return new Response(null, {
169
+ status: 307,
170
+ headers: { location: target },
171
+ });
172
+ },
173
+ }),
174
+ ).rejects.toThrow("Refusing documentation URL");
175
+ expect(calls).not.toContain(target);
176
+ });
177
+
113
178
  test("detects added, removed, and changed pages with watched source previews", async () => {
114
179
  const oldCapture = await captureDocsSnapshot({
115
180
  indexUrl: INDEX,
@@ -185,9 +185,15 @@ export async function captureDocsSnapshot(
185
185
  const fetcher = options.fetch ?? globalThis.fetch;
186
186
  const indexUrl = options.indexUrl ?? DEFAULT_LLMS_URL;
187
187
  const allowedOrigin = new URL(indexUrl).origin;
188
- const fixedAllowedUrls = new Set(
189
- indexUrl === DEFAULT_LLMS_URL ? [OFFICIAL_CHANGELOG_URL] : [],
190
- );
188
+ const fixedSourceUrls =
189
+ indexUrl === DEFAULT_LLMS_URL ? [OFFICIAL_CHANGELOG_URL] : [];
190
+ const fixedAllowedUrls = new Set(fixedSourceUrls);
191
+ if (indexUrl === DEFAULT_LLMS_URL) {
192
+ // The indexed claude-tag.md page redirects through these two URLs. Do not
193
+ // fetch them separately or trust other URLs on claude.com.
194
+ fixedAllowedUrls.add("https://claude.com/docs/claude-tag");
195
+ fixedAllowedUrls.add("https://claude.com/docs/claude-tag/overview");
196
+ }
191
197
  const now = toDate(options.now ?? new Date());
192
198
  const indexText = await fetchText(
193
199
  indexUrl,
@@ -198,7 +204,7 @@ export async function captureDocsSnapshot(
198
204
  );
199
205
  const normalizedIndex = normalizeDocsMarkdown(indexText);
200
206
  const urls = [
201
- ...new Set([...parseLlmsTxt(indexText), ...fixedAllowedUrls]),
207
+ ...new Set([...parseLlmsTxt(indexText), ...fixedSourceUrls]),
202
208
  ].sort();
203
209
  const fullScan = shouldFullScan(options);
204
210
  const pages: Record<string, ClaudeDocsPageSnapshot> = {};
@@ -86,6 +86,11 @@
86
86
  "timeoutMs": 15000,
87
87
  "reason": "Imports the real media module while Slack adapter tests replace it."
88
88
  },
89
+ {
90
+ "path": "src/channels/message-channel-gateway-routing.test.ts",
91
+ "timeoutMs": 15000,
92
+ "reason": "Swaps the process-global backend via __testSetBackend(new FakeHeadlessBackend()) without restoring it; the fake backend's environmentRouting:false then leaks into every later suite in the same bun process (broke task-tool-assets 'keeps computer for the Cloud server' when test-selection changes co-located them in one shard)."
93
+ },
89
94
  {
90
95
  "path": "src/cli/subcommands/teleport.test.ts",
91
96
  "timeoutMs": 15000,
@@ -1,17 +1,17 @@
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,
6
6
  "src/backend/pi-stream-adapter.test.ts": 1255,
7
- "src/cli/app/AppCoordinator.tsx": 5101,
8
- "src/cli/app/AppView.tsx": 1729,
9
- "src/cli/app/use-approval-flow.ts": 1071,
7
+ "src/cli/app/AppCoordinator.tsx": 5131,
8
+ "src/cli/app/AppView.tsx": 1732,
9
+ "src/cli/app/use-approval-flow.ts": 1099,
10
10
  "src/cli/app/use-configuration-handlers.ts": 1417,
11
- "src/cli/app/use-conversation-loop.ts": 2860,
11
+ "src/cli/app/use-conversation-loop.ts": 2899,
12
12
  "src/cli/app/use-submit-handler.ts": 3797,
13
13
  "src/cli/components/AgentSelector.tsx": 1104,
14
- "src/cli/components/InputRich.tsx": 2116,
14
+ "src/cli/components/InputRich.tsx": 2124,
15
15
  "src/cli/components/ModelSelector.tsx": 1259,
16
16
  "src/cli/components/ProviderSelector.tsx": 1564,
17
17
  "src/cli/helpers/accumulator.ts": 1587,
@@ -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": 4771,
22
+ "src/headless.ts": 4851,
23
23
  "src/hooks/integration.test.ts": 1147,
24
24
  "src/index.ts": 2575,
25
25
  "src/mods/learning-harness.ts": 2434,
@@ -33,14 +33,14 @@
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": 2606,
36
+ "src/tools/manager.ts": 2609,
37
37
  "src/tools/tool-execution-context.test.ts": 1092,
38
38
  "src/types/protocol_v2.ts": 2532,
39
- "src/websocket/listener/message-router.ts": 1005,
40
39
  "src/websocket/listen-client-concurrency.test.ts": 2557,
41
40
  "src/websocket/listen-client-protocol.test.ts": 5664,
42
41
  "src/websocket/listener/commands/memory.ts": 1114,
43
42
  "src/websocket/listener/file-commands.ts": 1045,
43
+ "src/websocket/listener/message-router.ts": 1005,
44
44
  "src/websocket/listener/protocol-inbound.ts": 2054,
45
45
  "src/websocket/listener/protocol-outbound.ts": 1001
46
46
  }
@@ -97,10 +97,6 @@ Returns the raw API response with full agent details. Key fields:
97
97
  - `tags` - Agent tags
98
98
  - `blocks` - Memory blocks (if `--include-blocks` used)
99
99
 
100
- ## Related Skills
101
-
102
- - **migrating-memory** - Once you find an agent, use this skill to copy/share memory blocks
103
-
104
100
  ### Finding Agents by Topic
105
101
 
106
102
  If you need to find which agent worked on a specific topic: