agim-cli 1.5.0 → 1.5.1
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 +22 -0
- package/README.md +39 -3
- package/README.zh-CN.md +42 -7
- package/dist/cli-ui/cmd-handlers.d.ts +22 -1
- package/dist/cli-ui/cmd-handlers.d.ts.map +1 -1
- package/dist/cli-ui/cmd-handlers.js +304 -40
- package/dist/cli-ui/cmd-handlers.js.map +1 -1
- package/dist/cli-ui/config-wizard.d.ts +13 -1
- package/dist/cli-ui/config-wizard.d.ts.map +1 -1
- package/dist/cli-ui/config-wizard.js +93 -21
- package/dist/cli-ui/config-wizard.js.map +1 -1
- package/dist/cli-ui/doctor.d.ts +15 -0
- package/dist/cli-ui/doctor.d.ts.map +1 -0
- package/dist/cli-ui/doctor.js +151 -0
- package/dist/cli-ui/doctor.js.map +1 -0
- package/dist/cli-ui/entry-menu.d.ts +6 -0
- package/dist/cli-ui/entry-menu.d.ts.map +1 -1
- package/dist/cli-ui/entry-menu.js +67 -30
- package/dist/cli-ui/entry-menu.js.map +1 -1
- package/dist/cli-ui/i18n.d.ts +15 -6
- package/dist/cli-ui/i18n.d.ts.map +1 -1
- package/dist/cli-ui/i18n.js +30 -12
- package/dist/cli-ui/i18n.js.map +1 -1
- package/dist/cli-ui/quickstart.d.ts +3 -0
- package/dist/cli-ui/quickstart.d.ts.map +1 -0
- package/dist/cli-ui/quickstart.js +108 -0
- package/dist/cli-ui/quickstart.js.map +1 -0
- package/dist/cli-ui/readiness.d.ts +10 -0
- package/dist/cli-ui/readiness.d.ts.map +1 -0
- package/dist/cli-ui/readiness.js +75 -0
- package/dist/cli-ui/readiness.js.map +1 -0
- package/dist/cli-ui/service.d.ts +23 -0
- package/dist/cli-ui/service.d.ts.map +1 -1
- package/dist/cli-ui/service.js +114 -5
- package/dist/cli-ui/service.js.map +1 -1
- package/dist/cli.js +99 -396
- package/dist/cli.js.map +1 -1
- package/dist/core/acp-server.d.ts.map +1 -1
- package/dist/core/acp-server.js +16 -2
- package/dist/core/acp-server.js.map +1 -1
- package/dist/core/agent-cwd.d.ts +8 -0
- package/dist/core/agent-cwd.d.ts.map +1 -1
- package/dist/core/agent-cwd.js +57 -7
- package/dist/core/agent-cwd.js.map +1 -1
- package/dist/core/commands/builtin.d.ts.map +1 -1
- package/dist/core/commands/builtin.js +12 -2
- package/dist/core/commands/builtin.js.map +1 -1
- package/dist/core/commands/model.d.ts.map +1 -1
- package/dist/core/commands/model.js +31 -2
- package/dist/core/commands/model.js.map +1 -1
- package/dist/core/llm/anthropic-provider.js +2 -1
- package/dist/core/llm/anthropic-provider.js.map +1 -1
- package/dist/core/llm/openai-compat-provider.js +3 -2
- package/dist/core/llm/openai-compat-provider.js.map +1 -1
- package/dist/core/llm/provider-base.d.ts +4 -4
- package/dist/core/llm/provider-base.d.ts.map +1 -1
- package/dist/core/llm/provider-base.js +1 -1
- package/dist/core/llm/provider-base.js.map +1 -1
- package/dist/plugins/agents/native/index.d.ts +1 -0
- package/dist/plugins/agents/native/index.d.ts.map +1 -1
- package/dist/plugins/agents/native/index.js +14 -0
- package/dist/plugins/agents/native/index.js.map +1 -1
- package/dist/plugins/agents/pi-native/factory.d.ts.map +1 -1
- package/dist/plugins/agents/pi-native/factory.js +19 -3
- package/dist/plugins/agents/pi-native/factory.js.map +1 -1
- package/dist/plugins/agents/pi-native/index.d.ts +11 -0
- package/dist/plugins/agents/pi-native/index.d.ts.map +1 -1
- package/dist/plugins/agents/pi-native/index.js +56 -2
- package/dist/plugins/agents/pi-native/index.js.map +1 -1
- package/dist/plugins/agents/pi-native/provider-resolver.d.ts +2 -0
- package/dist/plugins/agents/pi-native/provider-resolver.d.ts.map +1 -1
- package/dist/plugins/agents/pi-native/provider-resolver.js +9 -1
- package/dist/plugins/agents/pi-native/provider-resolver.js.map +1 -1
- package/dist/web/public/assets/a2a-CTsDMefo.js +7 -0
- package/dist/web/public/assets/a2a-CTsDMefo.js.map +1 -0
- package/dist/web/public/assets/{activity-BAgb2WZC.js → activity-ul8Os7Pz.js} +2 -2
- package/dist/web/public/assets/{activity-BAgb2WZC.js.map → activity-ul8Os7Pz.js.map} +1 -1
- package/dist/web/public/assets/{admins-CZYANmhn.js → admins-ByMAuquy.js} +3 -3
- package/dist/web/public/assets/{admins-CZYANmhn.js.map → admins-ByMAuquy.js.map} +1 -1
- package/dist/web/public/assets/agents-Ds1zyxBj.js +2 -0
- package/dist/web/public/assets/{agents-BXThDW6f.js.map → agents-Ds1zyxBj.js.map} +1 -1
- package/dist/web/public/assets/{approvals-ByPXIYVl.js → approvals-DOWlWI7Z.js} +3 -3
- package/dist/web/public/assets/{approvals-ByPXIYVl.js.map → approvals-DOWlWI7Z.js.map} +1 -1
- package/dist/web/public/assets/{arrow-down-B8DkdbEY.js → arrow-down-7i0xwCI2.js} +2 -2
- package/dist/web/public/assets/{arrow-down-B8DkdbEY.js.map → arrow-down-7i0xwCI2.js.map} +1 -1
- package/dist/web/public/assets/arrow-right-A889Wof8.js +7 -0
- package/dist/web/public/assets/arrow-right-A889Wof8.js.map +1 -0
- package/dist/web/public/assets/{arrow-up-i_dEdXkz.js → arrow-up-Dm0U4-6U.js} +2 -2
- package/dist/web/public/assets/{arrow-up-i_dEdXkz.js.map → arrow-up-Dm0U4-6U.js.map} +1 -1
- package/dist/web/public/assets/{asks-yD_inOnM.js → asks-DGuBsrJ7.js} +3 -3
- package/dist/web/public/assets/{asks-yD_inOnM.js.map → asks-DGuBsrJ7.js.map} +1 -1
- package/dist/web/public/assets/{audit-teCIRtgN.js → audit-BRXsplJ2.js} +2 -2
- package/dist/web/public/assets/{audit-teCIRtgN.js.map → audit-BRXsplJ2.js.map} +1 -1
- package/dist/web/public/assets/{bell-CeWDMs8_.js → bell-B-UdeJsp.js} +2 -2
- package/dist/web/public/assets/{bell-CeWDMs8_.js.map → bell-B-UdeJsp.js.map} +1 -1
- package/dist/web/public/assets/bgjobs-CcRiffyJ.js +2 -0
- package/dist/web/public/assets/bgjobs-CcRiffyJ.js.map +1 -0
- package/dist/web/public/assets/book-open-CSCq5cjL.js +7 -0
- package/dist/web/public/assets/book-open-CSCq5cjL.js.map +1 -0
- package/dist/web/public/assets/{brain-BQqv0Zhc.js → brain-Dl4DF5kX.js} +2 -2
- package/dist/web/public/assets/{brain-BQqv0Zhc.js.map → brain-Dl4DF5kX.js.map} +1 -1
- package/dist/web/public/assets/{briefcase-DUXbR4xs.js → briefcase-CeKUkFSq.js} +2 -2
- package/dist/web/public/assets/{briefcase-DUXbR4xs.js.map → briefcase-CeKUkFSq.js.map} +1 -1
- package/dist/web/public/assets/chat-rLJMdJBk.js +12 -0
- package/dist/web/public/assets/chat-rLJMdJBk.js.map +1 -0
- package/dist/web/public/assets/{chevron-left-RC6mMSiX.js → chevron-left-01fAFVpo.js} +2 -2
- package/dist/web/public/assets/{chevron-left-RC6mMSiX.js.map → chevron-left-01fAFVpo.js.map} +1 -1
- package/dist/web/public/assets/{chevron-right-DrkYVi19.js → chevron-right-CFRb-SM_.js} +3 -3
- package/dist/web/public/assets/{chevron-right-DrkYVi19.js.map → chevron-right-CFRb-SM_.js.map} +1 -1
- package/dist/web/public/assets/{circle-check-big-BC8ntMsz.js → circle-check-big-DBg2BD6o.js} +2 -2
- package/dist/web/public/assets/{circle-check-big-BC8ntMsz.js.map → circle-check-big-DBg2BD6o.js.map} +1 -1
- package/dist/web/public/assets/{circle-x-DHK7ypFY.js → circle-x-CqFMzO-x.js} +2 -2
- package/dist/web/public/assets/{circle-x-DHK7ypFY.js.map → circle-x-CqFMzO-x.js.map} +1 -1
- package/dist/web/public/assets/clipboard-list-lnqdk2_J.js +7 -0
- package/dist/web/public/assets/clipboard-list-lnqdk2_J.js.map +1 -0
- package/dist/web/public/assets/{clock-DXHhWqJH.js → clock-4hd1joQe.js} +3 -3
- package/dist/web/public/assets/{clock-DXHhWqJH.js.map → clock-4hd1joQe.js.map} +1 -1
- package/dist/web/public/assets/confirm-dialog-BDb0NLny.js +2 -0
- package/dist/web/public/assets/{confirm-dialog-gPKJnvEW.js.map → confirm-dialog-BDb0NLny.js.map} +1 -1
- package/dist/web/public/assets/{copy-DtQxgcR0.js → copy-CD4A7VD8.js} +3 -3
- package/dist/web/public/assets/{copy-DtQxgcR0.js.map → copy-CD4A7VD8.js.map} +1 -1
- package/dist/web/public/assets/dashboard-CG3WiG7h.js +2 -0
- package/dist/web/public/assets/dashboard-CG3WiG7h.js.map +1 -0
- package/dist/web/public/assets/{data-table-DOKUic1J.js → data-table-BkUshOZz.js} +2 -2
- package/dist/web/public/assets/{data-table-DOKUic1J.js.map → data-table-BkUshOZz.js.map} +1 -1
- package/dist/web/public/assets/database-lQzk64rV.js +7 -0
- package/dist/web/public/assets/database-lQzk64rV.js.map +1 -0
- package/dist/web/public/assets/{distill-p6P7-1UR.js → distill-CPurVW3v.js} +3 -3
- package/dist/web/public/assets/{distill-p6P7-1UR.js.map → distill-CPurVW3v.js.map} +1 -1
- package/dist/web/public/assets/{download-CqNiIHa8.js → download-CVZnHcwj.js} +2 -2
- package/dist/web/public/assets/{download-CqNiIHa8.js.map → download-CVZnHcwj.js.map} +1 -1
- package/dist/web/public/assets/dropdown-menu-BNH5SrVb.js +7 -0
- package/dist/web/public/assets/dropdown-menu-BNH5SrVb.js.map +1 -0
- package/dist/web/public/assets/{email-DwbfTUlV.js → email-YlI4MWLp.js} +3 -3
- package/dist/web/public/assets/{email-DwbfTUlV.js.map → email-YlI4MWLp.js.map} +1 -1
- package/dist/web/public/assets/{empty-state-CTwOQemt.js → empty-state-CuiqdZiB.js} +2 -2
- package/dist/web/public/assets/{empty-state-CTwOQemt.js.map → empty-state-CuiqdZiB.js.map} +1 -1
- package/dist/web/public/assets/{external-link-BY7Ye8yi.js → external-link-1WPpVvdu.js} +2 -2
- package/dist/web/public/assets/{external-link-BY7Ye8yi.js.map → external-link-1WPpVvdu.js.map} +1 -1
- package/dist/web/public/assets/{eye-6RUADoDS.js → eye-BfPyNFzk.js} +2 -2
- package/dist/web/public/assets/{eye-6RUADoDS.js.map → eye-BfPyNFzk.js.map} +1 -1
- package/dist/web/public/assets/{facts-DXE0aJmb.js → facts-xT_24pH8.js} +2 -2
- package/dist/web/public/assets/{facts-DXE0aJmb.js.map → facts-xT_24pH8.js.map} +1 -1
- package/dist/web/public/assets/file-text-BxfdLM0-.js +7 -0
- package/dist/web/public/assets/file-text-BxfdLM0-.js.map +1 -0
- package/dist/web/public/assets/{goals-C1LCm3qL.js → goals-C8ZQfbhj.js} +3 -3
- package/dist/web/public/assets/{goals-C1LCm3qL.js.map → goals-C8ZQfbhj.js.map} +1 -1
- package/dist/web/public/assets/health-A2StNEfn.js +2 -0
- package/dist/web/public/assets/{health-wqCp-K_o.js.map → health-A2StNEfn.js.map} +1 -1
- package/dist/web/public/assets/{heart-pulse-DfqI4GF7.js → heart-pulse-DXlE9oic.js} +2 -2
- package/dist/web/public/assets/{heart-pulse-DfqI4GF7.js.map → heart-pulse-DXlE9oic.js.map} +1 -1
- package/dist/web/public/assets/{heartbeat-Bumv4XtQ.js → heartbeat-ClO5gJrj.js} +3 -3
- package/dist/web/public/assets/{heartbeat-Bumv4XtQ.js.map → heartbeat-ClO5gJrj.js.map} +1 -1
- package/dist/web/public/assets/hot-bfTA-V_z.js +7 -0
- package/dist/web/public/assets/{hot-B-CMjQIr.js.map → hot-bfTA-V_z.js.map} +1 -1
- package/dist/web/public/assets/index-Bi2qWb-u.css +1 -0
- package/dist/web/public/assets/index-DCfdN5R7.js +244 -0
- package/dist/web/public/assets/index-DCfdN5R7.js.map +1 -0
- package/dist/web/public/assets/{injection-Dn_XqgLG.js → injection-omvCR6-p.js} +2 -2
- package/dist/web/public/assets/{injection-Dn_XqgLG.js.map → injection-omvCR6-p.js.map} +1 -1
- package/dist/web/public/assets/{installed-Cet-1M2Q.js → installed-DL6r3ktm.js} +4 -9
- package/dist/web/public/assets/installed-DL6r3ktm.js.map +1 -0
- package/dist/web/public/assets/jobs-Biy5lYd4.js +2 -0
- package/dist/web/public/assets/jobs-Biy5lYd4.js.map +1 -0
- package/dist/web/public/assets/layout-BLm6NJ3V.js +2 -0
- package/dist/web/public/assets/layout-BLm6NJ3V.js.map +1 -0
- package/dist/web/public/assets/layout-BTKafRVZ.js +2 -0
- package/dist/web/public/assets/layout-BTKafRVZ.js.map +1 -0
- package/dist/web/public/assets/layout-Bm-2s2fp.js +2 -0
- package/dist/web/public/assets/layout-Bm-2s2fp.js.map +1 -0
- package/dist/web/public/assets/layout-DsZ8eR4i.js +2 -0
- package/dist/web/public/assets/layout-DsZ8eR4i.js.map +1 -0
- package/dist/web/public/assets/{layout-D_3ZcVG7.js → layout-sxvovjEH.js} +2 -2
- package/dist/web/public/assets/{layout-D_3ZcVG7.js.map → layout-sxvovjEH.js.map} +1 -1
- package/dist/web/public/assets/llm-JjZDbBvJ.js +37 -0
- package/dist/web/public/assets/llm-JjZDbBvJ.js.map +1 -0
- package/dist/web/public/assets/loader-circle-DDdmcH0k.js +7 -0
- package/dist/web/public/assets/{loader-circle-DgdBWYl0.js.map → loader-circle-DDdmcH0k.js.map} +1 -1
- package/dist/web/public/assets/{map-pin-3QS1A0-I.js → map-pin-C_jAxukI.js} +2 -2
- package/dist/web/public/assets/{map-pin-3QS1A0-I.js.map → map-pin-C_jAxukI.js.map} +1 -1
- package/dist/web/public/assets/{mcp-DwKZULET.js → mcp-vKajK1F8.js} +3 -3
- package/dist/web/public/assets/{mcp-DwKZULET.js.map → mcp-vKajK1F8.js.map} +1 -1
- package/dist/web/public/assets/memos-DAt4k3DO.js +7 -0
- package/dist/web/public/assets/memos-DAt4k3DO.js.map +1 -0
- package/dist/web/public/assets/messengers-GYVTFlAj.js +2 -0
- package/dist/web/public/assets/messengers-GYVTFlAj.js.map +1 -0
- package/dist/web/public/assets/{mobile-Bq0FH9JV.js → mobile-VUyTo40E.js} +3 -3
- package/dist/web/public/assets/{mobile-Bq0FH9JV.js.map → mobile-VUyTo40E.js.map} +1 -1
- package/dist/web/public/assets/{network--s113Jkm.js → network-BUeWK3bs.js} +2 -2
- package/dist/web/public/assets/{network--s113Jkm.js.map → network-BUeWK3bs.js.map} +1 -1
- package/dist/web/public/assets/outbox-CEE0rwN3.js +2 -0
- package/dist/web/public/assets/outbox-CEE0rwN3.js.map +1 -0
- package/dist/web/public/assets/overview-BSOZ5gTD.js +12 -0
- package/dist/web/public/assets/overview-BSOZ5gTD.js.map +1 -0
- package/dist/web/public/assets/overview-COop5K2Y.js +12 -0
- package/dist/web/public/assets/overview-COop5K2Y.js.map +1 -0
- package/dist/web/public/assets/overview-DeH5ud6d.js +2 -0
- package/dist/web/public/assets/overview-DeH5ud6d.js.map +1 -0
- package/dist/web/public/assets/{pagination-DkdCTctJ.js → pagination-BBicLzXP.js} +3 -3
- package/dist/web/public/assets/{pagination-DkdCTctJ.js.map → pagination-BBicLzXP.js.map} +1 -1
- package/dist/web/public/assets/persona-CElXQZ4p.js +2 -0
- package/dist/web/public/assets/{persona-BvtcZh6G.js.map → persona-CElXQZ4p.js.map} +1 -1
- package/dist/web/public/assets/{plans-i3a6lrqF.js → plans-Bo5LlLeH.js} +3 -8
- package/dist/web/public/assets/plans-Bo5LlLeH.js.map +1 -0
- package/dist/web/public/assets/{play-CPoE_JnS.js → play-DX5wp4WH.js} +2 -2
- package/dist/web/public/assets/{play-CPoE_JnS.js.map → play-DX5wp4WH.js.map} +1 -1
- package/dist/web/public/assets/{plus-CfzKV_0u.js → plus-DH4J_YhN.js} +2 -2
- package/dist/web/public/assets/{plus-CfzKV_0u.js.map → plus-DH4J_YhN.js.map} +1 -1
- package/dist/web/public/assets/policy-BrgOuDt_.js +2 -0
- package/dist/web/public/assets/{policy-Cm88P8LO.js.map → policy-BrgOuDt_.js.map} +1 -1
- package/dist/web/public/assets/{qr-code-DMkV8nv2.js → qr-code-YrEuhMPC.js} +2 -2
- package/dist/web/public/assets/{qr-code-DMkV8nv2.js.map → qr-code-YrEuhMPC.js.map} +1 -1
- package/dist/web/public/assets/{refresh-ccw-nBMm5Xal.js → refresh-ccw-DlAd-eTQ.js} +2 -2
- package/dist/web/public/assets/{refresh-ccw-nBMm5Xal.js.map → refresh-ccw-DlAd-eTQ.js.map} +1 -1
- package/dist/web/public/assets/{reminders-DjEujanC.js → reminders-DBEE0zXG.js} +3 -3
- package/dist/web/public/assets/{reminders-DjEujanC.js.map → reminders-DBEE0zXG.js.map} +1 -1
- package/dist/web/public/assets/{save-DbrrCFDM.js → save-BDOtZrfp.js} +2 -2
- package/dist/web/public/assets/{save-DbrrCFDM.js.map → save-BDOtZrfp.js.map} +1 -1
- package/dist/web/public/assets/schedules-DAyhVI8-.js +2 -0
- package/dist/web/public/assets/schedules-DAyhVI8-.js.map +1 -0
- package/dist/web/public/assets/{search-5q3dkINm.js → search-55mtgHrB.js} +3 -3
- package/dist/web/public/assets/{search-5q3dkINm.js.map → search-55mtgHrB.js.map} +1 -1
- package/dist/web/public/assets/{search-DbE4VEm9.js → search-CAICU3aU.js} +2 -2
- package/dist/web/public/assets/{search-DbE4VEm9.js.map → search-CAICU3aU.js.map} +1 -1
- package/dist/web/public/assets/security-CbP4QgVp.js +2 -0
- package/dist/web/public/assets/security-CbP4QgVp.js.map +1 -0
- package/dist/web/public/assets/server-Dg4e8pvm.js +7 -0
- package/dist/web/public/assets/server-Dg4e8pvm.js.map +1 -0
- package/dist/web/public/assets/service-gWZa3sup.js +7 -0
- package/dist/web/public/assets/service-gWZa3sup.js.map +1 -0
- package/dist/web/public/assets/{shield-alert-WOa69jy3.js → shield-alert-DOKK9EnJ.js} +2 -2
- package/dist/web/public/assets/{shield-alert-WOa69jy3.js.map → shield-alert-DOKK9EnJ.js.map} +1 -1
- package/dist/web/public/assets/sparkles-G0QIs9nP.js +7 -0
- package/dist/web/public/assets/sparkles-G0QIs9nP.js.map +1 -0
- package/dist/web/public/assets/start-D-abhl3q.js +2 -0
- package/dist/web/public/assets/start-D-abhl3q.js.map +1 -0
- package/dist/web/public/assets/{status-badge-D5xhwquL.js → status-badge-CyLdpsXq.js} +2 -2
- package/dist/web/public/assets/{status-badge-D5xhwquL.js.map → status-badge-CyLdpsXq.js.map} +1 -1
- package/dist/web/public/assets/{subtasks-DMRyk6YS.js → subtasks-BnEjSGUR.js} +3 -3
- package/dist/web/public/assets/{subtasks-DMRyk6YS.js.map → subtasks-BnEjSGUR.js.map} +1 -1
- package/dist/web/public/assets/{table-Dx65w6V0.js → table-sCMZBe_Z.js} +2 -2
- package/dist/web/public/assets/{table-Dx65w6V0.js.map → table-sCMZBe_Z.js.map} +1 -1
- package/dist/web/public/assets/terminal-_pXeEjXG.js +7 -0
- package/dist/web/public/assets/terminal-_pXeEjXG.js.map +1 -0
- package/dist/web/public/assets/{topn-L7Juczp3.js → topn-D1B-gS1M.js} +3 -3
- package/dist/web/public/assets/{topn-L7Juczp3.js.map → topn-D1B-gS1M.js.map} +1 -1
- package/dist/web/public/assets/{trash-2-7xrfqd-v.js → trash-2-D2x2UPuZ.js} +2 -2
- package/dist/web/public/assets/{trash-2-7xrfqd-v.js.map → trash-2-D2x2UPuZ.js.map} +1 -1
- package/dist/web/public/assets/use-a2a-C98e2Via.js +2 -0
- package/dist/web/public/assets/use-a2a-C98e2Via.js.map +1 -0
- package/dist/web/public/assets/{use-agim-skills-pFjfgqMF.js → use-agim-skills-BbuJP3NT.js} +2 -2
- package/dist/web/public/assets/{use-agim-skills-pFjfgqMF.js.map → use-agim-skills-BbuJP3NT.js.map} +1 -1
- package/dist/web/public/assets/use-background-tasks-CwFmOokw.js +2 -0
- package/dist/web/public/assets/{use-background-tasks-D1--hHjp.js.map → use-background-tasks-CwFmOokw.js.map} +1 -1
- package/dist/web/public/assets/use-jobs-BJjeJ5lh.js +2 -0
- package/dist/web/public/assets/use-jobs-BJjeJ5lh.js.map +1 -0
- package/dist/web/public/assets/use-memory-CXDwKCco.js +2 -0
- package/dist/web/public/assets/{use-memory-Bz1Zao7g.js.map → use-memory-CXDwKCco.js.map} +1 -1
- package/dist/web/public/assets/use-observability-CY5ZUPrC.js +2 -0
- package/dist/web/public/assets/{use-observability-DtqSWVjM.js.map → use-observability-CY5ZUPrC.js.map} +1 -1
- package/dist/web/public/assets/use-outbox-DT_XWB_7.js +7 -0
- package/dist/web/public/assets/use-outbox-DT_XWB_7.js.map +1 -0
- package/dist/web/public/assets/use-schedules-D4W8fMwo.js +7 -0
- package/dist/web/public/assets/use-schedules-D4W8fMwo.js.map +1 -0
- package/dist/web/public/assets/use-settings-DGIjmUX0.js +2 -0
- package/dist/web/public/assets/use-settings-DGIjmUX0.js.map +1 -0
- package/dist/web/public/assets/use-skills-D2bMM580.js +7 -0
- package/dist/web/public/assets/use-skills-D2bMM580.js.map +1 -0
- package/dist/web/public/assets/use-vector-BYOFwjU0.js +2 -0
- package/dist/web/public/assets/use-vector-BYOFwjU0.js.map +1 -0
- package/dist/web/public/assets/use-workspace-CuytyHwb.js +2 -0
- package/dist/web/public/assets/{use-workspace-CConjEx0.js.map → use-workspace-CuytyHwb.js.map} +1 -1
- package/dist/web/public/assets/vector-CL8ezpSR.js +2 -0
- package/dist/web/public/assets/vector-CL8ezpSR.js.map +1 -0
- package/dist/web/public/assets/viewer-CD0iEfPU.js +7 -0
- package/dist/web/public/assets/viewer-CD0iEfPU.js.map +1 -0
- package/dist/web/public/assets/workspace-BA1_hso3.js +17 -0
- package/dist/web/public/assets/workspace-BA1_hso3.js.map +1 -0
- package/dist/web/public/assets/workspaces-DyGLJUgB.js +7 -0
- package/dist/web/public/assets/workspaces-DyGLJUgB.js.map +1 -0
- package/dist/web/public/index.html +2 -2
- package/dist/web/server.d.ts +0 -3
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +138 -3
- package/dist/web/server.js.map +1 -1
- package/package.json +1 -1
- package/dist/web/public/assets/a2a-D7MoJ1iT.js +0 -7
- package/dist/web/public/assets/a2a-D7MoJ1iT.js.map +0 -1
- package/dist/web/public/assets/agents-BXThDW6f.js +0 -7
- package/dist/web/public/assets/bgjobs-Rc05aEy9.js +0 -7
- package/dist/web/public/assets/bgjobs-Rc05aEy9.js.map +0 -1
- package/dist/web/public/assets/chat-DQpQLW9j.js +0 -17
- package/dist/web/public/assets/chat-DQpQLW9j.js.map +0 -1
- package/dist/web/public/assets/circle-check-DZnkaUdk.js +0 -7
- package/dist/web/public/assets/circle-check-DZnkaUdk.js.map +0 -1
- package/dist/web/public/assets/confirm-dialog-gPKJnvEW.js +0 -2
- package/dist/web/public/assets/health-wqCp-K_o.js +0 -2
- package/dist/web/public/assets/hot-B-CMjQIr.js +0 -12
- package/dist/web/public/assets/index-DHh1LYlA.js +0 -209
- package/dist/web/public/assets/index-DHh1LYlA.js.map +0 -1
- package/dist/web/public/assets/index-DknVjPYB.css +0 -1
- package/dist/web/public/assets/installed-Cet-1M2Q.js.map +0 -1
- package/dist/web/public/assets/jobs-CfEzOOAC.js +0 -2
- package/dist/web/public/assets/jobs-CfEzOOAC.js.map +0 -1
- package/dist/web/public/assets/layout-BX43KyXM.js +0 -2
- package/dist/web/public/assets/layout-BX43KyXM.js.map +0 -1
- package/dist/web/public/assets/layout-BcYZlaqf.js +0 -2
- package/dist/web/public/assets/layout-BcYZlaqf.js.map +0 -1
- package/dist/web/public/assets/layout-Cb7looUv.js +0 -2
- package/dist/web/public/assets/layout-Cb7looUv.js.map +0 -1
- package/dist/web/public/assets/layout-D7xH78OU.js +0 -2
- package/dist/web/public/assets/layout-D7xH78OU.js.map +0 -1
- package/dist/web/public/assets/llm-BZ9qqp-D.js +0 -27
- package/dist/web/public/assets/llm-BZ9qqp-D.js.map +0 -1
- package/dist/web/public/assets/loader-circle-DgdBWYl0.js +0 -7
- package/dist/web/public/assets/memos-BBtqFcoH.js +0 -12
- package/dist/web/public/assets/memos-BBtqFcoH.js.map +0 -1
- package/dist/web/public/assets/messengers-i7WvNT3o.js +0 -2
- package/dist/web/public/assets/messengers-i7WvNT3o.js.map +0 -1
- package/dist/web/public/assets/outbox-BbfC5kuG.js +0 -7
- package/dist/web/public/assets/outbox-BbfC5kuG.js.map +0 -1
- package/dist/web/public/assets/persona-BvtcZh6G.js +0 -2
- package/dist/web/public/assets/plans-i3a6lrqF.js.map +0 -1
- package/dist/web/public/assets/policy-Cm88P8LO.js +0 -2
- package/dist/web/public/assets/schedules-DzwDWykc.js +0 -7
- package/dist/web/public/assets/schedules-DzwDWykc.js.map +0 -1
- package/dist/web/public/assets/security-BIcnUrAs.js +0 -2
- package/dist/web/public/assets/security-BIcnUrAs.js.map +0 -1
- package/dist/web/public/assets/service-CnorFHzZ.js +0 -7
- package/dist/web/public/assets/service-CnorFHzZ.js.map +0 -1
- package/dist/web/public/assets/use-background-tasks-D1--hHjp.js +0 -2
- package/dist/web/public/assets/use-memory-Bz1Zao7g.js +0 -2
- package/dist/web/public/assets/use-observability-DtqSWVjM.js +0 -2
- package/dist/web/public/assets/use-settings-DKbDqCEJ.js +0 -2
- package/dist/web/public/assets/use-settings-DKbDqCEJ.js.map +0 -1
- package/dist/web/public/assets/use-workspace-CConjEx0.js +0 -2
- package/dist/web/public/assets/vector-D8sEa2W-.js +0 -2
- package/dist/web/public/assets/vector-D8sEa2W-.js.map +0 -1
- package/dist/web/public/assets/viewer-aSIjAKVA.js +0 -12
- package/dist/web/public/assets/viewer-aSIjAKVA.js.map +0 -1
- package/dist/web/public/assets/workspace-BqwWoinI.js +0 -17
- package/dist/web/public/assets/workspace-BqwWoinI.js.map +0 -1
- package/dist/web/public/assets/workspaces-ChsJcrav.js +0 -7
- package/dist/web/public/assets/workspaces-ChsJcrav.js.map +0 -1
|
@@ -7,11 +7,11 @@ import { join } from 'node:path';
|
|
|
7
7
|
import { resolveAgentCwd, defaultAgentCwd } from '../../../core/agent-cwd.js';
|
|
8
8
|
import { AGIM_HOME } from '../../../core/agim-paths.js';
|
|
9
9
|
import { threadKey as makeThreadKey } from '../../../core/approval-bus.js';
|
|
10
|
-
import { getAnyProvider, getProvider } from '../../../core/llm/registry.js';
|
|
10
|
+
import { getAnyProvider, getProvider, getProviderByName, listProviders } from '../../../core/llm/registry.js';
|
|
11
11
|
import { buildSystemPrompt } from '../native/index.js';
|
|
12
12
|
import { buildPiApprovalGate } from './approval.js';
|
|
13
13
|
import { NativeAgentAdapter } from './index.js';
|
|
14
|
-
import { resolveAnyPiModel, resolvePiModelForRole } from './provider-resolver.js';
|
|
14
|
+
import { resolveAnyPiModel, resolvePiModelByBackendName, resolvePiModelForRole } from './provider-resolver.js';
|
|
15
15
|
import { assembleToolsForPi } from './tools.js';
|
|
16
16
|
const ROLE_CHAIN = ['native-chat', 'cheap'];
|
|
17
17
|
/** Mirror agim's AGIM_NATIVE_AGENT_MAX_ITER (default 50, clamp [1,100]). */
|
|
@@ -56,7 +56,10 @@ export function createNativeAgentAdapter() {
|
|
|
56
56
|
name: 'native',
|
|
57
57
|
aliases: ['agim', 'na', 'llm', 'native-llm'],
|
|
58
58
|
sessionsRoot,
|
|
59
|
-
resolveModel: async () => {
|
|
59
|
+
resolveModel: async (opts) => {
|
|
60
|
+
const explicit = resolvePiModelByBackendName(opts?.model);
|
|
61
|
+
if (explicit)
|
|
62
|
+
return explicit;
|
|
60
63
|
for (const role of ROLE_CHAIN) {
|
|
61
64
|
const binding = resolvePiModelForRole(role);
|
|
62
65
|
if (binding)
|
|
@@ -64,6 +67,11 @@ export function createNativeAgentAdapter() {
|
|
|
64
67
|
}
|
|
65
68
|
return resolveAnyPiModel();
|
|
66
69
|
},
|
|
70
|
+
listModels: () => listProviders().map((p) => ({
|
|
71
|
+
name: p.name,
|
|
72
|
+
providerType: p.providerType,
|
|
73
|
+
model: p.model,
|
|
74
|
+
})),
|
|
67
75
|
// Full agim tool surface (builtin / fs / web / exec / todo / agim / MCP),
|
|
68
76
|
// assembled per-turn from native's single source of truth.
|
|
69
77
|
resolveTools: (opts, sessionId) => assembleToolsForPi(opts, sessionId),
|
|
@@ -82,6 +90,14 @@ export function createNativeAgentAdapter() {
|
|
|
82
90
|
// and gets the operator role + skill routing + tool guides.
|
|
83
91
|
resolveSystemPrompt: (opts) => {
|
|
84
92
|
const o = opts ?? {};
|
|
93
|
+
if (o.model) {
|
|
94
|
+
const provider = getProviderByName(o.model);
|
|
95
|
+
if (provider) {
|
|
96
|
+
const planThreadKey = o.platform && o.threadId ? makeThreadKey(o.platform, o.channelId ?? '', o.threadId) : undefined;
|
|
97
|
+
const cwd = resolveAgentCwd('native', o) || defaultAgentCwd('native');
|
|
98
|
+
return buildSystemPrompt(provider, `backend:${provider.name}`, cwd, planThreadKey);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
85
101
|
for (const role of ROLE_CHAIN) {
|
|
86
102
|
const provider = getProvider(role);
|
|
87
103
|
if (!provider)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../src/plugins/agents/pi-native/factory.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,+EAA+E;AAC/E,0EAA0E;AAC1E,0CAA0C;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AACvD,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../src/plugins/agents/pi-native/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,11 @@ export interface NativeModelBinding {
|
|
|
12
12
|
headers: Record<string, string>;
|
|
13
13
|
}>;
|
|
14
14
|
}
|
|
15
|
+
export interface NativeModelChoice {
|
|
16
|
+
name: string;
|
|
17
|
+
providerType?: string;
|
|
18
|
+
model?: string;
|
|
19
|
+
}
|
|
15
20
|
export interface NativeAgentDeps {
|
|
16
21
|
/** Adapter name to register under. Defaults to 'native'. */
|
|
17
22
|
name?: string;
|
|
@@ -22,6 +27,10 @@ export interface NativeAgentDeps {
|
|
|
22
27
|
/** agim BackendConfig → pi-ai Model + auth. Returns null when no backend is
|
|
23
28
|
* configured (adapter then reports unavailable / fails the turn cleanly). */
|
|
24
29
|
resolveModel: (opts?: AgentSendOpts) => Promise<NativeModelBinding | null>;
|
|
30
|
+
/** Optional model roster for direct adapter slash-command fallback. The
|
|
31
|
+
* normal web/IM path handles `/models` in the router; this keeps REST/job
|
|
32
|
+
* style direct calls from sending the command to the LLM as plain text. */
|
|
33
|
+
listModels?: () => NativeModelChoice[];
|
|
25
34
|
/** The agim tool surface (schemas + dispatcher) to expose this turn. Receives
|
|
26
35
|
* the session id so per-thread tool state (todo tracker, plan-exit) keys
|
|
27
36
|
* correctly. */
|
|
@@ -65,10 +74,12 @@ export declare class NativeAgentAdapter implements AgentAdapter {
|
|
|
65
74
|
readonly kind: AgentAdapterKind;
|
|
66
75
|
readonly handlesAgimSkillsPrompt = true;
|
|
67
76
|
private readonly sessionMeta;
|
|
77
|
+
private readonly sessionModelOverrides;
|
|
68
78
|
constructor(deps: NativeAgentDeps);
|
|
69
79
|
isAvailable(): Promise<boolean>;
|
|
70
80
|
describe(): string | undefined;
|
|
71
81
|
sendPrompt(sessionId: string, prompt: string, history?: ChatMessage[], opts?: AgentSendOpts): AsyncGenerator<string>;
|
|
72
82
|
private runTurn;
|
|
83
|
+
private tryHandleModelSlash;
|
|
73
84
|
}
|
|
74
85
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/pi-native/index.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAC9E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACxG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAG1E,iFAAiF;AACjF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACpB,mBAAmB,EAAE,MAAM,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAA;CACxF;AAED,MAAM,WAAW,eAAe;IAC9B,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,0DAA0D;IAC1D,YAAY,EAAE,MAAM,CAAA;IACpB;kFAC8E;IAC9E,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAA;IAC1E;;qBAEiB;IACjB,YAAY,CAAC,EAAE,CACb,IAAI,EAAE,aAAa,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,KACd;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,QAAQ,EAAE,cAAc,CAAC;QAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;KAAE,GAAG,IAAI,CAAA;IACxG,6DAA6D;IAC7D,qBAAqB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC3C,qDAAqD;IACrD,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;IAC5C;gFAC4E;IAC5E,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,KAAK,YAAY,GAAG,IAAI,CAAA;IACjG;;yDAEqD;IACrD,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;IAChG;;4EAEwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;uEAImE;IACnE,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B;;;;uDAImD;IACnD,aAAa,CAAC,EAAE,yBAAyB,CAAA;CAC1C;AAqGD,qBAAa,kBAAmB,YAAW,YAAY;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/pi-native/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -112,6 +112,7 @@ export class NativeAgentAdapter {
|
|
|
112
112
|
// every session file's header) on every turn; bounds it to one scan per
|
|
113
113
|
// session per process lifetime.
|
|
114
114
|
sessionMeta = new Map();
|
|
115
|
+
sessionModelOverrides = new Map();
|
|
115
116
|
constructor(deps) {
|
|
116
117
|
this.deps = deps;
|
|
117
118
|
this.name = deps.name ?? 'native';
|
|
@@ -137,7 +138,14 @@ export class NativeAgentAdapter {
|
|
|
137
138
|
}
|
|
138
139
|
}
|
|
139
140
|
async *runTurn(sessionId, prompt, history, opts) {
|
|
140
|
-
const
|
|
141
|
+
const slashResult = this.tryHandleModelSlash(prompt, sessionId, opts);
|
|
142
|
+
if (slashResult) {
|
|
143
|
+
yield slashResult;
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const overrideModel = opts?.model || this.sessionModelOverrides.get(sessionId);
|
|
147
|
+
const effectiveOpts = overrideModel ? { ...(opts ?? {}), model: overrideModel } : opts;
|
|
148
|
+
const binding = await this.deps.resolveModel(effectiveOpts);
|
|
141
149
|
if (!binding) {
|
|
142
150
|
yield '⚠️ Agim Agent:未配置可用的大模型 API(请在 /settings/llm 添加 API + API Key;角色绑定可选)';
|
|
143
151
|
return;
|
|
@@ -172,7 +180,7 @@ export class NativeAgentAdapter {
|
|
|
172
180
|
parallelSafe: toolSurface.parallelSafe ?? this.deps.parallelSafe,
|
|
173
181
|
})
|
|
174
182
|
: [];
|
|
175
|
-
const systemPrompt = this.deps.resolveSystemPrompt?.(
|
|
183
|
+
const systemPrompt = this.deps.resolveSystemPrompt?.(effectiveOpts, sessionId);
|
|
176
184
|
const harness = new AgentHarness({
|
|
177
185
|
env,
|
|
178
186
|
session,
|
|
@@ -280,5 +288,51 @@ export class NativeAgentAdapter {
|
|
|
280
288
|
}
|
|
281
289
|
yield text;
|
|
282
290
|
}
|
|
291
|
+
tryHandleModelSlash(prompt, sessionId, opts) {
|
|
292
|
+
const trimmed = prompt.trim();
|
|
293
|
+
const match = trimmed.match(/^\/(models?|模型)(?:\s+(.+))?$/i);
|
|
294
|
+
if (!match)
|
|
295
|
+
return null;
|
|
296
|
+
const choices = this.deps.listModels?.() ?? [];
|
|
297
|
+
const current = opts?.model || this.sessionModelOverrides.get(sessionId) || choices[0]?.name || 'auto';
|
|
298
|
+
const cmd = match[1].toLowerCase();
|
|
299
|
+
const arg = (match[2] ?? '').trim();
|
|
300
|
+
if (arg && /^(reset|default|auto|默认)$/i.test(arg)) {
|
|
301
|
+
this.sessionModelOverrides.delete(sessionId);
|
|
302
|
+
return '✅ Agim Agent 模型已恢复默认角色绑定。';
|
|
303
|
+
}
|
|
304
|
+
if (cmd === 'model' && !arg) {
|
|
305
|
+
return `🧠 当前 Agim Agent 模型后端:\`${current}\`\n\n使用 /models 查看可用后端;使用 /model <后端名称> 切换。`;
|
|
306
|
+
}
|
|
307
|
+
if (arg && /^refresh$/i.test(arg)) {
|
|
308
|
+
return '✅ Agim Agent 模型列表无需刷新;它直接读取当前 LLM 配置。';
|
|
309
|
+
}
|
|
310
|
+
if (arg) {
|
|
311
|
+
let picked = choices.find((c) => c.name === arg || c.model === arg);
|
|
312
|
+
const indexMatch = arg.match(/^#?(\d+)$/);
|
|
313
|
+
if (!picked && indexMatch) {
|
|
314
|
+
const idx = Number.parseInt(indexMatch[1], 10) - 1;
|
|
315
|
+
if (idx >= 0 && idx < choices.length)
|
|
316
|
+
picked = choices[idx];
|
|
317
|
+
}
|
|
318
|
+
if (!picked) {
|
|
319
|
+
const hint = choices.length > 0 ? `\n\n可用:${choices.map((c) => `\`${c.name}\``).join('、')}` : '';
|
|
320
|
+
return `⚠️ 找不到模型后端 \`${arg}\`。${hint}`;
|
|
321
|
+
}
|
|
322
|
+
this.sessionModelOverrides.set(sessionId, picked.name);
|
|
323
|
+
return `✅ Agim Agent 模型已切换:\`${picked.name}\`${picked.model ? `(${picked.model})` : ''}`;
|
|
324
|
+
}
|
|
325
|
+
if (choices.length === 0) {
|
|
326
|
+
return '⚠️ 当前没有可用的大模型 API。请先到 /settings/llm 添加 API 和 API Key。';
|
|
327
|
+
}
|
|
328
|
+
const lines = [`📋 Agim Agent 可用模型后端 (${choices.length})`, ''];
|
|
329
|
+
choices.forEach((c, i) => {
|
|
330
|
+
const detail = [c.providerType, c.model].filter(Boolean).join(':');
|
|
331
|
+
const tag = c.name === current ? ' ⭐' : '';
|
|
332
|
+
lines.push(`${String(i + 1).padStart(3, ' ')}. \`${c.name}\`${detail ? ` — ${detail}` : ''}${tag}`);
|
|
333
|
+
});
|
|
334
|
+
lines.push('', `当前:\`${current}\` ⭐`, '使用 /model <后端名称> 或 /model #序号 切换;使用 /model reset 恢复默认。');
|
|
335
|
+
return lines.join('\n');
|
|
336
|
+
}
|
|
283
337
|
}
|
|
284
338
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/agents/pi-native/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/agents/pi-native/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,4 +6,6 @@ export declare function bindingToPiModel(b: LlmBackendBinding): NativeModelBindi
|
|
|
6
6
|
export declare function resolvePiModelForRole(role: LlmRole): NativeModelBinding | null;
|
|
7
7
|
/** Resolve a pi model binding from the first configured backend, ignoring roles. */
|
|
8
8
|
export declare function resolveAnyPiModel(): NativeModelBinding | null;
|
|
9
|
+
/** Resolve a pi model binding from an explicit agim backend name. */
|
|
10
|
+
export declare function resolvePiModelByBackendName(name: string | undefined): NativeModelBinding | null;
|
|
9
11
|
//# sourceMappingURL=provider-resolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-resolver.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/pi-native/provider-resolver.ts"],"names":[],"mappings":"AAcA,OAAO,
|
|
1
|
+
{"version":3,"file":"provider-resolver.d.ts","sourceRoot":"","sources":["../../../../src/plugins/agents/pi-native/provider-resolver.ts"],"names":[],"mappings":"AAcA,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACb,MAAM,+BAA+B,CAAA;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAcpD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,IAAI,CAmBhF;AAED;+DAC+D;AAC/D,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,kBAAkB,GAAG,IAAI,CAG9E;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,IAAI,kBAAkB,GAAG,IAAI,CAG7D;AAED,qEAAqE;AACrE,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,kBAAkB,GAAG,IAAI,CAK/F"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
// so a hand-built Model pointed at agim's baseUrl reaches the right endpoint
|
|
11
11
|
// - model.baseUrl must be a string (the provider calls .includes on it)
|
|
12
12
|
// - auth flows via getApiKeyAndHeaders → stream options.apiKey/headers
|
|
13
|
-
import { getAnyBackendBinding, getBackendBindingForRole, } from '../../../core/llm/registry.js';
|
|
13
|
+
import { getAnyBackendBinding, getBackendBindingByName, getBackendBindingForRole, } from '../../../core/llm/registry.js';
|
|
14
14
|
/** agim providerType → pi-ai stream api id. Unmapped types are unsupported
|
|
15
15
|
* by the pi engine (resolver returns null → adapter reports unavailable). */
|
|
16
16
|
const API_BY_PROVIDER_TYPE = {
|
|
@@ -53,4 +53,12 @@ export function resolveAnyPiModel() {
|
|
|
53
53
|
const binding = getAnyBackendBinding();
|
|
54
54
|
return binding ? bindingToPiModel(binding) : null;
|
|
55
55
|
}
|
|
56
|
+
/** Resolve a pi model binding from an explicit agim backend name. */
|
|
57
|
+
export function resolvePiModelByBackendName(name) {
|
|
58
|
+
const trimmed = name?.trim();
|
|
59
|
+
if (!trimmed)
|
|
60
|
+
return null;
|
|
61
|
+
const binding = getBackendBindingByName(trimmed);
|
|
62
|
+
return binding ? bindingToPiModel(binding) : null;
|
|
63
|
+
}
|
|
56
64
|
//# sourceMappingURL=provider-resolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-resolver.js","sourceRoot":"","sources":["../../../../src/plugins/agents/pi-native/provider-resolver.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,iEAAiE;AACjE,wEAAwE;AACxE,EAAE;AACF,sDAAsD;AACtD,mFAAmF;AACnF,yEAAyE;AACzE,qDAAqD;AACrD,mFAAmF;AACnF,iFAAiF;AACjF,0EAA0E;AAC1E,yEAAyE;AAGzE,OAAO,EACL,oBAAoB,EACpB,wBAAwB,GAGzB,MAAM,+BAA+B,CAAA;AAGtC;8EAC8E;AAC9E,MAAM,oBAAoB,GAA2B;IACnD,eAAe,EAAE,oBAAoB;IACrC,SAAS,EAAE,oBAAoB;CAChC,CAAA;AAED,MAAM,gBAAgB,GAA2B;IAC/C,oBAAoB,EAAE,2BAA2B;IACjD,oBAAoB,EAAE,2BAA2B;CAClD,CAAA;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAoB;IACnD,MAAM,GAAG,GAAG,oBAAoB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;IAChD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,MAAM,KAAK,GAAG;QACZ,EAAE,EAAE,CAAC,CAAC,KAAK;QACX,IAAI,EAAE,CAAC,CAAC,KAAK;QACb,GAAG;QACH,QAAQ,EAAE,CAAC,CAAC,IAAI;QAChB,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,2BAA2B;QAC1E,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,CAAC,MAAM,CAAyB;QACvC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;QAC1D,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;KACd,CAAA;IAClB,OAAO;QACL,KAAK;QACL,mBAAmB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;KAC7F,CAAA;AACH,CAAC;AAED;+DAC+D;AAC/D,MAAM,UAAU,qBAAqB,CAAC,IAAa;IACjD,MAAM,OAAO,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAA;IAC9C,OAAO,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACnD,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,iBAAiB;IAC/B,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAA;IACtC,OAAO,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACnD,CAAC"}
|
|
1
|
+
{"version":3,"file":"provider-resolver.js","sourceRoot":"","sources":["../../../../src/plugins/agents/pi-native/provider-resolver.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,iEAAiE;AACjE,wEAAwE;AACxE,EAAE;AACF,sDAAsD;AACtD,mFAAmF;AACnF,yEAAyE;AACzE,qDAAqD;AACrD,mFAAmF;AACnF,iFAAiF;AACjF,0EAA0E;AAC1E,yEAAyE;AAGzE,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,GAGzB,MAAM,+BAA+B,CAAA;AAGtC;8EAC8E;AAC9E,MAAM,oBAAoB,GAA2B;IACnD,eAAe,EAAE,oBAAoB;IACrC,SAAS,EAAE,oBAAoB;CAChC,CAAA;AAED,MAAM,gBAAgB,GAA2B;IAC/C,oBAAoB,EAAE,2BAA2B;IACjD,oBAAoB,EAAE,2BAA2B;CAClD,CAAA;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAoB;IACnD,MAAM,GAAG,GAAG,oBAAoB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;IAChD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,MAAM,KAAK,GAAG;QACZ,EAAE,EAAE,CAAC,CAAC,KAAK;QACX,IAAI,EAAE,CAAC,CAAC,KAAK;QACb,GAAG;QACH,QAAQ,EAAE,CAAC,CAAC,IAAI;QAChB,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,2BAA2B;QAC1E,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,CAAC,MAAM,CAAyB;QACvC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;QAC1D,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;KACd,CAAA;IAClB,OAAO;QACL,KAAK;QACL,mBAAmB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;KAC7F,CAAA;AACH,CAAC;AAED;+DAC+D;AAC/D,MAAM,UAAU,qBAAqB,CAAC,IAAa;IACjD,MAAM,OAAO,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAA;IAC9C,OAAO,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACnD,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,iBAAiB;IAC/B,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAA;IACtC,OAAO,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACnD,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,2BAA2B,CAAC,IAAwB;IAClE,MAAM,OAAO,GAAG,IAAI,EAAE,IAAI,EAAE,CAAA;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IACzB,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAA;IAChD,OAAO,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACnD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{h as x,u,j as e,f as d,e as h}from"./index-DCfdN5R7.js";import{r as p}from"./react-DlP5eolq.js";import{D as f}from"./data-table-BkUshOZz.js";import{E as g}from"./empty-state-CuiqdZiB.js";import{S as j}from"./status-badge-CyLdpsXq.js";import{a as N,u as b,b as w}from"./use-a2a-C98e2Via.js";import{u as v}from"./use-event-stream-I1lMFEfh.js";import{L as y}from"./loader-circle-DDdmcH0k.js";import{R as S}from"./refresh-ccw-DlAd-eTQ.js";import"./table-sCMZBe_Z.js";import"./arrow-up-Dm0U4-6U.js";import"./arrow-down-7i0xwCI2.js";/**
|
|
2
|
+
* @license lucide-react v0.469.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const A=x("GitBranch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]),C={connected:"text-success",connecting:"text-text-dim",reconnecting:"text-warning",closed:"text-text-muted"};function Q(){const{t}=u(["tasks","common"]),s=N(),n=b(),i=w({limit:50}),o=i.data?.rows??[],r=n.data,l=v({job:()=>s()}),m=p.useMemo(()=>[{id:"id",header:t("a2a.col.id"),cell:a=>e.jsxs("span",{className:"tabular-nums text-text-dim",children:["#",a.id]}),headClassName:"w-16"},{id:"agent",header:t("a2a.col.agent"),cell:a=>e.jsx("span",{className:"font-medium",children:a.agent}),headClassName:"w-32"},{id:"parent",header:t("a2a.col.parent"),cell:a=>a.parent_id!=null?e.jsxs("span",{className:"tabular-nums text-text-dim",children:["#",a.parent_id]}):e.jsx("span",{className:"text-text-muted",children:"—"}),headClassName:"w-20"},{id:"depth",header:t("a2a.col.depth"),cell:a=>e.jsx("span",{className:"tabular-nums text-text-dim",children:a.call_depth}),headClassName:"w-16",hideOnMobile:!0},{id:"status",header:t("a2a.col.status"),cell:a=>e.jsx(j,{status:a.status,children:a.status}),headClassName:"w-28"},{id:"prompt",header:t("a2a.col.prompt"),cell:a=>e.jsx("span",{className:"line-clamp-2 text-text-dim",children:a.prompt??"—"}),asCardTitle:!0},{id:"createdAt",header:t("a2a.col.createdAt"),cell:a=>e.jsx("span",{className:"text-text-dim",children:E(a.created_at)}),headClassName:"w-40",hideOnMobile:!0}],[t]);return e.jsxs("div",{className:"mx-auto flex max-w-7xl flex-col gap-4",children:[e.jsxs("header",{className:"flex flex-col gap-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsx("h1",{className:"text-xl font-semibold",children:t("a2a.title")}),e.jsx("span",{className:d("text-xs font-medium tabular-nums",C[l]),children:t(`jobs.live.${l}`)}),e.jsxs(h,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>{i.refetch(),n.refetch()},disabled:i.isFetching||n.isFetching,"aria-label":t("actions.refresh",{ns:"common"}),children:[i.isFetching?e.jsx(y,{className:"h-4 w-4 animate-spin"}):e.jsx(S,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:t("actions.refresh",{ns:"common"})})]})]}),e.jsx("p",{className:"text-sm text-text-dim",children:t("a2a.subtitle")})]}),r&&e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsx(c,{label:t("a2a.stats.total"),value:r.total,tone:"info"}),e.jsx(c,{label:t("a2a.stats.recent24h"),value:r.recent24h,tone:"success"}),e.jsx(c,{label:t("a2a.stats.maxDepth"),value:r.maxDepth,tone:"warning"})]}),e.jsx(f,{columns:m,rows:o,getRowId:a=>String(a.id),loading:i.isLoading,emptyState:e.jsx(g,{icon:e.jsx(A,{}),title:t("a2a.empty.title"),description:t("a2a.empty.description")})})]})}const T={info:"border-info/30 text-info",success:"border-success/30 text-success",warning:"border-warning/30 text-warning",danger:"border-danger/30 text-danger"};function c({label:t,value:s,tone:n}){return e.jsxs("div",{className:d("rounded-md border bg-surface px-3 py-2",T[n]),children:[e.jsx("div",{className:"text-xs uppercase tracking-wide text-text-dim",children:t}),e.jsx("div",{className:"text-2xl font-semibold tabular-nums",children:s})]})}function E(t){try{const s=new Date(t);return Number.isNaN(s.getTime())?t:s.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return t}}export{Q as default};
|
|
7
|
+
//# sourceMappingURL=a2a-CTsDMefo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2a-CTsDMefo.js","sources":["../../node_modules/lucide-react/dist/esm/icons/git-branch.js","../../src/routes/tasks/a2a.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 GitBranch = createLucideIcon(\"GitBranch\", [\n [\"line\", { x1: \"6\", x2: \"6\", y1: \"3\", y2: \"15\", key: \"17qcm7\" }],\n [\"circle\", { cx: \"18\", cy: \"6\", r: \"3\", key: \"1h7g24\" }],\n [\"circle\", { cx: \"6\", cy: \"18\", r: \"3\", key: \"fqmcym\" }],\n [\"path\", { d: \"M18 9a9 9 0 0 1-9 9\", key: \"n2h4wq\" }]\n]);\n\nexport { GitBranch as default };\n//# sourceMappingURL=git-branch.js.map\n","/**\n * /tasks/a2a — Agent ↔ Agent inline-call history.\n *\n * Splits into stats KPI cards (total / recent24h / maxDepth) +\n * recent-rows table. Subscribes to the SSE `job` event so a fresh\n * agent-to-agent call appears live.\n */\n\nimport { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { GitBranch, Loader2, RefreshCcw } from 'lucide-react'\n\nimport { DataTable, type DataTableColumn } from '@/components/common/data-table'\nimport { EmptyState } from '@/components/common/empty-state'\nimport { StatusBadge } from '@/components/common/status-badge'\nimport { Button } from '@/components/ui/button'\nimport { useA2ARecent, useA2AStats, useInvalidateA2A } from '@/hooks/use-a2a'\nimport { useEventStream, type SseStatus } from '@/hooks/use-event-stream'\nimport type { A2ARow } from '@/types/api'\nimport { cn } from '@/lib/utils'\n\nconst LIVE_STATUS_CLASS: Record<SseStatus, string> = {\n connected: 'text-success',\n connecting: 'text-text-dim',\n reconnecting: 'text-warning',\n closed: 'text-text-muted',\n}\n\nexport default function A2ARoute(): JSX.Element {\n const { t } = useTranslation(['tasks', 'common'])\n const invalidate = useInvalidateA2A()\n\n const statsQuery = useA2AStats()\n const recentQuery = useA2ARecent({ limit: 50 })\n const rows = recentQuery.data?.rows ?? []\n const stats = statsQuery.data\n\n const live = useEventStream({\n job: () => invalidate(),\n })\n\n const columns: DataTableColumn<A2ARow>[] = useMemo(\n () => [\n {\n id: 'id',\n header: t('a2a.col.id'),\n cell: (r) => <span className=\"tabular-nums text-text-dim\">#{r.id}</span>,\n headClassName: 'w-16',\n },\n {\n id: 'agent',\n header: t('a2a.col.agent'),\n cell: (r) => <span className=\"font-medium\">{r.agent}</span>,\n headClassName: 'w-32',\n },\n {\n id: 'parent',\n header: t('a2a.col.parent'),\n cell: (r) =>\n r.parent_id != null ? (\n <span className=\"tabular-nums text-text-dim\">#{r.parent_id}</span>\n ) : (\n <span className=\"text-text-muted\">—</span>\n ),\n headClassName: 'w-20',\n },\n {\n id: 'depth',\n header: t('a2a.col.depth'),\n cell: (r) => <span className=\"tabular-nums text-text-dim\">{r.call_depth}</span>,\n headClassName: 'w-16',\n hideOnMobile: true,\n },\n {\n id: 'status',\n header: t('a2a.col.status'),\n cell: (r) => <StatusBadge status={r.status}>{r.status}</StatusBadge>,\n headClassName: 'w-28',\n },\n {\n id: 'prompt',\n header: t('a2a.col.prompt'),\n cell: (r) => (\n <span className=\"line-clamp-2 text-text-dim\">{r.prompt ?? '—'}</span>\n ),\n asCardTitle: true,\n },\n {\n id: 'createdAt',\n header: t('a2a.col.createdAt'),\n cell: (r) => <span className=\"text-text-dim\">{formatTime(r.created_at)}</span>,\n headClassName: 'w-40',\n hideOnMobile: true,\n },\n ],\n [t],\n )\n\n return (\n <div className=\"mx-auto flex max-w-7xl 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\">{t('a2a.title')}</h1>\n <span className={cn('text-xs font-medium tabular-nums', LIVE_STATUS_CLASS[live])}>\n {t(`jobs.live.${live}`)}\n </span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"ml-auto\"\n onClick={() => {\n void recentQuery.refetch()\n void statsQuery.refetch()\n }}\n disabled={recentQuery.isFetching || statsQuery.isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n {recentQuery.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 <p className=\"text-sm text-text-dim\">{t('a2a.subtitle')}</p>\n </header>\n\n {stats && (\n <div className=\"grid grid-cols-3 gap-2\">\n <StatCard label={t('a2a.stats.total')} value={stats.total} tone=\"info\" />\n <StatCard label={t('a2a.stats.recent24h')} value={stats.recent24h} tone=\"success\" />\n <StatCard label={t('a2a.stats.maxDepth')} value={stats.maxDepth} tone=\"warning\" />\n </div>\n )}\n\n <DataTable\n columns={columns}\n rows={rows}\n getRowId={(r) => String(r.id)}\n loading={recentQuery.isLoading}\n emptyState={\n <EmptyState\n icon={<GitBranch />}\n title={t('a2a.empty.title')}\n description={t('a2a.empty.description')}\n />\n }\n />\n </div>\n )\n}\n\ninterface StatCardProps {\n label: string\n value: number\n tone: 'info' | 'success' | 'warning' | 'danger'\n}\n\nconst TONE_STYLES: Record<StatCardProps['tone'], string> = {\n info: 'border-info/30 text-info',\n success: 'border-success/30 text-success',\n warning: 'border-warning/30 text-warning',\n danger: 'border-danger/30 text-danger',\n}\n\nfunction StatCard({ label, value, tone }: StatCardProps): JSX.Element {\n return (\n <div\n className={cn(\n 'rounded-md border bg-surface px-3 py-2',\n TONE_STYLES[tone],\n )}\n >\n <div className=\"text-xs uppercase tracking-wide text-text-dim\">{label}</div>\n <div className=\"text-2xl font-semibold tabular-nums\">{value}</div>\n </div>\n )\n}\n\nfunction formatTime(iso: string): string {\n try {\n const d = new Date(iso)\n if (Number.isNaN(d.getTime())) return iso\n return d.toLocaleString(undefined, { month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit' })\n } catch {\n return iso\n }\n}\n"],"names":["GitBranch","createLucideIcon","LIVE_STATUS_CLASS","A2ARoute","useTranslation","invalidate","useInvalidateA2A","statsQuery","useA2AStats","recentQuery","useA2ARecent","rows","stats","live","useEventStream","columns","useMemo","r","jsxs","jsx","StatusBadge","formatTime","cn","Button","Loader2","RefreshCcw","StatCard","DataTable","EmptyState","TONE_STYLES","label","value","tone","iso","d"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{h as t}from"./index-DCfdN5R7.js";/**
|
|
2
2
|
* @license lucide-react v0.469.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
5
5
|
* See the LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/const c=t("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);export{c as A};
|
|
7
|
-
//# sourceMappingURL=activity-
|
|
7
|
+
//# sourceMappingURL=activity-ul8Os7Pz.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-
|
|
1
|
+
{"version":3,"file":"activity-ul8Os7Pz.js","sources":["../../node_modules/lucide-react/dist/esm/icons/activity.js"],"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 Activity = createLucideIcon(\"Activity\", [\n [\n \"path\",\n {\n d: \"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2\",\n key: \"169zse\"\n }\n ]\n]);\n\nexport { Activity as default };\n//# sourceMappingURL=activity.js.map\n"],"names":["Activity","createLucideIcon"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAWC,EAAiB,WAAY,CAC5C,CACE,OACA,CACE,EAAG,6HACH,IAAK,QACX,CACA,CACA,CAAC","x_google_ignoreList":[0]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{h as u,u as I,j as s,e as h,d as f,p as o,q as y}from"./index-DCfdN5R7.js";import{r as g}from"./react-DlP5eolq.js";import{C as S}from"./confirm-dialog-BDb0NLny.js";import{E as w}from"./empty-state-CuiqdZiB.js";import{T as N,a as v,b as d,c as t,d as b,e as r}from"./table-sCMZBe_Z.js";import{m as R,p as L,q as U}from"./use-settings-DGIjmUX0.js";import{L as k}from"./loader-circle-DDdmcH0k.js";import{R as M}from"./refresh-ccw-DlAd-eTQ.js";import{T as P}from"./trash-2-D2x2UPuZ.js";/**
|
|
2
2
|
* @license lucide-react v0.469.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -13,5 +13,5 @@ import{o as u,u as I,j as s,B as h,l as f,m,n as y}from"./index-DHh1LYlA.js";imp
|
|
|
13
13
|
*
|
|
14
14
|
* This source code is licensed under the ISC license.
|
|
15
15
|
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
-
*/const H=u("Users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]]);function
|
|
17
|
-
//# sourceMappingURL=admins-
|
|
16
|
+
*/const H=u("Users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]]);function q(e){const i=new Date(e);return Number.isNaN(i.getTime())?e:i.toLocaleString()}function J(){const{t:e}=I(["settings","common"]),i=R(),n=i.data,c=L(),j=U(),[x,p]=g.useState(null),A=g.useMemo(()=>new Set((n?.admins??[]).map(a=>`${a.platform}:${a.userId}`)),[n?.admins]);async function C(a){try{await c.mutateAsync({platform:a.platform,userId:a.userId}),o.success(e("admins.toast.added"))}catch(l){o.error(y(l,e).message)}}async function T(){if(x)try{await j.mutateAsync(x),o.success(e("admins.toast.removed"))}catch(a){throw o.error(y(a,e).message),a}}return s.jsxs("div",{className:"mx-auto flex max-w-4xl flex-col gap-4",children:[s.jsxs("header",{className:"flex flex-col gap-1",children:[s.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[s.jsx("h1",{className:"text-xl font-semibold",children:e("admins.title")}),s.jsxs(h,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>i.refetch(),disabled:i.isFetching,"aria-label":e("actions.refresh",{ns:"common"}),children:[i.isFetching?s.jsx(k,{className:"h-4 w-4 animate-spin"}):s.jsx(M,{className:"h-4 w-4"}),s.jsx("span",{className:"hidden sm:inline",children:e("actions.refresh",{ns:"common"})})]})]}),s.jsx("p",{className:"text-sm text-text-dim",children:e("admins.subtitle")})]}),n&&s.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[n.configured?s.jsx(f,{variant:"success",children:e("admins.configured")}):s.jsx(f,{variant:"warning",children:e("admins.notConfigured")}),s.jsx(f,{variant:"info",children:e("admins.known.count",{count:n.knownUsers.length})})]}),i.isLoading?s.jsx("div",{className:"h-32 rounded-md bg-surface-2 animate-pulse"}):n&&n.admins.length===0?s.jsx(w,{icon:s.jsx($,{}),title:e("admins.empty")}):n?s.jsxs(N,{children:[s.jsx(v,{children:s.jsxs(d,{children:[s.jsx(t,{className:"w-40",children:e("admins.col.platform")}),s.jsx(t,{children:e("admins.col.userId")}),s.jsx(t,{className:"w-24"})]})}),s.jsx(b,{children:n.admins.map(a=>s.jsxs(d,{children:[s.jsx(r,{className:"font-mono",children:a.platform}),s.jsx(r,{className:"font-mono text-xs",children:a.userId}),s.jsx(r,{children:s.jsxs(h,{variant:"ghost",size:"sm",onClick:()=>p(a),disabled:j.isPending,"aria-label":e("admins.remove.label"),children:[s.jsx(P,{className:"h-3 w-3"}),s.jsx("span",{className:"sr-only sm:not-sr-only sm:ml-1",children:e("admins.remove.label")})]})})]},`${a.platform}:${a.userId}`))})]}):null,s.jsxs("section",{className:"rounded-md border border-border bg-surface p-4",children:[s.jsxs("div",{className:"mb-3 flex flex-col gap-1",children:[s.jsx("div",{className:"text-sm font-medium",children:e("admins.known.title")}),s.jsx("div",{className:"text-xs text-text-dim",children:e("admins.known.hint")})]}),i.isLoading?s.jsx("div",{className:"h-20 rounded-md bg-surface-2 animate-pulse"}):n&&n.knownUsers.length===0?s.jsx(w,{icon:s.jsx(H,{}),title:e("admins.known.empty"),description:e("admins.known.emptyHint")}):n?s.jsxs(N,{children:[s.jsx(v,{children:s.jsxs(d,{children:[s.jsx(t,{className:"w-40",children:e("admins.col.platform")}),s.jsx(t,{children:e("admins.col.userId")}),s.jsx(t,{className:"w-48",children:e("admins.known.col.lastSeen")}),s.jsx(t,{className:"w-32"})]})}),s.jsx(b,{children:n.knownUsers.map(a=>{const l=`${a.platform}:${a.userId}`,m=A.has(l);return s.jsxs(d,{children:[s.jsx(r,{className:"font-mono",children:a.platform}),s.jsx(r,{className:"font-mono text-xs",children:a.userId}),s.jsx(r,{className:"text-xs text-text-dim",children:q(a.lastSeenAt)}),s.jsx(r,{children:s.jsxs(h,{size:"sm",variant:m?"ghost":"outline",disabled:m||c.isPending,onClick:()=>void C(a),"aria-label":e(m?"admins.known.alreadyAdmin":"admins.known.promote"),children:[c.isPending?s.jsx(k,{className:"h-4 w-4 animate-spin"}):s.jsx(E,{className:"h-4 w-4"}),e(m?"admins.known.alreadyAdmin":"admins.known.promote")]})})]},l)})})]}):null]}),s.jsx(S,{open:x!=null,onOpenChange:a=>{a||p(null)},title:e("admins.remove.confirmTitle"),description:e("admins.remove.confirmDescription"),intent:"danger",confirmLabel:e("admins.remove.label"),onConfirm:T})]})}export{J as default};
|
|
17
|
+
//# sourceMappingURL=admins-ByMAuquy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-CZYANmhn.js","sources":["../../node_modules/lucide-react/dist/esm/icons/shield.js","../../node_modules/lucide-react/dist/esm/icons/user-plus.js","../../node_modules/lucide-react/dist/esm/icons/users.js","../../src/routes/settings/admins.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 Shield = createLucideIcon(\"Shield\", [\n [\n \"path\",\n {\n d: \"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\",\n key: \"oel41y\"\n }\n ]\n]);\n\nexport { Shield as default };\n//# sourceMappingURL=shield.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 UserPlus = createLucideIcon(\"UserPlus\", [\n [\"path\", { d: \"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\", key: \"1yyitq\" }],\n [\"circle\", { cx: \"9\", cy: \"7\", r: \"4\", key: \"nufk8\" }],\n [\"line\", { x1: \"19\", x2: \"19\", y1: \"8\", y2: \"14\", key: \"1bvyxn\" }],\n [\"line\", { x1: \"22\", x2: \"16\", y1: \"11\", y2: \"11\", key: \"1shjgl\" }]\n]);\n\nexport { UserPlus as default };\n//# sourceMappingURL=user-plus.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 Users = createLucideIcon(\"Users\", [\n [\"path\", { d: \"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\", key: \"1yyitq\" }],\n [\"circle\", { cx: \"9\", cy: \"7\", r: \"4\", key: \"nufk8\" }],\n [\"path\", { d: \"M22 21v-2a4 4 0 0 0-3-3.87\", key: \"kshegd\" }],\n [\"path\", { d: \"M16 3.13a4 4 0 0 1 0 7.75\", key: \"1da9ce\" }]\n]);\n\nexport { Users as default };\n//# sourceMappingURL=users.js.map\n","/**\n * /settings/admins — manage IM administrators via known IM users.\n *\n * Candidate users are auto-discovered from real inbound IM messages.\n * Operators grant admin from the discovered list (no manual userId typing).\n */\n\nimport { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { toast } from 'sonner'\nimport { Loader2, RefreshCcw, Shield, Trash2, UserPlus, Users } from 'lucide-react'\n\nimport { ConfirmDialog } from '@/components/common/confirm-dialog'\nimport { EmptyState } from '@/components/common/empty-state'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/ui/table'\nimport {\n useAddAdmin,\n useAdminAllowlist,\n useRemoveAdmin,\n} from '@/hooks/use-settings'\nimport { describeError } from '@/lib/api/errors'\nimport type { AdminEntry, KnownImUser } from '@/types/api'\n\nfunction formatSeenAt(value: string): string {\n const dt = new Date(value)\n if (Number.isNaN(dt.getTime())) return value\n return dt.toLocaleString()\n}\n\nexport default function SettingsAdminsRoute(): JSX.Element {\n const { t } = useTranslation(['settings', 'common'])\n const listQuery = useAdminAllowlist()\n const data = listQuery.data\n\n const addAdmin = useAddAdmin()\n const removeAdmin = useRemoveAdmin()\n\n const [removeTarget, setRemoveTarget] = useState<AdminEntry | null>(null)\n const adminKeys = useMemo(\n () => new Set((data?.admins ?? []).map((row) => `${row.platform}:${row.userId}`)),\n [data?.admins],\n )\n\n async function onPromote(user: KnownImUser): Promise<void> {\n try {\n await addAdmin.mutateAsync({ platform: user.platform, userId: user.userId })\n toast.success(t('admins.toast.added'))\n } catch (err) {\n toast.error(describeError(err, t).message)\n }\n }\n\n async function onConfirmRemove(): Promise<void> {\n if (!removeTarget) return\n try {\n await removeAdmin.mutateAsync(removeTarget)\n toast.success(t('admins.toast.removed'))\n } catch (err) {\n toast.error(describeError(err, t).message)\n throw err\n }\n }\n\n return (\n <div className=\"mx-auto flex max-w-4xl 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\">{t('admins.title')}</h1>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"ml-auto\"\n onClick={() => listQuery.refetch()}\n disabled={listQuery.isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n {listQuery.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 <p className=\"text-sm text-text-dim\">{t('admins.subtitle')}</p>\n </header>\n\n {data && (\n <div className=\"flex flex-wrap items-center gap-2\">\n {data.configured ? (\n <Badge variant=\"success\">{t('admins.configured')}</Badge>\n ) : (\n <Badge variant=\"warning\">{t('admins.notConfigured')}</Badge>\n )}\n <Badge variant=\"info\">{t('admins.known.count', { count: data.knownUsers.length })}</Badge>\n </div>\n )}\n\n {listQuery.isLoading ? (\n <div className=\"h-32 rounded-md bg-surface-2 animate-pulse\" />\n ) : data && data.admins.length === 0 ? (\n <EmptyState icon={<Shield />} title={t('admins.empty')} />\n ) : data ? (\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead className=\"w-40\">{t('admins.col.platform')}</TableHead>\n <TableHead>{t('admins.col.userId')}</TableHead>\n <TableHead className=\"w-24\" />\n </TableRow>\n </TableHeader>\n <TableBody>\n {data.admins.map((a) => (\n <TableRow key={`${a.platform}:${a.userId}`}>\n <TableCell className=\"font-mono\">{a.platform}</TableCell>\n <TableCell className=\"font-mono text-xs\">{a.userId}</TableCell>\n <TableCell>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setRemoveTarget(a)}\n disabled={removeAdmin.isPending}\n aria-label={t('admins.remove.label')}\n >\n <Trash2 className=\"h-3 w-3\" />\n <span className=\"sr-only sm:not-sr-only sm:ml-1\">{t('admins.remove.label')}</span>\n </Button>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n ) : null}\n\n <section className=\"rounded-md border border-border bg-surface p-4\">\n <div className=\"mb-3 flex flex-col gap-1\">\n <div className=\"text-sm font-medium\">{t('admins.known.title')}</div>\n <div className=\"text-xs text-text-dim\">{t('admins.known.hint')}</div>\n </div>\n {listQuery.isLoading ? (\n <div className=\"h-20 rounded-md bg-surface-2 animate-pulse\" />\n ) : data && data.knownUsers.length === 0 ? (\n <EmptyState\n icon={<Users />}\n title={t('admins.known.empty')}\n description={t('admins.known.emptyHint')}\n />\n ) : data ? (\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead className=\"w-40\">{t('admins.col.platform')}</TableHead>\n <TableHead>{t('admins.col.userId')}</TableHead>\n <TableHead className=\"w-48\">{t('admins.known.col.lastSeen')}</TableHead>\n <TableHead className=\"w-32\" />\n </TableRow>\n </TableHeader>\n <TableBody>\n {data.knownUsers.map((u) => {\n const key = `${u.platform}:${u.userId}`\n const alreadyAdmin = adminKeys.has(key)\n return (\n <TableRow key={key}>\n <TableCell className=\"font-mono\">{u.platform}</TableCell>\n <TableCell className=\"font-mono text-xs\">{u.userId}</TableCell>\n <TableCell className=\"text-xs text-text-dim\">{formatSeenAt(u.lastSeenAt)}</TableCell>\n <TableCell>\n <Button\n size=\"sm\"\n variant={alreadyAdmin ? 'ghost' : 'outline'}\n disabled={alreadyAdmin || addAdmin.isPending}\n onClick={() => void onPromote(u)}\n aria-label={alreadyAdmin ? t('admins.known.alreadyAdmin') : t('admins.known.promote')}\n >\n {addAdmin.isPending ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : <UserPlus className=\"h-4 w-4\" />}\n {alreadyAdmin ? t('admins.known.alreadyAdmin') : t('admins.known.promote')}\n </Button>\n </TableCell>\n </TableRow>\n )\n })}\n </TableBody>\n </Table>\n ) : null}\n </section>\n\n <ConfirmDialog\n open={removeTarget != null}\n onOpenChange={(open) => { if (!open) setRemoveTarget(null) }}\n title={t('admins.remove.confirmTitle')}\n description={t('admins.remove.confirmDescription')}\n intent=\"danger\"\n confirmLabel={t('admins.remove.label')}\n onConfirm={onConfirmRemove}\n />\n </div>\n )\n}\n"],"names":["Shield","createLucideIcon","UserPlus","Users","formatSeenAt","value","dt","SettingsAdminsRoute","t","useTranslation","listQuery","useAdminAllowlist","data","addAdmin","useAddAdmin","removeAdmin","useRemoveAdmin","removeTarget","setRemoveTarget","useState","adminKeys","useMemo","row","onPromote","user","toast","err","describeError","onConfirmRemove","jsxs","jsx","Button","Loader2","RefreshCcw","Badge","EmptyState","Table","TableHeader","TableRow","TableHead","TableBody","a","TableCell","Trash2","u","key","alreadyAdmin","ConfirmDialog","open"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|
|
1
|
+
{"version":3,"file":"admins-ByMAuquy.js","sources":["../../node_modules/lucide-react/dist/esm/icons/shield.js","../../node_modules/lucide-react/dist/esm/icons/user-plus.js","../../node_modules/lucide-react/dist/esm/icons/users.js","../../src/routes/settings/admins.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 Shield = createLucideIcon(\"Shield\", [\n [\n \"path\",\n {\n d: \"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\",\n key: \"oel41y\"\n }\n ]\n]);\n\nexport { Shield as default };\n//# sourceMappingURL=shield.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 UserPlus = createLucideIcon(\"UserPlus\", [\n [\"path\", { d: \"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\", key: \"1yyitq\" }],\n [\"circle\", { cx: \"9\", cy: \"7\", r: \"4\", key: \"nufk8\" }],\n [\"line\", { x1: \"19\", x2: \"19\", y1: \"8\", y2: \"14\", key: \"1bvyxn\" }],\n [\"line\", { x1: \"22\", x2: \"16\", y1: \"11\", y2: \"11\", key: \"1shjgl\" }]\n]);\n\nexport { UserPlus as default };\n//# sourceMappingURL=user-plus.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 Users = createLucideIcon(\"Users\", [\n [\"path\", { d: \"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\", key: \"1yyitq\" }],\n [\"circle\", { cx: \"9\", cy: \"7\", r: \"4\", key: \"nufk8\" }],\n [\"path\", { d: \"M22 21v-2a4 4 0 0 0-3-3.87\", key: \"kshegd\" }],\n [\"path\", { d: \"M16 3.13a4 4 0 0 1 0 7.75\", key: \"1da9ce\" }]\n]);\n\nexport { Users as default };\n//# sourceMappingURL=users.js.map\n","/**\n * /settings/admins — manage IM administrators via known IM users.\n *\n * Candidate users are auto-discovered from real inbound IM messages.\n * Operators grant admin from the discovered list (no manual userId typing).\n */\n\nimport { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { toast } from 'sonner'\nimport { Loader2, RefreshCcw, Shield, Trash2, UserPlus, Users } from 'lucide-react'\n\nimport { ConfirmDialog } from '@/components/common/confirm-dialog'\nimport { EmptyState } from '@/components/common/empty-state'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/ui/table'\nimport {\n useAddAdmin,\n useAdminAllowlist,\n useRemoveAdmin,\n} from '@/hooks/use-settings'\nimport { describeError } from '@/lib/api/errors'\nimport type { AdminEntry, KnownImUser } from '@/types/api'\n\nfunction formatSeenAt(value: string): string {\n const dt = new Date(value)\n if (Number.isNaN(dt.getTime())) return value\n return dt.toLocaleString()\n}\n\nexport default function SettingsAdminsRoute(): JSX.Element {\n const { t } = useTranslation(['settings', 'common'])\n const listQuery = useAdminAllowlist()\n const data = listQuery.data\n\n const addAdmin = useAddAdmin()\n const removeAdmin = useRemoveAdmin()\n\n const [removeTarget, setRemoveTarget] = useState<AdminEntry | null>(null)\n const adminKeys = useMemo(\n () => new Set((data?.admins ?? []).map((row) => `${row.platform}:${row.userId}`)),\n [data?.admins],\n )\n\n async function onPromote(user: KnownImUser): Promise<void> {\n try {\n await addAdmin.mutateAsync({ platform: user.platform, userId: user.userId })\n toast.success(t('admins.toast.added'))\n } catch (err) {\n toast.error(describeError(err, t).message)\n }\n }\n\n async function onConfirmRemove(): Promise<void> {\n if (!removeTarget) return\n try {\n await removeAdmin.mutateAsync(removeTarget)\n toast.success(t('admins.toast.removed'))\n } catch (err) {\n toast.error(describeError(err, t).message)\n throw err\n }\n }\n\n return (\n <div className=\"mx-auto flex max-w-4xl 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\">{t('admins.title')}</h1>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"ml-auto\"\n onClick={() => listQuery.refetch()}\n disabled={listQuery.isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n {listQuery.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 <p className=\"text-sm text-text-dim\">{t('admins.subtitle')}</p>\n </header>\n\n {data && (\n <div className=\"flex flex-wrap items-center gap-2\">\n {data.configured ? (\n <Badge variant=\"success\">{t('admins.configured')}</Badge>\n ) : (\n <Badge variant=\"warning\">{t('admins.notConfigured')}</Badge>\n )}\n <Badge variant=\"info\">{t('admins.known.count', { count: data.knownUsers.length })}</Badge>\n </div>\n )}\n\n {listQuery.isLoading ? (\n <div className=\"h-32 rounded-md bg-surface-2 animate-pulse\" />\n ) : data && data.admins.length === 0 ? (\n <EmptyState icon={<Shield />} title={t('admins.empty')} />\n ) : data ? (\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead className=\"w-40\">{t('admins.col.platform')}</TableHead>\n <TableHead>{t('admins.col.userId')}</TableHead>\n <TableHead className=\"w-24\" />\n </TableRow>\n </TableHeader>\n <TableBody>\n {data.admins.map((a) => (\n <TableRow key={`${a.platform}:${a.userId}`}>\n <TableCell className=\"font-mono\">{a.platform}</TableCell>\n <TableCell className=\"font-mono text-xs\">{a.userId}</TableCell>\n <TableCell>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setRemoveTarget(a)}\n disabled={removeAdmin.isPending}\n aria-label={t('admins.remove.label')}\n >\n <Trash2 className=\"h-3 w-3\" />\n <span className=\"sr-only sm:not-sr-only sm:ml-1\">{t('admins.remove.label')}</span>\n </Button>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n ) : null}\n\n <section className=\"rounded-md border border-border bg-surface p-4\">\n <div className=\"mb-3 flex flex-col gap-1\">\n <div className=\"text-sm font-medium\">{t('admins.known.title')}</div>\n <div className=\"text-xs text-text-dim\">{t('admins.known.hint')}</div>\n </div>\n {listQuery.isLoading ? (\n <div className=\"h-20 rounded-md bg-surface-2 animate-pulse\" />\n ) : data && data.knownUsers.length === 0 ? (\n <EmptyState\n icon={<Users />}\n title={t('admins.known.empty')}\n description={t('admins.known.emptyHint')}\n />\n ) : data ? (\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead className=\"w-40\">{t('admins.col.platform')}</TableHead>\n <TableHead>{t('admins.col.userId')}</TableHead>\n <TableHead className=\"w-48\">{t('admins.known.col.lastSeen')}</TableHead>\n <TableHead className=\"w-32\" />\n </TableRow>\n </TableHeader>\n <TableBody>\n {data.knownUsers.map((u) => {\n const key = `${u.platform}:${u.userId}`\n const alreadyAdmin = adminKeys.has(key)\n return (\n <TableRow key={key}>\n <TableCell className=\"font-mono\">{u.platform}</TableCell>\n <TableCell className=\"font-mono text-xs\">{u.userId}</TableCell>\n <TableCell className=\"text-xs text-text-dim\">{formatSeenAt(u.lastSeenAt)}</TableCell>\n <TableCell>\n <Button\n size=\"sm\"\n variant={alreadyAdmin ? 'ghost' : 'outline'}\n disabled={alreadyAdmin || addAdmin.isPending}\n onClick={() => void onPromote(u)}\n aria-label={alreadyAdmin ? t('admins.known.alreadyAdmin') : t('admins.known.promote')}\n >\n {addAdmin.isPending ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : <UserPlus className=\"h-4 w-4\" />}\n {alreadyAdmin ? t('admins.known.alreadyAdmin') : t('admins.known.promote')}\n </Button>\n </TableCell>\n </TableRow>\n )\n })}\n </TableBody>\n </Table>\n ) : null}\n </section>\n\n <ConfirmDialog\n open={removeTarget != null}\n onOpenChange={(open) => { if (!open) setRemoveTarget(null) }}\n title={t('admins.remove.confirmTitle')}\n description={t('admins.remove.confirmDescription')}\n intent=\"danger\"\n confirmLabel={t('admins.remove.label')}\n onConfirm={onConfirmRemove}\n />\n </div>\n )\n}\n"],"names":["Shield","createLucideIcon","UserPlus","Users","formatSeenAt","value","dt","SettingsAdminsRoute","t","useTranslation","listQuery","useAdminAllowlist","data","addAdmin","useAddAdmin","removeAdmin","useRemoveAdmin","removeTarget","setRemoveTarget","useState","adminKeys","useMemo","row","onPromote","user","toast","err","describeError","onConfirmRemove","jsxs","jsx","Button","Loader2","RefreshCcw","Badge","EmptyState","Table","TableHeader","TableRow","TableHead","TableBody","TableCell","Trash2","u","key","alreadyAdmin","ConfirmDialog","open"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{u as O,j as e,e as v,b as V,w as q,k as Z,l as X,m as Y,n as J,o as $,d as R,X as re,p as f,q as I,B as oe,f as K,I as P}from"./index-DCfdN5R7.js";import{r as g}from"./react-DlP5eolq.js";import{E as de}from"./empty-state-CuiqdZiB.js";import{u as me}from"./use-workspace-CuytyHwb.js";import{u as xe,d as ue,k as pe,l as ge}from"./use-settings-DGIjmUX0.js";import{L as B}from"./loader-circle-DDdmcH0k.js";import{R as he}from"./refresh-ccw-DlAd-eTQ.js";import{S as fe}from"./save-BDOtZrfp.js";import{N as Q}from"./network-BUeWK3bs.js";import{S as M}from"./search-CAICU3aU.js";import{P as je}from"./plus-DH4J_YhN.js";import{T as be}from"./trash-2-D2x2UPuZ.js";const U={"claude-code":{aliases:["cc","claude"],pkg:"@anthropic-ai/claude-code",kind:"cli",scope:"bridged"},codex:{aliases:["cx"],pkg:"@openai/codex",kind:"cli",scope:"bridged"},opencode:{aliases:["oc"],pkg:"opencode-ai",kind:"cli",scope:"bridged"},cursor:{aliases:["cs","cur"],pkg:"cursor-agent (curl https://cursor.com/install)",kind:"cli",scope:"bridged"},native:{aliases:["agim","na","llm","native-llm"],pkg:"in-process",kind:"in-process",scope:"agim"}},W=Object.keys(U),Ne=W.filter(s=>U[s]?.scope==="bridged");function Ue(){const{t:s}=O(["settings","common"]),r=xe(),t=me(),c=ue(),n=r.data,d=t.data??{},[p,o]=g.useState(null),[m,x]=g.useState(null),[S,j]=g.useState(null);g.useEffect(()=>{n&&p==null&&o(n.agents??[]),n&&m==null&&x(n.defaultAgent??""),n&&S==null&&j(n.acpAgents??[])},[n,p,m,S]);const h=p??n?.agents??[],b=m??n?.defaultAgent??"",y=S??n?.acpAgents??[],L=g.useMemo(()=>{if(!n)return!1;const i=h.length===(n.agents?.length??0)&&h.every(k=>n.agents?.includes(k)),N=b===(n.defaultAgent??""),w=ye(y,n.acpAgents??[]);return!i||!N||!w},[n,h,b,y]),C=g.useMemo(()=>W.filter(i=>(U[i].kind==="in-process"?!0:h.includes(i))&&d[i]),[h,d]);function _(i,N){const w=N?Array.from(new Set([...h,i])):h.filter(k=>k!==i);o(w),!N&&i===b&&x("")}async function z(){if(n)try{await c.mutateAsync({...n,agents:h,defaultAgent:b||n.defaultAgent,acpAgents:y}),f.success(s("agents.toast.saved")),o(null),x(null),j(null)}catch(i){f.error(I(i,s).message)}}function T(){o(null),x(null),j(null)}function H(i){j(i)}return e.jsxs("div",{className:"mx-auto flex max-w-4xl flex-col gap-4",children:[e.jsxs("header",{className:"flex flex-col gap-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsx("h1",{className:"text-xl font-semibold",children:s("agents.title")}),e.jsxs(v,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>{r.refetch(),t.refetch()},disabled:r.isFetching||t.isFetching,"aria-label":s("actions.refresh",{ns:"common"}),children:[r.isFetching||t.isFetching?e.jsx(B,{className:"h-4 w-4 animate-spin"}):e.jsx(he,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("actions.refresh",{ns:"common"})})]})]}),e.jsx("p",{className:"text-sm text-text-dim",children:s("agents.subtitle")})]}),r.isLoading?e.jsx("div",{className:"h-64 rounded-md bg-surface-2 animate-pulse"}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"flex flex-col divide-y divide-border rounded-md border border-border bg-surface",children:Ne.map(i=>{const N=U[i],w=!!d[i],k=h.includes(i);return e.jsx(ve,{displayName:V(i),aliases:N.aliases,pkg:N.pkg,kind:N.kind,installed:w,enabled:k,onToggle:F=>_(i,F)},i)})}),e.jsxs("section",{className:"rounded-md border border-border bg-surface p-4",children:[e.jsx("h3",{className:"text-sm font-semibold",children:s("agents.agimAgentCardTitle")}),e.jsx("p",{className:"mt-1 text-xs text-text-dim",children:s("agents.agimAgentCardDesc")}),e.jsx(v,{className:"mt-3",variant:"secondary",size:"sm",onClick:()=>{window.location.assign("/settings/llm")},children:s("agents.agimAgentCardAction")})]}),e.jsxs("section",{className:"rounded-md border border-border bg-surface p-4",children:[e.jsx(q,{htmlFor:"default-agent",className:"text-sm font-medium",children:s("agents.defaultAgent")}),e.jsx("p",{className:"mt-1 text-xs text-text-dim",children:s("agents.defaultAgentHint")}),e.jsxs(Z,{value:b||"__none__",onValueChange:i=>x(i==="__none__"?"":i),disabled:C.length===0,children:[e.jsx(X,{id:"default-agent",className:"mt-2 w-64",children:e.jsx(Y,{placeholder:s("agents.noEligible")})}),e.jsx(J,{children:C.length===0?e.jsx($,{value:"__none__",disabled:!0,children:s("agents.noEligible")}):C.map(i=>e.jsx($,{value:i,children:V(i)},i))})]})]}),n?.features?.remoteAgent?e.jsx(Ae,{agents:y,onChange:H}):null,L&&e.jsxs("div",{className:"sticky bottom-0 flex items-center gap-2 rounded-md border border-border bg-surface px-4 py-2 shadow-md",children:[e.jsx(R,{variant:"info",children:s("agents.dirtyHint")}),e.jsxs(v,{variant:"secondary",size:"sm",onClick:T,disabled:c.isPending,children:[e.jsx(re,{className:"h-4 w-4"}),s("agents.discard")]}),e.jsxs(v,{size:"sm",onClick:()=>void z(),disabled:c.isPending,children:[c.isPending?e.jsx(B,{className:"h-4 w-4 animate-spin"}):e.jsx(fe,{className:"h-4 w-4"}),c.isPending?s("agents.saving"):s("agents.saveBtn")]})]})]})]})}function ve({displayName:s,aliases:r,pkg:t,kind:c,installed:n,enabled:d,onToggle:p}){const{t:o}=O("settings"),m=c==="in-process";return e.jsxs("div",{className:"flex items-start gap-3 px-3 py-3",children:[e.jsx("div",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-surface-2 text-text-dim",children:e.jsx(oe,{className:"h-4 w-4"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"font-medium text-text",children:s}),e.jsxs(R,{variant:n?"success":"outline",className:"text-[10px]",children:[e.jsx("span",{className:K("inline-block h-1.5 w-1.5 rounded-full",n?"bg-success":"bg-text-muted")}),o(n?"agents.online":"agents.offline")]}),m&&e.jsx(R,{variant:"outline",className:"text-[10px]",title:o("agents.inProcessHint"),children:o("agents.inProcessBadge")})]}),e.jsxs("p",{className:"mt-0.5 text-xs text-text-dim",children:[e.jsxs("span",{className:"text-text-muted",children:[o("agents.aliasesLabel"),": "]}),e.jsx("span",{className:"font-mono",children:r.map(x=>`/${x}`).join(", ")})]}),!n&&e.jsx("p",{className:"mt-1 text-xs text-warning",children:m?o("agents.nativeInstallHint"):o("agents.installHint",{pkg:t})})]}),e.jsx("input",{type:"checkbox",checked:d,onChange:x=>p(x.target.checked),className:"h-4 w-4 mt-2 accent-accent cursor-pointer"})]})}const we=["none","apikey","bearer"],ke=/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/;function ye(s,r){if(s.length!==r.length)return!1;for(let t=0;t<s.length;t++){const c=s[t],n=r[t];if(c.name!==n.name||c.endpoint!==n.endpoint||(c.enabled??!0)!==(n.enabled??!0))return!1;const d=(c.aliases??[]).join(","),p=(n.aliases??[]).join(",");if(d!==p)return!1;const o=c.auth?.type??"none",m=n.auth?.type??"none";if(o!==m||(c.auth?.token??"")!==(n.auth?.token??""))return!1}return!0}function Ae({agents:s,onChange:r}){const{t}=O(["settings","common"]),c=pe(),n=ge(),[d,p]=g.useState(""),[o,m]=g.useState(""),[x,S]=g.useState(""),[j,h]=g.useState("none"),[b,y]=g.useState(""),[L,C]=g.useState(!1),[_,z]=g.useState(""),T=d.trim(),H=T.length>0&&ke.test(T),i=s.some(a=>a.name===T),w=!(j!=="none")||b.trim().length>0,k=H&&x.trim().length>0&&w&&!i,F=x.trim().length>0&&w;function ee(){p(""),m(""),S(""),h("none"),y("")}function se(a){return a.split(",").map(l=>l.trim()).filter(Boolean)}function G(a,l){if(a==="none")return{type:"none"};const u=l.trim();return u?{type:a,token:u}:{type:a}}async function te(){if(!k)return;const a={name:T,endpoint:x.trim(),aliases:se(o),auth:G(j,b),enabled:!0};r([...s,a]),ee(),f.success(t("agents.acp.toast.staged"))}async function ae(){if(F)try{const a=await c.mutateAsync({endpoint:x.trim(),auth:G(j,b)});f.success(t("agents.acp.toast.testOk",{name:a.name}))}catch(a){f.error(I(a,t).message)}}async function ne(a){const l=s[a];if(l){if(l.auth?.type!=="none"&&l.auth?.token&&Ce(l.auth.token)){f.error(t("agents.acp.toast.testMasked"));return}try{const u=await c.mutateAsync({endpoint:l.endpoint,auth:l.auth});f.success(t("agents.acp.toast.testOk",{name:u.name}))}catch(u){f.error(I(u,t).message)}}}function ie(a,l){const u=s.map((E,A)=>A===a?{...E,enabled:l}:E);r(u)}function ce(a){r(s.filter((l,u)=>u!==a))}async function le(){const a=_.trim();if(a)try{const l=await n.mutateAsync({baseUrl:a,register:!1}),u=new Set(s.map(A=>A.name)),E=l.agents.filter(A=>!u.has(A.name));if(E.length===0){f.info(t("agents.acp.toast.discoverEmpty"));return}r([...s,...E.map(A=>({...A,enabled:!0}))]),f.success(t("agents.acp.toast.discoverAdded",{count:E.length})),z(""),C(!1)}catch(l){f.error(I(l,t).message)}}return e.jsxs("section",{className:"rounded-md border border-border bg-surface",children:[e.jsxs("header",{className:"flex items-center gap-2 border-b border-border px-4 py-3",children:[e.jsx(Q,{className:"h-4 w-4 text-text-dim"}),e.jsx("h2",{className:"text-sm font-semibold",children:t("agents.acp.title")}),e.jsx(R,{variant:"outline",className:"text-[10px]",children:s.length}),e.jsxs(v,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>C(a=>!a),children:[e.jsx(M,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:t("agents.acp.discoverBtn")})]})]}),e.jsx("p",{className:"px-4 pt-2 text-xs text-text-dim",children:t("agents.acp.subtitle")}),L&&e.jsxs("div",{className:"border-t border-border bg-surface-2 px-4 py-3",children:[e.jsx(q,{htmlFor:"acp-baseurl",className:"text-xs font-medium",children:t("agents.acp.baseUrl")}),e.jsx("p",{className:"mt-1 text-[11px] text-text-dim",children:t("agents.acp.baseUrlHint")}),e.jsxs("div",{className:"mt-2 flex flex-wrap gap-2",children:[e.jsx(P,{id:"acp-baseurl",value:_,onChange:a=>z(a.target.value),placeholder:"https://agents.example.com",className:"flex-1 min-w-[200px] font-mono text-xs"}),e.jsxs(v,{variant:"secondary",size:"sm",onClick:()=>void le(),disabled:!_.trim()||n.isPending,children:[n.isPending?e.jsx(B,{className:"h-4 w-4 animate-spin"}):e.jsx(M,{className:"h-4 w-4"}),t("agents.acp.runDiscover")]})]})]}),s.length===0?e.jsx("div",{className:"px-4 py-6",children:e.jsx(de,{icon:e.jsx(Q,{}),title:t("agents.acp.empty.title"),description:t("agents.acp.empty.description")})}):e.jsx("ul",{className:"divide-y divide-border",children:s.map((a,l)=>e.jsx(Se,{agent:a,onToggle:u=>ie(l,u),onTest:()=>void ne(l),onRemove:()=>ce(l),testing:c.isPending},a.name))}),e.jsxs("div",{className:"border-t border-border px-4 py-3",children:[e.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wide text-text-dim",children:t("agents.acp.addTitle")}),e.jsxs("div",{className:"mt-2 grid grid-cols-1 gap-2 sm:grid-cols-2",children:[e.jsx(D,{label:t("agents.acp.name"),hint:t("agents.acp.nameHint"),children:e.jsx(P,{value:d,onChange:a=>p(a.target.value),placeholder:"my-agent","aria-invalid":d.length>0&&!H})}),e.jsx(D,{label:t("agents.acp.aliases"),hint:t("agents.acp.aliasesHint"),children:e.jsx(P,{value:o,onChange:a=>m(a.target.value),placeholder:"ma, agent1"})}),e.jsx(D,{label:t("agents.acp.endpoint"),hint:t("agents.acp.endpointHint"),children:e.jsx(P,{value:x,onChange:a=>S(a.target.value),placeholder:"https://example.com/agents/weather",className:"font-mono text-xs"})}),e.jsx(D,{label:t("agents.acp.authType"),children:e.jsxs(Z,{value:j,onValueChange:a=>h(a),children:[e.jsx(X,{children:e.jsx(Y,{})}),e.jsx(J,{children:we.map(a=>e.jsx($,{value:a,children:t(`agents.acp.auth.${a}`)},a))})]})}),j!=="none"&&e.jsx(D,{label:t("agents.acp.token"),className:"sm:col-span-2",children:e.jsx(P,{type:"password",value:b,onChange:a=>y(a.target.value),placeholder:t("agents.acp.tokenPlaceholder"),autoComplete:"new-password"})})]}),e.jsxs("div",{className:"mt-3 flex flex-wrap gap-2",children:[e.jsxs(v,{variant:"secondary",size:"sm",onClick:()=>void ae(),disabled:!F||c.isPending,children:[c.isPending?e.jsx(B,{className:"h-4 w-4 animate-spin"}):e.jsx(M,{className:"h-4 w-4"}),t("agents.acp.testBtn")]}),e.jsxs(v,{size:"sm",onClick:()=>void te(),disabled:!k,children:[e.jsx(je,{className:"h-4 w-4"}),t("agents.acp.addBtn")]}),i&&e.jsx("span",{className:"self-center text-xs text-warning",children:t("agents.acp.dupName")})]})]})]})}function Se({agent:s,onToggle:r,onTest:t,onRemove:c,testing:n}){const{t:d}=O("settings"),p=s.enabled!==!1,o=s.auth?.type??"none";return e.jsxs("li",{className:"flex flex-wrap items-center gap-3 px-4 py-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"font-medium text-text",children:s.name}),e.jsx(R,{variant:"outline",className:"text-[10px] uppercase",children:d(`agents.acp.auth.${o}`)}),s.aliases&&s.aliases.length>0&&e.jsx("span",{className:"text-xs text-text-muted font-mono",children:s.aliases.map(m=>`/${m}`).join(", ")})]}),e.jsx("p",{className:"mt-0.5 truncate font-mono text-xs text-text-dim",title:s.endpoint,children:s.endpoint})]}),e.jsxs("label",{className:"flex items-center gap-1.5 text-xs text-text-dim",children:[e.jsx("input",{type:"checkbox",checked:p,onChange:m=>r(m.target.checked),className:"h-4 w-4 accent-accent cursor-pointer"}),d(p?"agents.acp.on":"agents.acp.off")]}),e.jsx(v,{variant:"ghost",size:"sm",onClick:t,disabled:n,"aria-label":d("agents.acp.testBtn"),children:n?e.jsx(B,{className:"h-4 w-4 animate-spin"}):e.jsx(M,{className:"h-4 w-4"})}),e.jsx(v,{variant:"ghost",size:"sm",onClick:c,"aria-label":d("agents.acp.removeBtn"),className:"text-danger hover:text-danger",children:e.jsx(be,{className:"h-4 w-4"})})]})}function D({label:s,hint:r,className:t,children:c}){return e.jsxs("div",{className:K("flex flex-col gap-1",t),children:[e.jsx(q,{className:"text-xs font-medium",children:s}),c,r&&e.jsx("p",{className:"text-[11px] text-text-dim",children:r})]})}function Ce(s){return/\*{3,}/.test(s)}export{Ue as default};
|
|
2
|
+
//# sourceMappingURL=agents-Ds1zyxBj.js.map
|