@e2edev/e2e 0.7.0 → 0.8.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 (195) hide show
  1. package/README.md +8 -3
  2. package/dist/agent/act-validation.d.ts +7 -4
  3. package/dist/agent/act-validation.d.ts.map +1 -1
  4. package/dist/agent/act-validation.js +18 -3
  5. package/dist/agent/act-validation.js.map +1 -1
  6. package/dist/agent/act.d.ts +2 -2
  7. package/dist/agent/act.d.ts.map +1 -1
  8. package/dist/agent/act.js +228 -51
  9. package/dist/agent/act.js.map +1 -1
  10. package/dist/agent/default-agent.d.ts +1 -1
  11. package/dist/agent/default-agent.d.ts.map +1 -1
  12. package/dist/agent/default-agent.js +19 -84
  13. package/dist/agent/default-agent.js.map +1 -1
  14. package/dist/agent/executor.d.ts +7 -0
  15. package/dist/agent/executor.d.ts.map +1 -1
  16. package/dist/agent/executor.js.map +1 -1
  17. package/dist/agent/index.d.ts.map +1 -1
  18. package/dist/agent/index.js +14 -6
  19. package/dist/agent/index.js.map +1 -1
  20. package/dist/agent/invocation.d.ts +1 -8
  21. package/dist/agent/invocation.d.ts.map +1 -1
  22. package/dist/agent/invocation.js +7 -51
  23. package/dist/agent/invocation.js.map +1 -1
  24. package/dist/agent/ledger.d.ts.map +1 -1
  25. package/dist/agent/ledger.js +10 -1
  26. package/dist/agent/ledger.js.map +1 -1
  27. package/dist/agent/loop-guards.d.ts +21 -0
  28. package/dist/agent/loop-guards.d.ts.map +1 -1
  29. package/dist/agent/loop-guards.js +48 -0
  30. package/dist/agent/loop-guards.js.map +1 -1
  31. package/dist/agent/model/sdk.d.ts +18 -0
  32. package/dist/agent/model/sdk.d.ts.map +1 -1
  33. package/dist/agent/model/sdk.js +9 -3
  34. package/dist/agent/model/sdk.js.map +1 -1
  35. package/dist/agent/observation-budget.d.ts +27 -0
  36. package/dist/agent/observation-budget.d.ts.map +1 -0
  37. package/dist/agent/observation-budget.js +43 -0
  38. package/dist/agent/observation-budget.js.map +1 -0
  39. package/dist/agent/observation.d.ts +40 -7
  40. package/dist/agent/observation.d.ts.map +1 -1
  41. package/dist/agent/observation.js +56 -11
  42. package/dist/agent/observation.js.map +1 -1
  43. package/dist/agent/phases.d.ts +1 -1
  44. package/dist/agent/phases.d.ts.map +1 -1
  45. package/dist/agent/phases.js +11 -13
  46. package/dist/agent/phases.js.map +1 -1
  47. package/dist/agent/primitives.d.ts +14 -2
  48. package/dist/agent/primitives.d.ts.map +1 -1
  49. package/dist/agent/primitives.js +98 -54
  50. package/dist/agent/primitives.js.map +1 -1
  51. package/dist/agent/screen-update.d.ts +47 -0
  52. package/dist/agent/screen-update.d.ts.map +1 -0
  53. package/dist/agent/screen-update.js +222 -0
  54. package/dist/agent/screen-update.js.map +1 -0
  55. package/dist/agent/step-cache.d.ts +38 -10
  56. package/dist/agent/step-cache.d.ts.map +1 -1
  57. package/dist/agent/step-cache.js +86 -45
  58. package/dist/agent/step-cache.js.map +1 -1
  59. package/dist/agent/tool-loop.d.ts.map +1 -1
  60. package/dist/agent/tool-loop.js +27 -4
  61. package/dist/agent/tool-loop.js.map +1 -1
  62. package/dist/cache/decide.d.ts +4 -3
  63. package/dist/cache/decide.d.ts.map +1 -1
  64. package/dist/cache/decide.js.map +1 -1
  65. package/dist/cli/index.d.ts.map +1 -1
  66. package/dist/cli/index.js +2 -0
  67. package/dist/cli/index.js.map +1 -1
  68. package/dist/cli/init/engines.d.ts +2 -3
  69. package/dist/cli/init/engines.d.ts.map +1 -1
  70. package/dist/cli/init/engines.js +3 -4
  71. package/dist/cli/init/engines.js.map +1 -1
  72. package/dist/cli/signals.d.ts +3 -3
  73. package/dist/cli/signals.js +3 -3
  74. package/dist/config/agent.d.ts +6 -2
  75. package/dist/config/agent.d.ts.map +1 -1
  76. package/dist/config/agent.js +6 -2
  77. package/dist/config/agent.js.map +1 -1
  78. package/dist/config/load.d.ts +2 -2
  79. package/dist/config/load.js +2 -2
  80. package/dist/config/resolve.d.ts +16 -4
  81. package/dist/config/resolve.d.ts.map +1 -1
  82. package/dist/config/resolve.js +105 -39
  83. package/dist/config/resolve.js.map +1 -1
  84. package/dist/engine/contract.d.ts +6 -1
  85. package/dist/engine/contract.d.ts.map +1 -1
  86. package/dist/engine/contract.js.map +1 -1
  87. package/dist/engine/index.d.ts +56 -4
  88. package/dist/engine/index.d.ts.map +1 -1
  89. package/dist/engine/index.js +25 -5
  90. package/dist/engine/index.js.map +1 -1
  91. package/dist/engine/session.d.ts.map +1 -1
  92. package/dist/engine/session.js +6 -0
  93. package/dist/engine/session.js.map +1 -1
  94. package/dist/engine/surface.d.ts +6 -2
  95. package/dist/engine/surface.d.ts.map +1 -1
  96. package/dist/internal/options.d.ts +9 -0
  97. package/dist/internal/options.d.ts.map +1 -0
  98. package/dist/internal/options.js +27 -0
  99. package/dist/internal/options.js.map +1 -0
  100. package/dist/locator/expression.js +1 -1
  101. package/dist/locator/expression.js.map +1 -1
  102. package/dist/locator/screen.d.ts.map +1 -1
  103. package/dist/locator/screen.js +4 -2
  104. package/dist/locator/screen.js.map +1 -1
  105. package/dist/report/build.d.ts +2 -1
  106. package/dist/report/build.d.ts.map +1 -1
  107. package/dist/report/build.js +2 -0
  108. package/dist/report/build.js.map +1 -1
  109. package/dist/report/list-model.d.ts +8 -5
  110. package/dist/report/list-model.d.ts.map +1 -1
  111. package/dist/report/list.d.ts +12 -2
  112. package/dist/report/list.d.ts.map +1 -1
  113. package/dist/report/list.js +54 -16
  114. package/dist/report/list.js.map +1 -1
  115. package/dist/report/running-tree.d.ts +5 -4
  116. package/dist/report/running-tree.d.ts.map +1 -1
  117. package/dist/report/running-tree.js +8 -7
  118. package/dist/report/running-tree.js.map +1 -1
  119. package/dist/run/artifacts.d.ts.map +1 -1
  120. package/dist/run/artifacts.js +20 -2
  121. package/dist/run/artifacts.js.map +1 -1
  122. package/dist/run/events.d.ts +14 -7
  123. package/dist/run/events.d.ts.map +1 -1
  124. package/dist/run/events.js +7 -7
  125. package/dist/run/events.js.map +1 -1
  126. package/dist/run/execute.d.ts +24 -5
  127. package/dist/run/execute.d.ts.map +1 -1
  128. package/dist/run/execute.js +67 -25
  129. package/dist/run/execute.js.map +1 -1
  130. package/dist/run/fixtures.d.ts +6 -1
  131. package/dist/run/fixtures.d.ts.map +1 -1
  132. package/dist/run/fixtures.js +0 -1
  133. package/dist/run/fixtures.js.map +1 -1
  134. package/dist/run/in-process.d.ts +1 -1
  135. package/dist/run/in-process.d.ts.map +1 -1
  136. package/dist/run/in-process.js +6 -3
  137. package/dist/run/in-process.js.map +1 -1
  138. package/dist/run/records.d.ts +14 -1
  139. package/dist/run/records.d.ts.map +1 -1
  140. package/dist/run/runner.d.ts +13 -5
  141. package/dist/run/runner.d.ts.map +1 -1
  142. package/dist/run/runner.js +58 -52
  143. package/dist/run/runner.js.map +1 -1
  144. package/dist/run/scheduler.d.ts +4 -6
  145. package/dist/run/scheduler.d.ts.map +1 -1
  146. package/dist/run/scheduler.js +50 -23
  147. package/dist/run/scheduler.js.map +1 -1
  148. package/dist/run/serial.d.ts +2 -4
  149. package/dist/run/serial.d.ts.map +1 -1
  150. package/dist/run/serial.js +4 -2
  151. package/dist/run/serial.js.map +1 -1
  152. package/dist/run/steps.d.ts +25 -0
  153. package/dist/run/steps.d.ts.map +1 -1
  154. package/dist/run/steps.js +12 -0
  155. package/dist/run/steps.js.map +1 -1
  156. package/dist/run/unit-runner.d.ts +7 -2
  157. package/dist/run/unit-runner.d.ts.map +1 -1
  158. package/dist/run/units.d.ts +8 -0
  159. package/dist/run/units.d.ts.map +1 -1
  160. package/dist/run/units.js +11 -0
  161. package/dist/run/units.js.map +1 -1
  162. package/dist/run/worker/entry.js +1 -0
  163. package/dist/run/worker/entry.js.map +1 -1
  164. package/dist/run/worker/handle.d.ts +1 -1
  165. package/dist/run/worker/handle.d.ts.map +1 -1
  166. package/dist/run/worker/handle.js +1 -1
  167. package/dist/run/worker/handle.js.map +1 -1
  168. package/dist/run/worker/protocol.d.ts +2 -0
  169. package/dist/run/worker/protocol.d.ts.map +1 -1
  170. package/dist/run/worker/protocol.js.map +1 -1
  171. package/dist/run/worker/session.d.ts +2 -0
  172. package/dist/run/worker/session.d.ts.map +1 -1
  173. package/dist/run/worker/session.js +1 -0
  174. package/dist/run/worker/session.js.map +1 -1
  175. package/dist/telemetry/telemetry.d.ts +2 -3
  176. package/dist/telemetry/telemetry.d.ts.map +1 -1
  177. package/dist/telemetry/telemetry.js +2 -3
  178. package/dist/telemetry/telemetry.js.map +1 -1
  179. package/dist/types.d.ts +103 -35
  180. package/dist/types.d.ts.map +1 -1
  181. package/package.json +2 -6
  182. package/skills/e2e/SKILL.md +0 -2
  183. package/skills/e2e/references/agent.md +20 -12
  184. package/skills/e2e/references/debugging.md +3 -1
  185. package/skills/e2e/references/running.md +4 -3
  186. package/skills/e2e/references/setup.md +11 -9
  187. package/skills/e2e/references/writing-tests.md +6 -5
  188. package/dist/internal/trace.d.ts +0 -18
  189. package/dist/internal/trace.d.ts.map +0 -1
  190. package/dist/internal/trace.js +0 -46
  191. package/dist/internal/trace.js.map +0 -1
  192. package/dist/run/public.d.ts +0 -19
  193. package/dist/run/public.d.ts.map +0 -1
  194. package/dist/run/public.js +0 -11
  195. package/dist/run/public.js.map +0 -1
