@vybestack/llxprt-code 0.1.18-nightly.250808.f9b79d74 → 0.1.18-nightly.250811.b0db22c6

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 (194) hide show
  1. package/dist/package.json +5 -3
  2. package/dist/src/auth/gemini-oauth-provider.d.ts +15 -0
  3. package/dist/src/auth/gemini-oauth-provider.js +33 -0
  4. package/dist/src/auth/gemini-oauth-provider.js.map +1 -0
  5. package/dist/src/auth/oauth-manager.d.ts +103 -0
  6. package/dist/src/auth/oauth-manager.js +326 -0
  7. package/dist/src/auth/oauth-manager.js.map +1 -0
  8. package/dist/src/auth/oauth-manager.spec.d.ts +6 -0
  9. package/dist/src/auth/oauth-manager.spec.js +523 -0
  10. package/dist/src/auth/oauth-manager.spec.js.map +1 -0
  11. package/dist/src/auth/qwen-oauth-provider.d.ts +14 -0
  12. package/dist/src/auth/qwen-oauth-provider.js +75 -0
  13. package/dist/src/auth/qwen-oauth-provider.js.map +1 -0
  14. package/dist/src/auth/types.d.ts +7 -0
  15. package/dist/src/auth/types.js +7 -0
  16. package/dist/src/auth/types.js.map +1 -0
  17. package/dist/src/config/auth.js +9 -0
  18. package/dist/src/config/auth.js.map +1 -1
  19. package/dist/src/config/config.js +93 -43
  20. package/dist/src/config/config.js.map +1 -1
  21. package/dist/src/config/keyBindings.d.ts +66 -0
  22. package/dist/src/config/keyBindings.js +136 -0
  23. package/dist/src/config/keyBindings.js.map +1 -0
  24. package/dist/src/config/settings.d.ts +3 -59
  25. package/dist/src/config/settings.js +17 -1
  26. package/dist/src/config/settings.js.map +1 -1
  27. package/dist/src/config/settingsSchema.d.ts +587 -0
  28. package/dist/src/config/settingsSchema.js +565 -0
  29. package/dist/src/config/settingsSchema.js.map +1 -0
  30. package/dist/src/gemini.js +12 -109
  31. package/dist/src/gemini.js.map +1 -1
  32. package/dist/src/generated/git-commit.d.ts +1 -1
  33. package/dist/src/generated/git-commit.js +1 -1
  34. package/dist/src/nonInteractiveCli.js +0 -1
  35. package/dist/src/nonInteractiveCli.js.map +1 -1
  36. package/dist/src/providers/logging/git-stats-service-impl.d.ts +19 -0
  37. package/dist/src/providers/logging/git-stats-service-impl.js +25 -0
  38. package/dist/src/providers/logging/git-stats-service-impl.js.map +1 -0
  39. package/dist/src/providers/logging/git-stats.d.ts +43 -0
  40. package/dist/src/providers/logging/git-stats.js +137 -0
  41. package/dist/src/providers/logging/git-stats.js.map +1 -0
  42. package/dist/src/providers/providerManagerInstance.js +39 -4
  43. package/dist/src/providers/providerManagerInstance.js.map +1 -1
  44. package/dist/src/services/BuiltinCommandLoader.js +4 -0
  45. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  46. package/dist/src/services/todo-continuation/todoContinuationService.d.ts +172 -0
  47. package/dist/src/services/todo-continuation/todoContinuationService.js +387 -0
  48. package/dist/src/services/todo-continuation/todoContinuationService.js.map +1 -0
  49. package/dist/src/services/todo-continuation/todoContinuationService.spec.d.ts +6 -0
  50. package/dist/src/services/todo-continuation/todoContinuationService.spec.js +385 -0
  51. package/dist/src/services/todo-continuation/todoContinuationService.spec.js.map +1 -0
  52. package/dist/src/ui/App.js +76 -26
  53. package/dist/src/ui/App.js.map +1 -1
  54. package/dist/src/ui/colors.d.ts +5 -0
  55. package/dist/src/ui/colors.js +51 -0
  56. package/dist/src/ui/colors.js.map +1 -1
  57. package/dist/src/ui/commands/authCommand.d.ts +11 -1
  58. package/dist/src/ui/commands/authCommand.js +143 -48
  59. package/dist/src/ui/commands/authCommand.js.map +1 -1
  60. package/dist/src/ui/commands/chatCommand.js +16 -0
  61. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  62. package/dist/src/ui/commands/ideCommand.js +67 -31
  63. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  64. package/dist/src/ui/commands/keyfileCommand.js +15 -12
  65. package/dist/src/ui/commands/keyfileCommand.js.map +1 -1
  66. package/dist/src/ui/commands/loggingCommand.d.ts +15 -0
  67. package/dist/src/ui/commands/loggingCommand.js +421 -0
  68. package/dist/src/ui/commands/loggingCommand.js.map +1 -0
  69. package/dist/src/ui/commands/privacyCommand.d.ts +3 -0
  70. package/dist/src/ui/commands/privacyCommand.js +6 -3
  71. package/dist/src/ui/commands/privacyCommand.js.map +1 -1
  72. package/dist/src/ui/commands/settingsCommand.d.ts +7 -0
  73. package/dist/src/ui/commands/settingsCommand.js +16 -0
  74. package/dist/src/ui/commands/settingsCommand.js.map +1 -0
  75. package/dist/src/ui/commands/setupGithubCommand.js +21 -2
  76. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  77. package/dist/src/ui/commands/types.d.ts +14 -2
  78. package/dist/src/ui/commands/types.js.map +1 -1
  79. package/dist/src/ui/components/AuthDialog.js +13 -56
  80. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  81. package/dist/src/ui/components/AuthInProgress.js +3 -3
  82. package/dist/src/ui/components/AuthInProgress.js.map +1 -1
  83. package/dist/src/ui/components/ContextUsageDisplay.d.ts +10 -0
  84. package/dist/src/ui/components/ContextUsageDisplay.js +27 -0
  85. package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -0
  86. package/dist/src/ui/components/FolderTrustDialog.d.ts +16 -0
  87. package/dist/src/ui/components/FolderTrustDialog.js +38 -0
  88. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -0
  89. package/dist/src/ui/components/Footer.js +132 -15
  90. package/dist/src/ui/components/Footer.js.map +1 -1
  91. package/dist/src/ui/components/InputPrompt.d.ts +1 -0
  92. package/dist/src/ui/components/InputPrompt.js +87 -31
  93. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  94. package/dist/src/ui/components/LoggingDialog.d.ts +37 -0
  95. package/dist/src/ui/components/LoggingDialog.js +155 -0
  96. package/dist/src/ui/components/LoggingDialog.js.map +1 -0
  97. package/dist/src/ui/components/MemoryUsageDisplay.js +6 -4
  98. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
  99. package/dist/src/ui/components/ProviderDialog.js +100 -26
  100. package/dist/src/ui/components/ProviderDialog.js.map +1 -1
  101. package/dist/src/ui/components/ProviderModelDialog.js +99 -27
  102. package/dist/src/ui/components/ProviderModelDialog.js.map +1 -1
  103. package/dist/src/ui/components/SettingsDialog.d.ts +14 -0
  104. package/dist/src/ui/components/SettingsDialog.js +247 -0
  105. package/dist/src/ui/components/SettingsDialog.js.map +1 -0
  106. package/dist/src/ui/components/ThemeDialog.js +4 -15
  107. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  108. package/dist/src/ui/components/TodoPanel.js +93 -18
  109. package/dist/src/ui/components/TodoPanel.js.map +1 -1
  110. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +85 -7
  111. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  112. package/dist/src/ui/contexts/SettingsContext.d.ts +9 -0
  113. package/dist/src/ui/contexts/SettingsContext.js +15 -0
  114. package/dist/src/ui/contexts/SettingsContext.js.map +1 -0
  115. package/dist/src/ui/hooks/atCommandProcessor.js +21 -0
  116. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  117. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +6 -2
  118. package/dist/src/ui/hooks/slashCommandProcessor.js +142 -113
  119. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  120. package/dist/src/ui/hooks/useAtCompletion.js +1 -1
  121. package/dist/src/ui/hooks/useAuthCommand.js +14 -0
  122. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
  123. package/dist/src/ui/hooks/useConsoleMessages.js +7 -0
  124. package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -1
  125. package/dist/src/ui/hooks/useFolderTrust.d.ts +11 -0
  126. package/dist/src/ui/hooks/useFolderTrust.js +22 -0
  127. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -0
  128. package/dist/src/ui/hooks/useGeminiStream.js +14 -3
  129. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  130. package/dist/src/ui/hooks/useResponsive.d.ts +14 -0
  131. package/dist/src/ui/hooks/useResponsive.js +19 -0
  132. package/dist/src/ui/hooks/useResponsive.js.map +1 -0
  133. package/dist/src/ui/hooks/useSettingsCommand.d.ts +10 -0
  134. package/dist/src/ui/hooks/useSettingsCommand.js +21 -0
  135. package/dist/src/ui/hooks/useSettingsCommand.js.map +1 -0
  136. package/dist/src/ui/hooks/useTodoContinuation.d.ts +31 -0
  137. package/dist/src/ui/hooks/useTodoContinuation.js +148 -0
  138. package/dist/src/ui/hooks/useTodoContinuation.js.map +1 -0
  139. package/dist/src/ui/hooks/useTodoContinuation.spec.d.ts +6 -0
  140. package/dist/src/ui/hooks/useTodoContinuation.spec.js +378 -0
  141. package/dist/src/ui/hooks/useTodoContinuation.spec.js.map +1 -0
  142. package/dist/src/ui/keyMatchers.d.ts +26 -0
  143. package/dist/src/ui/keyMatchers.js +68 -0
  144. package/dist/src/ui/keyMatchers.js.map +1 -0
  145. package/dist/src/ui/privacy/PrivacyNotice.js +10 -4
  146. package/dist/src/ui/privacy/PrivacyNotice.js.map +1 -1
  147. package/dist/src/ui/themes/semantic-resolver.d.ts +12 -0
  148. package/dist/src/ui/themes/semantic-resolver.js +32 -0
  149. package/dist/src/ui/themes/semantic-resolver.js.map +1 -0
  150. package/dist/src/ui/themes/semantic-tokens.d.ts +52 -0
  151. package/dist/src/ui/themes/semantic-tokens.js +7 -0
  152. package/dist/src/ui/themes/semantic-tokens.js.map +1 -0
  153. package/dist/src/ui/themes/theme-compat.d.ts +34 -0
  154. package/dist/src/ui/themes/theme-compat.js +65 -0
  155. package/dist/src/ui/themes/theme-compat.js.map +1 -0
  156. package/dist/src/ui/themes/theme-manager.d.ts +8 -0
  157. package/dist/src/ui/themes/theme-manager.js +18 -0
  158. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  159. package/dist/src/ui/utils/CodeColorizer.d.ts +2 -1
  160. package/dist/src/ui/utils/CodeColorizer.js +4 -3
  161. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  162. package/dist/src/ui/utils/MarkdownDisplay.js +4 -2
  163. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  164. package/dist/src/ui/utils/commandUtils.d.ts +1 -0
  165. package/dist/src/ui/utils/commandUtils.js +22 -1
  166. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  167. package/dist/src/ui/utils/responsive.d.ts +16 -0
  168. package/dist/src/ui/utils/responsive.js +111 -0
  169. package/dist/src/ui/utils/responsive.js.map +1 -0
  170. package/dist/src/utils/cleanup.d.ts +2 -2
  171. package/dist/src/utils/cleanup.js +2 -2
  172. package/dist/src/utils/cleanup.js.map +1 -1
  173. package/dist/src/utils/dialogScopeUtils.d.ts +31 -0
  174. package/dist/src/utils/dialogScopeUtils.js +48 -0
  175. package/dist/src/utils/dialogScopeUtils.js.map +1 -0
  176. package/dist/src/utils/gitUtils.d.ts +9 -0
  177. package/dist/src/utils/gitUtils.js +17 -0
  178. package/dist/src/utils/gitUtils.js.map +1 -1
  179. package/dist/src/utils/privacy/ConversationDataRedactor.d.ts +75 -0
  180. package/dist/src/utils/privacy/ConversationDataRedactor.js +412 -0
  181. package/dist/src/utils/privacy/ConversationDataRedactor.js.map +1 -0
  182. package/dist/src/utils/privacy/PrivacyManager.d.ts +58 -0
  183. package/dist/src/utils/privacy/PrivacyManager.js +133 -0
  184. package/dist/src/utils/privacy/PrivacyManager.js.map +1 -0
  185. package/dist/src/utils/sandbox.js +10 -0
  186. package/dist/src/utils/sandbox.js.map +1 -1
  187. package/dist/src/utils/settingsUtils.d.ts +126 -0
  188. package/dist/src/utils/settingsUtils.js +327 -0
  189. package/dist/src/utils/settingsUtils.js.map +1 -0
  190. package/dist/tsconfig.tsbuildinfo +1 -1
  191. package/package.json +5 -3
  192. package/dist/src/ui/components/IDEContextDetailDisplay.d.ts +0 -12
  193. package/dist/src/ui/components/IDEContextDetailDisplay.js +0 -17
  194. package/dist/src/ui/components/IDEContextDetailDisplay.js.map +0 -1
