@excitedjs/dreamux 0.1.4 → 0.3.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.
Files changed (78) hide show
  1. package/README.md +170 -154
  2. package/bin/tm +30 -0
  3. package/dist/admin/client.js +98 -0
  4. package/dist/admin/client.js.map +1 -0
  5. package/dist/admin/methods.js +83 -38
  6. package/dist/admin/methods.js.map +1 -1
  7. package/dist/admin/socket.js +2 -2
  8. package/dist/admin/socket.js.map +1 -1
  9. package/dist/channel/feishu-gate.js +187 -18
  10. package/dist/channel/feishu-gate.js.map +1 -1
  11. package/dist/channel/feishu-message.js +92 -0
  12. package/dist/channel/feishu-message.js.map +1 -0
  13. package/dist/cli/doctor.js +53 -58
  14. package/dist/cli/doctor.js.map +1 -1
  15. package/dist/cli/dreamux.js +72 -61
  16. package/dist/cli/dreamux.js.map +1 -1
  17. package/dist/cli/server-ctl.js +6 -8
  18. package/dist/cli/server-ctl.js.map +1 -1
  19. package/dist/cli/server.js +25 -38
  20. package/dist/cli/server.js.map +1 -1
  21. package/dist/codex/events.js +3 -2
  22. package/dist/codex/events.js.map +1 -1
  23. package/dist/codex/mcp-config.js +24 -0
  24. package/dist/codex/mcp-config.js.map +1 -0
  25. package/dist/codex/supervisor.js +16 -0
  26. package/dist/codex/supervisor.js.map +1 -1
  27. package/dist/dispatcher/approval.js +2 -3
  28. package/dist/dispatcher/approval.js.map +1 -1
  29. package/dist/dispatcher/runtime.js +195 -143
  30. package/dist/dispatcher/runtime.js.map +1 -1
  31. package/dist/dispatcher/turn-manager.js +78 -97
  32. package/dist/dispatcher/turn-manager.js.map +1 -1
  33. package/dist/feishu/bot.js +71 -9
  34. package/dist/feishu/bot.js.map +1 -1
  35. package/dist/mcp/feishu-mcp.js +269 -0
  36. package/dist/mcp/feishu-mcp.js.map +1 -0
  37. package/dist/onboard/config-files.js +60 -87
  38. package/dist/onboard/config-files.js.map +1 -1
  39. package/dist/onboard/dispatcher-skill.js +18 -0
  40. package/dist/onboard/dispatcher-skill.js.map +1 -0
  41. package/dist/onboard/run.js +40 -79
  42. package/dist/onboard/run.js.map +1 -1
  43. package/dist/onboard/service.js +6 -5
  44. package/dist/onboard/service.js.map +1 -1
  45. package/dist/onboard/uninstall.js +161 -0
  46. package/dist/onboard/uninstall.js.map +1 -0
  47. package/dist/onboard/wizard.js +12 -69
  48. package/dist/onboard/wizard.js.map +1 -1
  49. package/dist/runtime/codex-args.js +1 -1
  50. package/dist/runtime/config.js +213 -213
  51. package/dist/runtime/config.js.map +1 -1
  52. package/dist/runtime/dispatcher-codex-home.js +21 -185
  53. package/dist/runtime/dispatcher-codex-home.js.map +1 -1
  54. package/dist/runtime/dispatcher-id.js +9 -0
  55. package/dist/runtime/dispatcher-id.js.map +1 -0
  56. package/dist/runtime/dispatcher-store.js +202 -0
  57. package/dist/runtime/dispatcher-store.js.map +1 -0
  58. package/dist/runtime/package-bin.js +41 -0
  59. package/dist/runtime/package-bin.js.map +1 -0
  60. package/dist/runtime/paths.js +87 -48
  61. package/dist/runtime/paths.js.map +1 -1
  62. package/dist/runtime/secrets.js +17 -14
  63. package/dist/runtime/secrets.js.map +1 -1
  64. package/dist/server.js +112 -38
  65. package/dist/server.js.map +1 -1
  66. package/package.json +6 -6
  67. package/skills/dispatcher/SKILL.md +107 -0
  68. package/db/migrations/0001_init.sql +0 -49
  69. package/dist/channel/outbound.js +0 -12
  70. package/dist/channel/outbound.js.map +0 -1
  71. package/dist/db/repository.js +0 -223
  72. package/dist/db/repository.js.map +0 -1
  73. package/dist/db/schema.js +0 -29
  74. package/dist/db/schema.js.map +0 -1
  75. package/dist/db/types.js +0 -2
  76. package/dist/db/types.js.map +0 -1
  77. package/dist/onboard/plugins.js +0 -202
  78. package/dist/onboard/plugins.js.map +0 -1
