@google/gemini-cli 0.4.0-preview.1 → 0.5.0-nightly.20250906.968e9389

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 (85) hide show
  1. package/dist/google-gemini-cli-0.3.1.tgz +0 -0
  2. package/dist/package.json +2 -2
  3. package/dist/src/commands/extensions/install.js +3 -3
  4. package/dist/src/commands/extensions/install.js.map +1 -1
  5. package/dist/src/commands/extensions/install.test.js +2 -2
  6. package/dist/src/commands/extensions/install.test.js.map +1 -1
  7. package/dist/src/config/config.js +3 -1
  8. package/dist/src/config/config.js.map +1 -1
  9. package/dist/src/config/extension.js +2 -1
  10. package/dist/src/config/extension.js.map +1 -1
  11. package/dist/src/config/settings.js +2 -13
  12. package/dist/src/config/settings.js.map +1 -1
  13. package/dist/src/config/settingsSchema.d.ts +19 -1
  14. package/dist/src/config/settingsSchema.js +20 -1
  15. package/dist/src/config/settingsSchema.js.map +1 -1
  16. package/dist/src/generated/git-commit.d.ts +2 -2
  17. package/dist/src/generated/git-commit.js +2 -2
  18. package/dist/src/generated/git-commit.js.map +1 -1
  19. package/dist/src/services/CommandService.js +1 -1
  20. package/dist/src/services/CommandService.js.map +1 -1
  21. package/dist/src/services/CommandService.test.js +22 -0
  22. package/dist/src/services/CommandService.test.js.map +1 -1
  23. package/dist/src/ui/App.js +17 -49
  24. package/dist/src/ui/App.js.map +1 -1
  25. package/dist/src/ui/auth/AuthDialog.d.ts +18 -0
  26. package/dist/src/ui/{components → auth}/AuthDialog.js +35 -34
  27. package/dist/src/ui/auth/AuthDialog.js.map +1 -0
  28. package/dist/src/ui/auth/AuthDialog.test.js +184 -0
  29. package/dist/src/ui/auth/AuthDialog.test.js.map +1 -0
  30. package/dist/src/ui/auth/AuthInProgress.js.map +1 -0
  31. package/dist/src/ui/auth/useAuth.d.ts +15 -0
  32. package/dist/src/ui/auth/useAuth.js +73 -0
  33. package/dist/src/ui/auth/useAuth.js.map +1 -0
  34. package/dist/src/ui/commands/corgiCommand.js +1 -0
  35. package/dist/src/ui/commands/corgiCommand.js.map +1 -1
  36. package/dist/src/ui/commands/mcpCommand.js +1 -1
  37. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  38. package/dist/src/ui/commands/types.d.ts +1 -0
  39. package/dist/src/ui/components/Help.js +1 -3
  40. package/dist/src/ui/components/Help.js.map +1 -1
  41. package/dist/src/ui/components/InputPrompt.js +3 -3
  42. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  43. package/dist/src/ui/components/messages/ToolGroupMessage.js +2 -2
  44. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  45. package/dist/src/ui/contexts/KeypressContext.d.ts +3 -0
  46. package/dist/src/ui/contexts/KeypressContext.js +44 -0
  47. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  48. package/dist/src/ui/contexts/KeypressContext.test.js +173 -1
  49. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  50. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +2 -2
  51. package/dist/src/ui/hooks/slashCommandProcessor.js +4 -3
  52. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  53. package/dist/src/ui/hooks/useGeminiStream.d.ts +1 -1
  54. package/dist/src/ui/hooks/useGeminiStream.js +1 -1
  55. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  56. package/dist/src/ui/hooks/useReactToolScheduler.js +1 -0
  57. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  58. package/dist/src/ui/hooks/useSlashCompletion.js +1 -0
  59. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  60. package/dist/src/ui/hooks/useToolScheduler.test.js +6 -1
  61. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  62. package/dist/src/ui/hooks/useWorkspaceMigration.js +2 -1
  63. package/dist/src/ui/hooks/useWorkspaceMigration.js.map +1 -1
  64. package/dist/src/ui/types.d.ts +6 -0
  65. package/dist/src/ui/types.js +9 -0
  66. package/dist/src/ui/types.js.map +1 -1
  67. package/dist/src/ui/utils/highlight.d.ts +1 -1
  68. package/dist/src/ui/utils/highlight.js +15 -6
  69. package/dist/src/ui/utils/highlight.js.map +1 -1
  70. package/dist/src/ui/utils/highlight.test.js +56 -29
  71. package/dist/src/ui/utils/highlight.test.js.map +1 -1
  72. package/dist/tsconfig.tsbuildinfo +1 -1
  73. package/package.json +3 -3
  74. package/dist/google-gemini-cli-0.4.0-preview.tgz +0 -0
  75. package/dist/src/ui/components/AuthDialog.d.ts +0 -16
  76. package/dist/src/ui/components/AuthDialog.js.map +0 -1
  77. package/dist/src/ui/components/AuthDialog.test.js +0 -307
  78. package/dist/src/ui/components/AuthDialog.test.js.map +0 -1
  79. package/dist/src/ui/components/AuthInProgress.js.map +0 -1
  80. package/dist/src/ui/hooks/useAuthCommand.d.ts +0 -14
  81. package/dist/src/ui/hooks/useAuthCommand.js +0 -66
  82. package/dist/src/ui/hooks/useAuthCommand.js.map +0 -1
  83. /package/dist/src/ui/{components → auth}/AuthDialog.test.d.ts +0 -0
  84. /package/dist/src/ui/{components → auth}/AuthInProgress.d.ts +0 -0
  85. /package/dist/src/ui/{components → auth}/AuthInProgress.js +0 -0
