@e2edev/e2e 0.5.0 → 0.6.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 (415) hide show
  1. package/README.md +64 -25
  2. package/dist/agent/act.d.ts +2 -2
  3. package/dist/agent/act.js +14 -37
  4. package/dist/agent/act.js.map +1 -1
  5. package/dist/agent/actions.d.ts +2 -2
  6. package/dist/agent/actions.d.ts.map +1 -1
  7. package/dist/agent/actions.js +1 -1
  8. package/dist/agent/ai-sdk.d.ts +1 -2
  9. package/dist/agent/ai-sdk.d.ts.map +1 -1
  10. package/dist/agent/ai-sdk.js +1 -2
  11. package/dist/agent/ai-sdk.js.map +1 -1
  12. package/dist/agent/default-agent.d.ts +10 -32
  13. package/dist/agent/default-agent.d.ts.map +1 -1
  14. package/dist/agent/default-agent.js +6 -13
  15. package/dist/agent/default-agent.js.map +1 -1
  16. package/dist/agent/derived.d.ts +1 -1
  17. package/dist/agent/derived.js +1 -1
  18. package/dist/agent/error.d.ts +2 -4
  19. package/dist/agent/error.d.ts.map +1 -1
  20. package/dist/agent/error.js +3 -5
  21. package/dist/agent/error.js.map +1 -1
  22. package/dist/agent/executor.d.ts +23 -52
  23. package/dist/agent/executor.d.ts.map +1 -1
  24. package/dist/agent/executor.js +1 -2
  25. package/dist/agent/executor.js.map +1 -1
  26. package/dist/agent/index.d.ts +1 -1
  27. package/dist/agent/index.d.ts.map +1 -1
  28. package/dist/agent/index.js +10 -7
  29. package/dist/agent/index.js.map +1 -1
  30. package/dist/agent/invocation.d.ts +8 -6
  31. package/dist/agent/invocation.d.ts.map +1 -1
  32. package/dist/agent/invocation.js +9 -4
  33. package/dist/agent/invocation.js.map +1 -1
  34. package/dist/agent/ledger.d.ts +17 -12
  35. package/dist/agent/ledger.d.ts.map +1 -1
  36. package/dist/agent/ledger.js +6 -9
  37. package/dist/agent/ledger.js.map +1 -1
  38. package/dist/agent/model/adapter.d.ts +7 -4
  39. package/dist/agent/model/adapter.d.ts.map +1 -1
  40. package/dist/agent/model/adapter.js +2 -2
  41. package/dist/agent/model/adapter.js.map +1 -1
  42. package/dist/agent/model/router.d.ts +1 -1
  43. package/dist/agent/model/router.d.ts.map +1 -1
  44. package/dist/agent/model/router.js +1 -1
  45. package/dist/agent/model/router.js.map +1 -1
  46. package/dist/agent/model/sdk.d.ts +11 -1
  47. package/dist/agent/model/sdk.d.ts.map +1 -1
  48. package/dist/agent/model/sdk.js +54 -10
  49. package/dist/agent/model/sdk.js.map +1 -1
  50. package/dist/agent/observation.d.ts +7 -7
  51. package/dist/agent/observation.d.ts.map +1 -1
  52. package/dist/agent/observation.js +7 -7
  53. package/dist/agent/observation.js.map +1 -1
  54. package/dist/agent/phases.d.ts +3 -3
  55. package/dist/agent/phases.d.ts.map +1 -1
  56. package/dist/agent/phases.js +4 -4
  57. package/dist/agent/phases.js.map +1 -1
  58. package/dist/agent/primitives.d.ts +4 -25
  59. package/dist/agent/primitives.d.ts.map +1 -1
  60. package/dist/agent/primitives.js +3 -36
  61. package/dist/agent/primitives.js.map +1 -1
  62. package/dist/agent/prompts.d.ts +1 -1
  63. package/dist/agent/prompts.js +1 -1
  64. package/dist/agent/protocol.d.ts +2 -3
  65. package/dist/agent/protocol.d.ts.map +1 -1
  66. package/dist/agent/protocol.js +2 -3
  67. package/dist/agent/protocol.js.map +1 -1
  68. package/dist/agent/public.d.ts +8 -10
  69. package/dist/agent/public.d.ts.map +1 -1
  70. package/dist/agent/public.js +7 -8
  71. package/dist/agent/public.js.map +1 -1
  72. package/dist/agent/replay.d.ts +2 -2
  73. package/dist/agent/replay.d.ts.map +1 -1
  74. package/dist/agent/replay.js +1 -1
  75. package/dist/agent/secrets.d.ts +3 -3
  76. package/dist/agent/secrets.d.ts.map +1 -1
  77. package/dist/agent/secrets.js +4 -4
  78. package/dist/agent/secrets.js.map +1 -1
  79. package/dist/agent/step-cache.d.ts +1 -1
  80. package/dist/agent/step-cache.d.ts.map +1 -1
  81. package/dist/agent/step-cache.js +7 -1
  82. package/dist/agent/step-cache.js.map +1 -1
  83. package/dist/agent/tool-loop.d.ts +9 -33
  84. package/dist/agent/tool-loop.d.ts.map +1 -1
  85. package/dist/agent/tool-loop.js +15 -38
  86. package/dist/agent/tool-loop.js.map +1 -1
  87. package/dist/agent/tool.d.ts +4 -5
  88. package/dist/agent/tool.d.ts.map +1 -1
  89. package/dist/agent/tool.js +2 -7
  90. package/dist/agent/tool.js.map +1 -1
  91. package/dist/cache/anchors.d.ts +2 -2
  92. package/dist/cache/anchors.d.ts.map +1 -1
  93. package/dist/cache/anchors.js +1 -1
  94. package/dist/cache/context.d.ts +6 -1
  95. package/dist/cache/context.d.ts.map +1 -1
  96. package/dist/cache/context.js +2 -1
  97. package/dist/cache/context.js.map +1 -1
  98. package/dist/cache/decide.d.ts +1 -1
  99. package/dist/cache/decide.js +1 -1
  100. package/dist/cache/identity.d.ts +9 -9
  101. package/dist/cache/identity.d.ts.map +1 -1
  102. package/dist/cache/identity.js +6 -6
  103. package/dist/cache/identity.js.map +1 -1
  104. package/dist/cache/recorder.d.ts +4 -2
  105. package/dist/cache/recorder.d.ts.map +1 -1
  106. package/dist/cache/recorder.js +10 -1
  107. package/dist/cache/recorder.js.map +1 -1
  108. package/dist/cache/relocate.d.ts +2 -2
  109. package/dist/cache/relocate.d.ts.map +1 -1
  110. package/dist/cache/relocate.js +1 -1
  111. package/dist/cache/store.d.ts +1 -1
  112. package/dist/cache/store.js +1 -1
  113. package/dist/cache/trace.d.ts +16 -1
  114. package/dist/cache/trace.d.ts.map +1 -1
  115. package/dist/cache/trace.js +22 -1
  116. package/dist/cache/trace.js.map +1 -1
  117. package/dist/cli/bin.js +9 -1
  118. package/dist/cli/bin.js.map +1 -1
  119. package/dist/cli/cache.d.ts +25 -0
  120. package/dist/cli/cache.d.ts.map +1 -0
  121. package/dist/cli/cache.js +249 -0
  122. package/dist/cli/cache.js.map +1 -0
  123. package/dist/cli/docs-url.d.ts +3 -0
  124. package/dist/cli/docs-url.d.ts.map +1 -0
  125. package/dist/cli/docs-url.js +3 -0
  126. package/dist/cli/docs-url.js.map +1 -0
  127. package/dist/cli/guide.d.ts +4 -0
  128. package/dist/cli/guide.d.ts.map +1 -0
  129. package/dist/cli/guide.js +16 -0
  130. package/dist/cli/guide.js.map +1 -0
  131. package/dist/cli/index.d.ts +1 -1
  132. package/dist/cli/index.d.ts.map +1 -1
  133. package/dist/cli/index.js +211 -42
  134. package/dist/cli/index.js.map +1 -1
  135. package/dist/cli/init/agent-skill.d.ts +34 -0
  136. package/dist/cli/init/agent-skill.d.ts.map +1 -0
  137. package/dist/cli/init/agent-skill.js +44 -0
  138. package/dist/cli/init/agent-skill.js.map +1 -0
  139. package/dist/cli/init/{backends.d.ts → engines.d.ts} +39 -32
  140. package/dist/cli/init/engines.d.ts.map +1 -0
  141. package/dist/cli/init/{backends.js → engines.js} +43 -34
  142. package/dist/cli/init/engines.js.map +1 -0
  143. package/dist/cli/init/package.d.ts +19 -3
  144. package/dist/cli/init/package.d.ts.map +1 -1
  145. package/dist/cli/init/package.js +20 -20
  146. package/dist/cli/init/package.js.map +1 -1
  147. package/dist/cli/init/scaffold.d.ts +3 -3
  148. package/dist/cli/init/scaffold.d.ts.map +1 -1
  149. package/dist/cli/init/scaffold.js +13 -12
  150. package/dist/cli/init/scaffold.js.map +1 -1
  151. package/dist/cli/init.d.ts +14 -2
  152. package/dist/cli/init.d.ts.map +1 -1
  153. package/dist/cli/init.js +104 -25
  154. package/dist/cli/init.js.map +1 -1
  155. package/dist/cli/signals.d.ts +5 -2
  156. package/dist/cli/signals.d.ts.map +1 -1
  157. package/dist/cli/signals.js +9 -3
  158. package/dist/cli/signals.js.map +1 -1
  159. package/dist/cli/skill.d.ts +16 -0
  160. package/dist/cli/skill.d.ts.map +1 -0
  161. package/dist/cli/skill.js +57 -0
  162. package/dist/cli/skill.js.map +1 -0
  163. package/dist/collect/collect.d.ts +40 -3
  164. package/dist/collect/collect.d.ts.map +1 -1
  165. package/dist/collect/collect.js +142 -19
  166. package/dist/collect/collect.js.map +1 -1
  167. package/dist/collect/registry.d.ts +1 -1
  168. package/dist/collect/registry.d.ts.map +1 -1
  169. package/dist/collect/registry.js +2 -2
  170. package/dist/collect/registry.js.map +1 -1
  171. package/dist/collect/select.d.ts +1 -1
  172. package/dist/collect/select.d.ts.map +1 -1
  173. package/dist/collect/select.js +81 -8
  174. package/dist/collect/select.js.map +1 -1
  175. package/dist/config/agent.d.ts +14 -2
  176. package/dist/config/agent.d.ts.map +1 -1
  177. package/dist/config/agent.js +36 -11
  178. package/dist/config/agent.js.map +1 -1
  179. package/dist/config/app.d.ts +76 -19
  180. package/dist/config/app.d.ts.map +1 -1
  181. package/dist/config/app.js +159 -104
  182. package/dist/config/app.js.map +1 -1
  183. package/dist/config/diagnose.d.ts +15 -0
  184. package/dist/config/diagnose.d.ts.map +1 -0
  185. package/dist/config/diagnose.js +122 -0
  186. package/dist/config/diagnose.js.map +1 -0
  187. package/dist/config/load.d.ts +9 -1
  188. package/dist/config/load.d.ts.map +1 -1
  189. package/dist/config/load.js +35 -3
  190. package/dist/config/load.js.map +1 -1
  191. package/dist/config/resolve.d.ts +8 -7
  192. package/dist/config/resolve.d.ts.map +1 -1
  193. package/dist/config/resolve.js +73 -40
  194. package/dist/config/resolve.js.map +1 -1
  195. package/dist/config/validate.d.ts +6 -2
  196. package/dist/config/validate.d.ts.map +1 -1
  197. package/dist/config/validate.js +20 -3
  198. package/dist/config/validate.js.map +1 -1
  199. package/dist/credentials.d.ts +1 -1
  200. package/dist/credentials.d.ts.map +1 -1
  201. package/dist/credentials.js +1 -1
  202. package/dist/credentials.js.map +1 -1
  203. package/dist/{backend → engine}/contract.d.ts +27 -19
  204. package/dist/engine/contract.d.ts.map +1 -0
  205. package/dist/{backend → engine}/contract.js +18 -18
  206. package/dist/engine/contract.js.map +1 -0
  207. package/dist/{backend → engine}/index.d.ts +141 -79
  208. package/dist/engine/index.d.ts.map +1 -0
  209. package/dist/{backend → engine}/index.js +62 -37
  210. package/dist/engine/index.js.map +1 -0
  211. package/dist/engine/session.d.ts +23 -0
  212. package/dist/engine/session.d.ts.map +1 -0
  213. package/dist/{backend → engine}/session.js +58 -51
  214. package/dist/engine/session.js.map +1 -0
  215. package/dist/{backend → engine}/surface.d.ts +11 -11
  216. package/dist/engine/surface.d.ts.map +1 -0
  217. package/dist/{backend → engine}/surface.js +2 -2
  218. package/dist/engine/surface.js.map +1 -0
  219. package/dist/engine/timing.d.ts.map +1 -0
  220. package/dist/engine/timing.js +8 -0
  221. package/dist/engine/timing.js.map +1 -0
  222. package/dist/expect/async.d.ts +1 -1
  223. package/dist/expect/async.d.ts.map +1 -1
  224. package/dist/expect/async.js +37 -1
  225. package/dist/expect/async.js.map +1 -1
  226. package/dist/expect/index.js +1 -1
  227. package/dist/expect/values.d.ts +1 -1
  228. package/dist/expect/values.d.ts.map +1 -1
  229. package/dist/expect/values.js +1 -1
  230. package/dist/expect/values.js.map +1 -1
  231. package/dist/index.d.ts +3 -5
  232. package/dist/index.d.ts.map +1 -1
  233. package/dist/index.js +1 -5
  234. package/dist/index.js.map +1 -1
  235. package/dist/internal/brands.d.ts +1 -1
  236. package/dist/internal/brands.d.ts.map +1 -1
  237. package/dist/internal/brands.js +1 -1
  238. package/dist/internal/brands.js.map +1 -1
  239. package/dist/internal/errors.d.ts +37 -19
  240. package/dist/internal/errors.d.ts.map +1 -1
  241. package/dist/internal/errors.js +94 -44
  242. package/dist/internal/errors.js.map +1 -1
  243. package/dist/internal/globs.d.ts +2 -2
  244. package/dist/internal/globs.d.ts.map +1 -1
  245. package/dist/internal/globs.js +2 -2
  246. package/dist/internal/globs.js.map +1 -1
  247. package/dist/internal/ids.d.ts +3 -3
  248. package/dist/internal/ids.d.ts.map +1 -1
  249. package/dist/internal/ids.js +3 -3
  250. package/dist/internal/ids.js.map +1 -1
  251. package/dist/internal/node-version.d.ts +10 -0
  252. package/dist/internal/node-version.d.ts.map +1 -0
  253. package/dist/internal/node-version.js +28 -0
  254. package/dist/internal/node-version.js.map +1 -0
  255. package/dist/internal/objects.d.ts +21 -0
  256. package/dist/internal/objects.d.ts.map +1 -0
  257. package/dist/internal/objects.js +14 -0
  258. package/dist/internal/objects.js.map +1 -0
  259. package/dist/internal/package-manager.d.ts +10 -0
  260. package/dist/internal/package-manager.d.ts.map +1 -0
  261. package/dist/internal/package-manager.js +43 -0
  262. package/dist/internal/package-manager.js.map +1 -0
  263. package/dist/internal/redact.d.ts +1 -1
  264. package/dist/internal/redact.d.ts.map +1 -1
  265. package/dist/internal/redact.js +1 -1
  266. package/dist/internal/redact.js.map +1 -1
  267. package/dist/internal/suggest.d.ts +16 -0
  268. package/dist/internal/suggest.d.ts.map +1 -0
  269. package/dist/internal/suggest.js +61 -0
  270. package/dist/internal/suggest.js.map +1 -0
  271. package/dist/internal/text.d.ts +1 -1
  272. package/dist/internal/text.d.ts.map +1 -1
  273. package/dist/internal/text.js +1 -1
  274. package/dist/internal/text.js.map +1 -1
  275. package/dist/internal/urls.d.ts +3 -3
  276. package/dist/internal/urls.d.ts.map +1 -1
  277. package/dist/internal/urls.js +8 -3
  278. package/dist/internal/urls.js.map +1 -1
  279. package/dist/locator/engine.d.ts +7 -7
  280. package/dist/locator/engine.d.ts.map +1 -1
  281. package/dist/locator/engine.js +14 -14
  282. package/dist/locator/engine.js.map +1 -1
  283. package/dist/locator/expression.d.ts +5 -3
  284. package/dist/locator/expression.d.ts.map +1 -1
  285. package/dist/locator/expression.js +25 -5
  286. package/dist/locator/expression.js.map +1 -1
  287. package/dist/locator/screen.d.ts +1 -1
  288. package/dist/locator/screen.d.ts.map +1 -1
  289. package/dist/locator/screen.js +3 -3
  290. package/dist/locator/screen.js.map +1 -1
  291. package/dist/report/build.d.ts +10 -9
  292. package/dist/report/build.d.ts.map +1 -1
  293. package/dist/report/build.js +25 -22
  294. package/dist/report/build.js.map +1 -1
  295. package/dist/report/code-frame.d.ts +8 -4
  296. package/dist/report/code-frame.d.ts.map +1 -1
  297. package/dist/report/code-frame.js +23 -18
  298. package/dist/report/code-frame.js.map +1 -1
  299. package/dist/report/debug-steps.js +1 -1
  300. package/dist/report/debug-steps.js.map +1 -1
  301. package/dist/report/format.d.ts +73 -0
  302. package/dist/report/format.d.ts.map +1 -0
  303. package/dist/report/format.js +147 -0
  304. package/dist/report/format.js.map +1 -0
  305. package/dist/report/junit.d.ts +1 -1
  306. package/dist/report/junit.d.ts.map +1 -1
  307. package/dist/report/junit.js +1 -1
  308. package/dist/report/junit.js.map +1 -1
  309. package/dist/report/list.d.ts +96 -47
  310. package/dist/report/list.d.ts.map +1 -1
  311. package/dist/report/list.js +489 -244
  312. package/dist/report/list.js.map +1 -1
  313. package/dist/report/live-window.d.ts +28 -0
  314. package/dist/report/live-window.d.ts.map +1 -0
  315. package/dist/report/live-window.js +102 -0
  316. package/dist/report/live-window.js.map +1 -0
  317. package/dist/report/write.d.ts +1 -1
  318. package/dist/report/write.d.ts.map +1 -1
  319. package/dist/report/write.js +1 -1
  320. package/dist/report/write.js.map +1 -1
  321. package/dist/run/budget.d.ts +2 -2
  322. package/dist/run/budget.js +2 -2
  323. package/dist/run/declared-processes.d.ts +30 -0
  324. package/dist/run/declared-processes.d.ts.map +1 -0
  325. package/dist/run/declared-processes.js +61 -0
  326. package/dist/run/declared-processes.js.map +1 -0
  327. package/dist/run/events.d.ts +30 -2
  328. package/dist/run/events.d.ts.map +1 -1
  329. package/dist/run/events.js.map +1 -1
  330. package/dist/run/execute.d.ts +19 -16
  331. package/dist/run/execute.d.ts.map +1 -1
  332. package/dist/run/execute.js +65 -67
  333. package/dist/run/execute.js.map +1 -1
  334. package/dist/run/fixture-recording.d.ts +10 -4
  335. package/dist/run/fixture-recording.d.ts.map +1 -1
  336. package/dist/run/fixture-recording.js +19 -6
  337. package/dist/run/fixture-recording.js.map +1 -1
  338. package/dist/run/fixtures.d.ts +2 -2
  339. package/dist/run/fixtures.d.ts.map +1 -1
  340. package/dist/run/fixtures.js +72 -44
  341. package/dist/run/fixtures.js.map +1 -1
  342. package/dist/run/in-process.d.ts +1 -1
  343. package/dist/run/in-process.js +1 -1
  344. package/dist/run/managed-process.d.ts +46 -9
  345. package/dist/run/managed-process.d.ts.map +1 -1
  346. package/dist/run/managed-process.js +136 -50
  347. package/dist/run/managed-process.js.map +1 -1
  348. package/dist/run/realm.d.ts +2 -2
  349. package/dist/run/realm.js +2 -2
  350. package/dist/run/runner.d.ts +23 -1
  351. package/dist/run/runner.d.ts.map +1 -1
  352. package/dist/run/runner.js +111 -40
  353. package/dist/run/runner.js.map +1 -1
  354. package/dist/run/scheduler.d.ts +5 -5
  355. package/dist/run/scheduler.d.ts.map +1 -1
  356. package/dist/run/scheduler.js +7 -7
  357. package/dist/run/scheduler.js.map +1 -1
  358. package/dist/run/serial.d.ts +10 -2
  359. package/dist/run/serial.d.ts.map +1 -1
  360. package/dist/run/serial.js +5 -3
  361. package/dist/run/serial.js.map +1 -1
  362. package/dist/run/sessions.d.ts +10 -10
  363. package/dist/run/sessions.d.ts.map +1 -1
  364. package/dist/run/sessions.js +11 -11
  365. package/dist/run/sessions.js.map +1 -1
  366. package/dist/run/steps.d.ts +3 -3
  367. package/dist/run/steps.d.ts.map +1 -1
  368. package/dist/run/steps.js +1 -1
  369. package/dist/run/steps.js.map +1 -1
  370. package/dist/run/units.d.ts +1 -1
  371. package/dist/run/units.js +1 -1
  372. package/dist/run/worker/entry.d.ts +1 -1
  373. package/dist/run/worker/entry.js +2 -2
  374. package/dist/run/worker/entry.js.map +1 -1
  375. package/dist/run/worker/protocol.d.ts +18 -6
  376. package/dist/run/worker/protocol.d.ts.map +1 -1
  377. package/dist/run/worker/protocol.js +1 -1
  378. package/dist/run/worker/protocol.js.map +1 -1
  379. package/dist/run/worker/session.d.ts +2 -2
  380. package/dist/run/worker/session.d.ts.map +1 -1
  381. package/dist/run/worker/session.js +5 -3
  382. package/dist/run/worker/session.js.map +1 -1
  383. package/dist/types.d.ts +58 -41
  384. package/dist/types.d.ts.map +1 -1
  385. package/dist/types.js +2 -2
  386. package/package.json +13 -12
  387. package/skills/e2e/SKILL.md +110 -0
  388. package/skills/e2e/references/agent.md +210 -0
  389. package/skills/e2e/references/debugging.md +81 -0
  390. package/skills/e2e/references/running.md +153 -0
  391. package/skills/e2e/references/setup.md +238 -0
  392. package/skills/e2e/references/writing-tests.md +289 -0
  393. package/dist/backend/contract.d.ts.map +0 -1
  394. package/dist/backend/contract.js.map +0 -1
  395. package/dist/backend/index.d.ts.map +0 -1
  396. package/dist/backend/index.js.map +0 -1
  397. package/dist/backend/session.d.ts +0 -23
  398. package/dist/backend/session.d.ts.map +0 -1
  399. package/dist/backend/session.js.map +0 -1
  400. package/dist/backend/surface.d.ts.map +0 -1
  401. package/dist/backend/surface.js.map +0 -1
  402. package/dist/backend/timing.d.ts.map +0 -1
  403. package/dist/backend/timing.js +0 -8
  404. package/dist/backend/timing.js.map +0 -1
  405. package/dist/cli/init/backends.d.ts.map +0 -1
  406. package/dist/cli/init/backends.js.map +0 -1
  407. package/dist/report/live-status.d.ts +0 -51
  408. package/dist/report/live-status.d.ts.map +0 -1
  409. package/dist/report/live-status.js +0 -163
  410. package/dist/report/live-status.js.map +0 -1
  411. package/dist/run/fixture-legacy.d.ts +0 -36
  412. package/dist/run/fixture-legacy.d.ts.map +0 -1
  413. package/dist/run/fixture-legacy.js +0 -143
  414. package/dist/run/fixture-legacy.js.map +0 -1
  415. /package/dist/{backend → engine}/timing.d.ts +0 -0
