effect-agent 0.1.0-beta.110 → 0.1.0-beta.111

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.
@@ -2,7 +2,7 @@ import { p as SandboxImplementation } from "../Sandbox-CEsDWBLq.mjs";
2
2
  import { s as PageScreenshotResult } from "../PageScreenshot-BpgZKAxl.mjs";
3
3
  import { Context, Effect, Schema, Scope } from "effect";
4
4
  declare namespace InteractiveBrowser_d_exports {
5
- export { BrowserActionResult, BrowserClickRequest, BrowserFileSelectionResult, BrowserFillRequest, BrowserHandle, BrowserNavigateRequest, BrowserNavigationResult, BrowserReadTextRequest, BrowserScreenshotRequest, BrowserScrollRequest, BrowserSelectFileRequest, BrowserTextResult, InteractiveBrowser, InteractiveBrowserActionError, InteractiveBrowserBusyError, InteractiveBrowserCapacityError, InteractiveBrowserError, InteractiveBrowserExpiredError, InteractiveBrowserHost, InteractiveBrowserLimitError, InteractiveBrowserNetworkPolicy, InteractiveBrowserPolicy, InteractiveBrowserPolicyDeniedError, InteractiveBrowserProtocolError, InteractiveBrowserTargetUrl, InteractiveBrowserUnsupportedError };
5
+ export { BrowserActionResult, BrowserClickRequest, BrowserExpectedTarget, BrowserExpectedTargetState, BrowserFileSelectionResult, BrowserFillRequest, BrowserHandle, BrowserNavigateRequest, BrowserNavigationResult, BrowserReadTextRequest, BrowserScreenshotRequest, BrowserScrollRequest, BrowserSelectFileRequest, BrowserTextResult, InteractiveBrowser, InteractiveBrowserActionError, InteractiveBrowserBusyError, InteractiveBrowserCapacityError, InteractiveBrowserError, InteractiveBrowserExpiredError, InteractiveBrowserFailureEvidence, InteractiveBrowserHost, InteractiveBrowserLimitError, InteractiveBrowserNetworkPolicy, InteractiveBrowserPolicy, InteractiveBrowserPolicyDeniedError, InteractiveBrowserProtocolError, InteractiveBrowserTargetUrl, InteractiveBrowserUnsupportedError };
6
6
  }
7
7
  /** Absolute, bounded HTTP(S) navigation URL without embedded credentials. */
8
8
  export declare const InteractiveBrowserTargetUrl: Schema.NonEmptyString;
@@ -39,13 +39,76 @@ declare const BrowserReadTextRequest_base: Schema.Class<BrowserReadTextRequest,
39
39
  readonly selector: Schema.optionalKey<Schema.NonEmptyString>;
40
40
  }>, {}>;
41
41
  export declare class BrowserReadTextRequest extends BrowserReadTextRequest_base {}
42
+ /** Observed control state, without an input value. Absence is part of the snapshot. */
43
+ export declare const BrowserExpectedTargetState: Schema.Struct<{
44
+ readonly kind: Schema.String;
45
+ readonly inputType: Schema.optionalKey<Schema.String>;
46
+ readonly label: Schema.optionalKey<Schema.String>;
47
+ readonly checked: Schema.optionalKey<Schema.Boolean>;
48
+ readonly selected: Schema.optionalKey<Schema.Boolean>;
49
+ readonly disabled: Schema.optionalKey<Schema.Boolean>;
50
+ readonly required: Schema.optionalKey<Schema.Boolean>;
51
+ readonly valid: Schema.optionalKey<Schema.Boolean>;
52
+ readonly formValid: Schema.optionalKey<Schema.Boolean>;
53
+ }>;
54
+ export type BrowserExpectedTargetState = typeof BrowserExpectedTargetState.Type;
55
+ /** Exact observed document/node identity. A replacement node is refused before input dispatch. */
56
+ export declare const BrowserExpectedTarget: Schema.Struct<{
57
+ readonly documentId: Schema.NonEmptyString;
58
+ readonly nodeId: Schema.NonEmptyString;
59
+ readonly state: Schema.optionalKey<Schema.Struct<{
60
+ readonly kind: Schema.String;
61
+ readonly inputType: Schema.optionalKey<Schema.String>;
62
+ readonly label: Schema.optionalKey<Schema.String>;
63
+ readonly checked: Schema.optionalKey<Schema.Boolean>;
64
+ readonly selected: Schema.optionalKey<Schema.Boolean>;
65
+ readonly disabled: Schema.optionalKey<Schema.Boolean>;
66
+ readonly required: Schema.optionalKey<Schema.Boolean>;
67
+ readonly valid: Schema.optionalKey<Schema.Boolean>;
68
+ readonly formValid: Schema.optionalKey<Schema.Boolean>;
69
+ }>>;
70
+ readonly scopeSelector: Schema.optionalKey<Schema.NonEmptyString>;
71
+ }>;
72
+ export type BrowserExpectedTarget = typeof BrowserExpectedTarget.Type;
42
73
  declare const BrowserFillRequest_base: Schema.Class<BrowserFillRequest, Schema.Struct<{
43
74
  readonly selector: Schema.NonEmptyString;
44
75
  readonly value: Schema.String;
76
+ readonly expectedTarget: Schema.optionalKey<Schema.Struct<{
77
+ readonly documentId: Schema.NonEmptyString;
78
+ readonly nodeId: Schema.NonEmptyString;
79
+ readonly state: Schema.optionalKey<Schema.Struct<{
80
+ readonly kind: Schema.String;
81
+ readonly inputType: Schema.optionalKey<Schema.String>;
82
+ readonly label: Schema.optionalKey<Schema.String>;
83
+ readonly checked: Schema.optionalKey<Schema.Boolean>;
84
+ readonly selected: Schema.optionalKey<Schema.Boolean>;
85
+ readonly disabled: Schema.optionalKey<Schema.Boolean>;
86
+ readonly required: Schema.optionalKey<Schema.Boolean>;
87
+ readonly valid: Schema.optionalKey<Schema.Boolean>;
88
+ readonly formValid: Schema.optionalKey<Schema.Boolean>;
89
+ }>>;
90
+ readonly scopeSelector: Schema.optionalKey<Schema.NonEmptyString>;
91
+ }>>;
45
92
  }>, {}>;
46
93
  export declare class BrowserFillRequest extends BrowserFillRequest_base {}
47
94
  declare const BrowserClickRequest_base: Schema.Class<BrowserClickRequest, Schema.Struct<{
48
95
  readonly selector: Schema.NonEmptyString;
96
+ readonly expectedTarget: Schema.optionalKey<Schema.Struct<{
97
+ readonly documentId: Schema.NonEmptyString;
98
+ readonly nodeId: Schema.NonEmptyString;
99
+ readonly state: Schema.optionalKey<Schema.Struct<{
100
+ readonly kind: Schema.String;
101
+ readonly inputType: Schema.optionalKey<Schema.String>;
102
+ readonly label: Schema.optionalKey<Schema.String>;
103
+ readonly checked: Schema.optionalKey<Schema.Boolean>;
104
+ readonly selected: Schema.optionalKey<Schema.Boolean>;
105
+ readonly disabled: Schema.optionalKey<Schema.Boolean>;
106
+ readonly required: Schema.optionalKey<Schema.Boolean>;
107
+ readonly valid: Schema.optionalKey<Schema.Boolean>;
108
+ readonly formValid: Schema.optionalKey<Schema.Boolean>;
109
+ }>>;
110
+ readonly scopeSelector: Schema.optionalKey<Schema.NonEmptyString>;
111
+ }>>;
49
112
  }>, {}>;
50
113
  export declare class BrowserClickRequest extends BrowserClickRequest_base {}
51
114
  declare const BrowserSelectFileRequest_base: Schema.Class<BrowserSelectFileRequest, Schema.Struct<{
@@ -89,9 +152,23 @@ declare const BrowserActionResult_base: Schema.Class<BrowserActionResult, Schema
89
152
  }>, {}>;
90
153
  /** Post-action URL observation; no provider session state crosses this boundary. */
91
154
  export declare class BrowserActionResult extends BrowserActionResult_base {}
155
+ /** Safe execution evidence, independent of provider messages and application receipts.
156
+ * completed proves SDK input completion, never website acceptance or durable settlement.
157
+ */
158
+ export declare const InteractiveBrowserFailureEvidence: Schema.Struct<{
159
+ readonly stage: Schema.Literals<readonly ["preparation", "input", "observation"]>;
160
+ readonly dispatch: Schema.Literals<readonly ["not-dispatched", "completed", "unknown", "running"]>;
161
+ readonly session: Schema.Literals<readonly ["attached", "disconnected", "lost"]>;
162
+ }>;
163
+ export type InteractiveBrowserFailureEvidence = typeof InteractiveBrowserFailureEvidence.Type;
92
164
  declare const InteractiveBrowserPolicyDeniedError_base: Schema.Class<InteractiveBrowserPolicyDeniedError, Schema.TaggedStruct<"InteractiveBrowserPolicyDeniedError", {
93
165
  readonly implementation: typeof SandboxImplementation;
94
166
  readonly message: Schema.String;
167
+ readonly evidence: Schema.optionalKey<Schema.Struct<{
168
+ readonly stage: Schema.Literals<readonly ["preparation", "input", "observation"]>;
169
+ readonly dispatch: Schema.Literals<readonly ["not-dispatched", "completed", "unknown", "running"]>;
170
+ readonly session: Schema.Literals<readonly ["attached", "disconnected", "lost"]>;
171
+ }>>;
95
172
  }>, import("effect/Cause").YieldableError>;
96
173
  export declare class InteractiveBrowserPolicyDeniedError extends InteractiveBrowserPolicyDeniedError_base {}
