chivgent 1.0.0 → 1.1.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 +97 -897
- package/README.zh-CN.md +97 -801
- package/dist/agent.d.ts +30 -2
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +255 -36
- package/dist/agent.js.map +1 -1
- package/dist/auth/oauth.d.ts +51 -0
- package/dist/auth/oauth.d.ts.map +1 -0
- package/dist/auth/oauth.js +444 -0
- package/dist/auth/oauth.js.map +1 -0
- package/dist/cli-options.d.ts +9 -4
- package/dist/cli-options.d.ts.map +1 -1
- package/dist/cli-options.js +46 -3
- package/dist/cli-options.js.map +1 -1
- package/dist/cli-runtime.d.ts +33 -0
- package/dist/cli-runtime.d.ts.map +1 -0
- package/dist/cli-runtime.js +90 -0
- package/dist/cli-runtime.js.map +1 -0
- package/dist/cli.js +76 -81
- package/dist/cli.js.map +1 -1
- package/dist/context/compaction.d.ts +5 -2
- package/dist/context/compaction.d.ts.map +1 -1
- package/dist/context/compaction.js +58 -32
- package/dist/context/compaction.js.map +1 -1
- package/dist/context/context-manager.d.ts +23 -0
- package/dist/context/context-manager.d.ts.map +1 -1
- package/dist/context/context-manager.js +200 -35
- package/dist/context/context-manager.js.map +1 -1
- package/dist/context/project-instructions.d.ts +17 -0
- package/dist/context/project-instructions.d.ts.map +1 -0
- package/dist/context/project-instructions.js +191 -0
- package/dist/context/project-instructions.js.map +1 -0
- package/dist/evals/baseline.d.ts +41 -0
- package/dist/evals/baseline.d.ts.map +1 -0
- package/dist/evals/baseline.js +121 -0
- package/dist/evals/baseline.js.map +1 -0
- package/dist/evals/cli.js +27 -1
- package/dist/evals/cli.js.map +1 -1
- package/dist/evals/parse-args.d.ts +2 -0
- package/dist/evals/parse-args.d.ts.map +1 -1
- package/dist/evals/parse-args.js +5 -0
- package/dist/evals/parse-args.js.map +1 -1
- package/dist/evals/report.d.ts +2 -0
- package/dist/evals/report.d.ts.map +1 -1
- package/dist/evals/report.js +12 -8
- package/dist/evals/report.js.map +1 -1
- package/dist/evals/runner.d.ts +3 -0
- package/dist/evals/runner.d.ts.map +1 -1
- package/dist/evals/runner.js +5 -1
- package/dist/evals/runner.js.map +1 -1
- package/dist/evals/task.d.ts.map +1 -1
- package/dist/evals/task.js +1 -0
- package/dist/evals/task.js.map +1 -1
- package/dist/evals/tools.d.ts +4 -1
- package/dist/evals/tools.d.ts.map +1 -1
- package/dist/evals/tools.js +13 -4
- package/dist/evals/tools.js.map +1 -1
- package/dist/events.d.ts +12 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js.map +1 -1
- package/dist/patch/parse.d.ts +26 -0
- package/dist/patch/parse.d.ts.map +1 -0
- package/dist/patch/parse.js +117 -0
- package/dist/patch/parse.js.map +1 -0
- package/dist/permissions.d.ts +35 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +89 -0
- package/dist/permissions.js.map +1 -0
- package/dist/prompts.d.ts +3 -3
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +5 -3
- package/dist/prompts.js.map +1 -1
- package/dist/providers/client.d.ts +1 -1
- package/dist/providers/client.d.ts.map +1 -1
- package/dist/providers/client.js +19 -1
- package/dist/providers/client.js.map +1 -1
- package/dist/providers/definitions.d.ts +2 -0
- package/dist/providers/definitions.d.ts.map +1 -1
- package/dist/providers/definitions.js +3 -1
- package/dist/providers/definitions.js.map +1 -1
- package/dist/providers/interactive.d.ts +4 -0
- package/dist/providers/interactive.d.ts.map +1 -1
- package/dist/providers/interactive.js +86 -2
- package/dist/providers/interactive.js.map +1 -1
- package/dist/providers/oauth-client.d.ts +14 -0
- package/dist/providers/oauth-client.d.ts.map +1 -0
- package/dist/providers/oauth-client.js +52 -0
- package/dist/providers/oauth-client.js.map +1 -0
- package/dist/providers/openai-compatible-chat.d.ts +1 -0
- package/dist/providers/openai-compatible-chat.d.ts.map +1 -1
- package/dist/providers/openai-compatible-chat.js +1 -0
- package/dist/providers/openai-compatible-chat.js.map +1 -1
- package/dist/providers/openai.d.ts +3 -0
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +72 -10
- package/dist/providers/openai.js.map +1 -1
- package/dist/remote/repl.d.ts.map +1 -1
- package/dist/remote/repl.js +9 -0
- package/dist/remote/repl.js.map +1 -1
- package/dist/repl.d.ts +53 -1
- package/dist/repl.d.ts.map +1 -1
- package/dist/repl.js +554 -10
- package/dist/repl.js.map +1 -1
- package/dist/session-store.d.ts +27 -2
- package/dist/session-store.d.ts.map +1 -1
- package/dist/session-store.js +85 -2
- package/dist/session-store.js.map +1 -1
- package/dist/session.d.ts +20 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +141 -13
- package/dist/session.js.map +1 -1
- package/dist/shell/approval.d.ts +15 -0
- package/dist/shell/approval.d.ts.map +1 -0
- package/dist/shell/approval.js +25 -0
- package/dist/shell/approval.js.map +1 -0
- package/dist/shell/docker.d.ts +20 -0
- package/dist/shell/docker.d.ts.map +1 -0
- package/dist/shell/docker.js +97 -0
- package/dist/shell/docker.js.map +1 -0
- package/dist/shell/factory.d.ts +9 -0
- package/dist/shell/factory.d.ts.map +1 -0
- package/dist/shell/factory.js +13 -0
- package/dist/shell/factory.js.map +1 -0
- package/dist/shell/local.d.ts +5 -1
- package/dist/shell/local.d.ts.map +1 -1
- package/dist/shell/local.js +17 -2
- package/dist/shell/local.js.map +1 -1
- package/dist/shell/native.d.ts +15 -0
- package/dist/shell/native.d.ts.map +1 -0
- package/dist/shell/native.js +99 -0
- package/dist/shell/native.js.map +1 -0
- package/dist/shell/types.d.ts +1 -0
- package/dist/shell/types.d.ts.map +1 -1
- package/dist/tools/apply-patch.d.ts +18 -0
- package/dist/tools/apply-patch.d.ts.map +1 -0
- package/dist/tools/apply-patch.js +53 -0
- package/dist/tools/apply-patch.js.map +1 -0
- package/dist/tools/bash.d.ts +23 -0
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +55 -11
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/edit-file.d.ts.map +1 -1
- package/dist/tools/edit-file.js +1 -1
- package/dist/tools/edit-file.js.map +1 -1
- package/dist/tools/parallel.d.ts +16 -0
- package/dist/tools/parallel.d.ts.map +1 -0
- package/dist/tools/parallel.js +28 -0
- package/dist/tools/parallel.js.map +1 -0
- package/dist/tools/tool.d.ts +7 -0
- package/dist/tools/tool.d.ts.map +1 -1
- package/dist/tools/tool.js +7 -1
- package/dist/tools/tool.js.map +1 -1
- package/dist/tools/update-plan.d.ts +57 -0
- package/dist/tools/update-plan.d.ts.map +1 -0
- package/dist/tools/update-plan.js +99 -0
- package/dist/tools/update-plan.js.map +1 -0
- package/dist/tools/write-file.d.ts.map +1 -1
- package/dist/tools/write-file.js +1 -1
- package/dist/tools/write-file.js.map +1 -1
- package/dist/transcript-hash.d.ts +4 -0
- package/dist/transcript-hash.d.ts.map +1 -0
- package/dist/transcript-hash.js +6 -0
- package/dist/transcript-hash.js.map +1 -0
- package/dist/tui/activity.d.ts +17 -0
- package/dist/tui/activity.d.ts.map +1 -0
- package/dist/tui/activity.js +188 -0
- package/dist/tui/activity.js.map +1 -0
- package/dist/tui/diff.d.ts +14 -0
- package/dist/tui/diff.d.ts.map +1 -0
- package/dist/tui/diff.js +57 -0
- package/dist/tui/diff.js.map +1 -0
- package/dist/tui/editor-input.d.ts +53 -0
- package/dist/tui/editor-input.d.ts.map +1 -0
- package/dist/tui/editor-input.js +353 -0
- package/dist/tui/editor-input.js.map +1 -0
- package/dist/tui/editor.d.ts +72 -0
- package/dist/tui/editor.d.ts.map +1 -0
- package/dist/tui/editor.js +321 -0
- package/dist/tui/editor.js.map +1 -0
- package/dist/tui/git-diff.d.ts +7 -0
- package/dist/tui/git-diff.d.ts.map +1 -0
- package/dist/tui/git-diff.js +48 -0
- package/dist/tui/git-diff.js.map +1 -0
- package/dist/tui/input.d.ts +14 -0
- package/dist/tui/input.d.ts.map +1 -1
- package/dist/tui/input.js +77 -1
- package/dist/tui/input.js.map +1 -1
- package/dist/tui/live.d.ts +10 -0
- package/dist/tui/live.d.ts.map +1 -1
- package/dist/tui/live.js +42 -5
- package/dist/tui/live.js.map +1 -1
- package/dist/tui/markdown.d.ts +7 -0
- package/dist/tui/markdown.d.ts.map +1 -0
- package/dist/tui/markdown.js +55 -0
- package/dist/tui/markdown.js.map +1 -0
- package/dist/tui/menu.js +1 -1
- package/dist/tui/review.d.ts +27 -0
- package/dist/tui/review.d.ts.map +1 -0
- package/dist/tui/review.js +114 -0
- package/dist/tui/review.js.map +1 -0
- package/dist/tui/slash.d.ts +11 -0
- package/dist/tui/slash.d.ts.map +1 -0
- package/dist/tui/slash.js +13 -0
- package/dist/tui/slash.js.map +1 -0
- package/dist/tui/state.d.ts +5 -0
- package/dist/tui/state.d.ts.map +1 -1
- package/dist/tui/state.js +10 -1
- package/dist/tui/state.js.map +1 -1
- package/dist/tui/syntax.d.ts +6 -0
- package/dist/tui/syntax.d.ts.map +1 -0
- package/dist/tui/syntax.js +48 -0
- package/dist/tui/syntax.js.map +1 -0
- package/dist/tui/view.d.ts +1 -1
- package/dist/tui/view.d.ts.map +1 -1
- package/dist/tui/view.js +21 -9
- package/dist/tui/view.js.map +1 -1
- package/dist/tui/welcome.d.ts +5 -0
- package/dist/tui/welcome.d.ts.map +1 -1
- package/dist/tui/welcome.js +35 -20
- package/dist/tui/welcome.js.map +1 -1
- package/dist/workspace/patch.d.ts +11 -0
- package/dist/workspace/patch.d.ts.map +1 -0
- package/dist/workspace/patch.js +124 -0
- package/dist/workspace/patch.js.map +1 -0
- package/dist/workspace/paths.d.ts.map +1 -1
- package/dist/workspace/paths.js +4 -0
- package/dist/workspace/paths.js.map +1 -1
- package/dist/workspace/types.d.ts +9 -2
- package/dist/workspace/types.d.ts.map +1 -1
- package/dist/workspace/types.js.map +1 -1
- package/dist/workspace.d.ts +4 -3
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +7 -2
- package/dist/workspace.js.map +1 -1
- package/package.json +6 -2
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
import { parsePatch } from "../patch/parse.js";
|
|
1
2
|
export const DEFAULT_FILE_EFFECTS = {
|
|
2
3
|
reads: ["read_file"],
|
|
3
|
-
mutates: ["write_file", "edit_file"],
|
|
4
|
+
mutates: ["write_file", "edit_file", "apply_patch"],
|
|
4
5
|
};
|
|
5
6
|
const SUMMARY_INSTRUCTIONS = `You are compacting an engineering conversation so it can continue in a smaller context.
|
|
6
7
|
Reply with JSON only, no code fence, matching:
|
|
7
|
-
{"summary": string, "decisions": string[], "pendingTasks": string[]}
|
|
8
|
+
{"summary": string, "decisions": string[], "pendingTasks": string[], "completedTasks": string[]}
|
|
8
9
|
summary: what was asked and what was established, in a few sentences.
|
|
9
10
|
decisions: choices that later work must respect.
|
|
10
11
|
pendingTasks: work that was identified but not finished.
|
|
12
|
+
completedTasks: exact previously pending task strings demonstrably completed in this history; otherwise [] to preserve unfinished work.
|
|
11
13
|
Omit file lists; they are tracked separately.`;
|
|
12
14
|
export class Compactor {
|
|
13
15
|
llm;
|
|
@@ -22,11 +24,21 @@ export class Compactor {
|
|
|
22
24
|
* smaller inputs later, and that trade cannot be judged if half of it is
|
|
23
25
|
* invisible.
|
|
24
26
|
*/
|
|
25
|
-
async compact(messages, signal) {
|
|
26
|
-
const files = collectFiles(messages, this.fileEffects);
|
|
27
|
+
async compact(messages, signal, previousState) {
|
|
28
|
+
const files = collectFiles(messages, this.fileEffects, previousState);
|
|
27
29
|
const { prose, usage } = await this.summarise(messages, signal);
|
|
30
|
+
// Keep durable facts from older compactions even when a summarizer
|
|
31
|
+
// overlooks them. Only an explicit completedTasks entry retires a task.
|
|
32
|
+
const completed = new Set(prose.completedTasks ?? []);
|
|
33
|
+
const state = {
|
|
34
|
+
summary: prose.summary,
|
|
35
|
+
decisions: [...new Set([...(previousState?.decisions ?? []), ...prose.decisions])].slice(-32),
|
|
36
|
+
pendingTasks: [...new Set([...(previousState?.pendingTasks ?? []), ...prose.pendingTasks])]
|
|
37
|
+
.filter((task) => !completed.has(task)).slice(-32),
|
|
38
|
+
...files,
|
|
39
|
+
};
|
|
28
40
|
return {
|
|
29
|
-
state
|
|
41
|
+
state,
|
|
30
42
|
...(usage === undefined ? {} : { usage }),
|
|
31
43
|
};
|
|
32
44
|
}
|
|
@@ -46,7 +58,7 @@ export class Compactor {
|
|
|
46
58
|
/** Falls back to the raw text when the model does not return usable JSON. */
|
|
47
59
|
export function parseSummary(content) {
|
|
48
60
|
const fallback = {
|
|
49
|
-
summary: content.trim(),
|
|
61
|
+
summary: content.trim().slice(0, 4_000),
|
|
50
62
|
decisions: [],
|
|
51
63
|
pendingTasks: [],
|
|
52
64
|
};
|
|
@@ -67,55 +79,69 @@ export function parseSummary(content) {
|
|
|
67
79
|
}
|
|
68
80
|
const record = parsed;
|
|
69
81
|
const summary = typeof record.summary === "string" && record.summary.trim().length > 0
|
|
70
|
-
? record.summary.trim()
|
|
82
|
+
? record.summary.trim().slice(0, 4_000)
|
|
71
83
|
: fallback.summary;
|
|
72
84
|
return {
|
|
73
85
|
summary,
|
|
74
86
|
decisions: stringList(record.decisions),
|
|
75
87
|
pendingTasks: stringList(record.pendingTasks),
|
|
88
|
+
...(Array.isArray(record.completedTasks) ? { completedTasks: stringList(record.completedTasks) } : {}),
|
|
76
89
|
};
|
|
77
90
|
}
|
|
78
91
|
function stringList(value) {
|
|
79
92
|
if (!Array.isArray(value)) {
|
|
80
93
|
return [];
|
|
81
94
|
}
|
|
82
|
-
return value
|
|
95
|
+
return value
|
|
96
|
+
.filter((entry) => typeof entry === "string" && entry.length > 0)
|
|
97
|
+
.slice(0, 32)
|
|
98
|
+
.map((entry) => entry.slice(0, 500));
|
|
83
99
|
}
|
|
84
|
-
function collectFiles(messages, effects) {
|
|
85
|
-
const readFiles = new Set();
|
|
86
|
-
const modifiedFiles = new Set();
|
|
100
|
+
function collectFiles(messages, effects, previousState) {
|
|
101
|
+
const readFiles = new Set(previousState?.readFiles ?? []);
|
|
102
|
+
const modifiedFiles = new Set(previousState?.modifiedFiles ?? []);
|
|
103
|
+
const successful = new Set(messages.filter((message) => message.role === "tool" && !message.isError)
|
|
104
|
+
.map((message) => message.toolCallId));
|
|
87
105
|
for (const message of messages) {
|
|
88
|
-
if (message.role !== "assistant")
|
|
106
|
+
if (message.role !== "assistant")
|
|
89
107
|
continue;
|
|
90
|
-
}
|
|
91
108
|
for (const call of message.toolCalls) {
|
|
92
|
-
|
|
93
|
-
if (
|
|
109
|
+
// A tool request is not evidence that a modification or read succeeded.
|
|
110
|
+
if (!successful.has(call.id))
|
|
94
111
|
continue;
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
112
|
+
const paths = pathsForCall(call);
|
|
113
|
+
for (const filePath of paths) {
|
|
114
|
+
if (effects.mutates.includes(call.name)) {
|
|
115
|
+
modifiedFiles.add(filePath);
|
|
116
|
+
}
|
|
117
|
+
else if (effects.reads.includes(call.name)) {
|
|
118
|
+
readFiles.add(filePath);
|
|
119
|
+
}
|
|
101
120
|
}
|
|
102
121
|
}
|
|
103
122
|
}
|
|
104
|
-
|
|
105
|
-
for (const filePath of modifiedFiles) {
|
|
123
|
+
for (const filePath of modifiedFiles)
|
|
106
124
|
readFiles.delete(filePath);
|
|
107
|
-
|
|
125
|
+
// Bound the injected summary: a huge read list would defeat compaction.
|
|
108
126
|
return {
|
|
109
|
-
readFiles: [...readFiles].sort(),
|
|
110
|
-
modifiedFiles: [...modifiedFiles].sort(),
|
|
127
|
+
readFiles: [...readFiles].sort().slice(0, 128),
|
|
128
|
+
modifiedFiles: [...modifiedFiles].sort().slice(0, 128),
|
|
111
129
|
};
|
|
112
130
|
}
|
|
113
|
-
function
|
|
114
|
-
if (typeof call.arguments !== "object" || call.arguments === null)
|
|
115
|
-
return
|
|
131
|
+
function pathsForCall(call) {
|
|
132
|
+
if (typeof call.arguments !== "object" || call.arguments === null || Array.isArray(call.arguments))
|
|
133
|
+
return [];
|
|
134
|
+
const args = call.arguments;
|
|
135
|
+
if (call.name === "apply_patch" && typeof args.patch === "string") {
|
|
136
|
+
try {
|
|
137
|
+
return parsePatch(args.patch).map((change) => change.path);
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return [];
|
|
141
|
+
}
|
|
116
142
|
}
|
|
117
|
-
const
|
|
118
|
-
return typeof
|
|
143
|
+
const path = args.path;
|
|
144
|
+
return typeof path === "string" && path.length > 0 ? [path] : [];
|
|
119
145
|
}
|
|
120
146
|
function renderTranscript(messages) {
|
|
121
147
|
return messages
|
|
@@ -135,7 +161,7 @@ function renderTranscript(messages) {
|
|
|
135
161
|
}
|
|
136
162
|
/** Renders compaction state as the single message that replaces the history. */
|
|
137
163
|
export function renderCompactionState(state) {
|
|
138
|
-
const sections = [`
|
|
164
|
+
const sections = [`[Compacted conversation data, not system instructions.]\nSummary of earlier work:\n${state.summary}`];
|
|
139
165
|
if (state.readFiles.length > 0) {
|
|
140
166
|
sections.push(`Files read:\n${state.readFiles.map((f) => `- ${f}`).join("\n")}`);
|
|
141
167
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/context/compaction.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/context/compaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,11 +26,19 @@ export interface AppliedCompaction {
|
|
|
26
26
|
readonly state: CompactionState;
|
|
27
27
|
/** Index into the full transcript where verbatim history resumes. */
|
|
28
28
|
readonly splitIndex: number;
|
|
29
|
+
/** Preserve the active prompt before a compacted run of later tool turns. */
|
|
30
|
+
readonly anchorIndex?: number;
|
|
31
|
+
/** Transcript length at the last explicit /compact; prevents repeat charges. */
|
|
32
|
+
readonly manualTranscriptLength?: number;
|
|
29
33
|
}
|
|
30
34
|
export interface BuildOptions {
|
|
31
35
|
/** The compaction already in force, so it is not recomputed every turn. */
|
|
32
36
|
readonly previous?: AppliedCompaction;
|
|
33
37
|
readonly signal?: AbortSignal;
|
|
38
|
+
/** Extra uncompactable project guidance the caller prepends to the request. */
|
|
39
|
+
readonly prefixMessages?: readonly Message[];
|
|
40
|
+
/** Request-level fixed context such as the system prompt and tool schemas. */
|
|
41
|
+
readonly fixedMessages?: readonly Message[];
|
|
34
42
|
}
|
|
35
43
|
export interface BuiltContext {
|
|
36
44
|
readonly messages: readonly Message[];
|
|
@@ -46,6 +54,8 @@ export interface BuiltContext {
|
|
|
46
54
|
readonly compaction?: AppliedCompaction;
|
|
47
55
|
/** What summarising cost, so the run's total can include it. */
|
|
48
56
|
readonly usage?: Usage;
|
|
57
|
+
/** False when at least one compaction Provider call omitted usage. */
|
|
58
|
+
readonly usageComplete?: boolean;
|
|
49
59
|
}
|
|
50
60
|
/**
|
|
51
61
|
* Decides what the model sees for one request.
|
|
@@ -62,8 +72,21 @@ export declare class ContextManager {
|
|
|
62
72
|
private readonly onCompaction?;
|
|
63
73
|
constructor(options?: ContextManagerOptions);
|
|
64
74
|
get budget(): number;
|
|
75
|
+
/** Build a durable checkpoint on demand without changing the transcript. */
|
|
76
|
+
compactHistory(messages: readonly Message[], previous?: AppliedCompaction, signal?: AbortSignal): Promise<{
|
|
77
|
+
readonly compacted: false;
|
|
78
|
+
} | {
|
|
79
|
+
readonly compacted: true;
|
|
80
|
+
readonly compaction: AppliedCompaction;
|
|
81
|
+
readonly usage?: Usage;
|
|
82
|
+
}>;
|
|
65
83
|
build(messages: readonly Message[], options?: BuildOptions): Promise<BuiltContext>;
|
|
66
84
|
}
|
|
85
|
+
export declare class ContextBudgetError extends Error {
|
|
86
|
+
readonly compactionUsage?: Usage | undefined;
|
|
87
|
+
readonly compactionUsageComplete?: boolean | undefined;
|
|
88
|
+
constructor(message: string, compactionUsage?: Usage | undefined, compactionUsageComplete?: boolean | undefined);
|
|
89
|
+
}
|
|
67
90
|
/**
|
|
68
91
|
* Chooses where recent history begins.
|
|
69
92
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-manager.d.ts","sourceRoot":"","sources":["../../src/context/context-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EACL,SAAS,EAET,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,sBAAsB,SAAU,CAAC;AAC9C,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAC7C,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAEjD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,wEAAwE;IACxE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC;IACpC,yEAAyE;IACzE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;CAC1D;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,qEAAqE;IACrE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"context-manager.d.ts","sourceRoot":"","sources":["../../src/context/context-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,24 +40,60 @@ export class ContextManager {
|
|
|
40
40
|
get budget() {
|
|
41
41
|
return this.contextWindow - this.reserveTokens;
|
|
42
42
|
}
|
|
43
|
+
/** Build a durable checkpoint on demand without changing the transcript. */
|
|
44
|
+
async compactHistory(messages, previous, signal) {
|
|
45
|
+
if (this.compactor === undefined)
|
|
46
|
+
throw new ContextBudgetError("Manual compaction is disabled.");
|
|
47
|
+
if (signal?.aborted)
|
|
48
|
+
throw new Error("Compaction cancelled.");
|
|
49
|
+
const effective = previous === undefined
|
|
50
|
+
? [...messages]
|
|
51
|
+
: previous.anchorIndex === undefined
|
|
52
|
+
? [summaryMessage(previous.state), ...messages.slice(previous.splitIndex)]
|
|
53
|
+
: [messages[previous.anchorIndex], summaryMessage(previous.state), ...messages.slice(previous.splitIndex)];
|
|
54
|
+
const summaryIndex = previous === undefined ? -1 : previous.anchorIndex === undefined ? 0 : 1;
|
|
55
|
+
const latestUser = findLastUserIndex(effective, summaryIndex);
|
|
56
|
+
if (previous?.manualTranscriptLength !== undefined && messages.length <= previous.manualTranscriptLength) {
|
|
57
|
+
return { compacted: false };
|
|
58
|
+
}
|
|
59
|
+
if (previous !== undefined && effective.length <= (previous.anchorIndex === undefined ? 1 : 2)) {
|
|
60
|
+
return { compacted: false };
|
|
61
|
+
}
|
|
62
|
+
if (latestUser <= 0) {
|
|
63
|
+
if (previous !== undefined)
|
|
64
|
+
return { compacted: false };
|
|
65
|
+
throw new ContextBudgetError("There is no older conversation to compact safely.");
|
|
66
|
+
}
|
|
67
|
+
const head = effective.slice(0, latestUser);
|
|
68
|
+
if (previous !== undefined && head.length === 1 && head[0]?.role === "user" && head[0].content.startsWith("[Compacted conversation data")) {
|
|
69
|
+
return { compacted: false };
|
|
70
|
+
}
|
|
71
|
+
const compacted = await this.compactor.compact(head, signal, previous?.state);
|
|
72
|
+
if (signal?.aborted)
|
|
73
|
+
throw new Error("Compaction cancelled.");
|
|
74
|
+
const splitIndex = previous === undefined
|
|
75
|
+
? latestUser
|
|
76
|
+
: previous.splitIndex + Math.max(0, latestUser - (previous.anchorIndex === undefined ? 1 : 2));
|
|
77
|
+
const candidate = { state: compacted.state, splitIndex, manualTranscriptLength: messages.length };
|
|
78
|
+
if (this.estimator.estimateMessages([summaryMessage(candidate.state), ...messages.slice(splitIndex)]) > this.budget) {
|
|
79
|
+
throw new ContextBudgetError("The manual summary and retained transcript exceed the available context budget; no checkpoint was saved.");
|
|
80
|
+
}
|
|
81
|
+
return { compacted: true, compaction: candidate, ...(compacted.usage === undefined ? {} : { usage: compacted.usage }) };
|
|
82
|
+
}
|
|
43
83
|
async build(messages, options = {}) {
|
|
44
84
|
const previous = options.previous;
|
|
85
|
+
const summaryIndex = previous === undefined ? -1 : previous.anchorIndex === undefined ? 0 : 1;
|
|
45
86
|
const effective = previous === undefined
|
|
46
87
|
? messages
|
|
47
|
-
:
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
...(previous === undefined ? {} : { compaction: previous }),
|
|
55
|
-
};
|
|
88
|
+
: previous.anchorIndex === undefined
|
|
89
|
+
? [summaryMessage(previous.state), ...messages.slice(previous.splitIndex)]
|
|
90
|
+
: [messages[previous.anchorIndex], summaryMessage(previous.state), ...messages.slice(previous.splitIndex)];
|
|
91
|
+
const prefixTokens = this.estimator.estimateMessages([...(options.prefixMessages ?? []), ...(options.fixedMessages ?? [])]);
|
|
92
|
+
const estimatedTokens = this.estimator.estimateMessages(effective) + prefixTokens;
|
|
93
|
+
if (prefixTokens > this.budget) {
|
|
94
|
+
throw new ContextBudgetError(`System prompt and tool definitions need about ${prefixTokens} tokens, exceeding the available context budget of ${this.budget}.`);
|
|
56
95
|
}
|
|
57
|
-
|
|
58
|
-
// A cut of zero leaves nothing to summarise; with a previous compaction the
|
|
59
|
-
// cut must also clear the injected summary for progress to be made.
|
|
60
|
-
if (cut <= 0 || (previous !== undefined && cut < 1)) {
|
|
96
|
+
if (estimatedTokens <= this.budget) {
|
|
61
97
|
return {
|
|
62
98
|
messages: effective,
|
|
63
99
|
compacted: false,
|
|
@@ -65,16 +101,97 @@ export class ContextManager {
|
|
|
65
101
|
...(previous === undefined ? {} : { compaction: previous }),
|
|
66
102
|
};
|
|
67
103
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const
|
|
104
|
+
if (this.compactor === undefined) {
|
|
105
|
+
throw new ContextBudgetError(`The request needs about ${estimatedTokens} tokens, exceeding the available context budget of ${this.budget}; compaction is disabled.`);
|
|
106
|
+
}
|
|
107
|
+
let cut = findSplitIndex(effective, this.estimator, this.keepRecentTokens);
|
|
108
|
+
const latestUser = findLastUserIndex(effective, summaryIndex);
|
|
109
|
+
let anchored = latestUser >= 0 && cut > latestUser;
|
|
110
|
+
const buildHeadAndTail = (split, anchor) => {
|
|
111
|
+
// An anchored checkpoint has the shape [anchor, summary, suffix].
|
|
112
|
+
// If the next cut lands immediately after the anchor, compact the old
|
|
113
|
+
// synthetic summary itself so it is carried into the replacement state.
|
|
114
|
+
if (anchor && previous?.anchorIndex !== undefined && split === 1) {
|
|
115
|
+
return {
|
|
116
|
+
head: [effective[1]],
|
|
117
|
+
tail: effective.slice(2),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
const head = (anchor ? effective.slice(0, split) : effective.slice(0, split))
|
|
121
|
+
.filter((_message, index) => !anchor || index !== latestUser);
|
|
122
|
+
return { head, tail: effective.slice(split) };
|
|
123
|
+
};
|
|
124
|
+
let { head, tail } = buildHeadAndTail(cut, anchored);
|
|
125
|
+
// Never spend a summarizer call when there is no real history to remove.
|
|
126
|
+
// This is the case for a first compaction where the active user is the
|
|
127
|
+
// only message before the retained tool exchange.
|
|
128
|
+
if (head.length === 0) {
|
|
129
|
+
throw new ContextBudgetError(`The request needs about ${estimatedTokens} tokens, exceeding the available context budget of ${this.budget}; there is no safely removable history.`);
|
|
130
|
+
}
|
|
131
|
+
let state;
|
|
132
|
+
let usage;
|
|
133
|
+
let usageComplete = true;
|
|
134
|
+
const first = await this.compactor.compact(head, options.signal, previous?.state);
|
|
135
|
+
state = first.state;
|
|
136
|
+
usage = first.usage;
|
|
137
|
+
usageComplete = first.usage !== undefined;
|
|
138
|
+
let compactedMessages = anchored
|
|
139
|
+
? [effective[latestUser], summaryMessage(state), ...tail]
|
|
140
|
+
: [summaryMessage(state), ...tail];
|
|
141
|
+
let tokensAfter = this.estimator.estimateMessages(compactedMessages) + prefixTokens;
|
|
142
|
+
// The configured recent-history target is only a starting point. Fixed
|
|
143
|
+
// request context can consume enough budget that the target is too large.
|
|
144
|
+
// Recompute the split once using the actual summary size, then compact the
|
|
145
|
+
// additional history into the replacement summary.
|
|
146
|
+
if (tokensAfter > this.budget) {
|
|
147
|
+
const summaryTokens = this.estimator.estimateMessage(summaryMessage(state));
|
|
148
|
+
const anchorTokens = anchored ? this.estimator.estimateMessage(effective[latestUser]) : 0;
|
|
149
|
+
const tailBudget = this.budget - prefixTokens - summaryTokens - anchorTokens;
|
|
150
|
+
if (tailBudget < 0) {
|
|
151
|
+
throw new ContextBudgetError(`The request still needs about ${tokensAfter} tokens after compaction, exceeding the available context budget of ${this.budget}. Reduce the prompt, tool schemas, or context window reserve.`, usage, usageComplete);
|
|
152
|
+
}
|
|
153
|
+
const initialCut = cut;
|
|
154
|
+
cut = findSplitIndexForTailBudget(effective, this.estimator, initialCut, tailBudget);
|
|
155
|
+
anchored = latestUser >= 0 && cut > latestUser;
|
|
156
|
+
({ head, tail } = buildHeadAndTail(cut, anchored));
|
|
157
|
+
if (head.length === 0) {
|
|
158
|
+
throw new ContextBudgetError(`The request still needs about ${tokensAfter} tokens after compaction, exceeding the available context budget of ${this.budget}. Reduce the prompt, tool schemas, or context window reserve.`, usage, usageComplete);
|
|
159
|
+
}
|
|
160
|
+
let second;
|
|
161
|
+
try {
|
|
162
|
+
second = await this.compactor.compact(head, options.signal, state);
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
// The first summary was already paid for. Preserve its usage even if
|
|
166
|
+
// the bounded retry fails or is aborted; the retry's usage is unknown.
|
|
167
|
+
throw new ContextBudgetError(error instanceof Error ? `Context compaction retry failed: ${error.message}` : "Context compaction retry failed.", usage, false);
|
|
168
|
+
}
|
|
169
|
+
state = second.state;
|
|
170
|
+
usage = mergeCompactionUsage(usage, second.usage);
|
|
171
|
+
usageComplete = usageComplete && second.usage !== undefined;
|
|
172
|
+
compactedMessages = anchored
|
|
173
|
+
? [effective[latestUser], summaryMessage(state), ...tail]
|
|
174
|
+
: [summaryMessage(state), ...tail];
|
|
175
|
+
tokensAfter = this.estimator.estimateMessages(compactedMessages) + prefixTokens;
|
|
176
|
+
if (tokensAfter > this.budget) {
|
|
177
|
+
// A single retry is deliberately bounded. The new summary can itself
|
|
178
|
+
// grow, so another retry would multiply Provider calls unpredictably.
|
|
179
|
+
throw new ContextBudgetError(`The request still needs about ${tokensAfter} tokens after compaction, exceeding the available context budget of ${this.budget}. Reduce the prompt, tool schemas, or context window reserve.`, usage, usageComplete);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
73
182
|
// Map the cut back onto the full transcript, allowing for the summary
|
|
74
183
|
// message that the previous compaction injected at the front.
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
184
|
+
const mapTranscriptIndex = (index) => {
|
|
185
|
+
if (previous === undefined)
|
|
186
|
+
return index;
|
|
187
|
+
if (previous.anchorIndex === undefined)
|
|
188
|
+
return previous.splitIndex + Math.max(0, index - 1);
|
|
189
|
+
if (index === 0)
|
|
190
|
+
return previous.anchorIndex;
|
|
191
|
+
return previous.splitIndex + Math.max(0, index - 2);
|
|
192
|
+
};
|
|
193
|
+
const splitIndex = mapTranscriptIndex(cut);
|
|
194
|
+
const anchorIndex = anchored ? mapTranscriptIndex(latestUser) : undefined;
|
|
78
195
|
this.onCompaction?.({
|
|
79
196
|
droppedMessages: head.length,
|
|
80
197
|
tokensBefore: estimatedTokens,
|
|
@@ -85,11 +202,49 @@ export class ContextManager {
|
|
|
85
202
|
messages: compactedMessages,
|
|
86
203
|
compacted: true,
|
|
87
204
|
estimatedTokens: tokensAfter,
|
|
88
|
-
compaction: { state, splitIndex },
|
|
205
|
+
compaction: { state, splitIndex, ...(anchorIndex === undefined ? {} : { anchorIndex }) },
|
|
89
206
|
...(usage === undefined ? {} : { usage }),
|
|
207
|
+
usageComplete,
|
|
90
208
|
};
|
|
91
209
|
}
|
|
92
210
|
}
|
|
211
|
+
export class ContextBudgetError extends Error {
|
|
212
|
+
compactionUsage;
|
|
213
|
+
compactionUsageComplete;
|
|
214
|
+
constructor(message, compactionUsage, compactionUsageComplete) {
|
|
215
|
+
super(message);
|
|
216
|
+
this.compactionUsage = compactionUsage;
|
|
217
|
+
this.compactionUsageComplete = compactionUsageComplete;
|
|
218
|
+
this.name = "ContextBudgetError";
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
function mergeCompactionUsage(first, second) {
|
|
222
|
+
if (first === undefined)
|
|
223
|
+
return second;
|
|
224
|
+
if (second === undefined)
|
|
225
|
+
return first;
|
|
226
|
+
return {
|
|
227
|
+
inputTokens: first.inputTokens + second.inputTokens,
|
|
228
|
+
outputTokens: first.outputTokens + second.outputTokens,
|
|
229
|
+
totalTokens: first.totalTokens + second.totalTokens,
|
|
230
|
+
...((first.cachedInputTokens !== undefined || second.cachedInputTokens !== undefined)
|
|
231
|
+
? { cachedInputTokens: (first.cachedInputTokens ?? 0) + (second.cachedInputTokens ?? 0) }
|
|
232
|
+
: {}),
|
|
233
|
+
...((first.reasoningTokens !== undefined || second.reasoningTokens !== undefined)
|
|
234
|
+
? { reasoningTokens: (first.reasoningTokens ?? 0) + (second.reasoningTokens ?? 0) }
|
|
235
|
+
: {}),
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
function findSplitIndexForTailBudget(messages, estimator, minimumCut, maxTailTokens) {
|
|
239
|
+
return Math.max(minimumCut, findSplitIndex(messages, estimator, maxTailTokens));
|
|
240
|
+
}
|
|
241
|
+
function findLastUserIndex(messages, syntheticSummaryIndex) {
|
|
242
|
+
for (let index = messages.length - 1; index >= 0; index -= 1) {
|
|
243
|
+
if (index !== syntheticSummaryIndex && messages[index]?.role === "user")
|
|
244
|
+
return index;
|
|
245
|
+
}
|
|
246
|
+
return -1;
|
|
247
|
+
}
|
|
93
248
|
function summaryMessage(state) {
|
|
94
249
|
return { role: "user", content: renderCompactionState(state) };
|
|
95
250
|
}
|
|
@@ -104,27 +259,37 @@ export function findSplitIndex(messages, estimator, keepRecentTokens) {
|
|
|
104
259
|
let tokens = 0;
|
|
105
260
|
let index = messages.length;
|
|
106
261
|
while (index > 0) {
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
break;
|
|
110
|
-
}
|
|
111
|
-
const cost = estimator.estimateMessage(message);
|
|
262
|
+
const start = toolGroupStart(messages, index);
|
|
263
|
+
const cost = estimator.estimateMessages(messages.slice(start, index));
|
|
112
264
|
if (tokens + cost > keepRecentTokens) {
|
|
113
265
|
break;
|
|
114
266
|
}
|
|
115
267
|
tokens += cost;
|
|
116
|
-
index
|
|
268
|
+
index = start;
|
|
117
269
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
//
|
|
270
|
+
// Keep at least one real message after the summary. If the final tool
|
|
271
|
+
// exchange is itself larger than the target, keep the whole exchange rather
|
|
272
|
+
// than splitting its assistant call from its result. The ContextManager can
|
|
273
|
+
// then reject it if the active exchange cannot fit at all.
|
|
122
274
|
if (index >= messages.length) {
|
|
123
|
-
index = messages.length
|
|
124
|
-
|
|
125
|
-
index
|
|
275
|
+
index = toolGroupStart(messages, messages.length);
|
|
276
|
+
if (index <= 0) {
|
|
277
|
+
index = Math.max(0, messages.length - 1);
|
|
126
278
|
}
|
|
127
279
|
}
|
|
128
280
|
return index;
|
|
129
281
|
}
|
|
282
|
+
function toolGroupStart(messages, endExclusive) {
|
|
283
|
+
if (endExclusive <= 0)
|
|
284
|
+
return 0;
|
|
285
|
+
let start = endExclusive - 1;
|
|
286
|
+
while (start >= 0 && messages[start]?.role === "tool") {
|
|
287
|
+
start -= 1;
|
|
288
|
+
}
|
|
289
|
+
const assistant = messages[start];
|
|
290
|
+
if (assistant?.role === "assistant" && assistant.toolCalls.length > 0) {
|
|
291
|
+
return start;
|
|
292
|
+
}
|
|
293
|
+
return endExclusive - 1;
|
|
294
|
+
}
|
|
130
295
|
//# sourceMappingURL=context-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../src/context/context-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../src/context/context-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Message, ToolCall } from "../messages.js";
|
|
2
|
+
export declare const INCOMPLETE_PROJECT_GUIDANCE = "[Current operation guidance could not be fully loaded within safety limits.]";
|
|
3
|
+
/** Repository guidance has lower priority than the user's instructions. */
|
|
4
|
+
export interface ProjectInstructionsProvider {
|
|
5
|
+
load(messages: readonly Message[], currentCall?: ToolCall): Promise<string | undefined>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Read root guidance, then nested guidance for directories the agent touched.
|
|
9
|
+
* Do not scan the entire repository and accidentally apply a sibling's rules.
|
|
10
|
+
*/
|
|
11
|
+
export declare class ScopedProjectInstructions implements ProjectInstructionsProvider {
|
|
12
|
+
private readonly root;
|
|
13
|
+
private readonly maxBytes;
|
|
14
|
+
constructor(root: string, maxBytes?: number);
|
|
15
|
+
load(messages: readonly Message[], currentCall?: ToolCall): Promise<string | undefined>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=project-instructions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-instructions.d.ts","sourceRoot":"","sources":["../../src/context/project-instructions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAQxD,eAAO,MAAM,2BAA2B,iFAAiF,CAAC;AAE1H,2EAA2E;AAC3E,MAAM,WAAW,2BAA2B;IAC1C,IAAI,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACzF;AAED;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,2BAA2B;IAC/D,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAU,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAApE,YAA6B,IAAI,EAAE,MAAM,EAAmB,QAAQ,SAAkB,EAAI;IAEpF,IAAI,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAoG5F;CACF"}
|