grok-cli-hurry-mode 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/.grok/settings.json +3 -0
  2. package/LICENSE +21 -0
  3. package/README.md +452 -0
  4. package/dist/agent/grok-agent.d.ts +54 -0
  5. package/dist/agent/grok-agent.js +674 -0
  6. package/dist/agent/grok-agent.js.map +1 -0
  7. package/dist/agent/index.d.ts +14 -0
  8. package/dist/agent/index.js +137 -0
  9. package/dist/agent/index.js.map +1 -0
  10. package/dist/commands/mcp.d.ts +2 -0
  11. package/dist/commands/mcp.js +245 -0
  12. package/dist/commands/mcp.js.map +1 -0
  13. package/dist/grok/client.d.ts +49 -0
  14. package/dist/grok/client.js +85 -0
  15. package/dist/grok/client.js.map +1 -0
  16. package/dist/grok/tools.d.ts +8 -0
  17. package/dist/grok/tools.js +357 -0
  18. package/dist/grok/tools.js.map +1 -0
  19. package/dist/hooks/use-enhanced-input.d.ts +37 -0
  20. package/dist/hooks/use-enhanced-input.js +217 -0
  21. package/dist/hooks/use-enhanced-input.js.map +1 -0
  22. package/dist/hooks/use-input-handler.d.ts +34 -0
  23. package/dist/hooks/use-input-handler.js +611 -0
  24. package/dist/hooks/use-input-handler.js.map +1 -0
  25. package/dist/hooks/use-input-history.d.ts +9 -0
  26. package/dist/hooks/use-input-history.js +64 -0
  27. package/dist/hooks/use-input-history.js.map +1 -0
  28. package/dist/index.d.ts +2 -0
  29. package/dist/index.js +151949 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/mcp/client.d.ts +29 -0
  32. package/dist/mcp/client.js +167 -0
  33. package/dist/mcp/client.js.map +1 -0
  34. package/dist/mcp/config.d.ts +13 -0
  35. package/dist/mcp/config.js +51 -0
  36. package/dist/mcp/config.js.map +1 -0
  37. package/dist/mcp/transports.d.ts +51 -0
  38. package/dist/mcp/transports.js +229 -0
  39. package/dist/mcp/transports.js.map +1 -0
  40. package/dist/node_modules/react/index.js +1841 -0
  41. package/dist/tools/bash.d.ts +10 -0
  42. package/dist/tools/bash.js +81 -0
  43. package/dist/tools/bash.js.map +1 -0
  44. package/dist/tools/confirmation-tool.d.ts +16 -0
  45. package/dist/tools/confirmation-tool.js +75 -0
  46. package/dist/tools/confirmation-tool.js.map +1 -0
  47. package/dist/tools/index.d.ts +6 -0
  48. package/dist/tools/index.js +16 -0
  49. package/dist/tools/index.js.map +1 -0
  50. package/dist/tools/morph-editor.d.ts +36 -0
  51. package/dist/tools/morph-editor.js +347 -0
  52. package/dist/tools/morph-editor.js.map +1 -0
  53. package/dist/tools/search.d.ts +69 -0
  54. package/dist/tools/search.js +341 -0
  55. package/dist/tools/search.js.map +1 -0
  56. package/dist/tools/text-editor.d.ts +16 -0
  57. package/dist/tools/text-editor.js +565 -0
  58. package/dist/tools/text-editor.js.map +1 -0
  59. package/dist/tools/todo-tool.d.ts +20 -0
  60. package/dist/tools/todo-tool.js +135 -0
  61. package/dist/tools/todo-tool.js.map +1 -0
  62. package/dist/types/index.d.ts +30 -0
  63. package/dist/types/index.js +3 -0
  64. package/dist/types/index.js.map +1 -0
  65. package/dist/ui/app.d.ts +7 -0
  66. package/dist/ui/app.js +160 -0
  67. package/dist/ui/app.js.map +1 -0
  68. package/dist/ui/components/api-key-input.d.ts +7 -0
  69. package/dist/ui/components/api-key-input.js +124 -0
  70. package/dist/ui/components/api-key-input.js.map +1 -0
  71. package/dist/ui/components/chat-history.d.ts +8 -0
  72. package/dist/ui/components/chat-history.js +177 -0
  73. package/dist/ui/components/chat-history.js.map +1 -0
  74. package/dist/ui/components/chat-input.d.ts +9 -0
  75. package/dist/ui/components/chat-input.js +87 -0
  76. package/dist/ui/components/chat-input.js.map +1 -0
  77. package/dist/ui/components/chat-interface.d.ts +8 -0
  78. package/dist/ui/components/chat-interface.js +344 -0
  79. package/dist/ui/components/chat-interface.js.map +1 -0
  80. package/dist/ui/components/command-suggestions.d.ts +17 -0
  81. package/dist/ui/components/command-suggestions.js +68 -0
  82. package/dist/ui/components/command-suggestions.js.map +1 -0
  83. package/dist/ui/components/confirmation-dialog.d.ts +11 -0
  84. package/dist/ui/components/confirmation-dialog.js +167 -0
  85. package/dist/ui/components/confirmation-dialog.js.map +1 -0
  86. package/dist/ui/components/diff-renderer.d.ts +13 -0
  87. package/dist/ui/components/diff-renderer.js +217 -0
  88. package/dist/ui/components/diff-renderer.js.map +1 -0
  89. package/dist/ui/components/loading-spinner.d.ts +8 -0
  90. package/dist/ui/components/loading-spinner.js +92 -0
  91. package/dist/ui/components/loading-spinner.js.map +1 -0
  92. package/dist/ui/components/mcp-status.d.ts +5 -0
  93. package/dist/ui/components/mcp-status.js +74 -0
  94. package/dist/ui/components/mcp-status.js.map +1 -0
  95. package/dist/ui/components/model-selection.d.ts +12 -0
  96. package/dist/ui/components/model-selection.js +28 -0
  97. package/dist/ui/components/model-selection.js.map +1 -0
  98. package/dist/ui/shared/max-sized-box.d.ts +8 -0
  99. package/dist/ui/shared/max-sized-box.js +15 -0
  100. package/dist/ui/shared/max-sized-box.js.map +1 -0
  101. package/dist/ui/utils/code-colorizer.d.ts +2 -0
  102. package/dist/ui/utils/code-colorizer.js +18 -0
  103. package/dist/ui/utils/code-colorizer.js.map +1 -0
  104. package/dist/ui/utils/colors.d.ts +14 -0
  105. package/dist/ui/utils/colors.js +18 -0
  106. package/dist/ui/utils/colors.js.map +1 -0
  107. package/dist/ui/utils/markdown-renderer.d.ts +4 -0
  108. package/dist/ui/utils/markdown-renderer.js +29 -0
  109. package/dist/ui/utils/markdown-renderer.js.map +1 -0
  110. package/dist/utils/confirmation-service.d.ts +33 -0
  111. package/dist/utils/confirmation-service.js +113 -0
  112. package/dist/utils/confirmation-service.js.map +1 -0
  113. package/dist/utils/custom-instructions.d.ts +1 -0
  114. package/dist/utils/custom-instructions.js +53 -0
  115. package/dist/utils/custom-instructions.js.map +1 -0
  116. package/dist/utils/model-config.d.ts +28 -0
  117. package/dist/utils/model-config.js +49 -0
  118. package/dist/utils/model-config.js.map +1 -0
  119. package/dist/utils/settings-manager.d.ts +94 -0
  120. package/dist/utils/settings-manager.js +275 -0
  121. package/dist/utils/settings-manager.js.map +1 -0
  122. package/dist/utils/settings.d.ts +1 -0
  123. package/dist/utils/settings.js +8 -0
  124. package/dist/utils/settings.js.map +1 -0
  125. package/dist/utils/text-utils.d.ts +80 -0
  126. package/dist/utils/text-utils.js +197 -0
  127. package/dist/utils/text-utils.js.map +1 -0
  128. package/dist/utils/token-counter.d.ts +33 -0
  129. package/dist/utils/token-counter.js +83 -0
  130. package/dist/utils/token-counter.js.map +1 -0
  131. package/dist/yoga.wasm +0 -0
  132. package/eslint.config.mjs +28 -0
  133. package/fix.awk +41 -0
  134. package/grok-logo-screenshot.png +0 -0
  135. package/package.json +68 -0
  136. package/sed_cmd.sh +35 -0
  137. package/temp.txt +29 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-interface.js","sourceRoot":"","sources":["../../../src/ui/components/chat-interface.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import React from "react";
