@jesonliu/lark-claudecode-bridge 0.11.0 → 0.14.2

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 (82) hide show
  1. package/README.md +89 -49
  2. package/assets/web/index.html +1769 -0
  3. package/config.example.yaml +22 -2
  4. package/dist/auth-precheck.d.ts +5 -2
  5. package/dist/auth-precheck.js +8 -2
  6. package/dist/auth-precheck.js.map +1 -1
  7. package/dist/bin/lcb.js +32 -3
  8. package/dist/bin/lcb.js.map +1 -1
  9. package/dist/claude-config.d.ts +24 -0
  10. package/dist/claude-config.js +143 -0
  11. package/dist/claude-config.js.map +1 -0
  12. package/dist/cli/setup-wizard.d.ts +1 -0
  13. package/dist/cli/setup-wizard.js +4 -0
  14. package/dist/cli/setup-wizard.js.map +1 -1
  15. package/dist/config-defaults.d.ts +4 -0
  16. package/dist/config-defaults.js +15 -0
  17. package/dist/config-defaults.js.map +1 -0
  18. package/dist/config.d.ts +7 -0
  19. package/dist/config.js +207 -6
  20. package/dist/config.js.map +1 -1
  21. package/dist/executor/claude-executor.d.ts +7 -2
  22. package/dist/executor/claude-executor.js +62 -17
  23. package/dist/executor/claude-executor.js.map +1 -1
  24. package/dist/executor/output-collector.d.ts +2 -0
  25. package/dist/executor/output-collector.js +15 -3
  26. package/dist/executor/output-collector.js.map +1 -1
  27. package/dist/executor/permission-gate.d.ts +37 -3
  28. package/dist/executor/permission-gate.js +86 -16
  29. package/dist/executor/permission-gate.js.map +1 -1
  30. package/dist/executor/plugin-discovery.d.ts +30 -0
  31. package/dist/executor/plugin-discovery.js +68 -1
  32. package/dist/executor/plugin-discovery.js.map +1 -1
  33. package/dist/executor/plugin-manager.d.ts +35 -0
  34. package/dist/executor/plugin-manager.js +109 -0
  35. package/dist/executor/plugin-manager.js.map +1 -0
  36. package/dist/feishu/slash-commands.d.ts +77 -0
  37. package/dist/feishu/slash-commands.js +188 -0
  38. package/dist/feishu/slash-commands.js.map +1 -0
  39. package/dist/gateway/card-builder.d.ts +18 -0
  40. package/dist/gateway/card-builder.js +61 -1
  41. package/dist/gateway/card-builder.js.map +1 -1
  42. package/dist/gateway/feishu-gateway.d.ts +10 -0
  43. package/dist/gateway/feishu-gateway.js +4 -0
  44. package/dist/gateway/feishu-gateway.js.map +1 -1
  45. package/dist/gateway/progress-card.d.ts +8 -0
  46. package/dist/gateway/progress-card.js +16 -0
  47. package/dist/gateway/progress-card.js.map +1 -1
  48. package/dist/index.d.ts +2 -0
  49. package/dist/index.js +210 -28
  50. package/dist/index.js.map +1 -1
  51. package/dist/session/commands.d.ts +16 -1
  52. package/dist/session/commands.js +77 -17
  53. package/dist/session/commands.js.map +1 -1
  54. package/dist/session/plugin-command.d.ts +14 -0
  55. package/dist/session/plugin-command.js +110 -0
  56. package/dist/session/plugin-command.js.map +1 -0
  57. package/dist/session/session-store.d.ts +14 -1
  58. package/dist/session/session-store.js +15 -0
  59. package/dist/session/session-store.js.map +1 -1
  60. package/dist/types.d.ts +69 -1
  61. package/dist/util/open-browser.d.ts +1 -0
  62. package/dist/util/open-browser.js +20 -0
  63. package/dist/util/open-browser.js.map +1 -0
  64. package/dist/util/server-url.d.ts +3 -0
  65. package/dist/util/server-url.js +10 -0
  66. package/dist/util/server-url.js.map +1 -0
  67. package/dist/web/config-api.d.ts +52 -0
  68. package/dist/web/config-api.js +186 -0
  69. package/dist/web/config-api.js.map +1 -0
  70. package/dist/web/lifecycle.d.ts +52 -0
  71. package/dist/web/lifecycle.js +167 -0
  72. package/dist/web/lifecycle.js.map +1 -0
  73. package/dist/web/model-list.d.ts +36 -0
  74. package/dist/web/model-list.js +101 -0
  75. package/dist/web/model-list.js.map +1 -0
  76. package/dist/web/server.d.ts +22 -0
  77. package/dist/web/server.js +618 -0
  78. package/dist/web/server.js.map +1 -0
  79. package/dist/web/update.d.ts +26 -0
  80. package/dist/web/update.js +64 -0
  81. package/dist/web/update.js.map +1 -0
  82. package/package.json +2 -1
