@excitedjs/dreamux 0.1.1 → 0.1.3

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 (58) hide show
  1. package/README.md +36 -46
  2. package/bin/dreamux +6 -4
  3. package/dist/admin/socket.js +1 -1
  4. package/dist/admin/socket.js.map +1 -1
  5. package/dist/channel/feishu-gate.js +27 -0
  6. package/dist/channel/feishu-gate.js.map +1 -0
  7. package/dist/channel/outbound.js +12 -0
  8. package/dist/channel/outbound.js.map +1 -0
  9. package/dist/cli/doctor.js +273 -0
  10. package/dist/cli/doctor.js.map +1 -0
  11. package/dist/cli/dreamux.js +257 -78
  12. package/dist/cli/dreamux.js.map +1 -1
  13. package/dist/cli/server-ctl.js +15 -13
  14. package/dist/cli/server-ctl.js.map +1 -1
  15. package/dist/cli/server.js +7 -7
  16. package/dist/codex/handshake.js +1 -1
  17. package/dist/codex/handshake.js.map +1 -1
  18. package/dist/db/repository.js +16 -0
  19. package/dist/db/repository.js.map +1 -1
  20. package/dist/dispatcher/runtime.js +11 -3
  21. package/dist/dispatcher/runtime.js.map +1 -1
  22. package/dist/dispatcher/turn-manager.js +10 -8
  23. package/dist/dispatcher/turn-manager.js.map +1 -1
  24. package/dist/feishu/bot.js +41 -22
  25. package/dist/feishu/bot.js.map +1 -1
  26. package/dist/onboard/commands.js +34 -0
  27. package/dist/onboard/commands.js.map +1 -0
  28. package/dist/onboard/config-files.js +113 -0
  29. package/dist/onboard/config-files.js.map +1 -0
  30. package/dist/onboard/ledger.js +113 -0
  31. package/dist/onboard/ledger.js.map +1 -0
  32. package/dist/onboard/plugins.js +202 -0
  33. package/dist/onboard/plugins.js.map +1 -0
  34. package/dist/onboard/run.js +150 -0
  35. package/dist/onboard/run.js.map +1 -0
  36. package/dist/onboard/service.js +138 -0
  37. package/dist/onboard/service.js.map +1 -0
  38. package/dist/onboard/types.js +2 -0
  39. package/dist/{feishu → onboard}/types.js.map +1 -1
  40. package/dist/onboard/wizard.js +146 -0
  41. package/dist/onboard/wizard.js.map +1 -0
  42. package/dist/runtime/codex-args.js +1 -1
  43. package/dist/runtime/config.js +16 -4
  44. package/dist/runtime/config.js.map +1 -1
  45. package/dist/runtime/dispatcher-codex-home.js +266 -0
  46. package/dist/runtime/dispatcher-codex-home.js.map +1 -0
  47. package/dist/runtime/paths.js +17 -2
  48. package/dist/runtime/paths.js.map +1 -1
  49. package/dist/server.js +14 -2
  50. package/dist/server.js.map +1 -1
  51. package/package.json +13 -5
  52. package/bin/server +0 -35
  53. package/bin/server-ctl +0 -28
  54. package/dist/feishu/content.js +0 -108
  55. package/dist/feishu/content.js.map +0 -1
  56. package/dist/feishu/render.js +0 -600
  57. package/dist/feishu/render.js.map +0 -1
  58. package/dist/feishu/types.js +0 -9
package/README.md CHANGED
@@ -11,16 +11,14 @@ and harness pieces, see the top-level
11
11
  Design background:
