@renaiss-shipflow/cli 0.7.4 → 0.7.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +7 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +64 -12
- package/dist/client.js.map +1 -1
- package/dist/commands/helpers.d.ts +32 -0
- package/dist/commands/helpers.d.ts.map +1 -1
- package/dist/commands/helpers.js +55 -1
- package/dist/commands/helpers.js.map +1 -1
- package/dist/commands/inbox.d.ts +9 -0
- package/dist/commands/inbox.d.ts.map +1 -1
- package/dist/commands/inbox.js +24 -4
- package/dist/commands/inbox.js.map +1 -1
- package/dist/commands/issue.js +12 -23
- package/dist/commands/issue.js.map +1 -1
- package/dist/commands/pr.d.ts.map +1 -1
- package/dist/commands/pr.js +67 -43
- package/dist/commands/pr.js.map +1 -1
- package/dist/commands/regression.d.ts +5 -1
- package/dist/commands/regression.d.ts.map +1 -1
- package/dist/commands/regression.js +44 -14
- package/dist/commands/regression.js.map +1 -1
- package/dist/escalation-format.d.ts +31 -0
- package/dist/escalation-format.d.ts.map +1 -0
- package/dist/escalation-format.js +67 -0
- package/dist/escalation-format.js.map +1 -0
- package/dist/gh.d.ts +1 -28
- package/dist/gh.d.ts.map +1 -1
- package/dist/gh.js +4 -165
- package/dist/gh.js.map +1 -1
- package/dist/git-local.d.ts +27 -0
- package/dist/git-local.d.ts.map +1 -0
- package/dist/git-local.js +87 -0
- package/dist/git-local.js.map +1 -0
- package/dist/project.js.map +1 -1
- package/dist/sh.d.ts +11 -0
- package/dist/sh.d.ts.map +1 -0
- package/dist/sh.js +23 -0
- package/dist/sh.js.map +1 -0
- package/package.json +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -48,10 +48,17 @@ export declare class ShipFlowClient {
|
|
|
48
48
|
private refreshToken?;
|
|
49
49
|
private onRefreshed?;
|
|
50
50
|
private fetchImpl;
|
|
51
|
+
private sleep;
|
|
51
52
|
constructor(opts: ClientOptions & AuthOptions & {
|
|
52
53
|
fetch?: typeof fetch;
|
|
54
|
+
sleep?: (ms: number) => Promise<void>;
|
|
53
55
|
});
|
|
54
56
|
private authedFetch;
|
|
57
|
+
/** Fetch a raw URL through the injected fetch, attaching the bearer token and
|
|
58
|
+
* doing one transparent 401 refresh-retry — for non-JSON bodies (multipart
|
|
59
|
+
* evidence) that can't go through request(). The Authorization header is
|
|
60
|
+
* (re)applied on each attempt so the refreshed token is used. */
|
|
61
|
+
private fetchWithRefresh;
|
|
55
62
|
private toResult;
|
|
56
63
|
private request;
|
|
57
64
|
/** Exchange the stored refresh token for new tokens and persist them. Returns
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,QAAS,SAAQ,KAAK;IAExB,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,MAAM;gBADZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM;CAKtB;AAED,wDAAwD;AACxD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,iEAAiE;AACjE,qBAAa,kBAAmB,SAAQ,KAAK;IACxB,MAAM,CAAC,EAAE,UAAU;gBAAnB,MAAM,CAAC,EAAE,UAAU,YAAA;CAMvC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IAGb,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;CAC5C;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -22,18 +22,25 @@ export class ClaimConflictError extends Error {
|
|
|
22
22
|
this.name = "ClaimConflictError";
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
+
/** Jittered backoff for a GET retry: ~300–500ms on the first retry, ~600–800ms
|
|
26
|
+
* on the second. Keeps flaky-network retries snappy without hammering. */
|
|
27
|
+
function backoffMs(attempt) {
|
|
28
|
+
return 300 * Math.pow(2, attempt) + Math.floor(Math.random() * 200);
|
|
29
|
+
}
|
|
25
30
|
export class ShipFlowClient {
|
|
26
31
|
baseUrl;
|
|
27
32
|
apiKey;
|
|
28
33
|
refreshToken;
|
|
29
34
|
onRefreshed;
|
|
30
35
|
fetchImpl;
|
|
36
|
+
sleep;
|
|
31
37
|
constructor(opts) {
|
|
32
38
|
this.baseUrl = opts.baseUrl.replace(/\/+$/, "");
|
|
33
39
|
this.apiKey = opts.jwt || opts.apiKey;
|
|
34
40
|
this.refreshToken = opts.refreshToken;
|
|
35
41
|
this.onRefreshed = opts.onRefreshed;
|
|
36
42
|
this.fetchImpl = opts.fetch ?? fetch; // injectable for tests; global fetch in prod
|
|
43
|
+
this.sleep = opts.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms))); // injectable so tests don't wall-clock the retry backoff
|
|
37
44
|
}
|
|
38
45
|
authedFetch(method, path, body) {
|
|
39
46
|
const headers = { "Content-Type": "application/json" };
|
|
@@ -45,6 +52,23 @@ export class ShipFlowClient {
|
|
|
45
52
|
body: body ? JSON.stringify(body) : undefined,
|
|
46
53
|
});
|
|
47
54
|
}
|
|
55
|
+
/** Fetch a raw URL through the injected fetch, attaching the bearer token and
|
|
56
|
+
* doing one transparent 401 refresh-retry — for non-JSON bodies (multipart
|
|
57
|
+
* evidence) that can't go through request(). The Authorization header is
|
|
58
|
+
* (re)applied on each attempt so the refreshed token is used. */
|
|
59
|
+
async fetchWithRefresh(url, init) {
|
|
60
|
+
const withAuth = () => {
|
|
61
|
+
const headers = new Headers(init.headers);
|
|
62
|
+
if (this.apiKey)
|
|
63
|
+
headers.set("Authorization", `Bearer ${this.apiKey}`);
|
|
64
|
+
return { ...init, headers };
|
|
65
|
+
};
|
|
66
|
+
let res = await this.fetchImpl(url, withAuth());
|
|
67
|
+
if (res.status === 401 && this.refreshToken && (await this.tryRefresh())) {
|
|
68
|
+
res = await this.fetchImpl(url, withAuth());
|
|
69
|
+
}
|
|
70
|
+
return res;
|
|
71
|
+
}
|
|
48
72
|
async toResult(res) {
|
|
49
73
|
if (!res.ok) {
|
|
50
74
|
const text = await res.text().catch(() => res.statusText);
|
|
@@ -58,15 +82,42 @@ export class ShipFlowClient {
|
|
|
58
82
|
return JSON.parse(text);
|
|
59
83
|
}
|
|
60
84
|
async request(method, path, body) {
|
|
61
|
-
|
|
62
|
-
//
|
|
63
|
-
//
|
|
64
|
-
//
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
85
|
+
// Only GETs are safe to retry: they're idempotent, so a transient network
|
|
86
|
+
// blip (real TLS flakes observed) or a 5xx can be retried without risk.
|
|
87
|
+
// Mutating requests (signals/claims/creates) must NOT retry — a retry could
|
|
88
|
+
// double-fire the effect.
|
|
89
|
+
const retriable = method.toUpperCase() === "GET";
|
|
90
|
+
const maxAttempts = retriable ? 3 : 1;
|
|
91
|
+
let lastErr;
|
|
92
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
93
|
+
try {
|
|
94
|
+
let res = await this.authedFetch(method, path, body);
|
|
95
|
+
// Access token (24h) expired? Use the refresh token to mint a fresh one and
|
|
96
|
+
// retry once — so the skill keeps working for the 30-day refresh window
|
|
97
|
+
// without a manual re-login. Falls through to the normal error path when
|
|
98
|
+
// there's no refresh token or the refresh itself fails.
|
|
99
|
+
if (res.status === 401 && this.refreshToken && (await this.tryRefresh())) {
|
|
100
|
+
res = await this.authedFetch(method, path, body);
|
|
101
|
+
}
|
|
102
|
+
// Transient server error on an idempotent GET → back off and retry.
|
|
103
|
+
if (retriable && res.status >= 500 && attempt < maxAttempts - 1) {
|
|
104
|
+
await this.sleep(backoffMs(attempt));
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
return this.toResult(res);
|
|
108
|
+
}
|
|
109
|
+
catch (e) {
|
|
110
|
+
// Network-level rejection (DNS/TLS/conn-reset). Retry idempotent GETs
|
|
111
|
+
// with backoff; surface everything else (and the final GET failure).
|
|
112
|
+
lastErr = e;
|
|
113
|
+
if (retriable && attempt < maxAttempts - 1) {
|
|
114
|
+
await this.sleep(backoffMs(attempt));
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
throw e;
|
|
118
|
+
}
|
|
68
119
|
}
|
|
69
|
-
|
|
120
|
+
throw lastErr ?? new Error("request failed"); // unreachable: the loop returns or throws
|
|
70
121
|
}
|
|
71
122
|
/** Exchange the stored refresh token for new tokens and persist them. Returns
|
|
72
123
|
* false (leaving the refresh token cleared) if the refresh can't succeed —
|
|
@@ -171,10 +222,11 @@ export class ShipFlowClient {
|
|
|
171
222
|
appendAll("before", opts.before);
|
|
172
223
|
appendAll("after", opts.after);
|
|
173
224
|
appendAll("images", opts.images);
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
225
|
+
// Route through fetchWithRefresh (this.fetchImpl + one 401 refresh) so an
|
|
226
|
+
// expired access token is transparently refreshed like every other request
|
|
227
|
+
// — and so tests can inject fetch. FormData sets its own Content-Type
|
|
228
|
+
// boundary, so we don't set it here.
|
|
229
|
+
const res = await this.fetchWithRefresh(`${this.baseUrl}/api/v1/orgs/${encodeURIComponent(org)}/projects/${encodeURIComponent(projectId)}/issues/${number}/evidence`, { method: "POST", body: form });
|
|
178
230
|
if (!res.ok) {
|
|
179
231
|
throw new ApiError(res.status, await res.text().catch(() => res.statusText));
|
|
180
232
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,OAAO,QAAS,SAAQ,KAAK;IAExB;IACA;IAFT,YACS,MAAc,EACd,IAAY;QAEnB,KAAK,CAAC,aAAa,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;QAH/B,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAQ;QAGnB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAoBD,iEAAiE;AACjE,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACxB;IAAnB,YAAmB,MAAmB;QACpC,KAAK,CAAC,MAAM;YACV,CAAC,CAAC,oBAAoB,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,MAAM,CAAC,SAAS,EAAE;YACzG,CAAC,CAAC,uBAAuB,CAAC,CAAC;QAHZ,WAAM,GAAN,MAAM,CAAa;QAIpC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAuBD;0EAC0E;AAC1E,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,OAAO,cAAc;IACjB,OAAO,CAAS;IAChB,MAAM,CAAU;IAChB,YAAY,CAAU;IACtB,WAAW,CAAgC;IAC3C,SAAS,CAAe;IACxB,KAAK,CAAgC;IAE7C,YAAY,IAAmG;QAC7G,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,6CAA6C;QACnF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,yDAAyD;IAC7I,CAAC;IAEO,WAAW,CAAC,MAAc,EAAE,IAAY,EAAE,IAAc;QAC9D,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QAC/E,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YAC9C,MAAM;YACN,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9C,CAAC,CAAC;IACL,CAAC;IAED;;;qEAGiE;IACzD,KAAK,CAAC,gBAAgB,CAAC,GAAW,EAAE,IAAiB;QAC3D,MAAM,QAAQ,GAAG,GAAgB,EAAE;YACjC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACvE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC;QAC9B,CAAC,CAAC;QACF,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;YACzE,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAI,GAAa;QACrC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1D,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,uEAAuE;QACvE,2CAA2C;QAC3C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI;YAAE,OAAO,SAAc,CAAC;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,MAAc,EAAE,IAAY,EAAE,IAAc;QACnE,0EAA0E;QAC1E,wEAAwE;QACxE,4EAA4E;QAC5E,0BAA0B;QAC1B,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC;QACjD,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,OAAgB,CAAC;QACrB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,CAAC;gBACH,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACrD,4EAA4E;gBAC5E,wEAAwE;gBACxE,yEAAyE;gBACzE,wDAAwD;gBACxD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;oBACzE,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACnD,CAAC;gBACD,oEAAoE;gBACpE,IAAI,SAAS,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,OAAO,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC;oBAChE,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;oBACrC,SAAS;gBACX,CAAC;gBACD,OAAO,IAAI,CAAC,QAAQ,CAAI,GAAG,CAAC,CAAC;YAC/B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,sEAAsE;gBACtE,qEAAqE;gBACrE,OAAO,GAAG,CAAC,CAAC;gBACZ,IAAI,SAAS,IAAI,OAAO,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC;oBAC3C,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;oBACrC,SAAS;gBACX,CAAC;gBACD,MAAM,CAAC,CAAC;YACV,CAAC;QACH,CAAC;QACD,MAAM,OAAO,IAAI,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,0CAA0C;IAC1F,CAAC;IAED;;+EAE2E;IACnE,KAAK,CAAC,UAAU;QACtB,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;QAC7B,IAAI,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC,oCAAoC;QACnE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,sBAAsB,EAAE;gBACtE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;aAC3C,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,KAAK,CAAC;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA4C,CAAC;YACrF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;YAC/D,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;YACtF,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,8DAA8D;IAE9D,KAAK,CAAC,SAAS,CAAC,GAAW;QACzB,OAAO,IAAI,CAAC,OAAO,CAAiB,KAAK,EAAE,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,IAAY;QACrC,OAAO,IAAI,CAAC,OAAO,CAAa,KAAK,EAAE,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,UAAU,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtH,CAAC;IAED,8DAA8D;IAE9D,KAAK,CAAC,cAAc,CAClB,GAAW,EACX,IAAY,EACZ,YAAoB,EACpB,IAAkG;QAElG,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,EACL,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,UAAU,IAAI,cAAc,kBAAkB,CAAC,YAAY,CAAC,EAAE,EACrG,IAAI,CACL,CAAC;IACJ,CAAC;IAED,8DAA8D;IAE9D,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,MAA4C;QAC1E,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;QACjC,IAAI,MAAM,EAAE,MAAM;YAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,MAAM,EAAE,KAAK;YAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,EACL,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9E,CAAC;IACJ,CAAC;IAED,8DAA8D;IAE9D,KAAK,CAAC,QAAQ,CAAC,GAAW;QACxB,OAAO,IAAI,CAAC,OAAO,CAAW,KAAK,EAAE,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxF,CAAC;IAED,8DAA8D;IAE9D,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,OAAO,IAAI,CAAC,OAAO,CAAc,KAAK,EAAE,gBAAgB,GAAG,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,8DAA8D;IAE9D,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAY,KAAK,EAAE,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,UAAU,CACd,GAAW,EACX,IAAwG;QAExG,OAAO,IAAI,CAAC,OAAO,CAAU,MAAM,EAAE,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACjG,CAAC;IAED,6DAA6D;IAE7D,KAAK,CAAC,eAAe,CAAC,OAAe;QACnC,OAAO,IAAI,CAAC,OAAO,CAAsB,MAAM,EAAE,oBAAoB,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,YAAoB;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,sBAAsB,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,4DAA4D;IAE5D,KAAK,CAAC,iBAAiB,CAAC,GAAW,EAAE,KAAa,EAAE,IAAY;QAC9D,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,sBAAsB,kBAAkB,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnJ,CAAC;IAED,6DAA6D;IAE7D,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,SAAiB,EAAE,IAAY,EAAE,WAAmB;QAC/E,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,aAAa,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC/H,CAAC;IAED,4DAA4D;IAE5D,KAAK,CAAC,MAAM,CACV,GAAW,EAAE,SAAiB,EAC9B,OAAyB,EAAE,MAAc,EAAE,MAAuD,EAClG,IAA6B;QAE7B,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EACvB,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,aAAa,kBAAkB,CAAC,SAAS,CAAC,IAAI,OAAO,IAAI,MAAM,IAAI,MAAM,EAAE,EAClH,IAAI,CAAC,CAAC;IACV,CAAC;IAED,4DAA4D;IAE5D;;kDAE8C;IAC9C,KAAK,CAAC,cAAc,CAClB,GAAW,EAAE,SAAiB,EAAE,MAAc,EAC9C,IAKC;QAED,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,IAA+C,EAAE,EAAE;YACnF,KAAK,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE;gBAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnG,CAAC,CAAC;QACF,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,0EAA0E;QAC1E,2EAA2E;QAC3E,sEAAsE;QACtE,qCAAqC;QACrC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CACrC,GAAG,IAAI,CAAC,OAAO,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,aAAa,kBAAkB,CAAC,SAAS,CAAC,WAAW,MAAM,WAAW,EAC5H,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAC/B,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,EAA6B,CAAC;IAC/C,CAAC;IAED,4DAA4D;IAE5D,wFAAwF;IACxF,KAAK,CAAC,UAAU,CACd,GAAW,EAAE,SAAiB,EAAE,MAAc,EAC9C,IAA2D;QAE3D,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAyB,MAAM,EAC3D,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,aAAa,kBAAkB,CAAC,SAAS,CAAC,WAAW,MAAM,QAAQ,EAC1G,IAAI,CAAC,CAAC;YACR,OAAO,GAAG,EAAE,KAAK,IAAI,IAAI,CAAC;QAC5B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC9C,IAAI,MAA8B,CAAC;gBACnC,IAAI,CAAC;oBAAC,MAAM,GAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAA6B,CAAC,MAAM,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;gBACrG,MAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,UAAU,CAAC,GAAW,EAAE,SAAiB;QAC7C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAA2B,KAAK,EAC5D,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,aAAa,kBAAkB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9F,OAAO,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,4DAA4D;IAE5D,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,SAAiB,EAAE,IAAmE;QACtH,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,aAAa,kBAAkB,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACjI,CAAC;IAED,4DAA4D;IAE5D,6EAA6E;IAC7E,2EAA2E;IAC3E,KAAK,CAAC,eAAe,CAAC,GAAW,EAAE,SAAiB,EAAE,YAAoB,EAAE,MAA+B;QACzG,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,aAAa,kBAAkB,CAAC,SAAS,CAAC,cAAc,kBAAkB,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACjL,CAAC;IAED,4DAA4D;IAC5D,0EAA0E;IAC1E,2EAA2E;IAC3E,mCAAmC;IACnC,KAAK,CAAC,kBAAkB,CAAC,GAAW,EAAE,MAAc;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,eAAe,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACxH,CAAC;IAED,4DAA4D;IAE5D,KAAK,CAAC,gBAAgB,CAAC,GAAW,EAAE,SAAiB;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,aAAa,kBAAkB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACzH,CAAC;IAED,4DAA4D;IAC5D,4EAA4E;IAC5E,wEAAwE;IACxE,KAAK,CAAC,iBAAiB,CAAC,GAAW,EAAE,SAAiB;QACpD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB,kBAAkB,CAAC,GAAG,CAAC,aAAa,kBAAkB,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAClI,CAAC;CACF"}
|
|
@@ -3,7 +3,39 @@ import { ShipFlowClient } from "../client.js";
|
|
|
3
3
|
import type { OutputFormat } from "../output.js";
|
|
4
4
|
/** Extract common options from any command that has inherited parent opts. */
|
|
5
5
|
export declare function getClient(cmd: Command): ShipFlowClient;
|
|
6
|
+
/** Bootstrap a JWT-authenticated client + resolved project for the loop-facing
|
|
7
|
+
* `pr`/`issue` commands. Signs in from stored credentials (JWT + refresh),
|
|
8
|
+
* wiring transparent token refresh, and resolves the active project from the
|
|
9
|
+
* cwd's repo. Exits 1 when not signed in. */
|
|
10
|
+
export declare function loadCtx(program: Command): Promise<{
|
|
11
|
+
auth: {
|
|
12
|
+
token: string;
|
|
13
|
+
kind: "jwt" | "apiKey";
|
|
14
|
+
};
|
|
15
|
+
creds: import("../config.js").StoredCredentials;
|
|
16
|
+
client: ShipFlowClient;
|
|
17
|
+
project: import("../project.js").ResolvedProject;
|
|
18
|
+
}>;
|
|
6
19
|
export declare function getOrg(cmd: Command): string;
|
|
7
20
|
export declare function getFormat(cmd: Command): OutputFormat;
|
|
8
21
|
export declare function handleError(err: unknown): never;
|
|
22
|
+
/**
|
|
23
|
+
* Reserved exit code for an unexpected/transient CLI failure (an unhandled throw
|
|
24
|
+
* — a network blip, a `gh`/`git` hiccup, etc.). It's deliberately distinct from
|
|
25
|
+
* every intentional control-flow code so the unattended loop can tell "retry or
|
|
26
|
+
* escalate" apart from a real verdict:
|
|
27
|
+
* 3 = issue taken · 4 = no actionable issues · 5 = automerge not ready
|
|
28
|
+
* 6 = rebase conflict · 7 = unresolved review threads (approve)
|
|
29
|
+
* 10 = unexpected/transient failure — retry or escalate (this one).
|
|
30
|
+
*/
|
|
31
|
+
export declare const UNEXPECTED_EXIT_CODE = 10;
|
|
32
|
+
/**
|
|
33
|
+
* Wrap a loop-gated command action so an unexpected throw becomes a clean
|
|
34
|
+
* `Error: <message>` (or `{"error": …}` JSON when `--json`) on exit code 10 —
|
|
35
|
+
* instead of a raw stack trace on the generic exit 1 that collides with the
|
|
36
|
+
* deliberate codes above. Deliberate `process.exit(n)` calls inside `fn`
|
|
37
|
+
* terminate the process directly and are never caught here, so all intentional
|
|
38
|
+
* exit codes are preserved.
|
|
39
|
+
*/
|
|
40
|
+
export declare function runAction<A extends unknown[]>(fn: (...args: A) => void | Promise<void>): (...args: A) => Promise<void>;
|
|
9
41
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/commands/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/commands/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,8EAA8E;AAC9E,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAWtD;AAED;;;6CAG6C;AAC7C,wBAAsB,OAAO,CAAC,OAAO,EAAE,OAAO;;;;;;;;GAO7C;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAE3C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAKpD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAO/C;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,EAC3C,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACvC,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAgB/B"}
|
package/dist/commands/helpers.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ShipFlowClient } from "../client.js";
|
|
2
|
-
import { resolveApiUrl, resolveApiKey } from "../config.js";
|
|
2
|
+
import { resolveApiUrl, resolveApiKey, resolveAuthToken, loadCredentials, refreshOpts } from "../config.js";
|
|
3
|
+
import { resolveProject } from "../project.js";
|
|
3
4
|
/** Extract common options from any command that has inherited parent opts. */
|
|
4
5
|
export function getClient(cmd) {
|
|
5
6
|
const opts = cmd.optsWithGlobals();
|
|
@@ -13,6 +14,21 @@ export function getClient(cmd) {
|
|
|
13
14
|
apiKey,
|
|
14
15
|
});
|
|
15
16
|
}
|
|
17
|
+
/** Bootstrap a JWT-authenticated client + resolved project for the loop-facing
|
|
18
|
+
* `pr`/`issue` commands. Signs in from stored credentials (JWT + refresh),
|
|
19
|
+
* wiring transparent token refresh, and resolves the active project from the
|
|
20
|
+
* cwd's repo. Exits 1 when not signed in. */
|
|
21
|
+
export async function loadCtx(program) {
|
|
22
|
+
const auth = resolveAuthToken();
|
|
23
|
+
const creds = loadCredentials();
|
|
24
|
+
if (!auth || !creds) {
|
|
25
|
+
console.error("Not signed in. Run: renaiss-shipflow login");
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
const client = new ShipFlowClient({ baseUrl: resolveApiUrl(program.opts().apiUrl), jwt: auth.token, ...refreshOpts(creds) });
|
|
29
|
+
const project = await resolveProject(client, creds);
|
|
30
|
+
return { auth, creds, client, project };
|
|
31
|
+
}
|
|
16
32
|
export function getOrg(cmd) {
|
|
17
33
|
return cmd.optsWithGlobals().org || "default";
|
|
18
34
|
}
|
|
@@ -33,4 +49,42 @@ export function handleError(err) {
|
|
|
33
49
|
}
|
|
34
50
|
process.exit(1);
|
|
35
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Reserved exit code for an unexpected/transient CLI failure (an unhandled throw
|
|
54
|
+
* — a network blip, a `gh`/`git` hiccup, etc.). It's deliberately distinct from
|
|
55
|
+
* every intentional control-flow code so the unattended loop can tell "retry or
|
|
56
|
+
* escalate" apart from a real verdict:
|
|
57
|
+
* 3 = issue taken · 4 = no actionable issues · 5 = automerge not ready
|
|
58
|
+
* 6 = rebase conflict · 7 = unresolved review threads (approve)
|
|
59
|
+
* 10 = unexpected/transient failure — retry or escalate (this one).
|
|
60
|
+
*/
|
|
61
|
+
export const UNEXPECTED_EXIT_CODE = 10;
|
|
62
|
+
/**
|
|
63
|
+
* Wrap a loop-gated command action so an unexpected throw becomes a clean
|
|
64
|
+
* `Error: <message>` (or `{"error": …}` JSON when `--json`) on exit code 10 —
|
|
65
|
+
* instead of a raw stack trace on the generic exit 1 that collides with the
|
|
66
|
+
* deliberate codes above. Deliberate `process.exit(n)` calls inside `fn`
|
|
67
|
+
* terminate the process directly and are never caught here, so all intentional
|
|
68
|
+
* exit codes are preserved.
|
|
69
|
+
*/
|
|
70
|
+
export function runAction(fn) {
|
|
71
|
+
return async (...args) => {
|
|
72
|
+
try {
|
|
73
|
+
await fn(...args);
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
77
|
+
// Commander passes the Command instance as the final action argument;
|
|
78
|
+
// read --json off it so a failure still emits machine-readable output.
|
|
79
|
+
const cmd = args[args.length - 1];
|
|
80
|
+
const opts = typeof cmd?.optsWithGlobals === "function" ? cmd.optsWithGlobals()
|
|
81
|
+
: typeof cmd?.opts === "function" ? cmd.opts() : {};
|
|
82
|
+
if (opts?.json)
|
|
83
|
+
console.log(JSON.stringify({ error: message }));
|
|
84
|
+
else
|
|
85
|
+
console.error(`Error: ${message}`);
|
|
86
|
+
process.exit(UNEXPECTED_EXIT_CODE);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
}
|
|
36
90
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/commands/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/commands/helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/inbox.d.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
2
|
export { prAttentionReasons, issueNeedsReply } from "../pr-state.js";
|
|
3
|
+
/** Count unresolved review threads for one PR, tolerating a transient GraphQL
|
|
4
|
+
* blip: on failure return 0 + `degraded` so a single PR's error can't blank the
|
|
5
|
+
* whole inbox. `fetchThreads` is injected so this stays pure + testable. */
|
|
6
|
+
export declare function safeUnresolvedThreadCount(fetchThreads: () => {
|
|
7
|
+
isResolved: boolean;
|
|
8
|
+
}[]): {
|
|
9
|
+
count: number;
|
|
10
|
+
degraded: boolean;
|
|
11
|
+
};
|
|
3
12
|
export declare function registerInboxCommand(program: Command): void;
|
|
4
13
|
//# sourceMappingURL=inbox.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAIrE;;4EAE4E;AAC5E,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM;IAAE,UAAU,EAAE,OAAO,CAAA;CAAE,EAAE,GAC5C;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAMtC;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsE3D"}
|
package/dist/commands/inbox.js
CHANGED
|
@@ -3,17 +3,29 @@ import { resolveApiUrl, resolveAuthToken, loadCredentials, refreshOpts, resolveS
|
|
|
3
3
|
import { resolveProject } from "../project.js";
|
|
4
4
|
import { ghPRListMine, ghCurrentLogin, ghIssueListByLabel, ghReviewThreads } from "../gh.js";
|
|
5
5
|
import { classifyPR, issueNeedsReply } from "../pr-state.js";
|
|
6
|
+
import { runAction } from "./helpers.js";
|
|
6
7
|
// Re-exported so existing import sites/tests (`../commands/inbox.js`) keep working
|
|
7
8
|
// now that the pure logic lives in pr-state.ts.
|
|
8
9
|
export { prAttentionReasons, issueNeedsReply } from "../pr-state.js";
|
|
9
10
|
const IN_PROGRESS_LABEL = "🤖 in-progress";
|
|
11
|
+
/** Count unresolved review threads for one PR, tolerating a transient GraphQL
|
|
12
|
+
* blip: on failure return 0 + `degraded` so a single PR's error can't blank the
|
|
13
|
+
* whole inbox. `fetchThreads` is injected so this stays pure + testable. */
|
|
14
|
+
export function safeUnresolvedThreadCount(fetchThreads) {
|
|
15
|
+
try {
|
|
16
|
+
return { count: fetchThreads().filter((t) => !t.isResolved).length, degraded: false };
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return { count: 0, degraded: true };
|
|
20
|
+
}
|
|
21
|
+
}
|
|
10
22
|
export function registerInboxCommand(program) {
|
|
11
23
|
program
|
|
12
24
|
.command("inbox")
|
|
13
25
|
.description("Reconciler view: open PRs (by state: ci_failing / changes_requested / approved_ready / stale …) and in-progress issues with new comments")
|
|
14
26
|
.option("--repo <fullname>", "Override target repo")
|
|
15
27
|
.option("--json", "Output JSON")
|
|
16
|
-
.action(async (opts) => {
|
|
28
|
+
.action(runAction(async (opts) => {
|
|
17
29
|
const auth = resolveAuthToken();
|
|
18
30
|
const creds = loadCredentials();
|
|
19
31
|
if (!auth || !creds) {
|
|
@@ -28,7 +40,8 @@ export function registerInboxCommand(program) {
|
|
|
28
40
|
const prs = ghPRListMine(repo).map((pr) => {
|
|
29
41
|
// Resolved-thread state is authoritative for review feedback — without it,
|
|
30
42
|
// classifyPR keeps flagging `review_comments` after the loop resolves them.
|
|
31
|
-
|
|
43
|
+
// Guard the per-PR GraphQL call so one PR's blip can't blank the inbox.
|
|
44
|
+
const { count: unresolvedThreads, degraded } = safeUnresolvedThreadCount(() => ghReviewThreads(repo, pr.number));
|
|
32
45
|
const cl = classifyPR(pr, me, { staleHours, unresolvedThreads });
|
|
33
46
|
return {
|
|
34
47
|
number: pr.number, title: pr.title, branch: pr.headRefName, base: pr.baseRefName ?? "", url: pr.url,
|
|
@@ -36,6 +49,7 @@ export function registerInboxCommand(program) {
|
|
|
36
49
|
closesIssues: (pr.closingIssuesReferences ?? []).map((i) => i.number),
|
|
37
50
|
state: cl.state, ciState: cl.ciState, approved: cl.approved, ageHours: Math.round(cl.ageHours),
|
|
38
51
|
needsAttention: cl.needsAction, reasons: cl.reasons,
|
|
52
|
+
...(degraded ? { degraded: true } : {}),
|
|
39
53
|
};
|
|
40
54
|
});
|
|
41
55
|
const issues = ghIssueListByLabel(repo, IN_PROGRESS_LABEL).map((i) => {
|
|
@@ -47,6 +61,9 @@ export function registerInboxCommand(program) {
|
|
|
47
61
|
};
|
|
48
62
|
});
|
|
49
63
|
const count = (s) => prs.filter((p) => p.state === s).length;
|
|
64
|
+
// Count PRs whose review-thread data couldn't be fetched this tick so the
|
|
65
|
+
// loop knows the picture is partial (fetch again before acting on those).
|
|
66
|
+
const degraded = prs.filter((p) => "degraded" in p && p.degraded).length;
|
|
50
67
|
const summary = {
|
|
51
68
|
prsNeedingAttention: prs.filter((p) => p.needsAttention).length,
|
|
52
69
|
issuesNeedingAttention: issues.filter((i) => i.needsAttention).length,
|
|
@@ -55,6 +72,7 @@ export function registerInboxCommand(program) {
|
|
|
55
72
|
changesRequested: count("changes_requested"),
|
|
56
73
|
stale: count("stale"),
|
|
57
74
|
parked: prs.filter((p) => p.state === "awaiting_review" || p.state === "ci_pending").length,
|
|
75
|
+
degraded,
|
|
58
76
|
};
|
|
59
77
|
if (opts.json) {
|
|
60
78
|
console.log(JSON.stringify({ repo, prs, issues, summary }, null, 2));
|
|
@@ -62,14 +80,16 @@ export function registerInboxCommand(program) {
|
|
|
62
80
|
}
|
|
63
81
|
console.log(`📥 Inbox for ${repo}`);
|
|
64
82
|
console.log(`Open PRs: ${prs.length} (${summary.prsNeedingAttention} need action, ${summary.readyToMerge} ready to merge) · in-progress issues: ${issues.length} (${summary.issuesNeedingAttention} with new comments)`);
|
|
83
|
+
if (degraded)
|
|
84
|
+
console.log(`⚠️ ${degraded} PR(s) with partial review-thread data (fetch blipped) — marked "degraded".`);
|
|
65
85
|
const icon = {
|
|
66
86
|
ci_failing: "🔴", changes_requested: "✏️ ", review_comments: "💬", ci_pending: "⏳",
|
|
67
87
|
approved_ready: "✅", stale: "🕰️ ", awaiting_review: "·",
|
|
68
88
|
};
|
|
69
89
|
for (const p of prs)
|
|
70
|
-
console.log(` ${icon[p.state] ?? "·"} PR #${p.number} [${p.state}] — ${p.title} (ci:${p.ciState}, ${p.ageHours}h)`);
|
|
90
|
+
console.log(` ${icon[p.state] ?? "·"} PR #${p.number} [${p.state}] — ${p.title} (ci:${p.ciState}, ${p.ageHours}h)${"degraded" in p && p.degraded ? " ⚠️ degraded" : ""}`);
|
|
71
91
|
for (const i of issues)
|
|
72
92
|
console.log(` ${i.needsAttention ? "💬" : "·"} #${i.number} — ${i.title}${i.newComment ? ` (last: @${i.newComment.author})` : ""}`);
|
|
73
|
-
});
|
|
93
|
+
}));
|
|
74
94
|
}
|
|
75
95
|
//# sourceMappingURL=inbox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAClH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/issue.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { hostname } from "node:os";
|
|
2
2
|
import { readFileSync } from "node:fs";
|
|
3
3
|
import { basename } from "node:path";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { ghIssueView, ghIssueCreate, ghIssueList, ghEnsureLabel, ghIssueAddLabels, ghIssueRemoveLabel, ghIssueComment, formatEscalationBody } from "../gh.js";
|
|
4
|
+
import { ClaimConflictError } from "../client.js";
|
|
5
|
+
import { ghIssueView, ghIssueCreate, ghIssueList, ghEnsureLabel, ghIssueAddLabels, ghIssueRemoveLabel, ghIssueComment } from "../gh.js";
|
|
6
|
+
import { formatEscalationBody } from "../escalation-format.js";
|
|
8
7
|
import { sortIssuesForPickup, isActionableForPickup, IN_PROGRESS_LABEL, NEEDS_HUMAN_LABEL } from "../issue-order.js";
|
|
9
8
|
import { validateEvidenceSelection } from "../evidence.js";
|
|
10
9
|
import { promptText } from "../prompts.js";
|
|
10
|
+
import { loadCtx, runAction } from "./helpers.js";
|
|
11
11
|
export function registerIssueCommand(program) {
|
|
12
12
|
const issue = program.command("issue").description("Issue actions");
|
|
13
13
|
issue
|
|
@@ -74,7 +74,7 @@ export function registerIssueCommand(program) {
|
|
|
74
74
|
.option("--agent <name>", "Agent label recorded on the claim (default: $SHIPFLOW_AGENT or hostname)")
|
|
75
75
|
.option("--ttl <minutes>", "Claim lifetime in minutes (default 120)")
|
|
76
76
|
.option("--json", "Output JSON")
|
|
77
|
-
.action(async (opts) => {
|
|
77
|
+
.action(runAction(async (opts) => {
|
|
78
78
|
const ctx = await loadCtx(program);
|
|
79
79
|
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
80
80
|
const agent = opts.agent ?? process.env.SHIPFLOW_AGENT ?? hostname();
|
|
@@ -111,19 +111,19 @@ export function registerIssueCommand(program) {
|
|
|
111
111
|
console.log("✅ No actionable issues — every open issue is claimed or filtered out.");
|
|
112
112
|
}
|
|
113
113
|
process.exit(4);
|
|
114
|
-
});
|
|
114
|
+
}));
|
|
115
115
|
issue
|
|
116
116
|
.command("done <number>")
|
|
117
117
|
.description("Release an issue (signal only)")
|
|
118
118
|
.option("--reason <reason>", "Why you're releasing it (e.g. blocked, finished)")
|
|
119
119
|
.option("--repo <fullname>", "Override target repo")
|
|
120
|
-
.action(async (numberStr, opts) => {
|
|
120
|
+
.action(runAction(async (numberStr, opts) => {
|
|
121
121
|
const ctx = await loadCtx(program);
|
|
122
122
|
const number = parseInt(numberStr, 10);
|
|
123
123
|
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
124
124
|
await ctx.client.signal(ctx.creds.org, ctx.project.projectId, "issues", number, "release-claim", { repo, reason: opts.reason ?? "" });
|
|
125
125
|
console.log(`Released #${number}.`);
|
|
126
|
-
});
|
|
126
|
+
}));
|
|
127
127
|
issue
|
|
128
128
|
.command("escalate <number>")
|
|
129
129
|
.description("Hand an issue to a human: label needs-human + comment why. Keeps the work lock so the loop skips it this run.")
|
|
@@ -132,7 +132,7 @@ export function registerIssueCommand(program) {
|
|
|
132
132
|
.option("--keep-in-progress", "Keep the 🤖 in-progress label (default: swap it for needs-human)")
|
|
133
133
|
.option("--release", "Also release the ShipFlow claim (default: keep it so the loop won't re-pick it this run)")
|
|
134
134
|
.option("--json", "Output JSON")
|
|
135
|
-
.action(async (numberStr, opts) => {
|
|
135
|
+
.action(runAction(async (numberStr, opts) => {
|
|
136
136
|
const ctx = await loadCtx(program);
|
|
137
137
|
const number = parseInt(numberStr, 10);
|
|
138
138
|
const repo = opts.repo ?? ctx.project.repoFullName;
|
|
@@ -157,7 +157,7 @@ export function registerIssueCommand(program) {
|
|
|
157
157
|
return;
|
|
158
158
|
}
|
|
159
159
|
console.log(`🚧 #${number} escalated → labelled "${NEEDS_HUMAN_LABEL}"${released ? " and claim released" : " (claim kept — loop skips it this run)"}.`);
|
|
160
|
-
});
|
|
160
|
+
}));
|
|
161
161
|
issue
|
|
162
162
|
.command("evidence <number>")
|
|
163
163
|
.description("Attach testing evidence. Screenshots must show the fix: --before AND --after (reporter thread + a PR comment, or the issue if no --pr)")
|
|
@@ -170,7 +170,7 @@ export function registerIssueCommand(program) {
|
|
|
170
170
|
.option("--caption <text>", "Short note shown with the evidence")
|
|
171
171
|
.option("--repo <fullname>", "Override target repo")
|
|
172
172
|
.option("--json", "Output JSON")
|
|
173
|
-
.action(async (numberStr, opts) => {
|
|
173
|
+
.action(runAction(async (numberStr, opts) => {
|
|
174
174
|
const before = opts.before ?? [];
|
|
175
175
|
const after = opts.after ?? [];
|
|
176
176
|
const misc = [...(opts.file ?? []), ...(opts.image ?? [])];
|
|
@@ -206,7 +206,7 @@ export function registerIssueCommand(program) {
|
|
|
206
206
|
console.log(`🧪 Evidence delivered to: ${where.join(" + ") || "nowhere (check server logs)"}`);
|
|
207
207
|
for (const u of res.threadImageUrls ?? [])
|
|
208
208
|
console.log(` ${u}`);
|
|
209
|
-
});
|
|
209
|
+
}));
|
|
210
210
|
}
|
|
211
211
|
function printIssueContext(issueData, triage, repo, project, json) {
|
|
212
212
|
if (json) {
|
|
@@ -234,17 +234,6 @@ function printIssueContext(issueData, triage, repo, project, json) {
|
|
|
234
234
|
}
|
|
235
235
|
}
|
|
236
236
|
}
|
|
237
|
-
async function loadCtx(program) {
|
|
238
|
-
const auth = resolveAuthToken();
|
|
239
|
-
const creds = loadCredentials();
|
|
240
|
-
if (!auth || !creds) {
|
|
241
|
-
console.error("Not signed in. Run: renaiss-shipflow login");
|
|
242
|
-
process.exit(1);
|
|
243
|
-
}
|
|
244
|
-
const client = new ShipFlowClient({ baseUrl: resolveApiUrl(program.opts().apiUrl), jwt: auth.token, ...refreshOpts(creds) });
|
|
245
|
-
const project = await resolveProject(client, creds);
|
|
246
|
-
return { auth, creds, client, project };
|
|
247
|
-
}
|
|
248
237
|
async function readStdin() {
|
|
249
238
|
const chunks = [];
|
|
250
239
|
for await (const c of process.stdin)
|