dsh-pstack 0.1.0 → 0.2.0-beta.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 (312) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +92 -117
  3. package/assets/agents/comment-sicko.md +1 -1
  4. package/assets/agents/poteto-agent.md +2 -2
  5. package/assets/docs/guide/01-setup.md +9 -9
  6. package/assets/docs/guide/02-poteto-mode.md +4 -4
  7. package/assets/docs/guide/05-build-and-clean.md +3 -3
  8. package/assets/docs/guide/06-verify-and-ship.md +2 -2
  9. package/assets/docs/guide/07-overnight.md +10 -12
  10. package/assets/docs/guide/09-make-it-yours.md +2 -6
  11. package/assets/docs/guide/10-recipes-and-pitfalls.md +3 -3
  12. package/assets/docs/guide/README.md +1 -1
  13. package/assets/docs/guide/images/design.jpg +0 -0
  14. package/assets/docs/guide/images/overnight.jpg +0 -0
  15. package/assets/docs/guide/images/recipes.jpg +0 -0
  16. package/assets/docs/guide/images/router.jpg +0 -0
  17. package/assets/docs/guide/images/understanding.jpg +0 -0
  18. package/assets/docs/guide/images/verification.jpg +0 -0
  19. package/assets/docs/harness/dsh.md +60 -65
  20. package/assets/docs/pstack-models.example.md +40 -9
  21. package/assets/skills/architect/SKILL.md +12 -12
  22. package/assets/skills/arena/SKILL.md +11 -11
  23. package/assets/skills/automate-me/SKILL.md +15 -14
  24. package/assets/skills/benchmark-checklist/SKILL.md +0 -2
  25. package/assets/skills/blast-radius/SKILL.md +5 -5
  26. package/assets/skills/bro/SKILL.md +0 -2
  27. package/assets/skills/correct/SKILL.md +0 -2
  28. package/assets/skills/create-formal-verification-skill/SKILL.md +2 -2
  29. package/assets/skills/create-verification-skill/SKILL.md +2 -2
  30. package/assets/skills/figure-it-out/SKILL.md +13 -13
  31. package/assets/skills/how/SKILL.md +6 -6
  32. package/assets/skills/how/references/explainer-prompt.md +1 -1
  33. package/assets/skills/in-your-own-words/SKILL.md +0 -2
  34. package/assets/skills/interrogate/SKILL.md +9 -7
  35. package/assets/skills/interrogate/references/rubric.md +1 -1
  36. package/assets/skills/ketchup/SKILL.md +4 -4
  37. package/assets/skills/maintain-formal-verification-skill/SKILL.md +2 -2
  38. package/assets/skills/maintain-verification-skill/SKILL.md +3 -3
  39. package/assets/skills/no-comments/SKILL.md +7 -7
  40. package/assets/skills/poteto-help/SKILL.md +32 -31
  41. package/assets/skills/poteto-help/references/prompting.md +1 -1
  42. package/assets/skills/poteto-help/references/recipes.md +1 -1
  43. package/assets/skills/poteto-mode/SKILL.md +17 -19
  44. package/assets/skills/poteto-mode/playbooks/authoring-a-skill.md +3 -3
  45. package/assets/skills/poteto-mode/playbooks/autonomous-run.md +6 -4
  46. package/assets/skills/poteto-mode/playbooks/autopilot-full.md +6 -6
  47. package/assets/skills/poteto-mode/playbooks/autopilot-stack.md +2 -2
  48. package/assets/skills/poteto-mode/playbooks/babysit.md +3 -3
  49. package/assets/skills/poteto-mode/playbooks/bug-fix.md +7 -7
  50. package/assets/skills/poteto-mode/playbooks/eval.md +3 -3
  51. package/assets/skills/poteto-mode/playbooks/feature.md +8 -8
  52. package/assets/skills/poteto-mode/playbooks/hillclimb.md +3 -3
  53. package/assets/skills/poteto-mode/playbooks/investigation.md +2 -2
  54. package/assets/skills/poteto-mode/playbooks/multi-phase-plan.md +21 -21
  55. package/assets/skills/poteto-mode/playbooks/opening-a-pr.md +6 -6
  56. package/assets/skills/poteto-mode/playbooks/orchestrate.md +13 -13
  57. package/assets/skills/poteto-mode/playbooks/pause-safely.md +2 -2
  58. package/assets/skills/poteto-mode/playbooks/perf-issue.md +6 -6
  59. package/assets/skills/poteto-mode/playbooks/prototype.md +4 -4
  60. package/assets/skills/poteto-mode/playbooks/refactoring.md +9 -9
  61. package/assets/skills/poteto-mode/playbooks/runtime-forensics.md +3 -3
  62. package/assets/skills/poteto-mode/playbooks/session-pickup.md +2 -2
  63. package/assets/skills/poteto-mode/playbooks/shipping.md +2 -2
  64. package/assets/skills/poteto-mode/playbooks/trace-forensics.md +2 -2
  65. package/assets/skills/poteto-mode/playbooks/visual-parity.md +5 -5
  66. package/assets/skills/poteto-mode/playbooks/worktree-cleanup.md +14 -6
  67. package/assets/skills/poteto-mode/scripts/check-plan.mjs +85 -70
  68. package/assets/skills/poteto-mode/scripts/check-plan.test.mjs +343 -0
  69. package/assets/skills/poteto-mode/scripts/orch/orch.mjs +4282 -0
  70. package/assets/skills/poteto-mode/scripts/orch/orch.test.mjs +2042 -0
  71. package/assets/skills/poteto-mode/scripts/watch-pr/cli.test.mjs +5101 -0
  72. package/assets/skills/poteto-mode/scripts/watch-pr/github.test.mjs +1177 -0
  73. package/assets/skills/poteto-mode/scripts/watch-pr/policy.test.mjs +1441 -0
  74. package/assets/skills/poteto-mode/scripts/watch-pr/watch-pr.mjs +4601 -0
  75. package/assets/skills/poteto-mode/scripts/worktree-audit.mjs +675 -0
  76. package/assets/skills/principle-attack-the-premise/SKILL.md +0 -2
  77. package/assets/skills/principle-boundary-discipline/SKILL.md +0 -2
  78. package/assets/skills/principle-build-the-lever/SKILL.md +0 -3
  79. package/assets/skills/principle-encode-lessons-in-structure/SKILL.md +0 -2
  80. package/assets/skills/principle-exhaust-the-design-space/SKILL.md +0 -2
  81. package/assets/skills/principle-experience-first/SKILL.md +0 -2
  82. package/assets/skills/principle-explain-the-number/SKILL.md +0 -2
  83. package/assets/skills/principle-fix-root-causes/SKILL.md +0 -2
  84. package/assets/skills/principle-foundational-thinking/SKILL.md +0 -2
  85. package/assets/skills/principle-guard-the-context-window/SKILL.md +0 -2
  86. package/assets/skills/principle-laziness-protocol/SKILL.md +0 -2
  87. package/assets/skills/principle-make-operations-idempotent/SKILL.md +0 -2
  88. package/assets/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md +0 -2
  89. package/assets/skills/principle-minimize-reader-load/SKILL.md +0 -2
  90. package/assets/skills/principle-model-the-domain/SKILL.md +0 -2
  91. package/assets/skills/principle-never-block-on-the-human/SKILL.md +0 -2
  92. package/assets/skills/principle-outcome-oriented-execution/SKILL.md +0 -2
  93. package/assets/skills/principle-prove-it-works/SKILL.md +2 -2
  94. package/assets/skills/principle-redesign-from-first-principles/SKILL.md +0 -2
  95. package/assets/skills/principle-separate-before-serializing-shared-state/SKILL.md +0 -2
  96. package/assets/skills/principle-sequence-verifiable-units/SKILL.md +0 -2
  97. package/assets/skills/principle-subtract-before-you-add/SKILL.md +0 -2
  98. package/assets/skills/principle-test-behavior-not-implementation/SKILL.md +0 -2
  99. package/assets/skills/principle-type-system-discipline/SKILL.md +0 -2
  100. package/assets/skills/recall/SKILL.md +9 -9
  101. package/assets/skills/reflect/SKILL.md +20 -21
  102. package/assets/skills/reflect/references/divergent-reviewer.md +4 -4
  103. package/assets/skills/reflect/references/judgment-reviewer.md +2 -2
  104. package/assets/skills/reflect/references/synthesizer.md +6 -6
  105. package/assets/skills/reflect/references/tooling-reviewer.md +2 -2
  106. package/assets/skills/setup-pstack/SKILL.md +28 -37
  107. package/assets/skills/sharpen/SKILL.md +0 -2
  108. package/assets/skills/show-me-your-work/SKILL.md +9 -9
  109. package/assets/skills/show-me-your-work/scripts/log.mjs +108 -0
  110. package/assets/skills/swarm/SKILL.md +8 -6
  111. package/assets/skills/tdd/SKILL.md +0 -2
  112. package/assets/skills/teach/SKILL.md +2 -2
  113. package/assets/skills/technical-writing/SKILL.md +2 -2
  114. package/assets/skills/typescript-best-practices/SKILL.md +6 -4
  115. package/assets/skills/unslop/SKILL.md +0 -2
  116. package/assets/skills/why/SKILL.md +9 -9
  117. package/cordis.patch.yml +33 -14
  118. package/dist/frontmatter-BQX3ekwP.mjs +229 -0
  119. package/dist/frontmatter-BQX3ekwP.mjs.map +1 -0
  120. package/dist/history.d.mts +429 -0
  121. package/dist/history.mjs +1129 -0
  122. package/dist/history.mjs.map +1 -0
  123. package/dist/host-contract-o47JH_r8.d.mts +527 -0
  124. package/dist/index.d.mts +273 -11
  125. package/dist/index.mjs +248 -148
  126. package/dist/index.mjs.map +1 -1
  127. package/dist/paths-D_JlVmBk.mjs +42 -0
  128. package/dist/paths-D_JlVmBk.mjs.map +1 -0
  129. package/dist/script.d.mts +193 -0
  130. package/dist/script.mjs +782 -0
  131. package/dist/script.mjs.map +1 -0
  132. package/dist/subagent.d.mts +306 -100
  133. package/dist/subagent.mjs +1309 -343
  134. package/dist/subagent.mjs.map +1 -1
  135. package/locale/en.json +6 -0
  136. package/locale/zh.json +6 -0
  137. package/package.json +55 -41
  138. package/static/icon.png +0 -0
  139. package/assets/skills/poteto-mode/scripts/bootstrap.ts +0 -62
  140. package/assets/skills/poteto-mode/scripts/bun.lock +0 -67
  141. package/assets/skills/poteto-mode/scripts/check-plan.test.ts +0 -96
  142. package/assets/skills/poteto-mode/scripts/orch/orch.test.ts +0 -761
  143. package/assets/skills/poteto-mode/scripts/orch/orch.ts +0 -590
  144. package/assets/skills/poteto-mode/scripts/orch/store.ts +0 -1677
  145. package/assets/skills/poteto-mode/scripts/package.json +0 -16
  146. package/assets/skills/poteto-mode/scripts/watch-pr/cli.test.ts +0 -224
  147. package/assets/skills/poteto-mode/scripts/watch-pr/cli.ts +0 -223
  148. package/assets/skills/poteto-mode/scripts/watch-pr/fakes.test-helper.ts +0 -129
  149. package/assets/skills/poteto-mode/scripts/watch-pr/github.test.ts +0 -436
  150. package/assets/skills/poteto-mode/scripts/watch-pr/github.ts +0 -718
  151. package/assets/skills/poteto-mode/scripts/watch-pr/policy.test.ts +0 -420
  152. package/assets/skills/poteto-mode/scripts/watch-pr/policy.ts +0 -836
  153. package/assets/skills/poteto-mode/scripts/watch-pr/render.ts +0 -169
  154. package/assets/skills/poteto-mode/scripts/watch-pr/tsconfig.json +0 -13
  155. package/assets/skills/poteto-mode/scripts/watch-pr/types.compile.ts +0 -93
  156. package/assets/skills/poteto-mode/scripts/watch-pr/types.ts +0 -413
  157. package/assets/skills/poteto-mode/scripts/watch-pr/watch-pr +0 -6
  158. package/assets/skills/poteto-mode/scripts/worktree-audit.sh +0 -127
  159. package/assets/skills/show-me-your-work/scripts/log.sh +0 -42
  160. package/dist/LICENSE +0 -22
  161. package/dist/README.md +0 -159
  162. package/dist/assets/agents/comment-sicko.md +0 -32
  163. package/dist/assets/agents/poteto-agent.md +0 -8
  164. package/dist/assets/docs/guide/01-setup.md +0 -64
  165. package/dist/assets/docs/guide/02-poteto-mode.md +0 -139
  166. package/dist/assets/docs/guide/03-understand.md +0 -79
  167. package/dist/assets/docs/guide/04-design.md +0 -133
  168. package/dist/assets/docs/guide/05-build-and-clean.md +0 -83
  169. package/dist/assets/docs/guide/06-verify-and-ship.md +0 -152
  170. package/dist/assets/docs/guide/07-overnight.md +0 -122
  171. package/dist/assets/docs/guide/08-principles.md +0 -72
  172. package/dist/assets/docs/guide/09-make-it-yours.md +0 -100
  173. package/dist/assets/docs/guide/10-recipes-and-pitfalls.md +0 -180
  174. package/dist/assets/docs/guide/README.md +0 -38
  175. package/dist/assets/docs/harness/dsh.md +0 -65
  176. package/dist/assets/docs/pstack-models.example.md +0 -23
  177. package/dist/assets/skills/architect/SKILL.md +0 -81
  178. package/dist/assets/skills/architect/references/design-red-flags.md +0 -57
  179. package/dist/assets/skills/architect/references/rationale-template.md +0 -35
  180. package/dist/assets/skills/architect/references/runner-prompt.md +0 -20
  181. package/dist/assets/skills/arena/SKILL.md +0 -50
  182. package/dist/assets/skills/automate-me/SKILL.md +0 -105
  183. package/dist/assets/skills/benchmark-checklist/SKILL.md +0 -41
  184. package/dist/assets/skills/blast-radius/SKILL.md +0 -52
  185. package/dist/assets/skills/bro/SKILL.md +0 -9
  186. package/dist/assets/skills/correct/SKILL.md +0 -34
  187. package/dist/assets/skills/create-formal-verification-skill/SKILL.md +0 -43
  188. package/dist/assets/skills/create-verification-skill/SKILL.md +0 -46
  189. package/dist/assets/skills/create-verification-skill/references/feature-map-example/README.md +0 -47
  190. package/dist/assets/skills/create-verification-skill/references/feature-map-example/create-note.md +0 -39
  191. package/dist/assets/skills/create-verification-skill/references/feature-map-example/search.md +0 -45
  192. package/dist/assets/skills/figure-it-out/SKILL.md +0 -54
  193. package/dist/assets/skills/how/SKILL.md +0 -38
  194. package/dist/assets/skills/how/references/explainer-prompt.md +0 -55
  195. package/dist/assets/skills/how/references/explorer-prompt.md +0 -35
  196. package/dist/assets/skills/in-your-own-words/SKILL.md +0 -9
  197. package/dist/assets/skills/interrogate/SKILL.md +0 -69
  198. package/dist/assets/skills/interrogate/references/code-quality-review.md +0 -47
  199. package/dist/assets/skills/interrogate/references/lead-judgment.md +0 -39
  200. package/dist/assets/skills/interrogate/references/reviewer-prompt.md +0 -62
  201. package/dist/assets/skills/interrogate/references/rubric.md +0 -77
  202. package/dist/assets/skills/ketchup/SKILL.md +0 -45
  203. package/dist/assets/skills/maintain-formal-verification-skill/SKILL.md +0 -60
  204. package/dist/assets/skills/maintain-verification-skill/SKILL.md +0 -41
  205. package/dist/assets/skills/no-comments/SKILL.md +0 -26
  206. package/dist/assets/skills/poteto-help/SKILL.md +0 -161
  207. package/dist/assets/skills/poteto-help/references/prompting.md +0 -51
  208. package/dist/assets/skills/poteto-help/references/recipes.md +0 -51
  209. package/dist/assets/skills/poteto-mode/SKILL.md +0 -153
  210. package/dist/assets/skills/poteto-mode/playbooks/authoring-a-skill.md +0 -12
  211. package/dist/assets/skills/poteto-mode/playbooks/autonomous-run.md +0 -13
  212. package/dist/assets/skills/poteto-mode/playbooks/autopilot-full.md +0 -25
  213. package/dist/assets/skills/poteto-mode/playbooks/autopilot-stack.md +0 -12
  214. package/dist/assets/skills/poteto-mode/playbooks/babysit.md +0 -23
  215. package/dist/assets/skills/poteto-mode/playbooks/bug-fix.md +0 -15
  216. package/dist/assets/skills/poteto-mode/playbooks/eval.md +0 -25
  217. package/dist/assets/skills/poteto-mode/playbooks/feature.md +0 -21
  218. package/dist/assets/skills/poteto-mode/playbooks/hillclimb.md +0 -21
  219. package/dist/assets/skills/poteto-mode/playbooks/investigation.md +0 -14
  220. package/dist/assets/skills/poteto-mode/playbooks/multi-phase-plan.md +0 -155
  221. package/dist/assets/skills/poteto-mode/playbooks/opening-a-pr.md +0 -34
  222. package/dist/assets/skills/poteto-mode/playbooks/orchestrate.md +0 -112
  223. package/dist/assets/skills/poteto-mode/playbooks/pause-safely.md +0 -10
  224. package/dist/assets/skills/poteto-mode/playbooks/perf-issue.md +0 -25
  225. package/dist/assets/skills/poteto-mode/playbooks/prototype.md +0 -14
  226. package/dist/assets/skills/poteto-mode/playbooks/refactoring.md +0 -16
  227. package/dist/assets/skills/poteto-mode/playbooks/runtime-forensics.md +0 -11
  228. package/dist/assets/skills/poteto-mode/playbooks/session-pickup.md +0 -11
  229. package/dist/assets/skills/poteto-mode/playbooks/shipping.md +0 -12
  230. package/dist/assets/skills/poteto-mode/playbooks/trace-forensics.md +0 -14
  231. package/dist/assets/skills/poteto-mode/playbooks/visual-parity.md +0 -11
  232. package/dist/assets/skills/poteto-mode/playbooks/worktree-cleanup.md +0 -12
  233. package/dist/assets/skills/poteto-mode/references/bugbot-triage.md +0 -142
  234. package/dist/assets/skills/poteto-mode/scripts/bootstrap.ts +0 -62
  235. package/dist/assets/skills/poteto-mode/scripts/bun.lock +0 -67
  236. package/dist/assets/skills/poteto-mode/scripts/check-plan.mjs +0 -205
  237. package/dist/assets/skills/poteto-mode/scripts/check-plan.test.ts +0 -96
  238. package/dist/assets/skills/poteto-mode/scripts/orch/orch.test.ts +0 -761
  239. package/dist/assets/skills/poteto-mode/scripts/orch/orch.ts +0 -590
  240. package/dist/assets/skills/poteto-mode/scripts/orch/store.ts +0 -1677
  241. package/dist/assets/skills/poteto-mode/scripts/package.json +0 -16
  242. package/dist/assets/skills/poteto-mode/scripts/watch-pr/cli.test.ts +0 -224
  243. package/dist/assets/skills/poteto-mode/scripts/watch-pr/cli.ts +0 -223
  244. package/dist/assets/skills/poteto-mode/scripts/watch-pr/fakes.test-helper.ts +0 -129
  245. package/dist/assets/skills/poteto-mode/scripts/watch-pr/github.test.ts +0 -436
  246. package/dist/assets/skills/poteto-mode/scripts/watch-pr/github.ts +0 -718
  247. package/dist/assets/skills/poteto-mode/scripts/watch-pr/policy.test.ts +0 -420
  248. package/dist/assets/skills/poteto-mode/scripts/watch-pr/policy.ts +0 -836
  249. package/dist/assets/skills/poteto-mode/scripts/watch-pr/render.ts +0 -169
  250. package/dist/assets/skills/poteto-mode/scripts/watch-pr/tsconfig.json +0 -13
  251. package/dist/assets/skills/poteto-mode/scripts/watch-pr/types.compile.ts +0 -93
  252. package/dist/assets/skills/poteto-mode/scripts/watch-pr/types.ts +0 -413
  253. package/dist/assets/skills/poteto-mode/scripts/watch-pr/watch-pr +0 -6
  254. package/dist/assets/skills/poteto-mode/scripts/worktree-audit.sh +0 -127
  255. package/dist/assets/skills/principle-attack-the-premise/SKILL.md +0 -23
  256. package/dist/assets/skills/principle-boundary-discipline/SKILL.md +0 -36
  257. package/dist/assets/skills/principle-build-the-lever/SKILL.md +0 -26
  258. package/dist/assets/skills/principle-encode-lessons-in-structure/SKILL.md +0 -13
  259. package/dist/assets/skills/principle-exhaust-the-design-space/SKILL.md +0 -11
  260. package/dist/assets/skills/principle-experience-first/SKILL.md +0 -21
  261. package/dist/assets/skills/principle-explain-the-number/SKILL.md +0 -19
  262. package/dist/assets/skills/principle-fix-root-causes/SKILL.md +0 -23
  263. package/dist/assets/skills/principle-foundational-thinking/SKILL.md +0 -23
  264. package/dist/assets/skills/principle-guard-the-context-window/SKILL.md +0 -14
  265. package/dist/assets/skills/principle-laziness-protocol/SKILL.md +0 -12
  266. package/dist/assets/skills/principle-make-operations-idempotent/SKILL.md +0 -24
  267. package/dist/assets/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md +0 -16
  268. package/dist/assets/skills/principle-minimize-reader-load/SKILL.md +0 -20
  269. package/dist/assets/skills/principle-model-the-domain/SKILL.md +0 -26
  270. package/dist/assets/skills/principle-never-block-on-the-human/SKILL.md +0 -17
  271. package/dist/assets/skills/principle-outcome-oriented-execution/SKILL.md +0 -23
  272. package/dist/assets/skills/principle-prove-it-works/SKILL.md +0 -24
  273. package/dist/assets/skills/principle-redesign-from-first-principles/SKILL.md +0 -18
  274. package/dist/assets/skills/principle-separate-before-serializing-shared-state/SKILL.md +0 -18
  275. package/dist/assets/skills/principle-sequence-verifiable-units/SKILL.md +0 -19
  276. package/dist/assets/skills/principle-subtract-before-you-add/SKILL.md +0 -20
  277. package/dist/assets/skills/principle-test-behavior-not-implementation/SKILL.md +0 -22
  278. package/dist/assets/skills/principle-type-system-discipline/SKILL.md +0 -15
  279. package/dist/assets/skills/recall/SKILL.md +0 -37
  280. package/dist/assets/skills/reflect/SKILL.md +0 -70
  281. package/dist/assets/skills/reflect/references/divergent-reviewer.md +0 -38
  282. package/dist/assets/skills/reflect/references/judgment-reviewer.md +0 -37
  283. package/dist/assets/skills/reflect/references/synthesizer.md +0 -56
  284. package/dist/assets/skills/reflect/references/tooling-reviewer.md +0 -48
  285. package/dist/assets/skills/setup-pstack/SKILL.md +0 -76
  286. package/dist/assets/skills/sharpen/SKILL.md +0 -18
  287. package/dist/assets/skills/show-me-your-work/SKILL.md +0 -84
  288. package/dist/assets/skills/show-me-your-work/references/decision-log-template.tsv +0 -1
  289. package/dist/assets/skills/show-me-your-work/scripts/log.sh +0 -42
  290. package/dist/assets/skills/swarm/SKILL.md +0 -41
  291. package/dist/assets/skills/tdd/SKILL.md +0 -44
  292. package/dist/assets/skills/teach/SKILL.md +0 -23
  293. package/dist/assets/skills/technical-writing/SKILL.md +0 -108
  294. package/dist/assets/skills/typescript-best-practices/SKILL.md +0 -32
  295. package/dist/assets/skills/typescript-best-practices/references/patterns.md +0 -328
  296. package/dist/assets/skills/unslop/SKILL.md +0 -64
  297. package/dist/assets/skills/why/SKILL.md +0 -100
  298. package/dist/assets/skills/why/references/epistemics.md +0 -71
  299. package/dist/assets/skills/why/references/investigator-prompt.md +0 -84
  300. package/dist/assets/skills/why/references/source-playbook.md +0 -17
  301. package/dist/assets/skills/why/references/sources/code-archaeology.md +0 -51
  302. package/dist/assets/skills/why/references/sources/databricks.md +0 -70
  303. package/dist/assets/skills/why/references/sources/datadog.md +0 -97
  304. package/dist/assets/skills/why/references/sources/incident-postmortem.md +0 -5
  305. package/dist/assets/skills/why/references/sources/linear.md +0 -48
  306. package/dist/assets/skills/why/references/sources/notion.md +0 -55
  307. package/dist/assets/skills/why/references/sources/sentry.md +0 -66
  308. package/dist/assets/skills/why/references/sources/slack.md +0 -17
  309. package/dist/assets/skills/why/references/synthesizer-prompt.md +0 -129
  310. package/dist/cordis.patch.yml +0 -20
  311. package/dist/paths-Bbai4CaT.mjs +0 -16
  312. package/dist/paths-Bbai4CaT.mjs.map +0 -1