@@ -166,12 +166,14 @@ function formatNode(node, depth, redact, testIdAttribute) {
166
166
  /**
167
167
  * What the screen looks like, independent of which observation looked at it.
168
168
  *
169
- * Two things are dropped. Node ids, because they are minted per observation, so
170
- * two looks at a screen that has not moved would never render identically. And
171
- * the focus state, because focus moves on its own — the platform settling it
172
- * after load, a script claiming it, a widget stealing it — without the screen
173
- * having changed in any way a judgment could answer differently about. Leaving
174
- * it in meant a genuinely static screen could still spend a second model call.
169
+ * Three things are dropped. Node ids, because an engine may mint them per
170
+ * observation, so two looks at a screen that has not moved would never render
171
+ * identically. The focus state, because focus moves on its own — the platform
172
+ * settling it after load, a script claiming it, a widget stealing it — without
173
+ * the screen having changed in any way a judgment could answer differently
174
+ * about. And clock-like values, because a ticking clock or countdown would
175
+ * make every screen look changed: it would end the wait for an action's
176
+ * effect on the first tick and keep a settle from ever seeing two looks agree.
175
177
  *
176
178
  * Lives next to `formatNode` so the line grammar keeps one owner.
177
179
  */
@@ -181,11 +183,25 @@ export function observationShape(observation) {
181
183
  .replaceAll(/ \[([^\]]*)\]/g, (_match, states) => {
182
184
  const stable = states.split(' ').filter((state) => state !== 'focused');
183
185
  return stable.length === 0 ? '' : ` [${stable.join(' ')}]`;
184
- });
186
+ })
187
+ .replaceAll(CLOCK_PATTERN, '<time>');
185
188
  }
