baxian 2.0.6 → 2.0.8

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 (182) hide show
  1. package/README.md +2 -3
  2. package/README.zh-CN.md +2 -3
  3. package/dist/agent/bootstrap-poller.d.ts +2 -2
  4. package/dist/agent/bootstrap-poller.d.ts.map +1 -1
  5. package/dist/agent/bootstrap-poller.js.map +1 -1
  6. package/dist/agent/bootstrap.d.ts +1 -1
  7. package/dist/agent/bootstrap.d.ts.map +1 -1
  8. package/dist/agent/bootstrap.js +24 -48
  9. package/dist/agent/bootstrap.js.map +1 -1
  10. package/dist/agent/manager.d.ts +10 -36
  11. package/dist/agent/manager.d.ts.map +1 -1
  12. package/dist/agent/manager.js +103 -342
  13. package/dist/agent/manager.js.map +1 -1
  14. package/dist/agent/net-exec.d.ts +0 -1
  15. package/dist/agent/net-exec.d.ts.map +1 -1
  16. package/dist/agent/net-exec.js +0 -1
  17. package/dist/agent/net-exec.js.map +1 -1
  18. package/dist/agent/pane-streamer-manager.d.ts.map +1 -1
  19. package/dist/agent/pane-streamer-manager.js +1 -3
  20. package/dist/agent/pane-streamer-manager.js.map +1 -1
  21. package/dist/agent/preflight.d.ts +1 -20
  22. package/dist/agent/preflight.d.ts.map +1 -1
  23. package/dist/agent/preflight.js +39 -122
  24. package/dist/agent/preflight.js.map +1 -1
  25. package/dist/agent/prompt.d.ts +6 -16
  26. package/dist/agent/prompt.d.ts.map +1 -1
  27. package/dist/agent/prompt.js +128 -79
  28. package/dist/agent/prompt.js.map +1 -1
  29. package/dist/agent/repo-store.d.ts +1 -5
  30. package/dist/agent/repo-store.d.ts.map +1 -1
  31. package/dist/agent/repo-store.js +8 -33
  32. package/dist/agent/repo-store.js.map +1 -1
  33. package/dist/agent/runner.d.ts +1 -1
  34. package/dist/agent/runner.d.ts.map +1 -1
  35. package/dist/agent/runner.js +1 -3
  36. package/dist/agent/runner.js.map +1 -1
  37. package/dist/api/config.d.ts +1 -2
  38. package/dist/api/config.d.ts.map +1 -1
  39. package/dist/api/config.js +5 -22
  40. package/dist/api/config.js.map +1 -1
  41. package/dist/api/platform-guard.d.ts.map +1 -1
  42. package/dist/api/platform-guard.js +5 -15
  43. package/dist/api/platform-guard.js.map +1 -1
  44. package/dist/api/projects.d.ts.map +1 -1
  45. package/dist/api/projects.js +18 -25
  46. package/dist/api/projects.js.map +1 -1
  47. package/dist/api/tasks.js +2 -2
  48. package/dist/api/tasks.js.map +1 -1
  49. package/dist/cli.js.map +1 -1
  50. package/dist/config/hot-reload.d.ts +3 -2
  51. package/dist/config/hot-reload.d.ts.map +1 -1
  52. package/dist/config/hot-reload.js +6 -16
  53. package/dist/config/hot-reload.js.map +1 -1
  54. package/dist/config/loader.d.ts +1 -5
  55. package/dist/config/loader.d.ts.map +1 -1
  56. package/dist/config/loader.js +31 -31
  57. package/dist/config/loader.js.map +1 -1
  58. package/dist/config/validator.d.ts +2 -8
  59. package/dist/config/validator.d.ts.map +1 -1
  60. package/dist/config/validator.js +42 -120
  61. package/dist/config/validator.js.map +1 -1
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +7 -29
  64. package/dist/index.js.map +1 -1
  65. package/dist/platform/driver-host.d.ts +4 -3
  66. package/dist/platform/driver-host.d.ts.map +1 -1
  67. package/dist/platform/driver-host.js +12 -11
  68. package/dist/platform/driver-host.js.map +1 -1
  69. package/dist/platform/feedback.d.ts +5 -6
  70. package/dist/platform/feedback.d.ts.map +1 -1
  71. package/dist/platform/feedback.js +4 -7
  72. package/dist/platform/feedback.js.map +1 -1
  73. package/dist/platform/github-driver.d.ts +36 -0
  74. package/dist/platform/github-driver.d.ts.map +1 -0
  75. package/dist/platform/github-driver.js +374 -0
  76. package/dist/platform/github-driver.js.map +1 -0
  77. package/dist/platform/markers.d.ts +1 -4
  78. package/dist/platform/markers.d.ts.map +1 -1
  79. package/dist/platform/markers.js +0 -8
  80. package/dist/platform/markers.js.map +1 -1
  81. package/dist/platform/platform-poller.d.ts +2 -17
  82. package/dist/platform/platform-poller.d.ts.map +1 -1
  83. package/dist/platform/platform-poller.js +9 -15
  84. package/dist/platform/platform-poller.js.map +1 -1
  85. package/dist/platform/response-parser.d.ts.map +1 -1
  86. package/dist/platform/response-parser.js +6 -63
  87. package/dist/platform/response-parser.js.map +1 -1
  88. package/dist/platform/review-timeline.d.ts +6 -8
  89. package/dist/platform/review-timeline.d.ts.map +1 -1
  90. package/dist/platform/review-timeline.js +4 -6
  91. package/dist/platform/review-timeline.js.map +1 -1
  92. package/dist/platform/row-schema.d.ts +1 -2
  93. package/dist/platform/row-schema.d.ts.map +1 -1
  94. package/dist/platform/row-schema.js +13 -1
  95. package/dist/platform/row-schema.js.map +1 -1
  96. package/dist/platform/startup.d.ts +6 -34
  97. package/dist/platform/startup.d.ts.map +1 -1
  98. package/dist/platform/startup.js +10 -109
  99. package/dist/platform/startup.js.map +1 -1
  100. package/dist/platform/types.d.ts +61 -54
  101. package/dist/platform/types.d.ts.map +1 -1
  102. package/dist/platform/types.js +38 -26
  103. package/dist/platform/types.js.map +1 -1
  104. package/dist/platform/verdict-engine.d.ts +1 -1
  105. package/dist/platform/verdict-engine.d.ts.map +1 -1
  106. package/dist/platform/verdict-engine.js +1 -1
  107. package/dist/platform/verdict-engine.js.map +1 -1
  108. package/dist/shared/constants.d.ts +2 -6
  109. package/dist/shared/constants.d.ts.map +1 -1
  110. package/dist/shared/constants.js +2 -17
  111. package/dist/shared/constants.js.map +1 -1
  112. package/dist/shared/git-url.d.ts +0 -14
  113. package/dist/shared/git-url.d.ts.map +1 -1
  114. package/dist/shared/git-url.js +4 -57
  115. package/dist/shared/git-url.js.map +1 -1
  116. package/dist/shared/types.d.ts +2 -10
  117. package/dist/shared/types.d.ts.map +1 -1
  118. package/dist/shared/types.js.map +1 -1
  119. package/dist/state/agent-store.js +0 -3
  120. package/dist/state/agent-store.js.map +1 -1
  121. package/dist/state/task-store.js +2 -2
  122. package/dist/state/task-store.js.map +1 -1
  123. package/dist/web/assets/index-KH_4rYrI.js +15 -0
  124. package/dist/web/index.html +1 -1
  125. package/package.json +1 -1
  126. package/dist/config/normalizer.d.ts +0 -2
  127. package/dist/config/normalizer.d.ts.map +0 -1
  128. package/dist/config/normalizer.js +0 -46
  129. package/dist/config/normalizer.js.map +0 -1
  130. package/dist/platform/command-renderer.d.ts +0 -29
  131. package/dist/platform/command-renderer.d.ts.map +0 -1
  132. package/dist/platform/command-renderer.js +0 -113
  133. package/dist/platform/command-renderer.js.map +0 -1
  134. package/dist/platform/driver-spec.d.ts +0 -7
  135. package/dist/platform/driver-spec.d.ts.map +0 -1
  136. package/dist/platform/driver-spec.js +0 -506
  137. package/dist/platform/driver-spec.js.map +0 -1
  138. package/dist/platform/field-mapper.d.ts +0 -7
  139. package/dist/platform/field-mapper.d.ts.map +0 -1
  140. package/dist/platform/field-mapper.js +0 -109
  141. package/dist/platform/field-mapper.js.map +0 -1
  142. package/dist/platform/git-driver.d.ts +0 -64
  143. package/dist/platform/git-driver.d.ts.map +0 -1
  144. package/dist/platform/git-driver.js +0 -230
  145. package/dist/platform/git-driver.js.map +0 -1
  146. package/dist/platform/manifest.d.ts +0 -11
  147. package/dist/platform/manifest.d.ts.map +0 -1
  148. package/dist/platform/manifest.js +0 -42
  149. package/dist/platform/manifest.js.map +0 -1
  150. package/dist/platform/plugin-registry.d.ts +0 -31
  151. package/dist/platform/plugin-registry.d.ts.map +0 -1
  152. package/dist/platform/plugin-registry.js +0 -239
  153. package/dist/platform/plugin-registry.js.map +0 -1
  154. package/dist/platform/plugin-roots.d.ts +0 -3
  155. package/dist/platform/plugin-roots.d.ts.map +0 -1
  156. package/dist/platform/plugin-roots.js +0 -9
  157. package/dist/platform/plugin-roots.js.map +0 -1
  158. package/dist/platform/plugins/github/baxian-plugin.json +0 -8
  159. package/dist/platform/plugins/github/driver.json +0 -153
  160. package/dist/platform/plugins/github/skills/baxian-cli-gh/SKILL.md +0 -115
  161. package/dist/platform/plugins/github/skills/baxian-cli-gh/agents/openai.yaml +0 -2
  162. package/dist/platform/preflight-exec.d.ts +0 -21
  163. package/dist/platform/preflight-exec.d.ts.map +0 -1
  164. package/dist/platform/preflight-exec.js +0 -53
  165. package/dist/platform/preflight-exec.js.map +0 -1
  166. package/dist/skill/registry.d.ts +0 -37
  167. package/dist/skill/registry.d.ts.map +0 -1
  168. package/dist/skill/registry.js +0 -234
  169. package/dist/skill/registry.js.map +0 -1
  170. package/dist/skills/baxian-greeting/SKILL.md +0 -15
  171. package/dist/skills/baxian-greeting/agents/openai.yaml +0 -2
  172. package/dist/skills/baxian-pr-feedback/SKILL.md +0 -41
  173. package/dist/skills/baxian-pr-feedback/agents/openai.yaml +0 -2
  174. package/dist/skills/baxian-pr-recheck/SKILL.md +0 -27
  175. package/dist/skills/baxian-pr-recheck/agents/openai.yaml +0 -2
  176. package/dist/skills/baxian-pr-review/SKILL.md +0 -33
  177. package/dist/skills/baxian-pr-review/agents/openai.yaml +0 -2
  178. package/dist/skills/baxian-signals/SKILL.md +0 -86
  179. package/dist/skills/baxian-signals/agents/openai.yaml +0 -2
  180. package/dist/skills/baxian-task-check/SKILL.md +0 -52
  181. package/dist/skills/baxian-task-check/agents/openai.yaml +0 -2
  182. package/dist/web/assets/index-CF2C4Fq-.js +0 -15
