@defai.digital/ax-cli 2.7.0 → 3.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 (197) hide show
  1. package/.ax-cli/checkpoints/2025-11-20/checkpoint-2dd84869-e62d-46c8-9885-7e45f37f36e2.json +69 -0
  2. package/.ax-cli/checkpoints/2025-11-20/checkpoint-484dc350-353f-4808-9ed1-ebb3cefdab37.json +24 -0
  3. package/.ax-cli/checkpoints/2025-11-20/checkpoint-74a18b87-6172-4215-962b-44bb9f46a662.json +69 -0
  4. package/.ax-cli/checkpoints/2025-11-20/checkpoint-870a5fb9-6e82-4ff2-8ec8-af4c251cc514.json +44 -0
  5. package/.ax-cli/checkpoints/2025-11-20/checkpoint-93946601-0e83-456c-ba47-def9713124dd.json +24 -0
  6. package/.ax-cli/checkpoints/metadata.json +62 -0
  7. package/README.md +87 -11
  8. package/dist/agent/context-manager.d.ts +2 -2
  9. package/dist/agent/context-manager.js +37 -15
  10. package/dist/agent/context-manager.js.map +1 -1
  11. package/dist/agent/dependency-resolver.d.ts +83 -0
  12. package/dist/agent/dependency-resolver.js +310 -0
  13. package/dist/agent/dependency-resolver.js.map +1 -0
  14. package/dist/agent/llm-agent.d.ts +111 -0
  15. package/dist/agent/llm-agent.js +625 -3
  16. package/dist/agent/llm-agent.js.map +1 -1
  17. package/dist/agent/specialized/analysis-agent.d.ts +11 -0
  18. package/dist/agent/specialized/analysis-agent.js +33 -0
  19. package/dist/agent/specialized/analysis-agent.js.map +1 -0
  20. package/dist/agent/specialized/debug-agent.d.ts +11 -0
  21. package/dist/agent/specialized/debug-agent.js +33 -0
  22. package/dist/agent/specialized/debug-agent.js.map +1 -0
  23. package/dist/agent/specialized/documentation-agent.d.ts +11 -0
  24. package/dist/agent/specialized/documentation-agent.js +33 -0
  25. package/dist/agent/specialized/documentation-agent.js.map +1 -0
  26. package/dist/agent/specialized/index.d.ts +11 -0
  27. package/dist/agent/specialized/index.js +12 -0
  28. package/dist/agent/specialized/index.js.map +1 -0
  29. package/dist/agent/specialized/performance-agent.d.ts +11 -0
  30. package/dist/agent/specialized/performance-agent.js +33 -0
  31. package/dist/agent/specialized/performance-agent.js.map +1 -0
  32. package/dist/agent/specialized/refactoring-agent.d.ts +11 -0
  33. package/dist/agent/specialized/refactoring-agent.js +33 -0
  34. package/dist/agent/specialized/refactoring-agent.js.map +1 -0
  35. package/dist/agent/specialized/testing-agent.d.ts +11 -0
  36. package/dist/agent/specialized/testing-agent.js +33 -0
  37. package/dist/agent/specialized/testing-agent.js.map +1 -0
  38. package/dist/agent/subagent-orchestrator.d.ts +128 -0
  39. package/dist/agent/subagent-orchestrator.js +388 -0
  40. package/dist/agent/subagent-orchestrator.js.map +1 -0
  41. package/dist/agent/subagent-types.d.ts +262 -0
  42. package/dist/agent/subagent-types.js +152 -0
  43. package/dist/agent/subagent-types.js.map +1 -0
  44. package/dist/agent/subagent.d.ts +88 -0
  45. package/dist/agent/subagent.js +426 -0
  46. package/dist/agent/subagent.js.map +1 -0
  47. package/dist/checkpoint/index.d.ts +9 -0
  48. package/dist/checkpoint/index.js +11 -0
  49. package/dist/checkpoint/index.js.map +1 -0
  50. package/dist/checkpoint/manager.d.ts +99 -0
  51. package/dist/checkpoint/manager.js +281 -0
  52. package/dist/checkpoint/manager.js.map +1 -0
  53. package/dist/checkpoint/storage.d.ts +31 -0
  54. package/dist/checkpoint/storage.js +265 -0
  55. package/dist/checkpoint/storage.js.map +1 -0
  56. package/dist/checkpoint/types.d.ts +111 -0
  57. package/dist/checkpoint/types.js +17 -0
  58. package/dist/checkpoint/types.js.map +1 -0
  59. package/dist/commands/cache.js +5 -3
  60. package/dist/commands/cache.js.map +1 -1
  61. package/dist/commands/memory.js +21 -16
  62. package/dist/commands/memory.js.map +1 -1
  63. package/dist/commands/plan.d.ts +43 -0
  64. package/dist/commands/plan.js +385 -0
  65. package/dist/commands/plan.js.map +1 -0
  66. package/dist/commands/rewind.d.ts +19 -0
  67. package/dist/commands/rewind.js +221 -0
  68. package/dist/commands/rewind.js.map +1 -0
  69. package/dist/constants.d.ts +28 -0
  70. package/dist/constants.js +29 -0
  71. package/dist/constants.js.map +1 -1
  72. package/dist/hooks/use-enhanced-input.d.ts +5 -1
  73. package/dist/hooks/use-enhanced-input.js +23 -10
  74. package/dist/hooks/use-enhanced-input.js.map +1 -1
  75. package/dist/hooks/use-input-handler.d.ts +11 -1
  76. package/dist/hooks/use-input-handler.js +294 -2
  77. package/dist/hooks/use-input-handler.js.map +1 -1
  78. package/dist/llm/client.js +2 -1
  79. package/dist/llm/client.js.map +1 -1
  80. package/dist/llm/tools.d.ts +5 -0
  81. package/dist/llm/tools.js +57 -6
  82. package/dist/llm/tools.js.map +1 -1
  83. package/dist/mcp/client.d.ts +1 -0
  84. package/dist/mcp/client.js +30 -8
  85. package/dist/mcp/client.js.map +1 -1
  86. package/dist/mcp/transports.d.ts +0 -1
  87. package/dist/mcp/transports.js +10 -7
  88. package/dist/mcp/transports.js.map +1 -1
  89. package/dist/planner/dependency-resolver.d.ts +72 -0
  90. package/dist/planner/dependency-resolver.js +272 -0
  91. package/dist/planner/dependency-resolver.js.map +1 -0
  92. package/dist/planner/index.d.ts +12 -0
  93. package/dist/planner/index.js +26 -0
  94. package/dist/planner/index.js.map +1 -0
  95. package/dist/planner/plan-generator.d.ts +74 -0
  96. package/dist/planner/plan-generator.js +244 -0
  97. package/dist/planner/plan-generator.js.map +1 -0
  98. package/dist/planner/plan-storage.d.ts +98 -0
  99. package/dist/planner/plan-storage.js +325 -0
  100. package/dist/planner/plan-storage.js.map +1 -0
  101. package/dist/planner/prompts/planning-prompt.d.ts +41 -0
  102. package/dist/planner/prompts/planning-prompt.js +289 -0
  103. package/dist/planner/prompts/planning-prompt.js.map +1 -0
  104. package/dist/planner/task-planner.d.ts +135 -0
  105. package/dist/planner/task-planner.js +493 -0
  106. package/dist/planner/task-planner.js.map +1 -0
  107. package/dist/planner/token-estimator.d.ts +63 -0
  108. package/dist/planner/token-estimator.js +295 -0
  109. package/dist/planner/token-estimator.js.map +1 -0
  110. package/dist/planner/types.d.ts +669 -0
  111. package/dist/planner/types.js +213 -0
  112. package/dist/planner/types.js.map +1 -0
  113. package/dist/schemas/api-schemas.js +4 -0
  114. package/dist/schemas/api-schemas.js.map +1 -1
  115. package/dist/schemas/confirmation-schemas.d.ts +5 -0
  116. package/dist/schemas/confirmation-schemas.js +7 -0
  117. package/dist/schemas/confirmation-schemas.js.map +1 -1
  118. package/dist/schemas/index.d.ts +4 -4
  119. package/dist/tools/bash-output.d.ts +25 -0
  120. package/dist/tools/bash-output.js +145 -0
  121. package/dist/tools/bash-output.js.map +1 -0
  122. package/dist/tools/bash.d.ts +46 -2
  123. package/dist/tools/bash.js +241 -42
  124. package/dist/tools/bash.js.map +1 -1
  125. package/dist/tools/search.js +34 -9
  126. package/dist/tools/search.js.map +1 -1
  127. package/dist/tools/text-editor.d.ts +16 -0
  128. package/dist/tools/text-editor.js +37 -2
  129. package/dist/tools/text-editor.js.map +1 -1
  130. package/dist/ui/components/chat-history.d.ts +1 -0
  131. package/dist/ui/components/chat-history.js +125 -41
  132. package/dist/ui/components/chat-history.js.map +1 -1
  133. package/dist/ui/components/chat-input.js +10 -3
  134. package/dist/ui/components/chat-input.js.map +1 -1
  135. package/dist/ui/components/chat-interface.js +154 -45
  136. package/dist/ui/components/chat-interface.js.map +1 -1
  137. package/dist/ui/components/collapsible-tool-result.d.ts +26 -0
  138. package/dist/ui/components/collapsible-tool-result.js +172 -0
  139. package/dist/ui/components/collapsible-tool-result.js.map +1 -0
  140. package/dist/ui/components/command-suggestions.js +2 -1
  141. package/dist/ui/components/command-suggestions.js.map +1 -1
  142. package/dist/ui/components/confirmation-dialog.js +25 -36
  143. package/dist/ui/components/confirmation-dialog.js.map +1 -1
  144. package/dist/ui/components/index.d.ts +8 -0
  145. package/dist/ui/components/index.js +9 -0
  146. package/dist/ui/components/index.js.map +1 -1
  147. package/dist/ui/components/keyboard-hints.d.ts +35 -0
  148. package/dist/ui/components/keyboard-hints.js +134 -0
  149. package/dist/ui/components/keyboard-hints.js.map +1 -0
  150. package/dist/ui/components/loading-spinner.d.ts +2 -1
  151. package/dist/ui/components/loading-spinner.js +86 -34
  152. package/dist/ui/components/loading-spinner.js.map +1 -1
  153. package/dist/ui/components/phase-progress.d.ts +21 -0
  154. package/dist/ui/components/phase-progress.js +228 -0
  155. package/dist/ui/components/phase-progress.js.map +1 -0
  156. package/dist/ui/components/quick-actions.d.ts +12 -0
  157. package/dist/ui/components/quick-actions.js +122 -0
  158. package/dist/ui/components/quick-actions.js.map +1 -0
  159. package/dist/ui/components/reasoning-display.d.ts +0 -80
  160. package/dist/ui/components/reasoning-display.js +0 -83
  161. package/dist/ui/components/reasoning-display.js.map +1 -1
  162. package/dist/ui/components/status-bar.d.ts +25 -0
  163. package/dist/ui/components/status-bar.js +125 -0
  164. package/dist/ui/components/status-bar.js.map +1 -0
  165. package/dist/ui/components/subagent-monitor.d.ts +29 -0
  166. package/dist/ui/components/subagent-monitor.js +150 -0
  167. package/dist/ui/components/subagent-monitor.js.map +1 -0
  168. package/dist/ui/components/toast-notification.d.ts +123 -0
  169. package/dist/ui/components/toast-notification.js +143 -0
  170. package/dist/ui/components/toast-notification.js.map +1 -0
  171. package/dist/ui/components/welcome-panel.d.ts +10 -0
  172. package/dist/ui/components/welcome-panel.js +107 -0
  173. package/dist/ui/components/welcome-panel.js.map +1 -0
  174. package/dist/utils/background-task-manager.d.ts +95 -0
  175. package/dist/utils/background-task-manager.js +330 -0
  176. package/dist/utils/background-task-manager.js.map +1 -0
  177. package/dist/utils/confirmation-service.js +8 -3
  178. package/dist/utils/confirmation-service.js.map +1 -1
  179. package/dist/utils/history-manager.d.ts +1 -0
  180. package/dist/utils/history-manager.js +40 -5
  181. package/dist/utils/history-manager.js.map +1 -1
  182. package/dist/utils/json-utils.d.ts +7 -0
  183. package/dist/utils/json-utils.js +70 -2
  184. package/dist/utils/json-utils.js.map +1 -1
  185. package/dist/utils/message-optimizer.d.ts +1 -0
  186. package/dist/utils/message-optimizer.js +7 -1
  187. package/dist/utils/message-optimizer.js.map +1 -1
  188. package/dist/utils/project-analyzer.js +5 -2
  189. package/dist/utils/project-analyzer.js.map +1 -1
  190. package/dist/utils/settings-manager.js +12 -10
  191. package/dist/utils/settings-manager.js.map +1 -1
  192. package/dist/utils/text-utils.js +3 -3
  193. package/dist/utils/text-utils.js.map +1 -1
  194. package/dist/utils/token-counter.d.ts +5 -0
  195. package/dist/utils/token-counter.js +18 -3
  196. package/dist/utils/token-counter.js.map +1 -1
  197. package/package.json +3 -1
