@syntero/orca-cli 1.3.2 → 1.3.3

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 (60) 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 +41 -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/tools/auth-tools.d.ts +26 -0
  13. package/dist/tools/auth-tools.d.ts.map +1 -0
  14. package/dist/tools/auth-tools.js +53 -0
  15. package/dist/tools/auth-tools.js.map +1 -0
  16. package/dist/tools/command.d.ts +28 -0
  17. package/dist/tools/command.d.ts.map +1 -0
  18. package/dist/tools/command.js +76 -0
  19. package/dist/tools/command.js.map +1 -0
  20. package/dist/tools/database.d.ts +19 -0
  21. package/dist/tools/database.d.ts.map +1 -0
  22. package/dist/tools/database.js +90 -0
  23. package/dist/tools/database.js.map +1 -0
  24. package/dist/tools/deployment.d.ts +195 -0
  25. package/dist/tools/deployment.d.ts.map +1 -0
  26. package/dist/tools/deployment.js +324 -0
  27. package/dist/tools/deployment.js.map +1 -0
  28. package/dist/tools/docker.d.ts +51 -0
  29. package/dist/tools/docker.d.ts.map +1 -0
  30. package/dist/tools/docker.js +68 -0
  31. package/dist/tools/docker.js.map +1 -0
  32. package/dist/tools/env.d.ts +18 -0
  33. package/dist/tools/env.d.ts.map +1 -0
  34. package/dist/tools/env.js +52 -0
  35. package/dist/tools/env.js.map +1 -0
  36. package/dist/tools/filesystem.d.ts +77 -0
  37. package/dist/tools/filesystem.d.ts.map +1 -0
  38. package/dist/tools/filesystem.js +138 -0
  39. package/dist/tools/filesystem.js.map +1 -0
  40. package/dist/tools/handler.d.ts +5 -0
  41. package/dist/tools/handler.d.ts.map +1 -0
  42. package/dist/tools/handler.js +51 -0
  43. package/dist/tools/handler.js.map +1 -0
  44. package/dist/tools/index.d.ts +462 -0
  45. package/dist/tools/index.d.ts.map +1 -0
  46. package/dist/tools/index.js +38 -0
  47. package/dist/tools/index.js.map +1 -0
  48. package/dist/tools/shared.d.ts +21 -0
  49. package/dist/tools/shared.d.ts.map +1 -0
  50. package/dist/tools/shared.js +75 -0
  51. package/dist/tools/shared.js.map +1 -0
  52. package/dist/tools/types.d.ts +2 -0
  53. package/dist/tools/types.d.ts.map +1 -0
  54. package/dist/tools/types.js +3 -0
  55. package/dist/tools/types.js.map +1 -0
  56. package/package.json +1 -1
  57. package/dist/tools.d.ts +0 -908
  58. package/dist/tools.d.ts.map +0 -1
  59. package/dist/tools.js +0 -774
  60. package/dist/tools.js.map +0 -1
