terminalhire 0.24.0 → 0.24.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/bin/claim-push-bg.js +2 -2
- package/dist/bin/jpi-bounties.js +2 -2
- package/dist/bin/jpi-chat-read.js +2 -2
- package/dist/bin/jpi-chat.js +2 -2
- package/dist/bin/jpi-claim.js +2 -2
- package/dist/bin/jpi-contribute.js +2 -2
- package/dist/bin/jpi-devs.js +2 -2
- package/dist/bin/jpi-dispatch.js +156 -15
- package/dist/bin/jpi-hub.js +156 -15
- package/dist/bin/jpi-inbox.js +2 -2
- package/dist/bin/jpi-intro.js +2 -2
- package/dist/bin/jpi-jobs.js +2 -2
- package/dist/bin/jpi-learn.js +2 -2
- package/dist/bin/jpi-login.js +2 -2
- package/dist/bin/jpi-profile.js +2 -2
- package/dist/bin/jpi-refresh.js +2 -2
- package/dist/bin/jpi-save.js +2 -2
- package/dist/bin/jpi-sync.js +2 -2
- package/dist/bin/jpi-trajectory.js +2 -2
- package/dist/bin/tui-core.js +10 -3
- package/dist/src/chat-client.js +2 -2
- package/dist/src/chat-keystore.js +2 -2
- package/dist/src/github-auth.js +2 -2
- package/dist/src/intro.js +2 -2
- package/dist/src/profile.js +2 -2
- package/dist/src/trajectory.js +2 -2
- package/package.json +1 -1
|
@@ -45,9 +45,9 @@ var init_keytar = __esm({
|
|
|
45
45
|
}
|
|
46
46
|
});
|
|
47
47
|
|
|
48
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
48
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
49
49
|
var require_keytar = __commonJS({
|
|
50
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
50
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
51
51
|
"use strict";
|
|
52
52
|
init_keytar();
|
|
53
53
|
try {
|
package/dist/bin/jpi-bounties.js
CHANGED
|
@@ -7239,9 +7239,9 @@ var init_keytar = __esm({
|
|
|
7239
7239
|
}
|
|
7240
7240
|
});
|
|
7241
7241
|
|
|
7242
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
7242
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
7243
7243
|
var require_keytar = __commonJS({
|
|
7244
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
7244
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
7245
7245
|
"use strict";
|
|
7246
7246
|
init_keytar();
|
|
7247
7247
|
try {
|
|
@@ -4001,9 +4001,9 @@ var init_keytar = __esm({
|
|
|
4001
4001
|
}
|
|
4002
4002
|
});
|
|
4003
4003
|
|
|
4004
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
4004
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
4005
4005
|
var require_keytar = __commonJS({
|
|
4006
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
4006
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
4007
4007
|
"use strict";
|
|
4008
4008
|
init_keytar();
|
|
4009
4009
|
try {
|
package/dist/bin/jpi-chat.js
CHANGED
|
@@ -4029,9 +4029,9 @@ var init_keytar = __esm({
|
|
|
4029
4029
|
}
|
|
4030
4030
|
});
|
|
4031
4031
|
|
|
4032
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
4032
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
4033
4033
|
var require_keytar = __commonJS({
|
|
4034
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
4034
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
4035
4035
|
"use strict";
|
|
4036
4036
|
init_keytar();
|
|
4037
4037
|
try {
|
package/dist/bin/jpi-claim.js
CHANGED
|
@@ -7362,9 +7362,9 @@ var init_keytar = __esm({
|
|
|
7362
7362
|
}
|
|
7363
7363
|
});
|
|
7364
7364
|
|
|
7365
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
7365
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
7366
7366
|
var require_keytar = __commonJS({
|
|
7367
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
7367
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
7368
7368
|
"use strict";
|
|
7369
7369
|
init_keytar();
|
|
7370
7370
|
try {
|
|
@@ -1360,9 +1360,9 @@ var init_keytar = __esm({
|
|
|
1360
1360
|
}
|
|
1361
1361
|
});
|
|
1362
1362
|
|
|
1363
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
1363
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
1364
1364
|
var require_keytar = __commonJS({
|
|
1365
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
1365
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
1366
1366
|
"use strict";
|
|
1367
1367
|
init_keytar();
|
|
1368
1368
|
try {
|
package/dist/bin/jpi-devs.js
CHANGED
|
@@ -7239,9 +7239,9 @@ var init_keytar = __esm({
|
|
|
7239
7239
|
}
|
|
7240
7240
|
});
|
|
7241
7241
|
|
|
7242
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
7242
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
7243
7243
|
var require_keytar = __commonJS({
|
|
7244
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
7244
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
7245
7245
|
"use strict";
|
|
7246
7246
|
init_keytar();
|
|
7247
7247
|
try {
|
package/dist/bin/jpi-dispatch.js
CHANGED
|
@@ -346,9 +346,9 @@ var init_keytar = __esm({
|
|
|
346
346
|
}
|
|
347
347
|
});
|
|
348
348
|
|
|
349
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
349
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
350
350
|
var require_keytar = __commonJS({
|
|
351
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
351
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
352
352
|
"use strict";
|
|
353
353
|
init_keytar();
|
|
354
354
|
try {
|
|
@@ -13414,7 +13414,8 @@ function createRuntime({
|
|
|
13414
13414
|
input = typeof process !== "undefined" ? process.stdin : void 0,
|
|
13415
13415
|
output = typeof process !== "undefined" ? process.stdout : void 0,
|
|
13416
13416
|
signals = typeof process !== "undefined" ? process : void 0,
|
|
13417
|
-
exit = (code) => process.exit(code)
|
|
13417
|
+
exit = (code) => process.exit(code),
|
|
13418
|
+
mouse = false
|
|
13418
13419
|
} = {}) {
|
|
13419
13420
|
let entered = false;
|
|
13420
13421
|
let cleaned = false;
|
|
@@ -13442,7 +13443,8 @@ function createRuntime({
|
|
|
13442
13443
|
} catch {
|
|
13443
13444
|
}
|
|
13444
13445
|
try {
|
|
13445
|
-
if (output && typeof output.write === "function")
|
|
13446
|
+
if (output && typeof output.write === "function")
|
|
13447
|
+
output.write((mouse ? MOUSE_OFF : "") + SHOW_CURSOR + EXIT_ALT);
|
|
13446
13448
|
} catch {
|
|
13447
13449
|
}
|
|
13448
13450
|
}
|
|
@@ -13477,7 +13479,8 @@ function createRuntime({
|
|
|
13477
13479
|
signals.on("unhandledRejection", onUncaught);
|
|
13478
13480
|
signals.on("exit", onExitEvt);
|
|
13479
13481
|
}
|
|
13480
|
-
if (output && typeof output.write === "function")
|
|
13482
|
+
if (output && typeof output.write === "function")
|
|
13483
|
+
output.write(ENTER_ALT + HIDE_CURSOR + (mouse ? MOUSE_ON : ""));
|
|
13481
13484
|
}
|
|
13482
13485
|
return {
|
|
13483
13486
|
enter,
|
|
@@ -13700,7 +13703,7 @@ function gradientFg(stops, t, level = "truecolor") {
|
|
|
13700
13703
|
const b = Math.round(c0.b + (c1.b - c0.b) * localT);
|
|
13701
13704
|
return level === "256" ? `\x1B[38;5;${rgbTo256(r, g, b)}m` : `\x1B[38;2;${r};${g};${b}m`;
|
|
13702
13705
|
}
|
|
13703
|
-
var HIDE_CURSOR, SHOW_CURSOR, ENTER_ALT, EXIT_ALT, INVERSE, RESET, BOLD, KEY_CTRL_C, KEY_ESC, KEY_UP, KEY_DOWN, KEY_RIGHT, KEY_LEFT, KEY_TAB, KEY_ENTER_A, KEY_ENTER_B, KEY_BACKSPACE_A, KEY_BACKSPACE_B, KEY_Q, KEY_DIGITS, ANSI_CSI, ANSI_OSC, ANSI_OTHER, C0_C1_DEL, PALETTE, COLOR_ROLES, CUBE_STEPS;
|
|
13706
|
+
var HIDE_CURSOR, SHOW_CURSOR, ENTER_ALT, EXIT_ALT, MOUSE_ON, MOUSE_OFF, INVERSE, RESET, BOLD, KEY_CTRL_C, KEY_ESC, KEY_UP, KEY_DOWN, KEY_RIGHT, KEY_LEFT, KEY_TAB, KEY_ENTER_A, KEY_ENTER_B, KEY_BACKSPACE_A, KEY_BACKSPACE_B, KEY_Q, KEY_DIGITS, ANSI_CSI, ANSI_OSC, ANSI_OTHER, C0_C1_DEL, PALETTE, COLOR_ROLES, CUBE_STEPS;
|
|
13704
13707
|
var init_tui_core = __esm({
|
|
13705
13708
|
"bin/tui-core.js"() {
|
|
13706
13709
|
"use strict";
|
|
@@ -13708,6 +13711,8 @@ var init_tui_core = __esm({
|
|
|
13708
13711
|
SHOW_CURSOR = "\x1B[?25h";
|
|
13709
13712
|
ENTER_ALT = "\x1B[?1049h";
|
|
13710
13713
|
EXIT_ALT = "\x1B[?1049l";
|
|
13714
|
+
MOUSE_ON = "\x1B[?1000h\x1B[?1006h";
|
|
13715
|
+
MOUSE_OFF = "\x1B[?1006l\x1B[?1000l";
|
|
13711
13716
|
INVERSE = "\x1B[7m";
|
|
13712
13717
|
RESET = "\x1B[0m";
|
|
13713
13718
|
BOLD = "\x1B[1m";
|
|
@@ -15658,7 +15663,7 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
15658
15663
|
output && output.isTTY
|
|
15659
15664
|
);
|
|
15660
15665
|
const c = (role) => degrade(role, level);
|
|
15661
|
-
const runtime = createRuntime({ input, output, signals });
|
|
15666
|
+
const runtime = createRuntime({ input, output, signals, mouse: true });
|
|
15662
15667
|
const initial = readTermSize(output);
|
|
15663
15668
|
const renderer = createRenderer({ output, rows: initial.rows, cols: initial.cols });
|
|
15664
15669
|
let active = 0;
|
|
@@ -15689,6 +15694,52 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
15689
15694
|
let homeIntrosOpen = false;
|
|
15690
15695
|
let splashActive = true;
|
|
15691
15696
|
let splashTimer = null;
|
|
15697
|
+
const MOUSE_SPLIT_MS = 50;
|
|
15698
|
+
let mousePending = "";
|
|
15699
|
+
let mouseFlushTimer = null;
|
|
15700
|
+
function clearMousePending() {
|
|
15701
|
+
mousePending = "";
|
|
15702
|
+
if (mouseFlushTimer) {
|
|
15703
|
+
clearTimeout(mouseFlushTimer);
|
|
15704
|
+
mouseFlushTimer = null;
|
|
15705
|
+
}
|
|
15706
|
+
}
|
|
15707
|
+
function armMouseFlush() {
|
|
15708
|
+
mouseFlushTimer = setTimeout(() => {
|
|
15709
|
+
const held = mousePending;
|
|
15710
|
+
mousePending = "";
|
|
15711
|
+
mouseFlushTimer = null;
|
|
15712
|
+
if (done) return;
|
|
15713
|
+
if (held === KEY_ESC || held === "\x1B[") {
|
|
15714
|
+
if (mode !== "nav") escToNav();
|
|
15715
|
+
const tail = held.slice(1);
|
|
15716
|
+
if (tail) {
|
|
15717
|
+
onData(Buffer.from(tail, "utf8"));
|
|
15718
|
+
return;
|
|
15719
|
+
}
|
|
15720
|
+
repaint();
|
|
15721
|
+
}
|
|
15722
|
+
}, MOUSE_SPLIT_MS);
|
|
15723
|
+
if (mouseFlushTimer.unref) mouseFlushTimer.unref();
|
|
15724
|
+
}
|
|
15725
|
+
function isIncompleteMousePrefix(x) {
|
|
15726
|
+
return /^\x1b\[(<[0-9;]*)?$/.test(x);
|
|
15727
|
+
}
|
|
15728
|
+
function beginsMouse(x) {
|
|
15729
|
+
return /^\x1b\[<\d+;\d+;\d+[Mm]/.test(x) || isIncompleteMousePrefix(x);
|
|
15730
|
+
}
|
|
15731
|
+
function reassembles(x) {
|
|
15732
|
+
return beginsMouse(x) || x === KEY_UP || x === KEY_DOWN || x === KEY_LEFT || x === KEY_RIGHT || x === KEY_SHIFT_TAB;
|
|
15733
|
+
}
|
|
15734
|
+
function completesEscSequence(x) {
|
|
15735
|
+
return (
|
|
15736
|
+
// eslint-disable-next-line no-control-regex -- a leading COMPLETE SGR mouse report by design
|
|
15737
|
+
/^\x1b\[<\d+;\d+;\d+[Mm]/.test(x) || x === KEY_UP || x === KEY_DOWN || x === KEY_LEFT || x === KEY_RIGHT || x === KEY_SHIFT_TAB
|
|
15738
|
+
);
|
|
15739
|
+
}
|
|
15740
|
+
function continuesSgrMouse(x) {
|
|
15741
|
+
return /^\x1b\[<[0-9;]*$/.test(x);
|
|
15742
|
+
}
|
|
15692
15743
|
const errMsg = (e) => String(e && e.message ? e.message : e);
|
|
15693
15744
|
function paletteResults() {
|
|
15694
15745
|
return PALETTE_VERBS.filter((v) => fuzzyMatch(paletteQuery, v));
|
|
@@ -15940,7 +15991,7 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
15940
15991
|
rows.push(inboxLine, introsLine);
|
|
15941
15992
|
return rows;
|
|
15942
15993
|
}
|
|
15943
|
-
function
|
|
15994
|
+
function sourceIndexForVisible(visibleTarget) {
|
|
15944
15995
|
const name = PANES[active];
|
|
15945
15996
|
const raw = paneRows(name);
|
|
15946
15997
|
const q = filterByPane[active];
|
|
@@ -15948,14 +15999,16 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
15948
15999
|
for (let i = 0; i < raw.length; i++) {
|
|
15949
16000
|
if (substrMatch(q, raw[i])) {
|
|
15950
16001
|
visibleIdx++;
|
|
15951
|
-
if (visibleIdx ===
|
|
16002
|
+
if (visibleIdx === visibleTarget) return i;
|
|
15952
16003
|
}
|
|
15953
16004
|
}
|
|
15954
16005
|
return -1;
|
|
15955
16006
|
}
|
|
15956
|
-
function
|
|
16007
|
+
function activeSourceIndex() {
|
|
16008
|
+
return sourceIndexForVisible(offsetByPane[active]);
|
|
16009
|
+
}
|
|
16010
|
+
function activateRow(idx = activeSourceIndex()) {
|
|
15957
16011
|
const name = PANES[active];
|
|
15958
|
-
const idx = activeSourceIndex();
|
|
15959
16012
|
if (idx < 0) return;
|
|
15960
16013
|
if (name === "Jobs") {
|
|
15961
16014
|
const st = listState.Jobs;
|
|
@@ -16025,6 +16078,7 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
16025
16078
|
const q = filterByPane[active];
|
|
16026
16079
|
return paneRows(PANES[active]).filter((r) => substrMatch(q, r));
|
|
16027
16080
|
}
|
|
16081
|
+
const NAV_WIDTH = 16;
|
|
16028
16082
|
function bodyRegion() {
|
|
16029
16083
|
const rows = renderer.rows;
|
|
16030
16084
|
const top = 2;
|
|
@@ -16072,7 +16126,7 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
16072
16126
|
return;
|
|
16073
16127
|
}
|
|
16074
16128
|
const buf = createBuffer(rows, cols);
|
|
16075
|
-
const navWidth =
|
|
16129
|
+
const navWidth = NAV_WIDTH;
|
|
16076
16130
|
const mainCol = navWidth + 1;
|
|
16077
16131
|
const mainWidth = cols - mainCol;
|
|
16078
16132
|
const { top: bodyTop, bottom: bodyBottom, listTop, viewH } = bodyRegion();
|
|
@@ -16171,6 +16225,7 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
16171
16225
|
"\u2190 / \u2192 previous / next pane",
|
|
16172
16226
|
"Tab cycle pane forward",
|
|
16173
16227
|
"Shift+Tab cycle pane backward",
|
|
16228
|
+
"click select section \xB7 wheel scroll",
|
|
16174
16229
|
"Ctrl+K / : open command palette",
|
|
16175
16230
|
"/ filter the active pane",
|
|
16176
16231
|
"? toggle this help",
|
|
@@ -16288,10 +16343,63 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
16288
16343
|
}
|
|
16289
16344
|
}
|
|
16290
16345
|
}
|
|
16346
|
+
function onClick(row, col) {
|
|
16347
|
+
if (mode !== "nav") return;
|
|
16348
|
+
const { top: bodyTop, bottom: bodyBottom, listTop, viewH } = bodyRegion();
|
|
16349
|
+
if (col < NAV_WIDTH) {
|
|
16350
|
+
const paneIdx = row - bodyTop;
|
|
16351
|
+
if (paneIdx >= 0 && paneIdx < PANES.length && row <= bodyBottom) active = paneIdx;
|
|
16352
|
+
return;
|
|
16353
|
+
}
|
|
16354
|
+
if (col > NAV_WIDTH && row >= listTop && row < listTop + viewH) {
|
|
16355
|
+
const visibleTarget = offsetByPane[active] + (row - listTop);
|
|
16356
|
+
activateRow(sourceIndexForVisible(visibleTarget));
|
|
16357
|
+
}
|
|
16358
|
+
}
|
|
16359
|
+
function handleMouse(seq) {
|
|
16360
|
+
const head = /^\x1b\[<(\d+);(\d+);(\d+)([Mm])/;
|
|
16361
|
+
let rest = seq;
|
|
16362
|
+
let m;
|
|
16363
|
+
while (m = head.exec(rest)) {
|
|
16364
|
+
const b = Number(m[1]);
|
|
16365
|
+
const col = Number(m[2]) - 1;
|
|
16366
|
+
const row = Number(m[3]) - 1;
|
|
16367
|
+
const press = m[4] === "M";
|
|
16368
|
+
rest = rest.slice(m[0].length);
|
|
16369
|
+
if (b === 64) {
|
|
16370
|
+
if (mode === "nav") scrollActive(-1);
|
|
16371
|
+
continue;
|
|
16372
|
+
}
|
|
16373
|
+
if (b === 65) {
|
|
16374
|
+
if (mode === "nav") scrollActive(1);
|
|
16375
|
+
continue;
|
|
16376
|
+
}
|
|
16377
|
+
if (press && (b & 3) === 0) onClick(row, col);
|
|
16378
|
+
}
|
|
16379
|
+
return rest;
|
|
16380
|
+
}
|
|
16291
16381
|
function onData(chunk) {
|
|
16292
16382
|
if (done) return;
|
|
16293
|
-
|
|
16383
|
+
let s = chunk.toString("utf8");
|
|
16294
16384
|
if (s === KEY_CTRL_C) return quit();
|
|
16385
|
+
if (mousePending) {
|
|
16386
|
+
const combined = mousePending + s;
|
|
16387
|
+
const wasEsc = mousePending === KEY_ESC;
|
|
16388
|
+
clearMousePending();
|
|
16389
|
+
if (wasEsc) {
|
|
16390
|
+
if (completesEscSequence(combined)) {
|
|
16391
|
+
s = combined;
|
|
16392
|
+
} else if (continuesSgrMouse(combined)) {
|
|
16393
|
+
mousePending = combined;
|
|
16394
|
+
armMouseFlush();
|
|
16395
|
+
return;
|
|
16396
|
+
} else if (mode !== "nav") {
|
|
16397
|
+
escToNav();
|
|
16398
|
+
}
|
|
16399
|
+
} else if (reassembles(combined)) {
|
|
16400
|
+
s = combined;
|
|
16401
|
+
}
|
|
16402
|
+
}
|
|
16295
16403
|
if (splashActive) {
|
|
16296
16404
|
splashActive = false;
|
|
16297
16405
|
if (splashTimer) {
|
|
@@ -16300,11 +16408,43 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
16300
16408
|
}
|
|
16301
16409
|
renderer.invalidate();
|
|
16302
16410
|
}
|
|
16303
|
-
if (s ===
|
|
16304
|
-
|
|
16411
|
+
if (s === "\x1B[") {
|
|
16412
|
+
mousePending = s;
|
|
16413
|
+
armMouseFlush();
|
|
16414
|
+
return;
|
|
16415
|
+
}
|
|
16416
|
+
if (s.length >= 3 && s.charCodeAt(0) === 27 && s[1] === "[" && s[2] === "<") {
|
|
16417
|
+
const remainder = handleMouse(s);
|
|
16418
|
+
if (remainder) {
|
|
16419
|
+
if (isIncompleteMousePrefix(remainder)) {
|
|
16420
|
+
mousePending = remainder;
|
|
16421
|
+
armMouseFlush();
|
|
16422
|
+
} else if (remainder !== s) {
|
|
16423
|
+
onData(Buffer.from(remainder, "utf8"));
|
|
16424
|
+
return;
|
|
16425
|
+
} else {
|
|
16426
|
+
const tail = s.replace(/^\x1b\[<[0-9;]*/, "");
|
|
16427
|
+
if (tail && tail !== s) {
|
|
16428
|
+
const escAt = tail.indexOf("\x1B");
|
|
16429
|
+
const keys = escAt === -1 ? tail : tail.slice(0, escAt);
|
|
16430
|
+
if (keys) dispatchKeys(keys);
|
|
16431
|
+
if (escAt !== -1) {
|
|
16432
|
+
onData(Buffer.from(tail.slice(escAt), "utf8"));
|
|
16433
|
+
return;
|
|
16434
|
+
}
|
|
16435
|
+
repaint();
|
|
16436
|
+
return;
|
|
16437
|
+
}
|
|
16438
|
+
}
|
|
16439
|
+
}
|
|
16305
16440
|
repaint();
|
|
16306
16441
|
return;
|
|
16307
16442
|
}
|
|
16443
|
+
if (s === KEY_ESC) {
|
|
16444
|
+
mousePending = KEY_ESC;
|
|
16445
|
+
armMouseFlush();
|
|
16446
|
+
return;
|
|
16447
|
+
}
|
|
16308
16448
|
if (s === KEY_SHIFT_TAB) {
|
|
16309
16449
|
if (mode === "nav") cycleFocus(-1);
|
|
16310
16450
|
repaint();
|
|
@@ -16352,6 +16492,7 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
16352
16492
|
clearTimeout(splashTimer);
|
|
16353
16493
|
splashTimer = null;
|
|
16354
16494
|
}
|
|
16495
|
+
clearMousePending();
|
|
16355
16496
|
try {
|
|
16356
16497
|
input.removeListener("data", onData);
|
|
16357
16498
|
} catch {
|
package/dist/bin/jpi-hub.js
CHANGED
|
@@ -50,7 +50,8 @@ function createRuntime({
|
|
|
50
50
|
input = typeof process !== "undefined" ? process.stdin : void 0,
|
|
51
51
|
output = typeof process !== "undefined" ? process.stdout : void 0,
|
|
52
52
|
signals = typeof process !== "undefined" ? process : void 0,
|
|
53
|
-
exit = (code) => process.exit(code)
|
|
53
|
+
exit = (code) => process.exit(code),
|
|
54
|
+
mouse = false
|
|
54
55
|
} = {}) {
|
|
55
56
|
let entered = false;
|
|
56
57
|
let cleaned = false;
|
|
@@ -78,7 +79,8 @@ function createRuntime({
|
|
|
78
79
|
} catch {
|
|
79
80
|
}
|
|
80
81
|
try {
|
|
81
|
-
if (output && typeof output.write === "function")
|
|
82
|
+
if (output && typeof output.write === "function")
|
|
83
|
+
output.write((mouse ? MOUSE_OFF : "") + SHOW_CURSOR + EXIT_ALT);
|
|
82
84
|
} catch {
|
|
83
85
|
}
|
|
84
86
|
}
|
|
@@ -113,7 +115,8 @@ function createRuntime({
|
|
|
113
115
|
signals.on("unhandledRejection", onUncaught);
|
|
114
116
|
signals.on("exit", onExitEvt);
|
|
115
117
|
}
|
|
116
|
-
if (output && typeof output.write === "function")
|
|
118
|
+
if (output && typeof output.write === "function")
|
|
119
|
+
output.write(ENTER_ALT + HIDE_CURSOR + (mouse ? MOUSE_ON : ""));
|
|
117
120
|
}
|
|
118
121
|
return {
|
|
119
122
|
enter,
|
|
@@ -336,7 +339,7 @@ function gradientFg(stops, t, level = "truecolor") {
|
|
|
336
339
|
const b = Math.round(c0.b + (c1.b - c0.b) * localT);
|
|
337
340
|
return level === "256" ? `\x1B[38;5;${rgbTo256(r, g, b)}m` : `\x1B[38;2;${r};${g};${b}m`;
|
|
338
341
|
}
|
|
339
|
-
var HIDE_CURSOR, SHOW_CURSOR, ENTER_ALT, EXIT_ALT, INVERSE, RESET, BOLD, KEY_CTRL_C, KEY_ESC, KEY_UP, KEY_DOWN, KEY_RIGHT, KEY_LEFT, KEY_TAB, KEY_ENTER_A, KEY_ENTER_B, KEY_BACKSPACE_A, KEY_BACKSPACE_B, KEY_Q, KEY_DIGITS, ANSI_CSI, ANSI_OSC, ANSI_OTHER, C0_C1_DEL, PALETTE, COLOR_ROLES, CUBE_STEPS;
|
|
342
|
+
var HIDE_CURSOR, SHOW_CURSOR, ENTER_ALT, EXIT_ALT, MOUSE_ON, MOUSE_OFF, INVERSE, RESET, BOLD, KEY_CTRL_C, KEY_ESC, KEY_UP, KEY_DOWN, KEY_RIGHT, KEY_LEFT, KEY_TAB, KEY_ENTER_A, KEY_ENTER_B, KEY_BACKSPACE_A, KEY_BACKSPACE_B, KEY_Q, KEY_DIGITS, ANSI_CSI, ANSI_OSC, ANSI_OTHER, C0_C1_DEL, PALETTE, COLOR_ROLES, CUBE_STEPS;
|
|
340
343
|
var init_tui_core = __esm({
|
|
341
344
|
"bin/tui-core.js"() {
|
|
342
345
|
"use strict";
|
|
@@ -344,6 +347,8 @@ var init_tui_core = __esm({
|
|
|
344
347
|
SHOW_CURSOR = "\x1B[?25h";
|
|
345
348
|
ENTER_ALT = "\x1B[?1049h";
|
|
346
349
|
EXIT_ALT = "\x1B[?1049l";
|
|
350
|
+
MOUSE_ON = "\x1B[?1000h\x1B[?1006h";
|
|
351
|
+
MOUSE_OFF = "\x1B[?1006l\x1B[?1000l";
|
|
347
352
|
INVERSE = "\x1B[7m";
|
|
348
353
|
RESET = "\x1B[0m";
|
|
349
354
|
BOLD = "\x1B[1m";
|
|
@@ -7605,9 +7610,9 @@ var init_keytar = __esm({
|
|
|
7605
7610
|
}
|
|
7606
7611
|
});
|
|
7607
7612
|
|
|
7608
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
7613
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
7609
7614
|
var require_keytar = __commonJS({
|
|
7610
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
7615
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
7611
7616
|
"use strict";
|
|
7612
7617
|
init_keytar();
|
|
7613
7618
|
try {
|
|
@@ -9016,7 +9021,7 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
9016
9021
|
output && output.isTTY
|
|
9017
9022
|
);
|
|
9018
9023
|
const c = (role) => degrade(role, level);
|
|
9019
|
-
const runtime = createRuntime({ input, output, signals });
|
|
9024
|
+
const runtime = createRuntime({ input, output, signals, mouse: true });
|
|
9020
9025
|
const initial = readTermSize(output);
|
|
9021
9026
|
const renderer = createRenderer({ output, rows: initial.rows, cols: initial.cols });
|
|
9022
9027
|
let active = 0;
|
|
@@ -9047,6 +9052,52 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
9047
9052
|
let homeIntrosOpen = false;
|
|
9048
9053
|
let splashActive = true;
|
|
9049
9054
|
let splashTimer = null;
|
|
9055
|
+
const MOUSE_SPLIT_MS = 50;
|
|
9056
|
+
let mousePending = "";
|
|
9057
|
+
let mouseFlushTimer = null;
|
|
9058
|
+
function clearMousePending() {
|
|
9059
|
+
mousePending = "";
|
|
9060
|
+
if (mouseFlushTimer) {
|
|
9061
|
+
clearTimeout(mouseFlushTimer);
|
|
9062
|
+
mouseFlushTimer = null;
|
|
9063
|
+
}
|
|
9064
|
+
}
|
|
9065
|
+
function armMouseFlush() {
|
|
9066
|
+
mouseFlushTimer = setTimeout(() => {
|
|
9067
|
+
const held = mousePending;
|
|
9068
|
+
mousePending = "";
|
|
9069
|
+
mouseFlushTimer = null;
|
|
9070
|
+
if (done) return;
|
|
9071
|
+
if (held === KEY_ESC || held === "\x1B[") {
|
|
9072
|
+
if (mode !== "nav") escToNav();
|
|
9073
|
+
const tail = held.slice(1);
|
|
9074
|
+
if (tail) {
|
|
9075
|
+
onData(Buffer.from(tail, "utf8"));
|
|
9076
|
+
return;
|
|
9077
|
+
}
|
|
9078
|
+
repaint();
|
|
9079
|
+
}
|
|
9080
|
+
}, MOUSE_SPLIT_MS);
|
|
9081
|
+
if (mouseFlushTimer.unref) mouseFlushTimer.unref();
|
|
9082
|
+
}
|
|
9083
|
+
function isIncompleteMousePrefix(x) {
|
|
9084
|
+
return /^\x1b\[(<[0-9;]*)?$/.test(x);
|
|
9085
|
+
}
|
|
9086
|
+
function beginsMouse(x) {
|
|
9087
|
+
return /^\x1b\[<\d+;\d+;\d+[Mm]/.test(x) || isIncompleteMousePrefix(x);
|
|
9088
|
+
}
|
|
9089
|
+
function reassembles(x) {
|
|
9090
|
+
return beginsMouse(x) || x === KEY_UP || x === KEY_DOWN || x === KEY_LEFT || x === KEY_RIGHT || x === KEY_SHIFT_TAB;
|
|
9091
|
+
}
|
|
9092
|
+
function completesEscSequence(x) {
|
|
9093
|
+
return (
|
|
9094
|
+
// eslint-disable-next-line no-control-regex -- a leading COMPLETE SGR mouse report by design
|
|
9095
|
+
/^\x1b\[<\d+;\d+;\d+[Mm]/.test(x) || x === KEY_UP || x === KEY_DOWN || x === KEY_LEFT || x === KEY_RIGHT || x === KEY_SHIFT_TAB
|
|
9096
|
+
);
|
|
9097
|
+
}
|
|
9098
|
+
function continuesSgrMouse(x) {
|
|
9099
|
+
return /^\x1b\[<[0-9;]*$/.test(x);
|
|
9100
|
+
}
|
|
9050
9101
|
const errMsg = (e) => String(e && e.message ? e.message : e);
|
|
9051
9102
|
function paletteResults() {
|
|
9052
9103
|
return PALETTE_VERBS.filter((v) => fuzzyMatch(paletteQuery, v));
|
|
@@ -9298,7 +9349,7 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
9298
9349
|
rows.push(inboxLine, introsLine);
|
|
9299
9350
|
return rows;
|
|
9300
9351
|
}
|
|
9301
|
-
function
|
|
9352
|
+
function sourceIndexForVisible(visibleTarget) {
|
|
9302
9353
|
const name = PANES[active];
|
|
9303
9354
|
const raw = paneRows(name);
|
|
9304
9355
|
const q = filterByPane[active];
|
|
@@ -9306,14 +9357,16 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
9306
9357
|
for (let i = 0; i < raw.length; i++) {
|
|
9307
9358
|
if (substrMatch(q, raw[i])) {
|
|
9308
9359
|
visibleIdx++;
|
|
9309
|
-
if (visibleIdx ===
|
|
9360
|
+
if (visibleIdx === visibleTarget) return i;
|
|
9310
9361
|
}
|
|
9311
9362
|
}
|
|
9312
9363
|
return -1;
|
|
9313
9364
|
}
|
|
9314
|
-
function
|
|
9365
|
+
function activeSourceIndex() {
|
|
9366
|
+
return sourceIndexForVisible(offsetByPane[active]);
|
|
9367
|
+
}
|
|
9368
|
+
function activateRow(idx = activeSourceIndex()) {
|
|
9315
9369
|
const name = PANES[active];
|
|
9316
|
-
const idx = activeSourceIndex();
|
|
9317
9370
|
if (idx < 0) return;
|
|
9318
9371
|
if (name === "Jobs") {
|
|
9319
9372
|
const st = listState.Jobs;
|
|
@@ -9383,6 +9436,7 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
9383
9436
|
const q = filterByPane[active];
|
|
9384
9437
|
return paneRows(PANES[active]).filter((r) => substrMatch(q, r));
|
|
9385
9438
|
}
|
|
9439
|
+
const NAV_WIDTH = 16;
|
|
9386
9440
|
function bodyRegion() {
|
|
9387
9441
|
const rows = renderer.rows;
|
|
9388
9442
|
const top = 2;
|
|
@@ -9430,7 +9484,7 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
9430
9484
|
return;
|
|
9431
9485
|
}
|
|
9432
9486
|
const buf = createBuffer(rows, cols);
|
|
9433
|
-
const navWidth =
|
|
9487
|
+
const navWidth = NAV_WIDTH;
|
|
9434
9488
|
const mainCol = navWidth + 1;
|
|
9435
9489
|
const mainWidth = cols - mainCol;
|
|
9436
9490
|
const { top: bodyTop, bottom: bodyBottom, listTop, viewH } = bodyRegion();
|
|
@@ -9529,6 +9583,7 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
9529
9583
|
"\u2190 / \u2192 previous / next pane",
|
|
9530
9584
|
"Tab cycle pane forward",
|
|
9531
9585
|
"Shift+Tab cycle pane backward",
|
|
9586
|
+
"click select section \xB7 wheel scroll",
|
|
9532
9587
|
"Ctrl+K / : open command palette",
|
|
9533
9588
|
"/ filter the active pane",
|
|
9534
9589
|
"? toggle this help",
|
|
@@ -9646,10 +9701,63 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
9646
9701
|
}
|
|
9647
9702
|
}
|
|
9648
9703
|
}
|
|
9704
|
+
function onClick(row, col) {
|
|
9705
|
+
if (mode !== "nav") return;
|
|
9706
|
+
const { top: bodyTop, bottom: bodyBottom, listTop, viewH } = bodyRegion();
|
|
9707
|
+
if (col < NAV_WIDTH) {
|
|
9708
|
+
const paneIdx = row - bodyTop;
|
|
9709
|
+
if (paneIdx >= 0 && paneIdx < PANES.length && row <= bodyBottom) active = paneIdx;
|
|
9710
|
+
return;
|
|
9711
|
+
}
|
|
9712
|
+
if (col > NAV_WIDTH && row >= listTop && row < listTop + viewH) {
|
|
9713
|
+
const visibleTarget = offsetByPane[active] + (row - listTop);
|
|
9714
|
+
activateRow(sourceIndexForVisible(visibleTarget));
|
|
9715
|
+
}
|
|
9716
|
+
}
|
|
9717
|
+
function handleMouse(seq) {
|
|
9718
|
+
const head = /^\x1b\[<(\d+);(\d+);(\d+)([Mm])/;
|
|
9719
|
+
let rest = seq;
|
|
9720
|
+
let m;
|
|
9721
|
+
while (m = head.exec(rest)) {
|
|
9722
|
+
const b = Number(m[1]);
|
|
9723
|
+
const col = Number(m[2]) - 1;
|
|
9724
|
+
const row = Number(m[3]) - 1;
|
|
9725
|
+
const press = m[4] === "M";
|
|
9726
|
+
rest = rest.slice(m[0].length);
|
|
9727
|
+
if (b === 64) {
|
|
9728
|
+
if (mode === "nav") scrollActive(-1);
|
|
9729
|
+
continue;
|
|
9730
|
+
}
|
|
9731
|
+
if (b === 65) {
|
|
9732
|
+
if (mode === "nav") scrollActive(1);
|
|
9733
|
+
continue;
|
|
9734
|
+
}
|
|
9735
|
+
if (press && (b & 3) === 0) onClick(row, col);
|
|
9736
|
+
}
|
|
9737
|
+
return rest;
|
|
9738
|
+
}
|
|
9649
9739
|
function onData(chunk) {
|
|
9650
9740
|
if (done) return;
|
|
9651
|
-
|
|
9741
|
+
let s = chunk.toString("utf8");
|
|
9652
9742
|
if (s === KEY_CTRL_C) return quit();
|
|
9743
|
+
if (mousePending) {
|
|
9744
|
+
const combined = mousePending + s;
|
|
9745
|
+
const wasEsc = mousePending === KEY_ESC;
|
|
9746
|
+
clearMousePending();
|
|
9747
|
+
if (wasEsc) {
|
|
9748
|
+
if (completesEscSequence(combined)) {
|
|
9749
|
+
s = combined;
|
|
9750
|
+
} else if (continuesSgrMouse(combined)) {
|
|
9751
|
+
mousePending = combined;
|
|
9752
|
+
armMouseFlush();
|
|
9753
|
+
return;
|
|
9754
|
+
} else if (mode !== "nav") {
|
|
9755
|
+
escToNav();
|
|
9756
|
+
}
|
|
9757
|
+
} else if (reassembles(combined)) {
|
|
9758
|
+
s = combined;
|
|
9759
|
+
}
|
|
9760
|
+
}
|
|
9653
9761
|
if (splashActive) {
|
|
9654
9762
|
splashActive = false;
|
|
9655
9763
|
if (splashTimer) {
|
|
@@ -9658,11 +9766,43 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
9658
9766
|
}
|
|
9659
9767
|
renderer.invalidate();
|
|
9660
9768
|
}
|
|
9661
|
-
if (s ===
|
|
9662
|
-
|
|
9769
|
+
if (s === "\x1B[") {
|
|
9770
|
+
mousePending = s;
|
|
9771
|
+
armMouseFlush();
|
|
9772
|
+
return;
|
|
9773
|
+
}
|
|
9774
|
+
if (s.length >= 3 && s.charCodeAt(0) === 27 && s[1] === "[" && s[2] === "<") {
|
|
9775
|
+
const remainder = handleMouse(s);
|
|
9776
|
+
if (remainder) {
|
|
9777
|
+
if (isIncompleteMousePrefix(remainder)) {
|
|
9778
|
+
mousePending = remainder;
|
|
9779
|
+
armMouseFlush();
|
|
9780
|
+
} else if (remainder !== s) {
|
|
9781
|
+
onData(Buffer.from(remainder, "utf8"));
|
|
9782
|
+
return;
|
|
9783
|
+
} else {
|
|
9784
|
+
const tail = s.replace(/^\x1b\[<[0-9;]*/, "");
|
|
9785
|
+
if (tail && tail !== s) {
|
|
9786
|
+
const escAt = tail.indexOf("\x1B");
|
|
9787
|
+
const keys = escAt === -1 ? tail : tail.slice(0, escAt);
|
|
9788
|
+
if (keys) dispatchKeys(keys);
|
|
9789
|
+
if (escAt !== -1) {
|
|
9790
|
+
onData(Buffer.from(tail.slice(escAt), "utf8"));
|
|
9791
|
+
return;
|
|
9792
|
+
}
|
|
9793
|
+
repaint();
|
|
9794
|
+
return;
|
|
9795
|
+
}
|
|
9796
|
+
}
|
|
9797
|
+
}
|
|
9663
9798
|
repaint();
|
|
9664
9799
|
return;
|
|
9665
9800
|
}
|
|
9801
|
+
if (s === KEY_ESC) {
|
|
9802
|
+
mousePending = KEY_ESC;
|
|
9803
|
+
armMouseFlush();
|
|
9804
|
+
return;
|
|
9805
|
+
}
|
|
9666
9806
|
if (s === KEY_SHIFT_TAB) {
|
|
9667
9807
|
if (mode === "nav") cycleFocus(-1);
|
|
9668
9808
|
repaint();
|
|
@@ -9710,6 +9850,7 @@ function runHubTui({ input = process.stdin, output = process.stdout, signals, de
|
|
|
9710
9850
|
clearTimeout(splashTimer);
|
|
9711
9851
|
splashTimer = null;
|
|
9712
9852
|
}
|
|
9853
|
+
clearMousePending();
|
|
9713
9854
|
try {
|
|
9714
9855
|
input.removeListener("data", onData);
|
|
9715
9856
|
} catch {
|
package/dist/bin/jpi-inbox.js
CHANGED
|
@@ -4029,9 +4029,9 @@ var init_keytar = __esm({
|
|
|
4029
4029
|
}
|
|
4030
4030
|
});
|
|
4031
4031
|
|
|
4032
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
4032
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
4033
4033
|
var require_keytar = __commonJS({
|
|
4034
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
4034
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
4035
4035
|
"use strict";
|
|
4036
4036
|
init_keytar();
|
|
4037
4037
|
try {
|
package/dist/bin/jpi-intro.js
CHANGED
|
@@ -1047,9 +1047,9 @@ var init_keytar = __esm({
|
|
|
1047
1047
|
}
|
|
1048
1048
|
});
|
|
1049
1049
|
|
|
1050
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
1050
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
1051
1051
|
var require_keytar = __commonJS({
|
|
1052
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
1052
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
1053
1053
|
"use strict";
|
|
1054
1054
|
init_keytar();
|
|
1055
1055
|
try {
|
package/dist/bin/jpi-jobs.js
CHANGED
|
@@ -7239,9 +7239,9 @@ var init_keytar = __esm({
|
|
|
7239
7239
|
}
|
|
7240
7240
|
});
|
|
7241
7241
|
|
|
7242
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
7242
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
7243
7243
|
var require_keytar = __commonJS({
|
|
7244
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
7244
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
7245
7245
|
"use strict";
|
|
7246
7246
|
init_keytar();
|
|
7247
7247
|
try {
|
package/dist/bin/jpi-learn.js
CHANGED
|
@@ -1259,9 +1259,9 @@ var init_keytar = __esm({
|
|
|
1259
1259
|
}
|
|
1260
1260
|
});
|
|
1261
1261
|
|
|
1262
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
1262
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
1263
1263
|
var require_keytar = __commonJS({
|
|
1264
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
1264
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
1265
1265
|
"use strict";
|
|
1266
1266
|
init_keytar();
|
|
1267
1267
|
try {
|
package/dist/bin/jpi-login.js
CHANGED
|
@@ -75,9 +75,9 @@ var init_keytar = __esm({
|
|
|
75
75
|
}
|
|
76
76
|
});
|
|
77
77
|
|
|
78
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
78
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
79
79
|
var require_keytar = __commonJS({
|
|
80
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
80
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
81
81
|
"use strict";
|
|
82
82
|
init_keytar();
|
|
83
83
|
try {
|
package/dist/bin/jpi-profile.js
CHANGED
|
@@ -997,9 +997,9 @@ var init_keytar = __esm({
|
|
|
997
997
|
}
|
|
998
998
|
});
|
|
999
999
|
|
|
1000
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
1000
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
1001
1001
|
var require_keytar = __commonJS({
|
|
1002
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
1002
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
1003
1003
|
"use strict";
|
|
1004
1004
|
init_keytar();
|
|
1005
1005
|
try {
|
package/dist/bin/jpi-refresh.js
CHANGED
|
@@ -7329,9 +7329,9 @@ var init_keytar = __esm({
|
|
|
7329
7329
|
}
|
|
7330
7330
|
});
|
|
7331
7331
|
|
|
7332
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
7332
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
7333
7333
|
var require_keytar = __commonJS({
|
|
7334
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
7334
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
7335
7335
|
"use strict";
|
|
7336
7336
|
init_keytar();
|
|
7337
7337
|
try {
|
package/dist/bin/jpi-save.js
CHANGED
|
@@ -997,9 +997,9 @@ var init_keytar = __esm({
|
|
|
997
997
|
}
|
|
998
998
|
});
|
|
999
999
|
|
|
1000
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
1000
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
1001
1001
|
var require_keytar = __commonJS({
|
|
1002
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
1002
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
1003
1003
|
"use strict";
|
|
1004
1004
|
init_keytar();
|
|
1005
1005
|
try {
|
package/dist/bin/jpi-sync.js
CHANGED
|
@@ -997,9 +997,9 @@ var init_keytar = __esm({
|
|
|
997
997
|
}
|
|
998
998
|
});
|
|
999
999
|
|
|
1000
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
1000
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
1001
1001
|
var require_keytar = __commonJS({
|
|
1002
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
1002
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
1003
1003
|
"use strict";
|
|
1004
1004
|
init_keytar();
|
|
1005
1005
|
try {
|
|
@@ -1876,9 +1876,9 @@ var init_keytar = __esm({
|
|
|
1876
1876
|
}
|
|
1877
1877
|
});
|
|
1878
1878
|
|
|
1879
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
1879
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
1880
1880
|
var require_keytar = __commonJS({
|
|
1881
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
1881
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
1882
1882
|
"use strict";
|
|
1883
1883
|
init_keytar();
|
|
1884
1884
|
try {
|
package/dist/bin/tui-core.js
CHANGED
|
@@ -3,6 +3,8 @@ var HIDE_CURSOR = "\x1B[?25l";
|
|
|
3
3
|
var SHOW_CURSOR = "\x1B[?25h";
|
|
4
4
|
var ENTER_ALT = "\x1B[?1049h";
|
|
5
5
|
var EXIT_ALT = "\x1B[?1049l";
|
|
6
|
+
var MOUSE_ON = "\x1B[?1000h\x1B[?1006h";
|
|
7
|
+
var MOUSE_OFF = "\x1B[?1006l\x1B[?1000l";
|
|
6
8
|
var CLEAR = "\x1B[2J\x1B[H";
|
|
7
9
|
var INVERSE = "\x1B[7m";
|
|
8
10
|
var RESET = "\x1B[0m";
|
|
@@ -36,7 +38,8 @@ function createRuntime({
|
|
|
36
38
|
input = typeof process !== "undefined" ? process.stdin : void 0,
|
|
37
39
|
output = typeof process !== "undefined" ? process.stdout : void 0,
|
|
38
40
|
signals = typeof process !== "undefined" ? process : void 0,
|
|
39
|
-
exit = (code) => process.exit(code)
|
|
41
|
+
exit = (code) => process.exit(code),
|
|
42
|
+
mouse = false
|
|
40
43
|
} = {}) {
|
|
41
44
|
let entered = false;
|
|
42
45
|
let cleaned = false;
|
|
@@ -64,7 +67,8 @@ function createRuntime({
|
|
|
64
67
|
} catch {
|
|
65
68
|
}
|
|
66
69
|
try {
|
|
67
|
-
if (output && typeof output.write === "function")
|
|
70
|
+
if (output && typeof output.write === "function")
|
|
71
|
+
output.write((mouse ? MOUSE_OFF : "") + SHOW_CURSOR + EXIT_ALT);
|
|
68
72
|
} catch {
|
|
69
73
|
}
|
|
70
74
|
}
|
|
@@ -99,7 +103,8 @@ function createRuntime({
|
|
|
99
103
|
signals.on("unhandledRejection", onUncaught);
|
|
100
104
|
signals.on("exit", onExitEvt);
|
|
101
105
|
}
|
|
102
|
-
if (output && typeof output.write === "function")
|
|
106
|
+
if (output && typeof output.write === "function")
|
|
107
|
+
output.write(ENTER_ALT + HIDE_CURSOR + (mouse ? MOUSE_ON : ""));
|
|
103
108
|
}
|
|
104
109
|
return {
|
|
105
110
|
enter,
|
|
@@ -416,6 +421,8 @@ export {
|
|
|
416
421
|
KEY_RIGHT,
|
|
417
422
|
KEY_TAB,
|
|
418
423
|
KEY_UP,
|
|
424
|
+
MOUSE_OFF,
|
|
425
|
+
MOUSE_ON,
|
|
419
426
|
RESET,
|
|
420
427
|
SHOW_CURSOR,
|
|
421
428
|
clampOffset,
|
package/dist/src/chat-client.js
CHANGED
|
@@ -41,9 +41,9 @@ var init_keytar = __esm({
|
|
|
41
41
|
}
|
|
42
42
|
});
|
|
43
43
|
|
|
44
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
44
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
45
45
|
var require_keytar = __commonJS({
|
|
46
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
46
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
47
47
|
"use strict";
|
|
48
48
|
init_keytar();
|
|
49
49
|
try {
|
|
@@ -41,9 +41,9 @@ var init_keytar = __esm({
|
|
|
41
41
|
}
|
|
42
42
|
});
|
|
43
43
|
|
|
44
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
44
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
45
45
|
var require_keytar = __commonJS({
|
|
46
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
46
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
47
47
|
"use strict";
|
|
48
48
|
init_keytar();
|
|
49
49
|
try {
|
package/dist/src/github-auth.js
CHANGED
|
@@ -41,9 +41,9 @@ var init_keytar = __esm({
|
|
|
41
41
|
}
|
|
42
42
|
});
|
|
43
43
|
|
|
44
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
44
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
45
45
|
var require_keytar = __commonJS({
|
|
46
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
46
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
47
47
|
"use strict";
|
|
48
48
|
init_keytar();
|
|
49
49
|
try {
|
package/dist/src/intro.js
CHANGED
|
@@ -1007,9 +1007,9 @@ var init_keytar = __esm({
|
|
|
1007
1007
|
}
|
|
1008
1008
|
});
|
|
1009
1009
|
|
|
1010
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
1010
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
1011
1011
|
var require_keytar = __commonJS({
|
|
1012
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
1012
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
1013
1013
|
"use strict";
|
|
1014
1014
|
init_keytar();
|
|
1015
1015
|
try {
|
package/dist/src/profile.js
CHANGED
|
@@ -41,9 +41,9 @@ var init_keytar = __esm({
|
|
|
41
41
|
}
|
|
42
42
|
});
|
|
43
43
|
|
|
44
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
44
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
45
45
|
var require_keytar = __commonJS({
|
|
46
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
46
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
47
47
|
"use strict";
|
|
48
48
|
init_keytar();
|
|
49
49
|
try {
|
package/dist/src/trajectory.js
CHANGED
|
@@ -1323,9 +1323,9 @@ var init_keytar = __esm({
|
|
|
1323
1323
|
}
|
|
1324
1324
|
});
|
|
1325
1325
|
|
|
1326
|
-
// node-file:/Users/ericgang/job-placement-inline
|
|
1326
|
+
// node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node
|
|
1327
1327
|
var require_keytar = __commonJS({
|
|
1328
|
-
"node-file:/Users/ericgang/job-placement-inline
|
|
1328
|
+
"node-file:/Users/ericgang/job-placement-inline/node_modules/keytar/build/Release/keytar.node"(exports, module) {
|
|
1329
1329
|
"use strict";
|
|
1330
1330
|
init_keytar();
|
|
1331
1331
|
try {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "terminalhire",
|
|
3
|
-
"version": "0.24.
|
|
3
|
+
"version": "0.24.1",
|
|
4
4
|
"description": "Local-first job matching for developers — ambient job matches in the Claude Code spinner. Matching runs on your machine; your profile never leaves it.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|