@@ -3,29 +3,38 @@ import { Box, Text, useInput } from "ink";
3
3
  import { DiffRenderer } from "./diff-renderer.js";
4
4
  export default function ConfirmationDialog({ operation, filename, onConfirm, onReject, showVSCodeOpen = false, content, }) {
5
5
  const [selectedOption, setSelectedOption] = useState(0);
6
- const [feedbackMode, setFeedbackMode] = useState(false);
7
- const [feedback, setFeedback] = useState("");
6
+ // Simplified to 3 options - removed "No, with feedback" as it's rarely used
8
7
  const options = [
9
8
  "Yes",
10
9
  "Yes, and don't ask again this session",
11
10
  "No",
12
- "No, with feedback",
13
11
  ];
14
12
  useInput((input, key) => {
15
- if (feedbackMode) {
16
- if (key.return) {
17
- onReject(feedback.trim());
18
- return;
19
- }
20
- if (key.backspace || key.delete) {
21
- setFeedback((prev) => prev.slice(0, -1));
22
- return;
23
- }
24
- if (input && !key.ctrl && !key.meta) {
25
- setFeedback((prev) => prev + input);
13
+ // Quick number key selection (1-3)
14
+ if (input >= "1" && input <= "3") {
15
+ const optionIndex = parseInt(input) - 1;
16
+ if (optionIndex < options.length) {
17
+ if (optionIndex === 0) {
18
+ onConfirm(false);
19
+ }
20
+ else if (optionIndex === 1) {
21
+ onConfirm(true);
22
+ }
23
+ else if (optionIndex === 2) {
24
+ onReject("Operation cancelled by user");
25
+ }
26
26
  }
27
27
  return;
28
28
  }
29
+ // Y/N quick keys
30
+ if (input.toLowerCase() === "y") {
31
+ onConfirm(false);
32
+ return;
33
+ }
34
+ if (input.toLowerCase() === "n") {
35
+ onReject("Operation cancelled by user");
36
+ return;
37
+ }
29
38
  if (key.upArrow || (key.shift && key.tab)) {
30
39
  setSelectedOption((prev) => (prev > 0 ? prev - 1 : options.length - 1));
31
40
  return;
@@ -44,33 +53,13 @@ export default function ConfirmationDialog({ operation, filename, onConfirm, onR
44
53
  else if (selectedOption === 2) {
45
54
  onReject("Operation cancelled by user");
46
55
  }
47
- else {
48
- setFeedbackMode(true);
49
- }
50
56
  return;
51
57
  }
52
58
  if (key.escape) {
53
- if (feedbackMode) {
54
- setFeedbackMode(false);
55
- setFeedback("");
56
- }
57
- else {
58
- // Cancel the confirmation when escape is pressed from main confirmation
59
- onReject("Operation cancelled by user (pressed Escape)");
60
- }
59
+ onReject("Operation cancelled by user (pressed Escape)");
61
60
  return;
62
61
  }
63
62
  });
64
- if (feedbackMode) {
65
- return (React.createElement(Box, { flexDirection: "column", padding: 1 },
66
- React.createElement(Box, { flexDirection: "column", marginBottom: 1 },
67
- React.createElement(Text, { color: "gray" }, "Type your feedback and press Enter, or press Escape to go back.")),
68
- React.createElement(Box, { borderStyle: "round", borderColor: "yellow", paddingX: 1, marginTop: 1 },
69
- React.createElement(Text, { color: "gray" }, "\u276F "),
70
- React.createElement(Text, null,
71
- feedback,
72
- React.createElement(Text, { color: "white" }, "\u2588")))));
73
- }
74
63
  return (React.createElement(Box, { flexDirection: "column" },
75
64
  React.createElement(Box, { marginTop: 1 },
76
65
  React.createElement(Box, null,
@@ -100,6 +89,6 @@ export default function ConfirmationDialog({ operation, filename, onConfirm, onR
100
89
  ". ",
101
90
  option))))),
102
91
  React.createElement(Box, { marginTop: 1 },
103
- React.createElement(Text, { color: "gray", dimColor: true }, "\u2191\u2193 navigate \u2022 Enter select \u2022 Esc cancel")))));
92
+ React.createElement(Text, { color: "gray", dimColor: true }, "y/n or 1-3 quick select \u2022 \u2191\u2193 navigate \u2022 Enter select \u2022 Esc cancel")))));
104
93
  }
