chatccc 0.2.230 → 0.2.232
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 +1 -1
- package/package.json +1 -1
- package/src/__tests__/agent-activity.test.ts +10 -0
- package/src/__tests__/builtin-chat-session.test.ts +449 -329
- package/src/__tests__/builtin-context.test.ts +158 -2
- package/src/__tests__/builtin-file-tools.test.ts +240 -240
- package/src/__tests__/builtin-session-search.test.ts +228 -0
- package/src/__tests__/builtin-skills.test.ts +284 -284
- package/src/__tests__/ccc-adapter.test.ts +34 -0
- package/src/__tests__/progress-reducer.test.ts +11 -0
- package/src/__tests__/restart.test.ts +132 -132
- package/src/__tests__/session.test.ts +199 -204
- package/src/__tests__/terminal-error.test.ts +54 -54
- package/src/adapters/adapter-interface.ts +15 -9
- package/src/adapters/ccc-adapter.ts +11 -1
- package/src/agent-activity.ts +5 -0
- package/src/builtin/cli.ts +15 -2
- package/src/builtin/context.ts +465 -333
- package/src/builtin/file-tools.ts +34 -0
- package/src/builtin/index.ts +87 -22
- package/src/builtin/progress/reducer.ts +5 -0
- package/src/builtin/session-search.ts +363 -0
- package/src/builtin/skills.ts +205 -205
- package/src/orchestrator.ts +2494 -2494
- package/src/progress/reducer.ts +5 -0
- package/src/session.ts +201 -200
- package/src/stream-state.ts +21 -21
- package/src/terminal-error.ts +129 -129
|
@@ -17,6 +17,7 @@ export interface CccAdapterOptions extends ChatSessionConfig {
|
|
|
17
17
|
contextDir?: string;
|
|
18
18
|
compactAtTokens?: number;
|
|
19
19
|
keepRecentMessages?: number;
|
|
20
|
+
compactionTimeoutMs?: number;
|
|
20
21
|
maxSteps?: number;
|
|
21
22
|
}
|
|
22
23
|
|
|
@@ -32,6 +33,7 @@ function toChatSessionOptions(
|
|
|
32
33
|
contextDir: options.contextDir,
|
|
33
34
|
compactAtTokens: options.compactAtTokens,
|
|
34
35
|
keepRecentMessages: options.keepRecentMessages,
|
|
36
|
+
compactionTimeoutMs: options.compactionTimeoutMs,
|
|
35
37
|
maxSteps: options.maxSteps,
|
|
36
38
|
// chatccc 无终端可交互,且对齐 claude/codex 适配器的 bypass 模式:
|
|
37
39
|
// 高危命令不询问,全部放行(与独立 deepccc CLI 的 ask 模式不同)
|
|
@@ -75,7 +77,15 @@ export function createCccAdapter(options: CccAdapterOptions = {}): ToolAdapter {
|
|
|
75
77
|
);
|
|
76
78
|
|
|
77
79
|
for await (const event of session.chat(userText, signal)) {
|
|
78
|
-
if (event.type === "
|
|
80
|
+
if (event.type === "status") {
|
|
81
|
+
yield {
|
|
82
|
+
type: "assistant",
|
|
83
|
+
blocks: [{
|
|
84
|
+
type: "agent_status",
|
|
85
|
+
status: event.phase === "compacting" ? "compacting" : "responding",
|
|
86
|
+
}],
|
|
87
|
+
};
|
|
88
|
+
} else if (event.type === "text") {
|
|
79
89
|
yield {
|
|
80
90
|
type: "assistant",
|
|
81
91
|
blocks: [{ type: "text", text: event.text }],
|
package/src/agent-activity.ts
CHANGED
|
@@ -105,6 +105,11 @@ export function updateAgentActivity(
|
|
|
105
105
|
if (tracker.activeTools.size > 0) return false;
|
|
106
106
|
|
|
107
107
|
switch (block.type) {
|
|
108
|
+
case "agent_status":
|
|
109
|
+
return setActivity(tracker, {
|
|
110
|
+
kind: block.status === "compacting" ? "compacting" : "responding",
|
|
111
|
+
startedAt: now,
|
|
112
|
+
});
|
|
108
113
|
case "thinking":
|
|
109
114
|
case "redacted_thinking":
|
|
110
115
|
return setActivity(tracker, { kind: "thinking", startedAt: now });
|
package/src/builtin/cli.ts
CHANGED
|
@@ -216,7 +216,12 @@ function writeJsonLine(event: JsonLine): void {
|
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
function streamJsonEvent(event: ChatEvent): void {
|
|
219
|
-
if (event.type === "
|
|
219
|
+
if (event.type === "status") {
|
|
220
|
+
writeJsonLine({
|
|
221
|
+
type: "status",
|
|
222
|
+
phase: event.phase,
|
|
223
|
+
});
|
|
224
|
+
} else if (event.type === "text") {
|
|
220
225
|
writeJsonLine({
|
|
221
226
|
type: "text_delta",
|
|
222
227
|
text: event.text,
|
|
@@ -459,6 +464,12 @@ async function runRepl(args: ParsedArgs): Promise<void> {
|
|
|
459
464
|
return;
|
|
460
465
|
}
|
|
461
466
|
|
|
467
|
+
if (input === "/sessions") {
|
|
468
|
+
printSessions();
|
|
469
|
+
rl.prompt();
|
|
470
|
+
return;
|
|
471
|
+
}
|
|
472
|
+
|
|
462
473
|
currentAbort = new AbortController();
|
|
463
474
|
const signal = currentAbort.signal;
|
|
464
475
|
|
|
@@ -484,11 +495,13 @@ async function runRepl(args: ParsedArgs): Promise<void> {
|
|
|
484
495
|
for await (const event of session.chat(input, signal)) {
|
|
485
496
|
if (renderer && view) {
|
|
486
497
|
view = reduceProgress(view, event);
|
|
487
|
-
if (event.type === "text" || event.type === "compact") {
|
|
498
|
+
if (event.type === "text" || event.type === "compact" || event.type === "status") {
|
|
488
499
|
renderer.render(view);
|
|
489
500
|
} else {
|
|
490
501
|
renderer.flush();
|
|
491
502
|
}
|
|
503
|
+
} else if (event.type === "status") {
|
|
504
|
+
console.log(`${C.dim}[${event.phase === "compacting" ? "compacting context" : "generating reply"}]${C.reset}`);
|
|
492
505
|
} else if (event.type === "text") {
|
|
493
506
|
const newText = event.accumulated.slice(lastAccumulated.length);
|
|
494
507
|
process.stdout.write(newText);
|