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.
- package/CHANGELOG.md +151 -0
- package/README.md +8 -8
- package/README.zh-CN.md +6 -6
- package/dist/cli-ui/cmd-handlers.d.ts.map +1 -1
- package/dist/cli-ui/cmd-handlers.js +172 -13
- package/dist/cli-ui/cmd-handlers.js.map +1 -1
- package/dist/cli-ui/config-wizard.d.ts.map +1 -1
- package/dist/cli-ui/config-wizard.js +134 -24
- package/dist/cli-ui/config-wizard.js.map +1 -1
- package/dist/cli-ui/i18n.d.ts +33 -4
- package/dist/cli-ui/i18n.d.ts.map +1 -1
- package/dist/cli-ui/i18n.js +66 -8
- package/dist/cli-ui/i18n.js.map +1 -1
- package/dist/cli-ui/service.d.ts +44 -0
- package/dist/cli-ui/service.d.ts.map +1 -1
- package/dist/cli-ui/service.js +176 -8
- package/dist/cli-ui/service.js.map +1 -1
- package/dist/cli.js +193 -33
- package/dist/cli.js.map +1 -1
- package/dist/core/access-token.d.ts +51 -5
- package/dist/core/access-token.d.ts.map +1 -1
- package/dist/core/access-token.js +114 -15
- package/dist/core/access-token.js.map +1 -1
- package/dist/core/acp-server.d.ts.map +1 -1
- package/dist/core/acp-server.js +44 -3
- package/dist/core/acp-server.js.map +1 -1
- package/dist/core/admin-allowlist.d.ts +4 -1
- package/dist/core/admin-allowlist.d.ts.map +1 -1
- package/dist/core/admin-allowlist.js +14 -1
- package/dist/core/admin-allowlist.js.map +1 -1
- package/dist/core/admin-bootstrap.d.ts.map +1 -1
- package/dist/core/admin-bootstrap.js +8 -5
- package/dist/core/admin-bootstrap.js.map +1 -1
- package/dist/core/agent-base.d.ts.map +1 -1
- package/dist/core/agent-base.js +25 -0
- package/dist/core/agent-base.js.map +1 -1
- package/dist/core/agent-cwd.d.ts +1 -1
- package/dist/core/agent-cwd.d.ts.map +1 -1
- package/dist/core/agent-cwd.js +73 -2
- package/dist/core/agent-cwd.js.map +1 -1
- package/dist/core/agent-helper.d.ts +1 -1
- package/dist/core/agent-helper.js +4 -4
- package/dist/core/agent-helper.js.map +1 -1
- package/dist/core/approval-bus.d.ts +10 -0
- package/dist/core/approval-bus.d.ts.map +1 -1
- package/dist/core/approval-bus.js +130 -0
- package/dist/core/approval-bus.js.map +1 -1
- package/dist/core/approval-router.d.ts.map +1 -1
- package/dist/core/approval-router.js +18 -0
- package/dist/core/approval-router.js.map +1 -1
- package/dist/core/artifacts.d.ts +9 -1
- package/dist/core/artifacts.d.ts.map +1 -1
- package/dist/core/artifacts.js +22 -5
- package/dist/core/artifacts.js.map +1 -1
- package/dist/core/audit-log.d.ts +28 -0
- package/dist/core/audit-log.d.ts.map +1 -1
- package/dist/core/audit-log.js +100 -2
- package/dist/core/audit-log.js.map +1 -1
- package/dist/core/commands/coord.d.ts +4 -0
- package/dist/core/commands/coord.d.ts.map +1 -0
- package/dist/core/commands/coord.js +88 -0
- package/dist/core/commands/coord.js.map +1 -0
- package/dist/core/commands/service.d.ts +6 -5
- package/dist/core/commands/service.d.ts.map +1 -1
- package/dist/core/commands/service.js +59 -8
- package/dist/core/commands/service.js.map +1 -1
- package/dist/core/coord-systems.d.ts +10 -1
- package/dist/core/coord-systems.d.ts.map +1 -1
- package/dist/core/coord-systems.js +42 -17
- package/dist/core/coord-systems.js.map +1 -1
- package/dist/core/feature-flags.d.ts +10 -0
- package/dist/core/feature-flags.d.ts.map +1 -0
- package/dist/core/feature-flags.js +30 -0
- package/dist/core/feature-flags.js.map +1 -0
- package/dist/core/intent.d.ts.map +1 -1
- package/dist/core/intent.js +0 -4
- package/dist/core/intent.js.map +1 -1
- package/dist/core/logger.d.ts +31 -0
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +41 -1
- package/dist/core/logger.js.map +1 -1
- package/dist/core/memo-rpc.d.ts.map +1 -1
- package/dist/core/memo-rpc.js +6 -0
- package/dist/core/memo-rpc.js.map +1 -1
- package/dist/core/memory-distill.js +1 -1
- package/dist/core/memory-distill.js.map +1 -1
- package/dist/core/memory-rpc.d.ts.map +1 -1
- package/dist/core/memory-rpc.js +55 -12
- package/dist/core/memory-rpc.js.map +1 -1
- package/dist/core/memory.d.ts +5 -0
- package/dist/core/memory.d.ts.map +1 -1
- package/dist/core/memory.js +151 -1
- package/dist/core/memory.js.map +1 -1
- package/dist/core/memos.d.ts.map +1 -1
- package/dist/core/memos.js +20 -2
- package/dist/core/memos.js.map +1 -1
- package/dist/core/onboarding.d.ts +6 -0
- package/dist/core/onboarding.d.ts.map +1 -1
- package/dist/core/onboarding.js +21 -10
- package/dist/core/onboarding.js.map +1 -1
- package/dist/core/outbox.d.ts +8 -1
- package/dist/core/outbox.d.ts.map +1 -1
- package/dist/core/outbox.js +46 -2
- package/dist/core/outbox.js.map +1 -1
- package/dist/core/persona.d.ts.map +1 -1
- package/dist/core/persona.js +1 -18
- package/dist/core/persona.js.map +1 -1
- package/dist/core/prompt-injection-guard.d.ts +23 -0
- package/dist/core/prompt-injection-guard.d.ts.map +1 -0
- package/dist/core/prompt-injection-guard.js +94 -0
- package/dist/core/prompt-injection-guard.js.map +1 -0
- package/dist/core/registry.d.ts +8 -0
- package/dist/core/registry.d.ts.map +1 -1
- package/dist/core/registry.js +41 -7
- package/dist/core/registry.js.map +1 -1
- package/dist/core/restart-flow.d.ts.map +1 -1
- package/dist/core/restart-flow.js +27 -0
- package/dist/core/restart-flow.js.map +1 -1
- package/dist/core/router.d.ts.map +1 -1
- package/dist/core/router.js +22 -0
- package/dist/core/router.js.map +1 -1
- package/dist/core/sensitive-paths.d.ts +28 -0
- package/dist/core/sensitive-paths.d.ts.map +1 -0
- package/dist/core/sensitive-paths.js +234 -0
- package/dist/core/sensitive-paths.js.map +1 -0
- package/dist/core/session.d.ts +9 -0
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js +35 -4
- package/dist/core/session.js.map +1 -1
- package/dist/core/types.d.ts +9 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/user-coord-prefs.d.ts +17 -0
- package/dist/core/user-coord-prefs.d.ts.map +1 -0
- package/dist/core/user-coord-prefs.js +86 -0
- package/dist/core/user-coord-prefs.js.map +1 -0
- package/dist/core/viewer-local.d.ts +4 -0
- package/dist/core/viewer-local.d.ts.map +1 -1
- package/dist/core/viewer-local.js +74 -0
- package/dist/core/viewer-local.js.map +1 -1
- package/dist/plugins/agents/antigravity/ensure-mcp-config.d.ts +49 -0
- package/dist/plugins/agents/antigravity/ensure-mcp-config.d.ts.map +1 -0
- package/dist/plugins/agents/antigravity/ensure-mcp-config.js +110 -0
- package/dist/plugins/agents/antigravity/ensure-mcp-config.js.map +1 -0
- package/dist/plugins/agents/antigravity/index.d.ts +34 -0
- package/dist/plugins/agents/antigravity/index.d.ts.map +1 -0
- package/dist/plugins/agents/antigravity/index.js +330 -0
- package/dist/plugins/agents/antigravity/index.js.map +1 -0
- package/dist/plugins/agents/claude-code/mcp-approval-server.js +5 -5
- package/dist/plugins/agents/claude-code/mcp-approval-server.js.map +1 -1
- package/dist/plugins/messengers/feishu/card-builder.d.ts.map +1 -1
- package/dist/plugins/messengers/feishu/card-builder.js +0 -1
- package/dist/plugins/messengers/feishu/card-builder.js.map +1 -1
- package/dist/plugins/messengers/telegram/telegram-adapter.d.ts.map +1 -1
- package/dist/plugins/messengers/telegram/telegram-adapter.js +11 -2
- package/dist/plugins/messengers/telegram/telegram-adapter.js.map +1 -1
- package/dist/utils/cross-platform.d.ts +0 -5
- package/dist/utils/cross-platform.d.ts.map +1 -1
- package/dist/utils/cross-platform.js +1 -21
- package/dist/utils/cross-platform.js.map +1 -1
- package/dist/web/public/assets/{a2a-Dk2fSs33.js → a2a-BFM2Ojvs.js} +2 -2
- package/dist/web/public/assets/{a2a-Dk2fSs33.js.map → a2a-BFM2Ojvs.js.map} +1 -1
- package/dist/web/public/assets/{activity-eiIPshcV.js → activity-DNe1vn9s.js} +2 -2
- package/dist/web/public/assets/{activity-eiIPshcV.js.map → activity-DNe1vn9s.js.map} +1 -1
- package/dist/web/public/assets/{admins-DlbQYdW_.js → admins-DtIF8yji.js} +2 -2
- package/dist/web/public/assets/{admins-DlbQYdW_.js.map → admins-DtIF8yji.js.map} +1 -1
- package/dist/web/public/assets/agents-BJ3jyH1u.js +12 -0
- package/dist/web/public/assets/agents-BJ3jyH1u.js.map +1 -0
- package/dist/web/public/assets/{approvals-DlXS_sKD.js → approvals-8ifx3_0b.js} +2 -2
- package/dist/web/public/assets/{approvals-DlXS_sKD.js.map → approvals-8ifx3_0b.js.map} +1 -1
- package/dist/web/public/assets/{audit-C8I8xC_6.js → audit-BiFOljMy.js} +2 -2
- package/dist/web/public/assets/{audit-C8I8xC_6.js.map → audit-BiFOljMy.js.map} +1 -1
- package/dist/web/public/assets/{bgjobs-PFYinH7D.js → bgjobs-Dve01ab0.js} +2 -2
- package/dist/web/public/assets/{bgjobs-PFYinH7D.js.map → bgjobs-Dve01ab0.js.map} +1 -1
- package/dist/web/public/assets/{brain-DEEJttEL.js → brain-BI78EY6_.js} +2 -2
- package/dist/web/public/assets/{brain-DEEJttEL.js.map → brain-BI78EY6_.js.map} +1 -1
- package/dist/web/public/assets/{briefcase-BlMy8gI6.js → briefcase-CuwoOW31.js} +2 -2
- package/dist/web/public/assets/{briefcase-BlMy8gI6.js.map → briefcase-CuwoOW31.js.map} +1 -1
- package/dist/web/public/assets/{chevron-right-DmABPvoA.js → chevron-right-D5JanEQ3.js} +2 -2
- package/dist/web/public/assets/{chevron-right-DmABPvoA.js.map → chevron-right-D5JanEQ3.js.map} +1 -1
- package/dist/web/public/assets/{circle-check-C0Qpg1vL.js → circle-check-DXMzdFtD.js} +2 -2
- package/dist/web/public/assets/{circle-check-C0Qpg1vL.js.map → circle-check-DXMzdFtD.js.map} +1 -1
- package/dist/web/public/assets/{circle-check-big-C8LG3beV.js → circle-check-big-CyJIIhiq.js} +2 -2
- package/dist/web/public/assets/{circle-check-big-C8LG3beV.js.map → circle-check-big-CyJIIhiq.js.map} +1 -1
- package/dist/web/public/assets/{circle-x-D_cRHcHK.js → circle-x-DTwfNpvp.js} +2 -2
- package/dist/web/public/assets/{circle-x-D_cRHcHK.js.map → circle-x-DTwfNpvp.js.map} +1 -1
- package/dist/web/public/assets/{confirm-dialog-Baz_xFle.js → confirm-dialog-F0sdcLGN.js} +2 -2
- package/dist/web/public/assets/{confirm-dialog-Baz_xFle.js.map → confirm-dialog-F0sdcLGN.js.map} +1 -1
- package/dist/web/public/assets/{data-table--I_ktDF4.js → data-table-DN_-VLbp.js} +2 -2
- package/dist/web/public/assets/{data-table--I_ktDF4.js.map → data-table-DN_-VLbp.js.map} +1 -1
- package/dist/web/public/assets/{dialog-DZpoEskO.js → dialog-CM16nfWK.js} +2 -2
- package/dist/web/public/assets/{dialog-DZpoEskO.js.map → dialog-CM16nfWK.js.map} +1 -1
- package/dist/web/public/assets/{download-DbFGHwZ5.js → download-tFqY3Zj6.js} +2 -2
- package/dist/web/public/assets/{download-DbFGHwZ5.js.map → download-tFqY3Zj6.js.map} +1 -1
- package/dist/web/public/assets/{email-BB1Hq8eE.js → email-By2-ARPV.js} +2 -2
- package/dist/web/public/assets/{email-BB1Hq8eE.js.map → email-By2-ARPV.js.map} +1 -1
- package/dist/web/public/assets/{empty-state-DXNa90pP.js → empty-state-Dq9_8t-M.js} +2 -2
- package/dist/web/public/assets/{empty-state-DXNa90pP.js.map → empty-state-Dq9_8t-M.js.map} +1 -1
- package/dist/web/public/assets/{external-link-nhnJN0qg.js → external-link-amfAWSUX.js} +2 -2
- package/dist/web/public/assets/{external-link-nhnJN0qg.js.map → external-link-amfAWSUX.js.map} +1 -1
- package/dist/web/public/assets/{eye-IKkn_oUo.js → eye-BfgN09Lx.js} +2 -2
- package/dist/web/public/assets/{eye-IKkn_oUo.js.map → eye-BfgN09Lx.js.map} +1 -1
- package/dist/web/public/assets/{facts-C7Qy9vTw.js → facts-uvL__ilQ.js} +2 -2
- package/dist/web/public/assets/{facts-C7Qy9vTw.js.map → facts-uvL__ilQ.js.map} +1 -1
- package/dist/web/public/assets/{health-CMRdeNEW.js → health-fiU-ueEw.js} +2 -2
- package/dist/web/public/assets/{health-CMRdeNEW.js.map → health-fiU-ueEw.js.map} +1 -1
- package/dist/web/public/assets/{hot-Bh5Nrc7i.js → hot-Dt4V3jM_.js} +2 -2
- package/dist/web/public/assets/{hot-Bh5Nrc7i.js.map → hot-Dt4V3jM_.js.map} +1 -1
- package/dist/web/public/assets/{index-CpGWCLE5.js → index-6GMwymev.js} +8 -8
- package/dist/web/public/assets/index-6GMwymev.js.map +1 -0
- package/dist/web/public/assets/{index-GpceOxum.css → index-CDYTPZH0.css} +1 -1
- package/dist/web/public/assets/{installed-FYLkPij2.js → installed-B_x6no76.js} +2 -2
- package/dist/web/public/assets/{installed-FYLkPij2.js.map → installed-B_x6no76.js.map} +1 -1
- package/dist/web/public/assets/{jobs-BmqLUzHp.js → jobs-LqWH3CIe.js} +2 -2
- package/dist/web/public/assets/{jobs-BmqLUzHp.js.map → jobs-LqWH3CIe.js.map} +1 -1
- package/dist/web/public/assets/layout-CvxcdPD9.js +2 -0
- package/dist/web/public/assets/layout-CvxcdPD9.js.map +1 -0
- package/dist/web/public/assets/{layout-BZaHqf69.js → layout-DHUzlXrd.js} +2 -2
- package/dist/web/public/assets/{layout-BZaHqf69.js.map → layout-DHUzlXrd.js.map} +1 -1
- package/dist/web/public/assets/{layout-CXsUyEpG.js → layout-MNk0bLGe.js} +2 -2
- package/dist/web/public/assets/{layout-CXsUyEpG.js.map → layout-MNk0bLGe.js.map} +1 -1
- package/dist/web/public/assets/{layout-DFxtpNut.js → layout-WcrkE0es.js} +2 -2
- package/dist/web/public/assets/{layout-DFxtpNut.js.map → layout-WcrkE0es.js.map} +1 -1
- package/dist/web/public/assets/{layout-d8qxPKQk.js → layout-apvyE2JN.js} +2 -2
- package/dist/web/public/assets/{layout-d8qxPKQk.js.map → layout-apvyE2JN.js.map} +1 -1
- package/dist/web/public/assets/{loader-circle-JaKY-xMt.js → loader-circle-hxNy7hSm.js} +2 -2
- package/dist/web/public/assets/{loader-circle-JaKY-xMt.js.map → loader-circle-hxNy7hSm.js.map} +1 -1
- package/dist/web/public/assets/{map-pin-hFFSWZ3B.js → map-pin-CCmA7ke2.js} +2 -2
- package/dist/web/public/assets/{map-pin-hFFSWZ3B.js.map → map-pin-CCmA7ke2.js.map} +1 -1
- package/dist/web/public/assets/{memos-EhjMUvVZ.js → memos-pEjDfEj3.js} +2 -2
- package/dist/web/public/assets/{memos-EhjMUvVZ.js.map → memos-pEjDfEj3.js.map} +1 -1
- package/dist/web/public/assets/messengers-Ba7opEc1.js +7 -0
- package/dist/web/public/assets/messengers-Ba7opEc1.js.map +1 -0
- package/dist/web/public/assets/{network-DtCI2ZUU.js → network-DJw-ei_k.js} +2 -2
- package/dist/web/public/assets/{network-DtCI2ZUU.js.map → network-DJw-ei_k.js.map} +1 -1
- package/dist/web/public/assets/{outbox-CxUbMp6o.js → outbox-Ckq-VT5C.js} +2 -2
- package/dist/web/public/assets/{outbox-CxUbMp6o.js.map → outbox-Ckq-VT5C.js.map} +1 -1
- package/dist/web/public/assets/{pagination-CkZY8YNa.js → pagination-DGS-TnI5.js} +2 -2
- package/dist/web/public/assets/{pagination-CkZY8YNa.js.map → pagination-DGS-TnI5.js.map} +1 -1
- package/dist/web/public/assets/{persona-B6TFMSnI.js → persona--LsrhCVU.js} +2 -2
- package/dist/web/public/assets/{persona-B6TFMSnI.js.map → persona--LsrhCVU.js.map} +1 -1
- package/dist/web/public/assets/{play-BxRcWaH5.js → play-Cb7co2DX.js} +2 -2
- package/dist/web/public/assets/{play-BxRcWaH5.js.map → play-Cb7co2DX.js.map} +1 -1
- package/dist/web/public/assets/{policy-ndE1Y8zD.js → policy-CbCotzr6.js} +2 -2
- package/dist/web/public/assets/{policy-ndE1Y8zD.js.map → policy-CbCotzr6.js.map} +1 -1
- package/dist/web/public/assets/{refresh-ccw-Bx817_KW.js → refresh-ccw-CINxCmwV.js} +2 -2
- package/dist/web/public/assets/{refresh-ccw-Bx817_KW.js.map → refresh-ccw-CINxCmwV.js.map} +1 -1
- package/dist/web/public/assets/{reminders-XynkGQc5.js → reminders-CSKrWre3.js} +2 -2
- package/dist/web/public/assets/{reminders-XynkGQc5.js.map → reminders-CSKrWre3.js.map} +1 -1
- package/dist/web/public/assets/{save-CqMcATrh.js → save-Bib9iAA-.js} +2 -2
- package/dist/web/public/assets/{save-CqMcATrh.js.map → save-Bib9iAA-.js.map} +1 -1
- package/dist/web/public/assets/{schedules-VM02w_Om.js → schedules-DUD_FfEX.js} +2 -2
- package/dist/web/public/assets/{schedules-VM02w_Om.js.map → schedules-DUD_FfEX.js.map} +1 -1
- package/dist/web/public/assets/{search-Ba-e1t1P.js → search-DZOHNA81.js} +2 -2
- package/dist/web/public/assets/{search-Ba-e1t1P.js.map → search-DZOHNA81.js.map} +1 -1
- package/dist/web/public/assets/{service-C-wnwJ-b.js → service-Cf7EQ4Sj.js} +3 -3
- package/dist/web/public/assets/{service-C-wnwJ-b.js.map → service-Cf7EQ4Sj.js.map} +1 -1
- package/dist/web/public/assets/{status-badge-CsdJ6k8Q.js → status-badge-RpKtiHgj.js} +2 -2
- package/dist/web/public/assets/{status-badge-CsdJ6k8Q.js.map → status-badge-RpKtiHgj.js.map} +1 -1
- package/dist/web/public/assets/{subtasks-mGRKpF0G.js → subtasks-xCHP5uI6.js} +2 -2
- package/dist/web/public/assets/{subtasks-mGRKpF0G.js.map → subtasks-xCHP5uI6.js.map} +1 -1
- package/dist/web/public/assets/{table-vmLMgj6_.js → table-S43AHY-3.js} +2 -2
- package/dist/web/public/assets/{table-vmLMgj6_.js.map → table-S43AHY-3.js.map} +1 -1
- package/dist/web/public/assets/{topn-nu66Fotx.js → topn-C2tcvmnB.js} +2 -2
- package/dist/web/public/assets/{topn-nu66Fotx.js.map → topn-C2tcvmnB.js.map} +1 -1
- package/dist/web/public/assets/{trash-2-ZIitN_U3.js → trash-2-Ct7YJmZO.js} +2 -2
- package/dist/web/public/assets/{trash-2-ZIitN_U3.js.map → trash-2-Ct7YJmZO.js.map} +1 -1
- package/dist/web/public/assets/{use-memory-DgEqHEca.js → use-memory-CCn0h8EP.js} +2 -2
- package/dist/web/public/assets/{use-memory-DgEqHEca.js.map → use-memory-CCn0h8EP.js.map} +1 -1
- package/dist/web/public/assets/{use-observability-CQev_A8e.js → use-observability-Dbal-WXR.js} +2 -2
- package/dist/web/public/assets/{use-observability-CQev_A8e.js.map → use-observability-Dbal-WXR.js.map} +1 -1
- package/dist/web/public/assets/{use-settings-CU-UcrVD.js → use-settings-erlkhPqn.js} +2 -2
- package/dist/web/public/assets/{use-settings-CU-UcrVD.js.map → use-settings-erlkhPqn.js.map} +1 -1
- package/dist/web/public/assets/{use-skills-Dr77CXLA.js → use-skills-C8Ukv8B4.js} +2 -2
- package/dist/web/public/assets/{use-skills-Dr77CXLA.js.map → use-skills-C8Ukv8B4.js.map} +1 -1
- package/dist/web/public/assets/{use-workspace-PNv9Z4de.js → use-workspace-8VZDPppc.js} +2 -2
- package/dist/web/public/assets/{use-workspace-PNv9Z4de.js.map → use-workspace-8VZDPppc.js.map} +1 -1
- package/dist/web/public/assets/{useQuery-BTyugXYV.js → useQuery-BnCHQlxq.js} +2 -2
- package/dist/web/public/assets/{useQuery-BTyugXYV.js.map → useQuery-BnCHQlxq.js.map} +1 -1
- package/dist/web/public/assets/{vector-w-Ea3pg6.js → vector-DDnIidyp.js} +2 -2
- package/dist/web/public/assets/{vector-w-Ea3pg6.js.map → vector-DDnIidyp.js.map} +1 -1
- package/dist/web/public/assets/{viewer-DKA7QP9U.js → viewer-BV0Cux3V.js} +2 -2
- package/dist/web/public/assets/{viewer-DKA7QP9U.js.map → viewer-BV0Cux3V.js.map} +1 -1
- package/dist/web/public/assets/{workspace-DVLZca7t.js → workspace-DbLMyUTn.js} +2 -2
- package/dist/web/public/assets/{workspace-DVLZca7t.js.map → workspace-DbLMyUTn.js.map} +1 -1
- package/dist/web/public/assets/{workspaces-DYZsMmY-.js → workspaces-BhF0IAJg.js} +2 -2
- package/dist/web/public/assets/{workspaces-DYZsMmY-.js.map → workspaces-BhF0IAJg.js.map} +1 -1
- package/dist/web/public/assets/{x-Ru3rHT82.js → x-BmgfwQRl.js} +2 -2
- package/dist/web/public/assets/{x-Ru3rHT82.js.map → x-BmgfwQRl.js.map} +1 -1
- package/dist/web/public/index.html +2 -2
- package/dist/web/public/settings.html +0 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +600 -16
- package/dist/web/server.js.map +1 -1
- package/package.json +3 -2
- package/dist/plugins/agents/copilot/index.d.ts +0 -35
- package/dist/plugins/agents/copilot/index.d.ts.map +0 -1
- package/dist/plugins/agents/copilot/index.js +0 -182
- package/dist/plugins/agents/copilot/index.js.map +0 -1
- package/dist/web/public/assets/agents-BMI1WbZj.js +0 -12
- package/dist/web/public/assets/agents-BMI1WbZj.js.map +0 -1
- package/dist/web/public/assets/env-Bqrb9XkC.js +0 -2
- package/dist/web/public/assets/env-Bqrb9XkC.js.map +0 -1
- package/dist/web/public/assets/index-CpGWCLE5.js.map +0 -1
- package/dist/web/public/assets/layout-9Gp_myEd.js +0 -2
- package/dist/web/public/assets/layout-9Gp_myEd.js.map +0 -1
- package/dist/web/public/assets/messengers-BRV1IVGX.js +0 -7
- package/dist/web/public/assets/messengers-BRV1IVGX.js.map +0 -1
package/dist/core/audit-log.js
CHANGED
|
@@ -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
|
-
|
|
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 @@
|
|
|
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.
|
|
6
|
-
*
|
|
7
|
-
* (
|
|
8
|
-
*
|
|
9
|
-
*
|
|
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
|
|
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.
|
|
33
|
-
*
|
|
34
|
-
* (
|
|
35
|
-
*
|
|
36
|
-
*
|
|
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
|
-
//
|
|
43
|
-
//
|
|
44
|
-
//
|
|
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
|
|
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
|
-
|
|
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,
|
|
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
|
-
//
|
|
62
|
-
//
|
|
63
|
-
//
|
|
64
|
-
|
|
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":"AAAA,8DAA8D;AAC9D,uEAAuE;AACvE,EAAE;AACF,4DAA4D;AAC5D,uEAAuE;AACvE,kEAAkE;AAClE,gEAAgE;AAChE,mEAAmE;AACnE,iDAAiD;AACjD,EAAE;AACF,wEAAwE;AACxE,oEAAoE;AACpE,uEAAuE;AACvE,0EAA0E;AAC1E,mEAAmE;AACnE,EAAE;AACF,4DAA4D;AAC5D,EAAE;AACF,gEAAgE;AAChE,gEAAgE;AAChE,gEAAgE;AAChE,gEAAgE;AAChE,gEAAgE;AAChE,gEAAgE;AAChE,4EAA4E;AAC5E,sFAAsF;AACtF,iEAAiE;AACjE,iEAAiE;AACjE,iEAAiE;AACjE,iEAAiE;AACjE,EAAE;AACF,kEAAkE;AAClE,kEAAkE;AAClE,qDAAqD;AAErD,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,aAAa,CAAA;AAElD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAA;
|
|
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"}
|