@@ -1,13 +1,14 @@
1
- /** Attempt-scoped fixture graph (spec 02-test-api.md, 08-platforms.md). */
1
+ /** Attempt-scoped fixture graph. */
2
2
  import { createAgentFixture } from '../agent/index.js';
3
3
  import { createModelRouter } from '../agent/model/router.js';
4
4
  import { createModelAdapter } from '../agent/model/sdk.js';
5
5
  import { expectationBrand } from '../internal/brands.js';
6
- import { ConfigurationError } from '../internal/errors.js';
6
+ import { ConfigurationError, errorMessage, InfrastructureError } from '../internal/errors.js';
7
+ import { didYouMean } from '../internal/suggest.js';
7
8
  import { SecretLedger } from '../internal/redact.js';
9
+ import { obj } from '../internal/objects.js';
8
10
  import { resolveNavigationUrl } from '../internal/urls.js';
9
11
  import { FixtureRecorder } from './fixture-recording.js';
10
- import { recordedSurface, StepAttachments } from './fixture-legacy.js';
11
12
  import { LocatorEngine } from '../locator/engine.js';
12
13
  import { createLocator, createScopedScreen, createScreen, } from '../locator/screen.js';
13
14
  /** Secrets survive every fixture graph that shares the same live isolation. */
@@ -70,6 +71,7 @@ export function createFixtures(environment) {
70
71
  platform: environment.target.platform,
71
72
  verbs: environment.session.verbs,
72
73
  },
