agim-cli 1.2.22 → 1.2.35

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 (307) hide show
  1. package/CHANGELOG.md +151 -0
  2. package/README.md +8 -8
  3. package/README.zh-CN.md +6 -6
  4. package/dist/cli-ui/cmd-handlers.d.ts.map +1 -1
  5. package/dist/cli-ui/cmd-handlers.js +172 -13
  6. package/dist/cli-ui/cmd-handlers.js.map +1 -1
  7. package/dist/cli-ui/config-wizard.d.ts.map +1 -1
  8. package/dist/cli-ui/config-wizard.js +134 -24
  9. package/dist/cli-ui/config-wizard.js.map +1 -1
  10. package/dist/cli-ui/i18n.d.ts +33 -4
  11. package/dist/cli-ui/i18n.d.ts.map +1 -1
  12. package/dist/cli-ui/i18n.js +66 -8
  13. package/dist/cli-ui/i18n.js.map +1 -1
  14. package/dist/cli-ui/service.d.ts +44 -0
  15. package/dist/cli-ui/service.d.ts.map +1 -1
  16. package/dist/cli-ui/service.js +176 -8
  17. package/dist/cli-ui/service.js.map +1 -1
  18. package/dist/cli.js +193 -33
  19. package/dist/cli.js.map +1 -1
  20. package/dist/core/access-token.d.ts +51 -5
  21. package/dist/core/access-token.d.ts.map +1 -1
  22. package/dist/core/access-token.js +114 -15
  23. package/dist/core/access-token.js.map +1 -1
  24. package/dist/core/acp-server.d.ts.map +1 -1
  25. package/dist/core/acp-server.js +44 -3
  26. package/dist/core/acp-server.js.map +1 -1
  27. package/dist/core/admin-allowlist.d.ts +4 -1
  28. package/dist/core/admin-allowlist.d.ts.map +1 -1
  29. package/dist/core/admin-allowlist.js +14 -1
  30. package/dist/core/admin-allowlist.js.map +1 -1
  31. package/dist/core/admin-bootstrap.d.ts.map +1 -1
  32. package/dist/core/admin-bootstrap.js +8 -5
  33. package/dist/core/admin-bootstrap.js.map +1 -1
  34. package/dist/core/agent-base.d.ts.map +1 -1
  35. package/dist/core/agent-base.js +25 -0
  36. package/dist/core/agent-base.js.map +1 -1
  37. package/dist/core/agent-cwd.d.ts +1 -1
  38. package/dist/core/agent-cwd.d.ts.map +1 -1
  39. package/dist/core/agent-cwd.js +73 -2
  40. package/dist/core/agent-cwd.js.map +1 -1
  41. package/dist/core/agent-helper.d.ts +1 -1
  42. package/dist/core/agent-helper.js +4 -4
  43. package/dist/core/agent-helper.js.map +1 -1
  44. package/dist/core/approval-bus.d.ts +10 -0
  45. package/dist/core/approval-bus.d.ts.map +1 -1
  46. package/dist/core/approval-bus.js +130 -0
  47. package/dist/core/approval-bus.js.map +1 -1
  48. package/dist/core/approval-router.d.ts.map +1 -1
  49. package/dist/core/approval-router.js +18 -0
  50. package/dist/core/approval-router.js.map +1 -1
  51. package/dist/core/artifacts.d.ts +9 -1
  52. package/dist/core/artifacts.d.ts.map +1 -1
  53. package/dist/core/artifacts.js +22 -5
  54. package/dist/core/artifacts.js.map +1 -1
  55. package/dist/core/audit-log.d.ts +28 -0
  56. package/dist/core/audit-log.d.ts.map +1 -1
  57. package/dist/core/audit-log.js +100 -2
  58. package/dist/core/audit-log.js.map +1 -1
  59. package/dist/core/commands/coord.d.ts +4 -0
  60. package/dist/core/commands/coord.d.ts.map +1 -0
  61. package/dist/core/commands/coord.js +88 -0
  62. package/dist/core/commands/coord.js.map +1 -0
  63. package/dist/core/commands/service.d.ts +6 -5
  64. package/dist/core/commands/service.d.ts.map +1 -1
  65. package/dist/core/commands/service.js +59 -8
  66. package/dist/core/commands/service.js.map +1 -1
  67. package/dist/core/coord-systems.d.ts +10 -1
  68. package/dist/core/coord-systems.d.ts.map +1 -1
  69. package/dist/core/coord-systems.js +42 -17
  70. package/dist/core/coord-systems.js.map +1 -1
  71. package/dist/core/feature-flags.d.ts +10 -0
  72. package/dist/core/feature-flags.d.ts.map +1 -0
  73. package/dist/core/feature-flags.js +30 -0
  74. package/dist/core/feature-flags.js.map +1 -0
  75. package/dist/core/intent.d.ts.map +1 -1
  76. package/dist/core/intent.js +0 -4
  77. package/dist/core/intent.js.map +1 -1
  78. package/dist/core/logger.d.ts +31 -0
  79. package/dist/core/logger.d.ts.map +1 -1
  80. package/dist/core/logger.js +41 -1
  81. package/dist/core/logger.js.map +1 -1
  82. package/dist/core/memo-rpc.d.ts.map +1 -1
  83. package/dist/core/memo-rpc.js +6 -0
  84. package/dist/core/memo-rpc.js.map +1 -1
  85. package/dist/core/memory-distill.js +1 -1
  86. package/dist/core/memory-distill.js.map +1 -1
  87. package/dist/core/memory-rpc.d.ts.map +1 -1
  88. package/dist/core/memory-rpc.js +55 -12
  89. package/dist/core/memory-rpc.js.map +1 -1
  90. package/dist/core/memory.d.ts +5 -0
  91. package/dist/core/memory.d.ts.map +1 -1
  92. package/dist/core/memory.js +151 -1
  93. package/dist/core/memory.js.map +1 -1
  94. package/dist/core/memos.d.ts.map +1 -1
  95. package/dist/core/memos.js +20 -2
  96. package/dist/core/memos.js.map +1 -1
  97. package/dist/core/onboarding.d.ts +6 -0
  98. package/dist/core/onboarding.d.ts.map +1 -1
  99. package/dist/core/onboarding.js +21 -10
  100. package/dist/core/onboarding.js.map +1 -1
  101. package/dist/core/outbox.d.ts +8 -1
  102. package/dist/core/outbox.d.ts.map +1 -1
  103. package/dist/core/outbox.js +46 -2
  104. package/dist/core/outbox.js.map +1 -1
  105. package/dist/core/persona.d.ts.map +1 -1
  106. package/dist/core/persona.js +1 -18
  107. package/dist/core/persona.js.map +1 -1
  108. package/dist/core/prompt-injection-guard.d.ts +23 -0
  109. package/dist/core/prompt-injection-guard.d.ts.map +1 -0
  110. package/dist/core/prompt-injection-guard.js +94 -0
  111. package/dist/core/prompt-injection-guard.js.map +1 -0
  112. package/dist/core/registry.d.ts +8 -0
  113. package/dist/core/registry.d.ts.map +1 -1
  114. package/dist/core/registry.js +41 -7
  115. package/dist/core/registry.js.map +1 -1
  116. package/dist/core/restart-flow.d.ts.map +1 -1
  117. package/dist/core/restart-flow.js +27 -0
  118. package/dist/core/restart-flow.js.map +1 -1
  119. package/dist/core/router.d.ts.map +1 -1
  120. package/dist/core/router.js +22 -0
  121. package/dist/core/router.js.map +1 -1
  122. package/dist/core/sensitive-paths.d.ts +28 -0
  123. package/dist/core/sensitive-paths.d.ts.map +1 -0
  124. package/dist/core/sensitive-paths.js +234 -0
  125. package/dist/core/sensitive-paths.js.map +1 -0
  126. package/dist/core/session.d.ts +9 -0
  127. package/dist/core/session.d.ts.map +1 -1
  128. package/dist/core/session.js +35 -4
  129. package/dist/core/session.js.map +1 -1
  130. package/dist/core/types.d.ts +9 -1
  131. package/dist/core/types.d.ts.map +1 -1
  132. package/dist/core/user-coord-prefs.d.ts +17 -0
  133. package/dist/core/user-coord-prefs.d.ts.map +1 -0
  134. package/dist/core/user-coord-prefs.js +86 -0
  135. package/dist/core/user-coord-prefs.js.map +1 -0
  136. package/dist/core/viewer-local.d.ts +4 -0
  137. package/dist/core/viewer-local.d.ts.map +1 -1
  138. package/dist/core/viewer-local.js +74 -0
  139. package/dist/core/viewer-local.js.map +1 -1
  140. package/dist/plugins/agents/antigravity/ensure-mcp-config.d.ts +49 -0
  141. package/dist/plugins/agents/antigravity/ensure-mcp-config.d.ts.map +1 -0
  142. package/dist/plugins/agents/antigravity/ensure-mcp-config.js +110 -0
  143. package/dist/plugins/agents/antigravity/ensure-mcp-config.js.map +1 -0
  144. package/dist/plugins/agents/antigravity/index.d.ts +34 -0
  145. package/dist/plugins/agents/antigravity/index.d.ts.map +1 -0
  146. package/dist/plugins/agents/antigravity/index.js +330 -0
  147. package/dist/plugins/agents/antigravity/index.js.map +1 -0
  148. package/dist/plugins/agents/claude-code/mcp-approval-server.js +5 -5
  149. package/dist/plugins/agents/claude-code/mcp-approval-server.js.map +1 -1
  150. package/dist/plugins/messengers/feishu/card-builder.d.ts.map +1 -1
  151. package/dist/plugins/messengers/feishu/card-builder.js +0 -1
  152. package/dist/plugins/messengers/feishu/card-builder.js.map +1 -1
  153. package/dist/plugins/messengers/telegram/telegram-adapter.d.ts.map +1 -1
  154. package/dist/plugins/messengers/telegram/telegram-adapter.js +11 -2
  155. package/dist/plugins/messengers/telegram/telegram-adapter.js.map +1 -1
  156. package/dist/utils/cross-platform.d.ts +0 -5
  157. package/dist/utils/cross-platform.d.ts.map +1 -1
  158. package/dist/utils/cross-platform.js +1 -21
  159. package/dist/utils/cross-platform.js.map +1 -1
  160. package/dist/web/public/assets/{a2a-Dk2fSs33.js → a2a-BFM2Ojvs.js} +2 -2
  161. package/dist/web/public/assets/{a2a-Dk2fSs33.js.map → a2a-BFM2Ojvs.js.map} +1 -1
  162. package/dist/web/public/assets/{activity-eiIPshcV.js → activity-DNe1vn9s.js} +2 -2
  163. package/dist/web/public/assets/{activity-eiIPshcV.js.map → activity-DNe1vn9s.js.map} +1 -1
  164. package/dist/web/public/assets/{admins-DlbQYdW_.js → admins-DtIF8yji.js} +2 -2
  165. package/dist/web/public/assets/{admins-DlbQYdW_.js.map → admins-DtIF8yji.js.map} +1 -1
  166. package/dist/web/public/assets/agents-BJ3jyH1u.js +12 -0
  167. package/dist/web/public/assets/agents-BJ3jyH1u.js.map +1 -0
  168. package/dist/web/public/assets/{approvals-DlXS_sKD.js → approvals-8ifx3_0b.js} +2 -2
  169. package/dist/web/public/assets/{approvals-DlXS_sKD.js.map → approvals-8ifx3_0b.js.map} +1 -1
  170. package/dist/web/public/assets/{audit-C8I8xC_6.js → audit-BiFOljMy.js} +2 -2
  171. package/dist/web/public/assets/{audit-C8I8xC_6.js.map → audit-BiFOljMy.js.map} +1 -1
  172. package/dist/web/public/assets/{bgjobs-PFYinH7D.js → bgjobs-Dve01ab0.js} +2 -2
  173. package/dist/web/public/assets/{bgjobs-PFYinH7D.js.map → bgjobs-Dve01ab0.js.map} +1 -1
  174. package/dist/web/public/assets/{brain-DEEJttEL.js → brain-BI78EY6_.js} +2 -2
  175. package/dist/web/public/assets/{brain-DEEJttEL.js.map → brain-BI78EY6_.js.map} +1 -1
  176. package/dist/web/public/assets/{briefcase-BlMy8gI6.js → briefcase-CuwoOW31.js} +2 -2
  177. package/dist/web/public/assets/{briefcase-BlMy8gI6.js.map → briefcase-CuwoOW31.js.map} +1 -1
  178. package/dist/web/public/assets/{chevron-right-DmABPvoA.js → chevron-right-D5JanEQ3.js} +2 -2
  179. package/dist/web/public/assets/{chevron-right-DmABPvoA.js.map → chevron-right-D5JanEQ3.js.map} +1 -1
  180. package/dist/web/public/assets/{circle-check-C0Qpg1vL.js → circle-check-DXMzdFtD.js} +2 -2
  181. package/dist/web/public/assets/{circle-check-C0Qpg1vL.js.map → circle-check-DXMzdFtD.js.map} +1 -1
  182. package/dist/web/public/assets/{circle-check-big-C8LG3beV.js → circle-check-big-CyJIIhiq.js} +2 -2
  183. package/dist/web/public/assets/{circle-check-big-C8LG3beV.js.map → circle-check-big-CyJIIhiq.js.map} +1 -1
  184. package/dist/web/public/assets/{circle-x-D_cRHcHK.js → circle-x-DTwfNpvp.js} +2 -2
  185. package/dist/web/public/assets/{circle-x-D_cRHcHK.js.map → circle-x-DTwfNpvp.js.map} +1 -1
  186. package/dist/web/public/assets/{confirm-dialog-Baz_xFle.js → confirm-dialog-F0sdcLGN.js} +2 -2
  187. package/dist/web/public/assets/{confirm-dialog-Baz_xFle.js.map → confirm-dialog-F0sdcLGN.js.map} +1 -1
  188. package/dist/web/public/assets/{data-table--I_ktDF4.js → data-table-DN_-VLbp.js} +2 -2
  189. package/dist/web/public/assets/{data-table--I_ktDF4.js.map → data-table-DN_-VLbp.js.map} +1 -1
  190. package/dist/web/public/assets/{dialog-DZpoEskO.js → dialog-CM16nfWK.js} +2 -2
  191. package/dist/web/public/assets/{dialog-DZpoEskO.js.map → dialog-CM16nfWK.js.map} +1 -1
  192. package/dist/web/public/assets/{download-DbFGHwZ5.js → download-tFqY3Zj6.js} +2 -2
  193. package/dist/web/public/assets/{download-DbFGHwZ5.js.map → download-tFqY3Zj6.js.map} +1 -1
  194. package/dist/web/public/assets/{email-BB1Hq8eE.js → email-By2-ARPV.js} +2 -2
  195. package/dist/web/public/assets/{email-BB1Hq8eE.js.map → email-By2-ARPV.js.map} +1 -1
  196. package/dist/web/public/assets/{empty-state-DXNa90pP.js → empty-state-Dq9_8t-M.js} +2 -2
  197. package/dist/web/public/assets/{empty-state-DXNa90pP.js.map → empty-state-Dq9_8t-M.js.map} +1 -1
  198. package/dist/web/public/assets/{external-link-nhnJN0qg.js → external-link-amfAWSUX.js} +2 -2
  199. package/dist/web/public/assets/{external-link-nhnJN0qg.js.map → external-link-amfAWSUX.js.map} +1 -1
  200. package/dist/web/public/assets/{eye-IKkn_oUo.js → eye-BfgN09Lx.js} +2 -2
  201. package/dist/web/public/assets/{eye-IKkn_oUo.js.map → eye-BfgN09Lx.js.map} +1 -1
  202. package/dist/web/public/assets/{facts-C7Qy9vTw.js → facts-uvL__ilQ.js} +2 -2
  203. package/dist/web/public/assets/{facts-C7Qy9vTw.js.map → facts-uvL__ilQ.js.map} +1 -1
  204. package/dist/web/public/assets/{health-CMRdeNEW.js → health-fiU-ueEw.js} +2 -2
  205. package/dist/web/public/assets/{health-CMRdeNEW.js.map → health-fiU-ueEw.js.map} +1 -1
  206. package/dist/web/public/assets/{hot-Bh5Nrc7i.js → hot-Dt4V3jM_.js} +2 -2
  207. package/dist/web/public/assets/{hot-Bh5Nrc7i.js.map → hot-Dt4V3jM_.js.map} +1 -1
  208. package/dist/web/public/assets/{index-CpGWCLE5.js → index-6GMwymev.js} +8 -8
  209. package/dist/web/public/assets/index-6GMwymev.js.map +1 -0
  210. package/dist/web/public/assets/{index-GpceOxum.css → index-CDYTPZH0.css} +1 -1
  211. package/dist/web/public/assets/{installed-FYLkPij2.js → installed-B_x6no76.js} +2 -2
  212. package/dist/web/public/assets/{installed-FYLkPij2.js.map → installed-B_x6no76.js.map} +1 -1
  213. package/dist/web/public/assets/{jobs-BmqLUzHp.js → jobs-LqWH3CIe.js} +2 -2
  214. package/dist/web/public/assets/{jobs-BmqLUzHp.js.map → jobs-LqWH3CIe.js.map} +1 -1
  215. package/dist/web/public/assets/layout-CvxcdPD9.js +2 -0
  216. package/dist/web/public/assets/layout-CvxcdPD9.js.map +1 -0
  217. package/dist/web/public/assets/{layout-BZaHqf69.js → layout-DHUzlXrd.js} +2 -2
  218. package/dist/web/public/assets/{layout-BZaHqf69.js.map → layout-DHUzlXrd.js.map} +1 -1
  219. package/dist/web/public/assets/{layout-CXsUyEpG.js → layout-MNk0bLGe.js} +2 -2
  220. package/dist/web/public/assets/{layout-CXsUyEpG.js.map → layout-MNk0bLGe.js.map} +1 -1
  221. package/dist/web/public/assets/{layout-DFxtpNut.js → layout-WcrkE0es.js} +2 -2
  222. package/dist/web/public/assets/{layout-DFxtpNut.js.map → layout-WcrkE0es.js.map} +1 -1
  223. package/dist/web/public/assets/{layout-d8qxPKQk.js → layout-apvyE2JN.js} +2 -2
  224. package/dist/web/public/assets/{layout-d8qxPKQk.js.map → layout-apvyE2JN.js.map} +1 -1
  225. package/dist/web/public/assets/{loader-circle-JaKY-xMt.js → loader-circle-hxNy7hSm.js} +2 -2
  226. package/dist/web/public/assets/{loader-circle-JaKY-xMt.js.map → loader-circle-hxNy7hSm.js.map} +1 -1
  227. package/dist/web/public/assets/{map-pin-hFFSWZ3B.js → map-pin-CCmA7ke2.js} +2 -2
  228. package/dist/web/public/assets/{map-pin-hFFSWZ3B.js.map → map-pin-CCmA7ke2.js.map} +1 -1
  229. package/dist/web/public/assets/{memos-EhjMUvVZ.js → memos-pEjDfEj3.js} +2 -2
  230. package/dist/web/public/assets/{memos-EhjMUvVZ.js.map → memos-pEjDfEj3.js.map} +1 -1
  231. package/dist/web/public/assets/messengers-Ba7opEc1.js +7 -0
  232. package/dist/web/public/assets/messengers-Ba7opEc1.js.map +1 -0
  233. package/dist/web/public/assets/{network-DtCI2ZUU.js → network-DJw-ei_k.js} +2 -2
  234. package/dist/web/public/assets/{network-DtCI2ZUU.js.map → network-DJw-ei_k.js.map} +1 -1
  235. package/dist/web/public/assets/{outbox-CxUbMp6o.js → outbox-Ckq-VT5C.js} +2 -2
  236. package/dist/web/public/assets/{outbox-CxUbMp6o.js.map → outbox-Ckq-VT5C.js.map} +1 -1
  237. package/dist/web/public/assets/{pagination-CkZY8YNa.js → pagination-DGS-TnI5.js} +2 -2
  238. package/dist/web/public/assets/{pagination-CkZY8YNa.js.map → pagination-DGS-TnI5.js.map} +1 -1
  239. package/dist/web/public/assets/{persona-B6TFMSnI.js → persona--LsrhCVU.js} +2 -2
  240. package/dist/web/public/assets/{persona-B6TFMSnI.js.map → persona--LsrhCVU.js.map} +1 -1
  241. package/dist/web/public/assets/{play-BxRcWaH5.js → play-Cb7co2DX.js} +2 -2
  242. package/dist/web/public/assets/{play-BxRcWaH5.js.map → play-Cb7co2DX.js.map} +1 -1
  243. package/dist/web/public/assets/{policy-ndE1Y8zD.js → policy-CbCotzr6.js} +2 -2
  244. package/dist/web/public/assets/{policy-ndE1Y8zD.js.map → policy-CbCotzr6.js.map} +1 -1
  245. package/dist/web/public/assets/{refresh-ccw-Bx817_KW.js → refresh-ccw-CINxCmwV.js} +2 -2
  246. package/dist/web/public/assets/{refresh-ccw-Bx817_KW.js.map → refresh-ccw-CINxCmwV.js.map} +1 -1
  247. package/dist/web/public/assets/{reminders-XynkGQc5.js → reminders-CSKrWre3.js} +2 -2
  248. package/dist/web/public/assets/{reminders-XynkGQc5.js.map → reminders-CSKrWre3.js.map} +1 -1
  249. package/dist/web/public/assets/{save-CqMcATrh.js → save-Bib9iAA-.js} +2 -2
  250. package/dist/web/public/assets/{save-CqMcATrh.js.map → save-Bib9iAA-.js.map} +1 -1
  251. package/dist/web/public/assets/{schedules-VM02w_Om.js → schedules-DUD_FfEX.js} +2 -2
  252. package/dist/web/public/assets/{schedules-VM02w_Om.js.map → schedules-DUD_FfEX.js.map} +1 -1
  253. package/dist/web/public/assets/{search-Ba-e1t1P.js → search-DZOHNA81.js} +2 -2
  254. package/dist/web/public/assets/{search-Ba-e1t1P.js.map → search-DZOHNA81.js.map} +1 -1
  255. package/dist/web/public/assets/{service-C-wnwJ-b.js → service-Cf7EQ4Sj.js} +3 -3
  256. package/dist/web/public/assets/{service-C-wnwJ-b.js.map → service-Cf7EQ4Sj.js.map} +1 -1
  257. package/dist/web/public/assets/{status-badge-CsdJ6k8Q.js → status-badge-RpKtiHgj.js} +2 -2
  258. package/dist/web/public/assets/{status-badge-CsdJ6k8Q.js.map → status-badge-RpKtiHgj.js.map} +1 -1
  259. package/dist/web/public/assets/{subtasks-mGRKpF0G.js → subtasks-xCHP5uI6.js} +2 -2
  260. package/dist/web/public/assets/{subtasks-mGRKpF0G.js.map → subtasks-xCHP5uI6.js.map} +1 -1
  261. package/dist/web/public/assets/{table-vmLMgj6_.js → table-S43AHY-3.js} +2 -2
  262. package/dist/web/public/assets/{table-vmLMgj6_.js.map → table-S43AHY-3.js.map} +1 -1
  263. package/dist/web/public/assets/{topn-nu66Fotx.js → topn-C2tcvmnB.js} +2 -2
  264. package/dist/web/public/assets/{topn-nu66Fotx.js.map → topn-C2tcvmnB.js.map} +1 -1
  265. package/dist/web/public/assets/{trash-2-ZIitN_U3.js → trash-2-Ct7YJmZO.js} +2 -2
  266. package/dist/web/public/assets/{trash-2-ZIitN_U3.js.map → trash-2-Ct7YJmZO.js.map} +1 -1
  267. package/dist/web/public/assets/{use-memory-DgEqHEca.js → use-memory-CCn0h8EP.js} +2 -2
  268. package/dist/web/public/assets/{use-memory-DgEqHEca.js.map → use-memory-CCn0h8EP.js.map} +1 -1
  269. package/dist/web/public/assets/{use-observability-CQev_A8e.js → use-observability-Dbal-WXR.js} +2 -2
  270. package/dist/web/public/assets/{use-observability-CQev_A8e.js.map → use-observability-Dbal-WXR.js.map} +1 -1
  271. package/dist/web/public/assets/{use-settings-CU-UcrVD.js → use-settings-erlkhPqn.js} +2 -2
  272. package/dist/web/public/assets/{use-settings-CU-UcrVD.js.map → use-settings-erlkhPqn.js.map} +1 -1
  273. package/dist/web/public/assets/{use-skills-Dr77CXLA.js → use-skills-C8Ukv8B4.js} +2 -2
  274. package/dist/web/public/assets/{use-skills-Dr77CXLA.js.map → use-skills-C8Ukv8B4.js.map} +1 -1
  275. package/dist/web/public/assets/{use-workspace-PNv9Z4de.js → use-workspace-8VZDPppc.js} +2 -2
  276. package/dist/web/public/assets/{use-workspace-PNv9Z4de.js.map → use-workspace-8VZDPppc.js.map} +1 -1
  277. package/dist/web/public/assets/{useQuery-BTyugXYV.js → useQuery-BnCHQlxq.js} +2 -2
  278. package/dist/web/public/assets/{useQuery-BTyugXYV.js.map → useQuery-BnCHQlxq.js.map} +1 -1
  279. package/dist/web/public/assets/{vector-w-Ea3pg6.js → vector-DDnIidyp.js} +2 -2
  280. package/dist/web/public/assets/{vector-w-Ea3pg6.js.map → vector-DDnIidyp.js.map} +1 -1
  281. package/dist/web/public/assets/{viewer-DKA7QP9U.js → viewer-BV0Cux3V.js} +2 -2
  282. package/dist/web/public/assets/{viewer-DKA7QP9U.js.map → viewer-BV0Cux3V.js.map} +1 -1
  283. package/dist/web/public/assets/{workspace-DVLZca7t.js → workspace-DbLMyUTn.js} +2 -2
  284. package/dist/web/public/assets/{workspace-DVLZca7t.js.map → workspace-DbLMyUTn.js.map} +1 -1
  285. package/dist/web/public/assets/{workspaces-DYZsMmY-.js → workspaces-BhF0IAJg.js} +2 -2
  286. package/dist/web/public/assets/{workspaces-DYZsMmY-.js.map → workspaces-BhF0IAJg.js.map} +1 -1
  287. package/dist/web/public/assets/{x-Ru3rHT82.js → x-BmgfwQRl.js} +2 -2
  288. package/dist/web/public/assets/{x-Ru3rHT82.js.map → x-BmgfwQRl.js.map} +1 -1
  289. package/dist/web/public/index.html +2 -2
  290. package/dist/web/public/settings.html +0 -1
  291. package/dist/web/server.d.ts.map +1 -1
  292. package/dist/web/server.js +600 -16
  293. package/dist/web/server.js.map +1 -1
  294. package/package.json +3 -2
  295. package/dist/plugins/agents/copilot/index.d.ts +0 -35
  296. package/dist/plugins/agents/copilot/index.d.ts.map +0 -1
  297. package/dist/plugins/agents/copilot/index.js +0 -182
  298. package/dist/plugins/agents/copilot/index.js.map +0 -1
  299. package/dist/web/public/assets/agents-BMI1WbZj.js +0 -12
  300. package/dist/web/public/assets/agents-BMI1WbZj.js.map +0 -1
  301. package/dist/web/public/assets/env-Bqrb9XkC.js +0 -2
  302. package/dist/web/public/assets/env-Bqrb9XkC.js.map +0 -1
  303. package/dist/web/public/assets/index-CpGWCLE5.js.map +0 -1
  304. package/dist/web/public/assets/layout-9Gp_myEd.js +0 -2
  305. package/dist/web/public/assets/layout-9Gp_myEd.js.map +0 -1
  306. package/dist/web/public/assets/messengers-BRV1IVGX.js +0 -7
  307. package/dist/web/public/assets/messengers-BRV1IVGX.js.map +0 -1
