@dexto/core 1.6.16 → 1.6.18

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 (90) hide show
  1. package/dist/agent/DextoAgent.cjs +84 -11
  2. package/dist/agent/DextoAgent.d.ts +12 -1
  3. package/dist/agent/DextoAgent.d.ts.map +1 -1
  4. package/dist/agent/DextoAgent.js +77 -4
  5. package/dist/agent/runtime-config.d.ts +2 -0
  6. package/dist/agent/runtime-config.d.ts.map +1 -1
  7. package/dist/agent/types.d.ts +7 -0
  8. package/dist/agent/types.d.ts.map +1 -1
  9. package/dist/context/manager.cjs +6 -1
  10. package/dist/context/manager.d.ts +3 -0
  11. package/dist/context/manager.d.ts.map +1 -1
  12. package/dist/context/manager.js +6 -1
  13. package/dist/context/types.d.ts +7 -1
  14. package/dist/context/types.d.ts.map +1 -1
  15. package/dist/events/index.d.ts +19 -17
  16. package/dist/events/index.d.ts.map +1 -1
  17. package/dist/llm/executor/stream-processor.cjs +63 -17
  18. package/dist/llm/executor/stream-processor.d.ts +3 -0
  19. package/dist/llm/executor/stream-processor.d.ts.map +1 -1
  20. package/dist/llm/executor/stream-processor.js +63 -17
  21. package/dist/llm/executor/turn-executor.cjs +3 -0
  22. package/dist/llm/executor/turn-executor.d.ts +1 -0
  23. package/dist/llm/executor/turn-executor.d.ts.map +1 -1
  24. package/dist/llm/executor/turn-executor.js +3 -0
  25. package/dist/llm/index.cjs +6 -0
  26. package/dist/llm/index.d.ts +3 -0
  27. package/dist/llm/index.d.ts.map +1 -1
  28. package/dist/llm/index.js +3 -0
  29. package/dist/llm/registry/index.cjs +18 -6
  30. package/dist/llm/registry/index.d.ts +9 -0
  31. package/dist/llm/registry/index.d.ts.map +1 -1
  32. package/dist/llm/registry/index.js +17 -6
  33. package/dist/llm/services/factory.cjs +3 -1
  34. package/dist/llm/services/factory.d.ts +7 -3
  35. package/dist/llm/services/factory.d.ts.map +1 -1
  36. package/dist/llm/services/factory.js +3 -1
  37. package/dist/llm/services/types.d.ts +2 -0
  38. package/dist/llm/services/types.d.ts.map +1 -1
  39. package/dist/llm/services/vercel.cjs +4 -1
  40. package/dist/llm/services/vercel.d.ts +2 -1
  41. package/dist/llm/services/vercel.d.ts.map +1 -1
  42. package/dist/llm/services/vercel.js +4 -1
  43. package/dist/llm/types.cjs +3 -0
  44. package/dist/llm/types.d.ts +2 -0
  45. package/dist/llm/types.d.ts.map +1 -1
  46. package/dist/llm/types.js +2 -0
  47. package/dist/llm/usage-metadata.cjs +50 -0
  48. package/dist/llm/usage-metadata.d.ts +12 -0
  49. package/dist/llm/usage-metadata.d.ts.map +1 -0
  50. package/dist/llm/usage-metadata.js +26 -0
  51. package/dist/llm/usage-scope.cjs +29 -0
  52. package/dist/llm/usage-scope.d.ts +4 -0
  53. package/dist/llm/usage-scope.d.ts.map +1 -0
  54. package/dist/llm/usage-scope.js +6 -0
  55. package/dist/llm/usage-summary.cjs +112 -0
  56. package/dist/llm/usage-summary.d.ts +28 -0
  57. package/dist/llm/usage-summary.d.ts.map +1 -0
  58. package/dist/llm/usage-summary.js +86 -0
  59. package/dist/mcp/bundled-config.cjs +206 -0
  60. package/dist/mcp/bundled-config.d.ts +10 -0
  61. package/dist/mcp/bundled-config.d.ts.map +1 -0
  62. package/dist/mcp/bundled-config.js +173 -0
  63. package/dist/mcp/index.cjs +43 -15
  64. package/dist/mcp/index.d.ts +11 -7
  65. package/dist/mcp/index.d.ts.map +1 -1
  66. package/dist/mcp/index.js +35 -7
  67. package/dist/prompts/providers/config-prompt-provider.cjs +15 -1
  68. package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
  69. package/dist/prompts/providers/config-prompt-provider.js +15 -1
  70. package/dist/session/chat-session.cjs +30 -19
  71. package/dist/session/chat-session.d.ts +0 -1
  72. package/dist/session/chat-session.d.ts.map +1 -1
  73. package/dist/session/chat-session.js +30 -19
  74. package/dist/session/session-manager.cjs +140 -67
  75. package/dist/session/session-manager.d.ts +8 -1
  76. package/dist/session/session-manager.d.ts.map +1 -1
  77. package/dist/session/session-manager.js +142 -67
  78. package/dist/systemPrompt/manager.cjs +7 -1
  79. package/dist/systemPrompt/manager.d.ts.map +1 -1
  80. package/dist/systemPrompt/manager.js +7 -1
  81. package/dist/systemPrompt/schemas.cjs +7 -0
  82. package/dist/systemPrompt/schemas.d.ts +14 -0
  83. package/dist/systemPrompt/schemas.d.ts.map +1 -1
  84. package/dist/systemPrompt/schemas.js +6 -0
  85. package/dist/systemPrompt/types.d.ts +2 -0
  86. package/dist/systemPrompt/types.d.ts.map +1 -1
  87. package/dist/tools/tool-manager.cjs +20 -1
  88. package/dist/tools/tool-manager.d.ts.map +1 -1
  89. package/dist/tools/tool-manager.js +21 -2
  90. package/package.json +2 -1
