@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,310 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown Parser
|
|
3
|
+
*
|
|
4
|
+
* Converts markdown text into a token stream that can be rendered.
|
|
5
|
+
* The parser is split into two phases:
|
|
6
|
+
* 1. Block parsing - identifies structural elements (headers, lists, etc.)
|
|
7
|
+
* 2. Inline parsing - processes text formatting within blocks
|
|
8
|
+
*/
|
|
9
|
+
import { defaultConfig } from './types.js';
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Inline Parsing
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Parse inline markdown elements (bold, italic, code, links)
|
|
15
|
+
* Uses a single-pass approach with regex matching
|
|
16
|
+
*/
|
|
17
|
+
export function parseInline(text) {
|
|
18
|
+
const tokens = [];
|
|
19
|
+
let remaining = text;
|
|
20
|
+
// Pattern priority: code > bold > italic > link
|
|
21
|
+
// Code first because ** inside ` should not be parsed as bold
|
|
22
|
+
const patterns = [
|
|
23
|
+
// Inline code: `code`
|
|
24
|
+
{
|
|
25
|
+
regex: /^`([^`]+)`/,
|
|
26
|
+
handler: (m) => ({ type: 'code', content: m[1] }),
|
|
27
|
+
},
|
|
28
|
+
// Bold: **text** or __text__
|
|
29
|
+
{
|
|
30
|
+
regex: /^(\*\*|__)(.+?)\1/,
|
|
31
|
+
handler: (m) => ({ type: 'bold', children: parseInline(m[2]) }),
|
|
32
|
+
},
|
|
33
|
+
// Strikethrough: ~~text~~
|
|
34
|
+
{
|
|
35
|
+
regex: /^~~(.+?)~~/,
|
|
36
|
+
handler: (m) => ({ type: 'strikethrough', children: parseInline(m[1]) }),
|
|
37
|
+
},
|
|
38
|
+
// Italic: *text* or _text_ (but not inside words for _)
|
|
39
|
+
{
|
|
40
|
+
regex: /^(\*|_)(.+?)\1/,
|
|
41
|
+
handler: (m) => ({ type: 'italic', children: parseInline(m[2]) }),
|
|
42
|
+
},
|
|
43
|
+
// Link: [text](url)
|
|
44
|
+
{
|
|
45
|
+
regex: /^\[([^\]]+)\]\(([^)]+)\)/,
|
|
46
|
+
handler: (m) => ({ type: 'link', text: m[1], url: m[2] }),
|
|
47
|
+
},
|
|
48
|
+
];
|
|
49
|
+
while (remaining.length > 0) {
|
|
50
|
+
let matched = false;
|
|
51
|
+
for (const { regex, handler } of patterns) {
|
|
52
|
+
const match = remaining.match(regex);
|
|
53
|
+
if (match) {
|
|
54
|
+
tokens.push(handler(match));
|
|
55
|
+
remaining = remaining.slice(match[0].length);
|
|
56
|
+
matched = true;
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (!matched) {
|
|
61
|
+
// No pattern matched - consume one character as text
|
|
62
|
+
// But try to batch consecutive plain text characters
|
|
63
|
+
let plainEnd = 1;
|
|
64
|
+
while (plainEnd < remaining.length) {
|
|
65
|
+
const char = remaining[plainEnd];
|
|
66
|
+
// Stop if we hit a potential pattern start
|
|
67
|
+
if ('*_`[~'.includes(char))
|
|
68
|
+
break;
|
|
69
|
+
plainEnd++;
|
|
70
|
+
}
|
|
71
|
+
const plainText = remaining.slice(0, plainEnd);
|
|
72
|
+
// Merge with previous text token if possible
|
|
73
|
+
const lastToken = tokens[tokens.length - 1];
|
|
74
|
+
if (lastToken?.type === 'text') {
|
|
75
|
+
lastToken.content += plainText;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
tokens.push({ type: 'text', content: plainText });
|
|
79
|
+
}
|
|
80
|
+
remaining = remaining.slice(plainEnd);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return tokens;
|
|
84
|
+
}
|
|
85
|
+
// ============================================================================
|
|
86
|
+
// Block Parsing
|
|
87
|
+
// ============================================================================
|
|
88
|
+
/**
|
|
89
|
+
* Check if a line is a table separator (|---|---|)
|
|
90
|
+
*/
|
|
91
|
+
function isTableSeparator(line) {
|
|
92
|
+
return /^\|?[\s-:|]+\|[\s-:|]+\|?$/.test(line);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Parse a table row into cells
|
|
96
|
+
*/
|
|
97
|
+
function parseTableRow(line) {
|
|
98
|
+
return line
|
|
99
|
+
.replace(/^\||\|$/g, '') // Remove leading/trailing pipes
|
|
100
|
+
.split('|')
|
|
101
|
+
.map((cell) => cell.trim());
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Parse a table block (header + separator + rows)
|
|
105
|
+
*/
|
|
106
|
+
function parseTable(lines) {
|
|
107
|
+
if (lines.length < 2)
|
|
108
|
+
return null;
|
|
109
|
+
const headerLine = lines[0];
|
|
110
|
+
const separatorLine = lines[1];
|
|
111
|
+
if (!isTableSeparator(separatorLine))
|
|
112
|
+
return null;
|
|
113
|
+
const headers = parseTableRow(headerLine).map((cell) => parseInline(cell));
|
|
114
|
+
const rows = lines.slice(2).map((line) => parseTableRow(line).map((cell) => parseInline(cell)));
|
|
115
|
+
return { type: 'table', headers, rows };
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Parse a list block (ordered or unordered)
|
|
119
|
+
*/
|
|
120
|
+
function parseList(lines) {
|
|
121
|
+
const firstLine = lines[0];
|
|
122
|
+
const ordered = /^\d+\./.test(firstLine);
|
|
123
|
+
const items = lines.map((line) => {
|
|
124
|
+
// Remove list marker
|
|
125
|
+
let content = line.replace(/^(\d+\.|[-*+])\s*/, '');
|
|
126
|
+
// Detect task list markers: [x] or [ ]
|
|
127
|
+
let checked;
|
|
128
|
+
const taskMatch = content.match(/^\[([ xX])\]\s*/);
|
|
129
|
+
if (taskMatch) {
|
|
130
|
+
checked = taskMatch[1].toLowerCase() === 'x';
|
|
131
|
+
content = content.slice(taskMatch[0].length);
|
|
132
|
+
}
|
|
133
|
+
return { children: parseInline(content), checked };
|
|
134
|
+
});
|
|
135
|
+
return { type: 'list', ordered, items };
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Parse a fenced code block
|
|
139
|
+
*/
|
|
140
|
+
function parseCodeBlock(lines) {
|
|
141
|
+
const firstLine = lines[0];
|
|
142
|
+
const language = firstLine.replace(/^```/, '').trim();
|
|
143
|
+
const content = lines.slice(1, -1).join('\n'); // Exclude fence lines
|
|
144
|
+
return { type: 'codeblock', language, content };
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Main block parser - splits input into block-level tokens
|
|
148
|
+
*/
|
|
149
|
+
export function parseBlocks(input, config = {}) {
|
|
150
|
+
const cfg = { ...defaultConfig, ...config };
|
|
151
|
+
const tokens = [];
|
|
152
|
+
const lines = input.split('\n');
|
|
153
|
+
let i = 0;
|
|
154
|
+
while (i < lines.length) {
|
|
155
|
+
const line = lines[i];
|
|
156
|
+
const trimmed = line.trim();
|
|
157
|
+
// Skip empty lines
|
|
158
|
+
if (trimmed === '') {
|
|
159
|
+
i++;
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
// Fenced code block: ```
|
|
163
|
+
if (cfg.enableCodeBlocks && trimmed.startsWith('```')) {
|
|
164
|
+
const blockLines = [line];
|
|
165
|
+
i++;
|
|
166
|
+
while (i < lines.length && !lines[i].trim().startsWith('```')) {
|
|
167
|
+
blockLines.push(lines[i]);
|
|
168
|
+
i++;
|
|
169
|
+
}
|
|
170
|
+
if (i < lines.length) {
|
|
171
|
+
blockLines.push(lines[i]); // Include closing fence
|
|
172
|
+
i++;
|
|
173
|
+
}
|
|
174
|
+
tokens.push(parseCodeBlock(blockLines));
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
// Heading: # text
|
|
178
|
+
const headingMatch = trimmed.match(/^(#{1,6})\s+(.+)$/);
|
|
179
|
+
if (headingMatch) {
|
|
180
|
+
const level = headingMatch[1].length;
|
|
181
|
+
const content = headingMatch[2];
|
|
182
|
+
tokens.push({ type: 'heading', level, children: parseInline(content) });
|
|
183
|
+
i++;
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
// Horizontal rule: ---, ***, ___
|
|
187
|
+
if (/^[-*_]{3,}$/.test(trimmed)) {
|
|
188
|
+
tokens.push({ type: 'hr' });
|
|
189
|
+
i++;
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
// Blockquote: > text
|
|
193
|
+
if (cfg.enableBlockquotes && trimmed.startsWith('>')) {
|
|
194
|
+
const quoteLines = [];
|
|
195
|
+
while (i < lines.length && lines[i].trim().startsWith('>')) {
|
|
196
|
+
quoteLines.push(lines[i].trim().replace(/^>\s?/, ''));
|
|
197
|
+
i++;
|
|
198
|
+
}
|
|
199
|
+
const content = quoteLines.join(' ');
|
|
200
|
+
tokens.push({ type: 'blockquote', children: parseInline(content) });
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
// Table: | col | col |
|
|
204
|
+
if (cfg.enableTables && trimmed.includes('|')) {
|
|
205
|
+
const tableLines = [line];
|
|
206
|
+
i++;
|
|
207
|
+
while (i < lines.length && lines[i].includes('|')) {
|
|
208
|
+
tableLines.push(lines[i]);
|
|
209
|
+
i++;
|
|
210
|
+
}
|
|
211
|
+
const table = parseTable(tableLines);
|
|
212
|
+
if (table) {
|
|
213
|
+
tokens.push(table);
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
// Not a valid table - fall through to paragraph
|
|
217
|
+
i -= tableLines.length - 1;
|
|
218
|
+
}
|
|
219
|
+
// Unordered list: - item, * item, + item
|
|
220
|
+
if (/^[-*+]\s/.test(trimmed)) {
|
|
221
|
+
const listLines = [line];
|
|
222
|
+
i++;
|
|
223
|
+
while (i < lines.length) {
|
|
224
|
+
const currentLine = lines[i].trim();
|
|
225
|
+
// Direct match - add to list
|
|
226
|
+
if (/^[-*+]\s/.test(currentLine)) {
|
|
227
|
+
listLines.push(lines[i]);
|
|
228
|
+
i++;
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
// Blank line - look ahead for continuation
|
|
232
|
+
if (currentLine === '') {
|
|
233
|
+
let lookahead = i + 1;
|
|
234
|
+
// Skip up to 1 more blank line (allow max 2 blank lines)
|
|
235
|
+
while (lookahead < lines.length &&
|
|
236
|
+
lookahead - i <= 2 &&
|
|
237
|
+
lines[lookahead].trim() === '') {
|
|
238
|
+
lookahead++;
|
|
239
|
+
}
|
|
240
|
+
// Check if next non-blank line is a list item
|
|
241
|
+
if (lookahead < lines.length && /^[-*+]\s/.test(lines[lookahead].trim())) {
|
|
242
|
+
i = lookahead; // Skip blank lines
|
|
243
|
+
continue;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// Not a continuation - exit loop
|
|
247
|
+
break;
|
|
248
|
+
}
|
|
249
|
+
tokens.push(parseList(listLines));
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
// Ordered list: 1. item
|
|
253
|
+
if (/^\d+\.\s/.test(trimmed)) {
|
|
254
|
+
const listLines = [line];
|
|
255
|
+
i++;
|
|
256
|
+
while (i < lines.length) {
|
|
257
|
+
const currentLine = lines[i].trim();
|
|
258
|
+
// Direct match - add to list
|
|
259
|
+
if (/^\d+\.\s/.test(currentLine)) {
|
|
260
|
+
listLines.push(lines[i]);
|
|
261
|
+
i++;
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
// Blank line - look ahead for continuation
|
|
265
|
+
if (currentLine === '') {
|
|
266
|
+
let lookahead = i + 1;
|
|
267
|
+
// Skip up to 1 more blank line (allow max 2 blank lines)
|
|
268
|
+
while (lookahead < lines.length &&
|
|
269
|
+
lookahead - i <= 2 &&
|
|
270
|
+
lines[lookahead].trim() === '') {
|
|
271
|
+
lookahead++;
|
|
272
|
+
}
|
|
273
|
+
// Check if next non-blank line is a list item
|
|
274
|
+
if (lookahead < lines.length && /^\d+\.\s/.test(lines[lookahead].trim())) {
|
|
275
|
+
i = lookahead; // Skip blank lines
|
|
276
|
+
continue;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
// Not a continuation - exit loop
|
|
280
|
+
break;
|
|
281
|
+
}
|
|
282
|
+
tokens.push(parseList(listLines));
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
// Default: paragraph - collect consecutive non-empty lines
|
|
286
|
+
const paragraphLines = [trimmed];
|
|
287
|
+
i++;
|
|
288
|
+
while (i < lines.length &&
|
|
289
|
+
lines[i].trim() !== '' &&
|
|
290
|
+
!lines[i].trim().startsWith('#') &&
|
|
291
|
+
!lines[i].trim().startsWith('```') &&
|
|
292
|
+
!lines[i].trim().startsWith('>') &&
|
|
293
|
+
!/^[-*+]\s/.test(lines[i].trim()) &&
|
|
294
|
+
!/^\d+\.\s/.test(lines[i].trim()) &&
|
|
295
|
+
!/^[-*_]{3,}$/.test(lines[i].trim())) {
|
|
296
|
+
paragraphLines.push(lines[i].trim());
|
|
297
|
+
i++;
|
|
298
|
+
}
|
|
299
|
+
const content = paragraphLines.join(' ');
|
|
300
|
+
tokens.push({ type: 'paragraph', children: parseInline(content) });
|
|
301
|
+
}
|
|
302
|
+
return tokens;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Main parse function - converts markdown string to tokens
|
|
306
|
+
*/
|
|
307
|
+
export function parse(input, config) {
|
|
308
|
+
return parseBlocks(input, config);
|
|
309
|
+
}
|
|
310
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/markdown/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
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 type { BlockToken } from './types.js';
|
|
11
|
+
import type { StyledLine, LineSegment } from '../types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Wrap text to fit within maxWidth, preserving segments
|
|
14
|
+
*/
|
|
15
|
+
export declare function wrapWithSegments(text: string, segments: LineSegment[], maxWidth: number, defaultStyle: string, prefix?: string, continuationPrefix?: string | null): StyledLine[];
|
|
16
|
+
/**
|
|
17
|
+
* Render markdown tokens to styled lines
|
|
18
|
+
*/
|
|
19
|
+
export declare function renderTokens(tokens: BlockToken[], maxWidth: number): StyledLine[];
|
|
20
|
+
/**
|
|
21
|
+
* Render markdown text to styled lines (convenience function)
|
|
22
|
+
*/
|
|
23
|
+
export declare function renderMarkdown(markdown: string, maxWidth: number): StyledLine[];
|