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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hot-Bh5Nrc7i.js","sources":["../../node_modules/lucide-react/dist/esm/icons/copy.js","../../node_modules/lucide-react/dist/esm/icons/flame.js","../../node_modules/lucide-react/dist/esm/icons/star.js","../../src/routes/skills/hot.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Copy = createLucideIcon(\"Copy\", [\n [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n]);\n\nexport { Copy as default };\n//# sourceMappingURL=copy.js.map\n","/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Flame = createLucideIcon(\"Flame\", [\n [\n \"path\",\n {\n d: \"M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z\",\n key: \"96xj49\"\n }\n ]\n]);\n\nexport { Flame as default };\n//# sourceMappingURL=flame.js.map\n","/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Star = createLucideIcon(\"Star\", [\n [\n \"path\",\n {\n d: \"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z\",\n key: \"r04s7s\"\n }\n ]\n]);\n\nexport { Star as default };\n//# sourceMappingURL=star.js.map\n","/**\n * /skills/hot — read-only browse of skillhub.cn's hot list.\n *\n * Backed by /api/skills/remote/hot (server proxies upstream with a\n * 5-min cache + stale-while-error). agim never auto-runs an install:\n * the detail dialog surfaces three copy-pasteable commands and the\n * operator decides where to execute.\n *\n * Restored from v1's tasks.html in 2026-05; the v2 SPA had the\n * installed-skills view but had dropped the hot list during the\n * memory-tab port.\n */\n\nimport { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { toast } from 'sonner'\nimport {\n Copy,\n Download,\n ExternalLink,\n Flame,\n Loader2,\n RefreshCcw,\n Search,\n Star,\n} from 'lucide-react'\n\nimport { EmptyState } from '@/components/common/empty-state'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from '@/components/ui/dialog'\nimport { Input } from '@/components/ui/input'\nimport { useSkillsRemoteHot } from '@/hooks/use-skills'\nimport type { RemoteSkill } from '@/types/api'\nimport { cn } from '@/lib/utils'\n\nexport default function SkillsHotRoute(): JSX.Element {\n const { t } = useTranslation(['skills', 'common'])\n const { data, isLoading, isFetching, refetch } = useSkillsRemoteHot()\n\n const skills: RemoteSkill[] = data?.skills ?? []\n const [q, setQ] = useState('')\n const [openSlug, setOpenSlug] = useState<string | null>(null)\n\n const filtered = useMemo(() => {\n const needle = q.trim().toLowerCase()\n if (!needle) return skills\n return skills.filter((s) =>\n s.slug.toLowerCase().includes(needle)\n || (s.name || '').toLowerCase().includes(needle)\n || (s.description || '').toLowerCase().includes(needle)\n || (s.category || '').toLowerCase().includes(needle)\n )\n }, [skills, q])\n\n const openSkill = openSlug ? skills.find((s) => s.slug === openSlug) ?? null : null\n\n return (\n <div className=\"mx-auto flex max-w-5xl flex-col gap-4\">\n <header className=\"flex flex-col gap-1\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <h1 className=\"text-xl font-semibold inline-flex items-center gap-2\">\n <Flame className=\"h-5 w-5 text-warning\" />\n {t('hot.title')}\n </h1>\n <div className=\"ml-auto flex items-center gap-2\">\n <Button\n asChild\n variant=\"ghost\"\n size=\"sm\"\n >\n <a\n href=\"https://skillhub.cn\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <ExternalLink className=\"h-4 w-4\" />\n <span className=\"hidden sm:inline\">{t('hot.openHub')}</span>\n </a>\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => refetch()}\n disabled={isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n {isFetching ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : <RefreshCcw className=\"h-4 w-4\" />}\n <span className=\"hidden sm:inline\">{t('actions.refresh', { ns: 'common' })}</span>\n </Button>\n </div>\n </div>\n <p className=\"text-sm text-text-dim\">{t('hot.subtitle')}</p>\n {data && (\n <CacheMeta\n cached={!!data.cached}\n stale={!!data.stale}\n fetchedAt={data.fetchedAt}\n />\n )}\n </header>\n\n {skills.length > 0 && (\n <div className=\"flex flex-wrap items-end gap-2\">\n <div className=\"relative flex-1 min-w-[180px] max-w-md\">\n <Search className=\"pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 h-4 w-4 text-text-muted\" />\n <Input\n value={q}\n onChange={(e) => setQ(e.target.value)}\n placeholder={t('actions.search', { ns: 'common' })}\n className=\"pl-7\"\n />\n </div>\n <Badge variant=\"secondary\" className=\"ml-auto\">\n {filtered.length} / {skills.length}\n </Badge>\n </div>\n )}\n\n {isLoading ? (\n <div className=\"h-48 w-full rounded-md bg-surface-2 animate-pulse\" />\n ) : skills.length === 0 ? (\n <EmptyState icon={<Flame />} title={t('hot.empty')} />\n ) : (\n <ul className=\"flex flex-col gap-2\">\n {filtered.map((s) => (\n <li key={s.slug}>\n <button\n type=\"button\"\n onClick={() => setOpenSlug(s.slug)}\n className={cn(\n 'flex w-full flex-col gap-1 rounded-md border border-border bg-surface px-3 py-2 text-left',\n 'transition-colors hover:border-border-strong hover:bg-surface-hover',\n )}\n >\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"font-medium text-text\">{s.name || s.slug}</span>\n {s.version && (\n <span className=\"text-text-muted text-xs font-mono\">v{s.version}</span>\n )}\n {s.category && (\n <Badge variant=\"outline\">{s.category}</Badge>\n )}\n <div className=\"ml-auto flex items-center gap-3 text-xs text-text-dim tabular-nums\">\n <span className=\"inline-flex items-center gap-1\">\n <Star className=\"h-3 w-3\" />\n {formatNum(s.stars)}\n </span>\n <span className=\"inline-flex items-center gap-1\">\n <Download className=\"h-3 w-3\" />\n {formatNum(s.installs)}\n </span>\n </div>\n </div>\n <code className=\"text-text-muted text-xs font-mono\">{s.slug}</code>\n {s.description && (\n <p className=\"line-clamp-2 text-sm text-text-dim\">{s.description}</p>\n )}\n </button>\n </li>\n ))}\n </ul>\n )}\n\n <RemoteSkillDialog\n skill={openSkill}\n onOpenChange={(open) => { if (!open) setOpenSlug(null) }}\n />\n </div>\n )\n}\n\nfunction CacheMeta({\n cached,\n stale,\n fetchedAt,\n}: {\n cached: boolean\n stale: boolean\n fetchedAt: number\n}): JSX.Element | null {\n const { t } = useTranslation('skills')\n const when = useMemo(() => {\n try {\n const d = new Date(fetchedAt)\n if (Number.isNaN(d.getTime())) return ''\n return d.toLocaleString(undefined, {\n month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit',\n })\n } catch {\n return ''\n }\n }, [fetchedAt])\n return (\n <div className=\"flex flex-wrap items-center gap-2 text-xs text-text-muted\">\n <span>{t('hot.updatedAt', { at: when })}</span>\n {cached && <Badge variant=\"outline\">{t('hot.cached')}</Badge>}\n {stale && <Badge variant=\"warning\">{t('hot.stale')}</Badge>}\n </div>\n )\n}\n\ninterface RemoteSkillDialogProps {\n skill: RemoteSkill | null\n onOpenChange: (open: boolean) => void\n}\n\nfunction RemoteSkillDialog({ skill, onOpenChange }: RemoteSkillDialogProps): JSX.Element {\n const { t } = useTranslation('skills')\n\n // Three copy-pasteable install paths. agim never executes them itself\n // — the operator chooses CLI or IM.\n const commands = useMemo(() => {\n if (!skill) return []\n return [\n { key: 'cliInstall', cmd: `skillhub install ${skill.slug}` },\n { key: 'cliSearch', cmd: `skillhub search ${skill.slug}` },\n { key: 'imAsk', cmd: `请用 skillhub 安装 ${skill.slug} 技能` },\n ]\n }, [skill])\n\n return (\n <Dialog open={skill != null} onOpenChange={onOpenChange}>\n <DialogContent className=\"sm:max-w-2xl\">\n <DialogHeader>\n <DialogTitle>{skill?.name || skill?.slug || ''}</DialogTitle>\n {skill?.description && (\n <DialogDescription>{skill.description}</DialogDescription>\n )}\n </DialogHeader>\n\n {skill && (\n <>\n <dl className=\"grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 text-xs\">\n <dt className=\"text-text-dim\">slug</dt>\n <dd className=\"font-mono\">{skill.slug}</dd>\n {skill.version && (\n <>\n <dt className=\"text-text-dim\">{t('hot.detail.version')}</dt>\n <dd className=\"font-mono\">v{skill.version}</dd>\n </>\n )}\n {skill.category && (\n <>\n <dt className=\"text-text-dim\">{t('hot.detail.category')}</dt>\n <dd>{skill.category}</dd>\n </>\n )}\n <dt className=\"text-text-dim\">{t('hot.detail.stars')}</dt>\n <dd className=\"tabular-nums\">{formatNum(skill.stars)}</dd>\n <dt className=\"text-text-dim\">{t('hot.detail.installs')}</dt>\n <dd className=\"tabular-nums\">{formatNum(skill.installs)}</dd>\n {skill.downloads != null && (\n <>\n <dt className=\"text-text-dim\">{t('hot.detail.downloads')}</dt>\n <dd className=\"tabular-nums\">{formatNum(skill.downloads)}</dd>\n </>\n )}\n </dl>\n\n <div className=\"mt-4 border-t border-border pt-3\">\n <h3 className=\"text-sm font-medium\">{t('hot.detail.howInstall')}</h3>\n <ul className=\"mt-2 flex flex-col gap-2\">\n {commands.map((c) => (\n <li key={c.key} className=\"flex flex-col gap-1 sm:flex-row sm:items-center sm:gap-2\">\n <span className=\"text-xs text-text-dim sm:w-40 sm:shrink-0\">\n {t(`hot.detail.label.${c.key}`)}\n </span>\n <code className=\"flex-1 rounded bg-surface-2 px-2 py-1 font-mono text-xs break-all\">\n {c.cmd}\n </code>\n <CopyButton text={c.cmd} />\n </li>\n ))}\n </ul>\n <p className=\"mt-3 text-[11px] text-text-muted\">{t('hot.detail.hint')}</p>\n </div>\n </>\n )}\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CopyButton({ text }: { text: string }): JSX.Element {\n const { t } = useTranslation('skills')\n const [copied, setCopied] = useState(false)\n async function onClick(): Promise<void> {\n try {\n await navigator.clipboard.writeText(text)\n setCopied(true)\n toast.success(t('hot.detail.copied'))\n setTimeout(() => setCopied(false), 1500)\n } catch (err) {\n toast.error(String((err as Error)?.message ?? err))\n }\n }\n return (\n <Button\n type=\"button\"\n variant=\"secondary\"\n size=\"sm\"\n onClick={() => void onClick()}\n className=\"shrink-0\"\n >\n <Copy className=\"h-3 w-3\" />\n {copied ? t('hot.detail.copied') : t('hot.detail.copy')}\n </Button>\n )\n}\n\nfunction formatNum(n: number | undefined): string {\n if (n == null || !Number.isFinite(n)) return '—'\n return n.toLocaleString()\n}\n"],"names":["Copy","createLucideIcon","Flame","Star","SkillsHotRoute","t","useTranslation","data","isLoading","isFetching","refetch","useSkillsRemoteHot","skills","q","setQ","useState","openSlug","setOpenSlug","filtered","useMemo","needle","s","openSkill","jsxs","jsx","Button","ExternalLink","Loader2","RefreshCcw","CacheMeta","Search","Input","e","Badge","EmptyState","cn","formatNum","Download","RemoteSkillDialog","open","cached","stale","fetchedAt","when","d","skill","onOpenChange","commands","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","Fragment","c","CopyButton","text","copied","setCopied","onClick","toast","err","n"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|
|
1
|
+
{"version":3,"file":"hot-Dt4V3jM_.js","sources":["../../node_modules/lucide-react/dist/esm/icons/copy.js","../../node_modules/lucide-react/dist/esm/icons/flame.js","../../node_modules/lucide-react/dist/esm/icons/star.js","../../src/routes/skills/hot.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Copy = createLucideIcon(\"Copy\", [\n [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n]);\n\nexport { Copy as default };\n//# sourceMappingURL=copy.js.map\n","/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Flame = createLucideIcon(\"Flame\", [\n [\n \"path\",\n {\n d: \"M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z\",\n key: \"96xj49\"\n }\n ]\n]);\n\nexport { Flame as default };\n//# sourceMappingURL=flame.js.map\n","/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Star = createLucideIcon(\"Star\", [\n [\n \"path\",\n {\n d: \"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z\",\n key: \"r04s7s\"\n }\n ]\n]);\n\nexport { Star as default };\n//# sourceMappingURL=star.js.map\n","/**\n * /skills/hot — read-only browse of skillhub.cn's hot list.\n *\n * Backed by /api/skills/remote/hot (server proxies upstream with a\n * 5-min cache + stale-while-error). agim never auto-runs an install:\n * the detail dialog surfaces three copy-pasteable commands and the\n * operator decides where to execute.\n *\n * Restored from v1's tasks.html in 2026-05; the v2 SPA had the\n * installed-skills view but had dropped the hot list during the\n * memory-tab port.\n */\n\nimport { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { toast } from 'sonner'\nimport {\n Copy,\n Download,\n ExternalLink,\n Flame,\n Loader2,\n RefreshCcw,\n Search,\n Star,\n} from 'lucide-react'\n\nimport { EmptyState } from '@/components/common/empty-state'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from '@/components/ui/dialog'\nimport { Input } from '@/components/ui/input'\nimport { useSkillsRemoteHot } from '@/hooks/use-skills'\nimport type { RemoteSkill } from '@/types/api'\nimport { cn } from '@/lib/utils'\n\nexport default function SkillsHotRoute(): JSX.Element {\n const { t } = useTranslation(['skills', 'common'])\n const { data, isLoading, isFetching, refetch } = useSkillsRemoteHot()\n\n const skills: RemoteSkill[] = data?.skills ?? []\n const [q, setQ] = useState('')\n const [openSlug, setOpenSlug] = useState<string | null>(null)\n\n const filtered = useMemo(() => {\n const needle = q.trim().toLowerCase()\n if (!needle) return skills\n return skills.filter((s) =>\n s.slug.toLowerCase().includes(needle)\n || (s.name || '').toLowerCase().includes(needle)\n || (s.description || '').toLowerCase().includes(needle)\n || (s.category || '').toLowerCase().includes(needle)\n )\n }, [skills, q])\n\n const openSkill = openSlug ? skills.find((s) => s.slug === openSlug) ?? null : null\n\n return (\n <div className=\"mx-auto flex max-w-5xl flex-col gap-4\">\n <header className=\"flex flex-col gap-1\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <h1 className=\"text-xl font-semibold inline-flex items-center gap-2\">\n <Flame className=\"h-5 w-5 text-warning\" />\n {t('hot.title')}\n </h1>\n <div className=\"ml-auto flex items-center gap-2\">\n <Button\n asChild\n variant=\"ghost\"\n size=\"sm\"\n >\n <a\n href=\"https://skillhub.cn\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <ExternalLink className=\"h-4 w-4\" />\n <span className=\"hidden sm:inline\">{t('hot.openHub')}</span>\n </a>\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => refetch()}\n disabled={isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n {isFetching ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : <RefreshCcw className=\"h-4 w-4\" />}\n <span className=\"hidden sm:inline\">{t('actions.refresh', { ns: 'common' })}</span>\n </Button>\n </div>\n </div>\n <p className=\"text-sm text-text-dim\">{t('hot.subtitle')}</p>\n {data && (\n <CacheMeta\n cached={!!data.cached}\n stale={!!data.stale}\n fetchedAt={data.fetchedAt}\n />\n )}\n </header>\n\n {skills.length > 0 && (\n <div className=\"flex flex-wrap items-end gap-2\">\n <div className=\"relative flex-1 min-w-[180px] max-w-md\">\n <Search className=\"pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 h-4 w-4 text-text-muted\" />\n <Input\n value={q}\n onChange={(e) => setQ(e.target.value)}\n placeholder={t('actions.search', { ns: 'common' })}\n className=\"pl-7\"\n />\n </div>\n <Badge variant=\"secondary\" className=\"ml-auto\">\n {filtered.length} / {skills.length}\n </Badge>\n </div>\n )}\n\n {isLoading ? (\n <div className=\"h-48 w-full rounded-md bg-surface-2 animate-pulse\" />\n ) : skills.length === 0 ? (\n <EmptyState icon={<Flame />} title={t('hot.empty')} />\n ) : (\n <ul className=\"flex flex-col gap-2\">\n {filtered.map((s) => (\n <li key={s.slug}>\n <button\n type=\"button\"\n onClick={() => setOpenSlug(s.slug)}\n className={cn(\n 'flex w-full flex-col gap-1 rounded-md border border-border bg-surface px-3 py-2 text-left',\n 'transition-colors hover:border-border-strong hover:bg-surface-hover',\n )}\n >\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"font-medium text-text\">{s.name || s.slug}</span>\n {s.version && (\n <span className=\"text-text-muted text-xs font-mono\">v{s.version}</span>\n )}\n {s.category && (\n <Badge variant=\"outline\">{s.category}</Badge>\n )}\n <div className=\"ml-auto flex items-center gap-3 text-xs text-text-dim tabular-nums\">\n <span className=\"inline-flex items-center gap-1\">\n <Star className=\"h-3 w-3\" />\n {formatNum(s.stars)}\n </span>\n <span className=\"inline-flex items-center gap-1\">\n <Download className=\"h-3 w-3\" />\n {formatNum(s.installs)}\n </span>\n </div>\n </div>\n <code className=\"text-text-muted text-xs font-mono\">{s.slug}</code>\n {s.description && (\n <p className=\"line-clamp-2 text-sm text-text-dim\">{s.description}</p>\n )}\n </button>\n </li>\n ))}\n </ul>\n )}\n\n <RemoteSkillDialog\n skill={openSkill}\n onOpenChange={(open) => { if (!open) setOpenSlug(null) }}\n />\n </div>\n )\n}\n\nfunction CacheMeta({\n cached,\n stale,\n fetchedAt,\n}: {\n cached: boolean\n stale: boolean\n fetchedAt: number\n}): JSX.Element | null {\n const { t } = useTranslation('skills')\n const when = useMemo(() => {\n try {\n const d = new Date(fetchedAt)\n if (Number.isNaN(d.getTime())) return ''\n return d.toLocaleString(undefined, {\n month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit',\n })\n } catch {\n return ''\n }\n }, [fetchedAt])\n return (\n <div className=\"flex flex-wrap items-center gap-2 text-xs text-text-muted\">\n <span>{t('hot.updatedAt', { at: when })}</span>\n {cached && <Badge variant=\"outline\">{t('hot.cached')}</Badge>}\n {stale && <Badge variant=\"warning\">{t('hot.stale')}</Badge>}\n </div>\n )\n}\n\ninterface RemoteSkillDialogProps {\n skill: RemoteSkill | null\n onOpenChange: (open: boolean) => void\n}\n\nfunction RemoteSkillDialog({ skill, onOpenChange }: RemoteSkillDialogProps): JSX.Element {\n const { t } = useTranslation('skills')\n\n // Three copy-pasteable install paths. agim never executes them itself\n // — the operator chooses CLI or IM.\n const commands = useMemo(() => {\n if (!skill) return []\n return [\n { key: 'cliInstall', cmd: `skillhub install ${skill.slug}` },\n { key: 'cliSearch', cmd: `skillhub search ${skill.slug}` },\n { key: 'imAsk', cmd: `请用 skillhub 安装 ${skill.slug} 技能` },\n ]\n }, [skill])\n\n return (\n <Dialog open={skill != null} onOpenChange={onOpenChange}>\n <DialogContent className=\"sm:max-w-2xl\">\n <DialogHeader>\n <DialogTitle>{skill?.name || skill?.slug || ''}</DialogTitle>\n {skill?.description && (\n <DialogDescription>{skill.description}</DialogDescription>\n )}\n </DialogHeader>\n\n {skill && (\n <>\n <dl className=\"grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 text-xs\">\n <dt className=\"text-text-dim\">slug</dt>\n <dd className=\"font-mono\">{skill.slug}</dd>\n {skill.version && (\n <>\n <dt className=\"text-text-dim\">{t('hot.detail.version')}</dt>\n <dd className=\"font-mono\">v{skill.version}</dd>\n </>\n )}\n {skill.category && (\n <>\n <dt className=\"text-text-dim\">{t('hot.detail.category')}</dt>\n <dd>{skill.category}</dd>\n </>\n )}\n <dt className=\"text-text-dim\">{t('hot.detail.stars')}</dt>\n <dd className=\"tabular-nums\">{formatNum(skill.stars)}</dd>\n <dt className=\"text-text-dim\">{t('hot.detail.installs')}</dt>\n <dd className=\"tabular-nums\">{formatNum(skill.installs)}</dd>\n {skill.downloads != null && (\n <>\n <dt className=\"text-text-dim\">{t('hot.detail.downloads')}</dt>\n <dd className=\"tabular-nums\">{formatNum(skill.downloads)}</dd>\n </>\n )}\n </dl>\n\n <div className=\"mt-4 border-t border-border pt-3\">\n <h3 className=\"text-sm font-medium\">{t('hot.detail.howInstall')}</h3>\n <ul className=\"mt-2 flex flex-col gap-2\">\n {commands.map((c) => (\n <li key={c.key} className=\"flex flex-col gap-1 sm:flex-row sm:items-center sm:gap-2\">\n <span className=\"text-xs text-text-dim sm:w-40 sm:shrink-0\">\n {t(`hot.detail.label.${c.key}`)}\n </span>\n <code className=\"flex-1 rounded bg-surface-2 px-2 py-1 font-mono text-xs break-all\">\n {c.cmd}\n </code>\n <CopyButton text={c.cmd} />\n </li>\n ))}\n </ul>\n <p className=\"mt-3 text-[11px] text-text-muted\">{t('hot.detail.hint')}</p>\n </div>\n </>\n )}\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CopyButton({ text }: { text: string }): JSX.Element {\n const { t } = useTranslation('skills')\n const [copied, setCopied] = useState(false)\n async function onClick(): Promise<void> {\n try {\n await navigator.clipboard.writeText(text)\n setCopied(true)\n toast.success(t('hot.detail.copied'))\n setTimeout(() => setCopied(false), 1500)\n } catch (err) {\n toast.error(String((err as Error)?.message ?? err))\n }\n }\n return (\n <Button\n type=\"button\"\n variant=\"secondary\"\n size=\"sm\"\n onClick={() => void onClick()}\n className=\"shrink-0\"\n >\n <Copy className=\"h-3 w-3\" />\n {copied ? t('hot.detail.copied') : t('hot.detail.copy')}\n </Button>\n )\n}\n\nfunction formatNum(n: number | undefined): string {\n if (n == null || !Number.isFinite(n)) return '—'\n return n.toLocaleString()\n}\n"],"names":["Copy","createLucideIcon","Flame","Star","SkillsHotRoute","t","useTranslation","data","isLoading","isFetching","refetch","useSkillsRemoteHot","skills","q","setQ","useState","openSlug","setOpenSlug","filtered","useMemo","needle","s","openSkill","jsxs","jsx","Button","ExternalLink","Loader2","RefreshCcw","CacheMeta","Search","Input","e","Badge","EmptyState","cn","formatNum","Download","RemoteSkillDialog","open","cached","stale","fetchedAt","when","d","skill","onOpenChange","commands","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","Fragment","c","CopyButton","text","copied","setCopied","onClick","toast","err","n"],"mappings":"ujBAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,EAAOC,EAAiB,OAAQ,CACpC,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,SAAU,EACvF,CAAC,OAAQ,CAAE,EAAG,0DAA2D,IAAK,QAAQ,CAAE,CAC1F,CAAC,ECZD;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMC,EAAQD,EAAiB,QAAS,CACtC,CACE,OACA,CACE,EAAG,4KACH,IAAK,QACX,CACA,CACA,CAAC,ECjBD;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAME,EAAOF,EAAiB,OAAQ,CACpC,CACE,OACA,CACE,EAAG,+WACH,IAAK,QACX,CACA,CACA,CAAC,ECyBD,SAAwBG,IAA8B,CACpD,KAAM,CAAE,EAAAC,CAAA,EAAMC,EAAe,CAAC,SAAU,QAAQ,CAAC,EAC3C,CAAE,KAAAC,EAAM,UAAAC,EAAW,WAAAC,EAAY,QAAAC,CAAA,EAAYC,EAAA,EAE3CC,EAAwBL,GAAM,QAAU,CAAA,EACxC,CAACM,EAAGC,CAAI,EAAIC,EAAAA,SAAS,EAAE,EACvB,CAACC,EAAUC,CAAW,EAAIF,EAAAA,SAAwB,IAAI,EAEtDG,EAAWC,EAAAA,QAAQ,IAAM,CAC7B,MAAMC,EAASP,EAAE,KAAA,EAAO,YAAA,EACxB,OAAKO,EACER,EAAO,OAAQS,GACpBA,EAAE,KAAK,YAAA,EAAc,SAASD,CAAM,IAChCC,EAAE,MAAQ,IAAI,cAAc,SAASD,CAAM,IAC3CC,EAAE,aAAe,IAAI,YAAA,EAAc,SAASD,CAAM,IAClDC,EAAE,UAAY,IAAI,YAAA,EAAc,SAASD,CAAM,CAAA,EALjCR,CAOtB,EAAG,CAACA,EAAQC,CAAC,CAAC,EAERS,EAAYN,EAAWJ,EAAO,KAAMS,GAAMA,EAAE,OAASL,CAAQ,GAAK,KAAO,KAE/E,OACEO,EAAAA,KAAC,MAAA,CAAI,UAAU,wCACb,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,sBAChB,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,oCACb,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,uDACZ,SAAA,CAAAC,EAAAA,IAACtB,EAAA,CAAM,UAAU,sBAAA,CAAuB,EACvCG,EAAE,WAAW,CAAA,EAChB,EACAkB,EAAAA,KAAC,MAAA,CAAI,UAAU,kCACb,SAAA,CAAAC,EAAAA,IAACC,EAAA,CACC,QAAO,GACP,QAAQ,QACR,KAAK,KAEL,SAAAF,EAAAA,KAAC,IAAA,CACC,KAAK,sBACL,OAAO,SACP,IAAI,sBAEJ,SAAA,CAAAC,EAAAA,IAACE,EAAA,CAAa,UAAU,SAAA,CAAU,QACjC,OAAA,CAAK,UAAU,mBAAoB,SAAArB,EAAE,aAAa,CAAA,CAAE,CAAA,CAAA,CAAA,CACvD,CAAA,EAEFkB,EAAAA,KAACE,EAAA,CACC,QAAQ,QACR,KAAK,KACL,QAAS,IAAMf,EAAA,EACf,SAAUD,EACV,aAAYJ,EAAE,kBAAmB,CAAE,GAAI,SAAU,EAEhD,SAAA,CAAAI,EAAae,EAAAA,IAACG,GAAQ,UAAU,sBAAA,CAAuB,EAAKH,EAAAA,IAACI,EAAA,CAAW,UAAU,SAAA,CAAU,EAC7FJ,EAAAA,IAAC,OAAA,CAAK,UAAU,mBAAoB,SAAAnB,EAAE,kBAAmB,CAAE,GAAI,QAAA,CAAU,CAAA,CAAE,CAAA,CAAA,CAAA,CAC7E,CAAA,CACF,CAAA,EACF,QACC,IAAA,CAAE,UAAU,wBAAyB,SAAAA,EAAE,cAAc,EAAE,EACvDE,GACCiB,EAAAA,IAACK,EAAA,CACC,OAAQ,CAAC,CAACtB,EAAK,OACf,MAAO,CAAC,CAACA,EAAK,MACd,UAAWA,EAAK,SAAA,CAAA,CAClB,EAEJ,EAECK,EAAO,OAAS,GACfW,EAAAA,KAAC,MAAA,CAAI,UAAU,iCACb,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,yCACb,SAAA,CAAAC,EAAAA,IAACM,EAAA,CAAO,UAAU,sFAAA,CAAuF,EACzGN,EAAAA,IAACO,EAAA,CACC,MAAOlB,EACP,SAAWmB,GAAMlB,EAAKkB,EAAE,OAAO,KAAK,EACpC,YAAa3B,EAAE,iBAAkB,CAAE,GAAI,SAAU,EACjD,UAAU,MAAA,CAAA,CACZ,EACF,EACAkB,EAAAA,KAACU,EAAA,CAAM,QAAQ,YAAY,UAAU,UAClC,SAAA,CAAAf,EAAS,OAAO,MAAIN,EAAO,MAAA,CAAA,CAC9B,CAAA,EACF,EAGDJ,EACCgB,EAAAA,IAAC,MAAA,CAAI,UAAU,mDAAA,CAAoD,EACjEZ,EAAO,SAAW,EACpBY,EAAAA,IAACU,EAAA,CAAW,KAAMV,EAAAA,IAACtB,EAAA,EAAM,EAAI,MAAOG,EAAE,WAAW,EAAG,EAEpDmB,EAAAA,IAAC,KAAA,CAAG,UAAU,sBACX,SAAAN,EAAS,IAAKG,SACZ,KAAA,CACC,SAAAE,EAAAA,KAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAMN,EAAYI,EAAE,IAAI,EACjC,UAAWc,EACT,4FACA,qEAAA,EAGF,SAAA,CAAAZ,EAAAA,KAAC,MAAA,CAAI,UAAU,oCACb,SAAA,CAAAC,MAAC,QAAK,UAAU,wBAAyB,SAAAH,EAAE,MAAQA,EAAE,KAAK,EACzDA,EAAE,SACDE,OAAC,OAAA,CAAK,UAAU,oCAAoC,SAAA,CAAA,IAAEF,EAAE,OAAA,EAAQ,EAEjEA,EAAE,UACDG,EAAAA,IAACS,GAAM,QAAQ,UAAW,WAAE,SAAS,EAEvCV,EAAAA,KAAC,MAAA,CAAI,UAAU,qEACb,SAAA,CAAAA,EAAAA,KAAC,OAAA,CAAK,UAAU,iCACd,SAAA,CAAAC,EAAAA,IAACrB,EAAA,CAAK,UAAU,SAAA,CAAU,EACzBiC,EAAUf,EAAE,KAAK,CAAA,EACpB,EACAE,EAAAA,KAAC,OAAA,CAAK,UAAU,iCACd,SAAA,CAAAC,EAAAA,IAACa,EAAA,CAAS,UAAU,SAAA,CAAU,EAC7BD,EAAUf,EAAE,QAAQ,CAAA,CAAA,CACvB,CAAA,CAAA,CACF,CAAA,EACF,EACAG,EAAAA,IAAC,OAAA,CAAK,UAAU,oCAAqC,WAAE,KAAK,EAC3DH,EAAE,aACDG,EAAAA,IAAC,KAAE,UAAU,qCAAsC,WAAE,WAAA,CAAY,CAAA,CAAA,CAAA,CAErE,EAhCOH,EAAE,IAiCX,CACD,EACH,EAGFG,EAAAA,IAACc,EAAA,CACC,MAAOhB,EACP,aAAeiB,GAAS,CAAOA,GAAMtB,EAAY,IAAI,CAAE,CAAA,CAAA,CACzD,EACF,CAEJ,CAEA,SAASY,EAAU,CACjB,OAAAW,EACA,MAAAC,EACA,UAAAC,CACF,EAIuB,CACrB,KAAM,CAAE,EAAArC,CAAA,EAAMC,EAAe,QAAQ,EAC/BqC,EAAOxB,EAAAA,QAAQ,IAAM,CACzB,GAAI,CACF,MAAMyB,EAAI,IAAI,KAAKF,CAAS,EAC5B,OAAI,OAAO,MAAME,EAAE,QAAA,CAAS,EAAU,GAC/BA,EAAE,eAAe,OAAW,CACjC,MAAO,QAAS,IAAK,UAAW,KAAM,UAAW,OAAQ,SAAA,CAC1D,CACH,MAAQ,CACN,MAAO,EACT,CACF,EAAG,CAACF,CAAS,CAAC,EACd,OACEnB,EAAAA,KAAC,MAAA,CAAI,UAAU,4DACb,SAAA,CAAAC,MAAC,QAAM,SAAAnB,EAAE,gBAAiB,CAAE,GAAIsC,CAAA,CAAM,EAAE,EACvCH,GAAUhB,EAAAA,IAACS,EAAA,CAAM,QAAQ,UAAW,SAAA5B,EAAE,YAAY,EAAE,EACpDoC,GAASjB,EAAAA,IAACS,EAAA,CAAM,QAAQ,UAAW,SAAA5B,EAAE,WAAW,CAAA,CAAE,CAAA,EACrD,CAEJ,CAOA,SAASiC,EAAkB,CAAE,MAAAO,EAAO,aAAAC,GAAqD,CACvF,KAAM,CAAE,EAAAzC,CAAA,EAAMC,EAAe,QAAQ,EAI/ByC,EAAW5B,EAAAA,QAAQ,IAClB0B,EACE,CACL,CAAE,IAAK,aAAc,IAAK,oBAAoBA,EAAM,IAAI,EAAA,EACxD,CAAE,IAAK,YAAc,IAAK,mBAAmBA,EAAM,IAAI,EAAA,EACvD,CAAE,IAAK,QAAc,IAAK,kBAAkBA,EAAM,IAAI,KAAA,CAAM,EAJ3C,CAAA,EAMlB,CAACA,CAAK,CAAC,EAEV,OACErB,EAAAA,IAACwB,GAAO,KAAMH,GAAS,KAAM,aAAAC,EAC3B,SAAAvB,EAAAA,KAAC0B,EAAA,CAAc,UAAU,eACvB,SAAA,CAAA1B,OAAC2B,EAAA,CACC,SAAA,CAAA1B,MAAC2B,EAAA,CAAa,SAAAN,GAAO,MAAQA,GAAO,MAAQ,GAAG,EAC9CA,GAAO,aACNrB,MAAC4B,EAAA,CAAmB,WAAM,WAAA,CAAY,CAAA,EAE1C,EAECP,GACCtB,EAAAA,KAAA8B,WAAA,CACE,SAAA,CAAA9B,EAAAA,KAAC,KAAA,CAAG,UAAU,2DACZ,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAG,UAAU,gBAAgB,SAAA,OAAI,EAClCA,EAAAA,IAAC,KAAA,CAAG,UAAU,YAAa,WAAM,KAAK,EACrCqB,EAAM,SACLtB,EAAAA,KAAA8B,EAAAA,SAAA,CACE,SAAA,CAAA7B,MAAC,KAAA,CAAG,UAAU,gBAAiB,SAAAnB,EAAE,oBAAoB,EAAE,EACvDkB,EAAAA,KAAC,KAAA,CAAG,UAAU,YAAY,SAAA,CAAA,IAAEsB,EAAM,OAAA,CAAA,CAAQ,CAAA,EAC5C,EAEDA,EAAM,UACLtB,EAAAA,KAAA8B,EAAAA,SAAA,CACE,SAAA,CAAA7B,MAAC,KAAA,CAAG,UAAU,gBAAiB,SAAAnB,EAAE,qBAAqB,EAAE,EACxDmB,EAAAA,IAAC,KAAA,CAAI,SAAAqB,EAAM,QAAA,CAAS,CAAA,EACtB,QAED,KAAA,CAAG,UAAU,gBAAiB,SAAAxC,EAAE,kBAAkB,EAAE,QACpD,KAAA,CAAG,UAAU,eAAgB,SAAA+B,EAAUS,EAAM,KAAK,EAAE,QACpD,KAAA,CAAG,UAAU,gBAAiB,SAAAxC,EAAE,qBAAqB,EAAE,QACvD,KAAA,CAAG,UAAU,eAAgB,SAAA+B,EAAUS,EAAM,QAAQ,EAAE,EACvDA,EAAM,WAAa,MAClBtB,EAAAA,KAAA8B,EAAAA,SAAA,CACE,SAAA,CAAA7B,MAAC,KAAA,CAAG,UAAU,gBAAiB,SAAAnB,EAAE,sBAAsB,EAAE,QACxD,KAAA,CAAG,UAAU,eAAgB,SAAA+B,EAAUS,EAAM,SAAS,CAAA,CAAE,CAAA,CAAA,CAC3D,CAAA,EAEJ,EAEAtB,EAAAA,KAAC,MAAA,CAAI,UAAU,mCACb,SAAA,CAAAC,MAAC,KAAA,CAAG,UAAU,sBAAuB,SAAAnB,EAAE,uBAAuB,EAAE,EAChEmB,EAAAA,IAAC,KAAA,CAAG,UAAU,2BACX,SAAAuB,EAAS,IAAKO,GACb/B,EAAAA,KAAC,KAAA,CAAe,UAAU,2DACxB,SAAA,CAAAC,EAAAA,IAAC,OAAA,CAAK,UAAU,4CACb,SAAAnB,EAAE,oBAAoBiD,EAAE,GAAG,EAAE,CAAA,CAChC,EACA9B,EAAAA,IAAC,OAAA,CAAK,UAAU,oEACb,WAAE,IACL,EACAA,EAAAA,IAAC+B,EAAA,CAAW,KAAMD,EAAE,GAAA,CAAK,CAAA,CAAA,EAPlBA,EAAE,GAQX,CACD,EACH,QACC,IAAA,CAAE,UAAU,mCAAoC,SAAAjD,EAAE,iBAAiB,CAAA,CAAE,CAAA,CAAA,CACxE,CAAA,CAAA,CACF,CAAA,CAAA,CAEJ,CAAA,CACF,CAEJ,CAEA,SAASkD,EAAW,CAAE,KAAAC,GAAuC,CAC3D,KAAM,CAAE,EAAAnD,CAAA,EAAMC,EAAe,QAAQ,EAC/B,CAACmD,EAAQC,CAAS,EAAI3C,EAAAA,SAAS,EAAK,EAC1C,eAAe4C,GAAyB,CACtC,GAAI,CACF,MAAM,UAAU,UAAU,UAAUH,CAAI,EACxCE,EAAU,EAAI,EACdE,EAAM,QAAQvD,EAAE,mBAAmB,CAAC,EACpC,WAAW,IAAMqD,EAAU,EAAK,EAAG,IAAI,CACzC,OAASG,EAAK,CACZD,EAAM,MAAM,OAAQC,GAAe,SAAWA,CAAG,CAAC,CACpD,CACF,CACA,OACEtC,EAAAA,KAACE,EAAA,CACC,KAAK,SACL,QAAQ,YACR,KAAK,KACL,QAAS,IAAM,KAAKkC,EAAA,EACpB,UAAU,WAEV,SAAA,CAAAnC,EAAAA,IAACxB,EAAA,CAAK,UAAU,SAAA,CAAU,EAChBK,EAAToD,EAAW,oBAAyB,iBAAN,CAAuB,CAAA,CAAA,CAG5D,CAEA,SAASrB,EAAU0B,EAA+B,CAChD,OAAIA,GAAK,MAAQ,CAAC,OAAO,SAASA,CAAC,EAAU,IACtCA,EAAE,eAAA,CACX","x_google_ignoreList":[0,1,2]}
|