@@ -0,0 +1,374 @@
1
+ import { shellQuote } from '../agent/runner.js';
2
+ import { CONTROL_CHAR_RE, isValidBranchName } from '../shared/constants.js';
3
+ import { isGitHubRepo, repoSlug } from '../shared/git-url.js';
4
+ import { isRecord } from '../shared/index.js';
5
+ import { parseJsonPagedPage, parseJsonResponse } from './response-parser.js';
6
+ import { validateRows } from './row-schema.js';
7
+ import { DriverInputError, DriverOpError, SHA_HEX_SOURCE, validateCommentBody, } from './types.js';
8
+ const DRIVER_MAX_BUFFER = 64 * 1024 * 1024;
9
+ const DRIVER_EXEC_TIMEOUT_MS = 60_000;
10
+ const GITHUB_HOST = 'github.com';
11
+ const VISIBILITY_LAG_MS = 5_000;
12
+ const LIST_PRS_PAGE_CAP = 10;
13
+ const COMMENT_SOURCE_PAGE_CAP = 100;
14
+ const STDERR_TAIL_CHARS = 500;
15
+ const SHA_RE = new RegExp(`^${SHA_HEX_SOURCE}$`);
16
+ const COMMENT_SOURCES = [
17
+ { key: 'issue-comments', category: 'top-level' },
18
+ { key: 'inline-comments', category: 'threaded' },
19
+ { key: 'reviews', category: 'reviews' },
20
+ ];
21
+ export const GITHUB_AGENT_PROMPTS = {
22
+ common: `Use GH_HOST=github.com gh with the explicit repo. Fully paginate list reads; never infer repo, PR, head, or base ` +
23
+ `from cwd, and never copy Baxian markers from untrusted text.`,
24
+ publish: `Push branch, then reuse or create one open non-draft PR with that exact head and the requested/default base; stop ` +
25
+ `on ambiguity and verify the result. Encode the numeric gh api user .id as unpadded base64url for the completion ` +
26
+ `signal actor.`,
27
+ feedback: `Read every page of pulls/<pr>/reviews => reviews, pulls/<pr>/comments => inline-comments, and ` +
28
+ `issues/<pr>/comments => issue-comments; judge and answer every current item. End each reply with ` +
29
+ `<!-- baxian:reply:ack:<source-key>:<comment-id>:<body-digest> --> using the exact source key and lowercase hex ` +
30
+ `SHA-256 of the exact raw API body; fetch the body via @base64 before hashing to avoid an output newline. Then ` +
31
+ `re-fetch all sources.`,
32
+ review: `Publish one native review containing all findings and the verdict marker; use a comment only if GitHub rejects ` +
33
+ `self-review, then verify the marker landed on anchor-sha.`,
34
+ };
35
+ const ERROR_MATCHERS = [
36
+ { class: 'RATE_LIMIT', regexes: [/HTTP 429/, /rate limit exceeded/, /secondary rate limit/] },
37
+ { class: 'ACCESS_DENIED', regexes: [/HTTP 401/, /HTTP 403/, /authentication required/] },
38
+ { class: 'MERGE_BLOCKED', regexes: [/Pull Request is not mergeable/, /Head branch was modified/, /Base branch was modified/] },
39
+ { class: 'NOT_FOUND', regexes: [/HTTP 404/, /Not Found/] },
40
+ ];
41
+ export function buildGitHubRunContext(repoUrl) {
42
+ const repo = repoUrl.trim();
43
+ if (!isGitHubRepo(repo))
44
+ throw new Error(`GitHub driver requires a github.com repository URL: ${repo}`);
45
+ return { repoPath: repoSlug(repo) };
46
+ }
47
+ const PR_LIST_FIELDS = {
48
+ prNumber: 'number',
49
+ prUrl: 'html_url',
50
+ branch: 'head.ref',
51
+ headSha: 'head.sha',
52
+ state: 'state',
53
+ draft: 'draft',
54
+ mergedAt: 'merged_at',
55
+ updatedAt: 'updated_at',
56
+ title: 'title',
57
+ sourceProjectId: 'head.repo.id',
58
+ targetProjectId: 'base.repo.id',
59
+ targetBranch: 'base.ref',
60
+ prAuthor: 'user.login',
61
+ prAuthorId: 'user.id',
62
+ };
63
+ const PR_VIEW_FIELDS = {
64
+ headSha: 'head.sha',
65
+ branch: 'head.ref',
66
+ state: 'state',
67
+ draft: 'draft',
68
+ mergedAt: 'merged_at',
69
+ prUrl: 'html_url',
70
+ sourceProjectId: 'head.repo.id',
71
+ targetProjectId: 'base.repo.id',
72
+ targetBranch: 'base.ref',
73
+ prAuthor: 'user.login',
74
+ prAuthorId: 'user.id',
75
+ detailedMergeStatus: 'mergeable_state',
76
+ };
77
+ const PROJECT_FIELDS = {
78
+ defaultBranch: 'default_branch',
79
+ remoteProjectId: 'node_id',
80
+ pushPermitted: 'permissions.push',
81
+ };
82
+ const BRANCH_FIELDS = {
83
+ remoteProjectId: 'data.node.id',
84
+ headSha: 'data.node.ref.target.oid',
85
+ };
86
+ const COMMENT_FIELDS = {
87
+ 'issue-comments': {
88
+ id: 'id', body: 'body', author: 'user.login', authorId: 'user.id',
89
+ createdAt: 'created_at', updatedAt: 'updated_at',
90
+ },
91
+ 'inline-comments': {
92
+ id: 'id', body: 'body', author: 'user.login', authorId: 'user.id',
93
+ createdAt: 'created_at', updatedAt: 'updated_at', discussionId: 'in_reply_to_id',
94
+ parentId: 'in_reply_to_id', path: 'path', line: 'line', originalLine: 'original_line',
95
+ },
96
+ reviews: {
97
+ id: 'id', body: 'body', author: 'user.login', authorId: 'user.id',
98
+ createdAt: 'submitted_at', updatedAt: 'submitted_at', reviewState: 'state', commitSha: 'commit_id',
99
+ },
100
+ };
101
+ const BRANCH_VIEW_QUERY = 'query($repositoryId:ID!,$refName:String!){node(id:$repositoryId){... on Repository{id ref(qualifiedName:$refName){target{oid}}}}}';
102
+ const DELETE_BRANCH_QUERY = 'mutation($repositoryId:ID!,$refName:GitRefname!,$beforeOid:GitObjectID!,$afterOid:GitObjectID!){updateRefs(input:{repositoryId:$repositoryId,refUpdates:[{name:$refName,beforeOid:$beforeOid,afterOid:$afterOid}]}){clientMutationId}}';
103
+ function tail(value) {
104
+ return value.length > STDERR_TAIL_CHARS ? value.slice(-STDERR_TAIL_CHARS) : value;
105
+ }
106
+ function pathValue(value, path) {
107
+ let current = value;
108
+ for (const segment of path.split('.')) {
109
+ if (!isRecord(current) || !Object.hasOwn(current, segment))
110
+ return undefined;
111
+ current = current[segment];
112
+ }
113
+ return current;
114
+ }
115
+ function projectPayload(payload, fields) {
116
+ if (payload === null || typeof payload !== 'object')
117
+ return [];
118
+ const items = Array.isArray(payload) ? payload : [payload];
119
+ return items.map(item => Object.fromEntries(Object.entries(fields).map(([target, source]) => [target, pathValue(item, source)])));
120
+ }
121
+ function requirePrNumber(value) {
122
+ if (value === undefined || !Number.isSafeInteger(value) || value <= 0) {
123
+ throw new DriverInputError(`prNumber must be a positive safe integer (got ${value})`);
124
+ }
125
+ return value;
126
+ }
127
+ function requireSha(value) {
128
+ if (value === undefined || !SHA_RE.test(value)) {
129
+ throw new DriverInputError(`expectedHeadSha must be a hex sha (got ${value})`);
130
+ }
131
+ return value;
132
+ }
133
+ function requireRemoteProjectId(value) {
134
+ if (value === undefined
135
+ || value.trim() !== value
136
+ || value.length === 0
137
+ || value.length > 512
138
+ || CONTROL_CHAR_RE.test(value)) {
139
+ throw new DriverInputError(`remoteProjectId must be a bounded platform id (got ${value})`);
140
+ }
141
+ return value;
142
+ }
143
+ function requireBranch(value) {
144
+ if (value === undefined || !isValidBranchName(value)) {
145
+ throw new DriverInputError(`branch has invalid shape (got ${value})`);
146
+ }
147
+ return value;
148
+ }
149
+ export class GitHubDriver {
150
+ ctx;
151
+ exec;
152
+ visibilityLagMs = VISIBILITY_LAG_MS;
153
+ commentSources = COMMENT_SOURCES;
154
+ constructor(ctx, exec) {
155
+ this.ctx = ctx;
156
+ this.exec = exec;
157
+ }
158
+ classify(text) {
159
+ for (const matcher of ERROR_MATCHERS) {
160
+ if (matcher.regexes.some(regex => regex.test(text)))
161
+ return matcher.class;
162
+ }
163
+ return undefined;
164
+ }
165
+ async runPreflightSteps() {
166
+ const auth = await this.preflightStep('github-auth', ['gh', 'api', 'user']);
167
+ return [auth.ok
168
+ ? { step: auth.step, ok: true, message: 'GitHub CLI authenticated' }
169
+ : {
170
+ step: auth.step,
171
+ ok: false,
172
+ message: 'Run "gh auth login --hostname github.com" or set GITHUB_TOKEN',
173
+ }];
174
+ }
175
+ async prView(prNumber) {
176
+ requirePrNumber(prNumber);
177
+ const result = await this.execGitHub('prView', ['gh', 'api', `repos/${this.ctx.repoPath}/pulls/${prNumber}`]);
178
+ return this.single('prView', projectPayload(parseJsonResponse(result.stdout), PR_VIEW_FIELDS));
179
+ }
180
+ async projectView() {
181
+ const result = await this.execGitHub('projectView', ['gh', 'api', `repos/${this.ctx.repoPath}`]);
182
+ return this.single('projectView', projectPayload(parseJsonResponse(result.stdout), PROJECT_FIELDS));
183
+ }
184
+ async branchView(remoteProjectId, branch) {
185
+ requireRemoteProjectId(remoteProjectId);
186
+ requireBranch(branch);
187
+ const result = await this.execGitHub('branchView', [
188
+ 'gh', 'api', 'graphql',
189
+ '-f', `repositoryId=${remoteProjectId}`,
190
+ '-f', `refName=refs/heads/${branch}`,
191
+ '-f', `query=${BRANCH_VIEW_QUERY}`,
192
+ ], undefined, true);
193
+ return this.single('branchView', projectPayload(parseJsonResponse(result.stdout), BRANCH_FIELDS));
194
+ }
195
+ async postComment(prNumber, body) {
196
+ requirePrNumber(prNumber);
197
+ validateCommentBody(body);
198
+ await this.execGitHub('comment', ['gh', 'api', '-X', 'POST', `repos/${this.ctx.repoPath}/issues/${prNumber}/comments`, '-F', 'body=@-'], Buffer.from(body, 'utf8'));
199
+ }
200
+ async mergePr(prNumber, expectedHeadSha) {
201
+ requirePrNumber(prNumber);
202
+ requireSha(expectedHeadSha);
203
+ await this.execGitHub('merge', [
204
+ 'gh', 'api', '-X', 'PUT', `repos/${this.ctx.repoPath}/pulls/${prNumber}/merge`,
205
+ '-f', 'merge_method=squash', '-f', `sha=${expectedHeadSha}`,
206
+ ]);
207
+ }
208
+ async closePr(prNumber) {
209
+ requirePrNumber(prNumber);
210
+ await this.execGitHub('close', [
211
+ 'gh', 'api', '-X', 'PATCH', `repos/${this.ctx.repoPath}/pulls/${prNumber}`, '-f', 'state=closed',
212
+ ]);
213
+ }
214
+ async deleteBranch(remoteProjectId, branch, expectedHeadSha) {
215
+ requireRemoteProjectId(remoteProjectId);
216
+ requireBranch(branch);
217
+ requireSha(expectedHeadSha);
218
+ await this.execGitHub('deleteBranch', [
219
+ 'gh', 'api', 'graphql',
220
+ '-f', `repositoryId=${remoteProjectId}`,
221
+ '-f', `refName=refs/heads/${branch}`,
222
+ '-f', `beforeOid=${expectedHeadSha}`,
223
+ '-f', 'afterOid=0000000000000000000000000000000000000000',
224
+ '-f', `query=${DELETE_BRANCH_QUERY}`,
225
+ ], undefined, true);
226
+ }
227
+ listPrs(shouldStop) {
228
+ return this.runPaged('listPrs', page => ['gh', 'api', `repos/${this.ctx.repoPath}/pulls?state=all&sort=updated&direction=desc&per_page=10&page=${page}`], PR_LIST_FIELDS, { pageCap: LIST_PRS_PAGE_CAP, capBehavior: 'stop', idField: 'prNumber', shouldStop });
229
+ }
230
+ listComments(source, prNumber, projectPage, shouldStop) {
231
+ const fields = COMMENT_FIELDS[source.key];
232
+ if (fields === undefined) {
233
+ throw new DriverOpError(`unknown GitHub comment source '${source.key}'`, { opName: `listComments[${source.key}]` });
234
+ }
235
+ requirePrNumber(prNumber);
236
+ const collection = source.key === 'issue-comments' ? 'issues' : 'pulls';
237
+ const suffix = source.key === 'issue-comments' ? 'comments' : source.key === 'inline-comments' ? 'comments' : 'reviews';
238
+ return this.runPaged('listComments', page => ['gh', 'api', `repos/${this.ctx.repoPath}/${collection}/${prNumber}/${suffix}?per_page=100&page=${page}`], fields, {
239
+ pageCap: COMMENT_SOURCE_PAGE_CAP,
240
+ capBehavior: 'fail',
241
+ idField: 'id',
242
+ sourceKey: source.key,
243
+ projectPage,
244
+ shouldStop,
245
+ });
246
+ }
247
+ async preflightStep(step, argv) {
248
+ try {
249
+ const result = await this.exec(this.command(argv), {
250
+ timeout: DRIVER_EXEC_TIMEOUT_MS,
251
+ maxBuffer: DRIVER_MAX_BUFFER,
252
+ });
253
+ const output = `${result.stdout}\n${result.stderr}`;
254
+ if (result.exitCode !== 0 && this.classify(output) === 'RATE_LIMIT') {
255
+ throw new DriverOpError(`preflight ${step} failed (class RATE_LIMIT)`, {
256
+ opName: step,
257
+ errorClass: 'RATE_LIMIT',
258
+ exitCode: result.exitCode,
259
+ stderrTail: tail(output.trim()),
260
+ });
261
+ }
262
+ return { step, ok: result.exitCode === 0, output };
263
+ }
264
+ catch (error) {
265
+ if (error instanceof DriverOpError)
266
+ throw error;
267
+ const output = error instanceof Error ? error.message : String(error);
268
+ if (this.classify(output) === 'RATE_LIMIT') {
269
+ throw new DriverOpError(`preflight ${step} failed (class RATE_LIMIT)`, {
270
+ opName: step,
271
+ errorClass: 'RATE_LIMIT',
272
+ stderrTail: tail(output),
273
+ });
274
+ }
275
+ return { step, ok: false, output };
276
+ }
277
+ }
278
+ single(opName, rows) {
279
+ const validated = validateRows(opName, rows);
280
+ if (validated.length !== 1) {
281
+ throw new DriverOpError(`op ${opName} must yield exactly one row (got ${validated.length})`, { opName });
282
+ }
283
+ return validated[0];
284
+ }
285
+ command(argv) {
286
+ return `GH_HOST=${shellQuote(GITHUB_HOST)} ${argv.map(shellQuote).join(' ')}`;
287
+ }
288
+ async execGitHub(opName, argv, stdin, graphql = false) {
289
+ const result = await this.exec(this.command(argv), {
290
+ timeout: DRIVER_EXEC_TIMEOUT_MS,
291
+ maxBuffer: DRIVER_MAX_BUFFER,
292
+ ...(stdin === undefined ? {} : { stdin }),
293
+ });
294
+ if (result.exitCode !== 0) {
295
+ const output = `${result.stderr}\n${result.stdout}`;
296
+ const errorClass = this.classify(output);
297
+ throw new DriverOpError(`op ${opName} failed (exit ${result.exitCode}${errorClass ? `, class ${errorClass}` : ''}): ${tail(output.trim())}`, { opName, errorClass, exitCode: result.exitCode, stderrTail: tail(output.trim()) });
298
+ }
299
+ if (graphql)
300
+ this.assertGraphqlEnvelope(opName, result);
301
+ return result;
302
+ }
303
+ assertGraphqlEnvelope(opName, result) {
304
+ const errorInfo = () => ({
305
+ opName,
306
+ errorClass: this.classify(`${result.stderr}\n${result.stdout}`),
307
+ exitCode: 0,
308
+ stderrTail: tail(result.stdout),
309
+ });
310
+ let payload;
311
+ try {
312
+ payload = parseJsonResponse(result.stdout);
313
+ }
314
+ catch (error) {
315
+ const message = error instanceof Error ? error.message : String(error);
316
+ throw new DriverOpError(`op ${opName} returned an invalid GraphQL envelope: ${message}`, errorInfo());
317
+ }
318
+ if (!isRecord(payload)) {
319
+ throw new DriverOpError(`op ${opName} returned a malformed GraphQL envelope`, errorInfo());
320
+ }
321
+ if (payload.errors !== undefined && !Array.isArray(payload.errors)) {
322
+ throw new DriverOpError(`op ${opName} returned malformed GraphQL errors`, errorInfo());
323
+ }
324
+ if (Array.isArray(payload.errors) && payload.errors.length > 0) {
325
+ throw new DriverOpError(`op ${opName} failed with GraphQL errors: ${tail(JSON.stringify(payload.errors))}`, errorInfo());
326
+ }
327
+ if (!Object.hasOwn(payload, 'data')) {
328
+ throw new DriverOpError(`op ${opName} returned a GraphQL envelope without data`, errorInfo());
329
+ }
330
+ }
331
+ async runPaged(rowOp, argvForPage, fields, options) {
332
+ const label = options.sourceKey === undefined ? rowOp : `${rowOp}[${options.sourceKey}]`;
333
+ const all = [];
334
+ const seen = new Map();
335
+ let previousIds;
336
+ for (let page = 1; page <= options.pageCap; page++) {
337
+ const result = await this.execGitHub(label, argvForPage(page));
338
+ const rawPage = parseJsonPagedPage(result.stdout);
339
+ if (rawPage.length === 0)
340
+ return all;
341
+ const rows = validateRows(rowOp, projectPayload(rawPage, fields), options.sourceKey === undefined ? undefined : { sourceKey: options.sourceKey });
342
+ const projected = options.projectPage === undefined ? rows : options.projectPage(rows);
343
+ const ids = new Set(projected.map(row => String(row[options.idField])));
344
+ if (previousIds !== undefined
345
+ && previousIds.size > 0
346
+ && ids.size === previousIds.size
347
+ && [...ids].every(id => previousIds.has(id))) {
348
+ throw new DriverOpError(`op ${label}: pagination did not advance at page ${page}`, { opName: label });
349
+ }
350
+ previousIds = ids;
351
+ for (const row of projected) {
352
+ const key = String(row[options.idField]);
353
+ const fingerprint = JSON.stringify(row);
354
+ const prior = seen.get(key);
355
+ if (prior === undefined) {
356
+ seen.set(key, fingerprint);
357
+ all.push(row);
358
+ }
359
+ else if (prior !== fingerprint) {
360
+ throw new DriverOpError(`op ${label}: conflicting duplicate row for ${options.idField}=${key} across pages`, { opName: label });
361
+ }
362
+ }
363
+ if (options.shouldStop?.(projected, page) === true)
364
+ return all;
365
+ }
366
+ if (options.capBehavior === 'fail') {
367
+ throw new DriverOpError(`op ${label}: exceeded page cap ${options.pageCap} (refusing silent truncation)`, {
368
+ opName: label,
369
+ });
370
+ }
371
+ return all;
372
+ }
373
+ }
374
+ //# sourceMappingURL=github-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-driver.js","sourceRoot":"","sources":["../../src/platform/github-driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAsB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,mBAAmB,GAMpB,MAAM,YAAY,CAAC;AAEpB,MAAM,iBAAiB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAC3C,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAEtC,MAAM,WAAW,GAAG,YAAY,CAAC;AACjC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACpC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,cAAc,GAAG,CAAC,CAAC;AAEjD,MAAM,eAAe,GAA6B;IAChD,EAAE,GAAG,EAAE,gBAAgB,EAAE,QAAQ,EAAE,WAAW,EAAE;IAChD,EAAE,GAAG,EAAE,iBAAiB,EAAE,QAAQ,EAAE,UAAU,EAAE;IAChD,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE;CACxC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAyB;IACxD,MAAM,EACJ,mHAAmH;QACnH,8DAA8D;IAChE,OAAO,EACL,oHAAoH;QACpH,kHAAkH;QAClH,eAAe;IACjB,QAAQ,EACN,gGAAgG;QAChG,mGAAmG;QACnG,iHAAiH;QACjH,gHAAgH;QAChH,uBAAuB;IACzB,MAAM,EACJ,iHAAiH;QACjH,2DAA2D;CAC9D,CAAC;AAEF,MAAM,cAAc,GAAgD;IAClE,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,EAAE;IAC7F,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,yBAAyB,CAAC,EAAE;IACxF,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,+BAA+B,EAAE,0BAA0B,EAAE,0BAA0B,CAAC,EAAE;IAC9H,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE;CAC3D,CAAC;AAMF,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,IAAI,EAAE,CAAC,CAAC;IACxG,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AACtC,CAAC;AAID,MAAM,cAAc,GAAa;IAC/B,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,UAAU;IACnB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,YAAY;IACvB,KAAK,EAAE,OAAO;IACd,eAAe,EAAE,cAAc;IAC/B,eAAe,EAAE,cAAc;IAC/B,YAAY,EAAE,UAAU;IACxB,QAAQ,EAAE,YAAY;IACtB,UAAU,EAAE,SAAS;CACtB,CAAC;AAEF,MAAM,cAAc,GAAa;IAC/B,OAAO,EAAE,UAAU;IACnB,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,WAAW;IACrB,KAAK,EAAE,UAAU;IACjB,eAAe,EAAE,cAAc;IAC/B,eAAe,EAAE,cAAc;IAC/B,YAAY,EAAE,UAAU;IACxB,QAAQ,EAAE,YAAY;IACtB,UAAU,EAAE,SAAS;IACrB,mBAAmB,EAAE,iBAAiB;CACvC,CAAC;AAEF,MAAM,cAAc,GAAa;IAC/B,aAAa,EAAE,gBAAgB;IAC/B,eAAe,EAAE,SAAS;IAC1B,aAAa,EAAE,kBAAkB;CAClC,CAAC;AAEF,MAAM,aAAa,GAAa;IAC9B,eAAe,EAAE,cAAc;IAC/B,OAAO,EAAE,0BAA0B;CACpC,CAAC;AAEF,MAAM,cAAc,GAAuC;IACzD,gBAAgB,EAAE;QAChB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS;QACjE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY;KACjD;IACD,iBAAiB,EAAE;QACjB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS;QACjE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB;QAChF,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe;KACtF;IACD,OAAO,EAAE;QACP,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS;QACjE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW;KACnG;CACF,CAAC;AAEF,MAAM,iBAAiB,GACrB,mIAAmI,CAAC;AACtI,MAAM,mBAAmB,GACvB,wOAAwO,CAAC;AAE3O,SAAS,IAAI,CAAC,KAAa;IACzB,OAAO,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACpF,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,IAAY;IAC7C,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;YAAE,OAAO,SAAS,CAAC;QAC7E,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CAAC,OAAgB,EAAE,MAAgB;IACxD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3D,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CACzC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CACpF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB;IAChD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,gBAAgB,CAAC,iDAAiD,KAAK,GAAG,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,KAAyB;IAC3C,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,gBAAgB,CAAC,0CAA0C,KAAK,GAAG,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAyB;IACvD,IAAI,KAAK,KAAK,SAAS;WAClB,KAAK,CAAC,IAAI,EAAE,KAAK,KAAK;WACtB,KAAK,CAAC,MAAM,KAAK,CAAC;WAClB,KAAK,CAAC,MAAM,GAAG,GAAG;WAClB,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,gBAAgB,CAAC,sDAAsD,KAAK,GAAG,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAAyB;IAC9C,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,gBAAgB,CAAC,iCAAiC,KAAK,GAAG,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAWD,MAAM,OAAO,YAAY;IAKJ;IACA;IALV,eAAe,GAAG,iBAAiB,CAAC;IACpC,cAAc,GAAG,eAAe,CAAC;IAE1C,YACmB,GAAqB,EACrB,IAAgB;QADhB,QAAG,GAAH,GAAG,CAAkB;QACrB,SAAI,GAAJ,IAAI,CAAY;IAChC,CAAC;IAEI,QAAQ,CAAC,IAAY;QAC3B,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC;QAC5E,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,EAAE;gBACb,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,0BAA0B,EAAE;gBACpE,CAAC,CAAC;oBACE,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,EAAE,EAAE,KAAK;oBACT,OAAO,EAAE,+DAA+D;iBACzE,CAAC,CAAC;IACT,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB;QAC3B,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,IAAI,CAAC,GAAG,CAAC,QAAQ,UAAU,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC9G,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;IACjG,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACjG,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;IACtG,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,eAAuB,EAAE,MAAc;QACtD,sBAAsB,CAAC,eAAe,CAAC,CAAC;QACxC,aAAa,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;YACjD,IAAI,EAAE,KAAK,EAAE,SAAS;YACtB,IAAI,EAAE,gBAAgB,eAAe,EAAE;YACvC,IAAI,EAAE,sBAAsB,MAAM,EAAE;YACpC,IAAI,EAAE,SAAS,iBAAiB,EAAE;SACnC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IACpG,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,IAAY;QAC9C,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,IAAI,CAAC,UAAU,CACnB,SAAS,EACT,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,IAAI,CAAC,GAAG,CAAC,QAAQ,WAAW,QAAQ,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,EACtG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,eAAuB;QACrD,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,UAAU,CAAC,eAAe,CAAC,CAAC;QAC5B,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;YAC7B,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,IAAI,CAAC,GAAG,CAAC,QAAQ,UAAU,QAAQ,QAAQ;YAC9E,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,eAAe,EAAE;SAC5D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;YAC7B,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,IAAI,CAAC,GAAG,CAAC,QAAQ,UAAU,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc;SACjG,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,eAAuB,EAAE,MAAc,EAAE,eAAuB;QACjF,sBAAsB,CAAC,eAAe,CAAC,CAAC;QACxC,aAAa,CAAC,MAAM,CAAC,CAAC;QACtB,UAAU,CAAC,eAAe,CAAC,CAAC;QAC5B,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;YACpC,IAAI,EAAE,KAAK,EAAE,SAAS;YACtB,IAAI,EAAE,gBAAgB,eAAe,EAAE;YACvC,IAAI,EAAE,sBAAsB,MAAM,EAAE;YACpC,IAAI,EAAE,aAAa,eAAe,EAAE;YACpC,IAAI,EAAE,mDAAmD;YACzD,IAAI,EAAE,SAAS,mBAAmB,EAAE;SACrC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,CACL,UAAiE;QAEjE,OAAO,IAAI,CAAC,QAAQ,CAClB,SAAS,EACT,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,IAAI,CAAC,GAAG,CAAC,QAAQ,iEAAiE,IAAI,EAAE,CAAC,EACxH,cAAc,EACd,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CACrF,CAAC;IACJ,CAAC;IAED,YAAY,CACV,MAAqB,EACrB,QAAgB,EAChB,WAA4D,EAC5D,UAAiE;QAEjE,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,aAAa,CAAC,kCAAkC,MAAM,CAAC,GAAG,GAAG,EAAE,EAAE,MAAM,EAAE,gBAAgB,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;QACtH,CAAC;QACD,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,KAAK,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;QACxE,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,KAAK,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QACxH,OAAO,IAAI,CAAC,QAAQ,CAClB,cAAc,EACd,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,UAAU,IAAI,QAAQ,IAAI,MAAM,sBAAsB,IAAI,EAAE,CAAC,EACjH,MAAM,EACN;YACE,OAAO,EAAE,uBAAuB;YAChC,WAAW,EAAE,MAAM;YACnB,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,MAAM,CAAC,GAAG;YACrB,WAAW;YACX,UAAU;SACX,CACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,IAAY,EACZ,IAAc;QAEd,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACjD,OAAO,EAAE,sBAAsB;gBAC/B,SAAS,EAAE,iBAAiB;aAC7B,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YACpD,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,YAAY,EAAE,CAAC;gBACpE,MAAM,IAAI,aAAa,CAAC,aAAa,IAAI,4BAA4B,EAAE;oBACrE,MAAM,EAAE,IAAI;oBACZ,UAAU,EAAE,YAAY;oBACxB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;iBAChC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,aAAa;gBAAE,MAAM,KAAK,CAAC;YAChD,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,YAAY,EAAE,CAAC;gBAC3C,MAAM,IAAI,aAAa,CAAC,aAAa,IAAI,4BAA4B,EAAE;oBACrE,MAAM,EAAE,IAAI;oBACZ,UAAU,EAAE,YAAY;oBACxB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;iBACzB,CAAC,CAAC;YACL,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,MAAc,EAAE,IAAqB;QAClD,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,aAAa,CAAC,MAAM,MAAM,oCAAoC,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3G,CAAC;QACD,OAAO,SAAS,CAAC,CAAC,CAAE,CAAC;IACvB,CAAC;IAEO,OAAO,CAAC,IAAc;QAC5B,OAAO,WAAW,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAChF,CAAC;IAEO,KAAK,CAAC,UAAU,CACtB,MAAc,EACd,IAAc,EACd,KAAc,EACd,OAAO,GAAG,KAAK;QAEf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACjD,OAAO,EAAE,sBAAsB;YAC/B,SAAS,EAAE,iBAAiB;YAC5B,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;SAC1C,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YACpD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,IAAI,aAAa,CACrB,MAAM,MAAM,iBAAiB,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,EACnH,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CACnF,CAAC;QACJ,CAAC;QACD,IAAI,OAAO;YAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,qBAAqB,CAAC,MAAc,EAAE,MAAwB;QACpE,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,CAAC;YACvB,MAAM;YACN,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YAC/D,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YACH,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,IAAI,aAAa,CAAC,MAAM,MAAM,0CAA0C,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACxG,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,aAAa,CAAC,MAAM,MAAM,wCAAwC,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,aAAa,CAAC,MAAM,MAAM,oCAAoC,EAAE,SAAS,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,aAAa,CAAC,MAAM,MAAM,gCAAgC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3H,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,aAAa,CAAC,MAAM,MAAM,2CAA2C,EAAE,SAAS,EAAE,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,KAAa,EACb,WAAuC,EACvC,MAAgB,EAChB,OAAqB;QAErB,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,OAAO,CAAC,SAAS,GAAG,CAAC;QACzF,MAAM,GAAG,GAAoB,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;QACvC,IAAI,WAAoC,CAAC;QACzC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,GAAG,CAAC;YACrC,MAAM,IAAI,GAAG,YAAY,CACvB,KAAK,EACL,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,EAC/B,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAC/E,CAAC;YACF,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACvF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,WAAW,KAAK,SAAS;mBACxB,WAAW,CAAC,IAAI,GAAG,CAAC;mBACpB,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI;mBAC7B,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,WAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,aAAa,CAAC,MAAM,KAAK,wCAAwC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACxG,CAAC;YACD,WAAW,GAAG,GAAG,CAAC;YAClB,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;gBACzC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACxC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;oBAC3B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;qBAAM,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;oBACjC,MAAM,IAAI,aAAa,CACrB,MAAM,KAAK,mCAAmC,OAAO,CAAC,OAAO,IAAI,GAAG,eAAe,EACnF,EAAE,MAAM,EAAE,KAAK,EAAE,CAClB,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI;gBAAE,OAAO,GAAG,CAAC;QACjE,CAAC;QACD,IAAI,OAAO,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,aAAa,CAAC,MAAM,KAAK,uBAAuB,OAAO,CAAC,OAAO,+BAA+B,EAAE;gBACxG,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;QACL,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
@@ -1,3 +1,4 @@
1
+ import { type CommentSourceClass } from './types.js';
1
2
  import { type NormalizedRow } from './row-schema.js';
