@e2edev/e2e 0.2.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/LICENSE +21 -0
- package/README.md +104 -0
- package/dist/agent/act-validation.d.ts +27 -0
- package/dist/agent/act-validation.d.ts.map +1 -0
- package/dist/agent/act-validation.js +121 -0
- package/dist/agent/act-validation.js.map +1 -0
- package/dist/agent/act.d.ts +27 -0
- package/dist/agent/act.d.ts.map +1 -0
- package/dist/agent/act.js +775 -0
- package/dist/agent/act.js.map +1 -0
- package/dist/agent/actions.d.ts +66 -0
- package/dist/agent/actions.d.ts.map +1 -0
- package/dist/agent/actions.js +82 -0
- package/dist/agent/actions.js.map +1 -0
- package/dist/agent/ai-sdk.d.ts +16 -0
- package/dist/agent/ai-sdk.d.ts.map +1 -0
- package/dist/agent/ai-sdk.js +59 -0
- package/dist/agent/ai-sdk.js.map +1 -0
- package/dist/agent/call-options.d.ts +10 -0
- package/dist/agent/call-options.d.ts.map +1 -0
- package/dist/agent/call-options.js +28 -0
- package/dist/agent/call-options.js.map +1 -0
- package/dist/agent/default-agent.d.ts +22 -0
- package/dist/agent/default-agent.d.ts.map +1 -0
- package/dist/agent/default-agent.js +354 -0
- package/dist/agent/default-agent.js.map +1 -0
- package/dist/agent/error.d.ts +53 -0
- package/dist/agent/error.d.ts.map +1 -0
- package/dist/agent/error.js +94 -0
- package/dist/agent/error.js.map +1 -0
- package/dist/agent/executor.d.ts +238 -0
- package/dist/agent/executor.d.ts.map +1 -0
- package/dist/agent/executor.js +56 -0
- package/dist/agent/executor.js.map +1 -0
- package/dist/agent/index.d.ts +15 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +304 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/invocation.d.ts +194 -0
- package/dist/agent/invocation.d.ts.map +1 -0
- package/dist/agent/invocation.js +389 -0
- package/dist/agent/invocation.js.map +1 -0
- package/dist/agent/ledger.d.ts +24 -0
- package/dist/agent/ledger.d.ts.map +1 -0
- package/dist/agent/ledger.js +48 -0
- package/dist/agent/ledger.js.map +1 -0
- package/dist/agent/loop-guards.d.ts +35 -0
- package/dist/agent/loop-guards.d.ts.map +1 -0
- package/dist/agent/loop-guards.js +110 -0
- package/dist/agent/loop-guards.js.map +1 -0
- package/dist/agent/model/adapter.d.ts +97 -0
- package/dist/agent/model/adapter.d.ts.map +1 -0
- package/dist/agent/model/adapter.js +40 -0
- package/dist/agent/model/adapter.js.map +1 -0
- package/dist/agent/model/router.d.ts +36 -0
- package/dist/agent/model/router.d.ts.map +1 -0
- package/dist/agent/model/router.js +45 -0
- package/dist/agent/model/router.js.map +1 -0
- package/dist/agent/model/schema.d.ts +16 -0
- package/dist/agent/model/schema.d.ts.map +1 -0
- package/dist/agent/model/schema.js +37 -0
- package/dist/agent/model/schema.js.map +1 -0
- package/dist/agent/model/sdk.d.ts +28 -0
- package/dist/agent/model/sdk.d.ts.map +1 -0
- package/dist/agent/model/sdk.js +258 -0
- package/dist/agent/model/sdk.js.map +1 -0
- package/dist/agent/observation.d.ts +70 -0
- package/dist/agent/observation.d.ts.map +1 -0
- package/dist/agent/observation.js +174 -0
- package/dist/agent/observation.js.map +1 -0
- package/dist/agent/phases.d.ts +71 -0
- package/dist/agent/phases.d.ts.map +1 -0
- package/dist/agent/phases.js +124 -0
- package/dist/agent/phases.js.map +1 -0
- package/dist/agent/prompts.d.ts +40 -0
- package/dist/agent/prompts.d.ts.map +1 -0
- package/dist/agent/prompts.js +104 -0
- package/dist/agent/prompts.js.map +1 -0
- package/dist/agent/protocol.d.ts +31 -0
- package/dist/agent/protocol.d.ts.map +1 -0
- package/dist/agent/protocol.js +67 -0
- package/dist/agent/protocol.js.map +1 -0
- package/dist/agent/public.d.ts +12 -0
- package/dist/agent/public.d.ts.map +1 -0
- package/dist/agent/public.js +12 -0
- package/dist/agent/public.js.map +1 -0
- package/dist/agent/replay.d.ts +61 -0
- package/dist/agent/replay.d.ts.map +1 -0
- package/dist/agent/replay.js +185 -0
- package/dist/agent/replay.js.map +1 -0
- package/dist/agent/secrets.d.ts +22 -0
- package/dist/agent/secrets.d.ts.map +1 -0
- package/dist/agent/secrets.js +63 -0
- package/dist/agent/secrets.js.map +1 -0
- package/dist/agent/step-cache.d.ts +156 -0
- package/dist/agent/step-cache.d.ts.map +1 -0
- package/dist/agent/step-cache.js +301 -0
- package/dist/agent/step-cache.js.map +1 -0
- package/dist/agent/tool-loop.d.ts +51 -0
- package/dist/agent/tool-loop.d.ts.map +1 -0
- package/dist/agent/tool-loop.js +331 -0
- package/dist/agent/tool-loop.js.map +1 -0
- package/dist/agent/tool.d.ts +39 -0
- package/dist/agent/tool.d.ts.map +1 -0
- package/dist/agent/tool.js +52 -0
- package/dist/agent/tool.js.map +1 -0
- package/dist/backend/contract.d.ts +186 -0
- package/dist/backend/contract.d.ts.map +1 -0
- package/dist/backend/contract.js +65 -0
- package/dist/backend/contract.js.map +1 -0
- package/dist/backend/index.d.ts +316 -0
- package/dist/backend/index.d.ts.map +1 -0
- package/dist/backend/index.js +219 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/session.d.ts +23 -0
- package/dist/backend/session.d.ts.map +1 -0
- package/dist/backend/session.js +213 -0
- package/dist/backend/session.js.map +1 -0
- package/dist/backend/surface.d.ts +83 -0
- package/dist/backend/surface.d.ts.map +1 -0
- package/dist/backend/surface.js +11 -0
- package/dist/backend/surface.js.map +1 -0
- package/dist/cache/anchors.d.ts +37 -0
- package/dist/cache/anchors.d.ts.map +1 -0
- package/dist/cache/anchors.js +89 -0
- package/dist/cache/anchors.js.map +1 -0
- package/dist/cache/context.d.ts +74 -0
- package/dist/cache/context.d.ts.map +1 -0
- package/dist/cache/context.js +82 -0
- package/dist/cache/context.js.map +1 -0
- package/dist/cache/decide.d.ts +42 -0
- package/dist/cache/decide.d.ts.map +1 -0
- package/dist/cache/decide.js +47 -0
- package/dist/cache/decide.js.map +1 -0
- package/dist/cache/identity.d.ts +113 -0
- package/dist/cache/identity.d.ts.map +1 -0
- package/dist/cache/identity.js +109 -0
- package/dist/cache/identity.js.map +1 -0
- package/dist/cache/recorder.d.ts +76 -0
- package/dist/cache/recorder.d.ts.map +1 -0
- package/dist/cache/recorder.js +143 -0
- package/dist/cache/recorder.js.map +1 -0
- package/dist/cache/relocate.d.ts +69 -0
- package/dist/cache/relocate.d.ts.map +1 -0
- package/dist/cache/relocate.js +125 -0
- package/dist/cache/relocate.js.map +1 -0
- package/dist/cache/store.d.ts +68 -0
- package/dist/cache/store.d.ts.map +1 -0
- package/dist/cache/store.js +106 -0
- package/dist/cache/store.js.map +1 -0
- package/dist/cache/trace.d.ts +146 -0
- package/dist/cache/trace.d.ts.map +1 -0
- package/dist/cache/trace.js +249 -0
- package/dist/cache/trace.js.map +1 -0
- package/dist/cli/bin.d.ts +3 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +4 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +108 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +6 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +101 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/collect/collect.d.ts +44 -0
- package/dist/collect/collect.d.ts.map +1 -0
- package/dist/collect/collect.js +89 -0
- package/dist/collect/collect.js.map +1 -0
- package/dist/collect/registry.d.ts +47 -0
- package/dist/collect/registry.d.ts.map +1 -0
- package/dist/collect/registry.js +262 -0
- package/dist/collect/registry.js.map +1 -0
- package/dist/collect/select.d.ts +54 -0
- package/dist/collect/select.d.ts.map +1 -0
- package/dist/collect/select.js +230 -0
- package/dist/collect/select.js.map +1 -0
- package/dist/config/agent.d.ts +91 -0
- package/dist/config/agent.d.ts.map +1 -0
- package/dist/config/agent.js +232 -0
- package/dist/config/agent.js.map +1 -0
- package/dist/config/load.d.ts +23 -0
- package/dist/config/load.d.ts.map +1 -0
- package/dist/config/load.js +75 -0
- package/dist/config/load.js.map +1 -0
- package/dist/config/resolve.d.ts +94 -0
- package/dist/config/resolve.d.ts.map +1 -0
- package/dist/config/resolve.js +500 -0
- package/dist/config/resolve.js.map +1 -0
- package/dist/config/validate.d.ts +6 -0
- package/dist/config/validate.d.ts.map +1 -0
- package/dist/config/validate.js +21 -0
- package/dist/config/validate.js.map +1 -0
- package/dist/credentials.d.ts +7 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +42 -0
- package/dist/credentials.js.map +1 -0
- package/dist/expect/async.d.ts +5 -0
- package/dist/expect/async.d.ts.map +1 -0
- package/dist/expect/async.js +186 -0
- package/dist/expect/async.js.map +1 -0
- package/dist/expect/index.d.ts +7 -0
- package/dist/expect/index.d.ts.map +1 -0
- package/dist/expect/index.js +23 -0
- package/dist/expect/index.js.map +1 -0
- package/dist/expect/values.d.ts +4 -0
- package/dist/expect/values.d.ts.map +1 -0
- package/dist/expect/values.js +108 -0
- package/dist/expect/values.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/ai-trace.d.ts +151 -0
- package/dist/internal/ai-trace.d.ts.map +1 -0
- package/dist/internal/ai-trace.js +360 -0
- package/dist/internal/ai-trace.js.map +1 -0
- package/dist/internal/brands.d.ts +9 -0
- package/dist/internal/brands.d.ts.map +1 -0
- package/dist/internal/brands.js +9 -0
- package/dist/internal/brands.js.map +1 -0
- package/dist/internal/debug.d.ts +43 -0
- package/dist/internal/debug.d.ts.map +1 -0
- package/dist/internal/debug.js +102 -0
- package/dist/internal/debug.js.map +1 -0
- package/dist/internal/errors.d.ts +98 -0
- package/dist/internal/errors.d.ts.map +1 -0
- package/dist/internal/errors.js +212 -0
- package/dist/internal/errors.js.map +1 -0
- package/dist/internal/globs.d.ts +29 -0
- package/dist/internal/globs.d.ts.map +1 -0
- package/dist/internal/globs.js +126 -0
- package/dist/internal/globs.js.map +1 -0
- package/dist/internal/ids.d.ts +32 -0
- package/dist/internal/ids.d.ts.map +1 -0
- package/dist/internal/ids.js +124 -0
- package/dist/internal/ids.js.map +1 -0
- package/dist/internal/json-value.d.ts +15 -0
- package/dist/internal/json-value.d.ts.map +1 -0
- package/dist/internal/json-value.js +61 -0
- package/dist/internal/json-value.js.map +1 -0
- package/dist/internal/package-version.d.ts +6 -0
- package/dist/internal/package-version.d.ts.map +1 -0
- package/dist/internal/package-version.js +14 -0
- package/dist/internal/package-version.js.map +1 -0
- package/dist/internal/realm-slot.d.ts +13 -0
- package/dist/internal/realm-slot.d.ts.map +1 -0
- package/dist/internal/realm-slot.js +23 -0
- package/dist/internal/realm-slot.js.map +1 -0
- package/dist/internal/redact.d.ts +33 -0
- package/dist/internal/redact.d.ts.map +1 -0
- package/dist/internal/redact.js +56 -0
- package/dist/internal/redact.js.map +1 -0
- package/dist/internal/regexp.d.ts +10 -0
- package/dist/internal/regexp.d.ts.map +1 -0
- package/dist/internal/regexp.js +27 -0
- package/dist/internal/regexp.js.map +1 -0
- package/dist/internal/text.d.ts +39 -0
- package/dist/internal/text.d.ts.map +1 -0
- package/dist/internal/text.js +66 -0
- package/dist/internal/text.js.map +1 -0
- package/dist/internal/time.d.ts +37 -0
- package/dist/internal/time.d.ts.map +1 -0
- package/dist/internal/time.js +91 -0
- package/dist/internal/time.js.map +1 -0
- package/dist/internal/trace.d.ts +18 -0
- package/dist/internal/trace.d.ts.map +1 -0
- package/dist/internal/trace.js +46 -0
- package/dist/internal/trace.js.map +1 -0
- package/dist/internal/urls.d.ts +31 -0
- package/dist/internal/urls.d.ts.map +1 -0
- package/dist/internal/urls.js +95 -0
- package/dist/internal/urls.js.map +1 -0
- package/dist/locator/engine.d.ts +65 -0
- package/dist/locator/engine.d.ts.map +1 -0
- package/dist/locator/engine.js +164 -0
- package/dist/locator/engine.js.map +1 -0
- package/dist/locator/expression.d.ts +19 -0
- package/dist/locator/expression.d.ts.map +1 -0
- package/dist/locator/expression.js +85 -0
- package/dist/locator/expression.js.map +1 -0
- package/dist/locator/screen.d.ts +36 -0
- package/dist/locator/screen.d.ts.map +1 -0
- package/dist/locator/screen.js +281 -0
- package/dist/locator/screen.js.map +1 -0
- package/dist/report/build.d.ts +214 -0
- package/dist/report/build.d.ts.map +1 -0
- package/dist/report/build.js +346 -0
- package/dist/report/build.js.map +1 -0
- package/dist/report/code-frame.d.ts +20 -0
- package/dist/report/code-frame.d.ts.map +1 -0
- package/dist/report/code-frame.js +73 -0
- package/dist/report/code-frame.js.map +1 -0
- package/dist/report/debug-steps.d.ts +14 -0
- package/dist/report/debug-steps.d.ts.map +1 -0
- package/dist/report/debug-steps.js +85 -0
- package/dist/report/debug-steps.js.map +1 -0
- package/dist/report/list.d.ts +80 -0
- package/dist/report/list.d.ts.map +1 -0
- package/dist/report/list.js +372 -0
- package/dist/report/list.js.map +1 -0
- package/dist/report/live-status.d.ts +51 -0
- package/dist/report/live-status.d.ts.map +1 -0
- package/dist/report/live-status.js +162 -0
- package/dist/report/live-status.js.map +1 -0
- package/dist/report/write.d.ts +4 -0
- package/dist/report/write.d.ts.map +1 -0
- package/dist/report/write.js +13 -0
- package/dist/report/write.js.map +1 -0
- package/dist/run/app-process.d.ts +18 -0
- package/dist/run/app-process.d.ts.map +1 -0
- package/dist/run/app-process.js +112 -0
- package/dist/run/app-process.js.map +1 -0
- package/dist/run/artifacts.d.ts +51 -0
- package/dist/run/artifacts.d.ts.map +1 -0
- package/dist/run/artifacts.js +114 -0
- package/dist/run/artifacts.js.map +1 -0
- package/dist/run/events.d.ts +100 -0
- package/dist/run/events.d.ts.map +1 -0
- package/dist/run/events.js +59 -0
- package/dist/run/events.js.map +1 -0
- package/dist/run/execute.d.ts +119 -0
- package/dist/run/execute.d.ts.map +1 -0
- package/dist/run/execute.js +555 -0
- package/dist/run/execute.js.map +1 -0
- package/dist/run/fixtures.d.ts +40 -0
- package/dist/run/fixtures.d.ts.map +1 -0
- package/dist/run/fixtures.js +408 -0
- package/dist/run/fixtures.js.map +1 -0
- package/dist/run/in-process.d.ts +24 -0
- package/dist/run/in-process.d.ts.map +1 -0
- package/dist/run/in-process.js +120 -0
- package/dist/run/in-process.js.map +1 -0
- package/dist/run/public.d.ts +19 -0
- package/dist/run/public.d.ts.map +1 -0
- package/dist/run/public.js +11 -0
- package/dist/run/public.js.map +1 -0
- package/dist/run/realm.d.ts +52 -0
- package/dist/run/realm.d.ts.map +1 -0
- package/dist/run/realm.js +101 -0
- package/dist/run/realm.js.map +1 -0
- package/dist/run/records.d.ts +87 -0
- package/dist/run/records.d.ts.map +1 -0
- package/dist/run/records.js +3 -0
- package/dist/run/records.js.map +1 -0
- package/dist/run/retry.d.ts +18 -0
- package/dist/run/retry.d.ts.map +1 -0
- package/dist/run/retry.js +33 -0
- package/dist/run/retry.js.map +1 -0
- package/dist/run/runner.d.ts +49 -0
- package/dist/run/runner.d.ts.map +1 -0
- package/dist/run/runner.js +375 -0
- package/dist/run/runner.js.map +1 -0
- package/dist/run/scheduler.d.ts +45 -0
- package/dist/run/scheduler.d.ts.map +1 -0
- package/dist/run/scheduler.js +512 -0
- package/dist/run/scheduler.js.map +1 -0
- package/dist/run/serial.d.ts +52 -0
- package/dist/run/serial.d.ts.map +1 -0
- package/dist/run/serial.js +247 -0
- package/dist/run/serial.js.map +1 -0
- package/dist/run/sessions.d.ts +54 -0
- package/dist/run/sessions.d.ts.map +1 -0
- package/dist/run/sessions.js +221 -0
- package/dist/run/sessions.js.map +1 -0
- package/dist/run/steps.d.ts +196 -0
- package/dist/run/steps.d.ts.map +1 -0
- package/dist/run/steps.js +151 -0
- package/dist/run/steps.js.map +1 -0
- package/dist/run/unit-runner.d.ts +30 -0
- package/dist/run/unit-runner.d.ts.map +1 -0
- package/dist/run/unit-runner.js +11 -0
- package/dist/run/unit-runner.js.map +1 -0
- package/dist/run/units.d.ts +50 -0
- package/dist/run/units.d.ts.map +1 -0
- package/dist/run/units.js +103 -0
- package/dist/run/units.js.map +1 -0
- package/dist/run/worker/entry.d.ts +8 -0
- package/dist/run/worker/entry.d.ts.map +1 -0
- package/dist/run/worker/entry.js +137 -0
- package/dist/run/worker/entry.js.map +1 -0
- package/dist/run/worker/handle.d.ts +10 -0
- package/dist/run/worker/handle.d.ts.map +1 -0
- package/dist/run/worker/handle.js +74 -0
- package/dist/run/worker/handle.js.map +1 -0
- package/dist/run/worker/protocol.d.ts +129 -0
- package/dist/run/worker/protocol.d.ts.map +1 -0
- package/dist/run/worker/protocol.js +18 -0
- package/dist/run/worker/protocol.js.map +1 -0
- package/dist/run/worker/session.d.ts +69 -0
- package/dist/run/worker/session.d.ts.map +1 -0
- package/dist/run/worker/session.js +123 -0
- package/dist/run/worker/session.js.map +1 -0
- package/dist/types.d.ts +630 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/package.json +91 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured run events (`@e2edev/e2e/run`): the run's single event spine.
|
|
3
|
+
*
|
|
4
|
+
* Every event is plain JSON data — the same records the report persists and
|
|
5
|
+
* the worker IPC already carries, so a host can stream them over any wire
|
|
6
|
+
* without touching live handles. The list reporter consumes exactly this
|
|
7
|
+
* stream (`ListReporter.handle`, report/list.ts), so the CLI's rendering and a
|
|
8
|
+
* host's dashboard can never drift: there is one dispatch, not two. The
|
|
9
|
+
* report stays the canonical record; the stream exists so consumers can
|
|
10
|
+
* render progress while the run is still going.
|
|
11
|
+
*
|
|
12
|
+
* The emitter is the single writer: it stamps `seq` and `at`, so ordering
|
|
13
|
+
* survives any transport that preserves per-connection order. A sink that
|
|
14
|
+
* throws is quarantined for the rest of the run; a sink whose returned
|
|
15
|
+
* promise rejects is quarantined once the rejection settles, so events
|
|
16
|
+
* emitted before then may still reach it. Either way a broken consumer can
|
|
17
|
+
* never fail the run.
|
|
18
|
+
*/
|
|
19
|
+
import { timestamp } from '../internal/ids.js';
|
|
20
|
+
import { encodeResult } from './worker/protocol.js';
|
|
21
|
+
/** Strips the live target from a result, keeping its stable identity. */
|
|
22
|
+
export function toEventResult(record) {
|
|
23
|
+
return {
|
|
24
|
+
...encodeResult(record),
|
|
25
|
+
target: { name: record.target.name, platform: record.target.platform },
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Builds the run's single event writer over every configured sink. Sinks are
|
|
30
|
+
* quarantined independently, so a broken host callback cannot silence the
|
|
31
|
+
* list reporter or vice versa. Returns a no-op when no sink is configured,
|
|
32
|
+
* so call sites never branch.
|
|
33
|
+
*/
|
|
34
|
+
export function createRunEventEmitter(sinks) {
|
|
35
|
+
const active = sinks.filter((sink) => sink !== undefined);
|
|
36
|
+
if (active.length === 0)
|
|
37
|
+
return () => undefined;
|
|
38
|
+
let seq = 0;
|
|
39
|
+
const quarantined = new Set();
|
|
40
|
+
return (fact) => {
|
|
41
|
+
seq += 1;
|
|
42
|
+
const event = { seq, at: timestamp(), ...fact };
|
|
43
|
+
for (const sink of active) {
|
|
44
|
+
if (quarantined.has(sink))
|
|
45
|
+
continue;
|
|
46
|
+
try {
|
|
47
|
+
const result = sink(event);
|
|
48
|
+
// An async sink's rejection must neither surface as an unhandled
|
|
49
|
+
// rejection nor keep the sink subscribed.
|
|
50
|
+
if (result instanceof Promise)
|
|
51
|
+
result.catch(() => quarantined.add(sink));
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
quarantined.add(sink);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/run/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,OAAO,EAAE,YAAY,EAAyB,MAAM,sBAAsB,CAAC;AAoE3E,yEAAyE;AACzE,MAAM,UAAU,aAAa,CAAC,MAAoB;IAChD,OAAO;QACL,GAAG,YAAY,CAAC,MAAM,CAAC;QACvB,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;KACvE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAA4C;IAE5C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;IAChD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,MAAM,WAAW,GAAG,IAAI,GAAG,EAAgB,CAAC;IAC5C,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,GAAG,IAAI,CAAC,CAAC;QACT,MAAM,KAAK,GAAa,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC;QAC1D,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YACpC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC3B,iEAAiE;gBACjE,0CAA0C;gBAC1C,IAAI,MAAM,YAAY,OAAO;oBAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3E,CAAC;YAAC,MAAM,CAAC;gBACP,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/** Test-target execution engine (spec 11-lifecycle.md). */
|
|
2
|
+
import type { TargetSession } from '../backend/surface.ts';
|
|
3
|
+
import type { ResolvedConfig, ResolvedTarget } from '../config/resolve.ts';
|
|
4
|
+
import { type SerializedError } from '../internal/errors.ts';
|
|
5
|
+
import { DebugTrace } from '../internal/debug.ts';
|
|
6
|
+
import type { CollectedFile } from '../collect/collect.ts';
|
|
7
|
+
import type { ModuleRegistration, RegisteredTest } from '../collect/registry.ts';
|
|
8
|
+
import type { TestTargetPair } from '../collect/select.ts';
|
|
9
|
+
import type { ArtifactStore } from '../types.ts';
|
|
10
|
+
import { type ArtifactSink } from './fixtures.ts';
|
|
11
|
+
import { RealmManager, type Realm } from './realm.ts';
|
|
12
|
+
import type { AttemptRecord, ResultRecord, RunError, SerialGroupRecord } from './records.ts';
|
|
13
|
+
import { type SerialHost, type SharedSerialSession } from './serial.ts';
|
|
14
|
+
import { SessionStaging, SessionStore } from './sessions.ts';
|
|
15
|
+
import { type StepProgress } from './steps.ts';
|
|
16
|
+
export interface ExecutionEvents {
|
|
17
|
+
onResult?(result: ResultRecord): void;
|
|
18
|
+
onSerialGroup?(group: SerialGroupRecord): void;
|
|
19
|
+
/** Fires before a runnable pair (or serial unit via its first member) starts. */
|
|
20
|
+
onPairStart?(pair: TestTargetPair): void;
|
|
21
|
+
/** Live step progress of one running attempt, for reporters. */
|
|
22
|
+
onProgress?(testId: string, progress: StepProgress): void;
|
|
23
|
+
}
|
|
24
|
+
export interface TargetExecutorOptions {
|
|
25
|
+
readonly config: ResolvedConfig;
|
|
26
|
+
readonly target: ResolvedTarget;
|
|
27
|
+
readonly runId: string;
|
|
28
|
+
readonly artifactsRoot: string;
|
|
29
|
+
readonly sessionStore: SessionStore;
|
|
30
|
+
readonly headed: boolean;
|
|
31
|
+
readonly interruptSignal: AbortSignal;
|
|
32
|
+
readonly debug?: DebugTrace;
|
|
33
|
+
readonly events?: ExecutionEvents;
|
|
34
|
+
}
|
|
35
|
+
/** The file-path slice of a collected file that unit execution needs. */
|
|
36
|
+
export type FileRef = Pick<CollectedFile, 'file' | 'absolutePath'>;
|
|
37
|
+
/** How one attempt acquires its session and session-staging hooks. */
|
|
38
|
+
export type AttemptContext = {
|
|
39
|
+
readonly kind: 'ordinary';
|
|
40
|
+
} | {
|
|
41
|
+
readonly kind: 'setup';
|
|
42
|
+
readonly staging: SessionStaging;
|
|
43
|
+
} | {
|
|
44
|
+
readonly kind: 'serial';
|
|
45
|
+
readonly shared: SharedSerialSession;
|
|
46
|
+
};
|
|
47
|
+
/** Executes every selected pair for one target sequentially. */
|
|
48
|
+
export declare class TargetExecutor implements SerialHost {
|
|
49
|
+
private readonly options;
|
|
50
|
+
readonly target: ResolvedTarget;
|
|
51
|
+
get runId(): string;
|
|
52
|
+
get artifactStore(): ArtifactStore | undefined;
|
|
53
|
+
readonly artifactsRoot: string;
|
|
54
|
+
readonly interruptSignal: AbortSignal;
|
|
55
|
+
readonly realms: RealmManager;
|
|
56
|
+
readonly debug: DebugTrace;
|
|
57
|
+
private readonly runErrors;
|
|
58
|
+
private readonly sessionIdentity;
|
|
59
|
+
/** Resolves once the backend's init hook completed for this worker. */
|
|
60
|
+
private backendReady;
|
|
61
|
+
constructor(options: TargetExecutorOptions);
|
|
62
|
+
private get config();
|
|
63
|
+
/** Emits one final result record (SerialHost). Records are not retained. */
|
|
64
|
+
emit(result: ResultRecord): void;
|
|
65
|
+
/** Builds one backend operation context. */
|
|
66
|
+
private op;
|
|
67
|
+
/** Run-level errors recorded so far, in order. */
|
|
68
|
+
collectedRunErrors(): readonly RunError[];
|
|
69
|
+
/**
|
|
70
|
+
* Runs the backend's init hook once per worker, before the first session.
|
|
71
|
+
* Boot work (simulators, device leases) is bounded by the launch timeout
|
|
72
|
+
* but never charged against a step budget.
|
|
73
|
+
*/
|
|
74
|
+
private initBackendOnce;
|
|
75
|
+
/**
|
|
76
|
+
* Runs one lifecycle call on the backend seam within the given budget. The
|
|
77
|
+
* signal handed to `run` follows `parent` and is aborted the moment the call
|
|
78
|
+
* fails, timeout included, so a hook that outlived its budget is told to
|
|
79
|
+
* stop instead of running on into the retry. Synchronous throws are caught,
|
|
80
|
+
* and every failure is translated onto the runner taxonomy: a backend
|
|
81
|
+
* failing outside its contract is infrastructure, never a test error.
|
|
82
|
+
*/
|
|
83
|
+
private lifecycle;
|
|
84
|
+
/**
|
|
85
|
+
* Disposes the backend at worker end of life, bounded by the cleanup budget.
|
|
86
|
+
* Runs whether or not `init` did: a backend may hold resources it acquired
|
|
87
|
+
* lazily, and the contract makes `dispose` safe to call on a cold backend.
|
|
88
|
+
*/
|
|
89
|
+
dispose(): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* Runs one file-target unit: runnable pairs of a single file, in declaration
|
|
92
|
+
* order, sharing a realm between passing non-serial tests (spec
|
|
93
|
+
* 11-lifecycle.md). Dispatch-time gating (selection dispositions and
|
|
94
|
+
* setup-failure dependencies) belongs to the scheduler, so every pair
|
|
95
|
+
* reaching here is runnable.
|
|
96
|
+
*/
|
|
97
|
+
runFileUnit(file: FileRef, filePairs: readonly TestTargetPair[], freshRegistration?: ModuleRegistration): Promise<void>;
|
|
98
|
+
/** Records a deterministic-registration violation as a run-level error. */
|
|
99
|
+
recordDisappeared(message: string): void;
|
|
100
|
+
private runOrdinaryPair;
|
|
101
|
+
/** Runs one setup pair to completion, persisting staged sessions on success. */
|
|
102
|
+
runSetupUnit(pair: TestTargetPair, freshRegistration?: ModuleRegistration): Promise<void>;
|
|
103
|
+
/** Starts one attempt on the backend, restores a configured session, and starts tracing. */
|
|
104
|
+
launchSession(pair: TestTargetPair, attemptId: string, artifactsDir: string, signal: AbortSignal): Promise<TargetSession>;
|
|
105
|
+
/** Ends one attempt's isolation within the cleanup budget. */
|
|
106
|
+
private endAttempt;
|
|
107
|
+
/** Finalizes trace and ends the attempt with a fresh cleanup budget. */
|
|
108
|
+
closeSession(session: TargetSession, attemptId: string, record: {
|
|
109
|
+
cleanup: 'complete' | 'failed' | 'forced';
|
|
110
|
+
}, artifactSink: ArtifactSink, secondaryErrors: SerializedError[]): Promise<void>;
|
|
111
|
+
/** Runs one attempt to completion (SerialHost). */
|
|
112
|
+
/**
|
|
113
|
+
* Runs one attempt under its AI trace scope, so every model call the
|
|
114
|
+
* attempt makes is attributed to this test, target, and attempt.
|
|
115
|
+
*/
|
|
116
|
+
runAttempt(pair: TestTargetPair, registered: RegisteredTest, realm: Realm, attemptIndex: number, context: AttemptContext): Promise<AttemptRecord>;
|
|
117
|
+
private executeAttempt;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=execute.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/run/execute.ts"],"names":[],"mappings":"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"}
|