@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,68 +1,56 @@
1
- import { mkdirSync } from 'node:fs';
2
- import { dirname, join } from 'node:path';
3
- import { DispatcherRepo } from '../db/repository.js';
4
- import { openDatabase } from '../db/schema.js';
1
+ import { existsSync } from 'node:fs';
5
2
  import { codexArgsToCli, parseCodexArgs } from '../runtime/codex-args.js';
6
- import { dispatcherAppServerControlDir, dispatcherCodexConfigPath, dispatcherCodexCwd, dispatcherCodexHome, dispatcherCodexPluginsDir, databasePath, setRuntimeConfig, } from '../runtime/paths.js';
3
+ import { assertNoLegacyTomlOnly, globalConfigFile, loadConfig, stringifyConfig, } from '../runtime/config.js';
4
+ import { dispatcherAppServerControlDir, dispatcherCodexHome, dispatcherWorkspaceCodexSkillsDir, dispatcherWorkspaceSkillPath, logsRoot, setRuntimeConfig, stateRoot, } from '../runtime/paths.js';
7
5
  import { dispatcherCodexHomeDoctorContext, validateDispatcherCodexHome, } from '../runtime/dispatcher-codex-home.js';
8
6
  import { ExecaCommandRunner } from './commands.js';
9
- import { buildDispatcherCodexConfigToml, buildDreamuxConfigToml, dispatcherCodexArgsJson, dreamuxConfigFromAnswers, } from './config-files.js';
10
- import { ensureDirectory, recordFileTreeChanges, snapshotFiles, TransparentFileLedger, writeTextFile, } from './ledger.js';
7
+ import { dispatcherCodexArgsJson, dreamuxConfigFromAnswers, } from './config-files.js';
8
+ import { installDispatcherSkill } from './dispatcher-skill.js';
9
+ import { ensureDirectory, TransparentFileLedger, writeTextFile, } from './ledger.js';
11
10
  import { installUserService, managedServiceEnvironment } from './service.js';
