@gird/ccli 2.17.0 → 2.19.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 +53 -2
- package/dist/agent/ai.js +3 -50
- package/dist/agent/ai.js.map +1 -1
- package/dist/agent/os.js +69 -0
- package/dist/agent/os.js.map +1 -0
- package/dist/agent/providers/anthropic.js +56 -5
- package/dist/agent/providers/anthropic.js.map +1 -1
- package/dist/agent/providers/gemini.js +10 -93
- package/dist/agent/providers/gemini.js.map +1 -1
- package/dist/agent/providers/openai.js +9 -1
- package/dist/agent/providers/openai.js.map +1 -1
- package/dist/agent/tool-projection.js +57 -0
- package/dist/agent/tool-projection.js.map +1 -0
- package/dist/cli/args/index.js +40 -0
- package/dist/cli/args/index.js.map +1 -1
- package/dist/cli/clipboard-image.js +51 -0
- package/dist/cli/clipboard-image.js.map +1 -0
- package/dist/cli/image-compress.js +62 -0
- package/dist/cli/image-compress.js.map +1 -0
- package/dist/cli/image-reference.js +190 -0
- package/dist/cli/image-reference.js.map +1 -0
- package/dist/cli/repl/index.js +52 -3
- package/dist/cli/repl/index.js.map +1 -1
- package/dist/cli/run/index.js +75 -12
- package/dist/cli/run/index.js.map +1 -1
- package/dist/cli/run/task.js +37 -0
- package/dist/cli/run/task.js.map +1 -1
- package/dist/cli/session/checkpoint.js +5 -4
- package/dist/cli/session/checkpoint.js.map +1 -1
- package/dist/cli/slash/config/model.js +30 -9
- package/dist/cli/slash/config/model.js.map +1 -1
- package/dist/cli/slash/index.js +14 -0
- package/dist/cli/slash/index.js.map +1 -1
- package/dist/cli/slash/session/replay.js +118 -0
- package/dist/cli/slash/session/replay.js.map +1 -0
- package/dist/cli/slash/system/agent.js +1 -0
- package/dist/cli/slash/system/agent.js.map +1 -1
- package/dist/cli/slash/system/goal.js +1 -0
- package/dist/cli/slash/system/goal.js.map +1 -1
- package/dist/cli/slash/system/help.js +1 -0
- package/dist/cli/slash/system/help.js.map +1 -1
- package/dist/cli/slash/system/plan.js +3 -0
- package/dist/cli/slash/system/plan.js.map +1 -1
- package/dist/config/config.js +32 -1
- package/dist/config/config.js.map +1 -1
- package/dist/config/plugins.js +378 -0
- package/dist/config/plugins.js.map +1 -0
- package/dist/config/skills.js +39 -2
- package/dist/config/skills.js.map +1 -1
- package/dist/harness/index.js +29 -1
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/records.js +98 -0
- package/dist/harness/records.js.map +1 -0
- package/dist/index.js +77 -2
- package/dist/index.js.map +1 -1
- package/dist/server/index.js +338 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/sessions.js +181 -0
- package/dist/server/sessions.js.map +1 -0
- package/dist/server/webui.html +1341 -0
- package/dist/server/webui.js +12 -0
- package/dist/server/webui.js.map +1 -0
- package/dist/tools/bash-background.js +5 -6
- package/dist/tools/bash-background.js.map +1 -1
- package/dist/tools/bash.js +6 -7
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/edit-file.js +10 -4
- package/dist/tools/edit-file.js.map +1 -1
- package/dist/tools/glob.js +40 -6
- package/dist/tools/glob.js.map +1 -1
- package/dist/tools/grep.js +48 -8
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/list-dir.js +13 -2
- package/dist/tools/list-dir.js.map +1 -1
- package/dist/tools/read-file.js +4 -2
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/shared.js.map +1 -1
- package/dist/tools/write-file.js +11 -4
- package/dist/tools/write-file.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 插件包(Plugins)—— 比单个 skill / MCP / hook 更大的**分发单元**。
|
|
3
|
+
*
|
|
4
|
+
* 一个插件就是一个目录,里面放一个 `plugin.json` 清单,把团队要用的
|
|
5
|
+
* 技能(skills)、MCP server、生命周期钩子(hooks)打包在一起。放进插件目录、
|
|
6
|
+
* 启用后,这些能力就一次性合并进当前会话——新人不用再手动拷 skills / 抄配置。
|
|
7
|
+
*
|
|
8
|
+
* 两个来源,同名时项目覆盖用户:
|
|
9
|
+
* 用户插件 ~/.ccli/plugins/<名>/plugin.json
|
|
10
|
+
* 项目插件 <cwd>/.ccli/plugins/<名>/plugin.json
|
|
11
|
+
*
|
|
12
|
+
* 贡献如何生效:
|
|
13
|
+
* - skills:清单里的相对路径(文件或目录)→ 由 loadSkills 以 'plugin' 来源装载
|
|
14
|
+
* (优先级:共享 < 插件 < 用户 < 项目)。
|
|
15
|
+
* - mcpServers / hooks:由 loadConfig 折叠进最终配置
|
|
16
|
+
* (mcpServers 会被显式配置覆盖;hooks 排在配置钩子之前)。
|
|
17
|
+
*
|
|
18
|
+
* 本步只做「发现 + 读取 + 聚合贡献 + 列表」。安装器 / 启停命令留作后续步;
|
|
19
|
+
* 现在停用一个插件,把它 plugin.json 里的 "enabled" 设为 false 即可。
|
|
20
|
+
*/
|
|
21
|
+
import { cpSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync, } from 'node:fs';
|
|
22
|
+
import { homedir } from 'node:os';
|
|
23
|
+
import { isAbsolute, join, relative, resolve } from 'node:path';
|
|
24
|
+
import { HOOK_EVENTS } from './config.js';
|
|
25
|
+
const PLUGINS_REL = join('.ccli', 'plugins');
|
|
26
|
+
/** 安全读取目录:不存在 / 无权限一律按空处理。 */
|
|
27
|
+
function safeReaddir(dir) {
|
|
28
|
+
try {
|
|
29
|
+
return readdirSync(dir);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function isDir(p) {
|
|
36
|
+
try {
|
|
37
|
+
return statSync(p).isDirectory();
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function isFile(p) {
|
|
44
|
+
try {
|
|
45
|
+
return statSync(p).isFile();
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/** target 是否落在 dir 之内(含 dir 自身),用于拦截 `../` 越界路径。 */
|
|
52
|
+
function within(dir, target) {
|
|
53
|
+
const rel = relative(dir, target);
|
|
54
|
+
return rel === '' || (!rel.startsWith('..') && !isAbsolute(rel));
|
|
55
|
+
}
|
|
56
|
+
/** 从任意值中挑出合法钩子(与 config.ts 的规则一致,插件不应绕过校验)。 */
|
|
57
|
+
function pickHooks(raw, errors) {
|
|
58
|
+
if (raw === undefined)
|
|
59
|
+
return [];
|
|
60
|
+
if (!Array.isArray(raw)) {
|
|
61
|
+
errors.push('hooks 应为数组,已忽略');
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
const out = [];
|
|
65
|
+
for (const item of raw) {
|
|
66
|
+
if (!item || typeof item !== 'object')
|
|
67
|
+
continue;
|
|
68
|
+
if (!HOOK_EVENTS.includes(item.event)) {
|
|
69
|
+
errors.push(`hooks 含未知事件 ${String(item.event)},已忽略该条`);
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (typeof item.command !== 'string' || item.command.length === 0) {
|
|
73
|
+
errors.push('hooks 含空 command,已忽略该条');
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
const def = { event: item.event, command: item.command };
|
|
77
|
+
if (typeof item.matcher === 'string' && item.matcher.length > 0) {
|
|
78
|
+
def.matcher = item.matcher;
|
|
79
|
+
}
|
|
80
|
+
if (typeof item.timeout === 'number' &&
|
|
81
|
+
Number.isFinite(item.timeout) &&
|
|
82
|
+
item.timeout > 0) {
|
|
83
|
+
def.timeout = item.timeout;
|
|
84
|
+
}
|
|
85
|
+
out.push(def);
|
|
86
|
+
}
|
|
87
|
+
return out;
|
|
88
|
+
}
|
|
89
|
+
/** 校验 mcpServers:仅保留 value 为对象的条目。 */
|
|
90
|
+
function pickMcpServers(raw, errors) {
|
|
91
|
+
if (raw === undefined)
|
|
92
|
+
return {};
|
|
93
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
94
|
+
errors.push('mcpServers 应为对象,已忽略');
|
|
95
|
+
return {};
|
|
96
|
+
}
|
|
97
|
+
const out = {};
|
|
98
|
+
for (const [name, cfg] of Object.entries(raw)) {
|
|
99
|
+
if (cfg && typeof cfg === 'object' && !Array.isArray(cfg)) {
|
|
100
|
+
out[name] = cfg;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
errors.push(`mcpServers.${name} 非对象,已忽略`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return out;
|
|
107
|
+
}
|
|
108
|
+
/** 解析 skills 声明为存在且未越界的绝对路径。 */
|
|
109
|
+
function resolveSkillPaths(raw, dir, errors) {
|
|
110
|
+
if (raw === undefined)
|
|
111
|
+
return [];
|
|
112
|
+
if (!Array.isArray(raw)) {
|
|
113
|
+
errors.push('skills 应为字符串数组,已忽略');
|
|
114
|
+
return [];
|
|
115
|
+
}
|
|
116
|
+
const out = [];
|
|
117
|
+
for (const entry of raw) {
|
|
118
|
+
if (typeof entry !== 'string' || entry.trim() === '')
|
|
119
|
+
continue;
|
|
120
|
+
const abs = resolve(dir, entry);
|
|
121
|
+
if (!within(dir, abs)) {
|
|
122
|
+
errors.push(`skills 路径越出插件目录,已忽略:${entry}`);
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
if (!isFile(abs) && !isDir(abs)) {
|
|
126
|
+
errors.push(`skills 路径不存在,已忽略:${entry}`);
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
out.push(abs);
|
|
130
|
+
}
|
|
131
|
+
return out;
|
|
132
|
+
}
|
|
133
|
+
/** 读取并解析单个插件目录;清单缺失或严重非法返回 null。 */
|
|
134
|
+
function loadOne(dir, source) {
|
|
135
|
+
const manifestPath = join(dir, 'plugin.json');
|
|
136
|
+
if (!isFile(manifestPath))
|
|
137
|
+
return null;
|
|
138
|
+
const errors = [];
|
|
139
|
+
let manifest;
|
|
140
|
+
try {
|
|
141
|
+
manifest = JSON.parse(readFileSync(manifestPath, 'utf8'));
|
|
142
|
+
}
|
|
143
|
+
catch (e) {
|
|
144
|
+
return {
|
|
145
|
+
name: baseName(dir),
|
|
146
|
+
version: '',
|
|
147
|
+
description: '',
|
|
148
|
+
enabled: false,
|
|
149
|
+
source,
|
|
150
|
+
dir,
|
|
151
|
+
manifestPath,
|
|
152
|
+
skillPaths: [],
|
|
153
|
+
mcpServers: {},
|
|
154
|
+
hooks: [],
|
|
155
|
+
errors: [`plugin.json 解析失败:${e?.message ?? String(e)}`],
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
const name = typeof manifest.name === 'string' && manifest.name.trim()
|
|
159
|
+
? manifest.name.trim()
|
|
160
|
+
: baseName(dir);
|
|
161
|
+
if (!manifest.name || typeof manifest.name !== 'string') {
|
|
162
|
+
errors.push('plugin.json 缺少 name,已回退用目录名');
|
|
163
|
+
}
|
|
164
|
+
const enabled = manifest.enabled !== false; // 缺省启用
|
|
165
|
+
return {
|
|
166
|
+
name,
|
|
167
|
+
version: typeof manifest.version === 'string' ? manifest.version : '',
|
|
168
|
+
description: typeof manifest.description === 'string'
|
|
169
|
+
? manifest.description
|
|
170
|
+
: '',
|
|
171
|
+
enabled,
|
|
172
|
+
source,
|
|
173
|
+
dir,
|
|
174
|
+
manifestPath,
|
|
175
|
+
skillPaths: resolveSkillPaths(manifest.skills, dir, errors),
|
|
176
|
+
mcpServers: pickMcpServers(manifest.mcpServers, errors),
|
|
177
|
+
hooks: pickHooks(manifest.hooks, errors),
|
|
178
|
+
errors,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
/** 跨平台提取路径最后一段。 */
|
|
182
|
+
function baseName(p) {
|
|
183
|
+
const parts = p.split(/[/\\]/).filter(Boolean);
|
|
184
|
+
return parts[parts.length - 1] ?? p;
|
|
185
|
+
}
|
|
186
|
+
/** 扫描一个 plugins 根目录下的所有插件子目录。 */
|
|
187
|
+
function loadFromRoot(root, source) {
|
|
188
|
+
const out = [];
|
|
189
|
+
for (const entry of safeReaddir(root)) {
|
|
190
|
+
const dir = join(root, entry);
|
|
191
|
+
if (!isDir(dir))
|
|
192
|
+
continue;
|
|
193
|
+
const p = loadOne(dir, source);
|
|
194
|
+
if (p)
|
|
195
|
+
out.push(p);
|
|
196
|
+
}
|
|
197
|
+
return out;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* 装载全部插件:用户 → 项目(同名时项目覆盖用户)。
|
|
201
|
+
* homeDir 仅供测试注入,默认取真实家目录。
|
|
202
|
+
*/
|
|
203
|
+
export function loadPlugins(cwd = process.cwd(), homeDir = homedir()) {
|
|
204
|
+
const user = loadFromRoot(join(homeDir, PLUGINS_REL), 'user');
|
|
205
|
+
const project = loadFromRoot(join(cwd, PLUGINS_REL), 'project');
|
|
206
|
+
const byName = new Map();
|
|
207
|
+
for (const p of user)
|
|
208
|
+
byName.set(p.name.toLowerCase(), p);
|
|
209
|
+
for (const p of project)
|
|
210
|
+
byName.set(p.name.toLowerCase(), p); // 项目覆盖用户
|
|
211
|
+
return [...byName.values()].sort((a, b) => a.name.localeCompare(b.name));
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* 聚合已启用插件的 mcpServers 与 hooks,供 loadConfig 折叠进最终配置。
|
|
215
|
+
* 迭代顺序保证项目插件的 mcpServer 覆盖同名的用户插件(因已排序 + Object.assign)。
|
|
216
|
+
*/
|
|
217
|
+
export function pluginContributions(plugins) {
|
|
218
|
+
const mcpServers = {};
|
|
219
|
+
const hooks = [];
|
|
220
|
+
for (const p of plugins) {
|
|
221
|
+
if (!p.enabled)
|
|
222
|
+
continue;
|
|
223
|
+
Object.assign(mcpServers, p.mcpServers);
|
|
224
|
+
hooks.push(...p.hooks);
|
|
225
|
+
}
|
|
226
|
+
return { mcpServers, hooks };
|
|
227
|
+
}
|
|
228
|
+
/** 插件名是否安全(能直接当目录名,不含分隔符 / 上跳)。 */
|
|
229
|
+
function isSafePluginName(name) {
|
|
230
|
+
return name.length > 0 && !/[/\\]/.test(name) && name !== '.' && name !== '..';
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* 安装插件:把一个插件目录拷进 `~/.ccli/plugins/<名>/`(或项目级)。
|
|
234
|
+
* 已存在同名则覆盖(升级语义)。纯文件操作,不校验清单里的具体贡献。
|
|
235
|
+
*/
|
|
236
|
+
export function installPlugin(src, opts = {}) {
|
|
237
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
238
|
+
const homeDir = opts.homeDir ?? homedir();
|
|
239
|
+
const srcDir = resolve(cwd, src);
|
|
240
|
+
if (!isDir(srcDir)) {
|
|
241
|
+
return { ok: false, message: `源不是目录:${src}` };
|
|
242
|
+
}
|
|
243
|
+
const manifestPath = join(srcDir, 'plugin.json');
|
|
244
|
+
if (!isFile(manifestPath)) {
|
|
245
|
+
return { ok: false, message: `源目录缺少 plugin.json:${src}` };
|
|
246
|
+
}
|
|
247
|
+
let manifest;
|
|
248
|
+
try {
|
|
249
|
+
manifest = JSON.parse(readFileSync(manifestPath, 'utf8'));
|
|
250
|
+
}
|
|
251
|
+
catch (e) {
|
|
252
|
+
return {
|
|
253
|
+
ok: false,
|
|
254
|
+
message: `plugin.json 解析失败:${e?.message ?? String(e)}`,
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
const name = typeof manifest.name === 'string' && manifest.name.trim()
|
|
258
|
+
? manifest.name.trim()
|
|
259
|
+
: baseName(srcDir);
|
|
260
|
+
if (!isSafePluginName(name)) {
|
|
261
|
+
return { ok: false, message: `插件名不合法:${name}` };
|
|
262
|
+
}
|
|
263
|
+
const root = opts.project
|
|
264
|
+
? join(cwd, PLUGINS_REL)
|
|
265
|
+
: join(homeDir, PLUGINS_REL);
|
|
266
|
+
const dest = join(root, name);
|
|
267
|
+
// 防止自我吞噬:源与目标重叠时拒绝(否则先 rm 会删掉源)
|
|
268
|
+
if (within(dest, srcDir) || within(srcDir, dest)) {
|
|
269
|
+
return { ok: false, message: `源与安装目标重叠,已取消:${dest}` };
|
|
270
|
+
}
|
|
271
|
+
const existed = isDir(dest);
|
|
272
|
+
try {
|
|
273
|
+
rmSync(dest, { recursive: true, force: true });
|
|
274
|
+
mkdirSync(root, { recursive: true });
|
|
275
|
+
cpSync(srcDir, dest, { recursive: true });
|
|
276
|
+
}
|
|
277
|
+
catch (e) {
|
|
278
|
+
return { ok: false, message: `安装失败:${e?.message ?? String(e)}` };
|
|
279
|
+
}
|
|
280
|
+
return {
|
|
281
|
+
ok: true,
|
|
282
|
+
name,
|
|
283
|
+
dest,
|
|
284
|
+
message: `${existed ? '已更新(覆盖旧版本)' : '已安装'} ${name} → ${dest}`,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* 卸载插件:删除其目录。定位到生效的那个(同名时项目优先),删掉整个目录。
|
|
289
|
+
* 若同名还被更低优先级的目录遮蔽(如删了项目级、用户级仍在),提示可再次卸载。
|
|
290
|
+
*/
|
|
291
|
+
export function uninstallPlugin(name, opts = {}) {
|
|
292
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
293
|
+
const homeDir = opts.homeDir ?? homedir();
|
|
294
|
+
const target = loadPlugins(cwd, homeDir).find((p) => p.name.toLowerCase() === name.toLowerCase());
|
|
295
|
+
if (!target) {
|
|
296
|
+
return { ok: false, message: `未找到插件:${name}` };
|
|
297
|
+
}
|
|
298
|
+
try {
|
|
299
|
+
rmSync(target.dir, { recursive: true, force: true });
|
|
300
|
+
}
|
|
301
|
+
catch (e) {
|
|
302
|
+
return { ok: false, message: `卸载失败:${e?.message ?? String(e)}` };
|
|
303
|
+
}
|
|
304
|
+
// 删除后再看是否还有同名(更低优先级)残留,如实告知
|
|
305
|
+
const shadow = loadPlugins(cwd, homeDir).find((p) => p.name.toLowerCase() === name.toLowerCase());
|
|
306
|
+
const tail = shadow
|
|
307
|
+
? `;仍存在同名的${shadow.source === 'user' ? '用户' : '项目'}级插件,可再次卸载`
|
|
308
|
+
: '';
|
|
309
|
+
return {
|
|
310
|
+
ok: true,
|
|
311
|
+
message: `已卸载插件 ${target.name}(${target.dir})${tail}`,
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* 启用 / 停用一个已安装插件:改写其 plugin.json 的 `enabled` 字段。
|
|
316
|
+
* 同名同时存在于用户与项目时,作用于生效的那个(项目优先)。
|
|
317
|
+
*/
|
|
318
|
+
export function setPluginEnabled(name, enabled, opts = {}) {
|
|
319
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
320
|
+
const homeDir = opts.homeDir ?? homedir();
|
|
321
|
+
const target = loadPlugins(cwd, homeDir).find((p) => p.name.toLowerCase() === name.toLowerCase());
|
|
322
|
+
if (!target) {
|
|
323
|
+
return { ok: false, message: `未找到插件:${name}` };
|
|
324
|
+
}
|
|
325
|
+
if (target.enabled === enabled) {
|
|
326
|
+
return {
|
|
327
|
+
ok: true,
|
|
328
|
+
message: `插件 ${target.name} 已是${enabled ? '启用' : '停用'}状态`,
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
let manifest;
|
|
332
|
+
try {
|
|
333
|
+
manifest = JSON.parse(readFileSync(target.manifestPath, 'utf8'));
|
|
334
|
+
}
|
|
335
|
+
catch (e) {
|
|
336
|
+
return {
|
|
337
|
+
ok: false,
|
|
338
|
+
message: `plugin.json 解析失败:${e?.message ?? String(e)}`,
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
manifest.enabled = enabled;
|
|
342
|
+
try {
|
|
343
|
+
writeFileSync(target.manifestPath, JSON.stringify(manifest, null, 2) + '\n', 'utf8');
|
|
344
|
+
}
|
|
345
|
+
catch (e) {
|
|
346
|
+
return { ok: false, message: `写入失败:${e?.message ?? String(e)}` };
|
|
347
|
+
}
|
|
348
|
+
return {
|
|
349
|
+
ok: true,
|
|
350
|
+
message: `已${enabled ? '启用' : '停用'}插件 ${target.name}`,
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* `ccli plugin [list]` 诊断命令:列出发现的插件、来源、启停与贡献数量。
|
|
355
|
+
* @returns 进程退出码(恒 0,纯展示)
|
|
356
|
+
*/
|
|
357
|
+
export function printPlugins(cwd = process.cwd()) {
|
|
358
|
+
const plugins = loadPlugins(cwd);
|
|
359
|
+
if (plugins.length === 0) {
|
|
360
|
+
console.log('没有已安装的插件。在 ~/.ccli/plugins/<名>/ 或 <项目>/.ccli/plugins/<名>/ ' +
|
|
361
|
+
'放置 plugin.json 即可定义。');
|
|
362
|
+
return 0;
|
|
363
|
+
}
|
|
364
|
+
const TAG = { user: '用户', project: '项目' };
|
|
365
|
+
console.log('已安装插件:');
|
|
366
|
+
for (const p of plugins) {
|
|
367
|
+
const state = p.enabled ? '启用' : '停用';
|
|
368
|
+
const ver = p.version ? `@${p.version}` : '';
|
|
369
|
+
const desc = p.description ? ` — ${p.description}` : '';
|
|
370
|
+
console.log(` ${p.name}${ver} [${TAG[p.source]}·${state}]${desc}`);
|
|
371
|
+
console.log(` 技能 ${p.skillPaths.length} · MCP ${Object.keys(p.mcpServers).length} · 钩子 ${p.hooks.length}`);
|
|
372
|
+
for (const err of p.errors) {
|
|
373
|
+
console.log(` ⚠ ${err}`);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
return 0;
|
|
377
|
+
}
|
|
378
|
+
//# sourceMappingURL=plugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/config/plugins.ts"],"names":[],"mappings":"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"}
|
package/dist/config/skills.js
CHANGED
|
@@ -15,8 +15,9 @@
|
|
|
15
15
|
* 正文里的 `$ARGUMENTS` 会被调用参数替换;没有该占位符时参数追加到末尾。
|
|
16
16
|
*/
|
|
17
17
|
import { readdirSync, readFileSync, statSync } from 'node:fs';
|
|
18
|
-
import { join, relative } from 'node:path';
|
|
18
|
+
import { dirname, join, relative } from 'node:path';
|
|
19
19
|
import { homedir } from 'node:os';
|
|
20
|
+
import { loadPlugins } from './plugins.js';
|
|
20
21
|
/**
|
|
21
22
|
* 共享技能目录(agent 通用约定,Claude / Kimi 等也扫这里)。
|
|
22
23
|
* 让 CCLI 复用生态里已装好的技能,如 baoyu-url-to-markdown(浏览器抓网页转 markdown)。
|
|
@@ -199,17 +200,52 @@ function loadFromRoot(root, source) {
|
|
|
199
200
|
*/
|
|
200
201
|
export function loadSkills(cwd = process.cwd(), homeDir = homedir()) {
|
|
201
202
|
const shared = SHARED_SKILLS_DIRS.flatMap((rel) => loadFromRoot(join(homeDir, rel), 'shared'));
|
|
203
|
+
// 插件包声明的技能(plugin.json 的 skills 字段),优先级介于共享与用户之间
|
|
204
|
+
const plugin = loadPlugins(cwd, homeDir)
|
|
205
|
+
.filter((p) => p.enabled)
|
|
206
|
+
.flatMap((p) => p.skillPaths.flatMap((path) => loadSkillsFromPath(path, 'plugin')));
|
|
202
207
|
const user = loadFromRoot(join(homeDir, '.ccli', 'skills'), 'user');
|
|
203
208
|
const project = loadFromRoot(join(cwd, '.ccli', 'skills'), 'project');
|
|
204
209
|
const byName = new Map();
|
|
205
210
|
for (const s of shared)
|
|
206
211
|
byName.set(s.name.toLowerCase(), s);
|
|
212
|
+
for (const s of plugin)
|
|
213
|
+
byName.set(s.name.toLowerCase(), s); // 插件覆盖共享
|
|
207
214
|
for (const s of user)
|
|
208
|
-
byName.set(s.name.toLowerCase(), s); //
|
|
215
|
+
byName.set(s.name.toLowerCase(), s); // 用户覆盖插件
|
|
209
216
|
for (const s of project)
|
|
210
217
|
byName.set(s.name.toLowerCase(), s); // 项目覆盖用户
|
|
211
218
|
return [...byName.values()].sort((a, b) => a.name.localeCompare(b.name));
|
|
212
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* 从一个具体路径装载技能——供插件包按 plugin.json 里声明的 skills 路径引入。
|
|
222
|
+
* - 目录含 SKILL.md → 作为技能包(含其嵌套子技能)
|
|
223
|
+
* - 目录不含 SKILL.md → 当作 skills 根目录扫描(顶层 .md + 子技能包)
|
|
224
|
+
* - .md 文件 → 一个扁平技能
|
|
225
|
+
* 路径不存在或无有效技能时返回空数组。
|
|
226
|
+
*/
|
|
227
|
+
export function loadSkillsFromPath(path, source) {
|
|
228
|
+
if (isDir(path)) {
|
|
229
|
+
if (isFile(join(path, 'SKILL.md'))) {
|
|
230
|
+
const out = [];
|
|
231
|
+
walkBundles(path, source, 1, out, false);
|
|
232
|
+
return out;
|
|
233
|
+
}
|
|
234
|
+
return loadFromRoot(path, source);
|
|
235
|
+
}
|
|
236
|
+
if (isFile(path) && path.endsWith('.md')) {
|
|
237
|
+
let raw = '';
|
|
238
|
+
try {
|
|
239
|
+
raw = readFileSync(path, 'utf8');
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
return [];
|
|
243
|
+
}
|
|
244
|
+
const s = makeSkill(raw, baseName(path).slice(0, -'.md'.length), source, dirname(path), false, [], false, path);
|
|
245
|
+
return s ? [s] : [];
|
|
246
|
+
}
|
|
247
|
+
return [];
|
|
248
|
+
}
|
|
213
249
|
/** 按名字取技能(大小写不敏感)。 */
|
|
214
250
|
export function getSkill(skills, name) {
|
|
215
251
|
const key = name.toLowerCase();
|
|
@@ -266,6 +302,7 @@ export function formatSkillList(skills) {
|
|
|
266
302
|
project: '项目',
|
|
267
303
|
user: '用户',
|
|
268
304
|
shared: '共享',
|
|
305
|
+
plugin: '插件',
|
|
269
306
|
};
|
|
270
307
|
for (const s of skills) {
|
|
271
308
|
const tag = SOURCE_TAG[s.origin.source];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/config/skills.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/config/skills.ts"],"names":[],"mappings":"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"}
|
package/dist/harness/index.js
CHANGED
|
@@ -10,6 +10,7 @@ import { homedir } from 'node:os';
|
|
|
10
10
|
import { NAME, VERSION } from '../version.js';
|
|
11
11
|
import { createAIClient, } from '../agent/ai.js';
|
|
12
12
|
import { McpClientManager } from '../agent/mcp.js';
|
|
13
|
+
import { LocalOS } from '../agent/os.js';
|
|
13
14
|
import { DEFAULT_SYSTEM_PROMPT, getRolePrompt, loadConfig, resolveMaxStepsPerTurn, } from '../config/config.js';
|
|
14
15
|
import { loadEnvFile } from '../config/env.js';
|
|
15
16
|
import { appendMemories, loadMemories } from '../config/memory.js';
|
|
@@ -19,6 +20,7 @@ import { registerMcpTools, registerTool, resetTools, } from '../tools/index.js';
|
|
|
19
20
|
import { runAgentTurn, runOnce as runOnceTurn, } from '../cli/run/index.js';
|
|
20
21
|
import { runHooks, runUserPromptHooks, } from '../cli/run/hooks.js';
|
|
21
22
|
import { defaultName } from '../cli/session/index.js';
|
|
23
|
+
import { defaultRecordsDir, pruneRecordsDir, RecordsWriter, } from './records.js';
|
|
22
24
|
export class CcliHarness {
|
|
23
25
|
/** Harness 绑定的工作目录;配置、记忆、技能、MCP 环境变量都以它为基准解析。 */
|
|
24
26
|
cwd;
|
|
@@ -36,8 +38,12 @@ export class CcliHarness {
|
|
|
36
38
|
memories;
|
|
37
39
|
/** 当前 MCP manager;没有 MCP 配置时为 null,退出时由 `close()` 统一清理。 */
|
|
38
40
|
mcpManager;
|
|
39
|
-
/** 当前会话 ID
|
|
41
|
+
/** 当前会话 ID(用于快照备份与 records 文件命名)。 */
|
|
40
42
|
sessionId;
|
|
43
|
+
/** 会话事件记录目录。 */
|
|
44
|
+
recordsDir;
|
|
45
|
+
/** 执行抽象层。 */
|
|
46
|
+
os;
|
|
41
47
|
/** 解析并获取当前应生效的快照备份基准目录。 */
|
|
42
48
|
get checkpointsDir() {
|
|
43
49
|
const mode = this.config.checkpoint?.mode ?? 'local';
|
|
@@ -68,6 +74,16 @@ export class CcliHarness {
|
|
|
68
74
|
this.mcpManager = options.mcpManager;
|
|
69
75
|
this.mcpErrors = options.mcpErrors;
|
|
70
76
|
this.sessionId = options.sessionId ?? 'test-session';
|
|
77
|
+
this.recordsDir = options.recordsDir ?? defaultRecordsDir();
|
|
78
|
+
this.os = options.os ?? new LocalOS();
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* 记录一条会话事件到 records(~/.ccli/records/<sessionId>.jsonl)。
|
|
82
|
+
* 每次调用按当前 sessionId 现取 writer(sessionId 可能被 /session 换掉);
|
|
83
|
+
* 写入失败在 RecordsWriter 内部静默,绝不打断会话。
|
|
84
|
+
*/
|
|
85
|
+
recordEvent(event) {
|
|
86
|
+
new RecordsWriter(this.recordsDir, this.sessionId).write(event);
|
|
71
87
|
}
|
|
72
88
|
/**
|
|
73
89
|
* 返回当前应生效的 hooks。
|
|
@@ -144,8 +160,10 @@ export class CcliHarness {
|
|
|
144
160
|
checkpointsDir: this.checkpointsDir,
|
|
145
161
|
ai: this.ai,
|
|
146
162
|
cwd: this.cwd,
|
|
163
|
+
os: this.os,
|
|
147
164
|
configMaxSteps: options.configMaxSteps ?? this.maxStepsPerTurn(),
|
|
148
165
|
hooks: options.hooks ?? this.hooks,
|
|
166
|
+
record: options.record ?? ((e) => this.recordEvent(e)),
|
|
149
167
|
});
|
|
150
168
|
}
|
|
151
169
|
/**
|
|
@@ -190,6 +208,7 @@ export class CcliHarness {
|
|
|
190
208
|
systemPrompt: options.systemPrompt ?? this.buildSystemPrompt(),
|
|
191
209
|
configMaxSteps: this.maxStepsPerTurn(),
|
|
192
210
|
hooks: this.hooks,
|
|
211
|
+
record: (e) => this.recordEvent(e),
|
|
193
212
|
});
|
|
194
213
|
}
|
|
195
214
|
/**
|
|
@@ -294,6 +313,13 @@ export async function createCcliHarness(options = {}) {
|
|
|
294
313
|
const skillTool = makeSkillTool(skills);
|
|
295
314
|
if (skillTool)
|
|
296
315
|
registerTool(skillTool);
|
|
316
|
+
// records 轮转清理:每次启动删一次过期/超量文件,失败静默(不挡启动)
|
|
317
|
+
try {
|
|
318
|
+
pruneRecordsDir(options.recordsDir ?? defaultRecordsDir());
|
|
319
|
+
}
|
|
320
|
+
catch {
|
|
321
|
+
// 清理失败不影响启动
|
|
322
|
+
}
|
|
297
323
|
return {
|
|
298
324
|
ok: true,
|
|
299
325
|
harness: new CcliHarness({
|
|
@@ -306,6 +332,8 @@ export async function createCcliHarness(options = {}) {
|
|
|
306
332
|
mcpManager,
|
|
307
333
|
mcpErrors,
|
|
308
334
|
sessionId: defaultName(),
|
|
335
|
+
recordsDir: options.recordsDir,
|
|
336
|
+
os: options.os,
|
|
309
337
|
}),
|
|
310
338
|
};
|
|
311
339
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACH,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"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"}
|