@syntero/orca-cli 1.0.0 → 1.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 (111) hide show
  1. package/dist/assistant.d.ts +17 -3
  2. package/dist/assistant.d.ts.map +1 -1
  3. package/dist/assistant.js +217 -22
  4. package/dist/assistant.js.map +1 -1
  5. package/dist/auth.d.ts +97 -0
  6. package/dist/auth.d.ts.map +1 -0
  7. package/dist/auth.js +437 -0
  8. package/dist/auth.js.map +1 -0
  9. package/dist/autocomplete.d.ts +24 -0
  10. package/dist/autocomplete.d.ts.map +1 -0
  11. package/dist/autocomplete.js +43 -0
  12. package/dist/autocomplete.js.map +1 -0
  13. package/dist/components/ChatApp.d.ts +32 -0
  14. package/dist/components/ChatApp.d.ts.map +1 -0
  15. package/dist/components/ChatApp.js +470 -0
  16. package/dist/components/ChatApp.js.map +1 -0
  17. package/dist/components/CommandPalette.d.ts +15 -0
  18. package/dist/components/CommandPalette.d.ts.map +1 -0
  19. package/dist/components/CommandPalette.js +22 -0
  20. package/dist/components/CommandPalette.js.map +1 -0
  21. package/dist/components/ConfigWizard.d.ts +25 -0
  22. package/dist/components/ConfigWizard.d.ts.map +1 -0
  23. package/dist/components/ConfigWizard.js +401 -0
  24. package/dist/components/ConfigWizard.js.map +1 -0
  25. package/dist/components/InputFooter.d.ts +33 -0
  26. package/dist/components/InputFooter.d.ts.map +1 -0
  27. package/dist/components/InputFooter.js +618 -0
  28. package/dist/components/InputFooter.js.map +1 -0
  29. package/dist/components/InputModal.d.ts +25 -0
  30. package/dist/components/InputModal.d.ts.map +1 -0
  31. package/dist/components/InputModal.js +529 -0
  32. package/dist/components/InputModal.js.map +1 -0
  33. package/dist/components/ModelMenu.d.ts +24 -0
  34. package/dist/components/ModelMenu.d.ts.map +1 -0
  35. package/dist/components/ModelMenu.js +175 -0
  36. package/dist/components/ModelMenu.js.map +1 -0
  37. package/dist/components/ProviderMenu.d.ts +20 -0
  38. package/dist/components/ProviderMenu.d.ts.map +1 -0
  39. package/dist/components/ProviderMenu.js +31 -0
  40. package/dist/components/ProviderMenu.js.map +1 -0
  41. package/dist/components/SyncMenu.d.ts +23 -0
  42. package/dist/components/SyncMenu.d.ts.map +1 -0
  43. package/dist/components/SyncMenu.js +135 -0
  44. package/dist/components/SyncMenu.js.map +1 -0
  45. package/dist/components/TokenInput.d.ts +15 -0
  46. package/dist/components/TokenInput.d.ts.map +1 -0
  47. package/dist/components/TokenInput.js +103 -0
  48. package/dist/components/TokenInput.js.map +1 -0
  49. package/dist/index.js +323 -173
  50. package/dist/index.js.map +1 -1
  51. package/dist/ink-input.d.ts +14 -0
  52. package/dist/ink-input.d.ts.map +1 -0
  53. package/dist/ink-input.js +92 -0
  54. package/dist/ink-input.js.map +1 -0
  55. package/dist/models.d.ts +115 -0
  56. package/dist/models.d.ts.map +1 -0
  57. package/dist/models.js +221 -0
  58. package/dist/models.js.map +1 -0
  59. package/dist/providers.d.ts +19 -4
  60. package/dist/providers.d.ts.map +1 -1
  61. package/dist/providers.js +80 -112
  62. package/dist/providers.js.map +1 -1
  63. package/dist/settings.d.ts +15 -0
  64. package/dist/settings.d.ts.map +1 -1
  65. package/dist/settings.js +56 -21
  66. package/dist/settings.js.map +1 -1
  67. package/dist/sync/docker.d.ts +68 -0
  68. package/dist/sync/docker.d.ts.map +1 -0
  69. package/dist/sync/docker.js +234 -0
  70. package/dist/sync/docker.js.map +1 -0
  71. package/dist/sync/download.d.ts +87 -0
  72. package/dist/sync/download.d.ts.map +1 -0
  73. package/dist/sync/download.js +291 -0
  74. package/dist/sync/download.js.map +1 -0
  75. package/dist/sync/hash.d.ts +60 -0
  76. package/dist/sync/hash.d.ts.map +1 -0
  77. package/dist/sync/hash.js +92 -0
  78. package/dist/sync/hash.js.map +1 -0
  79. package/dist/sync/index.d.ts +15 -0
  80. package/dist/sync/index.d.ts.map +1 -0
  81. package/dist/sync/index.js +21 -0
  82. package/dist/sync/index.js.map +1 -0
  83. package/dist/sync/manifest.d.ts +132 -0
  84. package/dist/sync/manifest.d.ts.map +1 -0
  85. package/dist/sync/manifest.js +260 -0
  86. package/dist/sync/manifest.js.map +1 -0
  87. package/dist/sync/progress.d.ts +164 -0
  88. package/dist/sync/progress.d.ts.map +1 -0
  89. package/dist/sync/progress.js +233 -0
  90. package/dist/sync/progress.js.map +1 -0
  91. package/dist/sync/services.d.ts +70 -0
  92. package/dist/sync/services.d.ts.map +1 -0
  93. package/dist/sync/services.js +134 -0
  94. package/dist/sync/services.js.map +1 -0
  95. package/dist/sync/sync-engine.d.ts +69 -0
  96. package/dist/sync/sync-engine.d.ts.map +1 -0
  97. package/dist/sync/sync-engine.js +533 -0
  98. package/dist/sync/sync-engine.js.map +1 -0
  99. package/dist/tokens.d.ts +70 -0
  100. package/dist/tokens.d.ts.map +1 -0
  101. package/dist/tokens.js +198 -0
  102. package/dist/tokens.js.map +1 -0
  103. package/dist/tools.d.ts +60 -0
  104. package/dist/tools.d.ts.map +1 -1
  105. package/dist/tools.js +34 -0
  106. package/dist/tools.js.map +1 -1
  107. package/dist/types/sync.d.ts +284 -0
  108. package/dist/types/sync.d.ts.map +1 -0
  109. package/dist/types/sync.js +5 -0
  110. package/dist/types/sync.js.map +1 -0
  111. package/package.json +10 -2
