@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.
Files changed (80) hide show
  1. package/README.md +155 -160
  2. package/bin/dreamux +2 -1
  3. package/bin/tm +30 -0
  4. package/dist/admin/client.js +98 -0
  5. package/dist/admin/client.js.map +1 -0
  6. package/dist/admin/methods.js +83 -38
  7. package/dist/admin/methods.js.map +1 -1
  8. package/dist/admin/socket.js +2 -2
  9. package/dist/admin/socket.js.map +1 -1
  10. package/dist/channel/feishu-gate.js +187 -18
  11. package/dist/channel/feishu-gate.js.map +1 -1
  12. package/dist/channel/feishu-message.js +92 -0
  13. package/dist/channel/feishu-message.js.map +1 -0
  14. package/dist/cli/doctor.js +242 -62
  15. package/dist/cli/doctor.js.map +1 -1
  16. package/dist/cli/dreamux.js +33 -51
  17. package/dist/cli/dreamux.js.map +1 -1
  18. package/dist/cli/server-ctl.js +6 -8
  19. package/dist/cli/server-ctl.js.map +1 -1
  20. package/dist/cli/server.js +22 -32
  21. package/dist/cli/server.js.map +1 -1
  22. package/dist/codex/events.js +3 -2
  23. package/dist/codex/events.js.map +1 -1
  24. package/dist/codex/mcp-config.js +24 -0
  25. package/dist/codex/mcp-config.js.map +1 -0
  26. package/dist/codex/supervisor.js +16 -0
  27. package/dist/codex/supervisor.js.map +1 -1
  28. package/dist/dispatcher/approval.js +2 -3
  29. package/dist/dispatcher/approval.js.map +1 -1
  30. package/dist/dispatcher/runtime.js +193 -141
  31. package/dist/dispatcher/runtime.js.map +1 -1
  32. package/dist/dispatcher/turn-manager.js +78 -97
  33. package/dist/dispatcher/turn-manager.js.map +1 -1
  34. package/dist/feishu/bot.js +71 -9
  35. package/dist/feishu/bot.js.map +1 -1
  36. package/dist/mcp/feishu-mcp.js +269 -0
  37. package/dist/mcp/feishu-mcp.js.map +1 -0
  38. package/dist/onboard/commands.js +10 -6
  39. package/dist/onboard/commands.js.map +1 -1
  40. package/dist/onboard/config-files.js +52 -22
  41. package/dist/onboard/config-files.js.map +1 -1
  42. package/dist/onboard/dispatcher-skill.js +18 -0
  43. package/dist/onboard/dispatcher-skill.js.map +1 -0
  44. package/dist/onboard/run.js +36 -52
  45. package/dist/onboard/run.js.map +1 -1
  46. package/dist/onboard/service.js +106 -9
  47. package/dist/onboard/service.js.map +1 -1
  48. package/dist/onboard/uninstall.js +47 -13
  49. package/dist/onboard/uninstall.js.map +1 -1
  50. package/dist/onboard/wizard.js +3 -27
  51. package/dist/onboard/wizard.js.map +1 -1
  52. package/dist/runtime/config.js +158 -64
  53. package/dist/runtime/config.js.map +1 -1
  54. package/dist/runtime/dispatcher-codex-home.js +14 -51
  55. package/dist/runtime/dispatcher-codex-home.js.map +1 -1
  56. package/dist/runtime/dispatcher-id.js +9 -0
  57. package/dist/runtime/dispatcher-id.js.map +1 -0
  58. package/dist/runtime/dispatcher-store.js +202 -0
  59. package/dist/runtime/dispatcher-store.js.map +1 -0
  60. package/dist/runtime/package-bin.js +41 -0
  61. package/dist/runtime/package-bin.js.map +1 -0
  62. package/dist/runtime/paths.js +82 -48
  63. package/dist/runtime/paths.js.map +1 -1
  64. package/dist/runtime/secrets.js +4 -3
  65. package/dist/runtime/secrets.js.map +1 -1
  66. package/dist/server.js +110 -36
  67. package/dist/server.js.map +1 -1
  68. package/package.json +6 -6
  69. package/skills/dispatcher/SKILL.md +107 -0
  70. package/db/migrations/0001_init.sql +0 -49
  71. package/dist/channel/outbound.js +0 -12
  72. package/dist/channel/outbound.js.map +0 -1
  73. package/dist/db/repository.js +0 -223
  74. package/dist/db/repository.js.map +0 -1
  75. package/dist/db/schema.js +0 -29
  76. package/dist/db/schema.js.map +0 -1
  77. package/dist/db/types.js +0 -2
  78. package/dist/db/types.js.map +0 -1
  79. package/dist/onboard/plugins.js +0 -202
  80. package/dist/onboard/plugins.js.map +0 -1
