@qduc/term2 0.38.0 → 0.39.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 (284) hide show
  1. package/README.md +5 -0
  2. package/dist/agent.d.ts +4 -0
  3. package/dist/agent.d.ts.map +1 -1
  4. package/dist/agent.js +18 -4
  5. package/dist/agent.js.map +1 -1
  6. package/dist/app.d.ts +3 -0
  7. package/dist/app.d.ts.map +1 -1
  8. package/dist/app.js +19 -3
  9. package/dist/app.js.map +1 -1
  10. package/dist/build-info.json +2 -2
  11. package/dist/cli.js +59 -5
  12. package/dist/cli.js.map +1 -1
  13. package/dist/commands/bridge-command.d.ts +11 -0
  14. package/dist/commands/bridge-command.d.ts.map +1 -0
  15. package/dist/commands/bridge-command.js +67 -0
  16. package/dist/commands/bridge-command.js.map +1 -0
  17. package/dist/components/input/FirstRunSetupPrompt.js +3 -3
  18. package/dist/components/input/FirstRunSetupPrompt.js.map +1 -1
  19. package/dist/components/input/ModelMenuSession.d.ts.map +1 -1
  20. package/dist/components/input/ModelMenuSession.js +2 -0
  21. package/dist/components/input/ModelMenuSession.js.map +1 -1
  22. package/dist/components/input/SubagentPoolMenuSession.js +1 -1
  23. package/dist/components/input/SubagentPoolMenuSession.js.map +1 -1
  24. package/dist/components/input/menu-types.d.ts +2 -0
  25. package/dist/components/input/menu-types.d.ts.map +1 -1
  26. package/dist/components/layout/BackgroundTaskManager.d.ts.map +1 -1
  27. package/dist/components/layout/BackgroundTaskManager.js +28 -17
  28. package/dist/components/layout/BackgroundTaskManager.js.map +1 -1
  29. package/dist/components/message/ChatMessage.d.ts +1 -0
  30. package/dist/components/message/ChatMessage.d.ts.map +1 -1
  31. package/dist/components/message/ChatMessage.js +3 -3
  32. package/dist/components/message/ChatMessage.js.map +1 -1
  33. package/dist/components/message/CommandMessage.js +21 -3
  34. package/dist/components/message/CommandMessage.js.map +1 -1
  35. package/dist/components/message/MessageList.d.ts +4 -1
  36. package/dist/components/message/MessageList.d.ts.map +1 -1
  37. package/dist/components/message/MessageList.js +20 -4
  38. package/dist/components/message/MessageList.js.map +1 -1
  39. package/dist/contracts/application-stream.d.ts +3 -0
  40. package/dist/contracts/application-stream.d.ts.map +1 -1
  41. package/dist/contracts/conversation-items.d.ts +6 -0
  42. package/dist/contracts/conversation-items.d.ts.map +1 -1
  43. package/dist/contracts/streamed-model-turn.d.ts +5 -0
  44. package/dist/contracts/streamed-model-turn.d.ts.map +1 -1
  45. package/dist/hooks/conversation-ui-reducer.d.ts +1 -0
  46. package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
  47. package/dist/hooks/conversation-ui-reducer.js +6 -1
  48. package/dist/hooks/conversation-ui-reducer.js.map +1 -1
  49. package/dist/hooks/use-app-commands.d.ts +7 -1
  50. package/dist/hooks/use-app-commands.d.ts.map +1 -1
  51. package/dist/hooks/use-app-commands.js +15 -1
  52. package/dist/hooks/use-app-commands.js.map +1 -1
  53. package/dist/hooks/use-conversation-messages.d.ts +1 -1
  54. package/dist/hooks/use-conversation-messages.d.ts.map +1 -1
  55. package/dist/hooks/use-conversation-messages.js +2 -1
  56. package/dist/hooks/use-conversation-messages.js.map +1 -1
  57. package/dist/hooks/use-conversation.d.ts +1 -1
  58. package/dist/hooks/use-conversation.d.ts.map +1 -1
  59. package/dist/hooks/use-conversation.js +19 -6
  60. package/dist/hooks/use-conversation.js.map +1 -1
  61. package/dist/hooks/use-first-run-setup.d.ts.map +1 -1
  62. package/dist/hooks/use-first-run-setup.js +14 -9
  63. package/dist/hooks/use-first-run-setup.js.map +1 -1
  64. package/dist/hooks/use-model-catalog.d.ts +18 -0
  65. package/dist/hooks/use-model-catalog.d.ts.map +1 -0
  66. package/dist/hooks/use-model-catalog.js +51 -0
  67. package/dist/hooks/use-model-catalog.js.map +1 -0
  68. package/dist/hooks/use-model-selection.d.ts +3 -4
  69. package/dist/hooks/use-model-selection.d.ts.map +1 -1
  70. package/dist/hooks/use-model-selection.js +8 -43
  71. package/dist/hooks/use-model-selection.js.map +1 -1
  72. package/dist/hooks/use-subagent-pool-selection.d.ts +1 -1
  73. package/dist/hooks/use-subagent-pool-selection.d.ts.map +1 -1
  74. package/dist/hooks/use-subagent-pool-selection.js +11 -46
  75. package/dist/hooks/use-subagent-pool-selection.js.map +1 -1
  76. package/dist/lib/agent-client.d.ts +2 -0
  77. package/dist/lib/agent-client.d.ts.map +1 -1
  78. package/dist/lib/agent-client.js +3 -1
  79. package/dist/lib/agent-client.js.map +1 -1
  80. package/dist/lib/agent-configuration.d.ts +3 -0
  81. package/dist/lib/agent-configuration.d.ts.map +1 -1
  82. package/dist/lib/agent-configuration.js +6 -0
  83. package/dist/lib/agent-configuration.js.map +1 -1
  84. package/dist/lib/agent-factory.d.ts +3 -0
  85. package/dist/lib/agent-factory.d.ts.map +1 -1
  86. package/dist/lib/agent-factory.js +4 -2
  87. package/dist/lib/agent-factory.js.map +1 -1
  88. package/dist/non-interactive.d.ts.map +1 -1
  89. package/dist/non-interactive.js +4 -2
  90. package/dist/non-interactive.js.map +1 -1
  91. package/dist/prompts/bare.md +3 -8
  92. package/dist/prompts/discord-communication.md +7 -0
  93. package/dist/prompts/durable-goal-context.d.ts.map +1 -1
  94. package/dist/prompts/durable-goal-context.js +4 -3
  95. package/dist/prompts/durable-goal-context.js.map +1 -1
  96. package/dist/prompts/durable-goal-context.ts +4 -2
  97. package/dist/providers/ai-sdk-streamed-model.d.ts.map +1 -1
  98. package/dist/providers/ai-sdk-streamed-model.js +4 -0
  99. package/dist/providers/ai-sdk-streamed-model.js.map +1 -1
  100. package/dist/providers/codex-responses-model.d.ts.map +1 -1
  101. package/dist/providers/codex-responses-model.js +30 -7
  102. package/dist/providers/codex-responses-model.js.map +1 -1
  103. package/dist/providers/openai-responses-model.d.ts.map +1 -1
  104. package/dist/providers/openai-responses-model.js +7 -0
  105. package/dist/providers/openai-responses-model.js.map +1 -1
  106. package/dist/providers/retrying-model.d.ts.map +1 -1
  107. package/dist/providers/retrying-model.js +3 -1
  108. package/dist/providers/retrying-model.js.map +1 -1
  109. package/dist/providers/websocket-receive-watchdog.d.ts.map +1 -1
  110. package/dist/providers/websocket-receive-watchdog.js +3 -2
  111. package/dist/providers/websocket-receive-watchdog.js.map +1 -1
  112. package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -1
  113. package/dist/services/agent-runtime/application-run-loop.js +7 -0
  114. package/dist/services/agent-runtime/application-run-loop.js.map +1 -1
  115. package/dist/services/agent-stream.d.ts.map +1 -1
  116. package/dist/services/agent-stream.js +2 -0
  117. package/dist/services/agent-stream.js.map +1 -1
  118. package/dist/services/control-socket/control-session-port.d.ts.map +1 -1
  119. package/dist/services/control-socket/control-session-port.js +35 -1
  120. package/dist/services/control-socket/control-session-port.js.map +1 -1
  121. package/dist/services/control-socket/control-socket.d.ts +31 -0
  122. package/dist/services/control-socket/control-socket.d.ts.map +1 -1
  123. package/dist/services/control-socket/control-socket.js +102 -2
  124. package/dist/services/control-socket/control-socket.js.map +1 -1
  125. package/dist/services/conversation/conversation-adapter-factory.d.ts.map +1 -1
  126. package/dist/services/conversation/conversation-adapter-factory.js +3 -1
  127. package/dist/services/conversation/conversation-adapter-factory.js.map +1 -1
  128. package/dist/services/conversation/conversation-adapter.d.ts +13 -2
  129. package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
  130. package/dist/services/conversation/conversation-adapter.js +49 -6
  131. package/dist/services/conversation/conversation-adapter.js.map +1 -1
  132. package/dist/services/conversation/conversation-decoder.d.ts.map +1 -1
  133. package/dist/services/conversation/conversation-decoder.js +6 -2
  134. package/dist/services/conversation/conversation-decoder.js.map +1 -1
  135. package/dist/services/conversation/conversation-events.d.ts +8 -1
  136. package/dist/services/conversation/conversation-events.d.ts.map +1 -1
  137. package/dist/services/conversation/conversation-events.js +1 -0
  138. package/dist/services/conversation/conversation-events.js.map +1 -1
  139. package/dist/services/conversation/conversation-history-repair.d.ts.map +1 -1
  140. package/dist/services/conversation/conversation-history-repair.js +11 -10
  141. package/dist/services/conversation/conversation-history-repair.js.map +1 -1
  142. package/dist/services/conversation/conversation-orchestrator.d.ts +5 -0
  143. package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
  144. package/dist/services/conversation/conversation-orchestrator.js +61 -14
  145. package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
  146. package/dist/services/conversation/conversation-orchestrator.types.d.ts +3 -1
  147. package/dist/services/conversation/conversation-orchestrator.types.d.ts.map +1 -1
  148. package/dist/services/conversation/conversation-record-stream.d.ts +2 -0
  149. package/dist/services/conversation/conversation-record-stream.d.ts.map +1 -1
  150. package/dist/services/conversation/conversation-record-stream.js +12 -8
  151. package/dist/services/conversation/conversation-record-stream.js.map +1 -1
  152. package/dist/services/conversation/conversation-record.d.ts +1 -0
  153. package/dist/services/conversation/conversation-record.d.ts.map +1 -1
  154. package/dist/services/conversation/conversation-record.js +32 -14
  155. package/dist/services/conversation/conversation-record.js.map +1 -1
  156. package/dist/services/conversation/conversation-replay.d.ts.map +1 -1
  157. package/dist/services/conversation/conversation-replay.js +74 -149
  158. package/dist/services/conversation/conversation-replay.js.map +1 -1
  159. package/dist/services/conversation/conversation-service.d.ts +7 -0
  160. package/dist/services/conversation/conversation-service.d.ts.map +1 -1
  161. package/dist/services/conversation/conversation-service.js +58 -13
  162. package/dist/services/conversation/conversation-service.js.map +1 -1
  163. package/dist/services/conversation/conversation-state-schema.d.ts +1 -0
  164. package/dist/services/conversation/conversation-state-schema.d.ts.map +1 -1
  165. package/dist/services/conversation/conversation-state-schema.js +1 -0
  166. package/dist/services/conversation/conversation-state-schema.js.map +1 -1
  167. package/dist/services/conversation/conversation-turn-items.d.ts.map +1 -1
  168. package/dist/services/conversation/conversation-turn-items.js +3 -0
  169. package/dist/services/conversation/conversation-turn-items.js.map +1 -1
  170. package/dist/services/conversation/durable-goal-stop-check.js +1 -1
  171. package/dist/services/conversation/durable-goal-stop-check.js.map +1 -1
  172. package/dist/services/conversation/journal-to-ledger.d.ts +2 -11
  173. package/dist/services/conversation/journal-to-ledger.d.ts.map +1 -1
  174. package/dist/services/conversation/journal-to-ledger.js +37 -180
  175. package/dist/services/conversation/journal-to-ledger.js.map +1 -1
  176. package/dist/services/conversation/queue-persistence.d.ts +2 -1
  177. package/dist/services/conversation/queue-persistence.d.ts.map +1 -1
  178. package/dist/services/conversation/queue-persistence.js +14 -1
  179. package/dist/services/conversation/queue-persistence.js.map +1 -1
  180. package/dist/services/conversation/run-item-normalizer.d.ts.map +1 -1
  181. package/dist/services/conversation/run-item-normalizer.js +5 -1
  182. package/dist/services/conversation/run-item-normalizer.js.map +1 -1
  183. package/dist/services/conversation/tool-occurrence.d.ts +18 -0
  184. package/dist/services/conversation/tool-occurrence.d.ts.map +1 -0
  185. package/dist/services/conversation/tool-occurrence.js +32 -0
  186. package/dist/services/conversation/tool-occurrence.js.map +1 -0
  187. package/dist/services/discord/discord-bridge.d.ts +37 -0
  188. package/dist/services/discord/discord-bridge.d.ts.map +1 -0
  189. package/dist/services/discord/discord-bridge.js +826 -0
  190. package/dist/services/discord/discord-bridge.js.map +1 -0
  191. package/dist/services/discord/discord-command.d.ts +3 -0
  192. package/dist/services/discord/discord-command.d.ts.map +1 -0
  193. package/dist/services/discord/discord-command.js +125 -0
  194. package/dist/services/discord/discord-command.js.map +1 -0
  195. package/dist/services/discord/discord-credentials.d.ts +12 -0
  196. package/dist/services/discord/discord-credentials.d.ts.map +1 -0
  197. package/dist/services/discord/discord-credentials.js +155 -0
  198. package/dist/services/discord/discord-credentials.js.map +1 -0
  199. package/dist/services/discord/discord-outbound.d.ts +51 -0
  200. package/dist/services/discord/discord-outbound.d.ts.map +1 -0
  201. package/dist/services/discord/discord-outbound.js +275 -0
  202. package/dist/services/discord/discord-outbound.js.map +1 -0
  203. package/dist/services/discord/discord-send-capability.d.ts +5 -0
  204. package/dist/services/discord/discord-send-capability.d.ts.map +1 -0
  205. package/dist/services/discord/discord-send-capability.js +11 -0
  206. package/dist/services/discord/discord-send-capability.js.map +1 -0
  207. package/dist/services/input-surge-guard.d.ts.map +1 -1
  208. package/dist/services/input-surge-guard.js +4 -3
  209. package/dist/services/input-surge-guard.js.map +1 -1
  210. package/dist/services/large-uncached-input-guard.d.ts +1 -1
  211. package/dist/services/large-uncached-input-guard.d.ts.map +1 -1
  212. package/dist/services/large-uncached-input-guard.js +0 -6
  213. package/dist/services/large-uncached-input-guard.js.map +1 -1
  214. package/dist/services/logging/assistant-turn-journal.d.ts +1 -1
  215. package/dist/services/logging/assistant-turn-journal.d.ts.map +1 -1
  216. package/dist/services/logging/assistant-turn-journal.js +4 -3
  217. package/dist/services/logging/assistant-turn-journal.js.map +1 -1
  218. package/dist/services/logging/conversation-log-events.d.ts +1 -0
  219. package/dist/services/logging/conversation-log-events.d.ts.map +1 -1
  220. package/dist/services/logging/conversation-log-events.js.map +1 -1
  221. package/dist/services/profiles/registry.d.ts.map +1 -1
  222. package/dist/services/profiles/registry.js +13 -6
  223. package/dist/services/profiles/registry.js.map +1 -1
  224. package/dist/services/queue/queue-controller.d.ts +12 -3
  225. package/dist/services/queue/queue-controller.d.ts.map +1 -1
  226. package/dist/services/queue/queue-controller.js +19 -4
  227. package/dist/services/queue/queue-controller.js.map +1 -1
  228. package/dist/services/retry/retry-classifier.d.ts.map +1 -1
  229. package/dist/services/retry/retry-classifier.js +5 -3
  230. package/dist/services/retry/retry-classifier.js.map +1 -1
  231. package/dist/services/retry/retry-errors.d.ts +15 -0
  232. package/dist/services/retry/retry-errors.d.ts.map +1 -1
  233. package/dist/services/retry/retry-errors.js +29 -0
  234. package/dist/services/retry/retry-errors.js.map +1 -1
  235. package/dist/services/retry/retry-recovery-budget.d.ts +13 -0
  236. package/dist/services/retry/retry-recovery-budget.d.ts.map +1 -1
  237. package/dist/services/retry/retry-recovery-budget.js +35 -4
  238. package/dist/services/retry/retry-recovery-budget.js.map +1 -1
  239. package/dist/services/session/background-task-control.d.ts.map +1 -1
  240. package/dist/services/session/background-task-control.js +4 -6
  241. package/dist/services/session/background-task-control.js.map +1 -1
  242. package/dist/services/session/continuation-recovery-handler.d.ts.map +1 -1
  243. package/dist/services/session/continuation-recovery-handler.js +15 -7
  244. package/dist/services/session/continuation-recovery-handler.js.map +1 -1
  245. package/dist/services/session/initial-turn-recovery-handler.d.ts.map +1 -1
  246. package/dist/services/session/initial-turn-recovery-handler.js +15 -7
  247. package/dist/services/session/initial-turn-recovery-handler.js.map +1 -1
  248. package/dist/services/session/session-composition.d.ts +4 -0
  249. package/dist/services/session/session-composition.d.ts.map +1 -1
  250. package/dist/services/session/session-composition.js +10 -1
  251. package/dist/services/session/session-composition.js.map +1 -1
  252. package/dist/services/session/session-identity.d.ts +8 -3
  253. package/dist/services/session/session-identity.d.ts.map +1 -1
  254. package/dist/services/session/session-identity.js +16 -3
  255. package/dist/services/session/session-identity.js.map +1 -1
  256. package/dist/services/session-rollover/session-rollover-brief.d.ts +1 -2
  257. package/dist/services/session-rollover/session-rollover-brief.d.ts.map +1 -1
  258. package/dist/services/session-rollover/session-rollover-brief.js +9 -11
  259. package/dist/services/session-rollover/session-rollover-brief.js.map +1 -1
  260. package/dist/services/stream-event-processor.d.ts.map +1 -1
  261. package/dist/services/stream-event-processor.js +4 -0
  262. package/dist/services/stream-event-processor.js.map +1 -1
  263. package/dist/services/tool-execution-ledger.d.ts +11 -2
  264. package/dist/services/tool-execution-ledger.d.ts.map +1 -1
  265. package/dist/services/tool-execution-ledger.js +123 -30
  266. package/dist/services/tool-execution-ledger.js.map +1 -1
  267. package/dist/test-helpers/terminal-e2e.d.ts.map +1 -1
  268. package/dist/test-helpers/terminal-e2e.js +37 -2
  269. package/dist/test-helpers/terminal-e2e.js.map +1 -1
  270. package/dist/tools/agent/goal-check.d.ts.map +1 -1
  271. package/dist/tools/agent/goal-check.js +6 -2
  272. package/dist/tools/agent/goal-check.js.map +1 -1
  273. package/dist/tools/discord-send.d.ts +14 -0
  274. package/dist/tools/discord-send.d.ts.map +1 -0
  275. package/dist/tools/discord-send.js +66 -0
  276. package/dist/tools/discord-send.js.map +1 -0
  277. package/dist/tools/tool-names.d.ts +1 -0
  278. package/dist/tools/tool-names.d.ts.map +1 -1
  279. package/dist/tools/tool-names.js +1 -0
  280. package/dist/tools/tool-names.js.map +1 -1
  281. package/dist/types/message.d.ts +3 -1
  282. package/dist/types/message.d.ts.map +1 -1
  283. package/dist/types/message.js.map +1 -1
  284. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-record.d.ts","sourceRoot":"","sources":["../../../source/services/conversation/conversation-record.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation-record.d.ts","sourceRoot":"","sources":["../../../source/services/conversation/conversation-record.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import { toolOccurrenceKey, toolOccurrenceMetadata } from './tool-occurrence.js';
