@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,67 @@
1
+ import { alignServerEntry } from '../../mcp-setup.js';
2
+ import { QWEN_COPY_PREFIX, qwenCopyName } from '../qwen-state.js';
3
+ import { qwenSystemDefaultsPath } from '../qwen-trust.js';
4
+ import { parseJsonc } from '../strict-entry.js';
5
+ /** Same reason as the Claude adapter: never shadow a user's own `align` server. */
6
+ const INJECTED_SERVER_NAME = 'align-local';
7
+ export const QWEN_TRUST_NOTE = "Qwen Code turns off MCP servers, Align's included, in folders you haven't trusted. Trust this folder in Qwen Code to use the graph here.";
8
+ const isObject = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
9
+ function parseTheirs(text) {
10
+ if (text === null)
11
+ return {};
12
+ const parsed = parseJsonc(text);
13
+ if (!parsed)
14
+ return null;
15
+ if (parsed['mcpServers'] !== undefined && !isObject(parsed['mcpServers']))
16
+ return null;
17
+ return parsed;
18
+ }
19
+ /**
20
+ * Qwen Code, per session, nothing written to the user's own config (qwen-code 0.25.0, a Gemini
21
+ * CLI fork with the same mechanism): QWEN_CODE_SYSTEM_SETTINGS_PATH names the system settings
22
+ * file, read LAST and merged shallowly, so align points it at a 0600 COPY of the file Qwen would
23
+ * otherwise read with align-local added (verified: `qwen mcp list` then shows the user's servers
24
+ * and align-local, and align's entry replaces a user or workspace align-local whole). The
25
+ * original system-defaults location is pinned with QWEN_CODE_SYSTEM_DEFAULTS_PATH unless the
26
+ * user set it. A system file align cannot read or parse is never replaced: no injection, one line.
27
+ *
28
+ * Not `--mcp-config`: Qwen has one, but how it ranks against a same-named server in a settings
29
+ * layer was not established, and the system tier's rank was.
30
+ *
31
+ * Trust: off by default in Qwen; when on, an untrusted folder gets MCP turned off, and align says
32
+ * so in one line. It never trusts a folder for the user. Pass-through args are the whole of the args.
33
+ */
34
+ export function buildQwenLaunch(c) {
35
+ const env = { ALIGN_WRAPPED: '1' };
36
+ const files = [];
37
+ const notes = [];
38
+ const copy = qwenCopyName(c.systemSettings.path);
39
+ let injected = false;
40
+ if (c.overridden.length > 0 || !c.present) {
41
+ const theirs = c.systemSettings.unreadable ? null : parseTheirs(c.systemSettings.text);
42
+ if (!theirs) {
43
+ notes.push(`Qwen Code's system settings file ${c.systemSettings.path} is not readable JSON with an object "mcpServers", so Align's graph tools were not added to this session. Fix the file, or point QWEN_CODE_SYSTEM_SETTINGS_PATH at one that is.`);
44
+ }
45
+ else {
46
+ const merged = { ...theirs, mcpServers: { ...(theirs['mcpServers'] ?? {}), [INJECTED_SERVER_NAME]: alignServerEntry('mcpServers', 'local') } };
47
+ files.push({ name: copy, content: `${JSON.stringify(merged, null, 2)}\n`, mode: 0o600 });
48
+ env['QWEN_CODE_SYSTEM_SETTINGS_PATH'] = c.cachePath(copy);
49
+ if (!c.env['QWEN_CODE_SYSTEM_DEFAULTS_PATH'])
50
+ env['QWEN_CODE_SYSTEM_DEFAULTS_PATH'] = qwenSystemDefaultsPath(c.systemSettings.path, c.platform);
51
+ if (c.overridden.length > 0)
52
+ notes.push(`Qwen Code will use Align's own align-local MCP server this session, not the one in ${c.overridden.join(', ')}.`);
53
+ injected = true;
54
+ }
55
+ }
56
+ if (c.trust === 'untrusted' || c.trust === 'unknown')
57
+ notes.push(QWEN_TRUST_NOTE);
58
+ return {
59
+ bin: 'qwen',
60
+ args: [...c.passthrough],
61
+ env,
62
+ files,
63
+ prune: { prefix: QWEN_COPY_PREFIX, ...(injected ? { keep: copy } : { remove: copy }) },
64
+ ...(notes.length > 0 ? { notes } : {}),
65
+ };
66
+ }
67
+ //# sourceMappingURL=qwen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qwen.js","sourceRoot":"","sources":["../../../../src/lib/launch/adapters/qwen.ts"],"names":[],"mappings":"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"}
@@ -21,11 +21,16 @@ export declare const supportedAgents: () => LaunchAgent[];
21
21
  export declare const PICK_PRIORITY: readonly LaunchAgentId[];
22
22
  /** The agents launchable before wave A. */
23
23
  export declare const PRE_WAVE_A: ReadonlySet<LaunchAgentId>;
