@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
@@ -1,6 +1,8 @@
1
1
  import { ALIGN_HOSTED_GATEWAY_URL } from './config.js';
2
2
  import { telemetryDisabledByEnv } from './telemetry-env.js';
3
- import { inHookContext } from './hook-context.js';
3
+ import { inHookContext, markHookContext } from './hook-context.js';
4
+ import { inCi } from './telemetry-ci.js';
5
+ import { maybeShowTelemetryNotice, storeEnvOptOut } from './telemetry-consent.js';
4
6
  import pkg from '../../package.json' with { type: 'json' };
5
7
  /**
6
8
  * ALI-403: emit one `cli.command` event per invocation so cloud CLI activation and weekly
@@ -8,24 +10,45 @@ import pkg from '../../package.json' with { type: 'json' };
8
10
  *
9
11
  * Cloud mode is opt-out: a cloud user is already on an authenticated connection to our
10
12
  * gateway, so an event about a call already being made is not a new phone-home. Local-embedded
11
- * mode has two tiers (ALI-954, superseding the ALI-618 "nothing by default" for local mode):
12
- * - Two anonymous BEACONS send by default: `cli.funnel.install` (once, on the first ever run,
13
- * see recordInstallBeacon) and `cli.funnel.setup_completed`. They exist so the funnel has a
14
- * denominator - opt-in usage alone cannot tell a 10% consent rate from 90%.
15
- * - Everything else (`cli.command`, the other funnel stages) sends only with the stored
16
- * consent (`config.ts`'s `getTelemetryConsent`, set by the one-time prompt at the end of
17
- * setup, default No). `--local` users have no account and no tenant, so there is nothing
18
- * to authenticate an event against - the consent is the gate.
13
+ * mode is opt-out too since C6, disclosed by a one-time notice (telemetry-consent.ts) that cli.ts
14
+ * prints to stderr before the first send - nothing local sends until it has printed
15
+ * (localTierAllows). An install that answered No to the pre-C6 setup question ('declined')
16
+ * keeps that answer for usage; the two ALI-954 beacons (install, setup_completed) still send
17
+ * for it, as they did. `--local` users have no account and no tenant, so there is nothing to
18
+ * authenticate an event against - the notice, and the stored decision, are the gate.
19
19
  * Both modes send only a command name, never arguments or content. docs/telemetry.md lists
20
20
  * every event and field, and telemetry-docs-parity.test.ts keeps that page true.
21
21
  *
22
- * `ALIGN_TELEMETRY=0` and `DO_NOT_TRACK=1` (telemetry-env.ts) turn everything off, both tiers,
23
- * in both modes, over a granted local consent included (ALI-618 D3b - one consent model, not
24
- * two). `align telemetry off` stores 'off', which does the same thing without an env var.
22
+ * `ALIGN_TELEMETRY=0` and `DO_NOT_TRACK=1` (telemetry-env.ts), and running in CI
23
+ * (telemetry-ci.ts, C6), turn everything off, both tiers, in both modes, over a granted local
24
+ * consent included (ALI-618 D3b - one consent model, not two). `align telemetry off` stores 'off', which does the same thing without an env var.
25
25
  */
26
26
  export const TELEMETRY_TIMEOUT_MS = 2_000;
27
27
  function telemetryOptedOut() {
28
- return telemetryDisabledByEnv() !== undefined;
28
+ return telemetryDisabledByEnv() !== undefined || inCi();
29
+ }
30
+ /**
31
+ * THE one predicate for "a stored answer forbids sending anything", read by every send path:
32
+ * local usage, local stages and beacons (localTierAllows), the install beacon's first-run
33
+ * consumption, cloud cli.command and cloud funnel stages, and `align telemetry status`.
34
+ * 'off' is `align telemetry off`; 'declined' is a No to the pre-C6 setup question. The privacy
35
+ * page promises "if you turned telemetry off earlier, it stays off", with no mode attached, so
36
+ * both stop everything in both modes (review of e794c6e, then the coordinator's call that a
37
+ * declined cloud user is off too).
38
+ */
39
+ export function storedAnswerForbidsSending(consent) {
40
+ return consent === 'off' || consent === 'declined';
41
+ }
42
+ /** The predicate above, read from the store. A store that cannot be read forbids - the direction
43
+ * that sends nothing. */
44
+ async function storedAnswerForbidsSendingNow() {
45
+ try {
46
+ const { createConfigStore } = await import('./config.js');
47
+ return storedAnswerForbidsSending(createConfigStore().getTelemetryConsent());
48
+ }
49
+ catch {
50
+ return true;
51
+ }
29
52
  }
