@qduc/term2 0.32.2 → 0.33.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 (269) hide show
  1. package/dist/build-info.json +2 -2
  2. package/dist/components/menu/ModelSelectionMenu.d.ts.map +1 -1
  3. package/dist/components/menu/ModelSelectionMenu.js +12 -14
  4. package/dist/components/menu/ModelSelectionMenu.js.map +1 -1
  5. package/dist/lib/agent-chat-service.d.ts.map +1 -1
  6. package/dist/lib/agent-chat-service.js +2 -6
  7. package/dist/lib/agent-chat-service.js.map +1 -1
  8. package/dist/lib/agent-client.d.ts +2 -1
  9. package/dist/lib/agent-client.d.ts.map +1 -1
  10. package/dist/lib/agent-client.js +71 -84
  11. package/dist/lib/agent-client.js.map +1 -1
  12. package/dist/lib/agent-factory.d.ts.map +1 -1
  13. package/dist/lib/agent-factory.js +17 -19
  14. package/dist/lib/agent-factory.js.map +1 -1
  15. package/dist/prompts/tool-surface-guidance.js +1 -1
  16. package/dist/prompts/tool-surface-guidance.js.map +1 -1
  17. package/dist/prompts/tool-surface-guidance.ts +1 -1
  18. package/dist/providers/ai-sdk-anthropic.provider.d.ts.map +1 -1
  19. package/dist/providers/ai-sdk-anthropic.provider.js +16 -2
  20. package/dist/providers/ai-sdk-anthropic.provider.js.map +1 -1
  21. package/dist/providers/ai-sdk-google.provider.d.ts.map +1 -1
  22. package/dist/providers/ai-sdk-google.provider.js +16 -2
  23. package/dist/providers/ai-sdk-google.provider.js.map +1 -1
  24. package/dist/providers/ai-sdk-openrouter.provider.d.ts.map +1 -1
  25. package/dist/providers/ai-sdk-openrouter.provider.js +16 -1
  26. package/dist/providers/ai-sdk-openrouter.provider.js.map +1 -1
  27. package/dist/providers/ai-sdk-provider-settings.d.ts +2 -0
  28. package/dist/providers/ai-sdk-provider-settings.d.ts.map +1 -1
  29. package/dist/providers/ai-sdk-provider-settings.js +5 -0
  30. package/dist/providers/ai-sdk-provider-settings.js.map +1 -1
  31. package/dist/providers/ai-sdk-streamed-model.d.ts +3 -3
  32. package/dist/providers/ai-sdk-streamed-model.d.ts.map +1 -1
  33. package/dist/providers/ai-sdk-streamed-model.js +5 -69
  34. package/dist/providers/ai-sdk-streamed-model.js.map +1 -1
  35. package/dist/providers/anthropic-chat-caching.d.ts +5 -0
  36. package/dist/providers/anthropic-chat-caching.d.ts.map +1 -0
  37. package/dist/providers/{common/openai-compatible-messages.js → anthropic-chat-caching.js} +19 -1
  38. package/dist/providers/anthropic-chat-caching.js.map +1 -0
  39. package/dist/providers/codex.provider.js +2 -0
  40. package/dist/providers/codex.provider.js.map +1 -1
  41. package/dist/providers/custom-provider-runtime.d.ts +18 -0
  42. package/dist/providers/custom-provider-runtime.d.ts.map +1 -0
  43. package/dist/providers/custom-provider-runtime.js +26 -0
  44. package/dist/providers/custom-provider-runtime.js.map +1 -0
  45. package/dist/providers/llama-cpp.provider.d.ts +3 -0
  46. package/dist/providers/llama-cpp.provider.d.ts.map +1 -1
  47. package/dist/providers/llama-cpp.provider.js +17 -0
  48. package/dist/providers/llama-cpp.provider.js.map +1 -1
  49. package/dist/providers/neuralwatt.provider.d.ts +6 -0
  50. package/dist/providers/neuralwatt.provider.d.ts.map +1 -0
  51. package/dist/providers/neuralwatt.provider.js +8 -0
  52. package/dist/providers/neuralwatt.provider.js.map +1 -0
  53. package/dist/providers/openai-compatible-lazy.d.ts.map +1 -1
  54. package/dist/providers/openai-compatible-lazy.js +2 -0
  55. package/dist/providers/openai-compatible-lazy.js.map +1 -1
  56. package/dist/providers/openai-compatible-middleware.d.ts +4 -9
  57. package/dist/providers/openai-compatible-middleware.d.ts.map +1 -1
  58. package/dist/providers/openai-compatible-middleware.js +25 -48
  59. package/dist/providers/openai-compatible-middleware.js.map +1 -1
  60. package/dist/providers/openai-compatible-response-normalizer.d.ts +1 -1
  61. package/dist/providers/openai-compatible-response-normalizer.d.ts.map +1 -1
  62. package/dist/providers/openai-compatible-response-normalizer.js +6 -6
  63. package/dist/providers/openai-compatible-response-normalizer.js.map +1 -1
  64. package/dist/providers/openai-compatible.provider.d.ts +2 -32
  65. package/dist/providers/openai-compatible.provider.d.ts.map +1 -1
  66. package/dist/providers/openai-compatible.provider.js +18 -144
  67. package/dist/providers/openai-compatible.provider.js.map +1 -1
  68. package/dist/providers/openai.provider.d.ts.map +1 -1
  69. package/dist/providers/openai.provider.js +1 -0
  70. package/dist/providers/openai.provider.js.map +1 -1
  71. package/dist/providers/opencode-middleware.d.ts +9 -0
  72. package/dist/providers/opencode-middleware.d.ts.map +1 -0
  73. package/dist/providers/opencode-middleware.js +15 -0
  74. package/dist/providers/opencode-middleware.js.map +1 -0
  75. package/dist/providers/opencode-model-provider.d.ts +19 -0
  76. package/dist/providers/opencode-model-provider.d.ts.map +1 -0
  77. package/dist/providers/opencode-model-provider.js +128 -0
  78. package/dist/providers/opencode-model-provider.js.map +1 -0
  79. package/dist/providers/opencode.provider.d.ts +2 -0
  80. package/dist/providers/opencode.provider.d.ts.map +1 -1
  81. package/dist/providers/opencode.provider.js +4 -0
  82. package/dist/providers/opencode.provider.js.map +1 -1
  83. package/dist/providers/openrouter-decision-models.d.ts +7 -0
  84. package/dist/providers/openrouter-decision-models.d.ts.map +1 -0
  85. package/dist/providers/openrouter-decision-models.js +31 -0
  86. package/dist/providers/openrouter-decision-models.js.map +1 -0
  87. package/dist/providers/openrouter.provider.js +2 -1
  88. package/dist/providers/openrouter.provider.js.map +1 -1
  89. package/dist/providers/orcarouter-models.d.ts +12 -0
  90. package/dist/providers/orcarouter-models.d.ts.map +1 -0
  91. package/dist/providers/orcarouter-models.js +34 -0
  92. package/dist/providers/orcarouter-models.js.map +1 -0
  93. package/dist/providers/registry.d.ts +7 -0
  94. package/dist/providers/registry.d.ts.map +1 -1
  95. package/dist/providers/registry.js.map +1 -1
  96. package/dist/services/agent-runtime/application-run-loop.d.ts +20 -1
  97. package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -1
  98. package/dist/services/agent-runtime/application-run-loop.js +871 -759
  99. package/dist/services/agent-runtime/application-run-loop.js.map +1 -1
  100. package/dist/services/agent-runtime/tool-call-execution.d.ts +1 -1
  101. package/dist/services/agent-runtime/tool-call-execution.d.ts.map +1 -1
  102. package/dist/services/agent-runtime/tool-call-execution.js +6 -3
  103. package/dist/services/agent-runtime/tool-call-execution.js.map +1 -1
  104. package/dist/services/approval/approval-flow-coordinator.d.ts +4 -2
  105. package/dist/services/approval/approval-flow-coordinator.d.ts.map +1 -1
  106. package/dist/services/approval/approval-flow-coordinator.js +2 -1
  107. package/dist/services/approval/approval-flow-coordinator.js.map +1 -1
  108. package/dist/services/approval/approval-state.d.ts +0 -13
  109. package/dist/services/approval/approval-state.d.ts.map +1 -1
  110. package/dist/services/approval/approval-state.js +0 -5
  111. package/dist/services/approval/approval-state.js.map +1 -1
  112. package/dist/services/approval/background-subagent-approval-controller.d.ts.map +1 -1
  113. package/dist/services/approval/background-subagent-approval-controller.js +0 -2
  114. package/dist/services/approval/background-subagent-approval-controller.js.map +1 -1
  115. package/dist/services/approval/nested-approval-owner.d.ts.map +1 -1
  116. package/dist/services/approval/nested-approval-owner.js +5 -1
  117. package/dist/services/approval/nested-approval-owner.js.map +1 -1
  118. package/dist/services/approval/shell-auto-approval-resolver.d.ts +2 -2
  119. package/dist/services/approval/shell-auto-approval-resolver.d.ts.map +1 -1
  120. package/dist/services/approval/shell-auto-approval-resolver.js +2 -2
  121. package/dist/services/approval/shell-auto-approval-resolver.js.map +1 -1
  122. package/dist/services/approval/tool-approval-batch-coordinator.d.ts +2 -2
  123. package/dist/services/approval/tool-approval-batch-coordinator.d.ts.map +1 -1
  124. package/dist/services/approval/tool-approval-batch-coordinator.js +4 -4
  125. package/dist/services/approval/tool-approval-batch-coordinator.js.map +1 -1
  126. package/dist/services/conversation/conversation-adapter.d.ts +17 -47
  127. package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
  128. package/dist/services/conversation/conversation-adapter.js +114 -88
  129. package/dist/services/conversation/conversation-adapter.js.map +1 -1
  130. package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
  131. package/dist/services/conversation/conversation-orchestrator.js +48 -121
  132. package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
  133. package/dist/services/conversation/conversation-record-stream.d.ts +21 -0
  134. package/dist/services/conversation/conversation-record-stream.d.ts.map +1 -0
  135. package/dist/services/conversation/conversation-record-stream.js +186 -0
  136. package/dist/services/conversation/conversation-record-stream.js.map +1 -0
  137. package/dist/services/conversation/conversation-record.d.ts +160 -0
  138. package/dist/services/conversation/conversation-record.d.ts.map +1 -0
  139. package/dist/services/conversation/conversation-record.js +371 -0
  140. package/dist/services/conversation/conversation-record.js.map +1 -0
  141. package/dist/services/conversation/conversation-result-builder.d.ts +0 -4
  142. package/dist/services/conversation/conversation-result-builder.d.ts.map +1 -1
  143. package/dist/services/conversation/conversation-result-builder.js +0 -10
  144. package/dist/services/conversation/conversation-result-builder.js.map +1 -1
  145. package/dist/services/conversation/conversation-service.d.ts +2 -1
  146. package/dist/services/conversation/conversation-service.d.ts.map +1 -1
  147. package/dist/services/conversation/conversation-service.js +3 -0
  148. package/dist/services/conversation/conversation-service.js.map +1 -1
  149. package/dist/services/conversation-agent-client.d.ts +17 -7
  150. package/dist/services/conversation-agent-client.d.ts.map +1 -1
  151. package/dist/services/logging/conversation-logger.d.ts +1 -7
  152. package/dist/services/logging/conversation-logger.d.ts.map +1 -1
  153. package/dist/services/logging/conversation-logger.js +0 -18
  154. package/dist/services/logging/conversation-logger.js.map +1 -1
  155. package/dist/services/model-service.d.ts +2 -6
  156. package/dist/services/model-service.d.ts.map +1 -1
  157. package/dist/services/model-service.js +8 -21
  158. package/dist/services/model-service.js.map +1 -1
  159. package/dist/services/models/decision-model-listing.d.ts +2 -12
  160. package/dist/services/models/decision-model-listing.d.ts.map +1 -1
  161. package/dist/services/models/decision-model-listing.js +2 -29
  162. package/dist/services/models/decision-model-listing.js.map +1 -1
  163. package/dist/services/provider-continuity.d.ts +26 -0
  164. package/dist/services/provider-continuity.d.ts.map +1 -1
  165. package/dist/services/provider-continuity.js +47 -0
  166. package/dist/services/provider-continuity.js.map +1 -1
  167. package/dist/services/retry/recovery-executor.d.ts +3 -4
  168. package/dist/services/retry/recovery-executor.d.ts.map +1 -1
  169. package/dist/services/retry/recovery-executor.js +13 -75
  170. package/dist/services/retry/recovery-executor.js.map +1 -1
  171. package/dist/services/retry/retry-contracts.d.ts +2 -10
  172. package/dist/services/retry/retry-contracts.d.ts.map +1 -1
  173. package/dist/services/session/continuation-plan-applier.d.ts +5 -9
  174. package/dist/services/session/continuation-plan-applier.d.ts.map +1 -1
  175. package/dist/services/session/continuation-plan-applier.js +9 -43
  176. package/dist/services/session/continuation-plan-applier.js.map +1 -1
  177. package/dist/services/session/continuation-recovery-handler.d.ts +4 -6
  178. package/dist/services/session/continuation-recovery-handler.d.ts.map +1 -1
  179. package/dist/services/session/continuation-recovery-handler.js +3 -15
  180. package/dist/services/session/continuation-recovery-handler.js.map +1 -1
  181. package/dist/services/session/initial-input-preparer.d.ts +2 -2
  182. package/dist/services/session/initial-input-preparer.d.ts.map +1 -1
  183. package/dist/services/session/initial-input-preparer.js +3 -3
  184. package/dist/services/session/initial-input-preparer.js.map +1 -1
  185. package/dist/services/session/initial-turn-recovery-handler.d.ts +2 -4
  186. package/dist/services/session/initial-turn-recovery-handler.d.ts.map +1 -1
  187. package/dist/services/session/initial-turn-recovery-handler.js +4 -5
  188. package/dist/services/session/initial-turn-recovery-handler.js.map +1 -1
  189. package/dist/services/session/live-run.d.ts +9 -3
  190. package/dist/services/session/live-run.d.ts.map +1 -1
  191. package/dist/services/session/live-run.js +19 -4
  192. package/dist/services/session/live-run.js.map +1 -1
  193. package/dist/services/session/session-composition.d.ts +8 -12
  194. package/dist/services/session/session-composition.d.ts.map +1 -1
  195. package/dist/services/session/session-composition.js +41 -87
  196. package/dist/services/session/session-composition.js.map +1 -1
  197. package/dist/services/session/session-input-planner.d.ts +2 -2
  198. package/dist/services/session/session-input-planner.d.ts.map +1 -1
  199. package/dist/services/session/session-input-planner.js +6 -13
  200. package/dist/services/session/session-input-planner.js.map +1 -1
  201. package/dist/services/session/session-lifecycle.d.ts +73 -23
  202. package/dist/services/session/session-lifecycle.d.ts.map +1 -1
  203. package/dist/services/session/session-lifecycle.js +127 -45
  204. package/dist/services/session/session-lifecycle.js.map +1 -1
  205. package/dist/services/session/session-stream-processor.d.ts +4 -30
  206. package/dist/services/session/session-stream-processor.d.ts.map +1 -1
  207. package/dist/services/session/session-stream-processor.js +11 -300
  208. package/dist/services/session/session-stream-processor.js.map +1 -1
  209. package/dist/services/session/session-tool-tracker.d.ts +9 -144
  210. package/dist/services/session/session-tool-tracker.d.ts.map +1 -1
  211. package/dist/services/session/session-tool-tracker.js +17 -251
  212. package/dist/services/session/session-tool-tracker.js.map +1 -1
  213. package/dist/services/session/{turn-workflow.d.ts → session-turn-adapter.d.ts} +10 -43
  214. package/dist/services/session/session-turn-adapter.d.ts.map +1 -0
  215. package/dist/services/session/session-turn-adapter.js +734 -0
  216. package/dist/services/session/session-turn-adapter.js.map +1 -0
  217. package/dist/services/session/turn-attempt-factory.d.ts +2 -11
  218. package/dist/services/session/turn-attempt-factory.d.ts.map +1 -1
  219. package/dist/services/session/turn-attempt-factory.js +4 -12
  220. package/dist/services/session/turn-attempt-factory.js.map +1 -1
  221. package/dist/services/session/turn-attempt.d.ts +0 -3
  222. package/dist/services/session/turn-attempt.d.ts.map +1 -1
  223. package/dist/services/session/turn-attempt.js +0 -5
  224. package/dist/services/session/turn-attempt.js.map +1 -1
  225. package/dist/services/session/turn-coordinator.d.ts +3 -3
  226. package/dist/services/session/turn-coordinator.d.ts.map +1 -1
  227. package/dist/services/session/turn-coordinator.js +31 -26
  228. package/dist/services/session/turn-coordinator.js.map +1 -1
  229. package/dist/services/session/turn-projection-state.d.ts +45 -0
  230. package/dist/services/session/turn-projection-state.d.ts.map +1 -0
  231. package/dist/services/session/turn-projection-state.js +61 -0
  232. package/dist/services/session/turn-projection-state.js.map +1 -0
  233. package/dist/services/subagents/tool-policy.d.ts +5 -5
  234. package/dist/services/subagents/tool-policy.d.ts.map +1 -1
  235. package/dist/services/subagents/tool-policy.js.map +1 -1
  236. package/dist/tools/system/run-code/run-code-runtime.d.ts.map +1 -1
  237. package/dist/tools/system/run-code/run-code-runtime.js +90 -19
  238. package/dist/tools/system/run-code/run-code-runtime.js.map +1 -1
  239. package/dist/tools/system/shell.d.ts +2 -2
  240. package/dist/tools/system/shell.d.ts.map +1 -1
  241. package/dist/tools/system/shell.js +1 -0
  242. package/dist/tools/system/shell.js.map +1 -1
  243. package/dist/tools/tool-names.d.ts +1 -1
  244. package/dist/tools/tool-names.d.ts.map +1 -1
  245. package/dist/utils/ai/token-usage.js +9 -8
  246. package/dist/utils/ai/token-usage.js.map +1 -1
  247. package/package.json +1 -1
  248. package/dist/providers/anthropic-middleware.d.ts +0 -25
  249. package/dist/providers/anthropic-middleware.d.ts.map +0 -1
  250. package/dist/providers/anthropic-middleware.js +0 -32
  251. package/dist/providers/anthropic-middleware.js.map +0 -1
  252. package/dist/providers/common/openai-compatible-messages.d.ts +0 -2
  253. package/dist/providers/common/openai-compatible-messages.d.ts.map +0 -1
  254. package/dist/providers/common/openai-compatible-messages.js.map +0 -1
  255. package/dist/services/session/continuation-call-id-resolver.d.ts +0 -29
  256. package/dist/services/session/continuation-call-id-resolver.d.ts.map +0 -1
  257. package/dist/services/session/continuation-call-id-resolver.js +0 -69
  258. package/dist/services/session/continuation-call-id-resolver.js.map +0 -1
  259. package/dist/services/session/continuation-state.d.ts +0 -69
  260. package/dist/services/session/continuation-state.d.ts.map +0 -1
  261. package/dist/services/session/continuation-state.js +0 -78
  262. package/dist/services/session/continuation-state.js.map +0 -1
  263. package/dist/services/session/session-manager.d.ts +0 -87
  264. package/dist/services/session/session-manager.d.ts.map +0 -1
  265. package/dist/services/session/session-manager.js +0 -146
  266. package/dist/services/session/session-manager.js.map +0 -1
  267. package/dist/services/session/turn-workflow.d.ts.map +0 -1
  268. package/dist/services/session/turn-workflow.js +0 -1055
  269. package/dist/services/session/turn-workflow.js.map +0 -1