12
- import { installClaudemuxPlugin, installCodexmuxPlugin, } from './plugins.js';
13
11
  export async function runOnboard(options) {
14
12
  const answers = options.answers;
15
13
  const ledger = options.ledger ?? new TransparentFileLedger();
16
14
  const runner = options.runner ?? new ExecaCommandRunner();
17
15
  const env = options.env ?? process.env;
18
- const dreamuxConfig = dreamuxConfigFromAnswers(answers);
16
+ const configPath = globalConfigFile({ configDir: answers.configDir });
17
+ const existingConfig = readExistingDreamuxConfig(answers.configDir);
18
+ const dreamuxConfig = dreamuxConfigFromAnswers(answers, existingConfig);
19
+ const effectiveAnswers = {
20
+ ...answers,
21
+ runtimeDir: stateRoot(),
22
+ codexBin: dreamuxConfig.codex.bin,
23
+ };
19
24
  setRuntimeConfig(dreamuxConfig);
20
- if (!answers.registerService) {
21
- preflightAuth(answers, env);
22
- }
23
- const configPath = join(answers.configDir, 'config.toml');
24
25
  ensureDirectory(answers.configDir, ledger, 'dreamux config directory', {
25
26
  dryRun: answers.dryRun,
26
27
  });
27
- ensureDirectory(answers.runtimeDir, ledger, 'dreamux runtime directory', {
28
+ ensureDirectory(stateRoot(), ledger, 'dreamux state directory', {
29
+ dryRun: answers.dryRun,
30
+ });
31
+ ensureDirectory(logsRoot(), ledger, 'dreamux logs directory', {
28
32
  dryRun: answers.dryRun,
29
33
  });
30
- writeTextFile(configPath, buildDreamuxConfigToml(answers), ledger, 'dreamux global config', { mode: 0o600, dryRun: answers.dryRun });
34
+ writeTextFile(configPath, stringifyConfig(dreamuxConfig), ledger, 'dreamux global config', { mode: 0o600, dryRun: answers.dryRun });
31
35
  const codexHome = dispatcherCodexHome(answers.dispatcherId);
32
- const codexConfigPath = dispatcherCodexConfigPath(answers.dispatcherId);
33
- ensureDirectory(codexHome, ledger, 'dispatcher private CODEX_HOME', {
36
+ ensureDirectory(codexHome, ledger, 'global Codex home', {
34
37
  dryRun: answers.dryRun,
35
38
  });
36
- ensureDirectory(dispatcherCodexPluginsDir(answers.dispatcherId), ledger, 'dispatcher Codex plugins directory', { dryRun: answers.dryRun });
37
39
  ensureDirectory(dispatcherAppServerControlDir(answers.dispatcherId), ledger, 'dispatcher app-server control directory', { dryRun: answers.dryRun });
38
- ensureDirectory(dispatcherCodexCwd(answers.dispatcherId), ledger, 'dispatcher app-server cwd', { dryRun: answers.dryRun });
39
- await installCodexmuxPlugin({
40
- answers,
41
- codexHome,
40
+ ensureDirectory(effectiveAnswers.dispatcherCwd, ledger, 'dispatcher cwd', { dryRun: answers.dryRun });
41
+ ensureDirectory(dispatcherWorkspaceCodexSkillsDir(effectiveAnswers.dispatcherCwd), ledger, 'workspace-local Codex skills directory', { dryRun: answers.dryRun });
42
+ installDispatcherSkill({
43
+ skillPath: dispatcherWorkspaceSkillPath(effectiveAnswers.dispatcherCwd),
42
44
  ledger,
43
- runner,
44
- });
45
- writeTextFile(codexConfigPath, buildDispatcherCodexConfigToml({
46
- codexHomeConfigPath: codexConfigPath,
47
- model: answers.codexModel,
48
- marketplaceName: answers.codexMarketplaceName,
49
- marketplaceSource: answers.codexMarketplaceSource,
50
- pluginRef: answers.codexPluginRef,
51
- }), ledger, 'dispatcher private Codex config', { mode: 0o600, dryRun: answers.dryRun });
52
- await installClaudemuxPlugin({
53
- answers,
54
- codexHome,
55
- ledger,
56
- runner,
45
+ dryRun: answers.dryRun,
57
46
  });
58
- registerDispatcher(answers, ledger);
59
- const doctor = runDispatcherDoctor(answers, dreamuxConfig, env);
60
- if (!answers.dryRun && !doctor.ok) {
61
- throw new Error(formatDoctorFailure(answers, doctor));
47
+ const doctor = runDispatcherDoctor(effectiveAnswers, dreamuxConfig, env);
48
+ if (!effectiveAnswers.dryRun && !doctor.ok) {
49
+ throw new Error(formatDoctorFailure(effectiveAnswers, doctor));
62
50
  }
63
- const service = answers.registerService
51
+ const service = effectiveAnswers.registerService
64
52
  ? await installUserService({
65
- answers,
53
+ answers: effectiveAnswers,
66
54
  ledger,
67
55
  runner,
68
56
  platform: options.platform,
@@ -76,31 +64,12 @@ export async function runOnboard(options) {
76
64
  service,
77
65
  };
78
66
  }
79
- function registerDispatcher(answers, ledger) {
80
- const dbPath = databasePath();
81
- ensureDirectory(dirname(dbPath), ledger, 'dispatcher database directory', {
82
- dryRun: answers.dryRun,
83
- });
84
- if (answers.dryRun) {
85
- ledger.record(dbPath, 'created', 'dispatcher database');
86
- return;
87
- }
88
- mkdirSync(dirname(dbPath), { recursive: true });
89
- const before = snapshotFiles(dirname(dbPath));
90
- const db = openDatabase({ path: dbPath });
91
- try {
92
- new DispatcherRepo(db).upsert({
93
- dispatcher_id: answers.dispatcherId,
94
- bot_app_id: answers.botAppId,
95
- bot_secret_ref: answers.botSecretRef,
96
- codex_args_json: dispatcherCodexArgsJson(),
97
- codex_cwd: dispatcherCodexCwd(answers.dispatcherId),
98
- });
99
- }
100
- finally {
101
- db.close();
102
- }
103
- recordFileTreeChanges(dirname(dbPath), before, ledger, 'dispatcher database');
67
+ function readExistingDreamuxConfig(configDir) {
68
+ const configPath = globalConfigFile({ configDir });
69
+ assertNoLegacyTomlOnly({ configDir });
70
+ if (!existsSync(configPath))
71
+ return undefined;
72
+ return loadConfig({ configDir }).config;
104
73
  }
105
74
  function runDispatcherDoctor(answers, dreamuxConfig, env) {
106
75
  const codexArgs = parseCodexArgs(dispatcherCodexArgsJson(), {
@@ -111,6 +80,7 @@ function runDispatcherDoctor(answers, dreamuxConfig, env) {
111
80
  const codexCliArgs = codexArgsToCli(codexArgs);
112
81
  const context = dispatcherCodexHomeDoctorContext(answers.dispatcherId, {
113
82
  codexCliArgs,
83
+ dispatcherCwd: answers.dispatcherCwd,
114
84
  });
115
85
  if (answers.dryRun) {
116
86
  return {
@@ -129,22 +99,13 @@ function runDispatcherDoctor(answers, dreamuxConfig, env) {
129
99
  }
130
100
  function formatDoctorFailure(answers, doctor) {
131
101
  const lines = [
132
- `dispatcher '${answers.dispatcherId}' private CODEX_HOME is not ready`,
102
+ `dispatcher '${answers.dispatcherId}' Codex home is not ready`,
133
103
  ...doctor.errors.map((error) => `- ${error}`),
134
104
  ];
135
105
  if (answers.registerService &&
136
- doctor.errors.some((error) => error.includes('missing dispatcher Codex auth state'))) {
137
- lines.push('- managed service environments do not inherit your interactive shell auth token', `- authenticate the private dispatcher Codex home before registering the service: CODEX_HOME=${doctor.context.codexHome} ${answers.codexBin} login`);
106
+ doctor.errors.some((error) => error.includes('missing Codex auth state'))) {
107
+ lines.push('- managed service environments do not inherit your interactive shell auth token', `- authenticate the global Codex home before registering the service: ${answers.codexBin} login`);
138
108
  }
139
109
  return lines.join('\n');
140
110
  }
141
- function preflightAuth(answers, env) {
142
- if (answers.dryRun)
143
- return;
144
- const value = env[answers.authEnvVar];
145
- if (value !== undefined && value.trim() !== '')
146
- return;
147
- throw new Error(`missing dispatcher Codex auth env var ${answers.authEnvVar}; ` +
148
- 'onboard does not write API secrets into the private CODEX_HOME');
149
- }
150
111
  //# sourceMappingURL=run.js.map
@@ -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,6 +1,7 @@
1
1
  import { homedir } from 'node:os';
2
2
  import { join } from 'node:path';
3
3
  import { build as buildPlist } from 'plist';
4
+ import { logsRoot, stateRoot } from '../runtime/paths.js';
4
5
  import { ensureDirectory, ensureTextFile, writeTextFile, } from './ledger.js';
5
6
  export const LAUNCHD_LABEL = 'dev.excited.dreamux';
6
7
  export const SYSTEMD_UNIT = 'dreamux.service';
@@ -22,7 +23,7 @@ export function serviceUnitPath(platform = process.platform, homeDir = homedir()
22
23
  export async function installUserService(options) {
23
24
  const homeDir = options.homeDir ?? homedir();
24
25
  const unit = serviceUnitPath(options.platform, homeDir);
25
- const logDir = join(options.answers.runtimeDir, 'logs');
26
+ const logDir = logsRoot();
26
27
  const stdoutLog = join(logDir, 'daemon.stdout.log');
27
28
  const stderrLog = join(logDir, 'daemon.stderr.log');
28
29
  ensureDirectory(logDir, options.ledger, 'daemon log directory', {
@@ -62,7 +63,7 @@ export function renderLaunchdPlist(answers, stdoutLog, stderrLog) {
62
63
  ProgramArguments: [answers.dreamuxBin, 'serve'],
63
64
  RunAtLoad: true,
64
65
  KeepAlive: true,
65
- WorkingDirectory: answers.runtimeDir,
66
+ WorkingDirectory: stateRoot(),
66
67
  EnvironmentVariables: managedServiceEnvironment(answers),
67
68
  StandardOutPath: stdoutLog,
68
69
  StandardErrorPath: stderrLog,
@@ -75,7 +76,7 @@ Description=dreamux dispatcher daemon
75
76
  [Service]
76
77
  Type=simple
77
78
  ExecStart=${systemdEscapeArg(answers.dreamuxBin)} serve
78
- WorkingDirectory=${systemdEscapeArg(answers.runtimeDir)}
79
+ WorkingDirectory=${systemdEscapeArg(stateRoot())}
79
80
  ${Object.entries(managedServiceEnvironment(answers))
80
81
  .map(([key, value]) => `Environment=${key}=${systemdEscapeEnv(value)}`)
81
82
  .join('\n')}
@@ -89,11 +90,11 @@ WantedBy=default.target
89
90
  `;
90
91
  }
91
92
  export function managedServiceEnvironment(answers) {
92
- return {
93
+ const env = {
93
94
  DREAMUX_CONFIG_DIR: answers.configDir,
94
- CODEX_HOST_RUNTIME_DIR: answers.runtimeDir,
95
95
  CODEX_HOST_CODEX_BIN: answers.codexBin,
96
96
  };
97
+ return env;
97
98
  }
98
99
  async function registerLaunchd(unitPath, unitStatus, options) {
99
100
  const uid = options.uid ?? process.getuid?.();
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/onboard/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/onboard/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ import { existsSync, rmSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { basename, join, resolve, sep } from 'node:path';
4
+ import { ExecaCommandRunner } from './commands.js';
5
+ import { LAUNCHD_LABEL, serviceUnitPath, SYSTEMD_UNIT, } from './service.js';
6
+ import { assertNoLegacyTomlOnly, expandHome, globalConfigDir, globalConfigFile, loadConfig, } from '../runtime/config.js';
7
+ import { dispatcherWorkspaceSkillPath, logsRoot, stateRoot, } from '../runtime/paths.js';
8
+ export async function runUninstall(options = {}) {
9
+ const runner = options.runner ?? new ExecaCommandRunner();
10
+ const dryRun = options.dryRun ?? false;
11
+ const configDir = normalizePath(options.configDir ?? globalConfigDir());
12
+ const entries = [];
13
+ const warnings = [];
14
+ const unit = serviceUnitPath(options.platform, options.homeDir ?? homedir());
15
+ warnIfConfigIsNotReadable(configDir, warnings);
16
+ const stateDir = normalizePath(stateRoot());
17
+ const logDir = normalizePath(logsRoot());
18
+ assertSafeOwnedDirectory(stateDir, 'dreamux state directory');
19
+ assertSafeOwnedDirectory(logDir, 'dreamux logs directory');
20
+ assertSafeOwnedDirectory(configDir, 'dreamux config directory');
21
+ const workspaceSkillPaths = collectWorkspaceSkillPaths(configDir);
22
+ await unregisterService({
23
+ unitPath: unit.path,
24
+ platform: unit.platform,
25
+ runner,
26
+ dryRun,
27
+ uid: options.uid,
28
+ });
29
+ removePath(unit.path, entries, `${unit.platform} unit`, dryRun);
30
+ if (unit.platform === 'systemd') {
31
+ await runBestEffort(runner, 'systemctl', ['--user', 'daemon-reload'], dryRun);
32
+ }
33
+ reportWorkspaceSkills(workspaceSkillPaths, entries);
34
+ removeOwnedDirectory(stateDir, entries, 'dreamux state directory', dryRun);
35
+ removeOwnedDirectory(logDir, entries, 'dreamux logs directory', dryRun);
36
+ removeOwnedDirectory(configDir, entries, 'dreamux config directory', dryRun);
37
+ return {
38
+ entries: entries.sort((a, b) => a.path.localeCompare(b.path)),
39
+ warnings,
40
+ service: {
41
+ platform: unit.platform,
42
+ unitPath: unit.path,
43
+ },
44
+ };
45
+ }
46
+ function warnIfConfigIsNotReadable(configDir, warnings) {
47
+ try {
48
+ assertNoLegacyTomlOnly({ configDir });
49
+ if (!existsSync(globalConfigFile({ configDir })))
50
+ return;
51
+ loadConfig({ configDir });
52
+ }
53
+ catch (err) {
54
+ const message = err instanceof Error ? err.message : String(err);
55
+ warnings.push(`could not validate dreamux config before uninstall; continuing with fixed state/log paths: ${message}`);
56
+ }
57
+ }
58
+ function collectWorkspaceSkillPaths(configDir) {
59
+ try {
60
+ return loadConfig({ configDir }).config.dispatchers
61
+ .map(dispatcherWorkspaceSkillPathFromConfig)
62
+ .filter((path) => path !== null);
63
+ }
64
+ catch {
65
+ return [];
66
+ }
67
+ }
68
+ function dispatcherWorkspaceSkillPathFromConfig(dispatcher) {
69
+ if (dispatcher.cwd === null || dispatcher.cwd.trim() === '')
70
+ return null;
71
+ return dispatcherWorkspaceSkillPath(dispatcher.cwd);
72
+ }
73
+ function reportWorkspaceSkills(paths, entries) {
74
+ for (const path of uniquePaths(paths)) {
75
+ entries.push({
76
+ path,
77
+ status: existsSync(path) ? 'skipped' : 'missing',
78
+ reason: 'workspace-local dispatcher skill (not removed)',
79
+ });
80
+ }
81
+ }
82
+ async function unregisterService(options) {
83
+ if (options.platform === 'launchd') {
84
+ const uid = options.uid ?? process.getuid?.();
85
+ if (uid === undefined) {
86
+ throw new Error('launchd user service uninstall requires a numeric uid');
87
+ }
88
+ const serviceTarget = `gui/${uid}/${LAUNCHD_LABEL}`;
89
+ const loaded = await options.runner.check('launchctl', ['print', serviceTarget], { dryRun: options.dryRun });
90
+ if (loaded) {
91
+ await runBestEffort(options.runner, 'launchctl', ['bootout', serviceTarget], options.dryRun);
92
+ }
93
+ return;
94
+ }
95
+ await runBestEffort(options.runner, 'systemctl', ['--user', 'disable', '--now', SYSTEMD_UNIT], options.dryRun);
96
+ }
97
+ async function runBestEffort(runner, command, args, dryRun) {
98
+ try {
99
+ await runner.run(command, args, { dryRun });
100
+ }
101
+ catch {
102
+ /* The unit may already be absent or stopped; file deletion below is authoritative. */
103
+ }
104
+ }
105
+ function removeOwnedDirectory(path, entries, reason, dryRun) {
106
+ assertSafeOwnedDirectory(path, reason);
107
+ removePath(path, entries, reason, dryRun);
108
+ }
109
+ function removePath(path, entries, reason, dryRun) {
110
+ if (!existsSync(path)) {
111
+ entries.push({ path, status: 'missing', reason });
112
+ return;
113
+ }
114
+ if (!dryRun) {
115
+ rmSync(path, {
116
+ recursive: true,
117
+ force: true,
118
+ });
119
+ }
120
+ entries.push({ path, status: 'removed', reason });
121
+ }
122
+ function assertSafeOwnedDirectory(path, reason) {
123
+ const normalized = normalizePath(path);
124
+ const home = normalizePath(homedir());
125
+ if (normalized === '/' ||
126
+ normalized === home ||
127
+ basename(normalized) === '' ||
128
+ normalized === normalizePath(process.cwd())) {
129
+ throw new Error(`refusing to remove unsafe ${reason}: ${path}`);
130
+ }
131
+ for (const protectedRoot of operatorStateRoots()) {
132
+ if (isSameOrInside(normalized, protectedRoot)) {
133
+ throw new Error(`refusing to remove unsafe ${reason}: ${path} is inside operator Codex/Claude state ${protectedRoot}`);
134
+ }
135
+ }
136
+ }
137
+ function normalizePath(path) {
138
+ return resolve(expandHome(path));
139
+ }
140
+ function operatorStateRoots() {
141
+ return uniquePaths([
142
+ joinHome('.codex'),
143
+ joinHome('.claude'),
144
+ ]);
145
+ }
146
+ function joinHome(child) {
147
+ return normalizePath(join(homedir(), child));
148
+ }
149
+ function uniquePaths(paths) {
150
+ const out = new Set();
151
+ for (const path of paths) {
152
+ if (path === undefined || path.trim() === '')
153
+ continue;
154
+ out.add(normalizePath(path));
155
+ }
156
+ return Array.from(out);
157
+ }
158
+ function isSameOrInside(path, root) {
159
+ return path === root || path.startsWith(`${root}${sep}`);
160
+ }
161
+ //# sourceMappingURL=uninstall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/onboard/uninstall.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,9 @@
1
1
  import { homedir } from 'node:os';
2
2
  import { join, resolve } from 'node:path';
3
- import { cancel, confirm, intro, isCancel, outro, select, text, } from '@clack/prompts';
3
+ import { cancel, confirm, intro, isCancel, outro, text, } from '@clack/prompts';
4
4
  import { expandHome } from '../runtime/config.js';
5
+ import { validateDispatcherId } from '../runtime/dispatcher-id.js';
5
6
  const DEFAULT_DISPATCHER_ID = 'dispatcher';
6
- const DEFAULT_CODEX_MODEL = 'gpt-5-codex';
7
- const DEFAULT_CODEX_PROVIDER = 'openai';
8
- const DEFAULT_CODEX_MARKETPLACE_SOURCE = 'excitedjs/dreamux';
9
- const DEFAULT_CODEX_MARKETPLACE_SPARSE = [
10
- '.agents/plugins',
11
- 'codex-marketplace/plugins/codexmux',
12
- ];
13
- const DEFAULT_CODEX_MARKETPLACE_NAME = 'dreamux';
14
- const DEFAULT_CODEX_PLUGIN_REF = 'codexmux@dreamux';
15
- const DEFAULT_CLAUDE_MARKETPLACE_SOURCE = 'excitedjs/claudemux';
16
- const DEFAULT_CLAUDE_MARKETPLACE_NAME = 'claudemux';
17
- const DEFAULT_CLAUDE_PLUGIN_REF = 'claudemux@claudemux';
18
7
  export async function collectOnboardAnswers(options) {
19
8
  const interactive = process.stdin.isTTY === true && options.yes !== true;
20
9
  if (!interactive)
@@ -23,15 +12,10 @@ export async function collectOnboardAnswers(options) {
23
12
  const configDir = await promptText('dreamux config directory', defaultConfigDir(options));
24
13
  const runtimeDir = await promptText('dreamux runtime directory', defaultRuntimeDir(options));
25
14
  const dispatcherId = await promptText('dispatcher id', options.dispatcherId ?? DEFAULT_DISPATCHER_ID);
15
+ const dispatcherCwd = await promptText('dispatcher cwd', options.dispatcherCwd ?? process.cwd());
26
16
  const codexBin = await promptText('codex binary', options.codexBin ?? 'codex');
27
- const codexModel = await promptText('dispatcher Codex model', options.codexModel ?? DEFAULT_CODEX_MODEL);
28
- const authEnvVar = await promptSelect('Codex auth environment variable', options.authEnvVar ?? firstConfiguredAuthEnv(), [
29
- { value: 'CODEX_ACCESS_TOKEN', label: 'CODEX_ACCESS_TOKEN' },
30
- { value: 'OPENAI_API_KEY', label: 'OPENAI_API_KEY' },
31
- { value: 'CODEX_API_KEY', label: 'CODEX_API_KEY' },
32
- ]);
33
17
  const botAppId = await promptText('channel bot app id', options.botAppId);
34
- const botSecretRef = await promptText('channel bot secret ref', options.botSecretRef ?? 'env:FEISHU_BOT_SECRET');
18
+ const botAppSecret = await promptText('channel bot app secret', options.botAppSecret);
35
19
  const registerService = await promptConfirm('register the user-level service now?', options.registerService ?? true);
36
20
  const startService = registerService
37
21
  ? await promptConfirm('start the service after registration?', options.startService ?? true)
@@ -42,40 +26,26 @@ export async function collectOnboardAnswers(options) {
42
26
  configDir,
43
27
  runtimeDir,
44
28
  dispatcherId,
29
+ dispatcherCwd,
45
30
  codexBin,
46
- codexModel,
47
- authEnvVar,
48
31
  botAppId,
49
- botSecretRef,
32
+ botAppSecret,
50
33
  registerService,
51
34
  startService,
52
35
  }, true);
53
36
  }
54
37
  export function answersFromOptions(options, fromInteractive) {
55
38
  const botAppId = requiredOption(options.botAppId, 'bot-app-id', fromInteractive);
56
- const botSecretRef = requiredOption(options.botSecretRef, 'bot-secret-ref', fromInteractive);
57
- const authEnvVar = options.authEnvVar ?? firstConfiguredAuthEnv();
58
- assertSupportedAuthEnv(authEnvVar);
39
+ const botAppSecret = requiredOption(options.botAppSecret, 'bot-app-secret', fromInteractive);
40
+ const dispatcherCwd = options.dispatcherCwd ?? process.cwd();
59
41
  return {
60
42
  configDir: normalizePath(options.configDir ?? defaultConfigDir(options)),
61
43
  runtimeDir: normalizePath(options.runtimeDir ?? defaultRuntimeDir(options)),
62
- dispatcherId: options.dispatcherId ?? DEFAULT_DISPATCHER_ID,
44
+ dispatcherId: validateDispatcherId(options.dispatcherId ?? DEFAULT_DISPATCHER_ID),
45
+ dispatcherCwd: normalizePath(dispatcherCwd),
63
46
  codexBin: options.codexBin ?? 'codex',
64
- codexModel: options.codexModel ?? DEFAULT_CODEX_MODEL,
65
- codexProvider: options.codexProvider ?? DEFAULT_CODEX_PROVIDER,
66
- authEnvVar,
67
- codexMarketplaceSource: options.codexMarketplaceSource ?? DEFAULT_CODEX_MARKETPLACE_SOURCE,
68
- codexMarketplaceSparse: normalizeStringArray(options.codexMarketplaceSparse, DEFAULT_CODEX_MARKETPLACE_SPARSE),
69
- codexMarketplaceName: options.codexMarketplaceName ?? DEFAULT_CODEX_MARKETPLACE_NAME,
70
- codexPluginRef: options.codexPluginRef ?? DEFAULT_CODEX_PLUGIN_REF,
71
- claudeBin: options.claudeBin ?? 'claude',
72
- claudeConfigDir: normalizePath(options.claudeConfigDir ?? join(homedir(), '.claude')),
73
- claudeMarketplaceSource: options.claudeMarketplaceSource ?? DEFAULT_CLAUDE_MARKETPLACE_SOURCE,
74
- claudeMarketplaceSparse: normalizeStringArray(options.claudeMarketplaceSparse, []),
75
- claudeMarketplaceName: options.claudeMarketplaceName ?? DEFAULT_CLAUDE_MARKETPLACE_NAME,
76
- claudePluginRef: options.claudePluginRef ?? DEFAULT_CLAUDE_PLUGIN_REF,
77
47
  botAppId,
78
- botSecretRef,
48
+ botAppSecret,
79
49
  registerService: options.registerService ?? true,
80
50
  startService: options.startService ?? true,
81
51
  dreamuxBin: normalizePath(options.dreamuxBin ?? process.env['DREAMUX_BIN'] ?? process.argv[1]),
@@ -86,7 +56,7 @@ function defaultConfigDir(options) {
86
56
  return options.configDir ?? join(homedir(), '.dreamux');
87
57
  }
88
58
  function defaultRuntimeDir(options) {
89
- return options.runtimeDir ?? join(homedir(), '.codex-host');
59
+ return options.runtimeDir ?? join(homedir(), '.dreamux', 'runtime');
90
60
  }
91
61
  async function promptText(label, initialValue) {
92
62
  const value = await text({
@@ -103,14 +73,6 @@ async function promptConfirm(label, initialValue) {
103
73
  });
104
74
  return unwrapPrompt(value);
105
75
  }
106
- async function promptSelect(label, initialValue, options) {
107
- const value = await select({
108
- message: label,
109
- initialValue,
110
- options,
111
- });
112
- return unwrapPrompt(value);
113
- }
114
76
  function unwrapPrompt(value) {
115
77
  if (isCancel(value)) {
116
78
  cancel('onboard cancelled');
@@ -127,23 +89,4 @@ function requiredOption(value, name, fromInteractive) {
127
89
  function normalizePath(path) {
128
90
  return resolve(expandHome(path));
129
91
  }
130
- function normalizeStringArray(value, fallback) {
131
- if (value === undefined)
132
- return fallback;
133
- return (Array.isArray(value) ? value : [value]).filter((item) => item !== '');
134
- }
135
- function firstConfiguredAuthEnv() {
136
- for (const name of ['CODEX_ACCESS_TOKEN', 'OPENAI_API_KEY', 'CODEX_API_KEY']) {
137
- if (process.env[name] !== undefined && process.env[name] !== '')
138
- return name;
139
- }
140
- return 'CODEX_ACCESS_TOKEN';
141
- }
142
- function assertSupportedAuthEnv(name) {
143
- if (name !== 'CODEX_ACCESS_TOKEN' &&
144
- name !== 'OPENAI_API_KEY' &&
145
- name !== 'CODEX_API_KEY') {
146
- throw new Error(`unsupported Codex auth env var '${name}'; use CODEX_ACCESS_TOKEN, OPENAI_API_KEY, or CODEX_API_KEY`);
147
- }
148
- }
149
92
  //# sourceMappingURL=wizard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../src/onboard/wizard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../src/onboard/wizard.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@
12
12
  *
13
13
  * Precedence for each field (highest wins):
14
14
  * 1. dispatchers.codex_args_json (this JSON)
15
- * 2. global defaults from ~/.dreamux/config.toml (passed in as `defaults`)
15
+ * 2. global defaults from ~/.dreamux/config.json (passed in as `defaults`)
16
16
  * 3. hardcoded fallbacks (`'never'`, `'workspace-write'`, `[]`)
17
17
  * Per the feat/global-config-dir work — see the global-config decision.
18
18
  *