lettactl 0.5.7 → 0.5.9

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 (40) hide show
  1. package/dist/commands/apply-template.d.ts +12 -0
  2. package/dist/commands/apply-template.d.ts.map +1 -0
  3. package/dist/commands/apply-template.js +118 -0
  4. package/dist/commands/apply-template.js.map +1 -0
  5. package/dist/commands/apply.d.ts.map +1 -1
  6. package/dist/commands/apply.js +42 -358
  7. package/dist/commands/apply.js.map +1 -1
  8. package/dist/lib/agent-manager.d.ts +0 -8
  9. package/dist/lib/agent-manager.d.ts.map +1 -1
  10. package/dist/lib/agent-manager.js +10 -58
  11. package/dist/lib/agent-manager.js.map +1 -1
  12. package/dist/lib/apply-helpers.d.ts +29 -0
  13. package/dist/lib/apply-helpers.d.ts.map +1 -0
  14. package/dist/lib/apply-helpers.js +224 -0
  15. package/dist/lib/apply-helpers.js.map +1 -0
  16. package/dist/lib/block-manager.d.ts +6 -29
  17. package/dist/lib/block-manager.d.ts.map +1 -1
  18. package/dist/lib/block-manager.js +76 -218
  19. package/dist/lib/block-manager.js.map +1 -1
  20. package/dist/lib/diff-analyzers.d.ts +17 -0
  21. package/dist/lib/diff-analyzers.d.ts.map +1 -0
  22. package/dist/lib/diff-analyzers.js +172 -0
  23. package/dist/lib/diff-analyzers.js.map +1 -0
  24. package/dist/lib/diff-applier.d.ts +27 -0
  25. package/dist/lib/diff-applier.d.ts.map +1 -0
  26. package/dist/lib/diff-applier.js +196 -0
  27. package/dist/lib/diff-applier.js.map +1 -0
  28. package/dist/lib/diff-engine.d.ts +0 -19
  29. package/dist/lib/diff-engine.d.ts.map +1 -1
  30. package/dist/lib/diff-engine.js +8 -359
  31. package/dist/lib/diff-engine.js.map +1 -1
  32. package/dist/lib/letta-client.d.ts +5 -0
  33. package/dist/lib/letta-client.d.ts.map +1 -1
  34. package/dist/lib/letta-client.js +3 -0
  35. package/dist/lib/letta-client.js.map +1 -1
  36. package/dist/utils/hash-utils.d.ts +9 -0
  37. package/dist/utils/hash-utils.d.ts.map +1 -0
  38. package/dist/utils/hash-utils.js +54 -0
  39. package/dist/utils/hash-utils.js.map +1 -0
  40. package/package.json +1 -1
@@ -1,52 +1,13 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.BlockManager = void 0;
37
4
  const response_normalizer_1 = require("./response-normalizer");
