@defai.digital/ax-cli 3.6.0 → 3.6.2

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 (101) hide show
  1. package/README.md +447 -102
  2. package/config-defaults/settings.yaml +24 -0
  3. package/dist/analyzers/code-smells/detectors/data-clumps-detector.js +7 -9
  4. package/dist/analyzers/code-smells/detectors/data-clumps-detector.js.map +1 -1
  5. package/dist/analyzers/code-smells/detectors/dead-code-detector.js +1 -1
  6. package/dist/analyzers/code-smells/detectors/dead-code-detector.js.map +1 -1
  7. package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js +22 -10
  8. package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js.map +1 -1
  9. package/dist/analyzers/code-smells/detectors/feature-envy-detector.js +1 -1
  10. package/dist/analyzers/code-smells/detectors/feature-envy-detector.js.map +1 -1
  11. package/dist/analyzers/code-smells/detectors/inappropriate-intimacy-detector.js +1 -1
  12. package/dist/analyzers/code-smells/detectors/inappropriate-intimacy-detector.js.map +1 -1
  13. package/dist/analyzers/code-smells/detectors/large-class-detector.js +4 -1
  14. package/dist/analyzers/code-smells/detectors/large-class-detector.js.map +1 -1
  15. package/dist/analyzers/code-smells/detectors/long-method-detector.js +4 -1
  16. package/dist/analyzers/code-smells/detectors/long-method-detector.js.map +1 -1
  17. package/dist/analyzers/code-smells/detectors/long-parameter-list-detector.js +4 -1
  18. package/dist/analyzers/code-smells/detectors/long-parameter-list-detector.js.map +1 -1
  19. package/dist/analyzers/code-smells/detectors/magic-numbers-detector.js +4 -5
  20. package/dist/analyzers/code-smells/detectors/magic-numbers-detector.js.map +1 -1
  21. package/dist/analyzers/code-smells/detectors/nested-conditionals-detector.js +4 -1
  22. package/dist/analyzers/code-smells/detectors/nested-conditionals-detector.js.map +1 -1
  23. package/dist/constants.d.ts +13 -0
  24. package/dist/constants.js +28 -0
  25. package/dist/constants.js.map +1 -1
  26. package/dist/schemas/settings-schemas.d.ts +40 -0
  27. package/dist/schemas/settings-schemas.js +32 -0
  28. package/dist/schemas/settings-schemas.js.map +1 -1
  29. package/dist/tools/web-search/index.d.ts +0 -2
  30. package/dist/tools/web-search/index.js +0 -2
  31. package/dist/tools/web-search/index.js.map +1 -1
  32. package/dist/tools/web-search/router.d.ts +0 -2
  33. package/dist/tools/web-search/router.js +2 -37
  34. package/dist/tools/web-search/router.js.map +1 -1
  35. package/dist/tools/web-search/web-search-tool.js +2 -12
  36. package/dist/tools/web-search/web-search-tool.js.map +1 -1
  37. package/dist/ui/components/chat-history.d.ts +2 -0
  38. package/dist/ui/components/chat-history.js +32 -81
  39. package/dist/ui/components/chat-history.js.map +1 -1
  40. package/dist/ui/components/chat-input.d.ts +4 -1
  41. package/dist/ui/components/chat-input.js +133 -52
  42. package/dist/ui/components/chat-input.js.map +1 -1
  43. package/dist/ui/components/chat-interface.js +4 -4
  44. package/dist/ui/components/chat-interface.js.map +1 -1
  45. package/dist/ui/components/keyboard-hints.js +2 -0
  46. package/dist/ui/components/keyboard-hints.js.map +1 -1
  47. package/dist/ui/components/status-bar.d.ts +2 -0
  48. package/dist/ui/components/status-bar.js +31 -17
  49. package/dist/ui/components/status-bar.js.map +1 -1
  50. package/dist/ui/components/tool-group-display.d.ts +15 -0
  51. package/dist/ui/components/tool-group-display.js +91 -0
  52. package/dist/ui/components/tool-group-display.js.map +1 -0
  53. package/dist/ui/components/welcome-panel.js +4 -0
  54. package/dist/ui/components/welcome-panel.js.map +1 -1
  55. package/dist/ui/hooks/use-enhanced-input.d.ts +4 -0
  56. package/dist/ui/hooks/use-enhanced-input.js +156 -9
  57. package/dist/ui/hooks/use-enhanced-input.js.map +1 -1
  58. package/dist/ui/hooks/use-input-handler.d.ts +4 -0
  59. package/dist/ui/hooks/use-input-handler.js +28 -10
  60. package/dist/ui/hooks/use-input-handler.js.map +1 -1
  61. package/dist/ui/utils/change-summarizer.d.ts +20 -0
  62. package/dist/ui/utils/change-summarizer.js +193 -0
  63. package/dist/ui/utils/change-summarizer.js.map +1 -0
  64. package/dist/ui/utils/tool-grouper.d.ts +62 -0
  65. package/dist/ui/utils/tool-grouper.js +224 -0
  66. package/dist/ui/utils/tool-grouper.js.map +1 -0
  67. package/dist/utils/audit-logger.d.ts +28 -70
  68. package/dist/utils/audit-logger.js +30 -135
  69. package/dist/utils/audit-logger.js.map +1 -1
  70. package/dist/utils/config-loader.d.ts +4 -0
  71. package/dist/utils/config-loader.js.map +1 -1
  72. package/dist/utils/paste-utils.d.ts +99 -0
  73. package/dist/utils/paste-utils.js +265 -0
  74. package/dist/utils/paste-utils.js.map +1 -0
  75. package/dist/utils/rate-limiter.d.ts +15 -1
  76. package/dist/utils/rate-limiter.js +15 -1
  77. package/dist/utils/rate-limiter.js.map +1 -1
  78. package/package.json +4 -8
  79. package/packages/schemas/package.json +1 -1
  80. package/.ax-cli/CUSTOM.md +0 -269
  81. package/.ax-cli/checkpoints/2025-11-20/checkpoint-2dd84869-e62d-46c8-9885-7e45f37f36e2.json +0 -69
  82. package/.ax-cli/checkpoints/2025-11-20/checkpoint-484dc350-353f-4808-9ed1-ebb3cefdab37.json +0 -24
  83. package/.ax-cli/checkpoints/2025-11-20/checkpoint-74a18b87-6172-4215-962b-44bb9f46a662.json +0 -69
  84. package/.ax-cli/checkpoints/2025-11-20/checkpoint-870a5fb9-6e82-4ff2-8ec8-af4c251cc514.json +0 -44
  85. package/.ax-cli/checkpoints/2025-11-20/checkpoint-93946601-0e83-456c-ba47-def9713124dd.json +0 -24
  86. package/.ax-cli/checkpoints/metadata.json +0 -62
  87. package/.ax-cli/index.json +0 -44
  88. package/.ax-cli/memory.json +0 -55
  89. package/.ax-cli/settings.json +0 -1
  90. package/dist/agent/chat-history-manager.d.ts +0 -56
  91. package/dist/agent/chat-history-manager.js +0 -150
  92. package/dist/agent/chat-history-manager.js.map +0 -1
  93. package/dist/agent/tool-manager.d.ts +0 -39
  94. package/dist/agent/tool-manager.js +0 -76
  95. package/dist/agent/tool-manager.js.map +0 -1
  96. package/dist/tools/web-search/engines/brave.d.ts +0 -16
  97. package/dist/tools/web-search/engines/brave.js +0 -99
  98. package/dist/tools/web-search/engines/brave.js.map +0 -1
  99. package/dist/tools/web-search/engines/tavily.d.ts +0 -17
  100. package/dist/tools/web-search/engines/tavily.js +0 -73
  101. package/dist/tools/web-search/engines/tavily.js.map +0 -1
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Tool Group Display Component
3
+ * Renders grouped tool operations in quiet mode
4
+ */
5
+ import React from 'react';
6
+ import { Box, Text } from 'ink';
7
+ import { getOperationCounts, getGroupDuration, formatDuration } from '../utils/tool-grouper.js';
8
+ import { summarizeChanges } from '../utils/change-summarizer.js';
9
+ /**
10
+ * Get display name for resource based on group type
11
+ */
12
+ function getResourceDisplayName(group) {
13
+ switch (group.groupType) {
14
+ case 'file':
15
+ // Extract filename from path
16
+ const parts = group.resource.split('/');
17
+ return parts[parts.length - 1] || group.resource;
18
+ case 'bash':
19
+ return group.resource.replace('bash:', '');
20
+ case 'search':
21
+ return group.resource.replace('search:', '');
22
+ case 'todo':
23
+ return 'tasks';
24
+ default:
25
+ return group.resource;
26
+ }
27
+ }
28
+ /**
29
+ * Format operation counts for display
30
+ */
31
+ function formatOperationCounts(counts, groupType) {
32
+ const parts = [];
33
+ if (groupType === 'file') {
34
+ if (counts.updates > 0) {
35
+ parts.push(`${counts.updates} edit${counts.updates > 1 ? 's' : ''}`);
36
+ }
37
+ if (counts.reads > 0) {
38
+ parts.push(`${counts.reads} read${counts.reads > 1 ? 's' : ''}`);
39
+ }
40
+ if (counts.creates > 0) {
41
+ parts.push(`${counts.creates} create${counts.creates > 1 ? 's' : ''}`);
42
+ }
43
+ }
44
+ else if (groupType === 'bash') {
45
+ parts.push(`${counts.bash} command${counts.bash > 1 ? 's' : ''}`);
46
+ }
47
+ else if (groupType === 'search') {
48
+ parts.push(`${counts.searches} search${counts.searches > 1 ? 'es' : ''}`);
49
+ }
50
+ else if (groupType === 'todo') {
51
+ parts.push(`${counts.todos} update${counts.todos > 1 ? 's' : ''}`);
52
+ }
53
+ return parts.join(', ');
54
+ }
55
+ /**
56
+ * Render a tool group in quiet mode
57
+ */
58
+ export function ToolGroupDisplay({ group, index }) {
59
+ const counts = getOperationCounts(group);
60
+ const duration = getGroupDuration(group);
61
+ const resourceName = getResourceDisplayName(group);
62
+ const operationsText = formatOperationCounts(counts, group.groupType);
63
+ const changesSummary = summarizeChanges(group);
64
+ // Add subtle alternating background for better scannability
65
+ const isEven = index % 2 === 0;
66
+ return (React.createElement(Box, { flexDirection: "column", marginTop: 0, paddingLeft: isEven ? 0 : 1 },
67
+ React.createElement(Box, null,
68
+ React.createElement(Text, { color: "magenta" }, "\u23FA"),
69
+ React.createElement(Text, { color: "yellow", bold: true }, " Working on"),
70
+ React.createElement(Text, { color: "white" },
71
+ " ",
72
+ resourceName),
73
+ operationsText && (React.createElement(Text, { color: "cyan" },
74
+ " (",
75
+ operationsText,
76
+ ")")),
77
+ React.createElement(Text, { color: group.hasError ? "red" : "green" },
78
+ " ",
79
+ group.hasError ? "✗" : "✓"),
80
+ duration >= 100 && (React.createElement(Text, { color: "yellow" },
81
+ " ",
82
+ formatDuration(duration)))),
83
+ changesSummary && !group.hasError && (React.createElement(Box, { marginLeft: 2 },
84
+ React.createElement(Text, { color: "gray" },
85
+ "\u2514\u2500 ",
86
+ changesSummary))),
87
+ group.hasError && (React.createElement(Box, { marginLeft: 2 },
88
+ React.createElement(Text, { color: "red" }, "\u2514\u2500 encountered errors (see details with ^O verbose mode)")))));
89
+ }
90
+ export default ToolGroupDisplay;
91
+ //# sourceMappingURL=tool-group-display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-group-display.js","sourceRoot":"","sources":["../../../src/ui/components/tool-group-display.tsx"],"names":[],"mappings":"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"}
@@ -168,6 +168,10 @@ __ _____| | ___ ___ _ __ ___ ___ | |_ ___
168
168
  React.createElement(Text, { color: "cyan", bold: true }, "^K"),
