@ccdd/project 2.0.1 → 3.0.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 +8 -8
- package/dist/monitor-ui/assets/{GraphView-UjtW4QRC.js → GraphView-CzM-UdPe.js} +3 -3
- package/dist/monitor-ui/assets/ValidationView-C3G5cwXp.js +1 -0
- package/dist/monitor-ui/assets/ValidationView-p5r8lX18.css +1 -0
- package/dist/monitor-ui/assets/{elk-api-yRi2AOS6.js → elk-api-DDn2L4-3.js} +1 -1
- package/dist/monitor-ui/assets/{elk.bundled-CtLobQTy.js → elk.bundled-Bmx50hLH.js} +1 -1
- package/dist/monitor-ui/assets/{index-Cpm0fC0p.js → index-B4RYcPAo.js} +6 -6
- package/dist/monitor-ui/assets/index-SA3sxGLr.css +1 -0
- package/dist/monitor-ui/index.html +4 -4
- package/dist/scripts/prepare-demo.js +16 -16
- package/dist/scripts/prepare-demo.js.map +1 -1
- package/dist/src/broker/human-claims.d.ts +26 -0
- package/dist/src/broker/human-claims.js +104 -0
- package/dist/src/broker/human-claims.js.map +1 -0
- package/dist/src/broker/index.d.ts +23 -1
- package/dist/src/broker/index.js +89 -15
- package/dist/src/broker/index.js.map +1 -1
- package/dist/src/cli.js +4 -3
- package/dist/src/cli.js.map +1 -1
- package/dist/src/contracts.d.ts +3 -0
- package/dist/src/doctor/index.js +16 -16
- package/dist/src/doctor/index.js.map +1 -1
- package/dist/src/executors/auth.js +7 -7
- package/dist/src/executors/auth.js.map +1 -1
- package/dist/src/executors/human-preparation.d.ts +18 -0
- package/dist/src/executors/human-preparation.js +47 -0
- package/dist/src/executors/human-preparation.js.map +1 -0
- package/dist/src/executors/index.js +13 -13
- package/dist/src/executors/index.js.map +1 -1
- package/dist/src/executors/pi.js +24 -24
- package/dist/src/executors/pi.js.map +1 -1
- package/dist/src/monitor/actions.d.ts +1 -1
- package/dist/src/monitor/actions.js +8 -8
- package/dist/src/monitor/actions.js.map +1 -1
- package/dist/src/monitor/server.js +88 -70
- package/dist/src/monitor/server.js.map +1 -1
- package/dist/src/monitor/store.js +29 -24
- package/dist/src/monitor/store.js.map +1 -1
- package/dist/src/monitor/types.d.ts +5 -0
- package/dist/src/monitor/ui/api.js +3 -3
- package/dist/src/monitor/ui/api.js.map +1 -1
- package/dist/src/monitor/ui/critic-presentation.js +12 -12
- package/dist/src/monitor/ui/critic-presentation.js.map +1 -1
- package/dist/src/monitor/ui/format.js +8 -8
- package/dist/src/monitor/ui/format.js.map +1 -1
- package/dist/src/monitor/ui/tool-input.js +9 -9
- package/dist/src/monitor/ui/tool-input.js.map +1 -1
- package/dist/src/project/cli.js +6 -1
- package/dist/src/project/cli.js.map +1 -1
- package/dist/src/project/identity.js +5 -1
- package/dist/src/project/identity.js.map +1 -1
- package/dist/src/project/index.d.ts +3 -0
- package/dist/src/project/index.js +2 -0
- package/dist/src/project/index.js.map +1 -1
- package/dist/src/project/store.js +3 -2
- package/dist/src/project/store.js.map +1 -1
- package/dist/src/review/cli.d.ts +8 -0
- package/dist/src/review/cli.js +136 -0
- package/dist/src/review/cli.js.map +1 -0
- package/dist/src/review/client.d.ts +30 -0
- package/dist/src/review/client.js +191 -0
- package/dist/src/review/client.js.map +1 -0
- package/dist/src/review/local-claim.d.ts +5 -0
- package/dist/src/review/local-claim.js +16 -0
- package/dist/src/review/local-claim.js.map +1 -0
- package/dist/src/review/server.d.ts +11 -0
- package/dist/src/review/server.js +248 -0
- package/dist/src/review/server.js.map +1 -0
- package/dist/src/review/types.d.ts +10 -0
- package/dist/src/review/types.js +17 -0
- package/dist/src/review/types.js.map +1 -0
- package/dist/src/tools/contracts.d.ts +22 -0
- package/dist/src/tools/environment-host.d.ts +1 -0
- package/dist/src/tools/environment-host.js +32 -0
- package/dist/src/tools/environment-host.js.map +1 -0
- package/dist/src/tools/environment.d.ts +18 -0
- package/dist/src/tools/environment.js +116 -0
- package/dist/src/tools/environment.js.map +1 -0
- package/dist/src/tools/inputs.d.ts +7 -0
- package/dist/src/tools/inputs.js +64 -0
- package/dist/src/tools/inputs.js.map +1 -0
- package/dist/src/tools/manifest.d.ts +4 -0
- package/dist/src/tools/manifest.js +28 -0
- package/dist/src/tools/manifest.js.map +1 -0
- package/dist/src/tools/runner.js +4 -2
- package/dist/src/tools/runner.js.map +1 -1
- package/dist/src/tools/runtime-host.js +27 -3
- package/dist/src/tools/runtime-host.js.map +1 -1
- package/dist/src/tools/schema.d.ts +3 -1
- package/dist/src/tools/schema.js +33 -1
- package/dist/src/tools/schema.js.map +1 -1
- package/dist/src/workspaces/index.d.ts +27 -0
- package/dist/src/workspaces/index.js +2 -0
- package/dist/src/workspaces/index.js.map +1 -1
- package/dist/src/workspaces/transfer.d.ts +52 -0
- package/dist/src/workspaces/transfer.js +372 -0
- package/dist/src/workspaces/transfer.js.map +1 -0
- package/package.json +2 -2
- package/dist/monitor-ui/assets/ValidationView-CC1FvqUl.js +0 -1
- package/dist/monitor-ui/assets/ValidationView-DWl4b8Ug.css +0 -1
- package/dist/monitor-ui/assets/index-CUzg-dht.css +0 -1
|
@@ -10,6 +10,7 @@ import { reopenWorkspace } from '../workspaces/index.js';
|
|
|
10
10
|
import { createMonitorStore } from './store.js';
|
|
11
11
|
import { inspectProject } from '../project/index.js';
|
|
12
12
|
import { MonitorActionError, authorizeWorkspace, claimReview, completeReview, executeReviewTool } from './actions.js';
|
|
13
|
+
import { activeTryClaim } from '../broker/human-claims.js';
|
|
13
14
|
const ARTIFACT_BUDGET_MS = 10_000;
|
|
14
15
|
const MAX_ARTIFACT_READS = 2;
|
|
15
16
|
const identifier = /^[A-Za-z0-9][A-Za-z0-9_-]*$/;
|
|
@@ -18,7 +19,7 @@ class HttpError extends MonitorActionError {
|
|
|
18
19
|
function parameters(url, allowed) {
|
|
19
20
|
for (const name of url.searchParams.keys()) {
|
|
20
21
|
if (!allowed.includes(name) || url.searchParams.getAll(name).length !== 1)
|
|
21
|
-
throw new HttpError(400, '
|
|
22
|
+
throw new HttpError(400, 'Unknown or duplicate query parameter.');
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
function number(value, fallback, minimum, maximum) {
|
|
@@ -26,7 +27,7 @@ function number(value, fallback, minimum, maximum) {
|
|
|
26
27
|
return fallback;
|
|
27
28
|
const parsed = Number(value);
|
|
28
29
|
if (!/^\d+$/.test(value) || !Number.isSafeInteger(parsed) || parsed < minimum || parsed > maximum)
|
|
29
|
-
throw new HttpError(400,
|
|
30
|
+
throw new HttpError(400, `The query range must be an integer between ${minimum} and ${maximum}.`);
|
|
30
31
|
return parsed;
|
|
31
32
|
}
|
|
32
33
|
function id(value, maximumLength = 128) {
|
|
@@ -35,10 +36,10 @@ function id(value, maximumLength = 128) {
|
|
|
35
36
|
decoded = decodeURIComponent(value);
|
|
36
37
|
}
|
|
37
38
|
catch {
|
|
38
|
-
throw new HttpError(400, '
|
|
39
|
+
throw new HttpError(400, 'Invalid identifier.');
|
|
39
40
|
}
|
|
40
41
|
if (decoded.length > maximumLength || !identifier.test(decoded))
|
|
41
|
-
throw new HttpError(400, '
|
|
42
|
+
throw new HttpError(400, 'Invalid identifier.');
|
|
42
43
|
return decoded;
|
|
43
44
|
}
|
|
44
45
|
function errorCode(value) {
|
|
@@ -48,52 +49,54 @@ function safeError(value) {
|
|
|
48
49
|
if (value instanceof MonitorActionError)
|
|
49
50
|
return value;
|
|
50
51
|
const code = errorCode(value);
|
|
52
|
+
if (code === 'HUMAN_PREPARATION_FAILED' && value instanceof Error)
|
|
53
|
+
return new HttpError(409, value.message.slice(0, 8000));
|
|
51
54
|
if (['WORKSPACE_CHANGED', 'WORKSPACE_CACHE_TAMPERED', 'WORKSPACE_ARTIFACT_MISMATCH'].includes(code ?? ''))
|
|
52
|
-
return new HttpError(409, '
|
|
55
|
+
return new HttpError(409, 'The review input has changed; this Artifact cannot be inspected.');
|
|
53
56
|
if (code === 'ENOENT' || code === 'ENOTDIR')
|
|
54
|
-
return new HttpError(409, '
|
|
57
|
+
return new HttpError(409, 'The stored review input could not be found. The original or copy may have been moved or deleted.');
|
|
55
58
|
if (code === 'HUMAN_TOOL_UNAVAILABLE')
|
|
56
|
-
return new HttpError(409, '
|
|
59
|
+
return new HttpError(409, 'Unable to start the registered program. Check its installation and tool settings.');
|
|
57
60
|
if (code === 'HUMAN_TOOL_FAILED')
|
|
58
|
-
return new HttpError(409, '
|
|
61
|
+
return new HttpError(409, 'The registered program did not finish successfully. Check the program and tool settings.');
|
|
59
62
|
if (code === 'HUMAN_TOOL_TIMEOUT')
|
|
60
|
-
return new HttpError(504, '
|
|
63
|
+
return new HttpError(504, 'The registered program timed out.');
|
|
61
64
|
if (code === 'ARTIFACT_TOOL_TIMEOUT')
|
|
62
|
-
return new HttpError(504, '
|
|
65
|
+
return new HttpError(504, 'The tool timed out.');
|
|
63
66
|
if (code === 'ARTIFACT_TOOL_FAILED')
|
|
64
|
-
return new HttpError(409, '
|
|
67
|
+
return new HttpError(409, 'Unable to run the tool. Check the input and registered program, then try again.');
|
|
65
68
|
if (code === 'UNKNOWN_ARTIFACT_TOOL')
|
|
66
|
-
return new HttpError(400, '
|
|
69
|
+
return new HttpError(400, 'This tool is not registered for this Artifact.');
|
|
67
70
|
if (code === 'ABORTED')
|
|
68
|
-
return new HttpError(409, '
|
|
71
|
+
return new HttpError(409, 'Tool execution was aborted.');
|
|
69
72
|
if (code === 'EACCES' || code === 'EPERM')
|
|
70
|
-
return new HttpError(409, '
|
|
73
|
+
return new HttpError(409, 'Permission denied when reading the review input.');
|
|
71
74
|
const message = value instanceof Error ? value.message : '';
|
|
72
75
|
if (/claimed|reviewer who/i.test(message))
|
|
73
|
-
return new HttpError(403, '
|
|
76
|
+
return new HttpError(403, 'You can only act on reviews claimed in this browser.');
|
|
74
77
|
if (/waiting for a human|already completed|alarm delivery|lock review requires/i.test(message))
|
|
75
|
-
return new HttpError(409, '
|
|
78
|
+
return new HttpError(409, 'The review status has changed or the review is not ready yet. Refresh the list.');
|
|
76
79
|
if (/worker|saved.*configuration|saved.*settings/i.test(message))
|
|
77
|
-
return new HttpError(503, '
|
|
78
|
-
return new HttpError(400, '
|
|
80
|
+
return new HttpError(503, 'Unable to start the worker for the next review. Check the saved execution settings and resume the Run.');
|
|
81
|
+
return new HttpError(400, 'Unable to read the requested Artifact range. Check the file path and read range.');
|
|
79
82
|
}
|
|
80
83
|
function protect(request, port) {
|
|
81
84
|
const host = request.headers.host;
|
|
82
85
|
const hosts = [`127.0.0.1:${port}`, `localhost:${port}`];
|
|
83
86
|
if (!host || !hosts.includes(host))
|
|
84
|
-
throw new HttpError(403, '
|
|
87
|
+
throw new HttpError(403, 'Connect using the local address of this monitor.');
|
|
85
88
|
const origin = request.headers.origin;
|
|
86
89
|
if (origin !== undefined && origin !== `http://${host}`)
|
|
87
|
-
throw new HttpError(403, '
|
|
90
|
+
throw new HttpError(403, 'Only requests from the same monitor page are allowed.');
|
|
88
91
|
const site = request.headers['sec-fetch-site'];
|
|
89
92
|
if (site !== undefined && site !== 'same-origin' && site !== 'none')
|
|
90
|
-
throw new HttpError(403, '
|
|
93
|
+
throw new HttpError(403, 'External pages cannot access this monitor.');
|
|
91
94
|
if (request.method !== 'GET' && request.method !== 'POST')
|
|
92
|
-
throw new HttpError(405, '
|
|
95
|
+
throw new HttpError(405, 'Unsupported request method.');
|
|
93
96
|
if (request.method === 'POST' && origin !== `http://${host}`)
|
|
94
|
-
throw new HttpError(403, '
|
|
97
|
+
throw new HttpError(403, 'Only requests from the same monitor page are allowed.');
|
|
95
98
|
if (request.method === 'GET' && (request.headers['transfer-encoding'] !== undefined || (request.headers['content-length'] !== undefined && request.headers['content-length'] !== '0')))
|
|
96
|
-
throw new HttpError(400, '
|
|
99
|
+
throw new HttpError(400, 'GET requests must not contain a body.');
|
|
97
100
|
return host;
|
|
98
101
|
}
|
|
99
102
|
function headers(response) {
|
|
@@ -126,36 +129,36 @@ function session(secret, token) {
|
|
|
126
129
|
function authenticate(request, secret) {
|
|
127
130
|
const token = tokenFrom(request), supplied = request.headers['x-ccdd-csrf'];
|
|
128
131
|
if (!token || typeof supplied !== 'string' || !bearerPattern.test(supplied) || !timingSafeEqual(Buffer.from(supplied), Buffer.from(session(secret, token).csrfToken)))
|
|
129
|
-
throw new HttpError(403, '
|
|
132
|
+
throw new HttpError(403, 'Unable to verify the reviewer session. Refresh the page and try again.');
|
|
130
133
|
return reviewer(token);
|
|
131
134
|
}
|
|
132
135
|
const object = (value) => value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
133
136
|
function bodyShape(value, keys) {
|
|
134
137
|
if (!object(value) || Object.keys(value).some(key => !keys.includes(key)))
|
|
135
|
-
throw new HttpError(400, '
|
|
138
|
+
throw new HttpError(400, 'Invalid request body fields.');
|
|
136
139
|
}
|
|
137
140
|
async function body(request) {
|
|
138
141
|
if (!/^application\/json(?:;\s*charset=utf-8)?$/i.test(request.headers['content-type'] ?? ''))
|
|
139
|
-
throw new HttpError(415, '
|
|
142
|
+
throw new HttpError(415, 'Send the request as JSON.');
|
|
140
143
|
if (Number(request.headers['content-length'] ?? 0) > 32_768)
|
|
141
|
-
throw new HttpError(413, '
|
|
144
|
+
throw new HttpError(413, 'The request body must be at most 32KiB.');
|
|
142
145
|
return await new Promise((ok, no) => {
|
|
143
146
|
const chunks = [];
|
|
144
147
|
let size = 0;
|
|
145
148
|
const cleanup = () => { clearTimeout(timer); request.off('data', data); request.off('end', end); request.off('aborted', abort); request.off('error', no); };
|
|
146
149
|
const fail = (error) => { cleanup(); request.resume(); no(error); };
|
|
147
|
-
const abort = () => fail(new HttpError(400, '
|
|
150
|
+
const abort = () => fail(new HttpError(400, 'The request transfer was aborted.'));
|
|
148
151
|
const data = (chunk) => { size += chunk.length; if (size > 32_768)
|
|
149
|
-
fail(new HttpError(413, '
|
|
152
|
+
fail(new HttpError(413, 'The request body must be at most 32KiB.'));
|
|
150
153
|
else
|
|
151
154
|
chunks.push(chunk); };
|
|
152
155
|
const end = () => { cleanup(); try {
|
|
153
156
|
ok(JSON.parse(Buffer.concat(chunks).toString('utf8')));
|
|
154
157
|
}
|
|
155
158
|
catch {
|
|
156
|
-
no(new HttpError(400, 'JSON
|
|
159
|
+
no(new HttpError(400, 'Check the JSON request body.'));
|
|
157
160
|
} };
|
|
158
|
-
const timer = setTimeout(() => fail(new HttpError(408, '
|
|
161
|
+
const timer = setTimeout(() => fail(new HttpError(408, 'The request body transfer timed out.')), 5_000);
|
|
159
162
|
request.on('data', data);
|
|
160
163
|
request.once('end', end);
|
|
161
164
|
request.once('aborted', abort);
|
|
@@ -180,16 +183,18 @@ async function staticAssets() {
|
|
|
180
183
|
};
|
|
181
184
|
await visit(root, '/');
|
|
182
185
|
if (!assets.has('/'))
|
|
183
|
-
throw new Error('
|
|
186
|
+
throw new Error('Monitor UI files are missing. Rebuild the package.');
|
|
184
187
|
return assets;
|
|
185
188
|
}
|
|
186
189
|
async function decorateDetail(detail, record, reviewerId) {
|
|
187
190
|
const waiting = detail.request.kind === 'human' && detail.request.status === 'WAITING_HUMAN';
|
|
188
191
|
const claimedByMe = Boolean(reviewerId && detail.request.claimedBy === reviewerId);
|
|
192
|
+
const reservation = waiting ? activeTryClaim(record.request) : undefined;
|
|
189
193
|
detail.human = {
|
|
190
|
-
canClaim: waiting && !detail.request.claimedBy && detail.request.workerState !== 'missing',
|
|
194
|
+
canClaim: waiting && !detail.request.claimedBy && !reservation && detail.request.workerState !== 'missing',
|
|
191
195
|
canComplete: waiting && claimedByMe && Boolean(record.request.notifiedAt) && detail.request.workerState !== 'missing',
|
|
192
196
|
claimedByMe,
|
|
197
|
+
...(reservation ? { tryClaim: { reviewerId: reservation.reviewerId, expiresAt: reservation.expiresAt, preparingByMe: reservation.reviewerId === reviewerId } } : {}),
|
|
193
198
|
};
|
|
194
199
|
detail.tools = [];
|
|
195
200
|
detail.artifactPreview = record.request.configManifest ? 'tools' : 'legacy';
|
|
@@ -207,7 +212,7 @@ async function decorateDetail(detail, record, reviewerId) {
|
|
|
207
212
|
}
|
|
208
213
|
}
|
|
209
214
|
catch {
|
|
210
|
-
detail.toolIssue = '
|
|
215
|
+
detail.toolIssue = 'Unable to prepare tools for this review. Check the stored input and tool definitions.';
|
|
211
216
|
}
|
|
212
217
|
}
|
|
213
218
|
return detail;
|
|
@@ -216,7 +221,7 @@ async function decorateDetail(detail, record, reviewerId) {
|
|
|
216
221
|
export async function startMonitor(options = {}) {
|
|
217
222
|
const requestedPort = options.port ?? 4318;
|
|
218
223
|
if (!Number.isInteger(requestedPort) || requestedPort < 0 || requestedPort > 65535)
|
|
219
|
-
throw new Error('
|
|
224
|
+
throw new Error('The monitor port must be an integer between 0 and 65535.');
|
|
220
225
|
const store = createMonitorStore(options);
|
|
221
226
|
const assets = await staticAssets();
|
|
222
227
|
const sessionSecret = randomBytes(32);
|
|
@@ -229,10 +234,10 @@ export async function startMonitor(options = {}) {
|
|
|
229
234
|
const job = (async () => {
|
|
230
235
|
const host = protect(request, port);
|
|
231
236
|
if (!request.url?.startsWith('/') || request.url.startsWith('//'))
|
|
232
|
-
throw new HttpError(400, '
|
|
237
|
+
throw new HttpError(400, 'Invalid request URL.');
|
|
233
238
|
const url = new URL(request.url, `http://${host}`);
|
|
234
239
|
if (closing)
|
|
235
|
-
throw new HttpError(503, '
|
|
240
|
+
throw new HttpError(503, 'The monitor is shutting down.');
|
|
236
241
|
const asset = assets.get(url.pathname);
|
|
237
242
|
if (asset && request.method === 'GET') {
|
|
238
243
|
parameters(url, []);
|
|
@@ -254,17 +259,17 @@ export async function startMonitor(options = {}) {
|
|
|
254
259
|
authenticate(request, sessionSecret);
|
|
255
260
|
bodyShape(await body(request), []);
|
|
256
261
|
if (active.size >= MAX_ARTIFACT_READS)
|
|
257
|
-
throw new HttpError(429, '
|
|
262
|
+
throw new HttpError(429, 'Other input is being inspected. Please try again shortly.');
|
|
258
263
|
const context = await store.projectContext(id(validation[1]));
|
|
259
264
|
if (!context)
|
|
260
|
-
throw new HttpError(404, '
|
|
265
|
+
throw new HttpError(404, 'Project not found.');
|
|
261
266
|
const controller = new AbortController();
|
|
262
267
|
const disconnect = () => { if (!response.writableEnded)
|
|
263
268
|
controller.abort(new Error('Monitor client disconnected')); };
|
|
264
269
|
request.once('aborted', disconnect);
|
|
265
270
|
response.once('close', disconnect);
|
|
266
271
|
active.add(controller);
|
|
267
|
-
const timer = setTimeout(() => controller.abort(new HttpError(504, '
|
|
272
|
+
const timer = setTimeout(() => controller.abort(new HttpError(504, 'Current input inspection timed out. Try again using the CLI.')), 30_000);
|
|
268
273
|
try {
|
|
269
274
|
const { plan } = await inspectProject({ ...context, recursive: true, signal: controller.signal });
|
|
270
275
|
json(response, { plan, observedAt: new Date().toISOString() });
|
|
@@ -272,7 +277,7 @@ export async function startMonitor(options = {}) {
|
|
|
272
277
|
catch (error) {
|
|
273
278
|
if (controller.signal.aborted)
|
|
274
279
|
throw controller.signal.reason;
|
|
275
|
-
throw new HttpError(409, '
|
|
280
|
+
throw new HttpError(409, 'Unable to inspect current input. Run ccdd-project config check to check the configuration and input.');
|
|
276
281
|
}
|
|
277
282
|
finally {
|
|
278
283
|
clearTimeout(timer);
|
|
@@ -284,44 +289,57 @@ export async function startMonitor(options = {}) {
|
|
|
284
289
|
}
|
|
285
290
|
const action = /^\/api\/requests\/([^/]+)\/([^/]+)\/(claim|complete|tools\/([^/]+))$/.exec(url.pathname);
|
|
286
291
|
if (!action)
|
|
287
|
-
throw new HttpError(405, '
|
|
292
|
+
throw new HttpError(405, 'This URL only accepts GET requests.');
|
|
288
293
|
parameters(url, []);
|
|
289
294
|
const reviewerId = authenticate(request, sessionSecret);
|
|
290
295
|
const input = await body(request);
|
|
291
296
|
const projectId = id(action[1]), requestId = id(action[2]);
|
|
292
297
|
const key = `${projectId}/${requestId}`;
|
|
293
298
|
if (mutations.has(key))
|
|
294
|
-
throw new HttpError(409, '
|
|
299
|
+
throw new HttpError(409, 'Another action is in progress for this review. Please try again shortly.');
|
|
295
300
|
mutations.add(key);
|
|
296
301
|
try {
|
|
297
302
|
const record = await store.request(projectId, requestId);
|
|
298
303
|
if (!record)
|
|
299
|
-
throw new HttpError(404, '
|
|
304
|
+
throw new HttpError(404, 'Review request not found.');
|
|
300
305
|
if (record.request.id !== requestId)
|
|
301
|
-
throw new HttpError(409, '
|
|
306
|
+
throw new HttpError(409, 'The stored review identifier does not match.');
|
|
302
307
|
if (action[3] === 'claim') {
|
|
303
308
|
bodyShape(input, []);
|
|
304
|
-
|
|
309
|
+
const controller = new AbortController();
|
|
310
|
+
const disconnect = () => { if (!response.writableEnded)
|
|
311
|
+
controller.abort(new Error('Monitor client disconnected.')); };
|
|
312
|
+
response.once('close', disconnect);
|
|
313
|
+
active.add(controller);
|
|
314
|
+
const timer = setTimeout(() => controller.abort(new HttpError(504, 'Review preparation timed out.')), 900_000);
|
|
315
|
+
try {
|
|
316
|
+
await claimReview(record, reviewerId, controller.signal);
|
|
317
|
+
}
|
|
318
|
+
finally {
|
|
319
|
+
clearTimeout(timer);
|
|
320
|
+
response.off('close', disconnect);
|
|
321
|
+
active.delete(controller);
|
|
322
|
+
}
|
|
305
323
|
}
|
|
306
324
|
else if (action[3] === 'complete') {
|
|
307
325
|
bodyShape(input, ['verdict', 'summary', 'evidence']);
|
|
308
326
|
if ((input.verdict !== 'GREEN' && input.verdict !== 'RED') || typeof input.summary !== 'string' || !input.summary.trim() || input.summary.length > 12_000 || !Array.isArray(input.evidence) || input.evidence.length < 1 || input.evidence.length > 100 || !input.evidence.every(item => typeof item === 'string' && item.trim().length > 0 && item.length <= 4_000))
|
|
309
|
-
throw new HttpError(400, '
|
|
327
|
+
throw new HttpError(400, 'Check the verdict, summary, and evidence list.');
|
|
310
328
|
await completeReview(record, reviewerId, { verdict: input.verdict, summary: input.summary, evidence: input.evidence });
|
|
311
329
|
}
|
|
312
330
|
else {
|
|
313
331
|
bodyShape(input, ['arguments']);
|
|
314
332
|
if (!object(input.arguments))
|
|
315
|
-
throw new HttpError(400, '
|
|
333
|
+
throw new HttpError(400, 'Tool input must be a JSON object.');
|
|
316
334
|
if (active.size >= MAX_ARTIFACT_READS)
|
|
317
|
-
throw new HttpError(429, '
|
|
335
|
+
throw new HttpError(429, 'Other tools are running. Please try again shortly.');
|
|
318
336
|
const controller = new AbortController();
|
|
319
337
|
const disconnect = () => { if (!response.writableEnded)
|
|
320
338
|
controller.abort(new Error('Monitor client disconnected')); };
|
|
321
339
|
request.once('aborted', disconnect);
|
|
322
340
|
response.once('close', disconnect);
|
|
323
341
|
active.add(controller);
|
|
324
|
-
const timer = setTimeout(() => controller.abort(new HttpError(504, '
|
|
342
|
+
const timer = setTimeout(() => controller.abort(new HttpError(504, 'The tool timed out.')), 120_000);
|
|
325
343
|
try {
|
|
326
344
|
json(response, { result: await executeReviewTool(record, reviewerId, id(action[4], 129), input.arguments, controller.signal) });
|
|
327
345
|
}
|
|
@@ -335,8 +353,8 @@ export async function startMonitor(options = {}) {
|
|
|
335
353
|
}
|
|
336
354
|
const updated = await store.detail(projectId, requestId);
|
|
337
355
|
if (!updated)
|
|
338
|
-
throw new HttpError(404, '
|
|
339
|
-
json(response, await decorateDetail(updated, record, reviewerId));
|
|
356
|
+
throw new HttpError(404, 'Review request not found.');
|
|
357
|
+
json(response, await decorateDetail(updated, await store.request(projectId, requestId) ?? record, reviewerId));
|
|
340
358
|
}
|
|
341
359
|
finally {
|
|
342
360
|
mutations.delete(key);
|
|
@@ -354,7 +372,7 @@ export async function startMonitor(options = {}) {
|
|
|
354
372
|
parameters(url, []);
|
|
355
373
|
const graph = await store.graph(id(graphRoute[1]), id(graphRoute[2]));
|
|
356
374
|
if (!graph)
|
|
357
|
-
throw new HttpError(404, '
|
|
375
|
+
throw new HttpError(404, 'Selected Run not found.');
|
|
358
376
|
json(response, graph);
|
|
359
377
|
return;
|
|
360
378
|
}
|
|
@@ -362,18 +380,18 @@ export async function startMonitor(options = {}) {
|
|
|
362
380
|
parameters(url, ['project', 'run', 'filter', 'lane', 'limit', 'offset']);
|
|
363
381
|
const filter = url.searchParams.get('filter') ?? 'all';
|
|
364
382
|
if (!['all', 'active', 'attention'].includes(filter))
|
|
365
|
-
throw new HttpError(400, '
|
|
383
|
+
throw new HttpError(400, 'Unknown request filter.');
|
|
366
384
|
const projectValue = url.searchParams.get('project');
|
|
367
385
|
const project = projectValue === null ? undefined : id(projectValue);
|
|
368
386
|
const runValue = url.searchParams.get('run');
|
|
369
387
|
const run = runValue === null ? undefined : id(runValue);
|
|
370
388
|
if (run !== undefined && project === undefined)
|
|
371
|
-
throw new HttpError(400, '
|
|
389
|
+
throw new HttpError(400, 'Select a project before selecting a Run.');
|
|
372
390
|
const limit = number(url.searchParams.get('limit'), 50, 1, 100);
|
|
373
391
|
const offset = number(url.searchParams.get('offset'), 0, 0, Number.MAX_SAFE_INTEGER);
|
|
374
392
|
const lane = url.searchParams.get('lane') ?? undefined;
|
|
375
393
|
if (lane !== undefined && !['requested', 'running', 'success', 'failure'].includes(lane))
|
|
376
|
-
throw new HttpError(400, '
|
|
394
|
+
throw new HttpError(400, 'Unknown Kanban column.');
|
|
377
395
|
json(response, await store.overview({ project, run, filter: filter, lane: lane, limit, offset }));
|
|
378
396
|
return;
|
|
379
397
|
}
|
|
@@ -382,7 +400,7 @@ export async function startMonitor(options = {}) {
|
|
|
382
400
|
parameters(url, []);
|
|
383
401
|
const result = await store.detail(id(detail[1]), id(detail[2]));
|
|
384
402
|
if (!result)
|
|
385
|
-
throw new HttpError(404, '
|
|
403
|
+
throw new HttpError(404, 'Review request not found.');
|
|
386
404
|
const record = await store.request(id(detail[1]), id(detail[2]));
|
|
387
405
|
const token = tokenFrom(request);
|
|
388
406
|
json(response, record ? await decorateDetail(result, record, token ? reviewer(token) : undefined) : result);
|
|
@@ -390,29 +408,29 @@ export async function startMonitor(options = {}) {
|
|
|
390
408
|
}
|
|
391
409
|
const artifact = /^\/api\/requests\/([^/]+)\/([^/]+)\/artifacts\/([^/]+)$/.exec(url.pathname);
|
|
392
410
|
if (!artifact)
|
|
393
|
-
throw new HttpError(404, '
|
|
411
|
+
throw new HttpError(404, 'Request URL not found.');
|
|
394
412
|
parameters(url, ['operation', 'path', 'startLine', 'lineCount', 'offset', 'limit']);
|
|
395
413
|
if (active.size >= MAX_ARTIFACT_READS) {
|
|
396
414
|
response.setHeader('Retry-After', '1');
|
|
397
|
-
throw new HttpError(429, '
|
|
415
|
+
throw new HttpError(429, 'Other Artifacts are being inspected. Please try again shortly.');
|
|
398
416
|
}
|
|
399
417
|
const controller = new AbortController();
|
|
400
418
|
const disconnect = () => { if (!response.writableEnded)
|
|
401
419
|
controller.abort(new Error('Monitor client disconnected')); };
|
|
402
420
|
request.once('aborted', disconnect);
|
|
403
421
|
response.once('close', disconnect);
|
|
404
|
-
const timer = setTimeout(() => controller.abort(new HttpError(504, 'Artifact
|
|
422
|
+
const timer = setTimeout(() => controller.abort(new HttpError(504, 'Artifact inspection timed out. Try again with a smaller input.')), ARTIFACT_BUDGET_MS);
|
|
405
423
|
active.add(controller);
|
|
406
424
|
try {
|
|
407
425
|
const projectId = id(artifact[1]), requestId = id(artifact[2]), artifactId = id(artifact[3]);
|
|
408
426
|
const record = await store.request(projectId, requestId);
|
|
409
427
|
controller.signal.throwIfAborted();
|
|
410
428
|
if (!record)
|
|
411
|
-
throw new HttpError(404, '
|
|
429
|
+
throw new HttpError(404, 'Review request not found.');
|
|
412
430
|
if (record.request.id !== requestId)
|
|
413
|
-
throw new HttpError(409, '
|
|
431
|
+
throw new HttpError(409, 'The stored review request identifier does not match.');
|
|
414
432
|
if (record.request.configManifest)
|
|
415
|
-
throw new HttpError(409, '
|
|
433
|
+
throw new HttpError(409, 'Inspect this Artifact with its registered tools. Human reviewers can use the programs provided in the Review tab.');
|
|
416
434
|
await authorizeWorkspace(record);
|
|
417
435
|
controller.signal.throwIfAborted();
|
|
418
436
|
const handle = await reopenWorkspace(record.request.workspace, { signal: controller.signal });
|
|
@@ -420,19 +438,19 @@ export async function startMonitor(options = {}) {
|
|
|
420
438
|
await handle.assertUnchanged();
|
|
421
439
|
const expected = await readStoredArtifactScope({ repoPath: handle.descriptor.path, criticId: record.request.criticId });
|
|
422
440
|
if (!expected || !isDeepStrictEqual(expected.artifacts, record.request.artifacts) || !isDeepStrictEqual(expected.artifactTypes, record.request.artifactTypes))
|
|
423
|
-
throw new HttpError(409, '
|
|
441
|
+
throw new HttpError(409, 'The stored Artifact scope does not match the review input definitions.');
|
|
424
442
|
const viewer = await createArtifactViewer({ worktreePath: handle.descriptor.path, artifacts: record.request.artifacts, artifactTypes: record.request.artifactTypes, signal: handle.signal });
|
|
425
443
|
const definition = viewer.listArtifacts().find(item => item.id === artifactId);
|
|
426
444
|
if (!definition)
|
|
427
|
-
throw new HttpError(404, '
|
|
445
|
+
throw new HttpError(404, 'This Artifact is not included in the review request.');
|
|
428
446
|
const operation = url.searchParams.get('operation') ?? (definition.directory ? 'list' : 'read');
|
|
429
447
|
if (operation !== 'read' && operation !== 'list')
|
|
430
|
-
throw new HttpError(400, '
|
|
448
|
+
throw new HttpError(400, 'Unsupported Artifact inspection method.');
|
|
431
449
|
const registry = createArtifactTools(viewer, { audience: 'viewer' });
|
|
432
450
|
const toolName = `${operation}_${artifactId}`;
|
|
433
451
|
const tool = registry.tools.find(item => item.name === toolName);
|
|
434
452
|
if (!tool)
|
|
435
|
-
throw new HttpError(400, '
|
|
453
|
+
throw new HttpError(400, 'This Artifact does not have the requested inspection tool.');
|
|
436
454
|
const args = {};
|
|
437
455
|
if (url.searchParams.has('path'))
|
|
438
456
|
args.path = url.searchParams.get('path');
|
|
@@ -472,7 +490,7 @@ export async function startMonitor(options = {}) {
|
|
|
472
490
|
await new Promise((ok, no) => { server.once('error', no); server.listen(requestedPort, '127.0.0.1', () => { server.off('error', no); ok(); }); });
|
|
473
491
|
const address = server.address();
|
|
474
492
|
if (!address || typeof address === 'string')
|
|
475
|
-
throw new Error('
|
|
493
|
+
throw new Error('Unable to determine the local address of the monitor.');
|
|
476
494
|
port = address.port;
|
|
477
495
|
return {
|
|
478
496
|
url: `http://127.0.0.1:${port}`,
|
|
@@ -480,7 +498,7 @@ export async function startMonitor(options = {}) {
|
|
|
480
498
|
if (!closePromise) {
|
|
481
499
|
closing = true;
|
|
482
500
|
for (const controller of active)
|
|
483
|
-
controller.abort(new HttpError(503, '
|
|
501
|
+
controller.abort(new HttpError(503, 'The monitor is shutting down.'));
|
|
484
502
|
closePromise = (async () => {
|
|
485
503
|
await new Promise((ok, no) => { server.close(error => error ? no(error) : ok()); server.closeIdleConnections(); });
|
|
486
504
|
await Promise.allSettled([...jobs]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/monitor/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/monitor/server.ts"],"names":[],"mappings":"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"}
|