38
- const crypto = __importStar(require("crypto"));
5
+ const hash_utils_1 = require("../utils/hash-utils");
39
6
  class BlockManager {
40
7
  constructor(client) {
41
8
  this.blockRegistry = new Map();
42
9
  this.client = client;
43
10
  }
44
- /**
45
- * Generates a content hash for version detection
46
- */
47
- generateContentHash(content) {
48
- return crypto.createHash('sha256').update(content).digest('hex').substring(0, 16);
49
- }
50
11
  /**
51
12
  * Loads existing blocks from the server and builds the registry
52
13
  */
@@ -55,229 +16,127 @@ class BlockManager {
55
16
  const blockList = (0, response_normalizer_1.normalizeResponse)(blocks);
56
17
  for (const block of blockList) {
57
18
  if (block.label && block.value) {
58
- const contentHash = this.generateContentHash(block.value);
59
- const version = this.parseVersionFromLabel(block.label);
19
+ const contentHash = (0, hash_utils_1.generateContentHash)(block.value);
60
20
  const isShared = block.label.startsWith('shared_');
61
- const blockVersion = {
21
+ const blockInfo = {
62
22
  id: block.id,
63
23
  label: block.label,
64
24
  description: block.description || '',
65
25
  value: block.value,
66
26
  limit: block.limit || 0,
67
27
  contentHash,
68
- version,
69
- isShared,
70
- lastUpdated: block.updated_at || new Date().toISOString(),
71
- userDefined: false // We can't know if existing blocks had user-defined versions
28
+ isShared
72
29
  };
73
- this.blockRegistry.set(this.getBlockKey(block.label, isShared), blockVersion);
30
+ this.blockRegistry.set(this.getBlockKey(block.label, isShared), blockInfo);
74
31
  }
75
32
  }
76
33
  }
77
- /**
78
- * Parses version string from block label (e.g., "block_name__v__20241202-a1b2c3d4" -> "20241202-a1b2c3d4")
79
- */
80
- parseVersionFromLabel(label) {
81
- const versionMatch = label.match(/__v__(.+)$/);
82
- return versionMatch ? versionMatch[1] : 'initial';
83
- }
84
34
  /**
85
35
  * Gets the registry key for a block
86
36
  */
87
- getBlockKey(baseName, isShared) {
88
- const cleanName = baseName.replace(/__v__.+$/, ''); // Remove version suffix
89
- return isShared ? `shared:${cleanName}` : cleanName;
90
- }
91
- /**
92
- * Generates a timestamp-based version string
93
- */
94
- generateTimestampVersion(contentHash) {
95
- const now = new Date();
96
- const timestamp = now.toISOString().slice(0, 10).replace(/-/g, ''); // YYYYMMDD
97
- const shortHash = contentHash.substring(0, 8);
98
- return `${timestamp}-${shortHash}`;
37
+ getBlockKey(label, isShared) {
38
+ return isShared ? `shared:${label}` : label;
99
39
  }
100
40
  /**
101
- * Validates and sanitizes user-defined version tags
102
- */
103
- validateUserVersion(version) {
104
- // Remove spaces, convert to lowercase, replace invalid chars with dashes
105
- return version.trim().toLowerCase().replace(/[^a-z0-9.-]/g, '-');
106
- }
107
- /**
108
- * Creates a versioned block label
109
- */
110
- createVersionedLabel(baseName, version, isFirstVersion = false) {
111
- return isFirstVersion && version === 'initial' ? baseName : `${baseName}__v__${version}`;
112
- }
113
- /**
114
- * Gets or creates a shared block, with enhanced versioning support
41
+ * Gets or creates a shared block, updating in-place if content changed
115
42
  */
116
43
  async getOrCreateSharedBlock(blockConfig) {
117
44
  const blockKey = this.getBlockKey(blockConfig.name, true);
118
- const contentHash = this.generateContentHash(blockConfig.value);
119
- // Check both shared and non-shared keys (blocks loaded from server may not have shared_ prefix)
45
+ const contentHash = (0, hash_utils_1.generateContentHash)(blockConfig.value);
46
+ // Check both shared and non-shared keys
120
47
  let existing = this.blockRegistry.get(blockKey);
121
48
  if (!existing) {
122
49
  existing = this.blockRegistry.get(this.getBlockKey(blockConfig.name, false));
123
50
  }
124
- // Determine version strategy
125
- let newVersion;
126
- let userDefined = false;
127
- if (blockConfig.version) {
128
- newVersion = this.validateUserVersion(blockConfig.version);
129
- userDefined = true;
130
- }
131
- else {
132
- newVersion = existing ? this.generateTimestampVersion(contentHash) : 'initial';
133
- }
134
51
  if (existing) {
135
- // Check if content has changed or user wants a specific version
136
- if (existing.contentHash === contentHash && !blockConfig.version) {
52
+ if (existing.contentHash === contentHash) {
137
53
  console.log(`Using existing shared block: ${existing.label}`);
138
54
  return existing.id;
139
55
  }
140
- else {
141
- // Content changed or user specified version
142
- const newLabel = this.createVersionedLabel(blockConfig.name, newVersion);
143
- const reason = blockConfig.version
144
- ? `user tagged as '${newVersion}'`
145
- : `content changed (${newVersion})`;
146
- console.log(`Creating shared block ${newLabel} (${reason}, was ${existing.label})`);
147
- const newBlock = await this.client.createBlock({
148
- label: newLabel,
149
- description: blockConfig.description,
150
- value: blockConfig.value,
151
- limit: blockConfig.limit
152
- });
153
- const blockVersion = {
154
- id: newBlock.id,
155
- label: newLabel,
156
- description: blockConfig.description,
157
- value: blockConfig.value,
158
- limit: blockConfig.limit,
159
- contentHash,
160
- version: newVersion,
161
- isShared: true,
162
- lastUpdated: new Date().toISOString(),
163
- userDefined
164
- };
165
- this.blockRegistry.set(blockKey, blockVersion);
166
- return newBlock.id;
167
- }
168
- }
169
- else {
170
- // Create new shared block
171
- const isFirstVersion = newVersion === 'initial';
172
- const newLabel = this.createVersionedLabel(blockConfig.name, newVersion, isFirstVersion);
173
- console.log(`Creating new shared block: ${newLabel}${userDefined ? ` (tagged: ${newVersion})` : ''}`);
174
- const newBlock = await this.client.createBlock({
175
- label: newLabel,
176
- description: blockConfig.description,
56
+ // Content changed - update in-place
57
+ console.log(`Updating shared block: ${existing.label}`);
58
+ await this.client.updateBlock(existing.id, {
177
59
  value: blockConfig.value,
60
+ description: blockConfig.description,
178
61
  limit: blockConfig.limit
179
62
  });
180
- const blockVersion = {
181
- id: newBlock.id,
182
- label: newLabel,
183
- description: blockConfig.description,
184
- value: blockConfig.value,
185
- limit: blockConfig.limit,
186
- contentHash,
187
- version: newVersion,
188
- isShared: true,
189
- lastUpdated: new Date().toISOString(),
190
- userDefined
191
- };
192
- this.blockRegistry.set(blockKey, blockVersion);
193
- return newBlock.id;
63
+ // Update registry
64
+ existing.value = blockConfig.value;
65
+ existing.contentHash = contentHash;
66
+ existing.description = blockConfig.description;
67
+ existing.limit = blockConfig.limit;
68
+ return existing.id;
194
69
  }
70
+ // Create new block
71
+ console.log(`Creating new shared block: ${blockConfig.name}`);
72
+ const newBlock = await this.client.createBlock({
73
+ label: blockConfig.name,
74
+ description: blockConfig.description,
75
+ value: blockConfig.value,
76
+ limit: blockConfig.limit
77
+ });
78
+ const blockInfo = {
79
+ id: newBlock.id,
80
+ label: blockConfig.name,
81
+ description: blockConfig.description,
82
+ value: blockConfig.value,
83
+ limit: blockConfig.limit,
84
+ contentHash,
85
+ isShared: true
86
+ };
87
+ this.blockRegistry.set(blockKey, blockInfo);
88
+ return newBlock.id;
195
89
  }
196
90
  /**
197
- * Gets or creates an agent-specific block with enhanced versioning
91
+ * Gets or creates an agent-specific block, updating in-place if content changed
198
92
  */
199
- async getOrCreateAgentBlock(blockConfig, agentName) {
200
- const fullBlockName = `${blockConfig.name}`;
201
- const blockKey = this.getBlockKey(fullBlockName, false);
202
- const contentHash = this.generateContentHash(blockConfig.value);
93
+ async getOrCreateAgentBlock(blockConfig, _agentName) {
94
+ const blockKey = this.getBlockKey(blockConfig.name, false);
95
+ const contentHash = (0, hash_utils_1.generateContentHash)(blockConfig.value);
203
96
  const existing = this.blockRegistry.get(blockKey);
204
- // Determine version strategy
205
- let newVersion;
206
- let userDefined = false;
207
- if (blockConfig.version) {
208
- newVersion = this.validateUserVersion(blockConfig.version);
209
- userDefined = true;
210
- }
211
- else {
212
- newVersion = existing ? this.generateTimestampVersion(contentHash) : 'initial';
213
- }
214
97
  if (existing) {
215
- // Check if content has changed or user wants a specific version
216
- if (existing.contentHash === contentHash && !blockConfig.version) {
98
+ if (existing.contentHash === contentHash) {
217
99
  console.log(`Using existing block: ${existing.label}`);
218
100
  return existing.id;
219
101
  }
220
- else {
221
- // Content changed or user specified version
222
- const newLabel = this.createVersionedLabel(fullBlockName, newVersion);
223
- const reason = blockConfig.version
224
- ? `user tagged as '${newVersion}'`
225
- : `content changed (${newVersion})`;
226
- console.log(`Creating block ${newLabel} (${reason}, was ${existing.label})`);
227
- const newBlock = await this.client.createBlock({
228
- label: newLabel,
229
- description: blockConfig.description,
230
- value: blockConfig.value,
231
- limit: blockConfig.limit
232
- });
233
- const blockVersion = {
234
- id: newBlock.id,
235
- label: newLabel,
236
- description: blockConfig.description,
237
- value: blockConfig.value,
238
- limit: blockConfig.limit,
239
- contentHash,
240
- version: newVersion,
241
- isShared: false,
242
- lastUpdated: new Date().toISOString(),
243
- userDefined
244
- };
245
- this.blockRegistry.set(blockKey, blockVersion);
246
- return newBlock.id;
247
- }
248
- }
249
- else {
250
- // Create new agent block
251
- const isFirstVersion = newVersion === 'initial';
252
- const newLabel = this.createVersionedLabel(fullBlockName, newVersion, isFirstVersion);
253
- console.log(`Creating new block: ${newLabel}${userDefined ? ` (tagged: ${newVersion})` : ''}`);
254
- const newBlock = await this.client.createBlock({
255
- label: newLabel,
256
- description: blockConfig.description,
102
+ // Content changed - update in-place
103
+ console.log(`Updating block: ${existing.label}`);
104
+ await this.client.updateBlock(existing.id, {
257
105
  value: blockConfig.value,
106
+ description: blockConfig.description,
258
107
  limit: blockConfig.limit
259
108
  });
260
- const blockVersion = {
261
- id: newBlock.id,
262
- label: newLabel,
263
- description: blockConfig.description,
264
- value: blockConfig.value,
265
- limit: blockConfig.limit,
266
- contentHash,
267
- version: newVersion,
268
- isShared: false,
269
- lastUpdated: new Date().toISOString(),
270
- userDefined
271
- };
272
- this.blockRegistry.set(blockKey, blockVersion);
273
- return newBlock.id;
109
+ // Update registry
110
+ existing.value = blockConfig.value;
111
+ existing.contentHash = contentHash;
112
+ existing.description = blockConfig.description;
113
+ existing.limit = blockConfig.limit;
114
+ return existing.id;
274
115
  }
116
+ // Create new block
117
+ console.log(`Creating new block: ${blockConfig.name}`);
118
+ const newBlock = await this.client.createBlock({
119
+ label: blockConfig.name,
120
+ description: blockConfig.description,
121
+ value: blockConfig.value,
122
+ limit: blockConfig.limit
123
+ });
124
+ const blockInfo = {
125
+ id: newBlock.id,
126
+ label: blockConfig.name,
127
+ description: blockConfig.description,
128
+ value: blockConfig.value,
129
+ limit: blockConfig.limit,
130
+ contentHash,
131
+ isShared: false
132
+ };
133
+ this.blockRegistry.set(blockKey, blockInfo);
134
+ return newBlock.id;
275
135
  }
276
136
  /**
277
137
  * Gets the shared block ID by name
278
138
  */
279
139
  getSharedBlockId(blockName) {
280
- // Check both shared and non-shared keys
281
140
  let existing = this.blockRegistry.get(this.getBlockKey(blockName, true));
282
141
  if (!existing) {
283
142
  existing = this.blockRegistry.get(this.getBlockKey(blockName, false));
@@ -288,12 +147,11 @@ class BlockManager {
288
147
  * Gets agent block ID by name if it exists
289
148
  */
290
149
  getAgentBlockId(blockName) {
291
- const blockKey = this.getBlockKey(blockName, false);
292
- const existing = this.blockRegistry.get(blockKey);
150
+ const existing = this.blockRegistry.get(this.getBlockKey(blockName, false));
293
151
  return existing ? existing.id : null;
294
152
  }
295
153
  /**
296
- * Lists all block versions for debugging/reporting
154
+ * Lists all blocks for debugging/reporting
297
155
  */
298
156
  getBlockRegistry() {
299
157
  return new Map(this.blockRegistry);
@@ -1 +1 @@
1
- {"version":3,"file":"block-manager.js","sourceRoot":"","sources":["../../src/lib/block-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"block-manager.js","sourceRoot":"","sources":["../../src/lib/block-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { LettaClientWrapper } from './letta-client';
2
+ import { BlockManager } from './block-manager';
3
+ import { ToolDiff, BlockDiff, FolderDiff } from './diff-engine';
4
+ export declare function analyzeToolChanges(currentTools: any[], desiredToolNames: string[], toolRegistry: Map<string, string>, toolSourceHashes?: Record<string, string>): Promise<ToolDiff>;
5
+ export declare function analyzeBlockChanges(currentBlocks: any[], desiredBlocks: Array<{
6
+ name: string;
7
+ isShared?: boolean;
8
+ description?: string;
9
+ limit?: number;
10
+ value?: string;
11
+ }>, blockManager: BlockManager, agentName?: string): Promise<BlockDiff>;
12
+ export declare function analyzeFolderChanges(currentFolders: any[], desiredFolders: Array<{
13
+ name: string;
14
+ files: string[];
15
+ fileContentHashes?: Record<string, string>;
16
+ }>, folderRegistry: Map<string, string>, client: LettaClientWrapper): Promise<FolderDiff>;
17
+ //# sourceMappingURL=diff-analyzers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-analyzers.d.ts","sourceRoot":"","sources":["../../src/lib/diff-analyzers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAMhE,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,GAAG,EAAE,EACnB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,gBAAgB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAC5C,OAAO,CAAC,QAAQ,CAAC,CAiDnB;AAED,wBAAsB,mBAAmB,CACvC,aAAa,EAAE,GAAG,EAAE,EACpB,aAAa,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAChH,YAAY,EAAE,YAAY,EAC1B,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,CAAC,CA8CpB;AAED,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,GAAG,EAAE,EACrB,cAAc,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,EACpG,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,UAAU,CAAC,CAsFrB"}
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.analyzeToolChanges = analyzeToolChanges;
4
+ exports.analyzeBlockChanges = analyzeBlockChanges;
5
+ exports.analyzeFolderChanges = analyzeFolderChanges;
6
+ const response_normalizer_1 = require("./response-normalizer");
7
+ function hasFileBasedContent(itemName, fileHashes) {
8
+ return !!fileHashes[itemName];
9
+ }
10
+ async function analyzeToolChanges(currentTools, desiredToolNames, toolRegistry, toolSourceHashes = {}) {
11
+ const currentToolNames = new Set(currentTools.map(t => t.name));
12
+ const desiredToolSet = new Set(desiredToolNames);
13
+ const toAdd = [];
14
+ const toRemove = [];
15
+ const toUpdate = [];
16
+ const unchanged = [];
17
+ // Find tools to add
18
+ for (const toolName of desiredToolNames) {
19
+ if (!currentToolNames.has(toolName)) {
20
+ const toolId = toolRegistry.get(toolName);
21
+ if (toolId) {
22
+ toAdd.push({ name: toolName, id: toolId });
23
+ }
24
+ }
25
+ }
26
+ // Find tools to remove, update (source code changed), or leave unchanged
27
+ for (const tool of currentTools) {
28
+ if (desiredToolSet.has(tool.name)) {
29
+ const toolName = tool.name;
30
+ if (hasFileBasedContent(toolName, toolSourceHashes) && !['archival_memory_insert', 'archival_memory_search'].includes(toolName)) {
31
+ console.log(`Tool ${toolName} has file-based content, checking for updates...`);
32
+ const currentToolId = tool.id;
33
+ const newToolId = toolRegistry.get(toolName);
34
+ if (newToolId && newToolId !== currentToolId) {
35
+ toUpdate.push({
36
+ name: toolName,
37
+ currentId: currentToolId,
38
+ newId: newToolId,
39
+ reason: 'source_code_changed'
40
+ });
41
+ }
42
+ else {
43
+ unchanged.push({ name: toolName, id: currentToolId });
44
+ }
45
+ }
46
+ else {
47
+ unchanged.push({ name: tool.name, id: tool.id });
48
+ }
49
+ }
50
+ else {
51
+ toRemove.push({ name: tool.name, id: tool.id });
52
+ }
53
+ }
54
+ return { toAdd, toRemove, toUpdate, unchanged };
55
+ }
56
+ async function analyzeBlockChanges(currentBlocks, desiredBlocks, blockManager, agentName) {
57
+ const currentBlockNames = new Set(currentBlocks.map(b => b.label));
58
+ const desiredBlockNames = new Set(desiredBlocks.map(b => b.name));
59
+ const toAdd = [];
60
+ const toRemove = [];
61
+ const toUpdate = [];
62
+ const unchanged = [];
63
+ // Find blocks to add
64
+ for (const blockConfig of desiredBlocks) {
65
+ if (!currentBlockNames.has(blockConfig.name)) {
66
+ let blockId = blockConfig.isShared
67
+ ? blockManager.getSharedBlockId(blockConfig.name)
68
+ : blockManager.getAgentBlockId(blockConfig.name);
69
+ // If block doesn't exist yet, create it
70
+ if (!blockId && !blockConfig.isShared && blockConfig.description && agentName) {
71
+ console.log(`Creating new memory block: ${blockConfig.name} for agent ${agentName}`);
72
+ blockId = await blockManager.getOrCreateAgentBlock({
73
+ name: blockConfig.name,
74
+ description: blockConfig.description,
75
+ limit: blockConfig.limit || 2000,
76
+ value: blockConfig.value || ''
77
+ }, agentName);
78
+ }
79
+ if (blockId) {
80
+ toAdd.push({ name: blockConfig.name, id: blockId });
81
+ }
82
+ }
83
+ }
84
+ // Find blocks to remove or mark as unchanged
85
+ for (const block of currentBlocks) {
86
+ if (desiredBlockNames.has(block.label)) {
87
+ unchanged.push({ name: block.label, id: block.id });
88
+ }
89
+ else {
90
+ toRemove.push({ name: block.label, id: block.id });
91
+ }
92
+ }
93
+ return { toAdd, toRemove, toUpdate, unchanged };
94
+ }
95
+ async function analyzeFolderChanges(currentFolders, desiredFolders, folderRegistry, client) {
96
+ const currentFolderNames = new Set(currentFolders.map(f => f.name));
97
+ const desiredFolderNames = new Set(desiredFolders.map(f => f.name));
98
+ const toAttach = [];
99
+ const toDetach = [];
100
+ const toUpdate = [];
101
+ const unchanged = [];
102
+ // Find folders to attach (new folders)
103
+ for (const folderConfig of desiredFolders) {
104
+ if (!currentFolderNames.has(folderConfig.name)) {
105
+ const folderId = folderRegistry.get(folderConfig.name);
106
+ if (folderId) {
107
+ toAttach.push({ name: folderConfig.name, id: folderId });
108
+ }
109
+ }
110
+ }
111
+ // Find folders to detach, update, or leave unchanged
112
+ for (const folder of currentFolders) {
113
+ if (desiredFolderNames.has(folder.name)) {
114
+ const desiredFolder = desiredFolders.find(f => f.name === folder.name);
115
+ if (desiredFolder && desiredFolder.fileContentHashes) {
116
+ try {
117
+ const currentFilesResponse = await client.listFolderFiles(folder.id);
118
+ const currentFiles = (0, response_normalizer_1.normalizeResponse)(currentFilesResponse);
119
+ const currentFileNames = new Set(currentFiles.map((f) => f.name || f.file_name || String(f)).filter(Boolean));
120
+ const desiredFileNames = new Set(desiredFolder.files);
121
+ const filesToAdd = [];
122
+ const filesToRemove = [];
123
+ const filesToUpdate = [];
124
+ // Find files to add or update
125
+ for (const filePath of desiredFolder.files) {
126
+ const fileName = filePath.split('/').pop() || filePath;
127
+ if (!currentFileNames.has(fileName)) {
128
+ filesToAdd.push(filePath);
129
+ }
130
+ else {
131
+ if (hasFileBasedContent(filePath, desiredFolder.fileContentHashes || {})) {
132
+ console.log(`File ${filePath} has file-based content, checking for updates...`);
133
+ filesToUpdate.push(filePath);
134
+ }
135
+ }
136
+ }
137
+ // Find files to remove
138
+ for (const currentFile of currentFiles) {
139
+ const fileName = currentFile.name || currentFile.file_name || String(currentFile);
140
+ if (fileName && !desiredFileNames.has(fileName)) {
141
+ filesToRemove.push(fileName);
142
+ }
143
+ }
144
+ if (filesToAdd.length > 0 || filesToRemove.length > 0 || filesToUpdate.length > 0) {
145
+ toUpdate.push({
146
+ name: folder.name,
147
+ id: folder.id,
148
+ filesToAdd,
149
+ filesToRemove,
150
+ filesToUpdate
151
+ });
152
+ }
153
+ else {
154
+ unchanged.push({ name: folder.name, id: folder.id });
155
+ }
156
+ }
157
+ catch (error) {
158
+ console.warn(`Could not analyze files in folder ${folder.name}:`, error);
159
+ unchanged.push({ name: folder.name, id: folder.id });
160
+ }
161
+ }
162
+ else {
163
+ unchanged.push({ name: folder.name, id: folder.id });
164
+ }
165
+ }
166
+ else {
167
+ toDetach.push({ name: folder.name, id: folder.id });
168
+ }
169
+ }
170
+ return { toAttach, toDetach, toUpdate, unchanged };
171
+ }
172
+ //# sourceMappingURL=diff-analyzers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-analyzers.js","sourceRoot":"","sources":["../../src/lib/diff-analyzers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { LettaClientWrapper } from './letta-client';
2
+ import { AgentUpdateOperations } from './diff-engine';
3
+ /**
4
+ * DiffApplier applies update operations to agents
5
+ */
6
+ export declare class DiffApplier {
7
+ private client;
8
+ private basePath;
9
+ constructor(client: LettaClientWrapper, basePath?: string);
10
+ /**
11
+ * Applies the update operations to the agent
12
+ */
13
+ applyUpdateOperations(agentId: string, operations: AgentUpdateOperations, verbose?: boolean): Promise<void>;
14
+ /**
15
+ * Helper method to add a file to an existing folder
16
+ */
17
+ private addFileToFolder;
18
+ /**
19
+ * Helper method to remove a file from a folder
20
+ */
21
+ private removeFileFromFolder;
22
+ /**
23
+ * Helper method to update an existing file in a folder
24
+ */
25
+ private updateFileInFolder;
26
+ }
27
+ //# sourceMappingURL=diff-applier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-applier.d.ts","sourceRoot":"","sources":["../../src/lib/diff-applier.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,kBAAkB,EAAE,QAAQ,GAAE,MAAW;IAK7D;;OAEG;IACG,qBAAqB,CACzB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,IAAI,CAAC;IAwGhB;;OAEG;YACW,eAAe;IAY7B;;OAEG;YACW,oBAAoB;IAYlC;;OAEG;YACW,kBAAkB;CAYjC"}