@gird/ccli 2.8.0 → 2.9.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 +3 -0
- package/dist/cli/confirm-select.js +36 -13
- package/dist/cli/confirm-select.js.map +1 -1
- package/dist/cli/repl/index.js +22 -13
- package/dist/cli/repl/index.js.map +1 -1
- package/dist/cli/run/index.js +3 -2
- package/dist/cli/run/index.js.map +1 -1
- package/dist/cli/slash/index.js +5 -4
- package/dist/cli/slash/index.js.map +1 -1
- package/dist/cli/slash/mcp/mcp.js +20 -19
- package/dist/cli/slash/mcp/mcp.js.map +1 -1
- package/dist/cli/slash/system/agent.js +16 -15
- package/dist/cli/slash/system/agent.js.map +1 -1
- package/dist/cli/slash/system/compact.js +11 -10
- package/dist/cli/slash/system/compact.js.map +1 -1
- package/dist/cli/slash/system/goal.js +14 -13
- package/dist/cli/slash/system/goal.js.map +1 -1
- package/dist/cli/style.js +53 -0
- package/dist/cli/style.js.map +1 -0
- package/dist/config/memory.js +45 -0
- package/dist/config/memory.js.map +1 -0
- package/dist/index.js +10 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -26,6 +26,8 @@ ccli --yes "在当前目录创建 test.txt" # 自动确认破坏性工具调
|
|
|
26
26
|
ccli --role coder "review 这段代码" # 使用 coding 角色单次调用
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
+
**项目记忆**:在项目根目录放一个 `CCLI.md`(或 `AGENTS.md`),CCLI 启动时会自动读取并注入到系统提示,让它「懂这个项目」——无需每次手动交代背景与约定。
|
|
30
|
+
|
|
29
31
|
进入对话后:
|
|
30
32
|
|
|
31
33
|
- 直接输入即与 AI 对话,模型会记住上文(多轮对话)。
|
|
@@ -43,6 +45,7 @@ ccli --role coder "review 这段代码" # 使用 coding 角色单次调用
|
|
|
43
45
|
- `/role [name]` 切换或查看系统提示词角色(内置 `default`、`coder`,配置文件中可自定义)。
|
|
44
46
|
- 按 `↑` / `↓` recalled 之前输入过的 prompt / 命令,历史自动保存到 `~/.ccli/history`。
|
|
45
47
|
- 粘贴多行文本时会自动合并成一条消息发送,不会被截断。
|
|
48
|
+
- 终端输出使用统一的语义化颜色(标签、警告、错误、Agent/Goal 进度等);设置 `NO_COLOR=1` 可关闭颜色,设置 `FORCE_COLOR=1` 可强制上色。
|
|
46
49
|
- 支持 MCP (Model Context Protocol) 扩展:在 `~/.ccli/config.json` 配置 `mcpServers` 即可接入外部 server 的工具。
|
|
47
50
|
- 退出时自动保存 `last` 恢复点;下次启动会询问是否恢复上次会话。
|
|
48
51
|
- `/exit` 或 `/quit` 退出,也可按 Ctrl-C / Ctrl-D。
|
|
@@ -5,18 +5,22 @@
|
|
|
5
5
|
* 非 TTY 环境降级为文字输入 y/N。
|
|
6
6
|
*/
|
|
7
7
|
import { emitKeypressEvents } from 'node:readline';
|
|
8
|
+
import { style } from './style.js';
|
|
9
|
+
function highlightOption(option, selected, highlight) {
|
|
10
|
+
return selected && highlight ? style.selected(option) : option;
|
|
11
|
+
}
|
|
8
12
|
/** 生成当前状态的显示字符串。 */
|
|
9
13
|
export function renderConfirmState(options) {
|
|
10
|
-
const { prompt, confirmed, confirmLabel, cancelLabel } = options;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
const { prompt, confirmed, confirmLabel, cancelLabel, highlight = false, } = options;
|
|
15
|
+
const confirmOption = confirmed ? `[${confirmLabel}]` : confirmLabel;
|
|
16
|
+
const cancelOption = confirmed ? cancelLabel : `[${cancelLabel}]`;
|
|
17
|
+
return `${prompt} ${highlightOption(confirmOption, confirmed, highlight)} ${highlightOption(cancelOption, !confirmed, highlight)}`;
|
|
14
18
|
}
|
|
15
19
|
/** 非 TTY 环境下使用的文字确认。 */
|
|
16
|
-
function fallbackTextConfirm(prompt) {
|
|
20
|
+
function fallbackTextConfirm(prompt, stdin, stdout) {
|
|
17
21
|
return new Promise((resolve) => {
|
|
18
|
-
|
|
19
|
-
|
|
22
|
+
stdout.write(`${prompt} (y/N) `);
|
|
23
|
+
stdin.once('data', (data) => {
|
|
20
24
|
const answer = data.toString().trim().toLowerCase();
|
|
21
25
|
resolve(answer === 'y' || answer === 'yes');
|
|
22
26
|
});
|
|
@@ -25,37 +29,56 @@ function fallbackTextConfirm(prompt) {
|
|
|
25
29
|
/**
|
|
26
30
|
* 用方向键选择确认/取消。
|
|
27
31
|
*
|
|
28
|
-
*
|
|
32
|
+
* 组件会临时接管 keypress 事件:接管前移除已有的 keypress 监听(例如 readline),
|
|
33
|
+
* 结束后再恢复,避免按键被多个消费者重复处理;若输入流此前被暂停,会临时恢复。
|
|
29
34
|
*/
|
|
30
35
|
export async function confirmSelect(options) {
|
|
31
|
-
const { prompt, defaultConfirm = false, confirmLabel = '执行', cancelLabel = '取消', } = options;
|
|
32
|
-
const stdin =
|
|
33
|
-
const stdout =
|
|
36
|
+
const { prompt, defaultConfirm = false, confirmLabel = '执行', cancelLabel = '取消', input = process.stdin, output = process.stdout, } = options;
|
|
37
|
+
const stdin = input;
|
|
38
|
+
const stdout = output;
|
|
34
39
|
if (!stdin.isTTY || !stdout.isTTY) {
|
|
35
|
-
return fallbackTextConfirm(prompt);
|
|
40
|
+
return fallbackTextConfirm(prompt, stdin, stdout);
|
|
36
41
|
}
|
|
37
42
|
return new Promise((resolve) => {
|
|
38
43
|
let confirmed = defaultConfirm;
|
|
39
44
|
const originalRawMode = stdin.isRaw;
|
|
45
|
+
const wasPaused = typeof stdin.isPaused === 'function'
|
|
46
|
+
? stdin.isPaused()
|
|
47
|
+
: false;
|
|
48
|
+
const existingKeypressListeners = stdin.listeners('keypress');
|
|
49
|
+
for (const listener of existingKeypressListeners) {
|
|
50
|
+
stdin.removeListener('keypress', listener);
|
|
51
|
+
}
|
|
40
52
|
stdin.setRawMode(true);
|
|
41
53
|
emitKeypressEvents(stdin);
|
|
54
|
+
if (wasPaused) {
|
|
55
|
+
stdin.resume();
|
|
56
|
+
}
|
|
42
57
|
function render() {
|
|
43
58
|
const line = renderConfirmState({
|
|
44
59
|
prompt,
|
|
45
60
|
confirmed,
|
|
46
61
|
confirmLabel,
|
|
47
62
|
cancelLabel,
|
|
63
|
+
highlight: true,
|
|
48
64
|
});
|
|
49
65
|
stdout.write(`\r\x1b[K${line}`);
|
|
50
66
|
}
|
|
51
67
|
function cleanup() {
|
|
52
68
|
stdin.setRawMode(originalRawMode ?? false);
|
|
53
69
|
stdin.removeListener('keypress', onKeypress);
|
|
70
|
+
for (const listener of existingKeypressListeners) {
|
|
71
|
+
stdin.on('keypress', listener);
|
|
72
|
+
}
|
|
73
|
+
if (wasPaused) {
|
|
74
|
+
stdin.pause();
|
|
75
|
+
}
|
|
54
76
|
}
|
|
55
77
|
function finish(value) {
|
|
56
78
|
cleanup();
|
|
57
79
|
const label = value ? confirmLabel : cancelLabel;
|
|
58
|
-
|
|
80
|
+
const chosen = style.selected(`[${label}]`);
|
|
81
|
+
stdout.write(`\r\x1b[K${prompt} ${chosen}\n`);
|
|
59
82
|
resolve(value);
|
|
60
83
|
}
|
|
61
84
|
function onKeypress(str, key) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm-select.js","sourceRoot":"","sources":["../../src/cli/confirm-select.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"confirm-select.js","sourceRoot":"","sources":["../../src/cli/confirm-select.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/repl/index.js
CHANGED
|
@@ -8,8 +8,10 @@
|
|
|
8
8
|
import { createInterface } from 'node:readline';
|
|
9
9
|
import { join } from 'node:path';
|
|
10
10
|
import { NAME, VERSION } from '../../version.js';
|
|
11
|
+
import { style } from '../style.js';
|
|
11
12
|
import { loadConfig, maskKey, DEFAULT_SYSTEM_PROMPT, getRolePrompt, } from '../../config/config.js';
|
|
12
13
|
import { loadEnvFile } from '../../config/env.js';
|
|
14
|
+
import { loadProjectMemory, appendProjectMemory } from '../../config/memory.js';
|
|
13
15
|
import { createAIClient } from '../../agent/ai.js';
|
|
14
16
|
import { handleSlash, slashCompleter } from '../slash/index.js';
|
|
15
17
|
import { injectFileReferences, completeFileReference, } from '../file-reference.js';
|
|
@@ -29,7 +31,7 @@ export async function startRepl() {
|
|
|
29
31
|
// 启动即解析配置:缺失就明确报错退出,不进入循环
|
|
30
32
|
const result = loadConfig();
|
|
31
33
|
if (!result.ok) {
|
|
32
|
-
console.error(result.message);
|
|
34
|
+
console.error(style.error(result.message));
|
|
33
35
|
process.exit(1);
|
|
34
36
|
}
|
|
35
37
|
const { config } = result;
|
|
@@ -43,16 +45,21 @@ export async function startRepl() {
|
|
|
43
45
|
mcp = new McpClientManager(config.mcpServers, { name: NAME, version: VERSION }, envLookup);
|
|
44
46
|
const errors = await mcp.connectAll();
|
|
45
47
|
if (errors.length > 0) {
|
|
46
|
-
console.error('部分 MCP server 连接失败:');
|
|
48
|
+
console.error(style.error('部分 MCP server 连接失败:'));
|
|
47
49
|
for (const e of errors)
|
|
48
|
-
console.error(` ${e}`);
|
|
50
|
+
console.error(style.muted(` ${e}`));
|
|
49
51
|
}
|
|
50
52
|
await registerMcpTools(mcp);
|
|
51
53
|
}
|
|
52
54
|
const ai = createAIClient(config);
|
|
55
|
+
// 项目记忆:启动时读一次,注入 system 提示,切换角色时也带上
|
|
56
|
+
const projectMemory = loadProjectMemory(process.cwd());
|
|
53
57
|
// 对话历史:以 system 提示词开场,之后累积 user / assistant 轮次
|
|
54
58
|
const history = [
|
|
55
|
-
{
|
|
59
|
+
{
|
|
60
|
+
role: 'system',
|
|
61
|
+
content: appendProjectMemory(DEFAULT_SYSTEM_PROMPT, projectMemory),
|
|
62
|
+
},
|
|
56
63
|
];
|
|
57
64
|
let currentRole = 'default';
|
|
58
65
|
let stats = emptyStats();
|
|
@@ -73,9 +80,12 @@ export async function startRepl() {
|
|
|
73
80
|
history: loadHistory(),
|
|
74
81
|
historySize: 1000,
|
|
75
82
|
});
|
|
76
|
-
console.log(`${NAME} v${VERSION}`);
|
|
77
|
-
console.log(`后端: ${config.provider} 模型: ${config.model} 密钥: ${maskKey(config.apiKey)}`);
|
|
78
|
-
|
|
83
|
+
console.log(style.label(`${NAME} v${VERSION}`));
|
|
84
|
+
console.log(style.muted(`后端: ${config.provider} 模型: ${config.model} 密钥: ${maskKey(config.apiKey)}`));
|
|
85
|
+
if (projectMemory) {
|
|
86
|
+
console.log(style.success(`已加载项目记忆:${projectMemory.file}`));
|
|
87
|
+
}
|
|
88
|
+
console.log(style.info('进入交互式会话。输入 /help 查看命令,/exit 退出。\n'));
|
|
79
89
|
rl.prompt();
|
|
80
90
|
// 请用户确认破坏性操作:展示预览 + 方向键选择(默认取消,更安全)
|
|
81
91
|
const confirm = async (preview) => {
|
|
@@ -115,9 +125,8 @@ export async function startRepl() {
|
|
|
115
125
|
currentRole,
|
|
116
126
|
setRole: (name) => {
|
|
117
127
|
currentRole = name;
|
|
118
|
-
history[0].content =
|
|
119
|
-
|
|
120
|
-
DEFAULT_SYSTEM_PROMPT;
|
|
128
|
+
history[0].content = appendProjectMemory(getRolePrompt(name, config.roles) ??
|
|
129
|
+
DEFAULT_SYSTEM_PROMPT, projectMemory);
|
|
121
130
|
},
|
|
122
131
|
requestExit: () => {
|
|
123
132
|
exiting = true;
|
|
@@ -156,12 +165,12 @@ export async function startRepl() {
|
|
|
156
165
|
try {
|
|
157
166
|
await runAgentTurn({ ai, history, confirm, stats });
|
|
158
167
|
// 本回合结束,显示本次 token 消耗
|
|
159
|
-
console.log(`\n${formatStats(stats, ai.getModel())}`);
|
|
168
|
+
console.log(style.muted(`\n${formatStats(stats, ai.getModel())}`));
|
|
160
169
|
// 上下文接近上限时自动压缩,避免下一轮溢出
|
|
161
170
|
await autoCompactIfNeeded(ai, history, stats);
|
|
162
171
|
}
|
|
163
172
|
catch (e) {
|
|
164
|
-
console.error(`\n[请求失败] ${e?.message ?? e}`);
|
|
173
|
+
console.error(style.error(`\n[请求失败] ${e?.message ?? e}`));
|
|
165
174
|
history.length = mark; // 回滚本轮新增的所有消息
|
|
166
175
|
}
|
|
167
176
|
finally {
|
|
@@ -187,7 +196,7 @@ export async function startRepl() {
|
|
|
187
196
|
if (mcp) {
|
|
188
197
|
await mcp.closeAll();
|
|
189
198
|
}
|
|
190
|
-
console.log('\n再见 👋');
|
|
199
|
+
console.log(style.info('\n再见 👋'));
|
|
191
200
|
process.exit(0);
|
|
192
201
|
});
|
|
193
202
|
// Ctrl-C:关闭循环(进而触发 close)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/repl/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACH,UAAU,EACV,OAAO,EACP,qBAAqB,EACrB,aAAa,GAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAoB,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EACH,oBAAoB,EACpB,qBAAqB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EACH,UAAU,EAEV,WAAW,GAEd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAgB,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,MAAM,GAAG,IAAI,CAAC;AAEpB,sCAAsC;AACtC,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,MAAM,CAAC,KAAK,UAAU,SAAS;IAC3B,0BAA0B;IAC1B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/repl/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/run/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { style } from '../style.js';
|
|
1
2
|
import { executeTool, getTool, registerMcpTools } from '../../tools/index.js';
|
|
2
3
|
import { estimatePromptTokens, estimateTokens, } from '../stats/index.js';
|
|
3
4
|
/** 单个用户回合内,最多允许模型连续调用工具的轮数,防止失控循环。 */
|
|
@@ -74,7 +75,7 @@ export async function runAgentTurn(options) {
|
|
|
74
75
|
onToolCall(tc);
|
|
75
76
|
}
|
|
76
77
|
else {
|
|
77
|
-
print(`\n⚙ ${tc.name}(${tc.arguments})\n`);
|
|
78
|
+
print(style.tool(`\n⚙ ${tc.name}(${tc.arguments})\n`));
|
|
78
79
|
}
|
|
79
80
|
const result = await executeTool(tc.name, tc.arguments);
|
|
80
81
|
if (onToolResult) {
|
|
@@ -88,7 +89,7 @@ export async function runAgentTurn(options) {
|
|
|
88
89
|
}
|
|
89
90
|
// 继续下一轮,让模型基于工具结果接着回答
|
|
90
91
|
}
|
|
91
|
-
print('\n(已达到工具调用轮数上限)\n');
|
|
92
|
+
print(style.warn('\n(已达到工具调用轮数上限)\n'));
|
|
92
93
|
}
|
|
93
94
|
/**
|
|
94
95
|
* 非交互式单次调用。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/run/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/run/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/slash/index.js
CHANGED
|
@@ -21,6 +21,7 @@ import { handleResume } from './session/resume.js';
|
|
|
21
21
|
import { handleRole } from './config/role.js';
|
|
22
22
|
import { handleMcp, reloadMcpServers } from './mcp/mcp.js';
|
|
23
23
|
import { handleCompact } from './system/compact.js';
|
|
24
|
+
import { style } from '../style.js';
|
|
24
25
|
/**
|
|
25
26
|
* readline 的 Tab 补全函数。
|
|
26
27
|
* 对斜杠命令和 /load 的会话名提供补全提示。
|
|
@@ -63,7 +64,7 @@ export async function handleSlash(input, ctx) {
|
|
|
63
64
|
// 保留第 0 条 system 提示,清掉其余历史
|
|
64
65
|
ctx.history.length = 1;
|
|
65
66
|
resetStats(ctx.stats);
|
|
66
|
-
console.log('(已清空对话历史和 token 统计)');
|
|
67
|
+
console.log(style.muted('(已清空对话历史和 token 统计)'));
|
|
67
68
|
return true;
|
|
68
69
|
case 'undo':
|
|
69
70
|
handleUndo(arg, ctx);
|
|
@@ -112,7 +113,7 @@ export async function handleSlash(input, ctx) {
|
|
|
112
113
|
ctx.requestExit();
|
|
113
114
|
return true;
|
|
114
115
|
default:
|
|
115
|
-
console.log(`未知命令:/${name},输入 /help 查看可用命令。`);
|
|
116
|
+
console.log(style.warn(`未知命令:/${name},输入 /help 查看可用命令。`));
|
|
116
117
|
return true;
|
|
117
118
|
}
|
|
118
119
|
}
|
|
@@ -120,10 +121,10 @@ export async function handleSlash(input, ctx) {
|
|
|
120
121
|
async function handleReload(ctx) {
|
|
121
122
|
const result = ctx.reloadConfig();
|
|
122
123
|
if (!result.ok) {
|
|
123
|
-
console.log(`配置重载失败:${result.message}`);
|
|
124
|
+
console.log(style.error(`配置重载失败:${result.message}`));
|
|
124
125
|
return;
|
|
125
126
|
}
|
|
126
|
-
console.log('配置已重新加载。');
|
|
127
|
+
console.log(style.success('配置已重新加载。'));
|
|
127
128
|
if (ctx.mcpManager) {
|
|
128
129
|
await reloadMcpServers(ctx.mcpManager, result.config.mcpServers ?? {});
|
|
129
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/slash/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/slash/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { McpClientManager } from '../../../agent/mcp.js';
|
|
2
2
|
import { saveMcpServers, } from '../../../config/config.js';
|
|
3
3
|
import { registerMcpTools, unregisterAllMcpTools, unregisterMcpServerTools, } from '../../../tools/index.js';
|
|
4
|
+
import { style } from '../../style.js';
|
|
4
5
|
/** /mcp:管理 MCP server。 */
|
|
5
6
|
export async function handleMcp(arg, ctx) {
|
|
6
7
|
if (!ctx.mcpManager) {
|
|
7
|
-
console.log('当前没有可用的 MCP manager。');
|
|
8
|
+
console.log(style.muted('当前没有可用的 MCP manager。'));
|
|
8
9
|
return;
|
|
9
10
|
}
|
|
10
11
|
const parts = arg.trim().split(/\s+/);
|
|
@@ -23,30 +24,30 @@ export async function handleMcp(arg, ctx) {
|
|
|
23
24
|
await mcpReload(ctx);
|
|
24
25
|
return;
|
|
25
26
|
default:
|
|
26
|
-
console.log('用法:/mcp list | add <name> <command> [args...] | remove <name> | reload');
|
|
27
|
+
console.log(style.muted('用法:/mcp list | add <name> <command> [args...] | remove <name> | reload'));
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
30
|
async function mcpList(ctx) {
|
|
30
31
|
const servers = ctx.mcpManager.getServerNames();
|
|
31
32
|
if (servers.length === 0) {
|
|
32
|
-
console.log('没有已连接的 MCP server。');
|
|
33
|
+
console.log(style.muted('没有已连接的 MCP server。'));
|
|
33
34
|
return;
|
|
34
35
|
}
|
|
35
|
-
console.log('已连接的 MCP server:');
|
|
36
|
+
console.log(style.label('已连接的 MCP server:'));
|
|
36
37
|
const tools = await ctx.mcpManager.listTools();
|
|
37
38
|
for (const name of servers) {
|
|
38
39
|
const serverTools = tools
|
|
39
40
|
.filter((t) => t.serverName === name)
|
|
40
41
|
.map((t) => t.originalName);
|
|
41
|
-
console.log(` ${name}`);
|
|
42
|
+
console.log(style.info(` ${name}`));
|
|
42
43
|
for (const t of serverTools) {
|
|
43
|
-
console.log(` - ${t}`);
|
|
44
|
+
console.log(style.muted(` - ${t}`));
|
|
44
45
|
}
|
|
45
46
|
}
|
|
46
47
|
}
|
|
47
48
|
async function mcpAdd(parts, ctx) {
|
|
48
49
|
if (parts.length < 2) {
|
|
49
|
-
console.log('用法:/mcp add <name> <command> [args...]');
|
|
50
|
+
console.log(style.muted('用法:/mcp add <name> <command> [args...]'));
|
|
50
51
|
return;
|
|
51
52
|
}
|
|
52
53
|
const [name, command, ...args] = parts;
|
|
@@ -55,7 +56,7 @@ async function mcpAdd(parts, ctx) {
|
|
|
55
56
|
const testManager = new McpClientManager({ [name]: cfg }, { name: 'ccli', version: '0.0.0' });
|
|
56
57
|
const testErrors = await testManager.connectAll();
|
|
57
58
|
if (testErrors.length > 0) {
|
|
58
|
-
console.log(`连接失败:${testErrors[0]}`);
|
|
59
|
+
console.log(style.error(`连接失败:${testErrors[0]}`));
|
|
59
60
|
await testManager.closeAll();
|
|
60
61
|
return;
|
|
61
62
|
}
|
|
@@ -65,7 +66,7 @@ async function mcpAdd(parts, ctx) {
|
|
|
65
66
|
// 持久化
|
|
66
67
|
const saved = saveMcpServers(ctx.cwd, newConfig);
|
|
67
68
|
if (!saved.ok) {
|
|
68
|
-
console.log(saved.message);
|
|
69
|
+
console.log(style.error(saved.message));
|
|
69
70
|
await testManager.closeAll();
|
|
70
71
|
return;
|
|
71
72
|
}
|
|
@@ -73,17 +74,17 @@ async function mcpAdd(parts, ctx) {
|
|
|
73
74
|
Object.assign(currentConfig, { [name]: cfg });
|
|
74
75
|
unregisterMcpServerTools(name);
|
|
75
76
|
await registerMcpTools(testManager);
|
|
76
|
-
console.log(`已添加 MCP server:${name}(配置已保存到 ${saved.path})`);
|
|
77
|
+
console.log(style.success(`已添加 MCP server:${name}(配置已保存到 ${saved.path})`));
|
|
77
78
|
}
|
|
78
79
|
async function mcpRemove(parts, ctx) {
|
|
79
80
|
const name = parts[0];
|
|
80
81
|
if (!name) {
|
|
81
|
-
console.log('用法:/mcp remove <name>');
|
|
82
|
+
console.log(style.muted('用法:/mcp remove <name>'));
|
|
82
83
|
return;
|
|
83
84
|
}
|
|
84
85
|
const removed = await ctx.mcpManager.removeServer(name);
|
|
85
86
|
if (!removed) {
|
|
86
|
-
console.log(`未找到 MCP server:${name}`);
|
|
87
|
+
console.log(style.warn(`未找到 MCP server:${name}`));
|
|
87
88
|
return;
|
|
88
89
|
}
|
|
89
90
|
unregisterMcpServerTools(name);
|
|
@@ -93,19 +94,19 @@ async function mcpRemove(parts, ctx) {
|
|
|
93
94
|
Object.assign(currentConfig, newConfig);
|
|
94
95
|
const saved = saveMcpServers(ctx.cwd, newConfig);
|
|
95
96
|
if (saved.ok) {
|
|
96
|
-
console.log(`已移除 MCP server:${name}(配置已保存到 ${saved.path})`);
|
|
97
|
+
console.log(style.success(`已移除 MCP server:${name}(配置已保存到 ${saved.path})`));
|
|
97
98
|
}
|
|
98
99
|
else {
|
|
99
|
-
console.log(`已移除 MCP server:${name},但保存配置失败:${saved.message}`);
|
|
100
|
+
console.log(style.warn(`已移除 MCP server:${name},但保存配置失败:${saved.message}`));
|
|
100
101
|
}
|
|
101
102
|
}
|
|
102
103
|
async function mcpReload(ctx) {
|
|
103
104
|
const result = ctx.reloadConfig();
|
|
104
105
|
if (!result.ok) {
|
|
105
|
-
console.log(`配置重载失败:${result.message}`);
|
|
106
|
+
console.log(style.error(`配置重载失败:${result.message}`));
|
|
106
107
|
return;
|
|
107
108
|
}
|
|
108
|
-
console.log('配置已重新加载。');
|
|
109
|
+
console.log(style.success('配置已重新加载。'));
|
|
109
110
|
await reloadMcpServers(ctx.mcpManager, result.config.mcpServers ?? {});
|
|
110
111
|
}
|
|
111
112
|
/**
|
|
@@ -123,11 +124,11 @@ export async function reloadMcpServers(manager, mcpServers) {
|
|
|
123
124
|
Object.assign(currentConfig, mcpServers);
|
|
124
125
|
const errors = await manager.connectAll();
|
|
125
126
|
if (errors.length > 0) {
|
|
126
|
-
console.error('部分 MCP server 连接失败:');
|
|
127
|
+
console.error(style.error('部分 MCP server 连接失败:'));
|
|
127
128
|
for (const e of errors)
|
|
128
|
-
console.error(` ${e}`);
|
|
129
|
+
console.error(style.muted(` ${e}`));
|
|
129
130
|
}
|
|
130
131
|
await registerMcpTools(manager);
|
|
131
|
-
console.log('MCP server 已重新加载。');
|
|
132
|
+
console.log(style.success('MCP server 已重新加载。'));
|
|
132
133
|
}
|
|
133
134
|
//# sourceMappingURL=mcp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../../src/cli/slash/mcp/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAEH,cAAc,GAEjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACH,gBAAgB,EAChB,qBAAqB,EACrB,wBAAwB,GAC3B,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../../src/cli/slash/mcp/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { runAgentTurn } from '../../run/index.js';
|
|
2
|
+
import { style } from '../../style.js';
|
|
2
3
|
import { getTool } from '../../../tools/index.js';
|
|
3
4
|
/** 规划阶段的系统提示:只输出计划,不调用工具。 */
|
|
4
5
|
const PLANNING_SYSTEM_PROMPT = `你是 CCLI 的 Agent 规划助手。
|
|
@@ -55,30 +56,30 @@ export class PlanTracker {
|
|
|
55
56
|
printCurrent() {
|
|
56
57
|
const idx = Math.min(this.completed, this.steps.length - 1);
|
|
57
58
|
const text = this.steps[idx] ?? '继续执行';
|
|
58
|
-
console.log(`\n[→] 步骤 ${idx + 1}/${this.steps.length}:${text}`);
|
|
59
|
+
console.log(style.step(`\n[→] 步骤 ${idx + 1}/${this.steps.length}:${text}`));
|
|
59
60
|
}
|
|
60
61
|
/** 打印刚完成的步骤。 */
|
|
61
62
|
printDone() {
|
|
62
63
|
const idx = this.completed;
|
|
63
64
|
if (idx >= 0 && idx < this.steps.length) {
|
|
64
|
-
console.log(`[✓] 步骤 ${idx + 1}/${this.steps.length} 完成`);
|
|
65
|
+
console.log(style.done(`[✓] 步骤 ${idx + 1}/${this.steps.length} 完成`));
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
68
|
/** 打印完整计划状态。 */
|
|
68
69
|
printState() {
|
|
69
70
|
if (this.steps.length === 0)
|
|
70
71
|
return;
|
|
71
|
-
console.log('[Agent] 当前计划状态:');
|
|
72
|
+
console.log(style.label('[Agent] 当前计划状态:'));
|
|
72
73
|
for (let i = 0; i < this.steps.length; i++) {
|
|
73
74
|
let marker;
|
|
74
75
|
if (i < this.completed) {
|
|
75
|
-
marker = '[✓]';
|
|
76
|
+
marker = style.done('[✓]');
|
|
76
77
|
}
|
|
77
78
|
else if (i === this.completed) {
|
|
78
|
-
marker = '[→]';
|
|
79
|
+
marker = style.step('[→]');
|
|
79
80
|
}
|
|
80
81
|
else {
|
|
81
|
-
marker = '[ ]';
|
|
82
|
+
marker = style.muted('[ ]');
|
|
82
83
|
}
|
|
83
84
|
console.log(`${marker} ${i + 1}. ${this.steps[i]}`);
|
|
84
85
|
}
|
|
@@ -135,25 +136,25 @@ export function makeConfirm(ctx) {
|
|
|
135
136
|
export async function handleAgent(arg, ctx) {
|
|
136
137
|
const task = arg.trim();
|
|
137
138
|
if (task.length === 0) {
|
|
138
|
-
console.log('用法:/agent <任务描述>');
|
|
139
|
+
console.log(style.muted('用法:/agent <任务描述>'));
|
|
139
140
|
return;
|
|
140
141
|
}
|
|
141
|
-
console.log(`[Agent] 开始为任务制定计划:${task}\n`);
|
|
142
|
+
console.log(style.label(`[Agent] 开始为任务制定计划:${task}\n`));
|
|
142
143
|
const plan = await buildPlan(task, ctx);
|
|
143
144
|
if (!plan) {
|
|
144
|
-
console.log('\n[Agent] 未能生成计划。');
|
|
145
|
+
console.log(style.warn('\n[Agent] 未能生成计划。'));
|
|
145
146
|
return;
|
|
146
147
|
}
|
|
147
|
-
console.log('\n\n[Agent] 计划如下:');
|
|
148
|
+
console.log(style.label('\n\n[Agent] 计划如下:'));
|
|
148
149
|
console.log(plan);
|
|
149
150
|
const answer = (await ctx.ask('\n是否按此计划执行?(y/N) '))
|
|
150
151
|
.trim()
|
|
151
152
|
.toLowerCase();
|
|
152
153
|
if (answer !== 'y' && answer !== 'yes') {
|
|
153
|
-
console.log('[Agent] 已取消执行。');
|
|
154
|
+
console.log(style.warn('[Agent] 已取消执行。'));
|
|
154
155
|
return;
|
|
155
156
|
}
|
|
156
|
-
console.log('\n[Agent] 开始执行计划...');
|
|
157
|
+
console.log(style.label('\n[Agent] 开始执行计划...'));
|
|
157
158
|
const tracker = new PlanTracker(plan);
|
|
158
159
|
if (tracker.hasSteps()) {
|
|
159
160
|
tracker.printState();
|
|
@@ -172,11 +173,11 @@ export async function handleAgent(arg, ctx) {
|
|
|
172
173
|
if (tracker.hasSteps()) {
|
|
173
174
|
tracker.printCurrent();
|
|
174
175
|
}
|
|
175
|
-
console.log(`\n[Agent] 调用 ${tc.name}`);
|
|
176
|
+
console.log(style.tool(`\n[Agent] 调用 ${tc.name}`));
|
|
176
177
|
console.log(formatToolCall(tc));
|
|
177
178
|
},
|
|
178
179
|
onToolResult: (tc, result) => {
|
|
179
|
-
console.log(`\n[Agent] ${tc.name} 结果:`);
|
|
180
|
+
console.log(style.muted(`\n[Agent] ${tc.name} 结果:`));
|
|
180
181
|
console.log(truncateResult(result));
|
|
181
182
|
if (tracker.hasSteps()) {
|
|
182
183
|
tracker.advance();
|
|
@@ -184,6 +185,6 @@ export async function handleAgent(arg, ctx) {
|
|
|
184
185
|
}
|
|
185
186
|
},
|
|
186
187
|
});
|
|
187
|
-
console.log('\n[Agent] 任务执行结束');
|
|
188
|
+
console.log(style.success('\n[Agent] 任务执行结束'));
|
|
188
189
|
}
|
|
189
190
|
//# sourceMappingURL=agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../../src/cli/slash/system/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../../src/cli/slash/system/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { estimatePromptTokens, resetStats, getContextLimit, } from '../../stats/index.js';
|
|
2
|
+
import { style } from '../../style.js';
|
|
2
3
|
/** 上下文占比低于此值时,压缩通常没必要,先向用户确认。 */
|
|
3
4
|
const COMPACT_MIN_RATIO = 0.5;
|
|
4
5
|
/** 上下文占比达到此值时,下一轮对话前自动压缩。 */
|
|
@@ -50,7 +51,7 @@ async function compactHistory(ai, history, stats) {
|
|
|
50
51
|
{ role: 'system', content: SUMMARY_SYSTEM },
|
|
51
52
|
{ role: 'user', content: `请压缩以下对话历史:\n\n${convo}` },
|
|
52
53
|
];
|
|
53
|
-
console.log('正在压缩上下文…\n');
|
|
54
|
+
console.log(style.info('正在压缩上下文…\n'));
|
|
54
55
|
let summary;
|
|
55
56
|
try {
|
|
56
57
|
// 压缩时禁用工具,只要文本摘要
|
|
@@ -82,17 +83,17 @@ function printCompactResult(result) {
|
|
|
82
83
|
switch (result.status) {
|
|
83
84
|
case 'ok': {
|
|
84
85
|
const saved = Math.round((1 - result.after / result.before) * 100);
|
|
85
|
-
console.log(`\n\n已压缩上下文:约 ${result.before.toLocaleString()} → ${result.after.toLocaleString()} tokens(节省 ${saved}%)。`);
|
|
86
|
+
console.log(style.success(`\n\n已压缩上下文:约 ${result.before.toLocaleString()} → ${result.after.toLocaleString()} tokens(节省 ${saved}%)。`));
|
|
86
87
|
break;
|
|
87
88
|
}
|
|
88
89
|
case 'no-benefit':
|
|
89
|
-
console.log('\n\n当前历史已足够精简,压缩不会减少上下文(历史未改动)。');
|
|
90
|
+
console.log(style.muted('\n\n当前历史已足够精简,压缩不会减少上下文(历史未改动)。'));
|
|
90
91
|
break;
|
|
91
92
|
case 'failed':
|
|
92
|
-
console.log(`\n压缩失败:${result.message}(历史未改动)`);
|
|
93
|
+
console.log(style.error(`\n压缩失败:${result.message}(历史未改动)`));
|
|
93
94
|
break;
|
|
94
95
|
case 'empty':
|
|
95
|
-
console.log('没有可压缩的对话历史。');
|
|
96
|
+
console.log(style.muted('没有可压缩的对话历史。'));
|
|
96
97
|
break;
|
|
97
98
|
}
|
|
98
99
|
}
|
|
@@ -102,7 +103,7 @@ function printCompactResult(result) {
|
|
|
102
103
|
*/
|
|
103
104
|
export async function handleCompact(ctx) {
|
|
104
105
|
if (ctx.history.length <= 1) {
|
|
105
|
-
console.log('没有可压缩的对话历史。');
|
|
106
|
+
console.log(style.muted('没有可压缩的对话历史。'));
|
|
106
107
|
return;
|
|
107
108
|
}
|
|
108
109
|
// 上下文占比很低时,压缩通常没必要且会损失细节 —— 先向用户确认
|
|
@@ -111,11 +112,11 @@ export async function handleCompact(ctx) {
|
|
|
111
112
|
const ratio = limit > 0 ? before / limit : 0;
|
|
112
113
|
if (ratio < COMPACT_MIN_RATIO) {
|
|
113
114
|
const pct = (ratio * 100).toFixed(1);
|
|
114
|
-
console.log(`当前上下文仅占 ${pct}%(约 ${before.toLocaleString()} / ${limit.toLocaleString()} tokens),` +
|
|
115
|
-
`压缩通常在接近上限时才有必要,且会损失细节。`);
|
|
115
|
+
console.log(style.warn(`当前上下文仅占 ${pct}%(约 ${before.toLocaleString()} / ${limit.toLocaleString()} tokens),` +
|
|
116
|
+
`压缩通常在接近上限时才有必要,且会损失细节。`));
|
|
116
117
|
const ok = await ctx.confirm('仍要压缩?');
|
|
117
118
|
if (!ok) {
|
|
118
|
-
console.log('已取消。');
|
|
119
|
+
console.log(style.muted('已取消。'));
|
|
119
120
|
return;
|
|
120
121
|
}
|
|
121
122
|
}
|
|
@@ -133,7 +134,7 @@ export async function autoCompactIfNeeded(ai, history, stats) {
|
|
|
133
134
|
const ratio = limit > 0 ? tokens / limit : 0;
|
|
134
135
|
if (ratio < AUTO_COMPACT_RATIO)
|
|
135
136
|
return;
|
|
136
|
-
console.log(`\n⚠ 上下文已达 ${(ratio * 100).toFixed(0)}%(约 ${tokens.toLocaleString()} / ${limit.toLocaleString()} tokens),正在自动压缩…`);
|
|
137
|
+
console.log(style.warn(`\n⚠ 上下文已达 ${(ratio * 100).toFixed(0)}%(约 ${tokens.toLocaleString()} / ${limit.toLocaleString()} tokens),正在自动压缩…`));
|
|
137
138
|
printCompactResult(await compactHistory(ai, history, stats));
|
|
138
139
|
}
|
|
139
140
|
//# sourceMappingURL=compact.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact.js","sourceRoot":"","sources":["../../../../src/cli/slash/system/compact.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,oBAAoB,EACpB,UAAU,EACV,eAAe,GAElB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"compact.js","sourceRoot":"","sources":["../../../../src/cli/slash/system/compact.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { runAgentTurn } from '../../run/index.js';
|
|
2
|
+
import { style } from '../../style.js';
|
|
2
3
|
import { getTool } from '../../../tools/index.js';
|
|
3
4
|
import { buildPlan, EXECUTION_SYSTEM_PROMPT, makeConfirm, PlanTracker, } from './agent.js';
|
|
4
5
|
/** 目标未给完成条件时,让规划阶段先补一条可检查条件。 */
|
|
@@ -76,7 +77,7 @@ async function evaluateGoal(task, done, ctx) {
|
|
|
76
77
|
...ctx.history,
|
|
77
78
|
{ role: 'user', content: prompt },
|
|
78
79
|
];
|
|
79
|
-
console.log('\n[Goal] 正在判定完成条件...');
|
|
80
|
+
console.log(style.label('\n[Goal] 正在判定完成条件...'));
|
|
80
81
|
let verdict = '';
|
|
81
82
|
const turn = await ctx.ai.chat(evalHistory, (delta) => {
|
|
82
83
|
verdict += delta;
|
|
@@ -90,19 +91,19 @@ async function evaluateGoal(task, done, ctx) {
|
|
|
90
91
|
export async function handleGoal(arg, ctx) {
|
|
91
92
|
const parsed = parseGoalArg(arg);
|
|
92
93
|
if (!parsed) {
|
|
93
|
-
console.log('用法:/goal <任务> [| <完成条件>]');
|
|
94
|
+
console.log(style.muted('用法:/goal <任务> [| <完成条件>]'));
|
|
94
95
|
return;
|
|
95
96
|
}
|
|
96
97
|
const { task } = parsed;
|
|
97
98
|
let { done } = parsed;
|
|
98
|
-
console.log(`[Goal] 目标:${task}`);
|
|
99
|
-
console.log(`[Goal] 完成条件:${done ?? '待规划阶段补全'}`);
|
|
100
|
-
console.log('\n[Goal] 开始制定计划...\n');
|
|
99
|
+
console.log(style.label(`[Goal] 目标:${task}`));
|
|
100
|
+
console.log(style.info(`[Goal] 完成条件:${done ?? '待规划阶段补全'}`));
|
|
101
|
+
console.log(style.label('\n[Goal] 开始制定计划...\n'));
|
|
101
102
|
const rawPlan = done
|
|
102
103
|
? await buildPlan(buildGoalUserContent(task, done), ctx)
|
|
103
104
|
: await buildPlan(task, ctx, GOAL_PLANNING_SYSTEM_PROMPT);
|
|
104
105
|
if (!rawPlan) {
|
|
105
|
-
console.log('\n[Goal] 未能生成计划。');
|
|
106
|
+
console.log(style.warn('\n[Goal] 未能生成计划。'));
|
|
106
107
|
return;
|
|
107
108
|
}
|
|
108
109
|
let plan = rawPlan;
|
|
@@ -112,18 +113,18 @@ export async function handleGoal(arg, ctx) {
|
|
|
112
113
|
plan = parsedPlan.plan;
|
|
113
114
|
}
|
|
114
115
|
const goalContent = buildGoalUserContent(task, done);
|
|
115
|
-
console.log('\n\n[Goal] 完成条件:');
|
|
116
|
+
console.log(style.label('\n\n[Goal] 完成条件:'));
|
|
116
117
|
console.log(done);
|
|
117
|
-
console.log('\n[Goal] 计划如下:');
|
|
118
|
+
console.log(style.label('\n[Goal] 计划如下:'));
|
|
118
119
|
console.log(plan);
|
|
119
120
|
const answer = (await ctx.ask('\n是否按此计划执行?(y/N) '))
|
|
120
121
|
.trim()
|
|
121
122
|
.toLowerCase();
|
|
122
123
|
if (answer !== 'y' && answer !== 'yes') {
|
|
123
|
-
console.log('[Goal] 已取消执行。');
|
|
124
|
+
console.log(style.warn('[Goal] 已取消执行。'));
|
|
124
125
|
return;
|
|
125
126
|
}
|
|
126
|
-
console.log('\n[Goal] 开始执行计划...');
|
|
127
|
+
console.log(style.label('\n[Goal] 开始执行计划...'));
|
|
127
128
|
const tracker = new PlanTracker(plan);
|
|
128
129
|
if (tracker.hasSteps()) {
|
|
129
130
|
tracker.printState();
|
|
@@ -141,11 +142,11 @@ export async function handleGoal(arg, ctx) {
|
|
|
141
142
|
if (tracker.hasSteps()) {
|
|
142
143
|
tracker.printCurrent();
|
|
143
144
|
}
|
|
144
|
-
console.log(`\n[Goal] 调用 ${tc.name}`);
|
|
145
|
+
console.log(style.tool(`\n[Goal] 调用 ${tc.name}`));
|
|
145
146
|
console.log(formatToolCall(tc));
|
|
146
147
|
},
|
|
147
148
|
onToolResult: (tc, result) => {
|
|
148
|
-
console.log(`\n[Goal] ${tc.name} 结果:`);
|
|
149
|
+
console.log(style.muted(`\n[Goal] ${tc.name} 结果:`));
|
|
149
150
|
console.log(truncateResult(result));
|
|
150
151
|
if (tracker.hasSteps()) {
|
|
151
152
|
tracker.advance();
|
|
@@ -154,6 +155,6 @@ export async function handleGoal(arg, ctx) {
|
|
|
154
155
|
},
|
|
155
156
|
});
|
|
156
157
|
await evaluateGoal(task, done, ctx);
|
|
157
|
-
console.log('\n[Goal] 目标执行结束');
|
|
158
|
+
console.log(style.success('\n[Goal] 目标执行结束'));
|
|
158
159
|
}
|
|
159
160
|
//# sourceMappingURL=goal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goal.js","sourceRoot":"","sources":["../../../../src/cli/slash/system/goal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"goal.js","sourceRoot":"","sources":["../../../../src/cli/slash/system/goal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 终端输出统一样式。
|
|
3
|
+
*
|
|
4
|
+
* 集中管理 ANSI 颜色与语义样式,避免在各处散落转义码。
|
|
5
|
+
* 默认遵循 NO_COLOR / FORCE_COLOR,非 TTY 环境不输出颜色。
|
|
6
|
+
*/
|
|
7
|
+
const ANSI = {
|
|
8
|
+
reset: '\u001b[0m',
|
|
9
|
+
bold: '\u001b[1m',
|
|
10
|
+
dim: '\u001b[2m',
|
|
11
|
+
black: '\u001b[30m',
|
|
12
|
+
red: '\u001b[31m',
|
|
13
|
+
green: '\u001b[32m',
|
|
14
|
+
yellow: '\u001b[33m',
|
|
15
|
+
blue: '\u001b[34m',
|
|
16
|
+
cyan: '\u001b[36m',
|
|
17
|
+
gray: '\u001b[90m',
|
|
18
|
+
inverse: '\u001b[7m',
|
|
19
|
+
bgCyan: '\u001b[46m',
|
|
20
|
+
};
|
|
21
|
+
/** 判断当前输出是否应该上色。 */
|
|
22
|
+
export function isColorEnabled() {
|
|
23
|
+
if (process.env.NO_COLOR)
|
|
24
|
+
return false;
|
|
25
|
+
if (process.env.FORCE_COLOR && process.env.FORCE_COLOR !== '0') {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
return Boolean(process.stdout.isTTY);
|
|
29
|
+
}
|
|
30
|
+
/** 给文本包一个或多个 ANSI 样式;未启用颜色时原样返回。 */
|
|
31
|
+
export function stylize(text, ...styles) {
|
|
32
|
+
if (styles.length === 0 || !isColorEnabled())
|
|
33
|
+
return text;
|
|
34
|
+
const open = styles.map((s) => ANSI[s]).join('');
|
|
35
|
+
return `${open}${text}${ANSI.reset}`;
|
|
36
|
+
}
|
|
37
|
+
/** 语义化样式:业务代码优先用这些,而不是直接写颜色。 */
|
|
38
|
+
export const style = {
|
|
39
|
+
bold: (text) => stylize(text, 'bold'),
|
|
40
|
+
dim: (text) => stylize(text, 'dim'),
|
|
41
|
+
inverse: (text) => stylize(text, 'inverse'),
|
|
42
|
+
selected: (text) => stylize(text, 'bold', 'black', 'bgCyan'),
|
|
43
|
+
label: (text) => stylize(text, 'bold', 'cyan'),
|
|
44
|
+
info: (text) => stylize(text, 'cyan'),
|
|
45
|
+
success: (text) => stylize(text, 'green'),
|
|
46
|
+
warn: (text) => stylize(text, 'yellow'),
|
|
47
|
+
error: (text) => stylize(text, 'bold', 'red'),
|
|
48
|
+
muted: (text) => stylize(text, 'gray'),
|
|
49
|
+
tool: (text) => stylize(text, 'blue'),
|
|
50
|
+
step: (text) => stylize(text, 'yellow'),
|
|
51
|
+
done: (text) => stylize(text, 'green'),
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.js","sourceRoot":"","sources":["../../src/cli/style.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,IAAI,GAAG;IACT,KAAK,EAAE,WAAW;IAClB,IAAI,EAAE,WAAW;IACjB,GAAG,EAAE,WAAW;IAChB,KAAK,EAAE,YAAY;IACnB,GAAG,EAAE,YAAY;IACjB,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE,YAAY;CACd,CAAC;AAIX,oBAAoB;AACpB,MAAM,UAAU,cAAc;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,GAAG,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,GAAG,MAAmB;IACxD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO,IAAI,CAAC;IAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjD,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACzC,CAAC;AAED,gCAAgC;AAChC,MAAM,CAAC,MAAM,KAAK,GAAG;IACjB,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;IAC7C,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;IAC3C,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;IACnD,QAAQ,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;IACpE,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;IACtD,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;IACjD,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC/C,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;IACrD,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;IAC9C,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC/C,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;CACjD,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 项目记忆(Project Memory)—— 让 CCLI「懂这个项目」。
|
|
3
|
+
*
|
|
4
|
+
* 启动时自动读取项目根目录的记忆文件,把它追加进 system 提示,
|
|
5
|
+
* 这样每次会话都自带项目背景/约定,不用手动 @ 交代。
|
|
6
|
+
*
|
|
7
|
+
* 这是「记忆分层」的第一层:项目记忆。后续可再加全局记忆(~/.ccli/)、
|
|
8
|
+
* 子目录记忆、以及交互中用 # 动态写入。
|
|
9
|
+
*/
|
|
10
|
+
import { readFileSync } from 'node:fs';
|
|
11
|
+
import { resolve } from 'node:path';
|
|
12
|
+
/** 按优先级尝试的记忆文件名:命中第一个存在且非空的。 */
|
|
13
|
+
const MEMORY_FILES = ['CCLI.md', 'AGENTS.md'];
|
|
14
|
+
/** 记忆内容上限,避免超大文件把上下文撑爆。 */
|
|
15
|
+
const MAX_MEMORY_CHARS = 16_000;
|
|
16
|
+
/** 读取项目根的记忆文件(第一个存在且非空的),没有则返回 null。 */
|
|
17
|
+
export function loadProjectMemory(cwd = process.cwd()) {
|
|
18
|
+
for (const file of MEMORY_FILES) {
|
|
19
|
+
let raw;
|
|
20
|
+
try {
|
|
21
|
+
raw = readFileSync(resolve(cwd, file), 'utf8');
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
continue; // 不存在就试下一个
|
|
25
|
+
}
|
|
26
|
+
const trimmed = raw.trim();
|
|
27
|
+
if (!trimmed)
|
|
28
|
+
continue;
|
|
29
|
+
const content = trimmed.length > MAX_MEMORY_CHARS
|
|
30
|
+
? trimmed.slice(0, MAX_MEMORY_CHARS) + '\n…(记忆文件过长,已截断)'
|
|
31
|
+
: trimmed;
|
|
32
|
+
return { file, content };
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
/** 把项目记忆追加到 system 提示后面;无记忆则原样返回。 */
|
|
37
|
+
export function appendProjectMemory(systemPrompt, memory) {
|
|
38
|
+
if (!memory)
|
|
39
|
+
return systemPrompt;
|
|
40
|
+
return (`${systemPrompt}\n\n` +
|
|
41
|
+
`# 项目记忆(来自 ${memory.file})\n` +
|
|
42
|
+
`以下是当前项目的说明与约定,请在本次会话中遵循:\n\n` +
|
|
43
|
+
memory.content);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/config/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,gCAAgC;AAChC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAE9C,2BAA2B;AAC3B,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAShC,wCAAwC;AACxC,MAAM,UAAU,iBAAiB,CAC7B,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAC9B,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACD,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACL,SAAS,CAAC,WAAW;QACzB,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,MAAM,OAAO,GACT,OAAO,CAAC,MAAM,GAAG,gBAAgB;YAC7B,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,iBAAiB;YACxD,CAAC,CAAC,OAAO,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,mBAAmB,CAC/B,YAAoB,EACpB,MAA4B;IAE5B,IAAI,CAAC,MAAM;QAAE,OAAO,YAAY,CAAC;IACjC,OAAO,CACH,GAAG,YAAY,MAAM;QACrB,aAAa,MAAM,CAAC,IAAI,KAAK;QAC7B,8BAA8B;QAC9B,MAAM,CAAC,OAAO,CACjB,CAAC;AACN,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -15,8 +15,10 @@ import { parseArgs } from './cli/args/index.js';
|
|
|
15
15
|
import { join } from 'node:path';
|
|
16
16
|
import { NAME, VERSION } from './version.js';
|
|
17
17
|
import { startRepl } from './cli/repl/index.js';
|
|
18
|
+
import { style } from './cli/style.js';
|
|
18
19
|
import { printConfig, loadConfig, getRolePrompt, DEFAULT_SYSTEM_PROMPT, } from './config/config.js';
|
|
19
20
|
import { loadEnvFile } from './config/env.js';
|
|
21
|
+
import { loadProjectMemory, appendProjectMemory } from './config/memory.js';
|
|
20
22
|
import { createAIClient } from './agent/ai.js';
|
|
21
23
|
import { McpClientManager } from './agent/mcp.js';
|
|
22
24
|
import { runOnce } from './cli/run/index.js';
|
|
@@ -66,8 +68,8 @@ async function main() {
|
|
|
66
68
|
// argv 前两个是 node 路径和脚本路径,从第 3 个起才是用户输入
|
|
67
69
|
const args = parseArgs(process.argv.slice(2));
|
|
68
70
|
if (args.unknown.length > 0) {
|
|
69
|
-
console.error(`未知选项: ${args.unknown.join(', ')}`);
|
|
70
|
-
console.error(`运行 "ccli --help" 查看可用选项。`);
|
|
71
|
+
console.error(style.error(`未知选项: ${args.unknown.join(', ')}`));
|
|
72
|
+
console.error(style.muted(`运行 "ccli --help" 查看可用选项。`));
|
|
71
73
|
process.exit(1);
|
|
72
74
|
}
|
|
73
75
|
if (args.help) {
|
|
@@ -90,7 +92,7 @@ async function main() {
|
|
|
90
92
|
if (prompt) {
|
|
91
93
|
const result = loadConfig();
|
|
92
94
|
if (!result.ok) {
|
|
93
|
-
console.error(result.message);
|
|
95
|
+
console.error(style.error(result.message));
|
|
94
96
|
process.exit(1);
|
|
95
97
|
}
|
|
96
98
|
const { config } = result;
|
|
@@ -98,11 +100,11 @@ async function main() {
|
|
|
98
100
|
const rolePrompt = args.role
|
|
99
101
|
? getRolePrompt(args.role, config.roles)
|
|
100
102
|
: undefined;
|
|
101
|
-
const systemPrompt = rolePrompt ?? DEFAULT_SYSTEM_PROMPT;
|
|
103
|
+
const systemPrompt = appendProjectMemory(rolePrompt ?? DEFAULT_SYSTEM_PROMPT, loadProjectMemory(process.cwd()));
|
|
102
104
|
if (args.role &&
|
|
103
105
|
rolePrompt === undefined &&
|
|
104
106
|
args.role !== 'default') {
|
|
105
|
-
console.error(`未知角色:${args.role},使用默认角色。`);
|
|
107
|
+
console.error(style.warn(`未知角色:${args.role},使用默认角色。`));
|
|
106
108
|
}
|
|
107
109
|
// 连接 MCP server
|
|
108
110
|
const dotenv = loadEnvFile(join(process.cwd(), '.env'));
|
|
@@ -112,15 +114,15 @@ async function main() {
|
|
|
112
114
|
mcp = new McpClientManager(config.mcpServers, { name: NAME, version: VERSION }, envLookup);
|
|
113
115
|
const errors = await mcp.connectAll();
|
|
114
116
|
if (errors.length > 0) {
|
|
115
|
-
console.error('部分 MCP server 连接失败:');
|
|
117
|
+
console.error(style.error('部分 MCP server 连接失败:'));
|
|
116
118
|
for (const e of errors)
|
|
117
|
-
console.error(` ${e}`);
|
|
119
|
+
console.error(style.muted(` ${e}`));
|
|
118
120
|
}
|
|
119
121
|
}
|
|
120
122
|
const confirm = args.yes
|
|
121
123
|
? () => Promise.resolve(true)
|
|
122
124
|
: async (preview) => {
|
|
123
|
-
console.error(`\n[非交互式模式] 需要确认以下操作,请添加 --yes 自动批准:\n${preview}`);
|
|
125
|
+
console.error(style.warn(`\n[非交互式模式] 需要确认以下操作,请添加 --yes 自动批准:\n${preview}`));
|
|
124
126
|
return false;
|
|
125
127
|
};
|
|
126
128
|
try {
|
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;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EACH,WAAW,EACX,UAAU,EACV,aAAa,EACb,qBAAqB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,IAAI,GAAG,GAAG,IAAI,KAAK,OAAO;;;;;;;;;;;;;;;;;;;;;;CAsB/B,CAAC;AAEF,4CAA4C;AAC5C,KAAK,UAAU,SAAS;IACpB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,0CAA0C;AAC1C,SAAS,WAAW,CAAC,cAAsB,EAAE,SAAiB;IAC1D,IAAI,cAAc,IAAI,SAAS,EAAE,CAAC;QAC9B,OAAO,GAAG,cAAc,YAAY,SAAS,EAAE,CAAC;IACpD,CAAC;IACD,OAAO,cAAc,IAAI,SAAS,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,IAAI;IACf,uCAAuC;IACvC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|