@e2edev/e2e 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +104 -0
  3. package/dist/agent/act-validation.d.ts +27 -0
  4. package/dist/agent/act-validation.d.ts.map +1 -0
  5. package/dist/agent/act-validation.js +121 -0
  6. package/dist/agent/act-validation.js.map +1 -0
  7. package/dist/agent/act.d.ts +27 -0
  8. package/dist/agent/act.d.ts.map +1 -0
  9. package/dist/agent/act.js +775 -0
  10. package/dist/agent/act.js.map +1 -0
  11. package/dist/agent/actions.d.ts +66 -0
  12. package/dist/agent/actions.d.ts.map +1 -0
  13. package/dist/agent/actions.js +82 -0
  14. package/dist/agent/actions.js.map +1 -0
  15. package/dist/agent/ai-sdk.d.ts +16 -0
  16. package/dist/agent/ai-sdk.d.ts.map +1 -0
  17. package/dist/agent/ai-sdk.js +59 -0
  18. package/dist/agent/ai-sdk.js.map +1 -0
  19. package/dist/agent/call-options.d.ts +10 -0
  20. package/dist/agent/call-options.d.ts.map +1 -0
  21. package/dist/agent/call-options.js +28 -0
  22. package/dist/agent/call-options.js.map +1 -0
  23. package/dist/agent/default-agent.d.ts +22 -0
  24. package/dist/agent/default-agent.d.ts.map +1 -0
  25. package/dist/agent/default-agent.js +354 -0
  26. package/dist/agent/default-agent.js.map +1 -0
  27. package/dist/agent/error.d.ts +53 -0
  28. package/dist/agent/error.d.ts.map +1 -0
  29. package/dist/agent/error.js +94 -0
  30. package/dist/agent/error.js.map +1 -0
  31. package/dist/agent/executor.d.ts +238 -0
  32. package/dist/agent/executor.d.ts.map +1 -0
  33. package/dist/agent/executor.js +56 -0
  34. package/dist/agent/executor.js.map +1 -0
  35. package/dist/agent/index.d.ts +15 -0
  36. package/dist/agent/index.d.ts.map +1 -0
  37. package/dist/agent/index.js +304 -0
  38. package/dist/agent/index.js.map +1 -0
  39. package/dist/agent/invocation.d.ts +194 -0
  40. package/dist/agent/invocation.d.ts.map +1 -0
  41. package/dist/agent/invocation.js +389 -0
  42. package/dist/agent/invocation.js.map +1 -0
  43. package/dist/agent/ledger.d.ts +24 -0
  44. package/dist/agent/ledger.d.ts.map +1 -0
  45. package/dist/agent/ledger.js +48 -0
  46. package/dist/agent/ledger.js.map +1 -0
  47. package/dist/agent/loop-guards.d.ts +35 -0
  48. package/dist/agent/loop-guards.d.ts.map +1 -0
  49. package/dist/agent/loop-guards.js +110 -0
  50. package/dist/agent/loop-guards.js.map +1 -0
  51. package/dist/agent/model/adapter.d.ts +97 -0
  52. package/dist/agent/model/adapter.d.ts.map +1 -0
  53. package/dist/agent/model/adapter.js +40 -0
  54. package/dist/agent/model/adapter.js.map +1 -0
  55. package/dist/agent/model/router.d.ts +36 -0
  56. package/dist/agent/model/router.d.ts.map +1 -0
  57. package/dist/agent/model/router.js +45 -0
  58. package/dist/agent/model/router.js.map +1 -0
  59. package/dist/agent/model/schema.d.ts +16 -0
  60. package/dist/agent/model/schema.d.ts.map +1 -0
  61. package/dist/agent/model/schema.js +37 -0
  62. package/dist/agent/model/schema.js.map +1 -0
  63. package/dist/agent/model/sdk.d.ts +28 -0
  64. package/dist/agent/model/sdk.d.ts.map +1 -0
  65. package/dist/agent/model/sdk.js +258 -0
  66. package/dist/agent/model/sdk.js.map +1 -0
  67. package/dist/agent/observation.d.ts +70 -0
  68. package/dist/agent/observation.d.ts.map +1 -0
  69. package/dist/agent/observation.js +174 -0
  70. package/dist/agent/observation.js.map +1 -0
  71. package/dist/agent/phases.d.ts +71 -0
  72. package/dist/agent/phases.d.ts.map +1 -0
  73. package/dist/agent/phases.js +124 -0
  74. package/dist/agent/phases.js.map +1 -0
  75. package/dist/agent/prompts.d.ts +40 -0
  76. package/dist/agent/prompts.d.ts.map +1 -0
  77. package/dist/agent/prompts.js +104 -0
  78. package/dist/agent/prompts.js.map +1 -0
  79. package/dist/agent/protocol.d.ts +31 -0
  80. package/dist/agent/protocol.d.ts.map +1 -0
  81. package/dist/agent/protocol.js +67 -0
  82. package/dist/agent/protocol.js.map +1 -0
  83. package/dist/agent/public.d.ts +12 -0
  84. package/dist/agent/public.d.ts.map +1 -0
  85. package/dist/agent/public.js +12 -0
  86. package/dist/agent/public.js.map +1 -0
  87. package/dist/agent/replay.d.ts +61 -0
  88. package/dist/agent/replay.d.ts.map +1 -0
  89. package/dist/agent/replay.js +185 -0
  90. package/dist/agent/replay.js.map +1 -0
  91. package/dist/agent/secrets.d.ts +22 -0
  92. package/dist/agent/secrets.d.ts.map +1 -0
  93. package/dist/agent/secrets.js +63 -0
  94. package/dist/agent/secrets.js.map +1 -0
  95. package/dist/agent/step-cache.d.ts +156 -0
  96. package/dist/agent/step-cache.d.ts.map +1 -0
  97. package/dist/agent/step-cache.js +301 -0
  98. package/dist/agent/step-cache.js.map +1 -0
  99. package/dist/agent/tool-loop.d.ts +51 -0
  100. package/dist/agent/tool-loop.d.ts.map +1 -0
  101. package/dist/agent/tool-loop.js +331 -0
  102. package/dist/agent/tool-loop.js.map +1 -0
  103. package/dist/agent/tool.d.ts +39 -0
  104. package/dist/agent/tool.d.ts.map +1 -0
  105. package/dist/agent/tool.js +52 -0
  106. package/dist/agent/tool.js.map +1 -0
  107. package/dist/backend/contract.d.ts +186 -0
  108. package/dist/backend/contract.d.ts.map +1 -0
  109. package/dist/backend/contract.js +65 -0
  110. package/dist/backend/contract.js.map +1 -0
  111. package/dist/backend/index.d.ts +316 -0
  112. package/dist/backend/index.d.ts.map +1 -0
  113. package/dist/backend/index.js +219 -0
  114. package/dist/backend/index.js.map +1 -0
  115. package/dist/backend/session.d.ts +23 -0
  116. package/dist/backend/session.d.ts.map +1 -0
  117. package/dist/backend/session.js +213 -0
  118. package/dist/backend/session.js.map +1 -0
  119. package/dist/backend/surface.d.ts +83 -0
  120. package/dist/backend/surface.d.ts.map +1 -0
  121. package/dist/backend/surface.js +11 -0
  122. package/dist/backend/surface.js.map +1 -0
  123. package/dist/cache/anchors.d.ts +37 -0
  124. package/dist/cache/anchors.d.ts.map +1 -0
  125. package/dist/cache/anchors.js +89 -0
  126. package/dist/cache/anchors.js.map +1 -0
  127. package/dist/cache/context.d.ts +74 -0
  128. package/dist/cache/context.d.ts.map +1 -0
  129. package/dist/cache/context.js +82 -0
  130. package/dist/cache/context.js.map +1 -0
  131. package/dist/cache/decide.d.ts +42 -0
  132. package/dist/cache/decide.d.ts.map +1 -0
  133. package/dist/cache/decide.js +47 -0
  134. package/dist/cache/decide.js.map +1 -0
  135. package/dist/cache/identity.d.ts +113 -0
  136. package/dist/cache/identity.d.ts.map +1 -0
  137. package/dist/cache/identity.js +109 -0
  138. package/dist/cache/identity.js.map +1 -0
  139. package/dist/cache/recorder.d.ts +76 -0
  140. package/dist/cache/recorder.d.ts.map +1 -0
  141. package/dist/cache/recorder.js +143 -0
  142. package/dist/cache/recorder.js.map +1 -0
  143. package/dist/cache/relocate.d.ts +69 -0
  144. package/dist/cache/relocate.d.ts.map +1 -0
  145. package/dist/cache/relocate.js +125 -0
  146. package/dist/cache/relocate.js.map +1 -0
  147. package/dist/cache/store.d.ts +68 -0
  148. package/dist/cache/store.d.ts.map +1 -0
  149. package/dist/cache/store.js +106 -0
  150. package/dist/cache/store.js.map +1 -0
  151. package/dist/cache/trace.d.ts +146 -0
  152. package/dist/cache/trace.d.ts.map +1 -0
  153. package/dist/cache/trace.js +249 -0
  154. package/dist/cache/trace.js.map +1 -0
  155. package/dist/cli/bin.d.ts +3 -0
  156. package/dist/cli/bin.d.ts.map +1 -0
  157. package/dist/cli/bin.js +4 -0
  158. package/dist/cli/bin.js.map +1 -0
  159. package/dist/cli/index.d.ts +4 -0
  160. package/dist/cli/index.d.ts.map +1 -0
  161. package/dist/cli/index.js +108 -0
  162. package/dist/cli/index.js.map +1 -0
  163. package/dist/cli/init.d.ts +6 -0
  164. package/dist/cli/init.d.ts.map +1 -0
  165. package/dist/cli/init.js +101 -0
  166. package/dist/cli/init.js.map +1 -0
  167. package/dist/collect/collect.d.ts +44 -0
  168. package/dist/collect/collect.d.ts.map +1 -0
  169. package/dist/collect/collect.js +89 -0
  170. package/dist/collect/collect.js.map +1 -0
  171. package/dist/collect/registry.d.ts +47 -0
  172. package/dist/collect/registry.d.ts.map +1 -0
  173. package/dist/collect/registry.js +262 -0
  174. package/dist/collect/registry.js.map +1 -0
  175. package/dist/collect/select.d.ts +54 -0
  176. package/dist/collect/select.d.ts.map +1 -0
  177. package/dist/collect/select.js +230 -0
  178. package/dist/collect/select.js.map +1 -0
  179. package/dist/config/agent.d.ts +91 -0
  180. package/dist/config/agent.d.ts.map +1 -0
  181. package/dist/config/agent.js +232 -0
  182. package/dist/config/agent.js.map +1 -0
  183. package/dist/config/load.d.ts +23 -0
  184. package/dist/config/load.d.ts.map +1 -0
  185. package/dist/config/load.js +75 -0
  186. package/dist/config/load.js.map +1 -0
  187. package/dist/config/resolve.d.ts +94 -0
  188. package/dist/config/resolve.d.ts.map +1 -0
  189. package/dist/config/resolve.js +500 -0
  190. package/dist/config/resolve.js.map +1 -0
  191. package/dist/config/validate.d.ts +6 -0
  192. package/dist/config/validate.d.ts.map +1 -0
  193. package/dist/config/validate.js +21 -0
  194. package/dist/config/validate.js.map +1 -0
  195. package/dist/credentials.d.ts +7 -0
  196. package/dist/credentials.d.ts.map +1 -0
  197. package/dist/credentials.js +42 -0
  198. package/dist/credentials.js.map +1 -0
  199. package/dist/expect/async.d.ts +5 -0
  200. package/dist/expect/async.d.ts.map +1 -0
  201. package/dist/expect/async.js +186 -0
  202. package/dist/expect/async.js.map +1 -0
  203. package/dist/expect/index.d.ts +7 -0
  204. package/dist/expect/index.d.ts.map +1 -0
  205. package/dist/expect/index.js +23 -0
  206. package/dist/expect/index.js.map +1 -0
  207. package/dist/expect/values.d.ts +4 -0
  208. package/dist/expect/values.d.ts.map +1 -0
  209. package/dist/expect/values.js +108 -0
  210. package/dist/expect/values.js.map +1 -0
  211. package/dist/index.d.ts +13 -0
  212. package/dist/index.d.ts.map +1 -0
  213. package/dist/index.js +15 -0
  214. package/dist/index.js.map +1 -0
  215. package/dist/internal/ai-trace.d.ts +151 -0
  216. package/dist/internal/ai-trace.d.ts.map +1 -0
  217. package/dist/internal/ai-trace.js +360 -0
  218. package/dist/internal/ai-trace.js.map +1 -0
  219. package/dist/internal/brands.d.ts +9 -0
  220. package/dist/internal/brands.d.ts.map +1 -0
  221. package/dist/internal/brands.js +9 -0
  222. package/dist/internal/brands.js.map +1 -0
  223. package/dist/internal/debug.d.ts +43 -0
  224. package/dist/internal/debug.d.ts.map +1 -0
  225. package/dist/internal/debug.js +102 -0
  226. package/dist/internal/debug.js.map +1 -0
  227. package/dist/internal/errors.d.ts +98 -0
  228. package/dist/internal/errors.d.ts.map +1 -0
  229. package/dist/internal/errors.js +212 -0
  230. package/dist/internal/errors.js.map +1 -0
  231. package/dist/internal/globs.d.ts +29 -0
  232. package/dist/internal/globs.d.ts.map +1 -0
  233. package/dist/internal/globs.js +126 -0
  234. package/dist/internal/globs.js.map +1 -0
  235. package/dist/internal/ids.d.ts +32 -0
  236. package/dist/internal/ids.d.ts.map +1 -0
  237. package/dist/internal/ids.js +124 -0
  238. package/dist/internal/ids.js.map +1 -0
  239. package/dist/internal/json-value.d.ts +15 -0
  240. package/dist/internal/json-value.d.ts.map +1 -0
  241. package/dist/internal/json-value.js +61 -0
  242. package/dist/internal/json-value.js.map +1 -0
  243. package/dist/internal/package-version.d.ts +6 -0
  244. package/dist/internal/package-version.d.ts.map +1 -0
  245. package/dist/internal/package-version.js +14 -0
  246. package/dist/internal/package-version.js.map +1 -0
  247. package/dist/internal/realm-slot.d.ts +13 -0
  248. package/dist/internal/realm-slot.d.ts.map +1 -0
  249. package/dist/internal/realm-slot.js +23 -0
  250. package/dist/internal/realm-slot.js.map +1 -0
  251. package/dist/internal/redact.d.ts +33 -0
  252. package/dist/internal/redact.d.ts.map +1 -0
  253. package/dist/internal/redact.js +56 -0
  254. package/dist/internal/redact.js.map +1 -0
  255. package/dist/internal/regexp.d.ts +10 -0
  256. package/dist/internal/regexp.d.ts.map +1 -0
  257. package/dist/internal/regexp.js +27 -0
  258. package/dist/internal/regexp.js.map +1 -0
  259. package/dist/internal/text.d.ts +39 -0
  260. package/dist/internal/text.d.ts.map +1 -0
  261. package/dist/internal/text.js +66 -0
  262. package/dist/internal/text.js.map +1 -0
  263. package/dist/internal/time.d.ts +37 -0
  264. package/dist/internal/time.d.ts.map +1 -0
  265. package/dist/internal/time.js +91 -0
  266. package/dist/internal/time.js.map +1 -0
  267. package/dist/internal/trace.d.ts +18 -0
  268. package/dist/internal/trace.d.ts.map +1 -0
  269. package/dist/internal/trace.js +46 -0
  270. package/dist/internal/trace.js.map +1 -0
  271. package/dist/internal/urls.d.ts +31 -0
  272. package/dist/internal/urls.d.ts.map +1 -0
  273. package/dist/internal/urls.js +95 -0
  274. package/dist/internal/urls.js.map +1 -0
  275. package/dist/locator/engine.d.ts +65 -0
  276. package/dist/locator/engine.d.ts.map +1 -0
  277. package/dist/locator/engine.js +164 -0
  278. package/dist/locator/engine.js.map +1 -0
  279. package/dist/locator/expression.d.ts +19 -0
  280. package/dist/locator/expression.d.ts.map +1 -0
  281. package/dist/locator/expression.js +85 -0
  282. package/dist/locator/expression.js.map +1 -0
  283. package/dist/locator/screen.d.ts +36 -0
  284. package/dist/locator/screen.d.ts.map +1 -0
  285. package/dist/locator/screen.js +281 -0
  286. package/dist/locator/screen.js.map +1 -0
  287. package/dist/report/build.d.ts +214 -0
  288. package/dist/report/build.d.ts.map +1 -0
  289. package/dist/report/build.js +346 -0
  290. package/dist/report/build.js.map +1 -0
  291. package/dist/report/code-frame.d.ts +20 -0
  292. package/dist/report/code-frame.d.ts.map +1 -0
  293. package/dist/report/code-frame.js +73 -0
  294. package/dist/report/code-frame.js.map +1 -0
  295. package/dist/report/debug-steps.d.ts +14 -0
  296. package/dist/report/debug-steps.d.ts.map +1 -0
  297. package/dist/report/debug-steps.js +85 -0
  298. package/dist/report/debug-steps.js.map +1 -0
  299. package/dist/report/list.d.ts +80 -0
  300. package/dist/report/list.d.ts.map +1 -0
  301. package/dist/report/list.js +372 -0
  302. package/dist/report/list.js.map +1 -0
  303. package/dist/report/live-status.d.ts +51 -0
  304. package/dist/report/live-status.d.ts.map +1 -0
  305. package/dist/report/live-status.js +162 -0
  306. package/dist/report/live-status.js.map +1 -0
  307. package/dist/report/write.d.ts +4 -0
  308. package/dist/report/write.d.ts.map +1 -0
  309. package/dist/report/write.js +13 -0
  310. package/dist/report/write.js.map +1 -0
  311. package/dist/run/app-process.d.ts +18 -0
  312. package/dist/run/app-process.d.ts.map +1 -0
  313. package/dist/run/app-process.js +112 -0
  314. package/dist/run/app-process.js.map +1 -0
  315. package/dist/run/artifacts.d.ts +51 -0
  316. package/dist/run/artifacts.d.ts.map +1 -0
  317. package/dist/run/artifacts.js +114 -0
  318. package/dist/run/artifacts.js.map +1 -0
  319. package/dist/run/events.d.ts +100 -0
  320. package/dist/run/events.d.ts.map +1 -0
  321. package/dist/run/events.js +59 -0
  322. package/dist/run/events.js.map +1 -0
  323. package/dist/run/execute.d.ts +119 -0
  324. package/dist/run/execute.d.ts.map +1 -0
  325. package/dist/run/execute.js +555 -0
  326. package/dist/run/execute.js.map +1 -0
  327. package/dist/run/fixtures.d.ts +40 -0
  328. package/dist/run/fixtures.d.ts.map +1 -0
  329. package/dist/run/fixtures.js +408 -0
  330. package/dist/run/fixtures.js.map +1 -0
  331. package/dist/run/in-process.d.ts +24 -0
  332. package/dist/run/in-process.d.ts.map +1 -0
  333. package/dist/run/in-process.js +120 -0
  334. package/dist/run/in-process.js.map +1 -0
  335. package/dist/run/public.d.ts +19 -0
  336. package/dist/run/public.d.ts.map +1 -0
  337. package/dist/run/public.js +11 -0
  338. package/dist/run/public.js.map +1 -0
  339. package/dist/run/realm.d.ts +52 -0
  340. package/dist/run/realm.d.ts.map +1 -0
  341. package/dist/run/realm.js +101 -0
  342. package/dist/run/realm.js.map +1 -0
  343. package/dist/run/records.d.ts +87 -0
  344. package/dist/run/records.d.ts.map +1 -0
  345. package/dist/run/records.js +3 -0
  346. package/dist/run/records.js.map +1 -0
  347. package/dist/run/retry.d.ts +18 -0
  348. package/dist/run/retry.d.ts.map +1 -0
  349. package/dist/run/retry.js +33 -0
  350. package/dist/run/retry.js.map +1 -0
  351. package/dist/run/runner.d.ts +49 -0
  352. package/dist/run/runner.d.ts.map +1 -0
  353. package/dist/run/runner.js +375 -0
  354. package/dist/run/runner.js.map +1 -0
  355. package/dist/run/scheduler.d.ts +45 -0
  356. package/dist/run/scheduler.d.ts.map +1 -0
  357. package/dist/run/scheduler.js +512 -0
  358. package/dist/run/scheduler.js.map +1 -0
  359. package/dist/run/serial.d.ts +52 -0
  360. package/dist/run/serial.d.ts.map +1 -0
  361. package/dist/run/serial.js +247 -0
  362. package/dist/run/serial.js.map +1 -0
  363. package/dist/run/sessions.d.ts +54 -0
  364. package/dist/run/sessions.d.ts.map +1 -0
  365. package/dist/run/sessions.js +221 -0
  366. package/dist/run/sessions.js.map +1 -0
  367. package/dist/run/steps.d.ts +196 -0
  368. package/dist/run/steps.d.ts.map +1 -0
  369. package/dist/run/steps.js +151 -0
  370. package/dist/run/steps.js.map +1 -0
  371. package/dist/run/unit-runner.d.ts +30 -0
  372. package/dist/run/unit-runner.d.ts.map +1 -0
  373. package/dist/run/unit-runner.js +11 -0
  374. package/dist/run/unit-runner.js.map +1 -0
  375. package/dist/run/units.d.ts +50 -0
  376. package/dist/run/units.d.ts.map +1 -0
  377. package/dist/run/units.js +103 -0
  378. package/dist/run/units.js.map +1 -0
  379. package/dist/run/worker/entry.d.ts +8 -0
  380. package/dist/run/worker/entry.d.ts.map +1 -0
  381. package/dist/run/worker/entry.js +137 -0
  382. package/dist/run/worker/entry.js.map +1 -0
  383. package/dist/run/worker/handle.d.ts +10 -0
  384. package/dist/run/worker/handle.d.ts.map +1 -0
  385. package/dist/run/worker/handle.js +74 -0
  386. package/dist/run/worker/handle.js.map +1 -0
  387. package/dist/run/worker/protocol.d.ts +129 -0
  388. package/dist/run/worker/protocol.d.ts.map +1 -0
  389. package/dist/run/worker/protocol.js +18 -0
  390. package/dist/run/worker/protocol.js.map +1 -0
  391. package/dist/run/worker/session.d.ts +69 -0
  392. package/dist/run/worker/session.d.ts.map +1 -0
  393. package/dist/run/worker/session.js +123 -0
  394. package/dist/run/worker/session.js.map +1 -0
  395. package/dist/types.d.ts +630 -0
  396. package/dist/types.d.ts.map +1 -0
  397. package/dist/types.js +6 -0
  398. package/dist/types.js.map +1 -0
  399. package/package.json +91 -0
