@google/gemini-cli 0.1.9-nightly.250708.a4097ae6 → 0.1.9-rc.0

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 (96) hide show
  1. package/README.md +3 -17
  2. package/dist/google-gemini-cli-0.1.9-rc.0.tgz +0 -0
  3. package/dist/index.js +0 -0
  4. package/dist/package.json +10 -9
  5. package/dist/src/config/auth.js +2 -3
  6. package/dist/src/config/auth.js.map +1 -1
  7. package/dist/src/config/config.d.ts +1 -0
  8. package/dist/src/config/config.js +39 -23
  9. package/dist/src/config/config.js.map +1 -1
  10. package/dist/src/config/extension.d.ts +0 -1
  11. package/dist/src/config/extension.js.map +1 -1
  12. package/dist/src/config/settings.d.ts +0 -2
  13. package/dist/src/config/settings.js +1 -63
  14. package/dist/src/config/settings.js.map +1 -1
  15. package/dist/src/gemini.js +18 -17
  16. package/dist/src/gemini.js.map +1 -1
  17. package/dist/src/generated/git-commit.d.ts +1 -1
  18. package/dist/src/generated/git-commit.js +1 -1
  19. package/dist/src/generated/git-commit.js.map +1 -1
  20. package/dist/src/ui/App.js +7 -11
  21. package/dist/src/ui/App.js.map +1 -1
  22. package/dist/src/ui/App.test.js +0 -1
  23. package/dist/src/ui/App.test.js.map +1 -1
  24. package/dist/src/ui/components/AuthDialog.js +2 -21
  25. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  26. package/dist/src/ui/components/AuthDialog.test.js +3 -20
  27. package/dist/src/ui/components/AuthDialog.test.js.map +1 -1
  28. package/dist/src/ui/components/Help.d.ts +1 -1
  29. package/dist/src/ui/components/Help.js +2 -3
  30. package/dist/src/ui/components/Help.js.map +1 -1
  31. package/dist/src/ui/components/InputPrompt.d.ts +1 -2
  32. package/dist/src/ui/components/InputPrompt.js +157 -106
  33. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  34. package/dist/src/ui/components/InputPrompt.test.js +0 -180
  35. package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
  36. package/dist/src/ui/components/messages/CompressionMessage.js +1 -1
  37. package/dist/src/ui/components/messages/ToolMessage.test.js +2 -2
  38. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
  39. package/dist/src/ui/components/shared/MaxSizedBox.js +1 -1
  40. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  41. package/dist/src/ui/components/shared/MaxSizedBox.test.js +1 -1
  42. package/dist/src/ui/components/shared/text-buffer.d.ts +16 -72
  43. package/dist/src/ui/components/shared/text-buffer.js +676 -564
  44. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  45. package/dist/src/ui/contexts/SessionContext.d.ts +1 -1
  46. package/dist/src/ui/hooks/atCommandProcessor.js +7 -5
  47. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  48. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +10 -6
  49. package/dist/src/ui/hooks/slashCommandProcessor.js +128 -213
  50. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  51. package/dist/src/ui/hooks/useCompletion.d.ts +2 -2
  52. package/dist/src/ui/hooks/useCompletion.js +56 -106
  53. package/dist/src/ui/hooks/useCompletion.js.map +1 -1
  54. package/dist/src/ui/hooks/useGeminiStream.d.ts +2 -2
  55. package/dist/src/ui/hooks/useGeminiStream.js +18 -12
  56. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  57. package/dist/src/ui/hooks/useGeminiStream.test.js +44 -107
  58. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  59. package/dist/src/ui/themes/ansi.js +1 -1
  60. package/dist/src/ui/themes/ansi.js.map +1 -1
  61. package/dist/src/ui/types.d.ts +0 -10
  62. package/dist/src/ui/utils/MarkdownDisplay.js +80 -1
  63. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  64. package/dist/src/ui/utils/MarkdownDisplay.test.js +0 -35
  65. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
  66. package/dist/src/ui/utils/TableRenderer.js +32 -50
  67. package/dist/src/ui/utils/TableRenderer.js.map +1 -1
  68. package/dist/src/utils/sandbox-macos-permissive-proxied.sb +1 -1
  69. package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +1 -1
  70. package/dist/tsconfig.tsbuildinfo +1 -1
  71. package/package.json +10 -9
  72. package/dist/google-gemini-cli-0.1.9.tgz +0 -0
  73. package/dist/src/services/CommandService.d.ts +0 -13
  74. package/dist/src/services/CommandService.js +0 -30
  75. package/dist/src/services/CommandService.js.map +0 -1
  76. package/dist/src/test-utils/mockCommandContext.d.ts +0 -18
  77. package/dist/src/test-utils/mockCommandContext.js +0 -75
  78. package/dist/src/test-utils/mockCommandContext.js.map +0 -1
  79. package/dist/src/ui/commands/clearCommand.d.ts +0 -7
  80. package/dist/src/ui/commands/clearCommand.js +0 -15
  81. package/dist/src/ui/commands/clearCommand.js.map +0 -1
  82. package/dist/src/ui/commands/helpCommand.d.ts +0 -7
  83. package/dist/src/ui/commands/helpCommand.js +0 -18
  84. package/dist/src/ui/commands/helpCommand.js.map +0 -1
  85. package/dist/src/ui/commands/memoryCommand.d.ts +0 -7
  86. package/dist/src/ui/commands/memoryCommand.js +0 -81
  87. package/dist/src/ui/commands/memoryCommand.js.map +0 -1
  88. package/dist/src/ui/commands/types.d.ts +0 -63
  89. package/dist/src/ui/commands/types.js +0 -7
  90. package/dist/src/ui/commands/types.js.map +0 -1
  91. package/dist/src/ui/utils/InlineMarkdownRenderer.d.ts +0 -16
  92. package/dist/src/ui/utils/InlineMarkdownRenderer.js +0 -104
  93. package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +0 -1
  94. package/dist/src/utils/userStartupWarnings.d.ts +0 -6
  95. package/dist/src/utils/userStartupWarnings.js +0 -33
  96. package/dist/src/utils/userStartupWarnings.js.map +0 -1
