@jitsusama/agentic-harness.core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (974) hide show
  1. package/README.md +52 -0
  2. package/dist/advisor/charter.d.ts +14 -0
  3. package/dist/advisor/charter.js +48 -0
  4. package/dist/advisor/findings.d.ts +43 -0
  5. package/dist/advisor/findings.js +82 -0
  6. package/dist/advisor/index.d.ts +24 -0
  7. package/dist/advisor/index.js +23 -0
  8. package/dist/advisor/settings.d.ts +16 -0
  9. package/dist/advisor/settings.js +30 -0
  10. package/dist/advisor/substantive.d.ts +14 -0
  11. package/dist/advisor/substantive.js +33 -0
  12. package/dist/advisor/tools.d.ts +38 -0
  13. package/dist/advisor/tools.js +202 -0
  14. package/dist/attribution/commit-hook.d.ts +53 -0
  15. package/dist/attribution/commit-hook.js +133 -0
  16. package/dist/attribution/gh-footer.d.ts +27 -0
  17. package/dist/attribution/gh-footer.js +80 -0
  18. package/dist/attribution/index.d.ts +11 -0
  19. package/dist/attribution/index.js +11 -0
  20. package/dist/attribution/model-name.d.ts +11 -0
  21. package/dist/attribution/model-name.js +26 -0
  22. package/dist/bin/attribution.d.ts +36 -0
  23. package/dist/bin/attribution.js +82 -0
  24. package/dist/bin/cli.d.ts +14 -0
  25. package/dist/bin/cli.js +236 -0
  26. package/dist/bin/gate-deps.d.ts +23 -0
  27. package/dist/bin/gate-deps.js +61 -0
  28. package/dist/bin/guardians.d.ts +51 -0
  29. package/dist/bin/guardians.js +174 -0
  30. package/dist/bin/memory.d.ts +16 -0
  31. package/dist/bin/memory.js +81 -0
  32. package/dist/bin/notes.d.ts +30 -0
  33. package/dist/bin/notes.js +67 -0
  34. package/dist/bin/process-exec.d.ts +14 -0
  35. package/dist/bin/process-exec.js +31 -0
  36. package/dist/bin/quest.d.ts +38 -0
  37. package/dist/bin/quest.js +187 -0
  38. package/dist/bin/slack-auth.d.ts +49 -0
  39. package/dist/bin/slack-auth.js +107 -0
  40. package/dist/clock/index.d.ts +46 -0
  41. package/dist/clock/index.js +72 -0
  42. package/dist/command/cwd.d.ts +21 -0
  43. package/dist/command/cwd.js +60 -0
  44. package/dist/command/edit.d.ts +14 -0
  45. package/dist/command/edit.js +22 -0
  46. package/dist/command/flags.d.ts +29 -0
  47. package/dist/command/flags.js +111 -0
  48. package/dist/command/index.d.ts +16 -0
  49. package/dist/command/index.js +12 -0
  50. package/dist/command/tokenize.d.ts +7 -0
  51. package/dist/command/tokenize.js +315 -0
  52. package/dist/command/types.d.ts +66 -0
  53. package/dist/command/types.js +9 -0
  54. package/dist/completion/index.d.ts +17 -0
  55. package/dist/completion/index.js +16 -0
  56. package/dist/completion/investigate.d.ts +63 -0
  57. package/dist/completion/investigate.js +198 -0
  58. package/dist/completion/resolve.d.ts +29 -0
  59. package/dist/completion/resolve.js +42 -0
  60. package/dist/completion/side.d.ts +51 -0
  61. package/dist/completion/side.js +93 -0
  62. package/dist/completion/types.d.ts +84 -0
  63. package/dist/completion/types.js +14 -0
  64. package/dist/exec/exec.d.ts +38 -0
  65. package/dist/exec/exec.js +51 -0
  66. package/dist/exec/index.d.ts +8 -0
  67. package/dist/exec/index.js +8 -0
  68. package/dist/gate/decision.d.ts +52 -0
  69. package/dist/gate/decision.js +68 -0
  70. package/dist/gate/deps.d.ts +14 -0
  71. package/dist/gate/deps.js +1 -0
  72. package/dist/gate/index.d.ts +2 -0
  73. package/dist/gate/index.js +1 -0
  74. package/dist/git-cli/index.d.ts +47 -0
  75. package/dist/git-cli/index.js +127 -0
  76. package/dist/github-cli/command-spec.d.ts +14 -0
  77. package/dist/github-cli/command-spec.js +18 -0
  78. package/dist/github-cli/index.d.ts +71 -0
  79. package/dist/github-cli/index.js +188 -0
  80. package/dist/google/apis/calendar.d.ts +64 -0
  81. package/dist/google/apis/calendar.js +297 -0
  82. package/dist/google/apis/docs.d.ts +29 -0
  83. package/dist/google/apis/docs.js +154 -0
  84. package/dist/google/apis/drive.d.ts +46 -0
  85. package/dist/google/apis/drive.js +189 -0
  86. package/dist/google/apis/gmail.d.ts +67 -0
  87. package/dist/google/apis/gmail.js +374 -0
  88. package/dist/google/apis/index.d.ts +10 -0
  89. package/dist/google/apis/index.js +10 -0
  90. package/dist/google/apis/sheets.d.ts +16 -0
  91. package/dist/google/apis/sheets.js +54 -0
  92. package/dist/google/apis/slides.d.ts +16 -0
  93. package/dist/google/apis/slides.js +40 -0
  94. package/dist/google/auth/browser.d.ts +5 -0
  95. package/dist/google/auth/browser.js +27 -0
  96. package/dist/google/auth/credentials.d.ts +26 -0
  97. package/dist/google/auth/credentials.js +69 -0
  98. package/dist/google/auth/errors.d.ts +15 -0
  99. package/dist/google/auth/errors.js +26 -0
  100. package/dist/google/auth/index.d.ts +12 -0
  101. package/dist/google/auth/index.js +12 -0
  102. package/dist/google/auth/oauth-app.d.ts +15 -0
  103. package/dist/google/auth/oauth-app.js +20 -0
  104. package/dist/google/auth/oauth.d.ts +46 -0
  105. package/dist/google/auth/oauth.js +146 -0
  106. package/dist/google/auth/server.d.ts +13 -0
  107. package/dist/google/auth/server.js +70 -0
  108. package/dist/google/auth/setup-instructions.d.ts +16 -0
  109. package/dist/google/auth/setup-instructions.js +24 -0
  110. package/dist/google/auth/store.d.ts +19 -0
  111. package/dist/google/auth/store.js +27 -0
  112. package/dist/google/index.d.ts +13 -0
  113. package/dist/google/index.js +12 -0
  114. package/dist/google/paths.d.ts +17 -0
  115. package/dist/google/paths.js +28 -0
  116. package/dist/google/renderers/calendar.d.ts +23 -0
  117. package/dist/google/renderers/calendar.js +312 -0
  118. package/dist/google/renderers/drive.d.ts +31 -0
  119. package/dist/google/renderers/drive.js +214 -0
  120. package/dist/google/renderers/email.d.ts +16 -0
  121. package/dist/google/renderers/email.js +130 -0
  122. package/dist/google/renderers/index.d.ts +8 -0
  123. package/dist/google/renderers/index.js +8 -0
  124. package/dist/google/types.d.ts +143 -0
  125. package/dist/google/types.js +27 -0
  126. package/dist/governance/distill.d.ts +31 -0
  127. package/dist/governance/distill.js +78 -0
  128. package/dist/governance/index.d.ts +11 -0
  129. package/dist/governance/index.js +10 -0
  130. package/dist/governance/render.d.ts +13 -0
  131. package/dist/governance/render.js +23 -0
  132. package/dist/governance/store.d.ts +32 -0
  133. package/dist/governance/store.js +102 -0
  134. package/dist/governance/types.d.ts +19 -0
  135. package/dist/governance/types.js +9 -0
  136. package/dist/guardian/index.d.ts +7 -0
  137. package/dist/guardian/index.js +7 -0
  138. package/dist/guardian/types.d.ts +37 -0
  139. package/dist/guardian/types.js +12 -0
  140. package/dist/internal/github/cli.d.ts +40 -0
  141. package/dist/internal/github/cli.js +102 -0
  142. package/dist/internal/guardian/commit-file.d.ts +7 -0
  143. package/dist/internal/guardian/commit-file.js +36 -0
  144. package/dist/internal/guardian/commit-format.d.ts +35 -0
  145. package/dist/internal/guardian/commit-format.js +63 -0
  146. package/dist/internal/guardian/commit-shell.d.ts +38 -0
  147. package/dist/internal/guardian/commit-shell.js +134 -0
  148. package/dist/internal/guardian/history-gate.d.ts +41 -0
  149. package/dist/internal/guardian/history-gate.js +76 -0
  150. package/dist/internal/guardian/prose-gate.d.ts +31 -0
  151. package/dist/internal/guardian/prose-gate.js +50 -0
  152. package/dist/internal/guardian/redirect-gate.d.ts +41 -0
  153. package/dist/internal/guardian/redirect-gate.js +114 -0
  154. package/dist/internal/guardian/section-gate.d.ts +20 -0
  155. package/dist/internal/guardian/section-gate.js +36 -0
  156. package/dist/internal/guardian/title-gate.d.ts +20 -0
  157. package/dist/internal/guardian/title-gate.js +36 -0
  158. package/dist/internal/json-array.d.ts +11 -0
  159. package/dist/internal/json-array.js +40 -0
  160. package/dist/internal/lsp/registry.d.ts +12 -0
  161. package/dist/internal/lsp/registry.js +16 -0
  162. package/dist/internal/notes/discovery.d.ts +59 -0
  163. package/dist/internal/notes/discovery.js +91 -0
  164. package/dist/internal/notes/frontmatter.d.ts +52 -0
  165. package/dist/internal/notes/frontmatter.js +163 -0
  166. package/dist/internal/notes/id.d.ts +42 -0
  167. package/dist/internal/notes/id.js +80 -0
  168. package/dist/internal/notes/io.d.ts +25 -0
  169. package/dist/internal/notes/io.js +51 -0
  170. package/dist/internal/notes/sanitize.d.ts +19 -0
  171. package/dist/internal/notes/sanitize.js +35 -0
  172. package/dist/internal/process-global.d.ts +20 -0
  173. package/dist/internal/process-global.js +28 -0
  174. package/dist/internal/quest/alias-index.d.ts +61 -0
  175. package/dist/internal/quest/alias-index.js +69 -0
  176. package/dist/internal/quest/append-journey.d.ts +22 -0
  177. package/dist/internal/quest/append-journey.js +63 -0
  178. package/dist/internal/quest/bash-write.d.ts +49 -0
  179. package/dist/internal/quest/bash-write.js +208 -0
  180. package/dist/internal/quest/dates.d.ts +14 -0
  181. package/dist/internal/quest/dates.js +20 -0
  182. package/dist/internal/quest/discovery.d.ts +96 -0
  183. package/dist/internal/quest/discovery.js +354 -0
  184. package/dist/internal/quest/fields.d.ts +37 -0
  185. package/dist/internal/quest/fields.js +94 -0
  186. package/dist/internal/quest/frontmatter.d.ts +88 -0
  187. package/dist/internal/quest/frontmatter.js +630 -0
  188. package/dist/internal/quest/git-signals.d.ts +53 -0
  189. package/dist/internal/quest/git-signals.js +192 -0
  190. package/dist/internal/quest/id.d.ts +50 -0
  191. package/dist/internal/quest/id.js +116 -0
  192. package/dist/internal/quest/io.d.ts +54 -0
  193. package/dist/internal/quest/io.js +233 -0
  194. package/dist/internal/quest/mentions.d.ts +45 -0
  195. package/dist/internal/quest/mentions.js +70 -0
  196. package/dist/internal/quest/mutate.d.ts +38 -0
  197. package/dist/internal/quest/mutate.js +83 -0
  198. package/dist/internal/quest/process-liveness.d.ts +98 -0
  199. package/dist/internal/quest/process-liveness.js +216 -0
  200. package/dist/internal/quest/quest-doc.d.ts +116 -0
  201. package/dist/internal/quest/quest-doc.js +239 -0
  202. package/dist/internal/quest/ranking.d.ts +48 -0
  203. package/dist/internal/quest/ranking.js +114 -0
  204. package/dist/internal/quest/reopen.d.ts +65 -0
  205. package/dist/internal/quest/reopen.js +113 -0
  206. package/dist/internal/quest/resolve-cwd.d.ts +32 -0
  207. package/dist/internal/quest/resolve-cwd.js +89 -0
  208. package/dist/internal/quest/sanitize.d.ts +42 -0
  209. package/dist/internal/quest/sanitize.js +69 -0
  210. package/dist/internal/quest/scaffold.d.ts +59 -0
  211. package/dist/internal/quest/scaffold.js +169 -0
  212. package/dist/internal/quest/scratch.d.ts +27 -0
  213. package/dist/internal/quest/scratch.js +106 -0
  214. package/dist/internal/quest/session-liveness.d.ts +125 -0
  215. package/dist/internal/quest/session-liveness.js +386 -0
  216. package/dist/internal/quest/session-ownership.d.ts +22 -0
  217. package/dist/internal/quest/session-ownership.js +100 -0
  218. package/dist/internal/quest/session-registry.d.ts +221 -0
  219. package/dist/internal/quest/session-registry.js +266 -0
  220. package/dist/internal/quest/status.d.ts +10 -0
  221. package/dist/internal/quest/status.js +15 -0
  222. package/dist/internal/quest/structural-journal.d.ts +41 -0
  223. package/dist/internal/quest/structural-journal.js +67 -0
  224. package/dist/internal/quest/structural.d.ts +43 -0
  225. package/dist/internal/quest/structural.js +77 -0
  226. package/dist/internal/quest/toc.d.ts +28 -0
  227. package/dist/internal/quest/toc.js +90 -0
  228. package/dist/internal/quest/trees.d.ts +53 -0
  229. package/dist/internal/quest/trees.js +145 -0
  230. package/dist/internal/quest/url-fetchers.d.ts +50 -0
  231. package/dist/internal/quest/url-fetchers.js +97 -0
  232. package/dist/internal/quest/write-classifier.d.ts +46 -0
  233. package/dist/internal/quest/write-classifier.js +59 -0
  234. package/dist/internal/refs/builtins.d.ts +32 -0
  235. package/dist/internal/refs/builtins.js +179 -0
  236. package/dist/internal/refs/registry.d.ts +25 -0
  237. package/dist/internal/refs/registry.js +42 -0
  238. package/dist/internal/registry/global-symbol-registry.d.ts +37 -0
  239. package/dist/internal/registry/global-symbol-registry.js +55 -0
  240. package/dist/internal/review/registry.d.ts +12 -0
  241. package/dist/internal/review/registry.js +16 -0
  242. package/dist/internal/sqlite/db.d.ts +16 -0
  243. package/dist/internal/sqlite/db.js +26 -0
  244. package/dist/internal/terminal/builtins.d.ts +8 -0
  245. package/dist/internal/terminal/builtins.js +14 -0
  246. package/dist/internal/terminal/drivers/fallback.d.ts +8 -0
  247. package/dist/internal/terminal/drivers/fallback.js +31 -0
  248. package/dist/internal/terminal/drivers/shared.d.ts +39 -0
  249. package/dist/internal/terminal/drivers/shared.js +51 -0
  250. package/dist/internal/terminal/drivers/tmux.d.ts +14 -0
  251. package/dist/internal/terminal/drivers/tmux.js +88 -0
  252. package/dist/internal/terminal/drivers/wezterm.d.ts +35 -0
  253. package/dist/internal/terminal/drivers/wezterm.js +175 -0
  254. package/dist/internal/terminal/registry.d.ts +12 -0
  255. package/dist/internal/terminal/registry.js +16 -0
  256. package/dist/internal/tree/builtins.d.ts +8 -0
  257. package/dist/internal/tree/builtins.js +10 -0
  258. package/dist/internal/tree/providers/git-worktree.d.ts +20 -0
  259. package/dist/internal/tree/providers/git-worktree.js +279 -0
  260. package/dist/internal/tree/registry.d.ts +12 -0
  261. package/dist/internal/tree/registry.js +16 -0
  262. package/dist/lsp/config.d.ts +77 -0
  263. package/dist/lsp/config.js +154 -0
  264. package/dist/lsp/external.d.ts +13 -0
  265. package/dist/lsp/external.js +52 -0
  266. package/dist/lsp/format.d.ts +11 -0
  267. package/dist/lsp/format.js +54 -0
  268. package/dist/lsp/index.d.ts +17 -0
  269. package/dist/lsp/index.js +16 -0
  270. package/dist/lsp/offsets.d.ts +22 -0
  271. package/dist/lsp/offsets.js +51 -0
  272. package/dist/lsp/registry.d.ts +28 -0
  273. package/dist/lsp/registry.js +45 -0
  274. package/dist/lsp/standalone/backend.d.ts +42 -0
  275. package/dist/lsp/standalone/backend.js +150 -0
  276. package/dist/lsp/standalone/document.d.ts +45 -0
  277. package/dist/lsp/standalone/document.js +81 -0
  278. package/dist/lsp/standalone/server.d.ts +84 -0
  279. package/dist/lsp/standalone/server.js +521 -0
  280. package/dist/lsp/types.d.ts +119 -0
  281. package/dist/lsp/types.js +13 -0
  282. package/dist/memory/db.d.ts +15 -0
  283. package/dist/memory/db.js +25 -0
  284. package/dist/memory/index.d.ts +12 -0
  285. package/dist/memory/index.js +11 -0
  286. package/dist/memory/paths.d.ts +19 -0
  287. package/dist/memory/paths.js +33 -0
  288. package/dist/memory/scope.d.ts +14 -0
  289. package/dist/memory/scope.js +22 -0
  290. package/dist/memory/store.d.ts +12 -0
  291. package/dist/memory/store.js +146 -0
  292. package/dist/memory/types.d.ts +80 -0
  293. package/dist/memory/types.js +6 -0
  294. package/dist/notes/types.d.ts +50 -0
  295. package/dist/notes/types.js +23 -0
  296. package/dist/notes/verbs/create.d.ts +5 -0
  297. package/dist/notes/verbs/create.js +55 -0
  298. package/dist/notes/verbs/mutate.d.ts +8 -0
  299. package/dist/notes/verbs/mutate.js +152 -0
  300. package/dist/notes/verbs/queries.d.ts +15 -0
  301. package/dist/notes/verbs/queries.js +116 -0
  302. package/dist/notes/verbs/reindex.d.ts +12 -0
  303. package/dist/notes/verbs/reindex.js +35 -0
  304. package/dist/notes/verbs/shared.d.ts +37 -0
  305. package/dist/notes/verbs/shared.js +29 -0
  306. package/dist/observability/index.d.ts +13 -0
  307. package/dist/observability/index.js +12 -0
  308. package/dist/observability/recorder.d.ts +50 -0
  309. package/dist/observability/recorder.js +77 -0
  310. package/dist/observability/store.d.ts +22 -0
  311. package/dist/observability/store.js +213 -0
  312. package/dist/observability/types.d.ts +82 -0
  313. package/dist/observability/types.js +1 -0
  314. package/dist/process/index.d.ts +9 -0
  315. package/dist/process/index.js +9 -0
  316. package/dist/process/process.d.ts +95 -0
  317. package/dist/process/process.js +153 -0
  318. package/dist/prose/block.d.ts +9 -0
  319. package/dist/prose/block.js +43 -0
  320. package/dist/prose/detect.d.ts +50 -0
  321. package/dist/prose/detect.js +217 -0
  322. package/dist/prose/gate.d.ts +14 -0
  323. package/dist/prose/gate.js +21 -0
  324. package/dist/prose/index.d.ts +4 -0
  325. package/dist/prose/index.js +4 -0
  326. package/dist/prose/wrap.d.ts +9 -0
  327. package/dist/prose/wrap.js +47 -0
  328. package/dist/quest/actions.d.ts +20 -0
  329. package/dist/quest/actions.js +107 -0
  330. package/dist/quest/config.d.ts +79 -0
  331. package/dist/quest/config.js +83 -0
  332. package/dist/quest/index.d.ts +29 -0
  333. package/dist/quest/index.js +28 -0
  334. package/dist/quest/lifecycle.d.ts +365 -0
  335. package/dist/quest/lifecycle.js +900 -0
  336. package/dist/quest/lookup.d.ts +243 -0
  337. package/dist/quest/lookup.js +496 -0
  338. package/dist/quest/machine.d.ts +48 -0
  339. package/dist/quest/machine.js +96 -0
  340. package/dist/quest/render-rows.d.ts +166 -0
  341. package/dist/quest/render-rows.js +214 -0
  342. package/dist/quest/state.d.ts +111 -0
  343. package/dist/quest/state.js +46 -0
  344. package/dist/quest/types.d.ts +224 -0
  345. package/dist/quest/types.js +10 -0
  346. package/dist/quest/verbs/alias.d.ts +9 -0
  347. package/dist/quest/verbs/alias.js +129 -0
  348. package/dist/quest/verbs/lifecycle.d.ts +36 -0
  349. package/dist/quest/verbs/lifecycle.js +407 -0
  350. package/dist/quest/verbs/queries.d.ts +24 -0
  351. package/dist/quest/verbs/queries.js +241 -0
  352. package/dist/quest/verbs/reorder.d.ts +15 -0
  353. package/dist/quest/verbs/reorder.js +85 -0
  354. package/dist/quest/verbs/shared.d.ts +63 -0
  355. package/dist/quest/verbs/shared.js +35 -0
  356. package/dist/quest/verbs/stage.d.ts +39 -0
  357. package/dist/quest/verbs/stage.js +506 -0
  358. package/dist/quest/verbs/structural.d.ts +23 -0
  359. package/dist/quest/verbs/structural.js +310 -0
  360. package/dist/quest/verbs/tree-ops.d.ts +20 -0
  361. package/dist/quest/verbs/tree-ops.js +289 -0
  362. package/dist/refs/index.d.ts +13 -0
  363. package/dist/refs/index.js +12 -0
  364. package/dist/refs/lookup.d.ts +53 -0
  365. package/dist/refs/lookup.js +102 -0
  366. package/dist/refs/register.d.ts +34 -0
  367. package/dist/refs/register.js +44 -0
  368. package/dist/refs/types.d.ts +81 -0
  369. package/dist/refs/types.js +17 -0
  370. package/dist/remote/index.d.ts +9 -0
  371. package/dist/remote/index.js +9 -0
  372. package/dist/remote/name.d.ts +22 -0
  373. package/dist/remote/name.js +30 -0
  374. package/dist/result/cite.d.ts +84 -0
  375. package/dist/result/cite.js +127 -0
  376. package/dist/result/counts.d.ts +15 -0
  377. package/dist/result/counts.js +17 -0
  378. package/dist/result/details.d.ts +61 -0
  379. package/dist/result/details.js +121 -0
  380. package/dist/result/digest.d.ts +37 -0
  381. package/dist/result/digest.js +227 -0
  382. package/dist/result/follow.d.ts +29 -0
  383. package/dist/result/follow.js +37 -0
  384. package/dist/result/index.d.ts +26 -0
  385. package/dist/result/index.js +26 -0
  386. package/dist/result/listing.d.ts +62 -0
  387. package/dist/result/listing.js +72 -0
  388. package/dist/result/location.d.ts +67 -0
  389. package/dist/result/location.js +125 -0
  390. package/dist/result/query.d.ts +67 -0
  391. package/dist/result/query.js +144 -0
  392. package/dist/result/spill.d.ts +41 -0
  393. package/dist/result/spill.js +121 -0
  394. package/dist/result/store.d.ts +83 -0
  395. package/dist/result/store.js +214 -0
  396. package/dist/result/view.d.ts +31 -0
  397. package/dist/result/view.js +38 -0
  398. package/dist/review/anchor.d.ts +84 -0
  399. package/dist/review/anchor.js +89 -0
  400. package/dist/review/ask/agents.d.ts +80 -0
  401. package/dist/review/ask/agents.js +296 -0
  402. package/dist/review/ask/anchorable.d.ts +35 -0
  403. package/dist/review/ask/anchorable.js +76 -0
  404. package/dist/review/ask/answer.d.ts +54 -0
  405. package/dist/review/ask/answer.js +209 -0
  406. package/dist/review/ask/audit.d.ts +71 -0
  407. package/dist/review/ask/audit.js +158 -0
  408. package/dist/review/ask/collect.d.ts +41 -0
  409. package/dist/review/ask/collect.js +82 -0
  410. package/dist/review/ask/council.d.ts +290 -0
  411. package/dist/review/ask/council.js +386 -0
  412. package/dist/review/ask/critique.d.ts +69 -0
  413. package/dist/review/ask/critique.js +157 -0
  414. package/dist/review/ask/harvest.d.ts +119 -0
  415. package/dist/review/ask/harvest.js +409 -0
  416. package/dist/review/ask/identity.d.ts +93 -0
  417. package/dist/review/ask/identity.js +134 -0
  418. package/dist/review/ask/judge.d.ts +37 -0
  419. package/dist/review/ask/judge.js +140 -0
  420. package/dist/review/ask/persona.d.ts +84 -0
  421. package/dist/review/ask/persona.js +127 -0
  422. package/dist/review/ask/progress.d.ts +117 -0
  423. package/dist/review/ask/progress.js +137 -0
  424. package/dist/review/ask/prompt.d.ts +131 -0
  425. package/dist/review/ask/prompt.js +242 -0
  426. package/dist/review/ask/roster.d.ts +94 -0
  427. package/dist/review/ask/roster.js +338 -0
  428. package/dist/review/ask/run.d.ts +435 -0
  429. package/dist/review/ask/run.js +340 -0
  430. package/dist/review/ask/span.d.ts +70 -0
  431. package/dist/review/ask/span.js +166 -0
  432. package/dist/review/ask/stack-round.d.ts +66 -0
  433. package/dist/review/ask/stack-round.js +125 -0
  434. package/dist/review/ask/start.d.ts +48 -0
  435. package/dist/review/ask/start.js +118 -0
  436. package/dist/review/ask/store.d.ts +83 -0
  437. package/dist/review/ask/store.js +226 -0
  438. package/dist/review/ask/wire.d.ts +89 -0
  439. package/dist/review/ask/wire.js +204 -0
  440. package/dist/review/attach.d.ts +161 -0
  441. package/dist/review/attach.js +357 -0
  442. package/dist/review/authoring.d.ts +84 -0
  443. package/dist/review/authoring.js +203 -0
  444. package/dist/review/backed.d.ts +90 -0
  445. package/dist/review/backed.js +168 -0
  446. package/dist/review/bind.d.ts +75 -0
  447. package/dist/review/bind.js +223 -0
  448. package/dist/review/budget.d.ts +133 -0
  449. package/dist/review/budget.js +278 -0
  450. package/dist/review/capabilities.d.ts +217 -0
  451. package/dist/review/capabilities.js +46 -0
  452. package/dist/review/change.d.ts +155 -0
  453. package/dist/review/change.js +15 -0
  454. package/dist/review/checks.d.ts +56 -0
  455. package/dist/review/checks.js +11 -0
  456. package/dist/review/config.d.ts +71 -0
  457. package/dist/review/config.js +125 -0
  458. package/dist/review/conventions.d.ts +35 -0
  459. package/dist/review/conventions.js +58 -0
  460. package/dist/review/conversation.d.ts +98 -0
  461. package/dist/review/conversation.js +16 -0
  462. package/dist/review/decided.d.ts +58 -0
  463. package/dist/review/decided.js +67 -0
  464. package/dist/review/diff.d.ts +116 -0
  465. package/dist/review/diff.js +237 -0
  466. package/dist/review/draft/continuation.d.ts +23 -0
  467. package/dist/review/draft/continuation.js +32 -0
  468. package/dist/review/draft/fanout.d.ts +57 -0
  469. package/dist/review/draft/fanout.js +46 -0
  470. package/dist/review/draft/handle.d.ts +55 -0
  471. package/dist/review/draft/handle.js +110 -0
  472. package/dist/review/draft/plan.d.ts +112 -0
  473. package/dist/review/draft/plan.js +343 -0
  474. package/dist/review/draft/publish.d.ts +38 -0
  475. package/dist/review/draft/publish.js +118 -0
  476. package/dist/review/draft/render.d.ts +32 -0
  477. package/dist/review/draft/render.js +100 -0
  478. package/dist/review/draft/state.d.ts +98 -0
  479. package/dist/review/draft/state.js +83 -0
  480. package/dist/review/draft/store.d.ts +33 -0
  481. package/dist/review/draft/store.js +100 -0
  482. package/dist/review/elsewhere.d.ts +27 -0
  483. package/dist/review/elsewhere.js +39 -0
  484. package/dist/review/engine.d.ts +106 -0
  485. package/dist/review/engine.js +243 -0
  486. package/dist/review/events.d.ts +59 -0
  487. package/dist/review/events.js +35 -0
  488. package/dist/review/failed.d.ts +46 -0
  489. package/dist/review/failed.js +56 -0
  490. package/dist/review/finding.d.ts +81 -0
  491. package/dist/review/finding.js +85 -0
  492. package/dist/review/fix.d.ts +147 -0
  493. package/dist/review/fix.js +175 -0
  494. package/dist/review/followup.d.ts +84 -0
  495. package/dist/review/followup.js +123 -0
  496. package/dist/review/index.d.ts +134 -0
  497. package/dist/review/index.js +80 -0
  498. package/dist/review/keys.d.ts +23 -0
  499. package/dist/review/keys.js +40 -0
  500. package/dist/review/landing.d.ts +37 -0
  501. package/dist/review/landing.js +68 -0
  502. package/dist/review/lenses.d.ts +132 -0
  503. package/dist/review/lenses.js +430 -0
  504. package/dist/review/propose-from.d.ts +76 -0
  505. package/dist/review/propose-from.js +86 -0
  506. package/dist/review/provider.d.ts +306 -0
  507. package/dist/review/provider.js +16 -0
  508. package/dist/review/providers/git/index.d.ts +23 -0
  509. package/dist/review/providers/git/index.js +214 -0
  510. package/dist/review/providers/github/authoring.d.ts +22 -0
  511. package/dist/review/providers/github/authoring.js +350 -0
  512. package/dist/review/providers/github/claims.d.ts +49 -0
  513. package/dist/review/providers/github/claims.js +136 -0
  514. package/dist/review/providers/github/conversation.d.ts +18 -0
  515. package/dist/review/providers/github/conversation.js +455 -0
  516. package/dist/review/providers/github/fields.d.ts +30 -0
  517. package/dist/review/providers/github/fields.js +47 -0
  518. package/dist/review/providers/github/index.d.ts +15 -0
  519. package/dist/review/providers/github/index.js +110 -0
  520. package/dist/review/providers/github/proposals.d.ts +14 -0
  521. package/dist/review/providers/github/proposals.js +298 -0
  522. package/dist/review/providers/github/queue.d.ts +46 -0
  523. package/dist/review/providers/github/queue.js +122 -0
  524. package/dist/review/providers/github/stacking.d.ts +20 -0
  525. package/dist/review/providers/github/stacking.js +107 -0
  526. package/dist/review/queue.d.ts +43 -0
  527. package/dist/review/queue.js +56 -0
  528. package/dist/review/reactable.d.ts +93 -0
  529. package/dist/review/reactable.js +140 -0
  530. package/dist/review/register.d.ts +52 -0
  531. package/dist/review/register.js +53 -0
  532. package/dist/review/resolve.d.ts +58 -0
  533. package/dist/review/resolve.js +150 -0
  534. package/dist/review/retarget.d.ts +73 -0
  535. package/dist/review/retarget.js +82 -0
  536. package/dist/review/revisited.d.ts +77 -0
  537. package/dist/review/revisited.js +121 -0
  538. package/dist/review/stack.d.ts +110 -0
  539. package/dist/review/stack.js +52 -0
  540. package/dist/sections/block.d.ts +9 -0
  541. package/dist/sections/block.js +42 -0
  542. package/dist/sections/detect.d.ts +31 -0
  543. package/dist/sections/detect.js +67 -0
  544. package/dist/sections/gate.d.ts +21 -0
  545. package/dist/sections/gate.js +22 -0
  546. package/dist/sections/index.d.ts +5 -0
  547. package/dist/sections/index.js +5 -0
  548. package/dist/sections/sanctioned.d.ts +13 -0
  549. package/dist/sections/sanctioned.js +21 -0
  550. package/dist/shell/index.d.ts +8 -0
  551. package/dist/shell/index.js +8 -0
  552. package/dist/shell/parse.d.ts +125 -0
  553. package/dist/shell/parse.js +298 -0
  554. package/dist/slack/api/channels.d.ts +12 -0
  555. package/dist/slack/api/channels.js +28 -0
  556. package/dist/slack/api/client.d.ts +94 -0
  557. package/dist/slack/api/client.js +272 -0
  558. package/dist/slack/api/files.d.ts +95 -0
  559. package/dist/slack/api/files.js +223 -0
  560. package/dist/slack/api/index.d.ts +11 -0
  561. package/dist/slack/api/index.js +11 -0
  562. package/dist/slack/api/messages.d.ts +98 -0
  563. package/dist/slack/api/messages.js +292 -0
  564. package/dist/slack/api/reactions.d.ts +47 -0
  565. package/dist/slack/api/reactions.js +50 -0
  566. package/dist/slack/api/resolve-conversations.d.ts +43 -0
  567. package/dist/slack/api/resolve-conversations.js +130 -0
  568. package/dist/slack/api/resolve-messages.d.ts +29 -0
  569. package/dist/slack/api/resolve-messages.js +93 -0
  570. package/dist/slack/api/resolve-users.d.ts +27 -0
  571. package/dist/slack/api/resolve-users.js +73 -0
  572. package/dist/slack/api/search.d.ts +86 -0
  573. package/dist/slack/api/search.js +186 -0
  574. package/dist/slack/api/users.d.ts +12 -0
  575. package/dist/slack/api/users.js +33 -0
  576. package/dist/slack/auth/browser-extract.d.ts +33 -0
  577. package/dist/slack/auth/browser-extract.js +201 -0
  578. package/dist/slack/auth/browser.d.ts +5 -0
  579. package/dist/slack/auth/browser.js +25 -0
  580. package/dist/slack/auth/credentials.d.ts +14 -0
  581. package/dist/slack/auth/credentials.js +24 -0
  582. package/dist/slack/auth/errors.d.ts +9 -0
  583. package/dist/slack/auth/errors.js +19 -0
  584. package/dist/slack/auth/extract.d.ts +23 -0
  585. package/dist/slack/auth/extract.js +44 -0
  586. package/dist/slack/auth/index.d.ts +12 -0
  587. package/dist/slack/auth/index.js +11 -0
  588. package/dist/slack/auth/oauth-app.d.ts +11 -0
  589. package/dist/slack/auth/oauth-app.js +20 -0
  590. package/dist/slack/auth/oauth.d.ts +31 -0
  591. package/dist/slack/auth/oauth.js +82 -0
  592. package/dist/slack/auth/server.d.ts +14 -0
  593. package/dist/slack/auth/server.js +75 -0
  594. package/dist/slack/auth/store.d.ts +17 -0
  595. package/dist/slack/auth/store.js +27 -0
  596. package/dist/slack/block-message.d.ts +9 -0
  597. package/dist/slack/block-message.js +30 -0
  598. package/dist/slack/blocks.d.ts +94 -0
  599. package/dist/slack/blocks.js +765 -0
  600. package/dist/slack/content-gate.d.ts +12 -0
  601. package/dist/slack/content-gate.js +22 -0
  602. package/dist/slack/detect.d.ts +31 -0
  603. package/dist/slack/detect.js +125 -0
  604. package/dist/slack/index.d.ts +18 -0
  605. package/dist/slack/index.js +17 -0
  606. package/dist/slack/paths.d.ts +28 -0
  607. package/dist/slack/paths.js +46 -0
  608. package/dist/slack/renderers/channel.d.ts +6 -0
  609. package/dist/slack/renderers/channel.js +27 -0
  610. package/dist/slack/renderers/index.d.ts +9 -0
  611. package/dist/slack/renderers/index.js +9 -0
  612. package/dist/slack/renderers/message.d.ts +21 -0
  613. package/dist/slack/renderers/message.js +214 -0
  614. package/dist/slack/renderers/reactions.d.ts +8 -0
  615. package/dist/slack/renderers/reactions.js +43 -0
  616. package/dist/slack/renderers/search.d.ts +6 -0
  617. package/dist/slack/renderers/search.js +39 -0
  618. package/dist/slack/renderers/user.d.ts +6 -0
  619. package/dist/slack/renderers/user.js +32 -0
  620. package/dist/slack/resolvers/cache.d.ts +29 -0
  621. package/dist/slack/resolvers/cache.js +70 -0
  622. package/dist/slack/resolvers/conversation-cache.d.ts +42 -0
  623. package/dist/slack/resolvers/conversation-cache.js +128 -0
  624. package/dist/slack/resolvers/conversation.d.ts +44 -0
  625. package/dist/slack/resolvers/conversation.js +229 -0
  626. package/dist/slack/resolvers/index.d.ts +8 -0
  627. package/dist/slack/resolvers/index.js +8 -0
  628. package/dist/slack/resolvers/target.d.ts +19 -0
  629. package/dist/slack/resolvers/target.js +45 -0
  630. package/dist/slack/resolvers/url.d.ts +20 -0
  631. package/dist/slack/resolvers/url.js +22 -0
  632. package/dist/slack/resolvers/user.d.ts +54 -0
  633. package/dist/slack/resolvers/user.js +134 -0
  634. package/dist/slack/types.d.ts +180 -0
  635. package/dist/slack/types.js +13 -0
  636. package/dist/tdd/attest.d.ts +21 -0
  637. package/dist/tdd/attest.js +21 -0
  638. package/dist/tdd/discipline.d.ts +11 -0
  639. package/dist/tdd/discipline.js +28 -0
  640. package/dist/tdd/index.d.ts +14 -0
  641. package/dist/tdd/index.js +13 -0
  642. package/dist/tdd/machine.d.ts +48 -0
  643. package/dist/tdd/machine.js +139 -0
  644. package/dist/tdd/presentation.d.ts +34 -0
  645. package/dist/tdd/presentation.js +38 -0
  646. package/dist/tdd/queries.d.ts +10 -0
  647. package/dist/tdd/queries.js +22 -0
  648. package/dist/terminal/index.d.ts +12 -0
  649. package/dist/terminal/index.js +11 -0
  650. package/dist/terminal/register.d.ts +21 -0
  651. package/dist/terminal/register.js +31 -0
  652. package/dist/terminal/resolve.d.ts +63 -0
  653. package/dist/terminal/resolve.js +117 -0
  654. package/dist/terminal/types.d.ts +134 -0
  655. package/dist/terminal/types.js +19 -0
  656. package/dist/thinking/index.d.ts +20 -0
  657. package/dist/thinking/index.js +27 -0
  658. package/dist/title/block.d.ts +9 -0
  659. package/dist/title/block.js +32 -0
  660. package/dist/title/detect.d.ts +25 -0
  661. package/dist/title/detect.js +154 -0
  662. package/dist/title/gate.d.ts +19 -0
  663. package/dist/title/gate.js +21 -0
  664. package/dist/title/index.d.ts +3 -0
  665. package/dist/title/index.js +3 -0
  666. package/dist/tree/index.d.ts +18 -0
  667. package/dist/tree/index.js +17 -0
  668. package/dist/tree/register.d.ts +21 -0
  669. package/dist/tree/register.js +31 -0
  670. package/dist/tree/resolve.d.ts +20 -0
  671. package/dist/tree/resolve.js +31 -0
  672. package/dist/tree/types.d.ts +83 -0
  673. package/dist/tree/types.js +12 -0
  674. package/dist/ui/count.d.ts +29 -0
  675. package/dist/ui/count.js +35 -0
  676. package/dist/ui/path.d.ts +25 -0
  677. package/dist/ui/path.js +40 -0
  678. package/dist/verify/index.d.ts +17 -0
  679. package/dist/verify/index.js +14 -0
  680. package/dist/verify/project.d.ts +21 -0
  681. package/dist/verify/project.js +49 -0
  682. package/dist/verify/resolve.d.ts +26 -0
  683. package/dist/verify/resolve.js +27 -0
  684. package/dist/verify/run.d.ts +31 -0
  685. package/dist/verify/run.js +145 -0
  686. package/dist/web/a11y/announcements.d.ts +67 -0
  687. package/dist/web/a11y/announcements.js +116 -0
  688. package/dist/web/a11y/budget.d.ts +75 -0
  689. package/dist/web/a11y/budget.js +97 -0
  690. package/dist/web/a11y/focus.d.ts +37 -0
  691. package/dist/web/a11y/focus.js +106 -0
  692. package/dist/web/a11y/index.d.ts +19 -0
  693. package/dist/web/a11y/index.js +25 -0
  694. package/dist/web/a11y/naming.d.ts +23 -0
  695. package/dist/web/a11y/naming.js +55 -0
  696. package/dist/web/a11y/outline.d.ts +23 -0
  697. package/dist/web/a11y/outline.js +42 -0
  698. package/dist/web/a11y/reading.d.ts +12 -0
  699. package/dist/web/a11y/reading.js +101 -0
  700. package/dist/web/a11y/scope.d.ts +23 -0
  701. package/dist/web/a11y/scope.js +99 -0
  702. package/dist/web/a11y/states.d.ts +22 -0
  703. package/dist/web/a11y/states.js +53 -0
  704. package/dist/web/a11y/tree.d.ts +124 -0
  705. package/dist/web/a11y/tree.js +269 -0
  706. package/dist/web/a11y/walk.d.ts +225 -0
  707. package/dist/web/a11y/walk.js +568 -0
  708. package/dist/web/a11y/walkprobe.d.ts +44 -0
  709. package/dist/web/a11y/walkprobe.js +365 -0
  710. package/dist/web/audit/axe.d.ts +219 -0
  711. package/dist/web/audit/axe.js +322 -0
  712. package/dist/web/audit/behind.d.ts +63 -0
  713. package/dist/web/audit/behind.js +142 -0
  714. package/dist/web/audit/capture.d.ts +43 -0
  715. package/dist/web/audit/capture.js +185 -0
  716. package/dist/web/audit/colour.d.ts +85 -0
  717. package/dist/web/audit/colour.js +189 -0
  718. package/dist/web/audit/contrast.d.ts +74 -0
  719. package/dist/web/audit/contrast.js +104 -0
  720. package/dist/web/audit/health.d.ts +27 -0
  721. package/dist/web/audit/health.js +57 -0
  722. package/dist/web/audit/index.d.ts +22 -0
  723. package/dist/web/audit/index.js +22 -0
  724. package/dist/web/audit/pair.d.ts +55 -0
  725. package/dist/web/audit/pair.js +157 -0
  726. package/dist/web/audit/probe.d.ts +31 -0
  727. package/dist/web/audit/probe.js +189 -0
  728. package/dist/web/audit/report.d.ts +22 -0
  729. package/dist/web/audit/report.js +250 -0
  730. package/dist/web/audit/structure.d.ts +126 -0
  731. package/dist/web/audit/structure.js +595 -0
  732. package/dist/web/audit/sweep.d.ts +66 -0
  733. package/dist/web/audit/sweep.js +117 -0
  734. package/dist/web/audit/target.d.ts +89 -0
  735. package/dist/web/audit/target.js +168 -0
  736. package/dist/web/audit/verdict.d.ts +48 -0
  737. package/dist/web/audit/verdict.js +52 -0
  738. package/dist/web/audit/visual.d.ts +161 -0
  739. package/dist/web/audit/visual.js +297 -0
  740. package/dist/web/browser.d.ts +213 -0
  741. package/dist/web/browser.js +927 -0
  742. package/dist/web/compare/images.d.ts +45 -0
  743. package/dist/web/compare/images.js +101 -0
  744. package/dist/web/compare/index.d.ts +15 -0
  745. package/dist/web/compare/index.js +15 -0
  746. package/dist/web/compare/provenance.d.ts +48 -0
  747. package/dist/web/compare/provenance.js +86 -0
  748. package/dist/web/compare/regions.d.ts +78 -0
  749. package/dist/web/compare/regions.js +211 -0
  750. package/dist/web/cookies/extract.d.ts +26 -0
  751. package/dist/web/cookies/extract.js +167 -0
  752. package/dist/web/cookies/index.d.ts +8 -0
  753. package/dist/web/cookies/index.js +7 -0
  754. package/dist/web/cookies/inject.d.ts +13 -0
  755. package/dist/web/cookies/inject.js +27 -0
  756. package/dist/web/cookies/setup.d.ts +31 -0
  757. package/dist/web/cookies/setup.js +94 -0
  758. package/dist/web/design/index.d.ts +9 -0
  759. package/dist/web/design/index.js +9 -0
  760. package/dist/web/design/inventory.d.ts +126 -0
  761. package/dist/web/design/inventory.js +324 -0
  762. package/dist/web/design/probe.d.ts +24 -0
  763. package/dist/web/design/probe.js +88 -0
  764. package/dist/web/element/actionable.d.ts +34 -0
  765. package/dist/web/element/actionable.js +48 -0
  766. package/dist/web/element/animations.d.ts +48 -0
  767. package/dist/web/element/animations.js +74 -0
  768. package/dist/web/element/box.d.ts +53 -0
  769. package/dist/web/element/box.js +58 -0
  770. package/dist/web/element/hover.d.ts +75 -0
  771. package/dist/web/element/hover.js +172 -0
  772. package/dist/web/element/index.d.ts +17 -0
  773. package/dist/web/element/index.js +17 -0
  774. package/dist/web/element/listeners.d.ts +72 -0
  775. package/dist/web/element/listeners.js +98 -0
  776. package/dist/web/element/measure.d.ts +40 -0
  777. package/dist/web/element/measure.js +118 -0
  778. package/dist/web/element/probes.d.ts +108 -0
  779. package/dist/web/element/probes.js +195 -0
  780. package/dist/web/element/pseudo.d.ts +51 -0
  781. package/dist/web/element/pseudo.js +96 -0
  782. package/dist/web/element/view.d.ts +30 -0
  783. package/dist/web/element/view.js +117 -0
  784. package/dist/web/element/visibility.d.ts +42 -0
  785. package/dist/web/element/visibility.js +67 -0
  786. package/dist/web/envelope/artifacts.d.ts +23 -0
  787. package/dist/web/envelope/artifacts.js +45 -0
  788. package/dist/web/envelope/index.d.ts +9 -0
  789. package/dist/web/envelope/index.js +9 -0
  790. package/dist/web/envelope/naming.d.ts +23 -0
  791. package/dist/web/envelope/naming.js +43 -0
  792. package/dist/web/envelope/paged.d.ts +42 -0
  793. package/dist/web/envelope/paged.js +99 -0
  794. package/dist/web/envelope/sink.d.ts +43 -0
  795. package/dist/web/envelope/sink.js +67 -0
  796. package/dist/web/environment/devices.d.ts +65 -0
  797. package/dist/web/environment/devices.js +82 -0
  798. package/dist/web/environment/emulation.d.ts +124 -0
  799. package/dist/web/environment/emulation.js +258 -0
  800. package/dist/web/environment/index.d.ts +15 -0
  801. package/dist/web/environment/index.js +15 -0
  802. package/dist/web/environment/probes.d.ts +18 -0
  803. package/dist/web/environment/probes.js +40 -0
  804. package/dist/web/environment/shaping.d.ts +90 -0
  805. package/dist/web/environment/shaping.js +141 -0
  806. package/dist/web/environment/status.d.ts +51 -0
  807. package/dist/web/environment/status.js +109 -0
  808. package/dist/web/environment/storage.d.ts +55 -0
  809. package/dist/web/environment/storage.js +142 -0
  810. package/dist/web/environment/tabs.d.ts +32 -0
  811. package/dist/web/environment/tabs.js +47 -0
  812. package/dist/web/environment/view.d.ts +10 -0
  813. package/dist/web/environment/view.js +42 -0
  814. package/dist/web/evaluate/index.d.ts +6 -0
  815. package/dist/web/evaluate/index.js +6 -0
  816. package/dist/web/evaluate/outcome.d.ts +74 -0
  817. package/dist/web/evaluate/outcome.js +91 -0
  818. package/dist/web/evaluate/probe.d.ts +31 -0
  819. package/dist/web/evaluate/probe.js +303 -0
  820. package/dist/web/index.d.ts +47 -0
  821. package/dist/web/index.js +47 -0
  822. package/dist/web/input/index.d.ts +11 -0
  823. package/dist/web/input/index.js +11 -0
  824. package/dist/web/input/keys.d.ts +48 -0
  825. package/dist/web/input/keys.js +189 -0
  826. package/dist/web/input/pointer.d.ts +56 -0
  827. package/dist/web/input/pointer.js +77 -0
  828. package/dist/web/input/touch.d.ts +61 -0
  829. package/dist/web/input/touch.js +83 -0
  830. package/dist/web/mermaid.d.ts +69 -0
  831. package/dist/web/mermaid.js +223 -0
  832. package/dist/web/paths.d.ts +16 -0
  833. package/dist/web/paths.js +27 -0
  834. package/dist/web/perf/heap.d.ts +42 -0
  835. package/dist/web/perf/heap.js +73 -0
  836. package/dist/web/perf/index.d.ts +14 -0
  837. package/dist/web/perf/index.js +14 -0
  838. package/dist/web/perf/layers.d.ts +98 -0
  839. package/dist/web/perf/layers.js +165 -0
  840. package/dist/web/perf/probe.d.ts +26 -0
  841. package/dist/web/perf/probe.js +123 -0
  842. package/dist/web/perf/profile.d.ts +53 -0
  843. package/dist/web/perf/profile.js +97 -0
  844. package/dist/web/perf/trace.d.ts +152 -0
  845. package/dist/web/perf/trace.js +429 -0
  846. package/dist/web/perf/view.d.ts +6 -0
  847. package/dist/web/perf/view.js +86 -0
  848. package/dist/web/perf/vitals.d.ts +141 -0
  849. package/dist/web/perf/vitals.js +175 -0
  850. package/dist/web/reader.d.ts +131 -0
  851. package/dist/web/reader.js +340 -0
  852. package/dist/web/screenshot.d.ts +50 -0
  853. package/dist/web/screenshot.js +108 -0
  854. package/dist/web/search.d.ts +49 -0
  855. package/dist/web/search.js +137 -0
  856. package/dist/web/session/artifacts.d.ts +32 -0
  857. package/dist/web/session/artifacts.js +47 -0
  858. package/dist/web/session/emulation.d.ts +118 -0
  859. package/dist/web/session/emulation.js +307 -0
  860. package/dist/web/session/recording.d.ts +51 -0
  861. package/dist/web/session/recording.js +64 -0
  862. package/dist/web/session/settling.d.ts +42 -0
  863. package/dist/web/session/settling.js +104 -0
  864. package/dist/web/session/shaping.d.ts +48 -0
  865. package/dist/web/session/shaping.js +113 -0
  866. package/dist/web/session/sourcemaps.d.ts +64 -0
  867. package/dist/web/session/sourcemaps.js +135 -0
  868. package/dist/web/session/telemetry.d.ts +219 -0
  869. package/dist/web/session/telemetry.js +486 -0
  870. package/dist/web/session/wires.d.ts +22 -0
  871. package/dist/web/session/wires.js +11 -0
  872. package/dist/web/session.d.ts +1153 -0
  873. package/dist/web/session.js +3400 -0
  874. package/dist/web/snapshot/deep.d.ts +36 -0
  875. package/dist/web/snapshot/deep.js +91 -0
  876. package/dist/web/snapshot/flatten.d.ts +101 -0
  877. package/dist/web/snapshot/flatten.js +131 -0
  878. package/dist/web/snapshot/index.d.ts +8 -0
  879. package/dist/web/snapshot/index.js +10 -0
  880. package/dist/web/snapshot/presented.d.ts +32 -0
  881. package/dist/web/snapshot/presented.js +74 -0
  882. package/dist/web/snapshot/query.d.ts +67 -0
  883. package/dist/web/snapshot/query.js +136 -0
  884. package/dist/web/sourcemap/index.d.ts +9 -0
  885. package/dist/web/sourcemap/index.js +9 -0
  886. package/dist/web/sourcemap/mappings.d.ts +111 -0
  887. package/dist/web/sourcemap/mappings.js +218 -0
  888. package/dist/web/styles/capture.d.ts +49 -0
  889. package/dist/web/styles/capture.js +85 -0
  890. package/dist/web/styles/cascade.d.ts +107 -0
  891. package/dist/web/styles/cascade.js +275 -0
  892. package/dist/web/styles/curation.d.ts +45 -0
  893. package/dist/web/styles/curation.js +282 -0
  894. package/dist/web/styles/index.d.ts +10 -0
  895. package/dist/web/styles/index.js +10 -0
  896. package/dist/web/target/index.d.ts +7 -0
  897. package/dist/web/target/index.js +7 -0
  898. package/dist/web/target/refusals.d.ts +59 -0
  899. package/dist/web/target/refusals.js +305 -0
  900. package/dist/web/target/target.d.ts +59 -0
  901. package/dist/web/target/target.js +94 -0
  902. package/dist/web/telemetry/buffer.d.ts +35 -0
  903. package/dist/web/telemetry/buffer.js +72 -0
  904. package/dist/web/telemetry/console.d.ts +127 -0
  905. package/dist/web/telemetry/console.js +217 -0
  906. package/dist/web/telemetry/dialogs.d.ts +41 -0
  907. package/dist/web/telemetry/dialogs.js +38 -0
  908. package/dist/web/telemetry/downloads.d.ts +42 -0
  909. package/dist/web/telemetry/downloads.js +65 -0
  910. package/dist/web/telemetry/failure.d.ts +31 -0
  911. package/dist/web/telemetry/failure.js +72 -0
  912. package/dist/web/telemetry/har.d.ts +97 -0
  913. package/dist/web/telemetry/har.js +227 -0
  914. package/dist/web/telemetry/index.d.ts +18 -0
  915. package/dist/web/telemetry/index.js +18 -0
  916. package/dist/web/telemetry/lifecycle.d.ts +69 -0
  917. package/dist/web/telemetry/lifecycle.js +120 -0
  918. package/dist/web/telemetry/network.d.ts +152 -0
  919. package/dist/web/telemetry/network.js +130 -0
  920. package/dist/web/telemetry/requests.d.ts +31 -0
  921. package/dist/web/telemetry/requests.js +119 -0
  922. package/dist/web/telemetry/sockets.d.ts +56 -0
  923. package/dist/web/telemetry/sockets.js +101 -0
  924. package/dist/web/telemetry/view.d.ts +16 -0
  925. package/dist/web/telemetry/view.js +125 -0
  926. package/dist/web/wait/conditions.d.ts +87 -0
  927. package/dist/web/wait/conditions.js +100 -0
  928. package/dist/web/wait/index.d.ts +6 -0
  929. package/dist/web/wait/index.js +6 -0
  930. package/dist/web/wait/settle.d.ts +54 -0
  931. package/dist/web/wait/settle.js +84 -0
  932. package/dist/work/ask.d.ts +45 -0
  933. package/dist/work/ask.js +85 -0
  934. package/dist/work/author.d.ts +61 -0
  935. package/dist/work/author.js +144 -0
  936. package/dist/work/broker.d.ts +151 -0
  937. package/dist/work/broker.js +165 -0
  938. package/dist/work/events.d.ts +98 -0
  939. package/dist/work/events.js +57 -0
  940. package/dist/work/history.d.ts +69 -0
  941. package/dist/work/history.js +174 -0
  942. package/dist/work/index.d.ts +49 -0
  943. package/dist/work/index.js +33 -0
  944. package/dist/work/inplay.d.ts +43 -0
  945. package/dist/work/inplay.js +42 -0
  946. package/dist/work/memory.d.ts +84 -0
  947. package/dist/work/memory.js +203 -0
  948. package/dist/work/objection.d.ts +92 -0
  949. package/dist/work/objection.js +72 -0
  950. package/dist/work/provider.d.ts +79 -0
  951. package/dist/work/provider.js +45 -0
  952. package/dist/work/providers/git.d.ts +29 -0
  953. package/dist/work/providers/git.js +87 -0
  954. package/dist/work/publish.d.ts +53 -0
  955. package/dist/work/publish.js +139 -0
  956. package/dist/work/rebase.d.ts +78 -0
  957. package/dist/work/rebase.js +261 -0
  958. package/dist/work/reclaim.d.ts +56 -0
  959. package/dist/work/reclaim.js +52 -0
  960. package/dist/work/register.d.ts +29 -0
  961. package/dist/work/register.js +41 -0
  962. package/dist/work/stack.d.ts +126 -0
  963. package/dist/work/stack.js +243 -0
  964. package/dist/work/stacks.d.ts +156 -0
  965. package/dist/work/stacks.js +524 -0
  966. package/dist/work/survey.d.ts +52 -0
  967. package/dist/work/survey.js +58 -0
  968. package/dist/work/tidy.d.ts +147 -0
  969. package/dist/work/tidy.js +136 -0
  970. package/dist/work/tree.d.ts +120 -0
  971. package/dist/work/tree.js +69 -0
  972. package/dist/work/unattended.d.ts +40 -0
  973. package/dist/work/unattended.js +57 -0
  974. package/package.json +145 -0
