@effect-uai/core 0.8.0 → 0.10.0
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/{AiError-CAX_48RU.d.mts → AiError-Bf1pq4BB.d.mts} +9 -4
- package/dist/{AiError-CAX_48RU.d.mts.map → AiError-Bf1pq4BB.d.mts.map} +1 -1
- package/dist/{Audio-DPlTsNdz.d.mts → Audio-CR7CSljJ.d.mts} +1 -1
- package/dist/{Audio-DPlTsNdz.d.mts.map → Audio-CR7CSljJ.d.mts.map} +1 -1
- package/dist/{Image-HNmMpMTh.d.mts → Image-BZmKfIdq.d.mts} +1 -1
- package/dist/{Image-HNmMpMTh.d.mts.map → Image-BZmKfIdq.d.mts.map} +1 -1
- package/dist/{Items-7ljaVxH_.d.mts → Items-BnIduEV2.d.mts} +7 -7
- package/dist/{Items-7ljaVxH_.d.mts.map → Items-BnIduEV2.d.mts.map} +1 -1
- package/dist/Loop-D8nWpowc.d.mts +173 -0
- package/dist/Loop-D8nWpowc.d.mts.map +1 -0
- package/dist/{SandboxError-BvKypkJm.d.mts → SandboxError-CIrVDOMV.d.mts} +2 -2
- package/dist/{SandboxError-BvKypkJm.d.mts.map → SandboxError-CIrVDOMV.d.mts.map} +1 -1
- package/dist/{StructuredFormat-BbN4dosH.d.mts → StructuredFormat-DHaUJBdd.d.mts} +2 -2
- package/dist/{StructuredFormat-BbN4dosH.d.mts.map → StructuredFormat-DHaUJBdd.d.mts.map} +1 -1
- package/dist/Tool-2lC_XMth.d.mts +284 -0
- package/dist/Tool-2lC_XMth.d.mts.map +1 -0
- package/dist/ToolEvent-cWZ2BnbS.d.mts +151 -0
- package/dist/ToolEvent-cWZ2BnbS.d.mts.map +1 -0
- package/dist/ToolResult-CL4hK_9z.d.mts +157 -0
- package/dist/ToolResult-CL4hK_9z.d.mts.map +1 -0
- package/dist/Toolkit-Dr9l_hNy.d.mts +196 -0
- package/dist/Toolkit-Dr9l_hNy.d.mts.map +1 -0
- package/dist/browser/Browser.d.mts +190 -0
- package/dist/browser/Browser.d.mts.map +1 -0
- package/dist/browser/Browser.mjs +34 -0
- package/dist/browser/Browser.mjs.map +1 -0
- package/dist/browser/BrowserError.d.mts +141 -0
- package/dist/browser/BrowserError.d.mts.map +1 -0
- package/dist/browser/BrowserError.mjs +89 -0
- package/dist/browser/BrowserError.mjs.map +1 -0
- package/dist/browser/BrowserTool.d.mts +58 -0
- package/dist/browser/BrowserTool.d.mts.map +1 -0
- package/dist/browser/BrowserTool.mjs +86 -0
- package/dist/browser/BrowserTool.mjs.map +1 -0
- package/dist/{dist-DV5ISja1.mjs → dist-B04dlFHg.mjs} +3 -3
- package/dist/{dist-DV5ISja1.mjs.map → dist-B04dlFHg.mjs.map} +1 -1
- package/dist/dist-DWgRbDN3.mjs +140 -0
- package/dist/dist-DWgRbDN3.mjs.map +1 -0
- package/dist/domain/AiError.d.mts +2 -2
- package/dist/domain/AiError.mjs +22 -3
- package/dist/domain/AiError.mjs.map +1 -1
- package/dist/domain/Audio.d.mts +1 -1
- package/dist/domain/Image.d.mts +1 -1
- package/dist/domain/Items.d.mts +1 -1
- package/dist/domain/Music.d.mts +1 -1
- package/dist/domain/Turn.d.mts +4 -4
- package/dist/domain/Turn.test.mjs +1 -1
- package/dist/embedding-model/Embedding.d.mts +1 -1
- package/dist/embedding-model/EmbeddingModel.d.mts +1 -1
- package/dist/embedding-model/EmbeddingModel.test.mjs +1 -1
- package/dist/embedding-model/EmbeddingModel.test.mjs.map +1 -1
- package/dist/index.d.mts +19 -13
- package/dist/index.mjs +15 -9
- package/dist/language-model/LanguageModel.d.mts +10 -5
- package/dist/language-model/LanguageModel.d.mts.map +1 -1
- package/dist/language-model/LanguageModel.mjs.map +1 -1
- package/dist/language-model/LanguageModel.test.mjs +1 -1
- package/dist/loop/Loop.d.mts +2 -141
- package/dist/loop/Loop.mjs +16 -20
- package/dist/loop/Loop.mjs.map +1 -1
- package/dist/loop/Loop.test.mjs +18 -1
- package/dist/loop/Loop.test.mjs.map +1 -1
- package/dist/{magic-string.es-BgIV5Mu3.mjs → magic-string.es-Dk-MMA0F.mjs} +1 -1
- package/dist/{magic-string.es-BgIV5Mu3.mjs.map → magic-string.es-Dk-MMA0F.mjs.map} +1 -1
- package/dist/music-generator/MusicGenerator.d.mts +2 -2
- package/dist/music-generator/MusicGenerator.test.mjs +1 -1
- package/dist/observability/Metrics.d.mts +116 -28
- package/dist/observability/Metrics.d.mts.map +1 -1
- package/dist/observability/Metrics.mjs +250 -38
- package/dist/observability/Metrics.mjs.map +1 -1
- package/dist/observability/Metrics.test.d.mts +1 -0
- package/dist/observability/Metrics.test.mjs +187 -0
- package/dist/observability/Metrics.test.mjs.map +1 -0
- package/dist/observability/Telemetry.d.mts +37 -0
- package/dist/observability/Telemetry.d.mts.map +1 -0
- package/dist/observability/Telemetry.mjs +57 -0
- package/dist/observability/Telemetry.mjs.map +1 -0
- package/dist/observability/Telemetry.test.d.mts +1 -0
- package/dist/observability/Telemetry.test.mjs +92 -0
- package/dist/observability/Telemetry.test.mjs.map +1 -0
- package/dist/retry/Retry.d.mts +2 -2
- package/dist/retry/Retry.test.mjs +1 -1
- package/dist/sandbox/Sandbox.d.mts +1 -1
- package/dist/sandbox/SandboxError.d.mts +1 -1
- package/dist/speech-synthesizer/SpeechSynthesizer.d.mts +2 -2
- package/dist/speech-synthesizer/SpeechSynthesizer.test.mjs +1 -1
- package/dist/streaming/JSONL.d.mts +1 -1
- package/dist/streaming/JSONL.test.mjs +1 -1
- package/dist/streaming/SSE.test.mjs +1 -1
- package/dist/structured-format/StructuredFormat.d.mts +1 -1
- package/dist/structured-format/StructuredFormat.mjs.map +1 -1
- package/dist/structured-format/StructuredFormat.test.mjs +1 -1
- package/dist/testing/MockMusicGenerator.d.mts +1 -1
- package/dist/testing/MockProvider.d.mts +1 -1
- package/dist/testing/MockSpeechSynthesizer.d.mts +1 -1
- package/dist/tool/Approval.d.mts +19 -7
- package/dist/tool/Approval.d.mts.map +1 -1
- package/dist/tool/Approval.mjs +18 -11
- package/dist/tool/Approval.mjs.map +1 -1
- package/dist/tool/Approval.test.mjs +80 -40
- package/dist/tool/Approval.test.mjs.map +1 -1
- package/dist/tool/HistoryCheck.d.mts +2 -2
- package/dist/tool/Tool.d.mts +2 -2
- package/dist/tool/Tool.mjs +190 -36
- package/dist/tool/Tool.mjs.map +1 -1
- package/dist/tool/Tool.test.mjs +41 -3
- package/dist/tool/Tool.test.mjs.map +1 -1
- package/dist/tool/ToolEvent.d.mts +2 -151
- package/dist/tool/ToolEvent.mjs +5 -0
- package/dist/tool/ToolEvent.mjs.map +1 -1
- package/dist/tool/ToolResult.d.mts +2 -138
- package/dist/tool/ToolResult.mjs +32 -8
- package/dist/tool/ToolResult.mjs.map +1 -1
- package/dist/tool/Toolkit.d.mts +2 -73
- package/dist/tool/Toolkit.mjs +153 -35
- package/dist/tool/Toolkit.mjs.map +1 -1
- package/dist/tool/Toolkit.test.mjs +271 -11
- package/dist/tool/Toolkit.test.mjs.map +1 -1
- package/dist/transcriber/Transcriber.d.mts +2 -2
- package/dist/transcriber/Transcriber.test.mjs +1 -1
- package/dist/web-read/WebRead.d.mts +44 -0
- package/dist/web-read/WebRead.d.mts.map +1 -0
- package/dist/web-read/WebRead.mjs +18 -0
- package/dist/web-read/WebRead.mjs.map +1 -0
- package/dist/web-read/WebReadTool.d.mts +57 -0
- package/dist/web-read/WebReadTool.d.mts.map +1 -0
- package/dist/web-read/WebReadTool.mjs +59 -0
- package/dist/web-read/WebReadTool.mjs.map +1 -0
- package/dist/web-search/WebSearch.d.mts +1 -1
- package/dist/web-search/WebSearchTool.d.mts +12 -6
- package/dist/web-search/WebSearchTool.d.mts.map +1 -1
- package/dist/web-search/WebSearchTool.mjs +10 -5
- package/dist/web-search/WebSearchTool.mjs.map +1 -1
- package/package.json +21 -1
- package/src/browser/Browser.ts +268 -0
- package/src/browser/BrowserError.ts +145 -0
- package/src/browser/BrowserTool.ts +161 -0
- package/src/domain/AiError.ts +27 -1
- package/src/embedding-model/EmbeddingModel.test.ts +4 -0
- package/src/index.ts +6 -0
- package/src/language-model/LanguageModel.ts +7 -2
- package/src/loop/Loop.test.ts +22 -0
- package/src/loop/Loop.ts +27 -4
- package/src/observability/Metrics.test.ts +266 -0
- package/src/observability/Metrics.ts +505 -65
- package/src/observability/Telemetry.test.ts +123 -0
- package/src/observability/Telemetry.ts +96 -0
- package/src/structured-format/StructuredFormat.ts +4 -0
- package/src/tool/Approval.test.ts +77 -26
- package/src/tool/Approval.ts +72 -27
- package/src/tool/Tool.test.ts +55 -2
- package/src/tool/Tool.ts +335 -70
- package/src/tool/ToolEvent.ts +5 -0
- package/src/tool/ToolResult.ts +36 -9
- package/src/tool/Toolkit.test.ts +339 -9
- package/src/tool/Toolkit.ts +470 -120
- package/src/web-read/WebRead.ts +70 -0
- package/src/web-read/WebReadTool.ts +96 -0
- package/src/web-search/WebSearchTool.ts +11 -5
- package/dist/Tool-BKiieFXk.d.mts +0 -102
- package/dist/Tool-BKiieFXk.d.mts.map +0 -1
- package/dist/loop/Loop.d.mts.map +0 -1
- package/dist/tool/ToolEvent.d.mts.map +0 -1
- package/dist/tool/ToolResult.d.mts.map +0 -1
- package/dist/tool/Toolkit.d.mts.map +0 -1
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { n as __exportAll } from "../chunk-uyGKjUfl.mjs";
|
|
2
|
+
import { Data, Match } from "effect";
|
|
3
|
+
//#region src/browser/BrowserError.ts
|
|
4
|
+
var BrowserError_exports = /* @__PURE__ */ __exportAll({
|
|
5
|
+
BrowserActionFailed: () => BrowserActionFailed,
|
|
6
|
+
BrowserAuthFailed: () => BrowserAuthFailed,
|
|
7
|
+
BrowserCreateFailed: () => BrowserCreateFailed,
|
|
8
|
+
BrowserInvalidRequest: () => BrowserInvalidRequest,
|
|
9
|
+
BrowserQuotaExceeded: () => BrowserQuotaExceeded,
|
|
10
|
+
BrowserSessionExpired: () => BrowserSessionExpired,
|
|
11
|
+
BrowserSessionNotFound: () => BrowserSessionNotFound,
|
|
12
|
+
BrowserTimeout: () => BrowserTimeout,
|
|
13
|
+
BrowserUnsupported: () => BrowserUnsupported,
|
|
14
|
+
describe: () => describe
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* Failed to provision a browser session: the transport could not connect,
|
|
18
|
+
* a launched engine did not come up, or the provider refused to mint a
|
|
19
|
+
* session. Provider's structured reason on `reason`; the raw transport /
|
|
20
|
+
* SDK error on `raw`.
|
|
21
|
+
*/
|
|
22
|
+
var BrowserCreateFailed = class extends Data.TaggedError("BrowserCreateFailed") {};
|
|
23
|
+
/**
|
|
24
|
+
* The requested session id does not exist. Raised by `attach` / `destroy`
|
|
25
|
+
* against a stale or never-known id. Distinct from
|
|
26
|
+
* {@link BrowserSessionExpired}, which is a session that existed and has
|
|
27
|
+
* since ended.
|
|
28
|
+
*/
|
|
29
|
+
var BrowserSessionNotFound = class extends Data.TaggedError("BrowserSessionNotFound") {};
|
|
30
|
+
/**
|
|
31
|
+
* An operation was issued against a session that has ended: it reached its
|
|
32
|
+
* max lifetime (the create-time `timeout`), was destroyed, or the provider
|
|
33
|
+
* reaped it. The handle is dead; `create` or `attach` a live session.
|
|
34
|
+
* Distinct from {@link BrowserTimeout} (a single live operation was too
|
|
35
|
+
* slow).
|
|
36
|
+
*/
|
|
37
|
+
var BrowserSessionExpired = class extends Data.TaggedError("BrowserSessionExpired") {};
|
|
38
|
+
/**
|
|
39
|
+
* A single operation exceeded its own time budget while the session was
|
|
40
|
+
* still alive (a navigation that never settled, a `waitFor` selector that
|
|
41
|
+
* never appeared). Carries the breached budget for observability.
|
|
42
|
+
*/
|
|
43
|
+
var BrowserTimeout = class extends Data.TaggedError("BrowserTimeout") {};
|
|
44
|
+
/**
|
|
45
|
+
* An interaction or observation failed at the transport / protocol layer:
|
|
46
|
+
* a selector resolved to nothing, an element was not actionable, an
|
|
47
|
+
* `evaluate` script threw, a navigation errored. `selector` and `reason`
|
|
48
|
+
* carry what is known.
|
|
49
|
+
*/
|
|
50
|
+
var BrowserActionFailed = class extends Data.TaggedError("BrowserActionFailed") {};
|
|
51
|
+
/**
|
|
52
|
+
* Provider rejected the request because an account / project quota or
|
|
53
|
+
* concurrency limit was exceeded. Separate from {@link BrowserCreateFailed}
|
|
54
|
+
* so callers can back off and retry.
|
|
55
|
+
*/
|
|
56
|
+
var BrowserQuotaExceeded = class extends Data.TaggedError("BrowserQuotaExceeded") {};
|
|
57
|
+
/**
|
|
58
|
+
* Caller's request shape is malformed for the wired provider. Adapters
|
|
59
|
+
* should reject at the request-schema layer where possible; this is the
|
|
60
|
+
* runtime fallback.
|
|
61
|
+
*/
|
|
62
|
+
var BrowserInvalidRequest = class extends Data.TaggedError("BrowserInvalidRequest") {};
|
|
63
|
+
var BrowserAuthFailed = class extends Data.TaggedError("BrowserAuthFailed") {};
|
|
64
|
+
/**
|
|
65
|
+
* The wired provider does not implement the requested operation for these
|
|
66
|
+
* inputs. Distinct from {@link BrowserInvalidRequest} (malformed request)
|
|
67
|
+
* and from compile-time capability markers gating blanket provider gaps.
|
|
68
|
+
*/
|
|
69
|
+
var BrowserUnsupported = class extends Data.TaggedError("BrowserUnsupported") {};
|
|
70
|
+
const withReason = (base, reason) => reason === void 0 ? base : `${base}: ${reason}`;
|
|
71
|
+
/**
|
|
72
|
+
* Short human-readable description of an error, for logs and model-facing
|
|
73
|
+
* failure messages. Prose, not a contract; branch on `_tag` instead.
|
|
74
|
+
*/
|
|
75
|
+
const describe = Match.type().pipe(Match.discriminatorsExhaustive("_tag")({
|
|
76
|
+
BrowserCreateFailed: (e) => withReason("the browser session could not be created", e.reason),
|
|
77
|
+
BrowserSessionNotFound: () => "the browser session does not exist",
|
|
78
|
+
BrowserSessionExpired: () => "the browser session has expired",
|
|
79
|
+
BrowserTimeout: (e) => `the ${e.operation} operation timed out`,
|
|
80
|
+
BrowserActionFailed: (e) => withReason(`the ${e.operation} failed${e.selector === void 0 ? "" : ` on ${e.selector}`}`, e.reason),
|
|
81
|
+
BrowserQuotaExceeded: (e) => withReason("the browser quota is exceeded", e.reason),
|
|
82
|
+
BrowserInvalidRequest: (e) => withReason("the request was invalid", e.reason),
|
|
83
|
+
BrowserAuthFailed: (e) => `browser authentication failed (${e.subtype})`,
|
|
84
|
+
BrowserUnsupported: (e) => withReason(`this browser does not support ${e.capability}`, e.reason)
|
|
85
|
+
}));
|
|
86
|
+
//#endregion
|
|
87
|
+
export { BrowserActionFailed, BrowserAuthFailed, BrowserCreateFailed, BrowserInvalidRequest, BrowserQuotaExceeded, BrowserSessionExpired, BrowserSessionNotFound, BrowserTimeout, BrowserUnsupported, describe, BrowserError_exports as t };
|
|
88
|
+
|
|
89
|
+
//# sourceMappingURL=BrowserError.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrowserError.mjs","names":[],"sources":["../../src/browser/BrowserError.ts"],"sourcesContent":["import { Data, Duration, Match } from \"effect\"\n\n/**\n * Failed to provision a browser session: the transport could not connect,\n * a launched engine did not come up, or the provider refused to mint a\n * session. Provider's structured reason on `reason`; the raw transport /\n * SDK error on `raw`.\n */\nexport class BrowserCreateFailed extends Data.TaggedError(\"BrowserCreateFailed\")<{\n provider: string\n reason?: string\n raw: unknown\n}> {}\n\n/**\n * The requested session id does not exist. Raised by `attach` / `destroy`\n * against a stale or never-known id. Distinct from\n * {@link BrowserSessionExpired}, which is a session that existed and has\n * since ended.\n */\nexport class BrowserSessionNotFound extends Data.TaggedError(\"BrowserSessionNotFound\")<{\n provider: string\n id: string\n}> {}\n\n/**\n * An operation was issued against a session that has ended: it reached its\n * max lifetime (the create-time `timeout`), was destroyed, or the provider\n * reaped it. The handle is dead; `create` or `attach` a live session.\n * Distinct from {@link BrowserTimeout} (a single live operation was too\n * slow).\n */\nexport class BrowserSessionExpired extends Data.TaggedError(\"BrowserSessionExpired\")<{\n provider: string\n id: string\n}> {}\n\n/**\n * A single operation exceeded its own time budget while the session was\n * still alive (a navigation that never settled, a `waitFor` selector that\n * never appeared). Carries the breached budget for observability.\n */\nexport class BrowserTimeout extends Data.TaggedError(\"BrowserTimeout\")<{\n provider: string\n operation: \"create\" | \"attach\" | \"navigate\" | \"action\" | \"query\"\n budget?: Duration.Duration\n raw?: unknown\n}> {}\n\n/**\n * An interaction or observation failed at the transport / protocol layer:\n * a selector resolved to nothing, an element was not actionable, an\n * `evaluate` script threw, a navigation errored. `selector` and `reason`\n * carry what is known.\n */\nexport class BrowserActionFailed extends Data.TaggedError(\"BrowserActionFailed\")<{\n provider: string\n operation: \"navigate\" | \"interact\" | \"observe\" | \"evaluate\" | \"cookies\"\n selector?: string\n reason?: string\n raw: unknown\n}> {}\n\n/**\n * Provider rejected the request because an account / project quota or\n * concurrency limit was exceeded. Separate from {@link BrowserCreateFailed}\n * so callers can back off and retry.\n */\nexport class BrowserQuotaExceeded extends Data.TaggedError(\"BrowserQuotaExceeded\")<{\n provider: string\n reason?: string\n raw: unknown\n}> {}\n\n/**\n * Caller's request shape is malformed for the wired provider. Adapters\n * should reject at the request-schema layer where possible; this is the\n * runtime fallback.\n */\nexport class BrowserInvalidRequest extends Data.TaggedError(\"BrowserInvalidRequest\")<{\n provider: string\n param?: string\n reason?: string\n raw?: unknown\n}> {}\n\n/**\n * Transport could not authenticate against the provider. Subtype mirrors\n * the model-side `AiError.AuthFailed` shape for consistency.\n */\nexport type BrowserAuthSubtype = \"auth\" | \"permission\" | \"billing\" | \"quota\"\n\nexport class BrowserAuthFailed extends Data.TaggedError(\"BrowserAuthFailed\")<{\n provider: string\n subtype: BrowserAuthSubtype\n raw: unknown\n}> {}\n\n/**\n * The wired provider does not implement the requested operation for these\n * inputs. Distinct from {@link BrowserInvalidRequest} (malformed request)\n * and from compile-time capability markers gating blanket provider gaps.\n */\nexport class BrowserUnsupported extends Data.TaggedError(\"BrowserUnsupported\")<{\n provider: string\n capability: string\n reason?: string\n}> {}\n\nexport type BrowserError =\n | BrowserCreateFailed\n | BrowserSessionNotFound\n | BrowserSessionExpired\n | BrowserTimeout\n | BrowserActionFailed\n | BrowserQuotaExceeded\n | BrowserInvalidRequest\n | BrowserAuthFailed\n | BrowserUnsupported\n\nconst withReason = (base: string, reason: string | undefined): string =>\n reason === undefined ? base : `${base}: ${reason}`\n\n/**\n * Short human-readable description of an error, for logs and model-facing\n * failure messages. Prose, not a contract; branch on `_tag` instead.\n */\nexport const describe: (e: BrowserError) => string = Match.type<BrowserError>().pipe(\n Match.discriminatorsExhaustive(\"_tag\")({\n BrowserCreateFailed: (e) => withReason(\"the browser session could not be created\", e.reason),\n BrowserSessionNotFound: () => \"the browser session does not exist\",\n BrowserSessionExpired: () => \"the browser session has expired\",\n BrowserTimeout: (e) => `the ${e.operation} operation timed out`,\n BrowserActionFailed: (e) =>\n withReason(\n `the ${e.operation} failed${e.selector === undefined ? \"\" : ` on ${e.selector}`}`,\n e.reason,\n ),\n BrowserQuotaExceeded: (e) => withReason(\"the browser quota is exceeded\", e.reason),\n BrowserInvalidRequest: (e) => withReason(\"the request was invalid\", e.reason),\n BrowserAuthFailed: (e) => `browser authentication failed (${e.subtype})`,\n BrowserUnsupported: (e) =>\n withReason(`this browser does not support ${e.capability}`, e.reason),\n }),\n)\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAQA,IAAa,sBAAb,cAAyC,KAAK,YAAY,sBAAsB,CAI7E;;;;;;;AAQH,IAAa,yBAAb,cAA4C,KAAK,YAAY,yBAAyB,CAGnF;;;;;;;;AASH,IAAa,wBAAb,cAA2C,KAAK,YAAY,wBAAwB,CAGjF;;;;;;AAOH,IAAa,iBAAb,cAAoC,KAAK,YAAY,iBAAiB,CAKnE;;;;;;;AAQH,IAAa,sBAAb,cAAyC,KAAK,YAAY,sBAAsB,CAM7E;;;;;;AAOH,IAAa,uBAAb,cAA0C,KAAK,YAAY,uBAAuB,CAI/E;;;;;;AAOH,IAAa,wBAAb,cAA2C,KAAK,YAAY,wBAAwB,CAKjF;AAQH,IAAa,oBAAb,cAAuC,KAAK,YAAY,oBAAoB,CAIzE;;;;;;AAOH,IAAa,qBAAb,cAAwC,KAAK,YAAY,qBAAqB,CAI3E;AAaH,MAAM,cAAc,MAAc,WAChC,WAAW,KAAA,IAAY,OAAO,GAAG,KAAK,IAAI;;;;;AAM5C,MAAa,WAAwC,MAAM,MAAoB,CAAC,KAC9E,MAAM,yBAAyB,OAAO,CAAC;CACrC,sBAAsB,MAAM,WAAW,4CAA4C,EAAE,OAAO;CAC5F,8BAA8B;CAC9B,6BAA6B;CAC7B,iBAAiB,MAAM,OAAO,EAAE,UAAU;CAC1C,sBAAsB,MACpB,WACE,OAAO,EAAE,UAAU,SAAS,EAAE,aAAa,KAAA,IAAY,KAAK,OAAO,EAAE,cACrE,EAAE,OACH;CACH,uBAAuB,MAAM,WAAW,iCAAiC,EAAE,OAAO;CAClF,wBAAwB,MAAM,WAAW,2BAA2B,EAAE,OAAO;CAC7E,oBAAoB,MAAM,kCAAkC,EAAE,QAAQ;CACtE,qBAAqB,MACnB,WAAW,iCAAiC,EAAE,cAAc,EAAE,OAAO;CACxE,CAAC,CACH"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { BrowserError } from "./BrowserError.mjs";
|
|
2
|
+
import { BrowserSession } from "./Browser.mjs";
|
|
3
|
+
import { l as Tool } from "../Tool-2lC_XMth.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/browser/BrowserTool.d.ts
|
|
6
|
+
declare namespace BrowserTool_d_exports {
|
|
7
|
+
export { browserToolkit, clickTool, fillTool, gotoTool, pressTool, scrollTool };
|
|
8
|
+
}
|
|
9
|
+
declare const gotoTool: (session: BrowserSession) => Tool<"browser_goto", {
|
|
10
|
+
readonly url: string;
|
|
11
|
+
}, unknown, string, BrowserError, never>;
|
|
12
|
+
declare const clickTool: (session: BrowserSession) => Tool<"browser_click", {
|
|
13
|
+
readonly ref: string;
|
|
14
|
+
}, unknown, string, BrowserError, never>;
|
|
15
|
+
declare const fillTool: (session: BrowserSession) => Tool<"browser_fill", {
|
|
16
|
+
readonly ref: string;
|
|
17
|
+
readonly text: string;
|
|
18
|
+
}, unknown, string, BrowserError, never>;
|
|
19
|
+
declare const pressTool: (session: BrowserSession) => Tool<"browser_press", {
|
|
20
|
+
readonly key: string;
|
|
21
|
+
}, unknown, string, BrowserError, never>;
|
|
22
|
+
declare const scrollTool: (session: BrowserSession) => Tool<"browser_scroll", {
|
|
23
|
+
readonly direction: "up" | "down";
|
|
24
|
+
}, unknown, string, BrowserError, never>;
|
|
25
|
+
/**
|
|
26
|
+
* The canonical browser action verbs bundled as a `Toolkit`, closed over a
|
|
27
|
+
* live `BrowserSession`. Compose it with a recipe-local page-reading tool and
|
|
28
|
+
* whatever finish/signal tools the agent needs:
|
|
29
|
+
*
|
|
30
|
+
* const toolkit = yield* Toolkit.compose(
|
|
31
|
+
* browserToolkit(session),
|
|
32
|
+
* Toolkit.make(readPageTool(session), finishTool),
|
|
33
|
+
* )
|
|
34
|
+
*
|
|
35
|
+
* For an à-la-carte subset, use the individual `gotoTool` / `clickTool` / …
|
|
36
|
+
* constructors directly. Run a turn's calls with `{ concurrency: 1 }`.
|
|
37
|
+
*/
|
|
38
|
+
declare const browserToolkit: (session: BrowserSession) => {
|
|
39
|
+
browser_goto: Tool<"browser_goto", {
|
|
40
|
+
readonly url: string;
|
|
41
|
+
}, unknown, string, BrowserError, never>;
|
|
42
|
+
browser_click: Tool<"browser_click", {
|
|
43
|
+
readonly ref: string;
|
|
44
|
+
}, unknown, string, BrowserError, never>;
|
|
45
|
+
browser_fill: Tool<"browser_fill", {
|
|
46
|
+
readonly ref: string;
|
|
47
|
+
readonly text: string;
|
|
48
|
+
}, unknown, string, BrowserError, never>;
|
|
49
|
+
browser_press: Tool<"browser_press", {
|
|
50
|
+
readonly key: string;
|
|
51
|
+
}, unknown, string, BrowserError, never>;
|
|
52
|
+
browser_scroll: Tool<"browser_scroll", {
|
|
53
|
+
readonly direction: "up" | "down";
|
|
54
|
+
}, unknown, string, BrowserError, never>;
|
|
55
|
+
};
|
|
56
|
+
//#endregion
|
|
57
|
+
export { browserToolkit, clickTool, fillTool, gotoTool, pressTool, scrollTool, BrowserTool_d_exports as t };
|
|
58
|
+
//# sourceMappingURL=BrowserTool.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrowserTool.d.mts","names":[],"sources":["../../src/browser/BrowserTool.ts"],"mappings":";;;;;;;;cAoEa,QAAA,GAAY,OAAA,EAAS,cAAA,KAAc,IAAA;EAAA;oBAAA,YAAA;AAAA,cAcnC,SAAA,GAAa,OAAA,EAAS,cAAA,KAAc,IAAA;EAAA;oBAAA,YAAA;AAAA,cAcpC,QAAA,GAAY,OAAA,EAAS,cAAA,KAAc,IAAA;EAAA;;oBAAA,YAAA;AAAA,cAenC,SAAA,GAAa,OAAA,EAAS,cAAA,KAAc,IAAA;EAAA;oBAAA,YAAA;AAAA,cAcpC,UAAA,GAAc,OAAA,EAAS,cAAA,KAAc,IAAA;EAAA;oBAAA,YAAA;;;;;;;;;;;;;AA3ClD;cAuEa,cAAA,GAAkB,OAAA,EAAS,cAAA;;;sBAAc,YAAA"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { n as __exportAll } from "../chunk-uyGKjUfl.mjs";
|
|
2
|
+
import { fromEffectSchema, make } from "../tool/Tool.mjs";
|
|
3
|
+
import { make as make$1 } from "../tool/Toolkit.mjs";
|
|
4
|
+
import { Effect, Schema } from "effect";
|
|
5
|
+
//#region src/browser/BrowserTool.ts
|
|
6
|
+
var BrowserTool_exports = /* @__PURE__ */ __exportAll({
|
|
7
|
+
browserToolkit: () => browserToolkit,
|
|
8
|
+
clickTool: () => clickTool,
|
|
9
|
+
fillTool: () => fillTool,
|
|
10
|
+
gotoTool: () => gotoTool,
|
|
11
|
+
pressTool: () => pressTool,
|
|
12
|
+
scrollTool: () => scrollTool
|
|
13
|
+
});
|
|
14
|
+
const GotoArgs = Schema.Struct({ url: Schema.String.annotate({ description: "Absolute URL to navigate to." }) });
|
|
15
|
+
const ClickArgs = Schema.Struct({ ref: Schema.String.annotate({ description: "A CSS selector, or an element @ref if a page-reading tool provides one." }) });
|
|
16
|
+
const FillArgs = Schema.Struct({
|
|
17
|
+
ref: Schema.String.annotate({ description: "A CSS selector (or element @ref) of the input to fill." }),
|
|
18
|
+
text: Schema.String.annotate({ description: "The text to put in the input." })
|
|
19
|
+
});
|
|
20
|
+
const PressArgs = Schema.Struct({ key: Schema.String.annotate({ description: "Key to press, e.g. \"Enter\" to submit the focused input, \"Tab\", \"Escape\"." }) });
|
|
21
|
+
const ScrollArgs = Schema.Struct({ direction: Schema.Literals(["up", "down"]).annotate({ description: "Scroll the viewport up or down." }) });
|
|
22
|
+
const currentUrl = (session) => session.evaluate("location.href").pipe(Effect.flatMap(Schema.decodeUnknownEffect(Schema.String)), Effect.orElseSucceed(() => "(unknown)"));
|
|
23
|
+
const okAt = (session) => Effect.map(currentUrl(session), (url) => `ok (now at ${url})`);
|
|
24
|
+
const gotoTool = (session) => make({
|
|
25
|
+
name: "browser_goto",
|
|
26
|
+
description: "Navigate the browser to an absolute URL.",
|
|
27
|
+
inputSchema: fromEffectSchema(GotoArgs),
|
|
28
|
+
run: (args) => Effect.andThen(session.goto(args.url), okAt(session)).pipe(Effect.withSpan("browser_goto", {
|
|
29
|
+
kind: "client",
|
|
30
|
+
attributes: { "browser.url": args.url }
|
|
31
|
+
}))
|
|
32
|
+
});
|
|
33
|
+
const clickTool = (session) => make({
|
|
34
|
+
name: "browser_click",
|
|
35
|
+
description: "Click the element named by ref. A click may navigate to a new page.",
|
|
36
|
+
inputSchema: fromEffectSchema(ClickArgs),
|
|
37
|
+
run: (args) => Effect.andThen(session.click(args.ref), okAt(session)).pipe(Effect.withSpan("browser_click", {
|
|
38
|
+
kind: "client",
|
|
39
|
+
attributes: { "browser.ref": args.ref }
|
|
40
|
+
}))
|
|
41
|
+
});
|
|
42
|
+
const fillTool = (session) => make({
|
|
43
|
+
name: "browser_fill",
|
|
44
|
+
description: "Put text into the input named by ref. Filling alone does not submit; press Enter to submit the input.",
|
|
45
|
+
inputSchema: fromEffectSchema(FillArgs),
|
|
46
|
+
run: (args) => Effect.andThen(session.fill(args.ref, args.text), okAt(session)).pipe(Effect.withSpan("browser_fill", {
|
|
47
|
+
kind: "client",
|
|
48
|
+
attributes: { "browser.ref": args.ref }
|
|
49
|
+
}))
|
|
50
|
+
});
|
|
51
|
+
const pressTool = (session) => make({
|
|
52
|
+
name: "browser_press",
|
|
53
|
+
description: "Press a keyboard key against the focused element.",
|
|
54
|
+
inputSchema: fromEffectSchema(PressArgs),
|
|
55
|
+
run: (args) => Effect.andThen(session.press(args.key), okAt(session)).pipe(Effect.withSpan("browser_press", {
|
|
56
|
+
kind: "client",
|
|
57
|
+
attributes: { "browser.key": args.key }
|
|
58
|
+
}))
|
|
59
|
+
});
|
|
60
|
+
const scrollTool = (session) => make({
|
|
61
|
+
name: "browser_scroll",
|
|
62
|
+
description: "Scroll the viewport. Only useful to bring an element into view - a page-reading tool's text is already scroll-independent.",
|
|
63
|
+
inputSchema: fromEffectSchema(ScrollArgs),
|
|
64
|
+
run: (args) => Effect.andThen(session.scroll({ direction: args.direction }), okAt(session)).pipe(Effect.withSpan("browser_scroll", {
|
|
65
|
+
kind: "client",
|
|
66
|
+
attributes: { "browser.direction": args.direction }
|
|
67
|
+
}))
|
|
68
|
+
});
|
|
69
|
+
/**
|
|
70
|
+
* The canonical browser action verbs bundled as a `Toolkit`, closed over a
|
|
71
|
+
* live `BrowserSession`. Compose it with a recipe-local page-reading tool and
|
|
72
|
+
* whatever finish/signal tools the agent needs:
|
|
73
|
+
*
|
|
74
|
+
* const toolkit = yield* Toolkit.compose(
|
|
75
|
+
* browserToolkit(session),
|
|
76
|
+
* Toolkit.make(readPageTool(session), finishTool),
|
|
77
|
+
* )
|
|
78
|
+
*
|
|
79
|
+
* For an à-la-carte subset, use the individual `gotoTool` / `clickTool` / …
|
|
80
|
+
* constructors directly. Run a turn's calls with `{ concurrency: 1 }`.
|
|
81
|
+
*/
|
|
82
|
+
const browserToolkit = (session) => make$1(gotoTool(session), clickTool(session), fillTool(session), pressTool(session), scrollTool(session));
|
|
83
|
+
//#endregion
|
|
84
|
+
export { browserToolkit, clickTool, fillTool, gotoTool, pressTool, scrollTool, BrowserTool_exports as t };
|
|
85
|
+
|
|
86
|
+
//# sourceMappingURL=BrowserTool.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrowserTool.mjs","names":["Tool.make","Tool.fromEffectSchema","Toolkit.make"],"sources":["../../src/browser/BrowserTool.ts"],"sourcesContent":["import { Effect, Schema } from \"effect\"\nimport * as Tool from \"../tool/Tool.js\"\nimport * as Toolkit from \"../tool/Toolkit.js\"\nimport type { BrowserSession } from \"./Browser.js\"\n\n// ---------------------------------------------------------------------------\n// Model-facing argument schemas. Annotated so the descriptions reach the\n// model through the rendered JSON Schema (JSDoc does not).\n// ---------------------------------------------------------------------------\n\nconst GotoArgs = Schema.Struct({\n url: Schema.String.annotate({ description: \"Absolute URL to navigate to.\" }),\n})\n\nconst ClickArgs = Schema.Struct({\n ref: Schema.String.annotate({\n description: \"A CSS selector, or an element @ref if a page-reading tool provides one.\",\n }),\n})\n\nconst FillArgs = Schema.Struct({\n ref: Schema.String.annotate({\n description: \"A CSS selector (or element @ref) of the input to fill.\",\n }),\n text: Schema.String.annotate({ description: \"The text to put in the input.\" }),\n})\n\nconst PressArgs = Schema.Struct({\n key: Schema.String.annotate({\n description: 'Key to press, e.g. \"Enter\" to submit the focused input, \"Tab\", \"Escape\".',\n }),\n})\n\nconst ScrollArgs = Schema.Struct({\n direction: Schema.Literals([\"up\", \"down\"]).annotate({\n description: \"Scroll the viewport up or down.\",\n }),\n})\n\n// ---------------------------------------------------------------------------\n// Uniform action outcome: the model always learns where the action left it.\n// ---------------------------------------------------------------------------\n\nconst currentUrl = (session: BrowserSession): Effect.Effect<string> =>\n session.evaluate(\"location.href\").pipe(\n Effect.flatMap(Schema.decodeUnknownEffect(Schema.String)),\n Effect.orElseSucceed(() => \"(unknown)\"),\n )\n\nconst okAt = (session: BrowserSession): Effect.Effect<string> =>\n Effect.map(currentUrl(session), (url) => `ok (now at ${url})`)\n\n// ---------------------------------------------------------------------------\n// The canonical browser action tools, each closed over a live `BrowserSession`\n// and failing with the full `BrowserError`. `Output` is a compact outcome\n// (`ok (now at <url>)`), not a page dump - a page-reading tool is the recipe's\n// to define, so history does not accumulate a full page per action.\n//\n// A failed action (stale ref, dead control, timeout) fails typed on the error\n// channel. Whether the model gets to recover from it is the loop's decision:\n// wrap the toolkit in `Toolkit.describeFailures(BrowserError.describe)` to\n// surface failures to the model, or map selectively to keep session/infra\n// errors (e.g. `BrowserSessionExpired`) fatal.\n//\n// Browser actions are order-dependent (fill, then press Enter): run a turn's\n// calls with `{ concurrency: 1 }`.\n// ---------------------------------------------------------------------------\n\nexport const gotoTool = (session: BrowserSession) =>\n Tool.make({\n name: \"browser_goto\",\n description: \"Navigate the browser to an absolute URL.\",\n inputSchema: Tool.fromEffectSchema(GotoArgs),\n run: (args) =>\n Effect.andThen(session.goto(args.url), okAt(session)).pipe(\n Effect.withSpan(\"browser_goto\", {\n kind: \"client\",\n attributes: { \"browser.url\": args.url },\n }),\n ),\n })\n\nexport const clickTool = (session: BrowserSession) =>\n Tool.make({\n name: \"browser_click\",\n description: \"Click the element named by ref. A click may navigate to a new page.\",\n inputSchema: Tool.fromEffectSchema(ClickArgs),\n run: (args) =>\n Effect.andThen(session.click(args.ref), okAt(session)).pipe(\n Effect.withSpan(\"browser_click\", {\n kind: \"client\",\n attributes: { \"browser.ref\": args.ref },\n }),\n ),\n })\n\nexport const fillTool = (session: BrowserSession) =>\n Tool.make({\n name: \"browser_fill\",\n description:\n \"Put text into the input named by ref. Filling alone does not submit; press Enter to submit the input.\",\n inputSchema: Tool.fromEffectSchema(FillArgs),\n run: (args) =>\n Effect.andThen(session.fill(args.ref, args.text), okAt(session)).pipe(\n Effect.withSpan(\"browser_fill\", {\n kind: \"client\",\n attributes: { \"browser.ref\": args.ref },\n }),\n ),\n })\n\nexport const pressTool = (session: BrowserSession) =>\n Tool.make({\n name: \"browser_press\",\n description: \"Press a keyboard key against the focused element.\",\n inputSchema: Tool.fromEffectSchema(PressArgs),\n run: (args) =>\n Effect.andThen(session.press(args.key), okAt(session)).pipe(\n Effect.withSpan(\"browser_press\", {\n kind: \"client\",\n attributes: { \"browser.key\": args.key },\n }),\n ),\n })\n\nexport const scrollTool = (session: BrowserSession) =>\n Tool.make({\n name: \"browser_scroll\",\n description:\n \"Scroll the viewport. Only useful to bring an element into view - a page-reading tool's text is already scroll-independent.\",\n inputSchema: Tool.fromEffectSchema(ScrollArgs),\n run: (args) =>\n Effect.andThen(session.scroll({ direction: args.direction }), okAt(session)).pipe(\n Effect.withSpan(\"browser_scroll\", {\n kind: \"client\",\n attributes: { \"browser.direction\": args.direction },\n }),\n ),\n })\n\n/**\n * The canonical browser action verbs bundled as a `Toolkit`, closed over a\n * live `BrowserSession`. Compose it with a recipe-local page-reading tool and\n * whatever finish/signal tools the agent needs:\n *\n * const toolkit = yield* Toolkit.compose(\n * browserToolkit(session),\n * Toolkit.make(readPageTool(session), finishTool),\n * )\n *\n * For an à-la-carte subset, use the individual `gotoTool` / `clickTool` / …\n * constructors directly. Run a turn's calls with `{ concurrency: 1 }`.\n */\nexport const browserToolkit = (session: BrowserSession) =>\n Toolkit.make(\n gotoTool(session),\n clickTool(session),\n fillTool(session),\n pressTool(session),\n scrollTool(session),\n )\n"],"mappings":";;;;;;;;;;;;;AAUA,MAAM,WAAW,OAAO,OAAO,EAC7B,KAAK,OAAO,OAAO,SAAS,EAAE,aAAa,gCAAgC,CAAC,EAC7E,CAAC;AAEF,MAAM,YAAY,OAAO,OAAO,EAC9B,KAAK,OAAO,OAAO,SAAS,EAC1B,aAAa,2EACd,CAAC,EACH,CAAC;AAEF,MAAM,WAAW,OAAO,OAAO;CAC7B,KAAK,OAAO,OAAO,SAAS,EAC1B,aAAa,0DACd,CAAC;CACF,MAAM,OAAO,OAAO,SAAS,EAAE,aAAa,iCAAiC,CAAC;CAC/E,CAAC;AAEF,MAAM,YAAY,OAAO,OAAO,EAC9B,KAAK,OAAO,OAAO,SAAS,EAC1B,aAAa,kFACd,CAAC,EACH,CAAC;AAEF,MAAM,aAAa,OAAO,OAAO,EAC/B,WAAW,OAAO,SAAS,CAAC,MAAM,OAAO,CAAC,CAAC,SAAS,EAClD,aAAa,mCACd,CAAC,EACH,CAAC;AAMF,MAAM,cAAc,YAClB,QAAQ,SAAS,gBAAgB,CAAC,KAChC,OAAO,QAAQ,OAAO,oBAAoB,OAAO,OAAO,CAAC,EACzD,OAAO,oBAAoB,YAAY,CACxC;AAEH,MAAM,QAAQ,YACZ,OAAO,IAAI,WAAW,QAAQ,GAAG,QAAQ,cAAc,IAAI,GAAG;AAkBhE,MAAa,YAAY,YACvBA,KAAU;CACR,MAAM;CACN,aAAa;CACb,aAAaC,iBAAsB,SAAS;CAC5C,MAAM,SACJ,OAAO,QAAQ,QAAQ,KAAK,KAAK,IAAI,EAAE,KAAK,QAAQ,CAAC,CAAC,KACpD,OAAO,SAAS,gBAAgB;EAC9B,MAAM;EACN,YAAY,EAAE,eAAe,KAAK,KAAK;EACxC,CAAC,CACH;CACJ,CAAC;AAEJ,MAAa,aAAa,YACxBD,KAAU;CACR,MAAM;CACN,aAAa;CACb,aAAaC,iBAAsB,UAAU;CAC7C,MAAM,SACJ,OAAO,QAAQ,QAAQ,MAAM,KAAK,IAAI,EAAE,KAAK,QAAQ,CAAC,CAAC,KACrD,OAAO,SAAS,iBAAiB;EAC/B,MAAM;EACN,YAAY,EAAE,eAAe,KAAK,KAAK;EACxC,CAAC,CACH;CACJ,CAAC;AAEJ,MAAa,YAAY,YACvBD,KAAU;CACR,MAAM;CACN,aACE;CACF,aAAaC,iBAAsB,SAAS;CAC5C,MAAM,SACJ,OAAO,QAAQ,QAAQ,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,KAAK,QAAQ,CAAC,CAAC,KAC/D,OAAO,SAAS,gBAAgB;EAC9B,MAAM;EACN,YAAY,EAAE,eAAe,KAAK,KAAK;EACxC,CAAC,CACH;CACJ,CAAC;AAEJ,MAAa,aAAa,YACxBD,KAAU;CACR,MAAM;CACN,aAAa;CACb,aAAaC,iBAAsB,UAAU;CAC7C,MAAM,SACJ,OAAO,QAAQ,QAAQ,MAAM,KAAK,IAAI,EAAE,KAAK,QAAQ,CAAC,CAAC,KACrD,OAAO,SAAS,iBAAiB;EAC/B,MAAM;EACN,YAAY,EAAE,eAAe,KAAK,KAAK;EACxC,CAAC,CACH;CACJ,CAAC;AAEJ,MAAa,cAAc,YACzBD,KAAU;CACR,MAAM;CACN,aACE;CACF,aAAaC,iBAAsB,WAAW;CAC9C,MAAM,SACJ,OAAO,QAAQ,QAAQ,OAAO,EAAE,WAAW,KAAK,WAAW,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,KAC3E,OAAO,SAAS,kBAAkB;EAChC,MAAM;EACN,YAAY,EAAE,qBAAqB,KAAK,WAAW;EACpD,CAAC,CACH;CACJ,CAAC;;;;;;;;;;;;;;AAeJ,MAAa,kBAAkB,YAC7BC,OACE,SAAS,QAAQ,EACjB,UAAU,QAAQ,EAClB,SAAS,QAAQ,EACjB,UAAU,QAAQ,EAClB,WAAW,QAAQ,CACpB"}
|
|
@@ -10243,7 +10243,7 @@ function memo(fn) {
|
|
|
10243
10243
|
};
|
|
10244
10244
|
}
|
|
10245
10245
|
async function saveInlineSnapshots(environment, snapshots) {
|
|
10246
|
-
const MagicString = (await import("./magic-string.es-
|
|
10246
|
+
const MagicString = (await import("./magic-string.es-Dk-MMA0F.mjs")).default;
|
|
10247
10247
|
const files = new Set(snapshots.map((i) => i.file));
|
|
10248
10248
|
await Promise.all(Array.from(files).map(async (file) => {
|
|
10249
10249
|
const snaps = snapshots.filter((i) => i.file === file);
|
|
@@ -13777,6 +13777,6 @@ var import_dist = (/* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
13777
13777
|
exports.expectTypeOf = expectTypeOf;
|
|
13778
13778
|
})))();
|
|
13779
13779
|
//#endregion
|
|
13780
|
-
export {
|
|
13780
|
+
export { describe as a, beforeAll as i, globalExpect as n, it as o, afterAll as r, import_dist as t };
|
|
13781
13781
|
|
|
13782
|
-
//# sourceMappingURL=dist-
|
|
13782
|
+
//# sourceMappingURL=dist-B04dlFHg.mjs.map
|