@dexto/core 1.6.25 → 1.6.27

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 (150) hide show
  1. package/dist/agent/DextoAgent.cjs +102 -104
  2. package/dist/agent/DextoAgent.d.ts +11 -10
  3. package/dist/agent/DextoAgent.d.ts.map +1 -1
  4. package/dist/agent/DextoAgent.js +103 -105
  5. package/dist/agent/error-codes.cjs +1 -0
  6. package/dist/agent/error-codes.d.ts +1 -0
  7. package/dist/agent/error-codes.d.ts.map +1 -1
  8. package/dist/agent/error-codes.js +1 -0
  9. package/dist/agent/errors.cjs +13 -0
  10. package/dist/agent/errors.d.ts +6 -0
  11. package/dist/agent/errors.d.ts.map +1 -1
  12. package/dist/agent/errors.js +13 -0
  13. package/dist/agent/index.d.ts +1 -0
  14. package/dist/agent/index.d.ts.map +1 -1
  15. package/dist/agent/schemas.d.ts +2 -2
  16. package/dist/agent/types.d.ts +11 -0
  17. package/dist/agent/types.d.ts.map +1 -1
  18. package/dist/approval/factory.cjs +1 -0
  19. package/dist/approval/factory.d.ts.map +1 -1
  20. package/dist/approval/factory.js +1 -0
  21. package/dist/approval/manager.cjs +345 -182
  22. package/dist/approval/manager.d.ts +45 -31
  23. package/dist/approval/manager.d.ts.map +1 -1
  24. package/dist/approval/manager.js +345 -182
  25. package/dist/approval/schemas.cjs +10 -0
  26. package/dist/approval/schemas.d.ts +305 -0
  27. package/dist/approval/schemas.d.ts.map +1 -1
  28. package/dist/approval/schemas.js +10 -0
  29. package/dist/approval/session-approval-store.cjs +91 -0
  30. package/dist/approval/session-approval-store.d.ts +55 -0
  31. package/dist/approval/session-approval-store.d.ts.map +1 -0
  32. package/dist/approval/session-approval-store.js +68 -0
  33. package/dist/events/index.cjs +210 -75
  34. package/dist/events/index.d.ts +44 -181
  35. package/dist/events/index.d.ts.map +1 -1
  36. package/dist/events/index.js +206 -74
  37. package/dist/hooks/manager.cjs +5 -2
  38. package/dist/hooks/manager.d.ts +2 -0
  39. package/dist/hooks/manager.d.ts.map +1 -1
  40. package/dist/hooks/manager.js +5 -2
  41. package/dist/hooks/types.d.ts +3 -0
  42. package/dist/hooks/types.d.ts.map +1 -1
  43. package/dist/index.browser.d.ts +1 -0
  44. package/dist/index.browser.d.ts.map +1 -1
  45. package/dist/index.cjs +3 -1
  46. package/dist/index.d.ts +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +1 -0
  49. package/dist/llm/executor/turn-executor.cjs +15 -7
  50. package/dist/llm/executor/turn-executor.d.ts +3 -1
  51. package/dist/llm/executor/turn-executor.d.ts.map +1 -1
  52. package/dist/llm/executor/turn-executor.js +15 -7
  53. package/dist/llm/services/factory.cjs +10 -4
  54. package/dist/llm/services/factory.d.ts +2 -21
  55. package/dist/llm/services/factory.d.ts.map +1 -1
  56. package/dist/llm/services/factory.js +11 -7
  57. package/dist/llm/services/types.d.ts +33 -2
  58. package/dist/llm/services/types.d.ts.map +1 -1
  59. package/dist/llm/services/vercel.cjs +33 -11
  60. package/dist/llm/services/vercel.d.ts +6 -3
  61. package/dist/llm/services/vercel.d.ts.map +1 -1
  62. package/dist/llm/services/vercel.js +29 -8
  63. package/dist/logger/default-logger-factory.d.ts +12 -12
  64. package/dist/logger/v2/schemas.d.ts +6 -6
  65. package/dist/mcp/manager.cjs +7 -2
  66. package/dist/mcp/manager.d.ts +3 -1
  67. package/dist/mcp/manager.d.ts.map +1 -1
  68. package/dist/mcp/manager.js +7 -2
  69. package/dist/mcp/mcp-client.cjs +71 -62
  70. package/dist/mcp/mcp-client.d.ts +3 -2
  71. package/dist/mcp/mcp-client.d.ts.map +1 -1
  72. package/dist/mcp/mcp-client.js +71 -62
  73. package/dist/mcp/schemas.d.ts +10 -10
  74. package/dist/resources/handlers/filesystem-handler.cjs +22 -3
  75. package/dist/resources/handlers/filesystem-handler.d.ts.map +1 -1
  76. package/dist/resources/handlers/filesystem-handler.js +22 -3
  77. package/dist/runtime/host-runtime.cjs +163 -0
  78. package/dist/runtime/host-runtime.d.ts +23 -0
  79. package/dist/runtime/host-runtime.d.ts.map +1 -0
  80. package/dist/runtime/host-runtime.js +133 -0
  81. package/dist/runtime/index.cjs +42 -0
  82. package/dist/runtime/index.d.ts +2 -0
  83. package/dist/runtime/index.d.ts.map +1 -0
  84. package/dist/runtime/index.js +21 -0
  85. package/dist/runtime/run-context.cjs +53 -0
  86. package/dist/runtime/run-context.d.ts +13 -0
  87. package/dist/runtime/run-context.d.ts.map +1 -0
  88. package/dist/runtime/run-context.js +34 -0
  89. package/dist/session/chat-session.cjs +67 -71
  90. package/dist/session/chat-session.d.ts +25 -25
  91. package/dist/session/chat-session.d.ts.map +1 -1
  92. package/dist/session/chat-session.js +68 -72
  93. package/dist/session/error-codes.cjs +1 -0
  94. package/dist/session/error-codes.d.ts +2 -1
  95. package/dist/session/error-codes.d.ts.map +1 -1
  96. package/dist/session/error-codes.js +1 -0
  97. package/dist/session/errors.cjs +13 -0
  98. package/dist/session/errors.d.ts +6 -0
  99. package/dist/session/errors.d.ts.map +1 -1
  100. package/dist/session/errors.js +13 -0
  101. package/dist/session/message-queue-store.cjs +75 -0
  102. package/dist/session/message-queue-store.d.ts +16 -0
  103. package/dist/session/message-queue-store.d.ts.map +1 -0
  104. package/dist/session/message-queue-store.js +52 -0
  105. package/dist/session/message-queue.cjs +140 -46
  106. package/dist/session/message-queue.d.ts +18 -6
  107. package/dist/session/message-queue.d.ts.map +1 -1
  108. package/dist/session/message-queue.js +140 -46
  109. package/dist/session/session-manager.cjs +130 -25
  110. package/dist/session/session-manager.d.ts +18 -1
  111. package/dist/session/session-manager.d.ts.map +1 -1
  112. package/dist/session/session-manager.js +130 -25
  113. package/dist/session/title-generator.cjs +9 -2
  114. package/dist/session/title-generator.d.ts +2 -0
  115. package/dist/session/title-generator.d.ts.map +1 -1
  116. package/dist/session/title-generator.js +9 -2
  117. package/dist/telemetry/decorators.cjs +75 -57
  118. package/dist/telemetry/decorators.d.ts +2 -0
  119. package/dist/telemetry/decorators.d.ts.map +1 -1
  120. package/dist/telemetry/decorators.js +75 -57
  121. package/dist/telemetry/errors.cjs +2 -2
  122. package/dist/telemetry/errors.js +2 -2
  123. package/dist/telemetry/index.d.ts +1 -1
  124. package/dist/telemetry/index.d.ts.map +1 -1
  125. package/dist/telemetry/index.js +3 -1
  126. package/dist/telemetry/telemetry.cjs +62 -21
  127. package/dist/telemetry/telemetry.d.ts +14 -0
  128. package/dist/telemetry/telemetry.d.ts.map +1 -1
  129. package/dist/telemetry/telemetry.js +62 -21
  130. package/dist/telemetry/utils.cjs +9 -6
  131. package/dist/telemetry/utils.d.ts +3 -0
  132. package/dist/telemetry/utils.d.ts.map +1 -1
  133. package/dist/telemetry/utils.js +9 -6
  134. package/dist/test-utils/session-state-stores.cjs +68 -0
  135. package/dist/test-utils/session-state-stores.js +42 -0
  136. package/dist/tools/session-tool-preferences-store.cjs +86 -0
  137. package/dist/tools/session-tool-preferences-store.d.ts +29 -0
  138. package/dist/tools/session-tool-preferences-store.d.ts.map +1 -0
  139. package/dist/tools/session-tool-preferences-store.js +63 -0
  140. package/dist/tools/tool-manager.cjs +223 -68
  141. package/dist/tools/tool-manager.d.ts +29 -9
  142. package/dist/tools/tool-manager.d.ts.map +1 -1
  143. package/dist/tools/tool-manager.js +223 -68
  144. package/dist/tools/types.d.ts +7 -1
  145. package/dist/tools/types.d.ts.map +1 -1
  146. package/dist/utils/service-initializer.cjs +38 -5
  147. package/dist/utils/service-initializer.d.ts +11 -1
  148. package/dist/utils/service-initializer.d.ts.map +1 -1
  149. package/dist/utils/service-initializer.js +36 -4
  150. package/package.json +1 -1
