@e2edev/e2e 0.9.0 → 0.10.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.
Files changed (125) hide show
  1. package/README.md +2 -2
  2. package/dist/agent/act-validation.js +1 -1
  3. package/dist/agent/act-validation.js.map +1 -1
  4. package/dist/agent/act.d.ts +1 -0
  5. package/dist/agent/act.d.ts.map +1 -1
  6. package/dist/agent/act.js +27 -18
  7. package/dist/agent/act.js.map +1 -1
  8. package/dist/agent/index.d.ts.map +1 -1
  9. package/dist/agent/index.js +17 -12
  10. package/dist/agent/index.js.map +1 -1
  11. package/dist/agent/invocation.d.ts +26 -6
  12. package/dist/agent/invocation.d.ts.map +1 -1
  13. package/dist/agent/invocation.js +9 -6
  14. package/dist/agent/invocation.js.map +1 -1
  15. package/dist/cli/index.d.ts.map +1 -1
  16. package/dist/cli/index.js +3 -0
  17. package/dist/cli/index.js.map +1 -1
  18. package/dist/cli/init/engine-versions.json +1 -0
  19. package/dist/cli/init/engines.d.ts +11 -6
  20. package/dist/cli/init/engines.d.ts.map +1 -1
  21. package/dist/cli/init/engines.js +23 -4
  22. package/dist/cli/init/engines.js.map +1 -1
  23. package/dist/cli/init/scaffold.d.ts.map +1 -1
  24. package/dist/cli/init/scaffold.js +5 -3
  25. package/dist/cli/init/scaffold.js.map +1 -1
  26. package/dist/cli/init.d.ts.map +1 -1
  27. package/dist/cli/init.js +0 -6
  28. package/dist/cli/init.js.map +1 -1
  29. package/dist/collect/registry.d.ts.map +1 -1
  30. package/dist/collect/registry.js +3 -0
  31. package/dist/collect/registry.js.map +1 -1
  32. package/dist/collect/select.d.ts +2 -0
  33. package/dist/collect/select.d.ts.map +1 -1
  34. package/dist/collect/select.js +9 -0
  35. package/dist/collect/select.js.map +1 -1
  36. package/dist/config/agent.d.ts +3 -1
  37. package/dist/config/agent.d.ts.map +1 -1
  38. package/dist/config/agent.js +25 -24
  39. package/dist/config/agent.js.map +1 -1
  40. package/dist/config/esm-hooks.d.ts +28 -0
  41. package/dist/config/esm-hooks.d.ts.map +1 -0
  42. package/dist/config/esm-hooks.js +35 -0
  43. package/dist/config/esm-hooks.js.map +1 -0
  44. package/dist/config/load.d.ts +6 -0
  45. package/dist/config/load.d.ts.map +1 -1
  46. package/dist/config/load.js +52 -5
  47. package/dist/config/load.js.map +1 -1
  48. package/dist/config/resolve.d.ts +7 -0
  49. package/dist/config/resolve.d.ts.map +1 -1
  50. package/dist/config/resolve.js +53 -13
  51. package/dist/config/resolve.js.map +1 -1
  52. package/dist/engine/index.d.ts +8 -2
  53. package/dist/engine/index.d.ts.map +1 -1
  54. package/dist/engine/index.js.map +1 -1
  55. package/dist/engine/surface.d.ts +2 -2
  56. package/dist/engine/surface.d.ts.map +1 -1
  57. package/dist/internal/atomic-write.d.ts +1 -1
  58. package/dist/internal/atomic-write.d.ts.map +1 -1
  59. package/dist/internal/atomic-write.js.map +1 -1
  60. package/dist/internal/package-version.d.ts +2 -0
  61. package/dist/internal/package-version.d.ts.map +1 -1
  62. package/dist/internal/package-version.js +9 -0
  63. package/dist/internal/package-version.js.map +1 -1
  64. package/dist/internal/redact.d.ts +12 -4
  65. package/dist/internal/redact.d.ts.map +1 -1
  66. package/dist/internal/redact.js +61 -12
  67. package/dist/internal/redact.js.map +1 -1
  68. package/dist/internal/zip.d.ts +32 -0
  69. package/dist/internal/zip.d.ts.map +1 -0
  70. package/dist/internal/zip.js +183 -0
  71. package/dist/internal/zip.js.map +1 -0
  72. package/dist/report/build.d.ts +2 -0
  73. package/dist/report/build.d.ts.map +1 -1
  74. package/dist/report/build.js.map +1 -1
  75. package/dist/report/list.d.ts.map +1 -1
  76. package/dist/report/list.js +2 -0
  77. package/dist/report/list.js.map +1 -1
  78. package/dist/run/artifacts.d.ts.map +1 -1
  79. package/dist/run/artifacts.js +8 -6
  80. package/dist/run/artifacts.js.map +1 -1
  81. package/dist/run/events.d.ts +2 -0
  82. package/dist/run/events.d.ts.map +1 -1
  83. package/dist/run/events.js.map +1 -1
  84. package/dist/run/execute.d.ts.map +1 -1
  85. package/dist/run/execute.js +29 -2
  86. package/dist/run/execute.js.map +1 -1
  87. package/dist/run/fixtures.d.ts +10 -1
  88. package/dist/run/fixtures.d.ts.map +1 -1
  89. package/dist/run/fixtures.js +39 -22
  90. package/dist/run/fixtures.js.map +1 -1
  91. package/dist/run/records.d.ts +8 -6
  92. package/dist/run/records.d.ts.map +1 -1
  93. package/dist/run/runner.d.ts +2 -0
  94. package/dist/run/runner.d.ts.map +1 -1
  95. package/dist/run/runner.js +3 -0
  96. package/dist/run/runner.js.map +1 -1
  97. package/dist/run/secrecy.d.ts +23 -0
  98. package/dist/run/secrecy.d.ts.map +1 -0
  99. package/dist/run/secrecy.js +22 -0
  100. package/dist/run/secrecy.js.map +1 -0
  101. package/dist/run/steps.d.ts +4 -0
  102. package/dist/run/steps.d.ts.map +1 -1
  103. package/dist/run/steps.js +1 -0
  104. package/dist/run/steps.js.map +1 -1
  105. package/dist/run/trace-redaction.d.ts +17 -0
  106. package/dist/run/trace-redaction.d.ts.map +1 -0
  107. package/dist/run/trace-redaction.js +148 -0
  108. package/dist/run/trace-redaction.js.map +1 -0
  109. package/dist/run/worker-models.d.ts +14 -14
  110. package/dist/run/worker-models.d.ts.map +1 -1
  111. package/dist/run/worker-models.js +41 -26
  112. package/dist/run/worker-models.js.map +1 -1
  113. package/dist/types.d.ts +22 -11
  114. package/dist/types.d.ts.map +1 -1
  115. package/package.json +3 -3
  116. package/skills/e2e/SKILL.md +2 -2
  117. package/skills/e2e/references/agent.md +6 -6
  118. package/skills/e2e/references/debugging.md +1 -1
  119. package/skills/e2e/references/running.md +4 -0
  120. package/skills/e2e/references/setup.md +10 -9
  121. package/skills/e2e/references/writing-tests.md +1 -0
  122. package/dist/config/esm.d.ts +0 -4
  123. package/dist/config/esm.d.ts.map +0 -1
  124. package/dist/config/esm.js +0 -35
  125. package/dist/config/esm.js.map +0 -1
