@excitedjs/dreamux 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -43
- package/dist/cli/dreamux.js +47 -18
- package/dist/cli/dreamux.js.map +1 -1
- package/dist/cli/server-ctl.js +2 -2
- package/dist/cli/server.js +7 -10
- package/dist/cli/server.js.map +1 -1
- package/dist/dispatcher/runtime.js +8 -8
- package/dist/dispatcher/runtime.js.map +1 -1
- package/dist/onboard/config-files.js +28 -85
- package/dist/onboard/config-files.js.map +1 -1
- package/dist/onboard/plugins.js +1 -1
- package/dist/onboard/plugins.js.map +1 -1
- package/dist/onboard/run.js +37 -43
- package/dist/onboard/run.js.map +1 -1
- package/dist/onboard/service.js +6 -1
- package/dist/onboard/service.js.map +1 -1
- package/dist/onboard/uninstall.js +127 -0
- package/dist/onboard/uninstall.js.map +1 -0
- package/dist/onboard/wizard.js +13 -43
- package/dist/onboard/wizard.js.map +1 -1
- package/dist/runtime/codex-args.js +1 -1
- package/dist/runtime/config.js +99 -193
- package/dist/runtime/config.js.map +1 -1
- package/dist/runtime/dispatcher-codex-home.js +8 -135
- package/dist/runtime/dispatcher-codex-home.js.map +1 -1
- package/dist/runtime/paths.js +16 -11
- package/dist/runtime/paths.js.map +1 -1
- package/dist/runtime/secrets.js +16 -14
- package/dist/runtime/secrets.js.map +1 -1
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -30,10 +30,12 @@ Design background:
|
|
|
30
30
|
- **Single-thread, multi-chat fan-in.** A bot can be invited into multiple
|
|
31
31
|
groups and DMs; every inbound message goes into the same Codex thread.
|
|
32
32
|
Outbound replies are routed by the inbound's `source_chat_id`.
|
|
33
|
-
- **
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
`~/.codex
|
|
33
|
+
- **Dispatcher cwd is explicit, Codex state stays local.** The Codex
|
|
34
|
+
daemon's cwd is configured during `dreamux onboard` or
|
|
35
|
+
`dreamux dispatcher add --codex-cwd`. Dispatcher app-server processes
|
|
36
|
+
inherit the operator's `CODEX_HOME` (default `~/.codex`), so login state,
|
|
37
|
+
memory, config, and plugin cache remain local to the operator. dreamux keeps
|
|
38
|
+
only app-server sockets/logs/SQLite under its runtime directory.
|
|
37
39
|
- **FIFO + at-most-once.** One running turn per dispatcher. After a server
|
|
38
40
|
crash, `running` inbound rows are flipped to `unknown` (the user is told
|
|
39
41
|
to confirm or resend); `awaiting_outbound` rows are safely retried.
|
|
@@ -71,17 +73,17 @@ output; **no `tsx` is needed at runtime** (PR #6).
|
|
|
71
73
|
|
|
72
74
|
The launcher works from any cwd and via symlinks (PR #6 + bin-launcher tests).
|
|
73
75
|
|
|
74
|
-
The server
|
|
76
|
+
The server keeps operator-edited config separate from runtime state — by design (see
|
|
75
77
|
[the global-config decision](../../.agents/decisions/global-config-dir.md)):
|
|
76
78
|
|
|
77
79
|
| Path | Purpose | Source of truth |
|
|
78
80
|
|---|---|---|
|
|
79
|
-
| `~/.dreamux/config.
|
|
81
|
+
| `~/.dreamux/config.json` | User-editable global config and Feishu bot secrets — auto-created on first boot; edit and restart to apply | the operator |
|
|
80
82
|
| `~/.codex-host/state.db` | SQLite (dispatchers + inbound buffer) | the server |
|
|
81
83
|
| `~/.codex-host/admin.sock` | Admin Unix socket (`0600`) | the server |
|
|
82
|
-
|
|
|
83
|
-
|
|
|
84
|
-
| `~/.codex-host/dispatchers/<id>/
|
|
84
|
+
| dispatcher `codex_cwd` | Codex app-server cwd, configured during onboard or dispatcher registration | the operator |
|
|
85
|
+
| operator `CODEX_HOME` (default `~/.codex`) | Codex login state, memory, config, and plugin cache | the operator |
|
|
86
|
+
| `~/.codex-host/dispatchers/<id>/app-server-control/as.sock` | Codex app-server Unix socket | the server |
|
|
85
87
|
| `~/.codex-host/dispatchers/<id>/*.log` | Codex stdout / stderr | the server |
|
|
86
88
|
|
|
87
89
|
`rm -rf ~/.codex-host` is a safe recovery — your config in `~/.dreamux/`
|
|
@@ -91,13 +93,11 @@ the `~/.codex-host` half anywhere you like.
|
|
|
91
93
|
## Configure a dispatcher
|
|
92
94
|
|
|
93
95
|
```bash
|
|
94
|
-
# Bot secret comes from an env var the server process can see.
|
|
95
|
-
export BOT_SECRET_FLOW='<bot-secret>'
|
|
96
|
-
|
|
97
96
|
./bin/dreamux dispatcher add \
|
|
98
97
|
--id flow \
|
|
99
98
|
--bot-app-id <APP_ID> \
|
|
100
|
-
--bot-secret-ref
|
|
99
|
+
--bot-secret-ref config:flow \
|
|
100
|
+
--codex-cwd /path/to/dispatcher/workspace
|
|
101
101
|
|
|
102
102
|
# Inspect / restart
|
|
103
103
|
./bin/dreamux dispatcher list
|
|
@@ -105,9 +105,16 @@ export BOT_SECRET_FLOW='<bot-secret>'
|
|
|
105
105
|
./bin/dreamux dispatcher start --id flow # if not auto-started
|
|
106
106
|
```
|
|
107
107
|
|
|
108
|
+
For normal installs, prefer `dreamux onboard`; it writes
|
|
109
|
+
`feishu.bots.<dispatcher-id>.app_secret` into `~/.dreamux/config.json` and
|
|
110
|
+
registers the dispatcher with `bot_secret_ref=config:<dispatcher-id>`.
|
|
111
|
+
`dreamux config show` redacts these secrets by default; use
|
|
112
|
+
`dreamux config show --raw` only when you intentionally need the unredacted
|
|
113
|
+
local file.
|
|
114
|
+
|
|
108
115
|
## MVP verification path (issue #2 §"MVP 验收脚本")
|
|
109
116
|
|
|
110
|
-
1. `dreamux
|
|
117
|
+
1. `dreamux onboard --dispatcher-id flow --dispatcher-cwd <WORKSPACE> --bot-app-id <APP_ID> --bot-app-secret <APP_SECRET>`
|
|
111
118
|
2. `dreamux serve` — dispatcher `flow` goes to `ready`
|
|
112
119
|
3. Invite the bot to a Feishu group A, send `hi`
|
|
113
120
|
4. Server delivers it into the Codex thread; reply goes back to group A
|
|
@@ -122,32 +129,44 @@ export BOT_SECRET_FLOW='<bot-secret>'
|
|
|
122
129
|
## Configuration reference
|
|
123
130
|
|
|
124
131
|
Precedence for every config-able value (highest wins): env var →
|
|
125
|
-
per-dispatcher field → `~/.dreamux/config.
|
|
132
|
+
per-dispatcher field → `~/.dreamux/config.json` → built-in default.
|
|
126
133
|
See [the global-config decision](../../.agents/decisions/global-config-dir.md).
|
|
127
134
|
|
|
128
|
-
### Global: `~/.dreamux/config.
|
|
129
|
-
|
|
130
|
-
Auto-created on first boot with this default (excerpt — open the file
|
|
131
|
-
itself for the inline comments explaining each key):
|
|
135
|
+
### Global: `~/.dreamux/config.json`
|
|
132
136
|
|
|
133
|
-
|
|
134
|
-
runtime_dir = "~/.codex-host"
|
|
135
|
-
# admin_socket = "~/.codex-host/admin.sock" # default: <runtime_dir>/admin.sock
|
|
137
|
+
Auto-created on first boot with this default shape:
|
|
136
138
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
139
|
+
```json
|
|
140
|
+
{
|
|
141
|
+
"runtime_dir": "~/.codex-host",
|
|
142
|
+
"admin_socket": null,
|
|
143
|
+
"codex": {
|
|
144
|
+
"bin": "codex",
|
|
145
|
+
"approval_policy": "never",
|
|
146
|
+
"sandbox_mode": "workspace-write",
|
|
147
|
+
"extra_args": [],
|
|
148
|
+
"initialize_timeout_ms": 10000
|
|
149
|
+
},
|
|
150
|
+
"outbound": {
|
|
151
|
+
"retries": 3,
|
|
152
|
+
"retry_delay_ms": 1000
|
|
153
|
+
},
|
|
154
|
+
"feishu": {
|
|
155
|
+
"bots": {
|
|
156
|
+
"flow": {
|
|
157
|
+
"app_id": "<APP_ID>",
|
|
158
|
+
"app_secret": "<APP_SECRET>"
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
147
163
|
```
|
|
148
164
|
|
|
149
|
-
Edit and restart `dreamux serve`.
|
|
150
|
-
|
|
165
|
+
Edit and restart `dreamux serve`. JSON parse errors fail fast. If an older
|
|
166
|
+
install still has only `~/.dreamux/config.toml`, dreamux refuses to create
|
|
167
|
+
default JSON over it; manually create `config.json` preserving the old
|
|
168
|
+
`runtime_dir` and other settings, add the needed `feishu.bots` entries, then
|
|
169
|
+
move the legacy TOML file aside.
|
|
151
170
|
|
|
152
171
|
### `codex_args_json` (per-dispatcher, overrides global)
|
|
153
172
|
|
|
@@ -159,7 +178,7 @@ JSON object stored in `dispatchers.codex_args_json`:
|
|
|
159
178
|
|
|
160
179
|
| Field | Default | Notes |
|
|
161
180
|
| ---------------- | --------- | ---------------------------------------------------- |
|
|
162
|
-
| `approvalPolicy` | inherits `
|
|
181
|
+
| `approvalPolicy` | inherits `codex.approval_policy` from `~/.dreamux/config.json`, else `"never"` | Must be one of `never`/`auto`/`auto-approve`/`on-failure`. Otherwise startup fails fast (issue #2 §"实现陷阱"). |
|
|
163
182
|
| `sandboxMode` | inherits `[codex] sandbox_mode`, else `"workspace-write"` | Must be one of `read-only`/`workspace-write`/`danger-full-access` (codex 0.134 enum). Validated at dispatcher startup. |
|
|
164
183
|
| `extraArgs` | appended *after* global `codex.extra_args` | codex's "last write wins" semantics for `-c key=value` mean a per-dispatcher entry effectively overrides a same-key global. |
|
|
165
184
|
|
|
@@ -170,9 +189,9 @@ JSON object stored in `dispatchers.codex_args_json`:
|
|
|
170
189
|
| `CODEX_HOST_RUNTIME_DIR` | Override `runtime_dir` |
|
|
171
190
|
| `CODEX_HOST_ADMIN_SOCKET` | Override admin Unix socket path |
|
|
172
191
|
| `CODEX_HOST_CODEX_BIN` | Override `codex.bin` |
|
|
173
|
-
| `DREAMUX_CONFIG_DIR` | Override `~/.dreamux` (where `config.
|
|
174
|
-
| `BOT_SECRET_<NAME>` |
|
|
175
|
-
| `DREAMUX_SKIP_LIVE_CODEX` | Opt out of the live
|
|
192
|
+
| `DREAMUX_CONFIG_DIR` | Override `~/.dreamux` (where `config.json` lives) |
|
|
193
|
+
| `BOT_SECRET_<NAME>` | Legacy/manual bot secrets referenced by `env:BOT_SECRET_<NAME>` |
|
|
194
|
+
| `DREAMUX_SKIP_LIVE_CODEX` | Opt out of the live Codex app-server integration test (loud skip) |
|
|
176
195
|
|
|
177
196
|
## What this MVP does **not** do
|
|
178
197
|
|
|
@@ -192,7 +211,7 @@ JSON object stored in `dispatchers.codex_args_json`:
|
|
|
192
211
|
|
|
193
212
|
```bash
|
|
194
213
|
# 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-
|
|
214
|
+
node common/scripts/install-run-rush.js test # smoke + bin-launcher + codex-live
|
|
196
215
|
```
|
|
197
216
|
|
|
198
217
|
- `tests/smoke.test.ts` — fake-codex-driven dispatcher behavior:
|
|
@@ -202,11 +221,13 @@ node common/scripts/install-run-rush.js test # smoke + bin-launcher + codex-01
|
|
|
202
221
|
and repo-root shim from arbitrary cwds and through symlinks; static
|
|
203
222
|
"no tsx" assertion; manifest assertion for the single global bin.
|
|
204
223
|
- `tests/doctor.test.ts` — covers standalone doctor checks for
|
|
205
|
-
|
|
224
|
+
inherited operator Codex home state, including managed-service auth
|
|
206
225
|
visibility.
|
|
207
|
-
- `tests/codex-
|
|
208
|
-
|
|
209
|
-
|
|
226
|
+
- `tests/codex-live.test.ts` — spawns a real `codex app-server`. CI installs
|
|
227
|
+
`@openai/codex@latest` before running tests so this compatibility check is
|
|
228
|
+
not skipped by default and tracks the current Codex CLI. Local developers can
|
|
229
|
+
still opt out explicitly with `DREAMUX_SKIP_LIVE_CODEX=1` when no Codex
|
|
230
|
+
binary is available.
|
|
210
231
|
|
|
211
232
|
## License
|
|
212
233
|
|
package/dist/cli/dreamux.js
CHANGED
|
@@ -11,8 +11,9 @@ import { dirname, join } from 'node:path';
|
|
|
11
11
|
import { fileURLToPath } from 'node:url';
|
|
12
12
|
import yargs from 'yargs';
|
|
13
13
|
import { hideBin } from 'yargs/helpers';
|
|
14
|
-
import { globalConfigFile } from '../runtime/config.js';
|
|
14
|
+
import { globalConfigFile, redactConfigForDisplay, } from '../runtime/config.js';
|
|
15
15
|
import { runOnboard } from '../onboard/run.js';
|
|
16
|
+
import { runUninstall, } from '../onboard/uninstall.js';
|
|
16
17
|
import { collectOnboardAnswers, } from '../onboard/wizard.js';
|
|
17
18
|
import { printDoctorResult, runDreamuxDoctor } from './doctor.js';
|
|
18
19
|
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
@@ -72,7 +73,7 @@ function buildDispatcherCommands(y) {
|
|
|
72
73
|
.option('bot-secret-ref', {
|
|
73
74
|
type: 'string',
|
|
74
75
|
demandOption: true,
|
|
75
|
-
describe: 'Secret reference,
|
|
76
|
+
describe: 'Secret reference, usually config:<dispatcher-id>',
|
|
76
77
|
})
|
|
77
78
|
.option('codex-args-json', {
|
|
78
79
|
type: 'string',
|
|
@@ -130,21 +131,13 @@ function buildOnboardCommand(y) {
|
|
|
130
131
|
type: 'string',
|
|
131
132
|
describe: 'Dispatcher id to create or update',
|
|
132
133
|
})
|
|
133
|
-
.option('
|
|
134
|
-
type: 'string',
|
|
135
|
-
describe: 'Codex CLI binary or absolute path',
|
|
136
|
-
})
|
|
137
|
-
.option('codex-model', {
|
|
134
|
+
.option('dispatcher-cwd', {
|
|
138
135
|
type: 'string',
|
|
139
|
-
describe: '
|
|
136
|
+
describe: 'Working directory used when starting the dispatcher Codex app-server',
|
|
140
137
|
})
|
|
141
|
-
.option('codex-
|
|
142
|
-
type: 'string',
|
|
143
|
-
describe: 'Provider label used for onboarding prompts and auth guidance',
|
|
144
|
-
})
|
|
145
|
-
.option('auth-env-var', {
|
|
138
|
+
.option('codex-bin', {
|
|
146
139
|
type: 'string',
|
|
147
|
-
describe: '
|
|
140
|
+
describe: 'Codex CLI binary or absolute path',
|
|
148
141
|
})
|
|
149
142
|
.option('codex-marketplace-source', {
|
|
150
143
|
type: 'string',
|
|
@@ -192,9 +185,9 @@ function buildOnboardCommand(y) {
|
|
|
192
185
|
type: 'string',
|
|
193
186
|
describe: 'Channel bot app id',
|
|
194
187
|
})
|
|
195
|
-
.option('bot-secret
|
|
188
|
+
.option('bot-app-secret', {
|
|
196
189
|
type: 'string',
|
|
197
|
-
describe: '
|
|
190
|
+
describe: 'Channel bot app secret written to dreamux config',
|
|
198
191
|
})
|
|
199
192
|
.option('register-service', {
|
|
200
193
|
type: 'boolean',
|
|
@@ -214,6 +207,30 @@ async function handleOnboard(argv) {
|
|
|
214
207
|
const result = await runOnboard({ answers });
|
|
215
208
|
printOnboardResult(result);
|
|
216
209
|
}
|
|
210
|
+
function buildUninstallCommand(y) {
|
|
211
|
+
return y
|
|
212
|
+
.option('dry-run', {
|
|
213
|
+
type: 'boolean',
|
|
214
|
+
describe: 'Print the planned removals without deleting or unregistering',
|
|
215
|
+
})
|
|
216
|
+
.option('config-dir', {
|
|
217
|
+
type: 'string',
|
|
218
|
+
describe: 'dreamux global config directory',
|
|
219
|
+
})
|
|
220
|
+
.option('runtime-dir', {
|
|
221
|
+
type: 'string',
|
|
222
|
+
describe: 'dreamux runtime directory',
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
async function handleUninstall(argv) {
|
|
226
|
+
const args = argv;
|
|
227
|
+
const result = await runUninstall({
|
|
228
|
+
dryRun: args.dryRun,
|
|
229
|
+
configDir: args.configDir,
|
|
230
|
+
runtimeDir: args.runtimeDir,
|
|
231
|
+
});
|
|
232
|
+
printUninstallResult(result);
|
|
233
|
+
}
|
|
217
234
|
function printOnboardResult(result) {
|
|
218
235
|
console.log('dreamux onboard file ledger:');
|
|
219
236
|
for (const entry of result.files) {
|
|
@@ -226,17 +243,28 @@ function printOnboardResult(result) {
|
|
|
226
243
|
console.log(`dreamux onboard service: ${result.service.platform} ${result.service.unitPath}`);
|
|
227
244
|
}
|
|
228
245
|
}
|
|
246
|
+
function printUninstallResult(result) {
|
|
247
|
+
console.log('dreamux uninstall file ledger:');
|
|
248
|
+
for (const entry of result.entries) {
|
|
249
|
+
console.log(`${entry.status}\t${entry.path}\t${entry.reason}`);
|
|
250
|
+
}
|
|
251
|
+
console.log(`dreamux uninstall service: ${result.service.platform} ${result.service.unitPath}`);
|
|
252
|
+
}
|
|
229
253
|
function buildConfigCommands(y) {
|
|
230
254
|
return y
|
|
231
255
|
.command('path', 'Print the dreamux global config path', (yy) => yy, () => {
|
|
232
256
|
console.log(globalConfigFile());
|
|
233
257
|
})
|
|
234
|
-
.command('show', 'Print the dreamux global config file', (yy) => yy,
|
|
258
|
+
.command('show', 'Print the dreamux global config file', (yy) => yy.option('raw', {
|
|
259
|
+
type: 'boolean',
|
|
260
|
+
describe: 'Print unredacted config, including channel secrets',
|
|
261
|
+
}), (argv) => {
|
|
235
262
|
const file = globalConfigFile();
|
|
236
263
|
if (!existsSync(file)) {
|
|
237
264
|
throw new Error(`config file does not exist: ${file}`);
|
|
238
265
|
}
|
|
239
|
-
|
|
266
|
+
const raw = readFileSync(file, 'utf8');
|
|
267
|
+
process.stdout.write(argv.raw === true ? raw : redactConfigForDisplay(raw, file));
|
|
240
268
|
})
|
|
241
269
|
.demandCommand(1, 'Choose a config command')
|
|
242
270
|
.strict();
|
|
@@ -246,6 +274,7 @@ async function main() {
|
|
|
246
274
|
.scriptName('dreamux')
|
|
247
275
|
.usage('$0 <command> [options]')
|
|
248
276
|
.command('onboard', 'Run first-time setup', buildOnboardCommand, handleOnboard)
|
|
277
|
+
.command('uninstall', 'Remove files and user service created by onboard', buildUninstallCommand, handleUninstall)
|
|
249
278
|
.command('serve', 'Run the local server in the foreground', (yy) => yy, async () => execEntry(SERVER_ENTRY, []))
|
|
250
279
|
.command('status', 'Show running server status', (yy) => yy, async () => execEntry(SERVER_CTL_ENTRY, ['server', 'status'], adminEnv()))
|
|
251
280
|
.command('doctor', 'Run setup diagnostics', (yy) => yy.option('json', {
|
package/dist/cli/dreamux.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dreamux.js","sourceRoot":"","sources":["../../src/cli/dreamux.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,
|
|
1
|
+
{"version":3,"file":"dreamux.js","sourceRoot":"","sources":["../../src/cli/dreamux.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/server-ctl.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* Usage:
|
|
8
8
|
* server-ctl server status
|
|
9
9
|
* server-ctl dispatcher list
|
|
10
|
-
* server-ctl dispatcher add --id flow --bot-app-id <APP_ID> --bot-secret-ref
|
|
10
|
+
* server-ctl dispatcher add --id flow --bot-app-id <APP_ID> --bot-secret-ref config:flow
|
|
11
11
|
* server-ctl dispatcher status --id flow
|
|
12
12
|
* server-ctl dispatcher start --id flow
|
|
13
13
|
* server-ctl dispatcher stop --id flow
|
|
@@ -156,7 +156,7 @@ Usage:
|
|
|
156
156
|
${programName} server status
|
|
157
157
|
${programName} dispatcher list
|
|
158
158
|
${programName} dispatcher add --id <ID> --bot-app-id <APP_ID> \\
|
|
159
|
-
--bot-secret-ref
|
|
159
|
+
--bot-secret-ref config:<ID> [--codex-args-json <JSON>] [--codex-cwd <PATH>]
|
|
160
160
|
${programName} dispatcher status --id <ID>
|
|
161
161
|
${programName} dispatcher start --id <ID>
|
|
162
162
|
${programName} dispatcher stop --id <ID>
|
package/dist/cli/server.js
CHANGED
|
@@ -9,12 +9,11 @@
|
|
|
9
9
|
* 1. environment variables (CODEX_HOST_RUNTIME_DIR, CODEX_HOST_ADMIN_SOCKET,
|
|
10
10
|
* CODEX_HOST_CODEX_BIN) — escape hatch for CI / one-off debug runs
|
|
11
11
|
* 2. per-dispatcher fields in SQLite (codex_args_json: approvalPolicy, extraArgs)
|
|
12
|
-
* 3. ~/.dreamux/config.
|
|
12
|
+
* 3. ~/.dreamux/config.json — user-editable global defaults and channel secrets; auto-created
|
|
13
13
|
* with sensible defaults on first boot (see src/runtime/config.ts)
|
|
14
14
|
* 4. built-in defaults compiled into the binary
|
|
15
15
|
*
|
|
16
|
-
* Per-dispatcher secrets
|
|
17
|
-
* deliberately do not flow through the config file (issue #2 Q9).
|
|
16
|
+
* Per-dispatcher Feishu secrets live in the dreamux JSON config.
|
|
18
17
|
*/
|
|
19
18
|
import { mkdirSync } from 'node:fs';
|
|
20
19
|
import { dirname } from 'node:path';
|
|
@@ -26,7 +25,7 @@ async function main() {
|
|
|
26
25
|
printHelp();
|
|
27
26
|
return;
|
|
28
27
|
}
|
|
29
|
-
// Load (or create on first boot) ~/.dreamux/config.
|
|
28
|
+
// Load (or create on first boot) ~/.dreamux/config.json *before* anything
|
|
30
29
|
// else looks at runtime paths — paths.* consults the active config for
|
|
31
30
|
// its non-env defaults. A parse error here fails-fast with a file:line
|
|
32
31
|
// pointer; the operator fixes the file and restarts.
|
|
@@ -57,11 +56,11 @@ Usage:
|
|
|
57
56
|
dreamux serve [--help]
|
|
58
57
|
|
|
59
58
|
Global config:
|
|
60
|
-
~/.dreamux/config.
|
|
59
|
+
~/.dreamux/config.json Auto-created on first boot. Override with the
|
|
61
60
|
DREAMUX_CONFIG_DIR env var. Edit and restart to
|
|
62
61
|
apply. Holds defaults for codex.bin,
|
|
63
62
|
approval_policy, runtime_dir, outbound retries,
|
|
64
|
-
|
|
63
|
+
and Feishu channel secrets.
|
|
65
64
|
|
|
66
65
|
Runtime data (kept separate from config):
|
|
67
66
|
~/.codex-host/ SQLite, admin socket, per-dispatcher logs.
|
|
@@ -72,13 +71,11 @@ Environment overrides (highest precedence):
|
|
|
72
71
|
CODEX_HOST_RUNTIME_DIR Overrides config.runtime_dir
|
|
73
72
|
CODEX_HOST_ADMIN_SOCKET Overrides config.admin_socket
|
|
74
73
|
CODEX_HOST_CODEX_BIN Overrides config.codex.bin
|
|
75
|
-
DREAMUX_CONFIG_DIR Overrides ~/.dreamux (where config.
|
|
76
|
-
BOT_SECRET_<NAME> Each dispatcher's bot secret (referenced via
|
|
77
|
-
bot_secret_ref=env:BOT_SECRET_<NAME>)
|
|
74
|
+
DREAMUX_CONFIG_DIR Overrides ~/.dreamux (where config.json lives)
|
|
78
75
|
|
|
79
76
|
Add dispatchers:
|
|
80
77
|
dreamux dispatcher add --id flow --bot-app-id <APP_ID> \\
|
|
81
|
-
--bot-secret-ref
|
|
78
|
+
--bot-secret-ref config:flow
|
|
82
79
|
`);
|
|
83
80
|
}
|
|
84
81
|
main().catch((err) => {
|
package/dist/cli/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/cli/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/cli/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEjF,KAAK,UAAU,IAAI;IACjB,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,0EAA0E;IAC1E,uEAAuE;IACvE,uEAAuE;IACvE,qDAAqD;IACrD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACrE,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CACX,oBAAoB,UAAU,qDAAqD,CACpF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,sCAAsC,UAAU,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,SAAS,CAAC,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAExD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACtC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,OAAO,CAAC,KAAK,CAAC,8BAA8B,eAAe,EAAE,EAAE,CAAC,CAAC;IAEjE,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAiB,EAAE;QACvD,OAAO,CAAC,KAAK,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;CA0Bb,CAAC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -24,8 +24,8 @@ import { CodexWsClient } from '../codex/rpc.js';
|
|
|
24
24
|
import { performInitializeHandshake } from '../codex/handshake.js';
|
|
25
25
|
import { TurnManager } from './turn-manager.js';
|
|
26
26
|
import { createFailFastApprovalHandler } from './approval.js';
|
|
27
|
-
import { dispatcherCodexCwd,
|
|
28
|
-
import {
|
|
27
|
+
import { dispatcherCodexCwd, dispatcherSocketPath, dispatcherStderrLog, dispatcherStdoutLog, } from '../runtime/paths.js';
|
|
28
|
+
import { dispatcherCodexHomeDoctorContext, } from '../runtime/dispatcher-codex-home.js';
|
|
29
29
|
import { outboundTargetForInbound } from '../channel/outbound.js';
|
|
30
30
|
export class DispatcherRuntime {
|
|
31
31
|
row;
|
|
@@ -80,13 +80,13 @@ export class DispatcherRuntime {
|
|
|
80
80
|
try {
|
|
81
81
|
await this.recoverInboundOnStartup();
|
|
82
82
|
const cwd = this.row.codex_cwd ?? dispatcherCodexCwd(this.dispatcherId);
|
|
83
|
-
const codexHome = dispatcherCodexHome(this.dispatcherId);
|
|
84
83
|
const socketPath = dispatcherSocketPath(this.dispatcherId);
|
|
85
84
|
const extraArgs = this.deps.resolveExtraArgs?.(this.row) ?? [];
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
if (this.deps.codexHomeDoctor !== undefined) {
|
|
86
|
+
await this.deps.codexHomeDoctor(dispatcherCodexHomeDoctorContext(this.dispatcherId, {
|
|
87
|
+
codexCliArgs: extraArgs,
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
90
|
const factory = this.deps.codexProcessFactory ?? ((o) => new CodexProcess(o));
|
|
91
91
|
this.process = factory({
|
|
92
92
|
socketPath,
|
|
@@ -95,7 +95,7 @@ export class DispatcherRuntime {
|
|
|
95
95
|
stderrLogPath: dispatcherStderrLog(this.dispatcherId),
|
|
96
96
|
binPath: this.deps.codexBinPath,
|
|
97
97
|
extraArgs,
|
|
98
|
-
env: { ...process.env
|
|
98
|
+
env: { ...process.env },
|
|
99
99
|
});
|
|
100
100
|
mkdirSync(dirname(socketPath), { recursive: true });
|
|
101
101
|
await this.process.start();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/dispatcher/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,OAAO,EAAE,YAAY,EAA4B,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAKnE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/dispatcher/runtime.ts"],"names":[],"mappings":"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"}
|