@@ -20,6 +20,17 @@ function resolveRetentionDays() {
20
20
  }
21
21
  return 30;
22
22
  }
23
+ /** R12 ⑤ — events table retention. Default 180d is GDPR-friendly and
24
+ * satisfies 等保 2.0 三级 (≥ 6 months). 0 = permanent. */
25
+ function resolveAuditEventsRetentionDays() {
26
+ const raw = process.env.IMHUB_AUDIT_EVENTS_RETENTION_DAYS;
27
+ if (raw === undefined)
28
+ return 180;
29
+ const n = parseInt(raw, 10);
30
+ if (!Number.isFinite(n) || n < 0)
31
+ return 180;
32
+ return n;
33
+ }
23
34
  /** How often to run the retention sweep (epoch-ms). 0 disables. */
24
35
  const RETENTION_SWEEP_INTERVAL_MS = 6 * 60 * 60 * 1000; // 6 hours
25
36
  let sweepTimer = null;
@@ -49,14 +60,36 @@ const helper = createSqliteHelper({
49
60
  CREATE INDEX IF NOT EXISTS idx_inv_user ON invocations(user_id);
50
61
  CREATE INDEX IF NOT EXISTS idx_inv_platform ON invocations(platform);
51
62
  CREATE INDEX IF NOT EXISTS idx_inv_intent ON invocations(intent);
63
+
64
+ -- R12 ⑤ — persistent audit table for governance events (approvals,
65
+ -- admin elevations, config / env / token / workspace mutations).
66
+ -- Separate from invocations because retention requirements differ
67
+ -- (compliance asks for ≥ 6 months on access-control events; calls
68
+ -- are typically 30 days).
69
+ CREATE TABLE IF NOT EXISTS audit_events (
70
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
71
+ ts TEXT NOT NULL DEFAULT (datetime('now')),
72
+ trace_id TEXT NOT NULL DEFAULT '',
73
+ event_type TEXT NOT NULL,
74
+ actor TEXT NOT NULL DEFAULT '',
75
+ target TEXT NOT NULL DEFAULT '',
76
+ outcome TEXT NOT NULL DEFAULT 'ok',
77
+ details TEXT NOT NULL DEFAULT '{}'
78
+ );
79
+ CREATE INDEX IF NOT EXISTS idx_audit_events_ts ON audit_events(ts);
80
+ CREATE INDEX IF NOT EXISTS idx_audit_events_type ON audit_events(event_type);
81
+ CREATE INDEX IF NOT EXISTS idx_audit_events_actor ON audit_events(actor);
52
82
  `,
53
83
  init: (d) => {
54
84
  pruneExpired(d);
85
+ pruneExpiredEvents(d);
55
86
  if (RETENTION_SWEEP_INTERVAL_MS > 0 && sweepTimer === null) {
56
87
  sweepTimer = setInterval(() => {
57
88
  const live = helper.get();
58
- if (live)
59
- pruneExpired(live);
89
+ if (!live)
90
+ return;
91
+ pruneExpired(live);
92
+ pruneExpiredEvents(live);
60
93
  }, RETENTION_SWEEP_INTERVAL_MS);
61
94
  if (typeof sweepTimer === 'object' && sweepTimer && 'unref' in sweepTimer) {
62
95
  sweepTimer.unref();
@@ -169,6 +202,71 @@ export function pruneExpired(d = getDb()) {
169
202
  return 0;
170
203
  }
171
204
  }
205
+ export function logAuditEvent(ev) {
206
+ const d = getDb();
207
+ if (!d)
208
+ return;
209
+ try {
210
+ const detailsJson = JSON.stringify(ev.details ?? {});
211
+ d.prepare(`
212
+ INSERT INTO audit_events (trace_id, event_type, actor, target, outcome, details)
213
+ VALUES (?, ?, ?, ?, ?, ?)
214
+ `).run(ev.traceId ?? '', ev.eventType, ev.actor, ev.target ?? '', ev.outcome ?? 'ok', detailsJson);
215
+ }
216
+ catch (err) {
217
+ // Best-effort — audit logging must never break the caller's request.
218
+ log.warn({ event: 'audit-events.write_failed', err: String(err) });
219
+ }
220
+ }
221
+ export function queryAuditEvents(opts = {}) {
222
+ const d = getDb();
223
+ if (!d)
224
+ return [];
225
+ const conditions = [];
226
+ const params = [];
227
+ if (opts.types && opts.types.length > 0) {
228
+ const placeholders = opts.types.map(() => '?').join(',');
229
+ conditions.push(`event_type IN (${placeholders})`);
230
+ params.push(...opts.types);
231
+ }
232
+ if (opts.actor) {
233
+ conditions.push('actor = ?');
234
+ params.push(opts.actor);
235
+ }
236
+ if (opts.days && Number.isFinite(opts.days) && opts.days > 0) {
237
+ conditions.push("ts >= datetime('now', ?)");
238
+ params.push(`-${Math.floor(opts.days)} days`);
239
+ }
240
+ const where = conditions.length ? `WHERE ${conditions.join(' AND ')}` : '';
241
+ const rawLimit = opts.limit;
242
+ const limit = Number.isFinite(rawLimit) && rawLimit > 0 ? Math.min(Math.floor(rawLimit), 1000) : 100;
243
+ try {
244
+ return d.prepare(`SELECT * FROM audit_events ${where} ORDER BY ts DESC LIMIT ?`)
245
+ .all(...params, limit);
246
+ }
247
+ catch {
248
+ return [];
249
+ }
250
+ }
251
+ export function pruneExpiredEvents(d = getDb()) {
252
+ if (!d)
253
+ return 0;
254
+ const days = resolveAuditEventsRetentionDays();
255
+ if (days <= 0)
256
+ return 0;
257
+ try {
258
+ const info = d.prepare("DELETE FROM audit_events WHERE ts < datetime('now', ?)")
259
+ .run(`-${days} days`);
260
+ if (info.changes > 0) {
261
+ log.info({ event: 'audit-events.pruned', deleted: info.changes, days }, `Pruned ${info.changes} audit event row(s) older than ${days}d`);
262
+ }
263
+ return info.changes;
264
+ }
265
+ catch (err) {
266
+ log.warn({ event: 'audit-events.prune.failed', error: String(err) });
267
+ return 0;
268
+ }
269
+ }
172
270
  /** Stop the periodic retention sweep (used by tests and graceful shutdown). */
173
271
  export function stopRetentionSweep() {
174
272
  if (sweepTimer) {
@@ -1 +1 @@
1
- {"version":3,"file":"audit-log.js","sourceRoot":"","sources":["../../src/core/audit-log.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit-log.js","sourceRoot":"","sources":["../../src/core/audit-log.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { RouteContext } from '../router.js';
2
+ import type { CoordSystem } from '../user-coord-prefs.js';
3
+ export declare function handleCoordCommand(system: CoordSystem, ctx: RouteContext): string;
4
+ //# sourceMappingURL=coord.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coord.d.ts","sourceRoot":"","sources":["../../../src/core/commands/coord.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAgBzD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,CA+EjF"}
@@ -0,0 +1,88 @@
1
+ // /#wgs / /#gcj / /#bd — record the user's coord-system preference and,
2
+ // if they have a recent memo with a location, re-interpret its coords
3
+ // and return fresh map URLs.
4
+ //
5
+ // Plan C (2026-05-22): per-(platform, user_id) preference, learned
6
+ // from one reply after a wrong marker. See core/user-coord-prefs.ts.
7
+ import { setUserCoordPref } from '../user-coord-prefs.js';
8
+ import { listMemos, updateMemo, mapUrls, } from '../memos.js';
9
+ import { gcj02ToWgs84, bd09ToWgs84, outOfChina, wgs84ToGcj02, wgs84ToBd09, } from '../coord-systems.js';
10
+ const HUMAN_NAME = {
11
+ wgs84: 'WGS-84 (Google / Apple / OSM)',
12
+ gcj02: 'GCJ-02 (高德 / iOS 系统位置 / 国内地图)',
13
+ bd09: 'BD-09 (百度地图)',
14
+ };
15
+ export function handleCoordCommand(system, ctx) {
16
+ const userId = ctx.userId;
17
+ if (!userId) {
18
+ return '⚠️ 收到 # 坐标系命令,但当前消息没有 user_id,无法保存偏好。';
19
+ }
20
+ // 1) Persist the preference. Future locations from this user are
21
+ // auto-normalized accordingly.
22
+ const ok = setUserCoordPref(ctx.platform, userId, system);
23
+ if (!ok) {
24
+ return `⚠️ 偏好保存失败(user-prefs.db 不可用)。下次发位置仍会按默认处理。`;
25
+ }
26
+ const lines = [];
27
+ lines.push(`✅ 已记住:你的坐标使用 **${HUMAN_NAME[system]}**`);
28
+ lines.push(` 未来从这里发的位置会自动按此坐标系处理。`);
29
+ // 2) Best-effort: find the user's most recent memo with a location
30
+ // in this thread and re-interpret its stored coords as `system`,
31
+ // then rewrite where_lat/lng in DB and emit fresh map URLs.
32
+ // If the user is correcting a wrong guess, this gives them a
33
+ // second-chance accurate marker without sending a new pin.
34
+ const recent = listMemos({ userId, limit: 20 });
35
+ const target = recent.find((m) => m.where_lat != null && m.where_lng != null);
36
+ if (target && target.where_lat != null && target.where_lng != null) {
37
+ // Stored coords are WGS-84 (whatever normalize-on-ingest produced).
38
+ // The user just told us the *original input* should have been
39
+ // interpreted as `system`. So the stored value is wrong by the
40
+ // delta between (assumed wgs84-pass-through) and (actual system).
41
+ // Rebuild the WGS-84 value from the stored one by undoing the
42
+ // wrong normalize and re-applying the right one.
43
+ //
44
+ // Practically: most past mistakes are "in-China telegram-native
45
+ // treated as WGS-84 when it was actually GCJ-02". To recover, the
46
+ // raw input was the stored value (no normalize applied), and the
47
+ // correct WGS-84 is gcj02ToWgs84(stored).
48
+ const storedLat = target.where_lat;
49
+ const storedLng = target.where_lng;
50
+ let correctedLat = storedLat;
51
+ let correctedLng = storedLng;
52
+ if (!outOfChina(storedLat, storedLng)) {
53
+ if (system === 'gcj02') {
54
+ const wgs = gcj02ToWgs84(storedLat, storedLng);
55
+ correctedLat = wgs.lat;
56
+ correctedLng = wgs.lng;
57
+ }
58
+ else if (system === 'bd09') {
59
+ const wgs = bd09ToWgs84(storedLat, storedLng);
60
+ correctedLat = wgs.lat;
61
+ correctedLng = wgs.lng;
62
+ }
63
+ else if (system === 'wgs84') {
64
+ // The user is telling us the stored value is *actually* WGS-84
65
+ // but it was treated as something else on ingest. Without
66
+ // knowing what wrong path was applied, the best we can do is
67
+ // pass through (and hope the prior normalize was a no-op).
68
+ // For Plan C's known cases (in-China telegram-native default
69
+ // = GCJ-02 → gcj02ToWgs84 applied), undo that.
70
+ const back = wgs84ToGcj02(storedLat, storedLng); // re-apply forward
71
+ correctedLat = back.lat;
72
+ correctedLng = back.lng;
73
+ }
74
+ }
75
+ void wgs84ToBd09; // referenced for future symmetry; lint-quiet
76
+ const updated = updateMemo(target.id, { whereLat: correctedLat, whereLng: correctedLng }, { userId });
77
+ if (updated) {
78
+ const urls = mapUrls(correctedLat, correctedLng, target.where_label ?? '');
79
+ lines.push('');
80
+ lines.push(`🔁 已重生成最近一条 memo #${target.id}「${target.what}」 的地图链接:`);
81
+ lines.push(`百度: ${urls.baidu}`);
82
+ lines.push(`高德: ${urls.amap}`);
83
+ lines.push(`Google: ${urls.google}`);
84
+ }
85
+ }
86
+ return lines.join('\n');
87
+ }
88
+ //# sourceMappingURL=coord.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coord.js","sourceRoot":"","sources":["../../../src/core/commands/coord.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,12 @@ import type { RouteContext } from '../router.js';
2
2
  /** /restart [-y] — graceful service restart with pre-flight + ack +
3
3
  * completion message after the new daemon comes up. */
