effect-browserbase 0.1.0-beta.102
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/LICENSE +21 -0
- package/README.md +441 -0
- package/dist/Account.d.mts +34 -0
- package/dist/Account.mjs +41 -0
- package/dist/Account.mjs.map +1 -0
- package/dist/Acquisition-WBafHwXH.mjs +280 -0
- package/dist/Acquisition-WBafHwXH.mjs.map +1 -0
- package/dist/Agents.d.mts +156 -0
- package/dist/Agents.mjs +307 -0
- package/dist/Agents.mjs.map +1 -0
- package/dist/Allocation.d.mts +99 -0
- package/dist/Allocation.mjs +29 -0
- package/dist/Allocation.mjs.map +1 -0
- package/dist/Association-CEps4hYP.mjs +10 -0
- package/dist/Association-CEps4hYP.mjs.map +1 -0
- package/dist/Authorization-Ll5f_XNM.mjs +12 -0
- package/dist/Authorization-Ll5f_XNM.mjs.map +1 -0
- package/dist/Bootstrap-BXuzZojd.mjs +194 -0
- package/dist/Bootstrap-BXuzZojd.mjs.map +1 -0
- package/dist/Bootstrap-m7lHgj0D.d.mts +177 -0
- package/dist/Bootstrap.d.mts +2 -0
- package/dist/Bootstrap.mjs +2 -0
- package/dist/Browser-joE4Zgys.mjs +1557 -0
- package/dist/Browser-joE4Zgys.mjs.map +1 -0
- package/dist/Browser.d.mts +195 -0
- package/dist/Browser.mjs +2 -0
- package/dist/BrowserBinding-qbQA6JhH.mjs +2452 -0
- package/dist/BrowserBinding-qbQA6JhH.mjs.map +1 -0
- package/dist/BrowserBinding.d.mts +40 -0
- package/dist/BrowserBinding.mjs +2 -0
- package/dist/BrowserData-LpcAuAub.d.mts +369 -0
- package/dist/BrowserData.d.mts +2 -0
- package/dist/BrowserData.mjs +442 -0
- package/dist/BrowserData.mjs.map +1 -0
- package/dist/Capture-CZJPuD7b.mjs +532 -0
- package/dist/Capture-CZJPuD7b.mjs.map +1 -0
- package/dist/Capture-Dr5MkIJb.d.mts +125 -0
- package/dist/Capture.d.mts +2 -0
- package/dist/Capture.mjs +2 -0
- package/dist/Certificates.d.mts +35 -0
- package/dist/Certificates.mjs +90 -0
- package/dist/Certificates.mjs.map +1 -0
- package/dist/Cleanup-G2YpTCuU.d.mts +24 -0
- package/dist/Cleanup.d.mts +2 -0
- package/dist/Cleanup.mjs +48 -0
- package/dist/Cleanup.mjs.map +1 -0
- package/dist/Client-Ca0zSg1n.d.mts +53 -0
- package/dist/Client-D1_xYM9o.mjs +424 -0
- package/dist/Client-D1_xYM9o.mjs.map +1 -0
- package/dist/Client.d.mts +2 -0
- package/dist/Client.mjs +2 -0
- package/dist/ContextCoordination.d.mts +16 -0
- package/dist/ContextCoordination.mjs +67 -0
- package/dist/ContextCoordination.mjs.map +1 -0
- package/dist/ContextWriter-BrQmoXRg.mjs +187 -0
- package/dist/ContextWriter-BrQmoXRg.mjs.map +1 -0
- package/dist/Contexts.d.mts +32 -0
- package/dist/Contexts.mjs +103 -0
- package/dist/Contexts.mjs.map +1 -0
- package/dist/Deadline-CrViaogr.mjs +13 -0
- package/dist/Deadline-CrViaogr.mjs.map +1 -0
- package/dist/Downloads.d.mts +44 -0
- package/dist/Downloads.mjs +142 -0
- package/dist/Downloads.mjs.map +1 -0
- package/dist/Errors.d.mts +123 -0
- package/dist/Errors.mjs +329 -0
- package/dist/Errors.mjs.map +1 -0
- package/dist/Extensions-ClZbYb1H.mjs +237 -0
- package/dist/Extensions-ClZbYb1H.mjs.map +1 -0
- package/dist/Extensions.d.mts +44 -0
- package/dist/Extensions.mjs +2 -0
- package/dist/Functions.d.mts +227 -0
- package/dist/Functions.mjs +332 -0
- package/dist/Functions.mjs.map +1 -0
- package/dist/Images-DgscEfSf.mjs +127 -0
- package/dist/Images-DgscEfSf.mjs.map +1 -0
- package/dist/Issued-DejqoMYL.mjs +15 -0
- package/dist/Issued-DejqoMYL.mjs.map +1 -0
- package/dist/Launch-BHcAEq05.mjs +111 -0
- package/dist/Launch-BHcAEq05.mjs.map +1 -0
- package/dist/Launch-C8CfaYxb.d.mts +132 -0
- package/dist/Launch.d.mts +2 -0
- package/dist/Launch.mjs +105 -0
- package/dist/Launch.mjs.map +1 -0
- package/dist/PageControl.d.mts +16 -0
- package/dist/PageControl.mjs +36 -0
- package/dist/PageControl.mjs.map +1 -0
- package/dist/PageControlAssociation-DabEg5AR.mjs +10 -0
- package/dist/PageControlAssociation-DabEg5AR.mjs.map +1 -0
- package/dist/PageFetch.d.mts +40 -0
- package/dist/PageFetch.mjs +64 -0
- package/dist/PageFetch.mjs.map +1 -0
- package/dist/Projects.d.mts +39 -0
- package/dist/Projects.mjs +71 -0
- package/dist/Projects.mjs.map +1 -0
- package/dist/Recordings.d.mts +28 -0
- package/dist/Recordings.mjs +131 -0
- package/dist/Recordings.mjs.map +1 -0
- package/dist/References-URDAtapt.d.mts +35 -0
- package/dist/References.d.mts +2 -0
- package/dist/References.mjs +41 -0
- package/dist/References.mjs.map +1 -0
- package/dist/Replays.d.mts +28 -0
- package/dist/Replays.mjs +109 -0
- package/dist/Replays.mjs.map +1 -0
- package/dist/Resource-DBksC4zB.mjs +50 -0
- package/dist/Resource-DBksC4zB.mjs.map +1 -0
- package/dist/Search.d.mts +38 -0
- package/dist/Search.mjs +53 -0
- package/dist/Search.mjs.map +1 -0
- package/dist/SessionData-DRKcKCqw.d.mts +39 -0
- package/dist/SessionData.d.mts +2 -0
- package/dist/SessionData.mjs +55 -0
- package/dist/SessionData.mjs.map +1 -0
- package/dist/Sessions-B8E4kMxo.d.mts +68 -0
- package/dist/Sessions-CtbseWEh.mjs +244 -0
- package/dist/Sessions-CtbseWEh.mjs.map +1 -0
- package/dist/Sessions.d.mts +3 -0
- package/dist/Sessions.mjs +3 -0
- package/dist/TransferPolicy-DQ06i7SZ.mjs +25 -0
- package/dist/TransferPolicy-DQ06i7SZ.mjs.map +1 -0
- package/dist/Transfers-Czv5IZzJ.d.mts +76 -0
- package/dist/Transfers.d.mts +2 -0
- package/dist/Transfers.mjs +101 -0
- package/dist/Transfers.mjs.map +1 -0
- package/dist/Uploads.d.mts +29 -0
- package/dist/Uploads.mjs +107 -0
- package/dist/Uploads.mjs.map +1 -0
- package/dist/Webhooks.d.mts +60 -0
- package/dist/Webhooks.mjs +143 -0
- package/dist/Webhooks.mjs.map +1 -0
- package/dist/WriterFacts-osvYAsIx.d.mts +61 -0
- package/dist/index.d.mts +30 -0
- package/dist/index.mjs +30 -0
- package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
- package/package.json +163 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { BrowserError } from "./Errors.mjs";
|
|
2
|
+
import { E as PageInfo, L as Target } from "./BrowserData-LpcAuAub.mjs";
|
|
3
|
+
import { BrowserbaseSession } from "./Browser.mjs";
|
|
4
|
+
import { Effect, Schema, Scope, Stream } from "effect";
|
|
5
|
+
//#region src/internal/capture/CaptureTypes.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Binary frame data, not a live capability or a JSON/thread/Tool value. Decoding validates
|
|
8
|
+
* fields; it does not copy bytes, decode JPEG pixels, prove target authority, or repair clocks.
|
|
9
|
+
* Capture itself owns the byte copy, freezes its shared target identity, and verifies JPEG framing.
|
|
10
|
+
*/
|
|
11
|
+
declare const CapturedFrame: Schema.Struct<{
|
|
12
|
+
readonly bytes: Schema.Uint8Array;
|
|
13
|
+
readonly mediaType: Schema.Literal<"image/jpeg">;
|
|
14
|
+
readonly target: typeof Target;
|
|
15
|
+
readonly sequence: Schema.Natural;
|
|
16
|
+
/**
|
|
17
|
+
* Which document of its page this frame was received during: 0 at the start, one more for each
|
|
18
|
+
* main-frame navigation the interval observed. It is attribution by receipt order, not proof
|
|
19
|
+
* of whose pixels these are: a frame received just after a navigation can still show the
|
|
20
|
+
* document before it. Always 0 for an interval that lasts one document.
|
|
21
|
+
*/
|
|
22
|
+
readonly document: Schema.Natural;
|
|
23
|
+
readonly sourceTimeMillis: Schema.Finite;
|
|
24
|
+
readonly sourceClock: Schema.Literal<"presentation-unix-millis">;
|
|
25
|
+
readonly receivedMonotonicNanos: Schema.BigInt;
|
|
26
|
+
readonly width: Schema.Int;
|
|
27
|
+
readonly height: Schema.Int;
|
|
28
|
+
readonly viewportWidth: Schema.Int;
|
|
29
|
+
readonly viewportHeight: Schema.Int;
|
|
30
|
+
}>;
|
|
31
|
+
type CapturedFrame = typeof CapturedFrame.Type;
|
|
32
|
+
/** Source-fit request in pixels. Actual JPEG bounds are checked before any frame is delivered. */
|
|
33
|
+
declare const CaptureSize: Schema.Struct<{
|
|
34
|
+
readonly width: Schema.Int;
|
|
35
|
+
readonly height: Schema.Int;
|
|
36
|
+
}>;
|
|
37
|
+
type CaptureSize = typeof CaptureSize.Type;
|
|
38
|
+
/** Optional capture data. Defaults are applied at admission, not during schema decoding. */
|
|
39
|
+
declare const CaptureOptions: Schema.Struct<{
|
|
40
|
+
/** Pin to a page from `session.pages`; omission preserves selected-page behavior. */
|
|
41
|
+
readonly target: Schema.optionalKey<typeof PageInfo>;
|
|
42
|
+
readonly maxFrames: Schema.optionalKey<Schema.Int>;
|
|
43
|
+
readonly maxBufferedBytes: Schema.optionalKey<Schema.Int>;
|
|
44
|
+
readonly maxFrameBytes: Schema.optionalKey<Schema.Int>;
|
|
45
|
+
readonly maxDurationMillis: Schema.optionalKey<Schema.Int>;
|
|
46
|
+
readonly quality: Schema.optionalKey<Schema.Int>;
|
|
47
|
+
/** Source fit only. Does not resize the viewport or impose an FPS cap. */
|
|
48
|
+
readonly size: Schema.optionalKey<Schema.Struct<{
|
|
49
|
+
readonly width: Schema.Int;
|
|
50
|
+
readonly height: Schema.Int;
|
|
51
|
+
}>>;
|
|
52
|
+
/**
|
|
53
|
+
* `document`, the default, ends the interval when its page navigates. `page` follows the page
|
|
54
|
+
* across documents, so a capture started before a navigation covers the loading in between.
|
|
55
|
+
* It applies to a page's main frame; a capture bound to a child frame still ends with it.
|
|
56
|
+
*/
|
|
57
|
+
readonly lifetime: Schema.optionalKey<Schema.Literals<readonly ["document", "page"]>>;
|
|
58
|
+
}>;
|
|
59
|
+
type CaptureOptions = typeof CaptureOptions.Type;
|
|
60
|
+
declare const CaptureSummary_base: Schema.Class<CaptureSummary, Schema.Struct<{
|
|
61
|
+
readonly target: typeof Target;
|
|
62
|
+
readonly reason: Schema.String;
|
|
63
|
+
readonly received: Schema.Natural;
|
|
64
|
+
readonly delivered: Schema.Natural;
|
|
65
|
+
readonly dropped: Schema.Natural;
|
|
66
|
+
readonly duplicates: Schema.Natural;
|
|
67
|
+
/** Arrived after a newer frame was accepted; counted within `dropped`, never reordered in. */
|
|
68
|
+
readonly late: Schema.Natural;
|
|
69
|
+
readonly peakBufferedFrames: Schema.Natural;
|
|
70
|
+
readonly peakBufferedBytes: Schema.Natural;
|
|
71
|
+
readonly bufferedFrames: Schema.Natural;
|
|
72
|
+
readonly bufferedBytes: Schema.Natural;
|
|
73
|
+
readonly sourceFirstMillis: Schema.NullOr<Schema.Finite>;
|
|
74
|
+
readonly sourceLastMillis: Schema.NullOr<Schema.Finite>;
|
|
75
|
+
/**
|
|
76
|
+
* The captured frame's address when this interval began watching it: the URL of document 0.
|
|
77
|
+
* It is read in the same turn the watch is installed, so no navigation can fall between them.
|
|
78
|
+
*/
|
|
79
|
+
readonly initialUrl: Schema.NullOr<Schema.String>;
|
|
80
|
+
/**
|
|
81
|
+
* Each main-frame navigation a `page` interval observed, in order, with the last frame
|
|
82
|
+
* received before it and the address the new document committed. The native screencast is
|
|
83
|
+
* never restarted for one, so a boundary is not a gap this package introduced; what Chromium
|
|
84
|
+
* omitted while loading stays `upstreamDrops`. A boundary is the commit. When that navigation
|
|
85
|
+
* started and when its document finished loading are the caller's to stamp, on this same
|
|
86
|
+
* clock, around the operation that caused it. A title is page state, not part of a transition.
|
|
87
|
+
*/
|
|
88
|
+
readonly documentBoundaries: Schema.$Array<Schema.Struct<{
|
|
89
|
+
readonly document: Schema.Natural;
|
|
90
|
+
readonly observedMonotonicNanos: Schema.BigInt;
|
|
91
|
+
readonly afterSequence: Schema.NullOr<Schema.Natural>;
|
|
92
|
+
readonly url: Schema.NullOr<Schema.String>;
|
|
93
|
+
}>>;
|
|
94
|
+
/** More navigations were observed than are recorded above. Frames still count them all. */
|
|
95
|
+
readonly documentBoundariesTruncated: Schema.Boolean;
|
|
96
|
+
readonly nativeStop: Schema.Literals<readonly ["confirmed", "unconfirmed"]>;
|
|
97
|
+
/** Package accounting cannot measure frames omitted by Chromium, transport, or the provider. */
|
|
98
|
+
readonly upstreamDrops: Schema.Literal<"unknown">;
|
|
99
|
+
readonly error: Schema.optionalKey<typeof BrowserError>;
|
|
100
|
+
}>, {}>;
|
|
101
|
+
declare class CaptureSummary extends CaptureSummary_base {}
|
|
102
|
+
/** Live stream/Effect capabilities intentionally have no data schema or serialization contract. */
|
|
103
|
+
interface CaptureInterval {
|
|
104
|
+
/** Single subscription. Ending or interrupting it stops this interval, not its browser. */
|
|
105
|
+
readonly frames: Stream.Stream<CapturedFrame, BrowserError>;
|
|
106
|
+
readonly stop: Effect.Effect<CaptureSummary>;
|
|
107
|
+
readonly completed: Effect.Effect<CaptureSummary>;
|
|
108
|
+
}
|
|
109
|
+
declare namespace Capture_d_exports {
|
|
110
|
+
export { CaptureInterval, CaptureOptions, CaptureSize, CaptureSummary, CapturedFrame, start };
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Capture one remote page independently of the session's selected page.
|
|
114
|
+
*
|
|
115
|
+
* Requires the exact live session returned by the host; copying a session object or decoding
|
|
116
|
+
* a durable reference cannot copy its capture authority. The private owner is not frame data.
|
|
117
|
+
* `CapturedFrame` and `CaptureOptions` are Schema values as well as structural types. Frame
|
|
118
|
+
* decoding checks binary/metadata fields, not the complete JPEG bitstream or target authority,
|
|
119
|
+
* and does not copy bytes. Options decoding preserves omissions; admission applies defaults.
|
|
120
|
+
* `CaptureInterval` remains a live scoped capability, not a schema or JSON/Tool value.
|
|
121
|
+
*/
|
|
122
|
+
declare const start: <E>(session: BrowserbaseSession<E>, options?: CaptureOptions) => Effect.Effect<CaptureInterval, BrowserError, Scope.Scope>;
|
|
123
|
+
//#endregion
|
|
124
|
+
export { CaptureSize as a, CaptureOptions as i, start as n, CaptureSummary as o, CaptureInterval as r, CapturedFrame as s, Capture_d_exports as t };
|
|
125
|
+
//# sourceMappingURL=Capture-Dr5MkIJb.d.mts.map
|
package/dist/Capture.mjs
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { CertificateError } from "./Errors.mjs";
|
|
2
|
+
import { t as BrowserbaseClient } from "./Client-Ca0zSg1n.mjs";
|
|
3
|
+
import { Context, Effect, Layer, Schema } from "effect";
|
|
4
|
+
declare namespace Certificates_d_exports {
|
|
5
|
+
export { BrowserbaseCertificates, CertificateMetadata, CertificateUpload };
|
|
6
|
+
}
|
|
7
|
+
declare const CertificateMetadata_base: Schema.Class<CertificateMetadata, Schema.Struct<{
|
|
8
|
+
readonly certificateId: Schema.NonEmptyString;
|
|
9
|
+
readonly projectId: Schema.NonEmptyString;
|
|
10
|
+
readonly createdAt: Schema.String;
|
|
11
|
+
readonly updatedAt: Schema.String;
|
|
12
|
+
}>, {}>;
|
|
13
|
+
/** Select a certificate at launch with `provider.proxySettings.caCertificates: [certificateId]`. */
|
|
14
|
+
export declare class CertificateMetadata extends CertificateMetadata_base {}
|
|
15
|
+
export interface CertificateUpload {
|
|
16
|
+
/** PEM or DER bytes of one CA certificate. */
|
|
17
|
+
readonly bytes: Uint8Array;
|
|
18
|
+
/** Portable basename sent with the part; defaults to `certificate.pem`. */
|
|
19
|
+
readonly filename?: string;
|
|
20
|
+
readonly maxBytes?: number;
|
|
21
|
+
readonly timeoutMillis?: number;
|
|
22
|
+
}
|
|
23
|
+
declare const BrowserbaseCertificates_base: Context.ServiceClass<BrowserbaseCertificates, "effect-browserbase/Certificates", {
|
|
24
|
+
readonly create: (upload: CertificateUpload) => Effect.Effect<CertificateMetadata, CertificateError>;
|
|
25
|
+
readonly list: Effect.Effect<ReadonlyArray<CertificateMetadata>, CertificateError>;
|
|
26
|
+
readonly retrieve: (certificateId: string) => Effect.Effect<CertificateMetadata, CertificateError>;
|
|
27
|
+
readonly delete: (certificateId: string) => Effect.Effect<void, CertificateError>;
|
|
28
|
+
}>;
|
|
29
|
+
/** Proxy CA certificates. Registration is one bounded multipart mutation, never retried. */
|
|
30
|
+
export declare class BrowserbaseCertificates extends BrowserbaseCertificates_base {
|
|
31
|
+
static readonly layer: Layer.Layer<BrowserbaseCertificates, never, BrowserbaseClient>;
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
export { Certificates_d_exports as t };
|
|
35
|
+
//# sourceMappingURL=Certificates.d.mts.map
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
|
|
2
|
+
import { Identifier } from "./References.mjs";
|
|
3
|
+
import { CertificateError } from "./Errors.mjs";
|
|
4
|
+
import { SafeFilename } from "./Transfers.mjs";
|
|
5
|
+
import { t as BrowserbaseClient } from "./Client-D1_xYM9o.mjs";
|
|
6
|
+
import { t as resource } from "./Resource-DBksC4zB.mjs";
|
|
7
|
+
import { Context, Effect, Layer, Schema } from "effect";
|
|
8
|
+
//#region src/Certificates.ts
|
|
9
|
+
var Certificates_exports = /* @__PURE__ */ __exportAll({
|
|
10
|
+
BrowserbaseCertificates: () => BrowserbaseCertificates,
|
|
11
|
+
CertificateMetadata: () => CertificateMetadata
|
|
12
|
+
});
|
|
13
|
+
const Timestamp = Schema.String.check(Schema.isMaxLength(64));
|
|
14
|
+
const MAX_CERTIFICATE_BYTES = 1048576;
|
|
15
|
+
/** Select a certificate at launch with `provider.proxySettings.caCertificates: [certificateId]`. */
|
|
16
|
+
var CertificateMetadata = class extends Schema.Class("BrowserbaseCertificateMetadata")({
|
|
17
|
+
certificateId: Identifier,
|
|
18
|
+
projectId: Identifier,
|
|
19
|
+
createdAt: Timestamp,
|
|
20
|
+
updatedAt: Timestamp
|
|
21
|
+
}) {};
|
|
22
|
+
const Upload = Schema.Struct({
|
|
23
|
+
filename: Schema.optionalKey(SafeFilename),
|
|
24
|
+
maxBytes: Schema.optionalKey(Schema.Int.check(Schema.isBetween({
|
|
25
|
+
minimum: 1,
|
|
26
|
+
maximum: MAX_CERTIFICATE_BYTES
|
|
27
|
+
}))),
|
|
28
|
+
timeoutMillis: Schema.optionalKey(Schema.Int.check(Schema.isBetween({
|
|
29
|
+
minimum: 1,
|
|
30
|
+
maximum: 6e5
|
|
31
|
+
})))
|
|
32
|
+
});
|
|
33
|
+
const ProviderCertificate = Schema.Struct({
|
|
34
|
+
id: Identifier,
|
|
35
|
+
projectId: Identifier,
|
|
36
|
+
createdAt: Timestamp,
|
|
37
|
+
updatedAt: Timestamp
|
|
38
|
+
});
|
|
39
|
+
/** Proxy CA certificates. Registration is one bounded multipart mutation, never retried. */
|
|
40
|
+
var BrowserbaseCertificates = class BrowserbaseCertificates extends Context.Service()("effect-browserbase/Certificates") {
|
|
41
|
+
static layer = Layer.effect(BrowserbaseCertificates, Effect.gen(function* () {
|
|
42
|
+
const client = yield* BrowserbaseClient;
|
|
43
|
+
const api = resource(client, (failure) => CertificateError.make(failure));
|
|
44
|
+
const own = (operation, mutation) => Effect.fnUntraced(function* (value) {
|
|
45
|
+
if (value.projectId !== client.projectId) return yield* api.malformed(operation, mutation);
|
|
46
|
+
const { id, ...rest } = value;
|
|
47
|
+
return CertificateMetadata.make({
|
|
48
|
+
certificateId: id,
|
|
49
|
+
...rest
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
const create = Effect.fn("BrowserbaseCertificates.create")(function* (upload) {
|
|
53
|
+
const { bytes, ...options } = upload;
|
|
54
|
+
const value = yield* api.input(Upload, options, "certificate-create");
|
|
55
|
+
const owned = new Uint8Array(bytes);
|
|
56
|
+
const raw = yield* client.upload("/v1/certificates", {
|
|
57
|
+
field: "file",
|
|
58
|
+
filename: value.filename ?? "certificate.pem",
|
|
59
|
+
mediaType: "application/x-pem-file",
|
|
60
|
+
bytes: owned
|
|
61
|
+
}, {
|
|
62
|
+
maxBytes: value.maxBytes ?? 65536,
|
|
63
|
+
...value.timeoutMillis === void 0 ? {} : { timeoutMillis: value.timeoutMillis }
|
|
64
|
+
}).pipe(Effect.mapError(api.fromClient("certificate-create")));
|
|
65
|
+
const created = yield* Schema.decodeUnknownEffect(ProviderCertificate)(raw).pipe(Effect.mapError(() => api.malformed("certificate-create", true)));
|
|
66
|
+
return yield* own("certificate-create", true)(created);
|
|
67
|
+
});
|
|
68
|
+
const list = api.request("GET", "/v1/certificates", Schema.Array(ProviderCertificate).check(Schema.isMaxLength(1024)), "certificate-list").pipe(Effect.flatMap(Effect.forEach(own("certificate-list", false))), Effect.withSpan("BrowserbaseCertificates.list"));
|
|
69
|
+
const retrieve = Effect.fn("BrowserbaseCertificates.retrieve")(function* (certificateId) {
|
|
70
|
+
const id = yield* api.input(Identifier, certificateId, "certificate-retrieve");
|
|
71
|
+
const value = yield* api.request("GET", `/v1/certificates/${api.segment(id)}`, ProviderCertificate, "certificate-retrieve");
|
|
72
|
+
if (value.id !== id) return yield* api.malformed("certificate-retrieve", false);
|
|
73
|
+
return yield* own("certificate-retrieve", false)(value);
|
|
74
|
+
});
|
|
75
|
+
const remove = Effect.fn("BrowserbaseCertificates.delete")(function* (certificateId) {
|
|
76
|
+
const id = yield* api.input(Identifier, certificateId, "certificate-delete");
|
|
77
|
+
yield* api.remove(`/v1/certificates/${api.segment(id)}`, "certificate-delete");
|
|
78
|
+
});
|
|
79
|
+
return BrowserbaseCertificates.of({
|
|
80
|
+
create,
|
|
81
|
+
list,
|
|
82
|
+
retrieve,
|
|
83
|
+
delete: remove
|
|
84
|
+
});
|
|
85
|
+
}));
|
|
86
|
+
};
|
|
87
|
+
//#endregion
|
|
88
|
+
export { BrowserbaseCertificates, CertificateMetadata, Certificates_exports as t };
|
|
89
|
+
|
|
90
|
+
//# sourceMappingURL=Certificates.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Certificates.mjs","names":[],"sources":["../src/Certificates.ts"],"sourcesContent":["import { Context, Effect, Layer, Schema } from \"effect\";\n\nimport { BrowserbaseClient } from \"./Client.ts\";\nimport { CertificateError } from \"./Errors.ts\";\nimport { resource } from \"./internal/http/Resource.ts\";\nimport { Identifier } from \"./References.ts\";\nimport { SafeFilename } from \"./Transfers.ts\";\n\nconst Timestamp = Schema.String.check(Schema.isMaxLength(64));\nconst MAX_CERTIFICATE_BYTES = 1024 * 1024;\n\n/** Select a certificate at launch with `provider.proxySettings.caCertificates: [certificateId]`. */\nexport class CertificateMetadata extends Schema.Class<CertificateMetadata>(\n \"BrowserbaseCertificateMetadata\",\n)({\n certificateId: Identifier,\n projectId: Identifier,\n createdAt: Timestamp,\n updatedAt: Timestamp,\n}) {}\n\nexport interface CertificateUpload {\n /** PEM or DER bytes of one CA certificate. */\n readonly bytes: Uint8Array;\n /** Portable basename sent with the part; defaults to `certificate.pem`. */\n readonly filename?: string;\n readonly maxBytes?: number;\n readonly timeoutMillis?: number;\n}\n\nconst Upload = Schema.Struct({\n filename: Schema.optionalKey(SafeFilename),\n maxBytes: Schema.optionalKey(\n Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: MAX_CERTIFICATE_BYTES })),\n ),\n timeoutMillis: Schema.optionalKey(\n Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 600_000 })),\n ),\n});\n\nconst ProviderCertificate = Schema.Struct({\n id: Identifier,\n projectId: Identifier,\n createdAt: Timestamp,\n updatedAt: Timestamp,\n});\n\n/** Proxy CA certificates. Registration is one bounded multipart mutation, never retried. */\nexport class BrowserbaseCertificates extends Context.Service<\n BrowserbaseCertificates,\n {\n readonly create: (\n upload: CertificateUpload,\n ) => Effect.Effect<CertificateMetadata, CertificateError>;\n readonly list: Effect.Effect<ReadonlyArray<CertificateMetadata>, CertificateError>;\n readonly retrieve: (\n certificateId: string,\n ) => Effect.Effect<CertificateMetadata, CertificateError>;\n readonly delete: (certificateId: string) => Effect.Effect<void, CertificateError>;\n }\n>()(\"effect-browserbase/Certificates\") {\n static readonly layer: Layer.Layer<BrowserbaseCertificates, never, BrowserbaseClient> =\n Layer.effect(\n BrowserbaseCertificates,\n Effect.gen(function* () {\n const client = yield* BrowserbaseClient;\n const api = resource<CertificateError>(client, (failure) => CertificateError.make(failure));\n\n const own = (operation: CertificateError[\"operation\"], mutation: boolean) =>\n Effect.fnUntraced(function* (value: typeof ProviderCertificate.Type) {\n if (value.projectId !== client.projectId)\n return yield* api.malformed(operation, mutation);\n\n const { id, ...rest } = value;\n\n return CertificateMetadata.make({ certificateId: id, ...rest });\n });\n\n const create = Effect.fn(\"BrowserbaseCertificates.create\")(function* (\n upload: CertificateUpload,\n ) {\n const { bytes, ...options } = upload;\n const value = yield* api.input(Upload, options, \"certificate-create\");\n const owned = new Uint8Array(bytes);\n\n const raw = yield* client\n .upload(\n \"/v1/certificates\",\n {\n field: \"file\",\n filename: value.filename ?? \"certificate.pem\",\n mediaType: \"application/x-pem-file\",\n bytes: owned,\n },\n {\n maxBytes: value.maxBytes ?? 64 * 1024,\n ...(value.timeoutMillis === undefined\n ? {}\n : { timeoutMillis: value.timeoutMillis }),\n },\n )\n .pipe(Effect.mapError(api.fromClient(\"certificate-create\")));\n\n const created = yield* Schema.decodeUnknownEffect(ProviderCertificate)(raw).pipe(\n Effect.mapError(() => api.malformed(\"certificate-create\", true)),\n );\n\n return yield* own(\"certificate-create\", true)(created);\n });\n\n const list = api\n .request(\n \"GET\",\n \"/v1/certificates\",\n Schema.Array(ProviderCertificate).check(Schema.isMaxLength(1024)),\n \"certificate-list\",\n )\n .pipe(\n Effect.flatMap(Effect.forEach(own(\"certificate-list\", false))),\n Effect.withSpan(\"BrowserbaseCertificates.list\"),\n );\n\n const retrieve = Effect.fn(\"BrowserbaseCertificates.retrieve\")(function* (\n certificateId: string,\n ) {\n const id = yield* api.input(Identifier, certificateId, \"certificate-retrieve\");\n\n const value = yield* api.request(\n \"GET\",\n `/v1/certificates/${api.segment(id)}`,\n ProviderCertificate,\n \"certificate-retrieve\",\n );\n\n if (value.id !== id) return yield* api.malformed(\"certificate-retrieve\", false);\n\n return yield* own(\"certificate-retrieve\", false)(value);\n });\n\n const remove = Effect.fn(\"BrowserbaseCertificates.delete\")(function* (\n certificateId: string,\n ) {\n const id = yield* api.input(Identifier, certificateId, \"certificate-delete\");\n\n yield* api.remove(`/v1/certificates/${api.segment(id)}`, \"certificate-delete\");\n });\n\n return BrowserbaseCertificates.of({ create, list, retrieve, delete: remove });\n }),\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { o as SessionReference } from "./References-URDAtapt.mjs";
|
|
2
|
+
import { Schema } from "effect";
|
|
3
|
+
declare namespace Cleanup_d_exports {
|
|
4
|
+
export { CleanupIssue, CleanupResult };
|
|
5
|
+
}
|
|
6
|
+
declare const CleanupIssue_base: Schema.Class<CleanupIssue, Schema.Struct<{
|
|
7
|
+
readonly step: Schema.Literals<readonly ["fence", "capture", "initialization", "disconnect", "release", "status"]>;
|
|
8
|
+
readonly reason: Schema.Literals<readonly ["timeout", "failed", "interrupted"]>;
|
|
9
|
+
}>, {}>;
|
|
10
|
+
declare class CleanupIssue extends CleanupIssue_base {}
|
|
11
|
+
declare const CleanupResult_base: Schema.Class<CleanupResult, Schema.Struct<{
|
|
12
|
+
readonly reference: typeof SessionReference;
|
|
13
|
+
readonly ownership: Schema.Literals<readonly ["owned", "borrowed"]>;
|
|
14
|
+
readonly releaseRequested: Schema.Boolean;
|
|
15
|
+
readonly remote: Schema.Literals<readonly ["confirmed", "pending", "unknown", "not-owned"]>;
|
|
16
|
+
readonly local: Schema.Literals<readonly ["closed", "failed", "not-connected", "pending"]>;
|
|
17
|
+
readonly observedStatus: Schema.optionalKey<Schema.Literals<readonly ["PENDING", "RUNNING", "ERROR", "TIMED_OUT", "COMPLETED"]>>;
|
|
18
|
+
readonly issues: Schema.$Array<typeof CleanupIssue>;
|
|
19
|
+
}>, {}>;
|
|
20
|
+
/** Local disconnection, release acknowledgement, and terminal observation are separate facts. */
|
|
21
|
+
declare class CleanupResult extends CleanupResult_base {}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { CleanupResult as n, Cleanup_d_exports as r, CleanupIssue as t };
|
|
24
|
+
//# sourceMappingURL=Cleanup-G2YpTCuU.d.mts.map
|
package/dist/Cleanup.mjs
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
|
|
2
|
+
import { SessionReference } from "./References.mjs";
|
|
3
|
+
import { SessionStatus } from "./SessionData.mjs";
|
|
4
|
+
import { Schema } from "effect";
|
|
5
|
+
//#region src/Cleanup.ts
|
|
6
|
+
var Cleanup_exports = /* @__PURE__ */ __exportAll({
|
|
7
|
+
CleanupIssue: () => CleanupIssue,
|
|
8
|
+
CleanupResult: () => CleanupResult
|
|
9
|
+
});
|
|
10
|
+
var CleanupIssue = class extends Schema.Class("BrowserbaseCleanupIssue")({
|
|
11
|
+
step: Schema.Literals([
|
|
12
|
+
"fence",
|
|
13
|
+
"capture",
|
|
14
|
+
"initialization",
|
|
15
|
+
"disconnect",
|
|
16
|
+
"release",
|
|
17
|
+
"status"
|
|
18
|
+
]),
|
|
19
|
+
reason: Schema.Literals([
|
|
20
|
+
"timeout",
|
|
21
|
+
"failed",
|
|
22
|
+
"interrupted"
|
|
23
|
+
])
|
|
24
|
+
}) {};
|
|
25
|
+
/** Local disconnection, release acknowledgement, and terminal observation are separate facts. */
|
|
26
|
+
var CleanupResult = class extends Schema.Class("BrowserbaseCleanupResult")({
|
|
27
|
+
reference: SessionReference,
|
|
28
|
+
ownership: Schema.Literals(["owned", "borrowed"]),
|
|
29
|
+
releaseRequested: Schema.Boolean,
|
|
30
|
+
remote: Schema.Literals([
|
|
31
|
+
"confirmed",
|
|
32
|
+
"pending",
|
|
33
|
+
"unknown",
|
|
34
|
+
"not-owned"
|
|
35
|
+
]),
|
|
36
|
+
local: Schema.Literals([
|
|
37
|
+
"closed",
|
|
38
|
+
"failed",
|
|
39
|
+
"not-connected",
|
|
40
|
+
"pending"
|
|
41
|
+
]),
|
|
42
|
+
observedStatus: Schema.optionalKey(SessionStatus),
|
|
43
|
+
issues: Schema.Array(CleanupIssue).check(Schema.isMaxLength(64))
|
|
44
|
+
}) {};
|
|
45
|
+
//#endregion
|
|
46
|
+
export { CleanupIssue, CleanupResult, Cleanup_exports as t };
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=Cleanup.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Cleanup.mjs","names":[],"sources":["../src/Cleanup.ts"],"sourcesContent":["import { Schema } from \"effect\";\n\nimport { SessionReference } from \"./References.ts\";\nimport { SessionStatus } from \"./SessionData.ts\";\n\nexport class CleanupIssue extends Schema.Class<CleanupIssue>(\"BrowserbaseCleanupIssue\")({\n step: Schema.Literals([\"fence\", \"capture\", \"initialization\", \"disconnect\", \"release\", \"status\"]),\n reason: Schema.Literals([\"timeout\", \"failed\", \"interrupted\"]),\n}) {}\n\n/** Local disconnection, release acknowledgement, and terminal observation are separate facts. */\nexport class CleanupResult extends Schema.Class<CleanupResult>(\"BrowserbaseCleanupResult\")({\n reference: SessionReference,\n ownership: Schema.Literals([\"owned\", \"borrowed\"]),\n releaseRequested: Schema.Boolean,\n remote: Schema.Literals([\"confirmed\", \"pending\", \"unknown\", \"not-owned\"]),\n local: Schema.Literals([\"closed\", \"failed\", \"not-connected\", \"pending\"]),\n observedStatus: Schema.optionalKey(SessionStatus),\n issues: Schema.Array(CleanupIssue).check(Schema.isMaxLength(64)),\n}) {}\n"],"mappings":";;;;;;;;;AAKA,IAAa,eAAb,cAAkC,OAAO,MAAoB,yBAAyB,CAAC,CAAC;CACtF,MAAM,OAAO,SAAS;EAAC;EAAS;EAAW;EAAkB;EAAc;EAAW;CAAQ,CAAC;CAC/F,QAAQ,OAAO,SAAS;EAAC;EAAW;EAAU;CAAa,CAAC;AAC9D,CAAC,CAAC,CAAC,CAAC;;AAGJ,IAAa,gBAAb,cAAmC,OAAO,MAAqB,0BAA0B,CAAC,CAAC;CACzF,WAAW;CACX,WAAW,OAAO,SAAS,CAAC,SAAS,UAAU,CAAC;CAChD,kBAAkB,OAAO;CACzB,QAAQ,OAAO,SAAS;EAAC;EAAa;EAAW;EAAW;CAAW,CAAC;CACxE,OAAO,OAAO,SAAS;EAAC;EAAU;EAAU;EAAiB;CAAS,CAAC;CACvE,gBAAgB,OAAO,YAAY,aAAa;CAChD,QAAQ,OAAO,MAAM,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,EAAE,CAAC;AACjE,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { ClientError } from "./Errors.mjs";
|
|
2
|
+
import { Config, Context, Effect, Layer, Redacted, Schema, Stream } from "effect";
|
|
3
|
+
declare namespace Client_d_exports {
|
|
4
|
+
export { BrowserbaseClient, ClientMethod, ClientOptions, MultipartFile, UploadLimits };
|
|
5
|
+
}
|
|
6
|
+
/** Account authority only. Launch recipes and browser-operation policy do not belong here. */
|
|
7
|
+
interface ClientOptions {
|
|
8
|
+
readonly projectId: string;
|
|
9
|
+
readonly apiKey: Redacted.Redacted<string>;
|
|
10
|
+
/** Exact HTTPS origins approved for credential-free media/artifact transfers. */
|
|
11
|
+
readonly artifactOrigins?: ReadonlyArray<string>;
|
|
12
|
+
readonly requestTimeoutMillis?: number;
|
|
13
|
+
}
|
|
14
|
+
type ClientMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
15
|
+
/** One bounded in-memory file part. A filesystem path is never a transport input. */
|
|
16
|
+
interface MultipartFile {
|
|
17
|
+
readonly field: string;
|
|
18
|
+
readonly filename: string;
|
|
19
|
+
readonly mediaType: string;
|
|
20
|
+
readonly bytes: Uint8Array;
|
|
21
|
+
}
|
|
22
|
+
/** Upload bounds are caller-owned; an omitted timeout keeps the 60-second default. */
|
|
23
|
+
interface UploadLimits {
|
|
24
|
+
readonly maxBytes: number;
|
|
25
|
+
readonly timeoutMillis?: number;
|
|
26
|
+
}
|
|
27
|
+
declare const BrowserbaseClient_base: Context.ServiceClass<BrowserbaseClient, "effect-browserbase/Client", {
|
|
28
|
+
readonly projectId: string;
|
|
29
|
+
readonly json: (method: ClientMethod, path: string, body?: Schema.Json, outerDeadline?: number) => Effect.Effect<Schema.Json, ClientError>;
|
|
30
|
+
readonly noContent: (method: Exclude<ClientMethod, "GET">, path: string, body?: Schema.Json, outerDeadline?: number) => Effect.Effect<void, ClientError>;
|
|
31
|
+
/** One bounded multipart mutation. A lost reply stays unknown and is never retried. */
|
|
32
|
+
readonly upload: (path: string, part: MultipartFile, limits: UploadLimits, outerDeadline?: number) => Effect.Effect<Schema.Json, ClientError>;
|
|
33
|
+
readonly text: (path: string, maximum: number, types: ReadonlyArray<string>) => Effect.Effect<string, ClientError>;
|
|
34
|
+
readonly bytes: (path: string, maximum: number, types: ReadonlyArray<string>, timeoutMillis?: number, outerDeadline?: number) => Stream.Stream<Uint8Array, ClientError>;
|
|
35
|
+
readonly media: (url: Redacted.Redacted<string>, maximum: number, types: ReadonlyArray<string>, timeoutMillis?: number, outerDeadline?: number) => Stream.Stream<Uint8Array, ClientError>;
|
|
36
|
+
readonly validateMediaUrl: (value: string) => boolean;
|
|
37
|
+
}>;
|
|
38
|
+
/**
|
|
39
|
+
* One immutable Browserbase account and approved transport, shared by every resource Layer.
|
|
40
|
+
* Constructing the Layer performs no request and never loads the native browser peer.
|
|
41
|
+
*/
|
|
42
|
+
declare class BrowserbaseClient extends BrowserbaseClient_base {
|
|
43
|
+
static layer(options: ClientOptions): Layer.Layer<BrowserbaseClient, ClientError>;
|
|
44
|
+
/**
|
|
45
|
+
* Account authority from the application's `ConfigProvider` (the environment by default):
|
|
46
|
+
* `BROWSERBASE_PROJECT_ID` and a redacted `BROWSERBASE_API_KEY`. Transport options stay
|
|
47
|
+
* explicit. Configuration is read when the Layer is built, never at import.
|
|
48
|
+
*/
|
|
49
|
+
static layerConfig(options?: Omit<ClientOptions, "projectId" | "apiKey">): Layer.Layer<BrowserbaseClient, ClientError | Config.ConfigError>;
|
|
50
|
+
}
|
|
51
|
+
//#endregion
|
|
52
|
+
export { MultipartFile as a, Client_d_exports as i, ClientMethod as n, UploadLimits as o, ClientOptions as r, BrowserbaseClient as t };
|
|
53
|
+
//# sourceMappingURL=Client-Ca0zSg1n.d.mts.map
|