@google/gemini-cli-a2a-server 0.40.0-preview.4 → 0.41.0-nightly.20260427.g42587de73

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.
@@ -115668,6 +115668,10 @@ function getDisplayString(model, config3) {
115668
115668
  return "Auto (Gemini 3)";
115669
115669
  case DEFAULT_GEMINI_MODEL_AUTO:
115670
115670
  return "Auto (Gemini 2.5)";
115671
+ case GEMMA_4_31B_IT_MODEL:
115672
+ return GEMMA_4_31B_IT_MODEL;
115673
+ case GEMMA_4_26B_A4B_IT_MODEL:
115674
+ return GEMMA_4_26B_A4B_IT_MODEL;
115671
115675
  case GEMINI_MODEL_ALIAS_PRO:
115672
115676
  return PREVIEW_GEMINI_MODEL;
115673
115677
  case GEMINI_MODEL_ALIAS_FLASH:
@@ -115728,7 +115732,7 @@ function supportsMultimodalFunctionResponse(model, config3) {
115728
115732
  }
115729
115733
  return model.startsWith("gemini-3-");
115730
115734
  }
115731
- var PREVIEW_GEMINI_MODEL, PREVIEW_GEMINI_3_1_MODEL, PREVIEW_GEMINI_3_1_CUSTOM_TOOLS_MODEL, PREVIEW_GEMINI_FLASH_MODEL, PREVIEW_GEMINI_3_1_FLASH_LITE_MODEL, DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_FLASH_LITE_MODEL, PREVIEW_GEMINI_MODEL_AUTO, DEFAULT_GEMINI_MODEL_AUTO, GEMINI_MODEL_ALIAS_AUTO, GEMINI_MODEL_ALIAS_PRO, GEMINI_MODEL_ALIAS_FLASH, GEMINI_MODEL_ALIAS_FLASH_LITE, DEFAULT_GEMINI_EMBEDDING_MODEL, DEFAULT_THINKING_MODE;
115735
+ var PREVIEW_GEMINI_MODEL, PREVIEW_GEMINI_3_1_MODEL, PREVIEW_GEMINI_3_1_CUSTOM_TOOLS_MODEL, PREVIEW_GEMINI_FLASH_MODEL, PREVIEW_GEMINI_3_1_FLASH_LITE_MODEL, DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_FLASH_LITE_MODEL, GEMMA_4_31B_IT_MODEL, GEMMA_4_26B_A4B_IT_MODEL, PREVIEW_GEMINI_MODEL_AUTO, DEFAULT_GEMINI_MODEL_AUTO, GEMINI_MODEL_ALIAS_AUTO, GEMINI_MODEL_ALIAS_PRO, GEMINI_MODEL_ALIAS_FLASH, GEMINI_MODEL_ALIAS_FLASH_LITE, DEFAULT_GEMINI_EMBEDDING_MODEL, DEFAULT_THINKING_MODE;
115732
115736
  var init_models = __esm({
115733
115737
  "packages/core/dist/src/config/models.js"() {
115734
115738
  "use strict";
@@ -115740,6 +115744,8 @@ var init_models = __esm({
115740
115744
  DEFAULT_GEMINI_MODEL = "gemini-2.5-pro";
115741
115745
  DEFAULT_GEMINI_FLASH_MODEL = "gemini-2.5-flash";
115742
115746
  DEFAULT_GEMINI_FLASH_LITE_MODEL = "gemini-2.5-flash-lite";
115747
+ GEMMA_4_31B_IT_MODEL = "gemma-4-31b-it";
115748
+ GEMMA_4_26B_A4B_IT_MODEL = "gemma-4-26b-a4b-it";
115743
115749
  PREVIEW_GEMINI_MODEL_AUTO = "auto-gemini-3";
115744
115750
  DEFAULT_GEMINI_MODEL_AUTO = "auto-gemini-2.5";
115745
115751
  GEMINI_MODEL_ALIAS_AUTO = "auto";
@@ -209378,8 +209384,8 @@ var GIT_COMMIT_INFO, CLI_VERSION;
209378
209384
  var init_git_commit = __esm({
209379
209385
  "packages/core/dist/src/generated/git-commit.js"() {
209380
209386
  "use strict";
209381
- GIT_COMMIT_INFO = "31bdf112d";
209382
- CLI_VERSION = "0.40.0-preview.4";
209387
+ GIT_COMMIT_INFO = "42587de73";
209388
+ CLI_VERSION = "0.41.0-nightly.20260427.g42587de73";
209383
209389
  }
209384
209390
  });
209385
209391
 
@@ -279806,6 +279812,8 @@ async function loadConversationRecord(filePath, options) {
279806
279812
  const messagesMap = /* @__PURE__ */ new Map();
279807
279813
  const messageIds = [];
279808
279814
  const messageKinds = /* @__PURE__ */ new Map();
279815
+ let isTrackingMemoryScratchpadFreshness = false;
279816
+ let memoryScratchpadIsStale = false;
279809
279817
  let firstUserMessageStr;
279810
279818
  for await (const line of rl) {
279811
279819
  if (!line.trim())
@@ -279813,6 +279821,9 @@ async function loadConversationRecord(filePath, options) {
279813
279821
  try {
279814
279822
  const record2 = JSON.parse(line);
279815
279823
  if (isRewindRecord(record2)) {
279824
+ if (isTrackingMemoryScratchpadFreshness) {
279825
+ memoryScratchpadIsStale = true;
279826
+ }
279816
279827
  const rewindId = record2.$rewindTo;
279817
279828
  if (options?.metadataOnly) {
279818
279829
  const idx = messageIds.indexOf(rewindId);
@@ -279843,6 +279854,9 @@ async function loadConversationRecord(filePath, options) {
279843
279854
  }
279844
279855
  }
279845
279856
  } else if (isMessageRecord(record2)) {
279857
+ if (isTrackingMemoryScratchpadFreshness) {
279858
+ memoryScratchpadIsStale = true;
279859
+ }
279846
279860
  const id = record2.id;
279847
279861
  const isUser = hasProperty(record2, "type") && record2.type === "user";
279848
279862
  const isUserOrAssistant = hasProperty(record2, "type") && (record2.type === "user" || record2.type === "gemini");
@@ -279867,6 +279881,10 @@ async function loadConversationRecord(filePath, options) {
279867
279881
  }
279868
279882
  }
279869
279883
  } else if (isMetadataUpdateRecord(record2)) {
279884
+ if (hasProperty(record2.$set, "memoryScratchpad")) {
279885
+ isTrackingMemoryScratchpadFreshness = Boolean(record2.$set.memoryScratchpad);
279886
+ memoryScratchpadIsStale = false;
279887
+ }
279870
279888
  metadata2 = {
279871
279889
  ...metadata2,
279872
279890
  ...record2.$set
@@ -279900,11 +279918,13 @@ async function loadConversationRecord(filePath, options) {
279900
279918
  startTime: metadata2.startTime || (/* @__PURE__ */ new Date()).toISOString(),
279901
279919
  lastUpdated: metadata2.lastUpdated || (/* @__PURE__ */ new Date()).toISOString(),
279902
279920
  summary: metadata2.summary,
279921
+ memoryScratchpad: metadata2.memoryScratchpad,
279903
279922
  directories: metadata2.directories,
279904
279923
  kind: metadata2.kind,
279905
279924
  messages: options?.metadataOnly ? [] : loadedMessages,
279906
279925
  messageCount: options?.metadataOnly ? metadataMessages.length || messageIds.length : loadedMessages.length,
279907
279926
  userMessageCount: options?.metadataOnly && metadataMessages.length > 0 ? metadataMessages.filter((m3) => m3.type === "user").length : userMessageCount,
279927
+ memoryScratchpadIsStale: isTrackingMemoryScratchpadFreshness ? memoryScratchpadIsStale : void 0,
279908
279928
  firstUserMessage: fallbackFirstUserMessage,
279909
279929
  hasUserOrAssistantMessage: options?.metadataOnly && metadataMessages.length > 0 ? metadataMessages.some((m3) => m3.type === "user" || m3.type === "gemini") : hasUserOrAssistant
279910
279930
  };
@@ -280003,6 +280023,13 @@ var init_chatRecordingService = __esm({
280003
280023
  for (const msg of this.cachedConversation.messages) {
280004
280024
  this.appendRecord(msg);
280005
280025
  }
280026
+ if (this.cachedConversation.memoryScratchpad) {
280027
+ this.appendRecord({
280028
+ $set: {
280029
+ memoryScratchpad: this.cachedConversation.memoryScratchpad
280030
+ }
280031
+ });
280032
+ }
280006
280033
  }
280007
280034
  this.updateMetadata({ sessionId: this.sessionId });
280008
280035
  } else {
@@ -329321,7 +329348,7 @@ function getVersion() {
329321
329348
  }
329322
329349
  versionPromise = (async () => {
329323
329350
  const pkgJson = await getPackageJson(__dirname4);
329324
- return "0.40.0-preview.4";
329351
+ return "0.41.0-nightly.20260427.g42587de73";
329325
329352
  })();
329326
329353
  return versionPromise;
329327
329354
  }
@@ -336871,9 +336898,9 @@ var init_unescape = __esm({
336871
336898
  "node_modules/minimatch/dist/esm/unescape.js"() {
336872
336899
  unescape2 = (s5, { windowsPathsNoEscape = false, magicalBraces = true } = {}) => {
336873
336900
  if (magicalBraces) {
336874
- return windowsPathsNoEscape ? s5.replace(/\[([^\/\\])\]/g, "$1") : s5.replace(/((?!\\).|^)\[([^\/\\])\]/g, "$1$2").replace(/\\([^\/])/g, "$1");
336901
+ return windowsPathsNoEscape ? s5.replace(/\[([^/\\])\]/g, "$1") : s5.replace(/((?!\\).|^)\[([^/\\])\]/g, "$1$2").replace(/\\([^/])/g, "$1");
336875
336902
  }
336876
- return windowsPathsNoEscape ? s5.replace(/\[([^\/\\{}])\]/g, "$1") : s5.replace(/((?!\\).|^)\[([^\/\\{}])\]/g, "$1$2").replace(/\\([^\/{}])/g, "$1");
336903
+ return windowsPathsNoEscape ? s5.replace(/\[([^/\\{}])\]/g, "$1") : s5.replace(/((?!\\).|^)\[([^/\\{}])\]/g, "$1$2").replace(/\\([^/{}])/g, "$1");
336877
336904
  };
336878
336905
  }
336879
336906
  });
@@ -336999,13 +337026,7 @@ var init_ast = __esm({
336999
337026
  }
337000
337027
  // reconstructs the pattern
337001
337028
  toString() {
337002
- if (this.#toString !== void 0)
337003
- return this.#toString;
337004
- if (!this.type) {
337005
- return this.#toString = this.#parts.map((p2) => String(p2)).join("");
337006
- } else {
337007
- return this.#toString = this.type + "(" + this.#parts.map((p2) => String(p2)).join("|") + ")";
337008
- }
337029
+ return this.#toString !== void 0 ? this.#toString : !this.type ? this.#toString = this.#parts.map((p2) => String(p2)).join("") : this.#toString = this.type + "(" + this.#parts.map((p2) => String(p2)).join("|") + ")";
337009
337030
  }
337010
337031
  #fillNegs() {
337011
337032
  if (this !== this.#root)
@@ -337566,7 +337587,7 @@ var init_esm7 = __esm({
337566
337587
  }
337567
337588
  return new Minimatch(pattern, options).match(p2);
337568
337589
  };
337569
- starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/;
337590
+ starDotExtRE = /^\*+([^+@!?*[(]*)$/;
337570
337591
  starDotExtTest = (ext2) => (f4) => !f4.startsWith(".") && f4.endsWith(ext2);
337571
337592
  starDotExtTestDot = (ext2) => (f4) => f4.endsWith(ext2);
337572
337593
  starDotExtTestNocase = (ext2) => {
@@ -337585,7 +337606,7 @@ var init_esm7 = __esm({
337585
337606
  starRE = /^\*+$/;
337586
337607
  starTest = (f4) => f4.length !== 0 && !f4.startsWith(".");
337587
337608
  starTestDot = (f4) => f4.length !== 0 && f4 !== "." && f4 !== "..";
337588
- qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/;
337609
+ qmarksRE = /^\?+([^+@!?*[(]*)?$/;
337589
337610
  qmarksTestNocase = ([$0, ext2 = ""]) => {
337590
337611
  const noext = qmarksTestNoExt([$0]);
337591
337612
  if (!ext2)
@@ -337804,10 +337825,10 @@ var init_esm7 = __esm({
337804
337825
  // of patterns that we have to process.
337805
337826
  preprocess(globParts) {
337806
337827
  if (this.options.noglobstar) {
337807
- for (let i3 = 0; i3 < globParts.length; i3++) {
337808
- for (let j2 = 0; j2 < globParts[i3].length; j2++) {
337809
- if (globParts[i3][j2] === "**") {
337810
- globParts[i3][j2] = "*";
337828
+ for (const partset of globParts) {
337829
+ for (let j2 = 0; j2 < partset.length; j2++) {
337830
+ if (partset[j2] === "**") {
337831
+ partset[j2] = "*";
337811
337832
  }
337812
337833
  }
337813
337834
  }
@@ -337885,7 +337906,7 @@ var init_esm7 = __esm({
337885
337906
  let dd = 0;
337886
337907
  while (-1 !== (dd = parts2.indexOf("..", dd + 1))) {
337887
337908
  const p2 = parts2[dd - 1];
337888
- if (p2 && p2 !== "." && p2 !== ".." && p2 !== "**") {
337909
+ if (p2 && p2 !== "." && p2 !== ".." && p2 !== "**" && !(this.isWindows && /^[a-z]:$/i.test(p2))) {
337889
337910
  didSomething = true;
337890
337911
  parts2.splice(dd - 1, 2);
337891
337912
  dd -= 2;
@@ -338301,7 +338322,7 @@ var init_esm7 = __esm({
338301
338322
  re3 = "^(?!" + re3 + ").+$";
338302
338323
  try {
338303
338324
  this.regexp = new RegExp(re3, [...flags2].join(""));
338304
- } catch (ex) {
338325
+ } catch {
338305
338326
  this.regexp = false;
338306
338327
  }
338307
338328
  return this.regexp;
@@ -338309,7 +338330,7 @@ var init_esm7 = __esm({
338309
338330
  slashSplit(p2) {
338310
338331
  if (this.preserveMultipleSlashes) {
338311
338332
  return p2.split("/");
338312
- } else if (this.isWindows && /^\/\/[^\/]+/.test(p2)) {
338333
+ } else if (this.isWindows && /^\/\/[^/]+/.test(p2)) {
338313
338334
  return ["", ...p2.split(/\/+/)];
338314
338335
  } else {
338315
338336
  return p2.split(/\/+/);
@@ -338340,8 +338361,7 @@ var init_esm7 = __esm({
338340
338361
  filename = ff[i3];
338341
338362
  }
338342
338363
  }
338343
- for (let i3 = 0; i3 < set2.length; i3++) {
338344
- const pattern = set2[i3];
338364
+ for (const pattern of set2) {
338345
338365
  let file = ff;
338346
338366
  if (options.matchBase && pattern.length === 1) {
338347
338367
  file = [filename];
@@ -364337,6 +364357,9 @@ ${[...this.pendingCitations].sort().join("\n")}`
364337
364357
  // packages/core/dist/src/core/tokenLimits.js
364338
364358
  function tokenLimit(model) {
364339
364359
  switch (model) {
364360
+ case GEMMA_4_31B_IT_MODEL:
364361
+ case GEMMA_4_26B_A4B_IT_MODEL:
364362
+ return GEMMA_4_TOKEN_LIMIT;
364340
364363
  case PREVIEW_GEMINI_MODEL:
364341
364364
  case PREVIEW_GEMINI_FLASH_MODEL:
364342
364365
  case DEFAULT_GEMINI_MODEL:
@@ -364347,12 +364370,13 @@ function tokenLimit(model) {
364347
364370
  return DEFAULT_TOKEN_LIMIT;
364348
364371
  }
364349
364372
  }
364350
- var DEFAULT_TOKEN_LIMIT;
364373
+ var DEFAULT_TOKEN_LIMIT, GEMMA_4_TOKEN_LIMIT;
364351
364374
  var init_tokenLimits = __esm({
364352
364375
  "packages/core/dist/src/core/tokenLimits.js"() {
364353
364376
  "use strict";
364354
364377
  init_models();
364355
364378
  DEFAULT_TOKEN_LIMIT = 1048576;
364379
+ GEMMA_4_TOKEN_LIMIT = 256e3;
364356
364380
  }
364357
364381
  });
364358
364382
 
@@ -378726,8 +378750,6 @@ var init_client4 = __esm({
378726
378750
  this.forceFullIdeContext = false;
378727
378751
  }
378728
378752
  turn = new Turn(this.getChat(), prompt_id);
378729
- const controller = new AbortController();
378730
- const linkedSignal = AbortSignal.any([signal, controller.signal]);
378731
378753
  const loopResult = await this.loopDetector.turnStarted(signal);
378732
378754
  if (loopResult.count > 1) {
378733
378755
  yield { type: GeminiEventType.LoopDetected };
@@ -378767,7 +378789,7 @@ var init_client4 = __esm({
378767
378789
  }
378768
378790
  this.currentSequenceModel = modelToUse;
378769
378791
  await this.setTools(modelToUse);
378770
- const resultStream = turn.run(modelConfigKey, request, linkedSignal, displayContent);
378792
+ const resultStream = turn.run(modelConfigKey, request, signal, displayContent);
378771
378793
  let isError = false;
378772
378794
  let isInvalidStream = false;
378773
378795
  let loopDetectedAbort = false;
@@ -378797,11 +378819,10 @@ var init_client4 = __esm({
378797
378819
  }
378798
378820
  }
378799
378821
  if (loopDetectedAbort) {
378800
- controller.abort();
378801
378822
  return turn;
378802
378823
  }
378803
378824
  if (loopRecoverResult) {
378804
- return yield* this._recoverFromLoop(loopRecoverResult, signal, prompt_id, boundedTurns, isInvalidStreamRetry, displayContent, controller);
378825
+ return yield* this._recoverFromLoop(loopRecoverResult, signal, prompt_id, boundedTurns, isInvalidStreamRetry, displayContent);
378805
378826
  }
378806
378827
  if (isError) {
378807
378828
  return turn;
@@ -379067,8 +379088,7 @@ ${responseText}` : responseText;
379067
379088
  /**
379068
379089
  * Handles loop recovery by providing feedback to the model and initiating a new turn.
379069
379090
  */
379070
- _recoverFromLoop(loopResult, signal, prompt_id, boundedTurns, isInvalidStreamRetry, displayContent, controllerToAbort) {
379071
- controllerToAbort?.abort();
379091
+ _recoverFromLoop(loopResult, signal, prompt_id, boundedTurns, isInvalidStreamRetry, displayContent) {
379072
379092
  this.loopDetector.clearDetection();
379073
379093
  const feedbackText = `System: Potential loop detected. Details: ${loopResult.detail || "Repetitive patterns identified"}. Please take a step back and confirm you're making forward progress. If not, take a step back, analyze your previous actions and rethink how you're approaching the problem. Avoid repeating the same tool calls or responses without new results.`;
379074
379094
  if (this.config.getDebugMode()) {
@@ -381252,12 +381272,16 @@ var init_local_executor = __esm({
381252
381272
  }
381253
381273
  return {
381254
381274
  result: finalResult || "Task completed.",
381255
- terminate_reason: terminateReason
381275
+ terminate_reason: terminateReason,
381276
+ turn_count: turnCounter,
381277
+ duration_ms: Date.now() - startTime
381256
381278
  };
381257
381279
  }
381258
381280
  return {
381259
381281
  result: finalResult || "Agent execution was terminated before completion.",
381260
- terminate_reason: terminateReason
381282
+ terminate_reason: terminateReason,
381283
+ turn_count: turnCounter,
381284
+ duration_ms: Date.now() - startTime
381261
381285
  };
381262
381286
  } catch (error2) {
381263
381287
  if (error2 instanceof Error && error2.name === "AbortError" && deadlineTimer.signal.aborted && !signal.aborted) {
@@ -381282,7 +381306,9 @@ var init_local_executor = __esm({
381282
381306
  }
381283
381307
  return {
381284
381308
  result: finalResult,
381285
- terminate_reason: terminateReason
381309
+ terminate_reason: terminateReason,
381310
+ turn_count: turnCounter,
381311
+ duration_ms: Date.now() - startTime
381286
381312
  };
381287
381313
  }
381288
381314
  }
@@ -381294,7 +381320,9 @@ var init_local_executor = __esm({
381294
381320
  });
381295
381321
  return {
381296
381322
  result: finalResult,
381297
- terminate_reason: terminateReason
381323
+ terminate_reason: terminateReason,
381324
+ turn_count: turnCounter,
381325
+ duration_ms: Date.now() - startTime
381298
381326
  };
381299
381327
  }
381300
381328
  this.emitActivity("ERROR", {
@@ -391498,6 +391526,18 @@ var init_defaultModelConfigs = __esm({
391498
391526
  model: "gemini-2.5-flash-lite"
391499
391527
  }
391500
391528
  },
391529
+ "gemma-4-31b-it": {
391530
+ extends: "chat-base-3",
391531
+ modelConfig: {
391532
+ model: "gemma-4-31b-it"
391533
+ }
391534
+ },
391535
+ "gemma-4-26b-a4b-it": {
391536
+ extends: "chat-base-3",
391537
+ modelConfig: {
391538
+ model: "gemma-4-26b-a4b-it"
391539
+ }
391540
+ },
391501
391541
  // Bases for the internal model configs.
391502
391542
  "gemini-2.5-flash-base": {
391503
391543
  extends: "base",
@@ -391726,6 +391766,22 @@ var init_defaultModelConfigs = __esm({
391726
391766
  isVisible: true,
391727
391767
  features: { thinking: false, multimodalToolUse: false }
391728
391768
  },
391769
+ "gemma-4-31b-it": {
391770
+ displayName: "gemma-4-31b-it",
391771
+ tier: "custom",
391772
+ family: "gemma-4",
391773
+ isPreview: false,
391774
+ isVisible: true,
391775
+ features: { thinking: true, multimodalToolUse: false }
391776
+ },
391777
+ "gemma-4-26b-a4b-it": {
391778
+ displayName: "gemma-4-26b-a4b-it",
391779
+ tier: "custom",
391780
+ family: "gemma-4",
391781
+ isPreview: false,
391782
+ isVisible: true,
391783
+ features: { thinking: true, multimodalToolUse: false }
391784
+ },
391729
391785
  // Aliases
391730
391786
  auto: {
391731
391787
  tier: "auto",
@@ -391769,6 +391825,12 @@ var init_defaultModelConfigs = __esm({
391769
391825
  }
391770
391826
  },
391771
391827
  modelIdResolutions: {
391828
+ "gemma-4-31b-it": {
391829
+ default: "gemma-4-31b-it"
391830
+ },
391831
+ "gemma-4-26b-a4b-it": {
391832
+ default: "gemma-4-26b-a4b-it"
391833
+ },
391772
391834
  "gemini-3.1-pro-preview": {
391773
391835
  default: "gemini-3.1-pro-preview",
391774
391836
  contexts: [
@@ -393343,11 +393405,15 @@ var init_policy_engine = __esm({
393343
393405
  await initializeShellParsers();
393344
393406
  const parsed = parseCommandDetails(command);
393345
393407
  const subCommands = parsed?.details ?? [];
393346
- if (subCommands.length === 0) {
393408
+ if (subCommands.length === 0 || parsed?.hasError) {
393347
393409
  if (ruleDecision === PolicyDecision.DENY) {
393348
393410
  return { decision: PolicyDecision.DENY, rule };
393349
393411
  }
393350
393412
  if (this.approvalMode === ApprovalMode.YOLO) {
393413
+ if (rule?.argsPattern) {
393414
+ debugLogger.debug(`[PolicyEngine.check] Parsing failed for restricted rule, forcing DENY: ${command}`);
393415
+ return { decision: PolicyDecision.DENY, rule };
393416
+ }
393351
393417
  return {
393352
393418
  decision: PolicyDecision.ALLOW,
393353
393419
  rule
@@ -419270,11 +419336,13 @@ var init_config4 = __esm({
419270
419336
  experimentalJitContext;
419271
419337
  experimentalMemoryV2;
419272
419338
  experimentalAutoMemory;
419339
+ experimentalGemma;
419273
419340
  experimentalContextManagementConfig;
419274
419341
  memoryBoundaryMarkers;
419275
419342
  topicUpdateNarration;
419276
419343
  disableLLMCorrection;
419277
419344
  planEnabled;
419345
+ voiceMode;
419278
419346
  trackerEnabled;
419279
419347
  planModeRoutingEnabled;
419280
419348
  modelSteering;
@@ -419390,6 +419458,7 @@ var init_config4 = __esm({
419390
419458
  this.agents = params.agents ?? {};
419391
419459
  this.disableLLMCorrection = params.disableLLMCorrection ?? true;
419392
419460
  this.planEnabled = params.plan ?? true;
419461
+ this.voiceMode = params.voiceMode ?? false;
419393
419462
  this.trackerEnabled = params.tracker ?? false;
419394
419463
  this.planModeRoutingEnabled = params.planSettings?.modelRouting ?? true;
419395
419464
  this.enableEventDrivenScheduler = params.enableEventDrivenScheduler ?? true;
@@ -419433,6 +419502,7 @@ var init_config4 = __esm({
419433
419502
  this.experimentalJitContext = params.experimentalJitContext ?? true;
419434
419503
  this.experimentalMemoryV2 = params.experimentalMemoryV2 ?? true;
419435
419504
  this.experimentalAutoMemory = params.experimentalAutoMemory ?? false;
419505
+ this.experimentalGemma = params.experimentalGemma ?? false;
419436
419506
  this.experimentalContextManagementConfig = params.experimentalContextManagementConfig;
419437
419507
  this.memoryBoundaryMarkers = params.memoryBoundaryMarkers ?? [".git"];
419438
419508
  this.contextManagement = {
@@ -419706,13 +419776,17 @@ var init_config4 = __esm({
419706
419776
  debugLogger.error("Failed to fetch experiments", e3);
419707
419777
  return void 0;
419708
419778
  });
419709
- const experiments = await this.experimentsPromise;
419779
+ const [experiments] = await Promise.all([
419780
+ this.experimentsPromise,
419781
+ quotaPromise.catch((e3) => {
419782
+ debugLogger.error("Failed to fetch user quota", e3);
419783
+ })
419784
+ ]);
419710
419785
  const requestTimeoutMs = this.getRequestTimeoutMs();
419711
419786
  if (requestTimeoutMs !== void 0) {
419712
419787
  updateGlobalFetchTimeouts(requestTimeoutMs);
419713
419788
  }
419714
419789
  this.baseLlmClient = new BaseLlmClient(this.contentGenerator, this);
419715
- await quotaPromise;
419716
419790
  const authType = this.contentGeneratorConfig.authType;
419717
419791
  if (authType === AuthType2.USE_GEMINI || authType === AuthType2.USE_VERTEX_AI) {
419718
419792
  this.setHasAccessToPreviewModel(true);
@@ -419721,11 +419795,15 @@ var init_config4 = __esm({
419721
419795
  this.setModel(DEFAULT_GEMINI_MODEL_AUTO);
419722
419796
  }
419723
419797
  const adminControlsEnabled = experiments?.flags[ExperimentFlags.ENABLE_ADMIN_CONTROLS]?.boolValue ?? false;
419724
- const adminControls = await fetchAdminControls(codeAssistServer, this.getRemoteAdminSettings(), adminControlsEnabled, (newSettings) => {
419725
- this.setRemoteAdminSettings(newSettings);
419726
- coreEvents.emitAdminSettingsChanged();
419727
- });
419728
- this.setRemoteAdminSettings(adminControls);
419798
+ try {
419799
+ const adminControls = await fetchAdminControls(codeAssistServer, this.getRemoteAdminSettings(), adminControlsEnabled, (newSettings) => {
419800
+ this.setRemoteAdminSettings(newSettings);
419801
+ coreEvents.emitAdminSettingsChanged();
419802
+ });
419803
+ this.setRemoteAdminSettings(adminControls);
419804
+ } catch (e3) {
419805
+ debugLogger.error("Failed to fetch admin controls", e3);
419806
+ }
419729
419807
  if (await this.getProModelNoAccess() && isAutoModel(this.model)) {
419730
419808
  this.setModel(PREVIEW_GEMINI_FLASH_MODEL);
419731
419809
  }
@@ -420367,6 +420445,9 @@ ${sections.join("\n")}
420367
420445
  isAutoMemoryEnabled() {
420368
420446
  return this.experimentalAutoMemory;
420369
420447
  }
420448
+ getExperimentalGemma() {
420449
+ return this.experimentalGemma;
420450
+ }
420370
420451
  getExperimentalContextManagementConfig() {
420371
420452
  return this.experimentalContextManagementConfig;
420372
420453
  }
@@ -420676,6 +420757,9 @@ ${sections.join("\n")}
420676
420757
  isPlanEnabled() {
420677
420758
  return this.planEnabled;
420678
420759
  }
420760
+ isVoiceModeEnabled() {
420761
+ return this.voiceMode;
420762
+ }
420679
420763
  isTrackerEnabled() {
420680
420764
  return this.trackerEnabled;
420681
420765
  }
@@ -422505,6 +422589,14 @@ var init_skill_extraction_agent = __esm({
422505
422589
  }
422506
422590
  });
422507
422591
 
422592
+ // packages/core/dist/src/services/sessionScratchpadUtils.js
422593
+ var init_sessionScratchpadUtils = __esm({
422594
+ "packages/core/dist/src/services/sessionScratchpadUtils.js"() {
422595
+ "use strict";
422596
+ init_base_declarations();
422597
+ }
422598
+ });
422599
+
422508
422600
  // packages/core/dist/src/services/memoryService.js
422509
422601
  var LOCK_STALE_MS, MIN_IDLE_MS;
422510
422602
  var init_memoryService = __esm({
@@ -422518,6 +422610,7 @@ var init_memoryService = __esm({
422518
422610
  init_local_executor();
422519
422611
  init_skill_extraction_agent();
422520
422612
  init_registry();
422613
+ init_types14();
422521
422614
  init_executionLifecycleService();
422522
422615
  init_prompt_registry();
422523
422616
  init_resource_registry();
@@ -422527,6 +422620,7 @@ var init_memoryService = __esm({
422527
422620
  init_storage();
422528
422621
  init_tool_names();
422529
422622
  init_memoryPatchUtils();
422623
+ init_sessionScratchpadUtils();
422530
422624
  LOCK_STALE_MS = 35 * 60 * 1e3;
422531
422625
  MIN_IDLE_MS = 3 * 60 * 60 * 1e3;
422532
422626
  }
@@ -425468,6 +425562,9 @@ var init_sessionSummaryUtils = __esm({
425468
425562
  init_baseLlmClient();
425469
425563
  init_debugLogger();
425470
425564
  init_chatRecordingService();
425565
+ init_types5();
425566
+ init_base_declarations();
425567
+ init_sessionScratchpadUtils();
425471
425568
  }
425472
425569
  });
425473
425570
 
@@ -425629,6 +425726,246 @@ var init_trust = __esm({
425629
425726
  }
425630
425727
  });
425631
425728
 
425729
+ // node_modules/command-exists/lib/command-exists.js
425730
+ var require_command_exists = __commonJS({
425731
+ "node_modules/command-exists/lib/command-exists.js"(exports2, module2) {
425732
+ "use strict";
425733
+ var exec3 = __require("child_process").exec;
425734
+ var execSync4 = __require("child_process").execSync;
425735
+ var fs83 = __require("fs");
425736
+ var path91 = __require("path");
425737
+ var access5 = fs83.access;
425738
+ var accessSync = fs83.accessSync;
425739
+ var constants2 = fs83.constants || fs83;
425740
+ var isUsingWindows = process.platform == "win32";
425741
+ var fileNotExists = function(commandName, callback) {
425742
+ access5(
425743
+ commandName,
425744
+ constants2.F_OK,
425745
+ function(err2) {
425746
+ callback(!err2);
425747
+ }
425748
+ );
425749
+ };
425750
+ var fileNotExistsSync = function(commandName) {
425751
+ try {
425752
+ accessSync(commandName, constants2.F_OK);
425753
+ return false;
425754
+ } catch (e3) {
425755
+ return true;
425756
+ }
425757
+ };
425758
+ var localExecutable = function(commandName, callback) {
425759
+ access5(
425760
+ commandName,
425761
+ constants2.F_OK | constants2.X_OK,
425762
+ function(err2) {
425763
+ callback(null, !err2);
425764
+ }
425765
+ );
425766
+ };
425767
+ var localExecutableSync = function(commandName) {
425768
+ try {
425769
+ accessSync(commandName, constants2.F_OK | constants2.X_OK);
425770
+ return true;
425771
+ } catch (e3) {
425772
+ return false;
425773
+ }
425774
+ };
425775
+ var commandExistsUnix = function(commandName, cleanedCommandName, callback) {
425776
+ fileNotExists(commandName, function(isFile) {
425777
+ if (!isFile) {
425778
+ var child = exec3(
425779
+ "command -v " + cleanedCommandName + " 2>/dev/null && { echo >&1 " + cleanedCommandName + "; exit 0; }",
425780
+ function(error2, stdout, stderr) {
425781
+ callback(null, !!stdout);
425782
+ }
425783
+ );
425784
+ return;
425785
+ }
425786
+ localExecutable(commandName, callback);
425787
+ });
425788
+ };
425789
+ var commandExistsWindows = function(commandName, cleanedCommandName, callback) {
425790
+ if (!/^(?!(?:.*\s|.*\.|\W+)$)(?:[a-zA-Z]:)?(?:(?:[^<>:"\|\?\*\n])+(?:\/\/|\/|\\\\|\\)?)+$/m.test(commandName)) {
425791
+ callback(null, false);
425792
+ return;
425793
+ }
425794
+ var child = exec3(
425795
+ "where " + cleanedCommandName,
425796
+ function(error2) {
425797
+ if (error2 !== null) {
425798
+ callback(null, false);
425799
+ } else {
425800
+ callback(null, true);
425801
+ }
425802
+ }
425803
+ );
425804
+ };
425805
+ var commandExistsUnixSync = function(commandName, cleanedCommandName) {
425806
+ if (fileNotExistsSync(commandName)) {
425807
+ try {
425808
+ var stdout = execSync4(
425809
+ "command -v " + cleanedCommandName + " 2>/dev/null && { echo >&1 " + cleanedCommandName + "; exit 0; }"
425810
+ );
425811
+ return !!stdout;
425812
+ } catch (error2) {
425813
+ return false;
425814
+ }
425815
+ }
425816
+ return localExecutableSync(commandName);
425817
+ };
425818
+ var commandExistsWindowsSync = function(commandName, cleanedCommandName, callback) {
425819
+ if (!/^(?!(?:.*\s|.*\.|\W+)$)(?:[a-zA-Z]:)?(?:(?:[^<>:"\|\?\*\n])+(?:\/\/|\/|\\\\|\\)?)+$/m.test(commandName)) {
425820
+ return false;
425821
+ }
425822
+ try {
425823
+ var stdout = execSync4("where " + cleanedCommandName, { stdio: [] });
425824
+ return !!stdout;
425825
+ } catch (error2) {
425826
+ return false;
425827
+ }
425828
+ };
425829
+ var cleanInput = function(s5) {
425830
+ if (/[^A-Za-z0-9_\/:=-]/.test(s5)) {
425831
+ s5 = "'" + s5.replace(/'/g, "'\\''") + "'";
425832
+ s5 = s5.replace(/^(?:'')+/g, "").replace(/\\'''/g, "\\'");
425833
+ }
425834
+ return s5;
425835
+ };
425836
+ if (isUsingWindows) {
425837
+ cleanInput = function(s5) {
425838
+ var isPathName = /[\\]/.test(s5);
425839
+ if (isPathName) {
425840
+ var dirname23 = '"' + path91.dirname(s5) + '"';
425841
+ var basename13 = '"' + path91.basename(s5) + '"';
425842
+ return dirname23 + ":" + basename13;
425843
+ }
425844
+ return '"' + s5 + '"';
425845
+ };
425846
+ }
425847
+ module2.exports = function commandExists4(commandName, callback) {
425848
+ var cleanedCommandName = cleanInput(commandName);
425849
+ if (!callback && typeof Promise !== "undefined") {
425850
+ return new Promise(function(resolve24, reject) {
425851
+ commandExists4(commandName, function(error2, output) {
425852
+ if (output) {
425853
+ resolve24(commandName);
425854
+ } else {
425855
+ reject(error2);
425856
+ }
425857
+ });
425858
+ });
425859
+ }
425860
+ if (isUsingWindows) {
425861
+ commandExistsWindows(commandName, cleanedCommandName, callback);
425862
+ } else {
425863
+ commandExistsUnix(commandName, cleanedCommandName, callback);
425864
+ }
425865
+ };
425866
+ module2.exports.sync = function(commandName) {
425867
+ var cleanedCommandName = cleanInput(commandName);
425868
+ if (isUsingWindows) {
425869
+ return commandExistsWindowsSync(commandName, cleanedCommandName);
425870
+ } else {
425871
+ return commandExistsUnixSync(commandName, cleanedCommandName);
425872
+ }
425873
+ };
425874
+ }
425875
+ });
425876
+
425877
+ // node_modules/command-exists/index.js
425878
+ var require_command_exists2 = __commonJS({
425879
+ "node_modules/command-exists/index.js"(exports2, module2) {
425880
+ module2.exports = require_command_exists();
425881
+ }
425882
+ });
425883
+
425884
+ // packages/core/dist/src/voice/audioRecorder.js
425885
+ var import_command_exists;
425886
+ var init_audioRecorder = __esm({
425887
+ "packages/core/dist/src/voice/audioRecorder.js"() {
425888
+ "use strict";
425889
+ import_command_exists = __toESM(require_command_exists2(), 1);
425890
+ }
425891
+ });
425892
+
425893
+ // packages/core/dist/src/voice/transcriptionProvider.js
425894
+ var init_transcriptionProvider = __esm({
425895
+ "packages/core/dist/src/voice/transcriptionProvider.js"() {
425896
+ "use strict";
425897
+ }
425898
+ });
425899
+
425900
+ // packages/core/dist/src/voice/geminiLiveTranscriptionProvider.js
425901
+ var LiveAPIResponseSchema;
425902
+ var init_geminiLiveTranscriptionProvider = __esm({
425903
+ "packages/core/dist/src/voice/geminiLiveTranscriptionProvider.js"() {
425904
+ "use strict";
425905
+ init_wrapper();
425906
+ init_debugLogger();
425907
+ init_zod();
425908
+ LiveAPIResponseSchema = external_exports.object({
425909
+ setupComplete: external_exports.record(external_exports.unknown()).optional(),
425910
+ serverContent: external_exports.object({
425911
+ turnComplete: external_exports.boolean().optional(),
425912
+ inputTranscription: external_exports.object({
425913
+ text: external_exports.string().optional()
425914
+ }).optional(),
425915
+ outputTranscription: external_exports.object({
425916
+ text: external_exports.string().optional()
425917
+ }).optional(),
425918
+ modelTurn: external_exports.object({
425919
+ parts: external_exports.array(external_exports.object({
425920
+ text: external_exports.string().optional(),
425921
+ inlineData: external_exports.object({
425922
+ data: external_exports.string()
425923
+ }).optional()
425924
+ })).optional()
425925
+ }).optional()
425926
+ }).optional()
425927
+ });
425928
+ }
425929
+ });
425930
+
425931
+ // packages/core/dist/src/voice/whisperTranscriptionProvider.js
425932
+ var import_command_exists2;
425933
+ var init_whisperTranscriptionProvider = __esm({
425934
+ "packages/core/dist/src/voice/whisperTranscriptionProvider.js"() {
425935
+ "use strict";
425936
+ import_command_exists2 = __toESM(require_command_exists2(), 1);
425937
+ init_debugLogger();
425938
+ }
425939
+ });
425940
+
425941
+ // packages/core/dist/src/voice/transcriptionFactory.js
425942
+ var init_transcriptionFactory = __esm({
425943
+ "packages/core/dist/src/voice/transcriptionFactory.js"() {
425944
+ "use strict";
425945
+ init_paths();
425946
+ init_geminiLiveTranscriptionProvider();
425947
+ init_whisperTranscriptionProvider();
425948
+ }
425949
+ });
425950
+
425951
+ // packages/core/dist/src/voice/whisperModelManager.js
425952
+ var init_whisperModelManager = __esm({
425953
+ "packages/core/dist/src/voice/whisperModelManager.js"() {
425954
+ "use strict";
425955
+ init_paths();
425956
+ init_debugLogger();
425957
+ }
425958
+ });
425959
+
425960
+ // packages/core/dist/src/utils/binaryCheck.js
425961
+ var import_command_exists3;
425962
+ var init_binaryCheck = __esm({
425963
+ "packages/core/dist/src/utils/binaryCheck.js"() {
425964
+ "use strict";
425965
+ import_command_exists3 = __toESM(require_command_exists2(), 1);
425966
+ }
425967
+ });
425968
+
425632
425969
  // packages/core/dist/src/index.js
425633
425970
  var init_src2 = __esm({
425634
425971
  "packages/core/dist/src/index.js"() {
@@ -425826,6 +426163,13 @@ var init_src2 = __esm({
425826
426163
  init_types18();
425827
426164
  init_profiles();
425828
426165
  init_trust();
426166
+ init_audioRecorder();
426167
+ init_transcriptionProvider();
426168
+ init_geminiLiveTranscriptionProvider();
426169
+ init_whisperTranscriptionProvider();
426170
+ init_transcriptionFactory();
426171
+ init_whisperModelManager();
426172
+ init_binaryCheck();
425829
426173
  }
425830
426174
  });
425831
426175