package/package.json CHANGED
@@ -1,11 +1,8 @@
1
1
  {
2
2
  "name": "@google/gemini-cli",
3
- "version": "0.1.9-nightly.250708.a4097ae6",
3
+ "version": "0.1.9-rc.0",
4
4
  "description": "Gemini CLI",
5
- "repository": {
6
- "type": "git",
7
- "url": "git+https://github.com/google-gemini/gemini-cli.git"
8
- },
5
+ "repository": "google-gemini/gemini-cli",
9
6
  "type": "module",
10
7
  "main": "dist/index.js",
11
8
  "bin": {
@@ -19,16 +16,20 @@
19
16
  "format": "prettier --write .",
20
17
  "test": "vitest run",
21
18
  "test:ci": "vitest run --coverage",
22
- "typecheck": "tsc --noEmit"
19
+ "typecheck": "tsc --noEmit",
20
+ "prerelease:version": "node ../../scripts/bind_package_version.js",
21
+ "prerelease:deps": "node ../../scripts/bind_package_dependencies.js",
22
+ "prepack": "npm run build",
23
+ "prepublishOnly": "node ../../scripts/prepublish.js"
23
24
  },
24
25
  "files": [
25
26
  "dist"
26
27
  ],
27
28
  "config": {
28
- "sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.1.9-nightly.250708.a4097ae6"
29
+ "sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.1.9-rc.0"
29
30
  },
30
31
  "dependencies": {
31
- "@google/gemini-cli-core": "0.1.9-nightly.250707.d1c0a211",
32
+ "@google/gemini-cli-core": "0.1.9-rc.0",
32
33
  "@types/update-notifier": "^6.0.8",
33
34
  "command-exists": "^1.2.9",
34
35
  "diff": "^7.0.0",
@@ -75,6 +76,6 @@
75
76
  "vitest": "^3.1.1"
76
77
  },
77
78
  "engines": {
78
- "node": ">=20"
79
+ "node": ">=18"
79
80
  }
80
81
  }