@@ -1,6 +1,12 @@
1
+ import type { StateSnapshot } from '../logging/conversation-log-events.js';
2
+ import { ConversationLogger } from '../logging/conversation-logger.js';
3
+ import type { RewindTarget, RewindTargetId } from '../conversation/conversation-store.js';
4
+ import type { ConversationAgentClient } from '../conversation-agent-client.js';
5
+ import type { ProviderInputItem } from '../../contracts/provider-input.js';
6
+ import type { UserTurn } from '../../types/user-turn.js';
7
+ import { ConversationRecord } from '../conversation/conversation-record.js';
1
8
  import { SessionInputPlanner } from './session-input-planner.js';
2
- import { SessionToolTracker } from './session-tool-tracker.js';
3
- import { ConversationStore } from '../conversation/conversation-store.js';
9
+ import type { ISettingsService } from '../service-interfaces.js';
4
10
  import type { ILoggingService } from '../service-interfaces.js';
5
11
  import type { SavedToolExecution } from '../tool-execution-ledger.js';
6
12
  import { TurnStatusMachine } from './turn-status-machine.js';
@@ -8,7 +14,6 @@ import type { ProviderContinuity } from '../provider-continuity.js';
8
14
  import { GenerationGuard } from '../generation-guard.js';
9
15
  import { SessionContinuityReset } from './session-continuity-reset.js';
