botmux 2.2.7 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +63 -13
- package/README.md +52 -14
- package/dist/adapters/cli/aiden.d.ts.map +1 -1
- package/dist/adapters/cli/aiden.js +0 -40
- package/dist/adapters/cli/aiden.js.map +1 -1
- package/dist/adapters/cli/claude-code.d.ts.map +1 -1
- package/dist/adapters/cli/claude-code.js +21 -67
- package/dist/adapters/cli/claude-code.js.map +1 -1
- package/dist/adapters/cli/coco.d.ts.map +1 -1
- package/dist/adapters/cli/coco.js +0 -33
- package/dist/adapters/cli/coco.js.map +1 -1
- package/dist/adapters/cli/codex.d.ts.map +1 -1
- package/dist/adapters/cli/codex.js +0 -27
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/gemini.d.ts.map +1 -1
- package/dist/adapters/cli/gemini.js +1 -29
- package/dist/adapters/cli/gemini.js.map +1 -1
- package/dist/adapters/cli/opencode.d.ts.map +1 -1
- package/dist/adapters/cli/opencode.js +1 -44
- package/dist/adapters/cli/opencode.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +11 -8
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/cli.js +737 -16
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +16 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +30 -0
- package/dist/config.js.map +1 -1
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +8 -4
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/scheduler.d.ts +38 -16
- package/dist/core/scheduler.d.ts.map +1 -1
- package/dist/core/scheduler.js +335 -149
- package/dist/core/scheduler.js.map +1 -1
- package/dist/core/session-manager.d.ts +6 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +105 -16
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/types.d.ts +26 -4
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +6 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/worker-pool.d.ts +15 -3
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +233 -31
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +49 -10
- package/dist/daemon.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts +29 -1
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +240 -55
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts +1 -0
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +200 -40
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/services/schedule-store.d.ts +20 -3
- package/dist/services/schedule-store.d.ts.map +1 -1
- package/dist/services/schedule-store.js +140 -16
- package/dist/services/schedule-store.js.map +1 -1
- package/dist/skills/definitions.d.ts +17 -0
- package/dist/skills/definitions.d.ts.map +1 -0
- package/dist/skills/definitions.js +254 -0
- package/dist/skills/definitions.js.map +1 -0
- package/dist/skills/installer.d.ts +9 -0
- package/dist/skills/installer.d.ts.map +1 -0
- package/dist/skills/installer.js +42 -0
- package/dist/skills/installer.js.map +1 -0
- package/dist/types.d.ts +80 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -5
- package/dist/types.js.map +1 -1
- package/dist/utils/lark-upload.d.ts +2 -0
- package/dist/utils/lark-upload.d.ts.map +1 -0
- package/dist/utils/lark-upload.js +27 -0
- package/dist/utils/lark-upload.js.map +1 -0
- package/dist/utils/screen-analyzer.d.ts +67 -0
- package/dist/utils/screen-analyzer.d.ts.map +1 -0
- package/dist/utils/screen-analyzer.js +256 -0
- package/dist/utils/screen-analyzer.js.map +1 -0
- package/dist/utils/screenshot-renderer.d.ts +11 -0
- package/dist/utils/screenshot-renderer.d.ts.map +1 -0
- package/dist/utils/screenshot-renderer.js +225 -0
- package/dist/utils/screenshot-renderer.js.map +1 -0
- package/dist/utils/terminal-renderer.d.ts +33 -0
- package/dist/utils/terminal-renderer.d.ts.map +1 -1
- package/dist/utils/terminal-renderer.js +33 -0
- package/dist/utils/terminal-renderer.js.map +1 -1
- package/dist/worker.js +283 -14
- package/dist/worker.js.map +1 -1
- package/package.json +2 -5
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -16
- package/dist/index.js.map +0 -1
- package/dist/server.d.ts +0 -3
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -133
- package/dist/server.js.map +0 -1
- package/dist/tools/get-thread-messages.d.ts +0 -26
- package/dist/tools/get-thread-messages.d.ts.map +0 -1
- package/dist/tools/get-thread-messages.js +0 -38
- package/dist/tools/get-thread-messages.js.map +0 -1
- package/dist/tools/index.d.ts +0 -9
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -10
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/list-bots.d.ts +0 -40
- package/dist/tools/list-bots.d.ts.map +0 -1
- package/dist/tools/list-bots.js +0 -77
- package/dist/tools/list-bots.js.map +0 -1
- package/dist/tools/send-to-thread.d.ts +0 -46
- package/dist/tools/send-to-thread.d.ts.map +0 -1
- package/dist/tools/send-to-thread.js +0 -275
- package/dist/tools/send-to-thread.js.map +0 -1
package/dist/core/worker-pool.js
CHANGED
|
@@ -2,15 +2,18 @@
|
|
|
2
2
|
* Worker pool — manages forking, killing, and lifecycle of worker processes.
|
|
3
3
|
* Extracted from daemon.ts for modularity.
|
|
4
4
|
*/
|
|
5
|
-
import { fork } from 'node:child_process';
|
|
5
|
+
import { fork, execSync } from 'node:child_process';
|
|
6
6
|
import { join, dirname } from 'node:path';
|
|
7
|
-
import {
|
|
7
|
+
import { homedir } from 'node:os';
|
|
8
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
8
9
|
import { fileURLToPath } from 'node:url';
|
|
10
|
+
import { ensureSkills } from '../skills/installer.js';
|
|
9
11
|
import { randomBytes } from 'node:crypto';
|
|
10
12
|
import { config } from '../config.js';
|
|
11
13
|
import * as sessionStore from '../services/session-store.js';
|
|
14
|
+
import { persistStreamCardState } from './session-manager.js';
|
|
12
15
|
import { updateMessage, MessageWithdrawnError } from '../im/lark/client.js';
|
|
13
|
-
import { buildStreamingCard, buildSessionCard, getCliDisplayName } from '../im/lark/card-builder.js';
|
|
16
|
+
import { buildStreamingCard, buildSessionCard, buildTuiPromptCard, buildTuiPromptResolvedCard, getCliDisplayName } from '../im/lark/card-builder.js';
|
|
14
17
|
import { logger } from '../utils/logger.js';
|
|
15
18
|
import { createCliAdapterSync } from '../adapters/cli/registry.js';
|
|
16
19
|
import { TmuxBackend } from '../adapters/backend/tmux-backend.js';
|
|
@@ -73,6 +76,7 @@ function flushCardPatch(ds) {
|
|
|
73
76
|
if (err instanceof MessageWithdrawnError) {
|
|
74
77
|
logger.warn(`[${tag(ds)}] Stream card withdrawn, clearing reference`);
|
|
75
78
|
ds.streamCardId = undefined;
|
|
79
|
+
persistStreamCardState(ds);
|
|
76
80
|
return;
|
|
77
81
|
}
|
|
78
82
|
logger.debug(`[${tag(ds)}] Failed to update streaming card: ${err}`);
|
|
@@ -86,29 +90,127 @@ function flushCardPatch(ds) {
|
|
|
86
90
|
}
|
|
87
91
|
// ─── Restart rate-limiting ──────────────────────────────────────────────────
|
|
88
92
|
export const restartCounts = new Map();
|
|
89
|
-
// ───
|
|
90
|
-
/** Track which CLI adapters have had
|
|
91
|
-
const
|
|
93
|
+
// ─── Skills installation ────────────────────────────────────────────────────
|
|
94
|
+
/** Track which CLI adapters have had skills installed this daemon lifecycle */
|
|
95
|
+
const skillsInstalledCliIds = new Set();
|
|
92
96
|
/**
|
|
93
|
-
* Ensure
|
|
94
|
-
*
|
|
97
|
+
* Ensure built-in skills are installed for a given CLI.
|
|
98
|
+
* Synchronous and idempotent — runs once per CLI per daemon lifecycle.
|
|
95
99
|
*/
|
|
96
|
-
export function
|
|
97
|
-
if (
|
|
100
|
+
export function ensureCliSkills(cliId, cliPathOverride) {
|
|
101
|
+
if (skillsInstalledCliIds.has(cliId))
|
|
98
102
|
return;
|
|
99
103
|
const adapter = createCliAdapterSync(cliId, cliPathOverride);
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
104
|
+
ensureSkills(cliId, adapter.skillsDir);
|
|
105
|
+
skillsInstalledCliIds.add(cliId);
|
|
106
|
+
}
|
|
107
|
+
// ─── Legacy MCP config cleanup ──────────────────────────────────────────────
|
|
108
|
+
//
|
|
109
|
+
// botmux used to register itself as an MCP server in each CLI's config so the
|
|
110
|
+
// CLI could call send_to_thread / get_thread_messages / list_bots. Those
|
|
111
|
+
// tools have since been migrated to `botmux` subcommands + Skills. The old
|
|
112
|
+
// MCP entry is now dead — if we leave it, the CLI will try to spawn a
|
|
113
|
+
// non-existent server on startup and users see scary errors.
|
|
114
|
+
//
|
|
115
|
+
// For each CLI, best-effort remove any `botmux` entry from its MCP config.
|
|
116
|
+
// Runs once per CLI per daemon lifecycle, same lifecycle as ensureCliSkills.
|
|
117
|
+
/** Track which CLI adapters have had legacy MCP config cleaned this daemon lifecycle */
|
|
118
|
+
const legacyMcpCleanedCliIds = new Set();
|
|
119
|
+
/** Remove a key from a JSON config file at the given dotted path. Best-effort. */
|
|
120
|
+
function removeJsonKey(configPath, pathSegments, keyToRemove) {
|
|
121
|
+
try {
|
|
122
|
+
if (!existsSync(configPath))
|
|
123
|
+
return false;
|
|
124
|
+
const raw = readFileSync(configPath, 'utf-8');
|
|
125
|
+
const data = JSON.parse(raw);
|
|
126
|
+
let node = data;
|
|
127
|
+
for (const seg of pathSegments) {
|
|
128
|
+
if (!node || typeof node !== 'object' || !(seg in node))
|
|
129
|
+
return false;
|
|
130
|
+
node = node[seg];
|
|
131
|
+
}
|
|
132
|
+
if (!node || typeof node !== 'object' || !(keyToRemove in node))
|
|
133
|
+
return false;
|
|
134
|
+
delete node[keyToRemove];
|
|
135
|
+
writeFileSync(configPath, JSON.stringify(data, null, 2));
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/** Try running `<cli> mcp remove botmux`. Returns true if the command ran. */
|
|
143
|
+
function tryCliMcpRemove(binName) {
|
|
144
|
+
try {
|
|
145
|
+
execSync(`${binName} mcp remove botmux`, { stdio: 'ignore', timeout: 10_000 });
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Remove legacy `botmux` MCP server registration from the given CLI's config.
|
|
154
|
+
* Idempotent — runs once per CLI per daemon lifecycle. Best-effort: any
|
|
155
|
+
* failure is swallowed; we never want to block worker startup.
|
|
156
|
+
*/
|
|
157
|
+
export function cleanupLegacyMcpConfig(cliId) {
|
|
158
|
+
if (legacyMcpCleanedCliIds.has(cliId))
|
|
159
|
+
return;
|
|
160
|
+
legacyMcpCleanedCliIds.add(cliId);
|
|
161
|
+
try {
|
|
162
|
+
const home = homedir();
|
|
163
|
+
switch (cliId) {
|
|
164
|
+
case 'claude-code': {
|
|
165
|
+
// ~/.claude.json → { mcpServers: { botmux } }
|
|
166
|
+
if (removeJsonKey(join(home, '.claude.json'), ['mcpServers'], 'botmux')) {
|
|
167
|
+
logger.info(`[legacy-mcp] Removed botmux entry from ~/.claude.json`);
|
|
168
|
+
}
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
case 'aiden': {
|
|
172
|
+
// ~/.aiden/.mcp.json or cwd/.mcp.json → { mcpServers: { botmux } }
|
|
173
|
+
for (const p of [join(home, '.aiden', '.mcp.json'), join(process.cwd(), '.mcp.json')]) {
|
|
174
|
+
if (removeJsonKey(p, ['mcpServers'], 'botmux')) {
|
|
175
|
+
logger.info(`[legacy-mcp] Removed botmux entry from ${p}`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
case 'opencode': {
|
|
181
|
+
// ~/.config/opencode/opencode.json → { mcp: { botmux } } or { mcpServers: { botmux } }
|
|
182
|
+
const p = join(home, '.config', 'opencode', 'opencode.json');
|
|
183
|
+
const removed = removeJsonKey(p, ['mcp'], 'botmux') ||
|
|
184
|
+
removeJsonKey(p, ['mcpServers'], 'botmux') ||
|
|
185
|
+
removeJsonKey(p, ['mcp', 'servers'], 'botmux');
|
|
186
|
+
if (removed)
|
|
187
|
+
logger.info(`[legacy-mcp] Removed botmux entry from ${p}`);
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
case 'coco':
|
|
191
|
+
case 'codex':
|
|
192
|
+
case 'gemini': {
|
|
193
|
+
// These CLIs managed MCP via their own subcommand. Skip silently if
|
|
194
|
+
// the binary isn't on PATH — nothing to clean then.
|
|
195
|
+
if (tryCliMcpRemove(cliId)) {
|
|
196
|
+
logger.info(`[legacy-mcp] Ran \`${cliId} mcp remove botmux\``);
|
|
197
|
+
}
|
|
198
|
+
break;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
catch (err) {
|
|
203
|
+
logger.debug(`[legacy-mcp] Cleanup for ${cliId} failed (ignored): ${err}`);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Ensure per-CLI environment is set up for this daemon lifecycle: install
|
|
208
|
+
* built-in skills and clean up any legacy MCP server registration.
|
|
209
|
+
* Both steps are idempotent and best-effort.
|
|
210
|
+
*/
|
|
211
|
+
export function ensureCliEnv(cliId, cliPathOverride) {
|
|
212
|
+
ensureCliSkills(cliId, cliPathOverride);
|
|
213
|
+
cleanupLegacyMcpConfig(cliId);
|
|
112
214
|
}
|
|
113
215
|
// ─── Kill worker ────────────────────────────────────────────────────────────
|
|
114
216
|
export function killWorker(ds) {
|
|
@@ -150,14 +252,20 @@ export function forkWorker(ds, prompt, resume = false) {
|
|
|
150
252
|
ds.workerPort = null;
|
|
151
253
|
ds.workerToken = null;
|
|
152
254
|
}
|
|
153
|
-
|
|
255
|
+
ensureCliEnv(botCfg.cliId, botCfg.cliPathOverride);
|
|
256
|
+
// Prepend ~/.botmux/bin to PATH so CLIs can call `botmux send` etc.
|
|
257
|
+
// The wrapper script there is written by the daemon at startup.
|
|
258
|
+
const botmuxBinDir = join(homedir(), '.botmux', 'bin');
|
|
259
|
+
const pathWithBotmux = `${botmuxBinDir}:${process.env.PATH ?? ''}`;
|
|
154
260
|
const worker = fork(workerPath, [], {
|
|
155
261
|
stdio: ['ignore', 'pipe', 'pipe', 'ipc'],
|
|
156
262
|
cwd,
|
|
157
263
|
env: {
|
|
158
264
|
...process.env,
|
|
265
|
+
PATH: pathWithBotmux,
|
|
159
266
|
CLAUDECODE: undefined,
|
|
160
267
|
BOTMUX: '1', // Inherited by CLI → MCP server for session detection
|
|
268
|
+
SESSION_DATA_DIR: config.session.dataDir,
|
|
161
269
|
LARK_APP_ID: botCfg.larkAppId,
|
|
162
270
|
LARK_APP_SECRET: botCfg.larkAppSecret,
|
|
163
271
|
},
|
|
@@ -224,6 +332,36 @@ function setupWorkerHandlers(ds, worker) {
|
|
|
224
332
|
const readOnlyUrl = `http://${config.web.externalHost}:${msg.port}`;
|
|
225
333
|
const writeUrl = `${readOnlyUrl}?token=${msg.token}`;
|
|
226
334
|
logger.info(`[${t}] Worker ready, terminal at ${readOnlyUrl}`);
|
|
335
|
+
// If a previous streaming card survived (e.g. daemon restart), try to
|
|
336
|
+
// PATCH it with the new "starting" state instead of POSTing a fresh card.
|
|
337
|
+
// ds.streamCardPending forces a new card (e.g. mid-session repo switch
|
|
338
|
+
// explicitly cleared streamCardId before re-fork — keep that behaviour).
|
|
339
|
+
const restoredCardId = ds.streamCardId && ds.streamCardId !== CARD_POSTING_SENTINEL && !ds.streamCardPending
|
|
340
|
+
? ds.streamCardId
|
|
341
|
+
: undefined;
|
|
342
|
+
if (restoredCardId) {
|
|
343
|
+
try {
|
|
344
|
+
const initTitle = ds.currentTurnTitle || ds.session.title || getCliDisplayName(botCfg.cliId);
|
|
345
|
+
// Reuse persisted nonce so existing card buttons (toggle/etc) keep working.
|
|
346
|
+
if (!ds.streamCardNonce)
|
|
347
|
+
ds.streamCardNonce = randomBytes(4).toString('hex');
|
|
348
|
+
const streamCardJson = buildStreamingCard(ds.session.sessionId, ds.session.rootMessageId, readOnlyUrl, initTitle, ds.lastScreenContent ?? '', 'starting', botCfg.cliId, ds.displayMode ?? 'hidden', ds.streamCardNonce, ds.currentImageKey, isAdopt, showTakeover);
|
|
349
|
+
await updateMessage(ds.larkAppId, restoredCardId, streamCardJson);
|
|
350
|
+
persistStreamCardState(ds);
|
|
351
|
+
// Re-sync worker's display mode (it starts fresh in 'hidden')
|
|
352
|
+
if (ds.worker && ds.displayMode && ds.displayMode !== 'hidden') {
|
|
353
|
+
ds.worker.send({ type: 'set_display_mode', mode: ds.displayMode });
|
|
354
|
+
}
|
|
355
|
+
logger.info(`[${t}] Reused existing streaming card ${restoredCardId.substring(0, 12)} after worker (re)start`);
|
|
356
|
+
break;
|
|
357
|
+
}
|
|
358
|
+
catch (err) {
|
|
359
|
+
// PATCH failed (withdrawn, expired, etc.) — fall through to POST a fresh card.
|
|
360
|
+
logger.info(`[${t}] Failed to reuse existing streaming card (${err instanceof Error ? err.message : err}), posting new one`);
|
|
361
|
+
ds.streamCardId = undefined;
|
|
362
|
+
persistStreamCardState(ds);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
227
365
|
// Send streaming card to group thread (read-only link, will be PATCHed with live output)
|
|
228
366
|
// Set sentinel BEFORE await so concurrent screen_update messages
|
|
229
367
|
// (which can arrive while the POST is in-flight) don't POST a duplicate card.
|
|
@@ -231,8 +369,9 @@ function setupWorkerHandlers(ds, worker) {
|
|
|
231
369
|
try {
|
|
232
370
|
ds.streamCardNonce = randomBytes(4).toString('hex');
|
|
233
371
|
const initTitle = ds.currentTurnTitle || ds.session.title || getCliDisplayName(botCfg.cliId);
|
|
234
|
-
const streamCardJson = buildStreamingCard(ds.session.sessionId, ds.session.rootMessageId, readOnlyUrl, initTitle, '', 'starting', botCfg.cliId, ds.
|
|
372
|
+
const streamCardJson = buildStreamingCard(ds.session.sessionId, ds.session.rootMessageId, readOnlyUrl, initTitle, '', 'starting', botCfg.cliId, ds.displayMode ?? 'hidden', ds.streamCardNonce, ds.currentImageKey, isAdopt, showTakeover);
|
|
235
373
|
ds.streamCardId = await cb.sessionReply(ds.session.rootMessageId, streamCardJson, 'interactive', ds.larkAppId);
|
|
374
|
+
persistStreamCardState(ds);
|
|
236
375
|
}
|
|
237
376
|
catch (err) {
|
|
238
377
|
if (err instanceof MessageWithdrawnError) {
|
|
@@ -244,6 +383,7 @@ function setupWorkerHandlers(ds, worker) {
|
|
|
244
383
|
logger.warn(`[${t}] Failed to send streaming card, falling back to static card: ${err}`);
|
|
245
384
|
// Clear sentinel so screen_updates can create a streaming card later
|
|
246
385
|
ds.streamCardId = undefined;
|
|
386
|
+
persistStreamCardState(ds);
|
|
247
387
|
// Fallback: send static session card
|
|
248
388
|
try {
|
|
249
389
|
const cardJson = buildSessionCard(ds.session.sessionId, ds.session.rootMessageId, readOnlyUrl, ds.session.title || getCliDisplayName(botCfg.cliId), botCfg.cliId);
|
|
@@ -268,10 +408,12 @@ function setupWorkerHandlers(ds, worker) {
|
|
|
268
408
|
case 'screen_update': {
|
|
269
409
|
if (!ds.workerPort)
|
|
270
410
|
break;
|
|
411
|
+
const prevStatus = ds.lastScreenStatus;
|
|
271
412
|
ds.lastScreenContent = msg.content;
|
|
272
413
|
ds.lastScreenStatus = msg.status;
|
|
273
414
|
const readUrl = `http://${config.web.externalHost}:${ds.workerPort}`;
|
|
274
415
|
const turnTitle = ds.currentTurnTitle || ds.session.title || getCliDisplayName(botCfg.cliId);
|
|
416
|
+
const mode = ds.displayMode ?? 'hidden';
|
|
275
417
|
if (ds.streamCardPending || !ds.streamCardId) {
|
|
276
418
|
// If a POST is already in-flight, drop this update — it will be
|
|
277
419
|
// picked up by subsequent screen_updates once the card ID lands.
|
|
@@ -281,13 +423,16 @@ function setupWorkerHandlers(ds, worker) {
|
|
|
281
423
|
// Generate new nonce so old card buttons are distinguishable.
|
|
282
424
|
const isNewTurn = !!ds.streamCardPending;
|
|
283
425
|
ds.streamCardNonce = randomBytes(4).toString('hex');
|
|
284
|
-
|
|
426
|
+
// New turn → image_key from previous turn no longer valid
|
|
427
|
+
if (isNewTurn)
|
|
428
|
+
ds.currentImageKey = undefined;
|
|
429
|
+
const cardJson = buildStreamingCard(ds.session.sessionId, ds.session.rootMessageId, readUrl, turnTitle, isNewTurn ? '' : msg.content, msg.status, botCfg.cliId, mode, ds.streamCardNonce, ds.currentImageKey, isAdopt, showTakeover);
|
|
285
430
|
// Mark POST in-flight so subsequent screen_updates are dropped,
|
|
286
431
|
// not POSTed as duplicate cards.
|
|
287
432
|
ds.streamCardPending = false;
|
|
288
433
|
ds.streamCardId = CARD_POSTING_SENTINEL;
|
|
289
434
|
cb.sessionReply(ds.session.rootMessageId, cardJson, 'interactive', ds.larkAppId)
|
|
290
|
-
.then(msgId => { ds.streamCardId = msgId; })
|
|
435
|
+
.then(msgId => { ds.streamCardId = msgId; persistStreamCardState(ds); })
|
|
291
436
|
.catch(err => {
|
|
292
437
|
if (err instanceof MessageWithdrawnError) {
|
|
293
438
|
logger.warn(`[${t}] Root message withdrawn, closing stale session`);
|
|
@@ -297,15 +442,72 @@ function setupWorkerHandlers(ds, worker) {
|
|
|
297
442
|
}
|
|
298
443
|
logger.debug(`[${t}] Failed to create streaming card: ${err}`);
|
|
299
444
|
ds.streamCardId = undefined;
|
|
445
|
+
persistStreamCardState(ds);
|
|
300
446
|
});
|
|
301
447
|
}
|
|
302
448
|
else {
|
|
303
|
-
// Same turn —
|
|
304
|
-
|
|
449
|
+
// Same turn — gating:
|
|
450
|
+
// text mode: PATCH on every update (markdown content changes)
|
|
451
|
+
// screenshot/hidden: PATCH only on status change (image PATCH happens via screenshot_uploaded)
|
|
452
|
+
const statusChanged = prevStatus !== msg.status;
|
|
453
|
+
if (mode !== 'text' && !statusChanged)
|
|
454
|
+
break;
|
|
455
|
+
const cardJson = buildStreamingCard(ds.session.sessionId, ds.session.rootMessageId, readUrl, turnTitle, msg.content, msg.status, botCfg.cliId, mode, ds.streamCardNonce, ds.currentImageKey, isAdopt, showTakeover);
|
|
305
456
|
scheduleCardPatch(ds, cardJson);
|
|
306
457
|
}
|
|
307
458
|
break;
|
|
308
459
|
}
|
|
460
|
+
case 'screenshot_uploaded': {
|
|
461
|
+
// Drop uploads that arrived during a new-turn handoff — the image_key may
|
|
462
|
+
// reflect previous turn's content. Next 10s cycle picks up fresh content.
|
|
463
|
+
if (ds.streamCardPending)
|
|
464
|
+
break;
|
|
465
|
+
ds.currentImageKey = msg.imageKey;
|
|
466
|
+
ds.lastScreenStatus = msg.status;
|
|
467
|
+
persistStreamCardState(ds);
|
|
468
|
+
if ((ds.displayMode ?? 'hidden') !== 'screenshot')
|
|
469
|
+
break;
|
|
470
|
+
if (!ds.streamCardId || ds.streamCardId === CARD_POSTING_SENTINEL || !ds.workerPort)
|
|
471
|
+
break;
|
|
472
|
+
const readUrl = `http://${config.web.externalHost}:${ds.workerPort}`;
|
|
473
|
+
const turnTitle = ds.currentTurnTitle || ds.session.title || getCliDisplayName(botCfg.cliId);
|
|
474
|
+
const cardJson = buildStreamingCard(ds.session.sessionId, ds.session.rootMessageId, readUrl, turnTitle, ds.lastScreenContent ?? '', msg.status, botCfg.cliId, 'screenshot', ds.streamCardNonce, ds.currentImageKey, isAdopt, showTakeover);
|
|
475
|
+
scheduleCardPatch(ds, cardJson);
|
|
476
|
+
break;
|
|
477
|
+
}
|
|
478
|
+
case 'tui_prompt': {
|
|
479
|
+
// AI detected an interactive TUI prompt — post card to thread
|
|
480
|
+
// Dedup: if a card is already posted for this session, skip
|
|
481
|
+
if (ds.tuiPromptCardId) {
|
|
482
|
+
logger.debug(`[${t}] TUI prompt card already posted, skipping duplicate`);
|
|
483
|
+
break;
|
|
484
|
+
}
|
|
485
|
+
logger.info(`[${t}] TUI prompt detected: ${msg.description}${msg.multiSelect ? ' (multi-select)' : ''}`);
|
|
486
|
+
ds.tuiPromptOptions = msg.options;
|
|
487
|
+
ds.tuiPromptMultiSelect = msg.multiSelect;
|
|
488
|
+
ds.tuiToggledIndices = [];
|
|
489
|
+
ds.currentTurnTitle = msg.description; // store for card PATCH on toggle
|
|
490
|
+
try {
|
|
491
|
+
const cardJson = buildTuiPromptCard(ds.session.rootMessageId, ds.session.sessionId, msg.description, msg.options, msg.multiSelect);
|
|
492
|
+
const cardMsgId = await cb.sessionReply(ds.session.rootMessageId, cardJson, 'interactive', ds.larkAppId);
|
|
493
|
+
ds.tuiPromptCardId = cardMsgId;
|
|
494
|
+
}
|
|
495
|
+
catch (err) {
|
|
496
|
+
logger.warn(`[${t}] Failed to post TUI prompt card: ${err}`);
|
|
497
|
+
}
|
|
498
|
+
break;
|
|
499
|
+
}
|
|
500
|
+
case 'tui_prompt_resolved': {
|
|
501
|
+
// TUI prompt is no longer showing — update card if it exists
|
|
502
|
+
logger.info(`[${t}] TUI prompt resolved${msg.selectedText ? `: ${msg.selectedText}` : ''}`);
|
|
503
|
+
if (ds.tuiPromptCardId) {
|
|
504
|
+
const resolvedCard = buildTuiPromptResolvedCard(msg.selectedText ?? 'Done');
|
|
505
|
+
updateMessage(ds.larkAppId, ds.tuiPromptCardId, resolvedCard).catch(err => logger.debug(`[${t}] Failed to update TUI prompt card: ${err}`));
|
|
506
|
+
ds.tuiPromptCardId = undefined;
|
|
507
|
+
ds.tuiPromptOptions = undefined;
|
|
508
|
+
}
|
|
509
|
+
break;
|
|
510
|
+
}
|
|
309
511
|
case 'claude_exit': {
|
|
310
512
|
logger.info(`[${t}] ${getCliDisplayName(botCfg.cliId)} exited (code: ${msg.code}, signal: ${msg.signal})`);
|
|
311
513
|
ds.hasHistory = true;
|
|
@@ -316,7 +518,7 @@ function setupWorkerHandlers(ds, worker) {
|
|
|
316
518
|
if (ds.streamCardId && ds.workerPort) {
|
|
317
519
|
const readUrl = `http://${config.web.externalHost}:${ds.workerPort}`;
|
|
318
520
|
const turnTitle = ds.currentTurnTitle || ds.session.title || getCliDisplayName(botCfg.cliId);
|
|
319
|
-
const frozenCard = buildStreamingCard(ds.session.sessionId, ds.session.rootMessageId, readUrl, turnTitle, ds.lastScreenContent ?? '', 'idle', botCfg.cliId, ds.
|
|
521
|
+
const frozenCard = buildStreamingCard(ds.session.sessionId, ds.session.rootMessageId, readUrl, turnTitle, ds.lastScreenContent ?? '', 'idle', botCfg.cliId, ds.displayMode ?? 'hidden', ds.streamCardNonce, ds.currentImageKey, isAdopt, showTakeover);
|
|
320
522
|
scheduleCardPatch(ds, frozenCard);
|
|
321
523
|
}
|
|
322
524
|
killWorker(ds);
|
|
@@ -341,7 +543,7 @@ function setupWorkerHandlers(ds, worker) {
|
|
|
341
543
|
if (ds.streamCardId && ds.workerPort) {
|
|
342
544
|
const readUrl = `http://${config.web.externalHost}:${ds.workerPort}`;
|
|
343
545
|
const turnTitle = ds.currentTurnTitle || ds.session.title || getCliDisplayName(botCfg.cliId);
|
|
344
|
-
const frozenCard = buildStreamingCard(ds.session.sessionId, ds.session.rootMessageId, readUrl, turnTitle, ds.lastScreenContent ?? '', 'idle', botCfg.cliId, ds.
|
|
546
|
+
const frozenCard = buildStreamingCard(ds.session.sessionId, ds.session.rootMessageId, readUrl, turnTitle, ds.lastScreenContent ?? '', 'idle', botCfg.cliId, ds.displayMode ?? 'hidden', ds.streamCardNonce, ds.currentImageKey);
|
|
345
547
|
scheduleCardPatch(ds, frozenCard);
|
|
346
548
|
}
|
|
347
549
|
// Kill the worker process to free resources
|
|
@@ -406,7 +608,7 @@ export function forkAdoptWorker(ds) {
|
|
|
406
608
|
ds.workerPort = null;
|
|
407
609
|
ds.workerToken = null;
|
|
408
610
|
}
|
|
409
|
-
//
|
|
611
|
+
// No ensureCliSkills — adopt mode attaches to an existing CLI session
|
|
410
612
|
const worker = fork(workerPath, [], {
|
|
411
613
|
stdio: ['ignore', 'pipe', 'pipe', 'ipc'],
|
|
412
614
|
cwd: adopted.cwd ?? ds.workingDir ?? process.cwd(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-pool.js","sourceRoot":"","sources":["../../src/core/worker-pool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worker-pool.js","sourceRoot":"","sources":["../../src/core/worker-pool.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAgBA,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAkoBrD,wBAAsB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgHlE"}
|
package/dist/daemon.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { execFileSync } from 'node:child_process';
|
|
2
2
|
import { writeFileSync, readFileSync, existsSync, mkdirSync, unlinkSync, watch, readdirSync } from 'node:fs';
|
|
3
|
-
import { join } from 'node:path';
|
|
3
|
+
import { join, dirname } from 'node:path';
|
|
4
4
|
import { homedir } from 'node:os';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = dirname(__filename);
|
|
5
8
|
import { config } from './config.js';
|
|
6
9
|
import { replyMessage, resolveAllowedUsers, getMessageDetail } from './im/lark/client.js';
|
|
7
10
|
import { loadBotConfigs, registerBot, getBot, getAllBots } from './bot-registry.js';
|
|
@@ -18,7 +21,7 @@ import { initWorkerPool, forkWorker, killWorker, scheduleCardPatch, setCurrentCl
|
|
|
18
21
|
import { saveFrozenCards } from './services/frozen-card-store.js';
|
|
19
22
|
import { DAEMON_COMMANDS, handleCommand } from './core/command-handler.js';
|
|
20
23
|
import { isCallbackUrl, handleCallbackUrl } from './utils/user-token.js';
|
|
21
|
-
import { getSessionWorkingDir, getProjectScanDirs, downloadResources, formatAttachmentsHint, buildNewTopicPrompt, buildFollowUpContent, getAvailableBots, restoreActiveSessions, executeScheduledTask, } from './core/session-manager.js';
|
|
24
|
+
import { getSessionWorkingDir, getProjectScanDirs, downloadResources, formatAttachmentsHint, buildNewTopicPrompt, buildFollowUpContent, getAvailableBots, restoreActiveSessions, executeScheduledTask, persistStreamCardState, } from './core/session-manager.js';
|
|
22
25
|
import { handleCardAction } from './im/lark/card-handler.js';
|
|
23
26
|
import { isBotMentioned, probeBotOpenId, startLarkEventDispatcher, writeBotInfoFile } from './im/lark/event-dispatcher.js';
|
|
24
27
|
// ─── State ───────────────────────────────────────────────────────────────────
|
|
@@ -56,6 +59,9 @@ function getPidFile() {
|
|
|
56
59
|
const name = botIndex !== undefined ? `daemon-${botIndex}.pid` : 'daemon.pid';
|
|
57
60
|
return join(config.session.dataDir, name);
|
|
58
61
|
}
|
|
62
|
+
/** Path to the wrapper bin directory — injected into worker PATH so CLIs
|
|
63
|
+
* can call `botmux send` / `botmux schedule` without a global npm install. */
|
|
64
|
+
const BOTMUX_BIN_DIR = join(homedir(), '.botmux', 'bin');
|
|
59
65
|
function writePidFile() {
|
|
60
66
|
const dir = config.session.dataDir;
|
|
61
67
|
if (!existsSync(dir)) {
|
|
@@ -69,6 +75,28 @@ function writePidFile() {
|
|
|
69
75
|
writeFileSync(breadcrumb, config.session.dataDir, 'utf-8');
|
|
70
76
|
}
|
|
71
77
|
catch { /* best effort */ }
|
|
78
|
+
// Write a thin wrapper script so `botmux` is always in PATH for CLI sessions,
|
|
79
|
+
// regardless of whether the package was installed globally. The wrapper
|
|
80
|
+
// points at THIS daemon's dist/cli.js, so it's always the same version.
|
|
81
|
+
try {
|
|
82
|
+
mkdirSync(BOTMUX_BIN_DIR, { recursive: true });
|
|
83
|
+
const cliScript = join(__dirname, 'cli.js'); // dist/cli.js
|
|
84
|
+
const wrapper = join(BOTMUX_BIN_DIR, 'botmux');
|
|
85
|
+
const content = `#!/bin/sh\nexec node "${cliScript}" "$@"\n`;
|
|
86
|
+
// Only write if changed (avoid unnecessary disk writes on every restart)
|
|
87
|
+
let existing = '';
|
|
88
|
+
try {
|
|
89
|
+
existing = readFileSync(wrapper, 'utf-8');
|
|
90
|
+
}
|
|
91
|
+
catch { /* doesn't exist yet */ }
|
|
92
|
+
if (existing !== content) {
|
|
93
|
+
writeFileSync(wrapper, content, { mode: 0o755 });
|
|
94
|
+
logger.info(`Wrapper script written: ${wrapper} → ${cliScript}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
logger.warn(`Failed to write botmux wrapper script: ${err.message}`);
|
|
99
|
+
}
|
|
72
100
|
logger.info(`PID file written: ${getPidFile()} (pid: ${process.pid})`);
|
|
73
101
|
}
|
|
74
102
|
function removePidFile() {
|
|
@@ -417,7 +445,8 @@ async function handleThreadReply(data, rootId, larkAppId) {
|
|
|
417
445
|
const readUrl = `http://${config.web.externalHost}:${ds.workerPort}`;
|
|
418
446
|
const dsBotCfg = getBot(ds.larkAppId).config;
|
|
419
447
|
const prevTitle = ds.currentTurnTitle || ds.session.title || getCliDisplayName(dsBotCfg.cliId);
|
|
420
|
-
const
|
|
448
|
+
const prevMode = ds.displayMode ?? 'hidden';
|
|
449
|
+
const frozenCard = buildStreamingCard(ds.session.sessionId, ds.session.rootMessageId, readUrl, prevTitle, ds.lastScreenContent ?? '', 'idle', dsBotCfg.cliId, prevMode, ds.streamCardNonce, ds.currentImageKey);
|
|
421
450
|
// Freeze through the serialization queue to avoid racing with an in-flight PATCH.
|
|
422
451
|
// scheduleCardPatch replaces any stale pending item (latest-wins).
|
|
423
452
|
scheduleCardPatch(ds, frozenCard);
|
|
@@ -429,7 +458,8 @@ async function handleThreadReply(data, rootId, larkAppId) {
|
|
|
429
458
|
messageId: ds.streamCardId,
|
|
430
459
|
content: ds.lastScreenContent ?? '',
|
|
431
460
|
title: prevTitle,
|
|
432
|
-
|
|
461
|
+
displayMode: prevMode,
|
|
462
|
+
imageKey: ds.currentImageKey,
|
|
433
463
|
});
|
|
434
464
|
saveFrozenCards(ds.session.sessionId, ds.frozenCards);
|
|
435
465
|
}
|
|
@@ -437,12 +467,18 @@ async function handleThreadReply(data, rootId, larkAppId) {
|
|
|
437
467
|
// Mark new turn — next screen_update will create a fresh streaming card
|
|
438
468
|
ds.streamCardPending = true;
|
|
439
469
|
ds.currentTurnTitle = parsed.content.substring(0, 50);
|
|
470
|
+
persistStreamCardState(ds);
|
|
440
471
|
ds.worker.send({ type: 'message', content: msgContent });
|
|
441
472
|
}
|
|
442
473
|
else {
|
|
443
|
-
// Worker not running — re-fork with resume
|
|
474
|
+
// Worker not running — re-fork with resume. This is a NEW turn, so drop
|
|
475
|
+
// any restored streaming-card reference; worker_ready will POST a fresh
|
|
476
|
+
// card instead of PATCHing the previous turn's card in place.
|
|
444
477
|
logger.info(`[${tag(ds)}] Worker not running, re-forking...`);
|
|
445
478
|
ds.currentTurnTitle = parsed.content.substring(0, 50);
|
|
479
|
+
ds.streamCardId = undefined;
|
|
480
|
+
ds.streamCardNonce = undefined;
|
|
481
|
+
persistStreamCardState(ds);
|
|
446
482
|
forkWorker(ds, parsed.content, ds.hasHistory);
|
|
447
483
|
}
|
|
448
484
|
}
|
|
@@ -482,6 +518,7 @@ function processBotMentionSignal(signal) {
|
|
|
482
518
|
ds.lastMessageAt = Date.now();
|
|
483
519
|
ds.streamCardPending = true;
|
|
484
520
|
ds.currentTurnTitle = signal.content.substring(0, 50);
|
|
521
|
+
persistStreamCardState(ds);
|
|
485
522
|
ds.worker.send({ type: 'message', content: enrichedContent });
|
|
486
523
|
logger.info(`[bot-mention] Routed message from ${signal.senderAppId} to ${targetAppId} in thread ${signal.rootMessageId}`);
|
|
487
524
|
}
|
|
@@ -598,11 +635,13 @@ export async function startDaemon(botIndex) {
|
|
|
598
635
|
}
|
|
599
636
|
// Restore active sessions from previous run
|
|
600
637
|
restoreActiveSessions(activeSessions);
|
|
601
|
-
// Start
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
638
|
+
// Start scheduler in every daemon. Each daemon owns exactly one bot, so
|
|
639
|
+
// each filters to only execute tasks whose `larkAppId` matches its bot
|
|
640
|
+
// (unmatched tasks are handled by the owning bot's daemon instead; a
|
|
641
|
+
// missing larkAppId falls through to bot-0 as a legacy fallback).
|
|
642
|
+
scheduler.setExecuteCallback((task) => executeScheduledTask(task, activeSessions, refreshCliVersion));
|
|
643
|
+
scheduler.setOwnerFilter(cfg.larkAppId, idx === 0);
|
|
644
|
+
scheduler.startScheduler();
|
|
606
645
|
// Watch for bot-to-bot mention signals from MCP send_to_thread tool.
|
|
607
646
|
// Lark WSClient does not deliver events for bot-sent messages, so the MCP
|
|
608
647
|
// tool writes signal files that the daemon picks up and routes internally.
|