@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/README.md +6 -3
- package/dist/apps.d.ts +572 -0
- package/dist/apps.d.ts.map +1 -0
- package/dist/apps.js +261 -0
- package/dist/apps.js.map +1 -0
- package/dist/discovery.d.ts +9 -1
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +74 -7
- package/dist/discovery.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/local-runner-harness.js +28 -6
- package/dist/local-runner-harness.js.map +1 -1
- package/dist/local-runner.d.ts.map +1 -1
- package/dist/local-runner.js +103 -6
- package/dist/local-runner.js.map +1 -1
- package/dist/projects.d.ts +138 -0
- package/dist/projects.d.ts.map +1 -0
- package/dist/projects.js +52 -0
- package/dist/projects.js.map +1 -0
- package/dist/transport.d.ts +74 -1
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +304 -11
- package/dist/transport.js.map +1 -1
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -7
package/dist/local-runner.js
CHANGED
|
@@ -2,6 +2,8 @@ import { spawn } from 'node:child_process';
|
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
5
|
+
const DEFAULT_MAX_OUTPUT_BYTES = 4 * 1024 * 1024;
|
|
6
|
+
const DEFAULT_KILL_GRACE_MS = 1_000;
|
|
5
7
|
const modulePath = typeof __filename === 'string' ? __filename : fileURLToPath(import.meta.url);
|
|
6
8
|
const require = createRequire(modulePath);
|
|
7
9
|
function resolveTsxImportPath() {
|
|
@@ -24,29 +26,124 @@ export function buildLocalRunnerArgs(asset, payload, options = {}) {
|
|
|
24
26
|
if (options.inspectBrk) {
|
|
25
27
|
args.push('--inspect-brk');
|
|
26
28
|
}
|
|
27
|
-
args.push(getHarnessPath(), path.resolve(asset.filePath), asset.exportName, JSON.stringify(payload ?? {}))
|
|
29
|
+
args.push(getHarnessPath(), path.resolve(asset.filePath), asset.exportName, JSON.stringify(payload ?? {}), String(options.inspectBrk ? 0 : (options.timeoutMs ?? 0)),
|
|
30
|
+
// Reserve at least half of the parent capture budget for the result/error
|
|
31
|
+
// envelope. Otherwise logs can legally fill the entire budget and make an
|
|
32
|
+
// otherwise valid JSON response look like an output-limit failure.
|
|
33
|
+
String(Math.max(1, Math.floor((options.maxOutputBytes ?? DEFAULT_MAX_OUTPUT_BYTES) / 2))));
|
|
28
34
|
return args;
|
|
29
35
|
}
|
|
30
36
|
export async function runLocally(asset, payload, options = {}) {
|
|
37
|
+
if (options.timeoutMs !== undefined && (!Number.isFinite(options.timeoutMs) || options.timeoutMs <= 0)) {
|
|
38
|
+
throw new RangeError('timeoutMs must be a positive finite number');
|
|
39
|
+
}
|
|
40
|
+
if (options.maxOutputBytes !== undefined && (!Number.isFinite(options.maxOutputBytes) || options.maxOutputBytes <= 0)) {
|
|
41
|
+
throw new RangeError('maxOutputBytes must be a positive finite number');
|
|
42
|
+
}
|
|
43
|
+
if (options.killGraceMs !== undefined && (!Number.isFinite(options.killGraceMs) || options.killGraceMs < 0)) {
|
|
44
|
+
throw new RangeError('killGraceMs must be a non-negative finite number');
|
|
45
|
+
}
|
|
31
46
|
const startedAt = Date.now();
|
|
32
47
|
const args = buildLocalRunnerArgs(asset, payload, options);
|
|
48
|
+
const maxOutputBytes = Math.floor(options.maxOutputBytes ?? DEFAULT_MAX_OUTPUT_BYTES);
|
|
49
|
+
const killGraceMs = Math.floor(options.killGraceMs ?? DEFAULT_KILL_GRACE_MS);
|
|
50
|
+
// A debugger deliberately pauses before user code. A wall-clock deadline
|
|
51
|
+
// would otherwise kill a healthy session while it waits for attachment.
|
|
52
|
+
const timeoutMs = options.inspectBrk ? undefined : options.timeoutMs;
|
|
33
53
|
return await new Promise((resolve, reject) => {
|
|
34
54
|
const child = spawn(process.execPath, args, {
|
|
35
55
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
36
56
|
cwd: options.cwd,
|
|
37
57
|
});
|
|
38
|
-
|
|
39
|
-
|
|
58
|
+
const stdoutChunks = [];
|
|
59
|
+
const stderrChunks = [];
|
|
60
|
+
let capturedBytes = 0;
|
|
61
|
+
let settled = false;
|
|
62
|
+
let terminationReason;
|
|
63
|
+
let timeoutTimer;
|
|
64
|
+
let forceKillTimer;
|
|
65
|
+
const cleanup = () => {
|
|
66
|
+
if (timeoutTimer)
|
|
67
|
+
clearTimeout(timeoutTimer);
|
|
68
|
+
if (forceKillTimer)
|
|
69
|
+
clearTimeout(forceKillTimer);
|
|
70
|
+
options.signal?.removeEventListener('abort', onExternalAbort);
|
|
71
|
+
};
|
|
72
|
+
const terminate = (reason) => {
|
|
73
|
+
if (terminationReason || settled)
|
|
74
|
+
return;
|
|
75
|
+
terminationReason = reason;
|
|
76
|
+
try {
|
|
77
|
+
child.kill('SIGTERM');
|
|
78
|
+
}
|
|
79
|
+
catch { /* close/error will settle the run */ }
|
|
80
|
+
forceKillTimer = setTimeout(() => {
|
|
81
|
+
if (!settled) {
|
|
82
|
+
try {
|
|
83
|
+
child.kill('SIGKILL');
|
|
84
|
+
}
|
|
85
|
+
catch { /* close/error will settle the run */ }
|
|
86
|
+
}
|
|
87
|
+
}, killGraceMs);
|
|
88
|
+
forceKillTimer.unref?.();
|
|
89
|
+
};
|
|
90
|
+
const onExternalAbort = () => terminate('cancelled');
|
|
91
|
+
const capture = (target, chunk) => {
|
|
92
|
+
const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
93
|
+
const remaining = Math.max(0, maxOutputBytes - capturedBytes);
|
|
94
|
+
if (remaining > 0)
|
|
95
|
+
target.push(buffer.subarray(0, remaining));
|
|
96
|
+
capturedBytes += buffer.length;
|
|
97
|
+
if (capturedBytes > maxOutputBytes)
|
|
98
|
+
terminate('output-limit');
|
|
99
|
+
};
|
|
40
100
|
child.stdout.on('data', (chunk) => {
|
|
41
|
-
|
|
101
|
+
capture(stdoutChunks, chunk);
|
|
42
102
|
});
|
|
43
103
|
child.stderr.on('data', (chunk) => {
|
|
44
|
-
|
|
104
|
+
capture(stderrChunks, chunk);
|
|
105
|
+
});
|
|
106
|
+
if (timeoutMs !== undefined) {
|
|
107
|
+
timeoutTimer = setTimeout(() => terminate('timeout'), Math.floor(timeoutMs));
|
|
108
|
+
timeoutTimer.unref?.();
|
|
109
|
+
}
|
|
110
|
+
if (options.signal) {
|
|
111
|
+
if (options.signal.aborted)
|
|
112
|
+
onExternalAbort();
|
|
113
|
+
else
|
|
114
|
+
options.signal.addEventListener('abort', onExternalAbort, { once: true });
|
|
115
|
+
}
|
|
116
|
+
child.once('error', (error) => {
|
|
117
|
+
if (settled)
|
|
118
|
+
return;
|
|
119
|
+
settled = true;
|
|
120
|
+
cleanup();
|
|
121
|
+
reject(error);
|
|
45
122
|
});
|
|
46
|
-
child.on('error', reject);
|
|
47
123
|
child.on('close', (code) => {
|
|
124
|
+
if (settled)
|
|
125
|
+
return;
|
|
126
|
+
settled = true;
|
|
127
|
+
cleanup();
|
|
48
128
|
const durationMs = Date.now() - startedAt;
|
|
129
|
+
const stdout = Buffer.concat(stdoutChunks).toString('utf8');
|
|
130
|
+
const stderr = Buffer.concat(stderrChunks).toString('utf8');
|
|
49
131
|
const debuggerUrl = options.inspectBrk ? parseDebuggerUrl(stderr) : undefined;
|
|
132
|
+
if (terminationReason) {
|
|
133
|
+
const message = terminationReason === 'timeout'
|
|
134
|
+
? `Local run exceeded timeout of ${Math.floor(timeoutMs)} ms`
|
|
135
|
+
: terminationReason === 'cancelled'
|
|
136
|
+
? 'Local run was cancelled'
|
|
137
|
+
: `Local harness output exceeded ${maxOutputBytes} bytes`;
|
|
138
|
+
resolve({
|
|
139
|
+
logs: stderr ? stderr.trim().split(/\r?\n/).filter(Boolean) : [],
|
|
140
|
+
durationMs,
|
|
141
|
+
debuggerUrl,
|
|
142
|
+
terminationReason,
|
|
143
|
+
error: { message, code: code ?? undefined },
|
|
144
|
+
});
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
50
147
|
let response;
|
|
51
148
|
try {
|
|
52
149
|
response = stdout ? JSON.parse(stdout) : { logs: [] };
|
package/dist/local-runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-runner.js","sourceRoot":"","sources":["../src/local-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AASxD,MAAM,UAAU,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChG,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;AAE1C,SAAS,oBAAoB;IAC3B,8EAA8E;IAC9E,6EAA6E;IAC7E,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,IAAI,CAAC,IAAI,CACd,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EACxB,uBAAuB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAClD,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC5C,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAAoE,EACpE,OAAgB,EAChB,UAA2B,EAAE;IAE7B,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,mEAAmE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;IACpG,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAClD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,IAAI,CACP,cAAc,EAAE,EAChB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC5B,KAAK,CAAC,UAAU,EAChB,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"local-runner.js","sourceRoot":"","sources":["../src/local-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project folders: inventory, membership, and the canvas/layout behind the
|
|
3
|
+
* dashboard's project view.
|
|
4
|
+
*
|
|
5
|
+
* A folder groups long-lived container applications (web services, APIs,
|
|
6
|
+
* databases, and workers). Serverless functions are managed separately.
|
|
7
|
+
* The canvas draws its
|
|
8
|
+
* application members as nodes, the recorded connections between them as
|
|
9
|
+
* edges, and remembers where each node was dragged on the membership row.
|
|
10
|
+
*/
|
|
11
|
+
import type { AppResources, AppScalingPolicy, AppVolumeSpec } from './apps.js';
|
|
12
|
+
import { type TransportClient } from './transport.js';
|
|
13
|
+
export interface Project {
|
|
14
|
+
id: string;
|
|
15
|
+
name: string;
|
|
16
|
+
slug: string;
|
|
17
|
+
description: string | null;
|
|
18
|
+
/** Number of container applications in this project. */
|
|
19
|
+
resourceCount: number;
|
|
20
|
+
createdAt: string;
|
|
21
|
+
updatedAt: string;
|
|
22
|
+
}
|
|
23
|
+
export interface CreateProjectInput {
|
|
24
|
+
name: string;
|
|
25
|
+
slug?: string;
|
|
26
|
+
description?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface ProjectListResponse {
|
|
29
|
+
items: Project[];
|
|
30
|
+
nextCursor: string | null;
|
|
31
|
+
}
|
|
32
|
+
export interface ProjectResourceRef {
|
|
33
|
+
kind: 'application';
|
|
34
|
+
id: string;
|
|
35
|
+
}
|
|
36
|
+
export interface ProjectMember extends ProjectResourceRef {
|
|
37
|
+
addedAt: string;
|
|
38
|
+
name: string;
|
|
39
|
+
createdAt: string;
|
|
40
|
+
updatedAt: string;
|
|
41
|
+
}
|
|
42
|
+
export interface ProjectDetail extends Project {
|
|
43
|
+
resources: ProjectMember[];
|
|
44
|
+
nextCursor: string | null;
|
|
45
|
+
}
|
|
46
|
+
export declare function listProjects(client: TransportClient, options?: {
|
|
47
|
+
limit?: number;
|
|
48
|
+
cursor?: string;
|
|
49
|
+
}): Promise<ProjectListResponse>;
|
|
50
|
+
/** Resolve a live project by its id or slug. */
|
|
51
|
+
export declare function getProject(client: TransportClient, project: string): Promise<ProjectDetail>;
|
|
52
|
+
export declare function createProject(client: TransportClient, input: CreateProjectInput): Promise<Project>;
|
|
53
|
+
/** Idempotent: filing an existing member again returns the same membership. */
|
|
54
|
+
export declare function addProjectResource(client: TransportClient, project: string, resource: ProjectResourceRef): Promise<ProjectMember>;
|
|
55
|
+
export interface CanvasPosition {
|
|
56
|
+
x: number;
|
|
57
|
+
y: number;
|
|
58
|
+
}
|
|
59
|
+
/** Where the node's image comes from — the glyph on the card. */
|
|
60
|
+
export type CanvasSourceKind = 'github' | 'build' | 'image' | 'none';
|
|
61
|
+
/** Production health of a node, as the folder listing computes it. */
|
|
62
|
+
export interface ProjectCanvasProduction {
|
|
63
|
+
activeReleaseId: string;
|
|
64
|
+
status: string;
|
|
65
|
+
restartCount: number;
|
|
66
|
+
failureReason?: string;
|
|
67
|
+
/** First verified production URL; absent for a TCP-only service. */
|
|
68
|
+
url?: string;
|
|
69
|
+
}
|
|
70
|
+
export interface ProjectCanvasApplication {
|
|
71
|
+
id: string;
|
|
72
|
+
name: string;
|
|
73
|
+
/** Permanent address label; absent when the apps plane is not composed. */
|
|
74
|
+
slug?: string;
|
|
75
|
+
template: string | null;
|
|
76
|
+
sourceKind: CanvasSourceKind;
|
|
77
|
+
production: ProjectCanvasProduction | null;
|
|
78
|
+
desiredReplicas?: number;
|
|
79
|
+
activation?: AppScalingPolicy['activation'];
|
|
80
|
+
ingress?: 'private' | 'public';
|
|
81
|
+
resources?: AppResources;
|
|
82
|
+
volumes: AppVolumeSpec[];
|
|
83
|
+
/** When the production release was created; absent when nothing is promoted. */
|
|
84
|
+
lastDeployAt?: string;
|
|
85
|
+
lastChangeAt: string;
|
|
86
|
+
createdAt: string;
|
|
87
|
+
updatedAt: string;
|
|
88
|
+
}
|
|
89
|
+
export interface ProjectCanvasNode {
|
|
90
|
+
/** `app:<applicationId>` — the id a layout write uses. */
|
|
91
|
+
id: string;
|
|
92
|
+
kind: 'application';
|
|
93
|
+
application: ProjectCanvasApplication;
|
|
94
|
+
/** null until somebody drags the node; the dashboard auto-arranges it then. */
|
|
95
|
+
position: CanvasPosition | null;
|
|
96
|
+
}
|
|
97
|
+
export interface ProjectCanvasEdge {
|
|
98
|
+
id: string;
|
|
99
|
+
consumerApplicationId: string;
|
|
100
|
+
providerApplicationId: string;
|
|
101
|
+
envKey: string;
|
|
102
|
+
providerTemplate: string | null;
|
|
103
|
+
/** The provider is not a member of this folder. */
|
|
104
|
+
external: boolean;
|
|
105
|
+
provider: {
|
|
106
|
+
id: string;
|
|
107
|
+
name: string;
|
|
108
|
+
archived: boolean;
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/** @deprecated Projects do not contain serverless functions. */
|
|
112
|
+
export type ProjectCanvasFunction = never;
|
|
113
|
+
export interface ProjectCanvas {
|
|
114
|
+
project: {
|
|
115
|
+
id: string;
|
|
116
|
+
name: string;
|
|
117
|
+
slug: string;
|
|
118
|
+
};
|
|
119
|
+
nodes: ProjectCanvasNode[];
|
|
120
|
+
edges: ProjectCanvasEdge[];
|
|
121
|
+
/** @deprecated Empty compatibility field; projects contain applications only. */
|
|
122
|
+
functions: readonly never[];
|
|
123
|
+
/** More than the server draws (500); the dashboard falls back to the list. */
|
|
124
|
+
truncated: boolean;
|
|
125
|
+
generatedAt: string;
|
|
126
|
+
}
|
|
127
|
+
/** `{ "app:<id>": {x, y} | null }` — null forgets a position. */
|
|
128
|
+
export type ProjectCanvasLayout = Record<`app:${string}`, CanvasPosition | null>;
|
|
129
|
+
/** `:project` is the folder's id or slug. */
|
|
130
|
+
export declare function getProjectCanvas(client: TransportClient, project: string): Promise<ProjectCanvas>;
|
|
131
|
+
/**
|
|
132
|
+
* Store node positions. Only members can be placed: a stranger's id is a 400
|
|
133
|
+
* and nothing is written. Positions are cosmetic — no release, no routing.
|
|
134
|
+
*/
|
|
135
|
+
export declare function saveProjectCanvasLayout(client: TransportClient, project: string, positions: ProjectCanvasLayout): Promise<{
|
|
136
|
+
updated: number;
|
|
137
|
+
}>;
|
|
138
|
+
//# sourceMappingURL=projects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../src/projects.ts"],"names":[],"mappings":"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"}
|
package/dist/projects.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project folders: inventory, membership, and the canvas/layout behind the
|
|
3
|
+
* dashboard's project view.
|
|
4
|
+
*
|
|
5
|
+
* A folder groups long-lived container applications (web services, APIs,
|
|
6
|
+
* databases, and workers). Serverless functions are managed separately.
|
|
7
|
+
* The canvas draws its
|
|
8
|
+
* application members as nodes, the recorded connections between them as
|
|
9
|
+
* edges, and remembers where each node was dragged on the membership row.
|
|
10
|
+
*/
|
|
11
|
+
import { rawRequest } from './transport.js';
|
|
12
|
+
export async function listProjects(client, options = {}) {
|
|
13
|
+
const query = new URLSearchParams();
|
|
14
|
+
if (options.limit !== undefined)
|
|
15
|
+
query.set('limit', String(options.limit));
|
|
16
|
+
if (options.cursor !== undefined)
|
|
17
|
+
query.set('cursor', options.cursor);
|
|
18
|
+
return rawRequest(client, 'GET', `/v1/projects${query.size ? `?${query}` : ''}`);
|
|
19
|
+
}
|
|
20
|
+
/** Resolve a live project by its id or slug. */
|
|
21
|
+
export async function getProject(client, project) {
|
|
22
|
+
return rawRequest(client, 'GET', `/v1/projects/${encodeURIComponent(project)}`);
|
|
23
|
+
}
|
|
24
|
+
export async function createProject(client, input) {
|
|
25
|
+
return rawRequest(client, 'POST', '/v1/projects', input);
|
|
26
|
+
}
|
|
27
|
+
/** Idempotent: filing an existing member again returns the same membership. */
|
|
28
|
+
export async function addProjectResource(client, project, resource) {
|
|
29
|
+
// JavaScript consumers do not get the TypeScript literal-kind check.
|
|
30
|
+
if (resource?.kind !== 'application') {
|
|
31
|
+
throw new TypeError('Projects only contain long-lived container applications; resource.kind must be "application".');
|
|
32
|
+
}
|
|
33
|
+
return rawRequest(client, 'POST', `/v1/projects/${encodeURIComponent(project)}/resources`, {
|
|
34
|
+
kind: 'application',
|
|
35
|
+
id: resource.id,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/** `:project` is the folder's id or slug. */
|
|
39
|
+
export async function getProjectCanvas(client, project) {
|
|
40
|
+
return rawRequest(client, 'GET', `/v1/projects/${encodeURIComponent(project)}/canvas`);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Store node positions. Only members can be placed: a stranger's id is a 400
|
|
44
|
+
* and nothing is written. Positions are cosmetic — no release, no routing.
|
|
45
|
+
*/
|
|
46
|
+
export async function saveProjectCanvasLayout(client, project, positions) {
|
|
47
|
+
if (Object.keys(positions).some((nodeId) => !nodeId.startsWith('app:') || nodeId.length === 4)) {
|
|
48
|
+
throw new TypeError('Project canvas positions must use application node IDs: app:<applicationId>.');
|
|
49
|
+
}
|
|
50
|
+
return rawRequest(client, 'PUT', `/v1/projects/${encodeURIComponent(project)}/canvas/layout`, { positions });
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../src/projects.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,UAAU,EAAwB,MAAM,gBAAgB,CAAC;AAyClE,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAuB,EACvB,UAA+C,EAAE;IAEjD,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;IACpC,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE,OAAO,UAAU,CAAsB,MAAM,EAAE,KAAK,EAAE,eAAe,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxG,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAuB,EAAE,OAAe;IACvE,OAAO,UAAU,CAAgB,MAAM,EAAE,KAAK,EAAE,gBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAuB,EAAE,KAAyB;IACpF,OAAO,UAAU,CAAU,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;AACpE,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAuB,EACvB,OAAe,EACf,QAA4B;IAE5B,qEAAqE;IACrE,IAAI,QAAQ,EAAE,IAAI,KAAK,aAAa,EAAE,CAAC;QACrC,MAAM,IAAI,SAAS,CAAC,+FAA+F,CAAC,CAAC;IACvH,CAAC;IACD,OAAO,UAAU,CAAgB,MAAM,EAAE,MAAM,EAAE,gBAAgB,kBAAkB,CAAC,OAAO,CAAC,YAAY,EAAE;QACxG,IAAI,EAAE,aAAa;QACnB,EAAE,EAAE,QAAQ,CAAC,EAAE;KAChB,CAAC,CAAC;AACL,CAAC;AA6ED,6CAA6C;AAC7C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAuB,EACvB,OAAe;IAEf,OAAO,UAAU,CACf,MAAM,EACN,KAAK,EACL,gBAAgB,kBAAkB,CAAC,OAAO,CAAC,SAAS,CACrD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAuB,EACvB,OAAe,EACf,SAA8B;IAE9B,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAC/F,MAAM,IAAI,SAAS,CAAC,8EAA8E,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,UAAU,CACf,MAAM,EACN,KAAK,EACL,gBAAgB,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,EAC3D,EAAE,SAAS,EAAE,CACd,CAAC;AACJ,CAAC"}
|
package/dist/transport.d.ts
CHANGED
|
@@ -16,9 +16,13 @@ export interface InvokeRemoteOptions {
|
|
|
16
16
|
}
|
|
17
17
|
export interface CreateRemoteFunctionInput {
|
|
18
18
|
name: string;
|
|
19
|
-
handler:
|
|
19
|
+
/** module.export spec for handler-mode functions. Optional: web-mode apps and
|
|
20
|
+
* server-side detection don't need one (server defaults to index.handler). */
|
|
21
|
+
handler?: string;
|
|
20
22
|
runtime?: string;
|
|
21
23
|
runtimeVariant?: string;
|
|
24
|
+
/** Runtime-specific configuration. Web apps: { mode: 'web', startCommand }. */
|
|
25
|
+
runtimeConfig?: Record<string, unknown>;
|
|
22
26
|
timeoutMs?: number;
|
|
23
27
|
memoryMb?: number;
|
|
24
28
|
cpuShares?: number;
|
|
@@ -134,6 +138,8 @@ export interface TransportClient {
|
|
|
134
138
|
readonly functionCache: Map<string, RemoteFunctionRecord>;
|
|
135
139
|
}
|
|
136
140
|
export declare function createClient(options: TransportClientOptions): TransportClient;
|
|
141
|
+
/** Auth + workspace-targeting headers shared by every request the client makes. */
|
|
142
|
+
export declare function authHeaders(client: TransportClient): Record<string, string>;
|
|
137
143
|
/**
|
|
138
144
|
* Structured HTTP error thrown by every transport request. Carries the status
|
|
139
145
|
* code, the backend `error.code` (when present), and the response's request id
|
|
@@ -151,6 +157,49 @@ export declare class ApiError extends Error {
|
|
|
151
157
|
payload?: unknown;
|
|
152
158
|
});
|
|
153
159
|
}
|
|
160
|
+
/** Build an {@link ApiError} from a non-OK response body + headers. */
|
|
161
|
+
export declare function toApiError(response: Response, payload: unknown, fallback?: string): ApiError;
|
|
162
|
+
/**
|
|
163
|
+
* Escape hatch for endpoints without a dedicated helper (exec, admin, new APIs).
|
|
164
|
+
* Same auth, error mapping, and JSON handling as every typed helper above.
|
|
165
|
+
*/
|
|
166
|
+
export declare function rawRequest<TResponse>(client: TransportClient, method: string, pathname: string, body?: unknown): Promise<TResponse>;
|
|
167
|
+
/**
|
|
168
|
+
* List the functions visible to the credential, walking `limit`/`offset` pages
|
|
169
|
+
* until the server runs out of rows.
|
|
170
|
+
*
|
|
171
|
+
* What the result guarantees: it is complete, or this throws. The scan compares
|
|
172
|
+
* the rows it collected against the `total` the server reported and refuses to
|
|
173
|
+
* return a list it can tell is short, so a `find()` by name over the result
|
|
174
|
+
* cannot report an existing function as missing and turn an update into a
|
|
175
|
+
* create (which the server rejects with 409 "name already exists"). That covers
|
|
176
|
+
* the page cap, a server that ignores `offset`, a create burst that slides the
|
|
177
|
+
* paging window backwards over rows already read, and a single create landing
|
|
178
|
+
* behind the read cursor.
|
|
179
|
+
*
|
|
180
|
+
* What it cannot guarantee: the server sorts with `ORDER BY createdAt DESC` and
|
|
181
|
+
* no unique tiebreaker (functions-prisma-repository.ts `list()`), and
|
|
182
|
+
* `createdAt` defaults to now(), so rows written in one batch tie. LIMIT/OFFSET
|
|
183
|
+
* over a non-unique sort is not stable, and rows are deleted concurrently. Two
|
|
184
|
+
* consequences:
|
|
185
|
+
* - Tied rows straddling a page boundary can come back in a different order for
|
|
186
|
+
* the offset=0 and offset=N queries: one row is returned twice (deduped
|
|
187
|
+
* above) and its twin never is. That leaves the scan one row short of
|
|
188
|
+
* `total`, so it is retried and, if still short, reported — not hidden.
|
|
189
|
+
* - A row DELETED after it was scanned shifts the rows behind it to a LOWER
|
|
190
|
+
* offset, so the next page starts one row too late and one row is skipped for
|
|
191
|
+
* good. `total` drops by one at the same moment, so `items.length === total`
|
|
192
|
+
* still holds: this is the one case that stays silent, and re-running the
|
|
193
|
+
* command against the settled list is the only cure here. Closing it needs a
|
|
194
|
+
* stable cursor or a server-side lookup by name, neither of which the API
|
|
195
|
+
* offers today.
|
|
196
|
+
*
|
|
197
|
+
* The result is unbounded up to FUNCTIONS_PAGE_SIZE * FUNCTIONS_MAX_PAGES rows.
|
|
198
|
+
* Callers feeding it into a size-limited sink — the CLI's MCP `list_functions`
|
|
199
|
+
* tool serialises it straight into a model's context, where it used to be capped
|
|
200
|
+
* at the server's default 50 — have to cap it themselves; this function will not
|
|
201
|
+
* quietly do it for them, since quiet truncation is the bug it exists to fix.
|
|
202
|
+
*/
|
|
154
203
|
export declare function listRemoteFunctions(client: TransportClient): Promise<RemoteFunctionRecord[]>;
|
|
155
204
|
export declare function resolveRemoteFunction(client: TransportClient, functionName: string): Promise<RemoteFunctionRecord>;
|
|
156
205
|
export declare function invokeRemote<TPayload = unknown, TResult = unknown>(client: TransportClient, functionName: string, payload: TPayload, options?: InvokeRemoteOptions): Promise<RemoteInvocationResult<TResult>>;
|
|
@@ -190,6 +239,30 @@ export declare function listFunctionDeploys(client: TransportClient, functionId:
|
|
|
190
239
|
export declare function rollbackDeploy(client: TransportClient, functionId: string, deployId: string, options?: RollbackDeployOptions): Promise<QueuedDeployResponse>;
|
|
191
240
|
/** Stream a deploy's logs over SSE. Yields log/status/complete events until the deploy is terminal. */
|
|
192
241
|
export declare function streamDeployLogs(client: TransportClient, deployId: string, signal?: AbortSignal): AsyncGenerator<DeployLogEvent, void, unknown>;
|
|
242
|
+
/** Loose snapshot of a run trace as streamed by the observability SSE endpoint. */
|
|
243
|
+
export interface RunTraceSnapshot {
|
|
244
|
+
runId: string;
|
|
245
|
+
/** RUNNING | SUCCEEDED | FAILED | TIMED_OUT | CANCELLED */
|
|
246
|
+
status: string;
|
|
247
|
+
[key: string]: unknown;
|
|
248
|
+
}
|
|
249
|
+
export interface RunStreamEvent {
|
|
250
|
+
/** 'snapshot' = initial state on connect; 'update' = a subsequent change. */
|
|
251
|
+
type: 'snapshot' | 'update';
|
|
252
|
+
trace: RunTraceSnapshot;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Subscribe to real-time updates for a run over SSE.
|
|
256
|
+
* Yields a 'snapshot' event first, then 'update' events. The generator returns
|
|
257
|
+
* once the run reaches a terminal status or the connection closes. Pass an
|
|
258
|
+
* AbortSignal to stop early.
|
|
259
|
+
*/
|
|
260
|
+
export declare function subscribeToRun(client: TransportClient, runId: string, signal?: AbortSignal): AsyncGenerator<RunStreamEvent, void, unknown>;
|
|
261
|
+
/**
|
|
262
|
+
* Consume {@link subscribeToRun} until the run is terminal and resolve with the
|
|
263
|
+
* last trace snapshot seen (or undefined if the stream closed without one).
|
|
264
|
+
*/
|
|
265
|
+
export declare function waitForRun(client: TransportClient, runId: string, signal?: AbortSignal): Promise<RunTraceSnapshot | undefined>;
|
|
193
266
|
export declare function listRemoteInvocations(client: TransportClient, functionId: string, options?: {
|
|
194
267
|
limit?: number;
|
|
195
268
|
offset?: number;
|
package/dist/transport.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
|