@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,258 @@
1
+ /**
2
+ * L4: choosing a scope while a source is being connected (`align connect --source <x>`, `align setup`).
3
+ *
4
+ * `decideConnectScope` runs BEFORE the fetch and returns what to fetch under; `fetchUnderScope` is the one call the connect loop makes:
5
+ * decide, fetch, and only then write the choice. A fetch that fails writes nothing, and the token is still saved by the caller only
6
+ * after the fetch succeeded, so a first connect has no saved token yet: every check here uses the IN-FLIGHT fields.
7
+ *
8
+ * What it decides, in order (a flag always wins, and a flag is checked against what the token can see before anything is fetched):
9
+ * - GitHub and GitLab: the folder's remote decides, with no question (resolveScope). A repo the token cannot see is yours, said so.
10
+ * - Jira and Linear: a picker on a terminal (cited keys preselected); otherwise the stored choice, else the cited keys the token can
11
+ * see, else yours with how to widen. A list that cannot be read never blocks: yours, and the reason is said.
12
+ * - Confluence: spaces, picked, flagged or stored. With none, refused with the command (there is no "yours" to fall back to).
13
+ * - Zoom: only yours, and it says why. Slack, Notion and Teams already read all the token can see: nothing to say.
14
+ *
15
+ * The team-scope disclosure is printed here, before the fetch, once per source. `quiet` (`--json`) prints nothing and does not mark
16
+ * it told, so the next foreground run still tells the person.
17
+ */
18
+ import { askWithTimeout } from './confirm-timeout.js';
19
+ import * as p from '@clack/prompts';
20
+ import { STARTED_BY_AGENT_ENV } from './backfill-state.js';
21
+ import { chooseScope, commitScope, CONFLUENCE_NEEDS_SPACES, markTold, resolveScope } from './scope.js';
22
+ import { citedProjectKeys } from './scope-defaults.js';
23
+ import { realScopeDeps } from './scope-real.js';
24
+ import { listConfluenceSpaces, listJiraProjects, listLinearTeams, ScopeLookupError } from './scope-choices.js';
25
+ import { describeScopeKey, disclosureText, fetchOptsFor, FIXED_SCOPES, SCOPED_SOURCES, scopeKeyOf } from './scope-values.js';
26
+ import { CAPTURE_SOURCES } from './capture-sources.js';
27
+ const labelOf = (source) => CAPTURE_SOURCES[source]?.label ?? source;
28
+ const isScoped = (source) => SCOPED_SOURCES.includes(source);
29
+ const VALUE_FLAG = { github: 'repo', jira: 'projects', linear: 'teams', gitlab: 'gitlabProject', confluence: 'spaces' };
30
+ const FLAG_NAME = { repo: '--repo', projects: '--projects', teams: '--teams', gitlabProject: '--gitlab-project', spaces: '--spaces' };
31
+ const FLAG_FOR = { repo: 'GitHub', projects: 'Jira', teams: 'Linear', gitlabProject: 'GitLab', spaces: 'Confluence' };
32
+ const WHAT = { jira: 'Jira projects', linear: 'Linear teams', confluence: 'Confluence spaces' };
33
+ /** Checked before any prompt or request. Returns the sentence to print with exit 2, or undefined when the flags are usable. */
34
+ export function checkScopeFlags(source, flags) {
35
+ const valueFlags = Object.keys(FLAG_NAME).filter((k) => flags[k] !== undefined);
36
+ if (flags.scope === undefined && valueFlags.length === 0)
37
+ return undefined;
38
+ if (source === undefined)
39
+ return 'Scope flags (--scope, --repo, --projects, --teams, --gitlab-project, --spaces) need --source <id> to say which source they are for.';
40
+ const fixed = FIXED_SCOPES[source];
41
+ if (fixed)
42
+ return `${labelOf(source)} reads ${fixed.text}. There is no scope to choose for it.`;
43
+ if (!isScoped(source))
44
+ return 'That source has no scope to choose.';
45
+ if (flags.scope !== undefined && flags.scope !== 'yours' && flags.scope !== 'team')
46
+ return '--scope takes yours or team.';
47
+ const wrong = valueFlags.find((k) => VALUE_FLAG[source] !== k);
48
+ if (wrong !== undefined)
49
+ return `${FLAG_NAME[wrong]} is for ${FLAG_FOR[wrong]}; ${labelOf(source)} takes ${FLAG_NAME[VALUE_FLAG[source]]}.`;
50
+ const given = valueFlags.length > 0;
51
+ if (flags.scope === 'yours' && given)
52
+ return `Pass either --scope yours or ${FLAG_NAME[VALUE_FLAG[source]]}, not both.`;
53
+ if (flags.scope === 'team' && !given && source !== 'github' && source !== 'gitlab')
54
+ return `--scope team needs ${FLAG_NAME[VALUE_FLAG[source]]} to say which ${source === 'confluence' ? 'spaces' : source === 'jira' ? 'projects' : 'teams'}.`;
55
+ return undefined;
56
+ }
57
+ function flagInput(source, flags) {
58
+ if (flags.scope === 'yours')
59
+ return { scope: 'yours' };
60
+ const value = flags[VALUE_FLAG[source]];
61
+ return value !== undefined ? { scope: 'team', values: value } : undefined;
62
+ }
63
+ const LISTERS = {
64
+ jira: listJiraProjects,
65
+ confluence: listConfluenceSpaces,
66
+ linear: async (t, f) => { const r = await listLinearTeams(t, f); return { items: r.items.map(({ key, name }) => ({ key, name })), truncated: r.truncated }; },
67
+ };
68
+ /** Decide the scope of one source being connected, with the in-flight `tokens`. May print (disclosure, notes). Throws to refuse. */
69
+ export async function decideConnectScope(source, tokens, ctx) {
70
+ const tell = (line) => { if (!ctx.quiet)
71
+ ctx.say(line); };
72
+ const fixed = FIXED_SCOPES[source];
73
+ if (!isScoped(source)) {
74
+ if (source === 'zoom' && fixed)
75
+ tell(`${labelOf(source)} reads ${fixed.text}.`);
76
+ return { extras: {}, scope: 'yours', label: 'your own items', commit() { } };
77
+ }
78
+ // A person is someone at a terminal who can be shown the disclosure and asked: a TTY, and not --json. Everything else (a script, an agent's
79
+ // shell, a child `align_backfill` started) is UNATTENDED: it reads yours, it never widens from the folder or from cited keys, and a
80
+ // widening it is asked for is saved as PENDING for a person to confirm.
81
+ const person = ctx.interactive && !ctx.quiet;
82
+ // The store, with this source's fields replaced by the ones in hand: a first connect has nothing saved to read.
83
+ const deps = { ...ctx.deps, isTty: () => person, store: { ...ctx.deps.store, fields: (s) => (s === source ? tokens : ctx.deps.store.fields(s)) } };
84
+ const by = ctx.by ?? { via: 'cli', unattended: !person };
85
+ // A team read whose disclosure could not be shown (--json): the result says so, and it stays un-marked for the next foreground run.
86
+ let disclosurePending = false;
87
+ const blocked = (reason) => new Error(reason);
88
+ const told = (scopeKey, text) => {
89
+ if (deps.store.isDisclosed(source, scopeKey))
90
+ return;
91
+ if (ctx.quiet) {
92
+ disclosurePending = true;
93
+ return;
94
+ }
95
+ tell(text);
96
+ markTold(deps.store, source, scopeKey);
97
+ };
98
+ const decision = (extras, scope, label, commit) => ({ extras, scope, label, get disclosurePending() { return disclosurePending; }, commit });
99
+ const fromChoice = (c) => {
100
+ if (c.scope === 'team')
101
+ told(c.scopeKey, disclosureText(source, c.labels));
102
+ const extras = c.scope === 'yours'
103
+ ? { resolved: true }
104
+ : { resolved: true, ...(source === 'github' ? { repo: c.values[0], team: true } : fetchOptsFor(source, c.values)) };
105
+ return decision(extras, c.scope, c.label, () => { commitScope(deps, source, c, by, ctx.flags.windowSince); });
106
+ };
107
+ /** What is in force without the agent's waiting choice: the same answer a background run gets. */
108
+ const kept = () => resolveScope(source, { ...deps, isTty: () => false }, { foreground: false });
109
+ const fromResolved = async (r, o = {}) => {
110
+ if (r.blocked !== undefined)
111
+ throw blocked(r.blocked);
112
+ if (r.activates) {
113
+ // An agent's waiting scope, offered to a person: the disclosure every time, and only an explicit Yes makes it active.
114
+ tell(r.disclosure);
115
+ const yes = await ctx.prompts.confirm(`Read ${r.label} now? No keeps your current scope.`);
116
+ if (!yes)
117
+ return fromResolved(await kept());
118
+ markTold(deps.store, source, r.scopeKey);
119
+ }
120
+ else if (r.disclosure !== undefined)
121
+ told(r.scopeKey, r.disclosure);
122
+ if (r.note !== undefined && o.note !== false)
123
+ tell(r.note);
124
+ // A team scope read with nobody to tell (--json, no terminal) that was never told for this scope: the disclosure is still owed.
125
+ if (r.scope === 'team' && !person && !deps.store.isDisclosed(source, r.scopeKey))
126
+ disclosurePending = true;
127
+ return decision({ resolved: true, ...(r.repo ? { repo: r.repo, team: true } : {}), ...r.extras }, r.scope, r.label, () => { });
128
+ };
129
+ const resolved = async (o = {}) => fromResolved(await resolveScope(source, deps, { foreground: true }), o);
130
+ const list = async () => {
131
+ try {
132
+ const r = await LISTERS[source](tokens, deps.fetch, deps.listMax !== undefined ? { max: deps.listMax } : {});
133
+ if (r.truncated)
134
+ tell(`Only the first ${r.items.length} ${WHAT[source]} are listed. To pick one that is not shown: align connect --source ${source} ${source === 'jira' ? '--projects' : source === 'linear' ? '--teams' : '--spaces'} KEYS`);
135
+ return r.items;
136
+ }
137
+ catch (e) {
138
+ if (!(e instanceof ScopeLookupError))
139
+ throw e;
140
+ if (source === 'confluence')
141
+ throw blocked(`${e.message} Confluence reads only the spaces you choose, so nothing was read. Pick them: align connect --source confluence --spaces ENG,OPS`);
142
+ tell(`Could not list your ${WHAT[source]}: ${e.message}`);
143
+ return undefined;
144
+ }
145
+ };
146
+ const input = flagInput(source, ctx.flags);
147
+ if (input) {
148
+ const c = await chooseScope(deps, source, input, tokens);
149
+ if (c.scope === 'yours' || person)
150
+ return fromChoice(c);
151
+ // Unattended widening: read what is in force now, and save the request for a person to confirm at a terminal.
152
+ let k;
153
+ // One line for the person, not two: the "will read ... once you confirm" line below replaces the default scope's own hint.
154
+ try {
155
+ k = await resolved({ note: false });
156
+ }
157
+ catch (e) {
158
+ // Confluence with nothing chosen yet: the request is still saved for the person, and the refusal says so.
159
+ commitScope(deps, source, c, by, ctx.flags.windowSince);
160
+ throw new Error(`${e.message} Your request for ${c.label} is saved and waiting for you to confirm: run \`align sync ${source}\` at a terminal.`);
161
+ }
162
+ tell(`${labelOf(source)} will read ${c.label} once you confirm it: run \`align sync ${source}\` at a terminal (it will show what it reads).`);
163
+ return decision(k.extras, k.scope, k.label, () => { commitScope(deps, source, c, by, ctx.flags.windowSince); });
164
+ }
165
+ if (source === 'github' || source === 'gitlab') {
166
+ const d = await resolved();
167
+ if (ctx.flags.scope === 'team' && d.scope === 'yours') {
168
+ throw blocked(`--scope team needs a ${source === 'github' ? 'repo' : 'project'}: this folder is not one. Pass ${source === 'github' ? '--repo owner/repo' : '--gitlab-project group/project'}.`);
169
+ }
170
+ return d;
171
+ }
172
+ const stored = deps.store.getScope(source);
173
+ const confluence = source === 'confluence';
174
+ // Without a person there is no picker and no guess from cited keys: the stored choice, else yours (with how to widen).
175
+ if (!person)
176
+ return resolved();
177
+ const listed = await list();
178
+ if (listed === undefined)
179
+ return resolved();
180
+ const keys = listed.map((x) => x.key);
181
+ const waitingLabels = stored?.kind === 'team' && stored.pending ? stored.labels : [];
182
+ const inForce = stored?.kind === 'team' && stored.pending ? stored.pending.previous : stored;
183
+ // What is preselected is what is already in force, or what local decisions cite. An agent's WAITING choice is never preselected:
184
+ // it is said, and picking it here is the explicit confirmation.
185
+ if (waitingLabels.length > 0)
186
+ tell(`Your agent proposed ${source} scope ${describeScopeKey(source, scopeKeyOf(source, waitingLabels), 'team')}. It is not read until you pick it here.`);
187
+ const initial = inForce?.kind === 'team' ? inForce.labels.filter((k) => keys.includes(k)) : inForce?.kind === 'yours' ? [] : ctx.citedKeys().filter((k) => keys.includes(k));
188
+ const message = confluence
189
+ ? 'Which Confluence spaces should Align read? Pick at least one.'
190
+ : `Which ${WHAT[source]} should Align read everything from? Leave all unselected to read only the items you are involved in.`;
191
+ const picked = await ctx.prompts.multiselect(message, listed.map((x) => ({ value: x.key, label: `${x.key} ${x.name}` })), initial, { required: confluence });
192
+ // Cancelled: nothing changes, and an agent's waiting scope stays waiting (it is not promoted, and not read).
193
+ if (picked === null) {
194
+ const k = await kept();
195
+ if (k.blocked !== undefined)
196
+ throw blocked(k.blocked);
197
+ return fromResolved(k);
198
+ }
199
+ if (confluence && picked.length === 0)
200
+ throw blocked(CONFLUENCE_NEEDS_SPACES);
201
+ return fromChoice(await chooseScope(deps, source, picked.length === 0 ? { scope: 'yours' } : { scope: 'team', values: picked }, tokens));
202
+ }
203
+ /**
204
+ * The connect loop's one call: decide the scope, fetch under it, and write the choice only once the fetch succeeded. A team read says
205
+ * whose items it covered in the report, unless the fetcher already did (GitHub names the repo itself).
206
+ */
207
+ export async function fetchUnderScope(source, tokens, window, ctx,
208
+ /** Starts the caller's spinner. Called AFTER the questions and notes (a spinner redraws and listens to the keyboard, which garbles a picker),
209
+ * and also before a refusal is thrown, so the caller's stop line has a spinner to stop. */
210
+ startSpinner = () => { }) {
211
+ let decision;
212
+ try {
213
+ decision = await decideConnectScope(source.id, tokens, ctx);
214
+ }
215
+ catch (e) {
216
+ startSpinner();
217
+ throw e;
218
+ }
219
+ startSpinner();
220
+ const fetched = await source.fetch(tokens, window, decision.extras);
221
+ decision.commit();
222
+ // A copy, never an edit of what the fetcher returned.
223
+ const report = { ...fetched.report };
224
+ if (decision.scope === 'team' && report.scopeNote === undefined)
225
+ report.scopeNote = `${decision.label}, as far as your token can see`;
226
+ if (decision.disclosurePending)
227
+ report.disclosurePending = true;
228
+ return { ...fetched, report };
229
+ }
230
+ /** The real prompts: a clack multiselect. A cancel is null. Tests inject their own. */
231
+ export function clackScopePrompts() {
232
+ return {
233
+ async multiselect(message, options, initial, o) {
234
+ const answer = await p.multiselect({ message, options: options.map((x) => ({ value: x.value, label: x.label, ...(x.hint !== undefined ? { hint: x.hint } : {}) })), initialValues: initial, required: o.required, maxItems: 12 });
235
+ return p.isCancel(answer) ? null : answer;
236
+ },
237
+ async confirm(message) {
238
+ return askWithTimeout(async () => (await p.confirm({ message, initialValue: false })) === true);
239
+ },
240
+ };
241
+ }
242
+ /**
243
+ * Was this process started by an agent's tool call (`align_backfill`, `align_sync run`)? Those children carry the marker, so any scope
244
+ * they would write is attributed to the agent and waits for a person, exactly like `align_scope set`.
245
+ */
246
+ export function startedByAgent(env = process.env) {
247
+ return env[STARTED_BY_AGENT_ENV] === 'mcp';
248
+ }
249
+ /** The production wiring of `ConnectScopeCtx` for `align connect` and `align setup`: the real store, graph, folder, network and prompts. */
250
+ export function connectScopeCtx(o) {
251
+ const dbPath = o.dbPath;
252
+ return {
253
+ deps: realScopeDeps(dbPath, { config: o.config }), interactive: o.interactive, quiet: o.quiet, flags: o.flags ?? {}, prompts: clackScopePrompts(),
254
+ ...(startedByAgent() ? { by: { via: 'mcp', agent: 'unknown' } } : {}),
255
+ citedKeys: () => (dbPath === undefined ? [] : citedProjectKeys(dbPath)), say: (line) => p.log.info(line),
256
+ };
257
+ }
258
+ //# sourceMappingURL=scope-connect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-connect.js","sourceRoot":"","sources":["../../src/lib/scope-connect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Project or team prefixes cited by tracker-shaped refs, most-cited decisions first, then by name; at most ten. */
2
+ export declare function citedProjectKeys(dbPath: string): string[];
3
+ //# sourceMappingURL=scope-defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-defaults.d.ts","sourceRoot":"","sources":["../../src/lib/scope-defaults.ts"],"names":[],"mappings":"AAYA,oHAAoH;AACpH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAyBzD"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * L4: what to preselect when a person picks a Jira project or a Linear team: the ticket prefixes their own decisions already
3
+ * cite (`decision_refs`, ALI-792). A suggestion only - the picker shows it, and a non-interactive run uses it as the plan says
4
+ * (Decision 7) - so it is cheap, local and never an error: no graph, no refs table or no refs all give an empty list.
5
+ */
6
+ import fs from 'node:fs';
7
+ import { DatabaseSync } from 'node:sqlite';
8
+ const MAX_SUGGESTED = 10;
9
+ const TICKET = /(?:^|\/)([A-Z][A-Z0-9_]+)-\d+$/;
10
+ const codeUnit = (a, b) => (a < b ? -1 : a > b ? 1 : 0);
11
+ /** Project or team prefixes cited by tracker-shaped refs, most-cited decisions first, then by name; at most ten. */
12
+ export function citedProjectKeys(dbPath) {
13
+ // A reader must never create the graph it was asked to look at: opening a missing path makes an empty file.
14
+ if (!fs.existsSync(dbPath))
15
+ return [];
16
+ let rows;
17
+ const db = new DatabaseSync(dbPath, { readOnly: true });
18
+ try {
19
+ db.exec('PRAGMA busy_timeout = 30000');
20
+ rows = db.prepare(`SELECT decision_id, ref FROM decision_refs WHERE platform IN ('jira', 'tracker')`).all();
21
+ }
22
+ catch {
23
+ return []; // an older file with no refs table
24
+ }
25
+ finally {
26
+ db.close();
27
+ }
28
+ const citedBy = new Map();
29
+ for (const r of rows) {
30
+ const key = TICKET.exec(r.ref)?.[1];
31
+ if (key === undefined)
32
+ continue;
33
+ const set = citedBy.get(key) ?? new Set();
34
+ set.add(r.decision_id);
35
+ citedBy.set(key, set);
36
+ }
37
+ return [...citedBy.entries()]
38
+ .sort(([ak, as], [bk, bs]) => bs.size - as.size || codeUnit(ak, bk))
39
+ .slice(0, MAX_SUGGESTED)
40
+ .map(([key]) => key);
41
+ }
42
+ //# sourceMappingURL=scope-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-defaults.js","sourceRoot":"","sources":["../../src/lib/scope-defaults.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,MAAM,GAAG,gCAAgC,CAAC;AAChD,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhF,oHAAoH;AACpH,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,4GAA4G;IAC5G,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IACtC,IAAI,IAAiD,CAAC;IACtD,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QACvC,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,kFAAkF,CAAC,CAAC,GAAG,EAAiB,CAAC;IAC7H,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,mCAAmC;IAChD,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,GAAG,KAAK,SAAS;YAAE,SAAS;QAChC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;QAClD,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;SACnE,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC;SACvB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,223 @@
1
+ /**
2
+ * L4: the production wiring of `ScopeDeps`: the real config store (local environment), the real folder, the real `fetch`.
3
+ * Kept apart from scope.ts so that file stays a function of its injected world. The GitHub fetcher is imported lazily, only when a folder is read.
4
+ */
5
+ import { createConfigStore } from './config.js';
6
+ import { type ScopeDeps, type ScopeStore } from './scope.js';
7
+ import { type ActiveScope } from './scope-values.js';
8
+ /** `group/project` from `gitlab.com/group/project`. Self-managed hosts are not detected: name them with `--project`. */
9
+ export declare function gitlabPlaceOf(identity: string | null): string | undefined;
10
+ export declare function configScopeStore(config?: {
11
+ getEnvironment(env: import("./config.js").EnvName): import("./config.js").EnvironmentConfig;
12
+ setAuthToken(env: import("./config.js").EnvName, token: string): void;
13
+ setTenantId(env: import("./config.js").EnvName, tenantId: string): void;
14
+ setNgrokUrl(url: string): void;
15
+ setDefaultEnv(env: import("./config.js").EnvName): void;
16
+ getDefaultEnv(): import("./config.js").EnvName;
17
+ getConnectorToken(env: import("./config.js").EnvName, connectorKey: string): string | null;
18
+ setConnectorToken(env: import("./config.js").EnvName, connectorKey: string, token: string): void;
19
+ getConnectorFields(env: import("./config.js").EnvName, connectorKey: string): Record<string, string> | null;
20
+ saveConnectorFields(env: import("./config.js").EnvName, connectorKey: string, fields: Record<string, string>): void;
21
+ forgetConnector(env: import("./config.js").EnvName, connectorKey: string): void;
22
+ forgetAllConnectors(env: import("./config.js").EnvName): void;
23
+ getConnectorCloudId(env: import("./config.js").EnvName, connectorKey: string): string | null;
24
+ setConnectorCloudId(env: import("./config.js").EnvName, connectorKey: string, cloudId: string): void;
25
+ getConnectorSiteBase(env: import("./config.js").EnvName, connectorKey: string): string | null;
26
+ setConnectorSiteBase(env: import("./config.js").EnvName, connectorKey: string, siteBase: string): void;
27
+ getConnectorScope(env: import("./config.js").EnvName, connectorKey: string): import("./scope-values.js").StoredScope | null;
28
+ setConnectorScope(env: import("./config.js").EnvName, connectorKey: string, scope: import("./scope-values.js").StoredScope): void;
29
+ clearConnectorScope(env: import("./config.js").EnvName, connectorKey: string): void;
30
+ clearTeamScopeDisclosed(source: string): void;
31
+ getTeamScopeDisclosedFor(): string[];
32
+ isTeamScopeDisclosed(source: string, scopeKey: string): boolean;
33
+ markTeamScopeDisclosed(source: string, scopeKey: string): void;
34
+ setLocalMode(dbPath: string): void;
35
+ clearLocalMode(): void;
36
+ clear(env: import("./config.js").EnvName): void;
37
+ getInstallId(): string;
38
+ getAgent(): string | undefined;
39
+ setAgent(agent: string): void;
40
+ isLaunchOff(): boolean;
41
+ setLaunchOff(off: boolean): void;
42
+ clearAgent(): void;
43
+ isBackgroundSyncOff(): boolean;
44
+ setBackgroundSyncOff(off: boolean): void;
45
+ backgroundSyncNoticeShown(): boolean;
46
+ markBackgroundSyncNoticeShown(at: string): void;
47
+ getReauthLineShownAt(): string | undefined;
48
+ markReauthLineShown(at: string): void;
49
+ getWrittenConfigs(): Record<string, import("./safe-config-write.js").WrittenConfig>;
50
+ recordWrittenConfig(file: string, entry: import("./safe-config-write.js").WrittenConfig): void;
51
+ dropWrittenConfigs(files: string[]): void;
52
+ wasWriteRefused(file: string): boolean;
53
+ unmarkWriteRefused(file: string): void;
54
+ clearRefusedWrites(): void;
55
+ markWriteRefused(file: string): void;
56
+ getTelemetryConsent(): import("./config.js").TelemetryConsent | undefined;
57
+ setTelemetryConsent(value: import("./config.js").TelemetryConsent): void;
58
+ setTelemetryOffByEnv(via: string, now?: Date): void;
59
+ getTelemetryOffByEnv(): {
60
+ via: string;
61
+ at: string;
62
+ } | undefined;
63
+ getTelemetryNoticeShownAt(): string | undefined;
64
+ markTelemetryNoticeShown(): void;
65
+ getProviderKey(provider: import("./config.js").GuidedProviderKey): string | null;
66
+ setProviderKey(provider: import("./config.js").GuidedProviderKey, key: string): void;
67
+ clearProviderKey(provider: import("./config.js").GuidedProviderKey): void;
68
+ getLlmPreference(): import("./config.js").LlmPreference;
69
+ setLlmPreference(pref: import("./config.js").LlmPreference): void;
70
+ clearLlmPreference(): void;
71
+ isAskKeyOfferDismissed(): boolean;
72
+ setAskKeyOfferDismissed(dismissed: boolean): void;
73
+ wasFunnelStageRecorded(stage: string): boolean;
74
+ claimFunnelStage(stage: string): boolean;
75
+ releaseFunnelStage(stage: string): boolean;
76
+ markFunnelStageRecorded(stage: string): void;
77
+ }): ScopeStore;
78
+ /** The stored choice IN FORCE for a source (a waiting agent choice is not), or null when nothing was chosen. For callers outside the scope code. */
79
+ export declare function activeStoredScope(source: string, config?: {
80
+ getEnvironment(env: import("./config.js").EnvName): import("./config.js").EnvironmentConfig;
81
+ setAuthToken(env: import("./config.js").EnvName, token: string): void;
82
+ setTenantId(env: import("./config.js").EnvName, tenantId: string): void;
83
+ setNgrokUrl(url: string): void;
84
+ setDefaultEnv(env: import("./config.js").EnvName): void;
85
+ getDefaultEnv(): import("./config.js").EnvName;
86
+ getConnectorToken(env: import("./config.js").EnvName, connectorKey: string): string | null;
87
+ setConnectorToken(env: import("./config.js").EnvName, connectorKey: string, token: string): void;
88
+ getConnectorFields(env: import("./config.js").EnvName, connectorKey: string): Record<string, string> | null;
89
+ saveConnectorFields(env: import("./config.js").EnvName, connectorKey: string, fields: Record<string, string>): void;
90
+ forgetConnector(env: import("./config.js").EnvName, connectorKey: string): void;
91
+ forgetAllConnectors(env: import("./config.js").EnvName): void;
92
+ getConnectorCloudId(env: import("./config.js").EnvName, connectorKey: string): string | null;
93
+ setConnectorCloudId(env: import("./config.js").EnvName, connectorKey: string, cloudId: string): void;
94
+ getConnectorSiteBase(env: import("./config.js").EnvName, connectorKey: string): string | null;
95
+ setConnectorSiteBase(env: import("./config.js").EnvName, connectorKey: string, siteBase: string): void;
96
+ getConnectorScope(env: import("./config.js").EnvName, connectorKey: string): import("./scope-values.js").StoredScope | null;
97
+ setConnectorScope(env: import("./config.js").EnvName, connectorKey: string, scope: import("./scope-values.js").StoredScope): void;
98
+ clearConnectorScope(env: import("./config.js").EnvName, connectorKey: string): void;
99
+ clearTeamScopeDisclosed(source: string): void;
100
+ getTeamScopeDisclosedFor(): string[];
101
+ isTeamScopeDisclosed(source: string, scopeKey: string): boolean;
102
+ markTeamScopeDisclosed(source: string, scopeKey: string): void;
103
+ setLocalMode(dbPath: string): void;
104
+ clearLocalMode(): void;
105
+ clear(env: import("./config.js").EnvName): void;
106
+ getInstallId(): string;
107
+ getAgent(): string | undefined;
108
+ setAgent(agent: string): void;
109
+ isLaunchOff(): boolean;
110
+ setLaunchOff(off: boolean): void;
111
+ clearAgent(): void;
112
+ isBackgroundSyncOff(): boolean;
113
+ setBackgroundSyncOff(off: boolean): void;
114
+ backgroundSyncNoticeShown(): boolean;
115
+ markBackgroundSyncNoticeShown(at: string): void;
116
+ getReauthLineShownAt(): string | undefined;
117
+ markReauthLineShown(at: string): void;
118
+ getWrittenConfigs(): Record<string, import("./safe-config-write.js").WrittenConfig>;
119
+ recordWrittenConfig(file: string, entry: import("./safe-config-write.js").WrittenConfig): void;
120
+ dropWrittenConfigs(files: string[]): void;
121
+ wasWriteRefused(file: string): boolean;
122
+ unmarkWriteRefused(file: string): void;
123
+ clearRefusedWrites(): void;
124
+ markWriteRefused(file: string): void;
125
+ getTelemetryConsent(): import("./config.js").TelemetryConsent | undefined;
126
+ setTelemetryConsent(value: import("./config.js").TelemetryConsent): void;
127
+ setTelemetryOffByEnv(via: string, now?: Date): void;
128
+ getTelemetryOffByEnv(): {
129
+ via: string;
130
+ at: string;
131
+ } | undefined;
132
+ getTelemetryNoticeShownAt(): string | undefined;
133
+ markTelemetryNoticeShown(): void;
134
+ getProviderKey(provider: import("./config.js").GuidedProviderKey): string | null;
135
+ setProviderKey(provider: import("./config.js").GuidedProviderKey, key: string): void;
136
+ clearProviderKey(provider: import("./config.js").GuidedProviderKey): void;
137
+ getLlmPreference(): import("./config.js").LlmPreference;
138
+ setLlmPreference(pref: import("./config.js").LlmPreference): void;
139
+ clearLlmPreference(): void;
140
+ isAskKeyOfferDismissed(): boolean;
141
+ setAskKeyOfferDismissed(dismissed: boolean): void;
142
+ wasFunnelStageRecorded(stage: string): boolean;
143
+ claimFunnelStage(stage: string): boolean;
144
+ releaseFunnelStage(stage: string): boolean;
145
+ markFunnelStageRecorded(stage: string): void;
146
+ }): ActiveScope | null;
147
+ /** What the sync status needs to know about the scope in force, from the stored choice. An unchosen source answers undefined (the most recently started row is used). */
148
+ export declare function scopeStatusHooks(config?: {
149
+ getEnvironment(env: import("./config.js").EnvName): import("./config.js").EnvironmentConfig;
150
+ setAuthToken(env: import("./config.js").EnvName, token: string): void;
151
+ setTenantId(env: import("./config.js").EnvName, tenantId: string): void;
152
+ setNgrokUrl(url: string): void;
153
+ setDefaultEnv(env: import("./config.js").EnvName): void;
154
+ getDefaultEnv(): import("./config.js").EnvName;
155
+ getConnectorToken(env: import("./config.js").EnvName, connectorKey: string): string | null;
156
+ setConnectorToken(env: import("./config.js").EnvName, connectorKey: string, token: string): void;
157
+ getConnectorFields(env: import("./config.js").EnvName, connectorKey: string): Record<string, string> | null;
158
+ saveConnectorFields(env: import("./config.js").EnvName, connectorKey: string, fields: Record<string, string>): void;
159
+ forgetConnector(env: import("./config.js").EnvName, connectorKey: string): void;
160
+ forgetAllConnectors(env: import("./config.js").EnvName): void;
161
+ getConnectorCloudId(env: import("./config.js").EnvName, connectorKey: string): string | null;
162
+ setConnectorCloudId(env: import("./config.js").EnvName, connectorKey: string, cloudId: string): void;
163
+ getConnectorSiteBase(env: import("./config.js").EnvName, connectorKey: string): string | null;
164
+ setConnectorSiteBase(env: import("./config.js").EnvName, connectorKey: string, siteBase: string): void;
165
+ getConnectorScope(env: import("./config.js").EnvName, connectorKey: string): import("./scope-values.js").StoredScope | null;
166
+ setConnectorScope(env: import("./config.js").EnvName, connectorKey: string, scope: import("./scope-values.js").StoredScope): void;
167
+ clearConnectorScope(env: import("./config.js").EnvName, connectorKey: string): void;
168
+ clearTeamScopeDisclosed(source: string): void;
169
+ getTeamScopeDisclosedFor(): string[];
170
+ isTeamScopeDisclosed(source: string, scopeKey: string): boolean;
171
+ markTeamScopeDisclosed(source: string, scopeKey: string): void;
172
+ setLocalMode(dbPath: string): void;
173
+ clearLocalMode(): void;
174
+ clear(env: import("./config.js").EnvName): void;
175
+ getInstallId(): string;
176
+ getAgent(): string | undefined;
177
+ setAgent(agent: string): void;
178
+ isLaunchOff(): boolean;
179
+ setLaunchOff(off: boolean): void;
180
+ clearAgent(): void;
181
+ isBackgroundSyncOff(): boolean;
182
+ setBackgroundSyncOff(off: boolean): void;
183
+ backgroundSyncNoticeShown(): boolean;
184
+ markBackgroundSyncNoticeShown(at: string): void;
185
+ getReauthLineShownAt(): string | undefined;
186
+ markReauthLineShown(at: string): void;
187
+ getWrittenConfigs(): Record<string, import("./safe-config-write.js").WrittenConfig>;
188
+ recordWrittenConfig(file: string, entry: import("./safe-config-write.js").WrittenConfig): void;
189
+ dropWrittenConfigs(files: string[]): void;
190
+ wasWriteRefused(file: string): boolean;
191
+ unmarkWriteRefused(file: string): void;
192
+ clearRefusedWrites(): void;
193
+ markWriteRefused(file: string): void;
194
+ getTelemetryConsent(): import("./config.js").TelemetryConsent | undefined;
195
+ setTelemetryConsent(value: import("./config.js").TelemetryConsent): void;
196
+ setTelemetryOffByEnv(via: string, now?: Date): void;
197
+ getTelemetryOffByEnv(): {
198
+ via: string;
199
+ at: string;
200
+ } | undefined;
201
+ getTelemetryNoticeShownAt(): string | undefined;
202
+ markTelemetryNoticeShown(): void;
203
+ getProviderKey(provider: import("./config.js").GuidedProviderKey): string | null;
204
+ setProviderKey(provider: import("./config.js").GuidedProviderKey, key: string): void;
205
+ clearProviderKey(provider: import("./config.js").GuidedProviderKey): void;
206
+ getLlmPreference(): import("./config.js").LlmPreference;
207
+ setLlmPreference(pref: import("./config.js").LlmPreference): void;
208
+ clearLlmPreference(): void;
209
+ isAskKeyOfferDismissed(): boolean;
210
+ setAskKeyOfferDismissed(dismissed: boolean): void;
211
+ wasFunnelStageRecorded(stage: string): boolean;
212
+ claimFunnelStage(stage: string): boolean;
213
+ releaseFunnelStage(stage: string): boolean;
214
+ markFunnelStageRecorded(stage: string): void;
215
+ }): {
216
+ activeScopeKey(id: string): string | undefined;
217
+ pendingScope(id: string): string | undefined;
218
+ blockedScope(id: string): string | undefined;
219
+ };
220
+ export declare function realScopeDeps(dbPath: string | undefined, o?: {
221
+ config?: ReturnType<typeof createConfigStore>;
222
+ }): ScopeDeps;
223
+ //# sourceMappingURL=scope-real.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-real.d.ts","sourceRoot":"","sources":["../../src/lib/scope-real.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAA2B,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EAAE,KAAK,WAAW,EAAmD,MAAM,mBAAmB,CAAC;AAEtG,wHAAwH;AACxH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAEzE;AAED,wBAAgB,gBAAgB,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAsB,GAAG,UAAU,CAUzE;AAED,oJAAoJ;AACpJ,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAsB,GAAG,WAAW,GAAG,IAAI,CAGlG;AAED,yKAAyK;AACzK,wBAAgB,gBAAgB,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAsB,GAAG;IAAE,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAAC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAAC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,CAgB7M;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,GAAE;IAAE,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAA;CAAO,GAAG,SAAS,CAW9H"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * L4: the production wiring of `ScopeDeps`: the real config store (local environment), the real folder, the real `fetch`.
3
+ * Kept apart from scope.ts so that file stays a function of its injected world. The GitHub fetcher is imported lazily, only when a folder is read.
4
+ */
5
+ import { createConfigStore } from './config.js';
6
+ import { currentRepoIdentity } from './repo-identity.js';
7
+ import { CONFLUENCE_NEEDS_SPACES } from './scope.js';
8
+ import { describeScopeKey, scopeKeyOf } from './scope-values.js';
9
+ /** `group/project` from `gitlab.com/group/project`. Self-managed hosts are not detected: name them with `--project`. */
10
+ export function gitlabPlaceOf(identity) {
11
+ return identity?.startsWith('gitlab.com/') ? identity.slice('gitlab.com/'.length) : undefined;
12
+ }
13
+ export function configScopeStore(config = createConfigStore()) {
14
+ return {
15
+ getScope: (source) => config.getConnectorScope('local', source),
16
+ saveScope: (source, scope) => config.setConnectorScope('local', source, scope),
17
+ clearScope: (source) => config.clearConnectorScope('local', source),
18
+ fields: (source) => config.getConnectorFields('local', source),
19
+ isDisclosed: (source, scopeKey) => config.isTeamScopeDisclosed(source, scopeKey),
20
+ markDisclosed: (source, scopeKey) => config.markTeamScopeDisclosed(source, scopeKey),
21
+ clearDisclosed: (source) => config.clearTeamScopeDisclosed(source),
22
+ };
23
+ }
24
+ /** The stored choice IN FORCE for a source (a waiting agent choice is not), or null when nothing was chosen. For callers outside the scope code. */
25
+ export function activeStoredScope(source, config = createConfigStore()) {
26
+ const s = configScopeStore(config).getScope(source);
27
+ return s?.kind === 'team' && s.pending ? s.pending.previous : s;
28
+ }
29
+ /** What the sync status needs to know about the scope in force, from the stored choice. An unchosen source answers undefined (the most recently started row is used). */
30
+ export function scopeStatusHooks(config = createConfigStore()) {
31
+ const store = configScopeStore(config);
32
+ const key = (source, s) => s === null ? undefined : s.kind === 'yours' ? 'yours' : scopeKeyOf(source, s.labels);
33
+ return {
34
+ activeScopeKey: (id) => {
35
+ const s = store.getScope(id);
36
+ // A waiting choice is never in force. With nothing before it the default applies, whose key is `yours`.
37
+ return s?.kind === 'team' && s.pending ? key(id, s.pending.previous) ?? 'yours' : key(id, s);
38
+ },
39
+ blockedScope: (id) => (id === 'confluence' && activeStoredScope(id, config)?.kind !== 'team' ? CONFLUENCE_NEEDS_SPACES : undefined),
40
+ pendingScope: (id) => {
41
+ const s = store.getScope(id);
42
+ return s?.kind === 'team' && s.pending ? describeScopeKey(id, scopeKeyOf(id, s.labels), 'team') : undefined;
43
+ },
44
+ };
45
+ }
46
+ export function realScopeDeps(dbPath, o = {}) {
47
+ return {
48
+ store: configScopeStore(o.config),
49
+ dbPath,
50
+ now: () => new Date(),
51
+ isTty: () => Boolean(process.stdin.isTTY && process.stdout.isTTY),
52
+ // ALI-917's own folder detection, so GitHub has one reader of "which repo am I in" (it is imported lazily: a connector-core fetcher).
53
+ cwdRepo: async () => (await import('./fetchers/github.js')).resolveGitHubRepoScope({}),
54
+ cwdGitlabProject: async () => gitlabPlaceOf(await currentRepoIdentity()),
55
+ fetch: (url, init) => fetch(url, init),
56
+ };
57
+ }
58
+ //# sourceMappingURL=scope-real.js.map