@@ -0,0 +1,298 @@
1
+ /**
2
+ * Reading changes from GitHub.
3
+ *
4
+ * GitHub says a merged pull request is `closed` with a
5
+ * `merged_at` timestamp, and calls a draft a state in one API
6
+ * and a flag in another. The neutral model says merged is its
7
+ * own state and draft is a flag, so the translation happens
8
+ * here, once, rather than in every caller that has to decide
9
+ * what `closed` meant.
10
+ */
11
+ import { run } from "../../../exec/index.js";
12
+ import { GHOST, githubChange, ownerRepoFromKey } from "./claims.js";
13
+ import { labelsAndAssignees } from "./fields.js";
14
+ import { landabilityFrom, QUEUE_QUERY, queueStateFrom } from "./queue.js";
15
+ /** Where a materialized change lands, so it is easy to spot. */
16
+ const LOCAL_REF_PREFIX = "refs/pi-review/github";
17
+ /** The `owner/repo` a ref belongs to, or a clear failure. */
18
+ function slugOf(repo) {
19
+ const owned = ownerRepoFromKey(repo.key);
20
+ if (!owned) {
21
+ throw new Error(`${repo.key} is not a GitHub repo key`);
22
+ }
23
+ return `${owned.owner}/${owned.repo}`;
24
+ }
25
+ function asRecord(value, what) {
26
+ if (typeof value !== "object" || value === null) {
27
+ throw new Error(`GitHub returned no ${what}`);
28
+ }
29
+ return value;
30
+ }
31
+ function str(value) {
32
+ return typeof value === "string" ? value : undefined;
33
+ }
34
+ function nested(value, key) {
35
+ const record = asRecord(value, "object");
36
+ const inner = record[key];
37
+ return typeof inner === "object" && inner !== null
38
+ ? inner
39
+ : {};
40
+ }
41
+ function num(value) {
42
+ return typeof value === "number" ? value : undefined;
43
+ }
44
+ /** Who acted, or the ghost GitHub attributes orphaned work to. */
45
+ function actorFrom(login) {
46
+ return { id: str(login) ?? GHOST };
47
+ }
48
+ /**
49
+ * How big the change is, from whichever of GitHub's spellings
50
+ * answered: REST says `changed_files`, GraphQL and the CLI say
51
+ * `changedFiles`.
52
+ *
53
+ * Each field is carried only when it is actually there. An
54
+ * unreported count and a count of zero are different facts, and a
55
+ * reader shown "0 files changed" would believe the wrong one.
56
+ */
57
+ function sizeOf(raw) {
58
+ const additions = num(raw.additions);
59
+ const deletions = num(raw.deletions);
60
+ const changedFiles = num(raw.changedFiles) ?? num(raw.changed_files);
61
+ return {
62
+ ...(additions !== undefined ? { additions } : {}),
63
+ ...(deletions !== undefined ? { deletions } : {}),
64
+ ...(changedFiles !== undefined ? { changedFiles } : {}),
65
+ };
66
+ }
67
+ /**
68
+ * GitHub's state plus its merge timestamp, as one state. A
69
+ * closed pull request that merged is merged; one that did not
70
+ * is closed.
71
+ */
72
+ function stateOf(raw) {
73
+ if (str(raw.merged_at))
74
+ return "merged";
75
+ const state = (str(raw.state) ?? "open").toLowerCase();
76
+ if (state === "merged")
77
+ return "merged";
78
+ return state === "closed" ? "closed" : "open";
79
+ }
80
+ /** One pull request from the REST representation. */
81
+ function proposalFromRest(repo, raw) {
82
+ const id = String(raw.number ?? "");
83
+ return {
84
+ ref: githubChange(repo, id),
85
+ title: str(raw.title) ?? "",
86
+ body: str(raw.body) ?? "",
87
+ state: stateOf(raw),
88
+ draft: raw.draft === true,
89
+ author: actorFrom(nested(raw, "user").login),
90
+ base: str(nested(raw, "base").ref) ?? "",
91
+ head: str(nested(raw, "head").ref) ?? "",
92
+ ...(str(nested(raw, "head").sha)
93
+ ? { headCommit: str(nested(raw, "head").sha) }
94
+ : {}),
95
+ ...(str(raw.created_at) ? { createdAt: str(raw.created_at) } : {}),
96
+ ...(str(raw.updated_at) ? { updatedAt: str(raw.updated_at) } : {}),
97
+ ...(str(raw.html_url) ? { url: str(raw.html_url) } : {}),
98
+ ...sizeOf(raw),
99
+ ...labelsAndAssignees(raw),
100
+ };
101
+ }
102
+ /**
103
+ * One pull request from `gh pr list --json`, which is neither
104
+ * REST nor GraphQL but a third spelling of the same thing.
105
+ */
106
+ function proposalFromListing(repo, raw) {
107
+ const id = String(raw.number ?? "");
108
+ const state = (str(raw.state) ?? "OPEN").toLowerCase();
109
+ return {
110
+ ref: githubChange(repo, id),
111
+ title: str(raw.title) ?? "",
112
+ body: str(raw.body) ?? "",
113
+ state: state === "merged" ? "merged" : state === "closed" ? "closed" : "open",
114
+ draft: raw.isDraft === true,
115
+ author: actorFrom(nested(raw, "author").login),
116
+ base: str(raw.baseRefName) ?? "",
117
+ head: str(raw.headRefName) ?? "",
118
+ ...(str(raw.url) ? { url: str(raw.url) } : {}),
119
+ ...sizeOf(raw),
120
+ ...labelsAndAssignees(raw),
121
+ };
122
+ }
123
+ /** One check's state, from either of GitHub's two shapes. */
124
+ function checkStateOf(raw) {
125
+ // Check runs report status plus conclusion; legacy statuses
126
+ // report a single state.
127
+ const status = (str(raw.status) ?? "").toUpperCase();
128
+ const conclusion = (str(raw.conclusion) ?? "").toUpperCase();
129
+ const legacy = (str(raw.state) ?? "").toUpperCase();
130
+ if (status && status !== "COMPLETED")
131
+ return "pending";
132
+ const outcome = conclusion || legacy;
133
+ if (!outcome)
134
+ return "unreported";
135
+ if (["SUCCESS", "NEUTRAL"].includes(outcome))
136
+ return "passing";
137
+ if (["SKIPPED"].includes(outcome))
138
+ return "skipped";
139
+ if (["PENDING", "EXPECTED", "QUEUED"].includes(outcome))
140
+ return "pending";
141
+ return "failing";
142
+ }
143
+ /** Roll checks up, keeping unreported apart from failing. */
144
+ function rollUp(checks) {
145
+ if (checks.length === 0)
146
+ return "unreported";
147
+ if (checks.some((check) => check.state === "failing"))
148
+ return "failing";
149
+ if (checks.some((check) => check.state === "pending"))
150
+ return "pending";
151
+ if (checks.some((check) => check.state === "unreported"))
152
+ return "pending";
153
+ return "passing";
154
+ }
155
+ /** Build the proposals facet. */
156
+ export function githubProposals(exec) {
157
+ async function json(args, what) {
158
+ const stdout = await run(exec, "gh", args, what);
159
+ return JSON.parse(stdout);
160
+ }
161
+ /**
162
+ * Where the change stands with a merge queue, or nothing.
163
+ *
164
+ * A second call, and a GraphQL one, because REST does not carry the
165
+ * queue and neither does `gh pr view --json`. Both were checked
166
+ * against the live API rather than assumed.
167
+ *
168
+ * Failure is swallowed on purpose, and this is the one place in the
169
+ * provider where that is right: the queue is an extra fact about a
170
+ * change, and a token that cannot run GraphQL, or a GitHub instance
171
+ * too old to have merge queues, must still be able to read the change
172
+ * itself. An absent queue reads as unknown downstream, which permits
173
+ * the mutation, so guessing wrong here costs a gate that does not fire
174
+ * rather than one that fires wrongly.
175
+ */
176
+ /**
177
+ * The two things only GraphQL will say: where the change stands with the
178
+ * queue, and whether it could land. One query for both, since they come
179
+ * from the same node and a second round trip would buy nothing.
180
+ */
181
+ async function standingOf(repo, id) {
182
+ const owned = ownerRepoFromKey(repo.key);
183
+ if (!owned)
184
+ return {};
185
+ const number = Number(id);
186
+ if (!Number.isInteger(number))
187
+ return {};
188
+ try {
189
+ const raw = await json([
190
+ "api",
191
+ "graphql",
192
+ "-f",
193
+ `query=${QUEUE_QUERY}`,
194
+ "-F",
195
+ `owner=${owned.owner}`,
196
+ "-F",
197
+ `name=${owned.repo}`,
198
+ "-F",
199
+ `number=${number}`,
200
+ ], `reading where pull request ${id} stands`);
201
+ const landing = landabilityFrom(raw);
202
+ return {
203
+ queue: queueStateFrom(raw),
204
+ ...(landing === undefined ? {} : { landing }),
205
+ };
206
+ }
207
+ catch {
208
+ // Neither is worth failing a read of the change over: both are
209
+ // decoration on a proposal that was fetched successfully, and a
210
+ // caller can tell unreported from clear.
211
+ return {};
212
+ }
213
+ }
214
+ return {
215
+ async fetch(ref) {
216
+ const raw = await json(["api", `repos/${slugOf(ref.repo)}/pulls/${ref.id}`], `reading pull request ${ref.id}`);
217
+ const proposal = proposalFromRest(ref.repo, asRecord(raw, "pull request"));
218
+ return { ...proposal, ...(await standingOf(ref.repo, ref.id)) };
219
+ },
220
+ async diff(ref) {
221
+ return run(exec, "gh", ["pr", "diff", ref.id, "--repo", slugOf(ref.repo)], `reading the diff of pull request ${ref.id}`);
222
+ },
223
+ async checks(ref) {
224
+ const raw = await json([
225
+ "pr",
226
+ "view",
227
+ ref.id,
228
+ "--repo",
229
+ slugOf(ref.repo),
230
+ "--json",
231
+ "statusCheckRollup",
232
+ ], `reading checks on pull request ${ref.id}`);
233
+ const rollup = asRecord(raw, "checks").statusCheckRollup;
234
+ const entries = Array.isArray(rollup) ? rollup : [];
235
+ const checks = entries.map((entry) => {
236
+ const record = asRecord(entry, "check");
237
+ const name = str(record.name) ?? str(record.context) ?? "unnamed check";
238
+ const url = str(record.detailsUrl) ?? str(record.targetUrl);
239
+ return {
240
+ name,
241
+ state: checkStateOf(record),
242
+ ...(url ? { url } : {}),
243
+ };
244
+ });
245
+ return { state: rollUp(checks), checks };
246
+ },
247
+ async list(repo, filter) {
248
+ const args = ["pr", "list", "--repo", slugOf(repo), "--json"];
249
+ args.push("number,title,body,state,isDraft,author,baseRefName,headRefName,url," +
250
+ // Free in the same call, and a listing is exactly where
251
+ // knowing which change is the big one earns its keep.
252
+ "additions,deletions,changedFiles");
253
+ if (filter.state)
254
+ args.push("--state", filter.state);
255
+ if (filter.author)
256
+ args.push("--author", filter.author);
257
+ if (filter.base)
258
+ args.push("--base", filter.base);
259
+ if (filter.head)
260
+ args.push("--head", filter.head);
261
+ if (filter.limit !== undefined)
262
+ args.push("--limit", String(filter.limit));
263
+ const raw = await json(args, "listing pull requests");
264
+ const entries = Array.isArray(raw) ? raw : [];
265
+ return entries.map((entry) => proposalFromListing(repo, asRecord(entry, "pull request")));
266
+ },
267
+ async fileAt(ref, path, at) {
268
+ const raw = await json([
269
+ "api",
270
+ `repos/${slugOf(ref.repo)}/contents/${path}?ref=${encodeURIComponent(at)}`,
271
+ ], `reading ${path} at ${at}`);
272
+ const answer = asRecord(raw, `contents of ${path}`);
273
+ const encoded = answer.content;
274
+ if (typeof encoded !== "string" || encoded.trim() === "") {
275
+ // A directory answers with an array, and a file too large
276
+ // for this route answers with an empty content field.
277
+ // Returning "" for either would look like an empty file.
278
+ throw new Error(`${path} at ${at} came back with no content, so it is not a file this route can serve.`);
279
+ }
280
+ // The encoding arrives wrapped at a fixed column, so the
281
+ // payload contains newlines that are not part of it.
282
+ return Buffer.from(encoded.replace(/\s+/g, ""), "base64").toString("utf8");
283
+ },
284
+ async fetchAsRef(ref, repoRoot) {
285
+ const local = `${LOCAL_REF_PREFIX}/${ref.id}`;
286
+ const remote = ref.repo.remoteUrl ?? "origin";
287
+ await run(exec, "git", [
288
+ "-C",
289
+ repoRoot,
290
+ "fetch",
291
+ "--force",
292
+ remote,
293
+ `pull/${ref.id}/head:${local}`,
294
+ ], `fetching pull request ${ref.id}`);
295
+ return local;
296
+ },
297
+ };
298
+ }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Where GitHub says a pull request stands with a merge queue.
3
+ *
4
+ * The queue is not on the REST representation and not among the fields
5
+ * `gh pr view --json` offers, so this is the one place the GitHub
6
+ * provider has to ask GraphQL. Both facts were checked against a live
7
+ * API rather than assumed: `gh pr view --json` lists `autoMergeRequest`
8
+ * and `mergeStateStatus` and nothing else queue-shaped, and
9
+ * `MergeQueueEntry` exists only on the GraphQL `PullRequest`.
10
+ *
11
+ * GitHub's own vocabulary turned out to be sharper than the neutral
12
+ * model's first draft. `MergeQueueEntryState` distinguishes
13
+ * `AWAITING_CHECKS` from `QUEUED`, and `MergeQueueEntry.solo` says
14
+ * whether the change is being tested by itself or batched with others.
15
+ * That last one is the difference between ejecting one change's checks
16
+ * and ejecting a batch's, which is the whole reason a caller asks.
17
+ */
18
+ import type { Landability } from "../../landing.js";
19
+ import type { QueueState } from "../../queue.js";
20
+ /** The GraphQL selection this module reads. */
21
+ export declare const QUEUE_QUERY = "query($owner:String!,$name:String!,$number:Int!){\n repository(owner:$owner,name:$name){\n pullRequest(number:$number){\n isInMergeQueue\n autoMergeRequest{enabledAt}\n mergeQueueEntry{state position solo}\n reviewDecision\n mergeStateStatus\n mergeable\n }\n }\n}";
22
+ /**
23
+ * Where GitHub says the change stands with landing.
24
+ *
25
+ * Read from the query the queue already runs, so it costs nothing extra. Three fields
26
+ * rather than one, because GitHub splits the question the same way this model does:
27
+ * `reviewDecision` is the people, `mergeStateStatus` is the checks and the base, and
28
+ * `mergeable` is whether the trees still agree.
29
+ *
30
+ * `BLOCKED` deliberately does not become `failingRequiredCheck`. It means a required
31
+ * status has not passed, which covers one that has not run as well as one that failed, and
32
+ * naming a check as failing when it merely has not started sends somebody to read a log
33
+ * that does not exist. The word itself is passed through instead.
34
+ */
35
+ export declare function landabilityFrom(raw: unknown): Landability | undefined;
36
+ /**
37
+ * Translate GitHub's answer into the neutral queue state.
38
+ *
39
+ * Three sources, in order of how much they cost to be wrong about.
40
+ * A merge queue entry is authoritative and detailed. Failing that, an
41
+ * auto-merge request means somebody has asked for this to land and the
42
+ * backend is waiting, which is the `waiting` posture rather than the
43
+ * `queued` one: nothing is batched, so nothing else gets ejected.
44
+ * Failing both, the change is not queued.
45
+ */
46
+ export declare function queueStateFrom(raw: unknown): QueueState;
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Where GitHub says a pull request stands with a merge queue.
3
+ *
4
+ * The queue is not on the REST representation and not among the fields
5
+ * `gh pr view --json` offers, so this is the one place the GitHub
6
+ * provider has to ask GraphQL. Both facts were checked against a live
7
+ * API rather than assumed: `gh pr view --json` lists `autoMergeRequest`
8
+ * and `mergeStateStatus` and nothing else queue-shaped, and
9
+ * `MergeQueueEntry` exists only on the GraphQL `PullRequest`.
10
+ *
11
+ * GitHub's own vocabulary turned out to be sharper than the neutral
12
+ * model's first draft. `MergeQueueEntryState` distinguishes
13
+ * `AWAITING_CHECKS` from `QUEUED`, and `MergeQueueEntry.solo` says
14
+ * whether the change is being tested by itself or batched with others.
15
+ * That last one is the difference between ejecting one change's checks
16
+ * and ejecting a batch's, which is the whole reason a caller asks.
17
+ */
18
+ /** The GraphQL selection this module reads. */
19
+ export const QUEUE_QUERY = `query($owner:String!,$name:String!,$number:Int!){
20
+ repository(owner:$owner,name:$name){
21
+ pullRequest(number:$number){
22
+ isInMergeQueue
23
+ autoMergeRequest{enabledAt}
24
+ mergeQueueEntry{state position solo}
25
+ reviewDecision
26
+ mergeStateStatus
27
+ mergeable
28
+ }
29
+ }
30
+ }`;
31
+ function record(value) {
32
+ return typeof value === "object" && value !== null
33
+ ? value
34
+ : {};
35
+ }
36
+ /**
37
+ * Where GitHub says the change stands with landing.
38
+ *
39
+ * Read from the query the queue already runs, so it costs nothing extra. Three fields
40
+ * rather than one, because GitHub splits the question the same way this model does:
41
+ * `reviewDecision` is the people, `mergeStateStatus` is the checks and the base, and
42
+ * `mergeable` is whether the trees still agree.
43
+ *
44
+ * `BLOCKED` deliberately does not become `failingRequiredCheck`. It means a required
45
+ * status has not passed, which covers one that has not run as well as one that failed, and
46
+ * naming a check as failing when it merely has not started sends somebody to read a log
47
+ * that does not exist. The word itself is passed through instead.
48
+ */
49
+ export function landabilityFrom(raw) {
50
+ const pull = record(record(record(record(raw).data).repository).pullRequest);
51
+ const decision = typeof pull.reviewDecision === "string" ? pull.reviewDecision : undefined;
52
+ const status = typeof pull.mergeStateStatus === "string"
53
+ ? pull.mergeStateStatus
54
+ : undefined;
55
+ const mergeable = typeof pull.mergeable === "string" ? pull.mergeable : undefined;
56
+ if (decision === undefined &&
57
+ status === undefined &&
58
+ mergeable === undefined) {
59
+ return undefined;
60
+ }
61
+ return {
62
+ ...(status === undefined ? {} : { reason: status.toLowerCase() }),
63
+ ...(decision === undefined
64
+ ? {}
65
+ : {
66
+ approved: decision === "APPROVED",
67
+ changesRequested: decision === "CHANGES_REQUESTED",
68
+ }),
69
+ ...(mergeable === undefined
70
+ ? {}
71
+ : { conflicted: mergeable === "CONFLICTING" }),
72
+ };
73
+ }
74
+ /**
75
+ * Whether an entry's state means the queue is still waiting on checks.
76
+ *
77
+ * `AWAITING_CHECKS` is GitHub testing the batch and not yet ready to
78
+ * land it. The others (`QUEUED`, `MERGEABLE`, `LOCKED`, `UNMERGEABLE`)
79
+ * all mean the entry is holding a place, which is the expensive posture.
80
+ */
81
+ function awaitingChecks(state) {
82
+ return state === "AWAITING_CHECKS";
83
+ }
84
+ /**
85
+ * Translate GitHub's answer into the neutral queue state.
86
+ *
87
+ * Three sources, in order of how much they cost to be wrong about.
88
+ * A merge queue entry is authoritative and detailed. Failing that, an
89
+ * auto-merge request means somebody has asked for this to land and the
90
+ * backend is waiting, which is the `waiting` posture rather than the
91
+ * `queued` one: nothing is batched, so nothing else gets ejected.
92
+ * Failing both, the change is not queued.
93
+ */
94
+ export function queueStateFrom(raw) {
95
+ // The `data` envelope is part of the answer, not something a caller
96
+ // should have to strip: `gh api graphql` returns it unless it is given
97
+ // a `--jq`, and a reader that quietly accepted either shape would read
98
+ // an unwrapped answer as unqueued rather than saying so.
99
+ const pull = record(record(record(record(raw).data).repository).pullRequest);
100
+ const entry = pull.mergeQueueEntry;
101
+ if (entry !== null && entry !== undefined) {
102
+ const held = record(entry);
103
+ const state = typeof held.state === "string" ? held.state : undefined;
104
+ return {
105
+ posture: awaitingChecks(state) ? "waiting" : "queued",
106
+ ...(typeof held.solo === "boolean" ? { solo: held.solo } : {}),
107
+ ...(typeof held.position === "number" ? { position: held.position } : {}),
108
+ ...(state ? { detail: `merge queue entry is ${state}` } : {}),
109
+ };
110
+ }
111
+ // A queue entry is the only thing that batches, so auto-merge on its
112
+ // own is the cheaper hazard: the checks already ran and will not run
113
+ // again, but nobody else's work is riding on this one.
114
+ if (record(pull.autoMergeRequest).enabledAt !== undefined) {
115
+ return {
116
+ posture: "waiting",
117
+ solo: true,
118
+ detail: "auto-merge is enabled and the backend is waiting on checks",
119
+ };
120
+ }
121
+ return { posture: "unqueued" };
122
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Deriving a stack from GitHub, which records none.
3
+ *
4
+ * GitHub knows only each pull request's base and head branch
5
+ * names, so a stack has to be inferred by matching one
6
+ * request's base against another's head. That inference is
7
+ * wrong at the edges by construction: a merged parent
8
+ * disappears from the open listing and the chain simply ends,
9
+ * a renamed branch breaks the link, and two forks can use the
10
+ * same branch name. This is why every stack reports its
11
+ * provenance, and why this one always reports `derived`.
12
+ *
13
+ * The walk follows fan-out downwards, because a branch with two
14
+ * children is a real shape people build and reporting only one
15
+ * of them would be a lie of omission.
16
+ */
17
+ import type { Exec } from "../../../exec/index.js";
18
+ import type { StackingFacet } from "../../provider.js";
19
+ /** Build the stacking facet. */
20
+ export declare function githubStacking(exec: Exec): StackingFacet;
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Deriving a stack from GitHub, which records none.
3
+ *
4
+ * GitHub knows only each pull request's base and head branch
5
+ * names, so a stack has to be inferred by matching one
6
+ * request's base against another's head. That inference is
7
+ * wrong at the edges by construction: a merged parent
8
+ * disappears from the open listing and the chain simply ends,
9
+ * a renamed branch breaks the link, and two forks can use the
10
+ * same branch name. This is why every stack reports its
11
+ * provenance, and why this one always reports `derived`.
12
+ *
13
+ * The walk follows fan-out downwards, because a branch with two
14
+ * children is a real shape people build and reporting only one
15
+ * of them would be a lie of omission.
16
+ */
17
+ import { githubProposals } from "./proposals.js";
18
+ /** How far to walk in each direction before giving up. */
19
+ const MAX_DEPTH = 8;
20
+ /** Build the stacking facet. */
21
+ export function githubStacking(exec) {
22
+ const proposals = githubProposals(exec);
23
+ /** The single open change whose head is this branch. */
24
+ async function byHead(ref, branch) {
25
+ const found = await proposals.list?.(ref.repo, {
26
+ state: "open",
27
+ head: branch,
28
+ });
29
+ return found?.[0];
30
+ }
31
+ /** Every open change based on this branch. */
32
+ async function byBase(ref, branch) {
33
+ return ((await proposals.list?.(ref.repo, { state: "open", base: branch })) ?? []);
34
+ }
35
+ return {
36
+ async stack(subject) {
37
+ if (!("id" in subject)) {
38
+ throw new Error("the GitHub provider derives a stack from a pull request, not a bare branch");
39
+ }
40
+ const cursorProposal = await proposals.fetch(subject);
41
+ // Upwards: follow base to the change whose head it is.
42
+ const seen = new Set([cursorProposal.head]);
43
+ const ancestors = [];
44
+ let climbing = cursorProposal.base;
45
+ for (let depth = 0; depth < MAX_DEPTH; depth++) {
46
+ const parent = await byHead(subject, climbing);
47
+ if (!parent || seen.has(parent.head))
48
+ break;
49
+ seen.add(parent.head);
50
+ ancestors.unshift(parent);
51
+ climbing = parent.base;
52
+ }
53
+ // Downwards: every change based on a branch we hold,
54
+ // breadth first, so a fan-out reports both sides.
55
+ const descendants = [];
56
+ let frontier = [cursorProposal.head];
57
+ for (let depth = 0; depth < MAX_DEPTH && frontier.length > 0; depth++) {
58
+ const next = [];
59
+ for (const branch of frontier) {
60
+ for (const child of await byBase(subject, branch)) {
61
+ if (seen.has(child.head))
62
+ continue;
63
+ seen.add(child.head);
64
+ descendants.push({ proposal: child, parent: branch });
65
+ next.push(child.head);
66
+ }
67
+ }
68
+ frontier = next;
69
+ }
70
+ const ordered = [];
71
+ ancestors.forEach((proposal, index) => {
72
+ const parent = index === 0 ? undefined : ancestors[index - 1].head;
73
+ ordered.push({
74
+ ref: proposal.head,
75
+ ...(parent ? { parent } : {}),
76
+ ...(proposal.headCommit ? { headCommit: proposal.headCommit } : {}),
77
+ proposal,
78
+ });
79
+ });
80
+ const cursor = ordered.length;
81
+ const cursorParent = ancestors.at(-1)?.head;
82
+ ordered.push({
83
+ ref: cursorProposal.head,
84
+ ...(cursorParent ? { parent: cursorParent } : {}),
85
+ ...(cursorProposal.headCommit
86
+ ? { headCommit: cursorProposal.headCommit }
87
+ : {}),
88
+ proposal: cursorProposal,
89
+ });
90
+ for (const { proposal, parent } of descendants) {
91
+ ordered.push({
92
+ ref: proposal.head,
93
+ parent,
94
+ ...(proposal.headCommit ? { headCommit: proposal.headCommit } : {}),
95
+ proposal,
96
+ });
97
+ }
98
+ const trunk = ancestors[0]?.base ?? cursorProposal.base;
99
+ return {
100
+ provenance: "derived",
101
+ trunk,
102
+ nodes: ordered,
103
+ cursor,
104
+ };
105
+ },
106
+ };
107
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Where a change stands with a merge queue, and what that costs.
3
+ *
4
+ * This exists because the substrate had the refusal and not the fact. An
5
+ * authoring intent could carry `enqueued: true` and be refused for it,
6
+ * but nothing ever read the queue from a provider, so the gate was
7
+ * unreachable and every mutation went through.
8
+ */
9
+ /** How far along a queue a change is. */
10
+ export type QueuePosture = "unqueued" | "waiting" | "queued";
11
+ /** What the backend says about a change's place in a queue. */
12
+ export interface QueueState {
13
+ posture: QueuePosture;
14
+ /** Whether the backend is testing it alone rather than with others. */
15
+ solo?: boolean;
16
+ /** Place in the queue, 1-based, when the backend counts. */
17
+ position?: number;
18
+ /** What the backend said, verbatim, for a refusal to quote. */
19
+ detail?: string;
20
+ }
21
+ /** A refusal, in the shape the authoring gate wants. */
22
+ export interface QueueRefusal {
23
+ reason: string;
24
+ instead: string;
25
+ }
26
+ /**
27
+ * Why a mutation should not happen right now, or nothing.
28
+ *
29
+ * Two hazards, deliberately answered separately, because they have
30
+ * different fixes and a message covering both would name neither.
31
+ *
32
+ * A queued change ejects when it changes, and takes everything
33
+ * speculatively batched with it. That is the expensive one, and it is
34
+ * only expensive when the change is batched, so `solo` is respected: a
35
+ * refusal that claims hundreds of jobs for a change being tested alone
36
+ * teaches the reader to stop believing refusals.
37
+ *
38
+ * A waiting change has a subtler problem. The checks ran once, when it
39
+ * was marked ready, and a later commit does not retrigger them. So a
40
+ * mutation does not eject anything; it strands the change with results
41
+ * that describe code nobody has now.
42
+ */
43
+ export declare function queueRefusal(queue: QueueState | undefined, providerId: string): QueueRefusal | undefined;