@google/gemini-cli 0.1.9-nightly.250708.a4097ae6 → 0.1.9-nightly.250710.da50a1ee

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 (97) hide show
  1. package/dist/google-gemini-cli-0.1.9.tgz +0 -0
  2. package/dist/package.json +6 -6
  3. package/dist/src/config/auth.js +3 -3
  4. package/dist/src/config/auth.js.map +1 -1
  5. package/dist/src/config/config.js +51 -13
  6. package/dist/src/config/config.js.map +1 -1
  7. package/dist/src/config/extension.d.ts +1 -0
  8. package/dist/src/config/extension.js +34 -6
  9. package/dist/src/config/extension.js.map +1 -1
  10. package/dist/src/config/sandboxConfig.d.ts +1 -1
  11. package/dist/src/config/sandboxConfig.js +1 -1
  12. package/dist/src/config/sandboxConfig.js.map +1 -1
  13. package/dist/src/config/settings.d.ts +5 -2
  14. package/dist/src/config/settings.js +38 -2
  15. package/dist/src/config/settings.js.map +1 -1
  16. package/dist/src/gemini.js +18 -8
  17. package/dist/src/gemini.js.map +1 -1
  18. package/dist/src/generated/git-commit.d.ts +1 -1
  19. package/dist/src/generated/git-commit.js +1 -1
  20. package/dist/src/nonInteractiveCli.d.ts +1 -1
  21. package/dist/src/nonInteractiveCli.js +4 -2
  22. package/dist/src/nonInteractiveCli.js.map +1 -1
  23. package/dist/src/ui/App.js +62 -7
  24. package/dist/src/ui/App.js.map +1 -1
  25. package/dist/src/ui/components/AuthDialog.js +15 -6
  26. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  27. package/dist/src/ui/components/LoadingIndicator.js +2 -1
  28. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  29. package/dist/src/ui/components/ThemeDialog.js +10 -9
  30. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  31. package/dist/src/ui/contexts/SessionContext.d.ts +3 -0
  32. package/dist/src/ui/contexts/SessionContext.js +12 -2
  33. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  34. package/dist/src/ui/hooks/slashCommandProcessor.js +28 -1
  35. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  36. package/dist/src/ui/hooks/useGeminiStream.d.ts +2 -2
  37. package/dist/src/ui/hooks/useGeminiStream.js +33 -10
  38. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  39. package/dist/src/ui/utils/errorParsing.d.ts +2 -10
  40. package/dist/src/ui/utils/errorParsing.js +34 -23
  41. package/dist/src/ui/utils/errorParsing.js.map +1 -1
  42. package/dist/tsconfig.tsbuildinfo +1 -1
  43. package/package.json +7 -7
  44. package/dist/src/gemini.test.d.ts +0 -6
  45. package/dist/src/gemini.test.js +0 -122
  46. package/dist/src/gemini.test.js.map +0 -1
  47. package/dist/src/test-utils/mockCommandContext.d.ts +0 -18
  48. package/dist/src/test-utils/mockCommandContext.js +0 -75
  49. package/dist/src/test-utils/mockCommandContext.js.map +0 -1
  50. package/dist/src/ui/App.test.d.ts +0 -6
  51. package/dist/src/ui/App.test.js +0 -300
  52. package/dist/src/ui/App.test.js.map +0 -1
  53. package/dist/src/ui/components/AuthDialog.test.d.ts +0 -6
  54. package/dist/src/ui/components/AuthDialog.test.js +0 -86
  55. package/dist/src/ui/components/AuthDialog.test.js.map +0 -1
  56. package/dist/src/ui/components/HistoryItemDisplay.test.d.ts +0 -6
  57. package/dist/src/ui/components/HistoryItemDisplay.test.js +0 -81
  58. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +0 -1
  59. package/dist/src/ui/components/InputPrompt.test.d.ts +0 -6
  60. package/dist/src/ui/components/InputPrompt.test.js +0 -334
  61. package/dist/src/ui/components/InputPrompt.test.js.map +0 -1
  62. package/dist/src/ui/components/LoadingIndicator.test.d.ts +0 -6
  63. package/dist/src/ui/components/LoadingIndicator.test.js +0 -141
  64. package/dist/src/ui/components/LoadingIndicator.test.js.map +0 -1
  65. package/dist/src/ui/components/ModelStatsDisplay.test.d.ts +0 -6
  66. package/dist/src/ui/components/ModelStatsDisplay.test.js +0 -217
  67. package/dist/src/ui/components/ModelStatsDisplay.test.js.map +0 -1
  68. package/dist/src/ui/components/SessionSummaryDisplay.test.d.ts +0 -6
  69. package/dist/src/ui/components/SessionSummaryDisplay.test.js +0 -60
  70. package/dist/src/ui/components/SessionSummaryDisplay.test.js.map +0 -1
  71. package/dist/src/ui/components/StatsDisplay.test.d.ts +0 -6
  72. package/dist/src/ui/components/StatsDisplay.test.js +0 -275
  73. package/dist/src/ui/components/StatsDisplay.test.js.map +0 -1
  74. package/dist/src/ui/components/ToolStatsDisplay.test.d.ts +0 -6
  75. package/dist/src/ui/components/ToolStatsDisplay.test.js +0 -160
  76. package/dist/src/ui/components/ToolStatsDisplay.test.js.map +0 -1
  77. package/dist/src/ui/components/messages/DiffRenderer.test.d.ts +0 -6
  78. package/dist/src/ui/components/messages/DiffRenderer.test.js +0 -239
  79. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +0 -1
  80. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.d.ts +0 -6
  81. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +0 -37
  82. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +0 -1
  83. package/dist/src/ui/components/messages/ToolMessage.test.d.ts +0 -6
  84. package/dist/src/ui/components/messages/ToolMessage.test.js +0 -116
  85. package/dist/src/ui/components/messages/ToolMessage.test.js.map +0 -1
  86. package/dist/src/ui/components/shared/MaxSizedBox.test.d.ts +0 -6
  87. package/dist/src/ui/components/shared/MaxSizedBox.test.js +0 -134
  88. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +0 -1
  89. package/dist/src/ui/contexts/SessionContext.test.d.ts +0 -6
  90. package/dist/src/ui/contexts/SessionContext.test.js +0 -96
  91. package/dist/src/ui/contexts/SessionContext.test.js.map +0 -1
  92. package/dist/src/ui/hooks/useGeminiStream.test.d.ts +0 -6
  93. package/dist/src/ui/hooks/useGeminiStream.test.js +0 -838
  94. package/dist/src/ui/hooks/useGeminiStream.test.js.map +0 -1
  95. package/dist/src/ui/utils/MarkdownDisplay.test.d.ts +0 -6
  96. package/dist/src/ui/utils/MarkdownDisplay.test.js +0 -211
  97. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +0 -1