@@ -46,11 +46,13 @@ class SessionManager {
46
46
  this.maxSessions = config.maxSessions ?? 100;
47
47
  this.sessionTTL = config.sessionTTL ?? 36e5;
48
48
  this.sessionLoggerFactory = config.sessionLoggerFactory ?? defaultSessionLoggerFactory;
49
+ this.languageModelFactory = config.languageModelFactory;
49
50
  this.logger = logger.createChild(import_types.DextoLogComponent.SESSION);
50
51
  }
51
52
  sessions = /* @__PURE__ */ new Map();
52
53
  maxSessions;
53
54
  sessionTTL;
55
+ static MESSAGE_QUEUE_KEY_PREFIX = "session-message-queue:";
54
56
  initialized = false;
55
57
  cleanupInterval;
56
58
  initializationPromise;
@@ -64,6 +66,16 @@ class SessionManager {
64
66
  static FORK_TITLE_PREFIX = "Fork: ";
65
67
  static FORK_PARENT_ID_PREVIEW_LENGTH = 8;
66
68
  sessionLoggerFactory;
69
+ languageModelFactory;
70
+ getChatSessionServices() {
71
+ return {
72
+ ...this.services,
73
+ sessionManager: this,
74
+ ...this.languageModelFactory !== void 0 && {
75
+ languageModelFactory: this.languageModelFactory
76
+ }
77
+ };
78
+ }
67
79
  /**
68
80
  * Initialize the SessionManager with persistent storage.
69
81
  * This must be called before using any session operations.
@@ -72,6 +84,7 @@ class SessionManager {
72
84
  if (this.initialized) {
73
85
  return;
74
86
  }
87
+ await this.clearPersistedQueuedMessages("startup");
75
88
  await this.restoreSessionsFromStorage();
76
89
  const cleanupIntervalMs = Math.min(this.sessionTTL / 4, 15 * 60 * 1e3);
77
90
  this.cleanupInterval = setInterval(
@@ -102,7 +115,11 @@ class SessionManager {
102
115
  if (now - lastActivity <= this.sessionTTL) {
103
116
  this.logger.debug(`Session ${sessionId} restored from storage`);
104
117
  } else {
105
- await this.services.storageManager.getDatabase().delete(sessionKey);
118
+ await Promise.all([
119
+ this.services.storageManager.getDatabase().delete(sessionKey),
120
+ this.services.storageManager.getCache().delete(sessionKey),
121
+ this.deleteSessionInteractionState(sessionId)
122
+ ]);
106
123
  this.logger.debug(`Expired session ${sessionId} cleaned up during restore`);
107
124
  }
108
125
  }
@@ -113,6 +130,31 @@ class SessionManager {
113
130
  );
114
131
  }
115
132
  }
133
+ async clearPersistedQueuedMessages(reason) {
134
+ try {
135
+ const queueKeys = await this.services.storageManager.getDatabase().list(SessionManager.MESSAGE_QUEUE_KEY_PREFIX);
136
+ if (queueKeys.length === 0) {
137
+ return;
138
+ }
139
+ await Promise.all(
140
+ queueKeys.map(
141
+ (key) => this.services.messageQueueStore.delete(
142
+ key.slice(SessionManager.MESSAGE_QUEUE_KEY_PREFIX.length)
143
+ )
144
+ )
145
+ );
146
+ const message = `${reason === "startup" ? "Cleared stale queued follow-up state from previous agent run" : "Cleared queued follow-up state during agent shutdown"} (${queueKeys.length} session bucket(s))`;
147
+ if (reason === "startup") {
148
+ this.logger.info(message);
149
+ } else {
150
+ this.logger.debug(message);
151
+ }
152
+ } catch (error) {
153
+ this.logger.warn(
154
+ `Failed to clear persisted queued follow-up state during ${reason}: ${error instanceof Error ? error.message : String(error)}`
155
+ );
156
+ }
157
+ }
116
158
  /**
117
159
  * Ensures the SessionManager is initialized before operations.
118
160
  */
@@ -304,12 +346,10 @@ class SessionManager {
304
346
  this.services.stateManager.updateLLM(restoredConfig, id);
305
347
  }
306
348
  }
