@yielded/agent-platform-cloudflare 0.1.0-beta.173 → 0.1.0-beta.174
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Alarm-BMEAZo3p.mjs → Alarm-4J9B8Fg8.mjs} +54 -32
- package/dist/Alarm-4J9B8Fg8.mjs.map +1 -0
- package/dist/Alarm.mjs +1 -1
- package/dist/BrowserRestCapture.mjs.map +1 -1
- package/dist/BrowserRestCrawl.mjs.map +1 -1
- package/dist/{BrowserSession-Bx0V1-6_.d.mts → BrowserSession-Cojp7nth.d.mts} +3 -2
- package/dist/{BrowserSession-BfNmyayH.mjs → BrowserSession-aovMjfL4.mjs} +14 -14
- package/dist/BrowserSession-aovMjfL4.mjs.map +1 -0
- package/dist/BrowserSession.d.mts +1 -1
- package/dist/BrowserSession.mjs +2 -2
- package/dist/BrowserUse.d.mts +40 -64
- package/dist/BrowserUse.mjs +223 -2
- package/dist/BrowserUse.mjs.map +1 -0
- package/dist/CloudflareBrowser-Vt8qTdYW.mjs.map +1 -1
- package/dist/CloudflareCodeMode.mjs.map +1 -1
- package/dist/CloudflareScheduling.mjs +9 -9
- package/dist/CloudflareScheduling.mjs.map +1 -1
- package/dist/CloudflareSubscriptions.mjs +15 -15
- package/dist/CloudflareSubscriptions.mjs.map +1 -1
- package/dist/{CloudflareThreadClient-DgZVrZzF.mjs → CloudflareThreadClient-DU548EEj.mjs} +42 -39
- package/dist/CloudflareThreadClient-DU548EEj.mjs.map +1 -0
- package/dist/{CloudflareThreadClient-HO_3rkM7.d.mts → CloudflareThreadClient-lTm6baDP.d.mts} +362 -362
- package/dist/CloudflareThreadClient.d.mts +1 -1
- package/dist/CloudflareThreadClient.mjs +1 -1
- package/dist/{InteractiveBrowser-LdKzQeLR.mjs → InteractiveBrowser-BHNlwjZL.mjs} +40 -31
- package/dist/InteractiveBrowser-BHNlwjZL.mjs.map +1 -0
- package/dist/InteractiveBrowser.mjs +1 -1
- package/dist/{ThreadObject-CRbLbdXM.d.mts → ThreadObject-BLYgzcdT.d.mts} +15 -15
- package/dist/{ThreadObject-CGIaz6Jv.mjs → ThreadObject-C2LF3btz.mjs} +13 -14
- package/dist/ThreadObject-C2LF3btz.mjs.map +1 -0
- package/dist/ThreadObject.d.mts +1 -1
- package/dist/ThreadObject.mjs +1 -1
- package/dist/WakeScheduler.d.mts +1 -1
- package/dist/WakeScheduler.mjs +8 -3
- package/dist/WakeScheduler.mjs.map +1 -1
- package/dist/index.d.mts +3 -3
- package/dist/index.mjs +5 -5
- package/dist/{prepared-admission-CSdzFM_v.mjs → prepared-admission-BoUPHSNQ.mjs} +2 -2
- package/dist/{prepared-admission-CSdzFM_v.mjs.map → prepared-admission-BoUPHSNQ.mjs.map} +1 -1
- package/package.json +1 -1
- package/src/Alarm.ts +82 -39
- package/src/BrowserRestCapture.ts +1 -0
- package/src/BrowserRestCrawl.ts +1 -0
- package/src/BrowserSession.ts +3 -2
- package/src/BrowserUse.ts +287 -1504
- package/src/CloudflareCodeMode.ts +6 -0
- package/src/CloudflareScheduling.ts +103 -103
- package/src/CloudflareSubscriptions.ts +192 -199
- package/src/CloudflareThreadClient.ts +256 -268
- package/src/InteractiveBrowser.ts +43 -17
- package/src/ThreadObject.ts +35 -24
- package/src/WakeScheduler.ts +12 -9
- package/src/internal/browser-binding.ts +8 -0
- package/src/internal/browser-credentials.ts +18 -13
- package/src/internal/browser-file-selection.ts +13 -2
- package/src/internal/browser-quick-action.ts +1 -0
- package/src/internal/browser-session-lifecycle.ts +32 -36
- package/src/internal/due-queue.ts +38 -19
- package/src/internal/layers.ts +53 -53
- package/dist/Alarm-BMEAZo3p.mjs.map +0 -1
- package/dist/BrowserSession-BfNmyayH.mjs.map +0 -1
- package/dist/BrowserUse-Bc2JdLW2.mjs +0 -1528
- package/dist/BrowserUse-Bc2JdLW2.mjs.map +0 -1
- package/dist/CloudflareThreadClient-DgZVrZzF.mjs.map +0 -1
- package/dist/InteractiveBrowser-LdKzQeLR.mjs.map +0 -1
- package/dist/ThreadObject-CGIaz6Jv.mjs.map +0 -1
- package/dist/page-function-CmUCcyNP.mjs +0 -11
- package/dist/page-function-CmUCcyNP.mjs.map +0 -1
- package/src/internal/browser-dom.ts +0 -886
- package/src/internal/browser-jev-dom.ts +0 -362
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as boundHostDiagnostic, B as decodeUnknownResolutionCommand, C as SettlementReached, D as SubmitSucceeded, E as SubmitRequest, F as decodeCancelProgressRequest, G as encodeCancelProgressRequest, H as encodeApprovalDecisionCommand, I as decodeHostResponse, J as encodeReceipt, K as encodeHostResponse, L as decodeObservePageRequest, M as decodeApprovalDecisionCommand, N as decodeAwaitProgressRequest, O as ThreadClientError, P as decodeAwaitSettlementRequest, R as decodeReceipt, S as ProgressObserved, T as SubmissionStatusResponse, U as encodeAwaitProgressRequest, V as encodeAbortCommand, W as encodeAwaitSettlementRequest, X as encodeUnknownResolutionCommand, Y as encodeSubmitRequest, Z as Frame, _ as HostProtocolError, a as CancelProgressRequest, b as ObservedPage, c as ClientAwaitFailure, d as ClientSubmitFailure, f as ClientUnknownFailure, g as HostFailure, h as HostFailed, i as AwaitSettlementRequest, j as decodeAbortCommand, k as UnknownResolutionRecorded, l as ClientObserveFailure, n as ApprovalRecorded, o as ClientAbortFailure, p as CloudflareThreadClient, q as encodeObservePageRequest, r as AwaitProgressRequest, s as ClientApprovalFailure, t as AbortRecorded, u as ClientProgressFailure, v as HostResponse, w as SettlementRecordReached, x as ProgressCancelled, y as ObservePageRequest, z as decodeSubmitRequest } from "./CloudflareThreadClient-
|
|
1
|
+
import { A as boundHostDiagnostic, B as decodeUnknownResolutionCommand, C as SettlementReached, D as SubmitSucceeded, E as SubmitRequest, F as decodeCancelProgressRequest, G as encodeCancelProgressRequest, H as encodeApprovalDecisionCommand, I as decodeHostResponse, J as encodeReceipt, K as encodeHostResponse, L as decodeObservePageRequest, M as decodeApprovalDecisionCommand, N as decodeAwaitProgressRequest, O as ThreadClientError, P as decodeAwaitSettlementRequest, R as decodeReceipt, S as ProgressObserved, T as SubmissionStatusResponse, U as encodeAwaitProgressRequest, V as encodeAbortCommand, W as encodeAwaitSettlementRequest, X as encodeUnknownResolutionCommand, Y as encodeSubmitRequest, Z as Frame, _ as HostProtocolError, a as CancelProgressRequest, b as ObservedPage, c as ClientAwaitFailure, d as ClientSubmitFailure, f as ClientUnknownFailure, g as HostFailure, h as HostFailed, i as AwaitSettlementRequest, j as decodeAbortCommand, k as UnknownResolutionRecorded, l as ClientObserveFailure, n as ApprovalRecorded, o as ClientAbortFailure, p as CloudflareThreadClient, q as encodeObservePageRequest, r as AwaitProgressRequest, s as ClientApprovalFailure, t as AbortRecorded, u as ClientProgressFailure, v as HostResponse, w as SettlementRecordReached, x as ProgressCancelled, y as ObservePageRequest, z as decodeSubmitRequest } from "./CloudflareThreadClient-lTm6baDP.mjs";
|
|
2
2
|
export { AbortRecorded, ApprovalRecorded, AwaitProgressRequest, AwaitSettlementRequest, CancelProgressRequest, ClientAbortFailure, ClientApprovalFailure, ClientAwaitFailure, ClientObserveFailure, ClientProgressFailure, ClientSubmitFailure, ClientUnknownFailure, CloudflareThreadClient, HostFailed, HostFailure, HostProtocolError, HostResponse, Frame as LiveTextFrame, ObservePageRequest, ObservedPage, ProgressCancelled, ProgressObserved, SettlementReached, SettlementRecordReached, SubmissionStatusResponse, SubmitRequest, SubmitSucceeded, ThreadClientError, UnknownResolutionRecorded, boundHostDiagnostic, decodeAbortCommand, decodeApprovalDecisionCommand, decodeAwaitProgressRequest, decodeAwaitSettlementRequest, decodeCancelProgressRequest, decodeHostResponse, decodeObservePageRequest, decodeReceipt, decodeSubmitRequest, decodeUnknownResolutionCommand, encodeAbortCommand, encodeApprovalDecisionCommand, encodeAwaitProgressRequest, encodeAwaitSettlementRequest, encodeCancelProgressRequest, encodeHostResponse, encodeObservePageRequest, encodeReceipt, encodeSubmitRequest, encodeUnknownResolutionCommand };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as decodeObservePageRequest, B as encodeObservePageRequest, C as boundHostDiagnostic, D as decodeAwaitSettlementRequest, E as decodeAwaitProgressRequest, F as encodeApprovalDecisionCommand, H as encodeSubmitRequest, I as encodeAwaitProgressRequest, L as encodeAwaitSettlementRequest, M as decodeSubmitRequest, N as decodeUnknownResolutionCommand, O as decodeCancelProgressRequest, P as encodeAbortCommand, R as encodeCancelProgressRequest, S as UnknownResolutionRecorded, T as decodeApprovalDecisionCommand, U as encodeUnknownResolutionCommand, V as encodeReceipt, W as Frame, _ as SettlementRecordReached, a as CancelProgressRequest, b as SubmitSucceeded, c as HostFailed, d as HostResponse, f as ObservePageRequest, g as SettlementReached, h as ProgressObserved, i as AwaitSettlementRequest, j as decodeReceipt, k as decodeHostResponse, l as HostFailure, m as ProgressCancelled, n as ApprovalRecorded, o as CloudflareThreadClient, p as ObservedPage, r as AwaitProgressRequest, t as AbortRecorded, u as HostProtocolError, v as SubmissionStatusResponse, w as decodeAbortCommand, x as ThreadClientError, y as SubmitRequest, z as encodeHostResponse } from "./CloudflareThreadClient-
|
|
1
|
+
import { A as decodeObservePageRequest, B as encodeObservePageRequest, C as boundHostDiagnostic, D as decodeAwaitSettlementRequest, E as decodeAwaitProgressRequest, F as encodeApprovalDecisionCommand, H as encodeSubmitRequest, I as encodeAwaitProgressRequest, L as encodeAwaitSettlementRequest, M as decodeSubmitRequest, N as decodeUnknownResolutionCommand, O as decodeCancelProgressRequest, P as encodeAbortCommand, R as encodeCancelProgressRequest, S as UnknownResolutionRecorded, T as decodeApprovalDecisionCommand, U as encodeUnknownResolutionCommand, V as encodeReceipt, W as Frame, _ as SettlementRecordReached, a as CancelProgressRequest, b as SubmitSucceeded, c as HostFailed, d as HostResponse, f as ObservePageRequest, g as SettlementReached, h as ProgressObserved, i as AwaitSettlementRequest, j as decodeReceipt, k as decodeHostResponse, l as HostFailure, m as ProgressCancelled, n as ApprovalRecorded, o as CloudflareThreadClient, p as ObservedPage, r as AwaitProgressRequest, t as AbortRecorded, u as HostProtocolError, v as SubmissionStatusResponse, w as decodeAbortCommand, x as ThreadClientError, y as SubmitRequest, z as encodeHostResponse } from "./CloudflareThreadClient-DU548EEj.mjs";
|
|
2
2
|
export { AbortRecorded, ApprovalRecorded, AwaitProgressRequest, AwaitSettlementRequest, CancelProgressRequest, CloudflareThreadClient, HostFailed, HostFailure, HostProtocolError, HostResponse, Frame as LiveTextFrame, ObservePageRequest, ObservedPage, ProgressCancelled, ProgressObserved, SettlementReached, SettlementRecordReached, SubmissionStatusResponse, SubmitRequest, SubmitSucceeded, ThreadClientError, UnknownResolutionRecorded, boundHostDiagnostic, decodeAbortCommand, decodeApprovalDecisionCommand, decodeAwaitProgressRequest, decodeAwaitSettlementRequest, decodeCancelProgressRequest, decodeHostResponse, decodeObservePageRequest, decodeReceipt, decodeSubmitRequest, decodeUnknownResolutionCommand, encodeAbortCommand, encodeApprovalDecisionCommand, encodeAwaitProgressRequest, encodeAwaitSettlementRequest, encodeCancelProgressRequest, encodeHostResponse, encodeObservePageRequest, encodeReceipt, encodeSubmitRequest, encodeUnknownResolutionCommand };
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { t as pageFunction } from "./page-function-CmUCcyNP.mjs";
|
|
2
1
|
import { Cause, Clock, Context, Data, Duration, Effect, ErrorReporter, Layer, Option, Predicate, Redacted, Schema, Scope, Semaphore, Stream } from "effect";
|
|
3
2
|
import { PageScreenshotResult } from "@yielded/agent/page-screenshot";
|
|
4
3
|
import { SandboxImplementation } from "@yielded/agent/sandbox";
|
|
@@ -273,6 +272,14 @@ var BrowserRunBinding = class extends Context.Service()("@effect-agent/platform-
|
|
|
273
272
|
}
|
|
274
273
|
};
|
|
275
274
|
//#endregion
|
|
275
|
+
//#region src/internal/page-function.ts
|
|
276
|
+
/**
|
|
277
|
+
* Puppeteer sends a page function's source to the browser. Bundlers that keep function names,
|
|
278
|
+
* including Wrangler by default, insert `__name(...)` calls into that source, and the page has no
|
|
279
|
+
* such helper. The returned function's source declares a local no-op `__name` first.
|
|
280
|
+
*/
|
|
281
|
+
const pageFunction = (fn) => Object.assign((...args) => fn(...args), { toString: () => `(...args) => { const __name = (target) => target; return (${Function.prototype.toString.call(fn)})(...args); }` });
|
|
282
|
+
//#endregion
|
|
276
283
|
//#region src/internal/browser-file-selection.ts
|
|
277
284
|
function setFileSelection(element, encoded, name, type) {
|
|
278
285
|
if (Reflect.get(element, "type") !== "file" || Reflect.get(element, "disabled") || Reflect.get(element, "webkitdirectory")) throw new Error("The target is not an enabled file input");
|
|
@@ -293,7 +300,7 @@ const makeFileSelection = (page) => async (request, signal) => {
|
|
|
293
300
|
await session.send("Page.enable");
|
|
294
301
|
await session.send("Page.setInterceptFileChooserDialog", { enabled: true });
|
|
295
302
|
} catch (cause) {
|
|
296
|
-
await session.detach();
|
|
303
|
+
await session.detach().catch(() => {});
|
|
297
304
|
throw cause;
|
|
298
305
|
}
|
|
299
306
|
const select = async (element) => {
|
|
@@ -369,34 +376,34 @@ const Absent = Schema.Struct({ error: Schema.Literal("Session not found") });
|
|
|
369
376
|
var BrowserRunSessionLifecycle = class extends Context.Service()("@effect-agent/platform-cloudflare/BrowserRunSessionLifecycle") {
|
|
370
377
|
static layer(options) {
|
|
371
378
|
return Layer.effect(this, Effect.gen(function* () {
|
|
372
|
-
if (!Schema.is(Account)(options.accountId) || Redacted.value(options.apiToken).length === 0) return yield*
|
|
379
|
+
if (!Schema.is(Account)(options.accountId) || Redacted.value(options.apiToken).length === 0) return yield* BrowserRunCleanupError.make({ reason: "configuration" });
|
|
373
380
|
const client = yield* HttpClient.HttpClient;
|
|
374
381
|
const request = Effect.fnUntraced(function* (method, sessionId) {
|
|
375
382
|
const path = method === "DELETE" ? "browser" : "session";
|
|
376
|
-
const response = yield* client.execute(HttpClientRequest.make(method)(`https://api.cloudflare.com/client/v4/accounts/${options.accountId}/browser-rendering/devtools/${path}/${sessionId}`).pipe(HttpClientRequest.bearerToken(options.apiToken))).pipe(Effect.provideService(FetchHttpClient.RequestInit, { redirect: "manual" }), Effect.mapError((cause) =>
|
|
383
|
+
const response = yield* client.execute(HttpClientRequest.make(method)(`https://api.cloudflare.com/client/v4/accounts/${options.accountId}/browser-rendering/devtools/${path}/${sessionId}`).pipe(HttpClientRequest.bearerToken(options.apiToken))).pipe(Effect.provideService(FetchHttpClient.RequestInit, { redirect: "manual" }), Effect.mapError((cause) => BrowserRunCleanupError.make({
|
|
377
384
|
reason: "provider",
|
|
378
385
|
cause: browserFailure("browser.close.request", cause)
|
|
379
386
|
})));
|
|
380
|
-
if (response.status === 401 || response.status === 403) return yield*
|
|
387
|
+
if (response.status === 401 || response.status === 403) return yield* BrowserRunCleanupError.make({
|
|
381
388
|
reason: "authorization",
|
|
382
389
|
status: response.status
|
|
383
390
|
});
|
|
384
|
-
if (response.status === 429) return yield*
|
|
391
|
+
if (response.status === 429) return yield* BrowserRunCleanupError.make({
|
|
385
392
|
reason: "rate-limited",
|
|
386
393
|
status: response.status
|
|
387
394
|
});
|
|
388
|
-
if (response.status !== 200 && response.status !== 404) return yield*
|
|
395
|
+
if (response.status !== 200 && response.status !== 404) return yield* BrowserRunCleanupError.make({
|
|
389
396
|
reason: "provider",
|
|
390
397
|
status: response.status
|
|
391
398
|
});
|
|
392
|
-
if (response.headers["content-type"]?.split(";", 1)[0]?.trim() !== "application/json") return yield*
|
|
399
|
+
if (response.headers["content-type"]?.split(";", 1)[0]?.trim() !== "application/json") return yield* BrowserRunCleanupError.make({ reason: "malformed" });
|
|
393
400
|
const bytes = yield* Stream.runFoldEffect(response.stream, () => /* @__PURE__ */ new Uint8Array(), (body, chunk) => {
|
|
394
|
-
if (body.byteLength + chunk.byteLength > 16384) return Effect.fail(
|
|
401
|
+
if (body.byteLength + chunk.byteLength > 16384) return Effect.fail(BrowserRunCleanupError.make({ reason: "malformed" }));
|
|
395
402
|
const combined = new Uint8Array(body.byteLength + chunk.byteLength);
|
|
396
403
|
combined.set(body);
|
|
397
404
|
combined.set(chunk, body.byteLength);
|
|
398
405
|
return Effect.succeed(combined);
|
|
399
|
-
}).pipe(Effect.mapError((cause) =>
|
|
406
|
+
}).pipe(Effect.mapError((cause) => BrowserRunCleanupError.make({
|
|
400
407
|
reason: "malformed",
|
|
401
408
|
cause: browserFailure("browser.close.response", cause)
|
|
402
409
|
})));
|
|
@@ -405,7 +412,7 @@ var BrowserRunSessionLifecycle = class extends Context.Service()("@effect-agent/
|
|
|
405
412
|
fatal: true,
|
|
406
413
|
ignoreBOM: false
|
|
407
414
|
}).decode(bytes),
|
|
408
|
-
catch: (cause) =>
|
|
415
|
+
catch: (cause) => BrowserRunCleanupError.make({
|
|
409
416
|
reason: "malformed",
|
|
410
417
|
cause: browserFailure("browser.close.decode", cause)
|
|
411
418
|
})
|
|
@@ -413,27 +420,27 @@ var BrowserRunSessionLifecycle = class extends Context.Service()("@effect-agent/
|
|
|
413
420
|
if (response.status === 404) {
|
|
414
421
|
const absent = Schema.decodeOption(Schema.fromJsonString(Absent))(body, { onExcessProperty: "error" });
|
|
415
422
|
if (Option.isSome(absent)) return true;
|
|
416
|
-
return yield*
|
|
423
|
+
return yield* BrowserRunCleanupError.make({ reason: "malformed" });
|
|
417
424
|
}
|
|
418
|
-
if (method === "DELETE") return (yield* Schema.decodeEffect(Schema.fromJsonString(Closed))(body).pipe(Effect.mapError((cause) =>
|
|
425
|
+
if (method === "DELETE") return (yield* Schema.decodeEffect(Schema.fromJsonString(Closed))(body).pipe(Effect.mapError((cause) => BrowserRunCleanupError.make({
|
|
419
426
|
reason: "malformed",
|
|
420
427
|
cause: browserFailure("browser.close.response", cause)
|
|
421
428
|
})))).status === "closed";
|
|
422
|
-
const result = yield* Schema.decodeEffect(Schema.fromJsonString(Metadata))(body).pipe(Effect.mapError((cause) =>
|
|
429
|
+
const result = yield* Schema.decodeEffect(Schema.fromJsonString(Metadata))(body).pipe(Effect.mapError((cause) => BrowserRunCleanupError.make({
|
|
423
430
|
reason: "malformed",
|
|
424
431
|
cause: browserFailure("browser.close.response", cause)
|
|
425
432
|
})));
|
|
426
|
-
if (result.sessionId !== sessionId) return yield*
|
|
433
|
+
if (result.sessionId !== sessionId) return yield* BrowserRunCleanupError.make({ reason: "malformed" });
|
|
427
434
|
return result.endTime !== void 0 && result.endTime > 0;
|
|
428
435
|
});
|
|
429
436
|
return { close: Effect.fnUntraced(function* (sessionId) {
|
|
430
|
-
const id = yield* Schema.decodeEffect(Identity)(Redacted.value(sessionId)).pipe(Effect.mapError(() =>
|
|
437
|
+
const id = yield* Schema.decodeEffect(Identity)(Redacted.value(sessionId)).pipe(Effect.mapError(() => BrowserRunCleanupError.make({ reason: "configuration" })));
|
|
431
438
|
if (yield* request("DELETE", id)) return;
|
|
432
439
|
for (let read = 0; read < 2; read++) if (yield* request("GET", id)) return;
|
|
433
|
-
return yield*
|
|
440
|
+
return yield* BrowserRunCleanupError.make({ reason: "pending" });
|
|
434
441
|
}, Effect.timeoutOrElse({
|
|
435
442
|
duration: "10 seconds",
|
|
436
|
-
orElse: () => Effect.fail(
|
|
443
|
+
orElse: () => Effect.fail(BrowserRunCleanupError.make({ reason: "timeout" }))
|
|
437
444
|
}), Effect.withTracerEnabled(false)) };
|
|
438
445
|
}));
|
|
439
446
|
}
|
|
@@ -1760,12 +1767,13 @@ const makeHostService = (binding) => {
|
|
|
1760
1767
|
state.disconnected.value = true;
|
|
1761
1768
|
return yield* expiredError();
|
|
1762
1769
|
}
|
|
1763
|
-
const reattached = resume === void 0 ? void 0 : yield* withinDeadline(Effect.
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1770
|
+
const reattached = resume === void 0 ? void 0 : yield* withinDeadline(Effect.gen(function* () {
|
|
1771
|
+
if (browser.reattach === void 0 || browser.detach === void 0) return yield* protocolError("The browser binding does not support exact reattachment");
|
|
1772
|
+
const reattach = browser.reattach.bind(browser);
|
|
1773
|
+
return yield* Effect.tryPromise({
|
|
1774
|
+
try: () => reattach(resume.page),
|
|
1775
|
+
catch: (cause) => protocolError("Reattaching the exact browser page failed", cause)
|
|
1776
|
+
});
|
|
1769
1777
|
}).pipe(Effect.timeoutOrElse({
|
|
1770
1778
|
duration: "10 seconds",
|
|
1771
1779
|
orElse: () => Effect.fail(protocolError("Reattaching the exact browser page timed out"))
|
|
@@ -1837,12 +1845,13 @@ const makeHostService = (binding) => {
|
|
|
1837
1845
|
const currentPagePreflight = decodeActionResult(page, fixedPolicy).pipe(Effect.asVoid);
|
|
1838
1846
|
const requestFitsSession = (requestedMillis) => remainingMillis(fixedPolicy, startedAt).pipe(Effect.flatMap((remaining) => remaining > 0 && requestedMillis <= remaining ? Effect.void : Effect.fail(policyError("The host browser request exceeds the remaining session time"))));
|
|
1839
1847
|
const inputState = Effect.sync(() => state.uncertain.value ? "unknown" : state.pendingInputs.size > 0 ? "running" : "idle");
|
|
1840
|
-
const pageIdentity = yield* Effect.cached(Effect.
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1848
|
+
const pageIdentity = yield* Effect.cached(Effect.gen(function* () {
|
|
1849
|
+
if (page.identity === void 0) return yield* protocolError("The browser binding does not expose page identity");
|
|
1850
|
+
const identity = page.identity.bind(page);
|
|
1851
|
+
return yield* Effect.tryPromise({
|
|
1852
|
+
try: () => identity(),
|
|
1853
|
+
catch: (cause) => protocolError("Reading the exact browser page identity failed", cause)
|
|
1854
|
+
});
|
|
1846
1855
|
}).pipe(Effect.catchTag("InteractiveBrowserProtocolError", (error) => failReportedProtocol("interactive.checkpoint", error))));
|
|
1847
1856
|
const observeResize = yield* makeHostInputObserver(state, "interactive.resize.late");
|
|
1848
1857
|
return {
|
|
@@ -1930,4 +1939,4 @@ const CloudflareInteractiveBrowser = {
|
|
|
1930
1939
|
//#endregion
|
|
1931
1940
|
export { reportedBrowserError as C, reportBrowserCause as S, BrowserRunCleanupError as _, BrowserRunInteractiveCheckpoint as a, BrowserRunFailure as b, BrowserRunLiveViewResult as c, BrowserRunViewport as d, CloudflareInteractiveBrowser as f, isBrowserRunUndispatchedActionError as g, browserRunInteractiveLayer as h, BrowserRunInteractiveBinding as i, BrowserRunPageIdentity as l, browserRunInteractiveImplementation as m, BrowserRunHandoffResult as n, BrowserRunInteractiveHost as o, browserRunInteractiveHostLayer as p, BrowserRunHandoffState as r, BrowserRunLiveViewRequest as s, BrowserRunHandoffRequest as t, BrowserRunPageObservation as u, BrowserRunSessionLifecycle as v, browserFailure as x, BrowserRunBinding as y };
|
|
1932
1941
|
|
|
1933
|
-
//# sourceMappingURL=InteractiveBrowser-
|
|
1942
|
+
//# sourceMappingURL=InteractiveBrowser-BHNlwjZL.mjs.map
|