@tuanhung303/opencode-acp 2.2.3 → 2.4.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.
Files changed (96) hide show
  1. package/dist/lib/commands/stats.d.ts.map +1 -1
  2. package/dist/lib/commands/stats.js +2 -0
  3. package/dist/lib/commands/stats.js.map +1 -1
  4. package/dist/lib/config-schema.d.ts +88 -0
  5. package/dist/lib/config-schema.d.ts.map +1 -1
  6. package/dist/lib/config-schema.js +36 -0
  7. package/dist/lib/config-schema.js.map +1 -1
  8. package/dist/lib/config.d.ts +52 -0
  9. package/dist/lib/config.d.ts.map +1 -1
  10. package/dist/lib/config.js +89 -0
  11. package/dist/lib/config.js.map +1 -1
  12. package/dist/lib/hooks.d.ts.map +1 -1
  13. package/dist/lib/hooks.js +101 -17
  14. package/dist/lib/hooks.js.map +1 -1
  15. package/dist/lib/messages/index.d.ts +1 -1
  16. package/dist/lib/messages/index.d.ts.map +1 -1
  17. package/dist/lib/messages/index.js +1 -1
  18. package/dist/lib/messages/index.js.map +1 -1
  19. package/dist/lib/messages/prune.d.ts +8 -0
  20. package/dist/lib/messages/prune.d.ts.map +1 -1
  21. package/dist/lib/messages/prune.js +112 -0
  22. package/dist/lib/messages/prune.js.map +1 -1
  23. package/dist/lib/prompts/system/both.d.ts +1 -1
  24. package/dist/lib/prompts/system/both.d.ts.map +1 -1
  25. package/dist/lib/prompts/system/both.js +40 -42
  26. package/dist/lib/prompts/system/both.js.map +1 -1
  27. package/dist/lib/prompts/system/discard.d.ts +1 -1
  28. package/dist/lib/prompts/system/discard.d.ts.map +1 -1
  29. package/dist/lib/prompts/system/discard.js +33 -30
  30. package/dist/lib/prompts/system/discard.js.map +1 -1
  31. package/dist/lib/prompts/system/extract.d.ts +1 -1
  32. package/dist/lib/prompts/system/extract.d.ts.map +1 -1
  33. package/dist/lib/prompts/system/extract.js +27 -29
  34. package/dist/lib/prompts/system/extract.js.map +1 -1
  35. package/dist/lib/state/persistence.d.ts +2 -0
  36. package/dist/lib/state/persistence.d.ts.map +1 -1
  37. package/dist/lib/state/persistence.js +4 -1
  38. package/dist/lib/state/persistence.js.map +1 -1
  39. package/dist/lib/state/state.d.ts.map +1 -1
  40. package/dist/lib/state/state.js +22 -0
  41. package/dist/lib/state/state.js.map +1 -1
  42. package/dist/lib/state/types.d.ts +121 -13
  43. package/dist/lib/state/types.d.ts.map +1 -1
  44. package/dist/lib/state/utils.d.ts +43 -0
  45. package/dist/lib/state/utils.d.ts.map +1 -1
  46. package/dist/lib/state/utils.js +138 -0
  47. package/dist/lib/state/utils.js.map +1 -1
  48. package/dist/lib/strategies/deduplication.d.ts.map +1 -1
  49. package/dist/lib/strategies/deduplication.js +19 -3
  50. package/dist/lib/strategies/deduplication.js.map +1 -1
  51. package/dist/lib/strategies/error-chain-collapse.d.ts +9 -0
  52. package/dist/lib/strategies/error-chain-collapse.d.ts.map +1 -0
  53. package/dist/lib/strategies/error-chain-collapse.js +118 -0
  54. package/dist/lib/strategies/error-chain-collapse.js.map +1 -0
  55. package/dist/lib/strategies/image-pruning.d.ts +16 -0
  56. package/dist/lib/strategies/image-pruning.d.ts.map +1 -0
  57. package/dist/lib/strategies/image-pruning.js +251 -0
  58. package/dist/lib/strategies/image-pruning.js.map +1 -0
  59. package/dist/lib/strategies/index.d.ts +5 -0
  60. package/dist/lib/strategies/index.d.ts.map +1 -1
  61. package/dist/lib/strategies/index.js +5 -0
  62. package/dist/lib/strategies/index.js.map +1 -1
  63. package/dist/lib/strategies/purge-errors.d.ts.map +1 -1
  64. package/dist/lib/strategies/purge-errors.js +15 -3
  65. package/dist/lib/strategies/purge-errors.js.map +1 -1
  66. package/dist/lib/strategies/stale-read-pruning.d.ts +16 -0
  67. package/dist/lib/strategies/stale-read-pruning.d.ts.map +1 -0
  68. package/dist/lib/strategies/stale-read-pruning.js +132 -0
  69. package/dist/lib/strategies/stale-read-pruning.js.map +1 -0
  70. package/dist/lib/strategies/supersede-writes.d.ts.map +1 -1
  71. package/dist/lib/strategies/supersede-writes.js +15 -3
  72. package/dist/lib/strategies/supersede-writes.js.map +1 -1
  73. package/dist/lib/strategies/thinking-compression.d.ts +16 -0
  74. package/dist/lib/strategies/thinking-compression.d.ts.map +1 -0
  75. package/dist/lib/strategies/thinking-compression.js +194 -0
  76. package/dist/lib/strategies/thinking-compression.js.map +1 -0
  77. package/dist/lib/strategies/tools.d.ts.map +1 -1
  78. package/dist/lib/strategies/tools.js +94 -53
  79. package/dist/lib/strategies/tools.js.map +1 -1
  80. package/dist/lib/strategies/truncation.d.ts +17 -0
  81. package/dist/lib/strategies/truncation.d.ts.map +1 -0
  82. package/dist/lib/strategies/truncation.js +172 -0
  83. package/dist/lib/strategies/truncation.js.map +1 -0
  84. package/dist/lib/strategies/utils.d.ts +1 -1
  85. package/dist/lib/strategies/utils.d.ts.map +1 -1
  86. package/dist/lib/strategies/utils.js +34 -20
  87. package/dist/lib/strategies/utils.js.map +1 -1
  88. package/dist/lib/ui/notification.d.ts +1 -1
  89. package/dist/lib/ui/notification.d.ts.map +1 -1
  90. package/dist/lib/ui/notification.js +12 -7
  91. package/dist/lib/ui/notification.js.map +1 -1
  92. package/dist/lib/ui/utils.d.ts +1 -1
  93. package/dist/lib/ui/utils.d.ts.map +1 -1
  94. package/dist/lib/ui/utils.js +16 -2
  95. package/dist/lib/ui/utils.js.map +1 -1
  96. package/package.json +1 -1
