@google/gemini-cli-a2a-server 0.13.0-nightly.20251030.42c79c64 → 0.13.0-nightly.20251031.c89bc30d
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/a2a-server.mjs
CHANGED
|
@@ -285600,6 +285600,7 @@ var HybridTokenStorage = class extends BaseTokenStorage {
|
|
|
285600
285600
|
import * as path14 from "node:path";
|
|
285601
285601
|
import * as os5 from "node:os";
|
|
285602
285602
|
import { promises as fs21 } from "node:fs";
|
|
285603
|
+
init_events();
|
|
285603
285604
|
var KEYCHAIN_SERVICE_NAME = "gemini-cli-oauth";
|
|
285604
285605
|
var MAIN_ACCOUNT_KEY = "main-account";
|
|
285605
285606
|
var OAuthCredentialStorage = class {
|
|
@@ -287210,6 +287211,7 @@ var API_REQUEST_LATENCY = "gemini_cli.api.request.latency";
|
|
|
287210
287211
|
var TOKEN_USAGE = "gemini_cli.token.usage";
|
|
287211
287212
|
var SESSION_COUNT = "gemini_cli.session.count";
|
|
287212
287213
|
var FILE_OPERATION_COUNT = "gemini_cli.file.operation.count";
|
|
287214
|
+
var LINES_CHANGED = "gemini_cli.lines.changed";
|
|
287213
287215
|
var INVALID_CHUNK_COUNT = "gemini_cli.chat.invalid_chunk.count";
|
|
287214
287216
|
var CONTENT_RETRY_COUNT = "gemini_cli.chat.content_retry.count";
|
|
287215
287217
|
var CONTENT_RETRY_FAILURE_COUNT = "gemini_cli.chat.content_retry_failure.count";
|
|
@@ -287268,6 +287270,12 @@ var COUNTER_DEFINITIONS = {
|
|
|
287268
287270
|
assign: (c4) => fileOperationCounter = c4,
|
|
287269
287271
|
attributes: {}
|
|
287270
287272
|
},
|
|
287273
|
+
[LINES_CHANGED]: {
|
|
287274
|
+
description: "Number of lines changed (from file diffs).",
|
|
287275
|
+
valueType: ValueType.INT,
|
|
287276
|
+
assign: (c4) => linesChangedCounter = c4,
|
|
287277
|
+
attributes: {}
|
|
287278
|
+
},
|
|
287271
287279
|
[INVALID_CHUNK_COUNT]: {
|
|
287272
287280
|
description: "Counts invalid chunks received from a stream.",
|
|
287273
287281
|
valueType: ValueType.INT,
|
|
@@ -287512,6 +287520,7 @@ var apiRequestLatencyHistogram;
|
|
|
287512
287520
|
var tokenUsageCounter;
|
|
287513
287521
|
var sessionCounter;
|
|
287514
287522
|
var fileOperationCounter;
|
|
287523
|
+
var linesChangedCounter;
|
|
287515
287524
|
var chatCompressionCounter;
|
|
287516
287525
|
var invalidChunkCounter;
|
|
287517
287526
|
var contentRetryCounter;
|
|
@@ -287627,6 +287636,17 @@ function recordFileOperationMetric(config2, attributes) {
|
|
|
287627
287636
|
...attributes
|
|
287628
287637
|
});
|
|
287629
287638
|
}
|
|
287639
|
+
function recordLinesChanged(config2, lines, changeType, attributes) {
|
|
287640
|
+
if (!linesChangedCounter || !isMetricsInitialized)
|
|
287641
|
+
return;
|
|
287642
|
+
if (!Number.isFinite(lines) || lines <= 0)
|
|
287643
|
+
return;
|
|
287644
|
+
linesChangedCounter.add(lines, {
|
|
287645
|
+
...baseMetricDefinition.getCommonAttributes(config2),
|
|
287646
|
+
type: changeType,
|
|
287647
|
+
...attributes ?? {}
|
|
287648
|
+
});
|
|
287649
|
+
}
|
|
287630
287650
|
function recordContentRetry(config2) {
|
|
287631
287651
|
if (!contentRetryCounter || !isMetricsInitialized)
|
|
287632
287652
|
return;
|
|
@@ -288967,8 +288987,8 @@ var Float64Vector = import_vector.default.Float64Vector;
|
|
|
288967
288987
|
var PointerVector = import_vector.default.PointerVector;
|
|
288968
288988
|
|
|
288969
288989
|
// packages/core/dist/src/generated/git-commit.js
|
|
288970
|
-
var GIT_COMMIT_INFO = "
|
|
288971
|
-
var CLI_VERSION = "0.13.0-nightly.
|
|
288990
|
+
var GIT_COMMIT_INFO = "c89bc30d";
|
|
288991
|
+
var CLI_VERSION = "0.13.0-nightly.20251031.c89bc30d";
|
|
288972
288992
|
|
|
288973
288993
|
// packages/core/dist/src/ide/detect-ide.js
|
|
288974
288994
|
var IDE_DEFINITIONS = {
|
|
@@ -289415,6 +289435,12 @@ var ClearcutLogger = class _ClearcutLogger {
|
|
|
289415
289435
|
}
|
|
289416
289436
|
}
|
|
289417
289437
|
}
|
|
289438
|
+
if (event.extension_id) {
|
|
289439
|
+
data.push({
|
|
289440
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_EXTENSION_ID,
|
|
289441
|
+
value: event.extension_id
|
|
289442
|
+
});
|
|
289443
|
+
}
|
|
289418
289444
|
const logEvent = this.createLogEvent(EventNames.TOOL_CALL, data);
|
|
289419
289445
|
this.enqueueLogEvent(logEvent);
|
|
289420
289446
|
this.flushIfNeeded();
|
|
@@ -289595,6 +289621,12 @@ var ClearcutLogger = class _ClearcutLogger {
|
|
|
289595
289621
|
value: JSON.stringify(event.status)
|
|
289596
289622
|
});
|
|
289597
289623
|
}
|
|
289624
|
+
if (event.extension_id) {
|
|
289625
|
+
data.push({
|
|
289626
|
+
gemini_cli_key: EventMetadataKey.GEMINI_CLI_EXTENSION_ID,
|
|
289627
|
+
value: event.extension_id
|
|
289628
|
+
});
|
|
289629
|
+
}
|
|
289598
289630
|
this.enqueueLogEvent(this.createLogEvent(EventNames.SLASH_COMMAND, data));
|
|
289599
289631
|
this.flushIfNeeded();
|
|
289600
289632
|
}
|
|
@@ -291093,14 +291125,22 @@ function logToolCall(config2, event) {
|
|
|
291093
291125
|
function_name: event.function_name,
|
|
291094
291126
|
success: event.success,
|
|
291095
291127
|
decision: event.decision,
|
|
291096
|
-
tool_type: event.tool_type
|
|
291097
|
-
...event.metadata ? {
|
|
291098
|
-
model_added_lines: event.metadata["model_added_lines"],
|
|
291099
|
-
model_removed_lines: event.metadata["model_removed_lines"],
|
|
291100
|
-
user_added_lines: event.metadata["user_added_lines"],
|
|
291101
|
-
user_removed_lines: event.metadata["user_removed_lines"]
|
|
291102
|
-
} : {}
|
|
291128
|
+
tool_type: event.tool_type
|
|
291103
291129
|
});
|
|
291130
|
+
if (event.metadata) {
|
|
291131
|
+
const added = event.metadata["model_added_lines"];
|
|
291132
|
+
if (typeof added === "number" && added > 0) {
|
|
291133
|
+
recordLinesChanged(config2, added, "added", {
|
|
291134
|
+
function_name: event.function_name
|
|
291135
|
+
});
|
|
291136
|
+
}
|
|
291137
|
+
const removed = event.metadata["model_removed_lines"];
|
|
291138
|
+
if (typeof removed === "number" && removed > 0) {
|
|
291139
|
+
recordLinesChanged(config2, removed, "removed", {
|
|
291140
|
+
function_name: event.function_name
|
|
291141
|
+
});
|
|
291142
|
+
}
|
|
291143
|
+
}
|
|
291104
291144
|
}
|
|
291105
291145
|
function logToolOutputTruncated(config2, event) {
|
|
291106
291146
|
ClearcutLogger.getInstance(config2)?.logToolOutputTruncatedEvent(event);
|
|
@@ -291709,7 +291749,7 @@ async function createContentGenerator(config2, gcConfig, sessionId2) {
|
|
|
291709
291749
|
if (gcConfig.fakeResponses) {
|
|
291710
291750
|
return FakeContentGenerator.fromFile(gcConfig.fakeResponses);
|
|
291711
291751
|
}
|
|
291712
|
-
const version3 = "0.13.0-nightly.
|
|
291752
|
+
const version3 = "0.13.0-nightly.20251031.c89bc30d";
|
|
291713
291753
|
const userAgent = `GeminiCLI/${version3} (${process.platform}; ${process.arch})`;
|
|
291714
291754
|
const baseHeaders = {
|
|
291715
291755
|
"User-Agent": userAgent
|
|
@@ -299506,6 +299546,7 @@ async function openBrowserSecurely(url4) {
|
|
|
299506
299546
|
}
|
|
299507
299547
|
|
|
299508
299548
|
// packages/core/dist/src/mcp/oauth-token-storage.js
|
|
299549
|
+
init_events();
|
|
299509
299550
|
import { promises as fs25 } from "node:fs";
|
|
299510
299551
|
import * as path17 from "node:path";
|
|
299511
299552
|
var MCPOAuthTokenStorage = class {
|
|
@@ -300264,6 +300305,7 @@ var McpClient = class {
|
|
|
300264
300305
|
if (this.status !== MCPServerStatus.CONNECTED) {
|
|
300265
300306
|
return;
|
|
300266
300307
|
}
|
|
300308
|
+
this.toolRegistry.removeMcpToolsByServer(this.serverName);
|
|
300267
300309
|
this.updateStatus(MCPServerStatus.DISCONNECTING);
|
|
300268
300310
|
const client = this.client;
|
|
300269
300311
|
this.client = void 0;
|
|
@@ -300829,40 +300871,123 @@ init_events();
|
|
|
300829
300871
|
var McpClientManager = class {
|
|
300830
300872
|
clients = /* @__PURE__ */ new Map();
|
|
300831
300873
|
toolRegistry;
|
|
300874
|
+
cliConfig;
|
|
300875
|
+
// If we have ongoing MCP client discovery, this completes once that is done.
|
|
300876
|
+
discoveryPromise;
|
|
300832
300877
|
discoveryState = MCPDiscoveryState.NOT_STARTED;
|
|
300833
300878
|
eventEmitter;
|
|
300834
|
-
constructor(toolRegistry, eventEmitter) {
|
|
300879
|
+
constructor(toolRegistry, cliConfig, eventEmitter) {
|
|
300835
300880
|
this.toolRegistry = toolRegistry;
|
|
300881
|
+
this.cliConfig = cliConfig;
|
|
300836
300882
|
this.eventEmitter = eventEmitter;
|
|
300883
|
+
if (this.cliConfig.getEnableExtensionReloading()) {
|
|
300884
|
+
this.cliConfig.getExtensionLoader().extensionEvents().on("extensionLoaded", (event) => this.loadExtension(event.extension)).on("extensionEnabled", (event) => this.loadExtension(event.extension)).on("extensionDisabled", (event) => this.unloadExtension(event.extension)).on("extensionUnloaded", (event) => this.unloadExtension(event.extension));
|
|
300885
|
+
}
|
|
300886
|
+
}
|
|
300887
|
+
/**
|
|
300888
|
+
* For all the MCP servers associated with this extension:
|
|
300889
|
+
*
|
|
300890
|
+
* - Removes all its MCP servers from the global configuration object.
|
|
300891
|
+
* - Disconnects all MCP clients from their servers.
|
|
300892
|
+
* - Updates the Gemini chat configuration to load the new tools.
|
|
300893
|
+
*/
|
|
300894
|
+
async unloadExtension(extension) {
|
|
300895
|
+
debugLogger.log(`Unloading extension: ${extension.name}`);
|
|
300896
|
+
await Promise.all(Object.keys(extension.mcpServers ?? {}).map((name4) => {
|
|
300897
|
+
const newMcpServers = {
|
|
300898
|
+
...this.cliConfig.getMcpServers()
|
|
300899
|
+
};
|
|
300900
|
+
delete newMcpServers[name4];
|
|
300901
|
+
this.cliConfig.setMcpServers(newMcpServers);
|
|
300902
|
+
return this.disconnectClient(name4);
|
|
300903
|
+
}));
|
|
300904
|
+
this.cliConfig.getGeminiClient().setTools();
|
|
300905
|
+
}
|
|
300906
|
+
/**
|
|
300907
|
+
* For all the MCP servers associated with this extension:
|
|
300908
|
+
*
|
|
300909
|
+
* - Adds all its MCP servers to the global configuration object.
|
|
300910
|
+
* - Connects MCP clients to each server and discovers their tools.
|
|
300911
|
+
* - Updates the Gemini chat configuration to load the new tools.
|
|
300912
|
+
*/
|
|
300913
|
+
async loadExtension(extension) {
|
|
300914
|
+
debugLogger.log(`Loading extension: ${extension.name}`);
|
|
300915
|
+
await Promise.all(Object.entries(extension.mcpServers ?? {}).map(([name4, config2]) => {
|
|
300916
|
+
this.cliConfig.setMcpServers({
|
|
300917
|
+
...this.cliConfig.getMcpServers(),
|
|
300918
|
+
[name4]: config2
|
|
300919
|
+
});
|
|
300920
|
+
return this.discoverMcpTools(name4, config2);
|
|
300921
|
+
}));
|
|
300922
|
+
this.cliConfig.getGeminiClient().setTools();
|
|
300923
|
+
}
|
|
300924
|
+
async disconnectClient(name4) {
|
|
300925
|
+
const existing = this.clients.get(name4);
|
|
300926
|
+
if (existing) {
|
|
300927
|
+
try {
|
|
300928
|
+
this.clients.delete(name4);
|
|
300929
|
+
this.eventEmitter?.emit("mcp-client-update", this.clients);
|
|
300930
|
+
await existing.disconnect();
|
|
300931
|
+
} catch (error) {
|
|
300932
|
+
debugLogger.warn(`Error stopping client '${name4}': ${getErrorMessage(error)}`);
|
|
300933
|
+
}
|
|
300934
|
+
}
|
|
300935
|
+
}
|
|
300936
|
+
discoverMcpTools(name4, config2) {
|
|
300937
|
+
if (!this.cliConfig.isTrustedFolder()) {
|
|
300938
|
+
return;
|
|
300939
|
+
}
|
|
300940
|
+
if (config2.extension && !config2.extension.isActive) {
|
|
300941
|
+
return;
|
|
300942
|
+
}
|
|
300943
|
+
const currentDiscoveryPromise = new Promise((resolve13, _reject) => {
|
|
300944
|
+
(async () => {
|
|
300945
|
+
try {
|
|
300946
|
+
await this.disconnectClient(name4);
|
|
300947
|
+
const client = new McpClient(name4, config2, this.toolRegistry, this.cliConfig.getPromptRegistry(), this.cliConfig.getWorkspaceContext(), this.cliConfig.getDebugMode());
|
|
300948
|
+
this.clients.set(name4, client);
|
|
300949
|
+
this.eventEmitter?.emit("mcp-client-update", this.clients);
|
|
300950
|
+
try {
|
|
300951
|
+
await client.connect();
|
|
300952
|
+
await client.discover(this.cliConfig);
|
|
300953
|
+
this.eventEmitter?.emit("mcp-client-update", this.clients);
|
|
300954
|
+
} catch (error) {
|
|
300955
|
+
this.eventEmitter?.emit("mcp-client-update", this.clients);
|
|
300956
|
+
coreEvents.emitFeedback("error", `Error during discovery for server '${name4}': ${getErrorMessage(error)}`, error);
|
|
300957
|
+
}
|
|
300958
|
+
} finally {
|
|
300959
|
+
resolve13();
|
|
300960
|
+
}
|
|
300961
|
+
})();
|
|
300962
|
+
});
|
|
300963
|
+
if (this.discoveryPromise) {
|
|
300964
|
+
this.discoveryPromise = this.discoveryPromise.then(() => currentDiscoveryPromise);
|
|
300965
|
+
} else {
|
|
300966
|
+
this.discoveryState = MCPDiscoveryState.IN_PROGRESS;
|
|
300967
|
+
this.discoveryPromise = currentDiscoveryPromise;
|
|
300968
|
+
}
|
|
300969
|
+
const currentPromise = this.discoveryPromise;
|
|
300970
|
+
currentPromise.then((_) => {
|
|
300971
|
+
if (currentPromise === this.discoveryPromise) {
|
|
300972
|
+
this.discoveryPromise = void 0;
|
|
300973
|
+
this.discoveryState = MCPDiscoveryState.COMPLETED;
|
|
300974
|
+
}
|
|
300975
|
+
});
|
|
300976
|
+
return currentPromise;
|
|
300837
300977
|
}
|
|
300838
300978
|
/**
|
|
300839
300979
|
* Initiates the tool discovery process for all configured MCP servers.
|
|
300840
300980
|
* It connects to each server, discovers its available tools, and registers
|
|
300841
300981
|
* them with the `ToolRegistry`.
|
|
300842
300982
|
*/
|
|
300843
|
-
async discoverAllMcpTools(
|
|
300844
|
-
if (!cliConfig.isTrustedFolder()) {
|
|
300983
|
+
async discoverAllMcpTools() {
|
|
300984
|
+
if (!this.cliConfig.isTrustedFolder()) {
|
|
300845
300985
|
return;
|
|
300846
300986
|
}
|
|
300847
300987
|
await this.stop();
|
|
300848
|
-
const servers = populateMcpServerCommand(cliConfig.getMcpServers() || {}, cliConfig.getMcpServerCommand());
|
|
300849
|
-
this.discoveryState = MCPDiscoveryState.IN_PROGRESS;
|
|
300988
|
+
const servers = populateMcpServerCommand(this.cliConfig.getMcpServers() || {}, this.cliConfig.getMcpServerCommand());
|
|
300850
300989
|
this.eventEmitter?.emit("mcp-client-update", this.clients);
|
|
300851
|
-
|
|
300852
|
-
const client = new McpClient(name4, config2, this.toolRegistry, cliConfig.getPromptRegistry(), cliConfig.getWorkspaceContext(), cliConfig.getDebugMode());
|
|
300853
|
-
this.clients.set(name4, client);
|
|
300854
|
-
this.eventEmitter?.emit("mcp-client-update", this.clients);
|
|
300855
|
-
try {
|
|
300856
|
-
await client.connect();
|
|
300857
|
-
await client.discover(cliConfig);
|
|
300858
|
-
this.eventEmitter?.emit("mcp-client-update", this.clients);
|
|
300859
|
-
} catch (error) {
|
|
300860
|
-
this.eventEmitter?.emit("mcp-client-update", this.clients);
|
|
300861
|
-
coreEvents.emitFeedback("error", `Error during discovery for server '${name4}': ${getErrorMessage(error)}`, error);
|
|
300862
|
-
}
|
|
300863
|
-
});
|
|
300864
|
-
await Promise.all(discoveryPromises);
|
|
300865
|
-
this.discoveryState = MCPDiscoveryState.COMPLETED;
|
|
300990
|
+
await Promise.all(Object.entries(servers).map(async ([name4, config2]) => this.discoverMcpTools(name4, config2)));
|
|
300866
300991
|
}
|
|
300867
300992
|
/**
|
|
300868
300993
|
* Stops all running local MCP servers and closes all client connections.
|
|
@@ -301010,7 +301135,7 @@ var ToolRegistry = class {
|
|
|
301010
301135
|
messageBus;
|
|
301011
301136
|
constructor(config2, eventEmitter) {
|
|
301012
301137
|
this.config = config2;
|
|
301013
|
-
this.mcpClientManager = new McpClientManager(this, eventEmitter);
|
|
301138
|
+
this.mcpClientManager = new McpClientManager(this, config2, eventEmitter);
|
|
301014
301139
|
}
|
|
301015
301140
|
setMessageBus(messageBus) {
|
|
301016
301141
|
this.messageBus = messageBus;
|
|
@@ -301059,7 +301184,7 @@ var ToolRegistry = class {
|
|
|
301059
301184
|
this.removeDiscoveredTools();
|
|
301060
301185
|
this.config.getPromptRegistry().clear();
|
|
301061
301186
|
await this.discoverAndRegisterToolsFromCommand();
|
|
301062
|
-
await this.mcpClientManager.discoverAllMcpTools(
|
|
301187
|
+
await this.mcpClientManager.discoverAllMcpTools();
|
|
301063
301188
|
}
|
|
301064
301189
|
/**
|
|
301065
301190
|
* Discovers tools from project (if available and configured).
|
|
@@ -301069,7 +301194,7 @@ var ToolRegistry = class {
|
|
|
301069
301194
|
async discoverMcpTools() {
|
|
301070
301195
|
this.removeDiscoveredTools();
|
|
301071
301196
|
this.config.getPromptRegistry().clear();
|
|
301072
|
-
await this.mcpClientManager.discoverAllMcpTools(
|
|
301197
|
+
await this.mcpClientManager.discoverAllMcpTools();
|
|
301073
301198
|
}
|
|
301074
301199
|
/**
|
|
301075
301200
|
* Restarts all MCP servers and re-discovers tools.
|
|
@@ -326441,8 +326566,7 @@ var EditToolInvocation2 = class extends BaseToolInvocation {
|
|
|
326441
326566
|
"Proposed",
|
|
326442
326567
|
DEFAULT_DIFF_OPTIONS
|
|
326443
326568
|
);
|
|
326444
|
-
const
|
|
326445
|
-
const diffStat = getDiffStat(fileName, editData.currentContent ?? "", originallyProposedContent, this.params.new_string);
|
|
326569
|
+
const diffStat = getDiffStat(fileName, editData.currentContent ?? "", editData.newContent, this.params.new_string);
|
|
326446
326570
|
displayResult = {
|
|
326447
326571
|
fileDiff,
|
|
326448
326572
|
fileName,
|
|
@@ -339873,6 +339997,7 @@ var GeminiChat = class {
|
|
|
339873
339997
|
// model.
|
|
339874
339998
|
sendPromise = Promise.resolve();
|
|
339875
339999
|
chatRecordingService;
|
|
340000
|
+
lastPromptTokenCount;
|
|
339876
340001
|
constructor(config2, generationConfig = {}, history = []) {
|
|
339877
340002
|
this.config = config2;
|
|
339878
340003
|
this.generationConfig = generationConfig;
|
|
@@ -339880,6 +340005,7 @@ var GeminiChat = class {
|
|
|
339880
340005
|
validateHistory2(history);
|
|
339881
340006
|
this.chatRecordingService = new ChatRecordingService(config2);
|
|
339882
340007
|
this.chatRecordingService.initialize();
|
|
340008
|
+
this.lastPromptTokenCount = Math.ceil(JSON.stringify(this.history).length / 4);
|
|
339883
340009
|
}
|
|
339884
340010
|
setSystemInstruction(sysInstr) {
|
|
339885
340011
|
this.generationConfig.systemInstruction = sysInstr;
|
|
@@ -340095,7 +340221,7 @@ This error was probably caused by cyclic schema references in one of the followi
|
|
|
340095
340221
|
if (chunk2.usageMetadata) {
|
|
340096
340222
|
this.chatRecordingService.recordMessageTokens(chunk2.usageMetadata);
|
|
340097
340223
|
if (chunk2.usageMetadata.promptTokenCount !== void 0) {
|
|
340098
|
-
|
|
340224
|
+
this.lastPromptTokenCount = chunk2.usageMetadata.promptTokenCount;
|
|
340099
340225
|
}
|
|
340100
340226
|
}
|
|
340101
340227
|
yield chunk2;
|
|
@@ -340126,6 +340252,9 @@ This error was probably caused by cyclic schema references in one of the followi
|
|
|
340126
340252
|
}
|
|
340127
340253
|
this.history.push({ role: "model", parts: consolidatedParts });
|
|
340128
340254
|
}
|
|
340255
|
+
getLastPromptTokenCount() {
|
|
340256
|
+
return this.lastPromptTokenCount;
|
|
340257
|
+
}
|
|
340129
340258
|
/**
|
|
340130
340259
|
* Gets the chat recording service instance.
|
|
340131
340260
|
*/
|
|
@@ -341144,7 +341273,7 @@ var LoopDetectionService = class {
|
|
|
341144
341273
|
};
|
|
341145
341274
|
|
|
341146
341275
|
// packages/core/dist/src/services/chatCompressionService.js
|
|
341147
|
-
var
|
|
341276
|
+
var DEFAULT_COMPRESSION_TOKEN_THRESHOLD = 0.2;
|
|
341148
341277
|
var COMPRESSION_PRESERVE_THRESHOLD = 0.3;
|
|
341149
341278
|
function findCompressSplitPoint(contents, fraction) {
|
|
341150
341279
|
if (fraction <= 0 || fraction >= 1) {
|
|
@@ -341184,10 +341313,9 @@ var ChatCompressionService = class {
|
|
|
341184
341313
|
}
|
|
341185
341314
|
};
|
|
341186
341315
|
}
|
|
341187
|
-
const originalTokenCount =
|
|
341188
|
-
const contextPercentageThreshold = config2.getChatCompression()?.contextPercentageThreshold;
|
|
341316
|
+
const originalTokenCount = chat.getLastPromptTokenCount();
|
|
341189
341317
|
if (!force) {
|
|
341190
|
-
const threshold =
|
|
341318
|
+
const threshold = config2.getCompressionThreshold() ?? DEFAULT_COMPRESSION_TOKEN_THRESHOLD;
|
|
341191
341319
|
if (originalTokenCount < threshold * tokenLimit(model)) {
|
|
341192
341320
|
return {
|
|
341193
341321
|
newHistory: null,
|
|
@@ -341257,7 +341385,6 @@ var ChatCompressionService = class {
|
|
|
341257
341385
|
}
|
|
341258
341386
|
};
|
|
341259
341387
|
} else {
|
|
341260
|
-
uiTelemetryService.setLastPromptTokenCount(newTokenCount);
|
|
341261
341388
|
return {
|
|
341262
341389
|
newHistory: extraHistory,
|
|
341263
341390
|
info: {
|
|
@@ -341300,8 +341427,14 @@ var GeminiClient = class {
|
|
|
341300
341427
|
this.compressionService = new ChatCompressionService();
|
|
341301
341428
|
this.lastPromptId = this.config.getSessionId();
|
|
341302
341429
|
}
|
|
341430
|
+
updateTelemetryTokenCount() {
|
|
341431
|
+
if (this.chat) {
|
|
341432
|
+
uiTelemetryService.setLastPromptTokenCount(this.chat.getLastPromptTokenCount());
|
|
341433
|
+
}
|
|
341434
|
+
}
|
|
341303
341435
|
async initialize() {
|
|
341304
341436
|
this.chat = await this.startChat();
|
|
341437
|
+
this.updateTelemetryTokenCount();
|
|
341305
341438
|
}
|
|
341306
341439
|
getContentGeneratorOrFail() {
|
|
341307
341440
|
if (!this.config.getContentGenerator()) {
|
|
@@ -341339,6 +341472,7 @@ var GeminiClient = class {
|
|
|
341339
341472
|
}
|
|
341340
341473
|
async resetChat() {
|
|
341341
341474
|
this.chat = await this.startChat();
|
|
341475
|
+
this.updateTelemetryTokenCount();
|
|
341342
341476
|
}
|
|
341343
341477
|
getChatRecordingService() {
|
|
341344
341478
|
return this.chat?.getChatRecordingService();
|
|
@@ -341536,7 +341670,7 @@ var GeminiClient = class {
|
|
|
341536
341670
|
}
|
|
341537
341671
|
const modelForLimitCheck = this._getEffectiveModelForCurrentTurn();
|
|
341538
341672
|
const estimatedRequestTokenCount = Math.floor(JSON.stringify(request3).length / 4);
|
|
341539
|
-
const remainingTokenCount = tokenLimit(modelForLimitCheck) -
|
|
341673
|
+
const remainingTokenCount = tokenLimit(modelForLimitCheck) - this.getChat().getLastPromptTokenCount();
|
|
341540
341674
|
if (estimatedRequestTokenCount > remainingTokenCount * 0.95) {
|
|
341541
341675
|
yield {
|
|
341542
341676
|
type: GeminiEventType.ContextWindowWillOverflow,
|
|
@@ -341595,6 +341729,7 @@ var GeminiClient = class {
|
|
|
341595
341729
|
return turn;
|
|
341596
341730
|
}
|
|
341597
341731
|
yield event;
|
|
341732
|
+
this.updateTelemetryTokenCount();
|
|
341598
341733
|
if (event.type === GeminiEventType.InvalidStream) {
|
|
341599
341734
|
if (this.config.getContinueOnFailedApiCall()) {
|
|
341600
341735
|
if (isInvalidStreamRetry) {
|
|
@@ -341682,6 +341817,7 @@ var GeminiClient = class {
|
|
|
341682
341817
|
} else if (info2.compressionStatus === CompressionStatus.COMPRESSED) {
|
|
341683
341818
|
if (newHistory) {
|
|
341684
341819
|
this.chat = await this.startChat(newHistory);
|
|
341820
|
+
this.updateTelemetryTokenCount();
|
|
341685
341821
|
this.forceFullIdeContext = true;
|
|
341686
341822
|
}
|
|
341687
341823
|
}
|
|
@@ -349526,13 +349662,14 @@ var Config = class {
|
|
|
349526
349662
|
listExtensions;
|
|
349527
349663
|
_extensionLoader;
|
|
349528
349664
|
_enabledExtensions;
|
|
349665
|
+
enableExtensionReloading;
|
|
349529
349666
|
_blockedMcpServers;
|
|
349530
349667
|
fallbackModelHandler;
|
|
349531
349668
|
quotaErrorOccurred = false;
|
|
349532
349669
|
summarizeToolOutput;
|
|
349533
349670
|
experimentalZedIntegration = false;
|
|
349534
349671
|
loadMemoryFromIncludeDirectories = false;
|
|
349535
|
-
|
|
349672
|
+
compressionThreshold;
|
|
349536
349673
|
interactive;
|
|
349537
349674
|
ptyInfo;
|
|
349538
349675
|
trustedFolder;
|
|
@@ -349620,7 +349757,7 @@ var Config = class {
|
|
|
349620
349757
|
this.folderTrust = params.folderTrust ?? false;
|
|
349621
349758
|
this.ideMode = params.ideMode ?? false;
|
|
349622
349759
|
this.loadMemoryFromIncludeDirectories = params.loadMemoryFromIncludeDirectories ?? false;
|
|
349623
|
-
this.
|
|
349760
|
+
this.compressionThreshold = params.compressionThreshold;
|
|
349624
349761
|
this.interactive = params.interactive ?? false;
|
|
349625
349762
|
this.ptyInfo = params.ptyInfo ?? "child_process";
|
|
349626
349763
|
this.trustedFolder = params.trustedFolder;
|
|
@@ -349640,9 +349777,7 @@ var Config = class {
|
|
|
349640
349777
|
this.useWriteTodos = params.useWriteTodos ?? false;
|
|
349641
349778
|
this.initialUseModelRouter = params.useModelRouter ?? false;
|
|
349642
349779
|
this.useModelRouter = this.initialUseModelRouter;
|
|
349643
|
-
this.disableModelRouterForAuth = params.disableModelRouterForAuth ?? [
|
|
349644
|
-
AuthType2.LOGIN_WITH_GOOGLE
|
|
349645
|
-
];
|
|
349780
|
+
this.disableModelRouterForAuth = params.disableModelRouterForAuth ?? [];
|
|
349646
349781
|
this.enableMessageBusIntegration = params.enableMessageBusIntegration ?? false;
|
|
349647
349782
|
this.codebaseInvestigatorSettings = {
|
|
349648
349783
|
enabled: params.codebaseInvestigatorSettings?.enabled ?? false,
|
|
@@ -349654,6 +349789,7 @@ var Config = class {
|
|
|
349654
349789
|
this.continueOnFailedApiCall = params.continueOnFailedApiCall ?? true;
|
|
349655
349790
|
this.enableShellOutputEfficiency = params.enableShellOutputEfficiency ?? true;
|
|
349656
349791
|
this.extensionManagement = params.extensionManagement ?? true;
|
|
349792
|
+
this.enableExtensionReloading = params.enableExtensionReloading ?? false;
|
|
349657
349793
|
this.storage = new Storage2(this.targetDir);
|
|
349658
349794
|
this.fakeResponses = params.fakeResponses;
|
|
349659
349795
|
this.recordResponses = params.recordResponses;
|
|
@@ -349827,6 +349963,9 @@ var Config = class {
|
|
|
349827
349963
|
getMcpServers() {
|
|
349828
349964
|
return this.mcpServers;
|
|
349829
349965
|
}
|
|
349966
|
+
setMcpServers(mcpServers) {
|
|
349967
|
+
this.mcpServers = mcpServers;
|
|
349968
|
+
}
|
|
349830
349969
|
getUserMemory() {
|
|
349831
349970
|
return this.userMemory;
|
|
349832
349971
|
}
|
|
@@ -349957,6 +350096,9 @@ var Config = class {
|
|
|
349957
350096
|
getEnabledExtensions() {
|
|
349958
350097
|
return this._enabledExtensions;
|
|
349959
350098
|
}
|
|
350099
|
+
getEnableExtensionReloading() {
|
|
350100
|
+
return this.enableExtensionReloading;
|
|
350101
|
+
}
|
|
349960
350102
|
getBlockedMcpServers() {
|
|
349961
350103
|
return this._blockedMcpServers;
|
|
349962
350104
|
}
|
|
@@ -350004,8 +350146,8 @@ var Config = class {
|
|
|
350004
350146
|
setFileSystemService(fileSystemService) {
|
|
350005
350147
|
this.fileSystemService = fileSystemService;
|
|
350006
350148
|
}
|
|
350007
|
-
|
|
350008
|
-
return this.
|
|
350149
|
+
getCompressionThreshold() {
|
|
350150
|
+
return this.compressionThreshold;
|
|
350009
350151
|
}
|
|
350010
350152
|
isInteractiveShellEnabled() {
|
|
350011
350153
|
return this.interactive && this.ptyInfo !== "child_process" && this.enableInteractiveShell;
|
|
@@ -37,6 +37,7 @@ export function createMockConfig(overrides = {}) {
|
|
|
37
37
|
getEnableMessageBusIntegration: vi.fn().mockReturnValue(false),
|
|
38
38
|
getMessageBus: vi.fn(),
|
|
39
39
|
getPolicyEngine: vi.fn(),
|
|
40
|
+
getEnableExtensionReloading: vi.fn().mockReturnValue(false),
|
|
40
41
|
...overrides,
|
|
41
42
|
};
|
|
42
43
|
mockConfig.getGeminiClient = vi
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing_utils.js","sourceRoot":"","sources":["../../../src/utils/testing_utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testing_utils.js","sourceRoot":"","sources":["../../../src/utils/testing_utils.ts"],"names":[],"mappings":"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"}
|