terminalhire 0.42.31 → 0.42.32
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 +12 -3
- package/dist/bin/founder-verdict-sync.js +25 -8
- package/dist/bin/jpi-bounties.js +13 -4
- package/dist/bin/jpi-claim.js +693 -171
- package/dist/bin/jpi-contribute.js +13 -4
- package/dist/bin/jpi-dispatch.js +840 -318
- package/dist/bin/jpi-hub.js +13 -4
- package/dist/bin/jpi-mcp.js +765 -243
- package/dist/bin/jpi-refresh.js +12 -3
- package/dist/bin/jpi-repo.js +13 -4
- package/dist/bin/jpi-run.js +593 -100
- package/dist/src/claims.js +12 -3
- package/dist/src/repo-experience.js +1 -1
- package/package.json +1 -1
|
@@ -304,7 +304,7 @@ function removeClaimIfStakeMatches(id, expectedStakePostedAt) {
|
|
|
304
304
|
function countAwaitingFounderApproval(claims = readClaims()) {
|
|
305
305
|
try {
|
|
306
306
|
return claims.filter(
|
|
307
|
-
(c) => c.approval?.mode === "approval-only" && c.approval?.state === "pending"
|
|
307
|
+
(c) => !TERMINAL_STATES.has(c.state) && c.approval?.mode === "approval-only" && c.approval?.state === "pending"
|
|
308
308
|
).length;
|
|
309
309
|
} catch {
|
|
310
310
|
return 0;
|
|
@@ -313,8 +313,17 @@ function countAwaitingFounderApproval(claims = readClaims()) {
|
|
|
313
313
|
function acceptedPRRate(claims = readClaims()) {
|
|
314
314
|
const total = claims.length;
|
|
315
315
|
const merged = claims.filter((c) => c.state === "merged").length;
|
|
316
|
-
const
|
|
317
|
-
|
|
316
|
+
const released = claims.filter(
|
|
317
|
+
(c) => c.state === "abandoned" && c.serverReleased === true && !c.posterVerdict
|
|
318
|
+
).length;
|
|
319
|
+
const decided = claims.filter((c) => DECIDED_STATES.has(c.state)).length - released;
|
|
320
|
+
return {
|
|
321
|
+
merged,
|
|
322
|
+
decided,
|
|
323
|
+
inFlight: total - decided - released,
|
|
324
|
+
total,
|
|
325
|
+
rate: decided === 0 ? 0 : merged / decided
|
|
326
|
+
};
|
|
318
327
|
}
|
|
319
328
|
function formatAcceptedPRRate(rate) {
|
|
320
329
|
const inFlight = rate.inFlight > 0 ? ` \xB7 ${rate.inFlight} in flight` : "";
|
|
@@ -113,25 +113,33 @@ async function fetchFounderVerdicts(pushToken, fetchImpl = fetch) {
|
|
|
113
113
|
const verdicts = body.verdicts.filter(
|
|
114
114
|
(v) => v && typeof v.claimId === "string" && v.claimId !== "" && (v.verdict === "accepted" || v.verdict === "rejected")
|
|
115
115
|
);
|
|
116
|
-
|
|
116
|
+
const releases = (Array.isArray(body.releases) ? body.releases : []).filter(
|
|
117
|
+
(r) => r && typeof r.claimId === "string" && r.claimId !== "" && typeof r.at === "string" && Number.isFinite(Date.parse(r.at))
|
|
118
|
+
);
|
|
119
|
+
return {
|
|
120
|
+
verdicts,
|
|
121
|
+
latestAt: typeof body.latestAt === "string" ? body.latestAt : null,
|
|
122
|
+
...releases.length ? { releases } : {}
|
|
123
|
+
};
|
|
117
124
|
} catch {
|
|
118
125
|
return null;
|
|
119
126
|
}
|
|
120
127
|
}
|
|
121
|
-
function planVerdictTransitions(claims, verdicts, nextPolledState) {
|
|
128
|
+
function planVerdictTransitions(claims, verdicts, nextPolledState, releases = []) {
|
|
122
129
|
if (!Array.isArray(claims) || !Array.isArray(verdicts)) return [];
|
|
123
130
|
const byClaimId = /* @__PURE__ */ new Map();
|
|
124
131
|
for (const v of verdicts) {
|
|
125
132
|
if (v && typeof v.claimId === "string" && v.claimId !== "") byClaimId.set(v.claimId, v);
|
|
126
133
|
}
|
|
134
|
+
const released = new Set(releases.map((r) => r.claimId));
|
|
127
135
|
const plan = [];
|
|
128
136
|
for (const c of claims) {
|
|
129
137
|
const claimId = c?.approval?.claimId;
|
|
130
138
|
if (!claimId) continue;
|
|
131
139
|
const v = byClaimId.get(claimId);
|
|
132
|
-
if (!v) continue;
|
|
140
|
+
if (!v && !released.has(claimId)) continue;
|
|
133
141
|
if (TERMINAL.has(c.state)) continue;
|
|
134
|
-
const to = verdictState(v.verdict);
|
|
142
|
+
const to = v ? verdictState(v.verdict) : "abandoned";
|
|
135
143
|
const next = nextPolledState(c.state, to);
|
|
136
144
|
if (next === c.state) continue;
|
|
137
145
|
plan.push({
|
|
@@ -139,8 +147,8 @@ function planVerdictTransitions(claims, verdicts, nextPolledState) {
|
|
|
139
147
|
claimId,
|
|
140
148
|
from: c.state,
|
|
141
149
|
to: next,
|
|
142
|
-
verdict: v.verdict,
|
|
143
|
-
settled: v
|
|
150
|
+
...v ? { verdict: v.verdict } : { serverReleased: true },
|
|
151
|
+
settled: v?.settled === true,
|
|
144
152
|
amountUSD: typeof c.amountUSD === "number" ? c.amountUSD : null,
|
|
145
153
|
title: typeof c.title === "string" ? c.title : ""
|
|
146
154
|
});
|
|
@@ -149,6 +157,7 @@ function planVerdictTransitions(claims, verdicts, nextPolledState) {
|
|
|
149
157
|
}
|
|
150
158
|
function buildVerdictNotice(t) {
|
|
151
159
|
if (!t || typeof t.to !== "string") return null;
|
|
160
|
+
if (t.serverReleased === true) return " claim released \u2014 this request is closed";
|
|
152
161
|
const amount = typeof t.amountUSD === "number" && t.amountUSD > 0 ? `$${t.amountUSD}` : null;
|
|
153
162
|
if (t.verdict === "rejected") {
|
|
154
163
|
return ` \u2717 poster rejected${amount ? ` \u2014 ${amount}` : ""} \xB7 claim moved to ${t.to}`;
|
|
@@ -178,11 +187,19 @@ async function syncFounderVerdicts({
|
|
|
178
187
|
if (!pushToken) return quiet;
|
|
179
188
|
const res = await fetchFounderVerdicts(pushToken, fetchImpl);
|
|
180
189
|
if (!res) return { checked: false, unavailable: true, applied: [] };
|
|
181
|
-
const plan = planVerdictTransitions(
|
|
190
|
+
const plan = planVerdictTransitions(
|
|
191
|
+
founderTargets,
|
|
192
|
+
res.verdicts,
|
|
193
|
+
claimsModule.nextPolledState,
|
|
194
|
+
res.releases
|
|
195
|
+
);
|
|
182
196
|
const applied = [];
|
|
183
197
|
for (const t of plan) {
|
|
184
198
|
try {
|
|
185
|
-
claimsModule.updateClaim(t.id, {
|
|
199
|
+
claimsModule.updateClaim(t.id, {
|
|
200
|
+
state: t.to,
|
|
201
|
+
...t.serverReleased === true ? { serverReleased: true } : { posterVerdict: t.verdict }
|
|
202
|
+
});
|
|
186
203
|
applied.push(t);
|
|
187
204
|
const line = buildVerdictNotice(t);
|
|
188
205
|
if (line) log(line);
|
package/dist/bin/jpi-bounties.js
CHANGED
|
@@ -11362,7 +11362,7 @@ async function continuityForRepo(repoFullName, claims) {
|
|
|
11362
11362
|
}
|
|
11363
11363
|
function calibrationSummary(claims, repo) {
|
|
11364
11364
|
const resolved = claims.filter(
|
|
11365
|
-
(c) => c.repoFullName === repo && (c.state === "merged" || c.state === "abandoned") && c.review?.acceptanceScore != null
|
|
11365
|
+
(c) => c.repoFullName === repo && (c.state === "merged" || c.state === "abandoned") && !(c.state === "abandoned" && c.serverReleased === true && !c.posterVerdict) && c.review?.acceptanceScore != null
|
|
11366
11366
|
);
|
|
11367
11367
|
const n = resolved.length;
|
|
11368
11368
|
if (n < 5) return { available: false, n, text: null };
|
|
@@ -11651,7 +11651,7 @@ function removeClaimIfStakeMatches(id, expectedStakePostedAt) {
|
|
|
11651
11651
|
function countAwaitingFounderApproval(claims = readClaims()) {
|
|
11652
11652
|
try {
|
|
11653
11653
|
return claims.filter(
|
|
11654
|
-
(c) => c.approval?.mode === "approval-only" && c.approval?.state === "pending"
|
|
11654
|
+
(c) => !TERMINAL_STATES.has(c.state) && c.approval?.mode === "approval-only" && c.approval?.state === "pending"
|
|
11655
11655
|
).length;
|
|
11656
11656
|
} catch {
|
|
11657
11657
|
return 0;
|
|
@@ -11660,8 +11660,17 @@ function countAwaitingFounderApproval(claims = readClaims()) {
|
|
|
11660
11660
|
function acceptedPRRate(claims = readClaims()) {
|
|
11661
11661
|
const total = claims.length;
|
|
11662
11662
|
const merged = claims.filter((c) => c.state === "merged").length;
|
|
11663
|
-
const
|
|
11664
|
-
|
|
11663
|
+
const released = claims.filter(
|
|
11664
|
+
(c) => c.state === "abandoned" && c.serverReleased === true && !c.posterVerdict
|
|
11665
|
+
).length;
|
|
11666
|
+
const decided = claims.filter((c) => DECIDED_STATES.has(c.state)).length - released;
|
|
11667
|
+
return {
|
|
11668
|
+
merged,
|
|
11669
|
+
decided,
|
|
11670
|
+
inFlight: total - decided - released,
|
|
11671
|
+
total,
|
|
11672
|
+
rate: decided === 0 ? 0 : merged / decided
|
|
11673
|
+
};
|
|
11665
11674
|
}
|
|
11666
11675
|
function formatAcceptedPRRate(rate) {
|
|
11667
11676
|
const inFlight = rate.inFlight > 0 ? ` \xB7 ${rate.inFlight} in flight` : "";
|