@moxt-ai/mobius 0.0.386 → 0.0.387

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.
Files changed (110) hide show
  1. package/dist/{chunk-FVYSQLQL.js → chunk-A62FEGIN.js} +11 -24
  2. package/dist/{chunk-FVYSQLQL.js.map → chunk-A62FEGIN.js.map} +3 -3
  3. package/dist/{chunk-Z6JG65YI.js → chunk-S7PKNDIS.js} +2 -2
  4. package/dist/{chunk-Z6JG65YI.js.map → chunk-S7PKNDIS.js.map} +1 -1
  5. package/dist/cli/handler/daemon/index.d.ts.map +1 -1
  6. package/dist/cli/handler/daemon/index.js +9 -4
  7. package/dist/cli/handler/daemon/index.js.map +1 -1
  8. package/dist/cli/handler/daemon/quit.d.ts.map +1 -1
  9. package/dist/cli/handler/daemon/quit.js +5 -4
  10. package/dist/cli/handler/daemon/quit.js.map +1 -1
  11. package/dist/cli/handler/daemon/release.js +1 -1
  12. package/dist/cli/handler/daemon/start.d.ts.map +1 -1
  13. package/dist/cli/handler/daemon/start.js +3 -3
  14. package/dist/cli/handler/daemon/start.js.map +1 -1
  15. package/dist/cli/handler/daemon/upgrade.d.ts.map +1 -1
  16. package/dist/cli/handler/daemon/upgrade.js +8 -24
  17. package/dist/cli/handler/daemon/upgrade.js.map +1 -1
  18. package/dist/cli/handler/pair/pair.js +3 -3
  19. package/dist/cli/handler/pair/pair.js.map +1 -1
  20. package/dist/cli/handler/pair/remove.js +1 -1
  21. package/dist/cli/handler/pair/stop.js +1 -1
  22. package/dist/cli/handler/version/index.d.ts.map +1 -1
  23. package/dist/cli/handler/version/index.js +6 -2
  24. package/dist/cli/handler/version/index.js.map +1 -1
  25. package/dist/{cli-NLIGRBEL.js → cli-43LPJ5ID.js} +412 -1143
  26. package/dist/cli-43LPJ5ID.js.map +7 -0
  27. package/dist/cli.js +1998 -6
  28. package/dist/cli.js.map +4 -4
  29. package/dist/daemon/control/protocol.d.ts +1 -133
  30. package/dist/daemon/control/protocol.d.ts.map +1 -1
  31. package/dist/daemon/control/protocol.js +4 -63
  32. package/dist/daemon/control/protocol.js.map +1 -1
  33. package/dist/daemon/lifecycle/daemon-client.d.ts +8 -0
  34. package/dist/daemon/lifecycle/daemon-client.d.ts.map +1 -0
  35. package/dist/daemon/lifecycle/daemon-client.js +154 -0
  36. package/dist/daemon/lifecycle/daemon-client.js.map +1 -0
  37. package/dist/daemon/lifecycle/{worker.d.ts → daemon.d.ts} +2 -2
  38. package/dist/daemon/lifecycle/daemon.d.ts.map +1 -0
  39. package/dist/daemon/lifecycle/daemon.js +266 -0
  40. package/dist/daemon/lifecycle/daemon.js.map +1 -0
  41. package/dist/daemon/lifecycle/unhandled-rejection.d.ts +1 -2
  42. package/dist/daemon/lifecycle/unhandled-rejection.d.ts.map +1 -1
  43. package/dist/daemon/lifecycle/unhandled-rejection.js +4 -7
  44. package/dist/daemon/lifecycle/unhandled-rejection.js.map +1 -1
  45. package/dist/daemon/upgrades/data.d.ts +0 -1
  46. package/dist/daemon/upgrades/data.d.ts.map +1 -1
  47. package/dist/daemon/upgrades/data.js +0 -5
  48. package/dist/daemon/upgrades/data.js.map +1 -1
  49. package/dist/engine/util/process/platform/windows.d.ts.map +1 -1
  50. package/dist/engine/util/process/platform/windows.js +7 -4
  51. package/dist/engine/util/process/platform/windows.js.map +1 -1
  52. package/dist/engine.js +2 -2
  53. package/dist/storage/daemon/daemon-lock.d.ts +9 -0
  54. package/dist/storage/daemon/daemon-lock.d.ts.map +1 -0
  55. package/dist/storage/daemon/{manager-lock.js → daemon-lock.js} +22 -7
  56. package/dist/storage/daemon/daemon-lock.js.map +1 -0
  57. package/dist/storage/state-root-layout.d.ts +0 -2
  58. package/dist/storage/state-root-layout.d.ts.map +1 -1
  59. package/dist/storage/state-root-layout.js +0 -2
  60. package/dist/storage/state-root-layout.js.map +1 -1
  61. package/package.json +1 -1
  62. package/dist/chunk-T2GPD4RK.js +0 -2002
  63. package/dist/chunk-T2GPD4RK.js.map +0 -7
  64. package/dist/cli/handler/daemon/manager.d.ts +0 -4
  65. package/dist/cli/handler/daemon/manager.d.ts.map +0 -1
  66. package/dist/cli/handler/daemon/manager.js +0 -9
  67. package/dist/cli/handler/daemon/manager.js.map +0 -1
  68. package/dist/cli/handler/daemon/worker.d.ts +0 -4
  69. package/dist/cli/handler/daemon/worker.d.ts.map +0 -1
  70. package/dist/cli/handler/daemon/worker.js +0 -7
  71. package/dist/cli/handler/daemon/worker.js.map +0 -1
  72. package/dist/cli-NLIGRBEL.js.map +0 -7
  73. package/dist/daemon/control/switch-status.d.ts +0 -4
  74. package/dist/daemon/control/switch-status.d.ts.map +0 -1
  75. package/dist/daemon/control/switch-status.js +0 -10
  76. package/dist/daemon/control/switch-status.js.map +0 -1
  77. package/dist/daemon/lifecycle/manager-client.d.ts +0 -8
  78. package/dist/daemon/lifecycle/manager-client.d.ts.map +0 -1
  79. package/dist/daemon/lifecycle/manager-client.js +0 -130
  80. package/dist/daemon/lifecycle/manager-client.js.map +0 -1
  81. package/dist/daemon/lifecycle/manager.d.ts +0 -3
  82. package/dist/daemon/lifecycle/manager.d.ts.map +0 -1
  83. package/dist/daemon/lifecycle/manager.js +0 -215
  84. package/dist/daemon/lifecycle/manager.js.map +0 -1
  85. package/dist/daemon/lifecycle/worker-lifecycle-log.d.ts +0 -14
  86. package/dist/daemon/lifecycle/worker-lifecycle-log.d.ts.map +0 -1
  87. package/dist/daemon/lifecycle/worker-lifecycle-log.js +0 -63
  88. package/dist/daemon/lifecycle/worker-lifecycle-log.js.map +0 -1
  89. package/dist/daemon/lifecycle/worker-process.d.ts +0 -26
  90. package/dist/daemon/lifecycle/worker-process.d.ts.map +0 -1
  91. package/dist/daemon/lifecycle/worker-process.js +0 -145
  92. package/dist/daemon/lifecycle/worker-process.js.map +0 -1
  93. package/dist/daemon/lifecycle/worker.d.ts.map +0 -1
  94. package/dist/daemon/lifecycle/worker.js +0 -213
  95. package/dist/daemon/lifecycle/worker.js.map +0 -1
  96. package/dist/daemon/upgrades/package.d.ts +0 -9
  97. package/dist/daemon/upgrades/package.d.ts.map +0 -1
  98. package/dist/daemon/upgrades/package.js +0 -157
  99. package/dist/daemon/upgrades/package.js.map +0 -1
  100. package/dist/daemon/upgrades/upgrade.d.ts +0 -21
  101. package/dist/daemon/upgrades/upgrade.d.ts.map +0 -1
  102. package/dist/daemon/upgrades/upgrade.js +0 -242
  103. package/dist/daemon/upgrades/upgrade.js.map +0 -1
  104. package/dist/storage/daemon/manager-lock.d.ts +0 -9
  105. package/dist/storage/daemon/manager-lock.d.ts.map +0 -1
  106. package/dist/storage/daemon/manager-lock.js.map +0 -1
  107. package/dist/storage/daemon/release-files.d.ts +0 -9
  108. package/dist/storage/daemon/release-files.d.ts.map +0 -1
  109. package/dist/storage/daemon/release-files.js +0 -14
  110. package/dist/storage/daemon/release-files.js.map +0 -1
