@excitedjs/dreamux 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +155 -160
- package/bin/dreamux +2 -1
- package/bin/tm +30 -0
- package/dist/admin/client.js +98 -0
- package/dist/admin/client.js.map +1 -0
- package/dist/admin/methods.js +83 -38
- package/dist/admin/methods.js.map +1 -1
- package/dist/admin/socket.js +2 -2
- package/dist/admin/socket.js.map +1 -1
- package/dist/channel/feishu-gate.js +187 -18
- package/dist/channel/feishu-gate.js.map +1 -1
- package/dist/channel/feishu-message.js +92 -0
- package/dist/channel/feishu-message.js.map +1 -0
- package/dist/cli/doctor.js +242 -62
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/dreamux.js +33 -51
- package/dist/cli/dreamux.js.map +1 -1
- package/dist/cli/server-ctl.js +6 -8
- package/dist/cli/server-ctl.js.map +1 -1
- package/dist/cli/server.js +22 -32
- package/dist/cli/server.js.map +1 -1
- package/dist/codex/events.js +3 -2
- package/dist/codex/events.js.map +1 -1
- package/dist/codex/mcp-config.js +24 -0
- package/dist/codex/mcp-config.js.map +1 -0
- package/dist/codex/supervisor.js +16 -0
- package/dist/codex/supervisor.js.map +1 -1
- package/dist/dispatcher/approval.js +2 -3
- package/dist/dispatcher/approval.js.map +1 -1
- package/dist/dispatcher/runtime.js +193 -141
- package/dist/dispatcher/runtime.js.map +1 -1
- package/dist/dispatcher/turn-manager.js +78 -97
- package/dist/dispatcher/turn-manager.js.map +1 -1
- package/dist/feishu/bot.js +71 -9
- package/dist/feishu/bot.js.map +1 -1
- package/dist/mcp/feishu-mcp.js +269 -0
- package/dist/mcp/feishu-mcp.js.map +1 -0
- package/dist/onboard/commands.js +10 -6
- package/dist/onboard/commands.js.map +1 -1
- package/dist/onboard/config-files.js +52 -22
- package/dist/onboard/config-files.js.map +1 -1
- package/dist/onboard/dispatcher-skill.js +18 -0
- package/dist/onboard/dispatcher-skill.js.map +1 -0
- package/dist/onboard/run.js +36 -52
- package/dist/onboard/run.js.map +1 -1
- package/dist/onboard/service.js +106 -9
- package/dist/onboard/service.js.map +1 -1
- package/dist/onboard/uninstall.js +47 -13
- package/dist/onboard/uninstall.js.map +1 -1
- package/dist/onboard/wizard.js +3 -27
- package/dist/onboard/wizard.js.map +1 -1
- package/dist/runtime/config.js +158 -64
- package/dist/runtime/config.js.map +1 -1
- package/dist/runtime/dispatcher-codex-home.js +14 -51
- package/dist/runtime/dispatcher-codex-home.js.map +1 -1
- package/dist/runtime/dispatcher-id.js +9 -0
- package/dist/runtime/dispatcher-id.js.map +1 -0
- package/dist/runtime/dispatcher-store.js +202 -0
- package/dist/runtime/dispatcher-store.js.map +1 -0
- package/dist/runtime/package-bin.js +41 -0
- package/dist/runtime/package-bin.js.map +1 -0
- package/dist/runtime/paths.js +82 -48
- package/dist/runtime/paths.js.map +1 -1
- package/dist/runtime/secrets.js +4 -3
- package/dist/runtime/secrets.js.map +1 -1
- package/dist/server.js +110 -36
- package/dist/server.js.map +1 -1
- package/package.json +6 -6
- package/skills/dispatcher/SKILL.md +107 -0
- package/db/migrations/0001_init.sql +0 -49
- package/dist/channel/outbound.js +0 -12
- package/dist/channel/outbound.js.map +0 -1
- package/dist/db/repository.js +0 -223
- package/dist/db/repository.js.map +0 -1
- package/dist/db/schema.js +0 -29
- package/dist/db/schema.js.map +0 -1
- package/dist/db/types.js +0 -2
- package/dist/db/types.js.map +0 -1
- package/dist/onboard/plugins.js +0 -202
- package/dist/onboard/plugins.js.map +0 -1
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync, } from 'node:fs';
|
|
2
|
+
import { dirname } from 'node:path';
|
|
3
|
+
import { dispatcherStatusPath } from './paths.js';
|
|
4
|
+
export class DispatcherStore {
|
|
5
|
+
rows = new Map();
|
|
6
|
+
constructor(config) {
|
|
7
|
+
const now = Date.now();
|
|
8
|
+
for (const dispatcher of config.dispatchers) {
|
|
9
|
+
const row = rowFromConfig(dispatcher, now);
|
|
10
|
+
this.rows.set(row.dispatcher_id, row);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
create(input) {
|
|
14
|
+
if (this.rows.has(input.dispatcher_id)) {
|
|
15
|
+
throw new Error(`dispatcher '${input.dispatcher_id}' already exists`);
|
|
16
|
+
}
|
|
17
|
+
const duplicateApp = this.list().find((row) => row.bot_app_id === input.bot_app_id);
|
|
18
|
+
if (duplicateApp !== undefined) {
|
|
19
|
+
throw new Error(`bot_app_id '${input.bot_app_id}' is already used by dispatcher '${duplicateApp.dispatcher_id}'`);
|
|
20
|
+
}
|
|
21
|
+
const now = Date.now();
|
|
22
|
+
const row = {
|
|
23
|
+
dispatcher_id: input.dispatcher_id,
|
|
24
|
+
bot_app_id: input.bot_app_id,
|
|
25
|
+
bot_secret_ref: input.bot_secret_ref ?? `config:${input.dispatcher_id}`,
|
|
26
|
+
codex_args_json: input.codex_args_json ?? '{}',
|
|
27
|
+
codex_cwd: input.codex_cwd ?? null,
|
|
28
|
+
thread_id: null,
|
|
29
|
+
status: 'declared',
|
|
30
|
+
enabled: normalizeEnabled(input.enabled ?? 1),
|
|
31
|
+
created_at: now,
|
|
32
|
+
updated_at: now,
|
|
33
|
+
last_started_at: null,
|
|
34
|
+
last_ready_at: null,
|
|
35
|
+
last_error: null,
|
|
36
|
+
last_lost_thread_id: null,
|
|
37
|
+
};
|
|
38
|
+
this.rows.set(row.dispatcher_id, row);
|
|
39
|
+
return { ...row };
|
|
40
|
+
}
|
|
41
|
+
upsert(input) {
|
|
42
|
+
const existing = this.rows.get(input.dispatcher_id);
|
|
43
|
+
if (existing === undefined)
|
|
44
|
+
return this.create(input);
|
|
45
|
+
const row = {
|
|
46
|
+
...existing,
|
|
47
|
+
bot_app_id: input.bot_app_id,
|
|
48
|
+
bot_secret_ref: input.bot_secret_ref ?? existing.bot_secret_ref,
|
|
49
|
+
codex_args_json: input.codex_args_json ?? existing.codex_args_json,
|
|
50
|
+
codex_cwd: input.codex_cwd ?? existing.codex_cwd,
|
|
51
|
+
enabled: normalizeEnabled(input.enabled ?? existing.enabled),
|
|
52
|
+
updated_at: Date.now(),
|
|
53
|
+
};
|
|
54
|
+
this.rows.set(row.dispatcher_id, row);
|
|
55
|
+
return { ...row };
|
|
56
|
+
}
|
|
57
|
+
get(id) {
|
|
58
|
+
const row = this.rows.get(id);
|
|
59
|
+
return row === undefined ? null : { ...row };
|
|
60
|
+
}
|
|
61
|
+
list() {
|
|
62
|
+
return Array.from(this.rows.values())
|
|
63
|
+
.sort((a, b) => a.created_at - b.created_at)
|
|
64
|
+
.map((row) => ({ ...row }));
|
|
65
|
+
}
|
|
66
|
+
listEnabled() {
|
|
67
|
+
return this.list().filter((row) => row.enabled === 1);
|
|
68
|
+
}
|
|
69
|
+
remove(id) {
|
|
70
|
+
this.rows.delete(id);
|
|
71
|
+
rmSync(dispatcherStatusPath(id), { force: true });
|
|
72
|
+
}
|
|
73
|
+
setStatus(id, status, extras = {}) {
|
|
74
|
+
const row = this.mustRow(id);
|
|
75
|
+
row.status = status;
|
|
76
|
+
row.updated_at = Date.now();
|
|
77
|
+
if ('last_error' in extras)
|
|
78
|
+
row.last_error = extras.last_error ?? null;
|
|
79
|
+
if (extras.last_started_at !== undefined) {
|
|
80
|
+
row.last_started_at = extras.last_started_at;
|
|
81
|
+
}
|
|
82
|
+
if (extras.last_ready_at !== undefined) {
|
|
83
|
+
row.last_ready_at = extras.last_ready_at;
|
|
84
|
+
}
|
|
85
|
+
this.persist(row);
|
|
86
|
+
}
|
|
87
|
+
setThreadId(id, threadId) {
|
|
88
|
+
const row = this.mustRow(id);
|
|
89
|
+
row.thread_id = threadId;
|
|
90
|
+
row.updated_at = Date.now();
|
|
91
|
+
this.persist(row);
|
|
92
|
+
}
|
|
93
|
+
recordLostThread(id, lostThreadId, newThreadId, error) {
|
|
94
|
+
const row = this.mustRow(id);
|
|
95
|
+
row.thread_id = newThreadId;
|
|
96
|
+
row.last_lost_thread_id = lostThreadId;
|
|
97
|
+
row.last_error = error;
|
|
98
|
+
row.updated_at = Date.now();
|
|
99
|
+
this.persist(row);
|
|
100
|
+
}
|
|
101
|
+
mustRow(id) {
|
|
102
|
+
const row = this.rows.get(id);
|
|
103
|
+
if (row === undefined)
|
|
104
|
+
throw new Error(`no dispatcher '${id}'`);
|
|
105
|
+
return row;
|
|
106
|
+
}
|
|
107
|
+
persist(row) {
|
|
108
|
+
mkdirSync(dirname(dispatcherStatusPath(row.dispatcher_id)), {
|
|
109
|
+
recursive: true,
|
|
110
|
+
});
|
|
111
|
+
const status = {
|
|
112
|
+
version: 1,
|
|
113
|
+
dispatcher_id: row.dispatcher_id,
|
|
114
|
+
thread_id: row.thread_id,
|
|
115
|
+
status: row.status,
|
|
116
|
+
updated_at: row.updated_at,
|
|
117
|
+
last_started_at: row.last_started_at,
|
|
118
|
+
last_ready_at: row.last_ready_at,
|
|
119
|
+
last_error: row.last_error,
|
|
120
|
+
last_lost_thread_id: row.last_lost_thread_id,
|
|
121
|
+
};
|
|
122
|
+
writeFileSync(dispatcherStatusPath(row.dispatcher_id), `${JSON.stringify(status, null, 2)}\n`, { mode: 0o600 });
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function rowFromConfig(config, now) {
|
|
126
|
+
const status = readStatusFile(config.id);
|
|
127
|
+
return {
|
|
128
|
+
dispatcher_id: config.id,
|
|
129
|
+
bot_app_id: config.feishu.app_id,
|
|
130
|
+
bot_secret_ref: `config:${config.id}`,
|
|
131
|
+
codex_args_json: dispatcherCodexArgsJson(config),
|
|
132
|
+
codex_cwd: config.cwd,
|
|
133
|
+
thread_id: status?.thread_id ?? null,
|
|
134
|
+
status: status?.status ?? 'declared',
|
|
135
|
+
enabled: config.enabled ? 1 : 0,
|
|
136
|
+
created_at: status?.updated_at ?? now,
|
|
137
|
+
updated_at: status?.updated_at ?? now,
|
|
138
|
+
last_started_at: status?.last_started_at ?? null,
|
|
139
|
+
last_ready_at: status?.last_ready_at ?? null,
|
|
140
|
+
last_error: status?.last_error ?? null,
|
|
141
|
+
last_lost_thread_id: status?.last_lost_thread_id ?? null,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function dispatcherCodexArgsJson(config) {
|
|
145
|
+
const raw = {};
|
|
146
|
+
if (config.codex.approval_policy !== null) {
|
|
147
|
+
raw['approvalPolicy'] = config.codex.approval_policy;
|
|
148
|
+
}
|
|
149
|
+
if (config.codex.sandbox_mode !== null) {
|
|
150
|
+
raw['sandboxMode'] = config.codex.sandbox_mode;
|
|
151
|
+
}
|
|
152
|
+
if (config.codex.extra_args.length > 0) {
|
|
153
|
+
raw['extraArgs'] = config.codex.extra_args;
|
|
154
|
+
}
|
|
155
|
+
// codex.extra_env is applied to the child process environment, not encoded
|
|
156
|
+
// into CLI args.
|
|
157
|
+
return JSON.stringify(raw);
|
|
158
|
+
}
|
|
159
|
+
function readStatusFile(id) {
|
|
160
|
+
const path = dispatcherStatusPath(id);
|
|
161
|
+
if (!existsSync(path))
|
|
162
|
+
return null;
|
|
163
|
+
try {
|
|
164
|
+
const raw = JSON.parse(readFileSync(path, 'utf8'));
|
|
165
|
+
if (raw.version !== 1 || raw.dispatcher_id !== id)
|
|
166
|
+
return null;
|
|
167
|
+
return {
|
|
168
|
+
version: 1,
|
|
169
|
+
dispatcher_id: id,
|
|
170
|
+
thread_id: typeof raw.thread_id === 'string' ? raw.thread_id : null,
|
|
171
|
+
status: isDispatcherStatus(raw.status) ? raw.status : 'declared',
|
|
172
|
+
updated_at: typeof raw.updated_at === 'number' && Number.isFinite(raw.updated_at)
|
|
173
|
+
? raw.updated_at
|
|
174
|
+
: Date.now(),
|
|
175
|
+
last_started_at: numberOrNull(raw.last_started_at),
|
|
176
|
+
last_ready_at: numberOrNull(raw.last_ready_at),
|
|
177
|
+
last_error: stringOrNull(raw.last_error),
|
|
178
|
+
last_lost_thread_id: stringOrNull(raw.last_lost_thread_id),
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
function isDispatcherStatus(value) {
|
|
186
|
+
return value === 'declared' ||
|
|
187
|
+
value === 'starting' ||
|
|
188
|
+
value === 'ready' ||
|
|
189
|
+
value === 'degraded' ||
|
|
190
|
+
value === 'stopping' ||
|
|
191
|
+
value === 'stopped';
|
|
192
|
+
}
|
|
193
|
+
function numberOrNull(value) {
|
|
194
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : null;
|
|
195
|
+
}
|
|
196
|
+
function stringOrNull(value) {
|
|
197
|
+
return typeof value === 'string' ? value : null;
|
|
198
|
+
}
|
|
199
|
+
function normalizeEnabled(value) {
|
|
200
|
+
return value === true || value === 1 ? 1 : 0;
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=dispatcher-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatcher-store.js","sourceRoot":"","sources":["../../src/runtime/dispatcher-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { dirname, join, resolve } from 'node:path';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
4
|
+
const PACKAGE_ROOT = dirname(dirname(HERE));
|
|
5
|
+
const PACKAGE_BIN_DIR = join(PACKAGE_ROOT, 'bin');
|
|
6
|
+
const DREAMUX_BIN = join(PACKAGE_BIN_DIR, 'dreamux');
|
|
7
|
+
export function dreamuxBinPath(env = process.env) {
|
|
8
|
+
const fromEnv = env['DREAMUX_BIN'];
|
|
9
|
+
return fromEnv !== undefined && fromEnv !== ''
|
|
10
|
+
? resolve(fromEnv)
|
|
11
|
+
: DREAMUX_BIN;
|
|
12
|
+
}
|
|
13
|
+
export function dispatcherProcessEnv(baseEnv = process.env, extraEnv = {}) {
|
|
14
|
+
const mergedEnv = {
|
|
15
|
+
...baseEnv,
|
|
16
|
+
...extraEnv,
|
|
17
|
+
};
|
|
18
|
+
const env = {
|
|
19
|
+
...mergedEnv,
|
|
20
|
+
PATH: prependPath(packageBinDirs(mergedEnv), mergedEnv['PATH']),
|
|
21
|
+
};
|
|
22
|
+
delete env['CODEX_HOME'];
|
|
23
|
+
return env;
|
|
24
|
+
}
|
|
25
|
+
function packageBinDirs(env) {
|
|
26
|
+
const dirs = [PACKAGE_BIN_DIR];
|
|
27
|
+
dirs.push(dirname(dreamuxBinPath(env)));
|
|
28
|
+
return dirs;
|
|
29
|
+
}
|
|
30
|
+
function prependPath(prefixes, existing) {
|
|
31
|
+
const parts = [];
|
|
32
|
+
const seen = new Set();
|
|
33
|
+
for (const part of [...prefixes, ...(existing ?? '').split(':')]) {
|
|
34
|
+
if (part === '' || seen.has(part))
|
|
35
|
+
continue;
|
|
36
|
+
seen.add(part);
|
|
37
|
+
parts.push(part);
|
|
38
|
+
}
|
|
39
|
+
return parts.join(':');
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=package-bin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-bin.js","sourceRoot":"","sources":["../../src/runtime/package-bin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,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,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAClD,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;AAErD,MAAM,UAAU,cAAc,CAC5B,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC;IACnC,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE;QAC5C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QAClB,CAAC,CAAC,WAAW,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,UAA6B,OAAO,CAAC,GAAG,EACxC,WAAmC,EAAE;IAErC,MAAM,SAAS,GAAsB;QACnC,GAAG,OAAO;QACV,GAAG,QAAQ;KACZ,CAAC;IACF,MAAM,GAAG,GAAsB;QAC7B,GAAG,SAAS;QACZ,IAAI,EAAE,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;KAChE,CAAC;IACF,OAAO,GAAG,CAAC,YAAY,CAAC,CAAC;IACzB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,cAAc,CAAC,GAAsB;IAC5C,MAAM,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,QAAkB,EAAE,QAA4B;IACnE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACjE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAC5C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
|
package/dist/runtime/paths.js
CHANGED
|
@@ -1,36 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Filesystem layout for
|
|
2
|
+
* Filesystem layout for dreamux-owned runtime state and logs.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
4
|
+
* Effective MVP layout:
|
|
5
|
+
* ~/.dreamux/
|
|
6
|
+
* state/
|
|
7
|
+
* server.json
|
|
8
|
+
* admin.sock
|
|
9
|
+
* <dispatcher-id>/
|
|
10
|
+
* status.json
|
|
11
|
+
* access.json
|
|
12
|
+
* codex.sock Codex app-server Unix socket
|
|
13
|
+
* logs/
|
|
14
|
+
* dreamux-server.log
|
|
15
|
+
* codex-app-server/
|
|
16
|
+
* <dispatcher-id>.log
|
|
14
17
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* during onboard and stored on the dispatcher row; dispatcherCodexCwd() exists
|
|
19
|
-
* only as a legacy fallback.
|
|
20
|
-
*
|
|
21
|
-
* Issue ~/.dreamux/ config (feat/global-config-dir): paths.* functions
|
|
22
|
-
* read an optionally-injected `DreamuxConfig` snapshot for non-env
|
|
23
|
-
* defaults. Server.start() calls setRuntimeConfig() once at boot; bare
|
|
24
|
-
* tests / standalone callers fall back to the built-in defaults.
|
|
18
|
+
* `runtime_dir` is not an effective runtime contract. The legacy runtimeRoot()
|
|
19
|
+
* function remains as a compatibility alias for stateRoot() while older call
|
|
20
|
+
* sites are retired.
|
|
25
21
|
*/
|
|
26
22
|
import { homedir } from 'node:os';
|
|
27
23
|
import { join } from 'node:path';
|
|
28
|
-
import { BUILT_IN_DEFAULTS,
|
|
24
|
+
import { BUILT_IN_DEFAULTS, } from './config.js';
|
|
25
|
+
import { validateDispatcherId } from './dispatcher-id.js';
|
|
26
|
+
export const DREAMUX_UNIX_SOCKET_PATH_MAX_BYTES = 103;
|
|
29
27
|
let currentConfig = BUILT_IN_DEFAULTS;
|
|
30
28
|
/**
|
|
31
29
|
* Set the active configuration snapshot. Called once by Server.start() with
|
|
32
|
-
* the result of
|
|
33
|
-
*
|
|
30
|
+
* the result of loadConfig(); tests can call it to inject a custom snapshot.
|
|
31
|
+
* Idempotent.
|
|
34
32
|
*/
|
|
35
33
|
export function setRuntimeConfig(config) {
|
|
36
34
|
currentConfig = config;
|
|
@@ -42,34 +40,34 @@ export function resetRuntimeConfig() {
|
|
|
42
40
|
export function getRuntimeConfig() {
|
|
43
41
|
return currentConfig;
|
|
44
42
|
}
|
|
45
|
-
export function
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
return
|
|
43
|
+
export function dreamuxRoot() {
|
|
44
|
+
return join(homedir(), '.dreamux');
|
|
45
|
+
}
|
|
46
|
+
export function stateRoot() {
|
|
47
|
+
return join(dreamuxRoot(), 'state');
|
|
48
|
+
}
|
|
49
|
+
export function serverJsonPath() {
|
|
50
|
+
return join(stateRoot(), 'server.json');
|
|
51
|
+
}
|
|
52
|
+
export function logsRoot() {
|
|
53
|
+
return join(dreamuxRoot(), 'logs');
|
|
50
54
|
}
|
|
51
|
-
|
|
52
|
-
|
|
55
|
+
/**
|
|
56
|
+
* Legacy compatibility alias. New code should call stateRoot().
|
|
57
|
+
*/
|
|
58
|
+
export function runtimeRoot() {
|
|
59
|
+
return stateRoot();
|
|
53
60
|
}
|
|
54
61
|
export function adminSocketPath() {
|
|
55
|
-
|
|
56
|
-
if (fromEnv !== undefined && fromEnv !== '')
|
|
57
|
-
return fromEnv;
|
|
58
|
-
if (currentConfig.admin_socket !== null) {
|
|
59
|
-
return expandHome(currentConfig.admin_socket);
|
|
60
|
-
}
|
|
61
|
-
return join(runtimeRoot(), 'admin.sock');
|
|
62
|
+
return assertUnixSocketPathBudget(join(stateRoot(), 'admin.sock'), 'admin socket path');
|
|
62
63
|
}
|
|
63
64
|
export function dispatcherDir(id) {
|
|
64
|
-
return join(
|
|
65
|
+
return join(stateRoot(), dispatcherPathSegment(id));
|
|
65
66
|
}
|
|
66
67
|
export function dispatcherCodexCwd(id) {
|
|
67
68
|
return join(dispatcherDir(id), 'cwd');
|
|
68
69
|
}
|
|
69
70
|
export function operatorCodexHome() {
|
|
70
|
-
const fromEnv = process.env['CODEX_HOME'];
|
|
71
|
-
if (fromEnv !== undefined && fromEnv !== '')
|
|
72
|
-
return fromEnv;
|
|
73
71
|
return join(homedir(), '.codex');
|
|
74
72
|
}
|
|
75
73
|
export function dispatcherCodexHome(id) {
|
|
@@ -79,19 +77,55 @@ export function dispatcherCodexHome(id) {
|
|
|
79
77
|
export function dispatcherCodexConfigPath(id) {
|
|
80
78
|
return join(dispatcherCodexHome(id), 'config.toml');
|
|
81
79
|
}
|
|
82
|
-
export function
|
|
83
|
-
return join(
|
|
80
|
+
export function dispatcherWorkspaceCodexSkillsDir(cwd) {
|
|
81
|
+
return join(cwd, '.codex', 'skills');
|
|
82
|
+
}
|
|
83
|
+
export function dispatcherWorkspaceSkillPath(cwd) {
|
|
84
|
+
return join(dispatcherWorkspaceCodexSkillsDir(cwd), 'dispatcher', 'SKILL.md');
|
|
84
85
|
}
|
|
85
86
|
export function dispatcherAppServerControlDir(id) {
|
|
86
|
-
return
|
|
87
|
+
return dispatcherDir(id);
|
|
87
88
|
}
|
|
88
89
|
export function dispatcherSocketPath(id) {
|
|
89
|
-
return join(
|
|
90
|
+
return assertUnixSocketPathBudget(join(dispatcherDir(id), 'codex.sock'), `dispatcher '${id}' Codex socket path`);
|
|
90
91
|
}
|
|
91
92
|
export function dispatcherStdoutLog(id) {
|
|
92
|
-
return
|
|
93
|
+
return dispatcherCodexAppServerLogPath(id);
|
|
93
94
|
}
|
|
94
95
|
export function dispatcherStderrLog(id) {
|
|
95
|
-
return
|
|
96
|
+
return dispatcherCodexAppServerErrorLogPath(id);
|
|
97
|
+
}
|
|
98
|
+
export function serverLogPath() {
|
|
99
|
+
return join(logsRoot(), 'dreamux-server.log');
|
|
100
|
+
}
|
|
101
|
+
export function codexAppServerLogDir() {
|
|
102
|
+
return join(logsRoot(), 'codex-app-server');
|
|
103
|
+
}
|
|
104
|
+
export function feishuChannelLogDir() {
|
|
105
|
+
return join(logsRoot(), 'feishu-channel');
|
|
106
|
+
}
|
|
107
|
+
export function dispatcherCodexAppServerLogPath(id) {
|
|
108
|
+
return join(codexAppServerLogDir(), `${dispatcherPathSegment(id)}.log`);
|
|
109
|
+
}
|
|
110
|
+
export function dispatcherCodexAppServerErrorLogPath(id) {
|
|
111
|
+
return join(codexAppServerLogDir(), `${dispatcherPathSegment(id)}.stderr.log`);
|
|
112
|
+
}
|
|
113
|
+
export function dispatcherStatusPath(id) {
|
|
114
|
+
return join(dispatcherDir(id), 'status.json');
|
|
115
|
+
}
|
|
116
|
+
export function dispatcherAccessPath(id) {
|
|
117
|
+
return join(dispatcherDir(id), 'access.json');
|
|
118
|
+
}
|
|
119
|
+
export function unixSocketPathFitsBudget(path) {
|
|
120
|
+
return Buffer.byteLength(path, 'utf8') <= DREAMUX_UNIX_SOCKET_PATH_MAX_BYTES;
|
|
121
|
+
}
|
|
122
|
+
export function assertUnixSocketPathBudget(path, label) {
|
|
123
|
+
if (unixSocketPathFitsBudget(path))
|
|
124
|
+
return path;
|
|
125
|
+
const bytes = Buffer.byteLength(path, 'utf8');
|
|
126
|
+
throw new Error(`${label} is too long for Unix sockets (${bytes} bytes > ${DREAMUX_UNIX_SOCKET_PATH_MAX_BYTES} safe bytes): ${path}`);
|
|
127
|
+
}
|
|
128
|
+
export function dispatcherPathSegment(id) {
|
|
129
|
+
return validateDispatcherId(id);
|
|
96
130
|
}
|
|
97
131
|
//# sourceMappingURL=paths.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/runtime/paths.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/runtime/paths.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/secrets.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
export function resolveBotSecret(ref, config) {
|
|
2
2
|
if (ref.startsWith('config:')) {
|
|
3
3
|
const dispatcherId = ref.slice('config:'.length);
|
|
4
|
-
const
|
|
5
|
-
if (
|
|
4
|
+
const dispatcher = config.dispatchers.find((item) => item.id === dispatcherId);
|
|
5
|
+
if (dispatcher === undefined ||
|
|
6
|
+
dispatcher.feishu.app_secret.trim() === '') {
|
|
6
7
|
throw new Error(`missing Feishu app_secret in dreamux config for bot_secret_ref=${ref}`);
|
|
7
8
|
}
|
|
8
|
-
return
|
|
9
|
+
return dispatcher.feishu.app_secret;
|
|
9
10
|
}
|
|
10
11
|
if (ref.startsWith('env:')) {
|
|
11
12
|
const varName = ref.slice('env:'.length);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/runtime/secrets.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,MAAqB;IACjE,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/runtime/secrets.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,MAAqB;IACjE,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC;QAC/E,IACE,UAAU,KAAK,SAAS;YACxB,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,EAC1C,CAAC;YACD,MAAM,IAAI,KAAK,CACb,kEAAkE,GAAG,EAAE,CACxE,CAAC;QACJ,CAAC;QACD,OAAO,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;IACtC,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,uBAAuB,OAAO,8CAA8C,GAAG,GAAG,CACnF,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,KAAK,CACb,sCAAsC,GAAG,8BAA8B,CACxE,CAAC;AACJ,CAAC"}
|