74
+ app: environment.target.app,
73
75
  attempt: environment.attempt,
74
76
  priorSteps: environment.priorSteps,
75
77
  agentContext: joinAgentContext(environment.config.agent.context, environment.agentContext),
@@ -102,9 +104,17 @@ export function createFixtures(environment) {
102
104
  }
103
105
  /** Keys a test body may probe without meaning a fixture. */
104
106
  const PROBED_KEYS = new Set(['then', 'constructor', 'toJSON', 'toString', 'valueOf', 'inspect']);
107
+ /** Fixtures other runners hand out, each pointed at the e2e way of doing the same thing. */
108
+ const FOREIGN_FIXTURE_HINTS = {
109
+ page: 'there is no Playwright page: open the app with app.open() and find elements through screen; browser-only APIs are on the web fixture of a Playwright target',
110
+ browser: 'the browser is owned by the engine: drive it through app, screen, and (on a Playwright target) web',
111
+ context: 'the browser context is owned by the engine: cookies, routes, and storage are on the web fixture of a Playwright target',
112
+ request: 'there is no request fixture: call fetch() directly, or reach the browser through the web fixture of a Playwright target',
113
+ driver: 'there is no WebDriver session: drive the device through app, screen, and (on an agent-device target) device',
114
+ };
105
115
  /**
106
- * Reaching for a fixture the target's backend does not contribute fails at
107
- * the first touch with the earliest honest error: the backend's name and what
116
+ * Reaching for a fixture the target's engine does not contribute fails at
117
+ * the first touch with the earliest honest error: the engine's name and what
108
118
  * it does declare, instead of a TypeError three lines later.
109
119
  */
