@hardlydifficult/pr-analyzer 1.0.141 → 1.0.143

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/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # @hardlydifficult/pr-analyzer
2
2
 
3
- A TypeScript package for analyzing GitHub pull requests and classifying them into actionable buckets.
3
+ Opinionated pull request analysis for the way we actually use it.
4
+
5
+ Configure it once, then work with PR numbers, PR refs, or "my open PRs" directly. Results already include status buckets and available actions, so client code stays small and expressive.
4
6
 
5
7
  ## Installation
6
8
 
@@ -12,201 +14,135 @@ npm install @hardlydifficult/pr-analyzer
12
14
 
13
15
  ```typescript
14
16
  import { GitHubClient } from "@hardlydifficult/github";
15
- import { scanSinglePR } from "@hardlydifficult/pr-analyzer";
17
+ import { createPRAnalyzer } from "@hardlydifficult/pr-analyzer";
16
18
 
17
- // Create a GitHub client
18
- const client = new GitHubClient({ token: "ghp_..." });
19
+ const client = new GitHubClient({ token: process.env.GITHUB_TOKEN });
19
20
 
20
- // Scan a PR
21
- const pr = await scanSinglePR(
21
+ const prs = createPRAnalyzer({
22
22
  client,
23
- "@cursor",
24
- "owner",
25
- "repo",
26
- 123
27
- );
28
-
29
- // Check status and available actions
30
- console.log(pr.status); // "ready_to_merge"
31
- console.log(pr.ciSummary); // "CI passed: 3 checks"
32
-
33
- import { getAvailableActions } from "@hardlydifficult/pr-analyzer";
34
- const actions = getAvailableActions(pr);
35
- // actions = [{ type: "merge", label: "Merge", description: "Squash and merge this PR" }]
36
- ```
37
-
38
- ## Core Features
39
-
40
- ### Scanning and Analyzing PRs
41
-
42
- #### `analyzePR`
43
-
44
- Analyzes a single PR and returns its full status.
45
-
46
- ```typescript
47
- import { analyzePR, analyzeAll } from "@hardlydifficult/pr-analyzer";
48
-
49
- const pr = await client.pr("owner/repo#123").details();
50
- const scanned = await analyzePR(client, "owner", "repo", pr, "@bot");
51
-
52
- scanned.status; // "ready_to_merge"
53
- scanned.hasConflicts; // false
54
- scanned.daysSinceUpdate; // 2
55
- ```
56
-
57
- #### `analyzeAll`
58
-
59
- Analyzes multiple PRs in parallel, logging failures.
60
-
61
- ```typescript
62
- import type { DiscoveredPR } from "@hardlydifficult/pr-analyzer";
63
-
64
- const prs: readonly DiscoveredPR[] = [
65
- { pr: pr1, repoOwner: "owner", repoName: "repo" },
66
- { pr: pr2, repoOwner: "owner", repoName: "repo" },
67
- ];
68
-
69
- const results = await analyzeAll(prs, client, "@bot");
70
- // results = [scannedPR1, scannedPR2]
71
- ```
72
-
73
- #### `scanSinglePR`
74
-
75
- Scans a single PR directly by repo and number (real-time event handling).
23
+ repo: "owner/repo",
24
+ });
76
25
 
77
- ```typescript
78
- import { scanSinglePR } from "@hardlydifficult/pr-analyzer";
26
+ const pr = await prs.analyze(123);
27
+ pr.status; // "ready_to_merge"
28
+ pr.actions; // [{ type: "merge", label: "Merge", ... }]
79
29
 
80
- const pr = await scanSinglePR(client, "@cursor", "owner", "repo", 456);
30
+ const inbox = await prs.mine();
31
+ inbox.readyForHuman.map((item) => item.pr.number);
81
32
  ```
82
33
 
83
- ### PR Status Determination
84
-
85
- PRs are classified into core statuses based on priority:
86
-
87
- 1. `draft` — PR is a draft
88
- 2. `ci_running` — CI checks are in progress
89
- 3. `ci_failed` — At least one CI check failed
90
- 4. `has_conflicts` — PR has merge conflicts
91
- 5. `waiting_on_bot` — A bot was mentioned and hasn’t responded
92
- 6. `changes_requested` — A reviewer requested changes
93
- 7. `ready_to_merge` — CI passed and no conflicts
94
- 8. `approved` — PR approved (but not all CI passed)
95
- 9. `needs_review` — No reviews or approvals yet
96
-
97
- Extensions via `AnalyzerHooks.resolveStatus` allow custom statuses.
98
-
99
- ```typescript
100
- const hooks = {
101
- resolveStatus: (coreStatus, details) => {
102
- if (coreStatus === "ci_failed" && details.checks.some(c => c.name === "CI")) {
103
- return "ai_processing";
104
- }
105
- return undefined; // keep core status
106
- },
107
- };
34
+ ## Why This API
108
35
 
109
- const pr = await analyzePR(client, "owner", "repo", pr, "@bot", hooks);
110
- console.log(pr.status); // e.g. "ai_processing"
111
- ```
36
+ - `repo` is configured once, so normal usage can just say `analyze(123)`.
37
+ - `bot` defaults to `@cursor`, because that is the common case.
38
+ - `analyze()` always returns an `ActionablePR`, so UI code does not need a second `getAvailableActions()` pass.
39
+ - `inbox()` and `mine()` return already-bucketed results for human review, bot bumps, in-progress work, and blocked PRs.
40
+ - `analyzeMany()` runs in parallel and skips failures instead of failing the whole batch.
112
41
 
113
- ### Classification
42
+ ## Main API
114
43
 
115
- Classifies PRs into action buckets: `readyForHuman`, `needsBotBump`, `inProgress`, `blocked`.
44
+ ### `createPRAnalyzer(config)`
116
45
 
