@excitedjs/dreamux 0.9.0 → 0.9.2

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 (43) hide show
  1. package/dist/admin/socket.js +18 -20
  2. package/dist/admin/socket.js.map +1 -1
  3. package/dist/channel/chat-bots-store.js +26 -28
  4. package/dist/channel/chat-bots-store.js.map +1 -1
  5. package/dist/channel/feishu-gate.js +16 -9
  6. package/dist/channel/feishu-gate.js.map +1 -1
  7. package/dist/channel/introduce.js +22 -0
  8. package/dist/channel/introduce.js.map +1 -1
  9. package/dist/cli/doctor.js +27 -16
  10. package/dist/cli/doctor.js.map +1 -1
  11. package/dist/cli/dreamux.js +15 -5
  12. package/dist/cli/dreamux.js.map +1 -1
  13. package/dist/cli/server.js +7 -7
  14. package/dist/cli/server.js.map +1 -1
  15. package/dist/codex/supervisor.js +31 -32
  16. package/dist/codex/supervisor.js.map +1 -1
  17. package/dist/daemon/install.js +2 -2
  18. package/dist/daemon/install.js.map +1 -1
  19. package/dist/daemon/restart-intent.js +11 -13
  20. package/dist/daemon/restart-intent.js.map +1 -1
  21. package/dist/dispatcher/runtime.js +22 -17
  22. package/dist/dispatcher/runtime.js.map +1 -1
  23. package/dist/onboard/dispatcher-skill.js +13 -8
  24. package/dist/onboard/dispatcher-skill.js.map +1 -1
  25. package/dist/onboard/ledger.js +33 -23
  26. package/dist/onboard/ledger.js.map +1 -1
  27. package/dist/onboard/run.js +29 -19
  28. package/dist/onboard/run.js.map +1 -1
  29. package/dist/onboard/service.js +27 -17
  30. package/dist/onboard/service.js.map +1 -1
  31. package/dist/onboard/uninstall.js +30 -20
  32. package/dist/onboard/uninstall.js.map +1 -1
  33. package/dist/runtime/config.js +32 -22
  34. package/dist/runtime/config.js.map +1 -1
  35. package/dist/runtime/dispatcher-codex-home.js +22 -12
  36. package/dist/runtime/dispatcher-codex-home.js.map +1 -1
  37. package/dist/runtime/dispatcher-store.js +48 -21
  38. package/dist/runtime/dispatcher-store.js.map +1 -1
  39. package/dist/runtime/logger.js +36 -11
  40. package/dist/runtime/logger.js.map +1 -1
  41. package/dist/server.js +58 -16
  42. package/dist/server.js.map +1 -1
  43. package/package.json +6 -3
@@ -15,7 +15,7 @@
15
15
  * start a fresh thread, record the lost one in last_lost_thread_id,
16
16
  * and post a visible warning to the next source chat.
17
17
  */
18
- import { mkdirSync } from 'node:fs';
18
+ import { mkdir } from 'node:fs/promises';
19
19
  import { dirname } from 'node:path';
20
20
  import { CodexProcess, } from '../codex/supervisor.js';
21
21
  import { CodexWsClient } from '../codex/rpc.js';
