@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,8 @@
1
+ /**
2
+ * Running a command, as a dependency rather than an import.
3
+ *
4
+ * The whole surface is one type, one result shape and one helper that throws with
5
+ * the backend's own words. It is its own module because two libraries need it and
6
+ * neither owns it.
7
+ */
8
+ export { type Exec, type ExecResult, type ProviderDeps, run, } from "./exec.js";
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Running a command, as a dependency rather than an import.
3
+ *
4
+ * The whole surface is one type, one result shape and one helper that throws with
5
+ * the backend's own words. It is its own module because two libraries need it and
6
+ * neither owns it.
7
+ */
8
+ export { run, } from "./exec.js";
@@ -0,0 +1,52 @@
1
+ /**
2
+ * The generalized loop breaker. A gate blocks a violation set
3
+ * the first time it sees it, but relents if the identical set
4
+ * comes back, on the theory that an author who could not satisfy
5
+ * the rule after one specific, skill-grounded retry will not
6
+ * satisfy it on the next either. Relenting surfaces the
7
+ * violations to the human gate rather than trapping the author
8
+ * in a loop.
9
+ *
10
+ * The mechanism is domain-neutral: prose violations and section
11
+ * violations both flow through it, each supplying its own
12
+ * detection, its own block message and its own relent wording.
13
+ */
14
+ /** A single convention violation that can be signed and gated. */
15
+ export interface Violation {
16
+ /** Which rule was broken (the signature's namespace). */
17
+ readonly kind: string;
18
+ /** The offending text, used in the signature and the message. */
19
+ readonly found: string;
20
+ }
21
+ /** allow: clean. block: first offence. relent: already blocked once. */
22
+ export type GateAction = "allow" | "block" | "relent";
23
+ /** The gate's verdict on one artifact. */
24
+ export interface GateDecision {
25
+ readonly action: GateAction;
26
+ /** Stable signature of this violation set, for the caller to persist. */
27
+ readonly signature: string;
28
+ /** Message for the AI (block) or the user (relent); empty when allowed. */
29
+ readonly message: string;
30
+ }
31
+ /**
32
+ * A stable, order-independent signature of a violation set,
33
+ * scoped to the artifact it was found in. The found text is
34
+ * lower-cased so a recurrence that only changes case is still
35
+ * recognized as the same violation, and the artifact is folded
36
+ * in (as a hash) so the same violation shape in two different
37
+ * bodies signs differently. Without the artifact scope, every
38
+ * single-emdash body collapses to the signature `emdash:—`, so
39
+ * blocking one artifact would relent the next unrelated one on
40
+ * its first fire. The relent is meant to break a loop on the
41
+ * identical resubmission, not to wave through a fresh artifact
42
+ * that happens to share a violation shape.
43
+ */
44
+ export declare function violationSignature(violations: Violation[], artifact?: string): string;
45
+ /**
46
+ * Decide whether to block, relent or allow a violation set given
47
+ * the signatures already blocked this session. format renders
48
+ * the block body; relentPrefix is prepended to that body when
49
+ * the gate relents, to explain why the violation is being let
50
+ * through.
51
+ */
52
+ export declare function decideGate<T extends Violation>(violations: T[], priorSignatures: string[], format: (violations: T[]) => string, relentPrefix: string, artifact: string): GateDecision;
@@ -0,0 +1,68 @@
1
+ /**
2
+ * The generalized loop breaker. A gate blocks a violation set
3
+ * the first time it sees it, but relents if the identical set
4
+ * comes back, on the theory that an author who could not satisfy
5
+ * the rule after one specific, skill-grounded retry will not
6
+ * satisfy it on the next either. Relenting surfaces the
7
+ * violations to the human gate rather than trapping the author
8
+ * in a loop.
9
+ *
10
+ * The mechanism is domain-neutral: prose violations and section
11
+ * violations both flow through it, each supplying its own
12
+ * detection, its own block message and its own relent wording.
13
+ */
14
+ /**
15
+ * A small, stable, non-cryptographic string hash (djb2). Used to
16
+ * fingerprint the artifact so the signature can be scoped to it
17
+ * without storing the whole body. A collision only ever causes a
18
+ * benign spurious relent, never a wrong block, so 32 bits is
19
+ * ample.
20
+ */
21
+ function hashString(text) {
22
+ let hash = 5381;
23
+ for (let i = 0; i < text.length; i++) {
24
+ hash = (Math.imul(hash, 33) + text.charCodeAt(i)) | 0;
25
+ }
26
+ return (hash >>> 0).toString(36);
27
+ }
28
+ /**
29
+ * A stable, order-independent signature of a violation set,
30
+ * scoped to the artifact it was found in. The found text is
31
+ * lower-cased so a recurrence that only changes case is still
32
+ * recognized as the same violation, and the artifact is folded
33
+ * in (as a hash) so the same violation shape in two different
34
+ * bodies signs differently. Without the artifact scope, every
35
+ * single-emdash body collapses to the signature `emdash:—`, so
36
+ * blocking one artifact would relent the next unrelated one on
37
+ * its first fire. The relent is meant to break a loop on the
38
+ * identical resubmission, not to wave through a fresh artifact
39
+ * that happens to share a violation shape.
40
+ */
41
+ export function violationSignature(violations, artifact) {
42
+ const body = violations
43
+ .map((v) => `${v.kind}:${v.found.toLowerCase()}`)
44
+ .sort()
45
+ .join("|");
46
+ return artifact ? `${hashString(artifact)}#${body}` : body;
47
+ }
48
+ /**
49
+ * Decide whether to block, relent or allow a violation set given
50
+ * the signatures already blocked this session. format renders
51
+ * the block body; relentPrefix is prepended to that body when
52
+ * the gate relents, to explain why the violation is being let
53
+ * through.
54
+ */
55
+ export function decideGate(violations, priorSignatures, format, relentPrefix, artifact) {
56
+ if (violations.length === 0) {
57
+ return { action: "allow", signature: "", message: "" };
58
+ }
59
+ const signature = violationSignature(violations, artifact);
60
+ if (priorSignatures.includes(signature)) {
61
+ return {
62
+ action: "relent",
63
+ signature,
64
+ message: relentPrefix + format(violations),
65
+ };
66
+ }
67
+ return { action: "block", signature, message: format(violations) };
68
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The signature store contract a gate reads and writes. The
3
+ * loop breaker in decision.ts needs to know which violation
4
+ * signatures it has already blocked this session; this is the
5
+ * interface that supplies them, kept pure so the decision logic
6
+ * stays free of any session or runtime dependency. The
7
+ * session-backed implementation lives in lib/internal/gate.
8
+ */
9
+ export interface GateDeps {
10
+ /** Every block signature recorded this session. */
11
+ readSignatures: () => string[];
12
+ /** Record a new block signature. */
13
+ persistSignature: (signature: string) => void;
14
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export { decideGate, type GateAction, type GateDecision, type Violation, violationSignature, } from "./decision.js";
2
+ export type { GateDeps } from "./deps.js";
@@ -0,0 +1 @@
1
+ export { decideGate, violationSignature, } from "./decision.js";
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Git CLI violation detection: patterns that should be
3
+ * blocked before reaching guardians.
4
+ *
5
+ * - Amend ban: `git commit --amend` is blocked
6
+ * unconditionally (git-commit-convention skill).
7
+ * - Unquoted heredoc: `<<EOF` instead of `<<'EOF'`
8
+ * allows variable expansion that corrupts content
9
+ * (commit-format skill).
10
+ * - Compound commands: multiple guardable targets or
11
+ * state changes mixed with guardable commands are
12
+ * blocked so guardians can process each independently
13
+ * (commit-format skill).
14
+ *
15
+ * Every message here states the corrective action itself. They
16
+ * used to end by naming a skill to go and read, which is only
17
+ * actionable while that skill is loaded, and one of them named a
18
+ * skill whose worked example the next check blocked.
19
+ *
20
+ * The git add + git commit pattern is explicitly allowed
21
+ * because git add is a staging prefix, not a guardable target.
22
+ */
23
+ /**
24
+ * Block `git commit --amend` unconditionally. Amends
25
+ * rewrite history and are almost never the right choice
26
+ * when the agent can just make a new commit.
27
+ */
28
+ export declare function detectAmendViolation(stripped: string): string | null;
29
+ /**
30
+ * Block `git commit` with an unquoted heredoc delimiter.
31
+ * Takes the stripped command (for git commit scoping) and
32
+ * the original (for heredoc operator validation).
33
+ */
34
+ export declare function detectUnquotedCommitHeredoc(stripped: string, original: string): string | null;
35
+ /**
36
+ * Check whether a bash command chains multiple concerns that
37
+ * should be separate calls. Returns a block reason or null
38
+ * if the command is fine.
39
+ */
40
+ export declare function detectCompoundViolation(stripped: string): string | null;
41
+ /**
42
+ * Run every git-cli check against a raw bash command. Returns the
43
+ * first violation's block reason, or null if the command is fine.
44
+ * The one entry point an adapter needs; the individual `detect*`
45
+ * functions stay exported for adapters that want finer control.
46
+ */
47
+ export declare function checkGitCli(command: string): string | null;
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Git CLI violation detection: patterns that should be
3
+ * blocked before reaching guardians.
4
+ *
5
+ * - Amend ban: `git commit --amend` is blocked
6
+ * unconditionally (git-commit-convention skill).
7
+ * - Unquoted heredoc: `<<EOF` instead of `<<'EOF'`
8
+ * allows variable expansion that corrupts content
9
+ * (commit-format skill).
10
+ * - Compound commands: multiple guardable targets or
11
+ * state changes mixed with guardable commands are
12
+ * blocked so guardians can process each independently
13
+ * (commit-format skill).
14
+ *
15
+ * Every message here states the corrective action itself. They
16
+ * used to end by naming a skill to go and read, which is only
17
+ * actionable while that skill is loaded, and one of them named a
18
+ * skill whose worked example the next check blocked.
19
+ *
20
+ * The git add + git commit pattern is explicitly allowed
21
+ * because git add is a staging prefix, not a guardable target.
22
+ */
23
+ import { hasUnquotedHeredoc, stripHeredocBodies, stripShellData, } from "../shell/parse.js";
24
+ /** Commands that guardians intercept and may rewrite. */
25
+ const GUARDABLE_PATTERNS = [
26
+ /\bgit\s+commit\b/,
27
+ /\bgh\s+pr\s+(?:create|edit)\b/,
28
+ /\bgh\s+issue\s+(?:create|edit)\b/,
29
+ ];
30
+ /**
31
+ * Git state changes that shouldn't be chained with guardable
32
+ * commands. These alter repo state in ways the subsequent
33
+ * command depends on, and a guardian rewrite could drop them.
34
+ */
35
+ const STATE_CHANGE_PATTERNS = [
36
+ /\bgit\s+push\b/,
37
+ /\bgit\s+checkout\b/,
38
+ /\bgit\s+switch\b/,
39
+ /\bgit\s+pull\b/,
40
+ /\bgit\s+merge\b/,
41
+ /\bgit\s+rebase\b/,
42
+ /\bgit\s+reset\b/,
43
+ /\bgit\s+stash\b/,
44
+ /\bgit\s+fetch\b/,
45
+ ];
46
+ /** Shell separators that divide independent commands. */
47
+ const SEPARATOR = /\s*(?:&&|;|\n)\s*/;
48
+ /**
49
+ * Block `git commit --amend` unconditionally. Amends
50
+ * rewrite history and are almost never the right choice
51
+ * when the agent can just make a new commit.
52
+ */
53
+ export function detectAmendViolation(stripped) {
54
+ if (/\bgit\s+commit\b/.test(stripped) && /--amend\b/.test(stripped)) {
55
+ return ("Blocked: --amend is not allowed. Make a new commit " +
56
+ "instead.\n\n" +
57
+ "Amending rewrites history and is almost never necessary. " +
58
+ "A new commit is cleaner and preserves the work trail.");
59
+ }
60
+ return null;
61
+ }
62
+ /**
63
+ * Block `git commit` with an unquoted heredoc delimiter.
64
+ * Takes the stripped command (for git commit scoping) and
65
+ * the original (for heredoc operator validation).
66
+ */
67
+ export function detectUnquotedCommitHeredoc(stripped, original) {
68
+ if (!/\bgit\s+commit\b/.test(stripped))
69
+ return null;
70
+ if (!hasUnquotedHeredoc(original))
71
+ return null;
72
+ return ("Blocked: heredoc uses an unquoted delimiter (e.g. " +
73
+ "`<<EOF`), which allows shell variable expansion. " +
74
+ "Use a quoted delimiter (`<<'EOF'`) to prevent " +
75
+ "`$variable` and backtick expansion from corrupting " +
76
+ "the commit message:\n\n" +
77
+ "git commit -F- <<'EOF'\n" +
78
+ "type(scope): subject\n\nWhy, not what.\nEOF");
79
+ }
80
+ /**
81
+ * Check whether a bash command chains multiple concerns that
82
+ * should be separate calls. Returns a block reason or null
83
+ * if the command is fine.
84
+ */
85
+ export function detectCompoundViolation(stripped) {
86
+ const segments = stripped.split(SEPARATOR).filter(Boolean);
87
+ if (segments.length < 2)
88
+ return null;
89
+ let guardableCount = 0;
90
+ let stateChangeCount = 0;
91
+ for (const segment of segments) {
92
+ const trimmed = segment.trim();
93
+ if (GUARDABLE_PATTERNS.some((p) => p.test(trimmed))) {
94
+ guardableCount++;
95
+ continue;
96
+ }
97
+ if (STATE_CHANGE_PATTERNS.some((p) => p.test(trimmed))) {
98
+ stateChangeCount++;
99
+ }
100
+ }
101
+ if (guardableCount > 1) {
102
+ return ("Blocked: multiple guardable commands in one bash call. " +
103
+ "Each git commit, gh pr create/edit and gh issue create/edit " +
104
+ "must be its own bash call so guardians can review them " +
105
+ "independently. Retry with one command per bash call.");
106
+ }
107
+ if (guardableCount > 0 && stateChangeCount > 0) {
108
+ return ("Blocked: git state change chained with a guardable command. " +
109
+ "Commands like git push, git checkout and git pull must be " +
110
+ "separate bash calls from git commit, gh pr create/edit and " +
111
+ "gh issue create/edit. Retry with one command per bash call.");
112
+ }
113
+ return null;
114
+ }
115
+ /**
116
+ * Run every git-cli check against a raw bash command. Returns the
117
+ * first violation's block reason, or null if the command is fine.
118
+ * The one entry point an adapter needs; the individual `detect*`
119
+ * functions stay exported for adapters that want finer control.
120
+ */
121
+ export function checkGitCli(command) {
122
+ const stripped = stripShellData(stripHeredocBodies(command));
123
+ return (detectAmendViolation(stripped) ??
124
+ detectUnquotedCommitHeredoc(stripped, command) ??
125
+ detectCompoundViolation(stripped) ??
126
+ null);
127
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Flag specs for the gh commands this package understands, defined
3
+ * once in the domain that owns them and imported wherever a
4
+ * consumer needs to read a gh flag (attribution, the interceptor).
5
+ * The generic command model ships no flag tables; callers pass
6
+ * these in.
7
+ */
8
+ import type { FlagSpec } from "../command/index.js";
9
+ /**
10
+ * The body flags of gh pr/issue create and edit: the inline body
11
+ * (--body, -b) and the body file (--body-file, -F), in both their
12
+ * long and short forms.
13
+ */
14
+ export declare const GH_BODY_SPEC: FlagSpec;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Flag specs for the gh commands this package understands, defined
3
+ * once in the domain that owns them and imported wherever a
4
+ * consumer needs to read a gh flag (attribution, the interceptor).
5
+ * The generic command model ships no flag tables; callers pass
6
+ * these in.
7
+ */
8
+ /**
9
+ * The body flags of gh pr/issue create and edit: the inline body
10
+ * (--body, -b) and the body file (--body-file, -F), in both their
11
+ * long and short forms.
12
+ */
13
+ export const GH_BODY_SPEC = {
14
+ flags: [
15
+ { name: "body", long: "body", short: "b", takesValue: true },
16
+ { name: "body-file", long: "body-file", short: "F", takesValue: true },
17
+ ],
18
+ };
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Detects gh pr/issue commands that violate the
3
+ * github-cli-convention skill's formatting rules.
4
+ *
5
+ * The convention requires heredoc syntax (--body-file -)
6
+ * with a quoted delimiter for body content, and metadata
7
+ * assignment in separate commands after creation.
8
+ */
9
+ export { GH_BODY_SPEC } from "./command-spec.js";
10
+ /**
11
+ * Check whether a gh command uses --body instead of
12
+ * --body-file with heredoc. Returns a block reason or
13
+ * null if the command is fine.
14
+ */
15
+ export declare function detectInlineBody(command: string): string | null;
16
+ /**
17
+ * Refuse `gh pr merge --delete-branch`.
18
+ *
19
+ * The flag deletes the branch through a separate API call, and GitHub auto-closes
20
+ * every open PR that used it as a base. Those cannot be reopened, so a stacked PR
21
+ * merged this way destroys the rest of the stack with no way back. The flag saves one
22
+ * command and the failure is unrecoverable, which is the trade a gate exists for.
23
+ *
24
+ * Blocked whether or not anything is stacked on it, because the interceptor cannot
25
+ * know that from the command, and the safe sequence costs one extra call. This rule
26
+ * used to live in a skill, where it was correct and unenforced.
27
+ */
28
+ export declare function detectDeleteBranchOnMerge(command: string): string | null;
29
+ /**
30
+ * Check whether a gh create command packs metadata flags
31
+ * that should be in separate edit commands. Returns a block
32
+ * reason or null if the command is fine.
33
+ */
34
+ export declare function detectPackedMetadata(command: string): string | null;
35
+ /**
36
+ * Check whether a gh command uses --body-file with a file
37
+ * path instead of stdin. The convention requires
38
+ * `--body-file -` piped from a heredoc, never a file path.
39
+ */
40
+ export declare function detectBodyFilePath(command: string): string | null;
41
+ /**
42
+ * Check whether a gh command uses --body-file - but has no
43
+ * heredoc to feed it. Without a heredoc, the command hangs
44
+ * waiting for stdin.
45
+ *
46
+ * Takes both the stripped command (for gh scoping and
47
+ * --body-file detection) and the original (for heredoc
48
+ * presence, since stripping removes the operator).
49
+ */
50
+ export declare function detectMissingHeredoc(stripped: string, original: string): string | null;
51
+ /**
52
+ * Check whether a gh command uses a heredoc with an unquoted
53
+ * delimiter. Unquoted delimiters allow shell variable expansion
54
+ * (`$variable`, backticks, `$(command)`) which corrupts body
55
+ * content.
56
+ *
57
+ * Takes both the stripped command (for gh scoping) and the
58
+ * original (for heredoc operator validation, which stripping
59
+ * would remove).
60
+ */
61
+ export declare function detectUnsafeHeredoc(stripped: string, original: string): string | null;
62
+ /**
63
+ * Run every github-cli check against a raw bash command. Returns
64
+ * the first violation's block reason, or null if the command is
65
+ * fine. The one entry point an adapter needs; the individual
66
+ * `detect*` functions stay exported for adapters that want finer
67
+ * control.
68
+ */
69
+ export declare function checkGithubCli(command: string): string | null;
70
+ /** Detect whether a bash command contains a specific gh subcommand. */
71
+ export declare function isGhCommand(command: string, subcommand: string): boolean;
@@ -0,0 +1,188 @@
1
+ /**
2
+ * Detects gh pr/issue commands that violate the
3
+ * github-cli-convention skill's formatting rules.
4
+ *
5
+ * The convention requires heredoc syntax (--body-file -)
6
+ * with a quoted delimiter for body content, and metadata
7
+ * assignment in separate commands after creation.
8
+ */
9
+ import { findFlag, tokenize } from "../command/index.js";
10
+ import { extractBodyFilePath, hasUnquotedHeredoc, stripHeredocBodies, stripShellData, } from "../shell/parse.js";
11
+ import { GH_BODY_SPEC } from "./command-spec.js";
12
+ export { GH_BODY_SPEC } from "./command-spec.js";
13
+ /**
14
+ * The form every one of these blocks is asking for, written out.
15
+ *
16
+ * Here rather than in the skill it came from, because a block that names a rule and
17
+ * sends the reader elsewhere for the fix is only actionable while the elsewhere is
18
+ * loaded. Four of these messages used to end with "read the github-cli-convention
19
+ * skill for the heredoc pattern", which is a redirect to a document the reader may
20
+ * not have and cannot be sure of. The pattern is three lines. It fits here.
21
+ */
22
+ const REQUIRED_FORM = "The required form is:\n\n" +
23
+ "gh pr create --title '...' --body-file - <<'EOF'\n" +
24
+ "### \u{1F310} Situation\n...\nEOF\n\n" +
25
+ "A quoted delimiter, stdin rather than a path, and nothing piped or wrapped " +
26
+ "around the command.";
27
+ /** Matches gh pr or issue create/edit commands. */
28
+ const GH_ENTITY_COMMAND = /\bgh\s+(?:pr|issue)\s+(?:create|edit)\b/;
29
+ /** Matches --body-file - (stdin). */
30
+ const BODY_FILE_STDIN = /--body-file\s+-(?:\s|$)/;
31
+ /** Matches a heredoc operator. */
32
+ const HEREDOC = /<<-?\s*['"]?\w/;
33
+ /**
34
+ * Metadata flags that should be in separate edit commands,
35
+ * not packed into create.
36
+ */
37
+ const METADATA_FLAGS = /--(?:add-)?(?:label|assignee|reviewer|project)\b|--milestone\b/;
38
+ /** Matches a gh create (not edit) command. */
39
+ const GH_CREATE = /\bgh\s+(?:pr|issue)\s+create\b/;
40
+ /**
41
+ * Check whether a gh command uses --body instead of
42
+ * --body-file with heredoc. Returns a block reason or
43
+ * null if the command is fine.
44
+ */
45
+ export function detectInlineBody(command) {
46
+ const gh = findGhEntityCommand(command);
47
+ if (!gh)
48
+ return null;
49
+ // The body-file heredoc form is the correct one; only an inline
50
+ // body (--body or its short -b) is the violation.
51
+ if (gh.heredoc)
52
+ return null;
53
+ if (findFlag(gh, GH_BODY_SPEC, "body-file"))
54
+ return null;
55
+ if (!findFlag(gh, GH_BODY_SPEC, "body"))
56
+ return null;
57
+ return ("Blocked: gh pr/issue command uses an inline body (--body or " +
58
+ "-b) instead of --body-file with a heredoc. An inline body has " +
59
+ `quoting issues with markdown content.\n\n${REQUIRED_FORM}`);
60
+ }
61
+ /**
62
+ * Refuse `gh pr merge --delete-branch`.
63
+ *
64
+ * The flag deletes the branch through a separate API call, and GitHub auto-closes
65
+ * every open PR that used it as a base. Those cannot be reopened, so a stacked PR
66
+ * merged this way destroys the rest of the stack with no way back. The flag saves one
67
+ * command and the failure is unrecoverable, which is the trade a gate exists for.
68
+ *
69
+ * Blocked whether or not anything is stacked on it, because the interceptor cannot
70
+ * know that from the command, and the safe sequence costs one extra call. This rule
71
+ * used to live in a skill, where it was correct and unenforced.
72
+ */
73
+ export function detectDeleteBranchOnMerge(command) {
74
+ if (!/\bgh\s+pr\s+merge\b/.test(command))
75
+ return null;
76
+ if (!/(?:--delete-branch|(?<![\w-])-d(?![\w-]))/.test(command))
77
+ return null;
78
+ return ("Blocked: --delete-branch on a merge deletes the branch through a " +
79
+ "separate API call, and GitHub permanently closes every open PR that " +
80
+ "used it as a base. Closed that way, they cannot be reopened.\n\n" +
81
+ "Merge without it, then delete the branch once you have confirmed " +
82
+ "nothing is based on it:\n\n" +
83
+ "gh pr merge <number> --merge\n" +
84
+ "gh pr list --base <branch> # empty means nothing depends on it\n" +
85
+ "git push origin --delete <branch>\n\n" +
86
+ "Prefer `review_offer merge`, which does not offer the flag at all.");
87
+ }
88
+ /** Find a gh pr/issue create or edit command in a bash command. */
89
+ function findGhEntityCommand(command) {
90
+ return tokenize(command).commands.find((c) => c.argv[0]?.text === "gh" &&
91
+ (c.argv[1]?.text === "pr" || c.argv[1]?.text === "issue") &&
92
+ (c.argv[2]?.text === "create" || c.argv[2]?.text === "edit"));
93
+ }
94
+ /**
95
+ * Check whether a gh create command packs metadata flags
96
+ * that should be in separate edit commands. Returns a block
97
+ * reason or null if the command is fine.
98
+ */
99
+ export function detectPackedMetadata(command) {
100
+ if (!GH_CREATE.test(command))
101
+ return null;
102
+ if (!METADATA_FLAGS.test(command))
103
+ return null;
104
+ return ("Blocked: gh create command includes metadata flags " +
105
+ "(labels, assignees, reviewers, milestones, projects). " +
106
+ "Assign metadata in separate gh edit commands after " +
107
+ "creation, one concern per call:\n\n" +
108
+ "gh pr edit <number> --add-label bug\n" +
109
+ "gh pr edit <number> --add-assignee someone");
110
+ }
111
+ /**
112
+ * Check whether a gh command uses --body-file with a file
113
+ * path instead of stdin. The convention requires
114
+ * `--body-file -` piped from a heredoc, never a file path.
115
+ */
116
+ export function detectBodyFilePath(command) {
117
+ if (!GH_ENTITY_COMMAND.test(command))
118
+ return null;
119
+ const path = extractBodyFilePath(command);
120
+ if (!path)
121
+ return null;
122
+ return ("Blocked: --body-file points to a file path " +
123
+ `(${path}) instead of stdin. Use \`--body-file -\` ` +
124
+ `with a heredoc to pipe the body content.\n\n${REQUIRED_FORM}`);
125
+ }
126
+ /**
127
+ * Check whether a gh command uses --body-file - but has no
128
+ * heredoc to feed it. Without a heredoc, the command hangs
129
+ * waiting for stdin.
130
+ *
131
+ * Takes both the stripped command (for gh scoping and
132
+ * --body-file detection) and the original (for heredoc
133
+ * presence, since stripping removes the operator).
134
+ */
135
+ export function detectMissingHeredoc(stripped, original) {
136
+ if (!GH_ENTITY_COMMAND.test(stripped))
137
+ return null;
138
+ if (!BODY_FILE_STDIN.test(stripped))
139
+ return null;
140
+ if (HEREDOC.test(original))
141
+ return null;
142
+ return ("Blocked: --body-file - has no heredoc to provide the " +
143
+ "body content. The command will hang waiting for stdin.\n\n" +
144
+ `Add a heredoc after the command.\n\n${REQUIRED_FORM}`);
145
+ }
146
+ /**
147
+ * Check whether a gh command uses a heredoc with an unquoted
148
+ * delimiter. Unquoted delimiters allow shell variable expansion
149
+ * (`$variable`, backticks, `$(command)`) which corrupts body
150
+ * content.
151
+ *
152
+ * Takes both the stripped command (for gh scoping) and the
153
+ * original (for heredoc operator validation, which stripping
154
+ * would remove).
155
+ */
156
+ export function detectUnsafeHeredoc(stripped, original) {
157
+ if (!GH_ENTITY_COMMAND.test(stripped))
158
+ return null;
159
+ if (!hasUnquotedHeredoc(original))
160
+ return null;
161
+ return ("Blocked: heredoc uses an unquoted delimiter (e.g. " +
162
+ "`<<EOF`), which allows shell variable expansion. " +
163
+ "Use a quoted delimiter (`<<'EOF'`) to prevent " +
164
+ "`$variable` and backtick expansion from corrupting " +
165
+ `the body content.\n\n${REQUIRED_FORM}`);
166
+ }
167
+ /**
168
+ * Run every github-cli check against a raw bash command. Returns
169
+ * the first violation's block reason, or null if the command is
170
+ * fine. The one entry point an adapter needs; the individual
171
+ * `detect*` functions stay exported for adapters that want finer
172
+ * control.
173
+ */
174
+ export function checkGithubCli(command) {
175
+ const stripped = stripShellData(stripHeredocBodies(command));
176
+ return (detectInlineBody(command) ??
177
+ detectPackedMetadata(stripped) ??
178
+ detectDeleteBranchOnMerge(stripped) ??
179
+ detectBodyFilePath(stripped) ??
180
+ detectMissingHeredoc(stripped, command) ??
181
+ detectUnsafeHeredoc(stripped, command) ??
182
+ null);
183
+ }
184
+ /** Detect whether a bash command contains a specific gh subcommand. */
185
+ export function isGhCommand(command, subcommand) {
186
+ const re = new RegExp(`\\bgh\\s+${subcommand}\\s+(create|edit)\\b`);
187
+ return re.test(command);
188
+ }