@autenai/sdk 0.4.0 → 0.5.0
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/README.md +154 -0
- package/bin/auten.js +2 -0
- package/dist/cli/add-phone.d.ts +2 -0
- package/dist/cli/add-phone.d.ts.map +1 -0
- package/dist/cli/add-phone.js +254 -0
- package/dist/cli/add-phone.js.map +1 -0
- package/dist/cli/autocomplete.d.ts +31 -0
- package/dist/cli/autocomplete.d.ts.map +1 -0
- package/dist/cli/autocomplete.js +438 -0
- package/dist/cli/autocomplete.js.map +1 -0
- package/dist/cli/build-apk.d.ts +2 -0
- package/dist/cli/build-apk.d.ts.map +1 -0
- package/dist/cli/build-apk.js +97 -0
- package/dist/cli/build-apk.js.map +1 -0
- package/dist/cli/creds.d.ts +2 -0
- package/dist/cli/creds.d.ts.map +1 -0
- package/dist/cli/creds.js +147 -0
- package/dist/cli/creds.js.map +1 -0
- package/dist/cli/devices.d.ts +2 -0
- package/dist/cli/devices.d.ts.map +1 -0
- package/dist/cli/devices.js +38 -0
- package/dist/cli/devices.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +111 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/keys.d.ts +2 -0
- package/dist/cli/keys.d.ts.map +1 -0
- package/dist/cli/keys.js +88 -0
- package/dist/cli/keys.js.map +1 -0
- package/dist/cli/login.d.ts +2 -0
- package/dist/cli/login.d.ts.map +1 -0
- package/dist/cli/login.js +35 -0
- package/dist/cli/login.js.map +1 -0
- package/dist/cli/logo.d.ts +2 -0
- package/dist/cli/logo.d.ts.map +1 -0
- package/dist/cli/logo.js +11 -0
- package/dist/cli/logo.js.map +1 -0
- package/dist/cli/me.d.ts +2 -0
- package/dist/cli/me.d.ts.map +1 -0
- package/dist/cli/me.js +19 -0
- package/dist/cli/me.js.map +1 -0
- package/dist/cli/shell.d.ts +2 -0
- package/dist/cli/shell.d.ts.map +1 -0
- package/dist/cli/shell.js +22 -0
- package/dist/cli/shell.js.map +1 -0
- package/dist/cli/task.d.ts +2 -0
- package/dist/cli/task.d.ts.map +1 -0
- package/dist/cli/task.js +148 -0
- package/dist/cli/task.js.map +1 -0
- package/dist/cli/tasks.d.ts +2 -0
- package/dist/cli/tasks.d.ts.map +1 -0
- package/dist/cli/tasks.js +76 -0
- package/dist/cli/tasks.js.map +1 -0
- package/dist/cli/util.d.ts +46 -0
- package/dist/cli/util.d.ts.map +1 -0
- package/dist/cli/util.js +134 -0
- package/dist/cli/util.js.map +1 -0
- package/dist/package.json +56 -0
- package/dist/src/client.d.ts +81 -0
- package/dist/src/client.d.ts.map +1 -0
- package/dist/src/client.js +116 -0
- package/dist/src/client.js.map +1 -0
- package/dist/src/errors.d.ts +16 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +31 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/phone.d.ts +115 -0
- package/dist/src/phone.d.ts.map +1 -0
- package/dist/src/phone.js +123 -0
- package/dist/src/phone.js.map +1 -0
- package/dist/src/transport.d.ts +14 -0
- package/dist/src/transport.d.ts.map +1 -0
- package/dist/src/transport.js +71 -0
- package/dist/src/transport.js.map +1 -0
- package/dist/src/types.d.ts +138 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +43 -26
- package/dist/index.d.mts +0 -500
- package/dist/index.d.ts +0 -500
- package/dist/index.js +0 -450
- package/dist/index.mjs +0 -418
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A small replacement for readline's line input that adds Claude-Code-style
|
|
3
|
+
* inline autocomplete: while you type, matching slash commands appear in a
|
|
4
|
+
* dropdown below the prompt. Arrow keys navigate, Tab fills, Enter submits.
|
|
5
|
+
*
|
|
6
|
+
* Each call returns exactly one line (or null if the user pressed Ctrl+C/D
|
|
7
|
+
* or hit ESC on a non-empty buffer).
|
|
8
|
+
*/
|
|
9
|
+
import { writeFileSync, readFileSync, unlinkSync } from "fs";
|
|
10
|
+
import { tmpdir } from "os";
|
|
11
|
+
import { resolve as resolvePath } from "path";
|
|
12
|
+
import { spawnSync } from "child_process";
|
|
13
|
+
import { C } from "./util.js";
|
|
14
|
+
const MAX_DESC = 70;
|
|
15
|
+
export async function readLineWithSuggestions(opts) {
|
|
16
|
+
return new Promise((resolve) => {
|
|
17
|
+
const stdin = process.stdin;
|
|
18
|
+
const wasRaw = stdin.isRaw === true;
|
|
19
|
+
// Order matters: set encoding BEFORE resume so the StringDecoder is ready
|
|
20
|
+
// for the first byte of any multi-byte sequence (e.g. Lithuanian "ą" → C4 85).
|
|
21
|
+
stdin.setEncoding("utf8");
|
|
22
|
+
if (stdin.isTTY)
|
|
23
|
+
stdin.setRawMode(true);
|
|
24
|
+
stdin.resume();
|
|
25
|
+
let buf = "";
|
|
26
|
+
let cursor = 0;
|
|
27
|
+
let selected = 0;
|
|
28
|
+
// Bookkeeping for the line-wrap-aware redraw: how many rows below the
|
|
29
|
+
// anchor (top-left of the prompt) the cursor was left at last render,
|
|
30
|
+
// and how many rows we drew in total.
|
|
31
|
+
let lastCursorRowFromAnchor = 0;
|
|
32
|
+
let lastTotalRows = 0;
|
|
33
|
+
// History recall state: -1 means not navigating; otherwise an index into opts.history.
|
|
34
|
+
let historyIdx = -1;
|
|
35
|
+
let preHistoryBuf = "";
|
|
36
|
+
const promptVis = stripAnsi(opts.prompt).length;
|
|
37
|
+
const maxVisible = Math.max(3, Math.min(opts.maxVisible ?? 12, 12));
|
|
38
|
+
const history = opts.history ?? [];
|
|
39
|
+
function currentSuggestions() {
|
|
40
|
+
const all = opts.suggest(buf);
|
|
41
|
+
if (selected >= all.length)
|
|
42
|
+
selected = 0;
|
|
43
|
+
return all.slice(0, maxVisible);
|
|
44
|
+
}
|
|
45
|
+
function render() {
|
|
46
|
+
// Step 1: rewind to the anchor (top border row) and clear below.
|
|
47
|
+
if (lastCursorRowFromAnchor > 0) {
|
|
48
|
+
process.stdout.write(`\x1b[${lastCursorRowFromAnchor}A`);
|
|
49
|
+
}
|
|
50
|
+
process.stdout.write(`\x1b[1G\x1b[0J`);
|
|
51
|
+
const cols = Math.max(20, process.stdout.columns || 80);
|
|
52
|
+
const borderWidth = Math.max(20, Math.min(cols, 120));
|
|
53
|
+
const horizontal = `${C.dim}${"─".repeat(borderWidth)}${C.reset}`;
|
|
54
|
+
// Step 2: top border
|
|
55
|
+
process.stdout.write(horizontal + "\n");
|
|
56
|
+
// Step 3: word-wrap the input so words never split mid-character.
|
|
57
|
+
const wrap = wrapInput(buf, cursor, promptVis, cols);
|
|
58
|
+
process.stdout.write(`${opts.prompt}${wrap.display}`);
|
|
59
|
+
const inputRows = wrap.totalRows;
|
|
60
|
+
// Step 4: bottom border below the input.
|
|
61
|
+
process.stdout.write("\n" + horizontal);
|
|
62
|
+
// Step 5: dropdown below the bottom border.
|
|
63
|
+
const suggestions = currentSuggestions();
|
|
64
|
+
if (suggestions.length > 0) {
|
|
65
|
+
const maxName = Math.max(...suggestions.map(s => s.name.length));
|
|
66
|
+
for (let i = 0; i < suggestions.length; i++) {
|
|
67
|
+
const s = suggestions[i];
|
|
68
|
+
const isSel = i === selected;
|
|
69
|
+
const namePart = s.name.padEnd(maxName + 2);
|
|
70
|
+
const desc = s.desc.length > MAX_DESC ? s.desc.slice(0, MAX_DESC) + "…" : s.desc;
|
|
71
|
+
const namePainted = isSel ? `${C.cyan}${namePart}${C.reset}` : `${C.dim}${namePart}${C.reset}`;
|
|
72
|
+
process.stdout.write(`\n ${namePainted}${C.dim}${desc}${C.reset}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const dropdownRows = suggestions.length;
|
|
76
|
+
const totalRows = 1 + inputRows + 1 + dropdownRows; // top + input(s) + bottom + dropdown
|
|
77
|
+
// Step 6: place the visible cursor on the input row, using the wrapped position.
|
|
78
|
+
const cursorRowFromAnchor = 1 + wrap.cursorRow; // skip top border
|
|
79
|
+
const cursorCol = wrap.cursorCol;
|
|
80
|
+
const endRowFromAnchor = totalRows - 1;
|
|
81
|
+
const upBy = endRowFromAnchor - cursorRowFromAnchor;
|
|
82
|
+
if (upBy > 0)
|
|
83
|
+
process.stdout.write(`\x1b[${upBy}A`);
|
|
84
|
+
process.stdout.write(`\x1b[1G`);
|
|
85
|
+
if (cursorCol > 0)
|
|
86
|
+
process.stdout.write(`\x1b[${cursorCol}C`);
|
|
87
|
+
lastCursorRowFromAnchor = cursorRowFromAnchor;
|
|
88
|
+
lastTotalRows = totalRows;
|
|
89
|
+
}
|
|
90
|
+
function openInEditor() {
|
|
91
|
+
// Detach so the editor can have full TTY control.
|
|
92
|
+
stdin.off("data", onData);
|
|
93
|
+
if (stdin.isTTY)
|
|
94
|
+
stdin.setRawMode(false);
|
|
95
|
+
stdin.pause();
|
|
96
|
+
// Wipe whatever we drew so the editor opens on a clean canvas.
|
|
97
|
+
if (lastCursorRowFromAnchor > 0) {
|
|
98
|
+
process.stdout.write(`\x1b[${lastCursorRowFromAnchor}A`);
|
|
99
|
+
}
|
|
100
|
+
process.stdout.write(`\x1b[1G\x1b[0J`);
|
|
101
|
+
lastCursorRowFromAnchor = 0;
|
|
102
|
+
lastTotalRows = 0;
|
|
103
|
+
process.stdout.write("\n");
|
|
104
|
+
const tmpPath = resolvePath(tmpdir(), `auten-input-${Date.now()}-${process.pid}.txt`);
|
|
105
|
+
try {
|
|
106
|
+
writeFileSync(tmpPath, buf);
|
|
107
|
+
const cmdline = process.env.EDITOR || process.env.VISUAL || "vi";
|
|
108
|
+
const [cmd, ...editorArgs] = cmdline.split(/\s+/);
|
|
109
|
+
spawnSync(cmd, [...editorArgs, tmpPath], { stdio: "inherit" });
|
|
110
|
+
const content = readFileSync(tmpPath, "utf8").replace(/\n+$/, "");
|
|
111
|
+
buf = content;
|
|
112
|
+
cursor = buf.length;
|
|
113
|
+
selected = 0;
|
|
114
|
+
}
|
|
115
|
+
catch { /* keep buf as-is on any error */ }
|
|
116
|
+
try {
|
|
117
|
+
unlinkSync(tmpPath);
|
|
118
|
+
}
|
|
119
|
+
catch { }
|
|
120
|
+
stdin.setEncoding("utf8");
|
|
121
|
+
if (stdin.isTTY)
|
|
122
|
+
stdin.setRawMode(true);
|
|
123
|
+
stdin.resume();
|
|
124
|
+
stdin.on("data", onData);
|
|
125
|
+
render();
|
|
126
|
+
}
|
|
127
|
+
function finish(result) {
|
|
128
|
+
stdin.off("data", onData);
|
|
129
|
+
// Wipe the entire framed area, then print a single-line echo of what
|
|
130
|
+
// was committed with a subtle grey background so the user's submitted
|
|
131
|
+
// text stands out against later AI / status output.
|
|
132
|
+
if (lastCursorRowFromAnchor > 0) {
|
|
133
|
+
process.stdout.write(`\x1b[${lastCursorRowFromAnchor}A`);
|
|
134
|
+
}
|
|
135
|
+
process.stdout.write(`\x1b[1G\x1b[0J`);
|
|
136
|
+
const display = buf.replace(/\n/g, " ↵ ");
|
|
137
|
+
const echoed = result === null || buf.length === 0
|
|
138
|
+
? `${opts.prompt}${display}`
|
|
139
|
+
: `${opts.prompt}${C.bgDim} ${display} ${C.reset}`;
|
|
140
|
+
process.stdout.write(echoed + "\n");
|
|
141
|
+
if (stdin.isTTY)
|
|
142
|
+
stdin.setRawMode(wasRaw);
|
|
143
|
+
stdin.pause();
|
|
144
|
+
resolve(result);
|
|
145
|
+
}
|
|
146
|
+
function onData(chunk) {
|
|
147
|
+
const str = typeof chunk === "string" ? chunk : chunk.toString();
|
|
148
|
+
// Multi-byte arrows / function keys arrive as a single chunk like \x1b[A.
|
|
149
|
+
if (str === "" || str === "") { // Ctrl+C / Ctrl+D
|
|
150
|
+
return finish(null);
|
|
151
|
+
}
|
|
152
|
+
if (str === "\r" || str === "\n") {
|
|
153
|
+
return finish(buf);
|
|
154
|
+
}
|
|
155
|
+
// Word/line kill shortcuts (bash-style readline bindings).
|
|
156
|
+
if (str === "" || str === "" || str === "\b") { // Ctrl+W / Alt+Backspace
|
|
157
|
+
if (cursor === 0)
|
|
158
|
+
return;
|
|
159
|
+
let i = cursor;
|
|
160
|
+
while (i > 0 && /\s/.test(buf[i - 1]))
|
|
161
|
+
i--;
|
|
162
|
+
while (i > 0 && /\S/.test(buf[i - 1]))
|
|
163
|
+
i--;
|
|
164
|
+
buf = buf.slice(0, i) + buf.slice(cursor);
|
|
165
|
+
cursor = i;
|
|
166
|
+
selected = 0;
|
|
167
|
+
render();
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
if (str === "") { // Ctrl+U: kill from cursor to start (iTerm2 maps Cmd+Backspace here)
|
|
171
|
+
buf = buf.slice(cursor);
|
|
172
|
+
cursor = 0;
|
|
173
|
+
selected = 0;
|
|
174
|
+
render();
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
if (str === "") { // Ctrl+K: kill from cursor to end
|
|
178
|
+
buf = buf.slice(0, cursor);
|
|
179
|
+
selected = 0;
|
|
180
|
+
render();
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
if (str === "") {
|
|
184
|
+
// ESC: clear current input but stay in the prompt.
|
|
185
|
+
if (buf.length > 0) {
|
|
186
|
+
buf = "";
|
|
187
|
+
cursor = 0;
|
|
188
|
+
selected = 0;
|
|
189
|
+
render();
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
return finish(null);
|
|
193
|
+
}
|
|
194
|
+
if (str === "[A") { // Up
|
|
195
|
+
const all = currentSuggestions();
|
|
196
|
+
if (all.length > 0) {
|
|
197
|
+
selected = (selected - 1 + all.length) % all.length;
|
|
198
|
+
render();
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
if (history.length === 0)
|
|
202
|
+
return;
|
|
203
|
+
if (historyIdx === -1) {
|
|
204
|
+
preHistoryBuf = buf;
|
|
205
|
+
historyIdx = history.length;
|
|
206
|
+
}
|
|
207
|
+
historyIdx = Math.max(0, historyIdx - 1);
|
|
208
|
+
buf = history[historyIdx] ?? "";
|
|
209
|
+
cursor = buf.length;
|
|
210
|
+
selected = 0;
|
|
211
|
+
render();
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
if (str === "[B") { // Down
|
|
215
|
+
const all = currentSuggestions();
|
|
216
|
+
if (all.length > 0) {
|
|
217
|
+
selected = (selected + 1) % all.length;
|
|
218
|
+
render();
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
if (historyIdx === -1)
|
|
222
|
+
return;
|
|
223
|
+
historyIdx++;
|
|
224
|
+
if (historyIdx >= history.length) {
|
|
225
|
+
historyIdx = -1;
|
|
226
|
+
buf = preHistoryBuf;
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
buf = history[historyIdx];
|
|
230
|
+
}
|
|
231
|
+
cursor = buf.length;
|
|
232
|
+
selected = 0;
|
|
233
|
+
render();
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
if (str === "[D") { // Left
|
|
237
|
+
if (cursor > 0)
|
|
238
|
+
cursor--;
|
|
239
|
+
render();
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
if (str === "[C") { // Right
|
|
243
|
+
if (cursor < buf.length)
|
|
244
|
+
cursor++;
|
|
245
|
+
render();
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
if (str === "[H" || str === "") { // Home / Ctrl+A
|
|
249
|
+
cursor = 0;
|
|
250
|
+
render();
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
if (str === "[F" || str === "") { // End / Ctrl+E
|
|
254
|
+
cursor = buf.length;
|
|
255
|
+
render();
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
if (str === "\t") {
|
|
259
|
+
const all = currentSuggestions();
|
|
260
|
+
if (all.length > 0) {
|
|
261
|
+
buf = all[selected].name + " ";
|
|
262
|
+
cursor = buf.length;
|
|
263
|
+
selected = 0;
|
|
264
|
+
render();
|
|
265
|
+
}
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
if (str === "") { // Ctrl+E — open external editor
|
|
269
|
+
openInEditor();
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
if (str === "" || str === "\b") { // Backspace
|
|
273
|
+
if (cursor > 0) {
|
|
274
|
+
buf = buf.slice(0, cursor - 1) + buf.slice(cursor);
|
|
275
|
+
cursor--;
|
|
276
|
+
selected = 0;
|
|
277
|
+
render();
|
|
278
|
+
}
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
// Ignore other escape sequences (PgUp/PgDn/etc.)
|
|
282
|
+
if (str.startsWith(""))
|
|
283
|
+
return;
|
|
284
|
+
// Regular text (handles paste of multiple chars too).
|
|
285
|
+
const printable = str.replace(/[-]/g, "");
|
|
286
|
+
if (!printable)
|
|
287
|
+
return;
|
|
288
|
+
buf = buf.slice(0, cursor) + printable + buf.slice(cursor);
|
|
289
|
+
cursor += printable.length;
|
|
290
|
+
selected = 0;
|
|
291
|
+
render();
|
|
292
|
+
}
|
|
293
|
+
stdin.on("data", onData);
|
|
294
|
+
render();
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
function stripAnsi(s) {
|
|
298
|
+
return s.replace(/\x1b\[[0-9;]*[a-zA-Z]/g, "");
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Wrap an input buffer at word boundaries while computing where the visible
|
|
302
|
+
* cursor lands. The returned `display` includes hard newlines + indent so we
|
|
303
|
+
* can write it once and have the terminal render exactly the wrap we want;
|
|
304
|
+
* `cursorRow`/`cursorCol` say where to put the caret afterwards.
|
|
305
|
+
*/
|
|
306
|
+
function wrapInput(buf, cursor, promptVis, cols) {
|
|
307
|
+
const indent = " ".repeat(promptVis);
|
|
308
|
+
let display = "";
|
|
309
|
+
let row = 0;
|
|
310
|
+
let col = promptVis;
|
|
311
|
+
let cursorRow = 0;
|
|
312
|
+
let cursorCol = promptVis;
|
|
313
|
+
function recordCursorIfHere(i) {
|
|
314
|
+
if (i === cursor) {
|
|
315
|
+
cursorRow = row;
|
|
316
|
+
cursorCol = col;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
for (let i = 0; i < buf.length; i++) {
|
|
320
|
+
recordCursorIfHere(i);
|
|
321
|
+
const ch = buf[i];
|
|
322
|
+
if (ch === "\n") {
|
|
323
|
+
display += "\n" + indent;
|
|
324
|
+
row++;
|
|
325
|
+
col = promptVis;
|
|
326
|
+
continue;
|
|
327
|
+
}
|
|
328
|
+
// At the start of a non-whitespace word, peek the word length and
|
|
329
|
+
// pre-emptively wrap if it doesn't fit on the current row.
|
|
330
|
+
const prev = i === 0 ? " " : buf[i - 1];
|
|
331
|
+
if (/\s/.test(prev) && !/\s/.test(ch)) {
|
|
332
|
+
let j = i;
|
|
333
|
+
while (j < buf.length && !/\s/.test(buf[j]) && buf[j] !== "\n")
|
|
334
|
+
j++;
|
|
335
|
+
const wordLen = j - i;
|
|
336
|
+
if (col + wordLen > cols && col > promptVis) {
|
|
337
|
+
display += "\n" + indent;
|
|
338
|
+
row++;
|
|
339
|
+
col = promptVis;
|
|
340
|
+
// Update cursor if it was meant to be at this index — the wrap happens
|
|
341
|
+
// before the character is written, so the caret moves with it.
|
|
342
|
+
if (i === cursor) {
|
|
343
|
+
cursorRow = row;
|
|
344
|
+
cursorCol = col;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
display += ch;
|
|
349
|
+
col++;
|
|
350
|
+
}
|
|
351
|
+
// Cursor at end of buffer.
|
|
352
|
+
recordCursorIfHere(buf.length);
|
|
353
|
+
return { display, totalRows: row + 1, cursorRow, cursorCol };
|
|
354
|
+
}
|
|
355
|
+
export async function selectFromList(opts) {
|
|
356
|
+
if (opts.items.length === 0)
|
|
357
|
+
return null;
|
|
358
|
+
return new Promise((resolve) => {
|
|
359
|
+
const stdin = process.stdin;
|
|
360
|
+
const wasRaw = stdin.isRaw === true;
|
|
361
|
+
if (stdin.isTTY)
|
|
362
|
+
stdin.setRawMode(true);
|
|
363
|
+
stdin.resume();
|
|
364
|
+
stdin.setEncoding("utf8");
|
|
365
|
+
let selected = Math.max(0, Math.min(opts.initialIndex ?? 0, opts.items.length - 1));
|
|
366
|
+
let renderedLines = 0;
|
|
367
|
+
function render() {
|
|
368
|
+
// Move cursor back to the start of our render area, clearing each line.
|
|
369
|
+
if (renderedLines > 0) {
|
|
370
|
+
process.stdout.write(`\x1b[${renderedLines}A`);
|
|
371
|
+
}
|
|
372
|
+
const chunks = [];
|
|
373
|
+
if (opts.header)
|
|
374
|
+
chunks.push(opts.header);
|
|
375
|
+
for (let i = 0; i < opts.items.length; i++) {
|
|
376
|
+
chunks.push(opts.render(opts.items[i], i === selected));
|
|
377
|
+
}
|
|
378
|
+
if (opts.footer)
|
|
379
|
+
chunks.push(opts.footer);
|
|
380
|
+
let lineCount = 0;
|
|
381
|
+
for (const line of chunks) {
|
|
382
|
+
process.stdout.write("\x1b[2K"); // clear line
|
|
383
|
+
process.stdout.write(line + "\n");
|
|
384
|
+
lineCount++;
|
|
385
|
+
}
|
|
386
|
+
// If old render was longer, blank out leftover rows.
|
|
387
|
+
for (let i = lineCount; i < renderedLines; i++) {
|
|
388
|
+
process.stdout.write("\x1b[2K\n");
|
|
389
|
+
}
|
|
390
|
+
const total = Math.max(lineCount, renderedLines);
|
|
391
|
+
// We are now `total` lines below the render origin. Move back up to the
|
|
392
|
+
// last rendered line so the next render call rewrites in place.
|
|
393
|
+
const overshoot = total - lineCount;
|
|
394
|
+
if (overshoot > 0)
|
|
395
|
+
process.stdout.write(`\x1b[${overshoot}A`);
|
|
396
|
+
renderedLines = lineCount;
|
|
397
|
+
}
|
|
398
|
+
function finish(result) {
|
|
399
|
+
stdin.off("data", onData);
|
|
400
|
+
if (stdin.isTTY)
|
|
401
|
+
stdin.setRawMode(wasRaw);
|
|
402
|
+
stdin.pause();
|
|
403
|
+
resolve(result);
|
|
404
|
+
}
|
|
405
|
+
function onData(chunk) {
|
|
406
|
+
const str = typeof chunk === "string" ? chunk : chunk.toString();
|
|
407
|
+
if (str === "" || str === "")
|
|
408
|
+
return finish(null); // Ctrl+C / Ctrl+D
|
|
409
|
+
if (str === "")
|
|
410
|
+
return finish(null); // ESC
|
|
411
|
+
if (str === "\r" || str === "\n")
|
|
412
|
+
return finish(selected);
|
|
413
|
+
if (str === "[A" || str === "k") { // Up
|
|
414
|
+
selected = (selected - 1 + opts.items.length) % opts.items.length;
|
|
415
|
+
render();
|
|
416
|
+
return;
|
|
417
|
+
}
|
|
418
|
+
if (str === "[B" || str === "j") { // Down
|
|
419
|
+
selected = (selected + 1) % opts.items.length;
|
|
420
|
+
render();
|
|
421
|
+
return;
|
|
422
|
+
}
|
|
423
|
+
if (str === "[H") {
|
|
424
|
+
selected = 0;
|
|
425
|
+
render();
|
|
426
|
+
return;
|
|
427
|
+
}
|
|
428
|
+
if (str === "[F") {
|
|
429
|
+
selected = opts.items.length - 1;
|
|
430
|
+
render();
|
|
431
|
+
return;
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
stdin.on("data", onData);
|
|
435
|
+
render();
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
//# sourceMappingURL=autocomplete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autocomplete.js","sourceRoot":"","sources":["../../cli/autocomplete.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-apk.d.ts","sourceRoot":"","sources":["../../cli/build-apk.ts"],"names":[],"mappings":"AA2CA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqEnE"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds the SCE Agent APK on the IceCode build host (which has Java +
|
|
3
|
+
* Android SDK) and downloads it locally so `add-phone` can install it.
|
|
4
|
+
* Uses the user's own ~/.android/debug.keystore so installs replace cleanly.
|
|
5
|
+
*/
|
|
6
|
+
import { execFileSync, spawnSync } from "child_process";
|
|
7
|
+
import { existsSync } from "fs";
|
|
8
|
+
import { resolve } from "path";
|
|
9
|
+
import { homedir } from "os";
|
|
10
|
+
import { C, banner, ok, info, warn, fail, readRc } from "./util.js";
|
|
11
|
+
function parseArgs(argv) {
|
|
12
|
+
const out = {};
|
|
13
|
+
for (let i = 0; i < argv.length; i++) {
|
|
14
|
+
const a = argv[i];
|
|
15
|
+
if (a.startsWith("--") && argv[i + 1] && !argv[i + 1].startsWith("--")) {
|
|
16
|
+
out[a.slice(2)] = argv[++i];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
relayUrl: out["relay-url"],
|
|
21
|
+
relayApiKey: out["api-key"] || out["relay-api-key"],
|
|
22
|
+
buildHost: out["build-host"],
|
|
23
|
+
sshKey: out["ssh-key"],
|
|
24
|
+
serverApkDir: out["server-apk-dir"],
|
|
25
|
+
localApkDir: out["local-apk-dir"],
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function run(cmd, args) {
|
|
29
|
+
const r = spawnSync(cmd, args, { stdio: "inherit" });
|
|
30
|
+
if (r.status !== 0)
|
|
31
|
+
throw new Error(`${cmd} exited with ${r.status}`);
|
|
32
|
+
}
|
|
33
|
+
export async function buildApkCommand(argv) {
|
|
34
|
+
const cli = parseArgs(argv);
|
|
35
|
+
const rc = readRc();
|
|
36
|
+
const opts = {
|
|
37
|
+
relayUrl: cli.relayUrl || process.env.RELAY_URL || rc.baseUrl?.replace(/^https?/, "wss") + "/ws" || "wss://relay.auten.ai/ws",
|
|
38
|
+
relayApiKey: cli.relayApiKey || process.env.RELAY_API_KEY || process.env.SCE_API_KEY || rc.apiKey || "",
|
|
39
|
+
buildHost: cli.buildHost || process.env.BUILD_HOST || "root@46.202.191.74",
|
|
40
|
+
sshKey: cli.sshKey || process.env.SSH_KEY || resolve(homedir(), ".ssh/autenos"),
|
|
41
|
+
serverApkDir: cli.serverApkDir || process.env.SERVER_APK_DIR || "/root/mobile-agent-apk",
|
|
42
|
+
localApkDir: cli.localApkDir || process.env.LOCAL_APK_DIR || resolve(process.cwd(), "../mobile-agent-apk"),
|
|
43
|
+
};
|
|
44
|
+
banner("auten build-apk");
|
|
45
|
+
console.log(`${C.dim}Build host: ${opts.buildHost}${C.reset}`);
|
|
46
|
+
console.log(`${C.dim}Relay URL: ${opts.relayUrl}${C.reset}`);
|
|
47
|
+
console.log(`${C.dim}APK source: ${opts.localApkDir}${C.reset}`);
|
|
48
|
+
console.log(`${C.dim}API key: ${opts.relayApiKey ? opts.relayApiKey.slice(0, 14) + "… (embedded)" : "<missing>"}${C.reset}`);
|
|
49
|
+
if (!opts.relayApiKey) {
|
|
50
|
+
fail("API key is required to build an APK that can authenticate against the relay.");
|
|
51
|
+
info("Provide one with --api-key, SCE_API_KEY env var, or `auten login`.");
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
const keystore = resolve(homedir(), ".android/debug.keystore");
|
|
55
|
+
if (!existsSync(keystore)) {
|
|
56
|
+
fail(`~/.android/debug.keystore not found.`);
|
|
57
|
+
info("Generate one with Android Studio or copy from a trusted machine first.");
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
if (!existsSync(opts.localApkDir)) {
|
|
61
|
+
fail(`APK source dir not found: ${opts.localApkDir}`);
|
|
62
|
+
info("Set --local-apk-dir or LOCAL_APK_DIR to point at the mobile-agent-apk checkout.");
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
if (!existsSync(opts.sshKey)) {
|
|
66
|
+
fail(`SSH key not found at ${opts.sshKey}`);
|
|
67
|
+
info("Pass --ssh-key or set SSH_KEY env var.");
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
info("Syncing keystore + sources to build host...");
|
|
71
|
+
run("scp", ["-i", opts.sshKey, keystore, `${opts.buildHost}:/root/.android/debug.keystore`]);
|
|
72
|
+
run("rsync", [
|
|
73
|
+
"-a", "--checksum",
|
|
74
|
+
"-e", `ssh -i ${opts.sshKey}`,
|
|
75
|
+
"--exclude", "build", "--exclude", ".gradle", "--exclude", "local.properties",
|
|
76
|
+
`${opts.localApkDir}/`,
|
|
77
|
+
`${opts.buildHost}:${opts.serverApkDir}/`,
|
|
78
|
+
]);
|
|
79
|
+
info(`Building APK on ${opts.buildHost}...`);
|
|
80
|
+
const remoteCmd = [
|
|
81
|
+
`cd ${opts.serverApkDir}`,
|
|
82
|
+
`export ANDROID_HOME=/opt/android-sdk`,
|
|
83
|
+
`export ANDROID_SDK_ROOT=/opt/android-sdk`,
|
|
84
|
+
`export PATH=$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/latest/bin:$PATH`,
|
|
85
|
+
`./gradlew assembleDebug -PrelayUrl=${opts.relayUrl} -PrelayApiKey=${opts.relayApiKey} 2>&1 | tail -10`,
|
|
86
|
+
].join(" && ");
|
|
87
|
+
run("ssh", ["-i", opts.sshKey, opts.buildHost, remoteCmd]);
|
|
88
|
+
info("Downloading APK...");
|
|
89
|
+
const localOut = resolve(opts.localApkDir, "app/build/outputs/apk/debug/app-debug.apk");
|
|
90
|
+
execFileSync("mkdir", ["-p", resolve(opts.localApkDir, "app/build/outputs/apk/debug")]);
|
|
91
|
+
run("scp", ["-i", opts.sshKey,
|
|
92
|
+
`${opts.buildHost}:${opts.serverApkDir}/app/build/outputs/apk/debug/app-debug.apk`,
|
|
93
|
+
localOut]);
|
|
94
|
+
ok(`APK ready: ${localOut}`);
|
|
95
|
+
warn("If a phone already has an older APK installed, run `auten add-phone` to update it.");
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=build-apk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-apk.js","sourceRoot":"","sources":["../../cli/build-apk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"creds.d.ts","sourceRoot":"","sources":["../../cli/creds.ts"],"names":[],"mappings":"AAGA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBhE"}
|