botmux 1.4.3 → 1.5.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/.env.example +5 -0
- package/README.en.md +56 -2
- package/README.md +56 -2
- package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-backend.js +31 -0
- package/dist/adapters/backend/tmux-backend.js.map +1 -1
- package/dist/adapters/cli/aiden.d.ts.map +1 -1
- package/dist/adapters/cli/aiden.js +11 -1
- 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 +12 -1
- package/dist/adapters/cli/claude-code.js.map +1 -1
- package/dist/bot-registry.d.ts +31 -0
- package/dist/bot-registry.d.ts.map +1 -0
- package/dist/bot-registry.js +125 -0
- package/dist/bot-registry.js.map +1 -0
- package/dist/cli.js +198 -52
- package/dist/cli.js.map +1 -1
- package/dist/core/command-handler.d.ts +2 -2
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +18 -13
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/session-manager.d.ts +4 -3
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +45 -12
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/types.d.ts +3 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +4 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/worker-pool.d.ts +4 -3
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +43 -30
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +140 -70
- package/dist/daemon.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts +2 -2
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +45 -19
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts +11 -13
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +23 -45
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts +12 -10
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +54 -42
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +10 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/get-thread-messages.d.ts.map +1 -1
- package/dist/tools/get-thread-messages.js +3 -1
- package/dist/tools/get-thread-messages.js.map +1 -1
- package/dist/tools/react-to-message.d.ts +3 -0
- package/dist/tools/react-to-message.d.ts.map +1 -1
- package/dist/tools/react-to-message.js +8 -3
- package/dist/tools/react-to-message.js.map +1 -1
- package/dist/tools/send-to-thread.d.ts.map +1 -1
- package/dist/tools/send-to-thread.js +2 -1
- package/dist/tools/send-to-thread.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/worker.js +10 -2
- package/dist/worker.js.map +1 -1
- package/package.json +1 -1
- package/dist/scheduler.d.ts +0 -38
- package/dist/scheduler.d.ts.map +0 -1
- package/dist/scheduler.js +0 -221
- package/dist/scheduler.js.map +0 -1
- package/dist/services/lark-client.d.ts +0 -22
- package/dist/services/lark-client.d.ts.map +0 -1
- package/dist/services/lark-client.js +0 -238
- package/dist/services/lark-client.js.map +0 -1
- package/dist/services/lark-ws.d.ts +0 -5
- package/dist/services/lark-ws.d.ts.map +0 -1
- package/dist/services/lark-ws.js +0 -79
- package/dist/services/lark-ws.js.map +0 -1
- package/dist/services/message-router.d.ts +0 -8
- package/dist/services/message-router.d.ts.map +0 -1
- package/dist/services/message-router.js +0 -73
- package/dist/services/message-router.js.map +0 -1
- package/dist/tools/close-session.d.ts +0 -22
- package/dist/tools/close-session.d.ts.map +0 -1
- package/dist/tools/close-session.js +0 -38
- package/dist/tools/close-session.js.map +0 -1
- package/dist/tools/create-session.d.ts +0 -28
- package/dist/tools/create-session.d.ts.map +0 -1
- package/dist/tools/create-session.js +0 -40
- package/dist/tools/create-session.js.map +0 -1
- package/dist/tools/wait-for-reply.d.ts +0 -17
- package/dist/tools/wait-for-reply.d.ts.map +0 -1
- package/dist/tools/wait-for-reply.js +0 -65
- package/dist/tools/wait-for-reply.js.map +0 -1
- package/dist/utils/card-builder.d.ts +0 -16
- package/dist/utils/card-builder.d.ts.map +0 -1
- package/dist/utils/card-builder.js +0 -183
- package/dist/utils/card-builder.js.map +0 -1
- package/dist/utils/message-parser.d.ts +0 -45
- package/dist/utils/message-parser.d.ts.map +0 -1
- package/dist/utils/message-parser.js +0 -132
- package/dist/utils/message-parser.js.map +0 -1
package/dist/daemon.js
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import { execFileSync } from 'node:child_process';
|
|
2
2
|
import { writeFileSync, existsSync, mkdirSync, unlinkSync } from 'node:fs';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
|
-
import {
|
|
4
|
+
import { homedir } from 'node:os';
|
|
5
|
+
import { config } from './config.js';
|
|
5
6
|
import { replyMessage, updateMessage, resolveAllowedUsers } from './im/lark/client.js';
|
|
7
|
+
import { loadBotConfigs, registerBot, getBot, getAllBots } from './bot-registry.js';
|
|
6
8
|
import * as sessionStore from './services/session-store.js';
|
|
7
9
|
import * as messageQueue from './services/message-queue.js';
|
|
8
10
|
import { parseEventMessage } from './im/lark/message-parser.js';
|
|
9
11
|
import { logger } from './utils/logger.js';
|
|
12
|
+
import { sessionKey } from './core/types.js';
|
|
10
13
|
import * as scheduler from './core/scheduler.js';
|
|
11
14
|
import { scanMultipleProjects } from './services/project-scanner.js';
|
|
12
15
|
import { buildRepoSelectCard, buildStreamingCard } from './im/lark/card-builder.js';
|
|
13
16
|
import { createCliAdapterSync } from './adapters/cli/registry.js';
|
|
14
|
-
import { initWorkerPool, forkWorker, killWorker, setCurrentClaudeVersion,
|
|
17
|
+
import { initWorkerPool, forkWorker, killWorker, setCurrentClaudeVersion, } from './core/worker-pool.js';
|
|
15
18
|
import { DAEMON_COMMANDS, handleCommand } from './core/command-handler.js';
|
|
16
19
|
import { getSessionWorkingDir, getProjectScanDirs, downloadResources, formatAttachmentsHint, buildNewTopicPrompt, restoreActiveSessions, executeScheduledTask, } from './core/session-manager.js';
|
|
17
20
|
import { handleCardAction } from './im/lark/card-handler.js';
|
|
@@ -20,16 +23,30 @@ import { probeBotOpenId, startLarkEventDispatcher } from './im/lark/event-dispat
|
|
|
20
23
|
const activeSessions = new Map();
|
|
21
24
|
// Cache last /repo scan results per chat for /repo <number> fallback
|
|
22
25
|
const lastRepoScan = new Map();
|
|
23
|
-
|
|
26
|
+
const cliVersionCache = new Map();
|
|
24
27
|
const VERSION_CHECK_INTERVAL = 60_000; // cache 1 min
|
|
25
28
|
/**
|
|
26
29
|
* Reply to a message, automatically using reply_in_thread for p2p sessions.
|
|
27
30
|
* In p2p chats, Lark needs reply_in_thread=true to create/continue a thread.
|
|
28
31
|
*/
|
|
29
|
-
async function sessionReply(rootId, content, msgType = 'text') {
|
|
30
|
-
|
|
32
|
+
async function sessionReply(rootId, content, msgType = 'text', larkAppId) {
|
|
33
|
+
let ds;
|
|
34
|
+
if (larkAppId) {
|
|
35
|
+
ds = activeSessions.get(sessionKey(rootId, larkAppId));
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
for (const s of activeSessions.values()) {
|
|
39
|
+
if (s.session.rootMessageId === rootId) {
|
|
40
|
+
ds = s;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const appId = larkAppId ?? ds?.larkAppId ?? getAllBots()[0]?.config.larkAppId;
|
|
46
|
+
if (!appId)
|
|
47
|
+
throw new Error('No bot configured');
|
|
31
48
|
const inThread = ds?.chatType === 'p2p';
|
|
32
|
-
return replyMessage(rootId, content, msgType, inThread);
|
|
49
|
+
return replyMessage(appId, rootId, content, msgType, inThread);
|
|
33
50
|
}
|
|
34
51
|
// ─── PID file ────────────────────────────────────────────────────────────────
|
|
35
52
|
function getPidFile() {
|
|
@@ -41,6 +58,13 @@ function writePidFile() {
|
|
|
41
58
|
mkdirSync(dir, { recursive: true });
|
|
42
59
|
}
|
|
43
60
|
writeFileSync(getPidFile(), String(process.pid), 'utf-8');
|
|
61
|
+
// Write breadcrumb so CLI tools (botmux list/delete) can find the active data dir
|
|
62
|
+
const breadcrumb = join(homedir(), '.botmux', '.data-dir');
|
|
63
|
+
try {
|
|
64
|
+
mkdirSync(join(homedir(), '.botmux'), { recursive: true });
|
|
65
|
+
writeFileSync(breadcrumb, config.session.dataDir, 'utf-8');
|
|
66
|
+
}
|
|
67
|
+
catch { /* best effort */ }
|
|
44
68
|
logger.info(`PID file written: ${getPidFile()} (pid: ${process.pid})`);
|
|
45
69
|
}
|
|
46
70
|
function removePidFile() {
|
|
@@ -51,13 +75,13 @@ function removePidFile() {
|
|
|
51
75
|
}
|
|
52
76
|
}
|
|
53
77
|
// ─── Version tracking ────────────────────────────────────────────────────────
|
|
54
|
-
function refreshClaudeVersion() {
|
|
78
|
+
function refreshClaudeVersion(cliId, cliPathOverride) {
|
|
55
79
|
const now = Date.now();
|
|
56
|
-
|
|
80
|
+
const cached = cliVersionCache.get(cliId);
|
|
81
|
+
if (cached && now - cached.lastCheckAt < VERSION_CHECK_INTERVAL)
|
|
57
82
|
return false;
|
|
58
|
-
lastVersionCheckAt = now;
|
|
59
83
|
try {
|
|
60
|
-
const adapter = createCliAdapterSync(
|
|
84
|
+
const adapter = createCliAdapterSync(cliId, cliPathOverride);
|
|
61
85
|
const raw = execFileSync(adapter.resolvedBin, ['--version'], {
|
|
62
86
|
encoding: 'utf-8',
|
|
63
87
|
timeout: 5_000,
|
|
@@ -65,18 +89,19 @@ function refreshClaudeVersion() {
|
|
|
65
89
|
const newVersion = raw.replace(/^[^0-9]*/, '');
|
|
66
90
|
if (newVersion === 'unknown' || !newVersion)
|
|
67
91
|
return false;
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
92
|
+
const oldVersion = cached?.version;
|
|
93
|
+
cliVersionCache.set(cliId, { version: newVersion, lastCheckAt: now });
|
|
94
|
+
// Also update the shared version (used by forkWorker for ds.claudeVersion)
|
|
95
|
+
setCurrentClaudeVersion(newVersion);
|
|
96
|
+
if (oldVersion && oldVersion !== newVersion) {
|
|
97
|
+
logger.info(`CLI version updated: ${oldVersion} → ${newVersion} (${adapter.id})`);
|
|
72
98
|
return true;
|
|
73
99
|
}
|
|
74
|
-
|
|
75
|
-
logger.info(`CLI version: ${getCurrentClaudeVersion()} (${adapter.id})`);
|
|
100
|
+
logger.info(`CLI version: ${newVersion} (${adapter.id})`);
|
|
76
101
|
return false;
|
|
77
102
|
}
|
|
78
103
|
catch (err) {
|
|
79
|
-
logger.warn(`Failed to get CLI version: ${err.message}`);
|
|
104
|
+
logger.warn(`Failed to get CLI version for ${cliId}: ${err.message}`);
|
|
80
105
|
return false;
|
|
81
106
|
}
|
|
82
107
|
}
|
|
@@ -106,41 +131,47 @@ const cardDeps = {
|
|
|
106
131
|
lastRepoScan,
|
|
107
132
|
};
|
|
108
133
|
// ─── Event handling ──────────────────────────────────────────────────────────
|
|
109
|
-
async function handleNewTopic(data, chatId, messageId, chatType = 'group') {
|
|
134
|
+
async function handleNewTopic(data, chatId, messageId, chatType = 'group', larkAppId) {
|
|
110
135
|
const { parsed, resources } = parseEventMessage(data);
|
|
111
136
|
const content = parsed.content.trim();
|
|
112
137
|
const senderOpenId = data.sender?.sender_id?.open_id;
|
|
138
|
+
const botCfg = getBot(larkAppId).config;
|
|
113
139
|
logger.info(`New topic: ${messageId} "${content.substring(0, 60)}" (resources: ${resources.length}, active: ${getActiveCount()})`);
|
|
114
140
|
// Intercept daemon commands in new topics (no session needed for some commands)
|
|
115
141
|
if (content.startsWith('/')) {
|
|
116
142
|
const cmd = content.split(/\s+/)[0].toLowerCase();
|
|
117
143
|
if (DAEMON_COMMANDS.has(cmd)) {
|
|
118
144
|
const session = sessionStore.createSession(chatId, messageId, content.substring(0, 50), chatType);
|
|
119
|
-
|
|
145
|
+
session.larkAppId = larkAppId;
|
|
146
|
+
sessionStore.updateSession(session);
|
|
147
|
+
activeSessions.set(sessionKey(messageId, larkAppId), {
|
|
120
148
|
session,
|
|
121
149
|
worker: null,
|
|
122
150
|
workerPort: null,
|
|
123
151
|
workerToken: null,
|
|
152
|
+
larkAppId,
|
|
124
153
|
chatId,
|
|
125
154
|
chatType,
|
|
126
155
|
spawnedAt: Date.now(),
|
|
127
|
-
claudeVersion:
|
|
156
|
+
claudeVersion: cliVersionCache.get(botCfg.cliId)?.version ?? 'unknown',
|
|
128
157
|
lastMessageAt: Date.now(),
|
|
129
158
|
hasHistory: false,
|
|
130
159
|
ownerOpenId: senderOpenId,
|
|
131
160
|
});
|
|
132
|
-
await handleCommand(cmd, messageId, parsed, commandDeps);
|
|
161
|
+
await handleCommand(cmd, messageId, parsed, commandDeps, larkAppId);
|
|
133
162
|
return;
|
|
134
163
|
}
|
|
135
164
|
}
|
|
136
165
|
// Download attachments
|
|
137
|
-
const attachments = await downloadResources(messageId, resources);
|
|
166
|
+
const attachments = await downloadResources(larkAppId, messageId, resources);
|
|
138
167
|
if (attachments.length > 0) {
|
|
139
168
|
parsed.attachments = attachments;
|
|
140
169
|
}
|
|
141
|
-
refreshClaudeVersion();
|
|
170
|
+
refreshClaudeVersion(botCfg.cliId, botCfg.cliPathOverride);
|
|
142
171
|
// Create session in pending-repo state — don't spawn Claude yet
|
|
143
172
|
const session = sessionStore.createSession(chatId, messageId, parsed.content.substring(0, 50), chatType);
|
|
173
|
+
session.larkAppId = larkAppId;
|
|
174
|
+
sessionStore.updateSession(session);
|
|
144
175
|
messageQueue.ensureQueue(messageId);
|
|
145
176
|
messageQueue.appendMessage(messageId, parsed);
|
|
146
177
|
const ds = {
|
|
@@ -148,10 +179,11 @@ async function handleNewTopic(data, chatId, messageId, chatType = 'group') {
|
|
|
148
179
|
worker: null,
|
|
149
180
|
workerPort: null,
|
|
150
181
|
workerToken: null,
|
|
182
|
+
larkAppId,
|
|
151
183
|
chatId,
|
|
152
184
|
chatType,
|
|
153
185
|
spawnedAt: Date.now(),
|
|
154
|
-
claudeVersion:
|
|
186
|
+
claudeVersion: cliVersionCache.get(botCfg.cliId)?.version ?? 'unknown',
|
|
155
187
|
lastMessageAt: Date.now(),
|
|
156
188
|
hasHistory: false,
|
|
157
189
|
pendingRepo: true,
|
|
@@ -160,7 +192,7 @@ async function handleNewTopic(data, chatId, messageId, chatType = 'group') {
|
|
|
160
192
|
ownerOpenId: senderOpenId,
|
|
161
193
|
currentTurnTitle: content.substring(0, 50),
|
|
162
194
|
};
|
|
163
|
-
activeSessions.set(messageId, ds);
|
|
195
|
+
activeSessions.set(sessionKey(messageId, larkAppId), ds);
|
|
164
196
|
// Show repo selection card
|
|
165
197
|
const scanDirs = getProjectScanDirs(ds).filter(d => existsSync(d));
|
|
166
198
|
let projects = [];
|
|
@@ -171,41 +203,56 @@ async function handleNewTopic(data, chatId, messageId, chatType = 'group') {
|
|
|
171
203
|
lastRepoScan.set(chatId, projects);
|
|
172
204
|
const currentCwd = getSessionWorkingDir(ds);
|
|
173
205
|
const cardJson = buildRepoSelectCard(projects, currentCwd, messageId);
|
|
174
|
-
await sessionReply(messageId, cardJson, 'interactive');
|
|
206
|
+
await sessionReply(messageId, cardJson, 'interactive', larkAppId);
|
|
175
207
|
logger.info(`[${tag(ds)}] Waiting for repo selection (${projects.length} projects)`);
|
|
176
208
|
}
|
|
177
209
|
else {
|
|
178
210
|
// No projects found — skip repo selection, spawn directly
|
|
179
211
|
ds.pendingRepo = false;
|
|
180
|
-
const prompt = buildNewTopicPrompt(content, session.sessionId, attachments);
|
|
212
|
+
const prompt = buildNewTopicPrompt(content, session.sessionId, botCfg.cliId, botCfg.cliPathOverride, attachments);
|
|
181
213
|
forkWorker(ds, prompt);
|
|
182
214
|
logger.info(`Session ${session.sessionId} ready (no projects to select), total active: ${getActiveCount()}`);
|
|
183
215
|
}
|
|
184
216
|
}
|
|
185
|
-
async function handleThreadReply(data, rootId) {
|
|
217
|
+
async function handleThreadReply(data, rootId, larkAppId) {
|
|
186
218
|
const { parsed, resources } = parseEventMessage(data);
|
|
187
219
|
const content = parsed.content.trim();
|
|
188
220
|
// Intercept daemon commands
|
|
189
221
|
if (content.startsWith('/')) {
|
|
190
222
|
const cmd = content.split(/\s+/)[0].toLowerCase();
|
|
191
223
|
if (DAEMON_COMMANDS.has(cmd)) {
|
|
192
|
-
handleCommand(cmd, rootId, parsed, commandDeps);
|
|
224
|
+
handleCommand(cmd, rootId, parsed, commandDeps, larkAppId);
|
|
193
225
|
return;
|
|
194
226
|
}
|
|
195
227
|
}
|
|
196
228
|
logger.info(`Thread reply in ${rootId}: ${content.substring(0, 100)} (resources: ${resources.length})`);
|
|
229
|
+
let ds = activeSessions.get(sessionKey(rootId, larkAppId));
|
|
230
|
+
// If a different bot is @mentioned in this thread, take over the session.
|
|
231
|
+
// The event dispatcher only routes here if the bot was @mentioned or owns the session,
|
|
232
|
+
// so reaching this point without an existing session means an explicit @mention takeover.
|
|
233
|
+
if (!ds) {
|
|
234
|
+
for (const [key, otherDs] of activeSessions) {
|
|
235
|
+
if (otherDs.session.rootMessageId === rootId && otherDs.larkAppId !== larkAppId) {
|
|
236
|
+
logger.info(`[${larkAppId}] Taking over thread ${rootId} from ${otherDs.larkAppId}`);
|
|
237
|
+
killWorker(otherDs);
|
|
238
|
+
sessionStore.closeSession(otherDs.session.sessionId);
|
|
239
|
+
activeSessions.delete(key);
|
|
240
|
+
break;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
197
244
|
// Download attachments
|
|
198
|
-
const
|
|
245
|
+
const effectiveAppId = ds?.larkAppId ?? larkAppId;
|
|
246
|
+
const attachments = await downloadResources(effectiveAppId, parsed.messageId, resources);
|
|
199
247
|
if (attachments.length > 0) {
|
|
200
248
|
parsed.attachments = attachments;
|
|
201
249
|
}
|
|
202
250
|
// Update last message time
|
|
203
|
-
const ds = activeSessions.get(rootId);
|
|
204
251
|
if (ds)
|
|
205
252
|
ds.lastMessageAt = Date.now();
|
|
206
253
|
// If waiting for repo selection, remind user
|
|
207
254
|
if (ds?.pendingRepo) {
|
|
208
|
-
await sessionReply(rootId, '请先在上方卡片中选择仓库,再发送消息。');
|
|
255
|
+
await sessionReply(rootId, '请先在上方卡片中选择仓库,再发送消息。', 'text', larkAppId);
|
|
209
256
|
return;
|
|
210
257
|
}
|
|
211
258
|
// Route to file queue
|
|
@@ -213,20 +260,28 @@ async function handleThreadReply(data, rootId) {
|
|
|
213
260
|
messageQueue.appendMessage(rootId, parsed);
|
|
214
261
|
if (!ds) {
|
|
215
262
|
// No active session for this thread — auto-create with repo selection
|
|
263
|
+
if (activeSessions.has(sessionKey(rootId, larkAppId))) {
|
|
264
|
+
logger.info(`[${larkAppId}] Session already exists for thread ${rootId}, skipping auto-create`);
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
216
267
|
const chatId = data?.message?.chat_id ?? '';
|
|
217
268
|
const chatType = (data?.message?.chat_type === 'p2p' ? 'p2p' : 'group');
|
|
269
|
+
const botCfg = getBot(larkAppId).config;
|
|
218
270
|
logger.info(`No active session for thread ${rootId}, auto-creating new session...`);
|
|
219
|
-
refreshClaudeVersion();
|
|
271
|
+
refreshClaudeVersion(botCfg.cliId, botCfg.cliPathOverride);
|
|
220
272
|
const session = sessionStore.createSession(chatId, rootId, parsed.content.substring(0, 50), chatType);
|
|
273
|
+
session.larkAppId = larkAppId;
|
|
274
|
+
sessionStore.updateSession(session);
|
|
221
275
|
const newDs = {
|
|
222
276
|
session,
|
|
223
277
|
worker: null,
|
|
224
278
|
workerPort: null,
|
|
225
279
|
workerToken: null,
|
|
280
|
+
larkAppId,
|
|
226
281
|
chatId,
|
|
227
282
|
chatType,
|
|
228
283
|
spawnedAt: Date.now(),
|
|
229
|
-
claudeVersion:
|
|
284
|
+
claudeVersion: cliVersionCache.get(botCfg.cliId)?.version ?? 'unknown',
|
|
230
285
|
lastMessageAt: Date.now(),
|
|
231
286
|
hasHistory: false,
|
|
232
287
|
pendingRepo: true,
|
|
@@ -235,7 +290,7 @@ async function handleThreadReply(data, rootId) {
|
|
|
235
290
|
ownerOpenId: data.sender?.sender_id?.open_id,
|
|
236
291
|
currentTurnTitle: parsed.content.substring(0, 50),
|
|
237
292
|
};
|
|
238
|
-
activeSessions.set(rootId, newDs);
|
|
293
|
+
activeSessions.set(sessionKey(rootId, larkAppId), newDs);
|
|
239
294
|
// Show repo selection card (same as handleNewTopic)
|
|
240
295
|
const scanDirs2 = getProjectScanDirs(newDs).filter(d => existsSync(d));
|
|
241
296
|
let projects = [];
|
|
@@ -246,13 +301,13 @@ async function handleThreadReply(data, rootId) {
|
|
|
246
301
|
lastRepoScan.set(chatId, projects);
|
|
247
302
|
const currentCwd = getSessionWorkingDir(newDs);
|
|
248
303
|
const cardJson = buildRepoSelectCard(projects, currentCwd, rootId);
|
|
249
|
-
await sessionReply(rootId, cardJson, 'interactive');
|
|
304
|
+
await sessionReply(rootId, cardJson, 'interactive', larkAppId);
|
|
250
305
|
logger.info(`[${tag(newDs)}] Waiting for repo selection (${projects.length} projects)`);
|
|
251
306
|
}
|
|
252
307
|
else {
|
|
253
308
|
// No projects found — skip repo selection, spawn directly
|
|
254
309
|
newDs.pendingRepo = false;
|
|
255
|
-
const prompt = buildNewTopicPrompt(parsed.content, session.sessionId, attachments);
|
|
310
|
+
const prompt = buildNewTopicPrompt(parsed.content, session.sessionId, botCfg.cliId, botCfg.cliPathOverride, attachments);
|
|
256
311
|
forkWorker(newDs, prompt);
|
|
257
312
|
}
|
|
258
313
|
return;
|
|
@@ -266,8 +321,9 @@ async function handleThreadReply(data, rootId) {
|
|
|
266
321
|
if (ds.streamCardId && ds.workerPort) {
|
|
267
322
|
const readUrl = `http://${config.web.externalHost}:${ds.workerPort}`;
|
|
268
323
|
const prevTitle = ds.currentTurnTitle || ds.session.title || 'Claude Code';
|
|
269
|
-
const
|
|
270
|
-
|
|
324
|
+
const dsBotCfg = getBot(ds.larkAppId).config;
|
|
325
|
+
const frozenCard = buildStreamingCard(ds.session.sessionId, ds.session.rootMessageId, readUrl, prevTitle, ds.lastScreenContent ?? '', 'idle', dsBotCfg.cliId, ds.streamExpanded);
|
|
326
|
+
updateMessage(ds.larkAppId, ds.streamCardId, frozenCard).catch(() => { });
|
|
271
327
|
}
|
|
272
328
|
// Mark new turn — next screen_update will create a fresh streaming card
|
|
273
329
|
ds.streamCardPending = true;
|
|
@@ -283,7 +339,11 @@ async function handleThreadReply(data, rootId) {
|
|
|
283
339
|
}
|
|
284
340
|
// ─── Main ────────────────────────────────────────────────────────────────────
|
|
285
341
|
export async function startDaemon() {
|
|
286
|
-
|
|
342
|
+
// Load and register all bots
|
|
343
|
+
const botConfigs = loadBotConfigs();
|
|
344
|
+
for (const cfg of botConfigs) {
|
|
345
|
+
registerBot(cfg);
|
|
346
|
+
}
|
|
287
347
|
writePidFile();
|
|
288
348
|
// Initialise worker pool with daemon callbacks
|
|
289
349
|
initWorkerPool({
|
|
@@ -291,43 +351,50 @@ export async function startDaemon() {
|
|
|
291
351
|
getSessionWorkingDir,
|
|
292
352
|
getActiveCount,
|
|
293
353
|
});
|
|
294
|
-
//
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
}
|
|
311
|
-
catch (err) {
|
|
312
|
-
logger.warn(`Failed to resolve allowedUsers: ${err.message}`);
|
|
354
|
+
// Per-bot initialization
|
|
355
|
+
for (const bot of getAllBots()) {
|
|
356
|
+
const cfg = bot.config;
|
|
357
|
+
// Refresh CLI version per bot's cliId
|
|
358
|
+
refreshClaudeVersion(cfg.cliId, cfg.cliPathOverride);
|
|
359
|
+
// Resolve allowed users per bot
|
|
360
|
+
if (bot.resolvedAllowedUsers.length > 0) {
|
|
361
|
+
const hasEmails = bot.resolvedAllowedUsers.some(u => u.includes('@'));
|
|
362
|
+
if (hasEmails) {
|
|
363
|
+
try {
|
|
364
|
+
bot.resolvedAllowedUsers = await resolveAllowedUsers(cfg.larkAppId, bot.resolvedAllowedUsers);
|
|
365
|
+
logger.info(`[${cfg.larkAppId}] Resolved allowedUsers: ${bot.resolvedAllowedUsers.join(', ')}`);
|
|
366
|
+
}
|
|
367
|
+
catch (err) {
|
|
368
|
+
logger.warn(`[${cfg.larkAppId}] Failed to resolve allowedUsers: ${err.message}`);
|
|
369
|
+
}
|
|
313
370
|
}
|
|
314
371
|
}
|
|
372
|
+
// Probe bot open_id
|
|
373
|
+
probeBotOpenId(cfg.larkAppId).catch(err => {
|
|
374
|
+
logger.warn(`[${cfg.larkAppId}] Bot open_id probe failed: ${err.message}`);
|
|
375
|
+
});
|
|
376
|
+
// Start event dispatcher for this bot
|
|
377
|
+
startLarkEventDispatcher(cfg.larkAppId, cfg.larkAppSecret, {
|
|
378
|
+
handleCardAction: (data, appId) => handleCardAction(data, cardDeps, appId),
|
|
379
|
+
handleNewTopic: (data, chatId, messageId, chatType, appId) => handleNewTopic(data, chatId, messageId, chatType, appId),
|
|
380
|
+
handleThreadReply: (data, rootId, appId) => handleThreadReply(data, rootId, appId),
|
|
381
|
+
isSessionOwner: (rootId, appId) => {
|
|
382
|
+
if (!activeSessions.has(sessionKey(rootId, appId)))
|
|
383
|
+
return false;
|
|
384
|
+
// Only grant shortcut if no other bot also has a session for this rootId
|
|
385
|
+
for (const s of activeSessions.values()) {
|
|
386
|
+
if (s.session.rootMessageId === rootId && s.larkAppId !== appId)
|
|
387
|
+
return false;
|
|
388
|
+
}
|
|
389
|
+
return true;
|
|
390
|
+
},
|
|
391
|
+
});
|
|
315
392
|
}
|
|
316
|
-
// Probe bot open_id at startup (non-blocking)
|
|
317
|
-
probeBotOpenId().catch(err => {
|
|
318
|
-
logger.warn(`Bot open_id probe failed (will learn from events): ${err.message}`);
|
|
319
|
-
});
|
|
320
393
|
// Restore active sessions from previous run
|
|
321
394
|
restoreActiveSessions(activeSessions);
|
|
322
395
|
// Start scheduled task scheduler
|
|
323
396
|
scheduler.setExecuteCallback((task) => executeScheduledTask(task, activeSessions, refreshClaudeVersion));
|
|
324
397
|
scheduler.startScheduler();
|
|
325
|
-
// Start Lark event dispatcher
|
|
326
|
-
startLarkEventDispatcher({
|
|
327
|
-
handleCardAction: (data) => handleCardAction(data, cardDeps),
|
|
328
|
-
handleNewTopic,
|
|
329
|
-
handleThreadReply,
|
|
330
|
-
});
|
|
331
398
|
// Graceful shutdown
|
|
332
399
|
const shutdown = () => {
|
|
333
400
|
logger.info(`Daemon shutting down... (active: ${getActiveCount()})`);
|
|
@@ -335,7 +402,10 @@ export async function startDaemon() {
|
|
|
335
402
|
for (const [, ds] of activeSessions) {
|
|
336
403
|
if (ds.worker && !ds.worker.killed) {
|
|
337
404
|
logger.info(`Shutting down worker for session ${ds.session.sessionId}`);
|
|
338
|
-
|
|
405
|
+
const backendType = ds.larkAppId
|
|
406
|
+
? (getBot(ds.larkAppId).config.backendType ?? config.daemon.backendType)
|
|
407
|
+
: config.daemon.backendType;
|
|
408
|
+
if (backendType === 'tmux') {
|
|
339
409
|
// Tmux mode: just kill the worker process — tmux session survives for re-attach.
|
|
340
410
|
// Worker's SIGTERM handler calls backend.kill() which only detaches.
|
|
341
411
|
try {
|
package/dist/daemon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,KAAK,YAAY,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,YAAY,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAgB,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EACL,cAAc,EACd,UAAU,EACV,UAAU,EACV,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE3E,OAAO,EACL,oBAAoB,EAEpB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzF,gFAAgF;AAEhF,MAAM,cAAc,GAAG,IAAI,GAAG,EAAyB,CAAC;AACxD,qEAAqE;AACrE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAiE,CAAC;AAC9F,IAAI,kBAAkB,GAAG,CAAC,CAAC;AAC3B,MAAM,sBAAsB,GAAG,MAAM,CAAC,CAAC,cAAc;AAErD;;;GAGG;AACH,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,OAAe,EAAE,UAAkB,MAAM;IACnF,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,EAAE,EAAE,QAAQ,KAAK,KAAK,CAAC;IACxC,OAAO,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC1D,CAAC;AAED,gFAAgF;AAEhF,SAAS,UAAU;IACjB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;IACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,aAAa,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,CAAC,IAAI,CAAC,qBAAqB,UAAU,EAAE,UAAU,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,UAAU,CAAC,OAAO,CAAC,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,gFAAgF;AAEhF,SAAS,oBAAoB;IAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,GAAG,GAAG,kBAAkB,GAAG,sBAAsB;QAAE,OAAO,KAAK,CAAC;IACpE,kBAAkB,GAAG,GAAG,CAAC;IAEzB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,oBAAoB,CAClC,MAAM,CAAC,MAAM,CAAC,KAAK,EACnB,MAAM,CAAC,MAAM,CAAC,eAAe,CAC9B,CAAC;QACF,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,EAAE;YAC3D,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAE/C,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QAE1D,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;QACzC,IAAI,MAAM,KAAK,SAAS,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YAClD,uBAAuB,CAAC,UAAU,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,wBAAwB,MAAM,MAAM,UAAU,KAAK,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;YAC9E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,gBAAgB,uBAAuB,EAAE,KAAK,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;QACzE,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,8BAA8B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,gFAAgF;AAEhF,SAAS,GAAG,CAAC,EAAiB;IAC5B,OAAO,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC;QACpC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM;YAAE,KAAK,EAAE,CAAC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,yCAAyC;AACzC,MAAM,WAAW,GAAuB;IACtC,cAAc;IACd,YAAY;IACZ,cAAc;IACd,YAAY;CACb,CAAC;AAEF,sCAAsC;AACtC,MAAM,QAAQ,GAAoB;IAChC,cAAc;IACd,YAAY;IACZ,YAAY;CACb,CAAC;AAEF,gFAAgF;AAEhF,KAAK,UAAU,cAAc,CAAC,IAAS,EAAE,MAAc,EAAE,SAAiB,EAAE,WAA4B,OAAO;IAC7G,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,YAAY,GAAuB,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;IACzE,MAAM,CAAC,IAAI,CAAC,cAAc,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,SAAS,CAAC,MAAM,aAAa,cAAc,EAAE,GAAG,CAAC,CAAC;IAEnI,gFAAgF;IAChF,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAClD,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;YAClG,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE;gBAC5B,OAAO;gBACP,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,IAAI;gBAChB,WAAW,EAAE,IAAI;gBACjB,MAAM;gBACN,QAAQ;gBACR,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,aAAa,EAAE,uBAAuB,EAAE;gBACxC,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE;gBACzB,UAAU,EAAE,KAAK;gBACjB,WAAW,EAAE,YAAY;aAC1B,CAAC,CAAC;YACH,MAAM,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAClE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAED,oBAAoB,EAAE,CAAC;IAEvB,gEAAgE;IAChE,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IACzG,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACpC,YAAY,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAE9C,MAAM,EAAE,GAAkB;QACxB,OAAO;QACP,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,IAAI;QACjB,MAAM;QACN,QAAQ;QACR,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,aAAa,EAAE,uBAAuB,EAAE;QACxC,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE;QACzB,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,OAAO;QACtB,kBAAkB,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QACpE,WAAW,EAAE,YAAY;QACzB,gBAAgB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;KAC3C,CAAC;IACF,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAElC,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,IAAI,QAAQ,GAA0D,EAAE,CAAC;IACzE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QACtE,MAAM,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,iCAAiC,QAAQ,CAAC,MAAM,YAAY,CAAC,CAAC;IACvF,CAAC;SAAM,CAAC;QACN,0DAA0D;QAC1D,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC;QACvB,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC5E,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,SAAS,iDAAiD,cAAc,EAAE,EAAE,CAAC,CAAC;IAC/G,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,IAAS,EAAE,MAAc;IACxD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAEtC,4BAA4B;IAC5B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAClD,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,mBAAmB,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,gBAAgB,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAExG,uBAAuB;IACvB,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACzE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAED,2BAA2B;IAC3B,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,EAAE;QAAE,EAAE,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEtC,6CAA6C;IAC7C,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC;QACpB,MAAM,YAAY,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IAED,sBAAsB;IACtB,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE3C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,sEAAsE;QACtE,MAAM,MAAM,GAAW,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAoB,CAAC;QAC3F,MAAM,CAAC,IAAI,CAAC,gCAAgC,MAAM,gCAAgC,CAAC,CAAC;QACpF,oBAAoB,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;QACtG,MAAM,KAAK,GAAkB;YAC3B,OAAO;YACP,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,IAAI;YACjB,MAAM;YACN,QAAQ;YACR,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,aAAa,EAAE,uBAAuB,EAAE;YACxC,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE;YACzB,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,MAAM,CAAC,OAAO;YAC7B,kBAAkB,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YACpE,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO;YAC5C,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;SAClD,CAAC;QACF,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAElC,oDAAoD;QACpD,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,IAAI,QAAQ,GAA0D,EAAE,CAAC;QACzE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,QAAQ,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACnC,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YACnE,MAAM,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,iCAAiC,QAAQ,CAAC,MAAM,YAAY,CAAC,CAAC;QAC1F,CAAC;aAAM,CAAC;YACN,0DAA0D;YAC1D,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;YAC1B,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YACnF,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO;IACT,CAAC;IAED,iCAAiC;IACjC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;YACvC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,qBAAqB,CAAC,WAAW,CAAC,EAAE;YAC1D,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACnB,uEAAuE;QACvE,IAAI,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,UAAU,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;YACrE,MAAM,SAAS,GAAG,EAAE,CAAC,gBAAgB,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC;YAC3E,MAAM,UAAU,GAAG,kBAAkB,CACnC,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,SAAS,EAClE,EAAE,CAAC,iBAAiB,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAC3E,CAAC;YACF,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,wEAAwE;QACxE,EAAE,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC5B,EAAE,CAAC,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAoB,CAAC,CAAC;IAC7E,CAAC;SAAM,CAAC;QACN,2CAA2C;QAC3C,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,qCAAqC,CAAC,CAAC;QAC9D,EAAE,CAAC,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtD,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,cAAc,EAAE,CAAC;IACjB,YAAY,EAAE,CAAC;IAEf,+CAA+C;IAC/C,cAAc,CAAC;QACb,YAAY;QACZ,oBAAoB;QACpB,cAAc;KACf,CAAC,CAAC;IAEH,0BAA0B;IAC1B,oBAAoB,EAAE,CAAC;IACvB,IAAI,uBAAuB,EAAE,KAAK,SAAS,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;IAED,qCAAqC;IACrC,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACjG,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,2EAA2E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/G,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACxE,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBACnF,MAAM,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjF,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,mCAAmC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,cAAc,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QAC3B,MAAM,CAAC,IAAI,CAAC,sDAAsD,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,4CAA4C;IAC5C,qBAAqB,CAAC,cAAc,CAAC,CAAC;IAEtC,iCAAiC;IACjC,SAAS,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,oBAAoB,CAAC,CAAC,CAAC;IACzG,SAAS,CAAC,cAAc,EAAE,CAAC;IAE3B,8BAA8B;IAC9B,wBAAwB,CAAC;QACvB,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC5D,cAAc;QACd,iBAAiB;KAClB,CAAC,CAAC;IAEH,oBAAoB;IACpB,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,MAAM,CAAC,IAAI,CAAC,oCAAoC,cAAc,EAAE,GAAG,CAAC,CAAC;QACrE,SAAS,CAAC,aAAa,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC;YACpC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnC,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;gBACxE,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;oBACzC,iFAAiF;oBACjF,qEAAqE;oBACrE,IAAI,CAAC;wBAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;oBACzD,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;oBACjB,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC;oBACrB,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,EAAE,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;QACD,aAAa,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE/B,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;AAC1D,CAAC"}
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@ import type { DaemonSession } from '../../core/types.js';
|
|
|
2
2
|
import type { ProjectInfo } from '../../services/project-scanner.js';
|
|
3
3
|
export interface CardHandlerDeps {
|
|
4
4
|
activeSessions: Map<string, DaemonSession>;
|
|
5
|
-
sessionReply: (rootId: string, content: string, msgType?: string) => Promise<string>;
|
|
5
|
+
sessionReply: (rootId: string, content: string, msgType?: string, larkAppId?: string) => Promise<string>;
|
|
6
6
|
lastRepoScan: Map<string, ProjectInfo[]>;
|
|
7
7
|
}
|
|
8
|
-
export declare function handleCardAction(data: any, deps: CardHandlerDeps): Promise<void>;
|
|
8
|
+
export declare function handleCardAction(data: any, deps: CardHandlerDeps, larkAppId?: string): Promise<void>;
|
|
9
9
|
//# sourceMappingURL=card-handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card-handler.d.ts","sourceRoot":"","sources":["../../../src/im/lark/card-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"card-handler.d.ts","sourceRoot":"","sources":["../../../src/im/lark/card-handler.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAIrE,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACzG,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;CAC1C;AAUD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6L1G"}
|