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.
- package/LICENSE +21 -0
- package/README.md +606 -0
- package/dist/commands/apply.d.ts +6 -0
- package/dist/commands/apply.d.ts.map +1 -0
- package/dist/commands/apply.js +337 -0
- package/dist/commands/apply.js.map +1 -0
- package/dist/commands/create.d.ts +13 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +72 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/delete.d.ts +9 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +179 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/describe.d.ts +5 -0
- package/dist/commands/describe.d.ts.map +1 -0
- package/dist/commands/describe.js +121 -0
- package/dist/commands/describe.js.map +1 -0
- package/dist/commands/export.d.ts +6 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +79 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/get.d.ts +5 -0
- package/dist/commands/get.d.ts.map +1 -0
- package/dist/commands/get.js +32 -0
- package/dist/commands/get.js.map +1 -0
- package/dist/commands/import.d.ts +10 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +94 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/messages.d.ts +21 -0
- package/dist/commands/messages.d.ts.map +1 -0
- package/dist/commands/messages.js +254 -0
- package/dist/commands/messages.js.map +1 -0
- package/dist/commands/update.d.ts +11 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +63 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +230 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/agent-manager.d.ts +125 -0
- package/dist/lib/agent-manager.d.ts.map +1 -0
- package/dist/lib/agent-manager.js +254 -0
- package/dist/lib/agent-manager.js.map +1 -0
- package/dist/lib/agent-resolver.d.ts +12 -0
- package/dist/lib/agent-resolver.d.ts.map +1 -0
- package/dist/lib/agent-resolver.js +27 -0
- package/dist/lib/agent-resolver.js.map +1 -0
- package/dist/lib/block-manager.d.ts +63 -0
- package/dist/lib/block-manager.d.ts.map +1 -0
- package/dist/lib/block-manager.js +288 -0
- package/dist/lib/block-manager.js.map +1 -0
- package/dist/lib/diff-engine.d.ts +129 -0
- package/dist/lib/diff-engine.d.ts.map +1 -0
- package/dist/lib/diff-engine.js +391 -0
- package/dist/lib/diff-engine.js.map +1 -0
- package/dist/lib/error-handler.d.ts +9 -0
- package/dist/lib/error-handler.d.ts.map +1 -0
- package/dist/lib/error-handler.js +25 -0
- package/dist/lib/error-handler.js.map +1 -0
- package/dist/lib/file-content-tracker.d.ts +42 -0
- package/dist/lib/file-content-tracker.d.ts.map +1 -0
- package/dist/lib/file-content-tracker.js +128 -0
- package/dist/lib/file-content-tracker.js.map +1 -0
- package/dist/lib/fleet-parser.d.ts +14 -0
- package/dist/lib/fleet-parser.d.ts.map +1 -0
- package/dist/lib/fleet-parser.js +282 -0
- package/dist/lib/fleet-parser.js.map +1 -0
- package/dist/lib/letta-client.d.ts +61 -0
- package/dist/lib/letta-client.d.ts.map +1 -0
- package/dist/lib/letta-client.js +208 -0
- package/dist/lib/letta-client.js.map +1 -0
- package/dist/lib/output-formatter.d.ts +15 -0
- package/dist/lib/output-formatter.d.ts.map +1 -0
- package/dist/lib/output-formatter.js +51 -0
- package/dist/lib/output-formatter.js.map +1 -0
- package/dist/lib/resource-classifier.d.ts +27 -0
- package/dist/lib/resource-classifier.d.ts.map +1 -0
- package/dist/lib/resource-classifier.js +84 -0
- package/dist/lib/resource-classifier.js.map +1 -0
- package/dist/lib/response-normalizer.d.ts +6 -0
- package/dist/lib/response-normalizer.d.ts.map +1 -0
- package/dist/lib/response-normalizer.js +27 -0
- package/dist/lib/response-normalizer.js.map +1 -0
- package/dist/lib/validators.d.ts +9 -0
- package/dist/lib/validators.d.ts.map +1 -0
- package/dist/lib/validators.js +26 -0
- package/dist/lib/validators.js.map +1 -0
- package/dist/types/fleet-config.d.ts +44 -0
- package/dist/types/fleet-config.d.ts.map +1 -0
- package/dist/types/fleet-config.js +3 -0
- package/dist/types/fleet-config.js.map +1 -0
- 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":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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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"}
|