@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,82 @@
1
+ /**
2
+ * Pointing a stack's changes back at what they now sit on.
3
+ *
4
+ * A local restack moves branches. It does not touch the changes those
5
+ * branches are proposed as, so afterwards each one still claims to
6
+ * merge into whatever it targeted when it went up. On a stack whose
7
+ * bottom has landed, that is a change targeting a branch nobody is
8
+ * merging any more, and the diff it shows is against the wrong thing.
9
+ *
10
+ * Whose job it is to fix that differs by backend, which is what
11
+ * deferred this the first time. On one, retargeting is per change and
12
+ * the caller walks the stack doing it. On another it is a single stack
13
+ * operation, because the backend holds the stack itself and moving one
14
+ * change without the others would leave its own model inconsistent.
15
+ *
16
+ * So the substrate does what it does for a diff: implement the general
17
+ * case over the parts every provider has, and stand aside where a
18
+ * provider says it owns the whole operation. The generic walk is not a
19
+ * lesser version of the native one; for a backend that has no notion
20
+ * of a stack it is the only version there is, and it is right there.
21
+ */
22
+ /**
23
+ * Which changes in a stack point at the wrong base, and where they go.
24
+ *
25
+ * Roots are excluded rather than pointed at the trunk. A root already
26
+ * targets the trunk in the ordinary case, and where it does not, the
27
+ * stack cannot say whether that is wrong: somebody may be proposing a
28
+ * root against a release branch on purpose, and moving it to the trunk
29
+ * would retarget a change nobody asked about onto a branch that asks a
30
+ * different team to review it.
31
+ */
32
+ export function retargetPlan(stack) {
33
+ const moves = [];
34
+ const skipped = [];
35
+ for (const node of stack.nodes) {
36
+ if (node.proposal === undefined) {
37
+ // Nothing to retarget. A branch with no change on it is a
38
+ // perfectly ordinary part of a stack somebody has not put up
39
+ // yet, so this is a fact rather than a problem.
40
+ skipped.push({ ref: node.ref, why: "nothing is proposed on it" });
41
+ continue;
42
+ }
43
+ if (node.parent === undefined) {
44
+ skipped.push({
45
+ ref: node.ref,
46
+ why: "it is a root, so what it targets is not the stack's to decide",
47
+ });
48
+ continue;
49
+ }
50
+ const now = node.proposal.base;
51
+ if (now === node.parent)
52
+ continue;
53
+ moves.push({ ref: node.ref, from: now, to: node.parent });
54
+ }
55
+ return { moves, skipped };
56
+ }
57
+ /**
58
+ * Who should carry out a retarget, and why that is the right answer.
59
+ *
60
+ * Named rather than decided silently because the two fail differently
61
+ * and a caller has to be able to report which happened. A native pass
62
+ * either moves the stack or does not. A per-change walk can stop half
63
+ * way, leaving some changes moved and some not, and somebody reading
64
+ * "retarget failed" needs to know which of those they are looking at.
65
+ */
66
+ export function retargetRoute(stacking, authoring) {
67
+ if (stacking?.restack !== undefined) {
68
+ return {
69
+ kind: "native",
70
+ why: "this backend holds the stack itself, so it moves as one",
71
+ };
72
+ }
73
+ if (authoring?.edit !== undefined) {
74
+ return {
75
+ kind: "per-change",
76
+ why: "this backend has no stack operation, so each change is moved in turn",
77
+ };
78
+ }
79
+ return {
80
+ refusal: "This backend can neither restack nor edit a change's base, so there is no way to retarget from here. Move the changes wherever they are hosted.",
81
+ };
82
+ }
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Whether you have reviewed this before, and whether it has moved since.
3
+ *
4
+ * Re-reviewing a change means reading the whole diff again and hoping to notice
5
+ * which parts are new. That is the wrong job for a person: the backend knows
6
+ * which commit was on top when the review was posted, and nothing was recording
7
+ * it.
8
+ *
9
+ * So it is recorded, per change, when a review is published. What that buys is
10
+ * modest and worth being precise about. It says whether the change has moved
11
+ * since you last looked, which is the difference between re-reading a diff and
12
+ * knowing you do not have to. It does not say what changed: a diff between two
13
+ * commits needs the commits, which means a local tree, and a backend that
14
+ * publishes no fetchable ref cannot supply one. Where that is possible the
15
+ * caller can go and take the diff itself; where it is not, knowing the change
16
+ * has moved is still the answer to the question people actually ask.
17
+ *
18
+ * The store is deliberately dumb. It is a record of what happened, not a cache:
19
+ * nothing here is derived, so nothing here can go stale in a way that lies.
20
+ */
21
+ import type { ChangeRef, Proposal } from "./change.js";
22
+ /** A review you posted, and the change as it stood then. */
23
+ export interface Visit {
24
+ /** The change, keyed the way every other store here keys one. */
25
+ key: string;
26
+ /** The tip commit when the review was posted, when the backend said. */
27
+ commit?: string;
28
+ /** When, as an ISO instant. */
29
+ at: string;
30
+ /** What the review said as a whole, for a listing. */
31
+ verdict?: string;
32
+ }
33
+ /** Where a change stands relative to the last time you reviewed it. */
34
+ export type SinceLastVisit = {
35
+ kind: "never";
36
+ } | {
37
+ kind: "unmoved";
38
+ visit: Visit;
39
+ } | {
40
+ kind: "moved";
41
+ visit: Visit;
42
+ /** The tip now. */
43
+ commit: string;
44
+ } | {
45
+ kind: "cannot-tell";
46
+ visit: Visit;
47
+ /** Why, in words. */
48
+ because: string;
49
+ };
50
+ /** Recording and reading the reviews you have posted. */
51
+ export interface VisitLog {
52
+ record(ref: ChangeRef, visit: Omit<Visit, "key">): Visit;
53
+ /** The most recent visit to this change, if any. */
54
+ last(ref: ChangeRef): Visit | undefined;
55
+ /** Every visit, newest first. */
56
+ all(): readonly Visit[];
57
+ }
58
+ /**
59
+ * A log of reviews posted, kept as one file per change.
60
+ *
61
+ * One file per change rather than one file for everything, for the same reason
62
+ * the attachment store is: two sessions reviewing two changes at once write to
63
+ * two files and neither has to merge the other's.
64
+ */
65
+ export declare function createVisitLog(dir: string): VisitLog;
66
+ /**
67
+ * What has happened to a change since you last reviewed it.
68
+ *
69
+ * Four answers rather than a boolean, because a caller acts differently on each
70
+ * and collapsing them loses the distinction that matters. Never reviewed is not
71
+ * the same as reviewed and unchanged, and neither is the same as a backend that
72
+ * will not say which commit is on top: that last one has to read as its own
73
+ * answer, or a change that moved silently looks like one that did not move.
74
+ */
75
+ export declare function sinceLastVisit(visit: Visit | undefined, proposal: Proposal): SinceLastVisit;
76
+ /** Said in words, for a listing. */
77
+ export declare function describeVisit(said: SinceLastVisit): string;
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Whether you have reviewed this before, and whether it has moved since.
3
+ *
4
+ * Re-reviewing a change means reading the whole diff again and hoping to notice
5
+ * which parts are new. That is the wrong job for a person: the backend knows
6
+ * which commit was on top when the review was posted, and nothing was recording
7
+ * it.
8
+ *
9
+ * So it is recorded, per change, when a review is published. What that buys is
10
+ * modest and worth being precise about. It says whether the change has moved
11
+ * since you last looked, which is the difference between re-reading a diff and
12
+ * knowing you do not have to. It does not say what changed: a diff between two
13
+ * commits needs the commits, which means a local tree, and a backend that
14
+ * publishes no fetchable ref cannot supply one. Where that is possible the
15
+ * caller can go and take the diff itself; where it is not, knowing the change
16
+ * has moved is still the answer to the question people actually ask.
17
+ *
18
+ * The store is deliberately dumb. It is a record of what happened, not a cache:
19
+ * nothing here is derived, so nothing here can go stale in a way that lies.
20
+ */
21
+ import { mkdirSync, readdirSync, readFileSync, writeFileSync } from "node:fs";
22
+ import { join } from "node:path";
23
+ import { changeKey } from "./keys.js";
24
+ /** A file name that cannot collide or escape its directory. */
25
+ function fileFor(key) {
26
+ return `${key.replace(/[^a-zA-Z0-9._-]+/g, "-")}.json`;
27
+ }
28
+ /**
29
+ * A log of reviews posted, kept as one file per change.
30
+ *
31
+ * One file per change rather than one file for everything, for the same reason
32
+ * the attachment store is: two sessions reviewing two changes at once write to
33
+ * two files and neither has to merge the other's.
34
+ */
35
+ export function createVisitLog(dir) {
36
+ function read() {
37
+ let names;
38
+ try {
39
+ names = readdirSync(dir).filter((name) => name.endsWith(".json"));
40
+ }
41
+ catch {
42
+ // No directory yet means nothing has been reviewed, which is a
43
+ // state and not a failure.
44
+ return [];
45
+ }
46
+ const found = [];
47
+ for (const name of names) {
48
+ try {
49
+ const held = JSON.parse(readFileSync(join(dir, name), "utf8"));
50
+ if (typeof held === "object" &&
51
+ held !== null &&
52
+ typeof held.key === "string" &&
53
+ typeof held.at === "string") {
54
+ found.push(held);
55
+ }
56
+ }
57
+ catch {
58
+ // A half-written or hand-edited file is skipped rather than
59
+ // bringing down every other answer with it.
60
+ }
61
+ }
62
+ return found.sort((one, other) => other.at.localeCompare(one.at));
63
+ }
64
+ return {
65
+ record(ref, visit) {
66
+ const key = changeKey(ref);
67
+ const held = { ...visit, key };
68
+ mkdirSync(dir, { recursive: true });
69
+ writeFileSync(join(dir, fileFor(key)), JSON.stringify(held, null, 2));
70
+ return held;
71
+ },
72
+ last(ref) {
73
+ const key = changeKey(ref);
74
+ return read().find((visit) => visit.key === key);
75
+ },
76
+ all: read,
77
+ };
78
+ }
79
+ /**
80
+ * What has happened to a change since you last reviewed it.
81
+ *
82
+ * Four answers rather than a boolean, because a caller acts differently on each
83
+ * and collapsing them loses the distinction that matters. Never reviewed is not
84
+ * the same as reviewed and unchanged, and neither is the same as a backend that
85
+ * will not say which commit is on top: that last one has to read as its own
86
+ * answer, or a change that moved silently looks like one that did not move.
87
+ */
88
+ export function sinceLastVisit(visit, proposal) {
89
+ if (visit === undefined)
90
+ return { kind: "never" };
91
+ if (visit.commit === undefined) {
92
+ return {
93
+ kind: "cannot-tell",
94
+ visit,
95
+ because: "the tip commit was not recorded when you reviewed, so there is nothing to compare against",
96
+ };
97
+ }
98
+ if (proposal.headCommit === undefined) {
99
+ return {
100
+ kind: "cannot-tell",
101
+ visit,
102
+ because: "this backend does not report which commit is on top",
103
+ };
104
+ }
105
+ if (proposal.headCommit === visit.commit)
106
+ return { kind: "unmoved", visit };
107
+ return { kind: "moved", visit, commit: proposal.headCommit };
108
+ }
109
+ /** Said in words, for a listing. */
110
+ export function describeVisit(said) {
111
+ switch (said.kind) {
112
+ case "never":
113
+ return "You have not reviewed this before.";
114
+ case "unmoved":
115
+ return `You reviewed this on ${said.visit.at.slice(0, 10)} and it has not moved since.`;
116
+ case "moved":
117
+ return `You reviewed this on ${said.visit.at.slice(0, 10)} at ${said.visit.commit?.slice(0, 12)}. It is now at ${said.commit.slice(0, 12)}, so there is new work to read.`;
118
+ case "cannot-tell":
119
+ return `You reviewed this on ${said.visit.at.slice(0, 10)}, but ${said.because}.`;
120
+ }
121
+ }
@@ -0,0 +1,110 @@
1
+ /**
2
+ * A stack: refs pointing at refs.
3
+ *
4
+ * Topology comes first and proposals decorate it, which is
5
+ * the inverse of deriving a stack from a list of pull
6
+ * requests. The inversion matters because a stack of
7
+ * branches nobody has proposed yet is still a stack, and
8
+ * because the one backend that projects stacks server-side
9
+ * hands back topology whether or not every node has a
10
+ * proposal on it.
11
+ *
12
+ * Every stack says where its shape came from. One backend
13
+ * knows the answer, one has to guess from base and head
14
+ * names, and a bare repo reads it out of local config. A
15
+ * consumer that cannot tell those apart will present a
16
+ * guess as fact.
17
+ */
18
+ import type { Proposal } from "./change.js";
19
+ /**
20
+ * Where a stack's shape came from. `authoritative` means the
21
+ * backend recorded the parentage; `derived` means it was
22
+ * inferred and may be wrong at the edges.
23
+ */
24
+ export type StackProvenance = "authoritative" | "derived";
25
+ /** One ref in a stack. */
26
+ export interface StackNode {
27
+ /** The ref this node is, e.g. `refs/heads/topic`. */
28
+ ref: string;
29
+ /** The ref it sits on, absent for the root. */
30
+ parent?: string;
31
+ /** Tip commit of `ref`, when known. */
32
+ headCommit?: string;
33
+ /**
34
+ * Commit where this node left its parent, when known.
35
+ * Every local stacking tool surveyed records this, since
36
+ * it is what makes a restack possible after a rebase.
37
+ */
38
+ forkPoint?: string;
39
+ /** The proposal on this node, when one exists. */
40
+ proposal?: Proposal;
41
+ /**
42
+ * True when the parent has moved since this node last
43
+ * agreed with it, where the provider can tell.
44
+ */
45
+ behindParent?: boolean;
46
+ }
47
+ /** A stack, rooted at a trunk. */
48
+ export interface Stack {
49
+ provenance: StackProvenance;
50
+ /**
51
+ * The trunk the stack ultimately targets, when known.
52
+ * Not a node: the trunk is not part of the stack.
53
+ */
54
+ trunk?: string;
55
+ /**
56
+ * Nodes in topological order, roots before children. A
57
+ * stack may fan out, so this is a tree flattened rather
58
+ * than a chain.
59
+ */
60
+ nodes: StackNode[];
61
+ /**
62
+ * Index in `nodes` of the ref the caller is standing on,
63
+ * when the question has an answer.
64
+ */
65
+ cursor?: number;
66
+ }
67
+ /**
68
+ * Where one step through a stack lands.
69
+ *
70
+ * Four outcomes rather than a node or nothing, because each one
71
+ * needs saying differently. Standing at the tip is not a failure,
72
+ * a node that fans out has no single answer, and a stack that
73
+ * does not mention the ref at all is a partial answer from the
74
+ * provider rather than a wrong question.
75
+ */
76
+ export type StackStep =
77
+ /** One place to go, so go there. */
78
+ {
79
+ kind: "move";
80
+ node: StackNode;
81
+ }
82
+ /** Several children, so the caller has to choose. */
83
+ | {
84
+ kind: "choose";
85
+ candidates: StackNode[];
86
+ }
87
+ /** Nothing that way: the tip going up, the trunk going down. */
88
+ | {
89
+ kind: "edge";
90
+ at: "tip" | "root";
91
+ }
92
+ /** This stack does not place the ref at all. */
93
+ | {
94
+ kind: "unplaced";
95
+ };
96
+ /**
97
+ * Step through a stack from the ref you are standing on.
98
+ *
99
+ * Going up is the interesting direction, because a stack is a
100
+ * tree flattened rather than a chain, so a node can have several
101
+ * children. Picking one would land the reader on a sibling branch
102
+ * without saying so, which is the same mistake as guessing
103
+ * between attached changes, and it gets the same answer: report
104
+ * the candidates and let them choose.
105
+ *
106
+ * Going down is always unambiguous, since a node has one parent.
107
+ * A parent the stack does not contain means the parent is the
108
+ * trunk, and the trunk is deliberately not a node.
109
+ */
110
+ export declare function stackStep(stack: Stack, fromRef: string, direction: "next" | "prev"): StackStep;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * A stack: refs pointing at refs.
3
+ *
4
+ * Topology comes first and proposals decorate it, which is
5
+ * the inverse of deriving a stack from a list of pull
6
+ * requests. The inversion matters because a stack of
7
+ * branches nobody has proposed yet is still a stack, and
8
+ * because the one backend that projects stacks server-side
9
+ * hands back topology whether or not every node has a
10
+ * proposal on it.
11
+ *
12
+ * Every stack says where its shape came from. One backend
13
+ * knows the answer, one has to guess from base and head
14
+ * names, and a bare repo reads it out of local config. A
15
+ * consumer that cannot tell those apart will present a
16
+ * guess as fact.
17
+ */
18
+ /**
19
+ * Step through a stack from the ref you are standing on.
20
+ *
21
+ * Going up is the interesting direction, because a stack is a
22
+ * tree flattened rather than a chain, so a node can have several
23
+ * children. Picking one would land the reader on a sibling branch
24
+ * without saying so, which is the same mistake as guessing
25
+ * between attached changes, and it gets the same answer: report
26
+ * the candidates and let them choose.
27
+ *
28
+ * Going down is always unambiguous, since a node has one parent.
29
+ * A parent the stack does not contain means the parent is the
30
+ * trunk, and the trunk is deliberately not a node.
31
+ */
32
+ export function stackStep(stack, fromRef, direction) {
33
+ const standing = stack.nodes.find((n) => n.ref === fromRef);
34
+ if (!standing)
35
+ return { kind: "unplaced" };
36
+ if (direction === "next") {
37
+ const children = stack.nodes.filter((n) => n.parent === fromRef);
38
+ if (children.length === 0)
39
+ return { kind: "edge", at: "tip" };
40
+ const only = children[0];
41
+ if (children.length === 1 && only !== undefined) {
42
+ return { kind: "move", node: only };
43
+ }
44
+ return { kind: "choose", candidates: children };
45
+ }
46
+ const parent = standing.parent === undefined
47
+ ? undefined
48
+ : stack.nodes.find((n) => n.ref === standing.parent);
49
+ return parent === undefined
50
+ ? { kind: "edge", at: "root" }
51
+ : { kind: "move", node: parent };
52
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Turns detected section violations into a single skill-grounded
3
+ * instruction the guardian hands back to the author. The message
4
+ * names every invented and missing heading and points at the
5
+ * format skill so the retry is informed, not a guess.
6
+ */
7
+ import type { SectionViolation } from "./detect.js";
8
+ /** Format section violations into a block message, or "" if none. */
9
+ export declare function formatSectionBlock(violations: SectionViolation[], entityLabel: string, skill: string): string;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Turns detected section violations into a single skill-grounded
3
+ * instruction the guardian hands back to the author. The message
4
+ * names every invented and missing heading and points at the
5
+ * format skill so the retry is informed, not a guess.
6
+ */
7
+ /** Format section violations into a block message, or "" if none. */
8
+ export function formatSectionBlock(violations, entityLabel, skill) {
9
+ if (violations.length === 0)
10
+ return "";
11
+ const invented = violations.filter((v) => v.issue === "invented");
12
+ const missing = violations.filter((v) => v.issue === "missing");
13
+ const misordered = violations.filter((v) => v.issue === "misordered");
14
+ const lines = [
15
+ `This ${entityLabel} body does not use the sections the`,
16
+ `${skill} skill defines. The section set is closed: use exactly`,
17
+ "those headings, written exactly as the skill shows them (the",
18
+ "emoji, the name and the heading level together). Fix the body",
19
+ "and try again.",
20
+ "",
21
+ ];
22
+ if (invented.length > 0) {
23
+ lines.push("Headings that are not part of the set, remove or rename them:");
24
+ for (const v of invented)
25
+ lines.push(` ${v.found}`);
26
+ lines.push("");
27
+ }
28
+ if (missing.length > 0) {
29
+ lines.push("Required headings the body is missing, add them:");
30
+ for (const v of missing)
31
+ lines.push(` ${v.found}`);
32
+ lines.push("");
33
+ }
34
+ if (misordered.length > 0) {
35
+ lines.push("The sections are out of order; put them in this order:");
36
+ for (const v of misordered)
37
+ lines.push(` ${v.found}`);
38
+ lines.push("");
39
+ }
40
+ lines.push(`See the ${skill} skill for what belongs in each section.`);
41
+ return lines.join("\n");
42
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Section convention detection: finds headings in a PR or issue
3
+ * body that are not in the sanctioned set (invented) and
4
+ * sanctioned headings that the body omits (missing). The
5
+ * sanctioned set is a closed list of exact heading strings,
6
+ * including the heading level and the emoji, so a sanctioned
7
+ * name at the wrong level or with a swapped emoji reads as
8
+ * invented. Detection never rewrites; it names the offending or
9
+ * absent headings and leaves the repair to the author.
10
+ */
11
+ import type { Violation } from "../gate/index.js";
12
+ /** A single section convention violation. */
13
+ export interface SectionViolation extends Violation {
14
+ readonly kind: "section";
15
+ /**
16
+ * invented: a heading not in the set. missing: a required
17
+ * heading absent. misordered: the present sanctioned headings
18
+ * are not in the order the skill mandates.
19
+ */
20
+ readonly issue: "invented" | "missing" | "misordered";
21
+ /**
22
+ * The offending heading (invented), the absent one (missing) or
23
+ * the required order of the present headings (misordered).
24
+ */
25
+ readonly found: string;
26
+ }
27
+ /**
28
+ * Find every heading in a body that is not sanctioned (invented)
29
+ * and every sanctioned heading the body omits (missing).
30
+ */
31
+ export declare function detectSectionViolations(body: string, sanctioned: readonly string[]): SectionViolation[];
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Section convention detection: finds headings in a PR or issue
3
+ * body that are not in the sanctioned set (invented) and
4
+ * sanctioned headings that the body omits (missing). The
5
+ * sanctioned set is a closed list of exact heading strings,
6
+ * including the heading level and the emoji, so a sanctioned
7
+ * name at the wrong level or with a swapped emoji reads as
8
+ * invented. Detection never rewrites; it names the offending or
9
+ * absent headings and leaves the repair to the author.
10
+ */
11
+ const FENCE_REGEX = /```[\s\S]*?```/g;
12
+ const HEADING_REGEX = /^(#{1,6})[ \t]+(.+?)[ \t]*$/gm;
13
+ // Emoji presentation selector. The check mark renders with or
14
+ // without it depending on the editor; normalize it away so
15
+ // `✅` and `✅️` compare equal against the sanctioned set.
16
+ const VARIATION_SELECTOR = /️/g;
17
+ /** Canonicalize a heading to `<hashes> <text>` with single spacing. */
18
+ function canonical(hashes, text) {
19
+ return `${hashes} ${text}`.replace(VARIATION_SELECTOR, "");
20
+ }
21
+ /** Mask fenced code blocks so a `#` inside them is never a heading. */
22
+ function maskFences(body) {
23
+ return body.replace(FENCE_REGEX, (match) => " ".repeat(match.length));
24
+ }
25
+ /**
26
+ * Find every heading in a body that is not sanctioned (invented)
27
+ * and every sanctioned heading the body omits (missing).
28
+ */
29
+ export function detectSectionViolations(body, sanctioned) {
30
+ const sanctionedSet = new Set(sanctioned.map((h) => h.replace(VARIATION_SELECTOR, "")));
31
+ const masked = maskFences(body);
32
+ const present = new Set();
33
+ // The sanctioned headings in the order they first appear, so a
34
+ // reordering can be compared against the canonical sequence.
35
+ const presentInOrder = [];
36
+ const violations = [];
37
+ for (const match of masked.matchAll(HEADING_REGEX)) {
38
+ const heading = canonical(match[1], match[2]);
39
+ if (sanctionedSet.has(heading)) {
40
+ if (!present.has(heading))
41
+ presentInOrder.push(heading);
42
+ present.add(heading);
43
+ }
44
+ else {
45
+ violations.push({ kind: "section", issue: "invented", found: heading });
46
+ }
47
+ }
48
+ for (const heading of sanctionedSet) {
49
+ if (!present.has(heading)) {
50
+ violations.push({ kind: "section", issue: "missing", found: heading });
51
+ }
52
+ }
53
+ // The skill mandates a fixed order. Compare the present
54
+ // headings against their canonical sequence; if they differ,
55
+ // the body is out of order even when the set is complete.
56
+ const canonicalOrder = sanctioned
57
+ .map((h) => h.replace(VARIATION_SELECTOR, ""))
58
+ .filter((h) => present.has(h));
59
+ if (presentInOrder.join("\n") !== canonicalOrder.join("\n")) {
60
+ violations.push({
61
+ kind: "section",
62
+ issue: "misordered",
63
+ found: canonicalOrder.join(" then "),
64
+ });
65
+ }
66
+ return violations;
67
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The section gate: a thin adapter over the shared loop breaker
3
+ * in the gate module. It supplies the section-specific detection,
4
+ * block formatting and relent wording; the block-first,
5
+ * relent-on-repeat mechanism lives in decideGate so prose and
6
+ * sections share one behaviour.
7
+ */
8
+ import { type GateDecision } from "../gate/index.js";
9
+ /** What the gate needs to know about the artifact under review. */
10
+ export interface SectionGateConfig {
11
+ /** The closed set of sanctioned headings for this artifact. */
12
+ readonly sanctioned: readonly string[];
13
+ /** "PR" or "issue", for the block message. */
14
+ readonly entityLabel: string;
15
+ /** The format skill that owns the section set, for the message. */
16
+ readonly skill: string;
17
+ }
18
+ /** The gate's verdict on one body's sections. */
19
+ export type SectionGateDecision = GateDecision;
20
+ /** Decide whether to block, relent or allow given prior block signatures. */
21
+ export declare function sectionGateDecision(body: string, priorSignatures: string[], config: SectionGateConfig): SectionGateDecision;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The section gate: a thin adapter over the shared loop breaker
3
+ * in the gate module. It supplies the section-specific detection,
4
+ * block formatting and relent wording; the block-first,
5
+ * relent-on-repeat mechanism lives in decideGate so prose and
6
+ * sections share one behaviour.
7
+ */
8
+ import { decideGate } from "../gate/index.js";
9
+ import { formatSectionBlock } from "./block.js";
10
+ import { detectSectionViolations } from "./detect.js";
11
+ /** Decide whether to block, relent or allow given prior block signatures. */
12
+ export function sectionGateDecision(body, priorSignatures, config) {
13
+ const violations = detectSectionViolations(body, config.sanctioned);
14
+ const relentPrefix = [
15
+ `This ${config.entityLabel} body still breaks the ${config.skill}`,
16
+ "section set after a previous attempt, so it is being let through",
17
+ "rather than blocked again. Review the remaining section problems",
18
+ "yourself:",
19
+ "",
20
+ ].join("\n");
21
+ return decideGate(violations, priorSignatures, (v) => formatSectionBlock(v, config.entityLabel, config.skill), relentPrefix, body);
22
+ }
@@ -0,0 +1,5 @@
1
+ export { violationSignature } from "../gate/index.js";
2
+ export { formatSectionBlock } from "./block.js";
3
+ export { detectSectionViolations, type SectionViolation, } from "./detect.js";
4
+ export { type SectionGateConfig, type SectionGateDecision, sectionGateDecision, } from "./gate.js";
5
+ export { ISSUE_SECTIONS, PR_SECTIONS } from "./sanctioned.js";
@@ -0,0 +1,5 @@
1
+ export { violationSignature } from "../gate/index.js";
2
+ export { formatSectionBlock } from "./block.js";
3
+ export { detectSectionViolations, } from "./detect.js";
4
+ export { sectionGateDecision, } from "./gate.js";
5
+ export { ISSUE_SECTIONS, PR_SECTIONS } from "./sanctioned.js";
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The closed set of sanctioned section headings, one set per
3
+ * artifact. Each entry is the exact heading string the body must
4
+ * use: the hashes, the emoji and the name together.
5
+ *
6
+ * These constants are the single source the gate enforces, but
7
+ * the skills are the single source of truth for what the
8
+ * conventions are.
9
+ */
10
+ /** The PR body's three required sections, in order. */
11
+ export declare const PR_SECTIONS: readonly ["### 🌐 Situation", "### 🔧 Resolution", "### 🔬 Validation"];
12
+ /** The issue body's three required sections, in order. */
13
+ export declare const ISSUE_SECTIONS: readonly ["### 🌐 Situation", "### 🎯 Outcome", "### ✅ Acceptance"];