@vybestack/llxprt-code 0.1.18 → 0.1.19-beta

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 (206) hide show
  1. package/README.md +1 -0
  2. package/dist/package.json +6 -4
  3. package/dist/src/acp/acpPeer.js +72 -64
  4. package/dist/src/acp/acpPeer.js.map +1 -1
  5. package/dist/src/commands/mcp/add.d.ts +7 -0
  6. package/dist/src/commands/mcp/add.js +155 -0
  7. package/dist/src/commands/mcp/add.js.map +1 -0
  8. package/dist/src/commands/mcp/list.d.ts +8 -0
  9. package/dist/src/commands/mcp/list.js +110 -0
  10. package/dist/src/commands/mcp/list.js.map +1 -0
  11. package/dist/src/commands/mcp/remove.d.ts +7 -0
  12. package/dist/src/commands/mcp/remove.js +44 -0
  13. package/dist/src/commands/mcp/remove.js.map +1 -0
  14. package/dist/src/commands/mcp.d.ts +7 -0
  15. package/dist/src/commands/mcp.js +23 -0
  16. package/dist/src/commands/mcp.js.map +1 -0
  17. package/dist/src/config/auth.js +5 -0
  18. package/dist/src/config/auth.js.map +1 -1
  19. package/dist/src/config/config.js +80 -37
  20. package/dist/src/config/config.js.map +1 -1
  21. package/dist/src/config/keyBindings.d.ts +64 -0
  22. package/dist/src/config/keyBindings.js +137 -0
  23. package/dist/src/config/keyBindings.js.map +1 -0
  24. package/dist/src/config/settings.d.ts +7 -1
  25. package/dist/src/config/settings.js +20 -4
  26. package/dist/src/config/settings.js.map +1 -1
  27. package/dist/src/gemini.js +12 -109
  28. package/dist/src/gemini.js.map +1 -1
  29. package/dist/src/generated/git-commit.d.ts +1 -1
  30. package/dist/src/generated/git-commit.js +1 -1
  31. package/dist/src/nonInteractiveCli.js +0 -1
  32. package/dist/src/nonInteractiveCli.js.map +1 -1
  33. package/dist/src/providers/logging/git-stats-service-impl.d.ts +19 -0
  34. package/dist/src/providers/logging/git-stats-service-impl.js +25 -0
  35. package/dist/src/providers/logging/git-stats-service-impl.js.map +1 -0
  36. package/dist/src/providers/logging/git-stats.d.ts +43 -0
  37. package/dist/src/providers/logging/git-stats.js +137 -0
  38. package/dist/src/providers/logging/git-stats.js.map +1 -0
  39. package/dist/src/providers/providerManagerInstance.js +7 -0
  40. package/dist/src/providers/providerManagerInstance.js.map +1 -1
  41. package/dist/src/services/BuiltinCommandLoader.js +2 -0
  42. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  43. package/dist/src/services/todo-continuation/todoContinuationService.d.ts +172 -0
  44. package/dist/src/services/todo-continuation/todoContinuationService.js +387 -0
  45. package/dist/src/services/todo-continuation/todoContinuationService.js.map +1 -0
  46. package/dist/src/services/todo-continuation/todoContinuationService.spec.d.ts +6 -0
  47. package/dist/src/services/todo-continuation/todoContinuationService.spec.js +385 -0
  48. package/dist/src/services/todo-continuation/todoContinuationService.spec.js.map +1 -0
  49. package/dist/src/ui/App.js +111 -35
  50. package/dist/src/ui/App.js.map +1 -1
  51. package/dist/src/ui/IdeIntegrationNudge.d.ts +14 -0
  52. package/dist/src/ui/IdeIntegrationNudge.js +32 -0
  53. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -0
  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/chatCommand.js +16 -0
  58. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  59. package/dist/src/ui/commands/diagnosticsCommand.js +9 -1
  60. package/dist/src/ui/commands/diagnosticsCommand.js.map +1 -1
  61. package/dist/src/ui/commands/ideCommand.js +67 -31
  62. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  63. package/dist/src/ui/commands/loggingCommand.d.ts +15 -0
  64. package/dist/src/ui/commands/loggingCommand.js +421 -0
  65. package/dist/src/ui/commands/loggingCommand.js.map +1 -0
  66. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  67. package/dist/src/ui/commands/privacyCommand.d.ts +3 -0
  68. package/dist/src/ui/commands/privacyCommand.js +6 -3
  69. package/dist/src/ui/commands/privacyCommand.js.map +1 -1
  70. package/dist/src/ui/commands/profileCommand.js +1 -0
  71. package/dist/src/ui/commands/profileCommand.js.map +1 -1
  72. package/dist/src/ui/commands/setCommand.js +2 -0
  73. package/dist/src/ui/commands/setCommand.js.map +1 -1
  74. package/dist/src/ui/commands/setupGithubCommand.js +90 -26
  75. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  76. package/dist/src/ui/commands/toolsCommand.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/AuthInProgress.js +3 -3
  80. package/dist/src/ui/components/AuthInProgress.js.map +1 -1
  81. package/dist/src/ui/components/ContextUsageDisplay.d.ts +10 -0
  82. package/dist/src/ui/components/ContextUsageDisplay.js +27 -0
  83. package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -0
  84. package/dist/src/ui/components/FolderTrustDialog.d.ts +16 -0
  85. package/dist/src/ui/components/FolderTrustDialog.js +38 -0
  86. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -0
  87. package/dist/src/ui/components/Footer.d.ts +0 -1
  88. package/dist/src/ui/components/Footer.js +132 -15
  89. package/dist/src/ui/components/Footer.js.map +1 -1
  90. package/dist/src/ui/components/InputPrompt.js +32 -28
  91. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  92. package/dist/src/ui/components/LoggingDialog.d.ts +37 -0
  93. package/dist/src/ui/components/LoggingDialog.js +155 -0
  94. package/dist/src/ui/components/LoggingDialog.js.map +1 -0
  95. package/dist/src/ui/components/MemoryUsageDisplay.js +6 -4
  96. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
  97. package/dist/src/ui/components/ProviderDialog.js +100 -26
  98. package/dist/src/ui/components/ProviderDialog.js.map +1 -1
  99. package/dist/src/ui/components/ProviderModelDialog.js +99 -27
  100. package/dist/src/ui/components/ProviderModelDialog.js.map +1 -1
  101. package/dist/src/ui/components/TodoPanel.d.ts +11 -0
  102. package/dist/src/ui/components/TodoPanel.js +206 -0
  103. package/dist/src/ui/components/TodoPanel.js.map +1 -0
  104. package/dist/src/ui/components/ToolsDialog.d.ts +2 -2
  105. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +116 -16
  106. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  107. package/dist/src/ui/components/messages/ToolGroupMessage.js +36 -8
  108. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  109. package/dist/src/ui/components/todo-utils.d.ts +16 -0
  110. package/dist/src/ui/components/todo-utils.js +41 -0
  111. package/dist/src/ui/components/todo-utils.js.map +1 -0
  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/contexts/TodoContext.d.ts +15 -0
  116. package/dist/src/ui/contexts/TodoContext.js +18 -0
  117. package/dist/src/ui/contexts/TodoContext.js.map +1 -0
  118. package/dist/src/ui/contexts/TodoProvider.d.ts +7 -0
  119. package/dist/src/ui/contexts/TodoProvider.js +62 -0
  120. package/dist/src/ui/contexts/TodoProvider.js.map +1 -0
  121. package/dist/src/ui/contexts/ToolCallContext.d.ts +19 -0
  122. package/dist/src/ui/contexts/ToolCallContext.js +13 -0
  123. package/dist/src/ui/contexts/ToolCallContext.js.map +1 -0
  124. package/dist/src/ui/contexts/ToolCallProvider.d.ts +12 -0
  125. package/dist/src/ui/contexts/ToolCallProvider.js +62 -0
  126. package/dist/src/ui/contexts/ToolCallProvider.js.map +1 -0
  127. package/dist/src/ui/hooks/atCommandProcessor.js +28 -4
  128. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  129. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +5 -1
  130. package/dist/src/ui/hooks/slashCommandProcessor.js +137 -112
  131. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  132. package/dist/src/ui/hooks/useAtCompletion.d.ts +23 -0
  133. package/dist/src/ui/hooks/useAtCompletion.js +180 -0
  134. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -0
  135. package/dist/src/ui/hooks/useConsoleMessages.js +7 -0
  136. package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -1
  137. package/dist/src/ui/hooks/useFolderTrust.d.ts +11 -0
  138. package/dist/src/ui/hooks/useFolderTrust.js +22 -0
  139. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -0
  140. package/dist/src/ui/hooks/useGeminiStream.d.ts +1 -1
  141. package/dist/src/ui/hooks/useGeminiStream.js +16 -4
  142. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  143. package/dist/src/ui/hooks/useReactToolScheduler.js +12 -12
  144. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  145. package/dist/src/ui/hooks/useResponsive.d.ts +14 -0
  146. package/dist/src/ui/hooks/useResponsive.js +19 -0
  147. package/dist/src/ui/hooks/useResponsive.js.map +1 -0
  148. package/dist/src/ui/hooks/useTodoContinuation.d.ts +31 -0
  149. package/dist/src/ui/hooks/useTodoContinuation.js +148 -0
  150. package/dist/src/ui/hooks/useTodoContinuation.js.map +1 -0
  151. package/dist/src/ui/hooks/useTodoContinuation.spec.d.ts +6 -0
  152. package/dist/src/ui/hooks/useTodoContinuation.spec.js +378 -0
  153. package/dist/src/ui/hooks/useTodoContinuation.spec.js.map +1 -0
  154. package/dist/src/ui/hooks/useToolsDialog.d.ts +2 -2
  155. package/dist/src/ui/hooks/useToolsDialog.js.map +1 -1
  156. package/dist/src/ui/keyMatchers.d.ts +26 -0
  157. package/dist/src/ui/keyMatchers.js +68 -0
  158. package/dist/src/ui/keyMatchers.js.map +1 -0
  159. package/dist/src/ui/privacy/PrivacyNotice.js +10 -4
  160. package/dist/src/ui/privacy/PrivacyNotice.js.map +1 -1
  161. package/dist/src/ui/themes/semantic-resolver.d.ts +12 -0
  162. package/dist/src/ui/themes/semantic-resolver.js +32 -0
  163. package/dist/src/ui/themes/semantic-resolver.js.map +1 -0
  164. package/dist/src/ui/themes/semantic-tokens.d.ts +52 -0
  165. package/dist/src/ui/themes/semantic-tokens.js +7 -0
  166. package/dist/src/ui/themes/semantic-tokens.js.map +1 -0
  167. package/dist/src/ui/themes/theme-compat.d.ts +34 -0
  168. package/dist/src/ui/themes/theme-compat.js +65 -0
  169. package/dist/src/ui/themes/theme-compat.js.map +1 -0
  170. package/dist/src/ui/themes/theme-manager.d.ts +8 -0
  171. package/dist/src/ui/themes/theme-manager.js +18 -0
  172. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  173. package/dist/src/ui/types.d.ts +1 -1
  174. package/dist/src/ui/utils/CodeColorizer.d.ts +2 -1
  175. package/dist/src/ui/utils/CodeColorizer.js +4 -3
  176. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  177. package/dist/src/ui/utils/ConsolePatcher.d.ts +1 -0
  178. package/dist/src/ui/utils/ConsolePatcher.js +3 -0
  179. package/dist/src/ui/utils/ConsolePatcher.js.map +1 -1
  180. package/dist/src/ui/utils/MarkdownDisplay.js +4 -2
  181. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  182. package/dist/src/ui/utils/commandUtils.d.ts +1 -0
  183. package/dist/src/ui/utils/commandUtils.js +22 -1
  184. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  185. package/dist/src/ui/utils/responsive.d.ts +16 -0
  186. package/dist/src/ui/utils/responsive.js +111 -0
  187. package/dist/src/ui/utils/responsive.js.map +1 -0
  188. package/dist/src/utils/cleanup.d.ts +2 -2
  189. package/dist/src/utils/cleanup.js +2 -2
  190. package/dist/src/utils/cleanup.js.map +1 -1
  191. package/dist/src/utils/gitUtils.d.ts +21 -1
  192. package/dist/src/utils/gitUtils.js +70 -3
  193. package/dist/src/utils/gitUtils.js.map +1 -1
  194. package/dist/src/utils/privacy/ConversationDataRedactor.d.ts +75 -0
  195. package/dist/src/utils/privacy/ConversationDataRedactor.js +412 -0
  196. package/dist/src/utils/privacy/ConversationDataRedactor.js.map +1 -0
  197. package/dist/src/utils/privacy/PrivacyManager.d.ts +58 -0
  198. package/dist/src/utils/privacy/PrivacyManager.js +133 -0
  199. package/dist/src/utils/privacy/PrivacyManager.js.map +1 -0
  200. package/dist/src/utils/sandbox.js +430 -401
  201. package/dist/src/utils/sandbox.js.map +1 -1
  202. package/dist/tsconfig.tsbuildinfo +1 -1
  203. package/package.json +6 -4
  204. package/dist/src/ui/components/IDEContextDetailDisplay.d.ts +0 -12
  205. package/dist/src/ui/components/IDEContextDetailDisplay.js +0 -17
  206. package/dist/src/ui/components/IDEContextDetailDisplay.js.map +0 -1
