@gird/ccli 2.17.0 → 2.18.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 +2 -0
- package/dist/agent/ai.js +3 -50
- package/dist/agent/ai.js.map +1 -1
- 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 +4 -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 +51 -3
- package/dist/cli/repl/index.js.map +1 -1
- package/dist/cli/run/index.js +72 -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/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 +11 -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 +23 -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 +55 -2
- package/dist/index.js.map +1 -1
- package/dist/tools/shared.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 会话事件记录(records)。
|
|
3
|
+
*
|
|
4
|
+
* 把每个回合的结构化事件以「一行一个 JSON」追加到
|
|
5
|
+
* `~/.ccli/records/<sessionId>.jsonl`,面向复盘执行过程:
|
|
6
|
+
* 用户在什么时候说了什么、模型每轮回答了什么、调了哪些工具、
|
|
7
|
+
* 工具返回了什么、回合怎么结束的。
|
|
8
|
+
*
|
|
9
|
+
* 与 ~/.ccli/sessions/*.json(对话快照,供 /save、/load)互补:
|
|
10
|
+
* 快照用于恢复对话,records 用于还原「执行过程」(带时间戳与单轮边界)。
|
|
11
|
+
*
|
|
12
|
+
* 底线:记录是旁观者——任何写入失败都静默吞掉,绝不能打断会话。
|
|
13
|
+
*/
|
|
14
|
+
import { appendFileSync, existsSync, mkdirSync, readdirSync, statSync, unlinkSync, } from 'node:fs';
|
|
15
|
+
import { homedir } from 'node:os';
|
|
16
|
+
import { join } from 'node:path';
|
|
17
|
+
/** 默认记录目录:~/.ccli/records。 */
|
|
18
|
+
export function defaultRecordsDir() {
|
|
19
|
+
return join(homedir(), '.ccli', 'records');
|
|
20
|
+
}
|
|
21
|
+
/** sessionId 用作文件名:非字母数字字符转成 _,避免路径问题。 */
|
|
22
|
+
function safeFileName(sessionId) {
|
|
23
|
+
return sessionId.replace(/[^a-zA-Z0-9._-]/g, '_') || 'session';
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 某个会话的记录写入器。
|
|
27
|
+
* 每次 write 直接 appendFileSync(操作系统负责追加原子性),失败静默。
|
|
28
|
+
*/
|
|
29
|
+
export class RecordsWriter {
|
|
30
|
+
dir;
|
|
31
|
+
sessionId;
|
|
32
|
+
constructor(dir, sessionId) {
|
|
33
|
+
this.dir = dir;
|
|
34
|
+
this.sessionId = sessionId;
|
|
35
|
+
}
|
|
36
|
+
get filePath() {
|
|
37
|
+
return join(this.dir, `${safeFileName(this.sessionId)}.jsonl`);
|
|
38
|
+
}
|
|
39
|
+
/** 追加一条事件;任何失败(磁盘满、权限等)都不抛出。 */
|
|
40
|
+
write(event) {
|
|
41
|
+
try {
|
|
42
|
+
mkdirSync(this.dir, { recursive: true });
|
|
43
|
+
const line = JSON.stringify({ ts: new Date().toISOString(), ...event }) +
|
|
44
|
+
'\n';
|
|
45
|
+
appendFileSync(this.filePath, line, 'utf8');
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// 记录绝不能打断会话
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/** records 保留上限:最近多少个会话文件。 */
|
|
53
|
+
export const MAX_RECORD_FILES = 50;
|
|
54
|
+
/** records 保留上限:多少天内没更新过的文件删除。 */
|
|
55
|
+
export const MAX_RECORD_AGE_DAYS = 30;
|
|
56
|
+
/**
|
|
57
|
+
* 轮转清理 records 目录(启动时调用一次):
|
|
58
|
+
* 先删超过 maxAgeDays 没更新的 jsonl,再按数量上限从最旧的开始删。
|
|
59
|
+
* 任何异常(目录不存在、权限问题)都静默,返回实际删除的文件数。
|
|
60
|
+
*/
|
|
61
|
+
export function pruneRecordsDir(dir, options = {}) {
|
|
62
|
+
const maxFiles = options.maxFiles ?? MAX_RECORD_FILES;
|
|
63
|
+
const maxAgeDays = options.maxAgeDays ?? MAX_RECORD_AGE_DAYS;
|
|
64
|
+
const now = options.now ?? Date.now();
|
|
65
|
+
try {
|
|
66
|
+
if (!existsSync(dir))
|
|
67
|
+
return 0;
|
|
68
|
+
const files = readdirSync(dir)
|
|
69
|
+
.filter((f) => f.endsWith('.jsonl'))
|
|
70
|
+
.map((f) => {
|
|
71
|
+
const path = join(dir, f);
|
|
72
|
+
return { path, mtime: statSync(path).mtime.getTime() };
|
|
73
|
+
});
|
|
74
|
+
const ageLimit = maxAgeDays * 24 * 60 * 60 * 1000;
|
|
75
|
+
const fresh = files.filter((f) => now - f.mtime <= ageLimit);
|
|
76
|
+
const doomed = new Set(files.filter((f) => now - f.mtime > ageLimit).map((f) => f.path));
|
|
77
|
+
// 数量仍超限 → 从最旧的继续删
|
|
78
|
+
const byAge = [...fresh].sort((a, b) => a.mtime - b.mtime);
|
|
79
|
+
for (let i = 0; i < Math.max(0, byAge.length - maxFiles); i++) {
|
|
80
|
+
doomed.add(byAge[i].path);
|
|
81
|
+
}
|
|
82
|
+
let deleted = 0;
|
|
83
|
+
for (const path of doomed) {
|
|
84
|
+
try {
|
|
85
|
+
unlinkSync(path);
|
|
86
|
+
deleted++;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
// 单个删除失败不影响其它
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return deleted;
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return 0;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=records.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"records.js","sourceRoot":"","sources":["../../src/harness/records.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -16,8 +16,10 @@ import { NAME, VERSION } from './version.js';
|
|
|
16
16
|
import { startRepl } from './cli/repl/index.js';
|
|
17
17
|
import { style } from './cli/style.js';
|
|
18
18
|
import { printConfig } from './config/config.js';
|
|
19
|
+
import { printPlugins, installPlugin, uninstallPlugin, setPluginEnabled, } from './config/plugins.js';
|
|
19
20
|
import { createCcliHarness } from './harness/index.js';
|
|
20
21
|
import { injectFileReferences } from './cli/file-reference.js';
|
|
22
|
+
import { extractImageReferences, buildUserContent, } from './cli/image-reference.js';
|
|
21
23
|
import { createHarnessEventRenderer } from './cli/run/event-renderer.js';
|
|
22
24
|
const HELP = `${NAME} v${VERSION}
|
|
23
25
|
|
|
@@ -26,6 +28,7 @@ const HELP = `${NAME} v${VERSION}
|
|
|
26
28
|
|
|
27
29
|
命令:
|
|
28
30
|
config 打印当前解析出的配置(诊断用,密钥打码)
|
|
31
|
+
plugin 插件包管理:list / install <目录> [--project] / uninstall <名> / enable <名> / disable <名>
|
|
29
32
|
|
|
30
33
|
选项:
|
|
31
34
|
-v, --version 打印版本号
|
|
@@ -33,10 +36,16 @@ const HELP = `${NAME} v${VERSION}
|
|
|
33
36
|
-y, --yes 非交互式模式下自动确认破坏性工具调用
|
|
34
37
|
-r, --role <name> 非交互式模式下使用的系统提示词角色(默认 default)
|
|
35
38
|
--no-hooks 禁用所有生命周期钩子(忽略配置中的 hooks)
|
|
39
|
+
--project 插件安装到项目级 .ccli/plugins/(配合 plugin install)
|
|
36
40
|
|
|
37
41
|
示例:
|
|
38
42
|
ccli 启动交互式对话
|
|
39
43
|
ccli config 查看当前生效的后端 / 模型 / 密钥来源
|
|
44
|
+
ccli plugin 查看已安装的插件包
|
|
45
|
+
ccli plugin install ./my-plugin 安装一个插件包到 ~/.ccli/plugins/
|
|
46
|
+
ccli plugin install ./p --project 安装到项目级 .ccli/plugins/
|
|
47
|
+
ccli plugin uninstall my-plugin 卸载某个插件
|
|
48
|
+
ccli plugin disable my-plugin 停用某个插件
|
|
40
49
|
ccli --version 查看版本
|
|
41
50
|
ccli "解释这段报错" 非交互式单次调用
|
|
42
51
|
cat file.ts | ccli "给这段代码加注释" 从 stdin 读取上下文
|
|
@@ -82,9 +91,52 @@ async function main() {
|
|
|
82
91
|
if (command === 'config') {
|
|
83
92
|
process.exit(printConfig());
|
|
84
93
|
}
|
|
94
|
+
if (command === 'plugin' || command === 'plugins') {
|
|
95
|
+
const sub = args.positionals[1];
|
|
96
|
+
const arg = args.positionals[2];
|
|
97
|
+
if (!sub || sub === 'list') {
|
|
98
|
+
process.exit(printPlugins());
|
|
99
|
+
}
|
|
100
|
+
if (sub === 'install') {
|
|
101
|
+
if (!arg) {
|
|
102
|
+
console.error(style.error('用法:ccli plugin install <目录> [--project]'));
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
const r = installPlugin(arg, { project: args.project });
|
|
106
|
+
console.log(r.ok ? style.success(r.message) : style.error(r.message));
|
|
107
|
+
process.exit(r.ok ? 0 : 1);
|
|
108
|
+
}
|
|
109
|
+
if (sub === 'uninstall' || sub === 'remove') {
|
|
110
|
+
if (!arg) {
|
|
111
|
+
console.error(style.error(`用法:ccli plugin ${sub} <名称>`));
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
const r = uninstallPlugin(arg);
|
|
115
|
+
console.log(r.ok ? style.success(r.message) : style.error(r.message));
|
|
116
|
+
process.exit(r.ok ? 0 : 1);
|
|
117
|
+
}
|
|
118
|
+
if (sub === 'enable' || sub === 'disable') {
|
|
119
|
+
if (!arg) {
|
|
120
|
+
console.error(style.error(`用法:ccli plugin ${sub} <名称>`));
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
const r = setPluginEnabled(arg, sub === 'enable');
|
|
124
|
+
console.log(r.ok ? style.success(r.message) : style.error(r.message));
|
|
125
|
+
process.exit(r.ok ? 0 : 1);
|
|
126
|
+
}
|
|
127
|
+
console.error(style.error(`未知子命令:plugin ${sub}`));
|
|
128
|
+
console.error(style.muted('可用:list(默认) / install <目录> [--project] / uninstall <名> / enable <名> / disable <名>'));
|
|
129
|
+
process.exit(1);
|
|
130
|
+
}
|
|
85
131
|
const promptFromArgs = args.positionals.join(' ').trim();
|
|
86
132
|
const stdinText = (await readStdin()).trim();
|
|
87
|
-
|
|
133
|
+
// 先抽取 @图片(走多模态),再对剩余文本做 @文件 注入
|
|
134
|
+
const extracted = extractImageReferences(buildPrompt(promptFromArgs, stdinText), process.cwd());
|
|
135
|
+
for (const e of extracted.errors)
|
|
136
|
+
console.error(style.warn(e));
|
|
137
|
+
for (const n of extracted.notes)
|
|
138
|
+
console.error(style.muted(`(${n})`));
|
|
139
|
+
const prompt = injectFileReferences(extracted.text, process.cwd());
|
|
88
140
|
// 有 prompt 或 stdin 时,走非交互式单次调用
|
|
89
141
|
if (prompt) {
|
|
90
142
|
const result = await createCcliHarness({ noHooks: args.noHooks });
|
|
@@ -124,9 +176,10 @@ async function main() {
|
|
|
124
176
|
console.error(style.error(`输入被 UserPromptSubmit hook 拦截:${submitted.reason ?? ''}`));
|
|
125
177
|
process.exit(1);
|
|
126
178
|
}
|
|
179
|
+
const content = buildUserContent(submitted.prompt, extracted.images, harness.ai.supportsVision(), harness.ai.getModel());
|
|
127
180
|
try {
|
|
128
181
|
await harness.runOnceWithEvents({
|
|
129
|
-
prompt:
|
|
182
|
+
prompt: content,
|
|
130
183
|
confirm,
|
|
131
184
|
systemPrompt,
|
|
132
185
|
emit: createHarnessEventRenderer({
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAEzE,MAAM,IAAI,GAAG,GAAG,IAAI,KAAK,OAAO
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/shared.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuEH,8BAA8B;AAC9B,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,eAAe;AACf,MAAM,UAAU,SAAS,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,MAAM,GAAG,cAAc;QAC/B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,YAAY;QAC9C,CAAC,CAAC,IAAI,CAAC;AACf,CAAC"}
|