package/dist/index.js CHANGED
@@ -1,11 +1,32 @@
1
1
  #!/usr/bin/env node
2
- import * as readline from 'readline';
2
+ import React from 'react';
3
+ import { render } from 'ink';
3
4
  import { createRequire } from 'module';
5
+ import { execSync, spawn } from 'child_process';
4
6
  import updateNotifier from 'update-notifier';
5
- import { Provider, loadSettings, saveSettings } from './settings.js';
6
- import { createLLMClient, configureProvider, listAvailableModels, selectModel, } from './providers.js';
7
+ import { loadSettings } from './settings.js';
8
+ import { createLLMClient, configureProvider, createClientFromCloudConfig, getCloudModel, } from './providers.js';
7
9
  import { runAssistant } from './assistant.js';
8
- import { Colors, color, promptInput, CancelledError } from './utils.js';
10
+ import { Colors, color } from './utils.js';
11
+ import { isAuthenticated, loadCredentials, getSelectedCloudProvider, } from './auth.js';
12
+ import { ChatApp } from './components/ChatApp.js';
13
+ // Debug logging to file
14
+ import * as fs from 'fs';
15
+ import * as path from 'path';
16
+ const DEBUG_LOG = path.join(process.cwd(), 'debug.log');
17
+ // Clear log file on startup
18
+ fs.writeFileSync(DEBUG_LOG, `=== Debug session started ${new Date().toISOString()} ===\n`);
19
+ function debugLog(msg) {
20
+ fs.appendFileSync(DEBUG_LOG, `${new Date().toISOString()} ${msg}\n`);
21
+ }
22
+ // Global error handlers for debugging
23
+ process.on('uncaughtException', (err) => {
24
+ debugLog(`[UNCAUGHT EXCEPTION] ${err.message}\n${err.stack}`);
25
+ process.exit(1);
26
+ });
27
+ process.on('unhandledRejection', (reason) => {
28
+ debugLog(`[UNHANDLED REJECTION] ${reason}`);
29
+ });
9
30
  // Check for updates and auto-install if available
