lastlight 0.15.0 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/README.md +71 -692
  2. package/dist/cli-config.js.map +1 -0
  3. package/dist/cli-format.js.map +1 -0
  4. package/dist/{cli/cli-server.d.ts → cli-server.d.ts} +26 -1
  5. package/dist/{cli/cli-server.js → cli-server.js} +40 -5
  6. package/dist/cli-server.js.map +1 -0
  7. package/dist/cli-timeline.js.map +1 -0
  8. package/dist/{cli/cli.js → cli.js} +4 -3
  9. package/dist/cli.js.map +1 -0
  10. package/dist/{cli/fork-cli.d.ts → fork-cli.d.ts} +3 -3
  11. package/dist/{cli/fork-cli.js → fork-cli.js} +28 -27
  12. package/dist/fork-cli.js.map +1 -0
  13. package/dist/{cli/oauth-cli.js → oauth-cli.js} +1 -1
  14. package/dist/oauth-cli.js.map +1 -0
  15. package/dist/{cli/setup.js → setup.js} +10 -4
  16. package/dist/setup.js.map +1 -0
  17. package/dist/{cli/skills-install.d.ts → skills-install.d.ts} +6 -0
  18. package/dist/{cli/skills-install.js → skills-install.js} +6 -2
  19. package/dist/skills-install.js.map +1 -0
  20. package/package.json +20 -65
  21. package/plugins/lastlight/.claude-plugin/plugin.json +1 -1
  22. package/agent-context/rules.md +0 -80
  23. package/agent-context/security.md +0 -69
  24. package/agent-context/soul.md +0 -21
  25. package/config/default.yaml +0 -119
  26. package/deploy/.env.production.example +0 -100
  27. package/deploy/entrypoint.sh +0 -82
  28. package/deploy/native/README.md +0 -160
  29. package/deploy/native/install.sh +0 -110
  30. package/deploy/native/lastlight.env.example +0 -95
  31. package/deploy/native/lastlight.service +0 -50
  32. package/deploy/sandbox-entrypoint.sh +0 -93
  33. package/dist/admin/auth.d.ts +0 -51
  34. package/dist/admin/auth.js +0 -121
  35. package/dist/admin/auth.js.map +0 -1
  36. package/dist/admin/chat-session-reader.d.ts +0 -39
  37. package/dist/admin/chat-session-reader.js +0 -84
  38. package/dist/admin/chat-session-reader.js.map +0 -1
  39. package/dist/admin/docker.d.ts +0 -61
  40. package/dist/admin/docker.js +0 -187
  41. package/dist/admin/docker.js.map +0 -1
  42. package/dist/admin/index.d.ts +0 -9
  43. package/dist/admin/index.js +0 -59
  44. package/dist/admin/index.js.map +0 -1
  45. package/dist/admin/routes.d.ts +0 -81
  46. package/dist/admin/routes.js +0 -1381
  47. package/dist/admin/routes.js.map +0 -1
  48. package/dist/admin/sessions.d.ts +0 -89
  49. package/dist/admin/sessions.js +0 -204
  50. package/dist/admin/sessions.js.map +0 -1
  51. package/dist/admin/tail.d.ts +0 -12
  52. package/dist/admin/tail.js +0 -145
  53. package/dist/admin/tail.js.map +0 -1
  54. package/dist/admin/version.d.ts +0 -22
  55. package/dist/admin/version.js +0 -92
  56. package/dist/admin/version.js.map +0 -1
  57. package/dist/cli/cli-config.js.map +0 -1
  58. package/dist/cli/cli-format.js.map +0 -1
  59. package/dist/cli/cli-server.js.map +0 -1
  60. package/dist/cli/cli-timeline.js.map +0 -1
  61. package/dist/cli/cli.js.map +0 -1
  62. package/dist/cli/fork-cli.js.map +0 -1
  63. package/dist/cli/oauth-cli.js.map +0 -1
  64. package/dist/cli/setup.js.map +0 -1
  65. package/dist/cli/skills-install.js.map +0 -1
  66. package/dist/config/config-resolve.d.ts +0 -28
  67. package/dist/config/config-resolve.js +0 -47
  68. package/dist/config/config-resolve.js.map +0 -1
  69. package/dist/config/config.d.ts +0 -157
  70. package/dist/config/config.js +0 -581
  71. package/dist/config/config.js.map +0 -1
  72. package/dist/config/core-pin.d.ts +0 -16
  73. package/dist/config/core-pin.js +0 -85
  74. package/dist/config/core-pin.js.map +0 -1
  75. package/dist/config/overlay-assets.d.ts +0 -20
  76. package/dist/config/overlay-assets.js +0 -114
  77. package/dist/config/overlay-assets.js.map +0 -1
  78. package/dist/config/overlay-bootstrap.d.ts +0 -44
  79. package/dist/config/overlay-bootstrap.js +0 -304
  80. package/dist/config/overlay-bootstrap.js.map +0 -1
  81. package/dist/connectors/github-webhook.d.ts +0 -45
  82. package/dist/connectors/github-webhook.js +0 -321
  83. package/dist/connectors/github-webhook.js.map +0 -1
  84. package/dist/connectors/index.d.ts +0 -18
  85. package/dist/connectors/index.js +0 -41
  86. package/dist/connectors/index.js.map +0 -1
  87. package/dist/connectors/messaging/base.d.ts +0 -42
  88. package/dist/connectors/messaging/base.js +0 -139
  89. package/dist/connectors/messaging/base.js.map +0 -1
  90. package/dist/connectors/messaging/delivery.d.ts +0 -14
  91. package/dist/connectors/messaging/delivery.js +0 -38
  92. package/dist/connectors/messaging/delivery.js.map +0 -1
  93. package/dist/connectors/messaging/index.d.ts +0 -4
  94. package/dist/connectors/messaging/index.js +0 -4
  95. package/dist/connectors/messaging/index.js.map +0 -1
  96. package/dist/connectors/messaging/session-manager.d.ts +0 -53
  97. package/dist/connectors/messaging/session-manager.js +0 -255
  98. package/dist/connectors/messaging/session-manager.js.map +0 -1
  99. package/dist/connectors/messaging/types.d.ts +0 -58
  100. package/dist/connectors/messaging/types.js +0 -7
  101. package/dist/connectors/messaging/types.js.map +0 -1
  102. package/dist/connectors/slack/connector.d.ts +0 -100
  103. package/dist/connectors/slack/connector.js +0 -341
  104. package/dist/connectors/slack/connector.js.map +0 -1
  105. package/dist/connectors/slack/index.d.ts +0 -2
  106. package/dist/connectors/slack/index.js +0 -3
  107. package/dist/connectors/slack/index.js.map +0 -1
  108. package/dist/connectors/slack/mrkdwn.d.ts +0 -8
  109. package/dist/connectors/slack/mrkdwn.js +0 -123
  110. package/dist/connectors/slack/mrkdwn.js.map +0 -1
  111. package/dist/connectors/types.d.ts +0 -61
  112. package/dist/connectors/types.js +0 -2
  113. package/dist/connectors/types.js.map +0 -1
  114. package/dist/cron/fanout.d.ts +0 -33
  115. package/dist/cron/fanout.js +0 -55
  116. package/dist/cron/fanout.js.map +0 -1
  117. package/dist/cron/jobs.d.ts +0 -18
  118. package/dist/cron/jobs.js +0 -37
  119. package/dist/cron/jobs.js.map +0 -1
  120. package/dist/cron/scheduler.d.ts +0 -45
  121. package/dist/cron/scheduler.js +0 -105
  122. package/dist/cron/scheduler.js.map +0 -1
  123. package/dist/engine/agent-executor.d.ts +0 -34
  124. package/dist/engine/agent-executor.js +0 -246
  125. package/dist/engine/agent-executor.js.map +0 -1
  126. package/dist/engine/chat/chat-runner.d.ts +0 -132
  127. package/dist/engine/chat/chat-runner.js +0 -424
  128. package/dist/engine/chat/chat-runner.js.map +0 -1
  129. package/dist/engine/chat/chat-skills.d.ts +0 -45
  130. package/dist/engine/chat/chat-skills.js +0 -184
  131. package/dist/engine/chat/chat-skills.js.map +0 -1
  132. package/dist/engine/chat/chat.d.ts +0 -54
  133. package/dist/engine/chat/chat.js +0 -316
  134. package/dist/engine/chat/chat.js.map +0 -1
  135. package/dist/engine/chat/message-batcher.d.ts +0 -32
  136. package/dist/engine/chat/message-batcher.js +0 -109
  137. package/dist/engine/chat/message-batcher.js.map +0 -1
  138. package/dist/engine/dispatcher.d.ts +0 -73
  139. package/dist/engine/dispatcher.js +0 -663
  140. package/dist/engine/dispatcher.js.map +0 -1
  141. package/dist/engine/event-shim.d.ts +0 -117
  142. package/dist/engine/event-shim.js +0 -435
  143. package/dist/engine/event-shim.js.map +0 -1
  144. package/dist/engine/executors/orchestrator.d.ts +0 -81
  145. package/dist/engine/executors/orchestrator.js +0 -365
  146. package/dist/engine/executors/orchestrator.js.map +0 -1
  147. package/dist/engine/executors/shared.d.ts +0 -189
  148. package/dist/engine/executors/shared.js +0 -616
  149. package/dist/engine/executors/shared.js.map +0 -1
  150. package/dist/engine/github/git-auth.d.ts +0 -62
  151. package/dist/engine/github/git-auth.js +0 -161
  152. package/dist/engine/github/git-auth.js.map +0 -1
  153. package/dist/engine/github/github-app-client.d.ts +0 -23
  154. package/dist/engine/github/github-app-client.js +0 -33
  155. package/dist/engine/github/github-app-client.js.map +0 -1
  156. package/dist/engine/github/github-tools.d.ts +0 -18
  157. package/dist/engine/github/github-tools.js +0 -263
  158. package/dist/engine/github/github-tools.js.map +0 -1
  159. package/dist/engine/github/github.d.ts +0 -1193
  160. package/dist/engine/github/github.js +0 -357
  161. package/dist/engine/github/github.js.map +0 -1
  162. package/dist/engine/github/profiles.d.ts +0 -279
  163. package/dist/engine/github/profiles.js +0 -42
  164. package/dist/engine/github/profiles.js.map +0 -1
  165. package/dist/engine/github/review-poster.d.ts +0 -98
  166. package/dist/engine/github/review-poster.js +0 -177
  167. package/dist/engine/github/review-poster.js.map +0 -1
  168. package/dist/engine/llm.d.ts +0 -79
  169. package/dist/engine/llm.js +0 -269
  170. package/dist/engine/llm.js.map +0 -1
  171. package/dist/engine/oauth.d.ts +0 -43
  172. package/dist/engine/oauth.js +0 -103
  173. package/dist/engine/oauth.js.map +0 -1
  174. package/dist/engine/router.d.ts +0 -29
  175. package/dist/engine/router.js +0 -680
  176. package/dist/engine/router.js.map +0 -1
  177. package/dist/engine/screen/classifier.d.ts +0 -93
  178. package/dist/engine/screen/classifier.js +0 -215
  179. package/dist/engine/screen/classifier.js.map +0 -1
  180. package/dist/engine/screen/screen.d.ts +0 -41
  181. package/dist/engine/screen/screen.js +0 -93
  182. package/dist/engine/screen/screen.js.map +0 -1
  183. package/dist/evals-api.d.ts +0 -24
  184. package/dist/evals-api.js +0 -22
  185. package/dist/evals-api.js.map +0 -1
  186. package/dist/index.d.ts +0 -1
  187. package/dist/index.js +0 -923
  188. package/dist/index.js.map +0 -1
  189. package/dist/managed-repos.d.ts +0 -30
  190. package/dist/managed-repos.js +0 -72
  191. package/dist/managed-repos.js.map +0 -1
  192. package/dist/notify/index.d.ts +0 -15
  193. package/dist/notify/index.js +0 -6
  194. package/dist/notify/index.js.map +0 -1
  195. package/dist/notify/model.d.ts +0 -57
  196. package/dist/notify/model.js +0 -89
  197. package/dist/notify/model.js.map +0 -1
  198. package/dist/notify/notifier.d.ts +0 -17
  199. package/dist/notify/notifier.js +0 -87
  200. package/dist/notify/notifier.js.map +0 -1
  201. package/dist/notify/render.d.ts +0 -21
  202. package/dist/notify/render.js +0 -59
  203. package/dist/notify/render.js.map +0 -1
  204. package/dist/notify/transports/github.d.ts +0 -26
  205. package/dist/notify/transports/github.js +0 -26
  206. package/dist/notify/transports/github.js.map +0 -1
  207. package/dist/notify/transports/slack.d.ts +0 -26
  208. package/dist/notify/transports/slack.js +0 -28
  209. package/dist/notify/transports/slack.js.map +0 -1
  210. package/dist/notify/types.d.ts +0 -95
  211. package/dist/notify/types.js +0 -16
  212. package/dist/notify/types.js.map +0 -1
  213. package/dist/providers.d.ts +0 -125
  214. package/dist/providers.js +0 -279
  215. package/dist/providers.js.map +0 -1
  216. package/dist/sandbox/docker.d.ts +0 -180
  217. package/dist/sandbox/docker.js +0 -517
  218. package/dist/sandbox/docker.js.map +0 -1
  219. package/dist/sandbox/egress-allowlist.d.ts +0 -74
  220. package/dist/sandbox/egress-allowlist.js +0 -164
  221. package/dist/sandbox/egress-allowlist.js.map +0 -1
  222. package/dist/sandbox/egress-firewall-config.d.ts +0 -127
  223. package/dist/sandbox/egress-firewall-config.js +0 -434
  224. package/dist/sandbox/egress-firewall-config.js.map +0 -1
  225. package/dist/sandbox/images.d.ts +0 -23
  226. package/dist/sandbox/images.js +0 -55
  227. package/dist/sandbox/images.js.map +0 -1
  228. package/dist/sandbox/index.d.ts +0 -112
  229. package/dist/sandbox/index.js +0 -332
  230. package/dist/sandbox/index.js.map +0 -1
  231. package/dist/sandbox/sandbox.d.ts +0 -214
  232. package/dist/sandbox/sandbox.js +0 -453
  233. package/dist/sandbox/sandbox.js.map +0 -1
  234. package/dist/sandbox/smol.d.ts +0 -162
  235. package/dist/sandbox/smol.js +0 -485
  236. package/dist/sandbox/smol.js.map +0 -1
  237. package/dist/session-log.d.ts +0 -63
  238. package/dist/session-log.js +0 -290
  239. package/dist/session-log.js.map +0 -1
  240. package/dist/state/approval-store.d.ts +0 -88
  241. package/dist/state/approval-store.js +0 -149
  242. package/dist/state/approval-store.js.map +0 -1
  243. package/dist/state/build-assets.d.ts +0 -50
  244. package/dist/state/build-assets.js +0 -154
  245. package/dist/state/build-assets.js.map +0 -1
  246. package/dist/state/db.d.ts +0 -81
  247. package/dist/state/db.js +0 -155
  248. package/dist/state/db.js.map +0 -1
  249. package/dist/state/execution-store.d.ts +0 -257
  250. package/dist/state/execution-store.js +0 -527
  251. package/dist/state/execution-store.js.map +0 -1
  252. package/dist/state/migrate.d.ts +0 -15
  253. package/dist/state/migrate.js +0 -175
  254. package/dist/state/migrate.js.map +0 -1
  255. package/dist/state/workflow-run-store.d.ts +0 -216
  256. package/dist/state/workflow-run-store.js +0 -403
  257. package/dist/state/workflow-run-store.js.map +0 -1
  258. package/dist/telemetry/index.d.ts +0 -38
  259. package/dist/telemetry/index.js +0 -253
  260. package/dist/telemetry/index.js.map +0 -1
  261. package/dist/telemetry/pi-events.d.ts +0 -12
  262. package/dist/telemetry/pi-events.js +0 -134
  263. package/dist/telemetry/pi-events.js.map +0 -1
  264. package/dist/workflows/dag.d.ts +0 -37
  265. package/dist/workflows/dag.js +0 -118
  266. package/dist/workflows/dag.js.map +0 -1
  267. package/dist/workflows/loader.d.ts +0 -53
  268. package/dist/workflows/loader.js +0 -421
  269. package/dist/workflows/loader.js.map +0 -1
  270. package/dist/workflows/loop-eval.d.ts +0 -28
  271. package/dist/workflows/loop-eval.js +0 -74
  272. package/dist/workflows/loop-eval.js.map +0 -1
  273. package/dist/workflows/phase-executor.d.ts +0 -215
  274. package/dist/workflows/phase-executor.js +0 -1144
  275. package/dist/workflows/phase-executor.js.map +0 -1
  276. package/dist/workflows/phase-ref.d.ts +0 -50
  277. package/dist/workflows/phase-ref.js +0 -91
  278. package/dist/workflows/phase-ref.js.map +0 -1
  279. package/dist/workflows/resume.d.ts +0 -58
  280. package/dist/workflows/resume.js +0 -313
  281. package/dist/workflows/resume.js.map +0 -1
  282. package/dist/workflows/runner.d.ts +0 -63
  283. package/dist/workflows/runner.js +0 -364
  284. package/dist/workflows/runner.js.map +0 -1
  285. package/dist/workflows/schema.d.ts +0 -344
  286. package/dist/workflows/schema.js +0 -460
  287. package/dist/workflows/schema.js.map +0 -1
  288. package/dist/workflows/simple.d.ts +0 -90
  289. package/dist/workflows/simple.js +0 -393
  290. package/dist/workflows/simple.js.map +0 -1
  291. package/dist/workflows/target-policy.d.ts +0 -74
  292. package/dist/workflows/target-policy.js +0 -80
  293. package/dist/workflows/target-policy.js.map +0 -1
  294. package/dist/workflows/templates.d.ts +0 -88
  295. package/dist/workflows/templates.js +0 -127
  296. package/dist/workflows/templates.js.map +0 -1
  297. package/dist/workflows/triggers.d.ts +0 -21
  298. package/dist/workflows/triggers.js +0 -45
  299. package/dist/workflows/triggers.js.map +0 -1
  300. package/dist/workflows/verdict.d.ts +0 -19
  301. package/dist/workflows/verdict.js +0 -30
  302. package/dist/workflows/verdict.js.map +0 -1
  303. package/dist/worktree/manager.d.ts +0 -43
  304. package/dist/worktree/manager.js +0 -127
  305. package/dist/worktree/manager.js.map +0 -1
  306. package/docker-compose.yml +0 -274
  307. package/sandbox.Dockerfile +0 -68
  308. package/skills/README.md +0 -42
  309. package/skills/browser-qa/SKILL.md +0 -208
  310. package/skills/browser-qa/scripts/agent-browser.mjs +0 -531
  311. package/skills/building/SKILL.md +0 -95
  312. package/skills/chat/SKILL.md +0 -36
  313. package/skills/code-review/SKILL.md +0 -82
  314. package/skills/debug-production/SKILL.md +0 -108
  315. package/skills/demo/SKILL.md +0 -228
  316. package/skills/demo/scripts/compose-demo.sh +0 -243
  317. package/skills/issue-answer/SKILL.md +0 -91
  318. package/skills/issue-comment/SKILL.md +0 -49
  319. package/skills/issue-triage/SKILL.md +0 -149
  320. package/skills/issue-triage/references/AGENT-BRIEF.md +0 -65
  321. package/skills/pr-comment/SKILL.md +0 -64
  322. package/skills/pr-review/SKILL.md +0 -148
  323. package/skills/pr-review/references/findings-schema.md +0 -89
  324. package/skills/qa-test/SKILL.md +0 -97
  325. package/skills/repo-health/SKILL.md +0 -67
  326. package/skills/security-feedback/SKILL.md +0 -173
  327. package/skills/security-feedback/references/templates.md +0 -77
  328. package/skills/security-review/SKILL.md +0 -215
  329. package/skills/security-review/references/issue-format.md +0 -302
  330. package/skills/verify/SKILL.md +0 -118
  331. package/workflows/answer.yaml +0 -44
  332. package/workflows/build.yaml +0 -129
  333. package/workflows/cron-health.yaml +0 -6
  334. package/workflows/cron-review.yaml +0 -8
  335. package/workflows/cron-security.yaml +0 -6
  336. package/workflows/cron-triage.yaml +0 -8
  337. package/workflows/demo.yaml +0 -62
  338. package/workflows/examples/bash-smoke.yaml +0 -41
  339. package/workflows/examples/parallel-review.yaml +0 -36
  340. package/workflows/examples/tdd-loop.yaml +0 -17
  341. package/workflows/explore.yaml +0 -80
  342. package/workflows/issue-comment.yaml +0 -15
  343. package/workflows/issue-triage.yaml +0 -22
  344. package/workflows/pr-comment.yaml +0 -16
  345. package/workflows/pr-fix.yaml +0 -17
  346. package/workflows/pr-review.yaml +0 -50
  347. package/workflows/prompts/answer.md +0 -68
  348. package/workflows/prompts/architect.md +0 -44
  349. package/workflows/prompts/classifier.md +0 -60
  350. package/workflows/prompts/classify-adds-info.md +0 -17
  351. package/workflows/prompts/demo.md +0 -125
  352. package/workflows/prompts/executor.md +0 -42
  353. package/workflows/prompts/explore-ask.md +0 -99
  354. package/workflows/prompts/explore-publish.md +0 -31
  355. package/workflows/prompts/explore-read.md +0 -120
  356. package/workflows/prompts/explore-synthesize.md +0 -88
  357. package/workflows/prompts/fix.md +0 -18
  358. package/workflows/prompts/guardrails.md +0 -96
  359. package/workflows/prompts/pr-fix.md +0 -26
  360. package/workflows/prompts/pr.md +0 -39
  361. package/workflows/prompts/qa-browser.md +0 -95
  362. package/workflows/prompts/qa-synth.md +0 -44
  363. package/workflows/prompts/qa-test.md +0 -60
  364. package/workflows/prompts/re-reviewer.md +0 -33
  365. package/workflows/prompts/reviewer.md +0 -60
  366. package/workflows/prompts/verify-browser.md +0 -93
  367. package/workflows/prompts/verify-synth.md +0 -44
  368. package/workflows/prompts/verify.md +0 -63
  369. package/workflows/qa-test.yaml +0 -94
  370. package/workflows/repo-health.yaml +0 -15
  371. package/workflows/security-feedback.yaml +0 -25
  372. package/workflows/security-review.yaml +0 -37
  373. package/workflows/verify.yaml +0 -93
  374. /package/dist/{cli/cli-config.d.ts → cli-config.d.ts} +0 -0
  375. /package/dist/{cli/cli-config.js → cli-config.js} +0 -0
  376. /package/dist/{cli/cli-format.d.ts → cli-format.d.ts} +0 -0
  377. /package/dist/{cli/cli-format.js → cli-format.js} +0 -0
  378. /package/dist/{cli/cli-timeline.d.ts → cli-timeline.d.ts} +0 -0
  379. /package/dist/{cli/cli-timeline.js → cli-timeline.js} +0 -0
  380. /package/dist/{cli/cli.d.ts → cli.d.ts} +0 -0
  381. /package/dist/{cli/oauth-cli.d.ts → oauth-cli.d.ts} +0 -0
  382. /package/dist/{cli/setup.d.ts → setup.d.ts} +0 -0
