humanish 0.89.1 → 0.91.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 +20 -1
- package/dist/automatic-analysis-completion.d.ts +25 -0
- package/dist/automatic-analysis-completion.js +56 -0
- package/dist/automatic-analysis-completion.js.map +1 -0
- package/dist/automatic-analysis-config.d.ts +25 -0
- package/dist/automatic-analysis-config.js +44 -0
- package/dist/automatic-analysis-config.js.map +1 -0
- package/dist/automatic-study-analysis.d.ts +15 -0
- package/dist/automatic-study-analysis.js +187 -0
- package/dist/automatic-study-analysis.js.map +1 -0
- package/dist/concurrent-shared-world-lab.d.ts +4 -2
- package/dist/concurrent-shared-world-lab.js +10 -3
- package/dist/concurrent-shared-world-lab.js.map +1 -1
- package/dist/cua-actor-lab.d.ts +4 -2
- package/dist/cua-actor-lab.js +10 -5
- package/dist/cua-actor-lab.js.map +1 -1
- package/dist/e2b-terminal-lab.d.ts +4 -2
- package/dist/e2b-terminal-lab.js +15 -3
- package/dist/e2b-terminal-lab.js.map +1 -1
- package/dist/export-bundle.js +2 -0
- package/dist/export-bundle.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lab-config.d.ts +5 -0
- package/dist/lab-config.js +21 -2
- package/dist/lab-config.js.map +1 -1
- package/dist/lab-engine.d.ts +2 -0
- package/dist/lab-engine.js +12 -3
- package/dist/lab-engine.js.map +1 -1
- package/dist/lab-preflight.d.ts +3 -0
- package/dist/lab-preflight.js +3 -0
- package/dist/lab-preflight.js.map +1 -1
- package/dist/lab-summary.d.ts +4 -0
- package/dist/lab-summary.js +6 -1
- package/dist/lab-summary.js.map +1 -1
- package/dist/observer-app.html +8 -8
- package/dist/observer.d.ts +3 -0
- package/dist/observer.js +23 -6
- package/dist/observer.js.map +1 -1
- package/dist/oss-lab.d.ts +1 -1
- package/dist/oss-lab.js.map +1 -1
- package/dist/oss-meta-lab.d.ts +1 -1
- package/dist/oss-meta-lab.js.map +1 -1
- package/dist/program.d.ts +5 -0
- package/dist/program.js +49 -8
- package/dist/program.js.map +1 -1
- package/dist/run-detail.d.ts +2 -0
- package/dist/run-detail.js +3 -0
- package/dist/run-detail.js.map +1 -1
- package/dist/run.d.ts +1 -1
- package/dist/run.js.map +1 -1
- package/dist/scripted-browser-lab.d.ts +4 -2
- package/dist/scripted-browser-lab.js +14 -9
- package/dist/scripted-browser-lab.js.map +1 -1
- package/dist/shared-world-lab.d.ts +4 -2
- package/dist/shared-world-lab.js +10 -3
- package/dist/shared-world-lab.js.map +1 -1
- package/dist/study-analysis-engine.d.ts +7 -2
- package/dist/study-analysis-engine.js +26 -6
- package/dist/study-analysis-engine.js.map +1 -1
- package/dist/study-analysis-evidence.js +273 -59
- package/dist/study-analysis-evidence.js.map +1 -1
- package/dist/study-analysis-job.d.ts +88 -0
- package/dist/study-analysis-job.js +197 -0
- package/dist/study-analysis-job.js.map +1 -0
- package/dist/study-analysis-service.d.ts +10 -1
- package/dist/study-analysis-service.js +31 -8
- package/dist/study-analysis-service.js.map +1 -1
- package/dist/study-analysis-sharing.js +13 -5
- package/dist/study-analysis-sharing.js.map +1 -1
- package/dist/study-analysis-store.d.ts +4 -0
- package/dist/study-analysis-store.js +40 -1
- package/dist/study-analysis-store.js.map +1 -1
- package/dist/study-analysis-validation.d.ts +135 -1
- package/dist/study-analysis-validation.js +62 -26
- package/dist/study-analysis-validation.js.map +1 -1
- package/dist/study-analysis.d.ts +14 -0
- package/dist/study-analysis.js.map +1 -1
- package/dist/terminal-participant-activity.d.ts +6 -0
- package/dist/terminal-participant-activity.js +34 -0
- package/dist/terminal-participant-activity.js.map +1 -0
- package/dist/tui-actions.d.ts +1 -1
- package/dist/tui-actions.js +15 -1
- package/dist/tui-actions.js.map +1 -1
- package/dist/tui-app.js +116 -116
- package/dist/tui-contract.d.ts +3 -2
- package/dist/tui-contract.js.map +1 -1
- package/docs/architecture/examples/state-driven-local-app/README.md +5 -0
- package/docs/architecture/examples/state-driven-local-app/runner.mjs +1 -0
- package/docs/contracts/schemas.md +1 -1
- package/docs/contracts/study-analysis.md +47 -3
- package/docs/goals/current.md +4 -4
- package/docs/principles/invariants-and-defaults.md +7 -3
- package/docs/product/automatic-analysis.md +81 -0
- package/docs/ramp/README.md +11 -2
- package/docs/release/0.90.0-automatic-analysis.md +21 -0
- package/docs/release/0.91.0-analysis-quality-and-defaults.md +33 -0
- package/package.json +1 -1
|
@@ -43,8 +43,14 @@ export function isStudyEvidencePath(value) {
|
|
|
43
43
|
* authority to select another file or initiate a network request.
|
|
44
44
|
*/
|
|
45
45
|
export async function readBoundedStudyFile(root, relativePath, maxBytes) {
|
|
46
|
+
const result = await readBoundedStudyFileResult(root, relativePath, maxBytes);
|
|
47
|
+
return result.state === "read" ? result.bytes : null;
|
|
48
|
+
}
|
|
49
|
+
const unavailable = { state: "unavailable" };
|
|
50
|
+
/** Size refusals are distinguished only after the same contained regular-file checks. */
|
|
51
|
+
async function readBoundedStudyFileResult(root, relativePath, maxBytes) {
|
|
46
52
|
if (!isStudyEvidencePath(relativePath) || !Number.isSafeInteger(maxBytes) || maxBytes < 1)
|
|
47
|
-
return
|
|
53
|
+
return unavailable;
|
|
48
54
|
const validateRoot = async () => {
|
|
49
55
|
if ("physicalRunRoot" in root) {
|
|
50
56
|
await validatePreparedRunRootIdentity(root);
|
|
@@ -57,7 +63,7 @@ export async function readBoundedStudyFile(root, relativePath, maxBytes) {
|
|
|
57
63
|
const physicalRoot = await validateRoot();
|
|
58
64
|
const candidate = path.join(physicalRoot, relativePath);
|
|
59
65
|
if (!isPathInside(physicalRoot, candidate) || candidate === physicalRoot)
|
|
60
|
-
return
|
|
66
|
+
return unavailable;
|
|
61
67
|
const validateParents = async () => {
|
|
62
68
|
let current = physicalRoot;
|
|
63
69
|
for (const segment of relativePath.split("/").slice(0, -1)) {
|
|
@@ -69,17 +75,28 @@ export async function readBoundedStudyFile(root, relativePath, maxBytes) {
|
|
|
69
75
|
};
|
|
70
76
|
await validateParents();
|
|
71
77
|
const before = await lstat(candidate, { bigint: true });
|
|
72
|
-
if (!before.isFile() || before.isSymbolicLink() || before.nlink !== 1n
|
|
73
|
-
return
|
|
78
|
+
if (!before.isFile() || before.isSymbolicLink() || before.nlink !== 1n)
|
|
79
|
+
return unavailable;
|
|
74
80
|
if (await realpath(candidate) !== candidate)
|
|
75
|
-
return
|
|
81
|
+
return unavailable;
|
|
82
|
+
if (before.size > BigInt(maxBytes)) {
|
|
83
|
+
if (await validateRoot() !== physicalRoot)
|
|
84
|
+
return unavailable;
|
|
85
|
+
await validateParents();
|
|
86
|
+
const final = await lstat(candidate, { bigint: true });
|
|
87
|
+
if (!final.isFile() || final.isSymbolicLink() || final.nlink !== 1n || final.dev !== before.dev
|
|
88
|
+
|| final.ino !== before.ino || final.size !== before.size || final.mtimeNs !== before.mtimeNs
|
|
89
|
+
|| final.ctimeNs !== before.ctimeNs)
|
|
90
|
+
return unavailable;
|
|
91
|
+
return { state: "limit", size: before.size };
|
|
92
|
+
}
|
|
76
93
|
// O_NONBLOCK avoids hanging if a regular leaf is raced into a special file.
|
|
77
94
|
const handle = await open(candidate, constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK);
|
|
78
95
|
try {
|
|
79
96
|
const opened = await handle.stat({ bigint: true });
|
|
80
97
|
if (!opened.isFile() || opened.nlink !== 1n || opened.dev !== before.dev || opened.ino !== before.ino
|
|
81
98
|
|| opened.size !== before.size || opened.mtimeNs !== before.mtimeNs)
|
|
82
|
-
return
|
|
99
|
+
return unavailable;
|
|
83
100
|
const chunks = [];
|
|
84
101
|
let total = 0;
|
|
85
102
|
while (total <= maxBytes) {
|
|
@@ -89,28 +106,28 @@ export async function readBoundedStudyFile(root, relativePath, maxBytes) {
|
|
|
89
106
|
break;
|
|
90
107
|
total += bytesRead;
|
|
91
108
|
if (total > maxBytes)
|
|
92
|
-
return
|
|
109
|
+
return unavailable;
|
|
93
110
|
chunks.push(chunk.subarray(0, bytesRead));
|
|
94
111
|
}
|
|
95
112
|
const after = await handle.stat({ bigint: true });
|
|
96
113
|
if (after.size !== before.size || after.mtimeNs !== before.mtimeNs || after.ctimeNs !== before.ctimeNs
|
|
97
114
|
|| after.nlink !== 1n || total !== Number(before.size))
|
|
98
|
-
return
|
|
115
|
+
return unavailable;
|
|
99
116
|
if (await validateRoot() !== physicalRoot)
|
|
100
|
-
return
|
|
117
|
+
return unavailable;
|
|
101
118
|
await validateParents();
|
|
102
119
|
const final = await lstat(candidate, { bigint: true });
|
|
103
120
|
if (!final.isFile() || final.isSymbolicLink() || final.dev !== before.dev || final.ino !== before.ino
|
|
104
121
|
|| final.nlink !== 1n || final.size !== before.size || final.mtimeNs !== before.mtimeNs)
|
|
105
|
-
return
|
|
106
|
-
return Buffer.concat(chunks, total);
|
|
122
|
+
return unavailable;
|
|
123
|
+
return { state: "read", bytes: Buffer.concat(chunks, total) };
|
|
107
124
|
}
|
|
108
125
|
finally {
|
|
109
126
|
await handle.close();
|
|
110
127
|
}
|
|
111
128
|
}
|
|
112
129
|
catch {
|
|
113
|
-
return
|
|
130
|
+
return unavailable;
|
|
114
131
|
}
|
|
115
132
|
}
|
|
116
133
|
export const STUDY_EVIDENCE_LIMITS = Object.freeze({
|
|
@@ -125,6 +142,18 @@ const stamp = (value) => typeof value === "string" && Number.isFinite(Date.parse
|
|
|
125
142
|
const itemText = (item) => ["message", "reasoning"].includes(item.kind) && item.text !== undefined
|
|
126
143
|
? item.text : [item.title, item.text].filter((entry) => entry !== undefined && entry !== "").join("\n");
|
|
127
144
|
const itemsFor = (stream) => stream.actor?.items ?? [];
|
|
145
|
+
const isCaptureItem = (item, captureVersion) => item.kind === "screenshot"
|
|
146
|
+
|| (captureVersion === 2 && item.kind === "ui_action");
|
|
147
|
+
function hasUnmappedCaptures(stream) {
|
|
148
|
+
const items = itemsFor(stream);
|
|
149
|
+
const paths = new Set(items.flatMap((item) => isCaptureItem(item, 2) && typeof item.screenshotRef?.path === "string" ? [item.screenshotRef.path] : []));
|
|
150
|
+
// Presentation URLs use Observer-relative paths. They cannot manufacture an
|
|
151
|
+
// event/frame, but a declared capture outside the trace must limit coverage.
|
|
152
|
+
const previews = [stream.ui?.screenshotUrl, stream.embed?.kind === "screenshot" ? stream.embed.url : undefined];
|
|
153
|
+
return (Array.isArray(stream.artifacts) && stream.artifacts.some((artifact) => artifact?.kind === "screenshot" && !paths.has(artifact.path)))
|
|
154
|
+
|| previews.some((ref) => typeof ref === "string" && !paths.has(ref) && !paths.has(ref.replace(/^\.\.\//, "")))
|
|
155
|
+
|| items.some((item) => typeof item.screenshotRef?.path === "string" && !paths.has(item.screenshotRef.path));
|
|
156
|
+
}
|
|
128
157
|
function parseSource(prepared, bytes) {
|
|
129
158
|
if (bytes.length > STUDY_EVIDENCE_LIMITS.sourceBytes)
|
|
130
159
|
throw new Error("ANALYSIS_SOURCE_TOO_LARGE");
|
|
@@ -207,15 +236,16 @@ function isObserverCapturePath(value) {
|
|
|
207
236
|
}
|
|
208
237
|
return false;
|
|
209
238
|
}
|
|
210
|
-
function participantAssignment(stream) {
|
|
239
|
+
function participantAssignment(stream, captureVersion) {
|
|
211
240
|
if (stream.assignment === undefined)
|
|
212
|
-
return
|
|
241
|
+
return captureVersion === 2 && stream.actor?.lane === "scripted-browser"
|
|
242
|
+
&& typeof stream.ui?.intent === "string" && stream.ui.intent.trim() ? stream.ui.intent : null;
|
|
213
243
|
return [stream.assignment.mission, stream.assignment.focus,
|
|
214
244
|
...(stream.assignment.tasks ?? []).map((task) => `Task ${JSON.stringify(task.id)}: ${task.goal}`)]
|
|
215
245
|
.filter((entry) => typeof entry === "string").join("\n");
|
|
216
246
|
}
|
|
217
|
-
function participantSource(stream) {
|
|
218
|
-
const assignment = participantAssignment(stream);
|
|
247
|
+
function participantSource(stream, captureVersion) {
|
|
248
|
+
const assignment = participantAssignment(stream, captureVersion);
|
|
219
249
|
const actor = stream.actor;
|
|
220
250
|
return {
|
|
221
251
|
streamId: stream.id,
|
|
@@ -236,16 +266,18 @@ function participantSource(stream) {
|
|
|
236
266
|
}
|
|
237
267
|
};
|
|
238
268
|
}
|
|
239
|
-
function sourceEntries(bundle, stream) {
|
|
269
|
+
function sourceEntries(bundle, stream, captureVersion) {
|
|
240
270
|
const items = itemsFor(stream);
|
|
241
|
-
|
|
271
|
+
// Absent version retains the exact legacy mapping used by saved 0.89.1 analyses.
|
|
272
|
+
// V2 follows the actor contract: a scripted action can carry its own capture.
|
|
273
|
+
const captures = items.filter((item) => isCaptureItem(item, captureVersion) && object(item.screenshotRef)
|
|
242
274
|
&& typeof item.screenshotRef.path === "string" && isObserverCapturePath(item.screenshotRef.path));
|
|
243
275
|
const frameIds = new Set(captures.map((item) => item.id));
|
|
244
276
|
const firstAt = stamp(captures[0]?.at);
|
|
245
277
|
let frame = -1;
|
|
246
278
|
const entries = [];
|
|
247
279
|
for (const item of items) {
|
|
248
|
-
const capturePath = item
|
|
280
|
+
const capturePath = isCaptureItem(item, captureVersion) && object(item.screenshotRef)
|
|
249
281
|
&& typeof item.screenshotRef.path === "string" && isStudyEvidencePath(item.screenshotRef.path)
|
|
250
282
|
? item.screenshotRef.path : null;
|
|
251
283
|
if (frameIds.has(item.id))
|
|
@@ -255,7 +287,9 @@ function sourceEntries(bundle, stream) {
|
|
|
255
287
|
entries.push({ eventId: item.id, kind: item.kind, text: itemText(item),
|
|
256
288
|
quoteEligible: ["message", "reasoning"].includes(item.kind) && typeof item.text === "string",
|
|
257
289
|
at, elapsedMs: delta !== null && delta >= 0 ? delta : null,
|
|
258
|
-
frame: captures.length > 0 ? Math.max(0, frame) : null, capturePath
|
|
290
|
+
frame: captures.length > 0 ? Math.max(0, frame) : null, capturePath,
|
|
291
|
+
captureDeclared: item.kind === "screenshot" || (captureVersion === 2 && item.kind === "ui_action" && item.screenshotRef !== undefined),
|
|
292
|
+
failed: ["failed", "blocked", "timed_out"].includes(item.status ?? "") });
|
|
259
293
|
}
|
|
260
294
|
const runEventIds = new Set();
|
|
261
295
|
for (const event of bundle.events.filter((entry) => entry.streamId === stream.id
|
|
@@ -264,10 +298,82 @@ function sourceEntries(bundle, stream) {
|
|
|
264
298
|
throw new Error("ANALYSIS_SOURCE_EVENT_DUPLICATE");
|
|
265
299
|
runEventIds.add(event.id);
|
|
266
300
|
entries.push({ eventId: event.id, kind: `run_event:${event.type}`, text: event.message,
|
|
267
|
-
quoteEligible: false, at: stamp(event.at), elapsedMs: null, frame: null, capturePath: null });
|
|
301
|
+
quoteEligible: false, at: stamp(event.at), elapsedMs: null, frame: null, capturePath: null, captureDeclared: false, failed: event.level === "error" });
|
|
268
302
|
}
|
|
269
303
|
return entries;
|
|
270
304
|
}
|
|
305
|
+
/** Max-min allocation; stable ID order breaks a remainder tie by at most one slot. */
|
|
306
|
+
function fairShares(budget, capacities) {
|
|
307
|
+
const shares = capacities.map(() => 0);
|
|
308
|
+
let active = capacities.map((capacity, index) => ({ capacity, index })).filter(({ capacity }) => capacity > 0);
|
|
309
|
+
while (budget > 0 && active.length > 0) {
|
|
310
|
+
const share = Math.max(1, Math.floor(budget / active.length));
|
|
311
|
+
for (const { capacity, index } of active) {
|
|
312
|
+
const granted = Math.min(capacity - shares[index], share, budget);
|
|
313
|
+
shares[index] += granted;
|
|
314
|
+
budget -= granted;
|
|
315
|
+
}
|
|
316
|
+
active = active.filter(({ capacity, index }) => shares[index] < capacity);
|
|
317
|
+
}
|
|
318
|
+
return shares;
|
|
319
|
+
}
|
|
320
|
+
/** End, start, then successively bisect the whole interval; no prefix sampling. */
|
|
321
|
+
function spreadOrder(entries) {
|
|
322
|
+
if (entries.length < 2)
|
|
323
|
+
return entries;
|
|
324
|
+
const result = [entries.at(-1), entries[0]];
|
|
325
|
+
const ranges = [[0, entries.length - 1]];
|
|
326
|
+
for (let cursor = 0; cursor < ranges.length; cursor++) {
|
|
327
|
+
const [left, right] = ranges[cursor];
|
|
328
|
+
if (right - left < 2)
|
|
329
|
+
continue;
|
|
330
|
+
const middle = Math.floor((left + right) / 2);
|
|
331
|
+
result.push(entries[middle]);
|
|
332
|
+
ranges.push([left, middle], [middle, right]);
|
|
333
|
+
}
|
|
334
|
+
return result;
|
|
335
|
+
}
|
|
336
|
+
function sourceOrder(entries, capturesOnly) {
|
|
337
|
+
const candidates = capturesOnly ? entries.filter((entry) => entry.capturePath !== null) : entries;
|
|
338
|
+
const ordered = new Set();
|
|
339
|
+
const admit = (entry) => {
|
|
340
|
+
if (entry && (!capturesOnly || entry.capturePath !== null))
|
|
341
|
+
ordered.add(entry);
|
|
342
|
+
};
|
|
343
|
+
// Actor endings precede appended run bookkeeping when text slots are scarce.
|
|
344
|
+
if (!capturesOnly)
|
|
345
|
+
admit(entries.findLast((entry) => !entry.kind.startsWith("run_event:")));
|
|
346
|
+
admit(candidates.at(-1));
|
|
347
|
+
admit(candidates[0]);
|
|
348
|
+
const afterCapture = [];
|
|
349
|
+
let nextCapture;
|
|
350
|
+
for (let index = entries.length - 1; index >= 0; index--) {
|
|
351
|
+
const entry = entries[index];
|
|
352
|
+
afterCapture[index] = nextCapture;
|
|
353
|
+
if (entry.capturePath !== null)
|
|
354
|
+
nextCapture = entry;
|
|
355
|
+
}
|
|
356
|
+
let beforeCapture;
|
|
357
|
+
const failureContext = [];
|
|
358
|
+
for (let index = 0; index < entries.length; index++) {
|
|
359
|
+
const entry = entries[index];
|
|
360
|
+
if (entry.failed) {
|
|
361
|
+
for (const context of [entry, afterCapture[index], beforeCapture, entries[index + 1]]) {
|
|
362
|
+
if (context)
|
|
363
|
+
failureContext.push(context);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
if (entry.capturePath !== null)
|
|
367
|
+
beforeCapture = entry;
|
|
368
|
+
}
|
|
369
|
+
// Explicit failure status/level is source metadata, not a keyword diagnosis.
|
|
370
|
+
// Spread among failures as well: many early failures cannot hide the last one.
|
|
371
|
+
for (const entry of spreadOrder(failureContext))
|
|
372
|
+
admit(entry);
|
|
373
|
+
for (const entry of spreadOrder(candidates))
|
|
374
|
+
admit(entry);
|
|
375
|
+
return [...ordered];
|
|
376
|
+
}
|
|
271
377
|
/** Select once from retained source. Models receive no filesystem or network resolver. */
|
|
272
378
|
export async function captureStudyEvidence(prepared, bundleBytes, requested = {}) {
|
|
273
379
|
const limits = { ...STUDY_EVIDENCE_LIMITS, ...requested };
|
|
@@ -282,6 +388,7 @@ export async function captureStudyEvidence(prepared, bundleBytes, requested = {}
|
|
|
282
388
|
if (!current || !current.equals(bundleBytes))
|
|
283
389
|
throw new Error("ANALYSIS_SOURCE_CHANGED");
|
|
284
390
|
const bundle = parseSource(prepared, bundleBytes);
|
|
391
|
+
const captureVersion = 2;
|
|
285
392
|
if (bundle.streams.some((stream) => stream.liveActor !== undefined
|
|
286
393
|
|| ["running", "pending", "queued", "starting", "preparing", "not_started", "suspended"].includes(stream.status))) {
|
|
287
394
|
throw new Error("ANALYSIS_RUN_UNFINISHED");
|
|
@@ -293,8 +400,10 @@ export async function captureStudyEvidence(prepared, bundleBytes, requested = {}
|
|
|
293
400
|
let textBytes = 0;
|
|
294
401
|
let imageBytes = 0;
|
|
295
402
|
const participants = selected.map((stream) => {
|
|
296
|
-
const participant = participantSource(stream);
|
|
297
|
-
const assignment = participantAssignment(stream);
|
|
403
|
+
const participant = participantSource(stream, captureVersion);
|
|
404
|
+
const assignment = participantAssignment(stream, captureVersion);
|
|
405
|
+
if (assignment === null || assignment.trim() === "")
|
|
406
|
+
omissions.add("Some participants have no recorded assignment.");
|
|
298
407
|
if (participant.label !== stream.label || participant.assignment !== assignment
|
|
299
408
|
|| participant.recordedReason !== (stream.actor?.reason ?? null))
|
|
300
409
|
omissions.add("Participant context exceeded the text limit.");
|
|
@@ -303,42 +412,140 @@ export async function captureStudyEvidence(prepared, bundleBytes, requested = {}
|
|
|
303
412
|
});
|
|
304
413
|
if (textBytes > limits.textBytes)
|
|
305
414
|
throw new Error("ANALYSIS_PARTICIPANT_CONTEXT_TOO_LARGE");
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
415
|
+
// Tie-breaking uses stable participant IDs, not the order of streams in a bundle.
|
|
416
|
+
// The emitted packet still preserves participant and source event order.
|
|
417
|
+
const lanes = selected.map((stream) => ({ stream, entries: sourceEntries(bundle, stream, captureVersion),
|
|
418
|
+
captures: new Map(), admitted: new Set(), captureCursor: 0, attempts: 0, readBytes: 0, imageBytes: 0,
|
|
419
|
+
reservationBlocked: false }))
|
|
420
|
+
.sort((a, b) => a.stream.id < b.stream.id ? -1 : a.stream.id > b.stream.id ? 1 : 0);
|
|
421
|
+
const evidenceShares = fairShares(limits.evidence, lanes.map((lane) => lane.entries.length));
|
|
422
|
+
const captureOrders = lanes.map((lane) => sourceOrder(lane.entries, true));
|
|
423
|
+
const captureShares = fairShares(limits.captures, lanes.map((_, index) => Math.min(evidenceShares[index], captureOrders[index].length)));
|
|
424
|
+
const attemptShares = captureShares.map((share) => 2 * share);
|
|
425
|
+
const readShares = fairShares(2 * limits.totalImageBytes, attemptShares.map((share) => share * limits.imageBytes));
|
|
426
|
+
const imageShares = fairShares(limits.totalImageBytes, captureShares.map((share) => share * limits.imageBytes));
|
|
427
|
+
let captureCount = 0;
|
|
428
|
+
let attemptedReads = 0;
|
|
429
|
+
let returnedImageBytes = 0;
|
|
430
|
+
let reserved = true;
|
|
431
|
+
// Missing/invalid files cannot turn selection into an exhaustive file scan.
|
|
432
|
+
// At most 2 * captures bounded reads, each at most imageBytes; successfully
|
|
433
|
+
// returned bytes (including invalid PNGs) also stop at 2 * totalImageBytes.
|
|
434
|
+
const maxAttempts = 2 * limits.captures;
|
|
435
|
+
while (attemptedReads < maxAttempts && captureCount < limits.captures
|
|
436
|
+
&& imageBytes < limits.totalImageBytes && returnedImageBytes < 2 * limits.totalImageBytes) {
|
|
437
|
+
let attempted = false;
|
|
438
|
+
for (const [index, lane] of lanes.entries()) {
|
|
439
|
+
if (lane.captures.size >= captureShares[index] || lane.attempts >= attemptShares[index]
|
|
440
|
+
|| lane.captureCursor >= captureOrders[index].length || attemptedReads >= maxAttempts
|
|
441
|
+
|| (reserved && lane.reservationBlocked))
|
|
442
|
+
continue;
|
|
443
|
+
if (imageBytes >= limits.totalImageBytes || returnedImageBytes >= 2 * limits.totalImageBytes)
|
|
444
|
+
break;
|
|
445
|
+
const readAllowance = reserved ? readShares[index] - lane.readBytes : 2 * limits.totalImageBytes - returnedImageBytes;
|
|
446
|
+
const imageAllowance = reserved ? imageShares[index] - lane.imageBytes : limits.totalImageBytes - imageBytes;
|
|
447
|
+
const allowance = Math.min(limits.imageBytes, limits.totalImageBytes - imageBytes, imageAllowance, readAllowance);
|
|
448
|
+
if (allowance <= 0) {
|
|
449
|
+
lane.reservationBlocked = true;
|
|
312
450
|
continue;
|
|
313
451
|
}
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
const
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
if (bytes === null || screenshotEvidenceError(source.capturePath, bytes) !== null) {
|
|
326
|
-
omissions.add("Some captures were missing, unsafe, oversized, or invalid PNG evidence.");
|
|
327
|
-
}
|
|
328
|
-
else if (imageBytes + bytes.length > limits.totalImageBytes) {
|
|
329
|
-
omissions.add("Some captures were omitted by the image byte limit.");
|
|
330
|
-
}
|
|
331
|
-
else {
|
|
332
|
-
imageBytes += bytes.length;
|
|
333
|
-
capture = { eventId: source.eventId, path: source.capturePath, sha256: sha256(bytes), mimeType: "image/png" };
|
|
334
|
-
images.push({ evidenceId: id, dataUrl: `data:image/png;base64,${bytes.toString("base64")}` });
|
|
335
|
-
}
|
|
336
|
-
}
|
|
452
|
+
attempted = true;
|
|
453
|
+
lane.attempts++;
|
|
454
|
+
attemptedReads++;
|
|
455
|
+
const source = captureOrders[index][lane.captureCursor];
|
|
456
|
+
const result = await readBoundedStudyFileResult(prepared, source.capturePath, allowance);
|
|
457
|
+
if (result.state === "limit" && result.size <= BigInt(limits.imageBytes)
|
|
458
|
+
&& result.size <= BigInt(limits.totalImageBytes - imageBytes) && reserved) {
|
|
459
|
+
// This participant's reservation is too small, not its evidence unsafe.
|
|
460
|
+
// Preserve the candidate for the shared pool after all reserved passes.
|
|
461
|
+
lane.reservationBlocked = true;
|
|
462
|
+
continue;
|
|
337
463
|
}
|
|
338
|
-
|
|
339
|
-
|
|
464
|
+
lane.captureCursor++;
|
|
465
|
+
if (result.state === "limit" && result.size <= BigInt(limits.imageBytes)) {
|
|
466
|
+
omissions.add(result.size > BigInt(limits.totalImageBytes - imageBytes)
|
|
467
|
+
? "Some captures were omitted by the image byte limit."
|
|
468
|
+
: "Some captures were omitted by the bounded read budget.");
|
|
469
|
+
continue;
|
|
470
|
+
}
|
|
471
|
+
const bytes = result.state === "read" ? result.bytes : null;
|
|
472
|
+
returnedImageBytes += bytes?.length ?? 0;
|
|
473
|
+
lane.readBytes += bytes?.length ?? 0;
|
|
474
|
+
if (bytes === null || screenshotEvidenceError(source.capturePath, bytes) !== null) {
|
|
475
|
+
omissions.add("Some captures were missing, unsafe, oversized, or invalid PNG evidence.");
|
|
476
|
+
continue;
|
|
477
|
+
}
|
|
478
|
+
imageBytes += bytes.length;
|
|
479
|
+
lane.imageBytes += bytes.length;
|
|
480
|
+
captureCount++;
|
|
481
|
+
lane.captures.set(source, bytes);
|
|
482
|
+
}
|
|
483
|
+
if (!attempted) {
|
|
484
|
+
// Release unused read/admission reservations after every reserved pass.
|
|
485
|
+
// Zero-share lanes can now compete for reclaimed slots, with two attempts.
|
|
486
|
+
reserved = false;
|
|
487
|
+
attemptShares.forEach((share, index) => { if (share === 0 && evidenceShares[index] > 0)
|
|
488
|
+
attemptShares[index] = 2; });
|
|
489
|
+
const extra = fairShares(limits.captures - captureCount, lanes.map((lane, index) => lane.attempts < attemptShares[index] ? Math.min(evidenceShares[index] - lane.captures.size, captureOrders[index].length - lane.captureCursor, attemptShares[index] - lane.attempts) : 0));
|
|
490
|
+
if (!extra.some((share) => share > 0) || imageBytes >= limits.totalImageBytes
|
|
491
|
+
|| returnedImageBytes >= 2 * limits.totalImageBytes || attemptedReads >= maxAttempts)
|
|
492
|
+
break;
|
|
493
|
+
extra.forEach((share, index) => { captureShares[index] = lanes[index].captures.size + share; });
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
for (const [index, lane] of lanes.entries()) {
|
|
497
|
+
if (!lane.stream.actor)
|
|
498
|
+
omissions.add("Some participants have no normalized recorded trace.");
|
|
499
|
+
if (hasUnmappedCaptures(lane.stream))
|
|
500
|
+
omissions.add("Some declared captures have no normalized trace reference.");
|
|
501
|
+
for (const source of lane.captures.keys())
|
|
502
|
+
lane.admitted.add(source);
|
|
503
|
+
for (const source of sourceOrder(lane.entries, false)) {
|
|
504
|
+
if (lane.admitted.size >= evidenceShares[index])
|
|
505
|
+
break;
|
|
506
|
+
lane.admitted.add(source);
|
|
507
|
+
}
|
|
508
|
+
if (lane.admitted.size < lane.entries.length)
|
|
509
|
+
omissions.add("Some evidence was omitted by the packet size limit.");
|
|
510
|
+
if (lane.entries.some((entry) => entry.capturePath !== null && !lane.captures.has(entry))) {
|
|
511
|
+
const pending = lane.captureCursor < captureOrders[index].length;
|
|
512
|
+
if (pending && captureCount >= limits.captures)
|
|
513
|
+
omissions.add("Some captures were omitted by the capture count limit.");
|
|
514
|
+
if (pending && imageBytes >= limits.totalImageBytes)
|
|
515
|
+
omissions.add("Some captures were omitted by the image byte limit.");
|
|
516
|
+
if (pending && returnedImageBytes >= 2 * limits.totalImageBytes)
|
|
517
|
+
omissions.add("Some captures were omitted by the bounded read budget.");
|
|
518
|
+
if (pending && captureCount < limits.captures
|
|
519
|
+
&& (attemptedReads >= maxAttempts || lane.attempts >= attemptShares[index])) {
|
|
520
|
+
omissions.add("Some captures were omitted by the bounded file-attempt limit.");
|
|
340
521
|
}
|
|
341
|
-
|
|
522
|
+
omissions.add("Captures were sampled across participants and session boundaries; omitted moments may contain other issues.");
|
|
523
|
+
}
|
|
524
|
+
if (lane.entries.some((entry) => entry.captureDeclared && entry.capturePath === null)) {
|
|
525
|
+
omissions.add("Some screenshot references were absent or nonlocal.");
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
const textShares = fairShares(limits.textBytes - textBytes, lanes.map((lane) => [...lane.admitted].reduce((total, entry) => total + Math.min(16000, Buffer.byteLength(entry.text)), 0)));
|
|
529
|
+
const textByEntry = new Map();
|
|
530
|
+
for (const [index, lane] of lanes.entries()) {
|
|
531
|
+
const entries = [...lane.admitted];
|
|
532
|
+
const shares = fairShares(textShares[index], entries.map((entry) => Math.min(16000, Buffer.byteLength(entry.text))));
|
|
533
|
+
for (const [entryIndex, entry] of entries.entries()) {
|
|
534
|
+
const text = boundedText(entry.text, shares[entryIndex]);
|
|
535
|
+
if (text !== entry.text)
|
|
536
|
+
omissions.add("Some evidence text was truncated by the packet size limit.");
|
|
537
|
+
textByEntry.set(entry, text);
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
for (const stream of selected) {
|
|
541
|
+
const lane = lanes.find((candidate) => candidate.stream === stream);
|
|
542
|
+
for (const source of lane.entries.filter((entry) => lane.admitted.has(entry))) {
|
|
543
|
+
const id = `e${String(evidence.length + 1).padStart(6, "0")}`;
|
|
544
|
+
const bytes = lane.captures.get(source);
|
|
545
|
+
const capture = bytes ? { eventId: source.eventId, path: source.capturePath, sha256: sha256(bytes), mimeType: "image/png" } : null;
|
|
546
|
+
if (bytes)
|
|
547
|
+
images.push({ evidenceId: id, dataUrl: `data:image/png;base64,${bytes.toString("base64")}` });
|
|
548
|
+
evidence.push({ id, streamId: stream.id, eventId: source.eventId, kind: source.kind, text: textByEntry.get(source),
|
|
342
549
|
quoteEligible: source.quoteEligible, at: source.at, elapsedMs: source.elapsedMs, frame: source.frame, capture });
|
|
343
550
|
}
|
|
344
551
|
}
|
|
@@ -346,7 +553,7 @@ export async function captureStudyEvidence(prepared, bundleBytes, requested = {}
|
|
|
346
553
|
const coverage = { includedStreamIds: selected.map((stream) => stream.id), omittedStreamIds,
|
|
347
554
|
evidenceCount: evidence.length, captureCount: images.length,
|
|
348
555
|
complete: omittedStreamIds.length === 0 && omissions.size === 0, omissions: [...omissions] };
|
|
349
|
-
const result = { runId: bundle.runId, sourceRunSha256: sha256(bundleBytes), inputDigest: "", participants, coverage, evidence, images };
|
|
556
|
+
const result = { captureVersion, runId: bundle.runId, sourceRunSha256: sha256(bundleBytes), inputDigest: "", participants, coverage, evidence, images };
|
|
350
557
|
result.inputDigest = digestStudyAnalysisInput(result);
|
|
351
558
|
validateStudyAnalysisInputMetadata(result);
|
|
352
559
|
const after = await readBoundedStudyFile(prepared, "run.json", limits.sourceBytes);
|
|
@@ -356,6 +563,8 @@ export async function captureStudyEvidence(prepared, bundleBytes, requested = {}
|
|
|
356
563
|
}
|
|
357
564
|
/** Validate exact source membership before any stored path may be read. */
|
|
358
565
|
export async function validateStudyAnalysisEvidence(prepared, artifact, bundleBytes) {
|
|
566
|
+
if (artifact.captureVersion !== undefined && artifact.captureVersion !== 2)
|
|
567
|
+
throw new Error("ANALYSIS_CAPTURE_VERSION_INVALID");
|
|
359
568
|
const bundle = parseSource(prepared, bundleBytes);
|
|
360
569
|
if (artifact.runId !== bundle.runId || artifact.sourceRunSha256 !== sha256(bundleBytes))
|
|
361
570
|
throw new Error("ANALYSIS_SOURCE_CHANGED");
|
|
@@ -364,15 +573,19 @@ export async function validateStudyAnalysisEvidence(prepared, artifact, bundleBy
|
|
|
364
573
|
if (bundle.streams.some((stream) => !included.has(stream.id) && !omitted.has(stream.id))
|
|
365
574
|
|| included.size + omitted.size !== bundle.streams.length)
|
|
366
575
|
throw new Error("ANALYSIS_SOURCE_COVERAGE_INVALID");
|
|
367
|
-
const sourceByStream = new Map(bundle.streams.map((stream) => [stream.id, sourceEntries(bundle, stream)]));
|
|
576
|
+
const sourceByStream = new Map(bundle.streams.map((stream) => [stream.id, sourceEntries(bundle, stream, artifact.captureVersion)]));
|
|
368
577
|
const context = new Map(artifact.participants.map((participant) => [participant.streamId, participant]));
|
|
369
578
|
if (context.size !== included.size || artifact.participants.length !== included.size)
|
|
370
579
|
throw new Error("ANALYSIS_PARTICIPANT_INPUT_INVALID");
|
|
371
580
|
for (const stream of bundle.streams.filter((candidate) => included.has(candidate.id))) {
|
|
372
581
|
const participant = context.get(stream.id);
|
|
373
|
-
if (!participant || hashStudyAnalysisValue(participant) !== hashStudyAnalysisValue(participantSource(stream))) {
|
|
582
|
+
if (!participant || hashStudyAnalysisValue(participant) !== hashStudyAnalysisValue(participantSource(stream, artifact.captureVersion))) {
|
|
374
583
|
throw new Error("ANALYSIS_PARTICIPANT_INPUT_INVALID");
|
|
375
584
|
}
|
|
585
|
+
if (artifact.captureVersion === 2 && artifact.coverage.complete && !participant.assignment?.trim())
|
|
586
|
+
throw new Error("ANALYSIS_COVERAGE_INCOMPLETE");
|
|
587
|
+
if (artifact.captureVersion === 2 && artifact.coverage.complete && hasUnmappedCaptures(stream))
|
|
588
|
+
throw new Error("ANALYSIS_COVERAGE_INCOMPLETE");
|
|
376
589
|
}
|
|
377
590
|
const sourceKeys = new Set();
|
|
378
591
|
const checkedCaptures = new Map();
|
|
@@ -388,7 +601,8 @@ export async function validateStudyAnalysisEvidence(prepared, artifact, bundleBy
|
|
|
388
601
|
|| entry.quoteEligible !== source.quoteEligible || entry.at !== source.at || entry.elapsedMs !== source.elapsedMs
|
|
389
602
|
|| entry.frame !== source.frame)
|
|
390
603
|
throw new Error("ANALYSIS_SOURCE_REFERENCE_INVALID");
|
|
391
|
-
if (artifact.coverage.complete && (entry.text !== source.text || (source.capturePath !== null
|
|
604
|
+
if (artifact.coverage.complete && (entry.text !== source.text || ((source.capturePath !== null
|
|
605
|
+
|| (artifact.captureVersion === 2 && source.captureDeclared)) && entry.capture === null))) {
|
|
392
606
|
throw new Error("ANALYSIS_COVERAGE_INCOMPLETE");
|
|
393
607
|
}
|
|
394
608
|
if (entry.capture !== null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"study-analysis-evidence.js","sourceRoot":"","sources":["../src/study-analysis-evidence.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"study-analysis-evidence.js","sourceRoot":"","sources":["../src/study-analysis-evidence.ts"],"names":[],"mappings":"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"}
|