@adhdev/daemon-core 0.9.59 → 0.9.60

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adhdev/session-host-core",
3
- "version": "0.9.59",
3
+ "version": "0.9.60",
4
4
  "description": "ADHDev local session host core \u2014 session registry, protocol, buffers",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adhdev/daemon-core",
3
- "version": "0.9.59",
3
+ "version": "0.9.60",
4
4
  "description": "ADHDev daemon core \u2014 CDP, IDE detection, providers, command execution",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -243,6 +243,8 @@ export function collapseReplayDuplicatesFromReadChat(messages: ChatMessage[]): C
243
243
  const collapsed: ChatMessage[] = [];
244
244
  const replaySignaturesInCurrentTurn = new Set<string>();
245
245
  let stableAssistantAnswerContentInCurrentTurn = '';
246
+ let stableAssistantAnswerCollapsedIndex = -1;
247
+ let stableAssistantAnswerHadInterveningActivity = false;
246
248
  let previousReplaySignature = '';
247
249
 
248
250
  for (const message of messages) {
@@ -250,13 +252,31 @@ export function collapseReplayDuplicatesFromReadChat(messages: ChatMessage[]): C
250
252
  if (info?.role === 'user') {
251
253
  replaySignaturesInCurrentTurn.clear();
252
254
  stableAssistantAnswerContentInCurrentTurn = '';
255
+ stableAssistantAnswerCollapsedIndex = -1;
256
+ stableAssistantAnswerHadInterveningActivity = false;
253
257
  previousReplaySignature = '';
254
258
  }
255
259
 
256
260
  if (info?.collapsible && info.signature) {
257
261
  if (previousReplaySignature === info.signature) continue;
258
262
  if (replaySignaturesInCurrentTurn.has(info.signature)) continue;
259
- if (isReplayedAssistantAnswerAfterStableAnswerInfo(info, stableAssistantAnswerContentInCurrentTurn)) continue;
263
+ if (isReplayedAssistantAnswerAfterStableAnswerInfo(info, stableAssistantAnswerContentInCurrentTurn)) {
264
+ const isAdjacentFullerAssistantAnswer =
265
+ info.role === 'assistant'
266
+ && (!info.kind || info.kind === 'standard')
267
+ && stableAssistantAnswerCollapsedIndex >= 0
268
+ && stableAssistantAnswerCollapsedIndex === collapsed.length - 1
269
+ && !stableAssistantAnswerHadInterveningActivity
270
+ && info.content.length > stableAssistantAnswerContentInCurrentTurn.length
271
+ && info.content.startsWith(stableAssistantAnswerContentInCurrentTurn);
272
+ if (isAdjacentFullerAssistantAnswer) {
273
+ collapsed[stableAssistantAnswerCollapsedIndex] = message;
274
+ replaySignaturesInCurrentTurn.add(info.signature);
275
+ stableAssistantAnswerContentInCurrentTurn = info.content;
276
+ previousReplaySignature = info.signature;
277
+ }
278
+ continue;
279
+ }
260
280
  }
261
281
 
262
282
  collapsed.push(message);
@@ -266,6 +286,14 @@ export function collapseReplayDuplicatesFromReadChat(messages: ChatMessage[]): C
266
286
  }
267
287
  if (isStableReadChatAssistantAnswerInfo(info)) {
268
288
  stableAssistantAnswerContentInCurrentTurn = info?.content || '';
289
+ stableAssistantAnswerCollapsedIndex = collapsed.length - 1;
290
+ stableAssistantAnswerHadInterveningActivity = false;
291
+ } else if (
292
+ stableAssistantAnswerContentInCurrentTurn
293
+ && info?.role === 'assistant'
294
+ && (!info.kind || info.kind !== 'standard')
295
+ ) {
296
+ stableAssistantAnswerHadInterveningActivity = true;
269
297
  }
270
298
  }
271
299