opencode-acp 1.0.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.
Files changed (137) hide show
  1. package/LICENSE +622 -0
  2. package/README.md +340 -0
  3. package/dist/index.d.ts +4 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +8261 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/auth.d.ts +4 -0
  8. package/dist/lib/auth.d.ts.map +1 -0
  9. package/dist/lib/commands/compression-targets.d.ts +14 -0
  10. package/dist/lib/commands/compression-targets.d.ts.map +1 -0
  11. package/dist/lib/commands/context.d.ts +52 -0
  12. package/dist/lib/commands/context.d.ts.map +1 -0
  13. package/dist/lib/commands/decompress.d.ts +12 -0
  14. package/dist/lib/commands/decompress.d.ts.map +1 -0
  15. package/dist/lib/commands/help.d.ts +17 -0
  16. package/dist/lib/commands/help.d.ts.map +1 -0
  17. package/dist/lib/commands/index.d.ts +8 -0
  18. package/dist/lib/commands/index.d.ts.map +1 -0
  19. package/dist/lib/commands/manual.d.ts +23 -0
  20. package/dist/lib/commands/manual.d.ts.map +1 -0
  21. package/dist/lib/commands/recompress.d.ts +12 -0
  22. package/dist/lib/commands/recompress.d.ts.map +1 -0
  23. package/dist/lib/commands/stats.d.ts +15 -0
  24. package/dist/lib/commands/stats.d.ts.map +1 -0
  25. package/dist/lib/commands/sweep.d.ts +23 -0
  26. package/dist/lib/commands/sweep.d.ts.map +1 -0
  27. package/dist/lib/compress/index.d.ts +4 -0
  28. package/dist/lib/compress/index.d.ts.map +1 -0
  29. package/dist/lib/compress/message-utils.d.ts +8 -0
  30. package/dist/lib/compress/message-utils.d.ts.map +1 -0
  31. package/dist/lib/compress/message.d.ts +4 -0
  32. package/dist/lib/compress/message.d.ts.map +1 -0
  33. package/dist/lib/compress/pipeline.d.ts +29 -0
  34. package/dist/lib/compress/pipeline.d.ts.map +1 -0
  35. package/dist/lib/compress/protected-content.d.ts +7 -0
  36. package/dist/lib/compress/protected-content.d.ts.map +1 -0
  37. package/dist/lib/compress/range-utils.d.ts +10 -0
  38. package/dist/lib/compress/range-utils.d.ts.map +1 -0
  39. package/dist/lib/compress/range.d.ts +4 -0
  40. package/dist/lib/compress/range.d.ts.map +1 -0
  41. package/dist/lib/compress/search.d.ts +11 -0
  42. package/dist/lib/compress/search.d.ts.map +1 -0
  43. package/dist/lib/compress/state.d.ts +10 -0
  44. package/dist/lib/compress/state.d.ts.map +1 -0
  45. package/dist/lib/compress/timing.d.ts +18 -0
  46. package/dist/lib/compress/timing.d.ts.map +1 -0
  47. package/dist/lib/compress/types.d.ts +94 -0
  48. package/dist/lib/compress/types.d.ts.map +1 -0
  49. package/dist/lib/compress-permission.d.ts +6 -0
  50. package/dist/lib/compress-permission.d.ts.map +1 -0
  51. package/dist/lib/config.d.ts +80 -0
  52. package/dist/lib/config.d.ts.map +1 -0
  53. package/dist/lib/gc/truncate.d.ts +15 -0
  54. package/dist/lib/gc/truncate.d.ts.map +1 -0
  55. package/dist/lib/hooks.d.ts +38 -0
  56. package/dist/lib/hooks.d.ts.map +1 -0
  57. package/dist/lib/host-permissions.d.ts +11 -0
  58. package/dist/lib/host-permissions.d.ts.map +1 -0
  59. package/dist/lib/logger.d.ts +31 -0
  60. package/dist/lib/logger.d.ts.map +1 -0
  61. package/dist/lib/message-ids.d.ts +19 -0
  62. package/dist/lib/message-ids.d.ts.map +1 -0
  63. package/dist/lib/messages/index.d.ts +10 -0
  64. package/dist/lib/messages/index.d.ts.map +1 -0
  65. package/dist/lib/messages/inject/inject.d.ts +8 -0
  66. package/dist/lib/messages/inject/inject.d.ts.map +1 -0
  67. package/dist/lib/messages/inject/subagent-results.d.ts +4 -0
  68. package/dist/lib/messages/inject/subagent-results.d.ts.map +1 -0
  69. package/dist/lib/messages/inject/utils.d.ts +33 -0
  70. package/dist/lib/messages/inject/utils.d.ts.map +1 -0
  71. package/dist/lib/messages/priority.d.ts +13 -0
  72. package/dist/lib/messages/priority.d.ts.map +1 -0
  73. package/dist/lib/messages/prune.d.ts +5 -0
  74. package/dist/lib/messages/prune.d.ts.map +1 -0
  75. package/dist/lib/messages/query.d.ts +7 -0
  76. package/dist/lib/messages/query.d.ts.map +1 -0
  77. package/dist/lib/messages/reasoning-strip.d.ts +8 -0
  78. package/dist/lib/messages/reasoning-strip.d.ts.map +1 -0
  79. package/dist/lib/messages/shape.d.ts +5 -0
  80. package/dist/lib/messages/shape.d.ts.map +1 -0
  81. package/dist/lib/messages/sync.d.ts +4 -0
  82. package/dist/lib/messages/sync.d.ts.map +1 -0
  83. package/dist/lib/messages/utils.d.ts +28 -0
  84. package/dist/lib/messages/utils.d.ts.map +1 -0
  85. package/dist/lib/prompts/compress-message.d.ts +2 -0
  86. package/dist/lib/prompts/compress-message.d.ts.map +1 -0
  87. package/dist/lib/prompts/compress-range.d.ts +2 -0
  88. package/dist/lib/prompts/compress-range.d.ts.map +1 -0
  89. package/dist/lib/prompts/context-limit-nudge.d.ts +2 -0
  90. package/dist/lib/prompts/context-limit-nudge.d.ts.map +1 -0
  91. package/dist/lib/prompts/extensions/nudge.d.ts +10 -0
  92. package/dist/lib/prompts/extensions/nudge.d.ts.map +1 -0
  93. package/dist/lib/prompts/extensions/system.d.ts +4 -0
  94. package/dist/lib/prompts/extensions/system.d.ts.map +1 -0
  95. package/dist/lib/prompts/extensions/tool.d.ts +3 -0
  96. package/dist/lib/prompts/extensions/tool.d.ts.map +1 -0
  97. package/dist/lib/prompts/index.d.ts +4 -0
  98. package/dist/lib/prompts/index.d.ts.map +1 -0
  99. package/dist/lib/prompts/iteration-nudge.d.ts +2 -0
  100. package/dist/lib/prompts/iteration-nudge.d.ts.map +1 -0
  101. package/dist/lib/prompts/store.d.ts +25 -0
  102. package/dist/lib/prompts/store.d.ts.map +1 -0
  103. package/dist/lib/prompts/system.d.ts +2 -0
  104. package/dist/lib/prompts/system.d.ts.map +1 -0
  105. package/dist/lib/prompts/turn-nudge.d.ts +2 -0
  106. package/dist/lib/prompts/turn-nudge.d.ts.map +1 -0
  107. package/dist/lib/protected-patterns.d.ts +5 -0
  108. package/dist/lib/protected-patterns.d.ts.map +1 -0
  109. package/dist/lib/state/index.d.ts +5 -0
  110. package/dist/lib/state/index.d.ts.map +1 -0
  111. package/dist/lib/state/persistence.d.ts +49 -0
  112. package/dist/lib/state/persistence.d.ts.map +1 -0
  113. package/dist/lib/state/state.d.ts +7 -0
  114. package/dist/lib/state/state.d.ts.map +1 -0
  115. package/dist/lib/state/tool-cache.d.ts +13 -0
  116. package/dist/lib/state/tool-cache.d.ts.map +1 -0
  117. package/dist/lib/state/types.d.ts +102 -0
  118. package/dist/lib/state/types.d.ts.map +1 -0
  119. package/dist/lib/state/utils.d.ts +22 -0
  120. package/dist/lib/state/utils.d.ts.map +1 -0
  121. package/dist/lib/strategies/deduplication.d.ts +10 -0
  122. package/dist/lib/strategies/deduplication.d.ts.map +1 -0
  123. package/dist/lib/strategies/index.d.ts +3 -0
  124. package/dist/lib/strategies/index.d.ts.map +1 -0
  125. package/dist/lib/strategies/purge-errors.d.ts +13 -0
  126. package/dist/lib/strategies/purge-errors.d.ts.map +1 -0
  127. package/dist/lib/subagents/subagent-results.d.ts +5 -0
  128. package/dist/lib/subagents/subagent-results.d.ts.map +1 -0
  129. package/dist/lib/token-utils.d.ts +19 -0
  130. package/dist/lib/token-utils.d.ts.map +1 -0
  131. package/dist/lib/ui/notification.d.ts +17 -0
  132. package/dist/lib/ui/notification.d.ts.map +1 -0
  133. package/dist/lib/ui/utils.d.ts +10 -0
  134. package/dist/lib/ui/utils.d.ts.map +1 -0
  135. package/dist/lib/update.d.ts +22 -0
  136. package/dist/lib/update.d.ts.map +1 -0
  137. package/package.json +75 -0
