@google/gemini-cli-a2a-server 0.11.0-preview.0 → 0.12.0-nightly.20251023.c4c0c0d1

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.
@@ -34138,7 +34138,7 @@ var require_express = __commonJS({
34138
34138
  "packages/a2a-server/node_modules/express/lib/express.js"(exports2, module2) {
34139
34139
  "use strict";
34140
34140
  var bodyParser = require_body_parser();
34141
- var EventEmitter10 = __require("node:events").EventEmitter;
34141
+ var EventEmitter11 = __require("node:events").EventEmitter;
34142
34142
  var mixin = require_merge_descriptors();
34143
34143
  var proto = require_application();
34144
34144
  var Router = require_router();
@@ -34149,7 +34149,7 @@ var require_express = __commonJS({
34149
34149
  var app = function(req2, res2, next) {
34150
34150
  app.handle(req2, res2, next);
34151
34151
  };
34152
- mixin(app, EventEmitter10.prototype, false);
34152
+ mixin(app, EventEmitter11.prototype, false);
34153
34153
  mixin(app, proto, false);
34154
34154
  app.request = Object.create(req, {
34155
34155
  app: { configurable: true, enumerable: true, writable: true, value: app }
@@ -34609,7 +34609,7 @@ var require_src2 = __commonJS({
34609
34609
  var require_destroy2 = __commonJS({
34610
34610
  "node_modules/destroy/index.js"(exports2, module2) {
34611
34611
  "use strict";
34612
- var EventEmitter10 = __require("events").EventEmitter;
34612
+ var EventEmitter11 = __require("events").EventEmitter;
34613
34613
  var ReadStream2 = __require("fs").ReadStream;
34614
34614
  var Stream2 = __require("stream");
34615
34615
  var Zlib2 = __require("zlib");
@@ -34671,7 +34671,7 @@ var require_destroy2 = __commonJS({
34671
34671
  return stream3 instanceof Stream2 && typeof stream3.destroy === "function";
34672
34672
  }
34673
34673
  function isEventEmitter(val) {
34674
- return val instanceof EventEmitter10;
34674
+ return val instanceof EventEmitter11;
34675
34675
  }
34676
34676
  function isFsReadStream(stream3) {
34677
34677
  return stream3 instanceof ReadStream2;
@@ -45580,7 +45580,7 @@ var require_express3 = __commonJS({
45580
45580
  "node_modules/express/lib/express.js"(exports2, module2) {
45581
45581
  "use strict";
45582
45582
  var bodyParser = require_body_parser2();
45583
- var EventEmitter10 = __require("events").EventEmitter;
45583
+ var EventEmitter11 = __require("events").EventEmitter;
45584
45584
  var mixin = require_merge_descriptors2();
45585
45585
  var proto = require_application2();
45586
45586
  var Route = require_route3();
@@ -45592,7 +45592,7 @@ var require_express3 = __commonJS({
45592
45592
  var app = function(req2, res2, next) {
45593
45593
  app.handle(req2, res2, next);
45594
45594
  };
45595
- mixin(app, EventEmitter10.prototype, false);
45595
+ mixin(app, EventEmitter11.prototype, false);
45596
45596
  mixin(app, proto, false);
45597
45597
  app.request = Object.create(req, {
45598
45598
  app: { configurable: true, enumerable: true, writable: true, value: app }
@@ -68639,7 +68639,7 @@ var require_extension = __commonJS({
68639
68639
  var require_websocket = __commonJS({
68640
68640
  "node_modules/ws/lib/websocket.js"(exports2, module2) {
68641
68641
  "use strict";
68642
- var EventEmitter10 = __require("events");
68642
+ var EventEmitter11 = __require("events");
68643
68643
  var https3 = __require("https");
68644
68644
  var http6 = __require("http");
68645
68645
  var net3 = __require("net");
@@ -68671,7 +68671,7 @@ var require_websocket = __commonJS({
68671
68671
  var protocolVersions = [8, 13];
68672
68672
  var readyStates = ["CONNECTING", "OPEN", "CLOSING", "CLOSED"];
68673
68673
  var subprotocolRegex = /^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;
68674
- var WebSocket2 = class _WebSocket extends EventEmitter10 {
68674
+ var WebSocket2 = class _WebSocket extends EventEmitter11 {
68675
68675
  /**
68676
68676
  * Create a new `WebSocket`.
68677
68677
  *
@@ -69665,7 +69665,7 @@ var require_subprotocol = __commonJS({
69665
69665
  var require_websocket_server = __commonJS({
69666
69666
  "node_modules/ws/lib/websocket-server.js"(exports2, module2) {
69667
69667
  "use strict";
69668
- var EventEmitter10 = __require("events");
69668
+ var EventEmitter11 = __require("events");
69669
69669
  var http6 = __require("http");
69670
69670
  var { Duplex: Duplex5 } = __require("stream");
69671
69671
  var { createHash: createHash11 } = __require("crypto");
@@ -69678,7 +69678,7 @@ var require_websocket_server = __commonJS({
69678
69678
  var RUNNING = 0;
69679
69679
  var CLOSING = 1;
69680
69680
  var CLOSED2 = 2;
69681
- var WebSocketServer2 = class extends EventEmitter10 {
69681
+ var WebSocketServer2 = class extends EventEmitter11 {
69682
69682
  /**
69683
69683
  * Create a `WebSocketServer` instance.
69684
69684
  *
@@ -93130,18 +93130,18 @@ var require_base64 = __commonJS({
93130
93130
  var require_eventemitter = __commonJS({
93131
93131
  "node_modules/@protobufjs/eventemitter/index.js"(exports2, module2) {
93132
93132
  "use strict";
93133
- module2.exports = EventEmitter10;
93134
- function EventEmitter10() {
93133
+ module2.exports = EventEmitter11;
93134
+ function EventEmitter11() {
93135
93135
  this._listeners = {};
93136
93136
  }
93137
- EventEmitter10.prototype.on = function on6(evt, fn, ctx) {
93137
+ EventEmitter11.prototype.on = function on6(evt, fn, ctx) {
93138
93138
  (this._listeners[evt] || (this._listeners[evt] = [])).push({
93139
93139
  fn,
93140
93140
  ctx: ctx || this
93141
93141
  });
93142
93142
  return this;
93143
93143
  };
93144
- EventEmitter10.prototype.off = function off(evt, fn) {
93144
+ EventEmitter11.prototype.off = function off(evt, fn) {
93145
93145
  if (evt === void 0)
93146
93146
  this._listeners = {};
93147
93147
  else {
@@ -93158,7 +93158,7 @@ var require_eventemitter = __commonJS({
93158
93158
  }
93159
93159
  return this;
93160
93160
  };
93161
- EventEmitter10.prototype.emit = function emit(evt) {
93161
+ EventEmitter11.prototype.emit = function emit(evt) {
93162
93162
  var listeners = this._listeners[evt];
93163
93163
  if (listeners) {
93164
93164
  var args2 = [], i3 = 1;
@@ -210806,15 +210806,15 @@ var require_fd_slicer = __commonJS({
210806
210806
  var Writable6 = stream3.Writable;
210807
210807
  var PassThrough4 = stream3.PassThrough;
210808
210808
  var Pend = require_pend();
210809
- var EventEmitter10 = __require("events").EventEmitter;
210809
+ var EventEmitter11 = __require("events").EventEmitter;
210810
210810
  exports2.createFromBuffer = createFromBuffer;
210811
210811
  exports2.createFromFd = createFromFd;
210812
210812
  exports2.BufferSlicer = BufferSlicer;
210813
210813
  exports2.FdSlicer = FdSlicer;
210814
- util4.inherits(FdSlicer, EventEmitter10);
210814
+ util4.inherits(FdSlicer, EventEmitter11);
210815
210815
  function FdSlicer(fd, options2) {
210816
210816
  options2 = options2 || {};
210817
- EventEmitter10.call(this);
210817
+ EventEmitter11.call(this);
210818
210818
  this.fd = fd;
210819
210819
  this.pend = new Pend();
210820
210820
  this.pend.max = 1;
@@ -210958,9 +210958,9 @@ var require_fd_slicer = __commonJS({
210958
210958
  this.destroyed = true;
210959
210959
  this.context.unref();
210960
210960
  };
210961
- util4.inherits(BufferSlicer, EventEmitter10);
210961
+ util4.inherits(BufferSlicer, EventEmitter11);
210962
210962
  function BufferSlicer(buffer, options2) {
210963
- EventEmitter10.call(this);
210963
+ EventEmitter11.call(this);
210964
210964
  options2 = options2 || {};
210965
210965
  this.refCount = 0;
210966
210966
  this.buffer = buffer;
@@ -211370,7 +211370,7 @@ var require_yauzl = __commonJS({
211370
211370
  var fd_slicer = require_fd_slicer();
211371
211371
  var crc32 = require_buffer_crc32();
211372
211372
  var util4 = __require("util");
211373
- var EventEmitter10 = __require("events").EventEmitter;
211373
+ var EventEmitter11 = __require("events").EventEmitter;
211374
211374
  var Transform4 = __require("stream").Transform;
211375
211375
  var PassThrough4 = __require("stream").PassThrough;
211376
211376
  var Writable6 = __require("stream").Writable;
@@ -211502,10 +211502,10 @@ var require_yauzl = __commonJS({
211502
211502
  callback(new Error("end of central directory record signature not found"));
211503
211503
  });
211504
211504
  }
211505
- util4.inherits(ZipFile, EventEmitter10);
211505
+ util4.inherits(ZipFile, EventEmitter11);
211506
211506
  function ZipFile(reader, centralDirectoryOffset, fileSize, entryCount, comment, autoClose, lazyEntries, decodeStrings, validateEntrySizes, strictFileNames) {
211507
211507
  var self2 = this;
211508
- EventEmitter10.call(self2);
211508
+ EventEmitter11.call(self2);
211509
211509
  self2.reader = reader;
211510
211510
  self2.reader.on("error", function(err2) {
211511
211511
  emitError(self2, err2);
@@ -211866,9 +211866,9 @@ var require_yauzl = __commonJS({
211866
211866
  }
211867
211867
  cb();
211868
211868
  };
211869
- util4.inherits(RandomAccessReader, EventEmitter10);
211869
+ util4.inherits(RandomAccessReader, EventEmitter11);
211870
211870
  function RandomAccessReader() {
211871
- EventEmitter10.call(this);
211871
+ EventEmitter11.call(this);
211872
211872
  this.refCount = 0;
211873
211873
  }
211874
211874
  RandomAccessReader.prototype.ref = function() {
@@ -212874,7 +212874,7 @@ var require_json_buffer = __commonJS({
212874
212874
  var require_src56 = __commonJS({
212875
212875
  "node_modules/keyv/src/index.js"(exports2, module2) {
212876
212876
  "use strict";
212877
- var EventEmitter10 = __require("events");
212877
+ var EventEmitter11 = __require("events");
212878
212878
  var JSONB = require_json_buffer();
212879
212879
  var loadStore = (options2) => {
212880
212880
  const adapters = {
@@ -212904,7 +212904,7 @@ var require_src56 = __commonJS({
212904
212904
  "redis",
212905
212905
  "tiered"
212906
212906
  ];
212907
- var Keyv2 = class extends EventEmitter10 {
212907
+ var Keyv2 = class extends EventEmitter11 {
212908
212908
  constructor(uri, { emitErrors = true, ...options2 } = {}) {
212909
212909
  super();
212910
212910
  this.opts = {
@@ -213327,7 +213327,7 @@ var require_agent3 = __commonJS({
213327
213327
  "node_modules/http2-wrapper/source/agent.js"(exports2, module2) {
213328
213328
  "use strict";
213329
213329
  var { URL: URL9 } = __require("url");
213330
- var EventEmitter10 = __require("events");
213330
+ var EventEmitter11 = __require("events");
213331
213331
  var tls = __require("tls");
213332
213332
  var http22 = __require("http2");
213333
213333
  var QuickLRU = require_quick_lru();
@@ -213425,7 +213425,7 @@ var require_agent3 = __commonJS({
213425
213425
  session.close();
213426
213426
  }
213427
213427
  };
213428
- var Agent3 = class _Agent extends EventEmitter10 {
213428
+ var Agent3 = class _Agent extends EventEmitter11 {
213429
213429
  constructor({ timeout = 0, maxSessions = Number.POSITIVE_INFINITY, maxEmptySessions = 10, maxCachedTlsSessions = 100 } = {}) {
213430
213430
  super();
213431
213431
  this.sessions = {};
@@ -217122,10 +217122,10 @@ var require_wrap_handler = __commonJS({
217122
217122
  var require_dispatcher = __commonJS({
217123
217123
  "node_modules/undici/lib/dispatcher/dispatcher.js"(exports2, module2) {
217124
217124
  "use strict";
217125
- var EventEmitter10 = __require("node:events");
217125
+ var EventEmitter11 = __require("node:events");
217126
217126
  var WrapHandler = require_wrap_handler();
217127
217127
  var wrapInterceptor = (dispatch) => (opts, handler) => dispatch(opts, WrapHandler.wrap(handler));
217128
- var Dispatcher = class extends EventEmitter10 {
217128
+ var Dispatcher = class extends EventEmitter11 {
217129
217129
  dispatch() {
217130
217130
  throw new Error("not implemented");
217131
217131
  }
@@ -228968,9 +228968,9 @@ var require_memory_cache_store = __commonJS({
228968
228968
  "node_modules/undici/lib/cache/memory-cache-store.js"(exports2, module2) {
228969
228969
  "use strict";
228970
228970
  var { Writable: Writable6 } = __require("node:stream");
228971
- var { EventEmitter: EventEmitter10 } = __require("node:events");
228971
+ var { EventEmitter: EventEmitter11 } = __require("node:events");
228972
228972
  var { assertCacheKey, assertCacheValue } = require_cache2();
228973
- var MemoryCacheStore = class extends EventEmitter10 {
228973
+ var MemoryCacheStore = class extends EventEmitter11 {
228974
228974
  #maxCount = 1024;
228975
228975
  #maxSize = 104857600;
228976
228976
  // 100MB
@@ -287811,6 +287811,7 @@ var REGRESSION_DETECTION = "gemini_cli.performance.regression";
287811
287811
  var REGRESSION_PERCENTAGE_CHANGE = "gemini_cli.performance.regression.percentage_change";
287812
287812
  var BASELINE_COMPARISON = "gemini_cli.performance.baseline.comparison";
287813
287813
  var FLICKER_FRAME_COUNT = "gemini_cli.ui.flicker.count";
287814
+ var EXIT_FAIL_COUNT = "gemini_cli.exit.fail.count";
287814
287815
  var baseMetricDefinition = {
287815
287816
  getCommonAttributes
287816
287817
  };
@@ -287892,6 +287893,12 @@ var COUNTER_DEFINITIONS = {
287892
287893
  valueType: ValueType.INT,
287893
287894
  assign: (c4) => flickerFrameCounter = c4,
287894
287895
  attributes: {}
287896
+ },
287897
+ [EXIT_FAIL_COUNT]: {
287898
+ description: "Counts CLI exit failures.",
287899
+ valueType: ValueType.INT,
287900
+ assign: (c4) => exitFailCounter = c4,
287901
+ attributes: {}
287895
287902
  }
287896
287903
  };
287897
287904
  var HISTOGRAM_DEFINITIONS = {
@@ -288094,6 +288101,7 @@ var agentRunCounter;
288094
288101
  var agentDurationHistogram;
288095
288102
  var agentTurnsHistogram;
288096
288103
  var flickerFrameCounter;
288104
+ var exitFailCounter;
288097
288105
  var genAiClientTokenUsageHistogram;
288098
288106
  var genAiClientOperationDurationHistogram;
288099
288107
  var startupTimeHistogram;
@@ -288503,8 +288511,8 @@ var Float64Vector = import_vector.default.Float64Vector;
288503
288511
  var PointerVector = import_vector.default.PointerVector;
288504
288512
 
288505
288513
  // packages/core/dist/src/generated/git-commit.js
288506
- var GIT_COMMIT_INFO = "0542de95";
288507
- var CLI_VERSION = "0.11.0-preview.0";
288514
+ var GIT_COMMIT_INFO = "c4c0c0d1";
288515
+ var CLI_VERSION = "0.12.0-nightly.20251023.c4c0c0d1";
288508
288516
 
288509
288517
  // packages/core/dist/src/ide/detect-ide.js
288510
288518
  var IDE_DEFINITIONS = {
@@ -291007,7 +291015,7 @@ function createContentGeneratorConfig(config2, authType) {
291007
291015
  return contentGeneratorConfig;
291008
291016
  }
291009
291017
  async function createContentGenerator(config2, gcConfig, sessionId2) {
291010
- const version3 = "0.11.0-preview.0";
291018
+ const version3 = "0.12.0-nightly.20251023.c4c0c0d1";
291011
291019
  const userAgent = `GeminiCLI/${version3} (${process.platform}; ${process.arch})`;
291012
291020
  const baseHeaders = {
291013
291021
  "User-Agent": userAgent
@@ -300626,7 +300634,7 @@ var LSToolInvocation = class extends BaseToolInvocation {
300626
300634
  }
300627
300635
  const relativePaths = files.map((file) => path18.relative(this.config.getTargetDir(), path18.join(this.params.path, file)));
300628
300636
  const fileDiscovery = this.config.getFileService();
300629
- const { filteredPaths, gitIgnoredCount, geminiIgnoredCount } = fileDiscovery.filterFilesWithReport(relativePaths, {
300637
+ const { filteredPaths, ignoredCount } = fileDiscovery.filterFilesWithReport(relativePaths, {
300630
300638
  respectGitIgnore: this.params.file_filtering_options?.respect_git_ignore ?? this.config.getFileFilteringOptions().respectGitIgnore ?? DEFAULT_FILE_FILTERING_OPTIONS.respectGitIgnore,
300631
300639
  respectGeminiIgnore: this.params.file_filtering_options?.respect_gemini_ignore ?? this.config.getFileFilteringOptions().respectGeminiIgnore ?? DEFAULT_FILE_FILTERING_OPTIONS.respectGeminiIgnore
300632
300640
  });
@@ -300660,21 +300668,14 @@ var LSToolInvocation = class extends BaseToolInvocation {
300660
300668
  const directoryContent = entries2.map((entry) => `${entry.isDirectory ? "[DIR] " : ""}${entry.name}`).join("\n");
300661
300669
  let resultMessage = `Directory listing for ${this.params.path}:
300662
300670
  ${directoryContent}`;
300663
- const ignoredMessages = [];
300664
- if (gitIgnoredCount > 0) {
300665
- ignoredMessages.push(`${gitIgnoredCount} git-ignored`);
300666
- }
300667
- if (geminiIgnoredCount > 0) {
300668
- ignoredMessages.push(`${geminiIgnoredCount} gemini-ignored`);
300669
- }
300670
- if (ignoredMessages.length > 0) {
300671
+ if (ignoredCount > 0) {
300671
300672
  resultMessage += `
300672
300673
 
300673
- (${ignoredMessages.join(", ")})`;
300674
+ (${ignoredCount} ignored)`;
300674
300675
  }
300675
300676
  let displayMessage = `Listed ${entries2.length} item(s).`;
300676
- if (ignoredMessages.length > 0) {
300677
- displayMessage += ` (${ignoredMessages.join(", ")})`;
300677
+ if (ignoredCount > 0) {
300678
+ displayMessage += ` (${ignoredCount} ignored)`;
300678
300679
  }
300679
300680
  return {
300680
300681
  llmContent: resultMessage,
@@ -302233,7 +302234,7 @@ var MemoryToolInvocation = class _MemoryToolInvocation extends BaseToolInvocatio
302233
302234
  }
302234
302235
  } catch (error) {
302235
302236
  const errorMessage = error instanceof Error ? error.message : String(error);
302236
- console.error(`[MemoryTool] Error executing save_memory for fact "${fact}": ${errorMessage}`);
302237
+ console.warn(`[MemoryTool] Error executing save_memory for fact "${fact}": ${errorMessage}`);
302237
302238
  return {
302238
302239
  llmContent: JSON.stringify({
302239
302240
  success: false,
@@ -322377,7 +322378,7 @@ var GlobToolInvocation = class extends BaseToolInvocation {
322377
322378
  allEntries.push(...entries2);
322378
322379
  }
322379
322380
  const relativePaths = allEntries.map((p) => path35.relative(this.config.getTargetDir(), p.fullpath()));
322380
- const { filteredPaths, gitIgnoredCount, geminiIgnoredCount } = fileDiscovery.filterFilesWithReport(relativePaths, {
322381
+ const { filteredPaths, ignoredCount } = fileDiscovery.filterFilesWithReport(relativePaths, {
322381
322382
  respectGitIgnore: this.params?.respect_git_ignore ?? this.config.getFileFilteringOptions().respectGitIgnore ?? DEFAULT_FILE_FILTERING_OPTIONS.respectGitIgnore,
322382
322383
  respectGeminiIgnore: this.params?.respect_gemini_ignore ?? this.config.getFileFilteringOptions().respectGeminiIgnore ?? DEFAULT_FILE_FILTERING_OPTIONS.respectGeminiIgnore
322383
322384
  });
@@ -322390,11 +322391,8 @@ var GlobToolInvocation = class extends BaseToolInvocation {
322390
322391
  } else {
322391
322392
  message += ` within ${searchDirectories.length} workspace directories`;
322392
322393
  }
322393
- if (gitIgnoredCount > 0) {
322394
- message += ` (${gitIgnoredCount} files were git-ignored)`;
322395
- }
322396
- if (geminiIgnoredCount > 0) {
322397
- message += ` (${geminiIgnoredCount} files were gemini-ignored)`;
322394
+ if (ignoredCount > 0) {
322395
+ message += ` (${ignoredCount} files were ignored)`;
322398
322396
  }
322399
322397
  return {
322400
322398
  llmContent: message,
@@ -322413,11 +322411,8 @@ var GlobToolInvocation = class extends BaseToolInvocation {
322413
322411
  } else {
322414
322412
  resultMessage += ` across ${searchDirectories.length} workspace directories`;
322415
322413
  }
322416
- if (gitIgnoredCount > 0) {
322417
- resultMessage += ` (${gitIgnoredCount} additional files were git-ignored)`;
322418
- }
322419
- if (geminiIgnoredCount > 0) {
322420
- resultMessage += ` (${geminiIgnoredCount} additional files were gemini-ignored)`;
322414
+ if (ignoredCount > 0) {
322415
+ resultMessage += ` (${ignoredCount} additional files were ignored)`;
322421
322416
  }
322422
322417
  resultMessage += `, sorted by modification time (newest first):
322423
322418
  ${fileListDescription}`;
@@ -325756,7 +325751,7 @@ async function summarizeToolOutput(textToSummarize, geminiClient, abortSignal, m
325756
325751
  const parsedResponse = await geminiClient.generateContent(contents, toolOutputSummarizerConfig, abortSignal, DEFAULT_GEMINI_FLASH_LITE_MODEL);
325757
325752
  return getResponseText(parsedResponse) || textToSummarize;
325758
325753
  } catch (error) {
325759
- console.error("Failed to summarize tool output.", error);
325754
+ debugLogger.warn("Failed to summarize tool output.", error);
325760
325755
  return textToSummarize;
325761
325756
  }
325762
325757
  }
@@ -337116,20 +337111,9 @@ ${this.config.getTargetDir()}
337116
337111
  ) `;
337117
337112
  const paramExcludes = this.params.exclude || [];
337118
337113
  const paramUseDefaultExcludes = this.params.useDefaultExcludes !== false;
337119
- const geminiIgnorePatterns = this.config.getFileService().getGeminiIgnorePatterns();
337120
- const finalExclusionPatternsForDescription = paramUseDefaultExcludes ? [
337121
- ...getDefaultExcludes(this.config),
337122
- ...paramExcludes,
337123
- ...geminiIgnorePatterns
337124
- ] : [...paramExcludes, ...geminiIgnorePatterns];
337125
- let excludeDesc = `Excluding: ${finalExclusionPatternsForDescription.length > 0 ? `patterns like
337114
+ const finalExclusionPatternsForDescription = paramUseDefaultExcludes ? [...getDefaultExcludes(this.config), ...paramExcludes] : [...paramExcludes];
337115
+ const excludeDesc = `Excluding: ${finalExclusionPatternsForDescription.length > 0 ? `patterns like
337126
337116
  ${finalExclusionPatternsForDescription.slice(0, 2).join("`, `")}${finalExclusionPatternsForDescription.length > 2 ? "...`" : "`"}` : "none specified"}`;
337127
- if (geminiIgnorePatterns.length > 0) {
337128
- const geminiPatternsInEffect = geminiIgnorePatterns.filter((p) => finalExclusionPatternsForDescription.includes(p)).length;
337129
- if (geminiPatternsInEffect > 0) {
337130
- excludeDesc += ` (includes ${geminiPatternsInEffect} from .geminiignore)`;
337131
- }
337132
- }
337133
337117
  return `Will attempt to read and concatenate files ${pathDesc}. ${excludeDesc}. File encoding: ${DEFAULT_ENCODING}. Separator: "${DEFAULT_OUTPUT_SEPARATOR_FORMAT.replace("{filePath}", "path/to/file.ext")}".`;
337134
337118
  }
337135
337119
  async execute(signal) {
@@ -337169,7 +337153,7 @@ ${finalExclusionPatternsForDescription.slice(0, 2).join("`, `")}${finalExclusion
337169
337153
  }
337170
337154
  const relativeEntries = Array.from(allEntries).map((p) => path45.relative(this.config.getTargetDir(), p));
337171
337155
  const fileDiscovery = this.config.getFileService();
337172
- const { filteredPaths, gitIgnoredCount, geminiIgnoredCount } = fileDiscovery.filterFilesWithReport(relativeEntries, {
337156
+ const { filteredPaths, ignoredCount } = fileDiscovery.filterFilesWithReport(relativeEntries, {
337173
337157
  respectGitIgnore: this.params.file_filtering_options?.respect_git_ignore ?? this.config.getFileFilteringOptions().respectGitIgnore ?? DEFAULT_FILE_FILTERING_OPTIONS.respectGitIgnore,
337174
337158
  respectGeminiIgnore: this.params.file_filtering_options?.respect_gemini_ignore ?? this.config.getFileFilteringOptions().respectGeminiIgnore ?? DEFAULT_FILE_FILTERING_OPTIONS.respectGeminiIgnore
337175
337159
  });
@@ -337184,16 +337168,10 @@ ${finalExclusionPatternsForDescription.slice(0, 2).join("`, `")}${finalExclusion
337184
337168
  }
337185
337169
  filesToConsider.add(fullPath);
337186
337170
  }
337187
- if (gitIgnoredCount > 0) {
337171
+ if (ignoredCount > 0) {
337188
337172
  skippedFiles.push({
337189
- path: `${gitIgnoredCount} file(s)`,
337190
- reason: "git ignored"
337191
- });
337192
- }
337193
- if (geminiIgnoredCount > 0) {
337194
- skippedFiles.push({
337195
- path: `${geminiIgnoredCount} file(s)`,
337196
- reason: "gemini ignored"
337173
+ path: `${ignoredCount} file(s)`,
337174
+ reason: "ignored by project ignore files"
337197
337175
  });
337198
337176
  }
337199
337177
  } catch (error) {
@@ -337930,7 +337908,6 @@ ${truncatedContent}`,
337930
337908
  }
337931
337909
  }
337932
337910
  var CoreToolScheduler = class {
337933
- toolRegistry;
337934
337911
  toolCalls = [];
337935
337912
  outputUpdateHandler;
337936
337913
  onAllToolCallsComplete;
@@ -337943,7 +337920,6 @@ var CoreToolScheduler = class {
337943
337920
  requestQueue = [];
337944
337921
  constructor(options2) {
337945
337922
  this.config = options2.config;
337946
- this.toolRegistry = options2.config.getToolRegistry();
337947
337923
  this.outputUpdateHandler = options2.outputUpdateHandler;
337948
337924
  this.onAllToolCallsComplete = options2.onAllToolCallsComplete;
337949
337925
  this.onToolCallsUpdate = options2.onToolCallsUpdate;
@@ -338118,7 +338094,7 @@ var CoreToolScheduler = class {
338118
338094
  * @returns A suggestion string like " Did you mean 'tool'?" or " Did you mean one of: 'tool1', 'tool2'?", or an empty string if no suggestions are found.
338119
338095
  */
338120
338096
  getToolSuggestion(unknownToolName, topN = 3) {
338121
- const allToolNames = this.toolRegistry.getAllToolNames();
338097
+ const allToolNames = this.config.getToolRegistry().getAllToolNames();
338122
338098
  const matches = allToolNames.map((toolName) => ({
338123
338099
  name: toolName,
338124
338100
  distance: import_fast_levenshtein.default.get(unknownToolName, toolName)
@@ -338170,7 +338146,7 @@ var CoreToolScheduler = class {
338170
338146
  }
338171
338147
  const requestsToProcess = Array.isArray(request3) ? request3 : [request3];
338172
338148
  const newToolCalls = requestsToProcess.map((reqInfo) => {
338173
- const toolInstance = this.toolRegistry.getTool(reqInfo.name);
338149
+ const toolInstance = this.config.getToolRegistry().getTool(reqInfo.name);
338174
338150
  if (!toolInstance) {
338175
338151
  const suggestion = this.getToolSuggestion(reqInfo.name);
338176
338152
  const errorMessage = `Tool "${reqInfo.name}" not found in registry. Tools must use the exact names that are registered.${suggestion}`;
@@ -340882,24 +340858,11 @@ var FileDiscoveryService = class {
340882
340858
  respectGitIgnore: true,
340883
340859
  respectGeminiIgnore: true
340884
340860
  }) {
340885
- const filteredPaths = [];
340886
- let gitIgnoredCount = 0;
340887
- let geminiIgnoredCount = 0;
340888
- for (const filePath of filePaths) {
340889
- if (opts.respectGitIgnore && this.shouldGitIgnoreFile(filePath)) {
340890
- gitIgnoredCount++;
340891
- continue;
340892
- }
340893
- if (opts.respectGeminiIgnore && this.shouldGeminiIgnoreFile(filePath)) {
340894
- geminiIgnoredCount++;
340895
- continue;
340896
- }
340897
- filteredPaths.push(filePath);
340898
- }
340861
+ const filteredPaths = this.filterFiles(filePaths, opts);
340862
+ const ignoredCount = filePaths.length - filteredPaths.length;
340899
340863
  return {
340900
340864
  filteredPaths,
340901
- gitIgnoredCount,
340902
- geminiIgnoredCount
340865
+ ignoredCount
340903
340866
  };
340904
340867
  }
340905
340868
  /**
@@ -340933,12 +340896,6 @@ var FileDiscoveryService = class {
340933
340896
  }
340934
340897
  return false;
340935
340898
  }
340936
- /**
340937
- * Returns loaded patterns from .geminiignore
340938
- */
340939
- getGeminiIgnorePatterns() {
340940
- return this.geminiIgnoreFilter?.getPatterns() ?? [];
340941
- }
340942
340899
  };
340943
340900
 
340944
340901
  // packages/core/dist/src/services/gitService.js
@@ -348573,6 +348530,7 @@ var Config = class {
348573
348530
  continueOnFailedApiCall;
348574
348531
  retryFetchErrors;
348575
348532
  enableShellOutputEfficiency;
348533
+ disableYoloMode;
348576
348534
  constructor(params) {
348577
348535
  this.sessionId = params.sessionId;
348578
348536
  this.embeddingModel = params.embeddingModel ?? DEFAULT_GEMINI_EMBEDDING_MODEL;
@@ -348668,6 +348626,7 @@ var Config = class {
348668
348626
  format: params.output?.format ?? OutputFormat.TEXT
348669
348627
  };
348670
348628
  this.retryFetchErrors = params.retryFetchErrors ?? false;
348629
+ this.disableYoloMode = params.disableYoloMode ?? false;
348671
348630
  if (params.contextFileName) {
348672
348631
  setGeminiMdFilename(params.contextFileName);
348673
348632
  }
@@ -348847,6 +348806,9 @@ var Config = class {
348847
348806
  }
348848
348807
  this.approvalMode = mode;
348849
348808
  }
348809
+ isYoloModeDisabled() {
348810
+ return this.disableYoloMode || !this.isTrustedFolder();
348811
+ }
348850
348812
  getShowMemoryUsage() {
348851
348813
  return this.showMemoryUsage;
348852
348814
  }
@@ -349152,15 +349114,9 @@ var Config = class {
349152
349114
  const isExcluded = excludeTools.includes(definition.name);
349153
349115
  const isAllowed = !allowedTools || allowedTools.includes(definition.name);
349154
349116
  if (isAllowed && !isExcluded) {
349155
- try {
349156
- const messageBusEnabled = this.getEnableMessageBusIntegration();
349157
- const wrapper = new SubagentToolWrapper(definition, this, messageBusEnabled ? this.getMessageBus() : void 0);
349158
- registry.registerTool(wrapper);
349159
- } catch (error) {
349160
- console.error(`Failed to wrap agent '${definition.name}' as a tool:`, error);
349161
- }
349162
- } else if (this.getDebugMode()) {
349163
- debugLogger.log(`[Config] Skipping registration of agent '${definition.name}' due to allow/exclude configuration.`);
349117
+ const messageBusEnabled = this.getEnableMessageBusIntegration();
349118
+ const wrapper = new SubagentToolWrapper(definition, this, messageBusEnabled ? this.getMessageBus() : void 0);
349119
+ registry.registerTool(wrapper);
349164
349120
  }
349165
349121
  }
349166
349122
  }
@@ -349169,6 +349125,11 @@ var Config = class {
349169
349125
  }
349170
349126
  };
349171
349127
 
349128
+ // packages/core/dist/src/commands/extensions.js
349129
+ function listExtensions(config2) {
349130
+ return config2.getExtensions();
349131
+ }
349132
+
349172
349133
  // packages/core/dist/src/core/logger.js
349173
349134
  var MessageSenderType;
349174
349135
  (function(MessageSenderType2) {
@@ -351896,6 +351857,57 @@ function parseAndFormatApiError(error, authType, userTier, currentModel, fallbac
351896
351857
  return "[API Error: An unknown error occurred.]";
351897
351858
  }
351898
351859
 
351860
+ // packages/core/dist/src/utils/events.js
351861
+ import { EventEmitter as EventEmitter10 } from "node:events";
351862
+ var CoreEvent;
351863
+ (function(CoreEvent2) {
351864
+ CoreEvent2["UserFeedback"] = "user-feedback";
351865
+ })(CoreEvent || (CoreEvent = {}));
351866
+ var CoreEventEmitter = class _CoreEventEmitter extends EventEmitter10 {
351867
+ _feedbackBacklog = [];
351868
+ static MAX_BACKLOG_SIZE = 1e4;
351869
+ constructor() {
351870
+ super();
351871
+ }
351872
+ /**
351873
+ * Sends actionable feedback to the user.
351874
+ * Buffers automatically if the UI hasn't subscribed yet.
351875
+ */
351876
+ emitFeedback(severity, message, error) {
351877
+ const payload = { severity, message, error };
351878
+ if (this.listenerCount(CoreEvent.UserFeedback) === 0) {
351879
+ if (this._feedbackBacklog.length >= _CoreEventEmitter.MAX_BACKLOG_SIZE) {
351880
+ this._feedbackBacklog.shift();
351881
+ }
351882
+ this._feedbackBacklog.push(payload);
351883
+ } else {
351884
+ this.emit(CoreEvent.UserFeedback, payload);
351885
+ }
351886
+ }
351887
+ /**
351888
+ * Flushes buffered messages. Call this immediately after primary UI listener
351889
+ * subscribes.
351890
+ */
351891
+ drainFeedbackBacklog() {
351892
+ const backlog = [...this._feedbackBacklog];
351893
+ this._feedbackBacklog.length = 0;
351894
+ for (const payload of backlog) {
351895
+ this.emit(CoreEvent.UserFeedback, payload);
351896
+ }
351897
+ }
351898
+ on(event, listener) {
351899
+ return super.on(event, listener);
351900
+ }
351901
+ off(event, listener) {
351902
+ return super.off(event, listener);
351903
+ }
351904
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
351905
+ emit(event, ...args2) {
351906
+ return super.emit(event, ...args2);
351907
+ }
351908
+ };
351909
+ var coreEvents = new CoreEventEmitter();
351910
+
351899
351911
  // packages/core/dist/src/utils/session.js
351900
351912
  import { randomUUID as randomUUID6 } from "node:crypto";
351901
351913
  var sessionId = randomUUID6();
@@ -351946,7 +351958,8 @@ async function loadConfig(settings, extensions, taskId) {
351946
351958
  enableRecursiveFileSearch: settings.fileFiltering?.enableRecursiveFileSearch
351947
351959
  },
351948
351960
  ideMode: false,
351949
- folderTrust: settings.folderTrust === true
351961
+ folderTrust: settings.folderTrust === true,
351962
+ extensions
351950
351963
  };
351951
351964
  const fileService = new FileDiscoveryService(workspaceDir);
351952
351965
  const { memoryContent, fileCount } = await loadServerHierarchicalMemory(
@@ -352357,10 +352370,10 @@ function loadSettings(workspaceDir) {
352357
352370
  });
352358
352371
  }
352359
352372
  if (settingsErrors.length > 0) {
352360
- console.error("Errors loading settings:");
352373
+ debugLogger.error("Errors loading settings:");
352361
352374
  for (const error of settingsErrors) {
352362
- console.error(` Path: ${error.path}`);
352363
- console.error(` Message: ${error.message}`);
352375
+ debugLogger.error(` Path: ${error.path}`);
352376
+ debugLogger.error(` Message: ${error.message}`);
352364
352377
  }
352365
352378
  }
352366
352379
  return {
@@ -353746,6 +353759,31 @@ var CoderAgentExecutor = class {
353746
353759
  }
353747
353760
  };
353748
353761
 
353762
+ // packages/a2a-server/src/commands/list-extensions.ts
353763
+ var ListExtensionsCommand = class {
353764
+ names = ["extensions", "extensions list"];
353765
+ async execute(config2, _) {
353766
+ return listExtensions(config2);
353767
+ }
353768
+ };
353769
+
353770
+ // packages/a2a-server/src/commands/command-registry.ts
353771
+ var CommandRegistry = class {
353772
+ commands = /* @__PURE__ */ new Map();
353773
+ constructor() {
353774
+ this.register(new ListExtensionsCommand());
353775
+ }
353776
+ register(command) {
353777
+ for (const name4 of command.names) {
353778
+ this.commands.set(name4, command);
353779
+ }
353780
+ }
353781
+ get(commandName) {
353782
+ return this.commands.get(commandName);
353783
+ }
353784
+ };
353785
+ var commandRegistry = new CommandRegistry();
353786
+
353749
353787
  // packages/a2a-server/src/http/app.ts
353750
353788
  var coderAgentCard = {
353751
353789
  name: "Gemini SDLC Agent",
@@ -353788,6 +353826,11 @@ function updateCoderAgentCardUrl(port) {
353788
353826
  }
353789
353827
  async function createApp() {
353790
353828
  try {
353829
+ const workspaceRoot = setTargetDir(void 0);
353830
+ loadEnvironment();
353831
+ const settings = loadSettings(workspaceRoot);
353832
+ const extensions = loadExtensions(workspaceRoot);
353833
+ const config2 = await loadConfig(settings, extensions, "a2a-server");
353791
353834
  const bucketName = process.env["GCS_BUCKET_NAME"];
353792
353835
  let taskStoreForExecutor;
353793
353836
  let taskStoreForHandler;
@@ -353833,6 +353876,27 @@ async function createApp() {
353833
353876
  res.status(500).send({ error: errorMessage });
353834
353877
  }
353835
353878
  });
353879
+ expressApp.post("/executeCommand", async (req, res) => {
353880
+ try {
353881
+ const { command, args: args2 } = req.body;
353882
+ if (typeof command !== "string") {
353883
+ return res.status(400).json({ error: 'Invalid "command" field.' });
353884
+ }
353885
+ if (args2 && !Array.isArray(args2)) {
353886
+ return res.status(400).json({ error: '"args" field must be an array.' });
353887
+ }
353888
+ const commandToExecute = commandRegistry.get(command);
353889
+ if (!commandToExecute) {
353890
+ return res.status(404).json({ error: `Command not found: ${command}` });
353891
+ }
353892
+ const result = await commandToExecute.execute(config2, args2 ?? []);
353893
+ return res.status(200).json(result);
353894
+ } catch (e2) {
353895
+ logger.error("Error executing /executeCommand:", e2);
353896
+ const errorMessage = e2 instanceof Error ? e2.message : "Unknown error executing command";
353897
+ return res.status(500).json({ error: errorMessage });
353898
+ }
353899
+ });
353836
353900
  expressApp.get("/tasks/metadata", async (req, res) => {
353837
353901
  if (!(taskStoreForExecutor instanceof InMemoryTaskStore)) {
353838
353902
  res.status(501).send({