@relace-ai/jacq 0.1.1-beta.1 → 0.1.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/dist/actions/messages.d.ts +41 -0
- package/dist/actions/messages.js +77 -0
- package/dist/actions/messages.js.map +1 -0
- package/dist/actions/prompts.d.ts +6 -0
- package/dist/actions/prompts.js +18 -0
- package/dist/actions/prompts.js.map +1 -0
- package/dist/actions/tasks.d.ts +13 -0
- package/dist/actions/tasks.js +66 -0
- package/dist/actions/tasks.js.map +1 -0
- package/dist/auth.d.ts +12 -0
- package/dist/auth.js +131 -0
- package/dist/auth.js.map +1 -0
- package/dist/clipboard.d.ts +21 -0
- package/dist/clipboard.js +126 -0
- package/dist/clipboard.js.map +1 -0
- package/dist/commands.d.ts +15 -0
- package/dist/commands.js +23 -0
- package/dist/commands.js.map +1 -0
- package/dist/config.d.ts +12 -0
- package/dist/config.js +63 -0
- package/dist/config.js.map +1 -0
- package/dist/connection.d.ts +43 -0
- package/dist/connection.js +231 -0
- package/dist/connection.js.map +1 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.js +3 -0
- package/dist/constants.js.map +1 -0
- package/dist/debug.d.ts +96 -0
- package/dist/debug.js +144 -0
- package/dist/debug.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +390 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown/index.d.ts +11 -0
- package/dist/markdown/index.js +12 -0
- package/dist/markdown/index.js.map +1 -0
- package/dist/markdown/parser.d.ts +22 -0
- package/dist/markdown/parser.js +310 -0
- package/dist/markdown/parser.js.map +1 -0
- package/dist/markdown/renderer.d.ts +23 -0
- package/dist/markdown/renderer.js +358 -0
- package/dist/markdown/renderer.js.map +1 -0
- package/dist/markdown/types.d.ts +74 -0
- package/dist/markdown/types.js +12 -0
- package/dist/markdown/types.js.map +1 -0
- package/dist/protocol.d.ts +46 -0
- package/dist/protocol.js +608 -0
- package/dist/protocol.js.map +1 -0
- package/dist/renderer.d.ts +46 -0
- package/dist/renderer.js +144 -0
- package/dist/renderer.js.map +1 -0
- package/dist/screen.d.ts +34 -0
- package/dist/screen.js +167 -0
- package/dist/screen.js.map +1 -0
- package/dist/state.d.ts +6 -0
- package/dist/state.js +77 -0
- package/dist/state.js.map +1 -0
- package/dist/styles.d.ts +16 -0
- package/dist/styles.js +68 -0
- package/dist/styles.js.map +1 -0
- package/dist/terminal.d.ts +46 -0
- package/dist/terminal.js +67 -0
- package/dist/terminal.js.map +1 -0
- package/dist/tools/executor.d.ts +8 -0
- package/dist/tools/executor.js +20 -0
- package/dist/tools/executor.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.js +6 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/registry.d.ts +32 -0
- package/dist/tools/registry.js +344 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/types.d.ts +200 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/backgroundTasks.d.ts +7 -0
- package/dist/ui/backgroundTasks.js +192 -0
- package/dist/ui/backgroundTasks.js.map +1 -0
- package/dist/ui/filePicker.d.ts +9 -0
- package/dist/ui/filePicker.js +315 -0
- package/dist/ui/filePicker.js.map +1 -0
- package/dist/ui/index.d.ts +33 -0
- package/dist/ui/index.js +289 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/input.d.ts +7 -0
- package/dist/ui/input.js +320 -0
- package/dist/ui/input.js.map +1 -0
- package/dist/ui/messages.d.ts +9 -0
- package/dist/ui/messages.js +329 -0
- package/dist/ui/messages.js.map +1 -0
- package/dist/ui/primitives.d.ts +35 -0
- package/dist/ui/primitives.js +94 -0
- package/dist/ui/primitives.js.map +1 -0
- package/dist/ui/promptInput.d.ts +8 -0
- package/dist/ui/promptInput.js +198 -0
- package/dist/ui/promptInput.js.map +1 -0
- package/dist/ui/promptPicker.d.ts +7 -0
- package/dist/ui/promptPicker.js +214 -0
- package/dist/ui/promptPicker.js.map +1 -0
- package/dist/ui/sessions.d.ts +6 -0
- package/dist/ui/sessions.js +214 -0
- package/dist/ui/sessions.js.map +1 -0
- package/dist/ui/welcome.d.ts +6 -0
- package/dist/ui/welcome.js +114 -0
- package/dist/ui/welcome.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown Renderer
|
|
3
|
+
*
|
|
4
|
+
* Renders markdown tokens as styled lines.
|
|
5
|
+
* Each line is { text, styleKey, segments? }
|
|
6
|
+
*
|
|
7
|
+
* For inline styling, segments provide per-character style overrides:
|
|
8
|
+
* segments: [{ start, end, styleKey }]
|
|
9
|
+
*/
|
|
10
|
+
import { parse } from './parser.js';
|
|
11
|
+
/**
|
|
12
|
+
* Render inline tokens to text with segments for styling
|
|
13
|
+
*/
|
|
14
|
+
function renderInlineTokens(tokens) {
|
|
15
|
+
let text = '';
|
|
16
|
+
const segments = [];
|
|
17
|
+
for (const token of tokens) {
|
|
18
|
+
const start = text.length;
|
|
19
|
+
switch (token.type) {
|
|
20
|
+
case 'text':
|
|
21
|
+
text += token.content;
|
|
22
|
+
// No segment needed - uses default style
|
|
23
|
+
break;
|
|
24
|
+
case 'bold': {
|
|
25
|
+
const inner = renderInlineTokens(token.children);
|
|
26
|
+
text += inner.text;
|
|
27
|
+
// Push bold for the full range, then child segments override within
|
|
28
|
+
segments.push({ start, end: text.length, styleKey: 'mdBold' });
|
|
29
|
+
for (const seg of inner.segments) {
|
|
30
|
+
segments.push({ start: seg.start + start, end: seg.end + start, styleKey: seg.styleKey });
|
|
31
|
+
}
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
case 'italic': {
|
|
35
|
+
const inner = renderInlineTokens(token.children);
|
|
36
|
+
text += inner.text;
|
|
37
|
+
segments.push({ start, end: text.length, styleKey: 'mdItalic' });
|
|
38
|
+
for (const seg of inner.segments) {
|
|
39
|
+
segments.push({ start: seg.start + start, end: seg.end + start, styleKey: seg.styleKey });
|
|
40
|
+
}
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
case 'code':
|
|
44
|
+
text += '`';
|
|
45
|
+
segments.push({ start, end: text.length, styleKey: 'mdCodeDelim' });
|
|
46
|
+
const codeStart = text.length;
|
|
47
|
+
text += token.content;
|
|
48
|
+
segments.push({ start: codeStart, end: text.length, styleKey: 'mdCode' });
|
|
49
|
+
const delimEnd = text.length;
|
|
50
|
+
text += '`';
|
|
51
|
+
segments.push({ start: delimEnd, end: text.length, styleKey: 'mdCodeDelim' });
|
|
52
|
+
break;
|
|
53
|
+
case 'strikethrough': {
|
|
54
|
+
const inner = renderInlineTokens(token.children);
|
|
55
|
+
text += inner.text;
|
|
56
|
+
segments.push({ start, end: text.length, styleKey: 'mdStrikethrough' });
|
|
57
|
+
for (const seg of inner.segments) {
|
|
58
|
+
segments.push({ start: seg.start + start, end: seg.end + start, styleKey: seg.styleKey });
|
|
59
|
+
}
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
case 'link': {
|
|
63
|
+
text += token.text;
|
|
64
|
+
segments.push({ start, end: text.length, styleKey: 'mdLink' });
|
|
65
|
+
const urlStart = text.length;
|
|
66
|
+
text += ` (${token.url})`;
|
|
67
|
+
segments.push({ start: urlStart, end: text.length, styleKey: 'mdLinkUrl' });
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return { text, segments };
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get plain text from inline tokens (for width calculations)
|
|
76
|
+
*/
|
|
77
|
+
function getInlineText(tokens) {
|
|
78
|
+
return tokens.map(t => {
|
|
79
|
+
if ('children' in t)
|
|
80
|
+
return getInlineText(t.children);
|
|
81
|
+
if ('content' in t)
|
|
82
|
+
return t.content;
|
|
83
|
+
if (t.type === 'link')
|
|
84
|
+
return t.text;
|
|
85
|
+
return '';
|
|
86
|
+
}).join('');
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Wrap text to fit within maxWidth, preserving segments
|
|
90
|
+
*/
|
|
91
|
+
export function wrapWithSegments(text, segments, maxWidth, defaultStyle, prefix = '', continuationPrefix = null) {
|
|
92
|
+
const lines = [];
|
|
93
|
+
const firstPrefixLen = prefix.length;
|
|
94
|
+
const contPrefixLen = continuationPrefix !== null ? continuationPrefix.length : firstPrefixLen;
|
|
95
|
+
// Use minimum content width for wrapping decisions
|
|
96
|
+
const contentWidth = maxWidth - Math.max(firstPrefixLen, contPrefixLen);
|
|
97
|
+
if (contentWidth <= 0) {
|
|
98
|
+
return [{ text: prefix + text, styleKey: defaultStyle, segments }];
|
|
99
|
+
}
|
|
100
|
+
const words = text.split(' ');
|
|
101
|
+
let currentLine = '';
|
|
102
|
+
let lineStart = 0;
|
|
103
|
+
let lineIndex = 0;
|
|
104
|
+
const flushLine = () => {
|
|
105
|
+
if (currentLine) {
|
|
106
|
+
const currentPrefix = lineIndex === 0 ? prefix : (continuationPrefix ?? prefix);
|
|
107
|
+
const prefixLen = currentPrefix.length;
|
|
108
|
+
const lineEnd = lineStart + currentLine.length;
|
|
109
|
+
const lineSegments = segments
|
|
110
|
+
.filter(s => s.start < lineEnd && s.end > lineStart)
|
|
111
|
+
.map(s => ({
|
|
112
|
+
start: Math.max(0, s.start - lineStart) + prefixLen,
|
|
113
|
+
end: Math.min(currentLine.length, s.end - lineStart) + prefixLen,
|
|
114
|
+
styleKey: s.styleKey,
|
|
115
|
+
}));
|
|
116
|
+
lines.push({
|
|
117
|
+
text: currentPrefix + currentLine,
|
|
118
|
+
styleKey: defaultStyle,
|
|
119
|
+
segments: lineSegments.length > 0 ? lineSegments : undefined,
|
|
120
|
+
});
|
|
121
|
+
lineStart += currentLine.length + 1; // +1 for space
|
|
122
|
+
currentLine = '';
|
|
123
|
+
lineIndex++;
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
for (const word of words) {
|
|
127
|
+
if (currentLine.length + word.length + 1 <= contentWidth) {
|
|
128
|
+
currentLine += (currentLine ? ' ' : '') + word;
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
flushLine();
|
|
132
|
+
// Handle words longer than contentWidth
|
|
133
|
+
if (word.length > contentWidth) {
|
|
134
|
+
let remaining = word;
|
|
135
|
+
while (remaining.length > contentWidth) {
|
|
136
|
+
currentLine = remaining.slice(0, contentWidth);
|
|
137
|
+
flushLine();
|
|
138
|
+
remaining = remaining.slice(contentWidth);
|
|
139
|
+
}
|
|
140
|
+
currentLine = remaining;
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
currentLine = word;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
flushLine();
|
|
148
|
+
const fallbackPrefix = lines.length === 0 ? prefix : (continuationPrefix ?? prefix);
|
|
149
|
+
return lines.length > 0 ? lines : [{ text: fallbackPrefix, styleKey: defaultStyle }];
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Check if a paragraph looks like a section header (bold text followed by colon)
|
|
153
|
+
*/
|
|
154
|
+
function isSectionHeader(tokens) {
|
|
155
|
+
if (tokens.length === 0)
|
|
156
|
+
return false;
|
|
157
|
+
const first = tokens[0];
|
|
158
|
+
if (first.type === 'bold' && getInlineText(first.children).endsWith(':'))
|
|
159
|
+
return true;
|
|
160
|
+
if (tokens.length >= 2) {
|
|
161
|
+
const last = tokens[tokens.length - 1];
|
|
162
|
+
if (last.type === 'text' && last.content.trim() === ':') {
|
|
163
|
+
const secondLast = tokens[tokens.length - 2];
|
|
164
|
+
if (secondLast?.type === 'bold')
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
function renderParagraph(token, maxWidth) {
|
|
171
|
+
const isHeader = isSectionHeader(token.children);
|
|
172
|
+
const { text, segments } = renderInlineTokens(token.children);
|
|
173
|
+
const style = 'mdText';
|
|
174
|
+
const prefix = '';
|
|
175
|
+
// Add blank line before section headers
|
|
176
|
+
const lines = isHeader ? [{ text: '', styleKey: 'mdText' }] : [];
|
|
177
|
+
lines.push(...wrapWithSegments(text, segments, maxWidth, style, prefix));
|
|
178
|
+
return lines;
|
|
179
|
+
}
|
|
180
|
+
function renderHeading(token, maxWidth) {
|
|
181
|
+
const { text, segments } = renderInlineTokens(token.children);
|
|
182
|
+
let styleKey;
|
|
183
|
+
switch (token.level) {
|
|
184
|
+
case 1:
|
|
185
|
+
styleKey = 'mdH1';
|
|
186
|
+
break;
|
|
187
|
+
case 2:
|
|
188
|
+
styleKey = 'mdH2';
|
|
189
|
+
break;
|
|
190
|
+
case 3:
|
|
191
|
+
case 4:
|
|
192
|
+
styleKey = 'mdH3';
|
|
193
|
+
break;
|
|
194
|
+
case 5:
|
|
195
|
+
case 6:
|
|
196
|
+
styleKey = 'mdH5';
|
|
197
|
+
break;
|
|
198
|
+
default:
|
|
199
|
+
styleKey = 'mdHeading';
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
return [
|
|
203
|
+
{ text: '', styleKey: 'mdText' },
|
|
204
|
+
...wrapWithSegments(text, segments, maxWidth, styleKey, ''),
|
|
205
|
+
];
|
|
206
|
+
}
|
|
207
|
+
function renderList(token, maxWidth) {
|
|
208
|
+
const lines = [{ text: '', styleKey: 'mdText' }];
|
|
209
|
+
token.items.forEach((item, i) => {
|
|
210
|
+
const bullet = token.ordered ? `${i + 1}. ` : '• ';
|
|
211
|
+
if (item.checked !== undefined) {
|
|
212
|
+
const marker = item.checked ? '[x] ' : '[ ] ';
|
|
213
|
+
const { text: inlineText, segments: inlineSegments } = renderInlineTokens(item.children);
|
|
214
|
+
const text = marker + inlineText;
|
|
215
|
+
const segments = [
|
|
216
|
+
{ start: 0, end: marker.length, styleKey: 'mdTaskMarker' },
|
|
217
|
+
...inlineSegments.map(s => ({ start: s.start + marker.length, end: s.end + marker.length, styleKey: s.styleKey })),
|
|
218
|
+
];
|
|
219
|
+
const indent = ' '.repeat(bullet.length + marker.length);
|
|
220
|
+
lines.push(...wrapWithSegments(text, segments, maxWidth, 'mdText', bullet, indent));
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
const indent = ' '.repeat(bullet.length);
|
|
224
|
+
const { text, segments } = renderInlineTokens(item.children);
|
|
225
|
+
lines.push(...wrapWithSegments(text, segments, maxWidth, 'mdText', bullet, indent));
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
lines.push({ text: '', styleKey: 'mdText' });
|
|
229
|
+
return lines;
|
|
230
|
+
}
|
|
231
|
+
function renderTable(token, _maxWidth) {
|
|
232
|
+
const lines = [{ text: '', styleKey: 'mdText' }];
|
|
233
|
+
// Calculate column widths
|
|
234
|
+
const allRows = [token.headers, ...token.rows];
|
|
235
|
+
const colWidths = [];
|
|
236
|
+
for (const row of allRows) {
|
|
237
|
+
row.forEach((cell, colIdx) => {
|
|
238
|
+
const cellText = getInlineText(cell);
|
|
239
|
+
colWidths[colIdx] = Math.max(colWidths[colIdx] || 0, cellText.length);
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
// Ensure table fits in maxWidth (with 2-char left margin)
|
|
243
|
+
const tableWidth = colWidths.reduce((sum, w) => sum + w + 3, 1) + 2;
|
|
244
|
+
if (tableWidth > _maxWidth) {
|
|
245
|
+
const scale = (_maxWidth - 4) / (tableWidth - 2);
|
|
246
|
+
for (let i = 0; i < colWidths.length; i++) {
|
|
247
|
+
colWidths[i] = Math.max(3, Math.floor(colWidths[i] * scale));
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
// Build border strings
|
|
251
|
+
const topBorder = ' \u250C\u2500' + colWidths.map(w => '\u2500'.repeat(w)).join('\u2500\u252C\u2500') + '\u2500\u2510';
|
|
252
|
+
const headerSep = ' \u251C\u2500' + colWidths.map(w => '\u2500'.repeat(w)).join('\u2500\u253C\u2500') + '\u2500\u2524';
|
|
253
|
+
const bottomBorder = ' \u2514\u2500' + colWidths.map(w => '\u2500'.repeat(w)).join('\u2500\u2534\u2500') + '\u2500\u2518';
|
|
254
|
+
lines.push({ text: topBorder, styleKey: 'mdTableBorder' });
|
|
255
|
+
const headerCells = token.headers.map((cell, i) => {
|
|
256
|
+
const text = getInlineText(cell);
|
|
257
|
+
return text.padEnd(colWidths[i]);
|
|
258
|
+
});
|
|
259
|
+
lines.push({
|
|
260
|
+
text: ' \u2502 ' + headerCells.join(' \u2502 ') + ' \u2502',
|
|
261
|
+
styleKey: 'mdTableHeader',
|
|
262
|
+
});
|
|
263
|
+
lines.push({ text: headerSep, styleKey: 'mdTableBorder' });
|
|
264
|
+
for (const row of token.rows) {
|
|
265
|
+
const cells = row.map((cell, i) => {
|
|
266
|
+
const text = getInlineText(cell);
|
|
267
|
+
return text.padEnd(colWidths[i]);
|
|
268
|
+
});
|
|
269
|
+
lines.push({
|
|
270
|
+
text: ' \u2502 ' + cells.join(' \u2502 ') + ' \u2502',
|
|
271
|
+
styleKey: 'mdTableRow',
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
lines.push({ text: bottomBorder, styleKey: 'mdTableBorder' });
|
|
275
|
+
return lines;
|
|
276
|
+
}
|
|
277
|
+
function renderCodeBlock(token, _maxWidth) {
|
|
278
|
+
const lines = [{ text: '', styleKey: 'mdText' }];
|
|
279
|
+
const codeLines = token.content.split('\n');
|
|
280
|
+
for (const line of codeLines) {
|
|
281
|
+
lines.push({ text: ' ' + line, styleKey: 'mdCodeBlock' });
|
|
282
|
+
}
|
|
283
|
+
lines.push({ text: '', styleKey: 'mdText' });
|
|
284
|
+
return lines;
|
|
285
|
+
}
|
|
286
|
+
function renderBlockquote(token, maxWidth) {
|
|
287
|
+
const { text, segments } = renderInlineTokens(token.children);
|
|
288
|
+
const prefix = '│ ';
|
|
289
|
+
const wrappedLines = wrapWithSegments(text, segments, maxWidth, 'mdText', prefix);
|
|
290
|
+
// Add dim style for the │ character on each line
|
|
291
|
+
for (const line of wrappedLines) {
|
|
292
|
+
const barSegment = { start: 0, end: 1, styleKey: 'mdBlockquoteBar' };
|
|
293
|
+
if (line.segments) {
|
|
294
|
+
line.segments.unshift(barSegment);
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
line.segments = [barSegment];
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
return [
|
|
301
|
+
{ text: '', styleKey: 'mdText' },
|
|
302
|
+
...wrappedLines,
|
|
303
|
+
{ text: '', styleKey: 'mdText' },
|
|
304
|
+
];
|
|
305
|
+
}
|
|
306
|
+
function renderHorizontalRule(maxWidth) {
|
|
307
|
+
const width = Math.min(40, maxWidth);
|
|
308
|
+
return [
|
|
309
|
+
{ text: '', styleKey: 'mdText' },
|
|
310
|
+
{ text: '\u2500'.repeat(width), styleKey: 'mdHr' },
|
|
311
|
+
];
|
|
312
|
+
}
|
|
313
|
+
function renderBlock(token, maxWidth) {
|
|
314
|
+
switch (token.type) {
|
|
315
|
+
case 'paragraph':
|
|
316
|
+
return renderParagraph(token, maxWidth);
|
|
317
|
+
case 'heading':
|
|
318
|
+
return renderHeading(token, maxWidth);
|
|
319
|
+
case 'list':
|
|
320
|
+
return renderList(token, maxWidth);
|
|
321
|
+
case 'table':
|
|
322
|
+
return renderTable(token, maxWidth);
|
|
323
|
+
case 'codeblock':
|
|
324
|
+
return renderCodeBlock(token, maxWidth);
|
|
325
|
+
case 'blockquote':
|
|
326
|
+
return renderBlockquote(token, maxWidth);
|
|
327
|
+
case 'hr':
|
|
328
|
+
return renderHorizontalRule(maxWidth);
|
|
329
|
+
default:
|
|
330
|
+
return [];
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Render markdown tokens to styled lines
|
|
335
|
+
*/
|
|
336
|
+
export function renderTokens(tokens, maxWidth) {
|
|
337
|
+
const lines = [];
|
|
338
|
+
for (const token of tokens) {
|
|
339
|
+
lines.push(...renderBlock(token, maxWidth));
|
|
340
|
+
}
|
|
341
|
+
// Collapse consecutive blank lines into one
|
|
342
|
+
const result = [];
|
|
343
|
+
for (const line of lines) {
|
|
344
|
+
if (line.text === '' && result.length > 0 && result[result.length - 1].text === '') {
|
|
345
|
+
continue;
|
|
346
|
+
}
|
|
347
|
+
result.push(line);
|
|
348
|
+
}
|
|
349
|
+
return result;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Render markdown text to styled lines (convenience function)
|
|
353
|
+
*/
|
|
354
|
+
export function renderMarkdown(markdown, maxWidth) {
|
|
355
|
+
const tokens = parse(markdown);
|
|
356
|
+
return renderTokens(tokens, maxWidth);
|
|
357
|
+
}
|
|
358
|
+
//# sourceMappingURL=renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/markdown/renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown Token Types
|
|
3
|
+
*
|
|
4
|
+
* The parser produces a flat list of tokens that the renderer consumes.
|
|
5
|
+
* Block-level tokens (headers, lists, tables) contain inline tokens as children.
|
|
6
|
+
*/
|
|
7
|
+
export interface TextToken {
|
|
8
|
+
type: 'text';
|
|
9
|
+
content: string;
|
|
10
|
+
}
|
|
11
|
+
export interface BoldToken {
|
|
12
|
+
type: 'bold';
|
|
13
|
+
children: InlineToken[];
|
|
14
|
+
}
|
|
15
|
+
export interface ItalicToken {
|
|
16
|
+
type: 'italic';
|
|
17
|
+
children: InlineToken[];
|
|
18
|
+
}
|
|
19
|
+
export interface CodeToken {
|
|
20
|
+
type: 'code';
|
|
21
|
+
content: string;
|
|
22
|
+
}
|
|
23
|
+
export interface StrikethroughToken {
|
|
24
|
+
type: 'strikethrough';
|
|
25
|
+
children: InlineToken[];
|
|
26
|
+
}
|
|
27
|
+
export interface LinkToken {
|
|
28
|
+
type: 'link';
|
|
29
|
+
text: string;
|
|
30
|
+
url: string;
|
|
31
|
+
}
|
|
32
|
+
export type InlineToken = TextToken | BoldToken | ItalicToken | CodeToken | StrikethroughToken | LinkToken;
|
|
33
|
+
export interface ParagraphToken {
|
|
34
|
+
type: 'paragraph';
|
|
35
|
+
children: InlineToken[];
|
|
36
|
+
}
|
|
37
|
+
export interface HeadingToken {
|
|
38
|
+
type: 'heading';
|
|
39
|
+
level: 1 | 2 | 3 | 4 | 5 | 6;
|
|
40
|
+
children: InlineToken[];
|
|
41
|
+
}
|
|
42
|
+
export interface ListItem {
|
|
43
|
+
children: InlineToken[];
|
|
44
|
+
checked?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export interface ListToken {
|
|
47
|
+
type: 'list';
|
|
48
|
+
ordered: boolean;
|
|
49
|
+
items: ListItem[];
|
|
50
|
+
}
|
|
51
|
+
export interface TableToken {
|
|
52
|
+
type: 'table';
|
|
53
|
+
headers: InlineToken[][];
|
|
54
|
+
rows: InlineToken[][][];
|
|
55
|
+
}
|
|
56
|
+
export interface CodeBlockToken {
|
|
57
|
+
type: 'codeblock';
|
|
58
|
+
language: string;
|
|
59
|
+
content: string;
|
|
60
|
+
}
|
|
61
|
+
export interface BlockquoteToken {
|
|
62
|
+
type: 'blockquote';
|
|
63
|
+
children: InlineToken[];
|
|
64
|
+
}
|
|
65
|
+
export interface HrToken {
|
|
66
|
+
type: 'hr';
|
|
67
|
+
}
|
|
68
|
+
export type BlockToken = ParagraphToken | HeadingToken | ListToken | TableToken | CodeBlockToken | BlockquoteToken | HrToken;
|
|
69
|
+
export interface MarkdownConfig {
|
|
70
|
+
enableTables: boolean;
|
|
71
|
+
enableCodeBlocks: boolean;
|
|
72
|
+
enableBlockquotes: boolean;
|
|
73
|
+
}
|
|
74
|
+
export declare const defaultConfig: MarkdownConfig;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown Token Types
|
|
3
|
+
*
|
|
4
|
+
* The parser produces a flat list of tokens that the renderer consumes.
|
|
5
|
+
* Block-level tokens (headers, lists, tables) contain inline tokens as children.
|
|
6
|
+
*/
|
|
7
|
+
export const defaultConfig = {
|
|
8
|
+
enableTables: true,
|
|
9
|
+
enableCodeBlocks: true,
|
|
10
|
+
enableBlockquotes: true,
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/markdown/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsFH,MAAM,CAAC,MAAM,aAAa,GAAmB;IACzC,YAAY,EAAE,IAAI;IAClB,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,IAAI;CAC1B,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Protocol — Message handlers and client API
|
|
3
|
+
*
|
|
4
|
+
* Handles all incoming WebSocket messages (routing to action functions)
|
|
5
|
+
* and provides the outgoing client API (createTask, cancelTask, etc.).
|
|
6
|
+
*/
|
|
7
|
+
import type { WsMessage } from './connection.js';
|
|
8
|
+
export declare function init(): void;
|
|
9
|
+
export declare function createTask(prompt: string, files?: Array<{
|
|
10
|
+
name: string;
|
|
11
|
+
base64?: string;
|
|
12
|
+
mimeType?: string;
|
|
13
|
+
}> | null): Promise<WsMessage | null>;
|
|
14
|
+
export declare function continueTask(taskId: string, prompt: string, files?: Array<{
|
|
15
|
+
name: string;
|
|
16
|
+
base64?: string;
|
|
17
|
+
mimeType?: string;
|
|
18
|
+
}> | null): Promise<WsMessage | null>;
|
|
19
|
+
export declare function refreshTasks(): void;
|
|
20
|
+
export declare function cancelTask(taskId: string | null): Promise<WsMessage | null>;
|
|
21
|
+
export declare function respondToPrompt(response: string): Promise<WsMessage | null>;
|
|
22
|
+
export declare function subscribeTask(taskId: string): Promise<WsMessage | null>;
|
|
23
|
+
export declare function reconnect(): void;
|
|
24
|
+
export declare function ping(): Promise<{
|
|
25
|
+
success: boolean;
|
|
26
|
+
latency?: number;
|
|
27
|
+
status?: unknown;
|
|
28
|
+
error?: string;
|
|
29
|
+
}>;
|
|
30
|
+
export declare function healthCheck(): Promise<{
|
|
31
|
+
timestamp: string;
|
|
32
|
+
connection: Record<string, unknown>;
|
|
33
|
+
ping: unknown;
|
|
34
|
+
tasks: unknown;
|
|
35
|
+
errors: string[];
|
|
36
|
+
}>;
|
|
37
|
+
export declare function uploadFiles(files: Array<string | {
|
|
38
|
+
name: string;
|
|
39
|
+
base64: string;
|
|
40
|
+
mimeType?: string;
|
|
41
|
+
}>): Promise<Array<{
|
|
42
|
+
name: string;
|
|
43
|
+
path?: string;
|
|
44
|
+
}>>;
|
|
45
|
+
export declare function fetchWidgetUrl(widgetId: string): Promise<string>;
|
|
46
|
+
export declare function fetchWidgets(): Promise<void>;
|