10
31
  const require = createRequire(import.meta.url);
11
32
  const pkg = require('../package.json');
@@ -23,199 +44,338 @@ if (notifier.update && notifier.update.latest !== pkg.version) {
23
44
  }
24
45
  }
25
46
  /**
26
- * Handle slash commands.
47
+ * Get the deployment directory (where docker-compose.yml is located).
27
48
  */
28
- async function handleCommand(command, settings) {
29
- const parts = command.trim().split(/\s+/);
30
- const cmd = parts[0].toLowerCase();
31
- const args = parts.slice(1).join(' ');
32
- if (cmd === '/login') {
33
- await configureProvider(settings);
34
- return { handled: true, message: color('Configuration updated. Reconnecting...', Colors.green) };
35
- }
36
- if (cmd === '/settings') {
37
- return { handled: true, message: `\n${settings.getMaskedDisplay()}\n` };
49
+ function getDeploymentDir() {
50
+ // Check environment variable first
51
+ if (process.env.DEPLOYMENT_DIR) {
52
+ return process.env.DEPLOYMENT_DIR;
38
53
  }
39
- if (cmd === '/provider') {
40
- const validProviders = [Provider.ANTHROPIC, Provider.OPENAI, Provider.AZURE];
41
- if (validProviders.includes(args)) {
42
- if (args === Provider.ANTHROPIC && !settings.anthropic.api_key) {
43
- return {
44
- handled: true,
45
- message: color('Anthropic not configured. Run /login first.', Colors.yellow),
46
- };
54
+ // Default to current working directory
55
+ return process.cwd();
56
+ }
57
+ /**
58
+ * Run a command with streaming output, showing only the last N lines.
59
+ */
60
+ function runCommand(command, cwd, maxLines = 5) {
61
+ return new Promise((resolve) => {
62
+ const child = spawn('sh', ['-c', command], {
63
+ cwd,
64
+ stdio: ['ignore', 'pipe', 'pipe'],
65
+ });
66
+ let output = '';
67
+ let displayedLines = [];
68
+ let linesOnScreen = 0;
69
+ const updateDisplay = (text) => {
70
+ output += text;
71
+ // Split into lines and add to buffer
72
+ const newLines = text.split('\n');
73
+ for (const line of newLines) {
74
+ if (line.trim()) {
75
+ displayedLines.push(line.slice(0, 80)); // Truncate long lines
76
+ if (displayedLines.length > maxLines) {
77
+ displayedLines.shift();
78
+ }
79
+ }
47
80
  }
48
- else if (args === Provider.OPENAI && !settings.openai.api_key) {
49
- return {
50
- handled: true,
51
- message: color('OpenAI not configured. Run /login first.', Colors.yellow),
52
- };
81
+ // Clear previous lines
82
+ if (linesOnScreen > 0) {
83
+ process.stdout.write(`\x1b[${linesOnScreen}A`); // Move up
84
+ for (let i = 0; i < linesOnScreen; i++) {
85
+ process.stdout.write('\x1b[2K\n'); // Clear each line
86
+ }
87
+ process.stdout.write(`\x1b[${linesOnScreen}A`); // Move back up
53
88
  }
54
- else if (args === Provider.AZURE && !settings.isConfigured()) {
55
- return {
56
- handled: true,
57
- message: color('Azure not configured. Run /login first.', Colors.yellow),
58
- };
89
+ // Write current lines
90
+ linesOnScreen = displayedLines.length;
91
+ for (const line of displayedLines) {
92
+ process.stdout.write(color(line, Colors.dim) + '\n');
59
93
  }
60
- settings.provider = args;
61
- saveSettings(settings);
62
- return { handled: true, message: color(`Switched to ${args}`, Colors.green) };
63
- }
64
- else {
65
- return { handled: true, message: 'Available providers: anthropic, openai, azure' };
66
- }
67
- }
68
- if (cmd === '/models') {
69
- const modelsList = await listAvailableModels(settings);
70
- return { handled: true, message: modelsList };
71
- }
72
- if (cmd === '/model') {
73
- try {
74
- if (settings.provider === Provider.ANTHROPIC) {
75
- settings.anthropic.model = await selectModel(settings.provider, settings.anthropic.model);
94
+ };
95
+ child.stdout?.on('data', (data) => updateDisplay(data.toString()));
96
+ child.stderr?.on('data', (data) => updateDisplay(data.toString()));
97
+ child.on('close', (code) => {
98
+ // Clear the rolling display and show completion
99
+ if (linesOnScreen > 0) {
100
+ process.stdout.write(`\x1b[${linesOnScreen}A`);
101
+ for (let i = 0; i < linesOnScreen; i++) {
102
+ process.stdout.write('\x1b[2K\n');
103
+ }
104
+ process.stdout.write(`\x1b[${linesOnScreen}A`);
76
105
  }
77
- else if (settings.provider === Provider.OPENAI) {
78
- settings.openai.model = await selectModel(settings.provider, settings.openai.model, settings.openai.api_key);
106
+ resolve({ success: code === 0, output });
107
+ });
108
+ child.on('error', (err) => {
109
+ output += err.message;
110
+ resolve({ success: false, output });
111
+ });
112
+ });
113
+ }
114
+ /**
115
+ * Wait for all orca containers to be healthy.
116
+ */
117
+ async function waitForHealthy(cwd, timeoutMs = 60000) {
118
+ const startTime = Date.now();
119
+ const pollInterval = 2000;
120
+ while (Date.now() - startTime < timeoutMs) {
121
+ try {
122
+ const output = execSync('docker ps --filter "name=orca-" --format "{{.Names}}: {{.Status}}"', {
123
+ cwd,
124
+ encoding: 'utf-8',
125
+ });
126
+ const lines = output.trim().split('\n').filter(Boolean);
127
+ if (lines.length === 0) {
128
+ // No containers found yet, keep waiting
129
+ await new Promise((resolve) => setTimeout(resolve, pollInterval));
130
+ continue;
79
131
  }
80
- else if (settings.provider === Provider.AZURE) {
81
- const newDeployment = await promptInput('Deployment name', settings.azure.deployment);
82
- if (newDeployment) {
83
- settings.azure.deployment = newDeployment;
84
- }
132
+ // Check if all containers are healthy or don't have health checks
133
+ const allHealthy = lines.every((line) => {
134
+ const status = line.toLowerCase();
135
+ // Container is ready if it's healthy or if it's running without a health check
136
+ return status.includes('healthy') || (status.includes('up') && !status.includes('health'));
137
+ });
138
+ if (allHealthy) {
139
+ console.log(color('All services are healthy.', Colors.green));
140
+ return true;
85
141
  }
86
- saveSettings(settings);
87
- return { handled: true, message: color('Model updated.', Colors.green) };
142
+ // Show current status
143
+ process.stdout.write(color('.', Colors.dim));
88
144
  }
89
- catch (e) {
90
- if (e instanceof CancelledError) {
91
- return { handled: true, message: color('Cancelled.', Colors.yellow) };
92
- }
93
- throw e;
145
+ catch {
146
+ // Command failed, keep trying
94
147
  }
148
+ await new Promise((resolve) => setTimeout(resolve, pollInterval));
95
149
  }
96
- if (cmd === '/help') {
97
- const helpText = `
98
- Available commands:
99
- /login Configure LLM credentials
100
- /settings Show current settings
101
- /models List available models
102
- /model Change model for current provider
103
- /provider <name> Switch provider (anthropic, openai, azure)
104
- /clear Clear conversation
105
- /help Show this help
106
- quit, exit Exit
107
- `;
108
- return { handled: true, message: helpText };
109
- }
110
- if (cmd === '/clear') {
111
- return { handled: true, message: '__CLEAR__' };
112
- }
113
- return { handled: false };
150
+ console.log(color('\nTimeout waiting for services to be healthy.', Colors.yellow));
151
+ return false;
114
152
  }
115
153
  /**
116
- * Run in interactive conversation mode.
154
+ * Run the update command sequence.
117
155
  */
118
- async function interactiveMode(settings) {
119
- console.log(color('\nOrca Deployment Assistant', Colors.bold));
120
- console.log(color('='.repeat(40), Colors.dim));
121
- console.log(`Provider: ${color(settings.provider, Colors.cyan)}`);
122
- console.log('Type /help for commands, /login to configure credentials.\n');
123
- let client = createLLMClient(settings);
124
- let messages = [];
125
- const rl = readline.createInterface({
126
- input: process.stdin,
127
- output: process.stdout,
128
- });
129
- // Handle Ctrl+C gracefully
130
- const handleSigint = () => {
131
- console.log('\nGoodbye!');
132
- rl.close();
133
- process.exit(0);
134
- };
135
- process.on('SIGINT', handleSigint);
136
- const promptUser = () => {
137
- return new Promise((resolve) => {
138
- rl.question(color('\nYou: ', Colors.green), (answer) => {
139
- resolve(answer.trim());
140
- });
141
- });
142
- };
143
- while (true) {
144
- let userInput;
156
+ async function runUpdateCommand(deployPath) {
157
+ debugLog('runUpdateCommand started');
158
+ try {
159
+ // Note: No confirmation prompt in interactive mode (Ink captures stdin)
160
+ // User explicitly typed /update so we proceed directly
161
+ console.log(color('\nStarting update...', Colors.cyan));
162
+ // Handle if user passed the file path instead of directory
163
+ let deploymentDir = deployPath || getDeploymentDir();
164
+ if (deploymentDir.endsWith('docker-compose.yml') || deploymentDir.endsWith('docker-compose.yaml')) {
165
+ deploymentDir = path.dirname(deploymentDir);
166
+ }
167
+ // Verify deployment directory has docker-compose.yml
168
+ const composePath = `${deploymentDir}/docker-compose.yml`;
145
169
  try {
146
- userInput = await promptUser();
170
+ execSync(`test -f "${composePath}"`, { stdio: 'ignore' });
147
171
  }
148
172
  catch {
149
- console.log('\nGoodbye!');
150
- break;
173
+ console.log(color(`\nError: docker-compose.yml not found in ${deploymentDir}`, Colors.red));
174
+ console.log(color('Usage: /update <path-to-deployment-directory>', Colors.dim));
175
+ return;
176
+ }
177
+ console.log(color(`\nUpdating in: ${deploymentDir}\n`, Colors.dim));
178
+ // Step 1: Remove sandbox keeper (if exists)
179
+ console.log(color('Step 1/4: Removing sandbox keeper...', Colors.cyan));
180
+ try {
181
+ execSync('docker rm -f orca-sandbox-keeper 2>/dev/null', { cwd: deploymentDir, stdio: 'ignore' });
182
+ console.log(color('Sandbox keeper removed (or was not running).', Colors.dim));
183
+ }
184
+ catch {
185
+ console.log(color('Sandbox keeper was not running.', Colors.dim));
186
+ }
187
+ // Step 2: Pull and restart services
188
+ console.log(color('\nStep 2/4: Pulling latest images and restarting services...', Colors.cyan));
189
+ const pullResult = await runCommand('docker compose up -d --pull always --remove-orphans', deploymentDir);
190
+ if (!pullResult.success) {
191
+ console.log(color('\nFailed to pull/restart services. Check errors above.', Colors.red));
192
+ return;
151
193
  }
152
- if (!userInput) {
153
- continue;
194
+ // Step 3: Wait for services to be healthy
195
+ console.log(color('\nStep 3/4: Waiting for services to be healthy', Colors.cyan));
196
+ const healthy = await waitForHealthy(deploymentDir, 60000);
197
+ if (!healthy) {
198
+ console.log(color('Services may not be fully healthy. Check with: docker ps', Colors.yellow));
154
199
  }
155
- if (['quit', 'exit', 'q'].includes(userInput.toLowerCase())) {
156
- console.log('Goodbye!');
157
- break;
200
+ // Step 4: Cleanup old images
201
+ console.log(color('\nStep 4/4: Cleaning up old images...', Colors.cyan));
202
+ const pruneResult = await runCommand('docker system prune -af', deploymentDir);
203
+ if (!pruneResult.success) {
204
+ console.log(color('\nWarning: Cleanup may have had issues.', Colors.yellow));
158
205
  }
159
- // Handle slash commands
160
- if (userInput.startsWith('/')) {
161
- const result = await handleCommand(userInput, settings);
162
- if (result.handled) {
163
- if (result.message === '__CLEAR__') {
164
- messages = [];
165
- console.log(color('Conversation cleared.', Colors.dim));
206
+ console.log(color('\nUpdate complete!', Colors.green));
207
+ }
208
+ catch (err) {
209
+ console.log(color(`\nUpdate failed: ${err instanceof Error ? err.message : String(err)}`, Colors.red));
210
+ if (err instanceof Error && err.stack) {
211
+ console.log(color(err.stack, Colors.dim));
212
+ }
213
+ }
214
+ }
215
+ /**
216
+ * Create the appropriate LLM client based on cloud auth or local settings.
217
+ * When cloud authenticated with LLM config, creates a DIRECT client to Anthropic/OpenAI/Azure.
218
+ *
219
+ * IMPORTANT: This function does NOT mutate the settings object. The settings object
220
+ * should already have the correct provider/model set. This function only creates the client.
221
+ */
222
+ function createClient(settings) {
223
+ debugLog(`[createClient] called with provider=${settings.provider}, isAuthenticated=${isAuthenticated()}`);
224
+ // Check for cloud authentication first
225
+ if (isAuthenticated()) {
226
+ const creds = loadCredentials();
227
+ if (creds?.llm) {
228
+ // Get the selected provider from cloud credentials (set by setSelectedCloudProvider)
229
+ const selectedProvider = getSelectedCloudProvider();
230
+ debugLog(`[createClient] Cloud auth active, selectedProvider from creds: ${selectedProvider}`);
231
+ if (!selectedProvider) {
232
+ debugLog(`[createClient] No cloud provider selected - falling back to local`);
233
+ console.log(color('Cloud authenticated but no provider selected - using local API keys', Colors.yellow));
234
+ }
235
+ else {
236
+ const cloudProvider = selectedProvider.toLowerCase();
237
+ // Get the model from settings (which was already set by handleModelSelect)
238
+ // Don't override - just read what's already configured
239
+ let model;
240
+ if (cloudProvider === 'anthropic') {
241
+ model = settings.anthropic.model;
166
242
  }
167
- else if (result.message) {
168
- console.log(result.message);
243
+ else if (cloudProvider === 'openai') {
244
+ model = settings.openai.model;
169
245
  }
170
- // Recreate client if settings changed
171
- if (['/login', '/provider', '/model'].some((cmd) => userInput.startsWith(cmd))) {
172
- client = createLLMClient(settings);
246
+ else if (cloudProvider === 'azure') {
247
+ model = settings.azure.deployment;
173
248
  }
174
- continue;
249
+ else {
250
+ model = getCloudModel(cloudProvider, creds.llm);
251
+ }
252
+ debugLog(`[createClient] Using cloud provider=${cloudProvider}, model=${model}`);
253
+ debugLog(`[createClient] Settings state: provider=${settings.provider}, anthropic.model=${settings.anthropic.model}, openai.model=${settings.openai.model}`);
254
+ return {
255
+ client: createClientFromCloudConfig(cloudProvider, creds.llm),
256
+ isCloud: true,
257
+ cloudProvider,
258
+ };
175
259
  }
176
260
  }
177
- process.stdout.write(color('\nAssistant: ', Colors.blue));
178
- try {
179
- const generator = runAssistant(client, settings, userInput, messages);
180
- let result = await generator.next();
181
- while (!result.done) {
182
- process.stdout.write(result.value);
183
- result = await generator.next();
184
- }
185
- // Update messages with the returned value
186
- if (result.value) {
187
- messages = result.value;
188
- }
189
- console.log();
261
+ else {
262
+ debugLog(`[createClient] Cloud auth but no LLM config`);
190
263
  }
191
- catch (e) {
192
- console.log(color(`\nError: ${e instanceof Error ? e.message : String(e)}`, Colors.red));
193
- if (e instanceof Error && e.stack) {
194
- console.error(e.stack);
264
+ // If cloud authenticated but no LLM config, fall back to local settings
265
+ console.log(color('Cloud authenticated but no LLM config - using local API keys', Colors.yellow));
266
+ }
267
+ // Fall back to local API keys
268
+ debugLog(`[createClient] Using local provider=${settings.provider}`);
269
+ return { client: createLLMClient(settings), isCloud: false };
270
+ }
271
+ /**
272
+ * Run in interactive conversation mode using the persistent ChatApp.
273
+ */
274
+ async function interactiveMode(settings) {
275
+ console.log(color('\nOrca Deployment Assistant', Colors.bold));
276
+ console.log(color('='.repeat(40), Colors.dim));
277
+ // Show authentication status
278
+ if (isAuthenticated()) {
279
+ const creds = loadCredentials();
280
+ const selectedProvider = getSelectedCloudProvider();
281
+ if (creds) {
282
+ console.log(`Cloud: ${color(creds.user.email, Colors.cyan)} (${creds.org_id})`);
283
+ if (selectedProvider) {
284
+ console.log(`Provider: ${color(selectedProvider, Colors.cyan)}`);
195
285
  }
196
286
  }
197
287
  }
198
- rl.close();
199
- process.removeListener('SIGINT', handleSigint);
288
+ else {
289
+ console.log(`Provider: ${color(settings.provider, Colors.cyan)}`);
290
+ }
291
+ console.log('Type /help for commands, /token for cloud authentication.\n');
292
+ // Render the persistent ChatApp
293
+ const instance = render(React.createElement(ChatApp, {
294
+ settings,
295
+ createClient,
296
+ onUpdateCommand: runUpdateCommand,
297
+ }), {
298
+ exitOnCtrlC: false, // We handle Ctrl+C in the component
299
+ });
300
+ // Wait for the app to exit
301
+ await instance.waitUntilExit();
302
+ // Restore terminal state
303
+ if (process.stdin.isTTY) {
304
+ process.stdin.setRawMode(false);
305
+ }
306
+ console.log('\nGoodbye!');
200
307
  }
201
308
  /**
202
309
  * Run a single query and exit.
203
310
  */
204
311
  async function singleQueryMode(settings, query) {
205
312
  console.log(color('Orca Deployment Assistant', Colors.bold));
206
- console.log(color(`Provider: ${settings.provider}`, Colors.dim));
313
+ // Show authentication status
314
+ if (isAuthenticated()) {
315
+ const creds = loadCredentials();
316
+ if (creds) {
317
+ console.log(color(`Cloud: ${creds.user.email} (${creds.org_id})`, Colors.dim));
318
+ }
319
+ }
320
+ else {
321
+ console.log(color(`Provider: ${settings.provider}`, Colors.dim));
322
+ }
207
323
  console.log(color(`\nQuery: ${query}\n`, Colors.dim));
208
- const client = createLLMClient(settings);
324
+ const { client } = createClient(settings);
209
325
  try {
210
- const generator = runAssistant(client, settings, query);
211
- let result = await generator.next();
212
- while (!result.done) {
213
- process.stdout.write(result.value);
214
- result = await generator.next();
326
+ // Create AbortController for escape-to-interrupt
327
+ const abortController = new AbortController();
328
+ // Set up keypress listener for Escape key during streaming
329
+ const stdin = process.stdin;
330
+ const wasRaw = stdin.isRaw;
331
+ if (stdin.isTTY) {
332
+ stdin.setRawMode(true);
333
+ stdin.resume();
334
+ const handleKeypress = (data) => {
335
+ const key = data.toString();
336
+ // Check for standalone Escape key only (not escape sequences like arrow keys)
337
+ // Arrow keys send sequences like \x1b[A (up), \x1b[B (down), etc.
338
+ // We only want to interrupt on a standalone Escape press
339
+ if (key === '\x1b') {
340
+ abortController.abort();
341
+ }
342
+ };
343
+ stdin.on('data', handleKeypress);
344
+ // Cleanup function to restore terminal state
345
+ const cleanup = () => {
346
+ stdin.removeListener('data', handleKeypress);
347
+ stdin.setRawMode(wasRaw || false);
348
+ };
349
+ const generator = runAssistant(client, settings, query, [], abortController.signal);
350
+ let result = await generator.next();
351
+ while (!result.done) {
352
+ process.stdout.write(result.value);
353
+ result = await generator.next();
354
+ }
355
+ cleanup();
356
+ console.log();
357
+ }
358
+ else {
359
+ // Non-TTY mode (piped input) - no escape handling
360
+ const generator = runAssistant(client, settings, query);
361
+ let result = await generator.next();
362
+ while (!result.done) {
363
+ process.stdout.write(result.value);
364
+ result = await generator.next();
365
+ }
366
+ console.log();
215
367
  }
216
- console.log();
217
368
  }
218
369
  catch (e) {
370
+ // Cleanup terminal state in case of error
371
+ if (process.stdin.isTTY && process.stdin.isRaw) {
372
+ process.stdin.setRawMode(false);
373
+ }
374
+ // Handle abort error gracefully (user interrupted with Escape)
375
+ if (e instanceof Error && (e.name === 'AbortError' || e.message.includes('aborted'))) {
376
+ console.log(color(' (interrupted)', Colors.dim));
377
+ process.exit(0);
378
+ }
219
379
  console.log(color(`\nError: ${e instanceof Error ? e.message : String(e)}`, Colors.red));
220
380
  process.exit(1);
221
381
  }
@@ -229,7 +389,7 @@ function parseArgs() {
229
389
  query: undefined,
230
390
  interactive: false,
231
391
  deploymentDir: undefined,
232
- login: false,
392
+ token: false,
233
393
  };
234
394
  for (let i = 0; i < args.length; i++) {
235
395
  const arg = args[i];
@@ -239,8 +399,8 @@ function parseArgs() {
239
399
  else if (arg === '-d' || arg === '--deployment-dir') {
240
400
  result.deploymentDir = args[++i];
241
401
  }
242
- else if (arg === '--login') {
243
- result.login = true;
402
+ else if (arg === '--token') {
403
+ result.token = true;
244
404
  }
245
405
  else if (arg === '-h' || arg === '--help') {
246
406
  console.log(`
@@ -252,7 +412,7 @@ Usage:
252
412
  Options:
253
413
  -i, --interactive Force interactive mode
254
414
  -d, --deployment-dir Path to deployment directory
255
- --login Configure LLM credentials
415
+ --token Configure LLM credentials
256
416
  -h, --help Show this help
257
417
 
258
418
  Examples:
@@ -279,21 +439,11 @@ async function main() {
279
439
  }
280
440
  // Load settings
281
441
  const settings = loadSettings();
282
- // Handle --login flag
283
- if (args.login) {
442
+ // Handle --token flag
443
+ if (args.token) {
284
444
  await configureProvider(settings);
285
445
  return;
286
446
  }
287
- // Check if configured, prompt if not
288
- if (!settings.isConfigured()) {
289
- console.log(color('Welcome to Orca Deployment Assistant!', Colors.bold));
290
- console.log(color("First, let's configure your LLM provider.\n", Colors.dim));
291
- const configured = await configureProvider(settings);
292
- if (!configured) {
293
- process.exit(1);
294
- }
295
- console.log();
296
- }
297
447
  // Run appropriate mode
298
448
  if (args.query && !args.interactive) {
299
449
  await singleQueryMode(settings, args.query);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}