@@ -10,8 +10,7 @@ import { Colors } from '../colors.js';
10
10
  import { RadioButtonSelect } from './shared/RadioButtonSelect.js';
11
11
  import { SettingScope } from '../../config/settings.js';
12
12
  import { AuthType } from '@vybestack/llxprt-code-core';
13
- import { validateAuthMethod } from '../../config/auth.js';
14
- function parseDefaultAuthType(defaultAuthType) {
13
+ function _parseDefaultAuthType(defaultAuthType) {
15
14
  if (defaultAuthType &&
16
15
  Object.values(AuthType).includes(defaultAuthType)) {
17
16
  return defaultAuthType;
@@ -19,68 +18,26 @@ function parseDefaultAuthType(defaultAuthType) {
19
18
  return null;
20
19
  }
21
20
  export function AuthDialog({ onSelect, settings, initialErrorMessage, }) {
22
- const [errorMessage, setErrorMessage] = useState(() => {
23
- if (initialErrorMessage) {
24
- return initialErrorMessage;
25
- }
26
- const defaultAuthType = parseDefaultAuthType(process.env.GEMINI_DEFAULT_AUTH_TYPE);
27
- if (process.env.GEMINI_DEFAULT_AUTH_TYPE && defaultAuthType === null) {
28
- return (`Invalid value for GEMINI_DEFAULT_AUTH_TYPE: "${process.env.GEMINI_DEFAULT_AUTH_TYPE}". ` +
29
- `Valid values are: ${Object.values(AuthType).join(', ')}.`);
30
- }
31
- if (process.env.GEMINI_API_KEY &&
32
- (!defaultAuthType || defaultAuthType === AuthType.USE_GEMINI)) {
33
- return 'Existing API key detected (GEMINI_API_KEY). Select "Gemini API Key" option to use it.';
34
- }
35
- return null;
36
- });
21
+ const [errorMessage, setErrorMessage] = useState(initialErrorMessage || null);
37
22
  const items = [
38
23
  {
39
- label: 'Login with Google',
40
- value: AuthType.LOGIN_WITH_GOOGLE,
41
- },
42
- ...(process.env.CLOUD_SHELL === 'true'
43
- ? [
44
- {
45
- label: 'Use Cloud Shell user credentials',
46
- value: AuthType.CLOUD_SHELL,
47
- },
48
- ]
49
- : []),
50
- {
51
- label: 'Gemini API Key (AI Studio)',
52
- value: AuthType.USE_GEMINI,
24
+ label: 'Gemini (Google OAuth)',
25
+ value: 'oauth_gemini',
53
26
  },
54
- { label: 'Vertex AI', value: AuthType.USE_VERTEX_AI },
55
27
  {
56
- label: 'None (use environment variables or keyfile)',
57
- value: AuthType.USE_NONE,
28
+ label: 'Qwen (OAuth)',
29
+ value: 'oauth_qwen',
58
30
  },
59
31
  ];
60
- const initialAuthIndex = items.findIndex((item) => {
61
- if (settings.merged.selectedAuthType) {
62
- return item.value === settings.merged.selectedAuthType;
63
- }
64
- const defaultAuthType = parseDefaultAuthType(process.env.GEMINI_DEFAULT_AUTH_TYPE);
65
- if (defaultAuthType) {
66
- return item.value === defaultAuthType;
67
- }
68
- if (process.env.GEMINI_API_KEY) {
69
- return item.value === AuthType.USE_GEMINI;
70
- }
71
- return item.value === AuthType.LOGIN_WITH_GOOGLE;
72
- });
32
+ // Default to first item (Gemini OAuth)
33
+ const initialAuthIndex = 0;
73
34
  // Ensure we have a valid initial index (default to 0 if not found)
74
35
  const safeInitialIndex = initialAuthIndex >= 0 ? initialAuthIndex : 0;
75
36
  const handleAuthSelect = useCallback((authMethod) => {
76
- const error = validateAuthMethod(authMethod);
77
- if (error) {
78
- setErrorMessage(error);
79
- }
80
- else {
81
- setErrorMessage(null);
82
- onSelect(authMethod, SettingScope.User);
83
- }
37
+ // For OAuth providers, we don't need the old validation
38
+ // Just pass the selection to the handler
39
+ setErrorMessage(null);
40
+ onSelect(authMethod, SettingScope.User);
84
41
  }, [onSelect]);
85
42
  useInput((_input, key) => {
86
43
  if (key.escape) {
@@ -97,6 +54,6 @@ export function AuthDialog({ onSelect, settings, initialErrorMessage, }) {
97
54
  onSelect(undefined, SettingScope.User);
98
55
  }
99
56
  });
100
- return (_jsxs(Box, { borderStyle: "round", borderColor: Colors.Gray, flexDirection: "column", padding: 1, width: "100%", children: [_jsx(Text, { bold: true, children: "Get started" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { children: "How would you like to authenticate for this project?" }) }), _jsx(Box, { marginTop: 1, children: _jsx(RadioButtonSelect, { items: items, initialIndex: safeInitialIndex, onSelect: handleAuthSelect, isFocused: true }) }), errorMessage && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.AccentRed, children: errorMessage }) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.Gray, children: "(Use Enter to select)" }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { children: "Terms of Services and Privacy Notice for Gemini CLI" }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.AccentBlue, children: 'https://github.com/acoliver/llxprt-code/blob/main/docs/tos-privacy.md' }) })] }));
57
+ return (_jsxs(Box, { borderStyle: "round", borderColor: Colors.Gray, flexDirection: "column", padding: 1, width: "100%", children: [_jsx(Text, { bold: true, children: "OAuth Authentication" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { children: "Select an OAuth provider to authenticate:" }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Note: You can also use API keys via /key, /keyfile, --key, --keyfile, or environment variables" }) }), _jsx(Box, { marginTop: 1, children: _jsx(RadioButtonSelect, { items: items, initialIndex: safeInitialIndex, onSelect: handleAuthSelect, isFocused: true }) }), errorMessage && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.AccentRed, children: errorMessage }) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.Gray, children: "(Use Enter to select)" }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { children: "Terms of Services and Privacy Notice for Gemini CLI" }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: Colors.AccentBlue, children: 'https://github.com/acoliver/llxprt-code/blob/main/docs/tos-privacy.md' }) })] }));
101
58
  }
102
59
  //# sourceMappingURL=AuthDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthDialog.js","sourceRoot":"","sources":["../../../../src/ui/components/AuthDialog.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AuthDialog.js","sourceRoot":"","sources":["../../../../src/ui/components/AuthDialog.tsx"],"names":[],"mappings":"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"}
@@ -10,8 +10,8 @@ import Spinner from 'ink-spinner';
10
10
  import { Colors } from '../colors.js';
11
11
  export function AuthInProgress({ onTimeout, }) {
12
12
  const [timedOut, setTimedOut] = useState(false);
13
- useInput((_, key) => {
14
- if (key.escape) {
13
+ useInput((input, key) => {
14
+ if (key.escape || (key.ctrl && (input === 'c' || input === 'C'))) {
15
15
  onTimeout();
16
16
  }
17
17
  });
@@ -22,6 +22,6 @@ export function AuthInProgress({ onTimeout, }) {
22
22
  }, 180000);
23
23
  return () => clearTimeout(timer);
24
24
  }, [onTimeout]);
25
- return (_jsx(Box, { borderStyle: "round", borderColor: Colors.Gray, flexDirection: "column", padding: 1, width: "100%", children: timedOut ? (_jsx(Text, { color: Colors.AccentRed, children: "Authentication timed out. Please try again." })) : (_jsx(Box, { children: _jsxs(Text, { color: Colors.Foreground, children: [_jsx(Spinner, { type: "dots" }), " Waiting for auth... (Press ESC to cancel)"] }) })) }));
25
+ return (_jsx(Box, { borderStyle: "round", borderColor: Colors.Gray, flexDirection: "column", padding: 1, width: "100%", children: timedOut ? (_jsx(Text, { color: Colors.AccentRed, children: "Authentication timed out. Please try again." })) : (_jsx(Box, { children: _jsxs(Text, { color: Colors.Foreground, children: [_jsx(Spinner, { type: "dots" }), " Waiting for auth... (Press ESC or CTRL+C to cancel)"] }) })) }));
26
26
  }
27
27
  //# sourceMappingURL=AuthInProgress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthInProgress.js","sourceRoot":"","sources":["../../../../src/ui/components/AuthInProgress.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAMtC,MAAM,UAAU,cAAc,CAAC,EAC7B,SAAS,GACW;IACpB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QAClB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,SAAS,EAAE,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,WAAW,CAAC,IAAI,CAAC,CAAC;YAClB,SAAS,EAAE,CAAC;QACd,CAAC,EAAE,MAAM,CAAC,CAAC;QAEX,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,CACL,KAAC,GAAG,IACF,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,MAAM,CAAC,IAAI,EACxB,aAAa,EAAC,QAAQ,EACtB,OAAO,EAAE,CAAC,EACV,KAAK,EAAC,MAAM,YAEX,QAAQ,CAAC,CAAC,CAAC,CACV,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,4DAEtB,CACR,CAAC,CAAC,CAAC,CACF,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,aAC5B,KAAC,OAAO,IAAC,IAAI,EAAC,MAAM,GAAG,kDAClB,GACH,CACP,GACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"AuthInProgress.js","sourceRoot":"","sources":["../../../../src/ui/components/AuthInProgress.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAMtC,MAAM,UAAU,cAAc,CAAC,EAC7B,SAAS,GACW;IACpB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YACjE,SAAS,EAAE,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,WAAW,CAAC,IAAI,CAAC,CAAC;YAClB,SAAS,EAAE,CAAC;QACd,CAAC,EAAE,MAAM,CAAC,CAAC;QAEX,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,CACL,KAAC,GAAG,IACF,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,MAAM,CAAC,IAAI,EACxB,aAAa,EAAC,QAAQ,EACtB,OAAO,EAAE,CAAC,EACV,KAAK,EAAC,MAAM,YAEX,QAAQ,CAAC,CAAC,CAAC,CACV,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,4DAEtB,CACR,CAAC,CAAC,CAAC,CACF,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,aAC5B,KAAC,OAAO,IAAC,IAAI,EAAC,MAAM,GAAG,4DAElB,GACH,CACP,GACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export declare const ContextUsageDisplay: ({ promptTokenCount, model, contextLimit, }: {
7
+ promptTokenCount: number;
8
+ model: string;
9
+ contextLimit?: number;
10
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,27 @@
1
+ import { jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { Text } from 'ink';
8
+ import { SemanticColors } from '../colors.js';
9
+ import { tokenLimit } from '@vybestack/llxprt-code-core';
10
+ export const ContextUsageDisplay = ({ promptTokenCount, model, contextLimit, }) => {
11
+ const limit = tokenLimit(model, contextLimit);
12
+ const percentage = promptTokenCount / limit;
13
+ const remainingPercentage = (1 - percentage) * 100;
14
+ // Use semantic colors based on how much context is left
15
+ let color;
16
+ if (remainingPercentage < 10) {
17
+ color = SemanticColors.status.error; // Very low context
18
+ }
19
+ else if (remainingPercentage < 25) {
20
+ color = SemanticColors.status.warning; // Low context
21
+ }
22
+ else {
23
+ color = SemanticColors.text.secondary; // Normal context
24
+ }
25
+ return (_jsxs(Text, { color: color, children: ["(", remainingPercentage.toFixed(0), "% context left)"] }));
26
+ };
27
+ //# sourceMappingURL=ContextUsageDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextUsageDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/ContextUsageDisplay.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAClC,gBAAgB,EAChB,KAAK,EACL,YAAY,GAKb,EAAE,EAAE;IACH,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,gBAAgB,GAAG,KAAK,CAAC;IAC5C,MAAM,mBAAmB,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC;IAEnD,wDAAwD;IACxD,IAAI,KAAa,CAAC;IAClB,IAAI,mBAAmB,GAAG,EAAE,EAAE,CAAC;QAC7B,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,mBAAmB;IAC1D,CAAC;SAAM,IAAI,mBAAmB,GAAG,EAAE,EAAE,CAAC;QACpC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc;IACvD,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,iBAAiB;IAC1D,CAAC;IAED,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,kBAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAC5E,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ export declare enum FolderTrustChoice {
8
+ TRUST_FOLDER = "trust_folder",
9
+ TRUST_PARENT = "trust_parent",
10
+ DO_NOT_TRUST = "do_not_trust"
11
+ }
12
+ interface FolderTrustDialogProps {
13
+ onSelect: (choice: FolderTrustChoice) => void;
14
+ }
15
+ export declare const FolderTrustDialog: React.FC<FolderTrustDialogProps>;
16
+ export {};
@@ -0,0 +1,38 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { Box, Text, useInput } from 'ink';
8
+ import { Colors } from '../colors.js';
9
+ import { RadioButtonSelect, } from './shared/RadioButtonSelect.js';
10
+ export var FolderTrustChoice;
11
+ (function (FolderTrustChoice) {
12
+ FolderTrustChoice["TRUST_FOLDER"] = "trust_folder";
13
+ FolderTrustChoice["TRUST_PARENT"] = "trust_parent";
14
+ FolderTrustChoice["DO_NOT_TRUST"] = "do_not_trust";
15
+ })(FolderTrustChoice || (FolderTrustChoice = {}));
16
+ export const FolderTrustDialog = ({ onSelect, }) => {
17
+ useInput((_, key) => {
18
+ if (key.escape) {
19
+ onSelect(FolderTrustChoice.DO_NOT_TRUST);
20
+ }
21
+ });
22
+ const options = [
23
+ {
24
+ label: 'Trust folder',
25
+ value: FolderTrustChoice.TRUST_FOLDER,
26
+ },
27
+ {
28
+ label: 'Trust parent folder',
29
+ value: FolderTrustChoice.TRUST_PARENT,
30
+ },
31
+ {
32
+ label: "Don't trust (esc)",
33
+ value: FolderTrustChoice.DO_NOT_TRUST,
34
+ },
35
+ ];
36
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: Colors.AccentYellow, padding: 1, width: "100%", marginLeft: 1, children: [_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, children: "Do you trust this folder?" }), _jsx(Text, { children: "Trusting a folder allows Gemini to execute commands it suggests. This is a security feature to prevent accidental execution in untrusted directories." })] }), _jsx(RadioButtonSelect, { items: options, onSelect: onSelect, isFocused: true })] }));
37
+ };
38
+ //# sourceMappingURL=FolderTrustDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FolderTrustDialog.js","sourceRoot":"","sources":["../../../../src/ui/components/FolderTrustDialog.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,iBAAiB,GAElB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;AAC/B,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAMD,MAAM,CAAC,MAAM,iBAAiB,GAAqC,CAAC,EAClE,QAAQ,GACT,EAAE,EAAE;IACH,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QAClB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAA8C;QACzD;YACE,KAAK,EAAE,cAAc;YACrB,KAAK,EAAE,iBAAiB,CAAC,YAAY;SACtC;QACD;YACE,KAAK,EAAE,qBAAqB;YAC5B,KAAK,EAAE,iBAAiB,CAAC,YAAY;SACtC;QACD;YACE,KAAK,EAAE,mBAAmB;YAC1B,KAAK,EAAE,iBAAiB,CAAC,YAAY;SACtC;KACF,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,MAAM,CAAC,YAAY,EAChC,OAAO,EAAE,CAAC,EACV,KAAK,EAAC,MAAM,EACZ,UAAU,EAAE,CAAC,aAEb,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,KAAC,IAAI,IAAC,IAAI,gDAAiC,EAC3C,KAAC,IAAI,wKAIE,IACH,EAEN,KAAC,iBAAiB,IAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,SAAG,IAC/D,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -1,26 +1,143 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
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 { useEffect, useState } from 'react';
2
8
  import { Box, Text } from 'ink';
