@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
+ /** Token counts for one run, split by channel. */
2
+ export interface RunTokens {
3
+ readonly input: number;
4
+ readonly output: number;
5
+ readonly cacheRead: number;
6
+ readonly cacheWrite: number;
7
+ readonly total: number;
8
+ }
9
+ /**
10
+ * Cost for one run in USD, split by channel. Sourced from pi's own
11
+ * per-turn usage.cost, summed across every message_end turn of the
12
+ * run, not from any external proxy.
13
+ */
14
+ export interface RunCost {
15
+ readonly input: number;
16
+ readonly output: number;
17
+ readonly cacheRead: number;
18
+ readonly cacheWrite: number;
19
+ readonly total: number;
20
+ }
21
+ /** Verify gate outcome for one run. */
22
+ export type VerifyOutcome = "passed" | "failed" | "none";
23
+ /**
24
+ * One subagent run recorded as first-class fields. The
25
+ * parent session writes a record as each subagent finishes.
26
+ */
27
+ export interface RunRecord {
28
+ /** The fleet or council run this subagent belonged to. */
29
+ readonly runId: string;
30
+ /** The subagent's stable id within the run. */
31
+ readonly subagentId: string;
32
+ /** What produced the run (e.g. council, fleet). */
33
+ readonly kind: string;
34
+ /** Resolved model id, or empty when the session default was used. */
35
+ readonly model: string;
36
+ /** Persona or reviewer label. */
37
+ readonly persona: string;
38
+ /** Whether the verify gate passed, failed, or was not in play. */
39
+ readonly verifyOutcome: VerifyOutcome;
40
+ /** Verify retries taken before a valid result (0 when first try passed). */
41
+ readonly retriesToValid: number;
42
+ /** Number of warnings the run emitted. */
43
+ readonly warningCount: number;
44
+ /** Process exit code. */
45
+ readonly exitCode: number;
46
+ /** Token counts summed across the run's turns. */
47
+ readonly tokens: RunTokens;
48
+ /** Cost summed across the run's turns. */
49
+ readonly cost: RunCost;
50
+ /** When the run started, epoch milliseconds. */
51
+ readonly startedAt: number;
52
+ }
53
+ /** Aggregate view of one run across its subagents. */
54
+ export interface RunSummary {
55
+ readonly runId: string;
56
+ readonly subagentCount: number;
57
+ readonly passed: number;
58
+ readonly failed: number;
59
+ readonly totalRetries: number;
60
+ readonly totalWarnings: number;
61
+ readonly tokens: RunTokens;
62
+ readonly cost: RunCost;
63
+ /** cacheRead / (input + cacheRead); 0 when the denominator is 0. */
64
+ readonly cacheReadRatio: number;
65
+ }
66
+ /**
67
+ * A distilled weekly summary for one model and persona,
68
+ * kept long after the raw rows it was rolled from age out.
69
+ */
70
+ export interface RunRollup {
71
+ /** Start of the week bucket, epoch milliseconds. */
72
+ readonly weekStart: number;
73
+ readonly model: string;
74
+ readonly persona: string;
75
+ readonly runCount: number;
76
+ readonly totalRetries: number;
77
+ readonly totalWarnings: number;
78
+ readonly tokensTotal: number;
79
+ readonly costTotal: number;
80
+ /** cacheRead / (input + cacheRead) across the bucket; 0 when the denominator is 0. */
81
+ readonly cacheReadRatio: number;
82
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Asking the machine about a process, and saying which one you meant.
3
+ *
4
+ * The logic sits in `process.ts` rather than here, as it does for
5
+ * `exec` and `remote`, because the coverage config excludes every
6
+ * `index.ts` by name: a module whose whole implementation is its
7
+ * barrel reports as untested however well tested it is.
8
+ */
9
+ export { askedOnce, isOwner, type Owner, ownerNow, ownerStanding, type ProcessFacts, SAME_PROCESS_MS, sameProcess, systemFacts, } from "./process.js";
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Asking the machine about a process, and saying which one you meant.
3
+ *
4
+ * The logic sits in `process.ts` rather than here, as it does for
5
+ * `exec` and `remote`, because the coverage config excludes every
6
+ * `index.ts` by name: a module whose whole implementation is its
7
+ * barrel reports as untested however well tested it is.
8
+ */
9
+ export { askedOnce, isOwner, ownerNow, ownerStanding, SAME_PROCESS_MS, sameProcess, systemFacts, } from "./process.js";
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Asking the machine about a process, and saying which one you meant.
3
+ *
4
+ * Its own module because more than one domain needs this and neither
5
+ * owns it: a subagent supervisor asks whether the process holding a
6
+ * reviewer's lease is still there, and the work broker asks whether
7
+ * the session holding a worktree is. They are the same question, and
8
+ * the second was about to be answered by a second copy of the first.
9
+ *
10
+ * A pid identifies nothing on its own, which is why the start time
11
+ * travels with it everywhere here. Pids are reused, and the reuse is
12
+ * not rare on a machine that spawns a supervisor per reviewer: acting
13
+ * on a bare pid means signalling, or reclaiming from, whatever process
14
+ * happens to be wearing that number now.
15
+ */
16
+ /**
17
+ * How far apart two readings of one process's start time may be.
18
+ *
19
+ * `ps` reports whole seconds and the recorded value has millisecond
20
+ * precision, so the same process reads differently depending on which
21
+ * side of a second each observation landed on.
22
+ */
23
+ export declare const SAME_PROCESS_MS = 2000;
24
+ /**
25
+ * Asking the machine about a process.
26
+ *
27
+ * Injected because it is the one part of this that cannot be decided
28
+ * from a file, and because a test that exercises it for real is a test
29
+ * that kills something by a number it read off disk.
30
+ */
31
+ export interface ProcessFacts {
32
+ /** When this process started, or undefined when nothing can say. */
33
+ startedAt(pid: number): Promise<number | undefined>;
34
+ /** Whether anything is wearing this pid at all. */
35
+ alive(pid: number): boolean;
36
+ }
37
+ /**
38
+ * Which process wrote something down.
39
+ *
40
+ * Both fields or neither. A pid on its own cannot be checked against
41
+ * anything later, so a record carrying one is a record that reads as
42
+ * whoever holds that number next.
43
+ */
44
+ export interface Owner {
45
+ pid: number;
46
+ startedAt: number;
47
+ }
48
+ /**
49
+ * Whether two observations describe the same process.
50
+ *
51
+ * Two-sided on purpose. Only refusing the later ones would let a pid
52
+ * that has been around far longer than our child pass: a record
53
+ * holding a garbage or truncated pid can name `1`, and `1` started at
54
+ * boot, which is emphatically earlier. Signalling that process group
55
+ * is not a mistake anybody gets to make twice.
56
+ */
57
+ export declare function sameProcess(observed: number, recorded: number): boolean;
58
+ /** Whether a value read off disk says enough to identify a process. */
59
+ export declare function isOwner(said: unknown): said is Owner;
60
+ /**
61
+ * Who this process is, for writing down.
62
+ *
63
+ * Returns nothing when the machine will not say when we started,
64
+ * because half an identity is worse than none: a record carrying a
65
+ * pid and no start time is one a later reader must either trust
66
+ * blindly or discard, and both of those are decisions this can avoid
67
+ * forcing by declining to write it.
68
+ */
69
+ export declare function ownerNow(facts?: ProcessFacts, pid?: number): Promise<Owner | undefined>;
70
+ /**
71
+ * Whether the process that wrote a record is still the one running.
72
+ *
73
+ * Identity outranks liveness in both directions. A live pid whose
74
+ * start time disagrees is a stranger wearing the number, and is gone
75
+ * for our purposes; there is no case where a mismatch means present.
76
+ *
77
+ * Undecidable when the machine will not answer, which is deliberately
78
+ * distinct from absent: a caller reclaiming things must treat "cannot
79
+ * tell" as "still there", and a caller merely reporting need not.
80
+ */
81
+ export declare function ownerStanding(owner: Owner, facts?: ProcessFacts): Promise<"running" | "gone" | "unknown">;
82
+ /**
83
+ * Facts about processes, asked once each however often they are wanted.
84
+ *
85
+ * The cache holds what the machine said, never what a caller concluded
86
+ * from it. A standing is a judgement about one record, since it
87
+ * compares the pid's real start time against the one that record
88
+ * wrote down, so caching a standing under a pid lets one stale record
89
+ * answer for a live session that happens to be wearing the same
90
+ * number. The fact is per-pid and safe to share; the verdict is not,
91
+ * and this exists because the verdict was cached twice.
92
+ */
93
+ export declare function askedOnce(facts: ProcessFacts): ProcessFacts;
94
+ /** What the machine itself says, which is what everything but a test uses. */
95
+ export declare const systemFacts: ProcessFacts;
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Asking the machine about a process, and saying which one you meant.
3
+ *
4
+ * Its own module because more than one domain needs this and neither
5
+ * owns it: a subagent supervisor asks whether the process holding a
6
+ * reviewer's lease is still there, and the work broker asks whether
7
+ * the session holding a worktree is. They are the same question, and
8
+ * the second was about to be answered by a second copy of the first.
9
+ *
10
+ * A pid identifies nothing on its own, which is why the start time
11
+ * travels with it everywhere here. Pids are reused, and the reuse is
12
+ * not rare on a machine that spawns a supervisor per reviewer: acting
13
+ * on a bare pid means signalling, or reclaiming from, whatever process
14
+ * happens to be wearing that number now.
15
+ */
16
+ import { execFile } from "node:child_process";
17
+ import { promisify } from "node:util";
18
+ /**
19
+ * How far apart two readings of one process's start time may be.
20
+ *
21
+ * `ps` reports whole seconds and the recorded value has millisecond
22
+ * precision, so the same process reads differently depending on which
23
+ * side of a second each observation landed on.
24
+ */
25
+ export const SAME_PROCESS_MS = 2_000;
26
+ /**
27
+ * How long to wait for the process table.
28
+ *
29
+ * This runs inside walks over every reviewer directory and every
30
+ * remembered tree, so an unbounded probe against a wedged process
31
+ * table stalls a session's startup rather than one item's recovery.
32
+ */
33
+ const PS_TIMEOUT_MS = 2_000;
34
+ /**
35
+ * Whether two observations describe the same process.
36
+ *
37
+ * Two-sided on purpose. Only refusing the later ones would let a pid
38
+ * that has been around far longer than our child pass: a record
39
+ * holding a garbage or truncated pid can name `1`, and `1` started at
40
+ * boot, which is emphatically earlier. Signalling that process group
41
+ * is not a mistake anybody gets to make twice.
42
+ */
43
+ export function sameProcess(observed, recorded) {
44
+ return Math.abs(observed - recorded) <= SAME_PROCESS_MS;
45
+ }
46
+ /** Whether a value read off disk says enough to identify a process. */
47
+ export function isOwner(said) {
48
+ if (said === null || typeof said !== "object")
49
+ return false;
50
+ const owner = said;
51
+ return (typeof owner.pid === "number" &&
52
+ owner.pid > 0 &&
53
+ typeof owner.startedAt === "number");
54
+ }
55
+ /**
56
+ * Who this process is, for writing down.
57
+ *
58
+ * Returns nothing when the machine will not say when we started,
59
+ * because half an identity is worse than none: a record carrying a
60
+ * pid and no start time is one a later reader must either trust
61
+ * blindly or discard, and both of those are decisions this can avoid
62
+ * forcing by declining to write it.
63
+ */
64
+ export async function ownerNow(facts = systemFacts, pid = process.pid) {
65
+ const startedAt = await facts.startedAt(pid);
66
+ return startedAt === undefined ? undefined : { pid, startedAt };
67
+ }
68
+ /**
69
+ * Whether the process that wrote a record is still the one running.
70
+ *
71
+ * Identity outranks liveness in both directions. A live pid whose
72
+ * start time disagrees is a stranger wearing the number, and is gone
73
+ * for our purposes; there is no case where a mismatch means present.
74
+ *
75
+ * Undecidable when the machine will not answer, which is deliberately
76
+ * distinct from absent: a caller reclaiming things must treat "cannot
77
+ * tell" as "still there", and a caller merely reporting need not.
78
+ */
79
+ export async function ownerStanding(owner, facts = systemFacts) {
80
+ if (!facts.alive(owner.pid))
81
+ return "gone";
82
+ const startedAt = await facts.startedAt(owner.pid);
83
+ // Alive, but the table will not say since when. Nothing here can
84
+ // tell our process from a stranger holding the number, and the
85
+ // answer that costs work is the confident one.
86
+ if (startedAt === undefined)
87
+ return "unknown";
88
+ return sameProcess(startedAt, owner.startedAt) ? "running" : "gone";
89
+ }
90
+ /**
91
+ * Facts about processes, asked once each however often they are wanted.
92
+ *
93
+ * The cache holds what the machine said, never what a caller concluded
94
+ * from it. A standing is a judgement about one record, since it
95
+ * compares the pid's real start time against the one that record
96
+ * wrote down, so caching a standing under a pid lets one stale record
97
+ * answer for a live session that happens to be wearing the same
98
+ * number. The fact is per-pid and safe to share; the verdict is not,
99
+ * and this exists because the verdict was cached twice.
100
+ */
101
+ export function askedOnce(facts) {
102
+ const startedAt = new Map();
103
+ return {
104
+ alive: (pid) => facts.alive(pid),
105
+ startedAt: (pid) => {
106
+ const already = startedAt.get(pid);
107
+ if (already !== undefined)
108
+ return already;
109
+ const answer = facts.startedAt(pid);
110
+ startedAt.set(pid, answer);
111
+ return answer;
112
+ },
113
+ };
114
+ }
115
+ /** What the machine itself says, which is what everything but a test uses. */
116
+ export const systemFacts = {
117
+ async startedAt(pid) {
118
+ try {
119
+ // `lstart` rather than `etime`, because elapsed time is
120
+ // relative to now and the comparison wants an absolute
121
+ // moment. LC_ALL is pinned because the output is a formatted
122
+ // date: under a locale Date.parse cannot read, every identity
123
+ // check would decline and every caller would fall back to its
124
+ // own worst branch without saying anything.
125
+ const { stdout } = await promisify(execFile)("ps", ["-o", "lstart=", "-p", String(pid)], { timeout: PS_TIMEOUT_MS, env: { ...process.env, LC_ALL: "C" } });
126
+ const parsed = Date.parse(stdout.trim());
127
+ return Number.isNaN(parsed) ? undefined : parsed;
128
+ }
129
+ catch {
130
+ // No such process, no ps, or a process table too wedged to
131
+ // answer in time. Nothing here knows what it would be talking
132
+ // about, and saying so is the safe answer.
133
+ return undefined;
134
+ }
135
+ },
136
+ alive(pid) {
137
+ try {
138
+ process.kill(pid, 0);
139
+ return true;
140
+ }
141
+ catch (error) {
142
+ // EPERM means a process is there and is not ours to signal,
143
+ // which is emphatically alive. Collapsing it into "gone" was
144
+ // safe reasoning for a supervisor we spawned ourselves, since
145
+ // one we may not signal cannot be ours; it is not safe for a
146
+ // worktree, where the holder can be another user's session and
147
+ // the penalty for guessing is deleting their work.
148
+ if (error?.code === "EPERM")
149
+ return true;
150
+ return false;
151
+ }
152
+ },
153
+ };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Turns detected prose violations into a single skill-grounded
3
+ * instruction the guardian hands back to the author. The message
4
+ * names every violation and points at the prose-standard skill so
5
+ * the retry is informed, not a guess.
6
+ */
7
+ import type { ProseViolation } from "./detect.js";
8
+ /** Format prose violations into a block message, or "" if none. */
9
+ export declare function formatProseBlock(violations: ProseViolation[]): string;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Turns detected prose violations into a single skill-grounded
3
+ * instruction the guardian hands back to the author. The message
4
+ * names every violation and points at the prose-standard skill so
5
+ * the retry is informed, not a guess.
6
+ */
7
+ import { count } from "../ui/count.js";
8
+ /** Format prose violations into a block message, or "" if none. */
9
+ export function formatProseBlock(violations) {
10
+ if (violations.length === 0)
11
+ return "";
12
+ const lines = [
13
+ "This text does not follow the prose-standard skill. Fix the",
14
+ "violations below and try again, applying the skill's nuance",
15
+ "rather than a mechanical substitution.",
16
+ "",
17
+ ];
18
+ const emdashes = violations.filter((v) => v.kind === "emdash");
19
+ if (emdashes.length > 0) {
20
+ const count = emdashes.length;
21
+ lines.push(`- ${count} emdash${count === 1 ? "" : "es"}: never use emdashes.`, " Restructure the sentence (a colon, a semi-colon, parentheses", " or a new sentence), per prose-standard.");
22
+ }
23
+ // Deduplicate spellings by their found -> suggestion pairing so a
24
+ // word that recurs is named once.
25
+ const spellings = new Map();
26
+ for (const v of violations) {
27
+ if (v.kind !== "spelling" || !v.suggestion)
28
+ continue;
29
+ spellings.set(v.found.toLowerCase(), `${v.found} -> ${v.suggestion}`);
30
+ }
31
+ if (spellings.size > 0) {
32
+ lines.push(`- Non-Canadian spelling: ${[...spellings.values()].join(", ")}.`, " Use Canadian English spelling exclusively, per prose-standard.");
33
+ }
34
+ const curly = violations.filter((v) => v.kind === "curly-quote");
35
+ if (curly.length > 0) {
36
+ lines.push(`- ${count(curly.length, "curly quote")}: use straight quotes`, " ('' and \"\") instead, per prose-standard.");
37
+ }
38
+ const ellipses = violations.filter((v) => v.kind === "ellipsis");
39
+ if (ellipses.length > 0) {
40
+ lines.push(`- ${count(ellipses.length, "Unicode ellipsis character")}: spell it`, " out as three periods (...), per prose-standard.");
41
+ }
42
+ return lines.join("\n");
43
+ }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Prose convention detection: finds the mechanically certain
3
+ * violations of the writing voice (emdashes and non-Canadian
4
+ * spelling) so a guardian can block and point the author at the
5
+ * skill. Detection never rewrites; it names what is wrong and
6
+ * leaves the nuanced repair to the author.
7
+ */
8
+ /** A single prose convention violation. */
9
+ export interface ProseViolation {
10
+ /** Which rule was broken. */
11
+ readonly kind: "emdash" | "spelling" | "curly-quote" | "ellipsis";
12
+ /** The offending text as it appears. */
13
+ readonly found: string;
14
+ /** The Canadian replacement, when there is a single right one. */
15
+ readonly suggestion?: string;
16
+ /** A short statement of the rule, for the block message. */
17
+ readonly rule: string;
18
+ }
19
+ /**
20
+ * Curated American/British to Canadian spelling pairs. This is a
21
+ * deliberate allowlist, not a rule. A rule-based `-ize`/`-ise`
22
+ * or `-or`/`-our` check produces a flood of false positives
23
+ * (`size`, `noise`, `surprise`, `otherwise`, `doctor`,
24
+ * `anchor`), so each pair here is one we are certain about. The
25
+ * key is the form to flag; the value is the Canadian form.
26
+ *
27
+ * This list is the enforced half of a bound pair: the prose-standard
28
+ * skill carries the same table for a human to read, and
29
+ * tests/lib/prose/spelling-binding.test.ts asserts the two are
30
+ * identical, so neither can drift from the other. To change what
31
+ * the gate flags, change the skill and this list together.
32
+ *
33
+ * Meaning-dependent words are deliberately excluded so the gate
34
+ * never flags a correct spelling: `licence`/`license`,
35
+ * `practice`/`practise` and `cheque`/`check` turn on part of
36
+ * speech or sense; `meter` (the instrument) is correct while
37
+ * `metre` (the unit) is not; `aluminum`, `program` and `dialog`
38
+ * (the UI element) are the spellings Canadian English keeps. A
39
+ * miss is a missed block, never a wrong rewrite.
40
+ *
41
+ * Stored lowercase; matching is case-insensitive and the
42
+ * suggestion preserves the original's leading-capital shape.
43
+ */
44
+ export declare const SPELLING_PAIRS: ReadonlyArray<readonly [string, string]>;
45
+ /**
46
+ * Find every emdash and non-Canadian spelling in prose, skipping
47
+ * regions where the text is not prose (code fences, inline code,
48
+ * URLs, paths).
49
+ */
50
+ export declare function detectProseViolations(text: string): ProseViolation[];
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Prose convention detection: finds the mechanically certain
3
+ * violations of the writing voice (emdashes and non-Canadian
4
+ * spelling) so a guardian can block and point the author at the
5
+ * skill. Detection never rewrites; it names what is wrong and
6
+ * leaves the nuanced repair to the author.
7
+ */
8
+ const EMDASH_RULE = "prose-standard: never use emdashes; restructure the sentence (a colon, semi-colon, parentheses or a new sentence).";
9
+ const SPELLING_RULE = "prose-standard: use Canadian English spelling exclusively.";
10
+ const CURLY_QUOTE_RULE = "prose-standard: use straight quotes, not curly ones.";
11
+ const ELLIPSIS_RULE = "prose-standard: spell out an ellipsis as three periods, not the Unicode character.";
12
+ /**
13
+ * Curated American/British to Canadian spelling pairs. This is a
14
+ * deliberate allowlist, not a rule. A rule-based `-ize`/`-ise`
15
+ * or `-or`/`-our` check produces a flood of false positives
16
+ * (`size`, `noise`, `surprise`, `otherwise`, `doctor`,
17
+ * `anchor`), so each pair here is one we are certain about. The
18
+ * key is the form to flag; the value is the Canadian form.
19
+ *
20
+ * This list is the enforced half of a bound pair: the prose-standard
21
+ * skill carries the same table for a human to read, and
22
+ * tests/lib/prose/spelling-binding.test.ts asserts the two are
23
+ * identical, so neither can drift from the other. To change what
24
+ * the gate flags, change the skill and this list together.
25
+ *
26
+ * Meaning-dependent words are deliberately excluded so the gate
27
+ * never flags a correct spelling: `licence`/`license`,
28
+ * `practice`/`practise` and `cheque`/`check` turn on part of
29
+ * speech or sense; `meter` (the instrument) is correct while
30
+ * `metre` (the unit) is not; `aluminum`, `program` and `dialog`
31
+ * (the UI element) are the spellings Canadian English keeps. A
32
+ * miss is a missed block, never a wrong rewrite.
33
+ *
34
+ * Stored lowercase; matching is case-insensitive and the
35
+ * suggestion preserves the original's leading-capital shape.
36
+ */
37
+ export const SPELLING_PAIRS = [
38
+ // -our (American -or)
39
+ ["color", "colour"],
40
+ ["colors", "colours"],
41
+ ["colored", "coloured"],
42
+ ["behavior", "behaviour"],
43
+ ["behaviors", "behaviours"],
44
+ ["honor", "honour"],
45
+ ["honored", "honoured"],
46
+ ["favor", "favour"],
47
+ ["favored", "favoured"],
48
+ ["favorite", "favourite"],
49
+ ["favorites", "favourites"],
50
+ ["neighbor", "neighbour"],
51
+ ["neighbors", "neighbours"],
52
+ ["labor", "labour"],
53
+ ["flavor", "flavour"],
54
+ ["flavors", "flavours"],
55
+ ["valor", "valour"],
56
+ ["vapor", "vapour"],
57
+ ["rumor", "rumour"],
58
+ ["humor", "humour"],
59
+ ["harbor", "harbour"],
60
+ ["armor", "armour"],
61
+ ["endeavor", "endeavour"],
62
+ ["savior", "saviour"],
63
+ // -re (American -er)
64
+ ["center", "centre"],
65
+ ["centers", "centres"],
66
+ ["centered", "centred"],
67
+ ["theater", "theatre"],
68
+ ["theaters", "theatres"],
69
+ ["fiber", "fibre"],
70
+ ["fibers", "fibres"],
71
+ ["liter", "litre"],
72
+ ["liters", "litres"],
73
+ // -ce noun (American -se)
74
+ ["defense", "defence"],
75
+ ["defenses", "defences"],
76
+ ["offense", "offence"],
77
+ ["offenses", "offences"],
78
+ // -ize (British -ise; Canadian keeps -ize like American)
79
+ ["organise", "organize"],
80
+ ["organised", "organized"],
81
+ ["organising", "organizing"],
82
+ ["recognise", "recognize"],
83
+ ["recognised", "recognized"],
84
+ ["summarise", "summarize"],
85
+ ["summarised", "summarized"],
86
+ ["analyse", "analyze"],
87
+ ["analysed", "analyzed"],
88
+ ["prioritise", "prioritize"],
89
+ ["prioritised", "prioritized"],
90
+ ["realise", "realize"],
91
+ ["realised", "realized"],
92
+ ["minimise", "minimize"],
93
+ ["maximise", "maximize"],
94
+ ["optimise", "optimize"],
95
+ ["initialise", "initialize"],
96
+ ["initialised", "initialized"],
97
+ ["standardise", "standardize"],
98
+ ["customise", "customize"],
99
+ ["generalise", "generalize"],
100
+ ["specialise", "specialize"],
101
+ ["normalise", "normalize"],
102
+ ["serialise", "serialize"],
103
+ ["synchronise", "synchronize"],
104
+ // doubled consonant before a suffix (Canadian doubles the l)
105
+ ["traveler", "traveller"],
106
+ ["traveled", "travelled"],
107
+ ["traveling", "travelling"],
108
+ ["canceled", "cancelled"],
109
+ ["canceling", "cancelling"],
110
+ ["modeling", "modelling"],
111
+ ["modeled", "modelled"],
112
+ ["labeling", "labelling"],
113
+ ["labeled", "labelled"],
114
+ ["fueled", "fuelled"],
115
+ // -ogue (American -og)
116
+ ["catalog", "catalogue"],
117
+ ["catalogs", "catalogues"],
118
+ // grey (American gray)
119
+ ["gray", "grey"],
120
+ ["grays", "greys"],
121
+ // single l (American doubles)
122
+ ["enroll", "enrol"],
123
+ ["enrollment", "enrolment"],
124
+ ["fulfill", "fulfil"],
125
+ ["fulfillment", "fulfilment"],
126
+ ];
127
+ /** Build the case-insensitive, whole-word spelling regex once. */
128
+ const SPELLING_LOOKUP = new Map(SPELLING_PAIRS);
129
+ const SPELLING_REGEX = new RegExp(`\\b(${SPELLING_PAIRS.map(([from]) => from).join("|")})\\b`, "gi");
130
+ const EMDASH_REGEX = /\u2014/g;
131
+ // The literal six-character escape an author types when they
132
+ // meant an emdash. prose-standard bans it as an emdash in
133
+ // disguise, so it is reported under the same kind.
134
+ const EMDASH_ESCAPE_REGEX = /\\u2014/gi;
135
+ const CURLY_QUOTE_REGEX = /[\u2018\u2019\u201C\u201D]/g;
136
+ const ELLIPSIS_REGEX = /\u2026/g;
137
+ const FENCE_REGEX = /```[\s\S]*?```/g;
138
+ /** Map a curly quote to its straight ASCII equivalent. */
139
+ const STRAIGHT_QUOTE = {
140
+ "\u2018": "'",
141
+ "\u2019": "'",
142
+ "\u201C": '"',
143
+ "\u201D": '"',
144
+ };
145
+ const INLINE_CODE_REGEX = /`[^`\n]*`/g;
146
+ const URL_REGEX = /https?:\/\/\S+/g;
147
+ // Deliberately conservative: only tokens that clearly open as a
148
+ // path or home reference (`~/`, `./`, `/`) are masked. Masking
149
+ // every slash-joined token would eat ordinary prose like
150
+ // "and/or" and "3/4" and could swallow a real spelling violation
151
+ // that follows. A bare relative path that slips through is
152
+ // almost always backticked anyway, and the worst case is a false
153
+ // block the author clears by wrapping the path in backticks.
154
+ const PATH_REGEX = /(?:^|\s)[~./][\w./-]*\/[\w./-]+/g;
155
+ /**
156
+ * Replace every match of a pattern with spaces of the same
157
+ * length, so later offset-based scans see blanks where the
158
+ * non-prose region was without the surrounding text shifting.
159
+ */
160
+ function blankOut(text, pattern) {
161
+ return text.replace(pattern, (match) => " ".repeat(match.length));
162
+ }
163
+ /** Preserve the original's leading-capital shape on a suggestion. */
164
+ function matchCase(found, suggestion) {
165
+ if (found[0] && found[0] === found[0].toUpperCase()) {
166
+ return suggestion[0].toUpperCase() + suggestion.slice(1);
167
+ }
168
+ return suggestion;
169
+ }
170
+ /**
171
+ * Find every emdash and non-Canadian spelling in prose, skipping
172
+ * regions where the text is not prose (code fences, inline code,
173
+ * URLs, paths).
174
+ */
175
+ export function detectProseViolations(text) {
176
+ // Mask non-prose regions first so their contents never match.
177
+ let prose = blankOut(text, FENCE_REGEX);
178
+ prose = blankOut(prose, INLINE_CODE_REGEX);
179
+ prose = blankOut(prose, URL_REGEX);
180
+ prose = blankOut(prose, PATH_REGEX);
181
+ const violations = [];
182
+ for (const match of prose.matchAll(EMDASH_REGEX)) {
183
+ violations.push({ kind: "emdash", found: match[0], rule: EMDASH_RULE });
184
+ }
185
+ for (const match of prose.matchAll(EMDASH_ESCAPE_REGEX)) {
186
+ violations.push({ kind: "emdash", found: match[0], rule: EMDASH_RULE });
187
+ }
188
+ for (const match of prose.matchAll(CURLY_QUOTE_REGEX)) {
189
+ violations.push({
190
+ kind: "curly-quote",
191
+ found: match[0],
192
+ suggestion: STRAIGHT_QUOTE[match[0]],
193
+ rule: CURLY_QUOTE_RULE,
194
+ });
195
+ }
196
+ for (const match of prose.matchAll(ELLIPSIS_REGEX)) {
197
+ violations.push({
198
+ kind: "ellipsis",
199
+ found: match[0],
200
+ suggestion: "...",
201
+ rule: ELLIPSIS_RULE,
202
+ });
203
+ }
204
+ for (const match of prose.matchAll(SPELLING_REGEX)) {
205
+ const found = match[0];
206
+ const canadian = SPELLING_LOOKUP.get(found.toLowerCase());
207
+ if (!canadian)
208
+ continue;
209
+ violations.push({
210
+ kind: "spelling",
211
+ found,
212
+ suggestion: matchCase(found, canadian),
213
+ rule: SPELLING_RULE,
214
+ });
215
+ }
216
+ return violations;
217
+ }