@unotest/protocol 0.21.0 → 0.23.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 CHANGED
@@ -1,5 +1,30 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.23.0] - 2026-08-26
4
+
5
+ ### Minor Changes
6
+
7
+ - LLM-judge assertion for free-form text: `assertJudge(locator, rubric)`.
8
+
9
+ - New package `@unotest/judge` — the judge service (`npx @unotest/judge`):
10
+ judges text against a natural-language rubric and returns a structured
11
+ `{verdict, reasoning, model, attempts}`. Providers: `vertex` (Google
12
+ Vertex AI via ADC, no API keys; temperature pinned to 0) and `fake`
13
+ (deterministic, CI-safe). Non-determinism policy lives in the service:
14
+ `JUDGE_RETRIES` re-asks on `fail`, first `pass` wins.
15
+ - `@unotest/web`: new DSL assertion `assertJudge(locator, rubric)` — the
16
+ element's rendered text + the rubric go to the judge; a `fail` verdict
17
+ fails the step with the judge's reasoning. Wired via env so the config
18
+ sits in the `--env` overlay: `UNOTEST_JUDGE_MODE=off|local|remote`,
19
+ `UNOTEST_JUDGE_URL`, `UNOTEST_JUDGE_TOKEN`, `UNOTEST_JUDGE_TIMEOUT_MS`.
20
+ Every verdict (pass and fail) is recorded into the run's `steps.jsonl`.
21
+ Also documented: `shell()` runs with cwd = the project root
22
+ (`sandbox.shellCwd` to override) and returns `{stdout, stderr, code}`.
23
+ - `@unotest/protocol`: judge wire types (`JudgeRequest`, `JudgeVerdict`,
24
+ `JUDGE_ROUTES`) and the new `judge:verdict` run-artifact event.
25
+
26
+ ## [0.22.0] - 2026-08-26
27
+
3
28
  ## [0.21.0] - 2026-08-25
4
29
 
5
30
  ### Minor Changes
package/dist/index.d.ts CHANGED
@@ -420,6 +420,23 @@ interface ScreenshotEvent extends RunArtifactBase {
420
420
  line?: number;
421
421
  col?: number;
422
422
  }
423
+ /** One `assertJudge` verdict — pass AND fail, so the report explains a
424
+ * green run's judgements too. Unbound to a step (the DSL layer doesn't
425
+ * know source positions); consumers attribute it to the step in flight
426
+ * at emit time, like unbound `screenshot` events. */
427
+ interface JudgeVerdictEvent extends RunArtifactBase {
428
+ kind: "judge:verdict";
429
+ rubric: string;
430
+ /** The judged text (the resolved element's rendered text). */
431
+ text: string;
432
+ verdict: "pass" | "fail";
433
+ /** Judge-produced explanation of the verdict. */
434
+ reasoning: string;
435
+ /** Model id that produced the verdict (`fake` for the fake provider). */
436
+ model: string;
437
+ /** Provider calls the judge's retry policy spent (>= 1). */
438
+ attempts: number;
439
+ }
423
440
  /** Emitted ONCE after a failing run when the runner has finished writing
424
441
  * the D-16 failure bundle to disk. Viewer's inspector reads
425
442
  * `bundlePath` to fetch artifacts (screenshot, semantic DOM, network,
@@ -551,7 +568,7 @@ interface ToolResultEvent extends RunArtifactBase {
551
568
  };
552
569
  }
553
570
  /** Discriminated union of every JSONL event the scenario runner emits. */