3
- import { Colors } from '../colors.js';
9
+ import { Colors, SemanticColors } from '../colors.js';
4
10
  import { shortenPath, tildeifyPath, tokenLimit, } from '@vybestack/llxprt-code-core';
5
11
  import { ConsoleSummaryDisplay } from './ConsoleSummaryDisplay.js';
6
12
  import process from 'node:process';
7
13
  import Gradient from 'ink-gradient';
8
- import { MemoryUsageDisplay } from './MemoryUsageDisplay.js';
9
14
  import { getProviderManager } from '../../providers/providerManagerInstance.js';
10
15
  import { DebugProfiler } from './DebugProfiler.js';
11
- export const Footer = ({ model, targetDir, branchName, debugMode, debugMessage, errorCount, showErrorDetails, showMemoryUsage, promptTokenCount, isPaidMode, nightly, vimMode, contextLimit, }) => {
16
+ import { useResponsive } from '../hooks/useResponsive.js';
17
+ import { truncateMiddle } from '../utils/responsive.js';
18
+ // Responsive Memory Usage Display
19
+ const ResponsiveMemoryDisplay = ({ compact, detailed }) => {
20
+ // Initialize with immediate value to avoid empty render in tests
21
+ const initialUsage = process.memoryUsage().rss;
22
+ const initialPercentage = Math.round((initialUsage / (4.8 * 1024 * 1024 * 1024)) * 100);
23
+ let initialText;
24
+ if (detailed) {
25
+ const usageGB = (initialUsage / (1024 * 1024 * 1024)).toFixed(1);
26
+ initialText = `Memory: ${initialPercentage}% (${usageGB}GB/4.8GB)`;
27
+ }
28
+ else if (compact) {
29
+ initialText = `Mem: ${initialPercentage}%`;
30
+ }
31
+ else {
32
+ initialText = `Memory: ${initialPercentage}%`;
33
+ }
34
+ const [memoryUsage, setMemoryUsage] = useState(initialText);
35
+ const [memoryUsageColor, setMemoryUsageColor] = useState(initialUsage >= 2 * 1024 * 1024 * 1024
36
+ ? SemanticColors.status.error
37
+ : SemanticColors.text.secondary);
38
+ useEffect(() => {
39
+ const updateMemory = () => {
40
+ const usage = process.memoryUsage().rss;
41
+ const totalMemory = 4.8 * 1024 * 1024 * 1024; // 4.8GB total
42
+ const percentage = Math.round((usage / totalMemory) * 100);
43
+ if (detailed) {
44
+ const usageGB = (usage / (1024 * 1024 * 1024)).toFixed(1);
45
+ const totalGB = (totalMemory / (1024 * 1024 * 1024)).toFixed(1);
46
+ setMemoryUsage(`Memory: ${percentage}% (${usageGB}GB/${totalGB}GB)`);
47
+ }
48
+ else if (compact) {
49
+ setMemoryUsage(`Mem: ${percentage}%`);
50
+ }
51
+ else {
52
+ setMemoryUsage(`Memory: ${percentage}%`);
53
+ }
54
+ setMemoryUsageColor(usage >= 2 * 1024 * 1024 * 1024
55
+ ? SemanticColors.status.error
56
+ : SemanticColors.text.secondary);
57
+ };
58
+ const intervalId = setInterval(updateMemory, 2000);
59
+ // Don't call updateMemory immediately since we have initial value
60
+ return () => clearInterval(intervalId);
61
+ }, [compact, detailed]);
62
+ return _jsx(Text, { color: memoryUsageColor, children: memoryUsage });
63
+ };
64
+ // Responsive Context Usage Display
65
+ const ResponsiveContextDisplay = ({ promptTokenCount, model, contextLimit, compact, detailed }) => {
12
66
  const limit = tokenLimit(model, contextLimit);
13
67
  const percentage = promptTokenCount / limit;
14
- return (_jsxs(Box, { justifyContent: "space-between", width: "100%", children: [_jsxs(Box, { children: [debugMode && _jsx(DebugProfiler, {}), vimMode && _jsxs(Text, { color: Colors.Gray, children: ["[", vimMode, "] "] }), nightly ? (_jsx(Gradient, { colors: Colors.GradientColors, children: _jsxs(Text, { children: [shortenPath(tildeifyPath(targetDir), 70), branchName && _jsxs(Text, { children: [" (", branchName, "*)"] })] }) })) : (_jsxs(Text, { color: Colors.LightBlue, children: [shortenPath(tildeifyPath(targetDir), 70), branchName && _jsxs(Text, { color: Colors.Gray, children: [" (", branchName, "*)"] })] })), debugMode && (_jsx(Text, { color: Colors.AccentRed, children: ' ' + (debugMessage || '--debug') }))] }), _jsx(Box, { flexGrow: 1, alignItems: "center", justifyContent: "center", display: "flex", children: process.env.SANDBOX && process.env.SANDBOX !== 'sandbox-exec' ? (_jsx(Text, { color: Colors.AccentGreen, children: process.env.SANDBOX.replace(/^gemini-(?:cli-)?/, '') })) : process.env.SANDBOX === 'sandbox-exec' ? (_jsxs(Text, { color: Colors.AccentYellow, children: ["macOS Seatbelt", ' ', _jsxs(Text, { color: Colors.Gray, children: ["(", process.env.SEATBELT_PROFILE, ")"] })] })) : (_jsxs(Text, { color: Colors.AccentRed, children: ["no sandbox ", _jsx(Text, { color: Colors.Gray, children: "(see /docs)" })] })) }), _jsxs(Box, { alignItems: "center", children: [_jsxs(Text, { color: Colors.AccentBlue, children: [' ', model, ' ', _jsxs(Text, { color: Colors.Gray, children: ["(", Math.max(0, Math.round((1 - percentage) * 100)), "% context left)"] })] }), isPaidMode !== undefined &&
15
- (() => {
16
- const providerManager = getProviderManager();
17
- const activeProvider = providerManager?.getActiveProvider?.();
18
- const isGeminiProvider = activeProvider?.name === 'gemini';
19
- // Only show paid/free mode for Gemini provider
20
- if (isGeminiProvider) {
21
- return (_jsxs(Text, { children: [_jsx(Text, { color: Colors.Gray, children: " | " }), _jsx(Text, { color: isPaidMode ? Colors.AccentYellow : Colors.AccentGreen, children: isPaidMode ? 'paid mode' : 'free mode' })] }));
22
- }
23
- return null;
24
- })(), !showErrorDetails && errorCount > 0 && (_jsxs(Box, { children: [_jsx(Text, { color: Colors.Gray, children: "| " }), _jsx(ConsoleSummaryDisplay, { errorCount: errorCount })] })), showMemoryUsage && _jsx(MemoryUsageDisplay, {})] })] }));
68
+ const remainingPercentage = (1 - percentage) * 100;
69
+ // Use semantic colors based on how much context is left
70
+ let color;
71
+ if (remainingPercentage < 10) {
72
+ color = SemanticColors.status.error;
73
+ }
74
+ else if (remainingPercentage < 25) {
75
+ color = SemanticColors.status.warning;
76
+ }
77
+ else {
78
+ color = SemanticColors.text.secondary;
79
+ }
80
+ let displayText;
81
+ if (detailed) {
82
+ displayText = `Context: ${promptTokenCount.toLocaleString()}/${limit.toLocaleString()} tokens`;
83
+ }
84
+ else if (compact) {
85
+ displayText = `Ctx: ${(promptTokenCount / 1000).toFixed(1)}k/${(limit / 1000).toFixed(0)}k`;
86
+ }
87
+ else {
88
+ displayText = `Context: ${(promptTokenCount / 1000).toFixed(1)}k/${(limit / 1000).toFixed(0)}k`;
89
+ }
90
+ return _jsx(Text, { color: color, children: displayText });
91
+ };
92
+ // Responsive Timestamp Display
93
+ const ResponsiveTimestamp = () => {
94
+ // Initialize with immediate value to avoid empty render in tests
95
+ const initialTime = new Date().toTimeString().slice(0, 8); // HH:MM:SS
96
+ const [time, setTime] = useState(initialTime);
97
+ useEffect(() => {
98
+ const updateTime = () => {
99
+ const now = new Date();
100
+ setTime(now.toTimeString().slice(0, 8)); // HH:MM:SS
101
+ };
102
+ const intervalId = setInterval(updateTime, 1000);
103
+ // Don't call updateTime immediately since we have initial value
104
+ return () => clearInterval(intervalId);
105
+ }, []);
106
+ return _jsx(Text, { color: SemanticColors.text.secondary, children: time });
107
+ };
108
+ export const Footer = ({ model, targetDir, branchName, debugMode, debugMessage, errorCount, showErrorDetails, showMemoryUsage, promptTokenCount, isPaidMode, nightly, vimMode, contextLimit, }) => {
109
+ const { breakpoint } = useResponsive();
110
+ // Define what to show at each breakpoint
111
+ const showTimestamp = breakpoint === 'WIDE';
112
+ const showModelName = breakpoint !== 'NARROW';
113
+ const isCompact = breakpoint === 'NARROW';
114
+ const isDetailed = breakpoint === 'WIDE';
115
+ // Calculate max length for branch truncation based on breakpoint
116
+ let maxBranchLength;
117
+ if (isCompact) {
118
+ maxBranchLength = 15;
119
+ }
120
+ else if (breakpoint === 'STANDARD') {
121
+ maxBranchLength = 35;
122
+ }
123
+ else {
124
+ maxBranchLength = 100; // Don't truncate at wide width
125
+ }
126
+ return (_jsxs(Box, { flexDirection: "column", width: "100%", children: [_jsxs(Box, { justifyContent: "space-between", width: "100%", alignItems: "center", children: [_jsxs(Box, { flexDirection: "row", alignItems: "center", children: [branchName && (_jsx(_Fragment, { children: nightly ? (_jsx(Gradient, { colors: Colors.GradientColors, children: _jsxs(Text, { children: ["(", branchName.length > maxBranchLength
127
+ ? truncateMiddle(branchName, maxBranchLength)
128
+ : branchName, "*)"] }) })) : (_jsxs(Text, { color: SemanticColors.text.accent, children: ["(", branchName.length > maxBranchLength
129
+ ? truncateMiddle(branchName, maxBranchLength)
130
+ : branchName, "*)"] })) })), debugMode && (_jsxs(_Fragment, { children: [_jsx(DebugProfiler, {}), _jsx(Text, { color: SemanticColors.status.error, children: ' ' + (debugMessage || '--debug') })] })), vimMode && (_jsxs(Text, { color: SemanticColors.text.secondary, children: ["[", vimMode, "] "] }))] }), _jsxs(Box, { flexDirection: "row", alignItems: "center", children: [showMemoryUsage && (_jsxs(_Fragment, { children: [_jsx(ResponsiveMemoryDisplay, { compact: isCompact, detailed: isDetailed }), _jsx(Text, { color: SemanticColors.text.secondary, children: " | " })] })), _jsx(ResponsiveContextDisplay, { promptTokenCount: promptTokenCount, model: model, contextLimit: contextLimit, compact: isCompact, detailed: isDetailed }), showTimestamp && (_jsxs(_Fragment, { children: [_jsx(Text, { color: SemanticColors.text.secondary, children: " | " }), _jsx(ResponsiveTimestamp, {})] }))] })] }), _jsxs(Box, { justifyContent: "space-between", width: "100%", alignItems: "center", children: [_jsxs(Box, { flexDirection: "row", alignItems: "center", children: [nightly ? (_jsx(Gradient, { colors: Colors.GradientColors, children: _jsx(Text, { children: shortenPath(tildeifyPath(targetDir), isCompact ? 30 : 70) }) })) : (_jsx(Text, { color: SemanticColors.text.secondary, children: shortenPath(tildeifyPath(targetDir), isCompact ? 30 : 70) })), !isCompact && (_jsx(Box, { marginLeft: 2, children: process.env.SANDBOX && process.env.SANDBOX !== 'sandbox-exec' ? (_jsxs(Text, { color: SemanticColors.status.success, children: ["[", process.env.SANDBOX.replace(/^gemini-(?:cli-)?/, ''), "]"] })) : process.env.SANDBOX === 'sandbox-exec' ? (_jsxs(Text, { color: SemanticColors.status.warning, children: ["[macOS Seatbelt", ' ', _jsxs(Text, { color: SemanticColors.text.secondary, children: ["(", process.env.SEATBELT_PROFILE, ")"] }), "]"] })) : (_jsxs(Text, { color: SemanticColors.status.error, children: ["[no sandbox", ' ', _jsx(Text, { color: SemanticColors.text.secondary, children: "(see /docs)" }), "]"] })) }))] }), _jsxs(Box, { flexDirection: "row", alignItems: "center", children: [showModelName && (_jsx(Text, { color: SemanticColors.text.accent, children: model })), isPaidMode !== undefined &&
131
+ (() => {
132
+ const providerManager = getProviderManager();
133
+ const activeProvider = providerManager?.getActiveProvider?.();
134
+ const isGeminiProvider = activeProvider?.name === 'gemini';
135
+ if (isGeminiProvider) {
136
+ return (_jsxs(_Fragment, { children: [showModelName && (_jsx(Text, { color: SemanticColors.text.secondary, children: " | " })), _jsx(Text, { color: isPaidMode
137
+ ? SemanticColors.status.warning
138
+ : SemanticColors.status.success, children: isPaidMode ? 'paid mode' : 'free mode' })] }));
139
+ }
140
+ return null;
141
+ })(), !showErrorDetails && errorCount > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { color: SemanticColors.text.secondary, children: " | " }), _jsx(ConsoleSummaryDisplay, { errorCount: errorCount })] }))] })] })] }));
25
142
  };
