@dexto/core 1.6.17 → 1.6.19

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 (77) hide show
  1. package/dist/agent/DextoAgent.cjs +63 -9
  2. package/dist/agent/DextoAgent.d.ts +11 -1
  3. package/dist/agent/DextoAgent.d.ts.map +1 -1
  4. package/dist/agent/DextoAgent.js +56 -2
  5. package/dist/agent/runtime-config.d.ts +2 -0
  6. package/dist/agent/runtime-config.d.ts.map +1 -1
  7. package/dist/approval/index.cjs +6 -0
  8. package/dist/approval/index.d.ts +1 -1
  9. package/dist/approval/index.d.ts.map +1 -1
  10. package/dist/approval/index.js +11 -1
  11. package/dist/approval/schemas.cjs +3 -3
  12. package/dist/approval/schemas.d.ts +107 -108
  13. package/dist/approval/schemas.d.ts.map +1 -1
  14. package/dist/approval/schemas.js +4 -4
  15. package/dist/approval/types.cjs +75 -27
  16. package/dist/approval/types.d.ts +30 -21
  17. package/dist/approval/types.d.ts.map +1 -1
  18. package/dist/approval/types.js +72 -27
  19. package/dist/index.browser.cjs +6 -0
  20. package/dist/index.browser.d.ts +1 -1
  21. package/dist/index.browser.d.ts.map +1 -1
  22. package/dist/index.browser.js +11 -1
  23. package/dist/llm/executor/stream-processor.cjs +2 -2
  24. package/dist/llm/executor/stream-processor.d.ts +1 -0
  25. package/dist/llm/executor/stream-processor.d.ts.map +1 -1
  26. package/dist/llm/executor/stream-processor.js +2 -2
  27. package/dist/llm/executor/turn-executor.cjs +3 -0
  28. package/dist/llm/executor/turn-executor.d.ts +1 -0
  29. package/dist/llm/executor/turn-executor.d.ts.map +1 -1
  30. package/dist/llm/executor/turn-executor.js +3 -0
  31. package/dist/llm/services/factory.cjs +12 -1
  32. package/dist/llm/services/factory.d.ts +10 -3
  33. package/dist/llm/services/factory.d.ts.map +1 -1
  34. package/dist/llm/services/factory.js +12 -1
  35. package/dist/llm/services/vercel.cjs +4 -1
  36. package/dist/llm/services/vercel.d.ts +2 -1
  37. package/dist/llm/services/vercel.d.ts.map +1 -1
  38. package/dist/llm/services/vercel.js +4 -1
  39. package/dist/llm/usage-scope.cjs +4 -13
  40. package/dist/llm/usage-scope.d.ts +3 -2
  41. package/dist/llm/usage-scope.d.ts.map +1 -1
  42. package/dist/llm/usage-scope.js +3 -11
  43. package/dist/mcp/bundled-config.cjs +206 -0
  44. package/dist/mcp/bundled-config.d.ts +10 -0
  45. package/dist/mcp/bundled-config.d.ts.map +1 -0
  46. package/dist/mcp/bundled-config.js +173 -0
  47. package/dist/mcp/index.cjs +43 -15
  48. package/dist/mcp/index.d.ts +11 -7
  49. package/dist/mcp/index.d.ts.map +1 -1
  50. package/dist/mcp/index.js +35 -7
  51. package/dist/prompts/providers/config-prompt-provider.cjs +15 -1
  52. package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
  53. package/dist/prompts/providers/config-prompt-provider.js +15 -1
  54. package/dist/session/chat-session.cjs +13 -4
  55. package/dist/session/chat-session.d.ts +1 -0
  56. package/dist/session/chat-session.d.ts.map +1 -1
  57. package/dist/session/chat-session.js +13 -4
  58. package/dist/session/session-manager.cjs +140 -67
  59. package/dist/session/session-manager.d.ts +8 -1
  60. package/dist/session/session-manager.d.ts.map +1 -1
  61. package/dist/session/session-manager.js +142 -67
  62. package/dist/systemPrompt/manager.cjs +7 -1
  63. package/dist/systemPrompt/manager.d.ts.map +1 -1
  64. package/dist/systemPrompt/manager.js +7 -1
  65. package/dist/systemPrompt/schemas.cjs +7 -0
  66. package/dist/systemPrompt/schemas.d.ts +14 -0
  67. package/dist/systemPrompt/schemas.d.ts.map +1 -1
  68. package/dist/systemPrompt/schemas.js +6 -0
  69. package/dist/systemPrompt/types.d.ts +2 -0
  70. package/dist/systemPrompt/types.d.ts.map +1 -1
  71. package/dist/tools/tool-manager.cjs +20 -1
  72. package/dist/tools/tool-manager.d.ts.map +1 -1
  73. package/dist/tools/tool-manager.js +21 -2
  74. package/dist/utils/execution-context.cjs +26 -0
  75. package/dist/utils/execution-context.d.ts.map +1 -1
  76. package/dist/utils/execution-context.js +27 -1
  77. package/package.json +4 -3
