@amodalai/amodal 0.1.6 → 0.1.9

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 (50) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/src/commands/chat.d.ts.map +1 -1
  3. package/dist/src/commands/chat.js +38 -2
  4. package/dist/src/commands/chat.js.map +1 -1
  5. package/dist/src/commands/deploy.d.ts.map +1 -1
  6. package/dist/src/commands/deploy.js +16 -1
  7. package/dist/src/commands/deploy.js.map +1 -1
  8. package/dist/src/commands/dev.d.ts +1 -0
  9. package/dist/src/commands/dev.d.ts.map +1 -1
  10. package/dist/src/commands/dev.js +33 -33
  11. package/dist/src/commands/dev.js.map +1 -1
  12. package/dist/src/commands/index.d.ts.map +1 -1
  13. package/dist/src/commands/index.js +2 -1
  14. package/dist/src/commands/index.js.map +1 -1
  15. package/dist/src/commands/login.d.ts +5 -0
  16. package/dist/src/commands/login.d.ts.map +1 -1
  17. package/dist/src/commands/login.js +70 -4
  18. package/dist/src/commands/login.js.map +1 -1
  19. package/dist/src/commands/validate.d.ts +1 -0
  20. package/dist/src/commands/validate.d.ts.map +1 -1
  21. package/dist/src/commands/validate.js +228 -4
  22. package/dist/src/commands/validate.js.map +1 -1
  23. package/dist/src/shared/connection-preflight.d.ts +52 -0
  24. package/dist/src/shared/connection-preflight.d.ts.map +1 -0
  25. package/dist/src/shared/connection-preflight.js +204 -0
  26. package/dist/src/shared/connection-preflight.js.map +1 -0
  27. package/dist/src/shared/platform-client.d.ts +14 -1
  28. package/dist/src/shared/platform-client.d.ts.map +1 -1
  29. package/dist/src/shared/platform-client.js +103 -2
  30. package/dist/src/shared/platform-client.js.map +1 -1
  31. package/dist/src/shared/tarball.d.ts +13 -0
  32. package/dist/src/shared/tarball.d.ts.map +1 -0
  33. package/dist/src/shared/tarball.js +21 -0
  34. package/dist/src/shared/tarball.js.map +1 -0
  35. package/dist/src/ui/ChatApp.d.ts.map +1 -1
  36. package/dist/src/ui/ChatApp.js +8 -7
  37. package/dist/src/ui/ChatApp.js.map +1 -1
  38. package/dist/tsconfig.tsbuildinfo +1 -1
  39. package/package.json +4 -4
  40. package/src/commands/chat.ts +38 -2
  41. package/src/commands/deploy.ts +17 -1
  42. package/src/commands/dev.ts +35 -32
  43. package/src/commands/index.ts +2 -1
  44. package/src/commands/login.ts +76 -4
  45. package/src/commands/validate.test.ts +169 -16
  46. package/src/commands/validate.ts +272 -4
  47. package/src/shared/connection-preflight.ts +251 -0
  48. package/src/shared/platform-client.ts +115 -2
  49. package/src/shared/tarball.ts +30 -0
  50. package/src/ui/ChatApp.tsx +8 -7
@@ -3,8 +3,187 @@
3
3
  * Copyright 2025 Amodal Labs, Inc.
4
4
  * SPDX-License-Identifier: MIT
5
5
  */
6
- import { loadRepo, readLockFile, resolveAllPackages } from '@amodalai/core';
6
+ import { join } from 'node:path';
7
+ import { readFile } from 'node:fs/promises';
8
+ import { loadRepo, readLockFile, resolveAllPackages, McpManager } from '@amodalai/core';
7
9
  import { findRepoRoot } from '../shared/repo-discovery.js';