10
16
  import type { SessionAccessState } from './session-access-state.js';
11
- import type { AssistantTurnJournal } from '../logging/assistant-turn-journal.js';
12
17
  import type { PendingInteractionState } from './pending-interaction-state.js';
13
18
  import type { SessionIdSource } from './session-identity.js';
14
19
  /**
@@ -16,7 +21,7 @@ import type { SessionIdSource } from './session-identity.js';
16
21
  * - pendingModeNotice
17
22
  * - generation resets, store clearing
18
23
  * - import/export reconciliation
19
- * - undo side effects
24
+ * - complete undo/retry/rewind operations and their logging
20
25
  * - approval/cache/input guard reset hooks
21
26
  *
22
27
  * ConversationSession delegates to this object for lifecycle operations
@@ -28,8 +33,10 @@ export declare class SessionLifecycle {
28
33
  pendingModeNotice: string | null;
29
34
  constructor(deps: {
30
35
  inputPlanner: SessionInputPlanner;
31
- toolTracker: SessionToolTracker;
32
- conversationStore: ConversationStore;
36
+ conversationLogger: ConversationLogger;
37
+ agentClient: ConversationAgentClient;
38
+ settingsService?: ISettingsService;
39
+ record: ConversationRecord;
33
40
  logger: ILoggingService;
34
41
  sessionId: SessionIdSource;
35
42
  appState: {
@@ -38,13 +45,6 @@ export declare class SessionLifecycle {
38
45
  providerContinuity: ProviderContinuity;
39
46
  generationGuard: GenerationGuard;
40
47
  continuityReset: SessionContinuityReset;
41
- /**
42
- * Streams assistant items into the durable journal. Undo/reset must prune
43
- * it alongside the store and ledger: failure recovery rebuilds the tool
44
- * ledger from this buffer, so skipped pruning would resurrect tool pairs
45
- * from undone turns into the next provider request.
46
- */
47
- journal: AssistantTurnJournal;
48
48
  /** Handle-owned root capability; absent only for compatibility callers. */
