@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,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>;