@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,765 @@
1
+ /**
2
+ * Block Kit support: tokenising mrkdwn into rich text
3
+ * elements, building structured `rich_text` blocks (lists,
4
+ * quotes, code blocks, tables) for sending, rendering
5
+ * received rich text back to readable text and extracting
6
+ * tables from blocks.
7
+ */
8
+ import { displayNameForId } from "./resolvers/user.js";
9
+ // ── mrkdwn → Block Kit elements (sending) ───────────────
10
+ /**
11
+ * Characters that signal potential mrkdwn formatting.
12
+ *
13
+ * Used as a fast pre-check: if a string contains none of
14
+ * these, it's plain text and can skip tokenising.
15
+ */
16
+ const FORMATTING_CHARS = /[<`*_~:[#]/;
17
+ /**
18
+ * Angle-bracket pattern: matches Slack's `<...>` syntax for
19
+ * links, mentions, channels and broadcasts.
20
+ */
21
+ const ANGLE_BRACKET = /<([^>]+)>/g;
22
+ /**
23
+ * Backtick pattern: matches inline code spans.
24
+ */
25
+ const BACKTICK = /`([^`]+)`/g;
26
+ /**
27
+ * Markdown-style link pattern: `[text](url)`. Many agents
28
+ * (and humans copy-pasting from anywhere) write links this
29
+ * way instead of Slack's native `<url|text>` syntax. Without
30
+ * conversion they render as literal brackets and parens.
31
+ */
32
+ const MARKDOWN_LINK = /\[([^\]\n]+)\]\(([^)\s]+)\)/g;
33
+ /**
34
+ * Inline style patterns with word-boundary rules.
35
+ *
36
+ * Opening marker must be preceded by whitespace or
37
+ * start-of-string. Closing marker must be followed by
38
+ * whitespace, punctuation, or end-of-string. Content
39
+ * between markers must be non-empty and not contain the
40
+ * marker character.
41
+ */
42
+ const BOLD = /(^|(?<=\s))\*([^*]+)\*(?=\s|[.,;:!?)}\]]|$)/g;
43
+ const ITALIC = /(^|(?<=\s))_([^_]+)_(?=\s|[.,;:!?)}\]]|$)/g;
44
+ const STRIKE = /(^|(?<=\s))~([^~]+)~(?=\s|[.,;:!?)}\]]|$)/g;
45
+ /**
46
+ * Markdown-style double-marker patterns. Agents reflexively
47
+ * write `**bold**` and `~~strike~~` even when targeting
48
+ * Slack mrkdwn, where those would render with the marker
49
+ * characters visible. We accept them as alternatives.
50
+ */
51
+ const MARKDOWN_BOLD = /\*\*([^*\n]+?)\*\*/g;
52
+ const MARKDOWN_STRIKE = /~~([^~\n]+?)~~/g;
53
+ /**
54
+ * Emoji shortcode pattern: `:name:` where name can contain
55
+ * letters, numbers, underscores, hyphens and plus signs.
56
+ */
57
+ const EMOJI = /:([a-z0-9_+-]+):/g;
58
+ /**
59
+ * Hex-colour-lookalike pattern: `#` followed by 3, 4, 6 or
60
+ * 8 hex digits with no alphanumeric character after. Slack
61
+ * auto-renders these as colour swatches in plain mrkdwn,
62
+ * which catches PR numbers like `#675891` (six digits = a
63
+ * valid hex code). Splitting the `#` from the digits across
64
+ * two adjacent text elements defeats the swatch detector
65
+ * while rendering identically.
66
+ */
67
+ const HEX_COLOR_LIKE = /#([0-9a-fA-F]{8}|[0-9a-fA-F]{6}|[0-9a-fA-F]{4}|[0-9a-fA-F]{3})(?![0-9a-zA-Z])/g;
68
+ /**
69
+ * Parse an angle-bracket expression into a Block Kit element.
70
+ *
71
+ * Handles user mentions, broadcasts, channel links, and URL
72
+ * links, all of which use Slack's `<...>` internal format.
73
+ */
74
+ function parseAngleBracket(content) {
75
+ // User mention: <@U123> or <@U123|display.name>
76
+ if (content.startsWith("@")) {
77
+ const pipeIdx = content.indexOf("|");
78
+ const userId = pipeIdx > 0 ? content.slice(1, pipeIdx) : content.slice(1);
79
+ return { type: "user", user_id: userId };
80
+ }
81
+ // Broadcast: <!here>, <!channel>, <!everyone>
82
+ if (content.startsWith("!")) {
83
+ const pipeIdx = content.indexOf("|");
84
+ const range = pipeIdx > 0 ? content.slice(1, pipeIdx) : content.slice(1);
85
+ return { type: "broadcast", range };
86
+ }
87
+ // Channel link: <#C123> or <#C123|channel-name>
88
+ if (content.startsWith("#")) {
89
+ const pipeIdx = content.indexOf("|");
90
+ const channelId = pipeIdx > 0 ? content.slice(1, pipeIdx) : content.slice(1);
91
+ return { type: "channel", channel_id: channelId };
92
+ }
93
+ // URL link: <url|text> or <url>
94
+ const pipeIdx = content.indexOf("|");
95
+ if (pipeIdx > 0) {
96
+ return {
97
+ type: "link",
98
+ url: content.slice(0, pipeIdx),
99
+ text: content.slice(pipeIdx + 1),
100
+ };
101
+ }
102
+ return { type: "link", url: content };
103
+ }
104
+ /**
105
+ * Tokenise a mrkdwn string into Block Kit inline elements.
106
+ *
107
+ * Scans left to right, matching patterns in priority order:
108
+ * angle brackets (unambiguous), backticks, then inline
109
+ * styles with word-boundary rules. Plain text between
110
+ * patterns becomes `text` elements. Adjacent plain segments
111
+ * are merged.
112
+ */
113
+ export function parseMrkdwnToElements(text) {
114
+ if (!text)
115
+ return [];
116
+ // Collect all tokens from all pattern types.
117
+ const tokens = [];
118
+ // 1. Angle-bracket patterns (highest priority, being unambiguous
119
+ // Slack-internal syntax).
120
+ for (const match of text.matchAll(ANGLE_BRACKET)) {
121
+ tokens.push({
122
+ start: match.index,
123
+ end: match.index + match[0].length,
124
+ elements: [parseAngleBracket(match[1])],
125
+ });
126
+ }
127
+ // 2. Markdown-style links. Higher priority than backticks
128
+ // so a link's display text can contain backticks.
129
+ for (const match of text.matchAll(MARKDOWN_LINK)) {
130
+ tokens.push({
131
+ start: match.index,
132
+ end: match.index + match[0].length,
133
+ elements: [{ type: "link", url: match[2], text: match[1] }],
134
+ });
135
+ }
136
+ // 3. Backtick code spans.
137
+ for (const match of text.matchAll(BACKTICK)) {
138
+ tokens.push({
139
+ start: match.index,
140
+ end: match.index + match[0].length,
141
+ elements: [{ type: "text", text: match[1], style: { code: true } }],
142
+ });
143
+ }
144
+ // 4. Emoji shortcodes.
145
+ for (const match of text.matchAll(EMOJI)) {
146
+ tokens.push({
147
+ start: match.index,
148
+ end: match.index + match[0].length,
149
+ elements: [{ type: "emoji", name: match[1] }],
150
+ });
151
+ }
152
+ // 5. Markdown-style double-marker styles. Must precede
153
+ // the single-marker patterns so `**bold**` doesn't get
154
+ // mis-tokenised as `*` then `bold` then `*`.
155
+ for (const match of text.matchAll(MARKDOWN_BOLD)) {
156
+ tokens.push({
157
+ start: match.index,
158
+ end: match.index + match[0].length,
159
+ elements: [{ type: "text", text: match[1], style: { bold: true } }],
160
+ });
161
+ }
162
+ for (const match of text.matchAll(MARKDOWN_STRIKE)) {
163
+ tokens.push({
164
+ start: match.index,
165
+ end: match.index + match[0].length,
166
+ elements: [{ type: "text", text: match[1], style: { strike: true } }],
167
+ });
168
+ }
169
+ // 6. Slack-native single-marker inline styles.
170
+ for (const match of text.matchAll(BOLD)) {
171
+ tokens.push({
172
+ start: match.index,
173
+ end: match.index + match[0].length,
174
+ elements: [{ type: "text", text: match[2], style: { bold: true } }],
175
+ });
176
+ }
177
+ for (const match of text.matchAll(ITALIC)) {
178
+ tokens.push({
179
+ start: match.index,
180
+ end: match.index + match[0].length,
181
+ elements: [{ type: "text", text: match[2], style: { italic: true } }],
182
+ });
183
+ }
184
+ for (const match of text.matchAll(STRIKE)) {
185
+ tokens.push({
186
+ start: match.index,
187
+ end: match.index + match[0].length,
188
+ elements: [{ type: "text", text: match[2], style: { strike: true } }],
189
+ });
190
+ }
191
+ // 7. Hex-colour-lookalike shield (lowest priority, since it only
192
+ // fires when no other pattern claims the range). Emits
193
+ // two adjacent text elements so the rendered output is
194
+ // identical but Slack's swatch detector sees two pieces
195
+ // instead of one hex run.
196
+ for (const match of text.matchAll(HEX_COLOR_LIKE)) {
197
+ tokens.push({
198
+ start: match.index,
199
+ end: match.index + match[0].length,
200
+ elements: [
201
+ { type: "text", text: "#" },
202
+ { type: "text", text: match[1] },
203
+ ],
204
+ });
205
+ }
206
+ // Sort by start position. For overlaps, higher-priority
207
+ // tokens (earlier in the list) take precedence since we
208
+ // skip tokens that overlap with already-consumed ranges.
209
+ tokens.sort((a, b) => a.start - b.start);
210
+ // Walk the string, emitting elements for tokens and
211
+ // plain text for gaps.
212
+ const elements = [];
213
+ let cursor = 0;
214
+ for (const token of tokens) {
215
+ // Skip tokens that overlap with already-consumed text.
216
+ if (token.start < cursor)
217
+ continue;
218
+ // Emit plain text before this token.
219
+ if (token.start > cursor) {
220
+ const plain = text.slice(cursor, token.start);
221
+ if (plain)
222
+ pushText(elements, plain);
223
+ }
224
+ for (const el of token.elements)
225
+ elements.push(el);
226
+ cursor = token.end;
227
+ }
228
+ // Emit any trailing plain text.
229
+ if (cursor < text.length) {
230
+ const plain = text.slice(cursor);
231
+ if (plain)
232
+ pushText(elements, plain);
233
+ }
234
+ return elements;
235
+ }
236
+ /**
237
+ * Append a plain text element, merging with the previous
238
+ * element if it's also unstyled plain text.
239
+ */
240
+ function pushText(elements, text) {
241
+ const last = elements[elements.length - 1];
242
+ if (last?.type === "text" && !last.style) {
243
+ last.text = (last.text ?? "") + text;
244
+ }
245
+ else {
246
+ elements.push({ type: "text", text });
247
+ }
248
+ }
249
+ /** Zero-width space used for empty cells (Slack rejects empty text). */
250
+ const ZERO_WIDTH_SPACE = "\u200B";
251
+ /**
252
+ * Convert a mrkdwn string to a Block Kit table cell.
253
+ *
254
+ * Returns `raw_text` for plain strings (the common case)
255
+ * and `rich_text` for strings with formatting. Empty strings
256
+ * become `raw_text` with a zero-width space.
257
+ */
258
+ export function mrkdwnToCell(text) {
259
+ if (!text) {
260
+ return { type: "raw_text", text: ZERO_WIDTH_SPACE };
261
+ }
262
+ // Fast path: no formatting characters → raw_text.
263
+ if (!FORMATTING_CHARS.test(text)) {
264
+ return { type: "raw_text", text };
265
+ }
266
+ const elements = parseMrkdwnToElements(text);
267
+ // If parsing produced a single unstyled text element,
268
+ // the formatting characters were false positives (e.g.
269
+ // "a < b"). Use raw_text.
270
+ if (elements.length === 1 &&
271
+ elements[0].type === "text" &&
272
+ !elements[0].style) {
273
+ return { type: "raw_text", text };
274
+ }
275
+ // Wrap in rich_text cell structure.
276
+ return {
277
+ type: "rich_text",
278
+ elements: [
279
+ {
280
+ type: "rich_text_section",
281
+ elements,
282
+ },
283
+ ],
284
+ };
285
+ }
286
+ // ── Block Kit elements → readable text (reading) ────────
287
+ /**
288
+ * Render a single rich text inline element to readable text.
289
+ *
290
+ * Follows the same output conventions as `formatSlackText`
291
+ * in renderers/message.ts: bold → `**text**`, links →
292
+ * `[text](url)`, user mentions → `@handle`, etc.
293
+ */
294
+ function renderElement(el) {
295
+ switch (el.type) {
296
+ case "text": {
297
+ let result = el.text ?? "";
298
+ if (el.style?.code)
299
+ result = `\`${result}\``;
300
+ if (el.style?.strike)
301
+ result = `~${result}~`;
302
+ if (el.style?.italic)
303
+ result = `_${result}_`;
304
+ if (el.style?.bold)
305
+ result = `**${result}**`;
306
+ return result;
307
+ }
308
+ case "link": {
309
+ const display = el.text || el.url || "";
310
+ const url = el.url || "";
311
+ return display && display !== url ? `[${display}](${url})` : url;
312
+ }
313
+ case "user": {
314
+ const id = el.user_id ?? "";
315
+ const name = displayNameForId(id);
316
+ return `@${name}`;
317
+ }
318
+ case "channel": {
319
+ const id = el.channel_id ?? "";
320
+ const name = displayNameForId(id);
321
+ return `#${name}`;
322
+ }
323
+ case "broadcast":
324
+ return `@${el.range ?? "here"}`;
325
+ case "emoji":
326
+ return `:${el.name ?? ""}:`;
327
+ default:
328
+ return "";
329
+ }
330
+ }
331
+ /**
332
+ * Render a `rich_text` table cell to readable text.
333
+ *
334
+ * Walks the cell's elements → rich_text_section → inline
335
+ * elements, converting each to text.
336
+ */
337
+ export function renderRichTextCell(cell) {
338
+ const typed = cell;
339
+ if (typed.type !== "rich_text" || !Array.isArray(typed.elements)) {
340
+ return "";
341
+ }
342
+ const parts = [];
343
+ for (const section of typed.elements) {
344
+ if (!Array.isArray(section.elements))
345
+ continue;
346
+ for (const el of section.elements) {
347
+ parts.push(renderElement(el));
348
+ }
349
+ }
350
+ return parts.join("");
351
+ }
352
+ // ── Table extraction (reading) ──────────────────────────
353
+ /**
354
+ * Extract the text content from a single table cell.
355
+ *
356
+ * Handles both `raw_text` (returns `.text` directly) and
357
+ * `rich_text` (renders inline elements to readable text).
358
+ */
359
+ export function extractCellText(cell) {
360
+ const typed = cell;
361
+ if (typed.type === "raw_text") {
362
+ return typed.text ?? "";
363
+ }
364
+ if (typed.type === "rich_text") {
365
+ return renderRichTextCell(cell);
366
+ }
367
+ return "";
368
+ }
369
+ /**
370
+ * Extract tables from a raw Block Kit blocks array.
371
+ *
372
+ * Finds all blocks with `type === "table"`, extracts
373
+ * headers, rows, and column settings from each.
374
+ */
375
+ export function extractTables(blocks) {
376
+ const tables = [];
377
+ for (const block of blocks) {
378
+ const typed = block;
379
+ if (typed.type !== "table" || !Array.isArray(typed.rows))
380
+ continue;
381
+ if (typed.rows.length === 0)
382
+ continue;
383
+ // First row is the header.
384
+ const headerRow = typed.rows[0];
385
+ const columns = Array.isArray(headerRow)
386
+ ? headerRow.map(extractCellText)
387
+ : [];
388
+ // Remaining rows are data.
389
+ const rows = typed.rows
390
+ .slice(1)
391
+ .map((row) => (Array.isArray(row) ? row.map(extractCellText) : []));
392
+ // Column settings.
393
+ let columnSettings;
394
+ if (Array.isArray(typed.column_settings)) {
395
+ columnSettings = typed.column_settings.map((s) => {
396
+ if (s == null)
397
+ return null;
398
+ const setting = {};
399
+ if (s.align === "left" || s.align === "center" || s.align === "right") {
400
+ setting.align = s.align;
401
+ }
402
+ if (typeof s.is_wrapped === "boolean") {
403
+ setting.isWrapped = s.is_wrapped;
404
+ }
405
+ return Object.keys(setting).length > 0 ? setting : null;
406
+ });
407
+ }
408
+ tables.push({ columns, rows, columnSettings });
409
+ }
410
+ return tables;
411
+ }
412
+ // ── mrkdwn → rich_text block (sending) ──────────────────
413
+ /**
414
+ * Match an ordered list line: `1. content`. Captures
415
+ * leading whitespace, the digits and the content.
416
+ */
417
+ const ORDERED_LIST_LINE = /^(\s*)(\d+)\.\s+(.+)$/;
418
+ /**
419
+ * Match an unordered list line: `- content`, `* content`
420
+ * or `+ content`. Captures leading whitespace and the
421
+ * content (the marker itself is discarded).
422
+ */
423
+ const UNORDERED_LIST_LINE = /^(\s*)[-*+]\s+(.+)$/;
424
+ /**
425
+ * Match a blockquote line: `> content`. The space after
426
+ * `>` is optional. Captures the content.
427
+ */
428
+ const QUOTE_LINE = /^>\s?(.*)$/;
429
+ /**
430
+ * Match a code-fence line: opening or closing triple
431
+ * backticks. Anything after the fence (e.g. a language
432
+ * hint) is ignored, since Slack does not render it.
433
+ */
434
+ const FENCE_LINE = /^```/;
435
+ /**
436
+ * Match a heading line: one to six leading `#` followed by
437
+ * whitespace and content. Slack only has a single `header`
438
+ * block style, so the level is captured for completeness
439
+ * but not used: `#` and `######` render the same.
440
+ */
441
+ const HEADING_LINE = /^(#{1,6})\s+(.+)$/;
442
+ /**
443
+ * Match a divider line: three or more dashes, asterisks or
444
+ * underscores on a line by themselves. Mirrors CommonMark's
445
+ * thematic-break rule. Distinct from a list bullet because
446
+ * a bullet always has whitespace and content after the
447
+ * marker.
448
+ */
449
+ const DIVIDER_LINE = /^(?:-{3,}|\*{3,}|_{3,})\s*$/;
450
+ /**
451
+ * Width of one indent level for nested lists, measured in
452
+ * spaces. Two spaces or one tab counts as one level, and the
453
+ * convention Slack's editor uses.
454
+ */
455
+ const INDENT_WIDTH = 2;
456
+ /**
457
+ * Inline patterns whose presence forces a `rich_text`
458
+ * block even when no block-level structure (list, heading,
459
+ * quote, fence, divider) is present.
460
+ *
461
+ * Plain mrkdwn can't faithfully render any of these:
462
+ * markdown-style `[text](url)` shows literal brackets,
463
+ * `**bold**` and `~~strike~~` show their markers, and
464
+ * `#XXXXXX` hex-lookalikes get auto-rendered as colour
465
+ * swatches that the shield in `parseMrkdwnToElements`
466
+ * defeats only when blocks are sent.
467
+ *
468
+ * Non-global so `.test()` doesn't carry `lastIndex` state
469
+ * between calls.
470
+ */
471
+ const NEEDS_RICH_TEXT_INLINE = /\[[^\]\n]+\]\([^)\s]+\)|\*\*[^*\n]+?\*\*|~~[^~\n]+?~~|#(?:[0-9a-fA-F]{8}|[0-9a-fA-F]{6}|[0-9a-fA-F]{4}|[0-9a-fA-F]{3})(?![0-9a-zA-Z])/;
472
+ /** Maximum nesting level Slack accepts for `rich_text_list`. */
473
+ const MAX_LIST_INDENT = 8;
474
+ /**
475
+ * Compute an indent level from a run of leading whitespace.
476
+ *
477
+ * Tabs count as one full level; spaces count as one level
478
+ * per `INDENT_WIDTH` characters. The result is clamped so
479
+ * we never exceed Slack's nesting limit.
480
+ */
481
+ function indentLevel(whitespace) {
482
+ let spaces = 0;
483
+ for (const ch of whitespace) {
484
+ if (ch === "\t")
485
+ spaces += INDENT_WIDTH;
486
+ else if (ch === " ")
487
+ spaces += 1;
488
+ }
489
+ const level = Math.floor(spaces / INDENT_WIDTH);
490
+ return Math.min(level, MAX_LIST_INDENT);
491
+ }
492
+ /**
493
+ * Build a Block Kit `blocks` array from mrkdwn-style text.
494
+ *
495
+ * Walks the text line by line, producing a mix of
496
+ * top-level blocks:
497
+ *
498
+ * - `rich_text` for paragraphs, lists, quotes and code
499
+ * fences. Inline formatting inside each line goes
500
+ * through {@link parseMrkdwnToElements}, which also
501
+ * handles markdown-style links, double-marker styles
502
+ * and the colour-swatch shield.
503
+ * - `header` for `#`-prefixed lines.
504
+ * - `divider` for thematic breaks (`---`, `***`, `___`).
505
+ *
506
+ * Returns the array plus a `hasStructure` flag the caller
507
+ * can use to decide whether sending blocks (instead of
508
+ * plain mrkdwn) actually changes how the message renders.
509
+ */
510
+ export function mrkdwnToBlocks(text) {
511
+ const outer = [];
512
+ let rtChildren = [];
513
+ let sectionLines = [];
514
+ let listItems = [];
515
+ let quoteLines = [];
516
+ let fenceLines = [];
517
+ let inFence = false;
518
+ // Inline patterns that mrkdwn can't render correctly
519
+ // force a rich_text block even when no block-level
520
+ // structure (list, heading, quote, fence, divider)
521
+ // shows up. Without this, a message like
522
+ // `[link](https://...)` would skip blocks and Slack
523
+ // would render the brackets literally.
524
+ let hasStructure = NEEDS_RICH_TEXT_INLINE.test(text);
525
+ // Tracks a blank line that fell *between* two distinct
526
+ // blocks (not inside an in-progress section). When the
527
+ // next block opens, we emit a spacer section before it so
528
+ // the rendered message preserves the visual gap the user
529
+ // wrote in their input.
530
+ let pendingSpacer = false;
531
+ const emitSpacer = () => {
532
+ if (!pendingSpacer || rtChildren.length === 0) {
533
+ pendingSpacer = false;
534
+ return;
535
+ }
536
+ rtChildren.push({
537
+ type: "rich_text_section",
538
+ elements: [{ type: "text", text: "\n" }],
539
+ });
540
+ pendingSpacer = false;
541
+ };
542
+ const flushSection = () => {
543
+ // Trim trailing blank lines so the section ends cleanly.
544
+ // Blank lines inside a section (between paragraphs) are
545
+ // preserved, since Slack renders the embedded newlines as the
546
+ // paragraph break the user wrote.
547
+ while (sectionLines.length > 0 &&
548
+ sectionLines[sectionLines.length - 1] === "") {
549
+ sectionLines.pop();
550
+ }
551
+ if (sectionLines.length === 0)
552
+ return;
553
+ rtChildren.push({
554
+ type: "rich_text_section",
555
+ elements: parseMrkdwnToElements(sectionLines.join("\n")),
556
+ });
557
+ sectionLines = [];
558
+ };
559
+ const flushList = () => {
560
+ if (listItems.length === 0)
561
+ return;
562
+ hasStructure = true;
563
+ // Group adjacent items that share both indent and style.
564
+ // A change in either ends the current `rich_text_list`
565
+ // and starts a new one.
566
+ let start = 0;
567
+ while (start < listItems.length) {
568
+ const first = listItems[start];
569
+ let end = start + 1;
570
+ while (end < listItems.length &&
571
+ listItems[end].indent === first.indent &&
572
+ listItems[end].style === first.style) {
573
+ end++;
574
+ }
575
+ const block = {
576
+ type: "rich_text_list",
577
+ style: first.style,
578
+ elements: listItems.slice(start, end).map((item) => ({
579
+ type: "rich_text_section",
580
+ elements: parseMrkdwnToElements(item.content),
581
+ })),
582
+ };
583
+ if (first.indent > 0)
584
+ block.indent = first.indent;
585
+ rtChildren.push(block);
586
+ start = end;
587
+ }
588
+ listItems = [];
589
+ };
590
+ const flushQuote = () => {
591
+ if (quoteLines.length === 0)
592
+ return;
593
+ hasStructure = true;
594
+ rtChildren.push({
595
+ type: "rich_text_quote",
596
+ elements: parseMrkdwnToElements(quoteLines.join("\n")),
597
+ });
598
+ quoteLines = [];
599
+ };
600
+ const flushFence = () => {
601
+ hasStructure = true;
602
+ rtChildren.push({
603
+ type: "rich_text_preformatted",
604
+ elements: [{ type: "text", text: fenceLines.join("\n") }],
605
+ });
606
+ fenceLines = [];
607
+ };
608
+ const flushParagraph = () => {
609
+ flushSection();
610
+ flushList();
611
+ flushQuote();
612
+ };
613
+ // Close the current `rich_text` block (if any) and push
614
+ // it to the outer blocks array. Used before emitting a
615
+ // top-level block (header or divider) that can't live
616
+ // inside `rich_text`.
617
+ const closeRichText = () => {
618
+ flushParagraph();
619
+ if (rtChildren.length === 0)
620
+ return;
621
+ outer.push({ type: "rich_text", elements: rtChildren });
622
+ rtChildren = [];
623
+ // Block-level boundaries (header, divider) carry their
624
+ // own visual separation, so no rich_text spacer is needed
625
+ // when we cross into one.
626
+ pendingSpacer = false;
627
+ };
628
+ for (const line of text.split("\n")) {
629
+ if (inFence) {
630
+ if (FENCE_LINE.test(line)) {
631
+ flushFence();
632
+ inFence = false;
633
+ }
634
+ else {
635
+ fenceLines.push(line);
636
+ }
637
+ continue;
638
+ }
639
+ if (FENCE_LINE.test(line)) {
640
+ flushParagraph();
641
+ emitSpacer();
642
+ inFence = true;
643
+ continue;
644
+ }
645
+ const heading = line.match(HEADING_LINE);
646
+ if (heading) {
647
+ closeRichText();
648
+ hasStructure = true;
649
+ outer.push({
650
+ type: "header",
651
+ text: { type: "plain_text", text: heading[2], emoji: true },
652
+ });
653
+ continue;
654
+ }
655
+ if (DIVIDER_LINE.test(line)) {
656
+ closeRichText();
657
+ hasStructure = true;
658
+ outer.push({ type: "divider" });
659
+ continue;
660
+ }
661
+ // Blank line. Three cases:
662
+ // 1. We're inside a section. Preserve the blank as an
663
+ // embedded newline so paragraphs separated by a
664
+ // blank line render with the spacing the user
665
+ // wrote. Slack's editor likewise keeps blank lines
666
+ // inside a single `rich_text_section`.
667
+ // 2. We're inside a list or quote. Those can't span a
668
+ // blank line, so end them. The blank then becomes a
669
+ // spacer between the list/quote and whatever comes
670
+ // next.
671
+ // 3. Nothing in progress. The blank line still earns a
672
+ // spacer once the next block opens.
673
+ if (line.trim().length === 0) {
674
+ if (sectionLines.length > 0) {
675
+ sectionLines.push("");
676
+ }
677
+ else {
678
+ flushList();
679
+ flushQuote();
680
+ pendingSpacer = true;
681
+ }
682
+ continue;
683
+ }
684
+ const ordered = line.match(ORDERED_LIST_LINE);
685
+ if (ordered) {
686
+ flushSection();
687
+ flushQuote();
688
+ emitSpacer();
689
+ listItems.push({
690
+ indent: indentLevel(ordered[1]),
691
+ style: "ordered",
692
+ content: ordered[3],
693
+ });
694
+ continue;
695
+ }
696
+ const unordered = line.match(UNORDERED_LIST_LINE);
697
+ if (unordered) {
698
+ flushSection();
699
+ flushQuote();
700
+ emitSpacer();
701
+ listItems.push({
702
+ indent: indentLevel(unordered[1]),
703
+ style: "bullet",
704
+ content: unordered[2],
705
+ });
706
+ continue;
707
+ }
708
+ const quote = line.match(QUOTE_LINE);
709
+ if (quote) {
710
+ flushSection();
711
+ flushList();
712
+ emitSpacer();
713
+ quoteLines.push(quote[1]);
714
+ continue;
715
+ }
716
+ // Plain paragraph line: end any list/quote run, then
717
+ // accumulate into the current section.
718
+ flushList();
719
+ flushQuote();
720
+ emitSpacer();
721
+ sectionLines.push(line);
722
+ }
723
+ // End of input. An unterminated fence is still emitted,
724
+ // dropping its content silently would be worse than
725
+ // rendering a slightly-imperfect code block.
726
+ if (inFence)
727
+ flushFence();
728
+ closeRichText();
729
+ return { blocks: outer, hasStructure };
730
+ }
731
+ // ── Table building (sending) ────────────────────────────
732
+ /**
733
+ * Build a Block Kit table block from a `SlackTable`.
734
+ *
735
+ * Converts mrkdwn strings in columns and rows to Block Kit
736
+ * cell elements. Maps `columnSettings` to Block Kit's
737
+ * `column_settings` format.
738
+ */
739
+ export function tableToBlock(table) {
740
+ // Header row + data rows, each cell through mrkdwnToCell.
741
+ const rows = [
742
+ table.columns.map(mrkdwnToCell),
743
+ ...table.rows.map((row) => row.map(mrkdwnToCell)),
744
+ ];
745
+ const block = { type: "table", rows };
746
+ // Map column settings if present. Slack rejects null
747
+ // entries in column_settings, so use empty objects to skip.
748
+ if (table.columnSettings?.length) {
749
+ const settings = table.columnSettings.map((s) => {
750
+ if (s == null)
751
+ return {};
752
+ const entry = {};
753
+ if (s.align)
754
+ entry.align = s.align;
755
+ if (s.isWrapped !== undefined)
756
+ entry.is_wrapped = s.isWrapped;
757
+ return entry;
758
+ });
759
+ // Only include if at least one entry has properties.
760
+ if (settings.some((s) => Object.keys(s).length > 0)) {
761
+ block.column_settings = settings;
762
+ }
763
+ }
764
+ return block;
765
+ }