@aligndottech/cli 0.48.0 → 0.50.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 (717) hide show
  1. package/README.md +10 -8
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +35 -26
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/agents.d.ts.map +1 -1
  6. package/dist/commands/agents.js +7 -2
  7. package/dist/commands/agents.js.map +1 -1
  8. package/dist/commands/ai.d.ts +11 -0
  9. package/dist/commands/ai.d.ts.map +1 -0
  10. package/dist/commands/ai.js +121 -0
  11. package/dist/commands/ai.js.map +1 -0
  12. package/dist/commands/check.d.ts.map +1 -1
  13. package/dist/commands/check.js +18 -2
  14. package/dist/commands/check.js.map +1 -1
  15. package/dist/commands/connect.d.ts +5 -0
  16. package/dist/commands/connect.d.ts.map +1 -1
  17. package/dist/commands/connect.js +24 -0
  18. package/dist/commands/connect.js.map +1 -1
  19. package/dist/commands/default-action.js +2 -2
  20. package/dist/commands/default-action.js.map +1 -1
  21. package/dist/commands/import/confluence.d.ts.map +1 -1
  22. package/dist/commands/import/confluence.js +24 -5
  23. package/dist/commands/import/confluence.js.map +1 -1
  24. package/dist/commands/import/docs.js +2 -2
  25. package/dist/commands/import/git.d.ts.map +1 -1
  26. package/dist/commands/import/git.js +15 -5
  27. package/dist/commands/import/git.js.map +1 -1
  28. package/dist/commands/import/github.d.ts.map +1 -1
  29. package/dist/commands/import/github.js +34 -7
  30. package/dist/commands/import/github.js.map +1 -1
  31. package/dist/commands/import/gitlab.d.ts.map +1 -1
  32. package/dist/commands/import/gitlab.js +10 -5
  33. package/dist/commands/import/gitlab.js.map +1 -1
  34. package/dist/commands/import/jira.d.ts.map +1 -1
  35. package/dist/commands/import/jira.js +10 -5
  36. package/dist/commands/import/jira.js.map +1 -1
  37. package/dist/commands/import/linear.d.ts.map +1 -1
  38. package/dist/commands/import/linear.js +10 -5
  39. package/dist/commands/import/linear.js.map +1 -1
  40. package/dist/commands/import/notion.d.ts.map +1 -1
  41. package/dist/commands/import/notion.js +10 -5
  42. package/dist/commands/import/notion.js.map +1 -1
  43. package/dist/commands/import/sessions.js +2 -2
  44. package/dist/commands/import/slack.d.ts.map +1 -1
  45. package/dist/commands/import/slack.js +12 -7
  46. package/dist/commands/import/slack.js.map +1 -1
  47. package/dist/commands/import/teams.d.ts.map +1 -1
  48. package/dist/commands/import/teams.js +10 -5
  49. package/dist/commands/import/teams.js.map +1 -1
  50. package/dist/commands/import/zoom.d.ts.map +1 -1
  51. package/dist/commands/import/zoom.js +10 -5
  52. package/dist/commands/import/zoom.js.map +1 -1
  53. package/dist/commands/import.d.ts.map +1 -1
  54. package/dist/commands/import.js +43 -1
  55. package/dist/commands/import.js.map +1 -1
  56. package/dist/commands/local.d.ts.map +1 -1
  57. package/dist/commands/local.js +76 -4
  58. package/dist/commands/local.js.map +1 -1
  59. package/dist/commands/mark.d.ts +37 -0
  60. package/dist/commands/mark.d.ts.map +1 -0
  61. package/dist/commands/mark.js +105 -0
  62. package/dist/commands/mark.js.map +1 -0
  63. package/dist/commands/mcp.d.ts +141 -2
  64. package/dist/commands/mcp.d.ts.map +1 -1
  65. package/dist/commands/mcp.js +72 -14
  66. package/dist/commands/mcp.js.map +1 -1
  67. package/dist/commands/registry.d.ts.map +1 -1
  68. package/dist/commands/registry.js +12 -2
  69. package/dist/commands/registry.js.map +1 -1
  70. package/dist/commands/setup.d.ts +39 -0
  71. package/dist/commands/setup.d.ts.map +1 -1
  72. package/dist/commands/setup.js +118 -241
  73. package/dist/commands/setup.js.map +1 -1
  74. package/dist/commands/share.d.ts +7 -0
  75. package/dist/commands/share.d.ts.map +1 -0
  76. package/dist/commands/share.js +60 -0
  77. package/dist/commands/share.js.map +1 -0
  78. package/dist/commands/sync.d.ts +55 -0
  79. package/dist/commands/sync.d.ts.map +1 -0
  80. package/dist/commands/sync.js +278 -0
  81. package/dist/commands/sync.js.map +1 -0
  82. package/dist/commands/telemetry.d.ts +3 -3
  83. package/dist/commands/telemetry.js +6 -6
  84. package/dist/commands/telemetry.js.map +1 -1
  85. package/dist/commands/why.d.ts.map +1 -1
  86. package/dist/commands/why.js +27 -1
  87. package/dist/commands/why.js.map +1 -1
  88. package/dist/index.d.ts +3 -1
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +3 -0
  91. package/dist/index.js.map +1 -1
  92. package/dist/lib/ask-key-offer.d.ts +38 -0
  93. package/dist/lib/ask-key-offer.d.ts.map +1 -0
  94. package/dist/lib/ask-key-offer.js +130 -0
  95. package/dist/lib/ask-key-offer.js.map +1 -0
  96. package/dist/lib/backfill-state.d.ts +116 -0
  97. package/dist/lib/backfill-state.d.ts.map +1 -0
  98. package/dist/lib/backfill-state.js +342 -0
  99. package/dist/lib/backfill-state.js.map +1 -0
  100. package/dist/lib/backup-copy.d.ts +17 -0
  101. package/dist/lib/backup-copy.d.ts.map +1 -0
  102. package/dist/lib/backup-copy.js +13 -0
  103. package/dist/lib/backup-copy.js.map +1 -0
  104. package/dist/lib/capture-report.d.ts +22 -18
  105. package/dist/lib/capture-report.d.ts.map +1 -1
  106. package/dist/lib/capture-report.js +64 -2
  107. package/dist/lib/capture-report.js.map +1 -1
  108. package/dist/lib/config.d.ts +56 -24
  109. package/dist/lib/config.d.ts.map +1 -1
  110. package/dist/lib/config.js +176 -45
  111. package/dist/lib/config.js.map +1 -1
  112. package/dist/lib/confirm-timeout.d.ts +8 -0
  113. package/dist/lib/confirm-timeout.d.ts.map +1 -0
  114. package/dist/lib/confirm-timeout.js +18 -0
  115. package/dist/lib/confirm-timeout.js.map +1 -0
  116. package/dist/lib/curation/check-marks.d.ts +48 -0
  117. package/dist/lib/curation/check-marks.d.ts.map +1 -0
  118. package/dist/lib/curation/check-marks.js +81 -0
  119. package/dist/lib/curation/check-marks.js.map +1 -0
  120. package/dist/lib/curation/guardrail.d.ts +39 -0
  121. package/dist/lib/curation/guardrail.d.ts.map +1 -0
  122. package/dist/lib/curation/guardrail.js +93 -0
  123. package/dist/lib/curation/guardrail.js.map +1 -0
  124. package/dist/lib/curation/judge.d.ts +3 -0
  125. package/dist/lib/curation/judge.d.ts.map +1 -0
  126. package/dist/lib/curation/judge.js +9 -0
  127. package/dist/lib/curation/judge.js.map +1 -0
  128. package/dist/lib/curation/judgements-db.d.ts +96 -0
  129. package/dist/lib/curation/judgements-db.d.ts.map +1 -0
  130. package/dist/lib/curation/judgements-db.js +200 -0
  131. package/dist/lib/curation/judgements-db.js.map +1 -0
  132. package/dist/lib/curation/last-check.d.ts +32 -0
  133. package/dist/lib/curation/last-check.d.ts.map +1 -0
  134. package/dist/lib/curation/last-check.js +81 -0
  135. package/dist/lib/curation/last-check.js.map +1 -0
  136. package/dist/lib/curation/mark.d.ts +76 -0
  137. package/dist/lib/curation/mark.d.ts.map +1 -0
  138. package/dist/lib/curation/mark.js +359 -0
  139. package/dist/lib/curation/mark.js.map +1 -0
  140. package/dist/lib/curation/text.d.ts +6 -0
  141. package/dist/lib/curation/text.d.ts.map +1 -0
  142. package/dist/lib/curation/text.js +35 -0
  143. package/dist/lib/curation/text.js.map +1 -0
  144. package/dist/lib/fetchers/capture.d.ts +49 -2
  145. package/dist/lib/fetchers/capture.d.ts.map +1 -1
  146. package/dist/lib/fetchers/capture.js +7 -1
  147. package/dist/lib/fetchers/capture.js.map +1 -1
  148. package/dist/lib/fetchers/confluence.d.ts +2 -2
  149. package/dist/lib/fetchers/confluence.d.ts.map +1 -1
  150. package/dist/lib/fetchers/confluence.js.map +1 -1
  151. package/dist/lib/fetchers/git.d.ts +1 -0
  152. package/dist/lib/fetchers/git.d.ts.map +1 -1
  153. package/dist/lib/fetchers/git.js +3 -1
  154. package/dist/lib/fetchers/git.js.map +1 -1
  155. package/dist/lib/fetchers/github.d.ts +44 -5
  156. package/dist/lib/fetchers/github.d.ts.map +1 -1
  157. package/dist/lib/fetchers/github.js +122 -5
  158. package/dist/lib/fetchers/github.js.map +1 -1
  159. package/dist/lib/fetchers/gitlab.d.ts +2 -2
  160. package/dist/lib/fetchers/gitlab.d.ts.map +1 -1
  161. package/dist/lib/fetchers/gitlab.js.map +1 -1
  162. package/dist/lib/fetchers/jira.d.ts +2 -2
  163. package/dist/lib/fetchers/jira.d.ts.map +1 -1
  164. package/dist/lib/fetchers/jira.js.map +1 -1
  165. package/dist/lib/fetchers/linear.d.ts +2 -2
  166. package/dist/lib/fetchers/linear.d.ts.map +1 -1
  167. package/dist/lib/fetchers/linear.js.map +1 -1
  168. package/dist/lib/fetchers/notion.d.ts +2 -2
  169. package/dist/lib/fetchers/notion.d.ts.map +1 -1
  170. package/dist/lib/fetchers/notion.js.map +1 -1
  171. package/dist/lib/fetchers/slack.d.ts +2 -3
  172. package/dist/lib/fetchers/slack.d.ts.map +1 -1
  173. package/dist/lib/fetchers/slack.js.map +1 -1
  174. package/dist/lib/fetchers/teams.d.ts +2 -2
  175. package/dist/lib/fetchers/teams.d.ts.map +1 -1
  176. package/dist/lib/fetchers/teams.js.map +1 -1
  177. package/dist/lib/fetchers/zoom.d.ts +2 -2
  178. package/dist/lib/fetchers/zoom.d.ts.map +1 -1
  179. package/dist/lib/fetchers/zoom.js.map +1 -1
  180. package/dist/lib/gateway-client.d.ts +34 -0
  181. package/dist/lib/gateway-client.d.ts.map +1 -1
  182. package/dist/lib/gateway-client.js +19 -1
  183. package/dist/lib/gateway-client.js.map +1 -1
  184. package/dist/lib/github-text.d.ts +3 -0
  185. package/dist/lib/github-text.d.ts.map +1 -0
  186. package/dist/lib/github-text.js +18 -0
  187. package/dist/lib/github-text.js.map +1 -0
  188. package/dist/lib/hook-context.d.ts +10 -0
  189. package/dist/lib/hook-context.d.ts.map +1 -1
  190. package/dist/lib/hook-context.js +14 -0
  191. package/dist/lib/hook-context.js.map +1 -1
  192. package/dist/lib/import-defaults.d.ts +39 -23
  193. package/dist/lib/import-defaults.d.ts.map +1 -1
  194. package/dist/lib/import-defaults.js +28 -26
  195. package/dist/lib/import-defaults.js.map +1 -1
  196. package/dist/lib/launch/adapters/aider.d.ts +17 -0
  197. package/dist/lib/launch/adapters/aider.d.ts.map +1 -0
  198. package/dist/lib/launch/adapters/aider.js +30 -0
  199. package/dist/lib/launch/adapters/aider.js.map +1 -0
  200. package/dist/lib/launch/adapters/amp.d.ts +18 -0
  201. package/dist/lib/launch/adapters/amp.d.ts.map +1 -0
  202. package/dist/lib/launch/adapters/amp.js +29 -0
  203. package/dist/lib/launch/adapters/amp.js.map +1 -0
  204. package/dist/lib/launch/adapters/auggie.d.ts +18 -0
  205. package/dist/lib/launch/adapters/auggie.d.ts.map +1 -0
  206. package/dist/lib/launch/adapters/auggie.js +34 -0
  207. package/dist/lib/launch/adapters/auggie.js.map +1 -0
  208. package/dist/lib/launch/adapters/cline.d.ts +10 -0
  209. package/dist/lib/launch/adapters/cline.d.ts.map +1 -0
  210. package/dist/lib/launch/adapters/cline.js +41 -0
  211. package/dist/lib/launch/adapters/cline.js.map +1 -0
  212. package/dist/lib/launch/adapters/continue.d.ts +22 -0
  213. package/dist/lib/launch/adapters/continue.d.ts.map +1 -0
  214. package/dist/lib/launch/adapters/continue.js +46 -0
  215. package/dist/lib/launch/adapters/continue.js.map +1 -0
  216. package/dist/lib/launch/adapters/droid.d.ts +19 -0
  217. package/dist/lib/launch/adapters/droid.d.ts.map +1 -0
  218. package/dist/lib/launch/adapters/droid.js +38 -0
  219. package/dist/lib/launch/adapters/droid.js.map +1 -0
  220. package/dist/lib/launch/adapters/gemini-cli.d.ts +13 -14
  221. package/dist/lib/launch/adapters/gemini-cli.d.ts.map +1 -1
  222. package/dist/lib/launch/adapters/gemini-cli.js +38 -53
  223. package/dist/lib/launch/adapters/gemini-cli.js.map +1 -1
  224. package/dist/lib/launch/adapters/goose.d.ts +20 -0
  225. package/dist/lib/launch/adapters/goose.d.ts.map +1 -0
  226. package/dist/lib/launch/adapters/goose.js +47 -0
  227. package/dist/lib/launch/adapters/goose.js.map +1 -0
  228. package/dist/lib/launch/adapters/grok-build.d.ts +16 -0
  229. package/dist/lib/launch/adapters/grok-build.d.ts.map +1 -0
  230. package/dist/lib/launch/adapters/grok-build.js +25 -0
  231. package/dist/lib/launch/adapters/grok-build.js.map +1 -0
  232. package/dist/lib/launch/adapters/kiro.d.ts +17 -0
  233. package/dist/lib/launch/adapters/kiro.d.ts.map +1 -0
  234. package/dist/lib/launch/adapters/kiro.js +25 -0
  235. package/dist/lib/launch/adapters/kiro.js.map +1 -0
  236. package/dist/lib/launch/adapters/notes.d.ts +7 -0
  237. package/dist/lib/launch/adapters/notes.d.ts.map +1 -0
  238. package/dist/lib/launch/adapters/notes.js +5 -0
  239. package/dist/lib/launch/adapters/notes.js.map +1 -0
  240. package/dist/lib/launch/adapters/qwen.d.ts +25 -0
  241. package/dist/lib/launch/adapters/qwen.d.ts.map +1 -0
  242. package/dist/lib/launch/adapters/qwen.js +67 -0
  243. package/dist/lib/launch/adapters/qwen.js.map +1 -0
  244. package/dist/lib/launch/agents.d.ts +6 -1
  245. package/dist/lib/launch/agents.d.ts.map +1 -1
  246. package/dist/lib/launch/agents.js +12 -4
  247. package/dist/lib/launch/agents.js.map +1 -1
  248. package/dist/lib/launch/amp-state.d.ts +21 -0
  249. package/dist/lib/launch/amp-state.d.ts.map +1 -0
  250. package/dist/lib/launch/amp-state.js +61 -0
  251. package/dist/lib/launch/amp-state.js.map +1 -0
  252. package/dist/lib/launch/auggie-state.d.ts +25 -0
  253. package/dist/lib/launch/auggie-state.d.ts.map +1 -0
  254. package/dist/lib/launch/auggie-state.js +74 -0
  255. package/dist/lib/launch/auggie-state.js.map +1 -0
  256. package/dist/lib/launch/cline-state.d.ts +32 -0
  257. package/dist/lib/launch/cline-state.d.ts.map +1 -0
  258. package/dist/lib/launch/cline-state.js +108 -0
  259. package/dist/lib/launch/cline-state.js.map +1 -0
  260. package/dist/lib/launch/config-writes.d.ts +11 -1
  261. package/dist/lib/launch/config-writes.d.ts.map +1 -1
  262. package/dist/lib/launch/config-writes.js +66 -8
  263. package/dist/lib/launch/config-writes.js.map +1 -1
  264. package/dist/lib/launch/continue-state.d.ts +41 -0
  265. package/dist/lib/launch/continue-state.d.ts.map +1 -0
  266. package/dist/lib/launch/continue-state.js +142 -0
  267. package/dist/lib/launch/continue-state.js.map +1 -0
  268. package/dist/lib/launch/detect.d.ts.map +1 -1
  269. package/dist/lib/launch/detect.js +5 -2
  270. package/dist/lib/launch/detect.js.map +1 -1
  271. package/dist/lib/launch/droid-state.d.ts +24 -0
  272. package/dist/lib/launch/droid-state.d.ts.map +1 -0
  273. package/dist/lib/launch/droid-state.js +74 -0
  274. package/dist/lib/launch/droid-state.js.map +1 -0
  275. package/dist/lib/launch/gemini-state.d.ts +26 -20
  276. package/dist/lib/launch/gemini-state.d.ts.map +1 -1
  277. package/dist/lib/launch/gemini-state.js +95 -37
  278. package/dist/lib/launch/gemini-state.js.map +1 -1
  279. package/dist/lib/launch/gemini-system-file.d.ts +17 -0
  280. package/dist/lib/launch/gemini-system-file.d.ts.map +1 -0
  281. package/dist/lib/launch/gemini-system-file.js +55 -0
  282. package/dist/lib/launch/gemini-system-file.js.map +1 -0
  283. package/dist/lib/launch/gemini-trust.d.ts +3 -1
  284. package/dist/lib/launch/gemini-trust.d.ts.map +1 -1
  285. package/dist/lib/launch/gemini-trust.js +10 -3
  286. package/dist/lib/launch/gemini-trust.js.map +1 -1
  287. package/dist/lib/launch/goose-state.d.ts +53 -0
  288. package/dist/lib/launch/goose-state.d.ts.map +1 -0
  289. package/dist/lib/launch/goose-state.js +137 -0
  290. package/dist/lib/launch/goose-state.js.map +1 -0
  291. package/dist/lib/launch/grok-state.d.ts +42 -0
  292. package/dist/lib/launch/grok-state.d.ts.map +1 -0
  293. package/dist/lib/launch/grok-state.js +128 -0
  294. package/dist/lib/launch/grok-state.js.map +1 -0
  295. package/dist/lib/launch/kiro-state.d.ts +22 -0
  296. package/dist/lib/launch/kiro-state.d.ts.map +1 -0
  297. package/dist/lib/launch/kiro-state.js +59 -0
  298. package/dist/lib/launch/kiro-state.js.map +1 -0
  299. package/dist/lib/launch/launch-files.d.ts.map +1 -1
  300. package/dist/lib/launch/launch-files.js +3 -2
  301. package/dist/lib/launch/launch-files.js.map +1 -1
  302. package/dist/lib/launch/launch.d.ts +51 -2
  303. package/dist/lib/launch/launch.d.ts.map +1 -1
  304. package/dist/lib/launch/launch.js +70 -6
  305. package/dist/lib/launch/launch.js.map +1 -1
  306. package/dist/lib/launch/layer-files.d.ts +12 -0
  307. package/dist/lib/launch/layer-files.d.ts.map +1 -0
  308. package/dist/lib/launch/layer-files.js +43 -0
  309. package/dist/lib/launch/layer-files.js.map +1 -0
  310. package/dist/lib/launch/mcp-child-env.d.ts +30 -0
  311. package/dist/lib/launch/mcp-child-env.d.ts.map +1 -0
  312. package/dist/lib/launch/mcp-child-env.js +151 -0
  313. package/dist/lib/launch/mcp-child-env.js.map +1 -0
  314. package/dist/lib/launch/pick-agent.d.ts.map +1 -1
  315. package/dist/lib/launch/pick-agent.js +7 -6
  316. package/dist/lib/launch/pick-agent.js.map +1 -1
  317. package/dist/lib/launch/picker-options.d.ts.map +1 -1
  318. package/dist/lib/launch/picker-options.js +7 -2
  319. package/dist/lib/launch/picker-options.js.map +1 -1
  320. package/dist/lib/launch/qwen-state.d.ts +30 -0
  321. package/dist/lib/launch/qwen-state.d.ts.map +1 -0
  322. package/dist/lib/launch/qwen-state.js +57 -0
  323. package/dist/lib/launch/qwen-state.js.map +1 -0
  324. package/dist/lib/launch/qwen-trust.d.ts +24 -0
  325. package/dist/lib/launch/qwen-trust.d.ts.map +1 -0
  326. package/dist/lib/launch/qwen-trust.js +100 -0
  327. package/dist/lib/launch/qwen-trust.js.map +1 -0
  328. package/dist/lib/launch/registry/agents/aider.d.ts +3 -0
  329. package/dist/lib/launch/registry/agents/aider.d.ts.map +1 -0
  330. package/dist/lib/launch/registry/agents/aider.js +13 -0
  331. package/dist/lib/launch/registry/agents/aider.js.map +1 -0
  332. package/dist/lib/launch/registry/agents/amp.d.ts +3 -0
  333. package/dist/lib/launch/registry/agents/amp.d.ts.map +1 -0
  334. package/dist/lib/launch/registry/agents/amp.js +14 -0
  335. package/dist/lib/launch/registry/agents/amp.js.map +1 -0
  336. package/dist/lib/launch/registry/agents/auggie.d.ts +3 -0
  337. package/dist/lib/launch/registry/agents/auggie.d.ts.map +1 -0
  338. package/dist/lib/launch/registry/agents/auggie.js +11 -0
  339. package/dist/lib/launch/registry/agents/auggie.js.map +1 -0
  340. package/dist/lib/launch/registry/agents/cline.d.ts +3 -0
  341. package/dist/lib/launch/registry/agents/cline.d.ts.map +1 -0
  342. package/dist/lib/launch/registry/agents/cline.js +19 -0
  343. package/dist/lib/launch/registry/agents/cline.js.map +1 -0
  344. package/dist/lib/launch/registry/agents/continue.d.ts +3 -0
  345. package/dist/lib/launch/registry/agents/continue.d.ts.map +1 -0
  346. package/dist/lib/launch/registry/agents/continue.js +20 -0
  347. package/dist/lib/launch/registry/agents/continue.js.map +1 -0
  348. package/dist/lib/launch/registry/agents/droid.d.ts +3 -0
  349. package/dist/lib/launch/registry/agents/droid.d.ts.map +1 -0
  350. package/dist/lib/launch/registry/agents/droid.js +13 -0
  351. package/dist/lib/launch/registry/agents/droid.js.map +1 -0
  352. package/dist/lib/launch/registry/agents/gemini-cli.js +2 -2
  353. package/dist/lib/launch/registry/agents/gemini-cli.js.map +1 -1
  354. package/dist/lib/launch/registry/agents/goose.d.ts +3 -0
  355. package/dist/lib/launch/registry/agents/goose.d.ts.map +1 -0
  356. package/dist/lib/launch/registry/agents/goose.js +20 -0
  357. package/dist/lib/launch/registry/agents/goose.js.map +1 -0
  358. package/dist/lib/launch/registry/agents/grok-build.d.ts +3 -0
  359. package/dist/lib/launch/registry/agents/grok-build.d.ts.map +1 -0
  360. package/dist/lib/launch/registry/agents/grok-build.js +14 -0
  361. package/dist/lib/launch/registry/agents/grok-build.js.map +1 -0
  362. package/dist/lib/launch/registry/agents/kiro.d.ts +3 -0
  363. package/dist/lib/launch/registry/agents/kiro.d.ts.map +1 -0
  364. package/dist/lib/launch/registry/agents/kiro.js +11 -0
  365. package/dist/lib/launch/registry/agents/kiro.js.map +1 -0
  366. package/dist/lib/launch/registry/agents/qwen.d.ts +3 -0
  367. package/dist/lib/launch/registry/agents/qwen.d.ts.map +1 -0
  368. package/dist/lib/launch/registry/agents/qwen.js +11 -0
  369. package/dist/lib/launch/registry/agents/qwen.js.map +1 -0
  370. package/dist/lib/launch/registry/index.d.ts +4 -1
  371. package/dist/lib/launch/registry/index.d.ts.map +1 -1
  372. package/dist/lib/launch/registry/index.js +15 -2
  373. package/dist/lib/launch/registry/index.js.map +1 -1
  374. package/dist/lib/launch/registry/types.d.ts +17 -1
  375. package/dist/lib/launch/registry/types.d.ts.map +1 -1
  376. package/dist/lib/launch/run-agent.d.ts +11 -0
  377. package/dist/lib/launch/run-agent.d.ts.map +1 -1
  378. package/dist/lib/launch/run-agent.js +22 -1
  379. package/dist/lib/launch/run-agent.js.map +1 -1
  380. package/dist/lib/launch/strict-entry.d.ts +22 -2
  381. package/dist/lib/launch/strict-entry.d.ts.map +1 -1
  382. package/dist/lib/launch/strict-entry.js +82 -2
  383. package/dist/lib/launch/strict-entry.js.map +1 -1
  384. package/dist/lib/launch/yaml-scan.d.ts +59 -0
  385. package/dist/lib/launch/yaml-scan.d.ts.map +1 -0
  386. package/dist/lib/launch/yaml-scan.js +275 -0
  387. package/dist/lib/launch/yaml-scan.js.map +1 -0
  388. package/dist/lib/llm-providers.d.ts +66 -0
  389. package/dist/lib/llm-providers.d.ts.map +1 -0
  390. package/dist/lib/llm-providers.js +150 -0
  391. package/dist/lib/llm-providers.js.map +1 -0
  392. package/dist/lib/local-db-epoch.d.ts +4 -0
  393. package/dist/lib/local-db-epoch.d.ts.map +1 -0
  394. package/dist/lib/local-db-epoch.js +19 -0
  395. package/dist/lib/local-db-epoch.js.map +1 -0
  396. package/dist/lib/local-db-migrate.d.ts +85 -0
  397. package/dist/lib/local-db-migrate.d.ts.map +1 -0
  398. package/dist/lib/local-db-migrate.js +484 -0
  399. package/dist/lib/local-db-migrate.js.map +1 -0
  400. package/dist/lib/local-db-v10.d.ts +28 -0
  401. package/dist/lib/local-db-v10.d.ts.map +1 -0
  402. package/dist/lib/local-db-v10.js +49 -0
  403. package/dist/lib/local-db-v10.js.map +1 -0
  404. package/dist/lib/local-db-v11.d.ts +24 -0
  405. package/dist/lib/local-db-v11.d.ts.map +1 -0
  406. package/dist/lib/local-db-v11.js +25 -0
  407. package/dist/lib/local-db-v11.js.map +1 -0
  408. package/dist/lib/local-db-v7.d.ts +30 -0
  409. package/dist/lib/local-db-v7.d.ts.map +1 -0
  410. package/dist/lib/local-db-v7.js +285 -0
  411. package/dist/lib/local-db-v7.js.map +1 -0
  412. package/dist/lib/local-db-v8.d.ts +22 -0
  413. package/dist/lib/local-db-v8.d.ts.map +1 -0
  414. package/dist/lib/local-db-v8.js +33 -0
  415. package/dist/lib/local-db-v8.js.map +1 -0
  416. package/dist/lib/local-db-v9.d.ts +10 -0
  417. package/dist/lib/local-db-v9.d.ts.map +1 -0
  418. package/dist/lib/local-db-v9.js +8 -0
  419. package/dist/lib/local-db-v9.js.map +1 -0
  420. package/dist/lib/local-db.d.ts +61 -11
  421. package/dist/lib/local-db.d.ts.map +1 -1
  422. package/dist/lib/local-db.js +186 -371
  423. package/dist/lib/local-db.js.map +1 -1
  424. package/dist/lib/local-embeddings.d.ts.map +1 -1
  425. package/dist/lib/local-embeddings.js +2 -2
  426. package/dist/lib/local-embeddings.js.map +1 -1
  427. package/dist/lib/local-gateway-client.d.ts +30 -87
  428. package/dist/lib/local-gateway-client.d.ts.map +1 -1
  429. package/dist/lib/local-gateway-client.js +182 -171
  430. package/dist/lib/local-gateway-client.js.map +1 -1
  431. package/dist/lib/local-ingest.d.ts +129 -0
  432. package/dist/lib/local-ingest.d.ts.map +1 -0
  433. package/dist/lib/local-ingest.js +81 -0
  434. package/dist/lib/local-ingest.js.map +1 -0
  435. package/dist/lib/local-link-pass.d.ts +15 -0
  436. package/dist/lib/local-link-pass.d.ts.map +1 -0
  437. package/dist/lib/local-link-pass.js +61 -0
  438. package/dist/lib/local-link-pass.js.map +1 -0
  439. package/dist/lib/local-llm.d.ts +63 -12
  440. package/dist/lib/local-llm.d.ts.map +1 -1
  441. package/dist/lib/local-llm.js +229 -104
  442. package/dist/lib/local-llm.js.map +1 -1
  443. package/dist/lib/local-mode.d.ts +4 -1
  444. package/dist/lib/local-mode.d.ts.map +1 -1
  445. package/dist/lib/local-mode.js +16 -1
  446. package/dist/lib/local-mode.js.map +1 -1
  447. package/dist/lib/local-provenance.d.ts +14 -0
  448. package/dist/lib/local-provenance.d.ts.map +1 -0
  449. package/dist/lib/local-provenance.js +14 -0
  450. package/dist/lib/local-provenance.js.map +1 -0
  451. package/dist/lib/local-thresholds.d.ts +70 -0
  452. package/dist/lib/local-thresholds.d.ts.map +1 -0
  453. package/dist/lib/local-thresholds.js +79 -0
  454. package/dist/lib/local-thresholds.js.map +1 -0
  455. package/dist/lib/mcp/mark-tool.d.ts +27 -0
  456. package/dist/lib/mcp/mark-tool.d.ts.map +1 -0
  457. package/dist/lib/mcp/mark-tool.js +103 -0
  458. package/dist/lib/mcp/mark-tool.js.map +1 -0
  459. package/dist/lib/mcp/share-tool.d.ts +46 -0
  460. package/dist/lib/mcp/share-tool.d.ts.map +1 -0
  461. package/dist/lib/mcp/share-tool.js +68 -0
  462. package/dist/lib/mcp/share-tool.js.map +1 -0
  463. package/dist/lib/mcp/tool-rules.d.ts +30 -0
  464. package/dist/lib/mcp/tool-rules.d.ts.map +1 -0
  465. package/dist/lib/mcp/tool-rules.js +84 -0
  466. package/dist/lib/mcp/tool-rules.js.map +1 -0
  467. package/dist/lib/mcp-backfill.d.ts +89 -0
  468. package/dist/lib/mcp-backfill.d.ts.map +1 -0
  469. package/dist/lib/mcp-backfill.js +194 -0
  470. package/dist/lib/mcp-backfill.js.map +1 -0
  471. package/dist/lib/mcp-scope.d.ts +90 -0
  472. package/dist/lib/mcp-scope.d.ts.map +1 -0
  473. package/dist/lib/mcp-scope.js +125 -0
  474. package/dist/lib/mcp-scope.js.map +1 -0
  475. package/dist/lib/mcp-sync.d.ts +64 -0
  476. package/dist/lib/mcp-sync.d.ts.map +1 -0
  477. package/dist/lib/mcp-sync.js +183 -0
  478. package/dist/lib/mcp-sync.js.map +1 -0
  479. package/dist/lib/personal-import.d.ts +7 -0
  480. package/dist/lib/personal-import.d.ts.map +1 -1
  481. package/dist/lib/personal-import.js +13 -1
  482. package/dist/lib/personal-import.js.map +1 -1
  483. package/dist/lib/safe-config-write.d.ts +12 -1
  484. package/dist/lib/safe-config-write.d.ts.map +1 -1
  485. package/dist/lib/safe-config-write.js +162 -9
  486. package/dist/lib/safe-config-write.js.map +1 -1
  487. package/dist/lib/scope-choices.d.ts +51 -0
  488. package/dist/lib/scope-choices.d.ts.map +1 -0
  489. package/dist/lib/scope-choices.js +193 -0
  490. package/dist/lib/scope-choices.js.map +1 -0
  491. package/dist/lib/scope-connect.d.ts +82 -0
  492. package/dist/lib/scope-connect.d.ts.map +1 -0
  493. package/dist/lib/scope-connect.js +258 -0
  494. package/dist/lib/scope-connect.js.map +1 -0
  495. package/dist/lib/scope-defaults.d.ts +3 -0
  496. package/dist/lib/scope-defaults.d.ts.map +1 -0
  497. package/dist/lib/scope-defaults.js +42 -0
  498. package/dist/lib/scope-defaults.js.map +1 -0
  499. package/dist/lib/scope-real.d.ts +223 -0
  500. package/dist/lib/scope-real.d.ts.map +1 -0
  501. package/dist/lib/scope-real.js +58 -0
  502. package/dist/lib/scope-real.js.map +1 -0
  503. package/dist/lib/scope-values.d.ts +76 -0
  504. package/dist/lib/scope-values.d.ts.map +1 -0
  505. package/dist/lib/scope-values.js +169 -0
  506. package/dist/lib/scope-values.js.map +1 -0
  507. package/dist/lib/scope.d.ts +161 -0
  508. package/dist/lib/scope.d.ts.map +1 -0
  509. package/dist/lib/scope.js +323 -0
  510. package/dist/lib/scope.js.map +1 -0
  511. package/dist/lib/share/command.d.ts +32 -0
  512. package/dist/lib/share/command.d.ts.map +1 -0
  513. package/dist/lib/share/command.js +136 -0
  514. package/dist/lib/share/command.js.map +1 -0
  515. package/dist/lib/share/ledger.d.ts +59 -0
  516. package/dist/lib/share/ledger.d.ts.map +1 -0
  517. package/dist/lib/share/ledger.js +135 -0
  518. package/dist/lib/share/ledger.js.map +1 -0
  519. package/dist/lib/share/payload.d.ts +92 -0
  520. package/dist/lib/share/payload.d.ts.map +1 -0
  521. package/dist/lib/share/payload.js +138 -0
  522. package/dist/lib/share/payload.js.map +1 -0
  523. package/dist/lib/share/pending.d.ts +48 -0
  524. package/dist/lib/share/pending.d.ts.map +1 -0
  525. package/dist/lib/share/pending.js +130 -0
  526. package/dist/lib/share/pending.js.map +1 -0
  527. package/dist/lib/share/preview.d.ts +18 -0
  528. package/dist/lib/share/preview.d.ts.map +1 -0
  529. package/dist/lib/share/preview.js +72 -0
  530. package/dist/lib/share/preview.js.map +1 -0
  531. package/dist/lib/share/run.d.ts +115 -0
  532. package/dist/lib/share/run.d.ts.map +1 -0
  533. package/dist/lib/share/run.js +261 -0
  534. package/dist/lib/share/run.js.map +1 -0
  535. package/dist/lib/share/salt.d.ts +2 -0
  536. package/dist/lib/share/salt.d.ts.map +1 -0
  537. package/dist/lib/share/salt.js +44 -0
  538. package/dist/lib/share/salt.js.map +1 -0
  539. package/dist/lib/share/secret-patterns.json +100 -0
  540. package/dist/lib/share/secret-scan.d.ts +19 -0
  541. package/dist/lib/share/secret-scan.d.ts.map +1 -0
  542. package/dist/lib/share/secret-scan.js +75 -0
  543. package/dist/lib/share/secret-scan.js.map +1 -0
  544. package/dist/lib/share/tty.d.ts +4 -0
  545. package/dist/lib/share/tty.d.ts.map +1 -0
  546. package/dist/lib/share/tty.js +57 -0
  547. package/dist/lib/share/tty.js.map +1 -0
  548. package/dist/lib/share/visible.d.ts +4 -0
  549. package/dist/lib/share/visible.d.ts.map +1 -0
  550. package/dist/lib/share/visible.js +30 -0
  551. package/dist/lib/share/visible.js.map +1 -0
  552. package/dist/lib/share/wire.d.ts +98 -0
  553. package/dist/lib/share/wire.d.ts.map +1 -0
  554. package/dist/lib/share/wire.js +43 -0
  555. package/dist/lib/share/wire.js.map +1 -0
  556. package/dist/lib/similarity/embedding-matrix.d.ts +64 -0
  557. package/dist/lib/similarity/embedding-matrix.d.ts.map +1 -0
  558. package/dist/lib/similarity/embedding-matrix.js +119 -0
  559. package/dist/lib/similarity/embedding-matrix.js.map +1 -0
  560. package/dist/lib/since-flag.d.ts +11 -0
  561. package/dist/lib/since-flag.d.ts.map +1 -0
  562. package/dist/lib/since-flag.js +24 -0
  563. package/dist/lib/since-flag.js.map +1 -0
  564. package/dist/lib/since.d.ts +59 -0
  565. package/dist/lib/since.d.ts.map +1 -0
  566. package/dist/lib/since.js +86 -0
  567. package/dist/lib/since.js.map +1 -0
  568. package/dist/lib/source-key.d.ts +13 -0
  569. package/dist/lib/source-key.d.ts.map +1 -0
  570. package/dist/lib/source-key.js +60 -0
  571. package/dist/lib/source-key.js.map +1 -0
  572. package/dist/lib/source-sync-state.d.ts +12 -0
  573. package/dist/lib/source-sync-state.d.ts.map +1 -0
  574. package/dist/lib/source-sync-state.js +43 -0
  575. package/dist/lib/source-sync-state.js.map +1 -0
  576. package/dist/lib/startup-backfill-track.d.ts +2 -0
  577. package/dist/lib/startup-backfill-track.d.ts.map +1 -0
  578. package/dist/lib/startup-backfill-track.js +6 -0
  579. package/dist/lib/startup-backfill-track.js.map +1 -0
  580. package/dist/lib/startup-env.d.ts +8 -0
  581. package/dist/lib/startup-env.d.ts.map +1 -0
  582. package/dist/lib/startup-env.js +8 -0
  583. package/dist/lib/startup-env.js.map +1 -0
  584. package/dist/lib/startup-xdg.d.ts +2 -0
  585. package/dist/lib/startup-xdg.d.ts.map +1 -0
  586. package/dist/lib/startup-xdg.js +9 -0
  587. package/dist/lib/startup-xdg.js.map +1 -0
  588. package/dist/lib/sync/after-connect.d.ts +2 -0
  589. package/dist/lib/sync/after-connect.d.ts.map +1 -0
  590. package/dist/lib/sync/after-connect.js +18 -0
  591. package/dist/lib/sync/after-connect.js.map +1 -0
  592. package/dist/lib/sync/bg-claim.d.ts +14 -0
  593. package/dist/lib/sync/bg-claim.d.ts.map +1 -0
  594. package/dist/lib/sync/bg-claim.js +97 -0
  595. package/dist/lib/sync/bg-claim.js.map +1 -0
  596. package/dist/lib/sync/blocked.d.ts +8 -0
  597. package/dist/lib/sync/blocked.d.ts.map +1 -0
  598. package/dist/lib/sync/blocked.js +44 -0
  599. package/dist/lib/sync/blocked.js.map +1 -0
  600. package/dist/lib/sync/classify.d.ts +34 -0
  601. package/dist/lib/sync/classify.d.ts.map +1 -0
  602. package/dist/lib/sync/classify.js +91 -0
  603. package/dist/lib/sync/classify.js.map +1 -0
  604. package/dist/lib/sync/drain.d.ts +16 -0
  605. package/dist/lib/sync/drain.d.ts.map +1 -0
  606. package/dist/lib/sync/drain.js +33 -0
  607. package/dist/lib/sync/drain.js.map +1 -0
  608. package/dist/lib/sync/forget.d.ts +12 -0
  609. package/dist/lib/sync/forget.d.ts.map +1 -0
  610. package/dist/lib/sync/forget.js +32 -0
  611. package/dist/lib/sync/forget.js.map +1 -0
  612. package/dist/lib/sync/launch-hook.d.ts +42 -0
  613. package/dist/lib/sync/launch-hook.d.ts.map +1 -0
  614. package/dist/lib/sync/launch-hook.js +117 -0
  615. package/dist/lib/sync/launch-hook.js.map +1 -0
  616. package/dist/lib/sync/lock.d.ts +35 -0
  617. package/dist/lib/sync/lock.d.ts.map +1 -0
  618. package/dist/lib/sync/lock.js +175 -0
  619. package/dist/lib/sync/lock.js.map +1 -0
  620. package/dist/lib/sync/purge.d.ts +38 -0
  621. package/dist/lib/sync/purge.d.ts.map +1 -0
  622. package/dist/lib/sync/purge.js +61 -0
  623. package/dist/lib/sync/purge.js.map +1 -0
  624. package/dist/lib/sync/real-env.d.ts +208 -0
  625. package/dist/lib/sync/real-env.d.ts.map +1 -0
  626. package/dist/lib/sync/real-env.js +47 -0
  627. package/dist/lib/sync/real-env.js.map +1 -0
  628. package/dist/lib/sync/relink.d.ts +14 -0
  629. package/dist/lib/sync/relink.d.ts.map +1 -0
  630. package/dist/lib/sync/relink.js +36 -0
  631. package/dist/lib/sync/relink.js.map +1 -0
  632. package/dist/lib/sync/report.d.ts +3 -0
  633. package/dist/lib/sync/report.d.ts.map +1 -0
  634. package/dist/lib/sync/report.js +54 -0
  635. package/dist/lib/sync/report.js.map +1 -0
  636. package/dist/lib/sync/run-all.d.ts +23 -0
  637. package/dist/lib/sync/run-all.d.ts.map +1 -0
  638. package/dist/lib/sync/run-all.js +30 -0
  639. package/dist/lib/sync/run-all.js.map +1 -0
  640. package/dist/lib/sync/run-source.d.ts +73 -0
  641. package/dist/lib/sync/run-source.d.ts.map +1 -0
  642. package/dist/lib/sync/run-source.js +262 -0
  643. package/dist/lib/sync/run-source.js.map +1 -0
  644. package/dist/lib/sync/safe-read.d.ts +4 -0
  645. package/dist/lib/sync/safe-read.d.ts.map +1 -0
  646. package/dist/lib/sync/safe-read.js +40 -0
  647. package/dist/lib/sync/safe-read.js.map +1 -0
  648. package/dist/lib/sync/should-background-sync.d.ts +31 -0
  649. package/dist/lib/sync/should-background-sync.d.ts.map +1 -0
  650. package/dist/lib/sync/should-background-sync.js +69 -0
  651. package/dist/lib/sync/should-background-sync.js.map +1 -0
  652. package/dist/lib/sync/source-ids.d.ts +10 -0
  653. package/dist/lib/sync/source-ids.d.ts.map +1 -0
  654. package/dist/lib/sync/source-ids.js +9 -0
  655. package/dist/lib/sync/source-ids.js.map +1 -0
  656. package/dist/lib/sync/sources.d.ts +33 -0
  657. package/dist/lib/sync/sources.d.ts.map +1 -0
  658. package/dist/lib/sync/sources.js +37 -0
  659. package/dist/lib/sync/sources.js.map +1 -0
  660. package/dist/lib/sync/spawn-background.d.ts +27 -0
  661. package/dist/lib/sync/spawn-background.d.ts.map +1 -0
  662. package/dist/lib/sync/spawn-background.js +66 -0
  663. package/dist/lib/sync/spawn-background.js.map +1 -0
  664. package/dist/lib/sync/status.d.ts +57 -0
  665. package/dist/lib/sync/status.d.ts.map +1 -0
  666. package/dist/lib/sync/status.js +166 -0
  667. package/dist/lib/sync/status.js.map +1 -0
  668. package/dist/lib/sync/summary-read.d.ts +19 -0
  669. package/dist/lib/sync/summary-read.d.ts.map +1 -0
  670. package/dist/lib/sync/summary-read.js +39 -0
  671. package/dist/lib/sync/summary-read.js.map +1 -0
  672. package/dist/lib/sync/summary.d.ts +10 -0
  673. package/dist/lib/sync/summary.d.ts.map +1 -0
  674. package/dist/lib/sync/summary.js +80 -0
  675. package/dist/lib/sync/summary.js.map +1 -0
  676. package/dist/lib/sync/sync-state.d.ts +128 -0
  677. package/dist/lib/sync/sync-state.d.ts.map +1 -0
  678. package/dist/lib/sync/sync-state.js +253 -0
  679. package/dist/lib/sync/sync-state.js.map +1 -0
  680. package/dist/lib/sync/telemetry.d.ts +20 -0
  681. package/dist/lib/sync/telemetry.d.ts.map +1 -0
  682. package/dist/lib/sync/telemetry.js +31 -0
  683. package/dist/lib/sync/telemetry.js.map +1 -0
  684. package/dist/lib/sync/threads.d.ts +48 -0
  685. package/dist/lib/sync/threads.d.ts.map +1 -0
  686. package/dist/lib/sync/threads.js +82 -0
  687. package/dist/lib/sync/threads.js.map +1 -0
  688. package/dist/lib/sync/window.d.ts +72 -0
  689. package/dist/lib/sync/window.d.ts.map +1 -0
  690. package/dist/lib/sync/window.js +112 -0
  691. package/dist/lib/sync/window.js.map +1 -0
  692. package/dist/lib/team-cta.d.ts +11 -0
  693. package/dist/lib/team-cta.d.ts.map +1 -0
  694. package/dist/lib/team-cta.js +16 -0
  695. package/dist/lib/team-cta.js.map +1 -0
  696. package/dist/lib/telemetry-ci.d.ts +2 -0
  697. package/dist/lib/telemetry-ci.d.ts.map +1 -0
  698. package/dist/lib/telemetry-ci.js +21 -0
  699. package/dist/lib/telemetry-ci.js.map +1 -0
  700. package/dist/lib/telemetry-consent.d.ts +44 -23
  701. package/dist/lib/telemetry-consent.d.ts.map +1 -1
  702. package/dist/lib/telemetry-consent.js +74 -35
  703. package/dist/lib/telemetry-consent.js.map +1 -1
  704. package/dist/lib/telemetry-env.d.ts +1 -1
  705. package/dist/lib/usage-telemetry.d.ts +87 -22
  706. package/dist/lib/usage-telemetry.d.ts.map +1 -1
  707. package/dist/lib/usage-telemetry.js +263 -74
  708. package/dist/lib/usage-telemetry.js.map +1 -1
  709. package/dist/lib/xdg.d.ts +27 -0
  710. package/dist/lib/xdg.d.ts.map +1 -0
  711. package/dist/lib/xdg.js +56 -0
  712. package/dist/lib/xdg.js.map +1 -0
  713. package/package.json +3 -2
  714. package/dist/commands/push.d.ts +0 -25
  715. package/dist/commands/push.d.ts.map +0 -1
  716. package/dist/commands/push.js +0 -98
  717. package/dist/commands/push.js.map +0 -1