24
+ /** The agents launchable before wave B (wave A included). */
25
+ export declare const PRE_WAVE_B: ReadonlySet<LaunchAgentId>;
26
+ /** The agents launchable before wave C (waves A and B included). */
27
+ export declare const PRE_WAVE_C: ReadonlySet<LaunchAgentId>;
24
28
  export declare function byPriority(agents: LaunchAgent[]): LaunchAgent[];
25
29
  /**
26
30
  * The agent's binary on PATH, and where. Only `bin` is accepted: for Cursor that is `cursor-agent`,
27
31
  * which its installer always creates. Cursor's docs also call the command `agent`, but that name
28
- * is too generic to run on a guess, so a bare `agent` on PATH is not Cursor.
32
+ * is too generic to run on a guess, so a bare `agent` on PATH is not Cursor. A spec whose `bin` is
33
+ * generic (Grok Build's `grok`) also names `acceptsBin`, and a `bin` it refuses is not installed.
29
34
  */
30
35
  export declare function resolveAgentBin(a: LaunchAgent, find: (bin: string, env: Record<string, string | undefined>, platform: string) => string | null, env: Record<string, string | undefined>, platform: string): {
31
36
  bin: string;
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../src/lib/launch/agents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,qFAAqF;IACrF,SAAS,EAAE,aAAa,GAAG,cAAc,CAAC;IAC1C,2FAA2F;IAC3F,SAAS,EAAE,OAAO,CAAC;IACnB,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAE/C,CAAC;AAEF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAE7E;AAED,eAAO,MAAM,eAAe,QAAO,WAAW,EAA8C,CAAC;AAE7F;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,aAAa,EAAkF,CAAC;AACrI,2CAA2C;AAC3C,eAAO,MAAM,UAAU,EAAE,WAAW,CAAC,aAAa,CAAwD,CAAC;AAE3G,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAM/D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,CAAC,EAAE,WAAW,EACd,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,EAC/F,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,QAAQ,EAAE,MAAM,GACf;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAGtC"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../src/lib/launch/agents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,qFAAqF;IACrF,SAAS,EAAE,aAAa,GAAG,cAAc,CAAC;IAC1C,2FAA2F;IAC3F,SAAS,EAAE,OAAO,CAAC;IACnB,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAE/C,CAAC;AAEF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAE7E;AAED,eAAO,MAAM,eAAe,QAAO,WAAW,EAA8C,CAAC;AAE7F;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,aAAa,EAAiL,CAAC;AACpO,2CAA2C;AAC3C,eAAO,MAAM,UAAU,EAAE,WAAW,CAAC,aAAa,CAAwD,CAAC;AAC3G,6DAA6D;AAC7D,eAAO,MAAM,UAAU,EAAE,WAAW,CAAC,aAAa,CAA8D,CAAC;AACjH,oEAAoE;AACpE,eAAO,MAAM,UAAU,EAAE,WAAW,CAAC,aAAa,CAA0E,CAAC;AAE7H,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAM/D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,CAAC,EAAE,WAAW,EACd,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,EAC/F,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,QAAQ,EAAE,MAAM,GACf;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAKtC"}
@@ -1,5 +1,5 @@
1
1
  import { installText } from './install.js';
2
- import { AGENT_REGISTRY } from './registry/index.js';
2
+ import { AGENT_REGISTRY, specByName } from './registry/index.js';
3
3
  export const LAUNCH_AGENTS = AGENT_REGISTRY.map(({ name, label, bin, injection, supported, install }) => ({ name, label, bin, injection, supported, install: installText(install) }));
4
4
  export function agentByName(name) {
5
5
  return LAUNCH_AGENTS.find((a) => a.name === name);
@@ -10,9 +10,13 @@ export const supportedAgents = () => LAUNCH_AGENTS.filter((a) => a.supported);
10
10
  * --approve). The agents launchable before wave A keep their old order, Claude Code first, so a
11
11
  * scripted first run picks what it picked before; the wave A agents come after them.
12
12
  */
13
- export const PICK_PRIORITY = ['claude-code', 'cursor', 'opencode', 'pi', 'codex', 'copilot', 'gemini-cli'];
13
+ export const PICK_PRIORITY = ['claude-code', 'cursor', 'opencode', 'pi', 'codex', 'copilot', 'gemini-cli', 'amp', 'droid', 'grok-build', 'kiro', 'qwen', 'goose', 'auggie', 'continue', 'cline', 'aider'];
14
14
  /** The agents launchable before wave A. */
15
15
  export const PRE_WAVE_A = new Set(['claude-code', 'cursor', 'opencode', 'pi']);
