@tarquinen/opencode-dcp 1.3.1-beta1 → 1.3.3-beta.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 (159) hide show
  1. package/README.md +94 -85
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +25 -9
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/auth.d.ts +4 -0
  6. package/dist/lib/auth.d.ts.map +1 -0
  7. package/dist/lib/auth.js +32 -0
  8. package/dist/lib/auth.js.map +1 -0
  9. package/dist/lib/commands/context.d.ts.map +1 -1
  10. package/dist/lib/commands/context.js +40 -26
  11. package/dist/lib/commands/context.js.map +1 -1
  12. package/dist/lib/commands/stats.d.ts.map +1 -1
  13. package/dist/lib/commands/stats.js +13 -8
  14. package/dist/lib/commands/stats.js.map +1 -1
  15. package/dist/lib/commands/sweep.d.ts.map +1 -1
  16. package/dist/lib/commands/sweep.js +4 -3
  17. package/dist/lib/commands/sweep.js.map +1 -1
  18. package/dist/lib/config.d.ts +10 -4
  19. package/dist/lib/config.d.ts.map +1 -1
  20. package/dist/lib/config.js +75 -31
  21. package/dist/lib/config.js.map +1 -1
  22. package/dist/lib/hooks.d.ts.map +1 -1
  23. package/dist/lib/hooks.js +13 -19
  24. package/dist/lib/hooks.js.map +1 -1
  25. package/dist/lib/messages/inject.d.ts +7 -0
  26. package/dist/lib/messages/inject.d.ts.map +1 -1
  27. package/dist/lib/messages/inject.js +86 -58
  28. package/dist/lib/messages/inject.js.map +1 -1
  29. package/dist/lib/messages/prune.d.ts.map +1 -1
  30. package/dist/lib/messages/prune.js +81 -5
  31. package/dist/lib/messages/prune.js.map +1 -1
  32. package/dist/lib/messages/utils.d.ts +10 -4
  33. package/dist/lib/messages/utils.d.ts.map +1 -1
  34. package/dist/lib/messages/utils.js +24 -50
  35. package/dist/lib/messages/utils.js.map +1 -1
  36. package/dist/lib/prompts/compress-tool-spec.d.ts +2 -0
  37. package/dist/lib/prompts/compress-tool-spec.d.ts.map +1 -0
  38. package/dist/lib/prompts/compress-tool-spec.js +58 -0
  39. package/dist/lib/prompts/compress-tool-spec.js.map +1 -0
  40. package/dist/lib/prompts/distill-tool-spec.d.ts +2 -0
  41. package/dist/lib/prompts/distill-tool-spec.d.ts.map +1 -0
  42. package/dist/lib/prompts/{extract-tool-spec.js → distill-tool-spec.js} +14 -14
  43. package/dist/lib/prompts/distill-tool-spec.js.map +1 -0
  44. package/dist/lib/prompts/index.d.ts +7 -0
  45. package/dist/lib/prompts/index.d.ts.map +1 -1
  46. package/dist/lib/prompts/index.js +28 -18
  47. package/dist/lib/prompts/index.js.map +1 -1
  48. package/dist/lib/prompts/prune-tool-spec.d.ts +2 -0
  49. package/dist/lib/prompts/prune-tool-spec.d.ts.map +1 -0
  50. package/dist/lib/prompts/prune-tool-spec.js +40 -0
  51. package/dist/lib/prompts/prune-tool-spec.js.map +1 -0
  52. package/dist/lib/shared-utils.d.ts +1 -1
  53. package/dist/lib/shared-utils.d.ts.map +1 -1
  54. package/dist/lib/shared-utils.js +10 -3
  55. package/dist/lib/shared-utils.js.map +1 -1
  56. package/dist/lib/state/persistence.d.ts +9 -2
  57. package/dist/lib/state/persistence.d.ts.map +1 -1
  58. package/dist/lib/state/persistence.js +24 -1
  59. package/dist/lib/state/persistence.js.map +1 -1
  60. package/dist/lib/state/state.d.ts +0 -1
  61. package/dist/lib/state/state.d.ts.map +1 -1
  62. package/dist/lib/state/state.js +13 -32
  63. package/dist/lib/state/state.js.map +1 -1
  64. package/dist/lib/state/tool-cache.d.ts.map +1 -1
  65. package/dist/lib/state/tool-cache.js +8 -7
  66. package/dist/lib/state/tool-cache.js.map +1 -1
  67. package/dist/lib/state/types.d.ts +7 -1
  68. package/dist/lib/state/types.d.ts.map +1 -1
  69. package/dist/lib/state/utils.d.ts +4 -0
  70. package/dist/lib/state/utils.d.ts.map +1 -1
  71. package/dist/lib/state/utils.js +33 -0
  72. package/dist/lib/state/utils.js.map +1 -1
  73. package/dist/lib/strategies/deduplication.d.ts.map +1 -1
  74. package/dist/lib/strategies/deduplication.js +4 -3
  75. package/dist/lib/strategies/deduplication.js.map +1 -1
  76. package/dist/lib/strategies/index.d.ts +1 -1
  77. package/dist/lib/strategies/index.d.ts.map +1 -1
  78. package/dist/lib/strategies/index.js +1 -1
  79. package/dist/lib/strategies/index.js.map +1 -1
  80. package/dist/lib/strategies/purge-errors.d.ts.map +1 -1
  81. package/dist/lib/strategies/purge-errors.js +4 -3
  82. package/dist/lib/strategies/purge-errors.js.map +1 -1
  83. package/dist/lib/strategies/supersede-writes.js +5 -4
  84. package/dist/lib/strategies/supersede-writes.js.map +1 -1
  85. package/dist/lib/strategies/utils.d.ts +1 -0
  86. package/dist/lib/strategies/utils.d.ts.map +1 -1
  87. package/dist/lib/strategies/utils.js +13 -4
  88. package/dist/lib/strategies/utils.js.map +1 -1
  89. package/dist/lib/tools/compress.d.ts +4 -0
  90. package/dist/lib/tools/compress.d.ts.map +1 -0
  91. package/dist/lib/tools/compress.js +102 -0
  92. package/dist/lib/tools/compress.js.map +1 -0
  93. package/dist/lib/tools/distill.d.ts +4 -0
  94. package/dist/lib/tools/distill.d.ts.map +1 -0
  95. package/dist/lib/tools/distill.js +41 -0
  96. package/dist/lib/tools/distill.js.map +1 -0
  97. package/dist/lib/tools/index.d.ts +5 -0
  98. package/dist/lib/tools/index.d.ts.map +1 -0
  99. package/dist/lib/tools/index.js +4 -0
  100. package/dist/lib/tools/index.js.map +1 -0
  101. package/dist/lib/tools/prune-shared.d.ts +6 -0
  102. package/dist/lib/tools/prune-shared.d.ts.map +1 -0
  103. package/dist/lib/tools/prune-shared.js +109 -0
  104. package/dist/lib/tools/prune-shared.js.map +1 -0
  105. package/dist/lib/tools/prune.d.ts +4 -0
  106. package/dist/lib/tools/prune.d.ts.map +1 -0
  107. package/dist/lib/tools/prune.js +28 -0
  108. package/dist/lib/tools/prune.js.map +1 -0
  109. package/dist/lib/{strategies/tools.d.ts → tools/types.d.ts} +1 -4
  110. package/dist/lib/tools/types.d.ts.map +1 -0
  111. package/dist/lib/tools/types.js +2 -0
  112. package/dist/lib/tools/types.js.map +1 -0
  113. package/dist/lib/tools/utils.d.ts +26 -0
  114. package/dist/lib/tools/utils.d.ts.map +1 -0
  115. package/dist/lib/tools/utils.js +121 -0
  116. package/dist/lib/tools/utils.js.map +1 -0
  117. package/dist/lib/ui/notification.d.ts +1 -0
  118. package/dist/lib/ui/notification.d.ts.map +1 -1
  119. package/dist/lib/ui/notification.js +95 -4
  120. package/dist/lib/ui/notification.js.map +1 -1
  121. package/dist/lib/ui/utils.d.ts +1 -0
  122. package/dist/lib/ui/utils.d.ts.map +1 -1
  123. package/dist/lib/ui/utils.js +16 -0
  124. package/dist/lib/ui/utils.js.map +1 -1
  125. package/package.json +12 -9
  126. package/dist/lib/prompts/discard-tool-spec.d.ts +0 -2
  127. package/dist/lib/prompts/discard-tool-spec.d.ts.map +0 -1
  128. package/dist/lib/prompts/discard-tool-spec.js +0 -41
  129. package/dist/lib/prompts/discard-tool-spec.js.map +0 -1
  130. package/dist/lib/prompts/extract-tool-spec.d.ts +0 -2
  131. package/dist/lib/prompts/extract-tool-spec.d.ts.map +0 -1
  132. package/dist/lib/prompts/extract-tool-spec.js.map +0 -1
  133. package/dist/lib/prompts/nudge/both.d.ts +0 -2
  134. package/dist/lib/prompts/nudge/both.d.ts.map +0 -1
  135. package/dist/lib/prompts/nudge/both.js +0 -11
  136. package/dist/lib/prompts/nudge/both.js.map +0 -1
  137. package/dist/lib/prompts/nudge/discard.d.ts +0 -2
  138. package/dist/lib/prompts/nudge/discard.d.ts.map +0 -1
  139. package/dist/lib/prompts/nudge/discard.js +0 -10
  140. package/dist/lib/prompts/nudge/discard.js.map +0 -1
  141. package/dist/lib/prompts/nudge/extract.d.ts +0 -2
  142. package/dist/lib/prompts/nudge/extract.d.ts.map +0 -1
  143. package/dist/lib/prompts/nudge/extract.js +0 -10
  144. package/dist/lib/prompts/nudge/extract.js.map +0 -1
  145. package/dist/lib/prompts/system/both.d.ts +0 -2
  146. package/dist/lib/prompts/system/both.d.ts.map +0 -1
  147. package/dist/lib/prompts/system/both.js +0 -61
  148. package/dist/lib/prompts/system/both.js.map +0 -1
  149. package/dist/lib/prompts/system/discard.d.ts +0 -2
  150. package/dist/lib/prompts/system/discard.d.ts.map +0 -1
  151. package/dist/lib/prompts/system/discard.js +0 -52
  152. package/dist/lib/prompts/system/discard.js.map +0 -1
  153. package/dist/lib/prompts/system/extract.d.ts +0 -2
  154. package/dist/lib/prompts/system/extract.d.ts.map +0 -1
  155. package/dist/lib/prompts/system/extract.js +0 -52
  156. package/dist/lib/prompts/system/extract.js.map +0 -1
  157. package/dist/lib/strategies/tools.d.ts.map +0 -1
  158. package/dist/lib/strategies/tools.js +0 -135
  159. package/dist/lib/strategies/tools.js.map +0 -1