554
- type RunArtifact = RunStartedEvent | StepStartedEvent | StepOkEvent | StepFailEvent | ScreenshotEvent | FailureBundleWrittenEvent | PausedEvent | ResumedEvent | LocatorPickedEvent | WheelChangedEvent | ProbeResultEvent | ToolCallEvent | ToolResultEvent | RunFinishedEvent;
571
+ type RunArtifact = RunStartedEvent | StepStartedEvent | StepOkEvent | StepFailEvent | ScreenshotEvent | JudgeVerdictEvent | FailureBundleWrittenEvent | PausedEvent | ResumedEvent | LocatorPickedEvent | WheelChangedEvent | ProbeResultEvent | ToolCallEvent | ToolResultEvent | RunFinishedEvent;
555
572
  interface CollectionRunStartedEvent extends RunArtifactBase {
556
573
  kind: "collection-run:started";
557
574
  runId: RunId;
@@ -1591,4 +1608,34 @@ interface RuntimeStateFile {
1591
1608
  updatedAt: number;
1592
1609
  }
1593
1610
 
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 };
1611
+ /** What the judge is asked to evaluate: free-form text against a natural-
1612
+ * language rubric. */
1613
+ interface JudgeRequest {
1614
+ /** Natural-language pass/fail criteria for `text`. */
1615
+ rubric: string;
1616
+ /** The text under judgement (e.g. a chat reply's rendered text). */
1617
+ text: string;
1618
+ }
1619
+ /** Structured verdict. `reasoning` is the explainability payload — it lands
1620
+ * in steps.jsonl / failure details so a red step is diagnosable without a
1621
+ * re-run. */
1622
+ interface JudgeVerdict {
1623
+ verdict: "pass" | "fail";
1624
+ /** Short model-produced (or fake-provider-produced) explanation. */
1625
+ reasoning: string;
1626
+ /** Model id that produced the verdict (`fake` for the fake provider). */
1627
+ model: string;
1628
+ /** How many provider calls the retry/vote policy spent (>= 1). */
1629
+ attempts: number;
1630
+ }
1631
+ interface JudgeErrorResponse {
1632
+ error: string;
1633
+ /** Machine code for control flow on the client side. */
1634
+ code?: "unauthorized" | "bad-request" | "provider-error" | "internal";
1635
+ }
1636
+ declare const JUDGE_ROUTES: {
1637
+ readonly judge: "/judge";
1638
+ readonly health: "/health";
1639
+ };
1640
+
1641
+ 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, JUDGE_ROUTES, type JudgeErrorResponse, type JudgeRequest, type JudgeVerdict, type JudgeVerdictEvent, 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 _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};
1
+ const _0x445962=_0x464d;(function(_0x245776,_0x3142d1){const _0x471db5={_0x5ee85c:0x229,_0x144b9e:0x231,_0x3e9737:0x230,_0x460565:0x1e2,_0x4c7597:0x22a,_0x482917:0x22d,_0x15f094:0x1ce},_0x1f4bb1=_0x464d,_0x576142=_0x245776();while(!![]){try{const _0x480820=-parseInt(_0x1f4bb1(0x1f8))/0x1+-parseInt(_0x1f4bb1(0x1f4))/0x2+-parseInt(_0x1f4bb1(_0x471db5._0x5ee85c))/0x3*(parseInt(_0x1f4bb1(0x23b))/0x4)+-parseInt(_0x1f4bb1(_0x471db5._0x144b9e))/0x5*(-parseInt(_0x1f4bb1(_0x471db5._0x3e9737))/0x6)+-parseInt(_0x1f4bb1(_0x471db5._0x460565))/0x7*(-parseInt(_0x1f4bb1(0x1db))/0x8)+parseInt(_0x1f4bb1(_0x471db5._0x4c7597))/0x9+parseInt(_0x1f4bb1(_0x471db5._0x482917))/0xa*(parseInt(_0x1f4bb1(_0x471db5._0x15f094))/0xb);if(_0x480820===_0x3142d1)break;else _0x576142['push'](_0x576142['shift']());}catch(_0x13969b){_0x576142['push'](_0x576142['shift']());}}}(_0x145c,0xe4aa3));var __defProp=Object[_0x445962(0x253)],__name=(_0x53742a,_0x1395e9)=>__defProp(_0x53742a,_0x445962(0x23e),{'value':_0x1395e9,'configurable':!![]});function parseAppServerEvent(_0x318ca5){const _0x25b0c9={_0x24a26c:0x22f,_0x5d47ca:0x1d7,_0x445fd2:0x226},_0x311575=_0x445962,_0x18d94a=_0x318ca5['trim']();if(!_0x18d94a[_0x311575(_0x25b0c9._0x24a26c)]('{'))return null;try{const _0x20d5aa=JSON[_0x311575(0x252)](_0x18d94a);if(_0x20d5aa['kind']===_0x311575(_0x25b0c9._0x5d47ca)||_0x20d5aa['kind']===_0x311575(0x261)||_0x20d5aa['kind']===_0x311575(_0x25b0c9._0x445fd2))return _0x20d5aa;return null;}catch{return null;}}__name(parseAppServerEvent,_0x445962(0x254));var UNOTEST_DIR=_0x445962(0x1e1),E2E_SUBDIR='e2e',HELPERS_SUBDIR=_0x445962(0x1d6),COLLECTIONS_SUBDIR=_0x445962(0x25c),RUNS_SUBDIR=_0x445962(0x20d),SNAPSHOTS_SUBDIR=_0x445962(0x1cb);function testDirFor(_0x3df7fa){return''+E2E_SUBDIR+_0x3df7fa;}__name(testDirFor,_0x445962(0x1e8));function runsDirFor(_0x3ce2e1,_0x52c22c){return''+RUNS_SUBDIR+_0x3ce2e1+(_0x52c22c?'.'+_0x52c22c:'');}__name(runsDirFor,_0x445962(0x246));function isRunsDirName(_0x951aee){const _0x3e8908={_0x56ff70:0x22f},_0x463e43=_0x445962;return _0x951aee===RUNS_SUBDIR||_0x951aee[_0x463e43(0x22f)](RUNS_SUBDIR+'-')||_0x951aee[_0x463e43(_0x3e8908._0x56ff70)](RUNS_SUBDIR+'.');}__name(isRunsDirName,'isRunsDirName');function debugDirFor(_0x13f823){return'.debug'+_0x13f823;}__name(debugDirFor,_0x445962(0x24d));function debuggerFileFor(_0x94b1c4){const _0x11fb41={_0x50b88a:0x26b},_0x235af8=_0x445962;return UNOTEST_DIR+_0x235af8(_0x11fb41._0x50b88a)+_0x94b1c4+'.json';}__name(debuggerFileFor,_0x445962(0x250));var LOCK_FILE='.viewer.lock',LOG_FILE=_0x445962(0x1fc),STEPS_FILE=_0x445962(0x21f),HEARTBEAT_FILE=_0x445962(0x203),DAY_INDEX_FILE=_0x445962(0x223),SCENARIOS_INDEX_DIR=_0x445962(0x20c),SCENARIOS_LATEST_FILE='_latest.json',STDOUT_FILE='stdout.log',STDERR_FILE=_0x445962(0x212),COMMANDS_FILE=_0x445962(0x25a),RUNTIME_FILE=_0x445962(0x26e),PICKER_SNAPSHOT_FILE='picker-snapshot.txt',ENV_FILE=_0x445962(0x1e4),SECRETS_FILE='unotest/.secrets';function envFileFor(_0xfe7a4,_0x3e2e10){return''+ENV_FILE+_0xfe7a4+(_0x3e2e10?'.'+_0x3e2e10:'');}__name(envFileFor,_0x445962(0x1c7));function secretsFileFor(_0x46b512,_0x3c41f6){return''+SECRETS_FILE+_0x46b512+(_0x3c41f6?'.'+_0x3c41f6:'');}__name(secretsFileFor,'secretsFileFor');function envLayerFilesFor(_0x167699,_0x5e6f21){return layersFor(ENV_FILE,_0x167699,_0x5e6f21);}__name(envLayerFilesFor,'envLayerFilesFor');function secretsLayerFilesFor(_0x2753a3,_0x195ef4){return layersFor(SECRETS_FILE,_0x2753a3,_0x195ef4);}__name(secretsLayerFilesFor,_0x445962(0x1eb));function layersFor(_0x271994,_0xd351a3,_0x801cd1){const _0x4816c0={_0x456560:0x1cc},_0x5a2c90=_0x445962,_0x268d36=[_0x271994];if(_0xd351a3)_0x268d36[_0x5a2c90(_0x4816c0._0x456560)](''+_0x271994+_0xd351a3);if(_0x801cd1){_0x268d36['push'](_0x271994+'.'+_0x801cd1);if(_0xd351a3)_0x268d36[_0x5a2c90(_0x4816c0._0x456560)](''+_0x271994+_0xd351a3+'.'+_0x801cd1);}return _0x268d36;}__name(layersFor,'layersFor');function activeEnvName(_0x5d16da){const _0x914f08={_0x30ae7a:0x214,_0x242e0f:0x206},_0x278d3d=_0x445962,_0x2f3e3c=_0x5d16da[_0x278d3d(_0x914f08._0x30ae7a)]?.[_0x278d3d(_0x914f08._0x242e0f)]();return _0x2f3e3c?_0x2f3e3c:void 0x0;}__name(activeEnvName,'activeEnvName');var RESERVED_ENV_NAMES=new Set([_0x445962(0x267),_0x445962(0x22e),_0x445962(0x241)]);function envNamesFromDirListing(_0x42b069,_0x51ba4e){const _0x115833={_0x1dfead:0x23f,_0x46c85f:0x24a,_0x5718c4:0x216,_0x4aac60:0x265},_0x107b1d=_0x445962,_0x4dbe64=[_0x107b1d(_0x115833._0x1dfead),'.secrets'][_0x107b1d(_0x115833._0x46c85f)](_0x26057a=>_0x51ba4e?[_0x26057a,''+_0x26057a+_0x51ba4e]:[_0x26057a]),_0x42dfa1=new Set();for(const _0x10819 of _0x42b069){for(const _0x47da75 of _0x4dbe64){const _0x3ee6f3=_0x47da75+'.';if(!_0x10819[_0x107b1d(0x22f)](_0x3ee6f3))continue;const _0x48b640=_0x10819['slice'](_0x3ee6f3[_0x107b1d(_0x115833._0x5718c4)]);if(!_0x48b640||_0x48b640[_0x107b1d(_0x115833._0x4aac60)]('/'))continue;if(RESERVED_ENV_NAMES['has'](_0x48b640))continue;_0x42dfa1[_0x107b1d(0x1e3)](_0x48b640);}}return[..._0x42dfa1]['sort']();}__name(envNamesFromDirListing,_0x445962(0x269));function isRegexLiteral(_0x56a771){const _0x5a5312={_0x1423da:0x248,_0x5775dc:0x217,_0x17d3c5:0x217},_0x4990c5=_0x445962;return typeof _0x56a771===_0x4990c5(_0x5a5312._0x1423da)&&_0x56a771!==null&&_0x56a771['kind']===_0x4990c5(0x262)&&typeof _0x56a771[_0x4990c5(0x22c)]===_0x4990c5(_0x5a5312._0x5775dc)&&typeof _0x56a771[_0x4990c5(0x215)]===_0x4990c5(_0x5a5312._0x17d3c5);}__name(isRegexLiteral,_0x445962(0x1d3));function regexLiteral(_0x2b7ad9,_0x4aa789=''){const _0xaff51c=_0x445962;return{'kind':_0xaff51c(0x262),'source':_0x2b7ad9,'flags':_0x4aa789};}__name(regexLiteral,_0x445962(0x204));var RAND_BYTES=0x6;function makeRunId(_0x6ad339){const _0x9ba913={_0x28c0f2:0x1fd,_0x12c9c7:0x1f9},_0x150fa0=_0x445962,_0x58e79c=sanitizeRunIdSegment(_0x6ad339),_0x435410=Date['now']()[_0x150fa0(_0x9ba913._0x28c0f2)](0x24),_0x2b8d18=new Uint8Array(RAND_BYTES);globalThis[_0x150fa0(0x1f1)][_0x150fa0(0x21a)](_0x2b8d18);let _0x245c36='';for(let _0x1f384e=0x0;_0x1f384e<_0x2b8d18[_0x150fa0(0x216)];_0x1f384e++){_0x245c36+=_0x2b8d18[_0x1f384e][_0x150fa0(_0x9ba913._0x28c0f2)](0x10)[_0x150fa0(_0x9ba913._0x12c9c7)](0x2,'0');}return _0x58e79c+'-'+_0x435410+'-'+_0x245c36;}__name(makeRunId,_0x445962(0x240));function sanitizeRunIdSegment(_0x4ef46c){const _0x2fb02d={_0x5a522d:0x216},_0x465f21=_0x445962,_0x52172e=_0x4ef46c[_0x465f21(0x1d5)](/[^a-zA-Z0-9_-]+/g,'-')[_0x465f21(0x1d5)](/-+/g,'-')['replace'](/^-|-$/g,'');return _0x52172e[_0x465f21(_0x2fb02d._0x5a522d)]>0x0?_0x52172e:'run';}__name(sanitizeRunIdSegment,_0x445962(0x224));var RANDOM_SUFFIX_RE=/^[0-9a-f]{6,}$/,MIN_PLAUSIBLE_MS=Date[_0x445962(0x207)](0x7e4,0x0,0x1),MAX_PLAUSIBLE_MS=Date[_0x445962(0x207)](0x834,0x0,0x1);function runIdStartedAt(_0x4fab88){const _0x1c9d89={_0x3f7beb:0x216,_0x10aca7:0x216,_0x272f73:0x220},_0x4ca1ad=_0x445962,_0x192126=_0x4fab88[_0x4ca1ad(0x249)]('-');if(_0x192126[_0x4ca1ad(_0x1c9d89._0x3f7beb)]<0x3)return null;const _0x35c450=_0x192126[_0x192126[_0x4ca1ad(_0x1c9d89._0x10aca7)]-0x1];if(!RANDOM_SUFFIX_RE[_0x4ca1ad(_0x1c9d89._0x272f73)](_0x35c450))return null;const _0x50a5ae=_0x192126[_0x192126[_0x4ca1ad(0x216)]-0x2];if(!/^[0-9a-z]+$/[_0x4ca1ad(0x220)](_0x50a5ae))return null;const _0x3a5c15=parseInt(_0x50a5ae,0x24);if(!Number[_0x4ca1ad(0x1cd)](_0x3a5c15))return null;if(_0x3a5c15<MIN_PLAUSIBLE_MS||_0x3a5c15>=MAX_PLAUSIBLE_MS)return null;return _0x3a5c15;}__name(runIdStartedAt,_0x445962(0x1fb));function shardPathForTimestamp(_0xc22bcd){const _0x448c94={_0x257eb5:0x1d9},_0xbec3ac=_0x445962,_0x1d69be=new Date(_0xc22bcd),_0x41ab71=String(_0x1d69be[_0xbec3ac(0x225)]())['padStart'](0x4,'0'),_0xce8e06=String(_0x1d69be[_0xbec3ac(_0x448c94._0x257eb5)]()+0x1)['padStart'](0x2,'0'),_0x8ba227=String(_0x1d69be['getUTCDate']())['padStart'](0x2,'0');return _0x41ab71+'/'+_0xce8e06+'/'+_0x8ba227;}__name(shardPathForTimestamp,_0x445962(0x24f));function shardPathForRunId(_0x1e2eb1){const _0x19092c=runIdStartedAt(_0x1e2eb1);return _0x19092c===null?null:shardPathForTimestamp(_0x19092c);}function _0x145c(){const _0xd5ec0f=['vw5ZDxbWB3j0zwrsDw5lAw5KrxjYB3i','lY5Kzwj1z2DLCG','vu5pvevtvf9mt0nbteu','zhvYyxrPB25nCW','CNvUDgLTzs5QC29U','zw52rMLSzuzVCG','AxngywLSAw5Nu3rHDhvZ','vu5pvevtvf9orvrxt1jl','l2P1zgDL','lNnUyxbZAg90CW','ChvZAa','AxngAw5PDgu','mZe5BvbRwKnV','zw5KC1DPDgG','Dw5RBM93BI1YDw5UzxiTA2v5','zMfPBgLUz1nPBMnL','CgfYC2vfBNzdB250zw50','AxnszwDLEeXPDgvYywW','C2nLBMfYAw9szwzgCM9TrMLSzu5HBwu','CMvWBgfJzq','x2HLBhbLCNm','yxbWlxnLCNzLCJPYzwfKEq','C2vJCMv0C0nVBNrLBNq','z2v0vvrdtw9UDgG','C2vJCMv0','ndC4nJu3nLvJCvPLqG','yMXVyNnsB290rM9Y','qxbW','igfSCMvHzhKGzxHPC3rZigLUia','C3rHCNrLzef0','CNvUBMvYici','Dw5VDgvZDa','n1L6r3nSrq','ywrK','Dw5VDgvZDc8Uzw52','DMfSAwrHDgvdB2XSzwn0Aw9UtMfTzq','vu5pvevtvf9eruzbvuXux1rjtuvpvvrFtvm','vu5pvevtvf9cuK9xu0vs','DgvZDerPCKzVCG','AgfZ','BwfUAwzLC3qUANnVBG','C2vJCMv0C0XHEwvYrMLSzxngB3i','vu5pvevtvf9iruferuq','iokaLcbWAwnRigeGzgLMzMvYzw50ig5HBwuGB3iGzwrPDcb0AguGzxHPC3rPBMCGDMfSDwuU','CgXHBKfKzfzHCMLHyMXL','vu5pvevtvf9erujvr19ive1mx01bwf9cwvrfuW','vu5pvevtvf9tte9xx01p','y3j5ChrV','yxnZAwDUBwvUDevUDhjPzxm','yMXVyLjLBfnLz21LBNrZrM9Y','mZaWotq2v2X1ENjc','C2HHCMreAxjgB3i','CNvUBMvY','yMXVyIbOyxnOig11C3qGyMuGBg93zxjJyxnLigHLEcWGz290oIa','mZuXnJKXwfHgvu5u','CgfKu3rHCNq','y2f0zwDVCML6zvzHCMLHyMXL','CNvUswrtDgfYDgvKqxq','lNzPzxDLCI5SB2C','Dg9tDhjPBMC','vu5pvevtvf9dqunirv9esvi','uNvUBMvYqwrHChrLCK5VDezVDw5KrxjYB3i','zMXVB3i','C2nLBMfYAw9jBMrLEezPBgvoyw1L','BxvZDcbUB3qGC3rHCNqGD2L0AcaNxYCGkhjLC2vYDMvKkq','AgvHCNrIzwf0','CMvNzxHmAxrLCMfS','Aw50zxjYDxb0zwq','DhjPBq','vvrd','C2vJCMv0CW','ig11C3qGyMuGvvbqrvjFu05bs0uGkguUzY4Gqvbqx0jbu0vFvvjmksbZBYbHihnJzw5HCMLVignHBIbYzwzLCMvUy2uGAxqGyNKGBMfTzs4','Axntzwn0Aw9UrgL2AwrLCG','uNvUBMvYtM90q29UzMLNDxjLzevYCM9Y','x3nJzw5HCMLVCW','lNj1BNm','iYaTls0G','zMLSDgvY','lMPZB25S','vu5pvevtvf9erujvr19quKvwsuvxx0jzvevt','C3rKzxjYlMXVzW','ywjVCNrLza','vu5pvevtvf9ftLy','zMXHz3m','BgvUz3rO','C3rYAw5N','iI4G','vu5pvevtvf9erujvr19nqvHFqLLurvm','z2v0uMfUzg9TvMfSDwvZ','Bwf0y2G','ic0Tlq','C291CMnLCY5QC29U','zM9SzfnJzw5HCMLVuNvU','C3rLChmUANnVBMW','DgvZDa','C3bSAwnL','AxnfEhrLCM5HBfzHCK5HBwu','x2rHEs5QC29UBa','C2fUAxrPEMvsDw5jzfnLz21LBNq','z2v0vvrdrNvSBfLLyxi','yxbWlxnLCNzLCJPLCNjVCG','rK9sq0vFq09mt1i','AM9PBG','m3bXEwzivW','mtqXmZmZm01uC1jusG','y29TCgXLDgvK','C291CMnL','mJG1otb5A21UwKi','C2fTCgXL','C3rHCNrZv2L0Aa','ndGXmZHMrNPVze8','mZK1Bwrvv0XR','C3bSAxrmAw5LCW','zMfPBgvK','igLZig5VDcbHigTUB3DUihj1BM5LCIbZzxr0Aw5NiokaLcbJAg9VC2uGB25LigzYB20GDgHLihj1BM5LCI1JB25MAwCGBgLZDc4','AxnuzxjTAw5HBfj1BNrPBwvtDgf0zq','refuqujbu0vFvvjm','C2vYAwfSAxPLrw52vMfSDwu','AxnsDw5UzxjdB25MAwDlzxK','vu5pvevtvf9erujvr19lruvqx0nbteXt','ChjVAMvJDfj1BKrPCKzVCG','mtmZmJq4CwDKAwPV','zhvWBgLJyxrL','AxnbC3nPz25Tzw50t2y','BMfTzq','lMvUDG','BwfRzvj1BKLK','DgvTCgXHDgu','vu5pvevtvf9usu1fwK9orq','igLZigfSC28GC2v0igLUihLVDxiGC2HLBgWGzw52AxjVBM1LBNqG4OcuigL0ihDPBgWGA2vLCcbYzxnVBhzPBMCGzNjVBsb0AgvYzsaODgHLigvUDMLYB25Tzw50ihDPBNmGB3zLCIb0AguGzMLSzsKU','C2HHCMreyxLZrgvZy2vUzgLUzW','C2HHCMrqyxrOrM9YuNvUswq','CNvUC0rPCKzVCG','C2XPy2u','B2jQzwn0','C3bSAxq','zMXHDe1HCa','C3rHDhvZ','CNvUswq','zgvIDwDeAxjgB3i','iIbKB2vZig5VDcbZDxbWB3j0ihj1BIbRAw5Kici','C2HHCMrqyxrOrM9YvgLTzxn0yw1W','zgvIDwDNzxjgAwXLrM9Y','vw5WBgfJzwfIBgvsDw5jzevYCM9Y','CgfYC2u','zgvMAw5LuhjVCgvYDhK','CgfYC2vbChbtzxj2zxjfDMvUDa','yxbW','yMXVyLbHDgHgB3i','BxvZDcbUB3qGC3rHCNqGD2L0AcaNlIC','AxnbC3nPz25Tzw50tgLUzq','zw52q29UDgvUDa','y29TBwfUzhmUANnVBMW','BxvZDcbUB3qGyMuGiI4Iig9YiciUlIi','x2nVBgXLy3rPB25Z','BxvZDcbIzsbHihn0CMLUzW','y2fUBM90igXVywqGCNvUBMvYigfKyxb0zxiGiG','DMfSAwrHDgvgC1nHzMvoyw1L','Dg9mB3DLCKnHC2u','yxbWlxnLCNzLCJPYzxvZzwq','CMvNzxG','CgfYC2vty2vUyxjPB0fUBM90yxrPB25Z','BxvZDcbUB3qGy29UDgfPBIbCic8GoIaQid8GiIa8id4GFcbVCIbJB250CM9SignOyxjHy3rLCNm','Aw5JBhvKzxm','CMvZzxj2zwrvBMrLCNnJB3jL','zxHHBxbSzq','zw52','zw52tMfTzxngCM9TrgLYtgLZDgLUzW'];_0x145c=function(){return _0xd5ec0f;};return _0x145c();}__name(shardPathForRunId,_0x445962(0x245));function runDirFor(_0x21af98,_0x3185e5){const _0x1116fc=shardPathForRunId(_0x3185e5);return _0x1116fc===null?null:_0x21af98+'/'+_0x1116fc+'/'+_0x3185e5;}__name(runDirFor,'runDirFor');var UnplaceableRunIdError=class extends Error{static{__name(this,_0x445962(0x251));}constructor(_0x101f4a){const _0x2f3375=_0x445962;super('runId\x20carries\x20no\x20timestamp,\x20cannot\x20place\x20it\x20in\x20a\x20shard:\x20'+_0x101f4a),this[_0x2f3375(0x23e)]=_0x2f3375(0x251);}};function requireRunDirFor(_0x170620,_0x48841b){const _0x259a66=runDirFor(_0x170620,_0x48841b);if(_0x259a66===null)throw new UnplaceableRunIdError(_0x48841b);return _0x259a66;}__name(requireRunDirFor,'requireRunDirFor');function projectRunsRoot(_0x3b0cc0='',_0xa17001){return UNOTEST_DIR+'/'+runsDirFor(_0x3b0cc0,_0xa17001);}__name(projectRunsRoot,'projectRunsRoot');function projectRunDirFor(_0x3c5af5,_0x247791='',_0x2ca999){return requireRunDirFor(projectRunsRoot(_0x247791,_0x2ca999),_0x3c5af5);}__name(projectRunDirFor,_0x445962(0x23a));function shardDirFor(_0x358c5e,_0x5dae54){return _0x358c5e+'/'+shardPathForTimestamp(_0x5dae54);}__name(shardDirFor,_0x445962(0x1f5));function*shardDaysDescending(_0x43882e,_0x2564bb,_0x545946){const _0x410ad1=_0x445962,_0x5578cc=0x5265c00;let _0x4f8237=Math[_0x410ad1(0x200)](_0x2564bb/_0x5578cc)*_0x5578cc;for(let _0x1323a8=0x0;_0x1323a8<_0x545946;_0x1323a8++){yield shardDirFor(_0x43882e,_0x4f8237),_0x4f8237-=_0x5578cc;}}__name(shardDaysDescending,_0x445962(0x244));var RUN_INDEX_SCHEMA_VERSION=0x2,SCENARIO_RECENT_WINDOW=0xc;function isFailingStatus(_0x5bb357){const _0x2da2cb={_0x1ef271:0x205},_0x26da8f=_0x445962;return _0x5bb357==='failed'||_0x5bb357===_0x26da8f(_0x2da2cb._0x1ef271);}__name(isFailingStatus,_0x445962(0x1c8));function foldScenarioRun(_0x3bdeac,_0xdcdad4){const _0x1ad344={_0x4320dd:0x24c,_0x1e1b66:0x24b,_0x3b89d8:0x1df,_0xe77f58:0x24b,_0x22d2cc:0x1d1},_0x26b258=_0x445962,_0x2bef50={'lastRunId':_0xdcdad4[_0x26b258(_0x1ad344._0x4320dd)],'lastStatus':_0xdcdad4[_0x26b258(_0x1ad344._0x1e1b66)],'lastAt':_0xdcdad4[_0x26b258(_0x1ad344._0x3b89d8)],'lastDurationMs':_0xdcdad4[_0x26b258(0x26d)],'recent':[..._0x3bdeac?.['recent']??[],_0xdcdad4[_0x26b258(0x24b)]]['slice'](-SCENARIO_RECENT_WINDOW)};if(!isFailingStatus(_0xdcdad4[_0x26b258(_0x1ad344._0xe77f58)]))return{..._0x2bef50,'failStreak':0x0,'failingSince':null};const _0x36dee6=(_0x3bdeac?.['failStreak']??0x0)+0x1;return{..._0x2bef50,'failStreak':_0x36dee6,'failingSince':_0x36dee6===0x1?_0xdcdad4['startedAt']:_0x3bdeac?.[_0x26b258(_0x1ad344._0x22d2cc)]??_0xdcdad4[_0x26b258(_0x1ad344._0x3b89d8)]};}__name(foldScenarioRun,_0x445962(0x21e));function scenarioIndexFileName(_0x5b2938){const _0x450f32={_0xbd7d6e:0x210},_0x17d3cd=_0x445962;return encodeURIComponent(_0x5b2938)+_0x17d3cd(_0x450f32._0xbd7d6e);}__name(scenarioIndexFileName,_0x445962(0x201));function scenarioRefFromFileName(_0x168205){const _0x4c201a={_0x36ebb7:0x210},_0x349f2a=_0x445962;if(!_0x168205[_0x349f2a(0x1cf)](_0x349f2a(_0x4c201a._0x36ebb7)))return null;try{return decodeURIComponent(_0x168205[_0x349f2a(0x247)](0x0,-'.jsonl'['length']));}catch{return null;}}__name(scenarioRefFromFileName,_0x445962(0x1d4));var BLOBS_DIR='_blobs',GENERATION_SEP='~',HASH_RE=/^[0-9a-f]{8,}$/,InvalidBlobHashError=class extends Error{static{__name(this,'InvalidBlobHashError');}constructor(_0x5e9009){const _0x5cbc7f={_0x12717b:0x1f7},_0x14b720=_0x445962;super(_0x14b720(_0x5cbc7f._0x12717b)+_0x5e9009),this['name']='InvalidBlobHashError';}};function blobPathFor(_0x95fc64,_0x46edd4,_0x311fb8,_0x379664=0x0){return _0x95fc64+'/'+blobRelPathFor(_0x46edd4,_0x311fb8,_0x379664);}__name(blobPathFor,_0x445962(0x256));function blobRelSegmentsFor(_0x812d52,_0x1ce514,_0x4b995c=0x0){const _0x59236e={_0x549d24:0x220,_0x365aa7:0x247},_0x5c7f3d=_0x445962;if(!HASH_RE[_0x5c7f3d(_0x59236e._0x549d24)](_0x812d52))throw new InvalidBlobHashError(_0x812d52);const _0x1647b0=_0x4b995c>0x0?''+GENERATION_SEP+_0x4b995c:'';return[BLOBS_DIR,_0x812d52[_0x5c7f3d(_0x59236e._0x365aa7)](0x0,0x2),_0x812d52[_0x5c7f3d(0x247)](0x2,0x4),''+_0x812d52+_0x1647b0+'.'+_0x1ce514];}__name(blobRelSegmentsFor,_0x445962(0x1f3));function blobRelPathFor(_0x3dcb46,_0x46e3d6,_0x4c060d=0x0){const _0x8b4924=_0x445962;return blobRelSegmentsFor(_0x3dcb46,_0x46e3d6,_0x4c060d)[_0x8b4924(0x228)]('/');}__name(blobRelPathFor,'blobRelPathFor');function blobsRootFor(_0x8254dc){return _0x8254dc+'/'+BLOBS_DIR;}__name(blobsRootFor,_0x445962(0x1dc));var FS_UNSAFE_NAME_RE=/[\\/:*?"<>|\x00-\x1f]/;function validateFsSafeName(_0xad0e0f,_0x216fae){const _0x52f338={_0x294b5f:0x217,_0x5cc179:0x206,_0x50bf0f:0x25b,_0x512550:0x257},_0x44232c=_0x445962;if(typeof _0xad0e0f!==_0x44232c(_0x52f338._0x294b5f))return _0x44232c(0x25d);const _0x12232a=_0xad0e0f[_0x44232c(_0x52f338._0x5cc179)]();if(_0x12232a[_0x44232c(0x216)]===0x0)return'must\x20not\x20be\x20empty';if(_0x12232a==='.'||_0x12232a==='..')return _0x44232c(_0x52f338._0x50bf0f);if(_0x12232a['startsWith']('.'))return _0x44232c(_0x52f338._0x512550);if(_0x216fae?.[_0x44232c(0x266)]&&_0x12232a[_0x44232c(0x22f)]('_'))return _0x44232c(0x202);if(FS_UNSAFE_NAME_RE[_0x44232c(0x220)](_0x12232a))return _0x44232c(0x264);return null;}__name(validateFsSafeName,_0x445962(0x25f));var COLLECTION_NAME_FORBIDDEN_RE=FS_UNSAFE_NAME_RE;function validateCollectionName(_0x28602f){return validateFsSafeName(_0x28602f);}__name(validateCollectionName,_0x445962(0x1e5));var RUN_MANIFEST_FILE=_0x445962(0x1ea),RUN_SOURCES_FILE=_0x445962(0x21d),UnsupportedRunKindError=class extends Error{static{__name(this,_0x445962(0x26a));}constructor(_0x148d0d,_0x8a63d2){const _0x4eb53b={_0x3888dd:0x26a},_0xec14cf=_0x445962;super(_0xec14cf(0x1e0)+_0x8a63d2+_0xec14cf(0x24e)+_0x148d0d+'\x22'),this[_0xec14cf(0x23e)]=_0xec14cf(_0x4eb53b._0x3888dd);}},RunnerAdapterNotFoundError=class extends Error{static{__name(this,_0x445962(0x1ff));}constructor(_0x5d06ee,_0x49c7ee){const _0x20380a={_0x5ea212:0x25e},_0x34af83=_0x445962;super(_0x34af83(_0x20380a._0x5ea212)+_0x5d06ee+_0x34af83(0x218)+_0x49c7ee),this['name']=_0x34af83(0x1ff);}},RunnerNotConfiguredError=class extends Error{static{__name(this,_0x445962(0x20b));}constructor(_0x21c19b){const _0x49fefb={_0x2592c7:0x20b},_0x376d66=_0x445962;super(_0x21c19b),this[_0x376d66(0x23e)]=_0x376d66(_0x49fefb._0x2592c7);}},EXPECT_FAIL_ANNOTATION='expect-fail',ANNOTATION_RE=/^\s*\/\/\s*@([a-z0-9-]+)\s*$/;function isAnnotationLine(_0x58eb9c){return ANNOTATION_RE['test'](_0x58eb9c);}__name(isAnnotationLine,'isAnnotationLine');function parseScenarioAnnotations(_0x6626d0){const _0x281f5e={_0x3f84e6:0x206,_0x3bafc3:0x21b,_0x332ec7:0x1e9},_0x51ebc9=_0x445962,_0x501cd9=new Set();for(const _0x1af030 of _0x6626d0['split'](/\r?\n/)){const _0xa06105=_0x1af030[_0x51ebc9(_0x281f5e._0x3f84e6)]();if(_0xa06105==='')continue;if(!_0xa06105[_0x51ebc9(0x22f)]('//'))break;const _0x7b0853=_0xa06105[_0x51ebc9(_0x281f5e._0x3bafc3)](ANNOTATION_RE);if(_0x7b0853)_0x501cd9['add'](_0x7b0853[0x1]);}return{'expectFail':_0x501cd9[_0x51ebc9(_0x281f5e._0x332ec7)](EXPECT_FAIL_ANNOTATION)};}__name(parseScenarioAnnotations,_0x445962(0x263));var SEGMENT_NAME_FORBIDDEN_RE=FS_UNSAFE_NAME_RE;function validateSegmentName(_0x40f342){return validateFsSafeName(_0x40f342,{'reservedUnderscore':!![]});}__name(validateSegmentName,'validateSegmentName');var TERMINAL_WS_EVENT='terminal',RUNNER_CONFIG_KEYS=new Set([_0x445962(0x1e7),_0x445962(0x1ec),_0x445962(0x1f0),_0x445962(0x1e6),'UNOTEST_DEFAULT_NAVIGATION_TIMEOUT_MS','UNOTEST_POPUP_GRACE_MS',_0x445962(0x26c),_0x445962(0x242),'UNOTEST_LOG_LEVEL','UNOTEST_DEBUG','UNOTEST_DEBUG_DIR',_0x445962(0x219),_0x445962(0x211),_0x445962(0x1ef),_0x445962(0x239),_0x445962(0x1c9),'UNOTEST_CONSOLE',_0x445962(0x1fe),'NO_COLOR',_0x445962(0x227),_0x445962(0x236)]);function isRunnerConfigKey(_0x2922d7){const _0x55935a={_0x56f370:0x1e9},_0x4e82cf=_0x445962;return RUNNER_CONFIG_KEYS[_0x4e82cf(_0x55935a._0x56f370)](_0x2922d7);}__name(isRunnerConfigKey,_0x445962(0x238));function categorizeVariable(_0x1247c6){const _0x325368={_0x2f57df:0x1f6,_0x4d19d3:0x255},_0x32d2b1=_0x445962;if(_0x1247c6['source']==='secrets')return'secret';return isRunnerConfigKey(_0x1247c6[_0x32d2b1(0x23e)])?_0x32d2b1(_0x325368._0x2f57df):_0x32d2b1(_0x325368._0x4d19d3);}__name(categorizeVariable,_0x445962(0x1fa));function isExternalVarName(_0x3a40ca){return/^[A-Z][A-Z0-9_]*$/['test'](_0x3a40ca);}__name(isExternalVarName,_0x445962(0x222));var ENV_KEY_RE=/^[A-Za-z_][A-Za-z0-9_]*$/;function*assignmentEntries(_0x3b84ec){const _0x1cbc22={_0x487fd2:0x206,_0x1eeed6:0x247,_0xacf1cf:0x220,_0xdcbdf9:0x247,_0xb1d4c4:0x206},_0x17b4b8=_0x445962;for(const _0x8e22e1 of _0x3b84ec[_0x17b4b8(0x249)](/\r?\n/)){const _0x4e651c=_0x8e22e1[_0x17b4b8(_0x1cbc22._0x487fd2)]();if(_0x4e651c===''||_0x4e651c['startsWith']('#'))continue;const _0x6d6cc3=_0x4e651c['indexOf']('=');if(_0x6d6cc3<=0x0)continue;const _0x33bd10=_0x4e651c[_0x17b4b8(_0x1cbc22._0x1eeed6)](0x0,_0x6d6cc3)['trim']();if(!ENV_KEY_RE[_0x17b4b8(_0x1cbc22._0xacf1cf)](_0x33bd10))continue;yield[_0x33bd10,_0x4e651c[_0x17b4b8(_0x1cbc22._0xdcbdf9)](_0x6d6cc3+0x1)[_0x17b4b8(_0x1cbc22._0xb1d4c4)]()];}}__name(assignmentEntries,_0x445962(0x1f2));function parseEnvContent(_0x3145cd){const _0x336c96=_0x445962,_0x29c2ed={};for(const [_0x1d2db3,_0xc05e2a]of assignmentEntries(_0x3145cd)){let _0x515ed9=_0xc05e2a;if(_0x515ed9[_0x336c96(0x216)]>=0x2){const _0x40670e=_0x515ed9[0x0],_0x14ce84=_0x515ed9[_0x515ed9['length']-0x1];(_0x40670e==='\x22'||_0x40670e==='\x27')&&_0x40670e===_0x14ce84&&(_0x515ed9=_0x515ed9[_0x336c96(0x247)](0x1,-0x1));}_0x29c2ed[_0x1d2db3]=_0x515ed9;}return _0x29c2ed;}__name(parseEnvContent,_0x445962(0x1d2));function serializeEnvValue(_0x4de119){const _0x42303a={_0xf03a41:0x1d5},_0x4e0a16=_0x445962;if(_0x4de119==='')return'';if(/[\s#"'=\\]|^[`]/[_0x4e0a16(0x220)](_0x4de119)||/[\n\r]/['test'](_0x4de119)){const _0x525045=_0x4de119[_0x4e0a16(0x1d5)](/\\/g,'\x5c\x5c')[_0x4e0a16(0x1d5)](/"/g,'\x5c\x22')[_0x4e0a16(_0x42303a._0xf03a41)](/\n/g,'\x5cn')[_0x4e0a16(0x1d5)](/\r/g,'\x5cr');return'\x22'+_0x525045+'\x22';}return _0x4de119;}__name(serializeEnvValue,_0x445962(0x237));function envKeys(_0x1b7c3d){const _0x21bb7d=new Set();for(const [_0x5bd69f]of assignmentEntries(_0x1b7c3d))_0x21bb7d['add'](_0x5bd69f);return _0x21bb7d;}__name(envKeys,'envKeys');function isSectionDivider(_0x23d843){const _0x3a6ac0={_0xce235d:0x22f,_0x213fd1:0x220},_0x4790ad=_0x445962,_0x2fa8dc=_0x23d843['trim']();return _0x2fa8dc[_0x4790ad(_0x3a6ac0._0xce235d)]('#')&&/---/[_0x4790ad(_0x3a6ac0._0x213fd1)](_0x2fa8dc);}__name(isSectionDivider,_0x445962(0x20a));function isAssignmentLine(_0x3d76e0){const _0xf87c4a={_0x5e1d25:0x206},_0x16a776=_0x445962,_0x1ab36d=_0x3d76e0[_0x16a776(_0xf87c4a._0x5e1d25)]();if(_0x1ab36d===''||_0x1ab36d['startsWith']('#'))return![];const _0x2000cb=_0x1ab36d['indexOf']('=');return _0x2000cb>0x0&&ENV_KEY_RE['test'](_0x1ab36d['slice'](0x0,_0x2000cb)['trim']());}__name(isAssignmentLine,_0x445962(0x258));function isAssignmentOf(_0xc53711,_0x3f8ee6){const _0x194ba4={_0x10e4cd:0x247},_0x1d4385=_0x445962,_0x3e66f2=_0xc53711[_0x1d4385(0x206)]();if(_0x3e66f2===''||_0x3e66f2[_0x1d4385(0x22f)]('#'))return![];const _0x197dcc=_0x3e66f2['indexOf']('=');if(_0x197dcc<=0x0)return![];return _0x3e66f2[_0x1d4385(_0x194ba4._0x10e4cd)](0x0,_0x197dcc)['trim']()===_0x3f8ee6;}__name(isAssignmentOf,_0x445962(0x23d));function splitLines(_0x8cb141){const _0x23dccf={_0x5de150:0x247},_0x5137f6=_0x445962,_0x534c21=_0x8cb141[_0x5137f6(0x1cf)]('\x0a'),_0x477412=_0x534c21?_0x8cb141[_0x5137f6(_0x23dccf._0x5de150)](0x0,-0x1):_0x8cb141;return{'lines':_0x477412===''?[]:_0x477412['split']('\x0a'),'trailingNewline':_0x534c21};}__name(splitLines,_0x445962(0x232));function joinLines(_0x9ab873,_0xb30aa5){const _0x5dbf70=_0x445962,_0x3cbf8f=_0x9ab873[_0x5dbf70(0x228)]('\x0a');return _0xb30aa5||_0x3cbf8f===''?_0x3cbf8f+'\x0a':_0x3cbf8f;}__name(joinLines,'joinLines');function insertEnvVar(_0x537a54,_0x1cbca8,_0x51931b,_0x18588b){const _0x4730ba={_0x1b3041:0x216,_0x1488d8:0x206,_0x32b940:0x221,_0x3a7852:0x1cc,_0x43bd09:0x21c,_0x374ea1:0x1cc},_0x422f59=_0x445962,_0x216bf6=_0x1cbca8+'='+serializeEnvValue(_0x51931b),{lines:_0x39536c,trailingNewline:_0x4167a4}=splitLines(_0x537a54);if(_0x18588b){const _0x47c567=new RegExp('\x5cb'+_0x18588b['toLowerCase']()+'\x5cb'),_0x323702=_0x39536c['findIndex'](_0x210902=>isSectionDivider(_0x210902)&&_0x47c567[_0x422f59(0x220)](_0x210902[_0x422f59(0x260)]()));if(_0x323702!==-0x1){let _0x141dd8=_0x39536c[_0x422f59(0x216)];for(let _0x1bf99a=_0x323702+0x1;_0x1bf99a<_0x39536c[_0x422f59(_0x4730ba._0x1b3041)];_0x1bf99a++){if(isSectionDivider(_0x39536c[_0x1bf99a])){_0x141dd8=_0x1bf99a;break;}}let _0x49f83f=-0x1,_0x47ef1b=-0x1;for(let _0x3b7116=_0x323702+0x1;_0x3b7116<_0x141dd8;_0x3b7116++){if(_0x39536c[_0x3b7116][_0x422f59(_0x4730ba._0x1488d8)]()!=='')_0x47ef1b=_0x3b7116;if(isAssignmentLine(_0x39536c[_0x3b7116]))_0x49f83f=_0x3b7116;}const _0x3cfda4=_0x49f83f>=0x0?_0x49f83f:_0x47ef1b,_0x139844=_0x3cfda4>=0x0?_0x3cfda4+0x1:_0x323702+0x1;return _0x39536c[_0x422f59(_0x4730ba._0x32b940)](_0x139844,0x0,_0x216bf6),joinLines(_0x39536c,_0x4167a4||_0x39536c[_0x422f59(0x216)]>0x0);}if(_0x39536c[_0x422f59(0x216)]>0x0)_0x39536c[_0x422f59(0x1cc)]('');return _0x39536c[_0x422f59(_0x4730ba._0x3a7852)](_0x422f59(0x20e)+_0x18588b+_0x422f59(_0x4730ba._0x43bd09),_0x216bf6),joinLines(_0x39536c,!![]);}return _0x39536c[_0x422f59(_0x4730ba._0x374ea1)](_0x216bf6),joinLines(_0x39536c,!![]);}__name(insertEnvVar,'insertEnvVar');function removeEnvVar(_0x10c5c9,_0x148e50){const _0x1a83c9={_0x29b12d:0x216},_0x5cc928=_0x445962,{lines:_0x30663a,trailingNewline:_0x37ce0d}=splitLines(_0x10c5c9),_0x3b8849=_0x30663a[_0x5cc928(0x20f)](_0x25a42a=>!isAssignmentOf(_0x25a42a,_0x148e50)),_0x4c5049=_0x3b8849[_0x5cc928(_0x1a83c9._0x29b12d)]!==_0x30663a[_0x5cc928(0x216)];return{'content':joinLines(_0x3b8849,_0x37ce0d),'removed':_0x4c5049};}__name(removeEnvVar,'removeEnvVar');var SECTION_BY_KIND={'app':_0x445962(0x1dd),'runner':'Runner','secret':void 0x0};function planAddVariable(_0x4ec7cd){const _0x5c065c={_0x4e0c0:0x234,_0x5e621f:0x259,_0x4f7bb5:0x1d8,_0x4e20b1:0x1da,_0x223a9e:0x208,_0x2891d1:0x208,_0x54c5ad:0x208,_0x352e11:0x23c,_0x7d7dae:0x1ed},_0x1b2914=_0x445962,{name:_0x161dd4,kind:_0x24bee0}=_0x4ec7cd;if(_0x24bee0===_0x1b2914(0x1f6)){if(!isRunnerConfigKey(_0x161dd4))return{'ok':![],'code':_0x1b2914(0x1d0),'message':_0x161dd4+_0x1b2914(_0x5c065c._0x4e0c0)};}else{if(!isExternalVarName(_0x161dd4))return{'ok':![],'code':'invalid-name','message':_0x161dd4+_0x1b2914(0x209)};}const _0x18ddbd=envKeys(_0x4ec7cd[_0x1b2914(_0x5c065c._0x5e621f)])['has'](_0x161dd4),_0xaf6ee7=envKeys(_0x4ec7cd[_0x1b2914(_0x5c065c._0x4f7bb5)])[_0x1b2914(0x1e9)](_0x161dd4),_0x4e29a2=_0x24bee0===_0x1b2914(_0x5c065c._0x4e20b1)?_0x1b2914(_0x5c065c._0x223a9e):_0x1b2914(0x268),_0x4e58e6=_0x4e29a2===_0x1b2914(_0x5c065c._0x2891d1)?_0xaf6ee7:_0x18ddbd,_0x4e6edb=_0x4e29a2===_0x1b2914(_0x5c065c._0x54c5ad)?'unotest/.secrets':_0x1b2914(0x1e4);if(_0x4e58e6)return{'ok':![],'code':_0x1b2914(_0x5c065c._0x352e11),'message':_0x161dd4+_0x1b2914(0x1de)+_0x4e6edb+_0x1b2914(_0x5c065c._0x7d7dae)};const _0x6673f1=[];return _0x24bee0===_0x1b2914(0x1da)&&_0x18ddbd&&_0x6673f1[_0x1b2914(0x1cc)](_0x161dd4+'\x20is\x20also\x20set\x20in\x20unotest/.env\x20—\x20the\x20secret\x20value\x20now\x20shadows\x20it.'),_0x24bee0!==_0x1b2914(0x1da)&&_0xaf6ee7&&_0x6673f1['push'](_0x161dd4+'\x20is\x20also\x20set\x20in\x20unotest/.secrets\x20—\x20the\x20secret\x20value\x20shadows\x20this\x20one.'),{'ok':!![],'target':_0x4e29a2,'sectionLabel':SECTION_BY_KIND[_0x24bee0],'warnings':_0x6673f1};}__name(planAddVariable,_0x445962(0x1ee));function deleteShadowWarning(_0x17748a,_0x17d782,_0x47f074){const _0x23af18={_0x23b9e1:0x243},_0x49ec32=_0x445962;if(_0x47f074!==void 0x0&&_0x47f074!==_0x17d782)return[_0x17748a+_0x49ec32(_0x23af18._0x23b9e1)];return[];}function _0x464d(_0x2be70b,_0x5c32e9){_0x2be70b=_0x2be70b-0x1c7;const _0x145ca3=_0x145c();let _0x464d67=_0x145ca3[_0x2be70b];if(_0x464d['dqjBvX']===undefined){var _0x4e4ef8=function(_0x11d32b){const _0x407fcd='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x53742a='',_0x1395e9='';for(let _0x318ca5=0x0,_0x18d94a,_0x20d5aa,_0x3df7fa=0x0;_0x20d5aa=_0x11d32b['charAt'](_0x3df7fa++);~_0x20d5aa&&(_0x18d94a=_0x318ca5%0x4?_0x18d94a*0x40+_0x20d5aa:_0x20d5aa,_0x318ca5++%0x4)?_0x53742a+=String['fromCharCode'](0xff&_0x18d94a>>(-0x2*_0x318ca5&0x6)):0x0){_0x20d5aa=_0x407fcd['indexOf'](_0x20d5aa);}for(let _0x3ce2e1=0x0,_0x52c22c=_0x53742a['length'];_0x3ce2e1<_0x52c22c;_0x3ce2e1++){_0x1395e9+='%'+('00'+_0x53742a['charCodeAt'](_0x3ce2e1)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1395e9);};_0x464d['Hluuuy']=_0x4e4ef8,_0x464d['vGFUVr']={},_0x464d['dqjBvX']=!![];}const _0x279ba9=_0x145ca3[0x0],_0x305b1f=_0x2be70b+_0x279ba9,_0x3e34b7=_0x464d['vGFUVr'][_0x305b1f];return!_0x3e34b7?(_0x464d67=_0x464d['Hluuuy'](_0x464d67),_0x464d['vGFUVr'][_0x305b1f]=_0x464d67):_0x464d67=_0x3e34b7,_0x464d67;}__name(deleteShadowWarning,'deleteShadowWarning');var TERMINAL_RUNTIME_STATES=[_0x445962(0x22b),_0x445962(0x233),_0x445962(0x213)];function isTerminalRuntimeState(_0x441658){return TERMINAL_RUNTIME_STATES['includes'](_0x441658);}__name(isTerminalRuntimeState,_0x445962(0x235));var JUDGE_ROUTES={'judge':_0x445962(0x1ca),'health':'/health'};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,JUDGE_ROUTES,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.21.0",
3
+ "version": "0.23.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": {