lettactl 0.1.1

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 (95) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +606 -0
  3. package/dist/commands/apply.d.ts +6 -0
  4. package/dist/commands/apply.d.ts.map +1 -0
  5. package/dist/commands/apply.js +337 -0
  6. package/dist/commands/apply.js.map +1 -0
  7. package/dist/commands/create.d.ts +13 -0
  8. package/dist/commands/create.d.ts.map +1 -0
  9. package/dist/commands/create.js +72 -0
  10. package/dist/commands/create.js.map +1 -0
  11. package/dist/commands/delete.d.ts +9 -0
  12. package/dist/commands/delete.d.ts.map +1 -0
  13. package/dist/commands/delete.js +179 -0
  14. package/dist/commands/delete.js.map +1 -0
  15. package/dist/commands/describe.d.ts +5 -0
  16. package/dist/commands/describe.d.ts.map +1 -0
  17. package/dist/commands/describe.js +121 -0
  18. package/dist/commands/describe.js.map +1 -0
  19. package/dist/commands/export.d.ts +6 -0
  20. package/dist/commands/export.d.ts.map +1 -0
  21. package/dist/commands/export.js +79 -0
  22. package/dist/commands/export.js.map +1 -0
  23. package/dist/commands/get.d.ts +5 -0
  24. package/dist/commands/get.d.ts.map +1 -0
  25. package/dist/commands/get.js +32 -0
  26. package/dist/commands/get.js.map +1 -0
  27. package/dist/commands/import.d.ts +10 -0
  28. package/dist/commands/import.d.ts.map +1 -0
  29. package/dist/commands/import.js +94 -0
  30. package/dist/commands/import.js.map +1 -0
  31. package/dist/commands/messages.d.ts +21 -0
  32. package/dist/commands/messages.d.ts.map +1 -0
  33. package/dist/commands/messages.js +254 -0
  34. package/dist/commands/messages.js.map +1 -0
  35. package/dist/commands/update.d.ts +11 -0
  36. package/dist/commands/update.d.ts.map +1 -0
  37. package/dist/commands/update.js +63 -0
  38. package/dist/commands/update.js.map +1 -0
  39. package/dist/index.d.ts +3 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +230 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/lib/agent-manager.d.ts +125 -0
  44. package/dist/lib/agent-manager.d.ts.map +1 -0
  45. package/dist/lib/agent-manager.js +254 -0
  46. package/dist/lib/agent-manager.js.map +1 -0
  47. package/dist/lib/agent-resolver.d.ts +12 -0
  48. package/dist/lib/agent-resolver.d.ts.map +1 -0
  49. package/dist/lib/agent-resolver.js +27 -0
  50. package/dist/lib/agent-resolver.js.map +1 -0
  51. package/dist/lib/block-manager.d.ts +63 -0
  52. package/dist/lib/block-manager.d.ts.map +1 -0
  53. package/dist/lib/block-manager.js +288 -0
  54. package/dist/lib/block-manager.js.map +1 -0
  55. package/dist/lib/diff-engine.d.ts +129 -0
  56. package/dist/lib/diff-engine.d.ts.map +1 -0
  57. package/dist/lib/diff-engine.js +391 -0
  58. package/dist/lib/diff-engine.js.map +1 -0
  59. package/dist/lib/error-handler.d.ts +9 -0
  60. package/dist/lib/error-handler.d.ts.map +1 -0
  61. package/dist/lib/error-handler.js +25 -0
  62. package/dist/lib/error-handler.js.map +1 -0
  63. package/dist/lib/file-content-tracker.d.ts +42 -0
  64. package/dist/lib/file-content-tracker.d.ts.map +1 -0
  65. package/dist/lib/file-content-tracker.js +128 -0
  66. package/dist/lib/file-content-tracker.js.map +1 -0
  67. package/dist/lib/fleet-parser.d.ts +14 -0
  68. package/dist/lib/fleet-parser.d.ts.map +1 -0
  69. package/dist/lib/fleet-parser.js +282 -0
  70. package/dist/lib/fleet-parser.js.map +1 -0
  71. package/dist/lib/letta-client.d.ts +61 -0
  72. package/dist/lib/letta-client.d.ts.map +1 -0
  73. package/dist/lib/letta-client.js +208 -0
  74. package/dist/lib/letta-client.js.map +1 -0
  75. package/dist/lib/output-formatter.d.ts +15 -0
  76. package/dist/lib/output-formatter.d.ts.map +1 -0
  77. package/dist/lib/output-formatter.js +51 -0
  78. package/dist/lib/output-formatter.js.map +1 -0
  79. package/dist/lib/resource-classifier.d.ts +27 -0
  80. package/dist/lib/resource-classifier.d.ts.map +1 -0
  81. package/dist/lib/resource-classifier.js +84 -0
  82. package/dist/lib/resource-classifier.js.map +1 -0
  83. package/dist/lib/response-normalizer.d.ts +6 -0
  84. package/dist/lib/response-normalizer.d.ts.map +1 -0
  85. package/dist/lib/response-normalizer.js +27 -0
  86. package/dist/lib/response-normalizer.js.map +1 -0
  87. package/dist/lib/validators.d.ts +9 -0
  88. package/dist/lib/validators.d.ts.map +1 -0
  89. package/dist/lib/validators.js +26 -0
  90. package/dist/lib/validators.js.map +1 -0
  91. package/dist/types/fleet-config.d.ts +44 -0
  92. package/dist/types/fleet-config.d.ts.map +1 -0
  93. package/dist/types/fleet-config.js +3 -0
  94. package/dist/types/fleet-config.js.map +1 -0
  95. package/package.json +61 -0
