terminalhire 0.19.0 → 0.19.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/jpi-chat-read.js +2 -1
- package/dist/bin/jpi-chat.js +2 -1
- package/dist/bin/jpi-config.js +2 -1
- package/dist/bin/jpi-contribute.js +2 -1
- package/dist/bin/jpi-dispatch.js +87 -63
- package/dist/bin/jpi-inbox.js +2 -1
- package/dist/bin/jpi-link.js +2 -1
- package/dist/bin/jpi-login.js +2 -1
- package/dist/bin/jpi-mcp.js +2 -1
- package/dist/bin/jpi-refresh.js +3 -2
- package/dist/bin/peer-connect-prompt.js +2 -1
- package/dist/src/config.js +2 -1
- package/dist/src/link.js +2 -1
- package/package.json +1 -1
package/dist/bin/jpi-chat.js
CHANGED
package/dist/bin/jpi-config.js
CHANGED
|
@@ -1646,7 +1646,8 @@ var DEFAULT_CONFIG = {
|
|
|
1646
1646
|
inboundNudgeDisclosed: false,
|
|
1647
1647
|
contributeEnabled: false,
|
|
1648
1648
|
contributePrompted: false,
|
|
1649
|
-
betaOptIn: false
|
|
1649
|
+
betaOptIn: false,
|
|
1650
|
+
lastFullFeedbackAt: null
|
|
1650
1651
|
};
|
|
1651
1652
|
function readConfig() {
|
|
1652
1653
|
try {
|
package/dist/bin/jpi-dispatch.js
CHANGED
|
@@ -182,7 +182,8 @@ var init_config = __esm({
|
|
|
182
182
|
inboundNudgeDisclosed: false,
|
|
183
183
|
contributeEnabled: false,
|
|
184
184
|
contributePrompted: false,
|
|
185
|
-
betaOptIn: false
|
|
185
|
+
betaOptIn: false,
|
|
186
|
+
lastFullFeedbackAt: null
|
|
186
187
|
};
|
|
187
188
|
}
|
|
188
189
|
});
|
|
@@ -38593,7 +38594,7 @@ var init_match_slots = __esm({
|
|
|
38593
38594
|
BOUNTY_SLOTS = 3;
|
|
38594
38595
|
BOUNTY_MIN_MATCH = 0.5;
|
|
38595
38596
|
INTEREST_CONTRIBUTE_SLOTS = 1;
|
|
38596
|
-
INTEREST_SLOT_LABEL = "
|
|
38597
|
+
INTEREST_SLOT_LABEL = "Stretch";
|
|
38597
38598
|
CONTRIBUTE_SLOTS = 5;
|
|
38598
38599
|
CONTRIBUTE_SLOTS_THIN = 8;
|
|
38599
38600
|
ROLE_STABLE_MAX = 8;
|
|
@@ -39089,49 +39090,53 @@ import { createInterface as createInterface13 } from "readline";
|
|
|
39089
39090
|
async function run23() {
|
|
39090
39091
|
const rl = createInterface13({ input: process.stdin, output: process.stdout });
|
|
39091
39092
|
const ask3 = (question) => new Promise((resolve2) => {
|
|
39092
|
-
|
|
39093
|
+
const onClose = () => resolve2(null);
|
|
39094
|
+
rl.once("close", onClose);
|
|
39093
39095
|
rl.question(question, (answer) => {
|
|
39094
|
-
|
|
39096
|
+
rl.removeListener("close", onClose);
|
|
39095
39097
|
resolve2((answer || "").trim());
|
|
39096
39098
|
});
|
|
39097
|
-
rl.once("close", () => {
|
|
39098
|
-
if (!answered) resolve2(null);
|
|
39099
|
-
});
|
|
39100
39099
|
});
|
|
39101
|
-
|
|
39102
|
-
|
|
39103
|
-
|
|
39104
|
-
|
|
39105
|
-
|
|
39106
|
-
|
|
39107
|
-
|
|
39108
|
-
|
|
39109
|
-
|
|
39110
|
-
|
|
39111
|
-
|
|
39112
|
-
|
|
39113
|
-
|
|
39114
|
-
|
|
39115
|
-
|
|
39116
|
-
|
|
39117
|
-
|
|
39118
|
-
|
|
39119
|
-
|
|
39120
|
-
|
|
39121
|
-
|
|
39122
|
-
|
|
39123
|
-
|
|
39124
|
-
|
|
39125
|
-
|
|
39126
|
-
|
|
39127
|
-
|
|
39128
|
-
|
|
39129
|
-
console.log("
|
|
39130
|
-
|
|
39131
|
-
|
|
39100
|
+
const alreadyActed = readConfig().betaOptIn === true;
|
|
39101
|
+
let listPublicly = false;
|
|
39102
|
+
if (!alreadyActed) {
|
|
39103
|
+
console.log("");
|
|
39104
|
+
console.log("\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510");
|
|
39105
|
+
console.log("\u2502 Welcome to the Terminalhire Beta \u2014 Founding Contributor \u2502");
|
|
39106
|
+
console.log("\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518");
|
|
39107
|
+
console.log("");
|
|
39108
|
+
console.log(` In a world where everyone's suddenly an "AI engineer," Terminalhire is`);
|
|
39109
|
+
console.log(" third-party-verified, hard-to-game proof you're real \u2014 not a r\xE9sum\xE9, a");
|
|
39110
|
+
console.log(" record of contributions accepted by people who don't know you.");
|
|
39111
|
+
console.log("");
|
|
39112
|
+
console.log(" You've been invited to help shape it while the core is still baking.");
|
|
39113
|
+
console.log("");
|
|
39114
|
+
console.log("The deal \u2014 two small asks, four real rewards.");
|
|
39115
|
+
console.log("");
|
|
39116
|
+
console.log(" Two asks:");
|
|
39117
|
+
console.log(" 1. Use it on real work and keep it installed \u2014 the honest test of");
|
|
39118
|
+
console.log(" whether it earns its place in your terminal.");
|
|
39119
|
+
console.log(" 2. When something breaks or annoys you, tell us: `terminalhire feedback`");
|
|
39120
|
+
console.log(" (2 minutes, goes straight to the founder).");
|
|
39121
|
+
console.log("");
|
|
39122
|
+
console.log(" Four rewards:");
|
|
39123
|
+
console.log(" \u2022 A Founding-Contributor mark on your credential.");
|
|
39124
|
+
console.log(" \u2022 A direct line to the founder \u2014 the person who ships the fix.");
|
|
39125
|
+
console.log(" \u2022 Bounties on the issues your feedback surfaces \u2014 get paid for the");
|
|
39126
|
+
console.log(" rough edges you find.");
|
|
39127
|
+
console.log(" \u2022 A spot on the founding-contributors wall.");
|
|
39128
|
+
console.log("");
|
|
39129
|
+
const join33 = await ask3(' Type "yes" to join the beta as a Founding Contributor (anything else cancels): ');
|
|
39130
|
+
if ((join33 || "").toLowerCase() !== "yes") {
|
|
39131
|
+
console.log("\n No problem \u2014 nothing was sent. Run `terminalhire beta` any time.\n");
|
|
39132
|
+
rl.close();
|
|
39133
|
+
return;
|
|
39134
|
+
}
|
|
39135
|
+
const listAns = await ask3(" List me publicly as a Founding Contributor? [y/N] (Enter = no): ");
|
|
39136
|
+
listPublicly = ["y", "yes"].includes((listAns || "").toLowerCase());
|
|
39137
|
+
} else {
|
|
39138
|
+
console.log("\n You've already opted in to the Terminalhire beta \u2014 checking your status\u2026");
|
|
39132
39139
|
}
|
|
39133
|
-
const listAns = await ask3(" List me publicly as a Founding Contributor? [y/N] (Enter = no): ");
|
|
39134
|
-
const listPublicly = ["y", "yes"].includes((listAns || "").toLowerCase());
|
|
39135
39140
|
rl.close();
|
|
39136
39141
|
const cookie = readWebSessionCookie();
|
|
39137
39142
|
if (!cookie) {
|
|
@@ -39144,7 +39149,9 @@ async function run23() {
|
|
|
39144
39149
|
res = await fetch(`${API_BASE}/api/beta/join`, {
|
|
39145
39150
|
method: "POST",
|
|
39146
39151
|
headers: { "Content-Type": "application/json", Cookie: `${GH_SESSION_COOKIE8}=${cookie}` },
|
|
39147
|
-
|
|
39152
|
+
// First run: the prompt-gathered consent. Re-run: the CONSTANT empty body —
|
|
39153
|
+
// a status re-check that carries no user-authored data (see RERUN_STATUS_BODY).
|
|
39154
|
+
body: JSON.stringify(alreadyActed ? RERUN_STATUS_BODY : { listPublicly }),
|
|
39148
39155
|
signal: AbortSignal.timeout(1e4)
|
|
39149
39156
|
});
|
|
39150
39157
|
} catch (err) {
|
|
@@ -39153,34 +39160,39 @@ async function run23() {
|
|
|
39153
39160
|
`);
|
|
39154
39161
|
return;
|
|
39155
39162
|
}
|
|
39156
|
-
if (res.status === 401) {
|
|
39157
|
-
console.log("\n Your linked web session
|
|
39163
|
+
if (res.status === 401 || res.status === 403) {
|
|
39164
|
+
console.log("\n Your linked web session isn't valid anymore.");
|
|
39158
39165
|
console.log(" Run `terminalhire link` to reconnect this terminal, then re-run.\n");
|
|
39159
39166
|
return;
|
|
39160
39167
|
}
|
|
39161
|
-
if (res.status
|
|
39162
|
-
console.log("\n The beta is invite-only right now \u2014 your GitHub login is not on the");
|
|
39163
|
-
console.log(" Founding-Contributor allowlist yet. Hang tight; it opens wider soon.\n");
|
|
39164
|
-
return;
|
|
39165
|
-
}
|
|
39166
|
-
if (!res.ok) {
|
|
39168
|
+
if (res.status !== 200 && res.status !== 202) {
|
|
39167
39169
|
console.error(`
|
|
39168
39170
|
Request failed: /api/beta/join returned ${res.status}.
|
|
39169
39171
|
`);
|
|
39170
39172
|
return;
|
|
39171
39173
|
}
|
|
39174
|
+
let status;
|
|
39172
39175
|
let memberNo;
|
|
39173
39176
|
try {
|
|
39174
39177
|
const data = await res.json();
|
|
39178
|
+
status = typeof data.status === "string" ? data.status : null;
|
|
39175
39179
|
memberNo = typeof data.memberNo === "number" ? data.memberNo : null;
|
|
39176
39180
|
} catch {
|
|
39177
39181
|
}
|
|
39182
|
+
if (status !== "active" && status !== "requested") {
|
|
39183
|
+
status = res.status === 202 ? "requested" : "active";
|
|
39184
|
+
}
|
|
39178
39185
|
writeConfig({ betaOptIn: true });
|
|
39186
|
+
if (status === "requested") {
|
|
39187
|
+
console.log("\n \u2713 You're on the list.");
|
|
39188
|
+
console.log(" Invites go out in small batches \u2014 run `terminalhire beta` anytime to check your status.\n");
|
|
39189
|
+
return;
|
|
39190
|
+
}
|
|
39179
39191
|
console.log(`
|
|
39180
39192
|
\u2713 Founding Contributor${memberNo !== null && memberNo !== void 0 ? ` #${memberNo}` : ""}`);
|
|
39181
39193
|
console.log(" Leave feedback any time: terminalhire feedback\n");
|
|
39182
39194
|
}
|
|
39183
|
-
var API_BASE, GH_SESSION_COOKIE8;
|
|
39195
|
+
var API_BASE, GH_SESSION_COOKIE8, RERUN_STATUS_BODY;
|
|
39184
39196
|
var init_jpi_beta = __esm({
|
|
39185
39197
|
"bin/jpi-beta.js"() {
|
|
39186
39198
|
"use strict";
|
|
@@ -39188,6 +39200,7 @@ var init_jpi_beta = __esm({
|
|
|
39188
39200
|
init_config();
|
|
39189
39201
|
API_BASE = process.env["TERMINALHIRE_API_URL"] || "https://terminalhire.com";
|
|
39190
39202
|
GH_SESSION_COOKIE8 = "__jpi_gh_session";
|
|
39203
|
+
RERUN_STATUS_BODY = {};
|
|
39191
39204
|
}
|
|
39192
39205
|
});
|
|
39193
39206
|
|
|
@@ -39215,18 +39228,22 @@ function readLocalVersion2() {
|
|
|
39215
39228
|
async function run24() {
|
|
39216
39229
|
const rl = createInterface14({ input: process.stdin, output: process.stdout });
|
|
39217
39230
|
const ask3 = (question) => new Promise((resolve2) => {
|
|
39218
|
-
|
|
39231
|
+
const onClose = () => resolve2(null);
|
|
39232
|
+
rl.once("close", onClose);
|
|
39219
39233
|
rl.question(question, (answer) => {
|
|
39220
|
-
|
|
39234
|
+
rl.removeListener("close", onClose);
|
|
39221
39235
|
resolve2((answer || "").trim());
|
|
39222
39236
|
});
|
|
39223
|
-
rl.once("close", () => {
|
|
39224
|
-
if (!answered) resolve2(null);
|
|
39225
|
-
});
|
|
39226
39237
|
});
|
|
39238
|
+
const lastFull = readConfig().lastFullFeedbackAt;
|
|
39239
|
+
const fullDue = !lastFull || Date.now() - Date.parse(lastFull) >= FULL_FORM_INTERVAL_MS;
|
|
39240
|
+
const fullForm = process.argv.includes("--full") || fullDue;
|
|
39227
39241
|
console.log("");
|
|
39228
39242
|
console.log(" terminalhire feedback \u2014 goes straight to the founder. Everything below is");
|
|
39229
39243
|
console.log(" what YOU type; the only thing auto-attached is your CLI version + OS.");
|
|
39244
|
+
if (!fullForm) {
|
|
39245
|
+
console.log(" (quick form \u2014 run `terminalhire feedback --full` for ratings + the long form)");
|
|
39246
|
+
}
|
|
39230
39247
|
console.log("");
|
|
39231
39248
|
console.log(" What is this about?");
|
|
39232
39249
|
CATEGORY_LABELS.forEach((label, i) => console.log(` ${i + 1}) ${label}`));
|
|
@@ -39240,15 +39257,19 @@ async function run24() {
|
|
|
39240
39257
|
const category = CATEGORIES[catIdx - 1];
|
|
39241
39258
|
const tryingToDo = await ask3(" What were you trying to do? (Enter to skip): ");
|
|
39242
39259
|
const expectedVsActual = await ask3(" What did you expect vs. what happened? (Enter to skip): ");
|
|
39243
|
-
console.log(" Rate 1\u20135 (Enter to skip any):");
|
|
39244
39260
|
const ratings = {};
|
|
39245
|
-
|
|
39246
|
-
|
|
39247
|
-
|
|
39248
|
-
|
|
39261
|
+
let almostQuit = null;
|
|
39262
|
+
let keepInstalled = null;
|
|
39263
|
+
if (fullForm) {
|
|
39264
|
+
console.log(" Rate 1\u20135 (Enter to skip any):");
|
|
39265
|
+
for (const key of RATING_KEYS) {
|
|
39266
|
+
const ans = await ask3(` ${key}: `);
|
|
39267
|
+
const n = Number.parseInt(ans || "", 10);
|
|
39268
|
+
if (n >= 1 && n <= 5) ratings[key] = n;
|
|
39269
|
+
}
|
|
39270
|
+
almostQuit = await ask3(" What almost made you quit / uninstall? (Enter to skip): ");
|
|
39271
|
+
keepInstalled = await ask3(" Will you keep it installed? y/n + why (Enter to skip): ");
|
|
39249
39272
|
}
|
|
39250
|
-
const almostQuit = await ask3(" What almost made you quit / uninstall? (Enter to skip): ");
|
|
39251
|
-
const keepInstalled = await ask3(" Will you keep it installed? y/n + why (Enter to skip): ");
|
|
39252
39273
|
const payload = { category };
|
|
39253
39274
|
if (tryingToDo) payload.tryingToDo = tryingToDo;
|
|
39254
39275
|
if (expectedVsActual) payload.expectedVsActual = expectedVsActual;
|
|
@@ -39310,13 +39331,16 @@ async function run24() {
|
|
|
39310
39331
|
`);
|
|
39311
39332
|
return;
|
|
39312
39333
|
}
|
|
39334
|
+
if (fullForm) writeConfig({ lastFullFeedbackAt: (/* @__PURE__ */ new Date()).toISOString() });
|
|
39313
39335
|
console.log("\n \u2713 Sent \u2014 thank you. This goes straight to the founder.\n");
|
|
39314
39336
|
}
|
|
39315
|
-
var __dirname6, API_BASE2, GH_SESSION_COOKIE9, CATEGORIES, CATEGORY_LABELS, RATING_KEYS;
|
|
39337
|
+
var FULL_FORM_INTERVAL_MS, __dirname6, API_BASE2, GH_SESSION_COOKIE9, CATEGORIES, CATEGORY_LABELS, RATING_KEYS;
|
|
39316
39338
|
var init_jpi_feedback = __esm({
|
|
39317
39339
|
"bin/jpi-feedback.js"() {
|
|
39318
39340
|
"use strict";
|
|
39319
39341
|
init_web_session();
|
|
39342
|
+
init_config();
|
|
39343
|
+
FULL_FORM_INTERVAL_MS = 7 * 24 * 60 * 60 * 1e3;
|
|
39320
39344
|
__dirname6 = fileURLToPath7(new URL(".", import.meta.url));
|
|
39321
39345
|
API_BASE2 = process.env["TERMINALHIRE_API_URL"] || "https://terminalhire.com";
|
|
39322
39346
|
GH_SESSION_COOKIE9 = "__jpi_gh_session";
|
package/dist/bin/jpi-inbox.js
CHANGED
package/dist/bin/jpi-link.js
CHANGED
package/dist/bin/jpi-login.js
CHANGED
package/dist/bin/jpi-mcp.js
CHANGED
|
@@ -22178,7 +22178,8 @@ var init_config = __esm({
|
|
|
22178
22178
|
inboundNudgeDisclosed: false,
|
|
22179
22179
|
contributeEnabled: false,
|
|
22180
22180
|
contributePrompted: false,
|
|
22181
|
-
betaOptIn: false
|
|
22181
|
+
betaOptIn: false,
|
|
22182
|
+
lastFullFeedbackAt: null
|
|
22182
22183
|
};
|
|
22183
22184
|
}
|
|
22184
22185
|
});
|
package/dist/bin/jpi-refresh.js
CHANGED
|
@@ -120,7 +120,8 @@ var init_config = __esm({
|
|
|
120
120
|
inboundNudgeDisclosed: false,
|
|
121
121
|
contributeEnabled: false,
|
|
122
122
|
contributePrompted: false,
|
|
123
|
-
betaOptIn: false
|
|
123
|
+
betaOptIn: false,
|
|
124
|
+
lastFullFeedbackAt: null
|
|
124
125
|
};
|
|
125
126
|
}
|
|
126
127
|
});
|
|
@@ -8414,7 +8415,7 @@ var TOTAL_SLOTS = 25;
|
|
|
8414
8415
|
var BOUNTY_SLOTS = 3;
|
|
8415
8416
|
var BOUNTY_MIN_MATCH = 0.5;
|
|
8416
8417
|
var INTEREST_CONTRIBUTE_SLOTS = 1;
|
|
8417
|
-
var INTEREST_SLOT_LABEL = "
|
|
8418
|
+
var INTEREST_SLOT_LABEL = "Stretch";
|
|
8418
8419
|
var CONTRIBUTE_SLOTS = 5;
|
|
8419
8420
|
var CONTRIBUTE_SLOTS_THIN = 8;
|
|
8420
8421
|
var ROLE_STABLE_MAX = 8;
|
package/dist/src/config.js
CHANGED
package/dist/src/link.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "terminalhire",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.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",
|