e2e 0.15.1 → 0.16.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 (1019) hide show
  1. package/README.md +51 -24
  2. package/dist/.build.json +1 -1
  3. package/dist/agent/act-validation.d.ts +10 -1
  4. package/dist/agent/act-validation.js +48 -1
  5. package/dist/agent/act.d.ts +1 -2
  6. package/dist/agent/act.js +25 -8
  7. package/dist/agent/action-dispatcher.d.ts +0 -1
  8. package/dist/agent/action-dispatcher.js +0 -1
  9. package/dist/agent/action-names.d.ts +0 -1
  10. package/dist/agent/action-names.js +0 -1
  11. package/dist/agent/actions.d.ts +0 -1
  12. package/dist/agent/actions.js +0 -1
  13. package/dist/agent/agent-brand.d.ts +0 -1
  14. package/dist/agent/agent-brand.js +0 -1
  15. package/dist/agent/ai-sdk.d.ts +7 -1
  16. package/dist/agent/ai-sdk.js +11 -1
  17. package/dist/agent/call-options.d.ts +0 -1
  18. package/dist/agent/call-options.js +0 -1
  19. package/dist/agent/default-agent.d.ts +0 -1
  20. package/dist/agent/default-agent.js +0 -1
  21. package/dist/agent/derived.d.ts +0 -1
  22. package/dist/agent/derived.js +0 -1
  23. package/dist/agent/error.d.ts +16 -4
  24. package/dist/agent/error.js +25 -7
  25. package/dist/agent/executor.d.ts +0 -1
  26. package/dist/agent/executor.js +0 -1
  27. package/dist/agent/index.d.ts +0 -1
  28. package/dist/agent/index.js +0 -1
  29. package/dist/agent/interactive-step.d.ts +0 -1
  30. package/dist/agent/interactive-step.js +0 -1
  31. package/dist/agent/invocation.d.ts +0 -1
  32. package/dist/agent/invocation.js +10 -5
  33. package/dist/agent/ledger.d.ts +0 -1
  34. package/dist/agent/ledger.js +0 -1
  35. package/dist/agent/loop-guards.d.ts +0 -1
  36. package/dist/agent/loop-guards.js +0 -1
  37. package/dist/agent/model/adapter.d.ts +0 -1
  38. package/dist/agent/model/adapter.js +0 -1
  39. package/dist/agent/model/overflow.d.ts +0 -1
  40. package/dist/agent/model/overflow.js +0 -1
  41. package/dist/agent/model/provider-hints.d.ts +0 -1
  42. package/dist/agent/model/provider-hints.js +0 -1
  43. package/dist/agent/model/schema.d.ts +0 -1
  44. package/dist/agent/model/schema.js +0 -1
  45. package/dist/agent/model/sdk.d.ts +0 -1
  46. package/dist/agent/model/sdk.js +0 -1
  47. package/dist/agent/model/stall.d.ts +0 -1
  48. package/dist/agent/model/stall.js +0 -1
  49. package/dist/agent/model/tool-choice.d.ts +24 -2
  50. package/dist/agent/model/tool-choice.js +27 -2
  51. package/dist/agent/observation-budget.d.ts +0 -1
  52. package/dist/agent/observation-budget.js +0 -1
  53. package/dist/agent/observation-feed.d.ts +0 -1
  54. package/dist/agent/observation-feed.js +0 -1
  55. package/dist/agent/observation.d.ts +0 -1
  56. package/dist/agent/observation.js +0 -1
  57. package/dist/agent/operation-queue.d.ts +0 -1
  58. package/dist/agent/operation-queue.js +0 -1
  59. package/dist/agent/phases.d.ts +0 -1
  60. package/dist/agent/phases.js +0 -1
  61. package/dist/agent/pixels.d.ts +0 -1
  62. package/dist/agent/pixels.js +0 -1
  63. package/dist/agent/point-tap.d.ts +0 -1
  64. package/dist/agent/point-tap.js +0 -1
  65. package/dist/agent/primitives.d.ts +6 -1
  66. package/dist/agent/primitives.js +4 -2
  67. package/dist/agent/prompts.d.ts +0 -1
  68. package/dist/agent/prompts.js +0 -1
  69. package/dist/agent/protocol.d.ts +0 -1
  70. package/dist/agent/protocol.js +0 -1
  71. package/dist/agent/public.d.ts +0 -1
  72. package/dist/agent/public.js +0 -1
  73. package/dist/agent/reading.d.ts +0 -1
  74. package/dist/agent/reading.js +0 -1
  75. package/dist/agent/replay.d.ts +0 -1
  76. package/dist/agent/replay.js +0 -1
  77. package/dist/agent/screen-update.d.ts +0 -1
  78. package/dist/agent/screen-update.js +0 -1
  79. package/dist/agent/scroll-target.d.ts +0 -1
  80. package/dist/agent/scroll-target.js +0 -1
  81. package/dist/agent/secrets.d.ts +0 -1
  82. package/dist/agent/secrets.js +0 -1
  83. package/dist/agent/settle-policy.d.ts +0 -1
  84. package/dist/agent/settle-policy.js +0 -1
  85. package/dist/agent/step-accounting.d.ts +0 -1
  86. package/dist/agent/step-accounting.js +0 -1
  87. package/dist/agent/step-cache.d.ts +14 -4
  88. package/dist/agent/step-cache.js +13 -4
  89. package/dist/agent/tool-loop.d.ts +0 -1
  90. package/dist/agent/tool-loop.js +62 -10
  91. package/dist/agent/tool-output.d.ts +0 -1
  92. package/dist/agent/tool-output.js +0 -1
  93. package/dist/agent/tool.d.ts +0 -1
  94. package/dist/agent/tool.js +0 -1
  95. package/dist/agent/transcript-compaction.d.ts +0 -1
  96. package/dist/agent/transcript-compaction.js +0 -1
  97. package/dist/agent/upload-paths.d.ts +0 -1
  98. package/dist/agent/upload-paths.js +0 -1
  99. package/dist/agent/usage.d.ts +0 -1
  100. package/dist/agent/usage.js +0 -1
  101. package/dist/cache/anchors.d.ts +0 -1
  102. package/dist/cache/anchors.js +0 -1
  103. package/dist/cache/context.d.ts +19 -7
  104. package/dist/cache/context.js +15 -22
  105. package/dist/cache/decide.d.ts +0 -1
  106. package/dist/cache/decide.js +0 -1
  107. package/dist/cache/identity.d.ts +0 -1
  108. package/dist/cache/identity.js +0 -1
  109. package/dist/cache/recorder.d.ts +0 -1
  110. package/dist/cache/recorder.js +0 -1
  111. package/dist/cache/relocate.d.ts +0 -1
  112. package/dist/cache/relocate.js +0 -1
  113. package/dist/cache/route.d.ts +0 -1
  114. package/dist/cache/route.js +0 -1
  115. package/dist/cache/store.d.ts +0 -1
  116. package/dist/cache/store.js +0 -1
  117. package/dist/cache/template.d.ts +0 -1
  118. package/dist/cache/template.js +0 -1
  119. package/dist/cache/trace.d.ts +0 -1
  120. package/dist/cache/trace.js +0 -1
  121. package/dist/cli/bin.d.ts +0 -1
  122. package/dist/cli/bin.js +0 -1
  123. package/dist/cli/cache.d.ts +0 -1
  124. package/dist/cli/cache.js +0 -1
  125. package/dist/cli/docs-url.d.ts +0 -1
  126. package/dist/cli/docs-url.js +0 -1
  127. package/dist/cli/feedback.d.ts +0 -1
  128. package/dist/cli/feedback.js +0 -1
  129. package/dist/cli/guide.d.ts +0 -1
  130. package/dist/cli/guide.js +0 -1
  131. package/dist/cli/index.d.ts +0 -1
  132. package/dist/cli/index.js +2 -3
  133. package/dist/cli/init/agent-skill.d.ts +0 -1
  134. package/dist/cli/init/agent-skill.js +0 -1
  135. package/dist/cli/init/engines.d.ts +0 -1
  136. package/dist/cli/init/engines.js +0 -1
  137. package/dist/cli/init/gateways.d.ts +0 -1
  138. package/dist/cli/init/gateways.js +0 -1
  139. package/dist/cli/init/mcp-config.d.ts +0 -1
  140. package/dist/cli/init/mcp-config.js +0 -1
  141. package/dist/cli/init/package.d.ts +0 -1
  142. package/dist/cli/init/package.js +0 -1
  143. package/dist/cli/init/scaffold.d.ts +1 -1
  144. package/dist/cli/init/scaffold.js +2 -2
  145. package/dist/cli/init/sibling-versions.json +1 -1
  146. package/dist/cli/init/versions.d.ts +0 -1
  147. package/dist/cli/init/versions.js +0 -1
  148. package/dist/cli/init.d.ts +0 -1
  149. package/dist/cli/init.js +0 -1
  150. package/dist/cli/mcp.d.ts +9 -2
  151. package/dist/cli/mcp.js +14 -2
  152. package/dist/cli/signals.d.ts +0 -1
  153. package/dist/cli/signals.js +0 -1
  154. package/dist/cli/skill.d.ts +0 -1
  155. package/dist/cli/skill.js +0 -1
  156. package/dist/cli/telemetry.d.ts +0 -1
  157. package/dist/cli/telemetry.js +1 -2
  158. package/dist/cli/wordmark.d.ts +0 -1
  159. package/dist/cli/wordmark.js +0 -1
  160. package/dist/collect/collect.d.ts +0 -1
  161. package/dist/collect/collect.js +3 -2
  162. package/dist/collect/registry.d.ts +6 -3
  163. package/dist/collect/registry.js +31 -14
  164. package/dist/collect/select.d.ts +0 -1
  165. package/dist/collect/select.js +0 -1
  166. package/dist/config/agent.d.ts +0 -1
  167. package/dist/config/agent.js +0 -1
  168. package/dist/config/app.d.ts +0 -1
  169. package/dist/config/app.js +0 -1
  170. package/dist/config/command.d.ts +0 -1
  171. package/dist/config/command.js +0 -1
  172. package/dist/config/diagnose.d.ts +0 -1
  173. package/dist/config/diagnose.js +0 -1
  174. package/dist/config/esm-hooks.d.ts +0 -1
  175. package/dist/config/esm-hooks.js +0 -1
  176. package/dist/config/load.d.ts +0 -1
  177. package/dist/config/load.js +0 -1
  178. package/dist/config/resolve.d.ts +0 -1
  179. package/dist/config/resolve.js +0 -1
  180. package/dist/config/secrets.d.ts +0 -1
  181. package/dist/config/secrets.js +0 -1
  182. package/dist/config/targets.d.ts +0 -1
  183. package/dist/config/targets.js +0 -1
  184. package/dist/config/validate.d.ts +0 -1
  185. package/dist/config/validate.js +0 -1
  186. package/dist/engine/contract.d.ts +0 -1
  187. package/dist/engine/contract.js +0 -1
  188. package/dist/engine/index.d.ts +1 -2
  189. package/dist/engine/index.js +4 -4
  190. package/dist/engine/manifest.d.ts +0 -1
  191. package/dist/engine/manifest.js +0 -1
  192. package/dist/engine/recording.d.ts +0 -1
  193. package/dist/engine/recording.js +0 -1
  194. package/dist/engine/resolve.d.ts +0 -1
  195. package/dist/engine/resolve.js +0 -1
  196. package/dist/engine/session.d.ts +0 -1
  197. package/dist/engine/session.js +0 -1
  198. package/dist/engine/surface.d.ts +0 -1
  199. package/dist/engine/surface.js +0 -1
  200. package/dist/engine/timing.d.ts +0 -1
  201. package/dist/engine/timing.js +0 -1
  202. package/dist/expect/async.d.ts +0 -1
  203. package/dist/expect/async.js +99 -58
  204. package/dist/expect/attempt.d.ts +0 -1
  205. package/dist/expect/attempt.js +0 -1
  206. package/dist/expect/index.d.ts +0 -1
  207. package/dist/expect/index.js +0 -1
  208. package/dist/expect/poll.d.ts +0 -1
  209. package/dist/expect/poll.js +0 -1
  210. package/dist/expect/soft.d.ts +0 -1
  211. package/dist/expect/soft.js +0 -1
  212. package/dist/expect/values.d.ts +0 -1
  213. package/dist/expect/values.js +1 -2
  214. package/dist/explore/body.d.ts +0 -1
  215. package/dist/explore/body.js +0 -1
  216. package/dist/explore/executor.d.ts +0 -1
  217. package/dist/explore/executor.js +0 -1
  218. package/dist/explore/index.d.ts +0 -1
  219. package/dist/explore/index.js +16 -2
  220. package/dist/explore/plan.d.ts +0 -1
  221. package/dist/explore/plan.js +0 -1
  222. package/dist/explore/progress.d.ts +0 -1
  223. package/dist/explore/progress.js +0 -1
  224. package/dist/explore/state.d.ts +0 -1
  225. package/dist/explore/state.js +0 -1
  226. package/dist/index.d.ts +0 -1
  227. package/dist/index.js +0 -1
  228. package/dist/internal/ai-trace.d.ts +0 -1
  229. package/dist/internal/ai-trace.js +0 -1
  230. package/dist/internal/atomic-write.d.ts +0 -1
  231. package/dist/internal/atomic-write.js +0 -1
  232. package/dist/internal/brands.d.ts +0 -1
  233. package/dist/internal/brands.js +0 -1
  234. package/dist/internal/debug.d.ts +0 -1
  235. package/dist/internal/debug.js +0 -1
  236. package/dist/internal/env.d.ts +0 -1
  237. package/dist/internal/env.js +0 -1
  238. package/dist/internal/errors.d.ts +0 -1
  239. package/dist/internal/errors.js +0 -1
  240. package/dist/internal/geometry.d.ts +0 -1
  241. package/dist/internal/geometry.js +0 -1
  242. package/dist/internal/git.d.ts +0 -1
  243. package/dist/internal/git.js +0 -1
  244. package/dist/internal/globs.d.ts +0 -1
  245. package/dist/internal/globs.js +0 -1
  246. package/dist/internal/ids.d.ts +0 -1
  247. package/dist/internal/ids.js +0 -1
  248. package/dist/internal/json-value.d.ts +0 -1
  249. package/dist/internal/json-value.js +0 -1
  250. package/dist/internal/keys.d.ts +0 -1
  251. package/dist/internal/keys.js +0 -1
  252. package/dist/internal/node-version.d.ts +0 -1
  253. package/dist/internal/node-version.js +0 -1
  254. package/dist/internal/objects.d.ts +0 -1
  255. package/dist/internal/objects.js +0 -1
  256. package/dist/internal/options.d.ts +0 -1
  257. package/dist/internal/options.js +0 -1
  258. package/dist/internal/package-manager.d.ts +0 -1
  259. package/dist/internal/package-manager.js +0 -1
  260. package/dist/internal/package-version.d.ts +0 -1
  261. package/dist/internal/package-version.js +0 -1
  262. package/dist/internal/paths.d.ts +0 -1
  263. package/dist/internal/paths.js +0 -1
  264. package/dist/internal/realm-slot.d.ts +0 -1
  265. package/dist/internal/realm-slot.js +0 -1
  266. package/dist/internal/recording-modes.d.ts +0 -1
  267. package/dist/internal/recording-modes.js +0 -1
  268. package/dist/internal/redact.d.ts +0 -1
  269. package/dist/internal/redact.js +0 -1
  270. package/dist/internal/regexp.d.ts +0 -1
  271. package/dist/internal/regexp.js +0 -1
  272. package/dist/internal/roles.d.ts +0 -1
  273. package/dist/internal/roles.js +0 -1
  274. package/dist/internal/skip.d.ts +0 -1
  275. package/dist/internal/skip.js +0 -1
  276. package/dist/internal/source.d.ts +0 -1
  277. package/dist/internal/source.js +0 -1
  278. package/dist/internal/standard-schema.d.ts +0 -1
  279. package/dist/internal/standard-schema.js +0 -1
  280. package/dist/internal/suggest.d.ts +0 -1
  281. package/dist/internal/suggest.js +0 -1
  282. package/dist/internal/text.d.ts +8 -1
  283. package/dist/internal/text.js +13 -2
  284. package/dist/internal/time.d.ts +0 -1
  285. package/dist/internal/time.js +0 -1
  286. package/dist/internal/urls.d.ts +0 -1
  287. package/dist/internal/urls.js +0 -1
  288. package/dist/internal/vcs.d.ts +0 -1
  289. package/dist/internal/vcs.js +0 -1
  290. package/dist/internal/zip.d.ts +0 -1
  291. package/dist/internal/zip.js +0 -1
  292. package/dist/locator/engine.d.ts +0 -1
  293. package/dist/locator/engine.js +0 -1
  294. package/dist/locator/expression.d.ts +0 -1
  295. package/dist/locator/expression.js +0 -1
  296. package/dist/locator/screen.d.ts +0 -1
  297. package/dist/locator/screen.js +0 -1
  298. package/dist/mcp/catalog.d.ts +4 -1
  299. package/dist/mcp/catalog.js +2 -3
  300. package/dist/mcp/config.d.ts +0 -1
  301. package/dist/mcp/config.js +0 -1
  302. package/dist/mcp/recording.d.ts +0 -1
  303. package/dist/mcp/recording.js +0 -1
  304. package/dist/mcp/server.d.ts +8 -1
  305. package/dist/mcp/server.js +8 -5
  306. package/dist/mcp/session.d.ts +4 -2
  307. package/dist/mcp/session.js +43 -21
  308. package/dist/mcp/sessions.d.ts +2 -1
  309. package/dist/mcp/sessions.js +5 -2
  310. package/dist/mcp/tools.d.ts +7 -6
  311. package/dist/mcp/tools.js +36 -11
  312. package/dist/mcp/usage.d.ts +61 -0
  313. package/dist/mcp/usage.js +73 -0
  314. package/dist/oauth/callback-server.d.ts +0 -1
  315. package/dist/oauth/callback-server.js +0 -1
  316. package/dist/oauth/chatgpt.d.ts +0 -1
  317. package/dist/oauth/chatgpt.js +0 -1
  318. package/dist/oauth/cli.d.ts +0 -1
  319. package/dist/oauth/cli.js +0 -1
  320. package/dist/oauth/copilot.d.ts +0 -1
  321. package/dist/oauth/copilot.js +0 -1
  322. package/dist/oauth/device-code.d.ts +0 -1
  323. package/dist/oauth/device-code.js +0 -1
  324. package/dist/oauth/errors.d.ts +0 -1
  325. package/dist/oauth/errors.js +0 -1
  326. package/dist/oauth/fetch.d.ts +0 -1
  327. package/dist/oauth/fetch.js +0 -1
  328. package/dist/oauth/grok.d.ts +0 -1
  329. package/dist/oauth/grok.js +0 -1
  330. package/dist/oauth/jwt.d.ts +0 -1
  331. package/dist/oauth/jwt.js +0 -1
  332. package/dist/oauth/login.d.ts +0 -1
  333. package/dist/oauth/login.js +0 -1
  334. package/dist/oauth/models.d.ts +0 -1
  335. package/dist/oauth/models.js +0 -1
  336. package/dist/oauth/pkce.d.ts +0 -1
  337. package/dist/oauth/pkce.js +0 -1
  338. package/dist/oauth/providers/github-copilot.d.ts +0 -1
  339. package/dist/oauth/providers/github-copilot.js +10 -3
  340. package/dist/oauth/providers/openai.d.ts +0 -1
  341. package/dist/oauth/providers/openai.js +1 -2
  342. package/dist/oauth/providers/xai.d.ts +0 -1
  343. package/dist/oauth/providers/xai.js +0 -1
  344. package/dist/oauth/providers.d.ts +0 -1
  345. package/dist/oauth/providers.js +0 -1
  346. package/dist/oauth/sse.d.ts +0 -1
  347. package/dist/oauth/sse.js +0 -1
  348. package/dist/oauth/store.d.ts +0 -1
  349. package/dist/oauth/store.js +0 -1
  350. package/dist/oauth/token-endpoint.d.ts +0 -1
  351. package/dist/oauth/token-endpoint.js +0 -1
  352. package/dist/oauth/types.d.ts +0 -1
  353. package/dist/oauth/types.js +0 -1
  354. package/dist/params.d.ts +0 -1
  355. package/dist/params.js +0 -1
  356. package/dist/report/build.d.ts +0 -1
  357. package/dist/report/build.js +0 -1
  358. package/dist/report/builtin.d.ts +0 -1
  359. package/dist/report/builtin.js +0 -1
  360. package/dist/report/code-frame.d.ts +0 -1
  361. package/dist/report/code-frame.js +0 -1
  362. package/dist/report/debug-steps.d.ts +0 -1
  363. package/dist/report/debug-steps.js +0 -1
  364. package/dist/report/explore-text.d.ts +0 -1
  365. package/dist/report/explore-text.js +0 -1
  366. package/dist/report/failure-text.d.ts +0 -1
  367. package/dist/report/failure-text.js +0 -1
  368. package/dist/report/format.d.ts +0 -1
  369. package/dist/report/format.js +0 -1
  370. package/dist/report/json.d.ts +0 -1
  371. package/dist/report/json.js +0 -1
  372. package/dist/report/junit.d.ts +0 -1
  373. package/dist/report/junit.js +0 -1
  374. package/dist/report/list-explore.d.ts +0 -1
  375. package/dist/report/list-explore.js +0 -1
  376. package/dist/report/list-model.d.ts +0 -1
  377. package/dist/report/list-model.js +0 -1
  378. package/dist/report/list-steps.d.ts +0 -1
  379. package/dist/report/list-steps.js +0 -1
  380. package/dist/report/list.d.ts +0 -1
  381. package/dist/report/list.js +0 -1
  382. package/dist/report/live-window.d.ts +0 -1
  383. package/dist/report/live-window.js +0 -1
  384. package/dist/report/markdown-text.d.ts +0 -1
  385. package/dist/report/markdown-text.js +0 -1
  386. package/dist/report/markdown.d.ts +0 -1
  387. package/dist/report/markdown.js +0 -1
  388. package/dist/report/outcome.d.ts +0 -1
  389. package/dist/report/outcome.js +0 -1
  390. package/dist/report/repeats.d.ts +0 -1
  391. package/dist/report/repeats.js +0 -1
  392. package/dist/report/running-tree.d.ts +0 -1
  393. package/dist/report/running-tree.js +0 -1
  394. package/dist/report/write.d.ts +0 -1
  395. package/dist/report/write.js +0 -1
  396. package/dist/run/app-ports.d.ts +0 -1
  397. package/dist/run/app-ports.js +0 -1
  398. package/dist/run/artifacts.d.ts +0 -1
  399. package/dist/run/artifacts.js +0 -1
  400. package/dist/run/budget.d.ts +0 -1
  401. package/dist/run/budget.js +0 -1
  402. package/dist/run/declared-processes.d.ts +0 -1
  403. package/dist/run/declared-processes.js +0 -1
  404. package/dist/run/events.d.ts +0 -1
  405. package/dist/run/events.js +0 -1
  406. package/dist/run/execute.d.ts +0 -1
  407. package/dist/run/execute.js +27 -13
  408. package/dist/run/extended-fixtures.d.ts +0 -1
  409. package/dist/run/extended-fixtures.js +0 -1
  410. package/dist/run/failure-evidence.d.ts +0 -1
  411. package/dist/run/failure-evidence.js +0 -1
  412. package/dist/run/fixture-recording.d.ts +0 -1
  413. package/dist/run/fixture-recording.js +0 -1
  414. package/dist/run/fixtures.d.ts +0 -1
  415. package/dist/run/fixtures.js +0 -1
  416. package/dist/run/in-process.d.ts +0 -1
  417. package/dist/run/in-process.js +0 -1
  418. package/dist/run/last-run.d.ts +0 -1
  419. package/dist/run/last-run.js +0 -1
  420. package/dist/run/managed-process.d.ts +0 -1
  421. package/dist/run/managed-process.js +0 -1
  422. package/dist/run/output.d.ts +0 -1
  423. package/dist/run/output.js +0 -1
  424. package/dist/run/process-pool.d.ts +0 -1
  425. package/dist/run/process-pool.js +0 -1
  426. package/dist/run/provision.d.ts +0 -1
  427. package/dist/run/provision.js +0 -1
  428. package/dist/run/realm.d.ts +2 -1
  429. package/dist/run/realm.js +1 -2
  430. package/dist/run/records.d.ts +0 -1
  431. package/dist/run/records.js +0 -1
  432. package/dist/run/retry.d.ts +0 -1
  433. package/dist/run/retry.js +0 -1
  434. package/dist/run/runner.d.ts +2 -1
  435. package/dist/run/runner.js +1 -2
  436. package/dist/run/scheduler.d.ts +0 -1
  437. package/dist/run/scheduler.js +0 -1
  438. package/dist/run/secrecy.d.ts +15 -1
  439. package/dist/run/secrecy.js +27 -2
  440. package/dist/run/serial.d.ts +0 -1
  441. package/dist/run/serial.js +0 -1
  442. package/dist/run/sessions.d.ts +0 -1
  443. package/dist/run/sessions.js +0 -1
  444. package/dist/run/standalone.d.ts +0 -1
  445. package/dist/run/standalone.js +3 -3
  446. package/dist/run/steps.d.ts +2 -3
  447. package/dist/run/steps.js +4 -2
  448. package/dist/run/trace-redaction.d.ts +0 -1
  449. package/dist/run/trace-redaction.js +0 -1
  450. package/dist/run/unit-runner.d.ts +0 -1
  451. package/dist/run/unit-runner.js +0 -1
  452. package/dist/run/units.d.ts +0 -1
  453. package/dist/run/units.js +0 -1
  454. package/dist/run/worker/entry.d.ts +0 -1
  455. package/dist/run/worker/entry.js +2 -3
  456. package/dist/run/worker/handle.d.ts +0 -1
  457. package/dist/run/worker/handle.js +0 -1
  458. package/dist/run/worker/protocol.d.ts +0 -1
  459. package/dist/run/worker/protocol.js +0 -1
  460. package/dist/run/worker/session.d.ts +0 -1
  461. package/dist/run/worker/session.js +0 -1
  462. package/dist/run/worker-models.d.ts +0 -1
  463. package/dist/run/worker-models.js +0 -1
  464. package/dist/secrets.d.ts +0 -1
  465. package/dist/secrets.js +0 -1
  466. package/dist/telemetry/checkout.d.ts +0 -1
  467. package/dist/telemetry/checkout.js +0 -1
  468. package/dist/telemetry/environment.d.ts +0 -1
  469. package/dist/telemetry/environment.js +0 -1
  470. package/dist/telemetry/events.d.ts +26 -10
  471. package/dist/telemetry/events.js +107 -13
  472. package/dist/telemetry/failure-kind.d.ts +0 -1
  473. package/dist/telemetry/failure-kind.js +0 -1
  474. package/dist/telemetry/posthog.d.ts +0 -1
  475. package/dist/telemetry/posthog.js +0 -1
  476. package/dist/telemetry/project.d.ts +0 -1
  477. package/dist/telemetry/project.js +0 -1
  478. package/dist/telemetry/store.d.ts +0 -1
  479. package/dist/telemetry/store.js +0 -1
  480. package/dist/telemetry/telemetry.d.ts +19 -8
  481. package/dist/telemetry/telemetry.js +26 -9
  482. package/dist/telemetry/token.d.ts +0 -1
  483. package/dist/telemetry/token.js +0 -1
  484. package/dist/types.d.ts +26 -24
  485. package/dist/types.js +0 -1
  486. package/docs/agent-steps.mdx +126 -0
  487. package/docs/agents.mdx +217 -0
  488. package/docs/api-testing.mdx +65 -0
  489. package/docs/authentication.mdx +345 -0
  490. package/docs/browser.mdx +440 -0
  491. package/docs/bug-bash.mdx +90 -0
  492. package/docs/cache.mdx +306 -0
  493. package/docs/ci.mdx +210 -0
  494. package/docs/coding-agents.mdx +183 -0
  495. package/docs/debugging.mdx +291 -0
  496. package/docs/executors.mdx +243 -0
  497. package/docs/explore.mdx +174 -0
  498. package/docs/github.mdx +184 -0
  499. package/docs/index.mdx +82 -0
  500. package/docs/integrations/eas.mdx +216 -0
  501. package/docs/integrations/index.mdx +24 -0
  502. package/docs/integrations/kernel.mdx +163 -0
  503. package/docs/migrate/cypress.mdx +124 -0
  504. package/docs/migrate/detox.mdx +140 -0
  505. package/docs/migrate/maestro.mdx +229 -0
  506. package/docs/migrate/playwright.mdx +430 -0
  507. package/docs/migrate/selenium.mdx +110 -0
  508. package/docs/mobile-ci.mdx +567 -0
  509. package/docs/mobile.mdx +595 -0
  510. package/docs/models.mdx +241 -0
  511. package/docs/quickstart.mdx +260 -0
  512. package/docs/reference/agent.mdx +524 -0
  513. package/docs/reference/app.mdx +72 -0
  514. package/docs/reference/cli.mdx +819 -0
  515. package/docs/reference/config.mdx +986 -0
  516. package/docs/reference/engine.mdx +1363 -0
  517. package/docs/reference/environment.mdx +113 -0
  518. package/docs/reference/errors.mdx +143 -0
  519. package/docs/reference/expect.mdx +546 -0
  520. package/docs/reference/mcp.mdx +205 -0
  521. package/docs/reference/mobile.mdx +522 -0
  522. package/docs/reference/reporters.mdx +216 -0
  523. package/docs/reference/screen.mdx +688 -0
  524. package/docs/reference/test.mdx +449 -0
  525. package/docs/reference/web.mdx +615 -0
  526. package/docs/security.mdx +308 -0
  527. package/docs/starting-your-app.mdx +231 -0
  528. package/docs/subscriptions.mdx +166 -0
  529. package/docs/telemetry.mdx +227 -0
  530. package/docs/tools.mdx +150 -0
  531. package/docs/viewports.mdx +146 -0
  532. package/docs/writing-an-engine.mdx +316 -0
  533. package/docs/writing-tests.mdx +256 -0
  534. package/package.json +5 -3
  535. package/skills/e2e/SKILL.md +4 -1
  536. package/skills/e2e/references/agent.md +3 -1
  537. package/skills/e2e/references/mcp.md +3 -0
  538. package/skills/e2e/references/setup.md +19 -4
  539. package/skills/e2e/references/writing-tests.md +11 -0
  540. package/dist/agent/act-validation.d.ts.map +0 -1
  541. package/dist/agent/act-validation.js.map +0 -1
  542. package/dist/agent/act.d.ts.map +0 -1
  543. package/dist/agent/act.js.map +0 -1
  544. package/dist/agent/action-dispatcher.d.ts.map +0 -1
  545. package/dist/agent/action-dispatcher.js.map +0 -1
  546. package/dist/agent/action-names.d.ts.map +0 -1
  547. package/dist/agent/action-names.js.map +0 -1
  548. package/dist/agent/actions.d.ts.map +0 -1
  549. package/dist/agent/actions.js.map +0 -1
  550. package/dist/agent/agent-brand.d.ts.map +0 -1
  551. package/dist/agent/agent-brand.js.map +0 -1
  552. package/dist/agent/ai-sdk.d.ts.map +0 -1
  553. package/dist/agent/ai-sdk.js.map +0 -1
  554. package/dist/agent/call-options.d.ts.map +0 -1
  555. package/dist/agent/call-options.js.map +0 -1
  556. package/dist/agent/default-agent.d.ts.map +0 -1
  557. package/dist/agent/default-agent.js.map +0 -1
  558. package/dist/agent/derived.d.ts.map +0 -1
  559. package/dist/agent/derived.js.map +0 -1
  560. package/dist/agent/error.d.ts.map +0 -1
  561. package/dist/agent/error.js.map +0 -1
  562. package/dist/agent/executor.d.ts.map +0 -1
  563. package/dist/agent/executor.js.map +0 -1
  564. package/dist/agent/index.d.ts.map +0 -1
  565. package/dist/agent/index.js.map +0 -1
  566. package/dist/agent/interactive-step.d.ts.map +0 -1
  567. package/dist/agent/interactive-step.js.map +0 -1
  568. package/dist/agent/invocation.d.ts.map +0 -1
  569. package/dist/agent/invocation.js.map +0 -1
  570. package/dist/agent/ledger.d.ts.map +0 -1
  571. package/dist/agent/ledger.js.map +0 -1
  572. package/dist/agent/loop-guards.d.ts.map +0 -1
  573. package/dist/agent/loop-guards.js.map +0 -1
  574. package/dist/agent/model/adapter.d.ts.map +0 -1
  575. package/dist/agent/model/adapter.js.map +0 -1
  576. package/dist/agent/model/overflow.d.ts.map +0 -1
  577. package/dist/agent/model/overflow.js.map +0 -1
  578. package/dist/agent/model/provider-hints.d.ts.map +0 -1
  579. package/dist/agent/model/provider-hints.js.map +0 -1
  580. package/dist/agent/model/schema.d.ts.map +0 -1
  581. package/dist/agent/model/schema.js.map +0 -1
  582. package/dist/agent/model/sdk.d.ts.map +0 -1
  583. package/dist/agent/model/sdk.js.map +0 -1
  584. package/dist/agent/model/stall.d.ts.map +0 -1
  585. package/dist/agent/model/stall.js.map +0 -1
  586. package/dist/agent/model/tool-choice.d.ts.map +0 -1
  587. package/dist/agent/model/tool-choice.js.map +0 -1
  588. package/dist/agent/observation-budget.d.ts.map +0 -1
  589. package/dist/agent/observation-budget.js.map +0 -1
  590. package/dist/agent/observation-feed.d.ts.map +0 -1
  591. package/dist/agent/observation-feed.js.map +0 -1
  592. package/dist/agent/observation.d.ts.map +0 -1
  593. package/dist/agent/observation.js.map +0 -1
  594. package/dist/agent/operation-queue.d.ts.map +0 -1
  595. package/dist/agent/operation-queue.js.map +0 -1
  596. package/dist/agent/phases.d.ts.map +0 -1
  597. package/dist/agent/phases.js.map +0 -1
  598. package/dist/agent/pixels.d.ts.map +0 -1
  599. package/dist/agent/pixels.js.map +0 -1
  600. package/dist/agent/point-tap.d.ts.map +0 -1
  601. package/dist/agent/point-tap.js.map +0 -1
  602. package/dist/agent/primitives.d.ts.map +0 -1
  603. package/dist/agent/primitives.js.map +0 -1
  604. package/dist/agent/prompts.d.ts.map +0 -1
  605. package/dist/agent/prompts.js.map +0 -1
  606. package/dist/agent/protocol.d.ts.map +0 -1
  607. package/dist/agent/protocol.js.map +0 -1
  608. package/dist/agent/public.d.ts.map +0 -1
  609. package/dist/agent/public.js.map +0 -1
  610. package/dist/agent/reading.d.ts.map +0 -1
  611. package/dist/agent/reading.js.map +0 -1
  612. package/dist/agent/replay.d.ts.map +0 -1
  613. package/dist/agent/replay.js.map +0 -1
  614. package/dist/agent/screen-update.d.ts.map +0 -1
  615. package/dist/agent/screen-update.js.map +0 -1
  616. package/dist/agent/scroll-target.d.ts.map +0 -1
  617. package/dist/agent/scroll-target.js.map +0 -1
  618. package/dist/agent/secrets.d.ts.map +0 -1
  619. package/dist/agent/secrets.js.map +0 -1
  620. package/dist/agent/settle-policy.d.ts.map +0 -1
  621. package/dist/agent/settle-policy.js.map +0 -1
  622. package/dist/agent/step-accounting.d.ts.map +0 -1
  623. package/dist/agent/step-accounting.js.map +0 -1
  624. package/dist/agent/step-cache.d.ts.map +0 -1
  625. package/dist/agent/step-cache.js.map +0 -1
  626. package/dist/agent/tool-loop.d.ts.map +0 -1
  627. package/dist/agent/tool-loop.js.map +0 -1
  628. package/dist/agent/tool-output.d.ts.map +0 -1
  629. package/dist/agent/tool-output.js.map +0 -1
  630. package/dist/agent/tool.d.ts.map +0 -1
  631. package/dist/agent/tool.js.map +0 -1
  632. package/dist/agent/transcript-compaction.d.ts.map +0 -1
  633. package/dist/agent/transcript-compaction.js.map +0 -1
  634. package/dist/agent/upload-paths.d.ts.map +0 -1
  635. package/dist/agent/upload-paths.js.map +0 -1
  636. package/dist/agent/usage.d.ts.map +0 -1
  637. package/dist/agent/usage.js.map +0 -1
  638. package/dist/cache/anchors.d.ts.map +0 -1
  639. package/dist/cache/anchors.js.map +0 -1
  640. package/dist/cache/context.d.ts.map +0 -1
  641. package/dist/cache/context.js.map +0 -1
  642. package/dist/cache/decide.d.ts.map +0 -1
  643. package/dist/cache/decide.js.map +0 -1
  644. package/dist/cache/identity.d.ts.map +0 -1
  645. package/dist/cache/identity.js.map +0 -1
  646. package/dist/cache/recorder.d.ts.map +0 -1
  647. package/dist/cache/recorder.js.map +0 -1
  648. package/dist/cache/relocate.d.ts.map +0 -1
  649. package/dist/cache/relocate.js.map +0 -1
  650. package/dist/cache/route.d.ts.map +0 -1
  651. package/dist/cache/route.js.map +0 -1
  652. package/dist/cache/store.d.ts.map +0 -1
  653. package/dist/cache/store.js.map +0 -1
  654. package/dist/cache/template.d.ts.map +0 -1
  655. package/dist/cache/template.js.map +0 -1
  656. package/dist/cache/trace.d.ts.map +0 -1
  657. package/dist/cache/trace.js.map +0 -1
  658. package/dist/cli/bin.d.ts.map +0 -1
  659. package/dist/cli/bin.js.map +0 -1
  660. package/dist/cli/cache.d.ts.map +0 -1
  661. package/dist/cli/cache.js.map +0 -1
  662. package/dist/cli/docs-url.d.ts.map +0 -1
  663. package/dist/cli/docs-url.js.map +0 -1
  664. package/dist/cli/feedback.d.ts.map +0 -1
  665. package/dist/cli/feedback.js.map +0 -1
  666. package/dist/cli/guide.d.ts.map +0 -1
  667. package/dist/cli/guide.js.map +0 -1
  668. package/dist/cli/index.d.ts.map +0 -1
  669. package/dist/cli/index.js.map +0 -1
  670. package/dist/cli/init/agent-skill.d.ts.map +0 -1
  671. package/dist/cli/init/agent-skill.js.map +0 -1
  672. package/dist/cli/init/engines.d.ts.map +0 -1
  673. package/dist/cli/init/engines.js.map +0 -1
  674. package/dist/cli/init/gateways.d.ts.map +0 -1
  675. package/dist/cli/init/gateways.js.map +0 -1
  676. package/dist/cli/init/mcp-config.d.ts.map +0 -1
  677. package/dist/cli/init/mcp-config.js.map +0 -1
  678. package/dist/cli/init/package.d.ts.map +0 -1
  679. package/dist/cli/init/package.js.map +0 -1
  680. package/dist/cli/init/scaffold.d.ts.map +0 -1
  681. package/dist/cli/init/scaffold.js.map +0 -1
  682. package/dist/cli/init/versions.d.ts.map +0 -1
  683. package/dist/cli/init/versions.js.map +0 -1
  684. package/dist/cli/init.d.ts.map +0 -1
  685. package/dist/cli/init.js.map +0 -1
  686. package/dist/cli/mcp.d.ts.map +0 -1
  687. package/dist/cli/mcp.js.map +0 -1
  688. package/dist/cli/signals.d.ts.map +0 -1
  689. package/dist/cli/signals.js.map +0 -1
  690. package/dist/cli/skill.d.ts.map +0 -1
  691. package/dist/cli/skill.js.map +0 -1
  692. package/dist/cli/telemetry.d.ts.map +0 -1
  693. package/dist/cli/telemetry.js.map +0 -1
  694. package/dist/cli/wordmark.d.ts.map +0 -1
  695. package/dist/cli/wordmark.js.map +0 -1
  696. package/dist/collect/collect.d.ts.map +0 -1
  697. package/dist/collect/collect.js.map +0 -1
  698. package/dist/collect/registry.d.ts.map +0 -1
  699. package/dist/collect/registry.js.map +0 -1
  700. package/dist/collect/select.d.ts.map +0 -1
  701. package/dist/collect/select.js.map +0 -1
  702. package/dist/config/agent.d.ts.map +0 -1
  703. package/dist/config/agent.js.map +0 -1
  704. package/dist/config/app.d.ts.map +0 -1
  705. package/dist/config/app.js.map +0 -1
  706. package/dist/config/command.d.ts.map +0 -1
  707. package/dist/config/command.js.map +0 -1
  708. package/dist/config/diagnose.d.ts.map +0 -1
  709. package/dist/config/diagnose.js.map +0 -1
  710. package/dist/config/esm-hooks.d.ts.map +0 -1
  711. package/dist/config/esm-hooks.js.map +0 -1
  712. package/dist/config/load.d.ts.map +0 -1
  713. package/dist/config/load.js.map +0 -1
  714. package/dist/config/resolve.d.ts.map +0 -1
  715. package/dist/config/resolve.js.map +0 -1
  716. package/dist/config/secrets.d.ts.map +0 -1
  717. package/dist/config/secrets.js.map +0 -1
  718. package/dist/config/targets.d.ts.map +0 -1
  719. package/dist/config/targets.js.map +0 -1
  720. package/dist/config/validate.d.ts.map +0 -1
  721. package/dist/config/validate.js.map +0 -1
  722. package/dist/engine/contract.d.ts.map +0 -1
  723. package/dist/engine/contract.js.map +0 -1
  724. package/dist/engine/index.d.ts.map +0 -1
  725. package/dist/engine/index.js.map +0 -1
  726. package/dist/engine/manifest.d.ts.map +0 -1
  727. package/dist/engine/manifest.js.map +0 -1
  728. package/dist/engine/recording.d.ts.map +0 -1
  729. package/dist/engine/recording.js.map +0 -1
  730. package/dist/engine/resolve.d.ts.map +0 -1
  731. package/dist/engine/resolve.js.map +0 -1
  732. package/dist/engine/session.d.ts.map +0 -1
  733. package/dist/engine/session.js.map +0 -1
  734. package/dist/engine/surface.d.ts.map +0 -1
  735. package/dist/engine/surface.js.map +0 -1
  736. package/dist/engine/timing.d.ts.map +0 -1
  737. package/dist/engine/timing.js.map +0 -1
  738. package/dist/expect/async.d.ts.map +0 -1
  739. package/dist/expect/async.js.map +0 -1
  740. package/dist/expect/attempt.d.ts.map +0 -1
  741. package/dist/expect/attempt.js.map +0 -1
  742. package/dist/expect/index.d.ts.map +0 -1
  743. package/dist/expect/index.js.map +0 -1
  744. package/dist/expect/poll.d.ts.map +0 -1
  745. package/dist/expect/poll.js.map +0 -1
  746. package/dist/expect/soft.d.ts.map +0 -1
  747. package/dist/expect/soft.js.map +0 -1
  748. package/dist/expect/values.d.ts.map +0 -1
  749. package/dist/expect/values.js.map +0 -1
  750. package/dist/explore/body.d.ts.map +0 -1
  751. package/dist/explore/body.js.map +0 -1
  752. package/dist/explore/executor.d.ts.map +0 -1
  753. package/dist/explore/executor.js.map +0 -1
  754. package/dist/explore/index.d.ts.map +0 -1
  755. package/dist/explore/index.js.map +0 -1
  756. package/dist/explore/plan.d.ts.map +0 -1
  757. package/dist/explore/plan.js.map +0 -1
  758. package/dist/explore/progress.d.ts.map +0 -1
  759. package/dist/explore/progress.js.map +0 -1
  760. package/dist/explore/state.d.ts.map +0 -1
  761. package/dist/explore/state.js.map +0 -1
  762. package/dist/index.d.ts.map +0 -1
  763. package/dist/index.js.map +0 -1
  764. package/dist/internal/ai-trace.d.ts.map +0 -1
  765. package/dist/internal/ai-trace.js.map +0 -1
  766. package/dist/internal/atomic-write.d.ts.map +0 -1
  767. package/dist/internal/atomic-write.js.map +0 -1
  768. package/dist/internal/brands.d.ts.map +0 -1
  769. package/dist/internal/brands.js.map +0 -1
  770. package/dist/internal/debug.d.ts.map +0 -1
  771. package/dist/internal/debug.js.map +0 -1
  772. package/dist/internal/env.d.ts.map +0 -1
  773. package/dist/internal/env.js.map +0 -1
  774. package/dist/internal/errors.d.ts.map +0 -1
  775. package/dist/internal/errors.js.map +0 -1
  776. package/dist/internal/geometry.d.ts.map +0 -1
  777. package/dist/internal/geometry.js.map +0 -1
  778. package/dist/internal/git.d.ts.map +0 -1
  779. package/dist/internal/git.js.map +0 -1
  780. package/dist/internal/globs.d.ts.map +0 -1
  781. package/dist/internal/globs.js.map +0 -1
  782. package/dist/internal/ids.d.ts.map +0 -1
  783. package/dist/internal/ids.js.map +0 -1
  784. package/dist/internal/json-value.d.ts.map +0 -1
  785. package/dist/internal/json-value.js.map +0 -1
  786. package/dist/internal/keys.d.ts.map +0 -1
  787. package/dist/internal/keys.js.map +0 -1
  788. package/dist/internal/node-version.d.ts.map +0 -1
  789. package/dist/internal/node-version.js.map +0 -1
  790. package/dist/internal/objects.d.ts.map +0 -1
  791. package/dist/internal/objects.js.map +0 -1
  792. package/dist/internal/options.d.ts.map +0 -1
  793. package/dist/internal/options.js.map +0 -1
  794. package/dist/internal/package-manager.d.ts.map +0 -1
  795. package/dist/internal/package-manager.js.map +0 -1
  796. package/dist/internal/package-version.d.ts.map +0 -1
  797. package/dist/internal/package-version.js.map +0 -1
  798. package/dist/internal/paths.d.ts.map +0 -1
  799. package/dist/internal/paths.js.map +0 -1
  800. package/dist/internal/realm-slot.d.ts.map +0 -1
  801. package/dist/internal/realm-slot.js.map +0 -1
  802. package/dist/internal/recording-modes.d.ts.map +0 -1
  803. package/dist/internal/recording-modes.js.map +0 -1
  804. package/dist/internal/redact.d.ts.map +0 -1
  805. package/dist/internal/redact.js.map +0 -1
  806. package/dist/internal/regexp.d.ts.map +0 -1
  807. package/dist/internal/regexp.js.map +0 -1
  808. package/dist/internal/roles.d.ts.map +0 -1
  809. package/dist/internal/roles.js.map +0 -1
  810. package/dist/internal/skip.d.ts.map +0 -1
  811. package/dist/internal/skip.js.map +0 -1
  812. package/dist/internal/source.d.ts.map +0 -1
  813. package/dist/internal/source.js.map +0 -1
  814. package/dist/internal/standard-schema.d.ts.map +0 -1
  815. package/dist/internal/standard-schema.js.map +0 -1
  816. package/dist/internal/suggest.d.ts.map +0 -1
  817. package/dist/internal/suggest.js.map +0 -1
  818. package/dist/internal/text.d.ts.map +0 -1
  819. package/dist/internal/text.js.map +0 -1
  820. package/dist/internal/time.d.ts.map +0 -1
  821. package/dist/internal/time.js.map +0 -1
  822. package/dist/internal/urls.d.ts.map +0 -1
  823. package/dist/internal/urls.js.map +0 -1
  824. package/dist/internal/vcs.d.ts.map +0 -1
  825. package/dist/internal/vcs.js.map +0 -1
  826. package/dist/internal/zip.d.ts.map +0 -1
  827. package/dist/internal/zip.js.map +0 -1
  828. package/dist/locator/engine.d.ts.map +0 -1
  829. package/dist/locator/engine.js.map +0 -1
  830. package/dist/locator/expression.d.ts.map +0 -1
  831. package/dist/locator/expression.js.map +0 -1
  832. package/dist/locator/screen.d.ts.map +0 -1
  833. package/dist/locator/screen.js.map +0 -1
  834. package/dist/mcp/catalog.d.ts.map +0 -1
  835. package/dist/mcp/catalog.js.map +0 -1
  836. package/dist/mcp/config.d.ts.map +0 -1
  837. package/dist/mcp/config.js.map +0 -1
  838. package/dist/mcp/recording.d.ts.map +0 -1
  839. package/dist/mcp/recording.js.map +0 -1
  840. package/dist/mcp/server.d.ts.map +0 -1
  841. package/dist/mcp/server.js.map +0 -1
  842. package/dist/mcp/session.d.ts.map +0 -1
  843. package/dist/mcp/session.js.map +0 -1
  844. package/dist/mcp/sessions.d.ts.map +0 -1
  845. package/dist/mcp/sessions.js.map +0 -1
  846. package/dist/mcp/tools.d.ts.map +0 -1
  847. package/dist/mcp/tools.js.map +0 -1
  848. package/dist/oauth/callback-server.d.ts.map +0 -1
  849. package/dist/oauth/callback-server.js.map +0 -1
  850. package/dist/oauth/chatgpt.d.ts.map +0 -1
  851. package/dist/oauth/chatgpt.js.map +0 -1
  852. package/dist/oauth/cli.d.ts.map +0 -1
  853. package/dist/oauth/cli.js.map +0 -1
  854. package/dist/oauth/copilot.d.ts.map +0 -1
  855. package/dist/oauth/copilot.js.map +0 -1
  856. package/dist/oauth/device-code.d.ts.map +0 -1
  857. package/dist/oauth/device-code.js.map +0 -1
  858. package/dist/oauth/errors.d.ts.map +0 -1
  859. package/dist/oauth/errors.js.map +0 -1
  860. package/dist/oauth/fetch.d.ts.map +0 -1
  861. package/dist/oauth/fetch.js.map +0 -1
  862. package/dist/oauth/grok.d.ts.map +0 -1
  863. package/dist/oauth/grok.js.map +0 -1
  864. package/dist/oauth/jwt.d.ts.map +0 -1
  865. package/dist/oauth/jwt.js.map +0 -1
  866. package/dist/oauth/login.d.ts.map +0 -1
  867. package/dist/oauth/login.js.map +0 -1
  868. package/dist/oauth/models.d.ts.map +0 -1
  869. package/dist/oauth/models.js.map +0 -1
  870. package/dist/oauth/pkce.d.ts.map +0 -1
  871. package/dist/oauth/pkce.js.map +0 -1
  872. package/dist/oauth/providers/github-copilot.d.ts.map +0 -1
  873. package/dist/oauth/providers/github-copilot.js.map +0 -1
  874. package/dist/oauth/providers/openai.d.ts.map +0 -1
  875. package/dist/oauth/providers/openai.js.map +0 -1
  876. package/dist/oauth/providers/xai.d.ts.map +0 -1
  877. package/dist/oauth/providers/xai.js.map +0 -1
  878. package/dist/oauth/providers.d.ts.map +0 -1
  879. package/dist/oauth/providers.js.map +0 -1
  880. package/dist/oauth/sse.d.ts.map +0 -1
  881. package/dist/oauth/sse.js.map +0 -1
  882. package/dist/oauth/store.d.ts.map +0 -1
  883. package/dist/oauth/store.js.map +0 -1
  884. package/dist/oauth/token-endpoint.d.ts.map +0 -1
  885. package/dist/oauth/token-endpoint.js.map +0 -1
  886. package/dist/oauth/types.d.ts.map +0 -1
  887. package/dist/oauth/types.js.map +0 -1
  888. package/dist/params.d.ts.map +0 -1
  889. package/dist/params.js.map +0 -1
  890. package/dist/report/build.d.ts.map +0 -1
  891. package/dist/report/build.js.map +0 -1
  892. package/dist/report/builtin.d.ts.map +0 -1
  893. package/dist/report/builtin.js.map +0 -1
  894. package/dist/report/code-frame.d.ts.map +0 -1
  895. package/dist/report/code-frame.js.map +0 -1
  896. package/dist/report/debug-steps.d.ts.map +0 -1
  897. package/dist/report/debug-steps.js.map +0 -1
  898. package/dist/report/explore-text.d.ts.map +0 -1
  899. package/dist/report/explore-text.js.map +0 -1
  900. package/dist/report/failure-text.d.ts.map +0 -1
  901. package/dist/report/failure-text.js.map +0 -1
  902. package/dist/report/format.d.ts.map +0 -1
  903. package/dist/report/format.js.map +0 -1
  904. package/dist/report/json.d.ts.map +0 -1
  905. package/dist/report/json.js.map +0 -1
  906. package/dist/report/junit.d.ts.map +0 -1
  907. package/dist/report/junit.js.map +0 -1
  908. package/dist/report/list-explore.d.ts.map +0 -1
  909. package/dist/report/list-explore.js.map +0 -1
  910. package/dist/report/list-model.d.ts.map +0 -1
  911. package/dist/report/list-model.js.map +0 -1
  912. package/dist/report/list-steps.d.ts.map +0 -1
  913. package/dist/report/list-steps.js.map +0 -1
  914. package/dist/report/list.d.ts.map +0 -1
  915. package/dist/report/list.js.map +0 -1
  916. package/dist/report/live-window.d.ts.map +0 -1
  917. package/dist/report/live-window.js.map +0 -1
  918. package/dist/report/markdown-text.d.ts.map +0 -1
  919. package/dist/report/markdown-text.js.map +0 -1
  920. package/dist/report/markdown.d.ts.map +0 -1
  921. package/dist/report/markdown.js.map +0 -1
  922. package/dist/report/outcome.d.ts.map +0 -1
  923. package/dist/report/outcome.js.map +0 -1
  924. package/dist/report/repeats.d.ts.map +0 -1
  925. package/dist/report/repeats.js.map +0 -1
  926. package/dist/report/running-tree.d.ts.map +0 -1
  927. package/dist/report/running-tree.js.map +0 -1
  928. package/dist/report/write.d.ts.map +0 -1
  929. package/dist/report/write.js.map +0 -1
  930. package/dist/run/app-ports.d.ts.map +0 -1
  931. package/dist/run/app-ports.js.map +0 -1
  932. package/dist/run/artifacts.d.ts.map +0 -1
  933. package/dist/run/artifacts.js.map +0 -1
  934. package/dist/run/budget.d.ts.map +0 -1
  935. package/dist/run/budget.js.map +0 -1
  936. package/dist/run/declared-processes.d.ts.map +0 -1
  937. package/dist/run/declared-processes.js.map +0 -1
  938. package/dist/run/events.d.ts.map +0 -1
  939. package/dist/run/events.js.map +0 -1
  940. package/dist/run/execute.d.ts.map +0 -1
  941. package/dist/run/execute.js.map +0 -1
  942. package/dist/run/extended-fixtures.d.ts.map +0 -1
  943. package/dist/run/extended-fixtures.js.map +0 -1
  944. package/dist/run/failure-evidence.d.ts.map +0 -1
  945. package/dist/run/failure-evidence.js.map +0 -1
  946. package/dist/run/fixture-recording.d.ts.map +0 -1
  947. package/dist/run/fixture-recording.js.map +0 -1
  948. package/dist/run/fixtures.d.ts.map +0 -1
  949. package/dist/run/fixtures.js.map +0 -1
  950. package/dist/run/in-process.d.ts.map +0 -1
  951. package/dist/run/in-process.js.map +0 -1
  952. package/dist/run/last-run.d.ts.map +0 -1
  953. package/dist/run/last-run.js.map +0 -1
  954. package/dist/run/managed-process.d.ts.map +0 -1
  955. package/dist/run/managed-process.js.map +0 -1
  956. package/dist/run/output.d.ts.map +0 -1
  957. package/dist/run/output.js.map +0 -1
  958. package/dist/run/process-pool.d.ts.map +0 -1
  959. package/dist/run/process-pool.js.map +0 -1
  960. package/dist/run/provision.d.ts.map +0 -1
  961. package/dist/run/provision.js.map +0 -1
  962. package/dist/run/realm.d.ts.map +0 -1
  963. package/dist/run/realm.js.map +0 -1
  964. package/dist/run/records.d.ts.map +0 -1
  965. package/dist/run/records.js.map +0 -1
  966. package/dist/run/retry.d.ts.map +0 -1
  967. package/dist/run/retry.js.map +0 -1
  968. package/dist/run/runner.d.ts.map +0 -1
  969. package/dist/run/runner.js.map +0 -1
  970. package/dist/run/scheduler.d.ts.map +0 -1
  971. package/dist/run/scheduler.js.map +0 -1
  972. package/dist/run/secrecy.d.ts.map +0 -1
  973. package/dist/run/secrecy.js.map +0 -1
  974. package/dist/run/serial.d.ts.map +0 -1
  975. package/dist/run/serial.js.map +0 -1
  976. package/dist/run/sessions.d.ts.map +0 -1
  977. package/dist/run/sessions.js.map +0 -1
  978. package/dist/run/standalone.d.ts.map +0 -1
  979. package/dist/run/standalone.js.map +0 -1
  980. package/dist/run/steps.d.ts.map +0 -1
  981. package/dist/run/steps.js.map +0 -1
  982. package/dist/run/trace-redaction.d.ts.map +0 -1
  983. package/dist/run/trace-redaction.js.map +0 -1
  984. package/dist/run/unit-runner.d.ts.map +0 -1
  985. package/dist/run/unit-runner.js.map +0 -1
  986. package/dist/run/units.d.ts.map +0 -1
  987. package/dist/run/units.js.map +0 -1
  988. package/dist/run/worker/entry.d.ts.map +0 -1
  989. package/dist/run/worker/entry.js.map +0 -1
  990. package/dist/run/worker/handle.d.ts.map +0 -1
  991. package/dist/run/worker/handle.js.map +0 -1
  992. package/dist/run/worker/protocol.d.ts.map +0 -1
  993. package/dist/run/worker/protocol.js.map +0 -1
  994. package/dist/run/worker/session.d.ts.map +0 -1
  995. package/dist/run/worker/session.js.map +0 -1
  996. package/dist/run/worker-models.d.ts.map +0 -1
  997. package/dist/run/worker-models.js.map +0 -1
  998. package/dist/secrets.d.ts.map +0 -1
  999. package/dist/secrets.js.map +0 -1
  1000. package/dist/telemetry/checkout.d.ts.map +0 -1
  1001. package/dist/telemetry/checkout.js.map +0 -1
  1002. package/dist/telemetry/environment.d.ts.map +0 -1
  1003. package/dist/telemetry/environment.js.map +0 -1
  1004. package/dist/telemetry/events.d.ts.map +0 -1
  1005. package/dist/telemetry/events.js.map +0 -1
  1006. package/dist/telemetry/failure-kind.d.ts.map +0 -1
  1007. package/dist/telemetry/failure-kind.js.map +0 -1
  1008. package/dist/telemetry/posthog.d.ts.map +0 -1
  1009. package/dist/telemetry/posthog.js.map +0 -1
  1010. package/dist/telemetry/project.d.ts.map +0 -1
  1011. package/dist/telemetry/project.js.map +0 -1
  1012. package/dist/telemetry/store.d.ts.map +0 -1
  1013. package/dist/telemetry/store.js.map +0 -1
  1014. package/dist/telemetry/telemetry.d.ts.map +0 -1
  1015. package/dist/telemetry/telemetry.js.map +0 -1
  1016. package/dist/telemetry/token.d.ts.map +0 -1
  1017. package/dist/telemetry/token.js.map +0 -1
  1018. package/dist/types.d.ts.map +0 -1
  1019. package/dist/types.js.map +0 -1