189
+ /** `12:05`, `0:59`, `23:59:59`: a value that changes on its own once a second or minute. */
190
+ const CLOCK_PATTERN = /\b\d{1,2}:\d{2}(?::\d{2})?\b/g;
186
191
  /** Poll interval and ceiling for shape-stability settling. */
187
192
  const SETTLE_POLL_MS = 75;
188
193
  const SETTLE_TIMEOUT_MS = 1_000;
194
+ /**
195
+ * How long a settle waits for the screen to move away from the shape an
196
+ * action was resolved against before accepting that the action changed
197
+ * nothing visible. A tap on a link starts a navigation that commits hundreds
198
+ * of milliseconds later; a client-side route change swaps the document body
199
+ * after a fetch; a submit renders its result after a round trip. Read too
200
+ * early, the observation is the old page, stable and wrong, and a model
201
+ * "repairs" what already worked. Bounded so a dead control costs one wait,
202
+ * not the step.
203
+ */
204
+ const CHANGE_WAIT_MS = 2_000;
189
205
  /**
190
206
  * Captures until the screen shape holds still, bounded by a short ceiling and
191
207
  * the step clock. An observation taken right after an action can be a
@@ -195,13 +211,34 @@ const SETTLE_TIMEOUT_MS = 1_000;
195
211
  * (act.ts) settles through this loop, and replay's pre-action looks and the
196
212
  * cache session's probes reach it through that same observe, so the pacing
197
213
  * can never drift between them.
214
+ *
215
+ * With `changedFrom`, the loop has two phases: first it waits for the shape
216
+ * to leave the pre-action one (a navigation committing, a route swapping the
217
+ * body, a submit rendering), then it waits for the new shape to hold still.
218
+ * A screen that never leaves the pre-action shape is returned as it is once
219
+ * the change wait runs out: the caller reports it unchanged rather than
220
+ * guessing.
198
221
  */