@@ -1,141 +0,0 @@
1
- import { jsx as _jsx } 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 { render } from 'ink-testing-library';
9
- import { Text } from 'ink';
10
- import { LoadingIndicator } from './LoadingIndicator.js';
11
- import { StreamingContext } from '../contexts/StreamingContext.js';
12
- import { StreamingState } from '../types.js';
13
- import { vi } from 'vitest';
14
- // Mock GeminiRespondingSpinner
15
- vi.mock('./GeminiRespondingSpinner.js', () => ({
16
- GeminiRespondingSpinner: ({ nonRespondingDisplay, }) => {
17
- const streamingState = React.useContext(StreamingContext);
18
- if (streamingState === StreamingState.Responding) {
19
- return _jsx(Text, { children: "MockRespondingSpinner" });
20
- }
21
- else if (nonRespondingDisplay) {
22
- return _jsx(Text, { children: nonRespondingDisplay });
23
- }
24
- return null;
25
- },
26
- }));
27
- const renderWithContext = (ui, streamingStateValue) => {
28
- const contextValue = streamingStateValue;
29
- return render(_jsx(StreamingContext.Provider, { value: contextValue, children: ui }));
30
- };
31
- describe('<LoadingIndicator />', () => {
32
- const defaultProps = {
33
- currentLoadingPhrase: 'Loading...',
34
- elapsedTime: 5,
35
- };
36
- it('should not render when streamingState is Idle', () => {
37
- const { lastFrame } = renderWithContext(_jsx(LoadingIndicator, { ...defaultProps }), StreamingState.Idle);
38
- expect(lastFrame()).toBe('');
39
- });
40
- it('should render spinner, phrase, and time when streamingState is Responding', () => {
41
- const { lastFrame } = renderWithContext(_jsx(LoadingIndicator, { ...defaultProps }), StreamingState.Responding);
42
- const output = lastFrame();
43
- expect(output).toContain('MockRespondingSpinner');
44
- expect(output).toContain('Loading...');
45
- expect(output).toContain('(esc to cancel, 5s)');
46
- });
47
- it('should render spinner (static), phrase but no time/cancel when streamingState is WaitingForConfirmation', () => {
48
- const props = {
49
- currentLoadingPhrase: 'Confirm action',
50
- elapsedTime: 10,
51
- };
52
- const { lastFrame } = renderWithContext(_jsx(LoadingIndicator, { ...props }), StreamingState.WaitingForConfirmation);
53
- const output = lastFrame();
54
- expect(output).toContain('⠏'); // Static char for WaitingForConfirmation
55
- expect(output).toContain('Confirm action');
56
- expect(output).not.toContain('(esc to cancel)');
57
- expect(output).not.toContain(', 10s');
58
- });
59
- it('should display the currentLoadingPhrase correctly', () => {
60
- const props = {
61
- currentLoadingPhrase: 'Processing data...',
62
- elapsedTime: 3,
63
- };
64
- const { lastFrame } = renderWithContext(_jsx(LoadingIndicator, { ...props }), StreamingState.Responding);
65
- expect(lastFrame()).toContain('Processing data...');
66
- });
67
- it('should display the elapsedTime correctly when Responding', () => {
68
- const props = {
69
- currentLoadingPhrase: 'Working...',
70
- elapsedTime: 8,
71
- };
72
- const { lastFrame } = renderWithContext(_jsx(LoadingIndicator, { ...props }), StreamingState.Responding);
73
- expect(lastFrame()).toContain('(esc to cancel, 8s)');
74
- });
75
- it('should render rightContent when provided', () => {
76
- const rightContent = _jsx(Text, { children: "Extra Info" });
77
- const { lastFrame } = renderWithContext(_jsx(LoadingIndicator, { ...defaultProps, rightContent: rightContent }), StreamingState.Responding);
78
- expect(lastFrame()).toContain('Extra Info');
79
- });
80
- it('should transition correctly between states using rerender', () => {
81
- const { lastFrame, rerender } = renderWithContext(_jsx(LoadingIndicator, { ...defaultProps }), StreamingState.Idle);
82
- expect(lastFrame()).toBe(''); // Initial: Idle
83
- // Transition to Responding
84
- rerender(_jsx(StreamingContext.Provider, { value: StreamingState.Responding, children: _jsx(LoadingIndicator, { currentLoadingPhrase: "Now Responding", elapsedTime: 2 }) }));
85
- let output = lastFrame();
86
- expect(output).toContain('MockRespondingSpinner');
87
- expect(output).toContain('Now Responding');
88
- expect(output).toContain('(esc to cancel, 2s)');
89
- // Transition to WaitingForConfirmation
90
- rerender(_jsx(StreamingContext.Provider, { value: StreamingState.WaitingForConfirmation, children: _jsx(LoadingIndicator, { currentLoadingPhrase: "Please Confirm", elapsedTime: 15 }) }));
91
- output = lastFrame();
92
- expect(output).toContain('⠏');
93
- expect(output).toContain('Please Confirm');
94
- expect(output).not.toContain('(esc to cancel)');
95
- expect(output).not.toContain(', 15s');
96
- // Transition back to Idle
97
- rerender(_jsx(StreamingContext.Provider, { value: StreamingState.Idle, children: _jsx(LoadingIndicator, { ...defaultProps }) }));
98
- expect(lastFrame()).toBe('');
99
- });
100
- it('should display fallback phrase if thought is empty', () => {
101
- const props = {
102
- thought: null,
103
- currentLoadingPhrase: 'Loading...',
104
- elapsedTime: 5,
105
- };
106
- const { lastFrame } = renderWithContext(_jsx(LoadingIndicator, { ...props }), StreamingState.Responding);
107
- const output = lastFrame();
108
- expect(output).toContain('Loading...');
109
- });
110
- it('should display the subject of a thought', () => {
111
- const props = {
112
- thought: {
113
- subject: 'Thinking about something...',
114
- description: 'and other stuff.',
115
- },
116
- elapsedTime: 5,
117
- };
118
- const { lastFrame } = renderWithContext(_jsx(LoadingIndicator, { ...props }), StreamingState.Responding);
119
- const output = lastFrame();
120
- expect(output).toBeDefined();
121
- if (output) {
122
- expect(output).toContain('Thinking about something...');
123
- expect(output).not.toContain('and other stuff.');
124
- }
125
- });
126
- it('should prioritize thought.subject over currentLoadingPhrase', () => {
127
- const props = {
128
- thought: {
129
- subject: 'This should be displayed',
130
- description: 'A description',
131
- },
132
- currentLoadingPhrase: 'This should not be displayed',
133
- elapsedTime: 5,
134
- };
135
- const { lastFrame } = renderWithContext(_jsx(LoadingIndicator, { ...props }), StreamingState.Responding);
136
- const output = lastFrame();
137
- expect(output).toContain('This should be displayed');
138
- expect(output).not.toContain('This should not be displayed');
139
- });
140
- });
141
- //# sourceMappingURL=LoadingIndicator.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LoadingIndicator.test.js","sourceRoot":"","sources":["../../../../src/ui/components/LoadingIndicator.test.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 {};
@@ -1,217 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- /**
3
- * @license
4
- * Copyright 2025 Google LLC
5
- * SPDX-License-Identifier: Apache-2.0
6
- */
7
- import { render } from 'ink-testing-library';
8
- import { describe, it, expect, vi } from 'vitest';
9
- import { ModelStatsDisplay } from './ModelStatsDisplay.js';
10
- import * as SessionContext from '../contexts/SessionContext.js';
11
- // Mock the context to provide controlled data for testing
12
- vi.mock('../contexts/SessionContext.js', async (importOriginal) => {
13
- const actual = await importOriginal();
14
- return {
15
- ...actual,
16
- useSessionStats: vi.fn(),
17
- };
18
- });
19
- const useSessionStatsMock = vi.mocked(SessionContext.useSessionStats);
20
- const renderWithMockedStats = (metrics) => {
21
- useSessionStatsMock.mockReturnValue({
22
- stats: {
23
- sessionStartTime: new Date(),
24
- metrics,
25
- lastPromptTokenCount: 0,
26
- },
27
- });
28
- return render(_jsx(ModelStatsDisplay, {}));
29
- };
30
- describe('<ModelStatsDisplay />', () => {
31
- it('should render "no API calls" message when there are no active models', () => {
32
- const { lastFrame } = renderWithMockedStats({
33
- models: {},
34
- tools: {
35
- totalCalls: 0,
36
- totalSuccess: 0,
37
- totalFail: 0,
38
- totalDurationMs: 0,
39
- totalDecisions: { accept: 0, reject: 0, modify: 0 },
40
- byName: {},
41
- },
42
- });
43
- expect(lastFrame()).toContain('No API calls have been made in this session.');
44
- expect(lastFrame()).toMatchSnapshot();
45
- });
46
- it('should not display conditional rows if no model has data for them', () => {
47
- const { lastFrame } = renderWithMockedStats({
48
- models: {
49
- 'gemini-2.5-pro': {
50
- api: { totalRequests: 1, totalErrors: 0, totalLatencyMs: 100 },
51
- tokens: {
52
- prompt: 10,
53
- candidates: 20,
54
- total: 30,
55
- cached: 0,
56
- thoughts: 0,
57
- tool: 0,
58
- },
59
- },
60
- },
61
- tools: {
62
- totalCalls: 0,
63
- totalSuccess: 0,
64
- totalFail: 0,
65
- totalDurationMs: 0,
66
- totalDecisions: { accept: 0, reject: 0, modify: 0 },
67
- byName: {},
68
- },
69
- });
70
- const output = lastFrame();
71
- expect(output).not.toContain('Cached');
72
- expect(output).not.toContain('Thoughts');
73
- expect(output).not.toContain('Tool');
74
- expect(output).toMatchSnapshot();
75
- });
76
- it('should display conditional rows if at least one model has data', () => {
77
- const { lastFrame } = renderWithMockedStats({
78
- models: {
79
- 'gemini-2.5-pro': {
80
- api: { totalRequests: 1, totalErrors: 0, totalLatencyMs: 100 },
81
- tokens: {
82
- prompt: 10,
83
- candidates: 20,
84
- total: 30,
85
- cached: 5,
86
- thoughts: 2,
87
- tool: 0,
88
- },
89
- },
90
- 'gemini-2.5-flash': {
91
- api: { totalRequests: 1, totalErrors: 0, totalLatencyMs: 50 },
92
- tokens: {
93
- prompt: 5,
94
- candidates: 10,
95
- total: 15,
96
- cached: 0,
97
- thoughts: 0,
98
- tool: 3,
99
- },
100
- },
101
- },
102
- tools: {
103
- totalCalls: 0,
104
- totalSuccess: 0,
105
- totalFail: 0,
106
- totalDurationMs: 0,
107
- totalDecisions: { accept: 0, reject: 0, modify: 0 },
108
- byName: {},
109
- },
110
- });
111
- const output = lastFrame();
112
- expect(output).toContain('Cached');
113
- expect(output).toContain('Thoughts');
114
- expect(output).toContain('Tool');
115
- expect(output).toMatchSnapshot();
116
- });
117
- it('should display stats for multiple models correctly', () => {
118
- const { lastFrame } = renderWithMockedStats({
119
- models: {
120
- 'gemini-2.5-pro': {
121
- api: { totalRequests: 10, totalErrors: 1, totalLatencyMs: 1000 },
122
- tokens: {
123
- prompt: 100,
124
- candidates: 200,
125
- total: 300,
126
- cached: 50,
127
- thoughts: 10,
128
- tool: 5,
129
- },
130
- },
131
- 'gemini-2.5-flash': {
132
- api: { totalRequests: 20, totalErrors: 2, totalLatencyMs: 500 },
133
- tokens: {
134
- prompt: 200,
135
- candidates: 400,
136
- total: 600,
137
- cached: 100,
138
- thoughts: 20,
139
- tool: 10,
140
- },
141
- },
142
- },
143
- tools: {
144
- totalCalls: 0,
145
- totalSuccess: 0,
146
- totalFail: 0,
147
- totalDurationMs: 0,
148
- totalDecisions: { accept: 0, reject: 0, modify: 0 },
149
- byName: {},
150
- },
151
- });
152
- const output = lastFrame();
153
- expect(output).toContain('gemini-2.5-pro');
154
- expect(output).toContain('gemini-2.5-flash');
155
- expect(output).toMatchSnapshot();
156
- });
157
- it('should handle large values without wrapping or overlapping', () => {
158
- const { lastFrame } = renderWithMockedStats({
159
- models: {
160
- 'gemini-2.5-pro': {
161
- api: {
162
- totalRequests: 999999999,
163
- totalErrors: 123456789,
164
- totalLatencyMs: 9876,
165
- },
166
- tokens: {
167
- prompt: 987654321,
168
- candidates: 123456789,
169
- total: 999999999,
170
- cached: 123456789,
171
- thoughts: 111111111,
172
- tool: 222222222,
173
- },
174
- },
175
- },
176
- tools: {
177
- totalCalls: 0,
178
- totalSuccess: 0,
179
- totalFail: 0,
180
- totalDurationMs: 0,
181
- totalDecisions: { accept: 0, reject: 0, modify: 0 },
182
- byName: {},
183
- },
184
- });
185
- expect(lastFrame()).toMatchSnapshot();
186
- });
187
- it('should display a single model correctly', () => {
188
- const { lastFrame } = renderWithMockedStats({
189
- models: {
190
- 'gemini-2.5-pro': {
191
- api: { totalRequests: 1, totalErrors: 0, totalLatencyMs: 100 },
192
- tokens: {
193
- prompt: 10,
194
- candidates: 20,
195
- total: 30,
196
- cached: 5,
197
- thoughts: 2,
198
- tool: 1,
199
- },
200
- },
201
- },
202
- tools: {
203
- totalCalls: 0,
204
- totalSuccess: 0,
205
- totalFail: 0,
206
- totalDurationMs: 0,
207
- totalDecisions: { accept: 0, reject: 0, modify: 0 },
208
- byName: {},
209
- },
210
- });
211
- const output = lastFrame();
212
- expect(output).toContain('gemini-2.5-pro');
213
- expect(output).not.toContain('gemini-2.5-flash');
214
- expect(output).toMatchSnapshot();
215
- });
216
- });
217
- //# sourceMappingURL=ModelStatsDisplay.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModelStatsDisplay.test.js","sourceRoot":"","sources":["../../../../src/ui/components/ModelStatsDisplay.test.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 {};
@@ -1,60 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- /**
3
- * @license
4
- * Copyright 2025 Google LLC
5
- * SPDX-License-Identifier: Apache-2.0
6
- */
7
- import { render } from 'ink-testing-library';
8
- import { describe, it, expect, vi } from 'vitest';
9
- import { SessionSummaryDisplay } from './SessionSummaryDisplay.js';
10
- import * as SessionContext from '../contexts/SessionContext.js';
11
- vi.mock('../contexts/SessionContext.js', async (importOriginal) => {
12
- const actual = await importOriginal();
13
- return {
14
- ...actual,
15
- useSessionStats: vi.fn(),
16
- };
17
- });
18
- const useSessionStatsMock = vi.mocked(SessionContext.useSessionStats);
19
- const renderWithMockedStats = (metrics) => {
20
- useSessionStatsMock.mockReturnValue({
21
- stats: {
22
- sessionStartTime: new Date(),
23
- metrics,
24
- lastPromptTokenCount: 0,
25
- },
26
- });
27
- return render(_jsx(SessionSummaryDisplay, { duration: "1h 23m 45s" }));
28
- };
29
- describe('<SessionSummaryDisplay />', () => {
30
- it('renders the summary display with a title', () => {
31
- const metrics = {
32
- models: {
33
- 'gemini-2.5-pro': {
34
- api: { totalRequests: 10, totalErrors: 1, totalLatencyMs: 50234 },
35
- tokens: {
36
- prompt: 1000,
37
- candidates: 2000,
38
- total: 3500,
39
- cached: 500,
40
- thoughts: 300,
41
- tool: 200,
42
- },
43
- },
44
- },
45
- tools: {
46
- totalCalls: 0,
47
- totalSuccess: 0,
48
- totalFail: 0,
49
- totalDurationMs: 0,
50
- totalDecisions: { accept: 0, reject: 0, modify: 0 },
51
- byName: {},
52
- },
53
- };
54
- const { lastFrame } = renderWithMockedStats(metrics);
55
- const output = lastFrame();
56
- expect(output).toContain('Agent powering down. Goodbye!');
57
- expect(output).toMatchSnapshot();
58
- });
59
- });
60
- //# sourceMappingURL=SessionSummaryDisplay.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SessionSummaryDisplay.test.js","sourceRoot":"","sources":["../../../../src/ui/components/SessionSummaryDisplay.test.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,cAAc,MAAM,+BAA+B,CAAC;AAGhE,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;IAChE,MAAM,MAAM,GAAG,MAAM,cAAc,EAAyB,CAAC;IAC7D,OAAO;QACL,GAAG,MAAM;QACT,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE;KACzB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;AAEtE,MAAM,qBAAqB,GAAG,CAAC,OAAuB,EAAE,EAAE;IACxD,mBAAmB,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE;YACL,gBAAgB,EAAE,IAAI,IAAI,EAAE;YAC5B,OAAO;YACP,oBAAoB,EAAE,CAAC;SACxB;KACF,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,KAAC,qBAAqB,IAAC,QAAQ,EAAC,YAAY,GAAG,CAAC,CAAC;AACjE,CAAC,CAAC;AAEF,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,OAAO,GAAmB;YAC9B,MAAM,EAAE;gBACN,gBAAgB,EAAE;oBAChB,GAAG,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE;oBACjE,MAAM,EAAE;wBACN,MAAM,EAAE,IAAI;wBACZ,UAAU,EAAE,IAAI;wBAChB,KAAK,EAAE,IAAI;wBACX,MAAM,EAAE,GAAG;wBACX,QAAQ,EAAE,GAAG;wBACb,IAAI,EAAE,GAAG;qBACV;iBACF;aACF;YACD,KAAK,EAAE;gBACL,UAAU,EAAE,CAAC;gBACb,YAAY,EAAE,CAAC;gBACf,SAAS,EAAE,CAAC;gBACZ,eAAe,EAAE,CAAC;gBAClB,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;gBACnD,MAAM,EAAE,EAAE;aACX;SACF,CAAC;QAEF,MAAM,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};