@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.
Files changed (106) hide show
  1. package/dist/actions/messages.d.ts +41 -0
  2. package/dist/actions/messages.js +77 -0
  3. package/dist/actions/messages.js.map +1 -0
  4. package/dist/actions/prompts.d.ts +6 -0
  5. package/dist/actions/prompts.js +18 -0
  6. package/dist/actions/prompts.js.map +1 -0
  7. package/dist/actions/tasks.d.ts +13 -0
  8. package/dist/actions/tasks.js +66 -0
  9. package/dist/actions/tasks.js.map +1 -0
  10. package/dist/auth.d.ts +12 -0
  11. package/dist/auth.js +131 -0
  12. package/dist/auth.js.map +1 -0
  13. package/dist/clipboard.d.ts +21 -0
  14. package/dist/clipboard.js +126 -0
  15. package/dist/clipboard.js.map +1 -0
  16. package/dist/commands.d.ts +15 -0
  17. package/dist/commands.js +23 -0
  18. package/dist/commands.js.map +1 -0
  19. package/dist/config.d.ts +12 -0
  20. package/dist/config.js +63 -0
  21. package/dist/config.js.map +1 -0
  22. package/dist/connection.d.ts +43 -0
  23. package/dist/connection.js +231 -0
  24. package/dist/connection.js.map +1 -0
  25. package/dist/constants.d.ts +2 -0
  26. package/dist/constants.js +3 -0
  27. package/dist/constants.js.map +1 -0
  28. package/dist/debug.d.ts +96 -0
  29. package/dist/debug.js +144 -0
  30. package/dist/debug.js.map +1 -0
  31. package/dist/index.d.ts +10 -0
  32. package/dist/index.js +390 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/markdown/index.d.ts +11 -0
  35. package/dist/markdown/index.js +12 -0
  36. package/dist/markdown/index.js.map +1 -0
  37. package/dist/markdown/parser.d.ts +22 -0
  38. package/dist/markdown/parser.js +310 -0
  39. package/dist/markdown/parser.js.map +1 -0
  40. package/dist/markdown/renderer.d.ts +23 -0
  41. package/dist/markdown/renderer.js +358 -0
  42. package/dist/markdown/renderer.js.map +1 -0
  43. package/dist/markdown/types.d.ts +74 -0
  44. package/dist/markdown/types.js +12 -0
  45. package/dist/markdown/types.js.map +1 -0
  46. package/dist/protocol.d.ts +46 -0
  47. package/dist/protocol.js +608 -0
  48. package/dist/protocol.js.map +1 -0
  49. package/dist/renderer.d.ts +46 -0
  50. package/dist/renderer.js +144 -0
  51. package/dist/renderer.js.map +1 -0
  52. package/dist/screen.d.ts +34 -0
  53. package/dist/screen.js +167 -0
  54. package/dist/screen.js.map +1 -0
  55. package/dist/state.d.ts +6 -0
  56. package/dist/state.js +77 -0
  57. package/dist/state.js.map +1 -0
  58. package/dist/styles.d.ts +16 -0
  59. package/dist/styles.js +68 -0
  60. package/dist/styles.js.map +1 -0
  61. package/dist/terminal.d.ts +46 -0
  62. package/dist/terminal.js +67 -0
  63. package/dist/terminal.js.map +1 -0
  64. package/dist/tools/executor.d.ts +8 -0
  65. package/dist/tools/executor.js +20 -0
  66. package/dist/tools/executor.js.map +1 -0
  67. package/dist/tools/index.d.ts +5 -0
  68. package/dist/tools/index.js +6 -0
  69. package/dist/tools/index.js.map +1 -0
  70. package/dist/tools/registry.d.ts +32 -0
  71. package/dist/tools/registry.js +344 -0
  72. package/dist/tools/registry.js.map +1 -0
  73. package/dist/types.d.ts +200 -0
  74. package/dist/types.js +5 -0
  75. package/dist/types.js.map +1 -0
  76. package/dist/ui/backgroundTasks.d.ts +7 -0
  77. package/dist/ui/backgroundTasks.js +192 -0
  78. package/dist/ui/backgroundTasks.js.map +1 -0
  79. package/dist/ui/filePicker.d.ts +9 -0
  80. package/dist/ui/filePicker.js +315 -0
  81. package/dist/ui/filePicker.js.map +1 -0
  82. package/dist/ui/index.d.ts +33 -0
  83. package/dist/ui/index.js +289 -0
  84. package/dist/ui/index.js.map +1 -0
  85. package/dist/ui/input.d.ts +7 -0
  86. package/dist/ui/input.js +320 -0
  87. package/dist/ui/input.js.map +1 -0
  88. package/dist/ui/messages.d.ts +9 -0
  89. package/dist/ui/messages.js +329 -0
  90. package/dist/ui/messages.js.map +1 -0
  91. package/dist/ui/primitives.d.ts +35 -0
  92. package/dist/ui/primitives.js +94 -0
  93. package/dist/ui/primitives.js.map +1 -0
  94. package/dist/ui/promptInput.d.ts +8 -0
  95. package/dist/ui/promptInput.js +198 -0
  96. package/dist/ui/promptInput.js.map +1 -0
  97. package/dist/ui/promptPicker.d.ts +7 -0
  98. package/dist/ui/promptPicker.js +214 -0
  99. package/dist/ui/promptPicker.js.map +1 -0
  100. package/dist/ui/sessions.d.ts +6 -0
  101. package/dist/ui/sessions.js +214 -0
  102. package/dist/ui/sessions.js.map +1 -0
  103. package/dist/ui/welcome.d.ts +6 -0
  104. package/dist/ui/welcome.js +114 -0
  105. package/dist/ui/welcome.js.map +1 -0
  106. 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[];