16
+ /** The agents launchable before wave B (wave A included). */
17
+ export const PRE_WAVE_B = new Set([...PRE_WAVE_A, 'codex', 'copilot', 'gemini-cli']);
18
+ /** The agents launchable before wave C (waves A and B included). */
19
+ export const PRE_WAVE_C = new Set([...PRE_WAVE_B, 'amp', 'droid', 'grok-build', 'kiro', 'qwen']);
16
20
  export function byPriority(agents) {
17
21
  const rank = (a) => {
18
22
  const i = PICK_PRIORITY.indexOf(a.name);
@@ -23,10 +27,14 @@ export function byPriority(agents) {
23
27
  /**
24
28
  * The agent's binary on PATH, and where. Only `bin` is accepted: for Cursor that is `cursor-agent`,
25
29
  * which its installer always creates. Cursor's docs also call the command `agent`, but that name
26
- * is too generic to run on a guess, so a bare `agent` on PATH is not Cursor.
30
+ * is too generic to run on a guess, so a bare `agent` on PATH is not Cursor. A spec whose `bin` is
31
+ * generic (Grok Build's `grok`) also names `acceptsBin`, and a `bin` it refuses is not installed.
27
32
  */
28
33
  export function resolveAgentBin(a, find, env, platform) {
29
34
  const found = find(a.bin, env, platform);
30
- return found ? { bin: a.bin, path: found } : null;
35
+ if (!found)
36
+ return null;
37
+ const accepts = specByName(a.name)?.acceptsBin;
38
+ return accepts && !accepts(found, env, platform) ? null : { bin: a.bin, path: found };
31
39
  }
32
40
  //# sourceMappingURL=agents.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../../src/lib/launch/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAerD,MAAM,CAAC,MAAM,aAAa,GAA2B,cAAc,CAAC,GAAG,CACrE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CACrI,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,IAAwB;IAClD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,GAAkB,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAE7F;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAA6B,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AACrI,2CAA2C;AAC3C,MAAM,CAAC,MAAM,UAAU,GAA+B,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;AAE3G,MAAM,UAAU,UAAU,CAAC,MAAqB;IAC9C,MAAM,IAAI,GAAG,CAAC,CAAc,EAAU,EAAE;QACtC,MAAM,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,CAAc,EACd,IAA+F,EAC/F,GAAuC,EACvC,QAAgB;IAEhB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../../src/lib/launch/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAejE,MAAM,CAAC,MAAM,aAAa,GAA2B,cAAc,CAAC,GAAG,CACrE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CACrI,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,IAAwB;IAClD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,GAAkB,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAE7F;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAA6B,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACpO,2CAA2C;AAC3C,MAAM,CAAC,MAAM,UAAU,GAA+B,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3G,6DAA6D;AAC7D,MAAM,CAAC,MAAM,UAAU,GAA+B,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;AACjH,oEAAoE;AACpE,MAAM,CAAC,MAAM,UAAU,GAA+B,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE7H,MAAM,UAAU,UAAU,CAAC,MAAqB;IAC9C,MAAM,IAAI,GAAG,CAAC,CAAc,EAAU,EAAE;QACtC,MAAM,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,CAAc,EACd,IAA+F,EAC/F,GAAuC,EACvC,QAAgB;IAEhB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC/C,OAAO,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACxF,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { type AlignLocalState } from './strict-entry.js';
2
+ export interface AmpProjectState extends AlignLocalState {
3
+ /** The user settings file Amp reads this session: the one align adds to. */
4
+ settingsFile: string;
5
+ /** It parses only with its comments stripped: align never rewrites it (the comments would go). */
6
+ commented: boolean;
7
+ }
8
+ /** Amp's user settings file: `--settings-file`, else AMP_SETTINGS_FILE, else $XDG_CONFIG_HOME (or ~/.config)/amp/settings.json. */
9
+ export declare function ampSettingsFile(home: string, env: Record<string, string | undefined>, passthrough: string[]): string;
10
+ /**
11
+ * What Amp would already load for align (amp 0.0.1791576029; it reads its settings as JSONC):
12
+ * - the user settings file align adds to: a canonical `align` or align-local there is present;
13
+ * a non-canonical align-local is a conflict, because the writer adds and never edits;
14
+ * - a workspace `.amp/settings.json` (Amp uses the nearest one, up to the git root; every
15
+ * ancestor is read here, a superset): a non-canonical align-local there is a conflict. A
16
+ * workspace server waits for `amp mcp approve`, so it never stands in for us.
17
+ */
18
+ export declare function readAmpState(cwd: string, home: string, opts: {
19
+ localIsDefault: boolean;
20
+ }, env: Record<string, string | undefined>, platform: string, passthrough: string[]): AmpProjectState;
21
+ //# sourceMappingURL=amp-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amp-state.d.ts","sourceRoot":"","sources":["../../../src/lib/launch/amp-state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAAqC,MAAM,mBAAmB,CAAC;AAE5F,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,kGAAkG;IAClG,SAAS,EAAE,OAAO,CAAC;CACpB;AAMD,mIAAmI;AACnI,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAKpH;AAWD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,cAAc,EAAE,OAAO,CAAA;CAAE,EACjC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EAAE,GACpB,eAAe,CA0BjB"}
@@ -0,0 +1,61 @@
1
+ import path from 'node:path';
2
+ import { ancestors, optionValue, readText } from './layer-files.js';
3
+ import { isCanonicalLocalEntry, parseJsonc } from './strict-entry.js';
4
+ const KEY = 'amp.mcpServers';
5
+ const isObject = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
6
+ /** Amp's user settings file: `--settings-file`, else AMP_SETTINGS_FILE, else $XDG_CONFIG_HOME (or ~/.config)/amp/settings.json. */
7
+ export function ampSettingsFile(home, env, passthrough) {
8
+ const flag = optionValue(passthrough, '--settings-file');
9
+ if (flag)
10
+ return path.resolve(flag);
11
+ if (env['AMP_SETTINGS_FILE'])
12
+ return path.resolve(env['AMP_SETTINGS_FILE']);
13
+ return path.join(env['XDG_CONFIG_HOME'] ? env['XDG_CONFIG_HOME'] : path.join(home, '.config'), 'amp', 'settings.json');
14
+ }
15
+ function strictParse(text) {
16
+ try {
17
+ JSON.parse(text);
18
+ return true;
19
+ }
20
+ catch {
21
+ return false;
22
+ }
23
+ }
24
+ /**
25
+ * What Amp would already load for align (amp 0.0.1791576029; it reads its settings as JSONC):
26
+ * - the user settings file align adds to: a canonical `align` or align-local there is present;
27
+ * a non-canonical align-local is a conflict, because the writer adds and never edits;
28
+ * - a workspace `.amp/settings.json` (Amp uses the nearest one, up to the git root; every
29
+ * ancestor is read here, a superset): a non-canonical align-local there is a conflict. A
30
+ * workspace server waits for `amp mcp approve`, so it never stands in for us.
31
+ */
32
+ export function readAmpState(cwd, home, opts, env, platform, passthrough) {
33
+ const o = { ...opts, platform, host: 'mcpServers' };
34
+ const settingsFile = ampSettingsFile(home, env, passthrough);
35
+ const servers = (text) => {
36
+ const s = parseJsonc(text)?.[KEY];
37
+ return isObject(s) ? s : undefined;
38
+ };
39
+ const text = readText(settingsFile);
40
+ const user = servers(text);
41
+ const state = {
42
+ present: isCanonicalLocalEntry(user?.['align'], o) || isCanonicalLocalEntry(user?.['align-local'], o),
43
+ overridden: [],
44
+ settingsFile,
45
+ commented: text !== null && text.trim() !== '' && !strictParse(text) && parseJsonc(text) !== null,
46
+ };
47
+ if (user && 'align-local' in user && !isCanonicalLocalEntry(user['align-local'], o))
48
+ state.conflict = settingsFile;
49
+ for (const dir of ancestors(cwd)) {
50
+ const file = path.join(dir, '.amp', 'settings.json');
51
+ if (file === settingsFile)
52
+ continue;
53
+ const ws = servers(readText(file));
54
+ if (ws && 'align-local' in ws && !isCanonicalLocalEntry(ws['align-local'], o)) {
55
+ state.conflict ??= file;
56
+ break;
57
+ }
58
+ }
59
+ return state;
60
+ }
61
+ //# sourceMappingURL=amp-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amp-state.js","sourceRoot":"","sources":["../../../src/lib/launch/amp-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { type AlignLocalState } from './strict-entry.js';
2
+ export interface AuggieProjectState extends AlignLocalState {
3
+ /** `<augment cache dir>/settings.json`, the user layer: the one file align adds to. */
4
+ settingsFile: string;
5
+ /** It parses only with its comments stripped: align never rewrites it (the comments would go). */
6
+ commented: boolean;
7
+ }
8
+ /**
9
+ * What Auggie would already load for align (auggie 0.36.0, read from its bundle and checked with
10
+ * `auggie mcp list --json` in a sandbox). Layers: managed, then for the workspace root
11
+ * `.augment/settings.local.json` and `.augment/settings.json`, then the user file
12
+ * `<--augment-cache-dir, default ~/.augment>/settings.json`. A same-named server in a workspace
13
+ * layer replaced the user's. So:
14
+ * - a canonical align-local (or `align`) in any layer: present, nothing to add;
15
+ * - a non-canonical align-local in any layer: a conflict. In a repo layer it would replace ours;
16
+ * in the user file the writer adds and never edits.
17
+ * Files are parsed as Auggie parses them (comments and trailing commas allowed), and a layer align
18
+ * still cannot parse that names align at all is a conflict too (fail closed).
19
+ * The workspace root is the git root unless `-w/--workspace-root` names one: every ancestor of the
20
+ * cwd is read (a superset), plus the named root.
21
+ */
22
+ export declare function readAuggieState(cwd: string, home: string, opts: {
23
+ localIsDefault: boolean;
24
+ }, env: Record<string, string | undefined>, platform: string, passthrough: string[]): AuggieProjectState;
25
+ //# sourceMappingURL=auggie-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auggie-state.d.ts","sourceRoot":"","sources":["../../../src/lib/launch/auggie-state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAA4E,MAAM,mBAAmB,CAAC;AAEnI,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,uFAAuF;IACvF,YAAY,EAAE,MAAM,CAAC;IACrB,kGAAkG;IAClG,SAAS,EAAE,OAAO,CAAC;CACpB;AAqBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,cAAc,EAAE,OAAO,CAAA;CAAE,EACjC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EAAE,GACpB,kBAAkB,CAmCpB"}
@@ -0,0 +1,74 @@
1
+ import path from 'node:path';
2
+ import { ancestors, optionValue, readText } from './layer-files.js';
3
+ import { isCanonicalLocalEntry, parseJsoncTrailingCommas, unreadableMentionsAlign } from './strict-entry.js';
4
+ const isObject = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
5
+ function strictParse(text) {
6
+ try {
7
+ JSON.parse(text);
8
+ return true;
9
+ }
10
+ catch {
11
+ return false;
12
+ }
13
+ }
14
+ /** Auggie's managed settings: /etc/augment, or %ProgramData%\augment (its bundle, n1e()). */
15
+ function managedFile(env, platform) {
16
+ return platform === 'win32'
17
+ ? path.win32.join(env['ProgramData'] || 'C:\\ProgramData', 'augment', 'settings.json')
18
+ : path.posix.join('/etc', 'augment', 'settings.json');
19
+ }
20
+ /**
21
+ * What Auggie would already load for align (auggie 0.36.0, read from its bundle and checked with
22
+ * `auggie mcp list --json` in a sandbox). Layers: managed, then for the workspace root
23
+ * `.augment/settings.local.json` and `.augment/settings.json`, then the user file
24
+ * `<--augment-cache-dir, default ~/.augment>/settings.json`. A same-named server in a workspace
25
+ * layer replaced the user's. So:
26
+ * - a canonical align-local (or `align`) in any layer: present, nothing to add;
27
+ * - a non-canonical align-local in any layer: a conflict. In a repo layer it would replace ours;
28
+ * in the user file the writer adds and never edits.
29
+ * Files are parsed as Auggie parses them (comments and trailing commas allowed), and a layer align
30
+ * still cannot parse that names align at all is a conflict too (fail closed).
31
+ * The workspace root is the git root unless `-w/--workspace-root` names one: every ancestor of the
32
+ * cwd is read (a superset), plus the named root.
33
+ */
34
+ export function readAuggieState(cwd, home, opts, env, platform, passthrough) {
35
+ const o = { ...opts, platform, host: 'auggie' };
36
+ const cacheDir = optionValue(passthrough, '--augment-cache-dir');
37
+ const settingsFile = cacheDir ? path.join(path.resolve(cacheDir), 'settings.json') : path.join(home, '.augment', 'settings.json');
38
+ const root = optionValue(passthrough, '--workspace-root') ?? optionValue(passthrough, '-w');
39
+ const roots = [...(root ? [path.resolve(cwd, root)] : []), ...ancestors(cwd)];
40
+ const files = [
41
+ managedFile(env, platform),
42
+ ...roots.flatMap((d) => [path.join(d, '.augment', 'settings.local.json'), path.join(d, '.augment', 'settings.json')]),
43
+ settingsFile,
44
+ ].filter((f, i, all) => all.indexOf(f) === i);
45
+ const text = readText(settingsFile);
46
+ const state = {
47
+ present: false,
48
+ overridden: [],
49
+ settingsFile,
50
+ // Comments or a trailing comma: Auggie accepts both, and a JSON rewrite would drop them.
51
+ commented: text !== null && text.trim() !== '' && !strictParse(text) && parseJsoncTrailingCommas(text) !== null,
52
+ };
53
+ for (const file of files) {
54
+ const body = file === settingsFile ? text : readText(file);
55
+ const parsed = parseJsoncTrailingCommas(body);
56
+ if (unreadableMentionsAlign(body, parsed)) {
57
+ state.conflict ??= file;
58
+ continue;
59
+ }
60
+ const servers = parsed?.['mcpServers'];
61
+ if (!isObject(servers))
62
+ continue;
63
+ if (isCanonicalLocalEntry(servers['align'], o))
64
+ state.present = true;
65
+ if (!('align-local' in servers))
66
+ continue;
67
+ if (isCanonicalLocalEntry(servers['align-local'], o))
68
+ state.present = true;
69
+ else
70
+ state.conflict ??= file;
71
+ }
72
+ return state;
73
+ }
74
+ //# sourceMappingURL=auggie-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auggie-state.js","sourceRoot":"","sources":["../../../src/lib/launch/auggie-state.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAwB,qBAAqB,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAUnI,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAa,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAErG,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,6FAA6F;AAC7F,SAAS,WAAW,CAAC,GAAuC,EAAE,QAAgB;IAC5E,OAAO,QAAQ,KAAK,OAAO;QACzB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,iBAAiB,EAAE,SAAS,EAAE,eAAe,CAAC;QACtF,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAC7B,GAAW,EACX,IAAY,EACZ,IAAiC,EACjC,GAAuC,EACvC,QAAgB,EAChB,WAAqB;IAErB,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC;IACzD,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IAClI,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE,kBAAkB,CAAC,IAAI,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC5F,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG;QACZ,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC;QAC1B,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,qBAAqB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;QACrH,YAAY;KACb,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAE9C,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACpC,MAAM,KAAK,GAAuB;QAChC,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,EAAE;QACd,YAAY;QACZ,yFAAyF;QACzF,SAAS,EAAE,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC,KAAK,IAAI;KAChH,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC;YACxB,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QACjC,IAAI,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACrE,IAAI,CAAC,CAAC,aAAa,IAAI,OAAO,CAAC;YAAE,SAAS;QAC1C,IAAI,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;;YACtE,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { type AlignLocalState } from './strict-entry.js';
2
+ export interface ClineProjectState extends AlignLocalState {
3
+ /** The one MCP settings file Cline CLI loads: the file align adds to. */
4
+ mcpFile: string;
5
+ /** The user's --config or --data-dir chose that file for this session only: align writes nothing there. */
6
+ oneSession: boolean;
7
+ /** Align's own entry, with an older key set or values that have changed since: refresh it. */
8
+ stale?: boolean;
9
+ /** The conflict is an env value Align did not write: which key. */
10
+ envConflictKey?: string;
11
+ }
12
+ export declare function clineMcpFile(home: string, env: Record<string, string | undefined>, passthrough: string[]): string;
13
+ /**
14
+ * The variables that place Cline's files, as cline would resolve them this launch. Cline loads
15
+ * `.env`/`.env.local` from the cwd, so the launch pins them (only those the user did not export);
16
+ * a process variable wins over its dotenv. CLINE_DIR is pinned to the user's own dir even with
17
+ * `--config`, which beats it anyway; CLINE_DATA_DIR follows `--config` and `--data-dir`, because an
18
+ * exported one beats `--config` (checked) and must not undo the user's flag. Without `--data-dir`,
19
+ * the sandbox switches are pinned off: a repo `.env` with CLINE_SANDBOX=1 would move the data dir
20
+ * and the provider settings. Empty is a no-op for all three in cline's source (`?.trim()` checks).
21
+ */
22
+ export declare function clinePins(home: string, env: Record<string, string | undefined>, passthrough: string[]): Record<string, string>;
23
+ /**
24
+ * What Cline CLI would already load for align (cline 3.0.70): one MCP settings file, no repo
25
+ * layer (checked in a sandbox: a repo's `.cline/` MCP files were not listed by `cline config
26
+ * --json`). A canonical align-local or `align` there is present; any other align-local is a
27
+ * conflict, because the writer adds and never edits.
28
+ */
29
+ export declare function readClineState(_cwd: string, home: string, opts: {
30
+ localIsDefault: boolean;
31
+ }, env: Record<string, string | undefined>, platform: string, passthrough: string[]): ClineProjectState;
32
+ //# sourceMappingURL=cline-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cline-state.d.ts","sourceRoot":"","sources":["../../../src/lib/launch/cline-state.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,eAAe,EAAqF,MAAM,mBAAmB,CAAC;AAE5I,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,2GAA2G;IAC3G,UAAU,EAAE,OAAO,CAAC;IACpB,8FAA8F;IAC9F,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAwBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAEjH;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAS9H;AA2BD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,cAAc,EAAE,OAAO,CAAA;CAAE,EACjC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EAAE,GACpB,iBAAiB,CAqBnB"}
@@ -0,0 +1,108 @@
1
+ import path from 'node:path';
2
+ import { optionValue, readText } from './layer-files.js';
3
+ import { classifyChildEnv } from './mcp-child-env.js';
4
+ import { isCanonicalLocalEntry, parseJsonc, unreadableMentionsAlign } from './strict-entry.js';
5
+ const isObject = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
6
+ const FILE = 'cline_mcp_settings.json';
7
+ /**
8
+ * Where a Cline session reads its MCP servers (cline 3.0.70, its bundled path code):
9
+ * CLINE_MCP_SETTINGS_PATH; else `<data dir>/settings/cline_mcp_settings.json`. The data dir is the
10
+ * user's `--data-dir` (its sandbox setup sets CLINE_DATA_DIR from it; checked in a real session:
11
+ * `cline --data-dir X "..."` loaded X/settings' server), else CLINE_DATA_DIR, else
12
+ * `<cline dir>/data`, the cline dir being the user's `--config` dir, else CLINE_DIR, else ~/.cline.
13
+ * (`cline config --json` ignores --data-dir, which is why an earlier check misread it.)
14
+ */
15
+ function clineDirs(home, env, passthrough) {
16
+ const configFlag = optionValue(passthrough, '--config');
17
+ const dataFlag = optionValue(passthrough, '--data-dir');
18
+ const userDir = env['CLINE_DIR']?.trim() ? path.resolve(env['CLINE_DIR'].trim()) : path.join(home, '.cline');
19
+ const clineDir = configFlag ? path.resolve(configFlag) : userDir;
20
+ const dataDir = dataFlag ? path.resolve(dataFlag) : env['CLINE_DATA_DIR']?.trim() ? path.resolve(env['CLINE_DATA_DIR'].trim()) : path.join(clineDir, 'data');
21
+ const mcp = env['CLINE_MCP_SETTINGS_PATH']?.trim();
22
+ return { clineDir: userDir, dataDir, mcpFile: mcp ? path.resolve(mcp) : path.join(dataDir, 'settings', FILE) };
23
+ }
24
+ export function clineMcpFile(home, env, passthrough) {
25
+ return clineDirs(home, env, passthrough).mcpFile;
26
+ }
27
+ /**
28
+ * The variables that place Cline's files, as cline would resolve them this launch. Cline loads
29
+ * `.env`/`.env.local` from the cwd, so the launch pins them (only those the user did not export);
30
+ * a process variable wins over its dotenv. CLINE_DIR is pinned to the user's own dir even with
31
+ * `--config`, which beats it anyway; CLINE_DATA_DIR follows `--config` and `--data-dir`, because an
32
+ * exported one beats `--config` (checked) and must not undo the user's flag. Without `--data-dir`,
33
+ * the sandbox switches are pinned off: a repo `.env` with CLINE_SANDBOX=1 would move the data dir
34
+ * and the provider settings. Empty is a no-op for all three in cline's source (`?.trim()` checks).
35
+ */
36
+ export function clinePins(home, env, passthrough) {
37
+ const d = clineDirs(home, env, passthrough);
38
+ // Cline reads each one with `?.trim()` and skips it when empty (cline 3.0.70 bundled binary:
39
+ // the sandbox switch in Ed(), P(), lh(), Xd(), xi(), oa()), so empty is a no-op. With
40
+ // --data-dir, cline's own sandbox setup sets these from the flag.
41
+ const sandboxOff = optionValue(passthrough, '--data-dir') === undefined
42
+ ? { CLINE_SANDBOX: '', CLINE_SANDBOX_DATA_DIR: '', CLINE_PROVIDER_SETTINGS_PATH: '', CLINE_GLOBAL_SETTINGS_PATH: '', CLINE_SESSION_DATA_DIR: '', CLINE_DB_DATA_DIR: '' }
43
+ : {};
44
+ return { CLINE_DIR: d.clineDir, CLINE_DATA_DIR: d.dataDir, CLINE_MCP_SETTINGS_PATH: d.mcpFile, ...sandboxOff };
45
+ }
46
+ /** `cline mcp add` wraps the command in `transport` (3.0.70); the flat form loads too. */
47
+ function unwrap(entry) {
48
+ if (isObject(entry) && Object.keys(entry).length === 1 && isObject(entry['transport'])) {
49
+ const { type, ...rest } = entry['transport'];
50
+ return type === 'stdio' ? rest : undefined;
51
+ }
52
+ return entry;
53
+ }
54
+ /**
55
+ * Align's own entry, judged with today's environment: `present` (no env block, or a current
56
+ * one), `stale` (Align's block from an older key set, or values that have changed: refresh it),
57
+ * `envConflict` (an env value Align never writes) or `foreign` (anything else).
58
+ */
59
+ function judge(entry, o, env) {
60
+ const e = unwrap(entry);
61
+ if (!isObject(e))
62
+ return { kind: 'foreign' };
63
+ if (!('env' in e))
64
+ return isCanonicalLocalEntry(e, o) ? { kind: 'present' } : { kind: 'foreign' };
65
+ const { env: block, ...rest } = e;
66
+ if (!isCanonicalLocalEntry(rest, o))
67
+ return { kind: 'foreign' };
68
+ const c = classifyChildEnv(block, env);
69
+ if (c.kind === 'foreign')
70
+ return { kind: 'envConflict', key: c.key };
71
+ return { kind: c.kind === 'current' ? 'present' : 'stale' };
72
+ }
73
+ /**
74
+ * What Cline CLI would already load for align (cline 3.0.70): one MCP settings file, no repo
75
+ * layer (checked in a sandbox: a repo's `.cline/` MCP files were not listed by `cline config
76
+ * --json`). A canonical align-local or `align` there is present; any other align-local is a
77
+ * conflict, because the writer adds and never edits.
78
+ */
79
+ export function readClineState(_cwd, home, opts, env, platform, passthrough) {
80
+ const o = { ...opts, platform, host: 'mcpServers' };
81
+ const mcpFile = clineMcpFile(home, env, passthrough);
82
+ const oneSession = optionValue(passthrough, '--config') !== undefined || optionValue(passthrough, '--data-dir') !== undefined;
83
+ const state = { present: false, overridden: [], mcpFile, oneSession };
84
+ const text = readText(mcpFile);
85
+ const parsed = parseJsonc(text);
86
+ // Fail closed: a file align cannot parse but that names align may hold a server it cannot see.
87
+ if (unreadableMentionsAlign(text, parsed))
88
+ return { ...state, conflict: mcpFile };
89
+ const servers = parsed?.['mcpServers'];
90
+ if (!isObject(servers))
91
+ return state;
92
+ if (judge(servers['align'], o, env).kind === 'present')
93
+ state.present = true;
94
+ if (!('align-local' in servers))
95
+ return state;
96
+ const v = judge(servers['align-local'], o, env);
97
+ if (v.kind === 'present')
98
+ state.present = true;
99
+ else if (v.kind === 'stale')
100
+ state.stale = true;
101
+ else {
102
+ state.conflict = mcpFile;
103
+ if (v.kind === 'envConflict')
104
+ state.envConflictKey = v.key;
105
+ }
106
+ return state;
107
+ }
108
+ //# sourceMappingURL=cline-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cline-state.js","sourceRoot":"","sources":["../../../src/lib/launch/cline-state.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAA+C,qBAAqB,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAc5I,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAa,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACrG,MAAM,IAAI,GAAG,yBAAyB,CAAC;AAEvC;;;;;;;GAOG;AACH,SAAS,SAAS,CAAC,IAAY,EAAE,GAAuC,EAAE,WAAqB;IAC7F,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7G,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACjE,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7J,MAAM,GAAG,GAAG,GAAG,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,CAAC;IACnD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC;AACjH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,GAAuC,EAAE,WAAqB;IACvG,OAAO,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC;AACnD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,GAAuC,EAAE,WAAqB;IACpG,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;IAC5C,6FAA6F;IAC7F,sFAAsF;IACtF,kEAAkE;IAClE,MAAM,UAAU,GAA2B,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,KAAK,SAAS;QAC7F,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,sBAAsB,EAAE,EAAE,EAAE,4BAA4B,EAAE,EAAE,EAAE,0BAA0B,EAAE,EAAE,EAAE,sBAAsB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE;QACxK,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;AACjH,CAAC;AAED,0FAA0F;AAC1F,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACvF,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,KAAK,CAAC,KAAc,EAAE,CAAmB,EAAE,GAAuC;IACzF,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC7C,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAAE,OAAO,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAClG,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAChE,MAAM,CAAC,GAAG,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IACrE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAC9D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,IAAY,EACZ,IAAiC,EACjC,GAAuC,EACvC,QAAgB,EAChB,WAAqB;IAErB,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAqB,EAAE,CAAC;IAC7D,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,SAAS,IAAI,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,KAAK,SAAS,CAAC;IAC9H,MAAM,KAAK,GAAsB,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACzF,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,+FAA+F;IAC/F,IAAI,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC;QAAE,OAAO,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAClF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,SAAS;QAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;IAC7E,IAAI,CAAC,CAAC,aAAa,IAAI,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAChD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;QAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;SAC1C,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;SAC3C,CAAC;QACJ,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;QACzB,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa;YAAE,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -8,7 +8,8 @@
8
8
  * hooks.json entry written for a CLI launch would not be known to run.
9
9
  */
10
10
  export interface ConfigWrite {
11
- kind: 'mcp-entry';
11
+ /** mcp-entry: a key under `topKey` in a JSON file. toml-mcp-entry: a `[mcp_servers.<name>]` table appended to a TOML file. */
12
+ kind: 'mcp-entry' | 'toml-mcp-entry';
12
13
  file: string;
13
14
  topKey: string;
14
15
  name: string;
@@ -17,6 +18,10 @@ export interface ConfigWrite {
17
18
  root?: string;
18
19
  /** One extra line after the first write (what the user has to do next). */
19
20
  hint?: string;
21
+ /** Replace an entry of this name that is Align's own (a stale env block), instead of adding only. */
22
+ replace?: true;
23
+ /** JSON only: the tail of the invalid-JSON message, for a file whose agent reads more than strict JSON (Gemini's settings take comments). */
24
+ invalidJsonAdvice?: string;
20
25
  }
21
26
  /**
22
27
  * Remembers a refused write, so its notice is printed once rather than on every launch. It is
@@ -34,4 +39,9 @@ export interface RefusedMemo {
34
39
  * the caller reports it and launches anyway.
35
40
  */
36
41
  export declare function applyConfigWrite(w: ConfigWrite, note: (line: string) => void, memo?: RefusedMemo): void;
42
+ /** The block align owns in a TOML file: `align use --undo` takes out exactly this region. */
43
+ export declare function tomlMarkers(name: string): {
44
+ start: string;
45
+ end: string;
46
+ };
37
47
  //# sourceMappingURL=config-writes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-writes.d.ts","sourceRoot":"","sources":["../../../src/lib/launch/config-writes.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,yHAAyH;IACzH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAKD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,CAiBvG"}
1
+ {"version":3,"file":"config-writes.d.ts","sourceRoot":"","sources":["../../../src/lib/launch/config-writes.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,8HAA8H;IAC9H,IAAI,EAAE,WAAW,GAAG,gBAAgB,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,yHAAyH;IACzH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qGAAqG;IACrG,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,6IAA6I;IAC7I,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAKD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,CAuBvG;AAED,6FAA6F;AAC7F,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAExE"}