307
- const session2 = new import_chat_session.ChatSession(
308
- { ...this.services, sessionManager: this },
309
- id,
310
- sessionLogger
311
- );
349
+ const session2 = new import_chat_session.ChatSession(this.getChatSessionServices(), id, sessionLogger);
312
350
  await session2.init();
351
+ await this.services.toolManager.restoreSessionState(id);
352
+ await this.services.approvalManager.restoreSessionState(id);
313
353
  this.sessions.set(id, session2);
314
354
  this.logger.info(`Restored session from storage: ${id}`);
315
355
  return session2;
@@ -318,6 +358,7 @@ class SessionManager {
318
358
  if (activeSessionKeys.length >= this.maxSessions) {
319
359
  throw import_errors.SessionError.maxSessionsExceeded(activeSessionKeys.length, this.maxSessions);
320
360
  }
361
+ await this.deleteSessionInteractionState(id);
321
362
  const workspace = await this.services.workspaceManager?.getWorkspace();
322
363
  const sessionData = {
323
364
  id,
@@ -343,11 +384,7 @@ class SessionManager {
343
384
  agentId,
344
385
  sessionId: id
345
386
  });
346
- session = new import_chat_session.ChatSession(
347
- { ...this.services, sessionManager: this },
348
- id,
349
- sessionLogger
350
- );
387
+ session = new import_chat_session.ChatSession(this.getChatSessionServices(), id, sessionLogger);
351
388
  await session.init();
352
389
  this.sessions.set(id, session);
353
390
  await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
@@ -406,11 +443,13 @@ class SessionManager {
406
443
  }
407
444
  }