4
4
  export declare function handleRestartCommand(args: string, ctx: RouteContext): Promise<string>;
5
- /** /stop — graceful shutdown. Sends SIGTERM to self after acking the
6
- * caller; no helper respawn (unlike /restart). Useful only via systemd
7
- * (which won't restart on clean exit when WantedBy=multi-user.target is
8
- * removed) or for "I'm done, going to sleep" workflows. For background
9
- * mode, the user must `agim start` again manually. */
5
+ /** /stop — graceful shutdown. Routes through systemctl when systemd
6
+ * manages the unit so systemd's lifecycle accounting stays consistent
7
+ * (matters when the unit has `Restart=always` a bare SIGTERM-self
8
+ * would cleanly exit and systemd would just restart it, defeating
9
+ * the /stop). On non-systemd installs, SIGTERMs self after a 300ms
10
+ * flush. */
10
11
  export declare function handleStopCommand(args: string, ctx: RouteContext): Promise<string>;
11
12
  /** /status — open to everyone. Surfaces uptime + default agent +
12
13
  * registered messengers. No secrets. */
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/core/commands/service.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAIhD;wDACwD;AACxD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAoB3F;AAED;;;;uDAIuD;AACvD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBxF;AAED;yCACyC;AACzC,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA2B3F"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/core/commands/service.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAIhD;wDACwD;AACxD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAoB3F;AAED;;;;;aAKa;AACb,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAqExF;AAED;yCACyC;AACzC,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA2B3F"}
@@ -29,19 +29,70 @@ export async function handleRestartCommand(args, ctx) {
29
29
  const result = await initiateRestart(initiator);
30
30
  return result.message;
31
31
  }
