@relace-ai/jacq 0.1.2-beta.4 → 0.1.2-beta.6
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 +16 -16
- package/dist/actions/messages.js +47 -29
- package/dist/actions/messages.js.map +1 -1
- package/dist/actions/tasks.d.ts +1 -2
- package/dist/actions/tasks.js +8 -8
- package/dist/actions/tasks.js.map +1 -1
- package/dist/approvalGate.d.ts +42 -0
- package/dist/approvalGate.js +140 -0
- package/dist/approvalGate.js.map +1 -0
- package/dist/approvals.d.ts +21 -0
- package/dist/approvals.js +79 -0
- package/dist/approvals.js.map +1 -0
- package/dist/auth.d.ts +1 -0
- package/dist/auth.js +3 -0
- package/dist/auth.js.map +1 -1
- package/dist/charWidth.d.ts +7 -0
- package/dist/charWidth.js +24 -19
- package/dist/charWidth.js.map +1 -1
- package/dist/clipboard.d.ts +0 -5
- package/dist/clipboard.js +0 -5
- package/dist/clipboard.js.map +1 -1
- package/dist/commands.js +3 -2
- package/dist/commands.js.map +1 -1
- package/dist/config.d.ts +2 -1
- package/dist/config.js +17 -10
- package/dist/config.js.map +1 -1
- package/dist/connection.d.ts +2 -0
- package/dist/connection.js +199 -6
- package/dist/connection.js.map +1 -1
- package/dist/index.js +196 -34
- package/dist/index.js.map +1 -1
- package/dist/markdown/parser.js +248 -60
- package/dist/markdown/parser.js.map +1 -1
- package/dist/markdown/renderer.d.ts +3 -3
- package/dist/markdown/renderer.js +254 -108
- package/dist/markdown/renderer.js.map +1 -1
- package/dist/markdown/types.d.ts +4 -1
- package/dist/markdown/types.js.map +1 -1
- package/dist/protocol.d.ts +0 -2
- package/dist/protocol.js +137 -98
- package/dist/protocol.js.map +1 -1
- package/dist/renderer.js +4 -0
- package/dist/renderer.js.map +1 -1
- package/dist/startupAnimation.d.ts +4 -0
- package/dist/startupAnimation.js +326 -0
- package/dist/startupAnimation.js.map +1 -0
- package/dist/state.js +23 -5
- package/dist/state.js.map +1 -1
- package/dist/styles.js +4 -1
- package/dist/styles.js.map +1 -1
- package/dist/terminal.d.ts +9 -0
- package/dist/terminal.js +15 -0
- package/dist/terminal.js.map +1 -1
- package/dist/tools/registry.js +138 -13
- package/dist/tools/registry.js.map +1 -1
- package/dist/types.d.ts +57 -21
- package/dist/types.js +3 -1
- package/dist/types.js.map +1 -1
- package/dist/ui/config.d.ts +6 -0
- package/dist/ui/config.js +53 -0
- package/dist/ui/config.js.map +1 -0
- package/dist/ui/diffViewer.d.ts +9 -0
- package/dist/ui/diffViewer.js +320 -0
- package/dist/ui/diffViewer.js.map +1 -0
- package/dist/ui/index.js +40 -21
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/input.d.ts +1 -1
- package/dist/ui/input.js +40 -15
- package/dist/ui/input.js.map +1 -1
- package/dist/ui/localCommands.d.ts +8 -0
- package/dist/ui/localCommands.js +267 -0
- package/dist/ui/localCommands.js.map +1 -0
- package/dist/ui/messages.js +195 -93
- package/dist/ui/messages.js.map +1 -1
- package/dist/ui/primitives.js +2 -1
- package/dist/ui/primitives.js.map +1 -1
- package/dist/ui/promptInput.js +42 -8
- package/dist/ui/promptInput.js.map +1 -1
- package/dist/ui/promptPicker.js +3 -4
- package/dist/ui/promptPicker.js.map +1 -1
- package/dist/ui/resumeTask.d.ts +6 -0
- package/dist/ui/resumeTask.js +136 -0
- package/dist/ui/resumeTask.js.map +1 -0
- package/dist/ui/sessions.js +2 -2
- package/dist/ui/sessions.js.map +1 -1
- package/dist/ui/welcome.js +22 -35
- package/dist/ui/welcome.js.map +1 -1
- package/dist/utils/resolvePath.d.ts +10 -0
- package/dist/utils/resolvePath.js +24 -0
- package/dist/utils/resolvePath.js.map +1 -0
- package/package.json +7 -4
- package/dist/ui/backgroundTasks.d.ts +0 -7
- package/dist/ui/backgroundTasks.js +0 -192
- package/dist/ui/backgroundTasks.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvePath.js","sourceRoot":"","sources":["../../src/utils/resolvePath.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB,EAAE,GAAW;IACtD,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,GAAG;QAAE,OAAO,GAAG,CAAC;IAEhD,IAAI,QAAQ,GAAG,SAAS,CAAC;IACzB,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QACnB,QAAQ,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;SAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC5F,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@relace-ai/jacq",
|
|
3
|
-
"version": "0.1.2-beta.
|
|
3
|
+
"version": "0.1.2-beta.6",
|
|
4
4
|
"description": "TUI coding agent by Relace",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -11,21 +11,24 @@
|
|
|
11
11
|
"dist"
|
|
12
12
|
],
|
|
13
13
|
"engines": {
|
|
14
|
-
"node": ">=
|
|
14
|
+
"node": ">=20.0.0"
|
|
15
15
|
},
|
|
16
16
|
"scripts": {
|
|
17
17
|
"build": "tsc",
|
|
18
18
|
"dev": "tsc && node dist/index.js",
|
|
19
|
+
"dev:local": "JACQ_CONFIG_FILE=../dev/config.local.json npm run dev",
|
|
19
20
|
"watch": "tsc --watch",
|
|
20
21
|
"start": "node dist/index.js"
|
|
21
22
|
},
|
|
22
23
|
"dependencies": {
|
|
24
|
+
"@pierre/diffs": "^1.0.11",
|
|
23
25
|
"glob": "^13.0.1",
|
|
26
|
+
"string-width": "^8.1.1",
|
|
24
27
|
"ws": "^8.18.0"
|
|
25
28
|
},
|
|
26
29
|
"devDependencies": {
|
|
27
|
-
"typescript": "^5.7.0",
|
|
28
30
|
"@types/node": "^22.0.0",
|
|
29
|
-
"@types/ws": "^8.5.0"
|
|
31
|
+
"@types/ws": "^8.5.0",
|
|
32
|
+
"typescript": "^5.7.0"
|
|
30
33
|
}
|
|
31
34
|
}
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Widgets Component — full-screen draw() API
|
|
3
|
-
* Shows deployed interactive widgets and allows opening them in the browser
|
|
4
|
-
*/
|
|
5
|
-
import { drawText, drawHLine } from './primitives.js';
|
|
6
|
-
import { markDirty } from '../state.js';
|
|
7
|
-
import { connection } from '../connection.js';
|
|
8
|
-
import { fetchWidgets, fetchWidgetUrl } from '../protocol.js';
|
|
9
|
-
import { exec } from 'child_process';
|
|
10
|
-
const MIN_HEIGHT = 10;
|
|
11
|
-
const WIDGETS_PER_PAGE = 9;
|
|
12
|
-
const backgroundTasks = {
|
|
13
|
-
height(state) {
|
|
14
|
-
const widgets = state.widgets || [];
|
|
15
|
-
const totalPages = Math.ceil(widgets.length / WIDGETS_PER_PAGE) || 1;
|
|
16
|
-
const widgetRows = Math.min(widgets.length, WIDGETS_PER_PAGE);
|
|
17
|
-
const paginationRow = totalPages > 1 ? 2 : 1;
|
|
18
|
-
const contentHeight = 5 + widgetRows + paginationRow;
|
|
19
|
-
return Math.max(MIN_HEIGHT, contentHeight);
|
|
20
|
-
},
|
|
21
|
-
draw(screen, y, state, layout, styles) {
|
|
22
|
-
const width = layout.width;
|
|
23
|
-
const widgets = state.widgets || [];
|
|
24
|
-
const componentHeight = this.height(state);
|
|
25
|
-
const totalPages = Math.ceil(widgets.length / WIDGETS_PER_PAGE) || 1;
|
|
26
|
-
const currentPage = state.widgetsPage || 0;
|
|
27
|
-
const idx = state.widgetsIndex || 0;
|
|
28
|
-
// Top separator
|
|
29
|
-
drawHLine(screen, 0, y, width, styles.border);
|
|
30
|
-
// Title row
|
|
31
|
-
if (widgets.length > 0) {
|
|
32
|
-
const summary = `${widgets.length} widget${widgets.length === 1 ? '' : 's'}`;
|
|
33
|
-
drawText(screen, 2, y + 1, 'Widgets', styles.title);
|
|
34
|
-
drawText(screen, width - summary.length - 2, y + 1, summary, styles.dim);
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
drawText(screen, 2, y + 1, 'Widgets', styles.title);
|
|
38
|
-
}
|
|
39
|
-
// Content
|
|
40
|
-
if (!state.widgetsLoaded) {
|
|
41
|
-
drawText(screen, 4, y + 3, 'Loading...', styles.dim);
|
|
42
|
-
}
|
|
43
|
-
else if (widgets.length === 0) {
|
|
44
|
-
drawText(screen, 4, y + 3, 'No widgets yet', styles.dim);
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
const pageStart = currentPage * WIDGETS_PER_PAGE;
|
|
48
|
-
const pageEnd = Math.min(pageStart + WIDGETS_PER_PAGE, widgets.length);
|
|
49
|
-
const pageWidgets = widgets.slice(pageStart, pageEnd);
|
|
50
|
-
for (let i = 0; i < pageWidgets.length; i++) {
|
|
51
|
-
const widget = pageWidgets[i];
|
|
52
|
-
const displayIndex = i + 1;
|
|
53
|
-
const isSelected = idx === displayIndex;
|
|
54
|
-
const row = y + 3 + i;
|
|
55
|
-
const prefix = isSelected ? ' > ' : ' ';
|
|
56
|
-
drawText(screen, 0, row, prefix, styles.value);
|
|
57
|
-
drawText(screen, 4, row, `${displayIndex}.`, styles.dim);
|
|
58
|
-
drawText(screen, 7, row, widget.title || 'Untitled', isSelected ? styles.title : styles.value);
|
|
59
|
-
}
|
|
60
|
-
// Pagination
|
|
61
|
-
if (totalPages > 1) {
|
|
62
|
-
const paginationY = y + 3 + pageWidgets.length + 1;
|
|
63
|
-
drawText(screen, 2, paginationY, `\u2190 Page ${currentPage + 1}/${totalPages} \u2192`, styles.dim);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
// Bottom separator
|
|
67
|
-
const bottomY = y + componentHeight - 2;
|
|
68
|
-
drawHLine(screen, 0, bottomY, width, styles.border);
|
|
69
|
-
// Hints
|
|
70
|
-
const hy = bottomY + 1;
|
|
71
|
-
let hx = 2;
|
|
72
|
-
const gap = ' ';
|
|
73
|
-
if (totalPages > 1) {
|
|
74
|
-
drawText(screen, hx, hy, '\u2191\u2193', styles.value);
|
|
75
|
-
hx += 2;
|
|
76
|
-
drawText(screen, hx, hy, ' navigate', styles.hint);
|
|
77
|
-
hx += 9 + gap.length;
|
|
78
|
-
drawText(screen, hx, hy, '\u2190\u2192', styles.value);
|
|
79
|
-
hx += 2;
|
|
80
|
-
drawText(screen, hx, hy, ' page', styles.hint);
|
|
81
|
-
hx += 5 + gap.length;
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
drawText(screen, hx, hy, '\u2191\u2193', styles.value);
|
|
85
|
-
hx += 2;
|
|
86
|
-
drawText(screen, hx, hy, ' navigate', styles.hint);
|
|
87
|
-
hx += 9 + gap.length;
|
|
88
|
-
}
|
|
89
|
-
drawText(screen, hx, hy, 'Enter', styles.value);
|
|
90
|
-
hx += 5;
|
|
91
|
-
drawText(screen, hx, hy, ' open', styles.hint);
|
|
92
|
-
hx += 5 + gap.length;
|
|
93
|
-
drawText(screen, hx, hy, '#0-9', styles.value);
|
|
94
|
-
hx += 4;
|
|
95
|
-
drawText(screen, hx, hy, ' quick', styles.hint);
|
|
96
|
-
hx += 6 + gap.length;
|
|
97
|
-
drawText(screen, hx, hy, 'Bksp', styles.value);
|
|
98
|
-
hx += 4;
|
|
99
|
-
drawText(screen, hx, hy, ' delete', styles.hint);
|
|
100
|
-
hx += 7 + gap.length;
|
|
101
|
-
drawText(screen, hx, hy, '^W/Esc', styles.value);
|
|
102
|
-
hx += 6;
|
|
103
|
-
drawText(screen, hx, hy, ' close', styles.hint);
|
|
104
|
-
},
|
|
105
|
-
handleKey(str, key, state) {
|
|
106
|
-
const widgets = state.widgets || [];
|
|
107
|
-
const totalPages = Math.ceil(widgets.length / WIDGETS_PER_PAGE) || 1;
|
|
108
|
-
const currentPage = state.widgetsPage || 0;
|
|
109
|
-
const pageStart = currentPage * WIDGETS_PER_PAGE;
|
|
110
|
-
const pageEnd = Math.min(pageStart + WIDGETS_PER_PAGE, widgets.length);
|
|
111
|
-
const pageWidgets = widgets.slice(pageStart, pageEnd);
|
|
112
|
-
const idx = state.widgetsIndex || 0;
|
|
113
|
-
const maxIndex = pageWidgets.length;
|
|
114
|
-
if (key.name === 'escape') {
|
|
115
|
-
state.overlay = null;
|
|
116
|
-
markDirty();
|
|
117
|
-
return { handled: true };
|
|
118
|
-
}
|
|
119
|
-
if (key.name === 'left' && totalPages > 1) {
|
|
120
|
-
state.widgetsPage = currentPage > 0 ? currentPage - 1 : totalPages - 1;
|
|
121
|
-
state.widgetsIndex = 1;
|
|
122
|
-
markDirty();
|
|
123
|
-
return { handled: true };
|
|
124
|
-
}
|
|
125
|
-
if (key.name === 'right' && totalPages > 1) {
|
|
126
|
-
state.widgetsPage = currentPage < totalPages - 1 ? currentPage + 1 : 0;
|
|
127
|
-
state.widgetsIndex = 1;
|
|
128
|
-
markDirty();
|
|
129
|
-
return { handled: true };
|
|
130
|
-
}
|
|
131
|
-
if (key.name === 'up') {
|
|
132
|
-
state.widgetsIndex = idx > 1 ? idx - 1 : maxIndex;
|
|
133
|
-
markDirty();
|
|
134
|
-
return { handled: true };
|
|
135
|
-
}
|
|
136
|
-
if (key.name === 'down') {
|
|
137
|
-
state.widgetsIndex = idx < maxIndex ? idx + 1 : 1;
|
|
138
|
-
markDirty();
|
|
139
|
-
return { handled: true };
|
|
140
|
-
}
|
|
141
|
-
if (key.name === 'return' && idx >= 1 && idx <= pageWidgets.length) {
|
|
142
|
-
const widget = pageWidgets[idx - 1];
|
|
143
|
-
if (widget) {
|
|
144
|
-
openWidgetInBrowser(widget.id);
|
|
145
|
-
}
|
|
146
|
-
return { handled: true };
|
|
147
|
-
}
|
|
148
|
-
if (key.name === 'backspace' && idx >= 1 && idx <= pageWidgets.length) {
|
|
149
|
-
const widget = pageWidgets[idx - 1];
|
|
150
|
-
if (widget) {
|
|
151
|
-
deleteWidget(widget.id);
|
|
152
|
-
if (idx > maxIndex - 1 && idx > 1) {
|
|
153
|
-
state.widgetsIndex = idx - 1;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
return { handled: true };
|
|
157
|
-
}
|
|
158
|
-
const num = parseInt(str || '', 10);
|
|
159
|
-
if (num >= 1 && num <= 9 && num <= pageWidgets.length) {
|
|
160
|
-
state.widgetsIndex = num;
|
|
161
|
-
markDirty();
|
|
162
|
-
return { handled: true };
|
|
163
|
-
}
|
|
164
|
-
return { handled: false };
|
|
165
|
-
}
|
|
166
|
-
};
|
|
167
|
-
async function openWidgetInBrowser(widgetId) {
|
|
168
|
-
try {
|
|
169
|
-
const url = await fetchWidgetUrl(widgetId);
|
|
170
|
-
const cmd = process.platform === 'darwin' ? 'open'
|
|
171
|
-
: process.platform === 'win32' ? 'start'
|
|
172
|
-
: 'xdg-open';
|
|
173
|
-
exec(`${cmd} "${url}"`);
|
|
174
|
-
}
|
|
175
|
-
catch {
|
|
176
|
-
// Silent — signed URL fetch failed
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
async function deleteWidget(widgetId) {
|
|
180
|
-
try {
|
|
181
|
-
await connection.request({
|
|
182
|
-
type: 'widgets.delete',
|
|
183
|
-
payload: { widgetId },
|
|
184
|
-
}, 5000);
|
|
185
|
-
fetchWidgets();
|
|
186
|
-
}
|
|
187
|
-
catch {
|
|
188
|
-
// Silently fail
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
export default backgroundTasks;
|
|
192
|
-
//# sourceMappingURL=backgroundTasks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"backgroundTasks.js","sourceRoot":"","sources":["../../src/ui/backgroundTasks.ts"],"names":[],"mappings":"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"}
|