@jesonliu/lark-claudecode-bridge 0.19.0 → 0.20.1

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 (64) hide show
  1. package/README.md +77 -192
  2. package/assets/web/css/main.css +511 -113
  3. package/assets/web/index.html +12 -2
  4. package/assets/web/js/main.js +16 -10
  5. package/assets/web/js/pages/apps.js +10 -5
  6. package/assets/web/js/pages/claude.js +15 -5
  7. package/assets/web/js/pages/mcp.js +57 -21
  8. package/assets/web/js/pages/overview.js +5 -4
  9. package/assets/web/js/pages/permissions.js +56 -30
  10. package/assets/web/js/pages/plugins.js +29 -6
  11. package/assets/web/js/pages/skills.js +184 -11
  12. package/assets/web/js/pages/slash.js +11 -5
  13. package/assets/web/js/pages/workspaces.js +15 -14
  14. package/assets/web/js/theme.js +23 -0
  15. package/assets/web/js/ui.js +75 -4
  16. package/config.example.yaml +2 -3
  17. package/dist/access/access-control.d.ts +17 -1
  18. package/dist/access/access-control.js +31 -2
  19. package/dist/access/access-control.js.map +1 -1
  20. package/dist/claude-config.d.ts +14 -2
  21. package/dist/claude-config.js +75 -4
  22. package/dist/claude-config.js.map +1 -1
  23. package/dist/cli/setup-wizard.d.ts +0 -1
  24. package/dist/cli/setup-wizard.js +2 -4
  25. package/dist/cli/setup-wizard.js.map +1 -1
  26. package/dist/config.js +6 -7
  27. package/dist/config.js.map +1 -1
  28. package/dist/executor/claude-executor.d.ts +1 -1
  29. package/dist/executor/claude-executor.js +4 -2
  30. package/dist/executor/claude-executor.js.map +1 -1
  31. package/dist/executor/notify-server.d.ts +9 -2
  32. package/dist/executor/notify-server.js +34 -9
  33. package/dist/executor/notify-server.js.map +1 -1
  34. package/dist/gateway/card-builder.d.ts +54 -0
  35. package/dist/gateway/card-builder.js +160 -18
  36. package/dist/gateway/card-builder.js.map +1 -1
  37. package/dist/gateway/diff-card.js +1 -1
  38. package/dist/gateway/diff-card.js.map +1 -1
  39. package/dist/gateway/feishu-gateway.d.ts +20 -3
  40. package/dist/gateway/feishu-gateway.js +58 -4
  41. package/dist/gateway/feishu-gateway.js.map +1 -1
  42. package/dist/gateway/progress-card.d.ts +56 -0
  43. package/dist/gateway/progress-card.js +218 -8
  44. package/dist/gateway/progress-card.js.map +1 -1
  45. package/dist/index.d.ts +9 -0
  46. package/dist/index.js +195 -42
  47. package/dist/index.js.map +1 -1
  48. package/dist/notify-sop.d.ts +1 -1
  49. package/dist/notify-sop.js +5 -2
  50. package/dist/notify-sop.js.map +1 -1
  51. package/dist/session/commands.d.ts +1 -1
  52. package/dist/session/commands.js +25 -2
  53. package/dist/session/commands.js.map +1 -1
  54. package/dist/session/session-store.d.ts +3 -0
  55. package/dist/session/session-store.js.map +1 -1
  56. package/dist/types.d.ts +11 -5
  57. package/dist/util/workspace-diff.js +2 -2
  58. package/dist/util/workspace-diff.js.map +1 -1
  59. package/dist/web/server.js +146 -13
  60. package/dist/web/server.js.map +1 -1
  61. package/dist/web/skills-mcp-api.d.ts +27 -4
  62. package/dist/web/skills-mcp-api.js +105 -14
  63. package/dist/web/skills-mcp-api.js.map +1 -1
  64. package/package.json +1 -1
@@ -7,7 +7,7 @@ import { invalidatePluginCache } from '../executor/plugin-discovery.js';
7
7
  * triggers.ts 的 RESERVED、index.ts 的透传说明均以此为准——本地命令永远优先,