105
94
  //# sourceMappingURL=confirmation-dialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"confirmation-dialog.js","sourceRoot":"","sources":["../../../src/ui/components/confirmation-dialog.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"confirmation-dialog.js","sourceRoot":"","sources":["../../../src/ui/components/confirmation-dialog.tsx"],"names":[],"mappings":"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"}
@@ -8,3 +8,11 @@ export { LoadingSpinner } from './loading-spinner.js';
8
8
  export { CommandSuggestions } from './command-suggestions.js';
9
9
  export { MCPStatus } from './mcp-status.js';
10
10
  export { ReasoningDisplay } from './reasoning-display.js';
11
+ export { StatusBar } from './status-bar.js';
12
+ export { QuickActions } from './quick-actions.js';
13
+ export { WelcomePanel } from './welcome-panel.js';
14
+ export { KeyboardHints, KeyboardShortcutGuide, getKeyboardShortcutGuideText, ALL_SHORTCUTS } from './keyboard-hints.js';
15
+ export { CollapsibleToolResult, getToolActionName, getFilePath } from './collapsible-tool-result.js';
16
+ export { ToastNotification, ToastContainer, useToasts, TOAST_MESSAGES } from './toast-notification.js';
17
+ export type { ToastMessage } from './toast-notification.js';
18
+ export { PhaseProgress, PlanSummary } from './phase-progress.js';
@@ -8,4 +8,13 @@ export { LoadingSpinner } from './loading-spinner.js';
8
8
  export { CommandSuggestions } from './command-suggestions.js';
