@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,296 @@
1
+ /**
2
+ * Agents another harness already defined in the repo under review.
3
+ *
4
+ * A repo that has been worked in for a while has usually accumulated
5
+ * some: a reviewer, an architect, a debugger, each written by somebody
6
+ * who knew that codebase. They are lenses, which is what a persona is,
7
+ * and they are already there, which is more than can be said for any
8
+ * lens this tool ships. Offering them costs a directory read.
9
+ *
10
+ * Three rules make that safe, and the third is the one that matters.
11
+ *
12
+ * They are namespaced, because a roster naming a lens and silently
13
+ * getting the repo's version of it is the quiet substitution
14
+ * `bindPersonas` refuses: the findings still file under the name, and
15
+ * whoever reads them weighs them as the lens they asked for.
16
+ *
17
+ * Only the prose comes across. Measured across fifteen agent files on
18
+ * this machine, thirteen name tools and six name a model, in
19
+ * vocabulary that belongs to the harness that wrote them: `sonnet` is
20
+ * not a model pi resolves and `Bash, Read, Edit` are not tools it has.
21
+ *
22
+ * And the change under review may not be the thing that wrote them. A
23
+ * charter becomes the reviewer's `--system-prompt`, on a child holding
24
+ * bash and write, with its working directory inside the tree, and that
25
+ * tree is pinned to the commit under review. So without this rule the
26
+ * author of a change writes the standing instruction of the agent
27
+ * reviewing it, and the operator's consent is worth little, since the
28
+ * listing they chose from read a different tree. A lens the diff
29
+ * touches is refused. What remains is the repo's committed state,
30
+ * which is the same trust already extended to every other line in it.
31
+ *
32
+ * Reading the directory is somebody else's job, as it is for personas.
33
+ * This module is handed the files.
34
+ */
35
+ import { parse as parseYaml } from "yaml";
36
+ import { splitFrontmatter } from "./persona.js";
37
+ /** The prefix that keeps these out of the persona namespace. */
38
+ export const NAMESPACE = "repo:";
39
+ /**
40
+ * How much charter a lens may carry.
41
+ *
42
+ * A charter becomes an argument on a child process, so unbounded is
43
+ * not a size, it is a limit somebody else picks. The longest agent
44
+ * file measured on this machine is 926 lines, which fits; a file that
45
+ * does not is refused rather than truncated, since half a charter is a
46
+ * lens nobody wrote.
47
+ */
48
+ const MOST_CHARTER = 64_000;
49
+ /** What text costs where the limit actually is, in bytes. */
50
+ function weight(text) {
51
+ return new TextEncoder().encode(text).length;
52
+ }
53
+ /**
54
+ * Whether a path from a diff and a path from a directory walk name the
55
+ * same file.
56
+ *
57
+ * Exact equality was the first shape, and a diff does not promise the
58
+ * spelling a directory walk produces: git quotes a path with an
59
+ * unusual byte in it, and separators differ by platform. A comparison
60
+ * that is too strict fails open here, which is the wrong direction for
61
+ * the one rule that keeps the change under review out of the
62
+ * reviewer's prompt.
63
+ */
64
+ function sameFile(fromDiff, found) {
65
+ return plain(fromDiff) === plain(found);
66
+ }
67
+ /** A path reduced to what two spellings of it agree on. */
68
+ function plain(path) {
69
+ const unquoted = path.startsWith('"') && path.endsWith('"')
70
+ ? unquote(path.slice(1, -1))
71
+ : path;
72
+ return (unquoted
73
+ .replace(/\\/g, "/")
74
+ .replace(/^\.\//, "")
75
+ // The prefixes git writes on the two sides of a diff. A quoted
76
+ // path keeps them, and quoting is the default spelling for any
77
+ // path with a non-ascii byte in it, so leaving them on failed
78
+ // open exactly where the quoting was meant to be handled.
79
+ .replace(/^[ab]\//, "")
80
+ .normalize("NFC")
81
+ // Folded, because the filesystems this runs on mostly are, and a
82
+ // check treating two names one directory cannot tell apart as
83
+ // different names fails open.
84
+ .toLowerCase());
85
+ }
86
+ /**
87
+ * A path the way git quotes one, read back.
88
+ *
89
+ * Byte by byte rather than character by character, because git escapes
90
+ * the bytes: an accented letter arrives as two octal escapes that are
91
+ * one character, and decoding them separately produces a string that
92
+ * matches nothing on disk.
93
+ */
94
+ function unquote(quoted) {
95
+ const bytes = [];
96
+ for (let at = 0; at < quoted.length; at += 1) {
97
+ if (quoted[at] !== "\\") {
98
+ bytes.push(...new TextEncoder().encode(quoted[at]));
99
+ continue;
100
+ }
101
+ const octal = quoted.slice(at + 1, at + 4);
102
+ if (/^[0-7]{3}$/.test(octal)) {
103
+ bytes.push(Number.parseInt(octal, 8));
104
+ at += 3;
105
+ continue;
106
+ }
107
+ const escaped = quoted[at + 1] ?? "";
108
+ const literal = { n: "\n", t: "\t", r: "\r" }[escaped] ?? escaped;
109
+ bytes.push(...new TextEncoder().encode(literal));
110
+ at += 1;
111
+ }
112
+ return new TextDecoder().decode(Uint8Array.from(bytes));
113
+ }
114
+ /**
115
+ * The frontmatter of an agent file, read as the YAML it is.
116
+ *
117
+ * The persona reader splits on the first colon of each line, which is
118
+ * enough for files this project's own contract governs. These files
119
+ * are not that: they are written for another harness, in real YAML,
120
+ * and the descriptions on this machine run to a paragraph with colons
121
+ * in them. A line splitter turns a quoted or folded value into
122
+ * something that parses and is wrong, which is worse than refusing.
123
+ *
124
+ * Only scalars are taken. A nested value is not a name or a
125
+ * description, and reporting it as one would put a `[object Object]`
126
+ * in a listing somebody chooses from.
127
+ */
128
+ function frontmatterOf(text) {
129
+ const split = splitFrontmatter(text);
130
+ if (split === undefined)
131
+ return undefined;
132
+ let parsed;
133
+ try {
134
+ // The block the split itself found. Finding the fences a second
135
+ // way put whatever fell between the two rules into neither the
136
+ // fields nor the listing, and at the head of the charter.
137
+ parsed = parseYaml(split.block);
138
+ }
139
+ catch (error) {
140
+ return {
141
+ why: `Its frontmatter is not readable as YAML: ${error instanceof Error ? error.message.split("\n")[0] : String(error)}`,
142
+ };
143
+ }
144
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
145
+ return { why: "Its frontmatter is not a block of fields." };
146
+ }
147
+ const fields = {};
148
+ const unreadable = [];
149
+ for (const [key, value] of Object.entries(parsed)) {
150
+ // Named before it is dropped. Dropping first left the report of
151
+ // what was not adopted silent about exactly the fields it promises
152
+ // to name, because it never saw them.
153
+ if (value === null || typeof value === "object") {
154
+ unreadable.push(key);
155
+ continue;
156
+ }
157
+ fields[key] = String(value).trim();
158
+ }
159
+ return { fields, unreadable, body: split.body };
160
+ }
161
+ /**
162
+ * The two fields identity is made of.
163
+ *
164
+ * Everything else in the frontmatter belongs to the harness the file
165
+ * was written for, and is reported rather than adopted: the file is
166
+ * not wrong, it is right for something else. An allowlist of the
167
+ * mechanism seen so far was the first shape of this, and it named the
168
+ * fields already known about while staying silent on whatever a
169
+ * harness adds next, which is the reverse of what a report is for.
170
+ */
171
+ const IDENTITY = ["name", "description"];
172
+ /**
173
+ * Read what a repo's agent files offer.
174
+ *
175
+ * Lenient where the persona reader is strict, and the difference is
176
+ * who asked. A persona is named in somebody's own config, so a
177
+ * malformed one is a mistake they want reported loudly. Nobody asked
178
+ * for these, so one malformed file in a repo this operator does not
179
+ * maintain must not refuse every round run against it.
180
+ */
181
+ export function discoverAgents(files,
182
+ // Paths the change under review touches. A lens among them is
183
+ // refused rather than dropped quietly, because somebody asking for
184
+ // it by name has to learn that it was the diff that disqualified it
185
+ // and not a typo.
186
+ //
187
+ // Required, and deliberately so. It defaulted to the empty set at
188
+ // first, which meant the rule the whole design rests on was off
189
+ // unless a caller remembered to switch it on, and a caller that
190
+ // forgot got the unsafe behaviour silently. Pass an empty array to
191
+ // say the change touches nothing.
192
+ touched) {
193
+ const read = [];
194
+ const skipped = [];
195
+ const sourceOf = new Map();
196
+ for (const file of files) {
197
+ const split = frontmatterOf(file.text);
198
+ if (split === undefined) {
199
+ skipped.push({
200
+ path: file.path,
201
+ why: "It opens with no frontmatter block, so it names no lens.",
202
+ });
203
+ continue;
204
+ }
205
+ if ("why" in split) {
206
+ skipped.push({ path: file.path, why: split.why });
207
+ continue;
208
+ }
209
+ const name = split.fields.name;
210
+ if (name === undefined || name === "") {
211
+ skipped.push({
212
+ path: file.path,
213
+ why: "Its frontmatter gives no name, so there is nothing to call it.",
214
+ });
215
+ continue;
216
+ }
217
+ if (!/^[\w.-]+$/.test(name)) {
218
+ // A name is an id somebody types and a listing prints, so it is
219
+ // held to what an id may be. Unbounded, it is a line of the
220
+ // operator's listing that the repo gets to write, newline
221
+ // included.
222
+ skipped.push({
223
+ path: file.path,
224
+ why: "Its name is not a plain identifier, and a name is printed where somebody chooses a lens.",
225
+ });
226
+ continue;
227
+ }
228
+ const description = split.fields.description;
229
+ if (description === undefined || description === "") {
230
+ skipped.push({
231
+ path: file.path,
232
+ why: `The agent "${name}" gives no description, which is how somebody choosing a lens knows what it is for.`,
233
+ });
234
+ continue;
235
+ }
236
+ // Counted before anything can disqualify it. Skipping first let a
237
+ // change that edits one of two files claiming a name promote the
238
+ // other from contested to authoritative, handing the name to
239
+ // whichever file the change did not touch.
240
+ sourceOf.set(name, [...(sourceOf.get(name) ?? []), file.path]);
241
+ if (touched.some((path) => sameFile(path, file.path) ||
242
+ (file.reads !== undefined && sameFile(path, file.reads)))) {
243
+ skipped.push({
244
+ path: file.path,
245
+ why: `The change under review edits this file, so reading through "${name}" would let the author of the change write the reviewer's standing instruction.`,
246
+ });
247
+ continue;
248
+ }
249
+ const charter = split.body.trim();
250
+ if (weight(charter) > MOST_CHARTER) {
251
+ // Bytes, because the limit being guarded is a limit on one argv
252
+ // entry and that is counted in bytes. UTF-16 units let a charter
253
+ // written in a language that does not fit a byte a character run
254
+ // well past the line this claims to hold.
255
+ skipped.push({
256
+ path: file.path,
257
+ why: `The charter for "${name}" is ${weight(charter)} bytes, past the ${MOST_CHARTER} a lens may carry. A charter becomes an argument on the reviewer's process.`,
258
+ });
259
+ continue;
260
+ }
261
+ if (charter === "") {
262
+ skipped.push({
263
+ path: file.path,
264
+ why: `The agent "${name}" has an empty body, so it is a name for a lens that does not exist.`,
265
+ });
266
+ continue;
267
+ }
268
+ // Everything that is not identity, rather than a list of the two
269
+ // fields seen so far. An allowlist reports the fields already known
270
+ // about and stays silent on the ones a harness adds next, which is
271
+ // the reverse of what a report is for.
272
+ const notAdopted = [
273
+ ...Object.keys(split.fields).filter((field) => !IDENTITY.includes(field)),
274
+ ...split.unreadable,
275
+ ].sort();
276
+ read.push({
277
+ id: `${NAMESPACE}${name}`,
278
+ name,
279
+ description,
280
+ charter,
281
+ source: file.path,
282
+ ...(notAdopted.length === 0 ? {} : { notAdopted }),
283
+ });
284
+ }
285
+ // A name two files answer to identifies neither. Dropping both is
286
+ // the only answer that does not make which lens ran depend on the
287
+ // order a directory happened to list its entries.
288
+ const contested = (one) => (sourceOf.get(one.name) ?? []).length > 1;
289
+ for (const one of read.filter(contested)) {
290
+ skipped.push({
291
+ path: one.source,
292
+ why: `"${one.name}" is claimed by ${(sourceOf.get(one.name) ?? []).join(" and ")}, so the name identifies neither.`,
293
+ });
294
+ }
295
+ return { agents: read.filter((one) => !contested(one)), skipped };
296
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Where a finding may legitimately point.
3
+ *
4
+ * A reviewer told only "anchor to the diff" will name a line it read
5
+ * in the file and never noticed was outside a hunk, and the anchor
6
+ * then degrades to a body comment carrying a line number that means
7
+ * nothing. Telling it the ranges up front costs a few lines of
8
+ * prompt and removes the whole class of mistake.
9
+ *
10
+ * Context lines count. A reviewer may legitimately point at an
11
+ * unchanged line inside a hunk to say what the change around it
12
+ * breaks, and every backend accepts an anchor there.
13
+ */
14
+ import type { DiffModel } from "../diff.js";
15
+ /** A run of lines, inclusive at both ends. */
16
+ export interface LineRange {
17
+ from: number;
18
+ to: number;
19
+ }
20
+ /** Where one file will accept an anchor, per side. */
21
+ export interface FileRanges {
22
+ path: string;
23
+ new: LineRange[];
24
+ old: LineRange[];
25
+ }
26
+ /** Every file in a diff, with the ranges each side will accept. */
27
+ export declare function anchorableRanges(diff: DiffModel): FileRanges[];
28
+ /**
29
+ * One line per file, both sides named.
30
+ *
31
+ * A side with nothing is left out rather than printed as empty: a
32
+ * pure addition has no left side at all, and "old none" only invites
33
+ * a reviewer to wonder what it meant.
34
+ */
35
+ export declare function describeRanges(ranges: FileRanges[]): string;
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Where a finding may legitimately point.
3
+ *
4
+ * A reviewer told only "anchor to the diff" will name a line it read
5
+ * in the file and never noticed was outside a hunk, and the anchor
6
+ * then degrades to a body comment carrying a line number that means
7
+ * nothing. Telling it the ranges up front costs a few lines of
8
+ * prompt and removes the whole class of mistake.
9
+ *
10
+ * Context lines count. A reviewer may legitimately point at an
11
+ * unchanged line inside a hunk to say what the change around it
12
+ * breaks, and every backend accepts an anchor there.
13
+ */
14
+ import { filePath } from "../diff.js";
15
+ /** Every file in a diff, with the ranges each side will accept. */
16
+ export function anchorableRanges(diff) {
17
+ return diff.files.map((file) => ({
18
+ path: filePath(file),
19
+ new: sideRanges(file, "new"),
20
+ old: sideRanges(file, "old"),
21
+ }));
22
+ }
23
+ /**
24
+ * One line per file, both sides named.
25
+ *
26
+ * A side with nothing is left out rather than printed as empty: a
27
+ * pure addition has no left side at all, and "old none" only invites
28
+ * a reviewer to wonder what it meant.
29
+ */
30
+ export function describeRanges(ranges) {
31
+ if (ranges.length === 0) {
32
+ return "No line in this change can hold an anchor, so every finding has to be file-scoped or about the change as a whole.";
33
+ }
34
+ return ranges
35
+ .map((file) => {
36
+ const sides = [];
37
+ if (file.new.length > 0)
38
+ sides.push(`new ${list(file.new)}`);
39
+ if (file.old.length > 0)
40
+ sides.push(`old ${list(file.old)}`);
41
+ return `${file.path}: ${sides.join(" | ")}`;
42
+ })
43
+ .join("\n");
44
+ }
45
+ /**
46
+ * The ranges one side of one file will accept.
47
+ *
48
+ * Taken from the line numbers the hunks actually carry rather than
49
+ * from the hunk headers, since a header counts lines on its side
50
+ * while a range has to be bounded by lines that exist on it. One
51
+ * range per hunk: the gap between two hunks is not in the diff, so a
52
+ * range spanning it would invite an anchor nothing can hold.
53
+ */
54
+ function sideRanges(file, side) {
55
+ const ranges = [];
56
+ for (const hunk of file.hunks) {
57
+ let from;
58
+ let to;
59
+ for (const line of hunk.lines) {
60
+ const at = side === "new" ? line.newLine : line.oldLine;
61
+ if (at === undefined)
62
+ continue;
63
+ if (from === undefined || at < from)
64
+ from = at;
65
+ if (to === undefined || at > to)
66
+ to = at;
67
+ }
68
+ if (from !== undefined && to !== undefined)
69
+ ranges.push({ from, to });
70
+ }
71
+ return ranges;
72
+ }
73
+ /** Several ranges on one side, as a reader would say them. */
74
+ function list(ranges) {
75
+ return ranges.map((r) => `${r.from}-${r.to}`).join(", ");
76
+ }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * What a round says when somebody reads it back.
3
+ *
4
+ * Composed here rather than where it is printed, because the order and
5
+ * the wording are the parts that go wrong and neither is visible from
6
+ * a test of the extension. A round's arithmetic had cases, its panel
7
+ * had cases, its store had cases, and the paragraph a reader actually
8
+ * sees was assembled in a private function nothing could reach.
9
+ *
10
+ * The view stays out. A line says what kind of thing it is and the
11
+ * side that draws it decides what that looks like, which keeps this
12
+ * module free of glyphs, colour and width while still owning what is
13
+ * said and in what order.
14
+ */
15
+ import type { AskRun } from "./run.js";
16
+ /** One line of an answer, and what kind of line it is. */
17
+ export interface AnswerLine {
18
+ /**
19
+ * How to draw it: refused for something that changes how the round
20
+ * should be read, failed for a participant that did not answer.
21
+ * Absent for ordinary prose.
22
+ */
23
+ mark?: "refused" | "failed";
24
+ text: string;
25
+ }
26
+ /** Anything the caller knows that the round does not. */
27
+ export interface AnswerContext {
28
+ /**
29
+ * Warnings gathered while the round ran.
30
+ *
31
+ * Taken as they are and put last. These arrive already painted by
32
+ * some callers, which is the one place the no-view rule leaks, and
33
+ * it leaks inward: this module still paints nothing.
34
+ */
35
+ warnings?: string[];
36
+ /** Something about the reading itself, such as which tree was cut. */
37
+ caveat?: string;
38
+ /**
39
+ * That somebody answered in this exchange, which disproves anything
40
+ * the round says about the session being unable to run reviewers.
41
+ *
42
+ * The sequence the advisory exists for ends here: pi dies mid-round,
43
+ * the reader restarts, the reader retries, and the retry works.
44
+ * Every outcome that failed still carries the diagnosis, because
45
+ * they did fail, but printing it over a reviewer that has just
46
+ * answered tells somebody to restart a session they have already
47
+ * restarted and that is demonstrably fine.
48
+ */
49
+ sessionAnswered?: boolean;
50
+ }
51
+ /** One round, in a line, with whatever its stopped reviewers left. */
52
+ export declare function describeRun(run: AskRun): string;
53
+ /** What a round's answer says, in order. */
54
+ export declare function roundAnswer(run: AskRun, said?: AnswerContext): AnswerLine[];
@@ -0,0 +1,209 @@
1
+ /**
2
+ * What a round says when somebody reads it back.
3
+ *
4
+ * Composed here rather than where it is printed, because the order and
5
+ * the wording are the parts that go wrong and neither is visible from
6
+ * a test of the extension. A round's arithmetic had cases, its panel
7
+ * had cases, its store had cases, and the paragraph a reader actually
8
+ * sees was assembled in a private function nothing could reach.
9
+ *
10
+ * The view stays out. A line says what kind of thing it is and the
11
+ * side that draws it decides what that looks like, which keeps this
12
+ * module free of glyphs, colour and width while still owning what is
13
+ * said and in what order.
14
+ */
15
+ import { count as group } from "../../result/counts.js";
16
+ // The leaf, not the barrel. `lib/ui/index.ts` re-exports the panel,
17
+ // which imports pi's TUI at module scope, and an ESM re-export
18
+ // evaluates what it re-exports from: one convenient import here would
19
+ // put pi's runtime in the module graph of a library that has never
20
+ // needed it. Every other `count` consumer in `lib/` takes the leaf
21
+ // for the same reason.
22
+ import { count } from "../../ui/count.js";
23
+ import { failureLines, runSummary, staleRuntimeAdvisory, stoppedNotes, } from "./run.js";
24
+ /** One round, in a line, with whatever its stopped reviewers left. */
25
+ export function describeRun(run) {
26
+ const summary = runSummary(run);
27
+ const failed = summary.failed > 0 ? `, ${summary.failed} failed` : "";
28
+ // Only a council carries this, and only while it is unsettled, so
29
+ // the sentence says what is actually known: it opened and nothing
30
+ // closed it. Whether that is a dead session or a round still
31
+ // running in another window is not ours to assert, and the useful
32
+ // half is the same either way, since the reviewers' answers are on
33
+ // disk under this id.
34
+ //
35
+ // Its arithmetic used to be a finished round's, and read as an
36
+ // accusation: a round that opened and has recorded nothing rendered
37
+ // as "0/7 answered, 7 failed", which says seven reviewers were
38
+ // asked and dropped. Nobody has asked them anything yet. The
39
+ // summary now separates the two, so this only has to say it.
40
+ const pending = summary.pending > 0 ? `, ${summary.pending} still to hear from` : "";
41
+ const abandoned = run.closed === true
42
+ ? ", closed unfinished"
43
+ : run.open === true
44
+ ? ", opened and never settled"
45
+ : "";
46
+ // Two words in the listing, not the whole sentence. This is the
47
+ // surface a reader browses sixty rounds through, and until now it
48
+ // was the one place that could not say a round had read the wrong
49
+ // tree: the sentence went into the answer of the session that
50
+ // started the round, and the listing showed findings and a bill
51
+ // beside a round whose findings were formed against something
52
+ // else. The sentence itself is on the run for whoever wants it.
53
+ const unpinned = run.unpinned === undefined ? "" : ", tree not pinned";
54
+ const head = `${run.id}: ${summary.answered}/${summary.asked} answered${failed}${pending}, ${count(summary.findings, "finding")}${spent(summary)}${unpinned}${conditions(run)}${abandoned}`;
55
+ // A stopped reviewer's answer was being recorded and never shown,
56
+ // which is most of the way to losing it: the path is only useful to
57
+ // somebody who knows to look for it.
58
+ return [head, ...stoppedNotes(run).map((note) => ` ${note}`)].join("\n");
59
+ }
60
+ /**
61
+ * What a round was run under, in as few words as it takes.
62
+ *
63
+ * A field nothing prints is a field nobody reads, and the guide told
64
+ * people to read this one off the run. So the listing says it, on the
65
+ * same terms as the tree caveat beside it: the exceptional states get
66
+ * words and the ordinary one gets silence.
67
+ *
68
+ * The exception here is what the reader would want stopped. A round
69
+ * whose reviewers ran with the operator's whole setup loaded is a
70
+ * round two people cannot reproduce between them, and a round whose
71
+ * conventions could not be quoted read a change against rules it was
72
+ * told about and never shown.
73
+ *
74
+ * A round that recorded nothing says nothing, because that is most of
75
+ * the ledger and a phrase on every historic round is a phrase nobody
76
+ * sees after the first screen.
77
+ */
78
+ function conditions(run) {
79
+ const given = run.given;
80
+ if (given === undefined)
81
+ return "";
82
+ return [
83
+ given.isolated ? "" : ", reviewers not isolated",
84
+ given.quoted?.withheld === true ? ", conventions not quotable" : "",
85
+ given.quoted?.cut === true ? ", conventions cut" : "",
86
+ ].join("");
87
+ }
88
+ /**
89
+ * What the round burned, when anybody said.
90
+ *
91
+ * Held in the ledger since the first round and shown by nothing until
92
+ * now: a billion tokens and several hundred dollars across sixty-odd
93
+ * rounds, reachable only by reading the JSON. A council costs about
94
+ * as much as a good dinner, and the reader deciding whether to run
95
+ * another is the person who should be told.
96
+ *
97
+ * Silent when nobody reported, because a zero would claim the round
98
+ * was free rather than admit it was not measured.
99
+ */
100
+ function spent(summary) {
101
+ const said = [];
102
+ // Grouped by hand rather than by locale. `toLocaleString` reads
103
+ // whatever ICU the host was built with, and a line that groups with
104
+ // spaces on one machine and commas on another is a line two readers
105
+ // cannot compare.
106
+ if (summary.tokens !== undefined)
107
+ said.push(`${grouped(summary.tokens)} tokens`);
108
+ if (summary.cost !== undefined)
109
+ said.push(money(summary.cost));
110
+ if (said.length === 0)
111
+ return "";
112
+ // "At least", when somebody who was asked reported nothing. A
113
+ // subtotal in the words of a total is the same lie as a zero for a
114
+ // round nobody priced, and it runs the wrong way: the participants
115
+ // most likely to be missing are the ones that died.
116
+ const so = summary.partlyPriced === true ? "at least " : "";
117
+ return `, ${so}${said.join(", ")}`;
118
+ }
119
+ /**
120
+ * A cost, without rounding a real one away.
121
+ *
122
+ * Two decimals turn anything under half a cent into "$0.00", which is
123
+ * the one claim this refuses to make: that a round was free when it
124
+ * was billed.
125
+ */
126
+ function money(cost) {
127
+ return cost > 0 && cost < 0.005 ? "under $0.01" : `$${cost.toFixed(2)}`;
128
+ }
129
+ /** A whole number with thousands separated, the same way everywhere. */
130
+ function grouped(value) {
131
+ // Rounded here, grouped there. The rule had been written out three
132
+ // times across the package, which is three chances for one of them
133
+ // to answer differently about the same number.
134
+ return group(Math.round(value));
135
+ }
136
+ /** What a round's answer says, in order. */
137
+ export function roundAnswer(run, said) {
138
+ const summary = runSummary(run);
139
+ // One element per line, because a mark paints a line: an element
140
+ // holding two would put the glyph on the first and leave the second
141
+ // looking like prose.
142
+ const lines = describeRun(run)
143
+ .split("\n")
144
+ .map((text) => ({ text }));
145
+ // Before everything, not after: a caveat about which tree was read
146
+ // changes how every finding below it should be weighed.
147
+ //
148
+ // Falling back to the run means a round collected by a later
149
+ // session says it too. That reader has nothing but the file, and
150
+ // the file records a witness commit whether or not the reviewers
151
+ // could be given it. The caller's own caveat wins where there is
152
+ // one, since a live round can be more specific than what was
153
+ // written down.
154
+ const caveat = said?.caveat ?? run.unpinned;
155
+ if (caveat !== undefined)
156
+ lines.push({ mark: "refused", text: caveat });
157
+ // Above the roll call rather than among it, and the roll call says
158
+ // "as above" instead of repeating the paragraph, or hoisting a
159
+ // sentence already on every outcome would make a seven-reviewer
160
+ // round eight copies long rather than one.
161
+ const advisory = said?.sessionAnswered === true ? undefined : staleRuntimeAdvisory(run);
162
+ if (advisory !== undefined)
163
+ lines.push({ mark: "refused", text: advisory });
164
+ // Told what was hoisted rather than deciding it again, so a
165
+ // suppressed advisory cannot leave a roll call of reviewers
166
+ // pointing at a line that is not there.
167
+ const failures = failureLines(run, advisory);
168
+ for (const line of failures)
169
+ lines.push({ mark: "failed", text: line });
170
+ const nothing = nothingCameBack(run, summary.answered, failures.length);
171
+ if (nothing !== undefined)
172
+ lines.push({ text: nothing });
173
+ for (const warning of said?.warnings ?? [])
174
+ lines.push({ text: warning });
175
+ return lines;
176
+ }
177
+ /**
178
+ * That the round came back with nothing, when it did, said after the
179
+ * failures rather than before them.
180
+ *
181
+ * It used to say the failures above were the whole story while being
182
+ * printed above them, and to say it on a round that had failed at
183
+ * nothing: a council that has just opened has answered nobody and
184
+ * blamed nobody, and telling its reader that failures explain the
185
+ * silence invents seven that do not exist.
186
+ *
187
+ * Counted off the failures actually printed rather than off the
188
+ * summary. The two disagree on a settled round with a silent
189
+ * participant, which the summary calls failed and the roll call
190
+ * cannot name, and the sentence points at the roll call.
191
+ *
192
+ * An open round is the third case and the one the collect path
193
+ * reaches: every participant carries a failure saying nothing was on
194
+ * disk, and the warnings under it say the transcripts may be
195
+ * somewhere else and the round is deliberately left open. Calling
196
+ * that the whole story contradicts the next line down.
197
+ */
198
+ function nothingCameBack(run, answered, named) {
199
+ if (answered > 0)
200
+ return undefined;
201
+ if (run.open === true) {
202
+ return named > 0
203
+ ? "Nothing came back from anybody, and the round is still open, so what is above may not be the end of it."
204
+ : "Nobody has answered yet, and nothing has gone wrong: the round is still open.";
205
+ }
206
+ return named > 0
207
+ ? "Nobody answered, so nothing was recorded. The failures above are the whole story."
208
+ : "Nobody answered, and nothing was recorded to say why.";
209
+ }