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 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
- const harnessEnv = { ...process.env, ...staticEnv, ...secretEnv, ...agentEnv, ...extraEnv, ...resultEnv };
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: { ...process.env, ...staticEnv, ...secretEnv, ...agentEnv, ...extraEnv, ...resultEnv },
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
- // Detach the relay session's inbound-frame subscription so it never
7692
- // outlives the job or leaks a steer listener across jobs.
7693
- if (relaySession) { try { relaySession.close(); } catch { /* best effort */ } }
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.44.11",
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
- "test": "node --check c8ctl-plugin.js && node --test"
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
- "semantic-release": "^25.0.3"
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.44.11",
61
- "@nanobpm/c8ctl-plugin-nano-darwin-x64": "1.44.11",
62
- "@nanobpm/c8ctl-plugin-nano-linux-x64": "1.44.11",
63
- "@nanobpm/c8ctl-plugin-nano-linux-arm64": "1.44.11",
64
- "@nanobpm/c8ctl-plugin-nano-linux-armv7": "1.44.11",
65
- "@nanobpm/c8ctl-plugin-nano-linux-armv6": "1.44.11",
66
- "@nanobpm/c8ctl-plugin-nano-win32-x64": "1.44.11"
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 {() => void} close detach any steer subscription
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({ channel, jobKey, logger } = {}) {
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