32
- /** /stop — graceful shutdown. Sends SIGTERM to self after acking the
33
- * caller; no helper respawn (unlike /restart). Useful only via systemd
34
- * (which won't restart on clean exit when WantedBy=multi-user.target is
35
- * removed) or for "I'm done, going to sleep" workflows. For background
36
- * mode, the user must `agim start` again manually. */
32
+ /** /stop — graceful shutdown. Routes through systemctl when systemd
33
+ * manages the unit so systemd's lifecycle accounting stays consistent
34
+ * (matters when the unit has `Restart=always` a bare SIGTERM-self
35
+ * would cleanly exit and systemd would just restart it, defeating
36
+ * the /stop). On non-systemd installs, SIGTERMs self after a 300ms
37
+ * flush. */
37
38
  export async function handleStopCommand(args, ctx) {
38
39
  if (!isAdmin(ctx.platform, ctx.userId)) {
39
40
  return denialMessage(ctx.platform, ctx.userId);
40
41
  }
41
42
  void args;
42
- // No initiate-state-file because there's no new daemon to push a "✅
43
- // 已停止" message from. The caller just sees SIGTERM in their IM stream
44
- // (their last reply is what we send here).
43
+ // R14 §四 follow-up systemd-aware stop. The web `/api/service/stop`
44
+ // handler already routes through `systemctl stop`; mirror that here
45
+ // so IM /stop behaves consistently. Without this, IM /stop under
46
+ // a systemd unit with Restart=always becomes a no-op (the unit
47
+ // bounces) and IM /stop under Restart=on-failure exits but doesn't
48
+ // free systemd's tracked state.
49
+ const { detectService, reapStrayAgimProcesses } = await import('../../cli-ui/service.js');
50
+ const { existsSync } = await import('node:fs');
51
+ const svc = detectService();
52
+ if (svc.mode === 'systemd') {
53
+ const unitName = existsSync('/etc/systemd/system/agim.service')
54
+ ? 'agim.service'
55
+ : (existsSync('/etc/systemd/system/im-hub.service') ? 'im-hub.service' : null);
56
+ if (unitName) {
57
+ // Spawn detached so this handler can return synchronously (the
58
+ // IM reply text needs to flush before the process dies). Same
59
+ // pattern as the web handler.
60
+ const { spawn } = await import('node:child_process');
61
+ try {
62
+ spawn('systemctl', ['stop', unitName], { detached: true, stdio: 'ignore' }).unref();
63
+ }
64
+ catch (err) {
65
+ return `🛑 systemctl stop spawn 失败:${err instanceof Error ? err.message : String(err)}`;
66
+ }
67
+ // R14 — schedule reap shortly after systemctl stop to clean up
68
+ // any cgroup-escaped child. We can't await in this handler
69
+ // (returning here gives IM the reply text), so fire off a
70
+ // detached follow-up.
71
+ setTimeout(() => {
72
+ void (async () => {
73
+ try {
74
+ const reap = await reapStrayAgimProcesses({ sigtermTimeoutMs: 5_000 });
75
+ if (reap.reaped.length > 0 || reap.survived.length > 0) {
76
+ const { logger } = await import('../logger.js');
77
+ logger.warn({
78
+ component: 'service-cmd',
79
+ event: 'im.stop.reap',
80
+ reaped: reap.reaped,
81
+ survived: reap.survived,
82
+ }, `R14 reap after IM /stop: killed ${reap.reaped.length} stray pid(s)`);
83
+ }
84
+ }
85
+ catch { /* best-effort */ }
86
+ })();
87
+ }, 1_000);
88
+ return ('🛑 服务即将停止(systemd 接管)。\n' +
89
+ ' 再次启动:`systemctl start agim`');
90
+ }
91
+ }
92
+ // Non-systemd modes — original behavior. No initiate-state-file
93
+ // because there's no new daemon to push a "✅ 已停止" message from;
94
+ // the caller just sees SIGTERM in their IM stream (their last
95
+ // reply is what we send here).
45
96
  setTimeout(() => {
46
97
  try {
47
98
  process.kill(process.pid, 'SIGTERM');
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/core/commands/service.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,gEAAgE;AAChE,qEAAqE;AACrE,6BAA6B;AAC7B,EAAE;AACF,yEAAyE;AACzE,oEAAoE;AACpE,iBAAiB;AAGjB,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAyB,MAAM,oBAAoB,CAAA;AAE3E;wDACwD;AACxD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAY,EAAE,GAAiB;IACxE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,OAAO,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAChD,CAAC;IAED,yEAAyE;IACzE,8DAA8D;IAC9D,KAAK,IAAI,CAAA;IAET,MAAM,SAAS,GAAqB;QAClC,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,WAAW,EAAE,UAAU;KACxB,CAAA;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAA;IAC/C,OAAO,MAAM,CAAC,OAAO,CAAA;AACvB,CAAC;AAED;;;;uDAIuD;AACvD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAY,EAAE,GAAiB;IACrE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,OAAO,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAChD,CAAC;IACD,KAAK,IAAI,CAAA;IAET,oEAAoE;IACpE,qEAAqE;IACrE,2CAA2C;IAC3C,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAAC,CAAC;IACxE,CAAC,EAAE,GAAG,CAAC,CAAA;IAEP,OAAO,CACL,cAAc;QACd,gCAAgC;QAChC,8CAA8C,CAC/C,CAAA;AACH,CAAC;AAED;yCACyC;AACzC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAa,EAAE,GAAiB;IACxE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAA;IACnD,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;IACnE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAA;IAE/E,MAAM,KAAK,GAAa,CAAC,cAAc,CAAC,CAAA;IACxC,MAAM,GAAG,GAAG,aAAa,EAAE,CAAA;IAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACxB,8DAA8D;QAC9D,gEAAgE;QAChE,KAAK,CAAC,IAAI,CAAC,0BAA0B,OAAO,CAAC,GAAG,GAAG,CAAC,CAAA;IACtD,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC5F,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,CAAA;IAC1E,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAA;IAC9B,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,sBAAsB,CAAC,KAAK,CAAC,CAAA;IAC/C,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IACxB,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;IAE/D,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAA;IAC5C,KAAK,CAAC,IAAI,CAAC,kBAAkB,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,2BAA2B,EAAE,CAAC,CAAA;IAEvG,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/core/commands/service.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,16 @@ export interface NormalizeResult {
22
22
  * the default for any source whose users tell us their device DOES apply
23
23
  * the offset (Apple devices in China + Chinese region most often).
24
24
  */
25
- export declare function normalizeIncomingCoords(source: CoordSource, lat: number, lng: number): NormalizeResult;
25
+ /** Plan C (2026-05-22): caller can force the source coord-system,
26
+ * bypassing the env-flag heuristic. Used by IM adapters that have
27
+ * looked up a per-user preference (see core/user-coord-prefs.ts). */
28
+ export interface NormalizeOptions {
29
+ /** Pre-known source coord-system, e.g. learned from the user's
30
+ * earlier `#wgs` / `#gcj` / `#bd` reply. When set, all other
31
+ * heuristics are ignored. */
32
+ force?: 'wgs84' | 'gcj02' | 'bd09';
33
+ }
34
+ export declare function normalizeIncomingCoords(source: CoordSource, lat: number, lng: number, opts?: NormalizeOptions): NormalizeResult;
26
35
  /** WGS-84 → GCJ-02. */
27
36
  export declare function wgs84ToGcj02(lat: number, lng: number): {
28
37
  lat: number;
@@ -1 +1 @@
1
- {"version":3,"file":"coord-systems.d.ts","sourceRoot":"","sources":["../../src/core/coord-systems.ts"],"names":[],"mappings":"AAwCA,MAAM,MAAM,WAAW,GACnB,iBAAiB,GACjB,eAAe,GACf,oBAAoB,GACpB,uBAAuB,GACvB,qBAAqB,GACrB,uBAAuB,GACvB,wBAAwB,GACxB,WAAW,CAAA;AAEf,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,GAAG,EAAE,MAAM,CAAA;IACX,2BAA2B;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,iEAAiE;IACjE,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,eAAe,CAAA;IACpD;qEACiE;IACjE,UAAU,EAAE,OAAO,CAAA;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,eAAe,CAwEjB;AAYD,uBAAuB;AACvB,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAUnF;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAUnF;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAQlF;AAED,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAMlF;AAED,8CAA8C;AAC9C,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAIlF;AAED;4CAC4C;AAC5C,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAIlF;AAID;wEACwE;AACxE,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAE5D"}
1
+ {"version":3,"file":"coord-systems.d.ts","sourceRoot":"","sources":["../../src/core/coord-systems.ts"],"names":[],"mappings":"AAwCA,MAAM,MAAM,WAAW,GACnB,iBAAiB,GACjB,eAAe,GACf,oBAAoB,GACpB,uBAAuB,GACvB,qBAAqB,GACrB,uBAAuB,GACvB,wBAAwB,GACxB,WAAW,CAAA;AAEf,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,GAAG,EAAE,MAAM,CAAA;IACX,2BAA2B;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,iEAAiE;IACjE,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,eAAe,CAAA;IACpD;qEACiE;IACjE,UAAU,EAAE,OAAO,CAAA;CACpB;AAED;;;;;;;;;;;GAWG;AACH;;sEAEsE;AACtE,MAAM,WAAW,gBAAgB;IAC/B;;kCAE8B;IAC9B,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAA;CACnC;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,gBAAgB,GACtB,eAAe,CA6GjB;AAYD,uBAAuB;AACvB,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAUnF;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAUnF;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAQlF;AAED,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAMlF;AAED,8CAA8C;AAC9C,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAIlF;AAED;4CAC4C;AAC5C,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAIlF;AAID;wEACwE;AACxE,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAE5D"}
@@ -34,34 +34,59 @@
34
34
  // defaults + env-var overrides for the edge cases.
35
35
  import { logger as rootLogger } from './logger.js';
36
36
  const log = rootLogger.child({ component: 'coord-systems' });
37
- /**
38
- * Convert any incoming (lat, lng) to WGS-84 based on what we know about
39
- * the source. Adapters route every native coord through this. Defaults
40
- * favor "trust the payload as WGS-84" because that's the safer assumption
41
- * when the source is ambiguous — applying an inverse GCJ offset to a
42
- * value that's actually already WGS produces a 500m-1km error, while
43
- * pass-through on actual GCJ leaves the user with the same ~1km error
44
- * but in a recoverable direction. Both error modes get the user roughly
45
- * the right country / city; an `IMHUB_*_COORDS_GCJ02=1` env flag flips
46
- * the default for any source whose users tell us their device DOES apply
47
- * the offset (Apple devices in China + Chinese region most often).
48
- */
49
- export function normalizeIncomingCoords(source, lat, lng) {
37
+ export function normalizeIncomingCoords(source, lat, lng, opts) {
50
38
  if (!Number.isFinite(lat) || !Number.isFinite(lng)) {
51
39
  return { lat, lng, applied: 'none', outOfChina: true };
52
40
  }
53
41
  if (outOfChina(lat, lng)) {
54
42
  return { lat, lng, applied: 'none', outOfChina: true };
55
43
  }
44
+ // ─── Plan C override path ─────────────────────────────────────────
45
+ // The IM adapter has looked up a stored preference for this user; we
46
+ // trust it and skip the heuristic table below. This is how
47
+ // `#wgs` / `#gcj` / `#bd` self-learn flow takes effect.
48
+ if (opts?.force) {
49
+ if (opts.force === 'bd09') {
50
+ const wgs = bd09ToWgs84(lat, lng);
51
+ log.debug({
52
+ event: 'coord.normalized', source, forced: 'bd09',
53
+ raw_lat: lat, raw_lng: lng, wgs_lat: wgs.lat, wgs_lng: wgs.lng,
54
+ applied: 'bd09-to-wgs84',
55
+ });
56
+ return { lat: wgs.lat, lng: wgs.lng, applied: 'bd09-to-wgs84', outOfChina: false };
57
+ }
58
+ if (opts.force === 'gcj02') {
59
+ const wgs = gcj02ToWgs84(lat, lng);
60
+ log.debug({
61
+ event: 'coord.normalized', source, forced: 'gcj02',
62
+ raw_lat: lat, raw_lng: lng, wgs_lat: wgs.lat, wgs_lng: wgs.lng,
63
+ applied: 'gcj02-to-wgs84',
64
+ });
65
+ return { lat: wgs.lat, lng: wgs.lng, applied: 'gcj02-to-wgs84', outOfChina: false };
66
+ }
67
+ // force === 'wgs84' → pass-through
68
+ log.debug({
69
+ event: 'coord.normalized', source, forced: 'wgs84',
70
+ raw_lat: lat, raw_lng: lng, wgs_lat: lat, wgs_lng: lng, applied: 'none',
71
+ });
72
+ return { lat, lng, applied: 'none', outOfChina: false };
73
+ }
56
74
  // Per-source policy. The flag-overrideable defaults reflect the empirical
57
75
  // table at the top of this file. See env table at the bottom.
58
76
  const treatAsGcj = (() => {
59
77
  switch (source) {
60
78
  case 'telegram-native':
61
- // Default WGS-84 (covers Telegram Desktop + non-Apple in-China +
62
- // anyone outside China). User can flip with the env flag if their
63
- // Telegram is on Apple-zh-CN where Core Location applies the offset.
64
- return process.env.IMHUB_TELEGRAM_COORDS_GCJ02 === '1';
79
+ // Plan C (2026-05-22): in the absence of a stored per-user
80
+ // preference, default to GCJ-02 *if* we're inside China. This
81
+ // covers the most common iOS path (Core Location auto-offsets)
82
+ // which we found to be the majority of real-world deployments.
83
+ // The env flag is retained as an inverter for ops that know
84
+ // their crowd is predominantly Android/Desktop. Mismatched
85
+ // first-time users get one wrong marker → reply `#wgs` → fixed
86
+ // for the rest of time.
87
+ if (process.env.IMHUB_TELEGRAM_COORDS_GCJ02 === '0')
88
+ return false;
89
+ return true;
65
90
  case 'feishu-native':
66
91
  // Feishu is mandated GCJ-02 server-side, no override expected.
67
92
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"coord-systems.js","sourceRoot":"","sources":["../../src/core/coord-systems.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coord-systems.js","sourceRoot":"","sources":["../../src/core/coord-systems.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /** True when IMHUB_ENABLE_GLOBAL_IM=1. Controls visibility of
2
+ * Discord + Telegram messengers across CLI wizard, web settings,
3
+ * and runtime adapter registration. */
4
+ export declare function isGlobalImEnabled(): boolean;
5
+ /** True when IMHUB_ENABLE_REMOTE_AGENT=1. Controls visibility of the
6
+ * ACP (remote-agent-over-HTTP) feature across CLI wizard, web
7
+ * settings, and ACP agent registration. Local agents (claude-code,
8
+ * codex, opencode) are unaffected. */
9
+ export declare function isRemoteAgentEnabled(): boolean;
10
+ //# sourceMappingURL=feature-flags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../src/core/feature-flags.ts"],"names":[],"mappings":"AAiBA;;wCAEwC;AACxC,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;uCAGuC;AACvC,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C"}
@@ -0,0 +1,30 @@
1
+ // Compliance-driven feature flags.
2
+ //
3
+ // Both flags default to OFF — the underlying surfaces (Discord/Telegram
4
+ // messengers, ACP remote agents) are hidden from every entry point
5
+ // (install wizard, web settings UI, web API response, runtime adapter
6
+ // load) unless the operator explicitly opts in via env.
7
+ //
8
+ // Rationale: mainland-China policy compliance — these channels and
9
+ // remote-agent endpoints are not appropriate for default deployments
10
+ // in restricted environments. Operators who need them set the env
11
+ // var; the codebase carries no UI breadcrumb of these flags so an
12
+ // unprivileged user browsing settings cannot discover them.
13
+ //
14
+ // Keep this file the SINGLE source of truth — every gate elsewhere
15
+ // imports from here so a future audit can grep `isGlobalImEnabled` /
16
+ // `isRemoteAgentEnabled` and verify coverage.
17
+ /** True when IMHUB_ENABLE_GLOBAL_IM=1. Controls visibility of
18
+ * Discord + Telegram messengers across CLI wizard, web settings,
19
+ * and runtime adapter registration. */
20
+ export function isGlobalImEnabled() {
21
+ return process.env.IMHUB_ENABLE_GLOBAL_IM === '1';
22
+ }
23
+ /** True when IMHUB_ENABLE_REMOTE_AGENT=1. Controls visibility of the
24
+ * ACP (remote-agent-over-HTTP) feature across CLI wizard, web
25
+ * settings, and ACP agent registration. Local agents (claude-code,
26
+ * codex, opencode) are unaffected. */
27
+ export function isRemoteAgentEnabled() {
28
+ return process.env.IMHUB_ENABLE_REMOTE_AGENT === '1';
29
+ }
30
+ //# sourceMappingURL=feature-flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-flags.js","sourceRoot":"","sources":["../../src/core/feature-flags.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,EAAE;AACF,wEAAwE;AACxE,mEAAmE;AACnE,sEAAsE;AACtE,wDAAwD;AACxD,EAAE;AACF,mEAAmE;AACnE,qEAAqE;AACrE,kEAAkE;AAClE,kEAAkE;AAClE,4DAA4D;AAC5D,EAAE;AACF,mEAAmE;AACnE,qEAAqE;AACrE,8CAA8C;AAE9C;;wCAEwC;AACxC,MAAM,UAAU,iBAAiB;IAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,GAAG,CAAA;AACnD,CAAC;AAED;;;uCAGuC;AACvC,MAAM,UAAU,oBAAoB;IAClC,OAAO,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,GAAG,CAAA;AACtD,CAAC"}