@@ -43,4 +43,3 @@ export interface ProviderHints {
43
43
  export declare function providerHints(model: ProviderModelRef | undefined): ProviderHints;
44
44
  /** A stable key for one system prompt, so every call sharing the prefix routes alike. */
45
45
  export declare function promptCacheKey(system: string): string;
46
- //# sourceMappingURL=provider-hints.d.ts.map
@@ -85,4 +85,3 @@ function withoutBreakpoint(message) {
85
85
  }
86
86
  return { ...message, providerOptions };
87
87
  }
88
- //# sourceMappingURL=provider-hints.js.map
@@ -17,4 +17,3 @@ import type { JSONSchema7 } from 'ai';
17
17
  import type { StandardSchemaV1 } from '../../types.ts';
18
18
  /** The caller schema's shape as JSON Schema, or undefined when it has no usable projection. */
19
19
  export declare function deriveJsonSchema(schema: StandardSchemaV1): Promise<JSONSchema7 | undefined>;
20
- //# sourceMappingURL=schema.d.ts.map
@@ -80,4 +80,3 @@ function refinesOnly(member, type) {
80
80
  function isSchemaObject(value) {
81
81
  return typeof value === 'object' && value !== null && !Array.isArray(value);
82
82
  }
83
- //# sourceMappingURL=schema.js.map
@@ -72,4 +72,3 @@ export declare function failureHint(cause: unknown): string;
72
72
  * the SDK to be loaded, which every caller has done by the time a call failed.
73
73
  */
74
74
  export declare function isAbort(cause: unknown): boolean;
75
- //# sourceMappingURL=sdk.d.ts.map
@@ -303,4 +303,3 @@ export function isAbort(cause) {
303
303
  return true;
304
304
  return cause instanceof Error && (cause.name === 'AbortError' || cause.name === 'TimeoutError');
305
305
  }
306
- //# sourceMappingURL=sdk.js.map
@@ -8,4 +8,3 @@ import type { AiSdk, SdkLanguageModel } from '../ai-sdk.ts';
8
8
  * The caller's cancellation is not a stall and passes through as it was.
9
9
  */
10
10
  export declare function withStallGuard(ai: AiSdk, model: SdkLanguageModel, onStall?: (stallMs: number) => void, stallMs?: number): SdkLanguageModel;
11
- //# sourceMappingURL=stall.d.ts.map
@@ -50,4 +50,3 @@ export function withStallGuard(ai, model, onStall = () => undefined, stallMs = M
50
50
  },
51
51
  });