49
49
  sessionAccess?: SessionAccessState;
50
50
  /** Notify the coordinator before a generation reset invalidates a turn. */
@@ -64,16 +64,6 @@ export declare class SessionLifecycle {
64
64
  * Keeps the conversation store intact but severs the response chain.
65
65
  */
66
66
  afterProviderChanged(): void;
67
- /**
68
- * Clean up after an undo operation.
69
- *
70
- * Call this *after* the user turn has been removed from the conversation store.
71
- */
72
- afterUndo(): void;
73
- /**
74
- * Reset state after rewinding to the last tool output.
75
- */
76
- afterToolRetry(): void;
77
67
  /**
78
68
  * Export the current session state for persistence.
79
69
  */
@@ -95,5 +85,65 @@ export declare class SessionLifecycle {
95
85
  toolLedger?: SavedToolExecution[];
96
86
  updatedAt?: string;
97
87
  }): void;
88
+ reset(): void;
89
+ undoLastUserTurn(): {
90
+ text: string;
91
+ images?: UserTurn['images'];
92
+ } | null;
93
+ /** Discard the latest attempt, retaining the exact original provider input. */
94
+ retryLastUserTurn(): boolean;
95
+ peekLastToolOutput(): {
96
+ index: number;
97
+ callId?: string;
98
+ toolName?: string;
99
+ output?: unknown;
100
+ itemType: string;
101
+ } | null;
102
+ retryLastToolOutput(): {
103
+ index: number;
104
+ callId?: string;
105
+ toolName?: string;
106
+ output?: unknown;
107
+ itemType: string;
108
+ } | null;
109
+ undoNUserTurns(n: number): {
110
+ text: string;
111
+ images?: UserTurn['images'];
112
+ } | null;
113
+ listUserTurns(): {
114
+ index: number;
115
+ text: string;
116
+ imageCount: number;
117
+ }[];
118
+ listRewindTargets(): RewindTarget[];
119
+ /**
120
+ * Rewind through a snapshot-scoped domain target. This is the only target
121
+ * based rewind entry point: lifecycle cleanup and undo logging happen once,
122
+ * and only after the store accepted the target.
123
+ */
124
+ rewindToTarget(targetId: RewindTargetId): {
125
+ text: string;
126
+ images?: UserTurn['images'];
127
+ } | null;
128
+ getCurrentSnapshot(): StateSnapshot;
129
+ getProviderHistorySnapshot(): import("../conversation/conversation-store.js").ProviderHistorySnapshot;
130
+ replaceHistoryAtRevision(expectedRevision: number, history: readonly ProviderInputItem[]): boolean;
131
+ exportState(): {
132
+ history: unknown[];
133
+ previousResponseId: string | null;
134
+ toolLedger: SavedToolExecution[];
135
+ };
136
+ importState(state: {
137
+ history: unknown[];
138
+ previousResponseId: string | null;
139
+ toolLedger?: SavedToolExecution[];
140
+ updatedAt?: string;
141
+ }): void;
142
+ addShellContext(historyText: string): void;
143
+ queueModeNotice(text: string): void;
144
+ previewLargeUncachedInput(input: string | UserTurn, now?: number): import("../large-uncached-input-guard.js").LargeUncachedInputDecision;
145
+ previewInputSurge(input: string | UserTurn): import("../input-surge-guard.js").InputSurgeDecision;
98
146
  }
