@renaiss-shipflow/cli 0.10.0 → 0.11.0

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.
Files changed (51) hide show
  1. package/dist/client.d.ts +19 -0
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +5 -0
  4. package/dist/client.js.map +1 -1
  5. package/dist/commands/config.d.ts.map +1 -1
  6. package/dist/commands/config.js +3 -1
  7. package/dist/commands/config.js.map +1 -1
  8. package/dist/commands/git-identity.d.ts +3 -0
  9. package/dist/commands/git-identity.d.ts.map +1 -0
  10. package/dist/commands/git-identity.js +77 -0
  11. package/dist/commands/git-identity.js.map +1 -0
  12. package/dist/commands/issue.d.ts.map +1 -1
  13. package/dist/commands/issue.js +49 -6
  14. package/dist/commands/issue.js.map +1 -1
  15. package/dist/commands/login.d.ts.map +1 -1
  16. package/dist/commands/login.js +16 -2
  17. package/dist/commands/login.js.map +1 -1
  18. package/dist/commands/pr.d.ts.map +1 -1
  19. package/dist/commands/pr.js +107 -3
  20. package/dist/commands/pr.js.map +1 -1
  21. package/dist/commands/stats.d.ts +7 -0
  22. package/dist/commands/stats.d.ts.map +1 -1
  23. package/dist/commands/stats.js +48 -1
  24. package/dist/commands/stats.js.map +1 -1
  25. package/dist/config.d.ts +7 -0
  26. package/dist/config.d.ts.map +1 -1
  27. package/dist/config.js +9 -0
  28. package/dist/config.js.map +1 -1
  29. package/dist/escalation-format.d.ts +35 -2
  30. package/dist/escalation-format.d.ts.map +1 -1
  31. package/dist/escalation-format.js +81 -4
  32. package/dist/escalation-format.js.map +1 -1
  33. package/dist/gh.d.ts +40 -1
  34. package/dist/gh.d.ts.map +1 -1
  35. package/dist/gh.js +88 -3
  36. package/dist/gh.js.map +1 -1
  37. package/dist/git-local.d.ts +4 -0
  38. package/dist/git-local.d.ts.map +1 -1
  39. package/dist/git-local.js +37 -0
  40. package/dist/git-local.js.map +1 -1
  41. package/dist/index.js +2 -0
  42. package/dist/index.js.map +1 -1
  43. package/dist/packet.d.ts +35 -1
  44. package/dist/packet.d.ts.map +1 -1
  45. package/dist/packet.js +91 -1
  46. package/dist/packet.js.map +1 -1
  47. package/dist/review-contract.d.ts +59 -0
  48. package/dist/review-contract.d.ts.map +1 -0
  49. package/dist/review-contract.js +129 -0
  50. package/dist/review-contract.js.map +1 -0
  51. package/package.json +1 -1
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
- /** Create-or-update a label so add-label can't fail on a missing label. Best-effort. */
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 login (for "is this comment mine?" checks). */
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
- export function ghEnsureLabel(repo, name, color = "ededed", description = "") {
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(color)} --description ${shellQuote(description)} --force`, { stdio: "ignore" });
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":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEpD,uEAAuE;AACvE,kFAAkF;AAClF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,MAAM,GAAG,wDAAwD,CAAC;AAExE,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC;QACH,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC;QACH,KAAK,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7C,OAAO,WAAW,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,YAAY,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;AAClD,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,WAAW;IACzB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACxB,CAAC;AAaD,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,MAAc;IACtD,MAAM,GAAG,GAAG,KAAK,CACf,iBAAiB,MAAM,WAAW,UAAU,CAAC,IAAI,CAAC,WAAW,MAAM,EAAE,CACtE,CAAC,QAAQ,EAAE,CAAC;IACb,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;AACpC,CAAC;AAED,wEAAwE;AACxE,+EAA+E;AAC/E,8EAA8E;AAC9E,oEAAoE;AACpE,MAAM,uBAAuB,GAAG,2BAA2B,CAAC;AAE5D,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY,EAAE,SAAmB,EAAE;IAC5F,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3E,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC3D,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,uBAAuB,EAAE,CAAC;IAChE,4EAA4E;IAC5E,yEAAyE;IACzE,MAAM,GAAG,GAAG,KAAK,CACf,0BAA0B,UAAU,CAAC,IAAI,CAAC,YAAY,UAAU,CAAC,KAAK,CAAC,WAAW,UAAU,CAAC,cAAc,CAAC,IAAI,UAAU,EAAE,CAC7H,CAAC,QAAQ,EAAE,CAAC;IACb,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3H,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IACzD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,GAAG,EAAE;IAClE,MAAM,GAAG,GAAG,KAAK,CACf,wBAAwB,UAAU,CAAC,IAAI,CAAC,YAAY,KAAK,YAAY,KAAK,WAAW,MAAM,EAAE,CAC9F,CAAC,QAAQ,EAAE,CAAC;IACb,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,CAAC;AACtC,CAAC;AAsBD,MAAM,aAAa,GAAG,GAAG,MAAM,sCAAsC,CAAC;AAEtE,yEAAyE;AACzE,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,IAAoB,EAAE;IACtE,MAAM,KAAK,GAAG;QACZ,eAAe;QACf,UAAU,UAAU,CAAC,IAAI,CAAC,EAAE;QAC5B,WAAW,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,EAAE;QAC1C,WAAW,CAAC,CAAC,KAAK,IAAI,IAAI,EAAE;QAC5B,UAAU,aAAa,EAAE;KAC1B,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACvE,IAAI,CAAC,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnE,IAAI,CAAC,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChE,IAAI,CAAC,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACtE,IAAI,CAAC,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;AAC5C,CAAC;AAID,MAAM,UAAU,UAAU,CAAC,IAE1B;IACC,MAAM,KAAK,GAAG,CAAC,cAAc,EAAE,UAAU,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrG,IAAI,IAAI,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChE,IAAI,IAAI,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7D,IAAI,IAAI,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7D,IAAI,IAAI,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;IACrD,yCAAyC;IACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IACzD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,MAAc,EAAE,OAAsC,QAAQ,EAAE,YAAY,GAAG,IAAI;IACzH,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5B,IAAI,YAAY;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChD,KAAK,CAAC,eAAe,MAAM,WAAW,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACnG,4EAA4E;IAC5E,kEAAkE;IAClE,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,MAAM,WAAW,UAAU,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAChH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA6D,CAAC;IAC5F,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;AAC5F,CAAC;AA0BD,MAAM,SAAS,GACb,sKAAsK,CAAC;AAEzK,gDAAgD;AAChD,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,KAAK,GAAG,EAAE;IACnD,MAAM,GAAG,GAAG,KAAK,CACf,qBAAqB,UAAU,CAAC,IAAI,CAAC,sCAAsC,KAAK,WAAW,SAAS,EAAE,CACvG,CAAC,QAAQ,EAAE,CAAC;IACb,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAW,CAAC;AACnC,CAAC;AAUD,qEAAqE;AACrE,MAAM,UAAU,MAAM;IACpB,MAAM,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;AACpJ,CAAC;AAED;+DAC+D;AAC/D,MAAM,UAAU,cAAc,CAAC,CAAS;IACtC,OAAO,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,2BAA2B,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,OAAO,KAAK,CAAC,yBAAyB,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,KAAa,EAAE,KAAK,GAAG,EAAE;IACxE,MAAM,GAAG,GAAG,KAAK,CACf,wBAAwB,UAAU,CAAC,IAAI,CAAC,yBAAyB,UAAU,CAAC,KAAK,CAAC,YAAY,KAAK,WAAW,MAAM,WAAW,CAChI,CAAC,QAAQ,EAAE,CAAC;IACb,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4C,CAAC;AACpE,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,MAAc;IACvD,OAAO,KAAK,CAAC,cAAc,MAAM,WAAW,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC9G,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,MAAc;IACnD,MAAM,GAAG,GAAG,KAAK,CAAC,cAAc,MAAM,WAAW,UAAU,CAAC,IAAI,CAAC,WAAW,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpG,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAS,CAAC;AACjC,CAAC;AAED,wFAAwF;AACxF,2EAA2E;AAC3E,+EAA+E;AAC/E,2EAA2E;AAC3E,uBAAuB;AACvB,MAAM,YAAY,GAA2B;IAC3C,GAAG,EAAE,QAAQ;IACb,WAAW,EAAE,QAAQ;IACrB,OAAO,EAAE,QAAQ;IACjB,IAAI,EAAE,QAAQ;IACd,cAAc,EAAE,QAAQ;IACxB,iBAAiB,EAAE,QAAQ;IAC3B,eAAe,EAAE,QAAQ;IACzB,mBAAmB,EAAE,QAAQ;IAC7B,mBAAmB,EAAE,QAAQ;IAC7B,gBAAgB,EAAE,QAAQ;IAC1B,gBAAgB,EAAE,QAAQ;IAC1B,mBAAmB,EAAE,QAAQ;IAC7B,gBAAgB,EAAE,QAAQ;IAC1B,uBAAuB,EAAE,QAAQ;IACjC,aAAa,EAAE,QAAQ;IACvB,mBAAmB,EAAE,QAAQ;IAC7B,cAAc,EAAE,QAAQ;IACxB,SAAS,EAAE,QAAQ;CACpB,CAAC;AACF,MAAM,mBAAmB,GAA2B,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AAE9E;4EAC4E;AAC5E,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,wEAAwE;IACxE,mDAAmD;IACnD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IACxF,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC9D,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,IAAY,EAAE,KAAc,EAAE,WAAW,GAAG,EAAE;IACxF,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,QAAQ,GAAG,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,QAAQ,KAAK,SAAS,CAAC;IACrC,IAAI,CAAC;QACH,KAAK,CACH,mBAAmB,UAAU,CAAC,IAAI,CAAC,WAAW,UAAU,CAAC,IAAI,CAAC,YAAY,UAAU,CAAC,QAAQ,IAAI,QAAQ,CAAC,kBAAkB,UAAU,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAC/K,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,8EAA8E;IAChF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,MAAc,EAAE,MAAgB;IAC7E,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO;IAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1E,KAAK,CAAC,iBAAiB,MAAM,WAAW,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,MAAc,EAAE,KAAa;IAC5E,IAAI,CAAC;QACH,KAAK,CAAC,iBAAiB,MAAM,WAAW,UAAU,CAAC,IAAI,CAAC,mBAAmB,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvH,CAAC;IAAC,MAAM,CAAC;QACP,0BAA0B;IAC5B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,MAAc,EAAE,IAAY;IACvE,KAAK,CAAC,oBAAoB,MAAM,WAAW,UAAU,CAAC,IAAI,CAAC,WAAW,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AACjH,CAAC;AAED;+EAC+E;AAC/E,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,MAAc;IACxD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,iBAAiB,MAAM,WAAW,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC;QACjG,OAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAgB,IAAI,IAAI,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAQD,kEAAkE;AAClE,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,MAAc;IAC1D,MAAM,GAAG,GAAG,KAAK,CAAC,iBAAiB,MAAM,WAAW,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnG,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAU,CAAC;IACzD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AAC1H,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,oBAAoB,CAAC,SAAiB,EAAE,IAAY;IAClE,MAAM,CAAC,GAAG,4FAA4F,CAAC;IACvG,KAAK,CAAC,2BAA2B,UAAU,CAAC,CAAC,CAAC,UAAU,UAAU,CAAC,SAAS,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AACjI,CAAC;AAeD;;;0DAG0D;AAC1D,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,MAAc,EAAE,OAAgH;IAC3K,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,wEAAwE;IACxE,iDAAiD;IACjD,KAAK,CACH,gBAAgB,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,MAAM,kCAAkC,EACvG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CACtE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,MAAc;IAC1D,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,CAAC,GACL,2FAA2F;QAC3F,0GAA0G,CAAC;IAC7G,MAAM,GAAG,GAAG,KAAK,CACf,2BAA2B,UAAU,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,KAAK,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,SAAS,MAAM,EAAE,CAC7G,CAAC,QAAQ,EAAE,CAAC;IACb,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,IAAI,EAAE,CAAU,CAAC;IACpG,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvC,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU;YAC1B,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;YACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;YAC7B,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;SACnC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,MAAM,CAAC,GAAG,gFAAgF,CAAC;IAC3F,IAAI,CAAC;QACH,KAAK,CAAC,2BAA2B,UAAU,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtG,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;AACH,CAAC"}
@@ -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
@@ -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
@@ -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":"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"}
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
2
  export declare const PACKET_PER_FILE_CAP = 6000;
3
3
  export declare const PACKET_TOTAL_CAP = 60000;
4
- export declare const PACKET_BRIEF_CAP = 4000;
4
+ export declare const PACKET_BRIEF_CAP = 8000;
5
5
  export declare function isNoiseDiffPath(path: string): boolean;
6
6
  export interface DiffSection {
7
7
  path: string;
@@ -20,6 +20,37 @@ 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
+ /** Names of the features whose path prefixes match any non-noise diff path,
33
+ * in feature-map order, deduped. */
34
+ export declare function touchedFeatures(diffPaths: string[], features: FeaturePathsEntry[]): string[];
35
+ export interface EvidenceCoverage {
36
+ /** Distinct proofs found: evidence-bearing COMMENTS (one `issue evidence`
37
+ * bundle posts one comment). Counting matched lines would let one proof
38
+ * that renders as N caption lines silently satisfy N features. */
39
+ evidenceItems: number;
40
+ /** Set when the PR touches >1 feature with fewer proofs than features. */
41
+ warning: string | null;
42
+ }
43
+ /** The deterministic layer under the per-feature evidence rule: a PR that
44
+ * touches more than one feature needs at least one proof per feature. The
45
+ * semantic judgment (which proof covers which feature) stays with the
46
+ * reviewer; this only counts — conservatively, by comment. */
47
+ export declare function assessEvidenceCoverage(touched: string[], comments: Array<{
48
+ body?: string;
49
+ }>): EvidenceCoverage;
50
+ /** The "### Deviations from brief" section of a PR body — where the worker
51
+ * logs off-brief pivots (field-guide pattern: deviations must be visible to
52
+ * review, not buried in commit messages). Empty string when absent. */
53
+ export declare function extractDeviations(prBody: string): string;
23
54
  export interface PacketInput {
24
55
  pr: GhPR & {
25
56
  body?: string;
@@ -30,6 +61,9 @@ export interface PacketInput {
30
61
  issue: (GhIssue & {
31
62
  linkKind: string;
32
63
  }) | null;
64
+ /** Project feature map (paths only) — enables the evidence-coverage check.
65
+ * Omitted when the map couldn't be fetched; the packet stays quiet then. */
66
+ features?: FeaturePathsEntry[];
33
67
  }
34
68
  /** Render the full review packet as markdown. */
35
69
  export declare function buildReviewPacket(input: PacketInput): string;
@@ -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;AAIxE,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AACtC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAerC,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMrD;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,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;CAChD;AAED,iDAAiD;AACjD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CA2E5D"}
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;AAIxE,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AACtC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAerC,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMrD;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;qCACqC;AACrC,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,MAAM,EAAE,CAc5F;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"}
package/dist/packet.js CHANGED
@@ -10,7 +10,7 @@
10
10
  // comparably sized diffs.
11
11
  export const PACKET_PER_FILE_CAP = 6000;
12
12
  export const PACKET_TOTAL_CAP = 60000;
13
- export const PACKET_BRIEF_CAP = 4000;
13
+ export const PACKET_BRIEF_CAP = 8000; // acceptance criteria sit at the BOTTOM of issue bodies — a tight cap silently drops the spec's checklist
14
14
  // Noise paths excluded from the packet diff — lockfiles, generated output,
15
15
  // vendored deps, binary-adjacent assets. Kept in sync (by convention) with the
16
16
  // server's featuremap noise lists.
@@ -91,6 +91,56 @@ export function extractEvidenceLines(comments) {
91
91
  }
92
92
  return lines.slice(0, 12);
93
93
  }
94
+ /** Names of the features whose path prefixes match any non-noise diff path,
95
+ * in feature-map order, deduped. */
96
+ export function touchedFeatures(diffPaths, features) {
97
+ const changed = diffPaths.filter((p) => !isNoiseDiffPath(p));
98
+ const out = [];
99
+ for (const f of features) {
100
+ const prefixes = (f.paths ?? []).map((p) => p.replace(/^\.\//, ""));
101
+ // Directory-boundary match: "src/app/admin" owns "src/app/admin/…" and the
102
+ // exact path itself, but never "src/app/admin-shop/…".
103
+ const owns = (prefix, path) => path === prefix || path.startsWith(prefix.endsWith("/") ? prefix : prefix + "/");
104
+ if (prefixes.some((prefix) => prefix && changed.some((path) => owns(prefix, path)))) {
105
+ out.push(f.name || f.key);
106
+ }
107
+ }
108
+ return out;
109
+ }
110
+ /** The deterministic layer under the per-feature evidence rule: a PR that
111
+ * touches more than one feature needs at least one proof per feature. The
112
+ * semantic judgment (which proof covers which feature) stays with the
113
+ * reviewer; this only counts — conservatively, by comment. */
114
+ export function assessEvidenceCoverage(touched, comments) {
115
+ const evidenceItems = comments.filter((c) => {
116
+ const body = c.body ?? "";
117
+ // Anchored: a structured caption line ("- Verified: …") or the 🧪 bundle
118
+ // header at line start. A bare substring match would count prose like
119
+ // "not yet verified:" or quoted captions and silently suppress the warning.
120
+ return /^\s*🧪.*Test evidence/m.test(body) || /^\s*-?\s*\*{0,2}verified:/im.test(body);
121
+ }).length;
122
+ if (touched.length <= 1 || evidenceItems >= touched.length) {
123
+ return { evidenceItems, warning: null };
124
+ }
125
+ return {
126
+ evidenceItems,
127
+ warning: `⚠️ ${touched.length} features touched, ${evidenceItems} evidence item(s) — ` +
128
+ `need ≥1 proof per feature on a multi-feature PR; treat each unproven feature ` +
129
+ `as an unresolved thread (request_changes) unless every touched feature maps ` +
130
+ `to a proof.`,
131
+ };
132
+ }
133
+ /** The "### Deviations from brief" section of a PR body — where the worker
134
+ * logs off-brief pivots (field-guide pattern: deviations must be visible to
135
+ * review, not buried in commit messages). Empty string when absent. */
136
+ export function extractDeviations(prBody) {
137
+ const m = /^###\s*Deviations from brief\s*$/im.exec(prBody);
138
+ if (!m)
139
+ return "";
140
+ const rest = prBody.slice(m.index + m[0].length);
141
+ const end = rest.search(/^#{1,3}\s/m);
142
+ return (end >= 0 ? rest.slice(0, end) : rest).trim();
143
+ }
94
144
  /** Render the full review packet as markdown. */
95
145
  export function buildReviewPacket(input) {
96
146
  const { pr, threads, diff, issue } = input;
@@ -122,6 +172,12 @@ export function buildReviewPacket(input) {
122
172
  b.push("\n## PR description");
123
173
  b.push(prBody.length > PACKET_BRIEF_CAP ? prBody.slice(0, PACKET_BRIEF_CAP) + "\n… (truncated)" : prBody);
124
174
  }
175
+ const deviations = extractDeviations(pr.body ?? "");
176
+ if (deviations) {
177
+ b.push("\n## Deviations from brief");
178
+ b.push(deviations);
179
+ b.push("_Verify each deviation: conservative? justified? does the spec still hold?_");
180
+ }
125
181
  b.push("\n## CI");
126
182
  const checks = pr.statusCheckRollup ?? [];
127
183
  if (checks.length === 0) {
@@ -156,7 +212,41 @@ export function buildReviewPacket(input) {
156
212
  }
157
213
  const evidence = extractEvidenceLines(pr.comments ?? []);
158
214
  b.push("\n## Evidence / health");
215
+ if (input.features?.length) {
216
+ const touched = touchedFeatures(splitUnifiedDiff(diff).map((s) => s.path), input.features);
217
+ if (touched.length) {
218
+ b.push(`Features touched (${touched.length}): ${touched.join(", ")}`);
219
+ const cov = assessEvidenceCoverage(touched, pr.comments ?? []);
220
+ if (cov.warning)
221
+ b.push(cov.warning);
222
+ }
223
+ }
159
224
  b.push(evidence.length ? evidence.join("\n") : "no evidence caption posted");
225
+ // Features (relevant slice) — kills the reviewer's mandatory full-map pull:
226
+ // touched features in detail, same-layer neighbors by name, full map only
227
+ // on demand (issue #83).
228
+ if (input.features?.length) {
229
+ const diffPaths = splitUnifiedDiff(diff).map((s) => s.path);
230
+ const touchedNames = new Set(touchedFeatures(diffPaths, input.features));
231
+ if (touchedNames.size) {
232
+ const touched = input.features.filter((f) => touchedNames.has(f.name || f.key)).slice(0, 12);
233
+ b.push("\n## Features (relevant slice)");
234
+ for (const f of touched) {
235
+ const layer = f.layer ? ` [${f.layer}]` : "";
236
+ const tp = f.testPriority ? ` · test_priority: ${f.testPriority}` : "";
237
+ const desc = f.description ? ` — ${f.description}` : "";
238
+ b.push(`- ${f.name || f.key}${layer}${tp}${desc}`);
239
+ }
240
+ const layers = new Set(touched.map((f) => f.layer).filter(Boolean));
241
+ const neighbors = input.features
242
+ .filter((f) => !touchedNames.has(f.name || f.key) && f.layer && layers.has(f.layer))
243
+ .map((f) => f.name || f.key)
244
+ .slice(0, 15);
245
+ if (neighbors.length)
246
+ b.push(`Same-layer neighbors: ${neighbors.join(", ")}`);
247
+ b.push("_This slice replaces the full map for most reviews — run `renaiss-shipflow features --json` only if you need beyond it._");
248
+ }
249
+ }
160
250
  const filtered = filterDiffForPacket(diff);
161
251
  b.push(`\n## Diff (${filtered.shown} file(s) shown` +
162
252
  (filtered.omittedNoise ? `, ${filtered.omittedNoise} noise file(s) omitted` : "") +
@@ -1 +1 @@
1
- {"version":3,"file":"packet.js","sourceRoot":"","sources":["../src/packet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"packet.js","sourceRoot":"","sources":["../src/packet.ts"],"names":[],"mappings":"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"}