effect-agent 0.1.0-beta.121 → 0.1.0-beta.122

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.
@@ -585,25 +585,6 @@ export declare const readPending: (request: Pick<{
585
585
  readonly reportKind?: "update" | undefined;
586
586
  } | undefined;
587
587
  readonly messageAdmission?: {
588
- readonly schemaVersion: 1;
589
- readonly message: {
590
- readonly ownerThreadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
591
- readonly messageId: string & import("effect/Brand").Brand<"@effect-agent/thread/IdempotencyKey">;
592
- };
593
- readonly peerName: string;
594
- readonly sender: {
595
- readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
596
- readonly agentId: string & import("effect/Brand").Brand<"@effect-agent/core/AgentId">;
597
- };
598
- readonly returnAddress: {
599
- readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
600
- readonly agentId: string & import("effect/Brand").Brand<"@effect-agent/core/AgentId">;
601
- };
602
- readonly inReplyTo?: {
603
- readonly ownerThreadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
604
- readonly messageId: string & import("effect/Brand").Brand<"@effect-agent/thread/IdempotencyKey">;
605
- } | undefined;
606
- } | {
607
588
  readonly _tag: "WorkerCompletion";
608
589
  readonly budgetExhausted: boolean;
609
590
  readonly schemaVersion: 1;
@@ -644,6 +625,25 @@ export declare const readPending: (request: Pick<{
644
625
  readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
645
626
  };
646
627
  readonly update: Update;
628
+ } | {
629
+ readonly schemaVersion: 1;
630
+ readonly message: {
631
+ readonly ownerThreadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
632
+ readonly messageId: string & import("effect/Brand").Brand<"@effect-agent/thread/IdempotencyKey">;
633
+ };
634
+ readonly peerName: string;
635
+ readonly sender: {
636
+ readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
637
+ readonly agentId: string & import("effect/Brand").Brand<"@effect-agent/core/AgentId">;
638
+ };
639
+ readonly returnAddress: {
640
+ readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
641
+ readonly agentId: string & import("effect/Brand").Brand<"@effect-agent/core/AgentId">;
642
+ };
643
+ readonly inReplyTo?: {
644
+ readonly ownerThreadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
645
+ readonly messageId: string & import("effect/Brand").Brand<"@effect-agent/thread/IdempotencyKey">;
646
+ } | undefined;
647
647
  } | undefined;
648
648
  };
649
649
  readonly envelopeDigest: string & import("effect/Brand").Brand<"@effect-agent/thread/Digest">;
@@ -776,25 +776,6 @@ export declare const prepareMessageDelivery: (options: {
776
776
  readonly reportKind?: "update" | undefined;
777
777
  } | undefined;
778
778
  readonly messageAdmission?: {
779
- readonly schemaVersion: 1;
780
- readonly message: {
781
- readonly ownerThreadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
782
- readonly messageId: string & import("effect/Brand").Brand<"@effect-agent/thread/IdempotencyKey">;
783
- };
784
- readonly peerName: string;
785
- readonly sender: {
786
- readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
787
- readonly agentId: string & import("effect/Brand").Brand<"@effect-agent/core/AgentId">;
788
- };
789
- readonly returnAddress: {
790
- readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
791
- readonly agentId: string & import("effect/Brand").Brand<"@effect-agent/core/AgentId">;
792
- };
793
- readonly inReplyTo?: {
794
- readonly ownerThreadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
795
- readonly messageId: string & import("effect/Brand").Brand<"@effect-agent/thread/IdempotencyKey">;
796
- } | undefined;
797
- } | {
798
779
  readonly _tag: "WorkerCompletion";
799
780
  readonly budgetExhausted: boolean;
800
781
  readonly schemaVersion: 1;
@@ -835,6 +816,25 @@ export declare const prepareMessageDelivery: (options: {
835
816
  readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
836
817
  };
837
818
  readonly update: Update;
819
+ } | {
820
+ readonly schemaVersion: 1;
821
+ readonly message: {
822
+ readonly ownerThreadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
823
+ readonly messageId: string & import("effect/Brand").Brand<"@effect-agent/thread/IdempotencyKey">;
824
+ };
825
+ readonly peerName: string;
826
+ readonly sender: {
827
+ readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
828
+ readonly agentId: string & import("effect/Brand").Brand<"@effect-agent/core/AgentId">;
829
+ };
830
+ readonly returnAddress: {
831
+ readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
832
+ readonly agentId: string & import("effect/Brand").Brand<"@effect-agent/core/AgentId">;
833
+ };
834
+ readonly inReplyTo?: {
835
+ readonly ownerThreadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
836
+ readonly messageId: string & import("effect/Brand").Brand<"@effect-agent/thread/IdempotencyKey">;
837
+ } | undefined;
838
838
  } | undefined;
839
839
  };
840
840
  readonly envelopeDigest: string & import("effect/Brand").Brand<"@effect-agent/thread/Digest">;
@@ -93,25 +93,6 @@ export declare const makeMessageDeliveryFixture: (messageId?: any, owner?: any,
93
93
  readonly reportKind?: "update" | undefined;
94
94
  } | undefined;
95
95
  readonly messageAdmission?: {
96
- readonly schemaVersion: 1;
97
- readonly message: {
98
- readonly ownerThreadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
99
- readonly messageId: string & import("effect/Brand").Brand<"@effect-agent/thread/IdempotencyKey">;
100
- };
101
- readonly peerName: string;
102
- readonly sender: {
103
- readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
104
- readonly agentId: string & import("effect/Brand").Brand<"@effect-agent/core/AgentId">;
105
- };
106
- readonly returnAddress: {
107
- readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
108
- readonly agentId: string & import("effect/Brand").Brand<"@effect-agent/core/AgentId">;
109
- };
110
- readonly inReplyTo?: {
111
- readonly ownerThreadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
112
- readonly messageId: string & import("effect/Brand").Brand<"@effect-agent/thread/IdempotencyKey">;
113
- } | undefined;
114
- } | {
115
96
  readonly _tag: "WorkerCompletion";
116
97
  readonly budgetExhausted: boolean;
117
98
  readonly schemaVersion: 1;
@@ -152,6 +133,25 @@ export declare const makeMessageDeliveryFixture: (messageId?: any, owner?: any,
152
133
  readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
153
134
  };
154
135
  readonly update: Update;
136
+ } | {
137
+ readonly schemaVersion: 1;
138
+ readonly message: {
139
+ readonly ownerThreadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
140
+ readonly messageId: string & import("effect/Brand").Brand<"@effect-agent/thread/IdempotencyKey">;
141
+ };
142
+ readonly peerName: string;
143
+ readonly sender: {
144
+ readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
145
+ readonly agentId: string & import("effect/Brand").Brand<"@effect-agent/core/AgentId">;
146
+ };
147
+ readonly returnAddress: {
148
+ readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
149
+ readonly agentId: string & import("effect/Brand").Brand<"@effect-agent/core/AgentId">;
150
+ };
151
+ readonly inReplyTo?: {
152
+ readonly ownerThreadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
153
+ readonly messageId: string & import("effect/Brand").Brand<"@effect-agent/thread/IdempotencyKey">;
154
+ } | undefined;
155
155
  } | undefined;
156
156
  };
157
157
  readonly envelopeDigest: string & import("effect/Brand").Brand<"@effect-agent/thread/Digest">;
@@ -266,25 +266,6 @@ export declare const makeWorkerUpdateDeliveryFixture: (id: string) => Effect.Eff
266
266
  readonly reportKind?: "update" | undefined;
267
267
  } | undefined;