117
46
  ```typescript
118
- import { classifyPRs } from "@hardlydifficult/pr-analyzer";
119
-
120
- const result = classifyPRs([scannedPR1, scannedPR2]);
121
- result.readyForHuman; // PRs needing human review/merge
122
- result.needsBotBump; // PRs waiting on bot response
123
- result.inProgress; // PRs with CI running
124
- result.blocked; // PRs stalled (draft, failed CI, conflicts)
47
+ const prs = createPRAnalyzer({
48
+ client,
49
+ repo: "owner/repo",
50
+ bot: "@cursor",
51
+ });
125
52
  ```
126
53
 
127
- #### ClassificationConfig
54
+ Config:
128
55
 
129
- Extend buckets with custom statuses:
56
+ - `client`: GitHub client with `repo(...).pr(...).snapshot()` support.
57
+ - `repo`: optional default repo. Required only if you want to analyze bare PR numbers.
58
+ - `bot`: optional bot mention. Defaults to `@cursor`.
59
+ - `hooks`: optional status override hook.
60
+ - `classify`: optional custom status buckets.
61
+ - `actions`: optional extra actions.
62
+ - `actionContext`: optional flags passed to extra actions.
63
+ - `logger`: optional logger used when bulk analysis skips failures.
130
64
 
131
- ```typescript
132
- const config = {
133
- readyForHuman: ["custom_status"],
134
- inProgress: ["ai_processing"],
135
- blocked: ["custom_blocked"],
136
- needsBotBump: ["custom_waiting"],
137
- };
138
-
139
- const result = classifyPRs(prs, config);
140
- ```
65
+ Methods:
141
66
 
142
- ### Available Actions
67
+ - `analyze(ref)`: analyze one PR and return an `ActionablePR`.
68
+ - `analyzeMany(refs)`: analyze many PRs in parallel.
69
+ - `inbox(refs)`: analyze and bucket a set of PRs.
70
+ - `mine()`: fetch and bucket your open PRs, optionally filtered to the configured repo.
71
+ - `classify(prs)`: bucket already-scanned PRs using this analyzer's defaults.
72
+ - `actionsFor(pr)`: compute actions for one scanned PR.
143
73
 
144
- Determines which actions are available for a PR based on its status.
74
+ Accepted refs:
145
75
 
146
- #### Core Actions
76
+ - `123` when `repo` is configured
77
+ - `"owner/repo#123"`
78
+ - GitHub PR URL
79
+ - raw `PullRequest`
80
+ - `DiscoveredPR`
147
81
 
148
- - `merge` Available for `ready_to_merge`, `approved`
149
- - `mark_ready` — Available for `draft` when CI passed and no conflicts
150
- - `enable_auto_merge` — Available for `ci_running`, `needs_review` when PR is not draft, not merged, no conflicts
82
+ ## Custom Statuses And Actions
151
83
 
152
84
  ```typescript
153
- import { getAvailableActions, PR_ACTIONS } from "@hardlydifficult/pr-analyzer";
85
+ import { createPRAnalyzer } from "@hardlydifficult/pr-analyzer";
154
86
 
155
- const actions = getAvailableActions(pr);
156
- // [{ type: "merge", label: "Merge", description: "Squash and merge this PR" }]
87
+ const prs = createPRAnalyzer({
88
+ client,
89
+ repo: "owner/repo",
90
+ hooks: {
91
+ resolveStatus: (coreStatus, details) => {
92
+ if (
93
+ coreStatus === "ci_failed" &&
94
+ details.checks.some((check) => check.name === "Cursor")
95
+ ) {
96
+ return "ai_processing";
97
+ }
98
+ return undefined;
99
+ },
100
+ },
101
+ classify: {
102
+ inProgress: ["ai_processing"],
103
+ },
104
+ actions: [
105
+ {
106
+ type: "fix_ci",
107
+ label: "Fix CI",
108
+ description: "Ask @cursor to repair CI",
109
+ when: (pr, flags) => pr.status === "ci_failed" && flags.work === true,
110
+ },
111
+ ],
112
+ actionContext: {
113
+ work: true,
114
+ },
115
+ });
157
116
  ```
158
117
 
159
- #### Custom Actions
118
+ ## Result Shapes
160
119
 
161
- Consumers can define extra actions with custom conditions.
120
+ `ActionablePR` extends `ScannedPR` with:
162
121
 
163
122
  ```typescript
164
- import { ActionDefinition } from "@hardlydifficult/pr-analyzer";
165
-
166
- const fixCiAction: ActionDefinition = {
167
- type: "fix_ci",
168
- label: "Fix CI",
169
- description: "Post @cursor fix CI comment",
170
- when: (pr, ctx) => pr.status === "ci_failed" && ctx["isWorkPR"] === true,
171
- };
172
-
173
- const actions = getAvailableActions(pr, [fixCiAction], { isWorkPR: true });
123
+ {
124
+ actions: readonly PRActionDescriptor[];
125
+ }
174
126
  ```
175
127
 
176
- ## Types and Interfaces
177
-
178
- | Type | Description |
179
- |------|-------------|
180
- | `ScannedPR` | A fully analyzed PR with status, CI summary, and metadata |
181
- | `ScanResult` | Classified PR buckets: `all`, `readyForHuman`, `needsBotBump`, `inProgress`, `blocked` |
182
- | `AnalyzerHooks` | Custom logic hook: `resolveStatus(coreStatus, details)` |
183
- | `ClassificationConfig` | Extend status buckets with custom statuses |
184
- | `ActionDefinition` | Define custom actions with conditional logic |
185
- | `CorePRStatus` | Core PR status enum (`draft`, `ci_running`, etc.) |
186
- | `CIStatus` | CI analysis: `isRunning`, `hasFailed`, `allPassed`, `summary` |
187
- | `Logger` | Logging interface (`info`, `error`) |
188
-
189
- ## Appendix
128
+ `PRInbox` contains:
190
129
 