52
52
  }
53
- //# sourceMappingURL=stall.js.map
@@ -3,13 +3,36 @@
3
3
  * a tool call on every turn (`toolChoice: 'required'`) and names
4
4
  * `complete_step` on the final ones; some models reject that request shape
5
5
  * outright (Anthropic's Claude Fable 5.1 answers HTTP 400 with
6
- * `tool_choice: type "tool" and "any" are not supported for this model.`),
6
+ * `tool_choice: type "tool" and "any" are not supported for this model.`;
7
+ * DeepSeek's V4 models think by default and answer a forced choice with
8
+ * `Thinking mode does not support this tool_choice`),
7
9
  * and a gateway forwards the provider's words.
8
10
  *
9
11
  * The loop reacts to this refusal differently from any other provider
10
12
  * failure: the same request with `toolChoice: 'auto'` and an instruction to
11
13
  * answer with tool calls can still succeed, where a 5xx needs only time.
12
14
  */
15
+ /**
16
+ * Whether a call warning says the provider sent `auto` in place of the
17
+ * forced choice it was asked for. The AI SDK's Anthropic provider does this
18
+ * itself for models it knows reject forced tool use (Claude Sonnet 5.5), so
19
+ * the request succeeds and no refusal ever reaches the loop.
20
+ */
21
+ export declare function isForcedToolChoiceDowngraded(warning: {
22
+ readonly type: string;
23
+ readonly feature?: string;
24
+ }): boolean;
25
+ /**
26
+ * Whether a turn under a forced choice came back as a finished reply without
27
+ * a tool call. The AI SDK (7.0.88 and later) throws `AI_ToolChoiceViolationError`
28
+ * for that, which is how a downgrading provider's prose answer surfaces. It is
29
+ * matched by name, since earlier 7.x releases export no such class; a reply
30
+ * cut off by the token limit or a content filter says nothing about the
31
+ * provider and does not count.
32
+ */
33
+ export declare function isForcedToolCallSkipped(error: unknown): error is {
34
+ readonly content?: readonly unknown[];
35
+ };
13
36
  /**
14
37
  * Whether a provider failure says the model does not accept a forced tool
15
38
  * choice. Reads the message and the raw response body of the error and of
@@ -18,4 +41,3 @@
18
41
  * quoting the request never reads as a model limitation.
19
42
  */
