@vybestack/llxprt-code-agents 0.10.0-nightly.260613.1adad3b34
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/.last_build +0 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/src/agents/executor-prompt-builder.d.ts +19 -0
- package/dist/src/agents/executor-prompt-builder.js +44 -0
- package/dist/src/agents/executor-prompt-builder.js.map +1 -0
- package/dist/src/agents/executor-termination.d.ts +22 -0
- package/dist/src/agents/executor-termination.js +44 -0
- package/dist/src/agents/executor-termination.js.map +1 -0
- package/dist/src/agents/executor-validation.d.ts +17 -0
- package/dist/src/agents/executor-validation.js +35 -0
- package/dist/src/agents/executor-validation.js.map +1 -0
- package/dist/src/agents/executor.d.ts +136 -0
- package/dist/src/agents/executor.js +874 -0
- package/dist/src/agents/executor.js.map +1 -0
- package/dist/src/agents/invocation.d.ts +45 -0
- package/dist/src/agents/invocation.js +118 -0
- package/dist/src/agents/invocation.js.map +1 -0
- package/dist/src/agents/recovery.d.ts +75 -0
- package/dist/src/agents/recovery.js +107 -0
- package/dist/src/agents/recovery.js.map +1 -0
- package/dist/src/agents/types.d.ts +149 -0
- package/dist/src/agents/types.js +18 -0
- package/dist/src/agents/types.js.map +1 -0
- package/dist/src/agents/utils.d.ts +15 -0
- package/dist/src/agents/utils.js +28 -0
- package/dist/src/agents/utils.js.map +1 -0
- package/dist/src/compression/CompressionHandler.d.ts +178 -0
- package/dist/src/compression/CompressionHandler.js +630 -0
- package/dist/src/compression/CompressionHandler.js.map +1 -0
- package/dist/src/compression/HighDensityStrategy.d.ts +113 -0
- package/dist/src/compression/HighDensityStrategy.js +769 -0
- package/dist/src/compression/HighDensityStrategy.js.map +1 -0
- package/dist/src/compression/MiddleOutStrategy.d.ts +27 -0
- package/dist/src/compression/MiddleOutStrategy.js +347 -0
- package/dist/src/compression/MiddleOutStrategy.js.map +1 -0
- package/dist/src/compression/OneShotStrategy.d.ts +22 -0
- package/dist/src/compression/OneShotStrategy.js +235 -0
- package/dist/src/compression/OneShotStrategy.js.map +1 -0
- package/dist/src/compression/TopDownTruncationStrategy.d.ts +13 -0
- package/dist/src/compression/TopDownTruncationStrategy.js +74 -0
- package/dist/src/compression/TopDownTruncationStrategy.js.map +1 -0
- package/dist/src/compression/compressionBudgeting.d.ts +34 -0
- package/dist/src/compression/compressionBudgeting.js +139 -0
- package/dist/src/compression/compressionBudgeting.js.map +1 -0
- package/dist/src/compression/compressionStrategyFactory.d.ts +23 -0
- package/dist/src/compression/compressionStrategyFactory.js +40 -0
- package/dist/src/compression/compressionStrategyFactory.js.map +1 -0
- package/dist/src/compression/index.d.ts +16 -0
- package/dist/src/compression/index.js +17 -0
- package/dist/src/compression/index.js.map +1 -0
- package/dist/src/compression/reasoningUtils.d.ts +18 -0
- package/dist/src/compression/reasoningUtils.js +22 -0
- package/dist/src/compression/reasoningUtils.js.map +1 -0
- package/dist/src/compression/utils.d.ts +114 -0
- package/dist/src/compression/utils.js +316 -0
- package/dist/src/compression/utils.js.map +1 -0
- package/dist/src/core/AgentHookManager.d.ts +41 -0
- package/dist/src/core/AgentHookManager.js +65 -0
- package/dist/src/core/AgentHookManager.js.map +1 -0
- package/dist/src/core/ChatSessionFactory.d.ts +50 -0
- package/dist/src/core/ChatSessionFactory.js +216 -0
- package/dist/src/core/ChatSessionFactory.js.map +1 -0
- package/dist/src/core/ConversationManager.d.ts +113 -0
- package/dist/src/core/ConversationManager.js +311 -0
- package/dist/src/core/ConversationManager.js.map +1 -0
- package/dist/src/core/DirectMessageProcessor.d.ts +79 -0
- package/dist/src/core/DirectMessageProcessor.js +478 -0
- package/dist/src/core/DirectMessageProcessor.js.map +1 -0
- package/dist/src/core/IdeContextTracker.d.ts +56 -0
- package/dist/src/core/IdeContextTracker.js +207 -0
- package/dist/src/core/IdeContextTracker.js.map +1 -0
- package/dist/src/core/MessageConverter.d.ts +78 -0
- package/dist/src/core/MessageConverter.js +492 -0
- package/dist/src/core/MessageConverter.js.map +1 -0
- package/dist/src/core/MessageStreamOrchestrator.d.ts +85 -0
- package/dist/src/core/MessageStreamOrchestrator.js +448 -0
- package/dist/src/core/MessageStreamOrchestrator.js.map +1 -0
- package/dist/src/core/MessageStreamTerminalHandler.d.ts +16 -0
- package/dist/src/core/MessageStreamTerminalHandler.js +170 -0
- package/dist/src/core/MessageStreamTerminalHandler.js.map +1 -0
- package/dist/src/core/StreamProcessor.d.ts +105 -0
- package/dist/src/core/StreamProcessor.js +660 -0
- package/dist/src/core/StreamProcessor.js.map +1 -0
- package/dist/src/core/TodoContinuationService.d.ts +74 -0
- package/dist/src/core/TodoContinuationService.js +312 -0
- package/dist/src/core/TodoContinuationService.js.map +1 -0
- package/dist/src/core/TurnProcessor.d.ts +91 -0
- package/dist/src/core/TurnProcessor.js +540 -0
- package/dist/src/core/TurnProcessor.js.map +1 -0
- package/dist/src/core/baseLlmClient.d.ts +115 -0
- package/dist/src/core/baseLlmClient.js +231 -0
- package/dist/src/core/baseLlmClient.js.map +1 -0
- package/dist/src/core/bucketFailoverIntegration.d.ts +62 -0
- package/dist/src/core/bucketFailoverIntegration.js +186 -0
- package/dist/src/core/bucketFailoverIntegration.js.map +1 -0
- package/dist/src/core/chatSession.d.ts +121 -0
- package/dist/src/core/chatSession.js +720 -0
- package/dist/src/core/chatSession.js.map +1 -0
- package/dist/src/core/client.d.ts +132 -0
- package/dist/src/core/client.js +524 -0
- package/dist/src/core/client.js.map +1 -0
- package/dist/src/core/clientHelpers.d.ts +15 -0
- package/dist/src/core/clientHelpers.js +122 -0
- package/dist/src/core/clientHelpers.js.map +1 -0
- package/dist/src/core/clientLlmUtilities.d.ts +30 -0
- package/dist/src/core/clientLlmUtilities.js +125 -0
- package/dist/src/core/clientLlmUtilities.js.map +1 -0
- package/dist/src/core/clientToolGovernance.d.ts +37 -0
- package/dist/src/core/clientToolGovernance.js +104 -0
- package/dist/src/core/clientToolGovernance.js.map +1 -0
- package/dist/src/core/compression-config.d.ts +12 -0
- package/dist/src/core/compression-config.js +21 -0
- package/dist/src/core/compression-config.js.map +1 -0
- package/dist/src/core/coreToolScheduler.d.ts +105 -0
- package/dist/src/core/coreToolScheduler.js +453 -0
- package/dist/src/core/coreToolScheduler.js.map +1 -0
- package/dist/src/core/hookToolRestrictions.d.ts +18 -0
- package/dist/src/core/hookToolRestrictions.js +187 -0
- package/dist/src/core/hookToolRestrictions.js.map +1 -0
- package/dist/src/core/nonInteractiveToolExecutor.d.ts +17 -0
- package/dist/src/core/nonInteractiveToolExecutor.js +102 -0
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -0
- package/dist/src/core/subagent.d.ts +105 -0
- package/dist/src/core/subagent.js +650 -0
- package/dist/src/core/subagent.js.map +1 -0
- package/dist/src/core/subagentExecution.d.ts +104 -0
- package/dist/src/core/subagentExecution.js +275 -0
- package/dist/src/core/subagentExecution.js.map +1 -0
- package/dist/src/core/subagentOrchestrator.d.ts +84 -0
- package/dist/src/core/subagentOrchestrator.js +503 -0
- package/dist/src/core/subagentOrchestrator.js.map +1 -0
- package/dist/src/core/subagentRuntimeSetup.d.ts +75 -0
- package/dist/src/core/subagentRuntimeSetup.js +387 -0
- package/dist/src/core/subagentRuntimeSetup.js.map +1 -0
- package/dist/src/core/subagentScheduler.d.ts +17 -0
- package/dist/src/core/subagentScheduler.js +7 -0
- package/dist/src/core/subagentScheduler.js.map +1 -0
- package/dist/src/core/subagentToolProcessing.d.ts +51 -0
- package/dist/src/core/subagentToolProcessing.js +359 -0
- package/dist/src/core/subagentToolProcessing.js.map +1 -0
- package/dist/src/core/toolGovernance.d.ts +18 -0
- package/dist/src/core/toolGovernance.js +50 -0
- package/dist/src/core/toolGovernance.js.map +1 -0
- package/dist/src/core/turn.d.ts +47 -0
- package/dist/src/core/turn.js +455 -0
- package/dist/src/core/turn.js.map +1 -0
- package/dist/src/core/turnLogging.d.ts +35 -0
- package/dist/src/core/turnLogging.js +80 -0
- package/dist/src/core/turnLogging.js.map +1 -0
- package/dist/src/index.d.ts +32 -0
- package/dist/src/index.js +44 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/scheduler/confirmation-coordinator.d.ts +139 -0
- package/dist/src/scheduler/confirmation-coordinator.js +443 -0
- package/dist/src/scheduler/confirmation-coordinator.js.map +1 -0
- package/dist/src/scheduler/result-aggregator.d.ts +127 -0
- package/dist/src/scheduler/result-aggregator.js +302 -0
- package/dist/src/scheduler/result-aggregator.js.map +1 -0
- package/dist/src/scheduler/status-transitions.d.ts +39 -0
- package/dist/src/scheduler/status-transitions.js +184 -0
- package/dist/src/scheduler/status-transitions.js.map +1 -0
- package/dist/src/scheduler/tool-dispatcher.d.ts +40 -0
- package/dist/src/scheduler/tool-dispatcher.js +120 -0
- package/dist/src/scheduler/tool-dispatcher.js.map +1 -0
- package/dist/src/scheduler/tool-executor.d.ts +44 -0
- package/dist/src/scheduler/tool-executor.js +117 -0
- package/dist/src/scheduler/tool-executor.js.map +1 -0
- package/dist/src/scheduler/utils.d.ts +11 -0
- package/dist/src/scheduler/utils.js +19 -0
- package/dist/src/scheduler/utils.js.map +1 -0
- package/dist/src/tools/task.d.ts +128 -0
- package/dist/src/tools/task.js +932 -0
- package/dist/src/tools/task.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationManager.js","sourceRoot":"","sources":["../../../src/core/ConversationManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { GenerateContentResponse } from '@google/genai';
|
|
7
|
+
import { type GenerateContentConfig, type SendMessageParameters } from '@google/genai';
|
|
8
|
+
import type { RuntimeProvider as IProvider } from '@vybestack/llxprt-code-core/runtime/contracts/RuntimeProvider.js';
|
|
9
|
+
import type { AgentRuntimeContext } from '@vybestack/llxprt-code-core/runtime/AgentRuntimeContext.js';
|
|
10
|
+
import type { ProviderRuntimeContext } from '@vybestack/llxprt-code-core/runtime/providerRuntimeContext.js';
|
|
11
|
+
import type { HistoryService } from '@vybestack/llxprt-code-core/services/history/HistoryService.js';
|
|
12
|
+
/**
|
|
13
|
+
* Handles non-streaming direct message generation.
|
|
14
|
+
* Extracted from ChatSession to separate concerns.
|
|
15
|
+
*/
|
|
16
|
+
export declare class DirectMessageProcessor {
|
|
17
|
+
private readonly runtimeContext;
|
|
18
|
+
private readonly providerResolver;
|
|
19
|
+
private readonly providerRuntimeBuilder;
|
|
20
|
+
private readonly generationConfig;
|
|
21
|
+
private readonly historyService;
|
|
22
|
+
private readonly makePositionMatcher;
|
|
23
|
+
private logger;
|
|
24
|
+
constructor(runtimeContext: AgentRuntimeContext, providerResolver: (contextLabel: string) => IProvider, providerRuntimeBuilder: (source: string, extras?: Record<string, unknown>) => ProviderRuntimeContext, generationConfig: GenerateContentConfig, historyService: HistoryService, makePositionMatcher: () => (() => {
|
|
25
|
+
historyId: string;
|
|
26
|
+
toolName?: string;
|
|
27
|
+
}) | undefined);
|
|
28
|
+
/**
|
|
29
|
+
* Generates a direct (non-streaming) message response.
|
|
30
|
+
* Handles user input conversion, pre-send hooks, provider calls with retry,
|
|
31
|
+
* and post-response processing.
|
|
32
|
+
*/
|
|
33
|
+
generateDirectMessage(params: SendMessageParameters, prompt_id: string): Promise<GenerateContentResponse>;
|
|
34
|
+
/**
|
|
35
|
+
* Converts user input message to IContent array.
|
|
36
|
+
*/
|
|
37
|
+
private _convertUserInput;
|
|
38
|
+
/**
|
|
39
|
+
* Executes the provider call with retry logic.
|
|
40
|
+
*/
|
|
41
|
+
private _executeWithRetry;
|
|
42
|
+
/**
|
|
43
|
+
* Sets up an AbortController that propagates the upstream abort signal.
|
|
44
|
+
*/
|
|
45
|
+
private _setupAbortController;
|
|
46
|
+
/**
|
|
47
|
+
* Consumes an async iterable of IContent, aggregating text across chunks.
|
|
48
|
+
* Handles idle timeout via watchdog when configured.
|
|
49
|
+
*/
|
|
50
|
+
private _consumeStreamResponse;
|
|
51
|
+
private _filterStreamedIContent;
|
|
52
|
+
/**
|
|
53
|
+
* Executes the direct provider call after applying pre-send hooks.
|
|
54
|
+
*/
|
|
55
|
+
private _executeDirectProviderCall;
|
|
56
|
+
private _buildProviderRuntimeMetadata;
|
|
57
|
+
private _createDirectProviderStream;
|
|
58
|
+
private _selectRequestTools;
|
|
59
|
+
/**
|
|
60
|
+
* Applies pre-send hooks (BeforeToolSelection and BeforeModel).
|
|
61
|
+
* Returns effective tools, modified contents, and optionally a synthetic response.
|
|
62
|
+
*/
|
|
63
|
+
private _applyPreSendHooks;
|
|
64
|
+
private _applyToolSelectionHook;
|
|
65
|
+
/**
|
|
66
|
+
* Handles BeforeModel hook logic and returns synthetic response if needed.
|
|
67
|
+
*/
|
|
68
|
+
private _handleBeforeModelHook;
|
|
69
|
+
/**
|
|
70
|
+
* Processes the direct response after receiving from provider.
|
|
71
|
+
* Applies AfterModel hook and ensures text property is set.
|
|
72
|
+
*/
|
|
73
|
+
private _processDirectResponse;
|
|
74
|
+
private _applyHookRestrictedAllowedTools;
|
|
75
|
+
/**
|
|
76
|
+
* Extracts direct Gemini overrides from config.
|
|
77
|
+
*/
|
|
78
|
+
private _extractDirectGeminiOverrides;
|
|
79
|
+
}
|
|
@@ -0,0 +1,478 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { ApiError, } from '@google/genai';
|
|
7
|
+
import { retryWithBackoff } from '@vybestack/llxprt-code-core/utils/retry.js';
|
|
8
|
+
import { createAbortError } from '@vybestack/llxprt-code-core/utils/delay.js';
|
|
9
|
+
import { ContentConverters } from '@vybestack/llxprt-code-core/services/history/ContentConverters.js';
|
|
10
|
+
import { normalizeToolInteractionInput, convertIContentToResponse, aggregateTextWithSpacing, } from './MessageConverter.js';
|
|
11
|
+
import { isSchemaDepthError } from '@vybestack/llxprt-code-core/core/chatSessionTypes.js';
|
|
12
|
+
import { nextStreamEventWithIdleTimeout, resolveStreamIdleTimeoutMs, } from '@vybestack/llxprt-code-core/utils/streamIdleTimeout.js';
|
|
13
|
+
import { logApiRequest, logApiResponse, logApiError } from './turnLogging.js';
|
|
14
|
+
import { DebugLogger } from '@vybestack/llxprt-code-core/debug/index.js';
|
|
15
|
+
import { attachHookRestrictedAllowedTools, filterHookRestrictedContent, filterHookRestrictedContents, } from './hookToolRestrictions.js';
|
|
16
|
+
import { canonicalizeToolName } from './toolGovernance.js';
|
|
17
|
+
function isContentArray(value) {
|
|
18
|
+
return Array.isArray(value);
|
|
19
|
+
}
|
|
20
|
+
function getIContentAutomaticFunctionCallingHistory(content) {
|
|
21
|
+
const topLevelValue = content['automaticFunctionCallingHistory'];
|
|
22
|
+
if (isContentArray(topLevelValue)) {
|
|
23
|
+
return topLevelValue;
|
|
24
|
+
}
|
|
25
|
+
const metadataValue = content.metadata?.providerMetadata?.['automaticFunctionCallingHistory'];
|
|
26
|
+
return isContentArray(metadataValue) ? metadataValue : undefined;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Handles non-streaming direct message generation.
|
|
30
|
+
* Extracted from ChatSession to separate concerns.
|
|
31
|
+
*/
|
|
32
|
+
export class DirectMessageProcessor {
|
|
33
|
+
runtimeContext;
|
|
34
|
+
providerResolver;
|
|
35
|
+
providerRuntimeBuilder;
|
|
36
|
+
generationConfig;
|
|
37
|
+
historyService;
|
|
38
|
+
makePositionMatcher;
|
|
39
|
+
logger = new DebugLogger('llxprt:direct-message-processor');
|
|
40
|
+
constructor(runtimeContext, providerResolver, providerRuntimeBuilder, generationConfig, historyService, makePositionMatcher) {
|
|
41
|
+
this.runtimeContext = runtimeContext;
|
|
42
|
+
this.providerResolver = providerResolver;
|
|
43
|
+
this.providerRuntimeBuilder = providerRuntimeBuilder;
|
|
44
|
+
this.generationConfig = generationConfig;
|
|
45
|
+
this.historyService = historyService;
|
|
46
|
+
this.makePositionMatcher = makePositionMatcher;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Generates a direct (non-streaming) message response.
|
|
50
|
+
* Handles user input conversion, pre-send hooks, provider calls with retry,
|
|
51
|
+
* and post-response processing.
|
|
52
|
+
*/
|
|
53
|
+
async generateDirectMessage(params, prompt_id) {
|
|
54
|
+
const provider = this.providerResolver('DirectMessageProcessor');
|
|
55
|
+
// Widen to unknown for defensive runtime check (providerResolver may return null/undefined at runtime)
|
|
56
|
+
const providerRuntime = provider;
|
|
57
|
+
if (providerRuntime === undefined || providerRuntime === null) {
|
|
58
|
+
throw new Error('No active provider configured');
|
|
59
|
+
}
|
|
60
|
+
const userIContents = this._convertUserInput(params.message);
|
|
61
|
+
const requestContents = ContentConverters.toGeminiContents(userIContents);
|
|
62
|
+
logApiRequest(this.runtimeContext, this.runtimeContext.state, requestContents, this.runtimeContext.state.model, prompt_id);
|
|
63
|
+
const startTime = Date.now();
|
|
64
|
+
try {
|
|
65
|
+
const response = await this._executeWithRetry(provider, params, userIContents);
|
|
66
|
+
const durationMs = Date.now() - startTime;
|
|
67
|
+
logApiResponse(this.runtimeContext, this.runtimeContext.state, this.runtimeContext.state.model, prompt_id, durationMs, response.usageMetadata, JSON.stringify(response));
|
|
68
|
+
return response;
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
const durationMs = Date.now() - startTime;
|
|
72
|
+
logApiError(this.runtimeContext, this.runtimeContext.state, this.runtimeContext.state.model, prompt_id, durationMs, error);
|
|
73
|
+
throw error;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Converts user input message to IContent array.
|
|
78
|
+
*/
|
|
79
|
+
_convertUserInput(message) {
|
|
80
|
+
const userContent = normalizeToolInteractionInput(message);
|
|
81
|
+
const matcher = this.makePositionMatcher();
|
|
82
|
+
const userIContents = Array.isArray(userContent)
|
|
83
|
+
? userContent.map((content) => {
|
|
84
|
+
const turnKey = this.historyService.generateTurnKey();
|
|
85
|
+
const idGen = this.historyService.getIdGeneratorCallback(turnKey);
|
|
86
|
+
return ContentConverters.toIContent(content, idGen, matcher, turnKey);
|
|
87
|
+
})
|
|
88
|
+
: [
|
|
89
|
+
(() => {
|
|
90
|
+
const turnKey = this.historyService.generateTurnKey();
|
|
91
|
+
const idGen = this.historyService.getIdGeneratorCallback(turnKey);
|
|
92
|
+
return ContentConverters.toIContent(userContent, idGen, matcher, turnKey);
|
|
93
|
+
})(),
|
|
94
|
+
];
|
|
95
|
+
return userIContents;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Executes the provider call with retry logic.
|
|
99
|
+
*/
|
|
100
|
+
async _executeWithRetry(provider, params, userIContents) {
|
|
101
|
+
return retryWithBackoff(async () => this._executeDirectProviderCall(provider, params, userIContents), {
|
|
102
|
+
shouldRetryOnError: (error) => {
|
|
103
|
+
if (error instanceof ApiError && error.message) {
|
|
104
|
+
if (error.status === 400)
|
|
105
|
+
return false;
|
|
106
|
+
if (isSchemaDepthError(error.message))
|
|
107
|
+
return false;
|
|
108
|
+
if (error.status === 429)
|
|
109
|
+
return true;
|
|
110
|
+
if (error.status >= 500 && error.status < 600)
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
return false;
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Sets up an AbortController that propagates the upstream abort signal.
|
|
119
|
+
*/
|
|
120
|
+
_setupAbortController(upstreamAbortSignal) {
|
|
121
|
+
const timeoutController = new AbortController();
|
|
122
|
+
const timeoutSignal = timeoutController.signal;
|
|
123
|
+
const onAbort = () => timeoutController.abort();
|
|
124
|
+
upstreamAbortSignal?.addEventListener('abort', onAbort, { once: true });
|
|
125
|
+
if (upstreamAbortSignal?.aborted === true) {
|
|
126
|
+
onAbort();
|
|
127
|
+
}
|
|
128
|
+
return { timeoutController, timeoutSignal, onAbort };
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Consumes an async iterable of IContent, aggregating text across chunks.
|
|
132
|
+
* Handles idle timeout via watchdog when configured.
|
|
133
|
+
*/
|
|
134
|
+
async _consumeStreamResponse(streamResponse, timeoutController, timeoutSignal, upstreamAbortSignal, effectiveTimeoutMs, onAbort, allowedFunctionNames) {
|
|
135
|
+
let lastResponse;
|
|
136
|
+
let lastBlockWasNonText = false;
|
|
137
|
+
let aggregatedText = '';
|
|
138
|
+
try {
|
|
139
|
+
const iterator = streamResponse[Symbol.asyncIterator]();
|
|
140
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
|
|
141
|
+
while (true) {
|
|
142
|
+
// Use watchdog if timeout > 0, otherwise call iterator.next() directly
|
|
143
|
+
let nextResponse;
|
|
144
|
+
if (effectiveTimeoutMs > 0) {
|
|
145
|
+
nextResponse = await nextStreamEventWithIdleTimeout({
|
|
146
|
+
iterator,
|
|
147
|
+
timeoutMs: effectiveTimeoutMs,
|
|
148
|
+
signal: timeoutSignal,
|
|
149
|
+
onTimeout: () => {
|
|
150
|
+
// eslint-disable-next-line sonarjs/nested-control-flow -- Existing structure is intentionally preserved; refactoring this boundary is outside the lint slice.
|
|
151
|
+
if (upstreamAbortSignal?.aborted === true) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
timeoutController.abort();
|
|
155
|
+
},
|
|
156
|
+
createTimeoutError: () => createAbortError(),
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
// Watchdog disabled: call iterator.next() directly
|
|
161
|
+
nextResponse = await iterator.next();
|
|
162
|
+
}
|
|
163
|
+
if (nextResponse.done === true) {
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
const iContent = nextResponse.value;
|
|
167
|
+
const { filteredIContent, response } = this._filterStreamedIContent(iContent, allowedFunctionNames);
|
|
168
|
+
lastResponse = response;
|
|
169
|
+
const result = aggregateTextWithSpacing(
|
|
170
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
|
|
171
|
+
filteredIContent.blocks ?? [], aggregatedText, lastBlockWasNonText);
|
|
172
|
+
aggregatedText = result.text;
|
|
173
|
+
lastBlockWasNonText = result.lastBlockWasNonText;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
finally {
|
|
177
|
+
timeoutController.abort();
|
|
178
|
+
upstreamAbortSignal?.removeEventListener('abort', onAbort);
|
|
179
|
+
}
|
|
180
|
+
if (!lastResponse) {
|
|
181
|
+
throw new Error('No response from provider');
|
|
182
|
+
}
|
|
183
|
+
return {
|
|
184
|
+
lastResponse,
|
|
185
|
+
aggregatedText,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
_filterStreamedIContent(iContent, allowedFunctionNames) {
|
|
189
|
+
const filteredResponse = attachHookRestrictedAllowedTools(convertIContentToResponse(iContent), allowedFunctionNames);
|
|
190
|
+
const filteredIContent = ContentConverters.toIContent(filteredResponse.candidates?.[0]?.content ?? {
|
|
191
|
+
role: 'model',
|
|
192
|
+
parts: [],
|
|
193
|
+
});
|
|
194
|
+
const afcHistory = getIContentAutomaticFunctionCallingHistory(iContent);
|
|
195
|
+
const response = {
|
|
196
|
+
...filteredIContent,
|
|
197
|
+
metadata: {
|
|
198
|
+
...filteredIContent.metadata,
|
|
199
|
+
...iContent.metadata,
|
|
200
|
+
providerMetadata: {
|
|
201
|
+
...filteredIContent.metadata?.providerMetadata,
|
|
202
|
+
automaticFunctionCallingHistory: afcHistory !== undefined
|
|
203
|
+
? filterHookRestrictedContents(afcHistory, allowedFunctionNames).filter((content) => (content.parts?.length ?? 0) > 0)
|
|
204
|
+
: filteredResponse.automaticFunctionCallingHistory,
|
|
205
|
+
},
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
return { filteredIContent, response };
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Executes the direct provider call after applying pre-send hooks.
|
|
212
|
+
*/
|
|
213
|
+
async _executeDirectProviderCall(provider, params, userIContents) {
|
|
214
|
+
const { effectiveToolsFromConfig, contentsForApi, syntheticResponse, allowedFunctionNames, } = await this._applyPreSendHooks(params, userIContents);
|
|
215
|
+
if (syntheticResponse) {
|
|
216
|
+
return this._applyHookRestrictedAllowedTools(syntheticResponse, allowedFunctionNames);
|
|
217
|
+
}
|
|
218
|
+
const runtimeContext = this.providerRuntimeBuilder('DirectMessageProcessor.generateDirectMessage', this._buildProviderRuntimeMetadata(params, effectiveToolsFromConfig));
|
|
219
|
+
const upstreamAbortSignal = params.config?.abortSignal;
|
|
220
|
+
const { timeoutController, timeoutSignal, onAbort } = this._setupAbortController(upstreamAbortSignal);
|
|
221
|
+
const streamResponse = this._createDirectProviderStream(provider, contentsForApi, effectiveToolsFromConfig, runtimeContext, timeoutSignal);
|
|
222
|
+
const { lastResponse, aggregatedText } = await this._consumeStreamResponse(streamResponse, timeoutController, timeoutSignal, upstreamAbortSignal, resolveStreamIdleTimeoutMs(runtimeContext.config), onAbort, allowedFunctionNames);
|
|
223
|
+
return this._processDirectResponse(lastResponse, aggregatedText, runtimeContext.config, {
|
|
224
|
+
contents: contentsForApi,
|
|
225
|
+
tools: effectiveToolsFromConfig !== undefined &&
|
|
226
|
+
effectiveToolsFromConfig.length > 0
|
|
227
|
+
? effectiveToolsFromConfig
|
|
228
|
+
: undefined,
|
|
229
|
+
}, allowedFunctionNames);
|
|
230
|
+
}
|
|
231
|
+
_buildProviderRuntimeMetadata(params, effectiveToolsFromConfig) {
|
|
232
|
+
const directOverrides = this._extractDirectGeminiOverrides(params.config);
|
|
233
|
+
return {
|
|
234
|
+
toolCount: effectiveToolsFromConfig?.length ?? 0,
|
|
235
|
+
...(directOverrides ? { geminiDirectOverrides: directOverrides } : {}),
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
_createDirectProviderStream(provider, contentsForApi, effectiveToolsFromConfig, runtimeContext, timeoutSignal) {
|
|
239
|
+
this.logger.debug(() => '[DirectMessageProcessor] Calling provider.generateChatCompletion (non-stream retry path)', {
|
|
240
|
+
providerName: provider.name,
|
|
241
|
+
model: this.runtimeContext.state.model,
|
|
242
|
+
toolCount: effectiveToolsFromConfig?.length ?? 0,
|
|
243
|
+
baseUrl: this.runtimeContext.state.baseUrl,
|
|
244
|
+
});
|
|
245
|
+
if (typeof provider.generateChatCompletion !== 'function') {
|
|
246
|
+
throw new Error(`Provider ${provider.name} does not support IContent generation`);
|
|
247
|
+
}
|
|
248
|
+
return provider.generateChatCompletion({
|
|
249
|
+
contents: contentsForApi,
|
|
250
|
+
tools: effectiveToolsFromConfig !== undefined &&
|
|
251
|
+
effectiveToolsFromConfig.length > 0
|
|
252
|
+
? effectiveToolsFromConfig
|
|
253
|
+
: undefined,
|
|
254
|
+
config: runtimeContext.config,
|
|
255
|
+
runtime: runtimeContext,
|
|
256
|
+
invocation: {
|
|
257
|
+
signal: timeoutSignal,
|
|
258
|
+
},
|
|
259
|
+
settings: runtimeContext.settingsService,
|
|
260
|
+
metadata: runtimeContext.metadata,
|
|
261
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
|
|
262
|
+
userMemory: runtimeContext.config?.getUserMemory?.(),
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
_selectRequestTools(params) {
|
|
266
|
+
return params.config?.tools ?? this.generationConfig.tools;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Applies pre-send hooks (BeforeToolSelection and BeforeModel).
|
|
270
|
+
* Returns effective tools, modified contents, and optionally a synthetic response.
|
|
271
|
+
*/
|
|
272
|
+
async _applyPreSendHooks(params, userIContents) {
|
|
273
|
+
const requestTools = this._selectRequestTools(params);
|
|
274
|
+
const toolsFromConfig = Array.isArray(requestTools)
|
|
275
|
+
? requestTools
|
|
276
|
+
: [];
|
|
277
|
+
const configForHooks = this.runtimeContext.providerRuntime.config;
|
|
278
|
+
let contentsForApi = userIContents;
|
|
279
|
+
const toolSelection = configForHooks !== undefined
|
|
280
|
+
? await this._applyToolSelectionHook(configForHooks, toolsFromConfig)
|
|
281
|
+
: { tools: toolsFromConfig, allowedFunctionNames: undefined };
|
|
282
|
+
const effectiveToolsFromConfig = toolSelection.tools;
|
|
283
|
+
if (configForHooks) {
|
|
284
|
+
const hookResult = await this._handleBeforeModelHook(configForHooks, userIContents, effectiveToolsFromConfig);
|
|
285
|
+
if (hookResult.syntheticResponse) {
|
|
286
|
+
return {
|
|
287
|
+
effectiveToolsFromConfig,
|
|
288
|
+
contentsForApi,
|
|
289
|
+
syntheticResponse: hookResult.syntheticResponse,
|
|
290
|
+
allowedFunctionNames: toolSelection.allowedFunctionNames,
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
if (hookResult.modifiedContents) {
|
|
294
|
+
contentsForApi = hookResult.modifiedContents;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
return {
|
|
298
|
+
effectiveToolsFromConfig,
|
|
299
|
+
contentsForApi,
|
|
300
|
+
syntheticResponse: undefined,
|
|
301
|
+
allowedFunctionNames: toolSelection.allowedFunctionNames,
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
async _applyToolSelectionHook(configForHooks, toolsFromConfig) {
|
|
305
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
|
|
306
|
+
if (!configForHooks.getEnableHooks?.()) {
|
|
307
|
+
return { tools: toolsFromConfig, allowedFunctionNames: undefined };
|
|
308
|
+
}
|
|
309
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
|
|
310
|
+
const hookSystem = configForHooks.getHookSystem?.();
|
|
311
|
+
if (!hookSystem) {
|
|
312
|
+
return { tools: toolsFromConfig, allowedFunctionNames: undefined };
|
|
313
|
+
}
|
|
314
|
+
await hookSystem.initialize();
|
|
315
|
+
const toolSelectionResult = await hookSystem.fireBeforeToolSelectionEvent(toolsFromConfig);
|
|
316
|
+
const modifiedConfig = toolSelectionResult?.applyToolConfigModifications({
|
|
317
|
+
tools: toolsFromConfig,
|
|
318
|
+
});
|
|
319
|
+
if (modifiedConfig?.toolConfig &&
|
|
320
|
+
'allowedFunctionNames' in modifiedConfig.toolConfig) {
|
|
321
|
+
const allowedFunctions = modifiedConfig.toolConfig.allowedFunctionNames;
|
|
322
|
+
if (Array.isArray(allowedFunctions)) {
|
|
323
|
+
const allowedNames = new Set(allowedFunctions.map(canonicalizeToolName));
|
|
324
|
+
const filteredTools = toolsFromConfig
|
|
325
|
+
.map((toolGroup) => ({
|
|
326
|
+
...toolGroup,
|
|
327
|
+
functionDeclarations: toolGroup.functionDeclarations.filter((fn) => allowedNames.has(canonicalizeToolName(fn.name))),
|
|
328
|
+
}))
|
|
329
|
+
.filter((g) => g.functionDeclarations.length > 0);
|
|
330
|
+
return { tools: filteredTools, allowedFunctionNames: allowedFunctions };
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
return { tools: toolsFromConfig, allowedFunctionNames: undefined };
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Handles BeforeModel hook logic and returns synthetic response if needed.
|
|
337
|
+
*/
|
|
338
|
+
async _handleBeforeModelHook(configForHooks, userIContents, effectiveToolsFromConfig) {
|
|
339
|
+
const requestForHook = {
|
|
340
|
+
contents: userIContents,
|
|
341
|
+
tools: effectiveToolsFromConfig && effectiveToolsFromConfig.length > 0
|
|
342
|
+
? effectiveToolsFromConfig
|
|
343
|
+
: undefined,
|
|
344
|
+
};
|
|
345
|
+
let beforeModelResult = undefined;
|
|
346
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
|
|
347
|
+
if (configForHooks.getEnableHooks?.()) {
|
|
348
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
|
|
349
|
+
const hookSystem = configForHooks.getHookSystem?.();
|
|
350
|
+
if (hookSystem) {
|
|
351
|
+
await hookSystem.initialize();
|
|
352
|
+
beforeModelResult =
|
|
353
|
+
await hookSystem.fireBeforeModelEvent(requestForHook);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
if (beforeModelResult?.isBlockingDecision() === true) {
|
|
357
|
+
const syntheticResponse = beforeModelResult.getSyntheticResponse();
|
|
358
|
+
return {
|
|
359
|
+
syntheticResponse: syntheticResponse ??
|
|
360
|
+
{
|
|
361
|
+
candidates: [
|
|
362
|
+
{
|
|
363
|
+
content: {
|
|
364
|
+
role: 'model',
|
|
365
|
+
parts: [
|
|
366
|
+
{
|
|
367
|
+
text: beforeModelResult.getEffectiveReason() ||
|
|
368
|
+
'Request blocked by BeforeModel hook',
|
|
369
|
+
},
|
|
370
|
+
],
|
|
371
|
+
},
|
|
372
|
+
},
|
|
373
|
+
],
|
|
374
|
+
},
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
const syntheticResponse = beforeModelResult?.getSyntheticResponse();
|
|
378
|
+
if (syntheticResponse) {
|
|
379
|
+
return { syntheticResponse };
|
|
380
|
+
}
|
|
381
|
+
if (beforeModelResult) {
|
|
382
|
+
const modifiedRequest = beforeModelResult.applyLLMRequestModifications({
|
|
383
|
+
model: this.runtimeContext.state.model || '',
|
|
384
|
+
contents: ContentConverters.toGeminiContents(userIContents),
|
|
385
|
+
});
|
|
386
|
+
// Runtime-widen to handle potential undefined from API
|
|
387
|
+
const contentsRuntime = modifiedRequest.contents;
|
|
388
|
+
if (contentsRuntime !== undefined && contentsRuntime !== null) {
|
|
389
|
+
return {
|
|
390
|
+
modifiedContents: ContentConverters.toIContents(contentsRuntime),
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
return {};
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Processes the direct response after receiving from provider.
|
|
398
|
+
* Applies AfterModel hook and ensures text property is set.
|
|
399
|
+
*/
|
|
400
|
+
async _processDirectResponse(lastResponse, aggregatedText, config, llmRequest, allowedFunctionNames) {
|
|
401
|
+
let directResponse = this._applyHookRestrictedAllowedTools(convertIContentToResponse(lastResponse), allowedFunctionNames);
|
|
402
|
+
const automaticFunctionCallingHistory = lastResponse.metadata?.providerMetadata?.['automaticFunctionCallingHistory'];
|
|
403
|
+
if (isContentArray(automaticFunctionCallingHistory)) {
|
|
404
|
+
directResponse.automaticFunctionCallingHistory =
|
|
405
|
+
filterHookRestrictedContents(automaticFunctionCallingHistory, allowedFunctionNames).filter((content) => (content.parts?.length ?? 0) > 0);
|
|
406
|
+
}
|
|
407
|
+
let afterModelModifiedResponse = false;
|
|
408
|
+
// Trigger AfterModel hook
|
|
409
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
|
|
410
|
+
if (config?.getEnableHooks?.() === true) {
|
|
411
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
|
|
412
|
+
const hookSystem = config.getHookSystem?.();
|
|
413
|
+
if (hookSystem) {
|
|
414
|
+
await hookSystem.initialize();
|
|
415
|
+
const filteredContent = filterHookRestrictedContent(directResponse.candidates?.[0]?.content ?? {
|
|
416
|
+
role: 'model',
|
|
417
|
+
parts: [],
|
|
418
|
+
}, allowedFunctionNames);
|
|
419
|
+
const afterModelResult = await hookSystem.fireAfterModelEvent(llmRequest ?? {}, ContentConverters.toIContent(filteredContent));
|
|
420
|
+
if (afterModelResult) {
|
|
421
|
+
const modifiedResponse = afterModelResult.getModifiedResponse();
|
|
422
|
+
// eslint-disable-next-line sonarjs/nested-control-flow -- Existing structure is intentionally preserved; refactoring this boundary is outside the lint slice.
|
|
423
|
+
if (modifiedResponse) {
|
|
424
|
+
directResponse = this._applyHookRestrictedAllowedTools(modifiedResponse, allowedFunctionNames);
|
|
425
|
+
afterModelModifiedResponse = true;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
const canAppendAggregatedText = aggregatedText.trim() !== '' && !afterModelModifiedResponse;
|
|
431
|
+
// Ensure text content is included
|
|
432
|
+
if (canAppendAggregatedText) {
|
|
433
|
+
const candidate = directResponse.candidates?.[0];
|
|
434
|
+
if (candidate) {
|
|
435
|
+
const parts = candidate.content?.parts ?? [];
|
|
436
|
+
const hasText = parts.some((part) => typeof part.text === 'string' && part.text.trim() !== '');
|
|
437
|
+
if (!hasText) {
|
|
438
|
+
candidate.content = candidate.content ?? {
|
|
439
|
+
role: 'model',
|
|
440
|
+
parts: [],
|
|
441
|
+
};
|
|
442
|
+
candidate.content.parts = [
|
|
443
|
+
...(candidate.content.parts ?? []),
|
|
444
|
+
{ text: aggregatedText },
|
|
445
|
+
];
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
Object.defineProperty(directResponse, 'text', {
|
|
449
|
+
configurable: true,
|
|
450
|
+
get() {
|
|
451
|
+
return aggregatedText;
|
|
452
|
+
},
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
return directResponse;
|
|
456
|
+
}
|
|
457
|
+
_applyHookRestrictedAllowedTools(response, allowedFunctionNames) {
|
|
458
|
+
return attachHookRestrictedAllowedTools(response, allowedFunctionNames);
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Extracts direct Gemini overrides from config.
|
|
462
|
+
*/
|
|
463
|
+
_extractDirectGeminiOverrides(config) {
|
|
464
|
+
if (!config) {
|
|
465
|
+
return undefined;
|
|
466
|
+
}
|
|
467
|
+
const overrides = {};
|
|
468
|
+
const rawConfig = config;
|
|
469
|
+
if ('serverTools' in rawConfig) {
|
|
470
|
+
overrides.serverTools = rawConfig.serverTools;
|
|
471
|
+
}
|
|
472
|
+
if ('toolConfig' in rawConfig) {
|
|
473
|
+
overrides.toolConfig = rawConfig.toolConfig;
|
|
474
|
+
}
|
|
475
|
+
return Object.keys(overrides).length > 0 ? overrides : undefined;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
//# sourceMappingURL=DirectMessageProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DirectMessageProcessor.js","sourceRoot":"","sources":["../../../src/core/DirectMessageProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { type IdeContext } from '@vybestack/llxprt-code-ide-integration';
|
|
7
|
+
import type { Config } from '@vybestack/llxprt-code-core/config/config.js';
|
|
8
|
+
/**
|
|
9
|
+
* Tracks IDE context state and computes full vs incremental deltas
|
|
10
|
+
* for injecting editor state into model turns.
|
|
11
|
+
*/
|
|
12
|
+
export declare class IdeContextTracker {
|
|
13
|
+
private lastSentIdeContext;
|
|
14
|
+
private forceFullIdeContext;
|
|
15
|
+
private readonly logger;
|
|
16
|
+
private readonly config;
|
|
17
|
+
constructor(config: Config);
|
|
18
|
+
/**
|
|
19
|
+
* Forces the next call to getContextParts to return a full context snapshot.
|
|
20
|
+
*/
|
|
21
|
+
resetContext(): void;
|
|
22
|
+
/**
|
|
23
|
+
* Returns the context parts (full or incremental delta) based on current state.
|
|
24
|
+
* Also returns the new IDE context so the caller can store it for diffing.
|
|
25
|
+
*/
|
|
26
|
+
getContextParts(forceFullContext: boolean): {
|
|
27
|
+
contextParts: string[];
|
|
28
|
+
newIdeContext: IdeContext | undefined;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Builds the complete IDE context (all open files, active file, cursor, selection).
|
|
32
|
+
*/
|
|
33
|
+
buildFullContext(): {
|
|
34
|
+
contextParts: string[];
|
|
35
|
+
newIdeContext: IdeContext | undefined;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Computes what changed in the IDE context since the last call.
|
|
39
|
+
*/
|
|
40
|
+
buildIncrementalDelta(): {
|
|
41
|
+
contextParts: string[];
|
|
42
|
+
newIdeContext: IdeContext | undefined;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Detects and records changes to the active file (path, cursor, selection).
|
|
46
|
+
*/
|
|
47
|
+
private detectActiveFileChanges;
|
|
48
|
+
/**
|
|
49
|
+
* Detects cursor and selection changes for the same active file.
|
|
50
|
+
*/
|
|
51
|
+
private detectCursorAndSelectionChanges;
|
|
52
|
+
/**
|
|
53
|
+
* Records the IDE context that was last sent so the next call can compute a delta.
|
|
54
|
+
*/
|
|
55
|
+
recordSentContext(ideCtx: IdeContext | undefined): void;
|
|
56
|
+
}
|