@@ -1,36 +1,16 @@
1
1
  /**
2
- * Global dreamux configuration loaded from `~/.dreamux/config.toml`.
2
+ * Global dreamux configuration loaded from `~/.dreamux/config.json`.
3
3
  *
4
- * Why this exists: pre-config, every dispatcher had to repeat the same
5
- * `approval_policy=never`, every operator had to remember
6
- * `CODEX_HOST_CODEX_BIN`, every retry/timeout tuning was buried in
7
- * source-level constants. This file is the user-editable surface for
8
- * machine-wide defaults; per-dispatcher settings still override it, and
9
- * the existing env vars still override everything (escape hatch for CI
10
- * and one-off debug runs).
4
+ * Layout:
5
+ * ~/.dreamux/config.json dreamux configuration and local channel secrets
11
6
  *
12
- * Layout separation of concerns:
13
- * ~/.dreamux/ user-editable configuration (this module)
14
- * ~/.codex-host/ runtime data (SQLite, sockets, dispatcher logs)
15
- * Mixing them was the original sin; keeping them apart is what makes a
16
- * `rm -rf ~/.codex-host` recovery safe.
17
- *
18
- * Format: TOML (matches codex's own `~/.codex/config.toml`).
19
- * Parse failures fail-fast with the offending line.
7
+ * Format: JSON. dreamux does not write TOML files.
20
8
  */
21
9
  import { homedir } from 'node:os';
22
10
  import { dirname, isAbsolute, join } from 'node:path';