@@ -0,0 +1,195 @@
1
+ export declare const DEPLOYMENT_TOOLS: ({
2
+ name: string;
3
+ description: string;
4
+ input_schema: {
5
+ type: string;
6
+ properties: {
7
+ target_dir: {
8
+ type: string;
9
+ description: string;
10
+ };
11
+ path?: undefined;
12
+ event?: undefined;
13
+ version?: undefined;
14
+ previous_version?: undefined;
15
+ status?: undefined;
16
+ notes?: undefined;
17
+ limit?: undefined;
18
+ include_prerelease?: undefined;
19
+ org_id?: undefined;
20
+ };
21
+ required: string[];
22
+ };
23
+ } | {
24
+ name: string;
25
+ description: string;
26
+ input_schema: {
27
+ type: string;
28
+ properties: {
29
+ path: {
30
+ type: string;
31
+ description: string;
32
+ };
33
+ target_dir?: undefined;
34
+ event?: undefined;
35
+ version?: undefined;
36
+ previous_version?: undefined;
37
+ status?: undefined;
38
+ notes?: undefined;
39
+ limit?: undefined;
40
+ include_prerelease?: undefined;
41
+ org_id?: undefined;
42
+ };
43
+ required: string[];
44
+ };
45
+ } | {
46
+ name: string;
47
+ description: string;
48
+ input_schema: {
49
+ type: string;
50
+ properties: {
51
+ target_dir?: undefined;
52
+ path?: undefined;
53
+ event?: undefined;
54
+ version?: undefined;
55
+ previous_version?: undefined;
56
+ status?: undefined;
57
+ notes?: undefined;
58
+ limit?: undefined;
59
+ include_prerelease?: undefined;
60
+ org_id?: undefined;
61
+ };
62
+ required: never[];
63
+ };
64
+ } | {
65
+ name: string;
66
+ description: string;
67
+ input_schema: {
68
+ type: string;
69
+ properties: {
70
+ event: {
71
+ type: string;
72
+ enum: string[];
73
+ description: string;
74
+ };
75
+ version: {
76
+ type: string;
77
+ description: string;
78
+ };
79
+ previous_version: {
80
+ type: string;
81
+ description: string;
82
+ };
83
+ status: {
84
+ type: string;
85
+ enum: string[];
86
+ description: string;
87
+ };
88
+ notes: {
89
+ type: string;
90
+ description: string;
91
+ };
92
+ target_dir?: undefined;
93
+ path?: undefined;
94
+ limit?: undefined;
95
+ include_prerelease?: undefined;
96
+ org_id?: undefined;
97
+ };
98
+ required: string[];
99
+ };
100
+ } | {
101
+ name: string;
102
+ description: string;
103
+ input_schema: {
104
+ type: string;
105
+ properties: {
106
+ limit: {
107
+ type: string;
108
+ description: string;
109
+ };
110
+ target_dir?: undefined;
111
+ path?: undefined;
112
+ event?: undefined;
113
+ version?: undefined;
114
+ previous_version?: undefined;
115
+ status?: undefined;
116
+ notes?: undefined;
117
+ include_prerelease?: undefined;
118
+ org_id?: undefined;
119
+ };
120
+ required?: undefined;
121
+ };
122
+ } | {
123
+ name: string;
124
+ description: string;
125
+ input_schema: {
126
+ type: string;
127
+ properties: {
128
+ include_prerelease: {
129
+ type: string;
130
+ description: string;
131
+ };
132
+ target_dir?: undefined;
133
+ path?: undefined;
134
+ event?: undefined;
135
+ version?: undefined;
136
+ previous_version?: undefined;
137
+ status?: undefined;
138
+ notes?: undefined;
139
+ limit?: undefined;
140
+ org_id?: undefined;
141
+ };
142
+ required?: undefined;
143
+ };
144
+ } | {
145
+ name: string;
146
+ description: string;
147
+ input_schema: {
148
+ type: string;
149
+ properties: {
150
+ org_id: {
151
+ type: string;
152
+ description: string;
153
+ };
154
+ target_dir?: undefined;
155
+ path?: undefined;
156
+ event?: undefined;
157
+ version?: undefined;
158
+ previous_version?: undefined;
159
+ status?: undefined;
160
+ notes?: undefined;
161
+ limit?: undefined;
162
+ include_prerelease?: undefined;
163
+ };
164
+ required: string[];
165
+ };
166
+ })[];
167
+ /**
168
+ * Handle downloading deployment files.
169
+ */
170
+ export declare function handleDownloadDeploymentFiles(targetDir: string): Promise<string>;
171
+ /**
172
+ * Handle save_deployment_dir tool call.
173
+ */
174
+ export declare function handleSaveDeploymentDir(deployPath: string): string;
175
+ /**
176
+ * Handle get_deployment_dir tool call.
177
+ */
178
+ export declare function handleGetDeploymentDir(): string;
179
+ /**
180
+ * Log a deployment event to release_history.json.
181
+ */
182
+ export declare function logDeploymentEvent(event: 'install' | 'update' | 'rollback', version: string, status: 'success' | 'failed' | 'partial', previousVersion?: string, notes?: string): string;
183
+ /**
184
+ * Read deployment history from release_history.json.
185
+ */
186
+ export declare function getDeploymentHistory(limit?: number): string;
187
+ /**
188
+ * Fetch available Orca versions from the GHCR container registry.
189
+ */
190
+ export declare function listAvailableVersions(includePrerelease?: boolean): Promise<string>;
191
+ /**
192
+ * Handle recreate_containers tool call.
193
+ */
194
+ export declare function handleRecreateContainers(orgId: string): Promise<string>;
195
+ //# sourceMappingURL=deployment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../src/tools/deployment.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiG5B,CAAC;AAEF;;GAEG;AACH,wBAAsB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsCtF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAalE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAuB/C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,EACxC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,EACxC,eAAe,CAAC,EAAE,MAAM,EACxB,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAyBR;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,SAAK,GAAG,MAAM,CAmCvD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,iBAAiB,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CA8DtF;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2B7E"}
@@ -0,0 +1,324 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import * as semver from 'semver';
4
+ import { getDeploymentDir, saveDeploymentDir, getStoredDeploymentDir } from '../settings.js';
5
+ import { fetchGHCRCredentials, listDeploymentFiles, downloadDeploymentFile, isAuthenticated, cloudRequest, } from '../auth.js';
6
+ import { httpsGetJson } from './shared.js';
7
+ export const DEPLOYMENT_TOOLS = [
8
+ {
9
+ name: 'download_deployment_files',
10
+ description: `Download Orca deployment files from the server for local installation.
11
+ Downloads docker-compose.yml, .env.example, and other necessary configuration files.
12
+ IMPORTANT: The user must be authenticated (/token) before this will work.
13
+ Files are saved to the specified target directory.`,
14
+ input_schema: {
15
+ type: 'object',
16
+ properties: {
17
+ target_dir: { type: 'string', description: 'Directory to save deployment files (e.g., ~/orca or /opt/orca)' },
18
+ },
19
+ required: ['target_dir'],
20
+ },
21
+ },
22
+ {
23
+ name: 'save_deployment_dir',
24
+ description: `Save the Orca deployment directory path to settings.
25
+ Use this after successful installation to remember where Orca is installed.
26
+ This allows future update commands to find the installation automatically.`,
27
+ input_schema: {
28
+ type: 'object',
29
+ properties: {
30
+ path: { type: 'string', description: 'Absolute path to the Orca deployment directory (e.g., /home/user/orca or /opt/orca)' },
31
+ },
32
+ required: ['path'],
33
+ },
34
+ },
35
+ {
36
+ name: 'get_deployment_dir',
37
+ description: `Get the stored Orca deployment directory path from settings.
38
+ Use this to find where Orca was previously installed.
39
+ Returns the path if set, or a message indicating it's not set.
40
+ If not set, ask the user for the deployment path.`,
41
+ input_schema: {
42
+ type: 'object',
43
+ properties: {},
44
+ required: [],
45
+ },
46
+ },
47
+ {
48
+ name: 'log_deployment_event',
49
+ description: `Log a deployment event (install, update, or rollback) to release_history.json in the deployment directory.
50
+ Creates the file if it doesn't exist. Entries are stored newest-first.
51
+ Call this after every successful or failed install/update/rollback.`,
52
+ input_schema: {
53
+ type: 'object',
54
+ properties: {
55
+ event: { type: 'string', enum: ['install', 'update', 'rollback'], description: 'Type of deployment event' },
56
+ version: { type: 'string', description: 'The version being deployed (e.g., "1.3.0" or "latest")' },
57
+ previous_version: { type: 'string', description: 'The version before this change (for updates/rollbacks)' },
58
+ status: { type: 'string', enum: ['success', 'failed', 'partial'], description: 'Outcome of the deployment' },
59
+ notes: { type: 'string', description: 'Free-text notes: issues encountered, manual steps taken, etc.' },
60
+ },
61
+ required: ['event', 'version', 'status'],
62
+ },
63
+ },
64
+ {
65
+ name: 'get_deployment_history',
66
+ description: `Read the deployment release history from release_history.json.
67
+ Returns recent deployment events (install, update, rollback) with timestamps, versions, and notes.
68
+ Use this before updates to identify the current version, or to review past deployments.`,
69
+ input_schema: {
70
+ type: 'object',
71
+ properties: {
72
+ limit: { type: 'integer', description: 'Maximum number of entries to return (default: 10)' },
73
+ },
74
+ },
75
+ },
76
+ {
77
+ name: 'list_available_versions',
78
+ description: `Fetch available Orca release versions from the container registry. Returns semver-sorted list (newest first). Use before install/update to pick a version, or before rollback to list options.
79
+ IMPORTANT: The user must be authenticated (/token) before this will work.`,
80
+ input_schema: {
81
+ type: 'object',
82
+ properties: {
83
+ include_prerelease: { type: 'boolean', description: 'Include pre-release versions (default: false)' },
84
+ },
85
+ },
86
+ },
87
+ {
88
+ name: 'recreate_containers',
89
+ description: `Recreate ALL containers (sandbox, runtime-data, neo4j) for a single organization.
90
+ Removes and recreates all containers fresh. Preserves volumes (user data).
91
+ Call this once per organization after updating Orca to pick up the new images.
92
+ IMPORTANT: The user must be authenticated (/token) before this will work.`,
93
+ input_schema: {
94
+ type: 'object',
95
+ properties: {
96
+ org_id: {
97
+ type: 'string',
98
+ description: 'The organization ID to recreate containers for.',
99
+ },
100
+ },
101
+ required: ['org_id'],
102
+ },
103
+ },
104
+ ];
105
+ /**
106
+ * Handle downloading deployment files.
107
+ */
108
+ export async function handleDownloadDeploymentFiles(targetDir) {
109
+ // Expand ~ to home directory
110
+ const expandedDir = targetDir.replace(/^~/, process.env.HOME || process.env.USERPROFILE || '');
111
+ const resolvedDir = path.resolve(expandedDir);
112
+ // Get list of available files
113
+ const files = await listDeploymentFiles();
114
+ if (!files || files.length === 0) {
115
+ return 'Error: Could not fetch deployment files list from server. Make sure you are authenticated (/token).';
116
+ }
117
+ // Create target directory if it doesn't exist
118
+ if (!fs.existsSync(resolvedDir)) {
119
+ fs.mkdirSync(resolvedDir, { recursive: true });
120
+ }
121
+ const results = [];
122
+ let successCount = 0;
123
+ let failCount = 0;
124
+ for (const filename of files) {
125
+ const targetPath = path.join(resolvedDir, filename);
126
+ const success = await downloadDeploymentFile(filename, targetPath);
127
+ if (success) {
128
+ results.push(`✓ ${filename}`);
129
+ successCount++;
130
+ }
131
+ else {
132
+ results.push(`✗ ${filename} (failed)`);
133
+ failCount++;
134
+ }
135
+ }
136
+ const summary = failCount === 0
137
+ ? `Successfully downloaded ${successCount} deployment files to ${resolvedDir}`
138
+ : `Downloaded ${successCount} files, ${failCount} failed`;
139
+ return `${summary}\n\nFiles:\n${results.join('\n')}\n\nNext steps:\n1. cd ${resolvedDir}\n2. cp .env.example .env\n3. Edit .env with your configuration\n4. docker compose up -d`;
140
+ }
141
+ /**
142
+ * Handle save_deployment_dir tool call.
143
+ */
144
+ export function handleSaveDeploymentDir(deployPath) {
145
+ // Expand ~ to home directory
146
+ const expandedPath = deployPath.replace(/^~/, process.env.HOME || process.env.USERPROFILE || '');
147
+ const resolvedPath = path.resolve(expandedPath);
148
+ // Verify the directory exists and has docker-compose.yml
149
+ const composePath = path.join(resolvedPath, 'docker-compose.yml');
150
+ if (!fs.existsSync(composePath)) {
151
+ return `Error: docker-compose.yml not found at ${resolvedPath}. Please verify the path is correct.`;
152
+ }
153
+ saveDeploymentDir(resolvedPath);
154
+ return `Deployment directory saved: ${resolvedPath}`;
155
+ }
156
+ /**
157
+ * Handle get_deployment_dir tool call.
158
+ */
159
+ export function handleGetDeploymentDir() {
160
+ const storedDir = getStoredDeploymentDir();
161
+ if (storedDir) {
162
+ // Verify the directory still exists
163
+ const composePath = path.join(storedDir, 'docker-compose.yml');
164
+ if (fs.existsSync(composePath)) {
165
+ return JSON.stringify({
166
+ found: true,
167
+ path: storedDir,
168
+ message: `Deployment directory: ${storedDir}`,
169
+ });
170
+ }
171
+ else {
172
+ return JSON.stringify({
173
+ found: false,
174
+ stale_path: storedDir,
175
+ message: `Previously stored path ${storedDir} no longer contains docker-compose.yml. Ask user for the correct path.`,
176
+ });
177
+ }
178
+ }
179
+ return JSON.stringify({
180
+ found: false,
181
+ message: 'Deployment directory not set. Ask user where Orca is installed.',
182
+ });
183
+ }
184
+ /**
185
+ * Log a deployment event to release_history.json.
186
+ */
187
+ export function logDeploymentEvent(event, version, status, previousVersion, notes) {
188
+ const historyPath = path.join(getDeploymentDir(), 'release_history.json');
189
+ let history = [];
190
+ if (fs.existsSync(historyPath)) {
191
+ try {
192
+ history = JSON.parse(fs.readFileSync(historyPath, 'utf-8'));
193
+ }
194
+ catch {
195
+ history = [];
196
+ }
197
+ }
198
+ const entry = {
199
+ timestamp: new Date().toISOString(),
200
+ event,
201
+ version,
202
+ previous_version: previousVersion || null,
203
+ status,
204
+ notes: notes || null,
205
+ };
206
+ history.unshift(entry);
207
+ fs.writeFileSync(historyPath, JSON.stringify(history, null, 2), 'utf-8');
208
+ return `Logged ${event} event: version=${version}, status=${status}`;
209
+ }
210
+ /**
211
+ * Read deployment history from release_history.json.
212
+ */
213
+ export function getDeploymentHistory(limit = 10) {
214
+ const historyPath = path.join(getDeploymentDir(), 'release_history.json');
215
+ if (!fs.existsSync(historyPath)) {
216
+ return 'No deployment history found. No installs, updates, or rollbacks have been recorded yet.';
217
+ }
218
+ let history;
219
+ try {
220
+ history = JSON.parse(fs.readFileSync(historyPath, 'utf-8'));
221
+ }
222
+ catch {
223
+ return 'Error: Could not parse release_history.json.';
224
+ }
225
+ if (history.length === 0) {
226
+ return 'Deployment history is empty.';
227
+ }
228
+ const entries = history.slice(0, limit);
229
+ const lines = entries.map((e, i) => {
230
+ const parts = [
231
+ `${i + 1}. [${e.timestamp}] ${String(e.event).toUpperCase()} → v${e.version}`,
232
+ ` Status: ${e.status}`,
233
+ ];
234
+ if (e.previous_version) {
235
+ parts.push(` Previous: v${e.previous_version}`);
236
+ }
237
+ if (e.notes) {
238
+ parts.push(` Notes: ${e.notes}`);
239
+ }
240
+ return parts.join('\n');
241
+ });
242
+ const header = `Deployment History (showing ${entries.length} of ${history.length}):`;
243
+ return [header, '', ...lines].join('\n');
244
+ }
245
+ /**
246
+ * Fetch available Orca versions from the GHCR container registry.
247
+ */
248
+ export async function listAvailableVersions(includePrerelease = false) {
249
+ // Step 1: Get GHCR credentials
250
+ const ghcrCreds = await fetchGHCRCredentials();
251
+ if (!ghcrCreds) {
252
+ return 'Error: Could not fetch GHCR credentials. Make sure you are authenticated (/token).';
253
+ }
254
+ const image = 'syntero/orca/backend-compiled';
255
+ try {
256
+ // Step 2: Exchange GHCR credentials for a registry bearer token
257
+ const basicAuth = Buffer.from(`${ghcrCreds.username}:${ghcrCreds.token}`).toString('base64');
258
+ const tokenResponse = await httpsGetJson(`https://ghcr.io/token?scope=repository:${image}:pull&service=ghcr.io`, { Authorization: `Basic ${basicAuth}` });
259
+ const bearerToken = tokenResponse.token;
260
+ if (!bearerToken) {
261
+ return 'Error: Failed to obtain registry bearer token from GHCR.';
262
+ }
263
+ // Step 3: List tags
264
+ const tagsResponse = await httpsGetJson(`https://ghcr.io/v2/${image}/tags/list`, { Authorization: `Bearer ${bearerToken}` });
265
+ const allTags = tagsResponse.tags;
266
+ if (!allTags || allTags.length === 0) {
267
+ return 'No tags found for the Orca image.';
268
+ }
269
+ // Step 4: Filter to valid semver tags
270
+ let semverTags = allTags.filter((tag) => semver.valid(tag));
271
+ if (!includePrerelease) {
272
+ semverTags = semverTags.filter((tag) => !semver.prerelease(tag));
273
+ }
274
+ if (semverTags.length === 0) {
275
+ return 'No valid semver release versions found in the registry.';
276
+ }
277
+ // Step 5: Sort descending (newest first)
278
+ semverTags.sort(semver.rcompare);
279
+ // Step 6: Check which tag "stable" points to (it's the latest semver)
280
+ const stableVersion = allTags.includes('stable') ? semverTags[0] : null;
281
+ // Format output
282
+ const lines = ['Available Orca versions (newest first):'];
283
+ for (const tag of semverTags) {
284
+ const marker = (stableVersion && tag === stableVersion) ? ' ← stable' : '';
285
+ lines.push(` ${tag}${marker}`);
286
+ }
287
+ return lines.join('\n');
288
+ }
289
+ catch (error) {
290
+ const message = error instanceof Error ? error.message : String(error);
291
+ return `Error fetching versions from registry: ${message}`;
292
+ }
293
+ }
294
+ /**
295
+ * Handle recreate_containers tool call.
296
+ */
297
+ export async function handleRecreateContainers(orgId) {
298
+ if (!isAuthenticated()) {
299
+ return 'Error: Not authenticated. Use /token command to authenticate first.';
300
+ }
301
+ const trimmedOrgId = String(orgId ?? '').trim();
302
+ if (!trimmedOrgId) {
303
+ return 'Error: org_id is required.';
304
+ }
305
+ try {
306
+ // Step 1: Delete all containers for the org
307
+ const delResp = await cloudRequest('DELETE', `/api/v1/super-admin/workspaces/${trimmedOrgId}?force=true`);
308
+ const deleteOk = delResp.status >= 200 && delResp.status < 300;
309
+ if (!deleteOk) {
310
+ return JSON.stringify({ org_id: trimmedOrgId, success: false, error: `delete failed (status ${delResp.status}): ${JSON.stringify(delResp.data)}` });
311
+ }
312
+ // Step 2: Recreate containers
313
+ const createResp = await cloudRequest('POST', `/api/v1/super-admin/workspaces/${trimmedOrgId}`);
314
+ const createOk = createResp.status >= 200 && createResp.status < 300;
315
+ if (!createOk) {
316
+ return JSON.stringify({ org_id: trimmedOrgId, success: false, delete_ok: true, error: `create failed (status ${createResp.status}): ${JSON.stringify(createResp.data)}` });
317
+ }
318
+ return JSON.stringify({ org_id: trimmedOrgId, success: true, message: `Containers recreated for ${trimmedOrgId}.` });
319
+ }
320
+ catch (e) {
321
+ return `Error: ${e instanceof Error ? e.message : String(e)}`;
322
+ }
323
+ }
324
+ //# sourceMappingURL=deployment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment.js","sourceRoot":"","sources":["../../src/tools/deployment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ export declare const DOCKER_TOOLS: ({
2
+ name: string;
3
+ description: string;
4
+ input_schema: {
5
+ type: string;
6
+ properties: {
7
+ container: {
8
+ type: string;
9
+ description: string;
10
+ };
11
+ pattern?: undefined;
12
+ case_insensitive?: undefined;
13
+ context_lines?: undefined;
14
+ };
15
+ required?: undefined;
16
+ };
17
+ } | {
18
+ name: string;
19
+ description: string;
20
+ input_schema: {
21
+ type: string;
22
+ properties: {
23
+ container: {
24
+ type: string;
25
+ description: string;
26
+ };
27
+ pattern: {
28
+ type: string;
29
+ description: string;
30
+ };
31
+ case_insensitive: {
32
+ type: string;
33
+ description: string;
34
+ };
35
+ context_lines: {
36
+ type: string;
37
+ description: string;
38
+ };
39
+ };
40
+ required: string[];
41
+ };
42
+ })[];
43
+ /**
44
+ * Check health of Orca containers.
45
+ */
46
+ export declare function checkContainerHealth(container?: string, signal?: AbortSignal): Promise<string>;
47
+ /**
48
+ * Search container logs for a pattern.
49
+ */
50
+ export declare function searchLogs(container: string, pattern: string, caseInsensitive?: boolean, contextLines?: number, signal?: AbortSignal): Promise<string>;
51
+ //# sourceMappingURL=docker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/tools/docker.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyBxB,CAAC;AAEF;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,SAAQ,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAoCnG;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,eAAe,UAAO,EACtB,YAAY,SAAI,EAChB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,CAMjB"}
@@ -0,0 +1,68 @@
1
+ import { runCommand } from './command.js';
2
+ export const DOCKER_TOOLS = [
3
+ {
4
+ name: 'check_container_health',
5
+ description: 'Get a comprehensive health report for Orca containers.',
6
+ input_schema: {
7
+ type: 'object',
8
+ properties: {
9
+ container: { type: 'string', description: "Container name or 'all'" },
10
+ },
11
+ },
12
+ },
13
+ {
14
+ name: 'search_logs',
15
+ description: 'Search through docker logs for a pattern.',
16
+ input_schema: {
17
+ type: 'object',
18
+ properties: {
19
+ container: { type: 'string', description: 'Container name' },
20
+ pattern: { type: 'string', description: 'Grep pattern to search for' },
21
+ case_insensitive: { type: 'boolean', description: 'Case insensitive search' },
22
+ context_lines: { type: 'integer', description: 'Context lines before/after match' },
23
+ },
24
+ required: ['container', 'pattern'],
25
+ },
26
+ },
27
+ ];
28
+ /**
29
+ * Check health of Orca containers.
30
+ */
31
+ export async function checkContainerHealth(container = 'all', signal) {
32
+ const result = [];
33
+ let containers;
34
+ if (container === 'all') {
35
+ containers = ['orca-backend', 'orca-frontend', 'orca-redis'];
36
+ const psResult = await runCommand('docker ps -a --filter "name=orca-" --format "{{.Names}}"', undefined, signal);
37
+ for (const name of psResult.trim().split('\n')) {
38
+ if (name && !containers.includes(name)) {
39
+ containers.push(name);
40
+ }
41
+ }
42
+ }
43
+ else {
44
+ containers = [container];
45
+ }
46
+ for (const c of containers) {
47
+ result.push(`\n${'='.repeat(60)}\nContainer: ${c}\n${'='.repeat(60)}`);
48
+ result.push(await runCommand(`docker inspect ${c} --format "Status: {{.State.Status}}, Restarts: {{.RestartCount}}"`, undefined, signal));
49
+ const stats = await runCommand(`docker stats ${c} --no-stream --format "CPU: {{.CPUPerc}}, Mem: {{.MemUsage}}"`, undefined, signal);
50
+ if (!stats.includes('Error')) {
51
+ result.push(stats);
52
+ }
53
+ result.push('\nRecent logs (last 10 lines):');
54
+ result.push(await runCommand(`docker logs ${c} --tail 10 2>&1`, undefined, signal));
55
+ }
56
+ return result.join('\n');
57
+ }
58
+ /**
59
+ * Search container logs for a pattern.
60
+ */
61
+ export async function searchLogs(container, pattern, caseInsensitive = true, contextLines = 2, signal) {
62
+ let grepFlags = caseInsensitive ? '-i' : '';
63
+ if (contextLines) {
64
+ grepFlags += ` -C ${contextLines}`;
65
+ }
66
+ return runCommand(`docker logs ${container} 2>&1 | grep ${grepFlags} "${pattern}" | tail -100`, undefined, signal);
67
+ }
68
+ //# sourceMappingURL=docker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/tools/docker.ts"],"names":[],"mappings":"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"}