e2e 0.15.2 → 0.17.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 (1024) hide show
  1. package/dist/.build.json +1 -1
  2. package/dist/agent/act-validation.d.ts +10 -1
  3. package/dist/agent/act-validation.js +48 -1
  4. package/dist/agent/act.d.ts +1 -2
  5. package/dist/agent/act.js +29 -9
  6. package/dist/agent/action-dispatcher.d.ts +0 -1
  7. package/dist/agent/action-dispatcher.js +4 -6
  8. package/dist/agent/action-names.d.ts +0 -1
  9. package/dist/agent/action-names.js +0 -1
  10. package/dist/agent/actions.d.ts +32 -24
  11. package/dist/agent/actions.js +38 -25
  12. package/dist/agent/agent-brand.d.ts +0 -1
  13. package/dist/agent/agent-brand.js +0 -1
  14. package/dist/agent/ai-sdk.d.ts +7 -1
  15. package/dist/agent/ai-sdk.js +11 -1
  16. package/dist/agent/call-options.d.ts +0 -1
  17. package/dist/agent/call-options.js +0 -1
  18. package/dist/agent/default-agent.d.ts +0 -1
  19. package/dist/agent/default-agent.js +0 -1
  20. package/dist/agent/derived.d.ts +0 -1
  21. package/dist/agent/derived.js +0 -1
  22. package/dist/agent/error.d.ts +0 -1
  23. package/dist/agent/error.js +0 -1
  24. package/dist/agent/executor.d.ts +0 -1
  25. package/dist/agent/executor.js +0 -1
  26. package/dist/agent/index.d.ts +0 -1
  27. package/dist/agent/index.js +0 -1
  28. package/dist/agent/interactive-step.d.ts +0 -1
  29. package/dist/agent/interactive-step.js +0 -1
  30. package/dist/agent/invocation.d.ts +0 -1
  31. package/dist/agent/invocation.js +10 -5
  32. package/dist/agent/ledger.d.ts +0 -1
  33. package/dist/agent/ledger.js +0 -1
  34. package/dist/agent/loop-guards.d.ts +0 -1
  35. package/dist/agent/loop-guards.js +0 -1
  36. package/dist/agent/model/adapter.d.ts +0 -1
  37. package/dist/agent/model/adapter.js +0 -1
  38. package/dist/agent/model/overflow.d.ts +0 -1
  39. package/dist/agent/model/overflow.js +0 -1
  40. package/dist/agent/model/provider-hints.d.ts +0 -1
  41. package/dist/agent/model/provider-hints.js +0 -1
  42. package/dist/agent/model/schema.d.ts +0 -1
  43. package/dist/agent/model/schema.js +0 -1
  44. package/dist/agent/model/sdk.d.ts +0 -1
  45. package/dist/agent/model/sdk.js +2 -1
  46. package/dist/agent/model/stall.d.ts +0 -1
  47. package/dist/agent/model/stall.js +0 -1
  48. package/dist/agent/model/tool-choice.d.ts +0 -1
  49. package/dist/agent/model/tool-choice.js +0 -1
  50. package/dist/agent/observation-budget.d.ts +0 -1
  51. package/dist/agent/observation-budget.js +0 -1
  52. package/dist/agent/observation-feed.d.ts +5 -7
  53. package/dist/agent/observation-feed.js +5 -8
  54. package/dist/agent/observation.d.ts +40 -12
  55. package/dist/agent/observation.js +109 -60
  56. package/dist/agent/operation-queue.d.ts +0 -1
  57. package/dist/agent/operation-queue.js +0 -1
  58. package/dist/agent/phases.d.ts +0 -1
  59. package/dist/agent/phases.js +0 -1
  60. package/dist/agent/pixels.d.ts +0 -1
  61. package/dist/agent/pixels.js +0 -1
  62. package/dist/agent/point-tap.d.ts +8 -9
  63. package/dist/agent/point-tap.js +1 -2
  64. package/dist/agent/primitives.d.ts +6 -1
  65. package/dist/agent/primitives.js +4 -2
  66. package/dist/agent/prompts.d.ts +0 -1
  67. package/dist/agent/prompts.js +0 -1
  68. package/dist/agent/protocol.d.ts +0 -1
  69. package/dist/agent/protocol.js +0 -1
  70. package/dist/agent/public.d.ts +0 -1
  71. package/dist/agent/public.js +0 -1
  72. package/dist/agent/reading.d.ts +0 -1
  73. package/dist/agent/reading.js +0 -1
  74. package/dist/agent/replay.d.ts +19 -9
  75. package/dist/agent/replay.js +11 -15
  76. package/dist/agent/screen-update.d.ts +0 -1
  77. package/dist/agent/screen-update.js +0 -1
  78. package/dist/agent/scroll-target.d.ts +2 -4
  79. package/dist/agent/scroll-target.js +0 -1
  80. package/dist/agent/secrets.d.ts +0 -1
  81. package/dist/agent/secrets.js +0 -1
  82. package/dist/agent/settle-policy.d.ts +0 -1
  83. package/dist/agent/settle-policy.js +0 -1
  84. package/dist/agent/step-accounting.d.ts +0 -1
  85. package/dist/agent/step-accounting.js +0 -1
  86. package/dist/agent/step-cache.d.ts +41 -15
  87. package/dist/agent/step-cache.js +147 -63
  88. package/dist/agent/tool-loop.d.ts +0 -1
  89. package/dist/agent/tool-loop.js +2 -1
  90. package/dist/agent/tool-output.d.ts +0 -1
  91. package/dist/agent/tool-output.js +0 -1
  92. package/dist/agent/tool.d.ts +0 -1
  93. package/dist/agent/tool.js +0 -1
  94. package/dist/agent/transcript-compaction.d.ts +0 -1
  95. package/dist/agent/transcript-compaction.js +0 -1
  96. package/dist/agent/upload-paths.d.ts +0 -1
  97. package/dist/agent/upload-paths.js +0 -1
  98. package/dist/agent/usage.d.ts +0 -1
  99. package/dist/agent/usage.js +0 -1
  100. package/dist/cache/anchors.d.ts +72 -24
  101. package/dist/cache/anchors.js +233 -61
  102. package/dist/cache/context.d.ts +25 -15
  103. package/dist/cache/context.js +50 -9
  104. package/dist/cache/decide.d.ts +2 -3
  105. package/dist/cache/decide.js +4 -7
  106. package/dist/cache/identity.d.ts +18 -5
  107. package/dist/cache/identity.js +9 -5
  108. package/dist/cache/recorder.d.ts +15 -2
  109. package/dist/cache/recorder.js +36 -24
  110. package/dist/cache/rekeyed.d.ts +46 -0
  111. package/dist/cache/rekeyed.js +89 -0
  112. package/dist/cache/relocate.d.ts +14 -15
  113. package/dist/cache/relocate.js +33 -26
  114. package/dist/cache/route.d.ts +32 -34
  115. package/dist/cache/route.js +94 -51
  116. package/dist/cache/store.d.ts +6 -1
  117. package/dist/cache/store.js +21 -2
  118. package/dist/cache/template.d.ts +0 -1
  119. package/dist/cache/template.js +0 -1
  120. package/dist/cache/trace.d.ts +53 -15
  121. package/dist/cache/trace.js +70 -29
  122. package/dist/cli/bin.d.ts +0 -1
  123. package/dist/cli/bin.js +0 -1
  124. package/dist/cli/cache.d.ts +0 -1
  125. package/dist/cli/cache.js +0 -1
  126. package/dist/cli/docs-url.d.ts +0 -1
  127. package/dist/cli/docs-url.js +0 -1
  128. package/dist/cli/feedback.d.ts +0 -1
  129. package/dist/cli/feedback.js +0 -1
  130. package/dist/cli/guide.d.ts +0 -1
  131. package/dist/cli/guide.js +0 -1
  132. package/dist/cli/index.d.ts +0 -1
  133. package/dist/cli/index.js +10 -11
  134. package/dist/cli/init/agent-skill.d.ts +0 -1
  135. package/dist/cli/init/agent-skill.js +0 -1
  136. package/dist/cli/init/engines.d.ts +1 -4
  137. package/dist/cli/init/engines.js +2 -3
  138. package/dist/cli/init/gateways.d.ts +1 -2
  139. package/dist/cli/init/gateways.js +11 -2
  140. package/dist/cli/init/mcp-config.d.ts +0 -1
  141. package/dist/cli/init/mcp-config.js +0 -1
  142. package/dist/cli/init/package.d.ts +0 -1
  143. package/dist/cli/init/package.js +0 -1
  144. package/dist/cli/init/scaffold.d.ts +0 -1
  145. package/dist/cli/init/scaffold.js +0 -1
  146. package/dist/cli/init/sibling-versions.json +1 -1
  147. package/dist/cli/init/versions.d.ts +0 -9
  148. package/dist/cli/init/versions.js +1 -11
  149. package/dist/cli/init.d.ts +0 -1
  150. package/dist/cli/init.js +0 -1
  151. package/dist/cli/mcp.d.ts +9 -2
  152. package/dist/cli/mcp.js +14 -2
  153. package/dist/cli/signals.d.ts +0 -1
  154. package/dist/cli/signals.js +0 -1
  155. package/dist/cli/skill.d.ts +0 -1
  156. package/dist/cli/skill.js +0 -1
  157. package/dist/cli/telemetry.d.ts +0 -1
  158. package/dist/cli/telemetry.js +1 -2
  159. package/dist/cli/wordmark.d.ts +0 -1
  160. package/dist/cli/wordmark.js +0 -1
  161. package/dist/collect/collect.d.ts +0 -1
  162. package/dist/collect/collect.js +3 -2
  163. package/dist/collect/registry.d.ts +6 -3
  164. package/dist/collect/registry.js +31 -14
  165. package/dist/collect/select.d.ts +0 -1
  166. package/dist/collect/select.js +0 -1
  167. package/dist/config/agent.d.ts +0 -1
  168. package/dist/config/agent.js +0 -1
  169. package/dist/config/app.d.ts +0 -1
  170. package/dist/config/app.js +0 -1
  171. package/dist/config/command.d.ts +0 -1
  172. package/dist/config/command.js +0 -1
  173. package/dist/config/diagnose.d.ts +0 -1
  174. package/dist/config/diagnose.js +0 -1
  175. package/dist/config/esm-hooks.d.ts +0 -1
  176. package/dist/config/esm-hooks.js +0 -1
  177. package/dist/config/load.d.ts +0 -1
  178. package/dist/config/load.js +0 -1
  179. package/dist/config/resolve.d.ts +1 -1
  180. package/dist/config/resolve.js +33 -2
  181. package/dist/config/secrets.d.ts +0 -1
  182. package/dist/config/secrets.js +0 -1
  183. package/dist/config/targets.d.ts +0 -1
  184. package/dist/config/targets.js +0 -1
  185. package/dist/config/validate.d.ts +0 -1
  186. package/dist/config/validate.js +0 -1
  187. package/dist/engine/contract.d.ts +0 -1
  188. package/dist/engine/contract.js +0 -1
  189. package/dist/engine/index.d.ts +3 -4
  190. package/dist/engine/index.js +4 -4
  191. package/dist/engine/manifest.d.ts +0 -1
  192. package/dist/engine/manifest.js +0 -1
  193. package/dist/engine/recording.d.ts +0 -1
  194. package/dist/engine/recording.js +0 -1
  195. package/dist/engine/resolve.d.ts +0 -1
  196. package/dist/engine/resolve.js +0 -1
  197. package/dist/engine/session.d.ts +0 -1
  198. package/dist/engine/session.js +0 -1
  199. package/dist/engine/surface.d.ts +0 -1
  200. package/dist/engine/surface.js +0 -1
  201. package/dist/engine/timing.d.ts +0 -1
  202. package/dist/engine/timing.js +0 -1
  203. package/dist/expect/async.d.ts +0 -1
  204. package/dist/expect/async.js +101 -59
  205. package/dist/expect/attempt.d.ts +0 -1
  206. package/dist/expect/attempt.js +0 -1
  207. package/dist/expect/index.d.ts +0 -1
  208. package/dist/expect/index.js +0 -1
  209. package/dist/expect/poll-scope.d.ts +52 -0
  210. package/dist/expect/poll-scope.js +113 -0
  211. package/dist/expect/poll.d.ts +0 -1
  212. package/dist/expect/poll.js +31 -5
  213. package/dist/expect/soft.d.ts +0 -1
  214. package/dist/expect/soft.js +0 -1
  215. package/dist/expect/values.d.ts +0 -1
  216. package/dist/expect/values.js +11 -5
  217. package/dist/explore/body.d.ts +0 -1
  218. package/dist/explore/body.js +0 -1
  219. package/dist/explore/executor.d.ts +0 -1
  220. package/dist/explore/executor.js +0 -1
  221. package/dist/explore/index.d.ts +0 -1
  222. package/dist/explore/index.js +16 -2
  223. package/dist/explore/plan.d.ts +0 -1
  224. package/dist/explore/plan.js +0 -1
  225. package/dist/explore/progress.d.ts +0 -1
  226. package/dist/explore/progress.js +0 -1
  227. package/dist/explore/state.d.ts +0 -1
  228. package/dist/explore/state.js +0 -1
  229. package/dist/index.d.ts +0 -1
  230. package/dist/index.js +0 -1
  231. package/dist/internal/abandoned.d.ts +11 -0
  232. package/dist/internal/abandoned.js +23 -0
  233. package/dist/internal/ai-trace.d.ts +0 -1
  234. package/dist/internal/ai-trace.js +0 -1
  235. package/dist/internal/atomic-write.d.ts +0 -1
  236. package/dist/internal/atomic-write.js +0 -1
  237. package/dist/internal/brands.d.ts +2 -1
  238. package/dist/internal/brands.js +2 -1
  239. package/dist/internal/client-identity.d.ts +9 -0
  240. package/dist/internal/client-identity.js +14 -0
  241. package/dist/internal/debug.d.ts +0 -1
  242. package/dist/internal/debug.js +0 -1
  243. package/dist/internal/env.d.ts +0 -1
  244. package/dist/internal/env.js +0 -1
  245. package/dist/internal/errors.d.ts +0 -1
  246. package/dist/internal/errors.js +0 -1
  247. package/dist/internal/geometry.d.ts +0 -1
  248. package/dist/internal/geometry.js +0 -1
  249. package/dist/internal/git.d.ts +0 -1
  250. package/dist/internal/git.js +0 -1
  251. package/dist/internal/globs.d.ts +0 -1
  252. package/dist/internal/globs.js +0 -1
  253. package/dist/internal/ids.d.ts +0 -1
  254. package/dist/internal/ids.js +0 -1
  255. package/dist/internal/json-value.d.ts +0 -1
  256. package/dist/internal/json-value.js +0 -1
  257. package/dist/internal/keys.d.ts +0 -1
  258. package/dist/internal/keys.js +0 -1
  259. package/dist/internal/node-version.d.ts +0 -1
  260. package/dist/internal/node-version.js +0 -1
  261. package/dist/internal/objects.d.ts +0 -1
  262. package/dist/internal/objects.js +0 -1
  263. package/dist/internal/options.d.ts +0 -1
  264. package/dist/internal/options.js +0 -1
  265. package/dist/internal/package-manager.d.ts +0 -1
  266. package/dist/internal/package-manager.js +0 -1
  267. package/dist/internal/package-version.d.ts +0 -1
  268. package/dist/internal/package-version.js +0 -1
  269. package/dist/internal/paths.d.ts +0 -1
  270. package/dist/internal/paths.js +0 -1
  271. package/dist/internal/realm-slot.d.ts +0 -1
  272. package/dist/internal/realm-slot.js +0 -1
  273. package/dist/internal/recording-modes.d.ts +0 -1
  274. package/dist/internal/recording-modes.js +0 -1
  275. package/dist/internal/redact.d.ts +7 -5
  276. package/dist/internal/redact.js +116 -24
  277. package/dist/internal/regexp.d.ts +0 -1
  278. package/dist/internal/regexp.js +0 -1
  279. package/dist/internal/roles.d.ts +0 -1
  280. package/dist/internal/roles.js +0 -1
  281. package/dist/internal/skip.d.ts +0 -1
  282. package/dist/internal/skip.js +0 -1
  283. package/dist/internal/source.d.ts +0 -1
  284. package/dist/internal/source.js +0 -1
  285. package/dist/internal/standard-schema.d.ts +0 -1
  286. package/dist/internal/standard-schema.js +0 -1
  287. package/dist/internal/suggest.d.ts +0 -1
  288. package/dist/internal/suggest.js +0 -1
  289. package/dist/internal/text.d.ts +8 -1
  290. package/dist/internal/text.js +13 -2
  291. package/dist/internal/time.d.ts +6 -1
  292. package/dist/internal/time.js +25 -14
  293. package/dist/internal/urls.d.ts +9 -6
  294. package/dist/internal/urls.js +19 -11
  295. package/dist/internal/vcs.d.ts +0 -1
  296. package/dist/internal/vcs.js +0 -1
  297. package/dist/internal/zip.d.ts +0 -1
  298. package/dist/internal/zip.js +0 -1
  299. package/dist/locator/engine.d.ts +12 -3
  300. package/dist/locator/engine.js +8 -4
  301. package/dist/locator/expression.d.ts +0 -1
  302. package/dist/locator/expression.js +0 -1
  303. package/dist/locator/screen.d.ts +0 -1
  304. package/dist/locator/screen.js +28 -5
  305. package/dist/mcp/catalog.d.ts +7 -3
  306. package/dist/mcp/catalog.js +8 -9
  307. package/dist/mcp/config.d.ts +0 -1
  308. package/dist/mcp/config.js +0 -1
  309. package/dist/mcp/recording.d.ts +0 -1
  310. package/dist/mcp/recording.js +0 -1
  311. package/dist/mcp/server.d.ts +8 -1
  312. package/dist/mcp/server.js +8 -5
  313. package/dist/mcp/session.d.ts +4 -2
  314. package/dist/mcp/session.js +44 -22
  315. package/dist/mcp/sessions.d.ts +2 -1
  316. package/dist/mcp/sessions.js +5 -2
  317. package/dist/mcp/tools.d.ts +7 -6
  318. package/dist/mcp/tools.js +36 -11
  319. package/dist/mcp/usage.d.ts +61 -0
  320. package/dist/mcp/usage.js +73 -0
  321. package/dist/oauth/callback-server.d.ts +0 -1
  322. package/dist/oauth/callback-server.js +0 -1
  323. package/dist/oauth/chatgpt.d.ts +0 -1
  324. package/dist/oauth/chatgpt.js +3 -24
  325. package/dist/oauth/cli.d.ts +0 -1
  326. package/dist/oauth/cli.js +1 -1
  327. package/dist/oauth/copilot.d.ts +5 -5
  328. package/dist/oauth/copilot.js +80 -8
  329. package/dist/oauth/device-code.d.ts +0 -1
  330. package/dist/oauth/device-code.js +0 -1
  331. package/dist/oauth/errors.d.ts +0 -1
  332. package/dist/oauth/errors.js +0 -1
  333. package/dist/oauth/fetch.d.ts +0 -1
  334. package/dist/oauth/fetch.js +0 -1
  335. package/dist/oauth/grok.d.ts +0 -1
  336. package/dist/oauth/grok.js +2 -2
  337. package/dist/oauth/jwt.d.ts +0 -1
  338. package/dist/oauth/jwt.js +0 -1
  339. package/dist/oauth/login.d.ts +0 -1
  340. package/dist/oauth/login.js +0 -1
  341. package/dist/oauth/models.d.ts +0 -1
  342. package/dist/oauth/models.js +2 -2
  343. package/dist/oauth/opencode-console.d.ts +10 -0
  344. package/dist/oauth/opencode-console.js +133 -0
  345. package/dist/oauth/pkce.d.ts +0 -1
  346. package/dist/oauth/pkce.js +0 -1
  347. package/dist/oauth/providers/github-copilot.d.ts +12 -1
  348. package/dist/oauth/providers/github-copilot.js +80 -19
  349. package/dist/oauth/providers/openai.d.ts +0 -1
  350. package/dist/oauth/providers/openai.js +1 -2
  351. package/dist/oauth/providers/opencode-console.d.ts +31 -0
  352. package/dist/oauth/providers/opencode-console.js +148 -0
  353. package/dist/oauth/providers/xai.d.ts +0 -1
  354. package/dist/oauth/providers/xai.js +0 -1
  355. package/dist/oauth/providers.d.ts +2 -7
  356. package/dist/oauth/providers.js +3 -8
  357. package/dist/oauth/responses.d.ts +9 -0
  358. package/dist/oauth/responses.js +23 -0
  359. package/dist/oauth/sse.d.ts +0 -1
  360. package/dist/oauth/sse.js +0 -1
  361. package/dist/oauth/store.d.ts +0 -1
  362. package/dist/oauth/store.js +0 -1
  363. package/dist/oauth/token-endpoint.d.ts +0 -1
  364. package/dist/oauth/token-endpoint.js +0 -1
  365. package/dist/oauth/types.d.ts +0 -1
  366. package/dist/oauth/types.js +0 -1
  367. package/dist/params.d.ts +0 -1
  368. package/dist/params.js +0 -1
  369. package/dist/report/build.d.ts +26 -1
  370. package/dist/report/build.js +16 -9
  371. package/dist/report/builtin.d.ts +0 -1
  372. package/dist/report/builtin.js +0 -1
  373. package/dist/report/code-frame.d.ts +0 -1
  374. package/dist/report/code-frame.js +0 -1
  375. package/dist/report/debug-steps.d.ts +0 -1
  376. package/dist/report/debug-steps.js +0 -1
  377. package/dist/report/explore-text.d.ts +0 -1
  378. package/dist/report/explore-text.js +0 -1
  379. package/dist/report/failure-text.d.ts +6 -2
  380. package/dist/report/failure-text.js +14 -5
  381. package/dist/report/format.d.ts +10 -6
  382. package/dist/report/format.js +12 -6
  383. package/dist/report/json.d.ts +0 -1
  384. package/dist/report/json.js +0 -1
  385. package/dist/report/junit.d.ts +0 -1
  386. package/dist/report/junit.js +11 -13
  387. package/dist/report/list-explore.d.ts +0 -1
  388. package/dist/report/list-explore.js +0 -1
  389. package/dist/report/list-model.d.ts +0 -1
  390. package/dist/report/list-model.js +0 -1
  391. package/dist/report/list-steps.d.ts +0 -1
  392. package/dist/report/list-steps.js +0 -1
  393. package/dist/report/list.d.ts +1 -1
  394. package/dist/report/list.js +38 -19
  395. package/dist/report/live-window.d.ts +0 -1
  396. package/dist/report/live-window.js +0 -1
  397. package/dist/report/markdown-text.d.ts +0 -1
  398. package/dist/report/markdown-text.js +0 -1
  399. package/dist/report/markdown.d.ts +1 -2
  400. package/dist/report/markdown.js +37 -15
  401. package/dist/report/outcome.d.ts +0 -1
  402. package/dist/report/outcome.js +0 -1
  403. package/dist/report/repeats.d.ts +6 -2
  404. package/dist/report/repeats.js +12 -4
  405. package/dist/report/running-tree.d.ts +0 -1
  406. package/dist/report/running-tree.js +0 -1
  407. package/dist/report/write.d.ts +0 -1
  408. package/dist/report/write.js +0 -1
  409. package/dist/run/app-ports.d.ts +0 -1
  410. package/dist/run/app-ports.js +0 -1
  411. package/dist/run/artifacts.d.ts +18 -1
  412. package/dist/run/artifacts.js +68 -2
  413. package/dist/run/budget.d.ts +0 -1
  414. package/dist/run/budget.js +0 -1
  415. package/dist/run/declared-processes.d.ts +0 -1
  416. package/dist/run/declared-processes.js +0 -1
  417. package/dist/run/events.d.ts +0 -1
  418. package/dist/run/events.js +0 -1
  419. package/dist/run/execute.d.ts +9 -1
  420. package/dist/run/execute.js +55 -29
  421. package/dist/run/extended-fixtures.d.ts +0 -1
  422. package/dist/run/extended-fixtures.js +6 -3
  423. package/dist/run/failure-evidence.d.ts +0 -1
  424. package/dist/run/failure-evidence.js +4 -3
  425. package/dist/run/fixture-recording.d.ts +0 -1
  426. package/dist/run/fixture-recording.js +0 -1
  427. package/dist/run/fixtures.d.ts +0 -1
  428. package/dist/run/fixtures.js +6 -9
  429. package/dist/run/in-process.d.ts +2 -1
  430. package/dist/run/in-process.js +1 -1
  431. package/dist/run/last-run.d.ts +42 -9
  432. package/dist/run/last-run.js +121 -15
  433. package/dist/run/managed-process.d.ts +0 -1
  434. package/dist/run/managed-process.js +0 -1
  435. package/dist/run/output.d.ts +0 -1
  436. package/dist/run/output.js +0 -1
  437. package/dist/run/process-pool.d.ts +0 -1
  438. package/dist/run/process-pool.js +0 -1
  439. package/dist/run/provision.d.ts +0 -1
  440. package/dist/run/provision.js +0 -1
  441. package/dist/run/realm.d.ts +6 -2
  442. package/dist/run/realm.js +21 -8
  443. package/dist/run/records.d.ts +16 -1
  444. package/dist/run/records.js +26 -1
  445. package/dist/run/retry.d.ts +3 -2
  446. package/dist/run/retry.js +4 -3
  447. package/dist/run/runner.d.ts +3 -2
  448. package/dist/run/runner.js +70 -32
  449. package/dist/run/scheduler.d.ts +0 -1
  450. package/dist/run/scheduler.js +0 -1
  451. package/dist/run/secrecy.d.ts +15 -1
  452. package/dist/run/secrecy.js +27 -2
  453. package/dist/run/serial.d.ts +2 -1
  454. package/dist/run/serial.js +8 -6
  455. package/dist/run/sessions.d.ts +0 -1
  456. package/dist/run/sessions.js +0 -1
  457. package/dist/run/standalone.d.ts +0 -1
  458. package/dist/run/standalone.js +3 -3
  459. package/dist/run/steps.d.ts +2 -9
  460. package/dist/run/steps.js +7 -22
  461. package/dist/run/trace-redaction.d.ts +0 -1
  462. package/dist/run/trace-redaction.js +0 -1
  463. package/dist/run/unit-runner.d.ts +0 -1
  464. package/dist/run/unit-runner.js +0 -1
  465. package/dist/run/units.d.ts +0 -1
  466. package/dist/run/units.js +0 -1
  467. package/dist/run/worker/entry.d.ts +0 -1
  468. package/dist/run/worker/entry.js +7 -7
  469. package/dist/run/worker/handle.d.ts +0 -1
  470. package/dist/run/worker/handle.js +0 -1
  471. package/dist/run/worker/protocol.d.ts +2 -1
  472. package/dist/run/worker/protocol.js +0 -1
  473. package/dist/run/worker/session.d.ts +2 -1
  474. package/dist/run/worker/session.js +1 -1
  475. package/dist/run/worker-models.d.ts +0 -1
  476. package/dist/run/worker-models.js +0 -1
  477. package/dist/secrets.d.ts +0 -1
  478. package/dist/secrets.js +0 -1
  479. package/dist/telemetry/checkout.d.ts +0 -1
  480. package/dist/telemetry/checkout.js +0 -1
  481. package/dist/telemetry/environment.d.ts +0 -1
  482. package/dist/telemetry/environment.js +0 -1
  483. package/dist/telemetry/events.d.ts +26 -10
  484. package/dist/telemetry/events.js +108 -13
  485. package/dist/telemetry/failure-kind.d.ts +0 -1
  486. package/dist/telemetry/failure-kind.js +0 -1
  487. package/dist/telemetry/posthog.d.ts +0 -1
  488. package/dist/telemetry/posthog.js +0 -1
  489. package/dist/telemetry/project.d.ts +0 -1
  490. package/dist/telemetry/project.js +0 -1
  491. package/dist/telemetry/store.d.ts +0 -1
  492. package/dist/telemetry/store.js +0 -1
  493. package/dist/telemetry/telemetry.d.ts +19 -8
  494. package/dist/telemetry/telemetry.js +26 -9
  495. package/dist/telemetry/token.d.ts +0 -1
  496. package/dist/telemetry/token.js +0 -1
  497. package/dist/types.d.ts +34 -26
  498. package/dist/types.js +0 -1
  499. package/docs/agents.mdx +6 -3
  500. package/docs/assertions.mdx +94 -0
  501. package/docs/authentication.mdx +3 -1
  502. package/docs/browser.mdx +42 -6
  503. package/docs/cache.mdx +64 -18
  504. package/docs/ci.mdx +11 -7
  505. package/docs/debugging.mdx +6 -3
  506. package/docs/executors.mdx +5 -3
  507. package/docs/github.mdx +12 -4
  508. package/docs/{writing-tests.mdx → goals.mdx} +21 -101
  509. package/docs/index.mdx +4 -4
  510. package/docs/integrations/kernel.mdx +1 -1
  511. package/docs/locators.mdx +64 -0
  512. package/docs/migrate/cypress.mdx +2 -2
  513. package/docs/migrate/maestro.mdx +2 -2
  514. package/docs/migrate/playwright.mdx +22 -16
  515. package/docs/migrate/selenium.mdx +2 -2
  516. package/docs/mobile.mdx +61 -4
  517. package/docs/models.mdx +53 -7
  518. package/docs/physical-devices.mdx +76 -0
  519. package/docs/quickstart.mdx +4 -3
  520. package/docs/reference/app.mdx +1 -1
  521. package/docs/reference/cli.mdx +30 -11
  522. package/docs/reference/config.mdx +25 -7
  523. package/docs/reference/engine.mdx +4 -3
  524. package/docs/reference/environment.mdx +8 -1
  525. package/docs/reference/errors.mdx +5 -5
  526. package/docs/reference/expect.mdx +79 -24
  527. package/docs/reference/mcp.mdx +3 -0
  528. package/docs/reference/mobile.mdx +23 -13
  529. package/docs/reference/reporters.mdx +8 -2
  530. package/docs/reference/screen.mdx +30 -7
  531. package/docs/reference/test.mdx +11 -4
  532. package/docs/reference/web.mdx +131 -23
  533. package/docs/security.mdx +45 -19
  534. package/docs/subscriptions.mdx +97 -9
  535. package/docs/telemetry.mdx +48 -6
  536. package/package.json +18 -4
  537. package/schema/report-v1.schema.json +14 -1
  538. package/skills/e2e/SKILL.md +2 -2
  539. package/skills/e2e/references/agent.md +22 -11
  540. package/skills/e2e/references/debugging.md +4 -4
  541. package/skills/e2e/references/mcp.md +3 -0
  542. package/skills/e2e/references/running.md +13 -8
  543. package/skills/e2e/references/setup.md +42 -15
  544. package/skills/e2e/references/writing-tests.md +43 -15
  545. package/dist/agent/act-validation.d.ts.map +0 -1
  546. package/dist/agent/act-validation.js.map +0 -1
  547. package/dist/agent/act.d.ts.map +0 -1
  548. package/dist/agent/act.js.map +0 -1
  549. package/dist/agent/action-dispatcher.d.ts.map +0 -1
  550. package/dist/agent/action-dispatcher.js.map +0 -1
  551. package/dist/agent/action-names.d.ts.map +0 -1
  552. package/dist/agent/action-names.js.map +0 -1
  553. package/dist/agent/actions.d.ts.map +0 -1
  554. package/dist/agent/actions.js.map +0 -1
  555. package/dist/agent/agent-brand.d.ts.map +0 -1
  556. package/dist/agent/agent-brand.js.map +0 -1
  557. package/dist/agent/ai-sdk.d.ts.map +0 -1
  558. package/dist/agent/ai-sdk.js.map +0 -1
  559. package/dist/agent/call-options.d.ts.map +0 -1
  560. package/dist/agent/call-options.js.map +0 -1
  561. package/dist/agent/default-agent.d.ts.map +0 -1
  562. package/dist/agent/default-agent.js.map +0 -1
  563. package/dist/agent/derived.d.ts.map +0 -1
  564. package/dist/agent/derived.js.map +0 -1
  565. package/dist/agent/error.d.ts.map +0 -1
  566. package/dist/agent/error.js.map +0 -1
  567. package/dist/agent/executor.d.ts.map +0 -1
  568. package/dist/agent/executor.js.map +0 -1
  569. package/dist/agent/index.d.ts.map +0 -1
  570. package/dist/agent/index.js.map +0 -1
  571. package/dist/agent/interactive-step.d.ts.map +0 -1
  572. package/dist/agent/interactive-step.js.map +0 -1
  573. package/dist/agent/invocation.d.ts.map +0 -1
  574. package/dist/agent/invocation.js.map +0 -1
  575. package/dist/agent/ledger.d.ts.map +0 -1
  576. package/dist/agent/ledger.js.map +0 -1
  577. package/dist/agent/loop-guards.d.ts.map +0 -1
  578. package/dist/agent/loop-guards.js.map +0 -1
  579. package/dist/agent/model/adapter.d.ts.map +0 -1
  580. package/dist/agent/model/adapter.js.map +0 -1
  581. package/dist/agent/model/overflow.d.ts.map +0 -1
  582. package/dist/agent/model/overflow.js.map +0 -1
  583. package/dist/agent/model/provider-hints.d.ts.map +0 -1
  584. package/dist/agent/model/provider-hints.js.map +0 -1
  585. package/dist/agent/model/schema.d.ts.map +0 -1
  586. package/dist/agent/model/schema.js.map +0 -1
  587. package/dist/agent/model/sdk.d.ts.map +0 -1
  588. package/dist/agent/model/sdk.js.map +0 -1
  589. package/dist/agent/model/stall.d.ts.map +0 -1
  590. package/dist/agent/model/stall.js.map +0 -1
  591. package/dist/agent/model/tool-choice.d.ts.map +0 -1
  592. package/dist/agent/model/tool-choice.js.map +0 -1
  593. package/dist/agent/observation-budget.d.ts.map +0 -1
  594. package/dist/agent/observation-budget.js.map +0 -1
  595. package/dist/agent/observation-feed.d.ts.map +0 -1
  596. package/dist/agent/observation-feed.js.map +0 -1
  597. package/dist/agent/observation.d.ts.map +0 -1
  598. package/dist/agent/observation.js.map +0 -1
  599. package/dist/agent/operation-queue.d.ts.map +0 -1
  600. package/dist/agent/operation-queue.js.map +0 -1
  601. package/dist/agent/phases.d.ts.map +0 -1
  602. package/dist/agent/phases.js.map +0 -1
  603. package/dist/agent/pixels.d.ts.map +0 -1
  604. package/dist/agent/pixels.js.map +0 -1
  605. package/dist/agent/point-tap.d.ts.map +0 -1
  606. package/dist/agent/point-tap.js.map +0 -1
  607. package/dist/agent/primitives.d.ts.map +0 -1
  608. package/dist/agent/primitives.js.map +0 -1
  609. package/dist/agent/prompts.d.ts.map +0 -1
  610. package/dist/agent/prompts.js.map +0 -1
  611. package/dist/agent/protocol.d.ts.map +0 -1
  612. package/dist/agent/protocol.js.map +0 -1
  613. package/dist/agent/public.d.ts.map +0 -1
  614. package/dist/agent/public.js.map +0 -1
  615. package/dist/agent/reading.d.ts.map +0 -1
  616. package/dist/agent/reading.js.map +0 -1
  617. package/dist/agent/replay.d.ts.map +0 -1
  618. package/dist/agent/replay.js.map +0 -1
  619. package/dist/agent/screen-update.d.ts.map +0 -1
  620. package/dist/agent/screen-update.js.map +0 -1
  621. package/dist/agent/scroll-target.d.ts.map +0 -1
  622. package/dist/agent/scroll-target.js.map +0 -1
  623. package/dist/agent/secrets.d.ts.map +0 -1
  624. package/dist/agent/secrets.js.map +0 -1
  625. package/dist/agent/settle-policy.d.ts.map +0 -1
  626. package/dist/agent/settle-policy.js.map +0 -1
  627. package/dist/agent/step-accounting.d.ts.map +0 -1
  628. package/dist/agent/step-accounting.js.map +0 -1
  629. package/dist/agent/step-cache.d.ts.map +0 -1
  630. package/dist/agent/step-cache.js.map +0 -1
  631. package/dist/agent/tool-loop.d.ts.map +0 -1
  632. package/dist/agent/tool-loop.js.map +0 -1
  633. package/dist/agent/tool-output.d.ts.map +0 -1
  634. package/dist/agent/tool-output.js.map +0 -1
  635. package/dist/agent/tool.d.ts.map +0 -1
  636. package/dist/agent/tool.js.map +0 -1
  637. package/dist/agent/transcript-compaction.d.ts.map +0 -1
  638. package/dist/agent/transcript-compaction.js.map +0 -1
  639. package/dist/agent/upload-paths.d.ts.map +0 -1
  640. package/dist/agent/upload-paths.js.map +0 -1
  641. package/dist/agent/usage.d.ts.map +0 -1
  642. package/dist/agent/usage.js.map +0 -1
  643. package/dist/cache/anchors.d.ts.map +0 -1
  644. package/dist/cache/anchors.js.map +0 -1
  645. package/dist/cache/context.d.ts.map +0 -1
  646. package/dist/cache/context.js.map +0 -1
  647. package/dist/cache/decide.d.ts.map +0 -1
  648. package/dist/cache/decide.js.map +0 -1
  649. package/dist/cache/identity.d.ts.map +0 -1
  650. package/dist/cache/identity.js.map +0 -1
  651. package/dist/cache/recorder.d.ts.map +0 -1
  652. package/dist/cache/recorder.js.map +0 -1
  653. package/dist/cache/relocate.d.ts.map +0 -1
  654. package/dist/cache/relocate.js.map +0 -1
  655. package/dist/cache/route.d.ts.map +0 -1
  656. package/dist/cache/route.js.map +0 -1
  657. package/dist/cache/store.d.ts.map +0 -1
  658. package/dist/cache/store.js.map +0 -1
  659. package/dist/cache/template.d.ts.map +0 -1
  660. package/dist/cache/template.js.map +0 -1
  661. package/dist/cache/trace.d.ts.map +0 -1
  662. package/dist/cache/trace.js.map +0 -1
  663. package/dist/cli/bin.d.ts.map +0 -1
  664. package/dist/cli/bin.js.map +0 -1
  665. package/dist/cli/cache.d.ts.map +0 -1
  666. package/dist/cli/cache.js.map +0 -1
  667. package/dist/cli/docs-url.d.ts.map +0 -1
  668. package/dist/cli/docs-url.js.map +0 -1
  669. package/dist/cli/feedback.d.ts.map +0 -1
  670. package/dist/cli/feedback.js.map +0 -1
  671. package/dist/cli/guide.d.ts.map +0 -1
  672. package/dist/cli/guide.js.map +0 -1
  673. package/dist/cli/index.d.ts.map +0 -1
  674. package/dist/cli/index.js.map +0 -1
  675. package/dist/cli/init/agent-skill.d.ts.map +0 -1
  676. package/dist/cli/init/agent-skill.js.map +0 -1
  677. package/dist/cli/init/engines.d.ts.map +0 -1
  678. package/dist/cli/init/engines.js.map +0 -1
  679. package/dist/cli/init/gateways.d.ts.map +0 -1
  680. package/dist/cli/init/gateways.js.map +0 -1
  681. package/dist/cli/init/mcp-config.d.ts.map +0 -1
  682. package/dist/cli/init/mcp-config.js.map +0 -1
  683. package/dist/cli/init/package.d.ts.map +0 -1
  684. package/dist/cli/init/package.js.map +0 -1
  685. package/dist/cli/init/scaffold.d.ts.map +0 -1
  686. package/dist/cli/init/scaffold.js.map +0 -1
  687. package/dist/cli/init/versions.d.ts.map +0 -1
  688. package/dist/cli/init/versions.js.map +0 -1
  689. package/dist/cli/init.d.ts.map +0 -1
  690. package/dist/cli/init.js.map +0 -1
  691. package/dist/cli/mcp.d.ts.map +0 -1
  692. package/dist/cli/mcp.js.map +0 -1
  693. package/dist/cli/signals.d.ts.map +0 -1
  694. package/dist/cli/signals.js.map +0 -1
  695. package/dist/cli/skill.d.ts.map +0 -1
  696. package/dist/cli/skill.js.map +0 -1
  697. package/dist/cli/telemetry.d.ts.map +0 -1
  698. package/dist/cli/telemetry.js.map +0 -1
  699. package/dist/cli/wordmark.d.ts.map +0 -1
  700. package/dist/cli/wordmark.js.map +0 -1
  701. package/dist/collect/collect.d.ts.map +0 -1
  702. package/dist/collect/collect.js.map +0 -1
  703. package/dist/collect/registry.d.ts.map +0 -1
  704. package/dist/collect/registry.js.map +0 -1
  705. package/dist/collect/select.d.ts.map +0 -1
  706. package/dist/collect/select.js.map +0 -1
  707. package/dist/config/agent.d.ts.map +0 -1
  708. package/dist/config/agent.js.map +0 -1
  709. package/dist/config/app.d.ts.map +0 -1
  710. package/dist/config/app.js.map +0 -1
  711. package/dist/config/command.d.ts.map +0 -1
  712. package/dist/config/command.js.map +0 -1
  713. package/dist/config/diagnose.d.ts.map +0 -1
  714. package/dist/config/diagnose.js.map +0 -1
  715. package/dist/config/esm-hooks.d.ts.map +0 -1
  716. package/dist/config/esm-hooks.js.map +0 -1
  717. package/dist/config/load.d.ts.map +0 -1
  718. package/dist/config/load.js.map +0 -1
  719. package/dist/config/resolve.d.ts.map +0 -1
  720. package/dist/config/resolve.js.map +0 -1
  721. package/dist/config/secrets.d.ts.map +0 -1
  722. package/dist/config/secrets.js.map +0 -1
  723. package/dist/config/targets.d.ts.map +0 -1
  724. package/dist/config/targets.js.map +0 -1
  725. package/dist/config/validate.d.ts.map +0 -1
  726. package/dist/config/validate.js.map +0 -1
  727. package/dist/engine/contract.d.ts.map +0 -1
  728. package/dist/engine/contract.js.map +0 -1
  729. package/dist/engine/index.d.ts.map +0 -1
  730. package/dist/engine/index.js.map +0 -1
  731. package/dist/engine/manifest.d.ts.map +0 -1
  732. package/dist/engine/manifest.js.map +0 -1
  733. package/dist/engine/recording.d.ts.map +0 -1
  734. package/dist/engine/recording.js.map +0 -1
  735. package/dist/engine/resolve.d.ts.map +0 -1
  736. package/dist/engine/resolve.js.map +0 -1
  737. package/dist/engine/session.d.ts.map +0 -1
  738. package/dist/engine/session.js.map +0 -1
  739. package/dist/engine/surface.d.ts.map +0 -1
  740. package/dist/engine/surface.js.map +0 -1
  741. package/dist/engine/timing.d.ts.map +0 -1
  742. package/dist/engine/timing.js.map +0 -1
  743. package/dist/expect/async.d.ts.map +0 -1
  744. package/dist/expect/async.js.map +0 -1
  745. package/dist/expect/attempt.d.ts.map +0 -1
  746. package/dist/expect/attempt.js.map +0 -1
  747. package/dist/expect/index.d.ts.map +0 -1
  748. package/dist/expect/index.js.map +0 -1
  749. package/dist/expect/poll.d.ts.map +0 -1
  750. package/dist/expect/poll.js.map +0 -1
  751. package/dist/expect/soft.d.ts.map +0 -1
  752. package/dist/expect/soft.js.map +0 -1
  753. package/dist/expect/values.d.ts.map +0 -1
  754. package/dist/expect/values.js.map +0 -1
  755. package/dist/explore/body.d.ts.map +0 -1
  756. package/dist/explore/body.js.map +0 -1
  757. package/dist/explore/executor.d.ts.map +0 -1
  758. package/dist/explore/executor.js.map +0 -1
  759. package/dist/explore/index.d.ts.map +0 -1
  760. package/dist/explore/index.js.map +0 -1
  761. package/dist/explore/plan.d.ts.map +0 -1
  762. package/dist/explore/plan.js.map +0 -1
  763. package/dist/explore/progress.d.ts.map +0 -1
  764. package/dist/explore/progress.js.map +0 -1
  765. package/dist/explore/state.d.ts.map +0 -1
  766. package/dist/explore/state.js.map +0 -1
  767. package/dist/index.d.ts.map +0 -1
  768. package/dist/index.js.map +0 -1
  769. package/dist/internal/ai-trace.d.ts.map +0 -1
  770. package/dist/internal/ai-trace.js.map +0 -1
  771. package/dist/internal/atomic-write.d.ts.map +0 -1
  772. package/dist/internal/atomic-write.js.map +0 -1
  773. package/dist/internal/brands.d.ts.map +0 -1
  774. package/dist/internal/brands.js.map +0 -1
  775. package/dist/internal/debug.d.ts.map +0 -1
  776. package/dist/internal/debug.js.map +0 -1
  777. package/dist/internal/env.d.ts.map +0 -1
  778. package/dist/internal/env.js.map +0 -1
  779. package/dist/internal/errors.d.ts.map +0 -1
  780. package/dist/internal/errors.js.map +0 -1
  781. package/dist/internal/geometry.d.ts.map +0 -1
  782. package/dist/internal/geometry.js.map +0 -1
  783. package/dist/internal/git.d.ts.map +0 -1
  784. package/dist/internal/git.js.map +0 -1
  785. package/dist/internal/globs.d.ts.map +0 -1
  786. package/dist/internal/globs.js.map +0 -1
  787. package/dist/internal/ids.d.ts.map +0 -1
  788. package/dist/internal/ids.js.map +0 -1
  789. package/dist/internal/json-value.d.ts.map +0 -1
  790. package/dist/internal/json-value.js.map +0 -1
  791. package/dist/internal/keys.d.ts.map +0 -1
  792. package/dist/internal/keys.js.map +0 -1
  793. package/dist/internal/node-version.d.ts.map +0 -1
  794. package/dist/internal/node-version.js.map +0 -1
  795. package/dist/internal/objects.d.ts.map +0 -1
  796. package/dist/internal/objects.js.map +0 -1
  797. package/dist/internal/options.d.ts.map +0 -1
  798. package/dist/internal/options.js.map +0 -1
  799. package/dist/internal/package-manager.d.ts.map +0 -1
  800. package/dist/internal/package-manager.js.map +0 -1
  801. package/dist/internal/package-version.d.ts.map +0 -1
  802. package/dist/internal/package-version.js.map +0 -1
  803. package/dist/internal/paths.d.ts.map +0 -1
  804. package/dist/internal/paths.js.map +0 -1
  805. package/dist/internal/realm-slot.d.ts.map +0 -1
  806. package/dist/internal/realm-slot.js.map +0 -1
  807. package/dist/internal/recording-modes.d.ts.map +0 -1
  808. package/dist/internal/recording-modes.js.map +0 -1
  809. package/dist/internal/redact.d.ts.map +0 -1
  810. package/dist/internal/redact.js.map +0 -1
  811. package/dist/internal/regexp.d.ts.map +0 -1
  812. package/dist/internal/regexp.js.map +0 -1
  813. package/dist/internal/roles.d.ts.map +0 -1
  814. package/dist/internal/roles.js.map +0 -1
  815. package/dist/internal/skip.d.ts.map +0 -1
  816. package/dist/internal/skip.js.map +0 -1
  817. package/dist/internal/source.d.ts.map +0 -1
  818. package/dist/internal/source.js.map +0 -1
  819. package/dist/internal/standard-schema.d.ts.map +0 -1
  820. package/dist/internal/standard-schema.js.map +0 -1
  821. package/dist/internal/suggest.d.ts.map +0 -1
  822. package/dist/internal/suggest.js.map +0 -1
  823. package/dist/internal/text.d.ts.map +0 -1
  824. package/dist/internal/text.js.map +0 -1
  825. package/dist/internal/time.d.ts.map +0 -1
  826. package/dist/internal/time.js.map +0 -1
  827. package/dist/internal/urls.d.ts.map +0 -1
  828. package/dist/internal/urls.js.map +0 -1
  829. package/dist/internal/vcs.d.ts.map +0 -1
  830. package/dist/internal/vcs.js.map +0 -1
  831. package/dist/internal/zip.d.ts.map +0 -1
  832. package/dist/internal/zip.js.map +0 -1
  833. package/dist/locator/engine.d.ts.map +0 -1
  834. package/dist/locator/engine.js.map +0 -1
  835. package/dist/locator/expression.d.ts.map +0 -1
  836. package/dist/locator/expression.js.map +0 -1
  837. package/dist/locator/screen.d.ts.map +0 -1
  838. package/dist/locator/screen.js.map +0 -1
  839. package/dist/mcp/catalog.d.ts.map +0 -1
  840. package/dist/mcp/catalog.js.map +0 -1
  841. package/dist/mcp/config.d.ts.map +0 -1
  842. package/dist/mcp/config.js.map +0 -1
  843. package/dist/mcp/recording.d.ts.map +0 -1
  844. package/dist/mcp/recording.js.map +0 -1
  845. package/dist/mcp/server.d.ts.map +0 -1
  846. package/dist/mcp/server.js.map +0 -1
  847. package/dist/mcp/session.d.ts.map +0 -1
  848. package/dist/mcp/session.js.map +0 -1
  849. package/dist/mcp/sessions.d.ts.map +0 -1
  850. package/dist/mcp/sessions.js.map +0 -1
  851. package/dist/mcp/tools.d.ts.map +0 -1
  852. package/dist/mcp/tools.js.map +0 -1
  853. package/dist/oauth/callback-server.d.ts.map +0 -1
  854. package/dist/oauth/callback-server.js.map +0 -1
  855. package/dist/oauth/chatgpt.d.ts.map +0 -1
  856. package/dist/oauth/chatgpt.js.map +0 -1
  857. package/dist/oauth/cli.d.ts.map +0 -1
  858. package/dist/oauth/cli.js.map +0 -1
  859. package/dist/oauth/copilot.d.ts.map +0 -1
  860. package/dist/oauth/copilot.js.map +0 -1
  861. package/dist/oauth/device-code.d.ts.map +0 -1
  862. package/dist/oauth/device-code.js.map +0 -1
  863. package/dist/oauth/errors.d.ts.map +0 -1
  864. package/dist/oauth/errors.js.map +0 -1
  865. package/dist/oauth/fetch.d.ts.map +0 -1
  866. package/dist/oauth/fetch.js.map +0 -1
  867. package/dist/oauth/grok.d.ts.map +0 -1
  868. package/dist/oauth/grok.js.map +0 -1
  869. package/dist/oauth/jwt.d.ts.map +0 -1
  870. package/dist/oauth/jwt.js.map +0 -1
  871. package/dist/oauth/login.d.ts.map +0 -1
  872. package/dist/oauth/login.js.map +0 -1
  873. package/dist/oauth/models.d.ts.map +0 -1
  874. package/dist/oauth/models.js.map +0 -1
  875. package/dist/oauth/pkce.d.ts.map +0 -1
  876. package/dist/oauth/pkce.js.map +0 -1
  877. package/dist/oauth/providers/github-copilot.d.ts.map +0 -1
  878. package/dist/oauth/providers/github-copilot.js.map +0 -1
  879. package/dist/oauth/providers/openai.d.ts.map +0 -1
  880. package/dist/oauth/providers/openai.js.map +0 -1
  881. package/dist/oauth/providers/xai.d.ts.map +0 -1
  882. package/dist/oauth/providers/xai.js.map +0 -1
  883. package/dist/oauth/providers.d.ts.map +0 -1
  884. package/dist/oauth/providers.js.map +0 -1
  885. package/dist/oauth/sse.d.ts.map +0 -1
  886. package/dist/oauth/sse.js.map +0 -1
  887. package/dist/oauth/store.d.ts.map +0 -1
  888. package/dist/oauth/store.js.map +0 -1
  889. package/dist/oauth/token-endpoint.d.ts.map +0 -1
  890. package/dist/oauth/token-endpoint.js.map +0 -1
  891. package/dist/oauth/types.d.ts.map +0 -1
  892. package/dist/oauth/types.js.map +0 -1
  893. package/dist/params.d.ts.map +0 -1
  894. package/dist/params.js.map +0 -1
  895. package/dist/report/build.d.ts.map +0 -1
  896. package/dist/report/build.js.map +0 -1
  897. package/dist/report/builtin.d.ts.map +0 -1
  898. package/dist/report/builtin.js.map +0 -1
  899. package/dist/report/code-frame.d.ts.map +0 -1
  900. package/dist/report/code-frame.js.map +0 -1
  901. package/dist/report/debug-steps.d.ts.map +0 -1
  902. package/dist/report/debug-steps.js.map +0 -1
  903. package/dist/report/explore-text.d.ts.map +0 -1
  904. package/dist/report/explore-text.js.map +0 -1
  905. package/dist/report/failure-text.d.ts.map +0 -1
  906. package/dist/report/failure-text.js.map +0 -1
  907. package/dist/report/format.d.ts.map +0 -1
  908. package/dist/report/format.js.map +0 -1
  909. package/dist/report/json.d.ts.map +0 -1
  910. package/dist/report/json.js.map +0 -1
  911. package/dist/report/junit.d.ts.map +0 -1
  912. package/dist/report/junit.js.map +0 -1
  913. package/dist/report/list-explore.d.ts.map +0 -1
  914. package/dist/report/list-explore.js.map +0 -1
  915. package/dist/report/list-model.d.ts.map +0 -1
  916. package/dist/report/list-model.js.map +0 -1
  917. package/dist/report/list-steps.d.ts.map +0 -1
  918. package/dist/report/list-steps.js.map +0 -1
  919. package/dist/report/list.d.ts.map +0 -1
  920. package/dist/report/list.js.map +0 -1
  921. package/dist/report/live-window.d.ts.map +0 -1
  922. package/dist/report/live-window.js.map +0 -1
  923. package/dist/report/markdown-text.d.ts.map +0 -1
  924. package/dist/report/markdown-text.js.map +0 -1
  925. package/dist/report/markdown.d.ts.map +0 -1
  926. package/dist/report/markdown.js.map +0 -1
  927. package/dist/report/outcome.d.ts.map +0 -1
  928. package/dist/report/outcome.js.map +0 -1
  929. package/dist/report/repeats.d.ts.map +0 -1
  930. package/dist/report/repeats.js.map +0 -1
  931. package/dist/report/running-tree.d.ts.map +0 -1
  932. package/dist/report/running-tree.js.map +0 -1
  933. package/dist/report/write.d.ts.map +0 -1
  934. package/dist/report/write.js.map +0 -1
  935. package/dist/run/app-ports.d.ts.map +0 -1
  936. package/dist/run/app-ports.js.map +0 -1
  937. package/dist/run/artifacts.d.ts.map +0 -1
  938. package/dist/run/artifacts.js.map +0 -1
  939. package/dist/run/budget.d.ts.map +0 -1
  940. package/dist/run/budget.js.map +0 -1
  941. package/dist/run/declared-processes.d.ts.map +0 -1
  942. package/dist/run/declared-processes.js.map +0 -1
  943. package/dist/run/events.d.ts.map +0 -1
  944. package/dist/run/events.js.map +0 -1
  945. package/dist/run/execute.d.ts.map +0 -1
  946. package/dist/run/execute.js.map +0 -1
  947. package/dist/run/extended-fixtures.d.ts.map +0 -1
  948. package/dist/run/extended-fixtures.js.map +0 -1
  949. package/dist/run/failure-evidence.d.ts.map +0 -1
  950. package/dist/run/failure-evidence.js.map +0 -1
  951. package/dist/run/fixture-recording.d.ts.map +0 -1
  952. package/dist/run/fixture-recording.js.map +0 -1
  953. package/dist/run/fixtures.d.ts.map +0 -1
  954. package/dist/run/fixtures.js.map +0 -1
  955. package/dist/run/in-process.d.ts.map +0 -1
  956. package/dist/run/in-process.js.map +0 -1
  957. package/dist/run/last-run.d.ts.map +0 -1
  958. package/dist/run/last-run.js.map +0 -1
  959. package/dist/run/managed-process.d.ts.map +0 -1
  960. package/dist/run/managed-process.js.map +0 -1
  961. package/dist/run/output.d.ts.map +0 -1
  962. package/dist/run/output.js.map +0 -1
  963. package/dist/run/process-pool.d.ts.map +0 -1
  964. package/dist/run/process-pool.js.map +0 -1
  965. package/dist/run/provision.d.ts.map +0 -1
  966. package/dist/run/provision.js.map +0 -1
  967. package/dist/run/realm.d.ts.map +0 -1
  968. package/dist/run/realm.js.map +0 -1
  969. package/dist/run/records.d.ts.map +0 -1
  970. package/dist/run/records.js.map +0 -1
  971. package/dist/run/retry.d.ts.map +0 -1
  972. package/dist/run/retry.js.map +0 -1
  973. package/dist/run/runner.d.ts.map +0 -1
  974. package/dist/run/runner.js.map +0 -1
  975. package/dist/run/scheduler.d.ts.map +0 -1
  976. package/dist/run/scheduler.js.map +0 -1
  977. package/dist/run/secrecy.d.ts.map +0 -1
  978. package/dist/run/secrecy.js.map +0 -1
  979. package/dist/run/serial.d.ts.map +0 -1
  980. package/dist/run/serial.js.map +0 -1
  981. package/dist/run/sessions.d.ts.map +0 -1
  982. package/dist/run/sessions.js.map +0 -1
  983. package/dist/run/standalone.d.ts.map +0 -1
  984. package/dist/run/standalone.js.map +0 -1
  985. package/dist/run/steps.d.ts.map +0 -1
  986. package/dist/run/steps.js.map +0 -1
  987. package/dist/run/trace-redaction.d.ts.map +0 -1
  988. package/dist/run/trace-redaction.js.map +0 -1
  989. package/dist/run/unit-runner.d.ts.map +0 -1
  990. package/dist/run/unit-runner.js.map +0 -1
  991. package/dist/run/units.d.ts.map +0 -1
  992. package/dist/run/units.js.map +0 -1
  993. package/dist/run/worker/entry.d.ts.map +0 -1
  994. package/dist/run/worker/entry.js.map +0 -1
  995. package/dist/run/worker/handle.d.ts.map +0 -1
  996. package/dist/run/worker/handle.js.map +0 -1
  997. package/dist/run/worker/protocol.d.ts.map +0 -1
  998. package/dist/run/worker/protocol.js.map +0 -1
  999. package/dist/run/worker/session.d.ts.map +0 -1
  1000. package/dist/run/worker/session.js.map +0 -1
  1001. package/dist/run/worker-models.d.ts.map +0 -1
  1002. package/dist/run/worker-models.js.map +0 -1
  1003. package/dist/secrets.d.ts.map +0 -1
  1004. package/dist/secrets.js.map +0 -1
  1005. package/dist/telemetry/checkout.d.ts.map +0 -1
  1006. package/dist/telemetry/checkout.js.map +0 -1
  1007. package/dist/telemetry/environment.d.ts.map +0 -1
  1008. package/dist/telemetry/environment.js.map +0 -1
  1009. package/dist/telemetry/events.d.ts.map +0 -1
  1010. package/dist/telemetry/events.js.map +0 -1
  1011. package/dist/telemetry/failure-kind.d.ts.map +0 -1
  1012. package/dist/telemetry/failure-kind.js.map +0 -1
  1013. package/dist/telemetry/posthog.d.ts.map +0 -1
  1014. package/dist/telemetry/posthog.js.map +0 -1
  1015. package/dist/telemetry/project.d.ts.map +0 -1
  1016. package/dist/telemetry/project.js.map +0 -1
  1017. package/dist/telemetry/store.d.ts.map +0 -1
  1018. package/dist/telemetry/store.js.map +0 -1
  1019. package/dist/telemetry/telemetry.d.ts.map +0 -1
  1020. package/dist/telemetry/telemetry.js.map +0 -1
  1021. package/dist/telemetry/token.d.ts.map +0 -1
  1022. package/dist/telemetry/token.js.map +0 -1
  1023. package/dist/types.d.ts.map +0 -1
  1024. package/dist/types.js.map +0 -1