@@ -102,18 +102,18 @@ export class DispatcherRuntime {
102
102
  this.restarting = false;
103
103
  this.clearRestartTimer();
104
104
  this.setStatus('starting');
105
- this.deps.dispatchers.setStatus(this.dispatcherId, 'starting', {
105
+ await this.deps.dispatchers.setStatus(this.dispatcherId, 'starting', {
106
106
  last_started_at: Date.now(),
107
107
  });
108
108
  try {
109
109
  await this.startCodexRuntime();
110
- this.markReady();
110
+ await this.markReady();
111
111
  }
112
112
  catch (err) {
113
113
  const msg = err instanceof Error ? err.message : String(err);
114
114
  this.log('error', `start failed: ${msg}`, err);
115
115
  this.setStatus('degraded');
116
- this.deps.dispatchers.setStatus(this.dispatcherId, 'degraded', {
116
+ await this.deps.dispatchers.setStatus(this.dispatcherId, 'degraded', {
117
117
  last_error: msg,
118
118
  });
119
119
  await this.cleanupOnFailure();
@@ -146,7 +146,7 @@ export class DispatcherRuntime {
146
146
  return;
147
147
  this.handleChildExit(exit);
148
148
  });
149
- mkdirSync(dirname(socketPath), { recursive: true });
149
+ await mkdir(dirname(socketPath), { recursive: true });
150
150
  await process.start();
151
151
  const clientFactory = this.deps.codexClientFactory ?? ((sock) => new CodexWsClient({ socketPath: sock }));
152
152
  const client = clientFactory(socketPath);
@@ -191,7 +191,7 @@ export class DispatcherRuntime {
191
191
  // Fresh thread.
192
192
  const res = await this.client.request('thread/start', {});
193
193
  this.threadId = res.thread.id;
194
- this.deps.dispatchers.setThreadId(this.dispatcherId, this.threadId);
194
+ await this.deps.dispatchers.setThreadId(this.dispatcherId, this.threadId);
195
195
  this.log('info', `started fresh thread ${this.threadId}`);
196
196
  return;
197
197
  }
@@ -209,7 +209,7 @@ export class DispatcherRuntime {
209
209
  this.log('warn', `thread/resume failed for ${existing}: ${msg}; starting fresh thread`);
210
210
  const res = await this.client.request('thread/start', {});
211
211
  this.threadId = res.thread.id;
212
- this.deps.dispatchers.recordLostThread(this.dispatcherId, existing, this.threadId, `thread/resume failed: ${msg}`);
212
+ await this.deps.dispatchers.recordLostThread(this.dispatcherId, existing, this.threadId, `thread/resume failed: ${msg}`);
213
213
  // Park a warning to be delivered with the next outbound — best-effort
214
214
  // queue note. For MVP we just log; full user-visible delivery on next
215
215
  // inbound is a follow-up (see PR review).
@@ -230,10 +230,10 @@ export class DispatcherRuntime {
230
230
  this.stopping = true;
231
231
  this.clearRestartTimer();
232
232
  this.setStatus('stopping');
233
- this.deps.dispatchers.setStatus(this.dispatcherId, 'stopping');
233
+ await this.deps.dispatchers.setStatus(this.dispatcherId, 'stopping');
234
234
  await this.teardownCodexRuntime();
235
235
  this.setStatus('stopped');
236
- this.deps.dispatchers.setStatus(this.dispatcherId, 'stopped');
236
+ await this.deps.dispatchers.setStatus(this.dispatcherId, 'stopped');
237
237
  }
238
238
  async cleanupOnFailure() {
239
239
  this.clearRestartTimer();
@@ -282,9 +282,14 @@ export class DispatcherRuntime {
282
282
  const delay = this.restartDelayMs(attempt);
283
283
  this.log('warn', `${reason}; restarting in ${delay}ms`);
284
284
  this.setStatus('degraded');
285
- this.deps.dispatchers.setStatus(this.dispatcherId, 'degraded', {
286
- last_error: reason,
287
- });
285
+ // scheduleRestart runs from synchronous event handlers (ws close, child
286
+ // exit); the durable status write is best-effort here — persist it without
287
+ // blocking, logging (never throwing) on failure. The restart timer's later
288
+ // 'starting'/'ready' writes are awaited, so they cannot be reordered behind
289
+ // this one within the backoff delay.
290
+ void this.deps.dispatchers
291
+ .setStatus(this.dispatcherId, 'degraded', { last_error: reason })
292
+ .catch((err) => this.log('warn', 'failed to persist degraded status', err));
288
293
  this.restartTimer = setTimeout(() => {
289
294
  this.restartTimer = null;
290
295
  void this.restartCodexRuntime(reason);
@@ -296,7 +301,7 @@ export class DispatcherRuntime {
296
301
  this.restarting = true;
297
302
  let retryReason = null;
298
303
  this.setStatus('starting');
299
- this.deps.dispatchers.setStatus(this.dispatcherId, 'starting', {
304
+ await this.deps.dispatchers.setStatus(this.dispatcherId, 'starting', {
300
305
  last_started_at: Date.now(),
301
306
  });
302
307
  try {
@@ -309,14 +314,14 @@ export class DispatcherRuntime {
309
314
  return;
310
315
  }
311
316
  this.restartAttempts = 0;
312
- this.markReady();
317
+ await this.markReady();
313
318
  this.log('info', `restarted codex app-server after: ${reason}`);
314
319
  }
315
320
  catch (err) {
316
321
  const msg = err instanceof Error ? err.message : String(err);
317
322
  this.log('error', `restart failed: ${msg}`, err);
318
323
  this.setStatus('degraded');
319
- this.deps.dispatchers.setStatus(this.dispatcherId, 'degraded', {
324
+ await this.deps.dispatchers.setStatus(this.dispatcherId, 'degraded', {
320
325
  last_error: msg,
321
326
  });
322
327
  await this.teardownCodexRuntime();
@@ -339,9 +344,9 @@ export class DispatcherRuntime {
339
344
  clearTimeout(this.restartTimer);
340
345
  this.restartTimer = null;
341
346
  }
342
- markReady() {
347
+ async markReady() {
343
348
  this.setStatus('ready');
344
- this.deps.dispatchers.setStatus(this.dispatcherId, 'ready', {
349
+ await this.deps.dispatchers.setStatus(this.dispatcherId, 'ready', {
345
350
  last_ready_at: Date.now(),
346
351
  last_error: null,
347
352
  });
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/dispatcher/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/dispatcher/runtime.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,23 @@
1
- import { existsSync, readFileSync } from 'node:fs';
1
+ import { readFile } from 'node:fs/promises';
2
2
  import { dirname, join } from 'node:path';
3
3
  import { fileURLToPath } from 'node:url';
4
4
  import { writeTextFile } from './ledger.js';
5
5
  const HERE = dirname(fileURLToPath(import.meta.url));
6
6
  const PACKAGE_ROOT = dirname(dirname(HERE));
7
7
  const DISPATCHER_SKILL_SOURCE = join(PACKAGE_ROOT, 'skills', 'dispatcher', 'SKILL.md');
8
- export function installDispatcherSkill(options) {
9
- const content = readDispatcherSkill();
10
- writeTextFile(options.skillPath, content, options.ledger, 'workspace-local dispatcher skill', { mode: 0o600, dryRun: options.dryRun });
8
+ export async function installDispatcherSkill(options) {
9
+ const content = await readDispatcherSkill();
10
+ await writeTextFile(options.skillPath, content, options.ledger, 'workspace-local dispatcher skill', { mode: 0o600, dryRun: options.dryRun });
11
11
  }
12
- function readDispatcherSkill() {
13
- if (!existsSync(DISPATCHER_SKILL_SOURCE)) {
14
- throw new Error(`missing bundled dispatcher skill: ${DISPATCHER_SKILL_SOURCE}`);
12
+ async function readDispatcherSkill() {
13
+ try {
14
+ return await readFile(DISPATCHER_SKILL_SOURCE, 'utf8');
15
+ }
16
+ catch (err) {
17
+ if (err.code === 'ENOENT') {
18
+ throw new Error(`missing bundled dispatcher skill: ${DISPATCHER_SKILL_SOURCE}`);
19
+ }
20
+ throw err;
15
21
  }
16
- return readFileSync(DISPATCHER_SKILL_SOURCE, 'utf8');
17
22
  }
18
23
  //# sourceMappingURL=dispatcher-skill.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher-skill.js","sourceRoot":"","sources":["../../src/onboard/dispatcher-skill.ts"],"names":[],"mappings":"AAAA,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,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,MAAM,uBAAuB,GAAG,IAAI,CAClC,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,UAAU,CACX,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAAC,OAItC;IACC,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IACtC,aAAa,CACX,OAAO,CAAC,SAAS,EACjB,OAAO,EACP,OAAO,CAAC,MAAM,EACd,kCAAkC,EAClC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CACxC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB;IAC1B,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,qCAAqC,uBAAuB,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,YAAY,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"dispatcher-skill.js","sourceRoot":"","sources":["../../src/onboard/dispatcher-skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,MAAM,uBAAuB,GAAG,IAAI,CAClC,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,UAAU,CACX,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAI5C;IACC,MAAM,OAAO,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC5C,MAAM,aAAa,CACjB,OAAO,CAAC,SAAS,EACjB,OAAO,EACP,OAAO,CAAC,MAAM,EACd,kCAAkC,EAClC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CACxC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB;IAChC,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CACb,qCAAqC,uBAAuB,EAAE,CAC/D,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -1,5 +1,15 @@
1
- import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync, } from 'node:fs';
1
+ import { access, mkdir, readFile, readdir, stat, writeFile } from 'node:fs/promises';
2
2
  import { dirname, join } from 'node:path';
3
+ /** Async existence probe — the fs/promises replacement for `existsSync`. */
4
+ async function pathExists(path) {
5
+ try {
6
+ await access(path);
7
+ return true;
8
+ }
9
+ catch {
10
+ return false;
11
+ }
12
+ }
3
13
  export class TransparentFileLedger {
4
14
  seen = new Map();
5
15
  entries() {
@@ -18,81 +28,81 @@ export class TransparentFileLedger {
18
28
  });
19
29
  }
20
30
  }
21
- export function ensureDirectory(path, ledger, reason, options = {}) {
22
- if (existsSync(path)) {
23
- if (!statSync(path).isDirectory()) {
31
+ export async function ensureDirectory(path, ledger, reason, options = {}) {
32
+ if (await pathExists(path)) {
33
+ if (!(await stat(path)).isDirectory()) {
24
34
  throw new Error(`expected directory but found a file: ${path}`);
25
35
  }
26
36
  ledger.record(path, 'unchanged', reason);
27
37
  return;
28
38
  }
29
39
  if (!options.dryRun) {
30
- mkdirSync(path, { recursive: true });
40
+ await mkdir(path, { recursive: true });
31
41
  }
32
42
  ledger.record(path, 'created', reason);
33
43
  }
34
- export function writeTextFile(path, content, ledger, reason, options = {}) {
44
+ export async function writeTextFile(path, content, ledger, reason, options = {}) {
35
45
  const parent = dirname(path);
36
- ensureDirectory(parent, ledger, `parent directory for ${reason}`, {
46
+ await ensureDirectory(parent, ledger, `parent directory for ${reason}`, {
37
47
  dryRun: options.dryRun,
38
48
  });
39
49
  let status;
40
- if (!existsSync(path)) {
50
+ if (!(await pathExists(path))) {
41
51
  status = 'created';
42
52
  }
43
53
  else {
44
- const current = readFileSync(path, 'utf8');
54
+ const current = await readFile(path, 'utf8');
45
55
  status = current === content ? 'unchanged' : 'modified';
46
56
  }
47
57
  if (!options.dryRun && status !== 'unchanged') {
48
- writeFileSync(path, content, {
58
+ await writeFile(path, content, {
49
59
  mode: options.mode,
50
60
  });
51
61
  }
52
62
  ledger.record(path, status, reason);
53
63
  return status;
54
64
  }
55
- export function ensureTextFile(path, initialContent, ledger, reason, options = {}) {
65
+ export async function ensureTextFile(path, initialContent, ledger, reason, options = {}) {
56
66
  const parent = dirname(path);
57
- ensureDirectory(parent, ledger, `parent directory for ${reason}`, {
67
+ await ensureDirectory(parent, ledger, `parent directory for ${reason}`, {
58
68
  dryRun: options.dryRun,
59
69
  });
60
- if (existsSync(path)) {
70
+ if (await pathExists(path)) {
61
71
  ledger.record(path, 'unchanged', reason);
62
72
  return 'unchanged';
63
73
  }
64
74
  if (!options.dryRun) {
65
- writeFileSync(path, initialContent, {
75
+ await writeFile(path, initialContent, {
66
76
  mode: options.mode,
67
77
  });
68
78
  }
69
79
  ledger.record(path, 'created', reason);
70
80
  return 'created';
71
81
  }
72
- export function snapshotFiles(root) {
82
+ export async function snapshotFiles(root) {
73
83
  const out = new Map();
74
- if (!existsSync(root))
84
+ if (!(await pathExists(root)))
75
85
  return out;
76
86
  const stack = [root];
77
87
  while (stack.length > 0) {
78
88
  const current = stack.pop();
79
89
  if (current === undefined)
80
90
  continue;
81
- const stat = statSync(current);
82
- if (stat.isFile()) {
83
- out.set(current, readFileSync(current));
91
+ const info = await stat(current);
92
+ if (info.isFile()) {
93
+ out.set(current, await readFile(current));
84
94
  continue;
85
95
  }
86
- if (!stat.isDirectory())
96
+ if (!info.isDirectory())
87
97
  continue;
88
- for (const entry of readdirSync(current)) {
98
+ for (const entry of await readdir(current)) {
89
99
  stack.push(join(current, entry));
90
100
  }
91
101
  }
92
102
  return out;
93
103
  }
94
- export function recordFileTreeChanges(root, before, ledger, reason) {
95
- const after = snapshotFiles(root);
104
+ export async function recordFileTreeChanges(root, before, ledger, reason) {
105
+ const after = await snapshotFiles(root);
96
106
  for (const [path, content] of after) {
97
107
  const previous = before.get(path);
98
108
  const status = previous === undefined
@@ -1 +1 @@
1
- {"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/onboard/ledger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/onboard/ledger.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { existsSync } from 'node:fs';
1
+ import { access } from 'node:fs/promises';
2
2
  import { codexArgsToCli, parseCodexArgs } from '../runtime/codex-args.js';
3
3
  import { assertNoLegacyTomlOnly, globalConfigFile, loadConfig, stringifyConfig, } from '../runtime/config.js';
4
4
  import { dispatcherAppServerControlDir, dispatcherCodexHome, dispatcherWorkspaceCodexSkillsDir, dispatcherWorkspaceSkillPath, logsRoot, setRuntimeConfig, stateRoot, } from '../runtime/paths.js';
@@ -14,10 +14,10 @@ export async function runOnboard(options) {
14
14
  const runner = options.runner ?? new ExecaCommandRunner();
15
15
  const env = options.env ?? process.env;
16
16
  const configPath = globalConfigFile({ configDir: answers.configDir });
17
- const existingConfig = readExistingDreamuxConfig(answers.configDir);
17
+ const existingConfig = await readExistingDreamuxConfig(answers.configDir);
18
18
  const dreamuxConfig = dreamuxConfigFromAnswers(answers, existingConfig);
19
19
  const serviceCodexBin = answers.registerService && !answers.dryRun
20
- ? resolveServiceExecutable(dreamuxConfig.codex.bin, env)
20
+ ? await resolveServiceExecutable(dreamuxConfig.codex.bin, env)
21
21
  : dreamuxConfig.codex.bin;
22
22
  const serviceNodeBin = answers.registerService && !answers.dryRun
23
23
  ? await selectServiceNodeBin({
@@ -34,29 +34,29 @@ export async function runOnboard(options) {
34
34
  nodeBin: serviceNodeBin,
35
35
  };
36
36
  setRuntimeConfig(dreamuxConfig);
37
- ensureDirectory(answers.configDir, ledger, 'dreamux config directory', {
37
+ await ensureDirectory(answers.configDir, ledger, 'dreamux config directory', {
38
38
  dryRun: answers.dryRun,
39
39
  });
40
- ensureDirectory(stateRoot(), ledger, 'dreamux state directory', {
40
+ await ensureDirectory(stateRoot(), ledger, 'dreamux state directory', {
41
41
  dryRun: answers.dryRun,
42
42
  });
43
- ensureDirectory(logsRoot(), ledger, 'dreamux logs directory', {
43
+ await ensureDirectory(logsRoot(), ledger, 'dreamux logs directory', {
44
44
  dryRun: answers.dryRun,
45
45
  });
46
- writeTextFile(configPath, stringifyConfig(dreamuxConfig), ledger, 'dreamux global config', { mode: 0o600, dryRun: answers.dryRun });
46
+ await writeTextFile(configPath, stringifyConfig(dreamuxConfig), ledger, 'dreamux global config', { mode: 0o600, dryRun: answers.dryRun });
47
47
  const codexHome = dispatcherCodexHome(answers.dispatcherId);
48
- ensureDirectory(codexHome, ledger, 'global Codex home', {
48
+ await ensureDirectory(codexHome, ledger, 'global Codex home', {
49
49
  dryRun: answers.dryRun,
50
50
  });
51
- ensureDirectory(dispatcherAppServerControlDir(answers.dispatcherId), ledger, 'dispatcher app-server control directory', { dryRun: answers.dryRun });
52
- ensureDirectory(effectiveAnswers.dispatcherCwd, ledger, 'dispatcher cwd', { dryRun: answers.dryRun });
53
- ensureDirectory(dispatcherWorkspaceCodexSkillsDir(effectiveAnswers.dispatcherCwd), ledger, 'workspace-local Codex skills directory', { dryRun: answers.dryRun });
54
- installDispatcherSkill({
51
+ await ensureDirectory(dispatcherAppServerControlDir(answers.dispatcherId), ledger, 'dispatcher app-server control directory', { dryRun: answers.dryRun });
52
+ await ensureDirectory(effectiveAnswers.dispatcherCwd, ledger, 'dispatcher cwd', { dryRun: answers.dryRun });
53
+ await ensureDirectory(dispatcherWorkspaceCodexSkillsDir(effectiveAnswers.dispatcherCwd), ledger, 'workspace-local Codex skills directory', { dryRun: answers.dryRun });
54
+ await installDispatcherSkill({
55
55
  skillPath: dispatcherWorkspaceSkillPath(effectiveAnswers.dispatcherCwd),
56
56
  ledger,
57
57
  dryRun: answers.dryRun,
58
58
  });
59
- const doctor = runDispatcherDoctor(effectiveAnswers, dreamuxConfig, env);
59
+ const doctor = await runDispatcherDoctor(effectiveAnswers, dreamuxConfig, env);
60
60
  if (!effectiveAnswers.dryRun && !doctor.ok) {
61
61
  throw new Error(formatDoctorFailure(effectiveAnswers, doctor));
62
62
  }
@@ -89,14 +89,24 @@ function formatServiceLaunchFailure(errors) {
89
89
  '- rerun dreamux onboard from the desired Node/Codex install, or pass explicit --dreamux-bin / --codex-bin values',
90
90
  ].join('\n');
91
91
  }
92
- function readExistingDreamuxConfig(configDir) {
92
+ async function readExistingDreamuxConfig(configDir) {
93
93
  const configPath = globalConfigFile({ configDir });
94
- assertNoLegacyTomlOnly({ configDir });
95
- if (!existsSync(configPath))
94
+ await assertNoLegacyTomlOnly({ configDir });
95
+ if (!(await pathExists(configPath)))
96
96
  return undefined;
97
- return loadConfig({ configDir }).config;
97
+ return (await loadConfig({ configDir })).config;
98
98
  }
99
- function runDispatcherDoctor(answers, dreamuxConfig, env) {
99
+ /** Async existence probe — the fs/promises replacement for `existsSync`. */
100
+ async function pathExists(path) {
101
+ try {
102
+ await access(path);
103
+ return true;
104
+ }
105
+ catch {
106
+ return false;
107
+ }
108
+ }
109
+ async function runDispatcherDoctor(answers, dreamuxConfig, env) {
100
110
  const codexArgs = parseCodexArgs(dispatcherCodexArgsJson(), {
101
111
  approvalPolicy: dreamuxConfig.codex.approval_policy,
102
112
  sandboxMode: dreamuxConfig.codex.sandbox_mode,
@@ -117,7 +127,7 @@ function runDispatcherDoctor(answers, dreamuxConfig, env) {
117
127
  const doctorEnv = answers.registerService
118
128
  ? managedServiceEnvironment(answers)
119
129
  : env;
120
- return validateDispatcherCodexHome(context, {
130
+ return await validateDispatcherCodexHome(context, {
121
131
  env: doctorEnv,
122
132
  codexCliArgs,
123
133
  });
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/onboard/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/onboard/run.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,17 @@
1
- import { accessSync, constants, existsSync, rmSync } from 'node:fs';
2
- import { realpath } from 'node:fs/promises';
1
+ import { constants } from 'node:fs';
2
+ import { access, realpath, rm } from 'node:fs/promises';
3
3
  import { homedir } from 'node:os';
4
4
  import { delimiter, dirname, isAbsolute, join, resolve } from 'node:path';
5
+ /** Async existence probe — the fs/promises replacement for `existsSync`. */
6
+ async function pathExists(path) {
7
+ try {
8
+ await access(path);
9
+ return true;
10
+ }
11
+ catch {
12
+ return false;
13
+ }
14
+ }
5
15
  import { build as buildPlist } from 'plist';
6
16
  import { expandHome } from '../runtime/config.js';
7
17
  import { logsRoot, stateRoot } from '../runtime/paths.js';
@@ -31,21 +41,21 @@ export async function installUserService(options) {
31
41
  const logDir = logsRoot();
32
42
  const stdoutLog = join(logDir, 'daemon.stdout.log');
33
43
  const stderrLog = join(logDir, 'daemon.stderr.log');
34
- ensureDirectory(logDir, options.ledger, 'daemon log directory', {
44
+ await ensureDirectory(logDir, options.ledger, 'daemon log directory', {
35
45
  dryRun: options.answers.dryRun,
36
46
  });
37
- ensureTextFile(stdoutLog, '', options.ledger, 'daemon stdout log', {
47
+ await ensureTextFile(stdoutLog, '', options.ledger, 'daemon stdout log', {
38
48
  mode: 0o600,
39
49
  dryRun: options.answers.dryRun,
40
50
  });
41
- ensureTextFile(stderrLog, '', options.ledger, 'daemon stderr log', {
51
+ await ensureTextFile(stderrLog, '', options.ledger, 'daemon stderr log', {
42
52
  mode: 0o600,
43
53
  dryRun: options.answers.dryRun,
44
54
  });
45
55
  const content = unit.platform === 'launchd'
46
56
  ? renderLaunchdPlist(options.answers, stdoutLog, stderrLog)
47
57
  : renderSystemdUnit(options.answers, stdoutLog, stderrLog);
48
- const unitStatus = writeTextFile(unit.path, content, options.ledger, `${unit.platform} unit`, {
58
+ const unitStatus = await writeTextFile(unit.path, content, options.ledger, `${unit.platform} unit`, {
49
59
  mode: 0o600,
50
60
  dryRun: options.answers.dryRun,
51
61
  });
@@ -133,21 +143,21 @@ export async function validateManagedServiceLaunch(answers, runner) {
133
143
  errors,
134
144
  };
135
145
  }
136
- export function resolveServiceExecutable(command, env = process.env) {
146
+ export async function resolveServiceExecutable(command, env = process.env) {
137
147
  const trimmed = command.trim();
138
148
  if (trimmed === '') {
139
149
  throw new Error('managed service executable path is empty');
140
150
  }
141
151
  if (trimmed.includes('/') || trimmed.startsWith('~')) {
142
152
  const candidate = resolve(expandHome(trimmed));
143
- assertExecutable(candidate, command);
153
+ await assertExecutable(candidate, command);
144
154
  return candidate;
145
155
  }
146
156
  for (const dir of (env['PATH'] ?? '').split(delimiter)) {
147
157
  if (dir === '')
148
158
  continue;
149
159
  const candidate = join(dir, trimmed);
150
- if (isExecutable(candidate))
160
+ if (await isExecutable(candidate))
151
161
  return candidate;
152
162
  }
153
163
  throw new Error(`managed service cannot resolve executable '${command}' from PATH; pass an absolute path and rerun dreamux onboard`);
@@ -247,7 +257,7 @@ export function stableNodeCandidates(platform) {
247
257
  export async function selectServiceNodeBin(options) {
248
258
  const probe = options.probe ?? defaultServiceNodeProbe;
249
259
  for (const candidate of stableNodeCandidates(options.platform)) {
250
- if (!probe.isExecutable(candidate))
260
+ if (!(await probe.isExecutable(candidate)))
251
261
  continue;
252
262
  if ((await detectServiceNodeVersionManager(candidate, probe)) !== null) {
253
263
  continue;
@@ -306,7 +316,7 @@ export async function stabilizeHomebrewCellarNode(nodeBin, platform, probe = def
306
316
  }
307
317
  links.push(`${cellar.prefix}/opt/node/bin/node`, `${cellar.prefix}/bin/node`);
308
318
  for (const link of links) {
309
- if (!probe.isExecutable(link))
319
+ if (!(await probe.isExecutable(link)))
310
320
  continue;
311
321
  try {
312
322
  if ((await probe.realpath(link)) === resolved)
@@ -341,14 +351,14 @@ function uniqueNonEmpty(values) {
341
351
  }
342
352
  return out;
343
353
  }
344
- function assertExecutable(path, label) {
345
- if (isExecutable(path))
354
+ async function assertExecutable(path, label) {
355
+ if (await isExecutable(path))
346
356
  return;
347
357
  throw new Error(`managed service executable is not runnable: ${label}`);
348
358
  }
349
- function isExecutable(path) {
359
+ async function isExecutable(path) {
350
360
  try {
351
- accessSync(path, constants.X_OK);
361
+ await access(path, constants.X_OK);
352
362
  return true;
353
363
  }
354
364
  catch {
@@ -443,9 +453,9 @@ export async function removeUserService(options) {
443
453
  else {
444
454
  await runServiceBestEffort(options.runner, 'systemctl', ['--user', 'disable', '--now', SYSTEMD_UNIT], dryRun);
445
455
  }
446
- const existed = existsSync(unit.path);
456
+ const existed = await pathExists(unit.path);
447
457
  if (existed && !dryRun)
448
- rmSync(unit.path, { force: true });
458
+ await rm(unit.path, { force: true });
449
459
  if (unit.platform === 'systemd') {
450
460
  await runServiceBestEffort(options.runner, 'systemctl', ['--user', 'daemon-reload'], dryRun);
451
461
  }