@@ -7,87 +7,114 @@ import { describe, it, expect } from 'vitest';
7
7
  import { parseInputForHighlighting } from './highlight.js';
8
8
  describe('parseInputForHighlighting', () => {
9
9
  it('should handle an empty string', () => {
10
- expect(parseInputForHighlighting('')).toEqual([
10
+ expect(parseInputForHighlighting('', 0)).toEqual([
11
11
  { text: '', type: 'default' },
12
12
  ]);
13
13
  });
14
14
  it('should handle text with no commands or files', () => {
15
15
  const text = 'this is a normal sentence';
16
- expect(parseInputForHighlighting(text)).toEqual([
16
+ expect(parseInputForHighlighting(text, 0)).toEqual([
17
17
  { text, type: 'default' },
18
18
  ]);
19
19
  });
20
- it('should highlight a single command at the beginning', () => {
20
+ it('should highlight a single command at the beginning when index is 0', () => {
21
21
  const text = '/help me';
22
- expect(parseInputForHighlighting(text)).toEqual([
22
+ expect(parseInputForHighlighting(text, 0)).toEqual([
23
23
  { text: '/help', type: 'command' },
24
24
  { text: ' me', type: 'default' },
25
25
  ]);
26
26
  });
27
+ it('should NOT highlight a command at the beginning when index is not 0', () => {
28
+ const text = '/help me';
29
+ expect(parseInputForHighlighting(text, 1)).toEqual([
30
+ { text: '/help', type: 'default' },
31
+ { text: ' me', type: 'default' },
32
+ ]);
33
+ });
27
34
  it('should highlight a single file path at the beginning', () => {
28
35
  const text = '@path/to/file.txt please';
29
- expect(parseInputForHighlighting(text)).toEqual([
36
+ expect(parseInputForHighlighting(text, 0)).toEqual([
30
37
  { text: '@path/to/file.txt', type: 'file' },
31
38
  { text: ' please', type: 'default' },
32
39
  ]);
33
40
  });
34
- it('should highlight a command in the middle', () => {
41
+ it('should not highlight a command in the middle', () => {
35
42
  const text = 'I need /help with this';
36
- expect(parseInputForHighlighting(text)).toEqual([
37
- { text: 'I need ', type: 'default' },
38
- { text: '/help', type: 'command' },
39
- { text: ' with this', type: 'default' },
43
+ expect(parseInputForHighlighting(text, 0)).toEqual([
44
+ { text: 'I need /help with this', type: 'default' },
40
45
  ]);
41
46
  });
42
47
  it('should highlight a file path in the middle', () => {
43
48
  const text = 'Please check @path/to/file.txt for details';
44
- expect(parseInputForHighlighting(text)).toEqual([
49
+ expect(parseInputForHighlighting(text, 0)).toEqual([
45
50
  { text: 'Please check ', type: 'default' },
46
51
  { text: '@path/to/file.txt', type: 'file' },
47
52
  { text: ' for details', type: 'default' },
48
53
  ]);
49
54
  });
50
- it('should highlight multiple commands and files', () => {
55
+ it('should highlight files but not commands not at the start', () => {
51
56
  const text = 'Use /run with @file.js and also /format @another/file.ts';
52
- expect(parseInputForHighlighting(text)).toEqual([
53
- { text: 'Use ', type: 'default' },
54
- { text: '/run', type: 'command' },
55
- { text: ' with ', type: 'default' },
57
+ expect(parseInputForHighlighting(text, 0)).toEqual([
58
+ { text: 'Use /run with ', type: 'default' },
56
59
  { text: '@file.js', type: 'file' },
57
- { text: ' and also ', type: 'default' },
58
- { text: '/format', type: 'command' },
59
- { text: ' ', type: 'default' },
60
+ { text: ' and also /format ', type: 'default' },
60
61
  { text: '@another/file.ts', type: 'file' },
61
62
  ]);
62
63
  });
63
- it('should handle adjacent highlights', () => {
64
+ it('should handle adjacent highlights at start', () => {
64
65
  const text = '/run@file.js';
65
- expect(parseInputForHighlighting(text)).toEqual([
66
+ expect(parseInputForHighlighting(text, 0)).toEqual([
66
67
  { text: '/run', type: 'command' },
67
68
  { text: '@file.js', type: 'file' },
68
69
  ]);
69
70
  });
70
- it('should handle highlights at the end of the string', () => {
71
+ it('should not highlight command at the end of the string', () => {
71
72
  const text = 'Get help with /help';
72
- expect(parseInputForHighlighting(text)).toEqual([
73
- { text: 'Get help with ', type: 'default' },
74
- { text: '/help', type: 'command' },
73
+ expect(parseInputForHighlighting(text, 0)).toEqual([
74
+ { text: 'Get help with /help', type: 'default' },
75
75
  ]);
76
76
  });
77
77
  it('should handle file paths with dots and dashes', () => {
78
78
  const text = 'Check @./path-to/file-name.v2.txt';
79
- expect(parseInputForHighlighting(text)).toEqual([
79
+ expect(parseInputForHighlighting(text, 0)).toEqual([
80
80
  { text: 'Check ', type: 'default' },
81
81
  { text: '@./path-to/file-name.v2.txt', type: 'file' },
82
82
  ]);
83
83
  });
84
- it('should handle commands with dashes and numbers', () => {
84
+ it('should not highlight command with dashes and numbers not at start', () => {
85
85
  const text = 'Run /command-123 now';
86
- expect(parseInputForHighlighting(text)).toEqual([
87
- { text: 'Run ', type: 'default' },
86
+ expect(parseInputForHighlighting(text, 0)).toEqual([
87
+ { text: 'Run /command-123 now', type: 'default' },
88
+ ]);
89
+ });
90
+ it('should highlight command with dashes and numbers at start', () => {
91
+ const text = '/command-123 now';
92
+ expect(parseInputForHighlighting(text, 0)).toEqual([
88
93
  { text: '/command-123', type: 'command' },
89
94
  { text: ' now', type: 'default' },
90
95
  ]);
91
96
  });
97
+ it('should still highlight a file path on a non-zero line', () => {
98
+ const text = 'some text @path/to/file.txt';
99
+ expect(parseInputForHighlighting(text, 1)).toEqual([
100
+ { text: 'some text ', type: 'default' },
101
+ { text: '@path/to/file.txt', type: 'file' },
102
+ ]);
103
+ });
104
+ it('should not highlight command but highlight file on a non-zero line', () => {
105
+ const text = '/cmd @file.txt';
106
+ expect(parseInputForHighlighting(text, 2)).toEqual([
107
+ { text: '/cmd', type: 'default' },
108
+ { text: ' ', type: 'default' },
109
+ { text: '@file.txt', type: 'file' },
110
+ ]);
111
+ });
112
+ it('should highlight a file path with escaped spaces', () => {
113
+ const text = 'cat @/my\\ path/file.txt';
114
+ expect(parseInputForHighlighting(text, 0)).toEqual([
115
+ { text: 'cat ', type: 'default' },
116
+ { text: '@/my\\ path/file.txt', type: 'file' },
117
+ ]);
118
+ });
92
119
  });
93
120
  //# sourceMappingURL=highlight.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"highlight.test.js","sourceRoot":"","sources":["../../../../src/ui/utils/highlight.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"highlight.test.js","sourceRoot":"","sources":["../../../../src/ui/utils/highlight.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,yBAAyB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC/C,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;SAC9B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,IAAI,GAAG,2BAA2B,CAAC;QACzC,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACjD,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,IAAI,GAAG,UAAU,CAAC;QACxB,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACjD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;YAClC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;SACjC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,IAAI,GAAG,UAAU,CAAC;QACxB,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACjD,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;YAClC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;SACjC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,IAAI,GAAG,0BAA0B,CAAC;QACxC,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACjD,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE;YAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;SACrC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,IAAI,GAAG,wBAAwB,CAAC;QACtC,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACjD,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,SAAS,EAAE;SACpD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,IAAI,GAAG,4CAA4C,CAAC;QAC1D,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACjD,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1C,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE;YAC3C,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE;SAC1C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,IAAI,GAAG,0DAA0D,CAAC;QACxE,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACjD,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE;YAC3C,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;YAClC,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,SAAS,EAAE;YAC/C,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE;SAC3C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,IAAI,GAAG,cAAc,CAAC;QAC5B,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACjD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;YACjC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;SACnC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,IAAI,GAAG,qBAAqB,CAAC;QACnC,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACjD,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,SAAS,EAAE;SACjD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,IAAI,GAAG,mCAAmC,CAAC;QACjD,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACjD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;YACnC,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,EAAE,MAAM,EAAE;SACtD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,IAAI,GAAG,sBAAsB,CAAC;QACpC,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACjD,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,SAAS,EAAE;SAClD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,IAAI,GAAG,kBAAkB,CAAC;QAChC,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACjD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE;YACzC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;SAClC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,IAAI,GAAG,6BAA6B,CAAC;QAC3C,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACjD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;YACvC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE;SAC5C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,IAAI,GAAG,gBAAgB,CAAC;QAC9B,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACjD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;YACjC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;YAC9B,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE;SACpC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,IAAI,GAAG,0BAA0B,CAAC;QACxC,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACjD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;YACjC,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,EAAE;SAC/C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}