191
- ### Core Status Priority
130
+ - `all`
131
+ - `readyForHuman`
132
+ - `needsBotBump`
133
+ - `inProgress`
134
+ - `blocked`
192
135
 
193
- Status determination follows this priority:
136
+ Each bucket contains `ActionablePR` items.
194
137
 
195
- 1. Draft PR → `"draft"`
196
- 2. CI running → `"ci_running"`
197
- 3. CI failed → `"ci_failed"`
198
- 4. Merge conflicts → `"has_conflicts"`
199
- 5. Waiting on bot → `"waiting_on_bot"`
200
- 6. Changes requested → `"changes_requested"`
201
- 7. CI passed and no conflicts → `"ready_to_merge"`
202
- 8. At least one approval → `"approved"`
203
- 9. Default → `"needs_review"`
138
+ ## Low-Level Helpers
204
139
 
205
- ### CI Check Status Detection
140
+ The package still exports the smaller building blocks when you want them:
206
141
 
207
- - **Running**: `status: "in_progress"` or `status: "queued"` or `conclusion: null`
208
- - **Failed**: `status: "completed"` and `conclusion` is `"failure"`, `"timed_out"`, `"cancelled"`, or `"action_required"`
209
- - **Passed**: `status: "completed"` and `conclusion` is `"success"`, `"skipped"`, or `"neutral"`
210
- - **Uncategorized checks**: Treated as running if no definitive state
142
+ - `analyzePR(client, owner, repo, prOrNumber, botMention, hooks?)`
143
+ - `analyzeAll(prs, client, botMention, logger?, hooks?)`
144
+ - `scanSinglePR(client, botMention, owner, repo, prNumber, hooks?)`
145
+ - `classifyPRs(prs, config?)`
146
+ - `getAvailableActions(pr, extraActions?, actionContext?)`
211
147
 
212
- Bot detection includes common bots: `cursor`, `cursor-bot`, `github-actions`, `dependabot`, `renovate`, `codecov`, `vercel`, `claude`, plus any username ending in `[bot]` or containing `bot`.
148
+ Use these when you need to plug the analyzer into an existing flow. Use `createPRAnalyzer()` when you want the cleanest client code.
package/dist/actions.d.ts CHANGED
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * Consumers can provide extra actions via ActionDefinition[].
9
9
  */
10
- import type { ActionDefinition, ScannedPR } from "./types.js";
10
+ import type { ActionContext, ActionDefinition, ScannedPR } from "./types.js";
11
11
  /**
12
12
  * Core action types built into the package.
13
13
  * Consumers can define additional action types via ActionDefinition.
@@ -34,5 +34,5 @@ export declare const PR_ACTIONS: Record<CorePRActionType, Omit<PRActionDescripto
34
34
  * @param context - Key-value context for evaluating extra action conditions
35
35
  * @returns Array of available action descriptors
36
36
  */
37
- export declare function getAvailableActions(pr: ScannedPR, extraActions?: readonly ActionDefinition[], context?: Record<string, boolean>): PRActionDescriptor[];
37
+ export declare function getAvailableActions(pr: ScannedPR, extraActions?: readonly ActionDefinition[], context?: ActionContext): PRActionDescriptor[];
38
38
  //# sourceMappingURL=actions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE9D;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,YAAY,GAAG,mBAAmB,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAC7B,gBAAgB,EAChB,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAWjC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,SAAS,EACb,YAAY,CAAC,EAAE,SAAS,gBAAgB,EAAE,EAC1C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,kBAAkB,EAAE,CA2CtB"}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE7E;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,YAAY,GAAG,mBAAmB,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAC7B,gBAAgB,EAChB,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAWjC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,SAAS,EACb,YAAY,CAAC,EAAE,SAAS,gBAAgB,EAAE,EAC1C,OAAO,CAAC,EAAE,aAAa,GACtB,kBAAkB,EAAE,CA2CtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AA8CH,kDA+CC;AAzED;;GAEG;AACU,QAAA,UAAU,GAGnB;IACF,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,0BAA0B,EAAE;IAClE,UAAU,EAAE;QACV,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,wCAAwC;KACtD;IACD,iBAAiB,EAAE;QACjB,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,2CAA2C;KACzD;CACF,CAAC;AAEF;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CACjC,EAAa,EACb,YAA0C,EAC1C,OAAiC;IAEjC,MAAM,OAAO,GAAyB,EAAE,CAAC;IACzC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAEtB,+BAA+B;IAC/B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,gBAAgB,CAAC;QACtB,KAAK,UAAU;YACb,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,kBAAU,CAAC,KAAK,EAAE,CAAC,CAAC;YACrD,MAAM;QACR,KAAK,OAAO;YACV,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;gBAC9C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,kBAAU,CAAC,UAAU,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,MAAM;QACR,KAAK,YAAY,CAAC;QAClB,KAAK,cAAc;YACjB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;gBACjE,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,mBAAmB;oBACzB,GAAG,kBAAU,CAAC,iBAAiB;iBAChC,CAAC,CAAC;YACL,CAAC;YACD,MAAM;QACR;YACE,MAAM;IACV,CAAC;IAED,wCAAwC;IACxC,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,OAAO,IAAI,EAAE,CAAC;QAC1B,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;iBAChC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AA8CH,kDA+CC;AAzED;;GAEG;AACU,QAAA,UAAU,GAGnB;IACF,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,0BAA0B,EAAE;IAClE,UAAU,EAAE;QACV,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,wCAAwC;KACtD;IACD,iBAAiB,EAAE;QACjB,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,2CAA2C;KACzD;CACF,CAAC;AAEF;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CACjC,EAAa,EACb,YAA0C,EAC1C,OAAuB;IAEvB,MAAM,OAAO,GAAyB,EAAE,CAAC;IACzC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAEtB,+BAA+B;IAC/B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,gBAAgB,CAAC;QACtB,KAAK,UAAU;YACb,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,kBAAU,CAAC,KAAK,EAAE,CAAC,CAAC;YACrD,MAAM;QACR,KAAK,OAAO;YACV,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;gBAC9C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,kBAAU,CAAC,UAAU,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,MAAM;QACR,KAAK,YAAY,CAAC;QAClB,KAAK,cAAc;YACjB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;gBACjE,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,mBAAmB;oBACzB,GAAG,kBAAU,CAAC,iBAAiB;iBAChC,CAAC,CAAC;YACL,CAAC;YACD,MAAM;QACR;YACE,MAAM;IACV,CAAC;IAED,wCAAwC;IACxC,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,OAAO,IAAI,EAAE,CAAC;QAC1B,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;iBAChC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -9,14 +9,14 @@