268
268
  readonly messageAdmission?: {
269
- readonly schemaVersion: 1;
270
- readonly message: {
271
- readonly ownerThreadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
272
- readonly messageId: string & import("effect/Brand").Brand<"@effect-agent/thread/IdempotencyKey">;
273
- };
274
- readonly peerName: string;
275
- readonly sender: {
276
- readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
277
- readonly agentId: string & import("effect/Brand").Brand<"@effect-agent/core/AgentId">;
278
- };
279
- readonly returnAddress: {
280
- readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
281
- readonly agentId: string & import("effect/Brand").Brand<"@effect-agent/core/AgentId">;
282
- };
283
- readonly inReplyTo?: {
284
- readonly ownerThreadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
285
- readonly messageId: string & import("effect/Brand").Brand<"@effect-agent/thread/IdempotencyKey">;
286
- } | undefined;
287
- } | {
288
269
  readonly _tag: "WorkerCompletion";
289
270
  readonly budgetExhausted: boolean;
290
271
  readonly schemaVersion: 1;
@@ -325,6 +306,25 @@ export declare const makeWorkerUpdateDeliveryFixture: (id: string) => Effect.Eff
325
306
  readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
326
307
  };
327
308
  readonly update: Update;
309
+ } | {
310
+ readonly schemaVersion: 1;
311
+ readonly message: {
312
+ readonly ownerThreadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
313
+ readonly messageId: string & import("effect/Brand").Brand<"@effect-agent/thread/IdempotencyKey">;
314
+ };
315
+ readonly peerName: string;
316
+ readonly sender: {
317
+ readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
318
+ readonly agentId: string & import("effect/Brand").Brand<"@effect-agent/core/AgentId">;
319
+ };
320
+ readonly returnAddress: {
321
+ readonly threadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
322
+ readonly agentId: string & import("effect/Brand").Brand<"@effect-agent/core/AgentId">;
323
+ };
324
+ readonly inReplyTo?: {
325
+ readonly ownerThreadId: string & import("effect/Brand").Brand<"@effect-agent/core/ThreadId">;
326
+ readonly messageId: string & import("effect/Brand").Brand<"@effect-agent/thread/IdempotencyKey">;
327
+ } | undefined;
328
328
  } | undefined;
