@nanocollective/nanocoder 1.16.1 → 1.16.3
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/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +35 -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/config/index.d.ts.map +1 -1
- package/dist/config/index.js +13 -5
- package/dist/config/index.js.map +1 -1
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +23 -2
- package/dist/config/paths.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/useChatHandler.d.ts.map +1 -1
- package/dist/hooks/useChatHandler.js +26 -0
- package/dist/hooks/useChatHandler.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/models/models-dev-client.d.ts.map +1 -1
- package/dist/models/models-dev-client.js +7 -1
- package/dist/models/models-dev-client.js.map +1 -1
- package/dist/models/models-dev-client.spec.d.ts +2 -0
- package/dist/models/models-dev-client.spec.d.ts.map +1 -0
- package/dist/models/models-dev-client.spec.js +302 -0
- package/dist/models/models-dev-client.spec.js.map +1 -0
- package/dist/tool-calling/xml-parser.d.ts.map +1 -1
- package/dist/tool-calling/xml-parser.js +39 -0
- package/dist/tool-calling/xml-parser.js.map +1 -1
- package/dist/tool-calling/xml-parser.spec.js +43 -0
- package/dist/tool-calling/xml-parser.spec.js.map +1 -1
- package/dist/tools/execute-bash.d.ts.map +1 -1
- package/dist/tools/execute-bash.js +12 -27
- 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/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +0 -1
- package/dist/types/index.js.map +1 -1
- 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/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 +230 -0
- package/dist/utils/update-checker.spec.js.map +1 -0
- 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 -250
- package/dist/tools/search-files.js.map +0 -1
- package/dist/types/tools.d.ts +0 -5
- package/dist/types/tools.d.ts.map +0 -1
- package/dist/types/tools.js +0 -2
- package/dist/types/tools.js.map +0 -1
|
@@ -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":""}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import test from 'ava';
|
|
2
|
+
import { parseMarkdown } from './index.js';
|
|
3
|
+
console.log(`\nindex.spec.ts`);
|
|
4
|
+
const mockColors = {
|
|
5
|
+
primary: '#3b82f6',
|
|
6
|
+
secondary: '#6b7280',
|
|
7
|
+
success: '#10b981',
|
|
8
|
+
error: '#ef4444',
|
|
9
|
+
warning: '#f59e0b',
|
|
10
|
+
info: '#3b82f6',
|
|
11
|
+
white: '#ffffff',
|
|
12
|
+
tool: '#8b5cf6',
|
|
13
|
+
};
|
|
14
|
+
// Inline code tests
|
|
15
|
+
test('parseMarkdown handles inline code', t => {
|
|
16
|
+
const text = 'Use `npm install` to install packages';
|
|
17
|
+
const result = parseMarkdown(text, mockColors);
|
|
18
|
+
t.true(result.includes('npm install'));
|
|
19
|
+
t.false(result.includes('`npm install`'));
|
|
20
|
+
});
|
|
21
|
+
// Bold and italic tests
|
|
22
|
+
test('parseMarkdown handles bold text', t => {
|
|
23
|
+
const text = 'This is **bold** text';
|
|
24
|
+
const result = parseMarkdown(text, mockColors);
|
|
25
|
+
t.true(result.includes('bold'));
|
|
26
|
+
});
|
|
27
|
+
test('parseMarkdown handles italic text', t => {
|
|
28
|
+
const text = 'This is *italic* text';
|
|
29
|
+
const result = parseMarkdown(text, mockColors);
|
|
30
|
+
t.true(result.includes('italic'));
|
|
31
|
+
});
|
|
32
|
+
// Underscore preservation tests
|
|
33
|
+
test('parseMarkdown preserves underscores in identifiers', t => {
|
|
34
|
+
const text = 'Use `create_file`, `read_file`, or `search_file_contents` functions';
|
|
35
|
+
const result = parseMarkdown(text, mockColors);
|
|
36
|
+
t.true(result.includes('create_file'));
|
|
37
|
+
t.true(result.includes('read_file'));
|
|
38
|
+
t.true(result.includes('search_file_contents'));
|
|
39
|
+
});
|
|
40
|
+
test('parseMarkdown preserves underscores in regular text', t => {
|
|
41
|
+
const text = 'The variable_name and function_call should remain intact';
|
|
42
|
+
const result = parseMarkdown(text, mockColors);
|
|
43
|
+
t.true(result.includes('variable_name'));
|
|
44
|
+
t.true(result.includes('function_call'));
|
|
45
|
+
});
|
|
46
|
+
// Heading tests
|
|
47
|
+
test('parseMarkdown handles headings', t => {
|
|
48
|
+
const text = '# Heading 1\n## Heading 2\n### Heading 3';
|
|
49
|
+
const result = parseMarkdown(text, mockColors);
|
|
50
|
+
t.true(result.includes('Heading 1'));
|
|
51
|
+
t.true(result.includes('Heading 2'));
|
|
52
|
+
t.true(result.includes('Heading 3'));
|
|
53
|
+
});
|
|
54
|
+
// Link tests
|
|
55
|
+
test('parseMarkdown handles links', t => {
|
|
56
|
+
const text = 'Visit [Google](https://google.com) for search';
|
|
57
|
+
const result = parseMarkdown(text, mockColors);
|
|
58
|
+
t.true(result.includes('Google'));
|
|
59
|
+
t.true(result.includes('https://google.com'));
|
|
60
|
+
});
|
|
61
|
+
// Blockquote tests
|
|
62
|
+
test('parseMarkdown handles blockquotes', t => {
|
|
63
|
+
const text = '> This is a quote\n> Another line';
|
|
64
|
+
const result = parseMarkdown(text, mockColors);
|
|
65
|
+
t.true(result.includes('This is a quote'));
|
|
66
|
+
t.true(result.includes('Another line'));
|
|
67
|
+
});
|
|
68
|
+
// List tests
|
|
69
|
+
test('parseMarkdown handles unordered lists', t => {
|
|
70
|
+
const text = '- Item 1\n- Item 2\n- Item 3';
|
|
71
|
+
const result = parseMarkdown(text, mockColors);
|
|
72
|
+
t.true(result.includes('•'));
|
|
73
|
+
t.true(result.includes('Item 1'));
|
|
74
|
+
t.true(result.includes('Item 2'));
|
|
75
|
+
});
|
|
76
|
+
test('parseMarkdown handles ordered lists', t => {
|
|
77
|
+
const text = '1. First\n2. Second\n3. Third';
|
|
78
|
+
const result = parseMarkdown(text, mockColors);
|
|
79
|
+
t.true(result.includes('1.'));
|
|
80
|
+
t.true(result.includes('2.'));
|
|
81
|
+
t.true(result.includes('3.'));
|
|
82
|
+
t.true(result.includes('First'));
|
|
83
|
+
t.true(result.includes('Second'));
|
|
84
|
+
});
|
|
85
|
+
test('parseMarkdown handles nested/indented bullet lists', t => {
|
|
86
|
+
const text = `- Top level item
|
|
87
|
+
- Nested item 1
|
|
88
|
+
- Nested item 2
|
|
89
|
+
- Double nested
|
|
90
|
+
- Another top level`;
|
|
91
|
+
const result = parseMarkdown(text, mockColors);
|
|
92
|
+
t.true(result.includes(' • Nested item 1'));
|
|
93
|
+
t.true(result.includes(' • Double nested'));
|
|
94
|
+
});
|
|
95
|
+
test('parseMarkdown handles nested numbered lists', t => {
|
|
96
|
+
const text = `1. First level
|
|
97
|
+
1. Nested first
|
|
98
|
+
2. Nested second
|
|
99
|
+
2. Back to first level`;
|
|
100
|
+
const result = parseMarkdown(text, mockColors);
|
|
101
|
+
t.true(result.includes(' 1. Nested first'));
|
|
102
|
+
t.true(result.includes(' 2. Nested second'));
|
|
103
|
+
});
|
|
104
|
+
// HTML entity tests
|
|
105
|
+
test('parseMarkdown decodes HTML entities', t => {
|
|
106
|
+
const text = '<div> & ©';
|
|
107
|
+
const result = parseMarkdown(text, mockColors);
|
|
108
|
+
t.true(result.includes('<div>'));
|
|
109
|
+
t.true(result.includes('&'));
|
|
110
|
+
t.true(result.includes('©'));
|
|
111
|
+
});
|
|
112
|
+
// Table tests
|
|
113
|
+
test('parseMarkdown handles tables', t => {
|
|
114
|
+
const text = `| Name | Age |
|
|
115
|
+
|------|-----|
|
|
116
|
+
| John | 25 |`;
|
|
117
|
+
const result = parseMarkdown(text, mockColors);
|
|
118
|
+
t.true(result.includes('Name'));
|
|
119
|
+
t.true(result.includes('John'));
|
|
120
|
+
});
|
|
121
|
+
test('parseMarkdown renders tables with plain text (no markdown)', t => {
|
|
122
|
+
const text = `| Command | Description |
|
|
123
|
+
|---------|-------------|
|
|
124
|
+
| \`npm install\` | Install dependencies |
|
|
125
|
+
| \`npm start\` | Start the application |`;
|
|
126
|
+
const result = parseMarkdown(text, mockColors);
|
|
127
|
+
t.true(result.includes('npm install'));
|
|
128
|
+
t.true(result.includes('npm start'));
|
|
129
|
+
t.false(result.includes('`npm install`'));
|
|
130
|
+
});
|
|
131
|
+
// Code block tests
|
|
132
|
+
test('parseMarkdown handles code blocks with language', t => {
|
|
133
|
+
const text = '```javascript\nconst x = 5;\n```';
|
|
134
|
+
const result = parseMarkdown(text, mockColors);
|
|
135
|
+
t.true(result.includes('const x = 5'));
|
|
136
|
+
});
|
|
137
|
+
test('parseMarkdown handles code blocks without language', t => {
|
|
138
|
+
const text = '```\nPlain code\n```';
|
|
139
|
+
const result = parseMarkdown(text, mockColors);
|
|
140
|
+
t.true(result.includes('Plain code'));
|
|
141
|
+
});
|
|
142
|
+
// Edge case tests
|
|
143
|
+
test('parseMarkdown does not create bullet list from hyphen in middle of line', t => {
|
|
144
|
+
const text = 'This is not - a list';
|
|
145
|
+
const result = parseMarkdown(text, mockColors);
|
|
146
|
+
t.false(result.includes('•'));
|
|
147
|
+
t.true(result.includes('This is not - a list'));
|
|
148
|
+
});
|
|
149
|
+
test('parseMarkdown does not format asterisks in math expressions', t => {
|
|
150
|
+
const text = 'Calculate 5 * 3 * 2 = 30';
|
|
151
|
+
const result = parseMarkdown(text, mockColors);
|
|
152
|
+
t.true(result.includes('5 * 3 * 2'));
|
|
153
|
+
});
|
|
154
|
+
test('parseMarkdown does not format asterisks in file globs', t => {
|
|
155
|
+
const text = 'Match files with *.js or *.tsx patterns';
|
|
156
|
+
const result = parseMarkdown(text, mockColors);
|
|
157
|
+
t.true(result.includes('*.js'));
|
|
158
|
+
t.true(result.includes('*.tsx'));
|
|
159
|
+
});
|
|
160
|
+
test('parseMarkdown does not create heading from hash in middle of line', t => {
|
|
161
|
+
const text = 'This # is not a heading';
|
|
162
|
+
const result = parseMarkdown(text, mockColors);
|
|
163
|
+
t.true(result.includes('This # is not a heading'));
|
|
164
|
+
});
|
|
165
|
+
test('parseMarkdown preserves asterisks inside code blocks', t => {
|
|
166
|
+
const text = '```javascript\nconst pattern = /\\*\\*/g;\n```';
|
|
167
|
+
const result = parseMarkdown(text, mockColors);
|
|
168
|
+
t.true(result.includes('/\\*\\*/g') || result.includes('**'));
|
|
169
|
+
});
|
|
170
|
+
test('parseMarkdown preserves markdown-like syntax inside inline code', t => {
|
|
171
|
+
const text = 'Use `**bold**` and `*italic*` syntax';
|
|
172
|
+
const result = parseMarkdown(text, mockColors);
|
|
173
|
+
// Code content should be preserved (though formatting may be applied by chalk)
|
|
174
|
+
t.false(result.includes('`**bold**`'));
|
|
175
|
+
t.false(result.includes('`*italic*`'));
|
|
176
|
+
});
|
|
177
|
+
test('parseMarkdown does not format single asterisk surrounded by word chars', t => {
|
|
178
|
+
const text = 'The pointer syntax is char*ptr or int*value';
|
|
179
|
+
const result = parseMarkdown(text, mockColors);
|
|
180
|
+
t.true(result.includes('char*ptr'));
|
|
181
|
+
t.true(result.includes('int*value'));
|
|
182
|
+
});
|
|
183
|
+
// BR tag test
|
|
184
|
+
test('parseMarkdown converts <br> tags to newlines', t => {
|
|
185
|
+
const text = 'Line one<br>Line two<br/>Line three<BR>Line four';
|
|
186
|
+
const result = parseMarkdown(text, mockColors);
|
|
187
|
+
const lines = result.split('\n');
|
|
188
|
+
t.true(lines.length >= 4);
|
|
189
|
+
t.true(result.includes('Line one'));
|
|
190
|
+
t.true(result.includes('Line two'));
|
|
191
|
+
t.false(result.includes('<br'));
|
|
192
|
+
});
|
|
193
|
+
// Spacing tests
|
|
194
|
+
test('parseMarkdown preserves spacing before bullet lists', t => {
|
|
195
|
+
const text = `I can assist with tasks such as:
|
|
196
|
+
|
|
197
|
+
- First item
|
|
198
|
+
- Second item
|
|
199
|
+
|
|
200
|
+
Let me know what you'd like to work on.`;
|
|
201
|
+
const result = parseMarkdown(text, mockColors);
|
|
202
|
+
const lines = result.split('\n');
|
|
203
|
+
const suchAsIndex = lines.findIndex(l => l.includes('I can assist'));
|
|
204
|
+
const firstBulletIndex = lines.findIndex(l => l.includes('• First'));
|
|
205
|
+
t.true(firstBulletIndex - suchAsIndex >= 2, 'Should have blank line before list');
|
|
206
|
+
});
|
|
207
|
+
// Mixed content tests
|
|
208
|
+
test('parseMarkdown handles mixed markdown features', t => {
|
|
209
|
+
const text = `# Title
|
|
210
|
+
|
|
211
|
+
This is **bold** and *italic* text with \`code\`.
|
|
212
|
+
|
|
213
|
+
- List item 1
|
|
214
|
+
- List item 2
|
|
215
|
+
|
|
216
|
+
| Name | Value |
|
|
217
|
+
|------|-------|
|
|
218
|
+
| Test | 123 |`;
|
|
219
|
+
const result = parseMarkdown(text, mockColors);
|
|
220
|
+
t.true(result.includes('Title'));
|
|
221
|
+
t.true(result.includes('bold'));
|
|
222
|
+
t.true(result.includes('italic'));
|
|
223
|
+
t.true(result.includes('•'));
|
|
224
|
+
t.true(result.includes('Name'));
|
|
225
|
+
});
|
|
226
|
+
test('parseMarkdown handles plain text without markdown', t => {
|
|
227
|
+
const text = 'This is just plain text without any formatting';
|
|
228
|
+
const result = parseMarkdown(text, mockColors);
|
|
229
|
+
t.true(result.includes('This is just plain text'));
|
|
230
|
+
});
|
|
231
|
+
test('parseMarkdown handles empty string', t => {
|
|
232
|
+
const result = parseMarkdown('', mockColors);
|
|
233
|
+
t.is(result, '');
|
|
234
|
+
});
|
|
235
|
+
// Placeholder restoration test
|
|
236
|
+
test('parseMarkdown restores inline code placeholders correctly', t => {
|
|
237
|
+
const text = 'Use `npm install` and `npm start` commands';
|
|
238
|
+
const result = parseMarkdown(text, mockColors);
|
|
239
|
+
t.true(result.includes('npm install'));
|
|
240
|
+
t.true(result.includes('npm start'));
|
|
241
|
+
t.false(result.includes('__INLINE_CODE'));
|
|
242
|
+
t.false(result.includes('_INLINE'));
|
|
243
|
+
t.false(result.includes('CODE_'));
|
|
244
|
+
});
|
|
245
|
+
//# sourceMappingURL=index.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../source/markdown-parser/index.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-parser.d.ts","sourceRoot":"","sources":["../../source/markdown-parser/table-parser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AAIrD,wBAAgB,kBAAkB,CACjC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GACjB,MAAM,CAoGR"}
|