@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,88 @@
1
+ /**
2
+ * Tmux driver. Uses `tmux new-window` for tabs and windows
3
+ * (tmux has no separate window concept; a new tmux "window"
4
+ * is what we call a tab), and `tmux split-window` for panes.
5
+ *
6
+ * Available when both:
7
+ *
8
+ * - The `tmux` binary is on PATH.
9
+ * - The current process is inside a tmux session (`TMUX`
10
+ * env var is set). Otherwise the new tab has nowhere to
11
+ * attach.
12
+ */
13
+ import { execFile, spawn as nodeSpawn } from "node:child_process";
14
+ import { promisify } from "node:util";
15
+ import { wrapCommandWithEnv } from "./shared.js";
16
+ const execFileAsync = promisify(execFile);
17
+ async function tmuxOnPath() {
18
+ try {
19
+ await execFileAsync("command", ["-v", "tmux"]);
20
+ return true;
21
+ }
22
+ catch {
23
+ try {
24
+ await execFileAsync("which", ["tmux"]);
25
+ return true;
26
+ }
27
+ catch {
28
+ return false;
29
+ }
30
+ }
31
+ }
32
+ function buildArgs(request) {
33
+ const args = [];
34
+ switch (request.layout) {
35
+ case "tab":
36
+ case "window":
37
+ // Tmux's "window" is what other emulators call a
38
+ // tab. There is no native multi-window concept;
39
+ // callers asking for a window get a new tab.
40
+ args.push("new-window");
41
+ if (request.title)
42
+ args.push("-n", request.title);
43
+ if (request.cwd)
44
+ args.push("-c", request.cwd);
45
+ break;
46
+ case "pane":
47
+ args.push("split-window");
48
+ if (request.cwd)
49
+ args.push("-c", request.cwd);
50
+ break;
51
+ }
52
+ // Tmux runs the spawned command in the server's
53
+ // environment, not the calling CLI's. Wrapping the
54
+ // command in a shell that sets env vars and execs
55
+ // the target is portable across tmux versions and
56
+ // avoids relying on `-e KEY=value`, which was added
57
+ // in tmux 3.0 and not always present.
58
+ // No command means the caller wants the surface itself, so let
59
+ // tmux start the user's own login shell: that is the only way the
60
+ // shell's startup files run.
61
+ if (request.command === undefined)
62
+ return args;
63
+ args.push(wrapCommandWithEnv(request.command, request.env));
64
+ return args;
65
+ }
66
+ export const tmux = {
67
+ id: "tmux",
68
+ async available() {
69
+ if (!process.env.TMUX)
70
+ return false;
71
+ return tmuxOnPath();
72
+ },
73
+ async spawn(request) {
74
+ const args = buildArgs(request);
75
+ await new Promise((resolve, reject) => {
76
+ const child = nodeSpawn("tmux", args, {
77
+ stdio: "ignore",
78
+ });
79
+ child.on("error", reject);
80
+ child.on("exit", (code) => {
81
+ if (code === 0)
82
+ resolve();
83
+ else
84
+ reject(new Error(`tmux exited with code ${code}`));
85
+ });
86
+ });
87
+ },
88
+ };
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Wezterm driver. Uses `wezterm cli spawn` to launch new
3
+ * tabs and windows, and `wezterm cli split-pane` for panes.
4
+ *
5
+ * Available when the `wezterm` binary is on PATH. We don't
6
+ * verify that wezterm is the active terminal: the `cli`
7
+ * subcommand connects to the running mux over a socket, so
8
+ * it works from anywhere as long as wezterm itself is
9
+ * running somewhere reachable.
10
+ */
11
+ import { type TerminalDriver, type TerminalLivenessCapability, type TerminalProbe, type TerminalSessionHandle, type TerminalTypeCapability } from "../../../terminal/types.js";
12
+ /** What a `wezterm cli list` read observed, or that it could not read. */
13
+ export type WeztermObservation = {
14
+ reachable: false;
15
+ } | {
16
+ reachable: true;
17
+ hostId: string;
18
+ scope: string;
19
+ livePaneIds: ReadonlySet<string>;
20
+ };
21
+ /**
22
+ * Classify each recorded pane handle against a live observation. A
23
+ * pane is present or absent only when the observation is reachable
24
+ * and the handle's host and scope match the observed mux; otherwise
25
+ * the honest answer is unknown, because a pane id is meaningful only
26
+ * within the socket and host that issued it.
27
+ */
28
+ export declare function classifyWeztermPanes(handles: readonly TerminalSessionHandle[], observation: WeztermObservation): Map<string, TerminalProbe>;
29
+ /**
30
+ * The pane id `wezterm cli spawn` prints, or undefined when the
31
+ * output is not one. The cli prints the new pane id on stdout,
32
+ * which is the only reliable way to name what was just created.
33
+ */
34
+ export declare function paneIdFromSpawn(stdout: string): string | undefined;
35
+ export declare const wezterm: TerminalDriver & TerminalLivenessCapability & TerminalTypeCapability;
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Wezterm driver. Uses `wezterm cli spawn` to launch new
3
+ * tabs and windows, and `wezterm cli split-pane` for panes.
4
+ *
5
+ * Available when the `wezterm` binary is on PATH. We don't
6
+ * verify that wezterm is the active terminal: the `cli`
7
+ * subcommand connects to the running mux over a socket, so
8
+ * it works from anywhere as long as wezterm itself is
9
+ * running somewhere reachable.
10
+ */
11
+ import { execFile } from "node:child_process";
12
+ import { hostname } from "node:os";
13
+ import { promisify } from "node:util";
14
+ import { terminalHandleKey, } from "../../../terminal/types.js";
15
+ import { wrapCommandWithEnv } from "./shared.js";
16
+ /**
17
+ * Classify each recorded pane handle against a live observation. A
18
+ * pane is present or absent only when the observation is reachable
19
+ * and the handle's host and scope match the observed mux; otherwise
20
+ * the honest answer is unknown, because a pane id is meaningful only
21
+ * within the socket and host that issued it.
22
+ */
23
+ export function classifyWeztermPanes(handles, observation) {
24
+ const out = new Map();
25
+ for (const handle of handles) {
26
+ out.set(terminalHandleKey(handle), classifyOne(handle, observation));
27
+ }
28
+ return out;
29
+ }
30
+ function classifyOne(handle, observation) {
31
+ if (!observation.reachable)
32
+ return "unknown";
33
+ if (handle.hostId !== observation.hostId)
34
+ return "unknown";
35
+ if (!handle.scope || handle.scope !== observation.scope)
36
+ return "unknown";
37
+ return observation.livePaneIds.has(handle.value) ? "present" : "absent";
38
+ }
39
+ const execFileAsync = promisify(execFile);
40
+ async function isOnPath(binary) {
41
+ try {
42
+ await execFileAsync("command", ["-v", binary]);
43
+ return true;
44
+ }
45
+ catch {
46
+ try {
47
+ await execFileAsync("which", [binary]);
48
+ return true;
49
+ }
50
+ catch {
51
+ return false;
52
+ }
53
+ }
54
+ }
55
+ function buildArgs(request) {
56
+ const args = ["cli"];
57
+ switch (request.layout) {
58
+ case "tab":
59
+ args.push("spawn");
60
+ break;
61
+ case "window":
62
+ args.push("spawn", "--new-window");
63
+ break;
64
+ case "pane":
65
+ args.push("split-pane");
66
+ break;
67
+ }
68
+ if (request.cwd)
69
+ args.push("--cwd", request.cwd);
70
+ // No command means the caller wants the surface itself: let
71
+ // wezterm start the user's own login shell, which is the only way
72
+ // the shell's startup files run. Handing even a trivial command to
73
+ // `-c` skips them.
74
+ if (request.command === undefined)
75
+ return args;
76
+ // `wezterm cli` hands the command to the mux daemon,
77
+ // which runs it in the daemon's own environment. The
78
+ // Node-side env on `nodeSpawn` reaches only the cli
79
+ // process itself, not the new pane, so env that must
80
+ // reach the pane has to be wrapped into the command.
81
+ const command = wrapCommandWithEnv(request.command, request.env);
82
+ args.push("--", "/bin/sh", "-c", command);
83
+ return args;
84
+ }
85
+ /**
86
+ * The pane id `wezterm cli spawn` prints, or undefined when the
87
+ * output is not one. The cli prints the new pane id on stdout,
88
+ * which is the only reliable way to name what was just created.
89
+ */
90
+ export function paneIdFromSpawn(stdout) {
91
+ const trimmed = stdout.trim();
92
+ return /^\d+$/.test(trimmed) ? trimmed : undefined;
93
+ }
94
+ export const wezterm = {
95
+ id: "wezterm",
96
+ async available() {
97
+ return isOnPath("wezterm");
98
+ },
99
+ async spawn(request) {
100
+ const args = buildArgs(request);
101
+ // Wait for the cli to finish rather than detaching, so its
102
+ // stdout can be read: it prints the new pane id, and without
103
+ // that the caller has no way to name what it just created. The
104
+ // cli returns as soon as the mux has spawned the pane, so this
105
+ // does not wait on the pane's own lifetime.
106
+ try {
107
+ const { stdout } = await execFileAsync("wezterm", args);
108
+ const pane = paneIdFromSpawn(stdout);
109
+ if (!pane)
110
+ return undefined;
111
+ return {
112
+ driverId: "wezterm",
113
+ kind: "wezterm-pane",
114
+ hostId: hostname(),
115
+ value: pane,
116
+ ...(process.env.WEZTERM_UNIX_SOCKET
117
+ ? { scope: process.env.WEZTERM_UNIX_SOCKET }
118
+ : {}),
119
+ };
120
+ }
121
+ catch (error) {
122
+ // A spawn that failed is worth reporting: the caller asked for
123
+ // a surface and has not got one.
124
+ throw error instanceof Error ? error : new Error(String(error));
125
+ }
126
+ },
127
+ async typeInto(handle, text) {
128
+ // --no-paste sends the text as individual keystrokes rather than
129
+ // a bracketed paste, so the shell treats it as typed input and
130
+ // runs it on the newline.
131
+ await execFileAsync("wezterm", ["cli", "send-text", "--pane-id", handle.value, "--no-paste", text], { env: process.env });
132
+ },
133
+ identifyCurrent() {
134
+ const pane = process.env.WEZTERM_PANE;
135
+ if (!pane)
136
+ return undefined;
137
+ return {
138
+ driverId: "wezterm",
139
+ kind: "wezterm-pane",
140
+ hostId: hostname(),
141
+ scope: process.env.WEZTERM_UNIX_SOCKET,
142
+ value: pane,
143
+ };
144
+ },
145
+ async probe(handles, signal) {
146
+ const observation = await observePanes(signal);
147
+ return classifyWeztermPanes(handles, observation);
148
+ },
149
+ };
150
+ /** Read the live pane set from the wezterm mux, or report it unreachable. */
151
+ async function observePanes(signal) {
152
+ const socket = process.env.WEZTERM_UNIX_SOCKET;
153
+ if (!socket)
154
+ return { reachable: false };
155
+ try {
156
+ const { stdout } = await execFileAsync("wezterm", ["cli", "list", "--format", "json"], { signal });
157
+ const panes = JSON.parse(stdout);
158
+ const live = new Set();
159
+ for (const pane of panes) {
160
+ if (typeof pane.pane_id === "number")
161
+ live.add(String(pane.pane_id));
162
+ }
163
+ return {
164
+ reachable: true,
165
+ hostId: hostname(),
166
+ scope: socket,
167
+ livePaneIds: live,
168
+ };
169
+ }
170
+ catch {
171
+ // Mux unreachable, wezterm absent, or unparseable output: an
172
+ // observation failure is unknown, never a false absent.
173
+ return { reachable: false };
174
+ }
175
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Terminal driver registry: process-global map from driver
3
+ * id to `TerminalDriver`. Symmetric with refs and tree
4
+ * registries; uses the shared `createGlobalSymbolRegistry`
5
+ * helper.
6
+ */
7
+ import type { TerminalDriver } from "../../terminal/types.js";
8
+ export declare const register: (driver: TerminalDriver) => void;
9
+ export declare const unregister: (id: string) => void;
10
+ export declare const clear: () => void;
11
+ export declare const get: (id: string) => TerminalDriver | undefined;
12
+ export declare const list: () => TerminalDriver[];
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Terminal driver registry: process-global map from driver
3
+ * id to `TerminalDriver`. Symmetric with refs and tree
4
+ * registries; uses the shared `createGlobalSymbolRegistry`
5
+ * helper.
6
+ */
7
+ import { createGlobalSymbolRegistry } from "../registry/global-symbol-registry.js";
8
+ const registry = createGlobalSymbolRegistry({
9
+ slot: "pi:agentic-harness:terminal-drivers",
10
+ getId: (d) => d.id,
11
+ });
12
+ export const register = (driver) => registry.register(driver);
13
+ export const unregister = (id) => registry.unregister(id);
14
+ export const clear = () => registry.clear();
15
+ export const get = (id) => registry.get(id);
16
+ export const list = () => registry.list();
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Built-in tree providers. Seeded via
3
+ * `registerBuiltinTreeProviders`; downstream packages
4
+ * register their own at lower priority numbers to take
5
+ * over for specific repo roots.
6
+ */
7
+ import type { TreeProvider } from "../../tree/types.js";
8
+ export declare const BUILTIN_TREE_PROVIDERS: TreeProvider[];
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Built-in tree providers. Seeded via
3
+ * `registerBuiltinTreeProviders`; downstream packages
4
+ * register their own at lower priority numbers to take
5
+ * over for specific repo roots.
6
+ */
7
+ import { createGitWorktreeProvider } from "./providers/git-worktree.js";
8
+ export const BUILTIN_TREE_PROVIDERS = [
9
+ createGitWorktreeProvider(),
10
+ ];
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Built-in git-worktree provider.
3
+ *
4
+ * Creates trees at `<repo>/.worktrees/<name>/` and ensures
5
+ * `.worktrees/` is gitignored in the host repo on first
6
+ * use. Prune refuses dirty working trees and unmerged
7
+ * branches unless `force: true`; a higher-level safety gate
8
+ * forwards the caller's resolution answer through the
9
+ * `force` flag.
10
+ *
11
+ * Default branch detection uses `git symbolic-ref` on
12
+ * `refs/remotes/origin/HEAD`, falling back to `main` then
13
+ * `master`. The `appliesTo` check is universal: this
14
+ * provider returns true for any directory inside a git
15
+ * working tree, so downstream packages register at lower
16
+ * priority to take over for specific repos.
17
+ */
18
+ import type { TreeProvider } from "../../../tree/types.js";
19
+ /** Build the provider. */
20
+ export declare function createGitWorktreeProvider(priority?: number): TreeProvider;
@@ -0,0 +1,279 @@
1
+ /**
2
+ * Built-in git-worktree provider.
3
+ *
4
+ * Creates trees at `<repo>/.worktrees/<name>/` and ensures
5
+ * `.worktrees/` is gitignored in the host repo on first
6
+ * use. Prune refuses dirty working trees and unmerged
7
+ * branches unless `force: true`; a higher-level safety gate
8
+ * forwards the caller's resolution answer through the
9
+ * `force` flag.
10
+ *
11
+ * Default branch detection uses `git symbolic-ref` on
12
+ * `refs/remotes/origin/HEAD`, falling back to `main` then
13
+ * `master`. The `appliesTo` check is universal: this
14
+ * provider returns true for any directory inside a git
15
+ * working tree, so downstream packages register at lower
16
+ * priority to take over for specific repos.
17
+ */
18
+ import { execFile } from "node:child_process";
19
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
20
+ import { dirname, join, resolve } from "node:path";
21
+ import { promisify } from "node:util";
22
+ const execFileAsync = promisify(execFile);
23
+ const PROVIDER_ID = "git-worktree";
24
+ const DEFAULT_PRIORITY = 100;
25
+ const WORKTREES_DIR = ".worktrees";
26
+ /**
27
+ * Slug pattern for tree names and base branches that
28
+ * flow into a path join and a git argv. Restrictive on
29
+ * purpose: alphanumeric plus dot, slash, underscore and
30
+ * dash, must not start with a dot or dash, and rejects
31
+ * `..` segments anywhere.
32
+ */
33
+ const NAME_PATTERN = /^[A-Za-z0-9_][A-Za-z0-9_./-]*$/;
34
+ function assertValidName(label, value) {
35
+ if (!value) {
36
+ throw new Error(`${label} cannot be empty.`);
37
+ }
38
+ if (!NAME_PATTERN.test(value)) {
39
+ throw new Error(`${label} must match ${NAME_PATTERN.source}; got ${JSON.stringify(value)}.`);
40
+ }
41
+ if (value.split("/").some((part) => part === "" || part === "..")) {
42
+ throw new Error(`${label} cannot contain empty or '..' path segments; got ${JSON.stringify(value)}.`);
43
+ }
44
+ }
45
+ /**
46
+ * Run a git command in a directory and return stdout
47
+ * trimmed. Throws on non-zero exit.
48
+ */
49
+ async function git(cwd, ...args) {
50
+ const { stdout } = await execFileAsync("git", args, { cwd });
51
+ return stdout.toString().trim();
52
+ }
53
+ /**
54
+ * Try a git command; return undefined on failure rather
55
+ * than throwing. Used for probes where "not a git repo"
56
+ * is a legitimate answer.
57
+ */
58
+ async function tryGit(cwd, ...args) {
59
+ try {
60
+ return await git(cwd, ...args);
61
+ }
62
+ catch {
63
+ // Probe failed; caller treats this as "no answer".
64
+ return undefined;
65
+ }
66
+ }
67
+ /** Determine the repo's default branch. */
68
+ async function detectDefaultBranch(repoRoot) {
69
+ const headRef = await tryGit(repoRoot, "symbolic-ref", "refs/remotes/origin/HEAD");
70
+ if (headRef?.startsWith("refs/remotes/origin/")) {
71
+ return headRef.slice("refs/remotes/origin/".length);
72
+ }
73
+ const main = await tryGit(repoRoot, "rev-parse", "--verify", "main");
74
+ if (main)
75
+ return "main";
76
+ const master = await tryGit(repoRoot, "rev-parse", "--verify", "master");
77
+ if (master)
78
+ return "master";
79
+ // As a last resort, return HEAD's current branch.
80
+ const current = await tryGit(repoRoot, "rev-parse", "--abbrev-ref", "HEAD");
81
+ return current ?? "main";
82
+ }
83
+ /**
84
+ * Make sure `.worktrees/` is gitignored at the repo root so
85
+ * the worktree directories don't show up as untracked
86
+ * files. Idempotent.
87
+ */
88
+ function ensureGitignore(repoRoot) {
89
+ const path = join(repoRoot, ".gitignore");
90
+ const entry = `${WORKTREES_DIR}/`;
91
+ const existing = existsSync(path) ? readFileSync(path, "utf8") : "";
92
+ const lines = existing.split("\n");
93
+ if (lines.some((line) => line.trim() === entry))
94
+ return;
95
+ const next = existing.length === 0 || existing.endsWith("\n")
96
+ ? `${existing}${entry}\n`
97
+ : `${existing}\n${entry}\n`;
98
+ writeFileSync(path, next, "utf8");
99
+ }
100
+ /**
101
+ * `git status --porcelain` produces one line per dirty
102
+ * file. Empty stdout means the tree is clean.
103
+ */
104
+ async function isDirty(treePath) {
105
+ const status = await tryGit(treePath, "status", "--porcelain");
106
+ return Boolean(status && status.length > 0);
107
+ }
108
+ /**
109
+ * Return true when `branch` contains commits that the
110
+ * default branch does not.
111
+ *
112
+ * Tries `origin/<default>` first (the common shared-state
113
+ * comparison), then falls back to the local default
114
+ * branch when no origin remote is wired. If neither
115
+ * comparison succeeds the function returns true and lets
116
+ * the caller surface the lack of a target: silently
117
+ * returning false would let a force-less prune destroy
118
+ * unmerged work in a repo with no origin remote.
119
+ */
120
+ async function hasUnmergedCommits(repoRoot, branch) {
121
+ const defaultBranch = await detectDefaultBranch(repoRoot);
122
+ if (defaultBranch === branch) {
123
+ return { unmerged: false, comparedAgainst: defaultBranch };
124
+ }
125
+ const originAhead = await tryGit(repoRoot, "rev-list", "--count", `origin/${defaultBranch}..${branch}`);
126
+ if (originAhead !== undefined) {
127
+ return {
128
+ unmerged: Number.parseInt(originAhead, 10) > 0,
129
+ comparedAgainst: `origin/${defaultBranch}`,
130
+ };
131
+ }
132
+ const localAhead = await tryGit(repoRoot, "rev-list", "--count", `${defaultBranch}..${branch}`);
133
+ if (localAhead !== undefined) {
134
+ return {
135
+ unmerged: Number.parseInt(localAhead, 10) > 0,
136
+ comparedAgainst: defaultBranch,
137
+ };
138
+ }
139
+ // No comparison target. Fail safe: claim unmerged so a
140
+ // non-force prune refuses with a clear message, and let
141
+ // the caller force when they know better.
142
+ return { unmerged: true, comparedAgainst: undefined };
143
+ }
144
+ /** Build the provider. */
145
+ export function createGitWorktreeProvider(priority = DEFAULT_PRIORITY) {
146
+ return {
147
+ id: PROVIDER_ID,
148
+ priority,
149
+ appliesTo(repoRoot) {
150
+ // Cheap structural probe: `.git` exists either
151
+ // as a directory (normal clone) or a file
152
+ // (worktree). Symbolic-ref probes the real
153
+ // repository.
154
+ return existsSync(join(repoRoot, ".git"));
155
+ },
156
+ async create(input) {
157
+ assertValidName("Tree name", input.name);
158
+ if (input.baseBranch !== undefined) {
159
+ assertValidName("Base branch", input.baseBranch);
160
+ }
161
+ const repoRoot = resolve(input.repoRoot);
162
+ const treePath = join(repoRoot, WORKTREES_DIR, input.name);
163
+ if (existsSync(treePath)) {
164
+ throw new Error(`A tree already exists at ${treePath}. Pick a different name or prune the existing one first.`);
165
+ }
166
+ ensureGitignore(repoRoot);
167
+ const base = input.baseBranch ?? (await detectDefaultBranch(repoRoot));
168
+ // `--` separates positional args from refs so a base
169
+ // or branch name that happens to start with a dash
170
+ // (already refused by assertValidName) cannot be
171
+ // reparsed as a flag by older git versions.
172
+ await git(repoRoot, "worktree", "add", "-b", input.name, treePath, "--", base);
173
+ return {
174
+ path: treePath,
175
+ branch: input.name,
176
+ repoRoot,
177
+ providerId: PROVIDER_ID,
178
+ };
179
+ },
180
+ async prune(input) {
181
+ const treePath = resolve(input.path);
182
+ if (!existsSync(treePath)) {
183
+ // Tree directory is gone but git's admin entry
184
+ // may still be around. Walk up looking for the
185
+ // containing repo so we can run
186
+ // `git worktree prune` against it. When we
187
+ // can't find it, treat the prune as already
188
+ // done.
189
+ let ancestor = dirname(treePath);
190
+ while (ancestor !== dirname(ancestor)) {
191
+ if (existsSync(join(ancestor, ".git"))) {
192
+ await tryGit(ancestor, "worktree", "prune");
193
+ return;
194
+ }
195
+ ancestor = dirname(ancestor);
196
+ }
197
+ return;
198
+ }
199
+ // `--show-toplevel` from inside a worktree returns
200
+ // the worktree path itself, not the main repo.
201
+ // `--git-common-dir` always points at the shared
202
+ // `.git`; the main repo is its parent.
203
+ const commonDir = await git(treePath, "rev-parse", "--git-common-dir");
204
+ const absoluteCommonDir = resolve(treePath, commonDir);
205
+ const repoRoot = dirname(absoluteCommonDir);
206
+ const branch = (await tryGit(treePath, "rev-parse", "--abbrev-ref", "HEAD")) ?? "";
207
+ if (!input.force) {
208
+ if (await isDirty(treePath)) {
209
+ throw new Error(`Tree at ${treePath} has uncommitted changes. Commit, stash or force-prune.`);
210
+ }
211
+ if (branch) {
212
+ const { unmerged, comparedAgainst } = await hasUnmergedCommits(repoRoot, branch);
213
+ if (unmerged) {
214
+ const target = comparedAgainst
215
+ ? `against ${comparedAgainst}`
216
+ : "and no default-branch comparison target exists (no origin remote, no local main/master)";
217
+ throw new Error(`Branch ${branch} has commits not merged ${target}. Push and merge first, or force-prune.`);
218
+ }
219
+ }
220
+ }
221
+ await git(repoRoot, "worktree", "remove", treePath, ...(input.force ? ["--force"] : []));
222
+ if (branch) {
223
+ // Delete the branch when it's fully merged
224
+ // or the caller forced. Failures here are
225
+ // non-fatal: the worktree itself is gone.
226
+ const deleteFlag = input.force ? "-D" : "-d";
227
+ await tryGit(repoRoot, "branch", deleteFlag, branch);
228
+ }
229
+ },
230
+ async list(repoRoot) {
231
+ const root = resolve(repoRoot);
232
+ const stdout = await tryGit(root, "worktree", "list", "--porcelain");
233
+ if (!stdout)
234
+ return [];
235
+ const handles = [];
236
+ let current = {};
237
+ for (const line of stdout.split("\n")) {
238
+ if (line.startsWith("worktree ")) {
239
+ if (current.path) {
240
+ handles.push({
241
+ path: current.path,
242
+ branch: current.branch,
243
+ repoRoot: root,
244
+ providerId: PROVIDER_ID,
245
+ });
246
+ }
247
+ current = { path: line.slice("worktree ".length) };
248
+ }
249
+ else if (line.startsWith("branch ")) {
250
+ const ref = line.slice("branch ".length);
251
+ current.branch = ref.replace(/^refs\/heads\//, "");
252
+ }
253
+ else if (line === "") {
254
+ if (current.path) {
255
+ handles.push({
256
+ path: current.path,
257
+ branch: current.branch,
258
+ repoRoot: root,
259
+ providerId: PROVIDER_ID,
260
+ });
261
+ current = {};
262
+ }
263
+ }
264
+ }
265
+ if (current.path) {
266
+ handles.push({
267
+ path: current.path,
268
+ branch: current.branch,
269
+ repoRoot: root,
270
+ providerId: PROVIDER_ID,
271
+ });
272
+ }
273
+ // The first entry is always the main worktree;
274
+ // drop it so callers see only the
275
+ // `.worktrees/<name>` siblings.
276
+ return handles.slice(1);
277
+ },
278
+ };
279
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Tree provider registry: process-global map from provider
3
+ * id to `TreeProvider`. Mirrors the refs and terminal
4
+ * libraries; uses the same shared `createGlobalSymbolRegistry`
5
+ * helper.
6
+ */
7
+ import type { TreeProvider } from "../../tree/types.js";
8
+ export declare const register: (provider: TreeProvider) => void;
9
+ export declare const unregister: (id: string) => void;
10
+ export declare const clear: () => void;
11
+ export declare const get: (id: string) => TreeProvider | undefined;
12
+ export declare const list: () => TreeProvider[];
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Tree provider registry: process-global map from provider
3
+ * id to `TreeProvider`. Mirrors the refs and terminal
4
+ * libraries; uses the same shared `createGlobalSymbolRegistry`
5
+ * helper.
6
+ */
7
+ import { createGlobalSymbolRegistry } from "../registry/global-symbol-registry.js";
8
+ const registry = createGlobalSymbolRegistry({
9
+ slot: "pi:agentic-harness:tree-providers",
10
+ getId: (p) => p.id,
11
+ });
12
+ export const register = (provider) => registry.register(provider);
13
+ export const unregister = (id) => registry.unregister(id);
14
+ export const clear = () => registry.clear();
15
+ export const get = (id) => registry.get(id);
16
+ export const list = () => registry.list();