2
+ import { projectPersistedAssistantItemToProviderHistory } from './conversation-turn-items.js';
1
3
  import { ConversationStore } from './conversation-store.js';
2
4
  import { ToolExecutionLedger, callIdOf } from '../tool-execution-ledger.js';
3
5
  import { AssistantTurnJournal } from '../logging/assistant-turn-journal.js';
@@ -104,17 +106,22 @@ export class ConversationRecord {
104
106
  return this.#ledger.completedResultCallIdsForCurrentTurn();
105
107
  }
106
108
  unsettledToolCallIdsForCurrentTurn() {
107
- const completed = new Set(this.completedResultCallIdsForCurrentTurn());
108
- return this.activeCallIdsForCurrentTurn().filter((id) => !completed.has(id));
109
+ return this.#ledger
110
+ .export()
111
+ .filter((entry) => entry.turnId === this.getCurrentTurnId() &&
112
+ (entry.status === 'started' || entry.status === 'approval_required'))
113
+ .map((entry) => entry.callId);
109
114
  }
110
115
  inspectCommittedToolContinuation() {
111
116
  const live = this.#ledger.export().filter((entry) => entry.turnId === this.getCurrentTurnId());
112
117
  const completed = live.filter((entry) => entry.status === 'completed');
113
- const historyIds = new Set(this.getReconciledHistory().map(callIdOf).filter(Boolean));
118
+ const historyItems = this.getReconciledHistory().flatMap(normalizeRunItem);
119
+ const historyCalls = new Set(historyItems.filter((item) => item.type === 'tool_call').map(toolOccurrenceKey));
120
+ const historyResults = new Set(historyItems.filter((item) => item.type === 'tool_result').map(toolOccurrenceKey));
114
121
  return {
115
122
  completedToolCount: completed.length,
116
123
  allToolsCompleted: live.length > 0 && live.every((entry) => entry.status === 'completed'),
117
- completedPairsPresentInHistory: completed.every((entry) => historyIds.has(entry.callId)),
124
+ completedPairsPresentInHistory: completed.every((entry) => historyCalls.has(toolOccurrenceKey(entry)) && historyResults.has(toolOccurrenceKey(entry))),
118
125
  };
119
126
  }
