@excitedjs/dreamux 0.1.2 → 0.1.4
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 +25 -29
- package/bin/dreamux +3 -2
- package/dist/admin/socket.js +1 -1
- package/dist/admin/socket.js.map +1 -1
- package/dist/cli/doctor.js +273 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/dreamux.js +257 -78
- package/dist/cli/dreamux.js.map +1 -1
- package/dist/cli/server-ctl.js +15 -13
- package/dist/cli/server-ctl.js.map +1 -1
- package/dist/cli/server.js +7 -7
- package/dist/codex/handshake.js +1 -1
- package/dist/codex/handshake.js.map +1 -1
- package/dist/db/repository.js +16 -0
- package/dist/db/repository.js.map +1 -1
- package/dist/dispatcher/runtime.js +8 -1
- package/dist/dispatcher/runtime.js.map +1 -1
- package/dist/feishu/bot.js +3 -3
- package/dist/feishu/bot.js.map +1 -1
- package/dist/onboard/commands.js +34 -0
- package/dist/onboard/commands.js.map +1 -0
- package/dist/onboard/config-files.js +113 -0
- package/dist/onboard/config-files.js.map +1 -0
- package/dist/onboard/ledger.js +113 -0
- package/dist/onboard/ledger.js.map +1 -0
- package/dist/onboard/plugins.js +202 -0
- package/dist/onboard/plugins.js.map +1 -0
- package/dist/onboard/run.js +150 -0
- package/dist/onboard/run.js.map +1 -0
- package/dist/onboard/service.js +138 -0
- package/dist/onboard/service.js.map +1 -0
- package/dist/onboard/types.js +2 -0
- package/dist/onboard/types.js.map +1 -0
- package/dist/onboard/wizard.js +149 -0
- package/dist/onboard/wizard.js.map +1 -0
- package/dist/runtime/config.js +14 -2
- package/dist/runtime/config.js.map +1 -1
- package/dist/runtime/dispatcher-codex-home.js +266 -0
- package/dist/runtime/dispatcher-codex-home.js.map +1 -0
- package/dist/runtime/paths.js +17 -2
- package/dist/runtime/paths.js.map +1 -1
- package/dist/server.js +1 -0
- package/dist/server.js.map +1 -1
- package/package.json +17 -15
- package/bin/server +0 -35
- package/bin/server-ctl +0 -28
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import { existsSync, readFileSync, readdirSync, statSync, } from 'node:fs';
|
|
2
|
+
import { basename, join, normalize, sep } from 'node:path';
|
|
3
|
+
import { parse as parseToml, TomlError } from 'smol-toml';
|
|
4
|
+
import { dispatcherAppServerControlDir, dispatcherCodexConfigPath, dispatcherCodexHome, dispatcherCodexPluginsDir, dispatcherSocketPath, } from './paths.js';
|
|
5
|
+
export const DISPATCHER_APP_SERVER_SOCKET_PATH_MAX_BYTES = 103;
|
|
6
|
+
export function dispatcherCodexHomeDoctorContext(dispatcherId, options = {}) {
|
|
7
|
+
return {
|
|
8
|
+
dispatcherId,
|
|
9
|
+
codexHome: dispatcherCodexHome(dispatcherId),
|
|
10
|
+
configPath: dispatcherCodexConfigPath(dispatcherId),
|
|
11
|
+
pluginsDir: dispatcherCodexPluginsDir(dispatcherId),
|
|
12
|
+
appServerControlDir: dispatcherAppServerControlDir(dispatcherId),
|
|
13
|
+
socketPath: dispatcherSocketPath(dispatcherId),
|
|
14
|
+
codexCliArgs: options.codexCliArgs ?? [],
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function validateDispatcherCodexHome(input, options = {}) {
|
|
18
|
+
const context = typeof input === 'string'
|
|
19
|
+
? dispatcherCodexHomeDoctorContext(input, {
|
|
20
|
+
codexCliArgs: options.codexCliArgs,
|
|
21
|
+
})
|
|
22
|
+
: {
|
|
23
|
+
...input,
|
|
24
|
+
codexCliArgs: options.codexCliArgs ?? input.codexCliArgs,
|
|
25
|
+
};
|
|
26
|
+
const errors = [];
|
|
27
|
+
const env = options.env ?? process.env;
|
|
28
|
+
let parsedConfig = null;
|
|
29
|
+
if (!existsSync(context.configPath)) {
|
|
30
|
+
errors.push(`missing dispatcher Codex config: ${context.configPath}`);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
try {
|
|
34
|
+
const parsed = parseToml(readFileSync(context.configPath, 'utf8'));
|
|
35
|
+
if (isRecord(parsed)) {
|
|
36
|
+
parsedConfig = parsed;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
errors.push(`dispatcher Codex config must be a TOML table: ${context.configPath}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
errors.push(formatTomlError(err, context.configPath));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (!existsSync(context.codexHome)) {
|
|
47
|
+
errors.push(`missing dispatcher CODEX_HOME directory: ${context.codexHome}`);
|
|
48
|
+
}
|
|
49
|
+
if (isTmpPath(context.socketPath)) {
|
|
50
|
+
errors.push(`dispatcher app-server socket must not be under /tmp: ${context.socketPath}`);
|
|
51
|
+
}
|
|
52
|
+
if (!socketPathFitsUnixLimit(context.socketPath)) {
|
|
53
|
+
const bytes = Buffer.byteLength(context.socketPath, 'utf8');
|
|
54
|
+
errors.push(`dispatcher app-server socket path is too long for Unix sockets (${bytes} bytes > ${DISPATCHER_APP_SERVER_SOCKET_PATH_MAX_BYTES} safe bytes): ${context.socketPath}`);
|
|
55
|
+
}
|
|
56
|
+
if (!codexmuxPluginExists(context.pluginsDir)) {
|
|
57
|
+
errors.push(`missing codexmux plugin under: ${context.pluginsDir}`);
|
|
58
|
+
}
|
|
59
|
+
if (parsedConfig !== null) {
|
|
60
|
+
const effectiveConfig = applyCliConfigOverrides(parsedConfig, context.codexCliArgs, errors);
|
|
61
|
+
if (!hasNetworkEnabledRuntime(effectiveConfig)) {
|
|
62
|
+
errors.push('dispatcher Codex runtime config must select a network-enabled sandbox/profile');
|
|
63
|
+
}
|
|
64
|
+
if (!hasModel(effectiveConfig)) {
|
|
65
|
+
errors.push(`dispatcher Codex config must define a model in: ${context.configPath}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (!hasAuth(context.codexHome, env)) {
|
|
69
|
+
errors.push(`missing dispatcher Codex auth state in ${context.codexHome} or a supported auth environment variable`);
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
ok: errors.length === 0,
|
|
73
|
+
errors,
|
|
74
|
+
context,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
export async function assertDispatcherCodexHomeReady(context) {
|
|
78
|
+
const result = validateDispatcherCodexHome(context);
|
|
79
|
+
if (result.ok)
|
|
80
|
+
return;
|
|
81
|
+
throw new Error(formatDispatcherCodexHomeErrors(result));
|
|
82
|
+
}
|
|
83
|
+
export function formatDispatcherCodexHomeErrors(result) {
|
|
84
|
+
const header = `dispatcher '${result.context.dispatcherId}' private CODEX_HOME is not ready`;
|
|
85
|
+
return [header, ...result.errors.map((e) => `- ${e}`)].join('\n');
|
|
86
|
+
}
|
|
87
|
+
function formatTomlError(err, file) {
|
|
88
|
+
if (err instanceof TomlError) {
|
|
89
|
+
const where = typeof err.line === 'number' && typeof err.column === 'number'
|
|
90
|
+
? `${file}:${err.line}:${err.column}`
|
|
91
|
+
: file;
|
|
92
|
+
return `dispatcher Codex config parse error at ${where}: ${err.message}`;
|
|
93
|
+
}
|
|
94
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
95
|
+
return `dispatcher Codex config parse error in ${file}: ${msg}`;
|
|
96
|
+
}
|
|
97
|
+
function codexmuxPluginExists(root) {
|
|
98
|
+
return hasPathSegment(root, 'codexmux', 5);
|
|
99
|
+
}
|
|
100
|
+
function hasPathSegment(root, segment, maxDepth) {
|
|
101
|
+
if (!existsSync(root))
|
|
102
|
+
return false;
|
|
103
|
+
const stack = [{ path: root, depth: 0 }];
|
|
104
|
+
while (stack.length > 0) {
|
|
105
|
+
const current = stack.pop();
|
|
106
|
+
if (current === undefined)
|
|
107
|
+
continue;
|
|
108
|
+
if (basename(current.path) === segment)
|
|
109
|
+
return true;
|
|
110
|
+
if (current.depth >= maxDepth)
|
|
111
|
+
continue;
|
|
112
|
+
let entries;
|
|
113
|
+
try {
|
|
114
|
+
entries = readdirSync(current.path);
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
for (const entry of entries) {
|
|
120
|
+
const child = join(current.path, entry);
|
|
121
|
+
try {
|
|
122
|
+
if (statSync(child).isDirectory()) {
|
|
123
|
+
stack.push({ path: child, depth: current.depth + 1 });
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
/* ignore transient filesystem races */
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
function hasNetworkEnabledRuntime(config) {
|
|
134
|
+
const sandboxMode = stringValue(config['sandbox_mode']);
|
|
135
|
+
if (sandboxMode === 'danger-full-access')
|
|
136
|
+
return true;
|
|
137
|
+
if (sandboxMode === 'workspace-write') {
|
|
138
|
+
const workspaceWrite = recordValue(config['sandbox_workspace_write']);
|
|
139
|
+
if (workspaceWrite !== null && boolValue(workspaceWrite['network_access']) === true) {
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
const profileName = stringValue(config['default_permissions']);
|
|
144
|
+
if (profileName === null)
|
|
145
|
+
return false;
|
|
146
|
+
const permissions = recordValue(config['permissions']);
|
|
147
|
+
if (permissions !== null) {
|
|
148
|
+
const profile = recordValue(permissions[profileName]);
|
|
149
|
+
if (profile !== null && profileAllowsNetwork(profile))
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
function profileAllowsNetwork(profile) {
|
|
155
|
+
if (stringValue(profile['sandbox_mode']) === 'danger-full-access')
|
|
156
|
+
return true;
|
|
157
|
+
const network = recordValue(profile['network']);
|
|
158
|
+
if (network !== null && boolValue(network['enabled']) === true)
|
|
159
|
+
return true;
|
|
160
|
+
const sandbox = recordValue(profile['sandbox_workspace_write']);
|
|
161
|
+
if (sandbox !== null && boolValue(sandbox['network_access']) === true)
|
|
162
|
+
return true;
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
function hasModel(config) {
|
|
166
|
+
const fromConfig = stringValue(config['model']);
|
|
167
|
+
return fromConfig !== null && fromConfig.trim() !== '';
|
|
168
|
+
}
|
|
169
|
+
function hasAuth(codexHome, env) {
|
|
170
|
+
if (existsSync(join(codexHome, 'auth.json')))
|
|
171
|
+
return true;
|
|
172
|
+
return ['OPENAI_API_KEY', 'CODEX_API_KEY', 'CODEX_ACCESS_TOKEN'].some((name) => {
|
|
173
|
+
const value = env[name];
|
|
174
|
+
return value !== undefined && value.trim() !== '';
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
function socketPathFitsUnixLimit(path) {
|
|
178
|
+
return (Buffer.byteLength(path, 'utf8') <=
|
|
179
|
+
DISPATCHER_APP_SERVER_SOCKET_PATH_MAX_BYTES);
|
|
180
|
+
}
|
|
181
|
+
function applyCliConfigOverrides(config, cliArgs, errors) {
|
|
182
|
+
const effective = cloneRecord(config);
|
|
183
|
+
for (let i = 0; i < cliArgs.length; i += 1) {
|
|
184
|
+
const arg = cliArgs[i];
|
|
185
|
+
if (arg === '-c' || arg === '--config') {
|
|
186
|
+
const next = cliArgs[i + 1];
|
|
187
|
+
if (next === undefined) {
|
|
188
|
+
errors.push(`Codex config override ${arg} is missing key=value`);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
applyConfigOverride(effective, next, errors);
|
|
192
|
+
i += 1;
|
|
193
|
+
}
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
if (arg.startsWith('--config=')) {
|
|
197
|
+
applyConfigOverride(effective, arg.slice('--config='.length), errors);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return effective;
|
|
201
|
+
}
|
|
202
|
+
function applyConfigOverride(config, raw, errors) {
|
|
203
|
+
const eq = raw.indexOf('=');
|
|
204
|
+
if (eq <= 0) {
|
|
205
|
+
errors.push(`Codex config override must be key=value: ${raw}`);
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
const key = raw.slice(0, eq).trim();
|
|
209
|
+
const value = parseCodexConfigValue(raw.slice(eq + 1).trim());
|
|
210
|
+
const parts = key.split('.').map((p) => p.trim()).filter((p) => p !== '');
|
|
211
|
+
if (parts.length === 0) {
|
|
212
|
+
errors.push(`Codex config override has an empty key: ${raw}`);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
let target = config;
|
|
216
|
+
for (const part of parts.slice(0, -1)) {
|
|
217
|
+
const existing = target[part];
|
|
218
|
+
if (!isRecord(existing)) {
|
|
219
|
+
target[part] = {};
|
|
220
|
+
}
|
|
221
|
+
target = target[part];
|
|
222
|
+
}
|
|
223
|
+
target[parts[parts.length - 1]] = value;
|
|
224
|
+
}
|
|
225
|
+
function parseCodexConfigValue(raw) {
|
|
226
|
+
try {
|
|
227
|
+
const parsed = parseToml(`value = ${raw}`);
|
|
228
|
+
if (isRecord(parsed))
|
|
229
|
+
return parsed['value'];
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
/* Codex treats non-TOML override values as literal strings. */
|
|
233
|
+
}
|
|
234
|
+
return raw;
|
|
235
|
+
}
|
|
236
|
+
function cloneRecord(record) {
|
|
237
|
+
const copy = {};
|
|
238
|
+
for (const [key, value] of Object.entries(record)) {
|
|
239
|
+
copy[key] = cloneValue(value);
|
|
240
|
+
}
|
|
241
|
+
return copy;
|
|
242
|
+
}
|
|
243
|
+
function cloneValue(value) {
|
|
244
|
+
if (Array.isArray(value))
|
|
245
|
+
return value.map(cloneValue);
|
|
246
|
+
if (isRecord(value))
|
|
247
|
+
return cloneRecord(value);
|
|
248
|
+
return value;
|
|
249
|
+
}
|
|
250
|
+
function isTmpPath(path) {
|
|
251
|
+
const normalized = normalize(path);
|
|
252
|
+
return normalized === '/tmp' || normalized.startsWith(`/tmp${sep}`);
|
|
253
|
+
}
|
|
254
|
+
function isRecord(value) {
|
|
255
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
256
|
+
}
|
|
257
|
+
function recordValue(value) {
|
|
258
|
+
return isRecord(value) ? value : null;
|
|
259
|
+
}
|
|
260
|
+
function stringValue(value) {
|
|
261
|
+
return typeof value === 'string' ? value : null;
|
|
262
|
+
}
|
|
263
|
+
function boolValue(value) {
|
|
264
|
+
return typeof value === 'boolean' ? value : null;
|
|
265
|
+
}
|
|
266
|
+
//# sourceMappingURL=dispatcher-codex-home.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatcher-codex-home.js","sourceRoot":"","sources":["../../src/runtime/dispatcher-codex-home.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/paths.js
CHANGED
|
@@ -8,8 +8,11 @@
|
|
|
8
8
|
* state.db SQLite database (dispatchers + inbound_buffer)
|
|
9
9
|
* admin.sock server-ctl admin Unix socket
|
|
10
10
|
* dispatchers/<id>/
|
|
11
|
+
* codex-home/ Private CODEX_HOME for the dispatcher app-server
|
|
12
|
+
* config.toml Minimal Codex config generated by onboard
|
|
13
|
+
* plugins/ Codex plugin cache, including codexmux
|
|
14
|
+
* app-server-control/ Codex app-server control sockets
|
|
11
15
|
* cwd/ Codex app-server cwd
|
|
12
|
-
* socket Codex Unix socket
|
|
13
16
|
* stdout.log Codex stdout
|
|
14
17
|
* stderr.log Codex stderr (load-bearing for debug)
|
|
15
18
|
*
|
|
@@ -65,8 +68,20 @@ export function dispatcherDir(id) {
|
|
|
65
68
|
export function dispatcherCodexCwd(id) {
|
|
66
69
|
return join(dispatcherDir(id), 'cwd');
|
|
67
70
|
}
|
|
71
|
+
export function dispatcherCodexHome(id) {
|
|
72
|
+
return join(dispatcherDir(id), 'codex-home');
|
|
73
|
+
}
|
|
74
|
+
export function dispatcherCodexConfigPath(id) {
|
|
75
|
+
return join(dispatcherCodexHome(id), 'config.toml');
|
|
76
|
+
}
|
|
77
|
+
export function dispatcherCodexPluginsDir(id) {
|
|
78
|
+
return join(dispatcherCodexHome(id), 'plugins');
|
|
79
|
+
}
|
|
80
|
+
export function dispatcherAppServerControlDir(id) {
|
|
81
|
+
return join(dispatcherCodexHome(id), 'app-server-control');
|
|
82
|
+
}
|
|
68
83
|
export function dispatcherSocketPath(id) {
|
|
69
|
-
return join(
|
|
84
|
+
return join(dispatcherAppServerControlDir(id), 'as.sock');
|
|
70
85
|
}
|
|
71
86
|
export function dispatcherStdoutLog(id) {
|
|
72
87
|
return join(dispatcherDir(id), 'stdout.log');
|
|
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EACL,iBAAiB,EACjB,UAAU,GAEX,MAAM,aAAa,CAAC;AAErB,IAAI,aAAa,GAAkB,iBAAiB,CAAC;AAErD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAqB;IACpD,aAAa,GAAG,MAAM,CAAC;AACzB,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,kBAAkB;IAChC,aAAa,GAAG,iBAAiB,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,OAAO,CAAC;IAC5D,OAAO,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACvD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,OAAO,CAAC;IAC5D,IAAI,aAAa,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;QACxC,OAAO,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,YAAY,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAU;IACtC,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAAU;IAC5C,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,EAAU;IAClD,OAAO,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,EAAU;IAClD,OAAO,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,EAAU;IACtD,OAAO,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,EAAE,oBAAoB,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EAAU;IAC7C,OAAO,IAAI,CAAC,6BAA6B,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAAU;IAC5C,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAAU;IAC5C,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;AAC/C,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -131,6 +131,7 @@ export class Server {
|
|
|
131
131
|
codexBinPath: this.resolveCodexBinPath(),
|
|
132
132
|
codexProcessFactory: this.opts.codexProcessFactory,
|
|
133
133
|
codexClientFactory: this.opts.codexClientFactory,
|
|
134
|
+
codexHomeDoctor: this.opts.codexHomeDoctor,
|
|
134
135
|
resolveExtraArgs: () => codexArgsToCli(codexArgs),
|
|
135
136
|
handshakeTimeoutMs: cfg.codex.initialize_timeout_ms,
|
|
136
137
|
outboundRetries: cfg.outbound.retries,
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,EACL,6BAA6B,EAC7B,eAAe,GAGhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAsB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@excitedjs/dreamux",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Codex-host server — single-session MVP. One node process hosts N dispatchers, each binding 1 Feishu bot + 1 Codex thread.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -14,9 +14,7 @@
|
|
|
14
14
|
"node": ">=22.7"
|
|
15
15
|
},
|
|
16
16
|
"bin": {
|
|
17
|
-
"dreamux": "./bin/dreamux"
|
|
18
|
-
"dreamux-server": "./bin/server",
|
|
19
|
-
"server-ctl": "./bin/server-ctl"
|
|
17
|
+
"dreamux": "./bin/dreamux"
|
|
20
18
|
},
|
|
21
19
|
"files": [
|
|
22
20
|
"bin",
|
|
@@ -25,25 +23,29 @@
|
|
|
25
23
|
"README.md",
|
|
26
24
|
"LICENSE"
|
|
27
25
|
],
|
|
28
|
-
"scripts": {
|
|
29
|
-
"build": "tsc -p tsconfig.json",
|
|
30
|
-
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
31
|
-
"test": "vitest run",
|
|
32
|
-
"test:watch": "vitest",
|
|
33
|
-
"clean": "rm -rf dist",
|
|
34
|
-
"prepublishOnly": "npm run build"
|
|
35
|
-
},
|
|
36
26
|
"dependencies": {
|
|
37
|
-
"@excitedjs/feishu-transport": "workspace:*",
|
|
38
27
|
"better-sqlite3": "^11.5.0",
|
|
39
28
|
"smol-toml": "^1.6.1",
|
|
40
|
-
"ws": "^8.18.0"
|
|
29
|
+
"ws": "^8.18.0",
|
|
30
|
+
"yargs": "^17.7.2",
|
|
31
|
+
"@clack/prompts": "^1.5.0",
|
|
32
|
+
"execa": "^9.6.1",
|
|
33
|
+
"plist": "^5.0.0",
|
|
34
|
+
"@excitedjs/feishu-transport": "0.0.2"
|
|
41
35
|
},
|
|
42
36
|
"devDependencies": {
|
|
43
37
|
"@types/better-sqlite3": "^7.6.12",
|
|
44
38
|
"@types/node": "^22.10.0",
|
|
45
39
|
"@types/ws": "^8.5.13",
|
|
40
|
+
"@types/yargs": "^17.0.35",
|
|
46
41
|
"typescript": "^5.7.0",
|
|
47
42
|
"vitest": "^2.1.0"
|
|
43
|
+
},
|
|
44
|
+
"scripts": {
|
|
45
|
+
"build": "tsc -p tsconfig.json",
|
|
46
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
47
|
+
"test": "vitest run",
|
|
48
|
+
"test:watch": "vitest",
|
|
49
|
+
"clean": "rm -rf dist"
|
|
48
50
|
}
|
|
49
|
-
}
|
|
51
|
+
}
|
package/bin/server
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Launcher for dreamux-server.
|
|
3
|
-
#
|
|
4
|
-
# Resolves its own location (following symlinks) so it works from any cwd
|
|
5
|
-
# AND when invoked via a symlink (e.g. `npm install -g` puts a symlink under
|
|
6
|
-
# the node bin dir). Runs the compiled dist output (built by `rush build` in a
|
|
7
|
-
# source checkout; already present in the published npm package).
|
|
8
|
-
set -eu
|
|
9
|
-
|
|
10
|
-
SOURCE="${BASH_SOURCE[0]}"
|
|
11
|
-
# Resolve symlinks until we find the real file. Handles both absolute and
|
|
12
|
-
# relative symlink targets. Bounded by a reasonable loop cap to detect cycles.
|
|
13
|
-
hop=0
|
|
14
|
-
while [ -L "$SOURCE" ]; do
|
|
15
|
-
hop=$((hop + 1))
|
|
16
|
-
if [ "$hop" -gt 40 ]; then
|
|
17
|
-
echo "dreamux-server: too many symlink hops resolving $SOURCE" >&2
|
|
18
|
-
exit 1
|
|
19
|
-
fi
|
|
20
|
-
TARGET="$(readlink "$SOURCE")"
|
|
21
|
-
if [ "${TARGET:0:1}" = "/" ]; then
|
|
22
|
-
SOURCE="$TARGET"
|
|
23
|
-
else
|
|
24
|
-
SOURCE="$(dirname -- "$SOURCE")/$TARGET"
|
|
25
|
-
fi
|
|
26
|
-
done
|
|
27
|
-
|
|
28
|
-
DIR="$(cd -- "$(dirname -- "$SOURCE")/.." &> /dev/null && pwd)"
|
|
29
|
-
TARGET="$DIR/dist/cli/server.js"
|
|
30
|
-
if [ ! -f "$TARGET" ]; then
|
|
31
|
-
echo "dreamux-server: $TARGET is missing." >&2
|
|
32
|
-
echo "Build it first from the repo root: node common/scripts/install-run-rush.js build (rush build)." >&2
|
|
33
|
-
exit 1
|
|
34
|
-
fi
|
|
35
|
-
exec node "$TARGET" "$@"
|
package/bin/server-ctl
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Launcher for server-ctl. See bin/server for resolution details.
|
|
3
|
-
set -eu
|
|
4
|
-
|
|
5
|
-
SOURCE="${BASH_SOURCE[0]}"
|
|
6
|
-
hop=0
|
|
7
|
-
while [ -L "$SOURCE" ]; do
|
|
8
|
-
hop=$((hop + 1))
|
|
9
|
-
if [ "$hop" -gt 40 ]; then
|
|
10
|
-
echo "server-ctl: too many symlink hops resolving $SOURCE" >&2
|
|
11
|
-
exit 1
|
|
12
|
-
fi
|
|
13
|
-
TARGET="$(readlink "$SOURCE")"
|
|
14
|
-
if [ "${TARGET:0:1}" = "/" ]; then
|
|
15
|
-
SOURCE="$TARGET"
|
|
16
|
-
else
|
|
17
|
-
SOURCE="$(dirname -- "$SOURCE")/$TARGET"
|
|
18
|
-
fi
|
|
19
|
-
done
|
|
20
|
-
|
|
21
|
-
DIR="$(cd -- "$(dirname -- "$SOURCE")/.." &> /dev/null && pwd)"
|
|
22
|
-
TARGET="$DIR/dist/cli/server-ctl.js"
|
|
23
|
-
if [ ! -f "$TARGET" ]; then
|
|
24
|
-
echo "server-ctl: $TARGET is missing." >&2
|
|
25
|
-
echo "Build it first from the repo root: node common/scripts/install-run-rush.js build (rush build)." >&2
|
|
26
|
-
exit 1
|
|
27
|
-
fi
|
|
28
|
-
exec node "$TARGET" "$@"
|