package/dist/config.js CHANGED
@@ -92,7 +92,8 @@ function normalizePermissions(doc) {
92
92
  if (typeof s !== 'string' || !s.trim())
93
93
  throw new Error(`permissions.dangerous_commands[${i}] 必须为非空正则字符串,请检查 config.yaml`);
94
94
  try {
95
- return new RegExp(s);
95
+ // 统一 i flag 与内置 DEFAULT_DANGEROUS_COMMANDS 一致(大小写变体的危险命令同样命中;黑名单扩大仅偏安全方向)
96
+ return new RegExp(s, 'i');
96
97
  }
97
98
  catch (e) {
98
99
  throw new Error(`permissions.dangerous_commands[${i}] 不是合法正则("${s}"):${e.message}`);
@@ -104,6 +105,194 @@ function normalizePermissions(doc) {
104
105
  ...(dangerous !== undefined ? { dangerousCommands } : {}),
105
106
  };
106
107
  }
108
+ /** Web 配置页服务器段(整体可选):host 缺省 127.0.0.1、port 硬校验(非法值会让 server 起不来) */
109
+ function normalizeServer(doc) {
110
+ const raw = doc.server;
111
+ if (raw === undefined || raw === null)
112
+ return undefined;
113
+ if (typeof raw !== 'object')
114
+ throw new Error('server 必须为对象(含 enabled / host / port),请检查 config.yaml');
115
+ const s = raw;
116
+ let enabled = true;
117
+ if (s.enabled !== undefined && s.enabled !== null) {
118
+ if (typeof s.enabled !== 'boolean')
119
+ throw new Error('server.enabled 必须为布尔值,请检查 config.yaml');
120
+ enabled = s.enabled;
121
+ }
122
+ let host = '127.0.0.1';
123
+ if (s.host !== undefined && s.host !== null) {
124
+ if (typeof s.host !== 'string' || !s.host.trim())
125
+ throw new Error('server.host 必须为非空字符串,请检查 config.yaml');
126
+ host = s.host.trim();
127
+ // 默认只绑回环:放开到非回环地址意味着局域网可见(配置页能读写全部凭证),显式警示
128
+ if (host !== '127.0.0.1' && host !== 'localhost' && host !== '::1') {
129
+ console.warn(`[配置] server.host = ${host} 非回环地址:配置页将暴露给局域网(页面可读写 app_secret 等凭证),请确认网络环境可信`);
130
+ }
131
+ }
132
+ let port = 17317;
133
+ if (s.port !== undefined && s.port !== null) {
134
+ port = Number(s.port);
135
+ if (!Number.isInteger(port) || port < 1 || port > 65535) {
136
+ throw new Error(`server.port 必须为 1-65535 的整数(当前值:${String(s.port)}),请检查 config.yaml`);
137
+ }
138
+ }
139
+ return { enabled, host, port };
140
+ }
141
+ /** Claude 认证段(整体可选):mode 缺省 inherit;managed 下两凭证并存硬抛(会被 API 拒绝且意图不明) */
142
+ function normalizeClaude(doc) {
143
+ const raw = doc.claude;
144
+ if (raw === undefined || raw === null)
145
+ return undefined;
146
+ if (typeof raw !== 'object')
147
+ throw new Error('claude 必须为对象(含 mode / auth_token / api_key / base_url / model),请检查 config.yaml');
148
+ const c = raw;
149
+ let mode = 'inherit';
150
+ if (c.mode !== undefined && c.mode !== null) {
151
+ if (c.mode !== 'inherit' && c.mode !== 'managed') {
152
+ throw new Error(`claude.mode 必须为 inherit / managed(当前值:${String(c.mode)}),请检查 config.yaml`);
153
+ }
154
+ mode = c.mode;
155
+ }
156
+ const str = (v) => {
157
+ if (v === undefined || v === null)
158
+ return undefined;
159
+ if (typeof v !== 'string')
160
+ throw new Error('claude 段的字段必须为字符串,请检查 config.yaml');
161
+ const t = v.trim();
162
+ return t ? t : undefined;
163
+ };
164
+ const authToken = str(c.auth_token);
165
+ const apiKey = str(c.api_key);
166
+ if (authToken && apiKey) {
167
+ throw new Error('claude.auth_token 与 claude.api_key 只能二选一(并存时 API 侧凭证歧义),请检查 config.yaml');
168
+ }
169
+ const baseUrl = str(c.base_url);
170
+ if (baseUrl && !/^https?:\/\//.test(baseUrl)) {
171
+ console.warn(`[配置] claude.base_url = ${baseUrl} 不以 http(s):// 开头,请确认是否漏写协议`);
172
+ }
173
+ // managed 无凭证:允许落盘(首次进配置页的中间态),启动时 auth-precheck 会再提示
174
+ if (mode === 'managed' && !authToken && !apiKey) {
175
+ console.warn('[配置] claude.mode = managed 但未配置 auth_token / api_key:请在 Web 配置页填写,否则 Claude 任务将无法认证');
176
+ }
177
+ const model = str(c.model);
178
+ // managed 模式显式环境变量(MCP 工具依赖的自定义变量;领土 4 键不在此生效,buildManagedSettings 入口过滤)
179
+ const envRaw = raw.env;
180
+ let env;
181
+ if (envRaw !== undefined && envRaw !== null) {
182
+ if (typeof envRaw !== 'object' || Array.isArray(envRaw)) {
183
+ throw new Error('claude.env 必须为「KEY: 值」映射对象,请检查 config.yaml');
184
+ }
185
+ const picked = {};
186
+ for (const [k, v] of Object.entries(envRaw)) {
187
+ if (typeof v !== 'string')
188
+ throw new Error(`claude.env.${k} 的值必须为字符串,请检查 config.yaml`);
189
+ if (v.trim())
190
+ picked[k] = v;
191
+ }
192
+ if (Object.keys(picked).length)
193
+ env = picked;
194
+ }
195
+ // 多厂商档案库(不直接生效;Web 页「设为当前」拷贝到顶层)。校验与顶层同则:凭证二选一、http(s) 协议
196
+ const profilesRaw = raw.profiles;
197
+ let profiles;
198
+ if (profilesRaw !== undefined && profilesRaw !== null) {
199
+ if (!Array.isArray(profilesRaw))
200
+ throw new Error('claude.profiles 必须为数组,请检查 config.yaml');
201
+ const seenNames = new Set();
202
+ profiles = [];
203
+ profilesRaw.forEach((e, i) => {
204
+ const where = `claude.profiles[${i}]`;
205
+ if (typeof e !== 'object' || e === null || Array.isArray(e))
206
+ throw new Error(`${where} 必须为对象(name + 凭证/BaseUrl/模型),请检查 config.yaml`);
207
+ const p = e;
208
+ const name = str(p.name);
209
+ if (!name)
210
+ throw new Error(`${where} 缺少 name(档案名,显示用),请检查 config.yaml`);
211
+ const pAuthToken = str(p.auth_token);
212
+ const pApiKey = str(p.api_key);
213
+ if (pAuthToken && pApiKey) {
214
+ throw new Error(`${where}(${name})的 auth_token 与 api_key 只能二选一,请检查 config.yaml`);
215
+ }
216
+ const pBaseUrl = str(p.base_url);
217
+ if (pBaseUrl && !/^https?:\/\//.test(pBaseUrl)) {
218
+ console.warn(`[配置] ${where}(${name})的 base_url = ${pBaseUrl} 不以 http(s):// 开头,请确认是否漏写协议`);
219
+ }
220
+ const pModel = str(p.model);
221
+ // 候选模型集:字符串数组,trim 去空去重(页面点选切换用,不直接生效)
222
+ const pModelsRaw = p.models;
223
+ let pModels;
224
+ if (pModelsRaw !== undefined && pModelsRaw !== null) {
225
+ if (!Array.isArray(pModelsRaw))
226
+ throw new Error(`${where}(${name})的 models 必须为字符串数组,请检查 config.yaml`);
227
+ const seenModels = new Set();
228
+ for (const m of pModelsRaw) {
229
+ if (typeof m !== 'string')
230
+ throw new Error(`${where}(${name})的 models 必须为字符串数组,请检查 config.yaml`);
231
+ const t = m.trim();
232
+ if (t)
233
+ seenModels.add(t);
234
+ }
235
+ pModels = seenModels.size ? [...seenModels] : undefined;
236
+ }
237
+ if (!pAuthToken && !pApiKey && !pBaseUrl && !pModel && !pModels) {
238
+ console.warn(`[配置] ${where}(${name})除名字外全为空,已剔除`);
239
+ return;
240
+ }
241
+ if (seenNames.has(name)) {
242
+ console.warn(`[配置] ${where} 档案名 "${name}" 重复,已忽略后条`);
243
+ return;
244
+ }
245
+ seenNames.add(name);
246
+ profiles.push({ name, ...(pAuthToken ? { authToken: pAuthToken } : {}), ...(pApiKey ? { apiKey: pApiKey } : {}),
247
+ ...(pBaseUrl ? { baseUrl: pBaseUrl } : {}), ...(pModel ? { model: pModel } : {}), ...(pModels ? { models: pModels } : {}) });
248
+ });
249
+ if (!profiles.length)
250
+ profiles = undefined;
251
+ }
252
+ return { mode, ...(authToken ? { authToken } : {}), ...(apiKey ? { apiKey } : {}), ...(baseUrl ? { baseUrl } : {}), ...(model ? { model } : {}),
253
+ ...(env ? { env } : {}), ...(profiles ? { profiles } : {}) };
254
+ }
255
+ /** 斜杠命令名合法性(飞书侧注册约束):1-32 位字母/数字/下划线/连字符。extra 解析与 Web 远端 create 端点共用 */
256
+ export const SLASH_COMMAND_RE = /^[A-Za-z0-9_-]{1,32}$/;
257
+ /** 斜杠命令同步段(整体可选):extra 为自定义透传命令;与内置命令的重名在 expectedCommands 合并时处理(内置优先) */
258
+ function normalizeSlashCommands(doc) {
259
+ const raw = doc.slash_commands;
260
+ if (raw === undefined || raw === null)
261
+ return undefined;
262
+ if (typeof raw !== 'object')
263
+ throw new Error('slash_commands 必须为对象(含 extra 数组),请检查 config.yaml');
264
+ const extraRaw = raw.extra;
265
+ if (extraRaw === undefined || extraRaw === null)
266
+ return {};
267
+ if (!Array.isArray(extraRaw))
268
+ throw new Error('slash_commands.extra 必须为数组,请检查 config.yaml');
269
+ const seen = new Set();
270
+ const extra = [];
271
+ extraRaw.forEach((e, i) => {
272
+ const where = `slash_commands.extra[${i}]`;
273
+ let command = typeof e?.command === 'string' ? e.command.trim() : '';
274
+ const description = typeof e?.description === 'string' ? e.description.trim() : '';
275
+ if (!command)
276
+ throw new Error(`${where} 缺少 command,请检查 config.yaml`);
277
+ if (command.startsWith('/')) {
278
+ command = command.slice(1); // 飞书侧注册用裸名,容错剥离
279
+ console.warn(`[配置] ${where} 的 command 不应带 / 前缀(飞书斜杠命令注册用裸名),已自动剥离`);
280
+ }
281
+ if (!SLASH_COMMAND_RE.test(command)) {
282
+ throw new Error(`${where} 的 command "${command}" 须为 1-32 位字母/数字/下划线/连字符`);
283
+ }
284
+ if (!description)
285
+ throw new Error(`${where} 缺少 description(飞书指令面板展示用),请检查 config.yaml`);
286
+ if (seen.has(command)) {
287
+ console.warn(`[配置] ${where} 的 command "${command}" 重复,已忽略后条`);
288
+ return;
289
+ }
290
+ seen.add(command);
291
+ const icon = typeof e?.icon === 'string' && e.icon.trim() ? e.icon.trim() : undefined;
292
+ extra.push(icon ? { command, description, icon } : { command, description });
293
+ });
294
+ return { extra };
295
+ }
107
296
  /**
108
297
  * 归一化应用列表:doc.apps 数组优先(并存旧 feishu 时 warn 忽略);
109
298
  * 无 apps 有 feishu → 归一化为单元素数组(只在内存归一,不回写文件,保住用户手写注释)。
@@ -182,12 +371,19 @@ export function loadConfig(path = CONFIG_PATH) {
182
371
  catch {
183
372
  throw new Error(`找不到配置文件 ${path},请先运行 lcb setup`);
184
373
  }
374
+ return parseConfigText(raw, path);
375
+ }
376
+ /**
377
+ * 从 YAML 文本解析配置(loadConfig 的字符串版):Web 配置页 PUT /api/config 写盘前
378
+ * 的内存校验复用同一套 normalize 逻辑,保证「页面能保存的」与「启动能加载的」完全一致。
379
+ */
380
+ export function parseConfigText(raw, pathForError = CONFIG_PATH) {
185
381
  let doc;
186
382
  try {
187
383
  doc = parse(raw);
188
384
  }
189
385
  catch (e) {
190
- throw new Error(`配置文件 YAML 语法错误:${e.message}`);
386
+ throw new Error(`配置文件 YAML 语法错误:${e.message}(${pathForError})`);
191
387
  }
192
388
  const workspaces = normalizeWorkspaces(doc.workspaces);
193
389
  const defaults = (doc.defaults ?? {});
@@ -202,6 +398,11 @@ export function loadConfig(path = CONFIG_PATH) {
202
398
  const apps = normalizeApps(doc, workspaces.map((w) => w.name));
203
399
  const transcriptsRaw = (doc.transcripts ?? {});
204
400
  const retentionDays = Number(transcriptsRaw.retention_days ?? 0);
401
+ // 可选段统一模式:normalize 返回 undefined = 段未配置,不落键
402
+ const section = (v, key) => (v === undefined ? {} : { [key]: v });
403
+ const server = normalizeServer(doc);
404
+ const claude = normalizeClaude(doc);
405
+ const slashCommands = normalizeSlashCommands(doc);
205
406
  return {
206
407
  apps,
207
408
  workspaces,
@@ -210,10 +411,10 @@ export function loadConfig(path = CONFIG_PATH) {
210
411
  // 缺省/0/非法 = 永久保留,不默认删用户数据
211
412
  transcripts: Number.isFinite(retentionDays) && retentionDays > 0 ? { retentionDays } : undefined,
212
413
  // 权限白名单:未配置的字段由消费侧(permission-gate)回退内置默认
213
- ...((() => {
214
- const permissions = normalizePermissions(doc);
215
- return permissions ? { permissions } : {};
216
- })()),
414
+ ...section(normalizePermissions(doc), 'permissions'),
415
+ ...section(server, 'server'),
416
+ ...section(claude, 'claude'),
417
+ ...section(slashCommands, 'slashCommands'),
217
418
  };
218
419
  }
219
420
  /** 热重载比较:任一 app 的凭证/名称/工作区/并发/配置目录/人格变化即视为需重启的变更(顺序敏感) */
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,10 @@ export interface ExecutorCallbacks {
5
5
  /** SDK init(system/init) 消息到达时回调(每 query 仅一次);提取本会话实际加载的模型/技能/插件/MCP 清单 */
6
6
  onInit?(inventory: Omit<SessionInventory, 'workspace' | 'loadedAt'>): void;
7
7
  }
8
+ /** canUseTool 第三参(SDK 原样透传的子集):suggestions 为 CLI 建议的权限更新(如 ExitPlanMode 后 setMode acceptEdits) */
9
+ export interface CanUseToolContext {
10
+ suggestions?: unknown[];
11
+ }
8
12
  export interface RunTaskOptions {
9
13
  cwd: string;
10
14
  resumeSessionId?: string;
@@ -15,11 +19,12 @@ export interface RunTaskOptions {
15
19
  appendSystemPrompt?: string;
16
20
  /** 通道级模型覆盖(/model 命令设置),直通 Options.model;未设 = 跟随 ~/.claude/settings.json 的 model */
17
21
  model?: string;
18
- /** SDK 权限模式:code-dev 工作区传 'plan'(先出计划 → 飞书卡片批准后自动切可编辑),缺省 'default' */
22
+ /** SDK 权限模式:code-dev 工作区传 'plan'(先出计划 → 飞书卡片批准后切 acceptEdits),缺省 'default' */
19
23
  permissionMode?: 'default' | 'plan';
20
- canUseTool?: (toolName: string, input: Record<string, unknown>) => Promise<{
24
+ canUseTool?: (toolName: string, input: Record<string, unknown>, ctx?: CanUseToolContext) => Promise<{
21
25
  behavior: 'allow';
22
26
  message?: string;
27
+ updatedInput?: Record<string, unknown>;
23
28
  } | {
24
29
  behavior: 'deny';
25
30
  message: string;
@@ -22,22 +22,49 @@ function summarizeToolInput(input) {
22
22
  return JSON.stringify(input).slice(0, 100);
23
23
  }
24
24
  export async function runTask(prompt, opts, cb) {
25
- const collector = new OutputCollector();
26
- const options = {
27
- cwd: opts.cwd,
28
- settingSources: ['user', 'project'],
29
- permissionMode: opts.permissionMode ?? 'default',
30
- includePartialMessages: false,
31
- ...(opts.resumeSessionId ? { resume: opts.resumeSessionId } : {}),
32
- ...(opts.canUseTool ? { canUseTool: opts.canUseTool } : {}),
33
- ...(opts.signal ? { abortController: bridgeSignal(opts.signal) } : {}),
34
- ...(opts.env ? { env: opts.env } : {}),
35
- ...(opts.appendSystemPrompt ? { appendSystemPrompt: opts.appendSystemPrompt } : {}),
36
- ...(opts.model ? { model: opts.model } : {}),
37
- ...(opts.mcpServers ? { mcpServers: opts.mcpServers } : {}),
38
- ...(opts.plugins ? { plugins: opts.plugins.map((p) => ({ type: 'local', path: p.path })) } : {}),
39
- };
40
- const q = query({ prompt, options });
25
+ // collector 按 cwd 过滤:只收集工作区内文件(plan mode 的计划文件写在 ~/.claude/plans/
26
+ // 等工作区外路径,不属于「本次修改/新增的文件」,不应进入收尾清单与文件追踪)
27
+ const collector = new OutputCollector(opts.cwd);
28
+ // Streaming Input(官方推荐姿势):prompt 经 AsyncGenerator 送入,yield 一条用户消息后挂起不结束——
29
+ // stdin 在整个会话期间保持打开。字符串 prompt 的单轮模式在收到第一条 result 后即关 stdin
30
+ // (SDK isSingleUserTurn 行为,agent-sdk#384),plan mode 下 ExitPlanMode/AskUserQuestion 这类
31
+ // 轮次边界的权限请求落在 result 之后,CLI 侧 inputClosed 后全部报 "Stream closed" 中断审批流
32
+ async function* inputStream() {
33
+ yield { type: 'user', message: { role: 'user', content: prompt }, parent_tool_use_id: null };
34
+ await new Promise(() => { }); // 永不自然结束:由消费端收到最终 result 后 break 收尾
35
+ }
36
+ let resultErrorText = '';
37
+ const q = query({
38
+ prompt: inputStream(),
39
+ options: {
40
+ cwd: opts.cwd,
41
+ settingSources: ['user', 'project'],
42
+ permissionMode: opts.permissionMode ?? 'default',
43
+ includePartialMessages: false,
44
+ ...(opts.resumeSessionId ? { resume: opts.resumeSessionId } : {}),
45
+ ...(opts.canUseTool
46
+ ? {
47
+ canUseTool: async (toolName, input, ctx) => {
48
+ const decision = await opts.canUseTool(toolName, input, { suggestions: ctx?.suggestions });
49
+ // 计划批准即授权写操作:对齐 Claude Code CLI「plan 批准 → accept edits on」语义,
50
+ // 后续 Write/Edit 不再逐次弹确认卡(SDK Query.setPermissionMode,官方 permissions 文档姿势)
51
+ if (decision.behavior === 'allow' && toolName === 'ExitPlanMode') {
52
+ await q.setPermissionMode('acceptEdits').catch((e) => {
53
+ console.warn('[executor] setPermissionMode(acceptEdits) 失败(继续按批准前模式执行):', e instanceof Error ? e.message : e);
54
+ });
55
+ }
56
+ return decision;
57
+ },
58
+ }
59
+ : {}),
60
+ ...(opts.signal ? { abortController: bridgeSignal(opts.signal) } : {}),
61
+ ...(opts.env ? { env: opts.env } : {}),
62
+ ...(opts.appendSystemPrompt ? { appendSystemPrompt: opts.appendSystemPrompt } : {}),
63
+ ...(opts.model ? { model: opts.model } : {}),
64
+ ...(opts.mcpServers ? { mcpServers: opts.mcpServers } : {}),
65
+ ...(opts.plugins ? { plugins: opts.plugins.map((p) => ({ type: 'local', path: p.path })) } : {}),
66
+ },
67
+ });
41
68
  let finalText = '';
42
69
  let sessionId = opts.resumeSessionId ?? '';
43
70
  let turns = 0;
@@ -91,12 +118,30 @@ export async function runTask(prompt, opts, cb) {
91
118
  case 'result': {
92
119
  if (message.subtype === 'success')
93
120
  finalText = message.result;
121
+ // 非成功终态(error_during_execution / error_max_turns 等,错误文本在 errors 数组):
122
+ // 带出循环后统一抛出,消息格式与单轮模式 SDK throw 保持一致(index.ts catch 的 hint 依赖该格式)
123
+ else if (message.subtype.startsWith('error'))
124
+ resultErrorText = message.errors?.join('\n') || message.subtype;
94
125
  if ('session_id' in message && typeof message.session_id === 'string')
95
126
  sessionId = message.session_id;
127
+ // 最终 result 到手即主动结束:break 触发 q.return() → SDK 清理输入流与子进程
128
+ //(streaming 输入永不自终,不 break 任务会一直挂起)
129
+ if (message.subtype === 'success' || message.subtype.startsWith('error'))
130
+ return finalize();
96
131
  break;
97
132
  }
98
133
  }
99
134
  }
100
- return { sessionId, finalText, producedFiles: collector.files(), turns, ...(inventory ? { inventory } : {}) };
135
+ return finalize();
136
+ function finalize() {
137
+ if (resultErrorText) {
138
+ // 携带 sessionId 抛出:wiring 侧据此把出错任务的会话也归档进 /resume 历史
139
+ //(错误任务的会话上下文同样有价值;早期不归档导致历史列表难积累)
140
+ const err = new Error(`Claude Code returned an error result: ${resultErrorText}`);
141
+ err.sessionId = sessionId || undefined;
142
+ throw err;
143
+ }
144
+ return { sessionId, finalText, producedFiles: collector.files(), turns, ...(inventory ? { inventory } : {}) };
145
+ }
101
146
  }
102
147
  //# sourceMappingURL=claude-executor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-executor.js","sourceRoot":"","sources":["../../src/executor/claude-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-executor.js","sourceRoot":"","sources":["../../src/executor/claude-executor.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,qDAAqD;AACrD,OAAO,EAAE,KAAK,EAAwF,MAAM,gCAAgC,CAAC;AAC7I,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AA2CxD,0DAA0D;AAC1D,SAAS,YAAY,CAAC,MAAmB;IACvC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA8B;IACxD,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IAC5D,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,SAAS,CAAC;IAChE,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IAC5D,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAc,EAAE,IAAoB,EAAE,EAAqB;IACvF,kEAAkE;IAClE,yCAAyC;IACzC,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,0EAA0E;IAC1E,4DAA4D;IAC5D,sFAAsF;IACtF,qEAAqE;IACrE,KAAK,SAAS,CAAC,CAAC,WAAW;QACzB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;QAC7F,MAAM,IAAI,OAAO,CAAQ,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,oCAAoC;IAC1E,CAAC;IACD,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,MAAM,CAAC,GAAU,KAAK,CAAC;QACrB,MAAM,EAAE,WAAW,EAAE;QACrB,OAAO,EAAE;YACP,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,cAAc,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;YACnC,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,SAAS;YAChD,sBAAsB,EAAE,KAAK;YAC7B,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,UAAU;gBACjB,CAAC,CAAC;oBACA,UAAU,EAAE,KAAK,EACf,QAAgB,EAChB,KAA8B,EAC9B,GAAiC,EACjC,EAAE;wBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;wBAC5F,8DAA8D;wBAC9D,0EAA0E;wBAC1E,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;4BACjE,MAAM,CAAC,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gCACnD,OAAO,CAAC,IAAI,CAAC,2DAA2D,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BAChH,CAAC,CAAC,CAAC;wBACL,CAAC;wBACD,OAAO,QAAQ,CAAC;oBAClB,CAAC;iBACF;gBACD,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1G;KACF,CAAC,CAAC;IACH,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,SAAS,GAAG,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC;IAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,iEAAiE;IACjE,IAAI,SAAuE,CAAC;IAC5E,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,4CAA4C;IACzF,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,CAA8B,EAAE,CAAC;QAC3D,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,QAAQ,EAAE,CAAC;gBACd,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;oBAC/B,SAAS,GAAG;wBACV,KAAK,EAAE,OAAO,CAAC,KAAK;wBACpB,iBAAiB,EAAE,OAAO,CAAC,mBAAmB;wBAC9C,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;wBAC5B,aAAa,EAAE,OAAO,CAAC,cAAc,IAAI,EAAE;wBAC3C,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;wBACjG,UAAU,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;wBACrC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;qBAC7B,CAAC;oBACF,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC;gBACzB,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,WAAW,EAAE,CAAC;gBACjB,KAAK,EAAE,CAAC;gBACR,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC1B,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC7D,CAAC;yBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;wBACrC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;wBAC7D,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;wBACpC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBACnC,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;oBACtG,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,MAAM,EAAE,CAAC;gBACZ,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;gBACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;oBAAE,MAAM;gBACnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;wBACjC,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;wBACpD,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACnF,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,QAAQ,EAAE,CAAC;gBACd,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;oBAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC9D,qEAAqE;gBACrE,kEAAkE;qBAC7D,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;oBAAE,eAAe,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC;gBAC9G,IAAI,YAAY,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;oBAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;gBACtG,wDAAwD;gBACxD,oCAAoC;gBACpC,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;oBAAE,OAAO,QAAQ,EAAE,CAAC;gBAC5F,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,EAAE,CAAC;IAElB,SAAS,QAAQ;QACf,IAAI,eAAe,EAAE,CAAC;YACpB,oDAAoD;YACpD,kCAAkC;YAClC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,yCAAyC,eAAe,EAAE,CAAmC,CAAC;YACpH,GAAG,CAAC,SAAS,GAAG,SAAS,IAAI,SAAS,CAAC;YACvC,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAChH,CAAC;AACH,CAAC"}
@@ -1,5 +1,7 @@
1
1
  export declare class OutputCollector {
2
2
  private seen;
3
+ private cwd;
4
+ constructor(cwd: string);
3
5
  track(toolName: string, input: Record<string, unknown>): void;
4
6
  files(): string[];
5
7
  }
@@ -1,14 +1,26 @@
1
- // 产出收集器:跟踪任务过程中写文件工具产出的文件路径(去重)
1
+ // 产出收集器:跟踪任务过程中写文件工具产出的文件路径(去重,仅工作区内文件)
2
+ import { isAbsolute, relative, resolve } from 'node:path';
2
3
  const WRITE_TOOLS = new Set(['Write', 'Edit', 'NotebookEdit']);
3
4
  export class OutputCollector {
4
5
  seen = new Set();
6
+ cwd;
7
+ constructor(cwd) {
8
+ this.cwd = resolve(cwd);
9
+ }
5
10
  track(toolName, input) {
6
11
  if (!WRITE_TOOLS.has(toolName))
7
12
  return;
8
13
  // NotebookEdit 用 notebook_path,Write/Edit 用 file_path
9
14
  const p = input.file_path ?? input.notebook_path;
10
- if (typeof p === 'string' && p)
11
- this.seen.add(p);
15
+ if (typeof p !== 'string' || !p)
16
+ return;
17
+ // 只收工作区内文件:plan mode 的计划文件(~/.claude/plans/*.md)、临时目录等
18
+ // 工作区外产物不属于「本次修改/新增的文件」,不进收尾清单、不参与用户点名回传
19
+ const abs = resolve(this.cwd, p);
20
+ const rel = relative(this.cwd, abs);
21
+ if (rel.startsWith('..') || isAbsolute(rel))
22
+ return;
23
+ this.seen.add(abs);
12
24
  }
13
25
  files() {
14
26
  return [...this.seen];
@@ -1 +1 @@
1
- {"version":3,"file":"output-collector.js","sourceRoot":"","sources":["../../src/executor/output-collector.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;AAE/D,MAAM,OAAO,eAAe;IAClB,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,KAAK,CAAC,QAAgB,EAAE,KAA8B;QACpD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO;QACvC,sDAAsD;QACtD,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,aAAa,CAAC;QACjD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,KAAK;QACH,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;CACF"}
1
+ {"version":3,"file":"output-collector.js","sourceRoot":"","sources":["../../src/executor/output-collector.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;AAE/D,MAAM,OAAO,eAAe;IAClB,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IACzB,GAAG,CAAS;IAEpB,YAAY,GAAW;QACrB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,QAAgB,EAAE,KAA8B;QACpD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO;QACvC,sDAAsD;QACtD,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,aAAa,CAAC;QACjD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC;YAAE,OAAO;QACxC,uDAAuD;QACvD,yCAAyC;QACzC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO;QACpD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,KAAK;QACH,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;CACF"}
@@ -3,19 +3,27 @@ import type { ConfirmationRequest, PermissionDecision } from '../types.js';
3
3
  * 内置默认免确认工具白名单(config.yaml permissions.allow_tools 缺省值;配置即整体替换)。
4
4
  * Bash 默认放行是读场景(ls/cat/grep 等经 Bash 执行)不弹卡的前提,安全性由
5
5
  * DEFAULT_DANGEROUS_COMMANDS 黑名单兜底——命中仍弹确认卡。
6
+ * LIST 源列表供 config-defaults 预置写盘(lcb setup / web bootstrap),Set 由其派生,保单源。
6
7
  */
8
+ export declare const DEFAULT_ALLOW_TOOLS_LIST: readonly string[];
7
9
  export declare const DEFAULT_ALLOW_TOOLS: ReadonlySet<string>;
8
10
  export declare const READ_ONLY_TOOLS: ReadonlySet<string>;
9
- /** 内置 Bash 危险命令正则(permissions.dangerous_commands 缺省值):对 command 全文匹配,命中弹确认卡 */
11
+ /**
12
+ * 内置 Bash 危险命令正则源串(permissions.dangerous_commands 缺省值;运行期统一 i flag 编译)。
13
+ * 源串形式供 config-defaults 预置写盘——写出的配置回读后与内置行为逐字一致。
14
+ */
15
+ export declare const DEFAULT_DANGEROUS_COMMAND_SOURCES: readonly string[];
16
+ /** 内置 Bash 危险命令正则:对 command 全文匹配(不区分大小写),命中弹确认卡 */
10
17
  export declare const DEFAULT_DANGEROUS_COMMANDS: readonly RegExp[];
11
18
  export type GateDecision = {
12
19
  behavior: 'allow';
13
20
  message?: string;
21
+ updatedInput?: Record<string, unknown>;
14
22
  } | {
15
23
  behavior: 'deny';
16
24
  message: string;
17
25
  };
18
- /** plan 确认请求/结果:approve 放行继续执行;revise 带意见让模型修订计划;reject 终止 */
26
+ /** plan 确认请求/结果:approve 放行继续执行(executor 随即切 acceptEdits,写操作免确认);revise 带意见让模型修订计划;reject 终止 */
19
27
  export interface PlanAskRequest {
20
28
  plan: string;
21
29
  workspaceName: string;
@@ -28,6 +36,26 @@ export type PlanAskResult = {
28
36
  } | {
29
37
  action: 'reject';
30
38
  };
39
+ /** AskUserQuestion 的问题载荷(SDK input.questions 子集) */
40
+ export interface QuestionOption {
41
+ label: string;
42
+ description?: string;
43
+ }
44
+ export interface QuestionItem {
45
+ question: string;
46
+ header?: string;
47
+ multiSelect?: boolean;
48
+ options: QuestionOption[];
49
+ }
50
+ /** 提问确认请求:questions 已解析校验(至少 1 问、每问至少 2 选项) */
51
+ export interface AskQuestionRequest {
52
+ questions: QuestionItem[];
53
+ workspaceName: string;
54
+ }
55
+ /** 提问结果:question → 选中的 option label(multiSelect 为数组);所有问题必须有答案 */
56
+ export type AskQuestionResult = Record<string, string | string[]>;
57
+ /** 解析并校验 AskUserQuestion 的 input.questions;非法结构返回空数组(由调用方 deny) */
58
+ export declare function parseQuestions(input: Record<string, unknown>): QuestionItem[];
31
59
  export declare class PermissionGate {
32
60
  private opts;
33
61
  private remembered;
@@ -37,6 +65,8 @@ export declare class PermissionGate {
37
65
  ask: (req: ConfirmationRequest) => Promise<PermissionDecision>;
38
66
  /** plan 确认回调:ExitPlanMode 工具调用时触发;未配置时 ExitPlanMode 一律拒绝(不支持 plan 工作流) */
39
67
  planAsk?: (req: PlanAskRequest) => Promise<PlanAskResult>;
68
+ /** 提问回调:AskUserQuestion 工具调用时触发(飞书问题选项卡片);未配置时一律拒绝并让模型改用文本 */
69
+ askQuestion?: (req: AskQuestionRequest) => Promise<AskQuestionResult>;
40
70
  timeoutMs?: number;
41
71
  /** 免确认白名单;缺省 DEFAULT_ALLOW_TOOLS */
42
72
  allowTools?: ReadonlySet<string>;
@@ -44,7 +74,11 @@ export declare class PermissionGate {
44
74
  dangerousCommands?: readonly RegExp[];
45
75
  });
46
76
  private isDangerousCommand;
47
- decide(toolName: string, input: Record<string, unknown>, workspaceName: string): Promise<GateDecision>;
77
+ decide(toolName: string, input: Record<string, unknown>, workspaceName: string, ctx?: {
78
+ suggestions?: unknown[];
79
+ }): Promise<GateDecision>;
80
+ /** 提问挂起窗(与 ask 同款超时语义):到点自动跳过,不让任务无限等待 */
81
+ private withTimeout;
48
82
  rememberSession(toolName: string): void;
49
83
  reset(): void;
50
84
  }