8
8
  * 不被触发词劫持、不透传给 Claude Code。新增本地命令务必同步此清单
9
9
  */
10
- export const BRIDGE_LOCAL_COMMANDS = ['help', 'new', 'resume', 'stop', 'status', 'ws', 'model', 'model-profile', 'skills', 'plugins', 'mcp', 'plugin', 'reload-plugins'];
10
+ export const BRIDGE_LOCAL_COMMANDS = ['help', 'new', 'resume', 'stop', 'status', 'ws', 'model', 'model-profile', 'plan', 'skills', 'plugins', 'mcp', 'plugin', 'reload-plugins'];
11
11
  /**
12
12
  * 内置命令的飞书 Slash Command 注册元信息(icon 为飞书 icon_key,见开放平台文档可选列表)。
13
13
  * 斜杠命令同步(feishu/slash-commands)的默认期望集 = 本表的全部键 + config.slash_commands.extra。
@@ -22,6 +22,7 @@ export const SLASH_COMMAND_META = {
22
22
  ws: { description: '切换工作区(/ws list 列出)', icon: 'folder_outlined' },
23
23
  model: { description: '查看/切换模型', icon: 'ai-style_outlined' },
24
24
  'model-profile': { description: '查看/切换厂商档案(切换需管理员)', icon: 'switch-tracking_outlined' },
25
+ plan: { description: '切换计划模式开关;[/plan 模式切换]、[/plan on 开启]、[/plan off 关闭]', icon: 'plan_outlined' },
25
26
  skills: { description: '查看已加载技能', icon: 'skill_outlined' },
26
27
  plugins: { description: '查看已加载插件', icon: 'plugin_outlined' },
27
28
  mcp: { description: '查看已加载 MCP 服务', icon: 'ai-functions_outlined' },
@@ -39,6 +40,7 @@ const HELP = `**可用命令**
39
40
  /ws use <名字> — 切换工作区
40
41
  /model — 查看/切换模型(/model <名字> 切换,/model reset 恢复默认)
41
42
  /model-profile — 查看/切换厂商档案(/model-profile <名字> 切换,管理员)
43
+ /plan — 切换计划模式(先出方案、批准后再执行;/plan on 开启,/plan off 关闭)
42
44
  /skills — 查看已加载技能
43
45
  /plugins — 查看已加载插件
44
46
  /mcp — 查看已加载 MCP 服务
@@ -131,7 +133,27 @@ export async function handleCommand(text, ctx) {
131
133
  const st = store.getChannelState(key);
132
134
  return {
133
135
  handled: true,
134
- reply: `机器人:**${ctx.appName}**\n工作区:**${st?.workspaceName || ctx.currentWorkspace()}**\n模型:**${st?.model ?? '跟随全局'}**\n历史会话:${store.listSessions(key).length} 个`,
136
+ reply: `机器人:**${ctx.appName}**\n工作区:**${st?.workspaceName || ctx.currentWorkspace()}**\n模型:**${st?.model ?? '跟随全局'}**\n计划模式:**${st?.planMode ? '开(先出方案再执行)' : '关'}**\n历史会话:${store.listSessions(key).length} 个`,
137
+ };
138
+ }
139
+ case 'plan': {
140
+ // 计划模式(#6):通道级开关,替代旧工作区 code-dev 类型——任何工作区按需开启。
141
+ // 开启后任务以 plan mode 启动(模型先出计划 → 飞书卡片批准后执行);/new 不清除(通道偏好)
142
+ const st = store.getChannelState(key);
143
+ const arg = (args[0] ?? '').toLowerCase();
144
+ const next = arg === 'on' ? true : arg === 'off' ? false : !st?.planMode;
145
+ const base = st ?? { workspaceName: ctx.currentWorkspace(), sessions: [] };
146
+ if (next)
147
+ store.setChannelState(key, { ...base, planMode: true });
148
+ else {
149
+ const { planMode: _drop, ...rest } = base;
150
+ store.setChannelState(key, rest);
151
+ }
152
+ return {
153
+ handled: true,
154
+ reply: next
155
+ ? '📋 计划模式已**开启**:下一条任务将先出执行方案,你在卡片上批准后才动手(/plan off 关闭)'
156
+ : '✅ 计划模式已**关闭**:任务将直接执行',
135
157
  };
136
158
  }
137
159
  case 'ws': {
@@ -153,6 +175,7 @@ export async function handleCommand(text, ctx) {
153
175
  workspaceName: target.name,
154
176
  sessions: st?.sessions ?? [],
155
177
  ...(st?.model ? { model: st.model } : {}),
178
+ ...(st?.planMode ? { planMode: st.planMode } : {}),
156
179
  });
157
180
  store.setCurrentSession(key, null, target.name);
158
181
  return { handled: true, reply: `✅ 已切换工作区:**${target.name}**(${target.path})。已自动开启新会话(/resume 可切回历史)` };
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/session/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/session/commands.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,9 @@ export interface ChannelState {
21
21
  /** 通道级模型覆盖(/model 命令设置,跨重启持久;/new 不清除——它是通道偏好而非会话状态)。
22
22
  * 缺省/undefined = 跟随 ~/.claude/settings.json 的 model */