@@ -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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"}
@@ -3,6 +3,10 @@ import { randomUUID } from "crypto";
3
3
  import { ChatSession } from "./chat-session.js";
4
4
  import { DextoLogComponent } from "../logger/v2/types.js";
5
5
  import { SessionError } from "./errors.js";
6
+ import { ZodError } from "zod";
7
+ import {
8
+ SessionPromptContributorSchema
9
+ } from "../systemPrompt/schemas.js";
6
10
  function defaultSessionLoggerFactory(options) {
7
11
  return options.baseLogger.createChild(DextoLogComponent.SESSION);
8
12
  }
@@ -22,8 +26,8 @@ class SessionManager {
22
26
  initializationPromise;
23
27
  // Add a Map to track ongoing session creation operations to prevent race conditions
24
28
  pendingCreations = /* @__PURE__ */ new Map();
25
- // Per-session mutex for token usage updates to prevent lost updates from concurrent calls
26
- tokenUsageLocks = /* @__PURE__ */ new Map();
29
+ // Per-session mutex for any SessionData read-modify-write path.
30
+ sessionDataLocks = /* @__PURE__ */ new Map();
27
31
  logger;
28
32
  static FORK_HISTORY_BATCH_SIZE = 500;
29
33
  static FORK_ID_GENERATION_MAX_ATTEMPTS = 5;
@@ -151,8 +155,15 @@ class SessionManager {
151
155
  lastActivity: now,
152
156
  messageCount: parentSessionData.messageCount,
153
157
  parentSessionId,
154
- metadata: {
155
- title: childTitle
158
+ ...parentSessionData.metadata !== void 0 ? {
159
+ metadata: {
160
+ ...parentSessionData.metadata,
161
+ title: childTitle
162
+ }
163
+ } : {
164
+ metadata: {
165
+ title: childTitle
166
+ }
156
167
  },
157
168
  ...parentSessionData.workspaceId !== void 0 && {
158
169
  workspaceId: parentSessionData.workspaceId
@@ -428,14 +439,15 @@ class SessionManager {
428
439
  throw SessionError.notFound(sessionId);
429
440
  }
430
441
  await session.reset();
431
- const sessionKey = `session:${sessionId}`;
432
- const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
433
- if (sessionData) {
442
+ await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
443
+ const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
444
+ if (!sessionData) {
445
+ return;
446
+ }
434
447
  sessionData.messageCount = 0;
435
448
  sessionData.lastActivity = Date.now();
436
- await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
437
- await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
438
- }
449
+ await this.persistSessionData(sessionKey, sessionData);
450
+ });
439
451
  this.logger.debug(`Reset session conversation: ${sessionId}`);
440
452
  }
441
453
  /**
@@ -476,11 +488,69 @@ class SessionManager {
476
488
  ...sessionData.usageTracking && { usageTracking: sessionData.usageTracking }
477
489
  };
478
490
  }
479
- async markUntrackedChatGPTLoginUsage(sessionId) {
491
+ async getSessionSystemPromptContributors(sessionId) {
480
492
  await this.ensureInitialized();
481
493
  const sessionKey = `session:${sessionId}`;
482
- const previousLock = this.tokenUsageLocks.get(sessionKey) ?? Promise.resolve();
483
- const currentLock = previousLock.then(async () => {
494
+ const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
495
+ if (!sessionData) {
496
+ throw SessionError.notFound(sessionId);
497
+ }
498
+ return this.parseSessionPromptContributors(sessionId, sessionData);
499
+ }
500
+ async upsertSessionSystemPromptContributor(sessionId, contributor) {
501
+ await this.ensureInitialized();
502
+ return await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
503
+ const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
504
+ if (!sessionData) {
505
+ throw SessionError.notFound(sessionId);
506
+ }
507
+ const existing = this.parseSessionPromptContributors(sessionId, sessionData);
508
+ const next = existing.filter((entry) => entry.id !== contributor.id);
509
+ const replaced = next.length !== existing.length;
510
+ next.push(contributor);
511
+ next.sort((left, right) => left.priority - right.priority);
512
+ sessionData.metadata = sessionData.metadata || {};
513
+ sessionData.metadata.systemPromptContributors = next;
514
+ sessionData.lastActivity = Date.now();
515
+ await this.persistSessionData(sessionKey, sessionData);
516
+ return replaced;
517
+ });
518
+ }
519
+ async removeSessionSystemPromptContributor(sessionId, contributorId) {
520
+ await this.ensureInitialized();
521
+ return await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
522
+ const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
523
+ if (!sessionData) {
524
+ throw SessionError.notFound(sessionId);
525
+ }
526
+ const existing = this.parseSessionPromptContributors(sessionId, sessionData);
527
+ const next = existing.filter((entry) => entry.id !== contributorId);
528
+ const removed = next.length !== existing.length;
529
+ if (!removed) {
530
+ return false;
531
+ }
532
+ sessionData.metadata = sessionData.metadata || {};
533
+ sessionData.metadata.systemPromptContributors = next;
534
+ sessionData.lastActivity = Date.now();
535
+ await this.persistSessionData(sessionKey, sessionData);
536
+ return true;
537
+ });
538
+ }
539
+ parseSessionPromptContributors(sessionId, sessionData) {
540
+ try {
541
+ return SessionPromptContributorSchema.array().parse(
542
+ sessionData.metadata?.systemPromptContributors ?? []
543
+ );
544
+ } catch (error) {
545
+ if (error instanceof ZodError) {
546
+ throw SessionError.storageFailed(sessionId, "read", error.message);
547
+ }
548
+ throw error;
549
+ }
550
+ }
551
+ async markUntrackedChatGPTLoginUsage(sessionId) {
552
+ await this.ensureInitialized();
553
+ await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
484
554
  const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
485
555
  if (!sessionData || sessionData.usageTracking?.hasUntrackedChatGPTLoginUsage) {
486
556
  return;
@@ -489,17 +559,8 @@ class SessionManager {
489
559
  ...sessionData.usageTracking ?? {},
490
560
  hasUntrackedChatGPTLoginUsage: true
491
561
  };
492
- await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
493
- await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
562
+ await this.persistSessionData(sessionKey, sessionData);
494
563
  });
495
- this.tokenUsageLocks.set(sessionKey, currentLock);
496
- try {
497
- await currentLock;
498
- } finally {
499
- if (this.tokenUsageLocks.get(sessionKey) === currentLock) {
500
- this.tokenUsageLocks.delete(sessionKey);
501
- }
502
- }
503
564
  }
504
565
  /**
505
566
  * Get the global session manager configuration.
@@ -514,27 +575,29 @@ class SessionManager {
514
575
  * Updates the last activity timestamp for a session.
515
576
  */
516
577
  async updateSessionActivity(sessionId) {
517
- const sessionKey = `session:${sessionId}`;
518
- const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
519
- if (sessionData) {
578
+ await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
579
+ const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
580
+ if (!sessionData) {
581
+ return;
582
+ }
520
583
  sessionData.lastActivity = Date.now();
521
- await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
522
- await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
523
- }
584
+ await this.persistSessionData(sessionKey, sessionData);
585
+ });
524
586
  }