Binary file
@@ -1,13 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { SlashCommand } from '../ui/commands/types.js';
7
- export declare class CommandService {
8
- private commandLoader;
9
- private commands;
10
- constructor(commandLoader?: () => Promise<SlashCommand[]>);
11
- loadCommands(): Promise<void>;
12
- getCommands(): SlashCommand[];
13
- }
@@ -1,30 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { memoryCommand } from '../ui/commands/memoryCommand.js';
7
- import { helpCommand } from '../ui/commands/helpCommand.js';
8
- import { clearCommand } from '../ui/commands/clearCommand.js';
9
- const loadBuiltInCommands = async () => [
10
- clearCommand,
11
- helpCommand,
12
- memoryCommand,
13
- ];
14
- export class CommandService {
15
- commandLoader;
16
- commands = [];
17
- constructor(commandLoader = loadBuiltInCommands) {
18
- this.commandLoader = commandLoader;
19
- // The constructor can be used for dependency injection in the future.
20
- }
21
- async loadCommands() {
22
- // For now, we only load the built-in commands.
23
- // File-based and remote commands will be added later.
24
- this.commands = await this.commandLoader();
25
- }
26
- getCommands() {
27
- return this.commands;
28
- }
29
- }
30
- //# sourceMappingURL=CommandService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CommandService.js","sourceRoot":"","sources":["../../../src/services/CommandService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,MAAM,mBAAmB,GAAG,KAAK,IAA6B,EAAE,CAAC;IAC/D,YAAY;IACZ,WAAW;IACX,aAAa;CACd,CAAC;AAEF,MAAM,OAAO,cAAc;IAIf;IAHF,QAAQ,GAAmB,EAAE,CAAC;IAEtC,YACU,gBAA+C,mBAAmB;QAAlE,kBAAa,GAAb,aAAa,CAAqD;QAE1E,sEAAsE;IACxE,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,+CAA+C;QAC/C,sDAAsD;QACtD,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IAC7C,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF"}
@@ -1,18 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { CommandContext } from '../ui/commands/types.js';
7
- type DeepPartial<T> = T extends object ? {
8
- [P in keyof T]?: DeepPartial<T[P]>;
9
- } : T;
10
- /**
11
- * Creates a deep, fully-typed mock of the CommandContext for use in tests.
12
- * All functions are pre-mocked with `vi.fn()`.
13
- *
14
- * @param overrides - A deep partial object to override any default mock values.
15
- * @returns A complete, mocked CommandContext object.
16
- */
17
- export declare const createMockCommandContext: (overrides?: DeepPartial<CommandContext>) => CommandContext;
18
- export {};
@@ -1,75 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { vi } from 'vitest';
7
- /**
8
- * Creates a deep, fully-typed mock of the CommandContext for use in tests.
9
- * All functions are pre-mocked with `vi.fn()`.
10
- *
11
- * @param overrides - A deep partial object to override any default mock values.
12
- * @returns A complete, mocked CommandContext object.
13
- */
14
- export const createMockCommandContext = (overrides = {}) => {
15
- const defaultMocks = {
16
- services: {
17
- config: null,
18
- settings: { merged: {} },
19
- git: undefined,
20
- logger: {
21
- log: vi.fn(),
22
- logMessage: vi.fn(),
23
- saveCheckpoint: vi.fn(),
24
- loadCheckpoint: vi.fn().mockResolvedValue([]),
25
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
- }, // Cast because Logger is a class.
27
- },
28
- ui: {
29
- addItem: vi.fn(),
30
- clear: vi.fn(),
31
- setDebugMessage: vi.fn(),
32
- },
33
- session: {
34
- stats: {
35
- sessionStartTime: new Date(),
36
- lastPromptTokenCount: 0,
37
- metrics: {
38
- models: {},
39
- tools: {
40
- totalCalls: 0,
41
- totalSuccess: 0,
42
- totalFail: 0,
43
- totalDurationMs: 0,
44
- totalDecisions: { accept: 0, reject: 0, modify: 0 },
45
- byName: {},
46
- },
47
- },
48
- },
49
- },
50
- };
51
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
52
- const merge = (target, source) => {
53
- const output = { ...target };
54
- for (const key in source) {
55
- if (Object.prototype.hasOwnProperty.call(source, key)) {
56
- const sourceValue = source[key];
57
- const targetValue = output[key];
58
- if (sourceValue &&
59
- typeof sourceValue === 'object' &&
60
- !Array.isArray(sourceValue) &&
61
- targetValue &&
62
- typeof targetValue === 'object' &&
63
- !Array.isArray(targetValue)) {
64
- output[key] = merge(targetValue, sourceValue);
65
- }
66
- else {
67
- output[key] = sourceValue;
68
- }
69
- }
70
- }
71
- return output;
72
- };
73
- return merge(defaultMocks, overrides);
74
- };
75
- //# sourceMappingURL=mockCommandContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mockCommandContext.js","sourceRoot":"","sources":["../../../src/test-utils/mockCommandContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAa5B;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,YAAyC,EAAE,EAC3B,EAAE;IAClB,MAAM,YAAY,GAAmB;QACnC,QAAQ,EAAE;YACR,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,EAAoB;YAC1C,GAAG,EAAE,SAAmC;YACxC,MAAM,EAAE;gBACN,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBACZ,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;gBACnB,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;gBACvB,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC7C,8DAA8D;aACxD,EAAE,kCAAkC;SAC7C;QACD,EAAE,EAAE;YACF,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;YAChB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;YACd,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE;SACzB;QACD,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,gBAAgB,EAAE,IAAI,IAAI,EAAE;gBAC5B,oBAAoB,EAAE,CAAC;gBACvB,OAAO,EAAE;oBACP,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE;wBACL,UAAU,EAAE,CAAC;wBACb,YAAY,EAAE,CAAC;wBACf,SAAS,EAAE,CAAC;wBACZ,eAAe,EAAE,CAAC;wBAClB,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;wBACnD,MAAM,EAAE,EAAE;qBACX;iBACF;aACmB;SACvB;KACF,CAAC;IAEF,8DAA8D;IAC9D,MAAM,KAAK,GAAG,CAAC,MAAW,EAAE,MAAW,EAAO,EAAE;QAC9C,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QAE7B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;gBACtD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAEhC,IACE,WAAW;oBACX,OAAO,WAAW,KAAK,QAAQ;oBAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;oBAC3B,WAAW;oBACX,OAAO,WAAW,KAAK,QAAQ;oBAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAC3B,CAAC;oBACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACxC,CAAC,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { SlashCommand } from './types.js';
7
- export declare const clearCommand: SlashCommand;
@@ -1,15 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export const clearCommand = {
7
- name: 'clear',
8
- description: 'clear the screen and conversation history',
9
- action: async (context, _args) => {
10
- context.ui.setDebugMessage('Clearing terminal and resetting chat.');
11
- await context.services.config?.getGeminiClient()?.resetChat();
12
- context.ui.clear();
13
- },
14
- };
15
- //# sourceMappingURL=clearCommand.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clearCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/clearCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,2CAA2C;IACxD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC/B,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC,uCAAuC,CAAC,CAAC;QACpE,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,SAAS,EAAE,CAAC;QAC9D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { SlashCommand } from './types.js';
7
- export declare const helpCommand: SlashCommand;
@@ -1,18 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export const helpCommand = {
7
- name: 'help',
8
- altName: '?',
9
- description: 'for help on gemini-cli',
10
- action: (_context, _args) => {
11
- console.debug('Opening help UI ...');
12
- return {
13
- type: 'dialog',
14
- dialog: 'help',
15
- };
16
- },
17
- };
18
- //# sourceMappingURL=helpCommand.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/helpCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,GAAG;IACZ,WAAW,EAAE,wBAAwB;IACrC,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,EAA0B,EAAE;QAClD,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACrC,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,MAAM;SACf,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { SlashCommand } from './types.js';
7
- export declare const memoryCommand: SlashCommand;
@@ -1,81 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { getErrorMessage } from '@google/gemini-cli-core';
7
- import { MessageType } from '../types.js';
8
- export const memoryCommand = {
9
- name: 'memory',
10
- description: 'Commands for interacting with memory.',
11
- subCommands: [
12
- {
13
- name: 'show',
14
- description: 'Show the current memory contents.',
15
- action: async (context) => {
16
- const memoryContent = context.services.config?.getUserMemory() || '';
17
- const fileCount = context.services.config?.getGeminiMdFileCount() || 0;
18
- const messageContent = memoryContent.length > 0
19
- ? `Current memory content from ${fileCount} file(s):\n\n---\n${memoryContent}\n---`
20
- : 'Memory is currently empty.';
21
- context.ui.addItem({
22
- type: MessageType.INFO,
23
- text: messageContent,
24
- }, Date.now());
25
- },
26
- },
27
- {
28
- name: 'add',
29
- description: 'Add content to the memory.',
30
- action: (context, args) => {
31
- if (!args || args.trim() === '') {
32
- return {
33
- type: 'message',
34
- messageType: 'error',
35
- content: 'Usage: /memory add <text to remember>',
36
- };
37
- }
38
- context.ui.addItem({
39
- type: MessageType.INFO,
40
- text: `Attempting to save to memory: "${args.trim()}"`,
41
- }, Date.now());
42
- return {
43
- type: 'tool',
44
- toolName: 'save_memory',
45
- toolArgs: { fact: args.trim() },
46
- };
47
- },
48
- },
49
- {
50
- name: 'refresh',
51
- description: 'Refresh the memory from the source.',
52
- action: async (context) => {
53
- context.ui.addItem({
54
- type: MessageType.INFO,
55
- text: 'Refreshing memory from source files...',
56
- }, Date.now());
57
- try {
58
- const result = await context.services.config?.refreshMemory();
59
- if (result) {
60
- const { memoryContent, fileCount } = result;
61
- const successMessage = memoryContent.length > 0
62
- ? `Memory refreshed successfully. Loaded ${memoryContent.length} characters from ${fileCount} file(s).`
63
- : 'Memory refreshed successfully. No memory content found.';
64
- context.ui.addItem({
65
- type: MessageType.INFO,
66
- text: successMessage,
67
- }, Date.now());
68
- }
69
- }
70
- catch (error) {
71
- const errorMessage = getErrorMessage(error);
72
- context.ui.addItem({
73
- type: MessageType.ERROR,
74
- text: `Error refreshing memory: ${errorMessage}`,
75
- }, Date.now());
76
- }
77
- },
78
- },
79
- ],
80
- };
81
- //# sourceMappingURL=memoryCommand.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memoryCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/memoryCommand.ts"],"names":[],"mappings":"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"}
@@ -1,63 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { Config, GitService, Logger } from '@google/gemini-cli-core';
7
- import { LoadedSettings } from '../../config/settings.js';
8
- import { UseHistoryManagerReturn } from '../hooks/useHistoryManager.js';
9
- import { SessionStatsState } from '../contexts/SessionContext.js';
10
- export interface CommandContext {
11
- services: {
12
- config: Config | null;
13
- settings: LoadedSettings;
14
- git: GitService | undefined;
15
- logger: Logger;
16
- };
17
- ui: {
18
- /** Adds a new item to the history display. */
19
- addItem: UseHistoryManagerReturn['addItem'];
20
- /** Clears all history items and the console screen. */
21
- clear: () => void;
22
- /**
23
- * Sets the transient debug message displayed in the application footer in debug mode.
24
- */
25
- setDebugMessage: (message: string) => void;
26
- };
27
- session: {
28
- stats: SessionStatsState;
29
- };
30
- }
31
- /**
32
- * The return type for a command action that results in scheduling a tool call.
33
- */
34
- export interface ToolActionReturn {
35
- type: 'tool';
36
- toolName: string;
37
- toolArgs: Record<string, unknown>;
38
- }
39
- /**
40
- * The return type for a command action that results in a simple message
41
- * being displayed to the user.
42
- */
43
- export interface MessageActionReturn {
44
- type: 'message';
45
- messageType: 'info' | 'error';
46
- content: string;
47
- }
48
- /**
49
- * The return type for a command action that needs to open a dialog.
50
- */
51
- export interface OpenDialogActionReturn {
52
- type: 'dialog';
53
- dialog: 'help';
54
- }
55
- export type SlashCommandActionReturn = ToolActionReturn | MessageActionReturn | OpenDialogActionReturn;
56
- export interface SlashCommand {
57
- name: string;
58
- altName?: string;
59
- description?: string;
60
- action?: (context: CommandContext, args: string) => void | SlashCommandActionReturn | Promise<void | SlashCommandActionReturn>;
61
- completion?: (context: CommandContext, partialArg: string) => Promise<string[]>;
62
- subCommands?: SlashCommand[];
63
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};
7
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/ui/commands/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -1,16 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import React from 'react';
7
- interface RenderInlineProps {
8
- text: string;
9
- }
10
- export declare const RenderInline: React.NamedExoticComponent<RenderInlineProps>;
11
- /**
12
- * Utility function to get the plain text length of a string with markdown formatting
13
- * This is useful for calculating column widths in tables
14
- */
15
- export declare const getPlainTextLength: (text: string) => number;
16
- export {};
@@ -1,104 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- /**
3
- * @license
4
- * Copyright 2025 Google LLC
5
- * SPDX-License-Identifier: Apache-2.0
6
- */
7
- import React from 'react';
8
- import { Text } from 'ink';
9
- import { Colors } from '../colors.js';
10
- import stringWidth from 'string-width';
11
- // Constants for Markdown parsing
12
- const BOLD_MARKER_LENGTH = 2; // For "**"
13
- const ITALIC_MARKER_LENGTH = 1; // For "*" or "_"
14
- const STRIKETHROUGH_MARKER_LENGTH = 2; // For "~~"
15
- const INLINE_CODE_MARKER_LENGTH = 1; // For "`"
16
- const UNDERLINE_TAG_START_LENGTH = 3; // For "<u>"
17
- const UNDERLINE_TAG_END_LENGTH = 4; // For "</u>"
18
- const RenderInlineInternal = ({ text }) => {
19
- const nodes = [];
20
- let lastIndex = 0;
21
- const inlineRegex = /(\*\*.*?\*\*|\*.*?\*|_.*?_|~~.*?~~|\[.*?\]\(.*?\)|`+.+?`+|<u>.*?<\/u>)/g;
22
- let match;
23
- while ((match = inlineRegex.exec(text)) !== null) {
24
- if (match.index > lastIndex) {
25
- nodes.push(_jsx(Text, { children: text.slice(lastIndex, match.index) }, `t-${lastIndex}`));
26
- }
27
- const fullMatch = match[0];
28
- let renderedNode = null;
29
- const key = `m-${match.index}`;
30
- try {
31
- if (fullMatch.startsWith('**') &&
32
- fullMatch.endsWith('**') &&
33
- fullMatch.length > BOLD_MARKER_LENGTH * 2) {
34
- renderedNode = (_jsx(Text, { bold: true, children: fullMatch.slice(BOLD_MARKER_LENGTH, -BOLD_MARKER_LENGTH) }, key));
35
- }
36
- else if (fullMatch.length > ITALIC_MARKER_LENGTH * 2 &&
37
- ((fullMatch.startsWith('*') && fullMatch.endsWith('*')) ||
38
- (fullMatch.startsWith('_') && fullMatch.endsWith('_'))) &&
39
- !/\w/.test(text.substring(match.index - 1, match.index)) &&
40
- !/\w/.test(text.substring(inlineRegex.lastIndex, inlineRegex.lastIndex + 1)) &&
41
- !/\S[./\\]/.test(text.substring(match.index - 2, match.index)) &&
42
- !/[./\\]\S/.test(text.substring(inlineRegex.lastIndex, inlineRegex.lastIndex + 2))) {
43
- renderedNode = (_jsx(Text, { italic: true, children: fullMatch.slice(ITALIC_MARKER_LENGTH, -ITALIC_MARKER_LENGTH) }, key));
44
- }
45
- else if (fullMatch.startsWith('~~') &&
46
- fullMatch.endsWith('~~') &&
47
- fullMatch.length > STRIKETHROUGH_MARKER_LENGTH * 2) {
48
- renderedNode = (_jsx(Text, { strikethrough: true, children: fullMatch.slice(STRIKETHROUGH_MARKER_LENGTH, -STRIKETHROUGH_MARKER_LENGTH) }, key));
49
- }
50
- else if (fullMatch.startsWith('`') &&
51
- fullMatch.endsWith('`') &&
52
- fullMatch.length > INLINE_CODE_MARKER_LENGTH) {
53
- const codeMatch = fullMatch.match(/^(`+)(.+?)\1$/s);
54
- if (codeMatch && codeMatch[2]) {
55
- renderedNode = (_jsx(Text, { color: Colors.AccentPurple, children: codeMatch[2] }, key));
56
- }
57
- }
58
- else if (fullMatch.startsWith('[') &&
59
- fullMatch.includes('](') &&
60
- fullMatch.endsWith(')')) {
61
- const linkMatch = fullMatch.match(/\[(.*?)\]\((.*?)\)/);
62
- if (linkMatch) {
63
- const linkText = linkMatch[1];
64
- const url = linkMatch[2];
65
- renderedNode = (_jsxs(Text, { children: [linkText, _jsxs(Text, { color: Colors.AccentBlue, children: [" (", url, ")"] })] }, key));
66
- }
67
- }
68
- else if (fullMatch.startsWith('<u>') &&
69
- fullMatch.endsWith('</u>') &&
70
- fullMatch.length >
71
- UNDERLINE_TAG_START_LENGTH + UNDERLINE_TAG_END_LENGTH - 1 // -1 because length is compared to combined length of start and end tags
72
- ) {
73
- renderedNode = (_jsx(Text, { underline: true, children: fullMatch.slice(UNDERLINE_TAG_START_LENGTH, -UNDERLINE_TAG_END_LENGTH) }, key));
74
- }
75
- }
76
- catch (e) {
77
- console.error('Error parsing inline markdown part:', fullMatch, e);
78
- renderedNode = null;
79
- }
80
- nodes.push(renderedNode ?? _jsx(Text, { children: fullMatch }, key));
81
- lastIndex = inlineRegex.lastIndex;
82
- }
83
- if (lastIndex < text.length) {
84
- nodes.push(_jsx(Text, { children: text.slice(lastIndex) }, `t-${lastIndex}`));
85
- }
86
- return _jsx(_Fragment, { children: nodes.filter((node) => node !== null) });
87
- };
88
- export const RenderInline = React.memo(RenderInlineInternal);
89
- /**
90
- * Utility function to get the plain text length of a string with markdown formatting
91
- * This is useful for calculating column widths in tables
92
- */
93
- export const getPlainTextLength = (text) => {
94
- const cleanText = text
95
- .replace(/\*\*(.*?)\*\*/g, '$1')
96
- .replace(/\*(.*?)\*/g, '$1')
97
- .replace(/_(.*?)_/g, '$1')
98
- .replace(/~~(.*?)~~/g, '$1')
99
- .replace(/`(.*?)`/g, '$1')
100
- .replace(/<u>(.*?)<\/u>/g, '$1')
101
- .replace(/\[(.*?)\]\(.*?\)/g, '$1');
102
- return stringWidth(cleanText);
103
- };
104
- //# sourceMappingURL=InlineMarkdownRenderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InlineMarkdownRenderer.js","sourceRoot":"","sources":["../../../../src/ui/utils/InlineMarkdownRenderer.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export declare function getUserStartupWarnings(workspaceRoot: string): Promise<string[]>;
@@ -1,33 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import fs from 'fs/promises';
7
- import * as os from 'os';
8
- // Individual warning checks
9
- const homeDirectoryCheck = {
10
- id: 'home-directory',
11
- check: async (workspaceRoot) => {
12
- try {
13
- const [workspaceRealPath, homeRealPath] = await Promise.all([
14
- fs.realpath(workspaceRoot),
15
- fs.realpath(os.homedir()),
16
- ]);
17
- if (workspaceRealPath === homeRealPath) {
18
- return 'You are running Gemini CLI in your home directory. It is recommended to run in a project-specific directory.';
19
- }
20
- return null;
21
- }
22
- catch (_err) {
23
- return 'Could not verify the current directory due to a file system error.';
24
- }
25
- },
26
- };
27
- // All warning checks
28
- const WARNING_CHECKS = [homeDirectoryCheck];
29
- export async function getUserStartupWarnings(workspaceRoot) {
30
- const results = await Promise.all(WARNING_CHECKS.map((check) => check.check(workspaceRoot)));
31
- return results.filter((msg) => msg !== null);
32
- }
33
- //# sourceMappingURL=userStartupWarnings.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"userStartupWarnings.js","sourceRoot":"","sources":["../../../src/utils/userStartupWarnings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAOzB,4BAA4B;AAC5B,MAAM,kBAAkB,GAAiB;IACvC,EAAE,EAAE,gBAAgB;IACpB,KAAK,EAAE,KAAK,EAAE,aAAqB,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,CAAC,iBAAiB,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC1D,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAC1B,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;aAC1B,CAAC,CAAC;YAEH,IAAI,iBAAiB,KAAK,YAAY,EAAE,CAAC;gBACvC,OAAO,8GAA8G,CAAC;YACxH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,IAAa,EAAE,CAAC;YACvB,OAAO,oEAAoE,CAAC;QAC9E,CAAC;IACH,CAAC;CACF,CAAC;AAEF,qBAAqB;AACrB,MAAM,cAAc,GAA4B,CAAC,kBAAkB,CAAC,CAAC;AAErE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,aAAqB;IAErB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAC1D,CAAC;IACF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;AAC/C,CAAC"}