@@ -53,7 +53,7 @@ export class Invocation {
53
53
  this.agent = runtime.select(options.agent);
54
54
  this.deadline = runtime.engine.deadline(options.timeoutMs);
55
55
  this.pixelTier = options.vision === true || options.vision === 'only';
56
- this.system = buildSystem(options.task, this.agent.agentContext);
56
+ this.system = runtime.redact(buildSystem(options.task, this.agent.agentContext));
57
57
  this.systemBytes = tokenUpperBound(this.system);
58
58
  }
59
59
  get session() {
@@ -179,11 +179,17 @@ export class Invocation {
179
179
  for (;;) {
180
180
  this.checkDeadline();
181
181
  this.consumeModelCall();
182
- const prompt = buildPrompt({
182
+ // The observation is redacted already; the instruction is the test's
183
+ // own text, which may spell out a registered value. The repair's raw
184
+ // text is redacted before the prompt cuts it, so the cut never splits a
185
+ // value into a fragment whole-value matching would miss.
186
+ const prompt = this.runtime.redact(buildPrompt({
183
187
  ...request.prompt,
184
188
  ...(this.treeWithheld ? { withholdTree: true } : {}),
185
- ...(repair === undefined ? {} : { repair }),
186
- });
189
+ ...(repair === undefined
190
+ ? {}
191
+ : { repair: { ...repair, rawText: repair.rawText === undefined ? undefined : this.runtime.redact(repair.rawText) } }),
192
+ }));
187
193
  // Pixels travel with the observation they were captured for, so the
188
194
  // image and the tree in one request always describe one revision.
189
195
  const images = imagesFor(request.prompt.observation);
@@ -322,4 +328,3 @@ function imagesFor(observation) {
322
328
  },
323
329
  ];
324
330
  }
325
- //# sourceMappingURL=invocation.js.map
@@ -36,4 +36,3 @@ export interface LedgerContext {
36
36
  * handoff to the ledger's own line budget.
37
37
  */
38
38
  export declare function serializeLedger(steps: readonly PriorStep[], maxBytes: number): LedgerContext;
39
- //# sourceMappingURL=ledger.d.ts.map
@@ -72,4 +72,3 @@ function formatEntry(step, position) {
72
72
  const handoff = truncateUtf8(step.explanation, MAX_HANDOFF_BYTES);
73
73
  return `${head}\n observed: ${handoff}`;
74
74
  }
75
- //# sourceMappingURL=ledger.js.map
@@ -84,4 +84,3 @@ export declare function isFailedResult(toolName: string, text: string): boolean;
84
84
  * that the last id was. Warns first, then forces the conclusion.
85
85
  */
86
86
  export declare function checkFailureStreak(results: readonly GuardToolResult[], thresholds?: LoopGuardThresholds): LoopGuardVerdict;
87
- //# sourceMappingURL=loop-guards.d.ts.map
@@ -184,4 +184,3 @@ export function checkFailureStreak(results, thresholds = DEFAULT_LOOP_GUARD_THRE
184
184
  }
185
185
  return { kind: 'clear' };
186
186
  }
187
- //# sourceMappingURL=loop-guards.js.map
@@ -102,4 +102,3 @@ export declare function imageTokenUpperBound(image: {
102
102
  width: number;
103
103
  height: number;
104
104
  }): number;
105
- //# sourceMappingURL=adapter.d.ts.map
@@ -37,4 +37,3 @@ export function imageTokenUpperBound(image) {
37
37
  return (Math.ceil(Math.max(1, image.width) / IMAGE_TILE_PX) *
38
38
  Math.ceil(Math.max(1, image.height) / IMAGE_TILE_PX));
39
39
  }
40
- //# sourceMappingURL=adapter.js.map
@@ -17,4 +17,3 @@
17
17
  * provider's words.
18
18
  */
19
19
  export declare function isContextOverflow(error: unknown): boolean;
20
- //# sourceMappingURL=overflow.d.ts.map
@@ -79,4 +79,3 @@ function describesOverflow(error) {
79
79
  OVERFLOW_PATTERNS.some((pattern) => pattern.test(text)) &&
80
80
  !NON_OVERFLOW_PATTERNS.some((pattern) => pattern.test(text)));
81
81
  }
