@excitedjs/dreamux 0.1.1 → 0.1.3

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 (58) hide show
  1. package/README.md +36 -46
  2. package/bin/dreamux +6 -4
  3. package/dist/admin/socket.js +1 -1
  4. package/dist/admin/socket.js.map +1 -1
  5. package/dist/channel/feishu-gate.js +27 -0
  6. package/dist/channel/feishu-gate.js.map +1 -0
  7. package/dist/channel/outbound.js +12 -0
  8. package/dist/channel/outbound.js.map +1 -0
  9. package/dist/cli/doctor.js +273 -0
  10. package/dist/cli/doctor.js.map +1 -0
  11. package/dist/cli/dreamux.js +257 -78
  12. package/dist/cli/dreamux.js.map +1 -1
  13. package/dist/cli/server-ctl.js +15 -13
  14. package/dist/cli/server-ctl.js.map +1 -1
  15. package/dist/cli/server.js +7 -7
  16. package/dist/codex/handshake.js +1 -1
  17. package/dist/codex/handshake.js.map +1 -1
  18. package/dist/db/repository.js +16 -0
  19. package/dist/db/repository.js.map +1 -1
  20. package/dist/dispatcher/runtime.js +11 -3
  21. package/dist/dispatcher/runtime.js.map +1 -1
  22. package/dist/dispatcher/turn-manager.js +10 -8
  23. package/dist/dispatcher/turn-manager.js.map +1 -1
  24. package/dist/feishu/bot.js +41 -22
  25. package/dist/feishu/bot.js.map +1 -1
  26. package/dist/onboard/commands.js +34 -0
  27. package/dist/onboard/commands.js.map +1 -0
  28. package/dist/onboard/config-files.js +113 -0
  29. package/dist/onboard/config-files.js.map +1 -0
  30. package/dist/onboard/ledger.js +113 -0
  31. package/dist/onboard/ledger.js.map +1 -0
  32. package/dist/onboard/plugins.js +202 -0
  33. package/dist/onboard/plugins.js.map +1 -0
  34. package/dist/onboard/run.js +150 -0
  35. package/dist/onboard/run.js.map +1 -0
  36. package/dist/onboard/service.js +138 -0
  37. package/dist/onboard/service.js.map +1 -0
  38. package/dist/onboard/types.js +2 -0
  39. package/dist/{feishu → onboard}/types.js.map +1 -1
  40. package/dist/onboard/wizard.js +146 -0
  41. package/dist/onboard/wizard.js.map +1 -0
  42. package/dist/runtime/codex-args.js +1 -1
  43. package/dist/runtime/config.js +16 -4
  44. package/dist/runtime/config.js.map +1 -1
  45. package/dist/runtime/dispatcher-codex-home.js +266 -0
  46. package/dist/runtime/dispatcher-codex-home.js.map +1 -0
  47. package/dist/runtime/paths.js +17 -2
  48. package/dist/runtime/paths.js.map +1 -1
  49. package/dist/server.js +14 -2
  50. package/dist/server.js.map +1 -1
  51. package/package.json +13 -5
  52. package/bin/server +0 -35
  53. package/bin/server-ctl +0 -28
  54. package/dist/feishu/content.js +0 -108
  55. package/dist/feishu/content.js.map +0 -1
  56. package/dist/feishu/render.js +0 -600
  57. package/dist/feishu/render.js.map +0 -1
  58. package/dist/feishu/types.js +0 -9
@@ -24,7 +24,9 @@ import { CodexWsClient } from '../codex/rpc.js';
24
24
  import { performInitializeHandshake } from '../codex/handshake.js';
25
25
  import { TurnManager } from './turn-manager.js';
26
26
  import { createFailFastApprovalHandler } from './approval.js';