10
+ /**
11
+ * Resolve an env:VAR_NAME reference using a Map of env vars.
12
+ */
13
+ function resolveEnvToken(value, envVars) {
14
+ if (!value.startsWith('env:'))
15
+ return value;
16
+ const varName = value.slice(4);
17
+ return envVars.get(varName) ?? process.env[varName] ?? '';
18
+ }
19
+ /**
20
+ * Build auth headers from a connection spec's auth config.
21
+ */
22
+ function buildSpecAuthHeaders(auth, envVars) {
23
+ if (!auth)
24
+ return {};
25
+ const token = auth.token ? resolveEnvToken(auth.token, envVars) : '';
26
+ if (auth.type === 'bearer') {
27
+ const header = auth.header ?? 'Authorization';
28
+ const prefix = auth.prefix ?? 'Bearer';
29
+ return token ? { [header]: `${prefix} ${token}` } : {};
30
+ }
31
+ if (auth.type === 'api_key' || auth.type === 'api-key') {
32
+ const header = auth.header ?? 'X-API-Key';
33
+ return token ? { [header]: token } : {};
34
+ }
35
+ if (auth.type === 'basic') {
36
+ return token ? { Authorization: `Basic ${token}` } : {};
37
+ }
38
+ if (auth.type === 'header') {
39
+ const header = auth.header ?? 'Authorization';
40
+ return token ? { [header]: token } : {};
41
+ }
42
+ if (auth.type === 'none') {
43
+ return {};
44
+ }
45
+ return {};
46
+ }
47
+ /**
48
+ * Test a single REST connection. Never throws.
49
+ */
50
+ async function testRestConnection(name, spec, envVars) {
51
+ const start = Date.now();
52
+ try {
53
+ let baseUrl = spec.baseUrl;
54
+ if (baseUrl.startsWith('env:')) {
55
+ baseUrl = resolveEnvToken(baseUrl, envVars);
56
+ }
57
+ if (!baseUrl) {
58
+ return { name, type: 'REST', status: 'fail', detail: 'baseUrl not resolved', durationMs: 0 };
59
+ }
60
+ const testUrl = spec.testPath ? `${baseUrl.replace(/\/$/, '')}${spec.testPath}` : baseUrl;
61
+ const headers = buildSpecAuthHeaders(spec.auth, envVars);
62
+ const response = await fetch(testUrl, {
63
+ method: 'GET',
64
+ headers,
65
+ redirect: 'follow',
66
+ signal: AbortSignal.timeout(10_000),
67
+ });
68
+ // If we got a 401 after a redirect, retry the final URL with auth headers
69
+ // (fetch strips auth headers on redirects)
70
+ if (response.status === 401 && response.redirected) {
71
+ const retryResponse = await fetch(response.url, {
72
+ method: 'GET',
73
+ headers,
74
+ signal: AbortSignal.timeout(10_000),
75
+ });
76
+ const durationMs = Date.now() - start;
77
+ if (retryResponse.status === 401 || retryResponse.status === 403) {
78
+ return { name, type: 'REST', status: 'fail', detail: `${retryResponse.status} Unauthorized`, durationMs };
79
+ }
80
+ if (retryResponse.status >= 500) {
81
+ return { name, type: 'REST', status: 'fail', detail: `${retryResponse.status} Server Error`, durationMs };
82
+ }
83
+ return { name, type: 'REST', status: 'pass', detail: `${retryResponse.status} OK (after redirect)`, durationMs };
84
+ }
85
+ const durationMs = Date.now() - start;
86
+ // Any HTTP response means the server is reachable and auth was attempted.
87
+ // 2xx/3xx/404 = pass (server is up, auth accepted or endpoint not found).
88
+ // 401/403 = fail (auth rejected).
89
+ // 5xx = fail (server error).
90
+ if (response.status === 401 || response.status === 403) {
91
+ return { name, type: 'REST', status: 'fail', detail: `${response.status} Unauthorized`, durationMs };
92
+ }
93
+ if (response.status >= 500) {
94
+ return { name, type: 'REST', status: 'fail', detail: `${response.status} Server Error`, durationMs };
95
+ }
96
+ return { name, type: 'REST', status: 'pass', detail: `${response.status} OK`, durationMs };
97
+ }
98
+ catch (err) {
99
+ const durationMs = Date.now() - start;
100
+ const msg = err instanceof Error ? err.message : String(err);
101
+ return { name, type: 'REST', status: 'fail', detail: msg, durationMs };
102
+ }
103
+ }
104
+ /**
105
+ * Test MCP server connections. Never throws.
106
+ */
107
+ async function testMcpServers(configs) {
108
+ const manager = new McpManager();
109
+ const start = Date.now();
110
+ try {
111
+ // Wrap with a 30-second overall timeout
112
+ await Promise.race([
113
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
114
+ manager.startServers(configs),
115
+ new Promise((_, reject) => setTimeout(() => reject(new Error('MCP startup timeout')), 30_000)),
116
+ ]);
117
+ }
118
+ catch {
119
+ // Timeout or other error — still collect what we can
120
+ }
121
+ const results = [];
122
+ for (const info of manager.getServerInfo()) {
123
+ const durationMs = Date.now() - start;
124
+ if (info.status === 'connected') {
125
+ results.push({
126
+ name: info.name,
127
+ type: 'MCP',
128
+ status: 'pass',
129
+ detail: `${info.tools.length} tools`,
130
+ durationMs,
131
+ });
132
+ }
133
+ else {
134
+ results.push({
135
+ name: info.name,
136
+ type: 'MCP',
137
+ status: 'fail',
138
+ detail: info.error ?? info.status,
139
+ durationMs,
140
+ });
141
+ }
142
+ }
143
+ await manager.shutdown();
144
+ return results;
145
+ }
146
+ /**
147
+ * Load .env file and inject values into process.env.
148
+ * Handles both plain KEY=value and export KEY=value formats.
149
+ */
150
+ async function loadEnvIntoProcess(repoPath) {
151
+ const envPath = join(repoPath, '.env');
152
+ let content;
153
+ try {
154
+ content = await readFile(envPath, 'utf-8');
155
+ }
156
+ catch {
157
+ return new Map();
158
+ }
159
+ // Strip 'export ' prefix before parsing
160
+ const cleaned = content
161
+ .split('\n')
162
+ .map((line) => line.replace(/^export\s+/, ''))
163
+ .join('\n');
164
+ const entries = new Map();
165
+ for (const line of cleaned.split('\n')) {
166
+ const trimmed = line.trim();
167
+ if (!trimmed || trimmed.startsWith('#'))
168
+ continue;
169
+ const eqIdx = trimmed.indexOf('=');
170
+ if (eqIdx < 0)
171
+ continue;
172
+ const key = trimmed.slice(0, eqIdx).trim();
173
+ let value = trimmed.slice(eqIdx + 1).trim();
174
+ if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) {
175
+ value = value.slice(1, -1);
176
+ }
177
+ if (key) {
178
+ entries.set(key, value);
179
+ // Only set if not already in process.env (don't override explicit env)
180
+ if (process.env[key] === undefined) {
181
+ process.env[key] = value;
182
+ }
183
+ }
184
+ }
185
+ return entries;
186
+ }
8
187
  /**
9
188
  * Validates the amodal project configuration by loading the full repo
10
189
  * and running cross-reference checks.
@@ -22,6 +201,11 @@ export async function runValidate(options = {}) {
22
201
  process.stderr.write(`[validate] ${msg}\n`);
23
202
  return 1;
24
203
  }
204
+ // Load .env into process.env before loadRepo so env: references resolve
205
+ let envVars = new Map();
206
+ if (!options.skipTest) {
207
+ envVars = await loadEnvIntoProcess(repoPath);
208
+ }
25
209
  process.stderr.write(`[validate] Loading repo from ${repoPath}\n`);
26
210
  try {
27
211
  const repo = await loadRepo({ localPath: repoPath });
@@ -47,6 +231,40 @@ export async function runValidate(options = {}) {
47
231
  issues.push({ level: 'warning', message: `Automation "${auto.name}" has no schedule. It will only run via webhook.` });
48
232
  }
49
233
  }
234
+ // Live connection tests
235
+ if (!options.skipTest) {
236
+ process.stderr.write('\n[validate] Testing live connections...\n');
237
+ const liveResults = [];
238
+ // Test REST connections in parallel
239
+ const restPromises = [...repo.connections.entries()].map(([name, conn]) => testRestConnection(name, conn.spec, envVars));
240
+ const restResults = await Promise.allSettled(restPromises);
241
+ for (const result of restResults) {
242
+ if (result.status === 'fulfilled') {
243
+ liveResults.push(result.value);
244
+ }
245
+ }
246
+ // Test MCP servers
247
+ if (repo.mcpServers && Object.keys(repo.mcpServers).length > 0) {
248
+ const mcpResults = await testMcpServers(repo.mcpServers);
249
+ liveResults.push(...mcpResults);
250
+ }
251
+ // Print results table
252
+ process.stderr.write('\n');
253
+ const nameWidth = Math.max(20, ...liveResults.map((r) => r.name.length + 2));
254
+ process.stderr.write(` ${'CONNECTION'.padEnd(nameWidth)} ${'TYPE'.padEnd(6)} ${'STATUS'.padEnd(8)} DETAILS\n`);
255
+ for (const r of liveResults) {
256
+ const statusStr = r.status === 'pass' ? ' OK ' : ' FAIL ';
257
+ const durationStr = r.durationMs > 0 ? ` (${r.durationMs}ms)` : '';
258
+ process.stderr.write(` ${r.name.padEnd(nameWidth)} ${r.type.padEnd(6)} ${statusStr.padEnd(8)} ${r.detail}${durationStr}\n`);
259
+ }
260
+ process.stderr.write('\n');
261
+ // Add failures to issues
262
+ for (const r of liveResults) {
263
+ if (r.status === 'fail') {
264
+ issues.push({ level: 'error', message: `${r.type} connection "${r.name}" failed: ${r.detail}` });
265
+ }
266
+ }
267
+ }
50
268
  }
51
269
  catch (err) {
52
270
  const msg = err instanceof Error ? err.message : String(err);
@@ -104,10 +322,16 @@ export async function runValidate(options = {}) {
104
322
  export const validateCommand = {
105
323
  command: 'validate',
106
324
  describe: 'Validate the project configuration',
107
- builder: (yargs) => yargs.option('packages', { type: 'boolean', default: false, describe: 'Include package resolution validation' }),
325
+ builder: (yargs) => yargs
326
+ .option('packages', { type: 'boolean', default: false, describe: 'Include package resolution validation' })
327
+ .option('skip-test', { type: 'boolean', default: false, describe: 'Skip live connection and MCP server tests' }),
108
328
  handler: async (argv) => {
109
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
110
- const code = await runValidate({ packages: argv['packages'] });
329
+ const code = await runValidate({
330
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
331
+ packages: argv['packages'],
332
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
333
+ skipTest: argv['skipTest'],
334
+ });
111
335
  process.exit(code);
112
336
  },
113
337
  };
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import type { ConnectionSpec } from '@amodalai/core';
7
+ export interface LiveTestResult {
8
+ name: string;
9
+ type: 'REST' | 'MCP';
10
+ status: 'pass' | 'fail';
11
+ detail: string;
12
+ durationMs: number;
13
+ }
14
+ export interface PreflightReport {
15
+ results: LiveTestResult[];
16
+ hasFailures: boolean;
17
+ }
18
+ /**
19
+ * Build auth headers from a connection spec's auth config.
20
+ */
21
+ export declare function buildSpecAuthHeaders(auth: ConnectionSpec['auth'], envVars: Map<string, string>): Record<string, string>;
22
+ /**
23
+ * Test a single REST connection. Never throws.
24
+ */
25
+ export declare function testRestConnection(name: string, spec: ConnectionSpec, envVars: Map<string, string>): Promise<LiveTestResult>;
26
+ /**
27
+ * Test MCP server connections. Never throws.
28
+ */
29
+ export declare function testMcpServers(configs: Record<string, {
30
+ transport: string;
31
+ url?: string;
32
+ command?: string;
33
+ args?: string[];
34
+ env?: Record<string, string>;
35
+ headers?: Record<string, string>;
36
+ trust?: boolean;
37
+ }>): Promise<LiveTestResult[]>;
38
+ /**
39
+ * Load .env file and inject values into process.env.
40
+ * Handles both plain KEY=value and export KEY=value formats.
41
+ */
42
+ export declare function loadEnvIntoProcess(repoPath: string): Promise<Map<string, string>>;
43
+ /**
44
+ * Print the preflight results table to stderr.
45
+ */
46
+ export declare function printPreflightTable(results: LiveTestResult[]): void;
47
+ /**
48
+ * Run preflight connection tests for a repo.
49
+ * Loads .env, loads repo, tests REST connections and MCP servers.
50
+ */
51
+ export declare function runConnectionPreflight(repoPath: string): Promise<PreflightReport>;
52
+ //# sourceMappingURL=connection-preflight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-preflight.d.ts","sourceRoot":"","sources":["../../../src/shared/connection-preflight.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;CACtB;AAWD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAC5B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0BxB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,OAAO,CAAC,cAAc,CAAC,CAmDzB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAC,CAAC,GAC7K,OAAO,CAAC,cAAc,EAAE,CAAC,CA0B3B;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA8BvF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI,CAYnE;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAiCvF"}
@@ -0,0 +1,204 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { join } from 'node:path';
7
+ import { readFile } from 'node:fs/promises';
8
+ import { loadRepo, McpManager } from '@amodalai/core';
9
+ /**
10
+ * Resolve an env:VAR_NAME reference using a Map of env vars.
11
+ */
12
+ function resolveEnvToken(value, envVars) {
13
+ if (!value.startsWith('env:'))
14
+ return value;
15
+ const varName = value.slice(4);
16
+ return envVars.get(varName) ?? process.env[varName] ?? '';
17
+ }
18
+ /**
19
+ * Build auth headers from a connection spec's auth config.
20
+ */
21
+ export function buildSpecAuthHeaders(auth, envVars) {
22
+ if (!auth)
23
+ return {};
24
+ const token = auth.token ? resolveEnvToken(auth.token, envVars) : '';
25
+ if (auth.type === 'bearer') {
26
+ const header = auth.header ?? 'Authorization';
27
+ const prefix = auth.prefix ?? 'Bearer';
28
+ return token ? { [header]: `${prefix} ${token}` } : {};
29
+ }
30
+ if (auth.type === 'api_key' || auth.type === 'api-key') {
31
+ const header = auth.header ?? 'X-API-Key';
32
+ return token ? { [header]: token } : {};
33
+ }
34
+ if (auth.type === 'basic') {
35
+ return token ? { Authorization: `Basic ${token}` } : {};
36
+ }
37
+ if (auth.type === 'header') {
38
+ const header = auth.header ?? 'Authorization';
39
+ return token ? { [header]: token } : {};
40
+ }
41
+ return {};
42
+ }
43
+ /**
44
+ * Test a single REST connection. Never throws.
45
+ */
46
+ export async function testRestConnection(name, spec, envVars) {
47
+ const start = Date.now();
48
+ try {
49
+ let baseUrl = spec.baseUrl;
50
+ if (baseUrl.startsWith('env:')) {
51
+ baseUrl = resolveEnvToken(baseUrl, envVars);
52
+ }
53
+ if (!baseUrl) {
54
+ return { name, type: 'REST', status: 'fail', detail: 'baseUrl not resolved', durationMs: 0 };
55
+ }
56
+ const testUrl = spec.testPath ? `${baseUrl.replace(/\/$/, '')}${spec.testPath}` : baseUrl;
57
+ const headers = buildSpecAuthHeaders(spec.auth, envVars);
58
+ const response = await fetch(testUrl, {
59
+ method: 'GET',
60
+ headers,
61
+ redirect: 'follow',
62
+ signal: AbortSignal.timeout(10_000),
63
+ });
64
+ // If we got a 401 after a redirect, retry the final URL with auth headers
65
+ if (response.status === 401 && response.redirected) {
66
+ const retryResponse = await fetch(response.url, {
67
+ method: 'GET',
68
+ headers,
69
+ signal: AbortSignal.timeout(10_000),
70
+ });
71
+ const durationMs = Date.now() - start;
72
+ if (retryResponse.status === 401 || retryResponse.status === 403) {
73
+ return { name, type: 'REST', status: 'fail', detail: `${retryResponse.status} Unauthorized`, durationMs };
74
+ }
75
+ if (retryResponse.status >= 500) {
76
+ return { name, type: 'REST', status: 'fail', detail: `${retryResponse.status} Server Error`, durationMs };
77
+ }
78
+ return { name, type: 'REST', status: 'pass', detail: `${retryResponse.status} OK (after redirect)`, durationMs };
79
+ }
80
+ const durationMs = Date.now() - start;
81
+ if (response.status === 401 || response.status === 403) {
82
+ return { name, type: 'REST', status: 'fail', detail: `${response.status} Unauthorized`, durationMs };
83
+ }
84
+ if (response.status >= 500) {
85
+ return { name, type: 'REST', status: 'fail', detail: `${response.status} Server Error`, durationMs };
86
+ }
87
+ return { name, type: 'REST', status: 'pass', detail: `${response.status} OK`, durationMs };
88
+ }
89
+ catch (err) {
90
+ const durationMs = Date.now() - start;
91
+ const msg = err instanceof Error ? err.message : String(err);
92
+ return { name, type: 'REST', status: 'fail', detail: msg, durationMs };
93
+ }
94
+ }
95
+ /**
96
+ * Test MCP server connections. Never throws.
97
+ */
98
+ export async function testMcpServers(configs) {
99
+ const manager = new McpManager();
100
+ const start = Date.now();
101
+ try {
102
+ await Promise.race([
103
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
104
+ manager.startServers(configs),
105
+ new Promise((_, reject) => setTimeout(() => reject(new Error('MCP startup timeout')), 30_000)),
106
+ ]);
107
+ }
108
+ catch {
109
+ // Timeout — still collect what we can
110
+ }
111
+ const results = [];
112
+ for (const info of manager.getServerInfo()) {
113
+ const durationMs = Date.now() - start;
114
+ if (info.status === 'connected') {
115
+ results.push({ name: info.name, type: 'MCP', status: 'pass', detail: `${info.tools.length} tools`, durationMs });
116
+ }
117
+ else {
118
+ results.push({ name: info.name, type: 'MCP', status: 'fail', detail: info.error ?? info.status, durationMs });
119
+ }
120
+ }
121
+ await manager.shutdown();
122
+ return results;
123
+ }
124
+ /**
125
+ * Load .env file and inject values into process.env.
126
+ * Handles both plain KEY=value and export KEY=value formats.
127
+ */
128
+ export async function loadEnvIntoProcess(repoPath) {
129
+ const envPath = join(repoPath, '.env');
130
+ let content;
131
+ try {
132
+ content = await readFile(envPath, 'utf-8');
133
+ }
134
+ catch {
135
+ return new Map();
136
+ }
137
+ const cleaned = content.split('\n').map((line) => line.replace(/^export\s+/, '')).join('\n');
138
+ const entries = new Map();
139
+ for (const line of cleaned.split('\n')) {
140
+ const trimmed = line.trim();
141
+ if (!trimmed || trimmed.startsWith('#'))
142
+ continue;
143
+ const eqIdx = trimmed.indexOf('=');
144
+ if (eqIdx < 0)
145
+ continue;
146
+ const key = trimmed.slice(0, eqIdx).trim();
147
+ let value = trimmed.slice(eqIdx + 1).trim();
148
+ if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) {
149
+ value = value.slice(1, -1);
150
+ }
151
+ if (key) {
152
+ entries.set(key, value);
153
+ if (process.env[key] === undefined) {
154
+ process.env[key] = value;
155
+ }
156
+ }
157
+ }
158
+ return entries;
159
+ }
160
+ /**
161
+ * Print the preflight results table to stderr.
162
+ */
163
+ export function printPreflightTable(results) {
164
+ const nameWidth = Math.max(20, ...results.map((r) => r.name.length + 2));
165
+ process.stderr.write(` ${'CONNECTION'.padEnd(nameWidth)} ${'TYPE'.padEnd(6)} ${'STATUS'.padEnd(8)} DETAILS\n`);
166
+ for (const r of results) {
167
+ const statusStr = r.status === 'pass' ? ' OK ' : ' FAIL ';
168
+ const durationStr = r.durationMs > 0 ? ` (${r.durationMs}ms)` : '';
169
+ process.stderr.write(` ${r.name.padEnd(nameWidth)} ${r.type.padEnd(6)} ${statusStr.padEnd(8)} ${r.detail}${durationStr}\n`);
170
+ }
171
+ }
172
+ /**
173
+ * Run preflight connection tests for a repo.
174
+ * Loads .env, loads repo, tests REST connections and MCP servers.
175
+ */
176
+ export async function runConnectionPreflight(repoPath) {
177
+ const envVars = await loadEnvIntoProcess(repoPath);
178
+ let repo;
179
+ try {
180
+ repo = await loadRepo({ localPath: repoPath });
181
+ }
182
+ catch {
183
+ return { results: [], hasFailures: false };
184
+ }
185
+ const results = [];
186
+ // Test REST connections in parallel
187
+ const restPromises = [...repo.connections.entries()].map(([name, conn]) => testRestConnection(name, conn.spec, envVars));
188
+ const restResults = await Promise.allSettled(restPromises);
189
+ for (const result of restResults) {
190
+ if (result.status === 'fulfilled') {
191
+ results.push(result.value);
192
+ }
193
+ }
194
+ // Test MCP servers
195
+ if (repo.mcpServers && Object.keys(repo.mcpServers).length > 0) {
196
+ const mcpResults = await testMcpServers(repo.mcpServers);
197
+ results.push(...mcpResults);
198
+ }
199
+ return {
200
+ results,
201
+ hasFailures: results.some((r) => r.status === 'fail'),
202
+ };
203
+ }
204
+ //# sourceMappingURL=connection-preflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-preflight.js","sourceRoot":"","sources":["../../../src/shared/connection-preflight.ts"],"names":[],"mappings":"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"}
@@ -57,11 +57,24 @@ export declare class PlatformClient {
57
57
  private headers;
58
58
  private request;
59
59
  /**
60
- * Upload a snapshot and deploy it.
60
+ * Try to refresh the token using the stored refresh token.
61
+ * Updates both the in-memory key and the rc file on success.
62
+ */
63
+ private tryRefreshToken;
64
+ /**
65
+ * Upload a snapshot and deploy it (without repo files).
61
66
  */
62
67
  uploadSnapshot(snapshot: DeploySnapshot, options?: {
63
68
  environment?: string;
64
69
  }): Promise<SnapshotDeploymentMeta>;
70
+ /**
71
+ * Deploy with repo files — uploads snapshot + repo tarball.
72
+ * The server builds the runtime-app and uploads to R2.
73
+ */
74
+ deployWithRepo(snapshot: DeploySnapshot, repoTarball: import('node:fs').ReadStream, options?: {
75
+ environment?: string;
76
+ appId?: string;
77
+ }): Promise<SnapshotDeploymentMeta>;
65
78
  /**
66
79
  * List deployments for the authenticated tenant.
67
80
  */
@@ -1 +1 @@
1
- {"version":3,"file":"platform-client.d.ts","sourceRoot":"","sources":["../../../src/shared/platform-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAInD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAAC,CAgCzC;AAED;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,CAAC,EAAE;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC;IASrD;;;OAGG;WACU,MAAM,CAAC,OAAO,CAAC,EAAE;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAKvF,OAAO,CAAC,OAAO;YAOD,OAAO;IAwBrB;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,GAAE;QACtD,WAAW,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAOxC;;OAEG;IACG,eAAe,CAAC,OAAO,GAAE;QAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAQ1C;;OAEG;IACG,QAAQ,CAAC,OAAO,GAAE;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAOxC;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAO7F;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAIlE;;OAEG;IACG,iBAAiB,CAAC,WAAW,GAAE,MAAqB,GAAG,OAAO,CAAC,cAAc,CAAC;CAIrF"}
1
+ {"version":3,"file":"platform-client.d.ts","sourceRoot":"","sources":["../../../src/shared/platform-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAInD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAAC,CAgCzC;AAED;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,CAAC,EAAE;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC;IASrD;;;OAGG;WACU,MAAM,CAAC,OAAO,CAAC,EAAE;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAKvF,OAAO,CAAC,OAAO;YAOD,OAAO;IAoCrB;;;OAGG;YACW,eAAe;IAqC7B;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,GAAE;QACtD,WAAW,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAOxC;;;OAGG;IACG,cAAc,CAClB,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,OAAO,SAAS,EAAE,UAAU,EACzC,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GACrD,OAAO,CAAC,sBAAsB,CAAC;IAoDlC;;OAEG;IACG,eAAe,CAAC,OAAO,GAAE;QAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAQ1C;;OAEG;IACG,QAAQ,CAAC,OAAO,GAAE;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAOxC;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAO7F;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAIlE;;OAEG;IACG,iBAAiB,CAAC,WAAW,GAAE,MAAqB,GAAG,OAAO,CAAC,cAAc,CAAC;CAIrF"}