@pentoshi/clai 0.3.1 → 0.5.1
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 +5 -2
- package/dist/agent/runner.js +1 -0
- package/dist/agent/runner.js.map +1 -1
- package/dist/commands/providers.js +2 -0
- package/dist/commands/providers.js.map +1 -1
- package/dist/commands/update.js +1 -1
- package/dist/commands/update.js.map +1 -1
- package/dist/index.js +9 -3
- package/dist/index.js.map +1 -1
- package/dist/llm/anthropic.js +69 -5
- package/dist/llm/anthropic.js.map +1 -1
- package/dist/llm/capabilities.d.ts +2 -0
- package/dist/llm/capabilities.js +55 -0
- package/dist/llm/capabilities.js.map +1 -0
- package/dist/llm/gemini.js +67 -13
- package/dist/llm/gemini.js.map +1 -1
- package/dist/llm/groq.js +4 -0
- package/dist/llm/groq.js.map +1 -1
- package/dist/llm/http.d.ts +6 -1
- package/dist/llm/http.js +82 -11
- package/dist/llm/http.js.map +1 -1
- package/dist/llm/nvidia.d.ts +2 -0
- package/dist/llm/nvidia.js +56 -0
- package/dist/llm/nvidia.js.map +1 -0
- package/dist/llm/openai.js +4 -0
- package/dist/llm/openai.js.map +1 -1
- package/dist/llm/openrouter.js +4 -0
- package/dist/llm/openrouter.js.map +1 -1
- package/dist/llm/provider.js +8 -2
- package/dist/llm/provider.js.map +1 -1
- package/dist/llm/router.js +3 -0
- package/dist/llm/router.js.map +1 -1
- package/dist/modes/ask.js +4 -0
- package/dist/modes/ask.js.map +1 -1
- package/dist/repl.js +197 -22
- package/dist/repl.js.map +1 -1
- package/dist/store/config.d.ts +3 -1
- package/dist/store/config.js +11 -2
- package/dist/store/config.js.map +1 -1
- package/dist/types.d.ts +7 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/dist/ui/markdown.d.ts +6 -0
- package/dist/ui/markdown.js +221 -0
- package/dist/ui/markdown.js.map +1 -0
- package/package.json +3 -1
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
// Lightweight terminal markdown renderer that styles **bold**, *italic*,
|
|
3
|
+
// `code`, links, headings, lists, blockquotes, hrules, and ```fenced```
|
|
4
|
+
// code blocks. Designed to work both for one-shot strings and for
|
|
5
|
+
// token-streaming inputs (line-buffered).
|
|
6
|
+
const FENCE_OPEN = chalk.dim;
|
|
7
|
+
const FENCE_LINE = chalk.cyan;
|
|
8
|
+
function repeat(char, count) {
|
|
9
|
+
return char.repeat(Math.max(0, count));
|
|
10
|
+
}
|
|
11
|
+
function renderFenceHeader(lang, width = 60) {
|
|
12
|
+
const label = lang || "code";
|
|
13
|
+
const head = `─── ${label} `;
|
|
14
|
+
return FENCE_OPEN(head + repeat("─", Math.max(0, width - head.length)));
|
|
15
|
+
}
|
|
16
|
+
function renderFenceFooter(width = 60) {
|
|
17
|
+
return FENCE_OPEN(repeat("─", width));
|
|
18
|
+
}
|
|
19
|
+
// Walk inline markdown tokens and convert them to ANSI styles. Designed to
|
|
20
|
+
// handle one logical line at a time (so it can run after a newline arrives
|
|
21
|
+
// in the token stream).
|
|
22
|
+
export function renderInlineMarkdown(text) {
|
|
23
|
+
let out = "";
|
|
24
|
+
let i = 0;
|
|
25
|
+
while (i < text.length) {
|
|
26
|
+
// ``code`` (longer fences first to avoid eating the inner ticks)
|
|
27
|
+
if (text.startsWith("``", i)) {
|
|
28
|
+
const end = text.indexOf("``", i + 2);
|
|
29
|
+
if (end > i + 2) {
|
|
30
|
+
out += chalk.cyan(`\`${text.slice(i + 2, end)}\``);
|
|
31
|
+
i = end + 2;
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// `code`
|
|
36
|
+
if (text[i] === "`") {
|
|
37
|
+
const end = text.indexOf("`", i + 1);
|
|
38
|
+
if (end > i + 1) {
|
|
39
|
+
out += chalk.cyan(text.slice(i + 1, end));
|
|
40
|
+
i = end + 1;
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// ***bold-italic***
|
|
45
|
+
if (text.startsWith("***", i)) {
|
|
46
|
+
const end = text.indexOf("***", i + 3);
|
|
47
|
+
if (end > i + 3) {
|
|
48
|
+
out += chalk.bold.italic(renderInlineMarkdown(text.slice(i + 3, end)));
|
|
49
|
+
i = end + 3;
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// **bold**
|
|
54
|
+
if (text.startsWith("**", i)) {
|
|
55
|
+
const end = text.indexOf("**", i + 2);
|
|
56
|
+
if (end > i + 2) {
|
|
57
|
+
out += chalk.bold(renderInlineMarkdown(text.slice(i + 2, end)));
|
|
58
|
+
i = end + 2;
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// __bold__
|
|
63
|
+
if (text.startsWith("__", i)) {
|
|
64
|
+
const end = text.indexOf("__", i + 2);
|
|
65
|
+
if (end > i + 2) {
|
|
66
|
+
out += chalk.bold(renderInlineMarkdown(text.slice(i + 2, end)));
|
|
67
|
+
i = end + 2;
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// *italic* — only when surrounded by non-word boundaries to avoid
|
|
72
|
+
// chewing through `*` characters in code or maths.
|
|
73
|
+
if (text[i] === "*" && text[i + 1] !== "*") {
|
|
74
|
+
const end = text.indexOf("*", i + 1);
|
|
75
|
+
if (end > i + 1 && text[end + 1] !== "*") {
|
|
76
|
+
const inner = text.slice(i + 1, end);
|
|
77
|
+
if (inner.length > 0 && !inner.startsWith(" ") && !inner.endsWith(" ")) {
|
|
78
|
+
out += chalk.italic(renderInlineMarkdown(inner));
|
|
79
|
+
i = end + 1;
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// _italic_ (skip if it looks like part of a snake_case word)
|
|
85
|
+
if (text[i] === "_") {
|
|
86
|
+
const prev = text[i - 1];
|
|
87
|
+
const isWordBoundary = !prev || /[\s\W]/.test(prev);
|
|
88
|
+
if (isWordBoundary) {
|
|
89
|
+
const end = text.indexOf("_", i + 1);
|
|
90
|
+
if (end > i + 1) {
|
|
91
|
+
const after = text[end + 1];
|
|
92
|
+
const isAfterBoundary = !after || /[\s\W]/.test(after);
|
|
93
|
+
const inner = text.slice(i + 1, end);
|
|
94
|
+
if (isAfterBoundary &&
|
|
95
|
+
inner.length > 0 &&
|
|
96
|
+
!inner.startsWith(" ") &&
|
|
97
|
+
!inner.endsWith(" ")) {
|
|
98
|
+
out += chalk.italic(renderInlineMarkdown(inner));
|
|
99
|
+
i = end + 1;
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// ~~strike~~
|
|
106
|
+
if (text.startsWith("~~", i)) {
|
|
107
|
+
const end = text.indexOf("~~", i + 2);
|
|
108
|
+
if (end > i + 2) {
|
|
109
|
+
out += chalk.strikethrough(renderInlineMarkdown(text.slice(i + 2, end)));
|
|
110
|
+
i = end + 2;
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// [label](url)
|
|
115
|
+
if (text[i] === "[") {
|
|
116
|
+
const close = text.indexOf("]", i + 1);
|
|
117
|
+
if (close > i && text[close + 1] === "(") {
|
|
118
|
+
const urlEnd = text.indexOf(")", close + 2);
|
|
119
|
+
if (urlEnd > close + 2) {
|
|
120
|
+
const label = text.slice(i + 1, close);
|
|
121
|
+
const url = text.slice(close + 2, urlEnd);
|
|
122
|
+
out += chalk.cyan.underline(label) + chalk.dim(`(${url})`);
|
|
123
|
+
i = urlEnd + 1;
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
out += text[i];
|
|
129
|
+
i += 1;
|
|
130
|
+
}
|
|
131
|
+
return out;
|
|
132
|
+
}
|
|
133
|
+
function renderBlockLine(line, state) {
|
|
134
|
+
// Code fence open/close
|
|
135
|
+
const fenceMatch = line.match(/^(\s*)```(\w*)\s*(.*)$/);
|
|
136
|
+
if (fenceMatch) {
|
|
137
|
+
if (state.inFence) {
|
|
138
|
+
state.inFence = false;
|
|
139
|
+
state.fenceLang = "";
|
|
140
|
+
return renderFenceFooter();
|
|
141
|
+
}
|
|
142
|
+
state.inFence = true;
|
|
143
|
+
state.fenceLang = fenceMatch[2] ?? "";
|
|
144
|
+
return renderFenceHeader(state.fenceLang);
|
|
145
|
+
}
|
|
146
|
+
if (state.inFence) {
|
|
147
|
+
return FENCE_LINE(line);
|
|
148
|
+
}
|
|
149
|
+
// Headings
|
|
150
|
+
const heading = line.match(/^(#{1,6})\s+(.*)$/);
|
|
151
|
+
if (heading) {
|
|
152
|
+
const level = heading[1].length;
|
|
153
|
+
const body = heading[2].trim();
|
|
154
|
+
if (level <= 2)
|
|
155
|
+
return chalk.bold.magenta(body);
|
|
156
|
+
if (level === 3)
|
|
157
|
+
return chalk.bold.cyan(body);
|
|
158
|
+
return chalk.bold(body);
|
|
159
|
+
}
|
|
160
|
+
// Horizontal rule
|
|
161
|
+
if (/^\s*[-*_]{3,}\s*$/.test(line)) {
|
|
162
|
+
return chalk.dim(repeat("─", 60));
|
|
163
|
+
}
|
|
164
|
+
// Blockquote
|
|
165
|
+
if (line.startsWith("> ")) {
|
|
166
|
+
return chalk.dim("│ ") + chalk.dim.italic(renderInlineMarkdown(line.slice(2)));
|
|
167
|
+
}
|
|
168
|
+
// Ordered list
|
|
169
|
+
const ordered = line.match(/^(\s*)(\d+)\.\s+(.*)$/);
|
|
170
|
+
if (ordered) {
|
|
171
|
+
return `${ordered[1]}${chalk.cyan(`${ordered[2]}.`)} ${renderInlineMarkdown(ordered[3])}`;
|
|
172
|
+
}
|
|
173
|
+
// Unordered list
|
|
174
|
+
const unordered = line.match(/^(\s*)[-*+]\s+(.*)$/);
|
|
175
|
+
if (unordered) {
|
|
176
|
+
return `${unordered[1]}${chalk.cyan("•")} ${renderInlineMarkdown(unordered[2])}`;
|
|
177
|
+
}
|
|
178
|
+
return renderInlineMarkdown(line);
|
|
179
|
+
}
|
|
180
|
+
export function renderMarkdown(text) {
|
|
181
|
+
if (!text)
|
|
182
|
+
return text;
|
|
183
|
+
const state = { inFence: false, fenceLang: "" };
|
|
184
|
+
const lines = text.split("\n");
|
|
185
|
+
return lines.map((line) => renderBlockLine(line, state)).join("\n");
|
|
186
|
+
}
|
|
187
|
+
// Streaming variant: buffers tokens and emits ANSI-rendered output
|
|
188
|
+
// whenever a complete line arrives. Inside a fenced code block, lines
|
|
189
|
+
// are emitted as cyan text with header/footer borders.
|
|
190
|
+
export function createMarkdownStreamWriter(write) {
|
|
191
|
+
const state = { inFence: false, fenceLang: "" };
|
|
192
|
+
let buffer = "";
|
|
193
|
+
const emitLine = (line, withNewline) => {
|
|
194
|
+
write(renderBlockLine(line, state));
|
|
195
|
+
if (withNewline)
|
|
196
|
+
write("\n");
|
|
197
|
+
};
|
|
198
|
+
return {
|
|
199
|
+
push(token) {
|
|
200
|
+
buffer += token;
|
|
201
|
+
let newlineIndex = buffer.indexOf("\n");
|
|
202
|
+
while (newlineIndex !== -1) {
|
|
203
|
+
const line = buffer.slice(0, newlineIndex);
|
|
204
|
+
buffer = buffer.slice(newlineIndex + 1);
|
|
205
|
+
emitLine(line, true);
|
|
206
|
+
newlineIndex = buffer.indexOf("\n");
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
finish() {
|
|
210
|
+
if (buffer.length > 0) {
|
|
211
|
+
emitLine(buffer, false);
|
|
212
|
+
buffer = "";
|
|
213
|
+
}
|
|
214
|
+
if (state.inFence) {
|
|
215
|
+
// Emit a closing rule so unterminated fences still look tidy.
|
|
216
|
+
write("\n" + renderFenceFooter());
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/ui/markdown.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pentoshi/clai",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "A fast, cross-platform AI CLI assistant with ask and agent modes for shell tasks, file operations, and cybersecurity workflows.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -21,6 +21,8 @@
|
|
|
21
21
|
"llm",
|
|
22
22
|
"groq",
|
|
23
23
|
"gemini",
|
|
24
|
+
"nvidia",
|
|
25
|
+
"nim",
|
|
24
26
|
"ollama"
|
|
25
27
|
],
|
|
26
28
|
"bin": {
|