@@ -6,27 +6,27 @@
6
6
  * - CodexWsClient (WS connection)
7
7
  * - thread_id (lazily created via thread/start or resumed)
8
8
  * - TurnManager (FIFO worker for this dispatcher)
9
- * - approval handler bound to the current "source chat" for hints
10
9
  *
11
10
  * Lifecycle: declared → starting → ready → (degraded) → stopping → stopped.
12
11
  *
13
- * Issue #2 §"崩溃与异常恢复":
14
- * - On startup, mark stale `running` rows as `unknown` before opening
15
- * inbound — at-most-once.
12
+ * Current MVP:
13
+ * - accepted inbound work is process-local and is dropped on restart;
16
14
  * - thread/resume failure does not degrade the whole dispatcher; we
17
15
  * start a fresh thread, record the lost one in last_lost_thread_id,
18
16
  * and post a visible warning to the next source chat.
19
17
  */
20
18
  import { mkdirSync } from 'node:fs';
21
19
  import { dirname } from 'node:path';
22
- import { CodexProcess } from '../codex/supervisor.js';
20
+ import { CodexProcess, } from '../codex/supervisor.js';
23
21
  import { CodexWsClient } from '../codex/rpc.js';
24
22
  import { performInitializeHandshake } from '../codex/handshake.js';
25
23
  import { TurnManager } from './turn-manager.js';
26
24
  import { createFailFastApprovalHandler } from './approval.js';
27
25
  import { dispatcherCodexCwd, dispatcherSocketPath, dispatcherStderrLog, dispatcherStdoutLog, } from '../runtime/paths.js';
28
26
  import { dispatcherCodexHomeDoctorContext, } from '../runtime/dispatcher-codex-home.js';