@@ -88,7 +88,9 @@ export declare const DEFAULT_OBSERVATION_BYTES = 262144;
88
88
  * resolved first: the context budget is a limits key, and the dependency runs
89
89
  * in exactly one direction.
90
90
  */
91
- export declare function resolveAgentConfig(raw: E2EConfig, env: NodeJS.ProcessEnv, ci: boolean, limits: ResolvedBaseLimits): ResolvedAgentConfig;
91
+ export declare function resolveAgentConfig(value: E2EConfig['agents'] extends Readonly<Record<string, infer Entry>> | undefined ? Entry | undefined : never, env: NodeJS.ProcessEnv, ci: boolean, limits: ResolvedBaseLimits,
92
+ /** The config path of this agent in diagnostics: `agents.default`, `agents.ux`. */
93
+ label?: string): ResolvedAgentConfig;
92
94
  /** Resolves the `limits` block. The observation budget is attached by the caller. */
93
95
  export declare function resolveLimits(raw: E2EConfig): ResolvedBaseLimits;
94
96
  /** True for the closed `vision` value set, wherever it is supplied. */
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/config/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/config/agent.ts"],"names":[],"mappings":"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"}
@@ -41,8 +41,9 @@ const LIMIT_BOUNDS = {
41
41
  * resolved first: the context budget is a limits key, and the dependency runs
42
42
  * in exactly one direction.
43
43
  */
44
- export function resolveAgentConfig(raw, env, ci, limits) {
45
- const value = raw.agent;
44
+ export function resolveAgentConfig(value, env, ci, limits,
45
+ /** The config path of this agent in diagnostics: `agents.default`, `agents.ux`. */
46
+ label = 'agents.default') {
46
47
  // Three accepted shapes: the agent itself, an options object, or
47
48
  // an options object carrying `executor` — a custom brain no longer forfeits
48
49
  // the model, budgets, or context.
@@ -51,39 +52,39 @@ export function resolveAgentConfig(raw, env, ci, limits) {
51
52
  let executor = bare;
52
53
  if (agent !== undefined) {
53
54
  if (typeof agent !== 'object' || agent === null || Array.isArray(agent)) {
54
- throw new ConfigurationError('INVALID_CONFIG', 'agent must be an options object or the agent itself: createAgent(...) or any { name, runStep(context) }');
55
+ throw new ConfigurationError('INVALID_CONFIG', `${label} must be an options object or the agent itself: createAgent(...) or any { name, runStep(context) }`);
55
56
  }
56
57
  for (const key of Object.keys(agent)) {
57
58
  if (!AGENT_KEYS.has(key)) {
58
- throw new ConfigurationError('INVALID_CONFIG', `unknown agent config key "${key}"${didYouMean(key, [...AGENT_KEYS])}`);
59
+ throw new ConfigurationError('INVALID_CONFIG', `unknown ${label} key "${key}"${didYouMean(key, [...AGENT_KEYS])}`);
59
60
  }
60
61
  }
61
62
  if (agent.executor !== undefined) {
62
63
  if (!isStepExecutor(agent.executor)) {
63
- throw new ConfigurationError('INVALID_CONFIG', 'agent.executor must be a StepExecutor: createAgent(...) or any { name, runStep(context) }');
64
+ throw new ConfigurationError('INVALID_CONFIG', `${label}.executor must be a StepExecutor: createAgent(...) or any { name, runStep(context) }`);
64
65
  }
65
66
  executor = agent.executor;
66
67
  }
67
68
  }
68
- const maxSteps = boundedInt(agent?.maxSteps, 'agent.maxSteps', 1, 100) ?? 25;
69
- const maxModelCalls = boundedInt(agent?.maxModelCalls, 'agent.maxModelCalls', 1, 100) ?? 25;
70
- const maxObservationBytes = boundedInt(agent?.maxObservationBytes, 'agent.maxObservationBytes', 1_024, 16_777_216) ??
69
+ const maxSteps = boundedInt(agent?.maxSteps, `${label}.maxSteps`, 1, 100) ?? 25;
70
+ const maxModelCalls = boundedInt(agent?.maxModelCalls, `${label}.maxModelCalls`, 1, 100) ?? 25;
71
+ const maxObservationBytes = boundedInt(agent?.maxObservationBytes, `${label}.maxObservationBytes`, 1_024, 16_777_216) ??
71
72
  DEFAULT_OBSERVATION_BYTES;
72
- const context = resolveContext(agent?.context, limits.maxAgentContextBytes);
73
+ const context = resolveContext(agent?.context, limits.maxAgentContextBytes, label);
73
74
  const vision = agent?.vision ?? false;
74
75
  if (!isVisionMode(vision)) {
75
- throw new ConfigurationError('INVALID_CONFIG', "agent.vision must be true, false, 'fallback', or 'only'");
76
+ throw new ConfigurationError('INVALID_CONFIG', `${label}.vision must be true, false, 'fallback', or 'only'`);
76
77
  }
77
78
  return {
78
79
  executor,
79
- model: resolveCanonicalModel(agent?.model, executor?.model, env),
80
- visionModel: resolveModel(agent?.visionModel, env, 'agent.visionModel', 'E2E_VISION_MODEL'),
80
+ model: resolveCanonicalModel(agent?.model, executor?.model, env, label),
81
+ visionModel: resolveModel(agent?.visionModel, env, `${label}.visionModel`, 'E2E_VISION_MODEL'),
81
82
  maxSteps,
82
83
  maxModelCalls,
83
84
  maxObservationBytes,
84
85
  context,
85
86
  vision,
86
- providerOptions: resolveProviderOptions(agent?.providerOptions),
87
+ providerOptions: resolveProviderOptions(agent?.providerOptions, label),
87
88
  };
88
89
  }
89
90
  /**
@@ -91,15 +92,15 @@ export function resolveAgentConfig(raw, env, ci, limits) {
91
92
  * records, the shape the AI SDK reads. Option values are the provider's own
92
93
  * business and pass through untouched.
93
94
  */
94
- function resolveProviderOptions(value) {
95
+ function resolveProviderOptions(value, label) {
95
96
  if (value === undefined)
96
97
  return undefined;
97
98
  if (!isPlainObject(value)) {
98
- throw new ConfigurationError('INVALID_CONFIG', 'agent.providerOptions must be an object keyed by provider name');
99
+ throw new ConfigurationError('INVALID_CONFIG', `${label}.providerOptions must be an object keyed by provider name`);
99
100
  }
100
101
  for (const [provider, options] of Object.entries(value)) {
101
102
  if (!isPlainObject(options)) {
102
- throw new ConfigurationError('INVALID_CONFIG', `agent.providerOptions.${provider} must be an object of provider options`);
103
+ throw new ConfigurationError('INVALID_CONFIG', `${label}.providerOptions.${provider} must be an object of provider options`);
103
104
  }
104
105
  }
105
106
  return value;
@@ -161,9 +162,9 @@ export function isModelInstance(value) {
161
162
  * `E2E_MODEL`. An `agent.model` naming a different model than the executor's
162
163
  * is rejected: two configured models would split the tiers silently.
163
164
  */
164
- function resolveCanonicalModel(configured, executorModel, env) {
165
+ function resolveCanonicalModel(configured, executorModel, env, label) {
165
166
  if (executorModel === undefined)
166
- return resolveModel(configured, env);
167
+ return resolveModel(configured, env, `${label}.model`);
167
168
  const own = {
168
169
  kind: 'instance',
169
170
  provider: executorModel.provider,
@@ -172,9 +173,9 @@ function resolveCanonicalModel(configured, executorModel, env) {
172
173
  };
173
174
  if (configured === undefined)
174
175
  return own;
175
- const explicit = resolveModel(configured, env);
176
+ const explicit = resolveModel(configured, env, `${label}.model`);
176
177
  if (explicit !== undefined && (explicit.provider !== own.provider || explicit.id !== own.id)) {
177
- throw new ConfigurationError('INVALID_CONFIG', `agent.model (${explicit.provider}/${explicit.id}) and the executor's own model (${own.provider}/${own.id}) differ; configure the model in one place`);
178
+ throw new ConfigurationError('INVALID_CONFIG', `${label}.model (${explicit.provider}/${explicit.id}) and the executor's own model (${own.provider}/${own.id}) differ; configure the model in one place`);
178
179
  }
179
180
  return own;
180
181
  }
@@ -186,7 +187,7 @@ function resolveCanonicalModel(configured, executorModel, env) {
186
187
  * author actually wrote. There is no implicit default model; an unconfigured
187
188
  * model fails at its first model call, so a custom-executor run needs none.
188
189
  */
189
- function resolveModel(model, env, label = 'agent.model', envName = 'E2E_MODEL') {
190
+ function resolveModel(model, env, label = 'agents.default.model', envName = 'E2E_MODEL') {
190
191
  if (model === undefined) {
191
192
  const fromEnv = env[envName];
192
193
  if (fromEnv === undefined || fromEnv.trim() === '')
@@ -275,15 +276,15 @@ function validateApiKeyEnv(apiKeyEnv, label) {
275
276
  }
276
277
  return apiKeyEnv;
277
278
  }
278
- function resolveContext(context, maxBytes) {
279
+ function resolveContext(context, maxBytes, label) {
279
280
  if (context === undefined)
280
281
  return undefined;
281
282
  if (typeof context !== 'string') {
282
- throw new ConfigurationError('INVALID_CONFIG', 'agent.context must be a string');
283
+ throw new ConfigurationError('INVALID_CONFIG', `${label}.context must be a string`);
283
284
  }
284
285
  const bytes = new TextEncoder().encode(context).byteLength;
285
286
  if (bytes > maxBytes) {
286
- throw new ConfigurationError('INVALID_CONFIG', `agent.context is ${bytes} bytes; the resolved maximum is ${maxBytes}`);
287
+ throw new ConfigurationError('INVALID_CONFIG', `${label}.context is ${bytes} bytes; the resolved maximum is ${maxBytes}`);
287
288
  }
288
289
  return context;
289
290
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/config/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/config/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Module customization hook: the TypeScript a project reaches by path is ESM,
3
+ * whatever the nearest package.json says.
4
+ *
5
+ * Config and tests load through tsx's ESM API. tsx types a `.ts` file by its
6
+ * package scope and hands a CommonJS-scoped one to Node's require, which that
7
+ * API never hooks, so the import fails as "cannot find module" on a path that
8
+ * carries e2e's cache-busting query. Registered before tsx, this hook runs
9
+ * inside tsx's chain: tsx's resolve receives `format: 'module'` from it and
10
+ * transforms the file as ESM. A Next.js app, or any package without
11
+ * `"type": "module"`, keeps its module type.
12
+ *
13
+ * Only path specifiers are forced: the entry file URL, `./helper.ts`, and
14
+ * tsconfig `paths` aliases, which tsx maps to `file:` URLs (on every platform)
15
+ * before calling this hook.
16
+ * A bare specifier is a package, linked or installed, and keeps the format its
17
+ * own manifest declares; `.cts` files stay CommonJS.
18
+ */
19
+ import type { ResolveHook, ResolveHookSync } from 'node:module';
20
+ type Resolution = ReturnType<ResolveHookSync>;
21
+ /** The resolution, with a TypeScript file reached by path marked as an ES module. */
22
+ export declare function asModule(specifier: string, resolution: Resolution): Resolution;
23
+ /** For `module.registerHooks`. */
24
+ export declare const resolveSync: ResolveHookSync;
25
+ /** For `module.register`, which reads this export from the hook module. */
26
+ export declare const resolve: ResolveHook;
27
+ export {};
28
+ //# sourceMappingURL=esm-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esm-hooks.d.ts","sourceRoot":"","sources":["../../src/config/esm-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEhE,KAAK,UAAU,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;AAK9C,qFAAqF;AACrF,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,CAK9E;AAED,kCAAkC;AAClC,eAAO,MAAM,WAAW,EAAE,eAC4B,CAAC;AAEvD,2EAA2E;AAC3E,eAAO,MAAM,OAAO,EAAE,WACsC,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Module customization hook: the TypeScript a project reaches by path is ESM,
3
+ * whatever the nearest package.json says.
4
+ *
5
+ * Config and tests load through tsx's ESM API. tsx types a `.ts` file by its
6
+ * package scope and hands a CommonJS-scoped one to Node's require, which that
7
+ * API never hooks, so the import fails as "cannot find module" on a path that
8
+ * carries e2e's cache-busting query. Registered before tsx, this hook runs
9
+ * inside tsx's chain: tsx's resolve receives `format: 'module'` from it and
10
+ * transforms the file as ESM. A Next.js app, or any package without
11
+ * `"type": "module"`, keeps its module type.
12
+ *
13
+ * Only path specifiers are forced: the entry file URL, `./helper.ts`, and
14
+ * tsconfig `paths` aliases, which tsx maps to `file:` URLs (on every platform)
15
+ * before calling this hook.
16
+ * A bare specifier is a package, linked or installed, and keeps the format its
17
+ * own manifest declares; `.cts` files stay CommonJS.
18
+ */
19
+ const TYPESCRIPT_MODULE = /\.(?:ts|mts|tsx)$/;
20
+ const PATH_SPECIFIER = /^(?:\.{1,2}\/|\/|file:)/;
21
+ /** The resolution, with a TypeScript file reached by path marked as an ES module. */
22
+ export function asModule(specifier, resolution) {
23
+ if (resolution.format === 'module' || resolution.format === 'module-typescript')
24
+ return resolution;
25
+ if (!PATH_SPECIFIER.test(specifier) || !resolution.url.startsWith('file:'))
26
+ return resolution;
27
+ if (!TYPESCRIPT_MODULE.test(new URL(resolution.url).pathname))
28
+ return resolution;
29
+ return { ...resolution, format: 'module' };
30
+ }
31
+ /** For `module.registerHooks`. */
32
+ export const resolveSync = (specifier, context, nextResolve) => asModule(specifier, nextResolve(specifier, context));
33
+ /** For `module.register`, which reads this export from the hook module. */
34
+ export const resolve = async (specifier, context, nextResolve) => asModule(specifier, await nextResolve(specifier, context));
35
+ //# sourceMappingURL=esm-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esm-hooks.js","sourceRoot":"","sources":["../../src/config/esm-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAC9C,MAAM,cAAc,GAAG,yBAAyB,CAAC;AAEjD,qFAAqF;AACrF,MAAM,UAAU,QAAQ,CAAC,SAAiB,EAAE,UAAsB;IAChE,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,KAAK,mBAAmB;QAAE,OAAO,UAAU,CAAC;IACnG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,UAAU,CAAC;IAC9F,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QAAE,OAAO,UAAU,CAAC;IACjF,OAAO,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC7C,CAAC;AAED,kCAAkC;AAClC,MAAM,CAAC,MAAM,WAAW,GAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAC9E,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AAEvD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,OAAO,GAAgB,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAC5E,QAAQ,CAAC,SAAS,EAAE,MAAM,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC"}
@@ -18,6 +18,12 @@ export declare function discoverConfig(cwd: string, explicitPath?: string): Disc
18
18
  * never for a supplied config value.
19
19
  */
20
20
  export declare function missingConfigError(cwd: string): ConfigurationError;
21
+ /**
22
+ * Whether tsx registers synchronous hooks on this Node.js. Hook chains only
23
+ * compose within a kind, so e2e's hook has to be registered the same way.
24
+ * A TypeScript `--import` in NODE_OPTIONS makes tsx fall back to async hooks.
25
+ */
26
+ export declare function tsxUsesSyncHooks(version?: string, hasRegisterHooks?: boolean, nodeOptions?: string): boolean;
21
27
  /**
22
28
  * Imports a TypeScript/ESM module with erasable-syntax support. Every call
23
29
  * evaluates the module afresh: the query carries the caller's key (what the
@@ -1 +1 @@
1
- {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,mDAAmD;AAMnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAoB7C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB,CA2BnF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CASlE;AAWD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,SAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAO9F;AAED,mEAAmE;AACnE,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAuB7E"}
1
+ {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,mDAAmD;AAOnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAoB7C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB,CA2BnF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CASlE;AAwBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,SAAwB,EAC/B,gBAAgB,UAAiD,EACjE,WAAW,SAAiC,GAC3C,OAAO,CAUT;AAkBD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,SAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAK9F;AAED,mEAAmE;AACnE,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAuB7E"}
@@ -1,11 +1,12 @@
1
1
  /** Config discovery and ESM/TypeScript loading. */
2
2
  import { existsSync } from 'node:fs';
3
+ import nodeModule from 'node:module';
3
4
  import path from 'node:path';
4
5
  import { pathToFileURL } from 'node:url';
5
6
  import { register } from 'tsx/esm/api';
6
7
  import { ConfigurationError } from '../internal/errors.js';
7
8
  import { explainModuleError } from './diagnose.js';
8
- import { esmPackageHint } from './esm.js';
9
+ import { resolveSync } from './esm-hooks.js';
9
10
  const CONFIG_NAMES = ['e2e.config.ts', 'e2e.config.mts'];
10
11
  /** Spellings a config author might reach for that the loader does not read. */
11
12
  const CONFIG_LOOKALIKES = [
@@ -74,6 +75,55 @@ export function missingConfigError(cwd) {
74
75
  */
75
76
  let loader;
76
77
  let imports = 0;
78
+ /**
79
+ * Node.js floors per major above which tsx registers synchronous hooks,
80
+ * mirroring tsx 4.23.13's `supportsRegisterHooks`: `module.registerHooks`
81
+ * exists and CommonJS can reload from a sync hook. Earlier releases, and
82
+ * Node 23, get asynchronous hooks.
83
+ */
84
+ const TSX_SYNC_HOOK_FLOORS = [
85
+ [22, 22, 3],
86
+ [24, 11, 1],
87
+ [25, 1, 0],
88
+ [26, 0, 0],
89
+ ];
90
+ /**
91
+ * Whether tsx registers synchronous hooks on this Node.js. Hook chains only
92
+ * compose within a kind, so e2e's hook has to be registered the same way.
93
+ * A TypeScript `--import` in NODE_OPTIONS makes tsx fall back to async hooks.
94
+ */
95
+ export function tsxUsesSyncHooks(version = process.versions.node, hasRegisterHooks = typeof nodeModule.registerHooks === 'function', nodeOptions = process.env.NODE_OPTIONS ?? '') {
96
+ if (!hasRegisterHooks)
97
+ return false;
98
+ if (/(?:^|\s)--import(?:=|\s+)\S+\.(?:[cm]?ts|tsx)(?:[?#]\S*)?(?=\s|$)/.test(nodeOptions))
99
+ return false;
100
+ const [major = 0, minor = 0, patch = 0] = version.split('.').map(Number);
101
+ const last = TSX_SYNC_HOOK_FLOORS.length - 1;
102
+ const floor = TSX_SYNC_HOOK_FLOORS.find((entry, index) => index === last || entry[0] === major);
103
+ if (floor === undefined)
104
+ return false;
105
+ if (major !== floor[0])
106
+ return major > floor[0];
107
+ if (minor !== floor[1])
108
+ return minor > floor[1];
109
+ return patch >= floor[2];
110
+ }
111
+ /**
112
+ * Registers e2e's ESM hook, then tsx. The last registered hook runs first, so
113
+ * tsx's resolve calls e2e's and receives `format: 'module'` for project
114
+ * TypeScript; see esm-hooks.ts.
115
+ */
116
+ function registerLoader() {
117
+ if (tsxUsesSyncHooks()) {
118
+ nodeModule.registerHooks({ resolve: resolveSync });
119
+ }
120
+ else {
121
+ // The sibling module with this module's own extension: .js in dist, .ts when
122
+ // tests run from source (tsc rewrites import specifiers, not URLs).
123
+ nodeModule.register(import.meta.url.replace(/load(\.[jt]s)$/, 'esm-hooks$1'));
124
+ }
125
+ return register({ namespace: 'e2e' });
126
+ }
77
127
  /**
78
128
  * Imports a TypeScript/ESM module with erasable-syntax support. Every call
79
129
  * evaluates the module afresh: the query carries the caller's key (what the
@@ -82,12 +132,9 @@ let imports = 0;
82
132
  * the config file as it is now.
83
133
  */
84
134
  export async function importModule(absolutePath, cacheKey = 'module') {
85
- const hint = esmPackageHint(absolutePath);
86
- if (hint !== undefined)
87
- throw new Error(hint);
88
135
  imports += 1;
89
136
  const url = `${pathToFileURL(absolutePath).href}?e2e=${cacheKey}-${imports}`;
90
- loader ??= register({ namespace: 'e2e' });
137
+ loader ??= registerLoader();
91
138
  return loader.import(url, import.meta.url);
92
139
  }
93
140
  /** Loads and returns the raw default export of a config module. */
@@ -1 +1 @@
1
- {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"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"}
@@ -56,7 +56,12 @@ export interface ResolvedConfig {
56
56
  /** The reporter objects the config names; `--reporter` never removes one. */
57
57
  readonly customReporters: readonly Reporter[];
58
58
  readonly testIdAttribute: string;
59
+ /** The agent this run uses: `agents.default`, or the one `--agent` named. */
59
60
  readonly agent: ResolvedAgentConfig;
61
+ /** Its name in the config. */
62
+ readonly agentName: string;
63
+ /** Every configured agent, `default` included, by name. */
64
+ readonly agents: ReadonlyMap<string, ResolvedAgentConfig>;
60
65
  readonly cache: ResolvedCacheConfig;
61
66
  readonly limits: ResolvedLimits;
62
67
  readonly credentials: ReadonlyMap<string, ResolvedCredential>;
@@ -87,6 +92,8 @@ export interface CliOverrides {
87
92
  cache?: CacheMode;
88
93
  /** `--video`: adds the `video` artifact kind to whatever the config asks for. */
89
94
  video?: boolean;
95
+ /** `--agent`: the configured agent the run uses instead of `default`. */
96
+ agent?: string;
90
97
  }
91
98
  /** True when CI mode is active. */
92
99
  export declare function isCiMode(env?: NodeJS.ProcessEnv): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"AAAA,mDAAmD;AAWnD,OAAO,KAAK,EACV,aAAa,EAEb,eAAe,EACf,SAAS,EACT,sBAAsB,EACtB,SAAS,EAET,QAAQ,EACR,QAAQ,EACR,cAAc,EAEd,eAAe,EAEhB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAIL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EAEpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAA0C,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAEpF,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACtE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC;IAC1C,kEAAkE;IAClE,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC;IAC3C,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACxD;AAED;;;;;;;GAOG;AACH,KAAK,cAAc,GAAG,aAAa,GAAG,UAAU,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,8FAA8F;IAC9F,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC;IACxE,yFAAyF;IACzF,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IAClD,mFAAmF;IACnF,QAAQ,CAAC,WAAW,EAAE,KAAK,GAAG,YAAY,CAAC;IAC3C,uFAAuF;IACvF,QAAQ,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,CAAC;IAC/C,6EAA6E;IAC7E,QAAQ,CAAC,eAAe,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC9C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,8BAA8B;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC1D,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC9D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,SAAS,CAAC;IAC5C,qCAAqC;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACvC,+DAA+D;IAC/D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,iFAAiF;IACjF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAkED,mCAAmC;AACnC,wBAAgB,QAAQ,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEtE;AAED,uFAAuF;AACvF,wBAAgB,aAAa,CAC3B,GAAG,EAAE,SAAS,EACd,OAAO,EAAE;IACP,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,YAAY,CAAC;CACpB,GACA,cAAc,CA4FhB"}
@@ -28,7 +28,7 @@ const TOP_LEVEL_KEYS = new Set([
28
28
  'artifacts',
29
29
  'reporters',
30
30
  'screen',
31
- 'agent',
31
+ 'agents',
32
32
  'cache',
33
33
  'limits',
34
34
  'credentials',
@@ -47,6 +47,7 @@ const FOREIGN_TOP_LEVEL_KEYS = {
47
47
  webServer: 'the runner starts the app from the engine options: playwright({ url, command: { executable, args } })',
48
48
  use: 'browser and app options are engine options: engine: playwright({ ... })',
49
49
  projects: 'one target per browser or device: targets: [{ engine }]',
50
+ agent: 'agents are named: agents: { default: <what agent held> }; e2e run --agent <name> runs with another',
50
51
  };
51
52
  /** Keys authors put on a target that belong to its engine. */
52
53
  const FOREIGN_TARGET_KEYS = new Set([
@@ -108,8 +109,14 @@ export function resolveConfig(raw, options) {
108
109
  // Limits first: the agent context budget is a limits key, and the resolved
109
110
  // observation budget is agent-owned, so the dependency runs one way.
110
111
  const baseLimits = resolveLimits(raw);
111
- const agent = resolveAgentConfig(raw, env, ci, baseLimits);
112
- const limits = { ...baseLimits, maxObservationBytes: agent.maxObservationBytes };
112
+ const { agents, agentName, agent } = resolveAgents(raw.agents, env, ci, baseLimits, cli.agent);
113
+ // The report's ceiling is the largest any configured agent may use: a
114
+ // pinned agent's calls are bounded by its own value, and the run-level
115
+ // number must not read lower than what a step could actually send.
116
+ const limits = {
117
+ ...baseLimits,
118
+ maxObservationBytes: Math.max(...[...agents.values()].map((entry) => entry.maxObservationBytes)),
119
+ };
113
120
  const cache = resolveCacheConfig(raw, ci, options.projectRoot, cli.cache);
114
121
  const resolved = {
115
122
  specVersion: '0.1',
@@ -133,6 +140,8 @@ export function resolveConfig(raw, options) {
133
140
  customReporters,
134
141
  testIdAttribute,
135
142
  agent,
143
+ agentName,
144
+ agents,
136
145
  cache,
137
146
  limits,
138
147
  credentials,
@@ -464,13 +473,42 @@ function modelIdentity(model) {
464
473
  specificationVersion: model.specificationVersion,
465
474
  };
466
475
  }
476
+ const DEFAULT_AGENT_NAME = 'default';
477
+ const AGENT_NAME_PATTERN = TARGET_NAME_PATTERN;
478
+ /**
479
+ * Resolves `agents`: every named entry, and `default` even when the config
480
+ * names none (the built-in agent with `E2E_MODEL`). The run's agent is
481
+ * `default` unless `--agent` picked another; an unknown name is a config
482
+ * error before anything starts.
483
+ */
484
+ function resolveAgents(raw, env, ci, limits, selected) {
485
+ if (raw !== undefined && (typeof raw !== 'object' || raw === null || Array.isArray(raw) || isStepExecutor(raw))) {
486
+ throw new ConfigurationError('INVALID_CONFIG', 'agents must be an object of agents by name: agents: { default: createAgent(...) }');
487
+ }
488
+ const agents = new Map();
489
+ for (const [name, value] of Object.entries(raw ?? {})) {
490
+ if (!AGENT_NAME_PATTERN.test(name)) {
491
+ throw new ConfigurationError('INVALID_CONFIG', `invalid agent name ${JSON.stringify(name)}: names are ASCII letters, numbers, "_", "-", or "."`);
492
+ }
493
+ agents.set(name, resolveAgentConfig(value, env, ci, limits, `agents.${name}`));
494
+ }
495
+ if (!agents.has(DEFAULT_AGENT_NAME)) {
496
+ agents.set(DEFAULT_AGENT_NAME, resolveAgentConfig(undefined, env, ci, limits));
497
+ }
498
+ const agentName = selected ?? DEFAULT_AGENT_NAME;
499
+ const agent = agents.get(agentName);
500
+ if (agent === undefined) {
501
+ throw new ConfigurationError('INVALID_CONFIG', `unknown agent "${agentName}"; configured: ${[...agents.keys()].join(', ')}${didYouMean(agentName, [...agents.keys()])}`);
502
+ }
503
+ return { agents, agentName, agent };
504
+ }
467
505
  /** The artifact kinds as the digest sees them: no store, no video. */
468
506
  function digestedArtifactKinds(artifacts) {
469
507
  const kinds = isArtifactsObject(artifacts) ? artifacts.kinds : artifacts;
470
508
  return (kinds ?? [...DEFAULT_ARTIFACT_KINDS]).filter((kind) => kind !== 'video');
471
509
  }
472
510
  function computeConfigDigest(raw, projectId) {
473
- // `agent` may be the executor itself; its digest identity is name/version,
511
+ // An agent may be the executor itself; its digest identity is name/version,
474
512
  // which is exactly what survives the function-stripping JSON clone below.
475
513
  // Every model slot is reduced to its identity: a live instance carries
476
514
  // provider settings (and possibly credentials) that must never be digested.
@@ -485,23 +523,25 @@ function computeConfigDigest(raw, projectId) {
485
523
  // object changes nothing about what a run records, so it never enters the
486
524
  // digest either; the built-in ids digest as they always have, so adding a
487
525
  // reporter to a config leaves its cache valid.
488
- const rawAgent = raw.agent;
489
526
  const forClone = {
490
527
  ...raw,
491
528
  ...(raw.artifacts === undefined ? {} : { artifacts: digestedArtifactKinds(raw.artifacts) }),
492
529
  ...(Array.isArray(raw.reporters)
493
530
  ? { reporters: raw.reporters.filter((reporter) => typeof reporter === 'string') }
494
531
  : {}),
495
- ...(rawAgent === undefined || isStepExecutor(rawAgent)
532
+ ...(raw.agents === undefined
496
533
  ? {}
497
534
  : {
498
- agent: {
499
- ...rawAgent,
500
- ...(isModelInstance(rawAgent.model) ? { model: modelIdentity(rawAgent.model) } : {}),
501
- ...(isModelInstance(rawAgent.visionModel)
502
- ? { visionModel: modelIdentity(rawAgent.visionModel) }
503
- : {}),
504
- },
535
+ agents: Object.fromEntries(Object.entries(raw.agents).map(([name, entry]) => [
536
+ name,
537
+ isStepExecutor(entry)
538
+ ? entry
539
+ : {
540
+ ...entry,
541
+ ...(isModelInstance(entry.model) ? { model: modelIdentity(entry.model) } : {}),
542
+ ...(isModelInstance(entry.visionModel) ? { visionModel: modelIdentity(entry.visionModel) } : {}),
543
+ },
544
+ ])),
505
545
  }),
506
546
  };
507
547
  const sanitized = {