408
445
  const session = new import_chat_session.ChatSession(
409
- { ...this.services, sessionManager: this },
446
+ this.getChatSessionServices(),
410
447
  sessionId,
411
448
  sessionLogger
412
449
  );
413
450
  await session.init();
451
+ await this.services.toolManager.restoreSessionState(sessionId);
452
+ await this.services.approvalManager.restoreSessionState(sessionId);
414
453
  this.sessions.set(sessionId, session);
415
454
  return session;
416
455
  }
@@ -432,6 +471,7 @@ class SessionManager {
432
471
  }
433
472
  const sessionKey = `session:${sessionId}`;
434
473
  await this.services.storageManager.getCache().delete(sessionKey);
474
+ this.evictSessionInteractionState(sessionId);
435
475
  this.logger.debug(
436
476
  `Ended session (removed from memory, chat history preserved): ${sessionId}`
437
477
  );
@@ -452,12 +492,13 @@ class SessionManager {
452
492
  const sessionKey = `session:${sessionId}`;
453
493
  await this.services.storageManager.getDatabase().delete(sessionKey);
454
494
  await this.services.storageManager.getCache().delete(sessionKey);
495
+ await this.deleteSessionInteractionState(sessionId);
455
496
  const messagesKey = `messages:${sessionId}`;
456
497
  await this.services.storageManager.getDatabase().delete(messagesKey);
457
498
  this.logger.debug(`Deleted session and conversation history: ${sessionId}`);
458
499
  }