@@ -4,9 +4,9 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import React from 'react';
7
- import { Tool } from '@vybestack/llxprt-code-core';
7
+ import { AnyDeclarativeTool } from '@vybestack/llxprt-code-core';
8
8
  interface ToolsDialogProps {
9
- tools: Tool[];
9
+ tools: AnyDeclarativeTool[];
10
10
  action: 'enable' | 'disable';
11
11
  disabledTools: string[];
12
12
  onSelect: (toolName: string) => void;
@@ -4,27 +4,89 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  * Copyright 2025 Google LLC
5
5
  * SPDX-License-Identifier: Apache-2.0
6
6
  */
7
- import { useCallback } from 'react';
7
+ import { useCallback, useState } from 'react';
8
8
  import { Box, Text, useInput } from 'ink';
9
9
  import { DiffRenderer } from './DiffRenderer.js';
10
- import { Colors } from '../../colors.js';
10
+ import { Colors, SemanticColors } from '../../colors.js';
11
11
  import { ToolConfirmationOutcome, } from '@vybestack/llxprt-code-core';
12
12
  import { RadioButtonSelect, } from '../shared/RadioButtonSelect.js';
13
13
  import { MaxSizedBox } from '../shared/MaxSizedBox.js';
14
- export const ToolConfirmationMessage = ({ confirmationDetails, isFocused = true, availableTerminalHeight, terminalWidth, }) => {
14
+ import { useResponsive } from '../../hooks/useResponsive.js';
15
+ import { truncateEnd } from '../../utils/responsive.js';
16
+ export const ToolConfirmationMessage = ({ confirmationDetails, config, isFocused = true, availableTerminalHeight, terminalWidth, }) => {
15
17
  const { onConfirm } = confirmationDetails;
16
18
  const childWidth = terminalWidth - 2; // 2 for padding
17
- useInput((_, key) => {
19
+ const { breakpoint } = useResponsive();
20
+ // State to track whether details are shown
21
+ const [showDetails, setShowDetails] = useState(false);
22
+ const handleConfirm = useCallback(async (outcome) => {
23
+ if (confirmationDetails.type === 'edit') {
24
+ const ideClient = config?.getIdeClient();
25
+ if (config?.getIdeMode() && config?.getIdeModeFeature()) {
26
+ const cliOutcome = outcome === ToolConfirmationOutcome.Cancel
27
+ ? 'rejected'
28
+ : 'accepted';
29
+ await ideClient?.resolveDiffFromCli(confirmationDetails.filePath, cliOutcome);
30
+ }
31
+ }
32
+ onConfirm(outcome);
33
+ }, [confirmationDetails, config, onConfirm]);
34
+ useInput((input, key) => {
18
35
  if (!isFocused)
19
36
  return;
20
37
  if (key.escape) {
21
- onConfirm(ToolConfirmationOutcome.Cancel);
38
+ handleConfirm(ToolConfirmationOutcome.Cancel);
39
+ }
40
+ // Handle 'd' key for details toggle
41
+ if (input === 'd') {
42
+ setShowDetails(!showDetails);
22
43
  }
23
44
  });
24
- const handleSelect = useCallback((item) => onConfirm(item), [onConfirm]);
25
- let bodyContent = null; // Removed contextDisplay here
45
+ const handleSelect = useCallback((item) => handleConfirm(item), [handleConfirm]);
46
+ // Helper function to determine if we should show details toggle
47
+ const shouldShowDetailsToggle = (type) => {
48
+ if (type === 'edit')
49
+ return false; // Edit diffs always show full content
50
+ // For exec commands, show toggle if command is long
51
+ if (type === 'exec') {
52
+ const execDetails = confirmationDetails;
53
+ return execDetails.command.length > 50;
54
+ }
55
+ // For info commands, show toggle if there are multiple URLs or long prompt
56
+ if (type === 'info') {
57
+ const infoDetails = confirmationDetails;
58
+ const hasMultipleUrls = infoDetails.urls && infoDetails.urls.length > 2;
59
+ const hasLongPrompt = infoDetails.prompt && infoDetails.prompt.length > 80;
60
+ return Boolean(hasMultipleUrls || hasLongPrompt);
61
+ }
62
+ // For MCP commands, always allow details toggle
63
+ return true;
64
+ };
65
+ // Helper function to create summary content
66
+ const createSummary = (type) => {
67
+ if (type === 'exec') {
68
+ const execDetails = confirmationDetails;
69
+ return `Execute: ${execDetails.rootCommand}`;
70
+ }
71
+ if (type === 'info') {
72
+ const infoDetails = confirmationDetails;
73
+ return truncateEnd(infoDetails.prompt || 'Web fetch operation', 60);
74
+ }
75
+ if (type === 'mcp') {
76
+ const mcpDetails = confirmationDetails;
77
+ return `MCP Tool: ${mcpDetails.toolName} from ${mcpDetails.serverName}`;
78
+ }
79
+ return 'Operation details';
80
+ };
81
+ let bodyContent = null;
26
82
  let question;
27
83
  const options = new Array();
84
+ const enableDetailsToggle = shouldShowDetailsToggle(confirmationDetails.type);
85
+ // Different detail levels based on width
86
+ const shouldShowSummary = enableDetailsToggle && !showDetails && breakpoint === 'NARROW';
87
+ const shouldShowPartialDetails = enableDetailsToggle &&
88
+ !showDetails &&
89
+ (breakpoint === 'STANDARD' || breakpoint === 'WIDE');
28
90
  // Body content is now the DiffRenderer, passing filename to it
29
91
  // The bordered box is removed from here and handled within DiffRenderer
30
92
  function availableBodyContentHeight() {
@@ -60,13 +122,23 @@ export const ToolConfirmationMessage = ({ confirmationDetails, isFocused = true,
60
122
  }, {
61
123
  label: 'Yes, allow always',
62
124
  value: ToolConfirmationOutcome.ProceedAlways,
63
- }, {
64
- label: 'Modify with external editor',
65
- value: ToolConfirmationOutcome.ModifyWithEditor,
66
- }, {
67
- label: 'No, suggest changes (esc)',
68
- value: ToolConfirmationOutcome.Cancel,
69
125
  });
126
+ if (config?.getIdeMode() && config?.getIdeModeFeature()) {
127
+ options.push({
128
+ label: 'No',
129
+ value: ToolConfirmationOutcome.Cancel,
130
+ });
131
+ }
132
+ else {
133
+ options.push({
134
+ label: 'Modify with external editor',
135
+ value: ToolConfirmationOutcome.ModifyWithEditor,
136
+ });
137
+ options.push({
138
+ label: 'No, suggest changes (esc)',
139
+ value: ToolConfirmationOutcome.Cancel,
140
+ });
141
+ }
70
142
  bodyContent = (_jsx(DiffRenderer, { diffContent: confirmationDetails.fileDiff, filename: confirmationDetails.fileName, availableTerminalHeight: availableBodyContentHeight(), terminalWidth: childWidth }));
71
143
  }
72
144
  else if (confirmationDetails.type === 'exec') {
@@ -86,7 +158,21 @@ export const ToolConfirmationMessage = ({ confirmationDetails, isFocused = true,
86
158
  if (bodyContentHeight !== undefined) {
87
159
  bodyContentHeight -= 2; // Account for padding;
88
160
  }
89
- bodyContent = (_jsx(Box, { flexDirection: "column", children: _jsx(Box, { paddingX: 1, marginLeft: 1, children: _jsx(MaxSizedBox, { maxHeight: bodyContentHeight, maxWidth: Math.max(childWidth - 4, 1), children: _jsx(Box, { children: _jsx(Text, { color: Colors.AccentCyan, children: executionProps.command }) }) }) }) }));
161
+ if (shouldShowSummary) {
162
+ // Show summary with details toggle
163
+ bodyContent = (_jsxs(Box, { flexDirection: "column", paddingX: 1, marginLeft: 1, children: [_jsx(Text, { color: SemanticColors.text.primary, children: createSummary('exec') }), _jsx(Text, { color: SemanticColors.text.secondary, dimColor: true, children: "Press 'd' to see full details" })] }));
164
+ }
165
+ else if (shouldShowPartialDetails) {
166
+ // Show partial details with toggle for full details (at wide width)
167
+ const commandPreview = executionProps.command.length > 50
168
+ ? executionProps.command.substring(0, 50) + '...'
169
+ : executionProps.command;
170
+ bodyContent = (_jsxs(Box, { flexDirection: "column", paddingX: 1, marginLeft: 1, children: [_jsx(Text, { color: Colors.AccentCyan, children: commandPreview }), _jsx(Text, { color: SemanticColors.text.secondary, dimColor: true, children: "Press 'd' to see full details" })] }));
171
+ }
172
+ else {
173
+ // Show full details
174
+ bodyContent = (_jsxs(Box, { flexDirection: "column", children: [enableDetailsToggle && showDetails && (_jsx(Box, { paddingX: 1, marginLeft: 1, marginBottom: 1, children: _jsx(Text, { color: SemanticColors.text.secondary, children: "Full Parameters:" }) })), _jsx(Box, { paddingX: 1, marginLeft: 1, children: _jsx(MaxSizedBox, { maxHeight: bodyContentHeight, maxWidth: Math.max(childWidth - 4, 1), children: _jsx(Box, { children: _jsx(Text, { color: Colors.AccentCyan, children: executionProps.command }) }) }) })] }));
175
+ }
90
176
  }
91
177
  else if (confirmationDetails.type === 'info') {
92
178
  const infoProps = confirmationDetails;
@@ -103,12 +189,26 @@ export const ToolConfirmationMessage = ({ confirmationDetails, isFocused = true,
103
189
  label: 'No, suggest changes (esc)',
104
190
  value: ToolConfirmationOutcome.Cancel,
105
191
  });
106
- bodyContent = (_jsxs(Box, { flexDirection: "column", paddingX: 1, marginLeft: 1, children: [_jsx(Text, { color: Colors.AccentCyan, children: infoProps.prompt }), displayUrls && infoProps.urls && infoProps.urls.length > 0 && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { children: "URLs to fetch:" }), infoProps.urls.map((url) => (_jsxs(Text, { children: [" - ", url] }, url)))] }))] }));
192
+ if (shouldShowSummary) {
193
+ // Show summary with details toggle
194
+ bodyContent = (_jsxs(Box, { flexDirection: "column", paddingX: 1, marginLeft: 1, children: [_jsx(Text, { color: SemanticColors.text.primary, children: createSummary('info') }), _jsx(Text, { color: SemanticColors.text.secondary, dimColor: true, children: "Press 'd' to see full details" })] }));
195
+ }
196
+ else {
197
+ // Show full details
198
+ bodyContent = (_jsxs(Box, { flexDirection: "column", paddingX: 1, marginLeft: 1, children: [enableDetailsToggle && showDetails && (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: SemanticColors.text.secondary, children: "Full Parameters:" }) })), _jsx(Text, { color: Colors.AccentCyan, children: infoProps.prompt }), displayUrls && infoProps.urls && infoProps.urls.length > 0 && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { children: "URLs to fetch:" }), infoProps.urls.map((url) => (_jsxs(Text, { children: [" - ", url] }, url)))] }))] }));
199
+ }
107
200
  }