97
174
  declare const InteractiveBrowserBusyError_base: Schema.Class<InteractiveBrowserBusyError, Schema.TaggedStruct<"InteractiveBrowserBusyError", {
@@ -107,23 +184,43 @@ export declare class InteractiveBrowserCapacityError extends InteractiveBrowserC
107
184
  declare const InteractiveBrowserExpiredError_base: Schema.Class<InteractiveBrowserExpiredError, Schema.TaggedStruct<"InteractiveBrowserExpiredError", {
108
185
  readonly implementation: typeof SandboxImplementation;
109
186
  readonly message: Schema.String;
187
+ readonly evidence: Schema.optionalKey<Schema.Struct<{
188
+ readonly stage: Schema.Literals<readonly ["preparation", "input", "observation"]>;
189
+ readonly dispatch: Schema.Literals<readonly ["not-dispatched", "completed", "unknown", "running"]>;
190
+ readonly session: Schema.Literals<readonly ["attached", "disconnected", "lost"]>;
191
+ }>>;
110
192
  }>, import("effect/Cause").YieldableError>;
111
193
  export declare class InteractiveBrowserExpiredError extends InteractiveBrowserExpiredError_base {}
112
194
  declare const InteractiveBrowserActionError_base: Schema.Class<InteractiveBrowserActionError, Schema.TaggedStruct<"InteractiveBrowserActionError", {
113
195
  readonly implementation: typeof SandboxImplementation;
114
196
  readonly operation: Schema.Literals<readonly ["navigate", "read-text", "fill", "click", "select-file", "screenshot", "scroll", "close"]>;
115
197
  readonly message: Schema.String;
198
+ readonly evidence: Schema.optionalKey<Schema.Struct<{
199
+ readonly stage: Schema.Literals<readonly ["preparation", "input", "observation"]>;
200
+ readonly dispatch: Schema.Literals<readonly ["not-dispatched", "completed", "unknown", "running"]>;
201
+ readonly session: Schema.Literals<readonly ["attached", "disconnected", "lost"]>;
202
+ }>>;
116
203
  readonly cause: Schema.optionalKey<Schema.Defect>;
117
204
  }>, import("effect/Cause").YieldableError>;
118
205
  export declare class InteractiveBrowserActionError extends InteractiveBrowserActionError_base {}
119
206
  declare const InteractiveBrowserProtocolError_base: Schema.Class<InteractiveBrowserProtocolError, Schema.TaggedStruct<"InteractiveBrowserProtocolError", {
120
207
  readonly implementation: typeof SandboxImplementation;
121
208
  readonly message: Schema.String;
209
+ readonly evidence: Schema.optionalKey<Schema.Struct<{
210
+ readonly stage: Schema.Literals<readonly ["preparation", "input", "observation"]>;
211
+ readonly dispatch: Schema.Literals<readonly ["not-dispatched", "completed", "unknown", "running"]>;
212
+ readonly session: Schema.Literals<readonly ["attached", "disconnected", "lost"]>;
213
+ }>>;
122
214
  readonly cause: Schema.optionalKey<Schema.Defect>;
123
215
  }>, import("effect/Cause").YieldableError>;
124
216
  export declare class InteractiveBrowserProtocolError extends InteractiveBrowserProtocolError_base {}
125
217
  declare const InteractiveBrowserLimitError_base: Schema.Class<InteractiveBrowserLimitError, Schema.TaggedStruct<"InteractiveBrowserLimitError", {
126
218
  readonly implementation: typeof SandboxImplementation;
219
+ readonly evidence: Schema.optionalKey<Schema.Struct<{
220
+ readonly stage: Schema.Literals<readonly ["preparation", "input", "observation"]>;
221
+ readonly dispatch: Schema.Literals<readonly ["not-dispatched", "completed", "unknown", "running"]>;
222
+ readonly session: Schema.Literals<readonly ["attached", "disconnected", "lost"]>;
223
+ }>>;
127
224
  readonly limit: Schema.Literals<readonly ["actions", "elapsed", "returned-bytes"]>;
128
225
  readonly maximum: Schema.Int;
129
226
  readonly observed: Schema.Natural;
@@ -5,6 +5,8 @@ import { Context, Option, Schema } from "effect";
5
5
  var InteractiveBrowser_exports = /* @__PURE__ */ __exportAll({
6
6
  BrowserActionResult: () => BrowserActionResult,
7
7
  BrowserClickRequest: () => BrowserClickRequest,
8
+ BrowserExpectedTarget: () => BrowserExpectedTarget,
9
+ BrowserExpectedTargetState: () => BrowserExpectedTargetState,
8
10
  BrowserFileSelectionResult: () => BrowserFileSelectionResult,
9
11
  BrowserFillRequest: () => BrowserFillRequest,
10
12
  BrowserNavigateRequest: () => BrowserNavigateRequest,
@@ -20,6 +22,7 @@ var InteractiveBrowser_exports = /* @__PURE__ */ __exportAll({
20
22
  InteractiveBrowserCapacityError: () => InteractiveBrowserCapacityError,
21
23
  InteractiveBrowserError: () => InteractiveBrowserError,
22
24
  InteractiveBrowserExpiredError: () => InteractiveBrowserExpiredError,
25
+ InteractiveBrowserFailureEvidence: () => InteractiveBrowserFailureEvidence,
23
26
  InteractiveBrowserHost: () => InteractiveBrowserHost,
24
27
  InteractiveBrowserLimitError: () => InteractiveBrowserLimitError,
25
28
  InteractiveBrowserNetworkPolicy: () => InteractiveBrowserNetworkPolicy,
@@ -75,11 +78,34 @@ var InteractiveBrowserPolicy = class extends Schema.Class("InteractiveBrowserPol
75
78
  })) {};
76
79
  var BrowserNavigateRequest = class extends Schema.Class("BrowserNavigateRequest")({ url: InteractiveBrowserTargetUrl }) {};
77
80
  var BrowserReadTextRequest = class extends Schema.Class("BrowserReadTextRequest")({ selector: Schema.optionalKey(Selector) }) {};
81
+ /** Observed control state, without an input value. Absence is part of the snapshot. */
82
+ const BrowserExpectedTargetState = Schema.Struct({
83
+ kind: Schema.String.check(Schema.isMaxLength(128)),
84
+ inputType: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(64))),
85
+ label: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(200))),
86
+ checked: Schema.optionalKey(Schema.Boolean),
87
+ selected: Schema.optionalKey(Schema.Boolean),
88
+ disabled: Schema.optionalKey(Schema.Boolean),
89
+ required: Schema.optionalKey(Schema.Boolean),
90
+ valid: Schema.optionalKey(Schema.Boolean),
91
+ formValid: Schema.optionalKey(Schema.Boolean)
92
+ });
93
+ /** Exact observed document/node identity. A replacement node is refused before input dispatch. */
94
+ const BrowserExpectedTarget = Schema.Struct({
95
+ documentId: Schema.NonEmptyString.check(Schema.isMaxLength(256)),
96
+ nodeId: Schema.NonEmptyString.check(Schema.isMaxLength(256)),
97
+ state: Schema.optionalKey(BrowserExpectedTargetState),
98
+ scopeSelector: Schema.optionalKey(Selector)
99
+ });
78
100
  var BrowserFillRequest = class extends Schema.Class("BrowserFillRequest")({
79
101
  selector: Selector,
80
- value: FieldValue
102
+ value: FieldValue,
103
+ expectedTarget: Schema.optionalKey(BrowserExpectedTarget)
104
+ }) {};
105
+ var BrowserClickRequest = class extends Schema.Class("BrowserClickRequest")({
106
+ selector: Selector,
107
+ expectedTarget: Schema.optionalKey(BrowserExpectedTarget)
81
108
  }) {};
82
- var BrowserClickRequest = class extends Schema.Class("BrowserClickRequest")({ selector: Selector }) {};
83
109
  /** Caller-owned bytes; no host filesystem paths or model-supplied script crosses this port. */