110
120
  function gateUnknownFixtures(fixtures, environment) {
@@ -113,53 +123,53 @@ function gateUnknownFixtures(fixtures, environment) {
113
123
  if (typeof property !== 'string' || property in target || PROBED_KEYS.has(property)) {
114
124
  return Reflect.get(target, property, receiver);
115
125
  }
116
- const backend = environment.target.backend;
117
- const declared = Object.keys(backend?.fixtures ?? {});
118
- throw new ConfigurationError('UNSUPPORTED_CAPABILITY', `target "${environment.target.name}" has no "${property}" fixture: backend ${backend?.name ?? 'none'} contributes ${declared.length === 0 ? 'no fixtures' : declared.join(', ')}`);
126
+ const engine = environment.target.engine;
127
+ const declared = Object.keys(engine?.fixtures ?? {});
128
+ const available = Object.keys(target).toSorted();
129
+ const contributed = `engine ${engine?.name ?? 'none'} contributes ${declared.length === 0 ? 'no fixtures' : declared.join(', ')}`;
130
+ const foreign = FOREIGN_FIXTURE_HINTS[property];
131
+ const hint = foreign === undefined ? didYouMean(property, available) : `; ${foreign}`;
132
+ throw new ConfigurationError('UNSUPPORTED_CAPABILITY', `target "${environment.target.name}" has no "${property}" fixture; available: ${available.join(', ')} (${contributed})${hint}`);
119
133
  },
120
134
  });
