codelantern-agent-cli 1.0.0 → 1.0.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/README.md +167 -216
- package/dist/{chunk-Y3PEOLTZ.js → chunk-PELESOCI.js} +2365 -571
- package/dist/chunk-PELESOCI.js.map +1 -0
- package/dist/cli.js +678 -82
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +285 -23
- package/dist/index.js +46 -7
- package/package.json +2 -2
- package/dist/chunk-Y3PEOLTZ.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Core type definitions for
|
|
2
|
+
* Core type definitions for Code Lantern CLI
|
|
3
3
|
*/
|
|
4
4
|
type ModelRole = 'user' | 'model' | 'tool' | 'system';
|
|
5
5
|
interface FileAttachment {
|
|
@@ -40,9 +40,11 @@ interface OrbitSession {
|
|
|
40
40
|
createdAt: string;
|
|
41
41
|
updatedAt: string;
|
|
42
42
|
workspace: string;
|
|
43
|
+
provider?: string;
|
|
43
44
|
model: string;
|
|
44
45
|
turns: ConversationTurn[];
|
|
45
46
|
totalUsage: TokenUsage;
|
|
47
|
+
activeSkills?: string[];
|
|
46
48
|
}
|
|
47
49
|
interface McpServerConfig {
|
|
48
50
|
command: string;
|
|
@@ -50,7 +52,56 @@ interface McpServerConfig {
|
|
|
50
52
|
env?: Record<string, string>;
|
|
51
53
|
disabled?: boolean;
|
|
52
54
|
}
|
|
55
|
+
type ProviderType = 'gemini' | 'openai' | 'anthropic' | 'openrouter' | 'custom';
|
|
56
|
+
interface ProviderConfig {
|
|
57
|
+
id: string;
|
|
58
|
+
name: string;
|
|
59
|
+
type: ProviderType;
|
|
60
|
+
baseUrl?: string;
|
|
61
|
+
apiKey?: string;
|
|
62
|
+
defaultModel?: string;
|
|
63
|
+
headers?: Record<string, string>;
|
|
64
|
+
disabled?: boolean;
|
|
65
|
+
}
|
|
66
|
+
interface ModelCapabilities {
|
|
67
|
+
streaming: boolean;
|
|
68
|
+
tools: boolean;
|
|
69
|
+
images: boolean;
|
|
70
|
+
reasoning: boolean;
|
|
71
|
+
contextWindow?: number;
|
|
72
|
+
}
|
|
73
|
+
interface ProviderModelInfo {
|
|
74
|
+
id: string;
|
|
75
|
+
name: string;
|
|
76
|
+
provider: string;
|
|
77
|
+
description?: string;
|
|
78
|
+
contextWindow?: number;
|
|
79
|
+
capabilities: ModelCapabilities;
|
|
80
|
+
pricing?: {
|
|
81
|
+
promptPer1k?: number;
|
|
82
|
+
completionPer1k?: number;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
interface TimingDiagnostics {
|
|
86
|
+
providerInitMs?: number;
|
|
87
|
+
connectMs?: number;
|
|
88
|
+
ttftMs?: number;
|
|
89
|
+
streamMs?: number;
|
|
90
|
+
totalMs: number;
|
|
91
|
+
toolExecutionMs: Record<string, number>;
|
|
92
|
+
}
|
|
93
|
+
interface Skill {
|
|
94
|
+
name: string;
|
|
95
|
+
description: string;
|
|
96
|
+
path: string;
|
|
97
|
+
source: 'project' | 'user';
|
|
98
|
+
enabled: boolean;
|
|
99
|
+
content: string;
|
|
100
|
+
references?: string[];
|
|
101
|
+
tags?: string[];
|
|
102
|
+
}
|
|
53
103
|
interface OrbitConfig {
|
|
104
|
+
activeProvider: string;
|
|
54
105
|
defaultModel: string;
|
|
55
106
|
maxSteps: number;
|
|
56
107
|
temperature: number;
|
|
@@ -60,6 +111,11 @@ interface OrbitConfig {
|
|
|
60
111
|
autoCompactThreshold: number;
|
|
61
112
|
mcpServers?: Record<string, McpServerConfig>;
|
|
62
113
|
timeoutMs: number;
|
|
114
|
+
firstTokenTimeoutMs: number;
|
|
115
|
+
showTiming: boolean;
|
|
116
|
+
lowLatency: boolean;
|
|
117
|
+
activeSkills: string[];
|
|
118
|
+
providers?: Record<string, ProviderConfig>;
|
|
63
119
|
}
|
|
64
120
|
interface ApprovalRequest {
|
|
65
121
|
type: 'file_edit' | 'file_write' | 'command';
|
|
@@ -75,12 +131,20 @@ interface ApprovalRequest {
|
|
|
75
131
|
type ApprovalDecision = 'allow' | 'deny' | 'yolo_all';
|
|
76
132
|
interface AgentContext {
|
|
77
133
|
workspace: string;
|
|
134
|
+
provider: string;
|
|
78
135
|
model: string;
|
|
79
136
|
yolo: boolean;
|
|
80
137
|
planMode: boolean;
|
|
81
138
|
jsonOutput: boolean;
|
|
82
139
|
maxSteps: number;
|
|
140
|
+
timeoutMs: number;
|
|
141
|
+
firstTokenTimeoutMs: number;
|
|
142
|
+
showTiming: boolean;
|
|
143
|
+
lowLatency: boolean;
|
|
144
|
+
activeSkills?: string[];
|
|
83
145
|
attachments?: FileAttachment[];
|
|
146
|
+
signal?: AbortSignal;
|
|
147
|
+
onStateChange?: (state: string) => void;
|
|
84
148
|
}
|
|
85
149
|
interface ToolDefinition {
|
|
86
150
|
name: string;
|
|
@@ -104,6 +168,7 @@ interface ToolExecutionContext {
|
|
|
104
168
|
yolo: boolean;
|
|
105
169
|
planMode: boolean;
|
|
106
170
|
requestApproval: (request: ApprovalRequest) => Promise<boolean>;
|
|
171
|
+
signal?: AbortSignal;
|
|
107
172
|
}
|
|
108
173
|
interface ToolExecutionResult {
|
|
109
174
|
success: boolean;
|
|
@@ -124,7 +189,7 @@ declare function setConfigValue(key: string, value: unknown): {
|
|
|
124
189
|
declare function getConfigValue<K extends keyof OrbitConfig>(key: K): OrbitConfig[K];
|
|
125
190
|
|
|
126
191
|
declare const DEFAULT_CONFIG: OrbitConfig;
|
|
127
|
-
declare const ALLOWED_CONFIG_KEYS: readonly ["defaultModel", "maxSteps", "temperature", "maxOutputTokens", "yolo", "theme", "autoCompactThreshold", "timeoutMs"];
|
|
192
|
+
declare const ALLOWED_CONFIG_KEYS: readonly ["activeProvider", "defaultModel", "maxSteps", "temperature", "maxOutputTokens", "yolo", "theme", "autoCompactThreshold", "timeoutMs", "firstTokenTimeoutMs", "showTiming", "lowLatency", "activeSkills"];
|
|
128
193
|
type ConfigKey = (typeof ALLOWED_CONFIG_KEYS)[number];
|
|
129
194
|
declare function validateConfigValue(key: string, value: unknown): {
|
|
130
195
|
valid: boolean;
|
|
@@ -143,36 +208,178 @@ interface StreamCallbacks {
|
|
|
143
208
|
onChunk?: (text: string) => void;
|
|
144
209
|
onToolCalls?: (toolCalls: ToolCallItem[]) => void;
|
|
145
210
|
onUsage?: (usage: TokenUsage) => void;
|
|
211
|
+
onStateChange?: (state: string) => void;
|
|
146
212
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
213
|
+
interface ProviderStreamParams {
|
|
214
|
+
model: string;
|
|
215
|
+
systemInstruction: string;
|
|
216
|
+
history: ConversationTurn[];
|
|
217
|
+
tools: ToolDefinition[];
|
|
218
|
+
callbacks: StreamCallbacks;
|
|
219
|
+
signal?: AbortSignal;
|
|
220
|
+
temperature?: number;
|
|
221
|
+
maxOutputTokens?: number;
|
|
222
|
+
timeoutMs?: number;
|
|
223
|
+
firstTokenTimeoutMs?: number;
|
|
224
|
+
lowLatency?: boolean;
|
|
225
|
+
enableSearchGrounding?: boolean;
|
|
226
|
+
}
|
|
227
|
+
interface ProviderStreamResult {
|
|
228
|
+
text: string;
|
|
229
|
+
toolCalls: ToolCallItem[];
|
|
230
|
+
usage: TokenUsage;
|
|
231
|
+
timing: TimingDiagnostics;
|
|
232
|
+
}
|
|
233
|
+
interface ProviderTestResult {
|
|
234
|
+
success: boolean;
|
|
235
|
+
latencyMs: number;
|
|
236
|
+
error?: string;
|
|
237
|
+
modelsCount?: number;
|
|
238
|
+
resolvedModel?: string;
|
|
239
|
+
}
|
|
240
|
+
interface IProviderAdapter {
|
|
241
|
+
id: string;
|
|
242
|
+
name: string;
|
|
243
|
+
displayName: string;
|
|
244
|
+
defaultModel: string;
|
|
151
245
|
isConfigured(): boolean;
|
|
246
|
+
getApiKey(): string | null;
|
|
152
247
|
getMaskedKey(): string;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
248
|
+
streamGenerate(params: ProviderStreamParams): Promise<ProviderStreamResult>;
|
|
249
|
+
listModels(refresh?: boolean): Promise<ProviderModelInfo[]>;
|
|
250
|
+
testConnection(): Promise<ProviderTestResult>;
|
|
251
|
+
getCapabilities(modelId: string): ModelCapabilities;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
declare class ProviderRegistry {
|
|
255
|
+
private providers;
|
|
256
|
+
constructor();
|
|
257
|
+
private registerBuiltins;
|
|
258
|
+
private loadCustomProviders;
|
|
259
|
+
getProvider(id?: string): IProviderAdapter;
|
|
260
|
+
hasProvider(id: string): boolean;
|
|
261
|
+
listProviders(): Array<{
|
|
262
|
+
id: string;
|
|
263
|
+
name: string;
|
|
264
|
+
displayName: string;
|
|
265
|
+
isConfigured: boolean;
|
|
266
|
+
maskedKey: string;
|
|
267
|
+
defaultModel: string;
|
|
268
|
+
isActive: boolean;
|
|
162
269
|
}>;
|
|
270
|
+
registerCustomProvider(cfg: ProviderConfig): void;
|
|
271
|
+
removeCustomProvider(id: string): boolean;
|
|
272
|
+
testProvider(id?: string): Promise<ProviderTestResult>;
|
|
273
|
+
listModels(providerId?: string, refresh?: boolean): Promise<ProviderModelInfo[]>;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
declare class GeminiProvider implements IProviderAdapter {
|
|
277
|
+
id: string;
|
|
278
|
+
name: string;
|
|
279
|
+
displayName: string;
|
|
280
|
+
defaultModel: string;
|
|
281
|
+
private cachedModels;
|
|
282
|
+
isConfigured(): boolean;
|
|
283
|
+
getApiKey(): string | null;
|
|
284
|
+
getMaskedKey(): string;
|
|
285
|
+
private getClient;
|
|
286
|
+
getCapabilities(modelId: string): ModelCapabilities;
|
|
287
|
+
testConnection(): Promise<ProviderTestResult>;
|
|
288
|
+
listModels(refresh?: boolean): Promise<ProviderModelInfo[]>;
|
|
289
|
+
streamGenerate(params: ProviderStreamParams): Promise<ProviderStreamResult>;
|
|
163
290
|
private convertHistoryToContents;
|
|
164
291
|
private convertToolsToDeclarations;
|
|
165
292
|
}
|
|
166
293
|
|
|
167
|
-
declare class
|
|
294
|
+
declare class OpenAIProvider implements IProviderAdapter {
|
|
295
|
+
id: string;
|
|
296
|
+
name: string;
|
|
297
|
+
displayName: string;
|
|
298
|
+
defaultModel: string;
|
|
299
|
+
baseUrl: string;
|
|
300
|
+
customHeaders: Record<string, string>;
|
|
301
|
+
private cachedModels;
|
|
302
|
+
constructor(options?: {
|
|
303
|
+
id?: string;
|
|
304
|
+
name?: string;
|
|
305
|
+
displayName?: string;
|
|
306
|
+
baseUrl?: string;
|
|
307
|
+
defaultModel?: string;
|
|
308
|
+
headers?: Record<string, string>;
|
|
309
|
+
});
|
|
310
|
+
isConfigured(): boolean;
|
|
311
|
+
getApiKey(): string | null;
|
|
312
|
+
getMaskedKey(): string;
|
|
313
|
+
getCapabilities(modelId: string): ModelCapabilities;
|
|
314
|
+
testConnection(): Promise<ProviderTestResult>;
|
|
315
|
+
listModels(refresh?: boolean): Promise<ProviderModelInfo[]>;
|
|
316
|
+
streamGenerate(params: ProviderStreamParams): Promise<ProviderStreamResult>;
|
|
317
|
+
private convertHistoryToMessages;
|
|
318
|
+
private convertTools;
|
|
319
|
+
private readSSEStream;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
declare class AnthropicProvider implements IProviderAdapter {
|
|
323
|
+
id: string;
|
|
324
|
+
name: string;
|
|
325
|
+
displayName: string;
|
|
326
|
+
defaultModel: string;
|
|
327
|
+
baseUrl: string;
|
|
328
|
+
private cachedModels;
|
|
329
|
+
isConfigured(): boolean;
|
|
330
|
+
getApiKey(): string | null;
|
|
331
|
+
getMaskedKey(): string;
|
|
332
|
+
getCapabilities(modelId: string): ModelCapabilities;
|
|
333
|
+
testConnection(): Promise<ProviderTestResult>;
|
|
334
|
+
listModels(refresh?: boolean): Promise<ProviderModelInfo[]>;
|
|
335
|
+
streamGenerate(params: ProviderStreamParams): Promise<ProviderStreamResult>;
|
|
336
|
+
private convertHistoryToMessages;
|
|
337
|
+
private convertTools;
|
|
338
|
+
private readSSEStream;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
declare class OpenRouterProvider extends OpenAIProvider {
|
|
168
342
|
constructor();
|
|
343
|
+
getCapabilities(modelId: string): ModelCapabilities;
|
|
344
|
+
listModels(refresh?: boolean): Promise<ProviderModelInfo[]>;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
declare function createLinkedAbortController(parentSignal?: AbortSignal, timeoutMs?: number): {
|
|
348
|
+
controller: AbortController;
|
|
349
|
+
cleanup: () => void;
|
|
350
|
+
};
|
|
351
|
+
declare function wrapStreamWithFirstTokenTimeout<T>(stream: AsyncIterable<T>, firstTokenTimeoutMs: number, provider: string, model: string, signal?: AbortSignal, onFirstToken?: (latencyMs: number) => void): AsyncGenerator<T, void, unknown>;
|
|
352
|
+
|
|
353
|
+
declare class TimeoutError extends Error {
|
|
354
|
+
timeoutMs: number;
|
|
355
|
+
constructor(timeoutMs: number, operation?: string);
|
|
356
|
+
}
|
|
357
|
+
declare class FirstTokenTimeoutError extends Error {
|
|
358
|
+
timeoutMs: number;
|
|
359
|
+
provider: string;
|
|
360
|
+
model: string;
|
|
361
|
+
constructor(timeoutMs: number, provider: string, model: string);
|
|
362
|
+
}
|
|
363
|
+
declare class CancelledError extends Error {
|
|
364
|
+
constructor(message?: string);
|
|
365
|
+
}
|
|
366
|
+
declare class MissingApiKeyError extends Error {
|
|
367
|
+
provider: string;
|
|
368
|
+
constructor(provider?: string, envVar?: string);
|
|
169
369
|
}
|
|
170
370
|
declare class RateLimitError extends Error {
|
|
171
371
|
constructor(message?: string);
|
|
172
372
|
}
|
|
173
|
-
declare class
|
|
373
|
+
declare class AuthenticationError extends Error {
|
|
374
|
+
constructor(message?: string);
|
|
375
|
+
}
|
|
376
|
+
declare class ModelNotFoundError extends Error {
|
|
377
|
+
constructor(model: string, provider: string);
|
|
378
|
+
}
|
|
379
|
+
declare class LanternProviderError extends Error {
|
|
174
380
|
statusCode?: number;
|
|
175
|
-
|
|
381
|
+
provider?: string;
|
|
382
|
+
constructor(message: string, statusCode?: number, provider?: string);
|
|
176
383
|
}
|
|
177
384
|
declare function formatErrorMessage(err: unknown): string;
|
|
178
385
|
|
|
@@ -197,6 +404,21 @@ interface CommandValidationResult {
|
|
|
197
404
|
}
|
|
198
405
|
declare function validateCommand(command: string): CommandValidationResult;
|
|
199
406
|
|
|
407
|
+
declare function encryptSecret(plainText: string): string;
|
|
408
|
+
declare function decryptSecret(encryptedPayload: string): string | null;
|
|
409
|
+
declare function maskApiKey(key: string): string;
|
|
410
|
+
declare function getApiKey(provider: string): {
|
|
411
|
+
key: string | null;
|
|
412
|
+
source?: 'env' | 'store';
|
|
413
|
+
};
|
|
414
|
+
declare function setApiKey(provider: string, apiKey: string): void;
|
|
415
|
+
declare function removeApiKey(provider: string): boolean;
|
|
416
|
+
declare function listConfiguredKeys(): Record<string, {
|
|
417
|
+
configured: boolean;
|
|
418
|
+
source?: 'env' | 'store';
|
|
419
|
+
maskedKey: string;
|
|
420
|
+
}>;
|
|
421
|
+
|
|
200
422
|
declare class ApprovalEngine {
|
|
201
423
|
private yolo;
|
|
202
424
|
private planMode;
|
|
@@ -233,6 +455,42 @@ declare function exportSessionMarkdown(session: OrbitSession): string;
|
|
|
233
455
|
declare function shouldCompact(turns: ConversationTurn[], threshold?: number): boolean;
|
|
234
456
|
declare function compactTurns(turns: ConversationTurn[], retainRecentCount?: number): ConversationTurn[];
|
|
235
457
|
|
|
458
|
+
declare class SkillManager {
|
|
459
|
+
private userSkillsDir;
|
|
460
|
+
constructor();
|
|
461
|
+
getUserSkillsDir(): string;
|
|
462
|
+
getProjectSkillsDirs(workspace: string): string[];
|
|
463
|
+
/**
|
|
464
|
+
* Discovers all available skills from user-level and project-level directories
|
|
465
|
+
*/
|
|
466
|
+
listSkills(workspace?: string): Skill[];
|
|
467
|
+
private scanDirectoryForSkills;
|
|
468
|
+
parseSkillMd(rawContent: string, defaultName: string): {
|
|
469
|
+
name: string;
|
|
470
|
+
description: string;
|
|
471
|
+
content: string;
|
|
472
|
+
};
|
|
473
|
+
getSkill(name: string, workspace?: string): Skill | null;
|
|
474
|
+
enableSkill(name: string): boolean;
|
|
475
|
+
disableSkill(name: string): boolean;
|
|
476
|
+
addSkillFromPath(sourcePath: string): {
|
|
477
|
+
success: boolean;
|
|
478
|
+
skillName?: string;
|
|
479
|
+
error?: string;
|
|
480
|
+
};
|
|
481
|
+
addSkillFromGit(repoUrl: string): {
|
|
482
|
+
success: boolean;
|
|
483
|
+
skillName?: string;
|
|
484
|
+
error?: string;
|
|
485
|
+
};
|
|
486
|
+
removeSkill(name: string): boolean;
|
|
487
|
+
/**
|
|
488
|
+
* Matches prompt against available skills by keyword and intent.
|
|
489
|
+
* Transparent and non-intrusive.
|
|
490
|
+
*/
|
|
491
|
+
matchSkillsForPrompt(userPrompt: string, workspace?: string): Skill[];
|
|
492
|
+
}
|
|
493
|
+
|
|
236
494
|
interface OrbitTool {
|
|
237
495
|
definition: ToolDefinition;
|
|
238
496
|
execute: (args: Record<string, any>, context: ToolExecutionContext) => Promise<ToolExecutionResult>;
|
|
@@ -264,21 +522,25 @@ declare function addMcpServer(name: string, config: McpServerConfig): void;
|
|
|
264
522
|
declare function removeMcpServer(name: string): boolean;
|
|
265
523
|
declare function toggleMcpServer(name: string, disabled: boolean): boolean;
|
|
266
524
|
|
|
267
|
-
declare class
|
|
268
|
-
private
|
|
525
|
+
declare class LanternAgent {
|
|
526
|
+
private providerRegistry;
|
|
269
527
|
private tools;
|
|
270
528
|
private mcpManager;
|
|
529
|
+
private skillManager;
|
|
271
530
|
private approvalEngine;
|
|
272
531
|
private spinner;
|
|
273
|
-
constructor(
|
|
532
|
+
constructor();
|
|
533
|
+
getProviderRegistry(): ProviderRegistry;
|
|
534
|
+
getSkillManager(): SkillManager;
|
|
274
535
|
initMcp(): Promise<void>;
|
|
275
536
|
shutdown(): Promise<void>;
|
|
276
|
-
buildSystemPrompt(workspace: string, planMode?: boolean): string;
|
|
537
|
+
buildSystemPrompt(workspace: string, planMode?: boolean, activeSkills?: Skill[]): string;
|
|
277
538
|
runTurn(session: OrbitSession, userPrompt: string, context: AgentContext, attachments?: FileAttachment[]): Promise<{
|
|
278
539
|
reply: string;
|
|
279
540
|
toolCount: number;
|
|
280
541
|
usage: TokenUsage;
|
|
542
|
+
timing: TimingDiagnostics;
|
|
281
543
|
}>;
|
|
282
544
|
}
|
|
283
545
|
|
|
284
|
-
export { ALLOWED_CONFIG_KEYS, type AgentContext, type ApprovalDecision, ApprovalEngine, type ApprovalRequest, type CommandValidationResult, type ConfigKey, type ConversationTurn, DEFAULT_CONFIG, type FileAttachment, GeminiProvider,
|
|
546
|
+
export { ALLOWED_CONFIG_KEYS, type AgentContext, AnthropicProvider, type ApprovalDecision, ApprovalEngine, type ApprovalRequest, AuthenticationError, CancelledError, type CommandValidationResult, type ConfigKey, type ConversationTurn, DEFAULT_CONFIG, type FileAttachment, FirstTokenTimeoutError, GeminiProvider, type IProviderAdapter, LanternAgent, LanternProviderError, McpManager, type McpServerConfig, MissingApiKeyError, type ModelCapabilities, ModelNotFoundError, type ModelRole, OpenAIProvider, OpenRouterProvider, LanternAgent as OrbitAgent, type OrbitConfig, type OrbitSession, type OrbitTool, type PathValidationResult, type ProjectInstructions, type ProviderConfig, type ProviderModelInfo, ProviderRegistry, type ProviderStreamParams, type ProviderStreamResult, type ProviderTestResult, type ProviderType, RateLimitError, type Skill, SkillManager, type StreamCallbacks, TimeoutError, type TimingDiagnostics, type TokenUsage, type ToolCallItem, type ToolDefinition, type ToolExecutionContext, type ToolExecutionResult, ToolRegistry, type ToolResultItem, addMcpServer, compactTurns, createLinkedAbortController, createNewSession, decryptSecret, deleteSession, encryptSecret, exportSessionMarkdown, formatErrorMessage, formatNewFilePreview, formatTerminalDiff, generateSessionId, getApiKey, getConfigFilePath, getConfigValue, getLanternHomeDir, getMcpConfigPath, getSessionsDir, isSecretFile, listConfiguredKeys, listSessions, loadAttachment, loadAttachments, loadConfig, loadMcpConfig, loadProjectInstructions, loadSession, maskApiKey, removeApiKey, removeMcpServer, sanitizeSecrets, saveConfig, saveMcpConfig, saveSession, setApiKey, setConfigValue, shouldCompact, toggleMcpServer, validateCommand, validateConfigValue, validateWorkspacePath, wrapStreamWithFirstTokenTimeout };
|
package/dist/index.js
CHANGED
|
@@ -1,30 +1,45 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
ALLOWED_CONFIG_KEYS,
|
|
4
|
+
AnthropicProvider,
|
|
4
5
|
ApprovalEngine,
|
|
6
|
+
AuthenticationError,
|
|
7
|
+
CancelledError,
|
|
5
8
|
DEFAULT_CONFIG,
|
|
9
|
+
FirstTokenTimeoutError,
|
|
6
10
|
GeminiProvider,
|
|
7
|
-
|
|
11
|
+
LanternAgent,
|
|
12
|
+
LanternProviderError,
|
|
8
13
|
McpManager,
|
|
9
14
|
MissingApiKeyError,
|
|
10
|
-
|
|
15
|
+
ModelNotFoundError,
|
|
16
|
+
OpenAIProvider,
|
|
17
|
+
OpenRouterProvider,
|
|
18
|
+
ProviderRegistry,
|
|
11
19
|
RateLimitError,
|
|
20
|
+
SkillManager,
|
|
21
|
+
TimeoutError,
|
|
12
22
|
ToolRegistry,
|
|
13
23
|
addMcpServer,
|
|
14
24
|
compactTurns,
|
|
25
|
+
createLinkedAbortController,
|
|
15
26
|
createNewSession,
|
|
27
|
+
decryptSecret,
|
|
16
28
|
deleteSession,
|
|
29
|
+
encryptSecret,
|
|
17
30
|
exportSessionMarkdown,
|
|
18
31
|
formatErrorMessage,
|
|
19
32
|
formatNewFilePreview,
|
|
20
33
|
formatTerminalDiff,
|
|
21
34
|
generateSessionId,
|
|
35
|
+
getApiKey,
|
|
22
36
|
getConfigFilePath,
|
|
23
37
|
getConfigValue,
|
|
24
38
|
getLanternHomeDir,
|
|
25
39
|
getMcpConfigPath,
|
|
26
40
|
getSessionsDir,
|
|
27
41
|
isSecretFile,
|
|
42
|
+
listConfiguredKeys,
|
|
28
43
|
listSessions,
|
|
29
44
|
loadAttachment,
|
|
30
45
|
loadAttachments,
|
|
@@ -32,44 +47,64 @@ import {
|
|
|
32
47
|
loadMcpConfig,
|
|
33
48
|
loadProjectInstructions,
|
|
34
49
|
loadSession,
|
|
50
|
+
maskApiKey,
|
|
51
|
+
removeApiKey,
|
|
35
52
|
removeMcpServer,
|
|
36
53
|
sanitizeSecrets,
|
|
37
54
|
saveConfig,
|
|
38
55
|
saveMcpConfig,
|
|
39
56
|
saveSession,
|
|
57
|
+
setApiKey,
|
|
40
58
|
setConfigValue,
|
|
41
59
|
shouldCompact,
|
|
42
60
|
toggleMcpServer,
|
|
43
61
|
validateCommand,
|
|
44
62
|
validateConfigValue,
|
|
45
|
-
validateWorkspacePath
|
|
46
|
-
|
|
63
|
+
validateWorkspacePath,
|
|
64
|
+
wrapStreamWithFirstTokenTimeout
|
|
65
|
+
} from "./chunk-PELESOCI.js";
|
|
47
66
|
export {
|
|
48
67
|
ALLOWED_CONFIG_KEYS,
|
|
68
|
+
AnthropicProvider,
|
|
49
69
|
ApprovalEngine,
|
|
70
|
+
AuthenticationError,
|
|
71
|
+
CancelledError,
|
|
50
72
|
DEFAULT_CONFIG,
|
|
73
|
+
FirstTokenTimeoutError,
|
|
51
74
|
GeminiProvider,
|
|
52
|
-
|
|
75
|
+
LanternAgent,
|
|
76
|
+
LanternProviderError,
|
|
53
77
|
McpManager,
|
|
54
78
|
MissingApiKeyError,
|
|
55
|
-
|
|
79
|
+
ModelNotFoundError,
|
|
80
|
+
OpenAIProvider,
|
|
81
|
+
OpenRouterProvider,
|
|
82
|
+
LanternAgent as OrbitAgent,
|
|
83
|
+
ProviderRegistry,
|
|
56
84
|
RateLimitError,
|
|
85
|
+
SkillManager,
|
|
86
|
+
TimeoutError,
|
|
57
87
|
ToolRegistry,
|
|
58
88
|
addMcpServer,
|
|
59
89
|
compactTurns,
|
|
90
|
+
createLinkedAbortController,
|
|
60
91
|
createNewSession,
|
|
92
|
+
decryptSecret,
|
|
61
93
|
deleteSession,
|
|
94
|
+
encryptSecret,
|
|
62
95
|
exportSessionMarkdown,
|
|
63
96
|
formatErrorMessage,
|
|
64
97
|
formatNewFilePreview,
|
|
65
98
|
formatTerminalDiff,
|
|
66
99
|
generateSessionId,
|
|
100
|
+
getApiKey,
|
|
67
101
|
getConfigFilePath,
|
|
68
102
|
getConfigValue,
|
|
69
103
|
getLanternHomeDir,
|
|
70
104
|
getMcpConfigPath,
|
|
71
105
|
getSessionsDir,
|
|
72
106
|
isSecretFile,
|
|
107
|
+
listConfiguredKeys,
|
|
73
108
|
listSessions,
|
|
74
109
|
loadAttachment,
|
|
75
110
|
loadAttachments,
|
|
@@ -77,16 +112,20 @@ export {
|
|
|
77
112
|
loadMcpConfig,
|
|
78
113
|
loadProjectInstructions,
|
|
79
114
|
loadSession,
|
|
115
|
+
maskApiKey,
|
|
116
|
+
removeApiKey,
|
|
80
117
|
removeMcpServer,
|
|
81
118
|
sanitizeSecrets,
|
|
82
119
|
saveConfig,
|
|
83
120
|
saveMcpConfig,
|
|
84
121
|
saveSession,
|
|
122
|
+
setApiKey,
|
|
85
123
|
setConfigValue,
|
|
86
124
|
shouldCompact,
|
|
87
125
|
toggleMcpServer,
|
|
88
126
|
validateCommand,
|
|
89
127
|
validateConfigValue,
|
|
90
|
-
validateWorkspacePath
|
|
128
|
+
validateWorkspacePath,
|
|
129
|
+
wrapStreamWithFirstTokenTimeout
|
|
91
130
|
};
|
|
92
131
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codelantern-agent-cli",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Code Lantern CLI - Personal AI coding assistant for the terminal
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Code Lantern CLI - Personal AI coding assistant for the terminal with multi-provider and skills support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"lantern": "./dist/cli.js"
|