20
43
  export declare function isForcedToolChoiceRejected(error: unknown): boolean;
21
- //# sourceMappingURL=tool-choice.d.ts.map
@@ -3,7 +3,9 @@
3
3
  * a tool call on every turn (`toolChoice: 'required'`) and names
4
4
  * `complete_step` on the final ones; some models reject that request shape
5
5
  * outright (Anthropic's Claude Fable 5.1 answers HTTP 400 with
6
- * `tool_choice: type "tool" and "any" are not supported for this model.`),
6
+ * `tool_choice: type "tool" and "any" are not supported for this model.`;
7
+ * DeepSeek's V4 models think by default and answer a forced choice with
8
+ * `Thinking mode does not support this tool_choice`),
7
9
  * and a gateway forwards the provider's words.
8
10
  *
9
11
  * The loop reacts to this refusal differently from any other provider
@@ -12,10 +14,34 @@
12
14
  */
13
15
  const FORCED_CHOICE_PATTERNS = [
14
16
  /tool_choice.*not supported/i, // Anthropic
17
+ /does not support (?:this |the )?tool_choice/i, // DeepSeek V4 in thinking mode (its default)
15
18
  /tool_choice.*(?:unsupported|is not allowed|cannot be)/i, // OpenAI-compatible proxies
16
19
  /(?:forced|required) tool (?:choice|call|use).*not supported/i, // generic
17
20
  /does not support (?:forced|required) tool/i, // generic
18
21
  ];