@@ -1,1193 +0,0 @@
1
- import { type GitHubAppClientConfig } from "./github-app-client.js";
2
- import type { InlineComment, ReviewEvent } from "./review-poster.js";
3
- /** GitHub reaction emoji values accepted by the reactions API. */
4
- export type ReactionContent = "+1" | "-1" | "laugh" | "confused" | "heart" | "hooray" | "rocket" | "eyes";
5
- /**
6
- * GitHub client for the harness — uses GitHub App auth.
7
- * Used by the orchestrator to post comments, not by agent sessions.
8
- */
9
- export declare class GitHubClient {
10
- private octokit;
11
- constructor(config: GitHubAppClientConfig);
12
- /**
13
- * Build a client authed with a raw bearer token (a pre-minted installation
14
- * token) instead of App JWT auth. Used by the harness-side `post-review`
15
- * action: prod passes the run's scoped review-write token; evals pass the
16
- * mock's token + `baseUrl`. Avoids the App installation-token minting
17
- * round-trip (which hard-codes api.github.com and the evals mock doesn't
18
- * serve).
19
- */
20
- static withToken(token: string, baseUrl?: string): GitHubClient;
21
- /**
22
- * Create a new comment on an issue/PR. Returns the new comment id so callers
23
- * that want to edit it later (the in-place status checklist — see
24
- * `src/notify/transports/github.ts`) can hold onto a handle. Callers that
25
- * just post a one-off comment can ignore the return.
26
- */
27
- postComment(owner: string, repo: string, issueNumber: number, body: string): Promise<number>;
28
- /**
29
- * List every repository the App installation can access, as `owner/repo`
30
- * full names. Used at boot to seed the managed-repo list from the App grant
31
- * (see src/managed-repos.ts). The installation id is bound by the App auth
32
- * strategy, so no argument is needed. Paginated — handles installs with
33
- * hundreds of repos.
34
- */
35
- listInstallationRepos(): Promise<string[]>;
36
- /**
37
- * Edit an existing issue/PR comment in place. Paired with `postComment` to
38
- * maintain a single status comment that updates as a workflow progresses,
39
- * rather than posting a new comment per phase. GitHub does NOT notify
40
- * watchers on edits, which is exactly why this keeps the thread quiet.
41
- */
42
- updateComment(owner: string, repo: string, commentId: number, body: string): Promise<void>;
43
- /**
44
- * Add an emoji reaction to a specific issue comment. Used as an immediate
45
- * (silent) acknowledgment that the agent has accepted a request, before
46
- * any actual work — and any chatty bot comments — start.
47
- *
48
- * Reaction `content` values: "+1" | "-1" | "laugh" | "confused" | "heart"
49
- * | "hooray" | "rocket" | "eyes".
50
- */
51
- reactToComment(owner: string, repo: string, commentId: number, content?: ReactionContent): Promise<void>;
52
- /**
53
- * Add an emoji reaction to an issue or PR itself (not a comment) — used to
54
- * ack events that aren't comments, e.g. a freshly opened issue/PR. PRs are
55
- * issues for the reactions API, so this works for both.
56
- */
57
- reactToIssue(owner: string, repo: string, issueNumber: number, content?: ReactionContent): Promise<void>;
58
- /**
59
- * Add an emoji reaction to a pull-request review comment (inline diff
60
- * comment). Distinct endpoint from issue comments — review comments live on
61
- * the pulls API.
62
- */
63
- reactToReviewComment(owner: string, repo: string, commentId: number, content?: ReactionContent): Promise<void>;
64
- getIssue(owner: string, repo: string, issueNumber: number): Promise<{
65
- id: number;
66
- node_id: string;
67
- url: string;
68
- repository_url: string;
69
- labels_url: string;
70
- comments_url: string;
71
- events_url: string;
72
- html_url: string;
73
- number: number;
74
- state: string;
75
- state_reason?: "completed" | "reopened" | "not_planned" | "duplicate" | null;
76
- title: string;
77
- body?: string | null;
78
- user: {
79
- name?: string | null;
80
- email?: string | null;
81
- login: string;
82
- id: number;
83
- node_id: string;
84
- avatar_url: string;
85
- gravatar_id: string | null;
86
- url: string;
87
- html_url: string;
88
- followers_url: string;
89
- following_url: string;
90
- gists_url: string;
91
- starred_url: string;
92
- subscriptions_url: string;
93
- organizations_url: string;
94
- repos_url: string;
95
- events_url: string;
96
- received_events_url: string;
97
- type: string;
98
- site_admin: boolean;
99
- starred_at?: string;
100
- user_view_type?: string;
101
- } | null;
102
- labels: (string | {
103
- id?: number;
104
- node_id?: string;
105
- url?: string;
106
- name?: string;
107
- description?: string | null;
108
- color?: string | null;
109
- default?: boolean;
110
- })[];
111
- assignee: {
112
- name?: string | null;
113
- email?: string | null;
114
- login: string;
115
- id: number;
116
- node_id: string;
117
- avatar_url: string;
118
- gravatar_id: string | null;
119
- url: string;
120
- html_url: string;
121
- followers_url: string;
122
- following_url: string;
123
- gists_url: string;
124
- starred_url: string;
125
- subscriptions_url: string;
126
- organizations_url: string;
127
- repos_url: string;
128
- events_url: string;
129
- received_events_url: string;
130
- type: string;
131
- site_admin: boolean;
132
- starred_at?: string;
133
- user_view_type?: string;
134
- } | null;
135
- assignees?: {
136
- name?: string | null;
137
- email?: string | null;
138
- login: string;
139
- id: number;
140
- node_id: string;
141
- avatar_url: string;
142
- gravatar_id: string | null;
143
- url: string;
144
- html_url: string;
145
- followers_url: string;
146
- following_url: string;
147
- gists_url: string;
148
- starred_url: string;
149
- subscriptions_url: string;
150
- organizations_url: string;
151
- repos_url: string;
152
- events_url: string;
153
- received_events_url: string;
154
- type: string;
155
- site_admin: boolean;
156
- starred_at?: string;
157
- user_view_type?: string;
158
- }[] | null;
159
- milestone: {
160
- url: string;
161
- html_url: string;
162
- labels_url: string;
163
- id: number;
164
- node_id: string;
165
- number: number;
166
- state: "open" | "closed";
167
- title: string;
168
- description: string | null;
169
- creator: {
170
- name?: string | null;
171
- email?: string | null;
172
- login: string;
173
- id: number;
174
- node_id: string;
175
- avatar_url: string;
176
- gravatar_id: string | null;
177
- url: string;
178
- html_url: string;
179
- followers_url: string;
180
- following_url: string;
181
- gists_url: string;
182
- starred_url: string;
183
- subscriptions_url: string;
184
- organizations_url: string;
185
- repos_url: string;
186
- events_url: string;
187
- received_events_url: string;
188
- type: string;
189
- site_admin: boolean;
190
- starred_at?: string;
191
- user_view_type?: string;
192
- } | null;
193
- open_issues: number;
194
- closed_issues: number;
195
- created_at: string;
196
- updated_at: string;
197
- closed_at: string | null;
198
- due_on: string | null;
199
- } | null;
200
- locked: boolean;
201
- active_lock_reason?: string | null;
202
- comments: number;
203
- pull_request?: {
204
- merged_at?: string | null;
205
- diff_url: string | null;
206
- html_url: string | null;
207
- patch_url: string | null;
208
- url: string | null;
209
- };
210
- closed_at: string | null;
211
- created_at: string;
212
- updated_at: string;
213
- draft?: boolean;
214
- closed_by?: {
215
- name?: string | null;
216
- email?: string | null;
217
- login: string;
218
- id: number;
219
- node_id: string;
220
- avatar_url: string;
221
- gravatar_id: string | null;
222
- url: string;
223
- html_url: string;
224
- followers_url: string;
225
- following_url: string;
226
- gists_url: string;
227
- starred_url: string;
228
- subscriptions_url: string;
229
- organizations_url: string;
230
- repos_url: string;
231
- events_url: string;
232
- received_events_url: string;
233
- type: string;
234
- site_admin: boolean;
235
- starred_at?: string;
236
- user_view_type?: string;
237
- } | null;
238
- body_html?: string;
239
- body_text?: string;
240
- timeline_url?: string;
241
- type?: {
242
- id: number;
243
- node_id: string;
244
- name: string;
245
- description: string | null;
246
- color?: "gray" | "blue" | "green" | "yellow" | "orange" | "red" | "pink" | "purple" | null;
247
- created_at?: string;
248
- updated_at?: string;
249
- is_enabled?: boolean;
250
- } | null;
251
- repository?: {
252
- id: number;
253
- node_id: string;
254
- name: string;
255
- full_name: string;
256
- license: {
257
- key: string;
258
- name: string;
259
- url: string | null;
260
- spdx_id: string | null;
261
- node_id: string;
262
- html_url?: string;
263
- } | null;
264
- forks: number;
265
- permissions?: {
266
- admin: boolean;
267
- pull: boolean;
268
- triage?: boolean;
269
- push: boolean;
270
- maintain?: boolean;
271
- };
272
- owner: {
273
- name?: string | null;
274
- email?: string | null;
275
- login: string;
276
- id: number;
277
- node_id: string;
278
- avatar_url: string;
279
- gravatar_id: string | null;
280
- url: string;
281
- html_url: string;
282
- followers_url: string;
283
- following_url: string;
284
- gists_url: string;
285
- starred_url: string;
286
- subscriptions_url: string;
287
- organizations_url: string;
288
- repos_url: string;
289
- events_url: string;
290
- received_events_url: string;
291
- type: string;
292
- site_admin: boolean;
293
- starred_at?: string;
294
- user_view_type?: string;
295
- };
296
- private: boolean;
297
- html_url: string;
298
- description: string | null;
299
- fork: boolean;
300
- url: string;
301
- archive_url: string;
302
- assignees_url: string;
303
- blobs_url: string;
304
- branches_url: string;
305
- collaborators_url: string;
306
- comments_url: string;
307
- commits_url: string;
308
- compare_url: string;
309
- contents_url: string;
310
- contributors_url: string;
311
- deployments_url: string;
312
- downloads_url: string;
313
- events_url: string;
314
- forks_url: string;
315
- git_commits_url: string;
316
- git_refs_url: string;
317
- git_tags_url: string;
318
- git_url: string;
319
- issue_comment_url: string;
320
- issue_events_url: string;
321
- issues_url: string;
322
- keys_url: string;
323
- labels_url: string;
324
- languages_url: string;
325
- merges_url: string;
326
- milestones_url: string;
327
- notifications_url: string;
328
- pulls_url: string;
329
- releases_url: string;
330
- ssh_url: string;
331
- stargazers_url: string;
332
- statuses_url: string;
333
- subscribers_url: string;
334
- subscription_url: string;
335
- tags_url: string;
336
- teams_url: string;
337
- trees_url: string;
338
- clone_url: string;
339
- mirror_url: string | null;
340
- hooks_url: string;
341
- svn_url: string;
342
- homepage: string | null;
343
- language: string | null;
344
- forks_count: number;
345
- stargazers_count: number;
346
- watchers_count: number;
347
- size: number;
348
- default_branch: string;
349
- open_issues_count: number;
350
- is_template?: boolean;
351
- topics?: string[];
352
- has_issues: boolean;
353
- has_projects: boolean;
354
- has_wiki: boolean;
355
- has_pages: boolean;
356
- has_downloads: boolean;
357
- has_discussions?: boolean;
358
- archived: boolean;
359
- disabled: boolean;
360
- visibility?: string;
361
- pushed_at: string | null;
362
- created_at: string | null;
363
- updated_at: string | null;
364
- allow_rebase_merge?: boolean;
365
- temp_clone_token?: string;
366
- allow_squash_merge?: boolean;
367
- allow_auto_merge?: boolean;
368
- delete_branch_on_merge?: boolean;
369
- allow_update_branch?: boolean;
370
- use_squash_pr_title_as_default?: boolean;
371
- squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
372
- squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
373
- merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
374
- merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
375
- allow_merge_commit?: boolean;
376
- allow_forking?: boolean;
377
- web_commit_signoff_required?: boolean;
378
- open_issues: number;
379
- watchers: number;
380
- master_branch?: string;
381
- starred_at?: string;
382
- anonymous_access_enabled?: boolean;
383
- code_search_index_status?: {
384
- lexical_search_ok?: boolean;
385
- lexical_commit_sha?: string;
386
- };
387
- };
388
- performed_via_github_app?: {
389
- id: number;
390
- slug?: string;
391
- node_id: string;
392
- client_id?: string;
393
- owner: {
394
- name?: string | null;
395
- email?: string | null;
396
- login: string;
397
- id: number;
398
- node_id: string;
399
- avatar_url: string;
400
- gravatar_id: string | null;
401
- url: string;
402
- html_url: string;
403
- followers_url: string;
404
- following_url: string;
405
- gists_url: string;
406
- starred_url: string;
407
- subscriptions_url: string;
408
- organizations_url: string;
409
- repos_url: string;
410
- events_url: string;
411
- received_events_url: string;
412
- type: string;
413
- site_admin: boolean;
414
- starred_at?: string;
415
- user_view_type?: string;
416
- } | {
417
- description?: string | null;
418
- html_url: string;
419
- website_url?: string | null;
420
- id: number;
421
- node_id: string;
422
- name: string;
423
- slug: string;
424
- created_at: string | null;
425
- updated_at: string | null;
426
- avatar_url: string;
427
- };
428
- name: string;
429
- description: string | null;
430
- external_url: string;
431
- html_url: string;
432
- created_at: string;
433
- updated_at: string;
434
- permissions: {
435
- issues?: string;
436
- checks?: string;
437
- metadata?: string;
438
- contents?: string;
439
- deployments?: string;
440
- [key: string]: string | undefined;
441
- };
442
- events: string[];
443
- installations_count?: number;
444
- } | null;
445
- author_association?: "COLLABORATOR" | "CONTRIBUTOR" | "FIRST_TIMER" | "FIRST_TIME_CONTRIBUTOR" | "MANNEQUIN" | "MEMBER" | "NONE" | "OWNER";
446
- reactions?: {
447
- url: string;
448
- total_count: number;
449
- "+1": number;
450
- "-1": number;
451
- laugh: number;
452
- confused: number;
453
- heart: number;
454
- hooray: number;
455
- eyes: number;
456
- rocket: number;
457
- };
458
- sub_issues_summary?: {
459
- total: number;
460
- completed: number;
461
- percent_completed: number;
462
- };
463
- parent_issue_url?: string | null;
464
- issue_dependencies_summary?: {
465
- blocked_by: number;
466
- blocking: number;
467
- total_blocked_by: number;
468
- total_blocking: number;
469
- };
470
- issue_field_values?: {
471
- issue_field_id: number;
472
- node_id: string;
473
- data_type: "text" | "single_select" | "number" | "date";
474
- value: (string | number) | null;
475
- single_select_option?: {
476
- id: number;
477
- name: string;
478
- color: string;
479
- } | null;
480
- }[];
481
- }>;
482
- /**
483
- * Fetch the issue body. Used by the dispatch path so build/explore/pr-fix
484
- * workflows always see the real issue body, even when triggered from a
485
- * comment (where the EventEnvelope.body field is the comment, not the
486
- * issue body).
487
- */
488
- getIssueBody(owner: string, repo: string, issueNumber: number): Promise<string>;
489
- /**
490
- * List all comments on an issue/PR, oldest first. Used by the dispatch path
491
- * to inject the full conversation thread into the architect's context — the
492
- * spec the bot writes during an `explore` run lives here, and the build
493
- * cycle needs to see it to implement the agreed design.
494
- */
495
- listIssueComments(owner: string, repo: string, issueNumber: number): Promise<Array<{
496
- user: string;
497
- body: string;
498
- createdAt: string;
499
- }>>;
500
- getPullRequest(owner: string, repo: string, pullNumber: number): Promise<{
501
- url: string;
502
- id: number;
503
- node_id: string;
504
- html_url: string;
505
- diff_url: string;
506
- patch_url: string;
507
- issue_url: string;
508
- commits_url: string;
509
- review_comments_url: string;
510
- review_comment_url: string;
511
- comments_url: string;
512
- statuses_url: string;
513
- number: number;
514
- state: "open" | "closed";
515
- locked: boolean;
516
- title: string;
517
- user: {
518
- name?: string | null;
519
- email?: string | null;
520
- login: string;
521
- id: number;
522
- node_id: string;
523
- avatar_url: string;
524
- gravatar_id: string | null;
525
- url: string;
526
- html_url: string;
527
- followers_url: string;
528
- following_url: string;
529
- gists_url: string;
530
- starred_url: string;
531
- subscriptions_url: string;
532
- organizations_url: string;
533
- repos_url: string;
534
- events_url: string;
535
- received_events_url: string;
536
- type: string;
537
- site_admin: boolean;
538
- starred_at?: string;
539
- user_view_type?: string;
540
- };
541
- body: string | null;
542
- labels: {
543
- id: number;
544
- node_id: string;
545
- url: string;
546
- name: string;
547
- description: string | null;
548
- color: string;
549
- default: boolean;
550
- }[];
551
- milestone: {
552
- url: string;
553
- html_url: string;
554
- labels_url: string;
555
- id: number;
556
- node_id: string;
557
- number: number;
558
- state: "open" | "closed";
559
- title: string;
560
- description: string | null;
561
- creator: {
562
- name?: string | null;
563
- email?: string | null;
564
- login: string;
565
- id: number;
566
- node_id: string;
567
- avatar_url: string;
568
- gravatar_id: string | null;
569
- url: string;
570
- html_url: string;
571
- followers_url: string;
572
- following_url: string;
573
- gists_url: string;
574
- starred_url: string;
575
- subscriptions_url: string;
576
- organizations_url: string;
577
- repos_url: string;
578
- events_url: string;
579
- received_events_url: string;
580
- type: string;
581
- site_admin: boolean;
582
- starred_at?: string;
583
- user_view_type?: string;
584
- } | null;
585
- open_issues: number;
586
- closed_issues: number;
587
- created_at: string;
588
- updated_at: string;
589
- closed_at: string | null;
590
- due_on: string | null;
591
- } | null;
592
- active_lock_reason?: string | null;
593
- created_at: string;
594
- updated_at: string;
595
- closed_at: string | null;
596
- merged_at: string | null;
597
- merge_commit_sha: string | null;
598
- assignee: {
599
- name?: string | null;
600
- email?: string | null;
601
- login: string;
602
- id: number;
603
- node_id: string;
604
- avatar_url: string;
605
- gravatar_id: string | null;
606
- url: string;
607
- html_url: string;
608
- followers_url: string;
609
- following_url: string;
610
- gists_url: string;
611
- starred_url: string;
612
- subscriptions_url: string;
613
- organizations_url: string;
614
- repos_url: string;
615
- events_url: string;
616
- received_events_url: string;
617
- type: string;
618
- site_admin: boolean;
619
- starred_at?: string;
620
- user_view_type?: string;
621
- } | null;
622
- assignees?: {
623
- name?: string | null;
624
- email?: string | null;
625
- login: string;
626
- id: number;
627
- node_id: string;
628
- avatar_url: string;
629
- gravatar_id: string | null;
630
- url: string;
631
- html_url: string;
632
- followers_url: string;
633
- following_url: string;
634
- gists_url: string;
635
- starred_url: string;
636
- subscriptions_url: string;
637
- organizations_url: string;
638
- repos_url: string;
639
- events_url: string;
640
- received_events_url: string;
641
- type: string;
642
- site_admin: boolean;
643
- starred_at?: string;
644
- user_view_type?: string;
645
- }[] | null;
646
- requested_reviewers?: {
647
- name?: string | null;
648
- email?: string | null;
649
- login: string;
650
- id: number;
651
- node_id: string;
652
- avatar_url: string;
653
- gravatar_id: string | null;
654
- url: string;
655
- html_url: string;
656
- followers_url: string;
657
- following_url: string;
658
- gists_url: string;
659
- starred_url: string;
660
- subscriptions_url: string;
661
- organizations_url: string;
662
- repos_url: string;
663
- events_url: string;
664
- received_events_url: string;
665
- type: string;
666
- site_admin: boolean;
667
- starred_at?: string;
668
- user_view_type?: string;
669
- }[] | null;
670
- requested_teams?: {
671
- id: number;
672
- node_id: string;
673
- url: string;
674
- members_url: string;
675
- name: string;
676
- description: string | null;
677
- permission: string;
678
- privacy?: string;
679
- notification_setting?: string;
680
- html_url: string;
681
- repositories_url: string;
682
- slug: string;
683
- ldap_dn?: string;
684
- type: "enterprise" | "organization";
685
- organization_id?: number;
686
- enterprise_id?: number;
687
- }[] | null;
688
- head: {
689
- label: string;
690
- ref: string;
691
- repo: {
692
- id: number;
693
- node_id: string;
694
- name: string;
695
- full_name: string;
696
- license: {
697
- key: string;
698
- name: string;
699
- url: string | null;
700
- spdx_id: string | null;
701
- node_id: string;
702
- html_url?: string;
703
- } | null;
704
- forks: number;
705
- permissions?: {
706
- admin: boolean;
707
- pull: boolean;
708
- triage?: boolean;
709
- push: boolean;
710
- maintain?: boolean;
711
- };
712
- owner: {
713
- name?: string | null;
714
- email?: string | null;
715
- login: string;
716
- id: number;
717
- node_id: string;
718
- avatar_url: string;
719
- gravatar_id: string | null;
720
- url: string;
721
- html_url: string;
722
- followers_url: string;
723
- following_url: string;
724
- gists_url: string;
725
- starred_url: string;
726
- subscriptions_url: string;
727
- organizations_url: string;
728
- repos_url: string;
729
- events_url: string;
730
- received_events_url: string;
731
- type: string;
732
- site_admin: boolean;
733
- starred_at?: string;
734
- user_view_type?: string;
735
- };
736
- private: boolean;
737
- html_url: string;
738
- description: string | null;
739
- fork: boolean;
740
- url: string;
741
- archive_url: string;
742
- assignees_url: string;
743
- blobs_url: string;
744
- branches_url: string;
745
- collaborators_url: string;
746
- comments_url: string;
747
- commits_url: string;
748
- compare_url: string;
749
- contents_url: string;
750
- contributors_url: string;
751
- deployments_url: string;
752
- downloads_url: string;
753
- events_url: string;
754
- forks_url: string;
755
- git_commits_url: string;
756
- git_refs_url: string;
757
- git_tags_url: string;
758
- git_url: string;
759
- issue_comment_url: string;
760
- issue_events_url: string;
761
- issues_url: string;
762
- keys_url: string;
763
- labels_url: string;
764
- languages_url: string;
765
- merges_url: string;
766
- milestones_url: string;
767
- notifications_url: string;
768
- pulls_url: string;
769
- releases_url: string;
770
- ssh_url: string;
771
- stargazers_url: string;
772
- statuses_url: string;
773
- subscribers_url: string;
774
- subscription_url: string;
775
- tags_url: string;
776
- teams_url: string;
777
- trees_url: string;
778
- clone_url: string;
779
- mirror_url: string | null;
780
- hooks_url: string;
781
- svn_url: string;
782
- homepage: string | null;
783
- language: string | null;
784
- forks_count: number;
785
- stargazers_count: number;
786
- watchers_count: number;
787
- size: number;
788
- default_branch: string;
789
- open_issues_count: number;
790
- is_template?: boolean;
791
- topics?: string[];
792
- has_issues: boolean;
793
- has_projects: boolean;
794
- has_wiki: boolean;
795
- has_pages: boolean;
796
- has_downloads: boolean;
797
- has_discussions?: boolean;
798
- archived: boolean;
799
- disabled: boolean;
800
- visibility?: string;
801
- pushed_at: string | null;
802
- created_at: string | null;
803
- updated_at: string | null;
804
- allow_rebase_merge?: boolean;
805
- temp_clone_token?: string;
806
- allow_squash_merge?: boolean;
807
- allow_auto_merge?: boolean;
808
- delete_branch_on_merge?: boolean;
809
- allow_update_branch?: boolean;
810
- use_squash_pr_title_as_default?: boolean;
811
- squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
812
- squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
813
- merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
814
- merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
815
- allow_merge_commit?: boolean;
816
- allow_forking?: boolean;
817
- web_commit_signoff_required?: boolean;
818
- open_issues: number;
819
- watchers: number;
820
- master_branch?: string;
821
- starred_at?: string;
822
- anonymous_access_enabled?: boolean;
823
- code_search_index_status?: {
824
- lexical_search_ok?: boolean;
825
- lexical_commit_sha?: string;
826
- };
827
- };
828
- sha: string;
829
- user: {
830
- name?: string | null;
831
- email?: string | null;
832
- login: string;
833
- id: number;
834
- node_id: string;
835
- avatar_url: string;
836
- gravatar_id: string | null;
837
- url: string;
838
- html_url: string;
839
- followers_url: string;
840
- following_url: string;
841
- gists_url: string;
842
- starred_url: string;
843
- subscriptions_url: string;
844
- organizations_url: string;
845
- repos_url: string;
846
- events_url: string;
847
- received_events_url: string;
848
- type: string;
849
- site_admin: boolean;
850
- starred_at?: string;
851
- user_view_type?: string;
852
- };
853
- };
854
- base: {
855
- label: string;
856
- ref: string;
857
- repo: {
858
- id: number;
859
- node_id: string;
860
- name: string;
861
- full_name: string;
862
- license: {
863
- key: string;
864
- name: string;
865
- url: string | null;
866
- spdx_id: string | null;
867
- node_id: string;
868
- html_url?: string;
869
- } | null;
870
- forks: number;
871
- permissions?: {
872
- admin: boolean;
873
- pull: boolean;
874
- triage?: boolean;
875
- push: boolean;
876
- maintain?: boolean;
877
- };
878
- owner: {
879
- name?: string | null;
880
- email?: string | null;
881
- login: string;
882
- id: number;
883
- node_id: string;
884
- avatar_url: string;
885
- gravatar_id: string | null;
886
- url: string;
887
- html_url: string;
888
- followers_url: string;
889
- following_url: string;
890
- gists_url: string;
891
- starred_url: string;
892
- subscriptions_url: string;
893
- organizations_url: string;
894
- repos_url: string;
895
- events_url: string;
896
- received_events_url: string;
897
- type: string;
898
- site_admin: boolean;
899
- starred_at?: string;
900
- user_view_type?: string;
901
- };
902
- private: boolean;
903
- html_url: string;
904
- description: string | null;
905
- fork: boolean;
906
- url: string;
907
- archive_url: string;
908
- assignees_url: string;
909
- blobs_url: string;
910
- branches_url: string;
911
- collaborators_url: string;
912
- comments_url: string;
913
- commits_url: string;
914
- compare_url: string;
915
- contents_url: string;
916
- contributors_url: string;
917
- deployments_url: string;
918
- downloads_url: string;
919
- events_url: string;
920
- forks_url: string;
921
- git_commits_url: string;
922
- git_refs_url: string;
923
- git_tags_url: string;
924
- git_url: string;
925
- issue_comment_url: string;
926
- issue_events_url: string;
927
- issues_url: string;
928
- keys_url: string;
929
- labels_url: string;
930
- languages_url: string;
931
- merges_url: string;
932
- milestones_url: string;
933
- notifications_url: string;
934
- pulls_url: string;
935
- releases_url: string;
936
- ssh_url: string;
937
- stargazers_url: string;
938
- statuses_url: string;
939
- subscribers_url: string;
940
- subscription_url: string;
941
- tags_url: string;
942
- teams_url: string;
943
- trees_url: string;
944
- clone_url: string;
945
- mirror_url: string | null;
946
- hooks_url: string;
947
- svn_url: string;
948
- homepage: string | null;
949
- language: string | null;
950
- forks_count: number;
951
- stargazers_count: number;
952
- watchers_count: number;
953
- size: number;
954
- default_branch: string;
955
- open_issues_count: number;
956
- is_template?: boolean;
957
- topics?: string[];
958
- has_issues: boolean;
959
- has_projects: boolean;
960
- has_wiki: boolean;
961
- has_pages: boolean;
962
- has_downloads: boolean;
963
- has_discussions?: boolean;
964
- archived: boolean;
965
- disabled: boolean;
966
- visibility?: string;
967
- pushed_at: string | null;
968
- created_at: string | null;
969
- updated_at: string | null;
970
- allow_rebase_merge?: boolean;
971
- temp_clone_token?: string;
972
- allow_squash_merge?: boolean;
973
- allow_auto_merge?: boolean;
974
- delete_branch_on_merge?: boolean;
975
- allow_update_branch?: boolean;
976
- use_squash_pr_title_as_default?: boolean;
977
- squash_merge_commit_title?: "PR_TITLE" | "COMMIT_OR_PR_TITLE";
978
- squash_merge_commit_message?: "PR_BODY" | "COMMIT_MESSAGES" | "BLANK";
979
- merge_commit_title?: "PR_TITLE" | "MERGE_MESSAGE";
980
- merge_commit_message?: "PR_BODY" | "PR_TITLE" | "BLANK";
981
- allow_merge_commit?: boolean;
982
- allow_forking?: boolean;
983
- web_commit_signoff_required?: boolean;
984
- open_issues: number;
985
- watchers: number;
986
- master_branch?: string;
987
- starred_at?: string;
988
- anonymous_access_enabled?: boolean;
989
- code_search_index_status?: {
990
- lexical_search_ok?: boolean;
991
- lexical_commit_sha?: string;
992
- };
993
- };
994
- sha: string;
995
- user: {
996
- name?: string | null;
997
- email?: string | null;
998
- login: string;
999
- id: number;
1000
- node_id: string;
1001
- avatar_url: string;
1002
- gravatar_id: string | null;
1003
- url: string;
1004
- html_url: string;
1005
- followers_url: string;
1006
- following_url: string;
1007
- gists_url: string;
1008
- starred_url: string;
1009
- subscriptions_url: string;
1010
- organizations_url: string;
1011
- repos_url: string;
1012
- events_url: string;
1013
- received_events_url: string;
1014
- type: string;
1015
- site_admin: boolean;
1016
- starred_at?: string;
1017
- user_view_type?: string;
1018
- };
1019
- };
1020
- _links: {
1021
- comments: {
1022
- href: string;
1023
- };
1024
- commits: {
1025
- href: string;
1026
- };
1027
- statuses: {
1028
- href: string;
1029
- };
1030
- html: {
1031
- href: string;
1032
- };
1033
- issue: {
1034
- href: string;
1035
- };
1036
- review_comments: {
1037
- href: string;
1038
- };
1039
- review_comment: {
1040
- href: string;
1041
- };
1042
- self: {
1043
- href: string;
1044
- };
1045
- };
1046
- author_association: "COLLABORATOR" | "CONTRIBUTOR" | "FIRST_TIMER" | "FIRST_TIME_CONTRIBUTOR" | "MANNEQUIN" | "MEMBER" | "NONE" | "OWNER";
1047
- auto_merge: {
1048
- enabled_by: {
1049
- name?: string | null;
1050
- email?: string | null;
1051
- login: string;
1052
- id: number;
1053
- node_id: string;
1054
- avatar_url: string;
1055
- gravatar_id: string | null;
1056
- url: string;
1057
- html_url: string;
1058
- followers_url: string;
1059
- following_url: string;
1060
- gists_url: string;
1061
- starred_url: string;
1062
- subscriptions_url: string;
1063
- organizations_url: string;
1064
- repos_url: string;
1065
- events_url: string;
1066
- received_events_url: string;
1067
- type: string;
1068
- site_admin: boolean;
1069
- starred_at?: string;
1070
- user_view_type?: string;
1071
- };
1072
- merge_method: "merge" | "squash" | "rebase";
1073
- commit_title: string;
1074
- commit_message: string;
1075
- } | null;
1076
- draft?: boolean;
1077
- merged: boolean;
1078
- mergeable: boolean | null;
1079
- rebaseable?: boolean | null;
1080
- mergeable_state: string;
1081
- merged_by: {
1082
- name?: string | null;
1083
- email?: string | null;
1084
- login: string;
1085
- id: number;
1086
- node_id: string;
1087
- avatar_url: string;
1088
- gravatar_id: string | null;
1089
- url: string;
1090
- html_url: string;
1091
- followers_url: string;
1092
- following_url: string;
1093
- gists_url: string;
1094
- starred_url: string;
1095
- subscriptions_url: string;
1096
- organizations_url: string;
1097
- repos_url: string;
1098
- events_url: string;
1099
- received_events_url: string;
1100
- type: string;
1101
- site_admin: boolean;
1102
- starred_at?: string;
1103
- user_view_type?: string;
1104
- } | null;
1105
- comments: number;
1106
- review_comments: number;
1107
- maintainer_can_modify: boolean;
1108
- commits: number;
1109
- additions: number;
1110
- deletions: number;
1111
- changed_files: number;
1112
- }>;
1113
- /**
1114
- * The repo's default branch (e.g. `main`, `master`, `develop`). Used to
1115
- * scope build runs to the real base branch instead of assuming `main` — a
1116
- * `master`-default repo otherwise breaks every `git ... main..HEAD` the
1117
- * reviewer runs. See the `baseBranch` plumbing in src/index.ts.
1118
- */
1119
- getDefaultBranch(owner: string, repo: string): Promise<string>;
1120
- /** Convenience: fetch only the PR's head commit SHA. Used by check-run code. */
1121
- getPullRequestHeadSha(owner: string, repo: string, pullNumber: number): Promise<string>;
1122
- /**
1123
- * Create a Check Run on a PR's head commit. Returns the new check_run id so
1124
- * the caller can later transition it from `in_progress` → `completed` with
1125
- * a conclusion. Repos that enable "Require status checks to pass" with
1126
- * `name` in their list will gate merges on the eventual conclusion.
1127
- *
1128
- * Requires the GitHub App to have `Checks: Read and write` permission.
1129
- */
1130
- createCheckRun(owner: string, repo: string, headSha: string, name: string, options?: {
1131
- detailsUrl?: string;
1132
- output?: {
1133
- title: string;
1134
- summary: string;
1135
- };
1136
- }): Promise<number>;
1137
- /**
1138
- * Update an existing Check Run — typically to transition `in_progress` →
1139
- * `completed` with a conclusion. Conclusion values that branch protection
1140
- * treats as passing: `success`, `neutral`, `skipped`. Failing: `failure`,
1141
- * `cancelled`, `timed_out`, `action_required`.
1142
- */
1143
- updateCheckRun(owner: string, repo: string, checkRunId: number, update: {
1144
- status?: "queued" | "in_progress" | "completed";
1145
- conclusion?: "success" | "failure" | "neutral" | "cancelled" | "timed_out" | "action_required" | "skipped";
1146
- /** Sets the check's "Details" link (e.g. the dashboard run deep link). */
1147
- detailsUrl?: string;
1148
- output?: {
1149
- title: string;
1150
- summary: string;
1151
- };
1152
- }): Promise<void>;
1153
- /**
1154
- * Find the bot's most recent review on this PR's current head commit. Used
1155
- * after a pr-review workflow finishes to derive the check-run conclusion
1156
- * from the review the agent actually posted (APPROVE / REQUEST_CHANGES /
1157
- * COMMENT). Returns null when the bot hasn't reviewed this SHA yet.
1158
- *
1159
- * `botLogin` defaults to `last-light[bot]` so the lookup matches App-auth'd
1160
- * reviews regardless of how the agent identified itself.
1161
- */
1162
- getLatestBotReview(owner: string, repo: string, pullNumber: number, headSha: string, botLogin?: string): Promise<{
1163
- state: string;
1164
- body: string | null;
1165
- submittedAt: string | null;
1166
- } | null>;
1167
- /**
1168
- * Fetch a PR's unified diff (three-dot, base…head) as a string. Used by the
1169
- * `post-review` action to anchor findings to changed lines — the harness runs
1170
- * this in-process (not in the sandbox), so the diff comes from the API rather
1171
- * than a local `git diff`, with no dependency on checkout/fetch state.
1172
- */
1173
- getPullRequestDiff(owner: string, repo: string, pullNumber: number): Promise<string>;
1174
- /**
1175
- * Submit one formal PR review with an event (APPROVE / REQUEST_CHANGES /
1176
- * COMMENT) plus optional line-anchored inline comments. `commitId` pins the
1177
- * review to the reviewed head SHA. This is the single harness-side write for
1178
- * PR reviews — the reviewer agent never submits; it writes findings and the
1179
- * `post-review` action calls this. Throws on a non-2xx so the action can fail
1180
- * the phase visibly (or retry body-only).
1181
- */
1182
- createPullRequestReview(owner: string, repo: string, pullNumber: number, review: {
1183
- body: string;
1184
- event: ReviewEvent;
1185
- comments?: InlineComment[];
1186
- commitId?: string;
1187
- }): Promise<void>;
1188
- /**
1189
- * Get failed check runs for a PR's head SHA.
1190
- * Fetches the actual job logs (not just annotations) to show real errors.
1191
- */
1192
- getFailedChecks(owner: string, repo: string, ref: string): Promise<string>;
1193
- }