23
23
  model?: string;
24
+ /** 通道级计划模式(/plan 命令切换,跨重启持久;/new 不清除——它是通道偏好而非会话状态)。
25
+ * true = 任务以 plan mode 启动(模型先出计划 → 飞书卡片批准后执行);缺省 = 直接执行 */
26
+ planMode?: boolean;
24
27
  }
25
28
  /**
26
29
  * 通道会话存储:JSON 文件持久化,每个 channelKey 一份 ChannelState。
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/session/session-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/session/session-store.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -31,12 +31,11 @@ export interface FeishuAppConfig {
31
31
  * 显式配置用于开发期直指源码目录(同名时优先于自动发现) */
32
32
  plugins?: PluginRef[];
33
33
  }
34
- /** 工作区场景类型:code-dev = 代码开发(统一 plan mode + diff 收尾),generic = 通用(缺省) */
35
- export type WorkspaceType = 'code-dev' | 'generic';
34
+ /** 工作区:name + path。旧版 type(code-dev/generic)已废弃(#6)——计划模式改为
35
+ * 通道级 /plan 命令切换,diff 收尾改为 git 仓库自动判定;旧配置携带 type 仅 warn 忽略 */
36
36
  export interface Workspace {
37
37
  name: string;
38
38
  path: string;
39
- type?: WorkspaceType;
40
39
  }
41
40
  /** 权限白名单配置:字段可选——未配置的字段回退内置默认(读工具 + Bash + 危险命令表,见 permission-gate)。
42
41
  * allowTools 配置即整体替换内置默认(不与默认合并);dangerousCommands 为 Bash 危险命令正则(命中弹确认卡) */
@@ -163,8 +162,10 @@ export interface RejectedMessage {
163
162
  };
164
163
  }