@@ -1,47 +1,66 @@
1
- import { loadPrompt } from "../prompts";
2
- import { extractParameterKey, buildToolIdList, createSyntheticAssistantMessage, createSyntheticUserMessage, createSyntheticToolPart, isDeepSeekOrKimi, isIgnoredUserMessage, } from "./utils";
1
+ import { renderNudge } from "../prompts";
2
+ import { extractParameterKey, buildToolIdList, createSyntheticUserMessage, createSyntheticToolPart, isIgnoredUserMessage, } from "./utils";
3
3
  import { getFilePathFromParameters, isProtectedFilePath } from "../protected-file-patterns";
4
- import { getLastUserMessage } from "../shared-utils";
5
- const getNudgeString = (config) => {
6
- const discardEnabled = config.tools.discard.enabled;
7
- const extractEnabled = config.tools.extract.enabled;
8
- if (discardEnabled && extractEnabled) {
9
- return loadPrompt(`nudge/nudge-both`);
10
- }
11
- else if (discardEnabled) {
12
- return loadPrompt(`nudge/nudge-discard`);
13
- }
14
- else if (extractEnabled) {
15
- return loadPrompt(`nudge/nudge-extract`);
16
- }
17
- return "";
18
- };
19
- const wrapPrunableTools = (content) => `<prunable-tools>
20
- The following tools have been invoked and are available for pruning. This list does not mandate immediate action. Consider your current goals and the resources you need before discarding valuable tool inputs or outputs. Consolidate your prunes for efficiency; it is rarely worth pruning a single tiny tool output. Keep the context free of noise.
4
+ import { getLastUserMessage, isMessageCompacted } from "../shared-utils";
5
+ export const wrapPrunableTools = (content) => `<prunable-tools>
6
+ The following tools have been invoked and are available for pruning. This list does not mandate immediate action. Consider your current goals and the resources you need before pruning valuable tool inputs or outputs. Consolidate your prunes for efficiency; it is rarely worth pruning a single tiny tool output. Keep the context free of noise.
21
7
  ${content}
