c8ctl-plugin-nano 1.44.11 → 1.45.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/c8ctl-plugin.js +139 -5
- package/package.json +20 -10
- package/supervisor.dist.js +24 -0
- package/work-relay.mjs +92 -2
package/c8ctl-plugin.js
CHANGED
|
@@ -53,6 +53,7 @@ import {
|
|
|
53
53
|
import { createConnection, createServer } from 'node:net';
|
|
54
54
|
import * as nodeNet from 'node:net';
|
|
55
55
|
import { lookup as dnsLookup } from 'node:dns/promises';
|
|
56
|
+
import * as nodeDns from 'node:dns';
|
|
56
57
|
import { randomUUID, createHash, randomBytes } from 'node:crypto';
|
|
57
58
|
import { homedir, platform as osPlatform, devNull, tmpdir, hostname } from 'node:os';
|
|
58
59
|
import { join, isAbsolute, resolve as resolvePath, dirname, basename, sep } from 'node:path';
|
|
@@ -3215,6 +3216,29 @@ async function resolveAutoJobTypes({ restConfig, scope = '', readerFactory, time
|
|
|
3215
3216
|
}
|
|
3216
3217
|
}
|
|
3217
3218
|
|
|
3219
|
+
// Lazily load the bundled, Effect-backed single-owner supervisor runtime
|
|
3220
|
+
// (`supervisor.dist.js`, authored in TypeScript under `supervisor/src/` and
|
|
3221
|
+
// esbuild-bundled with Effect tree-shaken in — see AGENTS.md "Supervisor
|
|
3222
|
+
// runtime"). The import is deferred so the ~100 KB Effect surface only loads
|
|
3223
|
+
// when the new activation runtime is actually used, and the raw-JS plugin stays
|
|
3224
|
+
// importable with zero Effect cost on every other code path. The returned module
|
|
3225
|
+
// exposes `makeSupervisor`, the port interfaces, and the tree-shaken Effect
|
|
3226
|
+
// namespaces (`Effect`, `Duration`, `Fiber`, …) a JS caller needs to run it.
|
|
3227
|
+
let _supervisorRuntime;
|
|
3228
|
+
function loadSupervisorRuntime() {
|
|
3229
|
+
// Cache the in-flight Promise (not just the resolved module) so concurrent
|
|
3230
|
+
// callers racing before the first import settles share a single import()
|
|
3231
|
+
// instead of each kicking off a redundant one. Clear the cache on failure so
|
|
3232
|
+
// a later call can retry rather than being wedged on a rejected Promise.
|
|
3233
|
+
if (!_supervisorRuntime) {
|
|
3234
|
+
_supervisorRuntime = import('./supervisor.dist.js').catch((err) => {
|
|
3235
|
+
_supervisorRuntime = undefined;
|
|
3236
|
+
throw err;
|
|
3237
|
+
});
|
|
3238
|
+
}
|
|
3239
|
+
return _supervisorRuntime;
|
|
3240
|
+
}
|
|
3241
|
+
|
|
3218
3242
|
// Build the content endpoint. Per issue #63 / nano-bpm #759 the non-binary
|
|
3219
3243
|
// `/content` variant is deprecated for non-RPA types (Markdown → 406), so the
|
|
3220
3244
|
// worker always fetches `/content/binary`.
|
|
@@ -5463,7 +5487,11 @@ function runAgentJob(profile, job, opts = {}) {
|
|
|
5463
5487
|
return Promise.resolve({ ok: false, exitCode: null, stdout: '', stderr: '', error: 'command-line args (--arg) are not supported for host execution on Windows; use a container sandbox or bake switches into the command', truncated: false, stderrTruncated: false });
|
|
5464
5488
|
}
|
|
5465
5489
|
const resultEnv = resultFile ? { [AGENT_RESULT_FILE_ENV]: resultFile } : {};
|
|
5466
|
-
|
|
5490
|
+
// Propagate IPv4-first DNS ordering into the forked agent via NODE_OPTIONS
|
|
5491
|
+
// (jwulf/c8ctl-plugin-nano#151): the parent's process-wide setDefaultResultOrder
|
|
5492
|
+
// can't reach the child, so its own Node runtime must read the flag at startup.
|
|
5493
|
+
// Merges (never clobbers) any inherited/operator NODE_OPTIONS.
|
|
5494
|
+
const harnessEnv = withIpv4FirstNodeOptions({ ...process.env, ...staticEnv, ...secretEnv, ...agentEnv, ...extraEnv, ...resultEnv });
|
|
5467
5495
|
|
|
5468
5496
|
// A role opted into ACP (`protocol: acp`) drives its harness over the Agent
|
|
5469
5497
|
// Client Protocol (JSON-RPC 2.0 over stdio) instead of the stdin/scrape pipe
|
|
@@ -5566,6 +5594,16 @@ function runAgentJob(profile, job, opts = {}) {
|
|
|
5566
5594
|
for (const n of passThroughSecretNames) envArgs.push('-e', n);
|
|
5567
5595
|
for (const k of Object.keys(staticEnv)) envArgs.push('-e', k);
|
|
5568
5596
|
|
|
5597
|
+
// Propagate IPv4-first DNS ordering into the containerised agent's Node runtime
|
|
5598
|
+
// via NODE_OPTIONS (jwulf/c8ctl-plugin-nano#151), merged (never clobbered) with
|
|
5599
|
+
// any inherited/operator value. Forwarded by NAME like every other env so the
|
|
5600
|
+
// value stays out of argv/`docker inspect`; `-e NODE_OPTIONS` is added only when
|
|
5601
|
+
// it wasn't already forwarded via the static env above (avoid a duplicate flag).
|
|
5602
|
+
const containerEnv = withIpv4FirstNodeOptions({ ...process.env, ...staticEnv, ...secretEnv, ...agentEnv, ...extraEnv, ...resultEnv });
|
|
5603
|
+
if (!Object.prototype.hasOwnProperty.call(staticEnv, 'NODE_OPTIONS')) {
|
|
5604
|
+
envArgs.push('-e', 'NODE_OPTIONS');
|
|
5605
|
+
}
|
|
5606
|
+
|
|
5569
5607
|
const args = [
|
|
5570
5608
|
'run', '--rm', '-i',
|
|
5571
5609
|
'--name', containerName,
|
|
@@ -5588,7 +5626,7 @@ function runAgentJob(profile, job, opts = {}) {
|
|
|
5588
5626
|
// Reserved harness env (AGENT_* + the result-file path) is layered AFTER
|
|
5589
5627
|
// resolved secrets so a task-supplied secret NAME can never shadow it. In
|
|
5590
5628
|
// container mode docker reads these values from our child env by NAME.
|
|
5591
|
-
env:
|
|
5629
|
+
env: containerEnv,
|
|
5592
5630
|
stdinData: payload,
|
|
5593
5631
|
timeoutMs,
|
|
5594
5632
|
idleTimeoutMs,
|
|
@@ -6655,6 +6693,86 @@ function enableEngineHappyEyeballs(opts = {}) {
|
|
|
6655
6693
|
return false;
|
|
6656
6694
|
}
|
|
6657
6695
|
|
|
6696
|
+
// The Node DNS result-order token that ranks any A (IPv4) record ahead of an
|
|
6697
|
+
// AAAA (IPv6) one, so a host advertised over mDNS (`*.local`) that answers with
|
|
6698
|
+
// an unreachable IPv6 link-local `fe80::…` FIRST is still connected over its
|
|
6699
|
+
// reachable IPv4 A record. Used both process-wide (setDefaultResultOrder) and as
|
|
6700
|
+
// the `--dns-result-order` value propagated into the forked agent's NODE_OPTIONS.
|
|
6701
|
+
const DNS_RESULT_ORDER_IPV4_FIRST = 'ipv4first';
|
|
6702
|
+
|
|
6703
|
+
/**
|
|
6704
|
+
* Prefer IPv4 whenever an A record exists, PROCESS-WIDE, by flipping Node's
|
|
6705
|
+
* default DNS result order to `ipv4first` (jwulf/c8ctl-plugin-nano#151). This is
|
|
6706
|
+
* the harness-wide *class* fix that complements the engine-client Happy-Eyeballs
|
|
6707
|
+
* enabler (#139): Happy-Eyeballs races families but can't help when the *only*
|
|
6708
|
+
* answer picked is a single dead address, and it doesn't govern ordering; forcing
|
|
6709
|
+
* `ipv4first` makes every `dns.lookup` (and therefore every outbound the worker
|
|
6710
|
+
* and any in-process client make — the SDK's `activateJobs`, the raw-`fetch`
|
|
6711
|
+
* `--auto` engine reads, agentic discovery) rank the reachable A record ahead of
|
|
6712
|
+
* a dead AAAA. Because `dns.lookup` re-resolves per connection (Node keeps no
|
|
6713
|
+
* process-wide lookup cache), a *running* worker that started against a bad
|
|
6714
|
+
* resolution also heals the moment DNS is corrected — no supervisor restart — as
|
|
6715
|
+
* the next long-poll / reconcile re-resolves under the new ordering.
|
|
6716
|
+
*
|
|
6717
|
+
* Fail-open and idempotent: a runtime without `setDefaultResultOrder` (or any
|
|
6718
|
+
* throw) is swallowed so an ordering hint — an optimisation — can never block a
|
|
6719
|
+
* worker from starting.
|
|
6720
|
+
*
|
|
6721
|
+
* @param {{ dns?: object, order?: string }} [opts] injection seam for tests
|
|
6722
|
+
* @returns {boolean} true if the default DNS result order was (re)asserted
|
|
6723
|
+
*/
|
|
6724
|
+
function preferIpv4Resolution(opts = {}) {
|
|
6725
|
+
try {
|
|
6726
|
+
// Destructure INSIDE the try so a non-object arg (e.g. `null`) fails open
|
|
6727
|
+
// like any other throw rather than blowing up before the guard.
|
|
6728
|
+
const { dns = nodeDns, order = DNS_RESULT_ORDER_IPV4_FIRST } = opts || {};
|
|
6729
|
+
if (dns && typeof dns.setDefaultResultOrder === 'function') {
|
|
6730
|
+
dns.setDefaultResultOrder(order);
|
|
6731
|
+
return true;
|
|
6732
|
+
}
|
|
6733
|
+
} catch {
|
|
6734
|
+
// Fail-open: DNS ordering is a connectivity optimisation, never a start gate.
|
|
6735
|
+
}
|
|
6736
|
+
return false;
|
|
6737
|
+
}
|
|
6738
|
+
|
|
6739
|
+
/**
|
|
6740
|
+
* Merge `--dns-result-order=ipv4first` into an existing `NODE_OPTIONS` string so
|
|
6741
|
+
* a forked agent child (and any node-based tool it spawns) inherits the same
|
|
6742
|
+
* IPv4-first ordering as its parent worker (jwulf/c8ctl-plugin-nano#151) — a
|
|
6743
|
+
* `dns.setDefaultResultOrder` call in THIS process can't reach the child, but the
|
|
6744
|
+
* child's own Node runtime reads the flag from `NODE_OPTIONS` at startup.
|
|
6745
|
+
*
|
|
6746
|
+
* Preserves any other options already in `NODE_OPTIONS` (we append, never
|
|
6747
|
+
* clobber) and, crucially, RESPECTS an operator who has *explicitly* pinned a
|
|
6748
|
+
* `--dns-result-order` (e.g. `verbatim`): we only add ours when none is present,
|
|
6749
|
+
* so we harden the default without overriding a deliberate choice.
|
|
6750
|
+
*
|
|
6751
|
+
* @param {string} [existing] the incoming NODE_OPTIONS value (may be empty)
|
|
6752
|
+
* @returns {string} the NODE_OPTIONS value with an ordering flag guaranteed
|
|
6753
|
+
*/
|
|
6754
|
+
function ipv4FirstNodeOptions(existing = '') {
|
|
6755
|
+
const flag = `--dns-result-order=${DNS_RESULT_ORDER_IPV4_FIRST}`;
|
|
6756
|
+
const cur = typeof existing === 'string' ? existing.trim() : '';
|
|
6757
|
+
// An explicit operator ordering (any `--dns-result-order=…`) wins untouched.
|
|
6758
|
+
if (/--dns-result-order[=\s]/.test(cur)) return cur;
|
|
6759
|
+
return cur ? `${cur} ${flag}` : flag;
|
|
6760
|
+
}
|
|
6761
|
+
|
|
6762
|
+
/**
|
|
6763
|
+
* Return a shallow copy of an env map whose `NODE_OPTIONS` carries the
|
|
6764
|
+
* IPv4-first ordering flag, so the forked harness inherits it (#151). Applied at
|
|
6765
|
+
* every harness spawn site (host pipe/PTY/ACP and container) so the ordering
|
|
6766
|
+
* follows the agent regardless of transport. Never mutates the input.
|
|
6767
|
+
*
|
|
6768
|
+
* @param {Record<string,string>} [env] the env map about to be handed to a child
|
|
6769
|
+
* @returns {Record<string,string>} a new env map with NODE_OPTIONS hardened
|
|
6770
|
+
*/
|
|
6771
|
+
function withIpv4FirstNodeOptions(env) {
|
|
6772
|
+
const base = env && typeof env === 'object' ? env : {};
|
|
6773
|
+
return { ...base, NODE_OPTIONS: ipv4FirstNodeOptions(base.NODE_OPTIONS) };
|
|
6774
|
+
}
|
|
6775
|
+
|
|
6658
6776
|
/**
|
|
6659
6777
|
* work — turn a hire profile into live Nano job workers (one per job-type in
|
|
6660
6778
|
* the rank×capability matrix) and poll for work in the foreground until Ctrl-C.
|
|
@@ -6902,6 +7020,14 @@ async function workAgent(req, flags) {
|
|
|
6902
7020
|
// scaling the fleet to zero (jwulf/c8ctl-plugin-nano#139). Process-wide, so it
|
|
6903
7021
|
// covers both the SDK's activateJobs and the raw-fetch --auto engine reads.
|
|
6904
7022
|
enableEngineHappyEyeballs();
|
|
7023
|
+
// Prefer IPv4 whenever an A record exists (jwulf/c8ctl-plugin-nano#151): the
|
|
7024
|
+
// process-wide, class-level complement to Happy-Eyeballs. `ipv4first` ranks the
|
|
7025
|
+
// reachable A record ahead of a dead AAAA (mDNS `fe80::` link-local), so BOTH
|
|
7026
|
+
// the SDK activateJobs and the raw-fetch --auto reads resolve to it — and,
|
|
7027
|
+
// since Node re-resolves per connection, a running worker heals the moment a
|
|
7028
|
+
// bad DNS answer is corrected, without a supervisor restart. Set before the
|
|
7029
|
+
// client is created so every outbound inherits it.
|
|
7030
|
+
preferIpv4Resolution();
|
|
6905
7031
|
const camunda = globalThis.c8ctl.createClient();
|
|
6906
7032
|
|
|
6907
7033
|
// Broker REST endpoint for live linked-resource prompts (issue #63) and the
|
|
@@ -7688,9 +7814,12 @@ async function workAgent(req, flags) {
|
|
|
7688
7814
|
if (isContainer) liveRunIds.delete(runId);
|
|
7689
7815
|
if (runDir && !keepRuns) { try { rmSync(runDir, { recursive: true, force: true }); } catch { /* best effort */ } }
|
|
7690
7816
|
if (runDir) liveRunDirs.delete(runDir);
|
|
7691
|
-
//
|
|
7692
|
-
//
|
|
7693
|
-
|
|
7817
|
+
// Emit the relay session's `phase:close` lifecycle event and drain its
|
|
7818
|
+
// outbound buffer before the job settles (so the live-terminal tail is
|
|
7819
|
+
// flushed, nanobpm/nano-workforce#710), then detach its inbound-frame
|
|
7820
|
+
// subscription so it never outlives the job or leaks a steer listener
|
|
7821
|
+
// across jobs. Bounded internally — a hub outage never wedges completion.
|
|
7822
|
+
if (relaySession) { try { await relaySession.close(); } catch { /* best effort */ } }
|
|
7694
7823
|
}
|
|
7695
7824
|
|
|
7696
7825
|
// Read the agent's structured result: the file it wrote, else a stdout
|
|
@@ -12426,7 +12555,12 @@ export {
|
|
|
12426
12555
|
serviceTaskHasAgentHeader,
|
|
12427
12556
|
readDeployedAgentJobTypes,
|
|
12428
12557
|
resolveAutoJobTypes,
|
|
12558
|
+
loadSupervisorRuntime,
|
|
12429
12559
|
enableEngineHappyEyeballs,
|
|
12560
|
+
preferIpv4Resolution,
|
|
12561
|
+
ipv4FirstNodeOptions,
|
|
12562
|
+
withIpv4FirstNodeOptions,
|
|
12563
|
+
DNS_RESULT_ORDER_IPV4_FIRST,
|
|
12430
12564
|
workAgent,
|
|
12431
12565
|
derivePollTimeoutMs,
|
|
12432
12566
|
AGENT_TASK_NS,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "c8ctl-plugin-nano",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.45.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "c8ctl plugin to start, inspect, and stop a local Nano BPM (nanobpmn) cluster",
|
|
6
6
|
"main": "c8ctl-plugin.js",
|
|
@@ -27,12 +27,18 @@
|
|
|
27
27
|
"work-channel.mjs",
|
|
28
28
|
"work-relay.mjs",
|
|
29
29
|
"work-buffer.mjs",
|
|
30
|
+
"supervisor.dist.js",
|
|
30
31
|
"nanobpmn-binary.json",
|
|
31
32
|
"README.md"
|
|
32
33
|
],
|
|
33
34
|
"scripts": {
|
|
34
35
|
"lint": "node --check c8ctl-plugin.js",
|
|
35
|
-
"
|
|
36
|
+
"typecheck:supervisor": "tsc -p supervisor/tsconfig.json",
|
|
37
|
+
"build:supervisor": "node supervisor/build.mjs",
|
|
38
|
+
"vendor:effect": "node scripts/vendor-effect.mjs",
|
|
39
|
+
"test:supervisor": "node --experimental-strip-types --test supervisor/test/*.test.ts",
|
|
40
|
+
"test": "node --check c8ctl-plugin.js && npm run typecheck:supervisor && npm run build:supervisor && npm run test:supervisor && node --test",
|
|
41
|
+
"prepublishOnly": "npm run typecheck:supervisor && npm run build:supervisor"
|
|
36
42
|
},
|
|
37
43
|
"license": "MIT",
|
|
38
44
|
"engines": {
|
|
@@ -49,7 +55,11 @@
|
|
|
49
55
|
"@commitlint/config-conventional": "^20.4.1",
|
|
50
56
|
"@semantic-release/exec": "^7.1.0",
|
|
51
57
|
"@semantic-release/github": "^12.0.6",
|
|
52
|
-
"
|
|
58
|
+
"@types/node": "^22.20.1",
|
|
59
|
+
"effect": "4.0.0-rc.112",
|
|
60
|
+
"esbuild": "^0.24.2",
|
|
61
|
+
"semantic-release": "^25.0.3",
|
|
62
|
+
"typescript": "^5.9.3"
|
|
53
63
|
},
|
|
54
64
|
"dependencies": {
|
|
55
65
|
"@nanobpm/agentic": "^0.10.0",
|
|
@@ -57,12 +67,12 @@
|
|
|
57
67
|
},
|
|
58
68
|
"optionalDependencies": {
|
|
59
69
|
"node-pty": "^1.0.0",
|
|
60
|
-
"@nanobpm/c8ctl-plugin-nano-darwin-arm64": "1.
|
|
61
|
-
"@nanobpm/c8ctl-plugin-nano-darwin-x64": "1.
|
|
62
|
-
"@nanobpm/c8ctl-plugin-nano-linux-x64": "1.
|
|
63
|
-
"@nanobpm/c8ctl-plugin-nano-linux-arm64": "1.
|
|
64
|
-
"@nanobpm/c8ctl-plugin-nano-linux-armv7": "1.
|
|
65
|
-
"@nanobpm/c8ctl-plugin-nano-linux-armv6": "1.
|
|
66
|
-
"@nanobpm/c8ctl-plugin-nano-win32-x64": "1.
|
|
70
|
+
"@nanobpm/c8ctl-plugin-nano-darwin-arm64": "1.45.0",
|
|
71
|
+
"@nanobpm/c8ctl-plugin-nano-darwin-x64": "1.45.0",
|
|
72
|
+
"@nanobpm/c8ctl-plugin-nano-linux-x64": "1.45.0",
|
|
73
|
+
"@nanobpm/c8ctl-plugin-nano-linux-arm64": "1.45.0",
|
|
74
|
+
"@nanobpm/c8ctl-plugin-nano-linux-armv7": "1.45.0",
|
|
75
|
+
"@nanobpm/c8ctl-plugin-nano-linux-armv6": "1.45.0",
|
|
76
|
+
"@nanobpm/c8ctl-plugin-nano-win32-x64": "1.45.0"
|
|
67
77
|
}
|
|
68
78
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// GENERATED by supervisor/build.mjs — do not edit. Source: supervisor/src/*.ts (effect@4.0.0-rc.112 tree-shaken in).
|
|
2
|
+
var $d=Object.defineProperty;var nr=(e,t)=>{for(var r in t)$d(e,r,{get:t[r],enumerable:!0})};var Mc=class extends Error{_tag="SupervisorError";cause;constructor(t,r){super(t),this.name="SupervisorError",this.cause=r}},Ac={info:()=>{},warn:()=>{},debug:()=>{}};var U=(e,t)=>{switch(t.length){case 0:return e;case 1:return t[0](e);case 2:return t[1](t[0](e));case 3:return t[2](t[1](t[0](e)));case 4:return t[3](t[2](t[1](t[0](e))));case 5:return t[4](t[3](t[2](t[1](t[0](e)))));case 6:return t[5](t[4](t[3](t[2](t[1](t[0](e))))));case 7:return t[6](t[5](t[4](t[3](t[2](t[1](t[0](e)))))));case 8:return t[7](t[6](t[5](t[4](t[3](t[2](t[1](t[0](e))))))));case 9:return t[8](t[7](t[6](t[5](t[4](t[3](t[2](t[1](t[0](e)))))))));default:{let r=e;for(let n=0,o=t.length;n<o;n++)r=t[n](r);return r}}};var c=function(e,t){if(typeof e=="function")return function(){return e(arguments)?t.apply(this,arguments):r=>t(r,...arguments)};switch(e){case 0:case 1:throw new RangeError(`Invalid arity ${e}`);case 2:return function(r,n){return arguments.length>=2?t(r,n):function(o){return t(o,r)}};case 3:return function(r,n,o){return arguments.length>=3?t(r,n,o):function(s){return t(s,r,n)}};default:return function(){if(arguments.length>=e)return t.apply(this,arguments);let r=arguments;return function(n){return t(n,...r)}}}};var C=e=>e;var ee=e=>()=>e,kt=ee(!0),Un=ee(!1);var Be=ee(void 0),$t=Be;function Nc(e,...t){return U(e,t)}var Pr=e=>{let t=new Set(Reflect.ownKeys(e));if(e.constructor===Object)return t;e instanceof Error&&t.delete("stack");let r=Object.getPrototypeOf(e),n=r;for(;n!==null&&n!==Object.prototype;){let o=Reflect.ownKeys(n);for(let s=0;s<o.length;s++)t.add(o[s]);n=Object.getPrototypeOf(n)}return t.has("constructor")&&typeof e.constructor=="function"&&r===e.constructor.prototype&&t.delete("constructor"),t},or=new WeakSet;function Dn(e){return typeof e=="string"}function Uc(e){return typeof e=="number"}function Yo(e){return typeof e=="function"}function sr(e){return e!==void 0}function Wd(e){return typeof e=="object"&&e!==null||Yo(e)}var b=c(2,(e,t)=>Wd(e)&&t in e),qt=c(2,(e,t)=>b(e,"_tag")&&e._tag===t);function it(e){return b(e,Symbol.iterator)||Dn(e)}var D="~effect/interfaces/Hash",R=e=>{switch(typeof e){case"number":return ct(e);case"bigint":return z(e.toString(10));case"boolean":return z(String(e));case"symbol":return z(String(e));case"string":return z(e);case"undefined":return z("undefined");case"function":case"object":{if(e===null)return z("null");if(e instanceof Date)return Number.isNaN(e.getTime())?z("Invalid Date"):z(e.toISOString());if(e instanceof RegExp)return z(e.toString());{if(or.has(e))return Pn(e);if(Qo.has(e))return Qo.get(e);let t=Bd(e,()=>zd(e)?e[D]():typeof e=="function"?Pn(e):e instanceof DataView?De(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):Array.isArray(e)||ArrayBuffer.isView(e)?De(e):e instanceof Map?jd(e):e instanceof Set?Hd(e):rs(e));return Qo.set(e,t),t}}default:throw new Error(`BUG: unhandled typeof ${typeof e} - please report an issue at https://github.com/Effect-TS/effect/issues`)}},Pn=e=>(Xo.has(e)||Xo.set(e,ct(Math.floor(Math.random()*Number.MAX_SAFE_INTEGER))),Xo.get(e)),W=c(2,(e,t)=>e*53^t),Ln=e=>e&3221225471|e>>>1&1073741824,zd=e=>b(e,D),ct=e=>{if(e!==e)return z("NaN");if(e===1/0)return z("Infinity");if(e===-1/0)return z("-Infinity");let t=e|0;for(t!==e&&(t^=e*4294967295);e>4294967295;)t^=e/=4294967295;return Ln(t)},z=e=>{let t=5381,r=e.length;for(;r;)t=t*33^e.charCodeAt(--r);return Ln(t)},ts=(e,t)=>{let r=12289;for(let n of t)r^=W(R(n),R(e[n]));return Ln(r)},rs=e=>ts(e,Pr(e)),ns=(e,t)=>r=>{let n=e;for(let o of r)n^=t(o);return Ln(n)},De=ns(6151,R),jd=ns(z("Map"),([e,t])=>W(R(e),R(t))),Hd=ns(z("Set"),R),Xo=new WeakMap,Qo=new WeakMap,es=new WeakSet;function Bd(e,t){if(es.has(e))return z("[Circular]");es.add(e);let r=t();return es.delete(e),r}var P="~effect/interfaces/Equal";function B(){return arguments.length===1?e=>Wt(e,arguments[0]):Wt(arguments[0],arguments[1])}function Wt(e,t){if(e===t)return!0;if(e==null||t==null)return!1;let r=typeof e;return r!==typeof t?!1:r==="number"&&e!==e&&t!==t?!0:r!=="object"&&r!=="function"||or.has(e)||or.has(t)?!1:Kd(e,t,Jd)}function Vd(e,t,r){let n=os.has(e),o=ss.has(t);if(n&&o)return!0;if(n||o)return!1;os.add(e),ss.add(t);let s=r();return os.delete(e),ss.delete(t),s}var os=new WeakSet,ss=new WeakSet;function Jd(e,t){if(R(e)!==R(t))return!1;if(e instanceof Date){if(!(t instanceof Date))return!1;let s=e.getTime(),i=t.getTime();return s===i||Number.isNaN(s)&&Number.isNaN(i)}else if(e instanceof RegExp)return t instanceof RegExp?e.toString()===t.toString():!1;let r=Pc(e),n=Pc(t);if(r!==n)return!1;let o=r&&n;return typeof e=="function"&&!o?!1:Vd(e,t,()=>{if(o)return e[P](t);if(Array.isArray(e))return!Array.isArray(t)||e.length!==t.length?!1:Zd(e,t);if(ArrayBuffer.isView(e)){let s=e instanceof DataView;if(!ArrayBuffer.isView(t)||e.byteLength!==t.byteLength||s!==t instanceof DataView)return!1;if(s){let i=t;return Dc(new Uint8Array(e.buffer,e.byteOffset,e.byteLength),new Uint8Array(i.buffer,i.byteOffset,i.byteLength))}return Dc(e,t)}else{if(e instanceof Map)return!(t instanceof Map)||e.size!==t.size?!1:Xd(e,t);if(e instanceof Set)return!(t instanceof Set)||e.size!==t.size?!1:em(e,t)}return Gd(e,t)})}function Kd(e,t,r){let n=$n.get(e);if(!n)n=new WeakMap,$n.set(e,n);else if(n.has(t))return n.get(t);let o=r(e,t);n.set(t,o);let s=$n.get(t);return s||(s=new WeakMap,$n.set(t,s)),s.set(e,o),o}var $n=new WeakMap;function Zd(e,t){for(let r=0;r<e.length;r++)if(!Wt(e[r],t[r]))return!1;return!0}function Dc(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(e[r]!==t[r])return!1;return!0}function Gd(e,t){let r=Pr(e),n=Pr(t);if(r.size!==n.size)return!1;for(let o of r)if(!n.has(o)||!Wt(e[o],t[o]))return!1;return!0}function Yd(e,t){return function(n,o){let s=Array.from(o);for(let[i,a]of n){let u=!1;for(let f=0;f<s.length;f++){let[d,p]=s[f];if(e(i,d)&&t(a,p)){s[f]=s[s.length-1],s.pop(),u=!0;break}}if(!u)return!1}return!0}}var Xd=Yd(Wt,Wt);function Qd(e){return function(r,n){let o=Array.from(n);for(let s of r){let i=!1;for(let a=0;a<o.length;a++){let u=o[a];if(e(s,u)){o[a]=o[o.length-1],o.pop(),i=!0;break}}if(!i)return!1}return!0}}var em=Qd(Wt),Pc=e=>b(e,P);var Lc=e=>(or.add(e),e);function $c(e,t,r){return{combine:e,initialValue:t,combineAll:r??(n=>{let o=t;for(let s of n)o=e(o,s);return o})}}var is=e=>(t,r)=>t===r||e(t,r),tm=(e,t)=>e===t,Wc=()=>tm;function zc(e){return is((t,r)=>{if(t.length!==r.length)return!1;for(let n=0;n<t.length;n++)if(!e(t[n],r[n]))return!1;return!0})}var cs=e=>e.length>0;var Hc=e=>c(3,(t,r,n)=>e(t,o=>({...o,[r]:n(o)}))),Bc=e=>c(2,(t,r)=>e(t,n=>({[r]:n}))),Vc=(e,t)=>c(3,(r,n,o)=>t(r,s=>e(o(s),i=>({...s,[n]:i}))));function ye(e,t,r){t==="__proto__"?Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0}):e[t]=r}function Jc(e,t){for(let r of Reflect.ownKeys(t))Object.prototype.propertyIsEnumerable.call(t,r)&&ye(e,r,t[r])}function Kc(e){return{combine:e}}function Zc(e){return Kc((t,r)=>e(t,r)===-1?t:r)}function Gc(e){return Kc((t,r)=>e(t,r)===1?t:r)}var qr=Symbol.for("~effect/Redactable"),om=e=>b(e,qr);function ir(e){return om(e)?as(e):e}function as(e){return e[qr](globalThis[cr]?.context??sm)}var cr="~effect/Fiber/currentFiber",Xc=new Map,sm={"~effect/Context":{},base:Xc,depth:0,mapUnsafe:Xc,pipe(){return U(this,arguments)}};function Q(e,t){let r=t?.space??0,n=new WeakSet,o=r?typeof r=="number"?" ".repeat(r):r:"",s=f=>o.repeat(f),i=(f,d)=>{let p=f?.constructor;return p&&p!==Object.prototype.constructor&&p.name?`${p.name}(${d})`:d},a=f=>{try{return Reflect.ownKeys(f)}catch{return["[ownKeys threw]"]}};function u(f,d=0){if(typeof f=="string")return JSON.stringify(f);if(typeof f=="number"||f==null||typeof f=="boolean"||typeof f=="symbol")return String(f);if(typeof f=="bigint")return String(f)+"n";if(typeof f=="object"||typeof f=="function"){if(n.has(f))return cm;n.add(f);let p;if(qr in f)p=u(as(f),d);else if(Array.isArray(f))p=!o||f.length<=1?`[${f.map(g=>u(g,d)).join(",")}]`:`[
|
|
3
|
+
${s(d+1)}${f.map(g=>u(g,d+1)).join(`,
|
|
4
|
+
`+s(d+1))}
|
|
5
|
+
${s(d)}]`;else if(f instanceof Date)p=am(f);else if(!t?.ignoreToString&&b(f,"toString")&&typeof f.toString=="function"&&f.toString!==Object.prototype.toString&&f.toString!==Array.prototype.toString){let g=um(f);p=f instanceof Error&&f.cause?`${g} (cause: ${u(f.cause,d)})`:g}else if(Symbol.iterator in f)p=`${f.constructor.name}(${u(Array.from(f),d)})`;else{let g=a(f);if(!o||g.length<=1){let l=`{${g.map(w=>`${Qc(w)}:${u(f[w],d)}`).join(",")}}`;p=i(f,l)}else{let l=`{
|
|
6
|
+
${g.map(w=>`${s(d+1)}${Qc(w)}: ${u(f[w],d+1)}`).join(`,
|
|
7
|
+
`)}
|
|
8
|
+
${s(d)}}`;p=i(f,l)}}return n.delete(f),p}return String(f)}return u(e,0)}var cm="[Circular]";function Qc(e){return typeof e=="string"?JSON.stringify(e):String(e)}function am(e){try{return e.toISOString()}catch{return"Invalid Date"}}function um(e){try{let t=e.toString();return typeof t=="string"?t:String(t)}catch{return"[toString threw]"}}function Wr(e,t){let r=[];return JSON.stringify(e,function(n,o){let s=Object.getOwnPropertyDescriptor(this,n)?.value,i=b(s,qr)?ir(s):ir(o);if(typeof i=="bigint")return Q(i);if(typeof i!="object"||i===null)return i;for(;r.length>0&&r[r.length-1]!==this;)r.pop();if(!r.includes(i))return r.push(i),i},t?.space)??"null"}var be=Symbol.for("nodejs.util.inspect.custom"),Ve=e=>{try{return e=ir(e),b(e,"toJSON")&&Yo(e.toJSON)&&e.toJSON.length===0?e.toJSON():Array.isArray(e)?e.map(Ve):e}catch{return"[toJSON threw]"}},ta=(e,t=2)=>{if(typeof e=="string")return e;try{return typeof e=="object"?Wr(e,{space:t}):Q(e,{space:t})}catch{return String(e)}},zE={toJSON(){return Ve(this)},[be](){return this.toJSON()},toString(){return Q(this.toJSON())}},ea=class{[be](){return this.toJSON()}toString(){return Q(this.toJSON())}};var wt=class e{called=!1;self;constructor(t){this.self=t}next(t){return this.called?{value:t,done:!0}:(this.called=!0,{value:this.self,done:!1})}[Symbol.iterator](){return new e(this.self)}},lm=()=>{let e="~effect/Utils/internal",t={[e]:o=>o()},r={[e]:o=>{try{return o()}finally{}}};return t[e](()=>new Error().stack)?.includes(e)===!0?t[e]:r[e]},_=lm();var Ze="~effect/Effect",ar="~effect/Exit",dm={_A:C,_E:C,_R:C},oa=`${Ze}/identifier`,O=`${Ze}/args`,Z=`${Ze}/evaluate`,ce=`${Ze}/successCont`,Oe=`${Ze}/failureCont`,It=`${Ze}/ensureCont`,zt=Symbol.for("effect/Effect/Yield"),$e={pipe(){return U(this,arguments)},toJSON(){return{...this}},toString(){return Q(this.toJSON(),{ignoreToString:!0,space:2})},[be](){return this.toJSON()}},sa={[D](){return ts(this,Object.keys(this))},[P](e){let t=Object.keys(this),r=Object.keys(e);if(t.length!==r.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!==r[n]||!B(this[t[n]],e[t[n]]))return!1;return!0}},mm={[Ze]:dm,...$e,[Symbol.iterator](){return new wt(this)},toJSON(){return{_id:"Effect",op:this[oa],...O in this?{args:this[O]}:void 0}}},y=e=>b(e,Ze),xm=e=>b(e,ar),zr="~effect/Cause",qn="~effect/Cause/Reason",Hr=e=>b(e,zr);var Je=class{[zr];reasons;constructor(t){this[zr]=zr,this.reasons=t}pipe(){return U(this,arguments)}toJSON(){return{_id:"Cause",failures:this.reasons.map(t=>t.toJSON())}}toString(){return`Cause(${Q(this.reasons)})`}[be](){return this.toJSON()}[P](t){return Hr(t)&&this.reasons.length===t.reasons.length&&this.reasons.every((r,n)=>B(r,t.reasons[n]))}[D](){return De(this.reasons)}},na=new WeakMap,ur=class{[qn];annotations;_tag;constructor(t,r,n){if(this[qn]=qn,this._tag=t,r!==Br&&typeof n=="object"&&n!==null&&r.size>0){let o=na.get(n);o&&(r=new Map([...o,...r])),na.set(n,r)}this.annotations=r}annotate(t,r){if(t.mapUnsafe.size===0)return this;let n=new Map(this.annotations);t.mapUnsafe.forEach((s,i)=>{r?.overwrite!==!0&&n.has(i)||n.set(i,s)});let o=Object.assign(Object.create(Object.getPrototypeOf(this)),this);return o.annotations=n,o}pipe(){return U(this,arguments)}toString(){return Q(this)}[be](){return this.toString()}},Br=new Map,jr=class extends ur{error;constructor(t,r=Br){super("Fail",r,t),this.error=t}toString(){return`Fail(${Q(this.error)})`}toJSON(){return{_tag:"Fail",error:this.error}}[P](t){return Jr(t)&&B(this.error,t.error)&&B(this.annotations,t.annotations)}[D](){return W(z(this._tag))(W(R(this.error))(R(this.annotations)))}},Ot=e=>new Je(e),us=new Je([]),ia=e=>new Je([new jr(e)]),Wn=class extends ur{defect;constructor(t,r=Br){super("Die",r,t),this.defect=t}toString(){return`Die(${Q(this.defect)})`}toJSON(){return{_tag:"Die",defect:this.defect}}[P](t){return Kr(t)&&B(this.defect,t.defect)&&B(this.annotations,t.annotations)}[D](){return W(z(this._tag))(W(R(this.defect))(R(this.annotations)))}},ca=e=>new Je([new Wn(e)]),Vr=c(e=>Hr(e[0]),(e,t,r)=>t.mapUnsafe.size===0?e:new Je(e.reasons.map(n=>n.annotate(t,r)))),Jr=e=>e._tag==="Fail",Kr=e=>e._tag==="Die",jn=e=>e._tag==="Interrupt";function hm(e){return ut("Effect.evaluate: Not implemented")}var at=e=>({...mm,[oa]:e.op,[Z]:e[Z]??hm,[ce]:e[ce],[Oe]:e[Oe],[It]:e[It]}),_e=e=>{let t=at(e);return function(){let r=Object.create(t);return r[O]=e.single===!1?arguments:arguments[0],r}},aa=e=>{let t={[ar]:ar,_tag:e.op,get[e.prop](){return this[O]},...at(e),toString(){return`${e.op}(${Q(this[O])})`},toJSON(){return{_id:"Exit",_tag:e.op,[e.prop]:this[O]}},[P](r){return xm(r)&&r._tag===this._tag&&B(this[O],r[O])},[D](){return W(z(e.op),R(this[O]))}};return function(r){let n=Object.create(t);return n[O]=r,n}},te=aa({op:"Success",prop:"value",[Z](e){let t=e.getCont(ce);return t?t[ce](this[O],e,this):e.yieldWith(this)}}),Hn={key:"effect/Cause/StackTrace"},fs={key:"effect/Cause/InterruptorStackTrace"},qe=aa({op:"Failure",prop:"cause",[Z](e){let t=this[O],r=!1;e.currentStackFrame&&(t=Vr(t,{mapUnsafe:new Map([[Hn.key,e.currentStackFrame]])}),r=!0);let n=e.getCont(Oe);for(;e.interruptible&&e._interruptedCause&&n;)n=e.getCont(Oe);return n?n[Oe](t,e,r?void 0:this):e.yieldWith(r?qe(t):this)}}),_t=e=>qe(ia(e)),ut=e=>qe(ca(e)),v=_e({op:"WithFiber",[Z](e){return this[O](e)}}),gm=function(){class e extends globalThis.Error{}let t=at({op:"YieldableError",[Z](){return _t(this)}});return delete t.toString,Object.assign(e.prototype,t),e}(),ua=function(){let e=Symbol.for("effect/Data/Error/plainArgs");return class extends gm{constructor(r){super(r?.message,r?.cause?{cause:r.cause}:void 0),r&&(Jc(this,r),Object.defineProperty(this,e,{value:r,enumerable:!1}))}toJSON(){return{...this[e],...this}}}}(),ft=e=>{class t extends ua{_tag=e}return t.prototype.name=e,t},zn="~effect/Cause/NoSuchElementError",ls=e=>b(e,zn),Ke=class extends ft("NoSuchElementError"){[zn]=zn;constructor(t){super({message:t})}},fr="~effect/Cause/Done",Zr=e=>b(e,fr),fa={[fr]:fr,_tag:"Done",value:void 0},la=e=>e===void 0?fa:{[fr]:fr,_tag:"Done",value:e},ym=_t(fa),pa=e=>e===void 0?ym:_t(la(e));var da="~effect/data/Option",ma={[da]:{_A:e=>e},...$e,[Symbol.iterator](){return new wt(this)}},bm=Object.defineProperty(Object.assign(Object.create(ma),{_tag:"Some",_op:"Some",[P](e){return Bn(e)&&ps(e)&&B(this.value,e.value)},[D](){return W(R(this._tag))(R(this.value))},toString(){return`some(${Q(this.value)})`},toJSON(){return{_id:"Option",_tag:this._tag,value:Ve(this.value)}}}),"valueOrUndefined",{get(){return this.value}}),Sm=R("None"),Em=Object.assign(Object.create(ma),{_tag:"None",_op:"None",valueOrUndefined:void 0,[P](e){return Bn(e)&&Gr(e)},[D](){return Sm},toString(){return"none()"},toJSON(){return{_id:"Option",_tag:this._tag}}}),Bn=e=>b(e,da),Gr=e=>e._tag==="None",ps=e=>e._tag==="Some",ds=Object.create(Em),ms=e=>{let t=Object.create(bm);return t.value=e,t};var ha="~effect/data/Result",ga={[ha]:{_A:e=>e,_E:e=>e},...$e,[Symbol.iterator](){return new wt(this)}},vm=Object.assign(Object.create(ga),{_tag:"Success",_op:"Success",[P](e){return xs(e)&&gs(e)&&B(this.success,e.success)},[D](){return W(R(this._tag))(R(this.success))},toString(){return`success(${Q(this.success)})`},toJSON(){return{_id:"Result",_tag:this._tag,value:Ve(this.success)}}}),Tm=Object.assign(Object.create(ga),{_tag:"Failure",_op:"Failure",[P](e){return xs(e)&&hs(e)&&B(this.failure,e.failure)},[D](){return W(R(this._tag))(R(this.failure))},toString(){return`failure(${Q(this.failure)})`},toJSON(){return{_id:"Result",_tag:this._tag,failure:Ve(this.failure)}}}),xs=e=>b(e,ha),hs=e=>e._tag==="Failure",gs=e=>e._tag==="Success",ys=e=>{let t=Object.create(Tm);return t.failure=e,t},bs=e=>{let t=Object.create(vm);return t.success=e,t};var ya=c(2,(e,t)=>Gr(e)?ys(t()):bs(e.value));function Vn(e){return(t,r)=>t===r?0:e(t,r)}var Jn=Vn((e,t)=>globalThis.Number.isNaN(e)&&globalThis.Number.isNaN(t)?0:globalThis.Number.isNaN(e)?-1:globalThis.Number.isNaN(t)?1:e<t?-1:1);var ba=c(2,(e,t)=>Vn((r,n)=>e(t(r),t(n))));var Kn=e=>c(2,(t,r)=>e(t,r)===-1),pr=e=>c(2,(t,r)=>e(t,r)===1),Ss=e=>c(2,(t,r)=>e(t,r)!==1),Es=e=>c(2,(t,r)=>e(t,r)!==-1),Zn=e=>c(2,(t,r)=>t===r||e(t,r)<1?t:r),Gn=e=>c(2,(t,r)=>t===r||e(t,r)>-1?t:r),vs=e=>c(2,(t,r)=>Zn(e)(r.maximum,Gn(e)(r.minimum,t))),Ts=e=>c(2,(t,r)=>!Kn(e)(t,r.minimum)&&!pr(e)(t,r.maximum));var V=()=>ds,J=ms,Sa=Bn,jt=Gr,Ea=ps;var wm=c(2,(e,t)=>jt(e)?t():e.value);var va=e=>e===void 0?V():J(e);var dr=wm(Be),Yr=e=>(...t)=>{try{return J(e(...t))}catch{return V()}};var G=bs,j=ys;var Ta=ya;var K=hs,Ht=gs;var Ca=c(2,(e,t)=>Ht(e)?G(t(e.success)):e),Cs=c(2,(e,{onFailure:t,onSuccess:r})=>K(e)?t(e.failure):r(e.success));var ka=Cs({onFailure:C,onSuccess:C});var wa=e=>{if(Symbol.iterator in e){let r=[];for(let n of e){if(K(n))return n;r.push(n.success)}return G(r)}let t={};for(let r of Object.keys(e)){let n=e[r];if(K(n))return n;ye(t,r,n.success)}return G(t)};var Ia=c(2,(e,t)=>({[Symbol.iterator](){let r=e[Symbol.iterator](),n=0;return{next(){let o=r.next();for(;!o.done;){if(t(o.value,n++))return{done:!1,value:o.value};o=r.next()}return{done:!0,value:void 0}}}}}));var Xn=globalThis.Array;var H=e=>Xn.isArray(e)?e:Xn.from(e);var Im=c(2,(e,t)=>H(e).concat(H(t)));var xv=Xn.isArray;var Ra=cs,_a=cs;var Ma=c(2,(e,t)=>{let r=Xn.from(e);return r.sort(t),r});var Om=(e,t)=>{let r=R(t),n=e.get(r);if(n===void 0)return e.set(r,[t]),!0;for(let o of n)if(B(o,t))return!1;return n.push(t),!0};var Aa=c(2,(e,t)=>{let r=H(e),n=H(t);return _a(r)?_a(n)?_m(Im(r,n)):r:n});var Xr=()=>[];var Na=c(2,(e,t)=>{let r=[],n=[],o=0;for(let s of e){let i=t(s,o++);Ht(i)?n.push(i.success):r.push(i.failure)}return[r,n]});var _m=e=>{let t=H(e);if(t.length<2)return[...t];let r=new Map,n=[];for(let o of t)Om(r,o)&&n.push(o);return n};var Fa=e=>at({op:e.label,[Z]:e.evaluate});var Da="~effect/Context/Service",lt=function(){function e(){}let t=e;Object.setPrototypeOf(t,Rm);let r=(n,o)=>(t.key=n,o?.defaultValue&&(t[Is]=Is,t.defaultValue=o.defaultValue),o?.make&&(t.make=o.make),o?.fiberCached&&Pa.add(n),t);return arguments.length>0?r(arguments[0],arguments[1]):r},Rm={[Da]:Da,...Fa({label:"Service",evaluate(e){return te(Se(e.context,this))}}),toJSON(){return{_id:"Service",key:this.key}},of(e){return e},context(e){return eo(this,e)},use(e){return v(t=>e(Se(t.context,this)))},useSync(e){return v(t=>te(e(Se(t.context,this))))}},Pa=new Set,Is="~effect/Context/Reference",La="~effect/Context",Mm=8,Am=8,Os=(e,t,r,n)=>{let o=Object.create(Fm);return o.cacheRoot=e??o,o.base=t,o.overlay=r,o.depth=n,o._flat=void 0,o.baseHits=0,o},$a=(e,t)=>{t&&($a(e,t.parent),e.set(t.key,t.value))},qa=e=>{if(e._flat)return e._flat;if(!e.overlay)return e._flat=e.base;let t=new Map(e.base);return $a(t,e.overlay),e._flat=t},Nm=(e,t)=>{let r=new Map(e.mapUnsafe);return t(r),mr(r)},Qn=Symbol(),_s=(e,t)=>{let r=e;for(let o=r.overlay;o;o=o.parent)if(o.key===t)return o.value;let n=r.base.get(t);return n===void 0&&!r.base.has(t)?Qn:(r.overlay&&++r.baseHits>=Am&&(r.base=qa(r),r.overlay=void 0,r.depth=0),n)},mr=e=>Os(void 0,e,void 0,0),Fm={get mapUnsafe(){return qa(this)},...$e,[La]:{_Services:e=>e},toJSON(){return{_id:"Context",services:Array.from(this.mapUnsafe).map(([e,t])=>({key:e,value:t}))}},[P](e){if(!Rs(e))return!1;let t=this.mapUnsafe,r=e.mapUnsafe;if(t.size!==r.size)return!1;for(let[n,o]of t)if(!r.has(n)||!B(o,r.get(n)))return!1;return!0},[D](){return ct(this.mapUnsafe.size)}},Wa=(e,t)=>e.cacheRoot===t.cacheRoot,Rs=e=>b(e,La);var za=e=>!!e[Is],Re=()=>Um,Um=mr(new Map),eo=(e,t)=>mr(new Map([[e.key,t]])),Ee=c(3,(e,t,r)=>Dm(e,t.key,r)),Dm=(e,t,r)=>{let n=e,o=Pa.has(t)?void 0:n.cacheRoot;if(n.depth>=Mm){let s=new Map(n.mapUnsafe);return s.set(t,r),Os(o,s,void 0,0)}return Os(o,n.base,{key:t,value:r,parent:n.overlay},n.depth+1)};var to=c(2,(e,t)=>Qr(e,t.key)),Qr=(e,t)=>{let r=_s(e,t);return r===Qn?void 0:r},pt=c(2,(e,t)=>{let r=_s(e,t.key);if(r===Qn){if(za(t))return ja(t);throw Pm(t)}return r}),Se=pt,ws="~effect/Context/defaultValue",ja=e=>ws in e?e[ws]:e[ws]=e.defaultValue(),Pm=e=>{let t=new Error(`Service not found${e.key?`: ${String(e.key)}`:""}`);if(t.stack){let r=t.stack.split(`
|
|
9
|
+
`);r.splice(1,3),t.stack=r.join(`
|
|
10
|
+
`)}return t},Ms=c(2,(e,t)=>{let r=_s(e,t.key);return r!==Qn?J(r):za(t)?J(ja(t)):V()}),ro=c(2,(e,t)=>e.mapUnsafe.size===0?t:t.mapUnsafe.size===0?e:Nm(e,r=>t.mapUnsafe.forEach((n,o)=>r.set(o,n)))),Ha=(...e)=>{let t=new Map;for(let r=0;r<e.length;r++)e[r].mapUnsafe.forEach((n,o)=>{t.set(o,n)});return mr(t)};var M=lt;var oe={};nr(oe,{CombinerMax:()=>lx,CombinerMin:()=>px,Equivalence:()=>cu,Order:()=>ze,ReducerSum:()=>fx,abs:()=>tu,between:()=>rx,clamp:()=>nx,days:()=>su,divide:()=>ox,divideUnsafe:()=>sx,equals:()=>au,format:()=>fu,fromInput:()=>Wm,fromInputUnsafe:()=>q,hours:()=>ou,infinity:()=>re,isDuration:()=>Xa,isFinite:()=>Bm,isGreaterThan:()=>ax,isGreaterThanOrEqualTo:()=>ux,isLessThan:()=>cx,isLessThanOrEqualTo:()=>Ds,isNegative:()=>eu,isPositive:()=>Vm,isZero:()=>Qa,match:()=>Ge,matchPair:()=>tn,max:()=>Fs,micros:()=>Km,millis:()=>Te,min:()=>Ns,minutes:()=>nu,nanos:()=>Mt,negate:()=>Jm,negativeInfinity:()=>pe,parts:()=>uu,seconds:()=>ru,subtract:()=>Us,sum:()=>ao,times:()=>ix,toDays:()=>Xm,toHours:()=>Ym,toHrTime:()=>tx,toMillis:()=>We,toMinutes:()=>Gm,toNanos:()=>ex,toNanosUnsafe:()=>en,toSeconds:()=>Zm,toWeeks:()=>Qm,weeks:()=>iu,zero:()=>L});var oo="~effect/time/Duration",Me=BigInt(0),so=BigInt(1),Lm=BigInt(2),$m=BigInt(10),Ba=BigInt(24),no=BigInt(60),io=BigInt(1e3),Va=BigInt(1e6),Ja=BigInt(1e9),co=e=>BigInt(e<0?Math.ceil(e-.5):Math.floor(e+.5)),As=e=>co(e*1e6),Ka=(e,t)=>{let r=e.indexOf(".");if(r===-1)return BigInt(e)*t;let n=e[0]==="-",o=e.slice(r+1),s=$m**BigInt(o.length),i=(BigInt(e.slice(n?1:0,r))*s+BigInt(o))*t,a=i/s+(i%s*Lm>=s?so:Me);return n?-a:a},Za=e=>{let t=e<Me?-so:so,r=e<Me?-e:e;return[Number(t*(r/Ja)),Number(t*(r%Ja))]},qm=/^(-?\d+(?:\.\d+)?)\s+(nanos?|micros?|millis?|seconds?|minutes?|hours?|days?|weeks?)$/,q=e=>{switch(typeof e){case"number":return Te(e);case"bigint":return Mt(e);case"string":{if(e==="Infinity")return re;if(e==="-Infinity")return pe;let t=qm.exec(e);if(!t)break;let[r,n,o]=t;if(o==="nano"||o==="nanos")return Mt(Ka(n,so));if(o==="micro"||o==="micros")return Mt(Ka(n,io));let s=Number(n);switch(o){case"milli":case"millis":return Te(s);case"second":case"seconds":return ru(s);case"minute":case"minutes":return nu(s);case"hour":case"hours":return ou(s);case"day":case"days":return su(s);case"week":case"weeks":return iu(s)}break}case"object":{if(e===null)break;if(oo in e)return e;if(Array.isArray(e))return e.length!==2||!e.every(Uc)?Ga(e):Number.isNaN(e[0])||Number.isNaN(e[1])?L:e[0]===-1/0||e[1]===-1/0?pe:e[0]===1/0||e[1]===1/0?re:F(co(e[0]*1e9+e[1]));let t=e,r=0;return t.weeks&&(r+=t.weeks*6048e5),t.days&&(r+=t.days*864e5),t.hours&&(r+=t.hours*36e5),t.minutes&&(r+=t.minutes*6e4),t.seconds&&(r+=t.seconds*1e3),t.milliseconds&&(r+=t.milliseconds),!t.microseconds&&!t.nanoseconds?F(r):F(co(r*1e6+(t.microseconds??0)*1e3+(t.nanoseconds??0)))}}return Ga(e)},Ga=e=>{throw new Error(`Invalid Input: ${e}`)},Wm=Yr(q),Ya={_tag:"Millis",millis:0},zm={_tag:"Infinity"},jm={_tag:"NegativeInfinity"},Hm={[oo]:oo,[D](){switch(this.value._tag){case"Millis":{let e=this.value.millis*1e6;return Number.isFinite(e)?R(co(e)):ct(this.value.millis)}case"Nanos":return R(this.value.nanos);default:return rs(this.value)}},[P](e){return Xa(e)&&au(this,e)},toString(){switch(this.value._tag){case"Infinity":return"Infinity";case"NegativeInfinity":return"-Infinity";case"Nanos":return`${this.value.nanos} nanos`;case"Millis":return`${this.value.millis} millis`}},toJSON(){switch(this.value._tag){case"Millis":return{_id:"Duration",_tag:"Millis",millis:this.value.millis};case"Nanos":return{_id:"Duration",_tag:"Nanos",nanos:String(this.value.nanos)};case"Infinity":return{_id:"Duration",_tag:"Infinity"};case"NegativeInfinity":return{_id:"Duration",_tag:"NegativeInfinity"}}},[be](){return this.toJSON()},pipe(){return U(this,arguments)}},F=e=>{let t=Object.create(Hm);return typeof e=="number"?isNaN(e)||e===0||Object.is(e,-0)?t.value=Ya:Number.isFinite(e)?Number.isInteger(e)?t.value={_tag:"Millis",millis:e}:t.value={_tag:"Nanos",nanos:As(e)}:t.value=e>0?zm:jm:e===Me?t.value=Ya:t.value={_tag:"Nanos",nanos:e},t},Xa=e=>b(e,oo),Bm=e=>e.value._tag!=="Infinity"&&e.value._tag!=="NegativeInfinity",Qa=e=>{switch(e.value._tag){case"Millis":return e.value.millis===0;case"Nanos":return e.value.nanos===Me;case"Infinity":case"NegativeInfinity":return!1}},eu=e=>{switch(e.value._tag){case"Millis":return e.value.millis<0;case"Nanos":return e.value.nanos<Me;case"NegativeInfinity":return!0;case"Infinity":return!1}},Vm=e=>{switch(e.value._tag){case"Millis":return e.value.millis>0;case"Nanos":return e.value.nanos>Me;case"Infinity":return!0;case"NegativeInfinity":return!1}},tu=e=>{switch(e.value._tag){case"Infinity":case"NegativeInfinity":return re;case"Millis":return e.value.millis<0?F(-e.value.millis):e;case"Nanos":return e.value.nanos<Me?F(-e.value.nanos):e}},Jm=e=>{switch(e.value._tag){case"Infinity":return pe;case"NegativeInfinity":return re;case"Millis":return e.value.millis===0?e:F(-e.value.millis);case"Nanos":return e.value.nanos===Me?e:F(-e.value.nanos)}},L=F(0),re=F(1/0),pe=F(-1/0),Mt=e=>F(e),Km=e=>F(e*io),Te=e=>F(e),ru=e=>F(e*1e3),nu=e=>F(e*6e4),ou=e=>F(e*36e5),su=e=>F(e*864e5),iu=e=>F(e*6048e5),We=e=>Ge(q(e),{onMillis:C,onNanos:t=>Number(t)/1e6,onInfinity:()=>1/0,onNegativeInfinity:()=>-1/0}),Zm=e=>Ge(q(e),{onMillis:t=>t/1e3,onNanos:t=>Number(t)/1e9,onInfinity:()=>1/0,onNegativeInfinity:()=>-1/0}),Gm=e=>Ge(q(e),{onMillis:t=>t/6e4,onNanos:t=>Number(t)/6e10,onInfinity:()=>1/0,onNegativeInfinity:()=>-1/0}),Ym=e=>Ge(q(e),{onMillis:t=>t/36e5,onNanos:t=>Number(t)/36e11,onInfinity:()=>1/0,onNegativeInfinity:()=>-1/0}),Xm=e=>Ge(q(e),{onMillis:t=>t/864e5,onNanos:t=>Number(t)/864e11,onInfinity:()=>1/0,onNegativeInfinity:()=>-1/0}),Qm=e=>Ge(q(e),{onMillis:t=>t/6048e5,onNanos:t=>Number(t)/6048e11,onInfinity:()=>1/0,onNegativeInfinity:()=>-1/0}),en=e=>{let t=q(e);switch(t.value._tag){case"Infinity":case"NegativeInfinity":throw new Error("Cannot convert infinite duration to nanos");case"Nanos":return t.value.nanos;case"Millis":return As(t.value.millis)}},ex=Yr(en),tx=e=>{let t=q(e);switch(t.value._tag){case"Infinity":return[1/0,0];case"NegativeInfinity":return[-1/0,0];case"Nanos":return Za(t.value.nanos);case"Millis":return Za(As(t.value.millis))}},Ge=c(2,(e,t)=>{switch(e.value._tag){case"Millis":return t.onMillis(e.value.millis);case"Nanos":return t.onNanos(e.value.nanos);case"Infinity":return t.onInfinity();case"NegativeInfinity":return(t.onNegativeInfinity??t.onInfinity)()}}),tn=c(3,(e,t,r)=>e.value._tag==="Infinity"||e.value._tag==="NegativeInfinity"||t.value._tag==="Infinity"||t.value._tag==="NegativeInfinity"?r.onInfinity(e,t):e.value._tag==="Millis"?t.value._tag==="Millis"?r.onMillis(e.value.millis,t.value.millis):r.onNanos(en(e),t.value.nanos):r.onNanos(e.value.nanos,en(t))),ze=Vn((e,t)=>tn(e,t,{onMillis:(r,n)=>r<n?-1:r>n?1:0,onNanos:(r,n)=>r<n?-1:r>n?1:0,onInfinity:(r,n)=>r.value._tag===n.value._tag?0:r.value._tag==="Infinity"?1:r.value._tag==="NegativeInfinity"||n.value._tag==="Infinity"?-1:1})),rx=Ts(ze),cu=(e,t)=>tn(e,t,{onMillis:(r,n)=>r===n,onNanos:(r,n)=>r===n,onInfinity:(r,n)=>r.value._tag===n.value._tag}),Ns=Zn(ze),Fs=Gn(ze),nx=vs(ze),ox=c(2,(e,t)=>Number.isFinite(t)?t===0||Object.is(t,-0)?V():Ge(e,{onMillis:r=>J(F(r/t)),onNanos:r=>{try{return J(F(r/BigInt(t)))}catch{return V()}},onInfinity:()=>J(t>0?re:pe),onNegativeInfinity:()=>J(t>0?pe:re)}):V()),sx=c(2,(e,t)=>Number.isFinite(t)?Ge(e,{onMillis:r=>F(r/t),onNanos:r=>{if(Object.is(t,0)||Object.is(t,-0)){if(r===Me)return L;let n=r>Me,o=Object.is(t,0);return n===o?re:pe}try{return F(r/BigInt(t))}catch{return L}},onInfinity:()=>t>0?re:t<0?pe:L,onNegativeInfinity:()=>t>0?pe:t<0?re:L}):L),ix=c(2,(e,t)=>Ge(e,{onMillis:r=>F(r*t),onNanos:r=>F(r*BigInt(t)),onInfinity:()=>t>0?re:t<0?pe:L,onNegativeInfinity:()=>t>0?pe:t<0?re:L})),Us=c(2,(e,t)=>tn(e,t,{onMillis:(r,n)=>F(r-n),onNanos:(r,n)=>F(r-n),onInfinity:(r,n)=>{let o=r.value._tag,s=n.value._tag;return o==="Infinity"?s==="Infinity"?L:re:o==="NegativeInfinity"?s==="NegativeInfinity"?L:pe:s==="Infinity"?pe:re}})),ao=c(2,(e,t)=>tn(e,t,{onMillis:(r,n)=>F(r+n),onNanos:(r,n)=>F(r+n),onInfinity:(r,n)=>{let o=r.value._tag,s=n.value._tag;return o==="Infinity"&&s==="NegativeInfinity"||o==="NegativeInfinity"&&s==="Infinity"?L:o==="Infinity"||s==="Infinity"?re:o==="NegativeInfinity"||s==="NegativeInfinity"?pe:L}})),cx=Kn(ze),Ds=Ss(ze),ax=pr(ze),ux=Es(ze),au=c(2,(e,t)=>cu(e,t)),uu=e=>{if(e.value._tag==="Infinity")return{days:1/0,hours:1/0,minutes:1/0,seconds:1/0,millis:1/0,nanos:1/0};if(e.value._tag==="NegativeInfinity")return{days:-1/0,hours:-1/0,minutes:-1/0,seconds:-1/0,millis:-1/0,nanos:-1/0};let t=en(e),r=t<Me,n=r?-t:t,o=n/Va,s=o/io,i=s/no,a=i/no,u=a/Ba,f=r?-1:1;return{days:f*Number(u),hours:f*Number(a%Ba),minutes:f*Number(i%no),seconds:f*Number(s%no),millis:f*Number(o%io),nanos:f*Number(n%Va)}},fu=e=>{if(e.value._tag==="Infinity")return"Infinity";if(e.value._tag==="NegativeInfinity")return"-Infinity";if(Qa(e))return"0";if(eu(e))return"-"+fu(tu(e));let t=uu(e),r=[];return t.days!==0&&r.push(`${t.days}d`),t.hours!==0&&r.push(`${t.hours}h`),t.minutes!==0&&r.push(`${t.minutes}m`),t.seconds!==0&&r.push(`${t.seconds}s`),t.millis!==0&&r.push(`${t.millis}ms`),t.nanos!==0&&r.push(`${t.nanos}ns`),r.join(" ")},fx=$c(ao,L),lx=Gc(ze),px=Zc(ze);var nn=M("effect/Scheduler",{fiberCached:!0,defaultValue:()=>new rn}),lu="setImmediate"in globalThis?e=>{let t=globalThis.setImmediate(e);return()=>globalThis.clearImmediate(t)}:e=>{let t=setTimeout(e,0);return()=>clearTimeout(t)},dx=e=>{let t=!1;return Promise.resolve().then(()=>{t||e()}),()=>{t=!0}},Ps=class{buckets=[];scheduleTask(t,r){let n=this.buckets,o=n.length,s,i=0;for(;i<o&&!(n[i][0]>r);i++)s=n[i];s&&s[0]===r?s[1].push(t):i===o?n.push([r,[t]]):n.splice(i,0,[r,[t]])}drain(){let t=this.buckets;return this.buckets=[],t}},rn=class{executionMode;setImmediate;constructor(t="async",r){this.executionMode=t,this.setImmediate=r??(t==="sync"?dx:lu)}shouldYield(t){return t.currentOpCount>=t.maxOpsBeforeYield}makeDispatcher(){return new Ls(this.setImmediate)}},Ls=class{tasks=new Ps;running=void 0;setImmediate;constructor(t=lu){this.setImmediate=t}scheduleTask(t,r){this.tasks.scheduleTask(t,r),this.running===void 0&&(this.running=this.setImmediate(this.afterScheduled))}afterScheduled=()=>{this.running=void 0,this.runTasks()};runTasks(){let t=this.tasks.drain();for(let r=0;r<t.length;r++){let n=t[r][1];for(let o=0;o<n.length;o++)n[o]()}}flush(){for(;this.tasks.buckets.length>0;)this.running!==void 0&&(this.running(),this.running=void 0),this.runTasks()}},pu=M("effect/Scheduler/MaxOpsBeforeYield",{fiberCached:!0,defaultValue:()=>2048}),du=M("effect/Scheduler/PreventSchedulerYield",{fiberCached:!0,defaultValue:()=>!1});var uo=ft;var xu="~effect/encoding/EncodingError",hu=class extends uo("EncodingError"){[xu]=xu};var qs=e=>{let t="";for(let r=e>>>3;r>0;r--){let n=Math.random()*4294967296>>>0;t+=on[n>>>24]+on[n>>>16&255]+on[n>>>8&255]+on[n&255]}return t};var on=[];for(let e=0;e<256;e++)on.push(e.toString(16).padStart(2,"0"));var zs="effect/Tracer/ParentSpan",sn=class extends lt()(zs,{fiberCached:!0}){},mx=e=>e;var fo=M("effect/Tracer/DisablePropagation",{defaultValue:Un}),yu=M("effect/Tracer/CurrentTraceLevel",{defaultValue:()=>"Info"}),bu=M("effect/Tracer/MinimumTraceLevel",{defaultValue:()=>"All"}),js="effect/Tracer",lo=M(js,{fiberCached:!0,defaultValue:()=>mx({span:e=>new Ws(e)})}),Ws=class{_tag="Span";spanId;traceId="native";sampled;name;parent;annotations;links;startTime;kind;status;attributes;events=[];constructor(t){this.name=t.name,this.parent=t.parent,this.annotations=t.annotations,this.links=t.links,this.startTime=t.startTime,this.kind=t.kind,this.sampled=t.sampled,this.status={_tag:"Started",startTime:t.startTime},this.attributes=new Map,this.traceId=dr(t.parent)?.traceId??qs(32),this.spanId=qs(16)}end(t,r){this.status={_tag:"Ended",endTime:t,exit:r,startTime:this.status.startTime}}attribute(t,r){this.attributes.set(t,r)}event(t,r,n){this.events.push([t,r,n??{}])}addLinks(t){this.links.push(...t)}};var Eu="effect/observability/Metric/FiberRuntimeMetricsKey";var vu=M("effect/ErrorReporter/CurrentErrorReporters",{defaultValue:()=>new Set}),cn=M("effect/References/CurrentStackFrame",{fiberCached:!0,defaultValue:Be}),po=M("effect/References/TracerEnabled",{defaultValue:kt}),xr=M("effect/References/TracerTimingEnabled",{defaultValue:kt}),an=M("effect/References/TracerSpanAnnotations",{defaultValue:()=>({})}),un=M("effect/References/TracerSpanLinks",{defaultValue:()=>[]}),dt=M("effect/References/CurrentLogAnnotations",{defaultValue:()=>({})}),Hs=M("effect/References/CurrentLogLevel",{fiberCached:!0,defaultValue:()=>"Info"}),Bs=M("effect/References/MinimumLogLevel",{fiberCached:!0,defaultValue:()=>"Info"});var mo=M("effect/References/CurrentLogSpans",{defaultValue:()=>[]});var gx=()=>{let e=Object.getOwnPropertyDescriptor(Error,"stackTraceLimit");return e===void 0?Object.isExtensible(Error):Object.hasOwn(e,"writable")?e.writable===!0:e.set!==void 0},yx=gx(),hr=()=>Error.stackTraceLimit,Ye=e=>{yx&&(Error.stackTraceLimit=e)};var xo=e=>{if(e?.captureStackTrace===!1)return e;if(e?.captureStackTrace!==void 0&&typeof e.captureStackTrace!="boolean")return e;let t=hr();Ye(3);let r=new Error;return Ye(t),{...e,captureStackTrace:bx(()=>r.stack)}},Vs=e=>t=>{let r;return()=>{if(r!==void 0)return r;let n=t();if(!n)return;let o=n.split(`
|
|
11
|
+
`);if(o[e]!==void 0)return r=o[e].trim(),r}},bx=Vs(3);var Ks=class extends ur{fiberId;constructor(t,r=Br){super("Interrupt",r,"Interrupted"),this.fiberId=t}toString(){return`Interrupt(${this.fiberId})`}toJSON(){return{_tag:"Interrupt",fiberId:this.fiberId}}[P](t){return jn(t)&&this.fiberId===t.fiberId&&this.annotations===t.annotations}[D](){return W(z(`${this._tag}:${this.fiberId}`))(Pn(this.annotations))}};var So=e=>new Je([new Ks(e)]);var _u=e=>{let t=e.reasons.find(Jr);return t?G(t):j(e)},xt=e=>{for(let t=0;t<e.reasons.length;t++){let r=e.reasons[t];if(r._tag==="Fail")return G(r.error)}return j(e)};var Ru=e=>e.reasons.some(Kr);var ui=e=>{let t=e.reasons.find(Kr);return t?G(t.defect):j(e)},Mu=e=>e.reasons.some(jn);var Au=e=>{let t;for(let r=0;r<e.reasons.length;r++){let n=e.reasons[r];n._tag==="Interrupt"&&(t??=new Set,n.fiberId!==void 0&&t.add(n.fiberId))}return t?G(t):j(e)};var fi=c(2,(e,t)=>{if(e.reasons.length===0)return t;if(t.reasons.length===0)return e;let r=new Je(Aa(e.reasons,t.reasons));return B(e,r)?e:r});var Sx=e=>{let t={Fail:[],Die:[],Interrupt:[]};for(let r=0;r<e.reasons.length;r++)t[e.reasons[r]._tag].push(e.reasons[r]);return t},li=e=>{let t=Sx(e);return t.Fail.length>0?t.Fail[0].error:t.Die.length>0?t.Die[0].defect:t.Interrupt.length>0?new globalThis.Error("All fibers interrupted without error"):new globalThis.Error("Empty cause")},Nu=(e,t)=>{let r=[],n=[];if(e.reasons.length===0)return r;let o=hr();Ye(1);for(let s of e.reasons){if(s._tag==="Interrupt"){n.push(s);continue}r.push(Zs(s._tag==="Die"?s.defect:s.error,s.annotations,t))}if(r.length===0){let s=new Error("The fiber was interrupted by:");s.name="InterruptCause",s.stack=Cx(s,n);let i=new globalThis.Error("All fibers interrupted without error",{cause:s});i.name="InterruptError",i.stack=`${i.name}: ${i.message}`,r.push(Zs(i,n[0].annotations,t))}return Ye(o),r},Zs=(e,t,r)=>{let n=typeof e,o;if(e&&n==="object"){if(o=new globalThis.Error(Ex(e),{cause:e.cause?Zs(e.cause):void 0}),typeof e.name=="string"&&(o.name=e.name),typeof e.stack=="string")o.stack=Tx(e.stack,o,t);else{let s=`${o.name}: ${o.message}`;o.stack=t?Fu(s,t):s}r?.includeCauseInStack&&(o.stack=Du(o));for(let s of Object.keys(e))s in o||(o[s]=e[s])}else o=new globalThis.Error(e?n==="string"?e:Wr(e):`Unknown error: ${e}`);return o},Ex=e=>{if(typeof e.message=="string")return e.message;if(typeof e.toString=="function"&&e.toString!==Object.prototype.toString&&e.toString!==Array.prototype.toString)try{return e.toString()}catch{}return Wr(e)},vx=/\((.*)\)/g,Tx=(e,t,r)=>{let n=`${t.name}: ${t.message}`,o=(e.startsWith(n)?e.slice(n.length):e).split(`
|
|
12
|
+
`),s=[n];for(let i=1;i<o.length&&!/(?:Generator\.next|~effect\/Effect)/.test(o[i]);i++)s.push(o[i]);return r?Fu(s.join(`
|
|
13
|
+
`),r):s.join(`
|
|
14
|
+
`)},Fu=(e,t)=>{let r=t?.get(Hn.key);return r&&(e=`${e}
|
|
15
|
+
${Uu(r)}`),e},Cx=(e,t)=>{let r=[`${e.name}: ${e.message}`];for(let n of t){let o=n.fiberId!==void 0?`#${n.fiberId}`:"unknown",s=n.annotations.get(fs.key);r.push(` at fiber (${o})`),s&&r.push(Uu(s))}return r.join(`
|
|
16
|
+
`)},Uu=e=>{let t=[],r=e,n=0;for(;r&&n<10;){let o=r.stack();if(o){let s=o.matchAll(vx),i=!1;for(let[,a]of s)i=!0,t.push(` at ${r.name} (${a})`);i||t.push(` at ${r.name} (${o.replace(/^at /,"")})`)}else t.push(` at ${r.name}`);r=r.parent,n++}return t.join(`
|
|
17
|
+
`)},pi=e=>Nu(e).map(Du).join(`
|
|
18
|
+
`),Du=e=>e.cause?`${e.stack} {
|
|
19
|
+
${Pu(e.cause," ")}
|
|
20
|
+
}`:e.stack,Pu=(e,t)=>{let r=e.stack.split(`
|
|
21
|
+
`),n=`${t}[cause]: ${r[0]}`;for(let o=1,s=r.length;o<s;o++)n+=`
|
|
22
|
+
${t}${r[o]}`;return e.cause&&(n+=` {
|
|
23
|
+
${Pu(e.cause,`${t} `)}
|
|
24
|
+
${t}}`),n},fn="~effect/Fiber",kx={_A:C,_E:C},wx={id:0},br=()=>globalThis[cr],ho=class{constructor(t,r=!0){this[fn]=kx,this.setContext(t),this.id=++wx.id,this.currentOpCount=0,this.interruptible=r,this._stack=[],this._observers=[],this._exit=void 0,this._children=void 0,this._interruptedCause=void 0,this._yielded=void 0,this._running=!1,this._deferredInterrupt=!1,this.runtimeMetrics?.recordFiberStart(this.context)}[fn];id;interruptible;currentOpCount;_stack;_observers;_exit;_children;_interruptedCause;_yielded;_running;_deferredInterrupt;context;currentScheduler;currentTracerContext;currentSpan;currentLogLevel;minimumLogLevel;currentStackFrame;runtimeMetrics;maxOpsBeforeYield;currentPreventYield;_dispatcher=void 0;get currentDispatcher(){return this._dispatcher??=this.currentScheduler.makeDispatcher()}getRef(t){return Se(this.context,t)}addObserver(t){return this._exit?(t(this._exit),$t):(this._observers.push(t),()=>{if(this._exit)return;let r=this._observers.indexOf(t);r>=0&&this._observers.splice(r,1)})}interruptUnsafe(t,r){if(this._exit)return;let n=So(t);this.currentStackFrame&&(n=Vr(n,eo(Hn,this.currentStackFrame))),r&&(n=Vr(n,r)),this._interruptedCause=this._interruptedCause?fi(this._interruptedCause,n):n,this.interruptible&&(this._running?this._deferredInterrupt=!0:this.evaluate(A(this._interruptedCause)))}pollUnsafe(){return this._exit}evaluate(t){if(this._exit)return;if(this._yielded!==void 0){let o=this._yielded;this._yielded=void 0,o()}let r=this.runLoop(t);if(r===zt)return;let n=Gs.interruptChildren&&Gs.interruptChildren(this);if(n!==void 0)return this.evaluate(x(n,()=>r));this._exit=r,this.runtimeMetrics?.recordFiberEnd(this.context,this._exit);for(let o=0;o<this._observers.length;o++)this._observers[o](r);this._observers.length=0,this._stack.length=0,this._children=void 0,this.context=Re()}runLoop(t){let r=globalThis[cr];globalThis[cr]=this;let n=this._running;this._running=!0;let o=!1,s=t;this.currentOpCount=0;try{for(;;){if(this._deferredInterrupt&&(this._deferredInterrupt=!1,s=A(this._interruptedCause)),this.currentOpCount++,!o&&!this.currentPreventYield&&this.currentScheduler.shouldYield(this)){o=!0;let i=s;s=x(Er,()=>i)}if(s=this.currentTracerContext?this.currentTracerContext(s,this):s[Z](this),s===zt){let i=this._yielded;if(ar in i)return this._deferredInterrupt=!1,this._yielded=void 0,i;if(this._deferredInterrupt){this._yielded=void 0,i();continue}return zt}}}catch(i){return b(s,Z)?this.runLoop(ut(i)):ut(`Fiber.runLoop: Not a valid effect: ${String(s)}`)}finally{this._running=n,globalThis[cr]=r}}getCont(t){if(this._deferredInterrupt)return this._deferredInterrupt=!1,Ix;for(;;){let r=this._stack.pop();if(!r)return;let n=r[It]&&r[It](this);if(n)return n[t]=n,n;if(r[t])return r}}yieldWith(t){return this._yielded=t,zt}children(){return this._children??=new Set}pipe(){return U(this,arguments)}setContext(t){let r=this.context;if(this.context=t,r!==void 0&&Wa(r,t))return;let n=this.getRef(nn);n!==this.currentScheduler&&(this.currentScheduler=n,this._dispatcher=void 0),this.currentSpan=Qr(t,zs),this.currentLogLevel=this.getRef(Hs),this.minimumLogLevel=this.getRef(Bs),this.currentStackFrame=this.getRef(cn),this.maxOpsBeforeYield=this.getRef(pu),this.currentPreventYield=this.getRef(du),this.runtimeMetrics=Qr(t,Eu);let o=Qr(t,js);this.currentTracerContext=o?o.context:void 0}get currentSpanLocal(){return this.currentSpan?._tag==="Span"?this.currentSpan:void 0}},Ix={[ce](e,t){return A(t._interruptedCause)},[Oe](e,t){return A(t._interruptedCause)}},Gs={interruptChildren:void 0},xn=e=>{if(!e.currentStackFrame)return;let t=new Map;return t.set(fs.key,e.currentStackFrame),mr(t)},Ox=e=>{if(!(e._children===void 0||e._children.size===0))return mt(e._children)},di=e=>{let t=e;return t._exit?m(t._exit):se(r=>t._exit?r(m(t._exit)):E(e.addObserver(n=>r(m(n)))))},Sr=e=>se(t=>{let r=e[Symbol.iterator](),n=[],o;function s(){let i=r.next();for(;!i.done;){if(i.value._exit){n.push(i.value._exit),i=r.next();continue}o=i.value.addObserver(a=>{n.push(a),s()});return}t(m(n))}return s(),E(()=>o?.())}),Lu=e=>{let t=e;return t._exit?t._exit:se(r=>t._exit?r(t._exit):E(e.addObserver(r)))},$u=e=>se(t=>{let r=Array.from(e);if(r.length===0)return t(m(Xr()));let n=new Array(r.length),o=Xr(),s=0,i=!1;for(let a=0;a<r.length&&!i;a++)o.push(r[a].addObserver(u=>{if(s++,u._tag==="Failure")return i=!0,o.forEach(f=>f()),t(u);n[a]=u.value,s===r.length&&t(m(n))}));return E(()=>{i=!0,o.forEach(a=>a())})}),Eo=e=>v(t=>mi(e,t.id)),mi=c(e=>b(e[0],fn),(e,t,r)=>v(n=>{let o=xn(n);return o=o&&r?ro(o,r):o??r,e.interruptUnsafe(t,o),vr(di(e))})),mt=e=>v(t=>{let r=xn(t),n=Xr();for(let o of e)o.interruptUnsafe(t.id,r),n.push(o);return vr(Sr(n))}),qu=c(2,(e,t)=>v(r=>{let n=xn(r),o=Xr();for(let s of e)s.interruptUnsafe(t,n),o.push(s);return vr(Sr(o))})),m=te,A=qe,$=_t,E=_e({op:"Sync",[Z](e){let t=this[O](),r=e.getCont(ce);return r?r[ce](t,e):e.yieldWith(te(t))}}),T=_e({op:"Suspend",[Z](e){return this[O]()}}),xi=c(e=>e.length>=2||Sa(e[0]),(e,t)=>jt(e)?$(t?t():new Ke("Effect.fromOption: Option.none")):m(e.value)),Jt=Cs({onFailure:$,onSuccess:m}),Wu=e=>e==null?$(new Ke):m(e),hi=_e({op:"Yield",[Z](e){let t=!1;return e.currentDispatcher.scheduleTask(()=>{t||e.evaluate(Ae)},this[O]??0),e.yieldWith(()=>{t=!0})}}),Er=hi(0),gi=e=>m(J(e)),hn=m(V()),zu=e=>jt(e)?hn:k(e.value,J),ju=e=>T(()=>A(_(e))),Nt=e=>ut(e),vo=e=>T(()=>$(_(e))),I=m(void 0);var Hu=e=>{let t=typeof e=="function"?e:e.try,r=typeof e=="function"?n=>new mn(n,"An error occurred in Effect.try"):e.catch;return T(()=>{try{return m(_(t))}catch(n){return $(_(()=>r(n)))}})};var yi=e=>bi(function(t,r){_(()=>e(r)).then(n=>t(m(n)),n=>t(Nt(n)))},e.length!==0),Bu=e=>{let t=typeof e=="function"?e:e.try,r=typeof e=="function"?n=>new mn(n,"An error occurred in Effect.tryPromise"):e.catch;return bi(function(n,o){let s=i=>{try{n($(_(()=>r(i))))}catch(a){n(Nt(a))}};try{_(()=>t(o)).then(i=>n(m(i)),s)}catch(i){s(i)}},t.length!==0)},Vu=e=>v(t=>e(t.id)),Ju=v(m),Ku=Vu(m),bi=_e({op:"Async",single:!1,[Z](e){let t=_(()=>this[O][0].bind(e.currentScheduler)),r=!1,n=!1,o=this[O][1]?new AbortController:void 0,s=t(i=>{r||(r=!0,n?e.evaluate(i):n=i)},o?.signal);return n!==!1?n:(n=!0,e._yielded=()=>{r=!0},o===void 0&&s===void 0?zt:(e._stack.push(_x(()=>(r=!0,o?.abort(),s??Ae))),zt))}}),_x=_e({op:"AsyncFinalizer",[It](e){e.interruptible&&(e.interruptible=!1,e._stack.push(Do))},[Oe](e,t){return Mu(e)?x(this[O](),()=>A(e)):A(e)}}),se=e=>bi(e,e.length>=2),To=se($t),Zu=(...e)=>T(()=>gr(e.length===1?e[0]():e[1].call(e[0].self))),Si=(e,...t)=>{let r=t.length===0?function(){return T(()=>gr(e.apply(this,arguments)))}:function(){let n=T(()=>gr(e.apply(this,arguments)));for(let o=0;o<t.length;o++)n=t[o](n,...arguments);return n};return Ei(e.length,r)},Ei=(e,t)=>Object.defineProperty(t,"length",{value:e,configurable:!0}),Tu=Vs(2),Gu=function(){let e=typeof arguments[0]=="string",t=e?arguments[0]:"Effect.fn",r=e?arguments[1]:void 0,n=hr();Ye(2);let o=new globalThis.Error;return Ye(n),e?(s,...i)=>Cu(t,s,o,i,e,r):Cu(t,arguments[0],o,Array.prototype.slice.call(arguments,1),e,r)},Cu=(e,t,r,n,o,s)=>{let i=typeof t=="function"?t:n.shift().bind(t.self);return Ei(i.length,function(...a){let u=T(()=>{let p=i.apply(this,arguments);return y(p)?p:gr(p)});for(let p=0;p<n.length;p++)u=n[p](u,...a);if(!y(u))return u;let f=hr();Ye(2);let d=new globalThis.Error;return Ye(f),ht(o?dn(e,s,p=>ti(u,p)):u,cn,p=>({name:e,stack:Tu(()=>d.stack),parent:{name:`${e} (definition)`,stack:Tu(()=>r.stack),parent:p}}))})},Yu=(e,...t)=>Ei(e.length,t.length===0?function(){return ku(()=>e.apply(this,arguments))}:function(){let r=ku(()=>e.apply(this,arguments));for(let n of t)r=n(r);return r}),ku=e=>{try{let t=e(),r;for(;;){let n=t.next(r);if(n.done)return m(n.value);let o=n.value;if(o&&o._tag==="Success"){r=o.value;continue}else{if(o&&o._tag==="Failure")return n.value;{let s=!0;return T(()=>s?(s=!1,x(n.value,i=>gr(t,i))):T(()=>gr(e())))}}}}catch(t){return Nt(t)}},gr=_e({op:"Iterator",single:!1,[ce](e,t){let r=this[O][0];for(;;){let n=r.next(e);if(n.done)return m(n.value);if(de(n.value)){if(n.value._tag==="Failure")return n.value}else return t._stack.push(this),n.value;e=n.value.value}},[Z](e){return this[ce](this[O][1],e)}}),ue=c(2,(e,t)=>{let r=m(t);return x(e,n=>r)}),Co=e=>k(e,J),Xu=e=>Kt(e,{onFailure:m,onSuccess:$}),Ft=c(2,(e,t)=>x(e,r=>y(t)?t:_(()=>t(r)))),Ut=c(2,(e,t)=>x(e,r=>ue(y(t)?t:_(()=>t(r)),r))),vr=e=>x(e,t=>Ae),Qu=e=>Ce(e,$),vi=(e,t)=>v(r=>se(n=>{let o=H(e),s=o.length,i=0,a=!1,u=new Set,f=[],d=(p,g,l)=>{if(i++,p._tag==="Failure"){f.push(...p.cause.reasons),i>=s&&n(A(Ot(f)));return}let w=!a;a=!0,n(u.size===0?p:x(bt(mt(u)),()=>p)),w&&t?.onWinner&&t.onWinner({fiber:g,index:l,parentFiber:r})};for(let p=0;p<s;p++){let g=Yt(r,o[p],!0,!0,!1);if(u.add(g),g.addObserver(l=>{u.delete(g),d(l,g,p)}),a)break}return mt(u)})),Ti=(e,t)=>v(r=>se(n=>{let o=!1,s=new Set,i=u=>{o=!0,n(s.size===0?u:x(bt(mt(s)),()=>u))},a=0;for(let u of e){if(o)break;let f=a++,d=Yt(r,u,!0,!0,!1);s.add(d),d.addObserver(p=>{s.delete(d);let g=!o;i(p),g&&t?.onWinner&&t.onWinner({fiber:d,index:f,parentFiber:r})})}return mt(s)})),ef=c(e=>y(e[1]),(e,t,r)=>vi([e,t],r)),ko=c(e=>y(e[1]),(e,t,r)=>Ti([e,t],r)),x=c(2,(e,t)=>{let r=Object.create(Rx);return r[O]=e,r[ce]=t.length!==1?n=>t(n):t,r}),Rx=at({op:"OnSuccess",[Z](e){return e._stack.push(this),this[O]}}),tf=c(2,(e,t)=>de(e)?e._tag==="Success"?t.onSuccess(e.value):t.onFailure(e.cause):Xe(e,t)),de=e=>ar in e,rf=c(2,(e,t)=>de(e)?e._tag==="Success"?t(e.value):e:x(e,t)),nf=e=>x(e,C),k=c(2,(e,t)=>x(e,r=>m(_(()=>t(r))))),of=c(2,(e,t)=>de(e)?ff(e,t):k(e,t)),sf=c(2,(e,t)=>de(e)?lf(e,t):Ri(e,t)),cf=c(2,(e,t)=>de(e)?pf(e,t):Mi(e,t)),af=c(2,(e,t)=>{if(de(e)){if(e._tag==="Success")return e;let r=xt(e.cause);return K(r)?e:t(r.success)}return ke(e,t)});var wo=e=>e._tag==="Success";var uf=e=>e._tag==="Failure"?G(e.cause):j(e);var Ae=te(void 0),ff=c(2,(e,t)=>e._tag==="Success"?te(t(e.value)):e),lf=c(2,(e,t)=>{if(e._tag==="Success")return e;let r=xt(e.cause);return K(r)?e:_t(t(r.success))}),pf=c(2,(e,t)=>{if(e._tag==="Success")return te(t.onSuccess(e.value));let r=xt(e.cause);return K(r)?e:_t(t.onFailure(r.success))});var df=e=>{let t=[];for(let r of e)r._tag==="Failure"&&t.push(...r.cause.reasons);return t.length===0?Ae:qe(Ot(t))};var mf=e=>e,xf=e=>v(t=>m(Ms(t.context,e))),Mx=e=>v(t=>xi(Ms(t.context,e))),Tr=c(2,(e,t)=>v(r=>{let n=r.context,o=t(n);return n===o?e:(r.setContext(o),wr(e,()=>{r.setContext(n)}))})),ht=c(3,(e,t,r)=>Tr(e,n=>{let o=pt(n,t),s=r(o);return o===s?n:Ee(n,t,s)})),hf=(e,t,r)=>bt(v(n=>{let o=pt(n.context,e),s=t(o);return n.setContext(Ee(n.context,e,s)),yt(pt(n.context,kr),i=>{let a=pt(n.context,e),u;if(r?.reset===void 0){if(a!==s)return I;u=o}else u=r.reset(o,s,a);return n.setContext(Ee(n.context,e,u)),I})})),Ci=()=>Ax,Ax=v(e=>m(e.context)),Dt=e=>v(t=>e(t.context)),gf=c(2,(e,t)=>Tr(e,ee(t))),gt=c(2,(e,t)=>de(e)?e:Tr(e,ro(t))),me=function(){return arguments.length===1?c(2,(e,t)=>wu(e,arguments[0],t)):c(3,(e,t,r)=>wu(e,t,r)).apply(this,arguments)},wu=(e,t,r)=>Tr(e,Ee(t,r)),Io=c(3,(e,t,r)=>x(r,n=>me(e,t,n))),yf=c(e=>y(e[1]),(e,t,r)=>ki(e,t,(n,o)=>[n,o],r)),ki=c(e=>y(e[1]),(e,t,r,n)=>n?.concurrent?k(Gt([e,t],{concurrency:2}),([o,s])=>_(()=>r(o,s))):x(e,o=>k(t,s=>_(()=>r(o,s))))),bf=c(e=>y(e[0]),(e,t,r)=>Ki(e,t,r?n=>$(r(n)):()=>$(new Ke))),Sf=c(2,(e,t)=>x(t,r=>r?Co(e):hn)),wi=c(2,(e,t)=>Array.from({length:t},()=>e)),Ef=c(e=>y(e[0]),(e,t,r)=>Gt(wi(e,t),r)),Oo=c(e=>y(e[0]),(e,t)=>St({while:kt,body:ee(t?.disableYield?e:x(e,r=>Er)),step:$t})),Ce=c(2,(e,t)=>{let r=Object.create(Nx);return r[O]=e,r[Oe]=t.length!==1?n=>t(n):t,r}),Nx=at({op:"OnFailure",[Z](e){return e._stack.push(this),this[O]}}),Ii=c(3,(e,t,r)=>Ce(e,n=>t(n)?_(()=>r(n)):A(n))),Cr=c(3,(e,t,r)=>Ce(e,n=>{let o=t(n);return K(o)?A(o.failure):_(()=>r(o.success,n))})),ke=c(2,(e,t)=>Cr(e,xt,r=>t(r))),vf=e=>Kt(e,{onFailure:t=>ls(t)?hn:$(t),onSuccess:gi}),Tf=c(2,(e,t)=>Cr(e,ui,t)),Cf=c(2,(e,t)=>Ce(e,r=>Ft(_(()=>t(r)),A(r)))),kf=c(3,(e,t,r)=>Ii(e,t,n=>Ft(_(()=>r(n)),A(n)))),_o=c(3,(e,t,r)=>Ce(e,n=>{let o=t(n);return K(o)?A(n):Ft(_(()=>r(o.success,n)),A(n))})),Oi=c(2,(e,t)=>_o(e,xt,r=>t(r))),wf=c(3,(e,t,r)=>{let n=Array.isArray(t)?o=>b(o,"_tag")&&t.includes(o._tag):qt(t);return Oi(e,o=>n(o)?r(o):I)}),If=c(2,(e,t)=>_o(e,ui,r=>t(r))),gn=c(e=>y(e[0]),(e,t,r,n)=>Ce(e,o=>{let s=xt(o);return K(s)?A(s.failure):t(s.success)?_(()=>r(s.success)):n?_(()=>n(s.success)):A(o)})),Ro=c(e=>y(e[0]),(e,t,r,n)=>Ce(e,o=>{let s=xt(o);if(K(s))return A(s.failure);let i=t(s.success);return K(i)?n?_(()=>n(i.failure)):A(o):_(()=>r(i.success))})),_i=c(e=>y(e[0]),(e,t,r,n)=>{let o=Array.isArray(t)?s=>b(s,"_tag")&&t.includes(s._tag):qt(t);return gn(e,o,r,n)}),Of=c(e=>y(e[0]),(e,t,r)=>{let n;return Ro(e,o=>(n??=Object.keys(t),b(o,"_tag")&&Dn(o._tag)&&n.includes(o._tag)?G(o):j(o)),o=>_(()=>t[o._tag](o)),r)}),_f=c(e=>y(e[0]),(e,t,r,n,o)=>gn(e,s=>qt(s,t)&&b(s,"reason"),s=>{let i=s.reason;return qt(i,r)?n(i,s):o?_(()=>o(i,s)):$(s)})),Rf=c(e=>y(e[0]),(e,t,r,n)=>{let o;return gn(e,s=>qt(s,t)&&b(s,"reason")&&b(s.reason,"_tag")&&Dn(s.reason._tag),s=>{let i=s.reason;return o??=Object.keys(r),o.includes(i._tag)?_(()=>r[i._tag](i,s)):n?_(()=>n(i,s)):$(s)})}),Mf=c(2,(e,t)=>Ro(e,r=>qt(r,t)&&b(r,"reason")?G(r.reason):j(r),$)),Ri=c(2,(e,t)=>ke(e,r=>vo(()=>t(r)))),Mi=c(2,(e,t)=>Kt(e,{onFailure:r=>vo(()=>t.onFailure(r)),onSuccess:r=>E(()=>t.onSuccess(r))})),Ai=e=>ke(e,Nt),Af=c(2,(e,t)=>ke(e,r=>E(t))),Nf=e=>T(()=>{let t=e[Symbol.iterator](),r=t.next();if(r.done)return Nt(new Error("Received an empty collection of effects"));function n(o){let s=t.next();return s.done?o.value:ke(o.value,i=>n(s))}return n(r)}),Ni=e=>ke(e,t=>x(Er,()=>Ni(e))),Ff=c(e=>y(e[0]),(e,t)=>{if(!t?.log)return Kt(e,{onFailure:n=>I,onSuccess:n=>I});let r=He(t.log===!0?void 0:t.log);return Xe(e,{onFailure(n){let o=_u(n);return K(o)?A(o.failure):t.message===void 0?r(n):r(t.message,n)},onSuccess:n=>I})}),Mo=c(e=>y(e[0]),(e,t)=>{if(!t?.log)return Xe(e,{onFailure:n=>I,onSuccess:n=>I});let r=He(t.log===!0?void 0:t.log);return Xe(e,{onFailure:n=>t.message===void 0?r(n):r(t.message,n),onSuccess:n=>I})}),Uf=e=>Ao(e,{onFailure:V,onSuccess:J}),At=e=>yn(e,{onFailure:j,onSuccess:G}),Xe=c(2,(e,t)=>{let r=Object.create(Fx);return r[O]=e,r[ce]=t.onSuccess.length!==1?n=>t.onSuccess(n):t.onSuccess,r[Oe]=t.onFailure.length!==1?n=>t.onFailure(n):t.onFailure,r}),Fx=at({op:"OnSuccessAndFailure",[Z](e){return e._stack.push(this),this[O]}}),Fi=c(2,(e,t)=>Xe(e,{onFailure:r=>E(()=>t.onFailure(r)),onSuccess:r=>E(()=>t.onSuccess(r))})),Kt=c(2,(e,t)=>Xe(e,{onFailure:r=>{let n=r.reasons.find(Jr);return n?_(()=>t.onFailure(n.error)):A(r)},onSuccess:t.onSuccess})),Ao=c(2,(e,t)=>Kt(e,{onFailure:r=>E(()=>t.onFailure(r)),onSuccess:r=>E(()=>t.onSuccess(r))})),yn=c(2,(e,t)=>{if(de(e)){if(e._tag==="Success")return te(t.onSuccess(e.value));let r=xt(e.cause);return K(r)?e:te(t.onFailure(r.success))}return Ao(e,t)}),Df=c(2,(e,t)=>de(e)?e._tag==="Success"?te(t.onSuccess(e.value)):te(t.onFailure(e.cause)):Fi(e,t)),bn=e=>de(e)?te(e):Ux(e),Ux=_e({op:"Exit",[Z](e){return e._stack.push(this),this[O]},[ce](e,t,r){return m(r??te(e))},[Oe](e,t,r){return m(r??qe(e))}}),Pf=yn({onFailure:()=>!0,onSuccess:()=>!1}),Lf=yn({onFailure:()=>!1,onSuccess:()=>!0}),$f=c(2,(e,t)=>Ft(Xt(t),e)),Ui=c(2,(e,t)=>ko(e,x(Xt(t.duration),t.orElse))),qf=c(2,(e,t)=>Ui(e,{duration:t,orElse:()=>$(new go)})),Wf=c(2,(e,t)=>ko(Co(e),ue(Xt(t),V()))),zf=e=>xe(t=>{let r=t.monotonicTimeNanosUnsafe();return k(e,n=>[Mt(t.monotonicTimeNanosUnsafe()-r),n])}),Ys="~effect/Scope",Xs="~effect/Scope/Closeable",kr=lt("effect/Scope"),Di=(e,t)=>T(()=>No(e,t)??I),No=(e,t)=>{if(e.state._tag==="Closed")return;let r={_tag:"Closed",exit:t};if(e.state._tag==="Empty"){e.state=r;return}let n=e.state;if(e.state=r,n.finalizer!==void 0)return n.finalizer(t);let o=n.finalizers;if(!(o===void 0||o.size===0))return o.size===1?o.values().next().value(t):Px(e,o,t)},Dx=(e,t)=>wo(e)?t:Ce(t,r=>A(fi(e.cause,r))),Px=Si(function*(e,t,r){let n=[],o=[],s=Array.from(t.values()),i=br();for(let a=s.length-1;a>=0;a--){let u=s[a];e.strategy==="sequential"?n.push(yield*bn(u(r))):o.push(Yt(i,u(r),!0,!0,"inherit"))}return o.length>0&&(n=yield*Sr(o)),yield*df(n)});var jf=(e,t)=>{let r=Sn(t);if(e.state._tag==="Closed")return r.state=e.state,r;let n={};return ln(e,n,o=>Di(r,o)),ln(r,n,o=>E(()=>Pi(e,n))),r},yt=(e,t)=>T(()=>e.state._tag==="Closed"?t(e.state.exit):(ln(e,{},t),I));var ln=(e,t,r)=>{if(e.state._tag==="Empty")e.state={_tag:"Open",finalizerKey:t,finalizer:r,finalizers:void 0};else if(e.state._tag==="Open"){let n=e.state;n.finalizer!==void 0?(n.finalizers=new Map([[n.finalizerKey,n.finalizer]]),n.finalizerKey=void 0,n.finalizer=void 0,n.finalizers.set(t,r)):n.finalizers===void 0?(n.finalizerKey=t,n.finalizer=r):n.finalizers.set(t,r)}},Pi=(e,t)=>{if(e.state._tag==="Open"){let r=e.state;r.finalizerKey===t?(r.finalizerKey=void 0,r.finalizer=void 0):r.finalizers!==void 0&&r.finalizers.delete(t)}};var Sn=(e="sequential")=>({[Xs]:Xs,[Ys]:Ys,strategy:e,state:Lx}),Lx={_tag:"Empty"};var En=kr;var Li=e=>v(t=>{let r=t.context,n=Sn();return t.setContext(Ee(t.context,kr,n)),wr(e,o=>(t.setContext(r),No(n,o)))});var Fo=e=>T(()=>{let t=Sn();return ne(e(t),r=>T(()=>No(t,r)??I))}),Uo=(e,t,r)=>Dt(n=>Zt(o=>x(En,s=>Ut(r?.interruptible?o(e):e,i=>yt(s,a=>gt(t(i,a),n)))))),$i=e=>x(En,t=>Dt(r=>yt(t,n=>gt(e(n),r)))),wr=_e({op:"OnExit",single:!1,[Z](e){return e._stack.push(this),this[O][0]},[It](e){e.interruptible&&this[O][2]!==!0&&(e._stack.push(Do),e.interruptible=!1)},[ce](e,t,r){r??=te(e);let n=this[O][1](r);return n?x(n,o=>r):r},[Oe](e,t,r){r??=qe(e);let n=this[O][1](r);return n?x(Dx(r,n),o=>r):r}}),ne=c(2,wr),Hf=c(2,(e,t)=>ne(e,r=>t)),qi=c(3,(e,t,r)=>ne(e,n=>t(n)?r(n):I)),Wi=c(3,(e,t,r)=>ne(e,n=>{let o=t(n);return K(o)?I:r(o.success,n)})),zi=c(2,(e,t)=>Wi(e,uf,t)),Bf=c(3,(e,t,r)=>qi(e,n=>n._tag!=="Failure"?!1:t(n.cause),n=>r(n.cause))),ji=c(3,(e,t,r)=>ne(e,n=>{if(n._tag!=="Failure")return I;let o=t(n.cause);return K(o)?I:r(o.success,n.cause)})),Vf=c(2,(e,t)=>ji(Au,t)(e)),Jf=(e,t,r)=>Zt(n=>x(e,o=>wr(n(t(o)),s=>r(o,s),!0))),Kf=e=>Uo(e,t=>b(t,Symbol.asyncDispose)?yi(()=>t[Symbol.asyncDispose]()):E(()=>t[Symbol.dispose]())),Hi=c(2,(e,t)=>E(()=>{let r=We(q(t)),n=Number.isFinite(r),o=jx(!1),s=0,i=!1,a,u=x(o.await,()=>a);return[v(f=>{let d=f.getRef(je),p=n?d.currentTimeMillisUnsafe():0;return i||p<s?a??u:(i=!0,o.closeUnsafe(),a=void 0,ne(e,g=>E(()=>{i=!1,s=d.currentTimeMillisUnsafe()+r,a=g,o.openUnsafe()})))}),E(()=>{s=0,o.closeUnsafe(),a=void 0})]})),Bi=c(2,(e,t)=>k(Hi(e,t),r=>r[0])),Zf=e=>Bi(e,re),Gf=v(e=>A(So(e.id))),bt=e=>v(t=>(t.interruptible&&(t.interruptible=!1,t._stack.push(Do)),e)),Yf=_e({op:"SetInterruptible",[It](e){if(e.interruptible=this[O],e._interruptedCause&&e.interruptible)return()=>A(e._interruptedCause)}}),Do=Yf(!0),$x=Yf(!1),Xf=e=>{if(e.interruptible=!0,e._stack.push($x),e._interruptedCause)return A(e._interruptedCause)},Vi=e=>v(t=>t.interruptible?e:Xf(t)??e),Zt=e=>v(t=>t.interruptible?(t.interruptible=!1,t._stack.push(Do),e(Vi)):e(C)),Qf=e=>v(t=>{if(t.interruptible)return e(C);let r=Xf(t),n=e(bt);return r??n}),el=k(Uo(E(()=>new AbortController),e=>E(()=>e.abort())),e=>e.signal),Gt=(e,t)=>it(e)?t?.mode==="result"?ae(e,At,t):ae(e,C,t):t?.discard?t.mode==="result"?ae(Object.values(e),At,t):ae(Object.values(e),C,t):T(()=>{let r={};return ue(ae(Object.entries(e),([n,o])=>k(t?.mode==="result"?At(o):o,s=>{ye(r,n,s)}),{discard:!0,concurrency:t?.concurrency}),r)}),Ji=c(e=>it(e[0])&&!y(e[0]),(e,t,r)=>k(ae(e,(n,o)=>At(t(n,o)),r),n=>Na(n,C))),tl=c(3,(e,t,r)=>{let n=H(e);return n.length===0?E(t):T(()=>{let o=0,s=t();return k(St({while:()=>o<n.length,body:()=>r(s,n[o],o),step(i){s=i,o++}}),()=>s)})}),rl=c(e=>it(e[0])&&!y(e[0]),(e,t,r)=>x(Ji(e,t,{concurrency:r?.concurrency}),([n,o])=>Ra(n)?$(n):r?.discard?I:m(o))),nl=c(e=>it(e[0])&&!y(e[0]),(e,t)=>T(()=>{let r=e[Symbol.iterator](),n=r.next();return n.done?m(V()):ol(r,0,t,n.value)})),ol=(e,t,r,n)=>x(r(n,t),o=>{if(o)return m(J(n));let s=e.next();return s.done?m(V()):ol(e,t+1,r,s.value)}),sl=c(e=>it(e[0])&&!y(e[0]),(e,t)=>T(()=>{let r=e[Symbol.iterator](),n=r.next();return n.done?m(V()):il(r,0,t,n.value)})),il=(e,t,r,n)=>x(r(n,t),o=>{if(Ht(o))return m(J(o.success));let s=e.next();return s.done?m(V()):il(e,t+1,r,s.value)}),St=_e({op:"While",[ce](e,t){return this[O].step(e),this[O].while()?(t._stack.push(this),this[O].body()):Ae},[Z](e){return this[O].while()?(e._stack.push(this),this[O].body()):Ae}}),ae=c(e=>typeof e[1]=="function",(e,t,r)=>T(()=>{let n=r?.concurrency??1,o=n==="unbounded"?Number.POSITIVE_INFINITY:Math.max(1,n);if(o===1)return qx(e,t,r);let s=H(e),i=s.length;if(i===0)return r?.discard?I:m([]);let a=r?.discard?void 0:new Array(i),u=zx({f:t,out:a},s,{concurrency:o});return u?ue(u,a):m(a)})),cl=e=>x(e,t=>{let r=t[Symbol.iterator]().next();return r.done?$(new Ke):m(r.value)}),qx=(e,t,r)=>T(()=>{let n=r?.discard?void 0:[],o=e[Symbol.iterator](),s=o.next(),i=0;return ue(St({while:()=>!s.done,body:()=>t(s.value,i++),step:a=>{n&&n.push(a),s=o.next()}}),n)}),Wx=e=>{let t=e.onItem,r=e.step,n=(o,s,i,a)=>{for(;i<a;i++){let u=s[i],f=t(o,u,i);if(!de(f))return x(bn(f),p=>r(o,u,p,i)??n(o,s,i+1,a)??I);let d=r(o,u,f,i);if(d)return d._tag==="Failure"?d:void 0}};return(o,s,i)=>{let a=0,u=i?.end??s.length,f=i?.concurrency??1;if(f===1)return n(o,s,0,u);let d=i?.orderedStep===!0,p=!1,g,l,w,N=!1,S,nt,X=a,le=d?new Array(u):void 0,ot=rr=>{let he=ut(rr);return S=he,p=!0,N=!0,l&&l.size>0?x(bt(mt(Array.from(l))),()=>he):he},vt=(rr,he,st)=>{if(!d)return r(o,rr,he,st);if(S)return S;for(le[st]=he;X<u;){let Ie=le[X];if(Ie===void 0)return;le[X]=void 0;let Tt=X++,Ct=r(o,s[Tt],Ie,Tt);if(Ct)return Ct}},Fn=()=>{let rr=!1;for(;!S&&a<u;a++){let he=s[a],st=nt??t(o,he,a);if(de(st)){if(S=vt(he,st,a),S)break}else if(g){nt=void 0;let Ie=Yt(g,st,!0,!0,"inherit");if(Ie._exit){if(S=vt(he,Ie._exit,a),S)break;continue}l.add(Ie);let Tt=a;if(Ie.addObserver(Ct=>{l.delete(Ie);try{if(S){if(!N&&Ct._tag==="Failure")for(let ge of Ct.cause.reasons)ge._tag!=="Interrupt"&&(S._tag==="Failure"?S.cause.reasons.push(ge):S=qe(Ot([ge])))}else{let ge=vt(he,Ct,Tt);ge&&(S=ge._tag==="Failure"?qe(Ot(ge.cause.reasons.slice())):ge,Fn())}if(rr){let ge=Fn();ge&&w(ge)}else p&&l.size===0&&w(S??I)}catch(ge){w(ot(ge))}}),l.size<f)continue;rr=!0,a++;return}else return se(Ie=>{g=br(),l=new Set,nt=st,w=Ie;let Tt;try{Tt=Fn()}catch(Ct){return Ie(ot(Ct))}return Tt?Ie(Tt):T(()=>(S=Ae,N=!0,l?mt(l):I))})}if(p=!0,S){if(l&&l.size>0){let he=xn(g);l.forEach(st=>st.interruptUnsafe(g.id,he));return}if(w||S._tag==="Failure")return S}else if(w)if(l)l.size===0&&w(I);else return Ae};return Fn()}};var zx=Wx({onItem(e,t,r){return e.f(t,r)},step(e,t,r,n){if(r._tag==="Failure")return r;e.out&&(e.out[n]=r.value)}}),Ki=c(3,(e,t,r)=>x(e,n=>t(n)?m(n):r(n))),Zi=c(3,(e,t,r)=>x(e,n=>{let o=t(n);return K(o)?r(o.failure):m(o.success)})),al=c(e=>y(e[0]),(e,t,r)=>Zi(e,t,r?n=>$(r(n)):()=>$(new Ke))),ul=c(e=>it(e[0])&&!y(e[0]),(e,t,r)=>T(()=>{let n=[];return ue(ae(e,(o,s)=>{let i=t(o,s);return typeof i=="boolean"?(i&&n.push(o),I):k(i,a=>{a&&n.push(o)})},{discard:!0,concurrency:r?.concurrency}),n)})),fl=c(e=>it(e[0])&&!y(e[0]),(e,t)=>T(()=>{let r=[];for(let n of e){let o=t(n);Ht(o)&&r.push(o.success)}return m(r)})),ll=c(e=>it(e[0])&&!y(e[0]),(e,t,r)=>T(()=>{let n=[];return ue(ae(e,o=>k(t(o),s=>{Ht(s)&&n.push(s.success)}),{discard:!0,concurrency:r?.concurrency}),n)})),pl=m({}),dl=Bc(k),ml=Vc(k,x),xl=Hc(k);var hl=c(e=>y(e[0]),(e,t)=>v(r=>(sh(),m(Yt(r,e,t?.startImmediately,!1,t?.uninterruptible??!1))))),Yt=(e,t,r=!1,n=!1,o=!1)=>{let s=e,i=o==="inherit"?s.interruptible:!o,a=new ho(s.context,i);return r?a.evaluate(t):s.currentDispatcher.scheduleTask(()=>a.evaluate(t),0),!n&&!a._exit&&(s.children().add(a),a.addObserver(()=>s._children.delete(a))),a},gl=c(e=>y(e[0]),(e,t)=>v(r=>m(Yt(r,e,t?.startImmediately,!0,t?.uninterruptible)))),yl=e=>v(t=>{let r=t._children&&new Set(t._children);return ne(e,n=>{let o=t._children;return o===void 0||o.size===0?I:(r&&(o=Ia(o,s=>!r.has(s))),vr(Sr(o)))})}),Gi=c(e=>y(e[0]),(e,t,r)=>v(n=>{let o=Yt(n,e,r?.startImmediately,!0,r?.uninterruptible);if(!o._exit)if(t.state._tag!=="Closed"){let s={};ln(t,s,()=>Vu(a=>a===o.id?I:Eo(o))),o.addObserver(()=>Pi(t,s))}else o.interruptUnsafe(n.id,xn(n));return m(o)})),bl=c(e=>y(e[0]),(e,t)=>x(En,r=>Gi(e,r,t))),Et=e=>(t,r)=>{let n=new ho(r?.scheduler?Ee(e,nn,r.scheduler):e,r?.uninterruptible!==!0);if(n.evaluate(t),n._exit)return n;if(r?.signal)if(r.signal.aborted)n.interruptUnsafe();else{let o=()=>n.interruptUnsafe();r.signal.addEventListener("abort",o,{once:!0}),n.addObserver(()=>r.signal.removeEventListener("abort",o))}return r?.onFiberStart&&r.onFiberStart(n),n},Sl=c(2,(e,t)=>{if(e._exit)return e;if(t.state._tag==="Closed")return e.interruptUnsafe(e.id),e;let r={};return ln(t,r,()=>Eo(e)),e.addObserver(()=>Pi(t,r)),e}),El=Et(Re()),Yi=e=>{let t=Et(e);return(r,n)=>{let o=t(r,n);return n?.onExit&&o.addObserver(n.onExit),s=>o.interruptUnsafe(s)}},vl=Yi(Re()),Po=e=>{let t=Et(e);return(r,n)=>{let o=t(r,n);return new Promise(s=>{o.addObserver(i=>s(i))})}},Tl=Po(Re()),Xi=e=>{let t=Po(e);return(r,n)=>t(r,n).then(o=>{if(o._tag==="Failure")throw li(o.cause);return o.value})},Cl=Xi(Re()),Lo=e=>{let t=Et(e);return r=>{if(de(r))return r;let n=new rn("sync"),o=t(r,{scheduler:n});return o._dispatcher?.flush(),o._exit??ut(new bo(o))}},kl=Lo(Re()),Qi=e=>{let t=Lo(e);return r=>{let n=t(r);if(n._tag==="Failure")throw li(n.cause);return n.value}},wl=Qi(Re()),Iu=m(!0),Ou=m(!1),Qs=class{waiters=[];scheduled=void 0;_isOpen;constructor(t){this._isOpen=t}scheduleUnsafe(t){if(this.waiters.length===0)return Iu;if(this.scheduled===void 0)this.scheduled=this.waiters,t.currentDispatcher.scheduleTask(this.flushScheduled,0);else for(let r=0;r<this.waiters.length;r++)this.scheduled.push(this.waiters[r]);return this.waiters=[],Iu}flushScheduled=()=>{if(this.scheduled===void 0)return;let t=this.scheduled;this.scheduled=void 0;for(let r=0;r<t.length;r++)t[r](Ae)};flushWaiters(){let t=this.waiters;this.waiters=[],this.flushScheduled();for(let r=0;r<t.length;r++)t[r](Ae)}open=v(t=>this._isOpen?Ou:(this._isOpen=!0,this.scheduleUnsafe(t)));release=v(t=>this._isOpen?Ou:this.scheduleUnsafe(t));openUnsafe(){return this._isOpen?!1:(this._isOpen=!0,this.flushWaiters(),!0)}await=se(t=>this._isOpen?t(I):(this.waiters.push(t),E(()=>{let r=this.waiters.indexOf(t);r!==-1?this.waiters.splice(r,1):this.scheduled!==void 0&&(r=this.scheduled.indexOf(t),r!==-1&&this.scheduled.splice(r,1))})));closeUnsafe(){return this._isOpen?(this._isOpen=!1,!0):!1}close=E(()=>this.closeUnsafe());whenOpen=t=>x(this.await,()=>t);isOpen(){return this._isOpen}},jx=e=>new Qs(e??!1);var Il=v(e=>m(e.getRef(lo))),Ol=c(2,(e,t)=>me(e,lo,t)),_l=me(po),Rl=me(xr),ei=BigInt(0),Hx={_tag:"Span",spanId:"noop",traceId:"noop",sampled:!1,status:{_tag:"Ended",startTime:ei,endTime:ei,exit:Ae},attributes:new Map,links:[],kind:"internal",attribute(){},event(){},end(){},addLinks(){}},Bx=e=>Object.assign(Object.create(Hx),e),Ml=e=>e?Se(e.annotations,fo)?e._tag==="Span"?Ml(dr(e.parent)):V():J(e):V(),ec=(e,t,r)=>{let n=!e.getRef(po)||r?.annotations&&Se(r.annotations,fo),o=r?.parent!==void 0?J(r.parent):r?.root?V():Ml(e.currentSpan),s;if(n)s=Bx({name:t,parent:o,annotations:Ee(r?.annotations??Re(),fo,!0)});else{let i=e.getRef(lo),a=e.getRef(je),u=e.getRef(xr),f=e.getRef(an),d=e.getRef(un),p=r?.level??e.getRef(yu),g=r?.links!==void 0?[...d,...r.links]:d.length===0?[]:d.slice();s=i.span({name:t,parent:o,annotations:r?.annotations??Re(),links:g,startTime:u?a.currentTimeNanosUnsafe():BigInt(0),kind:r?.kind??"internal",root:r?.root??jt(o),sampled:r?.sampled??(Ea(o)&&o.value.sampled===!1?!1:!Jl(e.getRef(bu),p))});for(let l in f)s.attribute(l,f[l]);if(r?.attributes!==void 0)for(let l in r.attributes)s.attribute(l,r.attributes[l])}return s},Al=(e,t)=>v(r=>m(ec(r,e,t))),pn=(e,t)=>bt(v(r=>{let n=pt(r.context,kr),o=ec(r,e,t??{}),s=r.getRef(je),i=r.getRef(xr);return ue(yt(n,a=>Pl(o,a,s,i)),o)})),Nl=function(){let e=typeof arguments[0]!="string",t=e?arguments[1]:arguments[0],r=xo(e?arguments[2]:arguments[1]);if(e){let n=arguments[0];return x(pn(t,r),o=>yr(n,o,r))}return n=>x(pn(t,r),o=>yr(n,o,r))},Vx=(e,t)=>(t=typeof t=="function"?t:Be,ht(cn,r=>({name:e,stack:t,parent:r}))),Fl=an,Ul=un,Dl=c(e=>y(e[0]),(e,t,r={})=>{let o=(Array.isArray(t)?t:[t]).map(s=>({span:s,attributes:r}));return ht(e,un,s=>[...s,...o])}),Pl=(e,t,r,n)=>E(()=>{e.status._tag!=="Ended"&&e.end(n?r.currentTimeNanosUnsafe():ei,t)}),dn=(e,...t)=>{let r=t.length===1?void 0:t[0],n=t[t.length-1];return v(o=>{let s=ec(o,e,r),i=o.getRef(je),a=o.getRef(xr);return ne(_(()=>n(s)),u=>Pl(s,u,i,a))})},ti=me(sn),yr=function(){let e=y(arguments[0]),t=e?arguments[1]:arguments[0],r=e?arguments[2]:arguments[1],n=C;return t._tag==="Span"&&(r=xo(r),n=Vx(t.name,r?.captureStackTrace)),e?ti(n(arguments[0]),t):o=>ti(n(o),t)},Ll=function(){let e=typeof arguments[0]!="string",t=e?arguments[1]:arguments[0],r=xo(arguments[2]);if(e){let s=arguments[0];return dn(t,arguments[2],i=>yr(s,i,r))}let n=typeof arguments[1]=="function"?arguments[1]:void 0,o=n?void 0:arguments[1];return(s,...i)=>dn(t,n?n(...i):o,a=>yr(s,a,r))},$l=c(e=>y(e[0]),(e,...t)=>ht(e,an,r=>{let n=t.length===1?{...r,...t[0]}:{...r};return t.length===1||ye(n,t[0],t[1]),n})),ql=(...e)=>v(t=>{let r=t.currentSpanLocal;if(r)if(e.length===1)for(let[n,o]of Object.entries(e[0]))r.attribute(n,o);else r.attribute(e[0],e[1]);return I}),Wl=v(e=>{let t=e.currentSpanLocal;return t?m(t):$(new Ke)}),zl=Mx(sn),je=M("effect/Clock",{defaultValue:()=>new ri}),Js=2**31-1,ri=class{currentTimeMillisUnsafe(){return Date.now()}currentTimeMillis=E(()=>this.currentTimeMillisUnsafe());currentTimeNanosUnsafe(){return Jx()}currentTimeNanos=E(()=>this.currentTimeNanosUnsafe());monotonicTimeNanosUnsafe(){return Hl()}monotonicTimeNanos=E(()=>this.monotonicTimeNanosUnsafe());sleep(t){return this.sleepMillis(We(t))}sleepMillis(t){return t<=0?Er:Number.isFinite(t)?se(r=>{let n=t>Js?this.sleepMillis(t-Js):I,o=setTimeout(()=>r(n),Math.min(t,Js));return E(()=>clearTimeout(o))}):To}},jl=BigInt(1e6),Hl=function(){let e=globalThis.process?.hrtime;if(typeof e?.bigint=="function")return()=>e.bigint();if(typeof performance<"u"&&typeof performance.now=="function")return()=>BigInt(Math.round(performance.now()*1e6));let t=BigInt(0);return()=>{let r=BigInt(Date.now())*jl;return r>t&&(t=r),t}}(),Jx=function(){let e=BigInt(1e9),t;return()=>{let r=Hl(),n=BigInt(Date.now())*jl;if(t===void 0)t=n-r;else{let o=t+r;(n>o?n-o:o-n)>e&&(t=n-r)}return t+r}}(),xe=e=>v(t=>e(t.getRef(je))),Xt=e=>xe(t=>t.sleep(q(e))),$o=xe(e=>e.currentTimeMillis),Bl=xe(e=>e.currentTimeNanos),Vl=xe(e=>e.monotonicTimeNanos),ni="~effect/Cause/TimeoutError";var go=class extends ft("TimeoutError"){[ni]=ni;constructor(t){super({message:t})}},oi="~effect/Cause/IllegalArgumentError";var yo=class extends ft("IllegalArgumentError"){[oi]=oi;constructor(t){super({message:t})}},si="~effect/Cause/ExceededCapacityError";var ii=class extends ft("ExceededCapacityError"){[si]=si;constructor(t){super({message:t})}},ci="~effect/Cause/AsyncFiberError";var bo=class extends ft("AsyncFiberError"){[ci]=ci;constructor(t){super({message:"An asynchronous Effect was executed with Effect.runSync",fiber:t})}},ai="~effect/Cause/UnknownError";var mn=class extends ft("UnknownError"){[ai]=ai;constructor(t,r){super({message:r,cause:t})}},Kx=M("effect/Console/CurrentConsole",{defaultValue:()=>globalThis.console}),Zx=e=>{switch(e){case"All":return Number.MIN_SAFE_INTEGER;case"Fatal":return 5e4;case"Error":return 4e4;case"Warn":return 3e4;case"Info":return 2e4;case"Debug":return 1e4;case"Trace":return 0;case"None":return Number.MAX_SAFE_INTEGER}},Gx=ba(Jn,Zx),Jl=pr(Gx),tc=M("effect/Loggers/CurrentLoggers",{defaultValue:()=>new Set([nh,oh])}),Yx=M("effect/Logger/LogToStderr",{defaultValue:Un}),Kl=function(){let e=typeof arguments[0]=="string"?[[arguments[0],arguments[1]]]:Object.entries(arguments[0]);return bt(v(t=>{let r=t.getRef(dt),n={...r};for(let o=0;o<e.length;o++){let[s,i]=e[o];ye(n,s,i)}return t.setContext(Ee(t.context,dt,n)),yt(pt(t.context,kr),o=>{let s=t.getRef(dt),i={...s};for(let a=0;a<e.length;a++){let[u,f]=e[a];s[u]===f&&(Object.hasOwn(r,u)?ye(i,u,r[u]):delete i[u])}return t.setContext(Ee(t.context,dt,i)),I})}))},Xx="~effect/Logger",Qx={[Xx]:{_Message:C,_Output:C},pipe(){return U(this,arguments)}},Zl=e=>{let t=Object.create(Qx);return t.log=e,t},eh=e=>e.replace(/[\s="]/g,"_"),th=(e,t)=>`${eh(e[0])}=${t-e[1]}ms`;var He=e=>(...t)=>{let r;for(let n=0,o=t.length;n<o;n++){let s=t[n];Hr(s)&&(r?t.splice(n,1):t=t.slice(0,n).concat(t.slice(n+1)),r=r?Ot(r.reasons.concat(s.reasons)):s,n--)}return r===void 0&&(r=us),v(n=>{let o=e??n.currentLogLevel;if(Jl(n.minimumLogLevel,o))return I;let s=n.getRef(je),i=n.getRef(tc);if(i.size>0){let a=new Date(s.currentTimeMillisUnsafe());for(let u of i)u.log({cause:r,fiber:n,date:a,logLevel:o,message:t})}return I})};var Vt={bold:"1",red:"31",green:"32",yellow:"33",blue:"34",cyan:"36",white:"37",gray:"90",black:"30",bgBrightRed:"101"},qv={None:[],All:[],Trace:[Vt.gray],Debug:[Vt.blue],Info:[Vt.green],Warn:[Vt.yellow],Error:[Vt.red],Fatal:[Vt.bgBrightRed,Vt.black]};var rh=e=>`${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}.${e.getMilliseconds().toString().padStart(3,"0")}`;var nh=Zl(({cause:e,date:t,fiber:r,logLevel:n,message:o})=>{let s=Array.isArray(o)?o.slice():[o];e.reasons.length>0&&s.push(pi(e));let i=t.getTime(),a=r.getRef(mo),u="";for(let g of a)u+=` ${th(g,i)}`;let f=r.getRef(dt);Object.keys(f).length>0&&s.push(f);let d=r.getRef(Kx);(r.getRef(Yx)?d.error:d.log)(`[${rh(t)}] ${n.toUpperCase()} (#${r.id})${u}:`,...s)}),oh=Zl(({cause:e,fiber:t,logLevel:r,message:n})=>{let o=t.getRef(je),s=t.getRef(dt),i=t.currentSpan;if(i===void 0||i._tag==="ExternalSpan")return;let a={};for(let[u,f]of Object.entries(s))ye(a,u,f);a["effect.fiberId"]=t.id,a["effect.logLevel"]=r.toUpperCase(),e.reasons.length>0&&(a["effect.cause"]=pi(e)),i.event(ta(Array.isArray(n)&&n.length===1?n[0]:n),o.currentTimeNanosUnsafe(),a)});function sh(){Gs.interruptChildren??=Ox}var vn=m(void 0);var Gl=c(e=>y(e[0]),(e,t)=>zi(e,r=>v(n=>(ih(n,r,t?.defectsOnly),I)))),ih=(e,t,r)=>{let n=e.getRef(vu);if(n.size===0||r&&!Ru(t))return;let o={cause:t,fiber:e,timestamp:e.getRef(je).currentTimeNanosUnsafe()};n.forEach(s=>s.report(o))};var Yl=Ot;var Xl=Zr;var Qe=pa;var qo=yo;var h={};nr(h,{Do:()=>iy,Transaction:()=>Dr,TypeId:()=>Bg,abortSignal:()=>p0,acquireDisposable:()=>Zb,acquireRelease:()=>Kb,acquireUseRelease:()=>Gb,addFinalizer:()=>Yb,all:()=>Vg,andThen:()=>vy,annotateCurrentSpan:()=>C0,annotateLogs:()=>mS,annotateLogsScoped:()=>xS,annotateSpans:()=>T0,as:()=>wy,asSome:()=>Iy,asVoid:()=>Oy,awaitAllChildren:()=>z0,bind:()=>uy,bindTo:()=>cy,cached:()=>s0,cachedInvalidateWithTTL:()=>c0,cachedWithTTL:()=>i0,callback:()=>kc,catch:()=>Ay,catchCause:()=>Ly,catchCauseFilter:()=>Hy,catchCauseIf:()=>jy,catchDefect:()=>$y,catchEager:()=>US,catchFilter:()=>Wy,catchIf:()=>qy,catchNoSuchElement:()=>zy,catchReason:()=>Uy,catchReasons:()=>Dy,catchTag:()=>Ny,catchTags:()=>Fy,clockWith:()=>wd,context:()=>Fb,contextWith:()=>Ub,currentParentSpan:()=>w0,currentSpan:()=>k0,delay:()=>fb,die:()=>xd,effectify:()=>IS,ensuring:()=>Xb,eventually:()=>Yy,exit:()=>yd,fail:()=>Tc,failCause:()=>py,failCauseSync:()=>dy,failSync:()=>ly,fiber:()=>j0,fiberId:()=>H0,filter:()=>gb,filterMap:()=>yb,filterMapEffect:()=>bb,filterMapOrElse:()=>Eb,filterMapOrFail:()=>Tb,filterOrElse:()=>Sb,filterOrFail:()=>vb,findFirst:()=>Gg,findFirstFilter:()=>Yg,firstSuccessOf:()=>ib,flatMap:()=>wc,flatMapEager:()=>FS,flatten:()=>Ey,flip:()=>_y,fn:()=>oS,fnUntraced:()=>nS,fnUntracedEager:()=>DS,forEach:()=>Xg,forever:()=>d0,forkChild:()=>L0,forkDetach:()=>W0,forkIn:()=>$0,forkScoped:()=>q0,fromNullishOr:()=>Sy,fromOption:()=>yy,fromResult:()=>gy,gen:()=>fy,head:()=>Qg,ignore:()=>tb,ignoreCause:()=>rb,interrupt:()=>Td,interruptible:()=>a0,interruptibleMask:()=>l0,isEffect:()=>tr,isFailure:()=>Ab,isSuccess:()=>Nb,let:()=>ay,linkSpans:()=>_0,log:()=>iS,logDebug:()=>lS,logError:()=>uS,logFatal:()=>cS,logInfo:()=>fS,logTrace:()=>pS,logWarning:()=>aS,logWithLevel:()=>sS,makeSpan:()=>R0,makeSpanScoped:()=>M0,map:()=>ky,mapBoth:()=>Vy,mapBothEager:()=>NS,mapEager:()=>MS,mapError:()=>By,mapErrorEager:()=>AS,match:()=>kb,matchCause:()=>Ib,matchCauseEager:()=>Ob,matchCauseEffect:()=>Rb,matchCauseEffectEager:()=>_b,matchEager:()=>wb,matchEffect:()=>Mb,never:()=>sy,onError:()=>Qb,onErrorFilter:()=>t0,onErrorIf:()=>e0,onExit:()=>Ic,onExitFilter:()=>o0,onExitIf:()=>n0,onExitPrimitive:()=>r0,onInterrupt:()=>u0,option:()=>Cy,orDie:()=>Jy,orElseSucceed:()=>sb,partition:()=>Jg,promise:()=>ey,provide:()=>Db,provideContext:()=>Pb,provideService:()=>vd,provideServiceEffect:()=>Hb,race:()=>xb,raceAll:()=>db,raceAllFirst:()=>mb,raceFirst:()=>hb,reduce:()=>Kg,repeat:()=>m0,repeatOrElse:()=>x0,replicate:()=>h0,replicateEffect:()=>g0,request:()=>D0,requestUnsafe:()=>P0,result:()=>Ty,retry:()=>Xy,retryOrElse:()=>Qy,runCallback:()=>K0,runCallbackWith:()=>J0,runFork:()=>B0,runForkWith:()=>V0,runPromise:()=>Z0,runPromiseExit:()=>Y0,runPromiseExitWith:()=>X0,runPromiseWith:()=>G0,runSync:()=>Q0,runSyncExit:()=>tS,runSyncExitWith:()=>rS,runSyncWith:()=>eS,sandbox:()=>eb,satisfiesErrorType:()=>_S,satisfiesServicesType:()=>RS,satisfiesSuccessType:()=>OS,schedule:()=>y0,scheduleFrom:()=>kd,scope:()=>Bb,scoped:()=>Vb,scopedWith:()=>Jb,service:()=>$b,serviceOption:()=>qb,setContext:()=>Lb,sleep:()=>lb,spanAnnotations:()=>I0,spanLinks:()=>O0,succeed:()=>dd,succeedNone:()=>ry,succeedSome:()=>ny,suspend:()=>md,sync:()=>fe,tap:()=>gd,tapCause:()=>Sd,tapCauseFilter:()=>Gy,tapCauseIf:()=>Zy,tapDefect:()=>Ed,tapError:()=>bd,tapErrorTag:()=>Ky,timed:()=>pb,timeout:()=>cb,timeoutOption:()=>ab,timeoutOrElse:()=>ub,tracer:()=>b0,track:()=>gS,trackDefects:()=>SS,trackDuration:()=>ES,trackErrors:()=>bS,trackSuccesses:()=>yS,transposeOption:()=>by,try:()=>my,tryPromise:()=>ty,tx:()=>vS,txRetry:()=>wS,undefined:()=>oy,uninterruptible:()=>f0,uninterruptibleMask:()=>Cd,unwrapReason:()=>Py,updateContext:()=>Wb,updateService:()=>zb,updateServiceScoped:()=>jb,useSpan:()=>A0,validate:()=>Zg,void:()=>Cc,when:()=>Cb,whileLoop:()=>pd,withErrorReporting:()=>ob,withExecutionPlan:()=>nb,withFiber:()=>hd,withLogSpan:()=>hS,withLogger:()=>dS,withParentSpan:()=>U0,withSpan:()=>N0,withSpanScoped:()=>F0,withTracer:()=>S0,withTracerEnabled:()=>E0,withTracerTiming:()=>v0,yieldNow:()=>xy,yieldNowWith:()=>hy,zip:()=>Ry,zipWith:()=>My});var Ql=wo;var ch="~effect/Deferred";var ah={[ch]:{_A:C,_E:C},pipe(){return U(this,arguments)}},tp=()=>{let e=Object.create(ah);return e.resumes=void 0,e.effect=void 0,e};var rp=e=>se(t=>e.effect?t(e.effect):(e.resumes??=[],e.resumes.push(t),E(()=>{let r=e.resumes;if(r===void 0)return;let n=r.indexOf(t);n>=0&&r.splice(n,1)})));var uh=c(2,(e,t)=>E(()=>fh(e,t))),np=uh;var fh=(e,t)=>{if(e.effect)return!1;if(e.effect=t,e.resumes){let r=e.resumes;e.resumes=void 0;for(let n=0;n<r.length;n++)r[n](t)}return!0};var sp=dt;var ip=mo;var cp=Sn;var Wo=jf,nc=Di;var fp="~effect/Layer",up="~effect/Layer/MemoMap",ph=(e,t)=>(e.observers++,Ft(yt(t,r=>e.finalizer(r)),e.effect)),lp=e=>b(e,fp),dh={[fp]:{_ROut:C,_E:C,_RIn:C},pipe(){return U(this,arguments)}},pp=e=>{let t=Object.create(dh);return t.build=e,t},dp=e=>pp((t,r)=>{let n=Wo(r);return ne(e(t,n),o=>o._tag==="Failure"?nc(n,o):I)});var mh=(e,t,r,n)=>{let o=cp(),s=tp(),i={observers:1,effect:rp(s),finalizer:a=>T(()=>(i.observers--,i.observers===0?(e.map.delete(t),nc(o,a)):I))};return e.map.set(t,i),yt(r,i.finalizer).pipe(x(()=>n(e,o)),ne(a=>(i.effect=a,np(s,a))))},zo=class{get[up](){return up}parent;constructor(t){this.parent=t}map=new Map;get(t,r){let n=this.map.get(t);return n?ph(n,r):this.parent?.get(t,r)}getOrElseMemoize(t,r,n){return T(()=>{let o=this.get(t,r);return o||mh(this,t,r,n)})}},oc=()=>new zo,xh=e=>new zo(e);var Tn=class e extends lt()("effect/Layer/CurrentMemoMap"){static forkOrCreate(t){let r=to(t,e);return r?xh(r):oc()}},sc=c(3,(e,t,r)=>me(k(e.build(t,r),Ee(Tn,t)),Tn,t));var mp=c(2,(e,t)=>v(r=>sc(e,Tn.forkOrCreate(r.context),t)));var xp=e=>pp(ee(m(e)));var hp=(e,t,r)=>{let n=Wo(r,"parallel");return ae(e,o=>o.build(t,Wo(n,"sequential")),{concurrency:e.length}).pipe(k(o=>Ha(...o)))},gp=(...e)=>dp((t,r)=>hp(e,t,r));var hh=(e,t,r)=>dp((n,o)=>x(Array.isArray(t)?hp(t,n,o):t.build(n,o),s=>e.build(n,o).pipe(gt(s),k(i=>r(i,s))))),yp=c(2,(e,t)=>hh(e,t,C));var bp="~effect/ExecutionPlan";var gh={[bp]:bp,get captureRequirements(){let e=this;return Dt(t=>m(yh(e.steps.map(r=>({...r,provide:lp(r.provide)?yp(r.provide,xp(t)):r.provide})))))},pipe(){return U(this,arguments)}},yh=e=>{let t=Object.create(gh);return t.steps=e,t};var Sp=M("effect/ExecutionPlan/CurrentMetadata",{defaultValue:ee({attempt:0,stepIndex:0})});var rt={};nr(rt,{CurrentMetadata:()=>Lt,addDelay:()=>ug,concat:()=>fg,concatResult:()=>Kp,cron:()=>dg,duration:()=>mg,during:()=>xg,exponential:()=>yg,fibonacci:()=>bg,fixed:()=>Sg,forever:()=>Ko,fromStep:()=>we,fromStepWithMetadata:()=>Qt,identity:()=>wg,isSchedule:()=>Vo,jittered:()=>Eg,map:()=>Bo,max:()=>lg,min:()=>hg,modifyDelay:()=>gc,passthrough:()=>Jo,recurs:()=>yc,setInputType:()=>Ig,spaced:()=>Zp,tap:()=>vg,toStep:()=>tt,toStepWithMetadata:()=>Fr,toStepWithSleep:()=>ag,upTo:()=>Tg,while:()=>er,windowed:()=>Cg});var Pt={};nr(Pt,{Clock:()=>bh,clockWith:()=>Sh,currentTimeMillis:()=>Eh,currentTimeNanos:()=>vh,monotonicTimeNanos:()=>Th});var bh=je,Sh=xe,Eh=$o,vh=Bl,Th=Vl;var cc="~effect/time/DateTime",ac="~effect/time/DateTime/TimeZone",Cp={[cc]:cc,pipe(){return U(this,arguments)},[be](){return this.toString()},toJSON(){return On(this).toJSON()}},Ch={...Cp,_tag:"Utc",[D](){return ct(this.epochMilliseconds)},[P](e){return In(e)&&e._tag==="Utc"&&this.epochMilliseconds===e.epochMilliseconds},toString(){return`DateTime.Utc(${On(this).toJSON()})`}},kh={...Cp,_tag:"Zoned",[D](){return W(ct(this.epochMilliseconds))(R(this.zone))},[P](e){return In(e)&&e._tag==="Zoned"&&this.epochMilliseconds===e.epochMilliseconds&&B(this.zone,e.zone)},toString(){return`DateTime.Zoned(${jh(this)})`}},kp={[ac]:ac,[be](){return this.toString()}},wh={...kp,_tag:"Named",[D](){return z(`Named:${this.id}`)},[P](e){return Ir(e)&&e._tag==="Named"&&this.id===e.id},toString(){return`TimeZone.Named(${this.id})`},toJSON(){return{_id:"TimeZone",_tag:"Named",id:this.id}}},Ih={...kp,_tag:"Offset",[D](){return z(`Offset:${this.offset}`)},[P](e){return Ir(e)&&e._tag==="Offset"&&this.offset===e.offset},toString(){return`TimeZone.Offset(${_p(this.offset)})`},toJSON(){return{_id:"TimeZone",_tag:"Offset",offset:this.offset}}},et=(e,t,r)=>{let n=Object.create(kh);return n.epochMilliseconds=e,n.zone=t,Object.defineProperty(n,"partsUtc",{value:r,enumerable:!1,writable:!0}),Object.defineProperty(n,"adjustedEpochMillis",{value:void 0,enumerable:!1,writable:!0}),Object.defineProperty(n,"partsAdjusted",{value:void 0,enumerable:!1,writable:!0}),n},In=e=>b(e,cc),Oh=e=>In(e[0]),Ir=e=>b(e,ac);var wp=e=>Ir(e)&&e._tag==="Named";var _h=e=>e._tag==="Zoned";var Ip=e=>{let t=Object.create(Ch);return t.epochMilliseconds=e,Object.defineProperty(t,"partsUtc",{value:void 0,enumerable:!1,writable:!0}),t},Cn=e=>{let t=e.getTime();if(Number.isNaN(t))throw new qo("Invalid date");return Ip(t)},Rh=e=>{if(In(e))return e;if(e instanceof Date)return Cn(e);if(typeof e=="object"){if("epochMilliseconds"in e)return Cn(new Date(e.epochMilliseconds));let t=new Date(0);return Wh(t,e),Cn(t)}else if(typeof e=="string"&&!Mh(e))return Cn(new Date(e+"Z"));return Cn(new Date(e))},Mh=e=>/Z|GMT|[+-]\d{2}$|[+-]\d{2}:?\d{2}$|\]$/.test(e),Ah=-864e13+12*60*60*1e3,Nh=864e13-14*60*60*1e3,fc=(e,t)=>{let r=t?.timeZone;if(r===void 0&&In(e)&&_h(e))return e;let n=Rh(e);if(n.epochMilliseconds<Ah||n.epochMilliseconds>Nh)throw new RangeError(`Epoch millis out of range: ${n.epochMilliseconds}`);r===void 0&&typeof e=="object"&&"timeZoneId"in e&&(r=e.timeZoneId);let o;if(r===void 0){let s=new Date(n.epochMilliseconds).getTimezoneOffset()*-60*1e3;o=uc(s)}else if(Ir(r))o=r;else if(typeof r=="number")o=uc(r);else{let s=lc(r);if(jt(s))throw new qo(`Invalid time zone: ${r}`);o=s.value}return t?.adjustForTimeZone!==!0?et(n.epochMilliseconds,o,n.partsUtc):Rp(n.epochMilliseconds,o,t?.disambiguation??"compatible")};var wn=new Map,Fh={day:"numeric",month:"numeric",year:"numeric",hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"longOffset",fractionalSecondDigits:3,hourCycle:"h23"},Uh=e=>{let t=e.resolvedOptions().timeZone;if(wn.has(t))return wn.get(t);let r=Object.create(wh);return r.id=t,r.format=e,wn.set(t,r),r},Dh=e=>{if(wn.has(e))return wn.get(e);try{return Uh(new Intl.DateTimeFormat("en-US",{...Fh,timeZone:e}))}catch{throw new qo(`Invalid time zone: ${e}`)}},uc=e=>{let t=Object.create(Ih);return t.offset=e,t},Ph=Yr(Dh);var Lh=/^(?:GMT|[+-])/,lc=e=>{if(Lh.test(e)){let t=Mp(e);return t===null?V():J(uc(t))}return Ph(e)};var On=e=>new Date(e.epochMilliseconds),Or=e=>{if(e._tag==="Utc")return new Date(e.epochMilliseconds);if(e.zone._tag==="Offset")return new Date(e.epochMilliseconds+e.zone.offset);if(e.adjustedEpochMilliseconds!==void 0)return new Date(e.adjustedEpochMilliseconds);let t=e.zone.format.formatToParts(e.epochMilliseconds).filter(n=>n.type!=="literal"),r=new Date(0);return r.setUTCFullYear(Number(t[2].value),Number(t[0].value)-1,Number(t[1].value)),r.setUTCHours(Number(t[3].value),Number(t[4].value),Number(t[5].value),Number(t[6].value)),e.adjustedEpochMilliseconds=r.getTime(),r},Op=e=>Or(e).getTime()-qh(e),_p=e=>{let t=Math.abs(e),r=Math.floor(t/(60*60*1e3)),n=Math.round(t%(60*60*1e3)/(60*1e3));return n===60&&(r+=1,n=0),`${e<0?"-":"+"}${String(r).padStart(2,"0")}:${String(n).padStart(2,"0")}`},$h=e=>_p(Op(e)),qh=e=>e.epochMilliseconds;var Wh=(e,t)=>{if(t.year!==void 0&&e.setUTCFullYear(t.year),t.month!==void 0&&e.setUTCMonth(t.month-1),t.day!==void 0&&e.setUTCDate(t.day),t.weekDay!==void 0){let r=t.weekDay-e.getUTCDay();e.setUTCDate(e.getUTCDate()+r)}t.hour!==void 0&&e.setUTCHours(t.hour),t.minute!==void 0&&e.setUTCMinutes(t.minute),t.second!==void 0&&e.setUTCSeconds(t.second),t.millisecond!==void 0&&e.setUTCMilliseconds(t.millisecond)};var vp=24*60*60*1e3,Rp=(e,t,r)=>{if(t._tag==="Offset")return et(e-t.offset,t);let n=kn(e-vp,e,t),o=kn(e+vp,e,t);if(n===o)return et(e-n,t);let s=n<o,i=n-o;if(s){if(kn(e-o,e,t)===o)return et(e-o,t);let f=et(e-n,t),d=Or(f).getTime();if(e!==d)switch(r){case"reject":{let p=new Date(e).toISOString();throw new RangeError(`Gap time: ${p} does not exist in time zone ${t.id}`)}case"earlier":return et(e-o,t);case"compatible":case"later":return f}return f}if(kn(e-n,e,t)===n){if(r==="earlier"||r==="compatible"||kn(e-n+i,e+i,t)===n)return et(e-n,t);if(r==="reject"){let f=new Date(e).toISOString();throw new RangeError(`Ambiguous time: ${f} occurs twice in time zone ${t.id}`)}}return et(e-o,t)},zh=/([+-])(\d{2}):(\d{2})$/,Mp=e=>{let t=zh.exec(e);if(t===null)return null;let[,r,n,o]=t;return(r==="+"?1:-1)*(Number(n)*60+Number(o))*60*1e3},kn=(e,t,r)=>{let n=r.format.formatToParts(e).find(s=>s.type==="timeZoneName")?.value??"";if(n==="GMT")return 0;let o=Mp(n);return o===null?Op(et(t,r)):o},Ap=c(Oh,(e,t,r)=>{if(e._tag==="Utc"){let s=On(e);return t(s),Ip(s.getTime())}let n=Or(e),o=new Date(n.getTime());return t(o),Rp(o.getTime(),e.zone,r?.disambiguation??"compatible")});var Tp=e=>{let t=Or(e);return e._tag==="Utc"?t.toISOString():`${t.toISOString().slice(0,-1)}${$h(e)}`},jh=e=>e.zone._tag==="Offset"?Tp(e):`${Tp(e)}[${e.zone.id}]`;var PT=globalThis.Number;var Np=Jn;var LT=globalThis.String;var Up=e=>e.toLowerCase();var Dp=e=>e.length>0;var mc="~effect/time/Cron";function pc(e){return{tz:e.tz,and:e.and,seconds:H(e.seconds),minutes:H(e.minutes),hours:H(e.hours),days:H(e.days),months:H(e.months),weekdays:H(e.weekdays)}}var Bh={[mc]:mc,[P](e){return xc(e)&&Gh(this,e)},[D](){return Nc(R(this.tz),W(R(this.and)),W(De(H(this.seconds))),W(De(H(this.minutes))),W(De(H(this.hours))),W(De(H(this.days))),W(De(H(this.months))),W(De(H(this.weekdays))))},toObject(){return pc(this)},toString(){return`Cron(${Q(pc(this))})`},toJSON(){let e=pc(this);return e._id="Cron",e},[be](){return this.toJSON()},pipe(){return U(this,arguments)}},xc=e=>b(e,mc),Vh=e=>{let t=Object.create(Bh);t.seconds=Rr.seconds(e.seconds??[0]),t.minutes=Rr.minutes(e.minutes),t.hours=Rr.hours(e.hours),t.days=Rr.days(e.days),t.months=Rr.months(e.months),t.weekdays=Rr.weekdays(e.weekdays),t.and=e.and===!0,t.tz=va(e.tz);let r=Array.from(t.seconds),n=Array.from(t.minutes),o=Array.from(t.hours),s=Array.from(t.days),i=Array.from(t.months),a=Array.from(t.weekdays);return t.first={second:r[0]??0,minute:n[0]??0,hour:o[0]??0,day:s[0]??1,month:(i[0]??1)-1,weekday:a[0]??0},t.last={second:r[r.length-1]??59,minute:n[n.length-1]??59,hour:o[o.length-1]??23,day:s[s.length-1]??31,month:(i[i.length-1]??12)-1,weekday:a[a.length-1]??6},t.next={second:Fe.next.second(r),minute:Fe.next.minute(n),hour:Fe.next.hour(o),day:Fe.next.day(s),month:Fe.next.month(i),weekday:Fe.next.weekday(a)},t.prev={second:Fe.prev.second(r),minute:Fe.prev.minute(n),hour:Fe.prev.hour(o),day:Fe.prev.day(s),month:Fe.prev.month(i),weekday:Fe.prev.weekday(a)},t},_r=(e,t,r,n=o=>o)=>o=>{let s=[];for(let i of o){if(!Number.isInteger(i)||i<t||i>r)throw new RangeError(`${e} must contain only integers between ${t} and ${r}`);s.push(n(i))}return new Set(Ma(s,Np))},Rr={seconds:_r("seconds",0,59),minutes:_r("minutes",0,59),hours:_r("hours",0,23),days:_r("days",1,31),months:_r("months",1,12),weekdays:_r("weekdays",0,7,e=>e===7?0:e)},Ne=(e,t)=>r=>{let n=new Array(e).fill(void 0);if(r.length===0)return n;let o;if(t==="next"){let s=r.length-1;for(let i=e-1;i>=0;i--){for(;s>=0&&r[s]>=i;)o=r[s--];n[i]=o}}else{let s=0;for(let i=0;i<e;i++){for(;s<r.length&&r[s]<=i;)o=r[s++];n[i]=o}}return n},Fe={prev:{second:Ne(60,"prev"),minute:Ne(60,"prev"),hour:Ne(24,"prev"),day:Ne(32,"prev"),month:Ne(13,"prev"),weekday:Ne(7,"prev")},next:{second:Ne(60,"next"),minute:Ne(60,"next"),hour:Ne(24,"next"),day:Ne(32,"next"),month:Ne(13,"next"),weekday:Ne(7,"next")}},Lp="~effect/time/Cron/CronParseError",Ue=class extends uo("CronParseError"){[Lp]=Lp};var qp=(e,t)=>{let r=e.trim().split(/\s+/).filter(Dp);if(r.length!==5&&r.length!==6)return j(new Ue({message:"Invalid number of segments in cron expression",input:e}));r.length===5&&r.unshift("0");let[n,o,s,i,a,u]=r,f=t===void 0||Ir(t)?G(t):Ta(lc(t),()=>new Ue({message:"Invalid time zone in cron expression",input:t}));return wa({tz:f,seconds:Ar(n,Yh),minutes:Ar(o,Xh),hours:Ar(s,Qh),days:Ar(i,eg),months:Ar(a,tg),weekdays:Ar(u,rg)}).pipe(Ca(({tz:d,seconds:p,minutes:g,hours:l,days:w,months:N,weekdays:S})=>Vh({tz:d,seconds:p.values,minutes:g.values,hours:l.values,days:w.values,months:N.values,weekdays:S.values,and:(w.wildcard||S.wildcard)&&w.values.size!==0&&S.values.size!==0})))};var jo=e=>new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+1,0)).getUTCDate(),Wp=(e,t)=>Jh(e,t,"next");var Jh=(e,t,r)=>{let n=dr(e.tz),o=fc(t??new Date,{timeZone:n}),s=r==="prev",i=s?-1:1,a=e[r],u=s?e.last:e.first,f=s?(l,w)=>l<w:(l,w)=>l>w,p=n!==void 0&&wp(n)&&n.id==="UTC"?$t:l=>{let w=fc(l,{timeZone:o.zone,adjustForTimeZone:!0,disambiguation:s?"later":void 0}).pipe(Or),N=l.getTime()-w.getTime();(s?N!==0:N>0)&&l.setTime(s?w.getTime():l.getTime()+N)},g=Ap(o,l=>{l.setUTCSeconds(l.getUTCSeconds()+i,0);for(let w=0;w<1e4;w++){if(e.seconds.size!==0){let N=l.getUTCSeconds(),S=a.second[N];if(S===void 0){l.setUTCMinutes(l.getUTCMinutes()+i,u.second),p(l);continue}if(f(S,N)){l.setUTCSeconds(S),p(l);continue}}if(e.minutes.size!==0){let N=l.getUTCMinutes(),S=a.minute[N];if(S===void 0){l.setUTCHours(l.getUTCHours()+i,u.minute,u.second),p(l);continue}if(f(S,N)){l.setUTCMinutes(S,u.second),p(l);continue}}if(e.hours.size!==0){let N=l.getUTCHours(),S=a.hour[N];if(S===void 0){l.setUTCDate(l.getUTCDate()+i),l.setUTCHours(u.hour,u.minute,u.second),p(l);continue}if(f(S,N)){l.setUTCHours(S,u.minute,u.second),p(l);continue}}if(e.weekdays.size!==0||e.days.size!==0)if(e.and){let N=e.days.size===0||e.days.has(l.getUTCDate()),S=e.weekdays.size===0||e.weekdays.has(l.getUTCDay());if(!N||!S){l.setUTCDate(l.getUTCDate()+i),l.setUTCHours(u.hour,u.minute,u.second),p(l);continue}}else{let N=s?-1/0:1/0,S=s?-1/0:1/0;if(e.weekdays.size!==0){let X=l.getUTCDay(),le=a.weekday[X];le===void 0?N=s?u.weekday-7-X:7-X+u.weekday:N=le-X}if(e.days.size!==0&&N!==0){let X=l.getUTCDate(),le=a.day[X];if(le===void 0)if(s){let ot=new Date(l);ot.setUTCDate(0);let vt=a.day[ot.getUTCDate()];if(vt===void 0&&(ot.setUTCDate(0),vt=a.day[ot.getUTCDate()]),vt===void 0)throw new Error("Unable to find cron date");ot.setUTCDate(vt),S=(ot.getTime()-l.getTime())/864e5}else S=jo(l)-X+u.day;else!s&&le>jo(l)?S=jo(l)-X+u.day:S=le-X}let nt=s?Math.max(N,S):Math.min(N,S);if(nt!==0){l.setUTCDate(l.getUTCDate()+nt),l.setUTCHours(u.hour,u.minute,u.second),p(l);continue}}if(e.months.size!==0){let N=l.getUTCMonth()+1,S=a.month[N],nt=X=>{let le=jo(new Date(Date.UTC(l.getUTCFullYear(),X+1,0)));return e.days.size!==0&&e.weekdays.size===0?s?a.day[le]??le:u.day:s?le:1};if(S===void 0){l.setUTCFullYear(l.getUTCFullYear()+i),l.setUTCMonth(u.month,nt(u.month)),l.setUTCHours(u.hour,u.minute,u.second),p(l);continue}if(f(S,N)){let X=S-1;l.setUTCMonth(X,nt(X)),l.setUTCHours(u.hour,u.minute,u.second),p(l);continue}}return}throw new Error("Unable to find cron date")});return On(g)};var Kh=is((e,t)=>B(e.tz,t.tz)&&e.and===t.and&&Mr(e.seconds,t.seconds)&&Mr(e.minutes,t.minutes)&&Mr(e.hours,t.hours)&&Mr(e.days,t.days)&&Mr(e.months,t.months)&&Mr(e.weekdays,t.weekdays)),Zh=zc(Wc()),Mr=(e,t)=>Zh(H(e),H(t)),Gh=c(2,(e,t)=>Kh(e,t)),Yh={min:0,max:59},Xh={min:0,max:59},Qh={min:0,max:23},eg={min:1,max:31},tg={min:1,max:12,aliases:{jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12}},rg={min:0,max:7,normalize:e=>e===7?0:e,aliases:{sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6}},Ar=(e,t)=>{let r=new Set,n=e.split(","),o=$p(n[0]),s=o[0]==="*",i=t.normalize??(u=>u),a=s&&(o[1]===void 0||o[1]===1)?$t:u=>{r.add(i(u))};for(let u=0;u<n.length;u++){let f=n[u],[d,p]=u===0?o:$p(f);if(p!==void 0){if(!Number.isInteger(p))return j(new Ue({message:"Expected step value to be a positive integer",input:e}));if(p<1)return j(new Ue({message:"Expected step value to be greater than 0",input:e}));if(p>t.max)return j(new Ue({message:`Expected step value to be less than or equal to ${t.max}`,input:e}))}if(d==="*"){if(u===0&&(p===void 0||p===1))continue;for(let g=t.min;g<=t.max;g+=p??1)a(g)}else{let[g,l]=ng(d,t.aliases);if(!Number.isInteger(g))return j(new Ue({message:"Expected a positive integer",input:e}));if(g<t.min||g>t.max)return j(new Ue({message:`Expected a value between ${t.min} and ${t.max}`,input:e}));if(l===void 0)for(let w=g;w<=(p===void 0?g:t.max);w+=p??1)a(w);else{if(!Number.isInteger(l))return j(new Ue({message:"Expected a positive integer",input:e}));if(l<t.min||l>t.max)return j(new Ue({message:`Expected a value between ${t.min} and ${t.max}`,input:e}));if(g>l)return j(new Ue({message:"Invalid value range",input:e}));for(let w=g;w<=l;w+=p??1)a(w)}}}return G({values:r,wildcard:s})},$p=e=>{let t=e.indexOf("/");if(t!==-1){let r=e.slice(t+1);return[e.slice(0,t),zp.test(r)?Number(r):NaN]}return[e,void 0]},ng=(e,t)=>{let r=e.indexOf("-");return r!==-1?[dc(e.slice(0,r),t),dc(e.slice(r+1),t)]:[dc(e,t),void 0]};function dc(e,t){return t?.[Up(e)]??(zp.test(e)?Number(e):NaN)}var zp=/^\d+$/;var Hp=M("effect/Random",{defaultValue:()=>({nextIntUnsafe(){return Math.floor(Math.random()*(Number.MAX_SAFE_INTEGER-Number.MIN_SAFE_INTEGER+1))+Number.MIN_SAFE_INTEGER},nextDoubleUnsafe(){return Math.random()}})});var Ho=c(2,(e,t)=>Cr(e,sg,r=>t(r)));var Bp=e=>e._tag==="Fail"&&Xl(e.error),Vp=e=>{let t,r=!1;for(let n of e.reasons)Bp(n)?t??=n.error:n._tag!=="Interrupt"&&(r=!0);return t===void 0?j(e):r?j(Yl(e.reasons.filter(n=>!Bp(n)))):G(t)};var sg=e=>{let t=Vp(e);return K(t)?t:G(t.success.value)};var _n=c(2,(e,t)=>Xe(e,{onSuccess:t.onSuccess,onFailure:r=>{let n=Vp(r);return K(n)?t.onFailure(n.failure):t.onDone(n.success.value)}}));var Jp="~effect/Schedule",ig=Hp.useSync(e=>e.nextDoubleUnsafe()),Lt=M("effect/Schedule/CurrentMetadata",{defaultValue:ee({input:void 0,output:void 0,duration:L,attempt:0,start:0,now:0,elapsed:0,elapsedSincePrevious:0})}),cg={[Jp]:{_Out:C,_In:C,_Env:C},pipe(){return U(this,arguments)}},Vo=e=>b(e,Jp),we=e=>{let t=Object.create(cg);return t.step=e,t},Nr=()=>{let e=0,t,r;return(n,o)=>{r===void 0&&(r=n);let s=n-r,i=t===void 0?0:n-t;return t=n,{input:o,attempt:++e,start:r,now:n,elapsed:s,elapsedSincePrevious:i}}},Qt=e=>we(k(e,t=>{let r=Nr();return(n,o)=>t(r(n,o))})),tt=e=>Ce(e.step,t=>m(()=>A(t))),Fr=e=>xe(t=>k(tt(e),r=>{let n=Nr();return o=>T(()=>{let s=t.currentTimeMillisUnsafe();return x(r(s,o),([i,a])=>{let u=n(s,o);return u.output=i,u.duration=a,ue(Xt(a),u)})})})),ag=e=>k(Fr(e),t=>r=>k(t(r),n=>n.output)),ug=c(2,(e,t)=>gc(e,r=>k(t(r),n=>ao(q(n),r.duration)))),fg=c(2,(e,t)=>Bo(Kp(e,t),({output:r})=>m(ka(r)))),Kp=c(2,(e,t)=>we(E(()=>{let r=0,n,o=Bo(e,({output:i})=>j(i)),s=Bo(t,({output:i})=>G(i));return function i(a,u){return n?n(a,u):tt(r===0?o:s).pipe(x(f=>(r++,r===1?(n=(d,p)=>Ho(f(d,p),g=>(n=void 0,i(d,p))),n(a,u)):(n=f,n(a,u)))))}}))),lg=e=>we(k(Gt(e.map(tt)),t=>(r,n)=>x(ae(t,o=>_n(o(r,n),{onSuccess:s=>m(s[1]),onDone:()=>vn,onFailure:A})),o=>{let s=pg(o);return s===void 0?Qe(L):m([s,s])}))),pg=e=>{let t=e[0];for(let r=1;r<e.length&&(t=e[r]&&t&&Fs(t,e[r]),t!==void 0);r++);return t},dg=(e,t)=>{let r=xc(e)?G(e):qp(e,t);return we(k(Jt(r),n=>(o,s)=>o===Number.POSITIVE_INFINITY?Qe(L):E(()=>{let i=Wp(n,o).getTime(),a=Te(i-o);return[a,a]})))},mg=e=>{let t=q(e);return Qt(m(r=>r.attempt===1?m([t,t]):Qe(L)))},xg=e=>{let t=We(e);return Qt(m(r=>{let n=Te(r.elapsed);return r.elapsed>t?Qe(n):m([n,L])}))},hg=e=>we(k(Gt(e.map(tt)),t=>(r,n)=>x(ae(t,o=>_n(o(r,n),{onSuccess:s=>m(s[1]),onDone:()=>vn,onFailure:A})),o=>{let s=gg(o);return s===void 0?Qe(L):m([s,s])}))),gg=e=>{let t;for(let r=0;r<e.length;r++){let n=e[r];n!==void 0&&(t=t===void 0?n:Ns(t,n))}return t},yg=(e,t=2)=>{let r=We(q(e));return Qt(m(n=>{let o=Te(r*Math.pow(t,n.attempt-1));return m([o,o])}))},bg=e=>{let t=We(q(e));return we(E(()=>{let r=0,n=t;return ee(E(()=>{let o=r+n;r=n,n=o;let s=Te(o);return[s,s]}))}))},Sg=e=>{let t=We(q(e));return Qt(E(()=>{let r=0,n=0;return o=>E(()=>{if(t===0)return[o.attempt-1,L];if(o.attempt===1)return r=o.now,n=o.now+t,[0,Te(t)];let s=o.now>n+t,i=t-(o.now-r)%t,a=s?0:i===0?t:i;return n=s?o.now:o.now+a,[o.attempt-1,Te(a)]})}))},Bo=c(2,(e,t)=>we(k(tt(e),r=>{let n=Nr();return(o,s)=>_n(r(o,s),{onSuccess:([i,a])=>{let u=t({...n(o,s),output:i,duration:a});return y(u)?k(u,f=>[f,a]):m([u,a])},onFailure:A,onDone:i=>{let a=t({...n(o,s),output:i,duration:L});return y(a)?x(a,Qe):Qe(a)}})}))),gc=c(2,(e,t)=>we(k(tt(e),r=>{let n=Nr();return(o,s)=>x(r(o,s),([i,a])=>k(t({...n(o,s),output:i,duration:a}),u=>[i,q(u)]))}))),Eg=e=>gc(e,({duration:t})=>k(ig,r=>{let n=We(t);return Te(n*.8*(1-r)+n*1.2*r)})),Jo=e=>we(k(tt(e),t=>(r,n)=>_n(t(r,n),{onSuccess:o=>m([n,o[1]]),onFailure:A,onDone:()=>Qe(n)}))),yc=e=>er(Ko,({attempt:t})=>m(t<=e)),Zp=e=>{let t=q(e);return Qt(m(r=>m([r.attempt-1,t])))},vg=c(2,(e,t)=>we(k(tt(e),r=>{let n=Nr();return(o,s)=>Ut(r(o,s),([i,a])=>t({...n(o,s),output:i,duration:a}))}))),Tg=c(2,(e,t)=>{let r=t.duration===void 0?void 0:q(t.duration);return er(e,({attempt:n,elapsed:o})=>m((t.times===void 0||n<=t.times)&&(r===void 0||Ds(Te(o),r))))}),er=c(2,(e,t)=>we(k(tt(e),r=>{let n=Nr();return(o,s)=>x(r(o,s),i=>{let[a,u]=i,f=t({...n(o,s),output:a,duration:u});return x(y(f)?f:m(f),d=>d?m(i):Qe(a))})})));var Cg=e=>{let t=We(q(e));return Qt(m(r=>E(()=>[r.attempt-1,t===0?L:Te(t-r.elapsed%t)])))},Ko=Zp(L),kg=we(m((e,t)=>m([t,L]))),wg=()=>kg;var Ig=()=>e=>e;var Og=(e,t,r)=>Fo(n=>x(r?.local?sc(t,oc(),n):mp(t,n),o=>gt(e,o))),Zo=c(e=>y(e[0]),(e,t,r)=>Rs(t)?gt(e,t):Og(e,Array.isArray(t)?gp(...t):t,r));var bc=c(3,(e,t,r)=>x(Fr(t),n=>{let o=Lt.defaultValue();return ke(Oo(Ut(x(T(()=>me(e,Lt,o)),n),s=>E(()=>{o=s})),{disableYield:!0}),s=>Zr(s)?m(s.value):r(s,o.attempt===0?V():J(o)))})),Sc=c(3,(e,t,r)=>x(Fr(t),n=>{let o=Lt.defaultValue(),s,i=ke(T(()=>me(e,Lt,o)),a=>(s=a,x(n(a),u=>(o=u,i))));return Ho(i,a=>_(()=>r(s,a)))})),Yp=c(2,(e,t)=>{let r=typeof t=="function"?t(C):Vo(t)?t:Mn(t);return bc(e,r,$)}),Rn=c(2,(e,t)=>{let r=typeof t=="function"?t(C):Vo(t)?t:Mn(t);return Sc(e,r,$)}),Xp=c(3,(e,t,r)=>x(Fr(r),n=>{let o=Lt.defaultValue(),s=T(()=>me(e,Lt,o));return ke(x(n(t),i=>{o=i;let a=ee(x(s,n));return St({while:kt,body:a,step(u){o=u}})}),i=>Zr(i)?m(i.value):$(i))})),_g=Jo(Ko),Mn=e=>{let t=e.schedule?Jo(e.schedule):_g;return e.while&&(t=er(t,({input:r})=>{let n=e.while(r);return y(n)?n:m(n)})),e.until&&(t=er(t,({input:r})=>{let n=e.until(r);return y(n)?k(n,o=>!o):m(!n)})),e.times!==void 0&&(t=er(t,({attempt:r})=>m(r<=e.times))),t};var Rg=(e,t)=>{let r=-1,n=0,o=s=>Mo(e(s));return{begin:xe(s=>T(()=>{let i=t();i.stepIndex!==r&&(r=i.stepIndex,n=0),n++;let a={attempt:i.attempt,stepAttempt:n,stepIndex:i.stepIndex,startNanos:s.monotonicTimeNanosUnsafe()};return ue(o({_tag:"AttemptStart",attempt:a.attempt,stepAttempt:a.stepAttempt,stepIndex:a.stepIndex}),a)})),end:(s,i)=>xe(a=>{let u=Mt(a.monotonicTimeNanosUnsafe()-s.startNanos);return o(i._tag==="Success"?{_tag:"AttemptSuccess",attempt:s.attempt,stepAttempt:s.stepAttempt,stepIndex:s.stepIndex,duration:u}:{_tag:"AttemptFailure",attempt:s.attempt,stepAttempt:s.stepAttempt,stepIndex:s.stepIndex,duration:u,cause:i.cause})})}},td=c(e=>y(e[0]),(e,t,r)=>T(()=>{let n=0,o={attempt:0,stepIndex:0},s=Io(Sp,E(()=>(o={attempt:o.attempt+1,stepIndex:n},o))),i=r?.onEvent===void 0?void 0:Rg(r.onEvent,()=>o),a=i===void 0?C:f=>Zt(d=>x(i.begin,p=>ne(d(f),g=>i.end(p,g)))),u;return x(St({while:()=>n<t.steps.length&&(u===void 0||K(u)),body(){let f=t.steps[n],d=s(a(Zo(e,f.provide)));if(u){let p=!1,g=d;d=T(()=>p?g:(p=!0,Jt(u))),d=Rn(d,ed(f,!1))}else{let p=ed(f,!0);d=p?Rn(d,p):d}return At(d)},step(f){u=f,n++}}),()=>Jt(u))})),ed=(e,t)=>{if(t){if(e.attempts===1||!(e.schedule||e.attempts))return}else return Mn({schedule:e.schedule?e.schedule:e.attempts?void 0:Mg,times:e.attempts,while:e.while});return Mn({schedule:e.schedule,while:e.while,times:e.attempts?e.attempts-1:void 0})},Mg=yc(1);var Ng="~effect/Request",Fg=Lc({_E:e=>e,_A:e=>e,_R:e=>e}),nC={...sa,[Ng]:Fg};var rd=e=>e;var od=c(2,(e,t)=>{let r=n=>se(o=>{let s=id(n,e,o,br());return Dg(n,s)});return y(t)?x(t,r):r(t)}),sd=(e,t)=>{let r=id(t.resolver,e,t.onExit,{context:t.context,currentScheduler:Se(t.context,nn)});return()=>cd(t.resolver,r)},Go=[],Ec=new WeakMap,id=(e,t,r,n)=>{let o=Ec.get(e);o||(o=new Map,Ec.set(e,o));let s,i=!1,a=rd({request:t,context:n.context,uninterruptible:!1,completeUnsafe(f){i||(i=!0,r(f),s?.entrySet.delete(a))}});if(e.preCheck!==void 0&&!e.preCheck(a))return a;let u=e.batchKey(a);if(s=o.get(u),!s){if(Go.length>0)s=Go.pop(),s.key=u,s.resolver=e,s.map=o;else{let f={key:u,resolver:e,map:o,entrySet:new Set,entries:new Set,delayEffect:x(T(()=>f.resolver.delay),d=>nd(f)),run:ne(T(()=>f.resolver.runAll(Array.from(f.entries),f.key)),d=>{for(let p of f.entrySet)p.completeUnsafe(d._tag==="Success"?ut(new Error("Effect.request: RequestResolver did not complete request",{cause:p.request})):d);return f.entries.clear(),Go.length<128&&(f.entrySet.clear(),f.key=void 0,f.fiber=void 0,f.resolver=void 0,f.map=void 0,Go.push(f)),I})};s=f}o.set(u,s),s.fiber=Et(n.context)(s.delayEffect,{scheduler:n.currentScheduler})}return s.entrySet.add(a),s.entries.add(a),s.resolver.collectWhile(s.entries)||(s.fiber.interruptUnsafe(n.id),s.fiber=Et(n.context)(nd(s),{scheduler:n.currentScheduler})),a},cd=(e,t)=>{if(t.uninterruptible)return;let r=Ec.get(e);if(!r)return;let n=e.batchKey(t),o=r.get(n);o&&(o.entries.delete(t),o.entrySet.delete(t),o.entries.size===0&&(r.delete(n),o.fiber?.interruptUnsafe()))},Dg=(e,t)=>E(()=>cd(e,t));function nd(e){return e.map.has(e.key)?(e.map.delete(e.key),e.run):I}var Lg="effect/Metric/CurrentMetricAttributes",$g=M(Lg,{defaultValue:()=>({})}),qg="~effect/observability/Metric/MetricRegistryKey",Wg=M(qg,{defaultValue:()=>new Map}),ad="~effect/observability/Metric",ud=class{[ad]=ad;#t=new WeakMap;#e;id;description;attributes;constructor(t,r,n){this.id=t,this.description=r,this.attributes=n}valueUnsafe(t){return this.hook(t).get(t)}modifyUnsafe(t,r){return this.hook(r).modify(t,r)}updateUnsafe(t,r){return this.hook(r).update(t,r)}hook(t){let r=Se(t,$g);if(Object.keys(r).length===0)return sr(this.#e)?this.#e.hooks:(this.#e=this.getOrCreate(t,this.attributes),this.#e.hooks);let n=Hg(this.attributes,r),o=this.#t.get(n);return sr(o)||(o=this.getOrCreate(t,n),this.#t.set(n,o)),o.hooks}getOrCreate(t,r){let n=zg(this,r),o=Se(t,Wg);if(o.has(n))return o.get(n);let s=this.createHooks(),i={id:this.id,type:this.type,description:this.description,attributes:vc(r),hooks:s};return o.set(n,i),i}pipe(){return U(this,arguments)}};var Ur=c(2,(e,t)=>Dt(r=>E(()=>e.updateUnsafe(t,r))));function zg(e,t){let r=`${e.type}:${e.id}`;return sr(e.description)&&(r+=`:${e.description}`),sr(t)&&(r+=`:${jg(t)}`),r}function jg(e){return JSON.stringify(Array.isArray(e)?e:Object.entries(e))}function Hg(e,t){return{...vc(e),...vc(t)}}function vc(e){return sr(e)&&Array.isArray(e)?e.reduce((t,[r,n])=>(ye(t,r,n),t),{}):e}var Bg=Ze,tr=y,Vg=Gt,Jg=Ji,Kg=tl,Zg=rl,Gg=nl,Yg=sl,Xg=ae,Qg=cl,pd=St,ey=yi,ty=Bu,dd=m,ry=hn,ny=gi,md=T,fe=E,Cc=I;var oy=vn;var kc=se,sy=To,iy=pl,cy=dl,ay=xl;var uy=ml,fy=Zu,Tc=$,ly=vo,py=A,dy=ju,xd=Nt,my=Hu;var xy=Er,hy=hi,hd=v,gy=Jt,yy=xi,by=zu,Sy=Wu,wc=x,Ey=nf,vy=Ft,gd=Ut,Ty=At,Cy=Uf,yd=bn,ky=k,wy=ue,Iy=Co,Oy=vr,_y=Xu,Ry=yf,My=ki,Ay=ke;var Ny=_i,Fy=Of,Uy=_f,Dy=Rf,Py=Mf,Ly=Ce,$y=Tf,qy=gn,Wy=Ro,zy=vf,jy=Ii,Hy=Cr,By=Ri,Vy=Mi,Jy=Ai,bd=Oi,Ky=wf,Sd=Cf,Zy=kf,Gy=_o,Ed=If,Yy=Ni,Xy=Rn,Qy=Sc,eb=Qu,tb=Ff,rb=Mo,nb=td,ob=Gl,sb=Af,ib=Nf,cb=qf,ab=Wf,ub=Ui,fb=$f,lb=Xt,pb=zf,db=vi,mb=Ti,xb=ef,hb=ko,gb=ul,yb=fl,bb=ll,Sb=Ki,Eb=Zi,vb=bf,Tb=al,Cb=Sf,kb=Ao,wb=yn,Ib=Fi,Ob=Df,_b=tf,Rb=Xe,Mb=Kt,Ab=Pf,Nb=Lf,Fb=Ci,Ub=Dt,Db=Zo,Pb=gt,Lb=gf,$b=mf,qb=xf,Wb=Tr,zb=ht,jb=hf,vd=me,Hb=Io,Bb=En,Vb=Li,Jb=Fo,Kb=Uo,Zb=Kf,Gb=Jf,Yb=$i,Xb=Hf,Qb=zi,e0=Bf,t0=ji,r0=wr,Ic=ne,n0=qi,o0=Wi,s0=Zf,i0=Bi,c0=Hi,Td=Gf,a0=Vi,u0=Vf,f0=bt,Cd=Zt,l0=Qf,p0=el,d0=Oo,m0=Yp,x0=bc,h0=wi,g0=Ef,y0=c(2,(e,t)=>kd(e,void 0,t)),kd=Xp,b0=Il,S0=Ol,E0=_l,v0=Rl,T0=$l,C0=ql,k0=Wl,w0=zl,I0=Fl,O0=Ul,_0=Dl,R0=Al,M0=pn,A0=dn,N0=Ll,F0=Nl,U0=yr,D0=od,P0=sd,L0=hl,$0=Gi,q0=bl,W0=gl,z0=yl,j0=Ju,H0=Ku,B0=El,V0=Et,J0=Yi,K0=vl,Z0=Cl,G0=Xi,Y0=Tl,X0=Po,Q0=wl,eS=Qi,tS=kl,rS=Lo,nS=Si,oS=Gu,wd=xe,sS=He,iS=He(),cS=He("Fatal"),aS=He("Warn"),uS=He("Error"),fS=He("Info"),lS=He("Debug"),pS=He("Trace"),dS=c(2,(e,t)=>ht(e,tc,r=>new Set([...r,t]))),mS=c(e=>tr(e[0]),(e,...t)=>ht(e,sp,r=>{let n=t.length===1?{...r,...t[0]}:{...r};return t.length===1||ye(n,t[0],t[1]),n})),xS=Kl,hS=c(2,(e,t)=>x($o,r=>ht(e,ip,n=>[[t,r],...n]))),gS=c(e=>tr(e[0]),(e,t,r)=>Ic(e,n=>{let o=r===void 0?n:_(()=>r(n));return Ur(t,o)})),yS=c(e=>tr(e[0]),(e,t,r)=>gd(e,n=>{let o=r===void 0?n:r(n);return Ur(t,o)})),bS=c(e=>tr(e[0]),(e,t,r)=>bd(e,n=>{let o=r===void 0?n:_(()=>r(n));return Ur(t,o)})),SS=c(e=>tr(e[0]),(e,t,r)=>Ed(e,n=>{let o=r===void 0?n:_(()=>r(n));return Ur(t,o)})),ES=c(e=>tr(e[0]),(e,t,r)=>wd(n=>{let o=n.monotonicTimeNanosUnsafe();return Ic(e,()=>{let s=n.monotonicTimeNanosUnsafe(),i=Us(q(s),q(o)),a=r===void 0?i:_(()=>r(i));return Ur(t,a)})})),Dr=class extends lt()("effect/Effect/Transaction"){},vS=e=>hd(t=>{let r=to(t.context,Dr);if(r)return e;r={journal:new Map,retry:!1};let n;return Cd(o=>wc(pd({while:()=>!n,body:ee(o(e).pipe(vd(Dr,r),Sd(()=>r.retry?o(CS(r)):Cc),yd)),step(s){if(r.retry||!TS(r))return ld(r);Ql(s)?kS(t,r):ld(r),n=s}}),()=>n))}),TS=e=>{for(let[t,{version:r}]of e.journal)if(t.version!==r)return!1;return!0},CS=e=>md(()=>{let t={},r=Array.from(e.journal.keys()),n=()=>{for(let o of r)o.pending.delete(t)};return kc(o=>{let s=()=>{n(),o(Cc)};for(let i of r)i.pending.set(t,s);return fe(n)})});function kS(e,t){for(let[r,{value:n}]of t.journal){n!==r.value&&(r.version=r.version+1,r.value=n);for(let o of r.pending.values())e.currentDispatcher.scheduleTask(o,0);r.pending.clear()}}function ld(e){e.retry=!1,e.journal.clear()}var wS=wc(Dr,e=>(e.retry=!0,Td)),IS=(e,t,r)=>(...n)=>kc(o=>{try{e(...n,(s,i)=>{o(s?Tc(t?t(s,n):s):dd(i))})}catch(s){o(r?Tc(r(s,n)):xd(s))}}),OS=()=>e=>e,_S=()=>e=>e,RS=()=>e=>e,MS=of,AS=sf,NS=cf,FS=rf,US=af,DS=Yu;var An={};nr(An,{await:()=>PS,awaitAll:()=>LS,getCurrent:()=>VS,interrupt:()=>WS,interruptAll:()=>jS,interruptAllAs:()=>HS,interruptAs:()=>zS,isFiber:()=>BS,join:()=>$S,joinAll:()=>qS,runIn:()=>JS});var PS=di;var LS=Sr,$S=Lu,qS=$u,WS=Eo,zS=mi,jS=mt,HS=qu,BS=e=>b(e,fn),VS=br,JS=Sl;var Id="~effect/MutableRef",KS={[Id]:Id,...$e,toJSON(){return{_id:"MutableRef",current:Ve(this.current)}}},Od=e=>{let t=Object.create(KS);return t.current=e,t};var _d=c(2,(e,t)=>(e.current=t,e));var Y={};nr(Y,{get:()=>XS,getAndSet:()=>eE,getAndUpdate:()=>tE,getAndUpdateSome:()=>rE,getUnsafe:()=>uE,make:()=>YS,makeUnsafe:()=>Md,modify:()=>Ad,modifySome:()=>oE,set:()=>QS,setAndGet:()=>nE,update:()=>sE,updateAndGet:()=>iE,updateSome:()=>cE,updateSomeAndGet:()=>aE});var ZS="~effect/Ref",GS={[ZS]:{_A:C},...$e,toJSON(){return{_id:"Ref",ref:this.ref}}},Md=e=>{let t=Object.create(GS);return t.ref=Od(e),t},YS=e=>fe(()=>Md(e)),XS=e=>fe(()=>e.ref.current),QS=c(2,(e,t)=>fe(()=>_d(e.ref,t))),eE=c(2,(e,t)=>fe(()=>{let r=e.ref.current;return e.ref.current=t,r})),tE=c(2,(e,t)=>fe(()=>{let r=e.ref.current;return e.ref.current=t(r),r})),rE=c(2,(e,t)=>fe(()=>{let r=e.ref.current,n=t(r);return n._tag==="Some"&&(e.ref.current=n.value),r})),nE=c(2,(e,t)=>fe(()=>e.ref.current=t)),Ad=c(2,(e,t)=>fe(()=>{let[r,n]=t(e.ref.current);return e.ref.current=n,r})),oE=c(2,(e,t)=>Ad(e,r=>{let[n,o]=t(r);return[n,o._tag==="None"?r:o.value]})),sE=c(2,(e,t)=>fe(()=>{e.ref.current=t(e.ref.current)})),iE=c(2,(e,t)=>fe(()=>e.ref.current=t(e.ref.current))),cE=c(2,(e,t)=>fe(()=>{let r=t(e.ref.current);r._tag==="Some"&&(e.ref.current=r.value)})),aE=c(2,(e,t)=>fe(()=>{let r=t(e.ref.current);return r._tag==="Some"&&(e.ref.current=r.value),e.ref.current})),uE=e=>e.ref.current;var fE={workers:new Map};function lE(e,t,r,n=1){let o=new Map(e.workers),s=o.get(t);return o.set(t,{id:t,types:new Set(r),capacity:n,active:s?.active??0}),{workers:o}}function pE(e,t){if(!e.workers.has(t))return e;let r=new Map(e.workers);return r.delete(t),{workers:r}}function dE(e,t,r){let n=e.workers.get(t);if(!n)return e;let o=new Map(e.workers);return o.set(t,{...n,types:new Set(r)}),{workers:o}}function mE(e,t){let r=e.workers.get(t);if(!r)throw new Error(`acquire: unknown worker ${t}`);if(r.active>=r.capacity)throw new Error(`acquire: worker ${t} at capacity`);let n=new Map(e.workers);return n.set(t,{...r,active:r.active+1}),{workers:n}}function xE(e,t){let r=e.workers.get(t);if(!r)return e;let n=new Map(e.workers);return n.set(t,{...r,active:Math.max(0,r.active-1)}),{workers:n}}function hE(e,t){let r=0;for(let n of e.workers.values())n.types.has(t)&&(r+=Math.max(0,n.capacity-n.active));return r}function gE(e){let t=new Set;for(let r of e.workers.values())for(let n of r.types)t.add(n);return t}function yE(e){let t=[];for(let r of gE(e))hE(e,r)>0&&t.push(r);return t}function bE(e,t){for(let r of e.workers.values())if(r.types.has(t)&&r.active<r.capacity)return r.id;return null}var iw=(e=fE)=>h.gen(function*(){let t=yield*Y.make(e);return{get:Y.get(t),add:(n,o,s=1)=>Y.update(t,i=>lE(i,n,o,s)),remove:n=>Y.update(t,o=>pE(o,n)),setTypes:(n,o)=>Y.update(t,s=>dE(s,n,o)),claim:n=>Y.modify(t,o=>{let s=bE(o,n);return s===null?[null,o]:[s,mE(o,s)]}),releaseWorker:n=>Y.update(t,o=>xE(o,n)),pollTypes:Y.get(t).pipe(h.map(yE))}});var Nd={keySetHash:"",xmlByKey:new Map,jobTypes:[]};function SE(e){return[...e].sort().join("\0")}function EE(e,t,r,n){let o=new Set,s=[];for(let i of e){let a=t.get(i);if(a!==void 0)for(let u of r(a))n&&!(u.process===n||u.process.startsWith(n))||o.has(u.taskType)||(o.add(u.taskType),s.push(u.taskType))}return s}var Fd=(e,t,r,n="")=>h.gen(function*(){let o=yield*e.searchProcessDefinitionKeys(),s=SE(o);if(s===r.keySetHash)return{cache:r,crawled:!1,fetchedKeys:[]};let i=new Set(o),a=new Map;for(let[d,p]of r.xmlByKey)i.has(d)&&a.set(d,p);let u=[];for(let d of o){if(a.has(d))continue;let p=yield*e.getProcessDefinitionXml(d);a.set(d,p),u.push(d)}let f=EE(o,a,t,n);return{cache:{keySetHash:s,xmlByKey:a,jobTypes:f},crawled:!0,fetchedKeys:u}});var Oc={requestTimeoutMs:1e4,initialLockMs:15e3,emptyPollBackoffMs:0},vE=(e,t,r)=>h.gen(function*(){for(;;){let n=yield*e.activate({type:t,maxJobsToActivate:1,requestTimeoutMs:r.requestTimeoutMs,lockMs:r.initialLockMs});if(n.length>0)return n[0];r.emptyPollBackoffMs>0&&(yield*h.sleep(oe.millis(r.emptyPollBackoffMs)))}}),Ud=(e,t,r)=>t.length===0?h.die(new Error("activateWinner: no serviceable-with-capacity types to poll")):h.raceAll(t.map(n=>vE(e,n,r)));var _c={recoveryWindowMs:3e5,extendIntervalMs:6e4},Rc=(e,t,r)=>h.gen(function*(){let{engine:n,runner:o,registry:s,logger:i,config:a}=e;return(yield*n.extendLock(t.jobKey,a.recoveryWindowMs).pipe(h.as(!0),h.catch(f=>(i.warn(`[${t.type}] job ${t.jobKey}: winner extend failed (${f.message}) \u2014 not starting; slot released`),h.succeed(!1)))))?(yield*h.gen(function*(){let f=n.extendLock(t.jobKey,a.recoveryWindowMs).pipe(h.catch(p=>h.sync(()=>i.warn(`[${t.type}] job ${t.jobKey}: heartbeat extend failed \u2014 ${p.message}`)))),d=yield*h.forkChild(h.sleep(oe.millis(a.extendIntervalMs)).pipe(h.flatMap(()=>f),h.forever));yield*o.run(t).pipe(h.catch(p=>h.sync(()=>i.warn(`[${t.type}] job ${t.jobKey}: run failed \u2014 ${p.message}`))),h.ensuring(An.interrupt(d)))}).pipe(h.ensuring(s.releaseWorker(r))),{started:!0}):(yield*s.releaseWorker(r),{started:!1,reason:"extend-failed"})});function Nn(e,t){return e.filter(r=>r.lockDeadlineMs>t)}function TE(e,t,r){let n=Nn(e,r),o=n.findIndex(a=>t.has(a.job.type));if(o===-1)return{picked:null,rest:n};let s=n[o],i=n.filter((a,u)=>u!==o);return{picked:s,rest:i}}var Dd=()=>h.gen(function*(){let e=yield*Y.make([]);return{park:(t,r)=>Pt.currentTimeMillis.pipe(h.flatMap(n=>Y.update(e,o=>[...Nn(o,n),{job:t,lockDeadlineMs:n+r}]))),repark:t=>Pt.currentTimeMillis.pipe(h.flatMap(r=>Y.update(e,n=>t.lockDeadlineMs>r?[...Nn(n,r),t]:Nn(n,r)))),takeFor:t=>Pt.currentTimeMillis.pipe(h.flatMap(r=>Y.modify(e,n=>{let{picked:o,rest:s}=TE(n,t,r);return[o,s]}))),size:Pt.currentTimeMillis.pipe(h.flatMap(t=>Y.updateAndGet(e,r=>Nn(r,t))),h.map(t=>t.length))}});var Pd={reconnectBaseMs:500,reconnectMaxMs:3e4},CE=(e,t,r=Pd)=>h.acquireRelease(e.connect().pipe(h.tap(()=>h.sync(()=>t.debug?.("agentic: connected"))),h.retry(rt.exponential(oe.millis(r.reconnectBaseMs)).pipe(rt.jittered,rt.upTo({duration:oe.millis(r.reconnectMaxMs)})))),n=>n.disconnect.pipe(h.tap(()=>h.sync(()=>t.debug?.("agentic: disconnected"))),h.ignore)),Ld=(e,t,r,n=Pd)=>h.scoped(CE(e,t,n).pipe(h.flatMap(r)));var kE={activation:Oc,dispatch:_c,reconcileIntervalMs:3e4,idleSpacingMs:1e3,scope:""},kw=e=>h.gen(function*(){let t=e.logger??Ac,r={...kE,...e.config,activation:{...Oc,...e.config?.activation},dispatch:{..._c,...e.config?.dispatch}},n=yield*Dd(),o=yield*Y.make(Nd),s={engine:e.engine,runner:e.runner,registry:e.registry,logger:t,config:r.dispatch},i=Y.get(o).pipe(h.flatMap(d=>Fd(e.reconcileReader,e.scan,d,r.scope)),h.flatMap(d=>Y.set(o,d.cache).pipe(h.flatMap(()=>e.autoWorkerId?e.registry.setTypes(e.autoWorkerId,d.cache.jobTypes):h.void))),h.catch(d=>h.sync(()=>t.warn(`reconcile skipped \u2014 ${d.message} (keeping current job-type set)`)))),a=e.registry.pollTypes.pipe(h.flatMap(d=>{if(d.length===0)return h.sleep(oe.millis(r.idleSpacingMs));let p=new Set(d);return n.takeFor(p).pipe(h.flatMap(g=>g?e.registry.claim(g.job.type).pipe(h.flatMap(l=>l?h.forkChild(Rc(s,g.job,l)).pipe(h.asVoid):n.repark(g))):Ud(e.engine,d,r.activation).pipe(h.flatMap(l=>e.registry.claim(l.type).pipe(h.flatMap(w=>w?h.forkChild(Rc(s,l,w)).pipe(h.asVoid):n.park(l,r.activation.initialLockMs)))),h.catch(l=>h.sync(()=>t.warn(`activation error \u2014 ${l.message}`))))))})),u=h.gen(function*(){return yield*h.forkChild(i.pipe(h.repeat(rt.spaced(oe.millis(r.reconcileIntervalMs))))),yield*a.pipe(h.forever)}),f=e.agenticEndpoint?Ld(e.agenticEndpoint,t,()=>u,e.agenticConfig):u;return{tick:a,reconcileOnce:i,run:f,parking:n}});export{Pt as Clock,oe as Duration,h as Effect,An as Fiber,Y as Ref,rt as Schedule,Mc as SupervisorError,mE as acquire,CE as acquireAgentic,Ud as activateWinner,lE as addWorker,Oc as defaultActivationConfig,Pd as defaultAgenticConfig,_c as defaultDispatchConfig,kE as defaultSupervisorConfig,Rc as dispatch,Nd as emptyCache,fE as emptyRegistry,hE as freeSlotsFor,SE as hashKeys,Dd as makeParkingLot,iw as makeRegistry,kw as makeSupervisor,Ac as noopLogger,bE as pickWorkerFor,Nn as prune,Fd as reconcile,xE as release,pE as removeWorker,gE as serviceableTypes,dE as setWorkerTypes,TE as takeValidFor,yE as typesWithCapacity,Ld as withAgenticConnection};
|
package/work-relay.mjs
CHANGED
|
@@ -62,6 +62,36 @@ export const RELAY_OPEN_CHUNK = `${agenticTranscript.encodeTranscriptEvent({
|
|
|
62
62
|
phase: 'open',
|
|
63
63
|
})}\n`;
|
|
64
64
|
|
|
65
|
+
/**
|
|
66
|
+
* The final produce frame emitted on a relay stream the instant a session is
|
|
67
|
+
* closed: the closing twin of {@link RELAY_OPEN_CHUNK} — a canonical
|
|
68
|
+
* `@nanobpm/agentic` lifecycle "close" transcript event.
|
|
69
|
+
*
|
|
70
|
+
* It carries no agent output — its sole job is to CLOSE the `job:<jobKey>`
|
|
71
|
+
* stream so the app can flush the durable transcript deterministically at job
|
|
72
|
+
* completion (nanobpm/nano-workforce#710), instead of relying only on the
|
|
73
|
+
* supersede/disconnect fallback (which can abandon the tail frames). Without it,
|
|
74
|
+
* a completed job's live-terminal transcript is truncated at the tail. Emitted
|
|
75
|
+
* from {@link RelaySession.close} before the outbound buffer is drained, so the
|
|
76
|
+
* close marker itself rides the same buffered, QoS-ordered relay lane as the
|
|
77
|
+
* agent's output (and survives a brief hub outage via C4's ring where possible).
|
|
78
|
+
* Newline-framed to match `RELAY_OPEN_CHUNK`, and derived through
|
|
79
|
+
* `encodeTranscriptEvent` (never hand-rolled) so the wire marker stays
|
|
80
|
+
* single-sourced in `@nanobpm/agentic`.
|
|
81
|
+
*/
|
|
82
|
+
export const RELAY_CLOSE_CHUNK = `${agenticTranscript.encodeTranscriptEvent({
|
|
83
|
+
kind: 'lifecycle',
|
|
84
|
+
phase: 'close',
|
|
85
|
+
})}\n`;
|
|
86
|
+
|
|
87
|
+
/** Default bound on the outbound-buffer drain at session close (ms). A hub
|
|
88
|
+
* outage must never wedge job completion, so the drain is always bounded: on
|
|
89
|
+
* timeout the caller completes anyway and the app's supersede/disconnect
|
|
90
|
+
* fallback still eventually flushes whatever arrived. */
|
|
91
|
+
export const DEFAULT_DRAIN_TIMEOUT_MS = 2_000;
|
|
92
|
+
/** Default poll cadence while awaiting `channel.buffered() → 0` (ms). */
|
|
93
|
+
export const DEFAULT_DRAIN_POLL_MS = 25;
|
|
94
|
+
|
|
65
95
|
/**
|
|
66
96
|
* Resolve a role's terminal mode — whether the agent harness for this role gets
|
|
67
97
|
* a full PTY or a plain pipe. Honors the vocab's per-role opt-in: a role may set
|
|
@@ -113,7 +143,7 @@ export function parseInboundRelayChunk(frame, stream) {
|
|
|
113
143
|
* @property {string} stream the relay stream name (derived from the jobKey)
|
|
114
144
|
* @property {(chunk: string|Uint8Array) => void} relay publish one framed, jobKey-tagged output chunk on the relay lane
|
|
115
145
|
* @property {(write: (chunk: string) => void) => (() => void)} attachSteer wire inbound steer bytes for this stream to `write`; returns a detach fn
|
|
116
|
-
* @property {() =>
|
|
146
|
+
* @property {() => Promise<{ closeEmitted: boolean, drained: boolean, timedOut: boolean }>} close emit the `phase:close` lifecycle event, detach any steer subscription, then drain the outbound buffer (bounded)
|
|
117
147
|
*/
|
|
118
148
|
|
|
119
149
|
/**
|
|
@@ -132,9 +162,21 @@ export function parseInboundRelayChunk(frame, stream) {
|
|
|
132
162
|
* @param {import('./work-channel.mjs').WorkChannel} opts.channel the C2 channel holder (NOT re-instantiated)
|
|
133
163
|
* @param {string|number} opts.jobKey the activated job's key; tags every frame and names the stream
|
|
134
164
|
* @param {{ warn?: Function, debug?: Function }} [opts.logger]
|
|
165
|
+
* @param {number} [opts.drainTimeoutMs] bound on the close-time outbound-buffer drain (ms); a hub outage must never wedge completion
|
|
166
|
+
* @param {number} [opts.drainPollMs] poll cadence while awaiting `channel.buffered() → 0` (ms)
|
|
167
|
+
* @param {(ms: number) => Promise<void>} [opts.sleep] injectable delay (tests); defaults to a `setTimeout` promise
|
|
168
|
+
* @param {() => number} [opts.now] injectable clock (tests); defaults to `Date.now`
|
|
135
169
|
* @returns {RelaySession}
|
|
136
170
|
*/
|
|
137
|
-
export function createRelaySession({
|
|
171
|
+
export function createRelaySession({
|
|
172
|
+
channel,
|
|
173
|
+
jobKey,
|
|
174
|
+
logger,
|
|
175
|
+
drainTimeoutMs = DEFAULT_DRAIN_TIMEOUT_MS,
|
|
176
|
+
drainPollMs = DEFAULT_DRAIN_POLL_MS,
|
|
177
|
+
sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)),
|
|
178
|
+
now = () => Date.now(),
|
|
179
|
+
} = {}) {
|
|
138
180
|
if (!channel || typeof channel.relayLane !== 'function') {
|
|
139
181
|
throw new Error('createRelaySession requires a WorkChannel with a relayLane() accessor');
|
|
140
182
|
}
|
|
@@ -207,8 +249,56 @@ export function createRelaySession({ channel, jobKey, logger } = {}) {
|
|
|
207
249
|
return detach;
|
|
208
250
|
};
|
|
209
251
|
|
|
252
|
+
// The outbound-buffer drain: poll `channel.buffered()` down to zero, bounded
|
|
253
|
+
// by drainTimeoutMs. A channel without a buffered() accessor (or one that
|
|
254
|
+
// throws) is treated as already drained — the drain must never block or crash
|
|
255
|
+
// completion. Returns whether the buffer emptied and whether we hit the bound.
|
|
256
|
+
const drain = async () => {
|
|
257
|
+
if (typeof channel.buffered !== 'function') return { drained: true, timedOut: false };
|
|
258
|
+
const deadline = now() + Math.max(0, Number(drainTimeoutMs) || 0);
|
|
259
|
+
for (;;) {
|
|
260
|
+
let pending;
|
|
261
|
+
try {
|
|
262
|
+
pending = channel.buffered();
|
|
263
|
+
} catch {
|
|
264
|
+
return { drained: true, timedOut: false };
|
|
265
|
+
}
|
|
266
|
+
if (!(Number(pending) > 0)) return { drained: true, timedOut: false };
|
|
267
|
+
if (now() >= deadline) {
|
|
268
|
+
try {
|
|
269
|
+
log.warn?.(`relay drain timed out for ${stream}: ${pending} frame(s) still buffered; completing anyway`);
|
|
270
|
+
} catch {
|
|
271
|
+
/* never let a logging failure escape the drain path */
|
|
272
|
+
}
|
|
273
|
+
return { drained: false, timedOut: true };
|
|
274
|
+
}
|
|
275
|
+
await sleep(Math.max(1, Number(drainPollMs) || 1));
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
// close() is idempotent: a second call returns the same settled promise
|
|
280
|
+
// without re-emitting the close marker or re-draining.
|
|
281
|
+
let closed = false;
|
|
282
|
+
let closedPromise = Promise.resolve({ closeEmitted: false, drained: true, timedOut: false });
|
|
210
283
|
const close = () => {
|
|
284
|
+
if (closed) return closedPromise;
|
|
285
|
+
closed = true;
|
|
286
|
+
// Emit the closing lifecycle twin of RELAY_OPEN_CHUNK FIRST, so the app can
|
|
287
|
+
// flush the durable transcript deterministically at completion
|
|
288
|
+
// (nanobpm/nano-workforce#710). Routed through the internal relay(), which
|
|
289
|
+
// swallows sink errors, so emitting the close marker never fails the job. It
|
|
290
|
+
// rides the same buffered relay lane as the agent's output, and is included
|
|
291
|
+
// in the drain below.
|
|
292
|
+
relay(RELAY_CLOSE_CHUNK);
|
|
293
|
+
// Detach every steer subscription so none outlives the job.
|
|
211
294
|
for (const detach of [...activeDetaches]) detach();
|
|
295
|
+
// Then drain the outbound buffer — a bounded await until the agent's tail
|
|
296
|
+
// bytes (and the close marker) are actually transmitted before the job
|
|
297
|
+
// settles. The bound is essential: a hub outage must not wedge completion,
|
|
298
|
+
// so on timeout we resolve anyway (the app's supersede/disconnect fallback
|
|
299
|
+
// still eventually flushes what arrived).
|
|
300
|
+
closedPromise = drain().then((res) => ({ closeEmitted: true, ...res }));
|
|
301
|
+
return closedPromise;
|
|
212
302
|
};
|
|
213
303
|
|
|
214
304
|
// Open the stream the instant the session exists, so the app correlates
|