22
+ /**
23
+ * Whether a call warning says the provider sent `auto` in place of the
24
+ * forced choice it was asked for. The AI SDK's Anthropic provider does this
25
+ * itself for models it knows reject forced tool use (Claude Sonnet 5.5), so
26
+ * the request succeeds and no refusal ever reaches the loop.
27
+ */
28
+ export function isForcedToolChoiceDowngraded(warning) {
29
+ return warning.type === 'unsupported' && warning.feature === 'toolChoice';
30
+ }
31
+ /**
32
+ * Whether a turn under a forced choice came back as a finished reply without
33
+ * a tool call. The AI SDK (7.0.88 and later) throws `AI_ToolChoiceViolationError`
34
+ * for that, which is how a downgrading provider's prose answer surfaces. It is
35
+ * matched by name, since earlier 7.x releases export no such class; a reply
36
+ * cut off by the token limit or a content filter says nothing about the
37
+ * provider and does not count.
38
+ */
39
+ export function isForcedToolCallSkipped(error) {
40
+ if (typeof error !== 'object' || error === null)
41
+ return false;
42
+ const record = error;
43
+ return record.name === 'AI_ToolChoiceViolationError' && record.finishReason === 'stop';
44
+ }
19
45
  /** Longest cause chain walked; a wrapped error rarely nests deeper. */