22
8
  </prunable-tools>`;
23
- const getCooldownMessage = (config) => {
24
- const discardEnabled = config.tools.discard.enabled;
25
- const extractEnabled = config.tools.extract.enabled;
9
+ export const wrapCompressContext = (messageCount) => `<compress-context>
10
+ Compress available. Conversation: ${messageCount} messages.
11
+ Compress collapses completed task sequences or exploration phases into summaries.
12
+ Uses text boundaries [startString, endString, topic, summary].
13
+ </compress-context>`;
14
+ export const wrapCooldownMessage = (flags) => {
15
+ const enabledTools = [];
16
+ if (flags.prune)
17
+ enabledTools.push("prune");
18
+ if (flags.distill)
19
+ enabledTools.push("distill");
20
+ if (flags.compress)
21
+ enabledTools.push("compress");
26
22
  let toolName;
27
- if (discardEnabled && extractEnabled) {
28
- toolName = "discard or extract tools";
23
+ if (enabledTools.length === 0) {
24
+ toolName = "pruning tools";
29
25
  }
30
- else if (discardEnabled) {
31
- toolName = "discard tool";
26
+ else if (enabledTools.length === 1) {
27
+ toolName = `${enabledTools[0]} tool`;
32
28
  }
33
29
  else {
34
- toolName = "extract tool";
30
+ const last = enabledTools.pop();
31
+ toolName = `${enabledTools.join(", ")} or ${last} tools`;
35
32
  }
36
- return `<prunable-tools>
37
- Context management was just performed. Do not use the ${toolName} again. A fresh list will be available after your next tool use.
38
- </prunable-tools>`;
33
+ return `<context-info>
34
+ Context management was just performed. Do NOT use the ${toolName} again. A fresh list will be available after your next tool use.
35
+ </context-info>`;
36
+ };
37
+ const getNudgeString = (config) => {
38
+ const flags = {
39
+ prune: config.tools.prune.enabled,
40
+ distill: config.tools.distill.enabled,
41
+ compress: config.tools.compress.enabled,
42
+ };
43
+ if (!flags.prune && !flags.distill && !flags.compress) {
44
+ return "";
45
+ }
46
+ return renderNudge(flags);
47
+ };
48
+ const getCooldownMessage = (config) => {
49
+ return wrapCooldownMessage({
50
+ prune: config.tools.prune.enabled,
51
+ distill: config.tools.distill.enabled,
52
+ compress: config.tools.compress.enabled,
53
+ });
54
+ };
55
+ const buildCompressContext = (state, messages) => {
56
+ const messageCount = messages.filter((msg) => !isMessageCompacted(state, msg)).length;
57
+ return wrapCompressContext(messageCount);
39
58
  };
40
59
  const buildPrunableToolsList = (state, config, logger, messages) => {
41
60
  const lines = [];
42
61
  const toolIdList = buildToolIdList(state, messages, logger);
43
62
  state.toolParameters.forEach((toolParameterEntry, toolCallId) => {
44
- if (state.prune.toolIds.includes(toolCallId)) {
63
+ if (state.prune.toolIds.has(toolCallId)) {
45
64
  return;
46
65
  }
47
66
  const allProtectedTools = config.tools.settings.protectedTools;
@@ -73,55 +92,64 @@ const buildPrunableToolsList = (state, config, logger, messages) => {
73
92
  return wrapPrunableTools(lines.join("\n"));
74
93
  };
75
94
  export const insertPruneToolContext = (state, config, logger, messages) => {
76
- if (!config.tools.discard.enabled && !config.tools.extract.enabled) {
95
+ const pruneEnabled = config.tools.prune.enabled;
96
+ const distillEnabled = config.tools.distill.enabled;
97
+ const compressEnabled = config.tools.compress.enabled;
98
+ if (!pruneEnabled && !distillEnabled && !compressEnabled) {
77
99
  return;
78
100
  }
79
- let prunableToolsContent;
101
+ const pruneOrDistillEnabled = pruneEnabled || distillEnabled;
102
+ const contentParts = [];
80
103
  if (state.lastToolPrune) {
81
104
  logger.debug("Last tool was prune - injecting cooldown message");
82
- prunableToolsContent = getCooldownMessage(config);
105
+ contentParts.push(getCooldownMessage(config));
83
106
  }
84
107
  else {
85
- const prunableToolsList = buildPrunableToolsList(state, config, logger, messages);
86
- if (!prunableToolsList) {
87
- return;
108
+ if (pruneOrDistillEnabled) {
109
+ const prunableToolsList = buildPrunableToolsList(state, config, logger, messages);
110
+ if (prunableToolsList) {
111
+ // logger.debug("prunable-tools: \n" + prunableToolsList)
112
+ contentParts.push(prunableToolsList);
113
+ }
114
+ }
115
+ if (compressEnabled) {
116
+ const compressContext = buildCompressContext(state, messages);
117
+ // logger.debug("compress-context: \n" + compressContext)
118
+ contentParts.push(compressContext);
88
119
  }
89
- logger.debug("prunable-tools: \n" + prunableToolsList);
90
- let nudgeString = "";
120
+ // Add nudge if threshold reached
91
121
  if (config.tools.settings.nudgeEnabled &&
92
122
  state.nudgeCounter >= config.tools.settings.nudgeFrequency) {
93
123
  logger.info("Inserting prune nudge message");
94
- nudgeString = "\n" + getNudgeString(config);
124
+ contentParts.push(getNudgeString(config));
95
125
  }
96
- prunableToolsContent = prunableToolsList + nudgeString;
97
126
  }
127
+ if (contentParts.length === 0) {
128
+ return;
129
+ }
130
+ const combinedContent = contentParts.join("\n");
98
131
  const lastUserMessage = getLastUserMessage(messages);
99
132
  if (!lastUserMessage) {
100
133
  return;
101
134
  }
102
135
  const userInfo = lastUserMessage.info;
103
136
  const variant = state.variant ?? userInfo.variant;
104
- let lastNonIgnoredMessage;
105
- for (let i = messages.length - 1; i >= 0; i--) {
106
- const msg = messages[i];
107
- if (!(msg.info.role === "user" && isIgnoredUserMessage(msg))) {
108
- lastNonIgnoredMessage = msg;
109
- break;
110
- }
111
- }
137
+ const lastNonIgnoredMessage = messages.findLast((msg) => !(msg.info.role === "user" && isIgnoredUserMessage(msg)));
138
+ // It's not safe to inject assistant role messages following a user message as models such
139
+ // as Claude expect the assistant "turn" to start with reasoning parts. Reasoning parts in many
140
+ // cases also cannot be faked as they may be encrypted by the model.
141
+ // Gemini only accepts synth reasoning text if it is "skip_thought_signature_validator"
112
142
  if (!lastNonIgnoredMessage || lastNonIgnoredMessage.info.role === "user") {
113
- messages.push(createSyntheticUserMessage(lastUserMessage, prunableToolsContent, variant));
143
+ messages.push(createSyntheticUserMessage(lastUserMessage, combinedContent, variant));
114
144
  }
115
145
  else {
116
- const providerID = userInfo.model?.providerID || "";
146
+ // Append tool part to existing assistant message. This approach works universally across
147
+ // models including DeepSeek and Kimi which don't output reasoning parts following an
148
+ // assistant injection containing text parts. Tool parts appended to the last assistant
149
+ // message are the safest way to inject context without disrupting model behavior.
117
150
  const modelID = userInfo.model?.modelID || "";
118
- if (isDeepSeekOrKimi(providerID, modelID)) {
119
- const toolPart = createSyntheticToolPart(lastNonIgnoredMessage, prunableToolsContent);
120
- lastNonIgnoredMessage.parts.push(toolPart);
121
- }
122
- else {
123
- messages.push(createSyntheticAssistantMessage(lastUserMessage, prunableToolsContent, variant));
124
- }
151
+ const toolPart = createSyntheticToolPart(lastNonIgnoredMessage, combinedContent, modelID);
152
+ lastNonIgnoredMessage.parts.push(toolPart);
125
153
  }
126
154
  };
127
155
  //# sourceMappingURL=inject.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inject.js","sourceRoot":"","sources":["../../../lib/messages/inject.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inject.js","sourceRoot":"","sources":["../../../lib/messages/inject.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,0BAA0B,EAC1B,uBAAuB,EACvB,oBAAoB,GACvB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAC3F,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAExE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAU,EAAE,CAAC;;EAE5D,OAAO;kBACS,CAAA;AAElB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,YAAoB,EAAU,EAAE,CAAC;oCACjC,YAAY;;;oBAG5B,CAAA;AAEpB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAInC,EAAU,EAAE;IACT,MAAM,YAAY,GAAa,EAAE,CAAA;IACjC,IAAI,KAAK,CAAC,KAAK;QAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC3C,IAAI,KAAK,CAAC,OAAO;QAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC/C,IAAI,KAAK,CAAC,QAAQ;QAAE,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAEjD,IAAI,QAAgB,CAAA;IACpB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,QAAQ,GAAG,eAAe,CAAA;IAC9B,CAAC;SAAM,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,QAAQ,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAA;IACxC,CAAC;SAAM,CAAC;QACJ,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,EAAE,CAAA;QAC/B,QAAQ,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAA;IAC5D,CAAC;IAED,OAAO;wDAC6C,QAAQ;gBAChD,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,MAAoB,EAAU,EAAE;IACpD,MAAM,KAAK,GAAG;QACV,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO;QACjC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO;QACrC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO;KAC1C,CAAA;IAED,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpD,OAAO,EAAE,CAAA;IACb,CAAC;IAED,OAAO,WAAW,CAAC,KAAK,CAAC,CAAA;AAC7B,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CAAC,MAAoB,EAAU,EAAE;IACxD,OAAO,mBAAmB,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO;QACjC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO;QACrC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO;KAC1C,CAAC,CAAA;AACN,CAAC,CAAA;AAED,MAAM,oBAAoB,GAAG,CAAC,KAAmB,EAAE,QAAqB,EAAU,EAAE;IAChF,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAA;IACrF,OAAO,mBAAmB,CAAC,YAAY,CAAC,CAAA;AAC5C,CAAC,CAAA;AAED,MAAM,sBAAsB,GAAG,CAC3B,KAAmB,EACnB,MAAoB,EACpB,MAAc,EACd,QAAqB,EACf,EAAE;IACR,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,MAAM,UAAU,GAAa,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IAErE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,kBAAkB,EAAE,UAAU,EAAE,EAAE;QAC5D,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,OAAM;QACV,CAAC;QAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAA;QAC9D,IAAI,iBAAiB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,OAAM;QACV,CAAC;QAED,MAAM,QAAQ,GAAG,yBAAyB,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAA;QACzE,IAAI,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAC9D,OAAM;QACV,CAAC;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QAChD,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,4DAA4D,EAAE;gBACtE,UAAU;gBACV,IAAI,EAAE,kBAAkB,CAAC,IAAI;aAChC,CAAC,CAAA;YACF,OAAM;QACV,CAAC;QACD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAA;QAC5F,MAAM,WAAW,GAAG,QAAQ;YACxB,CAAC,CAAC,GAAG,kBAAkB,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC3C,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAA;QAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,KAAK,WAAW,EAAE,CAAC,CAAA;QAC1C,MAAM,CAAC,KAAK,CACR,6BAA6B,SAAS,WAAW,kBAAkB,CAAC,IAAI,cAAc,UAAU,EAAE,CACrG,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,CAAA;IACb,CAAC;IAED,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AAC9C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAClC,KAAmB,EACnB,MAAoB,EACpB,MAAc,EACd,QAAqB,EACjB,EAAE;IACN,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAA;IAC/C,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAA;IACnD,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAA;IAErD,IAAI,CAAC,YAAY,IAAI,CAAC,cAAc,IAAI,CAAC,eAAe,EAAE,CAAC;QACvD,OAAM;IACV,CAAC;IAED,MAAM,qBAAqB,GAAG,YAAY,IAAI,cAAc,CAAA;IAC5D,MAAM,YAAY,GAAa,EAAE,CAAA;IAEjC,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACtB,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAA;QAChE,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAA;IACjD,CAAC;SAAM,CAAC;QACJ,IAAI,qBAAqB,EAAE,CAAC;YACxB,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;YACjF,IAAI,iBAAiB,EAAE,CAAC;gBACpB,yDAAyD;gBACzD,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;YACxC,CAAC;QACL,CAAC;QAED,IAAI,eAAe,EAAE,CAAC;YAClB,MAAM,eAAe,GAAG,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YAC7D,yDAAyD;YACzD,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QACtC,CAAC;QAED,iCAAiC;QACjC,IACI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY;YAClC,KAAK,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,EAC5D,CAAC;YACC,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;YAC5C,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;QAC7C,CAAC;IACL,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAM;IACV,CAAC;IAED,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAE/C,MAAM,eAAe,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IACpD,IAAI,CAAC,eAAe,EAAE,CAAC;QACnB,OAAM;IACV,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAmB,CAAA;IACpD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAA;IAEjD,MAAM,qBAAqB,GAAG,QAAQ,CAAC,QAAQ,CAC3C,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC,CACpE,CAAA;IAED,0FAA0F;IAC1F,+FAA+F;IAC/F,oEAAoE;IACpE,uFAAuF;IACvF,IAAI,CAAC,qBAAqB,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACvE,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,eAAe,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,CAAA;IACxF,CAAC;SAAM,CAAC;QACJ,yFAAyF;QACzF,qFAAqF;QACrF,uFAAuF;QACvF,kFAAkF;QAClF,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAA;QAC7C,MAAM,QAAQ,GAAG,uBAAuB,CAAC,qBAAqB,EAAE,eAAe,EAAE,OAAO,CAAC,CAAA;QACzF,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC9C,CAAC;AACL,CAAC,CAAA"}
@@ -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;AAQ7C,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;AAU7C,eAAO,MAAM,KAAK,GACd,OAAO,YAAY,EACnB,QAAQ,MAAM,EACd,QAAQ,YAAY,EACpB,UAAU,SAAS,EAAE,KACtB,IAMF,CAAA"}
@@ -1,12 +1,49 @@
1
- import { isMessageCompacted } from "../shared-utils";
1
+ import { isMessageCompacted, getLastUserMessage } from "../shared-utils";
2
+ import { createSyntheticUserMessage, COMPRESS_SUMMARY_PREFIX } from "./utils";
2
3
  const PRUNED_TOOL_OUTPUT_REPLACEMENT = "[Output removed to save context - information superseded or no longer needed]";
3
4
  const PRUNED_TOOL_ERROR_INPUT_REPLACEMENT = "[input removed due to failed tool call]";
4
5
  const PRUNED_QUESTION_INPUT_REPLACEMENT = "[questions removed - see output for user's answers]";
5
6
  export const prune = (state, logger, config, messages) => {
7
+ filterCompressedRanges(state, logger, messages);
8
+ pruneFullTool(state, logger, messages);
6
9
  pruneToolOutputs(state, logger, messages);
7
10
  pruneToolInputs(state, logger, messages);
8
11
  pruneToolErrors(state, logger, messages);
9
12
  };
13
+ const pruneFullTool = (state, logger, messages) => {
14
+ const messagesToRemove = [];
15
+ for (const msg of messages) {
16
+ if (isMessageCompacted(state, msg)) {
17
+ continue;
18
+ }
19
+ const parts = Array.isArray(msg.parts) ? msg.parts : [];
20
+ const partsToRemove = [];
21
+ for (const part of parts) {
22
+ if (part.type !== "tool") {
23
+ continue;
24
+ }
25
+ if (!state.prune.toolIds.has(part.callID)) {
26
+ continue;
27
+ }
28
+ if (part.tool !== "edit" && part.tool !== "write") {
29
+ continue;
30
+ }
31
+ partsToRemove.push(part.callID);
32
+ }
33
+ if (partsToRemove.length === 0) {
34
+ continue;
35
+ }
36
+ msg.parts = parts.filter((part) => part.type !== "tool" || !partsToRemove.includes(part.callID));
37
+ if (msg.parts.length === 0) {
38
+ messagesToRemove.push(msg.info.id);
39
+ }
40
+ }
41
+ if (messagesToRemove.length > 0) {
42
+ const result = messages.filter((msg) => !messagesToRemove.includes(msg.info.id));
43
+ messages.length = 0;
44
+ messages.push(...result);
45
+ }
46
+ };
10
47
  const pruneToolOutputs = (state, logger, messages) => {
11
48
  for (const msg of messages) {
12
49
  if (isMessageCompacted(state, msg)) {
@@ -17,13 +54,13 @@ const pruneToolOutputs = (state, logger, messages) => {
17
54
  if (part.type !== "tool") {
18
55
  continue;
19
56
  }
20
- if (!state.prune.toolIds.includes(part.callID)) {
57
+ if (!state.prune.toolIds.has(part.callID)) {
21
58
  continue;
22
59
  }
23
60
  if (part.state.status !== "completed") {
24
61
  continue;
25
62
  }
26
- if (part.tool === "question") {
63
+ if (part.tool === "question" || part.tool === "edit" || part.tool === "write") {
27
64
  continue;
28
65
  }
29
66
  part.state.output = PRUNED_TOOL_OUTPUT_REPLACEMENT;
@@ -40,7 +77,7 @@ const pruneToolInputs = (state, logger, messages) => {
40
77
  if (part.type !== "tool") {
41
78
  continue;
42
79
  }
43
- if (!state.prune.toolIds.includes(part.callID)) {
80
+ if (!state.prune.toolIds.has(part.callID)) {
44
81
  continue;
45
82
  }
46
83
  if (part.state.status !== "completed") {
@@ -65,7 +102,7 @@ const pruneToolErrors = (state, logger, messages) => {
65
102
  if (part.type !== "tool") {
66
103
  continue;
67
104
  }
68
- if (!state.prune.toolIds.includes(part.callID)) {
105
+ if (!state.prune.toolIds.has(part.callID)) {
69
106
  continue;
70
107
  }
71
108
  if (part.state.status !== "error") {
@@ -83,4 +120,43 @@ const pruneToolErrors = (state, logger, messages) => {
83
120
  }
84
121
  }
85
122
  };
123
+ const filterCompressedRanges = (state, logger, messages) => {
124
+ if (!state.prune.messageIds?.size) {
125
+ return;
126
+ }
127
+ const result = [];
128
+ for (const msg of messages) {
129
+ const msgId = msg.info.id;
130
+ // Check if there's a summary to inject at this anchor point
131
+ const summary = state.compressSummaries?.find((s) => s.anchorMessageId === msgId);
132
+ if (summary) {
133
+ // Find user message for variant and as base for synthetic message
134
+ const msgIndex = messages.indexOf(msg);
135
+ const userMessage = getLastUserMessage(messages, msgIndex);
136
+ if (userMessage) {
137
+ const userInfo = userMessage.info;
138
+ const summaryContent = COMPRESS_SUMMARY_PREFIX + summary.summary;
139
+ result.push(createSyntheticUserMessage(userMessage, summaryContent, userInfo.variant));
140
+ logger.info("Injected compress summary", {
141
+ anchorMessageId: msgId,
142
+ summaryLength: summary.summary.length,
143
+ });
144
+ }
145
+ else {
146
+ logger.warn("No user message found for compress summary", {
147
+ anchorMessageId: msgId,
148
+ });
149
+ }
150
+ }
151
+ // Skip messages that are in the prune list
152
+ if (state.prune.messageIds.has(msgId)) {
153
+ continue;
154
+ }
155
+ // Normal message, include it
156
+ result.push(msg);
157
+ }
158
+ // Replace messages array contents
159
+ messages.length = 0;
160
+ messages.push(...result);
161
+ };
86
162
  //# sourceMappingURL=prune.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prune.js","sourceRoot":"","sources":["../../../lib/messages/prune.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEpD,MAAM,8BAA8B,GAChC,+EAA+E,CAAA;AACnF,MAAM,mCAAmC,GAAG,yCAAyC,CAAA;AACrF,MAAM,iCAAiC,GAAG,qDAAqD,CAAA;AAE/F,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;AAC5C,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,8BAA8B,CAAA;QACtD,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"}
1
+ {"version":3,"file":"prune.js","sourceRoot":"","sources":["../../../lib/messages/prune.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,8 @@
1
1
  import { Logger } from "../logger";
2
2
  import type { SessionState, WithParts } from "../state";
3
- export declare const isDeepSeekOrKimi: (providerID: string, modelID: string) => boolean;
3
+ export declare const COMPRESS_SUMMARY_PREFIX = "[Compressed conversation block]\n\n";
4
4
  export declare const createSyntheticUserMessage: (baseMessage: WithParts, content: string, variant?: string) => WithParts;
5
- export declare const createSyntheticAssistantMessage: (baseMessage: WithParts, content: string, variant?: string) => WithParts;
6
- export declare const createSyntheticToolPart: (baseMessage: WithParts, content: string) => {
5
+ export declare const createSyntheticToolPart: (baseMessage: WithParts, content: string, modelID: string) => {
7
6
  id: string;
8
7
  sessionID: string;
9
8
  messageID: string;
@@ -15,7 +14,13 @@ export declare const createSyntheticToolPart: (baseMessage: WithParts, content:
15
14
  input: {};
16
15
  output: string;
17
16
  title: string;
18
- metadata: {};
17
+ metadata: {
18
+ google: {
19
+ thoughtSignature: string;
20
+ };
21
+ } | {
22
+ google?: undefined;
23
+ };
19
24
  time: {
20
25
  start: number;
21
26
  end: number;
@@ -28,4 +33,5 @@ export declare const createSyntheticToolPart: (baseMessage: WithParts, content:
28
33
  export declare const extractParameterKey: (tool: string, parameters: any) => string;
29
34
  export declare function buildToolIdList(state: SessionState, messages: WithParts[], logger: Logger): string[];
30
35
  export declare const isIgnoredUserMessage: (message: WithParts) => boolean;
36
+ export declare const findMessageIndex: (messages: WithParts[], messageId: string) => number;
31
37
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/messages/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAOvD,eAAO,MAAM,gBAAgB,GAAI,YAAY,MAAM,EAAE,SAAS,MAAM,KAAG,OAStE,CAAA;AAED,eAAO,MAAM,0BAA0B,GACnC,aAAa,SAAS,EACtB,SAAS,MAAM,EACf,UAAU,MAAM,KACjB,SAwBF,CAAA;AAED,eAAO,MAAM,+BAA+B,GACxC,aAAa,SAAS,EACtB,SAAS,MAAM,EACf,UAAU,MAAM,KACjB,SAiCF,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,aAAa,SAAS,EAAE,SAAS,MAAM;;;;;;;;;;;;;;;;;;CAoB9E,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,EAAE,YAAY,GAAG,KAAG,MAkHnE,CAAA;AAED,wBAAgB,eAAe,CAC3B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,SAAS,EAAE,EACrB,MAAM,EAAE,MAAM,GACf,MAAM,EAAE,CAgBV;AAED,eAAO,MAAM,oBAAoB,GAAI,SAAS,SAAS,KAAG,OAazD,CAAA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/messages/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGvD,eAAO,MAAM,uBAAuB,wCAAwC,CAAA;AAS5E,eAAO,MAAM,0BAA0B,GACnC,aAAa,SAAS,EACtB,SAAS,MAAM,EACf,UAAU,MAAM,KACjB,SA0BF,CAAA;AAED,eAAO,MAAM,uBAAuB,GAChC,aAAa,SAAS,EACtB,SAAS,MAAM,EACf,SAAS,MAAM;;;;;;;;;;;;;;;;;;;;;;;;CA6BlB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,EAAE,YAAY,GAAG,KAAG,MAkHnE,CAAA;AAED,wBAAgB,eAAe,CAC3B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,SAAS,EAAE,EACrB,MAAM,EAAE,MAAM,GACf,MAAM,EAAE,CAgBV;AAED,eAAO,MAAM,oBAAoB,GAAI,SAAS,SAAS,KAAG,OAazD,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,UAAU,SAAS,EAAE,EAAE,WAAW,MAAM,KAAG,MAE3E,CAAA"}
@@ -1,88 +1,59 @@
1
+ import { ulid } from "ulid";
1
2
  import { isMessageCompacted } from "../shared-utils";
2
- const SYNTHETIC_MESSAGE_ID = "msg_01234567890123456789012345";
3
- const SYNTHETIC_PART_ID = "prt_01234567890123456789012345";
4
- const SYNTHETIC_CALL_ID = "call_01234567890123456789012345";
5
- export const isDeepSeekOrKimi = (providerID, modelID) => {
6
- const lowerProviderID = providerID.toLowerCase();
3
+ export const COMPRESS_SUMMARY_PREFIX = "[Compressed conversation block]\n\n";
4
+ const generateUniqueId = (prefix) => `${prefix}_${ulid()}`;
5
+ const isGeminiModel = (modelID) => {
7
6
  const lowerModelID = modelID.toLowerCase();
8
- return (lowerProviderID.includes("deepseek") ||
9
- lowerProviderID.includes("kimi") ||
10
- lowerModelID.includes("deepseek") ||
11
- lowerModelID.includes("kimi"));
7
+ return lowerModelID.includes("gemini");
12
8
  };
13
9
  export const createSyntheticUserMessage = (baseMessage, content, variant) => {
14
10
  const userInfo = baseMessage.info;
15
11
  const now = Date.now();
12
+ const messageId = generateUniqueId("msg");
13
+ const partId = generateUniqueId("prt");
16
14
  return {
17
15
  info: {
18
- id: SYNTHETIC_MESSAGE_ID,
16
+ id: messageId,
19
17
  sessionID: userInfo.sessionID,
20
18
  role: "user",
21
- agent: userInfo.agent || "code",
19
+ agent: userInfo.agent,
22
20
  model: userInfo.model,
23
21
  time: { created: now },
24
22
  ...(variant !== undefined && { variant }),
25
23
  },
26
24
  parts: [
27
25
  {
28
- id: SYNTHETIC_PART_ID,
26
+ id: partId,
29
27
  sessionID: userInfo.sessionID,
30
- messageID: SYNTHETIC_MESSAGE_ID,
28
+ messageID: messageId,
31
29
  type: "text",
32
30
  text: content,
33
31
  },
34
32
  ],
35
33
  };
36
34
  };
37
- export const createSyntheticAssistantMessage = (baseMessage, content, variant) => {
35
+ export const createSyntheticToolPart = (baseMessage, content, modelID) => {
38
36
  const userInfo = baseMessage.info;
39
37
  const now = Date.now();
38
+ const partId = generateUniqueId("prt");
39
+ const callId = generateUniqueId("call");
40
+ // Gemini requires thoughtSignature bypass to accept synthetic tool parts
41
+ const toolPartMetadata = isGeminiModel(modelID)
42
+ ? { google: { thoughtSignature: "skip_thought_signature_validator" } }
43
+ : {};
40
44
  return {
41
- info: {
42
- id: SYNTHETIC_MESSAGE_ID,
43
- sessionID: userInfo.sessionID,
44
- role: "assistant",
45
- agent: userInfo.agent || "code",
46
- parentID: userInfo.id,
47
- modelID: userInfo.model.modelID,
48
- providerID: userInfo.model.providerID,
49
- mode: "default",
50
- path: {
51
- cwd: "/",
52
- root: "/",
53
- },
54
- time: { created: now, completed: now },
55
- cost: 0,
56
- tokens: { input: 0, output: 0, reasoning: 0, cache: { read: 0, write: 0 } },
57
- ...(variant !== undefined && { variant }),
58
- },
59
- parts: [
60
- {
61
- id: SYNTHETIC_PART_ID,
62
- sessionID: userInfo.sessionID,
63
- messageID: SYNTHETIC_MESSAGE_ID,
64
- type: "text",
65
- text: content,
66
- },
67
- ],
68
- };
69
- };
70
- export const createSyntheticToolPart = (baseMessage, content) => {
71
- const userInfo = baseMessage.info;
72
- const now = Date.now();
73
- return {
74
- id: SYNTHETIC_PART_ID,
45
+ id: partId,
75
46
  sessionID: userInfo.sessionID,
76
47
  messageID: baseMessage.info.id,
77
48
  type: "tool",
78
- callID: SYNTHETIC_CALL_ID,
49
+ callID: callId,
79
50
  tool: "context_info",
80
51
  state: {
81
52
  status: "completed",
82
53
  input: {},
83
54
  output: content,
84
55
  title: "Context Info",
85
- metadata: {},
56
+ metadata: toolPartMetadata,
86
57
  time: { start: now, end: now },
87
58
  },
88
59
  };
@@ -225,4 +196,7 @@ export const isIgnoredUserMessage = (message) => {
225
196
  }
226
197
  return true;
227
198
  };
199
+ export const findMessageIndex = (messages, messageId) => {
200
+ return messages.findIndex((msg) => msg.info.id === messageId);
201
+ };
228
202
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/messages/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/messages/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const COMPRESS_TOOL_SPEC = "Collapses a contiguous range of conversation into a single summary.\n\n## When to Use This Tool\n\nUse `compress` when you want to condense an entire sequence of work into a brief summary:\n\n- **Phase Completion:** You completed a phase (research, tool calls, implementation) and want to collapse the entire sequence into a summary.\n- **Exploration Done:** You explored multiple files or ran multiple commands and only need a summary of what you learned.\n- **Failed Attempts:** You tried several unsuccessful approaches and want to condense them into a brief note.\n- **Verbose Output:** A section of conversation has grown large but can be summarized without losing critical details.\n\n## When NOT to Use This Tool\n\n- **If you need specific details:** If you'll need exact code, file contents, or error messages from the range, keep them.\n- **For individual tool outputs:** Use `prune` or `distill` for single tool outputs. Compress targets conversation ranges.\n- **If it's recent content:** You may still need recent work for the current phase.\n\n## How It Works\n\n1. `startString` \u2014 A unique text string that marks the start of the range to compress\n2. `endString` \u2014 A unique text string that marks the end of the range to compress\n3. `topic` \u2014 A short label (3-5 words) describing the compressed content\n4. `summary` \u2014 The replacement text that will be inserted\n\nEverything between startString and endString (inclusive) is removed and replaced with your summary.\n\n**Important:** The compress will FAIL if `startString` or `endString` is not found in the conversation. The compress will also FAIL if either string is found multiple times. Provide a larger string with more surrounding context to uniquely identify the intended match.\n\n## Best Practices\n- **Choose unique strings:** Pick text that appears only once in the conversation.\n- **Write concise topics:** Examples: \"Auth System Exploration\", \"Token Logic Refactor\"\n- **Write comprehensive summaries:** Include key information like file names, function signatures, and important findings.\n- **Timing:** Best used after finishing a work phase, not during active exploration.\n\n## Format\n\n- `input`: Array with four elements: [startString, endString, topic, summary]\n\n## Example\n\n<example_compress>\nConversation: [Asked about auth] -> [Read 5 files] -> [Analyzed patterns] -> [Found \"JWT tokens with 24h expiry\"]\n\n[Uses compress with:\n input: [\n \"Asked about authentication\",\n \"JWT tokens with 24h expiry\",\n \"Auth System Exploration\",\n \"Auth: JWT 24h expiry, bcrypt passwords, refresh rotation. Files: auth.ts, tokens.ts, middleware/auth.ts\"\n ]\n]\n</example_compress>\n\n<example_keep>\nAssistant: [Just finished reading auth.ts]\nI've read the auth file and now need to make edits based on it. I'm keeping this in context rather than compressing.\n</example_keep>";
2
+ //# sourceMappingURL=compress-tool-spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compress-tool-spec.d.ts","sourceRoot":"","sources":["../../../lib/prompts/compress-tool-spec.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,o2FAwDf,CAAA"}