@tarquinen/opencode-dcp 3.2.2-beta0 → 3.2.4-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 +4 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/commands/compression-targets.d.ts +1 -0
- package/dist/lib/commands/compression-targets.d.ts.map +1 -1
- package/dist/lib/commands/compression-targets.js +1 -0
- package/dist/lib/commands/compression-targets.js.map +1 -1
- package/dist/lib/commands/manual.js +1 -1
- package/dist/lib/commands/manual.js.map +1 -1
- package/dist/lib/commands/stats.d.ts.map +1 -1
- package/dist/lib/commands/stats.js +41 -6
- package/dist/lib/commands/stats.js.map +1 -1
- package/dist/lib/compress/message-utils.d.ts +2 -2
- package/dist/lib/compress/message-utils.d.ts.map +1 -1
- package/dist/lib/compress/message-utils.js +87 -31
- package/dist/lib/compress/message-utils.js.map +1 -1
- package/dist/lib/compress/message.d.ts.map +1 -1
- package/dist/lib/compress/message.js +10 -6
- package/dist/lib/compress/message.js.map +1 -1
- package/dist/lib/compress/pipeline.d.ts.map +1 -1
- package/dist/lib/compress/pipeline.js +2 -0
- package/dist/lib/compress/pipeline.js.map +1 -1
- package/dist/lib/compress/range.d.ts.map +1 -1
- package/dist/lib/compress/range.js +6 -2
- package/dist/lib/compress/range.js.map +1 -1
- package/dist/lib/compress/state.d.ts +2 -1
- package/dist/lib/compress/state.d.ts.map +1 -1
- package/dist/lib/compress/state.js +16 -0
- package/dist/lib/compress/state.js.map +1 -1
- package/dist/lib/compress/timing.d.ts +18 -0
- package/dist/lib/compress/timing.d.ts.map +1 -0
- package/dist/lib/compress/timing.js +42 -0
- package/dist/lib/compress/timing.js.map +1 -0
- package/dist/lib/compress/types.d.ts +2 -0
- package/dist/lib/compress/types.d.ts.map +1 -1
- package/dist/lib/config.js +1 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/hooks.d.ts +3 -0
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/hooks.js +72 -2
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/messages/inject/inject.js +2 -2
- package/dist/lib/messages/inject/utils.d.ts +0 -1
- package/dist/lib/messages/inject/utils.d.ts.map +1 -1
- package/dist/lib/messages/inject/utils.js +1 -27
- package/dist/lib/messages/inject/utils.js.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/messages/utils.js +5 -12
- package/dist/lib/messages/utils.js.map +1 -1
- package/dist/lib/prompts/compress-message.d.ts +1 -1
- package/dist/lib/prompts/compress-message.d.ts.map +1 -1
- package/dist/lib/prompts/compress-message.js +11 -12
- package/dist/lib/prompts/compress-message.js.map +1 -1
- package/dist/lib/prompts/compress-range.d.ts +1 -1
- package/dist/lib/prompts/compress-range.d.ts.map +1 -1
- package/dist/lib/prompts/compress-range.js +1 -1
- package/dist/lib/prompts/context-limit-nudge.d.ts +1 -1
- package/dist/lib/prompts/context-limit-nudge.d.ts.map +1 -1
- package/dist/lib/prompts/context-limit-nudge.js +3 -9
- package/dist/lib/prompts/context-limit-nudge.js.map +1 -1
- package/dist/lib/prompts/extensions/nudge.d.ts +5 -0
- package/dist/lib/prompts/extensions/nudge.d.ts.map +1 -0
- package/dist/lib/prompts/extensions/nudge.js +35 -0
- package/dist/lib/prompts/extensions/nudge.js.map +1 -0
- package/dist/lib/prompts/extensions/system.d.ts +4 -0
- package/dist/lib/prompts/extensions/system.d.ts.map +1 -0
- package/dist/lib/prompts/extensions/system.js +30 -0
- package/dist/lib/prompts/extensions/system.js.map +1 -0
- package/dist/lib/prompts/extensions/tool.d.ts +3 -0
- package/dist/lib/prompts/extensions/tool.d.ts.map +1 -0
- package/dist/lib/prompts/extensions/tool.js +34 -0
- package/dist/lib/prompts/extensions/tool.js.map +1 -0
- package/dist/lib/prompts/index.d.ts +1 -1
- package/dist/lib/prompts/index.d.ts.map +1 -1
- package/dist/lib/prompts/index.js +12 -13
- package/dist/lib/prompts/index.js.map +1 -1
- package/dist/lib/prompts/iteration-nudge.d.ts +1 -1
- package/dist/lib/prompts/iteration-nudge.d.ts.map +1 -1
- package/dist/lib/prompts/iteration-nudge.js +0 -2
- package/dist/lib/prompts/iteration-nudge.js.map +1 -1
- package/dist/lib/prompts/store.d.ts +2 -2
- package/dist/lib/prompts/store.d.ts.map +1 -1
- package/dist/lib/prompts/store.js +6 -6
- 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 +0 -13
- package/dist/lib/prompts/system.js.map +1 -1
- package/dist/lib/prompts/turn-nudge.d.ts +1 -1
- package/dist/lib/prompts/turn-nudge.d.ts.map +1 -1
- package/dist/lib/prompts/turn-nudge.js +1 -2
- package/dist/lib/prompts/turn-nudge.js.map +1 -1
- package/dist/lib/state/persistence.d.ts.map +1 -1
- package/dist/lib/state/persistence.js +13 -16
- 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 +9 -0
- package/dist/lib/state/state.js.map +1 -1
- package/dist/lib/state/types.d.ts +4 -0
- package/dist/lib/state/types.d.ts.map +1 -1
- package/dist/lib/state/utils.d.ts +7 -6
- package/dist/lib/state/utils.d.ts.map +1 -1
- package/dist/lib/state/utils.js +17 -0
- package/dist/lib/state/utils.js.map +1 -1
- package/lib/compress/index.ts +3 -0
- package/lib/compress/message-utils.ts +250 -0
- package/lib/compress/message.ts +137 -0
- package/lib/compress/pipeline.ts +106 -0
- package/lib/compress/protected-content.ts +154 -0
- package/lib/compress/range-utils.ts +308 -0
- package/lib/compress/range.ts +180 -0
- package/lib/compress/search.ts +267 -0
- package/lib/compress/state.ts +268 -0
- package/lib/compress/timing.ts +77 -0
- package/lib/compress/types.ts +108 -0
- package/lib/config.ts +1 -1
- package/lib/message-ids.ts +172 -0
- package/lib/state/persistence.ts +20 -24
- package/lib/state/state.ts +10 -0
- package/lib/state/types.ts +4 -0
- package/lib/state/utils.ts +30 -6
- package/package.json +12 -5
- package/dist/lib/prompts/internal-overlays.d.ts +0 -5
- package/dist/lib/prompts/internal-overlays.d.ts.map +0 -1
- package/dist/lib/prompts/internal-overlays.js +0 -49
- package/dist/lib/prompts/internal-overlays.js.map +0 -1
- package/dist/lib/prompts/message-priority-guidance.d.ts +0 -2
- package/dist/lib/prompts/message-priority-guidance.d.ts.map +0 -1
- package/dist/lib/prompts/message-priority-guidance.js +0 -9
- package/dist/lib/prompts/message-priority-guidance.js.map +0 -1
package/README.md
CHANGED
|
@@ -9,25 +9,13 @@ Automatically reduces token usage in OpenCode by managing conversation context.
|
|
|
9
9
|
|
|
10
10
|
## Installation
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
Install with the OpenCode CLI:
|
|
13
13
|
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
{
|
|
17
|
-
"plugin": ["@tarquinen/opencode-dcp@beta"],
|
|
18
|
-
}
|
|
14
|
+
```bash
|
|
15
|
+
opencode plugin @tarquinen/opencode-dcp@beta --global
|
|
19
16
|
```
|
|
20
17
|
|
|
21
|
-
|
|
22
|
-
// tui.jsonc
|
|
23
|
-
{
|
|
24
|
-
"plugin": ["@tarquinen/opencode-dcp@beta"],
|
|
25
|
-
}
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Using `@beta` keeps you on the current prerelease channel when OpenCode starts.
|
|
29
|
-
|
|
30
|
-
Restart OpenCode. The plugin will automatically start optimizing your sessions.
|
|
18
|
+
This installs the package and adds it to your global OpenCode config.
|
|
31
19
|
|
|
32
20
|
## How It Works
|
|
33
21
|
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;;;;;AAyIjD,wBAGC"}
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import { compressDisabledByOpencode, hasExplicitToolPermission, } from "./lib/ho
|
|
|
4
4
|
import { Logger } from "./lib/logger";
|
|
5
5
|
import { createSessionState } from "./lib/state";
|
|
6
6
|
import { PromptStore } from "./lib/prompts/store";
|
|
7
|
-
import { createChatMessageHandler, createChatMessageTransformHandler, createCommandExecuteHandler, createSystemPromptHandler, createTextCompleteHandler, } from "./lib/hooks";
|
|
7
|
+
import { createChatMessageHandler, createChatMessageTransformHandler, createCommandExecuteHandler, createEventHandler, createSystemPromptHandler, createTextCompleteHandler, } from "./lib/hooks";
|
|
8
8
|
import { configureClientAuth, isSecureMode } from "./lib/auth";
|
|
9
9
|
const id = "opencode-dynamic-context-pruning";
|
|
10
10
|
const server = (async (ctx) => {
|
|
@@ -39,6 +39,7 @@ const server = (async (ctx) => {
|
|
|
39
39
|
"chat.message": createChatMessageHandler(state, logger, config, hostPermissions),
|
|
40
40
|
"experimental.text.complete": createTextCompleteHandler(),
|
|
41
41
|
"command.execute.before": createCommandExecuteHandler(ctx.client, state, logger, config, ctx.directory, hostPermissions),
|
|
42
|
+
event: createEventHandler(state, logger),
|
|
42
43
|
tool: {
|
|
43
44
|
...(config.compress.permission !== "deny" && {
|
|
44
45
|
compress: config.compress.mode === "message"
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AACnF,OAAO,EACH,0BAA0B,EAC1B,yBAAyB,GAE5B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EACH,wBAAwB,EACxB,iCAAiC,EACjC,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,GAC5B,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9D,MAAM,EAAE,GAAG,kCAAkC,CAAA;AAE7C,MAAM,MAAM,GAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAClC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;IAE7B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,EAAE,CAAA;IACb,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAA;IAClC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;IACzF,MAAM,eAAe,GAA2B;QAC5C,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,EAAE;KACb,CAAA;IAED,IAAI,YAAY,EAAE,EAAE,CAAC;QACjB,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC/B,wEAAwE;IAC5E,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;QAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;KAChC,CAAC,CAAA;IAEF,MAAM,mBAAmB,GAAG;QACxB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,KAAK;QACL,MAAM;QACN,MAAM;QACN,OAAO;KACV,CAAA;IAED,OAAO;QACH,oCAAoC,EAAE,yBAAyB,CAC3D,KAAK,EACL,MAAM,EACN,MAAM,EACN,OAAO,CACV;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compression-targets.d.ts","sourceRoot":"","sources":["../../../lib/commands/compression-targets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAEpE,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,gBAAgB,EAAE,CAAA;CAC7B;
|
|
1
|
+
{"version":3,"file":"compression-targets.d.ts","sourceRoot":"","sources":["../../../lib/commands/compression-targets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAEpE,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,gBAAgB,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,gBAAgB,EAAE,CAAA;CAC7B;AA2DD,wBAAgB,2BAA2B,CACvC,aAAa,EAAE,kBAAkB,GAClC,iBAAiB,EAAE,CAMrB;AAED,wBAAgB,mCAAmC,CAC/C,aAAa,EAAE,kBAAkB,EACjC,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,GACjC,iBAAiB,EAAE,CA+BrB;AAED,wBAAgB,wBAAwB,CACpC,aAAa,EAAE,kBAAkB,EACjC,OAAO,EAAE,MAAM,GAChB,iBAAiB,GAAG,IAAI,CAkB1B"}
|
|
@@ -13,6 +13,7 @@ function buildTarget(blocks) {
|
|
|
13
13
|
runId: first.runId,
|
|
14
14
|
topic: grouped ? first.batchTopic || first.topic : first.topic,
|
|
15
15
|
compressedTokens: ordered.reduce((total, block) => total + block.compressedTokens, 0),
|
|
16
|
+
durationMs: ordered.reduce((total, block) => Math.max(total, block.durationMs), 0),
|
|
16
17
|
grouped,
|
|
17
18
|
blocks: ordered,
|
|
18
19
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compression-targets.js","sourceRoot":"","sources":["../../../lib/commands/compression-targets.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compression-targets.js","sourceRoot":"","sources":["../../../lib/commands/compression-targets.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { sendIgnoredMessage } from "../ui/notification";
|
|
10
10
|
import { getCurrentParams } from "../token-utils";
|
|
11
|
-
import { buildCompressedBlockGuidance } from "../
|
|
11
|
+
import { buildCompressedBlockGuidance } from "../prompts/extensions/nudge";
|
|
12
12
|
import { isIgnoredUserMessage } from "../messages/query";
|
|
13
13
|
const MANUAL_MODE_ON = "Manual mode is now ON. Use /dcp compress to trigger context tools manually.";
|
|
14
14
|
const MANUAL_MODE_OFF = "Manual mode is now OFF.";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manual.js","sourceRoot":"","sources":["../../../lib/commands/manual.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"manual.js","sourceRoot":"","sources":["../../../lib/commands/manual.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../lib/commands/stats.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../lib/commands/stats.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAOvD,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,GAAG,CAAA;IACX,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,SAAS,EAAE,CAAA;CACxB;AAwED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDhF"}
|
|
@@ -6,17 +6,20 @@ import { sendIgnoredMessage } from "../ui/notification";
|
|
|
6
6
|
import { formatTokenCount } from "../ui/utils";
|
|
7
7
|
import { loadAllSessionStats } from "../state/persistence";
|
|
8
8
|
import { getCurrentParams } from "../token-utils";
|
|
9
|
-
|
|
9
|
+
import { getActiveCompressionTargets } from "./compression-targets";
|
|
10
|
+
function formatStatsMessage(sessionTokens, sessionSummaryTokens, sessionTools, sessionMessages, sessionDurationMs, allTime) {
|
|
10
11
|
const lines = [];
|
|
11
12
|
lines.push("╭───────────────────────────────────────────────────────────╮");
|
|
12
13
|
lines.push("│ DCP Statistics │");
|
|
13
14
|
lines.push("╰───────────────────────────────────────────────────────────╯");
|
|
14
15
|
lines.push("");
|
|
15
|
-
lines.push("
|
|
16
|
+
lines.push("Compression:");
|
|
16
17
|
lines.push("─".repeat(60));
|
|
17
|
-
lines.push(` Tokens
|
|
18
|
-
lines.push(`
|
|
19
|
-
lines.push(`
|
|
18
|
+
lines.push(` Tokens in|out: ~${formatTokenCount(sessionTokens)} | ~${formatTokenCount(sessionSummaryTokens)}`);
|
|
19
|
+
lines.push(` Ratio: ${formatCompressionRatio(sessionTokens, sessionSummaryTokens)}`);
|
|
20
|
+
lines.push(` Time: ${formatCompressionTime(sessionDurationMs)}`);
|
|
21
|
+
lines.push(` Messages: ${sessionMessages}`);
|
|
22
|
+
lines.push(` Tools: ${sessionTools}`);
|
|
20
23
|
lines.push("");
|
|
21
24
|
lines.push("All-time:");
|
|
22
25
|
lines.push("─".repeat(60));
|
|
@@ -26,10 +29,40 @@ function formatStatsMessage(sessionTokens, sessionTools, sessionMessages, allTim
|
|
|
26
29
|
lines.push(` Sessions: ${allTime.sessionCount}`);
|
|
27
30
|
return lines.join("\n");
|
|
28
31
|
}
|
|
32
|
+
function formatCompressionRatio(inputTokens, outputTokens) {
|
|
33
|
+
if (inputTokens <= 0) {
|
|
34
|
+
return "0:1";
|
|
35
|
+
}
|
|
36
|
+
if (outputTokens <= 0) {
|
|
37
|
+
return "∞:1";
|
|
38
|
+
}
|
|
39
|
+
const ratio = Math.max(1, Math.round(inputTokens / outputTokens));
|
|
40
|
+
return `${ratio}:1`;
|
|
41
|
+
}
|
|
42
|
+
function formatCompressionTime(ms) {
|
|
43
|
+
const safeMs = Math.max(0, Math.round(ms));
|
|
44
|
+
if (safeMs < 1000) {
|
|
45
|
+
return `${safeMs} ms`;
|
|
46
|
+
}
|
|
47
|
+
const totalSeconds = safeMs / 1000;
|
|
48
|
+
if (totalSeconds < 60) {
|
|
49
|
+
return `${totalSeconds.toFixed(1)} s`;
|
|
50
|
+
}
|
|
51
|
+
const wholeSeconds = Math.floor(totalSeconds);
|
|
52
|
+
const hours = Math.floor(wholeSeconds / 3600);
|
|
53
|
+
const minutes = Math.floor((wholeSeconds % 3600) / 60);
|
|
54
|
+
const seconds = wholeSeconds % 60;
|
|
55
|
+
if (hours > 0) {
|
|
56
|
+
return `${hours}h ${minutes}m ${seconds}s`;
|
|
57
|
+
}
|
|
58
|
+
return `${minutes}m ${seconds}s`;
|
|
59
|
+
}
|
|
29
60
|
export async function handleStatsCommand(ctx) {
|
|
30
61
|
const { client, state, logger, sessionId, messages } = ctx;
|
|
31
62
|
// Session stats from in-memory state
|
|
32
63
|
const sessionTokens = state.stats.totalPruneTokens;
|
|
64
|
+
const sessionSummaryTokens = Array.from(state.prune.messages.blocksById.values()).reduce((total, block) => (block.active ? total + block.summaryTokens : total), 0);
|
|
65
|
+
const sessionDurationMs = getActiveCompressionTargets(state.prune.messages).reduce((total, target) => total + target.durationMs, 0);
|
|
33
66
|
const prunedToolIds = new Set(state.prune.tools.keys());
|
|
34
67
|
for (const block of state.prune.messages.blocksById.values()) {
|
|
35
68
|
if (block.active) {
|
|
@@ -47,13 +80,15 @@ export async function handleStatsCommand(ctx) {
|
|
|
47
80
|
}
|
|
48
81
|
// All-time stats from storage files
|
|
49
82
|
const allTime = await loadAllSessionStats(logger);
|
|
50
|
-
const message = formatStatsMessage(sessionTokens, sessionTools, sessionMessages, allTime);
|
|
83
|
+
const message = formatStatsMessage(sessionTokens, sessionSummaryTokens, sessionTools, sessionMessages, sessionDurationMs, allTime);
|
|
51
84
|
const params = getCurrentParams(state, messages, logger);
|
|
52
85
|
await sendIgnoredMessage(client, sessionId, message, params, logger);
|
|
53
86
|
logger.info("Stats command executed", {
|
|
54
87
|
sessionTokens,
|
|
88
|
+
sessionSummaryTokens,
|
|
55
89
|
sessionTools,
|
|
56
90
|
sessionMessages,
|
|
91
|
+
sessionDurationMs,
|
|
57
92
|
allTimeTokens: allTime.totalTokens,
|
|
58
93
|
allTimeTools: allTime.totalTools,
|
|
59
94
|
allTimeMessages: allTime.totalMessages,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../lib/commands/stats.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAwB,MAAM,sBAAsB,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../lib/commands/stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import type { PluginConfig } from "../config";
|
|
|
2
2
|
import type { SessionState } from "../state";
|
|
3
3
|
import type { CompressMessageToolArgs, ResolvedMessageCompressionsResult, SearchContext } from "./types";
|
|
4
4
|
export declare function validateArgs(args: CompressMessageToolArgs): void;
|
|
5
|
-
export declare function formatResult(processedCount: number, skippedIssues: string[]): string;
|
|
6
|
-
export declare function formatIssues(skippedIssues: string[]): string;
|
|
5
|
+
export declare function formatResult(processedCount: number, skippedIssues: string[], skippedCount: number): string;
|
|
6
|
+
export declare function formatIssues(skippedIssues: string[], skippedCount: number): string;
|
|
7
7
|
export declare function resolveMessages(args: CompressMessageToolArgs, searchContext: SearchContext, state: SessionState, config: PluginConfig): ResolvedMessageCompressionsResult;
|
|
8
8
|
//# sourceMappingURL=message-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-utils.d.ts","sourceRoot":"","sources":["../../../lib/compress/message-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAK5C,OAAO,KAAK,EAER,uBAAuB,EAEvB,iCAAiC,EACjC,aAAa,EAChB,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"message-utils.d.ts","sourceRoot":"","sources":["../../../lib/compress/message-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAK5C,OAAO,KAAK,EAER,uBAAuB,EAEvB,iCAAiC,EACjC,aAAa,EAChB,MAAM,SAAS,CAAA;AAiBhB,wBAAgB,YAAY,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAyBhE;AAED,wBAAgB,YAAY,CACxB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EAAE,EACvB,YAAY,EAAE,MAAM,GACrB,MAAM,CAcR;AAED,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAIlF;AAkED,wBAAgB,eAAe,CAC3B,IAAI,EAAE,uBAAuB,EAC7B,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,YAAY,GACrB,iCAAiC,CAuCnC"}
|
|
@@ -3,6 +3,13 @@ import { isIgnoredUserMessage, isProtectedUserMessage } from "../messages/query"
|
|
|
3
3
|
import { resolveAnchorMessageId, resolveBoundaryIds, resolveSelection } from "./search";
|
|
4
4
|
import { COMPRESSED_BLOCK_HEADER } from "./state";
|
|
5
5
|
class SoftIssue extends Error {
|
|
6
|
+
kind;
|
|
7
|
+
messageId;
|
|
8
|
+
constructor(kind, messageId, message) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.kind = kind;
|
|
11
|
+
this.messageId = messageId;
|
|
12
|
+
}
|
|
6
13
|
}
|
|
7
14
|
export function validateArgs(args) {
|
|
8
15
|
if (typeof args.topic !== "string" || args.topic.trim().length === 0) {
|
|
@@ -25,22 +32,79 @@ export function validateArgs(args) {
|
|
|
25
32
|
}
|
|
26
33
|
}
|
|
27
34
|
}
|
|
28
|
-
export function formatResult(processedCount, skippedIssues) {
|
|
35
|
+
export function formatResult(processedCount, skippedIssues, skippedCount) {
|
|
29
36
|
const messageNoun = processedCount === 1 ? "message" : "messages";
|
|
30
37
|
const processedText = processedCount > 0
|
|
31
38
|
? `Compressed ${processedCount} ${messageNoun} into ${COMPRESSED_BLOCK_HEADER}.`
|
|
32
39
|
: "Compressed 0 messages.";
|
|
33
|
-
if (
|
|
40
|
+
if (skippedCount === 0) {
|
|
34
41
|
return processedText;
|
|
35
42
|
}
|
|
36
|
-
const issueNoun =
|
|
43
|
+
const issueNoun = skippedCount === 1 ? "issue" : "issues";
|
|
37
44
|
const issueLines = skippedIssues.map((issue) => `- ${issue}`).join("\n");
|
|
38
|
-
return `${processedText}\nSkipped ${
|
|
45
|
+
return `${processedText}\nSkipped ${skippedCount} ${issueNoun}:\n${issueLines}`;
|
|
39
46
|
}
|
|
40
|
-
export function formatIssues(skippedIssues) {
|
|
41
|
-
const issueNoun =
|
|
47
|
+
export function formatIssues(skippedIssues, skippedCount) {
|
|
48
|
+
const issueNoun = skippedCount === 1 ? "issue" : "issues";
|
|
42
49
|
const issueLines = skippedIssues.map((issue) => `- ${issue}`).join("\n");
|
|
43
|
-
return `Unable to compress any messages. Found ${
|
|
50
|
+
return `Unable to compress any messages. Found ${skippedCount} ${issueNoun}:\n${issueLines}`;
|
|
51
|
+
}
|
|
52
|
+
const ISSUE_TEMPLATES = {
|
|
53
|
+
blocked: [
|
|
54
|
+
"refers to a protected message and cannot be compressed.",
|
|
55
|
+
"refer to protected messages and cannot be compressed.",
|
|
56
|
+
],
|
|
57
|
+
"invalid-format": [
|
|
58
|
+
"is invalid. Use an injected raw message ID of the form mNNNN.",
|
|
59
|
+
"are invalid. Use injected raw message IDs of the form mNNNN.",
|
|
60
|
+
],
|
|
61
|
+
"block-id": [
|
|
62
|
+
"is invalid here. Block IDs like bN are not allowed; use an mNNNN message ID instead.",
|
|
63
|
+
"are invalid here. Block IDs like bN are not allowed; use mNNNN message IDs instead.",
|
|
64
|
+
],
|
|
65
|
+
"not-in-context": [
|
|
66
|
+
"is not available in the current conversation context. Choose an injected mNNNN ID visible in context.",
|
|
67
|
+
"are not available in the current conversation context. Choose injected mNNNN IDs visible in context.",
|
|
68
|
+
],
|
|
69
|
+
protected: [
|
|
70
|
+
"refers to a protected message and cannot be compressed.",
|
|
71
|
+
"refer to protected messages and cannot be compressed.",
|
|
72
|
+
],
|
|
73
|
+
"already-compressed": [
|
|
74
|
+
"is already part of an active compression.",
|
|
75
|
+
"are already part of active compressions.",
|
|
76
|
+
],
|
|
77
|
+
duplicate: [
|
|
78
|
+
"was selected more than once in this batch.",
|
|
79
|
+
"were each selected more than once in this batch.",
|
|
80
|
+
],
|
|
81
|
+
};
|
|
82
|
+
function formatSkippedGroup(kind, messageIds) {
|
|
83
|
+
const templates = ISSUE_TEMPLATES[kind];
|
|
84
|
+
const ids = messageIds.join(", ");
|
|
85
|
+
const single = messageIds.length === 1;
|
|
86
|
+
const prefix = single ? "messageId" : "messageIds";
|
|
87
|
+
if (!templates) {
|
|
88
|
+
return `${prefix} ${ids}: unknown issue.`;
|
|
89
|
+
}
|
|
90
|
+
return `${prefix} ${ids} ${single ? templates[0] : templates[1]}`;
|
|
91
|
+
}
|
|
92
|
+
function groupSkippedIssues(issues) {
|
|
93
|
+
const groups = new Map();
|
|
94
|
+
const order = [];
|
|
95
|
+
for (const issue of issues) {
|
|
96
|
+
let ids = groups.get(issue.kind);
|
|
97
|
+
if (!ids) {
|
|
98
|
+
ids = [];
|
|
99
|
+
groups.set(issue.kind, ids);
|
|
100
|
+
order.push(issue.kind);
|
|
101
|
+
}
|
|
102
|
+
ids.push(issue.messageId);
|
|
103
|
+
}
|
|
104
|
+
return order.map((kind) => {
|
|
105
|
+
const ids = groups.get(kind);
|
|
106
|
+
return formatSkippedGroup(kind, ids);
|
|
107
|
+
});
|
|
44
108
|
}
|
|
45
109
|
export function resolveMessages(args, searchContext, state, config) {
|
|
46
110
|
const issues = [];
|
|
@@ -49,7 +113,7 @@ export function resolveMessages(args, searchContext, state, config) {
|
|
|
49
113
|
for (const entry of args.content) {
|
|
50
114
|
const normalizedMessageId = entry.messageId.trim();
|
|
51
115
|
if (seenMessageIds.has(normalizedMessageId)) {
|
|
52
|
-
issues.push(
|
|
116
|
+
issues.push({ kind: "duplicate", messageId: normalizedMessageId });
|
|
53
117
|
continue;
|
|
54
118
|
}
|
|
55
119
|
try {
|
|
@@ -62,7 +126,7 @@ export function resolveMessages(args, searchContext, state, config) {
|
|
|
62
126
|
}
|
|
63
127
|
catch (error) {
|
|
64
128
|
if (error instanceof SoftIssue) {
|
|
65
|
-
issues.push(error.
|
|
129
|
+
issues.push({ kind: error.kind, messageId: error.messageId });
|
|
66
130
|
continue;
|
|
67
131
|
}
|
|
68
132
|
throw error;
|
|
@@ -70,45 +134,37 @@ export function resolveMessages(args, searchContext, state, config) {
|
|
|
70
134
|
}
|
|
71
135
|
return {
|
|
72
136
|
plans,
|
|
73
|
-
skippedIssues: issues,
|
|
137
|
+
skippedIssues: groupSkippedIssues(issues),
|
|
138
|
+
skippedCount: issues.length,
|
|
74
139
|
};
|
|
75
140
|
}
|
|
76
141
|
function resolveMessage(entry, searchContext, state, config) {
|
|
77
142
|
if (entry.messageId.toUpperCase() === "BLOCKED") {
|
|
78
|
-
throw new SoftIssue("
|
|
143
|
+
throw new SoftIssue("blocked", "BLOCKED", "protected message");
|
|
79
144
|
}
|
|
80
145
|
const parsed = parseBoundaryId(entry.messageId);
|
|
81
146
|
if (!parsed) {
|
|
82
|
-
throw new
|
|
147
|
+
throw new SoftIssue("invalid-format", entry.messageId, "invalid format");
|
|
83
148
|
}
|
|
84
149
|
if (parsed.kind === "compressed-block") {
|
|
85
|
-
throw new SoftIssue(
|
|
150
|
+
throw new SoftIssue("block-id", entry.messageId, "block ID used");
|
|
86
151
|
}
|
|
87
152
|
const messageId = state.messageIds.byRef.get(parsed.ref);
|
|
88
153
|
const rawMessage = messageId ? searchContext.rawMessagesById.get(messageId) : undefined;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
searchContext.rawIndexById.has(messageId)
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
throw new SoftIssue(`messageId ${parsed.ref} is not available in the current conversation context. Choose an injected mNNNN ID visible in context.`);
|
|
154
|
+
if (!messageId ||
|
|
155
|
+
!rawMessage ||
|
|
156
|
+
!searchContext.rawIndexById.has(messageId) ||
|
|
157
|
+
isIgnoredUserMessage(rawMessage)) {
|
|
158
|
+
throw new SoftIssue("not-in-context", parsed.ref, "not in context");
|
|
95
159
|
}
|
|
96
160
|
const { startReference, endReference } = resolveBoundaryIds(searchContext, state, parsed.ref, parsed.ref);
|
|
97
161
|
const selection = resolveSelection(searchContext, startReference, endReference);
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
throw new Error(`messageId ${parsed.ref} could not be resolved to a raw message.`);
|
|
101
|
-
}
|
|
102
|
-
const message = searchContext.rawMessagesById.get(rawMessageId);
|
|
103
|
-
if (!message) {
|
|
104
|
-
throw new Error(`messageId ${parsed.ref} is not available in the current conversation.`);
|
|
105
|
-
}
|
|
106
|
-
if (isProtectedUserMessage(config, message)) {
|
|
107
|
-
throw new SoftIssue(`messageId ${parsed.ref} refers to a protected message and cannot be compressed.`);
|
|
162
|
+
if (isProtectedUserMessage(config, rawMessage)) {
|
|
163
|
+
throw new SoftIssue("protected", parsed.ref, "protected message");
|
|
108
164
|
}
|
|
109
|
-
const pruneEntry = state.prune.messages.byMessageId.get(
|
|
165
|
+
const pruneEntry = state.prune.messages.byMessageId.get(messageId);
|
|
110
166
|
if (pruneEntry && pruneEntry.activeBlockIds.length > 0) {
|
|
111
|
-
throw new
|
|
167
|
+
throw new SoftIssue("already-compressed", parsed.ref, "already compressed");
|
|
112
168
|
}
|
|
113
169
|
return {
|
|
114
170
|
entry: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-utils.js","sourceRoot":"","sources":["../../../lib/compress/message-utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAChF,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"message-utils.js","sourceRoot":"","sources":["../../../lib/compress/message-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../lib/compress/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAuC1C,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../lib/compress/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAuC1C,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAgGnF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { tool } from "@opencode-ai/plugin";
|
|
2
2
|
import { countTokens } from "../token-utils";
|
|
3
|
-
import {
|
|
3
|
+
import { MESSAGE_FORMAT_EXTENSION } from "../prompts/extensions/tool";
|
|
4
4
|
import { formatIssues, formatResult, resolveMessages, validateArgs } from "./message-utils";
|
|
5
5
|
import { finalizeSession, prepareSession } from "./pipeline";
|
|
6
6
|
import { appendProtectedTools } from "./protected-content";
|
|
@@ -29,15 +29,18 @@ export function createCompressMessageTool(ctx) {
|
|
|
29
29
|
ctx.prompts.reload();
|
|
30
30
|
const runtimePrompts = ctx.prompts.getRuntimePrompts();
|
|
31
31
|
return tool({
|
|
32
|
-
description: runtimePrompts.compressMessage +
|
|
32
|
+
description: runtimePrompts.compressMessage + MESSAGE_FORMAT_EXTENSION,
|
|
33
33
|
args: buildSchema(),
|
|
34
34
|
async execute(args, toolCtx) {
|
|
35
35
|
const input = args;
|
|
36
36
|
validateArgs(input);
|
|
37
|
+
const callId = typeof toolCtx.callID === "string"
|
|
38
|
+
? toolCtx.callID
|
|
39
|
+
: undefined;
|
|
37
40
|
const { rawMessages, searchContext } = await prepareSession(ctx, toolCtx, `Compress Message: ${input.topic}`);
|
|
38
|
-
const { plans, skippedIssues } = resolveMessages(input, searchContext, ctx.state, ctx.config);
|
|
39
|
-
if (plans.length === 0 &&
|
|
40
|
-
throw new Error(formatIssues(skippedIssues));
|
|
41
|
+
const { plans, skippedIssues, skippedCount } = resolveMessages(input, searchContext, ctx.state, ctx.config);
|
|
42
|
+
if (plans.length === 0 && skippedCount > 0) {
|
|
43
|
+
throw new Error(formatIssues(skippedIssues, skippedCount));
|
|
41
44
|
}
|
|
42
45
|
const notifications = [];
|
|
43
46
|
const preparedPlans = [];
|
|
@@ -61,6 +64,7 @@ export function createCompressMessageTool(ctx) {
|
|
|
61
64
|
mode: "message",
|
|
62
65
|
runId,
|
|
63
66
|
compressMessageId: toolCtx.messageID,
|
|
67
|
+
compressCallId: callId,
|
|
64
68
|
summaryTokens,
|
|
65
69
|
}, plan.selection, plan.anchorMessageId, blockId, storedSummary, []);
|
|
66
70
|
notifications.push({
|
|
@@ -71,7 +75,7 @@ export function createCompressMessageTool(ctx) {
|
|
|
71
75
|
});
|
|
72
76
|
}
|
|
73
77
|
await finalizeSession(ctx, toolCtx, rawMessages, notifications, input.topic);
|
|
74
|
-
return formatResult(plans.length, skippedIssues);
|
|
78
|
+
return formatResult(plans.length, skippedIssues, skippedCount);
|
|
75
79
|
},
|
|
76
80
|
});
|
|
77
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../lib/compress/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../lib/compress/message.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../lib/compress/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAQzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../lib/compress/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAQzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAG5C,UAAU,UAAU;IAChB,GAAG,CAAC,KAAK,EAAE;QACP,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,EAAE,CAAA;QAClB,MAAM,EAAE,MAAM,EAAE,CAAA;QAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACpC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjB,QAAQ,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACxC,SAAS,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,SAAS,EAAE,CAAA;IACxB,aAAa,EAAE,aAAa,CAAA;CAC/B;AAED,wBAAsB,cAAc,CAChC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,CAAC,CAoC1B;AAED,wBAAsB,eAAe,CACjC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,UAAU,EACnB,WAAW,EAAE,SAAS,EAAE,EACxB,OAAO,EAAE,iBAAiB,EAAE,EAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,GAC/B,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|
|
@@ -6,6 +6,7 @@ import { deduplicate, purgeErrors } from "../strategies";
|
|
|
6
6
|
import { getCurrentParams } from "../token-utils";
|
|
7
7
|
import { sendCompressNotification } from "../ui/notification";
|
|
8
8
|
import { buildSearchContext, fetchSessionMessages } from "./search";
|
|
9
|
+
import { applyPendingCompressionDurations } from "./timing";
|
|
9
10
|
export async function prepareSession(ctx, toolCtx, title) {
|
|
10
11
|
if (ctx.state.manualMode && ctx.state.manualMode !== "compress-pending") {
|
|
11
12
|
throw new Error("Manual mode: compress blocked. Do not retry until `<compress triggered manually>` appears in user context.");
|
|
@@ -29,6 +30,7 @@ export async function prepareSession(ctx, toolCtx, title) {
|
|
|
29
30
|
}
|
|
30
31
|
export async function finalizeSession(ctx, toolCtx, rawMessages, entries, batchTopic) {
|
|
31
32
|
ctx.state.manualMode = ctx.state.manualMode ? "active" : false;
|
|
33
|
+
applyPendingCompressionDurations(ctx.state);
|
|
32
34
|
await saveSessionState(ctx.state, ctx.logger);
|
|
33
35
|
const params = getCurrentParams(ctx.state, rawMessages, ctx.logger);
|
|
34
36
|
const sessionMessageIds = rawMessages
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../lib/compress/pipeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAE7D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../lib/compress/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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,
|
|
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,CAgIjF"}
|