@google/gemini-cli 0.45.2 → 0.45.3

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.
Files changed (67) hide show
  1. package/bundle/builtin/antigravity-support/SKILL.md +58 -0
  2. package/bundle/{chunk-LYEXUQ4X.js → chunk-27KR2X7B.js} +1 -1
  3. package/bundle/{chunk-P3GSBAEP.js → chunk-2M4RXPLR.js} +1 -1
  4. package/bundle/{chunk-CWO4SMA7.js → chunk-2TMMZCLT.js} +1 -1
  5. package/bundle/{chunk-6GEZV4AF.js → chunk-3C7OYQ34.js} +1 -1
  6. package/bundle/{chunk-4YNBYIJA.js → chunk-5NOLNQ6P.js} +3 -3
  7. package/bundle/{chunk-SG5DULX4.js → chunk-62H4B3QP.js} +165 -114
  8. package/bundle/{chunk-2B6NXQYE.js → chunk-6K7CUAY2.js} +1 -1
  9. package/bundle/{chunk-FCYM73EG.js → chunk-A7A66OT3.js} +2 -2
  10. package/bundle/{chunk-CTTYNCHI.js → chunk-ANW4T6AL.js} +1 -1
  11. package/bundle/{chunk-K2JT5CUB.js → chunk-AWDCIQVG.js} +63 -7
  12. package/bundle/{chunk-PUOWQXRH.js → chunk-AWL3SM7R.js} +2 -2
  13. package/bundle/{chunk-5VGUJAN2.js → chunk-CN36P5IL.js} +1 -1
  14. package/bundle/{chunk-7ZDQV5DQ.js → chunk-DVJHZORD.js} +1 -1
  15. package/bundle/{chunk-GGJVZUJT.js → chunk-FGMKLRCQ.js} +1 -1
  16. package/bundle/{chunk-MHSMZKC6.js → chunk-FPO2C6P5.js} +1 -1
  17. package/bundle/{chunk-NRSJ3JUA.js → chunk-HMPSOK5T.js} +1 -1
  18. package/bundle/{chunk-YEROR775.js → chunk-HRPUDMPC.js} +2 -2
  19. package/bundle/{chunk-E65V7MX5.js → chunk-I6O4CR3L.js} +2 -2
  20. package/bundle/{chunk-PMKKVFOZ.js → chunk-JEVBAU4N.js} +1 -1
  21. package/bundle/{chunk-25BU7OMU.js → chunk-JFHLX57N.js} +165 -114
  22. package/bundle/{chunk-VPNI55G3.js → chunk-JNY4RZAI.js} +1 -1
  23. package/bundle/{chunk-SSINWKB6.js → chunk-K3ZTQB3K.js} +3 -3
  24. package/bundle/{chunk-L4G73C3Y.js → chunk-L3OGQWGS.js} +64 -8
  25. package/bundle/{chunk-35YZAQWE.js → chunk-LTLRCSQ2.js} +1 -1
  26. package/bundle/{chunk-LSXUKR6W.js → chunk-Q7OASXX5.js} +63 -7
  27. package/bundle/{chunk-Y6JP7OVV.js → chunk-QKCKVMGR.js} +3 -3
  28. package/bundle/{chunk-KAD4VDUI.js → chunk-RFSXII54.js} +3 -3
  29. package/bundle/{chunk-MXTWZ3CE.js → chunk-S7UDG7KJ.js} +1 -1
  30. package/bundle/{chunk-3AIAY5PD.js → chunk-SS6F5OZH.js} +77 -12
  31. package/bundle/{chunk-7FGZGJNF.js → chunk-W72ZVJMX.js} +165 -114
  32. package/bundle/{chunk-ZN7V2SWM.js → chunk-X3G3PGCJ.js} +1 -1
  33. package/bundle/{chunk-KB2JUDKD.js → chunk-ZVWC5RAC.js} +165 -114
  34. package/bundle/{cleanup-G4VWZ3XN.js → cleanup-5DKLZC3X.js} +2 -2
  35. package/bundle/{cleanup-LPS6MSYO.js → cleanup-6GPACZYC.js} +2 -2
  36. package/bundle/{cleanup-W3WS5ZAJ.js → cleanup-DVF44ZSC.js} +2 -2
  37. package/bundle/{cleanup-XZSL4265.js → cleanup-WBYWCGNP.js} +2 -2
  38. package/bundle/{core-HZQW4AJT.js → core-MSNK7SZS.js} +3 -1
  39. package/bundle/{devtoolsService-2KN6EUI5.js → devtoolsService-2J5ME7SJ.js} +2 -2
  40. package/bundle/{devtoolsService-NIPM7EYR.js → devtoolsService-MCY62DTZ.js} +2 -2
  41. package/bundle/{devtoolsService-CITULPO6.js → devtoolsService-YMIPTCBK.js} +2 -2
  42. package/bundle/{devtoolsService-KOD5PTTB.js → devtoolsService-Z4KZCDYV.js} +2 -2
  43. package/bundle/{dist-5NDSNRMN.js → dist-2HPULYS3.js} +3 -1
  44. package/bundle/{dist-Q5HIYSDI.js → dist-53XAMFTR.js} +3 -1
  45. package/bundle/{dist-X7BXM7FW.js → dist-JVMFINEN.js} +3 -1
  46. package/bundle/{gemini-4IQ2UBE4.js → gemini-HOIIWSCV.js} +13 -13
  47. package/bundle/{gemini-75GSY6S7.js → gemini-K3E7FKCI.js} +14 -14
  48. package/bundle/{gemini-IHDGRWWD.js → gemini-SPREGLEO.js} +14 -14
  49. package/bundle/{gemini-YZFND2X2.js → gemini-XT6QQWZ4.js} +14 -14
  50. package/bundle/gemini.js +7 -7
  51. package/bundle/{interactiveCli-76DU2VGH.js → interactiveCli-5WB624HL.js} +30 -20
  52. package/bundle/{interactiveCli-EYDFUDAD.js → interactiveCli-DO6AJ3AX.js} +30 -20
  53. package/bundle/{interactiveCli-CFXMMG32.js → interactiveCli-GSMT5FN7.js} +30 -20
  54. package/bundle/{interactiveCli-B6OMNE4Q.js → interactiveCli-IRW7PET2.js} +30 -20
  55. package/bundle/{liteRtServerManager-5DJRY5PB.js → liteRtServerManager-25BOLUT5.js} +4 -4
  56. package/bundle/{liteRtServerManager-HIX7EWET.js → liteRtServerManager-47EPMYBF.js} +4 -4
  57. package/bundle/{liteRtServerManager-JSJ7U5MN.js → liteRtServerManager-4UI6KYBI.js} +4 -4
  58. package/bundle/{liteRtServerManager-LZAUADEL.js → liteRtServerManager-PPS5H3Z5.js} +4 -4
  59. package/bundle/{oauth2-provider-GK36RHO3.js → oauth2-provider-FPVEANGB.js} +1 -1
  60. package/bundle/{oauth2-provider-JWOBX6HR.js → oauth2-provider-JZVXAKTG.js} +1 -1
  61. package/bundle/{oauth2-provider-PYU5GIOF.js → oauth2-provider-RZJHDH5K.js} +1 -1
  62. package/bundle/{oauth2-provider-D6YBGNZY.js → oauth2-provider-T6KMRWSV.js} +1 -1
  63. package/bundle/{start-EUUTULL6.js → start-4ECNBDOR.js} +6 -6
  64. package/bundle/{start-NSQH4XZZ.js → start-ERELMZFP.js} +6 -6
  65. package/bundle/{start-WUH65UMB.js → start-GOUVXDR6.js} +6 -6
  66. package/bundle/{start-WYV53B3R.js → start-ZEO4UHAL.js} +6 -6
  67. package/package.json +1 -1