23
- import { closeSync, mkdirSync, openSync, readFileSync, writeSync, } from 'node:fs';
24
- import { parse as parseToml, TomlError } from 'smol-toml';
25
- /**
26
- * Built-in defaults — identical to what individual modules used before this
27
- * config existed. Anything you change here is a behavior change for fresh
28
- * installs (and only fresh installs; existing `~/.dreamux/config.toml`
29
- * files are not touched on upgrade).
30
- */
11
+ import { closeSync, existsSync, mkdirSync, openSync, readFileSync, statSync, writeSync, } from 'node:fs';
12
+ import { validateDispatcherId } from './dispatcher-id.js';
31
13
  export const BUILT_IN_DEFAULTS = {
32
- runtime_dir: '~/.codex-host',
33
- admin_socket: null,
34
14
  codex: {
35
15
  bin: 'codex',
36
16
  approval_policy: 'never',
@@ -38,154 +18,81 @@ export const BUILT_IN_DEFAULTS = {
38
18
  extra_args: [],
39
19
  initialize_timeout_ms: 10_000,
40
20
  },
41
- outbound: {
42
- retries: 3,
43
- retry_delay_ms: 1000,
44
- },
21
+ dispatchers: [],
45
22
  };
46
- /**
47
- * Codex 0.134 sandbox modes (from `codex --help`'s `-s, --sandbox` choices).
48
- * Kept in sync with `codex-args.ts` (same allowlist enforced at the
49
- * per-dispatcher level).
50
- */
51
23
  export const ALLOWED_SANDBOX_MODES = new Set([
52
24
  'read-only',
53
25
  'workspace-write',
54
26
  'danger-full-access',
55
27
  ]);
56
- /**
57
- * The literal TOML text written on first boot. Comments are part of the
58
- * UX — they tell an operator opening the file for the first time what
59
- * each key means and where to read more.
60
- */
61
- export const DEFAULT_CONFIG_TOML = `# dreamux global configuration (~/.dreamux/config.toml)
62
- #
63
- # Edit this file and restart \`dreamux serve\` to apply changes.
64
- # Runtime data (SQLite, sockets, dispatcher logs) lives separately in
65
- # \`runtime_dir\` below — this file holds only user-editable settings.
66
- # See .agents/decisions/global-config-dir.md for the design rationale.
67
- #
68
- # Precedence (highest wins):
69
- # 1. environment variables (CODEX_HOST_RUNTIME_DIR, CODEX_HOST_ADMIN_SOCKET,
70
- # CODEX_HOST_CODEX_BIN) — escape hatch for CI and one-off debug runs
71
- # 2. per-dispatcher fields (codex_args_json: approvalPolicy, extraArgs)
72
- # 3. this file
73
- # 4. built-in defaults baked into the binary
74
-
75
- # Where dreamux stores runtime state (SQLite database, admin Unix socket,
76
- # per-dispatcher Codex sockets and logs).
77
- #
78
- # \`~/\` is expanded to your home directory. Relative paths are not supported.
79
- runtime_dir = "~/.codex-host"
80
-
81
- # Admin Unix socket path. Leave commented to derive as <runtime_dir>/admin.sock.
82
- # admin_socket = "~/.codex-host/admin.sock"
83
-
84
- [codex]
85
- # Path to the codex CLI. Bare name (\`codex\`) resolves via $PATH; an
86
- # absolute path (\`/opt/codex/bin/codex\`) skips the lookup.
87
- bin = "codex"
88
-
89
- # Default approval policy applied to every dispatcher. A per-dispatcher
90
- # \`codex_args_json\` (set via \`dreamux dispatcher add --codex-args-json ...\`)
91
- # overrides this when present. Must be one of:
92
- # never | auto | auto-approve | on-failure
93
- # See issue #2 §"信任模型" for the trust-model implications of \`never\`.
94
- approval_policy = "never"
95
-
96
- # Default sandbox mode codex executes shell commands under. Per-dispatcher
97
- # \`codex_args_json.sandboxMode\` overrides this when present.
98
- # Must be one of:
99
- # read-only — codex cannot write any files
100
- # workspace-write — codex can write inside its cwd; recommended
101
- # baseline for trusted-local
102
- # danger-full-access — no sandbox; pair with approval_policy="never"
103
- # only when codex must spawn helpers that chdir
104
- # out of its cwd (e.g. tm dispatching into other
105
- # worktrees). Trust model becomes equivalent to
106
- # giving any allowed bot user shell access.
107
- sandbox_mode = "workspace-write"
108
-
109
- # Extra args appended to every codex app-server invocation. Per-dispatcher
110
- # extra_args (in codex_args_json) are appended *after* these.
111
- extra_args = []
112
-
113
- # Handshake timeout. Without this, dreamux would hang forever on a codex
114
- # that accepts the WebSocket upgrade but never replies to \`initialize\`
115
- # (PR #5). 0 is not a valid value — set to a positive integer.
116
- initialize_timeout_ms = 10000
117
-
118
- [outbound]
119
- # How many times to retry a failed Feishu send before parking the inbound
120
- # row in \`outbound_failed\`. The Codex turn never re-runs on retry — only
121
- # the outbound delivery is retried (PR #3 review #1).
122
- retries = 3
123
-
124
- # Initial delay between outbound retries (ms).
125
- retry_delay_ms = 1000
126
- `;
28
+ export const DEFAULT_CONFIG_JSON = `${JSON.stringify(BUILT_IN_DEFAULTS, null, 2)}\n`;
127
29
  export function globalConfigDir(overrides = {}) {
128
30
  if (overrides.configDir !== undefined)
129
31
  return overrides.configDir;
130
32
  return process.env['DREAMUX_CONFIG_DIR'] || join(homedir(), '.dreamux');
131
33
  }
132
34
  export function globalConfigFile(overrides = {}) {
35
+ return join(globalConfigDir(overrides), 'config.json');
36
+ }
37
+ export function legacyGlobalConfigFile(overrides = {}) {
133
38
  return join(globalConfigDir(overrides), 'config.toml');
134
39
  }
135
- /**
136
- * Load `<configDir>/config.toml`, creating it with default content on
137
- * first boot. Throws with a file-line-pointing message when TOML parsing
138
- * fails so the operator can fix the file without spelunking through
139
- * libraries.
140
- *
141
- * Safe to call from `dreamux serve` on every boot — first call ensures
142
- * the directory and file exist with sensible defaults; subsequent calls
143
- * just read.
144
- *
145
- * PR #8 review #1: create the file with the atomic `wx` (O_CREAT|O_EXCL)
146
- * flag, not check-then-write. Two server processes booting concurrently
147
- * against the same `~/.dreamux/` would otherwise both see "file absent"
148
- * and one would overwrite what the other wrote. Posix guarantees only
149
- * one `wx` open wins; the loser gets EEXIST and falls through to the
150
- * read path.
151
- */
152
40
  export function loadOrInitConfig(overrides = {}) {
153
41
  const file = globalConfigFile(overrides);
154
- // Parent dir creation is idempotent under `recursive: true` (no race),
155
- // but it can still legitimately fail (e.g. parent is unwritable). Let
156
- // the EACCES propagate — the user needs to see it.
42
+ assertNoLegacyTomlOnly(overrides);
157
43
  mkdirSync(dirname(file), { recursive: true });
158
- const createdOnThisBoot = atomicWriteIfAbsent(file, DEFAULT_CONFIG_TOML);
159
- const raw = readFileSync(file, 'utf8');
44
+ const createdOnThisBoot = atomicWriteIfAbsent(file, DEFAULT_CONFIG_JSON);
45
+ const config = readConfigFile(file);
46
+ return { config, configFile: file, createdOnThisBoot };
47
+ }
48
+ export function loadConfig(overrides = {}) {
49
+ const file = globalConfigFile(overrides);
50
+ assertNoLegacyTomlOnly(overrides);
51
+ return { config: readConfigFile(file), configFile: file };
52
+ }
53
+ export function stringifyConfig(config) {
54
+ return `${JSON.stringify(config, null, 2)}\n`;
55
+ }
56
+ export function redactConfigForDisplay(raw, file) {
160
57
  let parsed;
161
58
  try {
162
- parsed = parseToml(raw);
59
+ parsed = JSON.parse(raw);
163
60
  }
164
61
  catch (err) {
165
- throw formatTomlError(err, file);
62
+ const msg = err instanceof Error ? err.message : String(err);
63
+ throw new Error(`dreamux config parse error in ${file}: ${msg}\n` +
64
+ 'Fix the JSON syntax before running `dreamux config show`.');
166
65
  }
167
- const config = mergeWithDefaults(parsed, file);
168
- return { config, configFile: file, createdOnThisBoot };
66
+ redactFeishuSecrets(parsed);
67
+ return `${JSON.stringify(parsed, null, 2)}\n`;
169
68
  }
170
- export function loadConfig(overrides = {}) {
171
- const file = globalConfigFile(overrides);
69
+ function readConfigFile(file) {
70
+ if (!existsSync(file)) {
71
+ throw new Error(`dreamux config is missing at ${file}.\n` +
72
+ 'Run `dreamux onboard` to create it before starting the server.');
73
+ }
74
+ assertConfigFileMode(file);
172
75
  const raw = readFileSync(file, 'utf8');
173
76
  let parsed;
174
77
  try {
175
- parsed = parseToml(raw);
78
+ parsed = JSON.parse(raw);
176
79
  }
177
80
  catch (err) {
178
- throw formatTomlError(err, file);
81
+ const msg = err instanceof Error ? err.message : String(err);
82
+ throw new Error(`dreamux config parse error in ${file}: ${msg}\n` +
83
+ `Fix the JSON syntax in ${file}, then restart. Run \`dreamux onboard\` if you need to recreate the config.`);
179
84
  }
180
- return { config: mergeWithDefaults(parsed, file), configFile: file };
85
+ return mergeWithDefaults(parsed, file);
86
+ }
87
+ export function assertNoLegacyTomlOnly(overrides = {}) {
88
+ const jsonFile = globalConfigFile(overrides);
89
+ const tomlFile = legacyGlobalConfigFile(overrides);
90
+ if (existsSync(jsonFile) || !existsSync(tomlFile))
91
+ return;
92
+ throw new Error(`legacy dreamux config detected at ${tomlFile}, but ${jsonFile} does not exist.\n` +
93
+ 'dreamux no longer reads TOML config and will not create default JSON over an existing install.\n' +
94
+ `Create ${jsonFile} manually with a dispatchers array, then move ${tomlFile} aside.`);
181
95
  }
182
- /**
183
- * Atomic create-if-absent. Returns true if this call created the file.
184
- *
185
- * Uses Node's `wx` flag, which maps to POSIX `open(O_CREAT | O_EXCL)`.
186
- * Two processes racing the same path see exactly one EEXIST and exactly
187
- * one success — no torn writes, no overwriting each other.
188
- */
189
96
  function atomicWriteIfAbsent(file, content) {
190
97
  let fd;
191
98
  try {
@@ -204,38 +111,28 @@ function atomicWriteIfAbsent(file, content) {
204
111
  }
205
112
  return true;
206
113
  }
207
- function formatTomlError(err, file) {
208
- if (err instanceof TomlError) {
209
- const where = typeof err.line === 'number' && typeof err.column === 'number'
210
- ? `${file}:${err.line}:${err.column}`
211
- : file;
212
- return new Error(`dreamux config parse error at ${where}: ${err.message}\n` +
213
- `Fix the TOML syntax in ${file} and restart, or delete the file to regenerate defaults.`);
214
- }
215
- const msg = err instanceof Error ? err.message : String(err);
216
- return new Error(`dreamux config parse error in ${file}: ${msg}\n` +
217
- `Fix the TOML syntax in ${file} and restart, or delete the file to regenerate defaults.`);
114
+ export function assertConfigFileMode(file) {
115
+ if (process.platform === 'win32')
116
+ return;
117
+ const mode = statSync(file).mode & 0o777;
118
+ if (mode === 0o600)
119
+ return;
120
+ throw new Error(`dreamux config file must be mode 0600: ${file} has mode 0${mode.toString(8)}`);
218
121
  }
219
- /**
220
- * Merge user-supplied TOML object with built-in defaults. Unknown top-level
221
- * keys are tolerated (forward-compat with newer config files); known keys
222
- * are validated for type and (where relevant) value membership.
223
- */
224
122
  function mergeWithDefaults(raw, file) {
225
- if (raw === null || typeof raw !== 'object' || Array.isArray(raw)) {
226
- throw new Error(`dreamux config error in ${file}: top-level must be a table`);
123
+ if (!isPlainObject(raw)) {
124
+ throw new Error(`dreamux config error in ${file}: top-level must be an object`);
227
125
  }
228
- const obj = raw;
229
- const codexIn = isPlainObject(obj['codex']) ? obj['codex'] : {};
230
- const outboundIn = isPlainObject(obj['outbound']) ? obj['outbound'] : {};
231
- const runtime_dir = expandHome(requireString(obj, 'runtime_dir', BUILT_IN_DEFAULTS.runtime_dir, file));
232
- const admin_socket_raw = obj['admin_socket'];
233
- const admin_socket = admin_socket_raw === undefined || admin_socket_raw === null
234
- ? null
235
- : expandHome(ensureString(admin_socket_raw, 'admin_socket', file));
126
+ rejectUnknownKeys(raw, new Set(['codex', 'dispatchers']), file, '');
127
+ const codexIn = isPlainObject(raw['codex']) ? raw['codex'] : {};
128
+ rejectUnknownKeys(codexIn, new Set([
129
+ 'bin',
130
+ 'approval_policy',
131
+ 'sandbox_mode',
132
+ 'extra_args',
133
+ 'initialize_timeout_ms',
134
+ ]), file, 'codex.');
236
135
  const approval_policy = requireString(codexIn, 'approval_policy', BUILT_IN_DEFAULTS.codex.approval_policy, file, 'codex.');
237
- // Validate approval_policy against the same allowlist as codex-args.ts.
238
- // Keep the two in sync — see the Rush + pnpm decision / issue #2 §"信任模型".
239
136
  const ALLOWED_POLICIES = new Set([
240
137
  'never',
241
138
  'auto',
@@ -251,23 +148,104 @@ function mergeWithDefaults(raw, file) {
251
148
  throw new Error(`dreamux config error in ${file}: codex.sandbox_mode='${sandbox_mode}' ` +
252
149
  `is not one of ${Array.from(ALLOWED_SANDBOX_MODES).join(' | ')}`);
253
150
  }
254
- const extra_args = requireStringArray(codexIn, 'extra_args', BUILT_IN_DEFAULTS.codex.extra_args, file, 'codex.');
255
- const initialize_timeout_ms = requirePositiveInt(codexIn, 'initialize_timeout_ms', BUILT_IN_DEFAULTS.codex.initialize_timeout_ms, file, 'codex.');
256
- const retries = requireNonNegativeInt(outboundIn, 'retries', BUILT_IN_DEFAULTS.outbound.retries, file, 'outbound.');
257
- const retry_delay_ms = requireNonNegativeInt(outboundIn, 'retry_delay_ms', BUILT_IN_DEFAULTS.outbound.retry_delay_ms, file, 'outbound.');
258
151
  return {
259
- runtime_dir,
260
- admin_socket,
261
152
  codex: {
262
153
  bin: requireString(codexIn, 'bin', BUILT_IN_DEFAULTS.codex.bin, file, 'codex.'),
263
154
  approval_policy,
264
155
  sandbox_mode,
265
- extra_args,
266
- initialize_timeout_ms,
156
+ extra_args: requireStringArray(codexIn, 'extra_args', BUILT_IN_DEFAULTS.codex.extra_args, file, 'codex.'),
157
+ initialize_timeout_ms: requirePositiveInt(codexIn, 'initialize_timeout_ms', BUILT_IN_DEFAULTS.codex.initialize_timeout_ms, file, 'codex.'),
267
158
  },
268
- outbound: { retries, retry_delay_ms },
159
+ dispatchers: readDispatchers(raw['dispatchers'], file),
269
160
  };
270
161
  }
162
+ function readDispatchers(rawDispatchers, file) {
163
+ if (rawDispatchers === undefined)
164
+ return [];
165
+ if (!Array.isArray(rawDispatchers)) {
166
+ throw new Error(`dreamux config error in ${file}: dispatchers must be an array (got ${describeType(rawDispatchers)})`);
167
+ }
168
+ const out = [];
169
+ const ids = new Set();
170
+ const appIdToDispatcher = new Map();
171
+ for (let index = 0; index < rawDispatchers.length; index++) {
172
+ const raw = rawDispatchers[index];
173
+ const prefix = `dispatchers[${index}].`;
174
+ if (!isPlainObject(raw)) {
175
+ throw new Error(`dreamux config error in ${file}: dispatchers[${index}] must be an object (got ${describeType(raw)})`);
176
+ }
177
+ rejectUnknownKeys(raw, new Set(['id', 'cwd', 'enabled', 'feishu', 'codex']), file, prefix);
178
+ const id = validateDispatcherId(requireNonEmptyString(raw, 'id', file, prefix), `${prefix}id`);
179
+ if (ids.has(id)) {
180
+ throw new Error(`dreamux config error in ${file}: dispatchers[${index}].id duplicates dispatcher '${id}'`);
181
+ }
182
+ ids.add(id);
183
+ const feishu = readDispatcherFeishu(raw['feishu'], file, prefix);
184
+ const app_id = feishu.app_id;
185
+ const existing = appIdToDispatcher.get(app_id);
186
+ if (existing !== undefined) {
187
+ throw new Error(`dreamux config error in ${file}: dispatchers[${index}].feishu.app_id duplicates dispatcher '${existing}'`);
188
+ }
189
+ appIdToDispatcher.set(app_id, id);
190
+ const cwd = readOptionalString(raw, 'cwd', file, prefix);
191
+ out.push({
192
+ id,
193
+ cwd: cwd === null ? null : expandHome(cwd),
194
+ enabled: readOptionalBoolean(raw, 'enabled', true, file, prefix),
195
+ feishu,
196
+ codex: readDispatcherCodex(raw['codex'], file, prefix),
197
+ });
198
+ }
199
+ return out;
200
+ }
201
+ function readDispatcherFeishu(rawFeishu, file, dispatcherPrefix) {
202
+ const prefix = `${dispatcherPrefix}feishu.`;
203
+ if (!isPlainObject(rawFeishu)) {
204
+ throw new Error(`dreamux config error in ${file}: ${dispatcherPrefix}feishu must be an object (got ${describeType(rawFeishu)})`);
205
+ }
206
+ rejectUnknownKeys(rawFeishu, new Set(['app_id', 'app_secret']), file, prefix);
207
+ return {
208
+ app_id: requireNonEmptyString(rawFeishu, 'app_id', file, prefix),
209
+ app_secret: requireNonEmptyString(rawFeishu, 'app_secret', file, prefix),
210
+ };
211
+ }
212
+ function readDispatcherCodex(rawCodex, file, dispatcherPrefix) {
213
+ const prefix = `${dispatcherPrefix}codex.`;
214
+ if (rawCodex === undefined) {
215
+ return {
216
+ approval_policy: null,
217
+ sandbox_mode: null,
218
+ extra_args: [],
219
+ extra_env: {},
220
+ };
221
+ }
222
+ if (!isPlainObject(rawCodex)) {
223
+ throw new Error(`dreamux config error in ${file}: ${dispatcherPrefix}codex must be an object (got ${describeType(rawCodex)})`);
224
+ }
225
+ rejectUnknownKeys(rawCodex, new Set(['approval_policy', 'sandbox_mode', 'extra_args', 'extra_env']), file, prefix);
226
+ const approvalPolicy = readOptionalString(rawCodex, 'approval_policy', file, prefix);
227
+ if (approvalPolicy !== null && !new Set(['never', 'auto', 'auto-approve', 'on-failure']).has(approvalPolicy)) {
228
+ throw new Error(`dreamux config error in ${file}: ${prefix}approval_policy='${approvalPolicy}' is not one of never | auto | auto-approve | on-failure`);
229
+ }
230
+ const sandboxMode = readOptionalString(rawCodex, 'sandbox_mode', file, prefix);
231
+ if (sandboxMode !== null && !ALLOWED_SANDBOX_MODES.has(sandboxMode)) {
232
+ throw new Error(`dreamux config error in ${file}: ${prefix}sandbox_mode='${sandboxMode}' is not one of ${Array.from(ALLOWED_SANDBOX_MODES).join(' | ')}`);
233
+ }
234
+ return {
235
+ approval_policy: approvalPolicy,
236
+ sandbox_mode: sandboxMode,
237
+ extra_args: requireStringArray(rawCodex, 'extra_args', [], file, prefix),
238
+ extra_env: requireStringRecord(rawCodex, 'extra_env', {}, file, prefix),
239
+ };
240
+ }
241
+ function rejectUnknownKeys(obj, allowed, file, prefix) {
242
+ for (const key of Object.keys(obj)) {
243
+ if (allowed.has(key))
244
+ continue;
245
+ const name = `${prefix}${key}`;
246
+ throw new Error(`dreamux config error in ${file}: ${name} is not supported by the MVP config schema`);
247
+ }
248
+ }
271
249
  function isPlainObject(v) {
272
250
  return v !== null && typeof v === 'object' && !Array.isArray(v);
273
251
  }
@@ -277,6 +255,26 @@ function requireString(obj, key, fallback, file, prefix = '') {
277
255
  return fallback;
278
256
  return ensureString(v, `${prefix}${key}`, file);
279
257
  }
258
+ function requireNonEmptyString(obj, key, file, prefix = '') {
259
+ const value = requireString(obj, key, '', file, prefix);
260
+ if (value.trim() !== '')
261
+ return value;
262
+ throw new Error(`dreamux config error in ${file}: ${prefix}${key} must be a non-empty string`);
263
+ }
264
+ function readOptionalString(obj, key, file, prefix = '') {
265
+ const v = obj[key];
266
+ if (v === undefined || v === null)
267
+ return null;
268
+ return ensureString(v, `${prefix}${key}`, file);
269
+ }
270
+ function readOptionalBoolean(obj, key, fallback, file, prefix = '') {
271
+ const v = obj[key];
272
+ if (v === undefined)
273
+ return fallback;
274
+ if (typeof v === 'boolean')
275
+ return v;
276
+ throw new Error(`dreamux config error in ${file}: ${prefix}${key} must be a boolean (got ${describeType(v)})`);
277
+ }
280
278
  function ensureString(v, key, file) {
281
279
  if (typeof v !== 'string') {
282
280
  throw new Error(`dreamux config error in ${file}: ${key} must be a string (got ${describeType(v)})`);
@@ -297,6 +295,22 @@ function requireStringArray(obj, key, fallback, file, prefix = '') {
297
295
  return item;
298
296
  });
299
297
  }
298
+ function requireStringRecord(obj, key, fallback, file, prefix = '') {
299
+ const v = obj[key];
300
+ if (v === undefined)
301
+ return { ...fallback };
302
+ if (!isPlainObject(v)) {
303
+ throw new Error(`dreamux config error in ${file}: ${prefix}${key} must be an object of strings (got ${describeType(v)})`);
304
+ }
305
+ const out = {};
306
+ for (const [entryKey, entryValue] of Object.entries(v)) {
307
+ if (typeof entryValue !== 'string') {
308
+ throw new Error(`dreamux config error in ${file}: ${prefix}${key}.${entryKey} must be a string (got ${describeType(entryValue)})`);
309
+ }
310
+ out[entryKey] = entryValue;
311
+ }
312
+ return out;
313
+ }
300
314
  function requirePositiveInt(obj, key, fallback, file, prefix = '') {
301
315
  const n = readInt(obj, key, file, prefix);
302
316
  if (n === null)
@@ -306,32 +320,12 @@ function requirePositiveInt(obj, key, fallback, file, prefix = '') {
306
320
  }
307
321
  return n;
308
322
  }
309
- function requireNonNegativeInt(obj, key, fallback, file, prefix = '') {
310
- const n = readInt(obj, key, file, prefix);
311
- if (n === null)
312
- return fallback;
313
- if (n < 0) {
314
- throw new Error(`dreamux config error in ${file}: ${prefix}${key} must be >= 0 (got ${n})`);
315
- }
316
- return n;
317
- }
318
323
  function readInt(obj, key, file, prefix) {
319
324
  const v = obj[key];
320
325
  if (v === undefined)
321
326
  return null;
322
- // smol-toml returns BigInt for integers; accept both.
323
- if (typeof v === 'bigint') {
324
- if (v < BigInt(Number.MIN_SAFE_INTEGER) || v > BigInt(Number.MAX_SAFE_INTEGER)) {
325
- throw new Error(`dreamux config error in ${file}: ${prefix}${key}=${v} is outside safe integer range`);
326
- }
327
- return Number(v);
328
- }
329
- if (typeof v === 'number') {
330
- if (!Number.isInteger(v)) {
331
- throw new Error(`dreamux config error in ${file}: ${prefix}${key} must be an integer (got ${v})`);
332
- }
327
+ if (typeof v === 'number' && Number.isInteger(v))
333
328
  return v;
334
- }
335
329
  throw new Error(`dreamux config error in ${file}: ${prefix}${key} must be an integer (got ${describeType(v)})`);
336
330
  }
337
331
  function describeType(v) {
@@ -341,23 +335,29 @@ function describeType(v) {
341
335
  return 'array';
342
336
  return typeof v;
343
337
  }
344
- /**
345
- * Expand a leading `~/` (or bare `~`) to the user's home directory.
346
- * Absolute paths and other relative paths pass through unchanged; the
347
- * latter aren't supported by callers but we leave them alone so a typo
348
- * surfaces as a missing-path error rather than silent expansion.
349
- */
338
+ function redactFeishuSecrets(value) {
339
+ if (Array.isArray(value)) {
340
+ for (const item of value)
341
+ redactFeishuSecrets(item);
342
+ return;
343
+ }
344
+ if (!isPlainObject(value))
345
+ return;
346
+ for (const [key, child] of Object.entries(value)) {
347
+ if (key === 'app_secret' && typeof child === 'string') {
348
+ value[key] = '<redacted>';
349
+ continue;
350
+ }
351
+ redactFeishuSecrets(child);
352
+ }
353
+ }
350
354
  export function expandHome(path) {
351
355
  if (path === '~')
352
356
  return homedir();
353
357
  if (path.startsWith('~/'))
354
358
  return join(homedir(), path.slice(2));
355
- if (!isAbsolute(path)) {
356
- // Pass through; downstream consumers will error if they need an
357
- // absolute path. (We considered erroring here, but bash-style configs
358
- // sometimes use bare names that get resolved later.)
359
+ if (!isAbsolute(path))
359
360
  return path;
360
- }
361
361
  return path;
362
362
  }
363
363
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/runtime/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/runtime/config.ts"],"names":[],"mappings":"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"}