30
53
  /**
31
54
  * POST with a hard timeout, and never throw - telemetry must never fail or delay a command. A
@@ -34,7 +57,7 @@ function telemetryOptedOut() {
34
57
  * waiting even if the transport ignores the signal. Shared by the cloud and local-embedded send
35
58
  * paths below, which were two copies of this exact race before extraction (fresh-context review).
36
59
  */
37
- async function postWithTimeout(url, init) {
60
+ async function postWithTimeout(url, init, capMs = TELEMETRY_TIMEOUT_MS) {
38
61
  const controller = new AbortController();
39
62
  let giveUp = () => { };
40
63
  const abandoned = new Promise((resolve) => {
@@ -43,9 +66,9 @@ async function postWithTimeout(url, init) {
43
66
  const timer = setTimeout(() => {
44
67
  controller.abort();
45
68
  giveUp();
46
- }, TELEMETRY_TIMEOUT_MS);
69
+ }, capMs);
47
70
  try {
48
- await Promise.race([fetch(url, { ...init, signal: controller.signal }), abandoned]);
71
+ await Promise.race([fetch(url, { ...init, redirect: 'error', signal: controller.signal }), abandoned]);
49
72
  }
50
73
  catch {
51
74
  // Telemetry must never fail a command - see "resolves when the gateway rejects" and
@@ -56,14 +79,42 @@ async function postWithTimeout(url, init) {
56
79
  }
57
80
  }
58
81
  /**
59
- * ALI-618 D3b: what `align telemetry status` prints. Takes the consent decision as a plain
60
- * argument rather than reading `config.ts` itself, so the two consent MODELS stay visibly
61
- * distinct in one function a reader can hold in their head - cloud's opt-out default and
62
- * local's stored decision (ALI-954: three values, and the two default-on beacons named where
63
- * usage is off but they are not) - with the env switches as the thing that overrides both,
64
- * checked first.
82
+ * The hard cap on the one send that is awaited: the first-run install beacon. Once per install,
83
+ * so ordinary runs never pay it.
84
+ */
85
+ export const INSTALL_BEACON_CAP_MS = 800;
86
+ async function postDelivered(url, init, capMs) {
87
+ const controller = new AbortController();
88
+ let timer;
89
+ const capped = new Promise((resolve) => {
90
+ timer = setTimeout(() => {
91
+ // Resolve first: the abort below rejects the fetch, and that must not read as 'failed'.
92
+ resolve('timeout');
93
+ controller.abort();
94
+ }, capMs);
95
+ });
96
+ try {
97
+ return await Promise.race([
98
+ fetch(url, { ...init, redirect: 'error', signal: controller.signal }).then(() => 'delivered', () => 'failed'),
99
+ capped,
100
+ ]);
101
+ }
102
+ catch {
103
+ return 'failed';
104
+ }
105
+ finally {
106
+ clearTimeout(timer);
107
+ }
108
+ }
109
+ /**
110
+ * ALI-618 D3b: what `align telemetry status` prints. Takes the consent decision and whether the
111
+ * C6 notice has printed as plain arguments rather than reading `config.ts` itself, so the
112
+ * model stays visible in one function a reader can hold in their head - cloud's opt-out
113
+ * default, and local's stored decision or the notice (ALI-954: the two default-on beacons named
114
+ * where usage is off but they are not) - with the env switches and CI overriding both, checked
115
+ * first.
65
116
  */
66
- export function getTelemetryStatus(env, localConsent) {
117
+ export function getTelemetryStatus(env, localConsent, noticeShown = false, offByEnv) {
67
118
  const envSwitch = telemetryDisabledByEnv();
68
119
  if (envSwitch === 'DO_NOT_TRACK') {
69
120
  return { enabled: false, reason: 'off: DO_NOT_TRACK is set - nothing is sent' };
@@ -71,27 +122,42 @@ export function getTelemetryStatus(env, localConsent) {
71
122
  if (envSwitch === 'ALIGN_TELEMETRY') {
72
123
  return { enabled: false, reason: 'off: ALIGN_TELEMETRY is set to an opt-out value - nothing is sent' };
73
124
  }
125
+ if (inCi()) {
126
+ return { enabled: false, reason: 'off: running in CI - nothing is sent' };
127
+ }
128
+ if (localConsent === 'off' && offByEnv !== undefined) {
129
+ return { enabled: false, reason: `off (${offByEnv.via} was set on ${offByEnv.at.slice(0, 10)}); turn it back on with: align telemetry on` };
130
+ }
131
+ if (env.mode !== 'local-embedded' && storedAnswerForbidsSending(localConsent)) {
132
+ const why = localConsent === 'declined' ? 'you declined when asked' : 'you ran `align telemetry off`';
133
+ return { enabled: false, reason: `off: ${why} - nothing is sent, cloud events included` };
134
+ }
74
135
  if (env.mode === 'local-embedded') {
75
- // ALI-954: "off" here is about usage. The two beacons still send unless the user ran
76
- // `align telemetry off` (stored 'off') - and the line has to say so, or "off" would be
77
- // read as "nothing is sent" over a beacon that still is.
78
- const beacons = ' - the two anonymous counts (install, setup completed) still send; `align telemetry off` stops those too';
79
136
  if (localConsent === 'granted') {
80
- return { enabled: true, reason: 'on: local mode, you opted in when asked' };
137
+ return { enabled: true, reason: 'on: local mode, you opted in' };
81
138
  }
82
139
  if (localConsent === 'declined') {
83
- return { enabled: false, reason: `off: local mode, you declined when asked${beacons}` };
140
+ // A No to the old setup question is off, beacons included (review of e794c6e).
141
+ return { enabled: false, reason: 'off: local mode, you declined when asked - nothing is sent' };
84
142
  }
85
143
  if (localConsent === 'off') {
86
144
  return { enabled: false, reason: 'off: local mode, you ran `align telemetry off` - nothing is sent' };
87
145
  }
88
- return { enabled: false, reason: `off: local mode, you have not been asked yet${beacons}` };
146
+ // C6: opt-out, disclosed by the one-time notice. Nothing sends before it has printed.
147
+ if (noticeShown) {
148
+ return { enabled: true, reason: 'on: local mode, opt-out (the one-time notice explained it) - `align telemetry off` stops it' };
149
+ }
150
+ return { enabled: false, reason: 'off: local mode, nothing has been sent yet - a one-time notice prints before the first send' };
89
151
  }
90
152
  return { enabled: true, reason: 'on: cloud mode, opt-out default' };
91
153
  }
92
- export async function recordCommandUsage(env, command) {
154
+ export async function recordCommandUsage(env, command, opts = {}) {
93
155
  if (telemetryOptedOut())
94
156
  return;
157
+ // C6: an agent hook runs on the agent's clock, many times a session, with nobody watching -
158
+ // a usage ping from there counts an editing loop, not a person running a command.
159
+ if (inHookContext())
160
+ return;
95
161
  // `align local ...` is the explicitly-offline path. Its caller may still hold a cloud token
96
162
  // (the hook may resolve an env other than the one the command used), so the token check below
97
163
  // is not enough on its own.
@@ -103,11 +169,13 @@ export async function recordCommandUsage(env, command) {
103
169
  // can be in scope without cloud consent: ALIGN_TOKEN exported into the shell, or a
104
170
  // logged-in default env resolved by the caller.
105
171
  if (env.mode === 'local-embedded') {
106
- await recordAnonymousCommandUsage(command);
172
+ await recordAnonymousCommandUsage(command, opts.capMs);
107
173
  return;
108
174
  }
109
175
  if (!env.authToken || !env.tenantId)
110
176
  return;
177
+ if (await storedAnswerForbidsSendingNow())
178
+ return;
111
179
  await postWithTimeout(`${env.gatewayUrl}/telemetry/ingest`, {
112
180
  method: 'POST',
113
181
  headers: {
@@ -121,14 +189,14 @@ export async function recordCommandUsage(env, command) {
121
189
  platform: 'cli',
122
190
  properties: { command },
123
191
  }),
124
- });
192
+ }, opts.capMs);
125
193
  }
126
194
  /**
127
195
  * ALI-618: the local-embedded sibling of the cloud send above. No Authorization, no tenant -
128
- * there is neither. Gated on a machine-local consent decision instead of a token, and the
129
- * payload carries exactly three fields (install id, command name, CLI version) so there is
130
- * nothing here for the gateway's strict schema to reject and nothing beyond what the consent
131
- * prompt promises. See usage-telemetry-anonymous.test.ts.
196
+ * there is neither. Gated on the C6 notice and the machine-local decision instead of a token,
197
+ * and the payload carries exactly three fields (install id, command name, CLI version) so there
198
+ * is nothing here for the gateway's strict schema to reject and nothing beyond what the notice
199
+ * promises. See usage-telemetry-anonymous.test.ts.
132
200
  *
133
201
  * Targets `ALIGN_HOSTED_GATEWAY_URL`, never a `gatewayUrl` off the env - local-embedded mode
134
202
  * makes no HTTP call for its own work (an embedded local DB client, see gateway-client.ts), so
@@ -137,12 +205,12 @@ export async function recordCommandUsage(env, command) {
137
205
  * `http://localhost:8080`, silently discarded, for every user who had not separately stood up
138
206
  * a local dev gateway.
139
207
  */
140
- async function recordAnonymousCommandUsage(command) {
208
+ async function recordAnonymousCommandUsage(command, capMs) {
141
209
  const { createConfigStore } = await import('./config.js');
142
210
  const config = createConfigStore();
143
- if (config.getTelemetryConsent() !== 'granted')
211
+ if (!localTierAllows(config.getTelemetryConsent(), 'command', noticeShownOn(config)))
144
212
  return;
145
- await postAnonymous({ installId: config.getInstallId(), command: commandPathOf(command), cliVersion: pkg.version });
213
+ await postAnonymous({ installId: config.getInstallId(), command: commandPathOf(command), cliVersion: pkg.version }, capMs);
146
214
  }
147
215
  /**
148
216
  * ALI-795: the command groups whose second word is a SUBCOMMAND, mirroring the gateway's
@@ -150,7 +218,9 @@ async function recordAnonymousCommandUsage(command) {
150
218
  * agree or pings silently 400. A query-taking command (ask, search, capture...) sends its
151
219
  * top-level word only, so a user's one-word query can never ride the command field.
152
220
  */
153
- const SUBCOMMAND_PARENTS = new Set(['context', 'decisions', 'env', 'import', 'links', 'spaces', 'telemetry']);
221
+ export const SUBCOMMAND_PARENTS = new Set([
222
+ 'connect', 'context', 'decisions', 'env', 'import', 'links', 'spaces', 'telemetry',
223
+ ]);
154
224
  /** "import git" stays whole (activation-by-source is the point); "ask <anything>" and
155
225
  * every non-group command collapse to the top-level word. */
156
226
  function commandPathOf(command) {
@@ -203,7 +273,49 @@ export const FUNNEL_STAGES = [
203
273
  ...SESSION_IMPORT_STAGES,
204
274
  // C1: bare `align` handed the terminal to a coding agent. Carries the agent name only.
205
275
  'agent_launched',
276
+ // L7: one per source per completed sync. Carries a count and four closed enums (SyncMeasurement).
277
+ 'source_synced',
278
+ ];
279
+ /**
280
+ * L7: what `source_synced` reports. A count and four closed enums, nothing else - never a repo, a
281
+ * host, a space, a project, a title or an id. Each list is a mirror of the gateway's (align-stack
282
+ * telemetryAnonymousRoutes.ts: SOURCE_VALUES, SYNC_OUTCOME_VALUES, SCOPE_VALUES,
283
+ * SYNC_TRIGGER_VALUES), and `telemetry-server-parity.test.ts` checks them against that file.
284
+ * A value outside a list is a silent 400 there, so it is dropped here instead of sent.
285
+ *
286
+ * `SYNC_TRIGGERS` has no `mcp` although the plan wanted one: the gateway's list does not (it is
287
+ * `connect`, `background`, `manual`), and a sync an agent starts over MCP runs as the background
288
+ * child, so it reports `background`.
289
+ */
290
+ export const SYNC_SOURCES = [
291
+ 'git', 'docs', 'github', 'jira', 'confluence', 'slack', 'teams', 'zoom', 'gitlab', 'linear', 'notion',
206
292
  ];
293
+ export const SYNC_OUTCOMES = ['ok', 'partial', 'needs_reauth', 'error'];
294
+ export const SYNC_SCOPES = ['yours', 'team'];
295
+ export const SYNC_TRIGGERS = ['connect', 'background', 'manual'];
296
+ /** The gateway's `MAX_FUNNEL_COUNT`: above it the whole ping is a 400. */
297
+ export const MAX_FUNNEL_COUNT = 100_000;
298
+ /**
299
+ * The `source_synced` body fields, built from the fixed whitelist and never by stripping a richer
300
+ * object. Undefined when anything is missing or outside its closed list: the caller then sends
301
+ * nothing, because the gateway requires all five and answers a partial body with a silent 400.
302
+ */
303
+ function syncFields(m) {
304
+ if (m === null || typeof m !== 'object')
305
+ return undefined;
306
+ const r = m;
307
+ const count = r['count'];
308
+ if (typeof count !== 'number' || !Number.isInteger(count) || count < 0)
309
+ return undefined;
310
+ const pick = (list, v) => list.find((x) => x === v);
311
+ const source = pick(SYNC_SOURCES, r['source']);
312
+ const outcome = pick(SYNC_OUTCOMES, r['outcome']);
313
+ const scope = pick(SYNC_SCOPES, r['scope']);
314
+ const trigger = pick(SYNC_TRIGGERS, r['trigger']);
315
+ if (!source || !outcome || !scope || !trigger)
316
+ return undefined;
317
+ return { count: Math.min(count, MAX_FUNNEL_COUNT), source, outcome, scope, trigger };
318
+ }
207
319
  /**
208
320
  * ALI-954: the two stages that send BY DEFAULT in local mode, with no consent - the
209
321
  * denominator of the funnel. `install` goes through recordInstallBeacon; `setup_completed`
@@ -231,7 +343,7 @@ export const BEACON_STAGES = ['install', 'setup_completed'];
231
343
  * offers setup_started at several checkpoints because local-mode consent arrives
232
344
  * mid-wizard, and this is how it knows which offer landed (lib/setup-funnel.ts).
233
345
  */
234
- export async function recordFunnelStage(env, stage, command, measurement) {
346
+ export async function recordFunnelStage(env, stage, command, measurement, opts = {}) {
235
347
  // The whole body is guarded: telemetry must never fail or delay a command (the same
236
348
  // invariant postWithTimeout enforces for the network half, extended to the config
237
349
  // half). The concrete case: an emitter call site inside a command's try block plus a
@@ -247,6 +359,12 @@ export async function recordFunnelStage(env, stage, command, measurement) {
247
359
  // rather than one per call site.
248
360
  if (inHookContext())
249
361
  return false;
362
+ // L7: the sync measurement is built and checked before anything else, so a ping the gateway
363
+ // would 400 is never counted as sent. Local only: the endpoint that knows this stage is the
364
+ // anonymous one, and a sync reads the local graph.
365
+ const syncMeasured = stage === 'source_synced' ? syncFields(measurement) : undefined;
366
+ if (stage === 'source_synced' && (syncMeasured === undefined || env.mode !== 'local-embedded'))
367
+ return false;
250
368
  const { createConfigStore } = await import('./config.js');
251
369
  const config = createConfigStore();
252
370
  if (stage === 'first_useful_decision' && config.wasFunnelStageRecorded(stage))
@@ -259,8 +377,8 @@ export async function recordFunnelStage(env, stage, command, measurement) {
259
377
  // re-sending forever.
260
378
  const isLocal = env.mode === 'local-embedded';
261
379
  const canSend = isLocal
262
- ? localTierAllows(config.getTelemetryConsent(), stage)
263
- : Boolean(env.authToken && env.tenantId);
380
+ ? localTierAllows(config.getTelemetryConsent(), stage, noticeShownOn(config))
381
+ : Boolean(env.authToken && env.tenantId) && !storedAnswerForbidsSending(config.getTelemetryConsent());
264
382
  if (!canSend)
265
383
  return false;
266
384
  if (stage === 'first_useful_decision')
@@ -273,11 +391,12 @@ export async function recordFunnelStage(env, stage, command, measurement) {
273
391
  // stage, so a future call site passing a measurement alongside, say, `mcp_wired` would
274
392
  // 400 the whole ping - and the catch below swallows that, so the stage would go silently
275
393
  // missing rather than fail loudly. Dropping the two fields keeps the stage itself.
276
- const measured = measurement && 'count' in measurement && SESSION_IMPORT_STAGES.includes(stage)
277
- ? { count: measurement.count, agent: measurement.agent }
278
- : measurement && stage === 'agent_launched'
279
- ? { agent: measurement.agent }
280
- : {};
394
+ const measured = syncMeasured ??
395
+ (measurement && 'agent' in measurement && 'count' in measurement && SESSION_IMPORT_STAGES.includes(stage)
396
+ ? { count: measurement.count, agent: measurement.agent }
397
+ : measurement && 'agent' in measurement && stage === 'agent_launched'
398
+ ? { agent: measurement.agent }
399
+ : {});
281
400
  if (isLocal) {
282
401
  await postAnonymous({
283
402
  installId: config.getInstallId(),
@@ -287,7 +406,7 @@ export async function recordFunnelStage(env, stage, command, measurement) {
287
406
  // Spread rather than set: the gateway's schema is `.strict()`, and an explicit
288
407
  // undefined key is still a key.
289
408
  ...measured,
290
- });
409
+ }, opts.capMs);
291
410
  return true;
292
411
  }
293
412
  await postWithTimeout(`${env.gatewayUrl}/telemetry/ingest`, {
@@ -312,28 +431,34 @@ export async function recordFunnelStage(env, stage, command, measurement) {
312
431
  }
313
432
  }
314
433
  /**
315
- * ALI-954: whether a local-mode stage may send, given the stored decision. A beacon stage
316
- * sends unless the user ran `align telemetry off` (stored 'off'); every other stage needs
317
- * a granted consent. A prompt-declined consent ('declined') is a decision about USAGE and
318
- * leaves the beacons on - that split is the ticket's decision, and docs/telemetry.md says
319
- * it in the user's words.
434
+ * Whether a local-mode event may send, given the stored decision and whether the one-time
435
+ * notice has printed (C6). Local mode is opt-out since C6, and the notice is the disclosure:
436
+ * - stored 'off' (`align telemetry off`) stops everything, and so does 'declined' (a No to the
437
+ * pre-C6 setup question): the privacy page promises "if you turned telemetry off earlier, it
438
+ * stays off", so a stored No stops the beacons too (review of e794c6e);
439
+ * - otherwise everything sends with a granted consent (`align telemetry on`) or after the notice.
440
+ * Beacons and usage now share one rule; BEACON_STAGES remains the documented set.
441
+ * Every caller has already returned under an env switch, in CI and (for usage) in a hook.
320
442
  */
321
- function localTierAllows(consent, stage) {
322
- if (BEACON_STAGES.includes(stage))
323
- return consent !== 'off';
324
- return consent === 'granted';
443
+ function localTierAllows(consent, stage, noticeShown) {
444
+ if (storedAnswerForbidsSending(consent))
445
+ return false;
446
+ return consent === 'granted' || noticeShown;
447
+ }
448
+ function noticeShownOn(config) {
449
+ return config.getTelemetryNoticeShownAt() !== undefined;
325
450
  }
326
451
  /**
327
452
  * The anonymous payload, the one place its shape is spelled. Targets ALIGN_HOSTED_GATEWAY_URL,
328
453
  * never a `gatewayUrl` off the env - see recordAnonymousCommandUsage for why.
329
454
  */
330
- async function postAnonymous(payload) {
455
+ async function postAnonymous(payload, capMs) {
331
456
  const target = process.env['ALIGN_GATEWAY_URL'] || ALIGN_HOSTED_GATEWAY_URL;
332
457
  await postWithTimeout(`${target}/telemetry/anonymous`, {
333
458
  method: 'POST',
334
459
  headers: { 'Content-Type': 'application/json' },
335
460
  body: JSON.stringify(payload),
336
- });
461
+ }, capMs);
337
462
  }
338
463
  /**
339
464
  * ALI-954: the install beacon - the funnel's denominator. Sent from the preAction hook in
@@ -361,6 +486,13 @@ export async function recordInstallBeacon(commandPath) {
361
486
  try {
362
487
  if (commandPath === 'telemetry' || commandPath.startsWith('telemetry '))
363
488
  return false;
489
+ // C6: a CI job is not an install, so it must not consume the first run; nor do the runs
490
+ // nobody is reading (an agent's `mcp` server, a hook, a run inside a launched agent) - the
491
+ // notice is skipped there, so the beacon would have nothing to follow.
492
+ if (inCi() || inHookContext() || commandPath === 'mcp' || commandPath.startsWith('mcp '))
493
+ return false;
494
+ if (process.env['ALIGN_WRAPPED'])
495
+ return false;
364
496
  const { createConfigStore } = await import('./config.js');
365
497
  const { resolveEnv } = await import('./resolve-env.js');
366
498
  const config = createConfigStore();
@@ -369,19 +501,46 @@ export async function recordInstallBeacon(commandPath) {
369
501
  const env = config.getEnvironment(resolveEnv(undefined, { preferLocalEmbedded: true }));
370
502
  if (env.authToken)
371
503
  return false;
372
- config.markFunnelStageRecorded('install');
373
- if (telemetryOptedOut())
504
+ // A decision that says "never" consumes the first run, so the beacon is never sent later
505
+ // either: an env switch, `align telemetry off`, or a stored No.
506
+ const consent = config.getTelemetryConsent();
507
+ if (telemetryOptedOut() || storedAnswerForbidsSending(consent)) {
508
+ config.markFunnelStageRecorded('install');
509
+ return false;
510
+ }
511
+ // Not told yet (no notice: no terminal, or the notice failed): the first run is NOT consumed,
512
+ // so the beacon goes out after the first run that does show the notice.
513
+ if (!localTierAllows(consent, 'install', noticeShownOn(config)))
374
514
  return false;
375
- if (!localTierAllows(config.getTelemetryConsent(), 'install'))
515
+ // Marked BEFORE the send, as a check-and-set on the store, so two first runs started together
516
+ // mostly send one beacon. Not atomic across processes: the store is a JSON file with no lock,
517
+ // so two processes that both read it before either writes can still both send. The cost is
518
+ // one duplicate install row, in the overcount direction, and only on a racing first run.
519
+ if (!config.claimFunnelStage('install'))
376
520
  return false;
377
- await postAnonymous({
378
- installId: config.getInstallId(),
379
- command: 'align',
380
- cliVersion: pkg.version,
381
- stage: 'install',
382
- os: process.platform,
383
- });
384
- return true;
521
+ // Awaited, unlike every other send: the stage is once-only and already claimed, so a request
522
+ // that never left (the command exited first, `align status` does) would lose this install
523
+ // from the funnel forever. Capped at INSTALL_BEACON_CAP_MS.
524
+ // - A failed connection (nothing reached a gateway) releases the claim; the next run retries,
525
+ // and a refusal costs no wait.
526
+ // - A timeout keeps the claim: the request was written and may have arrived, so that is the
527
+ // one attempt. Releasing it made every run behind a silent gateway pay the cap again and
528
+ // send again. The cost is an install lost if that one request really was dropped.
529
+ const target = process.env['ALIGN_GATEWAY_URL'] || ALIGN_HOSTED_GATEWAY_URL;
530
+ const outcome = await postDelivered(`${target}/telemetry/anonymous`, {
531
+ method: 'POST',
532
+ headers: { 'Content-Type': 'application/json' },
533
+ body: JSON.stringify({
534
+ installId: config.getInstallId(),
535
+ command: 'align',
536
+ cliVersion: pkg.version,
537
+ stage: 'install',
538
+ os: process.platform,
539
+ }),
540
+ }, INSTALL_BEACON_CAP_MS);
541
+ if (outcome === 'failed')
542
+ config.releaseFunnelStage('install');
543
+ return outcome === 'delivered';
385
544
  }
386
545
  catch {
387
546
  // Telemetry must never fail or delay a command; the funnel loses one row.
@@ -450,12 +609,42 @@ export function envFlagOf(cmd) {
450
609
  * a local session. It costs one activation count on a once-per-machine command, in the direction
451
610
  * that cannot leak.
452
611
  */
453
- export async function recordInvocationUsage(envFlag, command) {
612
+ export async function recordInvocationUsage(envFlag, command, opts = {}) {
613
+ // L7: the detached `align sync --background` child is a machine running a refresh, not a person
614
+ // running a command (its per-source `source_synced` pings are the measurement). Decided from the
615
+ // command's own flag, the way hook invocations are, so one place says so.
616
+ if (opts.background === true)
617
+ return;
454
618
  const { createConfigStore } = await import('./config.js');
455
619
  const { resolveEnv } = await import('./resolve-env.js');
456
620
  const config = createConfigStore();
457
621
  if (command === 'setup' && config.getEnvironment('local').mode === 'local-embedded')
458
622
  return;
459
- await recordCommandUsage(config.getEnvironment(resolveEnv(envFlag, { preferLocalEmbedded: true })), command);
623
+ await recordCommandUsage(config.getEnvironment(resolveEnv(envFlag, { preferLocalEmbedded: true })), command, opts.capMs === undefined ? {} : { capMs: opts.capMs });
624
+ }
625
+ /**
626
+ * C6: what runs before every command (cli.ts's preAction): the one-time notice, then the
627
+ * install beacon, both awaited. On every run but the first, the beacon returns after a config
628
+ * read and sends nothing. On the first run it is the one send that is awaited, capped at
629
+ * INSTALL_BEACON_CAP_MS (see recordInstallBeacon), so the command cannot exit before it is
630
+ * delivered. Every other event stays fire-and-forget. `hook` is the invocation's own flags (`check --hook` /
631
+ * `--advisory`), marked here because the command's action, which also marks it, runs later.
632
+ */
633
+ export async function beginInvocationTelemetry(commandPath, opts) {
634
+ if (opts.hook)
635
+ markHookContext();
636
+ try {
637
+ const { createConfigStore } = await import('./config.js');
638
+ const { resolveEnv } = await import('./resolve-env.js');
639
+ const config = createConfigStore();
640
+ // Before the notice and before anything can send: an env opt-out becomes a stored one.
641
+ storeEnvOptOut(config);
642
+ const env = config.getEnvironment(resolveEnv(undefined, { preferLocalEmbedded: true }));
643
+ maybeShowTelemetryNotice(config, { command: commandPath, hook: opts.hook, cloudSignedIn: Boolean(env.authToken) });
644
+ }
645
+ catch {
646
+ // Telemetry must never fail a command. No notice means nothing that waits on it sends.
647
+ }
648
+ return recordInstallBeacon(commandPath);
460
649
  }
461
650
  //# sourceMappingURL=usage-telemetry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usage-telemetry.js","sourceRoot":"","sources":["../../src/lib/usage-telemetry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usage-telemetry.js","sourceRoot":"","sources":["../../src/lib/usage-telemetry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * The XDG base-directory variables. The XDG spec says a relative value is invalid and must be
3
+ * ignored. It matters beyond correctness: an agent that loads a repo's `.env` (cn, Cline) hands
4
+ * its MCP children whatever that file says, and XDG_CONFIG_HOME=./evilcfg once made
5
+ * `align mcp --env local` copy the user's local.db into the repo. One helper, used everywhere.
6
+ */
7
+ export declare const XDG_VARS: readonly ["XDG_CONFIG_HOME", "XDG_DATA_HOME", "XDG_CACHE_HOME", "XDG_STATE_HOME"];
8
+ export type XdgVar = (typeof XDG_VARS)[number];
9
+ /**
10
+ * A path under /proc or /dev/fd names another process's view of the filesystem (`/proc/self/cwd`
11
+ * is whatever directory the reader runs in): never a real config home.
12
+ */
13
+ export declare function procLike(p: string): boolean;
14
+ /**
15
+ * The real path of `p`: its nearest existing ancestor resolved through symlinks, plus the rest.
16
+ * A path that does not exist yet still resolves through the links above it.
17
+ */
18
+ export declare function realPathOf(p: string): string;
19
+ /** The variable's value only when it is an absolute path outside /proc and /dev/fd; otherwise undefined. */
20
+ export declare function absoluteXdg(env: Record<string, string | undefined>, name: XdgVar | string): string | undefined;
21
+ /**
22
+ * Delete every relative XDG_* (and any under /proc or /dev/fd) from `env` (process.env at startup, before anything reads it:
23
+ * `conf` and env-paths read these themselves). An empty value is left alone, as it already
24
+ * means unset. Returns the names removed.
25
+ */
26
+ export declare function dropRelativeXdg(env: Record<string, string | undefined>): string[];
27
+ //# sourceMappingURL=xdg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xdg.d.ts","sourceRoot":"","sources":["../../src/lib/xdg.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,mFAAoF,CAAC;AAC1G,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAE3C;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAW5C;AAED,4GAA4G;AAC5G,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAG9G;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,EAAE,CAUjF"}