120
127
  acceptInput(turn) {
@@ -158,19 +165,24 @@ export class ConversationRecord {
158
165
  this.#lastPersistence = this.#journalSink ? 'not_requested' : 'unconfigured';
159
166
  // Journal deduplication is independent of execution occurrence: a real new
160
167
  // invocation may reuse a provider call id within this logical turn.
161
- for (const normalized of normalizeRunItem(item)) {
168
+ const acceptedItems = normalizeRunItem(item);
169
+ for (const normalized of acceptedItems) {
162
170
  if (normalized.type === 'tool_call') {
163
171
  if (this.#pendingReasoningText)
164
172
  this.#ledger.recordReasoningText(this.#pendingReasoningText);
165
173
  this.#pendingReasoningText = '';
166
- this.#ledger.recordFunctionCall(item);
174
+ const entry = this.#ledger.recordFunctionCall(normalized);
175
+ if (entry)
176
+ Object.assign(normalized, toolOccurrenceMetadata(entry));
167
177
  }
168
178
  else if (normalized.type === 'tool_result') {
169
- this.#ledger.recordFunctionResult(item);
179
+ const entry = this.#ledger.recordFunctionResult(normalized);
180
+ if (entry)
181
+ Object.assign(normalized, toolOccurrenceMetadata(entry));
170
182
  if (this.#segmentSource !== 'startStream' && this.#journalSink) {
171
- const entry = this.#ledger.export().find((candidate) => candidate.callId === normalized.callId);
172
183
  this.#deliverJournalEvent({
173
184
  type: 'tool_result',
185
+ ...toolOccurrenceMetadata(normalized),
174
186
  callId: normalized.callId,
175
187
  toolName: entry?.toolName ?? normalized.toolName,
176
188
  status: entry?.status === 'failed' || entry?.status === 'aborted' || entry?.status === 'unknown'
@@ -185,14 +197,20 @@ export class ConversationRecord {
185
197
  // The transcript is immediately readable by preparation/recovery. Segment
186
198
  // selection later reconciles the provider's terminal representation against
187
199
  // the baseline, rather than appending these same observations twice.
188
- this.#store.appendOutput([item]);
189
- this.#journal.recordRunItem(item);
200
+ const journalItems = this.#journal.recordRunItem(item, acceptedItems);
201
+ if (journalItems.length)
202
+ this.#store.appendOutput(journalItems.some((accepted) => accepted.type === 'tool_call' || accepted.type === 'tool_result')
203
+ ? journalItems.map(projectPersistedAssistantItemToProviderHistory)
204
+ : [item]);
205
+ else if (!acceptedItems.length)
206
+ this.#store.appendOutput([item]);
190
207
  return this.#receipt();
191
208
  }
192
209
  /** Accept a completed or interrupted execution view, independent of rendering. */
193
210
  acceptSegment(stream, inputMode, diagnostics) {
194
211
  const selected = selectAcceptedStreamHistory({
195
212
  stream,
213
+ toolLedger: this.#ledger.export(),
196
214
  history: this.#segmentBaseline ? [...this.#segmentBaseline.history] : this.#store.getHistory(),
197
215
  inputMode,
198
216
  source: this.#segmentSource,
@@ -262,15 +280,15 @@ export class ConversationRecord {
262
280
  }
263
281
  #restoreSettledEntries(snapshot) {
264
282
  const merged = [...snapshot];
265
- const indices = new Map(merged.map((entry, index) => [entry.callId, index]));
283
+ const indices = new Map(merged.map((entry, index) => [toolOccurrenceKey(entry), index]));
266
284
  for (const entry of this.#ledger.export()) {
267
285
  if (!['completed', 'aborted', 'unknown'].includes(entry.status))
268
286
  continue;
269
- const index = indices.get(entry.callId);
287
+ const index = indices.get(toolOccurrenceKey(entry));
270
288
  if (index !== undefined)
271
289
  merged[index] = entry;
272
290
  else {
273
- indices.set(entry.callId, merged.length);
291
+ indices.set(toolOccurrenceKey(entry), merged.length);
274
292
  merged.push(entry);
275
293
  }
276
294
  }
@@ -288,9 +306,9 @@ export class ConversationRecord {
288
306
  }
289
307
  importState(state) {
290
308
  const validated = ImportedConversationStateSchema.parse(state);
291
- const projected = projectImportedState(validated);
292
309
  this.reset();
293
310
  this.#ledger.import(validated.toolLedger);
311
+ const projected = projectImportedState({ ...validated, toolLedger: this.#ledger.export() });
294
312
  for (const item of projected.history)
295
313
  this.#store.addImportedItem(item);
296
314
  return { validated, projected };
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-record.js","sourceRoot":"","sources":["../../../source/services/conversation/conversation-record.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAuB,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAA2B,MAAM,6BAA6B,CAAC;AACrG,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAA4B,MAAM,iCAAiC,CAAC;AAGxG,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAClH,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAWjF;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IACpB,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAC1C,OAAO,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAC3B,QAAQ,CAAuB;IAC/B,OAAO,CAAmB;IACnC,YAAY,GAAuC,IAAI,CAAC;IACxD,gBAAgB,CAA0E;IAC1F,gBAAgB,GAA2C,cAAc,CAAC;IAC1E,qBAAqB,GAAG,EAAE,CAAC;IAC3B,cAAc,GAAwB,aAAa,CAAC;IACpD,kBAAkB,GAAmE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC1G,gBAAgB,CAAsB;IACtC,mBAAmB,CAAyC;IAErE,YACE,OAAO,GAIH,EAAE;QAEN,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;QAChD,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;QACtD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC;IAChF,CAAC;IAED,cAAc,CAAC,IAAwC;QACrD,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI;YAAE,OAAO;QACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjF,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC;IACpD,CAAC;IAED,kFAAkF;IAClF,YAAY;QACV,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1D,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACtC,CAAC;IAED,yEAAyE;IACzE,uBAAuB,CAAC,MAAM,GAA4C,mBAAmB;QAC3F,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3D,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;IAC/B,CAAC;IAED,SAAS;QACP,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;IAClC,CAAC;IACD,gBAAgB;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IACzC,CAAC;IACD,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IACD,0BAA0B;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;IAClD,CAAC;IACD,0BAA0B;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;IAClD,CAAC;IACD,kBAAkB;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;IAC1C,CAAC;IACD,aAAa;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;IACrC,CAAC;IACD,iBAAiB;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;IACzC,CAAC;IACD,gBAAgB;QACd,OAAO,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,mBAAmB;QACjB,OAAO,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,eAAe,CAAC,KAAa;QAC3B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACD,oBAAoB,CAAC,KAAa;QAChC,IAAI,CAAC,qBAAqB,IAAI,KAAK,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,iBAAiB,CAAC,UAAkB;QAClC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAC3D,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,UAAU,CAAC,CAC5D,CAAC;IACJ,CAAC;IACD,kBAAkB;QAChB,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,2BAA2B;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAC7C,CAAC;IACD,oCAAoC;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,oCAAoC,EAAE,CAAC;IAC7D,CAAC;IACD,kCAAkC;QAChC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,oCAAoC,EAAE,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,2BAA2B,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;IACD,gCAAgC;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC/F,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACtF,OAAO;YACL,kBAAkB,EAAE,SAAS,CAAC,MAAM;YACpC,iBAAiB,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC;YACzF,8BAA8B,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SACzF,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,IAAuB;QACjC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;IAC9D,CAAC;IACD,WAAW,CAAC,IAAuB;QACjC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,qBAAqB;QACnB,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;IACtC,CAAC;IACD,eAAe,CAAC,IAAY;QAC1B,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,cAAc,CAAC,MAAc;QAC3B,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IACD,kBAAkB,CAAC,IAAa;QAC9B,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,oBAAoB,CAAC,IAAa;QAChC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,qBAAqB,CAAC,MAAc,EAAE,KAAa,EAAE,MAAe;QAClE,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC;IACD,oBAAoB,CAAC,KAAa,EAAE,MAAe;QACjD,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IACD,kBAAkB;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAC3C,CAAC;IAED,mFAAmF;IACnF,YAAY;QACV,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;QACjE,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;IAClC,CAAC;IAED,+FAA+F;IAC/F,kBAAkB,CAAC,IAAa;QAC9B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC;QAC7E,2EAA2E;QAC3E,oEAAoE;QACpE,KAAK,MAAM,UAAU,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACpC,IAAI,IAAI,CAAC,qBAAqB;oBAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBAC7F,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;gBAChC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;iBAAM,IAAI,UAAU,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBAC7C,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAI,IAAI,CAAC,cAAc,KAAK,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,CAAC,CAAC;oBAChG,IAAI,CAAC,oBAAoB,CAAC;wBACxB,IAAI,EAAE,aAAa;wBACnB,MAAM,EAAE,UAAU,CAAC,MAAM;wBACzB,QAAQ,EAAE,KAAK,EAAE,QAAQ,IAAI,UAAU,CAAC,QAAQ;wBAChD,MAAM,EACJ,KAAK,EAAE,MAAM,KAAK,QAAQ,IAAI,KAAK,EAAE,MAAM,KAAK,SAAS,IAAI,KAAK,EAAE,MAAM,KAAK,SAAS;4BACtF,CAAC,CAAC,KAAK,CAAC,MAAM;4BACd,CAAC,CAAC,WAAW;wBACjB,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,UAAU,CAAC,MAAM;wBAC1C,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACrE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QACD,0EAA0E;QAC1E,4EAA4E;QAC5E,qEAAqE;QACrE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAyB,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,kFAAkF;IAClF,aAAa,CACX,MAAmB,EACnB,SAAmC,EACnC,WAAoE;QAEpE,MAAM,QAAQ,GAAG,2BAA2B,CAAC;YAC3C,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAC9F,SAAS;YACT,MAAM,EAAE,IAAI,CAAC,cAAc;YAC3B,GAAG,WAAW;SACf,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC,QAAQ,CAAC;QACpG,IAAI,QAAQ,CAAC,OAAO;YAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;QAC1D,MAAM,QAAQ,GAAG;YACf,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAE,WAAqB,CAAC,CAAC,CAAE,SAAmB;YACvE,QAAQ;YACR,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,KAAK,MAAM;YAC9C,cAAc,EAAE,QAAQ,CAAC,cAAc;YACvC,oBAAoB,EAAE,IAAI,CAAC,kCAAkC,EAAE;SAChE,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACzE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,QAAkF;QACzF,OAAO,eAAe,CAAC,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAChH,CAAC;IACD,WAAW,CAAC,kBAAiC;QAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IACzG,CAAC;IAED,oBAAoB;QAClB,OAAO,sBAAsB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC;IAClH,CAAC;IACD,0BAA0B;QACxB,MAAM,SAAS,GAAG,sBAAsB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnH,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0FAA0F;IAC1F,wBAAwB,CAAC,QAAgB,EAAE,OAAqC;QAC9E,OAAO,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,8FAA8F;IAC9F,OAAO,CAAC,IAAkB,EAAE,KAAoB;QAC9C,MAAM,QAAQ,GAAG,gCAAgC,CAC/C,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,EACvC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CACzB,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,mBAAmB;gBAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;YAClE,IAAI,IAAI,CAAC,YAAY;gBAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxE,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,MAAM;gBAAE,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,eAAe,CAAC,CAAC;YAC/E,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,MAAM;gBAAE,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACjF,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,eAAe,CAAC,CAAC;gBAC7D,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;gBACnD,IAAI,CAAC,0BAA0B,EAAE,CAAC;YACpC,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAC3C,CAAC;IAED,sBAAsB,CAAC,QAA8B;QACnD,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7E,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,SAAS;YAC1E,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,KAAK,KAAK,SAAS;gBAAE,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;iBAC1C,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBACzC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACzC,IAAI,CAAC,kBAAkB,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IACD,WAAW,CAAC,KAKX;QACC,MAAM,SAAS,GAAG,+BAA+B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,OAAO;YAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACxE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAClC,CAAC;IACD,kBAAkB;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;QACjD,IAAI,OAAO;YAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,iBAAiB;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;QACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,iBAAiB,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACnG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC/B,CAAC;IACD,oBAAoB,CAAC,CAAS;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACpD,IAAI,OAAO;YAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,cAAc,CAAC,MAAsB;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,OAAO;YAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,kBAAkB;QAChB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;IAC1C,CAAC;IACD,yBAAyB;QACvB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,yBAAyB,EAAE,CAAC;QACxD,IAAI,OAAO;YAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,eAAe,CAAC,YAAqB;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,OAAO,CAAC,MAAM,CACjB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC,aAAa,IAAI,SAAS,CAAC;YAC/E,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAChD,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrF,CAAC,CAAC,CACH,CAAC;QACF,IAAI,YAAY;YAAE,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;IACD,oBAAoB,CAAC,KAAe;QAClC,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAC/B,IAAI,CAAC;YACH,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,IAAI,CAAC,gBAAgB,KAAK,QAAQ;gBAAE,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC;QACjF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;YACjC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE;gBACvC,SAAS,EAAE,8BAA8B;gBACzC,QAAQ,EAAE,aAAa;gBACvB,YAAY,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aACrE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,QAAQ;QACN,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACpE,CAAC;CACF"}
1
+ {"version":3,"file":"conversation-record.js","sourceRoot":"","sources":["../../../source/services/conversation/conversation-record.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-replay.d.ts","sourceRoot":"","sources":["../../../source/services/conversation/conversation-replay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAUtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EAGb,MAAM,qCAAqC,CAAC;AAqB7C,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,uCAAuC,EAAE,WAAW,CAAC;CACpE;AA4wCD,wBAAgB,YAAY,CAAC,SAAS,EAAE,oBAAoB,EAAE,GAAG,aAAa,CAgK7E"}
1
+ {"version":3,"file":"conversation-replay.d.ts","sourceRoot":"","sources":["../../../source/services/conversation/conversation-replay.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAUtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EAGb,MAAM,qCAAqC,CAAC;AAkB7C,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,uCAAuC,EAAE,WAAW,CAAC;CACpE;AAgrCD,wBAAgB,YAAY,CAAC,SAAS,EAAE,oBAAoB,EAAE,GAAG,aAAa,CAkK7E"}
@@ -1,14 +1,17 @@
1
+ import { pairToolOccurrences, toolOccurrenceKey, toolOccurrenceMetadata } from './tool-occurrence.js';
2
+ import { buildToolLedgerFromAssistantTurnItems } from './journal-to-ledger.js';
3
+ import { alignHistoryToolOccurrences, normalizeToolLedgerOccurrences } from '../tool-execution-ledger.js';
1
4
  import { ModelSelectionSchema } from '../settings/model-selection.js';
2
5
  import { createUsageAccumulator } from '../../utils/ai/token-usage.js';
3
6
  import { repairConversationHistory } from './conversation-history-repair.js';
4
7
  import { isTruncatedLogEvent } from '../logging/conversation-log-events.js';
5
8
  import { formatMemoryReceipt } from './conversation-events.js';
6
- import { projectPersistedAssistantItemToProviderHistory, synthesizeHistoryFromAssistantTurn, } from './conversation-turn-items.js';
9
+ import { normalizeRunItems } from './run-item-normalizer.js';
10
+ import { synthesizeHistoryFromAssistantTurn } from './conversation-turn-items.js';
7
11
  import { formatPatchOutputItems, coerceToText } from '../../tools/format-helpers.js';
8
12
  import { projectProviderHistory } from './conversation-state-projector.js';
9
13
  import { RESTART_UNOBSERVED_TOOL_RESULT, callIdOf, isToolCallHistoryItem, isToolResultHistoryItem, } from '../tool-execution-ledger.js';
10
14
  import { deriveLocalCheckpointRequestHistory } from './local-checkpoint-projection.js';
11
- import { normalizeRunItems } from './run-item-normalizer.js';
12
15
  import { legacyModeFromProfileId, profileIdFromLegacyMode, profileIdFromLegacyModeSetting, } from '../profiles/legacy-adapter.js';
13
16
  const INTERRUPTED_SYSTEM_MESSAGE = 'Previous turn was interrupted — send a message to continue.';
14
17
  const cloneSnapshot = (snap) => {
@@ -49,7 +52,6 @@ const createEmptyTurnJournal = (ts, userTurnIndex, turnId) => ({
49
52
  approvalByCall: new Map(),
50
53
  startedAt: ts,
51
54
  });
52
- const makeHistoryItemForToolCall = (item) => projectPersistedAssistantItemToProviderHistory(item);
53
55
  /**
54
56
  * Returns the journal slot for the current user turn, allocating it on
55
57
  * first use. Journals are keyed by the number of user messages seen so
@@ -72,81 +74,43 @@ const getOrCreateJournal = (state, ts, key, turnId) => {
72
74
  }
73
75
  return journal;
74
76
  };
75
- const makeHistoryItemForToolResult = (item) => projectPersistedAssistantItemToProviderHistory(item);
76
- const makeHistoryItemForReasoning = (item) => projectPersistedAssistantItemToProviderHistory(item);
77
- const withMissingReasoningPrefix = (historyItems, reasoningItems) => {
78
- const existing = historyItems ?? [];
79
- if (reasoningItems.length === 0 || normalizeRunItems(existing).some((item) => item.type === 'reasoning')) {
80
- return existing;
81
- }
82
- return [...reasoningItems, ...existing];
83
- };
84
- const hasToolResultForCall = (historyItems, callId) => normalizeRunItems(historyItems).some((item) => item.type === 'tool_result' && item.callId === callId);
85
- const appendToolResultIfMissing = (historyItems, callId, resultItem) => {
86
- const existing = historyItems ?? [];
87
- return hasToolResultForCall(existing, callId) ? existing : [...existing, resultItem];
88
- };
77
+ /** Authoritative pairs replace provisional lifecycle views, never settled siblings. */
89
78
  function mergeAssistantTurnIntoLedger(state, turn, ts, turnId) {
90
- const calls = new Map();
91
- let pendingReasoningHistoryItems = [];
92
- for (const item of turn.items) {
93
- if (item.type === 'reasoning') {
94
- pendingReasoningHistoryItems.push(makeHistoryItemForReasoning(item));
95
- continue;
96
- }
97
- if (item.type === 'tool_call') {
98
- calls.set(item.callId, item);
99
- const callHistoryItem = makeHistoryItemForToolCall(item);
100
- const existing = state.toolLedger.find((entry) => entry.callId === item.callId);
101
- if (!existing) {
102
- state.toolLedger.push({
103
- turnId: turnId ?? `turn-${state.messages.filter((message) => message.sender === 'user').length || 1}`,
104
- callId: item.callId,
105
- toolName: item.toolName,
106
- arguments: item.arguments,
107
- status: 'started',
108
- startedAt: ts,
109
- historyItems: [...pendingReasoningHistoryItems, callHistoryItem],
110
- });
111
- }
112
- else {
113
- existing.toolName = item.toolName;
114
- existing.arguments = item.arguments;
115
- if (!existing.historyItems || existing.historyItems.length === 0) {
116
- existing.historyItems = [...pendingReasoningHistoryItems, callHistoryItem];
117
- }
118
- else {
119
- existing.historyItems = withMissingReasoningPrefix(existing.historyItems, pendingReasoningHistoryItems);
120
- }
121
- }
122
- pendingReasoningHistoryItems = [];
123
- continue;
124
- }
125
- pendingReasoningHistoryItems = [];
126
- if (item.type !== 'tool_result') {
127
- continue;
128
- }
129
- let existing = state.toolLedger.find((entry) => entry.callId === item.callId);
130
- if (!existing) {
131
- const call = calls.get(item.callId);
132
- existing = {
133
- turnId: turnId ?? `turn-${state.messages.filter((message) => message.sender === 'user').length || 1}`,
134
- callId: item.callId,
135
- toolName: item.toolName,
136
- arguments: call?.arguments,
137
- status: 'started',
138
- startedAt: ts,
139
- historyItems: call ? [makeHistoryItemForToolCall(call)] : [],
140
- };
141
- state.toolLedger.push(existing);
79
+ const id = turnId ?? `turn-${state.messages.filter((message) => message.sender === 'user').length || 1}`;
80
+ const entries = buildToolLedgerFromAssistantTurnItems(turn.items, id, ts);
81
+ for (const entry of entries) {
82
+ state.toolLedger = state.toolLedger.filter((candidate) => !(candidate.occurrence === undefined &&
83
+ candidate.callId === entry.callId &&
84
+ (candidate.turnId === id || candidate.turnId === 'turn-interrupted')));
85
+ const index = state.toolLedger.findIndex((candidate) => toolOccurrenceKey(candidate) === toolOccurrenceKey(entry));
86
+ if (index === -1)
87
+ state.toolLedger.push(entry);
88
+ else {
89
+ const existing = state.toolLedger[index];
90
+ // A later-segment direct settlement can precede the journal reconstruction.
91
+ state.toolLedger[index] =
92
+ entry.status === 'started' && existing.status !== 'started'
93
+ ? {
94
+ ...entry,
95
+ ...existing,
96
+ historyItems: existing.historyItems?.length ? existing.historyItems : entry.historyItems,
97
+ }
98
+ : {
99
+ ...existing,
100
+ ...entry,
101
+ ...(!normalizeRunItems(entry.historyItems).some((item) => item.type === 'tool_call') &&
102
+ normalizeRunItems(existing.historyItems).some((item) => item.type === 'tool_call')
103
+ ? { arguments: existing.arguments, historyItems: existing.historyItems }
104
+ : {}),
105
+ };
142
106
  }
143
- const callHistoryItem = existing.historyItems?.find((historyItem) => normalizeRunItems([historyItem]).some((normalized) => normalized.type === 'tool_call' && normalized.callId === item.callId));
144
- existing.toolName = item.toolName;
145
- existing.status = item.status;
146
- existing.output = item.output;
147
- existing.completedAt = ts;
148
- const previousHistoryItems = existing.historyItems ?? (callHistoryItem ? [callHistoryItem] : []);
149
- existing.historyItems = appendToolResultIfMissing(previousHistoryItems, item.callId, makeHistoryItemForToolResult(item));
107
+ }
108
+ const keys = new Set(entries.map(toolOccurrenceKey));
109
+ const first = state.toolLedger.findIndex((entry) => keys.has(toolOccurrenceKey(entry)));
110
+ if (first >= 0) {
111
+ const ordered = entries.map((entry) => state.toolLedger.find((candidate) => toolOccurrenceKey(candidate) === toolOccurrenceKey(entry)));
112
+ state.toolLedger = state.toolLedger.filter((entry) => !keys.has(toolOccurrenceKey(entry)));
113
+ state.toolLedger.splice(first, 0, ...ordered);
150
114
  }
151
115
  }
152
116
  const stateFromAssistantTurn = (event) => {
@@ -412,8 +376,10 @@ function applyEvent(state, event, ts) {
412
376
  }
413
377
  case 'tool_started': {
414
378
  state.inFlightToolCalls.set(event.toolCallId, { callId: event.toolCallId, toolName: event.toolName });
415
- const existing = state.toolLedger.find((e) => e.callId === event.toolCallId);
416
- if (!existing) {
379
+ const journal = getOrCreateJournal(state, ts, journalKeyForEvent(event, state), event.turnId);
380
+ const existing = state.toolLedger.find((e) => e.callId === event.toolCallId && e.turnId === (event.turnId ?? 'turn-interrupted'));
381
+ const journalCall = journal.items.some((item) => item.type === 'tool_call' && item.callId === event.toolCallId);
382
+ if (!existing && !journalCall) {
417
383
  state.toolLedger.push({
418
384
  turnId: event.turnId ?? 'turn-interrupted',
419
385
  callId: event.toolCallId,
@@ -423,17 +389,21 @@ function applyEvent(state, event, ts) {
423
389
  startedAt: ts,
424
390
  });
425
391
  }
426
- const journal = getOrCreateJournal(state, ts, journalKeyForEvent(event, state), event.turnId);
427
392
  journal.toolStartedByCall.set(event.toolCallId, event.toolName);
428
393
  return;
429
394
  }
430
395
  case 'tool_result': {
431
396
  state.inFlightToolCalls.delete(event.callId);
432
- let existing = state.toolLedger.find((e) => e.callId === event.callId);
397
+ let existing = [...state.toolLedger]
398
+ .reverse()
399
+ .find((e) => e.callId === event.callId &&
400
+ e.turnId === (event.turnId ?? 'turn-interrupted') &&
401
+ (event.occurrence === undefined || e.occurrence === event.occurrence));
433
402
  if (!existing) {
434
403
  existing = {
435
404
  turnId: event.turnId ?? 'turn-interrupted',
436
405
  callId: event.callId,
406
+ occurrence: event.occurrence,
437
407
  toolName: event.toolName,
438
408
  status: 'started',
439
409
  startedAt: ts,
@@ -656,12 +626,23 @@ function applyEvent(state, event, ts) {
656
626
  return;
657
627
  }
658
628
  case 'assistant_turn': {
629
+ const authoritativeTurnId = event.turnId ?? `turn-${state.messages.filter((message) => message.sender === 'user').length || 1}`;
630
+ if (!event.snapshot) {
631
+ for (const journal of state.pendingJournals.values()) {
632
+ if (journal.turnId === authoritativeTurnId ||
633
+ (!event.turnId &&
634
+ journal.userTurnIndex === state.messages.filter((message) => message.sender === 'user').length))
635
+ mergeAssistantTurnIntoLedger(state, { items: journal.items }, journal.startedAt, authoritativeTurnId);
636
+ }
637
+ }
638
+ const alignedItems = alignHistoryToolOccurrences(event.turn.items, state.toolLedger.filter((entry) => entry.turnId === authoritativeTurnId));
639
+ const turn = { ...event.turn, items: pairToolOccurrences(alignedItems, authoritativeTurnId) };
659
640
  const currentUserTurnIndex = state.messages.filter((message) => message.sender === 'user').length;
660
641
  const lastUserIndex = state.messages.map((m) => m.sender).lastIndexOf('user');
661
642
  const startIndex = state.trailingUserMessage && lastUserIndex !== -1 ? lastUserIndex + 1 : state.activeTurnStartIndex;
662
643
  state.messages = state.messages.slice(0, startIndex);
663
644
  const turnId = `bot-turn-${state.messages.length}-${ts}`;
664
- const replayedMessages = replayAssistantTurn(event.turn, turnId, event.usage, event.displayUsage);
645
+ const replayedMessages = replayAssistantTurn(turn, turnId, event.usage, event.displayUsage);
665
646
  for (const m of replayedMessages) {
666
647
  state.messages.push(m);
667
648
  }
@@ -669,14 +650,15 @@ function applyEvent(state, event, ts) {
669
650
  const compactState = stateFromAssistantTurn(event);
670
651
  state.history = event.providerHistory
671
652
  ? cloneValue(event.providerHistory)
672
- : synthesizeHistoryFromAssistantTurn(state.history, event.turn);
653
+ : synthesizeHistoryFromAssistantTurn(state.history, turn);
673
654
  if (event.snapshot) {
674
655
  const snap = cloneSnapshot(event.snapshot);
675
656
  state.toolLedger = snap.toolLedger;
676
657
  }
677
658
  else {
678
- mergeAssistantTurnIntoLedger(state, event.turn, ts, event.turnId);
659
+ mergeAssistantTurnIntoLedger(state, turn, ts, authoritativeTurnId);
679
660
  }
661
+ state.history = projectProviderHistory({ history: state.history, toolLedger: state.toolLedger }).history;
680
662
  state.previousResponseId = compactState.previousResponseId;
681
663
  state.snapshotModel = compactState.model ?? state.snapshotModel;
682
664
  state.snapshotProvider = compactState.provider ?? state.snapshotProvider;
@@ -836,72 +818,11 @@ function applyInterruptedTurnJournals(state) {
836
818
  // Append corresponding history items (tool call / tool result) so the
837
819
  // next resumed request sees them. Also rehydrate the tool ledger so
838
820
  // existing recovery semantics keep working.
839
- let pendingReasoningHistoryItems = [];
840
- for (const item of journal.items) {
841
- if (item.type === 'reasoning') {
842
- const historyItem = makeHistoryItemForReasoning(item);
843
- state.history.push(historyItem);
844
- pendingReasoningHistoryItems.push(historyItem);
845
- continue;
846
- }
847
- if (item.type === 'provider_opaque') {
848
- state.history.push(projectPersistedAssistantItemToProviderHistory(item));
849
- pendingReasoningHistoryItems = [];
850
- continue;
851
- }
852
- if (item.type === 'tool_call') {
853
- const historyItem = makeHistoryItemForToolCall(item);
854
- if (historyItem != null) {
855
- state.history.push(historyItem);
856
- }
857
- const existing = state.toolLedger.find((entry) => entry.callId === item.callId);
858
- if (!existing) {
859
- state.toolLedger.push({
860
- turnId: journal.turnId ?? `turn-${journal.userTurnIndex}`,
861
- callId: item.callId,
862
- toolName: item.toolName,
863
- arguments: item.arguments,
864
- status: 'started',
865
- startedAt: journal.startedAt,
866
- historyItems: [...pendingReasoningHistoryItems, historyItem].filter(Boolean),
867
- });
868
- }
869
- else if (existing && (!existing.historyItems || existing.historyItems.length === 0)) {
870
- existing.historyItems = [...pendingReasoningHistoryItems, historyItem].filter(Boolean);
871
- }
872
- else if (existing) {
873
- existing.historyItems = withMissingReasoningPrefix(existing.historyItems, pendingReasoningHistoryItems);
874
- }
875
- pendingReasoningHistoryItems = [];
876
- }
877
- else if (item.type === 'tool_result') {
878
- pendingReasoningHistoryItems = [];
879
- const historyItem = makeHistoryItemForToolResult(item);
880
- if (historyItem != null) {
881
- state.history.push(historyItem);
882
- }
883
- let existing = state.toolLedger.find((entry) => entry.callId === item.callId);
884
- if (!existing) {
885
- existing = {
886
- turnId: journal.turnId ?? `turn-${journal.userTurnIndex}`,
887
- callId: item.callId,
888
- toolName: item.toolName,
889
- status: 'started',
890
- startedAt: journal.startedAt,
891
- };
892
- state.toolLedger.push(existing);
893
- }
894
- existing.status = item.status;
895
- existing.output = item.output;
896
- existing.completedAt = journal.startedAt;
897
- const callHistoryItem = existing.historyItems?.find((historyItem) => normalizeRunItems([historyItem]).some((normalized) => normalized.type === 'tool_call' && normalized.callId === item.callId));
898
- const previousHistoryItems = existing.historyItems ?? (callHistoryItem ? [callHistoryItem] : []);
899
- existing.historyItems = appendToolResultIfMissing(previousHistoryItems, item.callId, historyItem).filter(Boolean);
900
- }
901
- else {
902
- pendingReasoningHistoryItems = [];
903
- }
904
- }
821
+ const id = journal.turnId ?? `turn-${journal.userTurnIndex}`;
822
+ const turn = { items: pairToolOccurrences(journal.items, id) };
823
+ mergeAssistantTurnIntoLedger(state, turn, journal.startedAt, id);
824
+ // Text deltas are represented below; canonical text items are authoritative.
825
+ state.history = synthesizeHistoryFromAssistantTurn(state.history, turn);
905
826
  if (journal.reasoningFragment) {
906
827
  state.history.push({
907
828
  type: 'reasoning',
@@ -961,6 +882,7 @@ const settleInterruptedToolEntries = (state) => {
961
882
  {
962
883
  type: 'function_call',
963
884
  callId: entry.callId,
885
+ ...toolOccurrenceMetadata(entry),
964
886
  name: entry.toolName,
965
887
  arguments: typeof entry.arguments === 'string' ? entry.arguments : JSON.stringify(entry.arguments ?? {}),
966
888
  },
@@ -973,6 +895,7 @@ const settleInterruptedToolEntries = (state) => {
973
895
  {
974
896
  type: 'function_call_output',
975
897
  callId: entry.callId,
898
+ ...toolOccurrenceMetadata(entry),
976
899
  output: RESTART_UNOBSERVED_TOOL_RESULT,
977
900
  },
978
901
  ];
@@ -1214,6 +1137,8 @@ export function replayEvents(envelopes) {
1214
1137
  state.previousResponseId = null;
1215
1138
  }
1216
1139
  // Defensive idempotent final repair pass
1140
+ state.toolLedger = normalizeToolLedgerOccurrences(state.toolLedger);
1141
+ state.history = alignHistoryToolOccurrences(state.history, state.toolLedger);
1217
1142
  const repair = repairConversationHistory(state.history);
1218
1143
  if (repair.repaired && repair.removedItems > 0) {
1219
1144
  state.history = repair.history;