@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,310 @@
1
+ /**
2
+ * Structural verbs: reparent (single or bulk). These move
3
+ * quests within the tree under an explicit scope, offer a
4
+ * dry-run preview and report exactly what changed, so a cleanup
5
+ * can be trusted and reversed.
6
+ */
7
+ import { appendJourneyByPath } from "../../internal/quest/append-journey.js";
8
+ import { discoverQuests, siblingRanks, } from "../../internal/quest/discovery.js";
9
+ import { lensForField } from "../../internal/quest/fields.js";
10
+ import { nextRank } from "../../internal/quest/ranking.js";
11
+ import { isSealedStatus } from "../../internal/quest/status.js";
12
+ import { planReparent, planStatusChange, } from "../../internal/quest/structural.js";
13
+ import { dropLastStructuralOp, lastStructuralOp, recordStructuralOp, } from "../../internal/quest/structural-journal.js";
14
+ import { count, verb } from "../../ui/count.js";
15
+ import { sealQuestDocuments, setQuestFieldByDir, setQuestParent, setQuestPriorityByDir, setQuestRankByDir, setQuestStatusByDir, } from "../lifecycle.js";
16
+ import { ok, refuse, } from "./shared.js";
17
+ /**
18
+ * Reparent one or more quests under a new parent (or to top
19
+ * level with `parent: null`). The whole batch is atomic: if any
20
+ * target is missing or would form a cycle, nothing is written.
21
+ * With `dryRun`, the plan is returned without any writes.
22
+ */
23
+ export function reparent(state, params) {
24
+ const targets = (params.id ?? "")
25
+ .split(",")
26
+ .map((t) => t.trim())
27
+ .filter((t) => t.length > 0);
28
+ if (targets.length === 0) {
29
+ return refuse("Pass the quest id to move in `id`, comma-separated for a batch.");
30
+ }
31
+ if (params.parent === undefined) {
32
+ return refuse("Pass the new `parent` quest id, or `null` to move to top level.");
33
+ }
34
+ const newParent = params.parent === "null" ? null : params.parent.trim();
35
+ const { index } = discoverQuests(state.questsRoot);
36
+ const plan = planReparent(index, targets, newParent);
37
+ if (plan.errors.length > 0) {
38
+ return refuse(`Refusing the batch; nothing was moved:\n- ${plan.errors.join("\n- ")}`);
39
+ }
40
+ if (plan.changes.length === 0) {
41
+ return ok("Nothing to reparent; every target is already there.", {
42
+ changes: [],
43
+ dryRun: Boolean(params.dryRun),
44
+ });
45
+ }
46
+ if (params.dryRun) {
47
+ const lines = plan.changes
48
+ .map((c) => ` ${c.id}: ${c.oldParent ?? "top level"} -> ${c.newParent ?? "top level"}`)
49
+ .join("\n");
50
+ return ok(`Dry run: would reparent ${count(plan.changes.length, "quest")}.\n${lines}`, { changes: plan.changes, dryRun: true });
51
+ }
52
+ // Journal incrementally: record each write the moment it lands so
53
+ // a mid-batch failure leaves the journal reflecting exactly what
54
+ // is on disk, and undo can reverse the partial application.
55
+ //
56
+ // A moved quest leaves its old sibling set and joins a new one, so
57
+ // its old rank can collide there. Place it at the next free rank in
58
+ // the destination (parent, priority) group and journal the rank
59
+ // change too, so undo restores both. `taken` tracks ranks claimed
60
+ // this batch so several quests moved into the same group get
61
+ // distinct ranks rather than all landing on the same next free one.
62
+ const applied = [];
63
+ const takenByGroup = new Map();
64
+ const placeRank = (parent, priority) => {
65
+ const key = `${parent ?? ""}|${priority}`;
66
+ let taken = takenByGroup.get(key);
67
+ if (!taken) {
68
+ taken = new Set(siblingRanks(index, parent, priority));
69
+ takenByGroup.set(key, taken);
70
+ }
71
+ const rank = nextRank([...taken]);
72
+ taken.add(rank);
73
+ return rank;
74
+ };
75
+ for (const change of plan.changes) {
76
+ const entry = index.quests.get(change.id);
77
+ if (!entry)
78
+ continue;
79
+ const result = setQuestParent(entry.dir, change.newParent);
80
+ if (!result.ok) {
81
+ if (applied.length > 0) {
82
+ recordStructuralOp(state.questsRoot, "reparent", applied);
83
+ }
84
+ return refuse(`${result.guidance} Applied ${applied.length} of ${plan.changes.length} before the failure; recorded for undo.`);
85
+ }
86
+ applied.push({
87
+ id: change.id,
88
+ field: "parent",
89
+ old: change.oldParent,
90
+ new: change.newParent,
91
+ });
92
+ const priority = entry.doc.frontMatter.priority;
93
+ const oldRank = entry.doc.frontMatter.rank;
94
+ const newRank = placeRank(change.newParent, priority);
95
+ if (newRank !== oldRank) {
96
+ const rankResult = setQuestRankByDir(entry.dir, newRank);
97
+ if (!rankResult.ok) {
98
+ recordStructuralOp(state.questsRoot, "reparent", applied);
99
+ return refuse(`${rankResult.guidance} Applied ${count(applied.length, "change")} before the failure; recorded for undo.`);
100
+ }
101
+ applied.push({
102
+ id: change.id,
103
+ field: "rank",
104
+ old: String(oldRank),
105
+ new: String(newRank),
106
+ });
107
+ }
108
+ }
109
+ recordStructuralOp(state.questsRoot, "reparent", applied);
110
+ return ok(`Reparented ${count(plan.changes.length, "quest")}.`, {
111
+ changes: plan.changes,
112
+ dryRun: false,
113
+ });
114
+ }
115
+ /**
116
+ * Bulk conclude or retire an explicit comma-separated id set.
117
+ * Atomic on any missing target, dry-run previewable, journalled
118
+ * for undo. Unlike the single-quest conclude, this does not
119
+ * prune trees: it is a lightweight, reversible status sweep.
120
+ */
121
+ export function bulkConcludeOrRetire(state, action, params) {
122
+ const targets = (params.id ?? "")
123
+ .split(",")
124
+ .map((t) => t.trim())
125
+ .filter((t) => t.length > 0);
126
+ if (targets.length === 0) {
127
+ return refuse("Pass the quest ids to sweep in `id`, comma-separated.");
128
+ }
129
+ const reason = params.reason?.trim();
130
+ if (action === "retire" && !reason) {
131
+ return refuse("Bulk retire needs a `reason`: why are these being abandoned?");
132
+ }
133
+ const newStatus = action === "conclude" ? "concluded" : "retired";
134
+ const { index } = discoverQuests(state.questsRoot);
135
+ const plan = planStatusChange(index, targets, newStatus);
136
+ if (plan.errors.length > 0) {
137
+ return refuse(`Refusing the batch; nothing was changed:\n- ${plan.errors.join("\n- ")}`);
138
+ }
139
+ if (plan.changes.length === 0) {
140
+ return ok(`Nothing to ${action}; every target is already ${newStatus}.`, {
141
+ changes: [],
142
+ dryRun: Boolean(params.dryRun),
143
+ });
144
+ }
145
+ if (params.dryRun) {
146
+ const lines = plan.changes
147
+ .map((c) => ` ${c.id}: ${c.oldStatus} -> ${c.newStatus}`)
148
+ .join("\n");
149
+ return ok(`Dry run: would ${action} ${count(plan.changes.length, "quest")}.\n${lines}`, { changes: plan.changes, dryRun: true });
150
+ }
151
+ const journey = action === "conclude"
152
+ ? "Concluded the quest (bulk)."
153
+ : `Retired the quest (bulk): ${reason}.`;
154
+ const applied = [];
155
+ for (const change of plan.changes) {
156
+ const entry = index.quests.get(change.id);
157
+ if (!entry)
158
+ continue;
159
+ const result = setQuestStatusByDir(entry.dir, newStatus);
160
+ if (!result.ok) {
161
+ if (applied.length > 0) {
162
+ recordStructuralOp(state.questsRoot, action, applied);
163
+ }
164
+ return refuse(`${result.guidance} Applied ${applied.length} of ${plan.changes.length} before the failure; recorded for undo.`);
165
+ }
166
+ // Cascade the seal the same way the loaded-quest path does: drop
167
+ // the priority to someday (journalled, so undo restores it) and
168
+ // seal every still-active document to the terminal stage.
169
+ const oldPriority = entry.doc.frontMatter.priority;
170
+ if (oldPriority !== "someday") {
171
+ setQuestPriorityByDir(entry.dir, "someday");
172
+ applied.push({
173
+ id: change.id,
174
+ field: "priority",
175
+ old: oldPriority,
176
+ new: "someday",
177
+ });
178
+ }
179
+ sealQuestDocuments(entry.dir, newStatus);
180
+ appendJourneyByPath(entry.dir, journey);
181
+ applied.push({
182
+ id: change.id,
183
+ field: "status",
184
+ old: change.oldStatus,
185
+ new: change.newStatus,
186
+ });
187
+ }
188
+ recordStructuralOp(state.questsRoot, action, applied);
189
+ // A sealed quest with live children leaves them orphaned but live.
190
+ // Warn rather than cascade: the operator chose these ids, so seal
191
+ // only what was named and surface the children to decide on next.
192
+ const sealedIds = new Set(plan.changes.map((c) => c.id));
193
+ const liveChildren = [];
194
+ for (const id of sealedIds) {
195
+ for (const childId of index.children.get(id) ?? []) {
196
+ const child = index.quests.get(childId);
197
+ if (child && !isSealedStatus(child.doc.frontMatter.status)) {
198
+ liveChildren.push(childId);
199
+ }
200
+ }
201
+ }
202
+ const warning = liveChildren.length > 0
203
+ ? ` Warning: ${count(liveChildren.length, "live child quest")} ${verb(liveChildren.length, "remains", "remain")} under a sealed parent: ${liveChildren.join(", ")}.`
204
+ : "";
205
+ return ok(`${action === "conclude" ? "Concluded" : "Retired"} ${count(plan.changes.length, "quest")}.${warning}`, {
206
+ changes: plan.changes,
207
+ dryRun: false,
208
+ liveChildren,
209
+ });
210
+ }
211
+ /**
212
+ * Read the current on-disk value of a journalled field, so undo can
213
+ * check it still equals what the operation wrote before reverting.
214
+ */
215
+ function currentValue(fm, field) {
216
+ const lens = lensForField(field);
217
+ if (lens)
218
+ return lens.read(fm);
219
+ // No lens means the field is not on a quest README at all (`stage`
220
+ // is journallable but belongs to a document). Return a sentinel that
221
+ // can never equal the recorded `new`, so the change is skipped and
222
+ // preserved in the journal rather than mis-reverted.
223
+ return UNREVERTABLE_FIELD;
224
+ }
225
+ /**
226
+ * A value no real front-matter field can hold, used to force an
227
+ * unhandled journalled field down undo's skip-and-preserve path.
228
+ */
229
+ const UNREVERTABLE_FIELD = "|__unrevertable_field__";
230
+ /** Reverse a single journalled change, restoring its recorded old value. */
231
+ function revertField(dir, change) {
232
+ const lens = lensForField(change.field);
233
+ if (!lens) {
234
+ // Unreachable for today's journalled ops, since currentValue skips
235
+ // a lensless field before this is ever called for it. Kept as a
236
+ // refusal so a field that starts being journalled without a lens
237
+ // cannot land on whichever branch happened to be last.
238
+ return {
239
+ ok: false,
240
+ guidance: `undo cannot reverse a ${change.field} change yet.`,
241
+ };
242
+ }
243
+ // Validate the journalled value against the field's vocabulary
244
+ // before writing it. This used to be an unchecked cast, which is
245
+ // safe only while every entry was written by the current build.
246
+ const result = setQuestFieldByDir(dir, lens, change.old);
247
+ if (!result.ok)
248
+ return result;
249
+ // Reparenting announces itself in the Journey, and undoing one has
250
+ // to say so too, or the original line stands uncontradicted.
251
+ if (change.field === "parent") {
252
+ appendJourneyByPath(dir, `Reparented to ${change.old ?? "top level"}.`);
253
+ }
254
+ return { ok: true };
255
+ }
256
+ export function undo(state) {
257
+ const last = lastStructuralOp(state.questsRoot);
258
+ if (!last) {
259
+ return refuse("Nothing to undo; the structural journal is empty.");
260
+ }
261
+ const { index } = discoverQuests(state.questsRoot);
262
+ const skipped = [];
263
+ const skippedChanges = [];
264
+ const reverted = [];
265
+ for (const change of last.changes) {
266
+ const entry = index.quests.get(change.id);
267
+ if (!entry) {
268
+ skipped.push(change.id);
269
+ skippedChanges.push(change);
270
+ continue;
271
+ }
272
+ // Verify the on-disk value still equals what this operation
273
+ // wrote. An intervening manual edit means the recorded `new` no
274
+ // longer holds, so reverting to `old` would clobber that edit;
275
+ // skip instead.
276
+ const current = currentValue(entry.doc.frontMatter, change.field);
277
+ if (current !== change.new) {
278
+ skipped.push(change.id);
279
+ skippedChanges.push(change);
280
+ continue;
281
+ }
282
+ const result = revertField(entry.dir, change);
283
+ if (!result.ok)
284
+ return refuse(result.guidance);
285
+ // revertField announces a reparent in the Journey; a status
286
+ // reversal needs an explicit compensating entry too, so the
287
+ // original conclude/retire line does not stand uncontradicted.
288
+ if (change.field === "status") {
289
+ appendJourneyByPath(entry.dir, `Reverted the ${last.op} (undo).`);
290
+ }
291
+ reverted.push(change.id);
292
+ }
293
+ // Consume the op, but keep the changes we could not apply: rewrite
294
+ // the journal so the skipped changes survive as the operation's
295
+ // residue. A later undo can reverse them once the divergence
296
+ // resolves, instead of the partial undo swallowing them for good.
297
+ dropLastStructuralOp(state.questsRoot);
298
+ if (skippedChanges.length > 0) {
299
+ recordStructuralOp(state.questsRoot, last.op, skippedChanges);
300
+ }
301
+ const note = skipped.length > 0
302
+ ? ` (skipped ${count(skipped.length, "quest")} missing or changed since: ${skipped.join(", ")})`
303
+ : "";
304
+ return ok(`Undid ${last.op} of ${count(reverted.length, "quest")}${note}.`, {
305
+ op: last.op,
306
+ changes: last.changes,
307
+ reverted,
308
+ skipped,
309
+ });
310
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Tree-operation verbs: tree-add, tree-list, tree-prune,
3
+ * tree-expand. Each delegates to the resolved tree
4
+ * provider (built-in git-worktree, or a downstream
5
+ * provider like dev-tree for the World monorepo).
6
+ */
7
+ import type { QuestState } from "../state.js";
8
+ import { type QuestResult, type QuestToolParams } from "./shared.js";
9
+ export declare function treeAdd(state: QuestState, params: QuestToolParams): Promise<QuestResult>;
10
+ /**
11
+ * Adopt the existing git tree at the cwd: register it on the quest
12
+ * without creating anything, marked `adopted` so conclude and retire
13
+ * never auto-prune it. This is the deliberate, explicit alternative
14
+ * to scaffolding a fresh worktree; the act of running it is the
15
+ * consent, so there is no inference and no silent binding.
16
+ */
17
+ export declare function treeAdopt(state: QuestState, params: QuestToolParams): QuestResult;
18
+ export declare function treeList(state: QuestState): QuestResult;
19
+ export declare function treePrune(state: QuestState, params: QuestToolParams): Promise<QuestResult>;
20
+ export declare function treeExpand(state: QuestState, params: QuestToolParams): Promise<QuestResult>;
@@ -0,0 +1,289 @@
1
+ /**
2
+ * Tree-operation verbs: tree-add, tree-list, tree-prune,
3
+ * tree-expand. Each delegates to the resolved tree
4
+ * provider (built-in git-worktree, or a downstream
5
+ * provider like dev-tree for the World monorepo).
6
+ */
7
+ import { readFileSync } from "node:fs";
8
+ import { join } from "node:path";
9
+ import { discoverQuests } from "../../internal/quest/discovery.js";
10
+ import { parseQuestFrontMatter } from "../../internal/quest/frontmatter.js";
11
+ import { canonicalPath, gitTreeRootOf, isMainWorkingTree, isWithin, } from "../../internal/quest/git-signals.js";
12
+ import { isSealedStatus } from "../../internal/quest/status.js";
13
+ import { addTreeToQuest, listTreesOnQuest, removeTreeFromQuest, setPendingPrune, } from "../../internal/quest/trees.js";
14
+ import { getTreeProvider, resolveTreeProvider } from "../../tree/index.js";
15
+ import { count, noun } from "../../ui/count.js";
16
+ import { displayPath } from "../../ui/path.js";
17
+ import { appendJourneyEntry, inventoryWorktrees } from "../lifecycle.js";
18
+ import { ok, refuse, } from "./shared.js";
19
+ function defaultRepoRoot(_state, params) {
20
+ if (params.cwd)
21
+ return params.cwd;
22
+ return process.cwd();
23
+ }
24
+ function readSessionsFromQuest(state) {
25
+ if (!state.questDir)
26
+ return [];
27
+ try {
28
+ const readme = join(state.questDir, "README.md");
29
+ const text = readFileSync(readme, "utf8");
30
+ const parsed = parseQuestFrontMatter(text);
31
+ return parsed?.frontMatter.sessions ?? [];
32
+ }
33
+ catch {
34
+ // Quest README missing or unreadable; treat as no
35
+ // sessions so we don't accidentally block pruning.
36
+ return [];
37
+ }
38
+ }
39
+ export async function treeAdd(state, params) {
40
+ if (!state.questDir || !state.questId) {
41
+ return refuse("Load a quest first.");
42
+ }
43
+ let repoRoot = defaultRepoRoot(state, params);
44
+ let provider = resolveTreeProvider(repoRoot);
45
+ if (!provider) {
46
+ // The cwd may be a subdirectory of a repository, where the
47
+ // built-in git-worktree provider (which looks for .git at the
48
+ // root) does not apply. Resolve to the enclosing git root and
49
+ // retry, so tree-add from a deep working directory no longer
50
+ // hard-fails on the wrong cwd. Downstream providers that match
51
+ // the raw root are untouched; this only rescues the no-match case.
52
+ const root = gitTreeRootOf(repoRoot);
53
+ if (root) {
54
+ repoRoot = root;
55
+ provider = resolveTreeProvider(repoRoot);
56
+ }
57
+ }
58
+ if (!provider) {
59
+ return refuse(`No tree provider applies to ${repoRoot}, and it is not inside a git repository. Pass cwd pointing at your repo (you do not need to change your session's directory), or register a provider (the harness ships git-worktree as a default).`);
60
+ }
61
+ const name = params.name?.trim() || params.title?.trim() || state.questId.toLowerCase();
62
+ try {
63
+ const handle = await provider.create({
64
+ name,
65
+ repoRoot,
66
+ baseBranch: params.ref,
67
+ });
68
+ const tree = {
69
+ path: handle.path,
70
+ branch: handle.branch,
71
+ repoRoot: handle.repoRoot,
72
+ providerId: handle.providerId,
73
+ origin: "scaffolded",
74
+ };
75
+ const result = addTreeToQuest(state.questDir, tree);
76
+ if (!result.ok)
77
+ return refuse(result.reason);
78
+ appendJourneyEntry(state, `Added ${handle.providerId} tree at ${handle.path}.`);
79
+ return ok(`Tree ready at ${handle.path}.`, { tree });
80
+ }
81
+ catch (error) {
82
+ const message = error instanceof Error ? error.message : String(error);
83
+ return refuse(`Tree create failed: ${message}`);
84
+ }
85
+ }
86
+ /**
87
+ * Adopt the existing git tree at the cwd: register it on the quest
88
+ * without creating anything, marked `adopted` so conclude and retire
89
+ * never auto-prune it. This is the deliberate, explicit alternative
90
+ * to scaffolding a fresh worktree; the act of running it is the
91
+ * consent, so there is no inference and no silent binding.
92
+ */
93
+ export function treeAdopt(state, params) {
94
+ if (!state.questDir || !state.questId) {
95
+ return refuse("Load a quest first.");
96
+ }
97
+ const start = defaultRepoRoot(state, params);
98
+ const root = gitTreeRootOf(start);
99
+ if (!root) {
100
+ return refuse(`${start} is not inside a git working tree. Pass cwd pointing at a path inside the tree you want to adopt; you do not need to change your session's directory.`);
101
+ }
102
+ // Guard a shared checkout before binding: a path another quest
103
+ // already tracks, or a repository's main working tree, is the shape
104
+ // that lets many quests bind to one checkout and magnetize a
105
+ // session ambiguously. Warn and require force rather than adopt
106
+ // silently; tree-adopt stays first-class, the guard just makes a
107
+ // shared bind a deliberate act.
108
+ if (!params.force) {
109
+ const otherQuest = pathAdoptedByAnotherQuest(state, root);
110
+ if (otherQuest) {
111
+ return refuse(`${root} is already tracked by ${otherQuest}. Adopting one checkout on several quests is what makes a fresh session resolve to an arbitrary quest. Pass force:true to adopt it here as well, or scaffold a private worktree with tree-add.`);
112
+ }
113
+ if (isMainWorkingTree(root)) {
114
+ return refuse(`${root} is a repository's main working tree, not a scaffolded worktree. Adopting a shared main checkout binds this quest to it. Pass force:true to confirm, or scaffold a private worktree with tree-add.`);
115
+ }
116
+ }
117
+ const provider = resolveTreeProvider(root);
118
+ // repoRoot is recorded as the adopted tree's own root. For a
119
+ // linked worktree that is the worktree dir rather than the main
120
+ // repo, unlike a scaffolded tree, but it is sufficient here: an
121
+ // adopted tree is never auto-pruned, and the provider resolves
122
+ // from the path either way, so the value is only a reference.
123
+ const tree = {
124
+ path: root,
125
+ repoRoot: root,
126
+ providerId: provider?.id ?? "git-worktree",
127
+ origin: "adopted",
128
+ };
129
+ const result = addTreeToQuest(state.questDir, tree);
130
+ if (!result.ok)
131
+ return refuse(result.reason);
132
+ if (!result.added) {
133
+ return ok(`Tree at ${root} is already tracked on this quest.`, { tree });
134
+ }
135
+ // The Journey is prose held to the column rule, and an absolute
136
+ // path is the one thing in it that cannot be wrapped. A tilde is a
137
+ // courtesy for a reader, and the Journey has no other kind of
138
+ // audience: nothing reads a path back out of it.
139
+ appendJourneyEntry(state, `Adopted tree at ${displayPath(root)}.`);
140
+ return ok(`Adopted tree at ${root}; it will not be auto-pruned.`, { tree });
141
+ }
142
+ /**
143
+ * The id of another quest that already tracks a tree at this path, or
144
+ * undefined when only the loaded quest (or no quest) does. Paths are
145
+ * canonicalized so a /var versus /private/var spelling still matches.
146
+ */
147
+ function pathAdoptedByAnotherQuest(state, root) {
148
+ const target = canonicalPath(root);
149
+ const { index } = discoverQuests(state.questsRoot);
150
+ for (const entry of index.quests.values()) {
151
+ const fm = entry.doc.frontMatter;
152
+ if (fm.id === state.questId)
153
+ continue;
154
+ // Only a live quest is a competing claim. The guard exists because
155
+ // two quests holding one checkout make a fresh session resolve to
156
+ // an arbitrary one, and a sealed quest cannot magnetize a session:
157
+ // the cwd resolver prefers a live quest over a sealed one wherever
158
+ // both match. Counting a finished quest's claim strands the
159
+ // checkout instead, because the only quest that could release it
160
+ // is the one that is over.
161
+ if (isSealedStatus(fm.status))
162
+ continue;
163
+ for (const tree of fm.trees ?? []) {
164
+ if (canonicalPath(tree.path) === target)
165
+ return fm.id;
166
+ }
167
+ }
168
+ return undefined;
169
+ }
170
+ export function treeList(state) {
171
+ if (!state.questDir) {
172
+ // No quest loaded: return the cross-quest inventory so
173
+ // the harness-created trees can be seen in one place.
174
+ const inventory = inventoryWorktrees(state);
175
+ // scope tells a consumer which shape `trees` carries: the
176
+ // global inventory entries are attributed (questId/questTitle),
177
+ // the per-quest records are not.
178
+ const missing = inventory.filter((t) => !t.exists).length;
179
+ const missingNote = missing > 0 ? ` (${missing} missing on disk)` : "";
180
+ return ok(`${count(inventory.length, "tree")} across all quests${missingNote}.`, {
181
+ scope: "global",
182
+ trees: inventory,
183
+ });
184
+ }
185
+ const result = listTreesOnQuest(state.questDir);
186
+ if (!result.ok)
187
+ return refuse(result.reason);
188
+ return ok(`${count(result.trees.length, "tree")} on the loaded quest.`, {
189
+ scope: "quest",
190
+ trees: result.trees,
191
+ });
192
+ }
193
+ export async function treePrune(state, params) {
194
+ if (!state.questDir || !state.questId) {
195
+ return refuse("Load a quest first.");
196
+ }
197
+ const listing = listTreesOnQuest(state.questDir);
198
+ if (!listing.ok)
199
+ return refuse(listing.reason);
200
+ if (listing.trees.length === 0) {
201
+ return refuse("No trees on the loaded quest to prune.");
202
+ }
203
+ const target = listing.trees.find((t) => t.path === params.target || t.path === params.ref) ?? listing.trees[0];
204
+ // `force` is a typed boolean parameter. The caller flips it only
205
+ // after confirming destructive intent with the user. We
206
+ // deliberately do NOT key off a `note` string because notes are
207
+ // free-form prose, not consent. `force: true` is the consent
208
+ // signal.
209
+ const force = params.force === true;
210
+ // Only a tool-scaffolded tree may be pruned without force. An
211
+ // adopted or unmarked (legacy, hand-registered) tree is a shared
212
+ // checkout the tool did not create, so deleting it needs explicit,
213
+ // confirmed consent rather than a mistyped target.
214
+ if (target.origin !== "scaffolded" && !force) {
215
+ const kind = target.origin ?? "unmarked";
216
+ return refuse(`Tree at ${displayPath(target.path)} is ${kind}, not scaffolded by the tool. Pruning it would delete a shared checkout; pass force:true after confirming with the user.`);
217
+ }
218
+ const sessions = readSessionsFromQuest(state);
219
+ const attached = sessions.filter((s) => s.cwd && isWithin(s.cwd, target.path));
220
+ if (attached.length > 0 && !force) {
221
+ const names = attached.map((s) => s.name ?? s.id).join(", ");
222
+ return refuse(`Tree at ${displayPath(target.path)} has an attached ${noun(attached.length, "session")} (${names}). Detach them with \`session-detach\` before pruning, or pass force:true after confirming with the user.`);
223
+ }
224
+ // Prefer the provider that created the tree, recorded as its
225
+ // providerId, so a prune reaches the same provider even if the
226
+ // registry's resolution order changed since the tree was made.
227
+ // Fall back to repo-root resolution for legacy trees with no id.
228
+ const provider = (target.providerId ? getTreeProvider(target.providerId) : undefined) ??
229
+ resolveTreeProvider(target.repoRoot ?? target.path) ??
230
+ resolveTreeProvider(process.cwd());
231
+ if (!provider) {
232
+ return refuse(`No tree provider applies to ${target.repoRoot ?? target.path}.`);
233
+ }
234
+ try {
235
+ await provider.prune({ path: target.path, force });
236
+ }
237
+ catch (error) {
238
+ const message = error instanceof Error ? error.message : String(error);
239
+ const detectedAt = new Date().toISOString();
240
+ setPendingPrune(state.questDir, {
241
+ path: target.path,
242
+ reason: message,
243
+ detectedAt,
244
+ });
245
+ return refuse(`Tree prune blocked: ${message} Resolve the conflict and retry, or pass force:true after confirming with the user.`);
246
+ }
247
+ const removal = removeTreeFromQuest(state.questDir, target.path);
248
+ if (!removal.ok)
249
+ return refuse(removal.reason);
250
+ setPendingPrune(state.questDir, null, { clearPath: target.path });
251
+ appendJourneyEntry(state, `Pruned tree at ${target.path}.`);
252
+ // The tilde form for the person reading; the absolute path stays in details,
253
+ // which is what a caller acts on.
254
+ return ok(`Tree at ${displayPath(target.path)} pruned.`, {
255
+ path: target.path,
256
+ });
257
+ }
258
+ export async function treeExpand(state, params) {
259
+ if (!state.questDir)
260
+ return refuse("Load a quest first.");
261
+ const zone = params.ref?.trim();
262
+ if (!zone) {
263
+ return refuse("Pass the zone to add in `ref` (e.g. system/gitstream).");
264
+ }
265
+ const listing = listTreesOnQuest(state.questDir);
266
+ if (!listing.ok)
267
+ return refuse(listing.reason);
268
+ if (listing.trees.length === 0) {
269
+ return refuse("No trees on the loaded quest. Run tree-add first.");
270
+ }
271
+ const target = listing.trees[0];
272
+ const provider = resolveTreeProvider(target.repoRoot ?? target.path);
273
+ if (!provider) {
274
+ return refuse("No tree provider applies to the loaded quest's tree.");
275
+ }
276
+ const expander = provider.expand;
277
+ if (typeof expander !== "function") {
278
+ return refuse(`Provider ${provider.id} does not support expand. (zone-aware providers, like dev-tree in joel.gerber.pi, implement this.)`);
279
+ }
280
+ try {
281
+ await expander({ path: target.path, zone });
282
+ appendJourneyEntry(state, `Expanded ${target.path} with zone ${zone}.`);
283
+ return ok(`Zone ${zone} added to ${displayPath(target.path)}.`, { zone });
284
+ }
285
+ catch (error) {
286
+ const message = error instanceof Error ? error.message : String(error);
287
+ return refuse(`Tree expand failed: ${message}`);
288
+ }
289
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Public surface of the refs library.
3
+ *
4
+ * Pluggable registry of external-system reference types
5
+ * (GitHub issues, Slack threads, anything with a URL and a
6
+ * recognisable shape). Consumers register their types; the
7
+ * library extracts matches from text and builds canonical
8
+ * URLs on demand. Built-in types are opt-in via
9
+ * `registerBuiltinRefTypes`.
10
+ */
11
+ export { getRefType, listRefTypes, parseAllRefs, parseRef, urlForRef, whyRefHasNoUrl, } from "./lookup.js";
12
+ export { clearRefTypes, registerBuiltinRefTypes, registerRefType, unregisterRefType, } from "./register.js";
13
+ export type { Ref, RefType } from "./types.js";
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Public surface of the refs library.
3
+ *
4
+ * Pluggable registry of external-system reference types
5
+ * (GitHub issues, Slack threads, anything with a URL and a
6
+ * recognisable shape). Consumers register their types; the
7
+ * library extracts matches from text and builds canonical
8
+ * URLs on demand. Built-in types are opt-in via
9
+ * `registerBuiltinRefTypes`.
10
+ */
11
+ export { getRefType, listRefTypes, parseAllRefs, parseRef, urlForRef, whyRefHasNoUrl, } from "./lookup.js";
12
+ export { clearRefTypes, registerBuiltinRefTypes, registerRefType, unregisterRefType, } from "./register.js";