9
9
  export { MCPStatus } from './mcp-status.js';
10
10
  export { ReasoningDisplay } from './reasoning-display.js';
11
+ // New UX-enhanced components
12
+ export { StatusBar } from './status-bar.js';
13
+ export { QuickActions } from './quick-actions.js';
14
+ export { WelcomePanel } from './welcome-panel.js';
15
+ export { KeyboardHints, KeyboardShortcutGuide, getKeyboardShortcutGuideText, ALL_SHORTCUTS } from './keyboard-hints.js';
16
+ export { CollapsibleToolResult, getToolActionName, getFilePath } from './collapsible-tool-result.js';
17
+ export { ToastNotification, ToastContainer, useToasts, TOAST_MESSAGES } from './toast-notification.js';
18
+ // Multi-phase planning components
19
+ export { PhaseProgress, PlanSummary } from './phase-progress.js';
11
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,6BAA6B;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxH,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGvG,kCAAkC;AAClC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Keyboard Hints Component
3
+ * Shows contextual keyboard shortcuts based on current state
4
+ */
5
+ import React from "react";
6
+ interface KeyboardHintsProps {
7
+ mode: "idle" | "typing" | "processing" | "confirmation" | "menu";
8
+ showExtended?: boolean;
9
+ }
10
+ interface Shortcut {
11
+ keys: string;
12
+ description: string;
13
+ category?: string;
14
+ }
15
+ /**
16
+ * Complete keyboard shortcut reference
17
+ * Organized by category for the full shortcut guide
18
+ */
19
+ export declare const ALL_SHORTCUTS: Record<string, Shortcut[]>;
20
+ export declare function KeyboardHints({ mode, showExtended, }: KeyboardHintsProps): React.JSX.Element;
21
+ /**
22
+ * Full Keyboard Shortcut Guide Component
23
+ * Shows all available shortcuts organized by category
24
+ * Can be displayed via /shortcuts command or ? key
25
+ */
26
+ export interface KeyboardShortcutGuideProps {
27
+ onClose?: () => void;
28
+ }
29
+ export declare function KeyboardShortcutGuide({ onClose }: KeyboardShortcutGuideProps): React.JSX.Element;
30
+ /**
31
+ * Generates keyboard shortcut guide as a string
32
+ * Useful for displaying in chat history via /shortcuts command
33
+ */
34
+ export declare function getKeyboardShortcutGuideText(): string;
35
+ export default KeyboardHints;
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Keyboard Hints Component
3
+ * Shows contextual keyboard shortcuts based on current state
4
+ */
5
+ import React from "react";
6
+ import { Box, Text } from "ink";
7
+ const SHORTCUTS_BY_MODE = {
8
+ idle: [
9
+ { keys: "Enter", description: "send message" },
10
+ { keys: "Ctrl+K", description: "quick actions" },
11
+ { keys: "↑/↓", description: "history" },
12
+ { keys: "Ctrl+C", description: "clear input" },
13
+ ],
14
+ typing: [
15
+ { keys: "Enter", description: "send" },
16
+ { keys: "Shift+Enter", description: "new line" },
17
+ { keys: "Tab", description: "complete" },
18
+ { keys: "Esc", description: "clear" },
19
+ ],
20
+ processing: [
21
+ { keys: "Esc", description: "interrupt" },
22
+ ],
23
+ confirmation: [
24
+ { keys: "1-4", description: "quick select" },
25
+ { keys: "↑/↓", description: "navigate" },
26
+ { keys: "Enter", description: "select" },
27
+ { keys: "Esc", description: "cancel" },
28
+ ],
29
+ menu: [
30
+ { keys: "↑/↓", description: "navigate" },
31
+ { keys: "Enter", description: "select" },
32
+ { keys: "Esc", description: "close" },
33
+ { keys: "Type", description: "search" },
34
+ ],
35
+ };
36
+ const EXTENDED_SHORTCUTS = [
37
+ { keys: "Shift+Tab", description: "toggle auto-edit" },
38
+ { keys: "Ctrl+O", description: "toggle verbose" },
39
+ { keys: "Ctrl+B", description: "background mode" },
40
+ { keys: "?", description: "all shortcuts" },
41
+ ];
42
+ /**
43
+ * Complete keyboard shortcut reference
44
+ * Organized by category for the full shortcut guide
45
+ */
46
+ export const ALL_SHORTCUTS = {
47
+ "Navigation": [
48
+ { keys: "↑/↓", description: "Navigate command history" },
49
+ { keys: "Ctrl+←/→", description: "Move cursor by word" },
50
+ { keys: "Ctrl+A", description: "Move to line start" },
51
+ { keys: "Ctrl+E", description: "Move to line end" },
52
+ ],
53
+ "Editing": [
54
+ { keys: "Ctrl+C", description: "Clear current input" },
55
+ { keys: "Ctrl+X", description: "Clear entire input line" },
56
+ { keys: "Ctrl+W", description: "Delete word before cursor" },
57
+ { keys: "Ctrl+U", description: "Delete to start of line" },
58
+ { keys: "Backspace", description: "Delete character before" },
59
+ { keys: "Delete", description: "Delete character after" },
60
+ ],
61
+ "Modes": [
62
+ { keys: "Shift+Tab", description: "Toggle auto-edit mode" },
63
+ { keys: "Ctrl+O", description: "Toggle verbose mode" },
64
+ { keys: "Ctrl+B", description: "Toggle background mode" },
65
+ ],
66
+ "Actions": [
67
+ { keys: "Enter", description: "Send message / confirm" },
68
+ { keys: "Shift+Enter", description: "New line (multiline)" },
69
+ { keys: "Ctrl+K", description: "Open quick actions menu" },
70
+ { keys: "Ctrl+Y", description: "Copy last response to clipboard" },
71
+ { keys: "Tab", description: "Complete command suggestion" },
72
+ { keys: "Esc", description: "Cancel / close menu" },
73
+ ],
74
+ "Confirmation Dialog": [
75
+ { keys: "1-4", description: "Quick select option" },
76
+ { keys: "↑/↓", description: "Navigate options" },
77
+ { keys: "Enter", description: "Select highlighted" },
78
+ { keys: "Esc", description: "Cancel operation" },
79
+ ],
80
+ };
81
+ export function KeyboardHints({ mode, showExtended = false, }) {
82
+ const shortcuts = SHORTCUTS_BY_MODE[mode] || SHORTCUTS_BY_MODE.idle;
83
+ return (React.createElement(Box, { flexDirection: "row", flexWrap: "wrap" },
84
+ shortcuts.map((shortcut, index) => (React.createElement(Box, { key: shortcut.keys, marginRight: 2 },
85
+ React.createElement(Text, { color: "yellow", dimColor: true }, shortcut.keys),
86
+ React.createElement(Text, { color: "gray", dimColor: true },
87
+ " ",
88
+ shortcut.description),
89
+ index < shortcuts.length - 1 && (React.createElement(Text, { color: "gray", dimColor: true },
90
+ " ",
91
+ "\u2022"))))),
92
+ showExtended && (React.createElement(React.Fragment, null,
93
+ React.createElement(Text, { color: "gray", dimColor: true },
94
+ " ",
95
+ "|",
96
+ " "),
97
+ EXTENDED_SHORTCUTS.slice(0, 2).map((shortcut) => (React.createElement(Box, { key: shortcut.keys, marginRight: 2 },
98
+ React.createElement(Text, { color: "yellow", dimColor: true }, shortcut.keys),
99
+ React.createElement(Text, { color: "gray", dimColor: true },
100
+ " ",
101
+ shortcut.description))))))));
102
+ }
103
+ export function KeyboardShortcutGuide({ onClose }) {
104
+ return (React.createElement(Box, { flexDirection: "column", paddingX: 2, paddingY: 1 },
105
+ React.createElement(Box, { marginBottom: 1 },
106
+ React.createElement(Text, { color: "cyan", bold: true }, "\u2328\uFE0F Keyboard Shortcuts"),
107
+ onClose && (React.createElement(Text, { color: "gray", dimColor: true }, " (Esc to close)"))),
108
+ Object.entries(ALL_SHORTCUTS).map(([category, shortcuts]) => (React.createElement(Box, { key: category, flexDirection: "column", marginBottom: 1 },
109
+ React.createElement(Text, { color: "yellow", bold: true }, category),
110
+ React.createElement(Box, { flexDirection: "column", paddingLeft: 2 }, shortcuts.map((shortcut) => (React.createElement(Box, { key: shortcut.keys, flexDirection: "row" },
111
+ React.createElement(Box, { width: 16 },
112
+ React.createElement(Text, { color: "white" }, shortcut.keys)),
113
+ React.createElement(Text, { color: "gray" }, shortcut.description)))))))),
114
+ React.createElement(Box, { marginTop: 1, borderStyle: "single", borderColor: "gray", paddingX: 1 },
115
+ React.createElement(Text, { color: "gray", dimColor: true }, "\uD83D\uDCA1 Tip: Use /help for all commands \u2022 Ctrl+K for quick actions"))));
116
+ }
117
+ /**
118
+ * Generates keyboard shortcut guide as a string
119
+ * Useful for displaying in chat history via /shortcuts command
120
+ */
121
+ export function getKeyboardShortcutGuideText() {
122
+ let guide = "⌨️ **Keyboard Shortcuts**\n\n";
123
+ for (const [category, shortcuts] of Object.entries(ALL_SHORTCUTS)) {
124
+ guide += `**${category}**\n`;
125
+ for (const shortcut of shortcuts) {
126
+ guide += ` ${shortcut.keys.padEnd(14)} ${shortcut.description}\n`;
127
+ }
128
+ guide += "\n";
129
+ }
130
+ guide += "💡 Tip: Use /help for all commands • Ctrl+K for quick actions";
131
+ return guide;
132
+ }
133
+ export default KeyboardHints;
134
+ //# sourceMappingURL=keyboard-hints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard-hints.js","sourceRoot":"","sources":["../../../src/ui/components/keyboard-hints.tsx"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ interface LoadingSpinnerProps {
3
3
  isActive: boolean;