@@ -0,0 +1,4 @@
1
+ export declare function isSecureMode(): boolean;
2
+ export declare function getAuthorizationHeader(): string | undefined;
3
+ export declare function configureClientAuth(client: any): any;
4
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../lib/auth.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAQ3D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAsBpD"}
@@ -0,0 +1,14 @@
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
+ grouped: boolean;
9
+ blocks: CompressionBlock[];
10
+ }
11
+ export declare function getActiveCompressionTargets(messagesState: PruneMessagesState): CompressionTarget[];
12
+ export declare function getRecompressibleCompressionTargets(messagesState: PruneMessagesState, availableMessageIds: Set<string>): CompressionTarget[];
13
+ export declare function resolveCompressionTarget(messagesState: PruneMessagesState, blockId: number): CompressionTarget | null;
14
+ //# 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,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"}
@@ -0,0 +1,52 @@
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
+ export declare function handleContextCommand(ctx: ContextCommandContext): Promise<void>;
52
+ //# 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;AA8OD,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;AAmID,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkI1F"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * ACP Help command handler.
3
+ * Shows available ACP 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 handleHelpCommand(ctx: HelpCommandContext): Promise<void>;
17
+ //# 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;AA8CD,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
+ * /acp manual [on|off] - Toggle manual mode or set explicit state
7
+ * /acp 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,CAqBf;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;AAoFD,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsH1F"}
@@ -0,0 +1,15 @@
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
+ export interface StatsCommandContext {
8
+ client: any;
9
+ state: SessionState;
10
+ logger: Logger;
11
+ sessionId: string;
12
+ messages: WithParts[];
13
+ }
14
+ export declare function handleStatsCommand(ctx: StatsCommandContext): Promise<void>;
15
+ //# 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;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"}
@@ -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
+ * /acp sweep - Prune all tools since the previous user message
7
+ * /acp 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;AAe7C,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,CA2IhF"}
@@ -0,0 +1,4 @@
1
+ export { ToolContext } from "./types";
2
+ export { createCompressMessageTool } from "./message";
3
+ export { createCompressRangeTool } from "./range";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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,yBAAyB,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { PluginConfig } from "../config";
2
+ import type { SessionState } from "../state";
3
+ import type { CompressMessageToolArgs, ResolvedMessageCompressionsResult, SearchContext } from "./types";
4
+ export declare function validateArgs(args: CompressMessageToolArgs): void;
5
+ export declare function formatResult(processedCount: number, skippedIssues: string[], skippedCount: number): string;
6
+ export declare function formatIssues(skippedIssues: string[], skippedCount: number): string;
7
+ export declare function resolveMessages(args: CompressMessageToolArgs, searchContext: SearchContext, state: SessionState, config: PluginConfig): ResolvedMessageCompressionsResult;
8
+ //# sourceMappingURL=message-utils.d.ts.map
@@ -0,0 +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;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,CAgBR;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"}
@@ -0,0 +1,4 @@
1
+ import { tool } from "@opencode-ai/plugin";
2
+ import type { ToolContext } from "./types";
3
+ export declare function createCompressMessageTool(ctx: ToolContext): ReturnType<typeof tool>;
4
+ //# sourceMappingURL=message.d.ts.map
@@ -0,0 +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,CAyGnF"}
@@ -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,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"}
@@ -0,0 +1,7 @@
1
+ import type { SessionState } from "../state";
2
+ import type { SearchContext, SelectionResolution } from "./types";
3
+ export declare function appendProtectedUserMessages(summary: string, selection: SelectionResolution, searchContext: SearchContext, state: SessionState, enabled: boolean): string;
4
+ export declare function appendProtectedPromptInfo(summary: string, selection: SelectionResolution, searchContext: SearchContext, state: SessionState, enabled: boolean): string;
5
+ export declare function extractProtectedPromptInfo(text: string): string[];
6
+ export declare function appendProtectedTools(client: any, state: SessionState, allowSubAgents: boolean, summary: string, selection: SelectionResolution, searchContext: SearchContext, protectedTools: string[], protectedFilePatterns?: string[]): Promise<string>;
7
+ //# 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;AAa5C,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAEjE,wBAAgB,2BAA2B,CACvC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,mBAAmB,EAC9B,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,OAAO,GACjB,MAAM,CAgCR;AAED,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,CAyFjB"}
@@ -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,aAAa,EAAE,sBAAsB,EAAE,EACvC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAChD,eAAe,EAAE,iBAAiB,EAClC,aAAa,EAAE,iBAAiB,GACjC,qBAAqB,CAKvB;AAED,wBAAgB,2BAA2B,CACvC,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,EAAE,EAC1B,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAChD,gBAAgB,EAAE,MAAM,EAAE,GAC3B,qBAAqB,CAKvB"}
@@ -0,0 +1,4 @@
1
+ import { tool } from "@opencode-ai/plugin";
2
+ import type { ToolContext } from "./types";
3
+ export declare function createCompressRangeTool(ctx: ToolContext): ReturnType<typeof tool>;
4
+ //# sourceMappingURL=range.d.ts.map
@@ -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;AAsD1C,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CA8IjF"}
@@ -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;AAKvD,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,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACd;IAAE,cAAc,EAAE,iBAAiB,CAAC;IAAC,YAAY,EAAE,iBAAiB,CAAA;CAAE,CA2DxE;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,10 @@
1
+ import type { PruneMessagesState, SessionState } from "../state";
2
+ import type { AppliedCompressionResult, CompressionStateInput, SelectionResolution } from "./types";
3
+ import type { GCConfig } from "../config";
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): string;
9
+ export declare function applyCompressionState(state: SessionState, input: CompressionStateInput, selection: SelectionResolution, anchorMessageId: string, blockId: number, summary: string, consumedBlockIds: number[], gcConfig?: GCConfig): 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;AAElF,OAAO,KAAK,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AACnG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAIzC,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,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,EAC1B,QAAQ,CAAC,EAAE,QAAQ,GACpB,wBAAwB,CAkN1B"}
@@ -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,94 @@
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
+ export interface ToolContext {
6
+ client: any;
7
+ state: SessionState;
8
+ logger: Logger;
9
+ config: PluginConfig;
10
+ prompts: PromptStore;
11
+ }
12
+ export interface CompressRangeEntry {
13
+ startId: string;
14
+ endId: string;
15
+ summary: string;
16
+ }
17
+ export interface CompressRangeToolArgs {
18
+ topic: string;
19
+ content: CompressRangeEntry[];
20
+ }
21
+ export interface CompressMessageEntry {
22
+ messageId: string;
23
+ topic: string;
24
+ summary: string;
25
+ }
26
+ export interface CompressMessageToolArgs {
27
+ topic: string;
28
+ content: CompressMessageEntry[];
29
+ }
30
+ export interface BoundaryReference {
31
+ kind: "message" | "compressed-block";
32
+ rawIndex: number;
33
+ messageId?: string;
34
+ blockId?: number;
35
+ anchorMessageId?: string;
36
+ }
37
+ export interface SearchContext {
38
+ rawMessages: WithParts[];
39
+ rawMessagesById: Map<string, WithParts>;
40
+ rawIndexById: Map<string, number>;
41
+ summaryByBlockId: Map<number, CompressionBlock>;
42
+ }
43
+ export interface SelectionResolution {
44
+ startReference: BoundaryReference;
45
+ endReference: BoundaryReference;
46
+ messageIds: string[];
47
+ messageTokenById: Map<string, number>;
48
+ toolIds: string[];
49
+ requiredBlockIds: number[];
50
+ }
51
+ export interface ResolvedMessageCompression {
52
+ entry: CompressMessageEntry;
53
+ selection: SelectionResolution;
54
+ anchorMessageId: string;
55
+ }
56
+ export interface ResolvedRangeCompression {
57
+ index: number;
58
+ entry: CompressRangeEntry;
59
+ selection: SelectionResolution;
60
+ anchorMessageId: string;
61
+ }
62
+ export interface ResolvedMessageCompressionsResult {
63
+ plans: ResolvedMessageCompression[];
64
+ skippedIssues: string[];
65
+ skippedCount: number;
66
+ }
67
+ export interface ParsedBlockPlaceholder {
68
+ raw: string;
69
+ blockId: number;
70
+ startIndex: number;
71
+ endIndex: number;
72
+ }
73
+ export interface InjectedSummaryResult {
74
+ expandedSummary: string;
75
+ consumedBlockIds: number[];
76
+ }
77
+ export interface AppliedCompressionResult {
78
+ compressedTokens: number;
79
+ messageIds: string[];
80
+ newlyCompressedMessageIds: string[];
81
+ newlyCompressedToolIds: string[];
82
+ }
83
+ export interface CompressionStateInput {
84
+ topic: string;
85
+ batchTopic: string;
86
+ startId: string;
87
+ endId: string;
88
+ mode: CompressionMode;
89
+ runId: number;
90
+ compressMessageId: string;
91
+ compressCallId?: string;
92
+ summaryTokens: number;
93
+ }
94
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/compress/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { PluginConfig } from "./config";
2
+ import { type HostPermissionSnapshot } from "./host-permissions";
3
+ import type { SessionState, WithParts } from "./state";
4
+ export declare const compressPermission: (state: SessionState, config: PluginConfig) => "ask" | "allow" | "deny";
5
+ export declare const syncCompressPermissionState: (state: SessionState, config: PluginConfig, hostPermissions: HostPermissionSnapshot, messages: WithParts[]) => void;
6
+ //# sourceMappingURL=compress-permission.d.ts.map
@@ -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,EAAE,KAAK,sBAAsB,EAAsC,MAAM,oBAAoB,CAAA;AACpG,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGtD,eAAO,MAAM,kBAAkB,GAC3B,OAAO,YAAY,EACnB,QAAQ,YAAY,KACrB,KAAK,GAAG,OAAO,GAAG,MAEpB,CAAA;AAED,eAAO,MAAM,2BAA2B,GACpC,OAAO,YAAY,EACnB,QAAQ,YAAY,EACpB,iBAAiB,sBAAsB,EACvC,UAAU,SAAS,EAAE,KACtB,IAOF,CAAA"}
@@ -0,0 +1,80 @@
1
+ import type { PluginInput } from "@opencode-ai/plugin";
2
+ type Permission = "ask" | "allow" | "deny";
3
+ type CompressMode = "range" | "message";
4
+ export interface Deduplication {
5
+ enabled: boolean;
6
+ protectedTools: string[];
7
+ }
8
+ export interface CompressConfig {
9
+ mode: CompressMode;
10
+ permission: Permission;
11
+ showCompression: boolean;
12
+ summaryBuffer: boolean;
13
+ maxContextLimit: number | `${number}%`;
14
+ minContextLimit: number | `${number}%`;
15
+ modelMaxLimits?: Record<string, number | `${number}%`>;
16
+ modelMinLimits?: Record<string, number | `${number}%`>;
17
+ nudgeFrequency: number;
18
+ iterationNudgeThreshold: number;
19
+ nudgeForce: "strong" | "soft";
20
+ protectedTools: string[];
21
+ protectTags: boolean;
22
+ protectUserMessages: boolean;
23
+ }
24
+ export interface Commands {
25
+ enabled: boolean;
26
+ protectedTools: string[];
27
+ }
28
+ export interface ManualModeConfig {
29
+ enabled: boolean;
30
+ automaticStrategies: boolean;
31
+ }
32
+ export interface PurgeErrors {
33
+ enabled: boolean;
34
+ turns: number;
35
+ protectedTools: string[];
36
+ }
37
+ export interface TurnProtection {
38
+ enabled: boolean;
39
+ turns: number;
40
+ }
41
+ export interface ExperimentalConfig {
42
+ allowSubAgents: boolean;
43
+ customPrompts: boolean;
44
+ }
45
+ export interface GCConfig {
46
+ algorithm: "truncate";
47
+ promotionThreshold: number;
48
+ maxBlockAge: number;
49
+ maxOldGenSummaryLength: number;
50
+ majorGcThresholdPercent: number | `${number}%`;
51
+ }
52
+ export interface PluginConfig {
53
+ enabled: boolean;
54
+ autoUpdate: boolean;
55
+ debug: boolean;
56
+ pruneNotification: "off" | "minimal" | "detailed";
57
+ pruneNotificationType: "chat" | "toast";
58
+ commands: Commands;
59
+ manualMode: ManualModeConfig;
60
+ turnProtection: TurnProtection;
61
+ experimental: ExperimentalConfig;
62
+ protectedFilePatterns: string[];
63
+ compress: CompressConfig;
64
+ gc: GCConfig;
65
+ strategies: {
66
+ deduplication: Deduplication;
67
+ purgeErrors: PurgeErrors;
68
+ };
69
+ }
70
+ export declare const VALID_CONFIG_KEYS: Set<string>;
71
+ export declare function getInvalidConfigKeys(userConfig: Record<string, any>): string[];
72
+ interface ValidationError {
73
+ key: string;
74
+ expected: string;
75
+ actual: string;
76
+ }
77
+ export declare function validateConfigTypes(config: Record<string, any>): ValidationError[];
78
+ export declare function getConfig(ctx: PluginInput): PluginConfig;
79
+ export {};
80
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { CompressionBlock } from "../state";
2
+ import type { GCConfig } from "../config";
3
+ export interface CompactionResult {
4
+ compactedBlocks: number;
5
+ savedTokens: number;
6
+ }
7
+ export interface GCParams {
8
+ maxOldGenSummaryLength: number;
9
+ modelContextLimit: number;
10
+ currentTokens: number;
11
+ }
12
+ export declare function runTruncateGC(blocks: CompressionBlock[], params: GCParams): CompactionResult;
13
+ export declare function shouldRunMajorGC(currentTokens: number, modelContextLimit: number | undefined, gcConfig: GCConfig): boolean;
14
+ export declare function getGCParams(gcConfig: GCConfig, modelContextLimit: number, currentTokens: number): GCParams;
15
+ //# sourceMappingURL=truncate.d.ts.map