@@ -1,145 +0,0 @@
1
- import { spawn } from "node:child_process";
2
- import { isAbsolute } from "node:path";
3
- import { resolveLaunchFiles } from "../../engine/util/process/local-executable.js";
4
- import { isRecord } from "../../engine/util/value-utils.js";
5
- import { workerLaunch } from "../control/protocol.js";
6
- export async function decodeWorkerLaunch(value) {
7
- const { entry, executable, version } = workerLaunch.parse(value);
8
- if (!isAbsolute(entry) || !isAbsolute(executable)) {
9
- throw new Error("Worker launch paths must be absolute");
10
- }
11
- const resolved = await resolveLaunchFiles(entry, executable);
12
- if (resolved === null) {
13
- throw new Error("Worker launch paths must be files");
14
- }
15
- return { entry: resolved.entry, executable: resolved.executable, version };
16
- }
17
- export class WorkerStartupError extends Error {
18
- code;
19
- stdout;
20
- stderr;
21
- constructor(code, message, options, stdout = "", stderr = "") {
22
- super(message, options);
23
- this.code = code;
24
- this.stdout = stdout;
25
- this.stderr = stderr;
26
- }
27
- }
28
- export class WorkerProcess {
29
- #child;
30
- #stdout = "";
31
- #stderr = "";
32
- #started = Promise.withResolvers();
33
- #closed = Promise.withResolvers();
34
- #drained = Promise.withResolvers();
35
- #exit = null;
36
- exited = this.#closed.promise;
37
- // Resolves once the child's stdio streams are closed, so the captured stderr
38
- // tail is final. Bounded: if an orphaned grandchild inherits the pipes and
39
- // keeps them open, the fallback timer still resolves it.
40
- streamsSettled = this.#drained.promise;
41
- launch;
42
- ready;
43
- constructor(launch, signal, environment) {
44
- signal.throwIfAborted();
45
- this.launch = launch;
46
- this.#child = spawn(launch.executable, [launch.entry, "__worker"], {
47
- env: environment,
48
- windowsHide: true,
49
- stdio: ["ignore", "pipe", "pipe", "ipc"],
50
- });
51
- this.#child.stdout?.setEncoding("utf8").on("data", (chunk) => {
52
- this.#stdout = (this.#stdout + chunk).slice(-4096);
53
- process.stdout.write(chunk);
54
- });
55
- this.#child.stderr?.setEncoding("utf8").on("data", (chunk) => {
56
- this.#stderr = (this.#stderr + chunk).slice(-4096);
57
- process.stderr.write(chunk);
58
- });
59
- this.#child.once("close", () => {
60
- this.#drained.resolve();
61
- });
62
- this.#child.on("message", (value) => {
63
- if (isRecord(value) && value["kind"] === "worker-ready") {
64
- if (value["version"] !== launch.version) {
65
- this.#started.reject(new WorkerStartupError("worker_version_mismatch", "The new daemon reported a different version"));
66
- }
67
- else {
68
- this.#started.resolve(value);
69
- }
70
- return;
71
- }
72
- });
73
- this.#child.once("error", (cause) => {
74
- this.#started.reject(new WorkerStartupError("worker_spawn_failed", "The new daemon process could not be launched", {
75
- cause,
76
- }));
77
- if (this.#child.pid === undefined) {
78
- this.#exit = { code: null, signal: null };
79
- this.#boundStreamsSettled();
80
- this.#closed.resolve();
81
- }
82
- });
83
- this.#child.once("exit", (code, signal) => {
84
- this.#exit = { code, signal };
85
- this.#boundStreamsSettled();
86
- this.#started.reject(new WorkerStartupError("worker_exited", "The new daemon exited before becoming ready", undefined, this.#stdout, this.#stderr));
87
- this.#closed.resolve();
88
- });
89
- this.ready = this.#waitForStart(signal);
90
- }
91
- #boundStreamsSettled() {
92
- const giveUp = setTimeout(() => this.#drained.resolve(), 2_000);
93
- void this.#drained.promise.then(() => clearTimeout(giveUp));
94
- }
95
- get running() {
96
- return this.#child.exitCode === null && this.#child.signalCode === null && this.#child.connected;
97
- }
98
- get pid() {
99
- const pid = this.#child.pid;
100
- if (pid === undefined) {
101
- throw new Error("The working process did not start");
102
- }
103
- return pid;
104
- }
105
- // How the child terminated, available once `exited` settles. `code` and `signal`
106
- // are null when the process could not be launched at all.
107
- get exit() {
108
- if (this.#exit === null) {
109
- throw new Error("The working process has not exited");
110
- }
111
- return this.#exit;
112
- }
113
- get stderr() {
114
- return this.#stderr;
115
- }
116
- close = async () => {
117
- if (this.#child.connected) {
118
- this.#child.disconnect();
119
- }
120
- const timeout = setTimeout(() => this.#child.kill("SIGKILL"), 10_000);
121
- try {
122
- await this.#closed.promise;
123
- }
124
- finally {
125
- clearTimeout(timeout);
126
- }
127
- };
128
- async #waitForStart(signal) {
129
- const deadline = AbortSignal.any([signal, AbortSignal.timeout(120_000)]);
130
- const abort = () => this.#started.reject(signal.aborted
131
- ? signal.reason
132
- : new WorkerStartupError("worker_start_timeout", "The new daemon did not become ready within 120 seconds", { cause: deadline.reason }, this.#stdout, this.#stderr));
133
- deadline.addEventListener("abort", abort, { once: true });
134
- if (deadline.aborted) {
135
- abort();
136
- }
137
- try {
138
- return await this.#started.promise;
139
- }
140
- finally {
141
- deadline.removeEventListener("abort", abort);
142
- }
143
- }
144
- }
145
- //# sourceMappingURL=worker-process.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker-process.js","sourceRoot":"","sources":["../../../src/daemon/lifecycle/worker-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAqB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAc;IACnD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC7D,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;AAC/E,CAAC;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAChC,IAAI,CAAS;IACb,MAAM,CAAS;IACf,MAAM,CAAS;IACxB,YAAY,IAAY,EAAE,OAAe,EAAE,OAAsB,EAAE,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE;QACvF,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;CACJ;AAUD,MAAM,OAAO,aAAa;IACb,MAAM,CAAe;IAC9B,OAAO,GAAG,EAAE,CAAC;IACb,OAAO,GAAG,EAAE,CAAC;IACJ,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAW,CAAC;IAC5C,OAAO,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAC;IACxC,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAC;IAClD,KAAK,GAAsB,IAAI,CAAC;IACvB,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IACvC,6EAA6E;IAC7E,2EAA2E;IAC3E,yDAAyD;IAChD,cAAc,GAAkB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IACtD,MAAM,CAAe;IACrB,KAAK,CAAmB;IAEjC,YAAY,MAAoB,EAAE,MAAmB,EAAE,WAA8B;QACjF,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;YAC/D,GAAG,EAAE,WAAW;YAChB,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;SAC3C,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACjE,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;YACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACjE,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;YACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YAC3B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,KAAc,EAAE,EAAE;YACzC,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,cAAc,EAAE,CAAC;gBACtD,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;oBACtC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAChB,IAAI,kBAAkB,CAClB,yBAAyB,EACzB,6CAA6C,CAChD,CACJ,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjC,CAAC;gBACD,OAAO;YACX,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAChB,IAAI,kBAAkB,CAAC,qBAAqB,EAAE,8CAA8C,EAAE;gBAC1F,KAAK;aACR,CAAC,CACL,CAAC;YACF,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBAChC,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;gBAC1C,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC3B,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAChB,IAAI,kBAAkB,CAClB,eAAe,EACf,6CAA6C,EAC7C,SAAS,EACT,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,CACf,CACJ,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,oBAAoB;QAChB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;QAChE,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IACrG,CAAC;IAED,IAAI,GAAG;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QAC5B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,iFAAiF;IACjF,0DAA0D;IAC1D,IAAI,IAAI;QACJ,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAEQ,KAAK,GAAG,KAAK,IAAmB,EAAE;QACvC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;QACtE,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QAC/B,CAAC;gBAAS,CAAC;YACP,YAAY,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC,CAAC;IAEF,KAAK,CAAC,aAAa,CAAC,MAAmB;QACnC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,GAAS,EAAE,CACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAChB,MAAM,CAAC,OAAO;YACV,CAAC,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC,IAAI,kBAAkB,CAClB,sBAAsB,EACtB,wDAAwD,EACxD,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,EAC1B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,CACf,CACV,CAAC;QACN,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnB,KAAK,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvC,CAAC;gBAAS,CAAC;YACP,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;CACJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/daemon/lifecycle/worker.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yDAAyD,CAAC;AAkBrG,wBAAsB,YAAY,CAAC,cAAc,EAAE,qBAAqB,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB5G;AAED,6FAA6F;AAC7F,wBAAsB,yBAAyB,CAC3C,cAAc,EAAE,qBAAqB,EACrC,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBnF"}
@@ -1,213 +0,0 @@
1
- import { setTimeout } from "node:timers/promises";
2
- import { refreshAgentCatalog } from "../../engine/runtime/catalog/refresh-agent-catalog.js";
3
- import { RuntimeInstallationStore } from "../../engine/runtime/connection/runtime-installation-store.js";
4
- import { prepareRuntimeConnection } from "../../engine/runtime/pairing.js";
5
- import { RuntimeLoop } from "../../engine/runtime/runtime-loop.js";
6
- import { RuntimeAgentProcesses } from "../../engine/session/process/runtime-agent-processes.js";
7
- import { RuntimeTurnActivity } from "../../engine/session/turn/runtime-turn-activity.js";
8
- import { isNodeError } from "../../engine/util/node-error.js";
9
- import { acquireManagerLock } from "../../storage/daemon/manager-lock.js";
10
- import { prepareMobiusEngineDataDir, resolveMaxAcpProcesses } from "../config.js";
11
- import { sendLocalRequest } from "../control/local-client.js";
12
- import { serveLocalControl } from "../control/local-server.js";
13
- import { openMobiusControlInstallation } from "../pairing/pair-local-machine.js";
14
- import { prepareVersionData, recordCurrentData } from "../upgrades/data.js";
15
- import { reportDaemonUpgradeAvailability, runDaemonReleaseUpgrades } from "../upgrades/upgrade.js";
16
- import { surviveUnhandledRejections } from "./unhandled-rejection.js";
17
- class WorkerRuntimeError extends Error {
18
- code = "worker_runtime_failed";
19
- constructor(connectionId, cause) {
20
- super(`Runtime ${connectionId} failed`, { cause });
21
- }
22
- }
23
- export async function reloadDaemon(stateDirectory, signal) {
24
- try {
25
- const response = await sendLocalRequest(stateDirectory, "worker", { kind: "reload" }, signal);
26
- if (typeof response !== "object" ||
27
- response === null ||
28
- !("kind" in response) ||
29
- response.kind !== "reloaded") {
30
- throw new Error("Saved configuration could not be applied to the running daemon");
31
- }
32
- }
33
- catch (cause) {
34
- if (!isNodeError(cause, "ENOENT") && !isNodeError(cause, "ECONNREFUSED")) {
35
- throw cause;
36
- }
37
- }
38
- }
39
- /** Releases idle Agent processes of a running daemon; succeeds when no daemon is running. */
40
- export async function releaseIdleAgentProcesses(stateDirectory, signal) {
41
- try {
42
- const response = await sendLocalRequest(stateDirectory, "worker", { kind: "release" }, signal);
43
- if (typeof response === "object" && response !== null && "kind" in response && response.kind === "released") {
44
- return;
45
- }
46
- throw new Error("The running daemon cannot release Agent sessions. Run `mobius start` to update it first.");
47
- }
48
- catch (cause) {
49
- if (!isNodeError(cause, "ENOENT") && !isNodeError(cause, "ECONNREFUSED")) {
50
- throw cause;
51
- }
52
- }
53
- }
54
- export async function runWorker(version, signal) {
55
- if (!process.connected) {
56
- throw new Error("The daemon must be started by its manager");
57
- }
58
- // Install before any await: an unhandled rejection during startup itself
59
- // must not kill the worker before the guard exists.
60
- const rejectionGuard = surviveUnhandledRejections("worker");
61
- const shutdown = new AbortController();
62
- const combined = AbortSignal.any([signal, shutdown.signal]);
63
- const disconnect = () => shutdown.abort();
64
- process.once("disconnect", disconnect);
65
- try {
66
- await runWorkerRuntime(version, combined, shutdown, rejectionGuard);
67
- }
68
- finally {
69
- shutdown.abort();
70
- process.off("disconnect", disconnect);
71
- rejectionGuard.release();
72
- if (process.connected) {
73
- process.disconnect();
74
- }
75
- }
76
- }
77
- async function runWorkerRuntime(version, combined, shutdown, rejectionGuard) {
78
- const control = await openMobiusControlInstallation(combined, process.env);
79
- await prepareVersionData(version, combined);
80
- const engineDataDir = await prepareMobiusEngineDataDir(version, combined, process.env);
81
- const installation = await RuntimeInstallationStore.open(engineDataDir, combined);
82
- const deadline = AbortSignal.any([combined, AbortSignal.timeout(15_000)]);
83
- let release = null;
84
- while (release === null) {
85
- deadline.throwIfAborted();
86
- release = await acquireManagerLock(control.stateDirectory, "worker.lock");
87
- if (release === null) {
88
- await setTimeout(25, undefined, { signal: deadline });
89
- }
90
- }
91
- // The lock makes this process the only worker, and therefore the only
92
- // writer of the worker's rejection log; buffered startup entries flush now.
93
- rejectionGuard.bindStateDirectory(control.stateDirectory);
94
- const turnActivity = new RuntimeTurnActivity();
95
- const agentProcesses = new RuntimeAgentProcesses();
96
- const active = new Map();
97
- const fail = (connectionId, cause) => {
98
- console.error(`Runtime ${connectionId} failed; stopping the daemon`, cause);
99
- shutdown.abort(new WorkerRuntimeError(connectionId, cause));
100
- };
101
- const reconcile = async () => {
102
- const connections = await installation.listConnections(combined);
103
- const enabled = new Set(connections
104
- .filter((connection) => connection.activation === "active")
105
- .map((connection) => connection.connectionId));
106
- for (const [id, running] of active) {
107
- if (enabled.has(id)) {
108
- continue;
109
- }
110
- running.controller.abort();
111
- await running.completion;
112
- active.delete(id);
113
- }
114
- for (const connection of connections) {
115
- if (!enabled.has(connection.connectionId) || active.has(connection.connectionId)) {
116
- continue;
117
- }
118
- try {
119
- const config = await prepareRuntimeConnection(installation, connection, combined, process.env, resolveMaxAcpProcesses(process.env));
120
- const controller = new AbortController();
121
- // The manager writes the worker lifecycle and rejection logs beside
122
- // the control directory, not beside this Runtime's own state, so a
123
- // bug report taken through this Runtime reads them from there.
124
- const loop = new RuntimeLoop(async () => config, {
125
- processLogsDirectory: control.stateDirectory,
126
- turnActivity,
127
- agentProcesses,
128
- reportUpgradeAvailability: reportDaemonUpgradeAvailability,
129
- });
130
- const completion = loop
131
- .run(AbortSignal.any([combined, controller.signal]))
132
- .then(() => {
133
- if (!combined.aborted && !controller.signal.aborted) {
134
- fail(connection.connectionId, new Error("The Runtime stopped unexpectedly"));
135
- }
136
- }, (cause) => {
137
- if (!combined.aborted && !controller.signal.aborted) {
138
- fail(connection.connectionId, cause);
139
- }
140
- })
141
- .finally(() => active.delete(connection.connectionId));
142
- active.set(connection.connectionId, { config, controller, completion });
143
- }
144
- catch (cause) {
145
- combined.throwIfAborted();
146
- fail(connection.connectionId, cause);
147
- throw cause;
148
- }
149
- }
150
- };
151
- const refreshRunningCatalogs = async (connectionIds) => {
152
- await Promise.all([...connectionIds].map(async (connectionId) => {
153
- const config = active.get(connectionId)?.config;
154
- if (config?.rediscoverAgents === undefined) {
155
- return;
156
- }
157
- try {
158
- await refreshAgentCatalog(config, config.rediscoverAgents, AbortSignal.any([combined, AbortSignal.timeout(90_000)]));
159
- }
160
- catch (cause) {
161
- combined.throwIfAborted();
162
- // The Runtime keeps serving its previous catalog; the reload itself still applies.
163
- console.error(`Runtime ${connectionId} could not refresh its Agent catalog`, cause);
164
- }
165
- }));
166
- };
167
- let reload = Promise.resolve();
168
- let upgrades = Promise.resolve();
169
- try {
170
- await reconcile();
171
- await serveLocalControl(control.stateDirectory, "worker", combined, async (request) => {
172
- if (typeof request === "object" &&
173
- request !== null &&
174
- "kind" in request &&
175
- request.kind === "release") {
176
- // Agents' own clients can continue the conversations that idle processes held.
177
- await agentProcesses.retireIdleProcesses();
178
- return { kind: "released" };
179
- }
180
- if (typeof request !== "object" ||
181
- request === null ||
182
- !("kind" in request) ||
183
- request.kind !== "reload") {
184
- return { kind: "error", code: "invalid_reload", message: "Expected a configuration reload" };
185
- }
186
- // A reload, such as `mobius start` after the user installs or signs in to an Agent, also re-reads the
187
- // Agent inventory of Runtimes that were already running; Runtimes it starts read it themselves.
188
- const running = new Set(active.keys());
189
- const pending = reload.then(reconcile).then(async () => await refreshRunningCatalogs(running));
190
- reload = pending.catch(() => undefined);
191
- await pending;
192
- return { kind: "reloaded" };
193
- }, async () => {
194
- combined.throwIfAborted();
195
- await recordCurrentData(version, combined);
196
- upgrades = runDaemonReleaseUpgrades(combined, turnActivity);
197
- if (process.connected) {
198
- process.send?.({ kind: "worker-ready", version }, () => undefined);
199
- }
200
- });
201
- if (shutdown.signal.reason instanceof WorkerRuntimeError) {
202
- throw shutdown.signal.reason;
203
- }
204
- }
205
- finally {
206
- shutdown.abort();
207
- await upgrades;
208
- await reload;
209
- await Promise.all([...active.values()].map((running) => running.completion));
210
- await release();
211
- }
212
- }
213
- //# sourceMappingURL=worker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/daemon/lifecycle/worker.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type { WorkerLaunch } from "../control/protocol.ts";
2
- export declare class DaemonReleaseUpgradeError extends Error {
3
- readonly code: string;
4
- constructor(code: string, message: string, options?: ErrorOptions);
5
- }
6
- export declare function prepareDaemonReleaseVersion(version: string, signal: AbortSignal): Promise<WorkerLaunch>;
7
- export declare function installDaemonReleaseVersion(version: string, signal: AbortSignal): Promise<WorkerLaunch>;
8
- export declare function findNewDaemonReleaseVersion(currentVersion: string, signal: AbortSignal): Promise<string | null>;
9
- //# sourceMappingURL=package.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../../src/daemon/upgrades/package.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,qBAAa,yBAA0B,SAAQ,KAAK;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,YAAY,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAGhE;CACJ;AAED,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CA6B7G;AAED,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CA0C7G;AA6DD,wBAAsB,2BAA2B,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuBrH"}
@@ -1,157 +0,0 @@
1
- import { isAbsolute, join, relative } from "node:path";
2
- import { decodeRuntimeUpgradeVersion } from "@moxt-ai/mobius-sdk/protocol";
3
- import { gt, satisfies, validRange } from "semver";
4
- import { z } from "zod";
5
- import { canonicalPath, ensurePrivateDirectory } from "../../engine/storage/files/local-files.js";
6
- import { validateLocalPath } from "../../engine/util/filesystem/private-path.js";
7
- import { isNodeError } from "../../engine/util/node-error.js";
8
- import { findExecutableOnPath, runBoundedProcess } from "../../engine/util/process/executable.js";
9
- import { readInstalledRelease, releasePrefix } from "../../storage/daemon/release-files.js";
10
- import { decodeWorkerLaunch } from "../lifecycle/worker-process.js";
11
- export class DaemonReleaseUpgradeError extends Error {
12
- code;
13
- constructor(code, message, options) {
14
- super(message, options);
15
- this.code = code;
16
- }
17
- }
18
- export async function prepareDaemonReleaseVersion(version, signal) {
19
- decodeRuntimeUpgradeVersion(version);
20
- signal.throwIfAborted();
21
- const prefix = releasePrefix(version);
22
- let installed;
23
- try {
24
- installed = await readInstalledRelease(prefix);
25
- }
26
- catch (cause) {
27
- signal.throwIfAborted();
28
- if (!isNodeError(cause, "ENOENT")) {
29
- throw new DaemonReleaseUpgradeError("release_read_failed", "The installed Mobius release could not be read", { cause });
30
- }
31
- return await installDaemonReleaseVersion(version, signal);
32
- }
33
- try {
34
- return await verifyInstalledDaemonRelease(installed, prefix, version, signal);
35
- }
36
- catch (cause) {
37
- signal.throwIfAborted();
38
- if (cause instanceof DaemonReleaseUpgradeError) {
39
- throw cause;
40
- }
41
- throw new DaemonReleaseUpgradeError("release_invalid", "The installed Mobius release could not be verified", {
42
- cause,
43
- });
44
- }
45
- }
46
- export async function installDaemonReleaseVersion(version, signal) {
47
- decodeRuntimeUpgradeVersion(version);
48
- const npm = await findExecutableOnPath("npm", process.env);
49
- if (npm === null) {
50
- throw new DaemonReleaseUpgradeError("npm_unavailable", "npm is required to download the new daemon");
51
- }
52
- // npm owns the package installation; never overwrite the running release.
53
- const prefix = releasePrefix(version);
54
- await ensurePrivateDirectory(prefix);
55
- try {
56
- await validateLocalPath(prefix, true, true, signal);
57
- await runBoundedProcess({
58
- command: npm.path,
59
- arguments: [
60
- "install",
61
- "--prefix",
62
- prefix,
63
- "--ignore-scripts",
64
- "--no-audit",
65
- "--no-fund",
66
- "--save-exact",
67
- "--",
68
- `@moxt-ai/mobius@${version}`,
69
- ],
70
- cwd: prefix,
71
- environment: process.env,
72
- signal,
73
- timeoutMilliseconds: 300_000,
74
- outputLimitBytes: 64 * 1024,
75
- });
76
- return await verifyInstalledDaemonRelease(await readInstalledRelease(prefix), prefix, version, signal);
77
- }
78
- catch (cause) {
79
- signal.throwIfAborted();
80
- if (cause instanceof DaemonReleaseUpgradeError) {
81
- throw cause;
82
- }
83
- throw new DaemonReleaseUpgradeError("npm_install_failed", "npm could not install and verify the requested Mobius version", { cause });
84
- }
85
- }
86
- async function verifyInstalledDaemonRelease(installed, prefix, version, signal) {
87
- await validateLocalPath(prefix, true, true, signal);
88
- const metadata = z
89
- .object({
90
- name: z.literal("@moxt-ai/mobius"),
91
- version: z.literal(version),
92
- bin: z.object({ mobius: z.literal("dist/cli.js") }),
93
- engines: z.object({ node: z.string().refine((value) => validRange(value) !== null) }),
94
- })
95
- .parse(JSON.parse(installed.manifest));
96
- const entry = await canonicalPath(join(installed.packageRoot, metadata.bin.mobius));
97
- const resolved = relative(await canonicalPath(prefix), entry);
98
- if (resolved.startsWith("..") || isAbsolute(resolved)) {
99
- throw new Error("Installed entry escaped npm prefix");
100
- }
101
- if (!satisfies(process.versions.node, metadata.engines.node)) {
102
- throw new DaemonReleaseUpgradeError("node_incompatible", `Mobius ${version} requires Node.js ${metadata.engines.node}; the running daemon uses ${process.versions.node} at ${process.execPath}. Update Node.js before retrying.`);
103
- }
104
- // Run with the worker's actual executable before requesting any switch.
105
- // An engines declaration alone cannot detect unsupported syntax or missing dependencies.
106
- try {
107
- const result = await runBoundedProcess({
108
- command: process.execPath,
109
- arguments: [entry, "--version"],
110
- cwd: prefix,
111
- environment: process.env,
112
- signal,
113
- timeoutMilliseconds: 30_000,
114
- outputLimitBytes: 16 * 1024,
115
- });
116
- if (!result.stdout.split(/\r?\n/u).includes(`CLI: ${version}`)) {
117
- throw new Error("Candidate did not report the requested CLI version");
118
- }
119
- }
120
- catch (cause) {
121
- signal.throwIfAborted();
122
- throw new DaemonReleaseUpgradeError("release_startup_failed", `Mobius ${version} startup check failed; the current daemon is unchanged.`, { cause });
123
- }
124
- return await decodeWorkerLaunch({ executable: process.execPath, entry, version });
125
- }
126
- // `npm view <package> <field> --json` prints the field's value through npm 11 and
127
- // a one-element array from npm 12. Accept exactly those shapes; anything else is
128
- // not a version npm reported.
129
- const npmViewVersionSchema = z
130
- .union([z.string(), z.tuple([z.string()])])
131
- .transform((value) => (typeof value === "string" ? value : value[0]));
132
- export async function findNewDaemonReleaseVersion(currentVersion, signal) {
133
- const npm = await findExecutableOnPath("npm", process.env);
134
- if (npm === null) {
135
- throw new DaemonReleaseUpgradeError("npm_unavailable", "npm is required to check for a new daemon");
136
- }
137
- try {
138
- const result = await runBoundedProcess({
139
- command: npm.path,
140
- arguments: ["view", "@moxt-ai/mobius", "dist-tags.latest", "--json", "--prefer-online"],
141
- cwd: process.cwd(),
142
- environment: process.env,
143
- signal,
144
- timeoutMilliseconds: 30_000,
145
- outputLimitBytes: 4096,
146
- });
147
- const version = decodeRuntimeUpgradeVersion(npmViewVersionSchema.parse(JSON.parse(result.stdout)));
148
- return gt(version, currentVersion) ? version : null;
149
- }
150
- catch (cause) {
151
- signal.throwIfAborted();
152
- throw new DaemonReleaseUpgradeError("npm_check_failed", "npm could not return a valid latest Mobius version", {
153
- cause,
154
- });
155
- }
156
- }
157
- //# sourceMappingURL=package.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package.js","sourceRoot":"","sources":["../../../src/daemon/upgrades/package.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import { type RuntimeUpgradeResult } from "@moxt-ai/mobius-sdk/protocol";
2
- import type { RuntimeTurnActivity } from "../../engine/session/turn/runtime-turn-activity.ts";
3
- import type { InstallationDirectory } from "../../engine/storage/installation/installation-files.ts";
4
- import { type DaemonReleaseSwitchState } from "../control/protocol.ts";
5
- export declare function reportDaemonUpgradeAvailability(send: (result: RuntimeUpgradeResult) => void, signal: AbortSignal): Promise<void>;
6
- export declare function runDaemonReleaseUpgrades(signal: AbortSignal, activity: RuntimeTurnActivity): Promise<void>;
7
- export type DaemonReleaseUpgradeAttempt = {
8
- readonly kind: "current";
9
- } | {
10
- readonly kind: "requested";
11
- readonly id: string;
12
- readonly version: string;
13
- };
14
- export type DaemonReleaseSwitchOutcome = Extract<DaemonReleaseSwitchState, {
15
- kind: "switched";
16
- }> | Extract<DaemonReleaseSwitchState, {
17
- kind: "rolled-back";
18
- }>;
19
- export declare function requestDaemonReleaseUpgrade(stateDirectory: InstallationDirectory, currentVersion: string, signal: AbortSignal): Promise<DaemonReleaseUpgradeAttempt>;
20
- export declare function awaitDaemonReleaseSwitch(stateDirectory: InstallationDirectory, id: string, signal: AbortSignal): Promise<DaemonReleaseSwitchOutcome>;
21
- //# sourceMappingURL=upgrade.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/daemon/upgrades/upgrade.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAG3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yDAAyD,CAAC;AAGrG,OAAO,EAAE,KAAK,wBAAwB,EAAmD,MAAM,wBAAwB,CAAC;AAaxH,wBAAsB,+BAA+B,CACjD,IAAI,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,EAC5C,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAID,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAehH;AAED,MAAM,MAAM,2BAA2B,GACjC;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpF,MAAM,MAAM,0BAA0B,GAChC,OAAO,CAAC,wBAAwB,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,GACvD,OAAO,CAAC,wBAAwB,EAAE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC,CAAC;AAKjE,wBAAsB,2BAA2B,CAC7C,cAAc,EAAE,qBAAqB,EACrC,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,2BAA2B,CAAC,CAOtC;AAuBD,wBAAsB,wBAAwB,CAC1C,cAAc,EAAE,qBAAqB,EACrC,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,0BAA0B,CAAC,CA+BrC"}