package/bundle/gemini.js CHANGED
@@ -4,10 +4,10 @@ import {
4
4
  RELAUNCH_EXIT_CODE,
5
5
  getScriptArgs,
6
6
  getSpawnConfig
7
- } from "./chunk-FCYM73EG.js";
8
- import "./chunk-5VGUJAN2.js";
9
- import "./chunk-GGJVZUJT.js";
10
- import "./chunk-LSXUKR6W.js";
7
+ } from "./chunk-I6O4CR3L.js";
8
+ import "./chunk-DVJHZORD.js";
9
+ import "./chunk-FGMKLRCQ.js";
10
+ import "./chunk-L3OGQWGS.js";
11
11
  import "./chunk-6HI7VNOG.js";
12
12
  import "./chunk-TUDYL3X4.js";
13
13
  import "./chunk-IUUIT4SU.js";
@@ -115,9 +115,9 @@ ${error instanceof Error ? error.stack ?? error.message : String(error)}
115
115
  }
116
116
  }
117
117
  } else {
118
- const { main } = await import("./gemini-75GSY6S7.js");
119
- const { FatalError, writeToStderr } = await import("./dist-Q5HIYSDI.js");
120
- const { runExitCleanup } = await import("./cleanup-W3WS5ZAJ.js");
118
+ const { main } = await import("./gemini-K3E7FKCI.js");
119
+ const { FatalError, writeToStderr } = await import("./dist-2HPULYS3.js");
120
+ const { runExitCleanup } = await import("./cleanup-WBYWCGNP.js");
121
121
  main().catch(async (error) => {
122
122
  const cleanupTimeout = setTimeout(() => {
123
123
  writeToStderr("Cleanup timed out, forcing exit...\n");
@@ -72,6 +72,7 @@ import {
72
72
  formatCommand,
73
73
  formatDuration,
74
74
  formatResetTime,
75
+ getAntigravityInstallInfo,
75
76
  getDialogRestartRequiredSettings,
76
77
  getDialogSettingKeys,
77
78
  getDisplayValue,
@@ -155,13 +156,13 @@ import {
155
156
  widestLineFromStyledChars,
156
157
  wordBreakStyledChars,
157
158
  wrapStyledChars
158
- } from "./chunk-SG5DULX4.js";
159
+ } from "./chunk-62H4B3QP.js";
159
160
  import {
160
161
  appEvents
161
162
  } from "./chunk-5PS3AYFU.js";
162
163
  import {
163
164
  require_source
164
- } from "./chunk-NRSJ3JUA.js";
165
+ } from "./chunk-HMPSOK5T.js";
165
166
  import {
166
167
  ACTIVE_SHELL_MAX_LINES,
167
168
  COMPACT_TOOL_SUBVIEW_MAX_LINES,
@@ -211,24 +212,24 @@ import {
211
212
  stringWidth,
212
213
  stripUnsafeCharacters,
213
214
  toCodePoints
214
- } from "./chunk-P3GSBAEP.js";
215
+ } from "./chunk-2M4RXPLR.js";
215
216
  import {
216
217
  handleAutoUpdate,
217
218
  isDevelopment,
218
219
  relaunchApp,
219
220
  setUpdateHandler
220
- } from "./chunk-E65V7MX5.js";
221
+ } from "./chunk-HRPUDMPC.js";
221
222
  import {
222
223
  isTodoList,
223
224
  mapCoreStatusToDisplayStatus,
224
225
  require_react
225
- } from "./chunk-35YZAQWE.js";
226
+ } from "./chunk-LTLRCSQ2.js";
226
227
  import {
227
228
  registerCleanup,
228
229
  removeCleanup,
229
230
  runExitCleanup,
230
231
  setupTtyCheck
231
- } from "./chunk-LYEXUQ4X.js";
232
+ } from "./chunk-S7UDG7KJ.js";
232
233
  import {
233
234
  ACTIVATE_SKILL_TOOL_NAME,
234
235
  AGENT_TOOL_NAME,
@@ -410,7 +411,7 @@ import {
410
411
  validatePlanContent,
411
412
  validatePlanPath,
412
413
  writeToStdout
413
- } from "./chunk-3AIAY5PD.js";
414
+ } from "./chunk-SS6F5OZH.js";
414
415
  import "./chunk-6HI7VNOG.js";
415
416
  import "./chunk-TUDYL3X4.js";
416
417
  import "./chunk-IUUIT4SU.js";
@@ -505,7 +506,7 @@ var require_prop_types = __commonJS({
505
506
  var require_gradient_string = __commonJS({
506
507
  "node_modules/gradient-string/index.js"(exports, module) {
507
508
  "use strict";
508
- var chalk4 = require_source();
509
+ var chalk5 = require_source();
509
510
  var tinygradient2 = require_tinygradient();
510
511
  var forbiddenChars = /\s/g;
511
512
  function InitGradient(...args) {
@@ -521,7 +522,7 @@ var require_gradient_string = __commonJS({
521
522
  const colors = getColors(gradient, options, colorsCount);
522
523
  let result = "";
523
524
  for (const s of str) {
524
- result += s.match(forbiddenChars) ? s : chalk4.hex(colors.shift().toHex())(s);
525
+ result += s.match(forbiddenChars) ? s : chalk5.hex(colors.shift().toHex())(s);
525
526
  }
526
527
  return result;
527
528
  }
@@ -535,7 +536,7 @@ var require_gradient_string = __commonJS({
535
536
  const lineColors = colors.slice(0);
536
537
  let lineResult = "";
537
538
  for (const l of line) {
538
- lineResult += chalk4.hex(lineColors.shift().toHex())(l);
539
+ lineResult += chalk5.hex(lineColors.shift().toHex())(l);
539
540
  }
540
541
  results.push(lineResult);
541
542
  }
@@ -10222,6 +10223,7 @@ var Banner = ({ bannerText, isWarning, width }) => {
10222
10223
 
10223
10224
  // packages/cli/src/ui/hooks/useBanner.ts
10224
10225
  var import_react30 = __toESM(require_react(), 1);
10226
+ var import_chalk2 = __toESM(require_source(), 1);
10225
10227
  import crypto from "node:crypto";
10226
10228
  var DEFAULT_MAX_BANNER_SHOWN_COUNT = 5;
10227
10229
  var sessionIncrementedBanners = /* @__PURE__ */ new Set();
@@ -10235,7 +10237,15 @@ function useBanner(bannerData) {
10235
10237
  const currentBannerCount = bannerCounts[hashedText] || 0;
10236
10238
  const showBanner = activeText !== "" && (currentBannerCount < DEFAULT_MAX_BANNER_SHOWN_COUNT || activeText.includes("Antigravity"));
10237
10239
  const rawBannerText = showBanner ? activeText : "";
10238
- const bannerText = rawBannerText.replace(/\\n/g, "\n");
10240
+ let bannerText = rawBannerText.replace(/\\n/g, "\n");
10241
+ if (showBanner && activeText.includes("Antigravity")) {
10242
+ const info = getAntigravityInstallInfo();
10243
+ if (info) {
10244
+ bannerText += `
10245
+
10246
+ To install run "${import_chalk2.default.bold(info.installCmd)}"`;
10247
+ }
10248
+ }
10239
10249
  (0, import_react30.useEffect)(() => {
10240
10250
  if (showBanner && activeText) {
10241
10251
  if (!sessionIncrementedBanners.has(activeText)) {
@@ -13556,7 +13566,7 @@ var import_react44 = __toESM(require_react(), 1);
13556
13566
 
13557
13567
  // packages/cli/src/ui/components/shared/BaseSettingsDialog.tsx
13558
13568
  var import_react43 = __toESM(require_react(), 1);
13559
- var import_chalk2 = __toESM(require_source(), 1);
13569
+ var import_chalk3 = __toESM(require_source(), 1);
13560
13570
 
13561
13571
  // packages/cli/src/ui/hooks/useSettingsNavigation.ts
13562
13572
  var import_react41 = __toESM(require_react(), 1);
@@ -14024,9 +14034,9 @@ function BaseSettingsDialog({
14024
14034
  editCursorPos + 1
14025
14035
  );
14026
14036
  const afterCursor = cpSlice(editBuffer, editCursorPos + 1);
14027
- displayValue = beforeCursor + import_chalk2.default.inverse(atCursor) + afterCursor;
14037
+ displayValue = beforeCursor + import_chalk3.default.inverse(atCursor) + afterCursor;
14028
14038
  } else if (editCursorPos >= cpLen(editBuffer)) {
14029
- displayValue = editBuffer + (cursorVisible ? import_chalk2.default.inverse(" ") : " ");
14039
+ displayValue = editBuffer + (cursorVisible ? import_chalk3.default.inverse(" ") : " ");
14030
14040
  } else {
14031
14041
  displayValue = editBuffer;
14032
14042
  }
@@ -18430,7 +18440,7 @@ var ListeningIndicator = ({
18430
18440
  };
18431
18441
 
18432
18442
  // packages/cli/src/ui/components/InputPrompt.tsx
18433
- var import_chalk3 = __toESM(require_source(), 1);
18443
+ var import_chalk4 = __toESM(require_source(), 1);
18434
18444
 
18435
18445
  // packages/cli/src/ui/hooks/useShellHistory.ts
18436
18446
  var import_react63 = __toESM(require_react(), 1);
@@ -22087,7 +22097,7 @@ var InputPrompt = ({
22087
22097
  relCol - segStart,
22088
22098
  relCol - segStart + 1
22089
22099
  );
22090
- const highlighted = showCursor ? import_chalk3.default.inverse(charToHighlight) : charToHighlight;
22100
+ const highlighted = showCursor ? import_chalk4.default.inverse(charToHighlight) : charToHighlight;
22091
22101
  display = cpSlice(display, 0, relCol - segStart) + highlighted + cpSlice(display, relCol - segStart + 1);
22092
22102
  }
22093
22103
  charCount = segEnd;
@@ -22102,7 +22112,7 @@ var InputPrompt = ({
22102
22112
  const currentLineGhost = isOnCursorLine ? inlineGhost : "";
22103
22113
  if (isOnCursorLine && cursorVisualColAbsolute === cpLen(lineText) && !currentLineGhost) {
22104
22114
  renderedLine.push(
22105
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Text, { children: showCursor ? import_chalk3.default.inverse(" ") : " " }, `cursor-end-${cursorVisualColAbsolute}`)
22115
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Text, { children: showCursor ? import_chalk4.default.inverse(" ") : " " }, `cursor-end-${cursorVisualColAbsolute}`)
22106
22116
  );
22107
22117
  }
22108
22118
  const showCursorBeforeGhost = focus && isOnCursorLine && cursorVisualColAbsolute === cpLen(lineText) && currentLineGhost;
@@ -22116,7 +22126,7 @@ var InputPrompt = ({
22116
22126
  ),
22117
22127
  children: [
22118
22128
  renderedLine,
22119
- showCursorBeforeGhost && (showCursor ? import_chalk3.default.inverse(" ") : " "),
22129
+ showCursorBeforeGhost && (showCursor ? import_chalk4.default.inverse(" ") : " "),
22120
22130
  currentLineGhost && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Text, { color: theme.text.secondary, children: currentLineGhost })
22121
22131
  ]
22122
22132
  }
@@ -22251,7 +22261,7 @@ var InputPrompt = ({
22251
22261
  terminalCursorFocus: showCursor,
22252
22262
  terminalCursorPosition: 0,
22253
22263
  children: [
22254
- import_chalk3.default.inverse(effectivePlaceholder.slice(0, 1)),
22264
+ import_chalk4.default.inverse(effectivePlaceholder.slice(0, 1)),
22255
22265
  /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Text, { color: theme.text.secondary, children: effectivePlaceholder.slice(1) })
22256
22266
  ]
22257
22267
  }
@@ -33708,7 +33718,7 @@ ${queuedText}` : queuedText;
33708
33718
  if (keyMatchers["app.showErrorDetails" /* SHOW_ERROR_DETAILS */](key)) {
33709
33719
  if (settings.merged.general.devtools) {
33710
33720
  void (async () => {
33711
- const { toggleDevToolsPanel } = await import("./devtoolsService-NIPM7EYR.js");
33721
+ const { toggleDevToolsPanel } = await import("./devtoolsService-MCY62DTZ.js");
33712
33722
  await toggleDevToolsPanel(
33713
33723
  config,
33714
33724
  showErrorDetails,
@@ -72,6 +72,7 @@ import {
72
72
  formatCommand,
73
73
  formatDuration,
74
74
  formatResetTime,
75
+ getAntigravityInstallInfo,
75
76
  getDialogRestartRequiredSettings,
76
77
  getDialogSettingKeys,
77
78
  getDisplayValue,
@@ -155,13 +156,13 @@ import {
155
156
  widestLineFromStyledChars,
156
157
  wordBreakStyledChars,
157
158
  wrapStyledChars
158
- } from "./chunk-25BU7OMU.js";
159
+ } from "./chunk-JFHLX57N.js";
159
160
  import {
160
161
  appEvents
161
162
  } from "./chunk-5PS3AYFU.js";
162
163
  import {
163
164
  require_source
164
- } from "./chunk-6GEZV4AF.js";
165
+ } from "./chunk-3C7OYQ34.js";
165
166
  import {
166
167
  ACTIVE_SHELL_MAX_LINES,
167
168
  COMPACT_TOOL_SUBVIEW_MAX_LINES,
@@ -211,24 +212,24 @@ import {
211
212
  stringWidth,
212
213
  stripUnsafeCharacters,
213
214
  toCodePoints
214
- } from "./chunk-2B6NXQYE.js";
215
+ } from "./chunk-6K7CUAY2.js";
215
216
  import {
216
217
  handleAutoUpdate,
217
218
  isDevelopment,
218
219
  relaunchApp,
219
220
  setUpdateHandler
220
- } from "./chunk-YEROR775.js";
221
+ } from "./chunk-AWL3SM7R.js";
221
222
  import {
222
223
  isTodoList,
223
224
  mapCoreStatusToDisplayStatus,
224
225
  require_react
225
- } from "./chunk-MHSMZKC6.js";
226
+ } from "./chunk-CN36P5IL.js";
226
227
  import {
227
228
  registerCleanup,
228
229
  removeCleanup,
229
230
  runExitCleanup,
230
231
  setupTtyCheck
231
- } from "./chunk-CWO4SMA7.js";
232
+ } from "./chunk-27KR2X7B.js";
232
233
  import {
233
234
  ACTIVATE_SKILL_TOOL_NAME,
234
235
  AGENT_TOOL_NAME,
@@ -429,7 +430,7 @@ import {
429
430
  validatePlanContent,
430
431
  validatePlanPath,
431
432
  writeToStdout
432
- } from "./chunk-K2JT5CUB.js";
433
+ } from "./chunk-AWDCIQVG.js";
433
434
  import "./chunk-6HI7VNOG.js";
434
435
  import "./chunk-TUDYL3X4.js";
435
436
  import "./chunk-IUUIT4SU.js";
@@ -524,7 +525,7 @@ var require_prop_types = __commonJS({
524
525
  var require_gradient_string = __commonJS({
525
526
  "node_modules/gradient-string/index.js"(exports, module) {
526
527
  "use strict";
527
- var chalk4 = require_source();
528
+ var chalk5 = require_source();
528
529
  var tinygradient2 = require_tinygradient();
529
530
  var forbiddenChars = /\s/g;
530
531
  function InitGradient(...args) {
@@ -540,7 +541,7 @@ var require_gradient_string = __commonJS({
540
541
  const colors = getColors(gradient, options, colorsCount);
541
542
  let result = "";
542
543
  for (const s of str) {
543
- result += s.match(forbiddenChars) ? s : chalk4.hex(colors.shift().toHex())(s);
544
+ result += s.match(forbiddenChars) ? s : chalk5.hex(colors.shift().toHex())(s);
544
545
  }
545
546
  return result;
546
547
  }
@@ -554,7 +555,7 @@ var require_gradient_string = __commonJS({
554
555
  const lineColors = colors.slice(0);
555
556
  let lineResult = "";
556
557
  for (const l of line) {
557
- lineResult += chalk4.hex(lineColors.shift().toHex())(l);
558
+ lineResult += chalk5.hex(lineColors.shift().toHex())(l);
558
559
  }
559
560
  results.push(lineResult);
560
561
  }
@@ -10241,6 +10242,7 @@ var Banner = ({ bannerText, isWarning, width }) => {
10241
10242
 
10242
10243
  // packages/cli/src/ui/hooks/useBanner.ts
10243
10244
  var import_react30 = __toESM(require_react(), 1);
10245
+ var import_chalk2 = __toESM(require_source(), 1);
10244
10246
  import crypto from "node:crypto";
10245
10247
  var DEFAULT_MAX_BANNER_SHOWN_COUNT = 5;
10246
10248
  var sessionIncrementedBanners = /* @__PURE__ */ new Set();
@@ -10254,7 +10256,15 @@ function useBanner(bannerData) {
10254
10256
  const currentBannerCount = bannerCounts[hashedText] || 0;
10255
10257
  const showBanner = activeText !== "" && (currentBannerCount < DEFAULT_MAX_BANNER_SHOWN_COUNT || activeText.includes("Antigravity"));
10256
10258
  const rawBannerText = showBanner ? activeText : "";
10257
- const bannerText = rawBannerText.replace(/\\n/g, "\n");
10259
+ let bannerText = rawBannerText.replace(/\\n/g, "\n");
10260
+ if (showBanner && activeText.includes("Antigravity")) {
10261
+ const info = getAntigravityInstallInfo();
10262
+ if (info) {
10263
+ bannerText += `
10264
+
10265
+ To install run "${import_chalk2.default.bold(info.installCmd)}"`;
10266
+ }
10267
+ }
10258
10268
  (0, import_react30.useEffect)(() => {
10259
10269
  if (showBanner && activeText) {
10260
10270
  if (!sessionIncrementedBanners.has(activeText)) {
@@ -13575,7 +13585,7 @@ var import_react44 = __toESM(require_react(), 1);
13575
13585
 
13576
13586
  // packages/cli/src/ui/components/shared/BaseSettingsDialog.tsx
13577
13587
  var import_react43 = __toESM(require_react(), 1);
13578
- var import_chalk2 = __toESM(require_source(), 1);
13588
+ var import_chalk3 = __toESM(require_source(), 1);
13579
13589
 
13580
13590
  // packages/cli/src/ui/hooks/useSettingsNavigation.ts
13581
13591
  var import_react41 = __toESM(require_react(), 1);
@@ -14043,9 +14053,9 @@ function BaseSettingsDialog({
14043
14053
  editCursorPos + 1
14044
14054
  );
14045
14055
  const afterCursor = cpSlice(editBuffer, editCursorPos + 1);
14046
- displayValue = beforeCursor + import_chalk2.default.inverse(atCursor) + afterCursor;
14056
+ displayValue = beforeCursor + import_chalk3.default.inverse(atCursor) + afterCursor;
14047
14057
  } else if (editCursorPos >= cpLen(editBuffer)) {
14048
- displayValue = editBuffer + (cursorVisible ? import_chalk2.default.inverse(" ") : " ");
14058
+ displayValue = editBuffer + (cursorVisible ? import_chalk3.default.inverse(" ") : " ");
14049
14059
  } else {
14050
14060
  displayValue = editBuffer;
14051
14061
  }
@@ -18449,7 +18459,7 @@ var ListeningIndicator = ({
18449
18459
  };
18450
18460
 
18451
18461
  // packages/cli/src/ui/components/InputPrompt.tsx
18452
- var import_chalk3 = __toESM(require_source(), 1);
18462
+ var import_chalk4 = __toESM(require_source(), 1);
18453
18463
 
18454
18464
  // packages/cli/src/ui/hooks/useShellHistory.ts
18455
18465
  var import_react63 = __toESM(require_react(), 1);
@@ -22106,7 +22116,7 @@ var InputPrompt = ({
22106
22116
  relCol - segStart,
22107
22117
  relCol - segStart + 1
22108
22118
  );
22109
- const highlighted = showCursor ? import_chalk3.default.inverse(charToHighlight) : charToHighlight;
22119
+ const highlighted = showCursor ? import_chalk4.default.inverse(charToHighlight) : charToHighlight;
22110
22120
  display = cpSlice(display, 0, relCol - segStart) + highlighted + cpSlice(display, relCol - segStart + 1);
22111
22121
  }
22112
22122
  charCount = segEnd;
@@ -22121,7 +22131,7 @@ var InputPrompt = ({
22121
22131
  const currentLineGhost = isOnCursorLine ? inlineGhost : "";
22122
22132
  if (isOnCursorLine && cursorVisualColAbsolute === cpLen(lineText) && !currentLineGhost) {
22123
22133
  renderedLine.push(
22124
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Text, { children: showCursor ? import_chalk3.default.inverse(" ") : " " }, `cursor-end-${cursorVisualColAbsolute}`)
22134
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Text, { children: showCursor ? import_chalk4.default.inverse(" ") : " " }, `cursor-end-${cursorVisualColAbsolute}`)
22125
22135
  );
22126
22136
  }
22127
22137
  const showCursorBeforeGhost = focus && isOnCursorLine && cursorVisualColAbsolute === cpLen(lineText) && currentLineGhost;
@@ -22135,7 +22145,7 @@ var InputPrompt = ({
22135
22145
  ),
22136
22146
  children: [
22137
22147
  renderedLine,
22138
- showCursorBeforeGhost && (showCursor ? import_chalk3.default.inverse(" ") : " "),
22148
+ showCursorBeforeGhost && (showCursor ? import_chalk4.default.inverse(" ") : " "),
22139
22149
  currentLineGhost && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Text, { color: theme.text.secondary, children: currentLineGhost })
22140
22150
  ]
22141
22151
  }
@@ -22270,7 +22280,7 @@ var InputPrompt = ({
22270
22280
  terminalCursorFocus: showCursor,
22271
22281
  terminalCursorPosition: 0,
22272
22282
  children: [
22273
- import_chalk3.default.inverse(effectivePlaceholder.slice(0, 1)),
22283
+ import_chalk4.default.inverse(effectivePlaceholder.slice(0, 1)),
22274
22284
  /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Text, { color: theme.text.secondary, children: effectivePlaceholder.slice(1) })
22275
22285
  ]
22276
22286
  }
@@ -33727,7 +33737,7 @@ ${queuedText}` : queuedText;
33727
33737
  if (keyMatchers["app.showErrorDetails" /* SHOW_ERROR_DETAILS */](key)) {
33728
33738
  if (settings.merged.general.devtools) {
33729
33739
  void (async () => {
33730
- const { toggleDevToolsPanel } = await import("./devtoolsService-CITULPO6.js");
33740
+ const { toggleDevToolsPanel } = await import("./devtoolsService-2J5ME7SJ.js");
33731
33741
  await toggleDevToolsPanel(
33732
33742
  config,
33733
33743
  showErrorDetails,
@@ -72,6 +72,7 @@ import {
72
72
  formatCommand,
73
73
  formatDuration,
74
74
  formatResetTime,
75
+ getAntigravityInstallInfo,
75
76
  getDialogRestartRequiredSettings,
76
77
  getDialogSettingKeys,
77
78
  getDisplayValue,
@@ -155,13 +156,13 @@ import {
155
156
  widestLineFromStyledChars,
156
157
  wordBreakStyledChars,
157
158
  wrapStyledChars
158
- } from "./chunk-KB2JUDKD.js";
159
+ } from "./chunk-ZVWC5RAC.js";
159
160
  import {
160
161
  appEvents
161
162
  } from "./chunk-5PS3AYFU.js";
162
163
  import {
163
164
  require_source
164
- } from "./chunk-CTTYNCHI.js";
165
+ } from "./chunk-JNY4RZAI.js";
165
166
  import {
166
167
  ACTIVE_SHELL_MAX_LINES,
167
168
  COMPACT_TOOL_SUBVIEW_MAX_LINES,
@@ -211,24 +212,24 @@ import {
211
212
  stringWidth,
212
213
  stripUnsafeCharacters,
213
214
  toCodePoints
214
- } from "./chunk-PMKKVFOZ.js";
215
+ } from "./chunk-X3G3PGCJ.js";
215
216
  import {
216
217
  handleAutoUpdate,
217
218
  isDevelopment,
218
219
  relaunchApp,
219
220
  setUpdateHandler
220
- } from "./chunk-FCYM73EG.js";
221
+ } from "./chunk-A7A66OT3.js";
221
222
  import {
222
223
  isTodoList,
223
224
  mapCoreStatusToDisplayStatus,
224
225
  require_react
225
- } from "./chunk-5VGUJAN2.js";
226
+ } from "./chunk-FPO2C6P5.js";
226
227
  import {
227
228
  registerCleanup,
228
229
  removeCleanup,
229
230
  runExitCleanup,
230
231
  setupTtyCheck
231
- } from "./chunk-GGJVZUJT.js";
232
+ } from "./chunk-2TMMZCLT.js";
232
233
  import {
233
234
  ACTIVATE_SKILL_TOOL_NAME,
234
235
  AGENT_TOOL_NAME,
@@ -429,7 +430,7 @@ import {
429
430
  validatePlanContent,
430
431
  validatePlanPath,
431
432
  writeToStdout
432
- } from "./chunk-LSXUKR6W.js";
433
+ } from "./chunk-Q7OASXX5.js";
433
434
  import "./chunk-6HI7VNOG.js";
434
435
  import "./chunk-TUDYL3X4.js";
435
436
  import "./chunk-IUUIT4SU.js";
@@ -524,7 +525,7 @@ var require_prop_types = __commonJS({
524
525
  var require_gradient_string = __commonJS({
525
526
  "node_modules/gradient-string/index.js"(exports, module) {
526
527
  "use strict";
527
- var chalk4 = require_source();
528
+ var chalk5 = require_source();
528
529
  var tinygradient2 = require_tinygradient();
529
530
  var forbiddenChars = /\s/g;
530
531
  function InitGradient(...args) {
@@ -540,7 +541,7 @@ var require_gradient_string = __commonJS({
540
541
  const colors = getColors(gradient, options, colorsCount);
541
542
  let result = "";
542
543
  for (const s of str) {
543
- result += s.match(forbiddenChars) ? s : chalk4.hex(colors.shift().toHex())(s);
544
+ result += s.match(forbiddenChars) ? s : chalk5.hex(colors.shift().toHex())(s);
544
545
  }
545
546
  return result;
546
547
  }
@@ -554,7 +555,7 @@ var require_gradient_string = __commonJS({
554
555
  const lineColors = colors.slice(0);
555
556
  let lineResult = "";
556
557
  for (const l of line) {
557
- lineResult += chalk4.hex(lineColors.shift().toHex())(l);
558
+ lineResult += chalk5.hex(lineColors.shift().toHex())(l);
558
559
  }
559
560
  results.push(lineResult);
560
561
  }
@@ -10241,6 +10242,7 @@ var Banner = ({ bannerText, isWarning, width }) => {
10241
10242
 
10242
10243
  // packages/cli/src/ui/hooks/useBanner.ts
10243
10244
  var import_react30 = __toESM(require_react(), 1);
10245
+ var import_chalk2 = __toESM(require_source(), 1);
10244
10246
  import crypto from "node:crypto";
10245
10247
  var DEFAULT_MAX_BANNER_SHOWN_COUNT = 5;
10246
10248
  var sessionIncrementedBanners = /* @__PURE__ */ new Set();
@@ -10254,7 +10256,15 @@ function useBanner(bannerData) {
10254
10256
  const currentBannerCount = bannerCounts[hashedText] || 0;
10255
10257
  const showBanner = activeText !== "" && (currentBannerCount < DEFAULT_MAX_BANNER_SHOWN_COUNT || activeText.includes("Antigravity"));
10256
10258
  const rawBannerText = showBanner ? activeText : "";
10257
- const bannerText = rawBannerText.replace(/\\n/g, "\n");
10259
+ let bannerText = rawBannerText.replace(/\\n/g, "\n");
10260
+ if (showBanner && activeText.includes("Antigravity")) {
10261
+ const info = getAntigravityInstallInfo();
10262
+ if (info) {
10263
+ bannerText += `
10264
+
10265
+ To install run "${import_chalk2.default.bold(info.installCmd)}"`;
10266
+ }
10267
+ }
10258
10268
  (0, import_react30.useEffect)(() => {
10259
10269
  if (showBanner && activeText) {
10260
10270
  if (!sessionIncrementedBanners.has(activeText)) {
@@ -13575,7 +13585,7 @@ var import_react44 = __toESM(require_react(), 1);
13575
13585
 
13576
13586
  // packages/cli/src/ui/components/shared/BaseSettingsDialog.tsx
13577
13587
  var import_react43 = __toESM(require_react(), 1);
13578
- var import_chalk2 = __toESM(require_source(), 1);
13588
+ var import_chalk3 = __toESM(require_source(), 1);
13579
13589
 
13580
13590
  // packages/cli/src/ui/hooks/useSettingsNavigation.ts
13581
13591
  var import_react41 = __toESM(require_react(), 1);
@@ -14043,9 +14053,9 @@ function BaseSettingsDialog({
14043
14053
  editCursorPos + 1
14044
14054
  );
14045
14055
  const afterCursor = cpSlice(editBuffer, editCursorPos + 1);
14046
- displayValue = beforeCursor + import_chalk2.default.inverse(atCursor) + afterCursor;
14056
+ displayValue = beforeCursor + import_chalk3.default.inverse(atCursor) + afterCursor;
14047
14057
  } else if (editCursorPos >= cpLen(editBuffer)) {
14048
- displayValue = editBuffer + (cursorVisible ? import_chalk2.default.inverse(" ") : " ");
14058
+ displayValue = editBuffer + (cursorVisible ? import_chalk3.default.inverse(" ") : " ");
14049
14059
  } else {
14050
14060
  displayValue = editBuffer;
14051
14061
  }
@@ -18449,7 +18459,7 @@ var ListeningIndicator = ({
18449
18459
  };
18450
18460
 
18451
18461
  // packages/cli/src/ui/components/InputPrompt.tsx
18452
- var import_chalk3 = __toESM(require_source(), 1);
18462
+ var import_chalk4 = __toESM(require_source(), 1);
18453
18463
 
18454
18464
  // packages/cli/src/ui/hooks/useShellHistory.ts
18455
18465
  var import_react63 = __toESM(require_react(), 1);
@@ -22106,7 +22116,7 @@ var InputPrompt = ({
22106
22116
  relCol - segStart,
22107
22117
  relCol - segStart + 1
22108
22118
  );
22109
- const highlighted = showCursor ? import_chalk3.default.inverse(charToHighlight) : charToHighlight;
22119
+ const highlighted = showCursor ? import_chalk4.default.inverse(charToHighlight) : charToHighlight;
22110
22120
  display = cpSlice(display, 0, relCol - segStart) + highlighted + cpSlice(display, relCol - segStart + 1);
22111
22121
  }
22112
22122
  charCount = segEnd;
@@ -22121,7 +22131,7 @@ var InputPrompt = ({
22121
22131
  const currentLineGhost = isOnCursorLine ? inlineGhost : "";
22122
22132
  if (isOnCursorLine && cursorVisualColAbsolute === cpLen(lineText) && !currentLineGhost) {
22123
22133
  renderedLine.push(
22124
- /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Text, { children: showCursor ? import_chalk3.default.inverse(" ") : " " }, `cursor-end-${cursorVisualColAbsolute}`)
22134
+ /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Text, { children: showCursor ? import_chalk4.default.inverse(" ") : " " }, `cursor-end-${cursorVisualColAbsolute}`)
22125
22135
  );
22126
22136
  }
22127
22137
  const showCursorBeforeGhost = focus && isOnCursorLine && cursorVisualColAbsolute === cpLen(lineText) && currentLineGhost;
@@ -22135,7 +22145,7 @@ var InputPrompt = ({
22135
22145
  ),
22136
22146
  children: [
22137
22147
  renderedLine,
22138
- showCursorBeforeGhost && (showCursor ? import_chalk3.default.inverse(" ") : " "),
22148
+ showCursorBeforeGhost && (showCursor ? import_chalk4.default.inverse(" ") : " "),
22139
22149
  currentLineGhost && /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Text, { color: theme.text.secondary, children: currentLineGhost })
22140
22150
  ]
22141
22151
  }
@@ -22270,7 +22280,7 @@ var InputPrompt = ({
22270
22280
  terminalCursorFocus: showCursor,
22271
22281
  terminalCursorPosition: 0,
22272
22282
  children: [
22273
- import_chalk3.default.inverse(effectivePlaceholder.slice(0, 1)),
22283
+ import_chalk4.default.inverse(effectivePlaceholder.slice(0, 1)),
22274
22284
  /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Text, { color: theme.text.secondary, children: effectivePlaceholder.slice(1) })
22275
22285
  ]
22276
22286
  }
@@ -33727,7 +33737,7 @@ ${queuedText}` : queuedText;
33727
33737
  if (keyMatchers["app.showErrorDetails" /* SHOW_ERROR_DETAILS */](key)) {
33728
33738
  if (settings.merged.general.devtools) {
33729
33739
  void (async () => {
33730
- const { toggleDevToolsPanel } = await import("./devtoolsService-KOD5PTTB.js");
33740
+ const { toggleDevToolsPanel } = await import("./devtoolsService-YMIPTCBK.js");
33731
33741
  await toggleDevToolsPanel(
33732
33742
  config,
33733
33743
  showErrorDetails,