@nanocollective/nanocoder 1.16.2 → 1.16.4
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.
- package/README.md +17 -1
- package/dist/commands/update.d.ts +6 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +129 -3
- package/dist/commands/update.js.map +1 -1
- package/dist/components/assistant-message.d.ts +1 -4
- package/dist/components/assistant-message.d.ts.map +1 -1
- package/dist/components/assistant-message.js +1 -199
- package/dist/components/assistant-message.js.map +1 -1
- package/dist/components/status.d.ts +1 -6
- package/dist/components/status.d.ts.map +1 -1
- package/dist/components/status.js +3 -2
- package/dist/components/status.js.map +1 -1
- package/dist/components/user-input.d.ts.map +1 -1
- package/dist/components/user-input.js +61 -19
- package/dist/components/user-input.js.map +1 -1
- package/dist/components/warning-message.d.ts +7 -0
- package/dist/components/warning-message.d.ts.map +1 -0
- package/dist/components/warning-message.js +12 -0
- package/dist/components/warning-message.js.map +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +19 -11
- package/dist/config/index.js.map +1 -1
- package/dist/config/paths.d.ts +1 -0
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +48 -2
- package/dist/config/paths.js.map +1 -1
- package/dist/config/paths.spec.d.ts +2 -0
- package/dist/config/paths.spec.d.ts.map +1 -0
- package/dist/config/paths.spec.js +114 -0
- package/dist/config/paths.spec.js.map +1 -0
- package/dist/config/themes.d.ts.map +1 -1
- package/dist/config/themes.js +19 -0
- package/dist/config/themes.js.map +1 -1
- package/dist/hooks/useAppState.d.ts.map +1 -1
- package/dist/hooks/useAppState.js +8 -15
- package/dist/hooks/useAppState.js.map +1 -1
- package/dist/hooks/useInputState.d.ts.map +1 -1
- package/dist/hooks/useInputState.js +95 -8
- package/dist/hooks/useInputState.js.map +1 -1
- package/dist/hooks/useTerminalWidth.d.ts.map +1 -1
- package/dist/hooks/useTerminalWidth.js +6 -0
- package/dist/hooks/useTerminalWidth.js.map +1 -1
- package/dist/markdown-parser/html-entities.d.ts +2 -0
- package/dist/markdown-parser/html-entities.d.ts.map +1 -0
- package/dist/markdown-parser/html-entities.js +41 -0
- package/dist/markdown-parser/html-entities.js.map +1 -0
- package/dist/markdown-parser/html-entities.spec.d.ts +2 -0
- package/dist/markdown-parser/html-entities.spec.d.ts.map +1 -0
- package/dist/markdown-parser/html-entities.spec.js +73 -0
- package/dist/markdown-parser/html-entities.spec.js.map +1 -0
- package/dist/markdown-parser/index.d.ts +6 -0
- package/dist/markdown-parser/index.d.ts.map +1 -0
- package/dist/markdown-parser/index.js +97 -0
- package/dist/markdown-parser/index.js.map +1 -0
- package/dist/markdown-parser/index.spec.d.ts +2 -0
- package/dist/markdown-parser/index.spec.d.ts.map +1 -0
- package/dist/markdown-parser/index.spec.js +245 -0
- package/dist/markdown-parser/index.spec.js.map +1 -0
- package/dist/markdown-parser/table-parser.d.ts +3 -0
- package/dist/markdown-parser/table-parser.d.ts.map +1 -0
- package/dist/markdown-parser/table-parser.js +92 -0
- package/dist/markdown-parser/table-parser.js.map +1 -0
- package/dist/markdown-parser/table-parser.spec.d.ts +2 -0
- package/dist/markdown-parser/table-parser.spec.d.ts.map +1 -0
- package/dist/markdown-parser/table-parser.spec.js +120 -0
- package/dist/markdown-parser/table-parser.spec.js.map +1 -0
- package/dist/markdown-parser/utils.d.ts +2 -0
- package/dist/markdown-parser/utils.d.ts.map +1 -0
- package/dist/markdown-parser/utils.js +14 -0
- package/dist/markdown-parser/utils.js.map +1 -0
- package/dist/markdown-parser/utils.spec.d.ts +2 -0
- package/dist/markdown-parser/utils.spec.d.ts.map +1 -0
- package/dist/markdown-parser/utils.spec.js +59 -0
- package/dist/markdown-parser/utils.spec.js.map +1 -0
- package/dist/tools/execute-bash.d.ts.map +1 -1
- package/dist/tools/execute-bash.js +5 -3
- package/dist/tools/execute-bash.js.map +1 -1
- package/dist/tools/find-files.d.ts +3 -0
- package/dist/tools/find-files.d.ts.map +1 -0
- package/dist/tools/find-files.js +186 -0
- package/dist/tools/find-files.js.map +1 -0
- package/dist/tools/index.js +4 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +143 -9
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/search-file-contents.d.ts +3 -0
- package/dist/tools/search-file-contents.d.ts.map +1 -0
- package/dist/tools/search-file-contents.js +164 -0
- package/dist/tools/search-file-contents.js.map +1 -0
- package/dist/types/markdown-parser.d.ts +11 -0
- package/dist/types/markdown-parser.d.ts.map +1 -0
- package/dist/types/markdown-parser.js +2 -0
- package/dist/types/markdown-parser.js.map +1 -0
- package/dist/types/ui.d.ts +1 -1
- package/dist/types/ui.d.ts.map +1 -1
- package/dist/types/utils.d.ts +2 -1
- package/dist/types/utils.d.ts.map +1 -1
- package/dist/usage/storage.d.ts +1 -1
- package/dist/usage/storage.d.ts.map +1 -1
- package/dist/usage/storage.js +55 -9
- package/dist/usage/storage.js.map +1 -1
- package/dist/usage/storage.spec.js +136 -2
- package/dist/usage/storage.spec.js.map +1 -1
- package/dist/utils/installation-detector.d.ts +16 -0
- package/dist/utils/installation-detector.d.ts.map +1 -0
- package/dist/utils/installation-detector.js +118 -0
- package/dist/utils/installation-detector.js.map +1 -0
- package/dist/utils/installation-detector.spec.d.ts +2 -0
- package/dist/utils/installation-detector.spec.d.ts.map +1 -0
- package/dist/utils/installation-detector.spec.js +141 -0
- package/dist/utils/installation-detector.spec.js.map +1 -0
- package/dist/utils/message-queue.d.ts +2 -0
- package/dist/utils/message-queue.d.ts.map +1 -1
- package/dist/utils/message-queue.js +11 -0
- package/dist/utils/message-queue.js.map +1 -1
- package/dist/utils/paste-detection.d.ts.map +1 -1
- package/dist/utils/paste-detection.js +8 -3
- package/dist/utils/paste-detection.js.map +1 -1
- package/dist/utils/paste-detection.spec.js +15 -8
- package/dist/utils/paste-detection.spec.js.map +1 -1
- package/dist/utils/paste-utils.d.ts.map +1 -1
- package/dist/utils/paste-utils.js +4 -2
- package/dist/utils/paste-utils.js.map +1 -1
- package/dist/utils/paste-utils.spec.js +19 -3
- package/dist/utils/paste-utils.spec.js.map +1 -1
- package/dist/utils/update-checker.d.ts.map +1 -1
- package/dist/utils/update-checker.js +31 -3
- package/dist/utils/update-checker.js.map +1 -1
- package/dist/utils/update-checker.spec.d.ts +2 -0
- package/dist/utils/update-checker.spec.d.ts.map +1 -0
- package/dist/utils/update-checker.spec.js +280 -0
- package/dist/utils/update-checker.spec.js.map +1 -0
- package/dist/wizard/steps/location-step.js +2 -2
- package/dist/wizard/steps/location-step.js.map +1 -1
- package/package.json +1 -1
- package/source/app/prompts/main-prompt.md +67 -23
- package/dist/components/update-message.d.ts +0 -7
- package/dist/components/update-message.d.ts.map +0 -1
- package/dist/components/update-message.js +0 -93
- package/dist/components/update-message.js.map +0 -1
- package/dist/tools/read-many-files.d.ts +0 -3
- package/dist/tools/read-many-files.d.ts.map +0 -1
- package/dist/tools/read-many-files.js +0 -169
- package/dist/tools/read-many-files.js.map +0 -1
- package/dist/tools/search-files.d.ts +0 -3
- package/dist/tools/search-files.d.ts.map +0 -1
- package/dist/tools/search-files.js +0 -251
- package/dist/tools/search-files.js.map +0 -1
|
@@ -46,7 +46,7 @@ export function useAppState() {
|
|
|
46
46
|
// Chat queue for components
|
|
47
47
|
const [chatComponents, setChatComponents] = useState([]);
|
|
48
48
|
const [componentKeyCounter, setComponentKeyCounter] = useState(0);
|
|
49
|
-
// Helper function to add components to the chat queue with stable keys
|
|
49
|
+
// Helper function to add components to the chat queue with stable keys
|
|
50
50
|
const addToChatQueue = useCallback((component) => {
|
|
51
51
|
const newCounter = componentKeyCounter + 1;
|
|
52
52
|
setComponentKeyCounter(newCounter);
|
|
@@ -56,13 +56,10 @@ export function useAppState() {
|
|
|
56
56
|
key: `chat-component-${newCounter}`,
|
|
57
57
|
});
|
|
58
58
|
}
|
|
59
|
-
setChatComponents(prevComponents =>
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
? newComponents.slice(-50)
|
|
64
|
-
: newComponents;
|
|
65
|
-
});
|
|
59
|
+
setChatComponents(prevComponents => [
|
|
60
|
+
...prevComponents,
|
|
61
|
+
componentWithKey,
|
|
62
|
+
]);
|
|
66
63
|
}, [componentKeyCounter]);
|
|
67
64
|
// Create tokenizer based on current provider and model
|
|
68
65
|
const tokenizer = useMemo(() => {
|
|
@@ -95,14 +92,10 @@ export function useAppState() {
|
|
|
95
92
|
});
|
|
96
93
|
return tokens;
|
|
97
94
|
}, [messageTokenCache, tokenizer, currentModel]);
|
|
98
|
-
//
|
|
95
|
+
// Message updater - no limits, display all messages
|
|
99
96
|
const updateMessages = useCallback((newMessages) => {
|
|
100
|
-
setMessages(newMessages);
|
|
101
|
-
|
|
102
|
-
const displayLimit = 30;
|
|
103
|
-
setDisplayMessages(newMessages.length > displayLimit
|
|
104
|
-
? newMessages.slice(-displayLimit)
|
|
105
|
-
: newMessages);
|
|
97
|
+
setMessages(newMessages);
|
|
98
|
+
setDisplayMessages(newMessages);
|
|
106
99
|
}, []);
|
|
107
100
|
// Reset tool confirmation state
|
|
108
101
|
const resetToolConfirmationState = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAppState.js","sourceRoot":"","sources":["../../source/hooks/useAppState.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useAppState.js","sourceRoot":"","sources":["../../source/hooks/useAppState.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInputState.d.ts","sourceRoot":"","sources":["../../source/hooks/useInputState.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAkB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"useInputState.d.ts","sourceRoot":"","sources":["../../source/hooks/useInputState.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAkB,MAAM,gBAAgB,CAAC;AAa3D,wBAAgB,aAAa;;;;;;uCAuPX,MAAM;8BAiDsB,UAAU;;;;yBAMf,MAAM;;;4BAxQlC,MAAM;;;;EAoUlB"}
|
|
@@ -10,13 +10,6 @@ function createEmptyInputState() {
|
|
|
10
10
|
placeholderContent: {},
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
|
-
function _createInputStateFromString(text) {
|
|
14
|
-
// Convert old string-based history to new InputState format
|
|
15
|
-
return {
|
|
16
|
-
displayValue: text,
|
|
17
|
-
placeholderContent: {},
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
13
|
export function useInputState() {
|
|
21
14
|
// Core state following the spec
|
|
22
15
|
const [currentState, setCurrentState] = useState(createEmptyInputState());
|
|
@@ -29,6 +22,10 @@ export function useInputState() {
|
|
|
29
22
|
// Paste detection
|
|
30
23
|
const pasteDetectorRef = useRef(new PasteDetector());
|
|
31
24
|
const debounceTimerRef = useRef(null);
|
|
25
|
+
// Track recent paste for chunked paste handling (VS Code terminal issue)
|
|
26
|
+
const lastPasteTimeRef = useRef(0);
|
|
27
|
+
const lastPasteIdRef = useRef(null);
|
|
28
|
+
const PASTE_CHUNK_WINDOW_MS = 200; // Time window to consider text as part of same paste (increased for slower terminals)
|
|
32
29
|
// Cached line count for performance
|
|
33
30
|
const [cachedLineCount, setCachedLineCount] = useState(1);
|
|
34
31
|
// Helper to push current state to undo stack
|
|
@@ -46,14 +43,102 @@ export function useInputState() {
|
|
|
46
43
|
pushToUndoStack(atomicDeletionResult);
|
|
47
44
|
return;
|
|
48
45
|
}
|
|
46
|
+
const now = Date.now();
|
|
47
|
+
const timeSinceLastPaste = now - lastPasteTimeRef.current;
|
|
48
|
+
// Check if this might be a continuation of a recent paste (chunked paste in VS Code)
|
|
49
|
+
if (lastPasteIdRef.current &&
|
|
50
|
+
timeSinceLastPaste < PASTE_CHUNK_WINDOW_MS &&
|
|
51
|
+
currentState.placeholderContent[lastPasteIdRef.current]) {
|
|
52
|
+
// This looks like a chunked paste continuation
|
|
53
|
+
// Extract the new text that was added (should be at the end)
|
|
54
|
+
const placeholder = currentState.placeholderContent[lastPasteIdRef.current];
|
|
55
|
+
const expectedLength = currentState.displayValue.length;
|
|
56
|
+
const addedChunk = newInput.slice(expectedLength);
|
|
57
|
+
if (addedChunk.length > 0 &&
|
|
58
|
+
placeholder.type === PlaceholderType.PASTE) {
|
|
59
|
+
// Merge the new chunk into the existing paste placeholder
|
|
60
|
+
const updatedContent = placeholder.content + addedChunk;
|
|
61
|
+
const oldPlaceholder = placeholder.displayText;
|
|
62
|
+
const newPlaceholder = `[Paste #${lastPasteIdRef.current}: ${updatedContent.length} chars]`;
|
|
63
|
+
const updatedPlaceholderContent = {
|
|
64
|
+
...currentState.placeholderContent,
|
|
65
|
+
[lastPasteIdRef.current]: {
|
|
66
|
+
...placeholder,
|
|
67
|
+
content: updatedContent,
|
|
68
|
+
originalSize: updatedContent.length,
|
|
69
|
+
displayText: newPlaceholder,
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
// Replace old placeholder with updated one in display value
|
|
73
|
+
const newDisplayValue = currentState.displayValue.replace(oldPlaceholder, newPlaceholder);
|
|
74
|
+
pushToUndoStack({
|
|
75
|
+
displayValue: newDisplayValue,
|
|
76
|
+
placeholderContent: updatedPlaceholderContent,
|
|
77
|
+
});
|
|
78
|
+
// Update paste detector to the new display value
|
|
79
|
+
pasteDetectorRef.current.updateState(newDisplayValue);
|
|
80
|
+
lastPasteTimeRef.current = now; // Extend the window
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
49
84
|
// Then detect if this might be a paste
|
|
50
85
|
const detection = pasteDetectorRef.current.detectPaste(newInput);
|
|
51
86
|
if (detection.isPaste && detection.addedText.length > 0) {
|
|
52
|
-
//
|
|
87
|
+
// If we have an active paste within a short window (even if state hasn't fully updated),
|
|
88
|
+
// treat this as a continuation to prevent duplicate placeholders
|
|
89
|
+
const isVeryRecentPaste = timeSinceLastPaste < 20; // 20ms grace period for rapid multi-detections
|
|
90
|
+
const activePasteId = lastPasteIdRef.current;
|
|
91
|
+
if (activePasteId &&
|
|
92
|
+
(isVeryRecentPaste ||
|
|
93
|
+
(timeSinceLastPaste < PASTE_CHUNK_WINDOW_MS &&
|
|
94
|
+
currentState.placeholderContent[activePasteId]))) {
|
|
95
|
+
// If we don't have the placeholder in state yet, just update detector and skip
|
|
96
|
+
// This happens when multiple detections fire before React updates state
|
|
97
|
+
const placeholder = currentState.placeholderContent[activePasteId];
|
|
98
|
+
if (!placeholder) {
|
|
99
|
+
// Skip duplicate early detection
|
|
100
|
+
pasteDetectorRef.current.updateState(newInput);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
// Treat as chunked continuation
|
|
104
|
+
if (placeholder.type === PlaceholderType.PASTE) {
|
|
105
|
+
const updatedContent = placeholder.content + detection.addedText;
|
|
106
|
+
const oldPlaceholder = placeholder.displayText;
|
|
107
|
+
const newPlaceholder = `[Paste #${activePasteId}: ${updatedContent.length} chars]`;
|
|
108
|
+
const updatedPlaceholderContent = {
|
|
109
|
+
...currentState.placeholderContent,
|
|
110
|
+
[activePasteId]: {
|
|
111
|
+
...placeholder,
|
|
112
|
+
content: updatedContent,
|
|
113
|
+
originalSize: updatedContent.length,
|
|
114
|
+
displayText: newPlaceholder,
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
const newDisplayValue = currentState.displayValue.replace(oldPlaceholder, newPlaceholder);
|
|
118
|
+
pushToUndoStack({
|
|
119
|
+
displayValue: newDisplayValue,
|
|
120
|
+
placeholderContent: updatedPlaceholderContent,
|
|
121
|
+
});
|
|
122
|
+
pasteDetectorRef.current.updateState(newDisplayValue);
|
|
123
|
+
lastPasteTimeRef.current = now;
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Try to handle as paste (new paste)
|
|
53
128
|
const pasteResult = handlePaste(detection.addedText, currentState.displayValue, currentState.placeholderContent, detection.method);
|
|
54
129
|
if (pasteResult) {
|
|
55
130
|
// Large paste detected - create placeholder
|
|
56
131
|
pushToUndoStack(pasteResult);
|
|
132
|
+
// Update paste detector state to match the new display value (with placeholder)
|
|
133
|
+
// This prevents detection confusion on subsequent pastes
|
|
134
|
+
pasteDetectorRef.current.updateState(pasteResult.displayValue);
|
|
135
|
+
// Track this paste for potential chunked continuation
|
|
136
|
+
const pasteId = Object.keys(pasteResult.placeholderContent).find(id => !currentState.placeholderContent[id] &&
|
|
137
|
+
pasteResult.placeholderContent[id].type === PlaceholderType.PASTE);
|
|
138
|
+
if (pasteId) {
|
|
139
|
+
lastPasteIdRef.current = pasteId;
|
|
140
|
+
lastPasteTimeRef.current = now;
|
|
141
|
+
}
|
|
57
142
|
}
|
|
58
143
|
else {
|
|
59
144
|
// Small paste - treat as normal input
|
|
@@ -131,6 +216,8 @@ export function useInputState() {
|
|
|
131
216
|
setHistoryIndex(-1);
|
|
132
217
|
setCachedLineCount(1);
|
|
133
218
|
pasteDetectorRef.current.reset();
|
|
219
|
+
lastPasteTimeRef.current = 0;
|
|
220
|
+
lastPasteIdRef.current = null;
|
|
134
221
|
}, []);
|
|
135
222
|
// Cleanup on unmount
|
|
136
223
|
useEffect(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInputState.js","sourceRoot":"","sources":["../../source/hooks/useInputState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AACxE,OAAO,EAAa,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAE9D,mBAAmB;AACnB,SAAS,qBAAqB;IAC7B,OAAO;QACN,YAAY,EAAE,EAAE;QAChB,kBAAkB,EAAE,EAAE;KACtB,CAAC;AACH,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"useInputState.js","sourceRoot":"","sources":["../../source/hooks/useInputState.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTerminalWidth.d.ts","sourceRoot":"","sources":["../../source/hooks/useTerminalWidth.tsx"],"names":[],"mappings":"AAEA,KAAK,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEjD,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"useTerminalWidth.d.ts","sourceRoot":"","sources":["../../source/hooks/useTerminalWidth.tsx"],"names":[],"mappings":"AAEA,KAAK,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEjD,eAAO,MAAM,gBAAgB,cAgC5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;qBAcT,MAAM,aAAa,MAAM,KAAG,MAAM;4BAM3B,MAAM,aAAa,MAAM,KAAG,MAAM;CAejE,CAAC"}
|
|
@@ -9,6 +9,12 @@ export const useTerminalWidth = () => {
|
|
|
9
9
|
// Only update if width actually changed
|
|
10
10
|
setBoxWidth(prevWidth => (prevWidth !== newWidth ? newWidth : prevWidth));
|
|
11
11
|
};
|
|
12
|
+
// Increase max listeners if needed (many components use this hook simultaneously)
|
|
13
|
+
const currentMax = process.stdout.getMaxListeners();
|
|
14
|
+
if (currentMax !== 0 && currentMax < 50) {
|
|
15
|
+
// 0 means unlimited, otherwise ensure we have enough headroom
|
|
16
|
+
process.stdout.setMaxListeners(50);
|
|
17
|
+
}
|
|
12
18
|
// Listen for terminal resize events
|
|
13
19
|
process.stdout.on('resize', handleResize);
|
|
14
20
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTerminalWidth.js","sourceRoot":"","sources":["../../source/hooks/useTerminalWidth.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AAI1C,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACpC,oEAAoE;IACpE,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAE,EAAE,CAC7C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAE1C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAC7C,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAC/C,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,YAAY,GAAG,GAAG,EAAE;YACzB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YACjE,wCAAwC;YACxC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC;QAEF,oCAAoC;QACpC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAE1C,OAAO,GAAG,EAAE;YACX,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC5C,CAAC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACzC,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAEjD,wCAAwC;IACxC,MAAM,OAAO,GAAG,CAAC,KAAa,EAAgB,EAAE;QAC/C,IAAI,KAAK,GAAG,EAAE;YAAE,OAAO,QAAQ,CAAC;QAChC,IAAI,KAAK,GAAG,GAAG;YAAE,OAAO,QAAQ,CAAC;QACjC,OAAO,MAAM,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAElC,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,SAAiB,EAAU,EAAE;QAC5D,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS;YAAE,OAAO,IAAI,CAAC;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;IAC7C,CAAC,CAAC;IAEF,4DAA4D;IAC5D,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,SAAiB,EAAU,EAAE;QACnE,IAAI,OAAO,CAAC,MAAM,IAAI,SAAS;YAAE,OAAO,OAAO,CAAC;QAChD,OAAO,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC;IAEF,OAAO;QACN,QAAQ;QACR,WAAW;QACX,IAAI;QACJ,QAAQ,EAAE,IAAI,KAAK,QAAQ;QAC3B,QAAQ,EAAE,IAAI,KAAK,QAAQ;QAC3B,MAAM,EAAE,IAAI,KAAK,MAAM;QACvB,QAAQ;QACR,YAAY;KACZ,CAAC;AACH,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"useTerminalWidth.js","sourceRoot":"","sources":["../../source/hooks/useTerminalWidth.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-entities.d.ts","sourceRoot":"","sources":["../../source/markdown-parser/html-entities.ts"],"names":[],"mappings":"AACA,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA2CvD"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Decode HTML entities
|
|
2
|
+
export function decodeHtmlEntities(text) {
|
|
3
|
+
const entities = {
|
|
4
|
+
' ': ' ',
|
|
5
|
+
'&': '&',
|
|
6
|
+
'<': '<',
|
|
7
|
+
'>': '>',
|
|
8
|
+
'"': '"',
|
|
9
|
+
''': "'",
|
|
10
|
+
'©': '©',
|
|
11
|
+
'®': '®',
|
|
12
|
+
'™': '™',
|
|
13
|
+
'€': '€',
|
|
14
|
+
'£': '£',
|
|
15
|
+
'¥': '¥',
|
|
16
|
+
'¢': '¢',
|
|
17
|
+
'§': '§',
|
|
18
|
+
'°': '°',
|
|
19
|
+
'±': '±',
|
|
20
|
+
'×': '×',
|
|
21
|
+
'÷': '÷',
|
|
22
|
+
'–': '–',
|
|
23
|
+
'—': '—',
|
|
24
|
+
'‘': '\u2018',
|
|
25
|
+
'’': '\u2019',
|
|
26
|
+
'“': '\u201C',
|
|
27
|
+
'”': '\u201D',
|
|
28
|
+
'…': '…',
|
|
29
|
+
'•': '•',
|
|
30
|
+
};
|
|
31
|
+
let result = text;
|
|
32
|
+
// Replace named entities
|
|
33
|
+
for (const [entity, char] of Object.entries(entities)) {
|
|
34
|
+
result = result.replace(new RegExp(entity, 'g'), char);
|
|
35
|
+
}
|
|
36
|
+
// Replace numeric entities (e.g.,   or  )
|
|
37
|
+
result = result.replace(/&#(\d+);/g, (_match, code) => String.fromCharCode(parseInt(code, 10)));
|
|
38
|
+
result = result.replace(/&#x([0-9A-Fa-f]+);/g, (_match, code) => String.fromCharCode(parseInt(code, 16)));
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=html-entities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-entities.js","sourceRoot":"","sources":["../../source/markdown-parser/html-entities.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC9C,MAAM,QAAQ,GAA2B;QACxC,QAAQ,EAAE,GAAG;QACb,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,OAAO,EAAE,GAAG;QACZ,SAAS,EAAE,GAAG;QACd,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;QACd,OAAO,EAAE,GAAG;QACZ,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,OAAO,EAAE,GAAG;QACZ,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,GAAG;QACd,UAAU,EAAE,GAAG;QACf,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,GAAG;QACf,QAAQ,EAAE,GAAG;KACb,CAAC;IAEF,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,yBAAyB;IACzB,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IACD,oDAAoD;IACpD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,IAAY,EAAE,EAAE,CAC7D,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CACvC,CAAC;IACF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,MAAM,EAAE,IAAY,EAAE,EAAE,CACvE,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CACvC,CAAC;IACF,OAAO,MAAM,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-entities.spec.d.ts","sourceRoot":"","sources":["../../source/markdown-parser/html-entities.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import test from 'ava';
|
|
2
|
+
import { decodeHtmlEntities } from './html-entities.js';
|
|
3
|
+
console.log(`\nhtml-entities.spec.ts`);
|
|
4
|
+
test('decodeHtmlEntities handles common entities', t => {
|
|
5
|
+
const text = 'Hello World & Friends';
|
|
6
|
+
const result = decodeHtmlEntities(text);
|
|
7
|
+
t.is(result, 'Hello World & Friends');
|
|
8
|
+
});
|
|
9
|
+
test('decodeHtmlEntities handles less-than and greater-than', t => {
|
|
10
|
+
const text = '<div>';
|
|
11
|
+
const result = decodeHtmlEntities(text);
|
|
12
|
+
t.is(result, '<div>');
|
|
13
|
+
});
|
|
14
|
+
test('decodeHtmlEntities handles quotes', t => {
|
|
15
|
+
const text = '"Hello" 'World'';
|
|
16
|
+
const result = decodeHtmlEntities(text);
|
|
17
|
+
t.is(result, '"Hello" \'World\'');
|
|
18
|
+
});
|
|
19
|
+
test('decodeHtmlEntities handles copyright and trademark symbols', t => {
|
|
20
|
+
const text = '© 2024 ® ™';
|
|
21
|
+
const result = decodeHtmlEntities(text);
|
|
22
|
+
t.is(result, '© 2024 ® ™');
|
|
23
|
+
});
|
|
24
|
+
test('decodeHtmlEntities handles currency symbols', t => {
|
|
25
|
+
const text = '€ £ ¥ ¢';
|
|
26
|
+
const result = decodeHtmlEntities(text);
|
|
27
|
+
t.is(result, '€ £ ¥ ¢');
|
|
28
|
+
});
|
|
29
|
+
test('decodeHtmlEntities handles mathematical symbols', t => {
|
|
30
|
+
const text = '§ ° ± × ÷';
|
|
31
|
+
const result = decodeHtmlEntities(text);
|
|
32
|
+
t.is(result, '§ ° ± × ÷');
|
|
33
|
+
});
|
|
34
|
+
test('decodeHtmlEntities handles typography symbols', t => {
|
|
35
|
+
const text = '– — ‘text’ “text” … •';
|
|
36
|
+
const result = decodeHtmlEntities(text);
|
|
37
|
+
t.is(result, '– — \u2018text\u2019 \u201Ctext\u201D … •');
|
|
38
|
+
});
|
|
39
|
+
test('decodeHtmlEntities handles numeric entities (decimal)', t => {
|
|
40
|
+
const text = ' ©';
|
|
41
|
+
const result = decodeHtmlEntities(text);
|
|
42
|
+
t.is(result, '\u00A0©');
|
|
43
|
+
});
|
|
44
|
+
test('decodeHtmlEntities handles numeric entities (hexadecimal)', t => {
|
|
45
|
+
const text = ' ©';
|
|
46
|
+
const result = decodeHtmlEntities(text);
|
|
47
|
+
t.is(result, '\u00A0©');
|
|
48
|
+
});
|
|
49
|
+
test('decodeHtmlEntities handles mixed entities', t => {
|
|
50
|
+
const text = '<div> © © ©';
|
|
51
|
+
const result = decodeHtmlEntities(text);
|
|
52
|
+
t.is(result, '<div> © © ©');
|
|
53
|
+
});
|
|
54
|
+
test('decodeHtmlEntities leaves normal text unchanged', t => {
|
|
55
|
+
const text = 'Hello World! This is normal text.';
|
|
56
|
+
const result = decodeHtmlEntities(text);
|
|
57
|
+
t.is(result, text);
|
|
58
|
+
});
|
|
59
|
+
test('decodeHtmlEntities handles multiple occurrences of same entity', t => {
|
|
60
|
+
const text = '&&&';
|
|
61
|
+
const result = decodeHtmlEntities(text);
|
|
62
|
+
t.is(result, '&&&');
|
|
63
|
+
});
|
|
64
|
+
test('decodeHtmlEntities handles empty string', t => {
|
|
65
|
+
const result = decodeHtmlEntities('');
|
|
66
|
+
t.is(result, '');
|
|
67
|
+
});
|
|
68
|
+
test('decodeHtmlEntities handles entities in context', t => {
|
|
69
|
+
const text = 'The price is £50 & the tax is €10.';
|
|
70
|
+
const result = decodeHtmlEntities(text);
|
|
71
|
+
t.is(result, 'The price is £50 & the tax is €10.');
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=html-entities.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-entities.spec.js","sourceRoot":"","sources":["../../source/markdown-parser/html-entities.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Colors } from '../types/markdown-parser.js';
|
|
2
|
+
export declare function parseMarkdown(text: string, themeColors: Colors): string;
|
|
3
|
+
export { decodeHtmlEntities } from './html-entities.js';
|
|
4
|
+
export { parseMarkdownTable } from './table-parser.js';
|
|
5
|
+
export type { Colors } from '../types/markdown-parser.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/markdown-parser/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,6BAA6B,CAAC;AAKxD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAiHvE;AAGD,OAAO,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AACrD,YAAY,EAAC,MAAM,EAAC,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { highlight } from 'cli-highlight';
|
|
3
|
+
import { decodeHtmlEntities } from './html-entities.js';
|
|
4
|
+
import { parseMarkdownTable } from './table-parser.js';
|
|
5
|
+
// Basic markdown parser for terminal
|
|
6
|
+
export function parseMarkdown(text, themeColors) {
|
|
7
|
+
// First decode HTML entities
|
|
8
|
+
let result = decodeHtmlEntities(text);
|
|
9
|
+
// Step 1: Parse tables FIRST (before <br> conversion and code extraction)
|
|
10
|
+
// Tables should have plain text only, no markdown formatting
|
|
11
|
+
// Note: We parse tables before converting <br> tags so that multi-line
|
|
12
|
+
// cells don't break the table regex
|
|
13
|
+
result = result.replace(/(?:^|\n)((?:\|.+\|\n)+)/gm, (_match, tableText) => {
|
|
14
|
+
return '\n' + parseMarkdownTable(tableText, themeColors) + '\n';
|
|
15
|
+
});
|
|
16
|
+
// Step 2: Convert <br> and <br/> tags to newlines (AFTER table parsing)
|
|
17
|
+
result = result.replace(/<br\s*\/?>/gi, '\n');
|
|
18
|
+
// Step 3: Extract and protect code blocks and inline code with placeholders
|
|
19
|
+
const codeBlocks = [];
|
|
20
|
+
const inlineCodes = [];
|
|
21
|
+
// Extract code blocks first (```language\ncode\n```)
|
|
22
|
+
result = result.replace(/```([a-zA-Z0-9\-+#]+)?\n([\s\S]*?)```/g, (_match, lang, code) => {
|
|
23
|
+
try {
|
|
24
|
+
const codeStr = String(code).trim();
|
|
25
|
+
// Apply syntax highlighting with detected language
|
|
26
|
+
const highlighted = highlight(codeStr, {
|
|
27
|
+
language: lang || 'plaintext',
|
|
28
|
+
theme: 'default',
|
|
29
|
+
});
|
|
30
|
+
const placeholder = `__CODE_BLOCK_${codeBlocks.length}__`;
|
|
31
|
+
codeBlocks.push(highlighted);
|
|
32
|
+
return placeholder;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// Fallback to plain colored text if highlighting fails
|
|
36
|
+
const formatted = chalk.hex(themeColors.tool)(String(code).trim());
|
|
37
|
+
const placeholder = `__CODE_BLOCK_${codeBlocks.length}__`;
|
|
38
|
+
codeBlocks.push(formatted);
|
|
39
|
+
return placeholder;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
// Extract inline code (`code`)
|
|
43
|
+
result = result.replace(/`([^`]+)`/g, (_match, code) => {
|
|
44
|
+
const formatted = chalk.hex(themeColors.tool)(String(code).trim());
|
|
45
|
+
const placeholder = `__INLINE_CODE_${inlineCodes.length}__`;
|
|
46
|
+
inlineCodes.push(formatted);
|
|
47
|
+
return placeholder;
|
|
48
|
+
});
|
|
49
|
+
// Step 4: Process markdown formatting (now safe from code interference)
|
|
50
|
+
// Process lists FIRST before italic, since * at start of line is a list, not italic
|
|
51
|
+
// List items (- item or * item or 1. item)
|
|
52
|
+
// Use [ \t]* instead of \s* to avoid consuming newlines before the list
|
|
53
|
+
// Preserve indentation for nested lists
|
|
54
|
+
result = result.replace(/^([ \t]*)[-*]\s+(.+)$/gm, (_match, indent, text) => {
|
|
55
|
+
return indent + chalk.hex(themeColors.white)(`• ${text}`);
|
|
56
|
+
});
|
|
57
|
+
result = result.replace(/^([ \t]*)(\d+)\.\s+(.+)$/gm, (_match, indent, num, text) => {
|
|
58
|
+
return indent + chalk.hex(themeColors.white)(`${num}. ${text}`);
|
|
59
|
+
});
|
|
60
|
+
// Bold (**text** only - avoid __ to prevent conflicts with snake_case)
|
|
61
|
+
result = result.replace(/\*\*([^*]+)\*\*/g, (_match, text) => {
|
|
62
|
+
return chalk.hex(themeColors.white).bold(text);
|
|
63
|
+
});
|
|
64
|
+
// Italic (*text* only - avoid _ to prevent conflicts with snake_case)
|
|
65
|
+
// Require whitespace or line boundaries around asterisks to avoid matching char*ptr
|
|
66
|
+
// Use [^*\n] to prevent matching across lines
|
|
67
|
+
// Only match if content contains at least one letter to avoid matching math like "5 * 3 * 2"
|
|
68
|
+
result = result.replace(/(^|\s)\*([^*\n]*[a-zA-Z][^*\n]*)\*($|\s)/gm, (_match, before, text, after) => {
|
|
69
|
+
return before + chalk.hex(themeColors.white).italic(text) + after;
|
|
70
|
+
});
|
|
71
|
+
// Headings (# Heading)
|
|
72
|
+
result = result.replace(/^(#{1,6})\s+(.+)$/gm, (_match, _hashes, text) => {
|
|
73
|
+
return chalk.hex(themeColors.primary).bold(text);
|
|
74
|
+
});
|
|
75
|
+
// Links [text](url)
|
|
76
|
+
result = result.replace(/\[([^\]]+)\]\(([^)]+)\)/g, (_match, text, url) => {
|
|
77
|
+
return (chalk.hex(themeColors.info).underline(text) +
|
|
78
|
+
' ' +
|
|
79
|
+
chalk.hex(themeColors.secondary)(`(${url})`));
|
|
80
|
+
});
|
|
81
|
+
// Blockquotes (> text)
|
|
82
|
+
result = result.replace(/^>\s+(.+)$/gm, (_match, text) => {
|
|
83
|
+
return chalk.hex(themeColors.secondary).italic(`> ${text}`);
|
|
84
|
+
});
|
|
85
|
+
// Step 5: Restore code blocks and inline code from placeholders
|
|
86
|
+
result = result.replace(/__CODE_BLOCK_(\d+)__/g, (_match, index) => {
|
|
87
|
+
return codeBlocks[parseInt(index, 10)] || '';
|
|
88
|
+
});
|
|
89
|
+
result = result.replace(/__INLINE_CODE_(\d+)__/g, (_match, index) => {
|
|
90
|
+
return inlineCodes[parseInt(index, 10)] || '';
|
|
91
|
+
});
|
|
92
|
+
return result;
|
|
93
|
+
}
|
|
94
|
+
// Re-export utilities for convenience
|
|
95
|
+
export { decodeHtmlEntities } from './html-entities.js';
|
|
96
|
+
export { parseMarkdownTable } from './table-parser.js';
|
|
97
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/markdown-parser/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.spec.d.ts","sourceRoot":"","sources":["../../source/markdown-parser/index.spec.ts"],"names":[],"mappings":""}
|