84
110
  var BrowserSelectFileRequest = class extends Schema.Class("BrowserSelectFileRequest")({
85
111
  selector: Selector,
@@ -106,9 +132,31 @@ var BrowserNavigationResult = class extends Schema.Class("BrowserNavigationResul
106
132
  var BrowserTextResult = class extends Schema.Class("BrowserTextResult")({ text: BoundedText }) {};
107
133
  /** Post-action URL observation; no provider session state crosses this boundary. */
108
134
  var BrowserActionResult = class extends Schema.Class("BrowserActionResult")({ url: InteractiveBrowserTargetUrl }) {};
135
+ /** Safe execution evidence, independent of provider messages and application receipts.
136
+ * completed proves SDK input completion, never website acceptance or durable settlement.
137
+ */
138
+ const InteractiveBrowserFailureEvidence = Schema.Struct({
139
+ stage: Schema.Literals([
140
+ "preparation",
141
+ "input",
142
+ "observation"
143
+ ]),
144
+ dispatch: Schema.Literals([
145
+ "not-dispatched",
146
+ "completed",
147
+ "unknown",
148
+ "running"
149
+ ]),
150
+ session: Schema.Literals([
151
+ "attached",
152
+ "disconnected",
153
+ "lost"
154
+ ])
155
+ });
109
156
  var InteractiveBrowserPolicyDeniedError = class extends Schema.TaggedError()("InteractiveBrowserPolicyDeniedError", {
110
157
  implementation: SandboxImplementation,
111
- message: BoundedMessage
158
+ message: BoundedMessage,
159
+ evidence: Schema.optionalKey(InteractiveBrowserFailureEvidence)
112
160
  }) {};
113
161
  var InteractiveBrowserBusyError = class extends Schema.TaggedError()("InteractiveBrowserBusyError", {
114
162
  implementation: SandboxImplementation,
@@ -120,7 +168,8 @@ var InteractiveBrowserCapacityError = class extends Schema.TaggedError()("Intera
120
168
  }) {};
121
169
  var InteractiveBrowserExpiredError = class extends Schema.TaggedError()("InteractiveBrowserExpiredError", {
122
170
  implementation: SandboxImplementation,
123
- message: BoundedMessage
171
+ message: BoundedMessage,
172
+ evidence: Schema.optionalKey(InteractiveBrowserFailureEvidence)
124
173
  }) {};
125
174
  var InteractiveBrowserActionError = class extends Schema.TaggedError()("InteractiveBrowserActionError", {
126
175
  implementation: SandboxImplementation,
@@ -135,15 +184,18 @@ var InteractiveBrowserActionError = class extends Schema.TaggedError()("Interact
135
184
  "close"
136
185
  ]),
137
186
  message: BoundedMessage,
187
+ evidence: Schema.optionalKey(InteractiveBrowserFailureEvidence),
138
188
  cause: Schema.optionalKey(Schema.Defect())
139
189
  }) {};
140
190
  var InteractiveBrowserProtocolError = class extends Schema.TaggedError()("InteractiveBrowserProtocolError", {
141
191
  implementation: SandboxImplementation,
142
192
  message: BoundedMessage,
193
+ evidence: Schema.optionalKey(InteractiveBrowserFailureEvidence),
143
194
  cause: Schema.optionalKey(Schema.Defect())
144
195
  }) {};
145
196
  var InteractiveBrowserLimitError = class extends Schema.TaggedError()("InteractiveBrowserLimitError", {
146
197
  implementation: SandboxImplementation,
198
+ evidence: Schema.optionalKey(InteractiveBrowserFailureEvidence),
147
199
  limit: Schema.Literals([
148
200
  "actions",
149
201
  "elapsed",
@@ -179,6 +231,6 @@ const InteractiveBrowserError = Schema.Union([
179
231
  ]);
180
232
  var InteractiveBrowser = class extends Context.Service()("@effect-agent/sandbox/InteractiveBrowser") {};
181
233
  //#endregion
182
- export { BrowserActionResult, BrowserClickRequest, BrowserFileSelectionResult, BrowserFillRequest, BrowserNavigateRequest, BrowserNavigationResult, BrowserReadTextRequest, BrowserScreenshotRequest, BrowserScrollRequest, BrowserSelectFileRequest, BrowserTextResult, InteractiveBrowser, InteractiveBrowserActionError, InteractiveBrowserBusyError, InteractiveBrowserCapacityError, InteractiveBrowserError, InteractiveBrowserExpiredError, InteractiveBrowserHost, InteractiveBrowserLimitError, InteractiveBrowserNetworkPolicy, InteractiveBrowserPolicy, InteractiveBrowserPolicyDeniedError, InteractiveBrowserProtocolError, InteractiveBrowserTargetUrl, InteractiveBrowserUnsupportedError, InteractiveBrowser_exports as t };
234
+ export { BrowserActionResult, BrowserClickRequest, BrowserExpectedTarget, BrowserExpectedTargetState, BrowserFileSelectionResult, BrowserFillRequest, BrowserNavigateRequest, BrowserNavigationResult, BrowserReadTextRequest, BrowserScreenshotRequest, BrowserScrollRequest, BrowserSelectFileRequest, BrowserTextResult, InteractiveBrowser, InteractiveBrowserActionError, InteractiveBrowserBusyError, InteractiveBrowserCapacityError, InteractiveBrowserError, InteractiveBrowserExpiredError, InteractiveBrowserFailureEvidence, InteractiveBrowserHost, InteractiveBrowserLimitError, InteractiveBrowserNetworkPolicy, InteractiveBrowserPolicy, InteractiveBrowserPolicyDeniedError, InteractiveBrowserProtocolError, InteractiveBrowserTargetUrl, InteractiveBrowserUnsupportedError, InteractiveBrowser_exports as t };
183
235
 
184
236
  //# sourceMappingURL=InteractiveBrowser.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"InteractiveBrowser.mjs","names":[],"sources":["../../src/sandbox/InteractiveBrowser.ts"],"sourcesContent":["import { Context, Option, Schema, type Effect, type Scope } from \"effect\";\n\nimport type { PageScreenshotResult } from \"./PageScreenshot.ts\";\nimport { SandboxImplementation } from \"./Sandbox.ts\";\n\nconst PositiveInt = Schema.Int.check(Schema.isGreaterThan(0));\nconst BoundedText = Schema.String.check(Schema.isMaxLength(8 * 1024 * 1024));\nconst BoundedMessage = Schema.String.check(Schema.isMaxLength(8 * 1024));\nconst Selector = Schema.NonEmptyString.check(Schema.isMaxLength(1_024));\nconst FieldValue = Schema.String.check(Schema.isMaxLength(64 * 1024));\nconst ScrollDelta = Schema.Int.check(Schema.isBetween({ minimum: -100_000, maximum: 100_000 }));\nconst decodeUrl = Schema.decodeUnknownOption(Schema.URLFromString);\n\n/** Absolute, bounded HTTP(S) navigation URL without embedded credentials. */\nexport const InteractiveBrowserTargetUrl = Schema.NonEmptyString.check(\n Schema.isMaxLength(8 * 1024),\n Schema.makeFilter(\n (value) => {\n const parsed = decodeUrl(value);\n\n if (Option.isNone(parsed)) return false;\n const url = parsed.value;\n\n return (\n (url.protocol === \"http:\" || url.protocol === \"https:\") &&\n url.hostname !== \"\" &&\n url.username === \"\" &&\n url.password === \"\"\n );\n },\n { title: \"an absolute HTTP or HTTPS URL without embedded credentials\" },\n ),\n);\n\nexport type InteractiveBrowserTargetUrl = typeof InteractiveBrowserTargetUrl.Type;\n\n/** Canonical HTTPS host authority, optionally carrying a non-default port. */\nexport const InteractiveBrowserHost = Schema.NonEmptyString.check(\n Schema.isMaxLength(255),\n Schema.makeFilter(\n (value) => {\n if (value.includes(\"*\")) return false;\n const parsed = decodeUrl(`https://${value}/`);\n\n if (Option.isNone(parsed)) return false;\n const url = parsed.value;\n\n return (\n url.protocol === \"https:\" &&\n url.username === \"\" &&\n url.password === \"\" &&\n url.host === value\n );\n },\n { title: \"a canonical credential-free HTTPS host authority\" },\n ),\n);\n\nexport type InteractiveBrowserHost = typeof InteractiveBrowserHost.Type;\n\n/**\n * ExactHosts retains the page-request URL allowlist, not a public-network boundary.\n * PublicWeb requires connection-time public-address enforcement for all session\n * traffic, including human navigation. Adapters that cannot enforce it must fail\n * with InteractiveBrowserUnsupportedError before acquiring a browser.\n * Unrestricted explicitly opts out of URL/host and private-network containment.\n */\nexport const InteractiveBrowserNetworkPolicy = Schema.Union([\n Schema.TaggedStruct(\"ExactHosts\", {\n allowedHosts: Schema.Array(InteractiveBrowserHost).check(\n Schema.isMinLength(1),\n Schema.isMaxLength(64),\n Schema.isUnique(),\n ),\n }),\n Schema.TaggedStruct(\"PublicWeb\", {}),\n Schema.TaggedStruct(\"Unrestricted\", {}),\n]);\n\nexport type InteractiveBrowserNetworkPolicy = typeof InteractiveBrowserNetworkPolicy.Type;\n\n/** Finite per-pass budgets. The elapsed ceiling is one hour; provider idle limits may be shorter. */\nexport class InteractiveBrowserPolicy extends Schema.Class<InteractiveBrowserPolicy>(\n \"InteractiveBrowserPolicy\",\n)(\n Schema.Struct({\n network: InteractiveBrowserNetworkPolicy,\n maxActions: PositiveInt.check(Schema.isLessThanOrEqualTo(1_000)),\n maxElapsedMillis: PositiveInt.check(Schema.isLessThanOrEqualTo(60 * 60_000)),\n maxReturnedBytes: PositiveInt.check(Schema.isLessThanOrEqualTo(8 * 1024 * 1024)),\n }),\n) {}\n\nexport class BrowserNavigateRequest extends Schema.Class<BrowserNavigateRequest>(\n \"BrowserNavigateRequest\",\n)({ url: InteractiveBrowserTargetUrl }) {}\n\nexport class BrowserReadTextRequest extends Schema.Class<BrowserReadTextRequest>(\n \"BrowserReadTextRequest\",\n)({ selector: Schema.optionalKey(Selector) }) {}\n\nexport class BrowserFillRequest extends Schema.Class<BrowserFillRequest>(\"BrowserFillRequest\")({\n selector: Selector,\n value: FieldValue,\n}) {}\n\nexport class BrowserClickRequest extends Schema.Class<BrowserClickRequest>(\"BrowserClickRequest\")({\n selector: Selector,\n}) {}\n\n/** Caller-owned bytes; no host filesystem paths or model-supplied script crosses this port. */\nexport class BrowserSelectFileRequest extends Schema.Class<BrowserSelectFileRequest>(\n \"BrowserSelectFileRequest\",\n)({\n selector: Selector,\n target: Schema.Literals([\"input\", \"chooser\"]),\n fileName: Schema.NonEmptyString.check(\n Schema.isMaxLength(200),\n // oxlint-disable-next-line no-control-regex -- File names cannot contain control characters or paths.\n Schema.isPattern(/^[^/\\\\\\x00-\\x1f\\x7f]+$/),\n ),\n mediaType: Schema.NonEmptyString.check(\n Schema.isMaxLength(127),\n Schema.isPattern(/^[a-z0-9!#$&^_.+-]+\\/[a-z0-9!#$&^_.+-]+$/),\n ),\n bytes: Schema.Uint8Array.check(Schema.isMinLength(1), Schema.isMaxLength(8 * 1024 * 1024)),\n}) {}\n\n/** Confirms selection in the input. It does not confirm a website received or submitted the file. */\nexport class BrowserFileSelectionResult extends Schema.Class<BrowserFileSelectionResult>(\n \"BrowserFileSelectionResult\",\n)({\n url: InteractiveBrowserTargetUrl,\n fileName: BrowserSelectFileRequest.fields.fileName,\n mediaType: BrowserSelectFileRequest.fields.mediaType,\n size: PositiveInt.check(Schema.isLessThanOrEqualTo(8 * 1024 * 1024)),\n}) {}\n\n/** Capture the current page without navigating or opening another browser. */\nexport class BrowserScreenshotRequest extends Schema.Class<BrowserScreenshotRequest>(\n \"BrowserScreenshotRequest\",\n)({ fullPage: Schema.Boolean }) {}\n\n/** Scroll the current viewport by signed CSS pixel deltas. */\nexport class BrowserScrollRequest extends Schema.Class<BrowserScrollRequest>(\n \"BrowserScrollRequest\",\n)({\n deltaX: ScrollDelta,\n deltaY: ScrollDelta,\n}) {}\n\nexport class BrowserNavigationResult extends Schema.Class<BrowserNavigationResult>(\n \"BrowserNavigationResult\",\n)({ url: InteractiveBrowserTargetUrl }) {}\n\nexport class BrowserTextResult extends Schema.Class<BrowserTextResult>(\"BrowserTextResult\")({\n text: BoundedText,\n}) {}\n\n/** Post-action URL observation; no provider session state crosses this boundary. */\nexport class BrowserActionResult extends Schema.Class<BrowserActionResult>(\"BrowserActionResult\")({\n url: InteractiveBrowserTargetUrl,\n}) {}\n\nexport class InteractiveBrowserPolicyDeniedError extends Schema.TaggedError<InteractiveBrowserPolicyDeniedError>()(\n \"InteractiveBrowserPolicyDeniedError\",\n { implementation: SandboxImplementation, message: BoundedMessage },\n) {}\n\nexport class InteractiveBrowserBusyError extends Schema.TaggedError<InteractiveBrowserBusyError>()(\n \"InteractiveBrowserBusyError\",\n { implementation: SandboxImplementation, message: BoundedMessage },\n) {}\n\nexport class InteractiveBrowserCapacityError extends Schema.TaggedError<InteractiveBrowserCapacityError>()(\n \"InteractiveBrowserCapacityError\",\n { implementation: SandboxImplementation, message: BoundedMessage },\n) {}\n\nexport class InteractiveBrowserExpiredError extends Schema.TaggedError<InteractiveBrowserExpiredError>()(\n \"InteractiveBrowserExpiredError\",\n { implementation: SandboxImplementation, message: BoundedMessage },\n) {}\n\nexport class InteractiveBrowserActionError extends Schema.TaggedError<InteractiveBrowserActionError>()(\n \"InteractiveBrowserActionError\",\n {\n implementation: SandboxImplementation,\n operation: Schema.Literals([\n \"navigate\",\n \"read-text\",\n \"fill\",\n \"click\",\n \"select-file\",\n \"screenshot\",\n \"scroll\",\n \"close\",\n ]),\n message: BoundedMessage,\n cause: Schema.optionalKey(Schema.Defect()),\n },\n) {}\n\nexport class InteractiveBrowserProtocolError extends Schema.TaggedError<InteractiveBrowserProtocolError>()(\n \"InteractiveBrowserProtocolError\",\n {\n implementation: SandboxImplementation,\n message: BoundedMessage,\n cause: Schema.optionalKey(Schema.Defect()),\n },\n) {}\n\nexport class InteractiveBrowserLimitError extends Schema.TaggedError<InteractiveBrowserLimitError>()(\n \"InteractiveBrowserLimitError\",\n {\n implementation: SandboxImplementation,\n limit: Schema.Literals([\"actions\", \"elapsed\", \"returned-bytes\"]),\n maximum: PositiveInt,\n observed: Schema.Natural,\n message: BoundedMessage,\n },\n) {}\n\nexport class InteractiveBrowserUnsupportedError extends Schema.TaggedError<InteractiveBrowserUnsupportedError>()(\n \"InteractiveBrowserUnsupportedError\",\n {\n implementation: SandboxImplementation,\n feature: Schema.Literals([\n \"navigation\",\n \"read-text\",\n \"fill\",\n \"click\",\n \"select-file\",\n \"screenshot\",\n \"scroll\",\n \"policy\",\n ]),\n message: BoundedMessage,\n },\n) {}\n\nexport const InteractiveBrowserError = Schema.Union([\n InteractiveBrowserPolicyDeniedError,\n InteractiveBrowserBusyError,\n InteractiveBrowserCapacityError,\n InteractiveBrowserExpiredError,\n InteractiveBrowserActionError,\n InteractiveBrowserProtocolError,\n InteractiveBrowserLimitError,\n InteractiveBrowserUnsupportedError,\n]);\n\nexport type InteractiveBrowserError = typeof InteractiveBrowserError.Type;\n\n/** A live handle is intentionally not a Schema value and cannot cross persistence/transport boundaries. */\nexport interface BrowserHandle {\n readonly navigate: (\n request: BrowserNavigateRequest,\n ) => Effect.Effect<BrowserNavigationResult, InteractiveBrowserError>;\n readonly readText: (\n request: BrowserReadTextRequest,\n ) => Effect.Effect<BrowserTextResult, InteractiveBrowserError>;\n readonly fill: (\n request: BrowserFillRequest,\n ) => Effect.Effect<BrowserActionResult, InteractiveBrowserError>;\n readonly click: (\n request: BrowserClickRequest,\n ) => Effect.Effect<BrowserActionResult, InteractiveBrowserError>;\n readonly selectFile: (\n request: BrowserSelectFileRequest,\n ) => Effect.Effect<BrowserFileSelectionResult, InteractiveBrowserError>;\n /** PNG bytes are caller-owned and bounded by the pass's per-result byte limit. */\n readonly screenshot: (\n request: BrowserScreenshotRequest,\n ) => Effect.Effect<PageScreenshotResult, InteractiveBrowserError>;\n readonly scroll: (\n request: BrowserScrollRequest,\n ) => Effect.Effect<BrowserActionResult, InteractiveBrowserError>;\n /** Invalidate the handle and close its resources early, including after an interrupted action. */\n readonly close: Effect.Effect<void, InteractiveBrowserError>;\n}\n\nexport class InteractiveBrowser extends Context.Service<\n InteractiveBrowser,\n {\n readonly open: (\n policy: InteractiveBrowserPolicy,\n ) => Effect.Effect<BrowserHandle, InteractiveBrowserError, Scope.Scope>;\n }\n>()(\"@effect-agent/sandbox/InteractiveBrowser\") {}\n"],"mappings":"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"}
1
+ {"version":3,"file":"InteractiveBrowser.mjs","names":[],"sources":["../../src/sandbox/InteractiveBrowser.ts"],"sourcesContent":["import { Context, Option, Schema, type Effect, type Scope } from \"effect\";\n\nimport type { PageScreenshotResult } from \"./PageScreenshot.ts\";\nimport { SandboxImplementation } from \"./Sandbox.ts\";\n\nconst PositiveInt = Schema.Int.check(Schema.isGreaterThan(0));\nconst BoundedText = Schema.String.check(Schema.isMaxLength(8 * 1024 * 1024));\nconst BoundedMessage = Schema.String.check(Schema.isMaxLength(8 * 1024));\nconst Selector = Schema.NonEmptyString.check(Schema.isMaxLength(1_024));\nconst FieldValue = Schema.String.check(Schema.isMaxLength(64 * 1024));\nconst ScrollDelta = Schema.Int.check(Schema.isBetween({ minimum: -100_000, maximum: 100_000 }));\nconst decodeUrl = Schema.decodeUnknownOption(Schema.URLFromString);\n\n/** Absolute, bounded HTTP(S) navigation URL without embedded credentials. */\nexport const InteractiveBrowserTargetUrl = Schema.NonEmptyString.check(\n Schema.isMaxLength(8 * 1024),\n Schema.makeFilter(\n (value) => {\n const parsed = decodeUrl(value);\n\n if (Option.isNone(parsed)) return false;\n const url = parsed.value;\n\n return (\n (url.protocol === \"http:\" || url.protocol === \"https:\") &&\n url.hostname !== \"\" &&\n url.username === \"\" &&\n url.password === \"\"\n );\n },\n { title: \"an absolute HTTP or HTTPS URL without embedded credentials\" },\n ),\n);\n\nexport type InteractiveBrowserTargetUrl = typeof InteractiveBrowserTargetUrl.Type;\n\n/** Canonical HTTPS host authority, optionally carrying a non-default port. */\nexport const InteractiveBrowserHost = Schema.NonEmptyString.check(\n Schema.isMaxLength(255),\n Schema.makeFilter(\n (value) => {\n if (value.includes(\"*\")) return false;\n const parsed = decodeUrl(`https://${value}/`);\n\n if (Option.isNone(parsed)) return false;\n const url = parsed.value;\n\n return (\n url.protocol === \"https:\" &&\n url.username === \"\" &&\n url.password === \"\" &&\n url.host === value\n );\n },\n { title: \"a canonical credential-free HTTPS host authority\" },\n ),\n);\n\nexport type InteractiveBrowserHost = typeof InteractiveBrowserHost.Type;\n\n/**\n * ExactHosts retains the page-request URL allowlist, not a public-network boundary.\n * PublicWeb requires connection-time public-address enforcement for all session\n * traffic, including human navigation. Adapters that cannot enforce it must fail\n * with InteractiveBrowserUnsupportedError before acquiring a browser.\n * Unrestricted explicitly opts out of URL/host and private-network containment.\n */\nexport const InteractiveBrowserNetworkPolicy = Schema.Union([\n Schema.TaggedStruct(\"ExactHosts\", {\n allowedHosts: Schema.Array(InteractiveBrowserHost).check(\n Schema.isMinLength(1),\n Schema.isMaxLength(64),\n Schema.isUnique(),\n ),\n }),\n Schema.TaggedStruct(\"PublicWeb\", {}),\n Schema.TaggedStruct(\"Unrestricted\", {}),\n]);\n\nexport type InteractiveBrowserNetworkPolicy = typeof InteractiveBrowserNetworkPolicy.Type;\n\n/** Finite per-pass budgets. The elapsed ceiling is one hour; provider idle limits may be shorter. */\nexport class InteractiveBrowserPolicy extends Schema.Class<InteractiveBrowserPolicy>(\n \"InteractiveBrowserPolicy\",\n)(\n Schema.Struct({\n network: InteractiveBrowserNetworkPolicy,\n maxActions: PositiveInt.check(Schema.isLessThanOrEqualTo(1_000)),\n maxElapsedMillis: PositiveInt.check(Schema.isLessThanOrEqualTo(60 * 60_000)),\n maxReturnedBytes: PositiveInt.check(Schema.isLessThanOrEqualTo(8 * 1024 * 1024)),\n }),\n) {}\n\nexport class BrowserNavigateRequest extends Schema.Class<BrowserNavigateRequest>(\n \"BrowserNavigateRequest\",\n)({ url: InteractiveBrowserTargetUrl }) {}\n\nexport class BrowserReadTextRequest extends Schema.Class<BrowserReadTextRequest>(\n \"BrowserReadTextRequest\",\n)({ selector: Schema.optionalKey(Selector) }) {}\n\n/** Observed control state, without an input value. Absence is part of the snapshot. */\nexport const BrowserExpectedTargetState = Schema.Struct({\n kind: Schema.String.check(Schema.isMaxLength(128)),\n inputType: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(64))),\n label: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(200))),\n checked: Schema.optionalKey(Schema.Boolean),\n selected: Schema.optionalKey(Schema.Boolean),\n disabled: Schema.optionalKey(Schema.Boolean),\n required: Schema.optionalKey(Schema.Boolean),\n valid: Schema.optionalKey(Schema.Boolean),\n formValid: Schema.optionalKey(Schema.Boolean),\n});\n\nexport type BrowserExpectedTargetState = typeof BrowserExpectedTargetState.Type;\n\n/** Exact observed document/node identity. A replacement node is refused before input dispatch. */\nexport const BrowserExpectedTarget = Schema.Struct({\n documentId: Schema.NonEmptyString.check(Schema.isMaxLength(256)),\n nodeId: Schema.NonEmptyString.check(Schema.isMaxLength(256)),\n state: Schema.optionalKey(BrowserExpectedTargetState),\n scopeSelector: Schema.optionalKey(Selector),\n});\n\nexport type BrowserExpectedTarget = typeof BrowserExpectedTarget.Type;\n\nexport class BrowserFillRequest extends Schema.Class<BrowserFillRequest>(\"BrowserFillRequest\")({\n selector: Selector,\n value: FieldValue,\n expectedTarget: Schema.optionalKey(BrowserExpectedTarget),\n}) {}\n\nexport class BrowserClickRequest extends Schema.Class<BrowserClickRequest>(\"BrowserClickRequest\")({\n selector: Selector,\n expectedTarget: Schema.optionalKey(BrowserExpectedTarget),\n}) {}\n\n/** Caller-owned bytes; no host filesystem paths or model-supplied script crosses this port. */\nexport class BrowserSelectFileRequest extends Schema.Class<BrowserSelectFileRequest>(\n \"BrowserSelectFileRequest\",\n)({\n selector: Selector,\n target: Schema.Literals([\"input\", \"chooser\"]),\n fileName: Schema.NonEmptyString.check(\n Schema.isMaxLength(200),\n // oxlint-disable-next-line no-control-regex -- File names cannot contain control characters or paths.\n Schema.isPattern(/^[^/\\\\\\x00-\\x1f\\x7f]+$/),\n ),\n mediaType: Schema.NonEmptyString.check(\n Schema.isMaxLength(127),\n Schema.isPattern(/^[a-z0-9!#$&^_.+-]+\\/[a-z0-9!#$&^_.+-]+$/),\n ),\n bytes: Schema.Uint8Array.check(Schema.isMinLength(1), Schema.isMaxLength(8 * 1024 * 1024)),\n}) {}\n\n/** Confirms selection in the input. It does not confirm a website received or submitted the file. */\nexport class BrowserFileSelectionResult extends Schema.Class<BrowserFileSelectionResult>(\n \"BrowserFileSelectionResult\",\n)({\n url: InteractiveBrowserTargetUrl,\n fileName: BrowserSelectFileRequest.fields.fileName,\n mediaType: BrowserSelectFileRequest.fields.mediaType,\n size: PositiveInt.check(Schema.isLessThanOrEqualTo(8 * 1024 * 1024)),\n}) {}\n\n/** Capture the current page without navigating or opening another browser. */\nexport class BrowserScreenshotRequest extends Schema.Class<BrowserScreenshotRequest>(\n \"BrowserScreenshotRequest\",\n)({ fullPage: Schema.Boolean }) {}\n\n/** Scroll the current viewport by signed CSS pixel deltas. */\nexport class BrowserScrollRequest extends Schema.Class<BrowserScrollRequest>(\n \"BrowserScrollRequest\",\n)({\n deltaX: ScrollDelta,\n deltaY: ScrollDelta,\n}) {}\n\nexport class BrowserNavigationResult extends Schema.Class<BrowserNavigationResult>(\n \"BrowserNavigationResult\",\n)({ url: InteractiveBrowserTargetUrl }) {}\n\nexport class BrowserTextResult extends Schema.Class<BrowserTextResult>(\"BrowserTextResult\")({\n text: BoundedText,\n}) {}\n\n/** Post-action URL observation; no provider session state crosses this boundary. */\nexport class BrowserActionResult extends Schema.Class<BrowserActionResult>(\"BrowserActionResult\")({\n url: InteractiveBrowserTargetUrl,\n}) {}\n\n/** Safe execution evidence, independent of provider messages and application receipts.\n * completed proves SDK input completion, never website acceptance or durable settlement.\n */\nexport const InteractiveBrowserFailureEvidence = Schema.Struct({\n stage: Schema.Literals([\"preparation\", \"input\", \"observation\"]),\n dispatch: Schema.Literals([\"not-dispatched\", \"completed\", \"unknown\", \"running\"]),\n session: Schema.Literals([\"attached\", \"disconnected\", \"lost\"]),\n});\n\nexport type InteractiveBrowserFailureEvidence = typeof InteractiveBrowserFailureEvidence.Type;\n\nexport class InteractiveBrowserPolicyDeniedError extends Schema.TaggedError<InteractiveBrowserPolicyDeniedError>()(\n \"InteractiveBrowserPolicyDeniedError\",\n {\n implementation: SandboxImplementation,\n message: BoundedMessage,\n evidence: Schema.optionalKey(InteractiveBrowserFailureEvidence),\n },\n) {}\n\nexport class InteractiveBrowserBusyError extends Schema.TaggedError<InteractiveBrowserBusyError>()(\n \"InteractiveBrowserBusyError\",\n { implementation: SandboxImplementation, message: BoundedMessage },\n) {}\n\nexport class InteractiveBrowserCapacityError extends Schema.TaggedError<InteractiveBrowserCapacityError>()(\n \"InteractiveBrowserCapacityError\",\n { implementation: SandboxImplementation, message: BoundedMessage },\n) {}\n\nexport class InteractiveBrowserExpiredError extends Schema.TaggedError<InteractiveBrowserExpiredError>()(\n \"InteractiveBrowserExpiredError\",\n {\n implementation: SandboxImplementation,\n message: BoundedMessage,\n evidence: Schema.optionalKey(InteractiveBrowserFailureEvidence),\n },\n) {}\n\nexport class InteractiveBrowserActionError extends Schema.TaggedError<InteractiveBrowserActionError>()(\n \"InteractiveBrowserActionError\",\n {\n implementation: SandboxImplementation,\n operation: Schema.Literals([\n \"navigate\",\n \"read-text\",\n \"fill\",\n \"click\",\n \"select-file\",\n \"screenshot\",\n \"scroll\",\n \"close\",\n ]),\n message: BoundedMessage,\n evidence: Schema.optionalKey(InteractiveBrowserFailureEvidence),\n cause: Schema.optionalKey(Schema.Defect()),\n },\n) {}\n\nexport class InteractiveBrowserProtocolError extends Schema.TaggedError<InteractiveBrowserProtocolError>()(\n \"InteractiveBrowserProtocolError\",\n {\n implementation: SandboxImplementation,\n message: BoundedMessage,\n evidence: Schema.optionalKey(InteractiveBrowserFailureEvidence),\n cause: Schema.optionalKey(Schema.Defect()),\n },\n) {}\n\nexport class InteractiveBrowserLimitError extends Schema.TaggedError<InteractiveBrowserLimitError>()(\n \"InteractiveBrowserLimitError\",\n {\n implementation: SandboxImplementation,\n evidence: Schema.optionalKey(InteractiveBrowserFailureEvidence),\n limit: Schema.Literals([\"actions\", \"elapsed\", \"returned-bytes\"]),\n maximum: PositiveInt,\n observed: Schema.Natural,\n message: BoundedMessage,\n },\n) {}\n\nexport class InteractiveBrowserUnsupportedError extends Schema.TaggedError<InteractiveBrowserUnsupportedError>()(\n \"InteractiveBrowserUnsupportedError\",\n {\n implementation: SandboxImplementation,\n feature: Schema.Literals([\n \"navigation\",\n \"read-text\",\n \"fill\",\n \"click\",\n \"select-file\",\n \"screenshot\",\n \"scroll\",\n \"policy\",\n ]),\n message: BoundedMessage,\n },\n) {}\n\nexport const InteractiveBrowserError = Schema.Union([\n InteractiveBrowserPolicyDeniedError,\n InteractiveBrowserBusyError,\n InteractiveBrowserCapacityError,\n InteractiveBrowserExpiredError,\n InteractiveBrowserActionError,\n InteractiveBrowserProtocolError,\n InteractiveBrowserLimitError,\n InteractiveBrowserUnsupportedError,\n]);\n\nexport type InteractiveBrowserError = typeof InteractiveBrowserError.Type;\n\n/** A live handle is intentionally not a Schema value and cannot cross persistence/transport boundaries. */\nexport interface BrowserHandle {\n readonly navigate: (\n request: BrowserNavigateRequest,\n ) => Effect.Effect<BrowserNavigationResult, InteractiveBrowserError>;\n readonly readText: (\n request: BrowserReadTextRequest,\n ) => Effect.Effect<BrowserTextResult, InteractiveBrowserError>;\n readonly fill: (\n request: BrowserFillRequest,\n ) => Effect.Effect<BrowserActionResult, InteractiveBrowserError>;\n readonly click: (\n request: BrowserClickRequest,\n ) => Effect.Effect<BrowserActionResult, InteractiveBrowserError>;\n readonly selectFile: (\n request: BrowserSelectFileRequest,\n ) => Effect.Effect<BrowserFileSelectionResult, InteractiveBrowserError>;\n /** PNG bytes are caller-owned and bounded by the pass's per-result byte limit. */\n readonly screenshot: (\n request: BrowserScreenshotRequest,\n ) => Effect.Effect<PageScreenshotResult, InteractiveBrowserError>;\n readonly scroll: (\n request: BrowserScrollRequest,\n ) => Effect.Effect<BrowserActionResult, InteractiveBrowserError>;\n /** Invalidate the handle and close its resources early, including after an interrupted action. */\n readonly close: Effect.Effect<void, InteractiveBrowserError>;\n}\n\nexport class InteractiveBrowser extends Context.Service<\n InteractiveBrowser,\n {\n readonly open: (\n policy: InteractiveBrowserPolicy,\n ) => Effect.Effect<BrowserHandle, InteractiveBrowserError, Scope.Scope>;\n }\n>()(\"@effect-agent/sandbox/InteractiveBrowser\") {}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"effect-agent","version":"0.1.0-beta.110","devDependencies":{"@effect/platform-node":"4.0.0-rc.115","@effect/vitest":"4.0.0-rc.115","effect":"4.0.0-rc.115","typescript":"7.0.2","vite-plus":"0.3.2"},"peerDependencies":{"effect":"^4.0.0-rc.115"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./activity-store":{"types":"./dist/durable/ActivityStore.d.mts","default":"./dist/durable/ActivityStore.mjs"},"./admin":{"types":"./dist/durable/Admin.d.mts","default":"./dist/durable/Admin.mjs"},"./agent":{"types":"./dist/core/Agent.d.mts","default":"./dist/core/Agent.mjs"},"./agent-error":{"types":"./dist/core/AgentError.d.mts","default":"./dist/core/AgentError.mjs"},"./agent-policy":{"types":"./dist/core/AgentPolicy.d.mts","default":"./dist/core/AgentPolicy.mjs"},"./agent-registration":{"types":"./dist/durable/AgentRegistration.d.mts","default":"./dist/durable/AgentRegistration.mjs"},"./agent-runtime":{"types":"./dist/engine/AgentRuntime.d.mts","default":"./dist/engine/AgentRuntime.mjs"},"./agent-updates":{"types":"./dist/core/AgentUpdates.d.mts","default":"./dist/core/AgentUpdates.mjs"},"./approval":{"types":"./dist/capabilities/Approval.d.mts","default":"./dist/capabilities/Approval.mjs"},"./budget":{"types":"./dist/capabilities/Budget.d.mts","default":"./dist/capabilities/Budget.mjs"},"./code-executor":{"types":"./dist/sandbox/CodeExecutor.d.mts","default":"./dist/sandbox/CodeExecutor.mjs"},"./code-mode":{"types":"./dist/capabilities/CodeMode.d.mts","default":"./dist/capabilities/CodeMode.mjs"},"./commands":{"types":"./dist/capabilities/Commands.d.mts","default":"./dist/capabilities/Commands.mjs"},"./committed-activity":{"types":"./dist/durable/CommittedActivity.d.mts","default":"./dist/durable/CommittedActivity.mjs"},"./compaction":{"types":"./dist/engine/Compaction.d.mts","default":"./dist/engine/Compaction.mjs"},"./context-compactor":{"types":"./dist/engine/ContextCompactor.d.mts","default":"./dist/engine/ContextCompactor.mjs"},"./context-history":{"types":"./dist/engine/ContextHistory.d.mts","default":"./dist/engine/ContextHistory.mjs"},"./context-tools":{"types":"./dist/capabilities/ContextTools.d.mts","default":"./dist/capabilities/ContextTools.mjs"},"./context-window":{"types":"./dist/engine/ContextWindow.d.mts","default":"./dist/engine/ContextWindow.mjs"},"./digest":{"types":"./dist/durable/Digest.d.mts","default":"./dist/durable/Digest.mjs"},"./durable-agent-runtime":{"types":"./dist/durable/DurableAgentRuntime.d.mts","default":"./dist/durable/DurableAgentRuntime.mjs"},"./durable-failpoint":{"types":"./dist/durable/DurableFailpoint.d.mts","default":"./dist/durable/DurableFailpoint.mjs"},"./durable-step":{"types":"./dist/engine/DurableStep.d.mts","default":"./dist/engine/DurableStep.mjs"},"./event-source":{"types":"./dist/durable/EventSource.d.mts","default":"./dist/durable/EventSource.mjs"},"./failure-diagnostic":{"types":"./dist/core/FailureDiagnostic.d.mts","default":"./dist/core/FailureDiagnostic.mjs"},"./git-hub-workflow-source":{"types":"./dist/durable/GitHubWorkflowSource.d.mts","default":"./dist/durable/GitHubWorkflowSource.mjs"},"./id-generator":{"types":"./dist/core/IdGenerator.d.mts","default":"./dist/core/IdGenerator.mjs"},"./identifiers":{"types":"./dist/core/Identifiers.d.mts","default":"./dist/core/Identifiers.mjs"},"./in-memory":{"types":"./dist/InMemory.d.mts","default":"./dist/InMemory.mjs"},"./interactive-browser":{"types":"./dist/sandbox/InteractiveBrowser.d.mts","default":"./dist/sandbox/InteractiveBrowser.mjs"},"./mcp":{"types":"./dist/capabilities/Mcp.d.mts","default":"./dist/capabilities/Mcp.mjs"},"./mcp-client":{"types":"./dist/capabilities/McpClient.d.mts","default":"./dist/capabilities/McpClient.mjs"},"./memory":{"types":"./dist/core/Memory.d.mts","default":"./dist/core/Memory.mjs"},"./memory-namespace":{"types":"./dist/core/MemoryNamespace.d.mts","default":"./dist/core/MemoryNamespace.mjs"},"./memory-notes":{"types":"./dist/capabilities/MemoryNotes.d.mts","default":"./dist/capabilities/MemoryNotes.mjs"},"./memory-reference":{"types":"./dist/core/MemoryReference.d.mts","default":"./dist/core/MemoryReference.mjs"},"./memory-revalidation":{"types":"./dist/core/MemoryRevalidation.d.mts","default":"./dist/core/MemoryRevalidation.mjs"},"./memory-store":{"types":"./dist/core/MemoryStore.d.mts","default":"./dist/core/MemoryStore.mjs"},"./message-delivery":{"types":"./dist/durable/MessageDelivery.d.mts","default":"./dist/durable/MessageDelivery.mjs"},"./messaging":{"types":"./dist/capabilities/Messaging.d.mts","default":"./dist/capabilities/Messaging.mjs"},"./messaging-host":{"types":"./dist/engine/MessagingHost.d.mts","default":"./dist/engine/MessagingHost.mjs"},"./model-context":{"types":"./dist/capabilities/ModelContext.d.mts","default":"./dist/capabilities/ModelContext.mjs"},"./operation-authorizer":{"types":"./dist/durable/OperationAuthorizer.d.mts","default":"./dist/durable/OperationAuthorizer.mjs"},"./output":{"types":"./dist/engine/Output.d.mts","default":"./dist/engine/Output.mjs"},"./page-capture":{"types":"./dist/sandbox/PageCapture.d.mts","default":"./dist/sandbox/PageCapture.mjs"},"./page-crawl":{"types":"./dist/sandbox/PageCrawl.d.mts","default":"./dist/sandbox/PageCrawl.mjs"},"./page-screenshot":{"types":"./dist/sandbox/PageScreenshot.d.mts","default":"./dist/sandbox/PageScreenshot.mjs"},"./persistent-history":{"types":"./dist/durable/PersistentHistory.d.mts","default":"./dist/durable/PersistentHistory.mjs"},"./prepared-input-admission":{"types":"./dist/durable/PreparedInputAdmission.d.mts","default":"./dist/durable/PreparedInputAdmission.mjs"},"./protected-browser":{"types":"./dist/sandbox/ProtectedBrowser.d.mts","default":"./dist/sandbox/ProtectedBrowser.mjs"},"./receipt":{"types":"./dist/core/Receipt.d.mts","default":"./dist/core/Receipt.mjs"},"./records":{"types":"./dist/durable/Records.d.mts","default":"./dist/durable/Records.mjs"},"./recovery":{"types":"./dist/durable/Recovery.d.mts","default":"./dist/durable/Recovery.mjs"},"./redaction":{"types":"./dist/capabilities/Redaction.d.mts","default":"./dist/capabilities/Redaction.mjs"},"./remembering":{"types":"./dist/capabilities/Remembering.d.mts","default":"./dist/capabilities/Remembering.mjs"},"./remembering-store":{"types":"./dist/core/RememberingStore.d.mts","default":"./dist/core/RememberingStore.mjs"},"./run-event":{"types":"./dist/core/RunEvent.d.mts","default":"./dist/core/RunEvent.mjs"},"./run-event-sink":{"types":"./dist/engine/RunEventSink.d.mts","default":"./dist/engine/RunEventSink.mjs"},"./run-hooks":{"types":"./dist/capabilities/RunHooks.d.mts","default":"./dist/capabilities/RunHooks.mjs"},"./run-journal":{"types":"./dist/durable/RunJournal.d.mts","default":"./dist/durable/RunJournal.mjs"},"./run-options":{"types":"./dist/engine/RunOptions.d.mts","default":"./dist/engine/RunOptions.mjs"},"./run-policy-usage":{"types":"./dist/core/RunPolicyUsage.d.mts","default":"./dist/core/RunPolicyUsage.mjs"},"./sandbox":{"types":"./dist/sandbox/Sandbox.d.mts","default":"./dist/sandbox/Sandbox.mjs"},"./schedule":{"types":"./dist/durable/Schedule.d.mts","default":"./dist/durable/Schedule.mjs"},"./schedule-transition":{"types":"./dist/durable/ScheduleTransition.d.mts","default":"./dist/durable/ScheduleTransition.mjs"},"./scheduling":{"types":"./dist/durable/Scheduling.d.mts","default":"./dist/durable/Scheduling.mjs"},"./semantic-memory":{"types":"./dist/capabilities/SemanticMemory.d.mts","default":"./dist/capabilities/SemanticMemory.mjs"},"./semantic-memory-index":{"types":"./dist/core/SemanticMemoryIndex.d.mts","default":"./dist/core/SemanticMemoryIndex.mjs"},"./semantic-memory-revalidation":{"types":"./dist/core/SemanticMemoryRevalidation.d.mts","default":"./dist/core/SemanticMemoryRevalidation.mjs"},"./sql-thread-native-reads":{"types":"./dist/durable/SqlThreadNativeReads.d.mts","default":"./dist/durable/SqlThreadNativeReads.mjs"},"./sql-memory-store":{"types":"./dist/durable/SqlMemoryStore.d.mts","default":"./dist/durable/SqlMemoryStore.mjs"},"./sql-message-delivery-store":{"types":"./dist/durable/SqlMessageDeliveryStore.d.mts","default":"./dist/durable/SqlMessageDeliveryStore.mjs"},"./sql-storage-v2-upgrade":{"types":"./dist/durable/SqlStorageV2Upgrade.d.mts","default":"./dist/durable/SqlStorageV2Upgrade.mjs"},"./sql-subscription-store":{"types":"./dist/durable/SqlSubscriptionStore.d.mts","default":"./dist/durable/SqlSubscriptionStore.mjs"},"./subagent":{"types":"./dist/capabilities/Subagent.d.mts","default":"./dist/capabilities/Subagent.mjs"},"./subagent-contract":{"types":"./dist/core/SubagentContract.d.mts","default":"./dist/core/SubagentContract.mjs"},"./subagent-host":{"types":"./dist/engine/SubagentHost.d.mts","default":"./dist/engine/SubagentHost.mjs"},"./subagent-reservations":{"types":"./dist/capabilities/SubagentReservations.d.mts","default":"./dist/capabilities/SubagentReservations.mjs"},"./submission-ledger":{"types":"./dist/durable/SubmissionLedger.d.mts","default":"./dist/durable/SubmissionLedger.mjs"},"./submission-status":{"types":"./dist/durable/SubmissionStatus.d.mts","default":"./dist/durable/SubmissionStatus.mjs"},"./subscription":{"types":"./dist/durable/Subscription.d.mts","default":"./dist/durable/Subscription.mjs"},"./subscription-input":{"types":"./dist/durable/SubscriptionInput.d.mts","default":"./dist/durable/SubscriptionInput.mjs"},"./subscription-tools":{"types":"./dist/durable/SubscriptionTools.d.mts","default":"./dist/durable/SubscriptionTools.mjs"},"./subscription-transition":{"types":"./dist/durable/SubscriptionTransition.d.mts","default":"./dist/durable/SubscriptionTransition.mjs"},"./subscriptions":{"types":"./dist/durable/Subscriptions.d.mts","default":"./dist/durable/Subscriptions.mjs"},"./testing/certification":{"types":"./dist/durable/Certification.d.mts","default":"./dist/durable/Certification.mjs"},"./testing/durable-failpoint-test-control":{"types":"./dist/durable/DurableFailpointTestControl.d.mts","default":"./dist/durable/DurableFailpointTestControl.mjs"},"./testing/message-delivery-store-conformance":{"types":"./dist/durable/MessageDeliveryStoreConformance.d.mts","default":"./dist/durable/MessageDeliveryStoreConformance.mjs"},"./testing/schedule-store-conformance":{"types":"./dist/durable/ScheduleStoreConformance.d.mts","default":"./dist/durable/ScheduleStoreConformance.mjs"},"./testing/submission-ledger-conformance":{"types":"./dist/durable/SubmissionLedgerConformance.d.mts","default":"./dist/durable/SubmissionLedgerConformance.mjs"},"./testing/subscription-store-conformance":{"types":"./dist/durable/SubscriptionStoreConformance.d.mts","default":"./dist/durable/SubscriptionStoreConformance.mjs"},"./testing/thread-store-conformance":{"types":"./dist/durable/ThreadStoreConformance.d.mts","default":"./dist/durable/ThreadStoreConformance.mjs"},"./thread":{"types":"./dist/core/Thread.d.mts","default":"./dist/core/Thread.mjs"},"./thread-context-history":{"types":"./dist/durable/ThreadContextHistory.d.mts","default":"./dist/durable/ThreadContextHistory.mjs"},"./thread-context-history-projection":{"types":"./dist/durable/ThreadContextHistoryProjection.d.mts","default":"./dist/durable/ThreadContextHistoryProjection.mjs"},"./thread-history":{"types":"./dist/engine/ThreadHistory.d.mts","default":"./dist/engine/ThreadHistory.mjs"},"./thread-invariants":{"types":"./dist/durable/ThreadInvariants.d.mts","default":"./dist/durable/ThreadInvariants.mjs"},"./thread-projection":{"types":"./dist/durable/ThreadProjection.d.mts","default":"./dist/durable/ThreadProjection.mjs"},"./thread-projection-maintenance":{"types":"./dist/durable/ThreadProjectionMaintenance.d.mts","default":"./dist/durable/ThreadProjectionMaintenance.mjs"},"./thread-store":{"types":"./dist/durable/ThreadStore.d.mts","default":"./dist/durable/ThreadStore.mjs"},"./tool-broker":{"types":"./dist/engine/ToolBroker.d.mts","default":"./dist/engine/ToolBroker.mjs"},"./tool-discovery":{"types":"./dist/capabilities/ToolDiscovery.d.mts","default":"./dist/capabilities/ToolDiscovery.mjs"},"./tool-exposure":{"types":"./dist/ToolExposure.d.mts","default":"./dist/ToolExposure.mjs"},"./tool-reconciler":{"types":"./dist/durable/ToolReconciler.d.mts","default":"./dist/durable/ToolReconciler.mjs"},"./tool-result":{"types":"./dist/core/ToolResult.d.mts","default":"./dist/core/ToolResult.mjs"},"./usage":{"types":"./dist/core/Usage.d.mts","default":"./dist/core/Usage.mjs"},"./wake-scheduler":{"types":"./dist/durable/WakeScheduler.d.mts","default":"./dist/durable/WakeScheduler.mjs"},"./web-capture":{"types":"./dist/capabilities/WebCapture.d.mts","default":"./dist/capabilities/WebCapture.mjs"},"./web-search":{"types":"./dist/capabilities/WebSearch.d.mts","default":"./dist/capabilities/WebSearch.mjs"},"./worker":{"types":"./dist/core/Worker.d.mts","default":"./dist/core/Worker.mjs"},"./worker-host":{"types":"./dist/durable/WorkerHost.d.mts","default":"./dist/durable/WorkerHost.mjs"}},"description":"Effect-native agents, execution, subagents, and sandbox contracts in one tree-shakeable package.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/danieljvdm/effect-agent.git","directory":"packages/effect-agent"},"files":["dist","src"],"type":"module","sideEffects":[],"publishConfig":{"access":"public"},"scripts":{"build":"vp pack","check":"tsc --noEmit -p tsconfig.json","test":"vp test --passWithNoTests"}}
1
+ {"name":"effect-agent","version":"0.1.0-beta.111","devDependencies":{"@effect/platform-node":"4.0.0-rc.115","@effect/vitest":"4.0.0-rc.115","effect":"4.0.0-rc.115","typescript":"7.0.2","vite-plus":"0.3.2"},"peerDependencies":{"effect":"^4.0.0-rc.115"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./activity-store":{"types":"./dist/durable/ActivityStore.d.mts","default":"./dist/durable/ActivityStore.mjs"},"./admin":{"types":"./dist/durable/Admin.d.mts","default":"./dist/durable/Admin.mjs"},"./agent":{"types":"./dist/core/Agent.d.mts","default":"./dist/core/Agent.mjs"},"./agent-error":{"types":"./dist/core/AgentError.d.mts","default":"./dist/core/AgentError.mjs"},"./agent-policy":{"types":"./dist/core/AgentPolicy.d.mts","default":"./dist/core/AgentPolicy.mjs"},"./agent-registration":{"types":"./dist/durable/AgentRegistration.d.mts","default":"./dist/durable/AgentRegistration.mjs"},"./agent-runtime":{"types":"./dist/engine/AgentRuntime.d.mts","default":"./dist/engine/AgentRuntime.mjs"},"./agent-updates":{"types":"./dist/core/AgentUpdates.d.mts","default":"./dist/core/AgentUpdates.mjs"},"./approval":{"types":"./dist/capabilities/Approval.d.mts","default":"./dist/capabilities/Approval.mjs"},"./budget":{"types":"./dist/capabilities/Budget.d.mts","default":"./dist/capabilities/Budget.mjs"},"./code-executor":{"types":"./dist/sandbox/CodeExecutor.d.mts","default":"./dist/sandbox/CodeExecutor.mjs"},"./code-mode":{"types":"./dist/capabilities/CodeMode.d.mts","default":"./dist/capabilities/CodeMode.mjs"},"./commands":{"types":"./dist/capabilities/Commands.d.mts","default":"./dist/capabilities/Commands.mjs"},"./committed-activity":{"types":"./dist/durable/CommittedActivity.d.mts","default":"./dist/durable/CommittedActivity.mjs"},"./compaction":{"types":"./dist/engine/Compaction.d.mts","default":"./dist/engine/Compaction.mjs"},"./context-compactor":{"types":"./dist/engine/ContextCompactor.d.mts","default":"./dist/engine/ContextCompactor.mjs"},"./context-history":{"types":"./dist/engine/ContextHistory.d.mts","default":"./dist/engine/ContextHistory.mjs"},"./context-tools":{"types":"./dist/capabilities/ContextTools.d.mts","default":"./dist/capabilities/ContextTools.mjs"},"./context-window":{"types":"./dist/engine/ContextWindow.d.mts","default":"./dist/engine/ContextWindow.mjs"},"./digest":{"types":"./dist/durable/Digest.d.mts","default":"./dist/durable/Digest.mjs"},"./durable-agent-runtime":{"types":"./dist/durable/DurableAgentRuntime.d.mts","default":"./dist/durable/DurableAgentRuntime.mjs"},"./durable-failpoint":{"types":"./dist/durable/DurableFailpoint.d.mts","default":"./dist/durable/DurableFailpoint.mjs"},"./durable-step":{"types":"./dist/engine/DurableStep.d.mts","default":"./dist/engine/DurableStep.mjs"},"./event-source":{"types":"./dist/durable/EventSource.d.mts","default":"./dist/durable/EventSource.mjs"},"./failure-diagnostic":{"types":"./dist/core/FailureDiagnostic.d.mts","default":"./dist/core/FailureDiagnostic.mjs"},"./git-hub-workflow-source":{"types":"./dist/durable/GitHubWorkflowSource.d.mts","default":"./dist/durable/GitHubWorkflowSource.mjs"},"./id-generator":{"types":"./dist/core/IdGenerator.d.mts","default":"./dist/core/IdGenerator.mjs"},"./identifiers":{"types":"./dist/core/Identifiers.d.mts","default":"./dist/core/Identifiers.mjs"},"./in-memory":{"types":"./dist/InMemory.d.mts","default":"./dist/InMemory.mjs"},"./interactive-browser":{"types":"./dist/sandbox/InteractiveBrowser.d.mts","default":"./dist/sandbox/InteractiveBrowser.mjs"},"./mcp":{"types":"./dist/capabilities/Mcp.d.mts","default":"./dist/capabilities/Mcp.mjs"},"./mcp-client":{"types":"./dist/capabilities/McpClient.d.mts","default":"./dist/capabilities/McpClient.mjs"},"./memory":{"types":"./dist/core/Memory.d.mts","default":"./dist/core/Memory.mjs"},"./memory-namespace":{"types":"./dist/core/MemoryNamespace.d.mts","default":"./dist/core/MemoryNamespace.mjs"},"./memory-notes":{"types":"./dist/capabilities/MemoryNotes.d.mts","default":"./dist/capabilities/MemoryNotes.mjs"},"./memory-reference":{"types":"./dist/core/MemoryReference.d.mts","default":"./dist/core/MemoryReference.mjs"},"./memory-revalidation":{"types":"./dist/core/MemoryRevalidation.d.mts","default":"./dist/core/MemoryRevalidation.mjs"},"./memory-store":{"types":"./dist/core/MemoryStore.d.mts","default":"./dist/core/MemoryStore.mjs"},"./message-delivery":{"types":"./dist/durable/MessageDelivery.d.mts","default":"./dist/durable/MessageDelivery.mjs"},"./messaging":{"types":"./dist/capabilities/Messaging.d.mts","default":"./dist/capabilities/Messaging.mjs"},"./messaging-host":{"types":"./dist/engine/MessagingHost.d.mts","default":"./dist/engine/MessagingHost.mjs"},"./model-context":{"types":"./dist/capabilities/ModelContext.d.mts","default":"./dist/capabilities/ModelContext.mjs"},"./operation-authorizer":{"types":"./dist/durable/OperationAuthorizer.d.mts","default":"./dist/durable/OperationAuthorizer.mjs"},"./output":{"types":"./dist/engine/Output.d.mts","default":"./dist/engine/Output.mjs"},"./page-capture":{"types":"./dist/sandbox/PageCapture.d.mts","default":"./dist/sandbox/PageCapture.mjs"},"./page-crawl":{"types":"./dist/sandbox/PageCrawl.d.mts","default":"./dist/sandbox/PageCrawl.mjs"},"./page-screenshot":{"types":"./dist/sandbox/PageScreenshot.d.mts","default":"./dist/sandbox/PageScreenshot.mjs"},"./persistent-history":{"types":"./dist/durable/PersistentHistory.d.mts","default":"./dist/durable/PersistentHistory.mjs"},"./prepared-input-admission":{"types":"./dist/durable/PreparedInputAdmission.d.mts","default":"./dist/durable/PreparedInputAdmission.mjs"},"./protected-browser":{"types":"./dist/sandbox/ProtectedBrowser.d.mts","default":"./dist/sandbox/ProtectedBrowser.mjs"},"./receipt":{"types":"./dist/core/Receipt.d.mts","default":"./dist/core/Receipt.mjs"},"./records":{"types":"./dist/durable/Records.d.mts","default":"./dist/durable/Records.mjs"},"./recovery":{"types":"./dist/durable/Recovery.d.mts","default":"./dist/durable/Recovery.mjs"},"./redaction":{"types":"./dist/capabilities/Redaction.d.mts","default":"./dist/capabilities/Redaction.mjs"},"./remembering":{"types":"./dist/capabilities/Remembering.d.mts","default":"./dist/capabilities/Remembering.mjs"},"./remembering-store":{"types":"./dist/core/RememberingStore.d.mts","default":"./dist/core/RememberingStore.mjs"},"./run-event":{"types":"./dist/core/RunEvent.d.mts","default":"./dist/core/RunEvent.mjs"},"./run-event-sink":{"types":"./dist/engine/RunEventSink.d.mts","default":"./dist/engine/RunEventSink.mjs"},"./run-hooks":{"types":"./dist/capabilities/RunHooks.d.mts","default":"./dist/capabilities/RunHooks.mjs"},"./run-journal":{"types":"./dist/durable/RunJournal.d.mts","default":"./dist/durable/RunJournal.mjs"},"./run-options":{"types":"./dist/engine/RunOptions.d.mts","default":"./dist/engine/RunOptions.mjs"},"./run-policy-usage":{"types":"./dist/core/RunPolicyUsage.d.mts","default":"./dist/core/RunPolicyUsage.mjs"},"./sandbox":{"types":"./dist/sandbox/Sandbox.d.mts","default":"./dist/sandbox/Sandbox.mjs"},"./schedule":{"types":"./dist/durable/Schedule.d.mts","default":"./dist/durable/Schedule.mjs"},"./schedule-transition":{"types":"./dist/durable/ScheduleTransition.d.mts","default":"./dist/durable/ScheduleTransition.mjs"},"./scheduling":{"types":"./dist/durable/Scheduling.d.mts","default":"./dist/durable/Scheduling.mjs"},"./semantic-memory":{"types":"./dist/capabilities/SemanticMemory.d.mts","default":"./dist/capabilities/SemanticMemory.mjs"},"./semantic-memory-index":{"types":"./dist/core/SemanticMemoryIndex.d.mts","default":"./dist/core/SemanticMemoryIndex.mjs"},"./semantic-memory-revalidation":{"types":"./dist/core/SemanticMemoryRevalidation.d.mts","default":"./dist/core/SemanticMemoryRevalidation.mjs"},"./sql-thread-native-reads":{"types":"./dist/durable/SqlThreadNativeReads.d.mts","default":"./dist/durable/SqlThreadNativeReads.mjs"},"./sql-memory-store":{"types":"./dist/durable/SqlMemoryStore.d.mts","default":"./dist/durable/SqlMemoryStore.mjs"},"./sql-message-delivery-store":{"types":"./dist/durable/SqlMessageDeliveryStore.d.mts","default":"./dist/durable/SqlMessageDeliveryStore.mjs"},"./sql-storage-v2-upgrade":{"types":"./dist/durable/SqlStorageV2Upgrade.d.mts","default":"./dist/durable/SqlStorageV2Upgrade.mjs"},"./sql-subscription-store":{"types":"./dist/durable/SqlSubscriptionStore.d.mts","default":"./dist/durable/SqlSubscriptionStore.mjs"},"./subagent":{"types":"./dist/capabilities/Subagent.d.mts","default":"./dist/capabilities/Subagent.mjs"},"./subagent-contract":{"types":"./dist/core/SubagentContract.d.mts","default":"./dist/core/SubagentContract.mjs"},"./subagent-host":{"types":"./dist/engine/SubagentHost.d.mts","default":"./dist/engine/SubagentHost.mjs"},"./subagent-reservations":{"types":"./dist/capabilities/SubagentReservations.d.mts","default":"./dist/capabilities/SubagentReservations.mjs"},"./submission-ledger":{"types":"./dist/durable/SubmissionLedger.d.mts","default":"./dist/durable/SubmissionLedger.mjs"},"./submission-status":{"types":"./dist/durable/SubmissionStatus.d.mts","default":"./dist/durable/SubmissionStatus.mjs"},"./subscription":{"types":"./dist/durable/Subscription.d.mts","default":"./dist/durable/Subscription.mjs"},"./subscription-input":{"types":"./dist/durable/SubscriptionInput.d.mts","default":"./dist/durable/SubscriptionInput.mjs"},"./subscription-tools":{"types":"./dist/durable/SubscriptionTools.d.mts","default":"./dist/durable/SubscriptionTools.mjs"},"./subscription-transition":{"types":"./dist/durable/SubscriptionTransition.d.mts","default":"./dist/durable/SubscriptionTransition.mjs"},"./subscriptions":{"types":"./dist/durable/Subscriptions.d.mts","default":"./dist/durable/Subscriptions.mjs"},"./testing/certification":{"types":"./dist/durable/Certification.d.mts","default":"./dist/durable/Certification.mjs"},"./testing/durable-failpoint-test-control":{"types":"./dist/durable/DurableFailpointTestControl.d.mts","default":"./dist/durable/DurableFailpointTestControl.mjs"},"./testing/message-delivery-store-conformance":{"types":"./dist/durable/MessageDeliveryStoreConformance.d.mts","default":"./dist/durable/MessageDeliveryStoreConformance.mjs"},"./testing/schedule-store-conformance":{"types":"./dist/durable/ScheduleStoreConformance.d.mts","default":"./dist/durable/ScheduleStoreConformance.mjs"},"./testing/submission-ledger-conformance":{"types":"./dist/durable/SubmissionLedgerConformance.d.mts","default":"./dist/durable/SubmissionLedgerConformance.mjs"},"./testing/subscription-store-conformance":{"types":"./dist/durable/SubscriptionStoreConformance.d.mts","default":"./dist/durable/SubscriptionStoreConformance.mjs"},"./testing/thread-store-conformance":{"types":"./dist/durable/ThreadStoreConformance.d.mts","default":"./dist/durable/ThreadStoreConformance.mjs"},"./thread":{"types":"./dist/core/Thread.d.mts","default":"./dist/core/Thread.mjs"},"./thread-context-history":{"types":"./dist/durable/ThreadContextHistory.d.mts","default":"./dist/durable/ThreadContextHistory.mjs"},"./thread-context-history-projection":{"types":"./dist/durable/ThreadContextHistoryProjection.d.mts","default":"./dist/durable/ThreadContextHistoryProjection.mjs"},"./thread-history":{"types":"./dist/engine/ThreadHistory.d.mts","default":"./dist/engine/ThreadHistory.mjs"},"./thread-invariants":{"types":"./dist/durable/ThreadInvariants.d.mts","default":"./dist/durable/ThreadInvariants.mjs"},"./thread-projection":{"types":"./dist/durable/ThreadProjection.d.mts","default":"./dist/durable/ThreadProjection.mjs"},"./thread-projection-maintenance":{"types":"./dist/durable/ThreadProjectionMaintenance.d.mts","default":"./dist/durable/ThreadProjectionMaintenance.mjs"},"./thread-store":{"types":"./dist/durable/ThreadStore.d.mts","default":"./dist/durable/ThreadStore.mjs"},"./tool-broker":{"types":"./dist/engine/ToolBroker.d.mts","default":"./dist/engine/ToolBroker.mjs"},"./tool-discovery":{"types":"./dist/capabilities/ToolDiscovery.d.mts","default":"./dist/capabilities/ToolDiscovery.mjs"},"./tool-exposure":{"types":"./dist/ToolExposure.d.mts","default":"./dist/ToolExposure.mjs"},"./tool-reconciler":{"types":"./dist/durable/ToolReconciler.d.mts","default":"./dist/durable/ToolReconciler.mjs"},"./tool-result":{"types":"./dist/core/ToolResult.d.mts","default":"./dist/core/ToolResult.mjs"},"./usage":{"types":"./dist/core/Usage.d.mts","default":"./dist/core/Usage.mjs"},"./wake-scheduler":{"types":"./dist/durable/WakeScheduler.d.mts","default":"./dist/durable/WakeScheduler.mjs"},"./web-capture":{"types":"./dist/capabilities/WebCapture.d.mts","default":"./dist/capabilities/WebCapture.mjs"},"./web-search":{"types":"./dist/capabilities/WebSearch.d.mts","default":"./dist/capabilities/WebSearch.mjs"},"./worker":{"types":"./dist/core/Worker.d.mts","default":"./dist/core/Worker.mjs"},"./worker-host":{"types":"./dist/durable/WorkerHost.d.mts","default":"./dist/durable/WorkerHost.mjs"}},"description":"Effect-native agents, execution, subagents, and sandbox contracts in one tree-shakeable package.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/danieljvdm/effect-agent.git","directory":"packages/effect-agent"},"files":["dist","src"],"type":"module","sideEffects":[],"publishConfig":{"access":"public"},"scripts":{"build":"vp pack","check":"tsc --noEmit -p tsconfig.json","test":"vp test --passWithNoTests"}}
@@ -99,13 +99,40 @@ export class BrowserReadTextRequest extends Schema.Class<BrowserReadTextRequest>
99
99
  "BrowserReadTextRequest",
100
100
  )({ selector: Schema.optionalKey(Selector) }) {}
101
101
 
102
+ /** Observed control state, without an input value. Absence is part of the snapshot. */
103
+ export const BrowserExpectedTargetState = Schema.Struct({
104
+ kind: Schema.String.check(Schema.isMaxLength(128)),
105
+ inputType: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(64))),
106
+ label: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(200))),
107
+ checked: Schema.optionalKey(Schema.Boolean),
108
+ selected: Schema.optionalKey(Schema.Boolean),
109
+ disabled: Schema.optionalKey(Schema.Boolean),
110
+ required: Schema.optionalKey(Schema.Boolean),
111
+ valid: Schema.optionalKey(Schema.Boolean),
112
+ formValid: Schema.optionalKey(Schema.Boolean),
113
+ });
114
+
115
+ export type BrowserExpectedTargetState = typeof BrowserExpectedTargetState.Type;
116
+
117
+ /** Exact observed document/node identity. A replacement node is refused before input dispatch. */
118
+ export const BrowserExpectedTarget = Schema.Struct({
119
+ documentId: Schema.NonEmptyString.check(Schema.isMaxLength(256)),
120
+ nodeId: Schema.NonEmptyString.check(Schema.isMaxLength(256)),
121
+ state: Schema.optionalKey(BrowserExpectedTargetState),
122
+ scopeSelector: Schema.optionalKey(Selector),
123
+ });
124
+
125
+ export type BrowserExpectedTarget = typeof BrowserExpectedTarget.Type;
126
+
102
127
  export class BrowserFillRequest extends Schema.Class<BrowserFillRequest>("BrowserFillRequest")({
103
128
  selector: Selector,
104
129
  value: FieldValue,
130
+ expectedTarget: Schema.optionalKey(BrowserExpectedTarget),
105
131
  }) {}
106
132
 
107
133
  export class BrowserClickRequest extends Schema.Class<BrowserClickRequest>("BrowserClickRequest")({
108
134
  selector: Selector,
135
+ expectedTarget: Schema.optionalKey(BrowserExpectedTarget),
109
136
  }) {}
110
137
 
111
138
  /** Caller-owned bytes; no host filesystem paths or model-supplied script crosses this port. */
@@ -162,9 +189,24 @@ export class BrowserActionResult extends Schema.Class<BrowserActionResult>("Brow
162
189
  url: InteractiveBrowserTargetUrl,
163
190
  }) {}
164
191
 
192
+ /** Safe execution evidence, independent of provider messages and application receipts.
193
+ * completed proves SDK input completion, never website acceptance or durable settlement.
194
+ */
195
+ export const InteractiveBrowserFailureEvidence = Schema.Struct({
196
+ stage: Schema.Literals(["preparation", "input", "observation"]),
197
+ dispatch: Schema.Literals(["not-dispatched", "completed", "unknown", "running"]),
198
+ session: Schema.Literals(["attached", "disconnected", "lost"]),
199
+ });
200
+
201
+ export type InteractiveBrowserFailureEvidence = typeof InteractiveBrowserFailureEvidence.Type;
202
+
165
203
  export class InteractiveBrowserPolicyDeniedError extends Schema.TaggedError<InteractiveBrowserPolicyDeniedError>()(
166
204
  "InteractiveBrowserPolicyDeniedError",
167
- { implementation: SandboxImplementation, message: BoundedMessage },
205
+ {
206
+ implementation: SandboxImplementation,
207
+ message: BoundedMessage,
208
+ evidence: Schema.optionalKey(InteractiveBrowserFailureEvidence),
209
+ },
168
210
  ) {}
169
211
 
170
212
  export class InteractiveBrowserBusyError extends Schema.TaggedError<InteractiveBrowserBusyError>()(
@@ -179,7 +221,11 @@ export class InteractiveBrowserCapacityError extends Schema.TaggedError<Interact
179
221
 
180
222
  export class InteractiveBrowserExpiredError extends Schema.TaggedError<InteractiveBrowserExpiredError>()(
181
223
  "InteractiveBrowserExpiredError",
182
- { implementation: SandboxImplementation, message: BoundedMessage },
224
+ {
225
+ implementation: SandboxImplementation,
226
+ message: BoundedMessage,
227
+ evidence: Schema.optionalKey(InteractiveBrowserFailureEvidence),
228
+ },
183
229
  ) {}
184
230
 
185
231
  export class InteractiveBrowserActionError extends Schema.TaggedError<InteractiveBrowserActionError>()(
@@ -197,6 +243,7 @@ export class InteractiveBrowserActionError extends Schema.TaggedError<Interactiv
197
243
  "close",
198
244
  ]),
199
245
  message: BoundedMessage,
246
+ evidence: Schema.optionalKey(InteractiveBrowserFailureEvidence),
200
247
  cause: Schema.optionalKey(Schema.Defect()),
201
248
  },
202
249
  ) {}
@@ -206,6 +253,7 @@ export class InteractiveBrowserProtocolError extends Schema.TaggedError<Interact
206
253
  {
207
254
  implementation: SandboxImplementation,
208
255
  message: BoundedMessage,
256
+ evidence: Schema.optionalKey(InteractiveBrowserFailureEvidence),
209
257
  cause: Schema.optionalKey(Schema.Defect()),
210
258
  },
211
259
  ) {}
@@ -214,6 +262,7 @@ export class InteractiveBrowserLimitError extends Schema.TaggedError<Interactive
214
262
  "InteractiveBrowserLimitError",
215
263
  {
216
264
  implementation: SandboxImplementation,
265
+ evidence: Schema.optionalKey(InteractiveBrowserFailureEvidence),
217
266
  limit: Schema.Literals(["actions", "elapsed", "returned-bytes"]),
218
267
  maximum: PositiveInt,
219
268
  observed: Schema.Natural,