@unotest/protocol 0.20.0 → 0.21.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/CHANGELOG.md +71 -6
- package/dist/index.d.ts +45 -7
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,70 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.21.0] - 2026-08-25
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 174d27e: feat: environments are first-class in the viewer — a switcher, per-env run history
|
|
8
|
+
|
|
9
|
+
**Run artifacts are laid out per environment, as folders.** Each
|
|
10
|
+
environment's history lives in its own root, mirroring the env-file
|
|
11
|
+
scheme: `unotest/.runs` (base), `unotest/.runs.<env>` (e.g.
|
|
12
|
+
`.runs.staging` for `--env staging` / `UNOTEST_ENV=staging`); the axes
|
|
13
|
+
compose — `.runs-mobile.staging`. Indexes (`_day.jsonl`, `_latest.json`)
|
|
14
|
+
are per-env automatically: switching environments is a change of root,
|
|
15
|
+
not a filter and not a rebuild. Old runs stay in `.runs` (= base), no
|
|
16
|
+
migration needed. `runsDirFor` / `projectRunsRoot` / `projectRunDirFor`
|
|
17
|
+
gained an optional `envName` parameter; the run manifest carries `env`
|
|
18
|
+
for self-description. Make sure your `.gitignore` uses the wildcard
|
|
19
|
+
form — `unotest/.runs*/` (`init` already writes it that way for new
|
|
20
|
+
projects).
|
|
21
|
+
|
|
22
|
+
**The viewer knows about environments.** A new switcher sits at the top
|
|
23
|
+
of the Variables panel and in the status bar: base plus every
|
|
24
|
+
environment discovered from `unotest/.env.<name>` / `.secrets.<name>`
|
|
25
|
+
(`.env.example` and other templates do not count). The active
|
|
26
|
+
environment is server-side (`GET/POST /api/environments`), and all tabs
|
|
27
|
+
converge via the `env:changed` WS message:
|
|
28
|
+
|
|
29
|
+
- the Variables panel shows layers WITH the active environment's
|
|
30
|
+
overlay (previously base only); values coming from `.env.<name>`
|
|
31
|
+
carry a badge; an edit goes to the file where the key is defined; new
|
|
32
|
+
variables go to base;
|
|
33
|
+
- Overview and the Runs list show only the active environment — tiles
|
|
34
|
+
are colored by the latest run in that environment;
|
|
35
|
+
- a run started from the viewer gets the active environment's
|
|
36
|
+
`UNOTEST_ENV` (`RunRequest.env` is a per-request override);
|
|
37
|
+
- a run opened from another environment still resolves by runId across
|
|
38
|
+
all `.runs*` roots.
|
|
39
|
+
|
|
40
|
+
MCP: `run_test {env}` already switched the child process's environment;
|
|
41
|
+
its artifacts are now correctly found by the server in `.runs.<env>`
|
|
42
|
+
(inspect/step/attach/list_runtimes scan all roots).
|
|
43
|
+
|
|
44
|
+
Four fixes uncovered while shaking this down:
|
|
45
|
+
|
|
46
|
+
- **The `--env` overlay actually reaches the run.** Long-lived hosts
|
|
47
|
+
(viewer, MCP server) flattened the base `.env` into their own
|
|
48
|
+
`process.env` on `loadConfig`; children inherited it as ambient
|
|
49
|
+
(ambient beats files) — the overlay's `APP_BASE_URL` was silently
|
|
50
|
+
clobbered by the base value. The viewer now rolls its env back after
|
|
51
|
+
loading the config; MCP spawns children from a clean pre-flatten
|
|
52
|
+
snapshot.
|
|
53
|
+
- **Pause/Abort from the viewer work again.** Debug commands were
|
|
54
|
+
written to the flat `<root>/<runId>/commands.jsonl`, while runs have
|
|
55
|
+
lived in date shards since 0.19 — the write 404'd and abort was
|
|
56
|
+
silently ignored. Order fixed too: SIGTERM to the own process first
|
|
57
|
+
(tests AND collections), then the command file.
|
|
58
|
+
- **A collection no longer "dies" in the UI after 30 seconds.** The
|
|
59
|
+
parent run wrote no heartbeat — the monitor declared it interrupted,
|
|
60
|
+
the row vanished from ACTIVE and the tail detached. The orchestrator
|
|
61
|
+
now maintains the heartbeat (shared machinery in `@unotest/core`),
|
|
62
|
+
and the viewer additionally treats a flowing steps.jsonl as a sign of
|
|
63
|
+
life (compatibility with older runners).
|
|
64
|
+
- **No phantom `failed` after a clean exit.** The "child exited without
|
|
65
|
+
artifacts" check looked at the flat path and fired bogus
|
|
66
|
+
`run-finished: failed` events plus an error toast on every exit.
|
|
67
|
+
|
|
3
68
|
## [0.20.0] - 2026-08-24
|
|
4
69
|
|
|
5
70
|
### Minor Changes
|
|
@@ -134,14 +199,14 @@
|
|
|
134
199
|
|
|
135
200
|
### Patch Changes
|
|
136
201
|
|
|
137
|
-
- 01fa3c7: Run-id:
|
|
202
|
+
- 01fa3c7: Run-id: the random suffix grew from 6 to 12 hex characters.
|
|
138
203
|
|
|
139
|
-
24
|
|
140
|
-
|
|
141
|
-
|
|
204
|
+
24 bits gave a ~3% collision chance across a thousand ids within one
|
|
205
|
+
millisecond — that failed in tests and would have meant two runs sharing
|
|
206
|
+
one directory. With 48 bits the same case is on the order of 1e-9.
|
|
142
207
|
|
|
143
|
-
|
|
144
|
-
|
|
208
|
+
The format stays `<name>-<base36-ts>-<hex>`; only the length of the last
|
|
209
|
+
segment changes, and nothing parses it.
|
|
145
210
|
|
|
146
211
|
## [0.16.0] - 2026-08-19
|
|
147
212
|
|
package/dist/index.d.ts
CHANGED
|
@@ -45,8 +45,18 @@ declare const RUNS_SUBDIR = ".runs";
|
|
|
45
45
|
declare const SNAPSHOTS_SUBDIR = ".snapshots";
|
|
46
46
|
/** Scenario tree under `unotest/`: `e2e` / `e2e-mobile`. */
|
|
47
47
|
declare function testDirFor(suffix: string): string;
|
|
48
|
-
/** Run-artifact root under `unotest
|
|
49
|
-
|
|
48
|
+
/** Run-artifact root under `unotest/`. Two axes, mirroring the env-file
|
|
49
|
+
* naming below: TARGET (dash) and ENVIRONMENT (dot) — `.runs`,
|
|
50
|
+
* `.runs-mobile`, `.runs.staging`, `.runs-mobile.staging`. Splitting
|
|
51
|
+
* runs by directory (rather than tagging each record with an env field)
|
|
52
|
+
* keeps every derived index per-environment for free: switching the
|
|
53
|
+
* environment is a change of root, never a filter or a rebuild. */
|
|
54
|
+
declare function runsDirFor(suffix: string, envName?: string): string;
|
|
55
|
+
/** True for directory names under `unotest/` that hold run artifacts for
|
|
56
|
+
* ANY target/environment combination (`.runs`, `.runs-mobile`,
|
|
57
|
+
* `.runs.staging`, …). Lets a reader resolve a runId it did not place
|
|
58
|
+
* without knowing which axis values exist. */
|
|
59
|
+
declare function isRunsDirName(name: string): boolean;
|
|
50
60
|
/** `UNOTEST_DEBUG` artifact root under `unotest/`: `.debug` /
|
|
51
61
|
* `.debug-mobile`. */
|
|
52
62
|
declare function debugDirFor(suffix: string): string;
|
|
@@ -129,6 +139,12 @@ declare function secretsLayerFilesFor(suffix: string, envName?: string): string[
|
|
|
129
139
|
/** Read an environment name from a process-env-like record (`UNOTEST_ENV`),
|
|
130
140
|
* normalising empty/blank to `undefined` (= base only). */
|
|
131
141
|
declare function activeEnvName(env: Record<string, string | undefined>): string | undefined;
|
|
142
|
+
/** Environment names available to a target, derived from a directory
|
|
143
|
+
* listing of `unotest/` (fs stays with the caller — this module is
|
|
144
|
+
* bundled for the browser). A name counts when ANY overlay layer for the
|
|
145
|
+
* target exists: `.env.<name>`, `.env<suffix>.<name>`, or the `.secrets`
|
|
146
|
+
* equivalents. Sorted, deduped, template names excluded. */
|
|
147
|
+
declare function envNamesFromDirListing(fileNames: string[], suffix: string): string[];
|
|
132
148
|
|
|
133
149
|
interface RegexLiteral {
|
|
134
150
|
readonly kind: "regex";
|
|
@@ -183,12 +199,13 @@ declare class UnplaceableRunIdError extends Error {
|
|
|
183
199
|
* Throws instead of returning null so a writer can never quietly invent
|
|
184
200
|
* a location and split one run across two layouts. */
|
|
185
201
|
declare function requireRunDirFor(runsRoot: string, runId: string): string;
|
|
186
|
-
/** Project-relative runs root for a target
|
|
187
|
-
|
|
202
|
+
/** Project-relative runs root for a target + environment:
|
|
203
|
+
* `unotest/.runs<suffix>[.<env>]`. */
|
|
204
|
+
declare function projectRunsRoot(suffix?: string, envName?: string): string;
|
|
188
205
|
/** Project-relative directory of one run, shard included. The single
|
|
189
206
|
* place that knows how a run id becomes a path — every writer and reader
|
|
190
207
|
* goes through here, so the layout cannot drift between them. */
|
|
191
|
-
declare function projectRunDirFor(runId: string, suffix?: string): string;
|
|
208
|
+
declare function projectRunDirFor(runId: string, suffix?: string, envName?: string): string;
|
|
192
209
|
/** Day directory: `<runsRoot>/YYYY/MM/DD`. */
|
|
193
210
|
declare function shardDirFor(runsRoot: string, ms: number): string;
|
|
194
211
|
/** Walk day-shard paths backwards from `fromMs`, newest first. Used by
|
|
@@ -575,6 +592,11 @@ interface ScenarioRunRequest {
|
|
|
575
592
|
/** Inline breakpoint override as `"line:col"` strings. Only honored
|
|
576
593
|
* when `debug=true`. */
|
|
577
594
|
breakpoints?: string[];
|
|
595
|
+
/** Environment name (`.env.<name>` overlay + `.runs<suffix>.<name>`
|
|
596
|
+
* artifact root). Absent = base. The spawner sets `UNOTEST_ENV` from
|
|
597
|
+
* this EXPLICITLY (clearing it when absent) so the child never
|
|
598
|
+
* inherits a stray value from the viewer process. */
|
|
599
|
+
env?: string;
|
|
578
600
|
}
|
|
579
601
|
/** Run a collection — the runner's CLI orchestrates scenarios inside.
|
|
580
602
|
* Viewer doesn't see the per-scenario subprocesses; it sees one direct
|
|
@@ -591,6 +613,8 @@ interface CollectionRunRequest {
|
|
|
591
613
|
workers?: number;
|
|
592
614
|
/** Stop on first failure. Default `false` (continue-on-fail). */
|
|
593
615
|
bail?: boolean;
|
|
616
|
+
/** Environment name — see `ScenarioRunRequest.env`. */
|
|
617
|
+
env?: string;
|
|
594
618
|
}
|
|
595
619
|
/** Open a live AUTHORING-HOLD session (collaborative model, U1/U3): a
|
|
596
620
|
* headed shared browser + draft stay open with NO running test; the human
|
|
@@ -602,6 +626,8 @@ interface AuthoringRunRequest {
|
|
|
602
626
|
scenario: string;
|
|
603
627
|
/** Authoring is visible by default — the human must see the live browser. */
|
|
604
628
|
headed?: boolean;
|
|
629
|
+
/** Environment name — see `ScenarioRunRequest.env`. */
|
|
630
|
+
env?: string;
|
|
605
631
|
}
|
|
606
632
|
/** Discriminated union of every run-shape the viewer can request. */
|
|
607
633
|
type RunRequest = ScenarioRunRequest | CollectionRunRequest | AuthoringRunRequest;
|
|
@@ -779,6 +805,10 @@ interface RunManifest {
|
|
|
779
805
|
/** Wallclock at runner start. Distinct from the first event's `t`
|
|
780
806
|
* (which may have leading delay for adapter setup). */
|
|
781
807
|
startedAt: number;
|
|
808
|
+
/** Environment name the run resolved (`UNOTEST_ENV` / `--env`), absent
|
|
809
|
+
* for base. Self-description only — placement already encodes it (the
|
|
810
|
+
* run lives under `.runs<suffix>.<env>`), so nothing filters on this. */
|
|
811
|
+
env?: string;
|
|
782
812
|
/** Opt-in artifact-capture flags as resolved from the runner's env at
|
|
783
813
|
* start (`UNOTEST_CONSOLE` / `UNOTEST_NETWORK`). Recorded here so the
|
|
784
814
|
* viewer can tell "capture was disabled" apart from "capture was on but
|
|
@@ -1392,6 +1422,14 @@ interface FsRunFinishedMessage {
|
|
|
1392
1422
|
runId: RunId;
|
|
1393
1423
|
outcome: RunOutcome;
|
|
1394
1424
|
}
|
|
1425
|
+
/** Emitted when the server's ACTIVE ENVIRONMENT switches (or the set of
|
|
1426
|
+
* available environments changes on disk). Clients refetch
|
|
1427
|
+
* `/api/environments` plus everything env-scoped: variables, runs,
|
|
1428
|
+
* latest index. `env` is the new active name, absent for base. */
|
|
1429
|
+
interface EnvChangedMessage {
|
|
1430
|
+
kind: "env:changed";
|
|
1431
|
+
env?: string;
|
|
1432
|
+
}
|
|
1395
1433
|
/** A single line of stdout or stderr captured from a runner child the
|
|
1396
1434
|
* viewer-server spawned. Logs always carry a `runId` so the browser
|
|
1397
1435
|
* attaches them to the right run-pane. */
|
|
@@ -1409,7 +1447,7 @@ interface ErrorMessage {
|
|
|
1409
1447
|
message: string;
|
|
1410
1448
|
}
|
|
1411
1449
|
/** Discriminated union of every WS message the server emits to clients. */
|
|
1412
|
-
type WsMessage = FsScenariosChangedMessage | FsHelpersChangedMessage | FsCollectionsChangedMessage | FsBreakpointsChangedMessage | FsRunStartedMessage | FsRunStepMessage | FsCollectionRunStepMessage | FsRunFinishedMessage | LogLineMessage | ErrorMessage;
|
|
1450
|
+
type WsMessage = FsScenariosChangedMessage | FsHelpersChangedMessage | FsCollectionsChangedMessage | FsBreakpointsChangedMessage | FsRunStartedMessage | FsRunStepMessage | FsCollectionRunStepMessage | FsRunFinishedMessage | EnvChangedMessage | LogLineMessage | ErrorMessage;
|
|
1413
1451
|
/** All WS message `kind` literals as a union type — useful for handler
|
|
1414
1452
|
* registries (`Record<WsMessageKind, Handler>`). */
|
|
1415
1453
|
type WsMessageKind = WsMessage["kind"];
|
|
@@ -1553,4 +1591,4 @@ interface RuntimeStateFile {
|
|
|
1553
1591
|
updatedAt: number;
|
|
1554
1592
|
}
|
|
1555
1593
|
|
|
1556
|
-
export { type AddVariablePlan, type AddVariablePlanInput, type AppPathPickerSpec, type AppServerEvent, type AuthoringRunRequest, BLOBS_DIR, type BreakpointEntry, type BreakpointsFile, COLLECTIONS_SUBDIR, COLLECTION_NAME_FORBIDDEN_RE, COMMANDS_FILE, type CheckSeverity, type CollectionMeta, type CollectionRunArtifact, type CollectionRunFinishedEvent, type CollectionRunRequest, type CollectionRunStartedEvent, type CollectionRunTab, type CollectionScenarioFinishedEvent, type CollectionScenarioStartedEvent, type CollectionTab, DAY_INDEX_FILE, type DbgCommand, type DbgCommandAbort, type DbgCommandClearBp, type DbgCommandContinue, type DbgCommandKind, type DbgCommandPause, type DbgCommandPickerStart, type DbgCommandPickerStop, type DbgCommandProbe, type DbgCommandRecord, type DbgCommandSetBp, type DbgCommandSnapshot, type DbgCommandStep, type DbgCommandWheel, type DebugCapabilities, type DoctorCheck, type DoctorContext, type DslDiagnostic, type DslValidateContext, type DslVocabArg, type DslVocabCategory, type DslVocabEntry, E2E_SUBDIR, ENV_FILE, EXPECT_FAIL_ANNOTATION, type EnvFile, type EnvUpdate, type EnvVar, type ErrorMessage, type FailureBundleWrittenEvent, type FsBreakpointsChangedMessage, type FsCollectionRunStepMessage, type FsCollectionsChangedMessage, type FsHelpersChangedMessage, type FsRunFinishedMessage, type FsRunStartedMessage, type FsRunStepMessage, type FsScenariosChangedMessage, HEARTBEAT_FILE, HELPERS_SUBDIR, type HelperMeta, type HelperTab, type HostRequirement, type IDslLanguageService, type ILaunchedProcess, type IProcessLauncher, type IRunnerAdapter, InvalidBlobHashError, LOCK_FILE, LOG_FILE, type LaunchSpec, type LocatorPickedEvent, type LockFile, type LogLineMessage, type Matcher, PICKER_SNAPSHOT_FILE, type PausedEvent, type PickerMode, type ProbeMatch, type ProbePinned, type ProbeResult, type ProbeResultEvent, RUNNER_CONFIG_KEYS, RUNS_SUBDIR, RUNTIME_FILE, RUN_INDEX_SCHEMA_VERSION, RUN_MANIFEST_FILE, RUN_SOURCES_FILE, type RecordedActionKind, type RegexLiteral, type ResumedEvent, type RunArtifact, type RunFinishedEvent, type RunId, type RunIndexEntry, type RunIndexHeader, type RunKind, type RunManifest, type RunMeta, type RunOutcome, type RunRequest, type RunSources, type RunStartedEvent, type RunStatus, RunnerAdapterNotFoundError, RunnerNotConfiguredError, type RuntimeState, type RuntimeStateFile, SCENARIOS_INDEX_DIR, SCENARIOS_LATEST_FILE, SCENARIO_RECENT_WINDOW, SECRETS_FILE, SEGMENT_NAME_FORBIDDEN_RE, SNAPSHOTS_SUBDIR, STDERR_FILE, STDOUT_FILE, STEPS_FILE, type ScenarioAnnotations, type ScenarioLatestEntry, type ScenarioMeta, type ScenarioRunRequest, type ScenarioRunTab, type ScenarioTab, type ScenariosLatest, type ScenariosPayload, type ScreenshotEvent, type SnapshotTab, type StepFailEvent, type StepOkEvent, type StepStartedEvent, TERMINAL_RUNTIME_STATES, TERMINAL_WS_EVENT, type TabKind, type TabKindName, type TerminalClientMessage, type TerminalCloseMessage, type TerminalDataMessage, type TerminalErrorMessage, type TerminalExitMessage, type TerminalKind, type TerminalOutputMessage, type TerminalResizeMessage, type TerminalServerMessage, type TerminalSpawnMessage, type ToolCallEvent, type ToolResultEvent, UNOTEST_DIR, UnplaceableRunIdError, UnsupportedRunKindError, type VariableCategory, type VariableKind, type VariablePlanError, type WheelChangedEvent, type WsMessage, type WsMessageKind, activeEnvName, blobPathFor, blobRelPathFor, blobRelSegmentsFor, blobsRootFor, categorizeVariable, debugDirFor, debuggerFileFor, deleteShadowWarning, envFileFor, envKeys, envLayerFilesFor, foldScenarioRun, insertEnvVar, isAnnotationLine, isExternalVarName, isFailingStatus, isRegexLiteral, isRunnerConfigKey, isTerminalRuntimeState, makeRunId, parseAppServerEvent, parseEnvContent, parseScenarioAnnotations, planAddVariable, projectRunDirFor, projectRunsRoot, regexLiteral, removeEnvVar, requireRunDirFor, runDirFor, runIdStartedAt, runsDirFor, sanitizeRunIdSegment, scenarioIndexFileName, scenarioRefFromFileName, secretsFileFor, secretsLayerFilesFor, serializeEnvValue, shardDaysDescending, shardDirFor, shardPathForRunId, shardPathForTimestamp, testDirFor, validateCollectionName, validateSegmentName };
|
|
1594
|
+
export { type AddVariablePlan, type AddVariablePlanInput, type AppPathPickerSpec, type AppServerEvent, type AuthoringRunRequest, BLOBS_DIR, type BreakpointEntry, type BreakpointsFile, COLLECTIONS_SUBDIR, COLLECTION_NAME_FORBIDDEN_RE, COMMANDS_FILE, type CheckSeverity, type CollectionMeta, type CollectionRunArtifact, type CollectionRunFinishedEvent, type CollectionRunRequest, type CollectionRunStartedEvent, type CollectionRunTab, type CollectionScenarioFinishedEvent, type CollectionScenarioStartedEvent, type CollectionTab, DAY_INDEX_FILE, type DbgCommand, type DbgCommandAbort, type DbgCommandClearBp, type DbgCommandContinue, type DbgCommandKind, type DbgCommandPause, type DbgCommandPickerStart, type DbgCommandPickerStop, type DbgCommandProbe, type DbgCommandRecord, type DbgCommandSetBp, type DbgCommandSnapshot, type DbgCommandStep, type DbgCommandWheel, type DebugCapabilities, type DoctorCheck, type DoctorContext, type DslDiagnostic, type DslValidateContext, type DslVocabArg, type DslVocabCategory, type DslVocabEntry, E2E_SUBDIR, ENV_FILE, EXPECT_FAIL_ANNOTATION, type EnvChangedMessage, type EnvFile, type EnvUpdate, type EnvVar, type ErrorMessage, type FailureBundleWrittenEvent, type FsBreakpointsChangedMessage, type FsCollectionRunStepMessage, type FsCollectionsChangedMessage, type FsHelpersChangedMessage, type FsRunFinishedMessage, type FsRunStartedMessage, type FsRunStepMessage, type FsScenariosChangedMessage, HEARTBEAT_FILE, HELPERS_SUBDIR, type HelperMeta, type HelperTab, type HostRequirement, type IDslLanguageService, type ILaunchedProcess, type IProcessLauncher, type IRunnerAdapter, InvalidBlobHashError, LOCK_FILE, LOG_FILE, type LaunchSpec, type LocatorPickedEvent, type LockFile, type LogLineMessage, type Matcher, PICKER_SNAPSHOT_FILE, type PausedEvent, type PickerMode, type ProbeMatch, type ProbePinned, type ProbeResult, type ProbeResultEvent, RUNNER_CONFIG_KEYS, RUNS_SUBDIR, RUNTIME_FILE, RUN_INDEX_SCHEMA_VERSION, RUN_MANIFEST_FILE, RUN_SOURCES_FILE, type RecordedActionKind, type RegexLiteral, type ResumedEvent, type RunArtifact, type RunFinishedEvent, type RunId, type RunIndexEntry, type RunIndexHeader, type RunKind, type RunManifest, type RunMeta, type RunOutcome, type RunRequest, type RunSources, type RunStartedEvent, type RunStatus, RunnerAdapterNotFoundError, RunnerNotConfiguredError, type RuntimeState, type RuntimeStateFile, SCENARIOS_INDEX_DIR, SCENARIOS_LATEST_FILE, SCENARIO_RECENT_WINDOW, SECRETS_FILE, SEGMENT_NAME_FORBIDDEN_RE, SNAPSHOTS_SUBDIR, STDERR_FILE, STDOUT_FILE, STEPS_FILE, type ScenarioAnnotations, type ScenarioLatestEntry, type ScenarioMeta, type ScenarioRunRequest, type ScenarioRunTab, type ScenarioTab, type ScenariosLatest, type ScenariosPayload, type ScreenshotEvent, type SnapshotTab, type StepFailEvent, type StepOkEvent, type StepStartedEvent, TERMINAL_RUNTIME_STATES, TERMINAL_WS_EVENT, type TabKind, type TabKindName, type TerminalClientMessage, type TerminalCloseMessage, type TerminalDataMessage, type TerminalErrorMessage, type TerminalExitMessage, type TerminalKind, type TerminalOutputMessage, type TerminalResizeMessage, type TerminalServerMessage, type TerminalSpawnMessage, type ToolCallEvent, type ToolResultEvent, UNOTEST_DIR, UnplaceableRunIdError, UnsupportedRunKindError, type VariableCategory, type VariableKind, type VariablePlanError, type WheelChangedEvent, type WsMessage, type WsMessageKind, activeEnvName, blobPathFor, blobRelPathFor, blobRelSegmentsFor, blobsRootFor, categorizeVariable, debugDirFor, debuggerFileFor, deleteShadowWarning, envFileFor, envKeys, envLayerFilesFor, envNamesFromDirListing, foldScenarioRun, insertEnvVar, isAnnotationLine, isExternalVarName, isFailingStatus, isRegexLiteral, isRunnerConfigKey, isRunsDirName, isTerminalRuntimeState, makeRunId, parseAppServerEvent, parseEnvContent, parseScenarioAnnotations, planAddVariable, projectRunDirFor, projectRunsRoot, regexLiteral, removeEnvVar, requireRunDirFor, runDirFor, runIdStartedAt, runsDirFor, sanitizeRunIdSegment, scenarioIndexFileName, scenarioRefFromFileName, secretsFileFor, secretsLayerFilesFor, serializeEnvValue, shardDaysDescending, shardDirFor, shardPathForRunId, shardPathForTimestamp, testDirFor, validateCollectionName, validateSegmentName };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x26a9f7=_0x50d8;(function(_0x1f4776,_0xd60d20){const _0xf48938={_0x4828c5:0x1dc,_0x1f23d6:0x160,_0x342044:0x1d3,_0x163c9d:0x17d,_0x5c07b9:0x15a,_0x2c9de2:0x156,_0x4837df:0x14f},_0x1a9553=_0x50d8,_0x39c210=_0x1f4776();while(!![]){try{const _0x215581=parseInt(_0x1a9553(_0xf48938._0x4828c5))/0x1+parseInt(_0x1a9553(_0xf48938._0x1f23d6))/0x2*(-parseInt(_0x1a9553(_0xf48938._0x342044))/0x3)+-parseInt(_0x1a9553(_0xf48938._0x163c9d))/0x4*(-parseInt(_0x1a9553(_0xf48938._0x5c07b9))/0x5)+-parseInt(_0x1a9553(_0xf48938._0x2c9de2))/0x6+parseInt(_0x1a9553(0x1d2))/0x7+-parseInt(_0x1a9553(0x16c))/0x8*(parseInt(_0x1a9553(_0xf48938._0x4837df))/0x9)+parseInt(_0x1a9553(0x198))/0xa;if(_0x215581===_0xd60d20)break;else _0x39c210['push'](_0x39c210['shift']());}catch(_0x7dd21){_0x39c210['push'](_0x39c210['shift']());}}}(_0x23ed,0x4a78f));var __defProp=Object[_0x26a9f7(0x190)],__name=(_0x3f8720,_0x26d93d)=>__defProp(_0x3f8720,_0x26a9f7(0x150),{'value':_0x26d93d,'configurable':!![]});function parseAppServerEvent(_0x244302){const _0x38d514={_0x5c04f2:0x1af,_0x224d58:0x153,_0x2a965c:0x153},_0x50741d=_0x26a9f7,_0x1ffe7e=_0x244302[_0x50741d(_0x38d514._0x5c04f2)]();if(!_0x1ffe7e[_0x50741d(0x16b)]('{'))return null;try{const _0x41a068=JSON['parse'](_0x1ffe7e);if(_0x41a068[_0x50741d(_0x38d514._0x224d58)]==='app-server:ready'||_0x41a068[_0x50741d(_0x38d514._0x2a965c)]===_0x50741d(0x167)||_0x41a068[_0x50741d(0x153)]===_0x50741d(0x13e))return _0x41a068;return null;}catch{return null;}}__name(parseAppServerEvent,_0x26a9f7(0x16e));var UNOTEST_DIR=_0x26a9f7(0x1d7),E2E_SUBDIR=_0x26a9f7(0x13f),HELPERS_SUBDIR=_0x26a9f7(0x185),COLLECTIONS_SUBDIR=_0x26a9f7(0x1ab),RUNS_SUBDIR=_0x26a9f7(0x178),SNAPSHOTS_SUBDIR=_0x26a9f7(0x1d0);function testDirFor(_0x423b4d){return''+E2E_SUBDIR+_0x423b4d;}__name(testDirFor,_0x26a9f7(0x1a1));function runsDirFor(_0x4e7bfb){return''+RUNS_SUBDIR+_0x4e7bfb;}__name(runsDirFor,'runsDirFor');function debugDirFor(_0x526064){return'.debug'+_0x526064;}__name(debugDirFor,_0x26a9f7(0x1c9));function debuggerFileFor(_0x209ba2){const _0x52d8a3={_0x19755d:0x1c3},_0x58fe30=_0x26a9f7;return UNOTEST_DIR+_0x58fe30(_0x52d8a3._0x19755d)+_0x209ba2+_0x58fe30(0x13a);}__name(debuggerFileFor,_0x26a9f7(0x15e));var LOCK_FILE=_0x26a9f7(0x163),LOG_FILE='.viewer.log',STEPS_FILE=_0x26a9f7(0x176),HEARTBEAT_FILE=_0x26a9f7(0x17c),DAY_INDEX_FILE=_0x26a9f7(0x170),SCENARIOS_INDEX_DIR='_scenarios',SCENARIOS_LATEST_FILE='_latest.json',STDOUT_FILE=_0x26a9f7(0x1bf),STDERR_FILE=_0x26a9f7(0x191),COMMANDS_FILE='commands.jsonl',RUNTIME_FILE='runtime.json',PICKER_SNAPSHOT_FILE=_0x26a9f7(0x169),ENV_FILE=_0x26a9f7(0x1db),SECRETS_FILE='unotest/.secrets';function envFileFor(_0x169959,_0x205168){return''+ENV_FILE+_0x169959+(_0x205168?'.'+_0x205168:'');}__name(envFileFor,_0x26a9f7(0x1aa));function secretsFileFor(_0x309da0,_0x231b3f){return''+SECRETS_FILE+_0x309da0+(_0x231b3f?'.'+_0x231b3f:'');}__name(secretsFileFor,_0x26a9f7(0x1d8));function envLayerFilesFor(_0x377358,_0x296a5e){return layersFor(ENV_FILE,_0x377358,_0x296a5e);}__name(envLayerFilesFor,_0x26a9f7(0x1ce));function secretsLayerFilesFor(_0x3213e6,_0x2229d9){return layersFor(SECRETS_FILE,_0x3213e6,_0x2229d9);}__name(secretsLayerFilesFor,_0x26a9f7(0x155));function layersFor(_0x24d1f4,_0x37a42a,_0x51fb33){const _0x3ce6dd={_0x13b6a6:0x162,_0x325ab4:0x162},_0x5bc778=_0x26a9f7,_0x40a12b=[_0x24d1f4];if(_0x37a42a)_0x40a12b[_0x5bc778(_0x3ce6dd._0x13b6a6)](''+_0x24d1f4+_0x37a42a);if(_0x51fb33){_0x40a12b[_0x5bc778(_0x3ce6dd._0x325ab4)](_0x24d1f4+'.'+_0x51fb33);if(_0x37a42a)_0x40a12b[_0x5bc778(0x162)](''+_0x24d1f4+_0x37a42a+'.'+_0x51fb33);}return _0x40a12b;}__name(layersFor,'layersFor');function activeEnvName(_0x3484f8){const _0x298a23=_0x26a9f7,_0x1d94e3=_0x3484f8['UNOTEST_ENV']?.[_0x298a23(0x1af)]();return _0x1d94e3?_0x1d94e3:void 0x0;}__name(activeEnvName,_0x26a9f7(0x1cf));function isRegexLiteral(_0x254fa4){const _0x1e363d=_0x26a9f7;return typeof _0x254fa4==='object'&&_0x254fa4!==null&&_0x254fa4['kind']===_0x1e363d(0x1c5)&&typeof _0x254fa4[_0x1e363d(0x1a6)]==='string'&&typeof _0x254fa4[_0x1e363d(0x139)]===_0x1e363d(0x1cd);}__name(isRegexLiteral,_0x26a9f7(0x140));function regexLiteral(_0x181b2c,_0x3bd0f6=''){const _0x3773bb=_0x26a9f7;return{'kind':_0x3773bb(0x1c5),'source':_0x181b2c,'flags':_0x3bd0f6};}__name(regexLiteral,_0x26a9f7(0x1ac));var RAND_BYTES=0x6;function makeRunId(_0x429123){const _0x317a5b={_0x27ec06:0x1b3,_0x8f9416:0x1a5,_0x30f642:0x1c2,_0x26d031:0x187},_0x34c0e3=_0x26a9f7,_0x11f8af=sanitizeRunIdSegment(_0x429123),_0x4c4990=Date[_0x34c0e3(0x154)]()[_0x34c0e3(0x1c2)](0x24),_0xd4d967=new Uint8Array(RAND_BYTES);globalThis[_0x34c0e3(_0x317a5b._0x27ec06)][_0x34c0e3(0x1cb)](_0xd4d967);let _0x577920='';for(let _0x252319=0x0;_0x252319<_0xd4d967[_0x34c0e3(_0x317a5b._0x8f9416)];_0x252319++){_0x577920+=_0xd4d967[_0x252319][_0x34c0e3(_0x317a5b._0x30f642)](0x10)[_0x34c0e3(_0x317a5b._0x26d031)](0x2,'0');}return _0x11f8af+'-'+_0x4c4990+'-'+_0x577920;}__name(makeRunId,_0x26a9f7(0x14d));function sanitizeRunIdSegment(_0x4281d9){const _0x465afe={_0x3663ec:0x1b9,_0x13f8eb:0x14a},_0x2e93e3=_0x26a9f7,_0x638f07=_0x4281d9[_0x2e93e3(0x1b9)](/[^a-zA-Z0-9_-]+/g,'-')[_0x2e93e3(0x1b9)](/-+/g,'-')[_0x2e93e3(_0x465afe._0x3663ec)](/^-|-$/g,'');return _0x638f07[_0x2e93e3(0x1a5)]>0x0?_0x638f07:_0x2e93e3(_0x465afe._0x13f8eb);}__name(sanitizeRunIdSegment,_0x26a9f7(0x19d));var RANDOM_SUFFIX_RE=/^[0-9a-f]{6,}$/,MIN_PLAUSIBLE_MS=Date[_0x26a9f7(0x175)](0x7e4,0x0,0x1),MAX_PLAUSIBLE_MS=Date[_0x26a9f7(0x175)](0x834,0x0,0x1);function runIdStartedAt(_0x255be4){const _0x3e32d2={_0x21ac2b:0x15c,_0x34abc9:0x18e,_0x3c3354:0x1a5},_0x2ecf28=_0x26a9f7,_0x3253fd=_0x255be4[_0x2ecf28(_0x3e32d2._0x21ac2b)]('-');if(_0x3253fd[_0x2ecf28(0x1a5)]<0x3)return null;const _0x3d5ac4=_0x3253fd[_0x3253fd[_0x2ecf28(0x1a5)]-0x1];if(!RANDOM_SUFFIX_RE[_0x2ecf28(_0x3e32d2._0x34abc9)](_0x3d5ac4))return null;const _0x1aa614=_0x3253fd[_0x3253fd[_0x2ecf28(_0x3e32d2._0x3c3354)]-0x2];if(!/^[0-9a-z]+$/[_0x2ecf28(_0x3e32d2._0x34abc9)](_0x1aa614))return null;const _0x1fb4fd=parseInt(_0x1aa614,0x24);if(!Number['isFinite'](_0x1fb4fd))return null;if(_0x1fb4fd<MIN_PLAUSIBLE_MS||_0x1fb4fd>=MAX_PLAUSIBLE_MS)return null;return _0x1fb4fd;}__name(runIdStartedAt,_0x26a9f7(0x189));function shardPathForTimestamp(_0x2a3270){const _0x1db2cc={_0x4f472b:0x187},_0x43497c=_0x26a9f7,_0x4d7a2e=new Date(_0x2a3270),_0x318e8e=String(_0x4d7a2e[_0x43497c(0x1b8)]())['padStart'](0x4,'0'),_0x4941b5=String(_0x4d7a2e['getUTCMonth']()+0x1)[_0x43497c(_0x1db2cc._0x4f472b)](0x2,'0'),_0x4af500=String(_0x4d7a2e[_0x43497c(0x18a)]())[_0x43497c(0x187)](0x2,'0');return _0x318e8e+'/'+_0x4941b5+'/'+_0x4af500;}__name(shardPathForTimestamp,'shardPathForTimestamp');function shardPathForRunId(_0x2f1a00){const _0x16ebd1=runIdStartedAt(_0x2f1a00);return _0x16ebd1===null?null:shardPathForTimestamp(_0x16ebd1);}__name(shardPathForRunId,_0x26a9f7(0x1ba));function runDirFor(_0x37769a,_0x2bade2){const _0x322370=shardPathForRunId(_0x2bade2);return _0x322370===null?null:_0x37769a+'/'+_0x322370+'/'+_0x2bade2;}__name(runDirFor,'runDirFor');var UnplaceableRunIdError=class extends Error{static{__name(this,_0x26a9f7(0x179));}constructor(_0xdfbc59){const _0x1e93d6={_0x96abe1:0x1ad,_0x385946:0x150},_0x37edab=_0x26a9f7;super(_0x37edab(_0x1e93d6._0x96abe1)+_0xdfbc59),this[_0x37edab(_0x1e93d6._0x385946)]='UnplaceableRunIdError';}};function requireRunDirFor(_0x38c6b0,_0x4d87f9){const _0x5e78d9=runDirFor(_0x38c6b0,_0x4d87f9);if(_0x5e78d9===null)throw new UnplaceableRunIdError(_0x4d87f9);return _0x5e78d9;}__name(requireRunDirFor,_0x26a9f7(0x1b5));function projectRunsRoot(_0x11207d=''){return UNOTEST_DIR+'/'+runsDirFor(_0x11207d);}__name(projectRunsRoot,_0x26a9f7(0x1c0));function projectRunDirFor(_0x6ccc56,_0x4e08ef=''){return requireRunDirFor(projectRunsRoot(_0x4e08ef),_0x6ccc56);}__name(projectRunDirFor,_0x26a9f7(0x18b));function shardDirFor(_0x1044c1,_0x347c42){return _0x1044c1+'/'+shardPathForTimestamp(_0x347c42);}__name(shardDirFor,'shardDirFor');function*shardDaysDescending(_0x2e57a6,_0x587df3,_0x43a097){const _0x369d65={_0x1882e8:0x1be},_0x35d6f2=_0x26a9f7,_0x50821e=0x5265c00;let _0x318b8a=Math[_0x35d6f2(_0x369d65._0x1882e8)](_0x587df3/_0x50821e)*_0x50821e;for(let _0x56f4fa=0x0;_0x56f4fa<_0x43a097;_0x56f4fa++){yield shardDirFor(_0x2e57a6,_0x318b8a),_0x318b8a-=_0x50821e;}}__name(shardDaysDescending,_0x26a9f7(0x194));var RUN_INDEX_SCHEMA_VERSION=0x2,SCENARIO_RECENT_WINDOW=0xc;function isFailingStatus(_0x3eb19b){const _0x187513=_0x26a9f7;return _0x3eb19b==='failed'||_0x3eb19b===_0x187513(0x17e);}__name(isFailingStatus,'isFailingStatus');function foldScenarioRun(_0x46e48a,_0x337906){const _0x38f33d={_0x55267a:0x15b,_0x854a2b:0x1b0,_0x28adc1:0x15b,_0x29c7e8:0x143},_0x1e7faf=_0x26a9f7,_0x14d182={'lastRunId':_0x337906['runId'],'lastStatus':_0x337906[_0x1e7faf(0x182)],'lastAt':_0x337906[_0x1e7faf(_0x38f33d._0x55267a)],'lastDurationMs':_0x337906['durationMs'],'recent':[..._0x46e48a?.['recent']??[],_0x337906['status']][_0x1e7faf(_0x38f33d._0x854a2b)](-SCENARIO_RECENT_WINDOW)};if(!isFailingStatus(_0x337906[_0x1e7faf(0x182)]))return{..._0x14d182,'failStreak':0x0,'failingSince':null};const _0x4ed884=(_0x46e48a?.[_0x1e7faf(0x164)]??0x0)+0x1;return{..._0x14d182,'failStreak':_0x4ed884,'failingSince':_0x4ed884===0x1?_0x337906[_0x1e7faf(_0x38f33d._0x28adc1)]:_0x46e48a?.[_0x1e7faf(_0x38f33d._0x29c7e8)]??_0x337906[_0x1e7faf(0x15b)]};}__name(foldScenarioRun,'foldScenarioRun');function scenarioIndexFileName(_0x3193cb){return encodeURIComponent(_0x3193cb)+'.jsonl';}__name(scenarioIndexFileName,'scenarioIndexFileName');function scenarioRefFromFileName(_0x238fea){const _0x332173={_0x4ebd4e:0x168},_0x466b18=_0x26a9f7;if(!_0x238fea[_0x466b18(0x1d9)](_0x466b18(0x168)))return null;try{return decodeURIComponent(_0x238fea[_0x466b18(0x1b0)](0x0,-_0x466b18(_0x332173._0x4ebd4e)[_0x466b18(0x1a5)]));}catch{return null;}}__name(scenarioRefFromFileName,_0x26a9f7(0x1b1));var BLOBS_DIR=_0x26a9f7(0x1d1),GENERATION_SEP='~',HASH_RE=/^[0-9a-f]{8,}$/,InvalidBlobHashError=class extends Error{static{__name(this,_0x26a9f7(0x18c));}constructor(_0x131747){const _0x3d265a={_0x59757f:0x18c},_0x2e13a9=_0x26a9f7;super('blob\x20hash\x20must\x20be\x20lowercase\x20hex,\x20got:\x20'+_0x131747),this['name']=_0x2e13a9(_0x3d265a._0x59757f);}};function blobPathFor(_0x36d382,_0x5bcc52,_0x533a40,_0x4c2044=0x0){return _0x36d382+'/'+blobRelPathFor(_0x5bcc52,_0x533a40,_0x4c2044);}__name(blobPathFor,_0x26a9f7(0x199));function blobRelSegmentsFor(_0x4bb78b,_0x4c31ee,_0x47d7dd=0x0){const _0x33b30a={_0x38c059:0x1b0},_0x178550=_0x26a9f7;if(!HASH_RE[_0x178550(0x18e)](_0x4bb78b))throw new InvalidBlobHashError(_0x4bb78b);const _0x4c9f1b=_0x47d7dd>0x0?''+GENERATION_SEP+_0x47d7dd:'';return[BLOBS_DIR,_0x4bb78b[_0x178550(0x1b0)](0x0,0x2),_0x4bb78b[_0x178550(_0x33b30a._0x38c059)](0x2,0x4),''+_0x4bb78b+_0x4c9f1b+'.'+_0x4c31ee];}__name(blobRelSegmentsFor,_0x26a9f7(0x166));function blobRelPathFor(_0x3beebe,_0x2934c1,_0x343efc=0x0){const _0x289efe={_0x51d214:0x1b6},_0x131b2b=_0x26a9f7;return blobRelSegmentsFor(_0x3beebe,_0x2934c1,_0x343efc)[_0x131b2b(_0x289efe._0x51d214)]('/');}function _0x50d8(_0x318b5c,_0x5c1012){_0x318b5c=_0x318b5c-0x138;const _0x23ed44=_0x23ed();let _0x50d882=_0x23ed44[_0x318b5c];if(_0x50d8['ggmuNn']===undefined){var _0x119f37=function(_0x5e8129){const _0x45894f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3f8720='',_0x26d93d='';for(let _0x244302=0x0,_0x1ffe7e,_0x41a068,_0x423b4d=0x0;_0x41a068=_0x5e8129['charAt'](_0x423b4d++);~_0x41a068&&(_0x1ffe7e=_0x244302%0x4?_0x1ffe7e*0x40+_0x41a068:_0x41a068,_0x244302++%0x4)?_0x3f8720+=String['fromCharCode'](0xff&_0x1ffe7e>>(-0x2*_0x244302&0x6)):0x0){_0x41a068=_0x45894f['indexOf'](_0x41a068);}for(let _0x4e7bfb=0x0,_0x526064=_0x3f8720['length'];_0x4e7bfb<_0x526064;_0x4e7bfb++){_0x26d93d+='%'+('00'+_0x3f8720['charCodeAt'](_0x4e7bfb)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x26d93d);};_0x50d8['vNTGtH']=_0x119f37,_0x50d8['gVRSiF']={},_0x50d8['ggmuNn']=!![];}const _0x52991f=_0x23ed44[0x0],_0x590198=_0x318b5c+_0x52991f,_0x12e1fe=_0x50d8['gVRSiF'][_0x590198];return!_0x12e1fe?(_0x50d882=_0x50d8['vNTGtH'](_0x50d882),_0x50d8['gVRSiF'][_0x590198]=_0x50d882):_0x50d882=_0x12e1fe,_0x50d882;}__name(blobRelPathFor,'blobRelPathFor');function blobsRootFor(_0x39bf06){return _0x39bf06+'/'+BLOBS_DIR;}__name(blobsRootFor,_0x26a9f7(0x158));var FS_UNSAFE_NAME_RE=/[\\/:*?"<>|\x00-\x1f]/;function validateFsSafeName(_0x2f31e4,_0x3ff0d){const _0x4f2eeb={_0x198a0e:0x1af,_0x18abc2:0x1c7,_0x4ecaa6:0x16b,_0x17c8d1:0x171},_0x2d52c0=_0x26a9f7;if(typeof _0x2f31e4!==_0x2d52c0(0x1cd))return _0x2d52c0(0x174);const _0x59eeee=_0x2f31e4[_0x2d52c0(_0x4f2eeb._0x198a0e)]();if(_0x59eeee[_0x2d52c0(0x1a5)]===0x0)return _0x2d52c0(0x151);if(_0x59eeee==='.'||_0x59eeee==='..')return'must\x20not\x20be\x20\x22.\x22\x20or\x20\x22..\x22';if(_0x59eeee[_0x2d52c0(0x16b)]('.'))return _0x2d52c0(_0x4f2eeb._0x18abc2);if(_0x3ff0d?.[_0x2d52c0(0x1a4)]&&_0x59eeee[_0x2d52c0(_0x4f2eeb._0x4ecaa6)]('_'))return _0x2d52c0(_0x4f2eeb._0x17c8d1);if(FS_UNSAFE_NAME_RE[_0x2d52c0(0x18e)](_0x59eeee))return _0x2d52c0(0x14b);return null;}__name(validateFsSafeName,_0x26a9f7(0x15d));var COLLECTION_NAME_FORBIDDEN_RE=FS_UNSAFE_NAME_RE;function _0x23ed(){const _0x569548=['C2HHCMrqyxrOrM9YuNvUswq','Dw5VDgvZDc8UC2vJCMv0CW','igLZig5VDcbHigTUB3DUihj1BM5LCIbZzxr0Aw5NiokaLcbJAg9VC2uGB25LigzYB20GDgHLihj1BM5LCI1JB25MAwCGBgLZDc4','CgfYC2vfBNzdB250zw50','zMXVB3i','C3rKB3v0lMXVzW','ChjVAMvJDfj1BNnsB290','rK9sq0vFq09mt1i','Dg9tDhjPBMC','lY5Kzwj1z2DLCG','CgXHBKfKzfzHCMLHyMXL','CMvNzxG','vu5pvevtvf9mt0DFtevwruW','BxvZDcbUB3qGC3rHCNqGD2L0AcaNlIC','Dg9mB3DLCKnHC2u','zgvIDwDeAxjgB3i','C3bSAxrmAw5LCW','z2v0uMfUzg9TvMfSDwvZ','vu5pvevtvf9erujvr19quKvwsuvxx0jzvevt','C3rYAw5N','zw52tgf5zxjgAwXLC0zVCG','ywn0AxzLrw52tMfTzq','lNnUyxbZAg90CW','x2jSB2jZ','ntm0mdCYvxH4wMPX','mtmYmdnpsev2vu4','uNvUBMvYqwrHChrLCK5VDezVDw5KrxjYB3i','iYaTls0G','C291CMnLCY5QC29U','Dw5VDgvZDa','C2vJCMv0C0zPBgvgB3i','zw5KC1DPDgG','zMLSDgvY','Dw5VDgvZDc8Uzw52','mtGYnJG5rhHqwLLc','igfSCMvHzhKGzxHPC3rZigLUia','vu5pvevtvf9dt05tt0Xf','ic0Tlq','zMXHz3m','lMPZB24','tK9Fq09mt1i','vu5pvevtvf9erujvr19esvi','zw52s2v5CW','yxbWlxnLCNzLCJPLCNjVCG','ztjL','AxnszwDLEeXPDgvYywW','vu5pvevtvf9erujvr19nqvHFqLLurvm','zhvWBgLJyxrL','zMfPBgLUz1nPBMnL','igLZigfSC28GC2v0igLUihvUB3rLC3qVlMvUDIdIGjqGDgHLihnLy3jLDcb2ywX1zsbUB3CGC2HHzg93CYbPDc4','vu5pvevtvf9dqunirv9esvi','y2f0zwDVCML6zvzHCMLHyMXL','CgfYC2vty2vUyxjPB0fUBM90yxrPB25Z','iI4G','AM9PBKXPBMvZ','CNvU','BxvZDcbUB3qGy29UDgfPBIbCic8GoIaQid8GiIa8id4GFcbVCIbJB250CM9SignOyxjHy3rLCNm','vw5ZDxbWB3j0zwrsDw5lAw5KrxjYB3i','BwfRzvj1BKLK','uNvUBMvY','mtHsCu1TtNa','BMfTzq','BxvZDcbUB3qGyMuGzw1WDhK','BwfUAwzLC3qUANnVBG','A2LUza','BM93','C2vJCMv0C0XHEwvYrMLSzxngB3i','mJeYntq2ng5ltLbetG','C3bSAwnL','yMXVyNnsB290rM9Y','Aw52ywXPzc1Uyw1L','mtvNtK5VDuu','C3rHCNrLzef0','C3bSAxq','DMfSAwrHDgvgC1nHzMvoyw1L','zgvIDwDNzxjgAwXLrM9Y','DMfSAwrHDgvtzwDTzw50tMfTzq','mJC0Cw9dA2zc','AxnbC3nPz25Tzw50t2y','ChvZAa','lNzPzxDLCI5SB2nR','zMfPBfn0CMvHAW','y29TCgXLDgvK','yMXVyLjLBfnLz21LBNrZrM9Y','yxbWlxnLCNzLCJPYzxvZzwq','lMPZB25S','CgLJA2vYlxnUyxbZAg90lNr4Da','AxnbBM5VDgf0Aw9UtgLUzq','C3rHCNrZv2L0Aa','ntq0oteYru14Evn1','refuqujbu0vFvvjm','CgfYC2vbChbtzxj2zxjfDMvUDa','yxnZAwDUBwvUDevUDhjPzxm','x2rHEs5QC29UBa','BxvZDcbUB3qGC3rHCNqGD2L0AcaNxYCGkhjLC2vYDMvKkq','uNvUBMvYtM90q29UzMLNDxjLzevYCM9Y','vu5pvevtvf9iruferuq','BxvZDcbIzsbHihn0CMLUzW','vvrd','C3rLChmUANnVBMW','C2vJCMv0C0nVBNrLBNq','lNj1BNm','vw5WBgfJzwfIBgvsDw5jzevYCM9Y','Aw5Zzxj0rw52vMfY','AgfZ','AgvHCNrIzwf0','nJq1mtG4rK9ouxvz','Aw50zxjYDxb0zwq','vu5pvevtvf9usu1fwK9orq','zw52','zMfPBgvK','C3rHDhvZ','CNvUBMvY','ywjVCNrLza','x2HLBhbLCNm','y2fUBM90igXVywqGCNvUBMvYigfKyxb0zxiGiG','CgfKu3rHCNq','vu5pvevtvf9cuK9xu0vs','CNvUswrtDgfYDgvKqxq','z2v0vvrdrgf0zq','ChjVAMvJDfj1BKrPCKzVCG','sw52ywXPzejSB2jiyxnOrxjYB3i','C2vYAwfSAxPLrw52vMfSDwu','DgvZDa','AxnsDw5UzxjdB25MAwDlzxK','zgvMAw5LuhjVCgvYDhK','C3rKzxjYlMXVzW','zMLUzeLUzgv4','vu5pvevtvf9erujvr19ive1mx01bwf9cwvrfuW','C2HHCMreyxLZrgvZy2vUzgLUzW','ywrK','zw52q29UDgvUDa','C2vJCMv0','nJu1ntCYmfDNtKLxrW','yMXVyLbHDgHgB3i','qxbW','AxnbC3nPz25Tzw50tgLUzq','Aw5KzxHpzG','C2fUAxrPEMvsDw5jzfnLz21LBNq','Axntzwn0Aw9UrgL2AwrLCG','AxnfEhrLCM5HBfzHCK5HBwu','DgvYBwLUywW','DgvZDerPCKzVCG','vu5pvevtvf9erujvr19lruvqx0nbteXt','vu5pvevtvf9eruzbvuXux05bvKLhqvrjt05FveLnru9vvf9nuW','CMvZzxj2zwrvBMrLCNnJB3jL','BgvUz3rO','C291CMnL','zgvSzxrLu2HHzg93v2fYBMLUzW','CNvUBMvYici','CMvTB3zLrw52vMfY','zw52rMLSzuzVCG','x2nVBgXLy3rPB25Z','CMvNzxHmAxrLCMfS','CNvUswqGy2fYCMLLCYbUBYb0Aw1LC3rHBxaSignHBM5VDcbWBgfJzsbPDcbPBIbHihnOyxjKoIa','C2vJCMv0CW','DhjPBq','C2XPy2u','C2nLBMfYAw9szwzgCM9TrMLSzu5HBwu','igLZigfSC28GC2v0igLUihLVDxiGC2HLBgWGzw52AxjVBM1LBNqG4OcuigL0ihDPBgWGA2vLCcbYzxnVBhzPBMCGzNjVBsb0AgvYzsaODgHLigvUDMLYB25Tzw50ihDPBNmGB3zLCIb0AguGzMLSzsKU','y3j5ChrV','Bwf0y2G','CMvXDwLYzvj1BKrPCKzVCG','AM9PBG','vu5pvevtvf9mt0nbteu','z2v0vvrdrNvSBfLLyxi','CMvWBgfJzq'];_0x23ed=function(){return _0x569548;};return _0x23ed();}function validateCollectionName(_0x4c3c69){return validateFsSafeName(_0x4c3c69);}__name(validateCollectionName,'validateCollectionName');var RUN_MANIFEST_FILE=_0x26a9f7(0x152),RUN_SOURCES_FILE=_0x26a9f7(0x1d6),UnsupportedRunKindError=class extends Error{static{__name(this,'UnsupportedRunKindError');}constructor(_0x485c55,_0x4ec1a1){const _0x372872={_0x997269:0x1a8,_0x25987d:0x14c},_0x480ddc=_0x26a9f7;super(_0x480ddc(_0x372872._0x997269)+_0x4ec1a1+'\x22\x20does\x20not\x20support\x20run\x20kind\x20\x22'+_0x485c55+'\x22'),this[_0x480ddc(0x150)]=_0x480ddc(_0x372872._0x25987d);}},RunnerAdapterNotFoundError=class extends Error{static{__name(this,_0x26a9f7(0x1d4));}constructor(_0x4b03b7,_0x5c57ac){const _0x39cd4c=_0x26a9f7;super(_0x39cd4c(0x186)+_0x4b03b7+_0x39cd4c(0x148)+_0x5c57ac),this[_0x39cd4c(0x150)]=_0x39cd4c(0x1d4);}},RunnerNotConfiguredError=class extends Error{static{__name(this,_0x26a9f7(0x172));}constructor(_0x11bd0e){const _0x201f79=_0x26a9f7;super(_0x11bd0e),this['name']=_0x201f79(0x172);}},EXPECT_FAIL_ANNOTATION='expect-fail',ANNOTATION_RE=/^\s*\/\/\s*@([a-z0-9-]+)\s*$/;function isAnnotationLine(_0x3397f4){const _0x4836fe={_0x59a3cc:0x18e},_0x53d72a=_0x26a9f7;return ANNOTATION_RE[_0x53d72a(_0x4836fe._0x59a3cc)](_0x3397f4);}__name(isAnnotationLine,_0x26a9f7(0x16a));function parseScenarioAnnotations(_0x21c8ba){const _0x1c33ae={_0x20a4af:0x15c,_0x245581:0x16b,_0x49d193:0x1b4,_0x36d34d:0x17b},_0x547657=_0x26a9f7,_0x1cd0a1=new Set();for(const _0x209c2c of _0x21c8ba[_0x547657(_0x1c33ae._0x20a4af)](/\r?\n/)){const _0x2e4644=_0x209c2c['trim']();if(_0x2e4644==='')continue;if(!_0x2e4644[_0x547657(_0x1c33ae._0x245581)]('//'))break;const _0x42bb92=_0x2e4644[_0x547657(_0x1c33ae._0x49d193)](ANNOTATION_RE);if(_0x42bb92)_0x1cd0a1[_0x547657(0x195)](_0x42bb92[0x1]);}return{'expectFail':_0x1cd0a1[_0x547657(_0x1c33ae._0x36d34d)](EXPECT_FAIL_ANNOTATION)};}__name(parseScenarioAnnotations,_0x26a9f7(0x147));var SEGMENT_NAME_FORBIDDEN_RE=FS_UNSAFE_NAME_RE;function validateSegmentName(_0x57aac2){return validateFsSafeName(_0x57aac2,{'reservedUnderscore':!![]});}__name(validateSegmentName,_0x26a9f7(0x15f));var TERMINAL_WS_EVENT=_0x26a9f7(0x1a0),RUNNER_CONFIG_KEYS=new Set([_0x26a9f7(0x188),_0x26a9f7(0x173),'UNOTEST_SLOW_MO','UNOTEST_DEFAULT_TIMEOUT_MS',_0x26a9f7(0x1a3),'UNOTEST_POPUP_GRACE_MS',_0x26a9f7(0x1b7),_0x26a9f7(0x17f),_0x26a9f7(0x1c6),'UNOTEST_DEBUG',_0x26a9f7(0x13c),_0x26a9f7(0x141),_0x26a9f7(0x1cc),_0x26a9f7(0x193),_0x26a9f7(0x1a2),'UNOTEST_NETWORK',_0x26a9f7(0x1de),_0x26a9f7(0x145),_0x26a9f7(0x13b),_0x26a9f7(0x1c1),_0x26a9f7(0x16d)]);function isRunnerConfigKey(_0x67da98){const _0x46cde5=_0x26a9f7;return RUNNER_CONFIG_KEYS[_0x46cde5(0x17b)](_0x67da98);}__name(isRunnerConfigKey,_0x26a9f7(0x18f));function categorizeVariable(_0x5a1eef){const _0x5bef92={_0x5bbcd8:0x150},_0xf56827=_0x26a9f7;if(_0x5a1eef['source']===_0xf56827(0x1ae))return _0xf56827(0x197);return isRunnerConfigKey(_0x5a1eef[_0xf56827(_0x5bef92._0x5bbcd8)])?_0xf56827(0x183):'app';}__name(categorizeVariable,_0x26a9f7(0x146));function isExternalVarName(_0x2cdd6e){const _0x9f76ef=_0x26a9f7;return/^[A-Z][A-Z0-9_]*$/[_0x9f76ef(0x18e)](_0x2cdd6e);}__name(isExternalVarName,_0x26a9f7(0x19f));var ENV_KEY_RE=/^[A-Za-z_][A-Za-z0-9_]*$/;function*assignmentEntries(_0x25491b){const _0x5bdc3c={_0x535dd9:0x16b,_0x2403eb:0x19c,_0x51b968:0x1af,_0x4d0bef:0x18e},_0x4ff4c5=_0x26a9f7;for(const _0x1a7585 of _0x25491b[_0x4ff4c5(0x15c)](/\r?\n/)){const _0xcf7188=_0x1a7585[_0x4ff4c5(0x1af)]();if(_0xcf7188===''||_0xcf7188[_0x4ff4c5(_0x5bdc3c._0x535dd9)]('#'))continue;const _0x453572=_0xcf7188[_0x4ff4c5(_0x5bdc3c._0x2403eb)]('=');if(_0x453572<=0x0)continue;const _0x24fc88=_0xcf7188[_0x4ff4c5(0x1b0)](0x0,_0x453572)[_0x4ff4c5(_0x5bdc3c._0x51b968)]();if(!ENV_KEY_RE[_0x4ff4c5(_0x5bdc3c._0x4d0bef)](_0x24fc88))continue;yield[_0x24fc88,_0xcf7188[_0x4ff4c5(0x1b0)](_0x453572+0x1)[_0x4ff4c5(_0x5bdc3c._0x51b968)]()];}}__name(assignmentEntries,_0x26a9f7(0x16f));function parseEnvContent(_0x38733f){const _0xce1201=_0x26a9f7,_0x3a0a8c={};for(const [_0x57ba37,_0xfe3faf]of assignmentEntries(_0x38733f)){let _0x2f6b46=_0xfe3faf;if(_0x2f6b46[_0xce1201(0x1a5)]>=0x2){const _0x5723b0=_0x2f6b46[0x0],_0x109264=_0x2f6b46[_0x2f6b46[_0xce1201(0x1a5)]-0x1];(_0x5723b0==='\x22'||_0x5723b0==='\x27')&&_0x5723b0===_0x109264&&(_0x2f6b46=_0x2f6b46['slice'](0x1,-0x1));}_0x3a0a8c[_0x57ba37]=_0x2f6b46;}return _0x3a0a8c;}__name(parseEnvContent,_0x26a9f7(0x1bd));function serializeEnvValue(_0xbc7854){const _0x2cb5d9={_0x3c1c9f:0x1b9},_0x13b47d=_0x26a9f7;if(_0xbc7854==='')return'';if(/[\s#"'=\\]|^[`]/[_0x13b47d(0x18e)](_0xbc7854)||/[\n\r]/['test'](_0xbc7854)){const _0x365f3e=_0xbc7854[_0x13b47d(_0x2cb5d9._0x3c1c9f)](/\\/g,'\x5c\x5c')['replace'](/"/g,'\x5c\x22')[_0x13b47d(_0x2cb5d9._0x3c1c9f)](/\n/g,'\x5cn')[_0x13b47d(0x1b9)](/\r/g,'\x5cr');return'\x22'+_0x365f3e+'\x22';}return _0xbc7854;}__name(serializeEnvValue,_0x26a9f7(0x18d));function envKeys(_0xa8069e){const _0x3ebdeb={_0x5db504:0x195},_0x5a2653=_0x26a9f7,_0x5c0a25=new Set();for(const [_0x203015]of assignmentEntries(_0xa8069e))_0x5c0a25[_0x5a2653(_0x3ebdeb._0x5db504)](_0x203015);return _0x5c0a25;}__name(envKeys,_0x26a9f7(0x13d));function isSectionDivider(_0x52939a){const _0x530cfc={_0x580518:0x16b},_0xe22c71=_0x26a9f7,_0x1fd9d6=_0x52939a['trim']();return _0x1fd9d6[_0xe22c71(_0x530cfc._0x580518)]('#')&&/---/[_0xe22c71(0x18e)](_0x1fd9d6);}__name(isSectionDivider,_0x26a9f7(0x19e));function isAssignmentLine(_0x53530d){const _0x223c40={_0x1abe30:0x1af,_0x50fd37:0x18e},_0x2e6374=_0x26a9f7,_0x3d5ebc=_0x53530d[_0x2e6374(_0x223c40._0x1abe30)]();if(_0x3d5ebc===''||_0x3d5ebc[_0x2e6374(0x16b)]('#'))return![];const _0x464265=_0x3d5ebc['indexOf']('=');return _0x464265>0x0&&ENV_KEY_RE[_0x2e6374(_0x223c40._0x50fd37)](_0x3d5ebc['slice'](0x0,_0x464265)[_0x2e6374(0x1af)]());}__name(isAssignmentLine,_0x26a9f7(0x19b));function isAssignmentOf(_0x48f48f,_0x2b59bb){const _0x52f22c=_0x26a9f7,_0x5cbd58=_0x48f48f[_0x52f22c(0x1af)]();if(_0x5cbd58===''||_0x5cbd58['startsWith']('#'))return![];const _0x3efa21=_0x5cbd58['indexOf']('=');if(_0x3efa21<=0x0)return![];return _0x5cbd58[_0x52f22c(0x1b0)](0x0,_0x3efa21)[_0x52f22c(0x1af)]()===_0x2b59bb;}__name(isAssignmentOf,_0x26a9f7(0x161));function splitLines(_0x58984f){const _0x527807={_0x3016c1:0x15c},_0x1f7c3f=_0x26a9f7,_0x33bb61=_0x58984f['endsWith']('\x0a'),_0x437983=_0x33bb61?_0x58984f[_0x1f7c3f(0x1b0)](0x0,-0x1):_0x58984f;return{'lines':_0x437983===''?[]:_0x437983[_0x1f7c3f(_0x527807._0x3016c1)]('\x0a'),'trailingNewline':_0x33bb61};}__name(splitLines,_0x26a9f7(0x1ca));function joinLines(_0x58d731,_0x44fa16){const _0x2e8af2=_0x58d731['join']('\x0a');return _0x44fa16||_0x2e8af2===''?_0x2e8af2+'\x0a':_0x2e8af2;}__name(joinLines,_0x26a9f7(0x149));function insertEnvVar(_0x565aa8,_0x286dde,_0x2afe6a,_0x3ca0ac){const _0x5bd8f1={_0x43aacb:0x1c8,_0x41357d:0x1a5,_0x1209bb:0x162,_0x297f4f:0x1d5},_0x27c644=_0x26a9f7,_0x39b334=_0x286dde+'='+serializeEnvValue(_0x2afe6a),{lines:_0xcca0b2,trailingNewline:_0x5f083e}=splitLines(_0x565aa8);if(_0x3ca0ac){const _0x2ca779=new RegExp('\x5cb'+_0x3ca0ac[_0x27c644(_0x5bd8f1._0x43aacb)]()+'\x5cb'),_0x538941=_0xcca0b2[_0x27c644(0x192)](_0x4d5adf=>isSectionDivider(_0x4d5adf)&&_0x2ca779[_0x27c644(0x18e)](_0x4d5adf[_0x27c644(0x1c8)]()));if(_0x538941!==-0x1){let _0x2bb90a=_0xcca0b2[_0x27c644(0x1a5)];for(let _0xb6d080=_0x538941+0x1;_0xb6d080<_0xcca0b2[_0x27c644(_0x5bd8f1._0x41357d)];_0xb6d080++){if(isSectionDivider(_0xcca0b2[_0xb6d080])){_0x2bb90a=_0xb6d080;break;}}let _0x26420a=-0x1,_0x440abf=-0x1;for(let _0x5141eb=_0x538941+0x1;_0x5141eb<_0x2bb90a;_0x5141eb++){if(_0xcca0b2[_0x5141eb]['trim']()!=='')_0x440abf=_0x5141eb;if(isAssignmentLine(_0xcca0b2[_0x5141eb]))_0x26420a=_0x5141eb;}const _0x3ecafc=_0x26420a>=0x0?_0x26420a:_0x440abf,_0x5d3894=_0x3ecafc>=0x0?_0x3ecafc+0x1:_0x538941+0x1;return _0xcca0b2[_0x27c644(0x157)](_0x5d3894,0x0,_0x39b334),joinLines(_0xcca0b2,_0x5f083e||_0xcca0b2['length']>0x0);}if(_0xcca0b2['length']>0x0)_0xcca0b2[_0x27c644(_0x5bd8f1._0x1209bb)]('');return _0xcca0b2['push'](_0x27c644(_0x5bd8f1._0x297f4f)+_0x3ca0ac+_0x27c644(0x138),_0x39b334),joinLines(_0xcca0b2,!![]);}return _0xcca0b2['push'](_0x39b334),joinLines(_0xcca0b2,!![]);}__name(insertEnvVar,_0x26a9f7(0x17a));function removeEnvVar(_0x5668ae,_0x31ccf5){const _0x43465a={_0x21c800:0x1da,_0x2dadce:0x1a5},_0x117c1e=_0x26a9f7,{lines:_0x4b68c4,trailingNewline:_0x3eda9b}=splitLines(_0x5668ae),_0x5670f7=_0x4b68c4[_0x117c1e(_0x43465a._0x21c800)](_0x3b1c35=>!isAssignmentOf(_0x3b1c35,_0x31ccf5)),_0x353c8e=_0x5670f7[_0x117c1e(_0x43465a._0x2dadce)]!==_0x4b68c4[_0x117c1e(_0x43465a._0x2dadce)];return{'content':joinLines(_0x5670f7,_0x3eda9b),'removed':_0x353c8e};}__name(removeEnvVar,_0x26a9f7(0x1a9));var SECTION_BY_KIND={'app':_0x26a9f7(0x19a),'runner':_0x26a9f7(0x14e),'secret':void 0x0};function planAddVariable(_0x2f8ee2){const _0x4c8abc={_0x23639b:0x183,_0x13e309:0x1bc,_0x5dcd7c:0x17b,_0x5643c0:0x177,_0x18e1d7:0x197,_0x388573:0x1ae,_0x1eb9ea:0x1db,_0x49ab77:0x142,_0x9cacc7:0x1dd},_0x34baa4=_0x26a9f7,{name:_0x563992,kind:_0x2ac0f2}=_0x2f8ee2;if(_0x2ac0f2===_0x34baa4(_0x4c8abc._0x23639b)){if(!isRunnerConfigKey(_0x563992))return{'ok':![],'code':'unknown-runner-key','message':_0x563992+_0x34baa4(_0x4c8abc._0x13e309)};}else{if(!isExternalVarName(_0x563992))return{'ok':![],'code':_0x34baa4(0x159),'message':_0x563992+'\x20must\x20be\x20UPPER_SNAKE\x20(e.g.\x20APP_BASE_URL)\x20so\x20a\x20scenario\x20can\x20reference\x20it\x20by\x20name.'};}const _0x13f19e=envKeys(_0x2f8ee2[_0x34baa4(0x196)])[_0x34baa4(_0x4c8abc._0x5dcd7c)](_0x563992),_0x177d13=envKeys(_0x2f8ee2[_0x34baa4(_0x4c8abc._0x5643c0)])['has'](_0x563992),_0x5c42d8=_0x2ac0f2===_0x34baa4(_0x4c8abc._0x18e1d7)?'secrets':_0x34baa4(0x180),_0x204622=_0x5c42d8==='secrets'?_0x177d13:_0x13f19e,_0x25a6e4=_0x5c42d8===_0x34baa4(_0x4c8abc._0x388573)?_0x34baa4(0x1bb):_0x34baa4(_0x4c8abc._0x1eb9ea);if(_0x204622)return{'ok':![],'code':_0x34baa4(_0x4c8abc._0x49ab77),'message':_0x563992+_0x34baa4(_0x4c8abc._0x9cacc7)+_0x25a6e4+'\x20—\x20pick\x20a\x20different\x20name\x20or\x20edit\x20the\x20existing\x20value.'};const _0x277ebf=[];return _0x2ac0f2===_0x34baa4(_0x4c8abc._0x18e1d7)&&_0x13f19e&&_0x277ebf[_0x34baa4(0x162)](_0x563992+_0x34baa4(0x144)),_0x2ac0f2!==_0x34baa4(_0x4c8abc._0x18e1d7)&&_0x177d13&&_0x277ebf[_0x34baa4(0x162)](_0x563992+'\x20is\x20also\x20set\x20in\x20unotest/.secrets\x20—\x20the\x20secret\x20value\x20shadows\x20this\x20one.'),{'ok':!![],'target':_0x5c42d8,'sectionLabel':SECTION_BY_KIND[_0x2ac0f2],'warnings':_0x277ebf};}__name(planAddVariable,_0x26a9f7(0x1c4));function deleteShadowWarning(_0x220b5a,_0x2874e0,_0x5ef179){const _0x2acd28={_0x1b728e:0x1b2},_0x28916f=_0x26a9f7;if(_0x5ef179!==void 0x0&&_0x5ef179!==_0x2874e0)return[_0x220b5a+_0x28916f(_0x2acd28._0x1b728e)];return[];}__name(deleteShadowWarning,_0x26a9f7(0x1a7));var TERMINAL_RUNTIME_STATES=[_0x26a9f7(0x165),_0x26a9f7(0x181),_0x26a9f7(0x184)];function isTerminalRuntimeState(_0x35ba46){return TERMINAL_RUNTIME_STATES['includes'](_0x35ba46);}__name(isTerminalRuntimeState,'isTerminalRuntimeState');export{BLOBS_DIR,COLLECTIONS_SUBDIR,COLLECTION_NAME_FORBIDDEN_RE,COMMANDS_FILE,DAY_INDEX_FILE,E2E_SUBDIR,ENV_FILE,EXPECT_FAIL_ANNOTATION,HEARTBEAT_FILE,HELPERS_SUBDIR,InvalidBlobHashError,LOCK_FILE,LOG_FILE,PICKER_SNAPSHOT_FILE,RUNNER_CONFIG_KEYS,RUNS_SUBDIR,RUNTIME_FILE,RUN_INDEX_SCHEMA_VERSION,RUN_MANIFEST_FILE,RUN_SOURCES_FILE,RunnerAdapterNotFoundError,RunnerNotConfiguredError,SCENARIOS_INDEX_DIR,SCENARIOS_LATEST_FILE,SCENARIO_RECENT_WINDOW,SECRETS_FILE,SEGMENT_NAME_FORBIDDEN_RE,SNAPSHOTS_SUBDIR,STDERR_FILE,STDOUT_FILE,STEPS_FILE,TERMINAL_RUNTIME_STATES,TERMINAL_WS_EVENT,UNOTEST_DIR,UnplaceableRunIdError,UnsupportedRunKindError,activeEnvName,blobPathFor,blobRelPathFor,blobRelSegmentsFor,blobsRootFor,categorizeVariable,debugDirFor,debuggerFileFor,deleteShadowWarning,envFileFor,envKeys,envLayerFilesFor,foldScenarioRun,insertEnvVar,isAnnotationLine,isExternalVarName,isFailingStatus,isRegexLiteral,isRunnerConfigKey,isTerminalRuntimeState,makeRunId,parseAppServerEvent,parseEnvContent,parseScenarioAnnotations,planAddVariable,projectRunDirFor,projectRunsRoot,regexLiteral,removeEnvVar,requireRunDirFor,runDirFor,runIdStartedAt,runsDirFor,sanitizeRunIdSegment,scenarioIndexFileName,scenarioRefFromFileName,secretsFileFor,secretsLayerFilesFor,serializeEnvValue,shardDaysDescending,shardDirFor,shardPathForRunId,shardPathForTimestamp,testDirFor,validateCollectionName,validateSegmentName};
|
|
1
|
+
const _0x16fbf0=_0xaab4;(function(_0x27b502,_0x1ea4b2){const _0x66f883={_0x42b591:0x177,_0x4d3a5f:0x1a2,_0x580b08:0x132},_0x4f4757=_0xaab4,_0x4e433c=_0x27b502();while(!![]){try{const _0x42992d=-parseInt(_0x4f4757(0x146))/0x1+-parseInt(_0x4f4757(0x16c))/0x2*(parseInt(_0x4f4757(0x12f))/0x3)+parseInt(_0x4f4757(0x138))/0x4+-parseInt(_0x4f4757(0x15f))/0x5+parseInt(_0x4f4757(_0x66f883._0x42b591))/0x6+-parseInt(_0x4f4757(_0x66f883._0x4d3a5f))/0x7+parseInt(_0x4f4757(_0x66f883._0x580b08))/0x8;if(_0x42992d===_0x1ea4b2)break;else _0x4e433c['push'](_0x4e433c['shift']());}catch(_0x24ba0b){_0x4e433c['push'](_0x4e433c['shift']());}}}(_0x4609,0x1a784));var __defProp=Object[_0x16fbf0(0x171)],__name=(_0x47ca56,_0x39ffbb)=>__defProp(_0x47ca56,_0x16fbf0(0x114),{'value':_0x39ffbb,'configurable':!![]});function _0x4609(){const _0x1020f8=['tK9Fq09mt1i','BgvUz3rO','BxvZDcbUB3qGy29UDgfPBIbCic8GoIaQid8GiIa8id4GFcbVCIbJB250CM9SignOyxjHy3rLCNm','Bgf5zxjZrM9Y','zMXHz3m','yMXVyLjLBfnLz21LBNrZrM9Y','zMXHDe1HCa','zxHWzwn0lwzHAwW','vu5pvevtvf9mt0DFtevwruW','uNvUBMvYtM90q29UzMLNDxjLzevYCM9Y','Dw5VDgvZDc8UC2vJCMv0CW','C2XPy2u','DgvYBwLUywW','C3rKzxjYlMXVzW','C3rLChmUANnVBMW','iI4G','CNvUC0rPCKzVCG','yMXVyIbOyxnOig11C3qGyMuGBg93zxjJyxnLigHLEcWGz290oIa','zw52q29UDgvUDa','CMvNzxG','yxbWlxnLCNzLCJPLCNjVCG','igLZigfSC28GC2v0igLUihLVDxiGC2HLBgWGzw52AxjVBM1LBNqG4OcuigL0ihDPBgWGA2vLCcbYzxnVBhzPBMCGzNjVBsb0AgvYzsaODgHLigvUDMLYB25Tzw50ihDPBNmGB3zLCIb0AguGzMLSzsKU','C3rHDhvZ','BMfTzq','vu5pvevtvf9usu1fwK9orq','vu5pvevtvf9eruzbvuXux05bvKLhqvrjt05FveLnru9vvf9nuW','C2fUAxrPEMvsDw5jzfnLz21LBNq','y3j5ChrV','vu5pvevtvf9cuK9xu0vs','AxnbBM5VDgf0Aw9UtgLUzq','vw5ZDxbWB3j0zwrsDw5lAw5KrxjYB3i','CgfYC2vbChbtzxj2zxjfDMvUDa','Dw5VDgvZDa','lMPZB25S','BxvZDcbUB3qGyMuGzw1WDhK','zMfPBfn0CMvHAW','zMfPBgvK','C3bSAxrmAw5LCW','vu5pvevtvf9mt0nbteu','C3bSAxq','lMrLyNvN','zw52tMfTzxngCM9TrgLYtgLZDgLUzW','Aw5Zzxj0rw52vMfY','uNvUBMvYqwrHChrLCK5VDezVDw5KrxjYB3i','z2v0vvrdrgf0zq','ChjVAMvJDfj1BKrPCKzVCG','CNvUDgLTzs5QC29U','BxvZDcbUB3qGC3rHCNqGD2L0AcaNlIC','C2vYAwfSAxPLrw52vMfSDwu','y29TBwfUzhmUANnVBMW','m0XXtxf5DG','igLZigfSC28GC2v0igLUihvUB3rLC3qVlMvUDIdIGjqGDgHLihnLy3jLDcb2ywX1zsbUB3CGC2HHzg93CYbPDc4','AxngywLSAw5Nu3rHDhvZ','ndu3odG4mgj3rM5xua','igLZigfSC28GC2v0igLUihvUB3rLC3qVlNnLy3jLDhmG4OcuihrOzsbZzwnYzxqGDMfSDwuGC2HHzg93CYb0AgLZig9Uzs4','Dw5VDgvZDc8Uzw52','yxnZAwDUBwvUDevUDhjPzxm','igLZig5VDcbHigTUB3DUihj1BM5LCIbZzxr0Aw5NiokaLcbJAg9VC2uGB25LigzYB20GDgHLihj1BM5LCI1JB25MAwCGBgLZDc4','CgLJA2vYlxnUyxbZAg90lNr4Da','ndeZmdy0t2PKEvnZ','vu5pvevtvf9dt05tt0Xf','CMvXDwLYzvj1BKrPCKzVCG','AgfZ','C2vJCMv0','Aw52ywXPzc1Uyw1L','AxnbC3nPz25Tzw50tgLUzq','C3rYAw5N','CgfYC2vfBNzdB250zw50','DgvZDa','AM9PBKXPBMvZ','C2vJCMv0CW','DhjPBq','C3rHCNrZv2L0Aa','mJaYodyXuK1JtwPY','vu5pvevtvf9erujvr19quKvwsuvxx0jzvevt','x2nVBgXLy3rPB25Z','CNvUBMvYici','uNvUBMvY','ChvZAa','lNnLy3jLDhm','C3rKB3v0lMXVzW','vvrd','CgXHBKfKzfzHCMLHyMXL','C2HHCMreAxjgB3i','Dw5RBM93BI1YDw5UzxiTA2v5','sw52ywXPzejSB2jiyxnOrxjYB3i','AxnbC3nPz25Tzw50t2y','C2vJCMv0C0XHEwvYrMLSzxngB3i','AM9PBG','ic0Tlq','y2f0zwDVCML6zvzHCMLHyMXL','C291CMnL','z2v0uMfUzg9TvMfSDwvZ','yMXVyLjLBfbHDgHgB3i','CMvZzxj2zwrvBMrLCNnJB3jL','AgvHCNrIzwf0','zw52s2v5CW','B2jQzwn0','odq5nZu1r0nLvLzr','C2fTCgXL','lNzPzxDLCI5SB2nR','rK9sq0vFq09mt1i','BM93','BxvZDcbIzsbHihn0CMLUzW','zMLUzeLUzgv4','zgvSzxrLu2HHzg93v2fYBMLUzW','vu5pvevtvf9dqunirv9esvi','zw5KC1DPDgG','CMvNzxHmAxrLCMfS','vu5pvevtvf9erujvr19lruvqx0nbteXt','AxnsDw5ZrgLYtMfTzq','mZGXnJjrwg1Xsva','C2nLBMfYAw9szwzgCM9TrMLSzu5HBwu','lMPZB24','CgfKu3rHCNq','ywn0AxzLrw52tMfTzq','zgvMAw5LuhjVCgvYDhK','x2jSB2jZ','DMfSAwrHDgvtzwDTzw50tMfTzq','vu5pvevtvf9orvrxt1jl','y29TCgXLDgvK','CNvUswq','mtu1mdqWCxjhuKzk','CgfYC2u','CMvTB3zLrw52vMfY','Aw5JBhvKzxm','zMXVB3i','BwfUAwzLC3qUANnVBG','vu5pvevtvf9qt1bvuf9huKfdrv9nuW','zw52','vw5WBgfJzwfIBgvsDw5jzevYCM9Y','iYaTls0G','CgfYC2vty2vUyxjPB0fUBM90yxrPB25Z','lNnUyxbZAg90CW','C2HHCMreyxLZrgvZy2vUzgLUzW','CNvUswrtDgfYDgvKqxq','CNvUBMvY','BwfRzvj1BKLK','C3bSAwnL','yxbW','C2HHCMrqyxrOrM9YvgLTzxn0yw1W','zhvYyxrPB25nCW','C291CMnLCY5QC29U','vu5pvevtvf9erujvr19esvi','C2HHCMrqyxrOrM9YuNvUswq','CMvWBgfJzq','refuqujbu0vFvvjm','qxbW','DMfSAwrHDgvdB2XSzwn0Aw9UtMfTzq','AxnfEhrLCM5HBfzHCK5HBwu','z2v0vvrdrNvSBfLLyxi','C29YDa','yMXVyLbHDgHgB3i','Aw50zxjYDxb0zwq','vu5pvevtvf9eruzbvuXux1rjtuvpvvrFtvm','yMXVyNnsB290rM9Y','lY5Kzwj1z2DLCG','iokaLcbWAwnRigeGzgLMzMvYzw50ig5HBwuGB3iGzwrPDcb0AguGzxHPC3rPBMCGDMfSDwuU','zw52tgf5zxjgAwXLC0zVCG','vu5pvevtvf9ftLy','A2LUza','BxvZDcbUB3qGC3rHCNqGD2L0AcaNxYCGkhjLC2vYDMvKkq','iIbKB2vZig5VDcbZDxbWB3j0ihj1BIbRAw5Kici','Dg9mB3DLCKnHC2u','lNj1BNm','mtqWoda3mxzfChLHyG','ywrK','Aw5KzxHpzG','yxbWlxnLCNzLCJPYzxvZzwq','vu5pvevtvf9tte9xx01p','DgvTCgXHDgu','C3rHCNrLzef0','zw52rMLSzuzVCG','AxnuzxjTAw5HBfj1BNrPBwvtDgf0zq'];_0x4609=function(){return _0x1020f8;};return _0x4609();}function parseAppServerEvent(_0x458d26){const _0x7b784e={_0x482484:0x145,_0x532e99:0x178,_0x2c3955:0x19d},_0x4e9c97=_0x16fbf0,_0x17bb3e=_0x458d26[_0x4e9c97(0x144)]();if(!_0x17bb3e[_0x4e9c97(_0x7b784e._0x482484)]('{'))return null;try{const _0x344bf7=JSON[_0x4e9c97(_0x7b784e._0x532e99)](_0x17bb3e);if(_0x344bf7['kind']==='app-server:ready'||_0x344bf7[_0x4e9c97(0x19d)]===_0x4e9c97(0x1a5)||_0x344bf7[_0x4e9c97(_0x7b784e._0x2c3955)]===_0x4e9c97(0x111))return _0x344bf7;return null;}catch{return null;}}__name(parseAppServerEvent,_0x16fbf0(0x11c));var UNOTEST_DIR=_0x16fbf0(0x11d),E2E_SUBDIR='e2e',HELPERS_SUBDIR='_helpers',COLLECTIONS_SUBDIR=_0x16fbf0(0x148),RUNS_SUBDIR=_0x16fbf0(0x1a1),SNAPSHOTS_SUBDIR=_0x16fbf0(0x182);function testDirFor(_0x151f2b){return''+E2E_SUBDIR+_0x151f2b;}__name(testDirFor,'testDirFor');function _0xaab4(_0x1fc96a,_0x167754){_0x1fc96a=_0x1fc96a-0x107;const _0x4609f6=_0x4609();let _0xaab483=_0x4609f6[_0x1fc96a];if(_0xaab4['jKztFt']===undefined){var _0x5e8398=function(_0x3e7ad){const _0x37d681='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x47ca56='',_0x39ffbb='';for(let _0x458d26=0x0,_0x17bb3e,_0x344bf7,_0x151f2b=0x0;_0x344bf7=_0x3e7ad['charAt'](_0x151f2b++);~_0x344bf7&&(_0x17bb3e=_0x458d26%0x4?_0x17bb3e*0x40+_0x344bf7:_0x344bf7,_0x458d26++%0x4)?_0x47ca56+=String['fromCharCode'](0xff&_0x17bb3e>>(-0x2*_0x458d26&0x6)):0x0){_0x344bf7=_0x37d681['indexOf'](_0x344bf7);}for(let _0x2314fe=0x0,_0x36180c=_0x47ca56['length'];_0x2314fe<_0x36180c;_0x2314fe++){_0x39ffbb+='%'+('00'+_0x47ca56['charCodeAt'](_0x2314fe)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x39ffbb);};_0xaab4['zxSzMx']=_0x5e8398,_0xaab4['EmkOhr']={},_0xaab4['jKztFt']=!![];}const _0xe991c7=_0x4609f6[0x0],_0x3661e4=_0x1fc96a+_0xe991c7,_0x4db459=_0xaab4['EmkOhr'][_0x3661e4];return!_0x4db459?(_0xaab483=_0xaab4['zxSzMx'](_0xaab483),_0xaab4['EmkOhr'][_0x3661e4]=_0xaab483):_0xaab483=_0x4db459,_0xaab483;}function runsDirFor(_0x2314fe,_0x36180c){return''+RUNS_SUBDIR+_0x2314fe+(_0x36180c?'.'+_0x36180c:'');}__name(runsDirFor,_0x16fbf0(0x10d));function isRunsDirName(_0x19dd49){const _0xb789e1={_0x420afe:0x145},_0x30bfbe=_0x16fbf0;return _0x19dd49===RUNS_SUBDIR||_0x19dd49[_0x30bfbe(_0xb789e1._0x420afe)](RUNS_SUBDIR+'-')||_0x19dd49[_0x30bfbe(_0xb789e1._0x420afe)](RUNS_SUBDIR+'.');}__name(isRunsDirName,_0x16fbf0(0x16b));function debugDirFor(_0x1cf491){const _0x1a6308={_0x307a89:0x125},_0x1eea9d=_0x16fbf0;return _0x1eea9d(_0x1a6308._0x307a89)+_0x1cf491;}__name(debugDirFor,'debugDirFor');function debuggerFileFor(_0x11461a){const _0x4af555={_0x21e37d:0x16e},_0x4ddd08=_0x16fbf0;return UNOTEST_DIR+_0x4ddd08(0x199)+_0x11461a+_0x4ddd08(_0x4af555._0x21e37d);}__name(debuggerFileFor,'debuggerFileFor');var LOCK_FILE=_0x16fbf0(0x161),LOG_FILE='.viewer.log',STEPS_FILE=_0x16fbf0(0x10b),HEARTBEAT_FILE=_0x16fbf0(0x15c),DAY_INDEX_FILE='_day.jsonl',SCENARIOS_INDEX_DIR='_scenarios',SCENARIOS_LATEST_FILE='_latest.json',STDOUT_FILE=_0x16fbf0(0x14d),STDERR_FILE=_0x16fbf0(0x10a),COMMANDS_FILE=_0x16fbf0(0x12e),RUNTIME_FILE=_0x16fbf0(0x12b),PICKER_SNAPSHOT_FILE=_0x16fbf0(0x137),ENV_FILE='unotest/.env',SECRETS_FILE=_0x16fbf0(0x107);function envFileFor(_0x1ea002,_0x4dc23e){return''+ENV_FILE+_0x1ea002+(_0x4dc23e?'.'+_0x4dc23e:'');}__name(envFileFor,_0x16fbf0(0x1a9));function secretsFileFor(_0x1e9dbe,_0x45a318){return''+SECRETS_FILE+_0x1e9dbe+(_0x45a318?'.'+_0x45a318:'');}__name(secretsFileFor,'secretsFileFor');function envLayerFilesFor(_0x49997c,_0x48149a){return layersFor(ENV_FILE,_0x49997c,_0x48149a);}__name(envLayerFilesFor,_0x16fbf0(0x19b));function secretsLayerFilesFor(_0x2a5edb,_0x1672e1){return layersFor(SECRETS_FILE,_0x2a5edb,_0x1672e1);}__name(secretsLayerFilesFor,_0x16fbf0(0x154));function layersFor(_0x3a7901,_0x451704,_0x487233){const _0x6278ac=_0x16fbf0,_0x29309f=[_0x3a7901];if(_0x451704)_0x29309f['push'](''+_0x3a7901+_0x451704);if(_0x487233){_0x29309f['push'](_0x3a7901+'.'+_0x487233);if(_0x451704)_0x29309f[_0x6278ac(0x14b)](''+_0x3a7901+_0x451704+'.'+_0x487233);}return _0x29309f;}__name(layersFor,_0x16fbf0(0x1ae));function activeEnvName(_0x3c11dc){const _0x1be3c0=_0x16fbf0,_0x2f8c78=_0x3c11dc[_0x1be3c0(0x19c)]?.['trim']();return _0x2f8c78?_0x2f8c78:void 0x0;}__name(activeEnvName,_0x16fbf0(0x170));var RESERVED_ENV_NAMES=new Set(['example',_0x16fbf0(0x160),_0x16fbf0(0x1a7)]);function envNamesFromDirListing(_0x2891ea,_0x3c7b60){const _0x422c36={_0x3abf9b:0x1b1,_0x337423:0x13b,_0x139cc3:0x1a3},_0x47a170=_0x16fbf0,_0x2f10e7=['.env',_0x47a170(0x14c)][_0x47a170(_0x422c36._0x3abf9b)](_0x4a5d85=>_0x3c7b60?[_0x4a5d85,''+_0x4a5d85+_0x3c7b60]:[_0x4a5d85]),_0x1ce989=new Set();for(const _0x1d7340 of _0x2891ea){for(const _0x2fbc0b of _0x2f10e7){const _0x394768=_0x2fbc0b+'.';if(!_0x1d7340['startsWith'](_0x394768))continue;const _0x39e344=_0x1d7340['slice'](_0x394768[_0x47a170(0x1ac)]);if(!_0x39e344||_0x39e344['includes']('/'))continue;if(RESERVED_ENV_NAMES[_0x47a170(_0x422c36._0x337423)](_0x39e344))continue;_0x1ce989[_0x47a170(_0x422c36._0x139cc3)](_0x39e344);}}return[..._0x1ce989][_0x47a170(0x194)]();}__name(envNamesFromDirListing,_0x16fbf0(0x126));function isRegexLiteral(_0x258207){const _0x17c0b0={_0x517fff:0x15e,_0x1948e6:0x13f,_0x5dc748:0x1af,_0x2394ea:0x13f},_0x17d8d9=_0x16fbf0;return typeof _0x258207===_0x17d8d9(_0x17c0b0._0x517fff)&&_0x258207!==null&&_0x258207[_0x17d8d9(0x19d)]==='regex'&&typeof _0x258207['source']===_0x17d8d9(_0x17c0b0._0x1948e6)&&typeof _0x258207[_0x17d8d9(_0x17c0b0._0x5dc748)]===_0x17d8d9(_0x17c0b0._0x2394ea);}__name(isRegexLiteral,'isRegexLiteral');function regexLiteral(_0x771f2e,_0x2d0580=''){const _0x1aff1d=_0x16fbf0;return{'kind':_0x1aff1d(0x110),'source':_0x771f2e,'flags':_0x2d0580};}__name(regexLiteral,_0x16fbf0(0x169));var RAND_BYTES=0x6;function makeRunId(_0x5996eb){const _0x30d641={_0x16789e:0x118},_0x57e22c=_0x16fbf0,_0x324a7b=sanitizeRunIdSegment(_0x5996eb),_0x1d017b=Date[_0x57e22c(0x163)]()['toString'](0x24),_0x17977c=new Uint8Array(RAND_BYTES);globalThis[_0x57e22c(_0x30d641._0x16789e)][_0x57e22c(0x159)](_0x17977c);let _0x3f1da8='';for(let _0x37f3ca=0x0;_0x37f3ca<_0x17977c[_0x57e22c(0x1ac)];_0x37f3ca++){_0x3f1da8+=_0x17977c[_0x37f3ca]['toString'](0x10)[_0x57e22c(0x16f)](0x2,'0');}return _0x324a7b+'-'+_0x1d017b+'-'+_0x3f1da8;}__name(makeRunId,_0x16fbf0(0x186));function sanitizeRunIdSegment(_0x3d37ae){const _0x4b915b=_0x16fbf0,_0x573828=_0x3d37ae[_0x4b915b(0x18e)](/[^a-zA-Z0-9_-]+/g,'-')[_0x4b915b(0x18e)](/-+/g,'-')['replace'](/^-|-$/g,'');return _0x573828[_0x4b915b(0x1ac)]>0x0?_0x573828:'run';}__name(sanitizeRunIdSegment,_0x16fbf0(0x117));var RANDOM_SUFFIX_RE=/^[0-9a-f]{6,}$/,MIN_PLAUSIBLE_MS=Date['UTC'](0x7e4,0x0,0x1),MAX_PLAUSIBLE_MS=Date[_0x16fbf0(0x14e)](0x834,0x0,0x1);function runIdStartedAt(_0x31d7df){const _0x1cf5bd={_0x5487ba:0x124,_0x112f4e:0x1ac,_0x12ac44:0x141},_0x209541=_0x16fbf0,_0x3c5777=_0x31d7df[_0x209541(_0x1cf5bd._0x5487ba)]('-');if(_0x3c5777[_0x209541(_0x1cf5bd._0x112f4e)]<0x3)return null;const _0x245808=_0x3c5777[_0x3c5777[_0x209541(_0x1cf5bd._0x112f4e)]-0x1];if(!RANDOM_SUFFIX_RE[_0x209541(_0x1cf5bd._0x12ac44)](_0x245808))return null;const _0x3a07bf=_0x3c5777[_0x3c5777['length']-0x2];if(!/^[0-9a-z]+$/['test'](_0x3a07bf))return null;const _0x1d3570=parseInt(_0x3a07bf,0x24);if(!Number['isFinite'](_0x1d3570))return null;if(_0x1d3570<MIN_PLAUSIBLE_MS||_0x1d3570>=MAX_PLAUSIBLE_MS)return null;return _0x1d3570;}__name(runIdStartedAt,_0x16fbf0(0x184));function shardPathForTimestamp(_0x180332){const _0x2a2cfa={_0x13d8e6:0x193,_0x190a37:0x129},_0x1b3400=_0x16fbf0,_0x53b001=new Date(_0x180332),_0x2515e8=String(_0x53b001[_0x1b3400(_0x2a2cfa._0x13d8e6)]())[_0x1b3400(0x16f)](0x4,'0'),_0x376e32=String(_0x53b001['getUTCMonth']()+0x1)['padStart'](0x2,'0'),_0x57eb3d=String(_0x53b001[_0x1b3400(_0x2a2cfa._0x190a37)]())[_0x1b3400(0x16f)](0x2,'0');return _0x2515e8+'/'+_0x376e32+'/'+_0x57eb3d;}__name(shardPathForTimestamp,_0x16fbf0(0x189));function shardPathForRunId(_0xcca627){const _0x8c3265=runIdStartedAt(_0xcca627);return _0x8c3265===null?null:shardPathForTimestamp(_0x8c3265);}__name(shardPathForRunId,_0x16fbf0(0x18d));function runDirFor(_0x2eb209,_0x313d93){const _0x1a8f0e=shardPathForRunId(_0x313d93);return _0x1a8f0e===null?null:_0x2eb209+'/'+_0x1a8f0e+'/'+_0x313d93;}__name(runDirFor,'runDirFor');var UnplaceableRunIdError=class extends Error{static{__name(this,_0x16fbf0(0x17f));}constructor(_0x262764){const _0x4d86c0={_0x1de25b:0x114,_0x2faf7a:0x17f},_0x31d094=_0x16fbf0;super('runId\x20carries\x20no\x20timestamp,\x20cannot\x20place\x20it\x20in\x20a\x20shard:\x20'+_0x262764),this[_0x31d094(_0x4d86c0._0x1de25b)]=_0x31d094(_0x4d86c0._0x2faf7a);}};function requireRunDirFor(_0x1029d7,_0x4554b5){const _0x1fecaa=runDirFor(_0x1029d7,_0x4554b5);if(_0x1fecaa===null)throw new UnplaceableRunIdError(_0x4554b5);return _0x1fecaa;}__name(requireRunDirFor,_0x16fbf0(0x13a));function projectRunsRoot(_0x4c56b2='',_0x1e706e){return UNOTEST_DIR+'/'+runsDirFor(_0x4c56b2,_0x1e706e);}__name(projectRunsRoot,'projectRunsRoot');function projectRunDirFor(_0x49816c,_0x424fb8='',_0x40fc84){return requireRunDirFor(projectRunsRoot(_0x424fb8,_0x40fc84),_0x49816c);}__name(projectRunDirFor,_0x16fbf0(0x12a));function shardDirFor(_0x2cd947,_0x1a867d){return _0x2cd947+'/'+shardPathForTimestamp(_0x1a867d);}__name(shardDirFor,_0x16fbf0(0x150));function*shardDaysDescending(_0x17e838,_0x32819f,_0x566543){const _0x8a1d21={_0x2d78c2:0x17b},_0x4fc611=_0x16fbf0,_0x566989=0x5265c00;let _0x302123=Math[_0x4fc611(_0x8a1d21._0x2d78c2)](_0x32819f/_0x566989)*_0x566989;for(let _0x4e1116=0x0;_0x4e1116<_0x566543;_0x4e1116++){yield shardDirFor(_0x17e838,_0x302123),_0x302123-=_0x566989;}}__name(shardDaysDescending,_0x16fbf0(0x183));var RUN_INDEX_SCHEMA_VERSION=0x2,SCENARIO_RECENT_WINDOW=0xc;function isFailingStatus(_0x24d8dd){const _0x3754c1={_0x2a1815:0x196},_0x15c900=_0x16fbf0;return _0x24d8dd===_0x15c900(0x121)||_0x24d8dd===_0x15c900(_0x3754c1._0x2a1815);}__name(isFailingStatus,_0x16fbf0(0x131));function foldScenarioRun(_0x76eb89,_0x2b928c){const _0x3cd450={_0x719c9d:0x113,_0x3cae7e:0x120},_0x3961eb=_0x16fbf0,_0xb6f9a6={'lastRunId':_0x2b928c[_0x3961eb(0x176)],'lastStatus':_0x2b928c[_0x3961eb(_0x3cd450._0x719c9d)],'lastAt':_0x2b928c[_0x3961eb(0x1a8)],'lastDurationMs':_0x2b928c[_0x3961eb(0x18a)],'recent':[..._0x76eb89?.['recent']??[],_0x2b928c[_0x3961eb(0x113)]]['slice'](-SCENARIO_RECENT_WINDOW)};if(!isFailingStatus(_0x2b928c[_0x3961eb(0x113)]))return{..._0xb6f9a6,'failStreak':0x0,'failingSince':null};const _0x325f3e=(_0x76eb89?.[_0x3961eb(_0x3cd450._0x3cae7e)]??0x0)+0x1;return{..._0xb6f9a6,'failStreak':_0x325f3e,'failingSince':_0x325f3e===0x1?_0x2b928c[_0x3961eb(0x1a8)]:_0x76eb89?.['failingSince']??_0x2b928c[_0x3961eb(0x1a8)]};}__name(foldScenarioRun,'foldScenarioRun');function scenarioIndexFileName(_0x43de6f){const _0x362363={_0x1e8797:0x11e},_0x5075bb=_0x16fbf0;return encodeURIComponent(_0x43de6f)+_0x5075bb(_0x362363._0x1e8797);}__name(scenarioIndexFileName,'scenarioIndexFileName');function scenarioRefFromFileName(_0x4f7598){const _0x8ca3fb={_0x29bd87:0x168,_0x33be60:0x108},_0x7918ac=_0x16fbf0;if(!_0x4f7598[_0x7918ac(_0x8ca3fb._0x29bd87)](_0x7918ac(0x11e)))return null;try{return decodeURIComponent(_0x4f7598[_0x7918ac(_0x8ca3fb._0x33be60)](0x0,-_0x7918ac(0x11e)[_0x7918ac(0x1ac)]));}catch{return null;}}__name(scenarioRefFromFileName,_0x16fbf0(0x16d));var BLOBS_DIR=_0x16fbf0(0x172),GENERATION_SEP='~',HASH_RE=/^[0-9a-f]{8,}$/,InvalidBlobHashError=class extends Error{static{__name(this,_0x16fbf0(0x152));}constructor(_0xf720e8){const _0x177862=_0x16fbf0;super(_0x177862(0x10e)+_0xf720e8),this['name']='InvalidBlobHashError';}};function blobPathFor(_0x3497cd,_0x286546,_0x522650,_0x43a19b=0x0){return _0x3497cd+'/'+blobRelPathFor(_0x286546,_0x522650,_0x43a19b);}__name(blobPathFor,_0x16fbf0(0x195));function blobRelSegmentsFor(_0x2f97dc,_0xbb4d74,_0x11fecb=0x0){const _0xd8d544={_0x542fe8:0x141,_0x857d38:0x108},_0x3d6130=_0x16fbf0;if(!HASH_RE[_0x3d6130(_0xd8d544._0x542fe8)](_0x2f97dc))throw new InvalidBlobHashError(_0x2f97dc);const _0xd5c526=_0x11fecb>0x0?''+GENERATION_SEP+_0x11fecb:'';return[BLOBS_DIR,_0x2f97dc['slice'](0x0,0x2),_0x2f97dc[_0x3d6130(_0xd8d544._0x857d38)](0x2,0x4),''+_0x2f97dc+_0xd5c526+'.'+_0xbb4d74];}__name(blobRelSegmentsFor,_0x16fbf0(0x1b0));function blobRelPathFor(_0x36568c,_0x18460e,_0xb1a6fd=0x0){const _0x38555b=_0x16fbf0;return blobRelSegmentsFor(_0x36568c,_0x18460e,_0xb1a6fd)[_0x38555b(0x155)]('/');}__name(blobRelPathFor,_0x16fbf0(0x15a));function blobsRootFor(_0x35798c){return _0x35798c+'/'+BLOBS_DIR;}__name(blobsRootFor,_0x16fbf0(0x198));var FS_UNSAFE_NAME_RE=/[\\/:*?"<>|\x00-\x1f]/;function validateFsSafeName(_0x4e1d52,_0x38c8f8){const _0x10f39b={_0x17a578:0x13f,_0x40f019:0x144,_0x458190:0x15b,_0x22c431:0x1ad},_0x745ed8=_0x16fbf0;if(typeof _0x4e1d52!==_0x745ed8(_0x10f39b._0x17a578))return _0x745ed8(0x164);const _0x7ba47b=_0x4e1d52[_0x745ed8(_0x10f39b._0x40f019)]();if(_0x7ba47b['length']===0x0)return _0x745ed8(0x11f);if(_0x7ba47b==='.'||_0x7ba47b==='..')return'must\x20not\x20be\x20\x22.\x22\x20or\x20\x22..\x22';if(_0x7ba47b[_0x745ed8(0x145)]('.'))return _0x745ed8(0x12c);if(_0x38c8f8?.[_0x745ed8(_0x10f39b._0x458190)]&&_0x7ba47b[_0x745ed8(0x145)]('_'))return _0x745ed8(0x19e);if(FS_UNSAFE_NAME_RE['test'](_0x7ba47b))return _0x745ed8(_0x10f39b._0x22c431);return null;}__name(validateFsSafeName,'validateFsSafeName');var COLLECTION_NAME_FORBIDDEN_RE=FS_UNSAFE_NAME_RE;function validateCollectionName(_0xe88968){return validateFsSafeName(_0xe88968);}__name(validateCollectionName,_0x16fbf0(0x191));var RUN_MANIFEST_FILE=_0x16fbf0(0x17c),RUN_SOURCES_FILE=_0x16fbf0(0x18b),UnsupportedRunKindError=class extends Error{static{__name(this,_0x16fbf0(0x11b));}constructor(_0x4ccdfa,_0x2dd2dc){const _0x124c60={_0x507cf7:0x149,_0x1e1620:0x11b},_0x3252a5=_0x16fbf0;super(_0x3252a5(_0x124c60._0x507cf7)+_0x2dd2dc+_0x3252a5(0x19f)+_0x4ccdfa+'\x22'),this[_0x3252a5(0x114)]=_0x3252a5(_0x124c60._0x1e1620);}},RunnerAdapterNotFoundError=class extends Error{static{__name(this,_0x16fbf0(0x128));}constructor(_0x35e8d2,_0x2985d3){const _0x104842={_0x4aafb7:0x114},_0x4745b2=_0x16fbf0;super('cannot\x20load\x20runner\x20adapter\x20\x22'+_0x35e8d2+_0x4745b2(0x10c)+_0x2985d3),this[_0x4745b2(_0x104842._0x4aafb7)]='RunnerAdapterNotFoundError';}},RunnerNotConfiguredError=class extends Error{static{__name(this,_0x16fbf0(0x1b4));}constructor(_0x858ff4){const _0x3ce7ec=_0x16fbf0;super(_0x858ff4),this[_0x3ce7ec(0x114)]='RunnerNotConfiguredError';}},EXPECT_FAIL_ANNOTATION=_0x16fbf0(0x1b2),ANNOTATION_RE=/^\s*\/\/\s*@([a-z0-9-]+)\s*$/;function isAnnotationLine(_0x31364c){const _0x23816c=_0x16fbf0;return ANNOTATION_RE[_0x23816c(0x141)](_0x31364c);}__name(isAnnotationLine,_0x16fbf0(0x11a));function parseScenarioAnnotations(_0x1c8ad4){const _0x56f1b9=_0x16fbf0,_0x9c9098=new Set();for(const _0x32baed of _0x1c8ad4[_0x56f1b9(0x124)](/\r?\n/)){const _0xbec022=_0x32baed[_0x56f1b9(0x144)]();if(_0xbec022==='')continue;if(!_0xbec022['startsWith']('//'))break;const _0x428b67=_0xbec022['match'](ANNOTATION_RE);if(_0x428b67)_0x9c9098[_0x56f1b9(0x1a3)](_0x428b67[0x1]);}return{'expectFail':_0x9c9098[_0x56f1b9(0x13b)](EXPECT_FAIL_ANNOTATION)};}__name(parseScenarioAnnotations,_0x16fbf0(0x181));var SEGMENT_NAME_FORBIDDEN_RE=FS_UNSAFE_NAME_RE;function validateSegmentName(_0x2991dc){return validateFsSafeName(_0x2991dc,{'reservedUnderscore':!![]});}__name(validateSegmentName,_0x16fbf0(0x173));var TERMINAL_WS_EVENT=_0x16fbf0(0x109),RUNNER_CONFIG_KEYS=new Set([_0x16fbf0(0x119),'UNOTEST_HEADED',_0x16fbf0(0x1a6),_0x16fbf0(0x197),_0x16fbf0(0x116),_0x16fbf0(0x17d),_0x16fbf0(0x123),_0x16fbf0(0x115),_0x16fbf0(0x1b3),'UNOTEST_DEBUG',_0x16fbf0(0x18c),'UNOTEST_DEBUG_MAX_BYTES',_0x16fbf0(0x147),'UNOTEST_DEBUG_HTML_MAX_BYTES',_0x16fbf0(0x16a),_0x16fbf0(0x174),_0x16fbf0(0x139),_0x16fbf0(0x167),_0x16fbf0(0x1ab),_0x16fbf0(0x162),_0x16fbf0(0x18f)]);function isRunnerConfigKey(_0x706eba){const _0x415cfe=_0x16fbf0;return RUNNER_CONFIG_KEYS[_0x415cfe(0x13b)](_0x706eba);}__name(isRunnerConfigKey,'isRunnerConfigKey');function categorizeVariable(_0x1f2f40){const _0x5271e1={_0x43d83f:0x114},_0x25f30d=_0x16fbf0;if(_0x1f2f40[_0x25f30d(0x158)]===_0x25f30d(0x143))return _0x25f30d(0x13c);return isRunnerConfigKey(_0x1f2f40[_0x25f30d(_0x5271e1._0x43d83f)])?'runner':_0x25f30d(0x188);}__name(categorizeVariable,_0x16fbf0(0x157));function isExternalVarName(_0x490bca){const _0x541264=_0x16fbf0;return/^[A-Z][A-Z0-9_]*$/[_0x541264(0x141)](_0x490bca);}__name(isExternalVarName,_0x16fbf0(0x192));var ENV_KEY_RE=/^[A-Za-z_][A-Za-z0-9_]*$/;function*assignmentEntries(_0xb83738){const _0x36e6af={_0x3e97ab:0x144,_0x5bf617:0x145,_0x3e209f:0x144,_0x39d975:0x141},_0x517e8e=_0x16fbf0;for(const _0x28bbf9 of _0xb83738[_0x517e8e(0x124)](/\r?\n/)){const _0x304b1a=_0x28bbf9[_0x517e8e(_0x36e6af._0x3e97ab)]();if(_0x304b1a===''||_0x304b1a[_0x517e8e(_0x36e6af._0x5bf617)]('#'))continue;const _0x3871e6=_0x304b1a[_0x517e8e(0x1a4)]('=');if(_0x3871e6<=0x0)continue;const _0x520fcc=_0x304b1a['slice'](0x0,_0x3871e6)[_0x517e8e(_0x36e6af._0x3e209f)]();if(!ENV_KEY_RE[_0x517e8e(_0x36e6af._0x39d975)](_0x520fcc))continue;yield[_0x520fcc,_0x304b1a['slice'](_0x3871e6+0x1)[_0x517e8e(0x144)]()];}}__name(assignmentEntries,_0x16fbf0(0x135));function parseEnvContent(_0x1a70f6){const _0xb6c7fb={_0x32bed0:0x1ac,_0x1fab44:0x108},_0x360f9e=_0x16fbf0,_0x165bf9={};for(const [_0x22a8fb,_0x3104af]of assignmentEntries(_0x1a70f6)){let _0x668f7b=_0x3104af;if(_0x668f7b['length']>=0x2){const _0x472f38=_0x668f7b[0x0],_0x21be30=_0x668f7b[_0x668f7b[_0x360f9e(_0xb6c7fb._0x32bed0)]-0x1];(_0x472f38==='\x22'||_0x472f38==='\x27')&&_0x472f38===_0x21be30&&(_0x668f7b=_0x668f7b[_0x360f9e(_0xb6c7fb._0x1fab44)](0x1,-0x1));}_0x165bf9[_0x22a8fb]=_0x668f7b;}return _0x165bf9;}__name(parseEnvContent,_0x16fbf0(0x140));function serializeEnvValue(_0x51fd9c){const _0x26048f={_0x1cdd8e:0x141,_0x13b1bd:0x18e},_0x4fe715=_0x16fbf0;if(_0x51fd9c==='')return'';if(/[\s#"'=\\]|^[`]/[_0x4fe715(0x141)](_0x51fd9c)||/[\n\r]/[_0x4fe715(_0x26048f._0x1cdd8e)](_0x51fd9c)){const _0xa3fc6b=_0x51fd9c['replace'](/\\/g,'\x5c\x5c')[_0x4fe715(0x18e)](/"/g,'\x5c\x22')['replace'](/\n/g,'\x5cn')[_0x4fe715(_0x26048f._0x13b1bd)](/\r/g,'\x5cr');return'\x22'+_0xa3fc6b+'\x22';}return _0x51fd9c;}__name(serializeEnvValue,_0x16fbf0(0x12d));function envKeys(_0x2c7e11){const _0x2bacad=_0x16fbf0,_0x2a201b=new Set();for(const [_0x561730]of assignmentEntries(_0x2c7e11))_0x2a201b[_0x2bacad(0x1a3)](_0x561730);return _0x2a201b;}__name(envKeys,_0x16fbf0(0x15d));function isSectionDivider(_0x14a3f6){const _0x43028f={_0x1887cb:0x141},_0x43a195=_0x16fbf0,_0x24d5ea=_0x14a3f6['trim']();return _0x24d5ea[_0x43a195(0x145)]('#')&&/---/[_0x43a195(_0x43028f._0x1887cb)](_0x24d5ea);}__name(isSectionDivider,'isSectionDivider');function isAssignmentLine(_0x32462e){const _0x507d38={_0x1b86bc:0x145,_0x3c925d:0x1a4},_0x3a415b=_0x16fbf0,_0x33b70e=_0x32462e['trim']();if(_0x33b70e===''||_0x33b70e[_0x3a415b(_0x507d38._0x1b86bc)]('#'))return![];const _0x25fe9e=_0x33b70e[_0x3a415b(_0x507d38._0x3c925d)]('=');return _0x25fe9e>0x0&&ENV_KEY_RE[_0x3a415b(0x141)](_0x33b70e[_0x3a415b(0x108)](0x0,_0x25fe9e)[_0x3a415b(0x144)]());}__name(isAssignmentLine,_0x16fbf0(0x13e));function isAssignmentOf(_0x19daae,_0x3fc7fa){const _0x4378bb={_0x508b0c:0x145,_0x1ec8e6:0x1a4,_0x581cca:0x144},_0x582f6a=_0x16fbf0,_0x58d781=_0x19daae[_0x582f6a(0x144)]();if(_0x58d781===''||_0x58d781[_0x582f6a(_0x4378bb._0x508b0c)]('#'))return![];const _0x4e134d=_0x58d781[_0x582f6a(_0x4378bb._0x1ec8e6)]('=');if(_0x4e134d<=0x0)return![];return _0x58d781[_0x582f6a(0x108)](0x0,_0x4e134d)[_0x582f6a(_0x4378bb._0x581cca)]()===_0x3fc7fa;}__name(isAssignmentOf,_0x16fbf0(0x153));function splitLines(_0xc64324){const _0x4e4e1b={_0x1ec493:0x168},_0x11c6b7=_0x16fbf0,_0x1b3085=_0xc64324[_0x11c6b7(_0x4e4e1b._0x1ec493)]('\x0a'),_0x1d73a1=_0x1b3085?_0xc64324[_0x11c6b7(0x108)](0x0,-0x1):_0xc64324;return{'lines':_0x1d73a1===''?[]:_0x1d73a1[_0x11c6b7(0x124)]('\x0a'),'trailingNewline':_0x1b3085};}__name(splitLines,_0x16fbf0(0x122));function joinLines(_0x1b9c81,_0x5c87f4){const _0x2a4f22={_0x412d96:0x155},_0x500da7=_0x16fbf0,_0xbead28=_0x1b9c81[_0x500da7(_0x2a4f22._0x412d96)]('\x0a');return _0x5c87f4||_0xbead28===''?_0xbead28+'\x0a':_0xbead28;}__name(joinLines,_0x16fbf0(0x142));function insertEnvVar(_0x133524,_0x53e775,_0x9d77f0,_0x187b6a){const _0x2fec7d={_0xca4aa2:0x1a0,_0x2181f6:0x165,_0x177d74:0x1ac,_0x29b100:0x14b,_0x418600:0x180,_0x39dc34:0x156},_0x3afa80=_0x16fbf0,_0x5f472c=_0x53e775+'='+serializeEnvValue(_0x9d77f0),{lines:_0x20f1c8,trailingNewline:_0xc04978}=splitLines(_0x133524);if(_0x187b6a){const _0xff11ef=new RegExp('\x5cb'+_0x187b6a[_0x3afa80(_0x2fec7d._0xca4aa2)]()+'\x5cb'),_0x5d67c3=_0x20f1c8[_0x3afa80(_0x2fec7d._0x2181f6)](_0xf2d056=>isSectionDivider(_0xf2d056)&&_0xff11ef[_0x3afa80(0x141)](_0xf2d056[_0x3afa80(0x1a0)]()));if(_0x5d67c3!==-0x1){let _0x2eda63=_0x20f1c8[_0x3afa80(_0x2fec7d._0x177d74)];for(let _0x3f6b33=_0x5d67c3+0x1;_0x3f6b33<_0x20f1c8[_0x3afa80(0x1ac)];_0x3f6b33++){if(isSectionDivider(_0x20f1c8[_0x3f6b33])){_0x2eda63=_0x3f6b33;break;}}let _0x1b9f6a=-0x1,_0x46968b=-0x1;for(let _0x623c27=_0x5d67c3+0x1;_0x623c27<_0x2eda63;_0x623c27++){if(_0x20f1c8[_0x623c27][_0x3afa80(0x144)]()!=='')_0x46968b=_0x623c27;if(isAssignmentLine(_0x20f1c8[_0x623c27]))_0x1b9f6a=_0x623c27;}const _0x28d01d=_0x1b9f6a>=0x0?_0x1b9f6a:_0x46968b,_0x1307d5=_0x28d01d>=0x0?_0x28d01d+0x1:_0x5d67c3+0x1;return _0x20f1c8[_0x3afa80(0x187)](_0x1307d5,0x0,_0x5f472c),joinLines(_0x20f1c8,_0xc04978||_0x20f1c8['length']>0x0);}if(_0x20f1c8['length']>0x0)_0x20f1c8[_0x3afa80(_0x2fec7d._0x29b100)]('');return _0x20f1c8[_0x3afa80(_0x2fec7d._0x29b100)](_0x3afa80(_0x2fec7d._0x418600)+_0x187b6a+_0x3afa80(_0x2fec7d._0x39dc34),_0x5f472c),joinLines(_0x20f1c8,!![]);}return _0x20f1c8[_0x3afa80(_0x2fec7d._0x29b100)](_0x5f472c),joinLines(_0x20f1c8,!![]);}__name(insertEnvVar,_0x16fbf0(0x127));function removeEnvVar(_0x2604ff,_0x20386f){const _0x4b5914=_0x16fbf0,{lines:_0x47b635,trailingNewline:_0x1b8102}=splitLines(_0x2604ff),_0x43272f=_0x47b635['filter'](_0x19a923=>!isAssignmentOf(_0x19a923,_0x20386f)),_0x3b33dd=_0x43272f['length']!==_0x47b635[_0x4b5914(0x1ac)];return{'content':joinLines(_0x43272f,_0x1b8102),'removed':_0x3b33dd};}__name(removeEnvVar,_0x16fbf0(0x179));var SECTION_BY_KIND={'app':_0x16fbf0(0x190),'runner':_0x16fbf0(0x14a),'secret':void 0x0};function planAddVariable(_0x555431){const _0x280e98={_0x5594ef:0x151,_0x474b6e:0x13b,_0x2100f4:0x13c,_0x1b10fb:0x14b,_0x281c21:0x130,_0x4ae45d:0x13c,_0x4c1022:0x14b,_0x27bf63:0x133},_0x29f15f=_0x16fbf0,{name:_0x209c24,kind:_0x182fe2}=_0x555431;if(_0x182fe2===_0x29f15f(0x185)){if(!isRunnerConfigKey(_0x209c24))return{'ok':![],'code':_0x29f15f(_0x280e98._0x5594ef),'message':_0x209c24+_0x29f15f(0x136)};}else{if(!isExternalVarName(_0x209c24))return{'ok':![],'code':_0x29f15f(0x13d),'message':_0x209c24+'\x20must\x20be\x20UPPER_SNAKE\x20(e.g.\x20APP_BASE_URL)\x20so\x20a\x20scenario\x20can\x20reference\x20it\x20by\x20name.'};}const _0x4aa2ec=envKeys(_0x555431[_0x29f15f(0x10f)])[_0x29f15f(_0x280e98._0x474b6e)](_0x209c24),_0x381b72=envKeys(_0x555431['secretsContent'])[_0x29f15f(0x13b)](_0x209c24),_0x321664=_0x182fe2===_0x29f15f(_0x280e98._0x2100f4)?'secrets':_0x29f15f(0x17e),_0x27f579=_0x321664===_0x29f15f(0x143)?_0x381b72:_0x4aa2ec,_0x36fa81=_0x321664==='secrets'?'unotest/.secrets':_0x29f15f(0x134);if(_0x27f579)return{'ok':![],'code':'duplicate','message':_0x209c24+'\x20already\x20exists\x20in\x20'+_0x36fa81+_0x29f15f(0x19a)};const _0x107f9b=[];return _0x182fe2==='secret'&&_0x4aa2ec&&_0x107f9b[_0x29f15f(_0x280e98._0x1b10fb)](_0x209c24+_0x29f15f(_0x280e98._0x281c21)),_0x182fe2!==_0x29f15f(_0x280e98._0x4ae45d)&&_0x381b72&&_0x107f9b[_0x29f15f(_0x280e98._0x4c1022)](_0x209c24+_0x29f15f(_0x280e98._0x27bf63)),{'ok':!![],'target':_0x321664,'sectionLabel':SECTION_BY_KIND[_0x182fe2],'warnings':_0x107f9b};}__name(planAddVariable,_0x16fbf0(0x14f));function deleteShadowWarning(_0x5457e9,_0x2fae30,_0x1ccfc3){const _0x4b49d1={_0x3a23da:0x112},_0xe847fe=_0x16fbf0;if(_0x1ccfc3!==void 0x0&&_0x1ccfc3!==_0x2fae30)return[_0x5457e9+_0xe847fe(_0x4b49d1._0x3a23da)];return[];}__name(deleteShadowWarning,_0x16fbf0(0x166));var TERMINAL_RUNTIME_STATES=[_0x16fbf0(0x175),'failed','aborted'];function isTerminalRuntimeState(_0x35f580){const _0x3e0415=_0x16fbf0;return TERMINAL_RUNTIME_STATES[_0x3e0415(0x17a)](_0x35f580);}__name(isTerminalRuntimeState,_0x16fbf0(0x1aa));export{BLOBS_DIR,COLLECTIONS_SUBDIR,COLLECTION_NAME_FORBIDDEN_RE,COMMANDS_FILE,DAY_INDEX_FILE,E2E_SUBDIR,ENV_FILE,EXPECT_FAIL_ANNOTATION,HEARTBEAT_FILE,HELPERS_SUBDIR,InvalidBlobHashError,LOCK_FILE,LOG_FILE,PICKER_SNAPSHOT_FILE,RUNNER_CONFIG_KEYS,RUNS_SUBDIR,RUNTIME_FILE,RUN_INDEX_SCHEMA_VERSION,RUN_MANIFEST_FILE,RUN_SOURCES_FILE,RunnerAdapterNotFoundError,RunnerNotConfiguredError,SCENARIOS_INDEX_DIR,SCENARIOS_LATEST_FILE,SCENARIO_RECENT_WINDOW,SECRETS_FILE,SEGMENT_NAME_FORBIDDEN_RE,SNAPSHOTS_SUBDIR,STDERR_FILE,STDOUT_FILE,STEPS_FILE,TERMINAL_RUNTIME_STATES,TERMINAL_WS_EVENT,UNOTEST_DIR,UnplaceableRunIdError,UnsupportedRunKindError,activeEnvName,blobPathFor,blobRelPathFor,blobRelSegmentsFor,blobsRootFor,categorizeVariable,debugDirFor,debuggerFileFor,deleteShadowWarning,envFileFor,envKeys,envLayerFilesFor,envNamesFromDirListing,foldScenarioRun,insertEnvVar,isAnnotationLine,isExternalVarName,isFailingStatus,isRegexLiteral,isRunnerConfigKey,isRunsDirName,isTerminalRuntimeState,makeRunId,parseAppServerEvent,parseEnvContent,parseScenarioAnnotations,planAddVariable,projectRunDirFor,projectRunsRoot,regexLiteral,removeEnvVar,requireRunDirFor,runDirFor,runIdStartedAt,runsDirFor,sanitizeRunIdSegment,scenarioIndexFileName,scenarioRefFromFileName,secretsFileFor,secretsLayerFilesFor,serializeEnvValue,shardDaysDescending,shardDirFor,shardPathForRunId,shardPathForTimestamp,testDirFor,validateCollectionName,validateSegmentName};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unotest/protocol",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.0",
|
|
4
4
|
"description": "Cross-runner protocol for the @unotest ecosystem: shared TypeScript types, path constants, the IRunnerAdapter contract that lets @unotest/viewer drive @unotest/web, @unotest/mobile (and future runners) through the same surface. Pure types + pure functions only — zero runtime deps, browser-safe.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|