@inquir/compute 0.1.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/apps.js ADDED
@@ -0,0 +1,261 @@
1
+ /**
2
+ * App runtime plane: long-lived container services (the ECS-shaped side of the
3
+ * platform), as opposed to functions.
4
+ *
5
+ * Wire types are duplicated here rather than imported from the server — the
6
+ * same convention the frontend follows — so the SDK builds independently of
7
+ * the server's tsconfig.
8
+ */
9
+ import { authHeaders, rawRequest, toApiError } from './transport.js';
10
+ export async function getAppLimits(client) {
11
+ return rawRequest(client, 'GET', '/v1/apps/limits');
12
+ }
13
+ /** A release stops changing on its own once it reaches one of these. */
14
+ const SETTLED_RELEASE_STATUSES = new Set(['READY', 'ACTIVE', 'STOPPED', 'FAILED']);
15
+ export function isSettledReleaseStatus(status) {
16
+ return SETTLED_RELEASE_STATUSES.has(status);
17
+ }
18
+ const TERMINAL_BUILD_STATUSES = new Set(['success', 'failure', 'cancelled']);
19
+ export function isTerminalBuildStatus(status) {
20
+ return TERMINAL_BUILD_STATUSES.has(status);
21
+ }
22
+ export async function listApplications(client, options = {}) {
23
+ const query = new URLSearchParams();
24
+ if (options.limit)
25
+ query.set('limit', String(options.limit));
26
+ if (options.cursor)
27
+ query.set('cursor', options.cursor);
28
+ const suffix = query.toString() ? `?${query.toString()}` : '';
29
+ return rawRequest(client, 'GET', `/v1/apps${suffix}`);
30
+ }
31
+ export async function getApplication(client, applicationId) {
32
+ return rawRequest(client, 'GET', `/v1/apps/${applicationId}`);
33
+ }
34
+ export async function createApplication(client, input) {
35
+ return rawRequest(client, 'POST', '/v1/apps', input);
36
+ }
37
+ export async function listAppBackups(client, applicationId, options = {}) {
38
+ const query = new URLSearchParams();
39
+ if (options.limit)
40
+ query.set('limit', String(options.limit));
41
+ if (options.cursor)
42
+ query.set('cursor', options.cursor);
43
+ if (options.volumeName)
44
+ query.set('volumeName', options.volumeName);
45
+ const suffix = query.toString() ? `?${query.toString()}` : '';
46
+ return rawRequest(client, 'GET', `/v1/apps/${applicationId}/backups${suffix}`);
47
+ }
48
+ export async function getAppBackup(client, applicationId, backupId) {
49
+ return rawRequest(client, 'GET', `/v1/apps/${applicationId}/backups/${backupId}`);
50
+ }
51
+ /**
52
+ * Answers 202 as soon as the rows exist — the copy outlives the request. The
53
+ * returned rows are PENDING; poll them for the outcome.
54
+ */
55
+ export async function createAppBackup(client, applicationId) {
56
+ return rawRequest(client, 'POST', `/v1/apps/${applicationId}/backups`);
57
+ }
58
+ /** Drops a restore point for good. Refused while the row is still PENDING. */
59
+ export async function deleteAppBackup(client, applicationId, backupId) {
60
+ return rawRequest(client, 'DELETE', `/v1/apps/${applicationId}/backups/${backupId}`);
61
+ }
62
+ /** Stops production, replaces the volume contents, starts production again. */
63
+ export async function restoreAppBackup(client, applicationId, backupId) {
64
+ return rawRequest(client, 'POST', `/v1/apps/${applicationId}/backups/${backupId}/restore`);
65
+ }
66
+ /** The decrypted connection URL of a template database. Never cached server-side. */
67
+ export async function getAppConnectionUrl(client, applicationId) {
68
+ return rawRequest(client, 'POST', `/v1/apps/${applicationId}/connection-url`);
69
+ }
70
+ /**
71
+ * Writes the database's connection URL into `target`'s env (server-side
72
+ * compose). A target that already carries the key is refused (409) unless
73
+ * `overwrite` is set — the way to repoint an app at the database's current
74
+ * private address without ever handling the password.
75
+ */
76
+ export async function connectApps(client, applicationId, target, options = {}) {
77
+ return rawRequest(client, 'POST', `/v1/apps/${applicationId}/connect`, {
78
+ target,
79
+ ...(options.overwrite ? { overwrite: true } : {}),
80
+ });
81
+ }
82
+ export async function updateApplication(client, applicationId, patch) {
83
+ return rawRequest(client, 'PATCH', `/v1/apps/${applicationId}`, patch);
84
+ }
85
+ export async function archiveApplication(client, applicationId) {
86
+ return rawRequest(client, 'DELETE', `/v1/apps/${applicationId}`);
87
+ }
88
+ export async function wakeApplication(client, applicationId) {
89
+ return rawRequest(client, 'POST', `/v1/apps/${applicationId}/wake`);
90
+ }
91
+ export async function pauseApplication(client, applicationId) {
92
+ return rawRequest(client, 'POST', `/v1/apps/${applicationId}/pause`);
93
+ }
94
+ export async function createRelease(client, applicationId, input) {
95
+ return rawRequest(client, 'POST', `/v1/apps/${applicationId}/releases`, input);
96
+ }
97
+ /**
98
+ * Release what production runs now — the same build, or the same image
99
+ * reference pulled again — under the application's current configuration,
100
+ * and promote it once healthy (unless `promote: false`). 409 when nothing is
101
+ * promoted yet. Needs `apps:promote`.
102
+ */
103
+ export async function redeployApplication(client, applicationId, input = {}) {
104
+ return rawRequest(client, 'POST', `/v1/apps/${applicationId}/redeploy`, input);
105
+ }
106
+ export async function listReleases(client, applicationId) {
107
+ return rawRequest(client, 'GET', `/v1/apps/${applicationId}/releases`);
108
+ }
109
+ export async function getRelease(client, releaseId) {
110
+ return rawRequest(client, 'GET', `/v1/releases/${releaseId}`);
111
+ }
112
+ export async function promoteRelease(client, releaseId) {
113
+ return rawRequest(client, 'POST', `/v1/releases/${releaseId}/promote`);
114
+ }
115
+ export async function rollbackApplication(client, applicationId) {
116
+ return rawRequest(client, 'POST', `/v1/apps/${applicationId}/rollback`);
117
+ }
118
+ export async function stopRelease(client, releaseId) {
119
+ return rawRequest(client, 'DELETE', `/v1/releases/${releaseId}`);
120
+ }
121
+ export async function execInRelease(client, releaseId, command, timeoutMs) {
122
+ return rawRequest(client, 'POST', `/v1/releases/${releaseId}/exec`, { command, timeoutMs });
123
+ }
124
+ /**
125
+ * Execute against the server-resolved current production allocation. Unlike
126
+ * the legacy release-scoped endpoint, this path is audited, rate-limited and
127
+ * refuses remote targets until the runner transport is available.
128
+ */
129
+ export async function execInApplication(client, applicationId, command, timeoutMs) {
130
+ return rawRequest(client, 'POST', `/v1/apps/${applicationId}/console/exec`, {
131
+ command,
132
+ ...(timeoutMs === undefined ? {} : { timeoutMs }),
133
+ });
134
+ }
135
+ /**
136
+ * Bind a custom hostname (always production). It starts unverified: publish
137
+ * the returned TXT record and point the name at the platform, then call
138
+ * `verifyApplicationDomain`.
139
+ */
140
+ export async function addApplicationDomain(client, applicationId, hostname) {
141
+ return rawRequest(client, 'POST', `/v1/apps/${applicationId}/domains`, { hostname });
142
+ }
143
+ export async function verifyApplicationDomain(client, applicationId, hostname) {
144
+ return rawRequest(client, 'POST', `/v1/apps/${applicationId}/domains/${encodeURIComponent(hostname)}/verify`);
145
+ }
146
+ export async function listApplicationDomains(client, applicationId) {
147
+ return rawRequest(client, 'GET', `/v1/apps/${applicationId}/domains`);
148
+ }
149
+ export async function removeApplicationDomain(client, applicationId, hostname) {
150
+ return rawRequest(client, 'DELETE', `/v1/apps/${applicationId}/domains/${encodeURIComponent(hostname)}`);
151
+ }
152
+ export async function listBuilds(client, applicationId) {
153
+ return rawRequest(client, 'GET', `/v1/apps/${applicationId}/builds`);
154
+ }
155
+ export async function getBuild(client, buildId) {
156
+ return rawRequest(client, 'GET', `/v1/builds/${buildId}`);
157
+ }
158
+ export async function cancelBuild(client, buildId) {
159
+ return rawRequest(client, 'POST', `/v1/builds/${buildId}/cancel`);
160
+ }
161
+ /** Upload a source tree (base64 zip) as an immutable snapshot, reusable across builds. */
162
+ export async function createSourceSnapshot(client, input) {
163
+ return rawRequest(client, 'POST', '/v1/source-snapshots', input);
164
+ }
165
+ /** Turn a source tree into an image. Poll `getBuild` / follow `streamBuildLogs`, then `createRelease({ buildId })`. */
166
+ export async function queueBuild(client, applicationId, input) {
167
+ return rawRequest(client, 'POST', `/v1/apps/${applicationId}/builds`, input);
168
+ }
169
+ function parseAppSSEChunk(chunk) {
170
+ let eventName = 'message';
171
+ const dataLines = [];
172
+ for (const rawLine of chunk.split('\n')) {
173
+ const line = rawLine.replace(/\r$/, '');
174
+ if (line.length === 0 || line.startsWith(':'))
175
+ continue;
176
+ if (line.startsWith('event:'))
177
+ eventName = line.slice(6).trim();
178
+ else if (line.startsWith('data:'))
179
+ dataLines.push(line.slice(5).replace(/^ /, ''));
180
+ }
181
+ if (dataLines.length === 0)
182
+ return undefined;
183
+ let data = {};
184
+ try {
185
+ data = JSON.parse(dataLines.join('\n'));
186
+ }
187
+ catch {
188
+ data = { line: dataLines.join('\n') };
189
+ }
190
+ if (eventName === 'log') {
191
+ return {
192
+ type: 'log',
193
+ line: String(data.line ?? ''),
194
+ stream: data.stream,
195
+ ts: data.ts,
196
+ };
197
+ }
198
+ if (eventName === 'status')
199
+ return { type: 'status', status: String(data.status ?? '') };
200
+ if (eventName === 'complete')
201
+ return { type: 'complete', status: String(data.status ?? '') };
202
+ if (eventName === 'error')
203
+ return { type: 'error', message: String(data.message ?? 'stream error') };
204
+ return undefined;
205
+ }
206
+ async function* streamAppSSE(client, path, signal) {
207
+ const response = await client.fetchImpl(`${client.baseUrl}${path}`, {
208
+ method: 'GET',
209
+ headers: { Accept: 'text/event-stream', ...authHeaders(client) },
210
+ signal,
211
+ });
212
+ if (!response.ok || !response.body) {
213
+ const text = await response.text().catch(() => '');
214
+ let payload;
215
+ try {
216
+ payload = text ? JSON.parse(text) : undefined;
217
+ }
218
+ catch {
219
+ payload = undefined;
220
+ }
221
+ throw toApiError(response, payload, `Failed to stream logs: HTTP ${response.status}`);
222
+ }
223
+ const reader = response.body.getReader();
224
+ const decoder = new TextDecoder();
225
+ let buffer = '';
226
+ try {
227
+ for (;;) {
228
+ const { done, value } = await reader.read();
229
+ if (done)
230
+ break;
231
+ buffer += decoder.decode(value, { stream: true });
232
+ let boundary = buffer.indexOf('\n\n');
233
+ while (boundary >= 0) {
234
+ const chunk = buffer.slice(0, boundary);
235
+ buffer = buffer.slice(boundary + 2);
236
+ const event = parseAppSSEChunk(chunk);
237
+ if (event)
238
+ yield event;
239
+ boundary = buffer.indexOf('\n\n');
240
+ }
241
+ }
242
+ }
243
+ finally {
244
+ try {
245
+ reader.releaseLock();
246
+ }
247
+ catch {
248
+ /* ignore */
249
+ }
250
+ }
251
+ }
252
+ /** Follow a running release's container logs. Ends when the container stops. */
253
+ export function streamReleaseLogs(client, releaseId, options = {}) {
254
+ const tail = options.tail ?? 200;
255
+ return streamAppSSE(client, `/v1/releases/${releaseId}/logs?tail=${tail}`, options.signal);
256
+ }
257
+ /** Follow an image build. Terminal builds replay their stored output and end. */
258
+ export function streamBuildLogs(client, buildId, signal) {
259
+ return streamAppSSE(client, `/v1/builds/${buildId}/logs`, signal);
260
+ }
261
+ //# sourceMappingURL=apps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps.js","sourceRoot":"","sources":["../src/apps.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,12 @@
1
1
  import type { LoadedConfig } from './config.js';