20
46
  const MAX_CAUSE_DEPTH = 8;
21
47
  /**
@@ -46,4 +72,3 @@ function describesRejection(error) {
46
72
  return false;
47
73
  return [record.message, record.responseBody].some((text) => typeof text === 'string' && FORCED_CHOICE_PATTERNS.some((pattern) => pattern.test(text)));
48
74
  }
49
- //# sourceMappingURL=tool-choice.js.map
@@ -24,4 +24,3 @@ export interface ObservationBudgetRequest {
24
24
  * than fail the adapter's pre-flight check.
25
25
  */
26
26
  export declare function observationByteBudget(limits: ObservationBudgetLimits, request: ObservationBudgetRequest): number;
27
- //# sourceMappingURL=observation-budget.d.ts.map
@@ -40,4 +40,3 @@ export function observationByteBudget(limits, request) {
40
40
  const withinTokenCeiling = Math.max(MIN_OBSERVATION_BYTES, limits.maxInputTokens - overhead);
41
41
  return Math.min(limits.maxObservationBytes, withinTokenCeiling);
42
42
  }
43
- //# sourceMappingURL=observation-budget.js.map
@@ -170,4 +170,3 @@ export declare class ObservationFeed {
170
170
  }
171
171
  /** The error for a target id the newest screen no longer lists. */
172
172
  export declare function nodeGone(id: string, latest: SemanticAgentObservation): AgentError;
173
- //# sourceMappingURL=observation-feed.d.ts.map
@@ -392,4 +392,3 @@ function echoesInput(node) {
392
392
  export function nodeGone(id, latest) {
393
393
  return new AgentError('LOCATOR_NOT_FOUND', `node #${id} is not on the current screen (observation ${latest.revision}); it was removed or never existed`);
394
394
  }
395
- //# sourceMappingURL=observation-feed.js.map
@@ -190,4 +190,3 @@ export declare function settleObservation<T>(capture: () => Promise<T>, shapeOf:
190
190
  */
191
191
  export declare function isTransitionalObservation(observation: AgentObservation): boolean;
192
192
  export {};
193
- //# sourceMappingURL=observation.d.ts.map
@@ -474,4 +474,3 @@ function indexNodes(node, into, parents) {
474
474
  indexNodes(child, into, parents);
475
475
  }
476
476
  }
477
- //# sourceMappingURL=observation.js.map
@@ -18,4 +18,3 @@ export declare class OperationQueue {
18
18
  /** Runs `body` after every operation queued before it, in call order. */
19
19
  run<T>(body: () => Promise<T>): Promise<T>;
20
20
  }
21
- //# sourceMappingURL=operation-queue.d.ts.map
@@ -24,4 +24,3 @@ export class OperationQueue {
24
24
  return run;
25
25
  }
26
26
  }
