agim-cli 1.2.158 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/README.md +9 -8
- package/README.zh-CN.md +9 -8
- package/dist/cli-ui/cmd-handlers.d.ts.map +1 -1
- package/dist/cli-ui/cmd-handlers.js +1 -0
- package/dist/cli-ui/cmd-handlers.js.map +1 -1
- package/dist/cli-ui/entry-menu.d.ts +0 -2
- package/dist/cli-ui/entry-menu.d.ts.map +1 -1
- package/dist/cli-ui/entry-menu.js +0 -1
- package/dist/cli-ui/entry-menu.js.map +1 -1
- package/dist/cli-ui/i18n.d.ts +3 -8
- package/dist/cli-ui/i18n.d.ts.map +1 -1
- package/dist/cli-ui/i18n.js +6 -16
- package/dist/cli-ui/i18n.js.map +1 -1
- package/dist/cli.js +39 -70
- package/dist/cli.js.map +1 -1
- package/dist/core/acp-server.d.ts.map +1 -1
- package/dist/core/acp-server.js +23 -44
- package/dist/core/acp-server.js.map +1 -1
- package/dist/core/admin-allowlist.d.ts +26 -15
- package/dist/core/admin-allowlist.d.ts.map +1 -1
- package/dist/core/admin-allowlist.js +213 -179
- package/dist/core/admin-allowlist.js.map +1 -1
- package/dist/core/approval-router.d.ts.map +1 -1
- package/dist/core/approval-router.js +23 -0
- package/dist/core/approval-router.js.map +1 -1
- package/dist/core/ask-user-rpc.d.ts.map +1 -1
- package/dist/core/ask-user-rpc.js +2 -3
- package/dist/core/ask-user-rpc.js.map +1 -1
- package/dist/core/commands/builtin.js +2 -2
- package/dist/core/commands/builtin.js.map +1 -1
- package/dist/core/commands/outbox.d.ts +1 -1
- package/dist/core/commands/outbox.d.ts.map +1 -1
- package/dist/core/commands/outbox.js +5 -1
- package/dist/core/commands/outbox.js.map +1 -1
- package/dist/core/commands/service.js +2 -2
- package/dist/core/commands/service.js.map +1 -1
- package/dist/core/commands/setup.d.ts.map +1 -1
- package/dist/core/commands/setup.js +11 -60
- package/dist/core/commands/setup.js.map +1 -1
- package/dist/core/llm/index.d.ts +1 -1
- package/dist/core/llm/index.d.ts.map +1 -1
- package/dist/core/llm/index.js +1 -1
- package/dist/core/llm/index.js.map +1 -1
- package/dist/core/llm/model-catalog.d.ts +18 -0
- package/dist/core/llm/model-catalog.d.ts.map +1 -0
- package/dist/core/llm/model-catalog.js +67 -0
- package/dist/core/llm/model-catalog.js.map +1 -0
- package/dist/core/llm/provider-base.d.ts +4 -0
- package/dist/core/llm/provider-base.d.ts.map +1 -1
- package/dist/core/llm/provider-base.js +18 -3
- package/dist/core/llm/provider-base.js.map +1 -1
- package/dist/core/llm/registry.d.ts +6 -0
- package/dist/core/llm/registry.d.ts.map +1 -1
- package/dist/core/llm/registry.js +12 -0
- package/dist/core/llm/registry.js.map +1 -1
- package/dist/core/llm/secrets.js +2 -2
- package/dist/core/llm/secrets.js.map +1 -1
- package/dist/core/onboarding.js +1 -1
- package/dist/core/onboarding.js.map +1 -1
- package/dist/core/registry.js +3 -3
- package/dist/core/registry.js.map +1 -1
- package/dist/core/router.js +2 -2
- package/dist/core/router.js.map +1 -1
- package/dist/core/sender-allowlist.js +1 -1
- package/dist/core/sender-allowlist.js.map +1 -1
- package/dist/plugins/agents/native/index.d.ts.map +1 -1
- package/dist/plugins/agents/native/index.js +17 -4
- 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 +9 -3
- package/dist/plugins/agents/pi-native/factory.js.map +1 -1
- package/dist/plugins/agents/pi-native/index.js +1 -1
- 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 +6 -1
- package/dist/plugins/agents/pi-native/provider-resolver.js.map +1 -1
- package/dist/web/llm-api.d.ts.map +1 -1
- package/dist/web/llm-api.js +12 -0
- package/dist/web/llm-api.js.map +1 -1
- package/dist/web/public/assets/{a2a-CK_McNBZ.js → a2a-Dtc6AKjx.js} +3 -3
- package/dist/web/public/assets/{a2a-CK_McNBZ.js.map → a2a-Dtc6AKjx.js.map} +1 -1
- package/dist/web/public/assets/{activity-SXgxjjhd.js → activity-CWFI_ke7.js} +2 -2
- package/dist/web/public/assets/{activity-SXgxjjhd.js.map → activity-CWFI_ke7.js.map} +1 -1
- package/dist/web/public/assets/admins-CeQorJdU.js +17 -0
- package/dist/web/public/assets/admins-CeQorJdU.js.map +1 -0
- package/dist/web/public/assets/{agents-BhuZPnjf.js → agents-DnJruPrS.js} +3 -3
- package/dist/web/public/assets/{agents-BhuZPnjf.js.map → agents-DnJruPrS.js.map} +1 -1
- package/dist/web/public/assets/{approvals-CUsF6htp.js → approvals-BEPKSyrL.js} +3 -3
- package/dist/web/public/assets/{approvals-CUsF6htp.js.map → approvals-BEPKSyrL.js.map} +1 -1
- package/dist/web/public/assets/{arrow-down-Dhsj-A0i.js → arrow-down-CzWGZc48.js} +2 -2
- package/dist/web/public/assets/{arrow-down-Dhsj-A0i.js.map → arrow-down-CzWGZc48.js.map} +1 -1
- package/dist/web/public/assets/{arrow-up-Byeo8HHt.js → arrow-up-CXy94NPi.js} +2 -2
- package/dist/web/public/assets/{arrow-up-Byeo8HHt.js.map → arrow-up-CXy94NPi.js.map} +1 -1
- package/dist/web/public/assets/{asks-BkwfCOfj.js → asks-BszsbhPn.js} +3 -3
- package/dist/web/public/assets/{asks-BkwfCOfj.js.map → asks-BszsbhPn.js.map} +1 -1
- package/dist/web/public/assets/audit-ACrwMizd.js +2 -0
- package/dist/web/public/assets/{audit-DshxCHuP.js.map → audit-ACrwMizd.js.map} +1 -1
- package/dist/web/public/assets/{bell-CgQQygG1.js → bell-BLwNOhXO.js} +2 -2
- package/dist/web/public/assets/{bell-CgQQygG1.js.map → bell-BLwNOhXO.js.map} +1 -1
- package/dist/web/public/assets/{bgjobs-qYRbEcQY.js → bgjobs-Cwp0PmTF.js} +3 -3
- package/dist/web/public/assets/{bgjobs-qYRbEcQY.js.map → bgjobs-Cwp0PmTF.js.map} +1 -1
- package/dist/web/public/assets/{brain-V9r2NcZc.js → brain-5AJBYzXX.js} +2 -2
- package/dist/web/public/assets/{brain-V9r2NcZc.js.map → brain-5AJBYzXX.js.map} +1 -1
- package/dist/web/public/assets/{briefcase-CC-yM9eZ.js → briefcase-BTDurkZz.js} +2 -2
- package/dist/web/public/assets/{briefcase-CC-yM9eZ.js.map → briefcase-BTDurkZz.js.map} +1 -1
- package/dist/web/public/assets/chat-D7jjr-Rn.js +17 -0
- package/dist/web/public/assets/chat-D7jjr-Rn.js.map +1 -0
- package/dist/web/public/assets/{chevron-left-CTwCYqyt.js → chevron-left-CnLOhWHE.js} +2 -2
- package/dist/web/public/assets/{chevron-left-CTwCYqyt.js.map → chevron-left-CnLOhWHE.js.map} +1 -1
- package/dist/web/public/assets/chevron-right-CpWYrqTa.js +7 -0
- package/dist/web/public/assets/{chevron-right-CDiFYKGo.js.map → chevron-right-CpWYrqTa.js.map} +1 -1
- package/dist/web/public/assets/{circle-check-CWttT2Af.js → circle-check-DhcTh_uP.js} +2 -2
- package/dist/web/public/assets/{circle-check-CWttT2Af.js.map → circle-check-DhcTh_uP.js.map} +1 -1
- package/dist/web/public/assets/{circle-check-big-Cf2odn4o.js → circle-check-big-CcknUEHz.js} +2 -2
- package/dist/web/public/assets/{circle-check-big-Cf2odn4o.js.map → circle-check-big-CcknUEHz.js.map} +1 -1
- package/dist/web/public/assets/{circle-x-CMJqo4Pi.js → circle-x-QODE2UcL.js} +2 -2
- package/dist/web/public/assets/{circle-x-CMJqo4Pi.js.map → circle-x-QODE2UcL.js.map} +1 -1
- package/dist/web/public/assets/{clock-DUKggKlF.js → clock-BPBx4QWT.js} +3 -3
- package/dist/web/public/assets/{clock-DUKggKlF.js.map → clock-BPBx4QWT.js.map} +1 -1
- package/dist/web/public/assets/confirm-dialog-HsyBgWxC.js +2 -0
- package/dist/web/public/assets/{confirm-dialog-CMWuyC3w.js.map → confirm-dialog-HsyBgWxC.js.map} +1 -1
- package/dist/web/public/assets/{copy-D8mIKuYJ.js → copy-VJNELMp7.js} +3 -3
- package/dist/web/public/assets/{copy-D8mIKuYJ.js.map → copy-VJNELMp7.js.map} +1 -1
- package/dist/web/public/assets/{data-table-CHGndGOY.js → data-table-C0yaCeSS.js} +2 -2
- package/dist/web/public/assets/{data-table-CHGndGOY.js.map → data-table-C0yaCeSS.js.map} +1 -1
- package/dist/web/public/assets/{download-CgEI28s6.js → download-EUh-RXv5.js} +3 -3
- package/dist/web/public/assets/{download-CgEI28s6.js.map → download-EUh-RXv5.js.map} +1 -1
- package/dist/web/public/assets/{email-BLZQOZnx.js → email-YUzrp4Tf.js} +3 -3
- package/dist/web/public/assets/{email-BLZQOZnx.js.map → email-YUzrp4Tf.js.map} +1 -1
- package/dist/web/public/assets/{empty-state-D8kx-FwO.js → empty-state-DoiBKL4l.js} +2 -2
- package/dist/web/public/assets/{empty-state-D8kx-FwO.js.map → empty-state-DoiBKL4l.js.map} +1 -1
- package/dist/web/public/assets/{external-link-BM6n9mwt.js → external-link-Bf2430Ji.js} +2 -2
- package/dist/web/public/assets/{external-link-BM6n9mwt.js.map → external-link-Bf2430Ji.js.map} +1 -1
- package/dist/web/public/assets/{eye-Dk27zHD5.js → eye-vE4k-Us-.js} +2 -2
- package/dist/web/public/assets/{eye-Dk27zHD5.js.map → eye-vE4k-Us-.js.map} +1 -1
- package/dist/web/public/assets/facts-BPVTGzM4.js +2 -0
- package/dist/web/public/assets/{facts-CoWF4O82.js.map → facts-BPVTGzM4.js.map} +1 -1
- package/dist/web/public/assets/{goals-CuiFswaR.js → goals-HsKzf-PG.js} +3 -3
- package/dist/web/public/assets/{goals-CuiFswaR.js.map → goals-HsKzf-PG.js.map} +1 -1
- package/dist/web/public/assets/health-CSMAArAj.js +2 -0
- package/dist/web/public/assets/{health-C3lSUr_r.js.map → health-CSMAArAj.js.map} +1 -1
- package/dist/web/public/assets/{heart-pulse-D34iW_OF.js → heart-pulse-8RDC8GWv.js} +2 -2
- package/dist/web/public/assets/{heart-pulse-D34iW_OF.js.map → heart-pulse-8RDC8GWv.js.map} +1 -1
- package/dist/web/public/assets/{heartbeat-Z5gPGZhm.js → heartbeat-BzHZy7Mx.js} +3 -3
- package/dist/web/public/assets/{heartbeat-Z5gPGZhm.js.map → heartbeat-BzHZy7Mx.js.map} +1 -1
- package/dist/web/public/assets/{hot-CZJeO9Mj.js → hot-DkFvD3H4.js} +3 -3
- package/dist/web/public/assets/{hot-CZJeO9Mj.js.map → hot-DkFvD3H4.js.map} +1 -1
- package/dist/web/public/assets/index-Bc0H0I1S.css +1 -0
- package/dist/web/public/assets/index-D7BuMEIr.js +204 -0
- package/dist/web/public/assets/index-D7BuMEIr.js.map +1 -0
- package/dist/web/public/assets/injection-a2kkgRbT.js +2 -0
- package/dist/web/public/assets/{injection-BTDjIbkn.js.map → injection-a2kkgRbT.js.map} +1 -1
- package/dist/web/public/assets/{installed-B5IGYO0m.js → installed-XQQEPKh8.js} +3 -3
- package/dist/web/public/assets/{installed-B5IGYO0m.js.map → installed-XQQEPKh8.js.map} +1 -1
- package/dist/web/public/assets/jobs-Cby1Eq4o.js +2 -0
- package/dist/web/public/assets/{jobs-9YLeiSVG.js.map → jobs-Cby1Eq4o.js.map} +1 -1
- package/dist/web/public/assets/{layout-5cLpIeb4.js → layout-0rDvqHCV.js} +2 -2
- package/dist/web/public/assets/{layout-5cLpIeb4.js.map → layout-0rDvqHCV.js.map} +1 -1
- package/dist/web/public/assets/{layout-BdCXtDqk.js → layout-BRnEPnky.js} +2 -2
- package/dist/web/public/assets/{layout-BdCXtDqk.js.map → layout-BRnEPnky.js.map} +1 -1
- package/dist/web/public/assets/layout-BdtJtlu5.js +2 -0
- package/dist/web/public/assets/{layout-CgeijAPB.js.map → layout-BdtJtlu5.js.map} +1 -1
- package/dist/web/public/assets/{layout-DLtODZx_.js → layout-CbqldDRj.js} +2 -2
- package/dist/web/public/assets/{layout-DLtODZx_.js.map → layout-CbqldDRj.js.map} +1 -1
- package/dist/web/public/assets/layout-Gh29ouFO.js +2 -0
- package/dist/web/public/assets/{layout-DviZj3TJ.js.map → layout-Gh29ouFO.js.map} +1 -1
- package/dist/web/public/assets/{llm-BXhp_nmW.js → llm-COWnMdB9.js} +3 -3
- package/dist/web/public/assets/llm-COWnMdB9.js.map +1 -0
- package/dist/web/public/assets/loader-circle-DO3Ni2RJ.js +7 -0
- package/dist/web/public/assets/{loader-circle-Bgi0H_iI.js.map → loader-circle-DO3Ni2RJ.js.map} +1 -1
- package/dist/web/public/assets/{map-pin-o5p1iOoH.js → map-pin-BsL35E1s.js} +2 -2
- package/dist/web/public/assets/{map-pin-o5p1iOoH.js.map → map-pin-BsL35E1s.js.map} +1 -1
- package/dist/web/public/assets/{mcp-kSwFcRcU.js → mcp-CWMdxcBf.js} +3 -3
- package/dist/web/public/assets/{mcp-kSwFcRcU.js.map → mcp-CWMdxcBf.js.map} +1 -1
- package/dist/web/public/assets/{memos-uAcJzXoQ.js → memos-BYQa4d2t.js} +3 -3
- package/dist/web/public/assets/{memos-uAcJzXoQ.js.map → memos-BYQa4d2t.js.map} +1 -1
- package/dist/web/public/assets/messengers-CebazAJ1.js +2 -0
- package/dist/web/public/assets/{messengers-CkfyROty.js.map → messengers-CebazAJ1.js.map} +1 -1
- package/dist/web/public/assets/{mobile-ClKdRpd9.js → mobile-CMJRNHs2.js} +3 -3
- package/dist/web/public/assets/{mobile-ClKdRpd9.js.map → mobile-CMJRNHs2.js.map} +1 -1
- package/dist/web/public/assets/{native-agent-yfdrcTaK.js → native-agent-MGgMeTHN.js} +3 -3
- package/dist/web/public/assets/{native-agent-yfdrcTaK.js.map → native-agent-MGgMeTHN.js.map} +1 -1
- package/dist/web/public/assets/{network-BlQWIsIc.js → network-pNcx_slv.js} +2 -2
- package/dist/web/public/assets/{network-BlQWIsIc.js.map → network-pNcx_slv.js.map} +1 -1
- package/dist/web/public/assets/{outbox-CYwJu6AR.js → outbox-87hzZQLn.js} +3 -3
- package/dist/web/public/assets/{outbox-CYwJu6AR.js.map → outbox-87hzZQLn.js.map} +1 -1
- package/dist/web/public/assets/{pagination-C6qu72mB.js → pagination-C4edFAqf.js} +2 -2
- package/dist/web/public/assets/{pagination-C6qu72mB.js.map → pagination-C4edFAqf.js.map} +1 -1
- package/dist/web/public/assets/persona-BcOT3Wms.js +2 -0
- package/dist/web/public/assets/{persona-DnuFOp64.js.map → persona-BcOT3Wms.js.map} +1 -1
- package/dist/web/public/assets/{plans-DUg3JDwQ.js → plans-Ddz5qwqp.js} +3 -3
- package/dist/web/public/assets/{plans-DUg3JDwQ.js.map → plans-Ddz5qwqp.js.map} +1 -1
- package/dist/web/public/assets/{play-BGXpdCxa.js → play-Bzdymasn.js} +2 -2
- package/dist/web/public/assets/{play-BGXpdCxa.js.map → play-Bzdymasn.js.map} +1 -1
- package/dist/web/public/assets/{plus-2MZ7TkP3.js → plus-BxjzY9Wh.js} +2 -2
- package/dist/web/public/assets/{plus-2MZ7TkP3.js.map → plus-BxjzY9Wh.js.map} +1 -1
- package/dist/web/public/assets/policy-Be-tMZZc.js +2 -0
- package/dist/web/public/assets/{policy-C4xe2rWm.js.map → policy-Be-tMZZc.js.map} +1 -1
- package/dist/web/public/assets/{qr-code-BVHNR5Zs.js → qr-code-D1V5cA_X.js} +2 -2
- package/dist/web/public/assets/{qr-code-BVHNR5Zs.js.map → qr-code-D1V5cA_X.js.map} +1 -1
- package/dist/web/public/assets/{refresh-ccw-MHrCmmSv.js → refresh-ccw-BhPAzZAa.js} +2 -2
- package/dist/web/public/assets/{refresh-ccw-MHrCmmSv.js.map → refresh-ccw-BhPAzZAa.js.map} +1 -1
- package/dist/web/public/assets/{reminders-CmV_JNt5.js → reminders-DEWtrlH_.js} +3 -3
- package/dist/web/public/assets/{reminders-CmV_JNt5.js.map → reminders-DEWtrlH_.js.map} +1 -1
- package/dist/web/public/assets/{save-DhFewuZL.js → save-Cye8Vlu5.js} +2 -2
- package/dist/web/public/assets/{save-DhFewuZL.js.map → save-Cye8Vlu5.js.map} +1 -1
- package/dist/web/public/assets/{schedules-Cp63TJGf.js → schedules-CuqRy3t8.js} +3 -3
- package/dist/web/public/assets/{schedules-Cp63TJGf.js.map → schedules-CuqRy3t8.js.map} +1 -1
- package/dist/web/public/assets/{search-wZEXSmcX.js → search-BQqVArrW.js} +2 -2
- package/dist/web/public/assets/{search-wZEXSmcX.js.map → search-BQqVArrW.js.map} +1 -1
- package/dist/web/public/assets/{search-wUAqWxXK.js → search-Dot_W5Eu.js} +3 -3
- package/dist/web/public/assets/{search-wUAqWxXK.js.map → search-Dot_W5Eu.js.map} +1 -1
- package/dist/web/public/assets/security-BB-YnetQ.js +2 -0
- package/dist/web/public/assets/{security-BoMdDyCY.js.map → security-BB-YnetQ.js.map} +1 -1
- package/dist/web/public/assets/{service-C_KqtWwn.js → service-DgkqlAtM.js} +3 -3
- package/dist/web/public/assets/{service-C_KqtWwn.js.map → service-DgkqlAtM.js.map} +1 -1
- package/dist/web/public/assets/{shield-alert-CplKlUGS.js → shield-alert-CBOmgn9W.js} +2 -2
- package/dist/web/public/assets/{shield-alert-CplKlUGS.js.map → shield-alert-CBOmgn9W.js.map} +1 -1
- package/dist/web/public/assets/{status-badge-q2WooCma.js → status-badge-9sMFH4uP.js} +2 -2
- package/dist/web/public/assets/{status-badge-q2WooCma.js.map → status-badge-9sMFH4uP.js.map} +1 -1
- package/dist/web/public/assets/{subtasks-CBi4c6FD.js → subtasks-BrqdQxw_.js} +3 -3
- package/dist/web/public/assets/{subtasks-CBi4c6FD.js.map → subtasks-BrqdQxw_.js.map} +1 -1
- package/dist/web/public/assets/{table-Bmwe7n4n.js → table-CSHCu7pz.js} +2 -2
- package/dist/web/public/assets/{table-Bmwe7n4n.js.map → table-CSHCu7pz.js.map} +1 -1
- package/dist/web/public/assets/{topn-CMRS4ApA.js → topn-DZWbwDge.js} +3 -3
- package/dist/web/public/assets/{topn-CMRS4ApA.js.map → topn-DZWbwDge.js.map} +1 -1
- package/dist/web/public/assets/{trash-2-CT_B0mSH.js → trash-2-Cco09tAA.js} +2 -2
- package/dist/web/public/assets/{trash-2-CT_B0mSH.js.map → trash-2-Cco09tAA.js.map} +1 -1
- package/dist/web/public/assets/use-agim-skills-CJOJKeOZ.js +2 -0
- package/dist/web/public/assets/{use-agim-skills-C0HdvMQj.js.map → use-agim-skills-CJOJKeOZ.js.map} +1 -1
- package/dist/web/public/assets/use-background-tasks-D77bcfrq.js +2 -0
- package/dist/web/public/assets/{use-background-tasks-Co9CtmcD.js.map → use-background-tasks-D77bcfrq.js.map} +1 -1
- package/dist/web/public/assets/use-memory-CX4B1SYC.js +2 -0
- package/dist/web/public/assets/{use-memory-BHYuPOc9.js.map → use-memory-CX4B1SYC.js.map} +1 -1
- package/dist/web/public/assets/use-observability-rcc7fRmj.js +2 -0
- package/dist/web/public/assets/{use-observability-CHv6H0zQ.js.map → use-observability-rcc7fRmj.js.map} +1 -1
- package/dist/web/public/assets/use-settings-DQnJkPXp.js +2 -0
- package/dist/web/public/assets/{use-settings-Bx0ZTOsd.js.map → use-settings-DQnJkPXp.js.map} +1 -1
- package/dist/web/public/assets/use-workspace-J5eeVxw9.js +2 -0
- package/dist/web/public/assets/{use-workspace-zFEfqUCo.js.map → use-workspace-J5eeVxw9.js.map} +1 -1
- package/dist/web/public/assets/vector-xRphJ8hW.js +2 -0
- package/dist/web/public/assets/{vector-B9v7zTvA.js.map → vector-xRphJ8hW.js.map} +1 -1
- package/dist/web/public/assets/{viewer-CeD55ZLu.js → viewer-Bq7l2kE8.js} +3 -3
- package/dist/web/public/assets/{viewer-CeD55ZLu.js.map → viewer-Bq7l2kE8.js.map} +1 -1
- package/dist/web/public/assets/{workspace-Ci21xBqp.js → workspace-BqMuxPFF.js} +3 -3
- package/dist/web/public/assets/{workspace-Ci21xBqp.js.map → workspace-BqMuxPFF.js.map} +1 -1
- package/dist/web/public/assets/{workspaces-C8mT-jmj.js → workspaces-D0pYJfxI.js} +3 -3
- package/dist/web/public/assets/{workspaces-C8mT-jmj.js.map → workspaces-D0pYJfxI.js.map} +1 -1
- package/dist/web/public/index.html +2 -2
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +85 -54
- package/dist/web/server.js.map +1 -1
- package/package.json +1 -1
- package/dist/core/admin-bootstrap.d.ts +0 -42
- package/dist/core/admin-bootstrap.d.ts.map +0 -1
- package/dist/core/admin-bootstrap.js +0 -156
- package/dist/core/admin-bootstrap.js.map +0 -1
- package/dist/web/public/assets/admins-aofsuukT.js +0 -12
- package/dist/web/public/assets/admins-aofsuukT.js.map +0 -1
- package/dist/web/public/assets/audit-DshxCHuP.js +0 -2
- package/dist/web/public/assets/chat-CY4JriM5.js +0 -7
- package/dist/web/public/assets/chat-CY4JriM5.js.map +0 -1
- package/dist/web/public/assets/chevron-right-CDiFYKGo.js +0 -7
- package/dist/web/public/assets/confirm-dialog-CMWuyC3w.js +0 -2
- package/dist/web/public/assets/dialog-xeyu8dCf.js +0 -2
- package/dist/web/public/assets/dialog-xeyu8dCf.js.map +0 -1
- package/dist/web/public/assets/facts-CoWF4O82.js +0 -2
- package/dist/web/public/assets/health-C3lSUr_r.js +0 -2
- package/dist/web/public/assets/index-D1ulN_24.js +0 -199
- package/dist/web/public/assets/index-D1ulN_24.js.map +0 -1
- package/dist/web/public/assets/index-uKzGZ_Df.css +0 -1
- package/dist/web/public/assets/injection-BTDjIbkn.js +0 -2
- package/dist/web/public/assets/jobs-9YLeiSVG.js +0 -2
- package/dist/web/public/assets/layout-CgeijAPB.js +0 -2
- package/dist/web/public/assets/layout-DviZj3TJ.js +0 -2
- package/dist/web/public/assets/llm-BXhp_nmW.js.map +0 -1
- package/dist/web/public/assets/loader-circle-Bgi0H_iI.js +0 -7
- package/dist/web/public/assets/messengers-CkfyROty.js +0 -2
- package/dist/web/public/assets/persona-DnuFOp64.js +0 -2
- package/dist/web/public/assets/policy-C4xe2rWm.js +0 -2
- package/dist/web/public/assets/security-BoMdDyCY.js +0 -2
- package/dist/web/public/assets/use-agim-skills-C0HdvMQj.js +0 -2
- package/dist/web/public/assets/use-background-tasks-Co9CtmcD.js +0 -2
- package/dist/web/public/assets/use-llm-admin-Bd0XAQpx.js +0 -2
- package/dist/web/public/assets/use-llm-admin-Bd0XAQpx.js.map +0 -1
- package/dist/web/public/assets/use-memory-BHYuPOc9.js +0 -2
- package/dist/web/public/assets/use-observability-CHv6H0zQ.js +0 -2
- package/dist/web/public/assets/use-settings-Bx0ZTOsd.js +0 -2
- package/dist/web/public/assets/use-workspace-zFEfqUCo.js +0 -2
- package/dist/web/public/assets/useQuery-Bt7Ty7IO.js +0 -2
- package/dist/web/public/assets/useQuery-Bt7Ty7IO.js.map +0 -1
- package/dist/web/public/assets/vector-B9v7zTvA.js +0 -2
- package/dist/web/public/assets/x-DXACg96C.js +0 -7
- package/dist/web/public/assets/x-DXACg96C.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
:root{--ag-bg: 220 14% 96%;--ag-surface: 0 0% 100%;--ag-surface-2: 220 14% 94%;--ag-surface-hover:220 14% 92%;--ag-border: 220 13% 90%;--ag-border-strong: 220 10% 80%;--ag-text: 220 13% 13%;--ag-text-dim: 220 6% 38%;--ag-text-muted: 220 6% 58%;--ag-accent: 246 80% 60%;--ag-accent-fg: 0 0% 100%;--ag-accent-hover: 246 80% 52%;--ag-accent-bg: 246 100% 96%;--ag-success: 158 75% 39%;--ag-success-bg:158 75% 95%;--ag-warning: 38 95% 50%;--ag-warning-bg: 38 95% 95%;--ag-danger: 0 78% 56%;--ag-danger-bg: 0 78% 96%;--ag-info: 217 91% 60%;--ag-info-bg: 217 91% 96%;--ag-shadow-sm: 0 1px 2px hsl(220 13% 13% / .05);--ag-shadow-md: 0 2px 8px hsl(220 13% 13% / .08);--ag-shadow-lg: 0 8px 24px hsl(220 13% 13% / .12)}:root[data-theme=dark]{--ag-bg: 220 10% 7%;--ag-surface: 220 12% 11%;--ag-surface-2: 220 12% 14%;--ag-surface-hover:220 12% 16%;--ag-border: 220 10% 20%;--ag-border-strong: 220 10% 28%;--ag-text: 220 14% 91%;--ag-text-dim: 220 8% 68%;--ag-text-muted: 220 8% 50%;--ag-accent: 246 90% 72%;--ag-accent-fg: 220 30% 5%;--ag-accent-hover: 246 90% 80%;--ag-accent-bg: 246 30% 22%;--ag-success: 158 70% 50%;--ag-success-bg:158 60% 20%;--ag-warning: 38 90% 60%;--ag-warning-bg: 38 60% 20%;--ag-danger: 0 85% 67%;--ag-danger-bg: 0 60% 22%;--ag-info: 217 90% 70%;--ag-info-bg: 217 60% 25%;--ag-shadow-sm: 0 1px 2px hsl(0 0% 0% / .4);--ag-shadow-md: 0 2px 8px hsl(0 0% 0% / .5);--ag-shadow-lg: 0 8px 24px hsl(0 0% 0% / .6)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]):not([data-theme=dark]){--ag-bg: 220 10% 7%;--ag-surface: 220 12% 11%;--ag-surface-2: 220 12% 14%;--ag-surface-hover:220 12% 16%;--ag-border: 220 10% 20%;--ag-border-strong: 220 10% 28%;--ag-text: 220 14% 91%;--ag-text-dim: 220 8% 68%;--ag-text-muted: 220 8% 50%;--ag-accent: 246 90% 72%;--ag-accent-fg: 220 30% 5%;--ag-accent-hover: 246 90% 80%;--ag-accent-bg: 246 30% 22%;--ag-success: 158 70% 50%;--ag-success-bg:158 60% 20%;--ag-warning: 38 90% 60%;--ag-warning-bg: 38 60% 20%;--ag-danger: 0 85% 67%;--ag-danger-bg: 0 60% 22%;--ag-info: 217 90% 70%;--ag-info-bg: 217 60% 25%;--ag-shadow-sm: 0 1px 2px hsl(0 0% 0% / .4);--ag-shadow-md: 0 2px 8px hsl(0 0% 0% / .5);--ag-shadow-lg: 0 8px 24px hsl(0 0% 0% / .6)}}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}html,body,#root{height:100%}body{background-color:hsl(var(--ag-bg));color:hsl(var(--ag-text));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,"Apple Color Emoji","Segoe UI Emoji",sans-serif;touch-action:manipulation;-webkit-tap-highlight-color:hsl(var(--ag-accent) / .15)}button,[role=button],a,input[type=button],input[type=submit]{-webkit-tap-highlight-color:hsl(var(--ag-accent) / .15)}@media (pointer: fine){*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:hsl(var(--ag-border-strong));border-radius:999px;border:2px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background:hsl(var(--ag-text-muted));background-clip:content-box}}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:16px;padding-left:16px}@media (min-width: 640px){.container{max-width:640px;padding-right:24px;padding-left:24px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px;padding-right:32px;padding-left:32px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1400px){.container{max-width:1400px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-2{bottom:8px}.bottom-24{bottom:6rem}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:8px}.left-\[50\%\]{left:50%}.right-0{right:0}.right-4{right:16px}.top-0{top:0}.top-1\/2{top:50%}.top-10{top:2.5rem}.top-4{top:16px}.top-\[50\%\]{top:50%}.top-\[var\(--topbar-h\,0\)\]{top:var(--topbar-h,0)}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.-mx-1{margin-left:-4px;margin-right:-4px}.-mx-3{margin-left:-12px;margin-right:-12px}.mx-4{margin-left:16px;margin-right:16px}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:4px;margin-bottom:4px}.my-2{margin-top:8px;margin-bottom:8px}.-ml-2{margin-left:-8px}.mb-0\.5{margin-bottom:2px}.mb-1{margin-bottom:4px}.mb-1\.5{margin-bottom:6px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}.ml-1{margin-left:4px}.ml-2{margin-left:8px}.ml-3{margin-left:12px}.ml-5{margin-left:20px}.ml-auto{margin-left:auto}.mr-1{margin-right:4px}.mr-2{margin-right:8px}.mt-0\.5{margin-top:2px}.mt-1{margin-top:4px}.mt-1\.5{margin-top:6px}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.size-4{width:16px;height:16px}.h-1{height:4px}.h-1\.5{height:6px}.h-10{height:2.5rem}.h-12{height:3rem}.h-2{height:8px}.h-24{height:6rem}.h-3{height:12px}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:16px}.h-48{height:12rem}.h-5{height:20px}.h-6{height:24px}.h-64{height:16rem}.h-7{height:32px}.h-72{height:18rem}.h-8{height:48px}.h-9{height:64px}.h-96{height:24rem}.h-\[280px\]{height:280px}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-dvh{height:100dvh}.h-px{height:1px}.max-h-32{max-height:8rem}.max-h-48{max-height:12rem}.max-h-60{max-height:15rem}.max-h-64{max-height:16rem}.max-h-96{max-height:24rem}.max-h-\[85dvh\]{max-height:85dvh}.min-h-8{min-height:48px}.min-h-9{min-height:64px}.min-h-\[500px\]{min-height:500px}.min-h-dvh{min-height:100dvh}.w-1\.5{width:6px}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:8px}.w-2\/3{width:66.666667%}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:12px}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-32{width:8rem}.w-36{width:9rem}.w-4{width:16px}.w-40{width:10rem}.w-44{width:11rem}.w-48{width:12rem}.w-5{width:20px}.w-56{width:14rem}.w-6{width:24px}.w-64{width:16rem}.w-72{width:18rem}.w-8{width:48px}.w-9{width:64px}.w-\[140px\]{width:140px}.w-\[160px\]{width:160px}.w-\[180px\]{width:180px}.w-\[280px\]{width:280px}.w-\[80px\]{width:80px}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-\[180px\]{min-width:180px}.min-w-\[200px\]{min-width:200px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[85\%\]{max-width:85%}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0\.5{--tw-translate-x: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x: 20px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize-none{resize:none}.resize-y{resize:vertical}.scroll-mx-4{scroll-margin-left:16px;scroll-margin-right:16px}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[max-content_1fr\]{grid-template-columns:max-content 1fr}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:2px}.gap-1{gap:4px}.gap-1\.5{gap:6px}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.gap-6{gap:24px}.gap-x-3{-moz-column-gap:12px;column-gap:12px}.gap-x-4{-moz-column-gap:16px;column-gap:16px}.gap-y-1{row-gap:4px}.gap-y-2{row-gap:8px}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2px * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(4px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(4px * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(8px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(8px * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(12px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(12px * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-border>:not([hidden])~:not([hidden]){border-color:hsl(var(--ag-border))}.self-start{align-self:flex-start}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:6px}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:10px}.rounded-md{border-radius:6px}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-t{border-top-width:1px}.border-accent{border-color:hsl(var(--ag-accent))}.border-border{border-color:hsl(var(--ag-border))}.border-border\/40{border-color:hsl(var(--ag-border) / .4)}.border-danger{border-color:hsl(var(--ag-danger))}.border-danger\/30{border-color:hsl(var(--ag-danger) / .3)}.border-danger\/60{border-color:hsl(var(--ag-danger) / .6)}.border-info{border-color:hsl(var(--ag-info))}.border-info\/30{border-color:hsl(var(--ag-info) / .3)}.border-success{border-color:hsl(var(--ag-success))}.border-success\/30{border-color:hsl(var(--ag-success) / .3)}.border-success\/60{border-color:hsl(var(--ag-success) / .6)}.border-transparent{border-color:transparent}.border-warning{border-color:hsl(var(--ag-warning))}.border-warning\/30{border-color:hsl(var(--ag-warning) / .3)}.border-warning\/40{border-color:hsl(var(--ag-warning) / .4)}.border-warning\/60{border-color:hsl(var(--ag-warning) / .6)}.bg-accent{background-color:hsl(var(--ag-accent))}.bg-accent-bg{background-color:hsl(var(--ag-accent-bg))}.bg-accent\/60{background-color:hsl(var(--ag-accent) / .6)}.bg-bg{background-color:hsl(var(--ag-bg))}.bg-black\/50{background-color:#00000080}.bg-border{background-color:hsl(var(--ag-border))}.bg-danger{background-color:hsl(var(--ag-danger))}.bg-danger-bg{background-color:hsl(var(--ag-danger-bg))}.bg-danger-bg\/30{background-color:hsl(var(--ag-danger-bg) / .3)}.bg-info-bg{background-color:hsl(var(--ag-info-bg))}.bg-success{background-color:hsl(var(--ag-success))}.bg-success-bg{background-color:hsl(var(--ag-success-bg))}.bg-surface{background-color:hsl(var(--ag-surface))}.bg-surface-2{background-color:hsl(var(--ag-surface-2))}.bg-surface-2\/40{background-color:hsl(var(--ag-surface-2) / .4)}.bg-surface-2\/50{background-color:hsl(var(--ag-surface-2) / .5)}.bg-text{background-color:hsl(var(--ag-text))}.bg-text-muted{background-color:hsl(var(--ag-text-muted))}.bg-transparent{background-color:transparent}.bg-warning{background-color:hsl(var(--ag-warning))}.bg-warning-bg{background-color:hsl(var(--ag-warning-bg))}.bg-warning-bg\/40{background-color:hsl(var(--ag-warning-bg) / .4)}.bg-warning\/5{background-color:hsl(var(--ag-warning) / .05)}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.fill-current{fill:currentColor}.p-0{padding:0}.p-1{padding:4px}.p-12{padding:3rem}.p-2{padding:8px}.p-3{padding:12px}.p-4{padding:16px}.p-5{padding:20px}.p-6{padding:24px}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:4px;padding-right:4px}.px-1\.5{padding-left:6px;padding-right:6px}.px-2{padding-left:8px;padding-right:8px}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:12px;padding-right:12px}.px-4{padding-left:16px;padding-right:16px}.px-5{padding-left:20px;padding-right:20px}.py-0\.5{padding-top:2px;padding-bottom:2px}.py-1{padding-top:4px;padding-bottom:4px}.py-1\.5{padding-top:6px;padding-bottom:6px}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:8px;padding-bottom:8px}.py-3{padding-top:12px;padding-bottom:12px}.py-4{padding-top:16px;padding-bottom:16px}.py-6{padding-top:24px;padding-bottom:24px}.py-8{padding-top:48px;padding-bottom:48px}.pb-2{padding-bottom:8px}.pb-3{padding-bottom:12px}.pb-\[calc\(env\(safe-area-inset-bottom\)\+1\.5rem\)\]{padding-bottom:calc(env(safe-area-inset-bottom) + 1.5rem)}.pl-3{padding-left:12px}.pl-7{padding-left:32px}.pl-8{padding-left:48px}.pr-2{padding-right:8px}.pt-0{padding-top:0}.pt-1{padding-top:4px}.pt-2{padding-top:8px}.pt-3{padding-top:12px}.text-left{text-align:left}.text-center{text-align:center}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:30px;line-height:38px}.text-6xl{font-size:3.75rem;line-height:1}.text-\[0\.85em\]{font-size:.85em}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[15px\]{font-size:15px}.text-base{font-size:15px;line-height:22px}.text-lg{font-size:20px;line-height:28px}.text-md{font-size:16px;line-height:24px}.text-sm{font-size:13px;line-height:20px}.text-xl{font-size:24px;line-height:32px}.text-xs{font-size:12px;line-height:16px}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-widest{letter-spacing:.1em}.text-accent{color:hsl(var(--ag-accent))}.text-accent-fg{color:hsl(var(--ag-accent-fg))}.text-bg{color:hsl(var(--ag-bg))}.text-danger{color:hsl(var(--ag-danger))}.text-info{color:hsl(var(--ag-info))}.text-success{color:hsl(var(--ag-success))}.text-text{color:hsl(var(--ag-text))}.text-text-dim{color:hsl(var(--ag-text-dim))}.text-text-muted{color:hsl(var(--ag-text-muted))}.text-warning{color:hsl(var(--ag-warning))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.decoration-accent\/40{text-decoration-color:hsl(var(--ag-accent) / .4)}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.accent-accent{accent-color:hsl(var(--ag-accent))}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.shadow{--tw-shadow: var(--ag-shadow-md);--tw-shadow-colored: var(--ag-shadow-md);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: var(--ag-shadow-lg);--tw-shadow-colored: var(--ag-shadow-lg);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: var(--ag-shadow-md);--tw-shadow-colored: var(--ag-shadow-md);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: var(--ag-shadow-sm);--tw-shadow-colored: var(--ag-shadow-sm);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.duration-200{animation-duration:.2s}.running{animation-play-state:running}.paused{animation-play-state:paused}.pt-safe{padding-top:calc(env(safe-area-inset-top) + .5rem)}.pb-safe{padding-bottom:calc(env(safe-area-inset-bottom) + .5rem)}.h-dvh{height:100vh;height:100dvh}.min-h-dvh{min-height:100vh;min-height:100dvh}.tap-target{min-height:32px;min-width:32px}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:13px;line-height:20px}.file\:font-medium::file-selector-button{font-weight:500}.placeholder\:text-text-muted::-moz-placeholder{color:hsl(var(--ag-text-muted))}.placeholder\:text-text-muted::placeholder{color:hsl(var(--ag-text-muted))}.last\:border-b-0:last-child{border-bottom-width:0px}.hover\:border-border-strong:hover{border-color:hsl(var(--ag-border-strong))}.hover\:bg-accent-hover:hover{background-color:hsl(var(--ag-accent-hover))}.hover\:bg-danger:hover{background-color:hsl(var(--ag-danger))}.hover\:bg-surface-2:hover{background-color:hsl(var(--ag-surface-2))}.hover\:text-accent:hover{color:hsl(var(--ag-accent))}.hover\:text-danger:hover{color:hsl(var(--ag-danger))}.hover\:text-text:hover{color:hsl(var(--ag-text))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:decoration-accent:hover{text-decoration-color:hsl(var(--ag-accent))}.focus\:border-accent:focus{border-color:hsl(var(--ag-accent))}.focus\:text-text:focus{color:hsl(var(--ag-text))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-accent:focus{--tw-ring-color: hsl(var(--ag-accent))}.focus\:ring-danger:focus{--tw-ring-color: hsl(var(--ag-danger))}.focus\:ring-offset-1:focus{--tw-ring-offset-width: 1px}.focus\:ring-offset-bg:focus{--tw-ring-offset-color: hsl(var(--ag-bg))}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-accent:focus-visible{--tw-ring-color: hsl(var(--ag-accent))}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width: 1px}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-bg:focus-visible{--tw-ring-offset-color: hsl(var(--ag-bg))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-55:disabled{opacity:.55}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: 4px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -4px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: 4px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -4px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=selected\]\:bg-accent-bg[data-state=selected]{background-color:hsl(var(--ag-accent-bg))}.data-\[state\=active\]\:text-accent[data-state=active]{color:hsl(var(--ag-accent))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=delayed-open\]\:animate-in[data-state=delayed-open],.data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0}.data-\[state\=delayed-open\]\:fade-in-0[data-state=delayed-open],.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity: 0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.data-\[state\=delayed-open\]\:zoom-in-95[data-state=delayed-open],.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.data-\[state\=closed\]\:slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x: -50%}.data-\[state\=closed\]\:slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y: -48%}.data-\[state\=open\]\:slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x: -50%}.data-\[state\=open\]\:slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y: -48%}.data-\[state\=active\]\:after\:absolute[data-state=active]:after{content:var(--tw-content);position:absolute}.data-\[state\=active\]\:after\:inset-x-0[data-state=active]:after{content:var(--tw-content);left:0;right:0}.data-\[state\=active\]\:after\:-bottom-px[data-state=active]:after{content:var(--tw-content);bottom:-1px}.data-\[state\=active\]\:after\:h-0\.5[data-state=active]:after{content:var(--tw-content);height:2px}.data-\[state\=active\]\:after\:rounded[data-state=active]:after{content:var(--tw-content);border-radius:6px}.data-\[state\=active\]\:after\:bg-accent[data-state=active]:after{content:var(--tw-content);background-color:hsl(var(--ag-accent))}@media (min-width: 640px){.sm\:not-sr-only{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:-mx-4{margin-left:-16px;margin-right:-16px}.sm\:ml-1{margin-left:4px}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:inline-flex{display:inline-flex}.sm\:hidden{display:none}.sm\:w-20{width:5rem}.sm\:w-28{width:7rem}.sm\:w-36{width:9rem}.sm\:w-40{width:10rem}.sm\:min-w-0{min-width:0px}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-\[75\%\]{max-width:75%}.sm\:max-w-lg{max-width:32rem}.sm\:flex-1{flex:1 1 0%}.sm\:shrink-0{flex-shrink:0}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-\[180px_1fr\]{grid-template-columns:180px 1fr}.sm\:grid-cols-\[180px_1fr_auto\]{grid-template-columns:180px 1fr auto}.sm\:flex-row{flex-direction:row}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2{gap:8px}.sm\:gap-3{gap:12px}.sm\:p-4{padding:16px}.sm\:p-6{padding:24px}.sm\:px-4{padding-left:16px;padding-right:16px}.sm\:px-6{padding-left:24px;padding-right:24px}.sm\:py-2{padding-top:8px;padding-bottom:8px}.sm\:pt-0{padding-top:0}}@media (min-width: 768px){.md\:block{display:block}.md\:hidden{display:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-\[280px\,1fr\]{grid-template-columns:280px 1fr}}@media (min-width: 1024px){.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}.\[\&\:\:-webkit-scrollbar-thumb\]\:bg-border::-webkit-scrollbar-thumb{background-color:hsl(var(--ag-border))}.\[\&\:\:-webkit-scrollbar\]\:h-1::-webkit-scrollbar{height:4px}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\>\*\:first-child\]\:mt-0>*:first-child{margin-top:0}.\[\&\>\*\:last-child\]\:mb-0>*:last-child{margin-bottom:0}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:16px;height:16px}.\[\&_svg\]\:h-6 svg{height:24px}.\[\&_svg\]\:w-6 svg{width:24px}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}.\[\&_tr\]\:border-border tr{border-color:hsl(var(--ag-border))}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{u as C,j as e,k as n,B as x,L as b,l as i}from"./index-D1ulN_24.js";import{r as v}from"./react-DlP5eolq.js";import{f as T,g as A,h as P,a as R}from"./use-agim-skills-C0HdvMQj.js";import{L as p}from"./loader-circle-Bgi0H_iI.js";import{R as E}from"./refresh-ccw-MHrCmmSv.js";import{C as z}from"./copy-D8mIKuYJ.js";import{S as O}from"./save-DhFewuZL.js";import{T as B}from"./trash-2-CT_B0mSH.js";import"./useQuery-Bt7Ty7IO.js";const I=1e4;function Q(){return e.jsx(W,{})}function W(){const{t:s}=C(["settings","common"]),a=T(),u=A(),h=P(),j=R(),[l,r]=v.useState(""),[f,o]=v.useState(!1);v.useEffect(()=>{a.data&&!f&&r(a.data.override??"")},[a.data,f]);const c=a.data?.auto??"",g=a.data?.maxOverrideChars??4e4,k=a.data?.overrideActive??!1,N=a.data?.overridePath??"~/.agim/skill-injection-override.md",d=l.length,m=d>g;async function w(){if(m){i.error(s("skillInjection.overLimitToast",{len:d,max:g}));return}try{const t=await u.mutateAsync(l);i.success(t.deleted?s("skillInjection.clearedToast"):s("skillInjection.savedToast")),o(!1)}catch(t){i.error(t?.message??String(t))}}async function L(){if(confirm(s("skillInjection.confirmClear")))try{await h.mutateAsync(),r(""),o(!1),i.success(s("skillInjection.clearedToast"))}catch(t){i.error(t?.message??String(t))}}async function S(){try{await j.mutateAsync()}catch(t){i.error(t?.message??String(t));return}await a.refetch(),f||r(a.data?.override??""),i.success(s("skillInjection.rebuiltToast"))}function y(){r(c),o(!0)}return e.jsxs("div",{className:"mx-auto flex max-w-6xl flex-col gap-4",children:[e.jsxs("header",{className:"flex items-center gap-3",children:[e.jsx("h1",{className:"text-xl font-semibold",children:s("skillInjection.title")}),k?e.jsx(n,{variant:"success",children:s("skillInjection.overrideActive")}):e.jsx(n,{variant:"outline",children:s("skillInjection.overrideInactive")}),e.jsxs(x,{variant:"outline",size:"sm",className:"ml-auto",onClick:()=>void S(),disabled:a.isFetching||j.isPending,title:s("skillInjection.rebuildTooltip"),children:[a.isFetching||j.isPending?e.jsx(p,{className:"h-4 w-4 animate-spin"}):e.jsx(E,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("skillInjection.rebuild")})]})]}),e.jsx("p",{className:"text-sm text-text-dim",children:s("skillInjection.subtitle")}),e.jsx("p",{className:"text-xs text-text-dim font-mono break-all",children:N}),e.jsxs("section",{className:"flex flex-col gap-2 rounded-md border border-border bg-surface p-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{className:"text-sm font-medium",children:s("skillInjection.autoLabel")}),e.jsxs(n,{variant:"outline",children:[c.length.toLocaleString()," chars"]}),c.length>=I&&e.jsx(n,{variant:"warning",children:s("skillInjection.largeWarn")}),e.jsxs(x,{variant:"ghost",size:"sm",className:"ml-auto",onClick:y,disabled:a.isLoading,children:[e.jsx(z,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("skillInjection.copyToOverride")})]})]}),e.jsx("textarea",{readOnly:!0,value:a.isLoading?"...":c,className:"h-64 w-full resize-y rounded border border-border bg-surface-2 p-2 font-mono text-xs","aria-label":s("skillInjection.autoLabel")})]}),e.jsxs("section",{className:"flex flex-col gap-2 rounded-md border border-border bg-surface p-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{className:"text-sm font-medium",children:s("skillInjection.overrideLabel")}),e.jsxs(n,{variant:m?"danger":"outline",children:[d.toLocaleString()," / ",g.toLocaleString()," chars"]}),d>=I&&!m&&e.jsx(n,{variant:"warning",children:s("skillInjection.largeWarn")})]}),e.jsx("textarea",{value:l,onChange:t=>{r(t.target.value),o(!0)},placeholder:s("skillInjection.overridePlaceholder"),className:"h-72 w-full resize-y rounded border border-border bg-surface-2 p-2 font-mono text-xs","aria-label":s("skillInjection.overrideLabel")}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2 pt-1",children:[e.jsxs(x,{onClick:()=>void w(),disabled:u.isPending||m,children:[u.isPending?e.jsx(p,{className:"h-4 w-4 animate-spin"}):e.jsx(O,{className:"h-4 w-4"}),s("skillInjection.save")]}),e.jsxs(x,{variant:"outline",onClick:()=>void L(),disabled:h.isPending||!k&&l.length===0,children:[h.isPending?e.jsx(p,{className:"h-4 w-4 animate-spin"}):e.jsx(B,{className:"h-4 w-4"}),s("skillInjection.clear")]}),e.jsx("span",{className:"text-xs text-text-dim",children:s("skillInjection.hint")})]})]})]})}export{Q as Component,W as default};
|
|
2
|
-
//# sourceMappingURL=injection-BTDjIbkn.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as D,b as q,d as M,u as I,e as V,j as t,c as A,B as P,S as K,f as Q,g as U,h as z,i as T,k as G,l as O,m as X}from"./index-D1ulN_24.js";import{r as u}from"./react-DlP5eolq.js";import{D as Y}from"./data-table-CHGndGOY.js";import{E as H}from"./empty-state-D8kx-FwO.js";import{S as W}from"./status-badge-q2WooCma.js";import{P as Z}from"./pagination-C6qu72mB.js";import{C as ee}from"./confirm-dialog-CMWuyC3w.js";import{u as te}from"./useQuery-Bt7Ty7IO.js";import{u as se}from"./use-event-stream-I1lMFEfh.js";import{L as ae}from"./loader-circle-Bgi0H_iI.js";import{R as ne}from"./refresh-ccw-MHrCmmSv.js";import{C as ie}from"./circle-x-CMJqo4Pi.js";import{B as oe}from"./briefcase-CC-yM9eZ.js";import"./table-Bmwe7n4n.js";import"./arrow-up-Byeo8HHt.js";import"./arrow-down-Dhsj-A0i.js";import"./chevron-left-CTwCYqyt.js";import"./chevron-right-CDiFYKGo.js";import"./dialog-xeyu8dCf.js";import"./x-DXACg96C.js";const N={all:["jobs"],list:e=>["jobs","list",e]};function re(e){return te({queryKey:N.list(e),queryFn:()=>M.listJobs(e)})}function le(){const e=D();return()=>e.invalidateQueries({queryKey:N.all})}function ce(){const e=D();return q({mutationFn:a=>M.batchCancelJobs(a),onSuccess:()=>e.invalidateQueries({queryKey:N.all})})}const de=[10,20,50,100],E=20,me=["pending","running","completed","delivered","failed","cancelled","interrupted","replaced","abandoned"],ue={connected:"text-success",connecting:"text-text-dim",reconnecting:"text-warning",closed:"text-text-muted"};function $e(){const{t:e}=I(["tasks","common"]),[a,i]=V(),d=le(),r=Math.max(1,Number(a.get("page"))||1),l=Number(a.get("per_page"))||E,m=a.get("status")??null,L=u.useMemo(()=>({limit:l,offset:(r-1)*l,...m?{status:m}:{}}),[r,l,m]),{data:S,isLoading:R,isFetching:C,refetch:$}=re(L),h=S?.jobs??[],n=S?.stats,v=se({job:()=>d()}),[p,w]=u.useState(new Set),[B,y]=u.useState(!1),_=ce();async function F(){const s=Array.from(p).map(Number).filter(Number.isFinite);if(s.length!==0)try{await _.mutateAsync({ids:s}),w(new Set),O.success(e("states.saved",{ns:"common"}))}catch(o){const{message:c}=X(o,e);throw O.error(c),o}}function f(s){const o=new URLSearchParams(a);for(const[c,j]of Object.entries(s))j==null||j===""?o.delete(c):o.set(c,j);Object.keys(s).some(c=>c!=="page")&&o.delete("page"),i(o,{replace:!1})}const g=n?n.pending+n.running+n.completed+n.failed+(n.delivered??0):void 0,k=g?Math.max(1,Math.ceil(g/l)):h.length===l?r+1:r,J=u.useMemo(()=>[{id:"id",header:e("jobs.col.id"),cell:s=>t.jsxs("span",{className:"tabular-nums text-text-dim",children:["#",s.id]}),headClassName:"w-16",hideOnMobile:!1},{id:"agent",header:e("jobs.col.agent"),cell:s=>t.jsx("span",{className:"font-medium",children:s.agent}),headClassName:"w-32"},{id:"prompt",header:e("jobs.col.prompt"),cell:s=>t.jsx("span",{className:"line-clamp-2 text-text-dim",children:s.prompt}),asCardTitle:!0},{id:"status",header:e("jobs.col.status"),cell:s=>t.jsx(W,{status:s.status,children:e(`jobs.status.${s.status}`,{defaultValue:s.status})}),headClassName:"w-32"},{id:"createdAt",header:e("jobs.col.createdAt"),cell:s=>t.jsx("span",{className:"text-text-dim",children:he(s.created_at)}),headClassName:"w-40",hideOnMobile:!0},{id:"duration",header:e("jobs.col.duration"),cell:s=>t.jsx("span",{className:"tabular-nums text-text-dim",children:pe(s.duration_ms)}),headClassName:"w-24",hideOnMobile:!0},{id:"cost",header:e("jobs.col.cost"),cell:s=>t.jsx("span",{className:"tabular-nums text-text-dim",children:s.cost!=null?`$${s.cost.toFixed(4)}`:"—"}),headClassName:"w-24",hideOnMobile:!0}],[e]),b=p.size;return t.jsxs("div",{className:"mx-auto flex max-w-7xl flex-col gap-4",children:[t.jsxs("header",{className:"flex flex-col gap-1",children:[t.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[t.jsx("h1",{className:"text-xl font-semibold",children:e("jobs.title")}),t.jsx("span",{className:A("text-xs font-medium tabular-nums",ue[v]),children:e(`jobs.live.${v}`)}),t.jsxs(P,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>$(),disabled:C,"aria-label":e("actions.refresh",{ns:"common"}),children:[C?t.jsx(ae,{className:"h-4 w-4 animate-spin"}):t.jsx(ne,{className:"h-4 w-4"}),t.jsx("span",{className:"hidden sm:inline",children:e("actions.refresh",{ns:"common"})})]})]}),t.jsx("p",{className:"text-sm text-text-dim",children:e("jobs.subtitle")})]}),n&&t.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-4",children:[t.jsx(x,{label:e("jobs.stats.pending"),value:n.pending,tone:"info"}),t.jsx(x,{label:e("jobs.stats.running"),value:n.running,tone:"warning"}),t.jsx(x,{label:e("jobs.stats.completed"),value:n.completed,tone:"success"}),t.jsx(x,{label:e("jobs.stats.failed"),value:n.failed,tone:"danger"})]}),t.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("label",{className:"text-sm text-text-dim",htmlFor:"status-filter",children:e("jobs.filter.status")}),t.jsxs(K,{value:m??"__any__",onValueChange:s=>f({status:s==="__any__"?null:s}),children:[t.jsx(Q,{id:"status-filter",className:"w-[160px]",children:t.jsx(U,{})}),t.jsxs(z,{children:[t.jsx(T,{value:"__any__",children:e("jobs.filter.statusAny")}),me.map(s=>t.jsx(T,{value:s,children:e(`jobs.status.${s}`,{defaultValue:s})},s))]})]})]}),b>0&&t.jsxs("div",{className:"ml-auto flex items-center gap-2",children:[t.jsx(G,{variant:"secondary",children:e("jobs.batch.selected",{count:b})}),t.jsxs(P,{variant:"destructive",size:"sm",onClick:()=>y(!0),disabled:_.isPending,children:[t.jsx(ie,{className:"h-4 w-4"}),e("jobs.batch.cancel")]})]})]}),t.jsx(Y,{columns:J,rows:h,getRowId:s=>String(s.id),loading:R,selection:p,onSelectionChange:w,emptyState:t.jsx(H,{icon:t.jsx(oe,{}),title:e("jobs.empty.title"),description:e("jobs.empty.description")})}),(h.length>0||r>1)&&t.jsx(Z,{page:r,totalPages:k,totalRows:g,perPage:l,perPageOptions:de,onPageChange:s=>f({page:s===1?null:String(s)}),onPerPageChange:s=>f({per_page:s===E?null:String(s)})}),t.jsx(ee,{open:B,onOpenChange:y,title:e("jobs.batch.confirmCancel",{count:b}),description:e("jobs.batch.confirmCancelDesc"),intent:"danger",confirmLabel:e("jobs.batch.cancel"),onConfirm:F})]})}const xe={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 x({label:e,value:a,tone:i}){return t.jsxs("div",{className:A("rounded-md border bg-surface px-3 py-2",xe[i]),children:[t.jsx("div",{className:"text-xs uppercase tracking-wide text-text-dim",children:e}),t.jsx("div",{className:"text-2xl font-semibold tabular-nums",children:a})]})}function he(e){try{const a=new Date(e);if(Number.isNaN(a.getTime()))return e;const i=new Date;return a.toDateString()===i.toDateString()?a.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit"}):a.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return e}}function pe(e){if(e==null)return"—";if(e<1e3)return`${e}ms`;const a=e/1e3;if(a<60)return`${a.toFixed(1)}s`;const i=Math.floor(a/60),d=Math.round(a-i*60);return`${i}m${d}s`}export{$e as default};
|
|
2
|
-
//# sourceMappingURL=jobs-9YLeiSVG.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{u as c,e as x,j as e,T as d,S as m,f as p,g as u,h,i as b,N as g,c as n,O as y}from"./index-D1ulN_24.js";import"./react-DlP5eolq.js";const f=[{to:"health",i18nKey:"tabs.health"},{to:"topn",i18nKey:"tabs.topn"},{to:"audit",i18nKey:"tabs.audit"}],j=[1,7,30,90];function N(){const{t}=c("observability"),[r,i]=x(),l=Math.max(1,Number(r.get("days"))||7);function o(s){const a=new URLSearchParams(r);s===7?a.delete("days"):a.set("days",String(s)),i(a,{replace:!0})}return e.jsxs("div",{className:"flex min-h-dvh flex-col bg-bg",children:[e.jsx(d,{}),e.jsx("div",{className:"border-b border-border bg-surface px-3 sm:px-4 py-2",children:e.jsxs("div",{className:"mx-auto flex max-w-7xl items-center gap-3",children:[e.jsx("span",{className:"text-sm text-text-dim shrink-0",children:t("window.label")}),e.jsxs(m,{value:String(l),onValueChange:s=>o(Number(s)),children:[e.jsx(p,{className:"w-32",children:e.jsx(u,{})}),e.jsx(h,{children:j.map(s=>e.jsx(b,{value:String(s),children:t("window.days",{count:s})},s))})]})]})}),e.jsx("nav",{className:n("sticky top-0 z-10","flex items-center gap-1","border-b border-border bg-surface","px-3 sm:px-4 py-1","overflow-x-auto"),"aria-label":t("pageTitle"),children:f.map(s=>e.jsx(g,{to:s.to,className:({isActive:a})=>n("shrink-0 rounded-md px-3 py-1.5 text-sm no-underline","transition-colors tap-target",a?"bg-accent-bg text-accent font-medium":"text-text-dim hover:bg-surface-hover hover:text-text"),children:t(s.i18nKey)},s.to))}),e.jsx("main",{className:"flex-1 px-3 sm:px-4 py-4 pb-safe",children:e.jsx(y,{})})]})}export{N as default};
|
|
2
|
-
//# sourceMappingURL=layout-CgeijAPB.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{u as m,j as e,S as d,f as u,g as p,h,i,e as f,T as b,N as j,c as x,O as g}from"./index-D1ulN_24.js";import{u as y}from"./use-memory-BHYuPOc9.js";import"./react-DlP5eolq.js";import"./useQuery-Bt7Ty7IO.js";function _({value:c,onChange:n,className:l}){const{t:r}=m("memory"),{data:o,isLoading:s}=y(),a=o?.users??[];return e.jsxs(d,{value:c||"__placeholder__",onValueChange:t=>n(t==="__placeholder__"?"":t),disabled:s||a.length===0,children:[e.jsx(u,{className:l??"h-9 w-72 max-w-full",children:e.jsx(p,{placeholder:r("userPicker.placeholder")})}),e.jsxs(h,{children:[e.jsx(i,{value:"__placeholder__",disabled:!0,children:r("userPicker.placeholder")}),a.map(t=>e.jsx(i,{value:t.user_key,children:e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-mono text-xs",children:t.user_key}),e.jsx("span",{className:"text-text-dim text-xs",children:r("userPicker.factsLabel",{count:t.fact_count})}),t.has_persona&&e.jsxs("span",{className:"text-accent text-xs",children:["·",r("userPicker.personaTag"),"·"]})]})},t.user_key))]})]})}const v=[{to:"facts",i18nKey:"tabs.facts",mounted:!0},{to:"persona",i18nKey:"tabs.persona",mounted:!0},{to:"vector",i18nKey:"tabs.vector",mounted:!0}];function T(){const{t:c}=m("memory"),[n,l]=f(),r=n.get("user")??"";function o(s){const a=new URLSearchParams(n);s?a.set("user",s):a.delete("user"),l(a,{replace:!0})}return e.jsxs("div",{className:"flex min-h-dvh flex-col bg-bg",children:[e.jsx(b,{}),e.jsx("div",{className:"border-b border-border bg-surface px-3 sm:px-4 py-2",children:e.jsxs("div",{className:"mx-auto flex max-w-7xl items-center gap-3",children:[e.jsx("span",{className:"text-sm text-text-dim shrink-0",children:c("userPicker.label")}),e.jsx(_,{value:r,onChange:o})]})}),e.jsx("nav",{className:x("sticky top-0 z-10","flex items-center gap-1","border-b border-border bg-surface","px-3 sm:px-4 py-1","overflow-x-auto"),"aria-label":c("pageTitle"),children:v.filter(s=>s.mounted).map(s=>e.jsx(j,{to:s.to,className:({isActive:a})=>x("shrink-0 rounded-md px-3 py-1.5 text-sm no-underline","transition-colors tap-target",a?"bg-accent-bg text-accent font-medium":"text-text-dim hover:bg-surface-hover hover:text-text"),children:c(s.i18nKey)},s.to))}),e.jsx("main",{className:"flex-1 px-3 sm:px-4 py-4 pb-safe",children:e.jsx(g,{})})]})}export{T as default};
|
|
2
|
-
//# sourceMappingURL=layout-DviZj3TJ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"llm-BXhp_nmW.js","sources":["../../node_modules/lucide-react/dist/esm/icons/zap.js","../../src/routes/settings/llm.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 Zap = createLucideIcon(\"Zap\", [\n [\n \"path\",\n {\n d: \"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z\",\n key: \"1xq2db\"\n }\n ]\n]);\n\nexport { Zap as default };\n//# sourceMappingURL=zap.js.map\n","/**\n * /settings/llm — native LLM backends + role bindings (Stage 6).\n *\n * Front-end for the `/api/llm/*` REST surface that landed in Stage 4.\n * Operators add an OpenAI-compatible or Anthropic backend, paste an\n * API key, bind it to a role (cheap / evaluator / native-chat), and\n * ping-test the connection — all without hand-editing\n * ~/.agim/config.json.\n *\n * Intentionally minimal styling — focused on doing the job; matches\n * the existing settings pages' shadcn look without bespoke chrome.\n */\n\nimport { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { toast } from 'sonner'\nimport { CheckCircle2, Loader2, Plus, RefreshCcw, Trash2, Zap } from 'lucide-react'\n\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { Input } from '@/components/ui/input'\nimport { Label } from '@/components/ui/label'\nimport {\n Select, SelectContent, SelectItem, SelectTrigger, SelectValue,\n} from '@/components/ui/select'\nimport {\n Table, TableBody, TableCell, TableHead, TableHeader, TableRow,\n} from '@/components/ui/table'\nimport {\n useLlmList, useLlmAddBackend, useLlmRemoveBackend, useLlmPutRoles, useLlmPing,\n} from '@/hooks/use-llm-admin'\n\nconst KNOWN_ROLES = ['cheap', 'evaluator', 'native-chat'] as const\nconst UNBIND_SENTINEL = '__unbind__'\n\ninterface ProviderPreset {\n provider: 'openai-compat' | 'anthropic'\n baseUrl: string\n modelHint: string\n}\n\nconst PRESET_KEYS = ['deepseek', 'moonshot', 'zhipu', 'openai', 'anthropic', 'custom'] as const\n\nconst PRESETS: ProviderPreset[] = [\n { provider: 'openai-compat',\n baseUrl: 'https://api.deepseek.com/v1', modelHint: 'deepseek-chat' },\n { provider: 'openai-compat',\n baseUrl: 'https://api.moonshot.cn/v1', modelHint: 'moonshot-v1-8k' },\n { provider: 'openai-compat',\n baseUrl: 'https://open.bigmodel.cn/api/paas/v4', modelHint: 'glm-4-air' },\n { provider: 'openai-compat',\n baseUrl: 'https://api.openai.com/v1', modelHint: 'gpt-4o-mini' },\n { provider: 'anthropic',\n // No trailing /v1: the Anthropic provider appends `/v1/messages` itself.\n baseUrl: 'https://api.anthropic.com', modelHint: 'claude-3-5-sonnet-20241022' },\n { provider: 'openai-compat',\n baseUrl: '', modelHint: '' },\n]\n\nexport default function SettingsLlmRoute(): JSX.Element {\n const { t } = useTranslation(['settings', 'common'])\n const listQuery = useLlmList()\n return (\n <div className=\"mx-auto flex max-w-5xl flex-col gap-6\">\n <header className=\"flex items-center gap-3\">\n <h1 className=\"text-xl font-semibold\">{t('llm.title')}</h1>\n <Button\n variant=\"ghost\" size=\"sm\" className=\"ml-auto\"\n onClick={() => void listQuery.refetch()}\n disabled={listQuery.isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n {listQuery.isFetching\n ? <Loader2 className=\"h-4 w-4 animate-spin\" />\n : <RefreshCcw className=\"h-4 w-4\" />}\n <span className=\"hidden sm:inline\">{t('llm.refresh')}</span>\n </Button>\n </header>\n <p className=\"text-sm text-text-dim\">{t('llm.subtitle')}</p>\n\n {listQuery.isLoading ? (\n <div className=\"h-64 rounded-md bg-surface-2 animate-pulse\" />\n ) : (\n <>\n <BackendsCard data={listQuery.data} />\n <RolesCard data={listQuery.data} />\n <AddBackendCard />\n </>\n )}\n </div>\n )\n}\n\n/* ─────────────── Backends list ─────────────── */\n\nfunction BackendsCard({ data }: { data: ReturnType<typeof useLlmList>['data'] }): JSX.Element {\n const { t } = useTranslation(['settings', 'common'])\n const removeBackend = useLlmRemoveBackend()\n const ping = useLlmPing()\n const [pingResults, setPingResults] = useState<Record<string, string>>({})\n\n async function onRemove(name: string): Promise<void> {\n if (!confirm(t('llm.removeConfirm', { name }))) return\n try {\n const r = await removeBackend.mutateAsync(name)\n toast.success(t('llm.removedToast', { count: r.removedRoles }))\n } catch (err) {\n toast.error(((err as Error)?.message ?? String(err)))\n }\n }\n\n async function onPing(name: string): Promise<void> {\n setPingResults((m) => ({ ...m, [name]: t('llm.pinging') }))\n try {\n const r = await ping.mutateAsync(name)\n const msg = r.ok\n ? `✓ ${r.durationMs}ms · tokens ${r.tokensIn}→${r.tokensOut}`\n : `✗ ${r.error}`\n setPingResults((m) => ({ ...m, [name]: msg }))\n } catch (err) {\n setPingResults((m) => ({ ...m, [name]: `✗ ${((err as Error)?.message ?? String(err))}` }))\n }\n }\n\n const rows = data?.backends ?? []\n if (rows.length === 0) {\n return (\n <section className=\"rounded-md border border-border bg-surface p-6 text-center text-sm text-text-dim\">\n {t('llm.backendsEmpty')}\n </section>\n )\n }\n\n return (\n <section className=\"rounded-md border border-border bg-surface\">\n <header className=\"border-b border-border px-4 py-3\">\n <h2 className=\"text-sm font-semibold\">{t('llm.backendsTitle', { count: rows.length })}</h2>\n </header>\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>{t('llm.col.name')}</TableHead>\n <TableHead>{t('llm.col.provider')}</TableHead>\n <TableHead>{t('llm.col.model')}</TableHead>\n <TableHead>{t('llm.col.baseUrl')}</TableHead>\n <TableHead>{t('llm.col.apiKey')}</TableHead>\n <TableHead>{t('llm.col.actions')}</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {rows.map((b) => {\n const keyBadge = b.secret.source === 'none'\n ? <Badge variant=\"outline\">{t('llm.secretMissing')}</Badge>\n : <Badge variant=\"success\">{b.secret.source}</Badge>\n return (\n <TableRow key={b.name}>\n <TableCell className=\"font-mono text-xs\">{b.name}</TableCell>\n <TableCell>{b.provider}</TableCell>\n <TableCell className=\"font-mono text-xs\">{b.model}</TableCell>\n <TableCell className=\"break-all font-mono text-[11px] text-text-dim\">{b.baseUrl ?? '—'}</TableCell>\n <TableCell>{keyBadge}</TableCell>\n <TableCell className=\"flex flex-col gap-1 sm:flex-row sm:items-center\">\n <Button\n variant=\"ghost\" size=\"sm\"\n onClick={() => void onPing(b.name)}\n disabled={ping.isPending || b.secret.source === 'none'}\n title={b.secret.source === 'none' ? t('llm.setKeyFirst') : t('llm.pingHint')}\n >\n <Zap className=\"h-4 w-4\" />\n <span>{t('llm.ping')}</span>\n </Button>\n <Button\n variant=\"ghost\" size=\"sm\"\n onClick={() => void onRemove(b.name)}\n disabled={removeBackend.isPending}\n className=\"text-danger hover:text-danger\"\n >\n <Trash2 className=\"h-4 w-4\" />\n <span className=\"hidden sm:inline\">{t('llm.remove')}</span>\n </Button>\n {pingResults[b.name] && (\n <span className=\"ml-2 text-[11px] text-text-dim\">{pingResults[b.name]}</span>\n )}\n </TableCell>\n </TableRow>\n )\n })}\n </TableBody>\n </Table>\n </section>\n )\n}\n\n/* ─────────────── Role bindings ─────────────── */\n\nfunction RolesCard({ data }: { data: ReturnType<typeof useLlmList>['data'] }): JSX.Element {\n const { t } = useTranslation(['settings', 'common'])\n const putRoles = useLlmPutRoles()\n const backendNames = (data?.backends ?? []).map((b) => b.name)\n const current = data?.roles ?? {}\n\n async function onChangeRole(role: string, value: string): Promise<void> {\n const next: Record<string, string | null> = {\n [role]: value === UNBIND_SENTINEL ? null : value,\n }\n try {\n await putRoles.mutateAsync(next)\n toast.success(t('llm.roleUpdated', { role }))\n } catch (err) {\n toast.error(((err as Error)?.message ?? String(err)))\n }\n }\n\n return (\n <section className=\"rounded-md border border-border bg-surface\">\n <header className=\"border-b border-border px-4 py-3\">\n <h2 className=\"text-sm font-semibold\">{t('llm.rolesTitle')}</h2>\n </header>\n <div className=\"grid grid-cols-1 gap-3 p-4 sm:grid-cols-3\">\n {KNOWN_ROLES.map((role) => (\n <div key={role} className=\"flex flex-col gap-1\">\n <Label className=\"text-xs font-medium\">{role}</Label>\n <Select\n value={current[role] ?? UNBIND_SENTINEL}\n onValueChange={(v) => void onChangeRole(role, v)}\n disabled={backendNames.length === 0 || putRoles.isPending}\n >\n <SelectTrigger className=\"font-mono text-xs\">\n <SelectValue placeholder={t('llm.unset')} />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={UNBIND_SENTINEL}>{t('llm.unbound')}</SelectItem>\n {backendNames.map((n) => (\n <SelectItem key={n} value={n}>{n}</SelectItem>\n ))}\n </SelectContent>\n </Select>\n <p className=\"text-[11px] text-text-dim\">\n {t(`llm.roleHint.${role}`)}\n </p>\n </div>\n ))}\n </div>\n </section>\n )\n}\n\n/* ─────────────── Add backend form ─────────────── */\n\nfunction AddBackendCard(): JSX.Element {\n const { t } = useTranslation(['settings', 'common'])\n const addBackend = useLlmAddBackend()\n const [presetIdx, setPresetIdx] = useState(0)\n const [name, setName] = useState('')\n const [baseUrl, setBaseUrl] = useState(PRESETS[0]?.baseUrl ?? '')\n const [model, setModel] = useState(PRESETS[0]?.modelHint ?? '')\n const [apiKey, setApiKey] = useState('')\n\n function onPickPreset(idx: number): void {\n setPresetIdx(idx)\n const p = PRESETS[idx]\n if (!p) return\n setBaseUrl(p.baseUrl)\n setModel(p.modelHint)\n }\n\n async function onSubmit(e: React.FormEvent): Promise<void> {\n e.preventDefault()\n const p = PRESETS[presetIdx]\n if (!p) { toast.error(t('llm.invalidPreset')); return }\n if (!name.trim()) { toast.error(t('llm.nameRequired')); return }\n if (!baseUrl.trim()) { toast.error(t('llm.baseUrlRequired')); return }\n if (!model.trim()) { toast.error(t('llm.modelRequired')); return }\n try {\n await addBackend.mutateAsync({\n name: name.trim(),\n provider: p.provider,\n baseUrl: baseUrl.trim(),\n model: model.trim(),\n ...(apiKey.trim() ? { apiKey: apiKey.trim() } : {}),\n })\n toast.success(\n apiKey.trim()\n ? t('llm.addedWithKey', { name: name.trim() })\n : t('llm.addedNoKey', { name: name.trim() }),\n )\n setName(''); setApiKey('')\n } catch (err) {\n toast.error(((err as Error)?.message ?? String(err)))\n }\n }\n\n return (\n <section className=\"rounded-md border border-border bg-surface\">\n <header className=\"border-b border-border px-4 py-3\">\n <h2 className=\"text-sm font-semibold\">{t('llm.addTitle')}</h2>\n </header>\n <form onSubmit={(e) => void onSubmit(e)} className=\"grid grid-cols-1 gap-3 p-4 sm:grid-cols-2\">\n <div>\n <Label className=\"text-xs font-medium\">{t('llm.preset')}</Label>\n <Select value={String(presetIdx)} onValueChange={(v) => onPickPreset(Number(v))}>\n <SelectTrigger><SelectValue /></SelectTrigger>\n <SelectContent>\n {PRESETS.map((_p, i) => (\n <SelectItem key={PRESET_KEYS[i]} value={String(i)}>\n {t(`llm.presets.${PRESET_KEYS[i]}`)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div>\n <Label className=\"text-xs font-medium\">{t('llm.name')}</Label>\n <Input\n value={name} onChange={(e) => setName(e.target.value)}\n placeholder={t('llm.namePlaceholder')}\n className=\"font-mono text-xs\"\n />\n </div>\n <div className=\"sm:col-span-2\">\n <Label className=\"text-xs font-medium\">{t('llm.baseUrl')}</Label>\n <Input\n value={baseUrl} onChange={(e) => setBaseUrl(e.target.value)}\n placeholder={t('llm.baseUrlPlaceholder')}\n className=\"font-mono text-xs\"\n />\n </div>\n <div>\n <Label className=\"text-xs font-medium\">{t('llm.model')}</Label>\n <Input\n value={model} onChange={(e) => setModel(e.target.value)}\n placeholder={t('llm.modelPlaceholder')}\n className=\"font-mono text-xs\"\n />\n </div>\n <div>\n <Label className=\"text-xs font-medium\">{t('llm.apiKeyOptional')}</Label>\n <Input\n type=\"password\"\n value={apiKey} onChange={(e) => setApiKey(e.target.value)}\n placeholder={t('llm.apiKeyPlaceholder')}\n className=\"font-mono text-xs\"\n autoComplete=\"off\"\n />\n </div>\n <div className=\"sm:col-span-2 flex\">\n <Button\n type=\"submit\"\n disabled={addBackend.isPending}\n className=\"ml-auto\"\n >\n {addBackend.isPending ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : <Plus className=\"h-4 w-4\" />}\n {t('llm.addBackend')}\n </Button>\n </div>\n </form>\n </section>\n )\n}\n\n/* helper — toast tag passthrough */\nfunction _unused(): typeof CheckCircle2 { return CheckCircle2 }\nvoid _unused\n"],"names":["Zap","createLucideIcon","KNOWN_ROLES","UNBIND_SENTINEL","PRESET_KEYS","PRESETS","SettingsLlmRoute","t","useTranslation","listQuery","useLlmList","jsxs","jsx","Button","Loader2","RefreshCcw","Fragment","BackendsCard","RolesCard","AddBackendCard","data","removeBackend","useLlmRemoveBackend","ping","useLlmPing","pingResults","setPingResults","useState","onRemove","name","r","toast","err","onPing","m","msg","rows","Table","TableHeader","TableRow","TableHead","TableBody","b","keyBadge","Badge","TableCell","Trash2","putRoles","useLlmPutRoles","backendNames","current","onChangeRole","role","value","next","Label","Select","v","SelectTrigger","SelectValue","SelectContent","SelectItem","n","addBackend","useLlmAddBackend","presetIdx","setPresetIdx","setName","baseUrl","setBaseUrl","model","setModel","apiKey","setApiKey","onPickPreset","idx","p","onSubmit","e","_p","i","Input","Plus"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./index-D1ulN_24.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 r=e("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);export{r as L};
|
|
7
|
-
//# sourceMappingURL=loader-circle-Bgi0H_iI.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{u as C,j as e,B as b,k as P,l as N,m as R,L as T,I as S}from"./index-D1ulN_24.js";import{r as f}from"./react-DlP5eolq.js";import{D as q,a as E,b as $,c as Q,d as B}from"./dialog-xeyu8dCf.js";import{b as O,c as z,d as L,e as H}from"./use-settings-Bx0ZTOsd.js";import{L as I}from"./loader-circle-Bgi0H_iI.js";import{R as W}from"./refresh-ccw-MHrCmmSv.js";import{X as A}from"./x-DXACg96C.js";import{S as J}from"./save-DhFewuZL.js";import{Q as M}from"./qr-code-BVHNR5Zs.js";import"./useQuery-Bt7Ty7IO.js";function w(s){const i=new Set(s?.messengers??[]);return{"wechat-ilink":{enabled:i.has("wechat-ilink")},telegram:{enabled:i.has("telegram"),telegram:{...s?.telegram??{}}},feishu:{enabled:i.has("feishu"),feishu:{...s?.feishu??{}}},dingtalk:{enabled:i.has("dingtalk"),dingtalk:{...s?.dingtalk??{}}},discord:{enabled:i.has("discord"),discord:{...s?.discord??{}}}}}function _(s,i){const n=[];for(const d of Object.keys(s))s[d].enabled&&n.push(d);const l={messengers:n,...Object.fromEntries(Object.entries(i).filter(([d])=>!["messengers","telegram","feishu","dingtalk","discord"].includes(d)))};return s.telegram.enabled&&s.telegram.telegram&&(l.telegram=s.telegram.telegram),s.feishu.enabled&&s.feishu.feishu&&(l.feishu=s.feishu.feishu),s.dingtalk.enabled&&s.dingtalk.dingtalk&&(l.dingtalk=s.dingtalk.dingtalk),s.discord.enabled&&s.discord.discord&&(l.discord=s.discord.discord),l}function te(){const{t:s}=C(["settings","common"]),i=O(),n=z(),[l,d]=f.useState(()=>w(i.data)),[g,x]=f.useState(!1);f.useEffect(()=>{g||i.data&&(d(w(i.data)),x(!0))},[i.data,g]);const m=i.data,t=f.useMemo(()=>m?JSON.stringify(w(m))!==JSON.stringify(l):!1,[m,l]),[r,o]=f.useState(!1),p=new Set(m?.features?.blacklistedPlatforms??[]),h=a=>p.has(a);function c(a,v){d(F=>({...F,[a]:{...F[a],...v}}))}async function k(){if(m)try{await n.mutateAsync(_(l,m)),N.success(s("messengers.savedToast")),x(!1)}catch(a){N.error(R(a,s).message)}}function D(){m&&d(w(m))}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("messengers.title")}),e.jsxs(b,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>i.refetch(),disabled:i.isFetching,"aria-label":s("actions.refresh",{ns:"common"}),children:[i.isFetching?e.jsx(I,{className:"h-4 w-4 animate-spin"}):e.jsx(W,{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("messengers.subtitle")})]}),e.jsx("div",{className:"flex flex-wrap items-center gap-2",children:t?e.jsxs(e.Fragment,{children:[e.jsx(P,{variant:"info",children:s("messengers.dirtyHint")}),e.jsxs(b,{type:"button",variant:"secondary",size:"sm",onClick:D,disabled:n.isPending,children:[e.jsx(A,{className:"h-4 w-4"}),s("messengers.discardAll")]}),e.jsxs(b,{type:"button",size:"sm",onClick:()=>void k(),disabled:n.isPending,children:[n.isPending?e.jsx(I,{className:"h-4 w-4 animate-spin"}):e.jsx(J,{className:"h-4 w-4"}),n.isPending?s("messengers.saving"):s("messengers.saveAll")]})]}):e.jsx("span",{className:"text-xs text-text-muted",children:s("env.noChanges")})}),i.isLoading?e.jsx("div",{className:"h-96 rounded-md bg-surface-2 animate-pulse"}):m?e.jsxs("div",{className:"flex flex-col gap-3",children:[h("wechat-ilink")?null:e.jsx(y,{slot:"wechat-ilink",label:s("messengers.platform.wechat"),hint:s("messengers.hint.wechat"),enabled:l["wechat-ilink"].enabled,onToggle:a=>c("wechat-ilink",{enabled:a}),children:e.jsxs(b,{type:"button",variant:"secondary",size:"sm",onClick:()=>o(!0),children:[e.jsx(M,{className:"h-4 w-4"}),s("messengers.scanQr")]})}),m.features?.globalIm&&!h("telegram")?e.jsxs(y,{slot:"telegram",label:s("messengers.platform.telegram"),hint:s("messengers.hint.telegram"),enabled:l.telegram.enabled,onToggle:a=>c("telegram",{enabled:a}),children:[e.jsx(u,{id:"tg-token",label:s("messengers.fields.botToken"),value:l.telegram.telegram?.botToken??"",type:"password",onChange:a=>c("telegram",{telegram:{...l.telegram.telegram,botToken:a}})}),e.jsx(u,{id:"tg-channel",label:s("messengers.fields.channelId"),value:l.telegram.telegram?.channelId??"",onChange:a=>c("telegram",{telegram:{...l.telegram.telegram,channelId:a}})})]}):null,h("feishu")?null:e.jsxs(y,{slot:"feishu",label:s("messengers.platform.feishu"),hint:s("messengers.hint.feishu"),enabled:l.feishu.enabled,onToggle:a=>c("feishu",{enabled:a}),children:[e.jsx(u,{id:"fs-appid",label:s("messengers.fields.appId"),value:l.feishu.feishu?.appId??"",onChange:a=>c("feishu",{feishu:{...l.feishu.feishu,appId:a}})}),e.jsx(u,{id:"fs-secret",label:s("messengers.fields.appSecret"),value:l.feishu.feishu?.appSecret??"",type:"password",onChange:a=>c("feishu",{feishu:{...l.feishu.feishu,appSecret:a}})}),e.jsx(u,{id:"fs-channel",label:s("messengers.fields.channelId"),value:l.feishu.feishu?.channelId??"",onChange:a=>c("feishu",{feishu:{...l.feishu.feishu,channelId:a}})})]}),h("dingtalk")?null:e.jsxs(y,{slot:"dingtalk",label:s("messengers.platform.dingtalk"),hint:s("messengers.hint.dingtalk"),enabled:l.dingtalk.enabled,onToggle:a=>c("dingtalk",{enabled:a}),children:[e.jsx(u,{id:"dt-cid",label:s("messengers.fields.clientId"),value:l.dingtalk.dingtalk?.clientId??"",onChange:a=>c("dingtalk",{dingtalk:{...l.dingtalk.dingtalk,clientId:a}})}),e.jsx(u,{id:"dt-secret",label:s("messengers.fields.clientSecret"),value:l.dingtalk.dingtalk?.clientSecret??"",type:"password",onChange:a=>c("dingtalk",{dingtalk:{...l.dingtalk.dingtalk,clientSecret:a}})}),e.jsx(u,{id:"dt-channel",label:s("messengers.fields.channelId"),value:l.dingtalk.dingtalk?.channelId??"",onChange:a=>c("dingtalk",{dingtalk:{...l.dingtalk.dingtalk,channelId:a}})}),e.jsx(j,{id:"dt-dm-policy",label:s("messengers.dingtalk.dmPolicy"),value:l.dingtalk.dingtalk?.dmPolicy??"open",onChange:a=>c("dingtalk",{dingtalk:{...l.dingtalk.dingtalk,dmPolicy:a}}),options:[{value:"open",label:s("messengers.dingtalk.policy.open")},{value:"pairing",label:s("messengers.dingtalk.policy.pairing")},{value:"allowlist",label:s("messengers.dingtalk.policy.allowlist")}]}),e.jsx(j,{id:"dt-group-policy",label:s("messengers.dingtalk.groupPolicy"),value:l.dingtalk.dingtalk?.groupPolicy??"open",onChange:a=>c("dingtalk",{dingtalk:{...l.dingtalk.dingtalk,groupPolicy:a}}),options:[{value:"open",label:s("messengers.dingtalk.policy.open")},{value:"allowlist",label:s("messengers.dingtalk.policy.allowlist")},{value:"disabled",label:s("messengers.dingtalk.policy.disabled")}]}),e.jsx(u,{id:"dt-allow-from",label:s("messengers.dingtalk.allowFrom"),value:(l.dingtalk.dingtalk?.allowFrom??[]).join(","),onChange:a=>c("dingtalk",{dingtalk:{...l.dingtalk.dingtalk,allowFrom:a.split(",").map(v=>v.trim()).filter(Boolean)}})}),e.jsx(u,{id:"dt-group-allow-from",label:s("messengers.dingtalk.groupAllowFrom"),value:(l.dingtalk.dingtalk?.groupAllowFrom??[]).join(","),onChange:a=>c("dingtalk",{dingtalk:{...l.dingtalk.dingtalk,groupAllowFrom:a.split(",").map(v=>v.trim()).filter(Boolean)}})}),e.jsx(j,{id:"dt-ack",label:s("messengers.dingtalk.ackReaction"),value:l.dingtalk.dingtalk?.ackReaction??"off",onChange:a=>c("dingtalk",{dingtalk:{...l.dingtalk.dingtalk,ackReaction:a}}),options:[{value:"off",label:s("messengers.dingtalk.ack.off")},{value:"emoji",label:s("messengers.dingtalk.ack.emoji")},{value:"kaomoji",label:s("messengers.dingtalk.ack.kaomoji")}]}),e.jsx(V,{accounts:l.dingtalk.dingtalk?.accounts??{},onChange:a=>c("dingtalk",{dingtalk:{...l.dingtalk.dingtalk,accounts:a}})})]}),m.features?.globalIm&&!h("discord")?e.jsxs(y,{slot:"discord",label:s("messengers.platform.discord"),hint:s("messengers.hint.discord"),enabled:l.discord.enabled,onToggle:a=>c("discord",{enabled:a}),children:[e.jsx(u,{id:"dc-token",label:s("messengers.fields.botToken"),value:l.discord.discord?.botToken??"",type:"password",onChange:a=>c("discord",{discord:{...l.discord.discord,botToken:a}})}),e.jsx(u,{id:"dc-channel",label:s("messengers.fields.channelId"),value:l.discord.discord?.channelId??"",onChange:a=>c("discord",{discord:{...l.discord.discord,channelId:a}})})]}):null]}):null,e.jsx(U,{open:r,onOpenChange:o,onConfirmed:()=>{i.refetch(),x(!1)}})]})}function y({label:s,hint:i,enabled:n,onToggle:l,children:d}){const{t:g}=C("settings");return e.jsxs("div",{className:"rounded-md border border-border bg-surface p-4",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-medium text-text",children:s}),e.jsx(P,{variant:n?"success":"outline",children:g(n?"messengers.enabled":"messengers.disabled")})]}),e.jsx("p",{className:"mt-1 text-xs text-text-dim",children:i})]}),e.jsx("label",{className:"inline-flex items-center gap-2 text-sm",children:e.jsx("input",{type:"checkbox",checked:n,onChange:x=>l(x.target.checked),className:"h-4 w-4 accent-accent cursor-pointer"})})]}),n&&d&&e.jsx("div",{className:"mt-3 flex flex-col gap-2",children:d})]})}function u({id:s,label:i,value:n,onChange:l,type:d="text"}){return e.jsxs("div",{className:"grid grid-cols-1 gap-1 sm:grid-cols-[180px_1fr] sm:items-center sm:gap-2",children:[e.jsx(T,{htmlFor:s,className:"text-xs text-text-dim",children:i}),e.jsx(S,{id:s,type:d,value:n,onChange:g=>l(g.target.value),autoComplete:"off",className:"font-mono text-xs"})]})}function j({id:s,label:i,value:n,onChange:l,options:d}){return e.jsxs("div",{className:"grid grid-cols-1 gap-1 sm:grid-cols-[180px_1fr] sm:items-center sm:gap-2",children:[e.jsx(T,{htmlFor:s,className:"text-xs text-text-dim",children:i}),e.jsx("select",{id:s,value:n,onChange:g=>l(g.target.value),className:"rounded-md border border-input bg-background px-2 py-1 text-xs",children:d.map(g=>e.jsx("option",{value:g.value,children:g.label},g.value))})]})}function U({open:s,onOpenChange:i,onConfirmed:n}){const{t:l}=C(["settings","common"]),d=L(),[g,x]=f.useState(null),[m,t]=f.useState(null),[r,o]=f.useState(null);f.useEffect(()=>{if(!s){x(null),t(null),o(null);return}let c=!0;return d.mutateAsync().then(k=>{c&&(t(k.qrImage),x(k.qrToken))}).catch(k=>{c&&o(k instanceof Error?k.message:String(k))}),()=>{c=!1}},[s]);const h=H(s?g:null).data?.status;return f.useEffect(()=>{h==="confirmed"&&(N.success(l("messengers.qr.confirmed")),n(),i(!1)),h==="expired"&&N.error(l("messengers.qr.expired"))},[h]),e.jsx(q,{open:s,onOpenChange:i,children:e.jsxs(E,{children:[e.jsxs($,{children:[e.jsx(Q,{children:l("messengers.qr.title")}),e.jsx(B,{children:l("messengers.qr.description")})]}),e.jsx("div",{className:"flex flex-col items-center gap-3",children:d.isPending&&!m?e.jsxs(e.Fragment,{children:[e.jsx(I,{className:"h-8 w-8 animate-spin text-text-dim"}),e.jsx("p",{className:"text-sm text-text-dim",children:l("messengers.qr.starting")})]}):r?e.jsxs("p",{className:"text-sm text-danger",children:[l("messengers.qr.loadFailed"),": ",r]}):m?e.jsxs(e.Fragment,{children:[e.jsx("img",{src:m,alt:l("messengers.qr.title"),className:"rounded-md border border-border"}),h==="expired"?e.jsx("p",{className:"text-xs text-danger",children:l("messengers.qr.expired")}):e.jsx("p",{className:"text-xs text-text-dim",children:h?`· ${h} ·`:""})]}):null})]})})}function V({accounts:s,onChange:i}){const{t:n}=C(["settings","common"]),l=Object.entries(s),d=(t,r)=>{i({...s,[t]:{...s[t],...r}})},g=t=>{const r={...s};delete r[t],i(r)},x=(t,r)=>{if(!r||r===t)return;if(s[r]){N.error(n("messengers.dingtalk.accountRenameCollision",{id:r}));return}const o={};for(const[p,h]of Object.entries(s))o[p===t?r:p]=h;i(o)},m=()=>{let t=l.length+1,r=`account-${t}`;for(;s[r];)t+=1,r=`account-${t}`;i({...s,[r]:{enabled:!0}})};return e.jsxs("div",{className:"mt-3 border-t border-input pt-3",children:[e.jsxs("div",{className:"mb-2 flex items-center justify-between",children:[e.jsx("div",{className:"text-xs font-semibold text-text-dim",children:n("messengers.dingtalk.accountsTitle")}),e.jsxs(b,{type:"button",size:"sm",variant:"outline",onClick:m,children:["+ ",n("messengers.dingtalk.addAccount")]})]}),l.length===0?e.jsx("div",{className:"text-xs text-text-dim italic",children:n("messengers.dingtalk.accountsEmpty")}):e.jsx("div",{className:"space-y-3",children:l.map(([t,r])=>e.jsxs("div",{className:"rounded-md border border-input p-2",children:[e.jsxs("div",{className:"mb-2 flex items-center gap-2",children:[e.jsx(S,{id:`acct-id-${t}`,defaultValue:t,onBlur:o=>x(t,o.target.value.trim()),className:"font-mono text-xs w-40",placeholder:"account-id"}),e.jsx(S,{id:`acct-name-${t}`,value:r.name??"",onChange:o=>d(t,{name:o.target.value}),className:"text-xs flex-1",placeholder:n("messengers.dingtalk.accountName")}),e.jsxs("label",{className:"flex items-center gap-1 text-xs",children:[e.jsx("input",{type:"checkbox",checked:r.enabled!==!1,onChange:o=>d(t,{enabled:o.target.checked})}),n("messengers.enabled")]}),e.jsx(b,{type:"button",size:"sm",variant:"ghost",onClick:()=>g(t),className:"text-danger",children:e.jsx(A,{className:"size-4"})})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(u,{id:`acct-cid-${t}`,label:n("messengers.fields.clientId"),value:r.clientId??"",onChange:o=>d(t,{clientId:o})}),e.jsx(u,{id:`acct-secret-${t}`,label:n("messengers.fields.clientSecret"),value:r.clientSecret??"",type:"password",onChange:o=>d(t,{clientSecret:o})}),e.jsx(j,{id:`acct-dm-${t}`,label:n("messengers.dingtalk.dmPolicy"),value:r.dmPolicy??"open",onChange:o=>d(t,{dmPolicy:o}),options:[{value:"open",label:n("messengers.dingtalk.policy.open")},{value:"pairing",label:n("messengers.dingtalk.policy.pairing")},{value:"allowlist",label:n("messengers.dingtalk.policy.allowlist")}]}),e.jsx(j,{id:`acct-group-${t}`,label:n("messengers.dingtalk.groupPolicy"),value:r.groupPolicy??"open",onChange:o=>d(t,{groupPolicy:o}),options:[{value:"open",label:n("messengers.dingtalk.policy.open")},{value:"allowlist",label:n("messengers.dingtalk.policy.allowlist")},{value:"disabled",label:n("messengers.dingtalk.policy.disabled")}]}),e.jsx(u,{id:`acct-allow-${t}`,label:n("messengers.dingtalk.allowFrom"),value:(r.allowFrom??[]).join(","),onChange:o=>d(t,{allowFrom:o.split(",").map(p=>p.trim()).filter(Boolean)})}),e.jsx(u,{id:`acct-gallow-${t}`,label:n("messengers.dingtalk.groupAllowFrom"),value:(r.groupAllowFrom??[]).join(","),onChange:o=>d(t,{groupAllowFrom:o.split(",").map(p=>p.trim()).filter(Boolean)})}),e.jsx(j,{id:`acct-ack-${t}`,label:n("messengers.dingtalk.ackReaction"),value:r.ackReaction??"off",onChange:o=>d(t,{ackReaction:o}),options:[{value:"off",label:n("messengers.dingtalk.ack.off")},{value:"emoji",label:n("messengers.dingtalk.ack.emoji")},{value:"kaomoji",label:n("messengers.dingtalk.ack.kaomoji")}]})]})]},t))}),e.jsx("div",{className:"mt-1 text-xs text-text-dim",children:n("messengers.dingtalk.accountsHint")})]})}export{te as default};
|
|
2
|
-
//# sourceMappingURL=messengers-CkfyROty.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{u as p,e as T,j as e,B as u,k as j,m as N,l as m,L as F,c as z}from"./index-D1ulN_24.js";import{r as y}from"./react-DlP5eolq.js";import{E as P}from"./empty-state-D8kx-FwO.js";import{C as A}from"./confirm-dialog-CMWuyC3w.js";import{d as R,e as U,f as _,g as M,h as J}from"./use-memory-BHYuPOc9.js";import{B as D}from"./brain-V9r2NcZc.js";import{L as x}from"./loader-circle-Bgi0H_iI.js";import{R as O}from"./refresh-ccw-MHrCmmSv.js";import{P as Q}from"./play-BGXpdCxa.js";import{C as X}from"./circle-check-big-Cf2odn4o.js";import{C as q}from"./circle-x-CMJqo4Pi.js";import{T as G}from"./trash-2-CT_B0mSH.js";import"./dialog-xeyu8dCf.js";import"./x-DXACg96C.js";import"./useQuery-Bt7Ty7IO.js";function le(){const{t}=p(["memory","common"]),[s]=T(),r=s.get("user")??"";return r?e.jsx(H,{userKey:r}):e.jsx("div",{className:"mx-auto max-w-3xl",children:e.jsx(P,{icon:e.jsx(D,{}),title:t("noUserSelected.title"),description:t("noUserSelected.description")})})}function H({userKey:t}){const{t:s}=p(["memory","common"]),r=R(t),n=r.data,o=U(),a=_().data?.jobs[0],i=M(),f=J(),[E,h]=y.useState(!1),[d,g]=y.useState(n?.summary??"");y.useEffect(()=>{g(n?.summary??"")},[n?.summary]);const b=d!==(n?.summary??"");async function w(){const c=d.trim();if(c)try{await i.mutateAsync({user_key:t,body:{summary:c}}),m.success(s("persona.saved"))}catch(l){const{message:B}=N(l,s);m.error(B)}}async function L(){try{await f.mutateAsync(t),m.success(s("common:actions.delete"))}catch(c){const{message:l}=N(c,s);throw m.error(l),c}}async function k(){try{await o.mutateAsync()}catch(c){const{message:l}=N(c,s);m.error(l)}}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("persona.title")}),e.jsxs(u,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>r.refetch(),disabled:r.isFetching,"aria-label":s("actions.refresh",{ns:"common"}),children:[r.isFetching?e.jsx(x,{className:"h-4 w-4 animate-spin"}):e.jsx(O,{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("persona.subtitle")})]}),e.jsxs("div",{className:"rounded-md border border-border bg-surface p-3",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsx("span",{className:"font-medium text-sm text-text",children:s("persona.consolidate.trigger")}),e.jsx(I,{job:a}),e.jsxs(u,{variant:"default",size:"sm",onClick:()=>void k(),disabled:o.isPending||a?.phase==="running",className:"ml-auto",children:[o.isPending?e.jsx(x,{className:"h-4 w-4 animate-spin"}):e.jsx(Q,{className:"h-4 w-4"}),o.isPending?s("persona.consolidate.triggering"):s("persona.consolidate.trigger")]})]}),a?.phase==="done"&&(a.result.users!=null||a.result.updated!=null)&&e.jsx("p",{className:"mt-2 text-xs text-text-dim",children:s("persona.consolidate.result",{users:a.result.users??0,updated:a.result.updated??0})}),a?.phase==="failed"&&a.result.error&&e.jsx("p",{className:"mt-2 text-xs text-danger",children:a.result.error})]}),r.isLoading?e.jsx("div",{className:"h-48 w-full rounded-md bg-surface-2 animate-pulse"}):n?e.jsxs(e.Fragment,{children:[n.updated_at>0&&e.jsx("div",{className:"text-xs text-text-dim",children:s("persona.updated",{at:S(n.updated_at)})}),e.jsx(C,{draft:d,onChange:g,onSave:()=>void w(),saving:i.isPending,dirty:b,canDelete:!0,onDelete:()=>h(!0)})]}):e.jsxs(e.Fragment,{children:[e.jsx(P,{icon:e.jsx(D,{}),title:s("persona.empty.title"),description:s("persona.empty.description")}),e.jsx(C,{draft:d,onChange:g,onSave:()=>void w(),saving:i.isPending,dirty:b,canDelete:!1,onDelete:()=>h(!0)})]}),e.jsx(A,{open:E,onOpenChange:h,title:s("persona.confirmDelete"),description:s("persona.confirmDeleteDesc"),intent:"danger",confirmLabel:s("persona.delete"),onConfirm:L})]})}function C({draft:t,onChange:s,onSave:r,saving:n,dirty:o,canDelete:v,onDelete:a}){const{t:i}=p("memory");return e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx(F,{htmlFor:"persona-editor",className:"text-sm text-text-dim",children:i("persona.editorLabel")}),e.jsx("textarea",{id:"persona-editor",value:t,onChange:f=>s(f.target.value),rows:12,className:z("w-full resize-y rounded-md border bg-bg px-3 py-2","font-mono text-sm leading-6","focus:outline-none focus:ring-2 focus:ring-accent focus:ring-offset-1 focus:ring-offset-bg",o?"border-accent":"border-border")}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[v&&e.jsxs(u,{type:"button",variant:"outline",size:"sm",onClick:a,children:[e.jsx(G,{className:"h-3 w-3"}),i("persona.delete")]}),e.jsxs(u,{type:"button",size:"sm",className:"ml-auto",disabled:!o||n||t.trim().length===0,onClick:r,children:[n?e.jsx(x,{className:"h-4 w-4 animate-spin"}):null,i("persona.save")]})]})]})}function I({job:t}){const{t:s}=p("memory");return t?t.phase==="running"?e.jsxs(j,{variant:"info",children:[e.jsx(x,{className:"h-3 w-3 animate-spin"}),s("persona.consolidate.running")]}):t.phase==="done"?e.jsxs(j,{variant:"success",children:[e.jsx(X,{className:"h-3 w-3"}),s("persona.consolidate.lastRun",{at:S(t.finishedAt??t.startedAt)})]}):e.jsxs(j,{variant:"danger",children:[e.jsx(q,{className:"h-3 w-3"}),s("persona.consolidate.doneFailed")]}):null}function S(t){try{const s=new Date(t);return Number.isNaN(s.getTime())?String(t):s.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return String(t)}}export{le as default};
|
|
2
|
-
//# sourceMappingURL=persona-DnuFOp64.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{u as r,j as e,B as d,l as m,m as E,k as u,p as w,c as x,S as _,f as I,g as M,h as A,i as c}from"./index-D1ulN_24.js";import{u as C,a as B}from"./use-settings-Bx0ZTOsd.js";import{L as S}from"./loader-circle-Bgi0H_iI.js";import{R as U}from"./refresh-ccw-MHrCmmSv.js";import"./react-DlP5eolq.js";import"./useQuery-Bt7Ty7IO.js";function o(s){if(s==null)return!1;const a=s.toLowerCase();return a==="1"||a==="true"||a==="yes"||a==="on"}function K(){const{t:s}=r(["settings","common"]),a=C(),i=B();async function t(n,v){try{await i.mutateAsync({updates:{[n]:v}}),m.success(s("policy.savingToast"))}catch(y){m.error(E(y,s).message)}}const l=a.data?.env??{},h=o(l.IMHUB_DANGEROUSLY_SKIP_PERMISSIONS),g=o(l.IMHUB_MEMORY_ENABLED),j=o(l.IMHUB_VIEWER_ENABLED),N=(l.IMHUB_TIMEOUT_DEFAULT??"").toLowerCase()==="allow",b=(l.IMHUB_A2A_NOTIFY_MODE??"essential").toLowerCase();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("policy.title")}),e.jsxs(d,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>a.refetch(),disabled:a.isFetching,"aria-label":s("actions.refresh",{ns:"common"}),children:[a.isFetching?e.jsx(S,{className:"h-4 w-4 animate-spin"}):e.jsx(U,{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("policy.subtitle")})]}),a.isLoading?e.jsx("div",{className:"h-96 rounded-md bg-surface-2 animate-pulse"}):e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsx(O,{value:h,disabled:i.isPending,onChange:n=>void t("IMHUB_DANGEROUSLY_SKIP_PERMISSIONS",n?"1":"0")}),e.jsx(L,{allowOnTimeout:N,disabled:i.isPending,onChange:n=>void t("IMHUB_TIMEOUT_DEFAULT",n)}),e.jsx(p,{sectionKey:"memory",value:g,disabled:i.isPending,onChange:n=>void t("IMHUB_MEMORY_ENABLED",n?"1":"0")}),e.jsx(p,{sectionKey:"viewer",value:j,disabled:i.isPending,onChange:n=>void t("IMHUB_VIEWER_ENABLED",n?"1":"0")}),e.jsx(T,{value:b,disabled:i.isPending,onChange:n=>void t("IMHUB_A2A_NOTIFY_MODE",n)})]})]})}function O({value:s,disabled:a,onChange:i}){const{t}=r("settings");return e.jsx("section",{className:x("rounded-md border p-4",s?"border-danger/60 bg-danger-bg/30":"border-border bg-surface"),children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"font-medium text-text",children:t("policy.safety.title")}),s&&e.jsxs(u,{variant:"danger",children:[e.jsx(w,{className:"h-3 w-3"}),"ON"]})]}),e.jsx("p",{className:"mt-1 text-sm text-text-dim",children:t("policy.safety.description")}),!s&&e.jsx("p",{className:"mt-1 text-xs text-text-muted",children:t("policy.safety.tagWarn")}),e.jsx("code",{className:"mt-2 inline-block rounded bg-surface-2 px-1.5 py-0.5 text-xs text-text-muted",children:t("policy.safety.envKey")})]}),e.jsx(f,{value:s,disabled:a,onChange:i})]})})}function L({allowOnTimeout:s,disabled:a,onChange:i}){const{t}=r("settings");return e.jsx("section",{className:"rounded-md border border-border bg-surface p-4",children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("span",{className:"font-medium text-text",children:t("policy.approval.title")}),e.jsx("p",{className:"text-sm text-text-dim",children:t("policy.approval.description")}),e.jsx("code",{className:"self-start rounded bg-surface-2 px-1.5 py-0.5 text-xs text-text-muted",children:t("policy.approval.envKey")}),e.jsxs("div",{className:"mt-2 flex flex-wrap gap-2",children:[e.jsx(d,{type:"button",variant:s?"outline":"default",size:"sm",disabled:a,onClick:()=>i("deny"),children:t("policy.approval.valDeny")}),e.jsx(d,{type:"button",variant:s?"default":"outline",size:"sm",disabled:a,onClick:()=>i("allow"),children:t("policy.approval.valAllow")})]})]})})}function p({sectionKey:s,value:a,disabled:i,onChange:t}){const{t:l}=r("settings");return e.jsx("section",{className:"rounded-md border border-border bg-surface p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"font-medium text-text",children:l(`policy.${s}.title`)}),e.jsx(u,{variant:a?"success":"outline",children:a?"ON":"OFF"})]}),e.jsx("p",{className:"mt-1 text-sm text-text-dim",children:l(`policy.${s}.description`)}),e.jsx("code",{className:"mt-2 inline-block rounded bg-surface-2 px-1.5 py-0.5 text-xs text-text-muted",children:l(`policy.${s}.envKey`)})]}),e.jsx(f,{value:a,disabled:i,onChange:t})]})})}function T({value:s,disabled:a,onChange:i}){const{t}=r("settings");return e.jsx("section",{className:"rounded-md border border-border bg-surface p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsxs("div",{className:"flex-1",children:[e.jsx("span",{className:"font-medium text-text",children:t("policy.a2aNotify.title")}),e.jsx("p",{className:"mt-1 text-sm text-text-dim",children:t("policy.a2aNotify.description")}),e.jsx("code",{className:"mt-2 inline-block rounded bg-surface-2 px-1.5 py-0.5 text-xs text-text-muted",children:t("policy.a2aNotify.envKey")})]}),e.jsxs(_,{value:s,onValueChange:i,disabled:a,children:[e.jsx(I,{className:"w-36",children:e.jsx(M,{})}),e.jsxs(A,{children:[e.jsx(c,{value:"essential",children:t("policy.a2aNotify.valEssential")}),e.jsx(c,{value:"verbose",children:t("policy.a2aNotify.valVerbose")}),e.jsx(c,{value:"off",children:t("policy.a2aNotify.valOff")})]})]})]})})}function f({value:s,disabled:a,onChange:i}){return e.jsx("button",{type:"button",role:"switch","aria-checked":s,disabled:a,onClick:()=>i(!s),className:x("relative inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-bg","disabled:cursor-not-allowed disabled:opacity-50",s?"bg-accent":"bg-surface-2 border border-border"),children:e.jsx("span",{className:x("inline-block h-5 w-5 rounded-full bg-white shadow transition-transform",s?"translate-x-5":"translate-x-0.5")})})}export{K as default};
|
|
2
|
-
//# sourceMappingURL=policy-C4xe2rWm.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{u as N,j as e,B as I,I as d,S as h,f as _,g as f,h as p,i as u,o as T,l as j,m as E,p as M,c as w,k as U}from"./index-D1ulN_24.js";import{r as v}from"./react-DlP5eolq.js";import{u as S,a as L}from"./use-settings-Bx0ZTOsd.js";import{L as C}from"./loader-circle-Bgi0H_iI.js";import{R as O}from"./refresh-ccw-MHrCmmSv.js";import{S as H}from"./shield-alert-CplKlUGS.js";import{C as R}from"./circle-check-CWttT2Af.js";import"./useQuery-Bt7Ty7IO.js";function V(s){if(s==null)return!1;const a=s.toLowerCase();return a==="1"||a==="true"||a==="yes"||a==="on"}function $(){const{t:s}=N(["settings","common"]),a=S(),o=L(),[i,B]=v.useState(null),[b,y]=v.useState(!1);async function g(){y(!0);try{const t=await T.get("/api/security/diagnostics");B(t.diagnostics)}catch(t){j.error(E(t,s).message)}finally{y(!1)}}v.useEffect(()=>{g()},[]);async function r(t,l){try{await o.mutateAsync({updates:{[t]:l}}),j.success(s("security.savingToast")),await g()}catch(A){j.error(E(A,s).message)}}const n=a.data?.env??{};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("security.title")}),e.jsx(I,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>{a.refetch(),g()},disabled:a.isFetching||b,"aria-label":s("actions.refresh",{ns:"common"}),children:a.isFetching||b?e.jsx(C,{className:"h-4 w-4 animate-spin"}):e.jsx(O,{className:"h-4 w-4"})})]}),e.jsx("p",{className:"text-sm text-muted",children:s("security.subtitle")})]}),e.jsxs("section",{className:"rounded-lg border border-border bg-card p-4",children:[e.jsxs("h2",{className:"mb-3 flex items-center gap-2 text-sm font-semibold",children:[e.jsx(H,{className:"h-4 w-4"}),s("security.diagnostics.title")]}),i?e.jsxs("ul",{className:"grid gap-2 text-sm sm:grid-cols-2",children:[e.jsx(x,{label:s("security.diagnostics.runningAsRoot"),ok:i.runningAsRoot===!1,text:i.runningAsRoot===!0?s("security.diagnostics.runningAsRootHelp"):"OK"}),e.jsx(x,{label:s("security.diagnostics.envFilePerms"),ok:i.envFile.exists&&!i.envFile.tooPermissive,text:i.envFile.exists?i.envFile.tooPermissive?`${i.envFile.mode} — ${s("security.diagnostics.envFilePermsLax")}`:s("security.diagnostics.envFilePermsOk"):"—"}),e.jsx(x,{label:s("security.diagnostics.bwrapAvailable"),ok:i.bwrapAvailable,text:i.bwrapAvailable?"/usr/bin/bwrap":s("security.diagnostics.bwrapMissing")}),e.jsx(x,{label:s("security.diagnostics.senderAllowlist"),ok:i.senderAllowlistConfigured,text:i.senderAllowlistConfigured?s("security.diagnostics.senderAllowlistOn"):s("security.diagnostics.senderAllowlistOff")}),e.jsx(x,{label:s("security.diagnostics.adminAllowlist"),ok:i.adminAllowlistConfigured,text:i.adminAllowlistConfigured?s("security.diagnostics.adminAllowlistOn"):s("security.diagnostics.adminAllowlistOff")}),e.jsx(x,{label:s("security.diagnosticsPlatformBlacklist"),ok:i.platformBlacklist.length===0,text:i.platformBlacklist.length===0?"—":i.platformBlacklist.join(", ")})]}):e.jsx("p",{className:"text-sm text-muted",children:"…"})]}),e.jsx(m,{title:s("security.sender.title"),description:s("security.sender.description"),envKey:"IMHUB_ALLOWED_USERS",children:e.jsx(d,{defaultValue:n.IMHUB_ALLOWED_USERS??"",placeholder:s("security.sender.placeholder"),onBlur:t=>{const l=t.target.value.trim();r("IMHUB_ALLOWED_USERS",l===""?null:l)}})}),e.jsx(m,{title:s("security.exec.title"),description:s("security.exec.description"),children:e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[e.jsx(c,{label:s("security.exec.sandbox"),children:e.jsxs(h,{value:(n.IMHUB_EXEC_SANDBOX??"").toLowerCase()==="bwrap"?"bwrap":"__none__",onValueChange:t=>void r("IMHUB_EXEC_SANDBOX",t==="__none__"?null:t),children:[e.jsx(_,{children:e.jsx(f,{})}),e.jsxs(p,{children:[e.jsx(u,{value:"__none__",children:s("security.exec.sandboxNone")}),e.jsxs(u,{value:"bwrap",disabled:!i?.bwrapAvailable,children:[s("security.exec.sandboxBwrap"),!i?.bwrapAvailable&&e.jsxs("span",{className:"ml-2 text-xs text-muted",children:["(",s("security.exec.sandboxBwrapMissing"),")"]})]})]})]})}),e.jsx(c,{label:s("security.exec.sandboxNet"),children:e.jsxs(h,{value:(n.IMHUB_EXEC_SANDBOX_NET??"").toLowerCase()==="off"?"off":"on",onValueChange:t=>void r("IMHUB_EXEC_SANDBOX_NET",t==="off"?"off":null),children:[e.jsx(_,{children:e.jsx(f,{})}),e.jsxs(p,{children:[e.jsx(u,{value:"on",children:s("security.exec.sandboxNetOn")}),e.jsx(u,{value:"off",children:s("security.exec.sandboxNetOff")})]})]})}),e.jsx(c,{label:s("security.exec.timeoutMs"),children:e.jsx(d,{type:"number",defaultValue:n.IMHUB_EXEC_TIMEOUT_MS??"",placeholder:"60000",onBlur:t=>{const l=t.target.value.trim();r("IMHUB_EXEC_TIMEOUT_MS",l===""?null:l)}})}),e.jsx(c,{label:s("security.exec.maxOutput"),children:e.jsx(d,{type:"number",defaultValue:n.IMHUB_EXEC_MAX_OUTPUT??"",placeholder:"32768",onBlur:t=>{const l=t.target.value.trim();r("IMHUB_EXEC_MAX_OUTPUT",l===""?null:l)}})})]})}),e.jsx(m,{title:s("security.web.title"),description:s("security.web.description"),children:e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[e.jsx(c,{label:s("security.web.allowPrivate"),hint:s("security.web.allowPrivateHelp"),children:e.jsxs(h,{value:V(n.IMHUB_NATIVE_WEB_ALLOW_PRIVATE)?"1":"0",onValueChange:t=>void r("IMHUB_NATIVE_WEB_ALLOW_PRIVATE",t==="1"?"1":null),children:[e.jsx(_,{children:e.jsx(f,{})}),e.jsxs(p,{children:[e.jsx(u,{value:"0",children:"OFF"}),e.jsx(u,{value:"1",children:"ON"})]})]})}),e.jsx(c,{label:s("security.web.timeoutMs"),children:e.jsx(d,{type:"number",defaultValue:n.IMHUB_NATIVE_WEB_TIMEOUT_MS??"",placeholder:"30000",onBlur:t=>{const l=t.target.value.trim();r("IMHUB_NATIVE_WEB_TIMEOUT_MS",l===""?null:l)}})}),e.jsx("div",{className:"sm:col-span-2",children:e.jsx(c,{label:s("security.web.ssrfWhitelist"),children:e.jsx(d,{defaultValue:n.IMHUB_NATIVE_WEB_SSRF_WHITELIST??"",placeholder:s("security.web.ssrfWhitelistPlaceholder"),onBlur:t=>{const l=t.target.value.trim();r("IMHUB_NATIVE_WEB_SSRF_WHITELIST",l===""?null:l)}})})})]})}),e.jsx(m,{title:s("security.fs.title"),description:s("security.fs.description"),children:e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[e.jsx(c,{label:s("security.fs.restrict"),children:e.jsxs(h,{value:(n.IMHUB_NATIVE_FS_RESTRICT??"1")==="0"?"0":"1",onValueChange:t=>void r("IMHUB_NATIVE_FS_RESTRICT",t==="0"?"0":null),children:[e.jsx(_,{children:e.jsx(f,{})}),e.jsxs(p,{children:[e.jsx(u,{value:"1",children:s("security.fs.restrictOn")}),e.jsx(u,{value:"0",children:s("security.fs.restrictOff")})]})]})}),e.jsx(c,{label:s("security.fs.timeoutMs"),children:e.jsx(d,{type:"number",defaultValue:n.IMHUB_NATIVE_FS_TIMEOUT_MS??"",placeholder:"60000",onBlur:t=>{const l=t.target.value.trim();r("IMHUB_NATIVE_FS_TIMEOUT_MS",l===""?null:l)}})})]})}),e.jsx(m,{title:s("security.delegation.title"),description:s("security.delegation.description"),envKey:"IMHUB_NATIVE_CALL_AGENT_MAX_PER_TURN",children:e.jsx(d,{type:"number",defaultValue:n.IMHUB_NATIVE_CALL_AGENT_MAX_PER_TURN??"",placeholder:"2",onBlur:t=>{const l=t.target.value.trim();r("IMHUB_NATIVE_CALL_AGENT_MAX_PER_TURN",l===""?null:l)}})}),e.jsxs(m,{title:s("security.platformBlacklist.title"),description:s("security.platformBlacklist.description"),envKey:"IMHUB_PLATFORM_BLACKLIST",children:[e.jsx(d,{defaultValue:n.IMHUB_PLATFORM_BLACKLIST??"",placeholder:s("security.platformBlacklist.placeholder"),onBlur:t=>{const l=t.target.value.trim();r("IMHUB_PLATFORM_BLACKLIST",l===""?null:l)}}),i?.platformBlacklist&&i.platformBlacklist.length>0&&e.jsxs("p",{className:"mt-2 text-[10px] text-muted",children:[s("security.platformBlacklist.currentLabel"),": ",i.platformBlacklist.join(", ")]})]})]})}function x({label:s,ok:a,text:o}){return e.jsxs("li",{className:"flex items-start gap-2",children:[a?e.jsx(R,{className:"mt-0.5 h-4 w-4 shrink-0 text-success"}):e.jsx(M,{className:"mt-0.5 h-4 w-4 shrink-0 text-warning"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("div",{className:"font-medium",children:s}),e.jsx("div",{className:w("text-xs",a?"text-muted":"text-warning"),children:o})]})]})}function m({title:s,description:a,envKey:o,children:i}){return e.jsxs("section",{className:"rounded-lg border border-border bg-card p-4",children:[e.jsxs("div",{className:"mb-2 flex flex-wrap items-baseline gap-2",children:[e.jsx("h2",{className:"text-sm font-semibold",children:s}),o&&e.jsx(U,{variant:"outline",className:"font-mono text-[10px]",children:o})]}),e.jsx("p",{className:"mb-3 text-xs text-muted",children:a}),i]})}function c({label:s,hint:a,children:o}){return e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("label",{className:"text-xs font-medium text-muted",children:s}),o,a&&e.jsx("p",{className:"text-[10px] text-muted",children:a})]})}export{$ as default};
|
|
2
|
-
//# sourceMappingURL=security-BoMdDyCY.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{u}from"./useQuery-Bt7Ty7IO.js";import{a as s,b as t,o as i}from"./index-D1ulN_24.js";const l={all:["agim-skills"],list:["agim-skills","list"],one:e=>["agim-skills","one",e]};function m(){return u({queryKey:l.list,queryFn:()=>i.get("/api/agim-skills")})}function y(e){return u({queryKey:e?l.one(e):["agim-skills","one","__none__"],queryFn:()=>i.get(`/api/agim-skills/${encodeURIComponent(e)}`),enabled:!!e})}function g(){const e=s();return t({mutationFn:n=>i.post("/api/agim-skills",{body:n}),onSuccess:()=>e.invalidateQueries({queryKey:l.all})})}function k(){const e=s();return t({mutationFn:({name:n,body:o})=>i.put(`/api/agim-skills/${encodeURIComponent(n)}`,{body:{body:o}}),onSuccess:()=>e.invalidateQueries({queryKey:l.all})})}function p(){const e=s();return t({mutationFn:n=>i.delete(`/api/agim-skills/${encodeURIComponent(n)}`),onSuccess:()=>e.invalidateQueries({queryKey:l.all})})}function q(){const e=s();return t({mutationFn:()=>i.post("/api/agim-skills/refresh"),onSuccess:()=>e.invalidateQueries({queryKey:l.all})})}const a=["agim-skills","injection"];function d(){return u({queryKey:a,queryFn:()=>i.get("/api/agim-skills/injection")})}function S(){const e=s();return t({mutationFn:n=>i.put("/api/agim-skills/injection",{body:{body:n}}),onSuccess:()=>e.invalidateQueries({queryKey:a})})}function f(){const e=s();return t({mutationFn:()=>i.delete("/api/agim-skills/injection"),onSuccess:()=>e.invalidateQueries({queryKey:a})})}export{q as a,g as b,y as c,k as d,p as e,d as f,S as g,f as h,m as u};
|
|
2
|
-
//# sourceMappingURL=use-agim-skills-C0HdvMQj.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{u as s}from"./useQuery-Bt7Ty7IO.js";import{a as i,b as l,o as a}from"./index-D1ulN_24.js";const r={all:["heartbeat"],list:["heartbeat","list"]};function c(e){return`${e.platform}:${e.channelId}:${e.threadId}`}function g(){return s({queryKey:r.list,queryFn:()=>a.get("/api/heartbeat/bindings"),refetchInterval:1e4,refetchIntervalInBackground:!1})}function p(){const e=i();return l({mutationFn:({row:t,op:n})=>a.post(`/api/heartbeat/bindings/${encodeURIComponent(c(t))}/${n}`),onSuccess:()=>e.invalidateQueries({queryKey:r.all})})}const u={all:["goals"],list:["goals","list"]};function h(){return s({queryKey:u.list,queryFn:()=>a.get("/api/goals"),refetchInterval:3e4})}function m(){const e=i();return l({mutationFn:({id:t,status:n})=>a.put(`/api/goals/${t}/status`,{body:{status:n}}),onSuccess:()=>e.invalidateQueries({queryKey:u.all})})}const o={all:["asks"],list:["asks","list"]};function q(){return s({queryKey:o.list,queryFn:()=>a.get("/api/asks/pending"),refetchInterval:5e3})}function K(){const e=i();return l({mutationFn:t=>a.post(`/api/asks/pending/${encodeURIComponent(t)}/cancel`),onSuccess:()=>e.invalidateQueries({queryKey:o.all})})}const y={all:["plans"],list:(e,t)=>["plans","list",e??null,t??null]};function b(e={}){const t=new URLSearchParams;e.threadKey&&t.set("thread_key",e.threadKey),e.limit!=null&&t.set("limit",String(e.limit));const n=t.toString();return s({queryKey:y.list(e.threadKey,e.limit),queryFn:()=>a.get(`/api/plans${n?`?${n}`:""}`)})}export{p as a,h as b,m as c,q as d,K as e,b as f,g as u};
|
|
2
|
-
//# sourceMappingURL=use-background-tasks-Co9CtmcD.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{u as c}from"./useQuery-Bt7Ty7IO.js";import{a as u,b as s,o as t}from"./index-D1ulN_24.js";const a={all:["llm"],list:["llm","list"]};function r(){return c({queryKey:a.list,queryFn:()=>t.get("/api/llm")})}function m(){const e=u();return s({mutationFn:n=>t.post("/api/llm/backends",{body:n}),onSuccess:()=>e.invalidateQueries({queryKey:a.all})})}function p(){const e=u();return s({mutationFn:n=>t.delete(`/api/llm/backends/${encodeURIComponent(n)}`),onSuccess:()=>e.invalidateQueries({queryKey:a.all})})}function d(){const e=u();return s({mutationFn:n=>t.put("/api/llm/roles",{body:n}),onSuccess:()=>e.invalidateQueries({queryKey:a.all})})}function y(){return s({mutationFn:e=>t.post(`/api/llm/backends/${encodeURIComponent(e)}/ping`)})}const i={all:["mcp"],list:["mcp","list"]};function q(){return c({queryKey:i.list,queryFn:()=>t.get("/api/mcp")})}function v(){const e=u();return s({mutationFn:n=>t.post("/api/mcp/servers",{body:n}),onSuccess:()=>e.invalidateQueries({queryKey:i.all})})}function f(){const e=u();return s({mutationFn:n=>t.delete(`/api/mcp/servers/${encodeURIComponent(n)}`),onSuccess:()=>e.invalidateQueries({queryKey:i.all})})}function K(){const e=u();return s({mutationFn:n=>t.post(`/api/mcp/servers/${encodeURIComponent(n)}/health`),onSuccess:()=>e.invalidateQueries({queryKey:i.all})})}export{p as a,y as b,d as c,m as d,q as e,f,K as g,v as h,r as u};
|
|
2
|
-
//# sourceMappingURL=use-llm-admin-Bd0XAQpx.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-llm-admin-Bd0XAQpx.js","sources":["../../src/hooks/use-llm-admin.ts"],"sourcesContent":["/**\n * use-llm-admin / use-mcp-admin — react-query wrappers for the\n * Stage 6 LLM + MCP configuration REST surfaces.\n *\n * Intentionally NOT generated through endpoints.json — the panels are\n * the only consumers, the shapes are small, and a hand-written hook\n * keeps the diff manageable without churning the generated endpoints\n * file. When the panels stabilize we can promote them to endpoints.json\n * for type-checked round-tripping.\n */\n\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'\nimport { client } from '@/lib/api/client'\n\n// ─── LLM types (mirror the backend wire shapes) ──────────────────\n\nexport interface LlmBackendRow {\n name: string\n provider: 'openai-compat' | 'anthropic'\n baseUrl?: string\n model: string\n secret: { source: 'env' | 'file' | 'none'; envKey: string }\n}\n\nexport interface LlmListResponse {\n backends: LlmBackendRow[]\n roles: Record<string, string>\n}\n\nexport interface LlmAddBody {\n name: string\n provider: 'openai-compat' | 'anthropic'\n baseUrl: string\n model: string\n apiKey?: string\n}\n\nexport interface LlmPingResponse {\n name: string\n ok: boolean\n durationMs?: number\n tokensIn?: number\n tokensOut?: number\n sampleText?: string\n error?: string\n}\n\nconst llmKeys = {\n all: ['llm'] as const,\n list: ['llm', 'list'] as const,\n}\n\nexport function useLlmList() {\n return useQuery<LlmListResponse>({\n queryKey: llmKeys.list,\n queryFn: () => client.get<LlmListResponse>('/api/llm'),\n })\n}\n\nexport function useLlmAddBackend() {\n const qc = useQueryClient()\n return useMutation<{ name: string; secretStored: boolean }, Error, LlmAddBody>({\n mutationFn: (body) => client.post('/api/llm/backends', { body }),\n onSuccess: () => qc.invalidateQueries({ queryKey: llmKeys.all }),\n })\n}\n\nexport function useLlmRemoveBackend() {\n const qc = useQueryClient()\n return useMutation<{ removedRoles: number }, Error, string>({\n mutationFn: (name) => client.delete(`/api/llm/backends/${encodeURIComponent(name)}`),\n onSuccess: () => qc.invalidateQueries({ queryKey: llmKeys.all }),\n })\n}\n\nexport function useLlmPutRoles() {\n const qc = useQueryClient()\n return useMutation<{ roles: Record<string, string> }, Error, Record<string, string | null>>({\n mutationFn: (body) => client.put('/api/llm/roles', { body }),\n onSuccess: () => qc.invalidateQueries({ queryKey: llmKeys.all }),\n })\n}\n\nexport function useLlmSetSecret() {\n const qc = useQueryClient()\n return useMutation<{ name: string; source: 'env' | 'file' | 'none' }, Error, { name: string; apiKey: string }>({\n mutationFn: ({ name, apiKey }) => client.post(\n `/api/llm/secrets/${encodeURIComponent(name)}`, { body: { apiKey } },\n ),\n onSuccess: () => qc.invalidateQueries({ queryKey: llmKeys.all }),\n })\n}\n\nexport function useLlmPing() {\n return useMutation<LlmPingResponse, Error, string>({\n mutationFn: (name) => client.post(`/api/llm/backends/${encodeURIComponent(name)}/ping`),\n })\n}\n\n// ─── MCP types (mirror the backend wire shapes) ──────────────────\n\nexport interface McpServerRow {\n name: string\n command?: string\n args?: string[]\n url?: string\n enabled?: boolean\n}\n\nexport interface McpRuntime {\n servers: Array<{ name: string; connected: boolean; toolCount: number; error?: string }>\n totalTools: number\n}\n\nexport interface McpListResponse {\n servers: McpServerRow[]\n runtime: McpRuntime\n}\n\nexport interface McpAddBody {\n name: string\n command?: string\n args?: string[]\n env?: Record<string, string>\n url?: string\n headers?: Record<string, string>\n enabled?: boolean\n}\n\nexport interface McpHealthResponse {\n name: string\n connected: boolean\n toolCount: number\n lastError?: string\n}\n\nconst mcpKeys = {\n all: ['mcp'] as const,\n list: ['mcp', 'list'] as const,\n}\n\nexport function useMcpList() {\n return useQuery<McpListResponse>({\n queryKey: mcpKeys.list,\n queryFn: () => client.get<McpListResponse>('/api/mcp'),\n })\n}\n\nexport function useMcpAddServer() {\n const qc = useQueryClient()\n return useMutation<{ name: string }, Error, McpAddBody>({\n mutationFn: (body) => client.post('/api/mcp/servers', { body }),\n onSuccess: () => qc.invalidateQueries({ queryKey: mcpKeys.all }),\n })\n}\n\nexport function useMcpRemoveServer() {\n const qc = useQueryClient()\n return useMutation<{ name: string }, Error, string>({\n mutationFn: (name) => client.delete(`/api/mcp/servers/${encodeURIComponent(name)}`),\n onSuccess: () => qc.invalidateQueries({ queryKey: mcpKeys.all }),\n })\n}\n\nexport function useMcpHealth() {\n const qc = useQueryClient()\n return useMutation<McpHealthResponse, Error, string>({\n mutationFn: (name) => client.post(`/api/mcp/servers/${encodeURIComponent(name)}/health`),\n onSuccess: () => qc.invalidateQueries({ queryKey: mcpKeys.all }),\n })\n}\n"],"names":["llmKeys","useLlmList","useQuery","client","useLlmAddBackend","qc","useQueryClient","useMutation","body","useLlmRemoveBackend","name","useLlmPutRoles","useLlmPing","mcpKeys","useMcpList","useMcpAddServer","useMcpRemoveServer","useMcpHealth"],"mappings":"iGA+CA,MAAMA,EAAU,CACd,IAAM,CAAC,KAAK,EACZ,KAAM,CAAC,MAAO,MAAM,CACtB,EAEO,SAASC,GAAa,CAC3B,OAAOC,EAA0B,CAC/B,SAAUF,EAAQ,KAClB,QAAS,IAAMG,EAAO,IAAqB,UAAU,CAAA,CACtD,CACH,CAEO,SAASC,GAAmB,CACjC,MAAMC,EAAKC,EAAA,EACX,OAAOC,EAAwE,CAC7E,WAAaC,GAASL,EAAO,KAAK,oBAAqB,CAAE,KAAAK,EAAM,EAC/D,UAAW,IAAMH,EAAG,kBAAkB,CAAE,SAAUL,EAAQ,IAAK,CAAA,CAChE,CACH,CAEO,SAASS,GAAsB,CACpC,MAAMJ,EAAKC,EAAA,EACX,OAAOC,EAAqD,CAC1D,WAAaG,GAASP,EAAO,OAAO,qBAAqB,mBAAmBO,CAAI,CAAC,EAAE,EACnF,UAAW,IAAML,EAAG,kBAAkB,CAAE,SAAUL,EAAQ,IAAK,CAAA,CAChE,CACH,CAEO,SAASW,GAAiB,CAC/B,MAAMN,EAAKC,EAAA,EACX,OAAOC,EAAqF,CAC1F,WAAaC,GAASL,EAAO,IAAI,iBAAkB,CAAE,KAAAK,EAAM,EAC3D,UAAW,IAAMH,EAAG,kBAAkB,CAAE,SAAUL,EAAQ,IAAK,CAAA,CAChE,CACH,CAYO,SAASY,GAAa,CAC3B,OAAOL,EAA4C,CACjD,WAAaG,GAASP,EAAO,KAAK,qBAAqB,mBAAmBO,CAAI,CAAC,OAAO,CAAA,CACvF,CACH,CAuCA,MAAMG,EAAU,CACd,IAAM,CAAC,KAAK,EACZ,KAAM,CAAC,MAAO,MAAM,CACtB,EAEO,SAASC,GAAa,CAC3B,OAAOZ,EAA0B,CAC/B,SAAUW,EAAQ,KAClB,QAAS,IAAMV,EAAO,IAAqB,UAAU,CAAA,CACtD,CACH,CAEO,SAASY,GAAkB,CAChC,MAAMV,EAAKC,EAAA,EACX,OAAOC,EAAiD,CACtD,WAAaC,GAASL,EAAO,KAAK,mBAAoB,CAAE,KAAAK,EAAM,EAC9D,UAAW,IAAMH,EAAG,kBAAkB,CAAE,SAAUQ,EAAQ,IAAK,CAAA,CAChE,CACH,CAEO,SAASG,GAAqB,CACnC,MAAMX,EAAKC,EAAA,EACX,OAAOC,EAA6C,CAClD,WAAaG,GAASP,EAAO,OAAO,oBAAoB,mBAAmBO,CAAI,CAAC,EAAE,EAClF,UAAW,IAAML,EAAG,kBAAkB,CAAE,SAAUQ,EAAQ,IAAK,CAAA,CAChE,CACH,CAEO,SAASI,GAAe,CAC7B,MAAMZ,EAAKC,EAAA,EACX,OAAOC,EAA8C,CACnD,WAAaG,GAASP,EAAO,KAAK,oBAAoB,mBAAmBO,CAAI,CAAC,SAAS,EACvF,UAAW,IAAML,EAAG,kBAAkB,CAAE,SAAUQ,EAAQ,IAAK,CAAA,CAChE,CACH"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{u}from"./useQuery-Bt7Ty7IO.js";import{a as t,b as o,d as n,_ as i}from"./index-D1ulN_24.js";const r={all:["memory"],users:["memory","users"],facts:e=>["memory","facts",e],persona:e=>["memory","persona",e],consolidate:["memory","consolidate"]};function y(){return u({queryKey:r.users,queryFn:()=>n.listMemoryUsers()})}function d(e,s={}){return u({queryKey:r.facts(e),queryFn:()=>n.listMemoryFacts(e),enabled:s.enabled!==!1&&!!e.user_key})}function m(){const e=t();return o({mutationFn:({id:s,user_key:a})=>n.deleteMemoryFactById(s,{user_key:a}),onSuccess:()=>e.invalidateQueries({queryKey:r.all})})}function f(){const e=t();return o({mutationFn:({user_key:s,body:a})=>n.deleteMemoryFacts({user_key:s},a),onSuccess:()=>e.invalidateQueries({queryKey:r.all})})}function q(e,s={}){return u({queryKey:r.persona(e),queryFn:async()=>{try{return await n.getMemoryPersona({user_key:e})}catch(a){if(a instanceof i&&a.status===404)return null;throw a}},enabled:s.enabled!==!1&&!!e})}function F(){const e=t();return o({mutationFn:({user_key:s,body:a})=>n.updateMemoryPersona({user_key:s},a),onSuccess:(s,a)=>{e.invalidateQueries({queryKey:r.persona(a.user_key)}),e.invalidateQueries({queryKey:r.users})}})}function K(){const e=t();return o({mutationFn:s=>n.deleteMemoryPersona({user_key:s}),onSuccess:(s,a)=>{e.invalidateQueries({queryKey:r.persona(a)}),e.invalidateQueries({queryKey:r.users})}})}function M(e={}){return u({queryKey:r.consolidate,queryFn:()=>n.getMemoryConsolidateStatus(),refetchInterval:3e3,refetchIntervalInBackground:!1,enabled:e.enabled!==!1})}function p(){const e=t();return o({mutationFn:()=>n.consolidateMemory(),onSuccess:()=>{e.invalidateQueries({queryKey:r.consolidate}),e.invalidateQueries({queryKey:r.all})}})}export{d as a,m as b,f as c,q as d,p as e,M as f,F as g,K as h,r as m,y as u};
|
|
2
|
-
//# sourceMappingURL=use-memory-BHYuPOc9.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{u as a}from"./useQuery-Bt7Ty7IO.js";import{d as i}from"./index-D1ulN_24.js";const n={all:["observability"],health:e=>["observability","health",e],topN:(e,t,r,u)=>["observability","topn",e,t,r,u],audit:e=>["observability","audit",e]};function o(e){return a({queryKey:n.health(e),queryFn:()=>i.getHealthSummary({days:e}),refetchInterval:3e4,refetchIntervalInBackground:!1})}function s(e){const t=e.days??7,r=e.limit??10;return a({queryKey:n.topN(e.dim,e.by,t,r),queryFn:()=>i.getHealthTopN({dim:e.dim,by:e.by,days:t,limit:r}),refetchInterval:6e4,refetchIntervalInBackground:!1})}function c(e){return a({queryKey:n.audit(e),queryFn:()=>i.getAudit(e),refetchInterval:1e4,refetchIntervalInBackground:!1})}export{s as a,c as b,o as u};
|
|
2
|
-
//# sourceMappingURL=use-observability-CHv6H0zQ.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{u}from"./useQuery-Bt7Ty7IO.js";import{a as i,b as s,d as n}from"./index-D1ulN_24.js";const r={all:["settings"],env:e=>["settings","env",e],service:["settings","service"],admins:["settings","admins"],config:["settings","config"],workspaces:["settings","workspaces"]};function v(e={}){const t=!!e.reveal;return u({queryKey:r.env(t),queryFn:()=>n.getEnv({reveal:t})})}function l(){const e=i();return s({mutationFn:t=>n.updateEnv(t),onSuccess:()=>e.invalidateQueries({queryKey:["settings","env"]})})}function f(){return u({queryKey:r.service,queryFn:()=>n.getServiceStatus(),refetchInterval:5e3,refetchIntervalInBackground:!1})}function a(e,t){return s({mutationFn:e,onSuccess:()=>t.invalidateQueries({queryKey:r.service})})}function y(){const e=i();return a(()=>n.startService(),e)}function d(){const e=i();return a(()=>n.stopService(),e)}function m(){const e=i();return a(()=>n.restartService(),e)}function q(){return u({queryKey:r.admins,queryFn:()=>n.listAdminAllowlist()})}function g(){const e=i();return s({mutationFn:t=>n.addAdminAllowlist(t),onSuccess:()=>e.invalidateQueries({queryKey:r.admins})})}function p(){const e=i();return s({mutationFn:t=>n.removeAdminAllowlist(t),onSuccess:()=>e.invalidateQueries({queryKey:r.admins})})}function S(){return u({queryKey:r.config,queryFn:()=>n.getConfig()})}function F(){const e=i();return s({mutationFn:t=>n.updateConfig(t),onSuccess:()=>e.invalidateQueries({queryKey:r.config})})}function A(){return u({queryKey:r.workspaces,queryFn:()=>n.listWorkspacesFull()})}function h(){const e=i();return s({mutationFn:t=>n.upsertWorkspace(t),onSuccess:()=>e.invalidateQueries({queryKey:r.workspaces})})}function K(){return s({mutationFn:()=>n.startWechatQr()})}function w(e){return u({queryKey:["settings","wechat-qr",e??""],queryFn:()=>n.getWechatQrStatus({token:e}),enabled:!!e,refetchInterval:2e3,refetchIntervalInBackground:!1})}function Q(){return s({mutationFn:e=>n.testAcpAgent(e)})}function k(){return s({mutationFn:e=>n.discoverAcpAgents(e)})}function W(){return s({mutationFn:()=>n.testEmail()})}function E(){return u({queryKey:["settings","search","providers"],queryFn:()=>n.getSearchProviders()})}function I(){return s({mutationFn:e=>n.testSearchProvider(e)})}function C(){return u({queryKey:["settings","viewer-tunnel"],queryFn:()=>n.getViewerTunnel()})}export{l as a,S as b,F as c,K as d,w as e,W as f,C as g,Q as h,k as i,f as j,y as k,d as l,m,q as n,g as o,p,A as q,h as r,E as s,I as t,v as u};
|
|
2
|
-
//# sourceMappingURL=use-settings-Bx0ZTOsd.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{u as a}from"./useQuery-Bt7Ty7IO.js";import{a as o,b as i,d as u}from"./index-D1ulN_24.js";const t={all:["workspace"],files:(e,s)=>["workspace","files",e,s]};function y(){return a({queryKey:["agents","status"],queryFn:()=>u.getAgentsStatus()})}function f(e,s,r={}){return a({queryKey:t.files(e,s),queryFn:()=>u.getWorkspaceFiles({agent:e,...s?{path:s}:{}}),enabled:r.enabled!==!1&&!!e})}function p(){const e=o();return i({mutationFn:({agent:s,path:r,body:n})=>u.writeWorkspaceFile({agent:s,path:r},n),onSuccess:()=>e.invalidateQueries({queryKey:t.all})})}export{f as a,p as b,y as u};
|
|
2
|
-
//# sourceMappingURL=use-workspace-zFEfqUCo.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a2 as G,a3 as N,a4 as c,a5 as M,a6 as g,a7 as x,a8 as _,a9 as B,aa as J,ab as I,ac as X,ad as Y,ae as A,af as z,ag as V,a as Z}from"./index-D1ulN_24.js";import{r as d}from"./react-DlP5eolq.js";var $=class extends G{constructor(t,e){super(),this.options=e,this.#s=t,this.#r=null,this.#i=N(),this.bindMethods(),this.setOptions(e)}#s;#t=void 0;#p=void 0;#e=void 0;#n;#u;#i;#r;#v;#l;#d;#o;#h;#a;#f=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),j(this.#t,this.options)?this.#c():this.updateResult(),this.#g())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return P(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return P(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#y(),this.#S(),this.#t.removeObserver(this)}setOptions(t){const e=this.options,s=this.#t;if(this.options=this.#s.defaultQueryOptions(t),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof c(this.options.enabled,this.#t)!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#O(),this.#t.setOptions(this.options),e._defaulted&&!M(this.options,e)&&this.#s.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#t,observer:this});const i=this.hasListeners();i&&H(this.#t,s,this.options,e)&&this.#c(),this.updateResult(),i&&(this.#t!==s||c(this.options.enabled,this.#t)!==c(e.enabled,this.#t)||g(this.options.staleTime,this.#t)!==g(e.staleTime,this.#t))&&this.#b();const a=this.#R();i&&(this.#t!==s||c(this.options.enabled,this.#t)!==c(e.enabled,this.#t)||a!==this.#a)&&this.#m(a)}getOptimisticResult(t){const e=this.#s.getQueryCache().build(this.#s,t),s=this.createResult(e,t);return tt(this,s)&&(this.#e=s,this.#u=this.options,this.#n=this.#t.state),s}getCurrentResult(){return this.#e}trackResult(t,e){return new Proxy(t,{get:(s,i)=>(this.trackProp(i),e?.(i),i==="promise"&&(this.trackProp("data"),!this.options.experimental_prefetchInRender&&this.#i.status==="pending"&&this.#i.reject(new Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(s,i))})}trackProp(t){this.#f.add(t)}getCurrentQuery(){return this.#t}refetch({...t}={}){return this.fetch({...t})}fetchOptimistic(t){const e=this.#s.defaultQueryOptions(t),s=this.#s.getQueryCache().build(this.#s,e);return s.fetch().then(()=>this.createResult(s,e))}fetch(t){return this.#c({...t,cancelRefetch:t.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#e))}#c(t){this.#O();let e=this.#t.fetch(this.options,t);return t?.throwOnError||(e=e.catch(x)),e}#b(){this.#y();const t=g(this.options.staleTime,this.#t);if(_.isServer()||this.#e.isStale||!B(t))return;const s=J(this.#e.dataUpdatedAt,t)+1;this.#o=I.setTimeout(()=>{this.#e.isStale||this.updateResult()},s)}#R(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#m(t){this.#S(),this.#a=t,!(_.isServer()||c(this.options.enabled,this.#t)===!1||!B(this.#a)||this.#a===0)&&(this.#h=I.setInterval(()=>{(this.options.refetchIntervalInBackground||X.isFocused())&&this.#c()},this.#a))}#g(){this.#b(),this.#m(this.#R())}#y(){this.#o!==void 0&&(I.clearTimeout(this.#o),this.#o=void 0)}#S(){this.#h!==void 0&&(I.clearInterval(this.#h),this.#h=void 0)}createResult(t,e){const s=this.#t,i=this.options,a=this.#e,u=this.#n,n=this.#u,b=t!==s?t.state:this.#p,{state:y}=t;let r={...y},l=!1,o;if(e._optimisticResults){const h=this.hasListeners(),m=!h&&j(t,e),O=h&&H(t,s,e,i);(m||O)&&(r={...r,...Y(y.data,t.options)}),e._optimisticResults==="isRestoring"&&(r.fetchStatus="idle")}let{error:R,errorUpdatedAt:S,status:v}=r;o=r.data;let U=!1;if(e.placeholderData!==void 0&&o===void 0&&v==="pending"){let h;a?.isPlaceholderData&&e.placeholderData===n?.placeholderData?(h=a.data,U=!0):h=typeof e.placeholderData=="function"?e.placeholderData(this.#d?.state.data,this.#d):e.placeholderData,h!==void 0&&(v="success",o=A(a?.data,h,e),l=!0)}if(e.select&&o!==void 0&&!U)if(a&&o===u?.data&&e.select===this.#v)o=this.#l;else try{this.#v=e.select,o=e.select(o),o=A(a?.data,o,e),this.#l=o,this.#r=null}catch(h){this.#r=h}this.#r&&(R=this.#r,o=this.#l,S=Date.now(),v="error");const T=r.fetchStatus==="fetching",w=v==="pending",Q=v==="error",D=w&&T,k=o!==void 0,p={status:v,fetchStatus:r.fetchStatus,isPending:w,isSuccess:v==="success",isError:Q,isInitialLoading:D,isLoading:D,data:o,dataUpdatedAt:r.dataUpdatedAt,error:R,errorUpdatedAt:S,failureCount:r.fetchFailureCount,failureReason:r.fetchFailureReason,errorUpdateCount:r.errorUpdateCount,isFetched:t.isFetched(),isFetchedAfterMount:r.dataUpdateCount>b.dataUpdateCount||r.errorUpdateCount>b.errorUpdateCount,isFetching:T,isRefetching:T&&!w,isLoadingError:Q&&!k,isPaused:r.fetchStatus==="paused",isPlaceholderData:l,isRefetchError:Q&&k,isStale:F(t,e),refetch:this.refetch,promise:this.#i,isEnabled:c(e.enabled,t)!==!1};if(this.options.experimental_prefetchInRender){const h=p.data!==void 0,m=p.status==="error"&&!h,O=C=>{m?C.reject(p.error):h&&C.resolve(p.data)},L=()=>{const C=this.#i=p.promise=N();O(C)},E=this.#i;switch(E.status){case"pending":t.queryHash===s.queryHash&&O(E);break;case"fulfilled":(m||p.data!==E.value)&&L();break;case"rejected":(!m||p.error!==E.reason)&&L();break}}return p}updateResult(){const t=this.#e,e=this.createResult(this.#t,this.options);if(this.#n=this.#t.state,this.#u=this.options,this.#n.data!==void 0&&(this.#d=this.#t),M(e,t))return;this.#e=e;const s=()=>{if(!t)return!0;const{notifyOnChangeProps:i}=this.options,a=typeof i=="function"?i():i;if(a==="all"||!a&&!this.#f.size)return!0;const u=new Set(a??this.#f);return this.options.throwOnError&&u.add("error"),Object.keys(this.#e).some(n=>{const f=n;return this.#e[f]!==t[f]&&u.has(f)})};this.#E({listeners:s()})}#O(){const t=this.#s.getQueryCache().build(this.#s,this.options);if(t===this.#t)return;const e=this.#t;this.#t=t,this.#p=t.state,this.hasListeners()&&(e?.removeObserver(this),t.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#g()}#E(t){z.batch(()=>{t.listeners&&this.listeners.forEach(e=>{e(this.#e)}),this.#s.getQueryCache().notify({query:this.#t,type:"observerResultsUpdated"})})}};function q(t,e){return c(e.enabled,t)!==!1&&t.state.data===void 0&&!(t.state.status==="error"&&c(e.retryOnMount,t)===!1)}function j(t,e){return q(t,e)||t.state.data!==void 0&&P(t,e,e.refetchOnMount)}function P(t,e,s){if(c(e.enabled,t)!==!1&&g(e.staleTime,t)!=="static"){const i=typeof s=="function"?s(t):s;return i==="always"||i!==!1&&F(t,e)}return!1}function H(t,e,s,i){return(t!==e||c(i.enabled,t)===!1)&&(!s.suspense||t.state.status!=="error")&&F(t,s)}function F(t,e){return c(e.enabled,t)!==!1&&t.isStaleByTime(g(e.staleTime,t))}function tt(t,e){return!M(t.getCurrentResult(),e)}var K=d.createContext(!1),et=()=>d.useContext(K);K.Provider;function st(){let t=!1;return{clearReset:()=>{t=!1},reset:()=>{t=!0},isReset:()=>t}}var it=d.createContext(st()),rt=()=>d.useContext(it),at=(t,e,s)=>{const i=s?.state.error&&typeof t.throwOnError=="function"?V(t.throwOnError,[s.state.error,s]):t.throwOnError;(t.suspense||t.experimental_prefetchInRender||i)&&(e.isReset()||(t.retryOnMount=!1))},nt=t=>{d.useEffect(()=>{t.clearReset()},[t])},ot=({result:t,errorResetBoundary:e,throwOnError:s,query:i,suspense:a})=>t.isError&&!e.isReset()&&!t.isFetching&&i&&(a&&t.data===void 0||V(s,[t.error,i])),ht=t=>{if(t.suspense){const s=a=>a==="static"?a:Math.max(a??1e3,1e3),i=t.staleTime;t.staleTime=typeof i=="function"?(...a)=>s(i(...a)):s(i),typeof t.gcTime=="number"&&(t.gcTime=Math.max(t.gcTime,1e3))}},ct=(t,e)=>t.isLoading&&t.isFetching&&!e,ut=(t,e)=>t?.suspense&&e.isPending,W=(t,e,s)=>e.fetchOptimistic(t).catch(()=>{s.clearReset()});function lt(t,e,s){const i=et(),a=rt(),u=Z(),n=u.defaultQueryOptions(t);u.getDefaultOptions().queries?._experimental_beforeQuery?.(n);const f=u.getQueryCache().get(n.queryHash),b=t.subscribed!==!1;n._optimisticResults=i?"isRestoring":b?"optimistic":void 0,ht(n),at(n,a,f),nt(a);const y=!u.getQueryCache().get(n.queryHash),[r]=d.useState(()=>new e(u,n)),l=r.getOptimisticResult(n),o=!i&&b;if(d.useSyncExternalStore(d.useCallback(R=>{const S=o?r.subscribe(z.batchCalls(R)):x;return r.updateResult(),S},[r,o]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),d.useEffect(()=>{r.setOptions(n)},[n,r]),ut(n,l))throw W(n,r,a);if(ot({result:l,errorResetBoundary:a,throwOnError:n.throwOnError,query:f,suspense:n.suspense}))throw l.error;return u.getDefaultOptions().queries?._experimental_afterQuery?.(n,l),n.experimental_prefetchInRender&&!_.isServer()&&ct(l,i)&&(y?W(n,r,a):f?.promise)?.catch(x).finally(()=>{r.updateResult()}),n.notifyOnChangeProps?l:r.trackResult(l)}function vt(t,e){return lt(t,$)}export{vt as u};
|
|
2
|
-
//# sourceMappingURL=useQuery-Bt7Ty7IO.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useQuery-Bt7Ty7IO.js","sources":["../../node_modules/@tanstack/query-core/build/modern/queryObserver.js","../../node_modules/@tanstack/react-query/build/modern/IsRestoringProvider.js","../../node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js","../../node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js","../../node_modules/@tanstack/react-query/build/modern/suspense.js","../../node_modules/@tanstack/react-query/build/modern/useBaseQuery.js","../../node_modules/@tanstack/react-query/build/modern/useQuery.js"],"sourcesContent":["// src/queryObserver.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { environmentManager } from \"./environmentManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { fetchState } from \"./query.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { pendingThenable } from \"./thenable.js\";\nimport {\n isValidTimeout,\n noop,\n replaceData,\n resolveQueryBoolean,\n resolveStaleTime,\n shallowEqualObjects,\n timeUntilStale\n} from \"./utils.js\";\nimport { timeoutManager } from \"./timeoutManager.js\";\nvar QueryObserver = class extends Subscribable {\n constructor(client, options) {\n super();\n this.options = options;\n this.#client = client;\n this.#selectError = null;\n this.#currentThenable = pendingThenable();\n this.bindMethods();\n this.setOptions(options);\n }\n #client;\n #currentQuery = void 0;\n #currentQueryInitialState = void 0;\n #currentResult = void 0;\n #currentResultState;\n #currentResultOptions;\n #currentThenable;\n #selectError;\n #selectFn;\n #selectResult;\n // This property keeps track of the last query with defined data.\n // It will be used to pass the previous data and query to the placeholder function between renders.\n #lastQueryWithDefinedData;\n #staleTimeoutId;\n #refetchIntervalId;\n #currentRefetchInterval;\n #trackedProps = /* @__PURE__ */ new Set();\n bindMethods() {\n this.refetch = this.refetch.bind(this);\n }\n onSubscribe() {\n if (this.listeners.size === 1) {\n this.#currentQuery.addObserver(this);\n if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n this.#executeFetch();\n } else {\n this.updateResult();\n }\n this.#updateTimers();\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.destroy();\n }\n }\n shouldFetchOnReconnect() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnReconnect\n );\n }\n shouldFetchOnWindowFocus() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnWindowFocus\n );\n }\n destroy() {\n this.listeners = /* @__PURE__ */ new Set();\n this.#clearStaleTimeout();\n this.#clearRefetchInterval();\n this.#currentQuery.removeObserver(this);\n }\n setOptions(options) {\n const prevOptions = this.options;\n const prevQuery = this.#currentQuery;\n this.options = this.#client.defaultQueryOptions(options);\n if (this.options.enabled !== void 0 && typeof this.options.enabled !== \"boolean\" && typeof this.options.enabled !== \"function\" && typeof resolveQueryBoolean(this.options.enabled, this.#currentQuery) !== \"boolean\") {\n throw new Error(\n \"Expected enabled to be a boolean or a callback that returns a boolean\"\n );\n }\n this.#updateQuery();\n this.#currentQuery.setOptions(this.options);\n if (prevOptions._defaulted && !shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getQueryCache().notify({\n type: \"observerOptionsUpdated\",\n query: this.#currentQuery,\n observer: this\n });\n }\n const mounted = this.hasListeners();\n if (mounted && shouldFetchOptionally(\n this.#currentQuery,\n prevQuery,\n this.options,\n prevOptions\n )) {\n this.#executeFetch();\n }\n this.updateResult();\n if (mounted && (this.#currentQuery !== prevQuery || resolveQueryBoolean(this.options.enabled, this.#currentQuery) !== resolveQueryBoolean(prevOptions.enabled, this.#currentQuery) || resolveStaleTime(this.options.staleTime, this.#currentQuery) !== resolveStaleTime(prevOptions.staleTime, this.#currentQuery))) {\n this.#updateStaleTimeout();\n }\n const nextRefetchInterval = this.#computeRefetchInterval();\n if (mounted && (this.#currentQuery !== prevQuery || resolveQueryBoolean(this.options.enabled, this.#currentQuery) !== resolveQueryBoolean(prevOptions.enabled, this.#currentQuery) || nextRefetchInterval !== this.#currentRefetchInterval)) {\n this.#updateRefetchInterval(nextRefetchInterval);\n }\n }\n getOptimisticResult(options) {\n const query = this.#client.getQueryCache().build(this.#client, options);\n const result = this.createResult(query, options);\n if (shouldAssignObserverCurrentProperties(this, result)) {\n this.#currentResult = result;\n this.#currentResultOptions = this.options;\n this.#currentResultState = this.#currentQuery.state;\n }\n return result;\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n trackResult(result, onPropTracked) {\n return new Proxy(result, {\n get: (target, key) => {\n this.trackProp(key);\n onPropTracked?.(key);\n if (key === \"promise\") {\n this.trackProp(\"data\");\n if (!this.options.experimental_prefetchInRender && this.#currentThenable.status === \"pending\") {\n this.#currentThenable.reject(\n new Error(\n \"experimental_prefetchInRender feature flag is not enabled\"\n )\n );\n }\n }\n return Reflect.get(target, key);\n }\n });\n }\n trackProp(key) {\n this.#trackedProps.add(key);\n }\n getCurrentQuery() {\n return this.#currentQuery;\n }\n refetch({ ...options } = {}) {\n return this.fetch({\n ...options\n });\n }\n fetchOptimistic(options) {\n const defaultedOptions = this.#client.defaultQueryOptions(options);\n const query = this.#client.getQueryCache().build(this.#client, defaultedOptions);\n return query.fetch().then(() => this.createResult(query, defaultedOptions));\n }\n fetch(fetchOptions) {\n return this.#executeFetch({\n ...fetchOptions,\n cancelRefetch: fetchOptions.cancelRefetch ?? true\n }).then(() => {\n this.updateResult();\n return this.#currentResult;\n });\n }\n #executeFetch(fetchOptions) {\n this.#updateQuery();\n let promise = this.#currentQuery.fetch(\n this.options,\n fetchOptions\n );\n if (!fetchOptions?.throwOnError) {\n promise = promise.catch(noop);\n }\n return promise;\n }\n #updateStaleTimeout() {\n this.#clearStaleTimeout();\n const staleTime = resolveStaleTime(\n this.options.staleTime,\n this.#currentQuery\n );\n if (environmentManager.isServer() || this.#currentResult.isStale || !isValidTimeout(staleTime)) {\n return;\n }\n const time = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime);\n const timeout = time + 1;\n this.#staleTimeoutId = timeoutManager.setTimeout(() => {\n if (!this.#currentResult.isStale) {\n this.updateResult();\n }\n }, timeout);\n }\n #computeRefetchInterval() {\n return (typeof this.options.refetchInterval === \"function\" ? this.options.refetchInterval(this.#currentQuery) : this.options.refetchInterval) ?? false;\n }\n #updateRefetchInterval(nextInterval) {\n this.#clearRefetchInterval();\n this.#currentRefetchInterval = nextInterval;\n if (environmentManager.isServer() || resolveQueryBoolean(this.options.enabled, this.#currentQuery) === false || !isValidTimeout(this.#currentRefetchInterval) || this.#currentRefetchInterval === 0) {\n return;\n }\n this.#refetchIntervalId = timeoutManager.setInterval(() => {\n if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {\n this.#executeFetch();\n }\n }, this.#currentRefetchInterval);\n }\n #updateTimers() {\n this.#updateStaleTimeout();\n this.#updateRefetchInterval(this.#computeRefetchInterval());\n }\n #clearStaleTimeout() {\n if (this.#staleTimeoutId !== void 0) {\n timeoutManager.clearTimeout(this.#staleTimeoutId);\n this.#staleTimeoutId = void 0;\n }\n }\n #clearRefetchInterval() {\n if (this.#refetchIntervalId !== void 0) {\n timeoutManager.clearInterval(this.#refetchIntervalId);\n this.#refetchIntervalId = void 0;\n }\n }\n createResult(query, options) {\n const prevQuery = this.#currentQuery;\n const prevOptions = this.options;\n const prevResult = this.#currentResult;\n const prevResultState = this.#currentResultState;\n const prevResultOptions = this.#currentResultOptions;\n const queryChange = query !== prevQuery;\n const queryInitialState = queryChange ? query.state : this.#currentQueryInitialState;\n const { state } = query;\n let newState = { ...state };\n let isPlaceholderData = false;\n let data;\n if (options._optimisticResults) {\n const mounted = this.hasListeners();\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n if (fetchOnMount || fetchOptionally) {\n newState = {\n ...newState,\n ...fetchState(state.data, query.options)\n };\n }\n if (options._optimisticResults === \"isRestoring\") {\n newState.fetchStatus = \"idle\";\n }\n }\n let { error, errorUpdatedAt, status } = newState;\n data = newState.data;\n let skipSelect = false;\n if (options.placeholderData !== void 0 && data === void 0 && status === \"pending\") {\n let placeholderData;\n if (prevResult?.isPlaceholderData && options.placeholderData === prevResultOptions?.placeholderData) {\n placeholderData = prevResult.data;\n skipSelect = true;\n } else {\n placeholderData = typeof options.placeholderData === \"function\" ? options.placeholderData(\n this.#lastQueryWithDefinedData?.state.data,\n this.#lastQueryWithDefinedData\n ) : options.placeholderData;\n }\n if (placeholderData !== void 0) {\n status = \"success\";\n data = replaceData(\n prevResult?.data,\n placeholderData,\n options\n );\n isPlaceholderData = true;\n }\n }\n if (options.select && data !== void 0 && !skipSelect) {\n if (prevResult && data === prevResultState?.data && options.select === this.#selectFn) {\n data = this.#selectResult;\n } else {\n try {\n this.#selectFn = options.select;\n data = options.select(data);\n data = replaceData(prevResult?.data, data, options);\n this.#selectResult = data;\n this.#selectError = null;\n } catch (selectError) {\n this.#selectError = selectError;\n }\n }\n }\n if (this.#selectError) {\n error = this.#selectError;\n data = this.#selectResult;\n errorUpdatedAt = Date.now();\n status = \"error\";\n }\n const isFetching = newState.fetchStatus === \"fetching\";\n const isPending = status === \"pending\";\n const isError = status === \"error\";\n const isLoading = isPending && isFetching;\n const hasData = data !== void 0;\n const result = {\n status,\n fetchStatus: newState.fetchStatus,\n isPending,\n isSuccess: status === \"success\",\n isError,\n isInitialLoading: isLoading,\n isLoading,\n data,\n dataUpdatedAt: newState.dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: newState.fetchFailureCount,\n failureReason: newState.fetchFailureReason,\n errorUpdateCount: newState.errorUpdateCount,\n isFetched: query.isFetched(),\n isFetchedAfterMount: newState.dataUpdateCount > queryInitialState.dataUpdateCount || newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isPending,\n isLoadingError: isError && !hasData,\n isPaused: newState.fetchStatus === \"paused\",\n isPlaceholderData,\n isRefetchError: isError && hasData,\n isStale: isStale(query, options),\n refetch: this.refetch,\n promise: this.#currentThenable,\n isEnabled: resolveQueryBoolean(options.enabled, query) !== false\n };\n const nextResult = result;\n if (this.options.experimental_prefetchInRender) {\n const hasResultData = nextResult.data !== void 0;\n const isErrorWithoutData = nextResult.status === \"error\" && !hasResultData;\n const finalizeThenableIfPossible = (thenable) => {\n if (isErrorWithoutData) {\n thenable.reject(nextResult.error);\n } else if (hasResultData) {\n thenable.resolve(nextResult.data);\n }\n };\n const recreateThenable = () => {\n const pending = this.#currentThenable = nextResult.promise = pendingThenable();\n finalizeThenableIfPossible(pending);\n };\n const prevThenable = this.#currentThenable;\n switch (prevThenable.status) {\n case \"pending\":\n if (query.queryHash === prevQuery.queryHash) {\n finalizeThenableIfPossible(prevThenable);\n }\n break;\n case \"fulfilled\":\n if (isErrorWithoutData || nextResult.data !== prevThenable.value) {\n recreateThenable();\n }\n break;\n case \"rejected\":\n if (!isErrorWithoutData || nextResult.error !== prevThenable.reason) {\n recreateThenable();\n }\n break;\n }\n }\n return nextResult;\n }\n updateResult() {\n const prevResult = this.#currentResult;\n const nextResult = this.createResult(this.#currentQuery, this.options);\n this.#currentResultState = this.#currentQuery.state;\n this.#currentResultOptions = this.options;\n if (this.#currentResultState.data !== void 0) {\n this.#lastQueryWithDefinedData = this.#currentQuery;\n }\n if (shallowEqualObjects(nextResult, prevResult)) {\n return;\n }\n this.#currentResult = nextResult;\n const shouldNotifyListeners = () => {\n if (!prevResult) {\n return true;\n }\n const { notifyOnChangeProps } = this.options;\n const notifyOnChangePropsValue = typeof notifyOnChangeProps === \"function\" ? notifyOnChangeProps() : notifyOnChangeProps;\n if (notifyOnChangePropsValue === \"all\" || !notifyOnChangePropsValue && !this.#trackedProps.size) {\n return true;\n }\n const includedProps = new Set(\n notifyOnChangePropsValue ?? this.#trackedProps\n );\n if (this.options.throwOnError) {\n includedProps.add(\"error\");\n }\n return Object.keys(this.#currentResult).some((key) => {\n const typedKey = key;\n const changed = this.#currentResult[typedKey] !== prevResult[typedKey];\n return changed && includedProps.has(typedKey);\n });\n };\n this.#notify({ listeners: shouldNotifyListeners() });\n }\n #updateQuery() {\n const query = this.#client.getQueryCache().build(this.#client, this.options);\n if (query === this.#currentQuery) {\n return;\n }\n const prevQuery = this.#currentQuery;\n this.#currentQuery = query;\n this.#currentQueryInitialState = query.state;\n if (this.hasListeners()) {\n prevQuery?.removeObserver(this);\n query.addObserver(this);\n }\n }\n onQueryUpdate() {\n this.updateResult();\n if (this.hasListeners()) {\n this.#updateTimers();\n }\n }\n #notify(notifyOptions) {\n notifyManager.batch(() => {\n if (notifyOptions.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n }\n this.#client.getQueryCache().notify({\n query: this.#currentQuery,\n type: \"observerResultsUpdated\"\n });\n });\n }\n};\nfunction shouldLoadOnMount(query, options) {\n return resolveQueryBoolean(options.enabled, query) !== false && query.state.data === void 0 && !(query.state.status === \"error\" && resolveQueryBoolean(options.retryOnMount, query) === false);\n}\nfunction shouldFetchOnMount(query, options) {\n return shouldLoadOnMount(query, options) || query.state.data !== void 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\nfunction shouldFetchOn(query, options, field) {\n if (resolveQueryBoolean(options.enabled, query) !== false && resolveStaleTime(options.staleTime, query) !== \"static\") {\n const value = typeof field === \"function\" ? field(query) : field;\n return value === \"always\" || value !== false && isStale(query, options);\n }\n return false;\n}\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n return (query !== prevQuery || resolveQueryBoolean(prevOptions.enabled, query) === false) && (!options.suspense || query.state.status !== \"error\") && isStale(query, options);\n}\nfunction isStale(query, options) {\n return resolveQueryBoolean(options.enabled, query) !== false && query.isStaleByTime(resolveStaleTime(options.staleTime, query));\n}\nfunction shouldAssignObserverCurrentProperties(observer, optimisticResult) {\n if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n return true;\n }\n return false;\n}\nexport {\n QueryObserver\n};\n//# sourceMappingURL=queryObserver.js.map","\"use client\";\n\n// src/IsRestoringProvider.ts\nimport * as React from \"react\";\nvar IsRestoringContext = React.createContext(false);\nvar useIsRestoring = () => React.useContext(IsRestoringContext);\nvar IsRestoringProvider = IsRestoringContext.Provider;\nexport {\n IsRestoringProvider,\n useIsRestoring\n};\n//# sourceMappingURL=IsRestoringProvider.js.map","\"use client\";\n\n// src/QueryErrorResetBoundary.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createValue() {\n let isReset = false;\n return {\n clearReset: () => {\n isReset = false;\n },\n reset: () => {\n isReset = true;\n },\n isReset: () => {\n return isReset;\n }\n };\n}\nvar QueryErrorResetBoundaryContext = React.createContext(createValue());\nvar useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext);\nvar QueryErrorResetBoundary = ({\n children\n}) => {\n const [value] = React.useState(() => createValue());\n return /* @__PURE__ */ jsx(QueryErrorResetBoundaryContext.Provider, { value, children: typeof children === \"function\" ? children(value) : children });\n};\nexport {\n QueryErrorResetBoundary,\n useQueryErrorResetBoundary\n};\n//# sourceMappingURL=QueryErrorResetBoundary.js.map","\"use client\";\n\n// src/errorBoundaryUtils.ts\nimport * as React from \"react\";\nimport { shouldThrowError } from \"@tanstack/query-core\";\nvar ensurePreventErrorBoundaryRetry = (options, errorResetBoundary, query) => {\n const throwOnError = query?.state.error && typeof options.throwOnError === \"function\" ? shouldThrowError(options.throwOnError, [query.state.error, query]) : options.throwOnError;\n if (options.suspense || options.experimental_prefetchInRender || throwOnError) {\n if (!errorResetBoundary.isReset()) {\n options.retryOnMount = false;\n }\n }\n};\nvar useClearResetErrorBoundary = (errorResetBoundary) => {\n React.useEffect(() => {\n errorResetBoundary.clearReset();\n }, [errorResetBoundary]);\n};\nvar getHasError = ({\n result,\n errorResetBoundary,\n throwOnError,\n query,\n suspense\n}) => {\n return result.isError && !errorResetBoundary.isReset() && !result.isFetching && query && (suspense && result.data === void 0 || shouldThrowError(throwOnError, [result.error, query]));\n};\nexport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n};\n//# sourceMappingURL=errorBoundaryUtils.js.map","// src/suspense.ts\nvar defaultThrowOnError = (_error, query) => query.state.data === void 0;\nvar ensureSuspenseTimers = (defaultedOptions) => {\n if (defaultedOptions.suspense) {\n const MIN_SUSPENSE_TIME_MS = 1e3;\n const clamp = (value) => value === \"static\" ? value : Math.max(value ?? MIN_SUSPENSE_TIME_MS, MIN_SUSPENSE_TIME_MS);\n const originalStaleTime = defaultedOptions.staleTime;\n defaultedOptions.staleTime = typeof originalStaleTime === \"function\" ? (...args) => clamp(originalStaleTime(...args)) : clamp(originalStaleTime);\n if (typeof defaultedOptions.gcTime === \"number\") {\n defaultedOptions.gcTime = Math.max(\n defaultedOptions.gcTime,\n MIN_SUSPENSE_TIME_MS\n );\n }\n }\n};\nvar willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring;\nvar shouldSuspend = (defaultedOptions, result) => defaultedOptions?.suspense && result.isPending;\nvar fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => {\n errorResetBoundary.clearReset();\n});\nexport {\n defaultThrowOnError,\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend,\n willFetch\n};\n//# sourceMappingURL=suspense.js.map","\"use client\";\n\n// src/useBaseQuery.ts\nimport * as React from \"react\";\nimport { environmentManager, noop, notifyManager } from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n} from \"./errorBoundaryUtils.js\";\nimport { useIsRestoring } from \"./IsRestoringProvider.js\";\nimport {\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend,\n willFetch\n} from \"./suspense.js\";\nfunction useBaseQuery(options, Observer, queryClient) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof options !== \"object\" || Array.isArray(options)) {\n throw new Error(\n 'Bad argument type. Starting with v5, only the \"Object\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object'\n );\n }\n }\n const isRestoring = useIsRestoring();\n const errorResetBoundary = useQueryErrorResetBoundary();\n const client = useQueryClient(queryClient);\n const defaultedOptions = client.defaultQueryOptions(options);\n client.getDefaultOptions().queries?._experimental_beforeQuery?.(\n defaultedOptions\n );\n const query = client.getQueryCache().get(defaultedOptions.queryHash);\n if (process.env.NODE_ENV !== \"production\") {\n if (!defaultedOptions.queryFn) {\n console.error(\n `[${defaultedOptions.queryHash}]: No queryFn was passed as an option, and no default queryFn was found. The queryFn parameter is only optional when using a default queryFn. More info here: https://tanstack.com/query/latest/docs/framework/react/guides/default-query-function`\n );\n }\n }\n const subscribed = options.subscribed !== false;\n defaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : subscribed ? \"optimistic\" : void 0;\n ensureSuspenseTimers(defaultedOptions);\n ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary, query);\n useClearResetErrorBoundary(errorResetBoundary);\n const isNewCacheEntry = !client.getQueryCache().get(defaultedOptions.queryHash);\n const [observer] = React.useState(\n () => new Observer(\n client,\n defaultedOptions\n )\n );\n const result = observer.getOptimisticResult(defaultedOptions);\n const shouldSubscribe = !isRestoring && subscribed;\n React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => {\n const unsubscribe = shouldSubscribe ? observer.subscribe(notifyManager.batchCalls(onStoreChange)) : noop;\n observer.updateResult();\n return unsubscribe;\n },\n [observer, shouldSubscribe]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n React.useEffect(() => {\n observer.setOptions(defaultedOptions);\n }, [defaultedOptions, observer]);\n if (shouldSuspend(defaultedOptions, result)) {\n throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n }\n if (getHasError({\n result,\n errorResetBoundary,\n throwOnError: defaultedOptions.throwOnError,\n query,\n suspense: defaultedOptions.suspense\n })) {\n throw result.error;\n }\n ;\n client.getDefaultOptions().queries?._experimental_afterQuery?.(\n defaultedOptions,\n result\n );\n if (defaultedOptions.experimental_prefetchInRender && !environmentManager.isServer() && willFetch(result, isRestoring)) {\n const promise = isNewCacheEntry ? (\n // Fetch immediately on render in order to ensure `.promise` is resolved even if the component is unmounted\n fetchOptimistic(defaultedOptions, observer, errorResetBoundary)\n ) : (\n // subscribe to the \"cache promise\" so that we can finalize the currentThenable once data comes in\n query?.promise\n );\n promise?.catch(noop).finally(() => {\n observer.updateResult();\n });\n }\n return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\nexport {\n useBaseQuery\n};\n//# sourceMappingURL=useBaseQuery.js.map","\"use client\";\n\n// src/useQuery.ts\nimport { QueryObserver } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nfunction useQuery(options, queryClient) {\n return useBaseQuery(options, QueryObserver, queryClient);\n}\nexport {\n useQuery\n};\n//# sourceMappingURL=useQuery.js.map"],"names":["QueryObserver","Subscribable","client","options","#client","#selectError","#currentThenable","pendingThenable","#currentQuery","#currentQueryInitialState","#currentResult","#currentResultState","#currentResultOptions","#selectFn","#selectResult","#lastQueryWithDefinedData","#staleTimeoutId","#refetchIntervalId","#currentRefetchInterval","#trackedProps","shouldFetchOnMount","#executeFetch","#updateTimers","shouldFetchOn","#clearStaleTimeout","#clearRefetchInterval","prevOptions","prevQuery","resolveQueryBoolean","#updateQuery","shallowEqualObjects","mounted","shouldFetchOptionally","resolveStaleTime","#updateStaleTimeout","nextRefetchInterval","#computeRefetchInterval","#updateRefetchInterval","query","result","shouldAssignObserverCurrentProperties","onPropTracked","target","key","defaultedOptions","fetchOptions","promise","noop","staleTime","environmentManager","isValidTimeout","timeout","timeUntilStale","timeoutManager","nextInterval","focusManager","prevResult","prevResultState","prevResultOptions","queryInitialState","state","newState","isPlaceholderData","data","fetchOnMount","fetchOptionally","fetchState","error","errorUpdatedAt","status","skipSelect","placeholderData","replaceData","selectError","isFetching","isPending","isError","isLoading","hasData","nextResult","isStale","hasResultData","isErrorWithoutData","finalizeThenableIfPossible","thenable","recreateThenable","pending","prevThenable","shouldNotifyListeners","notifyOnChangeProps","notifyOnChangePropsValue","includedProps","typedKey","#notify","notifyOptions","notifyManager","listener","shouldLoadOnMount","field","value","observer","optimisticResult","IsRestoringContext","React.createContext","useIsRestoring","React.useContext","createValue","isReset","QueryErrorResetBoundaryContext","useQueryErrorResetBoundary","ensurePreventErrorBoundaryRetry","errorResetBoundary","throwOnError","shouldThrowError","useClearResetErrorBoundary","React.useEffect","getHasError","suspense","ensureSuspenseTimers","clamp","originalStaleTime","args","willFetch","isRestoring","shouldSuspend","fetchOptimistic","useBaseQuery","Observer","queryClient","useQueryClient","subscribed","isNewCacheEntry","React.useState","shouldSubscribe","React.useSyncExternalStore","React.useCallback","onStoreChange","unsubscribe","useQuery"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
|