@@ -21,13 +21,14 @@ __export(chat_session_exports, {
21
21
  ChatSession: () => ChatSession
22
22
  });
23
23
  module.exports = __toCommonJS(chat_session_exports);
24
+ var import_crypto = require("crypto");
24
25
  var import_factory = require("./history/factory.js");
25
26
  var import_factory2 = require("../llm/services/factory.js");
26
27
  var import_events = require("../events/index.js");
27
28
  var import_types = require("../logger/v2/types.js");
28
29
  var import_errors = require("../errors/index.js");
29
30
  var import_error_codes = require("../hooks/error-codes.js");
30
- var import_registry = require("../llm/registry/index.js");
31
+ var import_usage_metadata = require("../llm/usage-metadata.js");
31
32
  var import_codex_base_url = require("../llm/providers/codex-base-url.js");
32
33
  class ChatSession {
33
34
  /**
@@ -88,12 +89,6 @@ class ChatSession {
88
89
  * Calling cancel() aborts the in-flight LLM request and tool execution checks.
89
90
  */
90
91
  currentRunController = null;
91
- isMeaningfulTokenUsage(tokenUsage) {
92
- if (!tokenUsage) {
93
- return false;
94
- }
95
- return (tokenUsage.inputTokens ?? 0) > 0 || (tokenUsage.outputTokens ?? 0) > 0 || (tokenUsage.reasoningTokens ?? 0) > 0 || (tokenUsage.cacheReadTokens ?? 0) > 0 || (tokenUsage.cacheWriteTokens ?? 0) > 0 || (tokenUsage.totalTokens ?? 0) > 0;
96
- }
97
92
  logger;
98
93
  /**
99
94
  * Initialize the session services asynchronously.
@@ -133,7 +128,7 @@ class ChatSession {
133
128
  if (payload.tokenUsage) {
134
129
  const llmConfig = this.services.stateManager.getLLMConfig(this.id);
135
130
  const isChatGPTLogin = llmConfig.provider === "openai-compatible" && (0, import_codex_base_url.parseCodexBaseURL)(llmConfig.baseURL)?.authMode === "chatgpt";
136
- const hasMeaningfulUsage = this.isMeaningfulTokenUsage(payload.tokenUsage);
131
+ const hasMeaningfulUsage = (0, import_usage_metadata.hasMeaningfulTokenUsage)(payload.tokenUsage);
137
132
  if (isChatGPTLogin && !hasMeaningfulUsage) {
138
133
  this.services.sessionManager.markUntrackedChatGPTLoginUsage(this.id).catch((err) => {
139
134
  this.logger.warn(
@@ -146,12 +141,17 @@ class ChatSession {
146
141
  provider: payload.provider ?? llmConfig.provider,
147
142
  model: payload.model ?? llmConfig.model
148
143
  };
149
- let cost;
150
- const pricing = (0, import_registry.getModelPricing)(modelInfo.provider, modelInfo.model);
151
- if (pricing) {
152
- cost = (0, import_registry.calculateCost)(payload.tokenUsage, pricing);
153
- }
154
- this.services.sessionManager.accumulateTokenUsage(this.id, payload.tokenUsage, cost, modelInfo).catch((err) => {
144
+ const pricingMetadata = (0, import_usage_metadata.getUsagePricingMetadata)({
145
+ provider: modelInfo.provider,
146
+ model: modelInfo.model,
147
+ tokenUsage: payload.tokenUsage
148
+ });
149
+ this.services.sessionManager.accumulateTokenUsage(
150
+ this.id,
151
+ payload.tokenUsage,
152
+ payload.estimatedCost ?? pricingMetadata.estimatedCost,
153
+ modelInfo
154
+ ).catch((err) => {
155
155
  this.logger.warn(
156
156
  `Failed to accumulate token usage: ${err instanceof Error ? err.message : String(err)}`
157
157
  );
@@ -185,8 +185,10 @@ class ChatSession {
185
185
  // Pass ResourceManager for blob storage
186
186
  this.logger,
187
187
  // Pass logger for dependency injection
188
- compactionStrategy
189
- // Pass compaction strategy
188
+ {
189
+ usageScopeId: runtimeConfig.usageScopeId,
190
+ compactionStrategy
191
+ }
190
192
  );
191
193
  this.logger.debug(`ChatSession ${this.id}: Services initialized with storage`);
192
194
  }
@@ -202,13 +204,18 @@ class ChatSession {
202
204
  * @private
203
205
  */
204
206
  async saveBlockedInteraction(userInput, errorMessage, _imageData, _fileData) {
207
+ const timestamp = Date.now();
205
208
  const userMessage = {
209
+ id: (0, import_crypto.randomUUID)(),
206
210
  role: "user",
211
+ timestamp,
207
212
  content: [{ type: "text", text: "[Blocked by content policy: input redacted]" }]
208
213
  };
209
214
  const errorContent = `Error: ${errorMessage}`;
210
215
  const assistantMessage = {
216
+ id: (0, import_crypto.randomUUID)(),
211
217
  role: "assistant",
218
+ timestamp: timestamp + 1,
212
219
  content: [{ type: "text", text: errorContent }]
213
220
  };
214
221
  await this.historyProvider.saveMessage(userMessage);
@@ -217,7 +224,8 @@ class ChatSession {
217
224
  this.eventBus.emit("llm:response", {
218
225
  content: errorContent,
219
226
  provider: llmConfig.provider,
220
- model: llmConfig.model
227
+ model: llmConfig.model,
228
+ ...assistantMessage.id && { messageId: assistantMessage.id }
221
229
  });
222
230
  }
223
231
  /**
@@ -466,6 +474,7 @@ class ChatSession {
466
474
  */
467
475
  async switchLLM(newLLMConfig) {
468
476
  try {
477
+ const runtimeConfig = this.services.stateManager.getRuntimeConfig(this.id);
469
478
  const compactionStrategy = this.services.compactionStrategy;
470
479
  const newLLMService = (0, import_factory2.createLLMService)(
471
480
  newLLMConfig,
@@ -478,8 +487,10 @@ class ChatSession {
478
487
  this.id,
479
488
  this.services.resourceManager,
480
489
  this.logger,
481
- compactionStrategy
482
- // Pass compaction strategy
490
+ {
491
+ usageScopeId: runtimeConfig.usageScopeId,
492
+ compactionStrategy
493
+ }
483
494
  );
484
495
  this.llmService = newLLMService;
485
496
  this.logger.info(
@@ -98,7 +98,6 @@ export declare class ChatSession {
98
98
  * Calling cancel() aborts the in-flight LLM request and tool execution checks.
99
99
  */
100
100
  private currentRunController;
101
- private isMeaningfulTokenUsage;
102
101
  readonly logger: Logger;
103
102
  /**
104
103
  * Creates a new ChatSession instance.
@@ -1 +1 @@
1
- {"version":3,"file":"chat-session.d.ts","sourceRoot":"","sources":["../../src/session/chat-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-session.d.ts","sourceRoot":"","sources":["../../src/session/chat-session.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import "../chunk-PTJYTZNU.js";
2
+ import { randomUUID } from "crypto";
2
3
  import { createDatabaseHistoryProvider } from "./history/factory.js";
3
4
  import { createLLMService } from "../llm/services/factory.js";
4
5
  import {
@@ -8,7 +9,7 @@ import {
8
9
  import { DextoLogComponent } from "../logger/v2/types.js";
9
10
  import { DextoRuntimeError, ErrorScope, ErrorType } from "../errors/index.js";
10
11
  import { HookErrorCode } from "../hooks/error-codes.js";
11
- import { getModelPricing, calculateCost } from "../llm/registry/index.js";
12
+ import { getUsagePricingMetadata, hasMeaningfulTokenUsage } from "../llm/usage-metadata.js";
12
13
  import { parseCodexBaseURL } from "../llm/providers/codex-base-url.js";
13
14
  class ChatSession {
14
15
  /**
@@ -69,12 +70,6 @@ class ChatSession {
69
70
  * Calling cancel() aborts the in-flight LLM request and tool execution checks.
70
71
  */
71
72
  currentRunController = null;
72
- isMeaningfulTokenUsage(tokenUsage) {
73
- if (!tokenUsage) {
74
- return false;
75
- }
76
- return (tokenUsage.inputTokens ?? 0) > 0 || (tokenUsage.outputTokens ?? 0) > 0 || (tokenUsage.reasoningTokens ?? 0) > 0 || (tokenUsage.cacheReadTokens ?? 0) > 0 || (tokenUsage.cacheWriteTokens ?? 0) > 0 || (tokenUsage.totalTokens ?? 0) > 0;
77
- }
78
73
  logger;
79
74
  /**
80
75
  * Initialize the session services asynchronously.
@@ -114,7 +109,7 @@ class ChatSession {
114
109
  if (payload.tokenUsage) {
115
110
  const llmConfig = this.services.stateManager.getLLMConfig(this.id);
116
111
  const isChatGPTLogin = llmConfig.provider === "openai-compatible" && parseCodexBaseURL(llmConfig.baseURL)?.authMode === "chatgpt";
117
- const hasMeaningfulUsage = this.isMeaningfulTokenUsage(payload.tokenUsage);
112
+ const hasMeaningfulUsage = hasMeaningfulTokenUsage(payload.tokenUsage);
118
113
  if (isChatGPTLogin && !hasMeaningfulUsage) {
119
114
  this.services.sessionManager.markUntrackedChatGPTLoginUsage(this.id).catch((err) => {
120
115
  this.logger.warn(
@@ -127,12 +122,17 @@ class ChatSession {
127
122
  provider: payload.provider ?? llmConfig.provider,
128
123
  model: payload.model ?? llmConfig.model
129
124
  };
130
- let cost;
131
- const pricing = getModelPricing(modelInfo.provider, modelInfo.model);
132
- if (pricing) {
133
- cost = calculateCost(payload.tokenUsage, pricing);
134
- }
135
- this.services.sessionManager.accumulateTokenUsage(this.id, payload.tokenUsage, cost, modelInfo).catch((err) => {
125
+ const pricingMetadata = getUsagePricingMetadata({
126
+ provider: modelInfo.provider,
127
+ model: modelInfo.model,
128
+ tokenUsage: payload.tokenUsage
129
+ });
130
+ this.services.sessionManager.accumulateTokenUsage(
131
+ this.id,
132
+ payload.tokenUsage,
133
+ payload.estimatedCost ?? pricingMetadata.estimatedCost,
134
+ modelInfo
135
+ ).catch((err) => {
136
136
  this.logger.warn(
137
137
  `Failed to accumulate token usage: ${err instanceof Error ? err.message : String(err)}`
138
138
  );
@@ -166,8 +166,10 @@ class ChatSession {
166
166
  // Pass ResourceManager for blob storage
167
167
  this.logger,
168
168
  // Pass logger for dependency injection
169
- compactionStrategy
170
- // Pass compaction strategy
169
+ {
170
+ usageScopeId: runtimeConfig.usageScopeId,
171
+ compactionStrategy
172
+ }
171
173
  );
172
174
  this.logger.debug(`ChatSession ${this.id}: Services initialized with storage`);
173
175
  }
@@ -183,13 +185,18 @@ class ChatSession {
183
185
  * @private
184
186
  */
185
187
  async saveBlockedInteraction(userInput, errorMessage, _imageData, _fileData) {
188
+ const timestamp = Date.now();
186
189
  const userMessage = {
190
+ id: randomUUID(),
187
191
  role: "user",
192
+ timestamp,
188
193
  content: [{ type: "text", text: "[Blocked by content policy: input redacted]" }]
189
194
  };
190
195
  const errorContent = `Error: ${errorMessage}`;
191
196
  const assistantMessage = {
197
+ id: randomUUID(),
192
198
  role: "assistant",
199
+ timestamp: timestamp + 1,
193
200
  content: [{ type: "text", text: errorContent }]
194
201
  };
195
202
  await this.historyProvider.saveMessage(userMessage);
@@ -198,7 +205,8 @@ class ChatSession {
198
205
  this.eventBus.emit("llm:response", {
199
206
  content: errorContent,
200
207
  provider: llmConfig.provider,
201
- model: llmConfig.model
208
+ model: llmConfig.model,
209
+ ...assistantMessage.id && { messageId: assistantMessage.id }
202
210
  });
203
211
  }
204
212
  /**
@@ -447,6 +455,7 @@ class ChatSession {
447
455
  */
448
456
  async switchLLM(newLLMConfig) {
449
457
  try {
458
+ const runtimeConfig = this.services.stateManager.getRuntimeConfig(this.id);
450
459
  const compactionStrategy = this.services.compactionStrategy;
451
460
  const newLLMService = createLLMService(
452
461
  newLLMConfig,
@@ -459,8 +468,10 @@ class ChatSession {
459
468
  this.id,
460
469
  this.services.resourceManager,
461
470
  this.logger,
462
- compactionStrategy
463
- // Pass compaction strategy
471
+ {
472
+ usageScopeId: runtimeConfig.usageScopeId,
473
+ compactionStrategy
474
+ }
464
475
  );
465
476
  this.llmService = newLLMService;
466
477
  this.logger.info(
@@ -35,6 +35,8 @@ var import_crypto = require("crypto");
35
35
  var import_chat_session = require("./chat-session.js");
36
36
  var import_types = require("../logger/v2/types.js");
37
37
  var import_errors = require("./errors.js");
38
+ var import_zod = require("zod");
39
+ var import_schemas = require("../systemPrompt/schemas.js");
38
40
  function defaultSessionLoggerFactory(options) {
39
41
  return options.baseLogger.createChild(import_types.DextoLogComponent.SESSION);
40
42
  }
@@ -54,8 +56,8 @@ class SessionManager {
54
56
  initializationPromise;
55
57
  // Add a Map to track ongoing session creation operations to prevent race conditions
56
58
  pendingCreations = /* @__PURE__ */ new Map();
57
- // Per-session mutex for token usage updates to prevent lost updates from concurrent calls
58
- tokenUsageLocks = /* @__PURE__ */ new Map();
59
+ // Per-session mutex for any SessionData read-modify-write path.
60
+ sessionDataLocks = /* @__PURE__ */ new Map();
59
61
  logger;
60
62
  static FORK_HISTORY_BATCH_SIZE = 500;
61
63
  static FORK_ID_GENERATION_MAX_ATTEMPTS = 5;
@@ -183,8 +185,15 @@ class SessionManager {
183
185
  lastActivity: now,
184
186
  messageCount: parentSessionData.messageCount,
185
187
  parentSessionId,
186
- metadata: {
187
- title: childTitle
188
+ ...parentSessionData.metadata !== void 0 ? {
189
+ metadata: {
190
+ ...parentSessionData.metadata,
191
+ title: childTitle
192
+ }
193
+ } : {
194
+ metadata: {
195
+ title: childTitle
196
+ }
188
197
  },
189
198
  ...parentSessionData.workspaceId !== void 0 && {
190
199
  workspaceId: parentSessionData.workspaceId
@@ -460,14 +469,15 @@ class SessionManager {
460
469
  throw import_errors.SessionError.notFound(sessionId);
461
470
  }
462
471
  await session.reset();
463
- const sessionKey = `session:${sessionId}`;
464
- const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
465
- if (sessionData) {
472
+ await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
473
+ const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
474
+ if (!sessionData) {
475
+ return;
476
+ }
466
477
  sessionData.messageCount = 0;
467
478
  sessionData.lastActivity = Date.now();
468
- await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
469
- await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
470
- }
479
+ await this.persistSessionData(sessionKey, sessionData);
480
+ });
471
481
  this.logger.debug(`Reset session conversation: ${sessionId}`);
472
482
  }
473
483
  /**
@@ -508,11 +518,69 @@ class SessionManager {
508
518
  ...sessionData.usageTracking && { usageTracking: sessionData.usageTracking }
509
519
  };
510
520
  }
511
- async markUntrackedChatGPTLoginUsage(sessionId) {
521
+ async getSessionSystemPromptContributors(sessionId) {
512
522
  await this.ensureInitialized();
513
523
  const sessionKey = `session:${sessionId}`;
514
- const previousLock = this.tokenUsageLocks.get(sessionKey) ?? Promise.resolve();
515
- const currentLock = previousLock.then(async () => {
524
+ const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
525
+ if (!sessionData) {
526
+ throw import_errors.SessionError.notFound(sessionId);
527
+ }
528
+ return this.parseSessionPromptContributors(sessionId, sessionData);
529
+ }
530
+ async upsertSessionSystemPromptContributor(sessionId, contributor) {
531
+ await this.ensureInitialized();
532
+ return await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
533
+ const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
534
+ if (!sessionData) {
535
+ throw import_errors.SessionError.notFound(sessionId);
536
+ }
537
+ const existing = this.parseSessionPromptContributors(sessionId, sessionData);
538
+ const next = existing.filter((entry) => entry.id !== contributor.id);
539
+ const replaced = next.length !== existing.length;
540
+ next.push(contributor);
541
+ next.sort((left, right) => left.priority - right.priority);
542
+ sessionData.metadata = sessionData.metadata || {};
543
+ sessionData.metadata.systemPromptContributors = next;
544
+ sessionData.lastActivity = Date.now();
545
+ await this.persistSessionData(sessionKey, sessionData);
546
+ return replaced;
547
+ });
548
+ }
549
+ async removeSessionSystemPromptContributor(sessionId, contributorId) {
550
+ await this.ensureInitialized();
551
+ return await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
552
+ const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
553
+ if (!sessionData) {
554
+ throw import_errors.SessionError.notFound(sessionId);
555
+ }
556
+ const existing = this.parseSessionPromptContributors(sessionId, sessionData);
557
+ const next = existing.filter((entry) => entry.id !== contributorId);
558
+ const removed = next.length !== existing.length;
559
+ if (!removed) {
560
+ return false;
561
+ }
562
+ sessionData.metadata = sessionData.metadata || {};
563
+ sessionData.metadata.systemPromptContributors = next;
564
+ sessionData.lastActivity = Date.now();
565
+ await this.persistSessionData(sessionKey, sessionData);
566
+ return true;
567
+ });
568
+ }
569
+ parseSessionPromptContributors(sessionId, sessionData) {
570
+ try {
571
+ return import_schemas.SessionPromptContributorSchema.array().parse(
572
+ sessionData.metadata?.systemPromptContributors ?? []
573
+ );
574
+ } catch (error) {
575
+ if (error instanceof import_zod.ZodError) {
576
+ throw import_errors.SessionError.storageFailed(sessionId, "read", error.message);
577
+ }
578
+ throw error;
579
+ }
580
+ }
581
+ async markUntrackedChatGPTLoginUsage(sessionId) {
582
+ await this.ensureInitialized();
583
+ await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
516
584
  const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
517
585
  if (!sessionData || sessionData.usageTracking?.hasUntrackedChatGPTLoginUsage) {
518
586
  return;
@@ -521,17 +589,8 @@ class SessionManager {
521
589
  ...sessionData.usageTracking ?? {},
522
590
  hasUntrackedChatGPTLoginUsage: true
523
591
  };
524
- await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
525
- await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
592
+ await this.persistSessionData(sessionKey, sessionData);
526
593
  });
527
- this.tokenUsageLocks.set(sessionKey, currentLock);
528
- try {
529
- await currentLock;
530
- } finally {
531
- if (this.tokenUsageLocks.get(sessionKey) === currentLock) {
532
- this.tokenUsageLocks.delete(sessionKey);
533
- }
534
- }
535
594
  }
536
595
  /**
537
596
  * Get the global session manager configuration.
@@ -546,27 +605,29 @@ class SessionManager {
546
605
  * Updates the last activity timestamp for a session.
547
606
  */
548
607
  async updateSessionActivity(sessionId) {
549
- const sessionKey = `session:${sessionId}`;
550
- const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
551
- if (sessionData) {
608
+ await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
609
+ const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
610
+ if (!sessionData) {
611
+ return;
612
+ }
552
613
  sessionData.lastActivity = Date.now();
553
- await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
554
- await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
555
- }
614
+ await this.persistSessionData(sessionKey, sessionData);
615
+ });
556
616
  }
557
617
  /**
558
618
  * Increments the message count for a session.
559
619
  */
560
620
  async incrementMessageCount(sessionId) {
561
621
  await this.ensureInitialized();
562
- const sessionKey = `session:${sessionId}`;
563
- const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
564
- if (sessionData) {
622
+ await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
623
+ const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
624
+ if (!sessionData) {
625
+ return;
626
+ }
565
627
  sessionData.messageCount++;
566
628
  sessionData.lastActivity = Date.now();
567
- await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
568
- await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
569
- }
629
+ await this.persistSessionData(sessionKey, sessionData);
630
+ });
570
631
  }
571
632
  /**
572
633
  * Accumulates token usage for a session.
@@ -581,9 +642,7 @@ class SessionManager {
581
642
  */
582
643
  async accumulateTokenUsage(sessionId, usage, cost, modelInfo) {
583
644
  await this.ensureInitialized();
584
- const sessionKey = `session:${sessionId}`;
585
- const previousLock = this.tokenUsageLocks.get(sessionKey) ?? Promise.resolve();
586
- const currentLock = previousLock.then(async () => {
645
+ await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
587
646
  const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
588
647
  if (!sessionData) return;
589
648
  if (modelInfo) {
@@ -604,17 +663,8 @@ class SessionManager {
604
663
  sessionData.estimatedCost = (sessionData.estimatedCost ?? 0) + cost;
605
664
  }
606
665
  sessionData.lastActivity = Date.now();
607
- await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
608
- await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
666
+ await this.persistSessionData(sessionKey, sessionData);
609
667
  });
610
- this.tokenUsageLocks.set(sessionKey, currentLock);
611
- try {
612
- await currentLock;
613
- } finally {
614
- if (this.tokenUsageLocks.get(sessionKey) === currentLock) {
615
- this.tokenUsageLocks.delete(sessionKey);
616
- }
617
- }
618
668
  }
619
669
  /**
620
670
  * Helper to accumulate token usage into a target SessionTokenUsage object.
@@ -673,20 +723,20 @@ class SessionManager {
673
723
  */
674
724
  async setSessionTitle(sessionId, title, opts = {}) {
675
725
  await this.ensureInitialized();
676
- const sessionKey = `session:${sessionId}`;
677
- const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
678
- if (!sessionData) {
679
- throw import_errors.SessionError.notFound(sessionId);
680
- }
681
726
  const normalized = title.trim().slice(0, 80);
682
- if (opts.ifUnsetOnly && sessionData.metadata?.title) {
683
- return;
684
- }
685
- sessionData.metadata = sessionData.metadata || {};
686
- sessionData.metadata.title = normalized;
687
- sessionData.lastActivity = Date.now();
688
- await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
689
- await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
727
+ await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
728
+ const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
729
+ if (!sessionData) {
730
+ throw import_errors.SessionError.notFound(sessionId);
731
+ }
732
+ if (opts.ifUnsetOnly && sessionData.metadata?.title) {
733
+ return;
734
+ }
735
+ sessionData.metadata = sessionData.metadata || {};
736
+ sessionData.metadata.title = normalized;
737
+ sessionData.lastActivity = Date.now();
738
+ await this.persistSessionData(sessionKey, sessionData);
739
+ });
690
740
  }
691
741
  /**
692
742
  * Gets the stored title for a session, if any.
@@ -771,14 +821,15 @@ class SessionManager {
771
821
  throw import_errors.SessionError.notFound(sessionId);
772
822
  }
773
823
  await session.switchLLM(newLLMConfig);
774
- const sessionKey = `session:${sessionId}`;
775
- const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
776
- if (sessionData) {
824
+ await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
825
+ const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
826
+ if (!sessionData) {
827
+ return;
828
+ }
777
829
  const { apiKey: _apiKey, ...configWithoutApiKey } = newLLMConfig;
778
830
  sessionData.llmOverride = configWithoutApiKey;
779
- await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
780
- await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
781
- }
831
+ await this.persistSessionData(sessionKey, sessionData);
832
+ });
782
833
  this.services.agentEventBus.emit("llm:switched", {
783
834
  newConfig: newLLMConfig,
784
835
  historyRetained: true,
@@ -787,6 +838,28 @@ class SessionManager {
787
838
  const message = `Successfully switched to ${newLLMConfig.provider}/${newLLMConfig.model} for session ${sessionId}`;
788
839
  return { message, warnings: [] };
789
840
  }
841
+ async runWithSessionDataLock(sessionId, fn) {
842
+ const sessionKey = `session:${sessionId}`;
843
+ const previousLock = this.sessionDataLocks.get(sessionKey) ?? Promise.resolve();
844
+ const currentResult = previousLock.catch(() => {
845
+ }).then(() => fn(sessionKey));
846
+ const currentLock = currentResult.then(
847
+ () => void 0,
848
+ () => void 0
849
+ );
850
+ this.sessionDataLocks.set(sessionKey, currentLock);
851
+ try {
852
+ return await currentResult;
853
+ } finally {
854
+ if (this.sessionDataLocks.get(sessionKey) === currentLock) {
855
+ this.sessionDataLocks.delete(sessionKey);
856
+ }
857
+ }
858
+ }
859
+ async persistSessionData(sessionKey, sessionData) {
860
+ await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
861
+ await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
862
+ }
790
863
  /**
791
864
  * Get session statistics for monitoring and debugging.
792
865
  */
@@ -9,6 +9,7 @@ import type { StorageManager } from '../storage/index.js';
9
9
  import type { HookManager } from '../hooks/manager.js';
10
10
  import type { TokenUsage } from '../llm/types.js';
11
11
  import type { CompactionStrategy } from '../context/compaction/types.js';
12
+ import { type SessionPromptContributor } from '../systemPrompt/schemas.js';
12
13
  export type SessionLoggerFactory = (options: {
13
14
  baseLogger: Logger;
14
15
  agentId: string;
@@ -94,7 +95,7 @@ export declare class SessionManager {
94
95
  private cleanupInterval?;
95
96
  private initializationPromise;
96
97
  private readonly pendingCreations;
97
- private readonly tokenUsageLocks;
98
+ private readonly sessionDataLocks;
98
99
  private logger;
99
100
  private static readonly FORK_HISTORY_BATCH_SIZE;
100
101
  private static readonly FORK_ID_GENERATION_MAX_ATTEMPTS;
@@ -196,6 +197,10 @@ export declare class SessionManager {
196
197
  * @returns Session metadata if found, undefined otherwise
197
198
  */
198
199
  getSessionMetadata(sessionId: string): Promise<SessionMetadata | undefined>;
200
+ getSessionSystemPromptContributors(sessionId: string): Promise<SessionPromptContributor[]>;
201
+ upsertSessionSystemPromptContributor(sessionId: string, contributor: SessionPromptContributor): Promise<boolean>;
202
+ removeSessionSystemPromptContributor(sessionId: string, contributorId: string): Promise<boolean>;
203
+ private parseSessionPromptContributors;
199
204
  markUntrackedChatGPTLoginUsage(sessionId: string): Promise<void>;
200
205
  /**
201
206
  * Get the global session manager configuration.
@@ -271,6 +276,8 @@ export declare class SessionManager {
271
276
  message: string;
272
277
  warnings: string[];
273
278
  }>;
279
+ private runWithSessionDataLock;
280
+ private persistSessionData;
274
281
  /**
275
282
  * Get session statistics for monitoring and debugging.
276
283
  */
@@ -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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"}