@royalcat/opencode-dcp-rc 0.0.0-stage → 4.0.1
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/LICENSE +619 -0
- package/README.md +348 -2
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8129 -0
- package/dist/index.js.map +1 -0
- 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/context.d.ts +67 -0
- package/dist/lib/commands/context.d.ts.map +1 -0
- package/dist/lib/commands/decompress.d.ts +12 -0
- package/dist/lib/commands/decompress.d.ts.map +1 -0
- package/dist/lib/commands/help.d.ts +18 -0
- package/dist/lib/commands/help.d.ts.map +1 -0
- package/dist/lib/commands/index.d.ts +8 -0
- package/dist/lib/commands/index.d.ts.map +1 -0
- package/dist/lib/commands/manual.d.ts +23 -0
- package/dist/lib/commands/manual.d.ts.map +1 -0
- package/dist/lib/commands/recompress.d.ts +12 -0
- package/dist/lib/commands/recompress.d.ts.map +1 -0
- package/dist/lib/commands/stats.d.ts +27 -0
- package/dist/lib/commands/stats.d.ts.map +1 -0
- package/dist/lib/commands/sweep.d.ts +23 -0
- package/dist/lib/commands/sweep.d.ts.map +1 -0
- package/dist/lib/compress/index.d.ts +3 -0
- package/dist/lib/compress/index.d.ts.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/protected-content.d.ts +6 -0
- package/dist/lib/compress/protected-content.d.ts.map +1 -0
- package/dist/lib/compress/rc.d.ts +15 -0
- package/dist/lib/compress/rc.d.ts.map +1 -0
- package/dist/lib/compress/search.d.ts +12 -0
- package/dist/lib/compress/search.d.ts.map +1 -0
- package/dist/lib/compress/state.d.ts +10 -0
- package/dist/lib/compress/state.d.ts.map +1 -0
- package/dist/lib/compress/summary.d.ts +68 -0
- package/dist/lib/compress/summary.d.ts.map +1 -0
- package/dist/lib/compress/timing.d.ts +18 -0
- package/dist/lib/compress/timing.d.ts.map +1 -0
- package/dist/lib/compress/types.d.ts +64 -0
- package/dist/lib/compress/types.d.ts.map +1 -0
- package/dist/lib/compress/usage.d.ts +45 -0
- package/dist/lib/compress/usage.d.ts.map +1 -0
- package/dist/lib/compress-permission.d.ts +4 -0
- package/dist/lib/compress-permission.d.ts.map +1 -0
- package/dist/lib/config.d.ts +83 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/hooks.d.ts +22 -0
- package/dist/lib/hooks.d.ts.map +1 -0
- package/dist/lib/logger.d.ts +31 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/message-ids.d.ts +20 -0
- package/dist/lib/message-ids.d.ts.map +1 -0
- package/dist/lib/messages/index.d.ts +8 -0
- package/dist/lib/messages/index.d.ts.map +1 -0
- package/dist/lib/messages/inject/inject.d.ts +7 -0
- package/dist/lib/messages/inject/inject.d.ts.map +1 -0
- package/dist/lib/messages/inject/subagent-results.d.ts +4 -0
- package/dist/lib/messages/inject/subagent-results.d.ts.map +1 -0
- package/dist/lib/messages/inject/utils.d.ts +23 -0
- package/dist/lib/messages/inject/utils.d.ts.map +1 -0
- package/dist/lib/messages/prune.d.ts +4 -0
- package/dist/lib/messages/prune.d.ts.map +1 -0
- package/dist/lib/messages/query.d.ts +7 -0
- package/dist/lib/messages/query.d.ts.map +1 -0
- package/dist/lib/messages/reasoning-strip.d.ts +8 -0
- package/dist/lib/messages/reasoning-strip.d.ts.map +1 -0
- package/dist/lib/messages/shape.d.ts +5 -0
- package/dist/lib/messages/shape.d.ts.map +1 -0
- package/dist/lib/messages/sync.d.ts +4 -0
- package/dist/lib/messages/sync.d.ts.map +1 -0
- package/dist/lib/messages/utils.d.ts +27 -0
- package/dist/lib/messages/utils.d.ts.map +1 -0
- package/dist/lib/prompts/compress-rc.d.ts +4 -0
- package/dist/lib/prompts/compress-rc.d.ts.map +1 -0
- package/dist/lib/prompts/context-limit-nudge.d.ts +2 -0
- package/dist/lib/prompts/context-limit-nudge.d.ts.map +1 -0
- package/dist/lib/prompts/extensions/nudge.d.ts +4 -0
- package/dist/lib/prompts/extensions/nudge.d.ts.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/tool.d.ts +3 -0
- package/dist/lib/prompts/extensions/tool.d.ts.map +1 -0
- package/dist/lib/prompts/index.d.ts +4 -0
- package/dist/lib/prompts/index.d.ts.map +1 -0
- package/dist/lib/prompts/iteration-nudge.d.ts +2 -0
- package/dist/lib/prompts/iteration-nudge.d.ts.map +1 -0
- package/dist/lib/prompts/store.d.ts +26 -0
- package/dist/lib/prompts/store.d.ts.map +1 -0
- package/dist/lib/prompts/system.d.ts +4 -0
- package/dist/lib/prompts/system.d.ts.map +1 -0
- package/dist/lib/prompts/turn-nudge.d.ts +2 -0
- package/dist/lib/prompts/turn-nudge.d.ts.map +1 -0
- package/dist/lib/protected-patterns.d.ts +6 -0
- package/dist/lib/protected-patterns.d.ts.map +1 -0
- package/dist/lib/state/index.d.ts +5 -0
- package/dist/lib/state/index.d.ts.map +1 -0
- package/dist/lib/state/persistence.d.ts +47 -0
- package/dist/lib/state/persistence.d.ts.map +1 -0
- package/dist/lib/state/state.d.ts +9 -0
- package/dist/lib/state/state.d.ts.map +1 -0
- package/dist/lib/state/tool-cache.d.ts +13 -0
- package/dist/lib/state/tool-cache.d.ts.map +1 -0
- package/dist/lib/state/types.d.ts +105 -0
- package/dist/lib/state/types.d.ts.map +1 -0
- package/dist/lib/state/utils.d.ts +22 -0
- package/dist/lib/state/utils.d.ts.map +1 -0
- package/dist/lib/strategies/deduplication.d.ts +10 -0
- package/dist/lib/strategies/deduplication.d.ts.map +1 -0
- package/dist/lib/strategies/index.d.ts +3 -0
- package/dist/lib/strategies/index.d.ts.map +1 -0
- package/dist/lib/strategies/purge-errors.d.ts +13 -0
- package/dist/lib/strategies/purge-errors.d.ts.map +1 -0
- package/dist/lib/subagents/subagent-results.d.ts +5 -0
- package/dist/lib/subagents/subagent-results.d.ts.map +1 -0
- package/dist/lib/token-utils.d.ts +19 -0
- package/dist/lib/token-utils.d.ts.map +1 -0
- package/dist/lib/tui/dialogs.d.ts +29 -0
- package/dist/lib/tui/dialogs.d.ts.map +1 -0
- package/dist/lib/tui/format.d.ts +4 -0
- package/dist/lib/tui/format.d.ts.map +1 -0
- package/dist/lib/tui/types.d.ts +18 -0
- package/dist/lib/tui/types.d.ts.map +1 -0
- package/dist/lib/tui/ui.d.ts +48 -0
- package/dist/lib/tui/ui.d.ts.map +1 -0
- package/dist/lib/ui/notification.d.ts +17 -0
- package/dist/lib/ui/notification.d.ts.map +1 -0
- package/dist/lib/ui/utils.d.ts +10 -0
- package/dist/lib/ui/utils.d.ts.map +1 -0
- package/dist/lib/v2/index.d.ts +5 -0
- package/dist/lib/v2/index.d.ts.map +1 -0
- package/dist/lib/v2/messages.d.ts +13 -0
- package/dist/lib/v2/messages.d.ts.map +1 -0
- package/dist/lib/v2/rpc.d.ts +75 -0
- package/dist/lib/v2/rpc.d.ts.map +1 -0
- package/dist/lib/v2/theme.d.ts +55 -0
- package/dist/lib/v2/theme.d.ts.map +1 -0
- package/dist/lib/v2/tui.d.ts +4 -0
- package/dist/lib/v2/tui.d.ts.map +1 -0
- package/dist/lib/v2/usage.d.ts +44 -0
- package/dist/lib/v2/usage.d.ts.map +1 -0
- package/dist/tui.d.ts +7 -0
- package/dist/tui.d.ts.map +1 -0
- package/lib/commands/compression-targets.ts +54 -0
- package/lib/commands/context.ts +305 -0
- package/lib/commands/decompress.ts +273 -0
- package/lib/commands/help.ts +76 -0
- package/lib/commands/index.ts +11 -0
- package/lib/commands/manual.ts +126 -0
- package/lib/commands/recompress.ts +222 -0
- package/lib/commands/stats.ts +180 -0
- package/lib/commands/sweep.ts +266 -0
- package/lib/compress/index.ts +2 -0
- package/lib/compress/pipeline.ts +116 -0
- package/lib/compress/protected-content.ts +163 -0
- package/lib/compress/rc.ts +494 -0
- package/lib/compress/search.ts +277 -0
- package/lib/compress/state.ts +272 -0
- package/lib/compress/summary.ts +320 -0
- package/lib/compress/timing.ts +77 -0
- package/lib/compress/types.ts +70 -0
- package/lib/compress/usage.ts +168 -0
- package/lib/compress-permission.ts +9 -0
- package/lib/config.ts +995 -0
- package/lib/hooks.ts +205 -0
- package/lib/logger.ts +226 -0
- package/lib/message-ids.ts +181 -0
- package/lib/messages/index.ts +7 -0
- package/lib/messages/inject/inject.ts +215 -0
- package/lib/messages/inject/subagent-results.ts +84 -0
- package/lib/messages/inject/utils.ts +304 -0
- package/lib/messages/prune.ts +238 -0
- package/lib/messages/query.ts +71 -0
- package/lib/messages/reasoning-strip.ts +40 -0
- package/lib/messages/shape.ts +50 -0
- package/lib/messages/sync.ts +124 -0
- package/lib/messages/utils.ts +190 -0
- package/lib/prompts/compress-rc.ts +25 -0
- package/lib/prompts/context-limit-nudge.ts +18 -0
- package/lib/prompts/extensions/nudge.ts +34 -0
- package/lib/prompts/extensions/system.ts +32 -0
- package/lib/prompts/extensions/tool.ts +21 -0
- package/lib/prompts/index.ts +29 -0
- package/lib/prompts/iteration-nudge.ts +6 -0
- package/lib/prompts/store.ts +452 -0
- package/lib/prompts/system.ts +41 -0
- package/lib/prompts/turn-nudge.ts +10 -0
- package/lib/protected-patterns.ts +159 -0
- package/lib/state/index.ts +4 -0
- package/lib/state/persistence.ts +321 -0
- package/lib/state/state.ts +214 -0
- package/lib/state/tool-cache.ts +99 -0
- package/lib/state/types.ts +117 -0
- package/lib/state/utils.ts +345 -0
- package/lib/strategies/deduplication.ts +125 -0
- package/lib/strategies/index.ts +2 -0
- package/lib/strategies/purge-errors.ts +86 -0
- package/lib/subagents/subagent-results.ts +75 -0
- package/lib/token-utils.ts +164 -0
- package/lib/tui/dialogs.tsx +261 -0
- package/lib/tui/format.ts +25 -0
- package/lib/tui/types.ts +25 -0
- package/lib/tui/ui.tsx +245 -0
- package/lib/ui/notification.ts +347 -0
- package/lib/ui/utils.ts +304 -0
- package/lib/v2/index.ts +448 -0
- package/lib/v2/messages.ts +252 -0
- package/lib/v2/rpc.ts +60 -0
- package/lib/v2/theme.ts +67 -0
- package/lib/v2/tui.tsx +115 -0
- package/lib/v2/usage.ts +423 -0
- package/package.json +91 -5
- package/server.js +1 -0
- package/tui.tsx +7 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CompressionBlock, PruneMessagesState } from "../state";
|
|
2
|
+
export interface CompressionTarget {
|
|
3
|
+
displayId: number;
|
|
4
|
+
runId: number;
|
|
5
|
+
topic: string;
|
|
6
|
+
compressedTokens: number;
|
|
7
|
+
durationMs: number;
|
|
8
|
+
blocks: CompressionBlock[];
|
|
9
|
+
}
|
|
10
|
+
export declare function getActiveCompressionTargets(messagesState: PruneMessagesState): CompressionTarget[];
|
|
11
|
+
export declare function getRecompressibleCompressionTargets(messagesState: PruneMessagesState, availableMessageIds: Set<string>): CompressionTarget[];
|
|
12
|
+
export declare function resolveCompressionTarget(messagesState: PruneMessagesState, blockId: number): CompressionTarget | null;
|
|
13
|
+
//# sourceMappingURL=compression-targets.d.ts.map
|
|
@@ -0,0 +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,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,gBAAgB,EAAE,CAAA;CAC7B;AAiBD,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,CAMrB;AAED,wBAAgB,wBAAwB,CACpC,aAAa,EAAE,kBAAkB,EACjC,OAAO,EAAE,MAAM,GAChB,iBAAiB,GAAG,IAAI,CAG1B"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DCP Context Command
|
|
3
|
+
* Shows a visual breakdown of token usage in the current session.
|
|
4
|
+
*
|
|
5
|
+
* TOKEN CALCULATION STRATEGY
|
|
6
|
+
* ==========================
|
|
7
|
+
* We minimize tokenizer estimation by leveraging API-reported values wherever possible.
|
|
8
|
+
*
|
|
9
|
+
* WHAT WE GET FROM THE API (exact):
|
|
10
|
+
* - tokens.input : Input tokens for each assistant response
|
|
11
|
+
* - tokens.output : Output tokens generated (includes text + tool calls)
|
|
12
|
+
* - tokens.reasoning: Reasoning tokens used
|
|
13
|
+
* - tokens.cache : Cache read/write tokens
|
|
14
|
+
*
|
|
15
|
+
* HOW WE CALCULATE EACH CATEGORY:
|
|
16
|
+
*
|
|
17
|
+
* SYSTEM = firstAssistant.input + cache.read + cache.write - tokenizer(firstUserMessage)
|
|
18
|
+
* The first response's total input (input + cache.read + cache.write)
|
|
19
|
+
* contains system + first user message. On the first request of a
|
|
20
|
+
* session, the system prompt appears in cache.write (cache creation),
|
|
21
|
+
* not cache.read.
|
|
22
|
+
*
|
|
23
|
+
* TOOLS = tokenizer(toolInputs + toolOutputs) - prunedTokens
|
|
24
|
+
* We must tokenize tools anyway for pruning decisions.
|
|
25
|
+
*
|
|
26
|
+
* USER = tokenizer(all user messages)
|
|
27
|
+
* User messages are typically small, so estimation is acceptable.
|
|
28
|
+
*
|
|
29
|
+
* ASSISTANT = total - system - user - tools
|
|
30
|
+
* Calculated as residual. This absorbs:
|
|
31
|
+
* - Assistant text output tokens
|
|
32
|
+
* - Reasoning tokens (if persisted by the model)
|
|
33
|
+
* - Any estimation errors
|
|
34
|
+
*
|
|
35
|
+
* TOTAL = input + output + reasoning + cache.read + cache.write
|
|
36
|
+
* Matches opencode's UI display.
|
|
37
|
+
*
|
|
38
|
+
* WHY ASSISTANT IS THE RESIDUAL:
|
|
39
|
+
* If reasoning tokens persist in context (model-dependent), they semantically
|
|
40
|
+
* belong with "Assistant" since reasoning IS assistant-generated content.
|
|
41
|
+
*/
|
|
42
|
+
import type { Logger } from "../logger";
|
|
43
|
+
import type { SessionState, WithParts } from "../state";
|
|
44
|
+
export interface ContextCommandContext {
|
|
45
|
+
client: any;
|
|
46
|
+
state: SessionState;
|
|
47
|
+
logger: Logger;
|
|
48
|
+
sessionId: string;
|
|
49
|
+
messages: WithParts[];
|
|
50
|
+
}
|
|
51
|
+
interface TokenBreakdown {
|
|
52
|
+
system: number;
|
|
53
|
+
user: number;
|
|
54
|
+
assistant: number;
|
|
55
|
+
tools: number;
|
|
56
|
+
toolCount: number;
|
|
57
|
+
toolsInContextCount: number;
|
|
58
|
+
prunedTokens: number;
|
|
59
|
+
prunedToolCount: number;
|
|
60
|
+
prunedMessageCount: number;
|
|
61
|
+
total: number;
|
|
62
|
+
}
|
|
63
|
+
export declare function analyzeContextTokens(state: SessionState, messages: WithParts[]): TokenBreakdown;
|
|
64
|
+
export declare function formatContextMessage(breakdown: TokenBreakdown): string;
|
|
65
|
+
export declare function handleContextCommand(ctx: ContextCommandContext): Promise<void>;
|
|
66
|
+
export {};
|
|
67
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../lib/commands/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAQvD,MAAM,WAAW,qBAAqB;IAClC,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;AAED,UAAU,cAAc;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,cAAc,CA4J/F;AASD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,cAAc,GAAG,MAAM,CAwDtE;AAED,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CASpF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Logger } from "../logger";
|
|
2
|
+
import type { SessionState, WithParts } from "../state";
|
|
3
|
+
export interface DecompressCommandContext {
|
|
4
|
+
client: any;
|
|
5
|
+
state: SessionState;
|
|
6
|
+
logger: Logger;
|
|
7
|
+
sessionId: string;
|
|
8
|
+
messages: WithParts[];
|
|
9
|
+
args: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare function handleDecompressCommand(ctx: DecompressCommandContext): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=decompress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decompress.d.ts","sourceRoot":"","sources":["../../../lib/commands/decompress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAwC,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAa7F,MAAM,WAAW,wBAAwB;IACrC,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;IACrB,IAAI,EAAE,MAAM,EAAE,CAAA;CACjB;AAiID,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0H1F"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DCP Help command handler.
|
|
3
|
+
* Shows available DCP commands and their descriptions.
|
|
4
|
+
*/
|
|
5
|
+
import type { Logger } from "../logger";
|
|
6
|
+
import type { PluginConfig } from "../config";
|
|
7
|
+
import type { SessionState, WithParts } from "../state";
|
|
8
|
+
export interface HelpCommandContext {
|
|
9
|
+
client: any;
|
|
10
|
+
state: SessionState;
|
|
11
|
+
config: PluginConfig;
|
|
12
|
+
logger: Logger;
|
|
13
|
+
sessionId: string;
|
|
14
|
+
messages: WithParts[];
|
|
15
|
+
}
|
|
16
|
+
export declare function formatHelpMessage(state: SessionState, config: PluginConfig): string;
|
|
17
|
+
export declare function handleHelpCommand(ctx: HelpCommandContext): Promise<void>;
|
|
18
|
+
//# sourceMappingURL=help.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../lib/commands/help.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAKvD,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,GAAG,CAAA;IACX,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,SAAS,EAAE,CAAA;CACxB;AAwBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAoBnF;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAU9E"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { handleContextCommand } from "./context";
|
|
2
|
+
export { handleDecompressCommand } from "./decompress";
|
|
3
|
+
export { handleHelpCommand } from "./help";
|
|
4
|
+
export { applyPendingManualTrigger, handleManualToggleCommand, handleManualTriggerCommand, } from "./manual";
|
|
5
|
+
export { handleRecompressCommand } from "./recompress";
|
|
6
|
+
export { handleStatsCommand } from "./stats";
|
|
7
|
+
export { handleSweepCommand } from "./sweep";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AAC1C,OAAO,EACH,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,GAC7B,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DCP Manual mode command handler.
|
|
3
|
+
* Handles toggling manual mode and triggering individual tool executions.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* /dcp manual [on|off] - Toggle manual mode or set explicit state
|
|
7
|
+
* /dcp-compress [focus] - Trigger manual compress execution
|
|
8
|
+
*/
|
|
9
|
+
import type { Logger } from "../logger";
|
|
10
|
+
import type { SessionState, WithParts } from "../state";
|
|
11
|
+
import type { PluginConfig } from "../config";
|
|
12
|
+
export interface ManualCommandContext {
|
|
13
|
+
client: any;
|
|
14
|
+
state: SessionState;
|
|
15
|
+
config: PluginConfig;
|
|
16
|
+
logger: Logger;
|
|
17
|
+
sessionId: string;
|
|
18
|
+
messages: WithParts[];
|
|
19
|
+
}
|
|
20
|
+
export declare function handleManualToggleCommand(ctx: ManualCommandContext, modeArg?: string): Promise<void>;
|
|
21
|
+
export declare function handleManualTriggerCommand(ctx: ManualCommandContext, tool: "compress", userFocus?: string): Promise<string | null>;
|
|
22
|
+
export declare function applyPendingManualTrigger(state: SessionState, messages: WithParts[], logger: Logger): void;
|
|
23
|
+
//# sourceMappingURL=manual.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manual.d.ts","sourceRoot":"","sources":["../../../lib/commands/manual.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAoC7C,MAAM,WAAW,oBAAoB;IACjC,MAAM,EAAE,GAAG,CAAA;IACX,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,SAAS,EAAE,CAAA;CACxB;AAED,wBAAsB,yBAAyB,CAC3C,GAAG,EAAE,oBAAoB,EACzB,OAAO,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED,wBAAsB,0BAA0B,CAC5C,GAAG,EAAE,oBAAoB,EACzB,IAAI,EAAE,UAAU,EAChB,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAExB;AAED,wBAAgB,yBAAyB,CACrC,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,SAAS,EAAE,EACrB,MAAM,EAAE,MAAM,GACf,IAAI,CA8BN"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Logger } from "../logger";
|
|
2
|
+
import type { SessionState, WithParts } from "../state";
|
|
3
|
+
export interface RecompressCommandContext {
|
|
4
|
+
client: any;
|
|
5
|
+
state: SessionState;
|
|
6
|
+
logger: Logger;
|
|
7
|
+
sessionId: string;
|
|
8
|
+
messages: WithParts[];
|
|
9
|
+
args: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare function handleRecompressCommand(ctx: RecompressCommandContext): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=recompress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recompress.d.ts","sourceRoot":"","sources":["../../../lib/commands/recompress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAsB,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAa3E,MAAM,WAAW,wBAAwB;IACrC,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;IACrB,IAAI,EAAE,MAAM,EAAE,CAAA;CACjB;AAkFD,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsH1F"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DCP Stats command handler.
|
|
3
|
+
* Shows pruning statistics for the current session and all-time totals.
|
|
4
|
+
*/
|
|
5
|
+
import type { Logger } from "../logger";
|
|
6
|
+
import type { SessionState, WithParts } from "../state";
|
|
7
|
+
import { type AggregatedStats } from "../state/persistence";
|
|
8
|
+
import { type CompressionUsageTotals } from "../compress/usage";
|
|
9
|
+
export interface StatsCommandContext {
|
|
10
|
+
client: any;
|
|
11
|
+
state: SessionState;
|
|
12
|
+
logger: Logger;
|
|
13
|
+
sessionId: string;
|
|
14
|
+
messages: WithParts[];
|
|
15
|
+
}
|
|
16
|
+
export declare function formatStatsMessage(sessionTokens: number, sessionSummaryTokens: number, sessionTools: number, sessionMessages: number, sessionDurationMs: number, sessionUsage: CompressionUsageTotals, allTime: AggregatedStats): string;
|
|
17
|
+
export declare function handleStatsCommand(ctx: StatsCommandContext): Promise<void>;
|
|
18
|
+
export declare function buildStatsReport(state: SessionState, logger: Logger): Promise<{
|
|
19
|
+
sessionTokens: number;
|
|
20
|
+
sessionSummaryTokens: number;
|
|
21
|
+
sessionTools: number;
|
|
22
|
+
sessionMessages: number;
|
|
23
|
+
sessionDurationMs: number;
|
|
24
|
+
sessionCompressionUsage: CompressionUsageTotals;
|
|
25
|
+
allTime: AggregatedStats;
|
|
26
|
+
}>;
|
|
27
|
+
//# sourceMappingURL=stats.d.ts.map
|
|
@@ -0,0 +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;AAGvD,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEhF,OAAO,EAAmC,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAGhG,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;AAED,wBAAgB,kBAAkB,CAC9B,aAAa,EAAE,MAAM,EACrB,oBAAoB,EAAE,MAAM,EAC5B,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,sBAAsB,EACpC,OAAO,EAAE,eAAe,GACzB,MAAM,CAsCR;AAsCD,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BhF;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;;;;;;;;GA0CzE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DCP Sweep command handler.
|
|
3
|
+
* Prunes tool outputs since the last user message, or the last N tools.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* /dcp sweep - Prune all tools since the previous user message
|
|
7
|
+
* /dcp sweep 10 - Prune the last 10 tools
|
|
8
|
+
*/
|
|
9
|
+
import type { Logger } from "../logger";
|
|
10
|
+
import type { SessionState, WithParts } from "../state";
|
|
11
|
+
import type { PluginConfig } from "../config";
|
|
12
|
+
export interface SweepCommandContext {
|
|
13
|
+
client: any;
|
|
14
|
+
state: SessionState;
|
|
15
|
+
config: PluginConfig;
|
|
16
|
+
logger: Logger;
|
|
17
|
+
sessionId: string;
|
|
18
|
+
messages: WithParts[];
|
|
19
|
+
args: string[];
|
|
20
|
+
workingDirectory: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function handleSweepCommand(ctx: SweepCommandContext): Promise<void>;
|
|
23
|
+
//# sourceMappingURL=sweep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sweep.d.ts","sourceRoot":"","sources":["../../../lib/commands/sweep.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAsB,MAAM,UAAU,CAAA;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAW7C,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE,GAAG,CAAA;IACX,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,SAAS,EAAE,CAAA;IACrB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,gBAAgB,EAAE,MAAM,CAAA;CAC3B;AA6FD,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6IhF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/compress/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,MAAM,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { WithParts } from "../state";
|
|
2
|
+
import type { ToolContext } from "./types";
|
|
3
|
+
import type { SearchContext } from "./types";
|
|
4
|
+
interface RunContext {
|
|
5
|
+
ask(input: {
|
|
6
|
+
permission: string;
|
|
7
|
+
patterns: string[];
|
|
8
|
+
always: string[];
|
|
9
|
+
metadata: Record<string, unknown>;
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
metadata(input: {
|
|
12
|
+
title: string;
|
|
13
|
+
}): void;
|
|
14
|
+
sessionID: string;
|
|
15
|
+
}
|
|
16
|
+
export interface NotificationEntry {
|
|
17
|
+
blockId: number;
|
|
18
|
+
runId: number;
|
|
19
|
+
summary: string;
|
|
20
|
+
summaryTokens: number;
|
|
21
|
+
}
|
|
22
|
+
export interface PreparedSession {
|
|
23
|
+
rawMessages: WithParts[];
|
|
24
|
+
searchContext: SearchContext;
|
|
25
|
+
}
|
|
26
|
+
export declare function prepareSession(ctx: ToolContext, toolCtx: RunContext, title: string): Promise<PreparedSession>;
|
|
27
|
+
export declare function finalizeSession(ctx: ToolContext, toolCtx: RunContext, rawMessages: WithParts[], entries: NotificationEntry[], batchTopic: string | undefined): Promise<void>;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -0,0 +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;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,CAsC1B;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,CA6Bf"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SessionState } from "../state";
|
|
2
|
+
import type { SearchContext, SelectionResolution } from "./types";
|
|
3
|
+
export declare function appendProtectedPromptInfo(summary: string, selection: SelectionResolution, searchContext: SearchContext, state: SessionState, enabled: boolean): string;
|
|
4
|
+
export declare function extractProtectedPromptInfo(text: string): string[];
|
|
5
|
+
export declare function appendProtectedTools(client: any, state: SessionState, allowSubAgents: boolean, summary: string, selection: SelectionResolution, searchContext: SearchContext, protectedTools: string[], protectedFilePatterns?: string[]): Promise<string>;
|
|
6
|
+
//# sourceMappingURL=protected-content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protected-content.d.ts","sourceRoot":"","sources":["../../../lib/compress/protected-content.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAS5C,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAEjE,wBAAgB,yBAAyB,CACrC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,mBAAmB,EAC9B,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,OAAO,GACjB,MAAM,CAgCR;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAYjE;AAED,wBAAsB,oBAAoB,CACtC,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,YAAY,EACnB,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,mBAAmB,EAC9B,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,MAAM,EAAE,EACxB,qBAAqB,GAAE,MAAM,EAAO,GACrC,OAAO,CAAC,MAAM,CAAC,CAwFjB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { tool } from "@opencode-ai/plugin";
|
|
2
|
+
import type { ToolContext } from "./types";
|
|
3
|
+
import { type IdFormat } from "../message-ids";
|
|
4
|
+
export interface RcCompressToolArgs {
|
|
5
|
+
ids: string[];
|
|
6
|
+
}
|
|
7
|
+
interface ParsedSelector {
|
|
8
|
+
selector: string;
|
|
9
|
+
startRef: string;
|
|
10
|
+
endRef: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function parseSelector(selector: string, format: IdFormat): ParsedSelector;
|
|
13
|
+
export declare function createRcCompressTool(ctx: ToolContext): ReturnType<typeof tool>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=rc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rc.d.ts","sourceRoot":"","sources":["../../../lib/compress/rc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAuB,MAAM,SAAS,CAAA;AAG/D,OAAO,EAAqD,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAmCjG,MAAM,WAAW,kBAAkB;IAC/B,GAAG,EAAE,MAAM,EAAE,CAAA;CAChB;AAiCD,UAAU,cAAc;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,cAAc,CAkChF;AAsGD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CA4F9E"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SessionState, WithParts } from "../state";
|
|
2
|
+
import type { PluginConfig } from "../config";
|
|
3
|
+
import type { BoundaryReference, SearchContext, SelectionResolution } from "./types";
|
|
4
|
+
export declare function fetchSessionMessages(client: any, sessionId: string): Promise<WithParts[]>;
|
|
5
|
+
export declare function buildSearchContext(state: SessionState, rawMessages: WithParts[]): SearchContext;
|
|
6
|
+
export declare function resolveBoundaryIds(context: SearchContext, state: SessionState, config: PluginConfig, startId: string, endId: string): {
|
|
7
|
+
startReference: BoundaryReference;
|
|
8
|
+
endReference: BoundaryReference;
|
|
9
|
+
};
|
|
10
|
+
export declare function resolveSelection(context: SearchContext, config: PluginConfig, startReference: BoundaryReference, endReference: BoundaryReference): SelectionResolution;
|
|
11
|
+
export declare function resolveAnchorMessageId(startReference: BoundaryReference): string;
|
|
12
|
+
//# 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;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAK7C,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,CAM/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,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACd;IAAE,cAAc,EAAE,iBAAiB,CAAC;IAAC,YAAY,EAAE,iBAAiB,CAAA;CAAE,CA8DxE;AAED,wBAAgB,gBAAgB,CAC5B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,iBAAiB,EACjC,YAAY,EAAE,iBAAiB,GAChC,mBAAmB,CAoFrB;AAED,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,iBAAiB,GAAG,MAAM,CAYhF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PruneMessagesState, SessionState } from "../state";
|
|
2
|
+
import { type IdFormat } from "../message-ids";
|
|
3
|
+
import type { AppliedCompressionResult, CompressionStateInput, SelectionResolution } from "./types";
|
|
4
|
+
export declare const COMPRESSED_BLOCK_HEADER = "[Compressed conversation section]";
|
|
5
|
+
export declare function allocateBlockId(state: SessionState): number;
|
|
6
|
+
export declare function allocateRunId(state: SessionState): number;
|
|
7
|
+
export declare function attachCompressionDuration(messagesState: PruneMessagesState, messageId: string, callId: string, durationMs: number): number;
|
|
8
|
+
export declare function wrapCompressedSummary(blockId: number, summary: string, format?: IdFormat): string;
|
|
9
|
+
export declare function applyCompressionState(state: SessionState, input: CompressionStateInput, selection: SelectionResolution, anchorMessageId: string, blockId: number, summary: string, consumedBlockIds: number[]): AppliedCompressionResult;
|
|
10
|
+
//# 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,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAClF,OAAO,EAAsC,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAClF,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,yBAAyB,CACrC,aAAa,EAAE,kBAAkB,EACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACnB,MAAM,CAgBR;AAED,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,QAAgB,GACzB,MAAM,CAQR;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,CAsM1B"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { WithParts } from "../state";
|
|
2
|
+
import { type IdFormat } from "../message-ids";
|
|
3
|
+
/**
|
|
4
|
+
* Marker embedded in the hidden summary prompt so the plugin can recognize its
|
|
5
|
+
* own transient (`session.generate`) request and strip everything else from it.
|
|
6
|
+
* Requests carry a per-call suffix (`[[DCP-RC-SUMMARY:<callId>]]`) so captured
|
|
7
|
+
* provider usage can be attributed to a specific request.
|
|
8
|
+
*/
|
|
9
|
+
export declare const RC_SUMMARY_MARKER = "[[DCP-RC-SUMMARY]]";
|
|
10
|
+
/** Prefix shared by the static marker and its per-call variant. */
|
|
11
|
+
export declare const RC_SUMMARY_MARKER_PREFIX = "[[DCP-RC-SUMMARY";
|
|
12
|
+
/** Marker line for a hidden summary request, optionally tagged with a call id. */
|
|
13
|
+
export declare function buildSummaryMarker(callId?: string): string;
|
|
14
|
+
/** True when the text contains a hidden summary marker, with or without a call id. */
|
|
15
|
+
export declare function hasSummaryMarker(text: string): boolean;
|
|
16
|
+
/** Extract the call id from a hidden summary marker, when present. */
|
|
17
|
+
export declare function extractSummaryCallId(text: string): string | undefined;
|
|
18
|
+
export interface PriorSummary {
|
|
19
|
+
/** Canonical block reference, e.g. `b2` or `@b2@`. */
|
|
20
|
+
ref: string;
|
|
21
|
+
/** Summary body with the block header/footer stripped. */
|
|
22
|
+
body: string;
|
|
23
|
+
}
|
|
24
|
+
export interface SummarySegment {
|
|
25
|
+
/** Canonical selector, e.g. `m0004`, `m0004-m0008`, or `b2-m0011`. */
|
|
26
|
+
selector: string;
|
|
27
|
+
messages: WithParts[];
|
|
28
|
+
/** Summaries of active blocks consumed by this selection. */
|
|
29
|
+
priorSummaries?: PriorSummary[];
|
|
30
|
+
}
|
|
31
|
+
export interface SummarySection {
|
|
32
|
+
selector: string;
|
|
33
|
+
summary: string;
|
|
34
|
+
}
|
|
35
|
+
export interface ParsedSummarySections {
|
|
36
|
+
sections: SummarySection[];
|
|
37
|
+
missing: string[];
|
|
38
|
+
duplicates: string[];
|
|
39
|
+
empty: string[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Serialize one conversation message into plain text for the hidden summary
|
|
43
|
+
* request. Binary/file payloads are intentionally omitted.
|
|
44
|
+
*/
|
|
45
|
+
export declare function serializeMessageForSummary(message: WithParts, selector: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Build the hidden summarization prompt. The selected segments are embedded
|
|
48
|
+
* verbatim so the transient request does not depend on any injected metadata.
|
|
49
|
+
*/
|
|
50
|
+
export declare function buildSummaryPrompt(selectors: SummarySegment[], idFormat?: IdFormat, callId?: string): string;
|
|
51
|
+
/**
|
|
52
|
+
* Normalize a selector written in either ID format (`m0004` or ``) into the
|
|
53
|
+
* session's canonical format. Returns null when the selector is malformed.
|
|
54
|
+
*/
|
|
55
|
+
export declare function canonicalizeSelector(selector: string, format?: IdFormat): string | null;
|
|
56
|
+
/**
|
|
57
|
+
* Strip the `[Compressed conversation section]` header and trailing block tag
|
|
58
|
+
* from a stored summary so it can be embedded in a new summary prompt.
|
|
59
|
+
*/
|
|
60
|
+
export declare function restoreSummary(summary: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* Parse `SLEEV-SUMMARY <selector>` sections from a model reply. Returns the
|
|
63
|
+
* accepted sections plus the selectors that are missing, duplicated, or have
|
|
64
|
+
* an empty body so the caller can retry only what is needed. Selectors are
|
|
65
|
+
* accepted in either ID format and normalized to the session format.
|
|
66
|
+
*/
|
|
67
|
+
export declare function parseSummarySections(text: string, expected: string[], idFormat?: IdFormat): ParsedSummarySections;
|
|
68
|
+
//# sourceMappingURL=summary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../lib/compress/summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAqD,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEjG;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,uBAAuB,CAAA;AACrD,mEAAmE;AACnE,eAAO,MAAM,wBAAwB,qBAAqB,CAAA;AAM1D,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAK1D;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErE;AAED,MAAM,WAAW,YAAY;IACzB,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAA;IACX,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,cAAc;IAC3B,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,SAAS,EAAE,CAAA;IACrB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,YAAY,EAAE,CAAA;CAClC;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,KAAK,EAAE,MAAM,EAAE,CAAA;CAClB;AA+BD;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiDvF;AAWD;;;GAGG;AACH,wBAAgB,kBAAkB,CAC9B,SAAS,EAAE,cAAc,EAAE,EAC3B,QAAQ,GAAE,QAAgB,EAC1B,MAAM,CAAC,EAAE,MAAM,GAChB,MAAM,CAiCR;AAOD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,QAAgB,GAAG,MAAM,GAAG,IAAI,CAsB9F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAoBtD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAAE,EAClB,QAAQ,GAAE,QAAgB,GAC3B,qBAAqB,CAoDvB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { SessionState } from "../state/types";
|
|
2
|
+
export interface PendingCompressionDuration {
|
|
3
|
+
messageId: string;
|
|
4
|
+
callId: string;
|
|
5
|
+
durationMs: number;
|
|
6
|
+
}
|
|
7
|
+
export interface CompressionTimingState {
|
|
8
|
+
startsByCallId: Map<string, number>;
|
|
9
|
+
pendingByCallId: Map<string, PendingCompressionDuration>;
|
|
10
|
+
}
|
|
11
|
+
export declare function buildCompressionTimingKey(messageId: string, callId: string): string;
|
|
12
|
+
export declare function consumeCompressionStart(state: SessionState, messageId: string, callId: string): number | undefined;
|
|
13
|
+
export declare function resolveCompressionDuration(startedAt: number | undefined, eventTime: number | undefined, partTime: {
|
|
14
|
+
start?: unknown;
|
|
15
|
+
end?: unknown;
|
|
16
|
+
} | undefined): number | undefined;
|
|
17
|
+
export declare function applyPendingCompressionDurations(state: SessionState): number;
|
|
18
|
+
//# sourceMappingURL=timing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timing.d.ts","sourceRoot":"","sources":["../../../lib/compress/timing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAGlD,MAAM,WAAW,0BAA0B;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,sBAAsB;IACnC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAA;CAC3D;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnF;AAED,wBAAgB,uBAAuB,CACnC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACf,MAAM,GAAG,SAAS,CAKpB;AAED,wBAAgB,0BAA0B,CACtC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,GACzD,MAAM,GAAG,SAAS,CAqBpB;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAoB5E"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { PluginConfig } from "../config";
|
|
2
|
+
import type { Logger } from "../logger";
|
|
3
|
+
import type { PromptStore } from "../prompts/store";
|
|
4
|
+
import type { CompressionBlock, CompressionMode, SessionState, WithParts } from "../state";
|
|
5
|
+
import type { CompressionUsage } from "./usage";
|
|
6
|
+
/** Result of the hidden transient model call (OpenCode V2 `session.generate`). */
|
|
7
|
+
export interface GenerateSummaryResult {
|
|
8
|
+
text: string;
|
|
9
|
+
/** Provider usage when captured, otherwise a local estimate. */
|
|
10
|
+
usage?: CompressionUsage;
|
|
11
|
+
}
|
|
12
|
+
export interface ToolContext {
|
|
13
|
+
client: any;
|
|
14
|
+
state: SessionState;
|
|
15
|
+
logger: Logger;
|
|
16
|
+
config: PluginConfig;
|
|
17
|
+
prompts: PromptStore;
|
|
18
|
+
/** Hidden transient model call (OpenCode V2 `session.generate`). */
|
|
19
|
+
generate: (input: {
|
|
20
|
+
sessionID: string;
|
|
21
|
+
prompt: string;
|
|
22
|
+
/** Per-request id embedded in the prompt marker for usage attribution. */
|
|
23
|
+
callId?: string;
|
|
24
|
+
}) => Promise<GenerateSummaryResult>;
|
|
25
|
+
}
|
|
26
|
+
export interface BoundaryReference {
|
|
27
|
+
kind: "message" | "compressed-block";
|
|
28
|
+
rawIndex: number;
|
|
29
|
+
messageId?: string;
|
|
30
|
+
blockId?: number;
|
|
31
|
+
anchorMessageId?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface SearchContext {
|
|
34
|
+
rawMessages: WithParts[];
|
|
35
|
+
rawMessagesById: Map<string, WithParts>;
|
|
36
|
+
rawIndexById: Map<string, number>;
|
|
37
|
+
summaryByBlockId: Map<number, CompressionBlock>;
|
|
38
|
+
}
|
|
39
|
+
export interface SelectionResolution {
|
|
40
|
+
startReference: BoundaryReference;
|
|
41
|
+
endReference: BoundaryReference;
|
|
42
|
+
messageIds: string[];
|
|
43
|
+
messageTokenById: Map<string, number>;
|
|
44
|
+
toolIds: string[];
|
|
45
|
+
requiredBlockIds: number[];
|
|
46
|
+
}
|
|
47
|
+
export interface AppliedCompressionResult {
|
|
48
|
+
compressedTokens: number;
|
|
49
|
+
messageIds: string[];
|
|
50
|
+
newlyCompressedMessageIds: string[];
|
|
51
|
+
newlyCompressedToolIds: string[];
|
|
52
|
+
}
|
|
53
|
+
export interface CompressionStateInput {
|
|
54
|
+
topic: string;
|
|
55
|
+
batchTopic: string;
|
|
56
|
+
startId: string;
|
|
57
|
+
endId: string;
|
|
58
|
+
mode: CompressionMode;
|
|
59
|
+
runId: number;
|
|
60
|
+
compressMessageId: string;
|
|
61
|
+
compressCallId?: string;
|
|
62
|
+
summaryTokens: number;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/compress/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,kFAAkF;AAClF,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,gEAAgE;IAChE,KAAK,CAAC,EAAE,gBAAgB,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,GAAG,CAAA;IACX,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,YAAY,CAAA;IACpB,OAAO,EAAE,WAAW,CAAA;IACpB,oEAAoE;IACpE,QAAQ,EAAE,CAAC,KAAK,EAAE;QACd,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,MAAM,CAAA;QACd,0EAA0E;QAC1E,MAAM,CAAC,EAAE,MAAM,CAAA;KAClB,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAA;CACvC;AAED,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,SAAS,GAAG,kBAAkB,CAAA;IACpC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,aAAa;IAC1B,WAAW,EAAE,SAAS,EAAE,CAAA;IACxB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACvC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;CAClD;AAED,MAAM,WAAW,mBAAmB;IAChC,cAAc,EAAE,iBAAiB,CAAA;IACjC,YAAY,EAAE,iBAAiB,CAAA;IAC/B,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACrC,gBAAgB,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,yBAAyB,EAAE,MAAM,EAAE,CAAA;IACnC,sBAAsB,EAAE,MAAM,EAAE,CAAA;CACnC;AAED,MAAM,WAAW,qBAAqB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,eAAe,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,iBAAiB,EAAE,MAAM,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;CACxB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Usage accounting for the hidden compression (summary) request.
|
|
3
|
+
*
|
|
4
|
+
* Provider-reported usage is preferred: OpenCode V2 generates the summary
|
|
5
|
+
* through `session.generate`, which does not surface token usage to the
|
|
6
|
+
* caller, so the numbers are captured by wrapping the resolved language
|
|
7
|
+
* model (`ctx.aisdk.hook("language")`) and reading the `finish` usage.
|
|
8
|
+
* When that path is unavailable, local tokenizer estimates are recorded
|
|
9
|
+
* instead so the plugin can still report an approximate cost.
|
|
10
|
+
*/
|
|
11
|
+
export type CompressionUsageSource = "provider" | "estimated";
|
|
12
|
+
/** Usage of a single hidden compression request. */
|
|
13
|
+
export interface CompressionUsage {
|
|
14
|
+
inputTokens: number;
|
|
15
|
+
outputTokens: number;
|
|
16
|
+
cacheReadTokens: number;
|
|
17
|
+
cacheWriteTokens: number;
|
|
18
|
+
reasoningTokens: number;
|
|
19
|
+
source: CompressionUsageSource;
|
|
20
|
+
}
|
|
21
|
+
/** Aggregated usage of all hidden compression requests in a session. */
|
|
22
|
+
export interface CompressionUsageTotals {
|
|
23
|
+
calls: number;
|
|
24
|
+
providerCalls: number;
|
|
25
|
+
estimatedCalls: number;
|
|
26
|
+
inputTokens: number;
|
|
27
|
+
outputTokens: number;
|
|
28
|
+
cacheReadTokens: number;
|
|
29
|
+
cacheWriteTokens: number;
|
|
30
|
+
reasoningTokens: number;
|
|
31
|
+
}
|
|
32
|
+
export declare function emptyCompressionUsage(): CompressionUsageTotals;
|
|
33
|
+
/**
|
|
34
|
+
* Normalize AI SDK v3 usage (`{ inputTokens: { total, noCache, cacheRead,
|
|
35
|
+
* cacheWrite }, outputTokens: { total, text, reasoning } }`) into the plugin
|
|
36
|
+
* shape. Returns undefined when there is nothing usable to record.
|
|
37
|
+
*/
|
|
38
|
+
export declare function normalizeProviderUsage(raw: unknown): CompressionUsage | undefined;
|
|
39
|
+
/** Local fallback when the provider did not report usage. */
|
|
40
|
+
export declare function estimatedCompressionUsage(inputTokens: number, outputTokens: number): CompressionUsage;
|
|
41
|
+
export declare function addCompressionUsage(totals: CompressionUsageTotals, usage: CompressionUsage): CompressionUsageTotals;
|
|
42
|
+
export declare function addCompressionUsageTotals(totals: CompressionUsageTotals, other: CompressionUsageTotals): CompressionUsageTotals;
|
|
43
|
+
/** Backward-compatible load of persisted totals. */
|
|
44
|
+
export declare function normalizeCompressionUsageTotals(value: unknown): CompressionUsageTotals;
|
|
45
|
+
//# sourceMappingURL=usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../lib/compress/usage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,WAAW,CAAA;AAE7D,oDAAoD;AACpD,MAAM,WAAW,gBAAgB;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,sBAAsB,CAAA;CACjC;AAED,wEAAwE;AACxE,MAAM,WAAW,sBAAsB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;CAC1B;AAED,wBAAgB,qBAAqB,IAAI,sBAAsB,CAW9D;AASD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS,CA0CjF;AAED,6DAA6D;AAC7D,wBAAgB,yBAAyB,CACrC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACrB,gBAAgB,CASlB;AAED,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,sBAAsB,EAC9B,KAAK,EAAE,gBAAgB,GACxB,sBAAsB,CAWxB;AAED,wBAAgB,yBAAyB,CACrC,MAAM,EAAE,sBAAsB,EAC9B,KAAK,EAAE,sBAAsB,GAC9B,sBAAsB,CAWxB;AAED,oDAAoD;AACpD,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,CAetF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compress-permission.d.ts","sourceRoot":"","sources":["../../lib/compress-permission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C,eAAO,MAAM,kBAAkB,GAC3B,OAAO,YAAY,EACnB,QAAQ,YAAY,KACrB,KAAK,GAAG,OAAO,GAAG,MAEpB,CAAA"}
|