@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,203 @@
1
+ /**
2
+ * Remembering the trees a session cut, so the next session can find them.
3
+ *
4
+ * The broker held its trees in an array, which is correct for exactly as long as
5
+ * the process lives. A worktree outlives the process by design, so the next
6
+ * session opened with the trees still on disk, git still tracking them, and
7
+ * every verb answering "no held tree": not merely a listing that forgot, but
8
+ * commits stranded in a directory the tool could no longer reach, releasable
9
+ * only through the `git worktree` call the guide tells you never to make.
10
+ *
11
+ * No test could see it. A test builds a broker and uses it, which is one
12
+ * process; the fault needs two.
13
+ *
14
+ * The directory stays the source of truth for whether a tree exists, and this
15
+ * only supplies the identity a directory name cannot faithfully carry. When the
16
+ * two disagree the directory wins, because somebody who deletes a tree by hand
17
+ * has said something and a stale record has not.
18
+ *
19
+ * A record also says who cut it, which is a later addition and the reason
20
+ * anything is ever reclaimed. Without it "remembered" and "held" were one set,
21
+ * so every tree ever cut answered "something still holds it" forever: measured
22
+ * at 59 records and 649MB on one machine, growing by a snapshot per review
23
+ * round.
24
+ */
25
+ import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync, } from "node:fs";
26
+ import { join } from "node:path";
27
+ import { askedOnce, isOwner, ownerNow, ownerStanding, sameProcess, systemFacts, } from "../process/index.js";
28
+ /**
29
+ * The holders a record names, ignoring anything malformed.
30
+ *
31
+ * Checks that it is an array before filtering it. A record is a file
32
+ * anybody can edit, and `owners: {}` on one of them would otherwise
33
+ * throw out of here and take tidy and reclaim down with it: one bad
34
+ * file, and the whole cleanup path stops for every repo.
35
+ */
36
+ function named(tree) {
37
+ const owners = tree.owners;
38
+ if (!Array.isArray(owners))
39
+ return [];
40
+ return owners.filter(isOwner);
41
+ }
42
+ /** Whether two records name one process. */
43
+ function sameOwner(one, two) {
44
+ return one.pid === two.pid && sameProcess(one.startedAt, two.startedAt);
45
+ }
46
+ /** Whether a record read back off disk says enough to be useful. */
47
+ function usable(written) {
48
+ return (typeof written.path === "string" &&
49
+ typeof written.providerId === "string" &&
50
+ typeof written.identity?.key === "string");
51
+ }
52
+ /**
53
+ * Remember trees in a directory of small files, one per tree.
54
+ *
55
+ * A file per tree rather than one index, for the same reason the attachment
56
+ * store is shaped this way: two sessions cutting trees at once both write, and
57
+ * the loser of a read-modify-write race on a single index is a tree nobody can
58
+ * find. Separate files cannot collide, since the name is the tree's own key.
59
+ */
60
+ export function createTreeMemory(dir) {
61
+ const fileFor = (key) => join(dir, `${key.replaceAll("/", "-")}.json`);
62
+ function all() {
63
+ if (!existsSync(dir))
64
+ return [];
65
+ return readdirSync(dir)
66
+ .filter((name) => name.endsWith(".json"))
67
+ .flatMap((name) => {
68
+ const at = join(dir, name);
69
+ try {
70
+ const written = JSON.parse(readFileSync(at, "utf8"));
71
+ // A record we cannot read is worse than no record, because it
72
+ // would mean a tree reported with a broken identity. Skip it
73
+ // and leave it alone: deleting somebody's file to tidy a
74
+ // listing is not this function's decision.
75
+ return usable(written)
76
+ ? [{ at, held: written }]
77
+ : [];
78
+ }
79
+ catch {
80
+ // Unreadable or half-written, which a concurrent write can
81
+ // produce. The tree is still on disk and still reachable by
82
+ // path; only its identity is lost, and next cut rewrites it.
83
+ return [];
84
+ }
85
+ });
86
+ }
87
+ return {
88
+ remember(held) {
89
+ mkdirSync(dir, { recursive: true });
90
+ writeFileSync(fileFor(held.identity.key), JSON.stringify(held, null, 2), "utf8");
91
+ },
92
+ async rememberHeldByUs(held, facts = systemFacts) {
93
+ // Stamped here rather than by the caller, so a tree cannot be
94
+ // written down without the identity that lets it be released
95
+ // later. The owner is this process: whoever asks the broker for a
96
+ // tree is the session that will be holding it.
97
+ const us = await ownerNow(facts);
98
+ if (us === undefined) {
99
+ // The machine will not say when we started, so we cannot write
100
+ // an identity anybody could check later. Recording the tree
101
+ // without one is right: it reads as unattributable, which is
102
+ // held, and a tree wrongly held costs disk where a tree
103
+ // wrongly reclaimed costs work.
104
+ this.remember(held);
105
+ return;
106
+ }
107
+ // Added to whoever else holds it rather than replacing them. A
108
+ // snapshot is shareable, so two sessions can hold one tree, and
109
+ // the one that wrote last is not the only one that would miss it.
110
+ // Dead holders are left to be filtered on the way out rather than
111
+ // probed here, since this is on the path of every cut.
112
+ const before = (this.recall().find((tree) => tree.path === held.path)?.owners ??
113
+ held.owners ??
114
+ []).filter((one) => isOwner(one) && !sameOwner(one, us));
115
+ this.remember({ ...held, owners: [...before, us] });
116
+ },
117
+ forget(path) {
118
+ for (const { at, held } of all()) {
119
+ if (held.path === path)
120
+ rmSync(at, { force: true });
121
+ }
122
+ },
123
+ recall() {
124
+ const found = [];
125
+ for (const { at, held } of all()) {
126
+ // The directory is the truth. A record whose tree has been
127
+ // removed by hand is dropped and its record with it, which is
128
+ // how somebody who cleaned up by hand stops being nagged about
129
+ // it forever.
130
+ if (existsSync(held.path)) {
131
+ found.push(held);
132
+ continue;
133
+ }
134
+ rmSync(at, { force: true });
135
+ }
136
+ return found;
137
+ },
138
+ unattributed() {
139
+ return this.recall().filter((tree) => named(tree).length === 0);
140
+ },
141
+ async otherHolders(path, facts = systemFacts) {
142
+ const tree = this.recall().find((one) => one.path === path);
143
+ if (tree === undefined)
144
+ return [];
145
+ const once = askedOnce(facts);
146
+ const us = await ownerNow(once);
147
+ const others = [];
148
+ for (const owner of named(tree)) {
149
+ if (us !== undefined && sameOwner(owner, us))
150
+ continue;
151
+ if ((await ownerStanding(owner, once)) !== "gone")
152
+ others.push(owner);
153
+ }
154
+ return others;
155
+ },
156
+ async forgetUsAsHolder(path, facts = systemFacts) {
157
+ const tree = this.recall().find((one) => one.path === path);
158
+ if (tree === undefined)
159
+ return;
160
+ const us = await ownerNow(facts);
161
+ if (us === undefined)
162
+ return;
163
+ this.remember({
164
+ ...tree,
165
+ owners: named(tree).filter((owner) => !sameOwner(owner, us)),
166
+ });
167
+ },
168
+ async heldNow(facts = systemFacts) {
169
+ const held = [];
170
+ // One question per process, not per record. Every reviewer of
171
+ // one round shares a session, so the same handful of pids
172
+ // recurs across the whole directory: without this, tidy forked
173
+ // `ps` once per record, serially, which is 59 spawns on the
174
+ // machine this was found on.
175
+ //
176
+ // The fact is cached, never the verdict. A standing compares
177
+ // the pid's real start time against the one a given record
178
+ // wrote down, so it belongs to the record and not to the pid:
179
+ // held per pid, one stale record answers for a live session
180
+ // wearing the same number, which is the exact confusion this
181
+ // module exists to prevent.
182
+ const once = askedOnce(facts);
183
+ for (const tree of this.recall()) {
184
+ const owners = named(tree);
185
+ // Nobody recorded means nobody can say, and every record
186
+ // written before owners existed is one of these. Reading it as
187
+ // nobody's would offer a live session's trees for reclaiming on
188
+ // the first run of this code, which is worse than the leak it
189
+ // fixes.
190
+ if (owners.length === 0) {
191
+ held.push(tree);
192
+ continue;
193
+ }
194
+ // Any one of them is enough. A shared snapshot outlives the
195
+ // first holder to finish with it.
196
+ const stands = await Promise.all(owners.map((owner) => ownerStanding(owner, once)));
197
+ if (stands.some((one) => one !== "gone"))
198
+ held.push(tree);
199
+ }
200
+ return held;
201
+ },
202
+ };
203
+ }
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Asking whether anybody objects before publishing a branch.
3
+ *
4
+ * This exists because of one seam. Publishing a branch is a working-layer
5
+ * action, and the reason not to publish is often a hosting-layer fact: on a
6
+ * backend with a merge queue, pushing to an enqueued branch ejects it and
7
+ * everything speculatively batched with it, and re-running the checks for the
8
+ * rest is measured in hundreds of jobs. The working layer cannot see that, and
9
+ * teaching it to would mean giving it a route to the review contract, which is
10
+ * the coupling this whole substrate exists to avoid.
11
+ *
12
+ * So it asks instead. Anything that knows something about a branch can object,
13
+ * and the objection carries its own words: the layer that knows why is the layer
14
+ * that explains it. Nothing here knows what a queue is.
15
+ *
16
+ * Silence means nobody objected, which is not the same as safe. That is the
17
+ * honest reading and it is why this is an objection rather than an approval: a
18
+ * check that nothing answers must not turn a push into a refusal, or a session
19
+ * with no hosting provider loaded could never publish anything.
20
+ */
21
+ /** What is about to be published. */
22
+ export interface PublishIntent {
23
+ /** The repo, keyed the way the working layer keys one. */
24
+ repoKey: string;
25
+ /** The branch about to be pushed. */
26
+ branch: string;
27
+ /** Where it is being pushed from, for anything that needs to look. */
28
+ treePath: string;
29
+ /** True when the push would replace commits the remote already has. */
30
+ replacing: boolean;
31
+ }
32
+ /** Somebody's reason not to publish. */
33
+ export interface Objection {
34
+ /** Who is objecting, so a reader knows which system is worried. */
35
+ from: string;
36
+ /** Why, in words a person can act on. */
37
+ reason: string;
38
+ /** What to do instead, when there is a sensible alternative. */
39
+ instead?: string;
40
+ /**
41
+ * Whether this stops the push or merely says something about it.
42
+ *
43
+ * The distinction is not politeness, it is the difference between a guard
44
+ * people keep and a guard people disable. A backend that knows a change is
45
+ * queued can block; a backend that only knows it *would* refuse a queued
46
+ * change, without being able to say whether this one is queued, has a real
47
+ * thing to tell you and no business stopping every push you make. Blocking
48
+ * on a suspicion would refuse every push on such a backend, and a guard
49
+ * that refuses everything protects nothing once it is turned off.
50
+ *
51
+ * Defaults to blocking, since an objection whose author did not think about
52
+ * this is more likely to be a genuine one.
53
+ */
54
+ blocking?: boolean;
55
+ }
56
+ /**
57
+ * An objection collector, handed to whoever might have one.
58
+ *
59
+ * A function rather than a return value because the bus fans out: several
60
+ * listeners may each have something to say, and the last one to answer must not
61
+ * overwrite the first.
62
+ */
63
+ export interface PublishReview {
64
+ intent: PublishIntent;
65
+ object(objection: Objection): void;
66
+ }
67
+ /**
68
+ * Emitted before a branch is published, so anything that knows a reason to stop
69
+ * can say so.
70
+ *
71
+ * Advisory by construction. A listener that throws, hangs or says nothing does
72
+ * not prevent a push, because the alternative is a working layer that stops
73
+ * working when an unrelated extension has a bad day.
74
+ */
75
+ export declare const WORK_PUBLISH_CHECK = "work:publish:check:v1";
76
+ /**
77
+ * Read a set of objections as one refusal, or nothing.
78
+ *
79
+ * Every objection is named and kept. Summarizing several into one would drop
80
+ * whichever the reader most needed, and two systems objecting for two reasons is
81
+ * a fact about the push rather than a formatting problem.
82
+ */
83
+ export declare function refusalFrom(objections: readonly Objection[]): string | undefined;
84
+ /**
85
+ * What was said that did not stop the push, to print beside what happened.
86
+ *
87
+ * Said after the fact rather than before it, because that is what a caution is:
88
+ * it decorates the outcome instead of becoming one. Printed at all because the
89
+ * alternative is a backend that knows something useful and has no way to say it
90
+ * without also blocking.
91
+ */
92
+ export declare function cautionsFrom(objections: readonly Objection[]): readonly string[];
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Asking whether anybody objects before publishing a branch.
3
+ *
4
+ * This exists because of one seam. Publishing a branch is a working-layer
5
+ * action, and the reason not to publish is often a hosting-layer fact: on a
6
+ * backend with a merge queue, pushing to an enqueued branch ejects it and
7
+ * everything speculatively batched with it, and re-running the checks for the
8
+ * rest is measured in hundreds of jobs. The working layer cannot see that, and
9
+ * teaching it to would mean giving it a route to the review contract, which is
10
+ * the coupling this whole substrate exists to avoid.
11
+ *
12
+ * So it asks instead. Anything that knows something about a branch can object,
13
+ * and the objection carries its own words: the layer that knows why is the layer
14
+ * that explains it. Nothing here knows what a queue is.
15
+ *
16
+ * Silence means nobody objected, which is not the same as safe. That is the
17
+ * honest reading and it is why this is an objection rather than an approval: a
18
+ * check that nothing answers must not turn a push into a refusal, or a session
19
+ * with no hosting provider loaded could never publish anything.
20
+ */
21
+ /**
22
+ * Emitted before a branch is published, so anything that knows a reason to stop
23
+ * can say so.
24
+ *
25
+ * Advisory by construction. A listener that throws, hangs or says nothing does
26
+ * not prevent a push, because the alternative is a working layer that stops
27
+ * working when an unrelated extension has a bad day.
28
+ */
29
+ export const WORK_PUBLISH_CHECK = "work:publish:check:v1";
30
+ /**
31
+ * Read a set of objections as one refusal, or nothing.
32
+ *
33
+ * Every objection is named and kept. Summarizing several into one would drop
34
+ * whichever the reader most needed, and two systems objecting for two reasons is
35
+ * a fact about the push rather than a formatting problem.
36
+ */
37
+ export function refusalFrom(objections) {
38
+ const blocking = objections.filter((one) => one.blocking !== false);
39
+ if (blocking.length === 0)
40
+ return undefined;
41
+ if (blocking.length === 1) {
42
+ const [only] = blocking;
43
+ return [
44
+ `${only.from} says not to publish this yet. ${only.reason}`,
45
+ ...(only.instead === undefined ? [] : ["", only.instead]),
46
+ ].join("\n");
47
+ }
48
+ return [
49
+ `${blocking.length} systems say not to publish this yet.`,
50
+ ...blocking.flatMap((one) => [
51
+ "",
52
+ `${one.from}: ${one.reason}`,
53
+ ...(one.instead === undefined ? [] : [` ${one.instead}`]),
54
+ ]),
55
+ ].join("\n");
56
+ }
57
+ /**
58
+ * What was said that did not stop the push, to print beside what happened.
59
+ *
60
+ * Said after the fact rather than before it, because that is what a caution is:
61
+ * it decorates the outcome instead of becoming one. Printed at all because the
62
+ * alternative is a backend that knows something useful and has no way to say it
63
+ * without also blocking.
64
+ */
65
+ export function cautionsFrom(objections) {
66
+ return objections
67
+ .filter((one) => one.blocking === false)
68
+ .map((one) => [
69
+ `${one.from}: ${one.reason}`,
70
+ ...(one.instead === undefined ? [] : [one.instead]),
71
+ ].join(" "));
72
+ }
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Choosing which provider cuts a tree.
3
+ *
4
+ * This replaces two brokers that sorted their providers in
5
+ * opposite directions. One took the smallest priority number,
6
+ * documented as "built-ins live at 100; downstream
7
+ * specialisations use smaller numbers to take over". The other
8
+ * took the largest, documented as "higher-priority providers are
9
+ * consulted first". Both downstream World providers were correct
10
+ * under their own broker while holding the same constant name at
11
+ * 50 and at 100.
12
+ *
13
+ * Unifying them on either direction would silently invert one, and
14
+ * silently is the operative word: losing does not raise anything,
15
+ * because the general provider still produces a tree. It would
16
+ * just be a plain git worktree where a `dev tree` was wanted,
17
+ * which works well enough to go unnoticed.
18
+ *
19
+ * So the number is not a priority. A provider says how *specific*
20
+ * it is, and more specific wins. "Priority" genuinely reads both
21
+ * ways in English, since priority 1 can mean first or last;
22
+ * "specificity" does not, because a provider for one repo is
23
+ * plainly more specific than one for any repo.
24
+ */
25
+ import type { RepoLocator } from "../review/index.js";
26
+ /** What choosing needs to know about a provider. */
27
+ export interface TreeProviderInfo {
28
+ /** Stable identifier, used when reporting the choice. */
29
+ id: string;
30
+ /**
31
+ * How narrow this provider's remit is. Higher wins. A
32
+ * provider serving any repo declares 0; one serving a
33
+ * particular repo declares more.
34
+ */
35
+ specificity: number;
36
+ /**
37
+ * Whether this provider serves the given repo. Cheap and
38
+ * synchronous: it is asked about every provider on every
39
+ * choice.
40
+ */
41
+ appliesTo(repo: RepoLocator): boolean;
42
+ }
43
+ /**
44
+ * Which provider serves a repo.
45
+ *
46
+ * Three outcomes, because the caller has to say something
47
+ * different about each: use it, tell somebody nothing is
48
+ * configured, or tell somebody two things are configured to do the
49
+ * same job.
50
+ */
51
+ export type TreeProviderChoice<P> =
52
+ /** Exactly one provider is the most specific that applies. */
53
+ {
54
+ kind: "chosen";
55
+ provider: P;
56
+ }
57
+ /**
58
+ * Several apply and are equally specific, so which one serves
59
+ * is arbitrary. Reported rather than resolved: picking by
60
+ * registration order hides a configuration mistake behind a
61
+ * tree that looks fine.
62
+ */
63
+ | {
64
+ kind: "ambiguous";
65
+ providers: readonly P[];
66
+ }
67
+ /** Nothing applies. */
68
+ | {
69
+ kind: "none";
70
+ };
71
+ /**
72
+ * Choose the provider that serves a repo.
73
+ *
74
+ * Ties are reported with the contenders named and in a stable
75
+ * order, so the same misconfiguration reads the same way whichever
76
+ * order the providers happened to register in. A tie below the
77
+ * winner is not a tie at all and is ignored.
78
+ */
79
+ export declare function chooseTreeProvider<P extends TreeProviderInfo>(providers: readonly P[], repo: RepoLocator): TreeProviderChoice<P>;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Choosing which provider cuts a tree.
3
+ *
4
+ * This replaces two brokers that sorted their providers in
5
+ * opposite directions. One took the smallest priority number,
6
+ * documented as "built-ins live at 100; downstream
7
+ * specialisations use smaller numbers to take over". The other
8
+ * took the largest, documented as "higher-priority providers are
9
+ * consulted first". Both downstream World providers were correct
10
+ * under their own broker while holding the same constant name at
11
+ * 50 and at 100.
12
+ *
13
+ * Unifying them on either direction would silently invert one, and
14
+ * silently is the operative word: losing does not raise anything,
15
+ * because the general provider still produces a tree. It would
16
+ * just be a plain git worktree where a `dev tree` was wanted,
17
+ * which works well enough to go unnoticed.
18
+ *
19
+ * So the number is not a priority. A provider says how *specific*
20
+ * it is, and more specific wins. "Priority" genuinely reads both
21
+ * ways in English, since priority 1 can mean first or last;
22
+ * "specificity" does not, because a provider for one repo is
23
+ * plainly more specific than one for any repo.
24
+ */
25
+ /**
26
+ * Choose the provider that serves a repo.
27
+ *
28
+ * Ties are reported with the contenders named and in a stable
29
+ * order, so the same misconfiguration reads the same way whichever
30
+ * order the providers happened to register in. A tie below the
31
+ * winner is not a tie at all and is ignored.
32
+ */
33
+ export function chooseTreeProvider(providers, repo) {
34
+ const applicable = providers.filter((candidate) => candidate.appliesTo(repo));
35
+ if (applicable.length === 0)
36
+ return { kind: "none" };
37
+ const narrowest = Math.max(...applicable.map((c) => c.specificity));
38
+ const contenders = applicable
39
+ .filter((candidate) => candidate.specificity === narrowest)
40
+ .sort((a, b) => a.id.localeCompare(b.id));
41
+ const [only] = contenders;
42
+ if (only && contenders.length === 1)
43
+ return { kind: "chosen", provider: only };
44
+ return { kind: "ambiguous", providers: contenders };
45
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Cutting trees with plain git.
3
+ *
4
+ * The general case, so that the broker works before anything
5
+ * downstream registers. A repo with a checkout on disk gets a git
6
+ * worktree beside the state directory, detached at a commit for a
7
+ * snapshot or on its branch for a worktree.
8
+ *
9
+ * It deliberately does not clone. A repo known only by a remote is
10
+ * refused with the remote named, because a clone of an unasked-for
11
+ * repo can be enormous and quietly spending ten minutes on one is a
12
+ * surprising thing for a tool to do on its own. Saying what is
13
+ * needed leaves the choice with whoever knows how big it is; a
14
+ * downstream provider that knows a particular repo can serve it
15
+ * without asking.
16
+ */
17
+ import { type Exec } from "../../exec/index.js";
18
+ import type { TreeProvider } from "../broker.js";
19
+ /**
20
+ * A tree provider backed by `git worktree`.
21
+ *
22
+ * Applies to every repo, since git is what the general case means.
23
+ * Anything more specific outranks it by declaring a higher
24
+ * specificity.
25
+ */
26
+ export declare function createGitTreeProvider(deps: {
27
+ exec: Exec;
28
+ stateDir: string;
29
+ }): TreeProvider;
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Cutting trees with plain git.
3
+ *
4
+ * The general case, so that the broker works before anything
5
+ * downstream registers. A repo with a checkout on disk gets a git
6
+ * worktree beside the state directory, detached at a commit for a
7
+ * snapshot or on its branch for a worktree.
8
+ *
9
+ * It deliberately does not clone. A repo known only by a remote is
10
+ * refused with the remote named, because a clone of an unasked-for
11
+ * repo can be enormous and quietly spending ten minutes on one is a
12
+ * surprising thing for a tool to do on its own. Saying what is
13
+ * needed leaves the choice with whoever knows how big it is; a
14
+ * downstream provider that knows a particular repo can serve it
15
+ * without asking.
16
+ */
17
+ import { join } from "node:path";
18
+ import { run } from "../../exec/index.js";
19
+ import { withoutCredentials } from "../../remote/index.js";
20
+ import { displayPath } from "../../ui/path.js";
21
+ import { treeIdentity, treeSource } from "../tree.js";
22
+ /** The built-in provider's id, and the general case's specificity. */
23
+ const ID = "git-worktree";
24
+ const GENERAL = 0;
25
+ /**
26
+ * A tree provider backed by `git worktree`.
27
+ *
28
+ * Applies to every repo, since git is what the general case means.
29
+ * Anything more specific outranks it by declaring a higher
30
+ * specificity.
31
+ */
32
+ export function createGitTreeProvider(deps) {
33
+ return {
34
+ id: ID,
35
+ specificity: GENERAL,
36
+ appliesTo: () => true,
37
+ async ensure(request) {
38
+ const source = treeSource(request.repo);
39
+ if (source.kind === "unknown") {
40
+ throw new Error(`Nothing is known about where ${request.repo.key} lives, locally or by remote, so there is nowhere to cut a tree from.`);
41
+ }
42
+ if (source.kind === "clone") {
43
+ throw new Error(`${request.repo.key} is known only as ${withoutCredentials(source.remoteUrl)}, and cloning a repo you did not ask for can take a very long time. Clone it yourself, or register a provider that knows this repo.`);
44
+ }
45
+ const path = join(deps.stateDir, treeIdentity(request).key);
46
+ // Already there is the ordinary case, not a failure. `ensure` means
47
+ // make sure it exists, a snapshot is shareable between readers by
48
+ // design, and the broker holding one only remembers for as long as
49
+ // the session does while the directory outlives it. So the second
50
+ // session to review a commit found the tree its predecessor cut and
51
+ // died on `fatal: already exists`, then fell back to letting
52
+ // reviewers read the working checkout.
53
+ const standing = await deps.exec("git", [
54
+ "-C",
55
+ path,
56
+ "rev-parse",
57
+ "HEAD",
58
+ ]);
59
+ if (standing.code === 0) {
60
+ const head = standing.stdout.trim();
61
+ // A snapshot's commit is part of its identity, so a tree under
62
+ // this name standing anywhere else is not the thing being asked
63
+ // for. Refuse rather than hand it over: silently reviewing a
64
+ // different commit is the one outcome nobody could detect.
65
+ if (request.intent === "snapshot" && head !== request.commit) {
66
+ throw new Error(`A tree for ${request.repo.key} already sits at ${displayPath(path)} but stands at ${head} rather than ${request.commit}. Release it before pinning a snapshot there.`);
67
+ }
68
+ return { path };
69
+ }
70
+ const at = request.intent === "snapshot"
71
+ ? ["--detach", path, request.commit]
72
+ : [path, request.branch];
73
+ await run(deps.exec, "git", ["-C", source.path, "worktree", "add", ...at], `Cutting a tree for ${request.purpose}`);
74
+ return { path };
75
+ },
76
+ async release(held) {
77
+ // Scoped to the tree itself, which is the one repo guaranteed
78
+ // to know about it. Without a -C this ran against whatever
79
+ // repo the process happened to be sitting in, and git then
80
+ // reports that the path is not a working tree, which is true
81
+ // of that repo and beside the point. A worktree's .git file
82
+ // names its main repo, so asking from inside is enough and
83
+ // needs no source path carried on the held tree.
84
+ await run(deps.exec, "git", ["-C", held.path, "worktree", "remove", held.path], `Releasing the tree at ${displayPath(held.path)}`);
85
+ },
86
+ };
87
+ }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Publishing a branch, which is the step between committing and proposing.
3
+ *
4
+ * It was missing, and its absence was the one place this surface made you
5
+ * leave it: `work record` committed, `review_offer propose` needed the branch
6
+ * on the remote, and nothing in between was a tool. Every other seam here is
7
+ * something you can call.
8
+ *
9
+ * Two rules are built in rather than offered. A first push sets upstream,
10
+ * because a branch that pushes without one has to be told its own name every
11
+ * time afterwards and eventually gets told the wrong one. And a force is
12
+ * always a lease: `--force` overwrites whatever arrived while you were
13
+ * rebasing, which on a shared branch is somebody else's work, and the honest
14
+ * version of "I know what is there" is to say what you think is there and be
15
+ * refused when you are wrong.
16
+ */
17
+ import type { Exec } from "../exec/index.js";
18
+ /** Where a branch went, or why it did not. */
19
+ export type PushOutcome = {
20
+ kind: "published";
21
+ branch: string;
22
+ remote: string;
23
+ /** True when this push is what gave the branch its upstream. */
24
+ tracked: boolean;
25
+ /** True when the push replaced commits the remote already had. */
26
+ replaced: boolean;
27
+ } | {
28
+ kind: "already-there";
29
+ branch: string;
30
+ remote: string;
31
+ } | {
32
+ kind: "refused";
33
+ branch?: string;
34
+ reason: string;
35
+ };
36
+ /** How to publish. */
37
+ export interface PushOptions {
38
+ /**
39
+ * Replace what the remote has, refusing if it moved since you last
40
+ * fetched. Needed after a rebase, and never a bare force.
41
+ */
42
+ replace?: boolean;
43
+ /** Which remote. Defaults to the branch's upstream, then to origin. */
44
+ remote?: string;
45
+ }
46
+ /** Publishing the work in a tree. */
47
+ export interface WorkPublisher {
48
+ push(treePath: string, options?: PushOptions): Promise<PushOutcome>;
49
+ }
50
+ /** Publish with plain git. */
51
+ export declare function createGitPublisher(deps: {
52
+ exec: Exec;
53
+ }): WorkPublisher;