@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.
Files changed (51) hide show
  1. package/README.md +2 -0
  2. package/dist/agent/ai.js +3 -50
  3. package/dist/agent/ai.js.map +1 -1
  4. package/dist/agent/providers/anthropic.js +56 -5
  5. package/dist/agent/providers/anthropic.js.map +1 -1
  6. package/dist/agent/providers/gemini.js +10 -93
  7. package/dist/agent/providers/gemini.js.map +1 -1
  8. package/dist/agent/providers/openai.js +9 -1
  9. package/dist/agent/providers/openai.js.map +1 -1
  10. package/dist/agent/tool-projection.js +57 -0
  11. package/dist/agent/tool-projection.js.map +1 -0
  12. package/dist/cli/args/index.js +4 -0
  13. package/dist/cli/args/index.js.map +1 -1
  14. package/dist/cli/clipboard-image.js +51 -0
  15. package/dist/cli/clipboard-image.js.map +1 -0
  16. package/dist/cli/image-compress.js +62 -0
  17. package/dist/cli/image-compress.js.map +1 -0
  18. package/dist/cli/image-reference.js +190 -0
  19. package/dist/cli/image-reference.js.map +1 -0
  20. package/dist/cli/repl/index.js +51 -3
  21. package/dist/cli/repl/index.js.map +1 -1
  22. package/dist/cli/run/index.js +72 -12
  23. package/dist/cli/run/index.js.map +1 -1
  24. package/dist/cli/run/task.js +37 -0
  25. package/dist/cli/run/task.js.map +1 -1
  26. package/dist/cli/slash/index.js +14 -0
  27. package/dist/cli/slash/index.js.map +1 -1
  28. package/dist/cli/slash/session/replay.js +118 -0
  29. package/dist/cli/slash/session/replay.js.map +1 -0
  30. package/dist/cli/slash/system/agent.js +1 -0
  31. package/dist/cli/slash/system/agent.js.map +1 -1
  32. package/dist/cli/slash/system/goal.js +1 -0
  33. package/dist/cli/slash/system/goal.js.map +1 -1
  34. package/dist/cli/slash/system/help.js +1 -0
  35. package/dist/cli/slash/system/help.js.map +1 -1
  36. package/dist/cli/slash/system/plan.js +3 -0
  37. package/dist/cli/slash/system/plan.js.map +1 -1
  38. package/dist/config/config.js +11 -1
  39. package/dist/config/config.js.map +1 -1
  40. package/dist/config/plugins.js +378 -0
  41. package/dist/config/plugins.js.map +1 -0
  42. package/dist/config/skills.js +39 -2
  43. package/dist/config/skills.js.map +1 -1
  44. package/dist/harness/index.js +23 -1
  45. package/dist/harness/index.js.map +1 -1
  46. package/dist/harness/records.js +98 -0
  47. package/dist/harness/records.js.map +1 -0
  48. package/dist/index.js +55 -2
  49. package/dist/index.js.map +1 -1
  50. package/dist/tools/shared.js.map +1 -1
  51. 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
- const prompt = injectFileReferences(buildPrompt(promptFromArgs, stdinText), process.cwd());
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: submitted.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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoEH,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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gird/ccli",
3
- "version": "2.17.0",
3
+ "version": "2.18.0",
4
4
  "description": "CCLI —— 一步一步从零实现的代理型(Agentic)终端 AI 编程助手",
5
5
  "type": "module",
6
6
  "bin": {