26
143
  //# sourceMappingURL=Footer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Footer.js","sourceRoot":"","sources":["../../../../src/ui/components/Footer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Footer.js","sourceRoot":"","sources":["../../../../src/ui/components/Footer.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,UAAU,GACX,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,QAAQ,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAkBxD,kCAAkC;AAClC,MAAM,uBAAuB,GAGxB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC7B,iEAAiE;IACjE,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC;IAC/C,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAClC,CAAC,YAAY,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAClD,CAAC;IAEF,IAAI,WAAmB,CAAC;IACxB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACjE,WAAW,GAAG,WAAW,iBAAiB,MAAM,OAAO,WAAW,CAAC;IACrE,CAAC;SAAM,IAAI,OAAO,EAAE,CAAC;QACnB,WAAW,GAAG,QAAQ,iBAAiB,GAAG,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,WAAW,iBAAiB,GAAG,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAS,WAAW,CAAC,CAAC;IACpE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CACtD,YAAY,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;QACpC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK;QAC7B,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAClC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC;YACxC,MAAM,WAAW,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,cAAc;YAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC;YAE3D,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC1D,MAAM,OAAO,GAAG,CAAC,WAAW,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAChE,cAAc,CAAC,WAAW,UAAU,MAAM,OAAO,MAAM,OAAO,KAAK,CAAC,CAAC;YACvE,CAAC;iBAAM,IAAI,OAAO,EAAE,CAAC;gBACnB,cAAc,CAAC,QAAQ,UAAU,GAAG,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,cAAc,CAAC,WAAW,UAAU,GAAG,CAAC,CAAC;YAC3C,CAAC;YAED,mBAAmB,CACjB,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;gBAC7B,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK;gBAC7B,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAClC,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACnD,kEAAkE;QAClE,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAExB,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,gBAAgB,YAAG,WAAW,GAAQ,CAAC;AAC7D,CAAC,CAAC;AAEF,mCAAmC;AACnC,MAAM,wBAAwB,GAMzB,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IACpE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,gBAAgB,GAAG,KAAK,CAAC;IAC5C,MAAM,mBAAmB,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC;IAEnD,wDAAwD;IACxD,IAAI,KAAa,CAAC;IAClB,IAAI,mBAAmB,GAAG,EAAE,EAAE,CAAC;QAC7B,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC;IACtC,CAAC;SAAM,IAAI,mBAAmB,GAAG,EAAE,EAAE,CAAC;QACpC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;IACxC,CAAC;IAED,IAAI,WAAmB,CAAC;IACxB,IAAI,QAAQ,EAAE,CAAC;QACb,WAAW,GAAG,YAAY,gBAAgB,CAAC,cAAc,EAAE,IAAI,KAAK,CAAC,cAAc,EAAE,SAAS,CAAC;IACjG,CAAC;SAAM,IAAI,OAAO,EAAE,CAAC;QACnB,WAAW,GAAG,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9F,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,YAAY,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAClG,CAAC;IAED,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,YAAG,WAAW,GAAQ,CAAC;AAClD,CAAC,CAAC;AAEF,+BAA+B;AAC/B,MAAM,mBAAmB,GAAa,GAAG,EAAE;IACzC,iEAAiE;IACjE,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW;IACtE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAS,WAAW,CAAC,CAAC;IAEtD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,GAAG,EAAE;YACtB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;QACtD,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACjD,gEAAgE;QAChE,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,SAAS,YAAG,IAAI,GAAQ,CAAC;AACnE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAA0B,CAAC,EAC5C,KAAK,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,OAAO,EACP,OAAO,EACP,YAAY,GACb,EAAE,EAAE;IACH,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,CAAC;IAEvC,yCAAyC;IACzC,MAAM,aAAa,GAAG,UAAU,KAAK,MAAM,CAAC;IAC5C,MAAM,aAAa,GAAG,UAAU,KAAK,QAAQ,CAAC;IAC9C,MAAM,SAAS,GAAG,UAAU,KAAK,QAAQ,CAAC;IAC1C,MAAM,UAAU,GAAG,UAAU,KAAK,MAAM,CAAC;IAEzC,iEAAiE;IACjE,IAAI,eAAuB,CAAC;IAC5B,IAAI,SAAS,EAAE,CAAC;QACd,eAAe,GAAG,EAAE,CAAC;IACvB,CAAC;SAAM,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;QACrC,eAAe,GAAG,EAAE,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,eAAe,GAAG,GAAG,CAAC,CAAC,+BAA+B;IACxD,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,KAAK,EAAC,MAAM,aAEtC,MAAC,GAAG,IAAC,cAAc,EAAC,eAAe,EAAC,KAAK,EAAC,MAAM,EAAC,UAAU,EAAC,QAAQ,aAElE,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,aACzC,UAAU,IAAI,CACb,4BACG,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,QAAQ,IAAC,MAAM,EAAE,MAAM,CAAC,cAAc,YACrC,MAAC,IAAI,oBAEF,UAAU,CAAC,MAAM,GAAG,eAAe;gDAClC,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,eAAe,CAAC;gDAC7C,CAAC,CAAC,UAAU,UAET,GACE,CACZ,CAAC,CAAC,CAAC,CACF,MAAC,IAAI,IAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,kBAEpC,UAAU,CAAC,MAAM,GAAG,eAAe;4CAClC,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,eAAe,CAAC;4CAC7C,CAAC,CAAC,UAAU,UAET,CACR,GACA,CACJ,EACA,SAAS,IAAI,CACZ,8BACE,KAAC,aAAa,KAAG,EACjB,KAAC,IAAI,IAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,YACrC,GAAG,GAAG,CAAC,YAAY,IAAI,SAAS,CAAC,GAC7B,IACN,CACJ,EACA,OAAO,IAAI,CACV,MAAC,IAAI,IAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,SAAS,kBAAI,OAAO,UAAU,CAChE,IACG,EAGN,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,aACzC,eAAe,IAAI,CAClB,8BACE,KAAC,uBAAuB,IACtB,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,UAAU,GACpB,EACF,KAAC,IAAI,IAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,SAAS,oBAAY,IACrD,CACJ,EAED,KAAC,wBAAwB,IACvB,gBAAgB,EAAE,gBAAgB,EAClC,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,UAAU,GACpB,EAGD,aAAa,IAAI,CAChB,8BACE,KAAC,IAAI,IAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,SAAS,oBAAY,EACtD,KAAC,mBAAmB,KAAG,IACtB,CACJ,IACG,IACF,EAGN,MAAC,GAAG,IAAC,cAAc,EAAC,eAAe,EAAC,KAAK,EAAC,MAAM,EAAC,UAAU,EAAC,QAAQ,aAElE,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,aACzC,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,QAAQ,IAAC,MAAM,EAAE,MAAM,CAAC,cAAc,YACrC,KAAC,IAAI,cACF,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACrD,GACE,CACZ,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,SAAS,YACvC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACrD,CACR,EAGA,CAAC,SAAS,IAAI,CACb,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YACf,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,cAAc,CAAC,CAAC,CAAC,CAC/D,MAAC,IAAI,IAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,kBACtC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,SACjD,CACR,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,cAAc,CAAC,CAAC,CAAC,CAC3C,MAAC,IAAI,IAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,gCACxB,GAAG,EACnB,MAAC,IAAI,IAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,SAAS,kBACtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,SACzB,SAEF,CACR,CAAC,CAAC,CAAC,CACF,MAAC,IAAI,IAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,4BAC1B,GAAG,EACf,KAAC,IAAI,IAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,SAAS,4BAAoB,SAEzD,CACR,GACG,CACP,IACG,EAGN,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,aAEzC,aAAa,IAAI,CAChB,KAAC,IAAI,IAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,YAAG,KAAK,GAAQ,CACxD,EAGA,UAAU,KAAK,SAAS;gCACvB,CAAC,GAAG,EAAE;oCACJ,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;oCAC7C,MAAM,cAAc,GAAG,eAAe,EAAE,iBAAiB,EAAE,EAAE,CAAC;oCAC9D,MAAM,gBAAgB,GAAG,cAAc,EAAE,IAAI,KAAK,QAAQ,CAAC;oCAE3D,IAAI,gBAAgB,EAAE,CAAC;wCACrB,OAAO,CACL,8BACG,aAAa,IAAI,CAChB,KAAC,IAAI,IAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,SAAS,oBAAY,CACvD,EACD,KAAC,IAAI,IACH,KAAK,EACH,UAAU;wDACR,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO;wDAC/B,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,YAGlC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,GAClC,IACN,CACJ,CAAC;oCACJ,CAAC;oCACD,OAAO,IAAI,CAAC;gCACd,CAAC,CAAC,EAAE,EAGL,CAAC,gBAAgB,IAAI,UAAU,GAAG,CAAC,IAAI,CACtC,8BACE,KAAC,IAAI,IAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,SAAS,oBAAY,EACtD,KAAC,qBAAqB,IAAC,UAAU,EAAE,UAAU,GAAI,IAChD,CACJ,IACG,IACF,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -22,6 +22,7 @@ export interface InputPromptProps {
22
22
  suggestionsWidth: number;
23
23
  shellModeActive: boolean;
24
24
  setShellModeActive: (value: boolean) => void;
25
+ onEscapePromptChange?: (showPrompt: boolean) => void;
25
26
  vimHandleInput?: (key: Key) => boolean;
26
27
  }
27
28
  export declare const InputPrompt: React.FC<InputPromptProps>;