525
587
  /**
526
588
  * Increments the message count for a session.
527
589
  */
528
590
  async incrementMessageCount(sessionId) {
529
591
  await this.ensureInitialized();
530
- const sessionKey = `session:${sessionId}`;
531
- const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
532
- if (sessionData) {
592
+ await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
593
+ const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
594
+ if (!sessionData) {
595
+ return;
596
+ }
533
597
  sessionData.messageCount++;
534
598
  sessionData.lastActivity = Date.now();
535
- await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
536
- await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
537
- }
599
+ await this.persistSessionData(sessionKey, sessionData);
600
+ });
538
601
  }
539
602
  /**
540
603
  * Accumulates token usage for a session.
@@ -549,9 +612,7 @@ class SessionManager {
549
612
  */
550
613
  async accumulateTokenUsage(sessionId, usage, cost, modelInfo) {
551
614
  await this.ensureInitialized();
552
- const sessionKey = `session:${sessionId}`;
553
- const previousLock = this.tokenUsageLocks.get(sessionKey) ?? Promise.resolve();
554
- const currentLock = previousLock.then(async () => {
615
+ await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
555
616
  const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
556
617
  if (!sessionData) return;
557
618
  if (modelInfo) {
@@ -572,17 +633,8 @@ class SessionManager {
572
633
  sessionData.estimatedCost = (sessionData.estimatedCost ?? 0) + cost;
573
634
  }
574
635
  sessionData.lastActivity = Date.now();
575
- await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
576
- await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
636
+ await this.persistSessionData(sessionKey, sessionData);
577
637
  });
578
- this.tokenUsageLocks.set(sessionKey, currentLock);
579
- try {
580
- await currentLock;
581
- } finally {
582
- if (this.tokenUsageLocks.get(sessionKey) === currentLock) {
583
- this.tokenUsageLocks.delete(sessionKey);
584
- }
585
- }
586
638
  }
587
639
  /**
588
640
  * Helper to accumulate token usage into a target SessionTokenUsage object.
@@ -641,20 +693,20 @@ class SessionManager {
641
693
  */
642
694
  async setSessionTitle(sessionId, title, opts = {}) {
643
695
  await this.ensureInitialized();
644
- const sessionKey = `session:${sessionId}`;
645
- const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
646
- if (!sessionData) {
647
- throw SessionError.notFound(sessionId);
648
- }
649
696
  const normalized = title.trim().slice(0, 80);
650
- if (opts.ifUnsetOnly && sessionData.metadata?.title) {
651
- return;
652
- }
653
- sessionData.metadata = sessionData.metadata || {};
654
- sessionData.metadata.title = normalized;
655
- sessionData.lastActivity = Date.now();
656
- await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
657
- await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
697
+ await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
698
+ const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
699
+ if (!sessionData) {
700
+ throw SessionError.notFound(sessionId);
701
+ }
702
+ if (opts.ifUnsetOnly && sessionData.metadata?.title) {
703
+ return;
704
+ }
705
+ sessionData.metadata = sessionData.metadata || {};
706
+ sessionData.metadata.title = normalized;
707
+ sessionData.lastActivity = Date.now();
708
+ await this.persistSessionData(sessionKey, sessionData);
709
+ });
658
710
  }
