@excitedjs/dreamux 0.13.0 → 0.14.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 (88) hide show
  1. package/CHANGELOG.json +41 -0
  2. package/CHANGELOG.md +16 -1
  3. package/README.md +7 -4
  4. package/dist/admin/methods.js +86 -61
  5. package/dist/admin/methods.js.map +1 -1
  6. package/dist/admin/socket.js +31 -0
  7. package/dist/admin/socket.js.map +1 -1
  8. package/dist/agent-runtime/builtin/claude-code/runtime.js +8 -3
  9. package/dist/agent-runtime/builtin/claude-code/runtime.js.map +1 -1
  10. package/dist/agent-runtime/builtin/claude-code/supervisor.js +5 -0
  11. package/dist/agent-runtime/builtin/claude-code/supervisor.js.map +1 -1
  12. package/dist/agent-runtime/builtin/codex/codex-home.js +2 -3
  13. package/dist/agent-runtime/builtin/codex/codex-home.js.map +1 -1
  14. package/dist/agent-runtime/builtin/codex/paths.js +16 -62
  15. package/dist/agent-runtime/builtin/codex/paths.js.map +1 -1
  16. package/dist/agent-runtime/builtin/codex/runtime-support.js +4 -3
  17. package/dist/agent-runtime/builtin/codex/runtime-support.js.map +1 -1
  18. package/dist/agent-runtime/builtin/codex/runtime.js +5 -6
  19. package/dist/agent-runtime/builtin/codex/runtime.js.map +1 -1
  20. package/dist/agent-runtime/builtin/codex/supervisor.js +11 -1
  21. package/dist/agent-runtime/builtin/codex/supervisor.js.map +1 -1
  22. package/dist/agent-runtime/completion-body.js +14 -9
  23. package/dist/agent-runtime/completion-body.js.map +1 -1
  24. package/dist/channel/feishu/bot.js +0 -18
  25. package/dist/channel/feishu/bot.js.map +1 -1
  26. package/dist/channel/feishu/feishu-message.js +9 -2
  27. package/dist/channel/feishu/feishu-message.js.map +1 -1
  28. package/dist/cli/doctor.js +23 -0
  29. package/dist/cli/doctor.js.map +1 -1
  30. package/dist/cli/dreamux.js +1 -1
  31. package/dist/cli/dreamux.js.map +1 -1
  32. package/dist/cli/server-ctl.js +2 -2
  33. package/dist/cli/server.js +9 -4
  34. package/dist/cli/server.js.map +1 -1
  35. package/dist/daemon/restart-intent.js +7 -2
  36. package/dist/daemon/restart-intent.js.map +1 -1
  37. package/dist/dispatcher-service/dispatcher/base-prompt.js +4 -4
  38. package/dist/dispatcher-service/dispatcher/base-prompt.js.map +1 -1
  39. package/dist/dispatcher-service/dispatcher/service.js +7 -10
  40. package/dist/dispatcher-service/dispatcher/service.js.map +1 -1
  41. package/dist/dispatcher-service/dispatcher-workspace.js +108 -0
  42. package/dist/dispatcher-service/dispatcher-workspace.js.map +1 -0
  43. package/dist/dispatcher-service/service.js +5 -12
  44. package/dist/dispatcher-service/service.js.map +1 -1
  45. package/dist/dispatcher-service/team/service.js +214 -65
  46. package/dist/dispatcher-service/team/service.js.map +1 -1
  47. package/dist/dispatcher-service/team/store.js +6 -0
  48. package/dist/dispatcher-service/team/store.js.map +1 -1
  49. package/dist/dispatcher-service/team/types.js.map +1 -1
  50. package/dist/dispatcher-service/teammate/identity-store.js +11 -77
  51. package/dist/dispatcher-service/teammate/identity-store.js.map +1 -1
  52. package/dist/dispatcher-service/teammate/name-allocator.js +86 -0
  53. package/dist/dispatcher-service/teammate/name-allocator.js.map +1 -0
  54. package/dist/dispatcher-service/teammate/runtime-state.js +26 -8
  55. package/dist/dispatcher-service/teammate/runtime-state.js.map +1 -1
  56. package/dist/dispatcher-service/teammate/service.js +365 -113
  57. package/dist/dispatcher-service/teammate/service.js.map +1 -1
  58. package/dist/dispatcher-service/teammate/session-ledger.js +306 -0
  59. package/dist/dispatcher-service/teammate/session-ledger.js.map +1 -0
  60. package/dist/dispatcher-service/teammate/types.js +14 -0
  61. package/dist/dispatcher-service/teammate/types.js.map +1 -1
  62. package/dist/dispatcher-service/teammate/worktree-manager.js +74 -4
  63. package/dist/dispatcher-service/teammate/worktree-manager.js.map +1 -1
  64. package/dist/dispatcher-service/teammate/worktree-paths.js +53 -0
  65. package/dist/dispatcher-service/teammate/worktree-paths.js.map +1 -0
  66. package/dist/mcp/team-mcp.js +86 -75
  67. package/dist/mcp/team-mcp.js.map +1 -1
  68. package/dist/mcp/teammate-mcp.js +32 -25
  69. package/dist/mcp/teammate-mcp.js.map +1 -1
  70. package/dist/onboard/run.js +3 -3
  71. package/dist/onboard/run.js.map +1 -1
  72. package/dist/onboard/uninstall.js +7 -1
  73. package/dist/onboard/uninstall.js.map +1 -1
  74. package/dist/platform/logs.js +32 -0
  75. package/dist/platform/logs.js.map +1 -0
  76. package/dist/platform/owner-only-dir.js +37 -0
  77. package/dist/platform/owner-only-dir.js.map +1 -0
  78. package/dist/platform/paths.js +130 -33
  79. package/dist/platform/paths.js.map +1 -1
  80. package/dist/platform/runtime-sockets.js +127 -0
  81. package/dist/platform/runtime-sockets.js.map +1 -0
  82. package/dist/server.js +47 -1
  83. package/dist/server.js.map +1 -1
  84. package/package.json +1 -1
  85. package/skills/dispatcher/SKILL.md +62 -38
  86. package/skills/dispatcher/references/dispatch-task.md +3 -3
  87. package/skills/dispatcher/references/inspect-and-resume.md +5 -3
  88. package/skills/dreamux-maintenance/SKILL.md +21 -0