@@ -0,0 +1,76 @@
1
+ import { type Judge, type Origin, type Verdict } from './judgements-db.js';
2
+ /**
3
+ * The most files one check key covers. A check over more files has NO key (it cannot be hidden by
4
+ * a file-set mark, and a mark cannot be made for it): cutting the list would let a verdict given
5
+ * for the first 500 files hide the hit on any superset of them.
6
+ *
7
+ * The key is a sha256 of the file list and is REVERSIBLE for a small set (hash the likely paths of
8
+ * the repo and compare). It stays on this machine: nothing that is shared may carry `context_key`
9
+ * or a path (the share phase reads kind, value, note, via, agent and time only).
10
+ */
11
+ export declare const MAX_CHECK_FILES = 500;
12
+ export declare const MAX_NOTE_CHARS = 500;
13
+ export declare const SUPERSEDES_CONFIDENCE = 1;
14
+ export type MarkAction = {
15
+ action: 'conflict';
16
+ a: string;
17
+ b: string;
18
+ verdict: Verdict;
19
+ } | {
20
+ action: 'check';
21
+ id: string;
22
+ verdict: Verdict;
23
+ files: string[];
24
+ } | {
25
+ action: 'replaces';
26
+ newer: string;
27
+ older: string;
28
+ } | {
29
+ action: 'not-a-decision';
30
+ id: string;
31
+ } | {
32
+ action: 'note';
33
+ id: string;
34
+ text: string;
35
+ };
36
+ /** `code` picks the exit status: a usage problem is 2, a decision that is not in the graph is 1. `refused`: nothing was stored, by rule. */
37
+ export declare class MarkError extends Error {
38
+ readonly code: 'usage' | 'unknown-id' | 'refused';
39
+ constructor(code: 'usage' | 'unknown-id' | 'refused', message: string);
40
+ }
41
+ /** Repo-relative, forward-slashed, no leading `./`, sorted, de-duplicated. Order and duplicates never change the key. Never cut. */
42
+ export declare function normaliseFiles(files: readonly string[]): string[];
43
+ /** sha256 of the sorted paths joined by newline. No files, more than 500, or an unnameable path has NO key. */
44
+ export declare function contextKeyFor(files: readonly string[]): string | null;
45
+ /**
46
+ * The files a git-style diff touches. Per `diff --git` block: the `+++` path, else the `---` path (a
47
+ * deletion), else `rename to`, else a symmetric header. The `+++`/`---` lines count only before the
48
+ * first hunk, because inside a hunk an added line `++ b/x` reads as `+++ b/x`.
49
+ */
50
+ export declare function filesFromDiff(diff: string): string[];
51
+ export declare const USAGE: string;
52
+ /** Positional arguments to an action. `files` come from `--files`, or the caller's last check. */
53
+ export declare function parseMarkArgs(args: string[], files: string[] | undefined): MarkAction;
54
+ export interface ApplyContext {
55
+ dbPath: string;
56
+ judge: Judge;
57
+ origin: Origin;
58
+ now?: Date;
59
+ }
60
+ export interface MarkOutcome {
61
+ kind: 'conflict_verdict' | 'check_verdict' | 'supersede' | 'not_a_decision' | 'note';
62
+ /** True when this person's earlier answer on the same key was replaced. */
63
+ replaced: boolean;
64
+ undone?: boolean;
65
+ /** Plain words for the person or agent. Says the mark itself is not shared (a command-name usage ping may still go out when telemetry is on). */
66
+ text: string;
67
+ }
68
+ /** The command only a PERSON may run for the acts an agent is refused. */
69
+ export declare function personCommandFor(m: MarkAction): string;
70
+ /** Notes are stored and printed in a terminal and in an agent's context: no control characters, no line breaks, short. */
71
+ export declare function checkNote(text: string): string;
72
+ export declare function applyJudgement(ctx: ApplyContext, m: MarkAction, opts?: {
73
+ undo?: boolean;
74
+ force?: boolean;
75
+ }): MarkOutcome;
76
+ //# sourceMappingURL=mark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mark.d.ts","sourceRoot":"","sources":["../../../src/lib/curation/mark.ts"],"names":[],"mappings":"AAWA,OAAO,EACoD,KAAK,KAAK,EAAuB,KAAK,MAAM,EACnE,KAAK,OAAO,EAC/C,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,cAAc,MAAM,CAAC;AAClC,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,MAAM,MAAM,UAAU,GAClB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC9D;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAClE;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjD,4IAA4I;AAC5I,qBAAa,SAAU,SAAQ,KAAK;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,GAAG,SAAS;gBAAxC,IAAI,EAAE,OAAO,GAAG,YAAY,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM;CAI/E;AAED,oIAAoI;AACpI,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAKjE;AAED,+GAA+G;AAC/G,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAKrE;AAuCD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA4BpD;AAMD,eAAO,MAAM,KAAK,QAMJ,CAAC;AAEf,kGAAkG;AAClG,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,UAAU,CAwBrF;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,kBAAkB,GAAG,eAAe,GAAG,WAAW,GAAG,gBAAgB,GAAG,MAAM,CAAC;IACrF,2EAA2E;IAC3E,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iJAAiJ;IACjJ,IAAI,EAAE,MAAM,CAAC;CACd;AA2BD,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAEtD;AAYD,0HAA0H;AAC1H,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM9C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,WAAW,CAkB5H"}
@@ -0,0 +1,359 @@
1
+ /**
2
+ * LM: `align mark` and `align_mark` share this module, so the two surfaces cannot diverge
3
+ * (LM.3): both parse into a `MarkAction` and both call `applyJudgement`. The only things that
4
+ * differ between a person's mark and an agent's are `via` and `agent_id`.
5
+ *
6
+ * Nothing here talks to a network, and nothing is classified by a model: a mark is a person's
7
+ * answer, stored as given.
8
+ */
9
+ import { createHash } from 'node:crypto';
10
+ import { createLocalDb } from '../local-db.js';
11
+ import { hasUnsafeChars, quote } from './text.js';
12
+ import { agentWouldOverrideHuman, existingTitles, HumanMarkError, removeJudgement, upsertJudgement, } from './judgements-db.js';
13
+ /**
14
+ * The most files one check key covers. A check over more files has NO key (it cannot be hidden by
15
+ * a file-set mark, and a mark cannot be made for it): cutting the list would let a verdict given
16
+ * for the first 500 files hide the hit on any superset of them.
17
+ *
18
+ * The key is a sha256 of the file list and is REVERSIBLE for a small set (hash the likely paths of
19
+ * the repo and compare). It stays on this machine: nothing that is shared may carry `context_key`
20
+ * or a path (the share phase reads kind, value, note, via, agent and time only).
21
+ */
22
+ export const MAX_CHECK_FILES = 500;
23
+ export const MAX_NOTE_CHARS = 500;
24
+ export const SUPERSEDES_CONFIDENCE = 1;
25
+ /** `code` picks the exit status: a usage problem is 2, a decision that is not in the graph is 1. `refused`: nothing was stored, by rule. */
26
+ export class MarkError extends Error {
27
+ code;
28
+ constructor(code, message) {
29
+ super(message);
30
+ this.code = code;
31
+ this.name = 'MarkError';
32
+ }
33
+ }
34
+ /** Repo-relative, forward-slashed, no leading `./`, sorted, de-duplicated. Order and duplicates never change the key. Never cut. */
35
+ export function normaliseFiles(files) {
36
+ const clean = files
37
+ .map((f) => f.trim().replace(/\\/g, '/').replace(/^\.\//, ''))
38
+ .filter((f) => f !== '');
39
+ return [...new Set(clean)].sort((x, y) => (x < y ? -1 : x > y ? 1 : 0));
40
+ }
41
+ /** sha256 of the sorted paths joined by newline. No files, more than 500, or an unnameable path has NO key. */
42
+ export function contextKeyFor(files) {
43
+ const list = normaliseFiles(files);
44
+ // A path with a control or format character cannot be named safely, so it is not a file set at all: nothing is hidden for it.
45
+ if (list.length === 0 || list.length > MAX_CHECK_FILES || list.some(hasUnsafeChars))
46
+ return null;
47
+ return createHash('sha256').update(list.join('\n')).digest('hex');
48
+ }
49
+ /** A C-style quoted path as git writes one: `\"` `\\` `\t` `\n` and `\NNN` octal UTF-8 bytes. */
50
+ function unquoteGitPath(raw) {
51
+ if (!(raw.startsWith('"') && raw.endsWith('"') && raw.length >= 2))
52
+ return null;
53
+ const bytes = [];
54
+ const body = raw.slice(1, -1);
55
+ const esc = { n: 10, t: 9, r: 13, '"': 34, '\\': 92, a: 7, b: 8, f: 12, v: 11 };
56
+ for (let i = 0; i < body.length; i++) {
57
+ const c = body[i];
58
+ if (c !== '\\') {
59
+ bytes.push(...Buffer.from(c, 'utf8'));
60
+ continue;
61
+ }
62
+ const oct = /^[0-7]{3}/.exec(body.slice(i + 1));
63
+ if (oct) {
64
+ bytes.push(parseInt(oct[0], 8));
65
+ i += 3;
66
+ continue;
67
+ }
68
+ const e = esc[body[i + 1]];
69
+ if (e === undefined)
70
+ return null;
71
+ bytes.push(e);
72
+ i += 1;
73
+ }
74
+ return Buffer.from(bytes).toString('utf8');
75
+ }
76
+ /** `a/<path>` or `b/<path>` (quoted or not) to the path; null for /dev/null or an unreadable name. */
77
+ function sidePath(token, side) {
78
+ const t = token.replace(/\t.*$/, '');
79
+ const unq = unquoteGitPath(t) ?? t;
80
+ if (unq === '/dev/null')
81
+ return null;
82
+ return unq.startsWith(`${side}/`) ? unq.slice(2) : null;
83
+ }
84
+ /** The path of a `diff --git a/P b/P` header when both sides are the same path (so it is unambiguous even with spaces). */
85
+ function symmetricHeaderPath(rest) {
86
+ const q = /^("a\/(?:[^"\\]|\\.)*") ("b\/(?:[^"\\]|\\.)*")$/.exec(rest);
87
+ if (q)
88
+ return sidePath(q[2], 'b');
89
+ const n = rest.length - 5;
90
+ if (n <= 0 || n % 2 !== 0)
91
+ return null;
92
+ const p = n / 2;
93
+ return rest.startsWith('a/') && rest.slice(2, 2 + p) === rest.slice(p + 5) && rest.slice(2 + p, 5 + p) === ' b/' ? rest.slice(2, 2 + p) : null;
94
+ }
95
+ /**
96
+ * The files a git-style diff touches. Per `diff --git` block: the `+++` path, else the `---` path (a
97
+ * deletion), else `rename to`, else a symmetric header. The `+++`/`---` lines count only before the
98
+ * first hunk, because inside a hunk an added line `++ b/x` reads as `+++ b/x`.
99
+ */
100
+ export function filesFromDiff(diff) {
101
+ const out = [];
102
+ let open = false;
103
+ let inHunk = false;
104
+ let header = '';
105
+ let plus = null;
106
+ let minus = null;
107
+ let renamed = null;
108
+ const flush = () => {
109
+ if (!open)
110
+ return;
111
+ const f = plus ?? renamed ?? minus ?? symmetricHeaderPath(header);
112
+ if (f)
113
+ out.push(f);
114
+ };
115
+ for (const line of diff.split('\n')) {
116
+ if (line.startsWith('diff --git ')) {
117
+ flush();
118
+ open = true;
119
+ inHunk = false;
120
+ header = line.slice('diff --git '.length);
121
+ plus = null;
122
+ minus = null;
123
+ renamed = null;
124
+ continue;
125
+ }
126
+ if (!open)
127
+ continue;
128
+ if (line.startsWith('@@')) {
129
+ inHunk = true;
130
+ continue;
131
+ }
132
+ if (inHunk)
133
+ continue;
134
+ if (line.startsWith('+++ '))
135
+ plus = sidePath(line.slice(4), 'b');
136
+ else if (line.startsWith('--- '))
137
+ minus = sidePath(line.slice(4), 'a');
138
+ else if (line.startsWith('rename to '))
139
+ renamed = unquoteGitPath(line.slice(10)) ?? line.slice(10);
140
+ }
141
+ flush();
142
+ return normaliseFiles(out);
143
+ }
144
+ const VERDICTS = ['real', 'false'];
145
+ function isVerdict(v) {
146
+ return v !== undefined && VERDICTS.includes(v);
147
+ }
148
+ export const USAGE = [
149
+ 'align mark conflict <a> <b> real|false',
150
+ 'align mark check <a> real|false [--files <f>...]',
151
+ 'align mark <a> replaces <b>',
152
+ 'align mark <a> not-a-decision [--undo]',
153
+ 'align mark <a> note "<text>"',
154
+ ].join('\n ');
155
+ /** Positional arguments to an action. `files` come from `--files`, or the caller's last check. */
156
+ export function parseMarkArgs(args, files) {
157
+ const bad = (why) => { throw new MarkError('usage', `${why}\n Usage:\n ${USAGE}`); };
158
+ const [first, second, third, fourth, ...rest] = args;
159
+ if (first === 'conflict') {
160
+ if (!second || !third || !isVerdict(fourth) || rest.length)
161
+ bad('A conflict mark needs two decision ids and real or false.');
162
+ return { action: 'conflict', a: second, b: third, verdict: fourth };
163
+ }
164
+ if (first === 'check') {
165
+ if (!second || !isVerdict(third) || fourth !== undefined)
166
+ bad('A check mark needs one decision id and real or false.');
167
+ return { action: 'check', id: second, verdict: third, files: files ?? [] };
168
+ }
169
+ if (first && second === 'replaces') {
170
+ if (!third || fourth !== undefined)
171
+ bad('`replaces` needs the id of the decision being replaced.');
172
+ return { action: 'replaces', newer: first, older: third };
173
+ }
174
+ if (first && second === 'not-a-decision') {
175
+ if (third !== undefined)
176
+ bad('`not-a-decision` takes no further argument.');
177
+ return { action: 'not-a-decision', id: first };
178
+ }
179
+ if (first && second === 'note') {
180
+ if (!third || fourth !== undefined)
181
+ bad('`note` needs the note text as one quoted argument.');
182
+ return { action: 'note', id: first, text: third };
183
+ }
184
+ return bad('Not a mark I recognise.');
185
+ }
186
+ const LOCAL_ONLY = 'Recorded on this machine only; the mark itself is not shared.';
187
+ function requireDecisions(dbPath, ids) {
188
+ const titles = existingTitles(dbPath, ids);
189
+ for (const id of ids) {
190
+ if (!titles.has(id))
191
+ throw new MarkError('unknown-id', `No decision ${quote(id)} in your local graph. \`align decisions list\` shows what is there.`);
192
+ }
193
+ return titles;
194
+ }
195
+ function same(a, b, what) {
196
+ if (a === b)
197
+ throw new MarkError('usage', `${what} must name two different decisions.`);
198
+ }
199
+ /** The command a person runs to change a mark themselves. */
200
+ function commandFor(m) {
201
+ switch (m.action) {
202
+ case 'conflict': return `align mark conflict ${m.a} ${m.b} real|false`;
203
+ case 'check': return `align mark check ${m.id} real|false --files <file>...`;
204
+ case 'replaces': return `align mark ${m.newer} replaces ${m.older} [--undo]`;
205
+ case 'not-a-decision': return `align mark ${m.id} not-a-decision --undo`;
206
+ case 'note': return `align mark ${m.id} note "<text>"`;
207
+ }
208
+ }
209
+ /** The command only a PERSON may run for the acts an agent is refused. */
210
+ export function personCommandFor(m) {
211
+ return m.action === 'replaces' ? `align mark ${m.newer} replaces ${m.older}` : m.action === 'not-a-decision' ? `align mark ${m.id} not-a-decision` : commandFor(m);
212
+ }
213
+ function writeOf(m) {
214
+ switch (m.action) {
215
+ case 'conflict': {
216
+ const [lo, hi] = m.a < m.b ? [m.a, m.b] : [m.b, m.a];
217
+ return { kind: 'conflict_verdict', decisionId: lo, counterpartId: hi };
218
+ }
219
+ case 'check': {
220
+ const k = contextKeyFor(m.files);
221
+ return k === null ? null : { kind: 'check_verdict', decisionId: m.id, contextKey: k };
222
+ }
223
+ case 'replaces': return { kind: 'supersede', decisionId: m.newer, counterpartId: m.older };
224
+ case 'not-a-decision': return { kind: 'not_a_decision', decisionId: m.id };
225
+ case 'note': return null;
226
+ }
227
+ }
228
+ /** Notes are stored and printed in a terminal and in an agent's context: no control characters, no line breaks, short. */
229
+ export function checkNote(text) {
230
+ const t = text.trim();
231
+ if (t === '')
232
+ throw new MarkError('usage', 'A note needs some text.');
233
+ if (hasUnsafeChars(t))
234
+ throw new MarkError('usage', 'A note cannot hold control characters or invisible ones: line breaks, tabs, escapes, zero-width and direction marks, Unicode tags, or the joiners emoji sequences use (a single emoji is fine). Write it on one line of ordinary text.');
235
+ if ([...t].length > MAX_NOTE_CHARS)
236
+ throw new MarkError('usage', `A note is at most ${MAX_NOTE_CHARS} characters; this one is ${[...t].length}.`);
237
+ return t;
238
+ }
239
+ export function applyJudgement(ctx, m, opts = {}) {
240
+ const refuse = () => { throw new MarkError('refused', `You marked this yourself; run \`${commandFor(m)}\` to change it. Nothing was stored.`); };
241
+ // An agent may record a verdict or a note. Hiding a decision, or declaring it replaced, is the
242
+ // person's: the label on an agent's mark is a name it reports about itself, not proof of who is typing.
243
+ if (ctx.origin.via === 'mcp' && (m.action === 'replaces' || m.action === 'not-a-decision')) {
244
+ throw new MarkError('refused', `Only the person can do that, not an agent. Ask the user to run: ${personCommandFor(m)}`);
245
+ }
246
+ // Before any side effect (the supersedes link below is written ahead of the row).
247
+ if (ctx.origin.via === 'mcp' && !opts.undo) {
248
+ const w = writeOf(m);
249
+ if (w && agentWouldOverrideHuman(ctx.dbPath, w, ctx.judge))
250
+ refuse();
251
+ }
252
+ try {
253
+ return applyChecked(ctx, m, opts);
254
+ }
255
+ catch (e) {
256
+ if (e instanceof HumanMarkError)
257
+ return refuse();
258
+ throw e;
259
+ }
260
+ }
261
+ function applyChecked(ctx, m, opts) {
262
+ const { dbPath, judge, origin, now } = ctx;
263
+ const undo = opts.undo === true;
264
+ switch (m.action) {
265
+ case 'conflict': {
266
+ same(m.a, m.b, 'A conflict mark');
267
+ requireDecisions(dbPath, [m.a, m.b]);
268
+ const [lo, hi] = m.a < m.b ? [m.a, m.b] : [m.b, m.a];
269
+ const key = { kind: 'conflict_verdict', decisionId: lo, counterpartId: hi };
270
+ if (undo) {
271
+ const n = removeJudgement(dbPath, key, judge).length;
272
+ return { kind: key.kind, replaced: false, undone: n > 0, text: n ? 'Removed your verdict on that pair.' : 'You had no verdict on that pair.' };
273
+ }
274
+ const { replaced } = upsertJudgement(dbPath, { ...key, value: m.verdict }, judge, origin, now);
275
+ return { kind: key.kind, replaced, text: `Marked the pair a ${m.verdict === 'false' ? 'false alarm' : 'real conflict'}${replaced ? ' (replacing your earlier answer)' : ''}. ${LOCAL_ONLY}` };
276
+ }
277
+ case 'check': {
278
+ const titles = requireDecisions(dbPath, [m.id]);
279
+ const files = normaliseFiles(m.files);
280
+ if (files.some(hasUnsafeChars))
281
+ throw new MarkError('usage', 'A file path with control characters or invisible ones cannot be named in a mark, so no verdict can be recorded for that set.');
282
+ const contextKey = contextKeyFor(files);
283
+ if (contextKey === null) {
284
+ throw new MarkError('usage', files.length > MAX_CHECK_FILES
285
+ ? `That check covered ${files.length} files. A verdict is kept for at most ${MAX_CHECK_FILES}, so it cannot be recorded (and nothing is ever hidden for a check that large).`
286
+ : 'A check verdict is about one set of files, and none was given. Pass the files the check covered (the check result lists them).');
287
+ }
288
+ const key = { kind: 'check_verdict', decisionId: m.id, contextKey };
289
+ if (undo) {
290
+ const n = removeJudgement(dbPath, key, judge).length;
291
+ return { kind: key.kind, replaced: false, undone: n > 0, text: n ? 'Removed your verdict for that set of files.' : 'You had no verdict for that set of files.' };
292
+ }
293
+ const { replaced } = upsertJudgement(dbPath, { ...key, value: m.verdict }, judge, origin, now);
294
+ const covered = `${files.length} file${files.length === 1 ? '' : 's'}: ${files.slice(0, 10).map(quote).join(', ')}${files.length > 10 ? `, and ${files.length - 10} more` : ''}`;
295
+ return {
296
+ kind: key.kind, replaced,
297
+ text: m.verdict === 'false'
298
+ ? `Marked ${quote(titles.get(m.id) ?? '')} a false alarm for exactly this set of ${covered}. A later check touching exactly these files will hide it; any other files still show it. ${LOCAL_ONLY}`
299
+ : `Marked ${quote(titles.get(m.id) ?? '')} a real conflict for exactly this set of ${covered}${replaced ? ' (replacing your earlier answer)' : ''}. ${LOCAL_ONLY}`,
300
+ };
301
+ }
302
+ case 'replaces': {
303
+ same(m.newer, m.older, '`replaces`');
304
+ const titles = requireDecisions(dbPath, [m.newer, m.older]);
305
+ const key = { kind: 'supersede', decisionId: m.newer, counterpartId: m.older };
306
+ if (undo) {
307
+ const removed = removeJudgement(dbPath, key, judge);
308
+ if (removed.length === 0)
309
+ return { kind: key.kind, replaced: false, undone: false, text: 'You had no replacement mark for that pair.' };
310
+ const local = createLocalDb(dbPath);
311
+ let links = 0;
312
+ try {
313
+ for (const id of removed)
314
+ links += local.deleteMarkLink(id);
315
+ }
316
+ finally {
317
+ local.close();
318
+ }
319
+ return {
320
+ kind: key.kind, replaced: false, undone: true,
321
+ text: links ? 'Removed your replacement mark and the supersedes link it created.' : 'Removed your replacement mark. A supersedes link between them that you did not create (a classifier made it) stays.',
322
+ };
323
+ }
324
+ const local = createLocalDb(dbPath);
325
+ try {
326
+ const older = local.getDecisionById(m.older);
327
+ if (!opts.force && older && (older.ratifiedAt || older.confirmedAt)) {
328
+ throw new MarkError('refused', `${quote(titles.get(m.older) ?? '')} is ${older.ratifiedAt ? 'ratified' : 'confirmed'}. Replacing a decision a person stood behind needs --force, at a terminal: align mark ${m.newer} replaces ${m.older} --force`);
329
+ }
330
+ // The judgement is written FIRST so the link can carry its id: `--undo` then deletes exactly this link.
331
+ const { replaced, id } = upsertJudgement(dbPath, key, judge, origin, now);
332
+ local.insertLink({ id: `mark:${id}`, sourceId: m.newer, targetId: m.older, relation: 'supersedes', confidence: SUPERSEDES_CONFIDENCE });
333
+ return { kind: key.kind, replaced, text: `Recorded that ${quote(titles.get(m.newer) ?? '')} replaces ${quote(titles.get(m.older) ?? '')}. A check that cites the older one now names the newer as current; \`--undo\` takes it back. ${LOCAL_ONLY}` };
334
+ }
335
+ finally {
336
+ local.close();
337
+ }
338
+ }
339
+ case 'not-a-decision': {
340
+ const titles = requireDecisions(dbPath, [m.id]);
341
+ const key = { kind: 'not_a_decision', decisionId: m.id };
342
+ if (undo) {
343
+ const n = removeJudgement(dbPath, key, judge).length;
344
+ return { kind: key.kind, replaced: false, undone: n > 0, text: n ? `${quote(titles.get(m.id) ?? '')} is retrieved again.` : 'You had not marked that one.' };
345
+ }
346
+ const { replaced } = upsertJudgement(dbPath, key, judge, origin, now);
347
+ return { kind: key.kind, replaced, text: `${quote(titles.get(m.id) ?? '')} is out of ask and check results (every check says how many marks hide something). \`align decisions list --all\` still shows it. ${LOCAL_ONLY}` };
348
+ }
349
+ case 'note': {
350
+ const titles = requireDecisions(dbPath, [m.id]);
351
+ if (undo)
352
+ throw new MarkError('usage', 'Notes append and cannot be undone by id. `align mark --list` shows them.');
353
+ const text = checkNote(m.text);
354
+ upsertJudgement(dbPath, { kind: 'note', decisionId: m.id, note: text }, judge, origin, now);
355
+ return { kind: 'note', replaced: false, text: `Added a note to ${quote(titles.get(m.id) ?? '')}. ${LOCAL_ONLY}` };
356
+ }
357
+ }
358
+ }
359
+ //# sourceMappingURL=mark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mark.js","sourceRoot":"","sources":["../../../src/lib/curation/mark.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function hasUnsafeChars(s: string): boolean;
2
+ /** A JSON string literal with every unsafe character written out (\uXXXX, or \u{X} above the BMP), so one value is one visible, inert token. */
3
+ export declare function quote(s: string): string;
4
+ /** An agent id is a registry id or 'unknown', so it prints as is; anything else in the column is printed escaped. */
5
+ export declare function agentLabel(id: string | null): string;
6
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/lib/curation/text.ts"],"names":[],"mappings":"AAoBA,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,gJAAgJ;AAChJ,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAMvC;AAED,qHAAqH;AACrH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAEpD"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * LM: text from the graph or from a mark reaches a terminal and an agent's context. A decision
3
+ * title comes from a Slack message or a PR, and a note comes from whoever wrote it, so neither is
4
+ * printed raw: a control byte can move the cursor, hide a word (ESC [8m) or forge a whole row, and
5
+ * an invisible format character (a Unicode tag, a zero-width space, a direction mark) can carry
6
+ * text nobody sees.
7
+ *
8
+ * "Unsafe" is every control (Cc), format (Cf), private-use (Co) and surrogate (Cs) character plus
9
+ * the line and paragraph separators. That includes the zero-width joiner and variation selector 16
10
+ * that emoji SEQUENCES use: a family or profession emoji is refused in a note. A single-codepoint
11
+ * emoji is fine. Allowing the joiners only inside valid sequences would need an emoji grammar, and a
12
+ * refusal that says why is cheaper than a parser that can be fooled.
13
+ */
14
+ // Beyond the categories: variation selectors and the combining grapheme joiner (Mn), and the Hangul fillers, all invisible.
15
+ // The combining and variation characters in the class are the point: they are what must be refused.
16
+ // eslint-disable-next-line no-misleading-character-class
17
+ const UNSAFE = /[\p{Cc}\p{Cf}\p{Co}\p{Cs}\p{Zl}\p{Zp}\u034f\u115f\u1160\u3164\uffa0\ufe00-\ufe0f\u{e0100}-\u{e01ef}]/u;
18
+ // eslint-disable-next-line no-misleading-character-class
19
+ const UNSAFE_ALL = new RegExp(UNSAFE.source, 'gu');
20
+ export function hasUnsafeChars(s) {
21
+ return UNSAFE.test(s);
22
+ }
23
+ /** A JSON string literal with every unsafe character written out (\uXXXX, or \u{X} above the BMP), so one value is one visible, inert token. */
24
+ export function quote(s) {
25
+ return JSON.stringify(s).replace(UNSAFE_ALL, (c) => {
26
+ const n = c.codePointAt(0) ?? 0;
27
+ const hex = n.toString(16).padStart(4, '0');
28
+ return n > 0xffff ? `\\u{${hex}}` : `\\u${hex}`;
29
+ });
30
+ }
31
+ /** An agent id is a registry id or 'unknown', so it prints as is; anything else in the column is printed escaped. */
32
+ export function agentLabel(id) {
33
+ return id !== null && /^[a-z0-9-]{1,40}$/.test(id) ? id : quote(id ?? '');
34
+ }
35
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/lib/curation/text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,4HAA4H;AAC5H,oGAAoG;AACpG,yDAAyD;AACzD,MAAM,MAAM,GAAG,uGAAuG,CAAC;AACvH,yDAAyD;AACzD,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAEnD,MAAM,UAAU,cAAc,CAAC,CAAS;IACtC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,gJAAgJ;AAChJ,MAAM,UAAU,KAAK,CAAC,CAAS;IAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;QACjD,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,qHAAqH;AACrH,MAAM,UAAU,UAAU,CAAC,EAAiB;IAC1C,OAAO,EAAE,KAAK,IAAI,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5E,CAAC"}
@@ -14,6 +14,10 @@ import type { PersonalImportItem } from '../personal-import.js';
14
14
  * reason, printed verbatim, so `detail` is written for a person. Owned here, by the
15
15
  * producer; the renderer consumes it. */
16
16
  export interface CaptureSkip {
17
+ /** The SDK's kind (page_cap, time_budget, vendor_cap, shape, pending, error, auth), when the
18
+ * fetcher reported one. The renderer branches on it for one thing only: which skip stopped
19
+ * a windowed read. Any other kind is printed verbatim like the rest (the union grows). */
20
+ kind?: string;
17
21
  /** How many source objects this covers. */
18
22
  count: number;
19
23
  /** One line printed after the count. */
@@ -29,7 +33,45 @@ export interface CaptureFetchReport {
29
33
  * 40-commit repo is printed every run and stops being read. */
30
34
  requested?: number;
31
35
  skips: CaptureSkip[];
36
+ /** L3: true when the read reached the end of its window with nothing cut. Absent from a
37
+ * fetcher that cannot say (git, docs, and an SDK older than 0.10). */
38
+ complete?: boolean;
39
+ /** L3: the oldest `updated_at` the read saw, so an incomplete line can name the date it
40
+ * actually reached. Absent when no item carried one; never filled in from the clock. */
41
+ oldestReached?: string;
42
+ /** L5: the latest `updated_at` the read saw, the SDK's own watermark candidate. Absent when no item carried one;
43
+ * never filled in from the clock. */
44
+ highWater?: string;
45
+ /** L3: 'team' when the token's whole visible scope was read, 'yours' for the caller's own items. */
46
+ scope?: 'yours' | 'team';
47
+ /** L3: items returned whole but waiting for their discussion (GitHub's items-first pass). */
48
+ discussionPending?: number;
49
+ /** L3: items fetched items-first that COULD have had discussion (the denominator for the above). */
50
+ discussionTotal?: number;
51
+ /** L3: one line saying whose items a team-scope read covered ("everyone's PRs and issues in o/r"). */
52
+ scopeNote?: string;
53
+ /** L4: a team read that --json could not tell the person about; the disclosure is still owed and shows at the next foreground run. */
54
+ disclosurePending?: boolean;
32
55
  }
56
+ /** L3: what every windowed fetch is given on top of its limit (see fetchWindow in since.ts). */
57
+ export type WindowedOpts = {
58
+ /** ISO-8601 UTC lower bound. Absent means no bound: only the ceiling applies. */
59
+ since?: string;
60
+ /** Wall-clock budget for the whole read; running out is a `time_budget` skip. */
61
+ timeBudgetMs?: number;
62
+ /** L5: ISO-8601 UTC upper bound (exclusive). Set by a sync finishing the older part of a window a ceiling cut. */
63
+ until?: string;
64
+ /** L5, Slack only: stored threads whose replies since `since` should be re-read (their items come back `partial`). */
65
+ hotThreads?: Array<{
66
+ channel: string;
67
+ ts: string;
68
+ }>;
69
+ /** L4: a team scope's option for the fetchers that take one (Jira projects, Linear teams, GitLab projectId, Confluence spaces). */
70
+ projects?: string[];
71
+ teams?: string[];
72
+ projectId?: string;
73
+ spaces?: string[];
74
+ };
33
75
  export interface CaptureFetchResult {
34
76
  items: PersonalImportItem[];
35
77
  report: CaptureFetchReport;
@@ -37,8 +79,8 @@ export interface CaptureFetchResult {
37
79
  /**
38
80
  * The slice of a connector-core fetcher this wrapper needs, declared structurally so it
39
81
  * compiles against 0.5.0 (no `fetchWithReport`) and consumes 0.6.0's report the moment
40
- * the installed package has one. `kind` and `platform` on the SDK report are accepted and
41
- * dropped: the CLI prints the detail and branches on nothing else.
82
+ * the installed package has one. `kind` on each skip and the report's `complete`, `oldestReached` and
83
+ * `scope` are carried through (L3); `platform` is dropped.
42
84
  */
43
85
  export interface ReportingFetcher<O> {
44
86
  fetch(opts: O): Promise<PersonalImportItem[]>;
@@ -48,9 +90,14 @@ export interface ReportingFetcher<O> {
48
90
  scanned: number;
49
91
  requested?: number;
50
92
  skips: ReadonlyArray<{
93
+ kind?: string;
51
94
  count: number;
52
95
  detail: string;
53
96
  }>;
97
+ complete?: boolean;
98
+ oldestReached?: string;
99
+ highWater?: string;
100
+ scope?: 'yours' | 'team';
54
101
  };
55
102
  }>;
56
103
  }
@@ -1 +1 @@
1
- {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../src/lib/fetchers/capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE;;0CAE0C;AAC1C,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC;;8FAE0F;IAC1F,OAAO,EAAE,MAAM,CAAC;IAChB;;oEAEgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC9C,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC;QACjC,KAAK,EAAE,kBAAkB,EAAE,CAAC;QAC5B,MAAM,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,aAAa,CAAC;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAC;KAC1G,CAAC,CAAC;CACJ;AAED,wBAAsB,iBAAiB,CAAC,CAAC,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAClE,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAyB7B"}
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../src/lib/fetchers/capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE;;0CAE0C;AAC1C,MAAM,WAAW,WAAW;IAC1B;;+FAE2F;IAC3F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC;;8FAE0F;IAC1F,OAAO,EAAE,MAAM,CAAC;IAChB;;oEAEgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB;2EACuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;6FACyF;IACzF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;0CACsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oGAAoG;IACpG,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,6FAA6F;IAC7F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oGAAoG;IACpG,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sGAAsG;IACtG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sIAAsI;IACtI,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,gGAAgG;AAChG,MAAM,MAAM,YAAY,GAAG;IACzB,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kHAAkH;IAClH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sHAAsH;IACtH,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,mIAAmI;IACnI,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC9C,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC;QACjC,KAAK,EAAE,kBAAkB,EAAE,CAAC;QAC5B,MAAM,EAAE;YACN,OAAO,EAAE,MAAM,CAAC;YAChB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,KAAK,EAAE,aAAa,CAAC;gBAAE,IAAI,CAAC,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;YACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;SAC1B,CAAC;KACH,CAAC,CAAC;CACJ;AAED,wBAAsB,iBAAiB,CAAC,CAAC,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAClE,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CA+B7B"}
@@ -2,12 +2,18 @@ export async function withCaptureReport(opts, fetcher) {
2
2
  if (typeof fetcher.fetchWithReport === 'function') {
3
3
  // One read, never two: the SDK's `fetch` is defined as `(await fetchWithReport()).items`.
4
4
  const { items, report } = await fetcher.fetchWithReport(opts);
5
+ const pending = items.filter((i) => i.detail_pending === true).length;
5
6
  return {
6
7
  items,
7
8
  report: {
8
9
  scanned: report.scanned,
9
10
  ...(report.requested !== undefined ? { requested: report.requested } : {}),
10
- skips: report.skips.map((s) => ({ count: s.count, detail: s.detail })),
11
+ skips: report.skips.map((s) => ({ ...(s.kind !== undefined ? { kind: s.kind } : {}), count: s.count, detail: s.detail })),
12
+ ...(report.complete !== undefined ? { complete: report.complete } : {}),
13
+ ...(report.oldestReached !== undefined ? { oldestReached: report.oldestReached } : {}),
14
+ ...(report.highWater !== undefined ? { highWater: report.highWater } : {}),
15
+ ...(report.scope !== undefined ? { scope: report.scope } : {}),
16
+ ...(pending > 0 ? { discussionPending: pending } : {}),
11
17
  },
12
18
  };
13
19
  }