@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,12 @@
1
+ /**
2
+ * LSP backend registry: process-global map from backend name to
3
+ * `LspBackendEntry`. Mirrors the refs, terminal and tree
4
+ * libraries; uses the same shared `createGlobalSymbolRegistry`
5
+ * helper.
6
+ */
7
+ import type { LspBackendEntry } from "../../lsp/types.js";
8
+ export declare const register: (entry: LspBackendEntry) => void;
9
+ export declare const unregister: (name: string) => void;
10
+ export declare const clear: () => void;
11
+ export declare const get: (name: string) => LspBackendEntry | undefined;
12
+ export declare const list: () => LspBackendEntry[];
@@ -0,0 +1,16 @@
1
+ /**
2
+ * LSP backend registry: process-global map from backend name to
3
+ * `LspBackendEntry`. Mirrors the refs, terminal and tree
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:lsp-backends",
10
+ getId: (entry) => entry.name,
11
+ });
12
+ export const register = (entry) => registry.register(entry);
13
+ export const unregister = (name) => registry.unregister(name);
14
+ export const clear = () => registry.clear();
15
+ export const get = (name) => registry.get(name);
16
+ export const list = () => registry.list();
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Notes discovery: walk a notes root on disk and build an
3
+ * in-memory index.
4
+ *
5
+ * Canonical disk layout (within `notesRoot`):
6
+ *
7
+ * NOTE-20130120-3MX6UQ/
8
+ * README.md
9
+ * attachment-1.jpg
10
+ * NOTE-20260822-AJ1W97/ (parent of the note
11
+ * README.md above, via its own
12
+ * `parent:` field --
13
+ * lives flat at the
14
+ * notes root, not
15
+ * nested in its
16
+ * parent's directory)
17
+ *
18
+ * All notes live as immediate children of `notesRoot`.
19
+ * Hierarchy is expressed by the `parent:` front-matter field
20
+ * on each note, not by directory nesting -- the same
21
+ * invariant quest enforces for its own tree
22
+ * (`internal/quest/discovery.ts`), and for the same reason:
23
+ * a note's location on disk should never need to change just
24
+ * because its place in a hierarchy does.
25
+ *
26
+ * A directory whose name doesn't match the `NOTE-*` id shape
27
+ * is skipped, not an error -- `.git`, `.claude`, scratch
28
+ * directories and the like are expected to sit alongside the
29
+ * notes.
30
+ */
31
+ import type { NoteDoc } from "../../notes/types.js";
32
+ /** One discovered note. */
33
+ export interface NoteEntry {
34
+ /** The note's directory name, equal to its id. */
35
+ dir: string;
36
+ doc: NoteDoc;
37
+ }
38
+ /** The whole tree, indexed for lookup and hierarchy traversal. */
39
+ export interface NoteIndex {
40
+ /** Every discovered note by id. */
41
+ notes: Map<string, NoteEntry>;
42
+ /**
43
+ * Parent-to-children adjacency. The empty key `""` holds
44
+ * every note with no `parent` set.
45
+ */
46
+ children: Map<string, string[]>;
47
+ }
48
+ interface DiscoveryError {
49
+ dir: string;
50
+ message: string;
51
+ }
52
+ /** Result of a discovery walk. */
53
+ export interface DiscoveryResult {
54
+ index: NoteIndex;
55
+ errors: DiscoveryError[];
56
+ }
57
+ /** Walk `notesRoot` and build a `NoteIndex` of every note found. */
58
+ export declare function discoverNotes(notesRoot: string): DiscoveryResult;
59
+ export {};
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Notes discovery: walk a notes root on disk and build an
3
+ * in-memory index.
4
+ *
5
+ * Canonical disk layout (within `notesRoot`):
6
+ *
7
+ * NOTE-20130120-3MX6UQ/
8
+ * README.md
9
+ * attachment-1.jpg
10
+ * NOTE-20260822-AJ1W97/ (parent of the note
11
+ * README.md above, via its own
12
+ * `parent:` field --
13
+ * lives flat at the
14
+ * notes root, not
15
+ * nested in its
16
+ * parent's directory)
17
+ *
18
+ * All notes live as immediate children of `notesRoot`.
19
+ * Hierarchy is expressed by the `parent:` front-matter field
20
+ * on each note, not by directory nesting -- the same
21
+ * invariant quest enforces for its own tree
22
+ * (`internal/quest/discovery.ts`), and for the same reason:
23
+ * a note's location on disk should never need to change just
24
+ * because its place in a hierarchy does.
25
+ *
26
+ * A directory whose name doesn't match the `NOTE-*` id shape
27
+ * is skipped, not an error -- `.git`, `.claude`, scratch
28
+ * directories and the like are expected to sit alongside the
29
+ * notes.
30
+ */
31
+ import { readdirSync, readFileSync } from "node:fs";
32
+ import { join } from "node:path";
33
+ import { parseNoteFrontMatter } from "./frontmatter.js";
34
+ import { isId } from "./id.js";
35
+ function readMaybe(path) {
36
+ try {
37
+ return readFileSync(path, "utf8");
38
+ }
39
+ catch {
40
+ return undefined;
41
+ }
42
+ }
43
+ /** Walk `notesRoot` and build a `NoteIndex` of every note found. */
44
+ export function discoverNotes(notesRoot) {
45
+ const notes = new Map();
46
+ const children = new Map();
47
+ const errors = [];
48
+ let entries;
49
+ try {
50
+ entries = readdirSync(notesRoot, { withFileTypes: true })
51
+ .filter((e) => e.isDirectory() && isId(e.name))
52
+ .map((e) => e.name);
53
+ }
54
+ catch (err) {
55
+ errors.push({
56
+ dir: notesRoot,
57
+ message: err instanceof Error ? err.message : String(err),
58
+ });
59
+ return { index: { notes, children }, errors };
60
+ }
61
+ for (const dir of entries) {
62
+ const readmePath = join(notesRoot, dir, "README.md");
63
+ const text = readMaybe(readmePath);
64
+ if (text === undefined) {
65
+ errors.push({ dir, message: `missing ${readmePath}` });
66
+ continue;
67
+ }
68
+ const parsed = parseNoteFrontMatter(text);
69
+ if (!parsed) {
70
+ errors.push({ dir, message: "invalid or missing front matter" });
71
+ continue;
72
+ }
73
+ if (parsed.frontMatter.id !== dir) {
74
+ errors.push({
75
+ dir,
76
+ message: `front-matter id "${parsed.frontMatter.id}" does not match directory name`,
77
+ });
78
+ continue;
79
+ }
80
+ notes.set(dir, { dir, doc: parsed });
81
+ }
82
+ for (const entry of notes.values()) {
83
+ const parentKey = entry.doc.frontMatter.parent ?? "";
84
+ const list = children.get(parentKey) ?? [];
85
+ list.push(entry.dir);
86
+ children.set(parentKey, list);
87
+ }
88
+ for (const list of children.values())
89
+ list.sort();
90
+ return { index: { notes, children }, errors };
91
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Front-matter parser and serializer for note READMEs.
3
+ *
4
+ * The block is YAML between two `---` fences. We use the
5
+ * `yaml` library for both directions rather than hand-rolled
6
+ * regex parsing, the same choice quest's own frontmatter
7
+ * module makes (`internal/quest/frontmatter.ts`) and for the
8
+ * same reason: a title or source string containing a colon,
9
+ * a quote, or a backslash is exactly the kind of value a
10
+ * regex-based reader/writer round-trips incorrectly, and
11
+ * silently -- an earlier prototype of this library hand-rolled
12
+ * its own escaping and produced titles with accumulating
13
+ * doubled backslashes on repeated edits before this was
14
+ * caught. A real YAML parser has no such failure mode.
15
+ *
16
+ * Validation rules:
17
+ *
18
+ * - `id`, `type`, `title`, `created`, `updated` are
19
+ * required; a missing or invalid one makes the whole parse
20
+ * fail so callers surface a clean error instead of writing
21
+ * back a corrupted file.
22
+ * - `type` is a strict enum; an unrecognised value fails
23
+ * the parse rather than being coerced to a guess.
24
+ * - `tags` defaults to `[]` rather than being omitted, so
25
+ * callers never have to distinguish "no tags" from "tags
26
+ * field missing".
27
+ * - `parent` and `source` are optional and only appear in
28
+ * the serialized output when set.
29
+ */
30
+ import { type NoteFrontMatter } from "../../notes/types.js";
31
+ /** Split a note's text into its raw front-matter YAML and body. */
32
+ export declare function splitFrontMatter(text: string): {
33
+ fmText: string;
34
+ body: string;
35
+ } | undefined;
36
+ /** Reasons a front-matter block might fail to parse, for a caller to surface. */
37
+ export declare function noteFrontMatterProblem(text: string): string | undefined;
38
+ /** Parse a note's full text into front matter plus body, or `undefined` if invalid. */
39
+ export declare function parseNoteFrontMatter(text: string): {
40
+ frontMatter: NoteFrontMatter;
41
+ body: string;
42
+ } | undefined;
43
+ /**
44
+ * Serialize front matter back to a YAML block, in a fixed
45
+ * field order (id, type, title, created, updated, tags,
46
+ * parent, source) so a diff on a note that only changed one
47
+ * field's value shows one changed line, not a reordered
48
+ * block.
49
+ */
50
+ export declare function serializeNoteFrontMatter(fm: NoteFrontMatter): string;
51
+ /** Assemble a note's full file text from front matter and body. */
52
+ export declare function serializeNote(fm: NoteFrontMatter, body: string): string;
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Front-matter parser and serializer for note READMEs.
3
+ *
4
+ * The block is YAML between two `---` fences. We use the
5
+ * `yaml` library for both directions rather than hand-rolled
6
+ * regex parsing, the same choice quest's own frontmatter
7
+ * module makes (`internal/quest/frontmatter.ts`) and for the
8
+ * same reason: a title or source string containing a colon,
9
+ * a quote, or a backslash is exactly the kind of value a
10
+ * regex-based reader/writer round-trips incorrectly, and
11
+ * silently -- an earlier prototype of this library hand-rolled
12
+ * its own escaping and produced titles with accumulating
13
+ * doubled backslashes on repeated edits before this was
14
+ * caught. A real YAML parser has no such failure mode.
15
+ *
16
+ * Validation rules:
17
+ *
18
+ * - `id`, `type`, `title`, `created`, `updated` are
19
+ * required; a missing or invalid one makes the whole parse
20
+ * fail so callers surface a clean error instead of writing
21
+ * back a corrupted file.
22
+ * - `type` is a strict enum; an unrecognised value fails
23
+ * the parse rather than being coerced to a guess.
24
+ * - `tags` defaults to `[]` rather than being omitted, so
25
+ * callers never have to distinguish "no tags" from "tags
26
+ * field missing".
27
+ * - `parent` and `source` are optional and only appear in
28
+ * the serialized output when set.
29
+ */
30
+ import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
31
+ import { NOTE_TYPES } from "../../notes/types.js";
32
+ /** Split a note's text into its raw front-matter YAML and body. */
33
+ export function splitFrontMatter(text) {
34
+ const lines = text.split("\n");
35
+ if (lines[0]?.trim() !== "---")
36
+ return undefined;
37
+ let end = -1;
38
+ for (let i = 1; i < lines.length; i++) {
39
+ if (lines[i].trim() === "---") {
40
+ end = i;
41
+ break;
42
+ }
43
+ }
44
+ if (end === -1)
45
+ return undefined;
46
+ const fmText = lines.slice(1, end).join("\n");
47
+ let body = lines.slice(end + 1).join("\n");
48
+ if (body.startsWith("\n"))
49
+ body = body.slice(1);
50
+ return { fmText, body };
51
+ }
52
+ function parseFrontMatterBlock(text) {
53
+ const split = splitFrontMatter(text);
54
+ if (!split)
55
+ return undefined;
56
+ let raw;
57
+ try {
58
+ raw = parseYaml(split.fmText) ?? {};
59
+ }
60
+ catch {
61
+ return undefined;
62
+ }
63
+ if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
64
+ return undefined;
65
+ }
66
+ return raw;
67
+ }
68
+ function asEnum(value, options) {
69
+ if (typeof value !== "string")
70
+ return undefined;
71
+ return options.includes(value) ? value : undefined;
72
+ }
73
+ function asString(value) {
74
+ if (typeof value === "string" && value.length > 0)
75
+ return value;
76
+ // created/updated timestamps and ids are always strings on write, but
77
+ // a hand-edited file could plausibly leave one unquoted; YAML would
78
+ // then hand back a number or Date for some shapes. Round-trip those
79
+ // back to string rather than failing the whole parse over it.
80
+ if (typeof value === "number")
81
+ return String(value);
82
+ return undefined;
83
+ }
84
+ function asStringArray(value) {
85
+ if (!Array.isArray(value))
86
+ return [];
87
+ return value.filter((v) => typeof v === "string" && v.length > 0);
88
+ }
89
+ /** Reasons a front-matter block might fail to parse, for a caller to surface. */
90
+ export function noteFrontMatterProblem(text) {
91
+ const raw = parseFrontMatterBlock(text);
92
+ if (!raw)
93
+ return "no valid front-matter block (missing --- fences or invalid YAML)";
94
+ if (!asString(raw.id))
95
+ return "missing or invalid id";
96
+ if (!asEnum(raw.type, NOTE_TYPES)) {
97
+ return `missing or invalid type (must be one of: ${NOTE_TYPES.join(", ")})`;
98
+ }
99
+ if (!asString(raw.title))
100
+ return "missing or invalid title";
101
+ if (!asString(raw.created))
102
+ return "missing or invalid created";
103
+ if (!asString(raw.updated))
104
+ return "missing or invalid updated";
105
+ return undefined;
106
+ }
107
+ /** Parse a note's full text into front matter plus body, or `undefined` if invalid. */
108
+ export function parseNoteFrontMatter(text) {
109
+ const split = splitFrontMatter(text);
110
+ if (!split)
111
+ return undefined;
112
+ const raw = parseFrontMatterBlock(text);
113
+ if (!raw)
114
+ return undefined;
115
+ const id = asString(raw.id);
116
+ const type = asEnum(raw.type, NOTE_TYPES);
117
+ const title = asString(raw.title);
118
+ const created = asString(raw.created);
119
+ const updated = asString(raw.updated);
120
+ if (!id || !type || !title || !created || !updated)
121
+ return undefined;
122
+ const frontMatter = {
123
+ id,
124
+ type,
125
+ title,
126
+ created,
127
+ updated,
128
+ tags: asStringArray(raw.tags),
129
+ };
130
+ const parent = asString(raw.parent);
131
+ if (parent)
132
+ frontMatter.parent = parent;
133
+ const source = asString(raw.source);
134
+ if (source)
135
+ frontMatter.source = source;
136
+ return { frontMatter, body: split.body };
137
+ }
138
+ /**
139
+ * Serialize front matter back to a YAML block, in a fixed
140
+ * field order (id, type, title, created, updated, tags,
141
+ * parent, source) so a diff on a note that only changed one
142
+ * field's value shows one changed line, not a reordered
143
+ * block.
144
+ */
145
+ export function serializeNoteFrontMatter(fm) {
146
+ const ordered = {
147
+ id: fm.id,
148
+ type: fm.type,
149
+ title: fm.title,
150
+ created: fm.created,
151
+ updated: fm.updated,
152
+ tags: fm.tags,
153
+ };
154
+ if (fm.parent)
155
+ ordered.parent = fm.parent;
156
+ if (fm.source)
157
+ ordered.source = fm.source;
158
+ return stringifyYaml(ordered, { lineWidth: 0 }).trimEnd();
159
+ }
160
+ /** Assemble a note's full file text from front matter and body. */
161
+ export function serializeNote(fm, body) {
162
+ return `---\n${serializeNoteFrontMatter(fm)}\n---\n\n${body.replace(/^\n+/, "")}`;
163
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Note ID minting and validation.
3
+ *
4
+ * IDs are deterministic in shape, random in suffix, the same
5
+ * pattern quest uses for its own ids (see
6
+ * `internal/quest/id.ts`):
7
+ *
8
+ * NOTE-YYYYMMDD-XXXXXX
9
+ *
10
+ * `YYYYMMDD` is the note's creation date (local timezone, or
11
+ * whatever the original source recorded) so ids sort
12
+ * chronologically by construction. `XXXXXX` is a
13
+ * six-character base-36 (upper) random suffix, giving
14
+ * roughly 2.18 billion distinct ids per day -- collisions in
15
+ * practice require an explicit check, not a probability
16
+ * argument.
17
+ *
18
+ * Unlike quest, there is exactly one prefix here: a note
19
+ * owns no child documents of a different kind, so there is
20
+ * nothing for a second prefix to distinguish.
21
+ */
22
+ /**
23
+ * Mint a fresh id. `date` defaults to now; tests and
24
+ * backdated imports pass a fixed date so the `YYYYMMDD`
25
+ * portion reflects the note's real creation date rather than
26
+ * the moment it was minted.
27
+ */
28
+ export declare function mintId(date?: Date): string;
29
+ /**
30
+ * Mint a fresh id from an already-formatted `YYYYMMDD` (or
31
+ * longer, e.g. `YYYYMMDDTHHMMSSZ`) string, the shape a note's
32
+ * own `created` front-matter field is in. Falls back to
33
+ * today's date when the string doesn't start with eight
34
+ * digits, rather than throwing -- a malformed or missing
35
+ * `created` field on import is a data-quality problem to
36
+ * flag separately, not a reason to refuse minting an id.
37
+ */
38
+ export declare function mintIdFromDateString(dateString: string | undefined): string;
39
+ /** Quick validation: is this string a valid note id? */
40
+ export declare function isId(text: string): boolean;
41
+ /** Extract the `YYYYMMDD` date portion from an id, or `undefined`. */
42
+ export declare function dateOf(id: string): string | undefined;
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Note ID minting and validation.
3
+ *
4
+ * IDs are deterministic in shape, random in suffix, the same
5
+ * pattern quest uses for its own ids (see
6
+ * `internal/quest/id.ts`):
7
+ *
8
+ * NOTE-YYYYMMDD-XXXXXX
9
+ *
10
+ * `YYYYMMDD` is the note's creation date (local timezone, or
11
+ * whatever the original source recorded) so ids sort
12
+ * chronologically by construction. `XXXXXX` is a
13
+ * six-character base-36 (upper) random suffix, giving
14
+ * roughly 2.18 billion distinct ids per day -- collisions in
15
+ * practice require an explicit check, not a probability
16
+ * argument.
17
+ *
18
+ * Unlike quest, there is exactly one prefix here: a note
19
+ * owns no child documents of a different kind, so there is
20
+ * nothing for a second prefix to distinguish.
21
+ */
22
+ import { randomBytes } from "node:crypto";
23
+ const PREFIX = "NOTE";
24
+ // YYYY: 1900-2999. MM: 01-12. DD: 01-31. Shape check, not a
25
+ // calendar validator -- rejects the obvious garbage
26
+ // (00000000, 20261345) a bare `\d{8}` would accept, without
27
+ // the cost of real calendar math nothing here needs.
28
+ const DATE_PATTERN = "(?:19|2[0-9])\\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\\d|3[01])";
29
+ const ID_REGEX = new RegExp(`^${PREFIX}-(${DATE_PATTERN})-([0-9A-Z]{6})$`);
30
+ function pad(n) {
31
+ return String(n).padStart(2, "0");
32
+ }
33
+ function ymd(date) {
34
+ return `${date.getFullYear()}${pad(date.getMonth() + 1)}${pad(date.getDate())}`;
35
+ }
36
+ /** Build a six-character base-36 uppercase random suffix. */
37
+ function randomSuffix() {
38
+ const bytes = randomBytes(6);
39
+ const out = [];
40
+ for (let i = 0; i < 6; i++) {
41
+ out.push((bytes[i] % 36).toString(36).toUpperCase());
42
+ }
43
+ return out.join("");
44
+ }
45
+ /**
46
+ * Mint a fresh id. `date` defaults to now; tests and
47
+ * backdated imports pass a fixed date so the `YYYYMMDD`
48
+ * portion reflects the note's real creation date rather than
49
+ * the moment it was minted.
50
+ */
51
+ export function mintId(date = new Date()) {
52
+ return `${PREFIX}-${ymd(date)}-${randomSuffix()}`;
53
+ }
54
+ /**
55
+ * Mint a fresh id from an already-formatted `YYYYMMDD` (or
56
+ * longer, e.g. `YYYYMMDDTHHMMSSZ`) string, the shape a note's
57
+ * own `created` front-matter field is in. Falls back to
58
+ * today's date when the string doesn't start with eight
59
+ * digits, rather than throwing -- a malformed or missing
60
+ * `created` field on import is a data-quality problem to
61
+ * flag separately, not a reason to refuse minting an id.
62
+ */
63
+ export function mintIdFromDateString(dateString) {
64
+ const match = dateString?.match(/^(\d{8})/);
65
+ const datePart = match?.[1];
66
+ if (!datePart)
67
+ return mintId();
68
+ const year = Number(datePart.slice(0, 4));
69
+ const month = Number(datePart.slice(4, 6));
70
+ const day = Number(datePart.slice(6, 8));
71
+ return mintId(new Date(year, month - 1, day));
72
+ }
73
+ /** Quick validation: is this string a valid note id? */
74
+ export function isId(text) {
75
+ return ID_REGEX.test(text);
76
+ }
77
+ /** Extract the `YYYYMMDD` date portion from an id, or `undefined`. */
78
+ export function dateOf(id) {
79
+ return ID_REGEX.exec(id)?.[1];
80
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Atomic file writes for note READMEs.
3
+ *
4
+ * The "read text, parse, mutate, write text" sequence every
5
+ * mutating verb runs is not atomic against a concurrent
6
+ * reader on a slow disk: a naive write can leave a reader
7
+ * seeing half a file. We write to a sibling temp file, fsync,
8
+ * then rename over the target, so an observer always sees
9
+ * the old or the new file in full -- the same pattern quest
10
+ * uses (`internal/quest/io.ts`).
11
+ *
12
+ * Unlike quest, there is no cross-process lock here. Quest
13
+ * needs one because two pi sessions can legitimately attach
14
+ * to and mutate the same quest concurrently; a notes archive
15
+ * has no equivalent multi-writer scenario -- it's a single
16
+ * user's single-writer CLI. If that ever changes, port
17
+ * quest's `withQuestLock` rather than inventing a new one.
18
+ */
19
+ /**
20
+ * Write `data` to `path` atomically: write to a sibling temp
21
+ * file in the same directory, fsync, then rename. The rename
22
+ * is atomic on POSIX filesystems for files on the same
23
+ * volume, which a sibling temp file always is.
24
+ */
25
+ export declare function atomicWriteFile(path: string, data: string): void;
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Atomic file writes for note READMEs.
3
+ *
4
+ * The "read text, parse, mutate, write text" sequence every
5
+ * mutating verb runs is not atomic against a concurrent
6
+ * reader on a slow disk: a naive write can leave a reader
7
+ * seeing half a file. We write to a sibling temp file, fsync,
8
+ * then rename over the target, so an observer always sees
9
+ * the old or the new file in full -- the same pattern quest
10
+ * uses (`internal/quest/io.ts`).
11
+ *
12
+ * Unlike quest, there is no cross-process lock here. Quest
13
+ * needs one because two pi sessions can legitimately attach
14
+ * to and mutate the same quest concurrently; a notes archive
15
+ * has no equivalent multi-writer scenario -- it's a single
16
+ * user's single-writer CLI. If that ever changes, port
17
+ * quest's `withQuestLock` rather than inventing a new one.
18
+ */
19
+ import { closeSync, fsyncSync, openSync, renameSync, unlinkSync, writeSync, } from "node:fs";
20
+ import { dirname, join } from "node:path";
21
+ /**
22
+ * Write `data` to `path` atomically: write to a sibling temp
23
+ * file in the same directory, fsync, then rename. The rename
24
+ * is atomic on POSIX filesystems for files on the same
25
+ * volume, which a sibling temp file always is.
26
+ */
27
+ export function atomicWriteFile(path, data) {
28
+ const dir = dirname(path);
29
+ const tmp = join(dir, `.${path.split("/").pop()}.tmp-${process.pid}-${Math.random().toString(36).slice(2, 10)}`);
30
+ const fd = openSync(tmp, "w");
31
+ try {
32
+ writeSync(fd, data);
33
+ fsyncSync(fd);
34
+ }
35
+ finally {
36
+ closeSync(fd);
37
+ }
38
+ try {
39
+ renameSync(tmp, path);
40
+ }
41
+ catch (err) {
42
+ try {
43
+ unlinkSync(tmp);
44
+ }
45
+ catch {
46
+ // Best-effort cleanup; the temp's leftover state is
47
+ // safe to leave in place and is not user-visible.
48
+ }
49
+ throw err;
50
+ }
51
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Filesystem-safe filename sanitizing.
3
+ *
4
+ * Unrelated to quest's `internal/quest/sanitize.ts`, which
5
+ * defends against prompt injection in text the agent reads
6
+ * back. This one has a narrower, mechanical job: take a
7
+ * human title (from an import, or typed by a caller) and
8
+ * produce something every filesystem this tool runs on can
9
+ * actually name a file, without silently truncating or
10
+ * colliding.
11
+ */
12
+ /**
13
+ * Sanitize a string for use as a filename component (not a
14
+ * full path -- callers add their own extension/directory).
15
+ * Collapses whitespace, strips characters invalid on
16
+ * Windows/macOS/Linux filesystems, trims trailing dots and
17
+ * spaces (Windows rejects both), and clamps length.
18
+ */
19
+ export declare function sanitizeFilename(name: string, maxLen?: number): string;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Filesystem-safe filename sanitizing.
3
+ *
4
+ * Unrelated to quest's `internal/quest/sanitize.ts`, which
5
+ * defends against prompt injection in text the agent reads
6
+ * back. This one has a narrower, mechanical job: take a
7
+ * human title (from an import, or typed by a caller) and
8
+ * produce something every filesystem this tool runs on can
9
+ * actually name a file, without silently truncating or
10
+ * colliding.
11
+ */
12
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: intentionally stripping control characters from filenames, not matching them as text
13
+ const INVALID_CHARS_RE = /[/\\:*?"<>|\x00-\x1f]/g;
14
+ const WHITESPACE_RE = /\s+/g;
15
+ /**
16
+ * Sanitize a string for use as a filename component (not a
17
+ * full path -- callers add their own extension/directory).
18
+ * Collapses whitespace, strips characters invalid on
19
+ * Windows/macOS/Linux filesystems, trims trailing dots and
20
+ * spaces (Windows rejects both), and clamps length.
21
+ */
22
+ export function sanitizeFilename(name, maxLen = 150) {
23
+ // Whitespace normalizes first: \x00-\x1f in INVALID_CHARS_RE
24
+ // includes tab, so running that pass first would turn each tab
25
+ // into its own literal "-" (two tabs -> "--") instead of
26
+ // collapsing the run into a single space the way a space or
27
+ // newline run does.
28
+ const cleaned = name
29
+ .trim()
30
+ .replace(WHITESPACE_RE, " ")
31
+ .replace(INVALID_CHARS_RE, "-")
32
+ .trim()
33
+ .replace(/[. ]+$/, "");
34
+ return (cleaned || "file").slice(0, maxLen);
35
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Process-global singletons shared across module instances.
3
+ *
4
+ * A host that loads a library's modules more than once per process
5
+ * (pi loads each extension as its own module instance) does not get
6
+ * one registry from a module-level `const registry = new Map()`: each
7
+ * loader that imports the module gets its own. Anything one caller
8
+ * writes and another reads (a recorder sink, a prompt contributor, an
9
+ * LSP backend, the shared browser) must therefore live on
10
+ * `globalThis` under a shared key rather than in a module variable.
11
+ * `Symbol.for` gives every module instance the same key, and
12
+ * `globalThis` is shared across them, so the value is genuinely one
13
+ * per process.
14
+ */
15
+ /**
16
+ * Get the process-global value for `key`, creating it once with
17
+ * `create` on first access. Every caller in the process, in any
18
+ * module instance, receives the same value.
19
+ */
20
+ export declare function processGlobal<T>(key: string, create: () => T): T;