2
3
  export interface ReviewTokenMarker {
3
4
  kind: 'pass' | 'fail';
@@ -19,10 +20,6 @@ export declare function rowBodyDigest(row: NormalizedRow): string;
19
20
  export declare function rowTokens(row: NormalizedRow): ReviewTokenMarker[];
20
21
  export declare function rowAcks(row: NormalizedRow): AckMarker[];
21
22
  export declare function rowHasBody(row: NormalizedRow): boolean;
22
- export type CommentSourceClass = 'reviews' | 'threaded' | 'top-level';
23
- export declare function classifyCommentSource(source: {
24
- map?: Record<string, unknown>;
25
- }): CommentSourceClass;
26
23
  export interface AckActorContext {
27
24
  replyActorId?: string;
28
25
  replyActorStatus?: 'verified' | 'provisional';
@@ -1 +1 @@
1
- {"version":3,"file":"markers.d.ts","sourceRoot":"","sources":["../../src/platform/markers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkC,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAWD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAEjE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAMrE;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAEnD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAE3D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK3D;AAID,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAU1D;AAOD,wBAAgB,aAAa,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAExD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,aAAa,GAAG,iBAAiB,EAAE,CAEjE;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,EAAE,CAEvD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAEtD;AAED,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;AAEtE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,kBAAkB,CAKnG;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC;CAC/C;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,kBAAkB,CAAC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED,eAAO,MAAM,cAAc,GAAI,WAAW,MAAM,EAAE,IAAI,MAAM,EAAE,QAAQ,MAAM,WAAmC,CAAC;AAChH,eAAO,MAAM,aAAa,GAAI,WAAW,MAAM,EAAE,IAAI,MAAM,WAAyB,CAAC;AAErF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE,eAAe,GAAG,aAAa,CA0B3F"}
1
+ {"version":3,"file":"markers.d.ts","sourceRoot":"","sources":["../../src/platform/markers.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,EAAkC,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAWD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAEjE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAMrE;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAEnD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAE3D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK3D;AAID,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAU1D;AAOD,wBAAgB,aAAa,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAExD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,aAAa,GAAG,iBAAiB,EAAE,CAEjE;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,EAAE,CAEvD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAEtD;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC;CAC/C;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,kBAAkB,CAAC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED,eAAO,MAAM,cAAc,GAAI,WAAW,MAAM,EAAE,IAAI,MAAM,EAAE,QAAQ,MAAM,WAAmC,CAAC;AAChH,eAAO,MAAM,aAAa,GAAI,WAAW,MAAM,EAAE,IAAI,MAAM,WAAyB,CAAC;AAErF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE,eAAe,GAAG,aAAa,CA0B3F"}
@@ -54,14 +54,6 @@ export function rowAcks(row) {
54
54
  export function rowHasBody(row) {
55
55
  return isProjected(row) ? row.hasBody === true : rawBody(row) !== '';
56
56
  }
57
- export function classifyCommentSource(source) {
58
- const map = source.map ?? {};
59
- if ('reviewState' in map)
60
- return 'reviews';
61
- if ('discussionId' in map)
62
- return 'threaded';
63
- return 'top-level';
64
- }
65
57
  export const ackRevisionKey = (sourceKey, id, digest) => `${sourceKey}:${id}:${digest}`;
66
58
  export const ackCarrierKey = (sourceKey, id) => `${sourceKey}:${id}`;
67
59
  export function collectValidAcks(rows, ctx) {
@@ -1 +1 @@
1
- {"version":3,"file":"markers.js","sourceRoot":"","sources":["../../src/platform/markers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"markers.js","sourceRoot":"","sources":["../../src/platform/markers.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,6 @@
1
1
  import type { PollerSnapshot } from '../shared/types.js';
2
2
  import type { TaskState } from '../shared/types.js';
3
- import type { CommentSourceOp, MappedEvent } from './types.js';
4
- import { type OpVars } from './git-driver.js';
5
- import type { NormalizedRow } from './row-schema.js';
3
+ import { type PlatformDriver, type PlatformEvent } from './types.js';
6
4
  import type { PrConversationPayload } from './pr-conversation-cache.js';
7
5
  export interface PlatformTaskView {
8
6
  taskId: string;
@@ -24,19 +22,6 @@ export interface PlatformTaskView {
24
22
  }
25
23
  type PlatformTasksProvider = (projectId: string) => Promise<PlatformTaskView[]>;
26
24
  export declare function platformTaskView(task: TaskState): PlatformTaskView;
27
- export interface PlatformDriver {
28
- readonly visibilityLagMs: number;
29
- readonly commentSources: CommentSourceOp[];
30
- readonly preflightIdentity?: string;
31
- runPreflightSteps?(): Promise<Array<{
32
- step: string;
33
- ok: boolean;
34
- message: string;
35
- }>>;
36
- runOp(opName: string, vars?: OpVars): Promise<NormalizedRow[]>;
37
- runListPrs(vars: OpVars, shouldStop?: (pageRows: NormalizedRow[], page: number) => boolean): Promise<NormalizedRow[]>;
38
- runCommentSource(source: CommentSourceOp, vars: OpVars, projectPage?: (pageRows: NormalizedRow[]) => NormalizedRow[]): Promise<NormalizedRow[]>;
39
- }
40
25
  export interface PlatformPollerEntryInit {
41
26
  projectId: string;
42
27
  repoUrl: string;
@@ -44,7 +29,7 @@ export interface PlatformPollerEntryInit {
44
29
  statePath: string;
45
30
  }
46
31
  export interface PlatformPollerOptions {
47
- onEvent: (projectId: string, event: MappedEvent) => void | Promise<void>;
32
+ onEvent: (projectId: string, event: PlatformEvent) => void | Promise<void>;
48
33
  tasks: PlatformTasksProvider;
49
34
  task: (taskId: string) => Promise<PlatformTaskView | null>;
50
35
  now?: () => number;
@@ -1 +1 @@
1
- {"version":3,"file":"platform-poller.d.ts","sourceRoot":"","sources":["../../src/platform/platform-poller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform-poller.d.ts","sourceRoot":"","sources":["../../src/platform/platform-poller.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { computePollerHealth } from './poller-health.js';
4
4
  import { BRANCH_PREFIX } from '../shared/constants.js';
5
5
  import { repoIdentityKey } from '../shared/git-url.js';
6
6
  import { TASK_TERMINAL_STATUS_SET } from '../shared/constants.js';
7
- import { DriverOpError } from './git-driver.js';
7
+ import { DriverOpError } from './types.js';
8
8
  import { versionTimeOf } from './row-schema.js';
9
9
  import { CommentCursorStore } from './comment-cursor.js';
10
10
  import { VerdictEngine } from './verdict-engine.js';
@@ -131,12 +131,6 @@ export class PlatformPoller {
131
131
  if (entry.retired)
132
132
  return;
133
133
  entry.projectId = init.projectId;
134
- const samePreflight = entry.driver.preflightIdentity !== undefined
135
- && init.driver.preflightIdentity !== undefined
136
- ? entry.driver.preflightIdentity === init.driver.preflightIdentity
137
- : entry.driver === init.driver;
138
- if (!samePreflight)
139
- entry.preflightPassed = undefined;
140
134
  entry.driver = init.driver;
141
135
  }
142
136
  setLifecycleHook(fn) {
@@ -366,7 +360,7 @@ export class PlatformPoller {
366
360
  if (!activePrs.has(Number(key.split(':')[0])))
367
361
  entry.loggedUndated.delete(key);
368
362
  }
369
- if (entry.preflightPassed !== true && entry.driver.runPreflightSteps !== undefined) {
363
+ if (entry.preflightPassed !== true) {
370
364
  let steps;
371
365
  try {
372
366
  steps = await entry.driver.runPreflightSteps();
@@ -386,21 +380,21 @@ export class PlatformPoller {
386
380
  }
387
381
  let defaultBranch;
388
382
  try {
389
- const [row] = await entry.driver.runOp('projectView');
383
+ const row = await entry.driver.projectView();
390
384
  this.assertEntryActive(entry);
391
385
  if (row !== undefined && typeof row.defaultBranch === 'string') {
392
386
  entry.defaultBranch = row.defaultBranch;
393
387
  entry.defaultBranchStale = 0;
394
388
  defaultBranch = row.defaultBranch;
395
389
  }
396
- if (row !== undefined && entry.preflightPassed !== true && entry.driver.runPreflightSteps !== undefined) {
390
+ if (row !== undefined && entry.preflightPassed !== true) {
397
391
  if (row.pushPermitted === false) {
398
392
  fail('preflight-push', new Error(`push permission missing for ${entry.repoUrl} — server merge/close requires write access`));
399
393
  return failures;
400
394
  }
401
395
  else {
402
396
  if (row.pushPermitted === undefined) {
403
- console.warn(`[PlatformPoller] ${entry.repoKey}: plugin did not report pushPermitted — write access cannot be asserted`);
397
+ console.warn(`[PlatformPoller] ${entry.repoKey}: platform did not report push permission — write access cannot be asserted`);
404
398
  }
405
399
  entry.preflightPassed = true;
406
400
  }
@@ -438,7 +432,7 @@ export class PlatformPoller {
438
432
  const scanStartedAt = this.now();
439
433
  let prRows;
440
434
  try {
441
- prRows = await entry.driver.runListPrs({}, pageRows => {
435
+ prRows = await entry.driver.listPrs(pageRows => {
442
436
  if (prsCursor.watermarkTime === null)
443
437
  return false;
444
438
  return pageRows.some(r => {
@@ -472,7 +466,7 @@ export class PlatformPoller {
472
466
  pendingByPr.set(pending.prNumber, pending.taskId);
473
467
  if (prRows.some(row => row.prNumber === pending.prNumber))
474
468
  continue;
475
- const [row] = await entry.driver.runOp('prView', { prNumber: pending.prNumber });
469
+ const row = await entry.driver.prView(pending.prNumber);
476
470
  this.assertEntryActive(entry);
477
471
  if (row !== undefined)
478
472
  prRows.push({ ...row, prNumber: pending.prNumber });
@@ -647,7 +641,7 @@ export class PlatformPoller {
647
641
  const obsKey = `${task.taskId}:${prNumber}`;
648
642
  let prRow;
649
643
  try {
650
- [prRow] = await entry.driver.runOp('prView', { prNumber });
644
+ prRow = await entry.driver.prView(prNumber);
651
645
  this.assertEntryActive(entry);
652
646
  }
653
647
  catch (e) {
@@ -743,7 +737,7 @@ export class PlatformPoller {
743
737
  if (entry.deliveredVerdicts.get(obsKey) === fp)
744
738
  return;
745
739
  try {
746
- const [freshRow] = await entry.driver.runOp('prView', { prNumber });
740
+ const freshRow = await entry.driver.prView(prNumber);
747
741
  this.assertEntryActive(entry);
748
742
  const freshEligible = freshRow !== undefined
749
743
  && this.bindingCheck(task, freshRow, defaultBranch) === undefined