@@ -1,169 +0,0 @@
1
- import type * as T from "./types.ts";
2
- export const renderJson = (verdict: T.WatcherVerdict): string =>
3
- `${JSON.stringify(verdict)}\n`;
4
- function ciCell(row: T.PrSnapshot): string {
5
- if (row.kind !== "open") return "\u2014";
6
- const was = row.ci.hadPreviousPassingCi ? ", was ✅" : "";
7
- switch (row.ci.kind) {
8
- case "ci-clean":
9
- return "✅";
10
- case "ci-pending":
11
- return `⏳ ${row.ci.pending.length} pending${was}`;
12
- case "ci-failing":
13
- return `❌ ${row.ci.failed.length} failed${row.ci.pending.length ? `, ${row.ci.pending.length} pending` : ""}${was}`;
14
- case "ci-github-rejected":
15
- return `❌ GitHub reports failing checks${was}`;
16
- default: {
17
- const exhaustive: never = row.ci;
18
- return exhaustive;
19
- }
20
- }
21
- }
22
- function reviewCell(row: T.PrSnapshot): string {
23
- if (row.kind !== "open") return "\u2014";
24
- const open = row.threads.length;
25
- return row.reviewAutomationRunning
26
- ? open
27
- ? `🤖 running, ${open} open`
28
- : "🤖 running"
29
- : open
30
- ? `📝 ${open} open`
31
- : "✅";
32
- }
33
- function mergeCell(row: T.PrSnapshot): string {
34
- if (row.kind === "merged") return "✅ merged";
35
- if (row.kind === "closed") return "❌ closed";
36
- if (row.facts.isDraft) return "⏸ draft";
37
- if (row.facts.reviewDecision === "CHANGES_REQUESTED")
38
- return "⚠️ changes requested";
39
- return row.facts.mergeable === "CONFLICTING" ||
40
- row.facts.mergeStateStatus === "DIRTY" ||
41
- row.facts.mergeStateStatus === "CONFLICTING"
42
- ? "⚠️ conflict"
43
- : "✅";
44
- }
45
- export function renderStatusTable(rows: T.NonEmpty<T.PrSnapshot>): string {
46
- const lines = ["| PR | CI | Review | Merge |", "| --- | --- | --- | --- |"];
47
- for (const row of rows) {
48
- const url = `https://github.com/${row.context.owner}/${row.context.repo}/pull/${row.context.number}`;
49
- lines.push(
50
- `| [#${row.context.number}](${url}) | ${ciCell(row)} | ${reviewCell(row)} | ${mergeCell(row)} |`
51
- );
52
- }
53
- return `${lines.join("\n")}\n`;
54
- }
55
- function threadLine(thread: T.ReviewThread): string {
56
- const comment = thread.firstComment;
57
- return [
58
- thread.id,
59
- comment?.path ?? "None",
60
- comment?.line ?? "None",
61
- comment?.authorLogin ?? "None",
62
- `isBugBot=${thread.isBugbot}`,
63
- `bugbotReviewPasses=${thread.bugbotReviewPasses}`,
64
- (comment?.body ?? "").split(/\r?\n/, 1)[0]?.slice(0, 180) ?? "",
65
- ].join(" ");
66
- }
67
- type StatusQueryBlocker = {
68
- readonly kind: "status-query";
69
- readonly failures: number;
70
- readonly failure: { readonly detail: string };
71
- };
72
- function renderBlocker(blocker: T.MergeBlocker | StatusQueryBlocker): string {
73
- switch (blocker.kind) {
74
- case "merge-conflicts":
75
- return [
76
- "BLOCKER: merge-conflicts",
77
- `pr=${blocker.pr.number}`,
78
- `mergeable=${blocker.facts.mergeable}`,
79
- `mergeStateStatus=${blocker.facts.mergeStateStatus}`,
80
- "action=resolve merge conflicts before waiting for CI",
81
- ].join("\n");
82
- case "review-threads":
83
- return [
84
- "BLOCKER: review-threads",
85
- `pr=${blocker.pr.number}`,
86
- `unresolved=${blocker.threads.length}`,
87
- ...blocker.threads.map(threadLine),
88
- ].join("\n");
89
- case "failing-checks": {
90
- const failed = blocker.ci.kind === "ci-failing" ? blocker.ci.failed : [];
91
- const details = failed.map(
92
- (check) =>
93
- `${check.name} ${check.reportedState} ${check.description} ${check.link}`
94
- );
95
- if (blocker.ci.kind === "ci-github-rejected")
96
- details.push(
97
- `mergeStateStatus=${blocker.ci.github.mergeStateStatus}`,
98
- `headRollupState=${blocker.ci.github.headRollupState}`
99
- );
100
- return [
101
- "BLOCKER: failing-checks",
102
- `pr=${blocker.pr.number}`,
103
- `failed=${failed.length}`,
104
- ...details,
105
- ].join("\n");
106
- }
107
- case "merge-gate": {
108
- const action =
109
- blocker.reason === "closed-without-merge"
110
- ? "restore or remove the closed PR from the queued stack"
111
- : blocker.reason === "draft-pr"
112
- ? "mark the PR ready for review before waiting for the merge queue"
113
- : "resolve the changes-requested review before waiting for the merge queue";
114
- return [
115
- `BLOCKER: ${blocker.reason}`,
116
- `pr=${blocker.pr.number}`,
117
- `action=${action}`,
118
- ].join("\n");
119
- }
120
- case "status-query":
121
- return [
122
- "BLOCKER: status-query",
123
- `failures=${blocker.failures}`,
124
- `detail=${blocker.failure.detail}`,
125
- "action=verify current PR context, GitHub authentication, and API availability, then rearm",
126
- ].join("\n");
127
- default: {
128
- const exhaustive: never = blocker;
129
- return exhaustive;
130
- }
131
- }
132
- }
133
- export function renderPretty(verdict: T.WatcherVerdict): string {
134
- switch (verdict.kind) {
135
- case "QUEUE":
136
- return `QUEUE: captured ${verdict.queue.length} PR${verdict.queue.length === 1 ? "" : "s"} bottom-to-top: ${verdict.queue.map((pr) => `#${pr.number}`).join(",")}\n`;
137
- case "STATUS":
138
- return renderStatusTable(verdict.rows);
139
- case "WAITING":
140
- return verdict.reason.kind === "pending-checks"
141
- ? `WAITING: frontier=#${verdict.frontier.number}; ${verdict.reason.pending.length} check${verdict.reason.pending.length === 1 ? "" : "s"} pending\n`
142
- : `WAITING: frontier=#${verdict.frontier.number} is blocker-free; waiting for merge queue (${verdict.reason.unmergedCount} PR${verdict.reason.unmergedCount === 1 ? "" : "s"} unmerged)\n`;
143
- case "ADVANCE":
144
- return `ADVANCE: merged #${verdict.merged.number}; next=#${verdict.frontier.number}; remaining=${verdict.remaining}\n`;
145
- case "RETRY":
146
- return `RETRY: GitHub status query failed; retrying in ${verdict.retryInSeconds}s\ndetail=${verdict.failure.detail}\n`;
147
- case "BLOCKER":
148
- return `${renderBlocker(verdict.blocker)}\n`;
149
- case "READY": {
150
- const detail =
151
- verdict.scope.kind === "single" && verdict.scope.pr.kind === "ready-pr"
152
- ? `\nmergeStateStatus=${verdict.scope.pr.proof.ci.github.mergeStateStatus}\nreviewDecision=${verdict.scope.pr.proof.gate.reviewDecision}\nisDraft=${verdict.scope.pr.proof.gate.draft === "draft-allowed"}${verdict.scope.pr.proof.gate.draft === "draft-allowed" ? "\nnote=draft allowed (--allow-draft); leave draft \u2014 do not mark ready" : ""}`
153
- : "";
154
- return `READY: no merge conflicts, no unresolved review threads, no failing or pending checks${detail}\n`;
155
- }
156
- case "COMPLETE":
157
- return `COMPLETE: queued stack merged (${verdict.queue.length} PR${verdict.queue.length === 1 ? "" : "s"})\n`;
158
- case "TIMEOUT":
159
- if (verdict.reason.kind === "pending-checks")
160
- return "TIMEOUT: checks still pending\n";
161
- if (verdict.reason.kind === "status-unavailable")
162
- return "TIMEOUT: GitHub status remained unavailable\n";
163
- return `TIMEOUT: queued stack still has ${verdict.reason.unmergedCount} PR${verdict.reason.unmergedCount === 1 ? "" : "s"} unmerged; frontier=#${verdict.reason.frontier.number}\n`;
164
- default: {
165
- const exhaustive: never = verdict;
166
- return exhaustive;
167
- }
168
- }
169
- }
@@ -1,13 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "allowImportingTsExtensions": true,
4
- "module": "esnext",
5
- "moduleResolution": "bundler",
6
- "noEmit": true,
7
- "skipLibCheck": true,
8
- "strict": true,
9
- "target": "esnext",
10
- "types": ["bun-types"]
11
- },
12
- "include": ["*.ts"]
13
- }
@@ -1,93 +0,0 @@
1
- import { parsePrNumber } from "./types.ts";
2
- import type {
3
- CiClean,
4
- GitHubMergeAllowed,
5
- PrContext,
6
- ReadyPr,
7
- TerminalVerdict,
8
- } from "./types.ts";
9
-
10
- type ReadyVerdict = Extract<TerminalVerdict, { readonly kind: "READY" }>;
11
-
12
- const context = {
13
- owner: "octocat",
14
- repo: "hello-world",
15
- number: parsePrNumber(123),
16
- } satisfies PrContext;
17
- const cleanCi = {
18
- kind: "ci-clean",
19
- source: "gh-pr-checks",
20
- all: [
21
- {
22
- kind: "passed",
23
- name: "ci",
24
- reportedState: "SUCCESS",
25
- description: "",
26
- link: "",
27
- workflow: "",
28
- },
29
- ],
30
- failed: [],
31
- pending: [],
32
- hadPreviousPassingCi: false,
33
- github: {
34
- kind: "allowed",
35
- basis: "merge-state",
36
- mergeStateStatus: "CLEAN",
37
- headRollupState: "SUCCESS",
38
- },
39
- } satisfies CiClean;
40
- const readyPr = {
41
- kind: "ready-pr",
42
- context,
43
- proof: {
44
- mergeability: "clear",
45
- threads: [],
46
- ci: cleanCi,
47
- gate: {
48
- state: "OPEN",
49
- reviewDecision: "APPROVED",
50
- draft: "not-draft",
51
- },
52
- },
53
- } satisfies ReadyPr;
54
- const ready = {
55
- schemaVersion: 1,
56
- sequence: 1,
57
- observedAt: "2026-07-26T00:00:00.000Z",
58
- mode: "single",
59
- kind: "READY",
60
- terminal: true,
61
- exitCode: 0,
62
- scope: { kind: "single", pr: readyPr },
63
- } satisfies ReadyVerdict;
64
-
65
- void ready;
66
-
67
- // PR 179929's shape. Each assertion below stays a single short statement so a
68
- // reformat cannot drift the directive away from the line that actually errors.
69
- const refused = {
70
- kind: "allowed",
71
- basis: "rollup",
72
- mergeStateStatus: "BLOCKED",
73
- headRollupState: "FAILURE",
74
- } as const;
75
-
76
- // @ts-expect-error BLOCKED with a failing rollup is a refusal, not an allowance.
77
- const refusalIsNotAllowed: GitHubMergeAllowed = refused;
78
-
79
- // @ts-expect-error CI cannot be clean while GitHub refuses the merge.
80
- const refusalIsNotClean: CiClean = { ...cleanCi, github: refused };
81
-
82
- // @ts-expect-error READY cannot carry the failing-checks exit code.
83
- const readyWithBlockerExit: ReadyVerdict = { ...ready, exitCode: 4 };
84
-
85
- const unprovenPr = { kind: "ready-pr", context } as const;
86
-
87
- // @ts-expect-error An open READY row must carry positive readiness proof.
88
- const readyWithoutProof: ReadyPr = unprovenPr;
89
-
90
- void refusalIsNotAllowed;
91
- void refusalIsNotClean;
92
- void readyWithBlockerExit;
93
- void readyWithoutProof;
@@ -1,413 +0,0 @@
1
- declare const prNumberBrand: unique symbol;
2
- export type PrNumber = number & { readonly [prNumberBrand]: "PrNumber" };
3
- export type NonEmpty<T> = readonly [T, ...T[]];
4
- export function nonEmpty<T>(items: readonly T[]): NonEmpty<T> | null {
5
- return items.length === 0 ? null : [items[0], ...items.slice(1)];
6
- }
7
- export function parsePrNumber(value: unknown, label = "PR number"): PrNumber {
8
- if (typeof value !== "number" || !Number.isInteger(value) || value <= 0)
9
- throw new Error(`${label} must be a positive integer`);
10
- return value as PrNumber;
11
- }
12
- export interface Repository {
13
- readonly owner: string;
14
- readonly repo: string;
15
- }
16
- export interface PrContext extends Repository {
17
- readonly number: PrNumber;
18
- }
19
- export type MergeStateStatus =
20
- | "BEHIND"
21
- | "BLOCKED"
22
- | "CLEAN"
23
- | "CONFLICTING"
24
- | "DIRTY"
25
- | "DRAFT"
26
- | "HAS_HOOKS"
27
- | "UNKNOWN"
28
- | "UNSTABLE";
29
- export type RollupState =
30
- | "ERROR"
31
- | "EXPECTED"
32
- | "FAILURE"
33
- | "PENDING"
34
- | "SUCCESS"
35
- | null;
36
- export type ReviewDecision =
37
- | "APPROVED"
38
- | "CHANGES_REQUESTED"
39
- | "REVIEW_REQUIRED"
40
- | null;
41
- export interface PullRequestFacts {
42
- readonly context: PrContext;
43
- readonly mergeable: "MERGEABLE" | "CONFLICTING" | "UNKNOWN";
44
- readonly mergeStateStatus: MergeStateStatus;
45
- readonly reviewDecision: ReviewDecision;
46
- readonly headRefOid: string | null;
47
- readonly headRefName: string;
48
- readonly baseRefName: string;
49
- readonly state: "OPEN" | "CLOSED" | "MERGED";
50
- readonly mergedAt: string | null;
51
- readonly isDraft: boolean;
52
- }
53
- export interface OpenPullRequest {
54
- readonly number: PrNumber;
55
- readonly headRefName: string;
56
- readonly baseRefName: string;
57
- }
58
- export interface ReviewComment {
59
- readonly authorLogin: string | null;
60
- readonly body: string;
61
- readonly path: string | null;
62
- readonly line: number | null;
63
- readonly createdAt: string;
64
- }
65
- export interface ReviewThread {
66
- readonly id: string;
67
- readonly firstComment: ReviewComment | null;
68
- readonly isBugbot: boolean;
69
- readonly bugbotReviewPasses: number;
70
- }
71
- interface CheckDetails {
72
- readonly name: string;
73
- readonly reportedState: string;
74
- readonly description: string;
75
- readonly link: string;
76
- readonly workflow: string;
77
- }
78
- export type Check =
79
- | (CheckDetails & { readonly kind: "passed" })
80
- | (CheckDetails & { readonly kind: "skipped" })
81
- | (CheckDetails & { readonly kind: "failed" })
82
- | (CheckDetails & { readonly kind: "pending" })
83
- | (CheckDetails & {
84
- readonly kind: "code-review-gate";
85
- readonly name: "Code Review Gate";
86
- });
87
- export type FailedCheck = Extract<Check, { readonly kind: "failed" }>;
88
- export type PendingCheck = Extract<Check, { readonly kind: "pending" }>;
89
- export interface CheckRead {
90
- readonly source: "gh-pr-checks" | "graphql-rollup";
91
- readonly checks: NonEmpty<Check>;
92
- }
93
- export interface CommitRollup {
94
- readonly oid: string;
95
- readonly state: RollupState;
96
- }
97
- export interface GitHubMergeRefusal {
98
- readonly kind: "refused";
99
- readonly mergeStateStatus: "BLOCKED";
100
- readonly headRollupState: "ERROR" | "FAILURE";
101
- }
102
- export type GitHubMergeAllowed =
103
- | {
104
- readonly kind: "allowed";
105
- readonly basis: "merge-state";
106
- readonly mergeStateStatus: Exclude<MergeStateStatus, "BLOCKED">;
107
- readonly headRollupState: RollupState;
108
- }
109
- | {
110
- readonly kind: "allowed";
111
- readonly basis: "rollup";
112
- readonly mergeStateStatus: "BLOCKED";
113
- readonly headRollupState: Exclude<RollupState, "ERROR" | "FAILURE">;
114
- };
115
- export type GitHubMergeAssessment = GitHubMergeAllowed | GitHubMergeRefusal;
116
- interface CiBase {
117
- readonly source: CheckRead["source"];
118
- readonly all: NonEmpty<Check>;
119
- readonly hadPreviousPassingCi: boolean;
120
- }
121
- export type CiFailing = CiBase & {
122
- readonly kind: "ci-failing";
123
- readonly failed: NonEmpty<FailedCheck>;
124
- readonly pending: readonly PendingCheck[];
125
- readonly github: GitHubMergeAssessment;
126
- };
127
- export type CiGithubRejected = CiBase & {
128
- readonly kind: "ci-github-rejected";
129
- readonly failed: readonly [];
130
- readonly pending: readonly PendingCheck[];
131
- readonly github: GitHubMergeRefusal;
132
- };
133
- export type CiPending = CiBase & {
134
- readonly kind: "ci-pending";
135
- readonly failed: readonly [];
136
- readonly pending: NonEmpty<PendingCheck>;
137
- };
138
- export type CiClean = CiBase & {
139
- readonly kind: "ci-clean";
140
- readonly failed: readonly [];
141
- readonly pending: readonly [];
142
- readonly github: GitHubMergeAllowed;
143
- };
144
- export type CiState = CiFailing | CiGithubRejected | CiPending | CiClean;
145
- export type PrSnapshot =
146
- | {
147
- readonly kind: "merged" | "closed";
148
- readonly context: PrContext;
149
- readonly facts: PullRequestFacts;
150
- }
151
- | {
152
- readonly kind: "open";
153
- readonly context: PrContext;
154
- readonly facts: PullRequestFacts;
155
- readonly threads: readonly ReviewThread[];
156
- readonly ci: CiState;
157
- readonly reviewAutomationRunning: boolean;
158
- };
159
- export interface ReadyPr {
160
- readonly kind: "ready-pr";
161
- readonly context: PrContext;
162
- readonly proof: {
163
- readonly mergeability: "clear";
164
- readonly threads: readonly [];
165
- readonly ci: CiClean;
166
- readonly gate: {
167
- readonly state: "OPEN";
168
- readonly reviewDecision: Exclude<ReviewDecision, "CHANGES_REQUESTED">;
169
- readonly draft: "not-draft" | "draft-allowed";
170
- };
171
- };
172
- }
173
- export interface MergedPr {
174
- readonly kind: "merged-pr";
175
- readonly context: PrContext;
176
- readonly mergedAt: string | null;
177
- }
178
- export type MergeGateReason =
179
- | "closed-without-merge"
180
- | "draft-pr"
181
- | "changes-requested";
182
- export type MergeBlocker =
183
- | {
184
- readonly kind: "merge-conflicts";
185
- readonly pr: PrContext;
186
- readonly facts: PullRequestFacts;
187
- }
188
- | {
189
- readonly kind: "review-threads";
190
- readonly pr: PrContext;
191
- readonly threads: NonEmpty<ReviewThread>;
192
- }
193
- | {
194
- readonly kind: "failing-checks";
195
- readonly pr: PrContext;
196
- readonly ci: CiFailing | CiGithubRejected;
197
- }
198
- | {
199
- readonly kind: "merge-gate";
200
- readonly pr: PrContext;
201
- readonly reason: MergeGateReason;
202
- };
203
- export type QueryFailure =
204
- | {
205
- readonly kind: "json-parse";
206
- readonly retryable: true;
207
- readonly detail: string;
208
- }
209
- | {
210
- readonly kind: "missing-key";
211
- readonly retryable: true;
212
- readonly detail: string;
213
- readonly rawValue?: string;
214
- }
215
- | {
216
- readonly kind: "command-exit";
217
- readonly retryable: true;
218
- readonly detail: string;
219
- readonly code: number;
220
- }
221
- | {
222
- readonly kind: "checks-unavailable";
223
- readonly retryable: true;
224
- readonly detail: string;
225
- }
226
- | {
227
- readonly kind: "invalid-context-url";
228
- readonly retryable: false;
229
- readonly detail: string;
230
- readonly rawValue: string;
231
- };
232
- /**
233
- * `frontier` names the lowest unmerged PR that is actually waiting, and
234
- * `pending` is that PR's checks only. Pooling every row's pending under the
235
- * bottom PR's number misattributed upstack waits to the frontier.
236
- *
237
- * This decision serves single and `--stack` mode. Queued mode deliberately
238
- * reports its own merge frontier instead: when that PR is blocker-free it
239
- * emits a merge-queue wait that ignores upstack pending, because upstack
240
- * checks do not block the frontier's merge. That is the Python watcher's
241
- * contract, not an attribution bug.
242
- */
243
- export interface WaitingDecision {
244
- readonly kind: "waiting";
245
- readonly frontier: PrContext;
246
- readonly pending: NonEmpty<PendingCheck>;
247
- }
248
- export type PrDecision =
249
- | { readonly kind: "blocker"; readonly blocker: MergeBlocker }
250
- | WaitingDecision
251
- | { readonly kind: "ready"; readonly pr: ReadyPr }
252
- | { readonly kind: "merged"; readonly pr: MergedPr };
253
- export type StackDecision =
254
- | { readonly kind: "blocker"; readonly blocker: MergeBlocker }
255
- | WaitingDecision
256
- | { readonly kind: "clear"; readonly prs: NonEmpty<ReadyPr | MergedPr> };
257
- export type WatchMode = "single" | "stack" | "queued-stack";
258
- interface EventBase<K extends string, M extends WatchMode = WatchMode> {
259
- readonly schemaVersion: 1;
260
- readonly sequence: number;
261
- readonly observedAt: string;
262
- readonly mode: M;
263
- readonly kind: K;
264
- }
265
- interface Progress<K extends string, M extends WatchMode = WatchMode>
266
- extends EventBase<K, M> {
267
- readonly terminal: false;
268
- }
269
- interface Terminal<
270
- K extends string,
271
- C extends number,
272
- M extends WatchMode = WatchMode,
273
- > extends EventBase<K, M> {
274
- readonly terminal: true;
275
- readonly exitCode: C;
276
- }
277
- export type ProgressVerdict =
278
- | (Progress<"QUEUE", "queued-stack"> & {
279
- readonly queue: NonEmpty<PrContext>;
280
- })
281
- | (Progress<"STATUS", "stack" | "queued-stack"> & {
282
- readonly reason: "poll" | "whole-stack-sweep";
283
- readonly rows: NonEmpty<PrSnapshot>;
284
- })
285
- | (Progress<"WAITING"> & {
286
- readonly frontier: PrContext;
287
- readonly reason:
288
- | {
289
- readonly kind: "pending-checks";
290
- readonly pending: NonEmpty<PendingCheck>;
291
- }
292
- | { readonly kind: "merge-queue"; readonly unmergedCount: number };
293
- })
294
- | (Progress<"ADVANCE", "queued-stack"> & {
295
- readonly merged: PrContext;
296
- readonly frontier: PrContext;
297
- readonly remaining: number;
298
- })
299
- | (Progress<"RETRY"> & {
300
- readonly failure: QueryFailure;
301
- readonly consecutiveFailures: number;
302
- readonly retryInSeconds: number;
303
- });
304
- export type BlockerVerdict =
305
- | (Terminal<"BLOCKER", 2> & {
306
- readonly blocker: Extract<
307
- MergeBlocker,
308
- { readonly kind: "merge-conflicts" }
309
- >;
310
- })
311
- | (Terminal<"BLOCKER", 3> & {
312
- readonly blocker: Extract<
313
- MergeBlocker,
314
- { readonly kind: "review-threads" }
315
- >;
316
- })
317
- | (Terminal<"BLOCKER", 4> & {
318
- readonly blocker: Extract<
319
- MergeBlocker,
320
- { readonly kind: "failing-checks" }
321
- >;
322
- })
323
- | (Terminal<"BLOCKER", 6> & {
324
- readonly blocker: Extract<MergeBlocker, { readonly kind: "merge-gate" }>;
325
- })
326
- | (Terminal<"BLOCKER", 7> & {
327
- readonly blocker: {
328
- readonly kind: "status-query";
329
- readonly failures: number;
330
- readonly failure: QueryFailure;
331
- };
332
- });
333
- export type TimeoutVerdict = Terminal<"TIMEOUT", 5> & {
334
- readonly reason:
335
- | {
336
- readonly kind: "pending-checks";
337
- readonly pending: NonEmpty<PendingCheck>;
338
- }
339
- | { readonly kind: "status-unavailable"; readonly failure: QueryFailure }
340
- | {
341
- readonly kind: "queued-stack";
342
- readonly frontier: PrContext;
343
- readonly unmergedCount: number;
344
- };
345
- };
346
- export type TerminalVerdict =
347
- | (Terminal<"STATUS", 0> & {
348
- readonly reason: "status-only";
349
- readonly rows: NonEmpty<PrSnapshot>;
350
- })
351
- | (Terminal<"READY", 0, "single" | "stack"> & {
352
- readonly scope:
353
- | { readonly kind: "single"; readonly pr: ReadyPr | MergedPr }
354
- | {
355
- readonly kind: "stack";
356
- readonly prs: NonEmpty<ReadyPr | MergedPr>;
357
- };
358
- })
359
- | (Terminal<"COMPLETE", 0, "queued-stack"> & {
360
- readonly queue: NonEmpty<PrContext>;
361
- readonly merged: NonEmpty<MergedPr>;
362
- })
363
- | BlockerVerdict
364
- | TimeoutVerdict;
365
- export type WatcherVerdict = ProgressVerdict | TerminalVerdict;
366
- export type ExitCode = TerminalVerdict["exitCode"];
367
- export type QueueTerminalVerdict =
368
- | Extract<TerminalVerdict, { readonly kind: "COMPLETE" }>
369
- | BlockerVerdict
370
- | TimeoutVerdict;
371
- export type ChecksFastPath =
372
- | { readonly kind: "checks"; readonly checks: readonly Check[] }
373
- | {
374
- readonly kind: "unusable";
375
- readonly exitCode: number;
376
- readonly stderr: string;
377
- };
378
- export interface RollupPage {
379
- readonly checks: readonly Check[];
380
- readonly endCursor: string | null;
381
- }
382
- export interface RawReviewThread {
383
- readonly id: string;
384
- readonly firstComment: ReviewComment | null;
385
- readonly resolved: boolean;
386
- }
387
- export interface ReviewThreadPage {
388
- readonly threads: readonly RawReviewThread[];
389
- readonly endCursor: string | null;
390
- }
391
- export interface GitHubReader {
392
- originRepo(): Promise<Repository | null>;
393
- currentPr(pr: PrNumber | null): Promise<PrContext>;
394
- pullRequest(context: PrContext): Promise<PullRequestFacts>;
395
- openPullRequests(repository: Repository): Promise<readonly OpenPullRequest[]>;
396
- checksFastPath(context: PrContext): Promise<ChecksFastPath>;
397
- checkRollupPage(
398
- context: PrContext,
399
- after: string | null
400
- ): Promise<RollupPage>;
401
- reviewThreadPage(
402
- context: PrContext,
403
- after: string | null
404
- ): Promise<ReviewThreadPage>;
405
- commitRollups(context: PrContext): Promise<readonly CommitRollup[]>;
406
- }
407
- export interface PollingOptions {
408
- readonly interval: number;
409
- readonly sweepInterval: number;
410
- readonly timeout: number;
411
- readonly maxQueryErrors: number;
412
- readonly allowDraft: boolean;
413
- }
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env bun
2
- import { ensureDependenciesInstalled } from "../bootstrap.ts";
3
-
4
- ensureDependenciesInstalled();
5
- const { main } = await import("./cli.ts");
6
- process.exitCode = await main(process.argv.slice(2));