459
500
  /**
460
- * Resets the conversation history for a session while keeping the session alive.
501
+ * Resets conversation and session-scoped interaction state while keeping the session alive.
461
502
  *
462
503
  * @param sessionId The session ID to reset
463
504
  * @throws Error if session doesn't exist
@@ -469,6 +510,15 @@ class SessionManager {
469
510
  throw import_errors.SessionError.notFound(sessionId);
470
511
  }
471
512
  await session.reset();
513
+ await session.clearMessageQueue();
514
+ await Promise.all([
515
+ this.services.toolManager.deleteSessionState(sessionId),
516
+ this.services.approvalManager.deleteSessionState(sessionId)
517
+ ]);
518
+ if (this.services.stateManager.hasSessionLLMOverride(sessionId)) {
519
+ this.services.stateManager.clearSessionOverride(sessionId);
520
+ await session.switchLLM(this.services.stateManager.getRuntimeConfig().llm);
521
+ }
472
522
  await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
473
523
  const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
474
524
  if (!sessionData) {
@@ -476,6 +526,7 @@ class SessionManager {
476
526
  }
477
527
  sessionData.messageCount = 0;
478
528
  sessionData.lastActivity = Date.now();
529
+ delete sessionData.llmOverride;
479
530
  await this.persistSessionData(sessionKey, sessionData);
480
531
  });
481
532
  this.logger.debug(`Reset session conversation: ${sessionId}`);
@@ -766,6 +817,7 @@ class SessionManager {
766
817
  if (session) {
767
818
  session.dispose();
768
819
  this.sessions.delete(sessionId);
820
+ this.evictSessionInteractionState(sessionId);
769
821
  this.logger.debug(
770
822
  `Removed expired session from memory: ${sessionId} (chat history preserved)`
771
823
  );
@@ -790,8 +842,7 @@ class SessionManager {
790
842
  const session = await this.getSession(sId);
791
843
  if (session) {
792
844
  try {
793
- this.services.stateManager.updateLLM(newLLMConfig, sId);
794
- await session.switchLLM(newLLMConfig);
845
+ await this.applySessionLLMSwitch(sId, session, newLLMConfig);
795
846
  } catch (error) {
796
847
  failedSessions.push(sId);
797
848
  this.logger.warn(
@@ -820,16 +871,7 @@ class SessionManager {
820
871
  if (!session) {
821
872
  throw import_errors.SessionError.notFound(sessionId);
822
873
  }
823
- await session.switchLLM(newLLMConfig);
824
- await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
825
- const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
826
- if (!sessionData) {
827
- return;
828
- }
829
- const { apiKey: _apiKey, ...configWithoutApiKey } = newLLMConfig;
830
- sessionData.llmOverride = configWithoutApiKey;
831
- await this.persistSessionData(sessionKey, sessionData);
832
- });
874
+ await this.applySessionLLMSwitch(sessionId, session, newLLMConfig);
833
875
  this.services.agentEventBus.emit("llm:switched", {
834
876
  newConfig: newLLMConfig,
835
877
  historyRetained: true,
@@ -838,6 +880,68 @@ class SessionManager {
838
880
  const message = `Successfully switched to ${newLLMConfig.provider}/${newLLMConfig.model} for session ${sessionId}`;
839
881
  return { message, warnings: [] };
840
882
  }
883
+ async applySessionLLMSwitch(sessionId, session, newLLMConfig) {
884
+ const previousLLMConfig = this.services.stateManager.getRuntimeConfig(sessionId).llm;
885
+ const previousHadOverride = this.services.stateManager.hasSessionLLMOverride(sessionId);
886
+ const previousPersistedOverride = await this.getPersistedSessionLLMOverride(sessionId);
887
+ await this.setPersistedSessionLLMOverride(
888
+ sessionId,
889
+ this.toPersistedLLMConfig(newLLMConfig)
890
+ );
891
+ try {
892
+ this.services.stateManager.updateLLM(newLLMConfig, sessionId);
893
+ await session.switchLLM(newLLMConfig);
894
+ } catch (error) {
895
+ await this.setPersistedSessionLLMOverride(sessionId, previousPersistedOverride);
896
+ if (previousHadOverride) {
897
+ this.services.stateManager.updateLLM(previousLLMConfig, sessionId);
898
+ } else {
899
+ this.services.stateManager.clearSessionOverride(sessionId);
900
+ }
901
+ try {
902
+ await session.switchLLM(previousLLMConfig);
903
+ } catch (rollbackError) {
904
+ this.logger.error(
905
+ `Failed to roll back LLM switch for session ${sessionId}: ${rollbackError instanceof Error ? rollbackError.message : String(rollbackError)}`
906
+ );
907
+ }
908
+ throw error;
909
+ }
910
+ }
911
+ async getPersistedSessionLLMOverride(sessionId) {
912
+ const sessionData = await this.getSessionData(sessionId);
913
+ return sessionData?.llmOverride;
914
+ }
915
+ toPersistedLLMConfig(newLLMConfig) {
916
+ const { apiKey: _apiKey, ...configWithoutApiKey } = newLLMConfig;
917
+ return configWithoutApiKey;
918
+ }
919
+ async setPersistedSessionLLMOverride(sessionId, llmOverride) {
920
+ await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
921
+ const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
922
+ if (!sessionData) {
923
+ return;
924
+ }
925
+ if (llmOverride !== void 0) {
926
+ sessionData.llmOverride = llmOverride;
927
+ } else {
928
+ delete sessionData.llmOverride;
929
+ }
930
+ await this.persistSessionData(sessionKey, sessionData);
931
+ });
932
+ }
933
+ async deleteSessionInteractionState(sessionId) {
934
+ this.services.stateManager.clearSessionOverride(sessionId);
935
+ await Promise.all([
936
+ this.services.toolManager.deleteSessionState(sessionId),
937
+ this.services.approvalManager.deleteSessionState(sessionId),
938
+ this.services.messageQueueStore.delete(sessionId)
939
+ ]);
940
+ }
941
+ evictSessionInteractionState(sessionId) {
942
+ this.services.toolManager.evictSessionState(sessionId);
943
+ this.services.approvalManager.evictSessionState(sessionId);
944
+ }
841
945
  async runWithSessionDataLock(sessionId, fn) {
842
946
  const sessionKey = `session:${sessionId}`;
843
947
  const previousLock = this.sessionDataLocks.get(sessionKey) ?? Promise.resolve();
@@ -898,6 +1002,7 @@ class SessionManager {
898
1002
  delete this.cleanupInterval;
899
1003
  this.logger.debug("Periodic session cleanup stopped");
900
1004
  }
1005
+ await this.clearPersistedQueuedMessages("shutdown");
901
1006
  const sessionIds = Array.from(this.sessions.keys());
902
1007
  for (const sessionId of sessionIds) {
903
1008
  try {
@@ -7,9 +7,12 @@ import type { AgentStateManager } from '../agent/state-manager.js';
7
7
  import type { ValidatedLLMConfig } from '../llm/schemas.js';
8
8
  import type { StorageManager } from '../storage/index.js';
9
9
  import type { HookManager } from '../hooks/manager.js';
10
+ import type { ApprovalManager } from '../approval/manager.js';
10
11
  import type { TokenUsage } from '../llm/types.js';
12
+ import type { LanguageModelFactory } from '../llm/services/types.js';
11
13
  import type { CompactionStrategy } from '../context/compaction/types.js';
12
14
  import { type SessionPromptContributor } from '../systemPrompt/schemas.js';
15
+ import type { MessageQueueStore } from './message-queue-store.js';
13
16
  export type SessionLoggerFactory = (options: {
14
17
  baseLogger: Logger;
15
18
  agentId: string;
@@ -52,6 +55,8 @@ export interface SessionManagerConfig {
52
55
  sessionTTL?: number;
53
56
  /** Host hook for creating a session-scoped logger (e.g. file logger) */
