@tarquinen/opencode-dcp 2.1.7 → 2.2.0-beta0
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 +30 -49
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -29
- package/dist/index.js.map +1 -1
- package/dist/lib/commands/context.d.ts.map +1 -1
- package/dist/lib/commands/context.js +36 -8
- package/dist/lib/commands/context.js.map +1 -1
- package/dist/lib/commands/help.d.ts.map +1 -1
- package/dist/lib/commands/help.js +2 -6
- package/dist/lib/commands/help.js.map +1 -1
- package/dist/lib/commands/manual.d.ts +1 -3
- package/dist/lib/commands/manual.d.ts.map +1 -1
- package/dist/lib/commands/manual.js +4 -43
- package/dist/lib/commands/manual.js.map +1 -1
- package/dist/lib/commands/sweep.d.ts.map +1 -1
- package/dist/lib/commands/sweep.js +2 -12
- package/dist/lib/commands/sweep.js.map +1 -1
- package/dist/lib/compress-logger.d.ts +15 -0
- package/dist/lib/compress-logger.d.ts.map +1 -0
- package/dist/lib/compress-logger.js +132 -0
- package/dist/lib/compress-logger.js.map +1 -0
- package/dist/lib/config.d.ts +5 -20
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +172 -348
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/hooks.d.ts +7 -0
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/hooks.js +23 -17
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +6 -0
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/messages/index.d.ts +2 -3
- package/dist/lib/messages/index.d.ts.map +1 -1
- package/dist/lib/messages/index.js +2 -3
- package/dist/lib/messages/index.js.map +1 -1
- package/dist/lib/messages/inject/inject.d.ts +6 -0
- package/dist/lib/messages/inject/inject.d.ts.map +1 -0
- package/dist/lib/messages/inject/inject.js +99 -0
- package/dist/lib/messages/inject/inject.js.map +1 -0
- package/dist/lib/messages/inject/utils.d.ts +20 -0
- package/dist/lib/messages/inject/utils.d.ts.map +1 -0
- package/dist/lib/messages/inject/utils.js +137 -0
- package/dist/lib/messages/inject/utils.js.map +1 -0
- package/dist/lib/messages/utils.d.ts +7 -11
- package/dist/lib/messages/utils.d.ts.map +1 -1
- package/dist/lib/messages/utils.js +33 -132
- package/dist/lib/messages/utils.js.map +1 -1
- package/dist/lib/prompts/_codegen/system.generated.d.ts +1 -1
- package/dist/lib/prompts/_codegen/system.generated.d.ts.map +1 -1
- package/dist/lib/prompts/_codegen/system.generated.js +36 -32
- package/dist/lib/prompts/_codegen/system.generated.js.map +1 -1
- package/dist/lib/prompts/compress.d.ts +2 -0
- package/dist/lib/prompts/compress.d.ts.map +1 -0
- package/dist/lib/prompts/compress.js +122 -0
- package/dist/lib/prompts/compress.js.map +1 -0
- package/dist/lib/prompts/index.d.ts +6 -10
- package/dist/lib/prompts/index.d.ts.map +1 -1
- package/dist/lib/prompts/index.js +17 -40
- package/dist/lib/prompts/index.js.map +1 -1
- package/dist/lib/prompts/iteration-nudge.d.ts +2 -0
- package/dist/lib/prompts/iteration-nudge.d.ts.map +1 -0
- package/dist/lib/prompts/iteration-nudge.js +9 -0
- package/dist/lib/prompts/iteration-nudge.js.map +1 -0
- package/dist/lib/prompts/nudge.d.ts +2 -0
- package/dist/lib/prompts/nudge.d.ts.map +1 -0
- package/dist/lib/prompts/nudge.js +40 -0
- package/dist/lib/prompts/nudge.js.map +1 -0
- package/dist/lib/prompts/turn-nudge.d.ts +2 -0
- package/dist/lib/prompts/turn-nudge.d.ts.map +1 -0
- package/dist/lib/prompts/turn-nudge.js +12 -0
- package/dist/lib/prompts/turn-nudge.js.map +1 -0
- package/dist/lib/state/persistence.d.ts +7 -2
- package/dist/lib/state/persistence.d.ts.map +1 -1
- package/dist/lib/state/persistence.js +58 -39
- package/dist/lib/state/persistence.js.map +1 -1
- package/dist/lib/state/state.d.ts.map +1 -1
- package/dist/lib/state/state.js +20 -8
- package/dist/lib/state/state.js.map +1 -1
- package/dist/lib/state/tool-cache.d.ts.map +1 -1
- package/dist/lib/state/tool-cache.js +3 -17
- package/dist/lib/state/tool-cache.js.map +1 -1
- package/dist/lib/state/types.d.ts +7 -8
- package/dist/lib/state/types.d.ts.map +1 -1
- package/dist/lib/state/utils.d.ts +2 -2
- package/dist/lib/state/utils.d.ts.map +1 -1
- package/dist/lib/state/utils.js +29 -19
- package/dist/lib/state/utils.js.map +1 -1
- package/dist/lib/strategies/deduplication.d.ts.map +1 -1
- package/dist/lib/strategies/deduplication.js +0 -11
- package/dist/lib/strategies/deduplication.js.map +1 -1
- package/dist/lib/strategies/index.d.ts +0 -1
- package/dist/lib/strategies/index.d.ts.map +1 -1
- package/dist/lib/strategies/index.js +0 -1
- package/dist/lib/strategies/index.js.map +1 -1
- package/dist/lib/strategies/purge-errors.d.ts.map +1 -1
- package/dist/lib/strategies/purge-errors.js +0 -11
- package/dist/lib/strategies/purge-errors.js.map +1 -1
- package/dist/lib/strategies/supersede-writes.d.ts.map +1 -1
- package/dist/lib/strategies/supersede-writes.js +0 -11
- package/dist/lib/strategies/supersede-writes.js.map +1 -1
- package/dist/lib/strategies/utils.d.ts +1 -0
- package/dist/lib/strategies/utils.d.ts.map +1 -1
- package/dist/lib/strategies/utils.js +15 -0
- package/dist/lib/strategies/utils.js.map +1 -1
- package/dist/lib/tools/compress-utils.d.ts +7 -4
- package/dist/lib/tools/compress-utils.d.ts.map +1 -1
- package/dist/lib/tools/compress-utils.js +34 -25
- package/dist/lib/tools/compress-utils.js.map +1 -1
- package/dist/lib/tools/compress.d.ts +2 -2
- package/dist/lib/tools/compress.d.ts.map +1 -1
- package/dist/lib/tools/compress.js +21 -58
- package/dist/lib/tools/compress.js.map +1 -1
- package/dist/lib/tools/index.d.ts +1 -3
- package/dist/lib/tools/index.d.ts.map +1 -1
- package/dist/lib/tools/index.js +0 -2
- package/dist/lib/tools/index.js.map +1 -1
- package/dist/lib/tools/types.d.ts +1 -1
- package/dist/lib/tools/types.d.ts.map +1 -1
- package/dist/lib/ui/notification.d.ts +2 -2
- package/dist/lib/ui/notification.d.ts.map +1 -1
- package/dist/lib/ui/notification.js +31 -28
- package/dist/lib/ui/notification.js.map +1 -1
- package/dist/lib/ui/utils.d.ts +3 -4
- package/dist/lib/ui/utils.d.ts.map +1 -1
- package/dist/lib/ui/utils.js +165 -24
- package/dist/lib/ui/utils.js.map +1 -1
- package/package.json +2 -1
- package/dist/lib/messages/inject.d.ts +0 -14
- package/dist/lib/messages/inject.d.ts.map +0 -1
- package/dist/lib/messages/inject.js +0 -266
- package/dist/lib/messages/inject.js.map +0 -1
- package/dist/lib/messages/sync.d.ts +0 -4
- package/dist/lib/messages/sync.d.ts.map +0 -1
- package/dist/lib/messages/sync.js +0 -29
- package/dist/lib/messages/sync.js.map +0 -1
- package/dist/lib/prompts/_codegen/compress-nudge.generated.d.ts +0 -2
- package/dist/lib/prompts/_codegen/compress-nudge.generated.d.ts.map +0 -1
- package/dist/lib/prompts/_codegen/compress-nudge.generated.js +0 -15
- package/dist/lib/prompts/_codegen/compress-nudge.generated.js.map +0 -1
- package/dist/lib/prompts/_codegen/compress.generated.d.ts +0 -2
- package/dist/lib/prompts/_codegen/compress.generated.d.ts.map +0 -1
- package/dist/lib/prompts/_codegen/compress.generated.js +0 -66
- package/dist/lib/prompts/_codegen/compress.generated.js.map +0 -1
- package/dist/lib/prompts/_codegen/distill.generated.d.ts +0 -2
- package/dist/lib/prompts/_codegen/distill.generated.d.ts.map +0 -1
- package/dist/lib/prompts/_codegen/distill.generated.js +0 -33
- package/dist/lib/prompts/_codegen/distill.generated.js.map +0 -1
- package/dist/lib/prompts/_codegen/nudge.generated.d.ts +0 -2
- package/dist/lib/prompts/_codegen/nudge.generated.d.ts.map +0 -1
- package/dist/lib/prompts/_codegen/nudge.generated.js +0 -17
- package/dist/lib/prompts/_codegen/nudge.generated.js.map +0 -1
- package/dist/lib/prompts/_codegen/prune.generated.d.ts +0 -2
- package/dist/lib/prompts/_codegen/prune.generated.d.ts.map +0 -1
- package/dist/lib/prompts/_codegen/prune.generated.js +0 -23
- package/dist/lib/prompts/_codegen/prune.generated.js.map +0 -1
- package/dist/lib/tools/distill.d.ts +0 -4
- package/dist/lib/tools/distill.d.ts.map +0 -1
- package/dist/lib/tools/distill.js +0 -41
- package/dist/lib/tools/distill.js.map +0 -1
- package/dist/lib/tools/prune-shared.d.ts +0 -8
- package/dist/lib/tools/prune-shared.d.ts.map +0 -1
- package/dist/lib/tools/prune-shared.js +0 -127
- package/dist/lib/tools/prune-shared.js.map +0 -1
- package/dist/lib/tools/prune.d.ts +0 -4
- package/dist/lib/tools/prune.d.ts.map +0 -1
- package/dist/lib/tools/prune.js +0 -28
- package/dist/lib/tools/prune.js.map +0 -1
package/dist/lib/ui/utils.js
CHANGED
|
@@ -1,19 +1,126 @@
|
|
|
1
|
-
import { extractParameterKey } from "../messages/utils";
|
|
2
1
|
import { countTokens } from "../strategies/utils";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
return countTokens(distillation.join("\n"));
|
|
7
|
-
}
|
|
8
|
-
export function formatExtracted(distillation) {
|
|
9
|
-
if (!distillation || distillation.length === 0) {
|
|
2
|
+
import { isIgnoredUserMessage } from "../messages/utils";
|
|
3
|
+
function extractParameterKey(tool, parameters) {
|
|
4
|
+
if (!parameters)
|
|
10
5
|
return "";
|
|
6
|
+
if (tool === "read" && parameters.filePath) {
|
|
7
|
+
const offset = parameters.offset;
|
|
8
|
+
const limit = parameters.limit;
|
|
9
|
+
if (offset !== undefined && limit !== undefined) {
|
|
10
|
+
return `${parameters.filePath} (lines ${offset}-${offset + limit})`;
|
|
11
|
+
}
|
|
12
|
+
if (offset !== undefined) {
|
|
13
|
+
return `${parameters.filePath} (lines ${offset}+)`;
|
|
14
|
+
}
|
|
15
|
+
if (limit !== undefined) {
|
|
16
|
+
return `${parameters.filePath} (lines 0-${limit})`;
|
|
17
|
+
}
|
|
18
|
+
return parameters.filePath;
|
|
19
|
+
}
|
|
20
|
+
if ((tool === "write" || tool === "edit" || tool === "multiedit") && parameters.filePath) {
|
|
21
|
+
return parameters.filePath;
|
|
22
|
+
}
|
|
23
|
+
if (tool === "apply_patch" && typeof parameters.patchText === "string") {
|
|
24
|
+
const pathRegex = /\*\*\* (?:Add|Delete|Update) File: ([^\n\r]+)/g;
|
|
25
|
+
const paths = [];
|
|
26
|
+
let match;
|
|
27
|
+
while ((match = pathRegex.exec(parameters.patchText)) !== null) {
|
|
28
|
+
paths.push(match[1].trim());
|
|
29
|
+
}
|
|
30
|
+
if (paths.length > 0) {
|
|
31
|
+
const uniquePaths = [...new Set(paths)];
|
|
32
|
+
const count = uniquePaths.length;
|
|
33
|
+
const plural = count > 1 ? "s" : "";
|
|
34
|
+
if (count === 1)
|
|
35
|
+
return uniquePaths[0];
|
|
36
|
+
if (count === 2)
|
|
37
|
+
return uniquePaths.join(", ");
|
|
38
|
+
return `${count} file${plural}: ${uniquePaths[0]}, ${uniquePaths[1]}...`;
|
|
39
|
+
}
|
|
40
|
+
return "patch";
|
|
41
|
+
}
|
|
42
|
+
if (tool === "list") {
|
|
43
|
+
return parameters.path || "(current directory)";
|
|
44
|
+
}
|
|
45
|
+
if (tool === "glob") {
|
|
46
|
+
if (parameters.pattern) {
|
|
47
|
+
const pathInfo = parameters.path ? ` in ${parameters.path}` : "";
|
|
48
|
+
return `"${parameters.pattern}"${pathInfo}`;
|
|
49
|
+
}
|
|
50
|
+
return "(unknown pattern)";
|
|
51
|
+
}
|
|
52
|
+
if (tool === "grep") {
|
|
53
|
+
if (parameters.pattern) {
|
|
54
|
+
const pathInfo = parameters.path ? ` in ${parameters.path}` : "";
|
|
55
|
+
return `"${parameters.pattern}"${pathInfo}`;
|
|
56
|
+
}
|
|
57
|
+
return "(unknown pattern)";
|
|
58
|
+
}
|
|
59
|
+
if (tool === "bash") {
|
|
60
|
+
if (parameters.description)
|
|
61
|
+
return parameters.description;
|
|
62
|
+
if (parameters.command) {
|
|
63
|
+
return parameters.command.length > 50
|
|
64
|
+
? parameters.command.substring(0, 50) + "..."
|
|
65
|
+
: parameters.command;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (tool === "webfetch" && parameters.url) {
|
|
69
|
+
return parameters.url;
|
|
70
|
+
}
|
|
71
|
+
if (tool === "websearch" && parameters.query) {
|
|
72
|
+
return `"${parameters.query}"`;
|
|
73
|
+
}
|
|
74
|
+
if (tool === "codesearch" && parameters.query) {
|
|
75
|
+
return `"${parameters.query}"`;
|
|
76
|
+
}
|
|
77
|
+
if (tool === "todowrite") {
|
|
78
|
+
return `${parameters.todos?.length || 0} todos`;
|
|
11
79
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
result += `\n───\n${finding}`;
|
|
80
|
+
if (tool === "todoread") {
|
|
81
|
+
return "read todo list";
|
|
15
82
|
}
|
|
16
|
-
|
|
83
|
+
if (tool === "task" && parameters.description) {
|
|
84
|
+
return parameters.description;
|
|
85
|
+
}
|
|
86
|
+
if (tool === "skill" && parameters.name) {
|
|
87
|
+
return parameters.name;
|
|
88
|
+
}
|
|
89
|
+
if (tool === "lsp") {
|
|
90
|
+
const op = parameters.operation || "lsp";
|
|
91
|
+
const path = parameters.filePath || "";
|
|
92
|
+
const line = parameters.line;
|
|
93
|
+
const char = parameters.character;
|
|
94
|
+
if (path && line !== undefined && char !== undefined) {
|
|
95
|
+
return `${op} ${path}:${line}:${char}`;
|
|
96
|
+
}
|
|
97
|
+
if (path) {
|
|
98
|
+
return `${op} ${path}`;
|
|
99
|
+
}
|
|
100
|
+
return op;
|
|
101
|
+
}
|
|
102
|
+
if (tool === "question") {
|
|
103
|
+
const questions = parameters.questions;
|
|
104
|
+
if (Array.isArray(questions) && questions.length > 0) {
|
|
105
|
+
const headers = questions
|
|
106
|
+
.map((q) => q.header || "")
|
|
107
|
+
.filter(Boolean)
|
|
108
|
+
.slice(0, 3);
|
|
109
|
+
const count = questions.length;
|
|
110
|
+
const plural = count > 1 ? "s" : "";
|
|
111
|
+
if (headers.length > 0) {
|
|
112
|
+
const suffix = count > 3 ? ` (+${count - 3} more)` : "";
|
|
113
|
+
return `${count} question${plural}: ${headers.join(", ")}${suffix}`;
|
|
114
|
+
}
|
|
115
|
+
return `${count} question${plural}`;
|
|
116
|
+
}
|
|
117
|
+
return "question";
|
|
118
|
+
}
|
|
119
|
+
const paramStr = JSON.stringify(parameters);
|
|
120
|
+
if (paramStr === "{}" || paramStr === "[]" || paramStr === "null") {
|
|
121
|
+
return "";
|
|
122
|
+
}
|
|
123
|
+
return paramStr.substring(0, 50);
|
|
17
124
|
}
|
|
18
125
|
export function formatStatsHeader(totalTokensSaved, pruneTokenCounter) {
|
|
19
126
|
const totalTokensSavedStr = `~${formatTokenCount(totalTokensSaved + pruneTokenCounter)}`;
|
|
@@ -30,21 +137,55 @@ export function truncate(str, maxLen = 60) {
|
|
|
30
137
|
return str;
|
|
31
138
|
return str.slice(0, maxLen - 3) + "...";
|
|
32
139
|
}
|
|
33
|
-
export function
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
let
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
140
|
+
export function formatSessionMap(messageIds, prunedMessages, width = 50) {
|
|
141
|
+
const total = messageIds.length;
|
|
142
|
+
if (total === 0)
|
|
143
|
+
return `│${"░".repeat(width)}│`;
|
|
144
|
+
const bar = new Array(width).fill("█");
|
|
145
|
+
for (let m = 0; m < total; m++) {
|
|
146
|
+
if (prunedMessages.has(messageIds[m])) {
|
|
147
|
+
const start = Math.floor((m / total) * width);
|
|
148
|
+
const end = Math.floor(((m + 1) / total) * width);
|
|
149
|
+
for (let i = start; i < end; i++) {
|
|
150
|
+
bar[i] = "░";
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return `│${bar.join("")}│`;
|
|
155
|
+
}
|
|
156
|
+
export function cacheSystemPromptTokens(state, messages) {
|
|
157
|
+
let firstInputTokens = 0;
|
|
158
|
+
for (const msg of messages) {
|
|
159
|
+
if (msg.info.role !== "assistant") {
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
const info = msg.info;
|
|
163
|
+
const input = info?.tokens?.input || 0;
|
|
164
|
+
const cacheRead = info?.tokens?.cache?.read || 0;
|
|
165
|
+
if (input > 0 || cacheRead > 0) {
|
|
166
|
+
firstInputTokens = input + cacheRead;
|
|
167
|
+
break;
|
|
42
168
|
}
|
|
43
|
-
|
|
44
|
-
|
|
169
|
+
}
|
|
170
|
+
if (firstInputTokens <= 0) {
|
|
171
|
+
state.systemPromptTokens = undefined;
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
let firstUserText = "";
|
|
175
|
+
for (const msg of messages) {
|
|
176
|
+
if (msg.info.role !== "user" || isIgnoredUserMessage(msg)) {
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
const parts = Array.isArray(msg.parts) ? msg.parts : [];
|
|
180
|
+
for (const part of parts) {
|
|
181
|
+
if (part.type === "text" && !part.ignored) {
|
|
182
|
+
firstUserText += part.text;
|
|
183
|
+
}
|
|
45
184
|
}
|
|
185
|
+
break;
|
|
46
186
|
}
|
|
47
|
-
|
|
187
|
+
const estimatedSystemTokens = Math.max(0, firstInputTokens - countTokens(firstUserText));
|
|
188
|
+
state.systemPromptTokens = estimatedSystemTokens > 0 ? estimatedSystemTokens : undefined;
|
|
48
189
|
}
|
|
49
190
|
export function shortenPath(input, workingDirectory) {
|
|
50
191
|
const inPathMatch = input.match(/^(.+) in (.+)$/);
|
package/dist/lib/ui/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/ui/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/ui/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@tarquinen/opencode-dcp",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.2.0-beta0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "OpenCode plugin that optimizes token usage by pruning obsolete tool outputs from conversation context",
|
|
7
7
|
"main": "./dist/index.js",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@anthropic-ai/tokenizer": "^0.0.4",
|
|
46
46
|
"@opencode-ai/sdk": "^1.1.48",
|
|
47
|
+
"fuzzball": "^2.2.3",
|
|
47
48
|
"jsonc-parser": "^3.3.1",
|
|
48
49
|
"zod": "^4.3.6"
|
|
49
50
|
},
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { SessionState, WithParts } from "../state";
|
|
2
|
-
import type { Logger } from "../logger";
|
|
3
|
-
import type { PluginConfig } from "../config";
|
|
4
|
-
export declare const wrapPrunableTools: (content: string) => string;
|
|
5
|
-
export declare const wrapCompressContext: (messageCount: number) => string;
|
|
6
|
-
export declare const wrapCooldownMessage: (flags: {
|
|
7
|
-
prune: boolean;
|
|
8
|
-
distill: boolean;
|
|
9
|
-
compress: boolean;
|
|
10
|
-
}) => string;
|
|
11
|
-
export declare const buildPrunableToolsList: (state: SessionState, config: PluginConfig, logger: Logger) => string;
|
|
12
|
-
export declare const insertPruneToolContext: (state: SessionState, config: PluginConfig, logger: Logger, messages: WithParts[]) => void;
|
|
13
|
-
export declare const insertMessageIdContext: (state: SessionState, config: PluginConfig, messages: WithParts[]) => void;
|
|
14
|
-
//# sourceMappingURL=inject.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../../../lib/messages/inject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AA+B7C,eAAO,MAAM,iBAAiB,GAAI,SAAS,MAAM,KAAG,MAKnD,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,cAAc,MAAM,KAAG,MAIvC,CAAA;AAEpB,eAAO,MAAM,mBAAmB,GAAI,OAAO;IACvC,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;CACpB,KAAG,MAmBH,CAAA;AAwGD,eAAO,MAAM,sBAAsB,GAC/B,OAAO,YAAY,EACnB,QAAQ,YAAY,EACpB,QAAQ,MAAM,KACf,MAiDF,CAAA;AAED,eAAO,MAAM,sBAAsB,GAC/B,OAAO,YAAY,EACnB,QAAQ,YAAY,EACpB,QAAQ,MAAM,EACd,UAAU,SAAS,EAAE,KACtB,IA2FF,CAAA;AAED,eAAO,MAAM,sBAAsB,GAC/B,OAAO,YAAY,EACnB,QAAQ,YAAY,EACpB,UAAU,SAAS,EAAE,KACtB,IAuCF,CAAA"}
|
|
@@ -1,266 +0,0 @@
|
|
|
1
|
-
import { formatMessageIdTag } from "../message-ids";
|
|
2
|
-
import { renderNudge, renderCompressNudge } from "../prompts";
|
|
3
|
-
import { extractParameterKey, createSyntheticTextPart, createSyntheticToolPart, isIgnoredUserMessage, appendMessageIdTagToToolOutput, findLastToolPart, } from "./utils";
|
|
4
|
-
import { getFilePathsFromParameters, isProtected } from "../protected-file-patterns";
|
|
5
|
-
import { getLastUserMessage, isMessageCompacted } from "../shared-utils";
|
|
6
|
-
import { getCurrentTokenUsage } from "../strategies/utils";
|
|
7
|
-
function parsePercentageString(value, total) {
|
|
8
|
-
if (!value.endsWith("%"))
|
|
9
|
-
return undefined;
|
|
10
|
-
const percent = parseFloat(value.slice(0, -1));
|
|
11
|
-
if (isNaN(percent)) {
|
|
12
|
-
return undefined;
|
|
13
|
-
}
|
|
14
|
-
const roundedPercent = Math.round(percent);
|
|
15
|
-
const clampedPercent = Math.max(0, Math.min(100, roundedPercent));
|
|
16
|
-
return Math.round((clampedPercent / 100) * total);
|
|
17
|
-
}
|
|
18
|
-
// XML wrappers
|
|
19
|
-
export const wrapPrunableTools = (content) => {
|
|
20
|
-
return `<prunable-tools>
|
|
21
|
-
The following tools have been invoked and are available for pruning. This list does not mandate immediate action. Consider your current goals and the resources you need before pruning valuable tool inputs or outputs. Consolidate your prunes for efficiency; it is rarely worth pruning a single tiny tool output. Keep the context free of noise.
|
|
22
|
-
${content}
|
|
23
|
-
</prunable-tools>`;
|
|
24
|
-
};
|
|
25
|
-
export const wrapCompressContext = (messageCount) => `<compress-context>
|
|
26
|
-
Compress available. Conversation: ${messageCount} messages.
|
|
27
|
-
Compress collapses completed task sequences or exploration phases into summaries.
|
|
28
|
-
Uses ID boundaries [startId, endId, topic, summary].
|
|
29
|
-
</compress-context>`;
|
|
30
|
-
export const wrapCooldownMessage = (flags) => {
|
|
31
|
-
const enabledTools = [];
|
|
32
|
-
if (flags.distill)
|
|
33
|
-
enabledTools.push("distill");
|
|
34
|
-
if (flags.compress)
|
|
35
|
-
enabledTools.push("compress");
|
|
36
|
-
if (flags.prune)
|
|
37
|
-
enabledTools.push("prune");
|
|
38
|
-
let toolName;
|
|
39
|
-
if (enabledTools.length === 0) {
|
|
40
|
-
toolName = "pruning tools";
|
|
41
|
-
}
|
|
42
|
-
else if (enabledTools.length === 1) {
|
|
43
|
-
toolName = `${enabledTools[0]} tool`;
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
const last = enabledTools.pop();
|
|
47
|
-
toolName = `${enabledTools.join(", ")} or ${last} tools`;
|
|
48
|
-
}
|
|
49
|
-
return `<context-info>
|
|
50
|
-
Context management was just performed. Do NOT use the ${toolName} again. A fresh list will be available after your next tool use.
|
|
51
|
-
</context-info>`;
|
|
52
|
-
};
|
|
53
|
-
const resolveContextLimit = (config, state, providerId, modelId) => {
|
|
54
|
-
const modelLimits = config.tools.settings.modelLimits;
|
|
55
|
-
const contextLimit = config.tools.settings.contextLimit;
|
|
56
|
-
if (modelLimits) {
|
|
57
|
-
const providerModelId = providerId !== undefined && modelId !== undefined
|
|
58
|
-
? `${providerId}/${modelId}`
|
|
59
|
-
: undefined;
|
|
60
|
-
const limit = providerModelId !== undefined ? modelLimits[providerModelId] : undefined;
|
|
61
|
-
if (limit !== undefined) {
|
|
62
|
-
if (typeof limit === "string" && limit.endsWith("%")) {
|
|
63
|
-
if (state.modelContextLimit === undefined) {
|
|
64
|
-
return undefined;
|
|
65
|
-
}
|
|
66
|
-
return parsePercentageString(limit, state.modelContextLimit);
|
|
67
|
-
}
|
|
68
|
-
return typeof limit === "number" ? limit : undefined;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
if (typeof contextLimit === "string") {
|
|
72
|
-
if (contextLimit.endsWith("%")) {
|
|
73
|
-
if (state.modelContextLimit === undefined) {
|
|
74
|
-
return undefined;
|
|
75
|
-
}
|
|
76
|
-
return parsePercentageString(contextLimit, state.modelContextLimit);
|
|
77
|
-
}
|
|
78
|
-
return undefined;
|
|
79
|
-
}
|
|
80
|
-
return contextLimit;
|
|
81
|
-
};
|
|
82
|
-
const shouldInjectCompressNudge = (config, state, messages, providerId, modelId) => {
|
|
83
|
-
if (config.tools.compress.permission === "deny") {
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
const lastAssistant = messages.findLast((msg) => msg.info.role === "assistant");
|
|
87
|
-
if (lastAssistant) {
|
|
88
|
-
const parts = Array.isArray(lastAssistant.parts) ? lastAssistant.parts : [];
|
|
89
|
-
const hasDcpTool = parts.some((part) => part.type === "tool" &&
|
|
90
|
-
part.state.status === "completed" &&
|
|
91
|
-
(part.tool === "compress" || part.tool === "prune" || part.tool === "distill"));
|
|
92
|
-
if (hasDcpTool) {
|
|
93
|
-
return false;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
const contextLimit = resolveContextLimit(config, state, providerId, modelId);
|
|
97
|
-
if (contextLimit === undefined) {
|
|
98
|
-
return false;
|
|
99
|
-
}
|
|
100
|
-
const currentTokens = getCurrentTokenUsage(messages);
|
|
101
|
-
return currentTokens > contextLimit;
|
|
102
|
-
};
|
|
103
|
-
const getNudgeString = (config) => {
|
|
104
|
-
const flags = {
|
|
105
|
-
prune: config.tools.prune.permission !== "deny",
|
|
106
|
-
distill: config.tools.distill.permission !== "deny",
|
|
107
|
-
compress: config.tools.compress.permission !== "deny",
|
|
108
|
-
manual: false,
|
|
109
|
-
};
|
|
110
|
-
if (!flags.prune && !flags.distill && !flags.compress) {
|
|
111
|
-
return "";
|
|
112
|
-
}
|
|
113
|
-
return renderNudge(flags);
|
|
114
|
-
};
|
|
115
|
-
const getCooldownMessage = (config) => {
|
|
116
|
-
return wrapCooldownMessage({
|
|
117
|
-
prune: config.tools.prune.permission !== "deny",
|
|
118
|
-
distill: config.tools.distill.permission !== "deny",
|
|
119
|
-
compress: config.tools.compress.permission !== "deny",
|
|
120
|
-
});
|
|
121
|
-
};
|
|
122
|
-
const buildCompressContext = (state, messages) => {
|
|
123
|
-
const messageCount = messages.filter((msg) => !isMessageCompacted(state, msg)).length;
|
|
124
|
-
return wrapCompressContext(messageCount);
|
|
125
|
-
};
|
|
126
|
-
export const buildPrunableToolsList = (state, config, logger) => {
|
|
127
|
-
const lines = [];
|
|
128
|
-
const toolIdList = state.toolIdList;
|
|
129
|
-
state.toolParameters.forEach((toolParameterEntry, toolCallId) => {
|
|
130
|
-
if (state.prune.tools.has(toolCallId)) {
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
const allProtectedTools = config.tools.settings.protectedTools;
|
|
134
|
-
if (allProtectedTools.includes(toolParameterEntry.tool)) {
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
const filePaths = getFilePathsFromParameters(toolParameterEntry.tool, toolParameterEntry.parameters);
|
|
138
|
-
if (isProtected(filePaths, config.protectedFilePatterns)) {
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
const numericId = toolIdList.indexOf(toolCallId);
|
|
142
|
-
if (numericId === -1) {
|
|
143
|
-
logger.warn(`Tool in cache but not in toolIdList - possible stale entry`, {
|
|
144
|
-
toolCallId,
|
|
145
|
-
tool: toolParameterEntry.tool,
|
|
146
|
-
});
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
const paramKey = extractParameterKey(toolParameterEntry.tool, toolParameterEntry.parameters);
|
|
150
|
-
const description = paramKey
|
|
151
|
-
? `${toolParameterEntry.tool}, ${paramKey}`
|
|
152
|
-
: toolParameterEntry.tool;
|
|
153
|
-
const tokenSuffix = toolParameterEntry.tokenCount !== undefined
|
|
154
|
-
? ` (~${toolParameterEntry.tokenCount} tokens)`
|
|
155
|
-
: "";
|
|
156
|
-
lines.push(`${numericId}: ${description}${tokenSuffix}`);
|
|
157
|
-
logger.debug(`Prunable tool found - ID: ${numericId}, Tool: ${toolParameterEntry.tool}, Call ID: ${toolCallId}`);
|
|
158
|
-
});
|
|
159
|
-
if (lines.length === 0) {
|
|
160
|
-
return "";
|
|
161
|
-
}
|
|
162
|
-
return wrapPrunableTools(lines.join("\n"));
|
|
163
|
-
};
|
|
164
|
-
export const insertPruneToolContext = (state, config, logger, messages) => {
|
|
165
|
-
if (state.manualMode || state.pendingManualTrigger) {
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
const pruneEnabled = config.tools.prune.permission !== "deny";
|
|
169
|
-
const distillEnabled = config.tools.distill.permission !== "deny";
|
|
170
|
-
const compressEnabled = config.tools.compress.permission !== "deny";
|
|
171
|
-
if (!pruneEnabled && !distillEnabled && !compressEnabled) {
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
const pruneOrDistillEnabled = pruneEnabled || distillEnabled;
|
|
175
|
-
const contentParts = [];
|
|
176
|
-
const lastUserMessage = getLastUserMessage(messages);
|
|
177
|
-
const providerId = lastUserMessage
|
|
178
|
-
? lastUserMessage.info.model.providerID
|
|
179
|
-
: undefined;
|
|
180
|
-
const modelId = lastUserMessage
|
|
181
|
-
? lastUserMessage.info.model.modelID
|
|
182
|
-
: undefined;
|
|
183
|
-
if (state.lastToolPrune) {
|
|
184
|
-
logger.debug("Last tool was prune - injecting cooldown message");
|
|
185
|
-
contentParts.push(getCooldownMessage(config));
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
if (pruneOrDistillEnabled) {
|
|
189
|
-
const prunableToolsList = buildPrunableToolsList(state, config, logger);
|
|
190
|
-
if (prunableToolsList) {
|
|
191
|
-
// logger.debug("prunable-tools: \n" + prunableToolsList)
|
|
192
|
-
contentParts.push(prunableToolsList);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
if (compressEnabled) {
|
|
196
|
-
const compressContext = buildCompressContext(state, messages);
|
|
197
|
-
// logger.debug("compress-context: \n" + compressContext)
|
|
198
|
-
contentParts.push(compressContext);
|
|
199
|
-
}
|
|
200
|
-
if (shouldInjectCompressNudge(config, state, messages, providerId, modelId)) {
|
|
201
|
-
logger.info("Inserting compress nudge - token usage exceeds contextLimit");
|
|
202
|
-
contentParts.push(renderCompressNudge());
|
|
203
|
-
}
|
|
204
|
-
else if (config.tools.settings.nudgeEnabled &&
|
|
205
|
-
state.nudgeCounter >= Math.max(1, config.tools.settings.nudgeFrequency)) {
|
|
206
|
-
logger.info("Inserting prune nudge message");
|
|
207
|
-
contentParts.push(getNudgeString(config));
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
if (contentParts.length === 0) {
|
|
211
|
-
return;
|
|
212
|
-
}
|
|
213
|
-
const combinedContent = `\n${contentParts.join("\n")}`;
|
|
214
|
-
if (!lastUserMessage) {
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
const lastNonIgnoredMessage = messages.findLast((msg) => !(msg.info.role === "user" && isIgnoredUserMessage(msg)));
|
|
218
|
-
if (!lastNonIgnoredMessage) {
|
|
219
|
-
return;
|
|
220
|
-
}
|
|
221
|
-
// When following a user message, append a synthetic text part since models like Claude
|
|
222
|
-
// expect assistant turns to start with reasoning parts which cannot be easily faked.
|
|
223
|
-
// For all other cases, append a synthetic tool part to the last message which works
|
|
224
|
-
// across all models without disrupting their behavior.
|
|
225
|
-
if (lastNonIgnoredMessage.info.role === "user") {
|
|
226
|
-
const textPart = createSyntheticTextPart(lastNonIgnoredMessage, combinedContent, `${lastNonIgnoredMessage.info.id}:context`);
|
|
227
|
-
lastNonIgnoredMessage.parts.push(textPart);
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
const toolPart = createSyntheticToolPart(lastNonIgnoredMessage, combinedContent, modelId ?? "", `${lastNonIgnoredMessage.info.id}:context`);
|
|
231
|
-
lastNonIgnoredMessage.parts.push(toolPart);
|
|
232
|
-
}
|
|
233
|
-
};
|
|
234
|
-
export const insertMessageIdContext = (state, config, messages) => {
|
|
235
|
-
if (config.tools.compress.permission === "deny") {
|
|
236
|
-
return;
|
|
237
|
-
}
|
|
238
|
-
const lastUserMessage = getLastUserMessage(messages);
|
|
239
|
-
const toolModelId = lastUserMessage
|
|
240
|
-
? (lastUserMessage.info.model.modelID ?? "")
|
|
241
|
-
: "";
|
|
242
|
-
for (const message of messages) {
|
|
243
|
-
if (message.info.role === "user" && isIgnoredUserMessage(message)) {
|
|
244
|
-
continue;
|
|
245
|
-
}
|
|
246
|
-
const messageRef = state.messageIds.byRawId.get(message.info.id);
|
|
247
|
-
if (!messageRef) {
|
|
248
|
-
continue;
|
|
249
|
-
}
|
|
250
|
-
const tag = formatMessageIdTag(messageRef);
|
|
251
|
-
const messageIdSeed = `${message.info.id}:message-id:${messageRef}`;
|
|
252
|
-
if (message.info.role === "user") {
|
|
253
|
-
message.parts.push(createSyntheticTextPart(message, tag, messageIdSeed));
|
|
254
|
-
continue;
|
|
255
|
-
}
|
|
256
|
-
if (message.info.role !== "assistant") {
|
|
257
|
-
continue;
|
|
258
|
-
}
|
|
259
|
-
const lastToolPart = findLastToolPart(message);
|
|
260
|
-
if (lastToolPart && appendMessageIdTagToToolOutput(lastToolPart, tag)) {
|
|
261
|
-
continue;
|
|
262
|
-
}
|
|
263
|
-
message.parts.push(createSyntheticToolPart(message, tag, toolModelId, messageIdSeed));
|
|
264
|
-
}
|
|
265
|
-
};
|
|
266
|
-
//# sourceMappingURL=inject.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../../../lib/messages/inject.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../lib/messages/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEvC,eAAO,MAAM,eAAe,GACxB,OAAO,YAAY,EACnB,QAAQ,MAAM,EACd,UAAU,SAAS,EAAE,KACtB,IA+BF,CAAA"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
export const syncToolOrigins = (state, logger, messages) => {
|
|
2
|
-
if (!state.prune.origins?.size) {
|
|
3
|
-
return;
|
|
4
|
-
}
|
|
5
|
-
const messageIds = new Set(messages.map((msg) => msg.info.id));
|
|
6
|
-
let removedToolCount = 0;
|
|
7
|
-
let removedOriginCount = 0;
|
|
8
|
-
for (const [toolId, origin] of state.prune.origins.entries()) {
|
|
9
|
-
if (!state.prune.tools.has(toolId)) {
|
|
10
|
-
state.prune.origins.delete(toolId);
|
|
11
|
-
removedOriginCount++;
|
|
12
|
-
continue;
|
|
13
|
-
}
|
|
14
|
-
if (!messageIds.has(origin.originMessageId)) {
|
|
15
|
-
state.prune.origins.delete(toolId);
|
|
16
|
-
removedOriginCount++;
|
|
17
|
-
if (state.prune.tools.delete(toolId)) {
|
|
18
|
-
removedToolCount++;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
if (removedToolCount > 0 || removedOriginCount > 0) {
|
|
23
|
-
logger.info("Synced prune origins", {
|
|
24
|
-
removedToolCount,
|
|
25
|
-
removedOriginCount,
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
//# sourceMappingURL=sync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../lib/messages/sync.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,eAAe,GAAG,CAC3B,KAAmB,EACnB,MAAc,EACd,QAAqB,EACjB,EAAE;IACN,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;QAC7B,OAAM;IACV,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;IAC9D,IAAI,gBAAgB,GAAG,CAAC,CAAA;IACxB,IAAI,kBAAkB,GAAG,CAAC,CAAA;IAE1B,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAClC,kBAAkB,EAAE,CAAA;YACpB,SAAQ;QACZ,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAClC,kBAAkB,EAAE,CAAA;YACpB,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnC,gBAAgB,EAAE,CAAA;YACtB,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAI,gBAAgB,GAAG,CAAC,IAAI,kBAAkB,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAChC,gBAAgB;YAChB,kBAAkB;SACrB,CAAC,CAAA;IACN,CAAC;AACL,CAAC,CAAA"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export declare const COMPRESS_NUDGE = "<instruction name=context_limit_reached>\nCRITICAL CONTEXT LIMIT\nYour session context has exceeded the configured limit. Strict adherence to context compression is required.\n\nPROTOCOL\nYou should prioritize context management, but do not interrupt a critical atomic operation if one is in progress. Once the immediate step is done, you must perform context management.\n\nIMMEDIATE ACTION REQUIRED\nPHASE COMPLETION: If a phase is complete, use the `compress` tool to condense the entire sequence into a detailed summary\n</instruction>\n";
|
|
2
|
-
//# sourceMappingURL=compress-nudge.generated.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compress-nudge.generated.d.ts","sourceRoot":"","sources":["../../../../lib/prompts/_codegen/compress-nudge.generated.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc,kiBAU1B,CAAA"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// AUTO-GENERATED FILE - DO NOT EDIT
|
|
2
|
-
// Generated from compress-nudge.md by scripts/generate-prompts.ts
|
|
3
|
-
// To modify, edit compress-nudge.md and run `npm run generate:prompts`
|
|
4
|
-
export const COMPRESS_NUDGE = `<instruction name=context_limit_reached>
|
|
5
|
-
CRITICAL CONTEXT LIMIT
|
|
6
|
-
Your session context has exceeded the configured limit. Strict adherence to context compression is required.
|
|
7
|
-
|
|
8
|
-
PROTOCOL
|
|
9
|
-
You should prioritize context management, but do not interrupt a critical atomic operation if one is in progress. Once the immediate step is done, you must perform context management.
|
|
10
|
-
|
|
11
|
-
IMMEDIATE ACTION REQUIRED
|
|
12
|
-
PHASE COMPLETION: If a phase is complete, use the \`compress\` tool to condense the entire sequence into a detailed summary
|
|
13
|
-
</instruction>
|
|
14
|
-
`;
|
|
15
|
-
//# sourceMappingURL=compress-nudge.generated.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compress-nudge.generated.js","sourceRoot":"","sources":["../../../../lib/prompts/_codegen/compress-nudge.generated.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,uEAAuE;AAEvE,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;CAU7B,CAAA"}
|