@@ -0,0 +1,555 @@
1
+ /** Test-target execution engine (spec 11-lifecycle.md). */
2
+ import path from 'node:path';
3
+ import { classifyError, ConfigurationError, E2EError, InfrastructureError, serializeError, TestTimeoutError, translateBackendError, } from '../internal/errors.js';
4
+ import { withAiTraceScope } from '../internal/ai-trace.js';
5
+ import { DebugTrace } from '../internal/debug.js';
6
+ import { canonicalDigest, timestamp, uuidv7 } from '../internal/ids.js';
7
+ import { Deadline, withTimeout } from '../internal/time.js';
8
+ import { createAgentCacheContext, flushStagedTraces } from '../cache/context.js';
9
+ import { createAttemptArtifacts, sanitizePathSegment } from './artifacts.js';
10
+ import { BACKEND_SPI_VERSION } from '../backend/contract.js';
11
+ import { createBackendSession } from '../backend/session.js';
12
+ import { createFixtures } from './fixtures.js';
13
+ import { findRegistered, RealmManager } from './realm.js';
14
+ import { runWithRetries } from './retry.js';
15
+ import { runSerialUnit } from './serial.js';
16
+ import { INTERRUPTED_BEFORE_START, pairResult, unstartedResult } from './units.js';
17
+ import { SessionStaging, SessionStore } from './sessions.js';
18
+ import { StepRecorder } from './steps.js';
19
+ /** Signal for operations that only end when they finish, such as cleanup. */
20
+ const NEVER_ABORTS = new AbortController().signal;
21
+ /** Executes every selected pair for one target sequentially. */
22
+ export class TargetExecutor {
23
+ options;
24
+ target;
25
+ get runId() {
26
+ return this.options.runId;
27
+ }
28
+ get artifactStore() {
29
+ return this.config.artifactStore;
30
+ }
31
+ artifactsRoot;
32
+ interruptSignal;
33
+ realms;
34
+ debug;
35
+ runErrors = [];
36
+ sessionIdentity;
37
+ /** Resolves once the backend's init hook completed for this worker. */
38
+ backendReady;
39
+ constructor(options) {
40
+ this.options = options;
41
+ this.target = options.target;
42
+ this.artifactsRoot = options.artifactsRoot;
43
+ this.interruptSignal = options.interruptSignal;
44
+ this.debug = options.debug ?? new DebugTrace(false);
45
+ this.realms = new RealmManager({
46
+ targetName: options.target.name,
47
+ platform: options.target.platform,
48
+ timeout: options.config.timeout,
49
+ cleanupTimeout: options.config.cleanupTimeout,
50
+ runErrors: this.runErrors,
51
+ debug: this.debug,
52
+ });
53
+ this.sessionIdentity = {
54
+ targetId: options.target.name,
55
+ // Session and cache identity comes from the backend declaration, so a
56
+ // backend swap never restores another backend's state.
57
+ backendName: options.target.backend?.name ?? 'none',
58
+ backendVersion: options.target.backend?.version ?? 'unversioned',
59
+ spiVersion: options.target.backend?.spiVersion ?? BACKEND_SPI_VERSION,
60
+ platform: options.target.platform,
61
+ // An explicit `app.identity` replaces the origin, so an ephemeral
62
+ // per-deploy origin (a PR preview) shares cache and session identity
63
+ // with the app it is a deployment of. The environment always joins the
64
+ // digest: an identity must never bleed entries across environments.
65
+ appIdentity: canonicalDigest(options.config.app.identity === undefined
66
+ ? {
67
+ origin: options.config.app.base.origin,
68
+ basePath: options.config.app.base.basePath,
69
+ environment: options.config.app.environment,
70
+ }
71
+ : {
72
+ identity: options.config.app.identity,
73
+ environment: options.config.app.environment,
74
+ }),
75
+ };
76
+ }
77
+ get config() {
78
+ return this.options.config;
79
+ }
80
+ /** Emits one final result record (SerialHost). Records are not retained. */
81
+ emit(result) {
82
+ this.options.events?.onResult?.(result);
83
+ }
84
+ /** Builds one backend operation context. */
85
+ op(attemptId, timeoutMs, signal) {
86
+ return { signal, timeoutMs, runId: this.options.runId, attemptId };
87
+ }
88
+ /** Run-level errors recorded so far, in order. */
89
+ collectedRunErrors() {
90
+ return this.runErrors;
91
+ }
92
+ /**
93
+ * Runs the backend's init hook once per worker, before the first session.
94
+ * Boot work (simulators, device leases) is bounded by the launch timeout
95
+ * but never charged against a step budget.
96
+ */
97
+ initBackendOnce() {
98
+ const backend = this.target.backend;
99
+ const init = backend?.init?.bind(backend);
100
+ if (init === undefined)
101
+ return Promise.resolve();
102
+ // Memoized for the worker's lifetime, failure included: a backend that
103
+ // could not boot fails every attempt on this worker with the same cause
104
+ // instead of re-running a broken boot per test. Init outlives any single
105
+ // attempt, so it aborts on worker interrupt, not on one test's deadline.
106
+ this.backendReady ??= this.debug.time('backend.init', () => this.lifecycle(`initializing backend ${backend?.name ?? 'none'}`, this.config.launchTimeout, 'LAUNCH_TIMEOUT', this.interruptSignal, (signal) => init({
107
+ runId: this.options.runId,
108
+ targetName: this.target.name,
109
+ app: {
110
+ ...(this.config.app.configured ? { baseUrl: this.config.app.base.href } : {}),
111
+ allowedOrigins: this.config.app.allowedOrigins,
112
+ },
113
+ testIdAttribute: this.config.testIdAttribute,
114
+ headed: this.options.headed,
115
+ signal,
116
+ })));
117
+ return this.backendReady;
118
+ }
119
+ /**
120
+ * Runs one lifecycle call on the backend seam within the given budget. The
121
+ * signal handed to `run` follows `parent` and is aborted the moment the call
122
+ * fails, timeout included, so a hook that outlived its budget is told to
123
+ * stop instead of running on into the retry. Synchronous throws are caught,
124
+ * and every failure is translated onto the runner taxonomy: a backend
125
+ * failing outside its contract is infrastructure, never a test error.
126
+ */
127
+ async lifecycle(label, timeoutMs, code, parent, run) {
128
+ const scope = new AbortController();
129
+ try {
130
+ return await withTimeout(Promise.resolve().then(() => run(AbortSignal.any([parent, scope.signal]))), timeoutMs, () => new InfrastructureError(code, `${label} timed out`));
131
+ }
132
+ catch (cause) {
133
+ scope.abort();
134
+ throw translateBackendError(cause, ` while ${label}`);
135
+ }
136
+ }
137
+ /**
138
+ * Disposes the backend at worker end of life, bounded by the cleanup budget.
139
+ * Runs whether or not `init` did: a backend may hold resources it acquired
140
+ * lazily, and the contract makes `dispose` safe to call on a cold backend.
141
+ */
142
+ async dispose() {
143
+ const disposeBackend = this.target.backend?.dispose?.bind(this.target.backend);
144
+ if (disposeBackend === undefined)
145
+ return;
146
+ try {
147
+ await this.lifecycle('disposing the backend', this.config.cleanupTimeout, 'CLEANUP_TIMEOUT', NEVER_ABORTS, (signal) => disposeBackend({ signal, timeoutMs: this.config.cleanupTimeout }));
148
+ }
149
+ catch (cause) {
150
+ this.runErrors.push({ error: serializeError(classifyError(cause), { phase: 'cleanup' }) });
151
+ }
152
+ }
153
+ /**
154
+ * Runs one file-target unit: runnable pairs of a single file, in declaration
155
+ * order, sharing a realm between passing non-serial tests (spec
156
+ * 11-lifecycle.md). Dispatch-time gating (selection dispositions and
157
+ * setup-failure dependencies) belongs to the scheduler, so every pair
158
+ * reaching here is runnable.
159
+ */
160
+ async runFileUnit(file, filePairs, freshRegistration) {
161
+ const executedSerialUnits = new Set();
162
+ const ordered = filePairs.toSorted((a, b) => a.test.declarationIndex - b.test.declarationIndex);
163
+ let realm = freshRegistration === undefined ? null : this.realms.adopt(freshRegistration);
164
+ for (const pair of ordered) {
165
+ if (this.interruptSignal.aborted) {
166
+ this.emit(unstartedResult(pair, INTERRUPTED_BEFORE_START));
167
+ continue;
168
+ }
169
+ if (pair.test.serialId !== undefined) {
170
+ if (!executedSerialUnits.has(pair.test.serialId)) {
171
+ executedSerialUnits.add(pair.test.serialId);
172
+ const members = ordered.filter((member) => member.test.serialId === pair.test.serialId);
173
+ this.options.events?.onPairStart?.(pair);
174
+ // A serial group owns its realm; whatever realm ordinary tests were
175
+ // sharing ends here, afterAll included.
176
+ if (realm !== null)
177
+ await this.realms.leave(realm);
178
+ realm = null;
179
+ const group = await runSerialUnit(this, members, file.absolutePath);
180
+ this.options.events?.onSerialGroup?.(group);
181
+ }
182
+ continue;
183
+ }
184
+ this.options.events?.onPairStart?.(pair);
185
+ realm = await this.runOrdinaryPair(pair, file, realm);
186
+ }
187
+ if (realm !== null)
188
+ await this.realms.leave(realm);
189
+ }
190
+ /** Records a deterministic-registration violation as a run-level error. */
191
+ recordDisappeared(message) {
192
+ this.runErrors.push({
193
+ error: serializeError(new ConfigurationError('COLLECTION_ERROR', message), {
194
+ phase: 'collection',
195
+ }),
196
+ });
197
+ }
198
+ // --- ordinary tests ---
199
+ async runOrdinaryPair(pair, file, incomingRealm) {
200
+ const attempts = [];
201
+ let realm = incomingRealm;
202
+ let hookFailure;
203
+ const finalStatus = await runWithRetries(pair.options.retries + 1, this.interruptSignal, async (attemptIndex) => {
204
+ if (realm === null)
205
+ realm = await this.realms.create(file.absolutePath);
206
+ const registered = findRegistered(realm, pair.test);
207
+ if (registered === undefined) {
208
+ this.recordDisappeared(`test ${pair.test.id} disappeared on re-import; registration must be deterministic`);
209
+ return undefined;
210
+ }
211
+ hookFailure = await this.realms.enterScopes(realm, registered);
212
+ if (hookFailure !== undefined)
213
+ return undefined;
214
+ const attempt = await this.runAttempt(pair, registered, realm, attemptIndex, {
215
+ kind: 'ordinary',
216
+ });
217
+ attempts.push(attempt);
218
+ if (attempt.status !== 'passed') {
219
+ // Spec 11-lifecycle.md: a failed realm is never reused, but afterAll
220
+ // still runs for every scope whose beforeAll started in it.
221
+ await this.realms.leave(realm);
222
+ realm = null;
223
+ }
224
+ return attempt;
225
+ });
226
+ // A beforeAll failure before any attempt ran skips the test. On a retry
227
+ // the recorded attempts stand: the hook failure is already a run error,
228
+ // and a failing test must not be reported as skipped.
229
+ if (hookFailure !== undefined && attempts.length === 0) {
230
+ this.emit(pairResult(pair, {
231
+ status: 'skipped',
232
+ selected: true,
233
+ skip: { cause: 'hook-failed', reason: hookFailure.message },
234
+ attempts: [],
235
+ }));
236
+ return realm;
237
+ }
238
+ this.emit(pairResult(pair, { status: finalStatus, selected: true, attempts }));
239
+ return realm;
240
+ }
241
+ // --- setup tests ---
242
+ /** Runs one setup pair to completion, persisting staged sessions on success. */
243
+ async runSetupUnit(pair, freshRegistration) {
244
+ this.options.events?.onPairStart?.(pair);
245
+ const absolutePath = path.resolve(this.config.projectRoot, pair.test.file);
246
+ const attempts = [];
247
+ let hookFailure;
248
+ const finalStatus = await runWithRetries(pair.options.retries + 1, this.interruptSignal, async (attemptIndex) => {
249
+ const realm = attemptIndex === 0 && freshRegistration !== undefined
250
+ ? this.realms.adopt(freshRegistration)
251
+ : await this.realms.create(absolutePath);
252
+ const registered = findRegistered(realm, pair.test);
253
+ if (registered === undefined) {
254
+ this.recordDisappeared(`setup ${pair.test.id} disappeared on re-import`);
255
+ return undefined;
256
+ }
257
+ hookFailure = await this.realms.enterScopes(realm, registered);
258
+ if (hookFailure !== undefined) {
259
+ await this.realms.leave(realm);
260
+ return undefined;
261
+ }
262
+ const staging = new SessionStaging(pair.test.sessions);
263
+ const attempt = await this.runAttempt(pair, registered, realm, attemptIndex, {
264
+ kind: 'setup',
265
+ staging,
266
+ });
267
+ attempts.push(attempt);
268
+ await this.realms.leave(realm);
269
+ if (attempt.status === 'passed') {
270
+ const missing = staging.missing();
271
+ if (missing.length > 0) {
272
+ attempt.status = 'failed';
273
+ attempt.error = serializeError(new E2EError('test', 'SESSION_CONTRACT', `setup must save each declared session exactly once; missing: [${missing.join(', ')}]`), { phase: 'body' });
274
+ return attempt;
275
+ }
276
+ for (const [name, state] of staging.entries()) {
277
+ await this.options.sessionStore.save(name, this.sessionIdentity, state);
278
+ }
279
+ }
280
+ return attempt;
281
+ });
282
+ if (hookFailure !== undefined && attempts.length === 0) {
283
+ this.emit(pairResult(pair, {
284
+ status: 'skipped',
285
+ selected: true,
286
+ skip: { cause: 'hook-failed', reason: hookFailure.message },
287
+ attempts: [],
288
+ }));
289
+ return;
290
+ }
291
+ this.emit(pairResult(pair, { status: finalStatus, selected: true, attempts }));
292
+ }
293
+ // --- attempt core ---
294
+ /** Starts one attempt on the backend, restores a configured session, and starts tracing. */
295
+ async launchSession(pair, attemptId, artifactsDir, signal) {
296
+ // The backend booted in init() once per worker; the adapter is per-attempt
297
+ // so refs never cross attempts.
298
+ await this.initBackendOnce();
299
+ const backend = this.target.backend;
300
+ // Session restore rides the backend's neutral state capability. Checked
301
+ // before any per-attempt isolation opens, so a misconfigured session never
302
+ // orphans a started attempt.
303
+ if (pair.options.session !== undefined && backend?.state === undefined) {
304
+ throw new ConfigurationError('UNSUPPORTED_CAPABILITY', `target "${this.target.name}" has no backend state capability for session restore`);
305
+ }
306
+ const session = createBackendSession({ backend, targetName: this.target.name });
307
+ const launch = (label, run) => this.lifecycle(label, this.config.launchTimeout, 'LAUNCH_TIMEOUT', signal, run);
308
+ const launchOp = (launchSignal) => this.op(attemptId, this.config.launchTimeout, launchSignal);
309
+ try {
310
+ const startAttempt = backend?.startAttempt?.bind(backend);
311
+ if (startAttempt !== undefined) {
312
+ await this.debug.time('session.launch', () => launch(`starting an attempt on backend ${backend?.name ?? 'none'}`, (launchSignal) => startAttempt({ attemptId, artifactsDir, signal: launchSignal })));
313
+ }
314
+ if (pair.options.session !== undefined) {
315
+ const state = await this.options.sessionStore.load(pair.options.session, this.sessionIdentity);
316
+ await launch('restoring the session', (launchSignal) => session.restoreState(state, launchOp(launchSignal)));
317
+ }
318
+ if (this.config.artifacts.includes('trace') && session.artifacts.startTrace !== undefined) {
319
+ // An explicitly configured trace is a contract; the default set is best-effort.
320
+ const starting = launch('starting the trace', (launchSignal) => session.artifacts.startTrace(launchOp(launchSignal)));
321
+ if (this.config.artifactsExplicit)
322
+ await starting;
323
+ else
324
+ await starting.catch(() => undefined);
325
+ }
326
+ }
327
+ catch (cause) {
328
+ // The attempt's isolation is open, or a timed-out startAttempt may still
329
+ // open it: end it within the cleanup budget, or the retry opens a second
330
+ // one. A backend without startAttempt makes this a no-op.
331
+ await this.endAttempt(session, attemptId).catch(() => undefined);
332
+ throw cause;
333
+ }
334
+ return session;
335
+ }
336
+ /** Ends one attempt's isolation within the cleanup budget. */
337
+ endAttempt(session, attemptId) {
338
+ return this.lifecycle('ending the attempt', this.config.cleanupTimeout, 'CLEANUP_TIMEOUT', NEVER_ABORTS, (signal) => session.close(this.op(attemptId, this.config.cleanupTimeout, signal)));
339
+ }
340
+ /** Finalizes trace and ends the attempt with a fresh cleanup budget. */
341
+ async closeSession(session, attemptId, record, artifactSink, secondaryErrors) {
342
+ if (this.config.artifacts.includes('trace') && session.artifacts.stopTrace !== undefined) {
343
+ try {
344
+ const tracePath = await this.lifecycle('stopping the trace', this.config.cleanupTimeout, 'CLEANUP_TIMEOUT', NEVER_ABORTS, (signal) => session.artifacts.stopTrace(this.op(attemptId, this.config.cleanupTimeout, signal)));
345
+ artifactSink.register('trace', tracePath);
346
+ }
347
+ catch (cause) {
348
+ // Best-effort for the default artifact set; a configured trace that
349
+ // cannot be finalized is a cleanup failure the report must show.
350
+ if (this.config.artifactsExplicit) {
351
+ record.cleanup = 'failed';
352
+ secondaryErrors.push(serializeError(classifyError(cause), { phase: 'cleanup' }));
353
+ }
354
+ }
355
+ }
356
+ try {
357
+ await this.debug.time('session.close', () => this.endAttempt(session, attemptId));
358
+ }
359
+ catch (cause) {
360
+ record.cleanup = 'failed';
361
+ secondaryErrors.push(serializeError(classifyError(cause), { phase: 'cleanup' }));
362
+ }
363
+ }
364
+ /** Runs one attempt to completion (SerialHost). */
365
+ /**
366
+ * Runs one attempt under its AI trace scope, so every model call the
367
+ * attempt makes is attributed to this test, target, and attempt.
368
+ */
369
+ runAttempt(pair, registered, realm, attemptIndex, context) {
370
+ return withAiTraceScope({
371
+ test: pair.test.titlePath.join(' › '),
372
+ testId: pair.test.id,
373
+ target: this.target.name,
374
+ attempt: attemptIndex,
375
+ }, () => this.executeAttempt(pair, registered, realm, attemptIndex, context));
376
+ }
377
+ async executeAttempt(pair, registered, realm, attemptIndex, context) {
378
+ const attemptId = uuidv7();
379
+ const startedAt = timestamp();
380
+ const startedMs = Date.now();
381
+ // Serial members borrow the group's shared session, open state, artifact
382
+ // directory, and prior-step context; every other attempt owns its own.
383
+ const shared = context.kind === 'serial' ? context.shared : undefined;
384
+ const onProgress = this.options.events?.onProgress;
385
+ const steps = new StepRecorder(attemptId, {
386
+ maxEventsPerStep: this.config.limits.maxEventsPerStep,
387
+ ...(onProgress === undefined
388
+ ? {}
389
+ : { onProgress: (progress) => onProgress(pair.test.id, progress) }),
390
+ });
391
+ // Agent prompts quote completed steps as prior context. Serial-group
392
+ // members prepend the steps earlier members already contributed.
393
+ const priorSteps = shared === undefined
394
+ ? () => steps.completed()
395
+ : () => [...shared.priorSteps, ...steps.completed()];
396
+ const secondaryErrors = [];
397
+ const attemptAbort = new AbortController();
398
+ const onInterrupt = () => attemptAbort.abort();
399
+ this.interruptSignal.addEventListener('abort', onInterrupt, { once: true });
400
+ const artifacts = createAttemptArtifacts({
401
+ artifactsRoot: this.artifactsRoot,
402
+ // Serial members share the group's session, and therefore its artifact
403
+ // directory; registering under their own would not resolve on disk.
404
+ segments: shared?.artifactSegments ??
405
+ [this.target.name, sanitizePathSegment(pair.test.id), `attempt-${attemptIndex}`],
406
+ attemptId,
407
+ currentStepId: () => steps.currentStepId,
408
+ ...(this.config.artifactStore === undefined ? {} : { store: this.config.artifactStore }),
409
+ // A serial member's artifacts are filed under the group attempt in the
410
+ // report, so that is the attempt a store must see for them.
411
+ identity: { runId: this.options.runId, testId: pair.test.id, attemptId: shared?.attemptId ?? attemptId },
412
+ });
413
+ const record = {
414
+ id: attemptId,
415
+ index: attemptIndex,
416
+ status: 'passed',
417
+ startedAt,
418
+ durationMs: 0,
419
+ steps: [],
420
+ artifacts: artifacts.records,
421
+ secondaryErrors,
422
+ cleanup: 'complete',
423
+ };
424
+ let openSession = null;
425
+ let failure;
426
+ let failurePhase;
427
+ let phase = 'launch';
428
+ let timedOut = false;
429
+ // Captured the moment the primary failure lands: steps that pass later —
430
+ // afterEach cleanup, teardown — must not confirm traces the failure
431
+ // implicated (a cleanup assertion says nothing about the failed flow).
432
+ let lastVerifiedAtFailure = -1;
433
+ const recordFailure = (cause, atPhase) => {
434
+ if (failure === undefined)
435
+ lastVerifiedAtFailure = steps.lastVerifiedStepIndex;
436
+ failure = classifyError(cause);
437
+ failurePhase = atPhase;
438
+ };
439
+ const cache = createAgentCacheContext({
440
+ cache: this.config.cache,
441
+ projectId: this.config.projectId,
442
+ testId: pair.test.id,
443
+ target: this.sessionIdentity,
444
+ attemptIndex,
445
+ });
446
+ try {
447
+ const session = shared?.session ??
448
+ (await this.launchSession(pair, attemptId, artifacts.dir, attemptAbort.signal));
449
+ openSession = session;
450
+ const testDeadline = new Deadline(pair.options.timeout);
451
+ const saveSession = context.kind !== 'setup'
452
+ ? undefined
453
+ : async (name) => {
454
+ if (session.captureState === undefined) {
455
+ throw new ConfigurationError('UNSUPPORTED_CAPABILITY', `target "${this.target.name}" has no backend state capability for session.save()`);
456
+ }
457
+ const state = await session.captureState(this.op(attemptId, this.config.actionTimeout, attemptAbort.signal));
458
+ context.staging.stage(name, state);
459
+ };
460
+ const fixtures = createFixtures({
461
+ config: this.config,
462
+ target: this.target,
463
+ session,
464
+ steps,
465
+ signal: attemptAbort.signal,
466
+ runId: this.options.runId,
467
+ attemptId,
468
+ testDeadline,
469
+ artifacts: artifacts.sink,
470
+ priorSteps,
471
+ agentContext: pair.options.agentContext,
472
+ saveSession,
473
+ ...(cache === undefined ? {} : { cache }),
474
+ debug: this.debug,
475
+ });
476
+ const beforeEachHooks = this.realms.hooksFor(realm, registered, 'beforeEach');
477
+ const afterEachHooks = this.realms.hooksFor(realm, registered, 'afterEach').toReversed();
478
+ const mainWork = async () => {
479
+ phase = 'beforeEach';
480
+ for (const hook of beforeEachHooks) {
481
+ await hook.fn(fixtures);
482
+ }
483
+ phase = 'body';
484
+ await registered.fn(fixtures);
485
+ };
486
+ try {
487
+ await this.debug.time('test.body', () => withTimeout(mainWork(), Math.max(1, testDeadline.remaining()), () => {
488
+ timedOut = true;
489
+ attemptAbort.abort();
490
+ return new TestTimeoutError(`test timed out after ${pair.options.timeout} ms in phase ${phase}`);
491
+ }));
492
+ }
493
+ catch (cause) {
494
+ recordFailure(cause, phase);
495
+ }
496
+ phase = 'afterEach';
497
+ for (const hook of afterEachHooks) {
498
+ try {
499
+ await withTimeout(Promise.resolve(hook.fn(fixtures)), this.config.cleanupTimeout, () => new TestTimeoutError('afterEach hook timed out'));
500
+ }
501
+ catch (cause) {
502
+ if (failure === undefined) {
503
+ recordFailure(cause, 'afterEach');
504
+ }
505
+ else {
506
+ secondaryErrors.push(serializeError(classifyError(cause), { phase: 'afterEach' }));
507
+ }
508
+ }
509
+ }
510
+ }
511
+ catch (cause) {
512
+ recordFailure(cause, phase);
513
+ }
514
+ finally {
515
+ this.interruptSignal.removeEventListener('abort', onInterrupt);
516
+ if (openSession !== null && shared === undefined) {
517
+ await this.closeSession(openSession, attemptId, record, artifacts.sink, secondaryErrors);
518
+ }
519
+ }
520
+ // Size and digest land asynchronously; the record is read right after.
521
+ await artifacts.settle();
522
+ record.durationMs = Date.now() - startedMs;
523
+ record.steps = [...steps.all()];
524
+ if (failure === undefined) {
525
+ record.status = 'passed';
526
+ }
527
+ else {
528
+ record.status = classifyAttemptStatus(failure, timedOut, this.interruptSignal.aborted);
529
+ record.error = serializeError(failure, { phase: failurePhase ?? phase });
530
+ }
531
+ if (cache !== undefined && record.status !== 'interrupted') {
532
+ // Settled only after the status is classified: an interrupted attempt
533
+ // implicates nothing — it writes nothing and evicts nothing — so Ctrl-C
534
+ // can never evict a good entry. On a failure, confirmation stops at what
535
+ // had been verified when the failure landed — later teardown steps
536
+ // prove nothing about the flow.
537
+ await flushStagedTraces(cache, failure === undefined ? steps.lastVerifiedStepIndex : lastVerifiedAtFailure);
538
+ }
539
+ return record;
540
+ }
541
+ }
542
+ /**
543
+ * The status of a failed attempt. An interrupt outranks everything except a
544
+ * timeout that had already fired: the attempt then timed out, whatever
545
+ * arrived after.
546
+ */
547
+ function classifyAttemptStatus(failure, timedOut, interrupted) {
548
+ if (interrupted && !timedOut)
549
+ return 'interrupted';
550
+ if (timedOut || failure instanceof TestTimeoutError || failure.code === 'TEST_TIMEOUT') {
551
+ return 'timed-out';
552
+ }
553
+ return 'failed';
554
+ }
555
+ //# sourceMappingURL=execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/run/execute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /** Attempt-scoped fixture graph (spec 02-test-api.md, 08-platforms.md). */
2
+ import type { AgentCacheContext } from '../cache/context.ts';
3
+ import type { TargetSession } from '../backend/surface.ts';
4
+ import type { DebugTrace } from '../internal/debug.ts';
5
+ import { Deadline } from '../internal/time.ts';
6
+ import type { ResolvedConfig, ResolvedTarget } from '../config/resolve.ts';
7
+ import type { SetupSession, TestFixtures } from '../types.ts';
8
+ import type { StepRecord, StepRecorder } from './steps.ts';
9
+ export interface ArtifactSink {
10
+ /** Absolute attempt artifact directory, for runner-written artifacts. */
11
+ readonly dir: string;
12
+ /** Registers a produced artifact and returns its report artifact ID. */
13
+ register(kind: 'screenshot' | 'trace' | 'video' | 'download' | 'log', relativePath: string): string;
14
+ }
15
+ export interface AttemptEnvironment {
16
+ readonly config: ResolvedConfig;
17
+ readonly target: ResolvedTarget;
18
+ readonly session: TargetSession;
19
+ readonly steps: StepRecorder;
20
+ readonly signal: AbortSignal;
21
+ readonly runId: string;
22
+ readonly attemptId: string;
23
+ readonly testDeadline: Deadline;
24
+ readonly artifacts: ArtifactSink;
25
+ /** Completed steps agent prompts quote as prior context; serial members see the whole group. */
26
+ readonly priorSteps: () => readonly StepRecord[];
27
+ /** Trusted test/group agent context appended after config.agent.context. */
28
+ readonly agentContext: string | undefined;
29
+ /** Stages one captured session state; only setup attempts provide this. */
30
+ readonly saveSession: ((name: string) => Promise<void>) | undefined;
31
+ /** The attempt's trace cache context, or undefined when caching is off. */
32
+ readonly cache?: AgentCacheContext;
33
+ /** `--debug` phase timings; absent when the caller collects none. */
34
+ readonly debug?: DebugTrace;
35
+ }
36
+ /** Builds the lazy fixture graph for one attempt. */
37
+ export declare function createFixtures(environment: AttemptEnvironment): TestFixtures & {
38
+ readonly session: SetupSession;
39
+ };
40
+ //# sourceMappingURL=fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/run/fixtures.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAI3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAI7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIvD,OAAO,EAAE,QAAQ,EAAe,MAAM,qBAAqB,CAAC;AAS5D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,KAAK,EAA0B,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,KAAK,EAAY,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAErE,MAAM,WAAW,YAAY;IAC3B,yEAAyE;IACzE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,QAAQ,CACN,IAAI,EAAE,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,KAAK,EAC3D,YAAY,EAAE,MAAM,GACnB,MAAM,CAAC;CACX;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,gGAAgG;IAChG,QAAQ,CAAC,UAAU,EAAE,MAAM,SAAS,UAAU,EAAE,CAAC;IACjD,4EAA4E;IAC5E,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACpE,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IACnC,qEAAqE;IACrE,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;CAC7B;AAED,qDAAqD;AACrD,wBAAgB,cAAc,CAC5B,WAAW,EAAE,kBAAkB,GAC9B,YAAY,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CA4GnD"}