27
- //# sourceMappingURL=operation-queue.js.map
@@ -75,4 +75,3 @@ export declare function retryingObserve(options: {
75
75
  readonly signal: AbortSignal;
76
76
  readonly api: string;
77
77
  }): Promise<Observation>;
78
- //# sourceMappingURL=phases.d.ts.map
@@ -140,4 +140,3 @@ function phaseErrorCode(cause) {
140
140
  return engineError.code;
141
141
  return cause instanceof Error ? cause.name : 'ERROR';
142
142
  }
143
- //# sourceMappingURL=phases.js.map
@@ -18,4 +18,3 @@ export declare function sizeForModel<P extends ObservationPixels>(pixels: P): P;
18
18
  * the caller's pixels carry (a masked-region count) rides along unchanged.
19
19
  */
20
20
  export declare function downscalePixels<P extends ObservationPixels>(pixels: P, maxLongSide: number): P;
21
- //# sourceMappingURL=pixels.d.ts.map
@@ -82,4 +82,3 @@ function boxResample(source, sourceWidth, sourceHeight, target, targetWidth, tar
82
82
  }
83
83
  }
84
84
  }
85
- //# sourceMappingURL=pixels.js.map
@@ -63,4 +63,3 @@ export declare function describePointHit(input: PointProse & {
63
63
  readonly control: SemanticNode | undefined;
64
64
  readonly under: SemanticNode | undefined;
65
65
  }): string;
66
- //# sourceMappingURL=point-tap.d.ts.map
@@ -112,4 +112,3 @@ export function describePointHit(input) {
112
112
  function describeNode(prose, node) {
113
113
  return nodeLine(prose.observation, node.ref.id);
114
114
  }
115
- //# sourceMappingURL=point-tap.js.map
@@ -46,6 +46,12 @@ export interface GrammarToolOptions {
46
46
  * otherwise.
47
47
  */
48
48
  readonly screen?: ScreenPresenter;
49
+ /**
50
+ * Told the cause of every action that failed into a result rather than a
51
+ * throw, before it becomes the result's text: the one place its runner
52
+ * code is still structured.
53
+ */
54
+ readonly onActionFailed?: ((cause: unknown) => void) | undefined;
49
55
  }
50
56
  /**
51
57
  * AI SDK tools over the harness action grammar, limited to the verbs the
@@ -78,4 +84,3 @@ export declare function trackModelCalls(context: StepExecutorContext, model?: {
78
84
  readonly provider?: string;
79
85
  readonly modelId?: string;
80
86
  }): ModelCallTracker;
81
- //# sourceMappingURL=primitives.d.ts.map
@@ -666,7 +666,10 @@ function verbKit(context, options) {
666
666
  catch (cause) {
667
667
  if (isRuntimeHardStop(cause))
668
668
  throw cause;
669
- return present(failureLead(label, cause));
669
+ const failed = await present(failureLead(label, cause));
670
+ // After the look, so a look that throws fails the call once, as itself.
671
+ options.onActionFailed?.(cause);
672
+ return failed;
670
673
  }
671
674
  return present(outcome.lead, { expectChange: outcome.expectChange, ...update });
672
675
  });
@@ -717,4 +720,3 @@ export function trackModelCalls(context, model) {
717
720
  },
718
721
  };
719
722
  }
720
- //# sourceMappingURL=primitives.js.map
@@ -49,4 +49,3 @@ export declare const JUDGMENT_REQUEST: string;
49
49
  export declare const EXTRACT_REQUEST: string;
50
50
  /** The extraction's answer to a rejection the screen cannot satisfy: say so rather than change the data. */
51
51
  export declare const EXTRACT_REPAIR_OUTLET = "Correct a misread or a wrong shape. When the data the observation shows cannot satisfy the errors, respond with \"found\": false and say why in \"missing\" rather than change a value to fit.";
52
- //# sourceMappingURL=prompts.d.ts.map
@@ -118,4 +118,3 @@ export const EXTRACT_REQUEST = [
118
118
  ].join('\n');
119
119
  /** The extraction's answer to a rejection the screen cannot satisfy: say so rather than change the data. */
120
120
  export const EXTRACT_REPAIR_OUTLET = 'Correct a misread or a wrong shape. When the data the observation shows cannot satisfy the errors, respond with "found": false and say why in "missing" rather than change a value to fit.';
121
- //# sourceMappingURL=prompts.js.map
@@ -65,4 +65,3 @@ export declare function extractSchema(shape: JSONSchema7): JSONSchema7;
65
65
  */
66
66
  export declare function validateExtractResponse(value: unknown): ProtocolValidation<ExtractResponse>;
67
67
  export {};
68
- //# sourceMappingURL=protocol.d.ts.map
@@ -163,4 +163,3 @@ function asBoundedString(value, min, max) {
163
163
  function codePointLength(value) {
164
164
  return [...value].length;
165
165
  }
166
- //# sourceMappingURL=protocol.js.map
@@ -11,4 +11,3 @@
11
11
  export { createToolLoopExecutor, type ToolLoopExecutorOptions, type PreparedTurn, type PreparedMessages, type ToolLoopHelpers, } from './tool-loop.ts';
12
12
  export { defineTool, getToolContext, type DefinedTool, type ToolAnnotations } from './tool.ts';
13
13
  export { AgentError, isAgentError } from './error.ts';
14
- //# sourceMappingURL=public.d.ts.map
@@ -11,4 +11,3 @@
11
11
  export { createToolLoopExecutor, } from './tool-loop.js';
12
12
  export { defineTool, getToolContext } from './tool.js';
13
13
  export { AgentError, isAgentError } from './error.js';
14
- //# sourceMappingURL=public.js.map
@@ -24,4 +24,3 @@ export declare function nodeReading(observation: Pick<SemanticAgentObservation,
24
24
  * list moving.
25
25
  */
26
26
  export declare function readingShape(observation: Pick<SemanticAgentObservation, 'nodes'>): string;
27
- //# sourceMappingURL=reading.d.ts.map
@@ -80,4 +80,3 @@ export function readingShape(observation) {
80
80
  }
81
81
  return lines.join('\n');
82
82
  }
83
- //# sourceMappingURL=reading.js.map
@@ -84,4 +84,3 @@ export declare function verifyAnchors(host: ReplayHost, anchors: readonly TraceT
84
84
  readonly waitMs?: number;
85
85
  readonly initial?: SemanticScreen;
86
86
  }): Promise<boolean>;
87
- //# sourceMappingURL=replay.d.ts.map
@@ -438,4 +438,3 @@ function isUncertainCommit(cause) {
438
438
  function isReplayFatal(cause, signal) {
439
439
  return signal.aborted || isRuntimeHardStop(cause);
440
440
  }
441
- //# sourceMappingURL=replay.js.map
@@ -121,4 +121,3 @@ export declare class ScreenPresenter {
121
121
  */
122
122
  private withScreenshot;
123
123
  }
124
- //# sourceMappingURL=screen-update.d.ts.map
@@ -312,4 +312,3 @@ function diffScreens(previous, next) {
312
312
  }
313
313
  return lines;
314
314
  }
315
- //# sourceMappingURL=screen-update.js.map
@@ -23,4 +23,3 @@ import type { SemanticAgentObservation } from './observation.ts';
23
23
  export declare function resolveScrollTarget(feed: ObservationFeed, target: ExecutorTarget): Resolved | undefined;
24
24
  /** The listed node of the role whose box overlaps `box` most, when it overlaps enough. */
25
25
  export declare function samePlace(observation: SemanticAgentObservation, role: string | undefined, box: Box): SemanticNode | undefined;
26
- //# sourceMappingURL=scroll-target.d.ts.map
@@ -51,4 +51,3 @@ export function samePlace(observation, role, box) {
51
51
  }
52
52
  return best?.node;
53
53
  }
54
- //# sourceMappingURL=scroll-target.js.map
@@ -17,4 +17,3 @@ interface SecretFillHost {
17
17
  */
18
18
  export declare function authorizeSecretFill(host: SecretFillHost, runtime: AgentContext, secret: Secret, node: SemanticNode): Promise<string>;
19
19
  export {};
20
- //# sourceMappingURL=secrets.d.ts.map
@@ -38,4 +38,3 @@ export async function authorizeSecretFill(host, runtime, secret, node) {
38
38
  throw toAgentError(cause);
39
39
  }
40
40
  }
41
- //# sourceMappingURL=secrets.js.map
@@ -53,4 +53,3 @@ interface SettleAfter {
53
53
  */
54
54
  export declare const SETTLE_AFTER: Record<RecordedAction['name'], SettleAfter>;
55
55
  export {};
56
- //# sourceMappingURL=settle-policy.d.ts.map
@@ -66,4 +66,3 @@ export const SETTLE_AFTER = {
66
66
  dismissKeyboard: { changeWaitMs: FULL_CHANGE_WAIT_MS, look: 'held-still' },
67
67
  tool: { changeWaitMs: BRIEF_CHANGE_WAIT_MS, look: 'held-still' },
68
68
  };
69
- //# sourceMappingURL=settle-policy.js.map
@@ -108,4 +108,3 @@ export declare class StepAccounting {
108
108
  */
109
109
  modelInfo(executor: Pick<StepExecutor, 'name' | 'version'>): StepModelInfo | undefined;
110
110
  }
111
- //# sourceMappingURL=step-accounting.d.ts.map
@@ -220,4 +220,3 @@ export class StepAccounting {
220
220
  }, calls);
221
221
  }
222
222
  }
223
- //# sourceMappingURL=step-accounting.js.map
@@ -47,8 +47,15 @@ export interface StepCacheOptions {
47
47
  /** Timeline index of the step being dispatched. */
48
48
  readonly stepIndex: number;
49
49
  }
