@renaiss-shipflow/cli 0.10.0 → 0.12.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/client.d.ts +27 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +5 -0
- package/dist/client.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +3 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/git-identity.d.ts +3 -0
- package/dist/commands/git-identity.d.ts.map +1 -0
- package/dist/commands/git-identity.js +77 -0
- package/dist/commands/git-identity.js.map +1 -0
- package/dist/commands/issue.d.ts.map +1 -1
- package/dist/commands/issue.js +49 -6
- package/dist/commands/issue.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +16 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/pr.d.ts.map +1 -1
- package/dist/commands/pr.js +107 -3
- package/dist/commands/pr.js.map +1 -1
- package/dist/commands/stats.d.ts +7 -0
- package/dist/commands/stats.d.ts.map +1 -1
- package/dist/commands/stats.js +72 -1
- package/dist/commands/stats.js.map +1 -1
- package/dist/commands/test.d.ts +10 -0
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +52 -14
- package/dist/commands/test.js.map +1 -1
- package/dist/config.d.ts +7 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -0
- package/dist/config.js.map +1 -1
- package/dist/escalation-format.d.ts +35 -2
- package/dist/escalation-format.d.ts.map +1 -1
- package/dist/escalation-format.js +81 -4
- package/dist/escalation-format.js.map +1 -1
- package/dist/gh.d.ts +40 -1
- package/dist/gh.d.ts.map +1 -1
- package/dist/gh.js +88 -3
- package/dist/gh.js.map +1 -1
- package/dist/git-local.d.ts +4 -0
- package/dist/git-local.d.ts.map +1 -1
- package/dist/git-local.js +37 -0
- package/dist/git-local.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/packet.d.ts +43 -3
- package/dist/packet.d.ts.map +1 -1
- package/dist/packet.js +124 -17
- package/dist/packet.js.map +1 -1
- package/dist/review-contract-data.d.ts +91 -0
- package/dist/review-contract-data.d.ts.map +1 -0
- package/dist/review-contract-data.js +111 -0
- package/dist/review-contract-data.js.map +1 -0
- package/dist/review-contract.d.ts +66 -0
- package/dist/review-contract.d.ts.map +1 -0
- package/dist/review-contract.js +139 -0
- package/dist/review-contract.js.map +1 -0
- package/package.json +1 -1
|
@@ -21,11 +21,44 @@ export declare function bulletizeReason(reason: string): string;
|
|
|
21
21
|
export declare function enumerateReason(reason: string, marker: RegExp, // matches "(n)"/"(x)" incl. surrounding whitespace, capturing the token
|
|
22
22
|
firstMarker: string, // the token the sequence must open with ("1" / "a")
|
|
23
23
|
line: (marker: string, text: string) => string): string | null;
|
|
24
|
+
/** Why each escalation class is gated on a human. Rendered verbatim under
|
|
25
|
+
* `### Why this needs a human — <category>` so the rationale is standardized
|
|
26
|
+
* and never depends on how verbose a given reviewer subagent felt (issue #58,
|
|
27
|
+
* motivated by rental-portal#121's bare "money-write risk — see the issue body"). */
|
|
28
|
+
export declare const ESCALATION_CATEGORIES: Record<string, string>;
|
|
29
|
+
export interface EscalationOptions {
|
|
30
|
+
/** One of ESCALATION_CATEGORIES — appends the standardized "why a human" rationale. */
|
|
31
|
+
category?: string;
|
|
32
|
+
/** GitHub login (with or without a leading @) accountable for acting on this. */
|
|
33
|
+
owner?: string;
|
|
34
|
+
}
|
|
35
|
+
/** Canonical GitHub login: trimmed, leading @ stripped, empty collapsed to
|
|
36
|
+
* undefined — so "@gemscng", " gemscng " and "gemscng" all render as one
|
|
37
|
+
* consistent `@gemscng` (comment body, console line, and JSON alike). */
|
|
38
|
+
export declare function normalizeOwner(raw?: string | null): string | undefined;
|
|
39
|
+
/** Deterministic quality gate on an escalation reason — pure string checks, no
|
|
40
|
+
* AI. Returns one message per problem (empty array = clean). The rules encode
|
|
41
|
+
* the loop contract: no open questions without a recommendation, no pointers
|
|
42
|
+
* out of the comment, structured reasons lead with the action. */
|
|
43
|
+
export declare function lintEscalationReason(reason: string): string[];
|
|
44
|
+
export interface EscalationCommentRef {
|
|
45
|
+
id: string;
|
|
46
|
+
body: string;
|
|
47
|
+
viewerDidAuthor?: boolean;
|
|
48
|
+
}
|
|
49
|
+
/** The loop's most recent escalation comment on an issue (input oldest-first,
|
|
50
|
+
* as `gh issue view --json comments` returns them), so `issue escalate
|
|
51
|
+
* --update` can edit it in place instead of stacking a new banner. Only
|
|
52
|
+
* comments that OPEN with the banner count — replies quoting it don't — and
|
|
53
|
+
* only ones the CLI's own account authored. */
|
|
54
|
+
export declare function findLatestEscalationComment(comments: EscalationCommentRef[]): EscalationCommentRef | null;
|
|
24
55
|
/** Renders the escalation comment the loop posts when it hands an issue to a
|
|
25
56
|
* human. Keeps a one-line banner and a state footer (lock kept, how to un-block)
|
|
26
57
|
* around the reviewer's reason so the comment stays scannable. The reason is
|
|
27
58
|
* rendered directly — a structured reason already leads with its own `###
|
|
28
59
|
* Action needed` / `### Why it's blocked` sections, and a plain-paragraph reason
|
|
29
|
-
* just reads as text; either way this adds no competing heading of its own.
|
|
30
|
-
|
|
60
|
+
* just reads as text; either way this adds no competing heading of its own.
|
|
61
|
+
* `owner` names the accountable human right under the banner; `category` appends
|
|
62
|
+
* the standardized rationale for why this class of work is gated on a human. */
|
|
63
|
+
export declare function formatEscalationBody(reason: string, opts?: EscalationOptions): string;
|
|
31
64
|
//# sourceMappingURL=escalation-format.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escalation-format.d.ts","sourceRoot":"","sources":["../src/escalation-format.ts"],"names":[],"mappings":"AAIA;;;;;iCAKiC;AACjC,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOtD;AAED;;;;;;;;;;;;6EAY6E;AAC7E,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EAAO,wEAAwE;AAC7F,WAAW,EAAE,MAAM,EAAE,oDAAoD;AACzE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,GAC7C,MAAM,GAAG,IAAI,CAaf;AAED
|
|
1
|
+
{"version":3,"file":"escalation-format.d.ts","sourceRoot":"","sources":["../src/escalation-format.ts"],"names":[],"mappings":"AAIA;;;;;iCAKiC;AACjC,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOtD;AAED;;;;;;;;;;;;6EAY6E;AAC7E,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EAAO,wEAAwE;AAC7F,WAAW,EAAE,MAAM,EAAE,oDAAoD;AACzE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,GAC7C,MAAM,GAAG,IAAI,CAaf;AAED;;;sFAGsF;AACtF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAqBxD,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;0EAE0E;AAC1E,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAGtE;AAED;;;mEAGmE;AACnE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAoB7D;AAID,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;gDAIgD;AAChD,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,oBAAoB,GAAG,IAAI,CAOzG;AAED;;;;;;;iFAOiF;AACjF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,MAAM,CAoBzF"}
|
|
@@ -47,21 +47,98 @@ line) {
|
|
|
47
47
|
return null; // not a real multi-item list
|
|
48
48
|
return lead ? `${lead}\n\n${items.join("\n")}` : items.join("\n");
|
|
49
49
|
}
|
|
50
|
+
/** Why each escalation class is gated on a human. Rendered verbatim under
|
|
51
|
+
* `### Why this needs a human — <category>` so the rationale is standardized
|
|
52
|
+
* and never depends on how verbose a given reviewer subagent felt (issue #58,
|
|
53
|
+
* motivated by rental-portal#121's bare "money-write risk — see the issue body"). */
|
|
54
|
+
export const ESCALATION_CATEGORIES = {
|
|
55
|
+
"money-write": "Enabling this writes real money-bearing values (prices, payouts, billing) to live systems. " +
|
|
56
|
+
"A bad value reaches customers immediately, and transactions made at a wrong value can't be " +
|
|
57
|
+
"undone by reverting data. The loop never self-authorizes money writes — a human owns the go/no-go.",
|
|
58
|
+
"prod-config": "This changes production configuration (env vars, flags, infrastructure) whose blast radius " +
|
|
59
|
+
"spans everything behind it; a mistake can take production down or silently change live " +
|
|
60
|
+
"behavior. The loop never applies production config itself.",
|
|
61
|
+
security: "This touches a security- or trust-critical surface (authn/authz, secrets, injection-prone " +
|
|
62
|
+
"parsing) where a mistake is exploitable and autonomous validation can't establish safety.",
|
|
63
|
+
"missing-secret": "The work is blocked on a credential, secret, or account only a human can provision. Nothing " +
|
|
64
|
+
"is wrong with the code — the loop lacks access it cannot grant itself.",
|
|
65
|
+
"external-dependency": "Blocked on an external system or third party (vendor approval, DNS, a service outside this " +
|
|
66
|
+
"repo) that the loop cannot drive.",
|
|
67
|
+
invalid: "The issue looks invalid, duplicate, or out of scope; closing someone's issue is a judgment " +
|
|
68
|
+
"call the loop leaves to a human.",
|
|
69
|
+
};
|
|
70
|
+
/** Canonical GitHub login: trimmed, leading @ stripped, empty collapsed to
|
|
71
|
+
* undefined — so "@gemscng", " gemscng " and "gemscng" all render as one
|
|
72
|
+
* consistent `@gemscng` (comment body, console line, and JSON alike). */
|
|
73
|
+
export function normalizeOwner(raw) {
|
|
74
|
+
const login = (raw ?? "").trim().replace(/^@/, "");
|
|
75
|
+
return login || undefined;
|
|
76
|
+
}
|
|
77
|
+
/** Deterministic quality gate on an escalation reason — pure string checks, no
|
|
78
|
+
* AI. Returns one message per problem (empty array = clean). The rules encode
|
|
79
|
+
* the loop contract: no open questions without a recommendation, no pointers
|
|
80
|
+
* out of the comment, structured reasons lead with the action. */
|
|
81
|
+
export function lintEscalationReason(reason) {
|
|
82
|
+
const r = reason.trim();
|
|
83
|
+
const problems = [];
|
|
84
|
+
if (!r)
|
|
85
|
+
return ["no reason given — state the decision or action the human must take"];
|
|
86
|
+
// Only interrogative LINES count as questions — a "?" inside a URL query
|
|
87
|
+
// string or code span is not one (would otherwise force --force).
|
|
88
|
+
if (/\?\s*$/m.test(r) && !/\*\*recommendation:?\*\*/i.test(r)) {
|
|
89
|
+
problems.push('contains an open question ("?") but no **Recommendation:** line — every question put to a human must carry the loop\'s recommended answer');
|
|
90
|
+
}
|
|
91
|
+
if (/see the issue body/i.test(r)) {
|
|
92
|
+
problems.push('says "see the issue body" — an escalation must be self-contained; inline the substance');
|
|
93
|
+
}
|
|
94
|
+
// Tolerant match: subagents drift on heading spelling (case, emoji, colon);
|
|
95
|
+
// a substantively action-first reason must not be rejected.
|
|
96
|
+
if (r.includes("\n") && !/###\s*(?:👤\s*)?action\s+needed/i.test(r)) {
|
|
97
|
+
problems.push('structured reason is missing the "### 👤 Action needed" section — lead with the concrete steps');
|
|
98
|
+
}
|
|
99
|
+
return problems;
|
|
100
|
+
}
|
|
101
|
+
const ESCALATION_BANNER = "🚧 **Needs a human** — the ShipFlow loop escalated this and is skipping it for now.";
|
|
102
|
+
/** The loop's most recent escalation comment on an issue (input oldest-first,
|
|
103
|
+
* as `gh issue view --json comments` returns them), so `issue escalate
|
|
104
|
+
* --update` can edit it in place instead of stacking a new banner. Only
|
|
105
|
+
* comments that OPEN with the banner count — replies quoting it don't — and
|
|
106
|
+
* only ones the CLI's own account authored. */
|
|
107
|
+
export function findLatestEscalationComment(comments) {
|
|
108
|
+
for (let i = comments.length - 1; i >= 0; i--) {
|
|
109
|
+
const c = comments[i];
|
|
110
|
+
if (c.viewerDidAuthor === false)
|
|
111
|
+
continue;
|
|
112
|
+
if (c.body.trimStart().startsWith("🚧 **Needs a human**"))
|
|
113
|
+
return c;
|
|
114
|
+
}
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
50
117
|
/** Renders the escalation comment the loop posts when it hands an issue to a
|
|
51
118
|
* human. Keeps a one-line banner and a state footer (lock kept, how to un-block)
|
|
52
119
|
* around the reviewer's reason so the comment stays scannable. The reason is
|
|
53
120
|
* rendered directly — a structured reason already leads with its own `###
|
|
54
121
|
* Action needed` / `### Why it's blocked` sections, and a plain-paragraph reason
|
|
55
|
-
* just reads as text; either way this adds no competing heading of its own.
|
|
56
|
-
|
|
122
|
+
* just reads as text; either way this adds no competing heading of its own.
|
|
123
|
+
* `owner` names the accountable human right under the banner; `category` appends
|
|
124
|
+
* the standardized rationale for why this class of work is gated on a human. */
|
|
125
|
+
export function formatEscalationBody(reason, opts = {}) {
|
|
126
|
+
if (opts.category && !(opts.category in ESCALATION_CATEGORIES)) {
|
|
127
|
+
throw new Error(`Unknown escalation category "${opts.category}" — valid: ${Object.keys(ESCALATION_CATEGORIES).join(", ")}`);
|
|
128
|
+
}
|
|
57
129
|
const why = bulletizeReason(reason.trim()) || "_No reason given._";
|
|
130
|
+
const owner = normalizeOwner(opts.owner);
|
|
58
131
|
return [
|
|
59
|
-
|
|
132
|
+
ESCALATION_BANNER,
|
|
60
133
|
"",
|
|
134
|
+
...(owner ? [`**Owner:** @${owner} — yours to act on unless reassigned by comment.`, ""] : []),
|
|
61
135
|
why,
|
|
62
136
|
"",
|
|
137
|
+
...(opts.category
|
|
138
|
+
? [`### Why this needs a human — ${opts.category}`, ESCALATION_CATEGORIES[opts.category], ""]
|
|
139
|
+
: []),
|
|
63
140
|
"---",
|
|
64
|
-
"<sub>The loop kept its work lock, so it won't re-pick this issue until a human acts.
|
|
141
|
+
"<sub>The loop kept its work lock, so it won't re-pick this issue until a human acts. Reply with your decision — the **`needs-human`** label clears automatically on a human reply (or remove it yourself) — and the loop takes it from there.</sub>",
|
|
65
142
|
].join("\n");
|
|
66
143
|
}
|
|
67
144
|
//# sourceMappingURL=escalation-format.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escalation-format.js","sourceRoot":"","sources":["../src/escalation-format.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,+EAA+E;AAC/E,gBAAgB;AAEhB;;;;;iCAKiC;AACjC,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC,CAAY,+DAA+D;IACpH,OAAO,CACL,eAAe,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7E,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5E,MAAM,CACP,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;6EAY6E;AAC7E,MAAM,UAAU,eAAe,CAC7B,MAAc,EACd,MAAc,EAAO,wEAAwE;AAC7F,WAAmB,EAAE,oDAAoD;AACzE,IAA8C;IAE9C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,CAAmB,0CAA0C;IAC/F,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC,CAAW,sCAAsC;IAC3F,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,CAAC,QAAQ;YAAE,SAAS,CAA2B,gDAAgD;QACnG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,CAAmB,6BAA6B;IAClF,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpE,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"escalation-format.js","sourceRoot":"","sources":["../src/escalation-format.ts"],"names":[],"mappings":"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"}
|
package/dist/gh.d.ts
CHANGED
|
@@ -110,6 +110,17 @@ export interface GhPR {
|
|
|
110
110
|
/** Open PRs authored by the current gh user. */
|
|
111
111
|
export declare function ghPRListMine(repo: string, limit?: number): GhPR[];
|
|
112
112
|
/** The authenticated GitHub login (for "is this comment mine?" checks). */
|
|
113
|
+
export interface GhUser {
|
|
114
|
+
login: string;
|
|
115
|
+
id: number;
|
|
116
|
+
name: string;
|
|
117
|
+
email: string;
|
|
118
|
+
}
|
|
119
|
+
/** The authenticated GitHub account (login/id/name/public email). */
|
|
120
|
+
export declare function ghUser(): GhUser;
|
|
121
|
+
/** The email to commit with: the account's public email, else the GitHub
|
|
122
|
+
* noreply form — which forges always match to the account. */
|
|
123
|
+
export declare function ghMatchedEmail(u: GhUser): string;
|
|
113
124
|
export declare function ghCurrentLogin(): string;
|
|
114
125
|
/** Open issues carrying a given label, newest-updated first, with comments. */
|
|
115
126
|
export declare function ghIssueListByLabel(repo: string, label: string, limit?: number): (GhIssue & {
|
|
@@ -119,11 +130,25 @@ export declare function ghIssueListByLabel(repo: string, label: string, limit?:
|
|
|
119
130
|
export declare function ghPRDiffText(repo: string, number: number): string;
|
|
120
131
|
/** One PR with the full field set (CI, reviews, labels, mergeable, base). */
|
|
121
132
|
export declare function ghPRView(repo: string, number: number): GhPR;
|
|
122
|
-
/**
|
|
133
|
+
/** The palette color for a label name, or undefined for labels ShipFlow
|
|
134
|
+
* doesn't own (repo-specific names stay whatever color the repo chose). */
|
|
135
|
+
export declare function labelColorFor(name: string): string | undefined;
|
|
123
136
|
export declare function ghEnsureLabel(repo: string, name: string, color?: string, description?: string): void;
|
|
124
137
|
export declare function ghIssueAddLabels(repo: string, number: number, labels: string[]): void;
|
|
125
138
|
export declare function ghIssueRemoveLabel(repo: string, number: number, label: string): void;
|
|
126
139
|
export declare function ghIssueComment(repo: string, number: number, body: string): void;
|
|
140
|
+
/** The issue's author login — the escalate command's owner-of-last-resort.
|
|
141
|
+
* Best-effort: null on any gh failure rather than blocking the escalation. */
|
|
142
|
+
export declare function ghIssueAuthor(repo: string, number: number): string | null;
|
|
143
|
+
export interface GhIssueComment {
|
|
144
|
+
id: string;
|
|
145
|
+
body: string;
|
|
146
|
+
viewerDidAuthor: boolean;
|
|
147
|
+
}
|
|
148
|
+
/** All comments on an issue, oldest-first (gh's native order). */
|
|
149
|
+
export declare function ghIssueComments(repo: string, number: number): GhIssueComment[];
|
|
150
|
+
/** Edit an existing issue comment in place (id = node id from ghIssueComments). */
|
|
151
|
+
export declare function ghUpdateIssueComment(commentId: string, body: string): void;
|
|
127
152
|
export interface GhReviewThread {
|
|
128
153
|
id: string;
|
|
129
154
|
isResolved: boolean;
|
|
@@ -132,6 +157,20 @@ export interface GhReviewThread {
|
|
|
132
157
|
author: string;
|
|
133
158
|
body: string;
|
|
134
159
|
}
|
|
160
|
+
/** Create a formal PR review with inline comments in one call — the CLI
|
|
161
|
+
* counterpart of the server's CreatePRReview (issue #96). Posts via the REST
|
|
162
|
+
* reviews endpoint with a JSON body on stdin so multi-line finding bodies
|
|
163
|
+
* survive intact. Event is always COMMENT (advisory). */
|
|
164
|
+
export declare function ghCreateReview(repo: string, number: number, payload: {
|
|
165
|
+
event: string;
|
|
166
|
+
body: string;
|
|
167
|
+
comments: {
|
|
168
|
+
path: string;
|
|
169
|
+
line: number;
|
|
170
|
+
side: string;
|
|
171
|
+
body: string;
|
|
172
|
+
}[];
|
|
173
|
+
}): void;
|
|
135
174
|
export declare function ghReviewThreads(repo: string, number: number): GhReviewThread[];
|
|
136
175
|
/** Mark a review thread resolved (after the loop has addressed it). Best-effort. */
|
|
137
176
|
export declare function ghResolveReviewThread(threadId: string): void;
|
package/dist/gh.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gh.d.ts","sourceRoot":"","sources":["../src/gh.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"gh.d.ts","sourceRoot":"","sources":["../src/gh.ts"],"names":[],"mappings":"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"}
|
package/dist/gh.js
CHANGED
|
@@ -111,7 +111,17 @@ export function ghPRListMine(repo, limit = 30) {
|
|
|
111
111
|
const out = _exec(`gh pr list --repo ${shellQuote(repo)} --author @me --state open --limit ${limit} --json ${PR_FIELDS}`).toString();
|
|
112
112
|
return JSON.parse(out);
|
|
113
113
|
}
|
|
114
|
-
/** The authenticated GitHub
|
|
114
|
+
/** The authenticated GitHub account (login/id/name/public email). */
|
|
115
|
+
export function ghUser() {
|
|
116
|
+
const out = _exec("gh api user").toString();
|
|
117
|
+
const u = JSON.parse(out);
|
|
118
|
+
return { login: String(u.login ?? ""), id: Number(u.id ?? 0), name: String(u.name ?? "") || String(u.login ?? ""), email: String(u.email ?? "") };
|
|
119
|
+
}
|
|
120
|
+
/** The email to commit with: the account's public email, else the GitHub
|
|
121
|
+
* noreply form — which forges always match to the account. */
|
|
122
|
+
export function ghMatchedEmail(u) {
|
|
123
|
+
return u.email || `${u.id}+${u.login}@users.noreply.github.com`;
|
|
124
|
+
}
|
|
115
125
|
export function ghCurrentLogin() {
|
|
116
126
|
try {
|
|
117
127
|
return _exec("gh api user --jq .login").toString().trim();
|
|
@@ -135,9 +145,52 @@ export function ghPRView(repo, number) {
|
|
|
135
145
|
return JSON.parse(out);
|
|
136
146
|
}
|
|
137
147
|
/** Create-or-update a label so add-label can't fail on a missing label. Best-effort. */
|
|
138
|
-
|
|
148
|
+
// Label colors by convention — keep in sync with the server's ensureLabels
|
|
149
|
+
// colorMap (github_helper.go). ShipFlow OWNS these labels' colors: known names
|
|
150
|
+
// are created/repainted with --force, so a previously-grayed palette label
|
|
151
|
+
// heals on next touch.
|
|
152
|
+
const LABEL_COLORS = {
|
|
153
|
+
bug: "d73a4a",
|
|
154
|
+
enhancement: "a2eeef",
|
|
155
|
+
feature: "a2eeef",
|
|
156
|
+
task: "0052cc",
|
|
157
|
+
"priority:low": "0e8a16",
|
|
158
|
+
"priority:medium": "fbca04",
|
|
159
|
+
"priority:high": "ff9f1c",
|
|
160
|
+
"priority:critical": "e11d48",
|
|
161
|
+
"severity:cosmetic": "c5def5",
|
|
162
|
+
"severity:minor": "0e8a16",
|
|
163
|
+
"severity:major": "ff9f1c",
|
|
164
|
+
"severity:blocking": "e11d48",
|
|
165
|
+
"🤖 in-progress": "1d76db",
|
|
166
|
+
"needs-reporter-review": "d4c5f9",
|
|
167
|
+
"needs-human": "d93f0b",
|
|
168
|
+
"shipflow-approved": "0e8a16",
|
|
169
|
+
"loop-proceed": "0e8a16",
|
|
170
|
+
"auto-qa": "5319e7",
|
|
171
|
+
};
|
|
172
|
+
const LABEL_PREFIX_COLORS = { "category:": "5319e7" };
|
|
173
|
+
/** The palette color for a label name, or undefined for labels ShipFlow
|
|
174
|
+
* doesn't own (repo-specific names stay whatever color the repo chose). */
|
|
175
|
+
export function labelColorFor(name) {
|
|
176
|
+
// hasOwnProperty guard: a label named "toString"/"constructor" must not
|
|
177
|
+
// resolve to an inherited Object.prototype member.
|
|
178
|
+
if (Object.prototype.hasOwnProperty.call(LABEL_COLORS, name))
|
|
179
|
+
return LABEL_COLORS[name];
|
|
180
|
+
for (const [prefix, c] of Object.entries(LABEL_PREFIX_COLORS)) {
|
|
181
|
+
if (name.startsWith(prefix))
|
|
182
|
+
return c;
|
|
183
|
+
}
|
|
184
|
+
return undefined;
|
|
185
|
+
}
|
|
186
|
+
export function ghEnsureLabel(repo, name, color, description = "") {
|
|
187
|
+
// Known color (explicit or palette) → --force: ShipFlow owns it, and force
|
|
188
|
+
// also repairs a label an older CLI grayed out. Unknown label → create only
|
|
189
|
+
// if missing, NEVER --force: a gray default must not clobber custom colors.
|
|
190
|
+
const resolved = color ?? labelColorFor(name);
|
|
191
|
+
const force = resolved !== undefined;
|
|
139
192
|
try {
|
|
140
|
-
_exec(`gh label create ${shellQuote(name)} --repo ${shellQuote(repo)} --color ${shellQuote(
|
|
193
|
+
_exec(`gh label create ${shellQuote(name)} --repo ${shellQuote(repo)} --color ${shellQuote(resolved ?? "ededed")} --description ${shellQuote(description)}${force ? " --force" : ""}`, { stdio: "ignore" });
|
|
141
194
|
}
|
|
142
195
|
catch {
|
|
143
196
|
/* label already exists / no perms — add-label will still work if it exists */
|
|
@@ -160,6 +213,38 @@ export function ghIssueRemoveLabel(repo, number, label) {
|
|
|
160
213
|
export function ghIssueComment(repo, number, body) {
|
|
161
214
|
_exec(`gh issue comment ${number} --repo ${shellQuote(repo)} --body ${shellQuote(body)}`, { stdio: "ignore" });
|
|
162
215
|
}
|
|
216
|
+
/** The issue's author login — the escalate command's owner-of-last-resort.
|
|
217
|
+
* Best-effort: null on any gh failure rather than blocking the escalation. */
|
|
218
|
+
export function ghIssueAuthor(repo, number) {
|
|
219
|
+
try {
|
|
220
|
+
const out = _exec(`gh issue view ${number} --repo ${shellQuote(repo)} --json author`).toString();
|
|
221
|
+
return JSON.parse(out)?.author?.login || null;
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
return null;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/** All comments on an issue, oldest-first (gh's native order). */
|
|
228
|
+
export function ghIssueComments(repo, number) {
|
|
229
|
+
const out = _exec(`gh issue view ${number} --repo ${shellQuote(repo)} --json comments`).toString();
|
|
230
|
+
const nodes = (JSON.parse(out)?.comments ?? []);
|
|
231
|
+
return nodes.map((c) => ({ id: String(c.id ?? ""), body: String(c.body ?? ""), viewerDidAuthor: !!c.viewerDidAuthor }));
|
|
232
|
+
}
|
|
233
|
+
/** Edit an existing issue comment in place (id = node id from ghIssueComments). */
|
|
234
|
+
export function ghUpdateIssueComment(commentId, body) {
|
|
235
|
+
const m = "mutation($id:ID!,$b:String!){updateIssueComment(input:{id:$id,body:$b}){issueComment{id}}}";
|
|
236
|
+
_exec(`gh api graphql -f query=${shellQuote(m)} -f id=${shellQuote(commentId)} -f b=${shellQuote(body)}`, { stdio: "ignore" });
|
|
237
|
+
}
|
|
238
|
+
/** Create a formal PR review with inline comments in one call — the CLI
|
|
239
|
+
* counterpart of the server's CreatePRReview (issue #96). Posts via the REST
|
|
240
|
+
* reviews endpoint with a JSON body on stdin so multi-line finding bodies
|
|
241
|
+
* survive intact. Event is always COMMENT (advisory). */
|
|
242
|
+
export function ghCreateReview(repo, number, payload) {
|
|
243
|
+
const [owner, name] = repo.split("/");
|
|
244
|
+
// JSON on stdin (--input -) so multi-line finding bodies survive intact
|
|
245
|
+
// instead of being mangled through argv quoting.
|
|
246
|
+
_exec(`gh api repos/${shellQuote(owner)}/${shellQuote(name)}/pulls/${number}/reviews --method POST --input -`, { input: JSON.stringify(payload), stdio: ["pipe", "ignore", "pipe"] });
|
|
247
|
+
}
|
|
163
248
|
export function ghReviewThreads(repo, number) {
|
|
164
249
|
const [owner, name] = repo.split("/");
|
|
165
250
|
const q = "query($o:String!,$r:String!,$n:Int!){repository(owner:$o,name:$r){pullRequest(number:$n){" +
|
package/dist/gh.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gh.js","sourceRoot":"","sources":["../src/gh.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gh.js","sourceRoot":"","sources":["../src/gh.ts"],"names":[],"mappings":"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"}
|
package/dist/git-local.d.ts
CHANGED
|
@@ -24,4 +24,8 @@ export declare function parseWorktrees(porcelain: string): WorktreeRecord[];
|
|
|
24
24
|
* Best-effort: never throws, since cleanup must not fail an otherwise-
|
|
25
25
|
* successful merge. Keeps `stdio: "ignore"` so git chatter stays quiet. */
|
|
26
26
|
export declare function cleanupMergedLocalBranch(headBranch: string): void;
|
|
27
|
+
/** Why an author email will fail forge matching, or null when it looks fine. */
|
|
28
|
+
export declare function suspiciousCommitEmail(email: string, hostname: string): string | null;
|
|
29
|
+
/** Deduped "email — reason" lines for every suspicious address in the list. */
|
|
30
|
+
export declare function findSuspiciousEmails(emails: string[], hostname: string): string[];
|
|
27
31
|
//# sourceMappingURL=git-local.d.ts.map
|
package/dist/git-local.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-local.d.ts","sourceRoot":"","sources":["../src/git-local.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;8CAG8C;AAC9C,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,EAAE,CAiBlE;AAED;;;;;;;;;;;;;;2EAc2E;AAC3E,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAwCjE"}
|
|
1
|
+
{"version":3,"file":"git-local.d.ts","sourceRoot":"","sources":["../src/git-local.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;8CAG8C;AAC9C,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,EAAE,CAiBlE;AAED;;;;;;;;;;;;;;2EAc2E;AAC3E,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAwCjE;AAQD,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAapF;AAED,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAWjF"}
|
package/dist/git-local.js
CHANGED
|
@@ -84,4 +84,41 @@ export function cleanupMergedLocalBranch(headBranch) {
|
|
|
84
84
|
unavailable, or a worktree op may fail; none should fail the merge. */
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
+
// ── git identity guard (issue #90): machine-derived commit emails ───────────
|
|
88
|
+
// A git process with no configured user.email fabricates `user@hostname`;
|
|
89
|
+
// forges (Vercel, GitHub) can't match those to an account and block deploys.
|
|
90
|
+
const MACHINE_DOMAIN_SUFFIXES = [".local", ".ts.net", ".lan", ".internal"];
|
|
91
|
+
/** Why an author email will fail forge matching, or null when it looks fine. */
|
|
92
|
+
export function suspiciousCommitEmail(email, hostname) {
|
|
93
|
+
const e = email.trim().toLowerCase();
|
|
94
|
+
if (!e || !e.includes("@"))
|
|
95
|
+
return "empty or malformed";
|
|
96
|
+
const domain = e.split("@")[1];
|
|
97
|
+
if (domain === "localhost")
|
|
98
|
+
return 'machine-derived domain "localhost"';
|
|
99
|
+
for (const suf of MACHINE_DOMAIN_SUFFIXES) {
|
|
100
|
+
if (domain.endsWith(suf))
|
|
101
|
+
return `machine-derived domain "${domain}"`;
|
|
102
|
+
}
|
|
103
|
+
const h = hostname.trim().toLowerCase();
|
|
104
|
+
if (h && (domain === h || domain.startsWith(h + "."))) {
|
|
105
|
+
return `domain matches this machine's hostname ("${domain}")`;
|
|
106
|
+
}
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
/** Deduped "email — reason" lines for every suspicious address in the list. */
|
|
110
|
+
export function findSuspiciousEmails(emails, hostname) {
|
|
111
|
+
const seen = new Set();
|
|
112
|
+
const out = [];
|
|
113
|
+
for (const email of emails) {
|
|
114
|
+
const key = email.trim().toLowerCase();
|
|
115
|
+
if (seen.has(key))
|
|
116
|
+
continue;
|
|
117
|
+
seen.add(key);
|
|
118
|
+
const reason = suspiciousCommitEmail(email, hostname);
|
|
119
|
+
if (reason)
|
|
120
|
+
out.push(`${email} — ${reason}`);
|
|
121
|
+
}
|
|
122
|
+
return out;
|
|
123
|
+
}
|
|
87
124
|
//# sourceMappingURL=git-local.js.map
|
package/dist/git-local.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-local.js","sourceRoot":"","sources":["../src/git-local.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"git-local.js","sourceRoot":"","sources":["../src/git-local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAQ5C;;;8CAG8C;AAC9C,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,IAAI,GAAG,GAAmD,IAAI,CAAC;IAC/D,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,GAAG;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACjC,KAAK,EAAE,CAAC;YACR,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACtE,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC;YAC7C,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;IACD,KAAK,EAAE,CAAC;IACR,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;2EAc2E;AAC3E,MAAM,UAAU,wBAAwB,CAAC,UAAkB;IACzD,IAAI,CAAC,UAAU;QAAE,OAAO;IACxB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,cAAc,CAC9B,KAAK,CAAC,+BAA+B,CAAC,CAAC,QAAQ,EAAE,CAClD,CAAC;QACF,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,cAAc,UAAU,EAAE,CAAC,CAAC;QAC5E,IAAI,IAAI,EAAE,CAAC;YACT,yEAAyE;YACzE,gDAAgD;YAChD,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,KAAK,CAAC,+BAA+B,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC5E,MAAM,sBAAsB,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC;gBACvE,yEAAyE;gBACzE,uEAAuE;gBACvE,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE;oBACzB,IAAI,CAAC;wBACH,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC,UAAU,CAAC,CAAC;oBAC9D,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;oBAClC,CAAC;gBACH,CAAC,CAAC,EAAE,CAAC;gBACL,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,sBAAsB,IAAI,CAAC,YAAY,EAAE,CAAC;oBAC7D,6DAA6D;oBAC7D,KAAK,CAAC,+BAA+B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACrF,CAAC;qBAAM,CAAC;oBACN,sEAAsE;oBACtE,oCAAoC;oBACpC,KAAK,CAAC,UAAU,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,6EAA6E;YAC/E,CAAC;QACH,CAAC;QACD,KAAK,CAAC,iBAAiB,UAAU,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtE,KAAK,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP;iFACyE;IAC3E,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,0EAA0E;AAC1E,6EAA6E;AAE7E,MAAM,uBAAuB,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAE3E,gFAAgF;AAChF,MAAM,UAAU,qBAAqB,CAAC,KAAa,EAAE,QAAgB;IACnE,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,oBAAoB,CAAC;IACxD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,oCAAoC,CAAC;IACxE,KAAK,MAAM,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAC1C,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,2BAA2B,MAAM,GAAG,CAAC;IACxE,CAAC;IACD,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACxC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;QACtD,OAAO,4CAA4C,MAAM,IAAI,CAAC;IAChE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,oBAAoB,CAAC,MAAgB,EAAE,QAAgB;IACrE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtD,IAAI,MAAM;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,7 @@ import { registerChannelCommands } from "./commands/channels.js";
|
|
|
9
9
|
import { registerStatsCommand } from "./commands/stats.js";
|
|
10
10
|
import { registerTriggerCommand } from "./commands/trigger.js";
|
|
11
11
|
import { registerLoginCommand } from "./commands/login.js";
|
|
12
|
+
import { registerGitIdentityCommand } from "./commands/git-identity.js";
|
|
12
13
|
import { registerInitCommand } from "./commands/init.js";
|
|
13
14
|
import { registerStatusCommand } from "./commands/status.js";
|
|
14
15
|
import { registerIssuesCommand } from "./commands/issues.js";
|
|
@@ -47,6 +48,7 @@ registerChannelCommands(program);
|
|
|
47
48
|
registerStatsCommand(program);
|
|
48
49
|
registerTriggerCommand(program);
|
|
49
50
|
registerLoginCommand(program);
|
|
51
|
+
registerGitIdentityCommand(program);
|
|
50
52
|
registerInitCommand(program);
|
|
51
53
|
registerStatusCommand(program);
|
|
52
54
|
registerIssuesCommand(program);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/packet.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { GhComment, GhIssue, GhPR, GhReviewThread } from "./gh.js";
|
|
2
|
-
export declare const PACKET_PER_FILE_CAP
|
|
3
|
-
export declare const PACKET_TOTAL_CAP
|
|
4
|
-
export declare const PACKET_BRIEF_CAP
|
|
2
|
+
export declare const PACKET_PER_FILE_CAP: number;
|
|
3
|
+
export declare const PACKET_TOTAL_CAP: number;
|
|
4
|
+
export declare const PACKET_BRIEF_CAP: number;
|
|
5
5
|
export declare function isNoiseDiffPath(path: string): boolean;
|
|
6
6
|
export interface DiffSection {
|
|
7
7
|
path: string;
|
|
@@ -20,6 +20,43 @@ export interface FilteredDiff {
|
|
|
20
20
|
export declare function filterDiffForPacket(diff: string): FilteredDiff;
|
|
21
21
|
/** Lines from PR comments that carry test evidence / health captions. */
|
|
22
22
|
export declare function extractEvidenceLines(comments: GhComment[]): string[];
|
|
23
|
+
/** One feature from the project map, reduced to what the packet needs. */
|
|
24
|
+
export interface FeaturePathsEntry {
|
|
25
|
+
key: string;
|
|
26
|
+
name: string;
|
|
27
|
+
paths: string[];
|
|
28
|
+
layer?: string;
|
|
29
|
+
description?: string;
|
|
30
|
+
testPriority?: string;
|
|
31
|
+
}
|
|
32
|
+
/** Directory-boundary ownership: "src/app/admin" owns "src/app/admin/…" and
|
|
33
|
+
* the exact path itself, but never "src/app/admin-shop/…". A leading "./" on
|
|
34
|
+
* the prefix is ignored; an empty prefix owns nothing. Keep in lockstep with
|
|
35
|
+
* the server's reviewcontract.OwnsPath — both must pass the canonical
|
|
36
|
+
* contract's ownsTestVectors (contract-parity.test.ts). */
|
|
37
|
+
export declare function ownsPath(prefix: string, path: string): boolean;
|
|
38
|
+
/** Names of the features whose path prefixes match any non-noise diff path,
|
|
39
|
+
* in feature-map order, deduped. */
|
|
40
|
+
export declare function touchedFeatures(diffPaths: string[], features: FeaturePathsEntry[]): string[];
|
|
41
|
+
export interface EvidenceCoverage {
|
|
42
|
+
/** Distinct proofs found: evidence-bearing COMMENTS (one `issue evidence`
|
|
43
|
+
* bundle posts one comment). Counting matched lines would let one proof
|
|
44
|
+
* that renders as N caption lines silently satisfy N features. */
|
|
45
|
+
evidenceItems: number;
|
|
46
|
+
/** Set when the PR touches >1 feature with fewer proofs than features. */
|
|
47
|
+
warning: string | null;
|
|
48
|
+
}
|
|
49
|
+
/** The deterministic layer under the per-feature evidence rule: a PR that
|
|
50
|
+
* touches more than one feature needs at least one proof per feature. The
|
|
51
|
+
* semantic judgment (which proof covers which feature) stays with the
|
|
52
|
+
* reviewer; this only counts — conservatively, by comment. */
|
|
53
|
+
export declare function assessEvidenceCoverage(touched: string[], comments: Array<{
|
|
54
|
+
body?: string;
|
|
55
|
+
}>): EvidenceCoverage;
|
|
56
|
+
/** The "### Deviations from brief" section of a PR body — where the worker
|
|
57
|
+
* logs off-brief pivots (field-guide pattern: deviations must be visible to
|
|
58
|
+
* review, not buried in commit messages). Empty string when absent. */
|
|
59
|
+
export declare function extractDeviations(prBody: string): string;
|
|
23
60
|
export interface PacketInput {
|
|
24
61
|
pr: GhPR & {
|
|
25
62
|
body?: string;
|
|
@@ -30,6 +67,9 @@ export interface PacketInput {
|
|
|
30
67
|
issue: (GhIssue & {
|
|
31
68
|
linkKind: string;
|
|
32
69
|
}) | null;
|
|
70
|
+
/** Project feature map (paths only) — enables the evidence-coverage check.
|
|
71
|
+
* Omitted when the map couldn't be fetched; the packet stays quiet then. */
|
|
72
|
+
features?: FeaturePathsEntry[];
|
|
33
73
|
}
|
|
34
74
|
/** Render the full review packet as markdown. */
|
|
35
75
|
export declare function buildReviewPacket(input: PacketInput): string;
|
package/dist/packet.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet.d.ts","sourceRoot":"","sources":["../src/packet.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"packet.d.ts","sourceRoot":"","sources":["../src/packet.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAMxE,eAAO,MAAM,mBAAmB,EAAE,MAA+C,CAAC;AAClF,eAAO,MAAM,gBAAgB,EAAE,MAA+C,CAAC;AAC/E,eAAO,MAAM,gBAAgB,EAAE,MAAyC,CAAC;AAoBzE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CASrD;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,kEAAkE;AAClE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAe5D;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,gEAAgE;AAChE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CA2B9D;AAED,yEAAyE;AACzE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAYpE;AAED,0EAA0E;AAC1E,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;4DAI4D;AAC5D,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAI9D;AAED;qCACqC;AACrC,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,MAAM,EAAE,CAS5F;AAED,MAAM,WAAW,gBAAgB;IAC/B;;uEAEmE;IACnE,aAAa,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED;;;+DAG+D;AAC/D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,gBAAgB,CAmB9G;AAED;;wEAEwE;AACxE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,IAAI,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,KAAK,EAAE,CAAC,OAAO,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IAC/C;iFAC6E;IAC7E,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAED,iDAAiD;AACjD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAmH5D"}
|