4
4
  processingTime: number;
5
5
  tokenCount: number;
6
+ currentAction?: "thinking" | "searching" | "editing" | "executing" | "reading" | "writing";
6
7
  }
7
- export declare function LoadingSpinner({ isActive, processingTime, tokenCount, }: LoadingSpinnerProps): React.JSX.Element | null;
8
+ export declare function LoadingSpinner({ isActive, processingTime, tokenCount, currentAction, }: LoadingSpinnerProps): React.JSX.Element | null;
8
9
  export {};
@@ -1,59 +1,111 @@
1
1
  import React, { useState, useEffect } from "react";
2
2
  import { Box, Text } from "ink";
3
3
  import { formatTokenCount } from "../../utils/token-counter.js";
4
- const loadingTexts = [
4
+ // Contextual loading messages based on current action
5
+ const loadingTextsByAction = {
6
+ thinking: [
7
+ "Thinking...",
8
+ "Analyzing...",
9
+ "Reasoning...",
10
+ "Considering...",
11
+ "Processing...",
12
+ ],
13
+ searching: [
14
+ "Searching codebase...",
15
+ "Scanning files...",
16
+ "Finding matches...",
17
+ "Looking for patterns...",
18
+ ],
19
+ editing: [
20
+ "Editing file...",
21
+ "Making changes...",
22
+ "Updating code...",
23
+ "Applying edits...",
24
+ ],
25
+ executing: [
26
+ "Running command...",
27
+ "Executing...",
28
+ "Processing command...",
29
+ "Working...",
30
+ ],
31
+ reading: [
32
+ "Reading file...",
33
+ "Loading content...",
34
+ "Fetching data...",
35
+ ],
36
+ writing: [
37
+ "Writing file...",
38
+ "Saving changes...",
39
+ "Creating file...",
40
+ ],
41
+ };
42
+ // Default messages when no specific action
43
+ const defaultLoadingTexts = [
5
44
  "Thinking...",
6
- "Computing...",
7
- "Analyzing...",
8
45
  "Processing...",
9
- "Calculating...",
10
- "Interfacing...",
11
- "Optimizing...",
12
- "Synthesizing...",
13
- "Decrypting...",
14
- "Calibrating...",
15
- "Bootstrapping...",
16
- "Synchronizing...",
17
- "Compiling...",
18
- "Downloading...",
46
+ "Analyzing...",
47
+ "Working...",
19
48
  ];
20
- export function LoadingSpinner({ isActive, processingTime, tokenCount, }) {
49
+ export function LoadingSpinner({ isActive, processingTime, tokenCount, currentAction = "thinking", }) {
21
50
  const [spinnerFrame, setSpinnerFrame] = useState(0);
22
51
  const [loadingTextIndex, setLoadingTextIndex] = useState(0);
52
+ // Get the appropriate loading texts for current action
53
+ const loadingTexts = loadingTextsByAction[currentAction] || defaultLoadingTexts;
23
54
  useEffect(() => {
24
55
  if (!isActive)
25
56
  return;
26
- const spinnerFrames = ["/", "-", "\\", "|"];
27
- // Reduced frequency: 500ms instead of 250ms to reduce flickering on Windows
57
+ const spinnerFrames = ["", "", "", "", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
58
+ // Smooth animation at 80ms intervals
28
59
  const interval = setInterval(() => {
29
60
  setSpinnerFrame((prev) => (prev + 1) % spinnerFrames.length);
30
- }, 500);
61
+ }, 80);
31
62
  return () => clearInterval(interval);
32
63
  }, [isActive]);
33
64
  useEffect(() => {
34
65
  if (!isActive)
35
66
  return;
36
67
  setLoadingTextIndex(Math.floor(Math.random() * loadingTexts.length));
37
- // Increased interval: 4s instead of 2s to reduce state changes
68
+ // Rotate messages every 3 seconds
38
69
  const interval = setInterval(() => {
39
- setLoadingTextIndex(Math.floor(Math.random() * loadingTexts.length));
40
- }, 4000);
70
+ setLoadingTextIndex((prev) => (prev + 1) % loadingTexts.length);
71
+ }, 3000);
41
72
  return () => clearInterval(interval);
42
- }, [isActive]);
73
+ }, [isActive, loadingTexts.length]);
74
+ // Reset loading text index when action changes
75
+ useEffect(() => {
76
+ setLoadingTextIndex(0);
77
+ }, [currentAction]);
43
78
  if (!isActive)