@@ -0,0 +1,254 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listMessagesCommand = listMessagesCommand;
4
+ exports.sendMessageCommand = sendMessageCommand;
5
+ exports.resetMessagesCommand = resetMessagesCommand;
6
+ exports.compactMessagesCommand = compactMessagesCommand;
7
+ exports.cancelMessagesCommand = cancelMessagesCommand;
8
+ const letta_client_1 = require("../lib/letta-client");
9
+ const agent_resolver_1 = require("../lib/agent-resolver");
10
+ const response_normalizer_1 = require("../lib/response-normalizer");
11
+ // Helper function to safely extract content from different message types
12
+ function getMessageContent(message) {
13
+ // Try different properties that might contain the message content
14
+ if (message.text)
15
+ return message.text;
16
+ if (message.content) {
17
+ if (typeof message.content === 'string')
18
+ return message.content;
19
+ if (Array.isArray(message.content)) {
20
+ // Handle content arrays (multi-modal content)
21
+ return message.content
22
+ .map((item) => item.text || item.content || '[Non-text content]')
23
+ .join(' ');
24
+ }
25
+ return JSON.stringify(message.content);
26
+ }
27
+ if (message.message && typeof message.message === 'string')
28
+ return message.message;
29
+ return null;
30
+ }
31
+ async function listMessagesCommand(agentName, options, command) {
32
+ const verbose = command.parent?.opts().verbose || false;
33
+ try {
34
+ const client = new letta_client_1.LettaClientWrapper();
35
+ const resolver = new agent_resolver_1.AgentResolver(client);
36
+ // Find the agent
37
+ const { agent } = await resolver.findAgentByName(agentName);
38
+ if (verbose) {
39
+ console.log(`Listing messages for agent: ${agent.name} (${agent.id})`);
40
+ }
41
+ // Prepare query options
42
+ const queryOptions = {};
43
+ if (options.limit)
44
+ queryOptions.limit = options.limit;
45
+ if (options.order)
46
+ queryOptions.order = options.order;
47
+ if (options.before)
48
+ queryOptions.before = options.before;
49
+ if (options.after)
50
+ queryOptions.after = options.after;
51
+ // Get messages
52
+ const response = await client.listMessages(agent.id, queryOptions);
53
+ const messages = (0, response_normalizer_1.normalizeResponse)(response);
54
+ if (options.output === 'json') {
55
+ console.log(JSON.stringify(messages, null, 2));
56
+ return;
57
+ }
58
+ if (messages.length === 0) {
59
+ console.log(`No messages found for agent ${agent.name}`);
60
+ return;
61
+ }
62
+ // Format as table
63
+ console.log(`Messages for ${agent.name}:`);
64
+ console.log(`Found ${messages.length} message(s)\n`);
65
+ for (const message of messages) {
66
+ const timestamp = message.created_at
67
+ ? new Date(message.created_at).toLocaleString()
68
+ : 'Unknown time';
69
+ console.log(`${timestamp}`);
70
+ console.log(` Role: ${message.role || 'unknown'}`);
71
+ // Handle different message content types
72
+ const content = getMessageContent(message);
73
+ if (content) {
74
+ const preview = content.length > 100
75
+ ? content.substring(0, 100) + '...'
76
+ : content;
77
+ console.log(` Content: ${preview}`);
78
+ }
79
+ else {
80
+ console.log(` Preview: [${message.message_type || message.role || 'Unknown type'}]`);
81
+ }
82
+ console.log('');
83
+ }
84
+ }
85
+ catch (error) {
86
+ console.error(`Failed to list messages for agent ${agentName}:`, error.message);
87
+ throw error;
88
+ }
89
+ }
90
+ async function sendMessageCommand(agentName, message, options, command) {
91
+ const verbose = command.parent?.opts().verbose || false;
92
+ try {
93
+ const client = new letta_client_1.LettaClientWrapper();
94
+ const resolver = new agent_resolver_1.AgentResolver(client);
95
+ // Find the agent
96
+ const { agent } = await resolver.findAgentByName(agentName);
97
+ if (verbose) {
98
+ console.log(`Sending message to agent: ${agent.name} (${agent.id})`);
99
+ console.log(`Message: ${message}`);
100
+ console.log(`Options: ${JSON.stringify(options, null, 2)}`);
101
+ }
102
+ const params = {
103
+ messages: [
104
+ {
105
+ role: 'user',
106
+ content: message
107
+ }
108
+ ]
109
+ };
110
+ if (options.maxSteps)
111
+ params.max_steps = options.maxSteps;
112
+ if (options.enableThinking)
113
+ params.enable_thinking = options.enableThinking;
114
+ let response;
115
+ if (options.async) {
116
+ // Async message
117
+ response = await client.createAsyncMessage(agent.id, params);
118
+ console.log(`Message sent asynchronously. Run ID: ${response.id}`);
119
+ console.log(`Status: ${response.status}`);
120
+ if (verbose) {
121
+ console.log('Full response:', JSON.stringify(response, null, 2));
122
+ }
123
+ }
124
+ else if (options.stream) {
125
+ // Streaming message
126
+ console.log(`Streaming response from ${agent.name}:`);
127
+ console.log('---');
128
+ response = await client.streamMessage(agent.id, { ...params, streaming: true });
129
+ // Handle streaming response
130
+ try {
131
+ for await (const chunk of response) {
132
+ // Use type assertion to handle dynamic chunk types
133
+ const chunkData = chunk;
134
+ if (chunkData.type === 'message_delta' && chunkData.content) {
135
+ process.stdout.write(chunkData.content);
136
+ }
137
+ else if (chunkData.text) {
138
+ process.stdout.write(chunkData.text);
139
+ }
140
+ else if (typeof chunk === 'string') {
141
+ process.stdout.write(chunk);
142
+ }
143
+ else {
144
+ // For debugging: show chunk structure
145
+ const content = getMessageContent(chunkData);
146
+ if (content) {
147
+ process.stdout.write(content);
148
+ }
149
+ }
150
+ }
151
+ console.log(); // New line after streaming
152
+ }
153
+ catch (streamError) {
154
+ console.log('\n[Streaming completed]');
155
+ }
156
+ console.log('---');
157
+ console.log('Stream completed');
158
+ }
159
+ else {
160
+ // Regular synchronous message
161
+ response = await client.createMessage(agent.id, params);
162
+ console.log(`Response from ${agent.name}:`);
163
+ console.log('---');
164
+ if (response.messages && response.messages.length > 0) {
165
+ const lastMessage = response.messages[response.messages.length - 1];
166
+ const messageContent = getMessageContent(lastMessage);
167
+ if (messageContent) {
168
+ console.log(messageContent);
169
+ }
170
+ else {
171
+ console.log('[Non-text response]');
172
+ }
173
+ }
174
+ else {
175
+ console.log('[No response content]');
176
+ }
177
+ console.log('---');
178
+ if (verbose && response.usage) {
179
+ console.log(`Tokens used: ${response.usage.total_tokens || 'unknown'}`);
180
+ console.log(`Stop reason: ${response.stop_reason || 'unknown'}`);
181
+ }
182
+ }
183
+ }
184
+ catch (error) {
185
+ console.error(`Failed to send message to agent ${agentName}:`, error.message);
186
+ throw error;
187
+ }
188
+ }
189
+ async function resetMessagesCommand(agentName, options, command) {
190
+ const verbose = command.parent?.opts().verbose || false;
191
+ try {
192
+ const client = new letta_client_1.LettaClientWrapper();
193
+ const resolver = new agent_resolver_1.AgentResolver(client);
194
+ // Find the agent
195
+ const { agent } = await resolver.findAgentByName(agentName);
196
+ if (verbose) {
197
+ console.log(`Resetting messages for agent: ${agent.name} (${agent.id})`);
198
+ console.log(`Add default messages: ${options.addDefault || false}`);
199
+ }
200
+ const response = await client.resetMessages(agent.id, options.addDefault);
201
+ console.log(`Messages reset for agent ${agent.name}`);
202
+ if (verbose && response) {
203
+ console.log('Agent state after reset:', JSON.stringify(response, null, 2));
204
+ }
205
+ }
206
+ catch (error) {
207
+ console.error(`Failed to reset messages for agent ${agentName}:`, error.message);
208
+ throw error;
209
+ }
210
+ }
211
+ async function compactMessagesCommand(agentName, _options, command) {
212
+ const verbose = command.parent?.opts().verbose || false;
213
+ try {
214
+ const client = new letta_client_1.LettaClientWrapper();
215
+ const resolver = new agent_resolver_1.AgentResolver(client);
216
+ // Find the agent
217
+ const { agent } = await resolver.findAgentByName(agentName);
218
+ if (verbose) {
219
+ console.log(`Compacting messages for agent: ${agent.name} (${agent.id})`);
220
+ }
221
+ await client.compactMessages(agent.id);
222
+ console.log(`Messages compacted for agent ${agent.name}`);
223
+ }
224
+ catch (error) {
225
+ console.error(`Failed to compact messages for agent ${agentName}:`, error.message);
226
+ throw error;
227
+ }
228
+ }
229
+ async function cancelMessagesCommand(agentName, options, command) {
230
+ const verbose = command.parent?.opts().verbose || false;
231
+ try {
232
+ const client = new letta_client_1.LettaClientWrapper();
233
+ const resolver = new agent_resolver_1.AgentResolver(client);
234
+ // Find the agent
235
+ const { agent } = await resolver.findAgentByName(agentName);
236
+ if (verbose) {
237
+ console.log(`Canceling messages for agent: ${agent.name} (${agent.id})`);
238
+ if (options.runIds) {
239
+ console.log(`Specific run IDs: ${options.runIds}`);
240
+ }
241
+ }
242
+ const runIds = options.runIds ? options.runIds.split(',').map(id => id.trim()) : undefined;
243
+ const response = await client.cancelMessages(agent.id, runIds);
244
+ console.log(`Messages canceled for agent ${agent.name}`);
245
+ if (verbose) {
246
+ console.log('Cancel response:', JSON.stringify(response, null, 2));
247
+ }
248
+ }
249
+ catch (error) {
250
+ console.error(`Failed to cancel messages for agent ${agentName}:`, error.message);
251
+ throw error;
252
+ }
253
+ }
254
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/commands/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export default function updateCommand(resource: string, name: string, options: {
2
+ name?: string;
3
+ description?: string;
4
+ model?: string;
5
+ system?: string;
6
+ contextWindow?: number;
7
+ embedding?: string;
8
+ timezone?: string;
9
+ tags?: string;
10
+ }, command: any): Promise<void>;
11
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAGA,wBAA8B,aAAa,CACzC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,EACD,OAAO,EAAE,GAAG,iBA0Db"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = updateCommand;
4
+ const letta_client_1 = require("../lib/letta-client");
5
+ const agent_resolver_1 = require("../lib/agent-resolver");
6
+ async function updateCommand(resource, name, options, command) {
7
+ const verbose = command.parent?.opts().verbose || false;
8
+ try {
9
+ if (resource !== 'agent') {
10
+ throw new Error('Only "agent" resource is currently supported for updates');
11
+ }
12
+ const client = new letta_client_1.LettaClientWrapper();
13
+ const resolver = new agent_resolver_1.AgentResolver(client);
14
+ // Find the agent
15
+ const { agent } = await resolver.findAgentByName(name);
16
+ if (verbose) {
17
+ console.log(`Updating agent: ${agent.name} (${agent.id})`);
18
+ }
19
+ // Build update payload
20
+ const updatePayload = {};
21
+ if (options.name)
22
+ updatePayload.name = options.name;
23
+ if (options.description)
24
+ updatePayload.description = options.description;
25
+ if (options.model)
26
+ updatePayload.model = options.model;
27
+ if (options.system)
28
+ updatePayload.system = options.system;
29
+ if (options.contextWindow)
30
+ updatePayload.context_window_limit = options.contextWindow;
31
+ if (options.embedding)
32
+ updatePayload.embedding = options.embedding;
33
+ if (options.timezone)
34
+ updatePayload.timezone = options.timezone;
35
+ if (options.tags) {
36
+ updatePayload.tags = options.tags.split(',').map(tag => tag.trim());
37
+ }
38
+ if (Object.keys(updatePayload).length === 0) {
39
+ console.log('No updates specified. Use --help to see available options.');
40
+ return;
41
+ }
42
+ if (verbose) {
43
+ console.log('Update payload:', JSON.stringify(updatePayload, null, 2));
44
+ }
45
+ // Update the agent
46
+ const updatedAgent = await client.updateAgent(agent.id, updatePayload);
47
+ console.log(`Agent ${agent.name} updated successfully`);
48
+ if (verbose) {
49
+ console.log(`Updated agent ID: ${updatedAgent.id}`);
50
+ if (updatePayload.name)
51
+ console.log(`Name changed to: ${updatePayload.name}`);
52
+ if (updatePayload.model)
53
+ console.log(`Model changed to: ${updatePayload.model}`);
54
+ if (updatePayload.embedding)
55
+ console.log(`Embedding changed to: ${updatePayload.embedding}`);
56
+ }
57
+ }
58
+ catch (error) {
59
+ console.error(`Failed to update agent ${name}:`, error.message);
60
+ throw error;
61
+ }
62
+ }
63
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":";;AAGA,gCAuEC;AA1ED,sDAAyD;AACzD,0DAAsD;AAEvC,KAAK,UAAU,aAAa,CACzC,QAAgB,EAChB,IAAY,EACZ,OASC,EACD,OAAY;IAEZ,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC;IAExD,IAAI,CAAC;QACH,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,iCAAkB,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,8BAAa,CAAC,MAAM,CAAC,CAAC;QAE3C,iBAAiB;QACjB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAEvD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7D,CAAC;QAED,uBAAuB;QACvB,MAAM,aAAa,GAAQ,EAAE,CAAC;QAE9B,IAAI,OAAO,CAAC,IAAI;YAAE,aAAa,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACpD,IAAI,OAAO,CAAC,WAAW;YAAE,aAAa,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACzE,IAAI,OAAO,CAAC,KAAK;YAAE,aAAa,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QACvD,IAAI,OAAO,CAAC,MAAM;YAAE,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC1D,IAAI,OAAO,CAAC,aAAa;YAAE,aAAa,CAAC,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC;QACtF,IAAI,OAAO,CAAC,SAAS;YAAE,aAAa,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnE,IAAI,OAAO,CAAC,QAAQ;YAAE,aAAa,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAChE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,aAAa,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC;QAED,mBAAmB;QACnB,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QAEvE,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,IAAI,uBAAuB,CAAC,CAAC;QAExD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,qBAAqB,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;YACpD,IAAI,aAAa,CAAC,IAAI;gBAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9E,IAAI,aAAa,CAAC,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;YACjF,IAAI,aAAa,CAAC,SAAS;gBAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;QAC/F,CAAC;IAEH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,0BAA0B,IAAI,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,230 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ const commander_1 = require("commander");
41
+ const apply_1 = require("./commands/apply");
42
+ const get_1 = __importDefault(require("./commands/get"));
43
+ const delete_1 = __importStar(require("./commands/delete"));
44
+ const describe_1 = __importDefault(require("./commands/describe"));
45
+ const update_1 = __importDefault(require("./commands/update"));
46
+ const export_1 = __importDefault(require("./commands/export"));
47
+ const import_1 = __importDefault(require("./commands/import"));
48
+ const create_1 = __importDefault(require("./commands/create"));
49
+ const messages_1 = require("./commands/messages");
50
+ // Validate required environment variables
51
+ function validateEnvironment() {
52
+ if (!process.env.LETTA_API_URL) {
53
+ console.error('Error: LETTA_API_URL environment variable is required');
54
+ console.error('Set it with: export LETTA_API_URL=http://localhost:8283');
55
+ process.exit(1);
56
+ }
57
+ // API key required unless localhost (self-hosting)
58
+ const isLocalhost = process.env.LETTA_API_URL.includes('localhost');
59
+ if (!isLocalhost && !process.env.LETTA_API_KEY) {
60
+ console.error(`Error: LETTA_API_KEY is required for Letta Cloud (${process.env.LETTA_API_URL})`);
61
+ console.error('Set it with: export LETTA_API_KEY=your_api_key');
62
+ process.exit(1);
63
+ }
64
+ }
65
+ const program = new commander_1.Command();
66
+ program
67
+ .name('lettactl')
68
+ .description('kubectl-style CLI for managing Letta AI agent fleets')
69
+ .version('0.1.0')
70
+ .option('-v, --verbose', 'enable verbose output')
71
+ .hook('preAction', validateEnvironment);
72
+ // Apply command - deploy fleet from YAML
73
+ program
74
+ .command('apply')
75
+ .description('Deploy agents from configuration')
76
+ .option('-f, --file <path>', 'agent YAML configuration file', 'agents.yml')
77
+ .option('--agent <pattern>', 'deploy only agents matching pattern')
78
+ .option('--dry-run', 'show what would be created without making changes')
79
+ .action(apply_1.applyCommand);
80
+ // Get command - list/show agents
81
+ program
82
+ .command('get')
83
+ .description('Display agents')
84
+ .argument('<resource>', 'resource type (agents)')
85
+ .argument('[name]', 'specific agent name (optional)')
86
+ .option('-o, --output <format>', 'output format (table|json|yaml)', 'table')
87
+ .action(get_1.default);
88
+ // Describe command - detailed agent info
89
+ program
90
+ .command('describe')
91
+ .description('Show detailed information about an agent')
92
+ .argument('<resource>', 'resource type (agent)')
93
+ .argument('<name>', 'agent name')
94
+ .option('-o, --output <format>', 'output format (table, json)', 'table')
95
+ .action(describe_1.default);
96
+ // Delete command - remove agents
97
+ program
98
+ .command('delete')
99
+ .description('Delete an agent')
100
+ .argument('<resource>', 'resource type (agent)')
101
+ .argument('<name>', 'agent name')
102
+ .option('--force', 'force deletion without confirmation')
103
+ .action(delete_1.default);
104
+ // Delete all command - bulk delete agents
105
+ program
106
+ .command('delete-all')
107
+ .description('Delete multiple agents (with optional pattern matching)')
108
+ .argument('<resource>', 'resource type (agent|agents)')
109
+ .option('--pattern <pattern>', 'regex pattern to match agent names/IDs')
110
+ .option('--force', 'force deletion without confirmation')
111
+ .action(delete_1.deleteAllCommand);
112
+ // Create command - create new agents
113
+ program
114
+ .command('create')
115
+ .description('Create a new agent')
116
+ .argument('<resource>', 'resource type (agent)')
117
+ .argument('<name>', 'agent name')
118
+ .option('-d, --description <text>', 'agent description')
119
+ .option('-m, --model <model>', 'LLM model (e.g., google_ai/gemini-2.5-pro)')
120
+ .option('-s, --system <text>', 'system prompt')
121
+ .option('-c, --context-window <number>', 'context window size', parseInt)
122
+ .option('-e, --embedding <embedding>', 'embedding model')
123
+ .option('-t, --timezone <timezone>', 'agent timezone')
124
+ .option('--tags <tags>', 'comma-separated tags')
125
+ .option('--agent-type <type>', 'agent type')
126
+ .option('--tools <tools>', 'comma-separated tool IDs')
127
+ .option('--memory-blocks <blocks>', 'comma-separated memory block IDs')
128
+ .action(create_1.default);
129
+ // Update command - modify existing agents
130
+ program
131
+ .command('update')
132
+ .description('Update an existing agent')
133
+ .argument('<resource>', 'resource type (agent)')
134
+ .argument('<name>', 'agent name')
135
+ .option('-n, --name <name>', 'new agent name')
136
+ .option('-d, --description <text>', 'new description')
137
+ .option('-m, --model <model>', 'new LLM model')
138
+ .option('-s, --system <text>', 'new system prompt')
139
+ .option('-c, --context-window <number>', 'new context window size', parseInt)
140
+ .option('-e, --embedding <embedding>', 'new embedding model')
141
+ .option('-t, --timezone <timezone>', 'new timezone')
142
+ .option('--tags <tags>', 'comma-separated tags')
143
+ .action(update_1.default);
144
+ // Export command - export agents to files
145
+ program
146
+ .command('export')
147
+ .description('Export an agent to a file')
148
+ .argument('<resource>', 'resource type (agent)')
149
+ .argument('<name>', 'agent name')
150
+ .option('-o, --output <file>', 'output filename')
151
+ .option('--max-steps <number>', 'maximum steps to export', parseInt)
152
+ .option('--legacy-format', 'use legacy v1 format')
153
+ .action(export_1.default);
154
+ // Import command - import agents from files
155
+ program
156
+ .command('import')
157
+ .description('Import an agent from a file')
158
+ .argument('<file>', 'path to agent export file')
159
+ .option('-n, --name <name>', 'override agent name')
160
+ .option('--append-copy', 'append "_copy" suffix to agent name')
161
+ .option('-e, --embedding <embedding>', 'override embedding model')
162
+ .option('--override-tools', 'allow overwriting existing tool source code')
163
+ .option('--strip-messages', 'remove agent messages during import')
164
+ .option('--secrets <json>', 'secrets JSON string')
165
+ .option('--env-vars <json>', 'environment variables JSON string')
166
+ .action(import_1.default);
167
+ // Validate command - check YAML config
168
+ program
169
+ .command('validate')
170
+ .description('Validate agent configuration')
171
+ .option('-f, --file <path>', 'agent YAML configuration file', 'agents.yml')
172
+ .action(async (options) => {
173
+ console.log('Validate command:', options);
174
+ // TODO: Implement validate logic
175
+ });
176
+ // Message commands
177
+ // List messages (replaces old logs command)
178
+ program
179
+ .command('messages')
180
+ .description('List agent conversation messages')
181
+ .argument('<agent>', 'agent name')
182
+ .option('-l, --limit <number>', 'number of messages to show', parseInt)
183
+ .option('--order <order>', 'sort order (asc|desc)', 'desc')
184
+ .option('--before <id>', 'show messages before this message ID')
185
+ .option('--after <id>', 'show messages after this message ID')
186
+ .option('-o, --output <format>', 'output format (table|json)', 'table')
187
+ .action(messages_1.listMessagesCommand);
188
+ // Send message to agent
189
+ program
190
+ .command('send')
191
+ .description('Send a message to an agent')
192
+ .argument('<agent>', 'agent name')
193
+ .argument('<message>', 'message to send')
194
+ .option('--stream', 'stream the response')
195
+ .option('--async', 'send message asynchronously')
196
+ .option('--max-steps <number>', 'maximum processing steps', parseInt)
197
+ .option('--enable-thinking', 'enable agent reasoning')
198
+ .action(messages_1.sendMessageCommand);
199
+ // Reset agent messages
200
+ program
201
+ .command('reset-messages')
202
+ .description('Reset an agent\'s conversation history')
203
+ .argument('<agent>', 'agent name')
204
+ .option('--add-default', 'add default initial messages after reset')
205
+ .action(messages_1.resetMessagesCommand);
206
+ // Compact agent messages
207
+ program
208
+ .command('compact-messages')
209
+ .description('Compact an agent\'s conversation history')
210
+ .argument('<agent>', 'agent name')
211
+ .action(messages_1.compactMessagesCommand);
212
+ // Cancel running messages
213
+ program
214
+ .command('cancel-messages')
215
+ .description('Cancel running message processes for an agent')
216
+ .argument('<agent>', 'agent name')
217
+ .option('--run-ids <ids>', 'comma-separated run IDs to cancel')
218
+ .action(messages_1.cancelMessagesCommand);
219
+ // Config command - show current Letta config
220
+ program
221
+ .command('config')
222
+ .description('Manage Letta configuration')
223
+ .command('view')
224
+ .description('Show current Letta configuration')
225
+ .action(async () => {
226
+ console.log('Config view command');
227
+ // TODO: Implement config view logic
228
+ });
229
+ program.parse();
230
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}