29
- import { outboundTargetForInbound } from '../channel/outbound.js';
27
+ import { dispatcherProcessEnv } from '../runtime/package-bin.js';
28
+ const DEFAULT_RESTART_BACKOFF_BASE_MS = 1000;
29
+ const DEFAULT_RESTART_BACKOFF_MAX_MS = 30_000;
30
30
  export class DispatcherRuntime {
31
31
  row;
32
32
  deps;
@@ -34,9 +34,12 @@ export class DispatcherRuntime {
34
34
  client = null;
35
35
  turnManager = null;
36
36
  threadId = null;
37
- currentInboundChatId = null;
38
37
  status = 'declared';
39
38
  log;
39
+ stopping = false;
40
+ restarting = false;
41
+ restartAttempts = 0;
42
+ restartTimer = null;
40
43
  constructor(row, deps) {
41
44
  this.row = row;
42
45
  this.deps = deps;
@@ -55,107 +58,29 @@ export class DispatcherRuntime {
55
58
  getStatus() {
56
59
  return this.status;
57
60
  }
58
- /** Called by Feishu inbound right before enqueuing into inbound_buffer. */
59
- setCurrentInboundChat(chatId) {
60
- this.currentInboundChatId = chatId;
61
- }
62
61
  getThreadId() {
63
62
  return this.threadId;
64
63
  }
65
64
  /**
66
65
  * Bring the dispatcher up. Order:
67
- * 1. crash recovery sweep on inbound_buffer (running → unknown)
68
- * 2. spawn codex app-server child
69
- * 3. open WS client
70
- * 4. install fail-fast approval handler
71
- * 5. thread/start (new) or thread/resume (existing)
72
- * 6. install turn manager + retry pending outbound
73
- * 7. status = ready
66
+ * 1. spawn codex app-server child
67
+ * 2. open WS client
68
+ * 3. install fail-fast approval handler
69
+ * 4. thread/start (new) or thread/resume (existing)
70
+ * 5. install turn manager
71
+ * 6. status = ready
74
72
  */
75
73
  async start() {
74
+ this.stopping = false;
75
+ this.restarting = false;
76
+ this.clearRestartTimer();
76
77
  this.setStatus('starting');
77
78
  this.deps.dispatchers.setStatus(this.dispatcherId, 'starting', {
78
79
  last_started_at: Date.now(),
79
80
  });
80
81
  try {
81
- await this.recoverInboundOnStartup();
82
- const cwd = this.row.codex_cwd ?? dispatcherCodexCwd(this.dispatcherId);
83
- const socketPath = dispatcherSocketPath(this.dispatcherId);
84
- const extraArgs = this.deps.resolveExtraArgs?.(this.row) ?? [];
85
- if (this.deps.codexHomeDoctor !== undefined) {
86
- await this.deps.codexHomeDoctor(dispatcherCodexHomeDoctorContext(this.dispatcherId, {
87
- codexCliArgs: extraArgs,
88
- }));
89
- }
90
- const factory = this.deps.codexProcessFactory ?? ((o) => new CodexProcess(o));
91
- this.process = factory({
92
- socketPath,
93
- cwd,
94
- stdoutLogPath: dispatcherStdoutLog(this.dispatcherId),
95
- stderrLogPath: dispatcherStderrLog(this.dispatcherId),
96
- binPath: this.deps.codexBinPath,
97
- extraArgs,
98
- env: { ...process.env },
99
- });
100
- mkdirSync(dirname(socketPath), { recursive: true });
101
- await this.process.start();
102
- const clientFactory = this.deps.codexClientFactory ?? ((sock) => new CodexWsClient({ socketPath: sock }));
103
- this.client = clientFactory(socketPath);
104
- await this.client.ready();
105
- const approvalHandler = createFailFastApprovalHandler({
106
- onReject: async (req) => {
107
- // Best-effort hint to the user, only if we know who is asking.
108
- const chatId = this.currentInboundChatId;
109
- if (chatId === null)
110
- return;
111
- try {
112
- await this.deps.outbound.send({ conversationId: chatId }, `Codex 请求了一次审批(${req.method}),但当前 dispatcher 不支持审批 —— 本轮将失败。`);
113
- }
114
- catch {
115
- /* nothing useful to do */
116
- }
117
- },
118
- });
119
- this.client.setServerRequestHandler(approvalHandler);
120
- // codex 0.134+ LSP-style handshake — must precede thread/start or
121
- // any other RPC, otherwise codex answers everything with
122
- // `Not initialized` (see src/codex/handshake.ts).
123
- const initResponse = await performInitializeHandshake(this.client, {
124
- ...(this.deps.handshakeTimeoutMs !== undefined
125
- ? { timeoutMs: this.deps.handshakeTimeoutMs }
126
- : {}),
127
- });
128
- this.log('info', `codex initialized: ${initResponse.userAgent} (home=${initResponse.codexHome}, ${initResponse.platformOs})`);
129
- await this.resolveThread();
130
- this.turnManager = new TurnManager({
131
- dispatcherId: this.dispatcherId,
132
- inbound: this.deps.inbound,
133
- getThreadId: () => this.threadId,
134
- client: this.client,
135
- outbound: this.deps.outbound,
136
- log: this.log,
137
- ...(this.deps.outboundRetries !== undefined
138
- ? { outboundRetries: this.deps.outboundRetries }
139
- : {}),
140
- ...(this.deps.outboundRetryDelayMs !== undefined
141
- ? { outboundRetryDelayMs: this.deps.outboundRetryDelayMs }
142
- : {}),
143
- });
144
- await this.turnManager.retryPendingOutbound();
145
- this.setStatus('ready');
146
- this.deps.dispatchers.setStatus(this.dispatcherId, 'ready', {
147
- last_ready_at: Date.now(),
148
- last_error: null,
149
- });
150
- // Issue #2 + PR #3 review #1: the durable inbound buffer's contract
151
- // says nothing is dropped across a server crash. retryPendingOutbound
152
- // covers awaiting_outbound / outbound_failed rows; recoverInboundOnStartup
153
- // covers running → unknown. But rows persisted in 'queued' before the
154
- // crash are only drained when notify() is invoked, and at startup no
155
- // new inbound has arrived yet. Kick the worker once so any
156
- // already-queued backlog drains immediately instead of stalling until
157
- // the next live message lands.
158
- this.turnManager.notify();
82
+ await this.startCodexRuntime();
83
+ this.markReady();
159
84
  }
160
85
  catch (err) {
161
86
  const msg = err instanceof Error ? err.message : String(err);
@@ -168,10 +93,70 @@ export class DispatcherRuntime {
168
93
  throw err;
169
94
  }
170
95
  }
96
+ async startCodexRuntime() {
97
+ const cwd = this.row.codex_cwd ?? dispatcherCodexCwd(this.dispatcherId);
98
+ const socketPath = dispatcherSocketPath(this.dispatcherId);
99
+ const extraArgs = this.deps.resolveExtraArgs?.(this.row) ?? [];
100
+ if (this.deps.codexHomeDoctor !== undefined) {
101
+ await this.deps.codexHomeDoctor(dispatcherCodexHomeDoctorContext(this.dispatcherId, {
102
+ codexCliArgs: extraArgs,
103
+ dispatcherCwd: cwd,
104
+ }));
105
+ }
106
+ const factory = this.deps.codexProcessFactory ?? ((o) => new CodexProcess(o));
107
+ const process = factory({
108
+ socketPath,
109
+ cwd,
110
+ stdoutLogPath: dispatcherStdoutLog(this.dispatcherId),
111
+ stderrLogPath: dispatcherStderrLog(this.dispatcherId),
112
+ binPath: this.deps.codexBinPath,
113
+ extraArgs,
114
+ env: dispatcherProcessEnv(globalThis.process.env, this.deps.extraEnv ?? {}),
115
+ });
116
+ this.process = process;
117
+ process.onExit((exit) => {
118
+ if (this.process !== process)
119
+ return;
120
+ this.handleChildExit(exit);
121
+ });
122
+ mkdirSync(dirname(socketPath), { recursive: true });
123
+ await process.start();
124
+ const clientFactory = this.deps.codexClientFactory ?? ((sock) => new CodexWsClient({ socketPath: sock }));
125
+ const client = clientFactory(socketPath);
126
+ this.client = client;
127
+ client.onClose((reason) => {
128
+ if (this.client !== client)
129
+ return;
130
+ this.handleClientClose(reason);
131
+ });
132
+ await client.ready();
133
+ const approvalHandler = createFailFastApprovalHandler({
134
+ onReject: async (req) => {
135
+ this.log('warn', `rejected Codex approval request '${req.method}'; Feishu outbound is MCP reply-only`);
136
+ },
137
+ });
138
+ this.client.setServerRequestHandler(approvalHandler);
139
+ // codex 0.134+ LSP-style handshake — must precede thread/start or
140
+ // any other RPC, otherwise codex answers everything with
141
+ // `Not initialized` (see src/codex/handshake.ts).
142
+ const initResponse = await performInitializeHandshake(this.client, {
143
+ ...(this.deps.handshakeTimeoutMs !== undefined
144
+ ? { timeoutMs: this.deps.handshakeTimeoutMs }
145
+ : {}),
146
+ });
147
+ this.log('info', `codex initialized: ${initResponse.userAgent} (home=${initResponse.codexHome}, ${initResponse.platformOs})`);
148
+ await this.resolveThread();
149
+ this.turnManager = new TurnManager({
150
+ dispatcherId: this.dispatcherId,
151
+ getThreadId: () => this.threadId,
152
+ client: this.client,
153
+ log: this.log,
154
+ });
155
+ }
171
156
  async resolveThread() {
172
157
  if (this.client === null)
173
158
  throw new Error('client not initialized');
174
- const existing = this.row.thread_id;
159
+ const existing = this.threadId ?? this.row.thread_id;
175
160
  if (existing === null) {
176
161
  // Fresh thread.
177
162
  const res = await this.client.request('thread/start', {});
@@ -200,68 +185,135 @@ export class DispatcherRuntime {
200
185
  }
201
186
  }
202
187
  /**
203
- * Drain any inbound message arriving for this dispatcher. Called by the
204
- * Feishu inbound layer. Returns the assigned inbound row id, or null if
205
- * the message was a duplicate.
188
+ * Queue any accepted inbound message arriving for this dispatcher. Called by
189
+ * the Feishu inbound layer. Returns false if this process already saw the
190
+ * message_id.
206
191
  */
207
192
  enqueueInbound(input) {
208
- const row = this.deps.inbound.enqueue({
209
- dispatcher_id: this.dispatcherId,
210
- ...input,
211
- });
212
- if (row === null)
213
- return null;
214
- this.setCurrentInboundChat(input.source_chat_id);
215
- this.turnManager?.notify();
216
- return row.id;
217
- }
218
- async recoverInboundOnStartup() {
219
- const stale = this.deps.inbound.markRunningAsUnknown(this.dispatcherId);
220
- for (const row of stale) {
221
- this.log('warn', `inbound ${row.id} was 'running' at restart — marked unknown (at-most-once); chat=${row.source_chat_id}`);
222
- try {
223
- await this.deps.outbound.send(outboundTargetForInbound(row), `上一次的执行结果未知(server 重启时正在进行)。请确认是否需要重新发送:\n> ${row.parsed_text.slice(0, 200)}`);
224
- }
225
- catch (err) {
226
- this.log('warn', `failed to notify chat about unknown inbound`, err);
227
- }
228
- }
193
+ if (this.turnManager === null)
194
+ return false;
195
+ return this.turnManager.enqueue(input);
229
196
  }
230
197
  /** Graceful stop: stop accepting work, reap codex child. */
231
198
  async stop() {
199
+ this.stopping = true;
200
+ this.clearRestartTimer();
232
201
  this.setStatus('stopping');
233
202
  this.deps.dispatchers.setStatus(this.dispatcherId, 'stopping');
234
- if (this.turnManager !== null)
235
- await this.turnManager.stop();
236
- if (this.client !== null) {
237
- try {
238
- this.client.close();
239
- }
240
- catch {
241
- /* best effort */
242
- }
243
- }
244
- if (this.process !== null) {
245
- await this.process.reap();
246
- }
203
+ await this.teardownCodexRuntime();
247
204
  this.setStatus('stopped');
248
205
  this.deps.dispatchers.setStatus(this.dispatcherId, 'stopped');
249
206
  }
250
207
  async cleanupOnFailure() {
251
- if (this.client !== null) {
208
+ this.clearRestartTimer();
209
+ const wasStopping = this.stopping;
210
+ this.stopping = true;
211
+ try {
212
+ await this.teardownCodexRuntime();
213
+ }
214
+ finally {
215
+ this.stopping = wasStopping;
216
+ }
217
+ }
218
+ async teardownCodexRuntime() {
219
+ const turnManager = this.turnManager;
220
+ this.turnManager = null;
221
+ if (turnManager !== null)
222
+ await turnManager.stop();
223
+ const client = this.client;
224
+ this.client = null;
225
+ if (client !== null) {
252
226
  try {
253
- this.client.close();
227
+ client.close();
254
228
  }
255
229
  catch {
256
230
  /* */
257
231
  }
258
- this.client = null;
259
232
  }
260
- if (this.process !== null) {
261
- await this.process.reap();
262
- this.process = null;
233
+ const process = this.process;
234
+ this.process = null;
235
+ if (process !== null) {
236
+ await process.reap();
263
237
  }
264
- this.turnManager = null;
238
+ }
239
+ handleChildExit(exit) {
240
+ const details = exit.signal !== null ? `signal=${exit.signal}` : `code=${exit.code ?? 'null'}`;
241
+ this.scheduleRestart(`codex app-server child exited (${details})`);
242
+ }
243
+ handleClientClose(reason) {
244
+ this.scheduleRestart(`codex app-server websocket closed: ${reason.message}`);
245
+ }
246
+ scheduleRestart(reason) {
247
+ if (this.stopping || this.restartTimer !== null || this.restarting)
248
+ return;
249
+ const attempt = this.restartAttempts + 1;
250
+ this.restartAttempts = attempt;
251
+ const delay = this.restartDelayMs(attempt);
252
+ this.log('warn', `${reason}; restarting in ${delay}ms`);
253
+ this.setStatus('degraded');
254
+ this.deps.dispatchers.setStatus(this.dispatcherId, 'degraded', {
255
+ last_error: reason,
256
+ });
257
+ this.restartTimer = setTimeout(() => {
258
+ this.restartTimer = null;
259
+ void this.restartCodexRuntime(reason);
260
+ }, delay);
261
+ }
262
+ async restartCodexRuntime(reason) {
263
+ if (this.stopping)
264
+ return;
265
+ this.restarting = true;
266
+ let retryReason = null;
267
+ this.setStatus('starting');
268
+ this.deps.dispatchers.setStatus(this.dispatcherId, 'starting', {
269
+ last_started_at: Date.now(),
270
+ });
271
+ try {
272
+ await this.teardownCodexRuntime();
273
+ if (this.stopping)
274
+ return;
275
+ await this.startCodexRuntime();
276
+ if (this.stopping) {
277
+ await this.teardownCodexRuntime();
278
+ return;
279
+ }
280
+ this.restartAttempts = 0;
281
+ this.markReady();
282
+ this.log('info', `restarted codex app-server after: ${reason}`);
283
+ }
284
+ catch (err) {
285
+ const msg = err instanceof Error ? err.message : String(err);
286
+ this.log('error', `restart failed: ${msg}`, err);
287
+ this.setStatus('degraded');
288
+ this.deps.dispatchers.setStatus(this.dispatcherId, 'degraded', {
289
+ last_error: msg,
290
+ });
291
+ await this.teardownCodexRuntime();
292
+ retryReason = `codex app-server restart failed: ${msg}`;
293
+ }
294
+ finally {
295
+ this.restarting = false;
296
+ }
297
+ if (retryReason !== null)
298
+ this.scheduleRestart(retryReason);
299
+ }
300
+ restartDelayMs(attempt) {
301
+ const base = Math.max(0, this.deps.restartBackoffBaseMs ?? DEFAULT_RESTART_BACKOFF_BASE_MS);
302
+ const max = Math.max(base, this.deps.restartBackoffMaxMs ?? DEFAULT_RESTART_BACKOFF_MAX_MS);
303
+ return Math.min(max, base * 2 ** Math.max(0, attempt - 1));
304
+ }
305
+ clearRestartTimer() {
306
+ if (this.restartTimer === null)
307
+ return;
308
+ clearTimeout(this.restartTimer);
309
+ this.restartTimer = null;
310
+ }
311
+ markReady() {
312
+ this.setStatus('ready');
313
+ this.deps.dispatchers.setStatus(this.dispatcherId, 'ready', {
314
+ last_ready_at: Date.now(),
315
+ last_error: null,
316
+ });
265
317
  }
266
318
  setStatus(s) {
267
319
  this.status = s;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/dispatcher/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/dispatcher/runtime.ts"],"names":[],"mappings":"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"}