@e2edev/e2e 0.12.0 → 0.14.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.
- package/README.md +4 -4
- package/dist/agent/act.d.ts +13 -7
- package/dist/agent/act.d.ts.map +1 -1
- package/dist/agent/act.js +125 -730
- package/dist/agent/act.js.map +1 -1
- package/dist/agent/action-dispatcher.d.ts +98 -0
- package/dist/agent/action-dispatcher.d.ts.map +1 -0
- package/dist/agent/action-dispatcher.js +319 -0
- package/dist/agent/action-dispatcher.js.map +1 -0
- package/dist/agent/actions.d.ts +16 -1
- package/dist/agent/actions.d.ts.map +1 -1
- package/dist/agent/actions.js +5 -1
- package/dist/agent/actions.js.map +1 -1
- package/dist/agent/default-agent.d.ts +1 -1
- package/dist/agent/default-agent.d.ts.map +1 -1
- package/dist/agent/default-agent.js +30 -9
- package/dist/agent/default-agent.js.map +1 -1
- package/dist/agent/error.d.ts.map +1 -1
- package/dist/agent/error.js +1 -0
- package/dist/agent/error.js.map +1 -1
- package/dist/agent/executor.d.ts +33 -5
- package/dist/agent/executor.d.ts.map +1 -1
- package/dist/agent/executor.js.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/invocation.d.ts +4 -9
- package/dist/agent/invocation.d.ts.map +1 -1
- package/dist/agent/invocation.js +1 -6
- package/dist/agent/invocation.js.map +1 -1
- package/dist/agent/model/sdk.d.ts +1 -1
- package/dist/agent/model/sdk.js +1 -1
- package/dist/agent/observation-feed.d.ts +123 -0
- package/dist/agent/observation-feed.d.ts.map +1 -0
- package/dist/agent/observation-feed.js +281 -0
- package/dist/agent/observation-feed.js.map +1 -0
- package/dist/agent/observation.d.ts +14 -1
- package/dist/agent/observation.d.ts.map +1 -1
- package/dist/agent/observation.js +58 -2
- package/dist/agent/observation.js.map +1 -1
- package/dist/agent/operation-queue.d.ts +21 -0
- package/dist/agent/operation-queue.d.ts.map +1 -0
- package/dist/agent/operation-queue.js +27 -0
- package/dist/agent/operation-queue.js.map +1 -0
- package/dist/agent/phases.js +1 -1
- package/dist/agent/phases.js.map +1 -1
- package/dist/agent/pixels.d.ts +21 -0
- package/dist/agent/pixels.d.ts.map +1 -0
- package/dist/agent/pixels.js +85 -0
- package/dist/agent/pixels.js.map +1 -0
- package/dist/agent/point-tap.d.ts +52 -0
- package/dist/agent/point-tap.d.ts.map +1 -0
- package/dist/agent/point-tap.js +88 -0
- package/dist/agent/point-tap.js.map +1 -0
- package/dist/agent/primitives.d.ts +7 -1
- package/dist/agent/primitives.d.ts.map +1 -1
- package/dist/agent/primitives.js +99 -27
- package/dist/agent/primitives.js.map +1 -1
- package/dist/agent/replay.d.ts +8 -3
- package/dist/agent/replay.d.ts.map +1 -1
- package/dist/agent/replay.js +44 -15
- package/dist/agent/replay.js.map +1 -1
- package/dist/agent/screen-update.d.ts +50 -18
- package/dist/agent/screen-update.d.ts.map +1 -1
- package/dist/agent/screen-update.js +76 -94
- package/dist/agent/screen-update.js.map +1 -1
- package/dist/agent/secrets.d.ts.map +1 -1
- package/dist/agent/secrets.js +13 -9
- package/dist/agent/secrets.js.map +1 -1
- package/dist/agent/step-accounting.d.ts +106 -0
- package/dist/agent/step-accounting.d.ts.map +1 -0
- package/dist/agent/step-accounting.js +216 -0
- package/dist/agent/step-accounting.js.map +1 -0
- package/dist/agent/step-cache.d.ts.map +1 -1
- package/dist/agent/step-cache.js +2 -2
- package/dist/agent/step-cache.js.map +1 -1
- package/dist/agent/tool-loop.d.ts.map +1 -1
- package/dist/agent/tool-loop.js +9 -2
- package/dist/agent/tool-loop.js.map +1 -1
- package/dist/agent/transcript-compaction.d.ts +38 -0
- package/dist/agent/transcript-compaction.d.ts.map +1 -0
- package/dist/agent/transcript-compaction.js +165 -0
- package/dist/agent/transcript-compaction.js.map +1 -0
- package/dist/cache/recorder.d.ts.map +1 -1
- package/dist/cache/recorder.js +20 -0
- package/dist/cache/recorder.js.map +1 -1
- package/dist/cache/trace.d.ts +28 -1
- package/dist/cache/trace.d.ts.map +1 -1
- package/dist/cache/trace.js +44 -0
- package/dist/cache/trace.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +55 -32
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/engine-versions.json +1 -1
- package/dist/cli/init/engines.d.ts +29 -10
- package/dist/cli/init/engines.d.ts.map +1 -1
- package/dist/cli/init/engines.js +34 -12
- package/dist/cli/init/engines.js.map +1 -1
- package/dist/cli/init/gateways.js +3 -3
- package/dist/cli/init/mcp-config.js +1 -1
- package/dist/cli/init/mcp-config.js.map +1 -1
- package/dist/cli/init/scaffold.d.ts.map +1 -1
- package/dist/cli/init/scaffold.js +1 -3
- package/dist/cli/init/scaffold.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +3 -2
- package/dist/cli/init.js.map +1 -1
- package/dist/collect/collect.d.ts +8 -3
- package/dist/collect/collect.d.ts.map +1 -1
- package/dist/collect/collect.js +29 -5
- package/dist/collect/collect.js.map +1 -1
- package/dist/collect/registry.d.ts +20 -5
- package/dist/collect/registry.d.ts.map +1 -1
- package/dist/collect/registry.js +139 -54
- package/dist/collect/registry.js.map +1 -1
- package/dist/collect/select.js +3 -1
- package/dist/collect/select.js.map +1 -1
- package/dist/config/agent.d.ts +1 -7
- package/dist/config/agent.d.ts.map +1 -1
- package/dist/config/agent.js +5 -8
- package/dist/config/agent.js.map +1 -1
- package/dist/config/app.d.ts +24 -2
- package/dist/config/app.d.ts.map +1 -1
- package/dist/config/app.js +82 -15
- package/dist/config/app.js.map +1 -1
- package/dist/config/diagnose.d.ts.map +1 -1
- package/dist/config/diagnose.js +2 -0
- package/dist/config/diagnose.js.map +1 -1
- package/dist/config/resolve.d.ts +26 -3
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +66 -23
- package/dist/config/resolve.js.map +1 -1
- package/dist/config/secrets.d.ts +89 -0
- package/dist/config/secrets.d.ts.map +1 -0
- package/dist/config/secrets.js +67 -0
- package/dist/config/secrets.js.map +1 -0
- package/dist/engine/contract.d.ts +17 -2
- package/dist/engine/contract.d.ts.map +1 -1
- package/dist/engine/contract.js.map +1 -1
- package/dist/engine/index.d.ts +18 -4
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +8 -0
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/session.d.ts.map +1 -1
- package/dist/engine/session.js +3 -0
- package/dist/engine/session.js.map +1 -1
- package/dist/engine/surface.d.ts +6 -2
- package/dist/engine/surface.d.ts.map +1 -1
- package/dist/engine/surface.js.map +1 -1
- package/dist/expect/attempt.d.ts +15 -0
- package/dist/expect/attempt.d.ts.map +1 -0
- package/dist/expect/attempt.js +33 -0
- package/dist/expect/attempt.js.map +1 -0
- package/dist/expect/index.d.ts +7 -5
- package/dist/expect/index.d.ts.map +1 -1
- package/dist/expect/index.js +8 -1
- package/dist/expect/index.js.map +1 -1
- package/dist/expect/poll.d.ts +5 -0
- package/dist/expect/poll.d.ts.map +1 -0
- package/dist/expect/poll.js +118 -0
- package/dist/expect/poll.js.map +1 -0
- package/dist/expect/values.d.ts.map +1 -1
- package/dist/expect/values.js +6 -1
- package/dist/expect/values.js.map +1 -1
- package/dist/explore/body.d.ts.map +1 -1
- package/dist/explore/body.js +3 -1
- package/dist/explore/body.js.map +1 -1
- package/dist/explore/executor.js +16 -11
- package/dist/explore/executor.js.map +1 -1
- package/dist/explore/index.d.ts +3 -2
- package/dist/explore/index.d.ts.map +1 -1
- package/dist/explore/index.js +5 -5
- package/dist/explore/index.js.map +1 -1
- package/dist/explore/plan.d.ts.map +1 -1
- package/dist/explore/plan.js +16 -5
- package/dist/explore/plan.js.map +1 -1
- package/dist/explore/progress.d.ts +43 -0
- package/dist/explore/progress.d.ts.map +1 -0
- package/dist/explore/progress.js +9 -0
- package/dist/explore/progress.js.map +1 -0
- package/dist/explore/state.d.ts +13 -12
- package/dist/explore/state.d.ts.map +1 -1
- package/dist/explore/state.js +28 -11
- package/dist/explore/state.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/brands.d.ts +2 -0
- package/dist/internal/brands.d.ts.map +1 -1
- package/dist/internal/brands.js +2 -0
- package/dist/internal/brands.js.map +1 -1
- package/dist/internal/geometry.d.ts +13 -0
- package/dist/internal/geometry.d.ts.map +1 -0
- package/dist/internal/geometry.js +16 -0
- package/dist/internal/geometry.js.map +1 -0
- package/dist/internal/urls.d.ts +6 -0
- package/dist/internal/urls.d.ts.map +1 -1
- package/dist/internal/urls.js +28 -0
- package/dist/internal/urls.js.map +1 -1
- package/dist/locator/engine.d.ts.map +1 -1
- package/dist/locator/engine.js +1 -0
- package/dist/locator/engine.js.map +1 -1
- package/dist/mcp/catalog.d.ts +5 -4
- package/dist/mcp/catalog.d.ts.map +1 -1
- package/dist/mcp/catalog.js +5 -36
- package/dist/mcp/catalog.js.map +1 -1
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session.d.ts +1 -1
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +12 -6
- package/dist/mcp/session.js.map +1 -1
- package/dist/report/builtin.d.ts +14 -0
- package/dist/report/builtin.d.ts.map +1 -0
- package/dist/report/builtin.js +22 -0
- package/dist/report/builtin.js.map +1 -0
- package/dist/report/explore-text.d.ts +17 -0
- package/dist/report/explore-text.d.ts.map +1 -0
- package/dist/report/explore-text.js +37 -0
- package/dist/report/explore-text.js.map +1 -0
- package/dist/report/format.d.ts +2 -0
- package/dist/report/format.d.ts.map +1 -1
- package/dist/report/format.js +1 -1
- package/dist/report/format.js.map +1 -1
- package/dist/report/junit.d.ts +2 -4
- package/dist/report/junit.d.ts.map +1 -1
- package/dist/report/junit.js +7 -40
- package/dist/report/junit.js.map +1 -1
- package/dist/report/list-explore.d.ts +109 -0
- package/dist/report/list-explore.d.ts.map +1 -0
- package/dist/report/list-explore.js +368 -0
- package/dist/report/list-explore.js.map +1 -0
- package/dist/report/list.d.ts +21 -0
- package/dist/report/list.d.ts.map +1 -1
- package/dist/report/list.js +79 -3
- package/dist/report/list.js.map +1 -1
- package/dist/report/markdown.d.ts +39 -0
- package/dist/report/markdown.d.ts.map +1 -0
- package/dist/report/markdown.js +426 -0
- package/dist/report/markdown.js.map +1 -0
- package/dist/report/outcome.d.ts +29 -0
- package/dist/report/outcome.d.ts.map +1 -0
- package/dist/report/outcome.js +36 -0
- package/dist/report/outcome.js.map +1 -0
- package/dist/report/running-tree.d.ts +7 -7
- package/dist/report/running-tree.d.ts.map +1 -1
- package/dist/report/running-tree.js +12 -13
- package/dist/report/running-tree.js.map +1 -1
- package/dist/report/write.d.ts +10 -1
- package/dist/report/write.d.ts.map +1 -1
- package/dist/report/write.js +22 -1
- package/dist/report/write.js.map +1 -1
- package/dist/run/app-ports.d.ts +17 -0
- package/dist/run/app-ports.d.ts.map +1 -0
- package/dist/run/app-ports.js +74 -0
- package/dist/run/app-ports.js.map +1 -0
- package/dist/run/events.d.ts +10 -5
- package/dist/run/events.d.ts.map +1 -1
- package/dist/run/events.js.map +1 -1
- package/dist/run/execute.d.ts.map +1 -1
- package/dist/run/execute.js +24 -7
- package/dist/run/execute.js.map +1 -1
- package/dist/run/extended-fixtures.d.ts +33 -0
- package/dist/run/extended-fixtures.d.ts.map +1 -0
- package/dist/run/extended-fixtures.js +91 -0
- package/dist/run/extended-fixtures.js.map +1 -0
- package/dist/run/fixtures.d.ts.map +1 -1
- package/dist/run/fixtures.js +39 -11
- package/dist/run/fixtures.js.map +1 -1
- package/dist/run/managed-process.d.ts +18 -0
- package/dist/run/managed-process.d.ts.map +1 -1
- package/dist/run/managed-process.js +101 -6
- package/dist/run/managed-process.js.map +1 -1
- package/dist/run/realm.d.ts +5 -4
- package/dist/run/realm.d.ts.map +1 -1
- package/dist/run/realm.js +8 -7
- package/dist/run/realm.js.map +1 -1
- package/dist/run/runner.d.ts +9 -3
- package/dist/run/runner.d.ts.map +1 -1
- package/dist/run/runner.js +15 -12
- package/dist/run/runner.js.map +1 -1
- package/dist/run/secrecy.d.ts +3 -3
- package/dist/run/secrecy.d.ts.map +1 -1
- package/dist/run/secrecy.js +4 -4
- package/dist/run/secrecy.js.map +1 -1
- package/dist/run/standalone.js +6 -6
- package/dist/run/standalone.js.map +1 -1
- package/dist/run/worker/entry.js +4 -3
- package/dist/run/worker/entry.js.map +1 -1
- package/dist/run/worker/protocol.d.ts +7 -1
- package/dist/run/worker/protocol.d.ts.map +1 -1
- package/dist/run/worker/protocol.js.map +1 -1
- package/dist/secrets.d.ts +21 -0
- package/dist/secrets.d.ts.map +1 -0
- package/dist/secrets.js +66 -0
- package/dist/secrets.js.map +1 -0
- package/dist/types.d.ts +90 -50
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -3
- package/skills/e2e/SKILL.md +42 -25
- package/skills/e2e/references/agent.md +80 -24
- package/skills/e2e/references/debugging.md +6 -5
- package/skills/e2e/references/explore.md +13 -7
- package/skills/e2e/references/mcp.md +4 -4
- package/skills/e2e/references/running.md +32 -21
- package/skills/e2e/references/setup.md +42 -16
- package/skills/e2e/references/writing-tests.md +32 -16
- package/dist/agent/model/router.d.ts +0 -36
- package/dist/agent/model/router.d.ts.map +0 -1
- package/dist/agent/model/router.js +0 -45
- package/dist/agent/model/router.js.map +0 -1
- package/dist/credentials.d.ts +0 -13
- package/dist/credentials.d.ts.map +0 -1
- package/dist/credentials.js +0 -51
- package/dist/credentials.js.map +0 -1
- package/dist/explore/reporter.d.ts +0 -11
- package/dist/explore/reporter.d.ts.map +0 -1
- package/dist/explore/reporter.js +0 -54
- package/dist/explore/reporter.js.map +0 -1
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What one step has seen of the screen, and how it looks again.
|
|
3
|
+
*
|
|
4
|
+
* The feed owns every capture of a step: the settle that reads an action's
|
|
5
|
+
* result after its effect, the ring of recent observations an id is resolved
|
|
6
|
+
* against, the pixel decision (masking proven, viewport untainted), and the
|
|
7
|
+
* executor's redacted view of a capture. Nothing else in the step observes
|
|
8
|
+
* the engine; the dispatcher and the pixel tier ask the feed.
|
|
9
|
+
*/
|
|
10
|
+
import type { SemanticNode } from '../engine/surface.ts';
|
|
11
|
+
import type { StepAgentDetails } from '../run/steps.ts';
|
|
12
|
+
import type { ExecutorObservation, ExecutorObserveOptions, ExecutorTarget } from './executor.ts';
|
|
13
|
+
import type { AgentContext } from './invocation.ts';
|
|
14
|
+
import { type AgentObservation } from './observation.ts';
|
|
15
|
+
import type { OperationQueue } from './operation-queue.ts';
|
|
16
|
+
import type { StepAccounting } from './step-accounting.ts';
|
|
17
|
+
export interface ObservationFeedOptions {
|
|
18
|
+
/** The agent's observation byte ceiling, clamped per capture by the token limit. */
|
|
19
|
+
readonly maxObservationBytes: number;
|
|
20
|
+
}
|
|
21
|
+
export declare class ObservationFeed {
|
|
22
|
+
private readonly runtime;
|
|
23
|
+
private readonly accounting;
|
|
24
|
+
private readonly queue;
|
|
25
|
+
private readonly options;
|
|
26
|
+
private newest;
|
|
27
|
+
/** The newest observations of the step, oldest first; see MAX_RECENT_OBSERVATIONS. */
|
|
28
|
+
private readonly recent;
|
|
29
|
+
/**
|
|
30
|
+
* The screen shape the newest committed action was resolved against, kept
|
|
31
|
+
* until the next settled observation has waited for the screen to leave it.
|
|
32
|
+
* Armed by actions whose effect shows in the tree; a secret fill leaves no
|
|
33
|
+
* visible trace and a scroll moves nothing the tree records, so neither
|
|
34
|
+
* arms it. Without this, the observation after a tap on a link reads the
|
|
35
|
+
* old page, stable and wrong, and the model repairs what already worked.
|
|
36
|
+
*/
|
|
37
|
+
private pendingChange;
|
|
38
|
+
/** The change wait the pending action asked for; undefined takes the default. */
|
|
39
|
+
private pendingChangeWaitMs;
|
|
40
|
+
/** The last pixel decision recorded on this step: `allowed`, or the withheld reason. */
|
|
41
|
+
private pixelsDecided;
|
|
42
|
+
/** Why requested pixels did not become model input, when they did not. */
|
|
43
|
+
private visionDegraded;
|
|
44
|
+
/** True once pixels this feed cleared were handed to the executor as model input. */
|
|
45
|
+
private pixelsSent;
|
|
46
|
+
constructor(runtime: AgentContext, accounting: StepAccounting, queue: OperationQueue, options: ObservationFeedOptions);
|
|
47
|
+
/** The newest observation of the step, if any was captured. */
|
|
48
|
+
get latest(): AgentObservation | undefined;
|
|
49
|
+
/** The newest observation, which an action addresses; before the first look there is nothing to address. */
|
|
50
|
+
requireLatest(): AgentObservation;
|
|
51
|
+
/** One raw capture in queue order, for replay's looks between retries. */
|
|
52
|
+
observeLatest(): Promise<AgentObservation>;
|
|
53
|
+
/**
|
|
54
|
+
* One settled capture in queue order: the executor-facing observe. An
|
|
55
|
+
* executor observation is followed by a model call measured in seconds, so
|
|
56
|
+
* the bounded settle wait is noise there — and it guarantees the model never
|
|
57
|
+
* reads a snapshot the app is still reacting to, which a fast model turns
|
|
58
|
+
* into a repeated action (double-committing a toggle) and a verdict judged
|
|
59
|
+
* on pre-render state. Replay's pre-action looks and the cache session's
|
|
60
|
+
* probes settle through this same path.
|
|
61
|
+
*/
|
|
62
|
+
observeSettled(pixels?: boolean): Promise<AgentObservation>;
|
|
63
|
+
/** The executor-facing observe: the options checked before anything is captured, then one settled look, viewed. */
|
|
64
|
+
observe(options?: ExecutorObserveOptions): Promise<ExecutorObservation>;
|
|
65
|
+
/** The executor's view of one capture: redacted text, and the tree and pixels it asked for. */
|
|
66
|
+
private view;
|
|
67
|
+
/** Best-effort current location path + query, for trace preconditions. */
|
|
68
|
+
currentPath(observation?: AgentObservation): Promise<string | undefined>;
|
|
69
|
+
/**
|
|
70
|
+
* Arms the change wait: the next settled observation waits for the screen
|
|
71
|
+
* to leave the newest observation's shape, for the default two seconds or
|
|
72
|
+
* the given brief window.
|
|
73
|
+
*/
|
|
74
|
+
armChange(waitMs?: number): void;
|
|
75
|
+
/**
|
|
76
|
+
* Resolves an executor target against the newest observation. An id the
|
|
77
|
+
* newest observation no longer carries, but a recent one did, is re-found
|
|
78
|
+
* in the newest one by its descriptor: a turn that batches actions keeps
|
|
79
|
+
* addressing the screen it saw while each action's own look re-observes,
|
|
80
|
+
* and an engine that mints ids per observation renumbers the tree between
|
|
81
|
+
* them. Exactly one match, or the id counts as gone.
|
|
82
|
+
*/
|
|
83
|
+
resolve(target: ExecutorTarget): {
|
|
84
|
+
node: SemanticNode;
|
|
85
|
+
observation: AgentObservation;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Re-finds a node that went stale: one fresh capture, then the trace
|
|
89
|
+
* recorder's own descriptor matching (`cache/relocate.ts`) against it,
|
|
90
|
+
* exactly one match or nothing. The capture is taken directly rather than
|
|
91
|
+
* through the queued observe: this runs inside a queued action body, and a
|
|
92
|
+
* queued observation would wait on its own caller.
|
|
93
|
+
*/
|
|
94
|
+
relocate(stale: SemanticNode): Promise<{
|
|
95
|
+
node: SemanticNode;
|
|
96
|
+
observation: AgentObservation;
|
|
97
|
+
} | undefined>;
|
|
98
|
+
/** The step's pixel record for the report. */
|
|
99
|
+
visionReport(): Pick<StepAgentDetails, 'visionInput' | 'visionDegraded'>;
|
|
100
|
+
/** One recorded observation; when `settle`, the captures loop inside it. */
|
|
101
|
+
private observeNow;
|
|
102
|
+
/** Makes an observation the newest, remembers it among the recent ones, and books its size. */
|
|
103
|
+
private publish;
|
|
104
|
+
/** One raw observation capture: retried at the engine, then redacted and bounded. */
|
|
105
|
+
private capture;
|
|
106
|
+
/**
|
|
107
|
+
* Bytes one act observation may contribute to a model turn, clamped like a
|
|
108
|
+
* judgment's. The loop's history grows past what any one observation costs,
|
|
109
|
+
* so the fixed part counted here is what every turn resends: the project
|
|
110
|
+
* context and the prior-step ledger.
|
|
111
|
+
*/
|
|
112
|
+
private byteBudget;
|
|
113
|
+
/**
|
|
114
|
+
* Pixels for a caller that asked for them, or the reason they are withheld —
|
|
115
|
+
* the same decision the judgment tier makes, recorded as a policy event
|
|
116
|
+
* whenever it changes within the step.
|
|
117
|
+
*/
|
|
118
|
+
private pixelsFor;
|
|
119
|
+
private recordPixelDecision;
|
|
120
|
+
/** The newest node matching the descriptor of what `id` named in a recent observation, if exactly one. */
|
|
121
|
+
private refound;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=observation-feed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observation-feed.d.ts","sourceRoot":"","sources":["../../src/agent/observation-feed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What one step has seen of the screen, and how it looks again.
|
|
3
|
+
*
|
|
4
|
+
* The feed owns every capture of a step: the settle that reads an action's
|
|
5
|
+
* result after its effect, the ring of recent observations an id is resolved
|
|
6
|
+
* against, the pixel decision (masking proven, viewport untainted), and the
|
|
7
|
+
* executor's redacted view of a capture. Nothing else in the step observes
|
|
8
|
+
* the engine; the dispatcher and the pixel tier ask the feed.
|
|
9
|
+
*/
|
|
10
|
+
import { TestError } from '../internal/errors.js';
|
|
11
|
+
import { describeTarget } from './actions.js';
|
|
12
|
+
import { relocateDescriptor } from '../cache/relocate.js';
|
|
13
|
+
import { AgentError } from './error.js';
|
|
14
|
+
import { isTransitionalObservation, observationShape, pixelsForModel, prepareObservation, projectTree, settleObservation, } from './observation.js';
|
|
15
|
+
import { observationByteBudget } from './observation-budget.js';
|
|
16
|
+
import { instrumentPhase, recordPolicyEvent, retryingObserve } from './phases.js';
|
|
17
|
+
/**
|
|
18
|
+
* Observations kept for resolving an id the newest one no longer carries.
|
|
19
|
+
* A turn that batches actions addresses the screen it saw, while every
|
|
20
|
+
* action's own look re-observes; on an engine that mints ids per observation
|
|
21
|
+
* (a device), each look renumbers the tree. A few looks back is as far as one
|
|
22
|
+
* turn can reach.
|
|
23
|
+
*/
|
|
24
|
+
const MAX_RECENT_OBSERVATIONS = 8;
|
|
25
|
+
export class ObservationFeed {
|
|
26
|
+
runtime;
|
|
27
|
+
accounting;
|
|
28
|
+
queue;
|
|
29
|
+
options;
|
|
30
|
+
newest;
|
|
31
|
+
/** The newest observations of the step, oldest first; see MAX_RECENT_OBSERVATIONS. */
|
|
32
|
+
recent = [];
|
|
33
|
+
/**
|
|
34
|
+
* The screen shape the newest committed action was resolved against, kept
|
|
35
|
+
* until the next settled observation has waited for the screen to leave it.
|
|
36
|
+
* Armed by actions whose effect shows in the tree; a secret fill leaves no
|
|
37
|
+
* visible trace and a scroll moves nothing the tree records, so neither
|
|
38
|
+
* arms it. Without this, the observation after a tap on a link reads the
|
|
39
|
+
* old page, stable and wrong, and the model repairs what already worked.
|
|
40
|
+
*/
|
|
41
|
+
pendingChange;
|
|
42
|
+
/** The change wait the pending action asked for; undefined takes the default. */
|
|
43
|
+
pendingChangeWaitMs;
|
|
44
|
+
/** The last pixel decision recorded on this step: `allowed`, or the withheld reason. */
|
|
45
|
+
pixelsDecided;
|
|
46
|
+
/** Why requested pixels did not become model input, when they did not. */
|
|
47
|
+
visionDegraded;
|
|
48
|
+
/** True once pixels this feed cleared were handed to the executor as model input. */
|
|
49
|
+
pixelsSent = false;
|
|
50
|
+
constructor(runtime, accounting, queue, options) {
|
|
51
|
+
this.runtime = runtime;
|
|
52
|
+
this.accounting = accounting;
|
|
53
|
+
this.queue = queue;
|
|
54
|
+
this.options = options;
|
|
55
|
+
}
|
|
56
|
+
/** The newest observation of the step, if any was captured. */
|
|
57
|
+
get latest() {
|
|
58
|
+
return this.newest;
|
|
59
|
+
}
|
|
60
|
+
/** The newest observation, which an action addresses; before the first look there is nothing to address. */
|
|
61
|
+
requireLatest() {
|
|
62
|
+
if (this.newest === undefined) {
|
|
63
|
+
throw new AgentError('LOCATOR_NOT_FOUND', 'no observation has been captured yet; observe before acting');
|
|
64
|
+
}
|
|
65
|
+
return this.newest;
|
|
66
|
+
}
|
|
67
|
+
/** One raw capture in queue order, for replay's looks between retries. */
|
|
68
|
+
observeLatest() {
|
|
69
|
+
return this.queue.run(() => this.observeNow(false, false));
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* One settled capture in queue order: the executor-facing observe. An
|
|
73
|
+
* executor observation is followed by a model call measured in seconds, so
|
|
74
|
+
* the bounded settle wait is noise there — and it guarantees the model never
|
|
75
|
+
* reads a snapshot the app is still reacting to, which a fast model turns
|
|
76
|
+
* into a repeated action (double-committing a toggle) and a verdict judged
|
|
77
|
+
* on pre-render state. Replay's pre-action looks and the cache session's
|
|
78
|
+
* probes settle through this same path.
|
|
79
|
+
*/
|
|
80
|
+
observeSettled(pixels = false) {
|
|
81
|
+
return this.queue.run(() => this.observeNow(true, pixels));
|
|
82
|
+
}
|
|
83
|
+
/** The executor-facing observe: the options checked before anything is captured, then one settled look, viewed. */
|
|
84
|
+
async observe(options = {}) {
|
|
85
|
+
if (options === null || typeof options !== 'object') {
|
|
86
|
+
throw new TestError('INVALID_ARGUMENT', 'observe options must be an object');
|
|
87
|
+
}
|
|
88
|
+
return this.view(await this.observeSettled(options.pixels === true), options);
|
|
89
|
+
}
|
|
90
|
+
/** The executor's view of one capture: redacted text, and the tree and pixels it asked for. */
|
|
91
|
+
async view(observation, options) {
|
|
92
|
+
const redact = this.runtime.redact;
|
|
93
|
+
// Prefer location from this capture; only engines without it need a separate probe.
|
|
94
|
+
const path = await this.currentPath(observation);
|
|
95
|
+
return {
|
|
96
|
+
revision: observation.revision,
|
|
97
|
+
text: observation.text,
|
|
98
|
+
truncated: observation.truncated,
|
|
99
|
+
viewport: observation.viewport,
|
|
100
|
+
...(path === undefined ? {} : { path: redact(path) }),
|
|
101
|
+
...(options.tree === true ? { tree: projectTree(observation.tree, redact) } : {}),
|
|
102
|
+
...(options.pixels === true ? this.pixelsFor(observation) : {}),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/** Best-effort current location path + query, for trace preconditions. */
|
|
106
|
+
async currentPath(observation) {
|
|
107
|
+
const currentUrl = this.runtime.engine.session.url;
|
|
108
|
+
if (observation?.url === undefined && currentUrl === undefined)
|
|
109
|
+
return undefined;
|
|
110
|
+
try {
|
|
111
|
+
const url = new URL(observation?.url ?? (await currentUrl(this.accounting.operation())));
|
|
112
|
+
return `${url.pathname}${url.search}`;
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Arms the change wait: the next settled observation waits for the screen
|
|
120
|
+
* to leave the newest observation's shape, for the default two seconds or
|
|
121
|
+
* the given brief window.
|
|
122
|
+
*/
|
|
123
|
+
armChange(waitMs) {
|
|
124
|
+
if (this.newest === undefined)
|
|
125
|
+
return;
|
|
126
|
+
this.pendingChange = observationShape(this.newest);
|
|
127
|
+
this.pendingChangeWaitMs = waitMs;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Resolves an executor target against the newest observation. An id the
|
|
131
|
+
* newest observation no longer carries, but a recent one did, is re-found
|
|
132
|
+
* in the newest one by its descriptor: a turn that batches actions keeps
|
|
133
|
+
* addressing the screen it saw while each action's own look re-observes,
|
|
134
|
+
* and an engine that mints ids per observation renumbers the tree between
|
|
135
|
+
* them. Exactly one match, or the id counts as gone.
|
|
136
|
+
*/
|
|
137
|
+
resolve(target) {
|
|
138
|
+
if (typeof target?.id !== 'string' || target.id === '') {
|
|
139
|
+
throw new TestError('INVALID_ARGUMENT', 'action target must be { id: string }');
|
|
140
|
+
}
|
|
141
|
+
const id = target.id.replace(/^#/, '');
|
|
142
|
+
const latest = this.requireLatest();
|
|
143
|
+
const node = latest.nodes.get(id) ?? this.refound(id, latest);
|
|
144
|
+
if (node === undefined) {
|
|
145
|
+
throw new AgentError('LOCATOR_NOT_FOUND', `node #${id} is not on the current screen (observation ${latest.revision}); it was removed or never existed`);
|
|
146
|
+
}
|
|
147
|
+
return { node, observation: latest };
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Re-finds a node that went stale: one fresh capture, then the trace
|
|
151
|
+
* recorder's own descriptor matching (`cache/relocate.ts`) against it,
|
|
152
|
+
* exactly one match or nothing. The capture is taken directly rather than
|
|
153
|
+
* through the queued observe: this runs inside a queued action body, and a
|
|
154
|
+
* queued observation would wait on its own caller.
|
|
155
|
+
*/
|
|
156
|
+
async relocate(stale) {
|
|
157
|
+
const options = { redact: this.runtime.redact, testIdAttribute: this.runtime.config.testIdAttribute };
|
|
158
|
+
const descriptor = describeTarget(stale, options.redact, options.testIdAttribute);
|
|
159
|
+
if (descriptor === undefined)
|
|
160
|
+
return undefined;
|
|
161
|
+
this.accounting.checkpoint();
|
|
162
|
+
const observation = await instrumentPhase(this.runtime, { api: this.accounting.api, kind: 'observation', phase: 'agent.observe', name: 'relocate' }, () => this.capture(false), (prepared) => ({ count: prepared.nodes.size, bytes: prepared.bytes }));
|
|
163
|
+
this.publish(observation);
|
|
164
|
+
const relocated = relocateDescriptor(descriptor, observation.nodes, options);
|
|
165
|
+
if (relocated.kind !== 'found')
|
|
166
|
+
return undefined;
|
|
167
|
+
const node = observation.nodes.get(relocated.id);
|
|
168
|
+
return node === undefined ? undefined : { node, observation };
|
|
169
|
+
}
|
|
170
|
+
/** The step's pixel record for the report. */
|
|
171
|
+
visionReport() {
|
|
172
|
+
return {
|
|
173
|
+
...(this.pixelsSent ? { visionInput: true } : {}),
|
|
174
|
+
...(this.visionDegraded === undefined ? {} : { visionDegraded: this.visionDegraded }),
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
/** One recorded observation; when `settle`, the captures loop inside it. */
|
|
178
|
+
async observeNow(settle, pixels) {
|
|
179
|
+
this.accounting.checkpoint();
|
|
180
|
+
// A tainted viewport never captures pixels: the engine would mask what it
|
|
181
|
+
// knows about, and the secret may be anywhere on screen by now.
|
|
182
|
+
const capturePixels = pixels && !this.runtime.taint.value;
|
|
183
|
+
// A settled look consumes the pending change: it waits for the screen to
|
|
184
|
+
// leave the pre-action shape once, and later looks read the screen as is.
|
|
185
|
+
const changedFrom = settle ? this.pendingChange : undefined;
|
|
186
|
+
const changeWaitMs = settle ? this.pendingChangeWaitMs : undefined;
|
|
187
|
+
if (settle) {
|
|
188
|
+
this.pendingChange = undefined;
|
|
189
|
+
this.pendingChangeWaitMs = undefined;
|
|
190
|
+
}
|
|
191
|
+
const observation = await instrumentPhase(this.runtime, { api: this.accounting.api, kind: 'observation', phase: 'agent.observe' }, () => settle
|
|
192
|
+
? settleObservation(() => this.capture(capturePixels), observationShape, {
|
|
193
|
+
remainingMs: () => this.accounting.remainingMs(),
|
|
194
|
+
// The step's own hard stop must interrupt a settle sleep too —
|
|
195
|
+
// the attempt signal alone would let settling outlive the step
|
|
196
|
+
// by one poll interval.
|
|
197
|
+
signal: this.accounting.signal,
|
|
198
|
+
}, { changedFrom, changeWaitMs, transitional: isTransitionalObservation })
|
|
199
|
+
: this.capture(capturePixels), (prepared) => ({ count: prepared.nodes.size, bytes: prepared.bytes }));
|
|
200
|
+
this.publish(observation);
|
|
201
|
+
return observation;
|
|
202
|
+
}
|
|
203
|
+
/** Makes an observation the newest, remembers it among the recent ones, and books its size. */
|
|
204
|
+
publish(observation) {
|
|
205
|
+
this.newest = observation;
|
|
206
|
+
this.recent.push(observation);
|
|
207
|
+
if (this.recent.length > MAX_RECENT_OBSERVATIONS)
|
|
208
|
+
this.recent.shift();
|
|
209
|
+
const metrics = this.accounting.metrics;
|
|
210
|
+
metrics.observationBytes = Math.max(metrics.observationBytes, observation.bytes);
|
|
211
|
+
}
|
|
212
|
+
/** One raw observation capture: retried at the engine, then redacted and bounded. */
|
|
213
|
+
async capture(pixels) {
|
|
214
|
+
const raw = await retryingObserve({
|
|
215
|
+
observe: (operation) => this.runtime.engine.session.observe(operation, { pixels }),
|
|
216
|
+
operation: () => this.accounting.operation(),
|
|
217
|
+
guard: (cause) => this.accounting.checkpoint(cause),
|
|
218
|
+
signal: this.runtime.engine.signal,
|
|
219
|
+
api: this.accounting.api,
|
|
220
|
+
});
|
|
221
|
+
return prepareObservation(raw, {
|
|
222
|
+
redact: this.runtime.redact,
|
|
223
|
+
maxBytes: this.byteBudget(pixels),
|
|
224
|
+
testIdAttribute: this.runtime.config.testIdAttribute,
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Bytes one act observation may contribute to a model turn, clamped like a
|
|
229
|
+
* judgment's. The loop's history grows past what any one observation costs,
|
|
230
|
+
* so the fixed part counted here is what every turn resends: the project
|
|
231
|
+
* context and the prior-step ledger.
|
|
232
|
+
*/
|
|
233
|
+
byteBudget(pixels) {
|
|
234
|
+
const metrics = this.accounting.metrics;
|
|
235
|
+
return observationByteBudget({
|
|
236
|
+
maxObservationBytes: this.options.maxObservationBytes,
|
|
237
|
+
maxModelTokensPerCall: this.runtime.config.limits.maxModelTokensPerCall,
|
|
238
|
+
}, { fixedBytes: metrics.contextBytes + metrics.ledgerBytes, pixels });
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Pixels for a caller that asked for them, or the reason they are withheld —
|
|
242
|
+
* the same decision the judgment tier makes, recorded as a policy event
|
|
243
|
+
* whenever it changes within the step.
|
|
244
|
+
*/
|
|
245
|
+
pixelsFor(observation) {
|
|
246
|
+
const outcome = pixelsForModel(observation, this.runtime.taint.value);
|
|
247
|
+
if ('withheld' in outcome) {
|
|
248
|
+
this.recordPixelDecision('denied', outcome.withheld);
|
|
249
|
+
this.visionDegraded = outcome.withheld;
|
|
250
|
+
return { pixelsWithheld: outcome.withheld };
|
|
251
|
+
}
|
|
252
|
+
this.recordPixelDecision('allowed');
|
|
253
|
+
this.pixelsSent = true;
|
|
254
|
+
const metrics = this.accounting.metrics;
|
|
255
|
+
metrics.pixelBytes = Math.max(metrics.pixelBytes ?? 0, outcome.pixels.data.byteLength);
|
|
256
|
+
return { pixels: outcome.pixels };
|
|
257
|
+
}
|
|
258
|
+
recordPixelDecision(decision, code) {
|
|
259
|
+
const key = code ?? decision;
|
|
260
|
+
if (this.pixelsDecided === key)
|
|
261
|
+
return;
|
|
262
|
+
this.pixelsDecided = key;
|
|
263
|
+
recordPolicyEvent(this.runtime.steps, 'vision.pixels', decision, code);
|
|
264
|
+
}
|
|
265
|
+
/** The newest node matching the descriptor of what `id` named in a recent observation, if exactly one. */
|
|
266
|
+
refound(id, latest) {
|
|
267
|
+
let earlier;
|
|
268
|
+
for (let index = this.recent.length - 1; index >= 0 && earlier === undefined; index -= 1) {
|
|
269
|
+
earlier = this.recent[index].nodes.get(id);
|
|
270
|
+
}
|
|
271
|
+
if (earlier === undefined)
|
|
272
|
+
return undefined;
|
|
273
|
+
const options = { redact: this.runtime.redact, testIdAttribute: this.runtime.config.testIdAttribute };
|
|
274
|
+
const descriptor = describeTarget(earlier, options.redact, options.testIdAttribute);
|
|
275
|
+
if (descriptor === undefined)
|
|
276
|
+
return undefined;
|
|
277
|
+
const relocated = relocateDescriptor(descriptor, latest.nodes, options);
|
|
278
|
+
return relocated.kind === 'found' ? latest.nodes.get(relocated.id) : undefined;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
//# sourceMappingURL=observation-feed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observation-feed.js","sourceRoot":"","sources":["../../src/agent/observation-feed.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Observation capture, redaction, and model serialization. */
|
|
2
2
|
import type { Observation, SemanticNode } from '../engine/surface.ts';
|
|
3
3
|
import type { VisionDegradation } from '../run/steps.ts';
|
|
4
|
-
import type { ExecutorNode, ExecutorPixels } from './executor.ts';
|
|
4
|
+
import type { ExecutorNode, ExecutorObservation, ExecutorPixels } from './executor.ts';
|
|
5
5
|
/** Why pixels the caller asked for are not part of this observation. */
|
|
6
6
|
type PixelsWithheld = 'MASKING_UNPROVEN';
|
|
7
7
|
export interface AgentObservation {
|
|
@@ -51,6 +51,19 @@ export declare function pixelsForModel(observation: AgentObservation, tainted: b
|
|
|
51
51
|
} | {
|
|
52
52
|
readonly withheld: VisionDegradation;
|
|
53
53
|
};
|
|
54
|
+
/**
|
|
55
|
+
* Roles the model can act on by id: the controls a hit-tested point resolves
|
|
56
|
+
* to, and the lines that mark a screen as one the tree can drive at all.
|
|
57
|
+
*/
|
|
58
|
+
export declare const INTERACTIVE_ROLES: ReadonlySet<string>;
|
|
59
|
+
/**
|
|
60
|
+
* How many listed nodes the model could act on by id, read off the rendered
|
|
61
|
+
* lines. A screen with none is one the tree cannot describe (a canvas, a
|
|
62
|
+
* game, a native surface the platform exposes no semantics for), and the
|
|
63
|
+
* model needs pixels from the first turn rather than a round trip to discover
|
|
64
|
+
* that. Lives next to `formatNode` so the line grammar keeps one owner.
|
|
65
|
+
*/
|
|
66
|
+
export declare function interactiveNodeCount(observation: Pick<ExecutorObservation, 'text'>): number;
|
|
54
67
|
/**
|
|
55
68
|
* Projects the raw tree onto the executor-facing node shape: the same
|
|
56
69
|
* redaction the text serialization applies, field by field, and no value at
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observation.d.ts","sourceRoot":"","sources":["../../src/agent/observation.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAE/D,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"observation.d.ts","sourceRoot":"","sources":["../../src/agent/observation.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAE/D,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAMvF,wEAAwE;AACxE,KAAK,cAAc,GAAG,kBAAkB,CAAC;AAEzC,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAClD,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/F,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC7C,mEAAmE;IACnE,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CACtD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE;IACP,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB,GACA,gBAAgB,CAiDlB;AAqBD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,gBAAgB,EAC7B,OAAO,EAAE,OAAO,GACf;IAAE,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;CAAE,CAQhF;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAiBhD,CAAC;AAEH;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,GAAG,MAAM,CAO3F;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,YAAY,CAqB9F;AA8CD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,GAAG,MAAM,CActE;AA+BD,oFAAoF;AACpF,UAAU,WAAW;IACnB,WAAW,IAAI,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED,oEAAoE;AACpE,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAC5D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,EAC7B,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,aAAa,CAAC,CAAC,CAAM,GAC7B,OAAO,CAAC,CAAC,CAAC,CA6BZ;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAEhF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** Observation capture, redaction, and model serialization. */
|
|
2
2
|
import { collapseText } from '../internal/text.js';
|
|
3
3
|
import { sleep } from '../internal/time.js';
|
|
4
|
+
import { sizeForModel } from './pixels.js';
|
|
4
5
|
/** Appended when the node walk stopped at the observation byte budget. */
|
|
5
6
|
const TRUNCATION_MARKER = '[observation truncated at the resolved observation byte limit]';
|
|
6
7
|
/**
|
|
@@ -90,7 +91,47 @@ export function pixelsForModel(observation, tainted) {
|
|
|
90
91
|
if (observation.pixels === undefined) {
|
|
91
92
|
return { withheld: observation.pixelsWithheld ?? 'UNSUPPORTED_CAPABILITY' };
|
|
92
93
|
}
|
|
93
|
-
|
|
94
|
+
// Sized here, once per observation a model receives, not per capture: the
|
|
95
|
+
// settle loop captures several times per action and only digests the bytes.
|
|
96
|
+
return { pixels: sizeForModel(observation.pixels) };
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Roles the model can act on by id: the controls a hit-tested point resolves
|
|
100
|
+
* to, and the lines that mark a screen as one the tree can drive at all.
|
|
101
|
+
*/
|
|
102
|
+
export const INTERACTIVE_ROLES = new Set([
|
|
103
|
+
'button',
|
|
104
|
+
'link',
|
|
105
|
+
'textbox',
|
|
106
|
+
'searchbox',
|
|
107
|
+
'combobox',
|
|
108
|
+
'checkbox',
|
|
109
|
+
'radio',
|
|
110
|
+
'switch',
|
|
111
|
+
'tab',
|
|
112
|
+
'menuitem',
|
|
113
|
+
'menuitemcheckbox',
|
|
114
|
+
'menuitemradio',
|
|
115
|
+
'option',
|
|
116
|
+
'slider',
|
|
117
|
+
'spinbutton',
|
|
118
|
+
'treeitem',
|
|
119
|
+
]);
|
|
120
|
+
/**
|
|
121
|
+
* How many listed nodes the model could act on by id, read off the rendered
|
|
122
|
+
* lines. A screen with none is one the tree cannot describe (a canvas, a
|
|
123
|
+
* game, a native surface the platform exposes no semantics for), and the
|
|
124
|
+
* model needs pixels from the first turn rather than a round trip to discover
|
|
125
|
+
* that. Lives next to `formatNode` so the line grammar keeps one owner.
|
|
126
|
+
*/
|
|
127
|
+
export function interactiveNodeCount(observation) {
|
|
128
|
+
let count = 0;
|
|
129
|
+
for (const line of observation.text.split('\n')) {
|
|
130
|
+
const role = /^\s*#\S+ (\S+)/.exec(line)?.[1];
|
|
131
|
+
if (role !== undefined && INTERACTIVE_ROLES.has(role))
|
|
132
|
+
count += 1;
|
|
133
|
+
}
|
|
134
|
+
return count;
|
|
94
135
|
}
|
|
95
136
|
/**
|
|
96
137
|
* Projects the raw tree onto the executor-facing node shape: the same
|
|
@@ -178,13 +219,28 @@ function formatNode(node, depth, redact, testIdAttribute) {
|
|
|
178
219
|
* Lives next to `formatNode` so the line grammar keeps one owner.
|
|
179
220
|
*/
|
|
180
221
|
export function observationShape(observation) {
|
|
181
|
-
|
|
222
|
+
const text = observation.text
|
|
182
223
|
.replaceAll(/(^|\n)(\s*)#\S+/g, '$1$2')
|
|
183
224
|
.replaceAll(/ \[([^\]]*)\]/g, (_match, states) => {
|
|
184
225
|
const stable = states.split(' ').filter((state) => state !== 'focused');
|
|
185
226
|
return stable.length === 0 ? '' : ` [${stable.join(' ')}]`;
|
|
186
227
|
})
|
|
187
228
|
.replaceAll(CLOCK_PATTERN, '<time>');
|
|
229
|
+
// A capture taken with pixels is shaped by them too: on a canvas, a map, or
|
|
230
|
+
// a game the tree never moves, and without the pixels every action would
|
|
231
|
+
// wait out the whole change window and then be reported as having done
|
|
232
|
+
// nothing. A digest keeps the shape a string and the comparison cheap.
|
|
233
|
+
const pixels = observation.pixels;
|
|
234
|
+
return pixels === undefined ? text : `${text}\n<pixels ${digest(pixels.data)}>`;
|
|
235
|
+
}
|
|
236
|
+
/** FNV-1a over the image bytes: fast, and equal frames encode to equal bytes. */
|
|
237
|
+
function digest(bytes) {
|
|
238
|
+
let hash = 0x811c9dc5;
|
|
239
|
+
for (const byte of bytes) {
|
|
240
|
+
hash ^= byte;
|
|
241
|
+
hash = Math.imul(hash, 0x01000193) >>> 0;
|
|
242
|
+
}
|
|
243
|
+
return hash.toString(16);
|
|
188
244
|
}
|
|
189
245
|
/** `12:05`, `0:59`, `23:59:59`: a value that changes on its own once a second or minute. */
|
|
190
246
|
const CLOCK_PATTERN = /\b\d{1,2}:\d{2}(?::\d{2})?\b/g;
|
|
@@ -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":"AAAA,+DAA+D;AAG/D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAG5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,0EAA0E;AAC1E,MAAM,iBAAiB,GAAG,gEAAgE,CAAC;AAyB3F;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,WAAwB,EACxB,OAIC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,4EAA4E;IAC5E,wEAAwE;IACxE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,iBAAiB,IAAI,CAAC,CAAC,UAAU,CAAC;IACxE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAC;IAC3D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,IAAI,GAAG,CAAC,IAAkB,EAAE,KAAa,EAAQ,EAAE;QACvD,IAAI,SAAS;YAAE,OAAO;QACtB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC;QACpD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC;YAC9C,SAAS,GAAG,IAAI,CAAC;YACjB,OAAO;QACT,CAAC;QACD,KAAK,IAAI,IAAI,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE;YAAE,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC;IACF,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1B,IAAI,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAE7C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,2EAA2E;IAC3E,uEAAuE;IACvE,wCAAwC;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IACxC,OAAO;QACL,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,GAAG,CAAC,WAAW,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QAClF,IAAI;QACJ,KAAK,EAAE,SAAS;QAChB,KAAK;QACL,OAAO;QACP,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,SAAS;QACT,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QACnE,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;KAC9E,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,WAAW,CAAC,WAAwB;IAI3C,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAClC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACpC,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC;IACrE,IAAI,iBAAiB,GAAG,eAAe;QAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IACjF,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM,EAAE,iBAAiB,EAAE,EAAE,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,WAA6B,EAC7B,OAAgB;IAEhB,IAAI,OAAO;QAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;IAClD,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,cAAc,IAAI,wBAAwB,EAAE,CAAC;IAC9E,CAAC;IACD,0EAA0E;IAC1E,4EAA4E;IAC5E,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC;IAC5D,QAAQ;IACR,MAAM;IACN,SAAS;IACT,WAAW;IACX,UAAU;IACV,UAAU;IACV,OAAO;IACP,QAAQ;IACR,KAAK;IACL,UAAU;IACV,kBAAkB;IAClB,eAAe;IACf,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,UAAU;CACX,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAA8C;IACjF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,IAAI,KAAK,SAAS,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,KAAK,IAAI,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,IAAkB,EAAE,MAAgC;IAC9E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,MAAM,UAAU,GACd,IAAI,CAAC,UAAU,KAAK,SAAS;QAC3B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;QACf,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/D,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/D,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5E,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/E,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7D,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;QACnD,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QACtE,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS;YAC7B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;KAC5E,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B;;;;GAIG;AACH,SAAS,UAAU,CACjB,IAAkB,EAClB,KAAa,EACb,MAAgC,EAChC,eAAuB;IAEvB,MAAM,KAAK,GAAa,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/F,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1F,2EAA2E;IAC3E,2CAA2C;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,eAAe,CAAC,CAAC;IAClD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1F,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1F,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,CAAC;IACrD,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;QAChF,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC/B,CAAC;SAAM,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;QACpE,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;SAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC;SACrC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3D,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAA6B;IAC5D,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI;SAC1B,UAAU,CAAC,kBAAkB,EAAE,MAAM,CAAC;SACtC,UAAU,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAc,EAAE,EAAE;QACvD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;QACxE,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7D,CAAC,CAAC;SACD,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACvC,4EAA4E;IAC5E,yEAAyE;IACzE,uEAAuE;IACvE,uEAAuE;IACvE,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAClC,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,aAAa,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAClF,CAAC;AAED,iFAAiF;AACjF,SAAS,MAAM,CAAC,KAAiB;IAC/B,IAAI,IAAI,GAAG,UAAU,CAAC;IACtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,IAAI,CAAC;QACb,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED,4FAA4F;AAC5F,MAAM,aAAa,GAAG,+BAA+B,CAAC;AAEtD,8DAA8D;AAC9D,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEhC;;;;;;;;;GASG;AACH,MAAM,cAAc,GAAG,KAAK,CAAC;AA2B7B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAyB,EACzB,OAA6B,EAC7B,KAAkB,EAClB,OAAO,GAAqB,EAAE;IAE9B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC;IAChD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,iBAAiB,CAAC;IAC/D,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,cAAc,CAAC;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IAC3D,IAAI,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;IAC5B,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC;QACnD,OACE,CAAC,KAAK,KAAK,OAAO,CAAC,WAAW,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB;YAC7B,KAAK,CAAC,WAAW,EAAE,GAAG,MAAM,EAC5B,CAAC;YACD,MAAM,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAClC,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;YACxB,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC;IAC7C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,MAAM,EAAE,CAAC;QAC/D,MAAM,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,KAAK,KAAK,CAAC;QAC9B,KAAK,GAAG,IAAI,CAAC;QACb,IAAI,MAAM;YAAE,MAAM;IACpB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,WAA6B;IACrE,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,UAAU,CACjB,IAAkB,EAClB,IAA+B,EAC/B,OAA4B;IAE5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Call-order serialization for one step's observations and actions.
|
|
3
|
+
*
|
|
4
|
+
* An executor (or an AI SDK loop running parallel tool calls) that issues a
|
|
5
|
+
* second action before the first settles would otherwise resolve both
|
|
6
|
+
* targets against the same pre-action observation — exactly the wrong-node
|
|
7
|
+
* hazard the staleness rule exists to prevent. Queued, the second call sees
|
|
8
|
+
* the newest observation and a stale id fails loud instead of acting on the
|
|
9
|
+
* wrong node.
|
|
10
|
+
*
|
|
11
|
+
* Invariant: a queued body must never enqueue another operation itself — the
|
|
12
|
+
* inner call would wait behind its own caller and deadlock. Action bodies
|
|
13
|
+
* call the engine session directly, secret authorization never observes, and
|
|
14
|
+
* a relocation captures raw rather than through the queued observe.
|
|
15
|
+
*/
|
|
16
|
+
export declare class OperationQueue {
|
|
17
|
+
private chain;
|
|
18
|
+
/** Runs `body` after every operation queued before it, in call order. */
|
|
19
|
+
run<T>(body: () => Promise<T>): Promise<T>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=operation-queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation-queue.d.ts","sourceRoot":"","sources":["../../src/agent/operation-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAuC;IAEpD,yEAAyE;IACzE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CASzC;CACF"}
|