@raolin2025/claude-code-node 2.7.6 → 2.7.7
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/package.json +1 -1
- package/src/core/cli.js +13 -35
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@raolin2025/claude-code-node",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.7",
|
|
4
4
|
"description": "Node.js AI Code Agent CLI - Zero dependencies, pure JavaScript, security hardened, multi-channel notifications, Telegram & QQ Bot remote programming, rich media upload, multi-account management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/core/index.js",
|
package/src/core/cli.js
CHANGED
|
@@ -588,10 +588,6 @@ const systemPrompt = cliArgs.systemPrompt || DEFAULT_SYSTEM_PROMPT
|
|
|
588
588
|
let currentSource = 'cli'
|
|
589
589
|
// 等待中的 Telegram 权限确认(resolve 回调)— 远程用户回复 y/n/a 时响应
|
|
590
590
|
let pendingConfirm = null
|
|
591
|
-
// 等待中的 Telegram AskUserQuestion 回答(resolve 回调)— 远程用户回复任意文本时响应
|
|
592
|
-
let pendingAskUser = null
|
|
593
|
-
// 取消当前等待中的 AskUserQuestion(用户 /stop 时调用,resolve 为取消标记,避免死锁)
|
|
594
|
-
let cancelAskUser = null
|
|
595
591
|
// 最近一次 /models 拉取的模型列表(供 /model <编号> 选择)
|
|
596
592
|
let modelList = []
|
|
597
593
|
// /models 从 Telegram 发出后,等待用户回复编号/名字来选择模型
|
|
@@ -611,14 +607,8 @@ const systemPrompt = cliArgs.systemPrompt || DEFAULT_SYSTEM_PROMPT
|
|
|
611
607
|
// 关键:来自 Telegram 的消息,如果当前正在等待远程权限确认(pendingConfirm),
|
|
612
608
|
// 则把它当作确认回复(y/n/a)处理,而不是当作新的 REPL 输入。
|
|
613
609
|
// 注意:/ 开头的命令优先走命令分支,不被权限确认拦截(否则 /quit、/stop 会被吞)。
|
|
614
|
-
//
|
|
615
|
-
|
|
616
|
-
const ask = pendingAskUser
|
|
617
|
-
pendingAskUser = null
|
|
618
|
-
cancelAskUser = null
|
|
619
|
-
ask.fn(trimmed)
|
|
620
|
-
return
|
|
621
|
-
}
|
|
610
|
+
// (AskUserQuestion 已改为异步发问,不再依赖 pendingAskUser 挂起结构——用户回复
|
|
611
|
+
// 作为正常消息进入引擎处理,无锁死/发呆问题。)
|
|
622
612
|
if (source === 'telegram' && pendingConfirm && !trimmed.startsWith('/')) {
|
|
623
613
|
const confirm = pendingConfirm
|
|
624
614
|
pendingConfirm = null
|
|
@@ -812,13 +802,7 @@ const systemPrompt = cliArgs.systemPrompt || DEFAULT_SYSTEM_PROMPT
|
|
|
812
802
|
break
|
|
813
803
|
case 'stop':
|
|
814
804
|
// 停止当前正在运行的 AI 工作(如卡死 / 长时间无响应时)。
|
|
815
|
-
//
|
|
816
|
-
if (pendingAskUser) {
|
|
817
|
-
const cancel = cancelAskUser
|
|
818
|
-
pendingAskUser = null
|
|
819
|
-
cancelAskUser = null
|
|
820
|
-
if (cancel) cancel()
|
|
821
|
-
}
|
|
805
|
+
// AskUserQuestion 已改为异步发问(不挂起),无需在此取消 pending 等待。
|
|
822
806
|
if (engine.state.isRunning) {
|
|
823
807
|
engine.abort()
|
|
824
808
|
console.log('⏹️ 已发送停止信号,正在中止当前工作...')
|
|
@@ -1157,25 +1141,19 @@ const systemPrompt = cliArgs.systemPrompt || DEFAULT_SYSTEM_PROMPT
|
|
|
1157
1141
|
}
|
|
1158
1142
|
engine.config.readline = rl
|
|
1159
1143
|
|
|
1160
|
-
// AskUserQuestion 工具回调 —
|
|
1161
|
-
// - Telegram
|
|
1162
|
-
//
|
|
1144
|
+
// AskUserQuestion 工具回调 — 按通道分流:
|
|
1145
|
+
// - Telegram 可用时:异步发问——发问题到 Telegram 后立即返回(不挂起 Promise、不锁死引擎),
|
|
1146
|
+
// 用户后续回复作为正常消息进入,由下一轮引擎处理时把回复当作回答。
|
|
1147
|
+
// 避免旧"挂起等待"结构导致会话卡死/发呆。
|
|
1148
|
+
// - CLI 本地模式:同步等待本地终端输入。
|
|
1163
1149
|
engine.config.onAskUser = (question) => {
|
|
1164
|
-
if (
|
|
1165
|
-
const promptText = `❓ ${question}\n\n
|
|
1150
|
+
if (tgListener?.bot && tgChatId) {
|
|
1151
|
+
const promptText = `❓ ${question}\n\n请直接回复你的回答。`
|
|
1166
1152
|
sendTelegram(promptText, null).catch(() => {})
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
// 用户回复任意文本即作为回答;用户 /stop 则通过 cancelAskUser 取消(resolve 取消标记,避免死锁)。
|
|
1170
|
-
pendingAskUser = { fn: (val) => resolve(val) }
|
|
1171
|
-
cancelAskUser = () => {
|
|
1172
|
-
if (pendingAskUser) pendingAskUser = null
|
|
1173
|
-
cancelAskUser = null
|
|
1174
|
-
resolve('(提问已取消)')
|
|
1175
|
-
}
|
|
1176
|
-
})
|
|
1153
|
+
// 立即返回,不挂起;用户回复会在下一轮以正常消息进入
|
|
1154
|
+
return `(已向用户提问,等待回复): ${question}`
|
|
1177
1155
|
}
|
|
1178
|
-
// CLI
|
|
1156
|
+
// CLI 本地模式:同步等待终端输入
|
|
1179
1157
|
return askQuestion(`❓ ${question}\n> `)
|
|
1180
1158
|
}
|
|
1181
1159
|
|