2
+ interface CommandSuggestion {
3
+ command: string;
4
+ description: string;
5
+ }
6
+ interface CommandSuggestionsProps {
7
+ suggestions: CommandSuggestion[];
8
+ input: string;
9
+ selectedIndex: number;
10
+ isVisible: boolean;
11
+ }
12
+ export declare const MAX_SUGGESTIONS = 8;
13
+ export declare function filterCommandSuggestions<T extends {
14
+ command: string;
15
+ }>(suggestions: T[], input: string): T[];
16
+ export declare function CommandSuggestions({ suggestions, input, selectedIndex, isVisible, }: CommandSuggestionsProps): React.JSX.Element | null;
17
+ export {};
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.MAX_SUGGESTIONS = void 0;
37
+ exports.filterCommandSuggestions = filterCommandSuggestions;
38
+ exports.CommandSuggestions = CommandSuggestions;
39
+ const react_1 = __importStar(require("react"));
40
+ const ink_1 = require("ink");
41
+ exports.MAX_SUGGESTIONS = 8;
42
+ function filterCommandSuggestions(suggestions, input) {
43
+ const lowerInput = input.toLowerCase();
44
+ return suggestions
45
+ .filter((s) => s.command.toLowerCase().startsWith(lowerInput))
46
+ .slice(0, exports.MAX_SUGGESTIONS);
47
+ }
48
+ function CommandSuggestions({ suggestions, input, selectedIndex, isVisible, }) {
49
+ if (!isVisible)
50
+ return null;
51
+ const filteredSuggestions = (0, react_1.useMemo)(() => filterCommandSuggestions(suggestions, input), [suggestions, input]);
52
+ return (<ink_1.Box marginTop={1} flexDirection="column">
53
+ {filteredSuggestions.map((suggestion, index) => (<ink_1.Box key={index} paddingLeft={1}>
54
+ <ink_1.Text color={index === selectedIndex ? "black" : "white"} backgroundColor={index === selectedIndex ? "cyan" : undefined}>
55
+ {suggestion.command}
56
+ </ink_1.Text>
57
+ <ink_1.Box marginLeft={1}>
58
+ <ink_1.Text color="gray">{suggestion.description}</ink_1.Text>
59
+ </ink_1.Box>
60
+ </ink_1.Box>))}
61
+ <ink_1.Box marginTop={1}>
62
+ <ink_1.Text color="gray" dimColor>
63
+ ↑↓ navigate • Enter/Tab select • Esc cancel
64
+ </ink_1.Text>
65
+ </ink_1.Box>
66
+ </ink_1.Box>);
67
+ }
68
+ //# sourceMappingURL=command-suggestions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-suggestions.js","sourceRoot":"","sources":["../../../src/ui/components/command-suggestions.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,4DAQC;AAED,gDAmCC;AA9DD,+CAAuC;AACvC,6BAAgC;AAcnB,QAAA,eAAe,GAAG,CAAC,CAAC;AAEjC,SAAgB,wBAAwB,CACtC,WAAgB,EAChB,KAAa;IAEb,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,OAAO,WAAW;SACf,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;SAC7D,KAAK,CAAC,CAAC,EAAE,uBAAe,CAAC,CAAC;AAC/B,CAAC;AAED,SAAgB,kBAAkB,CAAC,EACjC,WAAW,EACX,KAAK,EACL,aAAa,EACb,SAAS,GACe;IACxB,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,MAAM,mBAAmB,GAAG,IAAA,eAAO,EACjC,GAAG,EAAE,CAAC,wBAAwB,CAAC,WAAW,EAAE,KAAK,CAAC,EAClD,CAAC,WAAW,EAAE,KAAK,CAAC,CACrB,CAAC;IAEF,OAAO,CACL,CAAC,SAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CACvC;MAAA,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,CAC9C,CAAC,SAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAC9B;UAAA,CAAC,UAAI,CACH,KAAK,CAAC,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CACnD,eAAe,CAAC,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAE9D;YAAA,CAAC,UAAU,CAAC,OAAO,CACrB;UAAA,EAAE,UAAI,CACN;UAAA,CAAC,SAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CACjB;YAAA,CAAC,UAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,UAAI,CACnD;UAAA,EAAE,SAAG,CACP;QAAA,EAAE,SAAG,CAAC,CACP,CAAC,CACF;MAAA,CAAC,SAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAChB;QAAA,CAAC,UAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CACzB;;QACF,EAAE,UAAI,CACR;MAAA,EAAE,SAAG,CACP;IAAA,EAAE,SAAG,CAAC,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ interface ConfirmationDialogProps {
3
+ operation: string;
4
+ filename: string;
5
+ onConfirm: (dontAskAgain?: boolean) => void;
6
+ onReject: (feedback?: string) => void;
7
+ showVSCodeOpen?: boolean;
8
+ content?: string;
9
+ }
10
+ export default function ConfirmationDialog({ operation, filename, onConfirm, onReject, showVSCodeOpen, content, }: ConfirmationDialogProps): React.JSX.Element;
11
+ export {};
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.default = ConfirmationDialog;
37
+ const react_1 = __importStar(require("react"));
38
+ const ink_1 = require("ink");
39
+ const diff_renderer_js_1 = require("./diff-renderer.js");
40
+ function ConfirmationDialog({ operation, filename, onConfirm, onReject, showVSCodeOpen = false, content, }) {
41
+ const [selectedOption, setSelectedOption] = (0, react_1.useState)(0);
42
+ const [feedbackMode, setFeedbackMode] = (0, react_1.useState)(false);
43
+ const [feedback, setFeedback] = (0, react_1.useState)("");
44
+ const options = [
45
+ "Yes",
46
+ "Yes, and don't ask again this session",
47
+ "No",
48
+ "No, with feedback",
49
+ ];
50
+ (0, ink_1.useInput)((input, key) => {
51
+ if (feedbackMode) {
52
+ if (key.return) {
53
+ onReject(feedback.trim());
54
+ return;
55
+ }
56
+ if (key.backspace || key.delete) {
57
+ setFeedback((prev) => prev.slice(0, -1));
58
+ return;
59
+ }
60
+ if (input && !key.ctrl && !key.meta) {
61
+ setFeedback((prev) => prev + input);
62
+ }
63
+ return;
64
+ }
65
+ if (key.upArrow || (key.shift && key.tab)) {
66
+ setSelectedOption((prev) => (prev > 0 ? prev - 1 : options.length - 1));
67
+ return;
68
+ }
69
+ if (key.downArrow || key.tab) {
70
+ setSelectedOption((prev) => (prev + 1) % options.length);
71
+ return;
72
+ }
73
+ if (key.return) {
74
+ if (selectedOption === 0) {
75
+ onConfirm(false);
76
+ }
77
+ else if (selectedOption === 1) {
78
+ onConfirm(true);
79
+ }
80
+ else if (selectedOption === 2) {
81
+ onReject("Operation cancelled by user");
82
+ }
83
+ else {
84
+ setFeedbackMode(true);
85
+ }
86
+ return;
87
+ }
88
+ if (key.escape) {
89
+ if (feedbackMode) {
90
+ setFeedbackMode(false);
91
+ setFeedback("");
92
+ }
93
+ else {
94
+ // Cancel the confirmation when escape is pressed from main confirmation
95
+ onReject("Operation cancelled by user (pressed Escape)");
96
+ }
97
+ return;
98
+ }
99
+ });
100
+ if (feedbackMode) {
101
+ return (<ink_1.Box flexDirection="column" padding={1}>
102
+ <ink_1.Box flexDirection="column" marginBottom={1}>
103
+ <ink_1.Text color="gray">
104
+ Type your feedback and press Enter, or press Escape to go back.
105
+ </ink_1.Text>
106
+ </ink_1.Box>
107
+
108
+ <ink_1.Box borderStyle="round" borderColor="yellow" paddingX={1} marginTop={1}>
109
+ <ink_1.Text color="gray">❯ </ink_1.Text>
110
+ <ink_1.Text>
111
+ {feedback}
112
+ <ink_1.Text color="white">█</ink_1.Text>
113
+ </ink_1.Text>
114
+ </ink_1.Box>
115
+ </ink_1.Box>);
116
+ }
117
+ return (<ink_1.Box flexDirection="column">
118
+ {/* Tool use header - styled like chat history */}
119
+ <ink_1.Box marginTop={1}>
120
+ <ink_1.Box>
121
+ <ink_1.Text color="magenta">⏺</ink_1.Text>
122
+ <ink_1.Text color="white">
123
+ {" "}
124
+ {operation}({filename})
125
+ </ink_1.Text>
126
+ </ink_1.Box>
127
+ </ink_1.Box>
128
+
129
+ <ink_1.Box marginLeft={2} flexDirection="column">
130
+ <ink_1.Text color="gray">⎿ Requesting user confirmation</ink_1.Text>
131
+
132
+ {showVSCodeOpen && (<ink_1.Box marginTop={1}>
133
+ <ink_1.Text color="gray">⎿ Opened changes in Visual Studio Code ⧉</ink_1.Text>
134
+ </ink_1.Box>)}
135
+
136
+ {/* Show content preview if provided */}
137
+ {content && (<>
138
+ <ink_1.Text color="gray">⎿ {content.split('\n')[0]}</ink_1.Text>
139
+ <ink_1.Box marginLeft={4} flexDirection="column">
140
+ <diff_renderer_js_1.DiffRenderer diffContent={content} filename={filename} terminalWidth={80}/>
141
+ </ink_1.Box>
142
+ </>)}
143
+ </ink_1.Box>
144
+
145
+ {/* Confirmation options */}
146
+ <ink_1.Box flexDirection="column" marginTop={1}>
147
+ <ink_1.Box marginBottom={1}>
148
+ <ink_1.Text>Do you want to proceed with this operation?</ink_1.Text>
149
+ </ink_1.Box>
150
+
151
+ <ink_1.Box flexDirection="column">
152
+ {options.map((option, index) => (<ink_1.Box key={index} paddingLeft={1}>
153
+ <ink_1.Text color={selectedOption === index ? "black" : "white"} backgroundColor={selectedOption === index ? "cyan" : undefined}>
154
+ {index + 1}. {option}
155
+ </ink_1.Text>
156
+ </ink_1.Box>))}
157
+ </ink_1.Box>
158
+
159
+ <ink_1.Box marginTop={1}>
160
+ <ink_1.Text color="gray" dimColor>
161
+ ↑↓ navigate • Enter select • Esc cancel
162
+ </ink_1.Text>
163
+ </ink_1.Box>
164
+ </ink_1.Box>
165
+ </ink_1.Box>);
166
+ }
167
+ //# sourceMappingURL=confirmation-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirmation-dialog.js","sourceRoot":"","sources":["../../../src/ui/components/confirmation-dialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Professional diff renderer component
3
+ */
4
+ import React from 'react';
5
+ interface DiffRendererProps {
6
+ diffContent: string;
7
+ filename?: string;
8
+ tabWidth?: number;
9
+ availableTerminalHeight?: number;
10
+ terminalWidth?: number;
11
+ }
12
+ export declare const DiffRenderer: ({ diffContent, filename, tabWidth, availableTerminalHeight, terminalWidth, }: DiffRendererProps) => React.ReactElement;
13
+ export {};
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ /**
3
+ * Professional diff renderer component
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.DiffRenderer = void 0;
10
+ const react_1 = __importDefault(require("react"));
11
+ const ink_1 = require("ink");
12
+ const colors_js_1 = require("../utils/colors.js");
13
+ const crypto_1 = __importDefault(require("crypto"));
14
+ const max_sized_box_js_1 = require("../shared/max-sized-box.js");
15
+ function parseDiffWithLineNumbers(diffContent) {
16
+ const lines = diffContent.split('\n');
17
+ const result = [];
18
+ let currentOldLine = 0;
19
+ let currentNewLine = 0;
20
+ let inHunk = false;
21
+ const hunkHeaderRegex = /^@@ -(\d+),?\d* \+(\d+),?\d* @@/;
22
+ for (const line of lines) {
23
+ const hunkMatch = line.match(hunkHeaderRegex);
24
+ if (hunkMatch) {
25
+ currentOldLine = parseInt(hunkMatch[1], 10);
26
+ currentNewLine = parseInt(hunkMatch[2], 10);
27
+ inHunk = true;
28
+ result.push({ type: 'hunk', content: line });
29
+ // We need to adjust the starting point because the first line number applies to the *first* actual line change/context,
30
+ // but we increment *before* pushing that line. So decrement here.
31
+ currentOldLine--;
32
+ currentNewLine--;
33
+ continue;
34
+ }
35
+ if (!inHunk) {
36
+ // Skip standard Git header lines more robustly
37
+ if (line.startsWith('--- ') ||
38
+ line.startsWith('+++ ') ||
39
+ line.startsWith('diff --git') ||
40
+ line.startsWith('index ') ||
41
+ line.startsWith('similarity index') ||
42
+ line.startsWith('rename from') ||
43
+ line.startsWith('rename to') ||
44
+ line.startsWith('new file mode') ||
45
+ line.startsWith('deleted file mode'))
46
+ continue;
47
+ // If it's not a hunk or header, skip (or handle as 'other' if needed)
48
+ continue;
49
+ }
50
+ if (line.startsWith('+')) {
51
+ currentNewLine++; // Increment before pushing
52
+ result.push({
53
+ type: 'add',
54
+ newLine: currentNewLine,
55
+ content: line.substring(1),
56
+ });
57
+ }
58
+ else if (line.startsWith('-')) {
59
+ currentOldLine++; // Increment before pushing
60
+ result.push({
61
+ type: 'del',
62
+ oldLine: currentOldLine,
63
+ content: line.substring(1),
64
+ });
65
+ }
66
+ else if (line.startsWith(' ')) {
67
+ currentOldLine++; // Increment before pushing
68
+ currentNewLine++;
69
+ result.push({
70
+ type: 'context',
71
+ oldLine: currentOldLine,
72
+ newLine: currentNewLine,
73
+ content: line.substring(1),
74
+ });
75
+ }
76
+ else if (line.startsWith('\\')) {
77
+ // Handle ""
78
+ result.push({ type: 'other', content: line });
79
+ }
80
+ }
81
+ return result;
82
+ }
83
+ const DEFAULT_TAB_WIDTH = 4; // Spaces per tab for normalization
84
+ const DiffRenderer = ({ diffContent, filename, tabWidth = DEFAULT_TAB_WIDTH, availableTerminalHeight, terminalWidth = 80, }) => {
85
+ if (!diffContent || typeof diffContent !== 'string') {
86
+ return <ink_1.Text color={colors_js_1.Colors.AccentYellow}>No diff content.</ink_1.Text>;
87
+ }
88
+ // Strip the first summary line (e.g. "Updated file.txt with 1 addition and 2 removals")
89
+ const lines = diffContent.split('\n');
90
+ const firstLine = lines[0];
91
+ let actualDiffContent = diffContent;
92
+ if (firstLine && (firstLine.startsWith('Updated ') || firstLine.startsWith('Created '))) {
93
+ actualDiffContent = lines.slice(1).join('\n');
94
+ }
95
+ const parsedLines = parseDiffWithLineNumbers(actualDiffContent);
96
+ if (parsedLines.length === 0) {
97
+ return <ink_1.Text dimColor>No changes detected.</ink_1.Text>;
98
+ }
99
+ // Always render as diff format to show line numbers and + signs
100
+ const renderedOutput = renderDiffContent(parsedLines, filename, tabWidth, availableTerminalHeight, terminalWidth);
101
+ return <>{renderedOutput}</>;
102
+ };
103
+ exports.DiffRenderer = DiffRenderer;
104
+ const renderDiffContent = (parsedLines, filename, tabWidth = DEFAULT_TAB_WIDTH, availableTerminalHeight, terminalWidth) => {
105
+ // 1. Normalize whitespace (replace tabs with spaces) *before* further processing
106
+ const normalizedLines = parsedLines.map((line) => ({
107
+ ...line,
108
+ content: line.content.replace(/\t/g, ' '.repeat(tabWidth)),
109
+ }));
110
+ // Filter out non-displayable lines (hunks, potentially 'other') using the normalized list
111
+ const displayableLines = normalizedLines.filter((l) => l.type !== 'hunk' && l.type !== 'other');
112
+ if (displayableLines.length === 0) {
113
+ return <ink_1.Text dimColor>No changes detected.</ink_1.Text>;
114
+ }
115
+ // Calculate the minimum indentation across all displayable lines
116
+ let baseIndentation = Infinity; // Start high to find the minimum
117
+ for (const line of displayableLines) {
118
+ // Only consider lines with actual content for indentation calculation
119
+ if (line.content.trim() === '')
120
+ continue;
121
+ const firstCharIndex = line.content.search(/\S/); // Find index of first non-whitespace char
122
+ const currentIndent = firstCharIndex === -1 ? 0 : firstCharIndex; // Indent is 0 if no non-whitespace found
123
+ baseIndentation = Math.min(baseIndentation, currentIndent);
124
+ }
125
+ // If baseIndentation remained Infinity (e.g., no displayable lines with content), default to 0
126
+ if (!isFinite(baseIndentation)) {
127
+ baseIndentation = 0;
128
+ }
129
+ const key = filename
130
+ ? `diff-box-${filename}`
131
+ : `diff-box-${crypto_1.default.createHash('sha1').update(JSON.stringify(parsedLines)).digest('hex')}`;
132
+ let lastLineNumber = null;
133
+ const MAX_CONTEXT_LINES_WITHOUT_GAP = 5;
134
+ return (<max_sized_box_js_1.MaxSizedBox maxHeight={availableTerminalHeight} maxWidth={terminalWidth} key={key}>
135
+ {displayableLines.reduce((acc, line, index) => {
136
+ // Determine the relevant line number for gap calculation based on type
137
+ let relevantLineNumberForGapCalc = null;
138
+ if (line.type === 'add' || line.type === 'context') {
139
+ relevantLineNumberForGapCalc = line.newLine ?? null;
140
+ }
141
+ else if (line.type === 'del') {
142
+ // For deletions, the gap is typically in relation to the original file's line numbering
143
+ relevantLineNumberForGapCalc = line.oldLine ?? null;
144
+ }
145
+ if (lastLineNumber !== null &&
146
+ relevantLineNumberForGapCalc !== null &&
147
+ relevantLineNumberForGapCalc >
148
+ lastLineNumber + MAX_CONTEXT_LINES_WITHOUT_GAP + 1) {
149
+ acc.push(<ink_1.Box key={`gap-${index}`}>
150
+ <ink_1.Text wrap="truncate">{'═'.repeat(terminalWidth)}</ink_1.Text>
151
+ </ink_1.Box>);
152
+ }
153
+ const lineKey = `diff-line-${index}`;
154
+ let gutterNumStr = '';
155
+ let backgroundColor = undefined;
156
+ let prefixSymbol = ' ';
157
+ let dim = false;
158
+ switch (line.type) {
159
+ case 'add':
160
+ gutterNumStr = (line.newLine ?? '').toString();
161
+ backgroundColor = '#86efac'; // Light green for additions
162
+ prefixSymbol = '+';
163
+ lastLineNumber = line.newLine ?? null;
164
+ break;
165
+ case 'del':
166
+ gutterNumStr = (line.oldLine ?? '').toString();
167
+ backgroundColor = 'redBright'; // Light red for deletions
168
+ prefixSymbol = '-';
169
+ // For deletions, update lastLineNumber based on oldLine if it's advancing.
170
+ // This helps manage gaps correctly if there are multiple consecutive deletions
171
+ // or if a deletion is followed by a context line far away in the original file.
172
+ if (line.oldLine !== undefined) {
173
+ lastLineNumber = line.oldLine;
174
+ }
175
+ break;
176
+ case 'context':
177
+ gutterNumStr = (line.newLine ?? '').toString();
178
+ dim = true;
179
+ prefixSymbol = ' ';
180
+ lastLineNumber = line.newLine ?? null;
181
+ break;
182
+ default:
183
+ return acc;
184
+ }
185
+ const displayContent = line.content.substring(baseIndentation);
186
+ acc.push(<ink_1.Box key={lineKey} flexDirection="row">
187
+ <ink_1.Text color={colors_js_1.Colors.Gray} dimColor={dim}>{gutterNumStr.padEnd(4)}</ink_1.Text>
188
+ <ink_1.Text color={backgroundColor ? '#000000' : undefined} backgroundColor={backgroundColor} dimColor={!backgroundColor && dim}>{prefixSymbol} </ink_1.Text>
189
+ <ink_1.Text color={backgroundColor ? '#000000' : undefined} backgroundColor={backgroundColor} dimColor={!backgroundColor && dim} wrap="wrap">
190
+ {displayContent}
191
+ </ink_1.Text>
192
+ </ink_1.Box>);
193
+ return acc;
194
+ }, [])}
195
+ </max_sized_box_js_1.MaxSizedBox>);
196
+ };
197
+ const getLanguageFromExtension = (extension) => {
198
+ const languageMap = {
199
+ js: 'javascript',
200
+ ts: 'typescript',
201
+ py: 'python',
202
+ json: 'json',
203
+ css: 'css',
204
+ html: 'html',
205
+ sh: 'bash',
206
+ md: 'markdown',
207
+ yaml: 'yaml',
208
+ yml: 'yaml',
209
+ txt: 'plaintext',
210
+ java: 'java',
211
+ c: 'c',
212
+ cpp: 'cpp',
213
+ rb: 'ruby',
214
+ };
215
+ return languageMap[extension] || null; // Return null if extension not found
216
+ };
217
+ //# sourceMappingURL=diff-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-renderer.js","sourceRoot":"","sources":["../../../src/ui/components/diff-renderer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ interface LoadingSpinnerProps {
3
+ isActive: boolean;
4
+ processingTime: number;
5
+ tokenCount: number;
6
+ }
7
+ export declare function LoadingSpinner({ isActive, processingTime, tokenCount, }: LoadingSpinnerProps): React.JSX.Element | null;
8
+ export {};
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.LoadingSpinner = LoadingSpinner;
37
+ const react_1 = __importStar(require("react"));
38
+ const ink_1 = require("ink");
39
+ const token_counter_js_1 = require("../../utils/token-counter.js");
40
+ const loadingTexts = [
41
+ "Thinking...",
42
+ "Computing...",
43
+ "Analyzing...",
44
+ "Processing...",
45
+ "Calculating...",
46
+ "Interfacing...",
47
+ "Optimizing...",
48
+ "Synthesizing...",
49
+ "Decrypting...",
50
+ "Calibrating...",
51
+ "Bootstrapping...",
52
+ "Synchronizing...",
53
+ "Compiling...",
54
+ "Downloading...",
55
+ ];
56
+ function LoadingSpinner({ isActive, processingTime, tokenCount, }) {
57
+ const [spinnerFrame, setSpinnerFrame] = (0, react_1.useState)(0);
58
+ const [loadingTextIndex, setLoadingTextIndex] = (0, react_1.useState)(0);
59
+ (0, react_1.useEffect)(() => {
60
+ if (!isActive)
61
+ return;
62
+ const spinnerFrames = ["/", "-", "\\", "|"];
63
+ // Reduced frequency: 500ms instead of 250ms to reduce flickering on Windows
64
+ const interval = setInterval(() => {
65
+ setSpinnerFrame((prev) => (prev + 1) % spinnerFrames.length);
66
+ }, 500);
67
+ return () => clearInterval(interval);
68
+ }, [isActive]);
69
+ (0, react_1.useEffect)(() => {
70
+ if (!isActive)
71
+ return;
72
+ setLoadingTextIndex(Math.floor(Math.random() * loadingTexts.length));
73
+ // Increased interval: 4s instead of 2s to reduce state changes
74
+ const interval = setInterval(() => {
75
+ setLoadingTextIndex(Math.floor(Math.random() * loadingTexts.length));
76
+ }, 4000);
77
+ return () => clearInterval(interval);
78
+ }, [isActive]);
79
+ if (!isActive)
80
+ return null;
81
+ const spinnerFrames = ["/", "-", "\\", "|"];
82
+ return (<ink_1.Box marginTop={1}>
83
+ <ink_1.Text color="cyan">
84
+ {spinnerFrames[spinnerFrame]} {loadingTexts[loadingTextIndex]}{" "}
85
+ </ink_1.Text>
86
+ <ink_1.Text color="gray">
87
+ ({processingTime}s · ↑ {(0, token_counter_js_1.formatTokenCount)(tokenCount)} tokens · esc to
88
+ interrupt)
89
+ </ink_1.Text>
90
+ </ink_1.Box>);
91
+ }
92
+ //# sourceMappingURL=loading-spinner.js.map