@@ -2,8 +2,8 @@ import { access } from 'node:fs/promises';
2
2
  import { codexArgsToCli, parseCodexArgs } from '../agent-runtime/builtin/codex/args.js';
3
3
  import { assertNoLegacyTomlOnly, globalConfigFile, stringifyConfig, } from '../config/config.js';
4
4
  import { loadConfigWithBuiltins } from '../agent-runtime/load-config.js';
5
- import { logsRoot, setRuntimeConfig, stateRoot, } from '../platform/paths.js';
6
- import { dispatcherAppServerControlDir, dispatcherCodexHome, dispatcherWorkspaceCodexSkillsDir, } from '../agent-runtime/builtin/codex/paths.js';
5
+ import { dispatcherDir, logsRoot, setRuntimeConfig, stateRoot, } from '../platform/paths.js';
6
+ import { dispatcherCodexHome, dispatcherWorkspaceCodexSkillsDir, } from '../agent-runtime/builtin/codex/paths.js';
7
7
  import { dispatcherCodexHomeDoctorContext, validateDispatcherCodexHome, } from '../agent-runtime/builtin/codex/codex-home.js';
8
8
  import { ExecaCommandRunner } from './commands.js';
9
9
  import { dispatcherCodexArgsJson, dreamuxConfigFromAnswers, } from './config-files.js';