147
+ /** Complete public state operations; cleanup primitives remain an internal concern. */
148
+ export type SessionState = Pick<SessionLifecycle, 'reset' | 'undoLastUserTurn' | 'retryLastUserTurn' | 'peekLastToolOutput' | 'retryLastToolOutput' | 'undoNUserTurns' | 'listUserTurns' | 'listRewindTargets' | 'rewindToTarget' | 'getCurrentSnapshot' | 'getProviderHistorySnapshot' | 'replaceHistoryAtRevision' | 'exportState' | 'importState' | 'addShellContext' | 'queueModeNotice' | 'previewLargeUncachedInput' | 'previewInputSurge'>;
99
149
  //# sourceMappingURL=session-lifecycle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-lifecycle.d.ts","sourceRoot":"","sources":["../../../source/services/session/session-lifecycle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D;;;;;;;;;;GAUG;AACH,qBAAa,gBAAgB;;IAC3B,mEAAmE;IACnE,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAgBxC,YAAY,IAAI,EAAE;QAChB,YAAY,EAAE,mBAAmB,CAAC;QAClC,WAAW,EAAE,kBAAkB,CAAC;QAChC,iBAAiB,EAAE,iBAAiB,CAAC;QACrC,MAAM,EAAE,eAAe,CAAC;QACxB,SAAS,EAAE,eAAe,CAAC;QAC3B,QAAQ,EAAE;YAAE,aAAa,EAAE,iBAAiB,CAAA;SAAE,CAAC;QAC/C,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,eAAe,EAAE,eAAe,CAAC;QACjC,eAAe,EAAE,sBAAsB,CAAC;QACxC;;;;;WAKG;QACH,OAAO,EAAE,oBAAoB,CAAC;QAC9B,2EAA2E;QAC3E,aAAa,CAAC,EAAE,kBAAkB,CAAC;QACnC,2EAA2E;QAC3E,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;QACjC,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;KAC9C,EAcA;IAID;;;OAGG;IACH,YAAY,CAAC,OAAO,CAAC,EAAE;QAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAWjF;IAED;;;OAGG;IACH,oBAAoB,IAAI,IAAI,CAK3B;IAED;;;;OAIG;IACH,SAAS,IAAI,IAAI,CAQhB;IAED;;OAEG;IACH,cAAc,IAAI,IAAI,CAOrB;IAED;;OAEG;IACH,oBAAoB,IAAI;QACtB,OAAO,EAAE,OAAO,EAAE,CAAC;QACnB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;QAClC,UAAU,EAAE,kBAAkB,EAAE,CAAC;KAClC,CAMA;IAED;;;;;;OAMG;IACH,oBAAoB,CAAC,KAAK,EAAE;QAC1B,OAAO,EAAE,OAAO,EAAE,CAAC;QACnB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;QAClC,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;QAClC,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,IAAI,CA0CP;CAYF"}