199
- export async function settleObservation(capture, shapeOf, clock) {
222
+ export async function settleObservation(capture, shapeOf, clock, options = {}) {
223
+ const pollMs = options.pollMs ?? SETTLE_POLL_MS;
224
+ const stableWaitMs = options.stableWaitMs ?? SETTLE_TIMEOUT_MS;
225
+ const changeWaitMs = options.changeWaitMs ?? CHANGE_WAIT_MS;
226
+ const transitional = options.transitional ?? (() => false);
200
227
  let value = await capture();
201
228
  let shape = shapeOf(value);
202
- const deadlineMs = Date.now() + SETTLE_TIMEOUT_MS;
203
- while (Date.now() < deadlineMs && clock.remainingMs() > SETTLE_POLL_MS) {
204
- await sleep(SETTLE_POLL_MS, clock.signal);
229
+ if (options.changedFrom !== undefined) {
230
+ const changeDeadlineMs = Date.now() + changeWaitMs;
231
+ while ((shape === options.changedFrom || transitional(value)) &&
232
+ Date.now() < changeDeadlineMs &&
233
+ clock.remainingMs() > pollMs) {
234
+ await sleep(pollMs, clock.signal);
235
+ value = await capture();
236
+ shape = shapeOf(value);
237
+ }
238
+ }
239
+ const deadlineMs = Date.now() + stableWaitMs;
240
+ while (Date.now() < deadlineMs && clock.remainingMs() > pollMs) {
241
+ await sleep(pollMs, clock.signal);
205
242
  value = await capture();
206
243
  const next = shapeOf(value);
207
244
  const stable = next === shape;
@@ -211,6 +248,14 @@ export async function settleObservation(capture, shapeOf, clock) {
211
248
  }
212
249
  return value;
213
250
  }
251
+ /**
252
+ * Whether an observation shows a screen in transition: nothing but the
253
+ * document itself, as a page reads between the old body being torn down and
254
+ * the new one arriving. Acting or judging on it would be acting on nothing.
255
+ */
256
+ export function isTransitionalObservation(observation) {
257
+ return observation.nodes.size <= 1;
258
+ }
214
259
  function indexNodes(node, into, parents) {
215
260
  into.set(node.ref.id, node);
216
261
  for (const child of node.children ?? []) {
@@ -1 +1 @@
1
- {"version":3,"file":"observation.js","sourceRoot":"","sources":["../../src/agent/observation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observation.js","sourceRoot":"","sources":["../../src/agent/observation.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * these, so event recording, `--debug` buckets, tracing, deadline semantics,
5
5
  * and observation race-hardening cannot drift between the two paths.
6
6
  */
7
- import { type Observation, type OperationContext } from '../engine/surface.ts';
7
+ import type { Observation, OperationContext } from '../engine/surface.ts';
8
8
  import type { DebugTrace } from '../internal/debug.ts';
9
9
  import { type Deadline } from '../internal/time.ts';
10
10
  import type { LocatorEngine } from '../locator/engine.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"phases.d.ts","sourceRoot":"","sources":["../../src/agent/phases.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAe,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAA2B,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/D;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,QAAQ,GACjB,gBAAgB,CAElB;AAED,wEAAwE;AACxE,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,SAAS,GAAG,QAAQ,EAC9B,IAAI,CAAC,EAAE,MAAM,GACZ,IAAI,CAUN;AAED,uEAAuE;AACvE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CACzC;AAED,uFAAuF;AACvF,MAAM,WAAW,SAAS;IACxB,kEAAkE;IAClE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,aAAa,GAAG,cAAc,GAAG,aAAa,CAAC;IACjF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,KAAK,EACzC,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAC1B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,SAAS,CAAC,GAC5C,OAAO,CAAC,KAAK,CAAC,CAyChB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,IAAI,CAYP;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACxE,QAAQ,CAAC,SAAS,EAAE,MAAM,gBAAgB,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,WAAW,CAAC,CAevB"}
1
+ {"version":3,"file":"phases.d.ts","sourceRoot":"","sources":["../../src/agent/phases.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAA2B,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/D;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,QAAQ,GACjB,gBAAgB,CAElB;AAED,wEAAwE;AACxE,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,SAAS,GAAG,QAAQ,EAC9B,IAAI,CAAC,EAAE,MAAM,GACZ,IAAI,CAUN;AAED,uEAAuE;AACvE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CACzC;AAED,uFAAuF;AACvF,MAAM,WAAW,SAAS;IACxB,kEAAkE;IAClE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,aAAa,GAAG,cAAc,GAAG,aAAa,CAAC;IACjF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,KAAK,EACzC,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAC1B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,SAAS,CAAC,GAC5C,OAAO,CAAC,KAAK,CAAC,CA6BhB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,IAAI,CAYP;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACxE,QAAQ,CAAC,SAAS,EAAE,MAAM,gBAAgB,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,WAAW,CAAC,CAgBvB"}
@@ -4,11 +4,9 @@
4
4
  * these, so event recording, `--debug` buckets, tracing, deadline semantics,
5
5
  * and observation race-hardening cannot drift between the two paths.
6
6
  */
7
- import { EngineError } from '../engine/surface.js';
8
- import { E2EError } from '../internal/errors.js';
7
+ import { asEngineError, E2EError } from '../internal/errors.js';
9
8
  import { timestamp } from '../internal/ids.js';
10
9
  import { POLL_INTERVAL_MS, sleep } from '../internal/time.js';
11
- import { agentTrace } from '../internal/trace.js';
12
10
  import { AgentError, toAgentError } from './error.js';
13
11
  /**
14
12
  * One engine operation's budget: `actionTimeout`, capped by the step clock.
@@ -40,7 +38,6 @@ export function recordPolicyEvent(steps, name, decision, code) {
40
38
  export async function instrumentPhase(host, spec, body, detail) {
41
39
  const startedAt = timestamp();
42
40
  const startedMs = Date.now();
43
- const label = spec.name === undefined ? spec.kind : `${spec.kind}:${spec.name}`;
44
41
  try {
45
42
  const value = await body();
46
43
  const eventDetail = detail?.(value);
@@ -52,9 +49,6 @@ export async function instrumentPhase(host, spec, body, detail) {
52
49
  ...(spec.name === undefined ? {} : { name: spec.name }),
53
50
  ...eventDetail,
54
51
  });
55
- agentTrace(() => `${spec.api} ${label} passed ${Date.now() - startedMs}ms` +
56
- `${eventDetail?.count !== undefined ? ` count=${eventDetail.count}` : ''}` +
57
- `${eventDetail?.bytes !== undefined ? ` bytes=${eventDetail.bytes}` : ''}`);
58
52
  return value;
59
53
  }
60
54
  catch (cause) {
@@ -67,8 +61,6 @@ export async function instrumentPhase(host, spec, body, detail) {
67
61
  ...(spec.name === undefined ? {} : { name: spec.name }),
68
62
  code: phaseErrorCode(cause),
69
63
  });
70
- agentTrace(() => `${spec.api} ${label} failed ${Date.now() - startedMs}ms ` +
71
- `${phaseErrorCode(cause)}: ${cause instanceof Error ? cause.message : String(cause)}`);
72
64
  throw error;
73
65
  }
74
66
  finally {
@@ -101,24 +93,30 @@ export function checkStepClock(options) {
101
93
  * timeout rather than whichever transport error the truncated budget produced.
102
94
  */
103
95
  export async function retryingObserve(options) {
104
- for (let attempt = 1;; attempt += 1) {
96
+ for (;;) {
105
97
  try {
106
98
  return await options.observe(options.operation());
107
99
  }
108
100
  catch (cause) {
109
101
  options.guard(cause);
110
- if (!(cause instanceof EngineError && cause.retryable)) {
102
+ // Structural, not instanceof: an engine a config file imported lives in
103
+ // another module registry, and its retryable race would otherwise fail
104
+ // the observation the moment a page navigates under it.
105
+ const engineError = asEngineError(cause);
106
+ if (engineError === undefined || !engineError.retryable) {
111
107
  throw cause;
112
108
  }
113
- agentTrace(() => `${options.api} observation attempt ${attempt} raced the screen: ${cause.code}`);
114
109
  await sleep(POLL_INTERVAL_MS, options.signal);
115
110
  }
116
111
  }
117
112
  }
118
- /** Event code for a failed phase: the runner code, or the error's name. */
113
+ /** Event code for a failed phase: the runner or engine code, or the error's name. */
119
114
  function phaseErrorCode(cause) {
120
115
  if (cause instanceof E2EError)
121
116
  return cause.code;
117
+ const engineError = asEngineError(cause);
118
+ if (engineError !== undefined)
119
+ return engineError.code;
122
120
  return cause instanceof Error ? cause.name : 'ERROR';
123
121
  }
124
122
  //# sourceMappingURL=phases.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"phases.js","sourceRoot":"","sources":["../../src/agent/phases.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phases.js","sourceRoot":"","sources":["../../src/agent/phases.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,9 @@
10
10
  */
11
11
  import type { StepResult, Tool, ToolSet } from 'ai';
12
12
  import { type StepExecutorContext, type StepVerdict } from './executor.ts';
13
+ import { ScreenPresenter } from './screen-update.ts';
13
14
  /** The verdict rules the built-in agent appends to its instructions. */
14
- export declare const VERDICT_RULES = "Verdict rules:\n- When the step's goal is achieved, or you are certain it cannot be, call complete_step exactly once.\n- Verify outcomes with your tools before concluding; never guess success.\n- \"passed\" means the application behaved as the step required. \"failed\" means it did not. \"blocked\" means credentials, the environment, or test setup prevented a product verdict \u2014 blocked says nothing about the product and requires an errorCode.";
15
+ export declare const VERDICT_RULES = "Verdict rules:\n- When the step's goal is achieved, or you are certain it cannot be, call complete_step exactly once.\n- Conclude from the newest screen and changes already in this conversation; never guess success. Observe again before concluding only when the newest result shows work still in progress (a spinner, \"Saving\u2026\", a pending state).\n- \"passed\" means the application behaved as the step required. \"failed\" means it did not. \"blocked\" means credentials, the environment, or test setup prevented a product verdict \u2014 blocked says nothing about the product and requires an errorCode.";
15
16
  /** The conclusion tool and the verdict it collected. */
16
17
  export interface VerdictTool {
17
18
  /** The `complete_step` tool; add it to the toolset under that name. */
@@ -35,12 +36,23 @@ export interface GrammarToolOptions {
35
36
  * instead turns it into text and ends the loop.
36
37
  */
37
38
  readonly guard?: (body: () => Promise<string>) => Promise<string>;
39
+ /**
40
+ * Renders screens for the model and remembers what it has seen, so every
41
+ * result after the first reports the changes rather than the whole tree.
42
+ * Shared with the opening prompt by `createAgent`; a fresh one per step
43
+ * otherwise.
44
+ */
45
+ readonly screen?: ScreenPresenter;
38
46
  }
39
47
  /**
40
48
  * AI SDK tools over the harness action grammar, limited to the verbs the
41
49
  * target's engine declared. A verb the surface cannot honor is not offered
42
50
  * at all, so the model never learns vocabulary it can only be rejected on.
43
- * Every mutating tool returns the updated screen.
51
+ *
52
+ * Every action returns what it changed on screen. Tool bodies run one at a
53
+ * time in call order, action and its look at the result together, so a turn
54
+ * that batches several actions gets one coherent result per action rather
55
+ * than every result describing the state after the last one.
44
56
  */
45
57
  export declare function createGrammarTools(context: StepExecutorContext, options?: GrammarToolOptions): ToolSet;
46
58
  /** Step handlers that report every model round trip to the harness budgets. */
@@ -1 +1 @@
1
- {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/agent/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpD,OAAO,EAAmB,KAAK,mBAAmB,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAsB5F,wEAAwE;AACxE,eAAO,MAAM,aAAa,ucAG4N,CAAC;AAcvP,wDAAwD;AACxD,MAAM,WAAW,WAAW;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,uEAAuE;IACvE,OAAO,IAAI,WAAW,GAAG,SAAS,CAAC;IACnC,yEAAyE;IACzE,SAAS,IAAI,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CA0C/C;AAED,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACnE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAsHT;AAED,+EAA+E;AAC/E,MAAM,WAAW,gBAAgB;IAC/B,sEAAsE;IACtE,WAAW,IAAI,IAAI,CAAC;IACpB;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,kBAAkB,CAAC,GAAG,IAAI,CAAC;CAChF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,CAAC,EAAE;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAChE,gBAAgB,CAkBlB"}
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/agent/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpD,OAAO,EAAsC,KAAK,mBAAmB,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAE/G,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AA2CrD,wEAAwE;AACxE,eAAO,MAAM,aAAa,umBAG4N,CAAC;AAcvP,wDAAwD;AACxD,MAAM,WAAW,WAAW;IAC1B,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,uEAAuE;IACvE,OAAO,IAAI,WAAW,GAAG,SAAS,CAAC;IACnC,yEAAyE;IACzE,SAAS,IAAI,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CA4C/C;AAED,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;CACnC;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAuJT;AAED,+EAA+E;AAC/E,MAAM,WAAW,gBAAgB;IAC/B,sEAAsE;IACtE,WAAW,IAAI,IAAI,CAAC;IACpB;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,kBAAkB,CAAC,GAAG,IAAI,CAAC;CAChF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,CAAC,EAAE;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAChE,gBAAgB,CAmBlB"}
@@ -9,8 +9,9 @@
9
9
  * the module is safe to import from a config that never calls a model.
10
10
  */
11
11
  import { z } from 'zod';
12
- import { BLOCKABLE_CODES } from './executor.js';
12
+ import { isRuntimeHardStop, BLOCKABLE_CODES } from './executor.js';
13
13
  import { readCost } from './model/sdk.js';
14
+ import { ScreenPresenter } from './screen-update.js';
14
15
  /** Codes the model may pick when concluding; runtime codes are runtime-assigned. */
15
16
  const MODEL_ERROR_CODES = [
16
17
  'ACTION_FAILED',
@@ -26,12 +27,30 @@ const MODEL_ERROR_CODES = [
26
27
  'APP_NOT_OPEN',
27
28
  'POLICY_DENIED',
28
29
  ];
30
+ /**
31
+ * Ceiling on a verdict summary. Generous on purpose: the summary is a
32
+ * handoff, and a long one is bounded again by the ledger, whereas a schema
33
+ * that rejects it costs a repair turn — a page-narrating model paid one on a
34
+ * third of its steps at a 500-character cap. The description asks for less.
35
+ */
36
+ const MAX_VERDICT_SUMMARY_CHARS = 2_000;
37
+ /** Screens one scroll call may move; a windowed list of thousands of rows still needs a better verb. */
38
+ const MAX_SCROLL_TIMES = 5;
39
+ /**
40
+ * Keys whose whole effect is where the focus or the caret sits, which the
41
+ * tree does not record. An unchanged screen after one of these is the normal
42
+ * outcome, not a control that did nothing.
43
+ */
44
+ const FOCUS_ONLY_KEYS = /^(?:(?:Shift|Control|Alt|Meta)\+)*(?:Tab|Arrow(?:Left|Right|Up|Down)|Home|End|PageUp|PageDown)$/i;
45
+ function movesFocusOnly(key) {
46
+ return FOCUS_ONLY_KEYS.test(key.trim());
47
+ }
29
48
  /** The model-pickable codes a blocked verdict accepts; derived, never restated. */
30
49
  const MODEL_BLOCKABLE_CODES = MODEL_ERROR_CODES.filter((code) => BLOCKABLE_CODES.has(code));
31
50
  /** The verdict rules the built-in agent appends to its instructions. */
32
51
  export const VERDICT_RULES = `Verdict rules:
33
52
  - When the step's goal is achieved, or you are certain it cannot be, call complete_step exactly once.
34
- - Verify outcomes with your tools before concluding; never guess success.
53
+ - Conclude from the newest screen and changes already in this conversation; never guess success. Observe again before concluding only when the newest result shows work still in progress (a spinner, "Saving…", a pending state).
35
54
  - "passed" means the application behaved as the step required. "failed" means it did not. "blocked" means credentials, the environment, or test setup prevented a product verdict — blocked says nothing about the product and requires an errorCode.`;
36
55
  /**
37
56
  * A plain AI SDK function tool with its input typed from the schema — what
@@ -54,8 +73,8 @@ export function createVerdictTool() {
54
73
  summary: z
55
74
  .string()
56
75
  .min(1)
57
- .max(500)
58
- .describe('What you did and what you saw, in plain language'),
76
+ .max(MAX_VERDICT_SUMMARY_CHARS)
77
+ .describe('One to three sentences for the next step: what you did, what the screen shows now, and any value it will need (a name or id you created, a message you saw). No page narration; under 400 characters.'),
59
78
  errorCode: z.enum(MODEL_ERROR_CODES).optional(),
60
79
  }),
61
80
  execute: async (input) => {
@@ -88,110 +107,134 @@ export function createVerdictTool() {
88
107
  * AI SDK tools over the harness action grammar, limited to the verbs the
89
108
  * target's engine declared. A verb the surface cannot honor is not offered
90
109
  * at all, so the model never learns vocabulary it can only be rejected on.
91
- * Every mutating tool returns the updated screen.
110
+ *
111
+ * Every action returns what it changed on screen. Tool bodies run one at a
112
+ * time in call order, action and its look at the result together, so a turn
113
+ * that batches several actions gets one coherent result per action rather
114
+ * than every result describing the state after the last one.
92
115
  */
93
116
  export function createGrammarTools(context, options = {}) {
94
117
  const guard = options.guard ?? ((body) => body());
118
+ const screen = options.screen ?? new ScreenPresenter();
95
119
  const { verbs } = context.target;
96
- /** Re-observes after a mutating action so the model always sees the result. */
97
- const acted = async (description) => {
98
- const observation = await context.observe();
99
- return `${description}\n\nUpdated screen (revision ${observation.revision}):\n${observation.text}`;
120
+ // The chain is always already settled-to-undefined, so a failed body
121
+ // reaches its own caller and never poisons the queue (same idiom as the
122
+ // dispatch's own serialization).
123
+ let chain = Promise.resolve();
124
+ const inOrder = (body) => {
125
+ const run = chain.then(body);
126
+ chain = run.then(() => undefined, () => undefined);
127
+ return run;
100
128
  };
101
- const target = z.string().min(1).describe('Node id from the newest observation, e.g. "n42"');
129
+ /**
130
+ * Performs one action and reads its result. A failed action still returns
131
+ * the screen, so the model can act on a stale-id or not-found failure at
132
+ * once instead of spending a turn to observe; runtime hard stops propagate
133
+ * to the guard, which ends the loop. The guard runs inside the queue, so a
134
+ * batched call that queued behind a hard stop or a verdict is skipped when
135
+ * its turn comes rather than acted on because it was queued in time.
136
+ */
137
+ const acting = (description, action, expectChange = true) => inOrder(() => guard(async () => {
138
+ try {
139
+ await action();
140
+ }
141
+ catch (cause) {
142
+ if (isRuntimeHardStop(cause))
143
+ throw cause;
144
+ const message = cause instanceof Error ? cause.message : String(cause);
145
+ const observation = await context.observe();
146
+ return screen.update(observation, { lead: `${description} failed: ${message}` });
147
+ }
148
+ const observation = await context.observe();
149
+ return screen.update(observation, { lead: description, expectChange });
150
+ }));
151
+ const target = z
152
+ .string()
153
+ .min(1)
154
+ .describe('Node id from any screen in this conversation that is still present, e.g. "n42"');
102
155
  const tools = {
103
156
  observe: schemaTool({
104
- description: 'Capture a fresh observation of the current screen without acting.',
157
+ description: 'Look at the screen again and get what changed since the screen you last received. Action results already include their changes, so call this only after waiting for something in progress, never right after an action.',
105
158
  inputSchema: z.object({}),
106
- execute: () => guard(async () => {
107
- const observation = await context.observe();
108
- return `Current screen (revision ${observation.revision}):\n${observation.text}`;
109
- }),
159
+ execute: () => inOrder(() => guard(async () => screen.update(await context.observe()))),
110
160
  }),
111
161
  };
112
162
  if (verbs.has('tap')) {
113
163
  tools['tap'] = schemaTool({
114
- description: 'Tap or click one node.',
164
+ description: 'Tap or click one node. The result waits for the effect (a navigation, a route change, a submit) and reports what changed.',
115
165
  inputSchema: z.object({ target }),
116
- execute: ({ target: id }) => guard(async () => {
117
- await context.actions.tap({ id });
118
- return acted(`Tapped #${id}.`);
119
- }),
166
+ execute: ({ target: id }) => acting(`Tapped #${id}.`, () => context.actions.tap({ id })),
120
167
  });
121
168
  }
122
169
  if (verbs.has('type')) {
123
170
  tools['type'] = schemaTool({
124
- description: 'Type a plain-text value into one input node. Replaces the current value.',
171
+ description: 'Type a plain-text value into one input node, replacing its current value. Several fields can be typed in one turn.',
125
172
  inputSchema: z.object({ target, value: z.string() }),
126
- execute: ({ target: id, value }) => guard(async () => {
127
- await context.actions.type({ id }, value);
128
- return acted(`Typed into #${id}.`);
129
- }),
173
+ execute: ({ target: id, value }) => acting(`Typed into #${id}.`, () => context.actions.type({ id }, value)),
130
174
  });
131
175
  }
132
176
  if (verbs.has('press')) {
133
177
  tools['press'] = schemaTool({
134
178
  description: 'Send one key (e.g. "Enter", "Escape", "Tab") to one node.',
135
179
  inputSchema: z.object({ target, key: z.string().min(1).max(64) }),
136
- execute: ({ target: id, key }) => guard(async () => {
137
- await context.actions.press({ id }, key);
138
- return acted(`Pressed ${key} on #${id}.`);
139
- }),
180
+ execute: ({ target: id, key }) => acting(`Pressed ${key} on #${id}.`, () => context.actions.press({ id }, key), !movesFocusOnly(key)),
140
181
  });
141
182
  }
142
183
  if (verbs.has('select')) {
143
184
  tools['select'] = schemaTool({
144
185
  description: 'Pick one option from a select-like control by its visible label.',
145
186
  inputSchema: z.object({ target, value: z.string().min(1) }),
146
- execute: ({ target: id, value }) => guard(async () => {
147
- await context.actions.select({ id }, value);
148
- return acted(`Selected "${value}" in #${id}.`);
149
- }),
187
+ execute: ({ target: id, value }) => acting(`Selected "${value}" in #${id}.`, () => context.actions.select({ id }, value)),
150
188
  });
151
189
  }
152
190
  if (verbs.has('scroll')) {
153
191
  const direction = z.enum(['up', 'down', 'left', 'right']);
192
+ const times = z
193
+ .number()
194
+ .int()
195
+ .min(1)
196
+ .max(MAX_SCROLL_TIMES)
197
+ .optional()
198
+ .describe(`How many screens to scroll in this one call, 1 to ${String(MAX_SCROLL_TIMES)}; default 1. Use more to move far down a long list or feed.`);
199
+ // Each repeat is one recorded action against the budget, paced like a
200
+ // separate call, so a lazy list gets to render between screens.
201
+ const scrolling = async (way, id, count) => {
202
+ for (let repeat = 0; repeat < count; repeat += 1) {
203
+ await context.actions.scroll(way, id === undefined ? undefined : { id });
204
+ if (repeat < count - 1)
205
+ await context.observe();
206
+ }
207
+ };
208
+ const scrolled = (way, count) => count === 1 ? `Scrolled ${way}.` : `Scrolled ${way} ${String(count)} screens.`;
154
209
  // Node-targeted scrolling rides `perform`; without it only the viewport scrolls.
155
210
  tools['scroll'] = verbs.has('tap')
156
211
  ? schemaTool({
157
- description: 'Scroll the viewport, or one scrollable node when target is given.',
158
- inputSchema: z.object({ direction, target: target.optional() }),
159
- execute: ({ direction: way, target: id }) => guard(async () => {
160
- await context.actions.scroll(way, id === undefined ? undefined : { id });
161
- return acted(`Scrolled ${way}.`);
162
- }),
212
+ description: 'Scroll the viewport, or one scrollable node when target is given. The result reports the rows that came into or left the tree.',
213
+ inputSchema: z.object({ direction, target: target.optional(), times }),
214
+ execute: ({ direction: way, target: id, times: count }) => acting(scrolled(way, count ?? 1), () => scrolling(way, id, count ?? 1), false),
163
215
  })
164
216
  : schemaTool({
165
- description: 'Scroll the viewport.',
166
- inputSchema: z.object({ direction }),
167
- execute: ({ direction: way }) => guard(async () => {
168
- await context.actions.scroll(way);
169
- return acted(`Scrolled ${way}.`);
170
- }),
217
+ description: 'Scroll the viewport. The result reports the rows that came into or left the tree.',
218
+ inputSchema: z.object({ direction, times }),
219
+ execute: ({ direction: way, times: count }) => acting(scrolled(way, count ?? 1), () => scrolling(way, undefined, count ?? 1), false),
171
220
  });
172
221
  }
173
222
  if (verbs.has('navigate')) {
174
223
  tools['navigate'] = schemaTool({
175
224
  description: 'Navigate to a URL or app-relative path within the allowed origins.',
176
225
  inputSchema: z.object({ url: z.string().min(1) }),
177
- execute: ({ url }) => guard(async () => {
178
- await context.actions.navigate(url);
179
- return acted(`Navigated to ${url}.`);
180
- }),
226
+ execute: ({ url }) => acting(`Navigated to ${url}.`, () => context.actions.navigate(url)),
181
227
  });
182
228
  }
183
229
  // Offered only when the step declared secrets and the surface can fill: an
184
230
  // empty vocabulary is better than a tool the model can only be rejected on.
185
231
  if (verbs.has('typeSecret') && context.step.secrets.length > 0) {
186
232
  tools['type_secret'] = schemaTool({
187
- description: 'Fill one declared secret credential into a secure input field; the plaintext never passes through you. Available: ' +
233
+ description: 'Fill one declared secret credential into a secure input field; the plaintext never passes through you and never shows on screen. Available: ' +
188
234
  context.step.secrets.map((secret) => `"${secret.name}" (${secret.purpose})`).join(', ') +
189
235
  '.',
190
236
  inputSchema: z.object({ target, name: z.string().min(1) }),
191
- execute: ({ target: id, name }) => guard(async () => {
192
- await context.actions.typeSecret({ id }, name);
193
- return acted(`Filled secret "${name}" into #${id}.`);
194
- }),
237
+ execute: ({ target: id, name }) => acting(`Filled secret "${name}" into #${id}; secure values never show on screen.`, () => context.actions.typeSecret({ id }, name), false),
195
238
  });
196
239
  }
197
240
  return tools;
@@ -211,6 +254,7 @@ export function trackModelCalls(context, model) {
211
254
  context.budgets.recordModelCall({
212
255
  ...(step.usage.inputTokens === undefined ? {} : { inputTokens: step.usage.inputTokens }),
213
256
  ...(step.usage.outputTokens === undefined ? {} : { outputTokens: step.usage.outputTokens }),
257
+ startedAt: new Date(turnStartedMs).toISOString(),
214
258
  durationMs: Date.now() - turnStartedMs,
215
259
  ...(typeof model?.provider === 'string' ? { provider: model.provider } : {}),
216
260
  ...(typeof model?.modelId === 'string' ? { modelId: model.modelId } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/agent/primitives.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/agent/primitives.ts"],"names":[],"mappings":"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"}