44
79
  return null;
45
- const spinnerFrames = ["/", "-", "\\", "|"];
46
- return (React.createElement(Box, { marginTop: 1 },
47
- React.createElement(Text, { color: "cyan" },
48
- spinnerFrames[spinnerFrame],
49
- " ",
50
- loadingTexts[loadingTextIndex],
51
- " "),
52
- React.createElement(Text, { color: "gray" },
53
- "(",
54
- processingTime,
55
- "s \u00B7 \u2191 ",
56
- formatTokenCount(tokenCount),
57
- " tokens \u00B7 esc to interrupt)")));
80
+ const spinnerFrames = ["", "", "", "", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
81
+ // Format time display
82
+ const formatTime = (seconds) => {
83
+ if (seconds < 60)
84
+ return `${seconds}s`;
85
+ const mins = Math.floor(seconds / 60);
86
+ const secs = seconds % 60;
87
+ return `${mins}m ${secs}s`;
88
+ };
89
+ return (React.createElement(Box, { marginTop: 1, flexDirection: "column" },
90
+ React.createElement(Box, null,
91
+ React.createElement(Text, { color: "cyan", bold: true }, spinnerFrames[spinnerFrame]),
92
+ React.createElement(Text, { color: "cyan" },
93
+ " ",
94
+ loadingTexts[loadingTextIndex % loadingTexts.length] || loadingTexts[0],
95
+ " ")),
96
+ React.createElement(Box, { marginLeft: 2 },
97
+ React.createElement(Text, { color: "gray", dimColor: true },
98
+ formatTime(processingTime),
99
+ " elapsed"),
100
+ tokenCount > 0 && (React.createElement(Text, { color: "gray", dimColor: true },
101
+ " ",
102
+ "\u2022 ",
103
+ formatTokenCount(tokenCount),
104
+ " tokens")),
105
+ React.createElement(Text, { color: "gray", dimColor: true },
106
+ " ",
107
+ "\u2022 ",
108
+ React.createElement(Text, { color: "yellow" }, "esc"),
109
+ " to interrupt"))));
58
110
  }