108
201
  else {
109
202
  // mcp tool confirmation
110
203
  const mcpProps = confirmationDetails;
111
- bodyContent = (_jsxs(Box, { flexDirection: "column", paddingX: 1, marginLeft: 1, children: [_jsxs(Text, { color: Colors.AccentCyan, children: ["MCP Server: ", mcpProps.serverName] }), _jsxs(Text, { color: Colors.AccentCyan, children: ["Tool: ", mcpProps.toolName] })] }));
204
+ if (shouldShowSummary) {
205
+ // Show summary with details toggle
206
+ bodyContent = (_jsxs(Box, { flexDirection: "column", paddingX: 1, marginLeft: 1, children: [_jsx(Text, { color: SemanticColors.text.primary, children: createSummary('mcp') }), _jsx(Text, { color: SemanticColors.text.secondary, dimColor: true, children: "Press 'd' to see full details" })] }));
207
+ }
208
+ else {
209
+ // Show full details
210
+ bodyContent = (_jsxs(Box, { flexDirection: "column", paddingX: 1, marginLeft: 1, children: [enableDetailsToggle && showDetails && (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: SemanticColors.text.secondary, children: "Full Parameters:" }) })), _jsxs(Text, { color: Colors.AccentCyan, children: ["MCP Server: ", mcpProps.serverName] }), _jsxs(Text, { color: Colors.AccentCyan, children: ["Tool: ", mcpProps.toolName] })] }));
211
+ }
112
212
  question = `Allow execution of MCP tool "${mcpProps.toolName}" from server "${mcpProps.serverName}"?`;