1
+ {"version":3,"file":"session-lifecycle.d.ts","sourceRoot":"","sources":["../../../source/services/session/session-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { projectImportedState, ProjectionWarningCode } from '../conversation/conversation-state-projector.js';
2
- import { ImportedConversationStateSchema } from '../conversation/conversation-state-schema.js';
1
+ import { getMethod } from '../interruption-info.js';
2
+ import { ProjectionWarningCode } from '../conversation/conversation-state-projector.js';
3
3
  import { resolveSessionId } from './session-identity.js';
4
4
  /**
5
5
  * Owns and manages session-level state transitions:
6
6
  * - pendingModeNotice
7
7
  * - generation resets, store clearing
8
8
  * - import/export reconciliation
9
- * - undo side effects
9
+ * - complete undo/retry/rewind operations and their logging
10
10
  * - approval/cache/input guard reset hooks
11
11
  *
12
12
  * ConversationSession delegates to this object for lifecycle operations
@@ -16,8 +16,7 @@ export class SessionLifecycle {
16
16
  /** A pending mode-notice text to prepend to the next user turn. */
17
17
  pendingModeNotice = null;
18
18
  #inputPlanner;
19
- #toolTracker;
20
- #conversationStore;
19
+ #record;
21
20
  #logger;
22
21
  #sessionId;
23
22
  #appState;
@@ -26,12 +25,16 @@ export class SessionLifecycle {
26
25
  #continuityReset;
27
26
  #sessionAccess;
28
27
  #terminateActiveTurn;
29
- #journal;
30
28
  #pendingInteraction;
29
+ #conversationLogger;
30
+ #agentClient;
31
+ #settingsService;
31
32
  constructor(deps) {
32
33
  this.#inputPlanner = deps.inputPlanner;
33
- this.#toolTracker = deps.toolTracker;
34
- this.#conversationStore = deps.conversationStore;
34
+ this.#conversationLogger = deps.conversationLogger;
35
+ this.#agentClient = deps.agentClient;
36
+ this.#settingsService = deps.settingsService;
37
+ this.#record = deps.record;
35
38
  this.#logger = deps.logger;
36
39
  this.#sessionId = deps.sessionId;
37
40
  this.#appState = deps.appState;
@@ -40,7 +43,6 @@ export class SessionLifecycle {
40
43
  this.#continuityReset = deps.continuityReset;
41
44
  this.#sessionAccess = deps.sessionAccess;
42
45
  this.#terminateActiveTurn = deps.terminateActiveTurn;
43
- this.#journal = deps.journal;
44
46
  this.#pendingInteraction = deps.pendingInteraction;
45
47
  }
46
48
  // ── Public lifecycle methods ─────────────────────────────────────
@@ -53,10 +55,8 @@ export class SessionLifecycle {
53
55
  this.#generationGuard.invalidate();
54
56
  this.#clearAccessState();
55
57
  this.#continuityReset.reset(options);
56
- this.#conversationStore.clear();
57
- this.#toolTracker.reset();
58
+ this.#record.reset();
58
59
  this.#inputPlanner.reset();
59
- this.#journal.clear();
60
60
  this.#pendingInteraction?.clear();
61
61
  this.#appState.statusMachine.abort();
62
62
  }
@@ -73,24 +73,12 @@ export class SessionLifecycle {
73
73
  /**
74
74
  * Clean up after an undo operation.
75
75
  *
76
- * Call this *after* the user turn has been removed from the conversation store.
76
+ * Private step of an accepted synchronous history operation. No caller must
77
+ * remember a separate cleanup or logging call.
77
78
  */
78
- afterUndo() {
79
+ #afterUndo() {
79
80
  this.#terminateActiveTurn?.();
80
81
  this.#generationGuard.invalidate();
81
- this.#pruneToolLedgerToCurrentHistory();
82
- this.#journal.pruneToUserTurnCount(this.#conversationStore.listUserTurns().length);
83
- this.#continuityReset.reset();
84
- this.#inputPlanner.markUndoOrRewind();
85
- this.#appState.statusMachine.abort();
86
- }
87
- /**
88
- * Reset state after rewinding to the last tool output.
89
- */
90
- afterToolRetry() {
91
- this.#terminateActiveTurn?.();
92
- this.#generationGuard.invalidate();
93
- this.#pruneToolLedgerToCurrentHistory();
94
82
  this.#continuityReset.reset();
95
83
  this.#inputPlanner.markUndoOrRewind();
96
84
  this.#appState.statusMachine.abort();
@@ -99,11 +87,7 @@ export class SessionLifecycle {
99
87
  * Export the current session state for persistence.
100
88
  */
101
89
  exportPersistedState() {
102
- return {
103
- history: this.#toolTracker.getReconciledHistory(),
104
- previousResponseId: this.#providerContinuity.previousResponseId,
105
- toolLedger: this.#toolTracker.export(),
106
- };
90
+ return this.#record.exportState(this.#providerContinuity.previousResponseId);
107
91
  }
108
92
  /**
109
93
  * Import a previously persisted session state.
@@ -113,15 +97,9 @@ export class SessionLifecycle {
113
97
  * first resumed turn sends full history.
114
98
  */
115
99
  importPersistedState(state) {
116
- const validatedState = ImportedConversationStateSchema.parse(state);
100
+ const { validated: validatedState, projected } = this.#record.importState(state);
101
+ this.#terminateActiveTurn?.();
117
102
  this.#clearAccessState();
118
- this.#conversationStore.clear();
119
- this.#toolTracker.import(validatedState.toolLedger);
120
- const projected = projectImportedState({
121
- history: validatedState.history,
122
- previousResponseId: validatedState.previousResponseId,
123
- toolLedger: validatedState.toolLedger,
124
- });
125
103
  if (projected.warnings.length > 0) {
126
104
  const addedCompletedPairs = projected.warnings.find((warning) => warning.code === ProjectionWarningCode.CompletedToolHistoryInserted)
127
105
  ?.detail?.addedCompletedPairs ?? 0;
@@ -136,9 +114,6 @@ export class SessionLifecycle {
136
114
  droppedIncompleteCalls,
137
115
  });
138
116
  }
139
- for (const item of projected.history) {
140
- this.#conversationStore.addImportedItem(item);
141
- }
142
117
  // Provider-side response chains can expire while the local transcript remains valid.
143
118
  // Force the first resumed turn to resync from full history; successful completion
144
119
  // will populate a fresh previousResponseId for subsequent chained turns.
@@ -149,8 +124,115 @@ export class SessionLifecycle {
149
124
  this.#generationGuard.invalidate();
150
125
  this.#appState.statusMachine.abort();
151
126
  }
152
- #pruneToolLedgerToCurrentHistory() {
153
- this.#toolTracker.pruneToCurrentHistory();
127
+ // ── Reset ─────────────────────────────────────────────────────────
128
+ reset() {
129
+ this.resetSession();
130
+ }
131
+ // ── Undo ──────────────────────────────────────────────────────────
132
+ undoLastUserTurn() {
133
+ const removed = this.#record.removeLastUserTurn();
134
+ if (removed === null)
135
+ return null;
136
+ this.#completeUndo(1);
137
+ return removed;
138
+ }
139
+ /** Discard the latest attempt, retaining the exact original provider input. */
140
+ retryLastUserTurn() {
141
+ const retry = this.#record.retryLastUserTurn();
142
+ if (!retry)
143
+ return false;
144
+ this.#afterUndo();
145
+ this.#conversationLogger.log({
146
+ type: 'undo',
147
+ removedUserTurns: 1,
148
+ snapshot: { ...this.getCurrentSnapshot(), ...retry.discardedSnapshot },
149
+ });
150
+ return true;
151
+ }
152
+ peekLastToolOutput() {
153
+ return this.#record.peekLastToolOutput();
154
+ }
155
+ retryLastToolOutput() {
156
+ const removed = this.#record.removeAfterLastToolOutput();
157
+ if (removed === null)
158
+ return null;
159
+ this.#afterUndo();
160
+ return removed;
161
+ }
162
+ undoNUserTurns(n) {
163
+ const removed = this.#record.removeNLastUserTurns(n);
164
+ if (removed === null)
165
+ return null;
166
+ this.#completeUndo(n);
167
+ return removed;
168
+ }
169
+ listUserTurns() {
170
+ return this.#record.listUserTurns();
171
+ }
172
+ listRewindTargets() {
173
+ return this.#record.listRewindTargets();
174
+ }
175
+ /**
176
+ * Rewind through a snapshot-scoped domain target. This is the only target
177
+ * based rewind entry point: lifecycle cleanup and undo logging happen once,
178
+ * and only after the store accepted the target.
179
+ */
180
+ rewindToTarget(targetId) {
181
+ const removed = this.#record.rewindToTarget(targetId);
182
+ if (removed === null)
183
+ return null;
184
+ this.#completeUndo(removed.discardedTurns);
185
+ return { text: removed.text, ...(removed.images ? { images: removed.images } : {}) };
186
+ }
187
+ // ── Snapshot / State ──────────────────────────────────────────────
188
+ getCurrentSnapshot() {
189
+ const providerFn = getMethod(this.#agentClient, 'getProvider');
190
+ const provider = providerFn
191
+ ? providerFn.call(this.#agentClient)
192
+ : this.#settingsService?.get('agent.modelSelection').provider;
193
+ const model = this.#settingsService?.get('agent.modelSelection').model;
194
+ return this.#record.snapshot({
195
+ previousResponseId: this.#providerContinuity.previousResponseId,
196
+ ...(model ? { model } : {}),
197
+ ...(provider ? { provider } : {}),
198
+ });
199
+ }
200
+ getProviderHistorySnapshot() {
201
+ return this.#record.getProviderHistorySnapshot();
202
+ }
203
+ replaceHistoryAtRevision(expectedRevision, history) {
204
+ return this.#record.replaceHistoryAtRevision(expectedRevision, history);
205
+ }
206
+ exportState() {
207
+ return this.exportPersistedState();
208
+ }
209
+ importState(state) {
210
+ this.importPersistedState(state);
211
+ }
212
+ // ── Shell context / mode notice ───────────────────────────────────
213
+ addShellContext(historyText) {
214
+ this.#record.addShellContext(historyText);
215
+ }
216
+ queueModeNotice(text) {
217
+ // Compose instead of overwrite: a profile transition and tool-toggle
218
+ // warnings (or several toggles in one batch) must all reach the next turn.
219
+ const existing = this.pendingModeNotice;
220
+ this.pendingModeNotice = existing ? `${existing}\n\n${text}` : text;
221
+ }
222
+ previewLargeUncachedInput(input, now = Date.now()) {
223
+ return this.#inputPlanner.previewLargeUncachedInput(input, now, {
224
+ pendingModeNotice: this.pendingModeNotice,
225
+ });
226
+ }
227
+ previewInputSurge(input) {
228
+ return this.#inputPlanner.previewInputSurge(input, {
229
+ pendingModeNotice: this.pendingModeNotice,
230
+ });
231
+ }
232
+ /** No await separates accepted history changes, retirement, reset and undo logging. */
233
+ #completeUndo(count) {
234
+ this.#afterUndo();
235
+ this.#conversationLogger.log({ type: 'undo', removedUserTurns: count, snapshot: this.getCurrentSnapshot() });
154
236
  }