9
9
  *
10
10
  * Custom status logic can be injected via AnalyzerHooks.resolveStatus.
11
11
  */
12
- import type { GitHubClient, PullRequest } from "@hardlydifficult/github";
13
- import type { AnalyzerHooks, DiscoveredPR, Logger, ScannedPR } from "./types.js";
12
+ import type { PullRequest } from "@hardlydifficult/github";
13
+ import type { AnalyzerHooks, DiscoveredPR, Logger, PRAnalyzerClient, ScannedPR } from "./types.js";
14
14
  /**
15
15
  * Analyze a PR and determine its status
16
16
  */
17
- export declare function analyzePR(client: GitHubClient, owner: string, repo: string, pr: PullRequest, botMention: string, hooks?: AnalyzerHooks): Promise<ScannedPR>;
17
+ export declare function analyzePR(client: PRAnalyzerClient, owner: string, repo: string, pr: PullRequest | number, botMention: string, hooks?: AnalyzerHooks): Promise<ScannedPR>;
18
18
  /**
19
19
  * Analyze all discovered PRs, logging any failures
20
20
  */
21
- export declare function analyzeAll(prs: readonly DiscoveredPR[], client: GitHubClient, botMention: string, logger?: Logger, hooks?: AnalyzerHooks): Promise<ScannedPR[]>;
21
+ export declare function analyzeAll(prs: readonly DiscoveredPR[], client: PRAnalyzerClient, botMention: string, logger?: Logger, hooks?: AnalyzerHooks): Promise<ScannedPR[]>;
22
22
  //# sourceMappingURL=analysis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../src/analysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAEV,YAAY,EACZ,WAAW,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EACV,aAAa,EAGb,YAAY,EACZ,MAAM,EACN,SAAS,EACV,MAAM,YAAY,CAAC;AAmBpB;;GAEG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,WAAW,EACf,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAAC,SAAS,CAAC,CA4CpB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,SAAS,YAAY,EAAE,EAC5B,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAAC,SAAS,EAAE,CAAC,CAkBtB"}