113
213
  options.push({
114
214
  label: 'Yes, allow once',
@@ -1 +1 @@
1
- {"version":3,"file":"ToolConfirmationMessage.js","sourceRoot":"","sources":["../../../../../src/ui/components/messages/ToolConfirmationMessage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolConfirmationMessage.js","sourceRoot":"","sources":["../../../../../src/ui/components/messages/ToolConfirmationMessage.tsx"],"names":[],"mappings":"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"}
@@ -11,25 +11,53 @@ import { ToolMessage } from './ToolMessage.js';
11
11
  import { ToolConfirmationMessage } from './ToolConfirmationMessage.js';
12
12
  import { Colors } from '../../colors.js';
13
13
  import { SHELL_COMMAND_NAME } from '../../constants.js';
14
+ import { useTodoContext } from '../../contexts/TodoContext.js';
14
15
  // Main component renders the border and maps the tools using ToolMessage
15
16
  export const ToolGroupMessage = ({ toolCalls, availableTerminalHeight, terminalWidth, config, isFocused = true, }) => {
16
- const hasPending = !toolCalls.every((t) => t.status === ToolCallStatus.Success);
17
- const isShellCommand = toolCalls.some((t) => t.name === SHELL_COMMAND_NAME);
17
+ const { todos } = useTodoContext();
18
+ const hasTodoPanel = todos.length > 0;
19
+ // only prompt for tool approval on the first 'confirming' tool in the list
20
+ // note, after the CTA, this automatically moves over to the next 'confirming' tool
21
+ const toolAwaitingApproval = useMemo(() => toolCalls.find((tc) => tc.status === ToolCallStatus.Confirming), [toolCalls]);
22
+ // Filter out todo_read completely when panel is visible
23
+ // and minimize todo_write output
24
+ const filteredToolCalls = useMemo(() => {
25
+ if (!hasTodoPanel)
26
+ return toolCalls;
27
+ return toolCalls
28
+ .map((tool) => {
29
+ if (tool.name === 'todo_read') {
30
+ return null; // Don't show todo_read at all when panel is visible
31
+ }
32
+ if (tool.name === 'todo_write') {
33
+ // Minimize todo_write output when panel is visible
34
+ return {
35
+ ...tool,
36
+ resultDisplay: '✦ Todo list updated.',
37
+ };
38
+ }
39
+ return tool;
40
+ })
41
+ .filter(Boolean);
42
+ }, [toolCalls, hasTodoPanel]);
43
+ // If all tools were filtered out, don't render anything
44
+ if (filteredToolCalls.length === 0) {
45
+ return null;
46
+ }
47
+ const hasPending = !filteredToolCalls.every((t) => t.status === ToolCallStatus.Success);
48
+ const isShellCommand = filteredToolCalls.some((t) => t.name === SHELL_COMMAND_NAME);
18
49
  const borderColor = hasPending || isShellCommand ? Colors.AccentYellow : Colors.Gray;
19
50
  const staticHeight = /* border */ 2 + /* marginBottom */ 1;
20
51
  // This is a bit of a magic number, but it accounts for the border and
21
52
  // marginLeft.
22
53
  const innerWidth = terminalWidth - 4;
23
- // only prompt for tool approval on the first 'confirming' tool in the list
24
- // note, after the CTA, this automatically moves over to the next 'confirming' tool
25
- const toolAwaitingApproval = useMemo(() => toolCalls.find((tc) => tc.status === ToolCallStatus.Confirming), [toolCalls]);
26
54
  let countToolCallsWithResults = 0;
27
- for (const tool of toolCalls) {
55
+ for (const tool of filteredToolCalls) {
28
56
  if (tool.resultDisplay !== undefined && tool.resultDisplay !== '') {
29
57
  countToolCallsWithResults++;
30
58
  }
31
59
  }
32
- const countOneLineToolCalls = toolCalls.length - countToolCallsWithResults;
60
+ const countOneLineToolCalls = filteredToolCalls.length - countToolCallsWithResults;
33
61
  const availableTerminalHeightPerToolMessage = availableTerminalHeight
34
62
  ? Math.max(Math.floor((availableTerminalHeight - staticHeight - countOneLineToolCalls) /
35
63
  Math.max(1, countToolCallsWithResults)), 1)
@@ -41,7 +69,7 @@ export const ToolGroupMessage = ({ toolCalls, availableTerminalHeight, terminalW
41
69
  Ink to render the border of the box incorrectly and span multiple lines and even
42
70
  cause tearing.
43
71
  */
44
- width: "100%", marginLeft: 1, borderDimColor: hasPending, borderColor: borderColor, children: toolCalls.map((tool) => {
72
+ width: "100%", marginLeft: 1, borderDimColor: hasPending, borderColor: borderColor, children: filteredToolCalls.map((tool) => {
45
73
  const isConfirming = toolAwaitingApproval?.callId === tool.callId;
46
74
  return (_jsxs(Box, { flexDirection: "column", minHeight: 1, children: [_jsx(Box, { flexDirection: "row", alignItems: "center", children: _jsx(ToolMessage, { callId: tool.callId, name: tool.name, description: tool.description, resultDisplay: tool.resultDisplay, status: tool.status, confirmationDetails: tool.confirmationDetails, availableTerminalHeight: availableTerminalHeightPerToolMessage, terminalWidth: innerWidth, emphasis: isConfirming
47
75
  ? 'high'
@@ -1 +1 @@
1
- {"version":3,"file":"ToolGroupMessage.js","sourceRoot":"","sources":["../../../../../src/ui/components/messages/ToolGroupMessage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolGroupMessage.js","sourceRoot":"","sources":["../../../../../src/ui/components/messages/ToolGroupMessage.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAc,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAA6B,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAW/D,yEAAyE;AACzE,MAAM,CAAC,MAAM,gBAAgB,GAAoC,CAAC,EAChE,SAAS,EACT,uBAAuB,EACvB,aAAa,EACb,MAAM,EACN,SAAS,GAAG,IAAI,GACjB,EAAE,EAAE;IACH,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,EAAE,CAAC;IACnC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAEtC,2EAA2E;IAC3E,mFAAmF;IACnF,MAAM,oBAAoB,GAAG,OAAO,CAClC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,cAAc,CAAC,UAAU,CAAC,EACrE,CAAC,SAAS,CAAC,CACZ,CAAC;IAEF,wDAAwD;IACxD,iCAAiC;IACjC,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE;QACrC,IAAI,CAAC,YAAY;YAAE,OAAO,SAAS,CAAC;QAEpC,OAAO,SAAS;aACb,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC,CAAC,oDAAoD;YACnE,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC/B,mDAAmD;gBACnD,OAAO;oBACL,GAAG,IAAI;oBACP,aAAa,EAAE,sBAAsB;iBACtC,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAgC,CAAC;IACpD,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IAE9B,wDAAwD;IACxD,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,iBAAiB,CAAC,KAAK,CACzC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,cAAc,CAAC,OAAO,CAC3C,CAAC;IACF,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CACrC,CAAC;IACF,MAAM,WAAW,GACf,UAAU,IAAI,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IAEnE,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC;IAC3D,sEAAsE;IACtE,cAAc;IACd,MAAM,UAAU,GAAG,aAAa,GAAG,CAAC,CAAC;IAErC,IAAI,yBAAyB,GAAG,CAAC,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,EAAE,EAAE,CAAC;YAClE,yBAAyB,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,MAAM,qBAAqB,GACzB,iBAAiB,CAAC,MAAM,GAAG,yBAAyB,CAAC;IACvD,MAAM,qCAAqC,GAAG,uBAAuB;QACnE,CAAC,CAAC,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,KAAK,CACR,CAAC,uBAAuB,GAAG,YAAY,GAAG,qBAAqB,CAAC;YAC9D,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,yBAAyB,CAAC,CACzC,EACD,CAAC,CACF;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,CACL,KAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO;QACnB;;;;;UAKE;QACF,KAAK,EAAC,MAAM,EACZ,UAAU,EAAE,CAAC,EACb,cAAc,EAAE,UAAU,EAC1B,WAAW,EAAE,WAAW,YAEvB,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9B,MAAM,YAAY,GAAG,oBAAoB,EAAE,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC;YAClE,OAAO,CACL,MAAC,GAAG,IAAmB,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACxD,KAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,YAC1C,KAAC,WAAW,IACV,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAC7C,uBAAuB,EAAE,qCAAqC,EAC9D,aAAa,EAAE,UAAU,EACzB,QAAQ,EACN,YAAY;gCACV,CAAC,CAAC,MAAM;gCACR,CAAC,CAAC,oBAAoB;oCACpB,CAAC,CAAC,KAAK;oCACP,CAAC,CAAC,QAAQ,EAEhB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,GACnD,GACE,EACL,IAAI,CAAC,MAAM,KAAK,cAAc,CAAC,UAAU;wBACxC,YAAY;wBACZ,IAAI,CAAC,mBAAmB,IAAI,CAC1B,KAAC,uBAAuB,IACtB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAC7C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,uBAAuB,EACrB,qCAAqC,EAEvC,aAAa,EAAE,UAAU,GACzB,CACH,KAjCK,IAAI,CAAC,MAAM,CAkCf,CACP,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { TodoToolCall } from '@vybestack/llxprt-code-core';
7
+ export interface GroupedToolCall {
8
+ toolCall: TodoToolCall;
9
+ count: number;
10
+ }
11
+ /**
12
+ * Function to group consecutive identical tool calls
13
+ * Identical tool calls (same name and parameters) that occur consecutively are grouped with a count
14
+ * Different tool calls are shown separately
15
+ */
16
+ export declare const groupToolCalls: (toolCalls: TodoToolCall[]) => GroupedToolCall[];
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Function to group consecutive identical tool calls
8
+ * Identical tool calls (same name and parameters) that occur consecutively are grouped with a count
9
+ * Different tool calls are shown separately
10
+ */
11
+ export const groupToolCalls = (toolCalls) => {
12
+ if (toolCalls.length === 0)
13
+ return [];
14
+ const grouped = [];
15
+ let currentGroup = {
16
+ toolCall: toolCalls[0],
17
+ count: 1,
18
+ };
19
+ for (let i = 1; i < toolCalls.length; i++) {
20
+ const current = toolCalls[i];
21
+ const prev = currentGroup.toolCall;
22
+ // Check if this is the same tool call as the previous one
23
+ if (current.name === prev.name &&
24
+ JSON.stringify(current.parameters) === JSON.stringify(prev.parameters)) {
25
+ // Increment count for consecutive identical call
26
+ currentGroup.count++;
27
+ }
28
+ else {
29
+ // Different call, save the current group and start a new one
30
+ grouped.push(currentGroup);
31
+ currentGroup = {
32
+ toolCall: current,
33
+ count: 1,
34
+ };
35
+ }
36
+ }
37
+ // Don't forget the last group
38
+ grouped.push(currentGroup);
39
+ return grouped;
40
+ };
41
+ //# sourceMappingURL=todo-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todo-utils.js","sourceRoot":"","sources":["../../../../src/ui/components/todo-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,SAAyB,EACN,EAAE;IACrB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,IAAI,YAAY,GAAoB;QAClC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;QACtB,KAAK,EAAE,CAAC;KACT,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC;QAEnC,0DAA0D;QAC1D,IACE,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;YAC1B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EACtE,CAAC;YACD,iDAAiD;YACjD,YAAY,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,6DAA6D;YAC7D,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3B,YAAY,GAAG;gBACb,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,CAAC;aACT,CAAC;QACJ,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE3B,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ import { LoadedSettings } from '../../config/settings.js';
8
+ export declare const SettingsContext: React.Context<LoadedSettings | undefined>;
9
+ export declare const useSettings: () => LoadedSettings;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React, { useContext } from 'react';
7
+ export const SettingsContext = React.createContext(undefined);
8
+ export const useSettings = () => {
9
+ const context = useContext(SettingsContext);
10
+ if (context === undefined) {
11
+ throw new Error('useSettings must be used within a SettingsProvider');
12
+ }
13
+ return context;
14
+ };
15
+ //# sourceMappingURL=SettingsContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SettingsContext.js","sourceRoot":"","sources":["../../../../src/ui/contexts/SettingsContext.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAG1C,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,CAChD,SAAS,CACV,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAC5C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ import { Todo } from '@vybestack/llxprt-code-core';
8
+ interface TodoContextType {
9
+ todos: Todo[];
10
+ updateTodos: (todos: Todo[]) => void;
11
+ refreshTodos: () => void;
12
+ }
13
+ export declare const TodoContext: React.Context<TodoContextType>;
14
+ export declare const useTodoContext: () => TodoContextType;
15
+ export {};
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ const defaultContextValue = {
8
+ todos: [],
9
+ updateTodos: () => {
10
+ throw new Error('NotYetImplemented');
11
+ },
12
+ refreshTodos: () => {
13
+ throw new Error('NotYetImplemented');
14
+ },
15
+ };
16
+ export const TodoContext = React.createContext(defaultContextValue);
17
+ export const useTodoContext = () => React.useContext(TodoContext);
18
+ //# sourceMappingURL=TodoContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TodoContext.js","sourceRoot":"","sources":["../../../../src/ui/contexts/TodoContext.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,MAAM,mBAAmB,GAAoB;IAC3C,KAAK,EAAE,EAAE;IACT,WAAW,EAAE,GAAG,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,YAAY,EAAE,GAAG,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GACtB,KAAK,CAAC,aAAa,CAAkB,mBAAmB,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ interface TodoProviderProps {
3
+ children: React.ReactNode;
4
+ sessionId: string;
5
+ }
6
+ export declare const TodoProvider: React.FC<TodoProviderProps>;
7
+ export {};
@@ -0,0 +1,62 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState, useEffect, useMemo, useCallback } from 'react';
3
+ import { TodoStore, todoEvents, } from '@vybestack/llxprt-code-core';
4
+ import { TodoContext } from './TodoContext.js';
5
+ export const TodoProvider = ({ children, sessionId = 'default', }) => {
6
+ const [todos, setTodos] = useState([]);
7
+ const [loading, setLoading] = useState(true);
8
+ const [error, setError] = useState(null);
9
+ const refreshTodos = useCallback(async () => {
10
+ try {
11
+ setLoading(true);
12
+ const store = new TodoStore(sessionId);
13
+ const todos = await store.readTodos();
14
+ setTodos(todos);
15
+ setError(null);
16
+ }
17
+ catch (err) {
18
+ setError(`Failed to load todos: ${err instanceof Error ? err.message : 'Unknown error'}`);
19
+ setTodos([]);
20
+ }
21
+ finally {
22
+ setLoading(false);
23
+ }
24
+ }, [sessionId]);
25
+ // Load initial data
26
+ useEffect(() => {
27
+ refreshTodos();
28
+ }, [refreshTodos]);
29
+ // Listen for todo updates
30
+ useEffect(() => {
31
+ const handleTodoUpdate = (eventData) => {
32
+ // Verify this update is for our session
33
+ if (eventData.sessionId === sessionId) {
34
+ // Use the todos from the event instead of re-reading from file
35
+ // This avoids race conditions with file I/O
36
+ setTodos(eventData.todos);
37
+ setError(null);
38
+ }
39
+ };
40
+ todoEvents.onTodoUpdated(handleTodoUpdate);
41
+ return () => {
42
+ todoEvents.offTodoUpdated(handleTodoUpdate);
43
+ };
44
+ }, [sessionId]);
45
+ const updateTodos = useCallback((newTodos) => {
46
+ setTodos(newTodos);
47
+ // Persist to store
48
+ const store = new TodoStore(sessionId);
49
+ store.writeTodos(newTodos).catch((err) => {
50
+ setError(`Failed to save todos: ${err instanceof Error ? err.message : 'Unknown error'}`);
51
+ });
52
+ }, [sessionId]);
53
+ const contextValue = useMemo(() => ({
54
+ todos,
55
+ updateTodos,
56
+ refreshTodos,
57
+ loading,
58
+ error,
59
+ }), [todos, updateTodos, refreshTodos, loading, error]);
60
+ return (_jsx(TodoContext.Provider, { value: contextValue, children: children }));
61
+ };
62
+ //# sourceMappingURL=TodoProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TodoProvider.js","sourceRoot":"","sources":["../../../../src/ui/contexts/TodoProvider.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ import { TodoToolCall } from '@vybestack/llxprt-code-core';
8
+ export interface ToolCallContextType {
9
+ /**
10
+ * Get executing tool calls for a specific todo
11
+ */
12
+ getExecutingToolCalls: (todoId: string) => TodoToolCall[];
13
+ /**
14
+ * Subscribe to tool call updates
15
+ */
16
+ subscribe: (callback: () => void) => () => void;
17
+ }
18
+ export declare const ToolCallContext: React.Context<ToolCallContextType>;
19
+ export declare const useToolCallContext: () => ToolCallContextType;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ const defaultContextValue = {
8
+ getExecutingToolCalls: () => [],
9
+ subscribe: () => () => { },
10
+ };
11
+ export const ToolCallContext = React.createContext(defaultContextValue);
12
+ export const useToolCallContext = () => React.useContext(ToolCallContext);
13
+ //# sourceMappingURL=ToolCallContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolCallContext.js","sourceRoot":"","sources":["../../../../src/ui/contexts/ToolCallContext.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAe1B,MAAM,mBAAmB,GAAwB;IAC/C,qBAAqB,EAAE,GAAG,EAAE,CAAC,EAAE;IAC/B,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAC1B,KAAK,CAAC,aAAa,CAAsB,mBAAmB,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ interface ToolCallProviderProps {
8
+ children: React.ReactNode;
9
+ sessionId: string;
10
+ }
11
+ export declare const ToolCallProvider: React.FC<ToolCallProviderProps>;
12
+ export {};