@jesonliu/lark-claudecode-bridge 0.3.1 → 0.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/README.md +43 -9
- package/config.example.yaml +19 -17
- package/dist/auth-precheck.d.ts +3 -3
- package/dist/auth-precheck.js +6 -7
- package/dist/auth-precheck.js.map +1 -1
- package/dist/cli/app-manager.d.ts +2 -3
- package/dist/cli/app-manager.js +2 -7
- package/dist/cli/app-manager.js.map +1 -1
- package/dist/cli/setup-wizard.js +1 -5
- package/dist/cli/setup-wizard.js.map +1 -1
- package/dist/config.js +7 -7
- package/dist/config.js.map +1 -1
- package/dist/executor/claude-executor.d.ts +6 -2
- package/dist/executor/claude-executor.js +19 -1
- package/dist/executor/claude-executor.js.map +1 -1
- package/dist/executor/plugin-discovery.d.ts +26 -0
- package/dist/executor/plugin-discovery.js +131 -0
- package/dist/executor/plugin-discovery.js.map +1 -0
- package/dist/index.js +44 -14
- package/dist/index.js.map +1 -1
- package/dist/session/commands.d.ts +13 -2
- package/dist/session/commands.js +95 -8
- package/dist/session/commands.js.map +1 -1
- package/dist/session/session-store.d.ts +3 -0
- package/dist/session/session-store.js.map +1 -1
- package/dist/session/triggers.d.ts +1 -1
- package/dist/session/triggers.js +3 -2
- package/dist/session/triggers.js.map +1 -1
- package/dist/types.d.ts +34 -8
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,11 +7,13 @@
|
|
|
7
7
|
## 特性
|
|
8
8
|
|
|
9
9
|
- 私聊 / 群聊 @机器人 触发;群聊多人可用(配对 + 白名单访问控制)
|
|
10
|
-
-
|
|
10
|
+
- **直接使用本机 Claude Code 全套配置**:模型设置(`~/.claude/settings.json`)、登录态、user 级 MCP、skills、marketplace 插件自动继承,无须二次配置;已启用插件自动加载
|
|
11
|
+
- **斜杠透传**:飞书里直接发 `/superpowers:brainstorming` 等斜杠命令,原文透传给 Claude Code 展开(user skills / 插件命令均可触发);配合飞书「机器人菜单」可做成输入框上方的快捷操作按钮
|
|
12
|
+
- **多机器人**:一个进程同时跑 N 个飞书机器人,各自独立会话池、独立并发、独立人格(`append_system_prompt`);共享同一套 `~/.claude` 配置
|
|
11
13
|
- 写操作确认卡片:允许 / 拒绝 / 本次会话不再询问(仅任务发起人可点)
|
|
12
14
|
- 流式进度卡片(打字机效果 + 工具调用 + 运行心跳,静默不等于卡死)
|
|
13
15
|
- 结果文本 + 产出文件回传(图片预览、>10 文件自动 zip)
|
|
14
|
-
- 多工作区切换(/ws)、会话管理(/new /resume)、/stop
|
|
16
|
+
- 多工作区切换(/ws)、会话管理(/new /resume)、/stop 打断、模型切换(/model)、加载清单查看(/skills /plugins /mcp)
|
|
15
17
|
- **对话内容落盘**:用户消息与 Claude 回复全文存为 JSONL(`transcripts/`,为后续知识库挖掘打底;可选保留期)
|
|
16
18
|
- 通道并发(默认 3),通道内串行
|
|
17
19
|
|
|
@@ -69,7 +71,12 @@ lcb start
|
|
|
69
71
|
| /stop | 停止当前任务 |
|
|
70
72
|
| /status | 当前状态 |
|
|
71
73
|
| /ws list / /ws use \<名字\> | 工作区(切换仅 admin 可用) |
|
|
74
|
+
| /model | 查看当前模型;`/model <名字>` 通道级切换;`/model reset` 恢复默认 |
|
|
75
|
+
| /skills / /plugins / /mcp | 查看本会话实际加载的技能 / 插件 / MCP 服务 |
|
|
72
76
|
| /help | 帮助 |
|
|
77
|
+
| 其它 `/xxx` | **原文透传**给 Claude Code 派发斜杠命令(如 `/superpowers:brainstorming` 触发插件技能) |
|
|
78
|
+
|
|
79
|
+
> 清单类命令(/skills 等)的数据来自最近一次会话的加载清单;刚启动还没跑过任务时,先发一条普通消息(如「你好」)再查。
|
|
73
80
|
|
|
74
81
|
## 配置文件 ~/.lark-claudecode-bridge/config.yaml
|
|
75
82
|
|
|
@@ -83,9 +90,10 @@ apps: # 多机器人:每个应用一条长连接
|
|
|
83
90
|
# domain: lark # 国际版 Lark 才需要
|
|
84
91
|
# default_workspace: demo # 该机器人的默认工作区
|
|
85
92
|
# concurrency: 2 # 该机器人的并发上限
|
|
86
|
-
# append_system_prompt: '你是我的素材收集助手' #
|
|
87
|
-
# env: # per-app
|
|
88
|
-
#
|
|
93
|
+
# append_system_prompt: '你是我的素材收集助手' # 人格补充(多机器人差异化定位的主要手段)
|
|
94
|
+
# env: # per-app 环境变量(注意 ~/.claude/settings.json 的 env 优先级更高,
|
|
95
|
+
# 此处适合放 settings.json 里没有的键)
|
|
96
|
+
# SOME_PLUGIN_KEY: xxx
|
|
89
97
|
workspaces: # 工作区白名单(列表全局共享;「当前用哪个」per-app 隔离)
|
|
90
98
|
- name: demo
|
|
91
99
|
path: F:\workspace\demo
|
|
@@ -96,13 +104,38 @@ concurrency: 3 # 通道间并发上限(未单独配置的 app 沿
|
|
|
96
104
|
# retention_days: 90
|
|
97
105
|
```
|
|
98
106
|
|
|
99
|
-
###
|
|
107
|
+
### 配置继承(本机 ~/.claude 一处配置,全机器人共享)
|
|
108
|
+
|
|
109
|
+
所有机器人共享本机 `~/.claude`,以下内容自动继承、无须在 config.yaml 重复配置:
|
|
110
|
+
|
|
111
|
+
| 继承项 | 来源 | 说明 |
|
|
112
|
+
|---|---|---|
|
|
113
|
+
| 模型设置 | `~/.claude/settings.json` 的 `model` 与 `env` | 含 `ANTHROPIC_*`、第三方端点等全部环境变量 |
|
|
114
|
+
| 登录态 | `~/.claude/.credentials.json` / settings.json 认证声明 | 本机 `claude login` 一次即可 |
|
|
115
|
+
| user 级 MCP | `~/.claude.json` 的 `mcpServers` | 与本机 CLI 用同一批 MCP 服务 |
|
|
116
|
+
| skills | `~/.claude/skills/` | 可直接在飞书发 `/技能名` 触发(透传) |
|
|
117
|
+
| 插件 | `~/.claude/plugins/` 中已启用的 marketplace 插件 | 按 `installed_plugins.json` + `enabledPlugins` 自动加载 |
|
|
118
|
+
| 会话记录 | `~/.claude/projects/` | 飞书跑过的会话,本机 `claude --resume` 也能接着看 |
|
|
119
|
+
|
|
120
|
+
**插件自动发现**:随本机 CLI 的 `/plugin install` / `/plugin uninstall` 自动跟随(按文件 mtime 失效缓存);`apps[].plugins` 显式配置用于开发期直指源码目录,与自动发现同名时显式优先。
|
|
121
|
+
|
|
122
|
+
**多机器人隔离语义**:
|
|
100
123
|
|
|
101
124
|
- **会话池**:每个机器人一份 `sessions.<app_id>.json`,历史会话绝不共享,`/resume` 只见自己的
|
|
102
|
-
-
|
|
103
|
-
- **模型凭证**:`env` 可按机器人覆盖 `ANTHROPIC_BASE_URL` / `ANTHROPIC_API_KEY` / `ANTHROPIC_MODEL` 等(如对话机器人用高端模型、素材收集用便宜端点)
|
|
125
|
+
- **人格**:`append_system_prompt` 按机器人定制(如对话助手 / 素材收集各一套)
|
|
104
126
|
- **并发**:按机器人独立限额(缺省沿用全局 `concurrency`);同时与多个机器人对话互不排队
|
|
105
|
-
- **升级兼容**:旧版 `feishu:`
|
|
127
|
+
- **升级兼容**:旧版 `feishu:` 单应用配置无需改动即可启动(自动归一化);首次 `lcb app add` 会把旧配置原地转为 `apps:` 格式,**转换后新增的机器人请追加在列表后面**(旧数据归属第一个应用)
|
|
128
|
+
- ⚠️ **0.4 起废弃 `claude_config_dir`**:所有机器人统一用 `~/.claude(共享配置)`,机器人间仅会话池隔离。旧版独立目录 `~/.lark-claudecode-bridge/claude/<app_id>/` 中的历史会话不再可 `/resume`(启动时会提示目录位置,确认无用后可手动删除)
|
|
129
|
+
|
|
130
|
+
### 快捷操作:飞书机器人菜单
|
|
131
|
+
|
|
132
|
+
把常用技能做成聊天输入框上方的按钮(点击即发对应斜杠命令):
|
|
133
|
+
|
|
134
|
+
1. https://open.feishu.cn → 你的应用 → **应用功能 → 机器人 → 机器人菜单**
|
|
135
|
+
2. 添加菜单项,如:菜单名 **「内容生成」**、动作类型选 **「发送消息」**、消息内容填 `/content-producer:content-producer`
|
|
136
|
+
3. 发布新版本后,聊天窗口输入框上方即出现该按钮——点击 = 以你的身份发出该命令,经斜杠透传触发 content-producer 插件
|
|
137
|
+
|
|
138
|
+
> 菜单命令的格式:`/<插件名>:<技能名>`(插件技能)或 `/<技能名>`(user skill)。可用命令清单发 `/skills` 查看。
|
|
106
139
|
|
|
107
140
|
### 对话落盘
|
|
108
141
|
|
|
@@ -168,6 +201,7 @@ WantedBy=default.target
|
|
|
168
201
|
4. **多机器人同群的 @ 识别**:依赖每个机器人各自的 open_id 精确匹配;若某机器人的 open_id 拉取失败,多应用部署下该机器人的**群聊消息会被丢弃**(宁丢不猜,防止同群消息触发两个机器人重复执行)——私聊不受影响。
|
|
169
202
|
5. **旧数据迁移归属**:升级多应用后,旧 `sessions.json` 归属 `apps` 列表的第一个应用;新增机器人请追加在列表末尾,否则历史会话会挂错机器人。
|
|
170
203
|
6. **飞书 SDK 对非法 app_id 静默失败**:`ws.start()` 对形状不合法的 app_id 只打日志不报错,启动后请确认每条「✅ <应用名> 长连接已启动」状态行都出现了。
|
|
204
|
+
7. **共享 ~/.claude 的副作用**:本机 user 级 hooks 也会在机器人任务里执行(含阻断型 PostToolUse hook);`apps[].env` 的同名键会被 `~/.claude/settings.json` 的 `env` 覆盖(优先级:CLI flags(/model)> settings.json env > apps[].env > 进程环境)。插件加载失败 SDK 会静默跳过,实际加载情况以 `/plugins` 清单为准。
|
|
171
205
|
|
|
172
206
|
## 开发
|
|
173
207
|
|
package/config.example.yaml
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
# 多机器人:apps 数组,每个应用一条独立长连接 +
|
|
1
|
+
# 多机器人:apps 数组,每个应用一条独立长连接 + 独立会话池;机器人间仅会话隔离。
|
|
2
|
+
# 所有机器人共用本机 ~/.claude:模型设置(settings.json)、登录态、user 级 MCP、skills、
|
|
3
|
+
# 已启用的 marketplace 插件全部自动继承,无须在此重复配置认证/模型。
|
|
2
4
|
# 升级提示:旧版单应用 feishu: 格式仍可直接使用(启动时自动归一化,首次 lcb app add 时原地转格式)。
|
|
5
|
+
# 快捷操作:在飞书开放平台后台「应用功能 → 机器人 → 机器人菜单」配置菜单项
|
|
6
|
+
# (如「内容生成」→ 发送消息 /content-producer:content-producer),点击即触发对应技能/插件。
|
|
3
7
|
apps:
|
|
4
8
|
- name: 主力助手 # 显示名(日志前缀 / /status / lcb app list),缺省取 app_id
|
|
5
9
|
app_id: cli_xxxx # 飞书开放平台 → 凭证与基础信息
|
|
@@ -7,29 +11,27 @@ apps:
|
|
|
7
11
|
# domain: lark # 国际版 Lark 才需要
|
|
8
12
|
# default_workspace: demo # 该机器人的默认工作区(须在 workspaces 列表内),缺省用全局 defaults.workspace
|
|
9
13
|
# concurrency: 2 # 该机器人的并发上限(1-100),缺省用全局 concurrency
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
# env: # per-app 环境变量:不同机器人可用不同模型凭证
|
|
15
|
-
# ANTHROPIC_BASE_URL: https://your-endpoint/
|
|
16
|
-
# ANTHROPIC_MODEL: glm-4.6
|
|
14
|
+
# append_system_prompt: '你是我的素材收集助手' # 可选人格补充(多机器人差异化定位的主要手段)
|
|
15
|
+
# env: # per-app 环境变量(注意:~/.claude/settings.json 的 env 优先级更高,
|
|
16
|
+
# 此处适合放 settings.json 里没有的键)
|
|
17
|
+
# SOME_PLUGIN_KEY: xxx
|
|
17
18
|
# triggers: # 触发词映射:命中即把消息改写为 rewrite 再入队(按序首个命中生效)。
|
|
18
|
-
# #
|
|
19
|
-
#
|
|
20
|
-
#
|
|
21
|
-
#
|
|
19
|
+
# # 通常无须配置:未命中触发词的 /xxx 消息会原文透传给 Claude Code
|
|
20
|
+
# 自动展开斜杠命令(可触发 skills / 插件命令,如 /superpowers:brainstorming);
|
|
21
|
+
# 仅在需要改写参数/附加指令时才配触发词。
|
|
22
|
+
# match 以 / 开头 = 首 token 精确匹配(/produce 命中、/produced 不命中),
|
|
23
|
+
# 否则 = 整条消息包含该关键词即命中;{text}=原文全文,{args}=去掉首 token 的剩余参数。
|
|
24
|
+
# /stop /new /help 等本地命令永远优先,不会被劫持。改动写盘后下一条消息即热生效。
|
|
22
25
|
# - match: /produce
|
|
23
26
|
# rewrite: '调用 content-producer 插件的主技能(skills/content-producer/SKILL.md)执行内容生产流程,严格遵循其编排。任务参数:{args}'
|
|
24
27
|
# - match: 写文章
|
|
25
28
|
# rewrite: '调用 content-producer 插件的主技能(skills/content-producer/SKILL.md)执行内容生产流程,严格遵循其编排。任务描述:{text}'
|
|
26
|
-
# plugins: #
|
|
27
|
-
#
|
|
28
|
-
#
|
|
29
|
-
# # MCP 凭证(IMAGE_GEN_API_KEY 等)经上方 env 传入。
|
|
29
|
+
# plugins: # 通常无须配置:~/.claude 已启用的插件自动加载(随 CLI 的 /plugin install 变化)。
|
|
30
|
+
# 显式配置用于开发期直指源码目录(改 SKILL.md 即生效,无需重装);
|
|
31
|
+
# 与自动发现同名时显式优先。插件的 MCP/hooks 随之加载。
|
|
30
32
|
# - name: content-producer
|
|
31
33
|
# path: F:/workspace/plugins/content-producer/plugin
|
|
32
|
-
# - name: 素材收集 #
|
|
34
|
+
# - name: 素材收集 # 再添一个机器人:复制上面的结构即可(会话池独立,配置共享 ~/.claude)
|
|
33
35
|
# app_id: cli_yyyy
|
|
34
36
|
# app_secret: yyyy
|
|
35
37
|
workspaces: # 工作区白名单:名字 + 路径(所有机器人共享列表,当前使用哪个 per-app 隔离)
|
package/dist/auth-precheck.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* 环境变量(进程透传或 apps[].env)→
|
|
2
|
+
* 检查认证来源(与 CLI 侧判定顺序一致):
|
|
3
|
+
* 环境变量(进程透传或 apps[].env)→ ~/.claude OAuth 凭证 → ~/.claude settings.json 认证声明。
|
|
4
4
|
*/
|
|
5
5
|
export declare function hasClaudeAuth(appEnv: Record<string, string | undefined>, claudeConfigDir: string): boolean;
|
|
6
|
-
/** 启动预检:无任何认证来源时 warn
|
|
6
|
+
/** 启动预检:无任何认证来源时 warn 修复出路;返回是否存在认证(测试断言用) */
|
|
7
7
|
export declare function warnIfNoClaudeAuth(appName: string, appEnv: Record<string, string | undefined>, claudeConfigDir: string): boolean;
|
package/dist/auth-precheck.js
CHANGED
|
@@ -23,24 +23,23 @@ function hasSettingsAuth(claudeConfigDir) {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
27
|
-
* 环境变量(进程透传或 apps[].env)→
|
|
26
|
+
* 检查认证来源(与 CLI 侧判定顺序一致):
|
|
27
|
+
* 环境变量(进程透传或 apps[].env)→ ~/.claude OAuth 凭证 → ~/.claude settings.json 认证声明。
|
|
28
28
|
*/
|
|
29
29
|
export function hasClaudeAuth(appEnv, claudeConfigDir) {
|
|
30
30
|
return hasEnvAuth(appEnv)
|
|
31
31
|
|| existsSync(join(claudeConfigDir, '.credentials.json'))
|
|
32
32
|
|| hasSettingsAuth(claudeConfigDir);
|
|
33
33
|
}
|
|
34
|
-
/** 启动预检:无任何认证来源时 warn
|
|
34
|
+
/** 启动预检:无任何认证来源时 warn 修复出路;返回是否存在认证(测试断言用) */
|
|
35
35
|
export function warnIfNoClaudeAuth(appName, appEnv, claudeConfigDir) {
|
|
36
36
|
if (hasClaudeAuth(appEnv, claudeConfigDir))
|
|
37
37
|
return true;
|
|
38
38
|
console.warn(`[app:${appName}] [配置] 未检测到 Claude Code 认证来源:环境变量无 ANTHROPIC_AUTH_TOKEN/ANTHROPIC_API_KEY,`
|
|
39
39
|
+ `且 ${claudeConfigDir} 下无 .credentials.json,settings.json 也未声明认证。`
|
|
40
|
-
+ `发消息将报「Not logged in · Please run /login
|
|
41
|
-
+ `①
|
|
42
|
-
+ `②
|
|
43
|
-
+ `③ 在该目录登录一次:CLAUDE_CONFIG_DIR=${claudeConfigDir} claude login`);
|
|
40
|
+
+ `发消息将报「Not logged in · Please run /login」。二选一修复:`
|
|
41
|
+
+ `① 在本机终端登录一次 claude login(登录态存于 ~/.claude,所有机器人共享);`
|
|
42
|
+
+ `② 在 ~/.claude/settings.json 的 env 配 ANTHROPIC_AUTH_TOKEN(第三方端点另配 ANTHROPIC_BASE_URL)`);
|
|
44
43
|
return false;
|
|
45
44
|
}
|
|
46
45
|
//# sourceMappingURL=auth-precheck.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-precheck.js","sourceRoot":"","sources":["../src/auth-precheck.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,mDAAmD;AACnD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,sEAAsE;AACtE,SAAS,UAAU,CAAC,MAA0C;IAC5D,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED,6EAA6E;AAC7E,SAAS,eAAe,CAAC,eAAuB;IAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAG7C,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;QAC1B,OAAO,OAAO,CACZ,CAAC,OAAO,GAAG,CAAC,oBAAoB,KAAK,QAAQ,IAAI,GAAG,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;eAC9E,CAAC,OAAO,GAAG,CAAC,iBAAiB,KAAK,QAAQ,IAAI,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;eAC3E,CAAC,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CACrE,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAA0C,EAAE,eAAuB;IAC/F,OAAO,UAAU,CAAC,MAAM,CAAC;WACpB,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;WACtD,eAAe,CAAC,eAAe,CAAC,CAAC;AACxC,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,MAA0C,EAC1C,eAAuB;IAEvB,IAAI,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC;QAAE,OAAO,IAAI,CAAC;IACxD,OAAO,CAAC,IAAI,CACV,QAAQ,OAAO,4EAA4E;UACzF,KAAK,eAAe,6CAA6C;UACjE,iDAAiD;UACjD,
|
|
1
|
+
{"version":3,"file":"auth-precheck.js","sourceRoot":"","sources":["../src/auth-precheck.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,mDAAmD;AACnD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,sEAAsE;AACtE,SAAS,UAAU,CAAC,MAA0C;IAC5D,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED,6EAA6E;AAC7E,SAAS,eAAe,CAAC,eAAuB;IAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAG7C,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;QAC1B,OAAO,OAAO,CACZ,CAAC,OAAO,GAAG,CAAC,oBAAoB,KAAK,QAAQ,IAAI,GAAG,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;eAC9E,CAAC,OAAO,GAAG,CAAC,iBAAiB,KAAK,QAAQ,IAAI,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;eAC3E,CAAC,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CACrE,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAA0C,EAAE,eAAuB;IAC/F,OAAO,UAAU,CAAC,MAAM,CAAC;WACpB,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;WACtD,eAAe,CAAC,eAAe,CAAC,CAAC;AACxC,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,MAA0C,EAC1C,eAAuB;IAEvB,IAAI,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC;QAAE,OAAO,IAAI,CAAC;IACxD,OAAO,CAAC,IAAI,CACV,QAAQ,OAAO,4EAA4E;UACzF,KAAK,eAAe,6CAA6C;UACjE,iDAAiD;UACjD,oDAAoD;UACpD,sFAAsF,CACzF,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -12,9 +12,8 @@ export interface AppInput {
|
|
|
12
12
|
domain?: 'feishu' | 'lark';
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
|
-
* 添加应用。配置为旧 feishu 单应用格式时先原地转 apps 数组(首次 app
|
|
16
|
-
*
|
|
17
|
-
* 推导独立目录,不显式钉住系统默认目录会丢存量会话的 resume 链。
|
|
15
|
+
* 添加应用。配置为旧 feishu 单应用格式时先原地转 apps 数组(首次 app 操作即完成格式升级)。
|
|
16
|
+
* Claude Code 数据目录一律为 ~/.claude(全机器人共享,无 per-app 配置项)。
|
|
18
17
|
*/
|
|
19
18
|
export declare function addApp(raw: string, input: AppInput): AppResult;
|
|
20
19
|
/** 删除应用(按 name 或 app_id 匹配);最后一个不可删;遗留的会话分片与落盘目录不动(人工清理) */
|
package/dist/cli/app-manager.js
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
// lcb app add/remove/list 的核心逻辑:对已有 config.yaml 做增量改写(保注释),模式复刻 ws-manager。
|
|
2
2
|
// 纯逻辑,写盘由调用方(bin)负责,tests/app-manager.test.ts 直接单测。
|
|
3
|
-
import { homedir } from 'node:os';
|
|
4
|
-
import { join } from 'node:path';
|
|
5
3
|
import { parseDocument } from 'yaml';
|
|
6
4
|
function appsSeq(raw) {
|
|
7
5
|
const doc = parseDocument(raw);
|
|
8
6
|
return doc.get('apps');
|
|
9
7
|
}
|
|
10
8
|
/**
|
|
11
|
-
* 添加应用。配置为旧 feishu 单应用格式时先原地转 apps 数组(首次 app
|
|
12
|
-
*
|
|
13
|
-
* 推导独立目录,不显式钉住系统默认目录会丢存量会话的 resume 链。
|
|
9
|
+
* 添加应用。配置为旧 feishu 单应用格式时先原地转 apps 数组(首次 app 操作即完成格式升级)。
|
|
10
|
+
* Claude Code 数据目录一律为 ~/.claude(全机器人共享,无 per-app 配置项)。
|
|
14
11
|
*/
|
|
15
12
|
export function addApp(raw, input) {
|
|
16
13
|
const appId = input.appId.trim();
|
|
@@ -33,8 +30,6 @@ export function addApp(raw, input) {
|
|
|
33
30
|
app_id: oldAppId,
|
|
34
31
|
app_secret: oldSecret,
|
|
35
32
|
...(oldDomain ? { domain: String(oldDomain) } : {}),
|
|
36
|
-
// 存量会话在系统默认目录,显式钉住防止归一化按新 app 规则推导独立目录
|
|
37
|
-
claude_config_dir: join(homedir(), '.claude'),
|
|
38
33
|
}]));
|
|
39
34
|
doc.delete('feishu');
|
|
40
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-manager.js","sourceRoot":"","sources":["../../src/cli/app-manager.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,oDAAoD;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"app-manager.js","sourceRoot":"","sources":["../../src/cli/app-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/setup-wizard.js
CHANGED
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
// 交互层(readline 问答)与序列化层(answersToConfig / toYamlDocument)分离:
|
|
3
3
|
// 序列化层是纯函数,tests/cli.test.ts 直接单测;交互层留给手动冒烟
|
|
4
4
|
import { mkdirSync, writeFileSync, existsSync, readFileSync } from 'node:fs';
|
|
5
|
-
import { dirname
|
|
5
|
+
import { dirname } from 'node:path';
|
|
6
6
|
import { stringify } from 'yaml';
|
|
7
|
-
import { CONFIG_DIR } from '../config.js';
|
|
8
7
|
import { asker } from './asker.js';
|
|
9
8
|
/** App ID 形状(Task 6 遗留建议:不符仅警告,不阻止) */
|
|
10
9
|
export const APP_ID_RE = /^cli_[0-9a-fA-F]{16}$/;
|
|
@@ -20,9 +19,6 @@ export function answersToConfig(a) {
|
|
|
20
19
|
name: app.name?.trim() || app.appId,
|
|
21
20
|
appId: app.appId,
|
|
22
21
|
appSecret: app.appSecret,
|
|
23
|
-
// 新配置 app 的缺省数据目录(与 loadConfig/normalizeApps 推导一致;
|
|
24
|
-
// toYamlDocument 不写此键,落盘后仍由 loadConfig 重新推导)
|
|
25
|
-
claudeConfigDir: join(CONFIG_DIR, 'claude', app.appId),
|
|
26
22
|
})),
|
|
27
23
|
workspaces: a.workspaces,
|
|
28
24
|
defaults: { workspace: a.workspaces.some((w) => w.name === ws) ? ws : first },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../../src/cli/setup-wizard.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,6DAA6D;AAC7D,4CAA4C;AAC5C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../../src/cli/setup-wizard.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -86,11 +86,12 @@ function normalizeApps(doc, workspaceNames) {
|
|
|
86
86
|
throw new Error(`${where} 的 concurrency 必须为 1-100 的数字(当前值:${String(raw.concurrency)}),请检查 config.yaml`);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
//
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
89
|
+
// claude_config_dir 已废弃:所有机器人一律共享本机 ~/.claude(模型设置/登录态/MCP/skills/插件),
|
|
90
|
+
// 机器人间仅靠 sessions.<appId>.json 做会话隔离。检测到旧键仅 warn 不报错,保证存量配置平滑升级
|
|
91
|
+
if (typeof raw.claude_config_dir === 'string' && raw.claude_config_dir.trim()) {
|
|
92
|
+
console.warn(`[配置] ${where} 的 claude_config_dir 已废弃:本版起所有机器人一律使用 ~/.claude`
|
|
93
|
+
+ `(共享本机模型设置/登录态/MCP/skills/插件,仅会话池隔离),该配置项将被忽略`);
|
|
94
|
+
}
|
|
94
95
|
return {
|
|
95
96
|
name,
|
|
96
97
|
appId,
|
|
@@ -99,7 +100,6 @@ function normalizeApps(doc, workspaceNames) {
|
|
|
99
100
|
defaultWorkspace: raw.default_workspace,
|
|
100
101
|
concurrency,
|
|
101
102
|
appendSystemPrompt: raw.append_system_prompt,
|
|
102
|
-
claudeConfigDir,
|
|
103
103
|
env: raw.env && typeof raw.env === 'object' ? raw.env : undefined,
|
|
104
104
|
triggers: normalizeTriggers(raw.triggers, where),
|
|
105
105
|
plugins: normalizePlugins(raw.plugins, where),
|
|
@@ -161,7 +161,7 @@ export function sameApps(a, b) {
|
|
|
161
161
|
const y = b[i];
|
|
162
162
|
return x.appId === y.appId && x.appSecret === y.appSecret && x.name === y.name
|
|
163
163
|
&& x.domain === y.domain && x.defaultWorkspace === y.defaultWorkspace
|
|
164
|
-
&& x.concurrency === y.concurrency
|
|
164
|
+
&& x.concurrency === y.concurrency
|
|
165
165
|
&& x.appendSystemPrompt === y.appendSystemPrompt
|
|
166
166
|
&& JSON.stringify(x.env ?? {}) === JSON.stringify(y.env ?? {});
|
|
167
167
|
});
|
package/dist/config.js.map
CHANGED
|
@@ -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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"}
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { type McpServerConfig } from '@anthropic-ai/claude-agent-sdk';
|
|
2
|
-
import type { ProgressEvent, TaskOutcome } from '../types.js';
|
|
2
|
+
import type { ProgressEvent, SessionInventory, TaskOutcome } from '../types.js';
|
|
3
3
|
export interface ExecutorCallbacks {
|
|
4
4
|
onProgress(event: ProgressEvent): Promise<void> | void;
|
|
5
|
+
/** SDK init(system/init) 消息到达时回调(每 query 仅一次);提取本会话实际加载的模型/技能/插件/MCP 清单 */
|
|
6
|
+
onInit?(inventory: Omit<SessionInventory, 'workspace' | 'loadedAt'>): void;
|
|
5
7
|
}
|
|
6
8
|
export interface RunTaskOptions {
|
|
7
9
|
cwd: string;
|
|
8
10
|
resumeSessionId?: string;
|
|
9
11
|
signal?: AbortSignal;
|
|
10
|
-
/** per-app 环境变量:至少含 CLAUDE_CONFIG_DIR
|
|
12
|
+
/** per-app 环境变量:至少含 CLAUDE_CONFIG_DIR(~/.claude,全部机器人共享);可追加 settings.json 里没有的键 */
|
|
11
13
|
env?: Record<string, string | undefined>;
|
|
12
14
|
/** per-app 人格补充,直通 SDK appendSystemPrompt */
|
|
13
15
|
appendSystemPrompt?: string;
|
|
16
|
+
/** 通道级模型覆盖(/model 命令设置),直通 Options.model;未设 = 跟随 ~/.claude/settings.json 的 model */
|
|
17
|
+
model?: string;
|
|
14
18
|
canUseTool?: (toolName: string, input: Record<string, unknown>) => Promise<{
|
|
15
19
|
behavior: 'allow';
|
|
16
20
|
message?: string;
|
|
@@ -33,6 +33,7 @@ export async function runTask(prompt, opts, cb) {
|
|
|
33
33
|
...(opts.signal ? { abortController: bridgeSignal(opts.signal) } : {}),
|
|
34
34
|
...(opts.env ? { env: opts.env } : {}),
|
|
35
35
|
...(opts.appendSystemPrompt ? { appendSystemPrompt: opts.appendSystemPrompt } : {}),
|
|
36
|
+
...(opts.model ? { model: opts.model } : {}),
|
|
36
37
|
...(opts.mcpServers ? { mcpServers: opts.mcpServers } : {}),
|
|
37
38
|
...(opts.plugins ? { plugins: opts.plugins.map((p) => ({ type: 'local', path: p.path })) } : {}),
|
|
38
39
|
};
|
|
@@ -40,9 +41,26 @@ export async function runTask(prompt, opts, cb) {
|
|
|
40
41
|
let finalText = '';
|
|
41
42
|
let sessionId = opts.resumeSessionId ?? '';
|
|
42
43
|
let turns = 0;
|
|
44
|
+
// init 消息提取的会话清单(每 query 一次);数组字段全部 ?? [] 兜底——SDK 升级字段改名时清单为空但不崩
|
|
45
|
+
let inventory;
|
|
43
46
|
const toolNames = new Map(); // tool_use_id → 工具名(tool_result 块本身不带 name)
|
|
44
47
|
for await (const message of q) {
|
|
45
48
|
switch (message.type) {
|
|
49
|
+
case 'system': {
|
|
50
|
+
if (message.subtype === 'init') {
|
|
51
|
+
inventory = {
|
|
52
|
+
model: message.model,
|
|
53
|
+
claudeCodeVersion: message.claude_code_version,
|
|
54
|
+
skills: message.skills ?? [],
|
|
55
|
+
slashCommands: message.slash_commands ?? [],
|
|
56
|
+
plugins: (message.plugins ?? []).map((p) => ({ name: p.name, path: p.path, version: p.version })),
|
|
57
|
+
mcpServers: message.mcp_servers ?? [],
|
|
58
|
+
agents: message.agents ?? [],
|
|
59
|
+
};
|
|
60
|
+
cb.onInit?.(inventory);
|
|
61
|
+
}
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
46
64
|
case 'assistant': {
|
|
47
65
|
turns++;
|
|
48
66
|
for (const block of message.message.content) {
|
|
@@ -79,6 +97,6 @@ export async function runTask(prompt, opts, cb) {
|
|
|
79
97
|
}
|
|
80
98
|
}
|
|
81
99
|
}
|
|
82
|
-
return { sessionId, finalText, producedFiles: collector.files(), turns };
|
|
100
|
+
return { sessionId, finalText, producedFiles: collector.files(), turns, ...(inventory ? { inventory } : {}) };
|
|
83
101
|
}
|
|
84
102
|
//# sourceMappingURL=claude-executor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-executor.js","sourceRoot":"","sources":["../../src/executor/claude-executor.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,qDAAqD;AACrD,OAAO,EAAE,KAAK,EAAuD,MAAM,gCAAgC,CAAC;AAC5G,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-executor.js","sourceRoot":"","sources":["../../src/executor/claude-executor.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,qDAAqD;AACrD,OAAO,EAAE,KAAK,EAAuD,MAAM,gCAAgC,CAAC;AAC5G,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AA+BxD,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,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;IACxC,MAAM,OAAO,GAAY;QACvB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,cAAc,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;QACnC,cAAc,EAAE,SAAS;QACzB,sBAAsB,EAAE,KAAK;QAC7B,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,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;KAC1G,CAAC;IACF,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACrC,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,IAAI,YAAY,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;oBAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;gBACtG,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IACD,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;AAChH,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { PluginRef } from '../types.js';
|
|
2
|
+
export interface DiscoveredPlugin {
|
|
3
|
+
/** 插件名(installed_plugins.json 键 "name@marketplace" 的 @ 前段) */
|
|
4
|
+
name: string;
|
|
5
|
+
marketplace?: string;
|
|
6
|
+
/** 安装目录(含 .claude-plugin/plugin.json) */
|
|
7
|
+
path: string;
|
|
8
|
+
version?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 发现 <claudeConfigDir>/plugins/installed_plugins.json 中 scope=user 且
|
|
12
|
+
* settings.json enabledPlugins 显式启用(=== true)的插件。
|
|
13
|
+
* 典型数据(本机 ~/.claude 实测):
|
|
14
|
+
* installed_plugins.json: {version:2, plugins:{"name@marketplace":[{scope:"user",installPath,version}]}}
|
|
15
|
+
* settings.json: {enabledPlugins:{"name@marketplace":true}}
|
|
16
|
+
*/
|
|
17
|
+
export declare function discoverPlugins(claudeConfigDir: string): DiscoveredPlugin[];
|
|
18
|
+
/**
|
|
19
|
+
* 显式配置(config.yaml apps[].plugins,开发期指源码目录)与自动发现结果合并:
|
|
20
|
+
* 按插件名去重,显式优先——防「显式指 dev 副本 + 缓存里正式版」双载导致技能重复。
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolvePluginPaths(explicit: PluginRef[] | undefined, discovered: DiscoveredPlugin[]): Array<{
|
|
23
|
+
name: string;
|
|
24
|
+
path: string;
|
|
25
|
+
source: 'explicit' | 'discovered';
|
|
26
|
+
}>;
|