155
237
  #clearAccessState() {
156
238
  if (this.#sessionAccess) {
@@ -1 +1 @@
1
- {"version":3,"file":"session-lifecycle.js","sourceRoot":"","sources":["../../../source/services/session/session-lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-lifecycle.js","sourceRoot":"","sources":["../../../source/services/session/session-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -1,38 +1,18 @@
1
1
  import type { ILoggingService } from '../service-interfaces.js';
2
2
  import type { SessionToolTracker } from './session-tool-tracker.js';
3
- import type { ConversationStore } from '../conversation/conversation-store.js';
4
- import type { ConversationLogger } from '../logging/conversation-logger.js';
5
- import type { ProviderContinuity } from '../provider-continuity.js';
6
- import type { OpenAIRootCheckpointLifecycleObserver } from '../openai-root-checkpoint-lifecycle-observer.js';
7
3
  import type { AgentStream } from '../agent-stream.js';
8
4
  import type { ConversationEvent } from '../conversation/conversation-events.js';
9
- import { AssistantTurnJournal } from '../logging/assistant-turn-journal.js';
10
5
  import { type StreamAccumulator } from '../stream-event-processor.js';
11
- import type { ProviderOpaqueItem } from '../../contracts/conversation-items.js';
12
- import { GenerationGuard, type GenerationToken } from '../generation-guard.js';
6
+ import { GenerationGuard } from '../generation-guard.js';
13
7
  import { ToolCallMarkerStore } from '../../utils/streaming/extract-command-messages.js';
14
8
  import type { SessionIdSource } from './session-identity.js';
15
- export type StreamHistorySource = 'startStream' | 'continueRunStream' | 'abortResolution';
16
- export type StreamFinalizationResult = {
17
- kind: 'stale';
18
- } | {
19
- kind: 'partial';
20
- } | {
21
- kind: 'committed';
22
- };
23
- export declare const lastOpenAICompaction: (items: readonly unknown[]) => ProviderOpaqueItem | undefined;
9
+ import type { StreamHistorySource } from '../conversation/conversation-record-stream.js';
10
+ export type { StreamHistorySource } from '../conversation/conversation-record-stream.js';
24
11
  export interface SessionStreamProcessorDeps {
25
12
  logger: ILoggingService;
26
13
  sessionId: SessionIdSource;
27
14
  toolTracker: SessionToolTracker;
28
- conversationStore: ConversationStore;
29
- conversationLogger: ConversationLogger;
30
- providerContinuity: ProviderContinuity;
31
- /** Owned-root OpenAI lifecycle diagnostics; absent for every other client. */
32
- openAIRootCheckpointLifecycleObserver?: OpenAIRootCheckpointLifecycleObserver;
33
15
  generationGuard: GenerationGuard;
34
- /** Assistant-output journal; every raw run item is fed into it. */
35
- journal: AssistantTurnJournal;
36
16
  /** Cancels provider work when the output safety guard terminates a stream. */
37
17
  abortStream?: () => void;
38
18
  toolCallMarkers?: ToolCallMarkerStore;
@@ -48,14 +28,8 @@ export declare class SessionStreamProcessor {
48
28
  private readonly deps;
49
29
  constructor(deps: SessionStreamProcessorDeps);
50
30
  /**
51
- * Processes the AgentStream, records function calls/results,
52
- * dedupes tool started events, logs tool results, and returns the accumulator.
31
+ * Projects accepted events, dedupes display events and returns presentation data.
53
32
  */
54
33
  process(stream: AgentStream, options: StreamProcessOptions): AsyncGenerator<ConversationEvent, StreamAccumulator, void>;
55
- /**
56
- * Finalizes the stream outcome by updating previousResponseId,
57
- * checking for replayed tools, and updating the conversation store history.
58
- */
59
- finalize(stream: AgentStream, token: GenerationToken, inputMode: 'delta' | 'full_history', source: StreamHistorySource): StreamFinalizationResult;
60
34
  }
61
35
  //# sourceMappingURL=session-stream-processor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-stream-processor.d.ts","sourceRoot":"","sources":["../../../source/services/session/session-stream-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,iDAAiD,CAAC;AAC7G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAgD,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAQpH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AACxF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAE1F,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC;AAuC1B,eAAO,MAAM,oBAAoB,UAAW,SAAS,OAAO,EAAE,KAAG,kBAAkB,GAAG,SAcrF,CAAC;AAqGF,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,eAAe,CAAC;IAC3B,WAAW,EAAE,kBAAkB,CAAC;IAChC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,8EAA8E;IAC9E,qCAAqC,CAAC,EAAE,qCAAqC,CAAC;IAC9E,eAAe,EAAE,eAAe,CAAC;IACjC,mEAAmE;IACnE,OAAO,EAAE,oBAAoB,CAAC;IAC9B,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,eAAe,CAAC,EAAE,mBAAmB,CAAC;CACvC;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,mBAAmB,CAAC;IAC5B,wBAAwB,EAAE,OAAO,CAAC;IAClC,2BAA2B,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC3C;AAED,qBAAa,sBAAsB;;IAGrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,0BAA0B,EAE5D;IAED;;;OAGG;IACI,OAAO,CACZ,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,oBAAoB,GAC5B,cAAc,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,IAAI,CAAC,CA2H5D;IAED;;;OAGG;IACH,QAAQ,CACN,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,OAAO,GAAG,cAAc,EACnC,MAAM,EAAE,mBAAmB,GAC1B,wBAAwB,CAgH1B;CAWF"}
1
+ {"version":3,"file":"session-stream-processor.d.ts","sourceRoot":"","sources":["../../../source/services/session/session-stream-processor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAgD,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACpH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AACxF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACzF,YAAY,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AAEzF,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,eAAe,CAAC;IAC3B,WAAW,EAAE,kBAAkB,CAAC;IAChC,eAAe,EAAE,eAAe,CAAC;IACjC,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,eAAe,CAAC,EAAE,mBAAmB,CAAC;CACvC;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,mBAAmB,CAAC;IAC5B,wBAAwB,EAAE,OAAO,CAAC;IAClC,2BAA2B,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC3C;AAED,qBAAa,sBAAsB;;IAGrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,0BAA0B,EAE5D;IAED;;OAEG;IACI,OAAO,CACZ,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,oBAAoB,GAC5B,cAAc,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAwE5D;CACF"}