121
135
  }
122
136
  /**
123
- * Backend-contributed fixtures (RFC0002): factories declare operation metadata
124
- * through context.fixture. The legacy adapter preserves older factories that
125
- * return a plain surface. Factories stay lazy and each instance belongs to
126
- * one test's fixture graph; the session's secrecy state outlives that graph.
137
+ * Engine-contributed fixtures: factories declare operation metadata
138
+ * through context.fixture and must return the surface they declared. Factories
139
+ * stay lazy and each instance belongs to one test's fixture graph; the
140
+ * session's secrecy state outlives that graph.
127
141
  */
128
142
  function contributedFixtures(environment, engine, screenContext) {
129
- const declared = environment.target.backend?.fixtures;
143
+ const declared = environment.target.engine?.fixtures;
130
144
  if (declared === undefined)
131
145
  return {};
132
146
  const contributed = {};
133
- const attachments = new StepAttachments(environment.steps);
134
147
  const recorder = new FixtureRecorder(environment);
135
- const context = fixtureContext(environment, engine, screenContext, attachments, recorder);
148
+ const context = fixtureContext(environment, engine, screenContext, recorder);
136
149
  for (const [name, factory] of Object.entries(declared)) {
137
150
  let instance;
138
151
  Object.defineProperty(contributed, name, {
139
152
  enumerable: true,
140
153
  get() {
141
- instance ??= recorder.adapt(factory(context), (surface) => recordedSurface(surface, environment, attachments, {
142
- path: [name],
143
- kind: 'resource',
144
- bounded: true,
145
- }));
154
+ instance ??= recorder.require(name, factory(context));
146
155
  return instance;
147
156
  },
148
157
  });
149
158
  }
150
159
  return contributed;
151
160
  }
