@tarquinen/opencode-dcp 2.2.7-beta0 → 2.2.9-beta0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/README.md +61 -41
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +5 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/commands/context.d.ts +5 -2
  6. package/dist/lib/commands/context.d.ts.map +1 -1
  7. package/dist/lib/commands/context.js +11 -4
  8. package/dist/lib/commands/context.js.map +1 -1
  9. package/dist/lib/commands/decompress.d.ts +12 -0
  10. package/dist/lib/commands/decompress.d.ts.map +1 -0
  11. package/dist/lib/commands/decompress.js +159 -0
  12. package/dist/lib/commands/decompress.js.map +1 -0
  13. package/dist/lib/commands/help.d.ts.map +1 -1
  14. package/dist/lib/commands/help.js +5 -1
  15. package/dist/lib/commands/help.js.map +1 -1
  16. package/dist/lib/commands/manual.d.ts.map +1 -1
  17. package/dist/lib/commands/manual.js +7 -5
  18. package/dist/lib/commands/manual.js.map +1 -1
  19. package/dist/lib/commands/recompress.d.ts +12 -0
  20. package/dist/lib/commands/recompress.d.ts.map +1 -0
  21. package/dist/lib/commands/recompress.js +137 -0
  22. package/dist/lib/commands/recompress.js.map +1 -0
  23. package/dist/lib/commands/sweep.d.ts.map +1 -1
  24. package/dist/lib/commands/sweep.js +5 -5
  25. package/dist/lib/commands/sweep.js.map +1 -1
  26. package/dist/lib/config.d.ts +3 -0
  27. package/dist/lib/config.d.ts.map +1 -1
  28. package/dist/lib/config.js +34 -1
  29. package/dist/lib/config.js.map +1 -1
  30. package/dist/lib/hooks.d.ts +3 -2
  31. package/dist/lib/hooks.d.ts.map +1 -1
  32. package/dist/lib/hooks.js +24 -4
  33. package/dist/lib/hooks.js.map +1 -1
  34. package/dist/lib/logger.d.ts.map +1 -1
  35. package/dist/lib/logger.js +1 -1
  36. package/dist/lib/logger.js.map +1 -1
  37. package/dist/lib/message-ids.d.ts.map +1 -1
  38. package/dist/lib/message-ids.js +3 -5
  39. package/dist/lib/message-ids.js.map +1 -1
  40. package/dist/lib/messages/inject/inject.d.ts +2 -1
  41. package/dist/lib/messages/inject/inject.d.ts.map +1 -1
  42. package/dist/lib/messages/inject/inject.js +8 -8
  43. package/dist/lib/messages/inject/inject.js.map +1 -1
  44. package/dist/lib/messages/inject/subagent-results.d.ts.map +1 -1
  45. package/dist/lib/messages/inject/subagent-results.js +3 -2
  46. package/dist/lib/messages/inject/subagent-results.js.map +1 -1
  47. package/dist/lib/messages/inject/utils.d.ts +3 -1
  48. package/dist/lib/messages/inject/utils.d.ts.map +1 -1
  49. package/dist/lib/messages/inject/utils.js +18 -24
  50. package/dist/lib/messages/inject/utils.js.map +1 -1
  51. package/dist/lib/messages/prune.js +0 -7
  52. package/dist/lib/messages/prune.js.map +1 -1
  53. package/dist/lib/messages/sync.d.ts.map +1 -1
  54. package/dist/lib/messages/sync.js +8 -0
  55. package/dist/lib/messages/sync.js.map +1 -1
  56. package/dist/lib/messages/utils.d.ts +1 -18
  57. package/dist/lib/messages/utils.d.ts.map +1 -1
  58. package/dist/lib/messages/utils.js +8 -48
  59. package/dist/lib/messages/utils.js.map +1 -1
  60. package/dist/lib/prompts/compress.d.ts +1 -1
  61. package/dist/lib/prompts/compress.d.ts.map +1 -1
  62. package/dist/lib/prompts/compress.js +0 -13
  63. package/dist/lib/prompts/compress.js.map +1 -1
  64. package/dist/lib/prompts/context-limit-nudge.d.ts +2 -0
  65. package/dist/lib/prompts/context-limit-nudge.d.ts.map +1 -0
  66. package/dist/lib/prompts/context-limit-nudge.js +25 -0
  67. package/dist/lib/prompts/context-limit-nudge.js.map +1 -0
  68. package/dist/lib/prompts/index.d.ts +2 -1
  69. package/dist/lib/prompts/index.d.ts.map +1 -1
  70. package/dist/lib/prompts/index.js +24 -12
  71. package/dist/lib/prompts/index.js.map +1 -1
  72. package/dist/lib/prompts/internal-overlays.d.ts +5 -0
  73. package/dist/lib/prompts/internal-overlays.d.ts.map +1 -0
  74. package/dist/lib/prompts/internal-overlays.js +43 -0
  75. package/dist/lib/prompts/internal-overlays.js.map +1 -0
  76. package/dist/lib/prompts/store.d.ts +24 -0
  77. package/dist/lib/prompts/store.d.ts.map +1 -0
  78. package/dist/lib/prompts/store.js +365 -0
  79. package/dist/lib/prompts/store.js.map +1 -0
  80. package/dist/lib/prompts/{_codegen/system.generated.d.ts → system.d.ts} +2 -2
  81. package/dist/lib/prompts/system.d.ts.map +1 -0
  82. package/dist/lib/prompts/{_codegen/system.generated.js → system.js} +5 -24
  83. package/dist/lib/prompts/system.js.map +1 -0
  84. package/dist/lib/prompts/turn-nudge.d.ts +1 -2
  85. package/dist/lib/prompts/turn-nudge.d.ts.map +1 -1
  86. package/dist/lib/prompts/turn-nudge.js +6 -16
  87. package/dist/lib/prompts/turn-nudge.js.map +1 -1
  88. package/dist/lib/protected-patterns.d.ts +5 -0
  89. package/dist/lib/protected-patterns.d.ts.map +1 -0
  90. package/dist/lib/{protected-file-patterns.js → protected-patterns.js} +21 -10
  91. package/dist/lib/protected-patterns.js.map +1 -0
  92. package/dist/lib/state/state.d.ts +1 -1
  93. package/dist/lib/state/state.js +2 -2
  94. package/dist/lib/state/state.js.map +1 -1
  95. package/dist/lib/state/types.d.ts +3 -1
  96. package/dist/lib/state/types.d.ts.map +1 -1
  97. package/dist/lib/state/utils.d.ts.map +1 -1
  98. package/dist/lib/state/utils.js +5 -0
  99. package/dist/lib/state/utils.js.map +1 -1
  100. package/dist/lib/strategies/deduplication.d.ts.map +1 -1
  101. package/dist/lib/strategies/deduplication.js +3 -3
  102. package/dist/lib/strategies/deduplication.js.map +1 -1
  103. package/dist/lib/strategies/purge-errors.d.ts.map +1 -1
  104. package/dist/lib/strategies/purge-errors.js +3 -3
  105. package/dist/lib/strategies/purge-errors.js.map +1 -1
  106. package/dist/lib/strategies/supersede-writes.js +2 -2
  107. package/dist/lib/strategies/supersede-writes.js.map +1 -1
  108. package/dist/lib/tools/compress.d.ts.map +1 -1
  109. package/dist/lib/tools/compress.js +58 -26
  110. package/dist/lib/tools/compress.js.map +1 -1
  111. package/dist/lib/tools/types.d.ts +2 -0
  112. package/dist/lib/tools/types.d.ts.map +1 -1
  113. package/dist/lib/tools/{compress-utils.d.ts → utils.d.ts} +13 -2
  114. package/dist/lib/tools/utils.d.ts.map +1 -0
  115. package/dist/lib/tools/{compress-utils.js → utils.js} +108 -10
  116. package/dist/lib/tools/utils.js.map +1 -0
  117. package/dist/lib/ui/notification.d.ts +1 -1
  118. package/dist/lib/ui/notification.d.ts.map +1 -1
  119. package/dist/lib/ui/notification.js +20 -8
  120. package/dist/lib/ui/notification.js.map +1 -1
  121. package/dist/lib/ui/utils.d.ts +1 -1
  122. package/dist/lib/ui/utils.d.ts.map +1 -1
  123. package/dist/lib/ui/utils.js +20 -9
  124. package/dist/lib/ui/utils.js.map +1 -1
  125. package/package.json +2 -4
  126. package/dist/lib/prompts/_codegen/system.generated.d.ts.map +0 -1
  127. package/dist/lib/prompts/_codegen/system.generated.js.map +0 -1
  128. package/dist/lib/prompts/nudge.d.ts +0 -2
  129. package/dist/lib/prompts/nudge.d.ts.map +0 -1
  130. package/dist/lib/prompts/nudge.js +0 -25
  131. package/dist/lib/prompts/nudge.js.map +0 -1
  132. package/dist/lib/protected-file-patterns.d.ts +0 -12
  133. package/dist/lib/protected-file-patterns.d.ts.map +0 -1
  134. package/dist/lib/protected-file-patterns.js.map +0 -1
  135. package/dist/lib/tools/compress-utils.d.ts.map +0 -1
  136. package/dist/lib/tools/compress-utils.js.map +0 -1
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/dansmolsky)
4
4
  [![npm version](https://img.shields.io/npm/v/@tarquinen/opencode-dcp.svg)](https://www.npmjs.com/package/@tarquinen/opencode-dcp)
5
5
 
6
- Automatically reduces token usage in OpenCode by removing obsolete content from conversation history.
6
+ Automatically reduces token usage in OpenCode by managing conversation context.
7
7
 
8
8
  ![DCP in action](assets/images/dcp-demo5.png)
9
9
 
@@ -14,53 +14,31 @@ Add to your OpenCode config:
14
14
  ```jsonc
15
15
  // opencode.jsonc
16
16
  {
17
- "plugin": ["@tarquinen/opencode-dcp@latest"],
17
+ "plugin": ["@tarquinen/opencode-dcp@beta"],
18
18
  }
19
19
  ```
20
20
 
21
- Using `@latest` ensures you always get the newest version automatically when OpenCode starts.
21
+ Using `@beta` ensures you always get the newest version automatically when OpenCode starts.
22
22
 
23
23
  Restart OpenCode. The plugin will automatically start optimizing your sessions.
24
24
 
25
- ## Beta Notice (v2.2.7-beta0)
25
+ ## How It Works
26
26
 
27
- - Strategy shift to a single user-facing context tool: `compress`.
28
- - Context management is now less surgical and more focused on preserving high-signal work grouped by task.
27
+ DCP reduces context size through a compress tool and automatic cleanup. Your session history is never modified — DCP replaces pruned content with placeholders before sending requests to your LLM.
29
28
 
30
- ## How Pruning Works
29
+ ### Compress
31
30
 
32
- DCP uses one user-facing tool and strategies to reduce context size:
31
+ A tool exposed to your model that selects a conversation range and replaces it with a technical summary. When a new compression overlaps an earlier one, the earlier summary is nested inside the new one — so information is preserved through layers of compression rather than diluted away.
33
32
 
34
- For model-facing behavior (prompts and tool calls), this capability is always addressed as `compress`.
33
+ The model compresses at whatever scale fits: small ranges for noise cleanup, focused ranges for key findings, or broad ranges for completed work. Context thresholds (`minContextLimit`, `maxContextLimit`) and nudge settings control how aggressively the model is prompted to compress.
35
34
 
36
- ### Tool
35
+ ### Deduplication
37
36
 
38
- **Compress** Exposes a `compress` tool that will select a conversation range and replace it with a technical summary.
37
+ Identifies repeated tool calls (same tool, same arguments) and keeps only the most recent output. Recalculated when the compress tool runs, so prompt cache is only impacted alongside compression.
39
38
 
40
- The model can use `compress` at different scales: tiny ranges for noise cleanup, focused ranges for preserving key findings, and full chapters for completed work. The model will choose the best moment to compress based on session context size and opportunity.
39
+ ### Purge Errors
41
40
 
42
- ### Strategies
43
-
44
- **Deduplication** — Identifies repeated tool calls (e.g., reading the same file multiple times) and keeps only the most recent output. Runs automatically on every request with zero LLM cost.
45
-
46
- **Supersede Writes** — Removes write tool calls for files that have subsequently been read. When a file is written and later read, the original write content becomes redundant since the current file state is captured in the read result. Runs automatically on every request with zero LLM cost.
47
-
48
- **Purge Errors** — Prunes tool inputs for tools that returned errors after a configurable number of turns (default: 4). Error messages are preserved for context, but the potentially large input content is removed. Runs automatically on every request with zero LLM cost.
49
-
50
- Your session history is never modified—DCP replaces pruned content with placeholders before sending requests to your LLM.
51
-
52
- ## Impact on Prompt Caching
53
-
54
- LLM providers like Anthropic and OpenAI cache prompts based on exact prefix matching. When DCP prunes a tool output, it changes the message content, which invalidates cached prefixes from that point forward.
55
-
56
- **Trade-off:** You lose some cache read benefits but gain larger token savings from reduced context size and performance improvements through reduced context poisoning. In most cases, the token savings outweigh the cache miss cost—especially in long sessions where context bloat becomes significant.
57
-
58
- > **Note:** In testing, cache hit rates were approximately 85% with DCP enabled vs 90% without for most providers.
59
-
60
- **Best use cases:**
61
-
62
- - **Request-based billing** — Providers that count usage in requests, such as Github Copilot have no negative price impact.
63
- - **Uniform token pricing** — Providers that bill cached tokens at the same rate as regular input tokens, such as Cerebras, see pure savings with no cache-miss penalty.
41
+ Prunes inputs from errored tool calls after a configurable number of turns (default: 4). Error messages are preserved; only the potentially large input content is removed. Recalculated on compress tool use.
64
42
 
65
43
  ## Configuration
66
44
 
@@ -97,8 +75,8 @@ DCP uses its own config file:
97
75
  // tools only run when explicitly triggered via /dcp commands
98
76
  "manualMode": {
99
77
  "enabled": false,
100
- // When true, automatic strategies (deduplication, supersedeWrites, purgeErrors)
101
- // still run even in manual mode
78
+ // When true, automatic cleanup (deduplication, purgeErrors)
79
+ // still runs even in manual mode
102
80
  "automaticStrategies": true,
103
81
  },
104
82
  // Protect from pruning for <turns> message turns past tool invocation
@@ -110,6 +88,9 @@ DCP uses its own config file:
110
88
  "experimental": {
111
89
  // Allow DCP processing in subagent sessions
112
90
  "allowSubAgents": false,
91
+ // Enable user-editable prompt overrides under dcp-prompts directories
92
+ // When false (default), prompt override files/directories are ignored
93
+ "customPrompts": false,
113
94
  },
114
95
  // Protect file operations from pruning via glob patterns
115
96
  // Patterns match tool parameters.filePath (e.g. read/write/edit)
@@ -150,8 +131,13 @@ DCP uses its own config file:
150
131
  // Controls how likely compression is after user messages
151
132
  // ("strong" = more likely, "soft" = less likely)
152
133
  "nudgeForce": "soft",
134
+ // Flat tool schema: improves tool call reliability but uglier in the TUI
135
+ "flatSchema": false,
153
136
  // Tool names whose completed outputs are appended to the compression
154
137
  "protectedTools": [],
138
+ // Preserve your messages during compression.
139
+ // Warning: large copy-pasted prompts will never be compressed away
140
+ "protectUserMessages": false,
155
141
  },
156
142
  // Automatic pruning strategies
157
143
  "strategies": {
@@ -190,15 +176,38 @@ DCP provides a `/dcp` slash command:
190
176
  - `/dcp manual [on|off]` — Toggle manual mode or set explicit state. When on, the AI will not autonomously use context management tools.
191
177
 
192
178
  - `/dcp compress [focus]` — Trigger a single compress tool execution. Optional focus text directs what range to compress.
179
+ - `/dcp decompress <n>` — Restore a specific active compression by ID (for example `/dcp decompress 2`). Running without an argument shows available compression IDs, token sizes, and topics.
180
+ - `/dcp recompress <n>` — Re-apply a user-decompressed compression by ID (for example `/dcp recompress 2`). Running without an argument shows recompressible IDs, token sizes, and topics.
181
+
182
+ ### Prompt Overrides
183
+
184
+ DCP exposes five editable prompts:
185
+
186
+ - `system`
187
+ - `compress`
188
+ - `context-limit-nudge`
189
+ - `turn-nudge`
190
+ - `iteration-nudge`
191
+
192
+ This feature is disabled by default. Set `experimental.customPrompts` to `true` in your DCP config to activate it.
193
+
194
+ When enabled, managed defaults are written to `~/.config/opencode/dcp-prompts/defaults/` as plain-text prompt files. A single `README.md` in that directory explains each prompt and how to create overrides.
195
+
196
+ To customize behavior, add a file with the same name under an overrides directory and edit it as plain text.
197
+
198
+ To reset an override, delete the matching file from your overrides directory.
199
+
200
+ > [!NOTE]
201
+ > `compress` prompt changes apply after plugin restart because tool descriptions are registered at startup.
193
202
 
194
203
  ### Protected Tools
195
204
 
196
205
  By default, these tools are always protected from pruning:
197
- `task`, `todowrite`, `todoread`, `compress`, `batch`, `plan_enter`, `plan_exit`
206
+ `task`, `skill`, `todowrite`, `todoread`, `compress`, `batch`, `plan_enter`, `plan_exit`
198
207
 
199
208
  The `protectedTools` arrays in `commands` and `strategies` add to this default list.
200
209
 
201
- For the `compress` tool, `compress.protectedTools` ensures specific tool outputs are appended to the compressed summary. It defaults to an empty array `[]` but always inherently protects `task`, `todowrite`, and `todoread`.
210
+ For the `compress` tool, `compress.protectedTools` ensures specific tool outputs are appended to the compressed summary. It defaults to an empty array `[]` but always inherently protects `task`, `skill`, `todowrite`, and `todoread`.
202
211
 
203
212
  ### Config Precedence
204
213
 
@@ -208,11 +217,22 @@ Each level overrides the previous, so project settings take priority over config
208
217
 
209
218
  Restart OpenCode after making config changes.
210
219
 
211
- ## Limitations
220
+ ## Impact on Prompt Caching
212
221
 
213
- **Subagents** DCP is disabled for subagents by default. Subagents are not designed to be token efficient; what matters is that the final message returned to the main agent is a concise summary of findings. DCP's pruning could interfere with this summarization behavior.
222
+ LLM providers cache prompts based on exact prefix matching. When DCP prunes content, it changes messages, which invalidates cached prefixes from that point forward.
223
+
224
+ **Trade-off:** You lose some cache reads but gain token savings from reduced context size and fewer hallucinations from stale context. In most cases, especially in long sessions, the savings outweigh the cache miss cost.
225
+
226
+ > **Note:** In testing, cache hit rates were approximately 85% with DCP vs 90% without.
227
+
228
+ **No impact for:**
229
+
230
+ - **Request-based billing** — Providers like Github Copilot that charge per request, not tokens.
231
+ - **Uniform token pricing** — Providers like Cerebras that bill cached and uncached tokens at the same rate.
232
+
233
+ ## Limitations
214
234
 
215
- You can opt in experimentally with `experimental.allowSubAgents: true`.
235
+ **Subagents** Disabled by default. Subagent sessions prioritize returning concise summaries to the main agent, and pruning could interfere with that. Opt in with `experimental.allowSubAgents: true`.
216
236
 
217
237
  ## License
218
238
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAajD,QAAA,MAAM,MAAM,EAAE,MA4FK,CAAA;AAEnB,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAcjD,QAAA,MAAM,MAAM,EAAE,MAoGK,CAAA;AAEnB,eAAe,MAAM,CAAA"}
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@ import { getConfig } from "./lib/config";
2
2
  import { Logger } from "./lib/logger";
3
3
  import { createSessionState } from "./lib/state";
4
4
  import { createCompressTool } from "./lib/tools";
5
+ import { PromptStore } from "./lib/prompts/store";
5
6
  import { createChatMessageTransformHandler, createCommandExecuteHandler, createSystemPromptHandler, createTextCompleteHandler, } from "./lib/hooks";
6
7
  import { configureClientAuth, isSecureMode } from "./lib/auth";
7
8
  const plugin = (async (ctx) => {
@@ -11,6 +12,7 @@ const plugin = (async (ctx) => {
11
12
  }
12
13
  const logger = new Logger(config.debug);
13
14
  const state = createSessionState();
15
+ const prompts = new PromptStore(logger, ctx.directory, config.experimental.customPrompts);
14
16
  if (isSecureMode()) {
15
17
  configureClientAuth(ctx.client);
16
18
  // logger.info("Secure mode detected, configured client authentication")
@@ -19,8 +21,8 @@ const plugin = (async (ctx) => {
19
21
  strategies: config.strategies,
20
22
  });
21
23
  return {
22
- "experimental.chat.system.transform": createSystemPromptHandler(state, logger, config),
23
- "experimental.chat.messages.transform": createChatMessageTransformHandler(ctx.client, state, logger, config),
24
+ "experimental.chat.system.transform": createSystemPromptHandler(state, logger, config, prompts),
25
+ "experimental.chat.messages.transform": createChatMessageTransformHandler(ctx.client, state, logger, config, prompts),
24
26
  "chat.message": async (input, _output) => {
25
27
  // Cache variant from real user messages (not synthetic)
26
28
  // This avoids scanning all messages to find variant
@@ -37,6 +39,7 @@ const plugin = (async (ctx) => {
37
39
  logger,
38
40
  config,
39
41
  workingDirectory: ctx.directory,
42
+ prompts,
40
43
  }),
41
44
  }),
42
45
  },
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -14,8 +14,11 @@
14
14
  *
15
15
  * HOW WE CALCULATE EACH CATEGORY:
16
16
  *
17
- * SYSTEM = firstAssistant.input + cache.read - tokenizer(firstUserMessage)
18
- * The first response's input contains system + first user message.
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.
19
22
  *
20
23
  * TOOLS = tokenizer(toolInputs + toolOutputs) - prunedTokens
21
24
  * We must tokenize tools anyway for pruning decisions.
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../lib/commands/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;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;AA2OD,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CASpF"}
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;AAiPD,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CASpF"}
@@ -14,8 +14,11 @@
14
14
  *
15
15
  * HOW WE CALCULATE EACH CATEGORY:
16
16
  *
17
- * SYSTEM = firstAssistant.input + cache.read - tokenizer(firstUserMessage)
18
- * The first response's input contains system + first user message.
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.
19
22
  *
20
23
  * TOOLS = tokenizer(toolInputs + toolOutputs) - prunedTokens
21
24
  * We must tokenize tools anyway for pruning decisions.
@@ -58,7 +61,9 @@ function analyzeTokens(state, messages) {
58
61
  for (const msg of messages) {
59
62
  if (msg.info.role === "assistant") {
60
63
  const assistantInfo = msg.info;
61
- if (assistantInfo.tokens?.input > 0 || assistantInfo.tokens?.cache?.read > 0) {
64
+ if (assistantInfo.tokens?.input > 0 ||
65
+ assistantInfo.tokens?.cache?.read > 0 ||
66
+ assistantInfo.tokens?.cache?.write > 0) {
62
67
  firstAssistant = assistantInfo;
63
68
  break;
64
69
  }
@@ -164,7 +169,9 @@ function analyzeTokens(state, messages) {
164
169
  const toolInputTokens = countTokens(toolInputParts.join("\n"));
165
170
  const toolOutputTokens = countTokens(toolOutputParts.join("\n"));
166
171
  if (firstAssistant) {
167
- const firstInput = (firstAssistant.tokens?.input || 0) + (firstAssistant.tokens?.cache?.read || 0);
172
+ const firstInput = (firstAssistant.tokens?.input || 0) +
173
+ (firstAssistant.tokens?.cache?.read || 0) +
174
+ (firstAssistant.tokens?.cache?.write || 0);
168
175
  breakdown.system = Math.max(0, firstInput - firstUserTokens);
169
176
  }
170
177
  breakdown.tools = toolInputTokens + toolOutputTokens;
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../lib/commands/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../lib/commands/context.ts"],"names":[],"mappings":"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"}
@@ -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;AAQ7F,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;AAsHD,wBAAsB,uBAAuB,CAAC,GAAG,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqH1F"}
@@ -0,0 +1,159 @@
1
+ import { syncCompressionBlocks } from "../messages";
2
+ import { parseBlockRef } from "../message-ids";
3
+ import { getCurrentParams } from "../strategies/utils";
4
+ import { saveSessionState } from "../state/persistence";
5
+ import { sendIgnoredMessage } from "../ui/notification";
6
+ import { formatTokenCount } from "../ui/utils";
7
+ function parseBlockIdArg(arg) {
8
+ const normalized = arg.trim().toLowerCase();
9
+ const blockRef = parseBlockRef(normalized);
10
+ if (blockRef !== null) {
11
+ return blockRef;
12
+ }
13
+ if (!/^[1-9]\d*$/.test(normalized)) {
14
+ return null;
15
+ }
16
+ const parsed = Number.parseInt(normalized, 10);
17
+ return Number.isInteger(parsed) && parsed > 0 ? parsed : null;
18
+ }
19
+ function getAvailableBlocks(messagesState) {
20
+ return Array.from(messagesState.activeBlockIds)
21
+ .map((blockId) => messagesState.blocksById.get(blockId))
22
+ .filter((block) => !!block && block.active)
23
+ .sort((a, b) => a.blockId - b.blockId);
24
+ }
25
+ function findActiveParentBlockId(messagesState, block) {
26
+ const queue = [...block.parentBlockIds];
27
+ const visited = new Set();
28
+ while (queue.length > 0) {
29
+ const parentBlockId = queue.shift();
30
+ if (parentBlockId === undefined || visited.has(parentBlockId)) {
31
+ continue;
32
+ }
33
+ visited.add(parentBlockId);
34
+ const parent = messagesState.blocksById.get(parentBlockId);
35
+ if (!parent) {
36
+ continue;
37
+ }
38
+ if (parent.active) {
39
+ return parent.blockId;
40
+ }
41
+ for (const ancestorId of parent.parentBlockIds) {
42
+ if (!visited.has(ancestorId)) {
43
+ queue.push(ancestorId);
44
+ }
45
+ }
46
+ }
47
+ return null;
48
+ }
49
+ function snapshotActiveMessages(messagesState) {
50
+ const activeMessages = new Map();
51
+ for (const [messageId, entry] of messagesState.byMessageId) {
52
+ if (entry.activeBlockIds.length > 0) {
53
+ activeMessages.set(messageId, entry.tokenCount);
54
+ }
55
+ }
56
+ return activeMessages;
57
+ }
58
+ function formatDecompressMessage(targetBlockId, restoredMessageCount, restoredTokens, reactivatedBlockIds) {
59
+ const lines = [];
60
+ lines.push(`Restored compression ${targetBlockId}.`);
61
+ if (reactivatedBlockIds.length > 0) {
62
+ const refs = reactivatedBlockIds.map((id) => String(id)).join(", ");
63
+ lines.push(`Also restored nested compression(s): ${refs}.`);
64
+ }
65
+ if (restoredMessageCount > 0) {
66
+ lines.push(`Restored ${restoredMessageCount} message(s) (~${formatTokenCount(restoredTokens)}).`);
67
+ }
68
+ else {
69
+ lines.push("No messages were restored.");
70
+ }
71
+ return lines.join("\n");
72
+ }
73
+ function formatAvailableBlocksMessage(availableBlocks) {
74
+ const lines = [];
75
+ lines.push("Usage: /dcp decompress <n>");
76
+ lines.push("");
77
+ if (availableBlocks.length === 0) {
78
+ lines.push("No compressions are available to restore.");
79
+ return lines.join("\n");
80
+ }
81
+ lines.push("Available compressions:");
82
+ const entries = availableBlocks.map((block) => {
83
+ const topic = block.topic.replace(/\s+/g, " ").trim() || "(no topic)";
84
+ const label = `${block.blockId} (${formatTokenCount(block.compressedTokens)})`;
85
+ return { label, topic };
86
+ });
87
+ const labelWidth = Math.max(...entries.map((entry) => entry.label.length)) + 4;
88
+ for (const entry of entries) {
89
+ lines.push(` ${entry.label.padEnd(labelWidth)}${entry.topic}`);
90
+ }
91
+ return lines.join("\n");
92
+ }
93
+ export async function handleDecompressCommand(ctx) {
94
+ const { client, state, logger, sessionId, messages, args } = ctx;
95
+ const params = getCurrentParams(state, messages, logger);
96
+ const targetArg = args[0];
97
+ if (args.length > 1) {
98
+ await sendIgnoredMessage(client, sessionId, "Invalid arguments. Usage: /dcp decompress <n>", params, logger);
99
+ return;
100
+ }
101
+ syncCompressionBlocks(state, logger, messages);
102
+ const messagesState = state.prune.messages;
103
+ if (!targetArg) {
104
+ const availableBlocks = getAvailableBlocks(messagesState);
105
+ const message = formatAvailableBlocksMessage(availableBlocks);
106
+ await sendIgnoredMessage(client, sessionId, message, params, logger);
107
+ return;
108
+ }
109
+ const targetBlockId = parseBlockIdArg(targetArg);
110
+ if (targetBlockId === null) {
111
+ await sendIgnoredMessage(client, sessionId, `Please enter a compression number. Example: /dcp decompress 2`, params, logger);
112
+ return;
113
+ }
114
+ const targetBlock = messagesState.blocksById.get(targetBlockId);
115
+ if (!targetBlock) {
116
+ await sendIgnoredMessage(client, sessionId, `Compression ${targetBlockId} does not exist.`, params, logger);
117
+ return;
118
+ }
119
+ if (!targetBlock.active) {
120
+ const activeAncestorBlockId = findActiveParentBlockId(messagesState, targetBlock);
121
+ if (activeAncestorBlockId !== null) {
122
+ await sendIgnoredMessage(client, sessionId, `Compression ${targetBlockId} is inside compression ${activeAncestorBlockId}. Restore compression ${activeAncestorBlockId} first.`, params, logger);
123
+ return;
124
+ }
125
+ await sendIgnoredMessage(client, sessionId, `Compression ${targetBlockId} is not active.`, params, logger);
126
+ return;
127
+ }
128
+ const activeMessagesBefore = snapshotActiveMessages(messagesState);
129
+ const activeBlockIdsBefore = new Set(messagesState.activeBlockIds);
130
+ targetBlock.active = false;
131
+ targetBlock.deactivatedByUser = true;
132
+ targetBlock.deactivatedAt = Date.now();
133
+ targetBlock.deactivatedByBlockId = undefined;
134
+ syncCompressionBlocks(state, logger, messages);
135
+ let restoredMessageCount = 0;
136
+ let restoredTokens = 0;
137
+ for (const [messageId, tokenCount] of activeMessagesBefore) {
138
+ const entry = messagesState.byMessageId.get(messageId);
139
+ const isActiveNow = entry ? entry.activeBlockIds.length > 0 : false;
140
+ if (!isActiveNow) {
141
+ restoredMessageCount++;
142
+ restoredTokens += tokenCount;
143
+ }
144
+ }
145
+ state.stats.totalPruneTokens = Math.max(0, state.stats.totalPruneTokens - restoredTokens);
146
+ const reactivatedBlockIds = Array.from(messagesState.activeBlockIds)
147
+ .filter((blockId) => !activeBlockIdsBefore.has(blockId))
148
+ .sort((a, b) => a - b);
149
+ await saveSessionState(state, logger);
150
+ const message = formatDecompressMessage(targetBlockId, restoredMessageCount, restoredTokens, reactivatedBlockIds);
151
+ await sendIgnoredMessage(client, sessionId, message, params, logger);
152
+ logger.info("Decompress command completed", {
153
+ targetBlockId,
154
+ restoredMessageCount,
155
+ restoredTokens,
156
+ reactivatedBlockIds,
157
+ });
158
+ }
159
+ //# sourceMappingURL=decompress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decompress.js","sourceRoot":"","sources":["../../../lib/commands/decompress.ts"],"names":[],"mappings":"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"}
@@ -1 +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;AAIvD,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;AA0CD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAU9E"}
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;AAIvD,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"}
@@ -12,11 +12,15 @@ const BASE_COMMANDS = [
12
12
  ];
13
13
  const TOOL_COMMANDS = {
14
14
  compress: ["/dcp compress [focus]", "Trigger manual compress tool execution"],
15
+ decompress: ["/dcp decompress <n>", "Restore selected compression"],
16
+ recompress: ["/dcp recompress <n>", "Re-apply a user-decompressed compression"],
15
17
  };
16
18
  function getVisibleCommands(config) {
17
19
  const commands = [...BASE_COMMANDS];
18
20
  if (config.compress.permission !== "deny") {
19
21
  commands.push(TOOL_COMMANDS.compress);
22
+ commands.push(TOOL_COMMANDS.decompress);
23
+ commands.push(TOOL_COMMANDS.recompress);
20
24
  }
21
25
  return commands;
22
26
  }
@@ -39,7 +43,7 @@ function formatHelpMessage(manualMode, config) {
39
43
  export async function handleHelpCommand(ctx) {
40
44
  const { client, state, logger, sessionId, messages } = ctx;
41
45
  const { config } = ctx;
42
- const message = formatHelpMessage(state.manualMode, config);
46
+ const message = formatHelpMessage(!!state.manualMode, config);
43
47
  const params = getCurrentParams(state, messages, logger);
44
48
  await sendIgnoredMessage(client, sessionId, message, params, logger);
45
49
  logger.info("Help command executed");
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../../lib/commands/help.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAWtD,MAAM,aAAa,GAAuB;IACtC,CAAC,cAAc,EAAE,gDAAgD,CAAC;IAClE,CAAC,YAAY,EAAE,6BAA6B,CAAC;IAC7C,CAAC,gBAAgB,EAAE,sDAAsD,CAAC;IAC1E,CAAC,sBAAsB,EAAE,0CAA0C,CAAC;CACvE,CAAA;AAED,MAAM,aAAa,GAAqC;IACpD,QAAQ,EAAE,CAAC,uBAAuB,EAAE,wCAAwC,CAAC;CAChF,CAAA;AAED,SAAS,kBAAkB,CAAC,MAAoB;IAC5C,MAAM,QAAQ,GAAG,CAAC,GAAG,aAAa,CAAC,CAAA;IAEnC,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QACxC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IACzC,CAAC;IAED,OAAO,QAAQ,CAAA;AACnB,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAmB,EAAE,MAAoB;IAChE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAA;IACrE,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAA;IACzF,KAAK,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAA;IACzF,KAAK,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAA;IACzF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,KAAK,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;IAC9E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC,CAAA;IAClD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAuB;IAC3D,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAA;IAE1D,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAA;IACtB,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAE3D,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IACxD,MAAM,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAEpE,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;AACxC,CAAC"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../../lib/commands/help.ts"],"names":[],"mappings":"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"}
@@ -1 +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;AA2B7C,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"}
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;AA6B7C,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"}
@@ -8,6 +8,7 @@
8
8
  */
9
9
  import { sendIgnoredMessage } from "../ui/notification";
10
10
  import { getCurrentParams } from "../strategies/utils";
11
+ import { buildCompressedBlockGuidance } from "../messages/inject/utils";
11
12
  const MANUAL_MODE_ON = "Manual mode is now ON. Use /dcp compress to trigger context tools manually.";
12
13
  const MANUAL_MODE_OFF = "Manual mode is now OFF.";
13
14
  const COMPRESS_TRIGGER_PROMPT = [
@@ -17,9 +18,10 @@ const COMPRESS_TRIGGER_PROMPT = [
17
18
  "Choose safe boundaries and preserve all critical implementation details.",
18
19
  "Return after compress with a brief explanation of what range was compressed.",
19
20
  ].join("\n\n");
20
- function getTriggerPrompt(tool, userFocus) {
21
+ function getTriggerPrompt(tool, state, userFocus) {
21
22
  const base = COMPRESS_TRIGGER_PROMPT;
22
- const sections = [base];
23
+ const compressedBlockGuidance = buildCompressedBlockGuidance(state);
24
+ const sections = [base, compressedBlockGuidance];
23
25
  if (userFocus && userFocus.trim().length > 0) {
24
26
  sections.push(`Additional user focus:\n${userFocus.trim()}`);
25
27
  }
@@ -28,19 +30,19 @@ function getTriggerPrompt(tool, userFocus) {
28
30
  export async function handleManualToggleCommand(ctx, modeArg) {
29
31
  const { client, state, logger, sessionId, messages } = ctx;
30
32
  if (modeArg === "on") {
31
- state.manualMode = true;
33
+ state.manualMode = "active";
32
34
  }
33
35
  else if (modeArg === "off") {
34
36
  state.manualMode = false;
35
37
  }
36
38
  else {
37
- state.manualMode = !state.manualMode;
39
+ state.manualMode = state.manualMode ? false : "active";
38
40
  }
39
41
  const params = getCurrentParams(state, messages, logger);
40
42
  await sendIgnoredMessage(client, sessionId, state.manualMode ? MANUAL_MODE_ON : MANUAL_MODE_OFF, params, logger);
41
43
  logger.info("Manual mode toggled", { manualMode: state.manualMode });
42
44
  }
43
45
  export async function handleManualTriggerCommand(ctx, tool, userFocus) {
44
- return getTriggerPrompt(tool, userFocus);
46
+ return getTriggerPrompt(tool, ctx.state, userFocus);
45
47
  }
46
48
  //# sourceMappingURL=manual.js.map