@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.
- package/dist/a2a-server.mjs +187 -123
- package/dist/src/commands/command-registry.d.ts +18 -0
- package/dist/src/commands/command-registry.js +22 -0
- package/dist/src/commands/command-registry.js.map +1 -0
- package/dist/src/commands/command-registry.test.d.ts +6 -0
- package/dist/src/commands/command-registry.test.js +41 -0
- package/dist/src/commands/command-registry.test.js.map +1 -0
- package/dist/src/commands/list-extensions.d.ts +11 -0
- package/dist/src/commands/list-extensions.js +13 -0
- package/dist/src/commands/list-extensions.js.map +1 -0
- package/dist/src/commands/list-extensions.test.d.ts +6 -0
- package/dist/src/commands/list-extensions.test.js +31 -0
- package/dist/src/commands/list-extensions.test.js.map +1 -0
- package/dist/src/config/config.js +1 -0
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/settings.js +4 -4
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/http/app.js +36 -0
- package/dist/src/http/app.js.map +1 -1
- package/dist/src/http/app.test.js +50 -0
- package/dist/src/http/app.test.js.map +1 -1
- package/dist/src/persistence/gcs.test.js +48 -10
- package/dist/src/persistence/gcs.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
package/dist/a2a-server.mjs
CHANGED
|
@@ -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
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
93134
|
-
function
|
|
93133
|
+
module2.exports = EventEmitter11;
|
|
93134
|
+
function EventEmitter11() {
|
|
93135
93135
|
this._listeners = {};
|
|
93136
93136
|
}
|
|
93137
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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,
|
|
210814
|
+
util4.inherits(FdSlicer, EventEmitter11);
|
|
210815
210815
|
function FdSlicer(fd, options2) {
|
|
210816
210816
|
options2 = options2 || {};
|
|
210817
|
-
|
|
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,
|
|
210961
|
+
util4.inherits(BufferSlicer, EventEmitter11);
|
|
210962
210962
|
function BufferSlicer(buffer, options2) {
|
|
210963
|
-
|
|
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
|
|
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,
|
|
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
|
-
|
|
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,
|
|
211869
|
+
util4.inherits(RandomAccessReader, EventEmitter11);
|
|
211870
211870
|
function RandomAccessReader() {
|
|
211871
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
228971
|
+
var { EventEmitter: EventEmitter11 } = __require("node:events");
|
|
228972
228972
|
var { assertCacheKey, assertCacheValue } = require_cache2();
|
|
228973
|
-
var MemoryCacheStore = class extends
|
|
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 = "
|
|
288507
|
-
var CLI_VERSION = "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.
|
|
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,
|
|
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
|
-
|
|
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
|
-
(${
|
|
300674
|
+
(${ignoredCount} ignored)`;
|
|
300674
300675
|
}
|
|
300675
300676
|
let displayMessage = `Listed ${entries2.length} item(s).`;
|
|
300676
|
-
if (
|
|
300677
|
-
displayMessage += ` (${
|
|
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.
|
|
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,
|
|
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 (
|
|
322394
|
-
message += ` (${
|
|
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 (
|
|
322417
|
-
resultMessage += ` (${
|
|
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
|
-
|
|
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
|
|
337120
|
-
const
|
|
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,
|
|
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 (
|
|
337171
|
+
if (ignoredCount > 0) {
|
|
337188
337172
|
skippedFiles.push({
|
|
337189
|
-
path: `${
|
|
337190
|
-
reason: "
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
349156
|
-
|
|
349157
|
-
|
|
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
|
-
|
|
352373
|
+
debugLogger.error("Errors loading settings:");
|
|
352361
352374
|
for (const error of settingsErrors) {
|
|
352362
|
-
|
|
352363
|
-
|
|
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({
|