2
2
  import type { AssetRegistry } from './types.js';
3
- export declare function discoverAssets(config: LoadedConfig): Promise<AssetRegistry>;
3
+ export interface DiscoveryOptions {
4
+ /** End-to-end deadline for importing candidate modules. Defaults to 120 seconds. */
5
+ timeoutMs?: number;
6
+ /** Maximum combined stdout/stderr retained from the harness. Defaults to 4 MiB. */
7
+ maxOutputBytes?: number;
8
+ /** Grace period before force-killing the child. Defaults to 1 second. */
9
+ killGraceMs?: number;
10
+ }
11
+ export declare function discoverAssets(config: LoadedConfig, options?: DiscoveryOptions): Promise<AssetRegistry>;
4
12
  //# sourceMappingURL=discovery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAc,aAAa,EAAmC,MAAM,YAAY,CAAC;AAwG7F,wBAAsB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAgEjF"}
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAc,aAAa,EAAmC,MAAM,YAAY,CAAC;AAiB7F,MAAM,WAAW,gBAAgB;IAC/B,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAiJD,wBAAsB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC,CAgEjH"}
package/dist/discovery.js CHANGED
@@ -4,6 +4,9 @@ import { createRequire } from 'node:module';
4
4
  import path from 'node:path';
5
5
  import { fileURLToPath, pathToFileURL } from 'node:url';