59
111
  //# sourceMappingURL=loading-spinner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loading-spinner.js","sourceRoot":"","sources":["../../../src/ui/components/loading-spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAQhE,MAAM,YAAY,GAAG;IACnB,aAAa;IACb,cAAc;IACd,cAAc;IACd,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,cAAc;IACd,gBAAgB;CACjB,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,cAAc,EACd,UAAU,GACU;IACpB,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE5D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5C,4EAA4E;QAC5E,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/D,CAAC,EAAE,GAAG,CAAC,CAAC;QAER,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QAErE,+DAA+D;QAC/D,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QACvE,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IAE5C,OAAO,CACL,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC;QACf,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;YACf,aAAa,CAAC,YAAY,CAAC;;YAAG,YAAY,CAAC,gBAAgB,CAAC;YAAE,GAAG,CAC7D;QACP,oBAAC,IAAI,IAAC,KAAK,EAAC,MAAM;;YACd,cAAc;;YAAQ,gBAAgB,CAAC,UAAU,CAAC;+CAE/C,CACH,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"loading-spinner.js","sourceRoot":"","sources":["../../../src/ui/components/loading-spinner.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Phase Progress Component
3
+ *
4
+ * Displays the progress of multi-phase plan execution.
5
+ */
6
+ import React from "react";
7
+ import { TaskPlan } from "../../planner/types.js";
8
+ interface PhaseProgressProps {
9
+ plan: TaskPlan;
10
+ showDetails?: boolean;
11
+ compact?: boolean;
12
+ }
13
+ export declare function PhaseProgress({ plan, showDetails, compact, }: PhaseProgressProps): React.JSX.Element;
14
+ interface PlanSummaryProps {
15
+ plan: TaskPlan;
16
+ onApprove?: () => void;
17
+ onReject?: () => void;
18
+ onModify?: () => void;
19
+ }
20
+ export declare function PlanSummary({ plan }: PlanSummaryProps): React.JSX.Element;
21
+ export default PhaseProgress;