@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,133 @@
1
+ /**
2
+ * What bounds one reviewer's run, and which bound does which job.
3
+ *
4
+ * Two clocks answering two different questions, which is the whole
5
+ * point of the file. Is this reviewer wedged, which is liveness, and
6
+ * has it run long enough, which is a budget. One clock cannot answer
7
+ * both, and using the wall clock to answer the first is what killed
8
+ * working reviewers in six consecutive rounds.
9
+ *
10
+ * Separate from reading a reviewer's outcome because this is the half
11
+ * that consults config, and because a new knob here has nothing to do
12
+ * with a new terminal state there.
13
+ */
14
+ import type { AskLimit, AskStop, Participant } from "./index.js";
15
+ /**
16
+ * How long a reviewer may run before something stops it regardless.
17
+ *
18
+ * A backstop, not a budget. It exists for a reviewer that nothing else
19
+ * will stop, and it is deliberately no tighter than the runner's own
20
+ * default, because the review path knows nothing the runner does not
21
+ * about how long honest work takes. The previous value was fifteen
22
+ * minutes, chosen against a two-and-a-half-minute observation and
23
+ * living in the panel module, and it killed working reviewers in six
24
+ * consecutive rounds.
25
+ *
26
+ * Held equal to the pi adapter's subagent runner default
27
+ * (`DEFAULT_RUN_PI_TIMEOUT_MS`), which is host-coupled and stays in
28
+ * the adapter; this module has no subagent runner of its own to defer
29
+ * to, so the number is inlined rather than imported.
30
+ */
31
+ export declare const REVIEWER_BACKSTOP_MS: number;
32
+ /**
33
+ * How long a reviewer may say nothing at all before it is wedged.
34
+ *
35
+ * This is the guard that actually earns its keep, and the reason a
36
+ * generous backstop is safe. It fires on silence rather than on
37
+ * effort, so it cannot punish a reviewer for having a lot to read.
38
+ *
39
+ * Held at the supervisor's own default rather than tightened: a
40
+ * reviewer thinking hard against a large diff goes quiet for minutes,
41
+ * and shortening this would recreate the bug in a different clock.
42
+ */
43
+ export declare const REVIEWER_IDLE_MS: number;
44
+ /**
45
+ * How much of the backstop is kept back for the answer.
46
+ *
47
+ * The third clock, and the only one that is not a limit. The other
48
+ * two decide when a reviewer has to stop; this one decides when it is
49
+ * asked to finish, which is a different question and a kinder one.
50
+ *
51
+ * Five minutes out of forty-five, because a wrap-up is a reviewer
52
+ * writing down what it already knows rather than doing any more work.
53
+ * Larger would buy nothing and would take real investigation time to
54
+ * pay for it.
55
+ *
56
+ * Held equal to the pi adapter's subagent wrap-up default
57
+ * (`WRAP_UP_TIMEOUT_MS`), inlined for the same reason as the backstop
58
+ * above.
59
+ */
60
+ export declare const REVIEWER_ANSWER_MS: number;
61
+ /** What bounds one reviewer's run. */
62
+ export interface ReviewerBudget {
63
+ timeoutMs: number;
64
+ idleTimeoutMs: number;
65
+ /** Kept back out of `timeoutMs` so the answer can be asked for. */
66
+ wrapUpReserveMs: number;
67
+ }
68
+ /**
69
+ * The clocks a limit can be measured against.
70
+ *
71
+ * Narrower than the whole budget on purpose. Judging a retry needs
72
+ * the two numbers a limit can run out of and nothing else, and asking
73
+ * for the full budget would make every caller invent a reserve it has
74
+ * no opinion about just to ask the question.
75
+ */
76
+ export type ReviewerClocks = Pick<ReviewerBudget, "timeoutMs" | "idleTimeoutMs"> & Partial<Pick<ReviewerBudget, "wrapUpReserveMs">>;
77
+ /**
78
+ * The clock a limit ran out of, where it is a clock at all.
79
+ *
80
+ * Shared with whatever records a stop, so the two cannot disagree
81
+ * about which number belongs to which limit. They were written twice
82
+ * and nothing joined them up.
83
+ */
84
+ export declare function budgetForLimit(limit: AskLimit, budget: ReviewerClocks): number | undefined;
85
+ /**
86
+ * Why asking this participant again would end the same way.
87
+ *
88
+ * A reviewer stopped by a clock will be stopped by that clock again if
89
+ * nothing about it has moved, and the evidence is not ambiguous: every
90
+ * failed retry in the round that prompted this work ran for 15.03
91
+ * minutes and died identically. Three of them, at full price, to learn
92
+ * what the first one had already said.
93
+ *
94
+ * So the refusal carries the number and the key that holds it. A
95
+ * refusal that only says no leaves somebody hunting for the knob, and
96
+ * the likeliest outcome of that is running the same retry again.
97
+ *
98
+ * Silent where it cannot know: an old round recorded no budget, and
99
+ * refusing on a number nobody has would block every retry of every
100
+ * round recorded before this existed.
101
+ */
102
+ export declare function retryWouldRepeat(stopped: AskStop | undefined, budget: ReviewerClocks, keptBy?: string): string | undefined;
103
+ /**
104
+ * What bounds this one participant, given what bounds the round.
105
+ *
106
+ * One number for a whole fan-out has to be sized for its slowest
107
+ * member, so a roster mixing a small fast model with a large one at
108
+ * high thinking either holds slots the fast reviewers do not need or
109
+ * cuts the slow one off mid-thought. That is the shape of the incident
110
+ * this whole workstream came out of: the rounds that ran past fifteen
111
+ * minutes lost two, three, six and seven reviewers, and the eight
112
+ * minute rounds beside them lost none.
113
+ *
114
+ * Each clock on its own, because the three answer three different
115
+ * questions and a participant with a lot to read needs the wall moved
116
+ * and not the liveness guard.
117
+ */
118
+ export declare function boundsFor(participant: Participant, round: ReviewerBudget): ReviewerBudget;
119
+ /**
120
+ * What bounds a round, taking any override from config.
121
+ *
122
+ * The fix for a bad constant is not a better constant. Both numbers
123
+ * are guesses about somebody else's hardware, model and diff, so they
124
+ * are overridable without patching source; a value that could not be
125
+ * used is ignored rather than honoured, because a typo that produced a
126
+ * zero budget would stop every reviewer the instant it started.
127
+ *
128
+ * This one is ignored rather than refused because it is read on the
129
+ * way into a round that is about to run, where the alternative to a
130
+ * default is no council at all. A participant's own clocks are read at
131
+ * config time with nothing yet spent, so those are refused instead.
132
+ */
133
+ export declare function reviewerBudget(section: unknown): ReviewerBudget;
@@ -0,0 +1,278 @@
1
+ /**
2
+ * What bounds one reviewer's run, and which bound does which job.
3
+ *
4
+ * Two clocks answering two different questions, which is the whole
5
+ * point of the file. Is this reviewer wedged, which is liveness, and
6
+ * has it run long enough, which is a budget. One clock cannot answer
7
+ * both, and using the wall clock to answer the first is what killed
8
+ * working reviewers in six consecutive rounds.
9
+ *
10
+ * Separate from reading a reviewer's outcome because this is the half
11
+ * that consults config, and because a new knob here has nothing to do
12
+ * with a new terminal state there.
13
+ */
14
+ import { CLOCK_FLOOR_MS } from "../clock/index.js";
15
+ /**
16
+ * How long a reviewer may run before something stops it regardless.
17
+ *
18
+ * A backstop, not a budget. It exists for a reviewer that nothing else
19
+ * will stop, and it is deliberately no tighter than the runner's own
20
+ * default, because the review path knows nothing the runner does not
21
+ * about how long honest work takes. The previous value was fifteen
22
+ * minutes, chosen against a two-and-a-half-minute observation and
23
+ * living in the panel module, and it killed working reviewers in six
24
+ * consecutive rounds.
25
+ *
26
+ * Held equal to the pi adapter's subagent runner default
27
+ * (`DEFAULT_RUN_PI_TIMEOUT_MS`), which is host-coupled and stays in
28
+ * the adapter; this module has no subagent runner of its own to defer
29
+ * to, so the number is inlined rather than imported.
30
+ */
31
+ export const REVIEWER_BACKSTOP_MS = 45 * 60 * 1000;
32
+ /**
33
+ * How long a reviewer may say nothing at all before it is wedged.
34
+ *
35
+ * This is the guard that actually earns its keep, and the reason a
36
+ * generous backstop is safe. It fires on silence rather than on
37
+ * effort, so it cannot punish a reviewer for having a lot to read.
38
+ *
39
+ * Held at the supervisor's own default rather than tightened: a
40
+ * reviewer thinking hard against a large diff goes quiet for minutes,
41
+ * and shortening this would recreate the bug in a different clock.
42
+ */
43
+ export const REVIEWER_IDLE_MS = 15 * 60 * 1000;
44
+ /**
45
+ * How much of the backstop is kept back for the answer.
46
+ *
47
+ * The third clock, and the only one that is not a limit. The other
48
+ * two decide when a reviewer has to stop; this one decides when it is
49
+ * asked to finish, which is a different question and a kinder one.
50
+ *
51
+ * Five minutes out of forty-five, because a wrap-up is a reviewer
52
+ * writing down what it already knows rather than doing any more work.
53
+ * Larger would buy nothing and would take real investigation time to
54
+ * pay for it.
55
+ *
56
+ * Held equal to the pi adapter's subagent wrap-up default
57
+ * (`WRAP_UP_TIMEOUT_MS`), inlined for the same reason as the backstop
58
+ * above.
59
+ */
60
+ export const REVIEWER_ANSWER_MS = 5 * 60 * 1000;
61
+ /**
62
+ * Which budget a limit is measured against, when it is one at all.
63
+ *
64
+ * Cancelled and parent-exit end a reviewer without any clock running
65
+ * out, so there is no number to compare and asking again is the right
66
+ * thing to do.
67
+ */
68
+ const MEASURED_BY = {
69
+ "wall-clock": { of: "timeoutMs", named: "backstopMs" },
70
+ idle: { of: "idleTimeoutMs", named: "idleMs" },
71
+ };
72
+ /**
73
+ * Where the soft deadline actually landed.
74
+ *
75
+ * Not in the table above, because it is the one limit that is not a
76
+ * clock somebody set: it is the difference between two of them. Read
77
+ * off `timeoutMs` alone it reported the backstop, so a reviewer
78
+ * stopped at forty minutes was recorded as having hit forty-five, and
79
+ * the refusal that quotes the number told the reader to raise a
80
+ * budget the reviewer never reached.
81
+ *
82
+ * Two knobs move it, so the refusal names both.
83
+ */
84
+ const SOFT = { named: "answerMs or backstopMs" };
85
+ /** The moment a soft deadline falls, given the clocks around it. */
86
+ function softDeadlineAt(budget) {
87
+ const reserve = budget.wrapUpReserveMs;
88
+ if (reserve === undefined || reserve <= 0)
89
+ return undefined;
90
+ const at = budget.timeoutMs - reserve;
91
+ return at > 0 ? at : undefined;
92
+ }
93
+ /**
94
+ * The clock a limit ran out of, where it is a clock at all.
95
+ *
96
+ * Shared with whatever records a stop, so the two cannot disagree
97
+ * about which number belongs to which limit. They were written twice
98
+ * and nothing joined them up.
99
+ */
100
+ export function budgetForLimit(limit, budget) {
101
+ if (limit === "soft-deadline")
102
+ return softDeadlineAt(budget);
103
+ const measure = MEASURED_BY[limit];
104
+ return measure === undefined ? undefined : budget[measure.of];
105
+ }
106
+ /**
107
+ * Limits that will land in the same place if nothing changes.
108
+ *
109
+ * A wall clock is arithmetic: a reviewer that ran to the wall runs to
110
+ * it again, and the incident's failed retries all took 15.03 minutes
111
+ * to prove it. An idle clock is not. It fires when a reviewer went
112
+ * quiet, which is a hang, a slow tool, a provider stalling: things
113
+ * that may simply not happen twice. Refusing that retry blocks the
114
+ * one most likely to work, so it is allowed even though the number
115
+ * has not moved.
116
+ */
117
+ const REPEATS = new Set([
118
+ "wall-clock",
119
+ // Arithmetic for the same reason a wall clock is, and derived
120
+ // from it: a reviewer asked to wrap up at forty minutes will be
121
+ // asked again at forty minutes. Left out, a round of seven soft
122
+ // deadlines would offer seven retries that all end identically,
123
+ // which is the bill this work exists to stop paying.
124
+ "soft-deadline",
125
+ ]);
126
+ /**
127
+ * Why asking this participant again would end the same way.
128
+ *
129
+ * A reviewer stopped by a clock will be stopped by that clock again if
130
+ * nothing about it has moved, and the evidence is not ambiguous: every
131
+ * failed retry in the round that prompted this work ran for 15.03
132
+ * minutes and died identically. Three of them, at full price, to learn
133
+ * what the first one had already said.
134
+ *
135
+ * So the refusal carries the number and the key that holds it. A
136
+ * refusal that only says no leaves somebody hunting for the knob, and
137
+ * the likeliest outcome of that is running the same retry again.
138
+ *
139
+ * Silent where it cannot know: an old round recorded no budget, and
140
+ * refusing on a number nobody has would block every retry of every
141
+ * round recorded before this existed.
142
+ */
143
+ export function retryWouldRepeat(stopped, budget,
144
+ // Whose clock this is, when it is not the round's. The refusal
145
+ // exists to name the knob that would let the retry through, and a
146
+ // participant keeping its own is precisely the reviewer whose limit
147
+ // the round's knob does not move: told to raise `review.ask.
148
+ // backstopMs`, somebody would raise it, retry, and be refused by the
149
+ // same number for the same reason.
150
+ keptBy) {
151
+ if (stopped?.budgetMs === undefined)
152
+ return undefined;
153
+ if (!REPEATS.has(stopped.limit))
154
+ return undefined;
155
+ const measure = stopped.limit === "soft-deadline" ? SOFT : MEASURED_BY[stopped.limit];
156
+ if (measure === undefined)
157
+ return undefined;
158
+ const now = budgetForLimit(stopped.limit, budget);
159
+ // A soft deadline that has since been switched off has no moment
160
+ // to compare against, and that is a change: the reviewer will now
161
+ // run to the wall instead, so the retry is a different question.
162
+ if (now === undefined || now > stopped.budgetMs)
163
+ return undefined;
164
+ return (`This reviewer was not failing, it was stopped: it hit the ${stopped.limit} ` +
165
+ `limit of ${stopped.budgetMs}ms and the limit is still ${now}ms, so asking ` +
166
+ `again buys the same wall at the same price. Raise ${knob(measure.named, keptBy)} ` +
167
+ "past what it needed and ask again, or take what it did send: a stopped " +
168
+ "reviewer's answer is kept, and the findings it finished are already read.");
169
+ }
170
+ /**
171
+ * Where the number that stopped this reviewer is written.
172
+ *
173
+ * A participant keeping its own is the reviewer whose limit the
174
+ * round's knob does not move, so naming the round's would send
175
+ * somebody to raise a number, retry, and meet the same wall.
176
+ */
177
+ function knob(named, keptBy) {
178
+ if (keptBy === undefined)
179
+ return `review.ask.${named}`;
180
+ return `${named} on "${keptBy}" in review.ask.reviewers, which is where this one's clocks are kept, or pass it in who for one round`;
181
+ }
182
+ /**
183
+ * What bounds this one participant, given what bounds the round.
184
+ *
185
+ * One number for a whole fan-out has to be sized for its slowest
186
+ * member, so a roster mixing a small fast model with a large one at
187
+ * high thinking either holds slots the fast reviewers do not need or
188
+ * cuts the slow one off mid-thought. That is the shape of the incident
189
+ * this whole workstream came out of: the rounds that ran past fifteen
190
+ * minutes lost two, three, six and seven reviewers, and the eight
191
+ * minute rounds beside them lost none.
192
+ *
193
+ * Each clock on its own, because the three answer three different
194
+ * questions and a participant with a lot to read needs the wall moved
195
+ * and not the liveness guard.
196
+ */
197
+ export function boundsFor(participant, round) {
198
+ const timeoutMs = participant.backstopMs ?? round.timeoutMs;
199
+ return {
200
+ timeoutMs,
201
+ // Never past the wall it now sits inside. Each clock is taken on
202
+ // its own, and that is the right reading of what somebody wrote,
203
+ // but the three are not independent: an idle guard that outlives
204
+ // its wall is a pair the runner refuses outright, so a reviewer
205
+ // given a shorter wall than the round's would not have started at
206
+ // all. Held down rather than refused, because the wall firing
207
+ // first is exactly what asking for a shorter wall means.
208
+ idleTimeoutMs: Math.min(participant.idleMs ?? round.idleTimeoutMs, timeoutMs),
209
+ // Zero is honoured here for the same reason it is honoured in the
210
+ // round's own config: it is the documented way to say do not
211
+ // interrupt me early. Read as a typo, a participant asking not to
212
+ // be interrupted would fall back to the round's reserve and be
213
+ // interrupted anyway, which is the one outcome nobody wrote it
214
+ // for.
215
+ wrapUpReserveMs: reserveInside(participant.answerMs ?? round.wrapUpReserveMs, timeoutMs),
216
+ };
217
+ }
218
+ /**
219
+ * A wrap-up reserve that leaves a reviewer something to wrap up.
220
+ *
221
+ * The reserve is carved out of the wall rather than added to it, so a
222
+ * reserve as large as the wall asks a reviewer for its findings before
223
+ * it has read anything. That could not happen while both numbers came
224
+ * from one config section; it can now, because a participant may
225
+ * shorten its wall and inherit the round's reserve, and five minutes
226
+ * out of forty-five is four minutes out of six.
227
+ *
228
+ * Held to half rather than refused, since the participant asked about
229
+ * the wall and has no opinion about the reserve it inherited. Below
230
+ * the floor it goes to zero, which is a reviewer that runs to the wall
231
+ * and is asked afterwards: the behaviour from before the reserve
232
+ * existed, and the honest answer for a wall too short to divide.
233
+ */
234
+ function reserveInside(reserve, timeoutMs) {
235
+ if (reserve === 0)
236
+ return 0;
237
+ const held = Math.min(reserve, Math.floor(timeoutMs / 2));
238
+ return held < CLOCK_FLOOR_MS ? 0 : held;
239
+ }
240
+ /**
241
+ * What bounds a round, taking any override from config.
242
+ *
243
+ * The fix for a bad constant is not a better constant. Both numbers
244
+ * are guesses about somebody else's hardware, model and diff, so they
245
+ * are overridable without patching source; a value that could not be
246
+ * used is ignored rather than honoured, because a typo that produced a
247
+ * zero budget would stop every reviewer the instant it started.
248
+ *
249
+ * This one is ignored rather than refused because it is read on the
250
+ * way into a round that is about to run, where the alternative to a
251
+ * default is no council at all. A participant's own clocks are read at
252
+ * config time with nothing yet spent, so those are refused instead.
253
+ */
254
+ export function reviewerBudget(section) {
255
+ const held = isRecord(section) ? section : {};
256
+ return {
257
+ timeoutMs: positiveNumber(held.backstopMs) ?? REVIEWER_BACKSTOP_MS,
258
+ idleTimeoutMs: positiveNumber(held.idleMs) ?? REVIEWER_IDLE_MS,
259
+ // Zero is honoured rather than rejected, because it is the
260
+ // documented way to turn the soft deadline off. Every other
261
+ // clock here treats zero as a typo, and for them it is: a zero
262
+ // backstop stops every reviewer the instant it starts. A zero
263
+ // reserve just means do not ask early.
264
+ wrapUpReserveMs: held.answerMs === 0
265
+ ? 0
266
+ : (positiveNumber(held.answerMs) ?? REVIEWER_ANSWER_MS),
267
+ };
268
+ }
269
+ /** A duration that could actually be used, or nothing. */
270
+ function positiveNumber(value) {
271
+ return typeof value === "number" && Number.isFinite(value) && value > 0
272
+ ? value
273
+ : undefined;
274
+ }
275
+ /** Whether config handed us something with fields to read. */
276
+ function isRecord(value) {
277
+ return typeof value === "object" && value !== null && !Array.isArray(value);
278
+ }
@@ -0,0 +1,217 @@
1
+ /**
2
+ * What a provider can actually do.
3
+ *
4
+ * Facets say which broad abilities a provider has; these say
5
+ * how far each one goes. The distinction earns its keep at
6
+ * the point of publishing: two providers both post reviews,
7
+ * but one caps a batch at a hundred comments, one cannot
8
+ * thread a reply onto a top-level message, and one has no
9
+ * way to unresolve. A consumer that cannot ask about those
10
+ * differences has to discover them from a rejected request,
11
+ * which is the worst moment to find out.
12
+ *
13
+ * Declaring capabilities is how degradation stays loud. The
14
+ * publish plan reads them, decides what will land and what
15
+ * will not, and says so before anything is sent.
16
+ *
17
+ * Which means a capability nothing reads is not a capability,
18
+ * it is a promise. Three were removed once an audit went
19
+ * looking for readers and found none:
20
+ *
21
+ * - `suggestions`, a suggested edit a reader can apply. No
22
+ * finding or draft item in this substrate can carry one, so
23
+ * the field described a feature nothing could express.
24
+ * - `pendingReviews`, holding a review as a draft on the
25
+ * backend. The draft here is local and outlives the call,
26
+ * which is what lets it work identically on a backend with
27
+ * no such notion. The capability was obsolete by design.
28
+ * - `deleteBranchOnMerge`. The one thing the system now
29
+ * deliberately refuses, because GitHub permanently closes
30
+ * the dependent PRs and they cannot be reopened.
31
+ *
32
+ * A field is added here when a reader is added with it. That
33
+ * is the whole discipline, and these three are why.
34
+ *
35
+ * `autoMerge` went the same way and is the interesting one,
36
+ * because unlike those three it named something real. GitHub
37
+ * does merge once checks pass, and the capability report
38
+ * listed `auto-merge` among the verbs a caller was told they
39
+ * could use. There was no verb: no method on the authoring
40
+ * facet, no flag on a merge request, no action on the tool.
41
+ * Advertising a door that is painted on is worse than having
42
+ * no door, so it comes back the day it opens, which now means
43
+ * a `whenReady` flag on {@link MergeRequest} answered with an
44
+ * `enqueued` outcome, since that is exactly what it is.
45
+ */
46
+ import type { Reaction, Verdict } from "./conversation.js";
47
+ import type { StackProvenance } from "./stack.js";
48
+ /** How a provider treats an anchor that no longer fits. */
49
+ export type StalenessModel =
50
+ /** Anchors stay valid; the provider pins a witness commit. */
51
+ "pinned"
52
+ /** The provider flags a stranded anchor. */
53
+ | "flagged"
54
+ /** The provider says nothing either way. */
55
+ | "none";
56
+ /**
57
+ * Where a remark about a whole file is allowed to be posted.
58
+ *
59
+ * `standalone` means it has to be posted on its own, outside a batch
60
+ * review, which is what both backends surveyed require. `batch` means it can
61
+ * ride along with a verdict and the line-anchored remarks, which is what a
62
+ * boolean used to claim for backends that do not allow it.
63
+ */
64
+ export type FileLevelComments = "never" | "standalone" | "batch";
65
+ /** What a provider's conversation facet can do. */
66
+ export interface ConversationCapabilities {
67
+ /** Post a verdict and anchored comments in one submission. */
68
+ anchoredBatchReview: boolean;
69
+ /** Cap on comments per batch, when there is one. */
70
+ maxBatchComments?: number;
71
+ /**
72
+ * Where a remark about a whole file can be posted, if anywhere.
73
+ *
74
+ * A boolean here could not be honest, and both backends proved it. Each
75
+ * declared `anchoredBatchReview: true` and `fileLevelComments: true` and
76
+ * each statement was true on its own, while their conjunction was false:
77
+ * neither will take a file-level comment inside a batch review. GitHub
78
+ * refuses the batch with `0.position (Expected value to not be null)` and
79
+ * gitstream with `comments[0].line missing_field`, and in both cases the
80
+ * whole review is rejected rather than the one remark. Posted on its own,
81
+ * with a subject type of file, both accept it.
82
+ *
83
+ * So the question is not whether a file-level remark is possible but
84
+ * where it can go, and a capability that cannot express a conjunction
85
+ * will lie about one.
86
+ */
87
+ fileLevelComments: FileLevelComments;
88
+ /** Anchor a remark to a run of lines. */
89
+ multiLineRanges: boolean;
90
+ /** Reopen a resolved thread. */
91
+ unresolve: boolean;
92
+ /** Reactions the provider accepts. Empty means none. */
93
+ reactions: readonly Reaction[];
94
+ /** Reply onto a top-level message, not just a thread. */
95
+ topLevelThreading: boolean;
96
+ /** How the provider treats an anchor that no longer fits. */
97
+ staleness: StalenessModel;
98
+ /**
99
+ * Verdicts that require a summary body. One backend
100
+ * rejects a request for changes with an empty body.
101
+ */
102
+ bodyRequiredFor?: readonly Verdict[];
103
+ /** Verdicts allowed on a change the actor authored. */
104
+ selfVerdicts?: readonly Verdict[];
105
+ /** Verdicts still allowed once a change has merged. */
106
+ verdictsAfterMerge?: readonly Verdict[];
107
+ }
108
+ /** What a provider's stacking facet can do. */
109
+ export interface StackingCapabilities {
110
+ /** Whether the shape is recorded or inferred. */
111
+ provenance: StackProvenance;
112
+ /** Report a stack that branches, not just a chain. */
113
+ fanOut: boolean;
114
+ }
115
+ /** What a provider's proposals facet can do. */
116
+ export interface ProposalCapabilities {
117
+ /** Fetch the change's commits into a local repo. */
118
+ fetchAsRef: boolean;
119
+ /** Report CI state for a change. */
120
+ checks: boolean;
121
+ /** List changes matching a filter. */
122
+ list: boolean;
123
+ }
124
+ /**
125
+ * When a backend will accept reviewers on a change.
126
+ *
127
+ * Three states rather than a boolean, because one backend takes them
128
+ * only as the change is created. A caller told "not supported" would
129
+ * never learn about the one moment it is.
130
+ */
131
+ export type ReviewersAt = "creation" | "any-time" | "never";
132
+ /**
133
+ * What retargeting a change's base means here.
134
+ *
135
+ * Not a boolean either. On one backend a base change goes through
136
+ * resubmitting the whole stack, so retargeting one change is not a
137
+ * smaller version of the same operation and a caller that treats it as
138
+ * one will move changes it did not mean to touch.
139
+ */
140
+ export type RetargetScope = "change" | "stack" | "never";
141
+ /**
142
+ * How a backend names a person.
143
+ *
144
+ * The same string is a valid assignee on one backend and meaningless on
145
+ * another: GitHub wants a login, gitstream wants a Shopify email address.
146
+ * Declared rather than inferred, because the failure otherwise arrives
147
+ * from the create route after the change exists.
148
+ *
149
+ * `unknown` is for a backend that has not been measured. It is checked
150
+ * against nothing, since silence is not a licence to guess: picking a
151
+ * rule for a backend nobody asked would refuse values it accepts.
152
+ */
153
+ export type PersonForm = "login" | "email" | "unknown";
154
+ /**
155
+ * What a provider's authoring facet can do.
156
+ *
157
+ * Every field here is a difference the CLI survey actually found. The
158
+ * ones that are booleans elsewhere and enums here are the ones where a
159
+ * boolean would have been a lie.
160
+ */
161
+ export interface AuthoringCapabilities {
162
+ propose: boolean;
163
+ /** Propose a whole stack in dependency order, in one go. */
164
+ proposeStack: boolean;
165
+ reviewersAt: ReviewersAt;
166
+ retarget: RetargetScope;
167
+ /** Flip an existing change between draft and ready. */
168
+ setDraft: boolean;
169
+ close: boolean;
170
+ reopen: boolean;
171
+ merge: boolean;
172
+ labels: boolean;
173
+ assignees: boolean;
174
+ /**
175
+ * The form this backend names people in, for assignees and reviewers.
176
+ *
177
+ * Required rather than optional so a new backend has to answer it. An
178
+ * absent field would read as "no opinion" for a backend that simply
179
+ * had not been asked, which is the ambiguity that lets a login reach a
180
+ * server that only knows email addresses.
181
+ */
182
+ identifies: PersonForm;
183
+ /**
184
+ * Ask CI to run again.
185
+ *
186
+ * Here rather than beside `checks` on the proposals facet, which
187
+ * is where it reads more naturally, because this is a write and
188
+ * that facet is how a change is read. Every write goes through
189
+ * one gate and one `offerable` check, and a second write path
190
+ * hanging off the read facet would have to duplicate both or
191
+ * skip them.
192
+ *
193
+ * Reading CI and retriggering it are still different
194
+ * permissions, so a provider can report checks and decline to
195
+ * rerun them. What counts as a rerun is the backend's business:
196
+ * an API call against the change's own runs on one, and on
197
+ * another a build tool that is simply how that monorepo
198
+ * triggers CI.
199
+ */
200
+ rerunChecks: boolean;
201
+ /**
202
+ * Whether mutating a change ejects it from a merge queue.
203
+ *
204
+ * The expensive one. On a queue-backed backend a push, a rebase or a
205
+ * base change ejects the change and everything speculatively batched
206
+ * with it, and re-running CI for the rest is measured in hundreds of
207
+ * jobs. A caller has to be able to ask before it acts.
208
+ */
209
+ refusesWhileEnqueued: boolean;
210
+ }
211
+ /** Everything a provider declares about itself, per repo. */
212
+ export interface Capabilities {
213
+ proposals?: ProposalCapabilities;
214
+ stacking?: StackingCapabilities;
215
+ conversation?: ConversationCapabilities;
216
+ authoring?: AuthoringCapabilities;
217
+ }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * What a provider can actually do.
3
+ *
4
+ * Facets say which broad abilities a provider has; these say
5
+ * how far each one goes. The distinction earns its keep at
6
+ * the point of publishing: two providers both post reviews,
7
+ * but one caps a batch at a hundred comments, one cannot
8
+ * thread a reply onto a top-level message, and one has no
9
+ * way to unresolve. A consumer that cannot ask about those
10
+ * differences has to discover them from a rejected request,
11
+ * which is the worst moment to find out.
12
+ *
13
+ * Declaring capabilities is how degradation stays loud. The
14
+ * publish plan reads them, decides what will land and what
15
+ * will not, and says so before anything is sent.
16
+ *
17
+ * Which means a capability nothing reads is not a capability,
18
+ * it is a promise. Three were removed once an audit went
19
+ * looking for readers and found none:
20
+ *
21
+ * - `suggestions`, a suggested edit a reader can apply. No
22
+ * finding or draft item in this substrate can carry one, so
23
+ * the field described a feature nothing could express.
24
+ * - `pendingReviews`, holding a review as a draft on the
25
+ * backend. The draft here is local and outlives the call,
26
+ * which is what lets it work identically on a backend with
27
+ * no such notion. The capability was obsolete by design.
28
+ * - `deleteBranchOnMerge`. The one thing the system now
29
+ * deliberately refuses, because GitHub permanently closes
30
+ * the dependent PRs and they cannot be reopened.
31
+ *
32
+ * A field is added here when a reader is added with it. That
33
+ * is the whole discipline, and these three are why.
34
+ *
35
+ * `autoMerge` went the same way and is the interesting one,
36
+ * because unlike those three it named something real. GitHub
37
+ * does merge once checks pass, and the capability report
38
+ * listed `auto-merge` among the verbs a caller was told they
39
+ * could use. There was no verb: no method on the authoring
40
+ * facet, no flag on a merge request, no action on the tool.
41
+ * Advertising a door that is painted on is worse than having
42
+ * no door, so it comes back the day it opens, which now means
43
+ * a `whenReady` flag on {@link MergeRequest} answered with an
44
+ * `enqueued` outcome, since that is exactly what it is.
45
+ */
46
+ export {};