@syntero/orca-cli 1.3.2 → 1.3.4

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/dist/assistant/anthropic.js +1 -1
  2. package/dist/assistant/anthropic.js.map +1 -1
  3. package/dist/assistant/helpers.js +1 -1
  4. package/dist/assistant/helpers.js.map +1 -1
  5. package/dist/assistant/openai.js +1 -1
  6. package/dist/assistant/openai.js.map +1 -1
  7. package/dist/assistant/prompts.d.ts.map +1 -1
  8. package/dist/assistant/prompts.js +63 -34
  9. package/dist/assistant/prompts.js.map +1 -1
  10. package/dist/assistant/types.d.ts +1 -1
  11. package/dist/assistant/types.d.ts.map +1 -1
  12. package/dist/components/ChatApp.d.ts.map +1 -1
  13. package/dist/components/ChatApp.js +8 -6
  14. package/dist/components/ChatApp.js.map +1 -1
  15. package/dist/components/InputFooter.d.ts.map +1 -1
  16. package/dist/components/InputFooter.js +34 -695
  17. package/dist/components/InputFooter.js.map +1 -1
  18. package/dist/components/ResumeMenu.d.ts.map +1 -1
  19. package/dist/components/ResumeMenu.js +24 -3
  20. package/dist/components/ResumeMenu.js.map +1 -1
  21. package/dist/components/hooks/useCommandPalette.d.ts +13 -0
  22. package/dist/components/hooks/useCommandPalette.d.ts.map +1 -0
  23. package/dist/components/hooks/useCommandPalette.js +38 -0
  24. package/dist/components/hooks/useCommandPalette.js.map +1 -0
  25. package/dist/components/hooks/useInputKeyHandler.d.ts +14 -0
  26. package/dist/components/hooks/useInputKeyHandler.d.ts.map +1 -0
  27. package/dist/components/hooks/useInputKeyHandler.js +584 -0
  28. package/dist/components/hooks/useInputKeyHandler.js.map +1 -0
  29. package/dist/components/hooks/useInputLines.d.ts +18 -0
  30. package/dist/components/hooks/useInputLines.d.ts.map +1 -0
  31. package/dist/components/hooks/useInputLines.js +46 -0
  32. package/dist/components/hooks/useInputLines.js.map +1 -0
  33. package/dist/components/hooks/useMenus.d.ts +60 -0
  34. package/dist/components/hooks/useMenus.d.ts.map +1 -0
  35. package/dist/components/hooks/useMenus.js +266 -0
  36. package/dist/components/hooks/useMenus.js.map +1 -0
  37. package/dist/components/hooks/usePasteBlocks.d.ts +14 -0
  38. package/dist/components/hooks/usePasteBlocks.d.ts.map +1 -0
  39. package/dist/components/hooks/usePasteBlocks.js +32 -0
  40. package/dist/components/hooks/usePasteBlocks.js.map +1 -0
  41. package/dist/models.js +4 -4
  42. package/dist/settings.js +1 -1
  43. package/dist/tools/auth-tools.d.ts +26 -0
  44. package/dist/tools/auth-tools.d.ts.map +1 -0
  45. package/dist/tools/auth-tools.js +53 -0
  46. package/dist/tools/auth-tools.js.map +1 -0
  47. package/dist/tools/command.d.ts +28 -0
  48. package/dist/tools/command.d.ts.map +1 -0
  49. package/dist/tools/command.js +76 -0
  50. package/dist/tools/command.js.map +1 -0
  51. package/dist/tools/database.d.ts +19 -0
  52. package/dist/tools/database.d.ts.map +1 -0
  53. package/dist/tools/database.js +90 -0
  54. package/dist/tools/database.js.map +1 -0
  55. package/dist/tools/deployment.d.ts +195 -0
  56. package/dist/tools/deployment.d.ts.map +1 -0
  57. package/dist/tools/deployment.js +324 -0
  58. package/dist/tools/deployment.js.map +1 -0
  59. package/dist/tools/docker.d.ts +51 -0
  60. package/dist/tools/docker.d.ts.map +1 -0
  61. package/dist/tools/docker.js +68 -0
  62. package/dist/tools/docker.js.map +1 -0
  63. package/dist/tools/env.d.ts +18 -0
  64. package/dist/tools/env.d.ts.map +1 -0
  65. package/dist/tools/env.js +52 -0
  66. package/dist/tools/env.js.map +1 -0
  67. package/dist/tools/filesystem.d.ts +77 -0
  68. package/dist/tools/filesystem.d.ts.map +1 -0
  69. package/dist/tools/filesystem.js +138 -0
  70. package/dist/tools/filesystem.js.map +1 -0
  71. package/dist/tools/handler.d.ts +5 -0
  72. package/dist/tools/handler.d.ts.map +1 -0
  73. package/dist/tools/handler.js +62 -0
  74. package/dist/tools/handler.js.map +1 -0
  75. package/dist/tools/index.d.ts +614 -0
  76. package/dist/tools/index.d.ts.map +1 -0
  77. package/dist/tools/index.js +40 -0
  78. package/dist/tools/index.js.map +1 -0
  79. package/dist/tools/inference.d.ts +127 -0
  80. package/dist/tools/inference.d.ts.map +1 -0
  81. package/dist/tools/inference.js +318 -0
  82. package/dist/tools/inference.js.map +1 -0
  83. package/dist/tools/shared.d.ts +21 -0
  84. package/dist/tools/shared.d.ts.map +1 -0
  85. package/dist/tools/shared.js +75 -0
  86. package/dist/tools/shared.js.map +1 -0
  87. package/dist/tools/types.d.ts +2 -0
  88. package/dist/tools/types.d.ts.map +1 -0
  89. package/dist/tools/types.js +3 -0
  90. package/dist/tools/types.js.map +1 -0
  91. package/package.json +4 -4
  92. package/dist/tools.d.ts +0 -908
  93. package/dist/tools.d.ts.map +0 -1
  94. package/dist/tools.js +0 -774
  95. package/dist/tools.js.map +0 -1
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Inference tools — on-premise vLLM deployment assistance.
3
+ *
4
+ * Tools for listing exportable agents, getting deployment configs,
5
+ * downloading adapters, testing endpoints, and configuring local LLM.
6
+ */
7
+ export declare const INFERENCE_TOOLS: ({
8
+ name: string;
9
+ description: string;
10
+ input_schema: {
11
+ type: string;
12
+ properties: {
13
+ agent_id?: undefined;
14
+ target_dir?: undefined;
15
+ endpoint_url?: undefined;
16
+ model?: undefined;
17
+ prompt?: undefined;
18
+ model_name?: undefined;
19
+ };
20
+ required?: undefined;
21
+ };
22
+ } | {
23
+ name: string;
24
+ description: string;
25
+ input_schema: {
26
+ type: string;
27
+ properties: {
28
+ agent_id: {
29
+ type: string;
30
+ description: string;
31
+ };
32
+ target_dir?: undefined;
33
+ endpoint_url?: undefined;
34
+ model?: undefined;
35
+ prompt?: undefined;
36
+ model_name?: undefined;
37
+ };
38
+ required: string[];
39
+ };
40
+ } | {
41
+ name: string;
42
+ description: string;
43
+ input_schema: {
44
+ type: string;
45
+ properties: {
46
+ agent_id: {
47
+ type: string;
48
+ description: string;
49
+ };
50
+ target_dir: {
51
+ type: string;
52
+ description: string;
53
+ };
54
+ endpoint_url?: undefined;
55
+ model?: undefined;
56
+ prompt?: undefined;
57
+ model_name?: undefined;
58
+ };
59
+ required: string[];
60
+ };
61
+ } | {
62
+ name: string;
63
+ description: string;
64
+ input_schema: {
65
+ type: string;
66
+ properties: {
67
+ endpoint_url: {
68
+ type: string;
69
+ description: string;
70
+ };
71
+ model: {
72
+ type: string;
73
+ description: string;
74
+ };
75
+ prompt: {
76
+ type: string;
77
+ description: string;
78
+ };
79
+ agent_id?: undefined;
80
+ target_dir?: undefined;
81
+ model_name?: undefined;
82
+ };
83
+ required: string[];
84
+ };
85
+ } | {
86
+ name: string;
87
+ description: string;
88
+ input_schema: {
89
+ type: string;
90
+ properties: {
91
+ endpoint_url: {
92
+ type: string;
93
+ description: string;
94
+ };
95
+ model_name: {
96
+ type: string;
97
+ description: string;
98
+ };
99
+ agent_id?: undefined;
100
+ target_dir?: undefined;
101
+ model?: undefined;
102
+ prompt?: undefined;
103
+ };
104
+ required: string[];
105
+ };
106
+ })[];
107
+ /**
108
+ * List agents ready for on-premise export.
109
+ */
110
+ export declare function handleListExportableAgents(): Promise<string>;
111
+ /**
112
+ * Get detailed export/deployment info for an agent.
113
+ */
114
+ export declare function handleGetAgentExportInfo(agentId: string): Promise<string>;
115
+ /**
116
+ * Download adapter from platform to local directory.
117
+ */
118
+ export declare function handleDownloadAdapter(agentId: string, targetDir?: string): Promise<string>;
119
+ /**
120
+ * Test an OpenAI-compatible inference endpoint.
121
+ */
122
+ export declare function handleTestInferenceEndpoint(endpointUrl: string, model: string, prompt?: string): Promise<string>;
123
+ /**
124
+ * Configure Orca to use a local vLLM endpoint.
125
+ */
126
+ export declare function handleConfigureLocalLlm(endpointUrl: string, modelName: string): Promise<string>;
127
+ //# sourceMappingURL=inference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inference.d.ts","sourceRoot":"","sources":["../../src/tools/inference.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwF3B,CAAC;AAEF;;GAEG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC,CAYlE;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAY/E;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqEhG;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAyFjB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAiCjB"}
@@ -0,0 +1,318 @@
1
+ /**
2
+ * Inference tools — on-premise vLLM deployment assistance.
3
+ *
4
+ * Tools for listing exportable agents, getting deployment configs,
5
+ * downloading adapters, testing endpoints, and configuring local LLM.
6
+ */
7
+ import * as fs from 'fs';
8
+ import * as path from 'path';
9
+ import * as os from 'os';
10
+ import * as https from 'https';
11
+ import * as http from 'http';
12
+ import { execSync } from 'child_process';
13
+ import { cloudRequest, loadCredentials } from '../auth.js';
14
+ export const INFERENCE_TOOLS = [
15
+ {
16
+ name: 'list_exportable_agents',
17
+ description: `List all agents that are ready for on-premise deployment.
18
+ Shows agents with successful training runs, including base model, adapter status,
19
+ VRAM requirements, and hardware recommendations.
20
+ Use this as the first step when helping a user set up on-premise inference.`,
21
+ input_schema: {
22
+ type: 'object',
23
+ properties: {},
24
+ },
25
+ },
26
+ {
27
+ name: 'get_agent_export_info',
28
+ description: `Get complete deployment configuration for an agent.
29
+ Returns base model details, adapter info, hardware requirements,
30
+ and ready-to-use vLLM launch commands (native and Docker).
31
+ Use after list_exportable_agents to get detailed setup instructions for a specific agent.`,
32
+ input_schema: {
33
+ type: 'object',
34
+ properties: {
35
+ agent_id: { type: 'string', description: 'The agent ID to get export info for' },
36
+ },
37
+ required: ['agent_id'],
38
+ },
39
+ },
40
+ {
41
+ name: 'download_adapter',
42
+ description: `Download a LoRA adapter from the platform to a local directory.
43
+ The adapter is streamed from the platform (which pulls from a private HuggingFace repo)
44
+ as a tar.gz archive and extracted locally. No HuggingFace account needed.
45
+ The adapter can then be loaded by vLLM using --lora-modules flag.`,
46
+ input_schema: {
47
+ type: 'object',
48
+ properties: {
49
+ agent_id: { type: 'string', description: 'The agent ID whose adapter to download' },
50
+ target_dir: {
51
+ type: 'string',
52
+ description: 'Directory to save the adapter to (default: ~/orca-adapters/<agent_id>)',
53
+ },
54
+ },
55
+ required: ['agent_id'],
56
+ },
57
+ },
58
+ {
59
+ name: 'test_inference_endpoint',
60
+ description: `Test an OpenAI-compatible inference endpoint (e.g. vLLM server).
61
+ Sends a simple chat completion request to verify the endpoint is running and responding.
62
+ Supports both base model and LoRA adapter testing.`,
63
+ input_schema: {
64
+ type: 'object',
65
+ properties: {
66
+ endpoint_url: {
67
+ type: 'string',
68
+ description: 'The vLLM endpoint URL (e.g. "http://192.168.1.100:8000/v1")',
69
+ },
70
+ model: {
71
+ type: 'string',
72
+ description: 'Model name to test (base model ID or LoRA adapter name)',
73
+ },
74
+ prompt: {
75
+ type: 'string',
76
+ description: 'Test prompt (default: "What is 2+2? Answer in one word.")',
77
+ },
78
+ },
79
+ required: ['endpoint_url', 'model'],
80
+ },
81
+ },
82
+ {
83
+ name: 'configure_local_llm',
84
+ description: `Point Orca at an on-premise vLLM server for inference.
85
+ Updates the organization's API keys configuration to use a local
86
+ OpenAI-compatible endpoint instead of cloud inference.`,
87
+ input_schema: {
88
+ type: 'object',
89
+ properties: {
90
+ endpoint_url: {
91
+ type: 'string',
92
+ description: 'The vLLM base URL (e.g. "http://192.168.1.100:8000/v1")',
93
+ },
94
+ model_name: {
95
+ type: 'string',
96
+ description: 'Model name as registered in vLLM (base model or adapter name)',
97
+ },
98
+ },
99
+ required: ['endpoint_url', 'model_name'],
100
+ },
101
+ },
102
+ ];
103
+ /**
104
+ * List agents ready for on-premise export.
105
+ */
106
+ export async function handleListExportableAgents() {
107
+ try {
108
+ const response = await cloudRequest('GET', '/api/v2/agent-store/exportable-agents');
109
+ if (response.status !== 200) {
110
+ return `Error: ${response.data?.message || `HTTP ${response.status}`}`;
111
+ }
112
+ return JSON.stringify(response.data, null, 2);
113
+ }
114
+ catch (e) {
115
+ return `Error: ${e instanceof Error ? e.message : String(e)}`;
116
+ }
117
+ }
118
+ /**
119
+ * Get detailed export/deployment info for an agent.
120
+ */
121
+ export async function handleGetAgentExportInfo(agentId) {
122
+ try {
123
+ const response = await cloudRequest('GET', `/api/v2/agent-store/agents/${agentId}/export-info`);
124
+ if (response.status !== 200) {
125
+ return `Error: ${response.data?.message || `HTTP ${response.status}`}`;
126
+ }
127
+ return JSON.stringify(response.data, null, 2);
128
+ }
129
+ catch (e) {
130
+ return `Error: ${e instanceof Error ? e.message : String(e)}`;
131
+ }
132
+ }
133
+ /**
134
+ * Download adapter from platform to local directory.
135
+ */
136
+ export async function handleDownloadAdapter(agentId, targetDir) {
137
+ try {
138
+ const creds = loadCredentials();
139
+ if (!creds) {
140
+ return 'Error: Not authenticated. Run /token first.';
141
+ }
142
+ const adapterDir = targetDir || path.join(os.homedir(), 'orca-adapters', agentId);
143
+ // Create directory if it doesn't exist
144
+ fs.mkdirSync(adapterDir, { recursive: true });
145
+ const url = `${creds.endpoint}/api/v2/agent-store/agents/${agentId}/download-adapter`;
146
+ return new Promise((resolve) => {
147
+ const protocol = url.startsWith('https') ? https : http;
148
+ const req = protocol.get(url, {
149
+ headers: { Authorization: `Bearer ${creds.token}` },
150
+ timeout: 300000, // 5 min — backend downloads from HF before responding
151
+ }, (res) => {
152
+ if (res.statusCode !== 200) {
153
+ let body = '';
154
+ res.on('data', (chunk) => { body += chunk; });
155
+ res.on('end', () => {
156
+ try {
157
+ const parsed = JSON.parse(body);
158
+ resolve(`Error: ${parsed.message || `HTTP ${res.statusCode}`}`);
159
+ }
160
+ catch {
161
+ resolve(`Error: HTTP ${res.statusCode}`);
162
+ }
163
+ });
164
+ return;
165
+ }
166
+ // Save tar.gz to temp file, then extract
167
+ const tmpFile = path.join(os.tmpdir(), `orca-adapter-${agentId}.tar.gz`);
168
+ const writeStream = fs.createWriteStream(tmpFile);
169
+ res.pipe(writeStream);
170
+ writeStream.on('finish', () => {
171
+ // Extract using tar command
172
+ try {
173
+ execSync(`tar xzf "${tmpFile}" -C "${adapterDir}" --strip-components=1`, {
174
+ timeout: 120000,
175
+ });
176
+ fs.unlinkSync(tmpFile);
177
+ resolve(JSON.stringify({
178
+ status: 'success',
179
+ adapter_path: adapterDir,
180
+ message: `Adapter downloaded and extracted to ${adapterDir}`,
181
+ }));
182
+ }
183
+ catch (extractErr) {
184
+ resolve(`Error extracting adapter: ${extractErr instanceof Error ? extractErr.message : String(extractErr)}`);
185
+ }
186
+ });
187
+ writeStream.on('error', (err) => {
188
+ resolve(`Error writing adapter: ${err.message}`);
189
+ });
190
+ });
191
+ req.on('error', (err) => {
192
+ resolve(`Error downloading adapter: ${err.message}`);
193
+ });
194
+ });
195
+ }
196
+ catch (e) {
197
+ return `Error: ${e instanceof Error ? e.message : String(e)}`;
198
+ }
199
+ }
200
+ /**
201
+ * Test an OpenAI-compatible inference endpoint.
202
+ */
203
+ export async function handleTestInferenceEndpoint(endpointUrl, model, prompt) {
204
+ const testPrompt = prompt || 'What is 2+2? Answer in one word.';
205
+ // Ensure URL ends properly
206
+ const baseUrl = endpointUrl.replace(/\/+$/, '');
207
+ const chatUrl = `${baseUrl}/chat/completions`;
208
+ const body = JSON.stringify({
209
+ model,
210
+ messages: [{ role: 'user', content: testPrompt }],
211
+ max_tokens: 100,
212
+ temperature: 0.1,
213
+ });
214
+ return new Promise((resolve) => {
215
+ const protocol = chatUrl.startsWith('https') ? https : http;
216
+ const parsedUrl = new URL(chatUrl);
217
+ const startTime = Date.now();
218
+ const req = protocol.request({
219
+ hostname: parsedUrl.hostname,
220
+ port: parsedUrl.port,
221
+ path: parsedUrl.pathname,
222
+ method: 'POST',
223
+ headers: {
224
+ 'Content-Type': 'application/json',
225
+ 'Content-Length': Buffer.byteLength(body),
226
+ },
227
+ timeout: 60000,
228
+ }, (res) => {
229
+ let data = '';
230
+ res.on('data', (chunk) => { data += chunk; });
231
+ res.on('end', () => {
232
+ const latencyMs = Date.now() - startTime;
233
+ try {
234
+ const parsed = JSON.parse(data);
235
+ if (parsed.choices && parsed.choices.length > 0) {
236
+ resolve(JSON.stringify({
237
+ status: 'success',
238
+ model: parsed.model,
239
+ response: parsed.choices[0].message?.content?.trim(),
240
+ latency_ms: latencyMs,
241
+ usage: parsed.usage,
242
+ }, null, 2));
243
+ }
244
+ else {
245
+ resolve(JSON.stringify({
246
+ status: 'error',
247
+ message: 'No choices in response',
248
+ raw: data.substring(0, 500),
249
+ latency_ms: latencyMs,
250
+ }));
251
+ }
252
+ }
253
+ catch {
254
+ resolve(JSON.stringify({
255
+ status: 'error',
256
+ message: `Invalid JSON response (HTTP ${res.statusCode})`,
257
+ raw: data.substring(0, 500),
258
+ latency_ms: latencyMs,
259
+ }));
260
+ }
261
+ });
262
+ });
263
+ req.on('error', (err) => {
264
+ resolve(JSON.stringify({
265
+ status: 'error',
266
+ message: err.message,
267
+ hint: err.message.includes('ECONNREFUSED')
268
+ ? 'Connection refused. Is the vLLM server running? Check: docker ps or ps aux | grep vllm'
269
+ : undefined,
270
+ }));
271
+ });
272
+ req.on('timeout', () => {
273
+ req.destroy();
274
+ resolve(JSON.stringify({
275
+ status: 'error',
276
+ message: 'Request timed out after 60 seconds',
277
+ hint: 'The first request to vLLM may be slow while the model loads. Try again in a minute.',
278
+ }));
279
+ });
280
+ req.write(body);
281
+ req.end();
282
+ });
283
+ }
284
+ /**
285
+ * Configure Orca to use a local vLLM endpoint.
286
+ */
287
+ export async function handleConfigureLocalLlm(endpointUrl, modelName) {
288
+ try {
289
+ const creds = loadCredentials();
290
+ if (!creds) {
291
+ return 'Error: Not authenticated. Run /token first.';
292
+ }
293
+ const orgId = creds.org_id;
294
+ if (!orgId) {
295
+ return 'Error: No org_id in credentials.';
296
+ }
297
+ const response = await cloudRequest('PUT', `/api/v1/organizations/${orgId}/api-keys`, {
298
+ openai: {
299
+ api_key: 'not-needed',
300
+ endpoint: endpointUrl,
301
+ model: modelName,
302
+ },
303
+ });
304
+ if (response.status !== 200) {
305
+ return `Error: ${response.data?.message || `HTTP ${response.status}`}`;
306
+ }
307
+ return JSON.stringify({
308
+ status: 'success',
309
+ message: `Orca configured to use local vLLM at ${endpointUrl}`,
310
+ model: modelName,
311
+ endpoint: endpointUrl,
312
+ }, null, 2);
313
+ }
314
+ catch (e) {
315
+ return `Error: ${e instanceof Error ? e.message : String(e)}`;
316
+ }
317
+ }
318
+ //# sourceMappingURL=inference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inference.js","sourceRoot":"","sources":["../../src/tools/inference.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Resolve a path relative to deployment directory.
3
+ */
4
+ export declare function resolvePath(filePath: string): string;
5
+ /**
6
+ * Make an HTTPS GET request and return the parsed JSON response.
7
+ */
8
+ export declare function httpsGetJson(url: string, headers: Record<string, string>): Promise<Record<string, unknown>>;
9
+ /**
10
+ * Format file mode (permissions) as a string like 'drwxr-xr-x'.
11
+ */
12
+ export declare function formatMode(mode: number, isDir: boolean, isLink: boolean): string;
13
+ /**
14
+ * Format file size in human-readable format.
15
+ */
16
+ export declare function formatSize(size: number): string;
17
+ /**
18
+ * Format date in ls-like format.
19
+ */
20
+ export declare function formatDate(date: Date): string;
21
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA0B3G;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAchF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAO7C"}
@@ -0,0 +1,75 @@
1
+ import * as path from 'path';
2
+ import * as https from 'https';
3
+ import { getDeploymentDir } from '../settings.js';
4
+ /**
5
+ * Resolve a path relative to deployment directory.
6
+ */
7
+ export function resolvePath(filePath) {
8
+ const p = path.isAbsolute(filePath) ? filePath : path.join(getDeploymentDir(), filePath);
9
+ return p;
10
+ }
11
+ /**
12
+ * Make an HTTPS GET request and return the parsed JSON response.
13
+ */
14
+ export function httpsGetJson(url, headers) {
15
+ return new Promise((resolve, reject) => {
16
+ const parsedUrl = new URL(url);
17
+ const options = {
18
+ hostname: parsedUrl.hostname,
19
+ port: parsedUrl.port || 443,
20
+ path: parsedUrl.pathname + parsedUrl.search,
21
+ method: 'GET',
22
+ headers,
23
+ };
24
+ const req = https.request(options, (res) => {
25
+ let data = '';
26
+ res.on('data', (chunk) => { data += chunk; });
27
+ res.on('end', () => {
28
+ try {
29
+ resolve(JSON.parse(data));
30
+ }
31
+ catch {
32
+ reject(new Error(`Invalid JSON response from ${url}: ${data.substring(0, 200)}`));
33
+ }
34
+ });
35
+ });
36
+ req.on('error', (err) => reject(err));
37
+ req.end();
38
+ });
39
+ }
40
+ /**
41
+ * Format file mode (permissions) as a string like 'drwxr-xr-x'.
42
+ */
43
+ export function formatMode(mode, isDir, isLink) {
44
+ const typeChar = isLink ? 'l' : isDir ? 'd' : '-';
45
+ const perms = [
46
+ (mode & 0o400) ? 'r' : '-',
47
+ (mode & 0o200) ? 'w' : '-',
48
+ (mode & 0o100) ? 'x' : '-',
49
+ (mode & 0o040) ? 'r' : '-',
50
+ (mode & 0o020) ? 'w' : '-',
51
+ (mode & 0o010) ? 'x' : '-',
52
+ (mode & 0o004) ? 'r' : '-',
53
+ (mode & 0o002) ? 'w' : '-',
54
+ (mode & 0o001) ? 'x' : '-',
55
+ ].join('');
56
+ return typeChar + perms;
57
+ }
58
+ /**
59
+ * Format file size in human-readable format.
60
+ */
61
+ export function formatSize(size) {
62
+ return size.toString().padStart(8);
63
+ }
64
+ /**
65
+ * Format date in ls-like format.
66
+ */
67
+ export function formatDate(date) {
68
+ const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
69
+ const month = months[date.getMonth()];
70
+ const day = date.getDate().toString().padStart(2);
71
+ const hours = date.getHours().toString().padStart(2, '0');
72
+ const mins = date.getMinutes().toString().padStart(2, '0');
73
+ return `${month} ${day} ${hours}:${mins}`;
74
+ }
75
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { detectDangerousCommand, checkCommand, allCategoriesApproved, type DangerousCommand, type DangerCheckResult, type RiskLevel, } from '../confirmation/index.js';
2
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,SAAS,GACf,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Re-export dangerous command detection for use by other modules
2
+ export { detectDangerousCommand, checkCommand, allCategoriesApproved, } from '../confirmation/index.js';
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,qBAAqB,GAItB,MAAM,0BAA0B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syntero/orca-cli",
3
- "version": "1.3.2",
3
+ "version": "1.3.4",
4
4
  "description": "LLM-powered deployment troubleshooting assistant for Orca",
5
5
  "type": "module",
6
6
  "bin": {
@@ -37,11 +37,11 @@
37
37
  "@types/tar": "^6.1.13",
38
38
  "better-sqlite3": "^12.6.2",
39
39
  "chalk": "^5.6.2",
40
- "ink": "^5.2.1",
40
+ "ink": "^6.6.0",
41
41
  "ink-spinner": "^5.0.0",
42
42
  "ink-text-input": "^6.0.0",
43
43
  "openai": "^6.16.0",
44
- "react": "^18.3.1",
44
+ "react": "^19.2.4",
45
45
  "semver": "^7.7.3",
46
46
  "tar": "^7.5.6",
47
47
  "update-notifier": "^7.3.1"
@@ -49,7 +49,7 @@
49
49
  "devDependencies": {
50
50
  "@types/better-sqlite3": "^7.6.12",
51
51
  "@types/node": "^22.10.5",
52
- "@types/react": "^18.3.27",
52
+ "@types/react": "^19.1.2",
53
53
  "@types/semver": "^7.7.1",
54
54
  "@types/update-notifier": "^6.0.8",
55
55
  "tsx": "^4.21.0",