@@ -60,7 +60,7 @@ export async function runOnboard(options) {
60
60
  await ensureDirectory(codexHome, ledger, 'global Codex home', {
61
61
  dryRun: answers.dryRun,
62
62
  });
63
- await ensureDirectory(dispatcherAppServerControlDir(answers.dispatcherId), ledger, 'dispatcher app-server control directory', { dryRun: answers.dryRun });
63
+ await ensureDirectory(dispatcherDir(answers.dispatcherId), ledger, 'dispatcher state directory', { dryRun: answers.dryRun });
64
64
  await ensureDirectory(effectiveAnswers.dispatcherCwd, ledger, 'dispatcher cwd', { dryRun: answers.dryRun });
65
65
  await ensureDirectory(dispatcherWorkspaceCodexSkillsDir(effectiveAnswers.dispatcherCwd), ledger, 'workspace-local Codex skills directory', { dryRun: answers.dryRun });
66
66
  await installDispatcherSkill({
@@ -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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"}
@@ -15,7 +15,7 @@ import { ExecaCommandRunner } from './commands.js';
15
15
  import { removeUserService } from './service.js';
16
16
  import { assertNoLegacyTomlOnly, expandHome, globalConfigDir, globalConfigFile, } from '../config/config.js';
17
17
  import { loadConfigWithBuiltins } from '../agent-runtime/load-config.js';
18
- import { logsRoot, stateRoot } from '../platform/paths.js';
18
+ import { cacheRoot, logsRoot, runRoot, stateRoot } from '../platform/paths.js';
19
19
  import { dispatcherWorkspaceSkillDirs } from '../agent-runtime/builtin/codex/paths.js';
20
20
  export async function runUninstall(options = {}) {
21
21
  const runner = options.runner ?? new ExecaCommandRunner();
@@ -25,8 +25,12 @@ export async function runUninstall(options = {}) {
25
25
  const warnings = [];
26
26
  await warnIfConfigIsNotReadable(configDir, warnings);
27
27
  const stateDir = normalizePath(stateRoot());
28
+ const runDir = normalizePath(runRoot());
29
+ const cacheDir = normalizePath(cacheRoot());
28
30
  const logDir = normalizePath(logsRoot());
29
31
  assertSafeOwnedDirectory(stateDir, 'dreamux state directory');
32
+ assertSafeOwnedDirectory(runDir, 'dreamux run directory');
33
+ assertSafeOwnedDirectory(cacheDir, 'dreamux cache directory');
30
34
  assertSafeOwnedDirectory(logDir, 'dreamux logs directory');
31
35
  assertSafeOwnedDirectory(configDir, 'dreamux config directory');
32
36
  const workspaceSkillPaths = await collectWorkspaceSkillPaths(configDir);
@@ -45,6 +49,8 @@ export async function runUninstall(options = {}) {
45
49
  });
46
50
  await reportWorkspaceSkills(workspaceSkillPaths, entries);
47
51
  await removeOwnedDirectory(stateDir, entries, 'dreamux state directory', dryRun);
52
+ await removeOwnedDirectory(runDir, entries, 'dreamux run directory', dryRun);
53
+ await removeOwnedDirectory(cacheDir, entries, 'dreamux cache directory', dryRun);
48
54
  await removeOwnedDirectory(logDir, entries, 'dreamux logs directory', dryRun);
49
55
  await removeOwnedDirectory(configDir, entries, 'dreamux config directory', dryRun);
50
56
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/onboard/uninstall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/onboard/uninstall.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Log-file hygiene helpers (issue #182 logs stage).
3
+ *
4
+ * Runtime child stdout/stderr logs are opened eagerly as inherited fds before
5
+ * the child produces any output (the supervisor must hand the child a valid fd
6
+ * at spawn time, so they cannot be created lazily). Normal Codex traffic flows
7
+ * over the Unix socket and normal Claude Code traffic over the resident stream,
8
+ * so these files mostly stay empty and would otherwise accumulate one zero-byte
9
+ * file per runtime start. After a clean child shutdown the owning supervisor
10
+ * calls {@link removeEmptyLogFile} on each child log path to drop the empties
11
+ * while keeping any file that actually captured startup/crash output.
12
+ *
13
+ * This is per-child self-cleanup of files this process created — NOT age-based
14
+ * pruning of the operator's accumulated logs, which #182 keeps manual.
15
+ */
16
+ import { stat, unlink } from 'node:fs/promises';
17
+ /**
18
+ * Remove `path` only if it exists and is zero bytes. Best-effort: a missing
19
+ * file, a non-empty file, or any IO error leaves things untouched and never
20
+ * throws, so teardown is never blocked by log hygiene.
21
+ */
22
+ export async function removeEmptyLogFile(path) {
23
+ try {
24
+ const info = await stat(path);
25
+ if (info.size === 0)
26
+ await unlink(path);
27
+ }
28
+ catch {
29
+ /* best effort — missing/busy/non-empty files are left as-is */
30
+ }
31
+ }
32
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/platform/logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEhD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACnD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,+DAA+D;IACjE,CAAC;AACH,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Owner-only directory enforcement for Dreamux-owned runtime dirs (issue #182).
3
+ *
4
+ * `mkdir(path, { mode: 0o700, recursive: true })` only applies the mode to
5
+ * directories it actually creates; a *pre-existing* dir keeps whatever
6
+ * permissions it already had. So a Dreamux run/socket dir left over from an
7
+ * older version (or created by something else with a permissive umask) would
8
+ * silently host private control sockets and lock files under a world- or
9
+ * group-traversable parent. This helper adopts the dir and guarantees the
10
+ * privacy invariant regardless of who created it:
11
+ *
12
+ * - reject a symlink at the leaf (a pre-planted symlink could redirect our
13
+ * private files outside the owner-only tree);
14
+ * - fail loud if the dir is owned by another uid (someone else's directory on
15
+ * our path — never silently trust it);
16
+ * - tighten to 0700 if any group/other permission bit is set.
17
+ *
18
+ * Detection + tightening of our own dir only — it never touches operator-owned
19
+ * parents (e.g. `$XDG_RUNTIME_DIR` itself), which are not passed here.
20
+ */
21
+ import { chmod, lstat, mkdir } from 'node:fs/promises';
22
+ export async function ensureOwnerOnlyDir(path, options = {}) {
23
+ await mkdir(path, { recursive: true, mode: 0o700 });
24
+ const info = await lstat(path);
25
+ if (info.isSymbolicLink()) {
26
+ throw new Error(`refusing to use Dreamux runtime directory ${path}: it is a symlink, not a real directory`);
27
+ }
28
+ const getuid = options.getuid ?? process.getuid?.bind(process);
29
+ if (getuid !== undefined && info.uid !== getuid()) {
30
+ throw new Error(`refusing to use Dreamux runtime directory ${path}: it is owned by uid ${info.uid}, ` +
31
+ `not the current user (uid ${getuid()})`);
32
+ }
33
+ if ((info.mode & 0o077) !== 0) {
34
+ await chmod(path, 0o700);
35
+ }
36
+ }
37
+ //# sourceMappingURL=owner-only-dir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owner-only-dir.js","sourceRoot":"","sources":["../../src/platform/owner-only-dir.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAYvD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,UAAqC,EAAE;IAEvC,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,6CAA6C,IAAI,yCAAyC,CAC3F,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM,EAAE,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,6CAA6C,IAAI,wBAAwB,IAAI,CAAC,GAAG,IAAI;YACnF,6BAA6B,MAAM,EAAE,GAAG,CAC3C,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC"}
@@ -1,26 +1,33 @@
1
1
  /**
2
- * Filesystem layout for dreamux-owned runtime state and logs.
2
+ * Filesystem layout for dreamux-owned runtime state, volatile run files, and
3
+ * logs.
3
4
  *
4
- * Effective MVP layout:
5
+ * Effective layout (issue #182 PR-1 split durable state from volatile run
6
+ * files):
5
7
  * ~/.dreamux/
6
- * state/
7
- * server.json
8
- * admin.sock
8
+ * run/ volatile IPC/control artifacts; safe to clear
9
+ * when no dreamux server is running
10
+ * admin.sock admin control socket (+ admin.sock.lock)
11
+ * restart-intent.json one-shot daemon restart marker
12
+ * sockets/ fallback root for runtime rendezvous sockets
13
+ * (see platform/runtime-sockets.ts)
14
+ * state/ durable server-owned state
9
15
  * <dispatcher-id>/
10
16
  * status.json
11
17
  * access.json
12
- * codex.sock Codex app-server Unix socket
13
18
  * teammate/ Server-hosted TeamMate identities and history
14
19
  * logs/
15
20
  * dreamux-server.log
16
21
  * codex-app-server/
17
22
  * <dispatcher-id>.log
18
23
  *
19
- * `stateRoot()` is the single root for dreamux-owned state. The old
24
+ * `stateRoot()` is the single root for dreamux-owned durable state; `runRoot()`
25
+ * is the single root for dreamux-owned volatile run files. The old
20
26
  * `runtime_dir` concept (and its `runtimeRoot()` alias) was retired in issue #98.
21
27
  */
28
+ import { realpath } from 'node:fs/promises';
22
29
  import { homedir } from 'node:os';
23
- import { dirname, join } from 'node:path';
30
+ import { dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
24
31
  import { fileURLToPath } from 'node:url';
25
32
  import { BUILT_IN_DEFAULTS, } from '../config/config.js';
26
33
  import { validateDispatcherId } from '../state/dispatcher-id.js';
@@ -51,26 +58,109 @@ export function getRuntimeConfig() {
51
58
  export function dreamuxRoot() {
52
59
  return join(homedir(), '.dreamux');
53
60
  }
61
+ /** Lexical containment: is `candidate` at or under `root` (both resolved)? */
62
+ function pathIsAtOrUnder(root, candidate) {
63
+ const rel = relative(resolve(root), resolve(candidate));
64
+ return rel === '' || (!rel.startsWith(`..${sep}`) && rel !== '..' && !isAbsolute(rel));
65
+ }
66
+ /**
67
+ * True when `path` resolves to, or inside, the dreamux home root
68
+ * (`~/.dreamux`). Lexical only — a path that *symlinks* into `~/.dreamux` is not
69
+ * caught here; use {@link isRealPathUnderDreamuxRoot} for the placement guard.
70
+ * Managed worktree creation must fail loud rather than place a worktree under
71
+ * Dreamux's own state/run/cache tree (issue #182 PR-4): a dispatcher workspace
72
+ * must be a real operator project directory, never the retired state-dir
73
+ * fallback or any other path inside `~/.dreamux`.
74
+ */
75
+ export function isUnderDreamuxRoot(path) {
76
+ return pathIsAtOrUnder(dreamuxRoot(), path);
77
+ }
78
+ /** realpath, falling back to a lexical resolve when the path does not exist. */
79
+ async function canonicalPath(path) {
80
+ try {
81
+ return await realpath(path);
82
+ }
83
+ catch {
84
+ return resolve(path);
85
+ }
86
+ }
87
+ /**
88
+ * Symlink-safe variant of {@link isUnderDreamuxRoot} (issue #182 PR-4, PR #186
89
+ * review P1): canonicalizes BOTH the dreamux root and `path` with `realpath`
90
+ * before the containment check, so a workspace path that lives outside
91
+ * `~/.dreamux` lexically but symlinks into it is still rejected. This is the
92
+ * authoritative guard for managed-worktree placement, where a bypass would put
93
+ * worktrees physically under Dreamux home.
94
+ */
95
+ export async function isRealPathUnderDreamuxRoot(path) {
96
+ const [realRoot, realPath] = await Promise.all([
97
+ canonicalPath(dreamuxRoot()),
98
+ canonicalPath(path),
99
+ ]);
100
+ return pathIsAtOrUnder(realRoot, realPath);
101
+ }
54
102
  export function stateRoot() {
55
103
  return join(dreamuxRoot(), 'state');
56
104
  }
57
- export function serverJsonPath() {
58
- return join(stateRoot(), 'server.json');
105
+ /**
106
+ * Root for dreamux-owned volatile run files: IPC sockets, lock files, and
107
+ * one-shot control markers. Nothing under it is durable; it is safe to remove
108
+ * while no dreamux server is running. Durable state stays under `stateRoot()`.
109
+ */
110
+ export function runRoot() {
111
+ return join(dreamuxRoot(), 'run');
59
112
  }
60
113
  /**
61
114
  * One-shot marker dropped by `dreamux daemon restart --notify-resumed` before
62
115
  * it triggers the service-manager restart. The freshly started server reads it
63
116
  * once, deletes it, and injects a "restart completed" notice into the named
64
- * resumed dispatchers. Server-owned state; safe to delete.
117
+ * resumed dispatchers. Volatile run file; safe to delete.
65
118
  */
66
119
  export function restartIntentPath() {
67
- return join(stateRoot(), 'restart-intent.json');
120
+ return join(runRoot(), 'restart-intent.json');
68
121
  }
69
122
  export function logsRoot() {
70
123
  return join(dreamuxRoot(), 'logs');
71
124
  }
125
+ /**
126
+ * Root for dreamux-owned cache: rebuildable, droppable artifacts that are
127
+ * neither durable state nor volatile run files (issue #182 PR-2). Holds
128
+ * per-dispatcher completion spill files and inbound attachment caches. Safe to
129
+ * remove while no server is running; nothing here is part of identity, status,
130
+ * history, or checkpoint recovery.
131
+ */
132
+ export function cacheRoot() {
133
+ return join(dreamuxRoot(), 'cache');
134
+ }
135
+ export function dispatcherCacheDir(id) {
136
+ return join(cacheRoot(), dispatcherPathSegment(id));
137
+ }
138
+ /**
139
+ * Per-dispatcher completion-spill directory (issue #182 PR-2): where an
140
+ * over-budget teammate completion result is written so only its path is inlined
141
+ * into the dispatcher turn. Cache, not state — the file is read by no process;
142
+ * it is surfaced to the dispatcher model as text and is safe to delete.
143
+ */
144
+ export function dispatcherCompletionSpillDir(id) {
145
+ return join(dispatcherCacheDir(id), 'spill');
146
+ }
147
+ /**
148
+ * The stable cross-process admin IPC endpoint. Packaged CLI commands and MCP
149
+ * shims resolve it through this builder only — it is a fixed path contract, so
150
+ * an over-budget path (extreme $HOME length) fails loudly instead of moving.
151
+ */
72
152
  export function adminSocketPath() {
73
- return assertUnixSocketPathBudget(join(stateRoot(), 'admin.sock'), 'admin socket path');
153
+ return assertUnixSocketPathBudget(join(runRoot(), 'admin.sock'), 'admin socket path');
154
+ }
155
+ /**
156
+ * The pre-#182 admin socket location, under durable state. PR-1 moved the live
157
+ * admin socket to `run/admin.sock`; this builder exists only so a new server
158
+ * can detect a still-running OLD-version server (which locks the legacy path)
159
+ * and fail loud — see `assertNoLegacyAdminServer`. Detection only: dreamux
160
+ * never removes or migrates the legacy file.
161
+ */
162
+ export function legacyAdminSocketPath() {
163
+ return join(stateRoot(), 'admin.sock');
74
164
  }
75
165
  export function dispatcherDir(id) {
76
166
  return join(stateRoot(), dispatcherPathSegment(id));
@@ -140,21 +230,22 @@ export function dispatcherTeamMateIdentitiesDir(id) {
140
230
  export function dispatcherTeamMateIdentityPath(id, teammateName) {
141
231
  return join(dispatcherTeamMateIdentitiesDir(id), `${teamMateNameSegment(teammateName)}.json`);
142
232
  }
143
- /** Forward-only JSONL history for one TeamMate identity. */
144
- export function dispatcherTeamMateHistoryPath(id, teammateName) {
145
- return join(dispatcherTeamMateDir(id), 'history', `${teamMateNameSegment(teammateName)}.jsonl`);
233
+ /**
234
+ * Per-dispatcher append-only TeamMate/Team session ledger (issue #182 PR-5).
235
+ * One file per dispatcher — NOT one file per transient runtime session — so the
236
+ * file count stays bounded as teammates come and go. Each line is a lifecycle
237
+ * event (spawn / send / settled / close) keyed by a stable `session_id`; a
238
+ * future read surface (PR-6) materializes session rows by folding the events.
239
+ * Durable: it preserves the facts needed to reconstruct work weeks later (repo,
240
+ * cwd, branch/worktree, name/team id, runtime checkpoint/session id, intent,
241
+ * close note) and never records a volatile runtime socket path.
242
+ */
243
+ export function dispatcherTeamMateSessionLedgerPath(id) {
244
+ return join(dispatcherTeamMateDir(id), 'sessions.jsonl');
146
245
  }
147
246
  export function dispatcherTeamMateRuntimeDir(id, teammateName) {
148
247
  return join(dispatcherTeamMateDir(id), 'runtime', teamMateNameSegment(teammateName));
149
248
  }
150
- /** Dreamux-managed Git worktrees for one dispatcher. */
151
- export function dispatcherTeamMateWorktreesDir(id) {
152
- return join(dispatcherTeamMateDir(id), 'worktrees');
153
- }
154
- /** One Dreamux-managed Git worktree path for a teammate slug. */
155
- export function dispatcherTeamMateWorktreePath(id, slug) {
156
- return join(dispatcherTeamMateWorktreesDir(id), teamMateNameSegment(slug));
157
- }
158
249
  /** Per-dispatcher Team Mode state root. */
159
250
  export function dispatcherTeamDir(id) {
160
251
  return join(dispatcherDir(id), 'team');
@@ -185,14 +276,16 @@ export function teamMateNameSegment(name) {
185
276
  * never floods the dispatcher's context. Neutral: a completion is a
186
277
  * runtime-agnostic concept, so no runtime specifics appear here.
187
278
  *
188
- * Lives under the OS temp dir (the spec's `/tmp/teammate-{source}-{id}.output`
189
- * template); `source` and `id` are sanitized for filename safety. The id is
190
- * unique per completion (teammate name + turn id), so the only realistic
191
- * collision is two dispatchers producing the same teammate/turn id acceptable
192
- * for a short-lived 0600 spill file.
279
+ * Lives under the dispatcher's cache spill dir (issue #182 PR-2 moved it out of
280
+ * shared `/tmp`, which is not a good long-term contract for a path surfaced in
281
+ * dispatcher-visible text). `spillDir` is the owning dispatcher's
282
+ * `dispatcherCompletionSpillDir`, supplied by the runtime's path context so a
283
+ * teammate runtime spills under its operator dispatcher, not its composite
284
+ * runtime id. `source` and `id` are sanitized for filename safety; the id is
285
+ * unique per completion (teammate name + turn id).
193
286
  */
194
- export function teamMateCompletionOutputPath(source, id) {
195
- return `/tmp/teammate-${teamMateNameSegment(source)}-${teamMateNameSegment(id)}.output`;
287
+ export function teamMateCompletionOutputPath(spillDir, source, id) {
288
+ return join(spillDir, `teammate-${teamMateNameSegment(source)}-${teamMateNameSegment(id)}.output`);
196
289
  }
197
290
  /**
198
291
  * Per-dispatcher peer-bot awareness/trust store. One file per dispatcher,
@@ -203,9 +296,13 @@ export function teamMateCompletionOutputPath(source, id) {
203
296
  export function dispatcherChatBotsPath(id) {
204
297
  return join(dispatcherDir(id), 'chat-bots.json');
205
298
  }
206
- /** Per-dispatcher Feishu inbound attachment cache, owned by the server. */
299
+ /**
300
+ * Per-dispatcher Feishu inbound attachment cache, owned by the server. Cache,
301
+ * not durable state (issue #182 PR-2 moved it out of `state/<id>/` into
302
+ * `cache/<id>/`): inbound attachments are re-fetchable and safe to delete.
303
+ */
207
304
  export function dispatcherFeishuAttachmentCacheDir(id) {
208
- return join(dispatcherDir(id), 'feishu-attachments');
305
+ return join(dispatcherCacheDir(id), 'feishu-attachments');
209
306
  }
210
307
  export function unixSocketPathFitsBudget(path) {
211
308
  return Buffer.byteLength(path, 'utf8') <= DREAMUX_UNIX_SOCKET_PATH_MAX_BYTES;
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/platform/paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/platform/paths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Volatile Unix-socket allocation for agent-runtime child processes
3
+ * (issue #182 PR-1).
4
+ *
5
+ * A runtime socket is a pure per-process rendezvous endpoint: dreamux starts a
6
+ * child listening on the path and connects to it immediately. Nothing resumes
7
+ * from a socket path, so every allocation is a fresh short random name and the
8
+ * path must never be persisted into durable state (identity, history, ledger,
9
+ * checkpoint, or status surfaces) — it lives only in supervisor/runtime memory.
10
+ *
11
+ * Placement preference (the allocator picks the first that fits the `sun_path`
12
+ * budget):
13
+ * 1. `$XDG_RUNTIME_DIR/dreamux/sockets/` — the canonical private per-user
14
+ * runtime dir on Linux. It is operator input, so a shared-tmp value is
15
+ * rejected rather than trusted.
16
+ * 2. `~/.dreamux/run/sockets/` — the dreamux-owned volatile run root.
17
+ * 3. `<os-private-temp>/dreamux/sockets/` — the per-user OS temp dir **only
18
+ * when it is a private root, not world-shared `/tmp`** (issue #182 final
19
+ * gate). On macOS `os.tmpdir()` is the per-user `$TMPDIR`
20
+ * (`/var/folders/<…>/T`, owner-only) and is far shorter than a long
21
+ * per-run durable `$HOME`, so it keeps Codex sockets within budget when
22
+ * there is no `$XDG_RUNTIME_DIR` and `~/.dreamux/run/sockets/` is over
23
+ * budget. On Linux `os.tmpdir()` is `/tmp` (shared) and is rejected, so
24
+ * this candidate never reintroduces a world-shared tmp socket.
25
+ * Shared world-writable tmp roots (`/tmp`, `/var/tmp`) are never used for
26
+ * sockets (global-bin decision record). When no candidate fits the `sun_path`
27
+ * budget, allocation fails loudly.
28
+ *
29
+ * The supervisor owning a socket remains responsible for mkdir, stale-socket
30
+ * removal before bind, and removal on stop/reap. `sweepRuntimeSocketDirs()`
31
+ * additionally clears crash orphans; it must only run while the caller holds
32
+ * the admin-socket lock (single-server guarantee), so every entry is dead.
33
+ */
34
+ import { randomBytes } from 'node:crypto';
35
+ import { rm } from 'node:fs/promises';
36
+ import { tmpdir } from 'node:os';
37
+ import { join, normalize, sep } from 'node:path';
38
+ import { assertUnixSocketPathBudget, runRoot, unixSocketPathFitsBudget, } from './paths.js';
39
+ /**
40
+ * Shared world-writable system tmp roots. `/private/tmp` and
41
+ * `/private/var/tmp` are the macOS symlink-resolved spellings of `/tmp` and
42
+ * `/var/tmp`, so a canonicalized path must not slip past the guard.
43
+ */
44
+ const SHARED_TMP_ROOTS = ['/tmp', '/var/tmp', '/private/tmp', '/private/var/tmp'];
45
+ export function isSharedTmpPath(path) {
46
+ const normalized = normalize(path);
47
+ return SHARED_TMP_ROOTS.some((root) => normalized === root || normalized.startsWith(`${root}${sep}`));
48
+ }
49
+ /**
50
+ * Candidate directories for volatile runtime sockets, in preference order.
51
+ * Every candidate is dreamux-owned (a `dreamux` subtree or the run root), so
52
+ * sweeping them whole is safe under the single-server lock.
53
+ */
54
+ export function runtimeSocketDirCandidates(env = process.env) {
55
+ const candidates = [];
56
+ const xdg = env['XDG_RUNTIME_DIR'];
57
+ if (xdg !== undefined && xdg.trim() !== '' && !isSharedTmpPath(xdg)) {
58
+ candidates.push(join(xdg, 'dreamux', 'sockets'));
59
+ }
60
+ candidates.push(join(runRoot(), 'sockets'));
61
+ // Per-user OS temp dir, but only when it is a PRIVATE root (macOS `$TMPDIR`
62
+ // = `/var/folders/<…>/T`, owner-only) — never world-shared `/tmp` (Linux),
63
+ // which `isSharedTmpPath` rejects. This is the short, private fallback that
64
+ // keeps sockets within the `sun_path` budget on macOS with no
65
+ // `$XDG_RUNTIME_DIR` and a long per-run `$HOME` (issue #182 final gate). It
66
+ // is consulted after the dreamux-owned run root, so short-`$HOME` placement
67
+ // is unchanged; the supervisor still enforces owner-only on the dir.
68
+ const tmp = osTempDir(env);
69
+ if (tmp !== '' && !isSharedTmpPath(tmp)) {
70
+ candidates.push(join(tmp, 'dreamux', 'sockets'));
71
+ }
72
+ return candidates;
73
+ }
74
+ /**
75
+ * The per-user OS temp directory, resolved from the passed env so tests are
76
+ * deterministic, mirroring Node's `os.tmpdir()` precedence
77
+ * (`TMPDIR` → `TMP` → `TEMP` → platform default).
78
+ */
79
+ function osTempDir(env) {
80
+ const fromEnv = env['TMPDIR'] ?? env['TMP'] ?? env['TEMP'];
81
+ const raw = fromEnv !== undefined && fromEnv.trim() !== '' ? fromEnv : tmpdir();
82
+ // Strip a single trailing separator so joined paths stay canonical.
83
+ return raw.endsWith(sep) && raw.length > 1 ? raw.slice(0, -1) : raw;
84
+ }
85
+ /**
86
+ * Allocate a fresh runtime socket path: the first preference-ordered candidate
87
+ * dir whose joined random-name path fits the Unix socket budget. Pure path
88
+ * computation — the caller (supervisor) creates the directory and cleans up
89
+ * the socket. Fails loudly (with `label` in the message) when even the
90
+ * dreamux-owned fallback is over budget.
91
+ */
92
+ export function allocateRuntimeSocketPath(label, env = process.env) {
93
+ const name = `${randomBytes(6).toString('base64url')}.sock`;
94
+ const candidates = runtimeSocketDirCandidates(env);
95
+ for (const dir of candidates) {
96
+ const path = join(dir, name);
97
+ if (unixSocketPathFitsBudget(path))
98
+ return path;
99
+ }
100
+ // No candidate fits the budget. Every candidate is a dreamux-owned, sweepable
101
+ // sockets dir (never the bare run root), so re-asserting on the last one
102
+ // yields the fail-loud message naming the longest-shot placement we tried.
103
+ const fallback = candidates[candidates.length - 1];
104
+ return assertUnixSocketPathBudget(join(fallback, name), label);
105
+ }
106
+ /**
107
+ * Remove every runtime-socket candidate directory wholesale, clearing crash
108
+ * orphans (sockets whose owning process died without reaping). Volatile by
109
+ * contract — sockets are re-allocated on every runtime start, so nothing here
110
+ * is ever reused. Only call while holding the admin-socket lock: that
111
+ * single-server guarantee is what makes every entry provably dead. Returns the
112
+ * swept directories for logging. Failures are best-effort per directory.
113
+ */
114
+ export async function sweepRuntimeSocketDirs(env = process.env) {
115
+ const swept = [];
116
+ for (const dir of runtimeSocketDirCandidates(env)) {
117
+ try {
118
+ await rm(dir, { recursive: true, force: true });
119
+ swept.push(dir);
120
+ }
121
+ catch {
122
+ /* best effort — a missing or busy dir must not block server startup */
123
+ }
124
+ }
125
+ return swept;
126
+ }
127
+ //# sourceMappingURL=runtime-sockets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-sockets.js","sourceRoot":"","sources":["../../src/platform/runtime-sockets.ts"],"names":[],"mappings":"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"}