@letta-ai/letta-code 0.34.31 → 0.34.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cursor-worker.js +49 -16
- package/dist/mcp-client.js +2 -2
- package/dist/mcp-client.js.map +1 -1
- package/dist/mcp-oauth.js +2 -2
- package/dist/mcp-oauth.js.map +1 -1
- package/dist/types/agent/message.d.ts.map +1 -1
- package/dist/types/agent/subagents/subagent-process.d.ts +2 -0
- package/dist/types/agent/subagents/subagent-process.d.ts.map +1 -1
- package/dist/types/backend/dev/pi-request-headers.d.ts +3 -1
- package/dist/types/backend/dev/pi-request-headers.d.ts.map +1 -1
- package/dist/types/backend/dev/pi-stream-adapter.d.ts.map +1 -1
- package/dist/types/backend/local/compaction.d.ts.map +1 -1
- package/dist/types/cli/subcommands/mcp-io.d.ts.map +1 -1
- package/dist/types/tools/impl/codex-app-server.d.ts.map +1 -1
- package/dist/types/tools/impl/cursor-start-retry.d.ts +3 -0
- package/dist/types/tools/impl/cursor-start-retry.d.ts.map +1 -0
- package/dist/types/tools/impl/cursor-worker.d.ts.map +1 -1
- package/dist/types/utils/package-manager-spawn.d.ts +12 -0
- package/dist/types/utils/package-manager-spawn.d.ts.map +1 -1
- package/dist/types/utils/stdin.d.ts +3 -0
- package/dist/types/utils/stdin.d.ts.map +1 -0
- package/letta.js +928 -850
- package/npm-shrinkwrap.json +90 -90
- package/package.json +2 -2
- package/skills/context-doctor/references/auditing-memory.md +6 -3
- package/skills/creating-skills/SKILL.md +22 -1
- package/skills/initializing-memory/SKILL.md +29 -13
- package/skills/maintaining-core-memory/SKILL.md +22 -1
- package/skills/maintaining-deferred-memory/SKILL.md +22 -2
- package/skills/managing-shared-memory/SKILL.md +22 -7
- package/skills/syncing-memory-filesystem/SKILL.md +1 -1
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@letta-ai/letta-code",
|
|
3
|
-
"version": "0.34.
|
|
3
|
+
"version": "0.34.33",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"packages": {
|
|
6
6
|
"node_modules/@alcalzone/ansi-tokenize": {
|
|
@@ -61,9 +61,9 @@
|
|
|
61
61
|
}
|
|
62
62
|
},
|
|
63
63
|
"node_modules/@aws-sdk/core": {
|
|
64
|
-
"version": "3.
|
|
65
|
-
"resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.
|
|
66
|
-
"integrity": "sha512-
|
|
64
|
+
"version": "3.979.0",
|
|
65
|
+
"resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.979.0.tgz",
|
|
66
|
+
"integrity": "sha512-E3eeLhIOxlIc9NPsZbtpHuk8W/gEZ3YvFauNPrrrtNtF7Pq1cwSrFwA51Z1EIoUY6VFvTyltyLRNUhaa0aSKSA==",
|
|
67
67
|
"license": "Apache-2.0",
|
|
68
68
|
"dependencies": {
|
|
69
69
|
"@aws-sdk/types": "^3.975.0",
|
|
@@ -80,12 +80,12 @@
|
|
|
80
80
|
}
|
|
81
81
|
},
|
|
82
82
|
"node_modules/@aws-sdk/credential-provider-env": {
|
|
83
|
-
"version": "3.972.
|
|
84
|
-
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.
|
|
85
|
-
"integrity": "sha512-
|
|
83
|
+
"version": "3.972.79",
|
|
84
|
+
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.79.tgz",
|
|
85
|
+
"integrity": "sha512-fhfGcGiY70EcH9H8N/K+K2NMW3wF2J/7slHYJo0u1mF7XBpU7dlaJ8xmc0jBYUzJLRbKz4+BtVwwqrH7eZNTNw==",
|
|
86
86
|
"license": "Apache-2.0",
|
|
87
87
|
"dependencies": {
|
|
88
|
-
"@aws-sdk/core": "^3.
|
|
88
|
+
"@aws-sdk/core": "^3.979.0",
|
|
89
89
|
"@aws-sdk/types": "^3.975.0",
|
|
90
90
|
"@smithy/core": "^3.37.0",
|
|
91
91
|
"@smithy/types": "^4.19.0",
|
|
@@ -96,12 +96,12 @@
|
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"node_modules/@aws-sdk/credential-provider-http": {
|
|
99
|
-
"version": "3.972.
|
|
100
|
-
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.
|
|
101
|
-
"integrity": "sha512-
|
|
99
|
+
"version": "3.972.81",
|
|
100
|
+
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.81.tgz",
|
|
101
|
+
"integrity": "sha512-bp2TG0g2seN4LMEOjIVxkDpb/ls4GsDiguteIFxxQUxFBoyhf0pmfGbZCddHORrg58K72c+7CMlaDEw921c/3Q==",
|
|
102
102
|
"license": "Apache-2.0",
|
|
103
103
|
"dependencies": {
|
|
104
|
-
"@aws-sdk/core": "^3.
|
|
104
|
+
"@aws-sdk/core": "^3.979.0",
|
|
105
105
|
"@aws-sdk/types": "^3.975.0",
|
|
106
106
|
"@smithy/core": "^3.37.0",
|
|
107
107
|
"@smithy/fetch-http-handler": "^5.8.0",
|
|
@@ -114,12 +114,12 @@
|
|
|
114
114
|
}
|
|
115
115
|
},
|
|
116
116
|
"node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler": {
|
|
117
|
-
"version": "4.
|
|
118
|
-
"resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.
|
|
119
|
-
"integrity": "sha512
|
|
117
|
+
"version": "4.14.0",
|
|
118
|
+
"resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.14.0.tgz",
|
|
119
|
+
"integrity": "sha512-j24RS5V9J52u0z81RpgF7H55p4bS6UCEIxF4ZYzTYh6M9hzXvjAIAYwgLobqf7vJq3xib5VXc7nX3YesV8Rx4A==",
|
|
120
120
|
"license": "Apache-2.0",
|
|
121
121
|
"dependencies": {
|
|
122
|
-
"@smithy/core": "^3.
|
|
122
|
+
"@smithy/core": "^3.38.0",
|
|
123
123
|
"@smithy/types": "^4.19.0",
|
|
124
124
|
"tslib": "^2.6.2"
|
|
125
125
|
},
|
|
@@ -128,19 +128,19 @@
|
|
|
128
128
|
}
|
|
129
129
|
},
|
|
130
130
|
"node_modules/@aws-sdk/credential-provider-ini": {
|
|
131
|
-
"version": "3.973.
|
|
132
|
-
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.
|
|
133
|
-
"integrity": "sha512-
|
|
131
|
+
"version": "3.973.24",
|
|
132
|
+
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.24.tgz",
|
|
133
|
+
"integrity": "sha512-ULdPVLKR46qGsVCmbilDWWcry5qAR8nYm7RZewaNtCvVLPSIyb9zSWabTA9M07s10ZpEPUl67rcORyXE50Obog==",
|
|
134
134
|
"license": "Apache-2.0",
|
|
135
135
|
"dependencies": {
|
|
136
|
-
"@aws-sdk/core": "^3.
|
|
137
|
-
"@aws-sdk/credential-provider-env": "^3.972.
|
|
138
|
-
"@aws-sdk/credential-provider-http": "^3.972.
|
|
139
|
-
"@aws-sdk/credential-provider-login": "^3.972.
|
|
140
|
-
"@aws-sdk/credential-provider-process": "^3.972.
|
|
141
|
-
"@aws-sdk/credential-provider-sso": "^3.973.
|
|
142
|
-
"@aws-sdk/credential-provider-web-identity": "^3.972.
|
|
143
|
-
"@aws-sdk/nested-clients": "^3.997.
|
|
136
|
+
"@aws-sdk/core": "^3.979.0",
|
|
137
|
+
"@aws-sdk/credential-provider-env": "^3.972.79",
|
|
138
|
+
"@aws-sdk/credential-provider-http": "^3.972.81",
|
|
139
|
+
"@aws-sdk/credential-provider-login": "^3.972.86",
|
|
140
|
+
"@aws-sdk/credential-provider-process": "^3.972.79",
|
|
141
|
+
"@aws-sdk/credential-provider-sso": "^3.973.23",
|
|
142
|
+
"@aws-sdk/credential-provider-web-identity": "^3.972.85",
|
|
143
|
+
"@aws-sdk/nested-clients": "^3.997.53",
|
|
144
144
|
"@aws-sdk/types": "^3.975.0",
|
|
145
145
|
"@smithy/core": "^3.37.0",
|
|
146
146
|
"@smithy/credential-provider-imds": "^4.5.2",
|
|
@@ -152,13 +152,13 @@
|
|
|
152
152
|
}
|
|
153
153
|
},
|
|
154
154
|
"node_modules/@aws-sdk/credential-provider-login": {
|
|
155
|
-
"version": "3.972.
|
|
156
|
-
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.
|
|
157
|
-
"integrity": "sha512-
|
|
155
|
+
"version": "3.972.86",
|
|
156
|
+
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.86.tgz",
|
|
157
|
+
"integrity": "sha512-e6cD5PUesauIYxV4IaOLNfEh0FnhUeIxnY4AZzmEH9PsPGpScROmrdzA0MaaCxiDVzGPtxcJW7Ku7vKU+w2p9Q==",
|
|
158
158
|
"license": "Apache-2.0",
|
|
159
159
|
"dependencies": {
|
|
160
|
-
"@aws-sdk/core": "^3.
|
|
161
|
-
"@aws-sdk/nested-clients": "^3.997.
|
|
160
|
+
"@aws-sdk/core": "^3.979.0",
|
|
161
|
+
"@aws-sdk/nested-clients": "^3.997.53",
|
|
162
162
|
"@aws-sdk/types": "^3.975.0",
|
|
163
163
|
"@smithy/core": "^3.37.0",
|
|
164
164
|
"@smithy/types": "^4.19.0",
|
|
@@ -169,17 +169,17 @@
|
|
|
169
169
|
}
|
|
170
170
|
},
|
|
171
171
|
"node_modules/@aws-sdk/credential-provider-node": {
|
|
172
|
-
"version": "3.972.
|
|
173
|
-
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.
|
|
174
|
-
"integrity": "sha512
|
|
172
|
+
"version": "3.972.91",
|
|
173
|
+
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.91.tgz",
|
|
174
|
+
"integrity": "sha512-0j1oy7cFwsMaIpueqFGeQG0VpulcF61ucKKqZUha9rZXvRK91chmAxFfov6Q155TerBGgt1dvy9n9Y3O4HD/UQ==",
|
|
175
175
|
"license": "Apache-2.0",
|
|
176
176
|
"dependencies": {
|
|
177
|
-
"@aws-sdk/credential-provider-env": "^3.972.
|
|
178
|
-
"@aws-sdk/credential-provider-http": "^3.972.
|
|
179
|
-
"@aws-sdk/credential-provider-ini": "^3.973.
|
|
180
|
-
"@aws-sdk/credential-provider-process": "^3.972.
|
|
181
|
-
"@aws-sdk/credential-provider-sso": "^3.973.
|
|
182
|
-
"@aws-sdk/credential-provider-web-identity": "^3.972.
|
|
177
|
+
"@aws-sdk/credential-provider-env": "^3.972.79",
|
|
178
|
+
"@aws-sdk/credential-provider-http": "^3.972.81",
|
|
179
|
+
"@aws-sdk/credential-provider-ini": "^3.973.24",
|
|
180
|
+
"@aws-sdk/credential-provider-process": "^3.972.79",
|
|
181
|
+
"@aws-sdk/credential-provider-sso": "^3.973.23",
|
|
182
|
+
"@aws-sdk/credential-provider-web-identity": "^3.972.85",
|
|
183
183
|
"@aws-sdk/types": "^3.975.0",
|
|
184
184
|
"@smithy/core": "^3.37.0",
|
|
185
185
|
"@smithy/credential-provider-imds": "^4.5.2",
|
|
@@ -191,12 +191,12 @@
|
|
|
191
191
|
}
|
|
192
192
|
},
|
|
193
193
|
"node_modules/@aws-sdk/credential-provider-process": {
|
|
194
|
-
"version": "3.972.
|
|
195
|
-
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.
|
|
196
|
-
"integrity": "sha512-
|
|
194
|
+
"version": "3.972.79",
|
|
195
|
+
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.79.tgz",
|
|
196
|
+
"integrity": "sha512-b9QnxJiZSccqpkSNNWkHRwU0XKbybD1p+j02m/qJc4mIwLkwQpJYfA/cbjg6hgGOoD7W1/imi+obSzDk/T1oNg==",
|
|
197
197
|
"license": "Apache-2.0",
|
|
198
198
|
"dependencies": {
|
|
199
|
-
"@aws-sdk/core": "^3.
|
|
199
|
+
"@aws-sdk/core": "^3.979.0",
|
|
200
200
|
"@aws-sdk/types": "^3.975.0",
|
|
201
201
|
"@smithy/core": "^3.37.0",
|
|
202
202
|
"@smithy/types": "^4.19.0",
|
|
@@ -207,14 +207,14 @@
|
|
|
207
207
|
}
|
|
208
208
|
},
|
|
209
209
|
"node_modules/@aws-sdk/credential-provider-sso": {
|
|
210
|
-
"version": "3.973.
|
|
211
|
-
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.973.
|
|
212
|
-
"integrity": "sha512-
|
|
210
|
+
"version": "3.973.23",
|
|
211
|
+
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.973.23.tgz",
|
|
212
|
+
"integrity": "sha512-KZiZ6RUQY4mahZVreo1pp5usUDOJAf613NLicgC0MQWA0rfdkRDaeT2K0WClYEHjMy9BKvXRxc087Kr1QjV9MA==",
|
|
213
213
|
"license": "Apache-2.0",
|
|
214
214
|
"dependencies": {
|
|
215
|
-
"@aws-sdk/core": "^3.
|
|
216
|
-
"@aws-sdk/nested-clients": "^3.997.
|
|
217
|
-
"@aws-sdk/token-providers": "3.
|
|
215
|
+
"@aws-sdk/core": "^3.979.0",
|
|
216
|
+
"@aws-sdk/nested-clients": "^3.997.53",
|
|
217
|
+
"@aws-sdk/token-providers": "3.1160.0",
|
|
218
218
|
"@aws-sdk/types": "^3.975.0",
|
|
219
219
|
"@smithy/core": "^3.37.0",
|
|
220
220
|
"@smithy/types": "^4.19.0",
|
|
@@ -225,13 +225,13 @@
|
|
|
225
225
|
}
|
|
226
226
|
},
|
|
227
227
|
"node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers": {
|
|
228
|
-
"version": "3.
|
|
229
|
-
"resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.
|
|
230
|
-
"integrity": "sha512-
|
|
228
|
+
"version": "3.1160.0",
|
|
229
|
+
"resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1160.0.tgz",
|
|
230
|
+
"integrity": "sha512-KHT4W6fRqXEDYM0lIPQD55bvZSk1xmzShUcEcw0dZYiUsgFVmilnfwY8K+tn2V/MG1Lv+SX7wkbzq/ld4XiygQ==",
|
|
231
231
|
"license": "Apache-2.0",
|
|
232
232
|
"dependencies": {
|
|
233
|
-
"@aws-sdk/core": "^3.
|
|
234
|
-
"@aws-sdk/nested-clients": "^3.997.
|
|
233
|
+
"@aws-sdk/core": "^3.979.0",
|
|
234
|
+
"@aws-sdk/nested-clients": "^3.997.53",
|
|
235
235
|
"@aws-sdk/types": "^3.975.0",
|
|
236
236
|
"@smithy/core": "^3.37.0",
|
|
237
237
|
"@smithy/types": "^4.19.0",
|
|
@@ -242,13 +242,13 @@
|
|
|
242
242
|
}
|
|
243
243
|
},
|
|
244
244
|
"node_modules/@aws-sdk/credential-provider-web-identity": {
|
|
245
|
-
"version": "3.972.
|
|
246
|
-
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.
|
|
247
|
-
"integrity": "sha512-
|
|
245
|
+
"version": "3.972.85",
|
|
246
|
+
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.85.tgz",
|
|
247
|
+
"integrity": "sha512-r9bZrCczKj0V46yRpFZavTmPlqBPtziEBZnKVHcGZ5NwpUrzHwhzizc7ntMfw5KPWHmL35C2tChwPH3MIy2TMQ==",
|
|
248
248
|
"license": "Apache-2.0",
|
|
249
249
|
"dependencies": {
|
|
250
|
-
"@aws-sdk/core": "^3.
|
|
251
|
-
"@aws-sdk/nested-clients": "^3.997.
|
|
250
|
+
"@aws-sdk/core": "^3.979.0",
|
|
251
|
+
"@aws-sdk/nested-clients": "^3.997.53",
|
|
252
252
|
"@aws-sdk/types": "^3.975.0",
|
|
253
253
|
"@smithy/core": "^3.37.0",
|
|
254
254
|
"@smithy/types": "^4.19.0",
|
|
@@ -289,12 +289,12 @@
|
|
|
289
289
|
}
|
|
290
290
|
},
|
|
291
291
|
"node_modules/@aws-sdk/middleware-websocket": {
|
|
292
|
-
"version": "3.972.
|
|
293
|
-
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-websocket/-/middleware-websocket-3.972.
|
|
294
|
-
"integrity": "sha512
|
|
292
|
+
"version": "3.972.61",
|
|
293
|
+
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-websocket/-/middleware-websocket-3.972.61.tgz",
|
|
294
|
+
"integrity": "sha512-+biJmi2766Jr7DGjB63nfVbmkHXGeaJZ2izkf3KBhxaffbn4LDInLmSV9SioSuY5EEiMfJ9FMaDc105TrxdGOw==",
|
|
295
295
|
"license": "Apache-2.0",
|
|
296
296
|
"dependencies": {
|
|
297
|
-
"@aws-sdk/core": "^3.
|
|
297
|
+
"@aws-sdk/core": "^3.979.0",
|
|
298
298
|
"@aws-sdk/types": "^3.975.0",
|
|
299
299
|
"@smithy/core": "^3.37.0",
|
|
300
300
|
"@smithy/fetch-http-handler": "^5.8.0",
|
|
@@ -307,12 +307,12 @@
|
|
|
307
307
|
}
|
|
308
308
|
},
|
|
309
309
|
"node_modules/@aws-sdk/nested-clients": {
|
|
310
|
-
"version": "3.997.
|
|
311
|
-
"resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.
|
|
312
|
-
"integrity": "sha512
|
|
310
|
+
"version": "3.997.53",
|
|
311
|
+
"resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.53.tgz",
|
|
312
|
+
"integrity": "sha512-JRcs7wwU/cMw62hbLUxlh/wyrHaL/4KOnJs/Hny0ZIo4GY8biBMEfLJrYDEBMF8wDIewtDZsBWT9Rna4uaRemw==",
|
|
313
313
|
"license": "Apache-2.0",
|
|
314
314
|
"dependencies": {
|
|
315
|
-
"@aws-sdk/core": "^3.
|
|
315
|
+
"@aws-sdk/core": "^3.979.0",
|
|
316
316
|
"@aws-sdk/signature-v4-multi-region": "^3.996.50",
|
|
317
317
|
"@aws-sdk/types": "^3.975.0",
|
|
318
318
|
"@smithy/core": "^3.37.0",
|
|
@@ -326,12 +326,12 @@
|
|
|
326
326
|
}
|
|
327
327
|
},
|
|
328
328
|
"node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler": {
|
|
329
|
-
"version": "4.
|
|
330
|
-
"resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.
|
|
331
|
-
"integrity": "sha512
|
|
329
|
+
"version": "4.14.0",
|
|
330
|
+
"resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.14.0.tgz",
|
|
331
|
+
"integrity": "sha512-j24RS5V9J52u0z81RpgF7H55p4bS6UCEIxF4ZYzTYh6M9hzXvjAIAYwgLobqf7vJq3xib5VXc7nX3YesV8Rx4A==",
|
|
332
332
|
"license": "Apache-2.0",
|
|
333
333
|
"dependencies": {
|
|
334
|
-
"@smithy/core": "^3.
|
|
334
|
+
"@smithy/core": "^3.38.0",
|
|
335
335
|
"@smithy/types": "^4.19.0",
|
|
336
336
|
"tslib": "^2.6.2"
|
|
337
337
|
},
|
|
@@ -2222,9 +2222,9 @@
|
|
|
2222
2222
|
"license": "MIT"
|
|
2223
2223
|
},
|
|
2224
2224
|
"node_modules/@smithy/core": {
|
|
2225
|
-
"version": "3.
|
|
2226
|
-
"resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.
|
|
2227
|
-
"integrity": "sha512-
|
|
2225
|
+
"version": "3.38.0",
|
|
2226
|
+
"resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.38.0.tgz",
|
|
2227
|
+
"integrity": "sha512-aLyyCnK2p4yvNA2TaM+5owXqb+rZGSiUKEsNP329AzeYnERtAz7NrlTbRsaxqmZ0ooxwoID8LMm959UGQQDIsg==",
|
|
2228
2228
|
"license": "Apache-2.0",
|
|
2229
2229
|
"dependencies": {
|
|
2230
2230
|
"@smithy/types": "^4.19.0",
|
|
@@ -2277,12 +2277,12 @@
|
|
|
2277
2277
|
}
|
|
2278
2278
|
},
|
|
2279
2279
|
"node_modules/@smithy/signature-v4": {
|
|
2280
|
-
"version": "5.7.
|
|
2281
|
-
"resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.7.
|
|
2282
|
-
"integrity": "sha512-
|
|
2280
|
+
"version": "5.7.5",
|
|
2281
|
+
"resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.7.5.tgz",
|
|
2282
|
+
"integrity": "sha512-WPjdr5oWOk1LArpI4pavu+fSo+/evi0Re1olxGvqwuZopd4gYR1UGCi+Soyn/IjmafqbWs+ZC+3AKxJS3ZpwUg==",
|
|
2283
2283
|
"license": "Apache-2.0",
|
|
2284
2284
|
"dependencies": {
|
|
2285
|
-
"@smithy/core": "^3.
|
|
2285
|
+
"@smithy/core": "^3.38.0",
|
|
2286
2286
|
"@smithy/types": "^4.19.0",
|
|
2287
2287
|
"tslib": "^2.6.2"
|
|
2288
2288
|
},
|
|
@@ -2616,9 +2616,9 @@
|
|
|
2616
2616
|
}
|
|
2617
2617
|
},
|
|
2618
2618
|
"node_modules/ansi-regex": {
|
|
2619
|
-
"version": "6.
|
|
2620
|
-
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.
|
|
2621
|
-
"integrity": "sha512-
|
|
2619
|
+
"version": "6.5.0",
|
|
2620
|
+
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.5.0.tgz",
|
|
2621
|
+
"integrity": "sha512-zhvbbbdt1kbw7EJ9OQoxmQcuaNR9P5kTj7e/YdmOSU10aHWbycofJxA6jKfoEy3vlLdctOF9ZHaxLtmSm998wQ==",
|
|
2622
2622
|
"license": "MIT",
|
|
2623
2623
|
"engines": {
|
|
2624
2624
|
"node": ">=12"
|
|
@@ -3324,9 +3324,9 @@
|
|
|
3324
3324
|
}
|
|
3325
3325
|
},
|
|
3326
3326
|
"node_modules/express-rate-limit": {
|
|
3327
|
-
"version": "8.7.
|
|
3328
|
-
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.7.
|
|
3329
|
-
"integrity": "sha512-
|
|
3327
|
+
"version": "8.7.2",
|
|
3328
|
+
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.7.2.tgz",
|
|
3329
|
+
"integrity": "sha512-U1ScocxDD9WI09LaBVypvNkOtNR5yWAmZLkuKJdAzIchA4YKFYF6GT5IKER7epG58oXtjvGlV0/6ii0F83EyZg==",
|
|
3330
3330
|
"license": "MIT",
|
|
3331
3331
|
"dependencies": {
|
|
3332
3332
|
"debug": "^4.4.3",
|
|
@@ -3969,9 +3969,9 @@
|
|
|
3969
3969
|
"license": "ISC"
|
|
3970
3970
|
},
|
|
3971
3971
|
"node_modules/jose": {
|
|
3972
|
-
"version": "6.2.
|
|
3973
|
-
"resolved": "https://registry.npmjs.org/jose/-/jose-6.2.
|
|
3974
|
-
"integrity": "sha512-
|
|
3972
|
+
"version": "6.2.14",
|
|
3973
|
+
"resolved": "https://registry.npmjs.org/jose/-/jose-6.2.14.tgz",
|
|
3974
|
+
"integrity": "sha512-3JasLuki1NRLQvY4wCoC37KZk4qxoBx2k2aFqLxT84IezqW0bkJKnNtxnZj/Fu1xsQivoc/lytxaRHJoGLjJ1A==",
|
|
3975
3975
|
"license": "MIT",
|
|
3976
3976
|
"funding": {
|
|
3977
3977
|
"url": "https://github.com/sponsors/panva"
|
|
@@ -5633,7 +5633,7 @@
|
|
|
5633
5633
|
},
|
|
5634
5634
|
"": {
|
|
5635
5635
|
"name": "@letta-ai/letta-code",
|
|
5636
|
-
"version": "0.34.
|
|
5636
|
+
"version": "0.34.33",
|
|
5637
5637
|
"dependencies": {
|
|
5638
5638
|
"@cursor/sdk": "1.1.0",
|
|
5639
5639
|
"@earendil-works/pi-ai": "^0.99.1",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@letta-ai/letta-code",
|
|
3
|
-
"version": "0.34.
|
|
3
|
+
"version": "0.34.33",
|
|
4
4
|
"lettaStartupLogProtocol": 1,
|
|
5
5
|
"lettaConfigDirProtocol": 1,
|
|
6
6
|
"description": "Letta Code is a CLI tool for interacting with stateful Letta agents from the terminal.",
|
|
@@ -278,7 +278,7 @@
|
|
|
278
278
|
},
|
|
279
279
|
"lettaLifecycleProtocol": 1,
|
|
280
280
|
"lettaRuntimeGraphProtocol": 1,
|
|
281
|
-
"lettaRuntimeGraphSha512": "sha512-
|
|
281
|
+
"lettaRuntimeGraphSha512": "sha512-k6/hR2IHpEKzR+Q6apFf2XdWJ1VIJXHIq74pZMH5EoGipLTIwCfuBzQnj1lmMiLaZC5+KXjGNgW9a4ZZb8/02A==",
|
|
282
282
|
"patchedDependencies": {
|
|
283
283
|
"@earendil-works/pi-ai@0.99.1": "patches/@earendil-works%2Fpi-ai@0.99.1.patch"
|
|
284
284
|
}
|
|
@@ -64,9 +64,12 @@ Moving detail behind a link changes when it reaches the model. Keep essential
|
|
|
64
64
|
instructions and cues for when to retrieve that detail in core memory; a link
|
|
65
65
|
alone does not preserve their in-context effect.
|
|
66
66
|
|
|
67
|
-
Review the diff and validate changed file structure and links.
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
Review the diff and validate changed file structure and links. Commit with the
|
|
68
|
+
*Commit memory changes* format from `maintaining-core-memory` or
|
|
69
|
+
`maintaining-deferred-memory`: one commit per repair, citing the conversations,
|
|
70
|
+
message IDs, and files that support it under `Sources:`.
|
|
71
|
+
Doctor has no separate worktree or completion-time integration step. If there
|
|
72
|
+
are no supported fixes, make no commit.
|
|
70
73
|
|
|
71
74
|
After a repair, recheck the original structural or content defect and any
|
|
72
75
|
affected links or indexes.
|
|
@@ -332,7 +332,7 @@ Write instructions for using the skill and its bundled resources.
|
|
|
332
332
|
|
|
333
333
|
### Step 5: Packaging a Skill
|
|
334
334
|
|
|
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.
|
|
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. Commit them instead, following [Commit memory changes](#commit-memory-changes).
|
|
336
336
|
|
|
337
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:
|
|
338
338
|
|
|
@@ -369,3 +369,24 @@ Improve a skill when real usage shows it falling short, whether through user fee
|
|
|
369
369
|
2. Notice struggles or inefficiencies
|
|
370
370
|
3. Identify how SKILL.md or bundled resources should be updated
|
|
371
371
|
4. Implement changes and test again
|
|
372
|
+
|
|
373
|
+
## Commit memory changes
|
|
374
|
+
|
|
375
|
+
Every memory commit must let someone reading `git log` or `git blame` on a memory or skill line trace back to the events that justified it. Commit each learning separately; a learning may touch several files. When a turn produces several learnings, finish and commit one before editing for the next. From the repository root, stage only that learning's files and commit in one shell call:
|
|
376
|
+
|
|
377
|
+
```bash
|
|
378
|
+
git add <changed files> && git commit -m "memory(<origin>): <what was learned>
|
|
379
|
+
|
|
380
|
+
<what happened: the events that led to this learning and why it should persist>
|
|
381
|
+
|
|
382
|
+
Sources:
|
|
383
|
+
- <conversation ID> (<message IDs>), <who>, <date>: <what happened there>"
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
- `<origin>` is `self` when you edit your own memory during a conversation, or `dream` when you are a reflection or dream subagent reviewing past transcripts.
|
|
387
|
+
- Provenance belongs in the commit, not the memory file: who said or did it (name and ID), when, the quote, and the incident go in the body and `Sources:`. The memory line states only the resulting rule or fact. For example, the file says "Be concise" and the commit says "feedback 'talk more concisely' from Charles <id> on <date>". Git dates the commit, not the event, so write the event date.
|
|
388
|
+
- The subject states the learning itself, such as `memory(self): Sarah wants one commit per learning`, not the file edit.
|
|
389
|
+
- The body tells the story: what the user said or corrected, what failed or succeeded, or what pattern recurred, and why it generalizes beyond that moment. A reader should understand why the memory exists without opening the sources.
|
|
390
|
+
- `Sources:` lists the evidence precisely enough to find again, with one line on what happened at each: a conversation ID with the message IDs where it happened, a transcript or session ID, a file path, a URL, PR, or issue, or a commit hash. When the user explicitly asked for the change, cite that request. Resolve values such as `$CONVERSATION_ID` before writing them; never commit a literal variable name.
|
|
391
|
+
- Do not invent a source. If the origin cannot be identified, write `Sources: unknown` and say why in the body.
|
|
392
|
+
- Never include secrets.
|
|
@@ -47,7 +47,7 @@ Working with the maintainer of orchard, a CLI for build fleets.
|
|
|
47
47
|
Repo conventions live in `AGENTS.md` and its nested guides; read them there.
|
|
48
48
|
|
|
49
49
|
Where the rest of what I know lives:
|
|
50
|
-
- [orchard](orchard/MEMORY.md) — architecture, gotchas, and
|
|
50
|
+
- [orchard](orchard/MEMORY.md) — architecture, gotchas, and recurring corrections to consult when working there
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
An index pointing at nothing is worse than the content it displaced.
|
|
@@ -71,10 +71,10 @@ human.md # The person: role, motivations, how they work
|
|
|
71
71
|
orchard/
|
|
72
72
|
├── MEMORY.md # Index for the deferred orchard notes
|
|
73
73
|
├── architecture.md # How the subsystems actually fit together
|
|
74
|
-
├── gotchas.md # Footguns
|
|
74
|
+
├── gotchas.md # Footguns and why each one bites
|
|
75
75
|
└── history/
|
|
76
76
|
├── MEMORY.md # Required — every directory level needs its own index
|
|
77
|
-
└── corrections.md #
|
|
77
|
+
└── corrections.md # Recurring corrections as rules; quotes and session ids go in the commits
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
`orchard/history/` needs its own `MEMORY.md` purely because it is a directory level. An agent with no child directories at all would be equally correct.
|
|
@@ -169,9 +169,9 @@ It reports sessions analyzed, unread, excluded, export errors, and any dropped f
|
|
|
169
169
|
|
|
170
170
|
**Provenance gates promotion here too**, not only in the subagent — a worker's authorship flag must survive curation, because flagged excerpts still read like preferences. Before promoting any claim about what the human wants, check who wrote the quoted words; agent-authored dispatch prompts describe how an *agent* was instructed to work. If it is ambiguous, corroborate from a session you know the human drove, or store it as an observed pattern with the uncertainty stated. Repetition does not establish authorship: a template reused across fifty sessions repeats fifty times.
|
|
171
171
|
|
|
172
|
-
**Combine, then deduplicate.** Cohorts report the same topic at different specificity. Keep the unique details from each —
|
|
172
|
+
**Combine, then deduplicate.** Cohorts report the same topic at different specificity. Keep the unique details from each — paths, correction counts — and sum correction counts across cohorts, since a correction seen in five cohorts is a chronic failure. Keep the specific form alongside the general: "Use factory methods, such as `create_token_counter()`, not direct instantiation" beats "prefers factory methods". Then keep each fact exactly once, and push what you don't need every turn into deferred memory with a discovery link from the core tier.
|
|
173
173
|
|
|
174
|
-
**Promote into canonical memory.** Write the survivors into the files their topics belong in,
|
|
174
|
+
**Promote into canonical memory.** Write the survivors into the files their topics belong in, as rules and facts. Cover all three of identity and personality, hard rules and preferences, and project context; skip generic repo facts unless they change how you execute. If the output reads generically, the analysis failed for that area — re-read those transcripts or that code yourself. Put the quotes and stable `sessionId`s behind each finding in its commit, not the memory file; `/tmp` results and journals are scratch, not retrievable evidence.
|
|
175
175
|
|
|
176
176
|
**Consider skills.** If the history surfaces genuinely repeatable multi-step procedures, create them now (load `creating-skills`) or note the candidates in memory. Don't force it.
|
|
177
177
|
|
|
@@ -187,15 +187,10 @@ It reports sessions analyzed, unread, excluded, export errors, and any dropped f
|
|
|
187
187
|
### 10. Commit, then report
|
|
188
188
|
**Uncommitted memory is not part of your future system prompt.** If a commit is blocked, report initialization as incomplete rather than describing working-tree files as live memory.
|
|
189
189
|
|
|
190
|
-
|
|
191
|
-
cd $MEMORY_DIR
|
|
192
|
-
git status # Review what changed before staging
|
|
193
|
-
git add <specific files> # Stage targeted paths — avoid blind `git add -A`
|
|
194
|
-
author_name="${AGENT_NAME:-$AGENT_ID}"
|
|
195
|
-
git commit --author="$author_name <$AGENT_ID@letta.com>" -m "feat(init): <summary> ✨
|
|
196
|
-
|
|
197
|
-
<what was initialized and key decisions made>"
|
|
190
|
+
Review `git status`, then commit with [Commit memory changes](#commit-memory-changes), adding `--author="${AGENT_NAME:-$AGENT_ID} <$AGENT_ID@letta.com>"`. Commit each topic you wrote (identity, preferences, a project) separately, and list the repositories, files, and `sessionId`s its findings came from under `Sources:`. Then confirm the result:
|
|
198
191
|
|
|
192
|
+
```bash
|
|
193
|
+
cd "$MEMORY_DIR"
|
|
199
194
|
git status # Your memory changes should no longer be listed
|
|
200
195
|
git ls-tree -r --name-only HEAD # What your future self will actually load
|
|
201
196
|
```
|
|
@@ -204,6 +199,27 @@ Do **not** run `git push`. The harness pushes clean committed memory automatical
|
|
|
204
199
|
|
|
205
200
|
Only once the commit is verified, tell the user what you built and whether coverage was complete, then ask whether they want refinement — which means another commit, so repeat this step.
|
|
206
201
|
|
|
202
|
+
## Commit memory changes
|
|
203
|
+
|
|
204
|
+
Every memory commit must let someone reading `git log` or `git blame` on a memory or skill line trace back to the events that justified it. Commit each learning separately; a learning may touch several files. When a turn produces several learnings, finish and commit one before editing for the next. From the repository root, stage only that learning's files and commit in one shell call:
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
git add <changed files> && git commit -m "memory(<origin>): <what was learned>
|
|
208
|
+
|
|
209
|
+
<what happened: the events that led to this learning and why it should persist>
|
|
210
|
+
|
|
211
|
+
Sources:
|
|
212
|
+
- <conversation ID> (<message IDs>), <who>, <date>: <what happened there>"
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
- `<origin>` is `self` when you edit your own memory during a conversation, or `dream` when you are a reflection or dream subagent reviewing past transcripts.
|
|
216
|
+
- Provenance belongs in the commit, not the memory file: who said or did it (name and ID), when, the quote, and the incident go in the body and `Sources:`. The memory line states only the resulting rule or fact. For example, the file says "Be concise" and the commit says "feedback 'talk more concisely' from Charles <id> on <date>". Git dates the commit, not the event, so write the event date.
|
|
217
|
+
- The subject states the learning itself, such as `memory(self): Sarah wants one commit per learning`, not the file edit.
|
|
218
|
+
- The body tells the story: what the user said or corrected, what failed or succeeded, or what pattern recurred, and why it generalizes beyond that moment. A reader should understand why the memory exists without opening the sources.
|
|
219
|
+
- `Sources:` lists the evidence precisely enough to find again, with one line on what happened at each: a conversation ID with the message IDs where it happened, a transcript or session ID, a file path, a URL, PR, or issue, or a commit hash. When the user explicitly asked for the change, cite that request. Resolve values such as `$CONVERSATION_ID` before writing them; never commit a literal variable name.
|
|
220
|
+
- Do not invent a source. If the origin cannot be identified, write `Sources: unknown` and say why in the body.
|
|
221
|
+
- Never include secrets.
|
|
222
|
+
|
|
207
223
|
## Critical
|
|
208
224
|
- **Use parallel tool calls wherever possible** — read many files in one turn, write many memory files in one turn.
|
|
209
225
|
- **Write findings to memory as you go**; don't hold everything until the end.
|
|
@@ -61,7 +61,7 @@ Core memory is the agent's working model: who it is, how the user thinks and wha
|
|
|
61
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
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
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.
|
|
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 and where the learning came from. 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
65
|
- Update only from a pattern or an explicit instruction, not a single ambiguous event.
|
|
66
66
|
- Check that a change does not contradict an existing line; resolve the conflict instead of adding both.
|
|
67
67
|
- Write in plain language without all-caps or absolute emphasis. Overstated instructions get overapplied.
|
|
@@ -99,3 +99,24 @@ When a root file is long or the total is near its limit:
|
|
|
99
99
|
1. Delete stale, duplicated, or rederivable content.
|
|
100
100
|
2. Move subject detail into deferred memory and leave a one-line pointer in root `MEMORY.md`.
|
|
101
101
|
3. Move procedures into skills.
|
|
102
|
+
|
|
103
|
+
## Commit memory changes
|
|
104
|
+
|
|
105
|
+
Every memory commit must let someone reading `git log` or `git blame` on a memory or skill line trace back to the events that justified it. Commit each learning separately; a learning may touch several files. When a turn produces several learnings, finish and commit one before editing for the next. From the repository root, stage only that learning's files and commit in one shell call:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
git add <changed files> && git commit -m "memory(<origin>): <what was learned>
|
|
109
|
+
|
|
110
|
+
<what happened: the events that led to this learning and why it should persist>
|
|
111
|
+
|
|
112
|
+
Sources:
|
|
113
|
+
- <conversation ID> (<message IDs>), <who>, <date>: <what happened there>"
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
- `<origin>` is `self` when you edit your own memory during a conversation, or `dream` when you are a reflection or dream subagent reviewing past transcripts.
|
|
117
|
+
- Provenance belongs in the commit, not the memory file: who said or did it (name and ID), when, the quote, and the incident go in the body and `Sources:`. The memory line states only the resulting rule or fact. For example, the file says "Be concise" and the commit says "feedback 'talk more concisely' from Charles <id> on <date>". Git dates the commit, not the event, so write the event date.
|
|
118
|
+
- The subject states the learning itself, such as `memory(self): Sarah wants one commit per learning`, not the file edit.
|
|
119
|
+
- The body tells the story: what the user said or corrected, what failed or succeeded, or what pattern recurred, and why it generalizes beyond that moment. A reader should understand why the memory exists without opening the sources.
|
|
120
|
+
- `Sources:` lists the evidence precisely enough to find again, with one line on what happened at each: a conversation ID with the message IDs where it happened, a transcript or session ID, a file path, a URL, PR, or issue, or a commit hash. When the user explicitly asked for the change, cite that request. Resolve values such as `$CONVERSATION_ID` before writing them; never commit a literal variable name.
|
|
121
|
+
- Do not invent a source. If the origin cannot be identified, write `Sources: unknown` and say why in the body.
|
|
122
|
+
- Never include secrets.
|
|
@@ -7,7 +7,7 @@ Deferred memory contains the agent's knowledge. Use deferred memory for understa
|
|
|
7
7
|
|
|
8
8
|
Deferred memory should NOT be used to store:
|
|
9
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
|
|
10
|
+
- Justifications, reasons, or sources for updating memory. These belong in the commit message; see [Commit memory changes](#commit-memory-changes).
|
|
11
11
|
|
|
12
12
|
## Check the limits first
|
|
13
13
|
|
|
@@ -77,10 +77,30 @@ Recall already returns what happened. A deferred memory file is worth keeping on
|
|
|
77
77
|
|
|
78
78
|
- Before writing, ask whether searching message history would give a future agent the same thing. If it would, do not write the file.
|
|
79
79
|
- 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.
|
|
80
|
-
- 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.
|
|
80
|
+
- 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; the commit carries the event.
|
|
81
81
|
- 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.
|
|
82
82
|
- When a raw event matters, point to it with terms that will find it in recall rather than copying it.
|
|
83
83
|
- Keep one home per subject. Update the existing file instead of adding a near-duplicate, and replace stale conclusions where they live.
|
|
84
84
|
- 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.
|
|
85
85
|
- Never store secrets. Reference them by name, such as `$SECRET_NAME`.
|
|
86
86
|
|
|
87
|
+
## Commit memory changes
|
|
88
|
+
|
|
89
|
+
Every memory commit must let someone reading `git log` or `git blame` on a memory or skill line trace back to the events that justified it. Commit each learning separately; a learning may touch several files. When a turn produces several learnings, finish and commit one before editing for the next. From the repository root, stage only that learning's files and commit in one shell call:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
git add <changed files> && git commit -m "memory(<origin>): <what was learned>
|
|
93
|
+
|
|
94
|
+
<what happened: the events that led to this learning and why it should persist>
|
|
95
|
+
|
|
96
|
+
Sources:
|
|
97
|
+
- <conversation ID> (<message IDs>), <who>, <date>: <what happened there>"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
- `<origin>` is `self` when you edit your own memory during a conversation, or `dream` when you are a reflection or dream subagent reviewing past transcripts.
|
|
101
|
+
- Provenance belongs in the commit, not the memory file: who said or did it (name and ID), when, the quote, and the incident go in the body and `Sources:`. The memory line states only the resulting rule or fact. For example, the file says "Be concise" and the commit says "feedback 'talk more concisely' from Charles <id> on <date>". Git dates the commit, not the event, so write the event date.
|
|
102
|
+
- The subject states the learning itself, such as `memory(self): Sarah wants one commit per learning`, not the file edit.
|
|
103
|
+
- The body tells the story: what the user said or corrected, what failed or succeeded, or what pattern recurred, and why it generalizes beyond that moment. A reader should understand why the memory exists without opening the sources.
|
|
104
|
+
- `Sources:` lists the evidence precisely enough to find again, with one line on what happened at each: a conversation ID with the message IDs where it happened, a transcript or session ID, a file path, a URL, PR, or issue, or a commit hash. When the user explicitly asked for the change, cite that request. Resolve values such as `$CONVERSATION_ID` before writing them; never commit a literal variable name.
|
|
105
|
+
- Do not invent a source. If the origin cannot be identified, write `Sources: unknown` and say why in the body.
|
|
106
|
+
- Never include secrets.
|