6
6
  import { computeSourceHash } from './hashing.js';
7
+ const DEFAULT_DISCOVERY_TIMEOUT_MS = 120_000;
8
+ const DEFAULT_MAX_OUTPUT_BYTES = 4 * 1024 * 1024;
9
+ const DEFAULT_KILL_GRACE_MS = 1_000;
7
10
  const CANDIDATE_FILE_PATTERN = /(?:^index\.[cm]?[jt]s$|^function\.[cm]?[jt]s$|^pipeline\.[cm]?[jt]s$|\.function\.[cm]?[jt]s$|\.pipeline\.[cm]?[jt]s$)/;
8
11
  const modulePath = typeof __filename === 'string' ? __filename : fileURLToPath(import.meta.url);
9
12
  const require = createRequire(modulePath);
@@ -32,25 +35,89 @@ function collectCandidateFiles(rootDir, output) {
32
35
  }
33
36
  }
34
37
  }
35
- function runDiscoveryHarness(candidateFiles) {
38
+ function runDiscoveryHarness(candidateFiles, options) {
36
39
  if (candidateFiles.length === 0) {
37
40
  return Promise.resolve({ assets: [], diagnostics: [] });
38
41
  }
39
42
  const harnessPath = path.join(path.dirname(modulePath), `discovery-harness${path.extname(modulePath)}`);
40
43
  const tsxImportPath = resolveTsxImportPath();
44
+ const timeoutMs = Math.floor(options.timeoutMs ?? DEFAULT_DISCOVERY_TIMEOUT_MS);
45
+ const maxOutputBytes = Math.floor(options.maxOutputBytes ?? DEFAULT_MAX_OUTPUT_BYTES);
46
+ const killGraceMs = Math.floor(options.killGraceMs ?? DEFAULT_KILL_GRACE_MS);
47
+ if (!Number.isFinite(timeoutMs) || timeoutMs <= 0)
48
+ throw new RangeError('discovery timeoutMs must be positive');
49
+ if (!Number.isFinite(maxOutputBytes) || maxOutputBytes <= 0)
50
+ throw new RangeError('discovery maxOutputBytes must be positive');
51
+ if (!Number.isFinite(killGraceMs) || killGraceMs < 0)
52
+ throw new RangeError('discovery killGraceMs must be non-negative');
41
53
  return new Promise((resolve) => {
42
54
  const child = spawn(process.execPath, ['--import', tsxImportPath, harnessPath, ...candidateFiles], {
43
55
  stdio: ['ignore', 'pipe', 'pipe'],
44
56
  });
45
- let stdout = '';
46
- let stderr = '';
57
+ const stdoutChunks = [];
58
+ const stderrChunks = [];
59
+ let capturedBytes = 0;
60
+ let terminalError;
61
+ let settled = false;
62
+ let forceKillTimer;
63
+ const timeoutTimer = setTimeout(() => terminate(`Discovery exceeded timeout of ${timeoutMs} ms`), timeoutMs);
64
+ timeoutTimer.unref?.();
65
+ function terminate(message) {
66
+ if (terminalError || settled)
67
+ return;
68
+ terminalError = message;
69
+ try {
70
+ child.kill('SIGTERM');
71
+ }
72
+ catch { /* close will settle */ }
73
+ forceKillTimer = setTimeout(() => {
74
+ if (!settled) {
75
+ try {
76
+ child.kill('SIGKILL');
77
+ }
78
+ catch { /* close will settle */ }
79
+ }
80
+ }, killGraceMs);
81
+ forceKillTimer.unref?.();
82
+ }
83
+ const capture = (target, chunk) => {
84
+ const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
85
+ const remaining = Math.max(0, maxOutputBytes - capturedBytes);
86
+ if (remaining > 0)
87
+ target.push(buffer.subarray(0, remaining));
88
+ capturedBytes += buffer.length;
89
+ if (capturedBytes > maxOutputBytes) {
90
+ terminate(`Discovery harness output exceeded ${maxOutputBytes} bytes`);
91
+ }
92
+ };
47
93
  child.stdout.on('data', (chunk) => {
48
- stdout += chunk.toString();
94
+ capture(stdoutChunks, chunk);
49
95
  });
50
96
  child.stderr.on('data', (chunk) => {
51
- stderr += chunk.toString();
97
+ capture(stderrChunks, chunk);
98
+ });
99
+ child.once('error', (error) => {
100
+ if (settled)
101
+ return;
102
+ settled = true;
103
+ clearTimeout(timeoutTimer);
104
+ if (forceKillTimer)
105
+ clearTimeout(forceKillTimer);
106
+ resolve({ assets: [], diagnostics: [{ code: 'IMPORT_FAILED', message: error.message }] });
52
107
  });
53
108
  child.on('close', () => {
109
+ if (settled)
110
+ return;
111
+ settled = true;
112
+ clearTimeout(timeoutTimer);
113
+ if (forceKillTimer)
114
+ clearTimeout(forceKillTimer);
115
+ const stdout = Buffer.concat(stdoutChunks).toString('utf8');
116
+ const stderr = Buffer.concat(stderrChunks).toString('utf8');
117
+ if (terminalError) {
118
+ resolve({ assets: [], diagnostics: [{ code: 'IMPORT_FAILED', message: terminalError }] });
119
+ return;
120
+ }
54
121
  if (!stdout.trim()) {
55
122
  resolve({
56
123
  assets: [],
@@ -75,11 +142,11 @@ function runDiscoveryHarness(candidateFiles) {
75
142
  });
76
143
  });
77
144
  }
78
- export async function discoverAssets(config) {
145
+ export async function discoverAssets(config, options = {}) {
79
146
  const candidateFiles = [];
80
147
  collectCandidateFiles(config.absoluteFunctionsDir, candidateFiles);
81
148
  collectCandidateFiles(config.absolutePipelinesDir, candidateFiles);
82
- const harnessResult = await runDiscoveryHarness(candidateFiles);
149
+ const harnessResult = await runDiscoveryHarness(candidateFiles, options);
83
150
  const diagnostics = [...harnessResult.diagnostics];
84
151
  // Orphan asset detection
85
152
  for (const filePath of (harnessResult.noAssetFiles ?? [])) {
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './apps.js';
1
2
  export * from './config.js';
2
3
  export * from './codegen.js';
3
4
  export * from './define-function.js';
@@ -5,6 +6,7 @@ export * from './define-pipeline.js';
5
6
  export * from './discovery.js';
6
7
  export * from './hashing.js';
7
8
  export * from './local-runner.js';
9
+ export * from './projects.js';
8
10
  export * from './transport.js';
9
11
  export * from './types.js';
10
12
  export { createZipBase64 } from './zip.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './apps.js';
1
2
  export * from './config.js';
2
3
  export * from './codegen.js';
3
4
  export * from './define-function.js';
@@ -5,6 +6,7 @@ export * from './define-pipeline.js';
5
6
  export * from './discovery.js';
6
7
  export * from './hashing.js';
7
8
  export * from './local-runner.js';
9
+ export * from './projects.js';
8
10
  export * from './transport.js';
9
11
  export * from './types.js';
10
12
  export { createZipBase64 } from './zip.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}
@@ -6,8 +6,10 @@ function serializeError(error) {
6
6
  }
7
7
  return { message: String(error) };
8
8
  }
9
- function captureConsole() {
9
+ function captureConsole(maxLogBytes) {
10
10
  const logs = [];
11
+ let capturedBytes = 0;
12
+ let droppedLogs = 0;
11
13
  const original = {
12
14
  log: console.log,
13
15
  info: console.info,
@@ -16,7 +18,7 @@ function captureConsole() {
16
18
  debug: console.debug,
17
19
  };
18
20
  const push = (level, args) => {
19
- logs.push(`[${level}] ${args.map((value) => {
21
+ const line = `[${level}] ${args.map((value) => {
20
22
  if (typeof value === 'string') {
21
23
  return value;
22
24
  }
@@ -26,7 +28,17 @@ function captureConsole() {
26
28
  catch {
27
29
  return String(value);
28
30
  }
29
- }).join(' ')}`);
31
+ }).join(' ')}`;
32
+ // Count the JSON-encoded form because escaping can make the response much
33
+ // larger than the raw console text captured here.
34
+ const bytes = Buffer.byteLength(JSON.stringify(line), 'utf8') + 1;
35
+ if (capturedBytes + bytes <= maxLogBytes) {
36
+ logs.push(line);
37
+ capturedBytes += bytes;
38
+ }
39
+ else {
40
+ droppedLogs++;
41
+ }
30
42
  };
31
43
  console.log = (...args) => push('log', args);
32
44
  console.info = (...args) => push('info', args);
@@ -35,6 +47,11 @@ function captureConsole() {
35
47
  console.debug = (...args) => push('debug', args);
36
48
  return {
37
49
  logs,
50
+ appendDropNotice: () => {
51
+ if (droppedLogs > 0) {
52
+ logs.push(`[inquir] ${droppedLogs} log entr${droppedLogs === 1 ? 'y was' : 'ies were'} dropped after reaching ${maxLogBytes} bytes`);
53
+ }
54
+ },
38
55
  restore: () => {
39
56
  console.log = original.log;
40
57
  console.info = original.info;
@@ -45,11 +62,13 @@ function captureConsole() {
45
62
  };
46
63
  }
47
64
  async function main() {
48
- const [, , filePath, exportName, payloadJson] = process.argv;
65
+ const [, , filePath, exportName, payloadJson, timeoutArg, maxLogBytesArg] = process.argv;
49
66
  if (!filePath || !exportName) {
50
67
  throw new Error('Usage: local-runner-harness <filePath> <exportName> <payloadJson>');
51
68
  }
52
- const { logs, restore } = captureConsole();
69
+ const timeoutMs = Number(timeoutArg) > 0 ? Math.floor(Number(timeoutArg)) : undefined;
70
+ const maxLogBytes = Number(maxLogBytesArg) > 0 ? Math.floor(Number(maxLogBytesArg)) : 4 * 1024 * 1024;
71
+ const { logs, restore, appendDropNotice } = captureConsole(maxLogBytes);
53
72
  try {
54
73
  const moduleExports = await import(pathToFileURL(filePath).href);
55
74
  const asset = moduleExports[exportName] ?? moduleExports.default;
@@ -64,8 +83,10 @@ async function main() {
64
83
  throw new Error(`Export "${exportName}" does not expose a callable handler`);
65
84
  }
66
85
  const parsedInput = inputSchema?.parse ? inputSchema.parse(payload) : payload;
67
- const result = await handler(parsedInput, { signal: undefined });
86
+ const signal = timeoutMs !== undefined ? AbortSignal.timeout(timeoutMs) : undefined;
87
+ const result = await handler(parsedInput, { signal });
68
88
  const parsedResult = outputSchema?.parse ? outputSchema.parse(result) : result;
89
+ appendDropNotice();
69
90
  const response = {
70
91
  result: parsedResult,
71
92
  logs,
@@ -73,6 +94,7 @@ async function main() {
73
94
  process.stdout.write(JSON.stringify(response));
74
95
  }
75
96
  catch (error) {
97
+ appendDropNotice();
76
98
  const response = {
77
99
  logs,
78
100
  error: serializeError(error),
@@ -1 +1 @@
1
- {"version":3,"file":"local-runner-harness.js","sourceRoot":"","sources":["../src/local-runner-harness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-runner-harness.js","sourceRoot":"","sources":["../src/local-runner-harness.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"local-runner.d.ts","sourceRoot":"","sources":["../src/local-runner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA6B9E,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC,EACpE,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,eAAoB,GAC5B,MAAM,EAAE,CAkBV;AAED,wBAAsB,UAAU,CAAC,QAAQ,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EACpE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC,EACpE,OAAO,EAAE,QAAQ,EACjB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAoElC"}
1
+ {"version":3,"file":"local-runner.d.ts","sourceRoot":"","sources":["../src/local-runner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAgC9E,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC,EACpE,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,eAAoB,GAC5B,MAAM,EAAE,CAuBV;AAED,wBAAsB,UAAU,CAAC,QAAQ,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EACpE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC,EACpE,OAAO,EAAE,QAAQ,EACjB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAuJlC"}