659
711
  /**
660
712
  * Gets the stored title for a session, if any.
@@ -739,14 +791,15 @@ class SessionManager {
739
791
  throw SessionError.notFound(sessionId);
740
792
  }
741
793
  await session.switchLLM(newLLMConfig);
742
- const sessionKey = `session:${sessionId}`;
743
- const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
744
- if (sessionData) {
794
+ await this.runWithSessionDataLock(sessionId, async (sessionKey) => {
795
+ const sessionData = await this.services.storageManager.getDatabase().get(sessionKey);
796
+ if (!sessionData) {
797
+ return;
798
+ }
745
799
  const { apiKey: _apiKey, ...configWithoutApiKey } = newLLMConfig;
746
800
  sessionData.llmOverride = configWithoutApiKey;
747
- await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
748
- await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
749
- }
801
+ await this.persistSessionData(sessionKey, sessionData);
802
+ });
750
803
  this.services.agentEventBus.emit("llm:switched", {
751
804
  newConfig: newLLMConfig,
752
805
  historyRetained: true,
@@ -755,6 +808,28 @@ class SessionManager {
755
808
  const message = `Successfully switched to ${newLLMConfig.provider}/${newLLMConfig.model} for session ${sessionId}`;
756
809
  return { message, warnings: [] };
757
810
  }
811
+ async runWithSessionDataLock(sessionId, fn) {
812
+ const sessionKey = `session:${sessionId}`;
813
+ const previousLock = this.sessionDataLocks.get(sessionKey) ?? Promise.resolve();
814
+ const currentResult = previousLock.catch(() => {
815
+ }).then(() => fn(sessionKey));
816
+ const currentLock = currentResult.then(
817
+ () => void 0,
818
+ () => void 0
819
+ );
820
+ this.sessionDataLocks.set(sessionKey, currentLock);
821
+ try {
822
+ return await currentResult;
823
+ } finally {
824
+ if (this.sessionDataLocks.get(sessionKey) === currentLock) {
825
+ this.sessionDataLocks.delete(sessionKey);
826
+ }
827
+ }
828
+ }
829
+ async persistSessionData(sessionKey, sessionData) {
830
+ await this.services.storageManager.getDatabase().set(sessionKey, sessionData);
831
+ await this.services.storageManager.getCache().set(sessionKey, sessionData, this.sessionTTL / 1e3);
832
+ }
758
833
  /**
759
834
  * Get session statistics for monitoring and debugging.
760
835
  */