1
+ {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../src/analysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAEV,WAAW,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EACV,aAAa,EAGb,YAAY,EACZ,MAAM,EACN,gBAAgB,EAChB,SAAS,EACV,MAAM,YAAY,CAAC;AAmBpB;;GAEG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,WAAW,GAAG,MAAM,EACxB,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAAC,SAAS,CAAC,CA2CpB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,SAAS,YAAY,EAAE,EAC5B,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAAC,SAAS,EAAE,CAAC,CA2BtB"}
package/dist/analysis.js CHANGED
@@ -34,14 +34,13 @@ const BOT_USERNAMES = new Set([
34
34
  * Analyze a PR and determine its status
35
35
  */
36
36
  async function analyzePR(client, owner, repo, pr, botMention, hooks) {
37
- const snapshot = await client
38
- .pr(`${owner}/${repo}#${String(pr.number)}`)
39
- .load();
40
- const currentPr = snapshot.pullRequest;
37
+ const prNumber = typeof pr === "number" ? pr : pr.number;
38
+ const snapshot = await client.repo(owner, repo).pr(prNumber).snapshot();
39
+ const currentPr = snapshot.pr;
41
40
  const { checks } = snapshot;
42
41
  const { comments } = snapshot;
43
42
  const { reviews } = snapshot;
44
- const repoInfo = snapshot.repository;
43
+ const repoInfo = snapshot.repo;
45
44
  // Analyze the fetched data
46
45
  const ciStatus = analyzeCIStatus(checks);
47
46
  const waitingOnBot = isWaitingOnBot(comments, botMention);
@@ -72,18 +71,21 @@ async function analyzePR(client, owner, repo, pr, botMention, hooks) {
72
71
  * Analyze all discovered PRs, logging any failures
73
72
  */
74
73
  async function analyzeAll(prs, client, botMention, logger, hooks) {
74
+ const settled = await Promise.allSettled(prs.map(({ pr, repoOwner, repoName }) => analyzePR(client, repoOwner, repoName, pr, botMention, hooks)));
75
75
  const results = [];
76
- for (const { pr, repoOwner, repoName } of prs) {
77
- try {
78
- results.push(await analyzePR(client, repoOwner, repoName, pr, botMention, hooks));
79
- }
80
- catch (err) {
81
- logger?.error("Failed to analyze PR", {
82
- repo: `${repoOwner}/${repoName}`,
83
- pr: pr.number,
84
- error: err instanceof Error ? err.message : String(err),
85
- });
76
+ for (const [index, result] of settled.entries()) {
77
+ if (result.status === "fulfilled") {
78
+ results.push(result.value);
79
+ continue;
86
80
  }
81
+ const failed = prs[index];
82
+ logger?.error("Failed to analyze PR", {
83
+ repo: `${failed.repoOwner}/${failed.repoName}`,
84
+ pr: failed.pr.number,
85
+ error: result.reason instanceof Error
86
+ ? result.reason.message
87
+ : String(result.reason),
88
+ });
87
89
  }
88
90
  return results;
89
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../src/analysis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../src/analysis.ts"],"names":[],"mappings":"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"}
@@ -16,5 +16,5 @@ import type { ClassificationConfig, ScannedPR, ScanResult } from "./types.js";
16
16
  * @param prs - The PRs to classify
17
17
  * @param config - Optional extra statuses to include in each bucket
18
18
  */
19
- export declare function classifyPRs(prs: readonly ScannedPR[], config?: ClassificationConfig): ScanResult;
19
+ export declare function classifyPRs<T extends ScannedPR>(prs: readonly T[], config?: ClassificationConfig): ScanResult<T>;
20
20
  //# sourceMappingURL=classification.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"classification.d.ts","sourceRoot":"","sources":["../src/classification.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAqB9E;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,SAAS,SAAS,EAAE,EACzB,MAAM,CAAC,EAAE,oBAAoB,GAC5B,UAAU,CAmBZ"}
1
+ {"version":3,"file":"classification.d.ts","sourceRoot":"","sources":["../src/classification.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAqB9E;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,SAAS,EAC7C,GAAG,EAAE,SAAS,CAAC,EAAE,EACjB,MAAM,CAAC,EAAE,oBAAoB,GAC5B,UAAU,CAAC,CAAC,CAAC,CAmBf"}
@@ -1 +1 @@
1
- {"version":3,"file":"classification.js","sourceRoot":"","sources":["../src/classification.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AA6BH,kCAsBC;AA/CD,4BAA4B;AAE5B,MAAM,wBAAwB,GAAsB;IAClD,cAAc;IACd,mBAAmB;IACnB,UAAU;IACV,gBAAgB;CACjB,CAAC;AAEF,MAAM,oBAAoB,GAAsB,CAAC,YAAY,CAAC,CAAC;AAE/D,MAAM,gBAAgB,GAAsB;IAC1C,OAAO;IACP,WAAW;IACX,eAAe;CAChB,CAAC;AAEF,MAAM,uBAAuB,GAAsB,CAAC,gBAAgB,CAAC,CAAC;AAEtE;;;;;GAKG;AACH,SAAgB,WAAW,CACzB,GAAyB,EACzB,MAA6B;IAE7B,MAAM,aAAa,GAAG,aAAa,CACjC,wBAAwB,EACxB,MAAM,EAAE,aAAa,CACtB,CAAC;IACF,MAAM,UAAU,GAAG,aAAa,CAAC,oBAAoB,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,aAAa,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,aAAa,CAChC,uBAAuB,EACvB,MAAM,EAAE,YAAY,CACrB,CAAC;IAEF,OAAO;QACL,GAAG,EAAE,GAAG;QACR,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QACpE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAClE,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;KACzD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,IAAuB,EACvB,KAAyB;IAEzB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"classification.js","sourceRoot":"","sources":["../src/classification.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AA6BH,kCAsBC;AA/CD,4BAA4B;AAE5B,MAAM,wBAAwB,GAAsB;IAClD,cAAc;IACd,mBAAmB;IACnB,UAAU;IACV,gBAAgB;CACjB,CAAC;AAEF,MAAM,oBAAoB,GAAsB,CAAC,YAAY,CAAC,CAAC;AAE/D,MAAM,gBAAgB,GAAsB;IAC1C,OAAO;IACP,WAAW;IACX,eAAe;CAChB,CAAC;AAEF,MAAM,uBAAuB,GAAsB,CAAC,gBAAgB,CAAC,CAAC;AAEtE;;;;;GAKG;AACH,SAAgB,WAAW,CACzB,GAAiB,EACjB,MAA6B;IAE7B,MAAM,aAAa,GAAG,aAAa,CACjC,wBAAwB,EACxB,MAAM,EAAE,aAAa,CACtB,CAAC;IACF,MAAM,UAAU,GAAG,aAAa,CAAC,oBAAoB,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,aAAa,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,aAAa,CAChC,uBAAuB,EACvB,MAAM,EAAE,YAAY,CACrB,CAAC;IAEF,OAAO;QACL,GAAG,EAAE,GAAG;QACR,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QACpE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAClE,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;KACzD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,IAAuB,EACvB,KAAyB;IAEzB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { type PullRequest } from "@hardlydifficult/github";
2
+ import { type PRActionDescriptor } from "./actions.js";
3
+ import type { ActionContext, ActionDefinition, AnalyzerHooks, ClassificationConfig, DiscoveredPR, Logger, PRAnalyzerClient, ScannedPR, ScanResult } from "./types.js";
4
+ export declare const DEFAULT_BOT_MENTION = "@cursor";
5
+ export type PRReference = number | string | PullRequest | DiscoveredPR;
6
+ export interface ActionablePR extends ScannedPR {
7
+ readonly actions: readonly PRActionDescriptor[];
8
+ }
9
+ export type PRInbox = ScanResult<ActionablePR>;
10
+ export interface PRAnalyzerConfig {
11
+ readonly client: PRAnalyzerClient;
12
+ readonly repo?: string;
13
+ readonly bot?: string;
14
+ readonly hooks?: AnalyzerHooks;
15
+ readonly logger?: Logger;
16
+ readonly classify?: ClassificationConfig;
17
+ readonly actions?: readonly ActionDefinition[];
18
+ readonly actionContext?: ActionContext;
19
+ }
20
+ export interface PRAnalyzer {
21
+ readonly repo?: string;
22
+ analyze(pr: PRReference): Promise<ActionablePR>;
23
+ analyzeMany(prs: readonly PRReference[]): Promise<readonly ActionablePR[]>;
24
+ inbox(prs: readonly PRReference[]): Promise<PRInbox>;
25
+ mine(): Promise<PRInbox>;
26
+ classify(prs: readonly ScannedPR[]): PRInbox;
27
+ actionsFor(pr: ScannedPR): readonly PRActionDescriptor[];
28
+ }
29
+ /**
30
+ * Create a PR analyzer with optional repo scoping, classification, and actions.
31
+ */
32
+ export declare function createPRAnalyzer(config: PRAnalyzerConfig): PRAnalyzer;
33
+ //# sourceMappingURL=createPRAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPRAnalyzer.d.ts","sourceRoot":"","sources":["../src/createPRAnalyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAuB,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAG5E,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,YAAY,CAAC;AAEvE,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,QAAQ,CAAC,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACjD;AAED,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;CACxC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAChD,WAAW,CAAC,GAAG,EAAE,SAAS,WAAW,EAAE,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CAAC;IAC3E,KAAK,CAAC,GAAG,EAAE,SAAS,WAAW,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,SAAS,SAAS,EAAE,GAAG,OAAO,CAAC;IAC7C,UAAU,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,kBAAkB,EAAE,CAAC;CAC1D;AAOD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAgFrE"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_BOT_MENTION = void 0;
4
+ exports.createPRAnalyzer = createPRAnalyzer;
5
+ const github_1 = require("@hardlydifficult/github");
6
+ const actions_js_1 = require("./actions.js");
7
+ const analysis_js_1 = require("./analysis.js");
8
+ const classification_js_1 = require("./classification.js");
9
+ exports.DEFAULT_BOT_MENTION = "@cursor";
10
+ /**
11
+ * Create a PR analyzer with optional repo scoping, classification, and actions.
12
+ */
13
+ function createPRAnalyzer(config) {
14
+ const repo = resolveConfiguredRepo(config.repo);
15
+ const bot = config.bot ?? exports.DEFAULT_BOT_MENTION;
16
+ const extraActions = config.actions ?? [];
17
+ const classification = config.classify;
18
+ const actionContext = config.actionContext ?? {};
19
+ const withActions = (pr) => ({
20
+ ...pr,
21
+ actions: (0, actions_js_1.getAvailableActions)(pr, extraActions, actionContext),
22
+ });
23
+ const analyze = async (ref) => withActions(await analyzeReference(config.client, ref, repo, bot, config.hooks));
24
+ const analyzeMany = async (refs) => {
25
+ const settled = await Promise.allSettled(refs.map((ref) => analyze(ref)));
26
+ const results = [];
27
+ for (const [index, result] of settled.entries()) {
28
+ if (result.status === "fulfilled") {
29
+ results.push(result.value);
30
+ continue;
31
+ }
32
+ const ref = refs[index];
33
+ config.logger?.error("Failed to analyze PR", {
34
+ ref: describeReference(ref),
35
+ error: result.reason instanceof Error
36
+ ? result.reason.message
37
+ : String(result.reason),
38
+ });
39
+ }
40
+ return results;
41
+ };
42
+ const buildInbox = (prs) => (0, classification_js_1.classifyPRs)(prs.map((pr) => withActions(pr)), classification);
43
+ const inbox = async (refs) => buildInbox(await analyzeMany(refs));
44
+ const mine = async () => {
45
+ const myPRs = await listMyOpenPRs(config.client);
46
+ const refs = myPRs
47
+ .filter(({ repo: current }) => repo === undefined
48
+ ? true
49
+ : current.owner === repo.owner && current.name === repo.repo)
50
+ .map(({ pr, repo: current }) => ({
51
+ pr,
52
+ repoOwner: current.owner,
53
+ repoName: current.name,
54
+ }));
55
+ return inbox(refs);
56
+ };
57
+ return {
58
+ repo: repo === undefined ? undefined : `${repo.owner}/${repo.repo}`,
59
+ analyze,
60
+ analyzeMany,
61
+ inbox,
62
+ mine,
63
+ classify: buildInbox,
64
+ actionsFor: (pr) => (0, actions_js_1.getAvailableActions)(pr, extraActions, actionContext),
65
+ };
66
+ }
67
+ async function analyzeReference(client, ref, repo, bot, hooks) {
68
+ if (typeof ref === "number") {
69
+ const configuredRepo = requireConfiguredRepo(repo);
70
+ return (0, analysis_js_1.analyzePR)(client, configuredRepo.owner, configuredRepo.repo, ref, bot, hooks);
71
+ }
72
+ if (typeof ref === "string") {
73
+ const trimmed = ref.trim();
74
+ if (/^\d+$/.test(trimmed)) {
75
+ return analyzeReference(client, Number.parseInt(trimmed, 10), repo, bot, hooks);
76
+ }
77
+ const parsed = (0, github_1.parseGitHubPullRequestReference)(trimmed);
78
+ if (parsed === null) {
79
+ throw new Error(`Invalid pull request reference: ${trimmed}. Expected "owner/repo#123" or a GitHub pull request URL.`);
80
+ }
81
+ return (0, analysis_js_1.analyzePR)(client, parsed.owner, parsed.repo, parsed.number, bot, hooks);
82
+ }
83
+ if (isDiscoveredPR(ref)) {
84
+ return (0, analysis_js_1.analyzePR)(client, ref.repoOwner, ref.repoName, ref.pr, bot, hooks);
85
+ }
86
+ return (0, analysis_js_1.analyzePR)(client, ref.base.repo.owner.login, ref.base.repo.name, ref, bot, hooks);
87
+ }
88
+ function resolveConfiguredRepo(repo) {
89
+ if (repo === undefined) {
90
+ return undefined;
91
+ }
92
+ const parsed = (0, github_1.parseGitHubRepoReference)(repo);
93
+ if (parsed === null) {
94
+ throw new Error(`Invalid repository reference: ${repo}. Expected "owner/repo" or a GitHub repository URL.`);
95
+ }
96
+ return parsed;
97
+ }
98
+ function requireConfiguredRepo(repo) {
99
+ if (repo === undefined) {
100
+ throw new Error("A repository is required when analyzing PR numbers. Pass `repo` to createPRAnalyzer({ repo }) first.");
101
+ }
102
+ return repo;
103
+ }
104
+ function isDiscoveredPR(ref) {
105
+ return (typeof ref === "object" &&
106
+ "pr" in ref &&
107
+ "repoOwner" in ref &&
108
+ "repoName" in ref);
109
+ }
110
+ function describeReference(ref) {
111
+ if (ref === undefined) {
112
+ return "unknown";
113
+ }
114
+ if (typeof ref === "number") {
115
+ return `#${String(ref)}`;
116
+ }
117
+ if (typeof ref === "string") {
118
+ return ref;
119
+ }
120
+ if (isDiscoveredPR(ref)) {
121
+ return `${ref.repoOwner}/${ref.repoName}#${String(ref.pr.number)}`;
122
+ }
123
+ return `${ref.base.repo.full_name}#${String(ref.number)}`;
124
+ }
125
+ async function listMyOpenPRs(client) {
126
+ if (client.myOpenPRs !== undefined) {
127
+ return client.myOpenPRs();
128
+ }
129
+ throw new Error("The GitHub client must implement myOpenPRs().");
130
+ }
131
+ //# sourceMappingURL=createPRAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPRAnalyzer.js","sourceRoot":"","sources":["../src/createPRAnalyzer.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,6 +8,8 @@ export { scanSinglePR } from "./workflow.js";
8
8
  export { analyzePR, analyzeAll } from "./analysis.js";
9
9
  export { classifyPRs } from "./classification.js";
10
10
  export { getAvailableActions, PR_ACTIONS } from "./actions.js";
11
- export type { CorePRStatus, ScannedPR, ScanResult, CIStatus, DiscoveredPR, Logger, AnalysisDetails, AnalyzerHooks, ClassificationConfig, ActionDefinition, } from "./types.js";
11
+ export { createPRAnalyzer, DEFAULT_BOT_MENTION } from "./createPRAnalyzer.js";
12
+ export type { ActionContext, CorePRStatus, ScannedPR, ScanResult, CIStatus, DiscoveredPR, Logger, PRAnalyzerClient, PullRequestActivitySnapshot, AnalysisDetails, AnalyzerHooks, ClassificationConfig, ActionDefinition, } from "./types.js";
12
13
  export type { CorePRActionType, PRActionDescriptor } from "./actions.js";
14
+ export type { ActionablePR, PRAnalyzer, PRAnalyzerConfig, PRInbox, PRReference, } from "./createPRAnalyzer.js";
13
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/D,YAAY,EACV,YAAY,EACZ,SAAS,EACT,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,YAAY,EACV,aAAa,EACb,YAAY,EACZ,SAAS,EACT,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,gBAAgB,EAChB,2BAA2B,EAC3B,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACzE,YAAY,EACV,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,WAAW,GACZ,MAAM,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * See workflow.ts for single-PR scanning.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.PR_ACTIONS = exports.getAvailableActions = exports.classifyPRs = exports.analyzeAll = exports.analyzePR = exports.scanSinglePR = void 0;
9
+ exports.DEFAULT_BOT_MENTION = exports.createPRAnalyzer = exports.PR_ACTIONS = exports.getAvailableActions = exports.classifyPRs = exports.analyzeAll = exports.analyzePR = exports.scanSinglePR = void 0;
10
10
  var workflow_js_1 = require("./workflow.js");
11
11
  Object.defineProperty(exports, "scanSinglePR", { enumerable: true, get: function () { return workflow_js_1.scanSinglePR; } });
12
12
  var analysis_js_1 = require("./analysis.js");
@@ -17,4 +17,7 @@ Object.defineProperty(exports, "classifyPRs", { enumerable: true, get: function
17
17
  var actions_js_1 = require("./actions.js");
18
18
  Object.defineProperty(exports, "getAvailableActions", { enumerable: true, get: function () { return actions_js_1.getAvailableActions; } });
19
19
  Object.defineProperty(exports, "PR_ACTIONS", { enumerable: true, get: function () { return actions_js_1.PR_ACTIONS; } });
20
+ var createPRAnalyzer_js_1 = require("./createPRAnalyzer.js");
21
+ Object.defineProperty(exports, "createPRAnalyzer", { enumerable: true, get: function () { return createPRAnalyzer_js_1.createPRAnalyzer; } });
22
+ Object.defineProperty(exports, "DEFAULT_BOT_MENTION", { enumerable: true, get: function () { return createPRAnalyzer_js_1.DEFAULT_BOT_MENTION; } });
20
23
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,6CAA6C;AAApC,2GAAA,YAAY,OAAA;AACrB,6CAAsD;AAA7C,wGAAA,SAAS,OAAA;AAAE,yGAAA,UAAU,OAAA;AAC9B,yDAAkD;AAAzC,gHAAA,WAAW,OAAA;AACpB,2CAA+D;AAAtD,iHAAA,mBAAmB,OAAA;AAAE,wGAAA,UAAU,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,6CAA6C;AAApC,2GAAA,YAAY,OAAA;AACrB,6CAAsD;AAA7C,wGAAA,SAAS,OAAA;AAAE,yGAAA,UAAU,OAAA;AAC9B,yDAAkD;AAAzC,gHAAA,WAAW,OAAA;AACpB,2CAA+D;AAAtD,iHAAA,mBAAmB,OAAA;AAAE,wGAAA,UAAU,OAAA;AACxC,6DAA8E;AAArE,uHAAA,gBAAgB,OAAA;AAAE,0HAAA,mBAAmB,OAAA"}
package/dist/types.d.ts CHANGED
@@ -24,12 +24,12 @@ export interface ScannedPR {
24
24
  /**
25
25
  * Result of scanning all PRs, classified into buckets
26
26
  */
27
- export interface ScanResult {
28
- readonly all: readonly ScannedPR[];
29
- readonly readyForHuman: readonly ScannedPR[];
30
- readonly needsBotBump: readonly ScannedPR[];
31
- readonly inProgress: readonly ScannedPR[];
32
- readonly blocked: readonly ScannedPR[];
27
+ export interface ScanResult<T extends ScannedPR = ScannedPR> {
28
+ readonly all: readonly T[];
29
+ readonly readyForHuman: readonly T[];
30
+ readonly needsBotBump: readonly T[];
31
+ readonly inProgress: readonly T[];
32
+ readonly blocked: readonly T[];
33
33
  }
34
34
  /**
35
35
  * CI status analysis result
@@ -48,6 +48,28 @@ export interface DiscoveredPR {
48
48
  readonly repoOwner: string;
49
49
  readonly repoName: string;
50
50
  }
51
+ export interface PullRequestActivitySnapshot {
52
+ readonly pr: PullRequest;
53
+ readonly repo: Repository;
54
+ readonly comments: readonly PullRequestComment[];
55
+ readonly reviews: readonly PullRequestReview[];
56
+ readonly checks: readonly CheckRun[];
57
+ }
58
+ export interface PRAnalyzerClient {
59
+ repo(owner: string, repo: string): {
60
+ pr(number: number): {
61
+ snapshot(): Promise<PullRequestActivitySnapshot>;
62
+ };
63
+ };
64
+ myOpenPRs?(): Promise<readonly {
65
+ readonly pr: PullRequest;
66
+ readonly repo: {
67
+ readonly owner: string;
68
+ readonly name: string;
69
+ };
70
+ }[]>;
71
+ }
72
+ export type ActionContext = Record<string, boolean>;
51
73
  /**
52
74
  * Logger interface for pr-analyzer consumers to implement
53
75
  */
@@ -93,6 +115,6 @@ export interface ActionDefinition {
93
115
  readonly type: string;
94
116
  readonly label: string;
95
117
  readonly description: string;
96
- readonly when: (pr: ScannedPR, context: Record<string, boolean>) => boolean;
118
+ readonly when: (pr: ScannedPR, context: ActionContext) => boolean;
97
119
  }
98
120
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,10 @@
3
3
  *
4
4
  * Scans a single PR by repo and number for real-time event handling.
5
5
  */
6
- import type { GitHubClient } from "@hardlydifficult/github";
7
- import type { AnalyzerHooks, ScannedPR } from "./types.js";
6
+ import type { AnalyzerHooks, PRAnalyzerClient, ScannedPR } from "./types.js";
8
7
  /**
9
8
  * Scan a single PR by repo and number.
10
9
  * Used for real-time event handling - much faster than a full scan.
11
10
  */
12
- export declare function scanSinglePR(client: GitHubClient, botMention: string, owner: string, repo: string, prNumber: number, hooks?: AnalyzerHooks): Promise<ScannedPR>;
11
+ export declare function scanSinglePR(client: PRAnalyzerClient, botMention: string, owner: string, repo: string, prNumber: number, hooks?: AnalyzerHooks): Promise<ScannedPR>;
13
12
  //# sourceMappingURL=workflow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE3D;;;GAGG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAAC,SAAS,CAAC,CAGpB"}
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE7E;;;GAGG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAAC,SAAS,CAAC,CAEpB"}
package/dist/workflow.js CHANGED
@@ -12,7 +12,6 @@ const analysis_js_1 = require("./analysis.js");
12
12
  * Used for real-time event handling - much faster than a full scan.
13
13
  */
14
14
  async function scanSinglePR(client, botMention, owner, repo, prNumber, hooks) {
15
- const pr = await client.pr(`${owner}/${repo}#${String(prNumber)}`).details();
16
- return (0, analysis_js_1.analyzePR)(client, owner, repo, pr, botMention, hooks);
15
+ return (0, analysis_js_1.analyzePR)(client, owner, repo, prNumber, botMention, hooks);
17
16
  }
18
17
  //# sourceMappingURL=workflow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAWH,oCAUC;AAjBD,+CAA0C;AAG1C;;;GAGG;AACI,KAAK,UAAU,YAAY,CAChC,MAAoB,EACpB,UAAkB,EAClB,KAAa,EACb,IAAY,EACZ,QAAgB,EAChB,KAAqB;IAErB,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAC7E,OAAO,IAAA,uBAAS,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AASH,oCASC;AAhBD,+CAA0C;AAG1C;;;GAGG;AACI,KAAK,UAAU,YAAY,CAChC,MAAwB,EACxB,UAAkB,EAClB,KAAa,EACb,IAAY,EACZ,QAAgB,EAChB,KAAqB;IAErB,OAAO,IAAA,uBAAS,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AACrE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hardlydifficult/pr-analyzer",
3
- "version": "1.0.141",
3
+ "version": "1.0.143",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "files": [
@@ -16,7 +16,7 @@
16
16
  },
17
17
  "dependencies": {
18
18
  "@hardlydifficult/date-time": "1.0.25",
19
- "@hardlydifficult/github": "1.0.92"
19
+ "@hardlydifficult/github": "1.0.94"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@types/node": "25.3.5",