@yielded/agent-platform-cloudflare 0.1.0-beta.166 → 0.1.0-beta.168

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dist/{Alarm-B0ODr1NE.mjs → Alarm-DxODgAZZ.mjs} +259 -159
  2. package/dist/Alarm-DxODgAZZ.mjs.map +1 -0
  3. package/dist/Alarm.d.mts +27 -36
  4. package/dist/Alarm.mjs +2 -2
  5. package/dist/BrowserCredentials-C5IWfi7f.d.mts +91 -0
  6. package/dist/BrowserCredentials.d.mts +2 -91
  7. package/dist/BrowserRestCapture.mjs +3 -3
  8. package/dist/BrowserRestCapture.mjs.map +1 -1
  9. package/dist/BrowserRestCrawl.mjs +6 -6
  10. package/dist/BrowserRestCrawl.mjs.map +1 -1
  11. package/dist/{BrowserSession-RfIzxGCH.mjs → BrowserSession-BfNmyayH.mjs} +5 -5
  12. package/dist/BrowserSession-BfNmyayH.mjs.map +1 -0
  13. package/dist/{BrowserSession-B969Xg-2.d.mts → BrowserSession-Bx0V1-6_.d.mts} +6 -3
  14. package/dist/BrowserSession.d.mts +1 -1
  15. package/dist/BrowserSession.mjs +2 -2
  16. package/dist/BrowserUse-AstK0jKX.mjs +1467 -0
  17. package/dist/BrowserUse-AstK0jKX.mjs.map +1 -0
  18. package/dist/BrowserUse.d.mts +83 -0
  19. package/dist/BrowserUse.mjs +2 -0
  20. package/dist/CloudflareBindings.d.mts +8 -1
  21. package/dist/CloudflareBindings.mjs +2 -2
  22. package/dist/CloudflareBindings.mjs.map +1 -1
  23. package/dist/{CloudflareBrowser-5an6m-Qb.mjs → CloudflareBrowser-Vt8qTdYW.mjs} +11 -13
  24. package/dist/CloudflareBrowser-Vt8qTdYW.mjs.map +1 -0
  25. package/dist/CloudflareBrowser.mjs +1 -1
  26. package/dist/CloudflareCodeMode.mjs +1 -1
  27. package/dist/CloudflareCodeMode.mjs.map +1 -1
  28. package/dist/{CloudflareConfig-qDrRLofL.d.mts → CloudflareConfig-C9MvPbX8.d.mts} +9 -11
  29. package/dist/CloudflareConfig.d.mts +1 -1
  30. package/dist/CloudflareConfig.mjs +9 -12
  31. package/dist/CloudflareConfig.mjs.map +1 -1
  32. package/dist/CloudflareMemory.d.mts +3 -25
  33. package/dist/CloudflareMemory.mjs +33 -31
  34. package/dist/CloudflareMemory.mjs.map +1 -1
  35. package/dist/CloudflareScheduling.mjs +8 -15
  36. package/dist/CloudflareScheduling.mjs.map +1 -1
  37. package/dist/CloudflareSubscriptions.mjs +9 -16
  38. package/dist/CloudflareSubscriptions.mjs.map +1 -1
  39. package/dist/CloudflareThreadClient-CZm0TvUe.mjs +588 -0
  40. package/dist/CloudflareThreadClient-CZm0TvUe.mjs.map +1 -0
  41. package/dist/CloudflareThreadClient-QsVzLGGZ.d.mts +2033 -0
  42. package/dist/CloudflareThreadClient.d.mts +2 -1796
  43. package/dist/CloudflareThreadClient.mjs +2 -382
  44. package/dist/{InteractiveBrowser-BbG3kGA9.mjs → InteractiveBrowser-LdKzQeLR.mjs} +18 -19
  45. package/dist/InteractiveBrowser-LdKzQeLR.mjs.map +1 -0
  46. package/dist/InteractiveBrowser.mjs +1 -1
  47. package/dist/{ThreadObject-BcfXbzSO.d.mts → ThreadObject-7s5XnlH-.d.mts} +103 -79
  48. package/dist/{ThreadObject-DHjrnlX4.mjs → ThreadObject-C0vrcDrw.mjs} +265 -66
  49. package/dist/ThreadObject-C0vrcDrw.mjs.map +1 -0
  50. package/dist/ThreadObject.d.mts +2 -2
  51. package/dist/ThreadObject.mjs +2 -3
  52. package/dist/WakeScheduler.d.mts +6 -5
  53. package/dist/WakeScheduler.mjs +15 -11
  54. package/dist/WakeScheduler.mjs.map +1 -1
  55. package/dist/index.d.mts +7 -6
  56. package/dist/index.mjs +7 -6
  57. package/dist/page-function-CmUCcyNP.mjs +11 -0
  58. package/dist/page-function-CmUCcyNP.mjs.map +1 -0
  59. package/dist/{prepared-admission-DMX5p9dC.mjs → prepared-admission-3UUq0zth.mjs} +3 -3
  60. package/dist/{prepared-admission-DMX5p9dC.mjs.map → prepared-admission-3UUq0zth.mjs.map} +1 -1
  61. package/package.json +1 -1
  62. package/src/Alarm.ts +510 -279
  63. package/src/BrowserRestCapture.ts +2 -2
  64. package/src/BrowserRestCrawl.ts +10 -14
  65. package/src/BrowserSession.ts +10 -2
  66. package/src/BrowserUse.ts +1541 -0
  67. package/src/CloudflareBindings.ts +13 -4
  68. package/src/CloudflareCodeMode.ts +1 -1
  69. package/src/CloudflareConfig.ts +9 -12
  70. package/src/CloudflareMemory.ts +21 -28
  71. package/src/CloudflareScheduling.ts +7 -15
  72. package/src/CloudflareSubscriptions.ts +11 -20
  73. package/src/CloudflareThreadClient.ts +289 -9
  74. package/src/InteractiveBrowser.ts +325 -323
  75. package/src/ThreadObject.ts +172 -52
  76. package/src/WakeScheduler.ts +29 -18
  77. package/src/index.ts +1 -0
  78. package/src/internal/browser-dom.ts +845 -0
  79. package/src/internal/browser-file-selection.ts +8 -1
  80. package/src/internal/browser-jev-dom.ts +344 -0
  81. package/src/internal/browser-quick-action.ts +7 -8
  82. package/src/internal/browser-session-lifecycle.ts +2 -5
  83. package/src/internal/crypto.ts +41 -0
  84. package/src/internal/due-queue.ts +5 -69
  85. package/src/internal/layers.ts +100 -17
  86. package/src/internal/live-text-protocol.ts +51 -0
  87. package/src/internal/live-text.ts +256 -0
  88. package/src/internal/page-function.ts +12 -0
  89. package/src/internal/prepared-admission.ts +1 -1
  90. package/src/internal/progress-wait.ts +19 -24
  91. package/src/internal/transport.ts +1 -1
  92. package/dist/Alarm-B0ODr1NE.mjs.map +0 -1
  93. package/dist/BrowserSession-RfIzxGCH.mjs.map +0 -1
  94. package/dist/CloudflareBrowser-5an6m-Qb.mjs.map +0 -1
  95. package/dist/CloudflareThreadClient.mjs.map +0 -1
  96. package/dist/InteractiveBrowser-BbG3kGA9.mjs.map +0 -1
  97. package/dist/ThreadObject-DHjrnlX4.mjs.map +0 -1