27
- import { dispatcherCodexCwd, dispatcherStdoutLog, dispatcherStderrLog, dispatcherSocketPath } from '../runtime/paths.js';
27
+ import { dispatcherCodexCwd, dispatcherCodexHome, dispatcherSocketPath, dispatcherStderrLog, dispatcherStdoutLog, } from '../runtime/paths.js';
28
+ import { assertDispatcherCodexHomeReady, dispatcherCodexHomeDoctorContext, } from '../runtime/dispatcher-codex-home.js';
29
+ import { outboundTargetForInbound } from '../channel/outbound.js';
28
30
  export class DispatcherRuntime {
29
31
  row;
30
32
  deps;
@@ -78,8 +80,13 @@ export class DispatcherRuntime {
78
80
  try {
79
81
  await this.recoverInboundOnStartup();
80
82
  const cwd = this.row.codex_cwd ?? dispatcherCodexCwd(this.dispatcherId);
83
+ const codexHome = dispatcherCodexHome(this.dispatcherId);
81
84
  const socketPath = dispatcherSocketPath(this.dispatcherId);
82
85
  const extraArgs = this.deps.resolveExtraArgs?.(this.row) ?? [];
86
+ const doctor = this.deps.codexHomeDoctor ?? assertDispatcherCodexHomeReady;
87
+ await doctor(dispatcherCodexHomeDoctorContext(this.dispatcherId, {
88
+ codexCliArgs: extraArgs,
89
+ }));
83
90
  const factory = this.deps.codexProcessFactory ?? ((o) => new CodexProcess(o));
84
91
  this.process = factory({
85
92
  socketPath,
@@ -88,6 +95,7 @@ export class DispatcherRuntime {
88
95
  stderrLogPath: dispatcherStderrLog(this.dispatcherId),
89
96
  binPath: this.deps.codexBinPath,
90
97
  extraArgs,
98
+ env: { ...process.env, CODEX_HOME: codexHome },
91
99
  });
92
100
  mkdirSync(dirname(socketPath), { recursive: true });
93
101
  await this.process.start();
@@ -101,7 +109,7 @@ export class DispatcherRuntime {
101
109
  if (chatId === null)
102
110
  return;
103
111
  try {
104
- await this.deps.outbound.sendText(chatId, `Codex 请求了一次审批(${req.method}),但当前 dispatcher 不支持审批 —— 本轮将失败。`);
112
+ await this.deps.outbound.send({ conversationId: chatId }, `Codex 请求了一次审批(${req.method}),但当前 dispatcher 不支持审批 —— 本轮将失败。`);
105
113
  }
106
114
  catch {
107
115
  /* nothing useful to do */
@@ -212,7 +220,7 @@ export class DispatcherRuntime {
212
220
  for (const row of stale) {
213
221
  this.log('warn', `inbound ${row.id} was 'running' at restart — marked unknown (at-most-once); chat=${row.source_chat_id}`);
214
222
  try {
215
- await this.deps.outbound.sendText(row.source_chat_id, `上一次的执行结果未知(server 重启时正在进行)。请确认是否需要重新发送:\n> ${row.parsed_text.slice(0, 200)}`);
223
+ await this.deps.outbound.send(outboundTargetForInbound(row), `上一次的执行结果未知(server 重启时正在进行)。请确认是否需要重新发送:\n> ${row.parsed_text.slice(0, 200)}`);
216
224
  }
217
225
  catch (err) {
218
226
  this.log('warn', `failed to notify chat about unknown inbound`, err);
@@ -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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"}
@@ -19,6 +19,7 @@
19
19
  * outbound_failed → safe to retry the outbound
20
20
  */
21
21
  import { extractAssistantText, runTurn } from '../codex/events.js';
22
+ import { outboundTargetForInbound } from '../channel/outbound.js';
22
23
  export class TurnManager {
23
24
  opts;
24
25
  running = false;
@@ -108,7 +109,7 @@ export class TurnManager {
108
109
  this.opts.inbound.markFailed(row.id, msg);
109
110
  // Best-effort tell the user something went wrong.
110
111
  try {
111
- await this.opts.outbound.sendText(row.source_chat_id, `本次请求执行失败:${msg}`);
112
+ await this.opts.outbound.send(outboundTargetForInbound(row), `本次请求执行失败:${msg}`);
112
113
  }
113
114
  catch (sendErr) {
114
115
  this.log('warn', `error notification also failed`, sendErr);
@@ -116,15 +117,16 @@ export class TurnManager {
116
117
  return;
117
118
  }
118
119
  this.opts.inbound.markAwaitingOutbound(row.id, assistantText);
119
- await this.sendOutbound(row.id, row.source_chat_id, assistantText);
120
+ await this.sendOutbound(row, assistantText);
120
121
  }
121
122
  /** Send assistant text to feishu with bounded retry. */
122
- async sendOutbound(inboundId, chatId, text) {
123
+ async sendOutbound(row, text) {
123
124
  let lastError;
125
+ const target = outboundTargetForInbound(row);
124
126
  for (let attempt = 0; attempt <= this.outboundRetries; attempt++) {
125
127
  try {
126
- const ids = await this.opts.outbound.sendText(chatId, text);
127
- this.opts.inbound.markCompleted(inboundId, ids);
128
+ const ids = await this.opts.outbound.send(target, text);
129
+ this.opts.inbound.markCompleted(row.id, ids);
128
130
  return;
129
131
  }
130
132
  catch (err) {
@@ -135,8 +137,8 @@ export class TurnManager {
135
137
  }
136
138
  }
137
139
  const msg = lastError instanceof Error ? lastError.message : String(lastError);
138
- this.log('error', `outbound send failed for inbound ${inboundId}: ${msg}`);
139
- this.opts.inbound.markOutboundFailed(inboundId, msg);
140
+ this.log('error', `outbound send failed for inbound ${row.id}: ${msg}`);
141
+ this.opts.inbound.markOutboundFailed(row.id, msg);
140
142
  }
141
143
  /**
142
144
  * Retry rows previously left in awaiting_outbound / outbound_failed
@@ -152,7 +154,7 @@ export class TurnManager {
152
154
  this.opts.inbound.markFailed(row.id, 'awaiting_outbound row missing assistant_text');
153
155
  continue;
154
156
  }
155
- await this.sendOutbound(row.id, row.source_chat_id, row.assistant_text);
157
+ await this.sendOutbound(row, row.assistant_text);
156
158
  }
157
159
  }
158
160
  async stop() {
@@ -1 +1 @@
1
- {"version":3,"file":"turn-manager.js","sourceRoot":"","sources":["../../src/dispatcher/turn-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"turn-manager.js","sourceRoot":"","sources":["../../src/dispatcher/turn-manager.ts"],"names":[],"mappings":"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"}
@@ -10,14 +10,14 @@
10
10
  * each raw event with the core's `parseInbound`, and forwards a
11
11
  * `FeishuInboundEvent`. The route handler awaits `handler`, so the message is
12
12
  * durably enqueued before the SDK acks (the deferred-ACK invariant).
13
- * - `sendText(chatId, text)` delegates to the core's `send({ chatId }, text)`.
14
- * The per-card size guard and the multi-card split both live in the core now.
13
+ * - `send(target, text)` delegates to the core transport, preserving reply
14
+ * threading / @-back metadata from the durable inbound row.
15
15
  * - `botOpenId` surfaces the core transport's `selfId`.
16
16
  *
17
17
  * Tests inject a `FakeFeishuBot` via `createFakeFeishuBot()` instead of opening
18
18
  * a live connection.
19
19
  */
20
- import { createFeishuTransport, parseInbound, } from '@excitedjs/feishu-transport';
20
+ import { createFeishuTransport, narrowMetaFromEvent, parseInbound, toChannelInbound, } from '@excitedjs/feishu-transport';
21
21
  /** The Feishu event_type carrying inbound chat messages. */
22
22
  const IM_MESSAGE_EVENT_TYPE = 'im.message.receive_v1';
23
23
  export function createFeishuBot(opts) {
@@ -46,8 +46,8 @@ export function createFeishuBot(opts) {
46
46
  },
47
47
  });
48
48
  },
49
- async sendText(chatId, text) {
50
- const { messageIds } = await transport.send({ chatId }, text);
49
+ async send(target, text) {
50
+ const { messageIds } = await transport.send(target, text);
51
51
  return { messageIds };
52
52
  },
53
53
  close() {
@@ -55,11 +55,25 @@ export function createFeishuBot(opts) {
55
55
  },
56
56
  };
57
57
  }
58
+ export function channelOutboundToFeishuTarget(target) {
59
+ return {
60
+ chatId: target.conversationId,
61
+ ...(target.replyTo !== undefined
62
+ ? { replyToMessageId: target.replyTo }
63
+ : {}),
64
+ ...(target.mentionUsers !== undefined
65
+ ? { mentionUserIds: target.mentionUsers }
66
+ : {}),
67
+ ...(target.conversationKey !== undefined
68
+ ? { conversationKey: target.conversationKey }
69
+ : {}),
70
+ };
71
+ }
58
72
  /**
59
73
  * Reshape a raw `im.message.receive_v1` payload into a `FeishuInboundEvent`,
60
- * using the core's `parseInbound` for the content→text flattening (incl. the
61
- * `interactive`-card parse the old in-package copy had lost). Returns `null`
62
- * for a payload missing the message_id or chat_id that make it routable.
74
+ * using the core's `parseInbound` + `narrowMetaFromEvent` + `toChannelInbound`
75
+ * for content flattening and event-envelope metadata. Returns `null` for a
76
+ * payload missing the message_id or chat_id that make it routable.
63
77
  */
64
78
  function normalizeInboundEvent(raw) {
65
79
  if (!raw || typeof raw !== 'object')
@@ -67,41 +81,46 @@ function normalizeInboundEvent(raw) {
67
81
  const root = raw;
68
82
  const event = (root['event'] ?? root);
69
83
  const message = (event['message'] ?? {});
70
- const sender = (event['sender'] ?? {});
71
- const senderId = sender['sender_id']?.['open_id'] ?? '';
72
- const messageId = message['message_id'] ?? '';
73
- const chatId = message['chat_id'] ?? '';
74
- const chatType = message['chat_type'] ?? '';
75
84
  const messageType = message['message_type'] ?? '';
76
85
  const rawContent = message['content'] ?? '';
77
86
  const mentions = message['mentions'] ?? [];
78
- const createTime = message['create_time'] ?? '';
79
- if (messageId === '' || chatId === '')
80
- return null;
81
87
  const parsed = parseInbound({
82
88
  message_type: messageType,
83
89
  content: rawContent,
84
90
  mentions,
85
91
  });
92
+ const payload = toChannelInbound({
93
+ ...parsed,
94
+ meta: narrowMetaFromEvent(raw),
95
+ });
96
+ const messageId = payload.meta['message_id'] ?? '';
97
+ const chatId = payload.meta['chat_id'] ?? '';
98
+ const chatType = payload.meta['chat_type'] ?? '';
99
+ const senderId = payload.meta['sender_id'] ?? '';
100
+ const senderType = payload.meta['sender_type'] ?? '';
101
+ const createTime = payload.meta['create_time'] ?? '';
102
+ if (messageId === '' || chatId === '')
103
+ return null;
86
104
  return {
87
105
  messageId,
88
106
  chatId,
89
107
  chatType,
90
108
  senderId,
109
+ senderType,
91
110
  messageType,
92
111
  rawContent,
93
- parsedText: parsed.text,
112
+ parsedText: payload.text,
94
113
  mentions,
95
114
  createTime,
96
115
  raw,
97
116
  };
98
117
  }
99
- export function createFakeFeishuBot(appId = 'fake_bot') {
118
+ export function createFakeFeishuBot(appId = 'fake-bot') {
100
119
  const sent = [];
101
120
  let handler = null;
102
121
  let nextMessageId = 1;
103
122
  let sendError = null;
104
- const openId = `ou_${appId}`;
123
+ const openId = `fake-open-id-${appId}`;
105
124
  return {
106
125
  appId,
107
126
  get botOpenId() {
@@ -110,12 +129,12 @@ export function createFakeFeishuBot(appId = 'fake_bot') {
110
129
  async start(h) {
111
130
  handler = h;
112
131
  },
113
- async sendText(chatId, text) {
132
+ async send(target, text) {
114
133
  if (sendError !== null) {
115
134
  throw sendError;
116
135
  }
117
- const id = `om_fake_${nextMessageId++}`;
118
- sent.push({ chatId, text, messageIds: [id] });
136
+ const id = `message-fake-${nextMessageId++}`;
137
+ sent.push({ chatId: target.chatId, target, text, messageIds: [id] });
119
138
  return { messageIds: [id] };
120
139
  },
121
140
  async close() {
@@ -1 +1 @@
1
- {"version":3,"file":"bot.js","sourceRoot":"","sources":["../../src/feishu/bot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACL,qBAAqB,EACrB,YAAY,GAEb,MAAM,6BAA6B,CAAC;AAErC,4DAA4D;AAC5D,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAsCtD,MAAM,UAAU,eAAe,CAAC,IAAsB;IACpD,MAAM,SAAS,GAAG,qBAAqB,CAAC;QACtC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,KAAK;YACP,OAAO,SAAS,CAAC,KAAK,CAAC;QACzB,CAAC;QACD,IAAI,SAAS;YACX,OAAO,SAAS,CAAC,MAAM,CAAC;QAC1B,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,OAAuB;YACjC,wEAAwE;YACxE,0EAA0E;YAC1E,sEAAsE;YACtE,sEAAsE;YACtE,MAAM,SAAS,CAAC,KAAK,CAAC;gBACpB,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;oBAC9C,MAAM,KAAK,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;oBACzC,IAAI,KAAK,KAAK,IAAI;wBAAE,OAAO;oBAC3B,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;aACF,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,IAAY;YACzC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;YAC9D,OAAO,EAAE,UAAU,EAAE,CAAC;QACxB,CAAC;QAED,KAAK;YACH,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,GAAY;IACzC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,IAAI,GAAG,GAA8B,CAAC;IAC5C,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAA4B,CAAC;IACjE,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAA4B,CAAC;IACpE,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAA4B,CAAC;IAClE,MAAM,QAAQ,GACV,MAAM,CAAC,WAAW,CAA6B,EAAE,CAAC,SAAS,CAAY,IAAI,EAAE,CAAC;IAClF,MAAM,SAAS,GAAI,OAAO,CAAC,YAAY,CAAY,IAAI,EAAE,CAAC;IAC1D,MAAM,MAAM,GAAI,OAAO,CAAC,SAAS,CAAY,IAAI,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAI,OAAO,CAAC,WAAW,CAAY,IAAI,EAAE,CAAC;IACxD,MAAM,WAAW,GAAI,OAAO,CAAC,cAAc,CAAY,IAAI,EAAE,CAAC;IAC9D,MAAM,UAAU,GAAI,OAAO,CAAC,SAAS,CAAY,IAAI,EAAE,CAAC;IACxD,MAAM,QAAQ,GAAI,OAAO,CAAC,UAAU,CAA2B,IAAI,EAAE,CAAC;IACtE,MAAM,UAAU,GAAI,OAAO,CAAC,aAAa,CAAY,IAAI,EAAE,CAAC;IAE5D,IAAI,SAAS,KAAK,EAAE,IAAI,MAAM,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAEnD,MAAM,MAAM,GAAG,YAAY,CAAC;QAC1B,YAAY,EAAE,WAAW;QACzB,OAAO,EAAE,UAAU;QACnB,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO;QACL,SAAS;QACT,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,WAAW;QACX,UAAU;QACV,UAAU,EAAE,MAAM,CAAC,IAAI;QACvB,QAAQ;QACR,UAAU;QACV,GAAG;KACJ,CAAC;AACJ,CAAC;AAUD,MAAM,UAAU,mBAAmB,CAAC,QAAgB,UAAU;IAC5D,MAAM,IAAI,GAAkE,EAAE,CAAC;IAC/E,IAAI,OAAO,GAA0B,IAAI,CAAC;IAC1C,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,SAAS,GAAiB,IAAI,CAAC;IACnC,MAAM,MAAM,GAAuB,MAAM,KAAK,EAAE,CAAC;IAEjD,OAAO;QACL,KAAK;QACL,IAAI,SAAS;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,CAAiB;YAC3B,OAAO,GAAG,CAAC,CAAC;QACd,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,IAAY;YACzC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACvB,MAAM,SAAS,CAAC;YAClB,CAAC;YACD,MAAM,EAAE,GAAG,WAAW,aAAa,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9C,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9B,CAAC;QACD,KAAK,CAAC,KAAK;YACT,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,IAAI,YAAY;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,KAAyB;YACpC,IAAI,OAAO,KAAK,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAC9D,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,YAAY,CAAC,GAAiB;YAC5B,SAAS,GAAG,GAAG,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"bot.js","sourceRoot":"","sources":["../../src/feishu/bot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { execa } from 'execa';
2
+ export class ExecaCommandRunner {
3
+ async run(command, args, options = {}) {
4
+ if (options.dryRun)
5
+ return;
6
+ await execa(command, args, {
7
+ cwd: options.cwd,
8
+ env: options.env,
9
+ stdio: 'inherit',
10
+ });
11
+ }
12
+ async check(command, args, options = {}) {
13
+ if (options.dryRun)
14
+ return false;
15
+ const result = await execa(command, args, {
16
+ cwd: options.cwd,
17
+ env: options.env,
18
+ reject: false,
19
+ stdout: 'ignore',
20
+ stderr: 'ignore',
21
+ });
22
+ return result.exitCode === 0;
23
+ }
24
+ async capture(command, args, options = {}) {
25
+ if (options.dryRun)
26
+ return '';
27
+ const result = await execa(command, args, {
28
+ cwd: options.cwd,
29
+ env: options.env,
30
+ });
31
+ return result.stdout;
32
+ }
33
+ }
34
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/onboard/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAI9B,MAAM,OAAO,kBAAkB;IAC7B,KAAK,CAAC,GAAG,CACP,OAAe,EACf,IAAc,EACd,UAII,EAAE;QAEN,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO;QAC3B,MAAM,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;YACzB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CACT,OAAe,EACf,IAAc,EACd,UAII,EAAE;QAEN,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;YACxC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,OAAO,CACX,OAAe,EACf,IAAc,EACd,UAII,EAAE;QAEN,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;YACxC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,113 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { parse as parseToml, stringify as stringifyToml } from 'smol-toml';
3
+ import { BUILT_IN_DEFAULTS } from '../runtime/config.js';
4
+ export const DISPATCHER_PERMISSION_PROFILE = 'dreamux-dispatcher';
5
+ export function buildDreamuxConfigToml(answers) {
6
+ return stringifyToml({
7
+ runtime_dir: answers.runtimeDir,
8
+ admin_socket: null,
9
+ codex: {
10
+ bin: answers.codexBin,
11
+ approval_policy: 'never',
12
+ sandbox_mode: 'workspace-write',
13
+ extra_args: [],
14
+ initialize_timeout_ms: BUILT_IN_DEFAULTS.codex.initialize_timeout_ms,
15
+ },
16
+ outbound: {
17
+ retries: BUILT_IN_DEFAULTS.outbound.retries,
18
+ retry_delay_ms: BUILT_IN_DEFAULTS.outbound.retry_delay_ms,
19
+ },
20
+ });
21
+ }
22
+ export function dreamuxConfigFromAnswers(answers) {
23
+ return {
24
+ runtime_dir: answers.runtimeDir,
25
+ admin_socket: null,
26
+ codex: {
27
+ bin: answers.codexBin,
28
+ approval_policy: 'never',
29
+ sandbox_mode: 'workspace-write',
30
+ extra_args: [],
31
+ initialize_timeout_ms: BUILT_IN_DEFAULTS.codex.initialize_timeout_ms,
32
+ },
33
+ outbound: {
34
+ retries: BUILT_IN_DEFAULTS.outbound.retries,
35
+ retry_delay_ms: BUILT_IN_DEFAULTS.outbound.retry_delay_ms,
36
+ },
37
+ };
38
+ }
39
+ export function buildDispatcherCodexConfigToml(options) {
40
+ const existing = readExistingTomlObject(options.codexHomeConfigPath);
41
+ const pluginKey = pluginConfigKey(options.pluginRef, options.marketplaceName);
42
+ const marketplaces = objectValue(existing['marketplaces']);
43
+ const marketplace = objectValue(marketplaces[options.marketplaceName]);
44
+ const plugins = objectValue(existing['plugins']);
45
+ const plugin = objectValue(plugins[pluginKey]);
46
+ return stringifyToml({
47
+ ...existing,
48
+ model: options.model,
49
+ approval_policy: 'never',
50
+ sandbox_mode: 'workspace-write',
51
+ default_permissions: DISPATCHER_PERMISSION_PROFILE,
52
+ sandbox_workspace_write: {
53
+ ...objectValue(existing['sandbox_workspace_write']),
54
+ network_access: true,
55
+ },
56
+ permissions: {
57
+ ...objectValue(existing['permissions']),
58
+ [DISPATCHER_PERMISSION_PROFILE]: {
59
+ ...objectValue(objectValue(existing['permissions'])[DISPATCHER_PERMISSION_PROFILE]),
60
+ network: { enabled: true },
61
+ },
62
+ },
63
+ marketplaces: {
64
+ ...marketplaces,
65
+ [options.marketplaceName]: {
66
+ ...marketplace,
67
+ source: options.marketplaceSource,
68
+ source_type: marketplace['source_type'] ?? inferMarketplaceSourceType(options.marketplaceSource),
69
+ },
70
+ },
71
+ plugins: {
72
+ ...plugins,
73
+ [pluginKey]: {
74
+ ...plugin,
75
+ enabled: true,
76
+ },
77
+ },
78
+ });
79
+ }
80
+ export function dispatcherCodexArgsJson() {
81
+ return JSON.stringify({
82
+ approvalPolicy: 'never',
83
+ sandboxMode: 'workspace-write',
84
+ extraArgs: [],
85
+ });
86
+ }
87
+ function readExistingTomlObject(path) {
88
+ if (!existsSync(path))
89
+ return {};
90
+ const parsed = parseToml(readFileSync(path, 'utf8'));
91
+ return objectValue(parsed);
92
+ }
93
+ function objectValue(value) {
94
+ if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
95
+ return value;
96
+ }
97
+ return {};
98
+ }
99
+ function pluginConfigKey(pluginRef, marketplaceName) {
100
+ if (pluginRef.includes('@'))
101
+ return pluginRef;
102
+ return `${pluginRef}@${marketplaceName}`;
103
+ }
104
+ function inferMarketplaceSourceType(source) {
105
+ if (source.startsWith('http://') || source.startsWith('https://')) {
106
+ return 'git';
107
+ }
108
+ if (source.includes('/') && !source.startsWith('.') && !source.startsWith('/')) {
109
+ return 'github';
110
+ }
111
+ return 'local';
112
+ }
113
+ //# sourceMappingURL=config-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-files.js","sourceRoot":"","sources":["../../src/onboard/config-files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync, } from 'node:fs';
2
+ import { dirname, join } from 'node:path';
3
+ export class TransparentFileLedger {
4
+ seen = new Map();
5
+ entries() {
6
+ return Array.from(this.seen.values()).sort((a, b) => a.path.localeCompare(b.path));
7
+ }
8
+ record(path, status, reason) {
9
+ const existing = this.seen.get(path);
10
+ if (existing === undefined) {
11
+ this.seen.set(path, { path, status, reason });
12
+ return;
13
+ }
14
+ this.seen.set(path, {
15
+ path,
16
+ status: mergeStatus(existing.status, status),
17
+ reason: existing.reason === reason ? reason : `${existing.reason}; ${reason}`,
18
+ });
19
+ }
20
+ }
21
+ export function ensureDirectory(path, ledger, reason, options = {}) {
22
+ if (existsSync(path)) {
23
+ if (!statSync(path).isDirectory()) {
24
+ throw new Error(`expected directory but found a file: ${path}`);
25
+ }
26
+ ledger.record(path, 'unchanged', reason);
27
+ return;
28
+ }
29
+ if (!options.dryRun) {
30
+ mkdirSync(path, { recursive: true });
31
+ }
32
+ ledger.record(path, 'created', reason);
33
+ }
34
+ export function writeTextFile(path, content, ledger, reason, options = {}) {
35
+ const parent = dirname(path);
36
+ ensureDirectory(parent, ledger, `parent directory for ${reason}`, {
37
+ dryRun: options.dryRun,
38
+ });
39
+ let status;
40
+ if (!existsSync(path)) {
41
+ status = 'created';
42
+ }
43
+ else {
44
+ const current = readFileSync(path, 'utf8');
45
+ status = current === content ? 'unchanged' : 'modified';
46
+ }
47
+ if (!options.dryRun && status !== 'unchanged') {
48
+ writeFileSync(path, content, {
49
+ mode: options.mode,
50
+ });
51
+ }
52
+ ledger.record(path, status, reason);
53
+ return status;
54
+ }
55
+ export function ensureTextFile(path, initialContent, ledger, reason, options = {}) {
56
+ const parent = dirname(path);
57
+ ensureDirectory(parent, ledger, `parent directory for ${reason}`, {
58
+ dryRun: options.dryRun,
59
+ });
60
+ if (existsSync(path)) {
61
+ ledger.record(path, 'unchanged', reason);
62
+ return 'unchanged';
63
+ }
64
+ if (!options.dryRun) {
65
+ writeFileSync(path, initialContent, {
66
+ mode: options.mode,
67
+ });
68
+ }
69
+ ledger.record(path, 'created', reason);
70
+ return 'created';
71
+ }
72
+ export function snapshotFiles(root) {
73
+ const out = new Map();
74
+ if (!existsSync(root))
75
+ return out;
76
+ const stack = [root];
77
+ while (stack.length > 0) {
78
+ const current = stack.pop();
79
+ if (current === undefined)
80
+ continue;
81
+ const stat = statSync(current);
82
+ if (stat.isFile()) {
83
+ out.set(current, readFileSync(current));
84
+ continue;
85
+ }
86
+ if (!stat.isDirectory())
87
+ continue;
88
+ for (const entry of readdirSync(current)) {
89
+ stack.push(join(current, entry));
90
+ }
91
+ }
92
+ return out;
93
+ }
94
+ export function recordFileTreeChanges(root, before, ledger, reason) {
95
+ const after = snapshotFiles(root);
96
+ for (const [path, content] of after) {
97
+ const previous = before.get(path);
98
+ const status = previous === undefined
99
+ ? 'created'
100
+ : Buffer.compare(previous, content) === 0
101
+ ? 'unchanged'
102
+ : 'modified';
103
+ ledger.record(path, status, reason);
104
+ }
105
+ }
106
+ function mergeStatus(a, b) {
107
+ if (a === 'created' || b === 'created')
108
+ return 'created';
109
+ if (a === 'modified' || b === 'modified')
110
+ return 'modified';
111
+ return 'unchanged';
112
+ }
113
+ //# sourceMappingURL=ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/onboard/ledger.ts"],"names":[],"mappings":"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"}