54
57
  sessionLoggerFactory?: SessionLoggerFactory;
58
+ /** Host hook for constructing session-scoped LanguageModel instances */
59
+ languageModelFactory?: LanguageModelFactory;
55
60
  }
56
61
  type PersistedLLMConfig = Omit<ValidatedLLMConfig, 'apiKey'>;
57
62
  export interface SessionData {
@@ -91,6 +96,7 @@ export declare class SessionManager {
91
96
  private sessions;
92
97
  private readonly maxSessions;
93
98
  private readonly sessionTTL;
99
+ private static readonly MESSAGE_QUEUE_KEY_PREFIX;
94
100
  private initialized;
95
101
  private cleanupInterval?;
96
102
  private initializationPromise;
@@ -102,18 +108,22 @@ export declare class SessionManager {
102
108
  private static readonly FORK_TITLE_PREFIX;
103
109
  private static readonly FORK_PARENT_ID_PREVIEW_LENGTH;
104
110
  private readonly sessionLoggerFactory;
111
+ private readonly languageModelFactory;
105
112
  constructor(services: {
106
113
  stateManager: AgentStateManager;
107
114
  systemPromptManager: SystemPromptManager;
108
115
  toolManager: ToolManager;
116
+ approvalManager: ApprovalManager;
109
117
  agentEventBus: AgentEventBus;
110
118
  storageManager: StorageManager;
111
119
  resourceManager: import('../resources/index.js').ResourceManager;
112
120
  hookManager: HookManager;
113
121
  mcpManager: import('../mcp/manager.js').MCPManager;
122
+ messageQueueStore: Pick<MessageQueueStore, 'load' | 'save' | 'delete'>;
114
123
  compactionStrategy: CompactionStrategy | null;
115
124
  workspaceManager?: import('../workspace/manager.js').WorkspaceManager;
116
125
  }, config: SessionManagerConfig | undefined, logger: Logger);
126
+ private getChatSessionServices;
117
127
  /**
118
128
  * Initialize the SessionManager with persistent storage.
119
129
  * This must be called before using any session operations.
@@ -124,6 +134,7 @@ export declare class SessionManager {
124
134
  * This allows sessions to survive application restarts.
125
135
  */
126
136
  private restoreSessionsFromStorage;
137
+ private clearPersistedQueuedMessages;
127
138
  /**
128
139
  * Ensures the SessionManager is initialized before operations.
129
140
  */
@@ -178,7 +189,7 @@ export declare class SessionManager {
178
189
  */
179
190
  deleteSession(sessionId: string): Promise<void>;
180
191
  /**
181
- * Resets the conversation history for a session while keeping the session alive.
192
+ * Resets conversation and session-scoped interaction state while keeping the session alive.
182
193
  *
183
194
  * @param sessionId The session ID to reset
184
195
  * @throws Error if session doesn't exist
@@ -276,6 +287,12 @@ export declare class SessionManager {
276
287
  message: string;
277
288
  warnings: string[];
278
289
  }>;
290
+ private applySessionLLMSwitch;
291
+ private getPersistedSessionLLMOverride;
292
+ private toPersistedLLMConfig;
293
+ private setPersistedSessionLLMOverride;
294
+ private deleteSessionInteractionState;
295
+ private evictSessionInteractionState;
279
296
  private runWithSessionDataLock;
280
297
  private persistSessionData;
281
298
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"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"}