@tarquinen/opencode-dcp 3.1.9 → 3.1.11
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 +5 -0
- package/dist/index.d.ts +2 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7905 -76
- package/dist/index.js.map +1 -1
- package/dist/lib/compress/message.d.ts.map +1 -1
- package/dist/lib/compress/protected-content.d.ts +2 -0
- package/dist/lib/compress/protected-content.d.ts.map +1 -1
- package/dist/lib/compress/range.d.ts.map +1 -1
- package/dist/lib/config.d.ts +2 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/hooks.d.ts +2 -10
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/messages/index.d.ts +1 -0
- package/dist/lib/messages/index.d.ts.map +1 -1
- package/dist/lib/messages/inject/utils.d.ts +7 -0
- package/dist/lib/messages/inject/utils.d.ts.map +1 -1
- package/dist/lib/messages/utils.d.ts +1 -1
- package/dist/lib/messages/utils.d.ts.map +1 -1
- package/dist/lib/state/state.d.ts.map +1 -1
- package/dist/lib/state/types.d.ts +0 -1
- package/dist/lib/state/types.d.ts.map +1 -1
- package/dist/lib/update.d.ts +22 -0
- package/dist/lib/update.d.ts.map +1 -0
- package/package.json +6 -5
- package/dist/lib/auth.js +0 -32
- package/dist/lib/auth.js.map +0 -1
- package/dist/lib/commands/compression-targets.js +0 -98
- package/dist/lib/commands/compression-targets.js.map +0 -1
- package/dist/lib/commands/context.js +0 -239
- package/dist/lib/commands/context.js.map +0 -1
- package/dist/lib/commands/decompress.js +0 -174
- package/dist/lib/commands/decompress.js.map +0 -1
- package/dist/lib/commands/help.js +0 -52
- package/dist/lib/commands/help.js.map +0 -1
- package/dist/lib/commands/index.js +0 -8
- package/dist/lib/commands/index.js.map +0 -1
- package/dist/lib/commands/manual.js +0 -75
- package/dist/lib/commands/manual.js.map +0 -1
- package/dist/lib/commands/recompress.js +0 -140
- package/dist/lib/commands/recompress.js.map +0 -1
- package/dist/lib/commands/stats.js +0 -97
- package/dist/lib/commands/stats.js.map +0 -1
- package/dist/lib/commands/sweep.js +0 -195
- package/dist/lib/commands/sweep.js.map +0 -1
- package/dist/lib/compress/index.js +0 -3
- package/dist/lib/compress/index.js.map +0 -1
- package/dist/lib/compress/message-utils.js +0 -179
- package/dist/lib/compress/message-utils.js.map +0 -1
- package/dist/lib/compress/message.js +0 -82
- package/dist/lib/compress/message.js.map +0 -1
- package/dist/lib/compress/pipeline.js +0 -41
- package/dist/lib/compress/pipeline.js.map +0 -1
- package/dist/lib/compress/protected-content.js +0 -106
- package/dist/lib/compress/protected-content.js.map +0 -1
- package/dist/lib/compress/range-utils.js +0 -199
- package/dist/lib/compress/range-utils.js.map +0 -1
- package/dist/lib/compress/range.js +0 -90
- package/dist/lib/compress/range.js.map +0 -1
- package/dist/lib/compress/search.js +0 -204
- package/dist/lib/compress/search.js.map +0 -1
- package/dist/lib/compress/state.js +0 -213
- package/dist/lib/compress/state.js.map +0 -1
- package/dist/lib/compress/timing.js +0 -42
- package/dist/lib/compress/timing.js.map +0 -1
- package/dist/lib/compress/types.js +0 -2
- package/dist/lib/compress/types.js.map +0 -1
- package/dist/lib/compress-permission.js +0 -10
- package/dist/lib/compress-permission.js.map +0 -1
- package/dist/lib/config.js +0 -760
- package/dist/lib/config.js.map +0 -1
- package/dist/lib/hooks.js +0 -245
- package/dist/lib/hooks.js.map +0 -1
- package/dist/lib/host-permissions.js +0 -58
- package/dist/lib/host-permissions.js.map +0 -1
- package/dist/lib/logger.js +0 -204
- package/dist/lib/logger.js.map +0 -1
- package/dist/lib/message-ids.js +0 -128
- package/dist/lib/message-ids.js.map +0 -1
- package/dist/lib/messages/index.js +0 -9
- package/dist/lib/messages/index.js.map +0 -1
- package/dist/lib/messages/inject/inject.js +0 -128
- package/dist/lib/messages/inject/inject.js.map +0 -1
- package/dist/lib/messages/inject/subagent-results.js +0 -58
- package/dist/lib/messages/inject/subagent-results.js.map +0 -1
- package/dist/lib/messages/inject/utils.js +0 -211
- package/dist/lib/messages/inject/utils.js.map +0 -1
- package/dist/lib/messages/priority.js +0 -65
- package/dist/lib/messages/priority.js.map +0 -1
- package/dist/lib/messages/prune.js +0 -180
- package/dist/lib/messages/prune.js.map +0 -1
- package/dist/lib/messages/query.js +0 -52
- package/dist/lib/messages/query.js.map +0 -1
- package/dist/lib/messages/reasoning-strip.js +0 -33
- package/dist/lib/messages/reasoning-strip.js.map +0 -1
- package/dist/lib/messages/shape.js +0 -39
- package/dist/lib/messages/shape.js.map +0 -1
- package/dist/lib/messages/sync.js +0 -93
- package/dist/lib/messages/sync.js.map +0 -1
- package/dist/lib/messages/utils.js +0 -146
- package/dist/lib/messages/utils.js.map +0 -1
- package/dist/lib/prompts/compress-message.js +0 -44
- package/dist/lib/prompts/compress-message.js.map +0 -1
- package/dist/lib/prompts/compress-range.js +0 -61
- package/dist/lib/prompts/compress-range.js.map +0 -1
- package/dist/lib/prompts/context-limit-nudge.js +0 -19
- package/dist/lib/prompts/context-limit-nudge.js.map +0 -1
- package/dist/lib/prompts/extensions/nudge.js +0 -35
- package/dist/lib/prompts/extensions/nudge.js.map +0 -1
- package/dist/lib/prompts/extensions/system.js +0 -30
- package/dist/lib/prompts/extensions/system.js.map +0 -1
- package/dist/lib/prompts/extensions/tool.js +0 -34
- package/dist/lib/prompts/extensions/tool.js.map +0 -1
- package/dist/lib/prompts/index.js +0 -18
- package/dist/lib/prompts/index.js.map +0 -1
- package/dist/lib/prompts/iteration-nudge.js +0 -7
- package/dist/lib/prompts/iteration-nudge.js.map +0 -1
- package/dist/lib/prompts/store.js +0 -358
- package/dist/lib/prompts/store.js.map +0 -1
- package/dist/lib/prompts/system.js +0 -34
- package/dist/lib/prompts/system.js.map +0 -1
- package/dist/lib/prompts/turn-nudge.js +0 -11
- package/dist/lib/prompts/turn-nudge.js.map +0 -1
- package/dist/lib/protected-patterns.js +0 -107
- package/dist/lib/protected-patterns.js.map +0 -1
- package/dist/lib/state/index.js +0 -5
- package/dist/lib/state/index.js.map +0 -1
- package/dist/lib/state/persistence.js +0 -172
- package/dist/lib/state/persistence.js.map +0 -1
- package/dist/lib/state/state.js +0 -143
- package/dist/lib/state/state.js.map +0 -1
- package/dist/lib/state/tool-cache.js +0 -69
- package/dist/lib/state/tool-cache.js.map +0 -1
- package/dist/lib/state/types.js +0 -2
- package/dist/lib/state/types.js.map +0 -1
- package/dist/lib/state/utils.js +0 -265
- package/dist/lib/state/utils.js.map +0 -1
- package/dist/lib/strategies/deduplication.js +0 -100
- package/dist/lib/strategies/deduplication.js.map +0 -1
- package/dist/lib/strategies/index.js +0 -3
- package/dist/lib/strategies/index.js.map +0 -1
- package/dist/lib/strategies/purge-errors.js +0 -62
- package/dist/lib/strategies/purge-errors.js.map +0 -1
- package/dist/lib/subagents/subagent-results.js +0 -52
- package/dist/lib/subagents/subagent-results.js.map +0 -1
- package/dist/lib/token-utils.js +0 -133
- package/dist/lib/token-utils.js.map +0 -1
- package/dist/lib/ui/notification.js +0 -243
- package/dist/lib/ui/notification.js.map +0 -1
- package/dist/lib/ui/utils.js +0 -256
- package/dist/lib/ui/utils.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"protected-content.js","sourceRoot":"","sources":["../../../lib/compress/protected-content.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
import { resolveAnchorMessageId, resolveBoundaryIds, resolveSelection } from "./search";
|
|
2
|
-
const BLOCK_PLACEHOLDER_REGEX = /\(b(\d+)\)|\{block_(\d+)\}/gi;
|
|
3
|
-
export function validateArgs(args) {
|
|
4
|
-
if (typeof args.topic !== "string" || args.topic.trim().length === 0) {
|
|
5
|
-
throw new Error("topic is required and must be a non-empty string");
|
|
6
|
-
}
|
|
7
|
-
if (!Array.isArray(args.content) || args.content.length === 0) {
|
|
8
|
-
throw new Error("content is required and must be a non-empty array");
|
|
9
|
-
}
|
|
10
|
-
for (let index = 0; index < args.content.length; index++) {
|
|
11
|
-
const entry = args.content[index];
|
|
12
|
-
const prefix = `content[${index}]`;
|
|
13
|
-
if (typeof entry?.startId !== "string" || entry.startId.trim().length === 0) {
|
|
14
|
-
throw new Error(`${prefix}.startId is required and must be a non-empty string`);
|
|
15
|
-
}
|
|
16
|
-
if (typeof entry?.endId !== "string" || entry.endId.trim().length === 0) {
|
|
17
|
-
throw new Error(`${prefix}.endId is required and must be a non-empty string`);
|
|
18
|
-
}
|
|
19
|
-
if (typeof entry?.summary !== "string" || entry.summary.trim().length === 0) {
|
|
20
|
-
throw new Error(`${prefix}.summary is required and must be a non-empty string`);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
export function resolveRanges(args, searchContext, state) {
|
|
25
|
-
return args.content.map((entry, index) => {
|
|
26
|
-
const normalizedEntry = {
|
|
27
|
-
startId: entry.startId.trim(),
|
|
28
|
-
endId: entry.endId.trim(),
|
|
29
|
-
summary: entry.summary,
|
|
30
|
-
};
|
|
31
|
-
const { startReference, endReference } = resolveBoundaryIds(searchContext, state, normalizedEntry.startId, normalizedEntry.endId);
|
|
32
|
-
const selection = resolveSelection(searchContext, startReference, endReference);
|
|
33
|
-
return {
|
|
34
|
-
index,
|
|
35
|
-
entry: normalizedEntry,
|
|
36
|
-
selection,
|
|
37
|
-
anchorMessageId: resolveAnchorMessageId(startReference),
|
|
38
|
-
};
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
export function validateNonOverlapping(plans) {
|
|
42
|
-
const sortedPlans = [...plans].sort((left, right) => left.selection.startReference.rawIndex - right.selection.startReference.rawIndex ||
|
|
43
|
-
left.selection.endReference.rawIndex - right.selection.endReference.rawIndex ||
|
|
44
|
-
left.index - right.index);
|
|
45
|
-
const issues = [];
|
|
46
|
-
for (let index = 1; index < sortedPlans.length; index++) {
|
|
47
|
-
const previous = sortedPlans[index - 1];
|
|
48
|
-
const current = sortedPlans[index];
|
|
49
|
-
if (!previous || !current) {
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
if (current.selection.startReference.rawIndex > previous.selection.endReference.rawIndex) {
|
|
53
|
-
continue;
|
|
54
|
-
}
|
|
55
|
-
issues.push(`content[${previous.index}] (${previous.entry.startId}..${previous.entry.endId}) overlaps content[${current.index}] (${current.entry.startId}..${current.entry.endId}). Overlapping ranges cannot be compressed in the same batch.`);
|
|
56
|
-
}
|
|
57
|
-
if (issues.length > 0) {
|
|
58
|
-
throw new Error(issues.length === 1 ? issues[0] : issues.map((issue) => `- ${issue}`).join("\n"));
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
export function parseBlockPlaceholders(summary) {
|
|
62
|
-
const placeholders = [];
|
|
63
|
-
const regex = new RegExp(BLOCK_PLACEHOLDER_REGEX);
|
|
64
|
-
let match;
|
|
65
|
-
while ((match = regex.exec(summary)) !== null) {
|
|
66
|
-
const full = match[0];
|
|
67
|
-
const blockIdPart = match[1] || match[2];
|
|
68
|
-
const parsed = Number.parseInt(blockIdPart, 10);
|
|
69
|
-
if (!Number.isInteger(parsed)) {
|
|
70
|
-
continue;
|
|
71
|
-
}
|
|
72
|
-
placeholders.push({
|
|
73
|
-
raw: full,
|
|
74
|
-
blockId: parsed,
|
|
75
|
-
startIndex: match.index,
|
|
76
|
-
endIndex: match.index + full.length,
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
return placeholders;
|
|
80
|
-
}
|
|
81
|
-
export function validateSummaryPlaceholders(placeholders, requiredBlockIds, startReference, endReference, summaryByBlockId) {
|
|
82
|
-
const boundaryOptionalIds = new Set();
|
|
83
|
-
if (startReference.kind === "compressed-block") {
|
|
84
|
-
if (startReference.blockId === undefined) {
|
|
85
|
-
throw new Error("Failed to map boundary matches back to raw messages");
|
|
86
|
-
}
|
|
87
|
-
boundaryOptionalIds.add(startReference.blockId);
|
|
88
|
-
}
|
|
89
|
-
if (endReference.kind === "compressed-block") {
|
|
90
|
-
if (endReference.blockId === undefined) {
|
|
91
|
-
throw new Error("Failed to map boundary matches back to raw messages");
|
|
92
|
-
}
|
|
93
|
-
boundaryOptionalIds.add(endReference.blockId);
|
|
94
|
-
}
|
|
95
|
-
const strictRequiredIds = requiredBlockIds.filter((id) => !boundaryOptionalIds.has(id));
|
|
96
|
-
const requiredSet = new Set(requiredBlockIds);
|
|
97
|
-
const keptPlaceholderIds = new Set();
|
|
98
|
-
const validPlaceholders = [];
|
|
99
|
-
for (const placeholder of placeholders) {
|
|
100
|
-
const isKnown = summaryByBlockId.has(placeholder.blockId);
|
|
101
|
-
const isRequired = requiredSet.has(placeholder.blockId);
|
|
102
|
-
const isDuplicate = keptPlaceholderIds.has(placeholder.blockId);
|
|
103
|
-
if (isKnown && isRequired && !isDuplicate) {
|
|
104
|
-
validPlaceholders.push(placeholder);
|
|
105
|
-
keptPlaceholderIds.add(placeholder.blockId);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
placeholders.length = 0;
|
|
109
|
-
placeholders.push(...validPlaceholders);
|
|
110
|
-
return strictRequiredIds.filter((id) => !keptPlaceholderIds.has(id));
|
|
111
|
-
}
|
|
112
|
-
export function injectBlockPlaceholders(summary, placeholders, summaryByBlockId, startReference, endReference) {
|
|
113
|
-
let cursor = 0;
|
|
114
|
-
let expanded = summary;
|
|
115
|
-
const consumed = [];
|
|
116
|
-
const consumedSeen = new Set();
|
|
117
|
-
if (placeholders.length > 0) {
|
|
118
|
-
expanded = "";
|
|
119
|
-
for (const placeholder of placeholders) {
|
|
120
|
-
const target = summaryByBlockId.get(placeholder.blockId);
|
|
121
|
-
if (!target) {
|
|
122
|
-
throw new Error(`Compressed block not found: (b${placeholder.blockId})`);
|
|
123
|
-
}
|
|
124
|
-
expanded += summary.slice(cursor, placeholder.startIndex);
|
|
125
|
-
expanded += restoreSummary(target.summary);
|
|
126
|
-
cursor = placeholder.endIndex;
|
|
127
|
-
if (!consumedSeen.has(placeholder.blockId)) {
|
|
128
|
-
consumedSeen.add(placeholder.blockId);
|
|
129
|
-
consumed.push(placeholder.blockId);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
expanded += summary.slice(cursor);
|
|
133
|
-
}
|
|
134
|
-
expanded = injectBoundarySummary(expanded, startReference, "start", summaryByBlockId, consumed, consumedSeen);
|
|
135
|
-
expanded = injectBoundarySummary(expanded, endReference, "end", summaryByBlockId, consumed, consumedSeen);
|
|
136
|
-
return {
|
|
137
|
-
expandedSummary: expanded,
|
|
138
|
-
consumedBlockIds: consumed,
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
export function appendMissingBlockSummaries(summary, missingBlockIds, summaryByBlockId, consumedBlockIds) {
|
|
142
|
-
const consumedSeen = new Set(consumedBlockIds);
|
|
143
|
-
const consumed = [...consumedBlockIds];
|
|
144
|
-
const missingSummaries = [];
|
|
145
|
-
for (const blockId of missingBlockIds) {
|
|
146
|
-
if (consumedSeen.has(blockId)) {
|
|
147
|
-
continue;
|
|
148
|
-
}
|
|
149
|
-
const target = summaryByBlockId.get(blockId);
|
|
150
|
-
if (!target) {
|
|
151
|
-
throw new Error(`Compressed block not found: (b${blockId})`);
|
|
152
|
-
}
|
|
153
|
-
missingSummaries.push(`\n### (b${blockId})\n${restoreSummary(target.summary)}`);
|
|
154
|
-
consumedSeen.add(blockId);
|
|
155
|
-
consumed.push(blockId);
|
|
156
|
-
}
|
|
157
|
-
if (missingSummaries.length === 0) {
|
|
158
|
-
return {
|
|
159
|
-
expandedSummary: summary,
|
|
160
|
-
consumedBlockIds: consumed,
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
const heading = "\n\nThe following previously compressed summaries were also part of this conversation section:";
|
|
164
|
-
return {
|
|
165
|
-
expandedSummary: summary + heading + missingSummaries.join(""),
|
|
166
|
-
consumedBlockIds: consumed,
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
function restoreSummary(summary) {
|
|
170
|
-
const headerMatch = summary.match(/^\s*\[Compressed conversation(?: section)?(?: b\d+)?\]/i);
|
|
171
|
-
if (!headerMatch) {
|
|
172
|
-
return summary;
|
|
173
|
-
}
|
|
174
|
-
const afterHeader = summary.slice(headerMatch[0].length);
|
|
175
|
-
const withoutLeadingBreaks = afterHeader.replace(/^(?:\r?\n)+/, "");
|
|
176
|
-
return withoutLeadingBreaks
|
|
177
|
-
.replace(/(?:\r?\n)*<dcp-message-id>b\d+<\/dcp-message-id>\s*$/i, "")
|
|
178
|
-
.replace(/(?:\r?\n)+$/, "");
|
|
179
|
-
}
|
|
180
|
-
function injectBoundarySummary(summary, reference, position, summaryByBlockId, consumed, consumedSeen) {
|
|
181
|
-
if (reference.kind !== "compressed-block" || reference.blockId === undefined) {
|
|
182
|
-
return summary;
|
|
183
|
-
}
|
|
184
|
-
if (consumedSeen.has(reference.blockId)) {
|
|
185
|
-
return summary;
|
|
186
|
-
}
|
|
187
|
-
const target = summaryByBlockId.get(reference.blockId);
|
|
188
|
-
if (!target) {
|
|
189
|
-
throw new Error(`Compressed block not found: (b${reference.blockId})`);
|
|
190
|
-
}
|
|
191
|
-
const injectedBody = restoreSummary(target.summary);
|
|
192
|
-
const left = position === "start" ? injectedBody.trim() : summary.trim();
|
|
193
|
-
const right = position === "start" ? summary.trim() : injectedBody.trim();
|
|
194
|
-
const next = !left ? right : !right ? left : `${left}\n\n${right}`;
|
|
195
|
-
consumedSeen.add(reference.blockId);
|
|
196
|
-
consumed.push(reference.blockId);
|
|
197
|
-
return next;
|
|
198
|
-
}
|
|
199
|
-
//# sourceMappingURL=range-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"range-utils.js","sourceRoot":"","sources":["../../../lib/compress/range-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { tool } from "@opencode-ai/plugin";
|
|
2
|
-
import { countTokens } from "../token-utils";
|
|
3
|
-
import { RANGE_FORMAT_EXTENSION } from "../prompts/extensions/tool";
|
|
4
|
-
import { finalizeSession, prepareSession } from "./pipeline";
|
|
5
|
-
import { appendProtectedTools, appendProtectedUserMessages } from "./protected-content";
|
|
6
|
-
import { appendMissingBlockSummaries, injectBlockPlaceholders, parseBlockPlaceholders, resolveRanges, validateArgs, validateNonOverlapping, validateSummaryPlaceholders, } from "./range-utils";
|
|
7
|
-
import { COMPRESSED_BLOCK_HEADER, allocateBlockId, allocateRunId, applyCompressionState, wrapCompressedSummary, } from "./state";
|
|
8
|
-
function buildSchema() {
|
|
9
|
-
return {
|
|
10
|
-
topic: tool.schema
|
|
11
|
-
.string()
|
|
12
|
-
.describe("Short label (3-5 words) for display - e.g., 'Auth System Exploration'"),
|
|
13
|
-
content: tool.schema
|
|
14
|
-
.array(tool.schema.object({
|
|
15
|
-
startId: tool.schema
|
|
16
|
-
.string()
|
|
17
|
-
.describe("Message or block ID marking the beginning of range (e.g. m0001, b2)"),
|
|
18
|
-
endId: tool.schema
|
|
19
|
-
.string()
|
|
20
|
-
.describe("Message or block ID marking the end of range (e.g. m0012, b5)"),
|
|
21
|
-
summary: tool.schema
|
|
22
|
-
.string()
|
|
23
|
-
.describe("Complete technical summary replacing all content in range"),
|
|
24
|
-
}))
|
|
25
|
-
.describe("One or more ranges to compress, each with start/end boundaries and a summary"),
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
export function createCompressRangeTool(ctx) {
|
|
29
|
-
ctx.prompts.reload();
|
|
30
|
-
const runtimePrompts = ctx.prompts.getRuntimePrompts();
|
|
31
|
-
return tool({
|
|
32
|
-
description: runtimePrompts.compressRange + RANGE_FORMAT_EXTENSION,
|
|
33
|
-
args: buildSchema(),
|
|
34
|
-
async execute(args, toolCtx) {
|
|
35
|
-
const input = args;
|
|
36
|
-
validateArgs(input);
|
|
37
|
-
const callId = typeof toolCtx.callID === "string"
|
|
38
|
-
? toolCtx.callID
|
|
39
|
-
: undefined;
|
|
40
|
-
const { rawMessages, searchContext } = await prepareSession(ctx, toolCtx, `Compress Range: ${input.topic}`);
|
|
41
|
-
const resolvedPlans = resolveRanges(input, searchContext, ctx.state);
|
|
42
|
-
validateNonOverlapping(resolvedPlans);
|
|
43
|
-
const notifications = [];
|
|
44
|
-
const preparedPlans = [];
|
|
45
|
-
let totalCompressedMessages = 0;
|
|
46
|
-
for (const plan of resolvedPlans) {
|
|
47
|
-
const parsedPlaceholders = parseBlockPlaceholders(plan.entry.summary);
|
|
48
|
-
const missingBlockIds = validateSummaryPlaceholders(parsedPlaceholders, plan.selection.requiredBlockIds, plan.selection.startReference, plan.selection.endReference, searchContext.summaryByBlockId);
|
|
49
|
-
const injected = injectBlockPlaceholders(plan.entry.summary, parsedPlaceholders, searchContext.summaryByBlockId, plan.selection.startReference, plan.selection.endReference);
|
|
50
|
-
const summaryWithUsers = appendProtectedUserMessages(injected.expandedSummary, plan.selection, searchContext, ctx.state, ctx.config.compress.protectUserMessages);
|
|
51
|
-
const summaryWithTools = await appendProtectedTools(ctx.client, ctx.state, ctx.config.experimental.allowSubAgents, summaryWithUsers, plan.selection, searchContext, ctx.config.compress.protectedTools, ctx.config.protectedFilePatterns);
|
|
52
|
-
const completedSummary = appendMissingBlockSummaries(summaryWithTools, missingBlockIds, searchContext.summaryByBlockId, injected.consumedBlockIds);
|
|
53
|
-
preparedPlans.push({
|
|
54
|
-
entry: plan.entry,
|
|
55
|
-
selection: plan.selection,
|
|
56
|
-
anchorMessageId: plan.anchorMessageId,
|
|
57
|
-
finalSummary: completedSummary.expandedSummary,
|
|
58
|
-
consumedBlockIds: completedSummary.consumedBlockIds,
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
const runId = allocateRunId(ctx.state);
|
|
62
|
-
for (const preparedPlan of preparedPlans) {
|
|
63
|
-
const blockId = allocateBlockId(ctx.state);
|
|
64
|
-
const storedSummary = wrapCompressedSummary(blockId, preparedPlan.finalSummary);
|
|
65
|
-
const summaryTokens = countTokens(storedSummary);
|
|
66
|
-
const applied = applyCompressionState(ctx.state, {
|
|
67
|
-
topic: input.topic,
|
|
68
|
-
batchTopic: input.topic,
|
|
69
|
-
startId: preparedPlan.entry.startId,
|
|
70
|
-
endId: preparedPlan.entry.endId,
|
|
71
|
-
mode: "range",
|
|
72
|
-
runId,
|
|
73
|
-
compressMessageId: toolCtx.messageID,
|
|
74
|
-
compressCallId: callId,
|
|
75
|
-
summaryTokens,
|
|
76
|
-
}, preparedPlan.selection, preparedPlan.anchorMessageId, blockId, storedSummary, preparedPlan.consumedBlockIds);
|
|
77
|
-
totalCompressedMessages += applied.messageIds.length;
|
|
78
|
-
notifications.push({
|
|
79
|
-
blockId,
|
|
80
|
-
runId,
|
|
81
|
-
summary: preparedPlan.finalSummary,
|
|
82
|
-
summaryTokens,
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
await finalizeSession(ctx, toolCtx, rawMessages, notifications, input.topic);
|
|
86
|
-
return `Compressed ${totalCompressedMessages} messages into ${COMPRESSED_BLOCK_HEADER}.`;
|
|
87
|
-
},
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=range.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"range.js","sourceRoot":"","sources":["../../../lib/compress/range.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
import { formatBlockRef, parseBoundaryId } from "../message-ids";
|
|
2
|
-
import { isIgnoredUserMessage } from "../messages/query";
|
|
3
|
-
import { filterMessages } from "../messages/shape";
|
|
4
|
-
import { countAllMessageTokens } from "../token-utils";
|
|
5
|
-
export async function fetchSessionMessages(client, sessionId) {
|
|
6
|
-
const response = await client.session.messages({
|
|
7
|
-
path: { id: sessionId },
|
|
8
|
-
});
|
|
9
|
-
return filterMessages(response?.data || response);
|
|
10
|
-
}
|
|
11
|
-
export function buildSearchContext(state, rawMessages) {
|
|
12
|
-
const rawMessagesById = new Map();
|
|
13
|
-
const rawIndexById = new Map();
|
|
14
|
-
for (const msg of rawMessages) {
|
|
15
|
-
rawMessagesById.set(msg.info.id, msg);
|
|
16
|
-
}
|
|
17
|
-
for (let index = 0; index < rawMessages.length; index++) {
|
|
18
|
-
const message = rawMessages[index];
|
|
19
|
-
if (!message) {
|
|
20
|
-
continue;
|
|
21
|
-
}
|
|
22
|
-
rawIndexById.set(message.info.id, index);
|
|
23
|
-
}
|
|
24
|
-
const summaryByBlockId = new Map();
|
|
25
|
-
for (const [blockId, block] of state.prune.messages.blocksById) {
|
|
26
|
-
if (!block.active) {
|
|
27
|
-
continue;
|
|
28
|
-
}
|
|
29
|
-
summaryByBlockId.set(blockId, block);
|
|
30
|
-
}
|
|
31
|
-
return {
|
|
32
|
-
rawMessages,
|
|
33
|
-
rawMessagesById,
|
|
34
|
-
rawIndexById,
|
|
35
|
-
summaryByBlockId,
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
export function resolveBoundaryIds(context, state, startId, endId) {
|
|
39
|
-
const lookup = buildBoundaryLookup(context, state);
|
|
40
|
-
const issues = [];
|
|
41
|
-
const parsedStartId = parseBoundaryId(startId);
|
|
42
|
-
const parsedEndId = parseBoundaryId(endId);
|
|
43
|
-
if (parsedStartId === null) {
|
|
44
|
-
issues.push("startId is invalid. Use an injected message ID (mNNNN) or block ID (bN).");
|
|
45
|
-
}
|
|
46
|
-
if (parsedEndId === null) {
|
|
47
|
-
issues.push("endId is invalid. Use an injected message ID (mNNNN) or block ID (bN).");
|
|
48
|
-
}
|
|
49
|
-
if (issues.length > 0) {
|
|
50
|
-
throw new Error(issues.length === 1 ? issues[0] : issues.map((issue) => `- ${issue}`).join("\n"));
|
|
51
|
-
}
|
|
52
|
-
if (!parsedStartId || !parsedEndId) {
|
|
53
|
-
throw new Error("Invalid boundary ID(s)");
|
|
54
|
-
}
|
|
55
|
-
const startReference = lookup.get(parsedStartId.ref);
|
|
56
|
-
const endReference = lookup.get(parsedEndId.ref);
|
|
57
|
-
if (!startReference) {
|
|
58
|
-
issues.push(`startId ${parsedStartId.ref} is not available in the current conversation context. Choose an injected ID visible in context.`);
|
|
59
|
-
}
|
|
60
|
-
if (!endReference) {
|
|
61
|
-
issues.push(`endId ${parsedEndId.ref} is not available in the current conversation context. Choose an injected ID visible in context.`);
|
|
62
|
-
}
|
|
63
|
-
if (issues.length > 0) {
|
|
64
|
-
throw new Error(issues.length === 1 ? issues[0] : issues.map((issue) => `- ${issue}`).join("\n"));
|
|
65
|
-
}
|
|
66
|
-
if (!startReference || !endReference) {
|
|
67
|
-
throw new Error("Failed to resolve boundary IDs");
|
|
68
|
-
}
|
|
69
|
-
if (startReference.rawIndex > endReference.rawIndex) {
|
|
70
|
-
throw new Error(`startId ${parsedStartId.ref} appears after endId ${parsedEndId.ref} in the conversation. Start must come before end.`);
|
|
71
|
-
}
|
|
72
|
-
return { startReference, endReference };
|
|
73
|
-
}
|
|
74
|
-
export function resolveSelection(context, startReference, endReference) {
|
|
75
|
-
const startRawIndex = startReference.rawIndex;
|
|
76
|
-
const endRawIndex = endReference.rawIndex;
|
|
77
|
-
const messageIds = [];
|
|
78
|
-
const messageSeen = new Set();
|
|
79
|
-
const toolIds = [];
|
|
80
|
-
const toolSeen = new Set();
|
|
81
|
-
const requiredBlockIds = [];
|
|
82
|
-
const requiredBlockSeen = new Set();
|
|
83
|
-
const messageTokenById = new Map();
|
|
84
|
-
for (let index = startRawIndex; index <= endRawIndex; index++) {
|
|
85
|
-
const rawMessage = context.rawMessages[index];
|
|
86
|
-
if (!rawMessage) {
|
|
87
|
-
continue;
|
|
88
|
-
}
|
|
89
|
-
if (isIgnoredUserMessage(rawMessage)) {
|
|
90
|
-
continue;
|
|
91
|
-
}
|
|
92
|
-
const messageId = rawMessage.info.id;
|
|
93
|
-
if (!messageSeen.has(messageId)) {
|
|
94
|
-
messageSeen.add(messageId);
|
|
95
|
-
messageIds.push(messageId);
|
|
96
|
-
}
|
|
97
|
-
if (!messageTokenById.has(messageId)) {
|
|
98
|
-
messageTokenById.set(messageId, countAllMessageTokens(rawMessage));
|
|
99
|
-
}
|
|
100
|
-
const parts = Array.isArray(rawMessage.parts) ? rawMessage.parts : [];
|
|
101
|
-
for (const part of parts) {
|
|
102
|
-
if (part.type !== "tool" || !part.callID) {
|
|
103
|
-
continue;
|
|
104
|
-
}
|
|
105
|
-
if (toolSeen.has(part.callID)) {
|
|
106
|
-
continue;
|
|
107
|
-
}
|
|
108
|
-
toolSeen.add(part.callID);
|
|
109
|
-
toolIds.push(part.callID);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
const selectedMessageIds = new Set(messageIds);
|
|
113
|
-
const summariesInSelection = [];
|
|
114
|
-
for (const summary of context.summaryByBlockId.values()) {
|
|
115
|
-
if (!selectedMessageIds.has(summary.anchorMessageId)) {
|
|
116
|
-
continue;
|
|
117
|
-
}
|
|
118
|
-
const anchorIndex = context.rawIndexById.get(summary.anchorMessageId);
|
|
119
|
-
if (anchorIndex === undefined) {
|
|
120
|
-
continue;
|
|
121
|
-
}
|
|
122
|
-
summariesInSelection.push({
|
|
123
|
-
blockId: summary.blockId,
|
|
124
|
-
rawIndex: anchorIndex,
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
summariesInSelection.sort((a, b) => a.rawIndex - b.rawIndex || a.blockId - b.blockId);
|
|
128
|
-
for (const summary of summariesInSelection) {
|
|
129
|
-
if (requiredBlockSeen.has(summary.blockId)) {
|
|
130
|
-
continue;
|
|
131
|
-
}
|
|
132
|
-
requiredBlockSeen.add(summary.blockId);
|
|
133
|
-
requiredBlockIds.push(summary.blockId);
|
|
134
|
-
}
|
|
135
|
-
if (messageIds.length === 0) {
|
|
136
|
-
throw new Error("Failed to map boundary matches back to raw messages. Choose boundaries that include original conversation messages.");
|
|
137
|
-
}
|
|
138
|
-
return {
|
|
139
|
-
startReference,
|
|
140
|
-
endReference,
|
|
141
|
-
messageIds,
|
|
142
|
-
messageTokenById,
|
|
143
|
-
toolIds,
|
|
144
|
-
requiredBlockIds,
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
export function resolveAnchorMessageId(startReference) {
|
|
148
|
-
if (startReference.kind === "compressed-block") {
|
|
149
|
-
if (!startReference.anchorMessageId) {
|
|
150
|
-
throw new Error("Failed to map boundary matches back to raw messages");
|
|
151
|
-
}
|
|
152
|
-
return startReference.anchorMessageId;
|
|
153
|
-
}
|
|
154
|
-
if (!startReference.messageId) {
|
|
155
|
-
throw new Error("Failed to map boundary matches back to raw messages");
|
|
156
|
-
}
|
|
157
|
-
return startReference.messageId;
|
|
158
|
-
}
|
|
159
|
-
function buildBoundaryLookup(context, state) {
|
|
160
|
-
const lookup = new Map();
|
|
161
|
-
for (const [messageRef, messageId] of state.messageIds.byRef) {
|
|
162
|
-
const rawMessage = context.rawMessagesById.get(messageId);
|
|
163
|
-
if (!rawMessage) {
|
|
164
|
-
continue;
|
|
165
|
-
}
|
|
166
|
-
if (isIgnoredUserMessage(rawMessage)) {
|
|
167
|
-
continue;
|
|
168
|
-
}
|
|
169
|
-
const rawIndex = context.rawIndexById.get(messageId);
|
|
170
|
-
if (rawIndex === undefined) {
|
|
171
|
-
continue;
|
|
172
|
-
}
|
|
173
|
-
lookup.set(messageRef, {
|
|
174
|
-
kind: "message",
|
|
175
|
-
rawIndex,
|
|
176
|
-
messageId,
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
const summaries = Array.from(context.summaryByBlockId.values()).sort((a, b) => a.blockId - b.blockId);
|
|
180
|
-
for (const summary of summaries) {
|
|
181
|
-
const anchorMessage = context.rawMessagesById.get(summary.anchorMessageId);
|
|
182
|
-
if (!anchorMessage) {
|
|
183
|
-
continue;
|
|
184
|
-
}
|
|
185
|
-
if (isIgnoredUserMessage(anchorMessage)) {
|
|
186
|
-
continue;
|
|
187
|
-
}
|
|
188
|
-
const rawIndex = context.rawIndexById.get(summary.anchorMessageId);
|
|
189
|
-
if (rawIndex === undefined) {
|
|
190
|
-
continue;
|
|
191
|
-
}
|
|
192
|
-
const blockRef = formatBlockRef(summary.blockId);
|
|
193
|
-
if (!lookup.has(blockRef)) {
|
|
194
|
-
lookup.set(blockRef, {
|
|
195
|
-
kind: "compressed-block",
|
|
196
|
-
rawIndex,
|
|
197
|
-
blockId: summary.blockId,
|
|
198
|
-
anchorMessageId: summary.anchorMessageId,
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
return lookup;
|
|
203
|
-
}
|
|
204
|
-
//# sourceMappingURL=search.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../lib/compress/search.ts"],"names":[],"mappings":"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"}
|