50
- /** How the step settled, as the write-side decision sees it. */
51
- export type StepOutcome = 'passed' | 'failed' | 'cancelled';
50
+ /**
51
+ * How the step settled, as the write-side decision sees it. `no-verdict` is a
52
+ * step that ended without anything judging the app: it was cancelled, or no
53
+ * model answered (`isModelUnreachable`). Neither says the recorded flow is
54
+ * wrong, so neither implicates its entry.
55
+ */
56
+ export type StepOutcome = 'passed' | 'failed' | 'no-verdict';
57
+ /** The outcome of a step that threw `cause`. */
58
+ export declare function failedStepOutcome(cause: unknown): Exclude<StepOutcome, 'passed'>;
52
59
  export declare class StepTraceSession {
53
60
  private readonly host;
54
61
  private readonly cache;
@@ -132,7 +139,11 @@ export declare class StepTraceSession {
132
139
  * - failed after consuming a replay: evict. Without this, a diverged replay
133
140
  * whose step then fails stages nothing — and the poisoned entry would
134
141
  * replay its bad prefix on every future first attempt.
135
- * - cancelled: nothing, exactly like an interrupted attempt.
142
+ * - no verdict (cancelled, or no model answered): nothing, exactly like an
143
+ * interrupted attempt. A replay that stopped at a gap and handed off to a
144
+ * model that never answered proved nothing against the recording, and one
145
+ * that diverged hands off again next run, where a model that answers
146
+ * re-records it.
136
147
  */
137
148
  conclude(outcome: StepOutcome, verdictSummary: string | undefined): Promise<void>;
138
149
  /**
@@ -213,4 +224,3 @@ export declare class StepTraceSession {
213
224
  * drift apart; a summary not written by it is returned as is.
214
225
  */
215
226
  export declare function recordedVerdictOf(summary: string): string;
216
- //# sourceMappingURL=step-cache.d.ts.map
@@ -19,9 +19,15 @@ import { TraceRecorder } from '../cache/recorder.js';
19
19
  import { expandTrace, templateParams, templatesCollide, templateTrace } from '../cache/template.js';
20
20
  import { readTraceEntry } from '../cache/trace.js';
21
21
  import { sleep } from '../internal/time.js';
22
- import { AgentError } from './error.js';
22
+ import { AgentError, isAgentError, isModelUnreachable } from './error.js';
23
23
  import { isRuntimeHardStop } from './executor.js';
24
24
  import { replayTrace, verifyAnchors, } from './replay.js';
25
+ /** The outcome of a step that threw `cause`. */
26
+ export function failedStepOutcome(cause) {
27
+ if (isModelUnreachable(cause))
28
+ return 'no-verdict';
29
+ return isAgentError(cause) && cause.code === 'CANCELLED' ? 'no-verdict' : 'failed';
30
+ }
25
31
  /**
26
32
  * The reasons a recording that exists no longer replays: the app or the
27
33
  * entry changed under it. The others describe the step (a value read off
@@ -189,14 +195,18 @@ export class StepTraceSession {
189
195
  * - failed after consuming a replay: evict. Without this, a diverged replay
190
196
  * whose step then fails stages nothing — and the poisoned entry would
191
197
  * replay its bad prefix on every future first attempt.
192
- * - cancelled: nothing, exactly like an interrupted attempt.
198
+ * - no verdict (cancelled, or no model answered): nothing, exactly like an
199
+ * interrupted attempt. A replay that stopped at a gap and handed off to a
200
+ * model that never answered proved nothing against the recording, and one
201
+ * that diverged hands off again next run, where a model that answers
202
+ * re-records it.
193
203
  */
194
204
  async conclude(outcome, verdictSummary) {
195
205
  const recorder = this.recorder;
196
206
  if (recorder === undefined)
197
207
  return;
198
208
  switch (outcome) {
199
- case 'cancelled':
209
+ case 'no-verdict':
200
210
  return;
201
211
  case 'failed':
202
212
  // A stale recording `cache.strict` failed on stays for the next strict
@@ -501,4 +511,3 @@ export function recordedVerdictOf(summary) {
501
511
  const at = summary.indexOf(RECORDED_VERDICT_SEPARATOR);
502
512
  return at === -1 ? summary : summary.slice(at + RECORDED_VERDICT_SEPARATOR.length);
503
513
  }
504
- //# sourceMappingURL=step-cache.js.map
@@ -80,4 +80,3 @@ export interface PreparedTurn {
80
80
  * Its model turns per step are the agent's `maxModelCalls`.
81
81
  */
82
82
  export declare function createToolLoopExecutor(options: ToolLoopExecutorOptions): StepExecutor;
83
- //# sourceMappingURL=tool-loop.d.ts.map
@@ -14,7 +14,7 @@ import { asSdkLanguageModel, loadAiSdk } from './ai-sdk.js';
14
14
  import { ConfigurationError, withHint } from '../internal/errors.js';
15
15
  import { failureHint, isAbort, TRANSPORT_RETRIES } from './model/sdk.js';
16
16
  import { isContextOverflow } from './model/overflow.js';
17
- import { isForcedToolChoiceRejected } from './model/tool-choice.js';
17
+ import { isForcedToolCallSkipped, isForcedToolChoiceDowngraded, isForcedToolChoiceRejected } from './model/tool-choice.js';
18
18
  import { withStallGuard } from './model/stall.js';
19
19
  import { providerHints } from './model/provider-hints.js';
20
20
  import { isScreenOutput, toolResultTexts } from './screen-update.js';
@@ -61,6 +61,14 @@ const MAX_REPORTED_NOTES_CHARS = 1_000;
61
61
  const FREE_TOOL_CHOICE_MODELS = new WeakSet();
62
62
  /** Appended to the instructions when the model cannot be forced to call tools. */
63
63
  const TOOL_CALLS_ONLY_RULE = 'Reply with tool calls only. A reply without a tool call does nothing and spends a turn; the step ends only through complete_step.';
64
+ /** The usage of a turn the SDK threw on: the provider answered, but the SDK reports no usage for it. */
65
+ const UNREPORTED_USAGE = {
66
+ inputTokens: undefined,
67
+ inputTokenDetails: { noCacheTokens: undefined, cacheReadTokens: undefined, cacheWriteTokens: undefined },
68
+ outputTokens: undefined,
69
+ outputTokenDetails: { textTokens: undefined, reasoningTokens: undefined },
70
+ totalTokens: undefined,
71
+ };
64
72
  /** Sent when a turn came back as text without a tool call. */
65
73
  const TEXT_REPLY_NOTICE = '[SYSTEM] Your last reply had no tool call, so nothing happened. Continue with a tool call, or call complete_step with your verdict.';
66
74
  /**
@@ -125,6 +133,8 @@ class LoopRun {
125
133
  overflowNote;
126
134
  /** How this step asks for tool calls; flips to `auto` when the model rejects a forced choice. */
127
135
  toolChoice;
136
+ /** The tool-choice mode the running generate call's instructions were written for. */
137
+ instructedFor = 'required';
128
138
  /** The last turn that ran, for continuing after a reply without tool calls. */
129
139
  lastStep;
130
140
  /** `model` as the loop sends requests to it: each one bounded, so a stalled response is sent again. */
@@ -166,6 +176,7 @@ class LoopRun {
166
176
  this.lastStep = step;
167
177
  this.recordTurn(step);
168
178
  tracker.onStepEnd(step);
179
+ this.noticeToolChoiceDowngrade(step);
169
180
  },
170
181
  });
171
182
  const continued = this.continueAfterTextReply(result.responseMessages);
@@ -181,7 +192,7 @@ class LoopRun {
181
192
  prompt = shrunk;
182
193
  continue;
183
194
  }
184
- const freed = this.freeToolChoiceRetry(cause);
195
+ const freed = this.freeToolChoiceRetry(cause, tracker);
185
196
  if (freed !== undefined) {
186
197
  prompt = freed;
187
198
  continue;
@@ -221,6 +232,7 @@ class LoopRun {
221
232
  }
222
233
  buildLoop(tools) {
223
234
  const system = this.instructions();
235
+ this.instructedFor = this.toolChoice;
224
236
  const providerOptions = this.hints.providerOptions(this.options.providerOptions ?? this.context.providerOptions, system);
225
237
  return new this.ai.ToolLoopAgent({
226
238
  model: this.requestModel,
@@ -241,8 +253,8 @@ class LoopRun {
241
253
  /**
242
254
  * A generate call that returned without a verdict and without a hard stop
243
255
  * ended on a turn that made no tool call: the SDK loop stops when there is
244
- * nothing to execute. Under `required` that cannot happen; under `auto` the
245
- * model may answer in prose. While turns remain, the reply is kept in the
256
+ * nothing to execute. Under `required` the SDK throws instead (see
257
+ * `freeToolChoiceRetry`); under `auto` the model may answer in prose. While turns remain, the reply is kept in the
246
258
  * history and the model is told to act, on the same turn budget.
247
259
  */
248
260
  continueAfterTextReply(responseMessages) {
@@ -264,21 +276,49 @@ class LoopRun {
264
276
  /**
265
277
  * A model that refuses a forced tool choice (HTTP 400 naming
266
278
  * `tool_choice`) is asked again with `auto` and a tool-calls-only rule in
267
- * its instructions, on the same turn budget. The refusal is remembered per
268
- * model instance, so later steps start in that mode.
279
+ * its instructions, on the same turn budget. So is one whose reply had no
280
+ * tool call under a forced choice: the SDK throws `ToolChoiceViolationError`
281
+ * for it, which happens when the provider downgraded the choice to `auto`
282
+ * and the model answered in prose. Either way the model is remembered, so
283
+ * later steps start in that mode.
269
284
  */
270
- freeToolChoiceRetry(cause) {
285
+ freeToolChoiceRetry(cause, tracker) {
271
286
  if (this.toolChoice === 'auto' || this.lastRequest === undefined)
272
287
  return undefined;
273
- if (this.context.signal.aborted || this.hardStop !== undefined || !isForcedToolChoiceRejected(cause)) {
288
+ if (this.context.signal.aborted || this.hardStop !== undefined)
289
+ return undefined;
290
+ if (isForcedToolCallSkipped(cause)) {
291
+ // The provider answered, and billed, before the SDK threw: the turn counts.
292
+ tracker.onStepEnd({ usage: UNREPORTED_USAGE, providerMetadata: undefined, reasoningText: undefined });
293
+ this.turnsUsed += 1;
294
+ this.turns.push({ index: this.turnsUsed, calls: [], outcome: skippedReplyText(cause.content), notes: [] });
295
+ this.note(`turn ${String(this.turnsUsed)} answered without the forced tool call: retrying with auto`);
296
+ }
297
+ else if (isForcedToolChoiceRejected(cause)) {
298
+ this.note(`the model rejected a forced tool choice before turn ${String(this.turnsUsed + 1)}: retrying with auto`);
299
+ }
300
+ else {
274
301
  return undefined;
275
302
  }
276
303
  this.toolChoice = 'auto';
277
304
  FREE_TOOL_CHOICE_MODELS.add(this.model);
278
305
  this.turnOffset = this.turnsUsed;
279
- this.note(`the model rejected a forced tool choice before turn ${String(this.turnsUsed + 1)}: retrying with auto`);
280
306
  return this.lastRequest;
281
307
  }
308
+ /**
309
+ * A provider that downgraded a forced choice to `auto` on its own (a
310
+ * `toolChoice` warning on a turn that otherwise succeeded) is treated like
311
+ * one that refused it: the rest of the step asks with `auto` under the
312
+ * tool-calls-only rule, and the model is remembered, so later steps start
313
+ * in that mode.
314
+ */
315
+ noticeToolChoiceDowngrade(step) {
316
+ if (this.toolChoice === 'auto' || step.warnings?.some(isForcedToolChoiceDowngraded) !== true)
317
+ return;
318
+ this.toolChoice = 'auto';
319
+ FREE_TOOL_CHOICE_MODELS.add(this.model);
320
+ this.note(`the provider sent auto in place of a forced tool choice on turn ${String(this.turnsUsed)}: continuing with auto`);
321
+ }
282
322
  /**
283
323
  * The one recovery the loop attempts on its own: a request the provider
284
324
  * refused as too large is sent again with the history shrunk — superseded
@@ -409,6 +449,8 @@ class LoopRun {
409
449
  // alone under `auto`; the notices above already tell it to call it.
410
450
  return {
411
451
  ...(outgoing === messages ? {} : { messages: outgoing }),
452
+ // A switch to `auto` inside this generate call: the remaining turns get the tool-calls-only rule too.
453
+ ...(this.toolChoice === this.instructedFor ? {} : { instructions: this.hints.instructions(this.instructions()) }),
412
454
  ...(forced
413
455
  ? {
414
456
  activeTools: ['complete_step'],
@@ -564,6 +606,17 @@ function truncate(text, max) {
564
606
  return text.length <= max ? text : `${text.slice(0, max)}…[truncated]`;
565
607
  }
566
608
  /** A tool result for the transcript: a screenshot-carrying result reads as its text plus the image size, never the bytes. */
609
+ /** The prose of a reply the SDK refused for lacking the forced tool call, as a turn outcome. */
610
+ function skippedReplyText(content) {
611
+ const text = (content ?? [])
612
+ .flatMap((part) => {
613
+ const record = part;
614
+ return record.type === 'text' && typeof record.text === 'string' ? [record.text] : [];
615
+ })
616
+ .join('')
617
+ .trim();
618
+ return text === '' ? '' : `assistant: ${truncate(text, MAX_TURN_TEXT_CHARS)}`;
619
+ }
567
620
  function describeOutput(output) {
568
621
  if (isScreenOutput(output))
569
622
  return `${output.text}\n[screenshot, ${String(output.pixels.data.byteLength)} bytes]`;
@@ -579,4 +632,3 @@ function safeJson(value) {
579
632
  return String(value);
580
633
  }
581
634
  }
582
- //# sourceMappingURL=tool-loop.js.map