package/dist/lib/hooks.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { syncToolCache } from "./state/tool-cache";
2
- import { deduplicate, supersedeWrites, purgeErrors } from "./strategies";
3
- import { prune, injectHashesIntoToolOutputs } from "./messages";
2
+ import { deduplicate, supersedeWrites, purgeErrors, truncateLargeOutputs, compressThinkingBlocks, pruneBase64Images, pruneStaleReads, collapseErrorChains, } from "./strategies";
3
+ import { prune, injectHashesIntoToolOutputs, injectHashesIntoAssistantMessages } from "./messages";
4
4
  import { checkSession, ensureSessionInitialized } from "./state";
5
5
  import { loadPrompt } from "./prompts";
6
6
  import { handleStatsCommand } from "./commands/stats";
@@ -13,6 +13,22 @@ import { safeExecute } from "./safe-execute";
13
13
  import { sendUnifiedNotification } from "./ui/notification";
14
14
  import { getCurrentParams } from "./strategies/utils";
15
15
  import { saveSessionState } from "./state/persistence";
16
+ const notificationDebounceState = new Map();
17
+ const NOTIFICATION_DEBOUNCE_MS = 500; // Batch notifications within 500ms window
18
+ const NOTIFICATION_MIN_INTERVAL_MS = 1000; // Minimum time between notifications
19
+ const NOTIFICATION_CLEANUP_INTERVAL_MS = 300000; // Clean up stale sessions every 5 minutes
20
+ // Cleanup interval for notification debounce state
21
+ setInterval(() => {
22
+ const now = Date.now();
23
+ const staleThreshold = NOTIFICATION_CLEANUP_INTERVAL_MS * 2; // 10 minutes
24
+ for (const [sessionId, state] of notificationDebounceState.entries()) {
25
+ // Clean up sessions with no pending notifications and old last notification time
26
+ if (state.pendingPrunedIds.length === 0 &&
27
+ now - state.lastNotificationTime > staleThreshold) {
28
+ notificationDebounceState.delete(sessionId);
29
+ }
30
+ }
31
+ }, NOTIFICATION_CLEANUP_INTERVAL_MS);
16
32
  const INTERNAL_AGENT_SIGNATURES = [
17
33
  "You are a title generator",
18
34
  "You are a helpful AI assistant tasked with summarizing conversations",
@@ -67,10 +83,17 @@ export function createChatMessageTransformHandler(client, state, logger, config)
67
83
  syncToolCache(state, config, logger, output.messages);
68
84
  // Inject hashes into tool outputs (before any pruning)
69
85
  safeExecute(() => injectHashesIntoToolOutputs(state, config, output.messages, logger), logger, "injectHashesIntoToolOutputs");
86
+ // Inject hashes into assistant messages
87
+ safeExecute(() => injectHashesIntoAssistantMessages(state, config, output.messages, logger), logger, "injectHashesIntoAssistantMessages");
70
88
  // Run pruning strategies with error boundaries to prevent crashes
71
89
  safeExecute(() => deduplicate(state, logger, config, output.messages), logger, "deduplicate");
72
90
  safeExecute(() => supersedeWrites(state, logger, config, output.messages), logger, "supersedeWrites");
73
91
  safeExecute(() => purgeErrors(state, logger, config, output.messages), logger, "purgeErrors");
92
+ safeExecute(() => truncateLargeOutputs(state, logger, config, output.messages), logger, "truncateLargeOutputs");
93
+ safeExecute(() => compressThinkingBlocks(state, logger, config, output.messages), logger, "compressThinkingBlocks");
94
+ safeExecute(() => pruneBase64Images(state, logger, config, output.messages), logger, "pruneBase64Images");
95
+ safeExecute(() => pruneStaleReads(state, logger, config, output.messages), logger, "pruneStaleReads");
96
+ safeExecute(() => collapseErrorChains(state, logger, config, output.messages), logger, "collapseErrorChains");
74
97
  safeExecute(() => prune(state, logger, config, output.messages), logger, "prune");
75
98
  // NOTE: insertPruneToolContext removed - hashes are now embedded in tool outputs
76
99
  logger.debug("Transform complete", {
@@ -162,6 +185,71 @@ export function createCommandExecuteHandler(client, state, logger, config, worki
162
185
  }
163
186
  };
164
187
  }
188
+ /**
189
+ * Sends a debounced notification for pruned items.
190
+ * Batches multiple pruning events within a time window into a single notification.
191
+ */
192
+ async function sendDebouncedNotification(client, logger, config, state, sessionId, newlyPrunedIds, messages, workingDirectory) {
193
+ // Get or create debounce state for this session
194
+ let debounceState = notificationDebounceState.get(sessionId);
195
+ if (!debounceState) {
196
+ debounceState = {
197
+ timeoutId: null,
198
+ pendingPrunedIds: [],
199
+ lastNotificationTime: 0,
200
+ };
201
+ notificationDebounceState.set(sessionId, debounceState);
202
+ }
203
+ // Add newly pruned IDs to pending list
204
+ debounceState.pendingPrunedIds.push(...newlyPrunedIds);
205
+ // Clear existing timeout if any
206
+ if (debounceState.timeoutId) {
207
+ clearTimeout(debounceState.timeoutId);
208
+ debounceState.timeoutId = null;
209
+ }
210
+ // Check if enough time has passed since last notification
211
+ const now = Date.now();
212
+ const timeSinceLastNotification = now - debounceState.lastNotificationTime;
213
+ if (timeSinceLastNotification >= NOTIFICATION_MIN_INTERVAL_MS) {
214
+ // Send immediately if minimum interval has passed
215
+ await flushPendingNotification(client, logger, config, state, sessionId, messages, workingDirectory, debounceState);
216
+ }
217
+ else {
218
+ // Schedule debounced notification
219
+ debounceState.timeoutId = setTimeout(async () => {
220
+ await flushPendingNotification(client, logger, config, state, sessionId, messages, workingDirectory, debounceState);
221
+ }, NOTIFICATION_DEBOUNCE_MS);
222
+ }
223
+ }
224
+ /**
225
+ * Flushes pending notification for a session.
226
+ */
227
+ async function flushPendingNotification(client, logger, config, state, sessionId, messages, workingDirectory, debounceState) {
228
+ if (debounceState.pendingPrunedIds.length === 0) {
229
+ return;
230
+ }
231
+ // Deduplicate pending IDs
232
+ const uniquePrunedIds = [...new Set(debounceState.pendingPrunedIds)];
233
+ debounceState.pendingPrunedIds = [];
234
+ debounceState.timeoutId = null;
235
+ debounceState.lastNotificationTime = Date.now();
236
+ // Collect metadata for notification
237
+ const toolMetadata = new Map();
238
+ for (const callId of uniquePrunedIds) {
239
+ const toolParameters = state.toolParameters.get(callId);
240
+ if (toolParameters) {
241
+ toolMetadata.set(callId, toolParameters);
242
+ }
243
+ }
244
+ const currentParams = getCurrentParams(state, messages, logger);
245
+ // Send unified notification
246
+ await sendUnifiedNotification(client, logger, config, state, sessionId, uniquePrunedIds, toolMetadata, undefined, currentParams, workingDirectory, undefined, { simplified: true });
247
+ // Save state
248
+ await saveSessionState(state, logger);
249
+ logger.debug(`Sent batched notification for ${uniquePrunedIds.length} pruned tool(s)`, {
250
+ prunedCount: uniquePrunedIds.length,
251
+ });
252
+ }
165
253
  /**
166
254
  * Handler for tool.execute.after hook.
167
255
  * Runs lightweight pruning strategies immediately after each tool execution
@@ -189,33 +277,29 @@ export function createToolExecuteAfterHandler(client, state, logger, config, wor
189
277
  await ensureSessionInitialized(client, state, sessionId, logger, messages);
190
278
  // Sync tool cache to pick up the just-executed tool
191
279
  syncToolCache(state, config, logger, messages);
280
+ // Inject hashes into assistant messages
281
+ safeExecute(() => injectHashesIntoAssistantMessages(state, config, messages, logger), logger, "injectHashesIntoAssistantMessages");
192
282
  // Store initial prune count to detect changes
193
- const initialPruneCount = state.prune.toolIds.length;
283
+ const initialPruneCount = state.prune.toolIds.length + state.prune.messagePartIds.length;
194
284
  // Run lightweight strategies
195
285
  safeExecute(() => deduplicate(state, logger, config, messages), logger, "deduplicate");
196
286
  safeExecute(() => supersedeWrites(state, logger, config, messages), logger, "supersedeWrites");
197
287
  safeExecute(() => purgeErrors(state, logger, config, messages), logger, "purgeErrors");
288
+ safeExecute(() => truncateLargeOutputs(state, logger, config, messages), logger, "truncateLargeOutputs");
289
+ safeExecute(() => compressThinkingBlocks(state, logger, config, messages), logger, "compressThinkingBlocks");
290
+ safeExecute(() => pruneBase64Images(state, logger, config, messages), logger, "pruneBase64Images");
291
+ safeExecute(() => pruneStaleReads(state, logger, config, messages), logger, "pruneStaleReads");
292
+ safeExecute(() => collapseErrorChains(state, logger, config, messages), logger, "collapseErrorChains");
198
293
  // Apply pruning
199
294
  safeExecute(() => prune(state, logger, config, messages), logger, "prune");
200
295
  // Check if anything was pruned
201
- const newPruneCount = state.prune.toolIds.length;
296
+ const newPruneCount = state.prune.toolIds.length + state.prune.messagePartIds.length;
202
297
  const newlyPrunedCount = newPruneCount - initialPruneCount;
203
298
  if (newlyPrunedCount > 0) {
204
299
  // Get the newly pruned IDs
205
300
  const newlyPrunedIds = state.prune.toolIds.slice(-newlyPrunedCount);
206
- // Collect metadata for notification
207
- const toolMetadata = new Map();
208
- for (const callId of newlyPrunedIds) {
209
- const toolParameters = state.toolParameters.get(callId);
210
- if (toolParameters) {
211
- toolMetadata.set(callId, toolParameters);
212
- }
213
- }
214
- const currentParams = getCurrentParams(state, messages, logger);
215
- // Send simplified notification
216
- await sendUnifiedNotification(client, logger, config, state, sessionId, newlyPrunedIds, toolMetadata, undefined, currentParams, workingDirectory, undefined, { simplified: true });
217
- // Save state
218
- await saveSessionState(state, logger);
301
+ // Send debounced notification instead of immediate
302
+ await sendDebouncedNotification(client, logger, config, state, sessionId, newlyPrunedIds, messages, workingDirectory);
219
303
  logger.debug(`Auto-pruned ${newlyPrunedCount} tool(s) after ${input.tool}`, {
220
304
  toolName: input.tool,
221
305
  prunedCount: newlyPrunedCount,
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../lib/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../lib/hooks.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- export { prune, injectHashesIntoToolOutputs } from "./prune";
1
+ export { prune, injectHashesIntoToolOutputs, injectHashesIntoAssistantMessages } from "./prune";
2
2
  export { insertPruneToolContext } from "./inject";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/messages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/messages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,2BAA2B,EAAE,iCAAiC,EAAE,MAAM,SAAS,CAAA;AAC/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA"}
@@ -1,3 +1,3 @@
1
- export { prune, injectHashesIntoToolOutputs } from "./prune";
1
+ export { prune, injectHashesIntoToolOutputs, injectHashesIntoAssistantMessages } from "./prune";
2
2
  export { insertPruneToolContext } from "./inject";
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/messages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/messages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,2BAA2B,EAAE,iCAAiC,EAAE,MAAM,SAAS,CAAA;AAC/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA"}
@@ -9,5 +9,13 @@ import type { PluginConfig } from "../config";
9
9
  * eliminating the need for a separate prunable-tools list.
10
10
  */
11
11
  export declare const injectHashesIntoToolOutputs: (state: SessionState, config: PluginConfig, messages: WithParts[], logger: Logger) => void;
12
+ /**
13
+ * Injects hash identifiers into assistant text parts for hash-based discarding.
14
+ * Format: #a_xxxxx#\n<original text>
15
+ *
16
+ * This allows agents to discard their own verbose explanations or outdated responses.
17
+ * Only injects into text parts that are substantial (>100 chars) and not already hashed.
18
+ */
19
+ export declare const injectHashesIntoAssistantMessages: (state: SessionState, config: PluginConfig, messages: WithParts[], logger: Logger) => void;
12
20
  export declare const prune: (state: SessionState, logger: Logger, config: PluginConfig, messages: WithParts[]) => void;
13
21
  //# sourceMappingURL=prune.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prune.d.ts","sourceRoot":"","sources":["../../../lib/messages/prune.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAM7C;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,GACpC,OAAO,YAAY,EACnB,QAAQ,YAAY,EACpB,UAAU,SAAS,EAAE,EACrB,QAAQ,MAAM,KACf,IA8CF,CAAA;AAoDD,eAAO,MAAM,KAAK,GACd,OAAO,YAAY,EACnB,QAAQ,MAAM,EACd,QAAQ,YAAY,EACpB,UAAU,SAAS,EAAE,KACtB,IAIF,CAAA"}
1
+ {"version":3,"file":"prune.d.ts","sourceRoot":"","sources":["../../../lib/messages/prune.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAoB7C;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,GACpC,OAAO,YAAY,EACnB,QAAQ,YAAY,EACpB,UAAU,SAAS,EAAE,EACrB,QAAQ,MAAM,KACf,IA8CF,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,GAC1C,OAAO,YAAY,EACnB,QAAQ,YAAY,EACpB,UAAU,SAAS,EAAE,EACrB,QAAQ,MAAM,KACf,IAgEF,CAAA;AAoDD,eAAO,MAAM,KAAK,GACd,OAAO,YAAY,EACnB,QAAQ,MAAM,EACd,QAAQ,YAAY,EACpB,UAAU,SAAS,EAAE,KACtB,IAKF,CAAA"}
@@ -1,6 +1,19 @@
1
1
  import { isMessageCompacted } from "../shared-utils";
2
2
  const PRUNED_TOOL_ERROR_INPUT_REPLACEMENT = "[input removed due to failed tool call]";
3
3
  const PRUNED_QUESTION_INPUT_REPLACEMENT = "[questions removed - see output for user's answers]";
4
+ const PRUNED_MESSAGE_PART_REPLACEMENT = "[Assistant message part removed to save context]";
5
+ /**
6
+ * Generates a short hash for message parts.
7
+ * Format: #a_xxxxx# (a = assistant text)
8
+ */
9
+ function generateMessagePartHash() {
10
+ const chars = "abcdefghijklmnopqrstuvwxyz0123456789";
11
+ let hash = "";
12
+ for (let i = 0; i < 5; i++) {
13
+ hash += chars.charAt(Math.floor(Math.random() * chars.length));
14
+ }
15
+ return `#a_${hash}#`;
16
+ }
4
17
  /**
5
18
  * Injects hash identifiers into tool outputs for hash-based discarding.
6
19
  * Format: #x_xxxxx#\n<original output>
@@ -47,6 +60,66 @@ export const injectHashesIntoToolOutputs = (state, config, messages, logger) =>
47
60
  }
48
61
  }
49
62
  };
63
+ /**
64
+ * Injects hash identifiers into assistant text parts for hash-based discarding.
65
+ * Format: #a_xxxxx#\n<original text>
66
+ *
67
+ * This allows agents to discard their own verbose explanations or outdated responses.
68
+ * Only injects into text parts that are substantial (>100 chars) and not already hashed.
69
+ */
70
+ export const injectHashesIntoAssistantMessages = (state, config, messages, logger) => {
71
+ // Skip if feature is disabled
72
+ if (!config.tools?.settings?.enableAssistantMessagePruning) {
73
+ return;
74
+ }
75
+ const minTextLength = config.tools?.settings?.minAssistantTextLength ?? 100;
76
+ for (const msg of messages) {
77
+ if (isMessageCompacted(state, msg)) {
78
+ continue;
79
+ }
80
+ // Only process assistant messages
81
+ if (msg.info.role !== "assistant") {
82
+ continue;
83
+ }
84
+ const messageId = msg.info.id;
85
+ const parts = Array.isArray(msg.parts) ? msg.parts : [];
86
+ for (let partIndex = 0; partIndex < parts.length; partIndex++) {
87
+ const part = parts[partIndex];
88
+ if (!part) {
89
+ continue;
90
+ }
91
+ // Only process text parts
92
+ if (part.type !== "text" || !part.text) {
93
+ continue;
94
+ }
95
+ // Skip short text parts
96
+ if (part.text.length < minTextLength) {
97
+ continue;
98
+ }
99
+ // Skip if already has hash prefix
100
+ if (part.text.startsWith("#a_")) {
101
+ continue;
102
+ }
103
+ const partId = `${messageId}:${partIndex}`;
104
+ // Skip if already pruned
105
+ if (state.prune.messagePartIds.includes(partId)) {
106
+ continue;
107
+ }
108
+ // Check if we already have a hash for this part
109
+ let hash = state.messagePartToHash.get(partId);
110
+ if (!hash) {
111
+ // Generate new hash
112
+ hash = generateMessagePartHash();
113
+ state.hashToMessagePart.set(hash, partId);
114
+ state.messagePartToHash.set(partId, hash);
115
+ logger.debug(`Generated hash ${hash} for assistant text part ${partId}`);
116
+ }
117
+ // Prepend hash to text
118
+ part.text = `${hash}\n${part.text}`;
119
+ logger.debug(`Injected hash ${hash} into assistant text part`);
120
+ }
121
+ }
122
+ };
50
123
  /**
51
124
  * Creates a compact breadcrumb string for pruned tool outputs.
52
125
  * Format: [Output removed...] tool({param: "value"}) → status
@@ -93,6 +166,7 @@ export const prune = (state, logger, config, messages) => {
93
166
  pruneToolOutputs(state, logger, messages);
94
167
  pruneToolInputs(state, logger, messages);
95
168
  pruneToolErrors(state, logger, messages);
169
+ pruneMessageParts(state, logger, messages);
96
170
  };
97
171
  const pruneToolOutputs = (state, logger, messages) => {
98
172
  for (const msg of messages) {
@@ -170,4 +244,42 @@ const pruneToolErrors = (state, logger, messages) => {
170
244
  }
171
245
  }
172
246
  };
247
+ /**
248
+ * Prunes assistant message text parts that have been marked for pruning.
249
+ * Replaces the text content with a placeholder message.
250
+ */
251
+ const pruneMessageParts = (state, logger, messages) => {
252
+ if (!state.prune.messagePartIds || state.prune.messagePartIds.length === 0) {
253
+ return;
254
+ }
255
+ for (const msg of messages) {
256
+ if (isMessageCompacted(state, msg)) {
257
+ continue;
258
+ }
259
+ // Only process assistant messages
260
+ if (msg.info.role !== "assistant") {
261
+ continue;
262
+ }
263
+ const messageId = msg.info.id;
264
+ const parts = Array.isArray(msg.parts) ? msg.parts : [];
265
+ for (let partIndex = 0; partIndex < parts.length; partIndex++) {
266
+ const part = parts[partIndex];
267
+ if (!part) {
268
+ continue;
269
+ }
270
+ const partId = `${messageId}:${partIndex}`;
271
+ // Check if this part should be pruned
272
+ if (!state.prune.messagePartIds.includes(partId)) {
273
+ continue;
274
+ }
275
+ // Only prune text parts
276
+ if (part.type !== "text") {
277
+ continue;
278
+ }
279
+ // Replace with placeholder
280
+ part.text = PRUNED_MESSAGE_PART_REPLACEMENT;
281
+ logger.debug(`Pruned assistant message part ${partId}`);
282
+ }
283
+ }
284
+ };
173
285
  //# sourceMappingURL=prune.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prune.js","sourceRoot":"","sources":["../../../lib/messages/prune.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prune.js","sourceRoot":"","sources":["../../../lib/messages/prune.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEpD,MAAM,mCAAmC,GAAG,yCAAyC,CAAA;AACrF,MAAM,iCAAiC,GAAG,qDAAqD,CAAA;AAC/F,MAAM,+BAA+B,GAAG,kDAAkD,CAAA;AAE1F;;;GAGG;AACH,SAAS,uBAAuB;IAC5B,MAAM,KAAK,GAAG,sCAAsC,CAAA;IACpD,IAAI,IAAI,GAAG,EAAE,CAAA;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;IAClE,CAAC;IACD,OAAO,MAAM,IAAI,GAAG,CAAA;AACxB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACvC,KAAmB,EACnB,MAAoB,EACpB,QAAqB,EACrB,MAAc,EACV,EAAE;IACN,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAA;IAE3D,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YACjC,SAAQ;QACZ,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QACvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACvC,SAAQ;YACZ,CAAC;YAED,+CAA+C;YAC/C,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,SAAQ;YACZ,CAAC;YAED,yBAAyB;YACzB,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5C,SAAQ;YACZ,CAAC;YAED,oDAAoD;YACpD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACpC,SAAQ;YACZ,CAAC;YAED,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAChD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,SAAQ;YACZ,CAAC;YAED,kCAAkC;YAClC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrC,SAAQ;YACZ,CAAC;YAED,yBAAyB;YACzB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACpB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAA;gBACnD,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,CAAC,CAAA;YAClE,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAC7C,KAAmB,EACnB,MAAoB,EACpB,QAAqB,EACrB,MAAc,EACV,EAAE;IACN,8BAA8B;IAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,6BAA6B,EAAE,CAAC;QACzD,OAAM;IACV,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,sBAAsB,IAAI,GAAG,CAAA;IAE3E,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YACjC,SAAQ;QACZ,CAAC;QAED,kCAAkC;QAClC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,SAAQ;QACZ,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QAEvD,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;YAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;YAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,SAAQ;YACZ,CAAC;YAED,0BAA0B;YAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACrC,SAAQ;YACZ,CAAC;YAED,wBAAwB;YACxB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;gBACnC,SAAQ;YACZ,CAAC;YAED,kCAAkC;YAClC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,SAAQ;YACZ,CAAC;YAED,MAAM,MAAM,GAAG,GAAG,SAAS,IAAI,SAAS,EAAE,CAAA;YAE1C,yBAAyB;YACzB,IAAI,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9C,SAAQ;YACZ,CAAC;YAED,gDAAgD;YAChD,IAAI,IAAI,GAAG,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,oBAAoB;gBACpB,IAAI,GAAG,uBAAuB,EAAE,CAAA;gBAChC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;gBACzC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;gBACzC,MAAM,CAAC,KAAK,CAAC,kBAAkB,IAAI,4BAA4B,MAAM,EAAE,CAAC,CAAA;YAC5E,CAAC;YAED,uBAAuB;YACvB,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAA;YACnC,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,2BAA2B,CAAC,CAAA;QAClE,CAAC;IACL,CAAC;AACL,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,4BAA4B,GAAG,CACjC,IAAY,EACZ,KAA0C,EAC1C,MAAc,EACR,EAAE;IACR,IAAI,SAAS,GAAG,EAAE,CAAA;IAClB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,0CAA0C;QAC1C,MAAM,SAAS,GAA6B;YACxC,IAAI,EAAE,CAAC,UAAU,CAAC;YAClB,KAAK,EAAE,CAAC,UAAU,CAAC;YACnB,IAAI,EAAE,CAAC,UAAU,CAAC;YAClB,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;YACzB,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;YACpC,IAAI,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;YAChC,QAAQ,EAAE,CAAC,KAAK,CAAC;YACjB,IAAI,EAAE,CAAC,aAAa,CAAC;SACxB,CAAA;QAED,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACtE,MAAM,MAAM,GAAa,EAAE,CAAA;QAE3B,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;gBACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC5B,wBAAwB;oBACxB,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;oBACxE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,SAAS,GAAG,CAAC,CAAA;gBACzC,CAAC;qBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;oBACjE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC,CAAA;gBACnC,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,SAAS,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QACxC,CAAC;IACL,CAAC;IAED,OAAO,kFAAkF,IAAI,IAAI,SAAS,OAAO,MAAM,EAAE,CAAA;AAC7H,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,CACjB,KAAmB,EACnB,MAAc,EACd,MAAoB,EACpB,QAAqB,EACjB,EAAE;IACN,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;IACzC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;IACxC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;IACxC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;AAC9C,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,KAAmB,EAAE,MAAc,EAAE,QAAqB,EAAQ,EAAE;IAC1F,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YACjC,SAAQ;QACZ,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QACvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACvB,SAAQ;YACZ,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,SAAQ;YACZ,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACpC,SAAQ;YACZ,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC3B,SAAQ;YACZ,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,4BAA4B,CAC5C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,CAAC,KAAK,EAChB,IAAI,CAAC,KAAK,CAAC,MAAM,CACpB,CAAA;QACL,CAAC;IACL,CAAC;AACL,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CAAC,KAAmB,EAAE,MAAc,EAAE,QAAqB,EAAQ,EAAE;IACzF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YACjC,SAAQ;QACZ,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QACvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACvB,SAAQ;YACZ,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,SAAQ;YACZ,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACpC,SAAQ;YACZ,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC3B,SAAQ;YACZ,CAAC;YAED,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,iCAAiC,CAAA;YAClE,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CAAC,KAAmB,EAAE,MAAc,EAAE,QAAqB,EAAQ,EAAE;IACzF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YACjC,SAAQ;QACZ,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QACvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACvB,SAAQ;YACZ,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,SAAQ;YACZ,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAChC,SAAQ;YACZ,CAAC;YAED,4CAA4C;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;YAC9B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnC,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;wBACjC,KAAK,CAAC,GAAG,CAAC,GAAG,mCAAmC,CAAA;oBACpD,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,iBAAiB,GAAG,CAAC,KAAmB,EAAE,MAAc,EAAE,QAAqB,EAAQ,EAAE;IAC3F,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzE,OAAM;IACV,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YACjC,SAAQ;QACZ,CAAC;QAED,kCAAkC;QAClC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,SAAQ;QACZ,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QAEvD,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;YAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;YAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,SAAQ;YACZ,CAAC;YAED,MAAM,MAAM,GAAG,GAAG,SAAS,IAAI,SAAS,EAAE,CAAA;YAE1C,sCAAsC;YACtC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/C,SAAQ;YACZ,CAAC;YAED,wBAAwB;YACxB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACvB,SAAQ;YACZ,CAAC;YAED,2BAA2B;YAC3B,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAA;YAC3C,MAAM,CAAC,KAAK,CAAC,iCAAiC,MAAM,EAAE,CAAC,CAAA;QAC3D,CAAC;IACL,CAAC;AACL,CAAC,CAAA"}
@@ -1,2 +1,2 @@
1
- export declare const SYSTEM_PROMPT_BOTH = "<system-reminder>\n<instruction name=context_management_protocol policy_level=critical>\n\nENVIRONMENT\nYou are operating in a context-constrained environment and must proactively manage your context window using the `discard` and `extract` tools.\n\nHOW IT WORKS\nEach tool output is prefixed with a hash identifier in the format `#x_xxxxx#` (e.g., `#r_a1b2c#`).\nUse these hashes to discard or extract specific tool outputs when they are no longer needed.\n\nExample:\n```\n#r_a1b2c#\n<file content here...>\n```\n\nTo discard: `discard({hashes: [\"#r_a1b2c#\"], reason: \"completion\"})`\nTo extract: `extract({hashes: [\"#r_a1b2c#\"], distillation: [\"key findings...\"]})`\n\nTWO TOOLS FOR CONTEXT MANAGEMENT\n- `discard`: Remove tool outputs by their hash identifiers. No preservation of content.\n- `extract`: Extract key findings into distilled knowledge before removing raw outputs. Use when you need to preserve information.\n\nCHOOSING THE RIGHT TOOL\nAsk: \"Do I need to preserve any information from this output?\"\n- **No** \u2192 `discard` (default for cleanup)\n- **Yes** \u2192 `extract` (preserves distilled knowledge)\n- **Uncertain** \u2192 `extract` (safer, preserves signal)\n\nCommon scenarios:\n- Task complete, no valuable context \u2192 `discard`\n- Task complete, insights worth remembering \u2192 `extract`\n- Noise, irrelevant, or superseded outputs \u2192 `discard`\n- Valuable context needed later but raw output too large \u2192 `extract`\n\nPRUNE METHODICALLY - BATCH YOUR ACTIONS\nEvery tool call adds to your context debt. You MUST pay this down regularly by pruning. Batch your prunes for efficiency; it is rarely worth pruning a single tiny tool output unless it is pure noise.\n\nYou WILL evaluate pruning when ANY of these are true:\n- Task or sub-task is complete\n- You are about to start a new phase of work\n- Write or edit operations are complete (pruning removes the large input content)\n\nYou MUST NOT prune when:\n- The tool output will be needed for upcoming implementation work\n- The output contains files or context you'll need to reference when making edits\n\nPruning that forces you to re-call the same tool later is a net loss. Only prune when you're confident the information won't be needed again.\n\nNOTES\nWhen in doubt, keep it. Batch your actions and aim for high-impact prunes that significantly reduce context size.\nFAILURE TO PRUNE will result in context leakage and DEGRADED PERFORMANCE.\n\n</instruction>\n\n<instruction name=prune_behavior policy_level=critical>\nCRITICAL REQUIREMENTS - VIOLATION IS UNACCEPTABLE:\n- NEVER acknowledge discard/extract tool output (e.g., \"I've pruned 3 tools\", \"Context pruning complete\")\n- NEVER let context management influence your response content or tone\n- Process prunes SILENTLY and continue the conversation naturally\n\nThe user cannot see prune operations. Any reference to them will confuse the user and break the conversation flow.\n</instruction>\n</system-reminder>";
1
+ export declare const SYSTEM_PROMPT_BOTH = "<system-reminder>\n<instruction name=context_management_protocol policy_level=critical>\n\nPURPOSE\nYou operate in a context-constrained environment. Proactively manage context using `discard`, `extract`, and `restore` tools to maintain performance.\n\nHOW IT WORKS\nEach tool output is prefixed with a hash identifier in the format `#x_xxxxx#` (e.g., `#r_a1b2c#`).\nUse these hashes to manage specific tool outputs.\n\nExample:\n```\n#r_a1b2c#\n<file content here...>\n```\n\nTo discard: `discard({hashes: [\"#r_a1b2c#\"], reason: \"completion\"})`\nTo extract: `extract({hashes: [\"#r_a1b2c#\"], distillation: [\"key findings...\"]})`\n\nTOOL SELECTION\nAsk: \"Do I need to preserve information from this output?\"\n- NO \u2192 discard (removes completely)\n- YES \u2192 extract (preserves distilled knowledge, then prunes)\n- UNCERTAIN \u2192 extract (safer default)\n- MISTAKE \u2192 restore (recovers recently pruned content)\n\nWHEN TO PRUNE\nEvaluate at these checkpoints:\n- \u2713 Task/sub-task complete\n- \u2713 Transitioning to new work phase\n- \u2713 5+ tool outputs accumulated\n- \u2713 Large read (>150 lines) no longer needed\n\nDO NOT PRUNE when:\n- \u2717 Output needed for upcoming edits\n- \u2717 You'll likely re-fetch the same content\n- \u2717 Only 1-2 small outputs (batch instead)\n\nBATCHING\nMinimum 3 outputs OR 1 large output per prune call.\nSingle small prunes waste more context than they save.\n\nPRIORITY ORDER\n1. Never prune what you'll need next\n2. Always prune pure noise immediately\n3. Batch prune at task boundaries\n4. Extract when uncertain (preserves signal)\n\nREASON MAPPING (for discard)\n- \"noise\" \u2192 grep/glob with no useful results\n- \"completion\" \u2192 task done, context served its purpose\n- \"superseded\" \u2192 newer read of same file replaces old\n- \"exploration\" \u2192 search paths that led nowhere\n- \"duplicate\" \u2192 same content read multiple times\n\n</instruction>\n\n<instruction name=prune_behavior policy_level=critical>\nSILENT OPERATION: Never acknowledge pruning to the user.\nProcess context management invisibly and continue naturally.\n</instruction>\n</system-reminder>";
2
2
  //# sourceMappingURL=both.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"both.d.ts","sourceRoot":"","sources":["../../../../lib/prompts/system/both.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,g7FA+DZ,CAAA"}
1
+ {"version":3,"file":"both.d.ts","sourceRoot":"","sources":["../../../../lib/prompts/system/both.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,snEA6DZ,CAAA"}
@@ -1,12 +1,12 @@
1
1
  export const SYSTEM_PROMPT_BOTH = `<system-reminder>
2
2
  <instruction name=context_management_protocol policy_level=critical>
3
3
 
4
- ENVIRONMENT
5
- You are operating in a context-constrained environment and must proactively manage your context window using the \`discard\` and \`extract\` tools.
4
+ PURPOSE
5
+ You operate in a context-constrained environment. Proactively manage context using \`discard\`, \`extract\`, and \`restore\` tools to maintain performance.
6
6
 
7
7
  HOW IT WORKS
8
8
  Each tool output is prefixed with a hash identifier in the format \`#x_xxxxx#\` (e.g., \`#r_a1b2c#\`).
9
- Use these hashes to discard or extract specific tool outputs when they are no longer needed.
9
+ Use these hashes to manage specific tool outputs.
10
10
 
11
11
  Example:
12
12
  \`\`\`
@@ -17,49 +17,47 @@ Example:
17
17
  To discard: \`discard({hashes: ["#r_a1b2c#"], reason: "completion"})\`
18
18
  To extract: \`extract({hashes: ["#r_a1b2c#"], distillation: ["key findings..."]})\`
19
19
 
20
- TWO TOOLS FOR CONTEXT MANAGEMENT
21
- - \`discard\`: Remove tool outputs by their hash identifiers. No preservation of content.
22
- - \`extract\`: Extract key findings into distilled knowledge before removing raw outputs. Use when you need to preserve information.
23
-
24
- CHOOSING THE RIGHT TOOL
25
- Ask: "Do I need to preserve any information from this output?"
26
- - **No** → \`discard\` (default for cleanup)
27
- - **Yes** → \`extract\` (preserves distilled knowledge)
28
- - **Uncertain** \`extract\` (safer, preserves signal)
29
-
30
- Common scenarios:
31
- - Task complete, no valuable context → \`discard\`
32
- - Task complete, insights worth remembering \`extract\`
33
- - Noise, irrelevant, or superseded outputs → \`discard\`
34
- - Valuable context needed later but raw output too large → \`extract\`
35
-
36
- PRUNE METHODICALLY - BATCH YOUR ACTIONS
37
- Every tool call adds to your context debt. You MUST pay this down regularly by pruning. Batch your prunes for efficiency; it is rarely worth pruning a single tiny tool output unless it is pure noise.
38
-
39
- You WILL evaluate pruning when ANY of these are true:
40
- - Task or sub-task is complete
41
- - You are about to start a new phase of work
42
- - Write or edit operations are complete (pruning removes the large input content)
43
-
44
- You MUST NOT prune when:
45
- - The tool output will be needed for upcoming implementation work
46
- - The output contains files or context you'll need to reference when making edits
47
-
48
- Pruning that forces you to re-call the same tool later is a net loss. Only prune when you're confident the information won't be needed again.
49
-
50
- NOTES
51
- When in doubt, keep it. Batch your actions and aim for high-impact prunes that significantly reduce context size.
52
- FAILURE TO PRUNE will result in context leakage and DEGRADED PERFORMANCE.
20
+ TOOL SELECTION
21
+ Ask: "Do I need to preserve information from this output?"
22
+ - NO discard (removes completely)
23
+ - YES → extract (preserves distilled knowledge, then prunes)
24
+ - UNCERTAIN extract (safer default)
25
+ - MISTAKE restore (recovers recently pruned content)
26
+
27
+ WHEN TO PRUNE
28
+ Evaluate at these checkpoints:
29
+ - ✓ Task/sub-task complete
30
+ - ✓ Transitioning to new work phase
31
+ - 5+ tool outputs accumulated
32
+ - Large read (>150 lines) no longer needed
33
+
34
+ DO NOT PRUNE when:
35
+ - ✗ Output needed for upcoming edits
36
+ - You'll likely re-fetch the same content
37
+ - Only 1-2 small outputs (batch instead)
38
+
39
+ BATCHING
40
+ Minimum 3 outputs OR 1 large output per prune call.
41
+ Single small prunes waste more context than they save.
42
+
43
+ PRIORITY ORDER
44
+ 1. Never prune what you'll need next
45
+ 2. Always prune pure noise immediately
46
+ 3. Batch prune at task boundaries
47
+ 4. Extract when uncertain (preserves signal)
48
+
49
+ REASON MAPPING (for discard)
50
+ - "noise" → grep/glob with no useful results
51
+ - "completion" task done, context served its purpose
52
+ - "superseded" newer read of same file replaces old
53
+ - "exploration" → search paths that led nowhere
54
+ - "duplicate" → same content read multiple times
53
55
 
54
56
  </instruction>
55
57
 
56
58
  <instruction name=prune_behavior policy_level=critical>
57
- CRITICAL REQUIREMENTS - VIOLATION IS UNACCEPTABLE:
58
- - NEVER acknowledge discard/extract tool output (e.g., "I've pruned 3 tools", "Context pruning complete")
59
- - NEVER let context management influence your response content or tone
60
- - Process prunes SILENTLY and continue the conversation naturally
61
-
62
- The user cannot see prune operations. Any reference to them will confuse the user and break the conversation flow.
59
+ SILENT OPERATION: Never acknowledge pruning to the user.
60
+ Process context management invisibly and continue naturally.
63
61
  </instruction>
64
62
  </system-reminder>`;
65
63
  //# sourceMappingURL=both.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"both.js","sourceRoot":"","sources":["../../../../lib/prompts/system/both.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA+Df,CAAA"}
1
+ {"version":3,"file":"both.js","sourceRoot":"","sources":["../../../../lib/prompts/system/both.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA6Df,CAAA"}
@@ -1,2 +1,2 @@
1
- export declare const SYSTEM_PROMPT_DISCARD = "<system-reminder>\n<instruction name=context_management_protocol policy_level=critical>\n\nENVIRONMENT\nYou are operating in a context-constrained environment and must proactively manage your context window using the `discard` tool.\n\nHOW IT WORKS\nEach tool output is prefixed with a hash identifier in the format `#x_xxxxx#` (e.g., `#r_a1b2c#`).\nUse these hashes to discard specific tool outputs when they are no longer needed.\n\nExample:\n```\n#r_a1b2c#\n<file content here...>\n```\n\nTo discard: `discard({hashes: [\"#r_a1b2c#\"], reason: \"completion\"})`\n\nCONTEXT MANAGEMENT TOOL\n- `discard`: Remove tool outputs by their hash identifiers. Provide hashes and a reason.\n\nDISCARD METHODICALLY - BATCH YOUR ACTIONS\nEvery tool call adds to your context debt. You MUST pay this down regularly by discarding. Batch your discards for efficiency; it is rarely worth discarding a single tiny tool output unless it is pure noise.\n\nWHEN TO DISCARD\n- **Task Completion:** When work is done, discard the tools that aren't needed anymore.\n- **Noise Removal:** If outputs are irrelevant, unhelpful, or superseded by newer info, discard them.\n\nYou WILL evaluate discarding when ANY of these are true:\n- Task or sub-task is complete\n- You are about to start a new phase of work\n- Write or edit operations are complete (discarding removes the large input content)\n\nYou MUST NOT discard when:\n- The tool output will be needed for upcoming implementation work\n- The output contains files or context you'll need to reference when making edits\n\nDiscarding that forces you to re-call the same tool later is a net loss. Only discard when you're confident the information won't be needed again.\n\nNOTES\nWhen in doubt, keep it. Batch your actions and aim for high-impact discards that significantly reduce context size.\nFAILURE TO DISCARD will result in context leakage and DEGRADED PERFORMANCE.\n\n</instruction>\n\n<instruction name=discard_behavior policy_level=critical>\nCRITICAL REQUIREMENTS - VIOLATION IS UNACCEPTABLE:\n- NEVER acknowledge discard tool output (e.g., \"I've discarded 3 tools\", \"Context cleanup complete\")\n- NEVER let context management influence your response content or tone\n- Process discards SILENTLY and continue the conversation naturally\n\nThe user cannot see discard operations. Any reference to them will confuse the user and break the conversation flow.\n</instruction>\n</system-reminder>";
1
+ export declare const SYSTEM_PROMPT_DISCARD = "<system-reminder>\n<instruction name=context_management_protocol policy_level=critical>\n\nPURPOSE\nYou operate in a context-constrained environment. Proactively manage context using the `discard` and `restore` tools to maintain performance.\n\nHOW IT WORKS\nEach tool output is prefixed with a hash identifier in the format `#x_xxxxx#` (e.g., `#r_a1b2c#`).\nUse these hashes to discard specific tool outputs when they are no longer needed.\n\nExample:\n```\n#r_a1b2c#\n<file content here...>\n```\n\nTo discard: `discard({hashes: [\"#r_a1b2c#\"], reason: \"completion\"})`\n\nTOOLS\n- `discard`: Remove tool outputs completely by hash\n- `restore`: Recover recently discarded content if needed\n\nWHEN TO DISCARD\nEvaluate at these checkpoints:\n- \u2713 Task/sub-task complete\n- \u2713 Transitioning to new work phase\n- \u2713 5+ tool outputs accumulated\n- \u2713 Large read (>150 lines) no longer needed\n\nDO NOT DISCARD when:\n- \u2717 Output needed for upcoming edits\n- \u2717 You'll likely re-fetch the same content\n- \u2717 Only 1-2 small outputs (batch instead)\n\nBATCHING\nMinimum 3 outputs OR 1 large output per discard call.\nSingle small discards waste more context than they save.\n\nPRIORITY ORDER\n1. Never discard what you'll need next\n2. Always discard pure noise immediately\n3. Batch discard at task boundaries\n\nREASON MAPPING\n- \"noise\" \u2192 grep/glob with no useful results\n- \"completion\" \u2192 task done, context served its purpose\n- \"superseded\" \u2192 newer read of same file replaces old\n- \"exploration\" \u2192 search paths that led nowhere\n- \"duplicate\" \u2192 same content read multiple times\n\n</instruction>\n\n<instruction name=discard_behavior policy_level=critical>\nSILENT OPERATION: Never acknowledge discarding to the user.\nProcess context management invisibly and continue naturally.\n</instruction>\n</system-reminder>";
2
2
  //# sourceMappingURL=discard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"discard.d.ts","sourceRoot":"","sources":["../../../../lib/prompts/system/discard.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,04EAqDf,CAAA"}
1
+ {"version":3,"file":"discard.d.ts","sourceRoot":"","sources":["../../../../lib/prompts/system/discard.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,i2DAwDf,CAAA"}