169
169
  React.createElement(Text, { color: "gray" }, " Ctrl+K "),
170
170
  React.createElement(Text, null, "quick actions")),
171
+ React.createElement(Box, null,
172
+ React.createElement(Text, { color: "green", bold: true }, "^P"),
173
+ React.createElement(Text, { color: "gray" }, " Ctrl+P "),
174
+ React.createElement(Text, null, "toggle paste")),
171
175
  React.createElement(Box, null,
172
176
  React.createElement(Text, { color: "white", bold: true }, "?"),
173
177
  React.createElement(Text, { color: "gray" }, " or /help "),
@@ -1 +1 @@
1
- {"version":3,"file":"welcome-panel.js","sourceRoot":"","sources":["../../../src/ui/components/welcome-panel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"welcome-panel.js","sourceRoot":"","sources":["../../../src/ui/components/welcome-panel.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { PastedBlock } from "../../utils/paste-utils.js";
1
2
  export interface Key {
2
3
  name?: string;
3
4
  ctrl?: boolean;
@@ -18,12 +19,15 @@ export interface EnhancedInputHook {
18
19
  input: string;
19
20
  cursorPosition: number;
20
21
  isMultiline: boolean;
22
+ pastedBlocks: PastedBlock[];
23
+ currentBlockAtCursor: PastedBlock | null;
21
24
  setInput: (text: string) => void;
22
25
  setCursorPosition: (position: number) => void;
23
26
  clearInput: () => void;
24
27
  insertAtCursor: (text: string) => void;
25
28
  resetHistory: () => void;
26
29
  handleInput: (inputChar: string, key: Key) => void;
30
+ expandPlaceholdersForSubmit: (text: string) => string;
27
31
  }
28
32
  interface UseEnhancedInputProps {
29
33
  onSubmit?: (text: string) => void;
@@ -1,10 +1,16 @@
1
- import { useState, useCallback, useRef } from "react";
1
+ import { useState, useCallback, useRef, useEffect } from "react";
2
2
  import { deleteCharBefore, deleteCharAfter, deleteWordBefore, deleteWordAfter, insertText, moveToLineStart, moveToPreviousWord, moveToNextWord, } from "../../utils/text-utils.js";
3
3
  import { useInputHistory } from "./use-input-history.js";
4
+ import { PasteDetector, shouldCollapsePaste, createPastedBlock, generatePlaceholder, findBlockAtCursor, expandAllPlaceholders, } from "../../utils/paste-utils.js";
4
5
  export function useEnhancedInput({ onSubmit, onEscape, onSpecialKey, onVerboseToggle, onQuickActions, onBackgroundModeToggle, onCopyLastResponse, disabled = false, multiline = false, } = {}) {
5
6
  const [input, setInputState] = useState("");
6
7
  const [cursorPosition, setCursorPositionState] = useState(0);
8
+ const [pastedBlocks, setPastedBlocks] = useState([]);
9
+ const [pasteCounter, setPasteCounter] = useState(0);
10
+ const [currentBlockAtCursor, setCurrentBlockAtCursor] = useState(null);
7
11
  const isMultilineRef = useRef(multiline);
12
+ const pasteDetectorRef = useRef(new PasteDetector());
13
+ const pasteTimeoutRef = useRef(null);
8
14
  // Keep ref in sync with prop to avoid stale closure
9
15
  isMultilineRef.current = multiline;
10
16
  const { addToHistory, navigateHistory, resetHistory, setOriginalInput, isNavigatingHistory, } = useInputHistory();
@@ -32,6 +38,9 @@ export function useEnhancedInput({ onSubmit, onEscape, onSpecialKey, onVerboseTo
32
38
  setInputState("");
33
39
  setCursorPositionState(0);
34
40
  setOriginalInput("");
41
+ setPastedBlocks([]);
42
+ setPasteCounter(0);
43
+ pasteDetectorRef.current.reset();
35
44
  }, [setOriginalInput]);
36
45
  const insertAtCursor = useCallback((text) => {
37
46
  const result = insertText(input, cursorPosition, text);
@@ -39,13 +48,108 @@ export function useEnhancedInput({ onSubmit, onEscape, onSpecialKey, onVerboseTo
39
48
  setCursorPositionState(result.position);
40
49
  setOriginalInput(result.text);
41
50
  }, [input, cursorPosition, setOriginalInput]);
51
+ // Handle paste completion (after accumulation timeout)
52
+ const handlePasteComplete = useCallback((pastedContent) => {
53
+ // Check if should collapse
54
+ if (shouldCollapsePaste(pastedContent)) {
55
+ // Create pasted block
56
+ const block = createPastedBlock(pasteCounter, pastedContent, cursorPosition);
57
+ setPasteCounter(prev => prev + 1);
58
+ setPastedBlocks(prev => [...prev, block]);
59
+ // Insert placeholder instead of full content
60
+ const placeholder = generatePlaceholder(block);
61
+ const result = insertText(input, cursorPosition, placeholder);
62
+ setInputState(result.text);
63
+ setCursorPositionState(result.position);
64
+ setOriginalInput(result.text);
65
+ }
66
+ else {
67
+ // Insert normally (below threshold)
68
+ const result = insertText(input, cursorPosition, pastedContent);
69
+ setInputState(result.text);
70
+ setCursorPositionState(result.position);
71
+ setOriginalInput(result.text);
72
+ }
73
+ }, [input, cursorPosition, pasteCounter, setOriginalInput]);
74
+ // Toggle collapse/expand for block at cursor
75
+ const toggleBlockAtCursor = useCallback(() => {
76
+ const block = findBlockAtCursor(input, cursorPosition, pastedBlocks);
77
+ if (!block)
78
+ return;
79
+ const placeholder = generatePlaceholder(block);
80
+ if (block.collapsed) {
81
+ // Expand: find the specific occurrence near cursor and replace it
82
+ let searchStart = 0;
83
+ let targetStart = -1;
84
+ // Find the occurrence that contains the cursor
85
+ while (searchStart < input.length) {
86
+ const occurrenceStart = input.indexOf(placeholder, searchStart);
87
+ if (occurrenceStart === -1)
88
+ break;
89
+ const occurrenceEnd = occurrenceStart + placeholder.length;
90
+ if (cursorPosition >= occurrenceStart && cursorPosition <= occurrenceEnd) {
91
+ targetStart = occurrenceStart;
92
+ break;
93
+ }
94
+ searchStart = occurrenceStart + 1;
95
+ }
96
+ if (targetStart === -1)
97
+ return; // Should not happen
98
+ // Replace only this specific occurrence
99
+ const newInput = input.substring(0, targetStart) +
100
+ block.content +
101
+ input.substring(targetStart + placeholder.length);
102
+ setInputState(newInput);
103
+ // Keep cursor at same position or adjust if needed
104
+ const newCursor = cursorPosition + (block.content.length - placeholder.length);
105
+ setCursorPositionState(Math.min(newInput.length, newCursor));
106
+ setOriginalInput(newInput);
107
+ // Update block state
108
+ setPastedBlocks(prev => prev.map(b => (b.id === block.id ? { ...b, collapsed: false } : b)));
109
+ }
110
+ else {
111
+ // Collapse: find the specific occurrence near cursor and replace it
112
+ let searchStart = 0;
113
+ let targetStart = -1;
114
+ // Find the occurrence that contains the cursor
115
+ while (searchStart < input.length) {
116
+ const occurrenceStart = input.indexOf(block.content, searchStart);
117
+ if (occurrenceStart === -1)
118
+ break;
119
+ const occurrenceEnd = occurrenceStart + block.content.length;
120
+ if (cursorPosition >= occurrenceStart && cursorPosition <= occurrenceEnd) {
121
+ targetStart = occurrenceStart;
122
+ break;
123
+ }
124
+ searchStart = occurrenceStart + 1;
125
+ }
126
+ if (targetStart === -1)
127
+ return; // Should not happen
128
+ // Replace only this specific occurrence
129
+ const newInput = input.substring(0, targetStart) +
130
+ placeholder +
131
+ input.substring(targetStart + block.content.length);
132
+ setInputState(newInput);
133
+ // Adjust cursor to end of placeholder
134
+ setCursorPositionState(targetStart + placeholder.length);
135
+ setOriginalInput(newInput);
136
+ // Update block state
137
+ setPastedBlocks(prev => prev.map(b => (b.id === block.id ? { ...b, collapsed: true } : b)));
138
+ }
139
+ }, [input, cursorPosition, pastedBlocks, setOriginalInput]);
140
+ // Expand all placeholders for submission
141
+ const expandPlaceholdersForSubmit = useCallback((text) => {
142
+ return expandAllPlaceholders(text, pastedBlocks);
143
+ }, [pastedBlocks]);
42
144
  const handleSubmit = useCallback(() => {
43
145
  if (input.trim()) {
44
- addToHistory(input);
45
- onSubmit?.(input);
146
+ // Expand all placeholders before submission
147
+ const expandedInput = expandPlaceholdersForSubmit(input);
148
+ addToHistory(expandedInput);
149
+ onSubmit?.(expandedInput);
46
150
  clearInput();
47
151
  }
48
- }, [input, addToHistory, onSubmit, clearInput]);
152
+ }, [input, addToHistory, onSubmit, clearInput, expandPlaceholdersForSubmit]);
49
153
  const handleInput = useCallback((inputChar, key) => {
50
154
  if (disabled)
51
155
  return;
@@ -56,6 +160,12 @@ export function useEnhancedInput({ onSubmit, onEscape, onSpecialKey, onVerboseTo
56
160
  setOriginalInput("");
57
161
  return;
58
162
  }
163
+ // Handle Ctrl+P: Toggle expand/collapse for paste at cursor
164
+ // Check both key.ctrl with 'p' and raw ASCII code \x10 (Ctrl+P = ASCII 16)
165
+ if ((key.ctrl && inputChar === "p") || inputChar === "\x10") {
166
+ toggleBlockAtCursor();
167
+ return;
168
+ }
59
169
  // Allow special key handler to override default behavior
60
170
  if (onSpecialKey?.(key)) {
61
171
  return;
@@ -233,22 +343,59 @@ export function useEnhancedInput({ onSubmit, onEscape, onSpecialKey, onVerboseTo
233
343
  }
234
344
  // Handle regular character input
235
345
  if (inputChar && !key.ctrl && !key.meta) {
236
- const result = insertText(input, cursorPosition, inputChar);
237
- setInputState(result.text);
238
- setCursorPositionState(result.position);
239
- setOriginalInput(result.text);
346
+ // Detect paste operation
347
+ const isPaste = pasteDetectorRef.current.detectPaste(inputChar);
348
+ if (isPaste) {
349
+ // Clear any existing paste timeout
350
+ if (pasteTimeoutRef.current) {
351
+ clearTimeout(pasteTimeoutRef.current);
352
+ }
353
+ // Accumulate paste input
354
+ pasteDetectorRef.current.accumulatePasteInput(inputChar);
355
+ // Set timeout to finalize paste (50ms after last input)
356
+ pasteTimeoutRef.current = setTimeout(() => {
357
+ const accumulated = pasteDetectorRef.current.getAccumulatedInput();
358
+ if (accumulated) {
359
+ handlePasteComplete(accumulated);
360
+ }
361
+ pasteTimeoutRef.current = null;
362
+ }, 50);
363
+ }
364
+ else {
365
+ // Normal character input
366
+ const result = insertText(input, cursorPosition, inputChar);
367
+ setInputState(result.text);
368
+ setCursorPositionState(result.position);
369
+ setOriginalInput(result.text);
370
+ }
240
371
  }
241
- }, [disabled, onSpecialKey, onVerboseToggle, onQuickActions, onBackgroundModeToggle, onCopyLastResponse, input, cursorPosition, multiline, handleSubmit, navigateHistory, setOriginalInput]);
372
+ }, [disabled, onSpecialKey, onVerboseToggle, onQuickActions, onBackgroundModeToggle, onCopyLastResponse, input, cursorPosition, multiline, handleSubmit, navigateHistory, setOriginalInput, toggleBlockAtCursor, handlePasteComplete]);
373
+ // Update current block at cursor when cursor position or input changes
374
+ useEffect(() => {
375
+ const block = findBlockAtCursor(input, cursorPosition, pastedBlocks);
376
+ setCurrentBlockAtCursor(block);
377
+ }, [input, cursorPosition, pastedBlocks]);
378
+ // Cleanup paste timeout on unmount
379
+ useEffect(() => {
380
+ return () => {
381
+ if (pasteTimeoutRef.current) {
382
+ clearTimeout(pasteTimeoutRef.current);
383
+ }
384
+ };
385
+ }, []);
242
386
  return {
243
387
  input,
244
388
  cursorPosition,
245
389
  isMultiline: isMultilineRef.current,
390
+ pastedBlocks,
391
+ currentBlockAtCursor,
246
392
  setInput,
247
393
  setCursorPosition,
248
394
  clearInput,
249
395
  insertAtCursor,
250
396
  resetHistory,
251
397
  handleInput,
398
+ expandPlaceholdersForSubmit,
252
399
  };
253
400
  }
254
401
  //# sourceMappingURL=use-enhanced-input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-enhanced-input.js","sourceRoot":"","sources":["../../../src/ui/hooks/use-enhanced-input.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-enhanced-input.js","sourceRoot":"","sources":["../../../src/ui/hooks/use-enhanced-input.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { LLMAgent, ChatEntry } from "../../agent/llm-agent.js";
2
+ import { VerbosityLevel } from "../../constants.js";
2
3
  interface UseInputHandlerProps {
3
4
  agent: LLMAgent;
4
5
  chatHistory: ChatEntry[];
@@ -41,6 +42,9 @@ export declare function useInputHandler({ agent, chatHistory, setChatHistory, se
41
42
  agent: LLMAgent;
42
43
  autoEditEnabled: boolean;
43
44
  verboseMode: boolean;
45
+ verbosityLevel: VerbosityLevel;
44
46
  backgroundMode: boolean;
47
+ pastedBlocks: import("../../utils/paste-utils.js").PastedBlock[];
48
+ currentBlockAtCursor: import("../../utils/paste-utils.js").PastedBlock | null;
45
49
  };
46
50
  export {};
@@ -3,6 +3,7 @@ import { useInput } from "ink";
3
3
  import { ConfirmationService } from "../../utils/confirmation-service.js";
4
4
  import { useEnhancedInput } from "./use-enhanced-input.js";
5
5
  import { escapeShellArg } from "../../tools/bash.js";
6
+ import { VerbosityLevel } from "../../constants.js";
6
7
  import { filterCommandSuggestions } from "../components/command-suggestions.js";
7
8
  import { getSettingsManager } from "../../utils/settings-manager.js";
8
9
  import { ProjectAnalyzer } from "../../utils/project-analyzer.js";
@@ -26,7 +27,8 @@ export function useInputHandler({ agent, chatHistory, setChatHistory, setIsProce
26
27
  // Default to true (auto-apply enabled by default)
27
28
  return sessionFlags.allOperations !== undefined ? sessionFlags.allOperations : true;
28
29
  });
29
- const [verboseMode, setVerboseMode] = useState(false);
30
+ const [verboseMode, setVerboseMode] = useState(false); // DEPRECATED: Legacy boolean mode
31
+ const [verbosityLevel, setVerbosityLevel] = useState(VerbosityLevel.QUIET);
30
32
  const [backgroundMode, setBackgroundMode] = useState(false);
31
33
  const handleSpecialKey = (key) => {
32
34
  // Don't handle input if confirmation dialog is active
@@ -129,11 +131,14 @@ export function useInputHandler({ agent, chatHistory, setChatHistory, setIsProce
129
131
  }
130
132
  }, []);
131
133
  const handleVerboseToggle = useCallback(() => {
132
- setVerboseMode((prev) => {
133
- const newState = !prev;
134
- // Notify parent for toast/flash feedback instead of polluting chat history
135
- onVerboseModeChange?.(newState);
136
- return newState;
134
+ // Cycle through verbosity levels: QUIET -> CONCISE -> VERBOSE -> QUIET
135
+ setVerbosityLevel((prev) => {
136
+ const nextLevel = (prev + 1) % 3; // Cycle through 0, 1, 2
137
+ // Update legacy verboseMode for backward compatibility
138
+ setVerboseMode(nextLevel === VerbosityLevel.VERBOSE);
139
+ // Notify parent for toast/flash feedback
140
+ onVerboseModeChange?.(nextLevel === VerbosityLevel.VERBOSE);
141
+ return nextLevel;
137
142
  });
138
143
  }, [onVerboseModeChange]);
139
144
  const handleBackgroundModeToggle = useCallback(() => {
@@ -154,7 +159,7 @@ export function useInputHandler({ agent, chatHistory, setChatHistory, setIsProce
154
159
  return newState;
155
160
  });
156
161
  }, [agent, onBackgroundModeChange, onTaskMovedToBackground]);
157
- const { input, cursorPosition, setInput, setCursorPosition, clearInput, resetHistory, handleInput, } = useEnhancedInput({
162
+ const { input, cursorPosition, pastedBlocks, currentBlockAtCursor, setInput, setCursorPosition, clearInput, resetHistory, handleInput, expandPlaceholdersForSubmit: _expandPlaceholdersForSubmit, } = useEnhancedInput({
158
163
  onSubmit: handleInputSubmit,
159
164
  onSpecialKey: handleSpecialKey,
160
165
  onVerboseToggle: handleVerboseToggle,
@@ -163,6 +168,8 @@ export function useInputHandler({ agent, chatHistory, setChatHistory, setIsProce
163
168
  onCopyLastResponse,
164
169
  disabled: isConfirmationActive,
165
170
  });
171
+ // Suppress unused variable warning - expandPlaceholdersForSubmit is part of the hook interface but not yet used
172
+ void _expandPlaceholdersForSubmit;
166
173
  // Hook up the actual input handling
167
174
  useInput((inputChar, key) => {
168
175
  handleInput(inputChar, key);
@@ -582,9 +589,16 @@ Enhanced Input Features:
582
589
  Ctrl+U - Delete to start of line
583
590
  Ctrl+O - Toggle verbose mode (show full output, default: concise)
584
591
  Ctrl+B - Toggle background mode (run all commands in background)
592
+ Ctrl+P - Expand/collapse pasted text at cursor
593
+ Ctrl+Y - Copy last assistant response to clipboard
585
594
  Shift+Tab - Toggle auto-edit mode (bypass confirmations)
586
595
  1-4 keys - Quick select in confirmation dialogs
587
596
 
597
+ Paste Handling:
598
+ When you paste 5+ lines, it's automatically collapsed to a preview.
599
+ Position cursor on collapsed text and press Ctrl+P to expand/collapse.
600
+ Full content is always sent to AI (display-only feature).
601
+
588
602
  Direct Commands (executed immediately):
589
603
  ls [path] - List directory contents
590
604
  pwd - Show current directory
@@ -689,9 +703,10 @@ Examples:
689
703
  const { exec } = await import("child_process");
690
704
  const { promisify } = await import("util");
691
705
  const execAsync = promisify(exec);
692
- const { stdout, stderr } = await execAsync("node dist/index.js doctor", {
706
+ // Use 'ax-cli doctor' command which will use the globally installed binary
707
+ // This works whether installed globally or linked locally
708
+ const { stdout, stderr } = await execAsync("ax-cli doctor", {
693
709
  encoding: "utf-8",
694
- cwd: process.cwd(),
695
710
  timeout: 30000, // 30 second timeout
696
711
  maxBuffer: 10 * 1024 * 1024, // 10MB buffer
697
712
  });
@@ -1427,8 +1442,11 @@ Respond with ONLY the commit message, no additional text.`;
1427
1442
  availableModels,
1428
1443
  agent,
1429
1444
  autoEditEnabled,
1430
- verboseMode,
1445
+ verboseMode, // DEPRECATED: Use verbosityLevel instead
1446
+ verbosityLevel,
1431
1447
  backgroundMode,
1448
+ pastedBlocks,
1449
+ currentBlockAtCursor,
1432
1450
  };
1433
1451
  }
1434
1452
  //# sourceMappingURL=use-input-handler.js.map