@@ -91,8 +91,14 @@ class SystemPromptManager {
91
91
  * Build the full system prompt by invoking each contributor and concatenating.
92
92
  */
93
93
  async build(ctx) {
94
+ const sessionContributors = ctx.session?.systemPromptContributors?.map(
95
+ (contributor) => new import_contributors.StaticContributor(contributor.id, contributor.priority, contributor.content)
96
+ ) ?? [];
97
+ const contributors = [...this.contributors, ...sessionContributors].sort(
98
+ (a, b) => a.priority - b.priority
99
+ );
94
100
  const parts = await Promise.all(
95
- this.contributors.map(async (contributor) => {
101
+ contributors.map(async (contributor) => {
96
102
  const content = await contributor.getContent(ctx);
97
103
  this.logger.debug(
98
104
  `[SystemPrompt] Contributor "${contributor.id}" provided content: ${content.substring(0, 50)}${content.length > 50 ? "..." : ""}`
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/systemPrompt/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAA8B,MAAM,cAAc,CAAC;AAG5F,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAEjF,OAAO,KAAK,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAErF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD;;;GAGG;AACH,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAAS;gBAGnB,MAAM,EAAE,2BAA2B,EACnC,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,uBAAuB,GAAG,SAAS,EACnD,MAAM,EAAE,MAAM;IAoClB,OAAO,CAAC,iBAAiB;IAkCzB;;OAEG;IACG,KAAK,CAAC,GAAG,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC;IAa5D;;OAEG;IACH,eAAe,IAAI,uBAAuB,EAAE;IAI5C;;;OAGG;IACH,cAAc,CAAC,WAAW,EAAE,uBAAuB,GAAG,IAAI;IAQ1D;;;OAGG;IACH,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAOzC"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/systemPrompt/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAA8B,MAAM,cAAc,CAAC;AAG5F,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAEjF,OAAO,KAAK,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAErF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD;;;GAGG;AACH,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAAS;gBAGnB,MAAM,EAAE,2BAA2B,EACnC,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,uBAAuB,GAAG,SAAS,EACnD,MAAM,EAAE,MAAM;IAoClB,OAAO,CAAC,iBAAiB;IAkCzB;;OAEG;IACG,KAAK,CAAC,GAAG,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC;IAqB5D;;OAEG;IACH,eAAe,IAAI,uBAAuB,EAAE;IAI5C;;;OAGG;IACH,cAAc,CAAC,WAAW,EAAE,uBAAuB,GAAG,IAAI;IAQ1D;;;OAGG;IACH,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAOzC"}
@@ -69,8 +69,14 @@ class SystemPromptManager {
69
69
  * Build the full system prompt by invoking each contributor and concatenating.
70
70
  */
71
71
  async build(ctx) {
72
+ const sessionContributors = ctx.session?.systemPromptContributors?.map(
73
+ (contributor) => new StaticContributor(contributor.id, contributor.priority, contributor.content)
74
+ ) ?? [];
75
+ const contributors = [...this.contributors, ...sessionContributors].sort(
76
+ (a, b) => a.priority - b.priority
77
+ );
72
78
  const parts = await Promise.all(
73
- this.contributors.map(async (contributor) => {
79
+ contributors.map(async (contributor) => {
74
80
  const content = await contributor.getContent(ctx);
75
81
  this.logger.debug(
76
82
  `[SystemPrompt] Contributor "${contributor.id}" provided content: ${content.substring(0, 50)}${content.length > 50 ? "..." : ""}`
@@ -29,6 +29,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
29
29
  var schemas_exports = {};
30
30
  __export(schemas_exports, {
31
31
  ContributorConfigSchema: () => ContributorConfigSchema,
32
+ SessionPromptContributorSchema: () => SessionPromptContributorSchema,
32
33
  SystemPromptConfigSchema: () => SystemPromptConfigSchema,
33
34
  SystemPromptContributorsSchema: () => SystemPromptContributorsSchema
34
35
  });
@@ -93,6 +94,11 @@ const ContributorConfigSchema = import_zod.z.discriminatedUnion(
93
94
  ).describe(
94
95
  "Configuration for a system prompt contributor. Type 'static' requires 'content', type 'dynamic' requires 'source', type 'file' requires 'files'."
95
96
  );
97
+ const SessionPromptContributorSchema = import_zod.z.object({
98
+ id: import_zod.z.string().min(1).describe("Unique identifier for the session contributor"),
99
+ priority: import_zod.z.number().int().nonnegative().describe("Execution priority of the session contributor (lower numbers run first)"),
100
+ content: import_zod.z.string().describe("Static content to include in the system prompt for this session only")
101
+ }).strict();
96
102
  const SystemPromptContributorsSchema = import_zod.z.object({
97
103
  contributors: import_zod.z.array(ContributorConfigSchema).min(1).default([
98
104
  {
@@ -129,6 +135,7 @@ const SystemPromptConfigSchema = import_zod.z.union([
129
135
  // Annotate the CommonJS export names for ESM import in node:
130
136
  0 && (module.exports = {
131
137
  ContributorConfigSchema,
138
+ SessionPromptContributorSchema,
132
139
  SystemPromptConfigSchema,
133
140
  SystemPromptContributorsSchema
134
141
  });
@@ -92,6 +92,20 @@ export declare const ContributorConfigSchema: z.ZodDiscriminatedUnion<"type", [z
92
92
  }>]>;
93
93
  export type ContributorConfig = z.input<typeof ContributorConfigSchema>;
94
94
  export type ValidatedContributorConfig = z.output<typeof ContributorConfigSchema>;
95
+ export declare const SessionPromptContributorSchema: z.ZodObject<{
96
+ id: z.ZodString;
97
+ priority: z.ZodNumber;
98
+ content: z.ZodString;
99
+ }, "strict", z.ZodTypeAny, {
100
+ content: string;
101
+ id: string;
102
+ priority: number;
103
+ }, {
104
+ content: string;
105
+ id: string;
106
+ priority: number;
107
+ }>;
108
+ export type SessionPromptContributor = z.output<typeof SessionPromptContributorSchema>;
95
109
  export declare const SystemPromptContributorsSchema: z.ZodObject<{
96
110
  contributors: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
97
111
  id: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/systemPrompt/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0FxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkB/B,CAAC;AAGN,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAElF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8B9B,CAAC;AAGd,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAUM,CAAC;AAG5C,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/systemPrompt/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0FxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkB/B,CAAC;AAGN,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAElF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;EAY9B,CAAC;AAEd,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEvF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8B9B,CAAC;AAGd,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAUM,CAAC;AAG5C,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
@@ -59,6 +59,11 @@ const ContributorConfigSchema = z.discriminatedUnion(
59
59
  ).describe(
60
60
  "Configuration for a system prompt contributor. Type 'static' requires 'content', type 'dynamic' requires 'source', type 'file' requires 'files'."
61
61
  );
62
+ const SessionPromptContributorSchema = z.object({
63
+ id: z.string().min(1).describe("Unique identifier for the session contributor"),
64
+ priority: z.number().int().nonnegative().describe("Execution priority of the session contributor (lower numbers run first)"),
65
+ content: z.string().describe("Static content to include in the system prompt for this session only")
66
+ }).strict();
62
67
  const SystemPromptContributorsSchema = z.object({
63
68
  contributors: z.array(ContributorConfigSchema).min(1).default([
64
69
  {
@@ -94,6 +99,7 @@ const SystemPromptConfigSchema = z.union([
94
99
  ]).describe("Plain string or structured contributors object").brand();
95
100
  export {
96
101
  ContributorConfigSchema,
102
+ SessionPromptContributorSchema,
97
103
  SystemPromptConfigSchema,
98
104
  SystemPromptContributorsSchema
99
105
  };
@@ -1,4 +1,5 @@
1
1
  import { MCPManager } from '../mcp/manager.js';
2
+ import type { SessionPromptContributor } from './schemas.js';
2
3
  import type { WorkspaceContext } from '../workspace/types.js';
3
4
  export type EnvironmentContext = {
4
5
  cwd?: string;
@@ -8,6 +9,7 @@ export type EnvironmentContext = {
8
9
  };
9
10
  export type SessionContext = {
10
11
  id: string;
12
+ systemPromptContributors?: SessionPromptContributor[];
11
13
  };
12
14
  export interface DynamicContributorContext {
13
15
  mcpManager: MCPManager;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/systemPrompt/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,MAAM,kBAAkB,GAAG;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;CACd,CAAC;AAGF,MAAM,WAAW,yBAAyB;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,MAAM,kCAAkC,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;AACpF,MAAM,MAAM,gCAAgC,GAAG,MACzC,kCAAkC,GAClC,OAAO,CAAC,kCAAkC,CAAC,CAAC;AAGlD,MAAM,WAAW,uBAAuB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACnE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/systemPrompt/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,MAAM,kBAAkB,GAAG;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,wBAAwB,CAAC,EAAE,wBAAwB,EAAE,CAAC;CACzD,CAAC;AAGF,MAAM,WAAW,yBAAyB;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,MAAM,kCAAkC,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;AACpF,MAAM,MAAM,gCAAgC,GAAG,MACzC,kCAAkC,GAClC,OAAO,CAAC,kCAAkC,CAAC,CAAC;AAGlD,MAAM,WAAW,uBAAuB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACnE"}
@@ -840,10 +840,29 @@ let _ToolManager = class _ToolManager {
840
840
  async buildContributorContext(options) {
841
841
  const baseWorkspace = this.currentWorkspace ?? null;
842
842
  const sessionId = typeof options?.sessionId === "string" && options.sessionId.length > 0 ? options.sessionId : void 0;
843
+ let sessionPromptContributors = [];
844
+ if (sessionId !== void 0 && this.sessionManager) {
845
+ try {
846
+ sessionPromptContributors = await this.sessionManager.getSessionSystemPromptContributors(sessionId);
847
+ } catch (error) {
848
+ if (error instanceof import_errors2.DextoRuntimeError && error.scope === import_errors2.ErrorScope.SESSION && error.type === import_errors2.ErrorType.NOT_FOUND) {
849
+ this.logger.debug("Session not found while building contributor context", {
850
+ sessionId
851
+ });
852
+ } else {
853
+ throw error;
854
+ }
855
+ }
856
+ }
843
857
  const baseContext = {
844
858
  mcpManager: this.mcpManager,
845
859
  workspace: baseWorkspace,
846
- ...sessionId !== void 0 ? { session: { id: sessionId } } : {}
860
+ ...sessionId !== void 0 ? {
861
+ session: {
862
+ id: sessionId,
863
+ ...sessionPromptContributors.length > 0 ? { systemPromptContributors: sessionPromptContributors } : {}
864
+ }
865
+ } : {}
847
866
  };
848
867
  if (!this.contributorContextFactory) {
849
868
  return baseContext;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-manager.d.ts","sourceRoot":"","sources":["../../src/tools/tool-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-manager.d.ts","sourceRoot":"","sources":["../../src/tools/tool-manager.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import {
6
6
  var _ToolManager_decorators, _init;
7
7
  import { ToolError } from "./errors.js";
8
8
  import { ToolErrorCode } from "./error-codes.js";
9
- import { DextoRuntimeError } from "../errors/index.js";
9
+ import { DextoRuntimeError, ErrorScope, ErrorType } from "../errors/index.js";
10
10
  import { DextoLogComponent } from "../logger/v2/types.js";
11
11
  import { convertZodSchemaToJsonSchema } from "../utils/schema.js";
12
12
  import { ApprovalStatus, ApprovalType, DenialReason } from "../approval/types.js";
@@ -777,10 +777,29 @@ let _ToolManager = class _ToolManager {
777
777
  async buildContributorContext(options) {
778
778
  const baseWorkspace = this.currentWorkspace ?? null;
779
779
  const sessionId = typeof options?.sessionId === "string" && options.sessionId.length > 0 ? options.sessionId : void 0;
780
+ let sessionPromptContributors = [];
781
+ if (sessionId !== void 0 && this.sessionManager) {
782
+ try {
783
+ sessionPromptContributors = await this.sessionManager.getSessionSystemPromptContributors(sessionId);
784
+ } catch (error) {
785
+ if (error instanceof DextoRuntimeError && error.scope === ErrorScope.SESSION && error.type === ErrorType.NOT_FOUND) {
786
+ this.logger.debug("Session not found while building contributor context", {
787
+ sessionId
788
+ });
789
+ } else {
790
+ throw error;
791
+ }
792
+ }
793
+ }
780
794
  const baseContext = {
781
795
  mcpManager: this.mcpManager,
782
796
  workspace: baseWorkspace,
783
- ...sessionId !== void 0 ? { session: { id: sessionId } } : {}
797
+ ...sessionId !== void 0 ? {
798
+ session: {
799
+ id: sessionId,
800
+ ...sessionPromptContributors.length > 0 ? { systemPromptContributors: sessionPromptContributors } : {}
801
+ }
802
+ } : {}
784
803
  };
785
804
  if (!this.contributorContextFactory) {
786
805
  return baseContext;