152
- function fixtureContext(environment, engine, screenContext, attachments, recorder) {
161
+ function fixtureContext(environment, engine, screenContext, recorder) {
153
162
  const { config, steps } = environment;
163
+ const { app } = environment.target;
154
164
  return {
155
165
  targetName: environment.target.name,
156
166
  fixture: (name, surface, operations) => recorder.fixture(name, surface, operations),
157
167
  app: {
158
- ...(config.app.configured ? { baseUrl: config.app.base.href } : {}),
159
- allowedOrigins: config.app.allowedOrigins,
168
+ ...obj({ baseUrl: app.base?.href }),
169
+ allowedOrigins: app.allowedOrigins,
160
170
  resolveUrl: (url) => {
161
- requireAppUrl(config);
162
- return resolveNavigationUrl(url, config.app.base, config.app.allowedOrigins).url;
171
+ requireAppUrl(environment.target);
172
+ return resolveNavigationUrl(url, app.base, app.allowedOrigins).url;
163
173
  },
164
174
  },
165
175
  timeouts: {
@@ -172,8 +182,8 @@ function fixtureContext(environment, engine, screenContext, attachments, recorde
172
182
  return engine.signal;
173
183
  },
174
184
  operation: (timeoutMs) => engine.operation(timeoutMs),
175
- attachArtifact: (kind, relativePath) => attachments.record(() => steps.attachArtifact(environment.artifacts.register(kind, relativePath))),
176
- attachViewport: (viewport) => attachments.record(() => steps.attachViewport(viewport)),
185
+ attachArtifact: (kind, relativePath) => steps.attachArtifact(environment.artifacts.register(kind, relativePath)),
186
+ attachViewport: (viewport) => steps.attachViewport(viewport),
177
187
  locator: (expression) => createLocator(screenContext, expression),
178
188
  screen: (wrap) => createScopedScreen(screenContext, wrap),
179
189
  expectable(target, factory) {
@@ -182,11 +192,7 @@ function fixtureContext(environment, engine, screenContext, attachments, recorde
182
192
  enumerable: false,
183
193
  configurable: true,
184
194
  get: () => {
185
- surface ??= recorder.adapt(factory(), (value) => recordedSurface(value, environment, attachments, {
186
- path: ['expect'],
187
- kind: 'assertion',
188
- bounded: false,
189
- }));
195
+ surface ??= recorder.require('expect', factory());
190
196
  return surface;
191
197
  },
192
198
  });
@@ -227,22 +233,44 @@ function joinAgentContext(configContext, testContext) {
227
233
  function initialSecretLedger(environment) {
228
234
  return new SecretLedger([...environment.config.credentials].flatMap(([name, { password }]) => typeof password === 'string' ? [[name, password]] : []));
229
235
  }
230
- /** Navigation needs a real app URL; the placeholder base never leaves the harness. */
231
- function requireAppUrl(config) {
232
- if (config.app.configured)
236
+ /** Navigation needs an app URL, and only the target's engine can declare one. */
237
+ function requireAppUrl(target) {
238
+ if (target.app.base !== undefined)
233
239
  return;
234
- throw new ConfigurationError('APP_URL_REQUIRED', 'navigation needs an app URL: set app.url in e2e.config.ts or the APP_URL environment variable');
240
+ throw new ConfigurationError('APP_URL_REQUIRED', `navigation needs an app URL: the engine of target "${target.name}" declares none (${target.engine?.name ?? 'no engine'})`);
241
+ }
242
+ /**
243
+ * Network-level failures a browser or device reports when nothing is
244
+ * listening where the app should be. Anything else that fails a navigation
245
+ * (a certificate, a 500, a crash mid-load) stays an engine failure.
246
+ */
247
+ const NOTHING_LISTENING = /ERR_CONNECTION_REFUSED|ECONNREFUSED|ERR_NAME_NOT_RESOLVED|ENOTFOUND|ERR_ADDRESS_UNREACHABLE|EHOSTUNREACH|ERR_CONNECTION_TIMED_OUT|ETIMEDOUT/;
248
+ /**
249
+ * A navigation the network refused means the app is down, which is the
250
+ * first thing a new project runs into and the last thing an engine failure
251
+ * message suggests. Named by its own code, with the URL and the three ways
252
+ * to fix it.
253
+ */
254
+ function unreachableApp(cause, url) {
255
+ const match = NOTHING_LISTENING.exec(errorMessage(cause));
256
+ if (match === null)
257
+ return undefined;
258
+ return new InfrastructureError('APP_UNREACHABLE', `nothing answered at ${url} (${match[0]}); start the app there, point the engine's url at where it runs, or give the engine a command so the runner starts it`, { cause });
235
259
  }
236
260
  function createApp(environment, engine) {
237
- const { config, steps } = environment;
238
- const allowed = config.app.allowedOrigins;
261
+ const { config, steps, target } = environment;
239
262
  /** One recorded navigation: policy-resolved against the base URL, on the test budget. */
240
- const navigate = (api, label, target) => steps.run('app', api, label, async () => {
241
- requireAppUrl(config);
242
- const resolved = target === undefined
243
- ? config.app.base.href
244
- : resolveNavigationUrl(target, config.app.base, allowed).url;
245
- await engine.session.app.open(resolved, engine.operation(config.timeout));
263
+ const navigate = (api, label, url) => steps.run('app', api, label, async () => {
264
+ requireAppUrl(target);
265
+ const resolved = url === undefined
266
+ ? target.app.base.href
267
+ : resolveNavigationUrl(url, target.app.base, target.app.allowedOrigins).url;
268
+ try {
269
+ await engine.session.app.open(resolved, engine.operation(config.timeout));
270
+ }
271
+ catch (cause) {
272
+ throw unreachableApp(cause, resolved) ?? cause;
273
+ }
246
274
  });
247
275
  return {
248
276
  open: (openPath) => navigate('app.open', openPath ?? '/', openPath),
@@ -1 +1 @@
1
- {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/run/fixtures.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/run/fixtures.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,YAAY,GAGb,MAAM,sBAAsB,CAAC;AAuC9B,+EAA+E;AAC/E,MAAM,cAAc,GAAG,IAAI,OAAO,EAAsE,CAAC;AAEzG,qDAAqD;AACrD,MAAM,UAAU,cAAc,CAC5B,WAA+B;IAE/B,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;QAC/B,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,MAAM,EAAE,WAAW,CAAC,MAAM;QAC1B,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,SAAS,EAAE,WAAW,CAAC,SAAS;QAChC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,aAAa;QAC/C,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,gBAAgB;KACtD,CAAC,CAAC;IAEH,IAAI,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,GAAG,EAAE,MAAM,EAAE,mBAAmB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;QAChF,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAClC,MAAM,OAAO,GAAmB;QAC9B,KAAK,CAAC,OAAO,CAAC,MAAM;YAClB,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,IAAI,kBAAkB,CAC1B,6BAA6B,EAC7B,eAAe,MAAM,CAAC,IAAI,qBAAqB,CAChD,CAAC;YACJ,CAAC;YACD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;YACrC,MAAM,SAAS,GAAG,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC/E,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;gBACtD,MAAM,IAAI,kBAAkB,CAC1B,6BAA6B,EAC7B,eAAe,MAAM,CAAC,IAAI,8CAA8C,CACzE,CAAC;YACJ,CAAC;YACD,mEAAmE;YACnE,6CAA6C;YAC7C,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;YACnB,kEAAkE;YAClE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACxC,OAAO,SAAS,CAAC;QACnB,CAAC;KACF,CAAC;IAEF,MAAM,aAAa,GAAkB;QACnC,MAAM;QACN,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,OAAO;QACP,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,WAAW;KAC5C,CAAC;IACF,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAE3C,IAAI,KAAwB,CAAC;IAE7B,MAAM,QAAQ,GAA6C;QACzD,IAAI,KAAK;YACP,KAAK,KAAK,kBAAkB,CAAC;gBAC3B,MAAM;gBACN,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,mBAAmB,EAAE;gBACpE,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS;gBAC/D,MAAM,EAAE,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,kBAAkB,CAAC;gBACvE,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,MAAM,EAAE;oBACN,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI;oBAC7B,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,QAAQ;oBACrC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK;iBACjC;gBACD,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG;gBAC3B,OAAO,EAAE,WAAW,CAAC,OAAO;gBAC5B,UAAU,EAAE,WAAW,CAAC,UAAU;gBAClC,YAAY,EAAE,gBAAgB,CAC5B,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAChC,WAAW,CAAC,YAAY,CACzB;gBACD,OAAO;gBACP,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK;gBACL,SAAS,EAAE,WAAW,CAAC,SAAS;gBAChC,GAAG,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxE,GAAG,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACzE,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;QACD,GAAG;QACH,MAAM;QACN,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,QAAQ;QACrC,OAAO,EAAE;YACP,IAAI,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;gBAC3B,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;gBAC5C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;oBAC9B,MAAM,IAAI,kBAAkB,CAC1B,gBAAgB,EAChB,qDAAqD,CACtD,CAAC;gBACJ,CAAC;gBACD,MAAM,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YACxF,CAAC;SACF;KACF,CAAC;IACF,yEAAyE;IACzE,2EAA2E;IAC3E,MAAM,CAAC,gBAAgB,CACrB,QAAQ,EACR,MAAM,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAC1F,CAAC;IAEF,OAAO,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpD,CAAC;AAED,4DAA4D;AAC5D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAEjG,4FAA4F;AAC5F,MAAM,qBAAqB,GAAqC;IAC9D,IAAI,EAAE,6JAA6J;IACnK,OAAO,EAAE,oGAAoG;IAC7G,OAAO,EAAE,wHAAwH;IACjI,OAAO,EAAE,yHAAyH;IAClI,MAAM,EAAE,6GAA6G;CACtH,CAAC;AAEF;;;;GAIG;AACH,SAAS,mBAAmB,CAAmB,QAAW,EAAE,WAA+B;IACzF,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;QACzB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ;YAC5B,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,IAAI,MAAM,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpF,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAY,CAAC;YAC5D,CAAC;YACD,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;YACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;YACjD,MAAM,WAAW,GAAG,UAAU,MAAM,EAAE,IAAI,IAAI,MAAM,gBAAgB,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClI,MAAM,OAAO,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;YACtF,MAAM,IAAI,kBAAkB,CAC1B,wBAAwB,EACxB,WAAW,WAAW,CAAC,MAAM,CAAC,IAAI,aAAa,QAAQ,yBAAyB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,WAAW,IAAI,IAAI,EAAE,CAC/H,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAC1B,WAA+B,EAC/B,MAAqB,EACrB,aAA4B;IAE5B,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;IACrD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACtC,MAAM,WAAW,GAA4B,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC7E,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,IAAI,QAA4B,CAAC;QACjC,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE;YACvC,UAAU,EAAE,IAAI;YAChB,GAAG;gBACD,QAAQ,KAAK,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;gBACtD,OAAO,QAAQ,CAAC;YAClB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,cAAc,CACrB,WAA+B,EAC/B,MAAqB,EACrB,aAA4B,EAC5B,QAAyB;IAEzB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC;IACtC,MAAM,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC;IACnC,OAAO;QACL,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI;QACnC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC;QACnF,GAAG,EAAE;YACH,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;YACnC,cAAc,EAAE,GAAG,CAAC,cAAc;YAClC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;gBAClB,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAClC,OAAO,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC;YACrE,CAAC;SACF;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM,CAAC,OAAO;YACpB,MAAM,EAAE,MAAM,CAAC,aAAa;YAC5B,SAAS,EAAE,MAAM,CAAC,gBAAgB;SACnC;QACD,yEAAyE;QACzE,IAAI,MAAM;YACR,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC;QACD,SAAS,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;QACrD,cAAc,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,CACrC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC1E,cAAc,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;QAC5D,OAAO,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,UAAU,CAAC;QACjE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,aAAa,EAAE,IAAI,CAAC;QACzD,UAAU,CAAqC,MAAS,EAAE,OAAgB;YACxE,IAAI,OAAsB,CAAC;YAC3B,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE;gBAC9C,UAAU,EAAE,KAAK;gBACjB,YAAY,EAAE,IAAI;gBAClB,GAAG,EAAE,GAAG,EAAE;oBACR,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;oBAClD,OAAO,OAAO,CAAC;gBACjB,CAAC;aACF,CAAC,CAAC;YACH,OAAO,MAA2B,CAAC;QACrC,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB;IAC1B,IAAI,QAAkC,CAAC;IACvC,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,0EAA0E;QAC1E,qEAAqE;QACrE,OAAO,EAAE,GAAG;QACZ,KAAK,CAAC,OAAO,CAAC,OAAO;YACnB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;gBAClE,QAAQ,GAAG,WAAW,EAAE,CAAC;YAC3B,CAAC;YACD,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,6DAA6D;AAC7D,SAAS,gBAAgB,CACvB,aAAiC,EACjC,WAA+B;IAE/B,MAAM,KAAK,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,MAAM,CAC/C,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CACnE,CAAC;IACF,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,WAA+B;IAC1D,OAAO,IAAI,YAAY,CACrB,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CACnE,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAChE,CACF,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,SAAS,aAAa,CAAC,MAAsB;IAG3C,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO;IAC1C,MAAM,IAAI,kBAAkB,CAC1B,kBAAkB,EAClB,sDAAsD,MAAM,CAAC,IAAI,oBAAoB,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,WAAW,GAAG,CAC3H,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,iBAAiB,GACrB,6IAA6I,CAAC;AAEhJ;;;;;GAKG;AACH,SAAS,cAAc,CAAC,KAAc,EAAE,GAAW;IACjD,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACrC,OAAO,IAAI,mBAAmB,CAC5B,iBAAiB,EACjB,uBAAuB,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,uHAAuH,EAC9J,EAAE,KAAK,EAAE,CACV,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,WAA+B,EAAE,MAAqB;IACvE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;IAE9C,yFAAyF;IACzF,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,GAAuB,EAAiB,EAAE,CACtF,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE;QACtC,aAAa,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,QAAQ,GACZ,GAAG,KAAK,SAAS;YACf,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI;YACtB,CAAC,CAAC,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC;QAChF,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC;QACjD,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;QACL,IAAI,EAAE,CAAC,QAAiB,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,IAAI,GAAG,EAAE,QAAQ,CAAC;QAC5E,QAAQ,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE,GAAG,CAAC;QAC7D,KAAK,CAAC,OAAO;YACX,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE;gBACnD,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,UAAU;YACd,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE;gBACtD,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,IAAI;YACR,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE;gBAChD,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,KAAc;YAC7B,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE;gBAChE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;gBACtF,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACzF,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * In-process `UnitRunner`, used when the config cannot cross a process
3
- * boundary — a programmatic `rawConfig` may hold live backend handles and
3
+ * boundary — a programmatic `rawConfig` may hold live engine handles and
4
4
  * closures. Execution still goes through the scheduler and the same
5
5
  * `TargetWorker` core; only the transport and pair resolution differ, and the
6
6
  * scheduler is capped at one worker so nothing overlaps in this process.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * In-process `UnitRunner`, used when the config cannot cross a process
3
- * boundary — a programmatic `rawConfig` may hold live backend handles and
3
+ * boundary — a programmatic `rawConfig` may hold live engine handles and
4
4
  * closures. Execution still goes through the scheduler and the same
5
5
  * `TargetWorker` core; only the transport and pair resolution differ, and the
6
6
  * scheduler is capped at one worker so nothing overlaps in this process.
@@ -1,38 +1,74 @@
1
- /** Spawned-process management for `app.command`, `app.services`, and their teardowns (spec 05-config.md). */
1
+ /** Spawned-process management for the commands and services engines declare, and their teardowns. */
2
2
  import type { Readiness, ResolvedService } from '../config/app.ts';
3
3
  import type { CommandConfig } from '../types.ts';
4
+ /**
5
+ * Kills every process group this module spawned and has not yet seen exit,
6
+ * synchronously and without waiting: the last resort before the process
7
+ * exits on the spot, so nothing it started outlives it. A reused process was
8
+ * never spawned here and is left alone.
9
+ */
10
+ export declare function killManagedProcessGroups(): void;
11
+ /**
12
+ * What the runner tells a managed process about the run: whether CI mode is
13
+ * active (where `reuseExisting` is ignored) and where to narrate run-level
14
+ * progress such as a reused app.
15
+ */
16
+ export interface ManagedProcessHooks {
17
+ readonly ci?: boolean;
18
+ readonly notice?: (message: string) => void;
19
+ }
4
20
  /**
5
21
  * One command the runner owns: spawned as a process group, waited on until
6
22
  * its readiness contract holds, and terminated signal-then-force. `label`
7
- * names it in every error (`app.command`, `app.services[0] (docker ...)`).
23
+ * names it in every error (`target "web" command`, `service "postgres"`).
8
24
  */
9
25
  export declare class ManagedProcess {
10
26
  private readonly label;
11
27
  private readonly command;
12
28
  private readonly projectRoot;
13
29
  private readonly readiness;
30
+ private readonly hooks;
14
31
  private child;
15
- constructor(label: string, command: CommandConfig, projectRoot: string, readiness: Readiness);
32
+ private reusedExisting;
33
+ constructor(label: string, command: CommandConfig, projectRoot: string, readiness: Readiness, hooks?: ManagedProcessHooks);
34
+ /** True once `start` found the readiness URL already answering and attached to it instead of spawning. */
35
+ get reused(): boolean;
16
36
  /**
17
37
  * Spawns the process group and waits for readiness. An already aborted
18
38
  * `signal` spawns nothing; one that aborts during the wait ends it early and
19
39
  * takes the process down with it. The caller reads the signal to learn the
20
40
  * run was interrupted.
41
+ *
42
+ * A readiness URL that already answers before the spawn belongs to a
43
+ * process this run did not start, and HTTP readiness cannot tell which
44
+ * process answered later. So the preflight probe decides up front: with
45
+ * `reuseExisting` (outside CI) nothing is spawned and `stop` leaves the
46
+ * process alone; otherwise the launch fails with `APP_ALREADY_RUNNING`
47
+ * rather than letting the old server pass as the new command's readiness.
48
+ * The probe spends from the same `startupTimeout` budget as the wait.
21
49
  */
22
50
  start(signal?: AbortSignal): Promise<void>;
23
- /** Gracefully terminates the whole process group, then force-kills. */
51
+ /**
52
+ * Opens `command.log` for appending, creating its directory, and returns
53
+ * the descriptor the child writes stdout and stderr to. No `log` means the
54
+ * output is discarded as before. The same file across services and runs
55
+ * accumulates, which is what a developer reading a failed boot wants.
56
+ */
57
+ private openLog;
58
+ /** Gracefully terminates the whole process group, then force-kills. A reused process was never ours to stop. */
24
59
  stop(): Promise<void>;
25
60
  }
26
61
  /**
27
- * The dependency processes of `app.services`: started sequentially in
28
- * declaration order, each ready before the next starts, and torn down in
29
- * reverse.
62
+ * The dependency processes the engines declared as `services`: started
63
+ * sequentially in declaration order, each ready before the next starts, and
64
+ * torn down in reverse.
30
65
  */
31
66
  export declare class ServiceStack {
32
67
  private readonly services;
33
68
  private readonly projectRoot;
69
+ private readonly hooks;
34
70
  private readonly started;
35
- constructor(services: readonly ResolvedService[], projectRoot: string);
71
+ constructor(services: readonly ResolvedService[], projectRoot: string, hooks?: ManagedProcessHooks);
36
72
  /**
37
73
  * Starts every service in order. Stops early once `signal` aborts; the
38
74
  * services already started still get their teardown from `stop`.
@@ -42,7 +78,8 @@ export declare class ServiceStack {
42
78
  * Stops the started services in reverse order, then runs each of their
43
79
  * teardown commands in reverse order and waits for it to exit. A failing
44
80
  * teardown is reported through `onFailure` and never skips the rest, so one
45
- * failing `docker compose down` cannot leave the others running.
81
+ * failing `docker compose down` cannot leave the others running. A reused
82
+ * service was not started by this run, so its teardown does not run either.
46
83
  */
47
84
  stop(onFailure: (cause: unknown) => void): Promise<void>;
48
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"managed-process.d.ts","sourceRoot":"","sources":["../../src/run/managed-process.ts"],"names":[],"mappings":"AAAA,6GAA6G;AAI7G,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAmBjD;;;;GAIG;AACH,qBAAa,cAAc;IAIvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAN5B,OAAO,CAAC,KAAK,CAA6B;IAE1C,YACmB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,EACnC;IAEJ;;;;;OAKG;IACG,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAkF/C;IAED,uEAAuE;IACjE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAyB1B;CACF;AAED;;;;GAIG;AACH,qBAAa,YAAY;IAOrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAP9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGf;IAET,YACmB,QAAQ,EAAE,SAAS,eAAe,EAAE,EACpC,WAAW,EAAE,MAAM,EAClC;IAEJ;;;OAGG;IACG,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAe/C;IAED;;;;;OAKG;IACG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAW7D;CACF"}
1
+ {"version":3,"file":"managed-process.d.ts","sourceRoot":"","sources":["../../src/run/managed-process.ts"],"names":[],"mappings":"AAAA,qGAAqG;AAKrG,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA4BjD;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAqBD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED;;;;GAIG;AACH,qBAAa,cAAc;IAKvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK;IARxB,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,cAAc,CAAS;IAE/B,YACmB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,EACpB,KAAK,GAAE,mBAAwB,EAC9C;IAEJ,0GAA0G;IAC1G,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;;;;;;;;;;;;OAaG;IACG,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA2G/C;IAED;;;;;OAKG;IACH,OAAO,CAAC,OAAO;IAef,gHAAgH;IAC1G,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAgB1B;CACF;AAED;;;;GAIG;AACH,qBAAa,YAAY;IAOrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK;IARxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGf;IAET,YACmB,QAAQ,EAAE,SAAS,eAAe,EAAE,EACpC,WAAW,EAAE,MAAM,EACnB,KAAK,GAAE,mBAAwB,EAC9C;IAEJ;;;OAGG;IACG,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAe/C;IAED;;;;;;OAMG;IACG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAW7D;CACF"}