@tarquinen/opencode-dcp 3.0.4 → 3.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 +22 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -9
- package/dist/index.js.map +1 -1
- package/dist/lib/commands/compression-targets.d.ts +13 -0
- package/dist/lib/commands/compression-targets.d.ts.map +1 -0
- package/dist/lib/commands/compression-targets.js +97 -0
- package/dist/lib/commands/compression-targets.js.map +1 -0
- package/dist/lib/commands/context.js +1 -1
- package/dist/lib/commands/context.js.map +1 -1
- package/dist/lib/commands/decompress.d.ts.map +1 -1
- package/dist/lib/commands/decompress.js +43 -28
- package/dist/lib/commands/decompress.js.map +1 -1
- package/dist/lib/commands/manual.d.ts.map +1 -1
- package/dist/lib/commands/manual.js +6 -6
- package/dist/lib/commands/manual.js.map +1 -1
- package/dist/lib/commands/recompress.d.ts.map +1 -1
- package/dist/lib/commands/recompress.js +34 -31
- package/dist/lib/commands/recompress.js.map +1 -1
- package/dist/lib/compress/index.d.ts +4 -0
- package/dist/lib/compress/index.d.ts.map +1 -0
- package/dist/lib/compress/index.js +3 -0
- package/dist/lib/compress/index.js.map +1 -0
- package/dist/lib/compress/message-utils.d.ts +8 -0
- package/dist/lib/compress/message-utils.d.ts.map +1 -0
- package/dist/lib/compress/message-utils.js +123 -0
- package/dist/lib/compress/message-utils.js.map +1 -0
- package/dist/lib/compress/message.d.ts +4 -0
- package/dist/lib/compress/message.d.ts.map +1 -0
- package/dist/lib/compress/message.js +78 -0
- package/dist/lib/compress/message.js.map +1 -0
- package/dist/lib/compress/pipeline.d.ts +29 -0
- package/dist/lib/compress/pipeline.d.ts.map +1 -0
- package/dist/lib/compress/pipeline.js +40 -0
- package/dist/lib/compress/pipeline.js.map +1 -0
- package/dist/lib/compress/protected-content.d.ts +5 -0
- package/dist/lib/compress/protected-content.d.ts.map +1 -0
- package/dist/lib/compress/protected-content.js +106 -0
- package/dist/lib/compress/protected-content.js.map +1 -0
- package/dist/lib/compress/range-utils.d.ts +10 -0
- package/dist/lib/compress/range-utils.d.ts.map +1 -0
- package/dist/lib/compress/range-utils.js +199 -0
- package/dist/lib/compress/range-utils.js.map +1 -0
- package/dist/lib/compress/range.d.ts +4 -0
- package/dist/lib/compress/range.d.ts.map +1 -0
- package/dist/lib/compress/range.js +86 -0
- package/dist/lib/compress/range.js.map +1 -0
- package/dist/lib/compress/search.d.ts +11 -0
- package/dist/lib/compress/search.d.ts.map +1 -0
- package/dist/lib/compress/search.js +204 -0
- package/dist/lib/compress/search.js.map +1 -0
- package/dist/lib/compress/state.d.ts +8 -0
- package/dist/lib/compress/state.d.ts.map +1 -0
- package/dist/lib/compress/state.js +197 -0
- package/dist/lib/compress/state.js.map +1 -0
- package/dist/lib/compress/types.d.ts +92 -0
- package/dist/lib/compress/types.d.ts.map +1 -0
- package/dist/lib/{tools → compress}/types.js.map +1 -1
- package/dist/lib/config.d.ts +5 -7
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +24 -30
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/hooks.js +6 -8
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/message-ids.d.ts +1 -1
- package/dist/lib/message-ids.d.ts.map +1 -1
- package/dist/lib/message-ids.js +19 -3
- package/dist/lib/message-ids.js.map +1 -1
- package/dist/lib/messages/inject/inject.d.ts +3 -2
- package/dist/lib/messages/inject/inject.d.ts.map +1 -1
- package/dist/lib/messages/inject/inject.js +31 -10
- package/dist/lib/messages/inject/inject.js.map +1 -1
- package/dist/lib/messages/inject/utils.d.ts +2 -2
- package/dist/lib/messages/inject/utils.d.ts.map +1 -1
- package/dist/lib/messages/inject/utils.js +102 -42
- package/dist/lib/messages/inject/utils.js.map +1 -1
- package/dist/lib/messages/priority.d.ts +13 -0
- package/dist/lib/messages/priority.d.ts.map +1 -0
- package/dist/lib/messages/priority.js +65 -0
- package/dist/lib/messages/priority.js.map +1 -0
- package/dist/lib/messages/prune.js +6 -4
- package/dist/lib/messages/prune.js.map +1 -1
- package/dist/lib/messages/utils.d.ts +9 -2
- package/dist/lib/messages/utils.d.ts.map +1 -1
- package/dist/lib/messages/utils.js +41 -9
- package/dist/lib/messages/utils.js.map +1 -1
- package/dist/lib/prompts/compress-message.d.ts +2 -0
- package/dist/lib/prompts/compress-message.d.ts.map +1 -0
- package/dist/lib/prompts/compress-message.js +44 -0
- package/dist/lib/prompts/compress-message.js.map +1 -0
- package/dist/lib/prompts/compress-range.d.ts +2 -0
- package/dist/lib/prompts/compress-range.d.ts.map +1 -0
- package/dist/lib/prompts/{compress.js → compress-range.js} +5 -29
- package/dist/lib/prompts/compress-range.js.map +1 -0
- package/dist/lib/prompts/internal-overlays.d.ts +2 -2
- package/dist/lib/prompts/internal-overlays.d.ts.map +1 -1
- package/dist/lib/prompts/internal-overlays.js +17 -11
- package/dist/lib/prompts/internal-overlays.js.map +1 -1
- package/dist/lib/prompts/message-priority-guidance.d.ts +2 -0
- package/dist/lib/prompts/message-priority-guidance.d.ts.map +1 -0
- package/dist/lib/prompts/message-priority-guidance.js +9 -0
- package/dist/lib/prompts/message-priority-guidance.js.map +1 -0
- package/dist/lib/prompts/store.d.ts +3 -2
- package/dist/lib/prompts/store.d.ts.map +1 -1
- package/dist/lib/prompts/store.js +24 -12
- package/dist/lib/prompts/store.js.map +1 -1
- package/dist/lib/prompts/system.d.ts +1 -1
- package/dist/lib/prompts/system.d.ts.map +1 -1
- package/dist/lib/prompts/system.js +26 -9
- package/dist/lib/prompts/system.js.map +1 -1
- package/dist/lib/shared-utils.d.ts +1 -0
- package/dist/lib/shared-utils.d.ts.map +1 -1
- package/dist/lib/shared-utils.js +7 -0
- package/dist/lib/shared-utils.js.map +1 -1
- package/dist/lib/state/persistence.d.ts +1 -0
- package/dist/lib/state/persistence.d.ts.map +1 -1
- package/dist/lib/state/persistence.js +1 -0
- package/dist/lib/state/persistence.js.map +1 -1
- package/dist/lib/state/types.d.ts +6 -0
- package/dist/lib/state/types.d.ts.map +1 -1
- package/dist/lib/state/utils.d.ts +1 -0
- package/dist/lib/state/utils.d.ts.map +1 -1
- package/dist/lib/state/utils.js +31 -9
- package/dist/lib/state/utils.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/utils.d.ts +1 -5
- package/dist/lib/strategies/utils.d.ts.map +1 -1
- package/dist/lib/strategies/utils.js +24 -28
- package/dist/lib/strategies/utils.js.map +1 -1
- package/dist/lib/ui/notification.d.ts +8 -1
- package/dist/lib/ui/notification.d.ts.map +1 -1
- package/dist/lib/ui/notification.js +66 -13
- package/dist/lib/ui/notification.js.map +1 -1
- package/package.json +1 -1
- package/dist/lib/prompts/compress.d.ts +0 -2
- package/dist/lib/prompts/compress.d.ts.map +0 -1
- package/dist/lib/prompts/compress.js.map +0 -1
- package/dist/lib/strategies/supersede-writes.d.ts +0 -13
- package/dist/lib/strategies/supersede-writes.d.ts.map +0 -1
- package/dist/lib/strategies/supersede-writes.js +0 -94
- package/dist/lib/strategies/supersede-writes.js.map +0 -1
- package/dist/lib/tools/compress.d.ts +0 -4
- package/dist/lib/tools/compress.d.ts.map +0 -1
- package/dist/lib/tools/compress.js +0 -110
- package/dist/lib/tools/compress.js.map +0 -1
- package/dist/lib/tools/index.d.ts +0 -3
- package/dist/lib/tools/index.d.ts.map +0 -1
- package/dist/lib/tools/index.js +0 -2
- package/dist/lib/tools/index.js.map +0 -1
- package/dist/lib/tools/types.d.ts +0 -13
- package/dist/lib/tools/types.d.ts.map +0 -1
- package/dist/lib/tools/utils.d.ts +0 -80
- package/dist/lib/tools/utils.d.ts.map +0 -1
- package/dist/lib/tools/utils.js +0 -675
- package/dist/lib/tools/utils.js.map +0 -1
- /package/dist/lib/{tools → compress}/types.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protected-content.js","sourceRoot":"","sources":["../../../lib/compress/protected-content.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CompressionBlock, SessionState } from "../state";
|
|
2
|
+
import type { BoundaryReference, CompressRangeToolArgs, InjectedSummaryResult, ParsedBlockPlaceholder, ResolvedRangeCompression, SearchContext } from "./types";
|
|
3
|
+
export declare function validateArgs(args: CompressRangeToolArgs): void;
|
|
4
|
+
export declare function resolveRanges(args: CompressRangeToolArgs, searchContext: SearchContext, state: SessionState): ResolvedRangeCompression[];
|
|
5
|
+
export declare function validateNonOverlapping(plans: ResolvedRangeCompression[]): void;
|
|
6
|
+
export declare function parseBlockPlaceholders(summary: string): ParsedBlockPlaceholder[];
|
|
7
|
+
export declare function validateSummaryPlaceholders(placeholders: ParsedBlockPlaceholder[], requiredBlockIds: number[], startReference: BoundaryReference, endReference: BoundaryReference, summaryByBlockId: Map<number, CompressionBlock>): number[];
|
|
8
|
+
export declare function injectBlockPlaceholders(summary: string, placeholders: ParsedBlockPlaceholder[], summaryByBlockId: Map<number, CompressionBlock>, startReference: BoundaryReference, endReference: BoundaryReference): InjectedSummaryResult;
|
|
9
|
+
export declare function appendMissingBlockSummaries(summary: string, missingBlockIds: number[], summaryByBlockId: Map<number, CompressionBlock>, consumedBlockIds: number[]): InjectedSummaryResult;
|
|
10
|
+
//# sourceMappingURL=range-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"range-utils.d.ts","sourceRoot":"","sources":["../../../lib/compress/range-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE9D,OAAO,KAAK,EACR,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,aAAa,EAChB,MAAM,SAAS,CAAA;AAIhB,wBAAgB,YAAY,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAyB9D;AAED,wBAAgB,aAAa,CACzB,IAAI,EAAE,qBAAqB,EAC3B,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,YAAY,GACpB,wBAAwB,EAAE,CAuB5B;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,wBAAwB,EAAE,GAAG,IAAI,CA+B9E;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB,EAAE,CAsBhF;AAED,wBAAgB,2BAA2B,CACvC,YAAY,EAAE,sBAAsB,EAAE,EACtC,gBAAgB,EAAE,MAAM,EAAE,EAC1B,cAAc,EAAE,iBAAiB,EACjC,YAAY,EAAE,iBAAiB,EAC/B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAChD,MAAM,EAAE,CAmCV;AAED,wBAAgB,uBAAuB,CACnC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,sBAAsB,EAAE,EACtC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC/C,cAAc,EAAE,iBAAiB,EACjC,YAAY,EAAE,iBAAiB,GAChC,qBAAqB,CAgDvB;AAED,wBAAgB,2BAA2B,CACvC,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EAAE,EACzB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC/C,gBAAgB,EAAE,MAAM,EAAE,GAC3B,qBAAqB,CAkCvB"}
|
|
@@ -0,0 +1,199 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"range-utils.js","sourceRoot":"","sources":["../../../lib/compress/range-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../../../lib/compress/range.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAkD1C,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CA2HjF"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { tool } from "@opencode-ai/plugin";
|
|
2
|
+
import { countTokens } from "../strategies/utils";
|
|
3
|
+
import { RANGE_FORMAT_OVERLAY } from "../prompts/internal-overlays";
|
|
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_OVERLAY,
|
|
33
|
+
args: buildSchema(),
|
|
34
|
+
async execute(args, toolCtx) {
|
|
35
|
+
const input = args;
|
|
36
|
+
validateArgs(input);
|
|
37
|
+
const { rawMessages, searchContext } = await prepareSession(ctx, toolCtx, `Compress Range: ${input.topic}`);
|
|
38
|
+
const resolvedPlans = resolveRanges(input, searchContext, ctx.state);
|
|
39
|
+
validateNonOverlapping(resolvedPlans);
|
|
40
|
+
const notifications = [];
|
|
41
|
+
const preparedPlans = [];
|
|
42
|
+
let totalCompressedMessages = 0;
|
|
43
|
+
for (const plan of resolvedPlans) {
|
|
44
|
+
const parsedPlaceholders = parseBlockPlaceholders(plan.entry.summary);
|
|
45
|
+
const missingBlockIds = validateSummaryPlaceholders(parsedPlaceholders, plan.selection.requiredBlockIds, plan.selection.startReference, plan.selection.endReference, searchContext.summaryByBlockId);
|
|
46
|
+
const injected = injectBlockPlaceholders(plan.entry.summary, parsedPlaceholders, searchContext.summaryByBlockId, plan.selection.startReference, plan.selection.endReference);
|
|
47
|
+
const summaryWithUsers = appendProtectedUserMessages(injected.expandedSummary, plan.selection, searchContext, ctx.state, ctx.config.compress.protectUserMessages);
|
|
48
|
+
const summaryWithTools = await appendProtectedTools(ctx.client, ctx.state, ctx.config.experimental.allowSubAgents, summaryWithUsers, plan.selection, searchContext, ctx.config.compress.protectedTools, ctx.config.protectedFilePatterns);
|
|
49
|
+
const completedSummary = appendMissingBlockSummaries(summaryWithTools, missingBlockIds, searchContext.summaryByBlockId, injected.consumedBlockIds);
|
|
50
|
+
preparedPlans.push({
|
|
51
|
+
entry: plan.entry,
|
|
52
|
+
selection: plan.selection,
|
|
53
|
+
anchorMessageId: plan.anchorMessageId,
|
|
54
|
+
finalSummary: completedSummary.expandedSummary,
|
|
55
|
+
consumedBlockIds: completedSummary.consumedBlockIds,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
const runId = allocateRunId(ctx.state);
|
|
59
|
+
for (const preparedPlan of preparedPlans) {
|
|
60
|
+
const blockId = allocateBlockId(ctx.state);
|
|
61
|
+
const storedSummary = wrapCompressedSummary(blockId, preparedPlan.finalSummary);
|
|
62
|
+
const summaryTokens = countTokens(storedSummary);
|
|
63
|
+
const applied = applyCompressionState(ctx.state, {
|
|
64
|
+
topic: input.topic,
|
|
65
|
+
batchTopic: input.topic,
|
|
66
|
+
startId: preparedPlan.entry.startId,
|
|
67
|
+
endId: preparedPlan.entry.endId,
|
|
68
|
+
mode: "range",
|
|
69
|
+
runId,
|
|
70
|
+
compressMessageId: toolCtx.messageID,
|
|
71
|
+
summaryTokens,
|
|
72
|
+
}, preparedPlan.selection, preparedPlan.anchorMessageId, blockId, storedSummary, preparedPlan.consumedBlockIds);
|
|
73
|
+
totalCompressedMessages += applied.messageIds.length;
|
|
74
|
+
notifications.push({
|
|
75
|
+
blockId,
|
|
76
|
+
runId,
|
|
77
|
+
summary: preparedPlan.finalSummary,
|
|
78
|
+
summaryTokens,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
await finalizeSession(ctx, toolCtx, rawMessages, notifications, input.topic);
|
|
82
|
+
return `Compressed ${totalCompressedMessages} messages into ${COMPRESSED_BLOCK_HEADER}.`;
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=range.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"range.js","sourceRoot":"","sources":["../../../lib/compress/range.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SessionState, WithParts } from "../state";
|
|
2
|
+
import type { BoundaryReference, SearchContext, SelectionResolution } from "./types";
|
|
3
|
+
export declare function fetchSessionMessages(client: any, sessionId: string): Promise<WithParts[]>;
|
|
4
|
+
export declare function buildSearchContext(state: SessionState, rawMessages: WithParts[]): SearchContext;
|
|
5
|
+
export declare function resolveBoundaryIds(context: SearchContext, state: SessionState, startId: string, endId: string): {
|
|
6
|
+
startReference: BoundaryReference;
|
|
7
|
+
endReference: BoundaryReference;
|
|
8
|
+
};
|
|
9
|
+
export declare function resolveSelection(context: SearchContext, startReference: BoundaryReference, endReference: BoundaryReference): SelectionResolution;
|
|
10
|
+
export declare function resolveAnchorMessageId(startReference: BoundaryReference): string;
|
|
11
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../lib/compress/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAIvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAEpF,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAO/F;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,aAAa,CA4B/F;AAED,wBAAgB,kBAAkB,CAC9B,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACd;IAAE,cAAc,EAAE,iBAAiB,CAAC;IAAC,YAAY,EAAE,iBAAiB,CAAA;CAAE,CAwDxE;AAED,wBAAgB,gBAAgB,CAC5B,OAAO,EAAE,aAAa,EACtB,cAAc,EAAE,iBAAiB,EACjC,YAAY,EAAE,iBAAiB,GAChC,mBAAmB,CAoFrB;AAED,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,iBAAiB,GAAG,MAAM,CAYhF"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { formatBlockRef, parseBoundaryId } from "../message-ids";
|
|
2
|
+
import { isIgnoredUserMessage } from "../messages/utils";
|
|
3
|
+
import { countAllMessageTokens } from "../strategies/utils";
|
|
4
|
+
export async function fetchSessionMessages(client, sessionId) {
|
|
5
|
+
const response = await client.session.messages({
|
|
6
|
+
path: { id: sessionId },
|
|
7
|
+
});
|
|
8
|
+
const payload = (response?.data || response);
|
|
9
|
+
return Array.isArray(payload) ? payload : [];
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../lib/compress/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SessionState } from "../state";
|
|
2
|
+
import type { AppliedCompressionResult, CompressionStateInput, SelectionResolution } from "./types";
|
|
3
|
+
export declare const COMPRESSED_BLOCK_HEADER = "[Compressed conversation section]";
|
|
4
|
+
export declare function allocateBlockId(state: SessionState): number;
|
|
5
|
+
export declare function allocateRunId(state: SessionState): number;
|
|
6
|
+
export declare function wrapCompressedSummary(blockId: number, summary: string): string;
|
|
7
|
+
export declare function applyCompressionState(state: SessionState, input: CompressionStateInput, selection: SelectionResolution, anchorMessageId: string, blockId: number, summary: string, consumedBlockIds: number[]): AppliedCompressionResult;
|
|
8
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../lib/compress/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,YAAY,EAAE,MAAM,UAAU,CAAA;AAE9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAEnG,eAAO,MAAM,uBAAuB,sCAAsC,CAAA;AAE1E,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAS3D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CASzD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAQ9E;AAED,wBAAgB,qBAAqB,CACjC,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,qBAAqB,EAC5B,SAAS,EAAE,mBAAmB,EAC9B,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,EAAE,GAC3B,wBAAwB,CAoM1B"}
|