12
12
  [#1 Proposal](https://github.com/excitedjs/dreamux/issues/1) ·
13
13
  [#2 Engineering plan](https://github.com/excitedjs/dreamux/issues/2) ·
14
- [#4 Monorepo + harness](https://github.com/excitedjs/dreamux/issues/4).
14
+ [#4 Monorepo + harness](https://github.com/excitedjs/dreamux/issues/4) ·
15
+ [#18 Global bin onboarding](https://github.com/excitedjs/dreamux/issues/18).
15
16
 
16
17
  ## What this package ships
17
18
 
18
- - The `dreamux` CLI (preferred): `dreamux server start`,
19
- `dreamux server status`, `dreamux dispatcher add|remove|list|status|start|stop`.
20
- - Legacy aliases: `dreamux-server` (= `dreamux server start`) and
21
- `server-ctl` (= `dreamux <verb>`). Kept so pre-monorepo operators
22
- don't have to rewrite PATH entries; see
23
- [`.agents/decisions/0002-cli-and-package-naming.md`](../../.agents/decisions/0002-cli-and-package-naming.md).
19
+ - One public CLI bin: `dreamux`. Implemented commands in this slice include
20
+ `dreamux onboard`, `dreamux serve`, `dreamux status`, `dreamux doctor`,
21
+ `dreamux dispatcher ...`, and `dreamux config path|show`.
24
22
  - A SQLite-backed runtime (`dispatchers` + `inbound_buffer`) plus the
25
23
  Feishu / Codex adapters that drive each dispatcher.
26
24
 
@@ -34,7 +32,8 @@ Design background:
34
32
  Outbound replies are routed by the inbound's `source_chat_id`.
35
33
  - **No dispatcher↔worktree binding.** Codex picks the worktree at `tm`-call
36
34
  time. The Codex daemon's cwd is `~/.codex-host/dispatchers/<id>/cwd/`
37
- (intentionally empty).
35
+ (intentionally empty), while its private `CODEX_HOME` is
36
+ `~/.codex-host/dispatchers/<id>/codex-home/`.
38
37
  - **FIFO + at-most-once.** One running turn per dispatcher. After a server
39
38
  crash, `running` inbound rows are flipped to `unknown` (the user is told
40
39
  to confirm or resend); `awaiting_outbound` rows are safely retried.
@@ -47,21 +46,11 @@ threads, tm registry isolation, cross-machine coordination, web UI.
47
46
 
48
47
  ## Install / build / test
49
48
 
50
- Two paths; both work, pick whichever fits the workflow.
51
-
52
- **Per-package (this directory).** Matches pre-monorepo muscle memory and
53
- runs the `prepare` hook (`tsc dist/`):
54
-
55
- ```bash
56
- cd packages/dreamux
57
- npm install
58
- npm run build # also runs automatically via `prepare`
59
- npm run typecheck # tsc --noEmit (no emit)
60
- npm test # smoke + bin-launcher + (live) codex-0134 tests
61
- ```
62
-
63
- **Monorepo (from repo root).** Required once a second package exists; CI
64
- exercises this path so a broken `rush.json` fails CI:
49
+ Use the monorepo (rush) path from the repo root — it is the only supported
50
+ install path. This package depends on `@excitedjs/feishu-transport` via the
51
+ pnpm `workspace:*` protocol, which `npm` cannot resolve, so
52
+ `cd packages/dreamux && npm install` no longer works (see
53
+ [the install-model decision](../../.agents/decisions/install-model.md)):
65
54
 
66
55
  ```bash
67
56
  node common/scripts/install-run-rush.js update
@@ -69,22 +58,21 @@ node common/scripts/install-run-rush.js build
69
58
  node common/scripts/install-run-rush.js test
70
59
  ```
71
60
 
61
+ CI exercises this path, so a broken `rush.json` or lockfile fails CI.
62
+
72
63
  The bin launchers shell out to plain `node` against the compiled `dist/`
73
64
  output; **no `tsx` is needed at runtime** (PR #6).
74
65
 
75
66
  ## Run the server
76
67
 
77
68
  ```bash
78
- # Preferred — unified CLI (issue #4)
79
- ./bin/dreamux server start
80
-
81
- # Backward-compat alias
82
- ./bin/server
69
+ ./bin/dreamux serve
83
70
  ```
84
71
 
85
- Both work from any cwd and via symlinks (PR #6 + bin-launcher tests).
72
+ The launcher works from any cwd and via symlinks (PR #6 + bin-launcher tests).
86
73
 
87
- The server uses two separate home directories — by design (decision 0003):
74
+ The server uses two separate home directories — by design (see
75
+ [the global-config decision](../../.agents/decisions/global-config-dir.md)):
88
76
 
89
77
  | Path | Purpose | Source of truth |
90
78
  |---|---|---|
@@ -92,7 +80,8 @@ The server uses two separate home directories — by design (decision 0003):
92
80
  | `~/.codex-host/state.db` | SQLite (dispatchers + inbound buffer) | the server |
93
81
  | `~/.codex-host/admin.sock` | Admin Unix socket (`0600`) | the server |
94
82
  | `~/.codex-host/dispatchers/<id>/cwd/` | Codex app-server cwd | the server |
95
- | `~/.codex-host/dispatchers/<id>/socket` | Codex Unix socket | the server |
83
+ | `~/.codex-host/dispatchers/<id>/codex-home/` | Dispatcher-private `CODEX_HOME` for Codex config, plugin cache, and app-server control state | the server |
84
+ | `~/.codex-host/dispatchers/<id>/codex-home/app-server-control/as.sock` | Codex app-server Unix socket | the server |
96
85
  | `~/.codex-host/dispatchers/<id>/*.log` | Codex stdout / stderr | the server |
97
86
 
98
87
  `rm -rf ~/.codex-host` is a safe recovery — your config in `~/.dreamux/`
@@ -103,11 +92,11 @@ the `~/.codex-host` half anywhere you like.
103
92
 
104
93
  ```bash
105
94
  # Bot secret comes from an env var the server process can see.
106
- export BOT_SECRET_FLOW='cli_secret_XXX'
95
+ export BOT_SECRET_FLOW='<bot-secret>'
107
96
 
108
97
  ./bin/dreamux dispatcher add \
109
98
  --id flow \
110
- --bot-app-id cli_aaa \
99
+ --bot-app-id <APP_ID> \
111
100
  --bot-secret-ref env:BOT_SECRET_FLOW
112
101
 
113
102
  # Inspect / restart
@@ -116,12 +105,10 @@ export BOT_SECRET_FLOW='cli_secret_XXX'
116
105
  ./bin/dreamux dispatcher start --id flow # if not auto-started
117
106
  ```
118
107
 
119
- `./bin/server-ctl <args>` still works as an alias.
120
-
121
108
  ## MVP verification path (issue #2 §"MVP 验收脚本")
122
109
 
123
- 1. `dreamux dispatcher add --id flow --bot-app-id cli_aaa --bot-secret-ref env:BOT_SECRET_FLOW`
124
- 2. `dreamux server start` — dispatcher `flow` goes to `ready`
110
+ 1. `dreamux dispatcher add --id flow --bot-app-id <APP_ID> --bot-secret-ref env:BOT_SECRET_FLOW`
111
+ 2. `dreamux serve` — dispatcher `flow` goes to `ready`
125
112
  3. Invite the bot to a Feishu group A, send `hi`
126
113
  4. Server delivers it into the Codex thread; reply goes back to group A
127
114
  5. Invite the same bot to a DM, ask "do you remember the 'hi' from earlier?"
@@ -136,7 +123,7 @@ export BOT_SECRET_FLOW='cli_secret_XXX'
136
123
 
137
124
  Precedence for every config-able value (highest wins): env var →
138
125
  per-dispatcher field → `~/.dreamux/config.toml` → built-in default.
139
- See [decision 0003](../../.agents/decisions/0003-global-config-dir.md).
126
+ See [the global-config decision](../../.agents/decisions/global-config-dir.md).
140
127
 
141
128
  ### Global: `~/.dreamux/config.toml`
142
129
 
@@ -159,7 +146,7 @@ retries = 3
159
146
  retry_delay_ms = 1000
160
147
  ```
161
148
 
162
- Edit and restart `dreamux server start`. Parse errors fail-fast with a
149
+ Edit and restart `dreamux serve`. Parse errors fail-fast with a
163
150
  `file:line` pointer.
164
151
 
165
152
  ### `codex_args_json` (per-dispatcher, overrides global)
@@ -185,7 +172,7 @@ JSON object stored in `dispatchers.codex_args_json`:
185
172
  | `CODEX_HOST_CODEX_BIN` | Override `codex.bin` |
186
173
  | `DREAMUX_CONFIG_DIR` | Override `~/.dreamux` (where `config.toml` lives) |
187
174
  | `BOT_SECRET_<NAME>` | Bot secrets referenced by `env:BOT_SECRET_<NAME>` |
188
- | `DREAMUX_SKIP_LIVE_CODEX` | Opt out of the live codex 0.134 integration test (loud skip) |
175
+ | `DREAMUX_SKIP_LIVE_CODEX` | Opt out of the live codex 0.135 integration test (loud skip) |
189
176
 
190
177
  ## What this MVP does **not** do
191
178
 
@@ -204,17 +191,20 @@ JSON object stored in `dispatchers.codex_args_json`:
204
191
  ## Testing
205
192
 
206
193
  ```bash
207
- npm test # smoke + bin-launcher + codex-0134-live
194
+ # from the repo root (the only supported path — see the install-model decision)
195
+ node common/scripts/install-run-rush.js test # smoke + bin-launcher + codex-0135-live
208
196
  ```
209
197
 
210
198
  - `tests/smoke.test.ts` — fake-codex-driven dispatcher behavior:
211
199
  happy path, FIFO, crash recovery (running → unknown), thread/resume
212
200
  failure, outbound retry without turn re-run, approval fail-fast.
213
- - `tests/bin-launcher.test.ts` — spawns the real bash launchers
214
- (`dreamux`, `dreamux-server`, `server-ctl`, plus the repo-root
215
- forwarders) from arbitrary cwds and through symlinks; static "no tsx"
216
- assertion.
217
- - `tests/codex-0134-live.test.ts` spawns a real `codex app-server`
201
+ - `tests/bin-launcher.test.ts` — spawns the real `dreamux` bash launcher
202
+ and repo-root shim from arbitrary cwds and through symlinks; static
203
+ "no tsx" assertion; manifest assertion for the single global bin.
204
+ - `tests/doctor.test.ts` — covers standalone doctor checks for
205
+ dispatcher-private `CODEX_HOME` state, including managed-service auth
206
+ visibility.
207
+ - `tests/codex-0135-live.test.ts` — spawns a real `codex app-server`
218
208
  (skipped loudly when `codex` is missing or wrong version; opt-in via
219
209
  `DREAMUX_SKIP_LIVE_CODEX=1`).
220
210
 
package/bin/dreamux CHANGED
@@ -1,8 +1,9 @@
1
1
  #!/usr/bin/env bash
2
- # Launcher for the unified `dreamux` CLI (issue #4).
2
+ # Launcher for the single public `dreamux` CLI (issue #18).
3
3
  # Resolves its own location through symlinks so it works from any cwd and
4
4
  # via any chain of symlinks (npm-link, ~/bin shortcuts, etc.). Runs the
5
- # compiled dist output produced by `npm install` / `rush build`.
5
+ # compiled dist output (built by `rush build` in a source checkout; already
6
+ # present in the published npm package).
6
7
  set -eu
7
8
 
8
9
  SOURCE="${BASH_SOURCE[0]}"
@@ -22,10 +23,11 @@ while [ -L "$SOURCE" ]; do
22
23
  done
23
24
 
24
25
  DIR="$(cd -- "$(dirname -- "$SOURCE")/.." &> /dev/null && pwd)"
26
+ DREAMUX_BIN="$(cd -- "$(dirname -- "$SOURCE")" &> /dev/null && pwd)/$(basename -- "$SOURCE")"
25
27
  TARGET="$DIR/dist/cli/dreamux.js"
26
28
  if [ ! -f "$TARGET" ]; then
27
29
  echo "dreamux: $TARGET is missing." >&2
28
- echo "Run 'npm install' (it runs 'npm run build' via the prepare hook), 'npm run build', or 'rush build' from the monorepo root first." >&2
30
+ echo "Build it first from the repo root: node common/scripts/install-run-rush.js build (rush build)." >&2
29
31
  exit 1
30
32
  fi
31
- exec node "$TARGET" "$@"
33
+ exec env DREAMUX_BIN="$DREAMUX_BIN" node "$TARGET" "$@"
@@ -121,7 +121,7 @@ function acquirePidLock(lockPath, myPid, isAlive) {
121
121
  return;
122
122
  }
123
123
  if (holder !== null && isAlive(holder)) {
124
- throw new Error(`admin socket lockfile ${lockPath} is held by another live dreamux-server process (pid ${holder}). ` +
124
+ throw new Error(`admin socket lockfile ${lockPath} is held by another live dreamux serve process (pid ${holder}). ` +
125
125
  'Refusing to bind to avoid split-brain admin control. ' +
126
126
  'Stop the other instance, or set CODEX_HOST_ADMIN_SOCKET to a different path.');
127
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/admin/socket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/admin/socket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { isBotSenderType } from '@excitedjs/feishu-transport';
2
+ /**
3
+ * Compatibility-first inbound gate for dreamux's Feishu channel.
4
+ *
5
+ * This deliberately does not enable pairing or allowlists yet. The current
6
+ * product behavior stays open, while the loop/ambiguity hazards that can make
7
+ * a channel self-amplify are blocked before messages enter the durable FIFO.
8
+ */
9
+ export function compatibleFeishuGate(input) {
10
+ if (input.senderId === '') {
11
+ return { action: 'drop', reason: 'missing sender id' };
12
+ }
13
+ if (input.botOpenId !== undefined && input.senderId === input.botOpenId) {
14
+ return { action: 'drop', reason: 'message sent by this bot' };
15
+ }
16
+ if (isBotSenderType(input.senderType)) {
17
+ return { action: 'drop', reason: `bot sender type: ${input.senderType}` };
18
+ }
19
+ if (input.chatType === 'group' && input.botOpenId === undefined) {
20
+ return {
21
+ action: 'drop',
22
+ reason: 'group message received before bot open_id was resolved',
23
+ };
24
+ }
25
+ return { action: 'deliver' };
26
+ }
27
+ //# sourceMappingURL=feishu-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feishu-gate.js","sourceRoot":"","sources":["../../src/channel/feishu-gate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAa9D;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAgC;IAEhC,IAAI,KAAK,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IACzD,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;QACxE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC;IAChE,CAAC;IACD,IAAI,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;IAC5E,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAChE,OAAO;YACL,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,wDAAwD;SACjE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,12 @@
1
+ export function outboundTargetForInbound(row) {
2
+ return {
3
+ conversationId: row.source_chat_id,
4
+ ...(row.source_message_id !== null
5
+ ? { replyTo: row.source_message_id }
6
+ : {}),
7
+ ...(row.sender_id !== null && row.sender_id !== ''
8
+ ? { mentionUsers: [row.sender_id] }
9
+ : {}),
10
+ };
11
+ }
12
+ //# sourceMappingURL=outbound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbound.js","sourceRoot":"","sources":["../../src/channel/outbound.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,wBAAwB,CAAC,GAAe;IACtD,OAAO;QACL,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,GAAG,CAAC,GAAG,CAAC,iBAAiB,KAAK,IAAI;YAChC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,iBAAiB,EAAE;YACpC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,IAAI,IAAI,GAAG,CAAC,SAAS,KAAK,EAAE;YAChD,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACnC,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,273 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { DispatcherRepo } from '../db/repository.js';
4
+ import { openDatabase } from '../db/schema.js';
5
+ import { codexArgsToCli, parseCodexArgs } from '../runtime/codex-args.js';
6
+ import { BUILT_IN_DEFAULTS, globalConfigDir, globalConfigFile, loadConfig, } from '../runtime/config.js';
7
+ import { dispatcherCodexHomeDoctorContext, validateDispatcherCodexHome, } from '../runtime/dispatcher-codex-home.js';
8
+ import { databasePath as runtimeDatabasePath, runtimeRoot, setRuntimeConfig, } from '../runtime/paths.js';
9
+ import { ExecaCommandRunner } from '../onboard/commands.js';
10
+ import { LAUNCHD_LABEL, managedServiceEnvironment, serviceUnitPath, SYSTEMD_UNIT, } from '../onboard/service.js';
11
+ export async function runDreamuxDoctor(options = {}) {
12
+ const runner = options.runner ?? new ExecaCommandRunner();
13
+ const checks = [];
14
+ const configDir = globalConfigDir();
15
+ const { config, configFile } = readConfigForDoctor(configDir, checks);
16
+ setRuntimeConfig(config);
17
+ checks.push({
18
+ name: 'runtime directory',
19
+ ok: existsSync(runtimeRoot()),
20
+ detail: runtimeRoot(),
21
+ });
22
+ const dbPath = runtimeDatabasePath();
23
+ checks.push({
24
+ name: 'runtime database',
25
+ ok: existsSync(dbPath),
26
+ detail: dbPath,
27
+ });
28
+ checks.push({
29
+ name: 'codex binary',
30
+ ok: await runner.check(config.codex.bin, ['--help']),
31
+ detail: config.codex.bin,
32
+ });
33
+ const service = await getServiceStatus({
34
+ runner,
35
+ platform: options.platform,
36
+ homeDir: options.homeDir,
37
+ uid: options.uid,
38
+ });
39
+ checks.push({
40
+ name: 'user service',
41
+ ok: true,
42
+ detail: service.installed
43
+ ? `installed at ${service.unitPath}`
44
+ : `not installed at ${service.unitPath}`,
45
+ });
46
+ const dispatchers = existsSync(dbPath)
47
+ ? readDispatchers(config, options.env ?? process.env, service)
48
+ : [];
49
+ if (dispatchers.length === 0) {
50
+ checks.push({
51
+ name: 'dispatchers',
52
+ ok: false,
53
+ detail: 'no dispatchers are configured',
54
+ });
55
+ }
56
+ const ok = checks.every((check) => check.ok) &&
57
+ dispatchers.every((dispatcher) => dispatcher.foreground.ok &&
58
+ (dispatcher.managedService === null || dispatcher.managedService.ok));
59
+ return {
60
+ ok,
61
+ configFile,
62
+ runtimeDir: runtimeRoot(),
63
+ databasePath: dbPath,
64
+ service,
65
+ checks,
66
+ dispatchers,
67
+ };
68
+ }
69
+ export function printDoctorResult(result) {
70
+ console.log(`dreamux doctor: ${result.ok ? 'ok' : 'failed'}`);
71
+ console.log(`config: ${result.configFile}`);
72
+ console.log(`runtime: ${result.runtimeDir}`);
73
+ console.log(`database: ${result.databasePath}`);
74
+ for (const check of result.checks) {
75
+ console.log(`${check.ok ? 'ok' : 'fail'}\t${check.name}\t${check.detail}`);
76
+ }
77
+ for (const dispatcher of result.dispatchers) {
78
+ printDispatcherDoctor(dispatcher);
79
+ }
80
+ }
81
+ function readConfigForDoctor(configDir, checks) {
82
+ try {
83
+ const loaded = loadConfig({ configDir });
84
+ checks.push({
85
+ name: 'config',
86
+ ok: true,
87
+ detail: loaded.configFile,
88
+ });
89
+ return loaded;
90
+ }
91
+ catch (err) {
92
+ const detail = err instanceof Error ? err.message : String(err);
93
+ checks.push({
94
+ name: 'config',
95
+ ok: false,
96
+ detail,
97
+ });
98
+ return {
99
+ config: BUILT_IN_DEFAULTS,
100
+ configFile: globalConfigFile({ configDir }),
101
+ };
102
+ }
103
+ }
104
+ function readDispatchers(config, env, service) {
105
+ const db = openDatabase({ path: runtimeDatabasePath() });
106
+ try {
107
+ const repo = new DispatcherRepo(db);
108
+ return repo.list().map((row) => {
109
+ const codexArgs = parseCodexArgs(row.codex_args_json, {
110
+ approvalPolicy: config.codex.approval_policy,
111
+ sandboxMode: config.codex.sandbox_mode,
112
+ extraArgs: config.codex.extra_args,
113
+ });
114
+ const codexCliArgs = codexArgsToCli(codexArgs);
115
+ const context = dispatcherCodexHomeDoctorContext(row.dispatcher_id, {
116
+ codexCliArgs,
117
+ });
118
+ const foreground = validateDispatcherCodexHome(context, {
119
+ env,
120
+ codexCliArgs,
121
+ });
122
+ const managedService = service.installed
123
+ ? validateDispatcherCodexHome(context, {
124
+ env: managedServiceEnvironment({
125
+ configDir: globalConfigDir(),
126
+ runtimeDir: runtimeRoot(),
127
+ codexBin: process.env['CODEX_HOST_CODEX_BIN'] || config.codex.bin,
128
+ dreamuxBin: process.env['DREAMUX_BIN'] ?? process.argv[1],
129
+ startService: false,
130
+ dryRun: false,
131
+ }),
132
+ codexCliArgs,
133
+ })
134
+ : null;
135
+ return {
136
+ id: row.dispatcher_id,
137
+ foreground,
138
+ managedService,
139
+ };
140
+ });
141
+ }
142
+ finally {
143
+ db.close();
144
+ }
145
+ }
146
+ async function getServiceStatus(options) {
147
+ const runner = options.runner ?? new ExecaCommandRunner();
148
+ const unit = serviceUnitPath(options.platform, options.homeDir ?? homedir());
149
+ if (unit.platform === 'launchd') {
150
+ return launchdStatus(unit.path, runner, options.uid);
151
+ }
152
+ return systemdStatus(unit.path, runner);
153
+ }
154
+ async function launchdStatus(unitPath, runner, uid) {
155
+ const target = launchdTarget(uid);
156
+ let raw = '';
157
+ let loaded = false;
158
+ try {
159
+ raw = await runner.capture('launchctl', ['print', target]);
160
+ loaded = true;
161
+ }
162
+ catch {
163
+ loaded = false;
164
+ }
165
+ const pid = parseLaunchdPid(raw);
166
+ return {
167
+ platform: 'launchd',
168
+ unitPath,
169
+ installed: existsSync(unitPath),
170
+ enabled: existsSync(unitPath),
171
+ loaded,
172
+ running: pid !== null || /\bstate = running\b/.test(raw),
173
+ pid,
174
+ detail: parseLaunchdDetail(raw),
175
+ };
176
+ }
177
+ async function systemdStatus(unitPath, runner) {
178
+ const enabled = await runner.check('systemctl', [
179
+ '--user',
180
+ 'is-enabled',
181
+ SYSTEMD_UNIT,
182
+ ]);
183
+ const active = await runner.check('systemctl', [
184
+ '--user',
185
+ 'is-active',
186
+ SYSTEMD_UNIT,
187
+ ]);
188
+ let raw = '';
189
+ try {
190
+ raw = await runner.capture('systemctl', [
191
+ '--user',
192
+ 'show',
193
+ SYSTEMD_UNIT,
194
+ '--property=LoadState,ActiveState,SubState,MainPID,Result',
195
+ ]);
196
+ }
197
+ catch {
198
+ raw = '';
199
+ }
200
+ const props = parseSystemdProperties(raw);
201
+ return {
202
+ platform: 'systemd',
203
+ unitPath,
204
+ installed: existsSync(unitPath),
205
+ enabled,
206
+ loaded: props['LoadState'] === 'loaded',
207
+ running: active || props['ActiveState'] === 'active',
208
+ pid: parsePositiveInt(props['MainPID']),
209
+ detail: systemdDetail(props),
210
+ };
211
+ }
212
+ function launchdTarget(uid) {
213
+ const actualUid = uid ?? process.getuid?.();
214
+ if (actualUid === undefined) {
215
+ throw new Error('launchd user service diagnostics require a numeric uid');
216
+ }
217
+ return `gui/${actualUid}/${LAUNCHD_LABEL}`;
218
+ }
219
+ function parseLaunchdPid(raw) {
220
+ const match = raw.match(/\bpid = (\d+)/);
221
+ if (match === null)
222
+ return null;
223
+ return parsePositiveInt(match[1]);
224
+ }
225
+ function parseLaunchdDetail(raw) {
226
+ const state = raw.match(/\bstate = ([^\n]+)/)?.[1]?.trim();
227
+ const reason = raw.match(/\breason = ([^\n]+)/)?.[1]?.trim();
228
+ return [state, reason]
229
+ .filter((value) => value !== undefined && value !== '')
230
+ .join(', ') || null;
231
+ }
232
+ function parseSystemdProperties(raw) {
233
+ const result = {};
234
+ for (const line of raw.split(/\r?\n/)) {
235
+ const eq = line.indexOf('=');
236
+ if (eq <= 0)
237
+ continue;
238
+ result[line.slice(0, eq)] = line.slice(eq + 1);
239
+ }
240
+ return result;
241
+ }
242
+ function systemdDetail(props) {
243
+ const parts = [
244
+ props['LoadState'],
245
+ props['ActiveState'],
246
+ props['SubState'],
247
+ props['Result'] !== undefined && props['Result'] !== 'success'
248
+ ? `result=${props['Result']}`
249
+ : undefined,
250
+ ].filter((part) => part !== undefined && part !== '');
251
+ return parts.join(', ') || null;
252
+ }
253
+ function parsePositiveInt(value) {
254
+ if (value === undefined)
255
+ return null;
256
+ const parsed = Number(value);
257
+ if (!Number.isInteger(parsed) || parsed <= 0)
258
+ return null;
259
+ return parsed;
260
+ }
261
+ function printDispatcherDoctor(dispatcher) {
262
+ printCodexHomeDoctor(`dispatcher ${dispatcher.id} foreground`, dispatcher.foreground);
263
+ if (dispatcher.managedService !== null) {
264
+ printCodexHomeDoctor(`dispatcher ${dispatcher.id} managed-service`, dispatcher.managedService);
265
+ }
266
+ }
267
+ function printCodexHomeDoctor(name, result) {
268
+ console.log(`${result.ok ? 'ok' : 'fail'}\t${name}\t${result.context.codexHome}`);
269
+ for (const error of result.errors) {
270
+ console.log(`fail\t${name}\t${error}`);
271
+ }
272
+ }
273
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,UAAU,GAEX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,gCAAgC,EAChC,2BAA2B,GAE5B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,YAAY,IAAI,mBAAmB,EACnC,WAAW,EACX,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,eAAe,EACf,YAAY,GACb,MAAM,uBAAuB,CAAC;AA4C/B,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAAyB,EAAE;IAE3B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;IAC1D,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACtE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEzB,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,mBAAmB;QACzB,EAAE,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC;QAC7B,MAAM,EAAE,WAAW,EAAE;KACtB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;IACrC,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,kBAAkB;QACxB,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM;KACf,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,cAAc;QACpB,EAAE,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG;KACzB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC;QACrC,MAAM;QACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,cAAc;QACpB,EAAE,EAAE,IAAI;QACR,MAAM,EAAE,OAAO,CAAC,SAAS;YACvB,CAAC,CAAC,gBAAgB,OAAO,CAAC,QAAQ,EAAE;YACpC,CAAC,CAAC,oBAAoB,OAAO,CAAC,QAAQ,EAAE;KAC3C,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC;QACpC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC;QAC9D,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,aAAa;YACnB,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,+BAA+B;SACxC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,EAAE,GACN,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAC/B,UAAU,CAAC,UAAU,CAAC,EAAE;YACxB,CAAC,UAAU,CAAC,cAAc,KAAK,IAAI,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,CACrE,CAAC;IACJ,OAAO;QACL,EAAE;QACF,UAAU;QACV,UAAU,EAAE,WAAW,EAAE;QACzB,YAAY,EAAE,MAAM;QACpB,OAAO;QACP,MAAM;QACN,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAA2B;IAC3D,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAChD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QAC5C,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,SAAiB,EACjB,MAAqB;IAErB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,QAAQ;YACd,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,MAAM,CAAC,UAAU;SAC1B,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,QAAQ;YACd,EAAE,EAAE,KAAK;YACT,MAAM;SACP,CAAC,CAAC;QACH,OAAO;YACL,MAAM,EAAE,iBAAiB;YACzB,UAAU,EAAE,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAC;SAC5C,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,MAAqB,EACrB,GAAsB,EACtB,OAAsB;IAEtB,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,EAAE,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,eAAe,EAAE;gBACpD,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,eAAe;gBAC5C,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY;gBACtC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;aACnC,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,gCAAgC,CAAC,GAAG,CAAC,aAAa,EAAE;gBAClE,YAAY;aACb,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,2BAA2B,CAAC,OAAO,EAAE;gBACtD,GAAG;gBACH,YAAY;aACb,CAAC,CAAC;YACH,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS;gBACtC,CAAC,CAAC,2BAA2B,CAAC,OAAO,EAAE;oBACnC,GAAG,EAAE,yBAAyB,CAAC;wBAC7B,SAAS,EAAE,eAAe,EAAE;wBAC5B,UAAU,EAAE,WAAW,EAAE;wBACzB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG;wBACjE,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;wBACzD,YAAY,EAAE,KAAK;wBACnB,MAAM,EAAE,KAAK;qBACd,CAAC;oBACF,YAAY;iBACb,CAAC;gBACJ,CAAC,CAAC,IAAI,CAAC;YACT,OAAO;gBACL,EAAE,EAAE,GAAG,CAAC,aAAa;gBACrB,UAAU;gBACV,cAAc;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAsB;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC;IAC7E,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,QAAgB,EAChB,MAAqB,EACrB,GAAY;IAEZ,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QAC3D,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO;QACL,QAAQ,EAAE,SAAS;QACnB,QAAQ;QACR,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC;QAC/B,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC;QAC7B,MAAM;QACN,OAAO,EAAE,GAAG,KAAK,IAAI,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC;QACxD,GAAG;QACH,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,QAAgB,EAChB,MAAqB;IAErB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE;QAC9C,QAAQ;QACR,YAAY;QACZ,YAAY;KACb,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE;QAC7C,QAAQ;QACR,WAAW;QACX,YAAY;KACb,CAAC,CAAC;IACH,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;YACtC,QAAQ;YACR,MAAM;YACN,YAAY;YACZ,0DAA0D;SAC3D,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,GAAG,EAAE,CAAC;IACX,CAAC;IACD,MAAM,KAAK,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO;QACL,QAAQ,EAAE,SAAS;QACnB,QAAQ;QACR,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC;QAC/B,OAAO;QACP,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ;QACvC,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,QAAQ;QACpD,GAAG,EAAE,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,GAAY;IACjC,MAAM,SAAS,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAC5C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,OAAO,SAAS,IAAI,aAAa,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC7D,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SACnB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC;SACtD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACxB,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAW;IACzC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS;QACtB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,KAA6B;IAClD,MAAM,KAAK,GAAG;QACZ,KAAK,CAAC,WAAW,CAAC;QAClB,KAAK,CAAC,aAAa,CAAC;QACpB,KAAK,CAAC,UAAU,CAAC;QACjB,KAAK,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,SAAS;YAC5D,CAAC,CAAC,UAAU,KAAK,CAAC,QAAQ,CAAC,EAAE;YAC7B,CAAC,CAAC,SAAS;KACd,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;IACtD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAClC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAyB;IACjD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAAC,UAAkC;IAC/D,oBAAoB,CAAC,cAAc,UAAU,CAAC,EAAE,aAAa,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IACtF,IAAI,UAAU,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;QACvC,oBAAoB,CAClB,cAAc,UAAU,CAAC,EAAE,kBAAkB,EAC7C,UAAU,CAAC,cAAc,CAC1B,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAY,EACZ,MAAuC;IAEvC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAClF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;IACzC,CAAC;AACH,CAAC"}