humanish 0.90.0 → 0.91.1
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 +11 -7
- package/dist/automatic-analysis-completion.d.ts +4 -4
- package/dist/automatic-analysis-completion.js +10 -8
- package/dist/automatic-analysis-completion.js.map +1 -1
- package/dist/automatic-analysis-config.d.ts +9 -1
- package/dist/automatic-analysis-config.js +15 -2
- package/dist/automatic-analysis-config.js.map +1 -1
- package/dist/automatic-study-analysis.d.ts +5 -2
- package/dist/automatic-study-analysis.js +34 -15
- package/dist/automatic-study-analysis.js.map +1 -1
- package/dist/chrome-cdp-probe.d.ts +5 -3
- package/dist/chrome-cdp-probe.js.map +1 -1
- package/dist/concurrent-shared-world-lab.js +1 -1
- package/dist/concurrent-shared-world-lab.js.map +1 -1
- package/dist/cua-actor-lab.d.ts +10 -4
- package/dist/cua-actor-lab.js +20 -9
- package/dist/cua-actor-lab.js.map +1 -1
- package/dist/device-presets.d.ts +4 -4
- package/dist/device-presets.js +8 -10
- package/dist/device-presets.js.map +1 -1
- package/dist/e2b-terminal-lab.js +6 -1
- package/dist/e2b-terminal-lab.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/init-templates.js +11 -8
- package/dist/init-templates.js.map +1 -1
- package/dist/lab-config.d.ts +4 -3
- package/dist/lab-config.js +2 -2
- package/dist/lab-config.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.js +6 -4
- package/dist/lab-summary.js.map +1 -1
- package/dist/observer-app.html +8 -8
- package/dist/program.js +7 -1
- package/dist/program.js.map +1 -1
- package/dist/run-index.js +2 -2
- package/dist/run-index.js.map +1 -1
- package/dist/scripted-browser-lab.js +5 -5
- package/dist/scripted-browser-lab.js.map +1 -1
- package/dist/shared-world-lab.js +2 -1
- package/dist/shared-world-lab.js.map +1 -1
- package/dist/stats.d.ts +9 -2
- package/dist/stats.js +38 -15
- package/dist/stats.js.map +1 -1
- package/dist/study-analysis-engine.d.ts +1 -1
- package/dist/study-analysis-engine.js +9 -3
- package/dist/study-analysis-engine.js.map +1 -1
- package/dist/study-analysis-evidence.js +233 -47
- package/dist/study-analysis-evidence.js.map +1 -1
- package/dist/study-analysis-job.d.ts +9 -0
- package/dist/study-analysis-job.js +18 -1
- package/dist/study-analysis-job.js.map +1 -1
- package/dist/study-analysis-service.js +10 -3
- package/dist/study-analysis-service.js.map +1 -1
- package/dist/study-analysis-sharing.js +1 -1
- package/dist/study-analysis-sharing.js.map +1 -1
- package/dist/study-analysis-store.d.ts +14 -1
- package/dist/study-analysis-store.js +114 -3
- package/dist/study-analysis-store.js.map +1 -1
- package/dist/study-analysis-validation.d.ts +145 -0
- package/dist/study-analysis-validation.js +55 -22
- package/dist/study-analysis-validation.js.map +1 -1
- package/dist/study-analysis.d.ts +8 -0
- package/dist/study-costs.d.ts +27 -0
- package/dist/study-costs.js +108 -0
- package/dist/study-costs.js.map +1 -0
- 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-app.js +20 -20
- 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/run-bundle.md +4 -0
- package/docs/contracts/schemas.md +2 -1
- package/docs/contracts/study-analysis.md +63 -5
- package/docs/contracts/study-costs.md +69 -0
- package/docs/goals/current.md +4 -4
- package/docs/principles/invariants-and-defaults.md +7 -3
- package/docs/product/automatic-analysis.md +25 -7
- package/docs/ramp/README.md +11 -2
- package/docs/release/0.91.0-analysis-quality-and-defaults.md +33 -0
- package/docs/release/0.91.1-study-review-polish.md +28 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -50,7 +50,9 @@ npx humanish observe --run latest --open
|
|
|
50
50
|
|
|
51
51
|
Existing `E2B_API_KEY` and `OPENAI_API_KEY` environment variables also work.
|
|
52
52
|
`try-live` clones and studies drawDB, not your project. Its **$2 cap covers
|
|
53
|
-
estimated model spend
|
|
53
|
+
estimated participant model spend**. Post-run analysis defaults to a separate
|
|
54
|
+
**$3 admission estimate limit**; set `review.analysis: false` to disable it.
|
|
55
|
+
Hosted desktop time is additional. Participant caps are checked
|
|
54
56
|
between turns and are not provider billing ceilings. Allow a few minutes for
|
|
55
57
|
the app to build and the participant to work. See [budgets and privacy](https://humanish.dev/docs/budgets-and-privacy).
|
|
56
58
|
|
|
@@ -104,18 +106,20 @@ beside Participants in Observer, with evidence links and separate participant
|
|
|
104
106
|
feedback. See the [analysis contract](docs/contracts/study-analysis.md) for
|
|
105
107
|
coverage limits, estimated cost controls, corrections and sharing behavior.
|
|
106
108
|
|
|
107
|
-
|
|
109
|
+
Supported live studies generate findings automatically after participants finish,
|
|
110
|
+
using a separate $3 admission estimate limit with `gpt-6-astra` and high reasoning.
|
|
111
|
+
This is additional to participant execution costs, and is not a hard provider
|
|
112
|
+
billing cap. To disable the extra request:
|
|
108
113
|
|
|
109
114
|
```yaml
|
|
110
115
|
review:
|
|
111
|
-
analysis:
|
|
112
|
-
maxCostUsd: 3
|
|
116
|
+
analysis: false
|
|
113
117
|
```
|
|
114
118
|
|
|
115
|
-
This is a separate analysis budget, in addition to participant execution costs.
|
|
116
119
|
`humanish run <lab>`, `humanish lab run <lab>`, `humanish watch <lab>`, and live
|
|
117
|
-
starts in the TUI
|
|
118
|
-
|
|
120
|
+
starts in the TUI share this default. Dry runs and unsupported routes dispatch
|
|
121
|
+
nothing. Without `OPENAI_API_KEY`, default analysis is skipped and a successful
|
|
122
|
+
recording stays successful. Opening the TUI or Observer never starts a request.
|
|
119
123
|
See [automatic analysis](docs/product/automatic-analysis.md) for configuration,
|
|
120
124
|
cancellation, and failure behavior.
|
|
121
125
|
|
|
@@ -11,6 +11,8 @@ export interface AutomaticAnalysisHooks {
|
|
|
11
11
|
}
|
|
12
12
|
export interface AutomaticAnalysisResult {
|
|
13
13
|
automaticAnalysis?: AutomaticStudyAnalysisOutcome;
|
|
14
|
+
/** Distinguishes the default missing-key skip from failure of an explicit request. */
|
|
15
|
+
automaticAnalysisTrigger?: "default" | "explicit";
|
|
14
16
|
}
|
|
15
17
|
/** Internal producer receipt: call only after final source publication, never for an early refusal. */
|
|
16
18
|
export declare function markFinalizedStudyResult<T extends object>(result: T, prepared: PreparedRunArtifactPaths): T;
|
|
@@ -19,7 +21,5 @@ export declare function completeAutomaticAnalysis<T extends {
|
|
|
19
21
|
cwd: string;
|
|
20
22
|
runId: string;
|
|
21
23
|
dryRun: boolean;
|
|
22
|
-
}>(result: T, config: StudyAnalysisConfig | undefined, hooks?: AutomaticAnalysisHooks): Promise<T & AutomaticAnalysisResult>;
|
|
23
|
-
export declare function automaticAnalysisSucceeded(result:
|
|
24
|
-
automaticAnalysis?: AutomaticStudyAnalysisOutcome;
|
|
25
|
-
}): boolean;
|
|
24
|
+
}>(result: T, config: StudyAnalysisConfig | undefined, hooks?: AutomaticAnalysisHooks, trigger?: "default" | "explicit"): Promise<T & AutomaticAnalysisResult>;
|
|
25
|
+
export declare function automaticAnalysisSucceeded(result: AutomaticAnalysisResult): boolean;
|
|
@@ -8,16 +8,17 @@ export function markFinalizedStudyResult(result, prepared) {
|
|
|
8
8
|
return result;
|
|
9
9
|
}
|
|
10
10
|
/** One post-completion boundary shared by all live recording producers. */
|
|
11
|
-
export async function completeAutomaticAnalysis(result, config, hooks) {
|
|
11
|
+
export async function completeAutomaticAnalysis(result, config, hooks, trigger = "explicit") {
|
|
12
12
|
if (config === undefined)
|
|
13
13
|
return result;
|
|
14
|
+
const origin = trigger === "default" ? { automaticAnalysisTrigger: trigger } : {};
|
|
14
15
|
if (result.dryRun)
|
|
15
|
-
return { ...result, automaticAnalysis: { state: "skipped", reason: "analysis_dry_run" } };
|
|
16
|
+
return { ...result, ...origin, automaticAnalysis: { state: "skipped", reason: "analysis_dry_run" } };
|
|
16
17
|
// An early refusal can echo a caller-supplied ID belonging to an older run.
|
|
17
18
|
// Require this invocation's internal final-publication receipt before reading that ID.
|
|
18
19
|
const prepared = finalizedResults.get(result);
|
|
19
20
|
if (!result.runId || result.runId === "not-created" || prepared === undefined) {
|
|
20
|
-
return { ...result, automaticAnalysis: { state: "skipped", reason: "analysis_source_unavailable" } };
|
|
21
|
+
return { ...result, ...origin, automaticAnalysis: { state: "skipped", reason: "analysis_source_unavailable" } };
|
|
21
22
|
}
|
|
22
23
|
let cleanup = undefined;
|
|
23
24
|
try {
|
|
@@ -26,15 +27,15 @@ export async function completeAutomaticAnalysis(result, config, hooks) {
|
|
|
26
27
|
await validatePreparedRunRootIdentity(prepared);
|
|
27
28
|
}
|
|
28
29
|
catch {
|
|
29
|
-
return { ...result, automaticAnalysis: { state: "failed", reason: "analysis_source_changed" } };
|
|
30
|
+
return { ...result, ...origin, automaticAnalysis: { state: "failed", reason: "analysis_source_changed" } };
|
|
30
31
|
}
|
|
31
32
|
const sourceCwd = path.dirname(path.dirname(prepared.physicalRunsRoot));
|
|
32
|
-
const automaticAnalysis = await (hooks?.run ?? runAutomaticStudyAnalysis)(sourceCwd, result.runId, config, { ...hooks?.deps, expectedRun: prepared });
|
|
33
|
-
return { ...result, automaticAnalysis };
|
|
33
|
+
const automaticAnalysis = await (hooks?.run ?? runAutomaticStudyAnalysis)(sourceCwd, result.runId, config, { ...hooks?.deps, ...(trigger === "default" ? { defaultRequest: true } : {}), expectedRun: prepared });
|
|
34
|
+
return { ...result, ...origin, automaticAnalysis };
|
|
34
35
|
}
|
|
35
36
|
catch {
|
|
36
37
|
// Preserve the producer result. Never put a hook exception or provider response in the envelope.
|
|
37
|
-
return { ...result, automaticAnalysis: { state: "failed", reason: "analysis_automatic_failed" } };
|
|
38
|
+
return { ...result, ...origin, automaticAnalysis: { state: "failed", reason: "analysis_automatic_failed" } };
|
|
38
39
|
}
|
|
39
40
|
finally {
|
|
40
41
|
try {
|
|
@@ -48,7 +49,8 @@ export function automaticAnalysisSucceeded(result) {
|
|
|
48
49
|
if (value === undefined)
|
|
49
50
|
return true;
|
|
50
51
|
if (value.state === "skipped")
|
|
51
|
-
return value.reason === "analysis_dry_run"
|
|
52
|
+
return value.reason === "analysis_dry_run"
|
|
53
|
+
|| (result.automaticAnalysisTrigger === "default" && ["AUTOMATIC_ANALYSIS_KEY_MISSING", "AUTOMATIC_ANALYSIS_NO_PARTICIPANT_EVIDENCE"].includes(value.reason ?? ""));
|
|
52
54
|
return (value.state === "complete" || value.state === "partial") && value.result?.ok === true;
|
|
53
55
|
}
|
|
54
56
|
//# sourceMappingURL=automatic-analysis-completion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automatic-analysis-completion.js","sourceRoot":"","sources":["../src/automatic-analysis-completion.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,+BAA+B,EAAiC,MAAM,gBAAgB,CAAC;AAEhG,OAAO,EAAE,yBAAyB,EAAmC,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"automatic-analysis-completion.js","sourceRoot":"","sources":["../src/automatic-analysis-completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { StudyAnalysisConfig } from "./study-analysis.js";
|
|
2
|
-
/** A
|
|
2
|
+
/** A separately budgeted review after a live participant study. */
|
|
3
3
|
export interface LabAnalysis {
|
|
4
4
|
maxCostUsd: number;
|
|
5
5
|
model?: string;
|
|
@@ -15,3 +15,11 @@ export declare function resolveAutomaticAnalysis(raw: unknown): {
|
|
|
15
15
|
ok: false;
|
|
16
16
|
message: string;
|
|
17
17
|
};
|
|
18
|
+
export interface AutomaticAnalysisBudget {
|
|
19
|
+
model: string;
|
|
20
|
+
maxCostUsd: number;
|
|
21
|
+
trigger: "default" | "explicit";
|
|
22
|
+
}
|
|
23
|
+
/** Metadata only: resolving the future live-run budget never reads keys or dispatches. */
|
|
24
|
+
export declare function automaticAnalysisBudget(raw: unknown, backend: string): AutomaticAnalysisBudget | undefined;
|
|
25
|
+
export declare function formatAutomaticAnalysisBudget(budget: AutomaticAnalysisBudget): string;
|
|
@@ -4,11 +4,13 @@ const MODELS = new Set(SUPPORTED_STUDY_ANALYSIS_MODELS);
|
|
|
4
4
|
const FIELDS = new Set(["maxCostUsd", "model", "question", "timeoutMs", "maxOutputTokens"]);
|
|
5
5
|
/** Called for parsed manifests AND direct library configs, before participant execution. */
|
|
6
6
|
export function resolveAutomaticAnalysis(raw) {
|
|
7
|
-
if (raw ===
|
|
7
|
+
if (raw === false)
|
|
8
8
|
return { ok: true, config: undefined };
|
|
9
|
+
if (raw === undefined)
|
|
10
|
+
raw = { maxCostUsd: 3 };
|
|
9
11
|
if (raw === null || typeof raw !== "object" || Array.isArray(raw)
|
|
10
12
|
|| Object.keys(raw).some(key => !FIELDS.has(key))) {
|
|
11
|
-
return { ok: false, message: "review.analysis must be a mapping containing only maxCostUsd, model, question, timeoutMs and maxOutputTokens." };
|
|
13
|
+
return { ok: false, message: "review.analysis must be false or a mapping containing only maxCostUsd, model, question, timeoutMs and maxOutputTokens." };
|
|
12
14
|
}
|
|
13
15
|
const value = raw;
|
|
14
16
|
const { maxCostUsd } = value;
|
|
@@ -28,4 +30,15 @@ export function resolveAutomaticAnalysis(raw) {
|
|
|
28
30
|
}
|
|
29
31
|
return { ok: true, config: { model, maxCostUsd, timeoutMs, maxOutputTokens, question: question } };
|
|
30
32
|
}
|
|
33
|
+
/** Metadata only: resolving the future live-run budget never reads keys or dispatches. */
|
|
34
|
+
export function automaticAnalysisBudget(raw, backend) {
|
|
35
|
+
if (!["cua", "scripted", "terminal", "shared-world", "concurrent-shared-world"].includes(backend))
|
|
36
|
+
return undefined;
|
|
37
|
+
const resolved = resolveAutomaticAnalysis(raw);
|
|
38
|
+
return resolved.ok && resolved.config ? { model: resolved.config.model, maxCostUsd: resolved.config.maxCostUsd,
|
|
39
|
+
trigger: raw === undefined ? "default" : "explicit" } : undefined;
|
|
40
|
+
}
|
|
41
|
+
export function formatAutomaticAnalysisBudget(budget) {
|
|
42
|
+
return `After live runs: ${budget.trigger} analysis · ${budget.model} · separate $${budget.maxCostUsd} admission estimate limit (not a provider billing cap). Set review.analysis: false to disable.`;
|
|
43
|
+
}
|
|
31
44
|
//# sourceMappingURL=automatic-analysis-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automatic-analysis-config.js","sourceRoot":"","sources":["../src/automatic-analysis-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAYnD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAS,+BAA+B,CAAC,CAAC;AAChE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAE5F,4FAA4F;AAC5F,MAAM,UAAU,wBAAwB,CAAC,GAAY;IAGnD,IAAI,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"automatic-analysis-config.js","sourceRoot":"","sources":["../src/automatic-analysis-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,14 @@ import { type AnalyzeDeps } from "./study-analysis-service.js";
|
|
|
2
2
|
import { type AutomaticStudyAnalysisView, type AutomaticStudyAnalysisOutcome, type AutomaticStudyAnalysisCancellation } from "./study-analysis-job.js";
|
|
3
3
|
import type { StudyAnalysisConfig } from "./study-analysis.js";
|
|
4
4
|
export type { AutomaticStudyAnalysisView, AutomaticStudyAnalysisOutcome, AutomaticStudyAnalysisCancellation } from "./study-analysis-job.js";
|
|
5
|
-
export type AutomaticStudyAnalysisDeps = Omit<AnalyzeDeps, "analysisId" | "beforeDispatch"
|
|
5
|
+
export type AutomaticStudyAnalysisDeps = Omit<AnalyzeDeps, "analysisId" | "beforeDispatch"> & {
|
|
6
|
+
/** A missing default key records a skip before admission, preserving a successful recording. */
|
|
7
|
+
defaultRequest?: boolean;
|
|
8
|
+
};
|
|
6
9
|
/** Small read-only TUI/CLI projection. Neither this nor Observer can resume a job. */
|
|
7
10
|
export declare function readAutomaticStudyAnalysis(cwd: string, runId: string): Promise<AutomaticStudyAnalysisView | undefined>;
|
|
8
11
|
export declare function requestAutomaticStudyAnalysisCancellation(cwd: string, runId: string): Promise<AutomaticStudyAnalysisCancellation>;
|
|
9
12
|
/** One permanent claim per completed run, consumed even when preparation/cancellation fails.
|
|
10
|
-
* Only the original
|
|
13
|
+
* Only the original producer calls this after all recording writes return.
|
|
11
14
|
* No file reader, restart recovery, Observer poll or export calls this function. */
|
|
12
15
|
export declare function runAutomaticStudyAnalysis(cwdInput: string, runId: string, configInput: StudyAnalysisConfig, deps?: AutomaticStudyAnalysisDeps): Promise<AutomaticStudyAnalysisOutcome>;
|
|
@@ -8,6 +8,16 @@ import { claimAutomaticStudyAnalysis, readAutomaticStudyAnalysisPrepared, reques
|
|
|
8
8
|
import { readStudyAnalysisExecution, readStudyAnalysisVersion } from "./study-analysis-store.js";
|
|
9
9
|
const exactId = (runId) => runId !== "latest" && /^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$/.test(runId);
|
|
10
10
|
const skipped = (reason) => ({ state: "skipped", reason });
|
|
11
|
+
function hasParticipantEvidence(bundle) {
|
|
12
|
+
return bundle.streams.some(stream => {
|
|
13
|
+
// Terminal commands and transcript messages also include launcher output.
|
|
14
|
+
// Fresh producers count recognized participant runtime items separately.
|
|
15
|
+
if (stream.actor?.lane === "terminal")
|
|
16
|
+
return (stream.actor.counts.runtimeParticipantItems ?? 0) > 0;
|
|
17
|
+
return stream.actor?.items.some(item => ["screenshot", "ui_action", "command", "tool_call", "file_change", "approval"].includes(item.kind)
|
|
18
|
+
|| (["message", "reasoning"].includes(item.kind) && !!item.text?.trim()));
|
|
19
|
+
});
|
|
20
|
+
}
|
|
11
21
|
/** Small read-only TUI/CLI projection. Neither this nor Observer can resume a job. */
|
|
12
22
|
export async function readAutomaticStudyAnalysis(cwd, runId) {
|
|
13
23
|
if (!exactId(runId))
|
|
@@ -46,7 +56,7 @@ function outcomeOf(result) {
|
|
|
46
56
|
return { state: "unknown", reason: "AUTOMATIC_ANALYSIS_OUTCOME_UNKNOWN", result };
|
|
47
57
|
}
|
|
48
58
|
/** One permanent claim per completed run, consumed even when preparation/cancellation fails.
|
|
49
|
-
* Only the original
|
|
59
|
+
* Only the original producer calls this after all recording writes return.
|
|
50
60
|
* No file reader, restart recovery, Observer poll or export calls this function. */
|
|
51
61
|
export async function runAutomaticStudyAnalysis(cwdInput, runId, configInput, deps = {}) {
|
|
52
62
|
if (!exactId(runId))
|
|
@@ -56,12 +66,14 @@ export async function runAutomaticStudyAnalysis(cwdInput, runId, configInput, de
|
|
|
56
66
|
if (!prepared)
|
|
57
67
|
return skipped("AUTOMATIC_ANALYSIS_SOURCE_UNAVAILABLE");
|
|
58
68
|
cwd = path.dirname(path.dirname(prepared.physicalRunsRoot));
|
|
69
|
+
let participantEvidence = false;
|
|
59
70
|
// Do not consume a future run's one claim while a producer is still writing it.
|
|
60
71
|
try {
|
|
61
72
|
const bytes = await readCompletedStudyAnalysisSource(cwd, prepared);
|
|
62
73
|
const bundle = JSON.parse(bytes.toString("utf8"));
|
|
63
74
|
if (bundle.streams.some(stream => stream.actor?.stopCause === "harness_aborted"))
|
|
64
75
|
return skipped("AUTOMATIC_ANALYSIS_ACTOR_CANCELLED");
|
|
76
|
+
participantEvidence = hasParticipantEvidence(bundle);
|
|
65
77
|
}
|
|
66
78
|
catch {
|
|
67
79
|
return skipped("AUTOMATIC_ANALYSIS_SOURCE_UNAVAILABLE");
|
|
@@ -107,22 +119,29 @@ export async function runAutomaticStudyAnalysis(cwdInput, runId, configInput, de
|
|
|
107
119
|
let outcome;
|
|
108
120
|
try {
|
|
109
121
|
await poll();
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
+
const missingKey = !(deps.apiKey ?? process.env.OPENAI_API_KEY)?.trim();
|
|
123
|
+
if (deps.defaultRequest === true && (missingKey || !participantEvidence)) {
|
|
124
|
+
outcome = signal.aborted ? { state: "cancelled", reason: "AUTOMATIC_ANALYSIS_CANCELLED" }
|
|
125
|
+
: skipped(missingKey ? "AUTOMATIC_ANALYSIS_KEY_MISSING" : "AUTOMATIC_ANALYSIS_NO_PARTICIPANT_EVIDENCE");
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
const result = await analyzeStudy(cwd, runId, { config }, {
|
|
129
|
+
...deps, signal, expectedRun: prepared, analysisId: job.attemptId,
|
|
130
|
+
beforeDispatch: async (context) => {
|
|
131
|
+
if (await job.cancellationRequested())
|
|
132
|
+
controller.abort();
|
|
133
|
+
if (signal.aborted)
|
|
134
|
+
return;
|
|
135
|
+
await job.update({ state: "running", analysisId: context.id, startedAt: new Date().toISOString(),
|
|
136
|
+
sourceRunSha256: context.sourceRunSha256, inputDigest: context.inputDigest });
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
outcome = outcomeOf(result);
|
|
140
|
+
}
|
|
122
141
|
if (cancellationFailed)
|
|
123
|
-
outcome = { state: "unknown", reason: "AUTOMATIC_ANALYSIS_CANCELLATION_UNAVAILABLE"
|
|
142
|
+
outcome = { ...outcome, state: "unknown", reason: "AUTOMATIC_ANALYSIS_CANCELLATION_UNAVAILABLE" };
|
|
124
143
|
if (storageFailed)
|
|
125
|
-
outcome = { state: "unknown", reason: "AUTOMATIC_ANALYSIS_STORAGE_UNAVAILABLE"
|
|
144
|
+
outcome = { ...outcome, state: "unknown", reason: "AUTOMATIC_ANALYSIS_STORAGE_UNAVAILABLE" };
|
|
126
145
|
}
|
|
127
146
|
catch {
|
|
128
147
|
outcome = { state: "unknown", reason: "AUTOMATIC_ANALYSIS_OUTCOME_UNKNOWN" };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automatic-study-analysis.js","sourceRoot":"","sources":["../src/automatic-study-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAkB,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,gCAAgC,EAAE,uBAAuB,EAAwC,MAAM,6BAA6B,CAAC;AAC5J,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,kCAAkC,EAAE,iDAAiD,EAEzF,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"automatic-study-analysis.js","sourceRoot":"","sources":["../src/automatic-study-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAkB,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,gCAAgC,EAAE,uBAAuB,EAAwC,MAAM,6BAA6B,CAAC;AAC5J,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,kCAAkC,EAAE,iDAAiD,EAEzF,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAQjG,MAAM,OAAO,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,KAAK,KAAK,QAAQ,IAAI,oCAAoC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnH,MAAM,OAAO,GAAG,CAAC,MAAc,EAAiC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;AAElG,SAAS,sBAAsB,CAAC,MAAiB;IAC/C,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QAClC,0EAA0E;QAC1E,yEAAyE;QACzE,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,KAAK,UAAU;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACrG,OAAO,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;eACrI,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,GAAW,EAAE,KAAa;IACzE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAClF,OAAO,QAAQ,CAAC,CAAC,CAAC,kCAAkC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yCAAyC,CAAC,GAAW,EAAE,KAAa;IACxF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,EAAE,CAAC;IAClG,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAClF,OAAO,QAAQ,CAAC,CAAC,CAAC,iDAAiD,CAAC,QAAQ,CAAC;QAC3E,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,SAAS,CAAC,MAAqB;IACtC,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,KAAK,6BAA6B;QAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,uCAAuC,EAAE,MAAM,EAAE,CAAC;IAC9I,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,2BAA2B;gBAC3G,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,KAAK,sCAAsC;oBAC5F,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,2BAA2B,CAAC;oBACzH,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,2BAA2B;wBAC1D,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5E,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;IAChC,IAAI,IAAI,KAAK,oBAAoB;QAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,8BAA8B,EAAE,MAAM,EAAE,CAAC;IACjH,IAAI,IAAI,KAAK,0BAA0B;QAAE,OAAO,EAAE,GAAG,OAAO,CAAC,gCAAgC,CAAC,EAAE,MAAM,EAAE,CAAC;IACzG,IAAI,IAAI,KAAK,eAAe;QAAE,OAAO,EAAE,GAAG,OAAO,CAAC,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;IACvF,IAAI,IAAI,KAAK,8BAA8B;QAAE,OAAO,EAAE,GAAG,OAAO,CAAC,wCAAwC,CAAC,EAAE,MAAM,EAAE,CAAC;IACrH,IAAI,IAAI,KAAK,yBAAyB,IAAI,IAAI,KAAK,0BAA0B,IAAI,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/G,OAAO,EAAE,GAAG,OAAO,CAAC,sCAAsC,CAAC,EAAE,MAAM,EAAE,CAAC;IACxE,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,oCAAoC,EAAE,MAAM,EAAE,CAAC;AACpF,CAAC;AAED;;oFAEoF;AACpF,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,QAAgB,EAAE,KAAa,EAAE,WAAgC,EAC/G,OAAmC,EAAE;IACrC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,uCAAuC,CAAC,CAAC;IAC7E,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC/F,IAAI,CAAC,QAAQ;QAAE,OAAO,OAAO,CAAC,uCAAuC,CAAC,CAAC;IACvE,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC5D,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,gFAAgF;IAChF,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,gCAAgC,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAc,CAAC;QAC/D,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,KAAK,iBAAiB,CAAC;YAAE,OAAO,OAAO,CAAC,oCAAoC,CAAC,CAAC;QACvI,mBAAmB,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,CAAC;QAAC,OAAO,OAAO,CAAC,uCAAuC,CAAC,CAAC;IAAC,CAAC;IAClE,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,GAA8B,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,2BAA2B,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,sBAAsB,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,6BAA6B,EAAE,CAAC,CAAC;QAC5J,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,sCAAsC,CAAC,CAAC;QACrE,GAAG,GAAG,OAAO,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,wCAAwC,EAAE,CAAC;IAAC,CAAC;IAE1F,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IACnG,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;QACrC,IAAI,OAAO;YAAE,OAAO;QACpB,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,CAAC;YAAC,IAAI,MAAM,GAAG,CAAC,qBAAqB,EAAE;gBAAE,UAAU,CAAC,KAAK,EAAE,CAAC;QAAC,CAAC;QAClE,MAAM,CAAC;YAAC,kBAAkB,GAAG,IAAI,CAAC;YAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAAC,CAAC;gBAChD,CAAC;YAAC,OAAO,GAAG,KAAK,CAAC;QAAC,CAAC;IAC9B,CAAC,CAAC;IACF,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnE,iBAAiB,CAAC,KAAK,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,aAAa,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC,EAAE,IAAI,CAAC,CAAC;IACT,SAAS,CAAC,KAAK,EAAE,CAAC;IAClB,IAAI,OAAsC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,IAAI,EAAE,CAAC;QACb,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC;QACxE,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACzE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,8BAA8B,EAAE;gBACvF,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC;QAC5G,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE;gBACxD,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,SAAS;gBACjE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBAChC,IAAI,MAAM,GAAG,CAAC,qBAAqB,EAAE;wBAAE,UAAU,CAAC,KAAK,EAAE,CAAC;oBAC1D,IAAI,MAAM,CAAC,OAAO;wBAAE,OAAO;oBAC3B,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBAC9F,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;gBAClF,CAAC;aACF,CAAC,CAAC;YACH,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,kBAAkB;YAAE,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,6CAA6C,EAAE,CAAC;QAC1H,IAAI,aAAa;YAAE,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,wCAAwC,EAAE,CAAC;IAClH,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC;IAAC,CAAC;YACjF,CAAC;QAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAAC,CAAC;IACvE,IAAI,CAAC;QACH,8EAA8E;QAC9E,yEAAyE;QACzE,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC;QAC9C,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC;YACtD,wBAAwB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,0BAA0B,CAAC,QAAQ,EAAE,UAAU,CAAC;SACjG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClB,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAA0F;YACjJ,UAAU,EAAE,UAAU,IAAI,IAAI;YAC9B,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW;gBACtG,aAAa,EAAE,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5F,MAAM,SAAS,GAAG,MAAM,kCAAkC,CAAC,QAAQ,CAAC,CAAC;QACrE,IAAI,SAAS,EAAE,KAAK,KAAK,SAAS;YAAE,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;IAC3G,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,wCAAwC,EAAE,CAAC;IAAC,CAAC;IACtG,6EAA6E;IAC7E,6EAA6E;IAC7E,2EAA2E;IAC3E,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM;oBACrE,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,uGAAuG,CAAC,EAAE,EAAE,CAAC;IACxJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -10,12 +10,14 @@ export interface ChromeCdpProbeArgs {
|
|
|
10
10
|
/** The pinned page target id from the launch-time geometry capture. */
|
|
11
11
|
targetId?: string;
|
|
12
12
|
/**
|
|
13
|
-
* "pinned" (default): the launch-time target, for
|
|
14
|
-
*
|
|
13
|
+
* "pinned" (default): the launch-time target, for launch geometry and emulation attribution.
|
|
14
|
+
* "active": the tab the participant is driving NOW — Chrome's /json lists page
|
|
15
15
|
* targets most-recently-focused first. The state observer must follow the participant: a
|
|
16
16
|
* verification link that opens in a NEW tab left a pinned observer reading the old tab forever,
|
|
17
17
|
* so the observed URL never changed again and stopWhen/task criteria went blind (a live run's
|
|
18
|
-
* funnel read reach-dashboard 0/2 under a screenshot OF the dashboard).
|
|
18
|
+
* funnel read reach-dashboard 0/2 under a screenshot OF the dashboard). Final geometry follows
|
|
19
|
+
* this target too: a closed launch tab is unavailable, and a background tab may report stale
|
|
20
|
+
* layout dimensions or zero outer bounds after navigation.
|
|
19
21
|
*/
|
|
20
22
|
prefer?: ChromeCdpPagePreference;
|
|
21
23
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrome-cdp-probe.js","sourceRoot":"","sources":["../src/chrome-cdp-probe.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,EAAE;AACF,iGAAiG;AACjG,8FAA8F;AAC9F,8FAA8F;AAC9F,kGAAkG;AAClG,0FAA0F;AAC1F,kGAAkG;AAClG,gGAAgG;AAChG,mGAAmG;AACnG,oDAAoD;AACpD,EAAE;AACF,kGAAkG;AAClG,4FAA4F;AAC5F,EAAE;AACF,8EAA8E;AAC9E,kGAAkG;AAClG,gGAAgG;AAChG,iEAAiE;
|
|
1
|
+
{"version":3,"file":"chrome-cdp-probe.js","sourceRoot":"","sources":["../src/chrome-cdp-probe.ts"],"names":[],"mappings":"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"}
|
|
@@ -504,7 +504,7 @@ function observerResultForConcurrentArtifacts(cwd, runId, artifactRoot, warnings
|
|
|
504
504
|
export async function runConcurrentSharedWorld(options) {
|
|
505
505
|
const analysis = resolveAutomaticAnalysis(options.config.review?.analysis);
|
|
506
506
|
const result = await withRunStatusScope(() => runConcurrentSharedWorldInScope(options));
|
|
507
|
-
return completeAutomaticAnalysis(result, analysis.ok ? analysis.config : undefined, options.automaticAnalysis);
|
|
507
|
+
return completeAutomaticAnalysis(result, analysis.ok ? analysis.config : undefined, options.automaticAnalysis, options.config.review?.analysis === undefined ? "default" : "explicit");
|
|
508
508
|
}
|
|
509
509
|
async function runConcurrentSharedWorldInScope(options) {
|
|
510
510
|
const { config, dryRun } = options;
|