@jesonliu/lark-claudecode-bridge 0.14.2 → 0.17.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 +5 -1
- package/assets/web/index.html +7 -2
- package/config.example.yaml +3 -0
- package/dist/claude-profile.d.ts +20 -0
- package/dist/claude-profile.js +101 -0
- package/dist/claude-profile.js.map +1 -0
- package/dist/config.d.ts +2 -0
- package/dist/config.js +22 -2
- package/dist/config.js.map +1 -1
- package/dist/executor/claude-executor.d.ts +9 -1
- package/dist/executor/claude-executor.js +174 -54
- package/dist/executor/claude-executor.js.map +1 -1
- package/dist/executor/permission-gate.js +7 -2
- package/dist/executor/permission-gate.js.map +1 -1
- package/dist/gateway/progress-card.d.ts +2 -0
- package/dist/gateway/progress-card.js +15 -2
- package/dist/gateway/progress-card.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +131 -22
- package/dist/index.js.map +1 -1
- package/dist/session/commands.d.ts +8 -3
- package/dist/session/commands.js +68 -25
- package/dist/session/commands.js.map +1 -1
- package/dist/session/model-profile-command.d.ts +6 -0
- package/dist/session/model-profile-command.js +45 -0
- package/dist/session/model-profile-command.js.map +1 -0
- package/dist/session/session-store.d.ts +9 -3
- package/dist/session/session-store.js +3 -4
- package/dist/session/session-store.js.map +1 -1
- package/dist/session/triggers.js +9 -1
- package/dist/session/triggers.js.map +1 -1
- package/dist/types.d.ts +24 -0
- package/dist/web/server.js +5 -58
- package/dist/web/server.js.map +1 -1
- package/package.json +1 -1
package/dist/session/commands.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { formatBeijingTime } from '../util/beijing-time.js';
|
|
2
2
|
import { handlePluginCommand } from './plugin-command.js';
|
|
3
|
+
import { handleModelProfileCommand } from './model-profile-command.js';
|
|
3
4
|
import { invalidatePluginCache } from '../executor/plugin-discovery.js';
|
|
4
5
|
/**
|
|
5
6
|
* bridge 本地命令首 token 清单(去 / 后比对)。单一来源:commands.ts 的 switch、
|
|
6
7
|
* triggers.ts 的 RESERVED、index.ts 的透传说明均以此为准——本地命令永远优先,
|
|
7
8
|
* 不被触发词劫持、不透传给 Claude Code。新增本地命令务必同步此清单
|
|
8
9
|
*/
|
|
9
|
-
export const BRIDGE_LOCAL_COMMANDS = ['help', 'new', 'resume', 'stop', 'status', 'ws', 'model', 'skills', 'plugins', 'mcp', 'plugin', 'reload-plugins'];
|
|
10
|
+
export const BRIDGE_LOCAL_COMMANDS = ['help', 'new', 'resume', 'stop', 'status', 'ws', 'model', 'model-profile', 'skills', 'plugins', 'mcp', 'plugin', 'reload-plugins'];
|
|
10
11
|
/**
|
|
11
12
|
* 内置命令的飞书 Slash Command 注册元信息(icon 为飞书 icon_key,见开放平台文档可选列表)。
|
|
12
13
|
* 斜杠命令同步(feishu/slash-commands)的默认期望集 = 本表的全部键 + config.slash_commands.extra。
|
|
@@ -15,11 +16,12 @@ export const BRIDGE_LOCAL_COMMANDS = ['help', 'new', 'resume', 'stop', 'status',
|
|
|
15
16
|
export const SLASH_COMMAND_META = {
|
|
16
17
|
help: { description: '查看全部命令', icon: 'slash-ai_outlined' },
|
|
17
18
|
new: { description: '开启新会话', icon: 'add-chat-ai_outlined' },
|
|
18
|
-
resume: { description: '
|
|
19
|
+
resume: { description: '列出/恢复历史会话(支持翻页)', icon: 'update-ai_outlined' },
|
|
19
20
|
stop: { description: '停止当前任务', icon: 'clear_outlined' },
|
|
20
21
|
status: { description: '查看当前状态', icon: 'diagnosis-ai_outlined' },
|
|
21
22
|
ws: { description: '切换工作区(/ws list 列出)', icon: 'folder_outlined' },
|
|
22
23
|
model: { description: '查看/切换模型', icon: 'ai-style_outlined' },
|
|
24
|
+
'model-profile': { description: '查看/切换厂商档案(切换需管理员)', icon: 'switch-tracking_outlined' },
|
|
23
25
|
skills: { description: '查看已加载技能', icon: 'skill_outlined' },
|
|
24
26
|
plugins: { description: '查看已加载插件', icon: 'plugin_outlined' },
|
|
25
27
|
mcp: { description: '查看已加载 MCP 服务', icon: 'ai-functions_outlined' },
|
|
@@ -28,13 +30,15 @@ export const SLASH_COMMAND_META = {
|
|
|
28
30
|
};
|
|
29
31
|
const HELP = `**可用命令**
|
|
30
32
|
/new — 开启新会话
|
|
31
|
-
/resume —
|
|
32
|
-
/resume <编号> —
|
|
33
|
+
/resume — 列出历史会话(最近 20 条,倒序,1 = 最新)
|
|
34
|
+
/resume <编号> — 恢复指定会话(编号全局连续,可跨页)
|
|
35
|
+
/resume page <页码> — 翻看更早的历史会话
|
|
33
36
|
/stop — 停止当前任务
|
|
34
37
|
/status — 查看当前状态
|
|
35
38
|
/ws list — 列出工作区
|
|
36
39
|
/ws use <名字> — 切换工作区
|
|
37
40
|
/model — 查看/切换模型(/model <名字> 切换,/model reset 恢复默认)
|
|
41
|
+
/model-profile — 查看/切换厂商档案(/model-profile <名字> 切换,管理员)
|
|
38
42
|
/skills — 查看已加载技能
|
|
39
43
|
/plugins — 查看已加载插件
|
|
40
44
|
/mcp — 查看已加载 MCP 服务
|
|
@@ -45,6 +49,8 @@ const HELP = `**可用命令**
|
|
|
45
49
|
💡 其它 / 开头的消息将原文透传给 Claude Code(可触发其技能与插件命令,如 /superpowers:brainstorming)`;
|
|
46
50
|
/** 清单类命令的空态提示(会话未初始化 → init 消息未到 → 无缓存) */
|
|
47
51
|
const NO_INVENTORY_REPLY = '暂无加载清单——Claude Code 会话尚未初始化。\n先发一条任务消息(任意内容,如「你好」),完成后再查看。';
|
|
52
|
+
/** /resume 每页展示条数;超过后 /resume page <n> 翻看更早 */
|
|
53
|
+
const RESUME_PAGE_SIZE = 20;
|
|
48
54
|
/** 清单超过 30 项时截断展示 */
|
|
49
55
|
function tail(items) {
|
|
50
56
|
return items.length > 30 ? `${items.slice(0, 30).join('、')} …等 ${items.length} 个` : items.join('、');
|
|
@@ -58,8 +64,9 @@ function inventoryHeader(inv) {
|
|
|
58
64
|
* 本地命令之外的 / 开头消息也返回 { handled: false, taskText } 原文透传——
|
|
59
65
|
* SDK 会话可直接派发 prompt 里的斜杠命令(user skills / 插件命令等),
|
|
60
66
|
* Claude Code 侧不存在的命令会在任务结果里回报错误,比 bridge 拦截信息量更大。
|
|
61
|
-
*
|
|
62
|
-
*
|
|
67
|
+
* 会话编号约定:/resume 列表按时间倒序展示(1 = 最新归档),编号全局连续——
|
|
68
|
+
* 翻页后编号顺延(第 2 页为 21-40 …),/resume <编号> 可跨页直接恢复;
|
|
69
|
+
* 内部存储为新→旧(sessions[0] 为最新),故编号 n 对应内部下标 n - 1。
|
|
63
70
|
*/
|
|
64
71
|
export async function handleCommand(text, ctx) {
|
|
65
72
|
if (!text.startsWith('/'))
|
|
@@ -74,30 +81,48 @@ export async function handleCommand(text, ctx) {
|
|
|
74
81
|
const st = store.getChannelState(key);
|
|
75
82
|
// 仅清除「当前续接指针」,历史会话列表保留(/resume 仍可切回)——
|
|
76
83
|
// 旧版清空整个 sessions 导致开新会话后历史「消失」,列表永远积累不起来
|
|
77
|
-
store.setCurrentSession(key, null, st?.workspaceName
|
|
84
|
+
store.setCurrentSession(key, null, st?.workspaceName || ws);
|
|
78
85
|
return { handled: true, reply: `✅ 已开启新会话(工作区:${ws})。历史会话未清空,/resume 可随时切回` };
|
|
79
86
|
}
|
|
80
87
|
case 'resume': {
|
|
81
|
-
const sessions = store.listSessions(key);
|
|
82
|
-
if (
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
88
|
+
const sessions = store.listSessions(key); // 内部新→旧(sessions[0] 最新)
|
|
89
|
+
if (sessions.length === 0)
|
|
90
|
+
return { handled: true, reply: '暂无历史会话' };
|
|
91
|
+
const totalPages = Math.max(1, Math.ceil(sessions.length / RESUME_PAGE_SIZE));
|
|
92
|
+
// 渲染一页:倒序(1 = 最新)、编号全局连续(翻页后 21-40 …,/resume <编号> 跨页可用),
|
|
93
|
+
// 当前续接的会话打标(一眼看出下条消息会接到哪)
|
|
94
|
+
const renderPage = (page) => {
|
|
86
95
|
const current = store.getChannelState(key)?.currentSessionId;
|
|
87
|
-
const
|
|
88
|
-
const list =
|
|
89
|
-
.map((s, i) => `${i + 1}.
|
|
96
|
+
const slice = sessions.slice((page - 1) * RESUME_PAGE_SIZE, page * RESUME_PAGE_SIZE);
|
|
97
|
+
const list = slice
|
|
98
|
+
.map((s, i) => `${(page - 1) * RESUME_PAGE_SIZE + i + 1}. <font color='grey'>${formatBeijingTime(s.updatedAt)}</font> ${s.summary || '(无摘要)'}${s.sessionId === current ? ' ← 当前' : ''}`)
|
|
90
99
|
.join('\n');
|
|
91
|
-
|
|
100
|
+
const nav = [];
|
|
101
|
+
if (page < totalPages)
|
|
102
|
+
nav.push(`/resume page ${page + 1} 查看更早`);
|
|
103
|
+
if (page > 1)
|
|
104
|
+
nav.push(`/resume page ${page - 1} 查看更新`);
|
|
105
|
+
// 底部操作提示与列表用分隔线隔开、各自独占一行(挤在最后一个会话后面易被当成列表项);
|
|
106
|
+
// 恢复与翻页语法固定带全——单页时也教会用户 /resume page 用法,不依赖 nav 露出
|
|
107
|
+
const footer = ['`/resume <编号> 恢复 · /resume page <页码> 翻页`', '`/new 另起一支`', ...nav.map((n) => `\`${n}\``)].join('\n');
|
|
108
|
+
return `**历史会话**(第 ${page}/${totalPages} 页 · 共 ${sessions.length} 条 · 倒序,编号 1 = 最新)\n${list}\n\n---\n${footer}`;
|
|
109
|
+
};
|
|
110
|
+
if (args[0] === 'page') {
|
|
111
|
+
const p = Number(args[1]);
|
|
112
|
+
if (!Number.isInteger(p) || p < 1 || p > totalPages) {
|
|
113
|
+
return { handled: true, reply: `页码无效,范围 1-${totalPages}` };
|
|
114
|
+
}
|
|
115
|
+
return { handled: true, reply: renderPage(p) };
|
|
92
116
|
}
|
|
117
|
+
if (args.length === 0)
|
|
118
|
+
return { handled: true, reply: renderPage(1) };
|
|
93
119
|
const n = Number(args[0]);
|
|
94
120
|
if (!Number.isInteger(n) || n < 1 || n > sessions.length) {
|
|
95
121
|
return { handled: true, reply: `编号无效,范围 1-${sessions.length}` };
|
|
96
122
|
}
|
|
97
|
-
const target = sessions[
|
|
98
|
-
// 恢复 =
|
|
123
|
+
const target = sessions[n - 1]; // 倒序全局编号:n=1 → 最新(sessions[0]),跨页直接可用
|
|
124
|
+
// 恢复 = 当前续接指针指向选中会话(列表顺序不动,历史保持归档时间序)
|
|
99
125
|
store.setCurrentSession(key, target.sessionId);
|
|
100
|
-
// 标注当前指针,方便 /resume 列表辨认正在续接哪条
|
|
101
126
|
return { handled: true, reply: `↩️ 已恢复会话:${target.summary || target.sessionId}\n下一条任务将从该会话继续` };
|
|
102
127
|
}
|
|
103
128
|
case 'stop':
|
|
@@ -106,7 +131,7 @@ export async function handleCommand(text, ctx) {
|
|
|
106
131
|
const st = store.getChannelState(key);
|
|
107
132
|
return {
|
|
108
133
|
handled: true,
|
|
109
|
-
reply: `机器人:**${ctx.appName}**\n工作区:**${st?.workspaceName
|
|
134
|
+
reply: `机器人:**${ctx.appName}**\n工作区:**${st?.workspaceName || ctx.currentWorkspace()}**\n模型:**${st?.model ?? '跟随全局'}**\n历史会话:${store.listSessions(key).length} 个`,
|
|
110
135
|
};
|
|
111
136
|
}
|
|
112
137
|
case 'ws': {
|
|
@@ -146,7 +171,8 @@ export async function handleCommand(text, ctx) {
|
|
|
146
171
|
handled: true,
|
|
147
172
|
reply: `**模型设置**\n当前生效:**${current}**(来源:${source})`
|
|
148
173
|
+ `\n${st?.model ? '本通道已设置覆盖;' : '未设置通道覆盖时跟随 ~/.claude/settings.json;'}`
|
|
149
|
-
+ `\n切换:/model <名字>(如 /model opus);恢复默认:/model reset
|
|
174
|
+
+ `\n切换:/model <名字>(如 /model opus);恢复默认:/model reset。下一条消息起生效,仅影响本通道`
|
|
175
|
+
+ `\n管理多厂商档案(凭证+模型整体切换):/model-profile`,
|
|
150
176
|
};
|
|
151
177
|
}
|
|
152
178
|
if (arg === 'reset' || arg === 'default') {
|
|
@@ -164,6 +190,10 @@ export async function handleCommand(text, ctx) {
|
|
|
164
190
|
}
|
|
165
191
|
return { handled: true, reply: `✅ 已切换模型:**${arg}**(下一条消息起生效;/model reset 恢复默认)` };
|
|
166
192
|
}
|
|
193
|
+
case 'model-profile': {
|
|
194
|
+
// 厂商档案查看/切换(全局认证配置,切换仅 admin);内核 claude-profile.ts 与配置页共用
|
|
195
|
+
return { handled: true, reply: handleModelProfileCommand(args, { isAdmin: ctx.isAdmin, configPath: ctx.configPath }) };
|
|
196
|
+
}
|
|
167
197
|
case 'skills': {
|
|
168
198
|
const inv = ctx.getInventory();
|
|
169
199
|
if (!inv)
|
|
@@ -185,11 +215,24 @@ export async function handleCommand(text, ctx) {
|
|
|
185
215
|
const inv = ctx.getInventory();
|
|
186
216
|
if (!inv)
|
|
187
217
|
return { handled: true, reply: NO_INVENTORY_REPLY };
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
218
|
+
// init 快照必为 pending(拍摄于 MCP server 握手完成前):任务运行中实时拉取真实状态,
|
|
219
|
+
// 空闲期回退最近快照(任务收尾时 executor 已刷过一次真实状态)
|
|
220
|
+
const live = (await ctx.getLiveMcpStatus?.()) ?? null;
|
|
221
|
+
const servers = live ?? inv.mcpServers;
|
|
222
|
+
const list = servers.map((s) => {
|
|
223
|
+
const icon = s.status === 'connected' ? '✅'
|
|
224
|
+
: s.status === 'failed' ? '❌'
|
|
225
|
+
: s.status === 'needs-auth' ? '🔑'
|
|
226
|
+
: s.status === 'disabled' ? '⏸️'
|
|
227
|
+
: '⏳';
|
|
228
|
+
const toolsNote = s.status === 'connected' && s.tools?.length ? `(${s.tools.length} 个工具)` : '';
|
|
229
|
+
const errNote = s.status === 'failed' && s.error ? `:${s.error.split('\n')[0].slice(0, 80)}` : '';
|
|
230
|
+
return `- ${icon} **${s.name}**(${s.status})${toolsNote}${errNote}`;
|
|
191
231
|
}).join('\n');
|
|
192
|
-
|
|
232
|
+
const source = live
|
|
233
|
+
? '实时状态'
|
|
234
|
+
: `快照 · ${formatBeijingTime(inv.loadedAt)} 加载(下次任务运行时自动刷新)`;
|
|
235
|
+
return { handled: true, reply: `**MCP 服务** ${servers.length} 个 · <font color='grey'>${source}</font>\n${list}` };
|
|
193
236
|
}
|
|
194
237
|
case 'plugin': {
|
|
195
238
|
// 飞书端插件管理(安装/启停/市场):本地接管,不再透传给 Claude Code 会话
|
|
@@ -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":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAExE;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,CAAU,CAAC;AAElL;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA0D;IACvF,IAAI,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE;IAC1D,GAAG,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAE;IAC3D,MAAM,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,IAAI,EAAE,oBAAoB,EAAE;IACtE,IAAI,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE;IACvD,MAAM,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,uBAAuB,EAAE;IAChE,EAAE,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE,IAAI,EAAE,iBAAiB,EAAE;IAClE,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,mBAAmB,EAAE;IAC5D,eAAe,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE,IAAI,EAAE,0BAA0B,EAAE;IACvF,MAAM,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAC1D,OAAO,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,EAAE;IAC5D,GAAG,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,IAAI,EAAE,uBAAuB,EAAE;IACnE,MAAM,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE,IAAI,EAAE,iBAAiB,EAAE;IACtE,gBAAgB,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,EAAE;CAChF,CAAC;AAgCF,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;0EAkB6D,CAAC;AAE3E,2CAA2C;AAC3C,MAAM,kBAAkB,GAAG,4DAA4D,CAAC;AAExF,+CAA+C;AAC/C,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,qBAAqB;AACrB,SAAS,IAAI,CAAC,KAAe;IAC3B,OAAO,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtG,CAAC;AAED,6BAA6B;AAC7B,SAAS,eAAe,CAAC,GAAqB;IAC5C,OAAO,0BAA0B,GAAG,CAAC,SAAS,MAAM,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;AAClG,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,GAAmB;IACnE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACrE,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IACvC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACxC,KAAK,KAAK,EAAE,CAAC;YACX,MAAM,EAAE,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAClC,MAAM,EAAE,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YACtC,uCAAuC;YACvC,0CAA0C;YAC1C,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC;YAC5D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,CAAC;QAC/E,CAAC;QACD,KAAK,QAAQ,EAAE,CAAC;YACd,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB;YAClE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YACrE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC;YAC9E,yDAAyD;YACzD,0BAA0B;YAC1B,MAAM,UAAU,GAAG,CAAC,IAAY,EAAU,EAAE;gBAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC;gBAC7D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,gBAAgB,EAAE,IAAI,GAAG,gBAAgB,CAAC,CAAC;gBACrF,MAAM,IAAI,GAAG,KAAK;qBACf,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,gBAAgB,GAAG,CAAC,GAAG,CAAC,wBAAwB,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;qBACvL,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,MAAM,GAAG,GAAa,EAAE,CAAC;gBACzB,IAAI,IAAI,GAAG,UAAU;oBAAE,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;gBACjE,IAAI,IAAI,GAAG,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;gBACxD,6CAA6C;gBAC7C,mDAAmD;gBACnD,MAAM,MAAM,GAAG,CAAC,0CAA0C,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrH,OAAO,cAAc,IAAI,IAAI,UAAU,UAAU,QAAQ,CAAC,MAAM,uBAAuB,IAAI,YAAY,MAAM,EAAE,CAAC;YAClH,CAAC,CAAC;YACF,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;gBACvB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC;oBACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,UAAU,EAAE,EAAE,CAAC;gBAC7D,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACzD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAClE,CAAC;YACD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,sCAAsC;YACtE,sCAAsC;YACtC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,gBAAgB,EAAE,CAAC;QAClG,CAAC;QACD,KAAK,MAAM;YACT,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;QACvF,KAAK,QAAQ,EAAE,CAAC;YACd,MAAM,EAAE,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YACtC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,SAAS,GAAG,CAAC,OAAO,aAAa,EAAE,EAAE,aAAa,IAAI,GAAG,CAAC,gBAAgB,EAAE,YAAY,EAAE,EAAE,KAAK,IAAI,MAAM,YAAY,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI;aACjK,CAAC;QACJ,CAAC;QACD,KAAK,IAAI,EAAE,CAAC;YACV,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,IAAI,EAAE,EAAE,CAAC;YACxD,CAAC;YACD,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBAClB,IAAI,CAAC,GAAG,CAAC,OAAO;oBAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;gBACnE,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrE,IAAI,CAAC,MAAM;oBAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,mBAAmB,EAAE,CAAC;gBACvF,MAAM,EAAE,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;gBACtC,kCAAkC;gBAClC,iCAAiC;gBACjC,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE;oBACzB,aAAa,EAAE,MAAM,CAAC,IAAI;oBAC1B,QAAQ,EAAE,EAAE,EAAE,QAAQ,IAAI,EAAE;oBAC5B,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC1C,CAAC,CAAC;gBACH,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBAChD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,IAAI,2BAA2B,EAAE,CAAC;YACzG,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;QAChE,CAAC;QACD,KAAK,OAAO,EAAE,CAAC;YACb,MAAM,EAAE,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,4BAA4B;gBAC5B,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,EAAE,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,MAAM,CAAC;gBAClD,MAAM,MAAM,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC1D,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE,oBAAoB,OAAO,SAAS,MAAM,GAAG;0BAChD,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,qCAAqC,EAAE;0BACtE,mEAAmE;0BACnE,qCAAqC;iBAC1C,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACzC,IAAI,EAAE,EAAE,CAAC;oBACP,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC;oBACrC,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACnC,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC;YAChF,CAAC;YACD,IAAI,EAAE,EAAE,CAAC;gBACP,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,GAAG,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAClG,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,GAAG,gCAAgC,EAAE,CAAC;QACpF,CAAC;QACD,KAAK,eAAe,EAAE,CAAC;YACrB,0DAA0D;YAC1D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,yBAAyB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;QACzH,CAAC;QACD,KAAK,QAAQ,EAAE,CAAC;YACd,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;YAC9D,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,aAAa,GAAG,CAAC,MAAM,CAAC,MAAM,QAAQ,eAAe,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;sBACpF,kDAAkD;aACvD,CAAC;QACJ,CAAC;QACD,KAAK,SAAS,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;YAC9D,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,GAAG,CAAC,OAAO,CAAC,MAAM,QAAQ,eAAe,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QAC1G,CAAC;QACD,KAAK,KAAK,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;YAC9D,yDAAyD;YACzD,sCAAsC;YACtC,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,gBAAgB,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;YACtD,MAAM,OAAO,GAAG,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC;YACvC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG;oBACzC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG;wBAC7B,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI;4BAClC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI;gCAChC,CAAC,CAAC,GAAG,CAAC;gBACR,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/F,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClG,OAAO,KAAK,IAAI,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,MAAM,IAAI,SAAS,GAAG,OAAO,EAAE,CAAC;YACtE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,IAAI;gBACjB,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,QAAQ,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,OAAO,CAAC,MAAM,2BAA2B,MAAM,YAAY,IAAI,EAAE,EAAE,CAAC;QACnH,CAAC;QACD,KAAK,QAAQ,EAAE,CAAC;YACd,8CAA8C;YAC9C,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;YAC/D,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC,IAAI,EAAE;oBAC7D,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,eAAe,EAAE,GAAG,CAAC,eAAe;oBACpC,aAAa,EAAE,GAAG,CAAC,aAAa;oBAChC,IAAI,EAAE,GAAG,CAAC,IAAI;iBACf,CAAC,EAAE,CAAC;QACP,CAAC;QACD,KAAK,gBAAgB,EAAE,CAAC;YACtB,4DAA4D;YAC5D,8CAA8C;YAC9C,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,KAAK,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9J,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;YACrF,KAAK,MAAM,CAAC,IAAI,IAAI;gBAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,iEAAiE,EAAE,CAAC;QACrG,CAAC;QACD,SAAS,CAAC;YACR,oDAAoD;YACpD,0DAA0D;YAC1D,4CAA4C;YAC5C,MAAM,aAAa,GAA2B;gBAC5C,YAAY,EAAE,8CAA8C;gBAC5D,KAAK,EAAE,qCAAqC;gBAC5C,gBAAgB,EAAE,qCAAqC;gBACvD,QAAQ,EAAE,6DAA6D;gBACvE,OAAO,EAAE,iCAAiC;gBAC1C,KAAK,EAAE,iCAAiC;aACzC,CAAC;YACF,IAAI,IAAI,IAAI,aAAa;gBAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YAChG,4CAA4C;YAC5C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5C,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// /model-profile 飞书端厂商档案命令:查看多厂商档案清单 / 切换当前生效档案。
|
|
2
|
+
// 权限分级(与 /plugin 一致):查看对所有成员开放;切换仅 admin(改的是全局认证配置)。
|
|
3
|
+
// 切换内核复用 claude-profile.ts 的 switchProfile(配置页「设为当前」同款),
|
|
4
|
+
// 从盘上现读配置渲染清单——切换后下一条 /model-profile 立即反映真实状态
|
|
5
|
+
import { CONFIG_PATH, loadConfig } from '../config.js';
|
|
6
|
+
import { isProfileActive, switchProfile } from '../claude-profile.js';
|
|
7
|
+
/** 档案行渲染:凭证只显类型不显值(聊天记录可能被转发/检索) */
|
|
8
|
+
function profileRow(line, name, cred, baseUrl, models, active) {
|
|
9
|
+
const desc = [cred, baseUrl, models > 0 ? `候选 ${models} 模型` : null].filter(Boolean).join(' · ');
|
|
10
|
+
return `${line}. ${name}(${desc})${active ? ' ← 当前' : ''}`;
|
|
11
|
+
}
|
|
12
|
+
export function handleModelProfileCommand(args, deps) {
|
|
13
|
+
const name = args.join(' ').trim();
|
|
14
|
+
if (!name) {
|
|
15
|
+
let config;
|
|
16
|
+
try {
|
|
17
|
+
config = loadConfig(deps.configPath);
|
|
18
|
+
}
|
|
19
|
+
catch (e) {
|
|
20
|
+
return `配置加载失败:${e instanceof Error ? e.message : String(e)}`;
|
|
21
|
+
}
|
|
22
|
+
const profiles = config.claude?.profiles ?? [];
|
|
23
|
+
const mode = config.claude?.mode ?? 'inherit';
|
|
24
|
+
if (profiles.length === 0) {
|
|
25
|
+
return '尚无厂商档案。请在配置页「Claude 认证」→「厂商档案」中添加(浏览器打开配置页,managed 模式下可管理多厂商凭证与候选模型)';
|
|
26
|
+
}
|
|
27
|
+
// 当前生效档案浮到第一行(找「现在用的是谁」无须翻列表),其余保持配置原序(sort 稳定)
|
|
28
|
+
const lines = [...profiles]
|
|
29
|
+
.sort((a, b) => Number(isProfileActive(config.claude, b)) - Number(isProfileActive(config.claude, a)))
|
|
30
|
+
.map((p, i) => profileRow(i + 1, p.name, p.authToken ? 'AUTH_TOKEN' : p.apiKey ? 'API_KEY' : '未配凭证', p.baseUrl, p.models?.length ?? 0, isProfileActive(config.claude, p)));
|
|
31
|
+
return [
|
|
32
|
+
`**厂商档案**(认证模式:${mode})`,
|
|
33
|
+
...lines,
|
|
34
|
+
'',
|
|
35
|
+
`切换:/model-profile <名字>(仅管理员)${mode === 'inherit' ? '\n⚠️ 当前 inherit 模式:切换只记录配置,切到 managed 后才生效' : ',下一条任务消息即生效'}`,
|
|
36
|
+
'档案管理:配置页「Claude 认证」;会话级模型切换:/model',
|
|
37
|
+
].join('\n');
|
|
38
|
+
}
|
|
39
|
+
if (!deps.isAdmin) {
|
|
40
|
+
return '⛔ 切换厂商档案仅管理员可用(查看清单可直接 /model-profile)';
|
|
41
|
+
}
|
|
42
|
+
const r = switchProfile(deps.configPath ?? CONFIG_PATH, name);
|
|
43
|
+
return r.ok ? `✅ ${r.message}` : `❌ ${r.error}`;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=model-profile-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-profile-command.js","sourceRoot":"","sources":["../../src/session/model-profile-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,12 +8,16 @@ export interface ChannelState {
|
|
|
8
8
|
workspaceName: string;
|
|
9
9
|
sessions: SessionMeta[];
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
11
|
+
* 当前续接的会话指针,三态(executeTask 据此决定续接/新开):
|
|
12
|
+
* - 字段缺失(undefined)= 旧版存量数据 → 回退 sessions[0](旧语义 sessions[0] 即当前)
|
|
13
|
+
* - 显式 null = 已 /new(或 /ws use 切工作区)→ 下个任务新开会话
|
|
14
|
+
* - 字符串 = 续接指针 → 每任务 resume 它;/resume <n> 指向选中会话;收尾归档恢复为字符串
|
|
15
|
+
* 必须显式存 null 而非 delete:delete 后读回 undefined 与存量数据不可区分,
|
|
16
|
+
* 兼容回退会吞掉 /new 的意图(0.15.x 前 bug:/resume 列表恒为 1 条)。
|
|
13
17
|
* 与历史列表分离是 /new 语义的关键:开新会话 ≠ 清空历史(0.13.x 前清空导致
|
|
14
18
|
* /resume 列表永远只剩一条、重启后看似「丢了」全部历史)。
|
|
15
19
|
*/
|
|
16
|
-
currentSessionId?: string;
|
|
20
|
+
currentSessionId?: string | null;
|
|
17
21
|
/** 通道级模型覆盖(/model 命令设置,跨重启持久;/new 不清除——它是通道偏好而非会话状态)。
|
|
18
22
|
* 缺省/undefined = 跟随 ~/.claude/settings.json 的 model */
|
|
19
23
|
model?: string;
|
|
@@ -36,6 +40,8 @@ export declare class SessionStore {
|
|
|
36
40
|
/**
|
|
37
41
|
* 设置/清除当前续接指针(不动历史列表):
|
|
38
42
|
* /new 传 null(下个任务新开会话,历史保留);/resume <n> 传选中 sessionId。
|
|
43
|
+
* null 显式落盘(JSON 保留 "currentSessionId": null)——读取端以「字段缺失 vs null」
|
|
44
|
+
* 区分存量数据与用户主动 /new,不能 delete(会退化为 undefined,见 ChannelState 注释)。
|
|
39
45
|
* channel 不存在时以 defaultWorkspace 初始化后设置。
|
|
40
46
|
*/
|
|
41
47
|
setCurrentSession(key: string, sessionId: string | null, defaultWorkspace?: string): void;
|
|
@@ -45,14 +45,13 @@ export class SessionStore {
|
|
|
45
45
|
/**
|
|
46
46
|
* 设置/清除当前续接指针(不动历史列表):
|
|
47
47
|
* /new 传 null(下个任务新开会话,历史保留);/resume <n> 传选中 sessionId。
|
|
48
|
+
* null 显式落盘(JSON 保留 "currentSessionId": null)——读取端以「字段缺失 vs null」
|
|
49
|
+
* 区分存量数据与用户主动 /new,不能 delete(会退化为 undefined,见 ChannelState 注释)。
|
|
48
50
|
* channel 不存在时以 defaultWorkspace 初始化后设置。
|
|
49
51
|
*/
|
|
50
52
|
setCurrentSession(key, sessionId, defaultWorkspace = '') {
|
|
51
53
|
const st = this.data[key] ?? { workspaceName: defaultWorkspace, sessions: [] };
|
|
52
|
-
|
|
53
|
-
delete st.currentSessionId;
|
|
54
|
-
else
|
|
55
|
-
st.currentSessionId = sessionId;
|
|
54
|
+
st.currentSessionId = sessionId;
|
|
56
55
|
this.data[key] = st;
|
|
57
56
|
this.save();
|
|
58
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/session/session-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/session/session-store.ts"],"names":[],"mappings":"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"}
|
package/dist/session/triggers.js
CHANGED
|
@@ -25,7 +25,15 @@ export function rewriteByTrigger(text, rules) {
|
|
|
25
25
|
const rule = rules.find((r) => r.match.startsWith('/') && r.match === firstToken);
|
|
26
26
|
if (!rule)
|
|
27
27
|
return null;
|
|
28
|
-
|
|
28
|
+
const rewritten = applyRewrite(rule.rewrite, t, t.slice(firstToken.length).trim());
|
|
29
|
+
// 模板不含任何占位符时用户参数会整个丢失(如 rewrite: '/xx:xxxx' 命中「/xxxx 描述」后描述被吞,
|
|
30
|
+
// 技能侧提示「描述为空」)——斜杠命令透传场景参数必须跟在命令后,这里自动补上。
|
|
31
|
+
// 仅斜杠形态追加:关键词形态的 args=全文,追加等于把匹配消息拼在固定指令后,语义不同
|
|
32
|
+
const args = t.slice(firstToken.length).trim();
|
|
33
|
+
if (args && !rule.rewrite.includes('{text}') && !rule.rewrite.includes('{args}')) {
|
|
34
|
+
return `${rewritten} ${args}`;
|
|
35
|
+
}
|
|
36
|
+
return rewritten;
|
|
29
37
|
}
|
|
30
38
|
const rule = rules.find((r) => !r.match.startsWith('/') && t.includes(r.match));
|
|
31
39
|
if (!rule)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggers.js","sourceRoot":"","sources":["../../src/session/triggers.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,yDAAyD;AACzD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS,qBAAqB,CAAC,CAAC;AAEjE,SAAS,YAAY,CAAC,QAAgB,EAAE,IAAY,EAAE,IAAY;IAChE,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACxE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAgC;IAC7E,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,IAAI,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC;QAClF,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,
|
|
1
|
+
{"version":3,"file":"triggers.js","sourceRoot":"","sources":["../../src/session/triggers.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,yDAAyD;AACzD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS,qBAAqB,CAAC,CAAC;AAEjE,SAAS,YAAY,CAAC,QAAgB,EAAE,IAAY,EAAE,IAAY;IAChE,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACxE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAgC;IAC7E,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,IAAI,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC;QAClF,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACnF,+DAA+D;QAC/D,0CAA0C;QAC1C,+CAA+C;QAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjF,OAAO,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC;QAChC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAChF,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -124,6 +124,14 @@ export interface BridgeConfig {
|
|
|
124
124
|
claude?: ClaudeConfig;
|
|
125
125
|
/** 飞书斜杠命令同步;缺省仅内置命令集 */
|
|
126
126
|
slashCommands?: SlashCommandsConfig;
|
|
127
|
+
/** 会话行为微调;缺省 contextRemindTokens 用 config.ts 的内置默认 */
|
|
128
|
+
session?: SessionConfig;
|
|
129
|
+
}
|
|
130
|
+
/** 会话行为配置(整体可选) */
|
|
131
|
+
export interface SessionConfig {
|
|
132
|
+
/** 上下文超长提醒阈值(tokens,估算口径 = 最后一次 result 的 input+cache 三项之和)。
|
|
133
|
+
* 0 = 关闭提醒;缺省用 DEFAULT_CONTEXT_REMIND_TOKENS(150000) */
|
|
134
|
+
contextRemindTokens?: number;
|
|
127
135
|
}
|
|
128
136
|
export interface IncomingMessage {
|
|
129
137
|
chatId: string;
|
|
@@ -206,9 +214,15 @@ export interface SessionInventory {
|
|
|
206
214
|
version?: string;
|
|
207
215
|
path: string;
|
|
208
216
|
}>;
|
|
217
|
+
/** mcpServers 状态来源有两类:init 快照(仅 name/status)与任务收尾的 mcpServerStatus() 实时拉取
|
|
218
|
+
* (另含 failed 的 error、connected 的 tools 清单)——error/tools 为可选以兼容快照形态 */
|
|
209
219
|
mcpServers: Array<{
|
|
210
220
|
name: string;
|
|
211
221
|
status: string;
|
|
222
|
+
error?: string;
|
|
223
|
+
tools?: Array<{
|
|
224
|
+
name: string;
|
|
225
|
+
}>;
|
|
212
226
|
}>;
|
|
213
227
|
agents: string[];
|
|
214
228
|
/** 以下为 bridge 侧附加信息(非 SDK 字段) */
|
|
@@ -222,4 +236,14 @@ export interface TaskOutcome {
|
|
|
222
236
|
turns: number;
|
|
223
237
|
/** 本任务 init 消息提取的清单(SDK 每 query 只发一次 init;workspace/loadedAt 由 wiring 侧补齐) */
|
|
224
238
|
inventory?: Omit<SessionInventory, 'workspace' | 'loadedAt'>;
|
|
239
|
+
/** 最后一次 result 的主循环用量(snake→camel;SDK 缺字段时兜 0)。
|
|
240
|
+
* inputTokens + cacheCreation + cacheRead ≈ 当前上下文规模,超长提醒的判定口径 */
|
|
241
|
+
usage?: TaskUsage;
|
|
242
|
+
}
|
|
243
|
+
/** result.usage 的 bridge 侧映射(SDK NonNullableUsage 的子集,全 number) */
|
|
244
|
+
export interface TaskUsage {
|
|
245
|
+
inputTokens: number;
|
|
246
|
+
outputTokens: number;
|
|
247
|
+
cacheCreationInputTokens: number;
|
|
248
|
+
cacheReadInputTokens: number;
|
|
225
249
|
}
|
package/dist/web/server.js
CHANGED
|
@@ -8,6 +8,7 @@ import { fileURLToPath } from 'node:url';
|
|
|
8
8
|
import { parseDocument, stringify } from 'yaml';
|
|
9
9
|
import { CONFIG_PATH, SLASH_COMMAND_RE, loadConfig, parseConfigText } from '../config.js';
|
|
10
10
|
import { DEFAULT_CLAUDE_DIR, initManagedClaudeDir, resolveClaudeDir } from '../claude-config.js';
|
|
11
|
+
import { switchProfile } from '../claude-profile.js';
|
|
11
12
|
import { hasClaudeAuth } from '../auth-precheck.js';
|
|
12
13
|
import { defaultPermissionsDoc, defaultServerDoc } from '../config-defaults.js';
|
|
13
14
|
import { VERSION } from '../version.js';
|
|
@@ -288,7 +289,8 @@ async function handle(req, res, ctx) {
|
|
|
288
289
|
return json(res, 502, { error: e instanceof Error ? e.message : String(e) });
|
|
289
290
|
}
|
|
290
291
|
}
|
|
291
|
-
// ----
|
|
292
|
+
// ---- 切换当前生效厂商档案:前端拿不到档案凭证明文(脱敏模型),切换必须由后端完成并即时落盘。
|
|
293
|
+
// 内核在 claude-profile.ts(飞书端 /model-profile 命令复用同一份逻辑),此处仅 HTTP 薄壳 ----
|
|
292
294
|
if (path === '/api/claude/use-profile' && req.method === 'POST') {
|
|
293
295
|
if (firstRun)
|
|
294
296
|
return json(res, 404, { error: '尚无配置文件,请先完成 bootstrap' });
|
|
@@ -296,63 +298,8 @@ async function handle(req, res, ctx) {
|
|
|
296
298
|
const name = String(body.name ?? '').trim();
|
|
297
299
|
if (!name)
|
|
298
300
|
return json(res, 400, { error: '缺少档案名 name' });
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
config = loadConfig(ctx.configPath);
|
|
302
|
-
}
|
|
303
|
-
catch (e) {
|
|
304
|
-
return json(res, 500, { error: `配置加载失败:${e instanceof Error ? e.message : String(e)}` });
|
|
305
|
-
}
|
|
306
|
-
const prof = config.claude?.profiles?.find((p) => p.name === name);
|
|
307
|
-
if (!prof)
|
|
308
|
-
return json(res, 404, { error: `档案 "${name}" 不存在(新增/修改档案后须先保存再切换)` });
|
|
309
|
-
// 可选 model 覆盖(档案候选模型点选切换):须属于该档案 models 候选集或其默认模型,防手滑串档案
|
|
310
|
-
const modelOverride = String(body.model ?? '').trim();
|
|
311
|
-
if (modelOverride) {
|
|
312
|
-
const candidates = new Set([...(prof.models ?? []), ...(prof.model ? [prof.model] : [])]);
|
|
313
|
-
if (!candidates.has(modelOverride)) {
|
|
314
|
-
return json(res, 400, { error: `模型 "${modelOverride}" 不在档案 "${name}" 的候选模型中(${[...candidates].join('、') || '空'})` });
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
// 顶层四字段整体替换为档案值(档案未配置的字段清除,保证切换干净;mode 与 profiles 原样保留)
|
|
318
|
-
const rawText = readFileSync(ctx.configPath, 'utf8');
|
|
319
|
-
const doc = parseDocument(rawText);
|
|
320
|
-
const oldJs = doc.toJS();
|
|
321
|
-
const oldClaude = (oldJs.claude && typeof oldJs.claude === 'object' && !Array.isArray(oldJs.claude) ? oldJs.claude : {});
|
|
322
|
-
const newClaude = { ...oldClaude };
|
|
323
|
-
if (prof.authToken) {
|
|
324
|
-
newClaude.auth_token = prof.authToken;
|
|
325
|
-
delete newClaude.api_key;
|
|
326
|
-
}
|
|
327
|
-
else if (prof.apiKey) {
|
|
328
|
-
newClaude.api_key = prof.apiKey;
|
|
329
|
-
delete newClaude.auth_token;
|
|
330
|
-
}
|
|
331
|
-
else {
|
|
332
|
-
delete newClaude.auth_token;
|
|
333
|
-
delete newClaude.api_key;
|
|
334
|
-
}
|
|
335
|
-
if (prof.baseUrl)
|
|
336
|
-
newClaude.base_url = prof.baseUrl;
|
|
337
|
-
else
|
|
338
|
-
delete newClaude.base_url;
|
|
339
|
-
const effModel = modelOverride || prof.model;
|
|
340
|
-
if (effModel)
|
|
341
|
-
newClaude.model = effModel;
|
|
342
|
-
else
|
|
343
|
-
delete newClaude.model;
|
|
344
|
-
doc.set('claude', newClaude);
|
|
345
|
-
const text = doc.toString();
|
|
346
|
-
let after;
|
|
347
|
-
try {
|
|
348
|
-
after = parseConfigText(text, ctx.configPath);
|
|
349
|
-
}
|
|
350
|
-
catch (e) {
|
|
351
|
-
return json(res, 400, { error: e instanceof Error ? e.message : String(e) });
|
|
352
|
-
}
|
|
353
|
-
writeAtomic(ctx.configPath, text);
|
|
354
|
-
syncManagedClaude(after);
|
|
355
|
-
return json(res, 200, { ok: true, message: `已切换到档案「${name}」${effModel ? `(模型 ${effModel})` : ''}${after.claude?.mode === 'managed' ? ',managed 模式下对后续任务即生效' : ',当前 inherit 模式:顶层值已更新,切到 managed 后生效'}` });
|
|
301
|
+
const r = switchProfile(ctx.configPath, name, String(body.model ?? '').trim() || undefined);
|
|
302
|
+
return r.ok ? json(res, 200, r) : json(res, r.status, { error: r.error });
|
|
356
303
|
}
|
|
357
304
|
if (path === '/api/bootstrap' && req.method === 'POST') {
|
|
358
305
|
if (!firstRun)
|