@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.
- package/dist/agent/DextoAgent.cjs +63 -9
- package/dist/agent/DextoAgent.d.ts +11 -1
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +56 -2
- package/dist/agent/runtime-config.d.ts +2 -0
- package/dist/agent/runtime-config.d.ts.map +1 -1
- package/dist/approval/index.cjs +6 -0
- package/dist/approval/index.d.ts +1 -1
- package/dist/approval/index.d.ts.map +1 -1
- package/dist/approval/index.js +11 -1
- package/dist/approval/schemas.cjs +3 -3
- package/dist/approval/schemas.d.ts +107 -108
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +4 -4
- package/dist/approval/types.cjs +75 -27
- package/dist/approval/types.d.ts +30 -21
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/approval/types.js +72 -27
- package/dist/index.browser.cjs +6 -0
- package/dist/index.browser.d.ts +1 -1
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +11 -1
- package/dist/llm/executor/stream-processor.cjs +2 -2
- package/dist/llm/executor/stream-processor.d.ts +1 -0
- package/dist/llm/executor/stream-processor.d.ts.map +1 -1
- package/dist/llm/executor/stream-processor.js +2 -2
- package/dist/llm/executor/turn-executor.cjs +3 -0
- package/dist/llm/executor/turn-executor.d.ts +1 -0
- package/dist/llm/executor/turn-executor.d.ts.map +1 -1
- package/dist/llm/executor/turn-executor.js +3 -0
- package/dist/llm/services/factory.cjs +12 -1
- package/dist/llm/services/factory.d.ts +10 -3
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +12 -1
- package/dist/llm/services/vercel.cjs +4 -1
- package/dist/llm/services/vercel.d.ts +2 -1
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +4 -1
- package/dist/llm/usage-scope.cjs +4 -13
- package/dist/llm/usage-scope.d.ts +3 -2
- package/dist/llm/usage-scope.d.ts.map +1 -1
- package/dist/llm/usage-scope.js +3 -11
- package/dist/mcp/bundled-config.cjs +206 -0
- package/dist/mcp/bundled-config.d.ts +10 -0
- package/dist/mcp/bundled-config.d.ts.map +1 -0
- package/dist/mcp/bundled-config.js +173 -0
- package/dist/mcp/index.cjs +43 -15
- package/dist/mcp/index.d.ts +11 -7
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +35 -7
- package/dist/prompts/providers/config-prompt-provider.cjs +15 -1
- package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/config-prompt-provider.js +15 -1
- package/dist/session/chat-session.cjs +13 -4
- package/dist/session/chat-session.d.ts +1 -0
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +13 -4
- package/dist/session/session-manager.cjs +140 -67
- package/dist/session/session-manager.d.ts +8 -1
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +142 -67
- package/dist/systemPrompt/manager.cjs +7 -1
- package/dist/systemPrompt/manager.d.ts.map +1 -1
- package/dist/systemPrompt/manager.js +7 -1
- package/dist/systemPrompt/schemas.cjs +7 -0
- package/dist/systemPrompt/schemas.d.ts +14 -0
- package/dist/systemPrompt/schemas.d.ts.map +1 -1
- package/dist/systemPrompt/schemas.js +6 -0
- package/dist/systemPrompt/types.d.ts +2 -0
- package/dist/systemPrompt/types.d.ts.map +1 -1
- package/dist/tools/tool-manager.cjs +20 -1
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +21 -2
- package/dist/utils/execution-context.cjs +26 -0
- package/dist/utils/execution-context.d.ts.map +1 -1
- package/dist/utils/execution-context.js +27 -1
- 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
|
|
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":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;
|
|
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
|
|
26
|
-
|
|
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
|
-
|
|
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
|
-
|
|
432
|
-
|
|
433
|
-
|
|
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.
|
|
437
|
-
|
|
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
|
|
491
|
+
async getSessionSystemPromptContributors(sessionId) {
|
|
480
492
|
await this.ensureInitialized();
|
|
481
493
|
const sessionKey = `session:${sessionId}`;
|
|
482
|
-
const
|
|
483
|
-
|
|
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.
|
|
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
|
-
|
|
518
|
-
|
|
519
|
-
|
|
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.
|
|
522
|
-
|
|
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
|
-
|
|
531
|
-
|
|
532
|
-
|
|
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.
|
|
536
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
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
|
-
|
|
743
|
-
|
|
744
|
-
|
|
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.
|
|
748
|
-
|
|
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
|
-
|
|
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;
|
|
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
|
-
|
|
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;
|
|
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 ? {
|
|
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 ? {
|
|
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;
|