@@ -199,7 +199,7 @@ const isJsonResponse = (headers: Readonly<Record<string, string | undefined>>):
199
199
  return mediaType === "application/json" || mediaType?.endsWith("+json") === true;
200
200
  };
201
201
 
202
- const readBoundedResponse = Effect.fn("BrowserRestCapture.readResponse")(function* (
202
+ const readBoundedResponse = Effect.fnUntraced(function* (
203
203
  response: { readonly stream: Stream.Stream<Uint8Array, HttpClientError.HttpClientError> },
204
204
  request: PageCaptureRequest,
205
205
  ): Effect.fn.Return<string, PageCaptureError> {
@@ -308,7 +308,7 @@ const makeCapture = (
308
308
  options: BrowserRestCaptureOptions,
309
309
  workersAi?: BrowserQuickActionWorkersAiPolicy,
310
310
  ): PageCaptureCapture =>
311
- Effect.fn("BrowserRestCapture.capture")(function* (
311
+ Effect.fnUntraced(function* (
312
312
  request: PageCaptureRequest,
313
313
  ): Effect.fn.Return<PageCaptureResult, PageCaptureError> {
314
314
  const usesWorkersAi = request.action._tag === "CapturePageStructured";
@@ -160,7 +160,7 @@ const endpoint = (options: BrowserRestCrawlOptions, jobId?: string): string =>
160
160
  jobId === undefined ? "" : `/${encodeURIComponent(jobId)}`
161
161
  }`;
162
162
 
163
- const readBoundedResponse = Effect.fn("BrowserRestCrawl.readBoundedResponse")(function* (
163
+ const readBoundedResponse = Effect.fnUntraced(function* (
164
164
  response: HttpClientResponse.HttpClientResponse,
165
165
  maximum: number,
166
166
  ): Effect.fn.Return<string, PageCrawlProtocolError> {
@@ -206,16 +206,13 @@ const readBoundedResponse = Effect.fn("BrowserRestCrawl.readBoundedResponse")(fu
206
206
  });
207
207
  });
208
208
 
209
- const deadlineFailure = Effect.fn("BrowserRestCrawl.deadlineFailure")(function* (
210
- request: PageCrawlRequest,
211
- startedAt: number,
212
- ) {
209
+ const deadlineFailure = Effect.fnUntraced(function* (request: PageCrawlRequest, startedAt: number) {
213
210
  const now = yield* Effect.clockWith((clock) => clock.currentTimeMillis);
214
211
 
215
212
  return yield* limitError(request, "deadline", Math.max(0, now - startedAt));
216
213
  });
217
214
 
218
- const withinDeadline = Effect.fn("BrowserRestCrawl.withinDeadline")(function* <A, E, R>(
215
+ const withinDeadline = Effect.fnUntraced(function* <A, E, R>(
219
216
  effect: Effect.Effect<A, E, R>,
220
217
  request: PageCrawlRequest,
221
218
  startedAt: number,
@@ -234,10 +231,7 @@ const withinDeadline = Effect.fn("BrowserRestCrawl.withinDeadline")(function* <A
234
231
  );
235
232
  });
236
233
 
237
- const checkDeadline = Effect.fn("BrowserRestCrawl.checkDeadline")(function* (
238
- request: PageCrawlRequest,
239
- startedAt: number,
240
- ) {
234
+ const checkDeadline = Effect.fnUntraced(function* (request: PageCrawlRequest, startedAt: number) {
241
235
  const now = yield* Effect.clockWith((clock) => clock.currentTimeMillis);
242
236
  const elapsed = Math.max(0, now - startedAt);
243
237
 
@@ -268,9 +262,11 @@ const makeCrawl =
268
262
  const startedAt = yield* Effect.clockWith((clock) => clock.currentTimeMillis);
269
263
  const startHost = new URL(input.startUrl).host;
270
264
 
271
- const executeJson = Effect.fn("BrowserRestCrawl.executeJson")(function* <
272
- S extends Schema.Top,
273
- >(request: HttpClientRequest.HttpClientRequest, schema: S, maximum: number) {
265
+ const executeJson = Effect.fnUntraced(function* <S extends Schema.Top>(
266
+ request: HttpClientRequest.HttpClientRequest,
267
+ schema: S,
268
+ maximum: number,
269
+ ) {
274
270
  const authorized = HttpClientRequest.bearerToken(request, options.apiToken).pipe(
275
271
  HttpClientRequest.acceptJson,
276
272
  );
@@ -409,7 +405,7 @@ const makeCrawl =
409
405
  ),
410
406
  );
411
407
 
412
- const fetchResult = Effect.fn("BrowserRestCrawl.fetchResult")(function* (
408
+ const fetchResult = Effect.fnUntraced(function* (
413
409
  cursor: Option.Option<string>,
414
410
  statusOnly: boolean,
415
411
  ) {
@@ -103,10 +103,12 @@ export interface BrowserSession {
103
103
  * Check current authority under the lock before native dispatch. A settled SDK rejection leaves
104
104
  * the session available for inspection, but may have changed the website; never retry blindly.
105
105
  * Timeout/interruption fences outstanding SDK work and terminates the exact browser.
106
+ * An optional timeoutMillis narrows the command deadline, for example for bounded preparation.
106
107
  */
107
108
  readonly run: <A, E, R>(
108
109
  authorize: Effect.Effect<void, E, R>,
109
110
  action: (page: Page) => Promise<A>,
111
+ options?: { readonly timeoutMillis: number },
110
112
  ) => Effect.Effect<A, E | BrowserSessionError, R>;
111
113
  /**
112
114
  * Resolves host-owned material under fresh credential grants. Never submits or retries a write.
@@ -414,6 +416,7 @@ export class BrowserSessions extends Context.Service<
414
416
  authorize: Effect.Effect<void, E, R>,
415
417
  action: (page: Page) => Promise<A>,
416
418
  terminateOnError = false,
419
+ timeoutMillis?: number,
417
420
  ) =>
418
421
  runEffect((commandTimeoutMillis) =>
419
422
  authorize.pipe(
@@ -431,7 +434,7 @@ export class BrowserSessions extends Context.Service<
431
434
  ),
432
435
  ),
433
436
  Effect.timeoutOrElse({
434
- duration: commandTimeoutMillis,
437
+ duration: Math.min(commandTimeoutMillis, timeoutMillis ?? commandTimeoutMillis),
435
438
  orElse: () =>
436
439
  terminate.pipe(
437
440
  Effect.flatMap((closed) =>
@@ -466,7 +469,12 @@ export class BrowserSessions extends Context.Service<
466
469
 
467
470
  const session: BrowserSession = {
468
471
  reference,
469
- run,
472
+ run: (authorize, action, options) =>
473
+ options === undefined
474
+ ? run(authorize, action)
475
+ : decode(PositiveMillis, options.timeoutMillis).pipe(
476
+ Effect.flatMap((timeoutMillis) => run(authorize, action, false, timeoutMillis)),
477
+ ),
470
478
  fillCredential: (request) =>
471
479
  runEffect((commandTimeoutMillis) =>
472
480
  fillCredential(request).pipe(