82
- //# sourceMappingURL=overflow.js.map
@@ -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
@@ -9,6 +9,7 @@
9
9
  import { withHint } from '../../internal/errors.js';
10
10
  import { missingModelError } from '../../config/agent.js';
11
11
  import { aiSdk, asSdkLanguageModel, loadAiSdk } from '../ai-sdk.js';
12
+ import { MODEL_REQUEST_HEADERS } from '../../internal/client-identity.js';
12
13
  import { packageVersion } from '../../internal/package-version.js';
13
14
  import { AgentError } from '../error.js';
14
15
  import { isContextOverflow } from './overflow.js';
@@ -75,6 +76,7 @@ export function createModelAdapter(model, agentName = 'default') {
75
76
  maxOutputTokens: call.maxOutputTokens,
76
77
  ...(providerOptions === undefined ? {} : { providerOptions: providerOptions }),
77
78
  maxRetries: TRANSPORT_RETRIES,
79
+ headers: MODEL_REQUEST_HEADERS,
78
80
  abortSignal: call.signal,
79
81
  timeout: call.timeoutMs,
80
82
  };
@@ -303,4 +305,3 @@ export function isAbort(cause) {
303
305
  return true;
304
306
  return cause instanceof Error && (cause.name === 'AbortError' || cause.name === 'TimeoutError');
305
307
  }
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
@@ -41,4 +41,3 @@ export declare function isForcedToolCallSkipped(error: unknown): error is {
41
41
  * quoting the request never reads as a model limitation.
42
42
  */
43
43
  export declare function isForcedToolChoiceRejected(error: unknown): boolean;
44
- //# sourceMappingURL=tool-choice.d.ts.map
@@ -72,4 +72,3 @@ function describesRejection(error) {
72
72
  return false;
73
73
  return [record.message, record.responseBody].some((text) => typeof text === 'string' && FORCED_CHOICE_PATTERNS.some((pattern) => pattern.test(text)));
74
74
  }
75
- //# 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
@@ -7,24 +7,23 @@
7
7
  * executor's redacted view of a capture. Nothing else in the step observes
8
8
  * the engine; the dispatcher and the pixel tier ask the feed.
9
9
  */
10
- import type { SemanticNode } from '../engine/surface.ts';
11
10
  import type { StepAgentDetails } from '../run/steps.ts';
12
11
  import { AgentError } from './error.ts';
13
12
  import type { ExecutorObservation, ExecutorObserveOptions, ExecutorTarget } from './executor.ts';
14
13
  import type { AgentContext } from './invocation.ts';
15
- import { type AgentObservation, type SemanticAgentObservation } from './observation.ts';
14
+ import { type AgentObservation, type RedactedNode, type SemanticAgentObservation } from './observation.ts';
16
15
  import type { OperationQueue } from './operation-queue.ts';
17
16
  import { type SettleMode } from './settle-policy.ts';
18
17
  import type { StepAccounting } from './step-accounting.ts';
19
18
  /** A target resolved to a node of the observation it was found in. */
20
19
  export interface Resolved {
21
- readonly node: SemanticNode;
20
+ readonly node: RedactedNode;
22
21
  readonly observation: SemanticAgentObservation;
23
22
  }
24
23
  /** What a target names on the newest screen: the id as the screen lists it, the node or nothing, and the screen looked at. */
25
24
  export interface Lookup {
26
25
  readonly id: string;
27
- readonly node: SemanticNode | undefined;
26
+ readonly node: RedactedNode | undefined;
28
27
  readonly observation: SemanticAgentObservation;
29
28
  }
30
29
  export interface ObservationFeedOptions {
@@ -116,8 +115,8 @@ export declare class ObservationFeed {
116
115
  * through the queued observe: this runs inside a queued action body, and a
117
116
  * queued observation would wait on its own caller.
118
117
  */
119
- relocate(stale: SemanticNode): Promise<{
120
- node: SemanticNode;
118
+ relocate(stale: RedactedNode): Promise<{
119
+ node: RedactedNode;
121
120
  observation: SemanticAgentObservation;
122
121
  } | undefined>;
123
122
  /**
@@ -170,4 +169,3 @@ export declare class ObservationFeed {
170
169
  }
171
170
  /** The error for a target id the newest screen no longer lists. */
172
171
  export declare function nodeGone(id: string, latest: SemanticAgentObservation): AgentError;
173
- //# sourceMappingURL=observation-feed.d.ts.map
@@ -132,7 +132,7 @@ export class ObservationFeed {
132
132
  ...metadata,
133
133
  text: observation.text,
134
134
  truncated: observation.truncated,
135
- ...(options.tree === true ? { tree: projectTree(observation.tree, this.runtime.redact, this.runtime.app.base?.origin) } : {}),
135
+ ...(options.tree === true ? { tree: projectTree(observation.tree, this.runtime.app.base?.origin) } : {}),
136
136
  ...pixels,
137
137
  };
138
138
  }
@@ -197,8 +197,7 @@ export class ObservationFeed {
197
197
  * queued observation would wait on its own caller.
198
198
  */
199
199
  async relocate(stale) {
200
- const options = { redact: this.runtime.redact };
201
- const descriptor = describeTarget(stale, options.redact);
200
+ const descriptor = describeTarget(stale);
202
201
  if (descriptor === undefined)
203
202
  return undefined;
204
203
  this.accounting.checkpoint();
@@ -206,7 +205,7 @@ export class ObservationFeed {
206
205
  this.publish(observation);
207
206
  if (observation.kind === 'pixels')
208
207
  return undefined;
209
- const relocated = relocateDescriptor(descriptor, observation.nodes, options);
208
+ const relocated = relocateDescriptor(descriptor, observation.nodes);
210
209
  if (relocated.kind !== 'found')
211
210
  return undefined;
212
211
  const node = observation.nodes.get(relocated.id);
@@ -376,11 +375,10 @@ export class ObservationFeed {
376
375
  const earlier = this.lastSeen(id)?.node;
377
376
  if (earlier === undefined)
378
377
  return undefined;
379
- const options = { redact: this.runtime.redact };
380
- const descriptor = describeTarget(earlier, options.redact);
378
+ const descriptor = describeTarget(earlier);
381
379
  if (descriptor === undefined)
382
380
  return undefined;
383
- const relocated = relocateDescriptor(descriptor, latest.nodes, options);
381
+ const relocated = relocateDescriptor(descriptor, latest.nodes);
384
382
  return relocated.kind === 'found' ? latest.nodes.get(relocated.id) : undefined;
385
383
  }
386
384
  }
@@ -392,4 +390,3 @@ function echoesInput(node) {
392
390
  export function nodeGone(id, latest) {
393
391
  return new AgentError('LOCATOR_NOT_FOUND', `node #${id} is not on the current screen (observation ${latest.revision}); it was removed or never existed`);
394
392
  }
395
- //# sourceMappingURL=observation-feed.js.map
@@ -1,14 +1,15 @@
1
1
  /** Observation capture, redaction, and model serialization. */
2
2
  import type { Observation, SemanticNode, ViewportSize } from '../engine/surface.ts';
3
+ import type { SecretLedger } from '../internal/redact.ts';
3
4
  import type { VisionDegradation } from '../run/steps.ts';
4
5
  import type { ExecutorNode, ExecutorObservation, ExecutorPixels } from './executor.ts';
5
6
  /** Why pixels the caller asked for are not part of this observation. */
6
7
  type PixelsWithheld = 'MASKING_UNPROVEN';
7
8
  export type AgentObservation = AgentObservationMetadata & ({
8
9
  readonly kind: 'semantic';
9
- readonly nodes: ReadonlyMap<string, SemanticNode>;
10
+ readonly nodes: ReadonlyMap<string, RedactedNode>;
10
11
  readonly parents: ReadonlyMap<string, string>;
11
- readonly tree: SemanticNode;
12
+ readonly tree: RedactedNode;
12
13
  readonly truncated: boolean;
13
14
  readonly pixels?: ExecutorPixels | undefined;
14
15
  readonly pixelsWithheld?: PixelsWithheld | undefined;
@@ -37,10 +38,11 @@ interface AgentObservationMetadata {
37
38
  *
38
39
  * Pixels whose masking the engine cannot prove (fewer masked regions than
39
40
  * secure nodes) are withheld before they reach a model or disk; the semantic
40
- * tree never carries secure values. Registered secret values are additionally
41
- * replaced by their stable secret name, and so is the leading part of one a
42
- * field the engine cut at its limit ends with. A field holding one keeps no
43
- * selection, as a secure field keeps none.
41
+ * tree never carries secure values. Every string of every node is redacted
42
+ * once, here (`redactNode`): registered secret values are replaced by their
43
+ * stable secret name, and so is the leading part of one a field the engine
44
+ * cut at its limit ends with. A field holding one keeps no selection, as a
45
+ * secure field keeps none.
44
46
  */
45
47
  export declare function prepareObservation(observation: Observation, options: {
46
48
  redact: (text: string) => string;
@@ -52,6 +54,34 @@ export declare function prepareObservation(observation: Observation, options: {
52
54
  /** The app base URL's origin: link targets on it render as paths, which navigation resolves against it. */
53
55
  appOrigin?: string | undefined;
54
56
  }): AgentObservation;
57
+ /** What redacts a node: whole values, and the leading part of one a cut field ends with. */
58
+ export type NodeRedaction = Pick<SecretLedger, 'redact' | 'redactCut'>;
59
+ declare const REDACTED: unique symbol;
60
+ /**
61
+ * A semantic node every string of which has passed the attempt's secret
62
+ * ledger (`redactNode`). Model-facing text and executor trees render only
63
+ * from this shape, so a node no redaction touched cannot reach them.
64
+ */
65
+ export interface RedactedNode extends Omit<SemanticNode, 'children'> {
66
+ readonly [REDACTED]: true;
67
+ readonly children?: readonly RedactedNode[];
68
+ }
69
+ /**
70
+ * The node and its subtree with every secret taken out of every field
71
+ * (`NODE_FIELDS`), before any consumer reads it: the model's text, the
72
+ * executor's tree, cache descriptors and anchors, failure evidence.
73
+ */
74
+ export declare function redactNode(node: SemanticNode, redaction: NodeRedaction): RedactedNode;
75
+ /**
76
+ * An earlier capture's nodes redacted again through the ledger as it is now,
77
+ * each on its own fields, then linked to its redacted-again children, so the
78
+ * tree keeps its shape (which nodes are leaves) without a subtree redacted
79
+ * once per ancestor. A secret a provider resolved after the capture masks
80
+ * text the capture still shows, so the two captures read alike wherever the
81
+ * screen did not change. Redacting redacted text changes nothing else: a
82
+ * marker is never read again.
83
+ */
84
+ export declare function redactNodesAgain(nodes: ReadonlyMap<string, RedactedNode>, redaction: NodeRedaction): ReadonlyMap<string, RedactedNode>;
55
85
  /** Phase metrics describe a node count only when the capture actually read nodes. */
56
86
  export declare function observationDetail(observation: AgentObservation): {
57
87
  count?: number;
@@ -82,21 +112,20 @@ export declare const INTERACTIVE_ROLES: ReadonlySet<string>;
82
112
  */
83
113
  export declare function interactiveNodeCount(observation: Pick<ExecutorObservation, 'text'>): number;
84
114
  /**
85
- * Projects the raw tree onto the executor-facing node shape: the same
86
- * redaction the text serialization applies, field by field, and no value or
87
- * selection at all for a secure node, and a link target bounded as a line
115
+ * Projects a redacted tree onto the executor-facing node shape, the fields
116
+ * the text serialization renders, with a link target bounded as a line
88
117
  * bounds it: a target on `appOrigin` keeps that origin and loses no more of
89
118
  * its path than the line does. Selectors stay behind — they are relocation
90
119
  * material for the trace cache, not something a brain reasons about.
91
120
  */
92
- export declare function projectTree(node: SemanticNode, redact: (text: string) => string, appOrigin?: string): ExecutorNode;
121
+ export declare function projectTree(node: RedactedNode, appOrigin?: string): ExecutorNode;
93
122
  /**
94
123
  * Renders one node as `#id role "name" text="..." value="..." selection="..." [states]`. Role-less text
95
124
  * holders omit the role token entirely: on a large screen they are half the
96
125
  * lines, and the model needs their text, not a filler word. A link target on
97
126
  * `appOrigin`, the app base URL's, renders as its path.
98
127
  */
99
- export declare function formatNode(node: SemanticNode, depth: number, redact: (text: string) => string, appOrigin?: string): string;
128
+ export declare function formatNode(node: RedactedNode, depth: number, appOrigin?: string): string;
100
129
  /**
101
130
  * What the screen looks like, independent of which observation looked at it.
102
131
  *
@@ -190,4 +219,3 @@ export declare function settleObservation<T>(capture: () => Promise<T>, shapeOf:
190
219
  */
191
220
  export declare function isTransitionalObservation(observation: AgentObservation): boolean;
192
221
  export {};
193
- //# sourceMappingURL=observation.d.ts.map
@@ -15,10 +15,11 @@ const UNAVAILABLE_TREE_MARKER = '[semantic capture unavailable: no nodes were re
15
15
  *
16
16
  * Pixels whose masking the engine cannot prove (fewer masked regions than
17
17
  * secure nodes) are withheld before they reach a model or disk; the semantic
18
- * tree never carries secure values. Registered secret values are additionally
19
- * replaced by their stable secret name, and so is the leading part of one a
20
- * field the engine cut at its limit ends with. A field holding one keeps no
21
- * selection, as a secure field keeps none.
18
+ * tree never carries secure values. Every string of every node is redacted
19
+ * once, here (`redactNode`): registered secret values are replaced by their
20
+ * stable secret name, and so is the leading part of one a field the engine
21
+ * cut at its limit ends with. A field holding one keeps no selection, as a
22
+ * secure field keeps none.
22
23
  */
23
24
  export function prepareObservation(observation, options) {
24
25
  const location = observation.location === undefined ? undefined : options.redact(observation.location);
@@ -42,11 +43,10 @@ export function prepareObservation(observation, options) {
42
43
  pixels: pixels.cleared,
43
44
  };
44
45
  }
45
- const tree = protectSecrets(observation.tree, options);
46
+ const tree = redactNode(observation.tree, options);
46
47
  const nodes = new Map();
47
48
  const parents = new Map();
48
49
  indexNodes(tree, nodes, parents);
49
- const redact = options.redact;
50
50
  const lines = [];
51
51
  const encoder = new TextEncoder();
52
52
  // The marker is reserved up front so a truncated observation still fits the
@@ -63,7 +63,7 @@ export function prepareObservation(observation, options) {
63
63
  const emit = (node, depth) => {
64
64
  if (cutByBudget)
65
65
  return;
66
- const line = formatNode(node, depth, redact, options.appOrigin);
66
+ const line = formatNode(node, depth, options.appOrigin);
67
67
  const size = encoder.encode(`${line}\n`).byteLength;
68
68
  if (lines.length > 0 && bytes + size > budget) {
69
69
  cutByBudget = true;
@@ -97,40 +97,94 @@ export function prepareObservation(observation, options) {
97
97
  ...(pixels.withheld === undefined ? {} : { pixelsWithheld: pixels.withheld }),
98
98
  };
99
99
  }
100
- /** The fields an engine may cut, each at its observed limit. */
101
- const CUT_FIELDS = [
102
- ['name', OBSERVED_NAME_LIMIT],
103
- ['text', OBSERVED_TEXT_LIMIT],
104
- ['value', OBSERVED_TEXT_LIMIT],
105
- ['selection', OBSERVED_TEXT_LIMIT],
106
- ];
100
+ /** Leaves a field the engine fills from a closed set (an enum, booleans, numbers) or mints itself as it is. */
101
+ const keep = (value) => value;
107
102
  /**
108
- * The tree with what whole-value redaction misses taken out, before any
109
- * consumer reads it. Every field exactly as long as its observed limit, and
110
- * so possibly cut there, passes through `redactCut`: a secret the cut stopped
111
- * partway through leaves a leading part at the end that no whole value
112
- * matches. A shorter field is whole, and so is a longer one (a native input's
113
- * value, which no engine cuts); both are left to `redact`. A selection that
114
- * may show part of a secret is dropped, as a secure field's is. A subtree
115
- * with nothing changed is returned as it is.
103
+ * How each field of a node is redacted, one entry per field of
104
+ * `SemanticNode`: a field added to the contract does not compile until it
105
+ * says how its text is redacted, and a key an engine sends that the
106
+ * contract does not name is dropped. Every string passes through
107
+ * `redactText`. A secure node keeps no value or selection, and a selection
108
+ * that may show part of a secret is dropped, as a secure field's is. The ref
109
+ * is the engine's own handle, sent back to it to act, never page text.
116
110
  */
117
- function protectSecrets(node, redaction) {
118
- const withhold = node.selection !== undefined && selectionMayHoldSecret(node, node.selection, redaction);
119
- const changed = {};
120
- for (const [field, limit] of CUT_FIELDS) {
121
- const text = node[field];
122
- if (text?.length !== limit || (withhold && field === 'selection'))
111
+ const NODE_FIELDS = {
112
+ ref: keep,
113
+ role: (role, _node, redaction) => redactText(role, redaction),
114
+ name: (name, _node, redaction) => redactText(name, redaction, OBSERVED_NAME_LIMIT),
115
+ text: (text, _node, redaction) => redactText(text, redaction, OBSERVED_TEXT_LIMIT),
116
+ value: (value, node, redaction) => (node.states?.secure === true ? undefined : redactText(value, redaction, OBSERVED_TEXT_LIMIT)),
117
+ selection: (selection, node, redaction) => node.states?.secure === true || selectionMayHoldSecret(node, selection, redaction)
118
+ ? undefined
119
+ : redactText(selection, redaction, OBSERVED_TEXT_LIMIT),
120
+ testId: (testId, _node, redaction) => redactText(testId, redaction),
121
+ inputPurpose: keep,
122
+ states: keep,
123
+ level: keep,
124
+ attributes: (attributes, _node, redaction) => Object.fromEntries(Object.entries(attributes).map(([key, value]) => [redactText(key, redaction), redactText(value, redaction)])),
125
+ rect: keep,
126
+ selector: (selector, _node, redaction) => redactText(selector, redaction),
127
+ framePath: (framePath, _node, redaction) => framePath.map((selector) => redactText(selector, redaction)),
128
+ };
129
+ /**
130
+ * The node and its subtree with every secret taken out of every field
131
+ * (`NODE_FIELDS`), before any consumer reads it: the model's text, the
132
+ * executor's tree, cache descriptors and anchors, failure evidence.
133
+ */
134
+ export function redactNode(node, redaction) {
135
+ const redacted = {};
136
+ for (const [field, value] of Object.entries(node)) {
137
+ if (field === 'children' || value === undefined || !Object.hasOwn(NODE_FIELDS, field))
123
138
  continue;
124
- const redacted = redaction.redactCut(text);
125
- if (redacted !== text)
126
- changed[field] = redacted;
139
+ const redactValue = NODE_FIELDS[field];
140
+ const result = redactValue(value, node, redaction);
141
+ if (result !== undefined)
142
+ redacted[field] = result;
127
143
  }
128
- const children = node.children?.map((child) => protectSecrets(child, redaction));
129
- const sameChildren = (children ?? []).every((child, index) => child === node.children?.[index]);
130
- if (!withhold && Object.keys(changed).length === 0 && sameChildren)
131
- return node;
132
- const { selection: _selection, ...withoutSelection } = node;
133
- return { ...(withhold ? withoutSelection : node), ...changed, ...(children === undefined ? {} : { children }) };
144
+ if (node.children !== undefined)
145
+ redacted['children'] = node.children.map((child) => redactNode(child, redaction));
146
+ return redacted;
147
+ }
148
+ /**
149
+ * An earlier capture's nodes redacted again through the ledger as it is now,
150
+ * each on its own fields, then linked to its redacted-again children, so the
151
+ * tree keeps its shape (which nodes are leaves) without a subtree redacted
152
+ * once per ancestor. A secret a provider resolved after the capture masks
153
+ * text the capture still shows, so the two captures read alike wherever the
154
+ * screen did not change. Redacting redacted text changes nothing else: a
155
+ * marker is never read again.
156
+ */
157
+ export function redactNodesAgain(nodes, redaction) {
158
+ const again = new Map();
159
+ for (const [id, { children: _children, ...fields }] of nodes)
160
+ again.set(id, redactNode(fields, redaction));
161
+ for (const [id, { children }] of nodes) {
162
+ const node = again.get(id);
163
+ if (node === undefined || children === undefined)
164
+ continue;
165
+ node.children = children.map((child) => again.get(child.ref.id)).filter((child) => child !== undefined);
166
+ }
167
+ return again;
168
+ }
169
+ /**
170
+ * One observed string with every secret taken out, in the form it is written
171
+ * and in the one-line form a line, a descriptor, or an anchor shows it
172
+ * (`collapseText`). A field exactly as long as `limit`, and so possibly cut
173
+ * there, passes through `redactCut`: a secret the cut stopped partway through
174
+ * leaves a leading part at the end that no whole value matches. A shorter
175
+ * field is whole, and so is a longer one (a native input's value, which no
176
+ * engine cuts); both pass through `redact`. A field whose collapsed form
177
+ * still holds a secret (the whitespace inside a value widened) is kept
178
+ * collapsed and redacted, so no later collapse brings the value back.
179
+ */
180
+ function redactText(text, redaction, limit) {
181
+ const pass = text.length === limit ? redaction.redactCut : redaction.redact;
182
+ const redacted = pass(text);
183
+ const collapsed = collapseText(redacted);
184
+ if (collapsed === redacted)
185
+ return redacted;
186
+ const read = pass(collapsed);
187
+ return read === collapsed ? redacted : read;
134
188
  }
135
189
  /**
136
190
  * Whether a node's selection may show part of a secret, which no whole-value
@@ -142,7 +196,7 @@ function protectSecrets(node, redaction) {
142
196
  function selectionMayHoldSecret(node, selection, redaction) {
143
197
  const fields = [node.value, node.text].filter((text) => text !== undefined);
144
198
  const cut = (text) => text.length === OBSERVED_TEXT_LIMIT;
145
- if (fields.some((text) => (cut(text) ? redaction.redactCut(text) : redaction.redact(text)) !== text))
199
+ if (fields.some((text) => redactText(text, redaction, OBSERVED_TEXT_LIMIT) !== text))
146
200
  return true;
147
201
  return fields.some(cut) && !fields.some((text) => text.includes(selection));
148
202
  }
@@ -234,33 +288,29 @@ export function interactiveNodeCount(observation) {
234
288
  return count;
235
289
  }
236
290
  /**
237
- * Projects the raw tree onto the executor-facing node shape: the same
238
- * redaction the text serialization applies, field by field, and no value or
239
- * selection at all for a secure node, and a link target bounded as a line
291
+ * Projects a redacted tree onto the executor-facing node shape, the fields
292
+ * the text serialization renders, with a link target bounded as a line
240
293
  * bounds it: a target on `appOrigin` keeps that origin and loses no more of
241
294
  * its path than the line does. Selectors stay behind — they are relocation
242
295
  * material for the trace cache, not something a brain reasons about.
243
296
  */
244
- export function projectTree(node, redact, appOrigin) {
245
- const secure = node.states?.secure === true;
297
+ export function projectTree(node, appOrigin) {
246
298
  const attributes = node.attributes === undefined
247
299
  ? undefined
248
- : Object.fromEntries(Object.entries(node.attributes).map(([key, value]) => [key, key === 'href' ? treeHref(redact(value), appOrigin) : redact(value)]));
300
+ : Object.fromEntries(Object.entries(node.attributes).map(([key, value]) => [key, key === 'href' ? treeHref(value, appOrigin) : value]));
249
301
  return {
250
302
  id: node.ref.id,
251
303
  ...(node.role === undefined ? {} : { role: node.role }),
252
- ...(node.name === undefined ? {} : { name: redact(node.name) }),
253
- ...(node.text === undefined ? {} : { text: redact(node.text) }),
254
- ...(node.value === undefined || secure ? {} : { value: redact(node.value) }),
255
- ...(node.selection === undefined || secure ? {} : { selection: redact(node.selection) }),
304
+ ...(node.name === undefined ? {} : { name: node.name }),
305
+ ...(node.text === undefined ? {} : { text: node.text }),
306
+ ...(node.value === undefined ? {} : { value: node.value }),
307
+ ...(node.selection === undefined ? {} : { selection: node.selection }),
256
308
  ...(node.inputPurpose === undefined ? {} : { inputPurpose: node.inputPurpose }),
257
309
  ...(node.states === undefined ? {} : { states: node.states }),
258
310
  ...(attributes === undefined ? {} : { attributes }),
259
311
  ...(node.rect === undefined ? {} : { rect: node.rect }),
260
312
  ...(node.framePath === undefined ? {} : { framePath: node.framePath }),
261
- ...(node.children === undefined
262
- ? {}
263
- : { children: node.children.map((child) => projectTree(child, redact, appOrigin)) }),
313
+ ...(node.children === undefined ? {} : { children: node.children.map((child) => projectTree(child, appOrigin)) }),
264
314
  };
265
315
  }
266
316
  /** Depth beyond this renders flat; deep chrome must not buy tokens with spaces. */
@@ -273,37 +323,37 @@ const MAX_HREF_LENGTH = 256;
273
323
  * lines, and the model needs their text, not a filler word. A link target on
274
324
  * `appOrigin`, the app base URL's, renders as its path.
275
325
  */
276
- export function formatNode(node, depth, redact, appOrigin) {
326
+ export function formatNode(node, depth, appOrigin) {
277
327
  const parts = [`#${node.ref.id}`];
278
328
  if (node.role !== undefined && node.role !== '')
279
329
  parts.push(node.role);
280
330
  if (node.name !== undefined && node.name !== '')
281
- parts.push(JSON.stringify(redact(node.name)));
331
+ parts.push(JSON.stringify(node.name));
282
332
  const text = node.text === undefined ? '' : collapseText(node.text);
283
333
  if (text !== '' && text !== node.name)
284
- parts.push(`text=${JSON.stringify(redact(text))}`);
334
+ parts.push(`text=${JSON.stringify(text)}`);
285
335
  // Disambiguators the model needs when role and name repeat. The engine has
286
336
  // already reduced href to origin and path.
287
337
  if (node.testId !== undefined && node.testId !== '')
288
338
  parts.push(`testid=${JSON.stringify(node.testId)}`);
289
339
  const href = node.attributes?.['href'];
290
340
  if (href !== undefined && href !== '')
291
- parts.push(`href=${JSON.stringify(renderHref(redact(href), appOrigin))}`);
341
+ parts.push(`href=${JSON.stringify(renderHref(href, appOrigin))}`);
292
342
  const placeholder = node.attributes?.['placeholder'];
293
343
  if (placeholder !== undefined && placeholder !== '' && (node.name ?? '') === '') {
294
- parts.push(`placeholder=${JSON.stringify(redact(placeholder))}`);
344
+ parts.push(`placeholder=${JSON.stringify(placeholder)}`);
295
345
  }
296
346
  if (node.states?.secure === true) {
297
347
  parts.push('value=<secure>');
298
348
  }
299
349
  else if (node.value !== undefined && node.value !== '') {
300
- parts.push(`value=${JSON.stringify(redact(node.value))}`);
350
+ parts.push(`value=${JSON.stringify(node.value)}`);
301
351
  }
302
352
  // What a Shift+Arrow press selected: without it the model extends a
303
353
  // selection blind and cannot tell one word from its neighbour. Rendered
304
354
  // verbatim (escaped), since a selected space or newline is a selection too.
305
- if (node.selection !== undefined && node.selection !== '' && node.states?.secure !== true) {
306
- parts.push(`selection=${JSON.stringify(redact(node.selection))}`);
355
+ if (node.selection !== undefined && node.selection !== '') {
356
+ parts.push(`selection=${JSON.stringify(node.selection)}`);
307
357
  }
308
358
  if (node.inputPurpose !== undefined && node.inputPurpose !== 'none') {
309
359
  parts.push(`purpose=${node.inputPurpose}`);
@@ -474,4 +524,3 @@ function indexNodes(node, into, parents) {
474
524
  indexNodes(child, into, parents);
475
525
  }
476
526
  }
477
- //# sourceMappingURL=observation.js.map