329
329
  };
330
330
  readonly envelopeDigest: string & import("effect/Brand").Brand<"@effect-agent/thread/Digest">;
@@ -29,7 +29,7 @@ declare const InteractiveBrowserPolicy_base: Schema.Class<InteractiveBrowserPoli
29
29
  readonly maxElapsedMillis: Schema.Int;
30
30
  readonly maxReturnedBytes: Schema.Int;
31
31
  }>, {}>;
32
- /** Finite per-pass budgets. The elapsed ceiling is one hour; provider idle limits may be shorter. */
32
+ /** Caller-owned finite per-pass budgets. Elapsed time includes pauses; provider idle limits are separate. */
33
33
  export declare class InteractiveBrowserPolicy extends InteractiveBrowserPolicy_base {}
34
34
  declare const BrowserNavigateRequest_base: Schema.Class<BrowserNavigateRequest, Schema.Struct<{
35
35
  readonly url: Schema.NonEmptyString;
@@ -69,11 +69,11 @@ const InteractiveBrowserNetworkPolicy = Schema.Union([
69
69
  Schema.TaggedStruct("PublicWeb", {}),
70
70
  Schema.TaggedStruct("Unrestricted", {})
71
71
  ]);
72
- /** Finite per-pass budgets. The elapsed ceiling is one hour; provider idle limits may be shorter. */
72
+ /** Caller-owned finite per-pass budgets. Elapsed time includes pauses; provider idle limits are separate. */
73
73
  var InteractiveBrowserPolicy = class extends Schema.Class("InteractiveBrowserPolicy")(Schema.Struct({
74
74
  network: InteractiveBrowserNetworkPolicy,
75
75
  maxActions: PositiveInt.check(Schema.isLessThanOrEqualTo(1e3)),
76
- maxElapsedMillis: PositiveInt.check(Schema.isLessThanOrEqualTo(36e5)),
76
+ maxElapsedMillis: PositiveInt,
77
77
  maxReturnedBytes: PositiveInt.check(Schema.isLessThanOrEqualTo(8388608))
78
78
  })) {};
79
79
  var BrowserNavigateRequest = class extends Schema.Class("BrowserNavigateRequest")({ url: InteractiveBrowserTargetUrl }) {};
@@ -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\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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"}
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/** Caller-owned finite per-pass budgets. Elapsed time includes pauses; provider idle limits are separate. */\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,\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAM,cAAc,OAAO,IAAI,MAAM,OAAO,cAAc,CAAC,CAAC;AAC5D,MAAM,cAAc,OAAO,OAAO,MAAM,OAAO,YAAY,OAAe,CAAC;AAC3E,MAAM,iBAAiB,OAAO,OAAO,MAAM,OAAO,YAAY,IAAQ,CAAC;AACvE,MAAM,WAAW,OAAO,eAAe,MAAM,OAAO,YAAY,IAAK,CAAC;AACtE,MAAM,aAAa,OAAO,OAAO,MAAM,OAAO,YAAY,KAAS,CAAC;AACpE,MAAM,cAAc,OAAO,IAAI,MAAM,OAAO,UAAU;CAAE,SAAS;CAAU,SAAS;AAAQ,CAAC,CAAC;AAC9F,MAAM,YAAY,OAAO,oBAAoB,OAAO,aAAa;;AAGjE,MAAa,8BAA8B,OAAO,eAAe,MAC/D,OAAO,YAAY,IAAQ,GAC3B,OAAO,YACJ,UAAU;CACT,MAAM,SAAS,UAAU,KAAK;CAE9B,IAAI,OAAO,OAAO,MAAM,GAAG,OAAO;CAClC,MAAM,MAAM,OAAO;CAEnB,QACG,IAAI,aAAa,WAAW,IAAI,aAAa,aAC9C,IAAI,aAAa,MACjB,IAAI,aAAa,MACjB,IAAI,aAAa;AAErB,GACA,EAAE,OAAO,6DAA6D,CACxE,CACF;;AAKA,MAAa,yBAAyB,OAAO,eAAe,MAC1D,OAAO,YAAY,GAAG,GACtB,OAAO,YACJ,UAAU;CACT,IAAI,MAAM,SAAS,GAAG,GAAG,OAAO;CAChC,MAAM,SAAS,UAAU,WAAW,MAAM,EAAE;CAE5C,IAAI,OAAO,OAAO,MAAM,GAAG,OAAO;CAClC,MAAM,MAAM,OAAO;CAEnB,OACE,IAAI,aAAa,YACjB,IAAI,aAAa,MACjB,IAAI,aAAa,MACjB,IAAI,SAAS;AAEjB,GACA,EAAE,OAAO,mDAAmD,CAC9D,CACF;;;;;;;;AAWA,MAAa,kCAAkC,OAAO,MAAM;CAC1D,OAAO,aAAa,cAAc,EAChC,cAAc,OAAO,MAAM,sBAAsB,CAAC,CAAC,MACjD,OAAO,YAAY,CAAC,GACpB,OAAO,YAAY,EAAE,GACrB,OAAO,SAAS,CAClB,EACF,CAAC;CACD,OAAO,aAAa,aAAa,CAAC,CAAC;CACnC,OAAO,aAAa,gBAAgB,CAAC,CAAC;AACxC,CAAC;;AAKD,IAAa,2BAAb,cAA8C,OAAO,MACnD,0BACF,CAAC,CACC,OAAO,OAAO;CACZ,SAAS;CACT,YAAY,YAAY,MAAM,OAAO,oBAAoB,GAAK,CAAC;CAC/D,kBAAkB;CAClB,kBAAkB,YAAY,MAAM,OAAO,oBAAoB,OAAe,CAAC;AACjF,CAAC,CACH,CAAC,CAAC,CAAC;AAEH,IAAa,yBAAb,cAA4C,OAAO,MACjD,wBACF,CAAC,CAAC,EAAE,KAAK,4BAA4B,CAAC,CAAC,CAAC,CAAC;AAEzC,IAAa,yBAAb,cAA4C,OAAO,MACjD,wBACF,CAAC,CAAC,EAAE,UAAU,OAAO,YAAY,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;;AAG/C,MAAa,6BAA6B,OAAO,OAAO;CACtD,MAAM,OAAO,OAAO,MAAM,OAAO,YAAY,GAAG,CAAC;CACjD,WAAW,OAAO,YAAY,OAAO,OAAO,MAAM,OAAO,YAAY,EAAE,CAAC,CAAC;CACzE,OAAO,OAAO,YAAY,OAAO,OAAO,MAAM,OAAO,YAAY,GAAG,CAAC,CAAC;CACtE,SAAS,OAAO,YAAY,OAAO,OAAO;CAC1C,UAAU,OAAO,YAAY,OAAO,OAAO;CAC3C,UAAU,OAAO,YAAY,OAAO,OAAO;CAC3C,UAAU,OAAO,YAAY,OAAO,OAAO;CAC3C,OAAO,OAAO,YAAY,OAAO,OAAO;CACxC,WAAW,OAAO,YAAY,OAAO,OAAO;AAC9C,CAAC;;AAKD,MAAa,wBAAwB,OAAO,OAAO;CACjD,YAAY,OAAO,eAAe,MAAM,OAAO,YAAY,GAAG,CAAC;CAC/D,QAAQ,OAAO,eAAe,MAAM,OAAO,YAAY,GAAG,CAAC;CAC3D,OAAO,OAAO,YAAY,0BAA0B;CACpD,eAAe,OAAO,YAAY,QAAQ;AAC5C,CAAC;AAID,IAAa,qBAAb,cAAwC,OAAO,MAA0B,oBAAoB,CAAC,CAAC;CAC7F,UAAU;CACV,OAAO;CACP,gBAAgB,OAAO,YAAY,qBAAqB;AAC1D,CAAC,CAAC,CAAC,CAAC;AAEJ,IAAa,sBAAb,cAAyC,OAAO,MAA2B,qBAAqB,CAAC,CAAC;CAChG,UAAU;CACV,gBAAgB,OAAO,YAAY,qBAAqB;AAC1D,CAAC,CAAC,CAAC,CAAC;;AAGJ,IAAa,2BAAb,cAA8C,OAAO,MACnD,0BACF,CAAC,CAAC;CACA,UAAU;CACV,QAAQ,OAAO,SAAS,CAAC,SAAS,SAAS,CAAC;CAC5C,UAAU,OAAO,eAAe,MAC9B,OAAO,YAAY,GAAG,GAEtB,OAAO,UAAU,wBAAwB,CAC3C;CACA,WAAW,OAAO,eAAe,MAC/B,OAAO,YAAY,GAAG,GACtB,OAAO,UAAU,0CAA0C,CAC7D;CACA,OAAO,OAAO,WAAW,MAAM,OAAO,YAAY,CAAC,GAAG,OAAO,YAAY,OAAe,CAAC;AAC3F,CAAC,CAAC,CAAC,CAAC;;AAGJ,IAAa,6BAAb,cAAgD,OAAO,MACrD,4BACF,CAAC,CAAC;CACA,KAAK;CACL,UAAU,yBAAyB,OAAO;CAC1C,WAAW,yBAAyB,OAAO;CAC3C,MAAM,YAAY,MAAM,OAAO,oBAAoB,OAAe,CAAC;AACrE,CAAC,CAAC,CAAC,CAAC;;AAGJ,IAAa,2BAAb,cAA8C,OAAO,MACnD,0BACF,CAAC,CAAC,EAAE,UAAU,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;;AAGjC,IAAa,uBAAb,cAA0C,OAAO,MAC/C,sBACF,CAAC,CAAC;CACA,QAAQ;CACR,QAAQ;AACV,CAAC,CAAC,CAAC,CAAC;AAEJ,IAAa,0BAAb,cAA6C,OAAO,MAClD,yBACF,CAAC,CAAC,EAAE,KAAK,4BAA4B,CAAC,CAAC,CAAC,CAAC;AAEzC,IAAa,oBAAb,cAAuC,OAAO,MAAyB,mBAAmB,CAAC,CAAC,EAC1F,MAAM,YACR,CAAC,CAAC,CAAC,CAAC;;AAGJ,IAAa,sBAAb,cAAyC,OAAO,MAA2B,qBAAqB,CAAC,CAAC,EAChG,KAAK,4BACP,CAAC,CAAC,CAAC,CAAC;;;;AAKJ,MAAa,oCAAoC,OAAO,OAAO;CAC7D,OAAO,OAAO,SAAS;EAAC;EAAe;EAAS;CAAa,CAAC;CAC9D,UAAU,OAAO,SAAS;EAAC;EAAkB;EAAa;EAAW;CAAS,CAAC;CAC/E,SAAS,OAAO,SAAS;EAAC;EAAY;EAAgB;CAAM,CAAC;AAC/D,CAAC;AAID,IAAa,sCAAb,cAAyD,OAAO,YAAiD,CAAC,CAChH,uCACA;CACE,gBAAgB;CAChB,SAAS;CACT,UAAU,OAAO,YAAY,iCAAiC;AAChE,CACF,CAAC,CAAC,CAAC;AAEH,IAAa,8BAAb,cAAiD,OAAO,YAAyC,CAAC,CAChG,+BACA;CAAE,gBAAgB;CAAuB,SAAS;AAAe,CACnE,CAAC,CAAC,CAAC;AAEH,IAAa,kCAAb,cAAqD,OAAO,YAA6C,CAAC,CACxG,mCACA;CAAE,gBAAgB;CAAuB,SAAS;AAAe,CACnE,CAAC,CAAC,CAAC;AAEH,IAAa,iCAAb,cAAoD,OAAO,YAA4C,CAAC,CACtG,kCACA;CACE,gBAAgB;CAChB,SAAS;CACT,UAAU,OAAO,YAAY,iCAAiC;AAChE,CACF,CAAC,CAAC,CAAC;AAEH,IAAa,gCAAb,cAAmD,OAAO,YAA2C,CAAC,CACpG,iCACA;CACE,gBAAgB;CAChB,WAAW,OAAO,SAAS;EACzB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CACD,SAAS;CACT,UAAU,OAAO,YAAY,iCAAiC;CAC9D,OAAO,OAAO,YAAY,OAAO,OAAO,CAAC;AAC3C,CACF,CAAC,CAAC,CAAC;AAEH,IAAa,kCAAb,cAAqD,OAAO,YAA6C,CAAC,CACxG,mCACA;CACE,gBAAgB;CAChB,SAAS;CACT,UAAU,OAAO,YAAY,iCAAiC;CAC9D,OAAO,OAAO,YAAY,OAAO,OAAO,CAAC;AAC3C,CACF,CAAC,CAAC,CAAC;AAEH,IAAa,+BAAb,cAAkD,OAAO,YAA0C,CAAC,CAClG,gCACA;CACE,gBAAgB;CAChB,UAAU,OAAO,YAAY,iCAAiC;CAC9D,OAAO,OAAO,SAAS;EAAC;EAAW;EAAW;CAAgB,CAAC;CAC/D,SAAS;CACT,UAAU,OAAO;CACjB,SAAS;AACX,CACF,CAAC,CAAC,CAAC;AAEH,IAAa,qCAAb,cAAwD,OAAO,YAAgD,CAAC,CAC9G,sCACA;CACE,gBAAgB;CAChB,SAAS,OAAO,SAAS;EACvB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CACD,SAAS;AACX,CACF,CAAC,CAAC,CAAC;AAEH,MAAa,0BAA0B,OAAO,MAAM;CAClD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAgCD,IAAa,qBAAb,cAAwC,QAAQ,QAO9C,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"effect-agent","version":"0.1.0-beta.121","devDependencies":{"@effect/platform-node":"4.0.0-rc.116","@effect/vitest":"4.0.0-rc.116","effect":"4.0.0-rc.116","typescript":"7.0.2","vite-plus":"0.3.2"},"peerDependencies":{"effect":"^4.0.0-rc.116"},"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.122","devDependencies":{"@effect/platform-node":"4.0.0-rc.116","@effect/vitest":"4.0.0-rc.116","effect":"4.0.0-rc.116","typescript":"7.0.2","vite-plus":"0.3.2"},"peerDependencies":{"effect":"^4.0.0-rc.116"},"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"}}
@@ -79,14 +79,14 @@ export const InteractiveBrowserNetworkPolicy = Schema.Union([
79
79
 
80
80
  export type InteractiveBrowserNetworkPolicy = typeof InteractiveBrowserNetworkPolicy.Type;
81
81
 
82
- /** Finite per-pass budgets. The elapsed ceiling is one hour; provider idle limits may be shorter. */
82
+ /** Caller-owned finite per-pass budgets. Elapsed time includes pauses; provider idle limits are separate. */
83
83
  export class InteractiveBrowserPolicy extends Schema.Class<InteractiveBrowserPolicy>(
84
84
  "InteractiveBrowserPolicy",
85
85
  )(
86
86
  Schema.Struct({
87
87
  network: InteractiveBrowserNetworkPolicy,
88
88
  maxActions: PositiveInt.check(Schema.isLessThanOrEqualTo(1_000)),
89
- maxElapsedMillis: PositiveInt.check(Schema.isLessThanOrEqualTo(60 * 60_000)),
89
+ maxElapsedMillis: PositiveInt,
90
90
  maxReturnedBytes: PositiveInt.check(Schema.isLessThanOrEqualTo(8 * 1024 * 1024)),
91
91
  }),
92
92
  ) {}