165
164
  /** 卡片回调决策:allow/deny/allow-session 为写工具确认卡;plan-* 为计划确认卡(feedback = 按意见修改时的用户输入);
166
- * plan-view-file = 计划「查看完整方案」按钮触发,原文 md 直接 send_file 而非塞入卡片正文 */
167
- export type CardDecision = 'allow' | 'deny' | 'allow-session' | 'plan-approve' | 'plan-revise' | 'plan-reject' | 'plan-view-file' | 'qa-pick' | 'qa-submit';
165
+ * plan-view-file = 计划「查看完整方案」按钮触发,原文 md 直接 send_file 而非塞入卡片正文;
166
+ * qa-* 为提问卡;view-output-file/output-* 为长回复收起卡(0.20.0:>2000 字回复的
167
+ * 查看全文 / 确认方案 / 按意见修改引导,后两者点击即发起新一轮任务) */
168
+ export type CardDecision = 'allow' | 'deny' | 'allow-session' | 'plan-approve' | 'plan-revise' | 'plan-reject' | 'plan-view-file' | 'qa-pick' | 'qa-submit' | 'view-output-file' | 'output-confirm' | 'output-revise';
168
169
  export interface CardActionValue {
169
170
  requestId: string;
170
171
  decision: CardDecision;
@@ -172,6 +173,11 @@ export interface CardActionValue {
172
173
  /** qa-pick:问题下标与选项 label */
173
174
  qIndex?: number;
174
175
  option?: string;
176
+ /** form 容器提交时回传的全部输入项(name → 值):qa_form 的 custom_N、
177
+ * plan_form/output_form 的 feedback 均在此(0.20.0 泛化,取代只解析 feedback 单键) */
178
+ formValue?: Record<string, string>;
179
+ /** view-output-file:落盘的完整回复文件路径(白名单校验 outputs 目录前缀后才发送) */
180
+ filePath?: string;
175
181
  }
176
182
  export interface CardActionEvent {
177
183
  value: CardActionValue;
@@ -1,5 +1,5 @@
1
- // 工作区改动收集:code-dev 工作区任务收尾时用 git diff 生成全量 unified diff。
2
- // 不做文件快照——git 是 code-dev 工作区的既有事实(非 git 仓库回退旧上传行为,由调用方处理)
1
+ // 工作区改动收集:git 仓库工作区任务收尾时用 git diff 生成全量 unified diff。
2
+ // 不做文件快照——git 是代码工作区的既有事实(非 git 仓库返回 null,由调用方跳过)
3
3
  import { execFile } from 'node:child_process';
4
4
  import { readFile } from 'node:fs/promises';
5
5
  import { join } from 'node:path';
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-diff.js","sourceRoot":"","sources":["../../src/util/workspace-diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-diff.js","sourceRoot":"","sources":["../../src/util/workspace-diff.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ import { hasClaudeAuth } from '../auth-precheck.js';
16
16
  import { defaultPermissionsDoc, defaultServerDoc } from '../config-defaults.js';
17
17
  import { VERSION } from '../version.js';
18
18
  import { appStatusSummary, applyPermissionDisplayDefaults, applySecrets, claudeSettingsSummary, computeRestartRequired, docForClient, isAllowedHost, isAllowedOrigin } from './config-api.js';
19
- import { BRIDGE_MCP_JSON, MCP_NAME_RE, SKILL_NAME_RE, USER_CLAUDE_JSON, listAllSkills, listMcpServers, listSkills, parseClaudeMcpAdd, readMcpServersFromJsonFile, readPluginMcpFromManifest, resolveEnvRefs, } from './skills-mcp-api.js';
19
+ import { BRIDGE_MCP_JSON, MCP_NAME_RE, SKILL_NAME_RE, USER_CLAUDE_JSON, listAllSkills, listMcpServers, listSkills, parseClaudeMcpAdd, readMcpServersFromJsonFile, readPluginMcpFromManifest, resolveEnvRefs, resolveSpawnCommand, } from './skills-mcp-api.js';
20
20
  import { fetchModelList, resolveModelFetchParams } from './model-list.js';
21
21
  import { SLASH_COMMAND_META } from '../session/commands.js';
22
22
  import { DEFAULT_ALLOW_TOOLS_LIST, DEFAULT_DANGEROUS_COMMAND_SOURCES } from '../executor/permission-gate.js';
@@ -638,6 +638,67 @@ async function handle(req, res, ctx) {
638
638
  }
639
639
  return json(res, 400, { error: `未知 op "${op}"(支持 create / delete)` });
640
640
  }
641
+ // ---- Skill 文件浏览(#3):目录列举 + 文件原文读取。
642
+ // 安全:所有路径必须解析后落在任一已知 skill 根目录内(防路径穿越读到 ~/.claude/credentials.json 等);
643
+ // 原文读取另有扩展名白名单 + 1MB 上限 ----
644
+ /** 全部已知 skill 根(用户级本机/bridge 自管/各工作区项目级/各已装插件),resolve 后的绝对路径 */
645
+ const skillRootsAll = () => {
646
+ const roots = [join(homedir(), '.claude', 'skills'), join(CONFIG_DIR, 'claude', 'skills')];
647
+ for (const w of currentWorkspaces())
648
+ roots.push(join(w.path, '.claude', 'skills'));
649
+ for (const p of currentPlugins())
650
+ roots.push(join(p.path, 'skills'));
651
+ return roots.map((r) => resolve(r));
652
+ };
653
+ const isUnderSkillRoots = (p) => {
654
+ const rp = resolve(p);
655
+ return skillRootsAll().some((root) => rp === root || rp.startsWith(root + sep));
656
+ };
657
+ if (path === '/api/skills/files' && req.method === 'GET') {
658
+ const dir = String(url.searchParams.get('path') ?? '');
659
+ if (!dir || !isUnderSkillRoots(dir))
660
+ return json(res, 403, { error: '路径不在允许的 skill 目录内' });
661
+ let dirents;
662
+ try {
663
+ dirents = readdirSync(dir, { withFileTypes: true });
664
+ }
665
+ catch (e) {
666
+ return json(res, 400, { error: `目录读取失败:${e instanceof Error ? e.message : String(e)}` });
667
+ }
668
+ const files = dirents.map((d) => {
669
+ let size = 0;
670
+ let mtime = '';
671
+ try {
672
+ const st = statSync(join(dir, d.name));
673
+ size = st.size;
674
+ mtime = st.mtime.toISOString();
675
+ }
676
+ catch { /* 单条 stat 失败按 0 处理 */ }
677
+ return { name: d.name, isDir: d.isDirectory(), size, mtime };
678
+ }).sort((a, b) => Number(b.isDir) - Number(a.isDir) || a.name.localeCompare(b.name));
679
+ return json(res, 200, { path: resolve(dir), files });
680
+ }
681
+ if (path === '/api/skills/raw' && req.method === 'GET') {
682
+ const fp = String(url.searchParams.get('path') ?? '');
683
+ if (!fp || !isUnderSkillRoots(fp))
684
+ return json(res, 403, { error: '路径不在允许的 skill 目录内' });
685
+ // 扩展名白名单:只放行文本类文件(防借道读凭证/二进制)
686
+ const RAW_EXTS = new Set(['.md', '.txt', '.json', '.yaml', '.yml', '.sh', '.py', '.ts', '.js', '.mjs', '.cjs', '.toml', '.xml', '.csv', '.html', '.css']);
687
+ const ext = extname(fp).toLowerCase();
688
+ if (!RAW_EXTS.has(ext))
689
+ return json(res, 400, { error: `不支持预览 ${ext || '无扩展名'} 类型文件(仅文本类可查看)` });
690
+ try {
691
+ const st = statSync(fp);
692
+ if (!st.isFile())
693
+ return json(res, 400, { error: '不是文件' });
694
+ if (st.size > 1024 * 1024)
695
+ return json(res, 400, { error: `文件过大(${(st.size / 1024 / 1024).toFixed(1)}MB > 1MB),请本地查看` });
696
+ return json(res, 200, { path: resolve(fp), name: parse(fp).base, ext, size: st.size, content: readFileSync(fp, 'utf8') });
697
+ }
698
+ catch (e) {
699
+ return json(res, 400, { error: `文件读取失败:${e instanceof Error ? e.message : String(e)}` });
700
+ }
701
+ }
641
702
  if (path === '/api/skills/import' && req.method === 'POST') {
642
703
  // zip 导入(#12):base64 上传,独立放宽到 10MB(全局 1MB 不放 zip);解压后复制进用户级生效目录
643
704
  let body;
@@ -694,10 +755,39 @@ async function handle(req, res, ctx) {
694
755
  }
695
756
  // ---- MCP server 管理(#12):页面可管理存储 = bridge 自管 <CONFIG_DIR>/mcp/servers.json(executeTask
696
757
  // 注入 SDK 生效);~/.claude.json(用户级·本机)展示+可删不写入;工作区 .mcp.json(项目级)只读 ----
758
+ /** MCP env 多来源合并(#4/#8):优先级 高→低 = 飞书应用 env(apps[].env,多应用按配置序先写胜出)
759
+ * > claude.env > 生效 Claude 目录 settings.json env > process.env。MCP 列表 resolvedEnv
760
+ * 与 check 探测 spawn env 的统一数据源——只查 process.env 会把应用在配置页/env 块里
761
+ * 设的变量误判为「未设置」 */
762
+ const currentMergedEnv = () => {
763
+ const merged = {};
764
+ const put = (src) => {
765
+ if (!src || typeof src !== 'object' || Array.isArray(src))
766
+ return;
767
+ for (const [k, v] of Object.entries(src)) {
768
+ if (typeof v === 'string' && v && !(k in merged))
769
+ merged[k] = v; // 先写胜出:调用顺序即优先级
770
+ }
771
+ };
772
+ const doc = readRawDoc(ctx.configPath);
773
+ const rawApps = Array.isArray(doc?.apps) ? doc.apps : doc?.feishu ? [doc.feishu] : [];
774
+ for (const a of rawApps)
775
+ put(a.env);
776
+ put(doc?.claude?.env);
777
+ const isManaged = doc?.claude?.mode === 'managed';
778
+ try {
779
+ const s = JSON.parse(readFileSync(join(isManaged ? MANAGED_CLAUDE_DIR : DEFAULT_CLAUDE_DIR, 'settings.json'), 'utf8'));
780
+ put(s.env);
781
+ }
782
+ catch { /* settings.json 不存在/损坏:跳过该来源 */ }
783
+ put(process.env);
784
+ return merged;
785
+ };
697
786
  if (path === '/api/mcp' && req.method === 'GET') {
698
787
  const plugins = currentPlugins();
788
+ const mergedEnv = currentMergedEnv();
699
789
  const servers = listMcpServers(currentWorkspaces(), plugins).map((s) => {
700
- const { resolved, missing } = resolveEnvRefs(s.config.env);
790
+ const { resolved, missing } = resolveEnvRefs(s.config.env, mergedEnv);
701
791
  return { ...s, resolvedEnv: resolved, missingEnv: missing };
702
792
  });
703
793
  return json(res, 200, {
@@ -799,11 +889,24 @@ async function handle(req, res, ctx) {
799
889
  const cfg = entry.config;
800
890
  const isRemote = cfg.type === 'http' || cfg.type === 'sse' || (!cfg.type && typeof cfg.url === 'string');
801
891
  if (isRemote) {
802
- const url = typeof cfg.url === 'string' ? cfg.url : '';
892
+ // url / headers 值中的 ${VAR} 按同一合并源展开(与 env 展开一致),否则带引用的配置必被误判不可达
893
+ const headerSrc = {};
894
+ if (cfg.headers && typeof cfg.headers === 'object' && !Array.isArray(cfg.headers)) {
895
+ for (const [k, v] of Object.entries(cfg.headers)) {
896
+ if (typeof v === 'string')
897
+ headerSrc[k] = v;
898
+ }
899
+ }
900
+ const { resolved: rr } = resolveEnvRefs({ url: typeof cfg.url === 'string' ? cfg.url : '', ...headerSrc }, currentMergedEnv());
901
+ const url = rr.url ?? '';
803
902
  if (!/^https?:\/\//.test(url))
804
903
  return json(res, 200, { status: 'failed', detail: 'url 不是合法的 http(s) 地址' });
904
+ const headers = Object.fromEntries(Object.entries(rr).filter(([k]) => k !== 'url'));
805
905
  try {
806
- const r = await fetch(url, { signal: AbortSignal.timeout(5000) });
906
+ const r = await fetch(url, {
907
+ signal: AbortSignal.timeout(5000),
908
+ ...(Object.keys(headers).length ? { headers } : {}),
909
+ });
807
910
  // 任何 HTTP 响应都说明网络可达;4xx 多为鉴权/路径问题(MCP 端点通常要求特定握手)
808
911
  return json(res, 200, { status: r.status < 500 ? 'ok' : 'failed', detail: `HTTP ${r.status}${r.status >= 400 ? '(可达;鉴权或路径问题)' : ''}` });
809
912
  }
@@ -815,28 +918,58 @@ async function handle(req, res, ctx) {
815
918
  const command = typeof cfg.command === 'string' ? cfg.command : '';
816
919
  if (!command)
817
920
  return json(res, 200, { status: 'failed', detail: '缺少 command' });
818
- const { resolved } = resolveEnvRefs(cfg.env);
819
- const child = spawn(command, Array.isArray(cfg.args) ? cfg.args.map(String) : [], {
820
- stdio: ['ignore', 'pipe', 'pipe'],
821
- env: { ...process.env, ...resolved },
921
+ const mergedEnv = currentMergedEnv();
922
+ const { resolved } = resolveEnvRefs(cfg.env, mergedEnv);
923
+ // win32:裸命令(npx 等 .cmd shim)须包 cmd.exe /c,否则 spawn ENOENT 一律误判「异常」
924
+ const run = resolveSpawnCommand(command, Array.isArray(cfg.args) ? cfg.args.map(String) : []);
925
+ const child = spawn(run.command, run.args, {
926
+ // stdin 留管道不写入:server 阻塞等输入;'ignore' 会立即 EOF 触发优雅退出被误判 failed
927
+ stdio: ['pipe', 'pipe', 'pipe'],
928
+ // 探测环境与任务运行时对齐:合并源(含飞书应用 env / claude.env / settings env)垫底,
929
+ // server 自身 env 解析值覆盖(${VAR} 已按同一合并源展开)
930
+ env: { ...process.env, ...mergedEnv, ...resolved },
822
931
  windowsHide: true,
932
+ // win32 cmd 包装时命令行已手工引号构造,禁止 Node 再做 MSVCRT 引号(会破坏 /s 语义)
933
+ ...(run.verbatim ? { windowsVerbatimArguments: true } : {}),
823
934
  });
824
935
  let stderr = '';
825
936
  child.stderr?.on('data', (c) => { if (stderr.length < 500)
826
937
  stderr += c.toString('utf8'); });
938
+ /** 清理:关 stdin + 树杀。win32 下 child.kill() 只杀 cmd/npx 壳,孙进程 node 会残留成僵尸 → taskkill /T /F */
939
+ const killTree = () => {
940
+ child.stdin?.destroy();
941
+ if (process.platform === 'win32' && child.pid) {
942
+ try {
943
+ const tk = spawn('taskkill', ['/PID', String(child.pid), '/T', '/F'], { stdio: 'ignore', windowsHide: true });
944
+ tk.on('error', () => { try {
945
+ child.kill();
946
+ }
947
+ catch { /* 已退出 */ } });
948
+ }
949
+ catch {
950
+ try {
951
+ child.kill();
952
+ }
953
+ catch { /* 已退出 */ }
954
+ }
955
+ }
956
+ else {
957
+ try {
958
+ child.kill();
959
+ }
960
+ catch { /* 已退出 */ }
961
+ }
962
+ };
827
963
  const result = await new Promise((resolve) => {
828
964
  const done = (status, detail) => { clearTimeout(killTimer); resolve({ status, detail }); };
829
965
  const killTimer = setTimeout(() => {
830
- child.kill();
966
+ killTree();
831
967
  done('ok', '进程存活(正常:MCP server 启动后等待 stdio 输入)');
832
968
  }, 800);
833
969
  child.on('error', (e) => done('failed', `无法启动:${e.message}`));
834
970
  child.on('exit', (code) => done('failed', `进程退出(code ${code}):${stderr.split('\n')[0] || '无 stderr 输出'}`));
835
971
  });
836
- try {
837
- child.kill();
838
- }
839
- catch { /* 已退出 */ }
972
+ killTree();
840
973
  return json(res, 200, result);
841
974
  }
842
975
  // ---- 桥接器进程启停(页面托管)。embedded 与 lcb ui 独立模式语义不同:embedded 停止/重启